<?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>155894</bug_id>
          
          <creation_ts>2016-03-25 11:13:41 -0700</creation_ts>
          <short_desc>bmalloc: Renamed LargeChunk =&gt; Chunk</short_desc>
          <delta_ts>2016-03-25 16:58:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>bmalloc</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=155900</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>ggaren</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1178027</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-25 11:13:41 -0700</bug_when>
    <thetext>bmalloc: Renamed LargeChunk =&gt; Chunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178030</commentid>
    <comment_count>1</comment_count>
      <attachid>274920</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-25 11:17:17 -0700</bug_when>
    <thetext>Created attachment 274920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178032</commentid>
    <comment_count>2</comment_count>
      <attachid>274920</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-03-25 11:18:55 -0700</bug_when>
    <thetext>Comment on attachment 274920
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178034</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-25 11:32:10 -0700</bug_when>
    <thetext>Committed r198679: &lt;http://trac.webkit.org/changeset/198679&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178077</commentid>
    <comment_count>4</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-03-25 13:30:57 -0700</bug_when>
    <thetext>Reverted r198679 for reason:

This change caused flaky LayoutTest crashes

Committed r198686: &lt;http://trac.webkit.org/changeset/198686&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178079</commentid>
    <comment_count>5</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-03-25 13:31:38 -0700</bug_when>
    <thetext>*** Bug 155900 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274920</attachid>
            <date>2016-03-25 11:17:17 -0700</date>
            <delta_ts>2016-03-25 11:18:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155894-20160325111719.patch</filename>
            <type>text/plain</type>
            <size>44738</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5ODY3NikKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDE2LTAzLTI1ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgYm1hbGxvYzogUmVuYW1lZCBM
YXJnZUNodW5rID0+IENodW5rCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTU4OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBIENodW5rIGNhbiBjb250YWluIGJvdGggc21hbGwgYW5kIGxhcmdlIG9iamVj
dHMgbm93LgorCisgICAgICAgICogYm1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJtYWxsb2MvQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkFsbG9j
YXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAqIGJtYWxsb2MvQm91bmRhcnlUYWcuaDoKKyAgICAg
ICAgKGJtYWxsb2M6OkJvdW5kYXJ5VGFnOjppc0ZyZWUpOgorICAgICAgICAqIGJtYWxsb2MvQ2h1
bmsuaDogQ29waWVkIGZyb20gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZUNodW5rLmguCisg
ICAgICAgIChibWFsbG9jOjpDaHVuazo6cGFnZXMpOgorICAgICAgICAoYm1hbGxvYzo6Q2h1bms6
OmJlZ2luKToKKyAgICAgICAgKGJtYWxsb2M6OkNodW5rOjplbmQpOgorICAgICAgICAoYm1hbGxv
Yzo6Q2h1bms6OkNodW5rKToKKyAgICAgICAgKGJtYWxsb2M6OkNodW5rOjpnZXQpOgorICAgICAg
ICAoYm1hbGxvYzo6Q2h1bms6OmJlZ2luVGFnKToKKyAgICAgICAgKGJtYWxsb2M6OkNodW5rOjpl
bmRUYWcpOgorICAgICAgICAoYm1hbGxvYzo6Q2h1bms6Om9mZnNldCk6CisgICAgICAgIChibWFs
bG9jOjpDaHVuazo6b2JqZWN0KToKKyAgICAgICAgKGJtYWxsb2M6OkNodW5rOjpwYWdlKToKKyAg
ICAgICAgKGJtYWxsb2M6OkNodW5rOjpsaW5lKToKKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsTGlu
ZTo6YmVnaW4pOgorICAgICAgICAoYm1hbGxvYzo6U21hbGxQYWdlOjpiZWdpbik6CisgICAgICAg
IChibWFsbG9jOjpTbWFsbFBhZ2U6OmVuZCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3Q6Ok9i
amVjdCk6CisgICAgICAgIChibWFsbG9jOjpPYmplY3Q6OmJlZ2luKToKKyAgICAgICAgKGJtYWxs
b2M6OkxhcmdlQ2h1bms6OnBhZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6Okxhcmdl
Q2h1bms6OmJlZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OkxhcmdlQ2h1bms6OmVu
ZCk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpMYXJnZUNodW5rOjpMYXJnZUNodW5rKTog
RGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OkxhcmdlQ2h1bms6OmdldCk6IERlbGV0ZWQuCisg
ICAgICAgIChibWFsbG9jOjpMYXJnZUNodW5rOjpiZWdpblRhZyk6IERlbGV0ZWQuCisgICAgICAg
IChibWFsbG9jOjpMYXJnZUNodW5rOjplbmRUYWcpOiBEZWxldGVkLgorICAgICAgICAoYm1hbGxv
Yzo6TGFyZ2VDaHVuazo6b2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6Okxhcmdl
Q2h1bms6Om9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChibWFsbG9jOjpMYXJnZUNodW5rOjpw
YWdlKTogRGVsZXRlZC4KKyAgICAgICAgKGJtYWxsb2M6OkxhcmdlQ2h1bms6OmxpbmUpOiBEZWxl
dGVkLgorICAgICAgICAqIGJtYWxsb2MvRGVhbGxvY2F0b3IuY3BwOgorICAgICAgICAqIGJtYWxs
b2MvRnJlZUxpc3QuY3BwOgorICAgICAgICAqIGJtYWxsb2MvSGVhcC5jcHA6CisgICAgICAgIChi
bWFsbG9jOjpIZWFwOjphbGxvY2F0ZUxhcmdlKToKKyAgICAgICAgKiBibWFsbG9jL0xhcmdlQ2h1
bmsuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBibWFsbG9jL0xhcmdlT2JqZWN0Lmg6CisgICAgICAg
IChibWFsbG9jOjpMYXJnZU9iamVjdDo6TGFyZ2VPYmplY3QpOgorICAgICAgICAoYm1hbGxvYzo6
TGFyZ2VPYmplY3Q6Om1lcmdlKToKKyAgICAgICAgKGJtYWxsb2M6OkxhcmdlT2JqZWN0OjpzcGxp
dCk6CisgICAgICAgICogYm1hbGxvYy9PYmplY3QuaDoKKyAgICAgICAgKGJtYWxsb2M6Ok9iamVj
dDo6Y2h1bmspOgorICAgICAgICAqIGJtYWxsb2MvT2JqZWN0VHlwZS5jcHA6CisgICAgICAgICog
Ym1hbGxvYy9TaXplcy5oOgorICAgICAgICAqIGJtYWxsb2MvU21hbGxBbGxvY2F0b3IuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBibWFsbG9jL1ZNSGVhcC5jcHA6CisgICAgICAgIChibWFsbG9jOjpW
TUhlYXA6OlZNSGVhcCk6CisgICAgICAgIChibWFsbG9jOjpWTUhlYXA6OmFsbG9jYXRlQ2h1bmsp
OgorICAgICAgICAoYm1hbGxvYzo6Vk1IZWFwOjphbGxvY2F0ZUxhcmdlQ2h1bmspOiBEZWxldGVk
LgorICAgICAgICAqIGJtYWxsb2MvVk1IZWFwLmg6CisgICAgICAgIChibWFsbG9jOjpWTUhlYXA6
OmFsbG9jYXRlTGFyZ2VPYmplY3QpOgorICAgICAgICAoYm1hbGxvYzo6Vk1IZWFwOjpkZWFsbG9j
YXRlTGFyZ2VPYmplY3QpOgorICAgICAgICAqIGJtYWxsb2MvWm9uZS5jcHA6CisgICAgICAgIChi
bWFsbG9jOjplbnVtZXJhdG9yKToKKyAgICAgICAgKiBibWFsbG9jL1pvbmUuaDoKKyAgICAgICAg
KGJtYWxsb2M6OlpvbmU6OmNodW5rcyk6CisgICAgICAgIChibWFsbG9jOjpab25lOjphZGRDaHVu
ayk6CisgICAgICAgIChibWFsbG9jOjpab25lOjpsYXJnZUNodW5rcyk6IERlbGV0ZWQuCisgICAg
ICAgIChibWFsbG9jOjpab25lOjphZGRMYXJnZUNodW5rKTogRGVsZXRlZC4KKwogMjAxNi0wMy0y
NCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIGJtYWxsb2M6
IHNtYWxsIGFuZCBsYXJnZSBvYmplY3RzIHNob3VsZCBzaGFyZSBtZW1vcnkKSW5kZXg6IFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDE5ODY3NSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjUsMTMgKzI1LDEzIEBACiAJCTE0NEMwN0Y0MUM3
QjcwMjYwMDUxQkI2QSAvKiBYTGFyZ2VNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ0QzA3RjIxQzdCNzAyNjAwNTFCQjZBIC8qIFhMYXJnZU1h
cC5jcHAgKi87IH07CiAJCTE0NEMwN0Y1MUM3QjcwMjYwMDUxQkI2QSAvKiBYTGFyZ2VNYXAuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0NEMwN0YzMUM3
QjcwMjYwMDUxQkI2QSAvKiBYTGFyZ2VNYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDYwNDFFNzFDN0ZGMkVGMDBFOUY5NEUgLyogU29ydGVk
VmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
NDYwNDFFNjFDN0ZGMkVGMDBFOUY5NEUgLyogU29ydGVkVmVjdG9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMTQ3REM2RTMxQ0E1QjcwQjAwNzI0
RThEIC8qIENodW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNDdEQzZFMjFDQTVCNzBCMDA3MjRFOEQgLyogQ2h1bmsuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNDg5NUQ5MTFBM0EzMTlDMDAwNjIz
NUQgLyogRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTQ4OTVEOEYxQTNBMzE5QzAwMDYyMzVEIC8qIEVudmlyb25tZW50LmNwcCAq
LzsgfTsKIAkJMTQ4OTVEOTIxQTNBMzE5QzAwMDYyMzVEIC8qIEVudmlyb25tZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDg5NUQ5MDFBM0EzMTlD
MDAwNjIzNUQgLyogRW52aXJvbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkxNEM2MjE2RjFBOUE5QTYyMDBFNzIyOTMgLyogTGFyZ2VPYmpl
Y3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0QzYy
MTZFMUE5QTlBNjIwMEU3MjI5MyAvKiBMYXJnZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0QzkxOUM5MThGQ0M1OUYwMDI4REI0MyAv
KiBCUGxhdGZvcm0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0QzkxOUM4MThGQ0M1OUYwMDI4REI0MyAvKiBCUGxhdGZvcm0uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNENDMzk0QzE4RUE4ODU4MDA0
QUZFMzQgLyogbGliYm1hbGxvYy5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTRGMjcxQkUxOEVBMzk2MzAwOEMxNTJGIC8qIGxpYmJtYWxsb2MuYSAq
LzsgfTsKIAkJMTREMkNEOUIxQUExMkNGQjAwNzcwNDQwIC8qIFZNU3RhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RDJDRDlBMUFBMTJDRkIwMDc3
MDQ0MCAvKiBWTVN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMTRERDc4OEMxOEY0OENBRTAwOTUwNzAyIC8qIExhcmdlQ2h1bmsuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0N0FBQTg4MThDRDE3
Q0UwMDIyMDFFNCAvKiBMYXJnZUNodW5rLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRERDc4OEQxOEY0OENDNjAwOTUwNzAyIC8qIEJlZ2luVGFn
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDE3RjY0
NTE4QjU0QTcwMDA3NkZBM0YgLyogQmVnaW5UYWcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNERENzg4RTE4RjQ4Q0NEMDA5NTA3MDIgLyogQm91
bmRhcnlUYWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0ODU2NTVFMThBNDNBRjkwMEVENjk0MiAvKiBCb3VuZGFyeVRhZy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0REQ3ODkwMThGNDhDRUIwMDk1
MDcwMiAvKiBTaXplcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTQ1RjY4NzQxNzlERjg0MTAwRDY1NTk4IC8qIFNpemVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExOSw3ICsxMTksNyBAQAogCQkx
NDZCRUUyMTE4Qzg0NUFFMDAwMkQ1QTIgLyogU2VncmVnYXRlZEZyZWVMaXN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNlZ3JlZ2F0ZWRGcmVlTGlzdC5jcHA7IHBh
dGggPSBibWFsbG9jL1NlZ3JlZ2F0ZWRGcmVlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0NzlFMjEyMTdBMUEyNTUwMDZENEU5RCAvKiBWZWN0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IFZlY3Rvci5oOyBwYXRoID0g
Ym1hbGxvYy9WZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNp
ZmljYXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CiAJCTE0NzlFMjE0MTdB
MUE2M0UwMDZENEU5RCAvKiBWTUFsbG9jYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bGluZUVuZGluZyA9IDA7IG5hbWUgPSBWTUFsbG9jYXRlLmg7IHBhdGggPSBibWFsbG9jL1ZNQWxs
b2NhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmljYXRpb25J
ZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07Ci0JCTE0N0FBQTg4MThDRDE3Q0UwMDIy
MDFFNCAvKiBMYXJnZUNodW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExh
cmdlQ2h1bmsuaDsgcGF0aCA9IGJtYWxsb2MvTGFyZ2VDaHVuay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxNDdEQzZFMjFDQTVCNzBCMDA3MjRFOEQgLyogQ2h1bmsuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ2h1bmsuaDsgcGF0aCA9IGJtYWxsb2MvQ2h1bmsu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ4NTY1NUUxOEE0M0FGOTAwRUQ2OTQy
IC8qIEJvdW5kYXJ5VGFnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJvdW5k
YXJ5VGFnLmg7IHBhdGggPSBibWFsbG9jL0JvdW5kYXJ5VGFnLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0ODU2NTYwMThBNDNEQkEwMEVENjk0MiAvKiBPYmplY3RUeXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE9iamVjdFR5cGUuaDsgcGF0aCA9IGJtYWxs
b2MvT2JqZWN0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDg5NUQ4RjFB
M0EzMTlDMDAwNjIzNUQgLyogRW52aXJvbm1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gRW52aXJvbm1lbnQuY3BwOyBwYXRoID0gYm1hbGxvYy9FbnZpcm9ubWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTgsNyArMjE4LDYgQEAKIAkJ
CQkxNDE3RjY0NjE4QjU0QTcwMDA3NkZBM0YgLyogRW5kVGFnLmggKi8sCiAJCQkJMTQzRUY5QUQx
QTlGQUJGNjAwNEY1Qzc3IC8qIEZyZWVMaXN0LmNwcCAqLywKIAkJCQkxNDNFRjlBRTFBOUZBQkY2
MDA0RjVDNzcgLyogRnJlZUxpc3QuaCAqLywKLQkJCQkxNDdBQUE4ODE4Q0QxN0NFMDAyMjAxRTQg
LyogTGFyZ2VDaHVuay5oICovLAogCQkJCTE0QzYyMTZFMUE5QTlBNjIwMEU3MjI5MyAvKiBMYXJn
ZU9iamVjdC5oICovLAogCQkJCTE0NkJFRTIxMThDODQ1QUUwMDAyRDVBMiAvKiBTZWdyZWdhdGVk
RnJlZUxpc3QuY3BwICovLAogCQkJCTE0NkJFRTFFMThDODQxQzUwMDAyRDVBMiAvKiBTZWdyZWdh
dGVkRnJlZUxpc3QuaCAqLywKQEAgLTI1Niw2ICsyNTUsNyBAQAogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxNDBGQTAwMjE5Q0U0MjlDMDBGRkQzQzggLyogQnVtcFJh
bmdlLmggKi8sCisJCQkJMTQ3REM2RTIxQ0E1QjcwQjAwNzI0RThEIC8qIENodW5rLmggKi8sCiAJ
CQkJMTQ4OTVEOEYxQTNBMzE5QzAwMDYyMzVEIC8qIEVudmlyb25tZW50LmNwcCAqLywKIAkJCQkx
NDg5NUQ5MDFBM0EzMTlDMDAwNjIzNUQgLyogRW52aXJvbm1lbnQuaCAqLywKIAkJCQkxNERBMzIw
RTE4ODc1RDlGMDA3MjY5RTAgLyogSGVhcC5jcHAgKi8sCkBAIC0zMTMsNyArMzEzLDYgQEAKIAkJ
CWZpbGVzID0gKAogCQkJCTE0REQ3OENGMThGNDhENzUwMDk1MDcwMiAvKiBWZWN0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTE0QzkxOUM5MThGQ0M1OUYwMDI4REI0MyAvKiBCUGxhdGZvcm0uaCBp
biBIZWFkZXJzICovLAotCQkJCTE0REQ3ODhDMThGNDhDQUUwMDk1MDcwMiAvKiBMYXJnZUNodW5r
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzg5MjE4RjQ4Q0ZDMDA5NTA3MDIgLyogRW5kVGFn
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDQwQUZDQjFBOTUyNjExMDA4MzdGQUEgLyogWm9uZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwRkEwMDUxOUNFNEI2ODAwRkZEM0M4IC8qIExpbmVNZXRh
ZGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNDgsNiArMzQ3LDcgQEAKIAkJCQkxNERENzhDODE4
RjQ4RDc1MDA5NTA3MDIgLyogRml4ZWRWZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NEMw
N0Y1MUM3QjcwMjYwMDUxQkI2QSAvKiBYTGFyZ2VNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
RDJDRDlCMUFBMTJDRkIwMDc3MDQ0MCAvKiBWTVN0YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQkx
NDdEQzZFMzFDQTVCNzBCMDA3MjRFOEQgLyogQ2h1bmsuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
REQ3OEJDMThGNDhENkIwMDk1MDcwMiAvKiBTbWFsbExpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTE0REQ3ODk4MThGNDhENEEwMDk1MDcwMiAvKiBBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0REQ3OENCMThGNDhENzUwMDk1MDcwMiAvKiBQZXJQcm9jZXNzLmggaW4gSGVhZGVycyAq
LywKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxsb2NhdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5jcHAJKHJldmlzaW9uIDE5ODY3
NSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjUsOSArMjUsOSBAQAogCiAjaW5jbHVkZSAiQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAi
QkFzc2VydC5oIgorI2luY2x1ZGUgIkNodW5rLmgiCiAjaW5jbHVkZSAiRGVhbGxvY2F0b3IuaCIK
ICNpbmNsdWRlICJIZWFwLmgiCi0jaW5jbHVkZSAiTGFyZ2VDaHVuay5oIgogI2luY2x1ZGUgIkxh
cmdlT2JqZWN0LmgiCiAjaW5jbHVkZSAiUGVyUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlNpemVzLmgi
CkBAIC05MSw3ICs5MSw3IEBAIHZvaWQqIEFsbG9jYXRvcjo6YWxsb2NhdGUoc2l6ZV90IGFsaWdu
bWUKICAgICAgICAgc2l6ZSA9IHN0ZDo6bWF4KGxhcmdlTWluLCByb3VuZFVwVG9NdWx0aXBsZU9m
PGxhcmdlQWxpZ25tZW50PihzaXplKSk7CiAgICAgICAgIGFsaWdubWVudCA9IHJvdW5kVXBUb011
bHRpcGxlT2Y8bGFyZ2VBbGlnbm1lbnQ+KGFsaWdubWVudCk7CiAgICAgICAgIHNpemVfdCB1bmFs
aWduZWRTaXplID0gbGFyZ2VNaW4gKyBhbGlnbm1lbnQgLSBsYXJnZUFsaWdubWVudCArIHNpemU7
Ci0gICAgICAgIGlmICh1bmFsaWduZWRTaXplIDw9IGxhcmdlTWF4ICYmIGFsaWdubWVudCA8PSBs
YXJnZUNodW5rU2l6ZSAvIDIpIHsKKyAgICAgICAgaWYgKHVuYWxpZ25lZFNpemUgPD0gbGFyZ2VN
YXggJiYgYWxpZ25tZW50IDw9IGNodW5rU2l6ZSAvIDIpIHsKICAgICAgICAgICAgIHN0ZDo6bG9j
a19ndWFyZDxTdGF0aWNNdXRleD4gbG9jayhQZXJQcm9jZXNzPEhlYXA+OjptdXRleCgpKTsKICAg
ICAgICAgICAgIG1fZGVhbGxvY2F0b3IucHJvY2Vzc09iamVjdExvZyhsb2NrKTsKICAgICAgICAg
ICAgIHJldHVybiBQZXJQcm9jZXNzPEhlYXA+OjpnZXRGYXN0Q2FzZSgpLT5hbGxvY2F0ZUxhcmdl
KGxvY2ssIGFsaWdubWVudCwgc2l6ZSwgdW5hbGlnbmVkU2l6ZSk7CkluZGV4OiBTb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0JvdW5kYXJ5VGFnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Cb3VuZGFyeVRhZy5oCShyZXZpc2lvbiAxOTg2NzQpCisrKyBTb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0JvdW5kYXJ5VGFnLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEyICszNiwxMiBA
QCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIGNsYXNzIEJlZ2luVGFnOwogY2xhc3MgRW5kVGFnOwot
Y2xhc3MgTGFyZ2VDaHVuazsKK2NsYXNzIENodW5rOwogY2xhc3MgUmFuZ2U7CiAKIGNsYXNzIEJv
dW5kYXJ5VGFnIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmFuZ2UgaW5pdChMYXJnZUNodW5rKik7
CisgICAgc3RhdGljIFJhbmdlIGluaXQoQ2h1bmsqKTsKICAgICBzdGF0aWMgdW5zaWduZWQgY29t
cGFjdEJlZ2luKHZvaWQqKTsKIAogICAgIGJvb2wgaXNGcmVlKCkgeyByZXR1cm4gbV9pc0ZyZWU7
IH0KSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQ2h1bmsuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NodW5rLmgJKHJldmlzaW9uIDE5ODY3NSkJKGZyb20gU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZUNodW5rLmg6MTk4Njc1KQorKysgU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9DaHVuay5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjM5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTGFyZ2VD
aHVua19oCisjZGVmaW5lIExhcmdlQ2h1bmtfaAorCisjaW5jbHVkZSAiQmVnaW5UYWcuaCIKKyNp
bmNsdWRlICJFbmRUYWcuaCIKKyNpbmNsdWRlICJPYmplY3QuaCIKKyNpbmNsdWRlICJPYmplY3RU
eXBlLmgiCisjaW5jbHVkZSAiU2l6ZXMuaCIKKyNpbmNsdWRlICJTbWFsbExpbmUuaCIKKyNpbmNs
dWRlICJTbWFsbFBhZ2UuaCIKKyNpbmNsdWRlICJWTUFsbG9jYXRlLmgiCisjaW5jbHVkZSA8YXJy
YXk+CisKK25hbWVzcGFjZSBibWFsbG9jIHsKKworY2xhc3MgTGFyZ2VDaHVuayB7CitwdWJsaWM6
CisgICAgc3RhdGljIExhcmdlQ2h1bmsqIGdldCh2b2lkKik7CisKKyAgICBzdGF0aWMgQmVnaW5U
YWcqIGJlZ2luVGFnKHZvaWQqKTsKKyAgICBzdGF0aWMgRW5kVGFnKiBlbmRUYWcodm9pZCosIHNp
emVfdCk7CisKKyAgICBMYXJnZUNodW5rKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKTsK
KworICAgIHNpemVfdCBvZmZzZXQodm9pZCopOworCisgICAgdm9pZCogb2JqZWN0KHNpemVfdCBv
ZmZzZXQpOworICAgIFNtYWxsUGFnZSogcGFnZShzaXplX3Qgb2Zmc2V0KTsKKyAgICBTbWFsbExp
bmUqIGxpbmUoc2l6ZV90IG9mZnNldCk7CisKKyAgICBTbWFsbFBhZ2UqIHBhZ2VCZWdpbigpIHsg
cmV0dXJuIE9iamVjdChtX21lbW9yeSkucGFnZSgpOyB9CisgICAgU21hbGxQYWdlKiBwYWdlRW5k
KCkgeyByZXR1cm4gbV9wYWdlcy5lbmQoKTsgfQorICAgIAorICAgIFNtYWxsTGluZSogbGluZXMo
KSB7IHJldHVybiBtX2xpbmVzLmJlZ2luKCk7IH0KKyAgICBTbWFsbFBhZ2UqIHBhZ2VzKCkgeyBy
ZXR1cm4gbV9wYWdlcy5iZWdpbigpOyB9CisKKyAgICBjaGFyKiBiZWdpbigpIHsgcmV0dXJuIG1f
bWVtb3J5OyB9CisgICAgY2hhciogZW5kKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4odGhpcykgKyBsYXJnZUNodW5rU2l6ZTsgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgYm91bmRhcnlUYWdDb3VudCA9IGxhcmdlQ2h1bmtTaXplIC8gbGFyZ2VNaW47Cisg
ICAgc3RhdGljX2Fzc2VydChib3VuZGFyeVRhZ0NvdW50ID4gMiwgIkxhcmdlQ2h1bmsgbXVzdCBo
YXZlIHNwYWNlIGZvciB0d28gc2VudGluZWwgYm91bmRhcnkgdGFncyIpOworCisgICAgLy8gT3Vy
IG1ldGFkYXRhIGxheW91dCBpbmNsdWRlcyBhIGxlZnQgYW5kIHJpZ2h0IGVkZ2Ugc2VudGluZWwu
CisgICAgLy8gTWV0YWRhdGEgdGFrZXMgdXAgZW5vdWdoIHNwYWNlIHRvIGxlYXZlIGF0IGxlYXN0
IHRoZSBmaXJzdCB0d28KKyAgICAvLyBib3VuZGFyeSB0YWcgc2xvdHMgdW51c2VkLgorICAgIC8v
CisgICAgLy8gICAgICBTbywgYm91bmRhcnkgdGFnIHNwYWNlIGxvb2tzIGxpa2UgdGhpczoKKyAg
ICAvLworICAgIC8vICAgICAgICAgIFtPT1hYWFhYLi4uXQorICAgIC8vCisgICAgLy8gICAgICBB
bmQgQm91bmRhcnlUYWc6OmdldCBzdWJ0cmFjdHMgb25lLCBwcm9kdWNpbmc6CisgICAgLy8KKyAg
ICAvLyAgICAgICAgICBbT1hYWFhYLi4uT10uCisgICAgLy8KKyAgICAvLyBXZSB1c2UgdGhlIFgn
cyBmb3IgYm91bmRhcnkgdGFncyBhbmQgdGhlIE8ncyBmb3IgZWRnZSBzZW50aW5lbHMuCisKKyAg
ICBzdGQ6OmFycmF5PFNtYWxsTGluZSwgbGFyZ2VDaHVua1NpemUgLyBzbWFsbExpbmVTaXplPiBt
X2xpbmVzOworICAgIHN0ZDo6YXJyYXk8U21hbGxQYWdlLCBsYXJnZUNodW5rU2l6ZSAvIHZtUGFn
ZVNpemU+IG1fcGFnZXM7CisgICAgc3RkOjphcnJheTxCb3VuZGFyeVRhZywgYm91bmRhcnlUYWdD
b3VudD4gbV9ib3VuZGFyeVRhZ3M7CisgICAgY2hhciBtX21lbW9yeVtdIF9fYXR0cmlidXRlX18o
KGFsaWduZWQoMiAqIHNtYWxsTWF4ICsgMCkpKTsKK307CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9m
KExhcmdlQ2h1bmspICsgbGFyZ2VNYXggPD0gbGFyZ2VDaHVua1NpemUsICJsYXJnZU1heCBpcyB0
b28gYmlnIik7CitzdGF0aWNfYXNzZXJ0KAorICAgIHNpemVvZihMYXJnZUNodW5rKSAlIHZtUGFn
ZVNpemUgKyAyICogc21hbGxNYXggPD0gdm1QYWdlU2l6ZSwKKyAgICAidGhlIGZpcnN0IHBhZ2Ug
b2Ygb2JqZWN0IG1lbW9yeSBpbiBhIHNtYWxsIGNodW5rIG11c3QgYmUgYWJsZSB0byBhbGxvY2F0
ZSBzbWFsbE1heCIpOworCitpbmxpbmUgTGFyZ2VDaHVuazo6TGFyZ2VDaHVuayhzdGQ6OmxvY2tf
Z3VhcmQ8U3RhdGljTXV0ZXg+JiBsb2NrKQoreworICAgIFJhbmdlIHJhbmdlKGJlZ2luKCksIGVu
ZCgpIC0gYmVnaW4oKSk7CisgICAgQkFTU0VSVChyYW5nZS5zaXplKCkgPD0gbGFyZ2VPYmplY3RN
YXgpOworCisgICAgQmVnaW5UYWcqIGJlZ2luVGFnID0gTGFyZ2VDaHVuazo6YmVnaW5UYWcocmFu
Z2UuYmVnaW4oKSk7CisgICAgYmVnaW5UYWctPnNldFJhbmdlKHJhbmdlKTsKKyAgICBiZWdpblRh
Zy0+c2V0RnJlZSh0cnVlKTsKKyAgICBiZWdpblRhZy0+c2V0Vk1TdGF0ZShWTVN0YXRlOjpWaXJ0
dWFsKTsKKworICAgIEVuZFRhZyogZW5kVGFnID0gTGFyZ2VDaHVuazo6ZW5kVGFnKHJhbmdlLmJl
Z2luKCksIHJhbmdlLnNpemUoKSk7CisgICAgZW5kVGFnLT5pbml0KGJlZ2luVGFnKTsKKworICAg
IC8vIE1hcmsgdGhlIGxlZnQgYW5kIHJpZ2h0IGVkZ2VzIG9mIG91ciByYW5nZSBhcyBhbGxvY2F0
ZWQuIFRoaXMgbmF0dXJhbGx5CisgICAgLy8gcHJldmVudHMgbWVyZ2luZyBsb2dpYyBmcm9tIG92
ZXJmbG93aW5nIGxlZnQgKGludG8gbWV0YWRhdGEpIG9yIHJpZ2h0CisgICAgLy8gKGJleW9uZCBv
dXIgY2h1bmspLCB3aXRob3V0IHJlcXVpcmluZyBzcGVjaWFsLWNhc2UgY2hlY2tzLgorCisgICAg
RW5kVGFnKiBsZWZ0U2VudGluZWwgPSBiZWdpblRhZy0+cHJldigpOworICAgIEJBU1NFUlQobGVm
dFNlbnRpbmVsID49IG1fYm91bmRhcnlUYWdzLmJlZ2luKCkpOworICAgIEJBU1NFUlQobGVmdFNl
bnRpbmVsIDwgbV9ib3VuZGFyeVRhZ3MuZW5kKCkpOworICAgIGxlZnRTZW50aW5lbC0+aW5pdFNl
bnRpbmVsKCk7CisKKyAgICBCZWdpblRhZyogcmlnaHRTZW50aW5lbCA9IGVuZFRhZy0+bmV4dCgp
OworICAgIEJBU1NFUlQocmlnaHRTZW50aW5lbCA+PSBtX2JvdW5kYXJ5VGFncy5iZWdpbigpKTsK
KyAgICBCQVNTRVJUKHJpZ2h0U2VudGluZWwgPCBtX2JvdW5kYXJ5VGFncy5lbmQoKSk7CisgICAg
cmlnaHRTZW50aW5lbC0+aW5pdFNlbnRpbmVsKCk7CisKKyAgICAvLyBUcmFjayB0aGUgbWVtb3J5
IHVzZWQgZm9yIG1ldGFkYXRhIGJ5IGFsbG9jYXRpbmcgaW1hZ2luYXJ5IG9iamVjdHMuCisgICAg
Zm9yIChjaGFyKiBpdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHRoaXMpOyBpdCA8IG1fbWVt
b3J5OyBpdCArPSBzbWFsbExpbmVTaXplKSB7CisgICAgICAgIE9iamVjdCBvYmplY3QoaXQpOwor
ICAgICAgICBvYmplY3QubGluZSgpLT5yZWYobG9jayk7CisgICAgICAgIG9iamVjdC5wYWdlKCkt
PnJlZihsb2NrKTsKKyAgICB9Cit9CisKK2lubGluZSBMYXJnZUNodW5rKiBMYXJnZUNodW5rOjpn
ZXQodm9pZCogb2JqZWN0KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxMYXJnZUNodW5rKj4o
bWFzayhvYmplY3QsIGxhcmdlQ2h1bmtNYXNrKSk7Cit9CisKK2lubGluZSBCZWdpblRhZyogTGFy
Z2VDaHVuazo6YmVnaW5UYWcodm9pZCogb2JqZWN0KQoreworICAgIExhcmdlQ2h1bmsqIGNodW5r
ID0gZ2V0KG9iamVjdCk7CisgICAgc2l6ZV90IGJvdW5kYXJ5VGFnTnVtYmVyID0gKHN0YXRpY19j
YXN0PGNoYXIqPihvYmplY3QpIC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY2h1bmspKSAvIGxh
cmdlTWluIC0gMTsgLy8gLSAxIHRvIG9mZnNldCBmcm9tIHRoZSByaWdodCBzZW50aW5lbC4KKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8QmVnaW5UYWcqPigmY2h1bmstPm1fYm91bmRhcnlUYWdzW2Jv
dW5kYXJ5VGFnTnVtYmVyXSk7Cit9CisKK2lubGluZSBFbmRUYWcqIExhcmdlQ2h1bms6OmVuZFRh
Zyh2b2lkKiBvYmplY3QsIHNpemVfdCBzaXplKQoreworICAgIExhcmdlQ2h1bmsqIGNodW5rID0g
Z2V0KG9iamVjdCk7CisgICAgY2hhciogZW5kID0gc3RhdGljX2Nhc3Q8Y2hhcio+KG9iamVjdCkg
KyBzaXplOworCisgICAgLy8gV2Ugc3VidHJhY3QgbGFyZ2VNaW4gYmVmb3JlIGNvbXB1dGluZyB0
aGUgZW5kIHBvaW50ZXIncyBib3VuZGFyeSB0YWcuIEFuCisgICAgLy8gb2JqZWN0J3Mgc2l6ZSBu
ZWVkIG5vdCBiZSBhbiBldmVuIG11bHRpcGxlIG9mIGxhcmdlTWluLiBTdWJ0cmFjdGluZworICAg
IC8vIGxhcmdlTWluIHJvdW5kcyBkb3duIHRvIHRoZSBsYXN0IGJvdW5kYXJ5IHRhZyBwcmlvciB0
byBvdXIgbmVpZ2hib3IuCisKKyAgICBzaXplX3QgYm91bmRhcnlUYWdOdW1iZXIgPSAoZW5kIC0g
bGFyZ2VNaW4gLSByZWludGVycHJldF9jYXN0PGNoYXIqPihjaHVuaykpIC8gbGFyZ2VNaW4gLSAx
OyAvLyAtIDEgdG8gb2Zmc2V0IGZyb20gdGhlIHJpZ2h0IHNlbnRpbmVsLgorICAgIHJldHVybiBz
dGF0aWNfY2FzdDxFbmRUYWcqPigmY2h1bmstPm1fYm91bmRhcnlUYWdzW2JvdW5kYXJ5VGFnTnVt
YmVyXSk7Cit9CisKK2lubGluZSBzaXplX3QgTGFyZ2VDaHVuazo6b2Zmc2V0KHZvaWQqIG9iamVj
dCkKK3sKKyAgICBCQVNTRVJUKG9iamVjdCA+PSB0aGlzKTsKKyAgICBCQVNTRVJUKG9iamVjdCA8
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHRoaXMpICsgbGFyZ2VDaHVua1NpemUpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjaGFyKj4ob2JqZWN0KSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KHRoaXMpOworfQorCitpbmxpbmUgdm9pZCogTGFyZ2VDaHVuazo6b2JqZWN0KHNpemVfdCBvZmZz
ZXQpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0
OworfQorCitpbmxpbmUgU21hbGxQYWdlKiBMYXJnZUNodW5rOjpwYWdlKHNpemVfdCBvZmZzZXQp
Cit7CisgICAgc2l6ZV90IHBhZ2VOdW1iZXIgPSBvZmZzZXQgLyB2bVBhZ2VTaXplOworICAgIHJl
dHVybiAmbV9wYWdlc1twYWdlTnVtYmVyXTsKK30KKworaW5saW5lIFNtYWxsTGluZSogTGFyZ2VD
aHVuazo6bGluZShzaXplX3Qgb2Zmc2V0KQoreworICAgIHNpemVfdCBsaW5lTnVtYmVyID0gb2Zm
c2V0IC8gc21hbGxMaW5lU2l6ZTsKKyAgICByZXR1cm4gJm1fbGluZXNbbGluZU51bWJlcl07Cit9
CisKK2lubGluZSBjaGFyKiBTbWFsbExpbmU6OmJlZ2luKCkKK3sKKyAgICBMYXJnZUNodW5rKiBj
aHVuayA9IExhcmdlQ2h1bms6OmdldCh0aGlzKTsKKyAgICBzaXplX3QgbGluZU51bWJlciA9IHRo
aXMgLSBjaHVuay0+bGluZXMoKTsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbGluZU51bWJlciAqIHNt
YWxsTGluZVNpemU7CisgICAgcmV0dXJuICZyZWludGVycHJldF9jYXN0PGNoYXIqPihjaHVuaylb
b2Zmc2V0XTsKK30KKworaW5saW5lIGNoYXIqIFNtYWxsTGluZTo6ZW5kKCkKK3sKKyAgICByZXR1
cm4gYmVnaW4oKSArIHNtYWxsTGluZVNpemU7Cit9CisKK2lubGluZSBTbWFsbExpbmUqIFNtYWxs
UGFnZTo6YmVnaW4oKQoreworICAgIExhcmdlQ2h1bmsqIGNodW5rID0gTGFyZ2VDaHVuazo6Z2V0
KHRoaXMpOworICAgIHNpemVfdCBwYWdlTnVtYmVyID0gdGhpcyAtIGNodW5rLT5wYWdlcygpOwor
ICAgIHNpemVfdCBsaW5lTnVtYmVyID0gcGFnZU51bWJlciAqIHNtYWxsTGluZUNvdW50OworICAg
IHJldHVybiAmY2h1bmstPmxpbmVzKClbbGluZU51bWJlcl07Cit9CisKK2lubGluZSBTbWFsbExp
bmUqIFNtYWxsUGFnZTo6ZW5kKCkKK3sKKyAgICByZXR1cm4gYmVnaW4oKSArIHNtYWxsTGluZUNv
dW50OworfQorCitpbmxpbmUgT2JqZWN0OjpPYmplY3Qodm9pZCogb2JqZWN0KQorICAgIDogbV9j
aHVuayhMYXJnZUNodW5rOjpnZXQob2JqZWN0KSkKKyAgICAsIG1fb2Zmc2V0KG1fY2h1bmstPm9m
ZnNldChvYmplY3QpKQoreworfQorCitpbmxpbmUgT2JqZWN0OjpPYmplY3QoTGFyZ2VDaHVuayog
Y2h1bmssIHZvaWQqIG9iamVjdCkKKyAgICA6IG1fY2h1bmsoY2h1bmspCisgICAgLCBtX29mZnNl
dChtX2NodW5rLT5vZmZzZXQob2JqZWN0KSkKK3sKKyAgICBCQVNTRVJUKGNodW5rID09IExhcmdl
Q2h1bms6OmdldChvYmplY3QpKTsKK30KKworaW5saW5lIHZvaWQqIE9iamVjdDo6YmVnaW4oKQor
eworICAgIHJldHVybiBtX2NodW5rLT5vYmplY3QobV9vZmZzZXQpOworfQorCitpbmxpbmUgdm9p
ZCogT2JqZWN0OjpwYWdlQmVnaW4oKQoreworICAgIHJldHVybiBtX2NodW5rLT5vYmplY3Qocm91
bmREb3duVG9NdWx0aXBsZU9mKHZtUGFnZVNpemUsIG1fb2Zmc2V0KSk7Cit9CisKK2lubGluZSBT
bWFsbExpbmUqIE9iamVjdDo6bGluZSgpCit7CisgICAgcmV0dXJuIG1fY2h1bmstPmxpbmUobV9v
ZmZzZXQpOworfQorCitpbmxpbmUgU21hbGxQYWdlKiBPYmplY3Q6OnBhZ2UoKQoreworICAgIHJl
dHVybiBtX2NodW5rLT5wYWdlKG1fb2Zmc2V0KTsKK30KKworfTsgLy8gbmFtZXNwYWNlIGJtYWxs
b2MKKworI2VuZGlmIC8vIExhcmdlQ2h1bmsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
Q2h1bmsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0NodW5rLmgJKHdv
cmtpbmcgY29weSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQ2h1bmsuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsOCArMjMsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBM
YXJnZUNodW5rX2gKLSNkZWZpbmUgTGFyZ2VDaHVua19oCisjaWZuZGVmIENodW5rX2gKKyNkZWZp
bmUgQ2h1bmtfaAogCiAjaW5jbHVkZSAiQmVnaW5UYWcuaCIKICNpbmNsdWRlICJFbmRUYWcuaCIK
QEAgLTM4LDE0ICszOCwxNCBAQAogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKLWNsYXNzIExhcmdl
Q2h1bmsgeworY2xhc3MgQ2h1bmsgewogcHVibGljOgotICAgIHN0YXRpYyBMYXJnZUNodW5rKiBn
ZXQodm9pZCopOworICAgIHN0YXRpYyBDaHVuayogZ2V0KHZvaWQqKTsKIAogICAgIHN0YXRpYyBC
ZWdpblRhZyogYmVnaW5UYWcodm9pZCopOwogICAgIHN0YXRpYyBFbmRUYWcqIGVuZFRhZyh2b2lk
Kiwgc2l6ZV90KTsKIAotICAgIExhcmdlQ2h1bmsoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4
PiYpOworICAgIENodW5rKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKTsKIAogICAgIHNp
emVfdCBvZmZzZXQodm9pZCopOwogCkBAIC02MCwxMSArNjAsMTEgQEAgcHVibGljOgogICAgIFNt
YWxsUGFnZSogcGFnZXMoKSB7IHJldHVybiBtX3BhZ2VzLmJlZ2luKCk7IH0KIAogICAgIGNoYXIq
IGJlZ2luKCkgeyByZXR1cm4gbV9tZW1vcnk7IH0KLSAgICBjaGFyKiBlbmQoKSB7IHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlzKSArIGxhcmdlQ2h1bmtTaXplOyB9CisgICAgY2hh
ciogZW5kKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcykgKyBjaHVua1Np
emU7IH0KIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJvdW5kYXJ5VGFnQ291
bnQgPSBsYXJnZUNodW5rU2l6ZSAvIGxhcmdlTWluOwotICAgIHN0YXRpY19hc3NlcnQoYm91bmRh
cnlUYWdDb3VudCA+IDIsICJMYXJnZUNodW5rIG11c3QgaGF2ZSBzcGFjZSBmb3IgdHdvIHNlbnRp
bmVsIGJvdW5kYXJ5IHRhZ3MiKTsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGJvdW5kYXJ5VGFn
Q291bnQgPSBjaHVua1NpemUgLyBsYXJnZU1pbjsKKyAgICBzdGF0aWNfYXNzZXJ0KGJvdW5kYXJ5
VGFnQ291bnQgPiAyLCAiQ2h1bmsgbXVzdCBoYXZlIHNwYWNlIGZvciB0d28gc2VudGluZWwgYm91
bmRhcnkgdGFncyIpOwogCiAgICAgLy8gT3VyIG1ldGFkYXRhIGxheW91dCBpbmNsdWRlcyBhIGxl
ZnQgYW5kIHJpZ2h0IGVkZ2Ugc2VudGluZWwuCiAgICAgLy8gTWV0YWRhdGEgdGFrZXMgdXAgZW5v
dWdoIHNwYWNlIHRvIGxlYXZlIGF0IGxlYXN0IHRoZSBmaXJzdCB0d28KQEAgLTgwLDI4ICs4MCwy
OCBAQCBwcml2YXRlOgogICAgIC8vCiAgICAgLy8gV2UgdXNlIHRoZSBYJ3MgZm9yIGJvdW5kYXJ5
IHRhZ3MgYW5kIHRoZSBPJ3MgZm9yIGVkZ2Ugc2VudGluZWxzLgogCi0gICAgc3RkOjphcnJheTxT
bWFsbExpbmUsIGxhcmdlQ2h1bmtTaXplIC8gc21hbGxMaW5lU2l6ZT4gbV9saW5lczsKLSAgICBz
dGQ6OmFycmF5PFNtYWxsUGFnZSwgbGFyZ2VDaHVua1NpemUgLyB2bVBhZ2VTaXplPiBtX3BhZ2Vz
OworICAgIHN0ZDo6YXJyYXk8U21hbGxMaW5lLCBjaHVua1NpemUgLyBzbWFsbExpbmVTaXplPiBt
X2xpbmVzOworICAgIHN0ZDo6YXJyYXk8U21hbGxQYWdlLCBjaHVua1NpemUgLyB2bVBhZ2VTaXpl
PiBtX3BhZ2VzOwogICAgIHN0ZDo6YXJyYXk8Qm91bmRhcnlUYWcsIGJvdW5kYXJ5VGFnQ291bnQ+
IG1fYm91bmRhcnlUYWdzOwogICAgIGNoYXIgbV9tZW1vcnlbXSBfX2F0dHJpYnV0ZV9fKChhbGln
bmVkKDIgKiBzbWFsbE1heCArIDApKSk7CiB9OwogCi1zdGF0aWNfYXNzZXJ0KHNpemVvZihMYXJn
ZUNodW5rKSArIGxhcmdlTWF4IDw9IGxhcmdlQ2h1bmtTaXplLCAibGFyZ2VNYXggaXMgdG9vIGJp
ZyIpOworc3RhdGljX2Fzc2VydChzaXplb2YoQ2h1bmspICsgbGFyZ2VNYXggPD0gY2h1bmtTaXpl
LCAibGFyZ2VNYXggaXMgdG9vIGJpZyIpOwogc3RhdGljX2Fzc2VydCgKLSAgICBzaXplb2YoTGFy
Z2VDaHVuaykgJSB2bVBhZ2VTaXplICsgMiAqIHNtYWxsTWF4IDw9IHZtUGFnZVNpemUsCisgICAg
c2l6ZW9mKENodW5rKSAlIHZtUGFnZVNpemUgKyAyICogc21hbGxNYXggPD0gdm1QYWdlU2l6ZSwK
ICAgICAidGhlIGZpcnN0IHBhZ2Ugb2Ygb2JqZWN0IG1lbW9yeSBpbiBhIHNtYWxsIGNodW5rIG11
c3QgYmUgYWJsZSB0byBhbGxvY2F0ZSBzbWFsbE1heCIpOwogCi1pbmxpbmUgTGFyZ2VDaHVuazo6
TGFyZ2VDaHVuayhzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBsb2NrKQoraW5saW5lIENo
dW5rOjpDaHVuayhzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBsb2NrKQogewogICAgIFJh
bmdlIHJhbmdlKGJlZ2luKCksIGVuZCgpIC0gYmVnaW4oKSk7CiAgICAgQkFTU0VSVChyYW5nZS5z
aXplKCkgPD0gbGFyZ2VPYmplY3RNYXgpOwogCi0gICAgQmVnaW5UYWcqIGJlZ2luVGFnID0gTGFy
Z2VDaHVuazo6YmVnaW5UYWcocmFuZ2UuYmVnaW4oKSk7CisgICAgQmVnaW5UYWcqIGJlZ2luVGFn
ID0gQ2h1bms6OmJlZ2luVGFnKHJhbmdlLmJlZ2luKCkpOwogICAgIGJlZ2luVGFnLT5zZXRSYW5n
ZShyYW5nZSk7CiAgICAgYmVnaW5UYWctPnNldEZyZWUodHJ1ZSk7CiAgICAgYmVnaW5UYWctPnNl
dFZNU3RhdGUoVk1TdGF0ZTo6VmlydHVhbCk7CiAKLSAgICBFbmRUYWcqIGVuZFRhZyA9IExhcmdl
Q2h1bms6OmVuZFRhZyhyYW5nZS5iZWdpbigpLCByYW5nZS5zaXplKCkpOworICAgIEVuZFRhZyog
ZW5kVGFnID0gQ2h1bms6OmVuZFRhZyhyYW5nZS5iZWdpbigpLCByYW5nZS5zaXplKCkpOwogICAg
IGVuZFRhZy0+aW5pdChiZWdpblRhZyk7CiAKICAgICAvLyBNYXJrIHRoZSBsZWZ0IGFuZCByaWdo
dCBlZGdlcyBvZiBvdXIgcmFuZ2UgYXMgYWxsb2NhdGVkLiBUaGlzIG5hdHVyYWxseQpAQCAtMTI2
LDIxICsxMjYsMjEgQEAgaW5saW5lIExhcmdlQ2h1bms6OkxhcmdlQ2h1bmsoc3RkOjpsb2NrXwog
ICAgIH0KIH0KIAotaW5saW5lIExhcmdlQ2h1bmsqIExhcmdlQ2h1bms6OmdldCh2b2lkKiBvYmpl
Y3QpCitpbmxpbmUgQ2h1bmsqIENodW5rOjpnZXQodm9pZCogb2JqZWN0KQogewotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxMYXJnZUNodW5rKj4obWFzayhvYmplY3QsIGxhcmdlQ2h1bmtNYXNrKSk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENodW5rKj4obWFzayhvYmplY3QsIGNodW5rTWFzaykp
OwogfQogCi1pbmxpbmUgQmVnaW5UYWcqIExhcmdlQ2h1bms6OmJlZ2luVGFnKHZvaWQqIG9iamVj
dCkKK2lubGluZSBCZWdpblRhZyogQ2h1bms6OmJlZ2luVGFnKHZvaWQqIG9iamVjdCkKIHsKLSAg
ICBMYXJnZUNodW5rKiBjaHVuayA9IGdldChvYmplY3QpOworICAgIENodW5rKiBjaHVuayA9IGdl
dChvYmplY3QpOwogICAgIHNpemVfdCBib3VuZGFyeVRhZ051bWJlciA9IChzdGF0aWNfY2FzdDxj
aGFyKj4ob2JqZWN0KSAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNodW5rKSkgLyBsYXJnZU1p
biAtIDE7IC8vIC0gMSB0byBvZmZzZXQgZnJvbSB0aGUgcmlnaHQgc2VudGluZWwuCiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEJlZ2luVGFnKj4oJmNodW5rLT5tX2JvdW5kYXJ5VGFnc1tib3VuZGFy
eVRhZ051bWJlcl0pOwogfQogCi1pbmxpbmUgRW5kVGFnKiBMYXJnZUNodW5rOjplbmRUYWcodm9p
ZCogb2JqZWN0LCBzaXplX3Qgc2l6ZSkKK2lubGluZSBFbmRUYWcqIENodW5rOjplbmRUYWcodm9p
ZCogb2JqZWN0LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBMYXJnZUNodW5rKiBjaHVuayA9IGdldChv
YmplY3QpOworICAgIENodW5rKiBjaHVuayA9IGdldChvYmplY3QpOwogICAgIGNoYXIqIGVuZCA9
IHN0YXRpY19jYXN0PGNoYXIqPihvYmplY3QpICsgc2l6ZTsKIAogICAgIC8vIFdlIHN1YnRyYWN0
IGxhcmdlTWluIGJlZm9yZSBjb21wdXRpbmcgdGhlIGVuZCBwb2ludGVyJ3MgYm91bmRhcnkgdGFn
LiBBbgpAQCAtMTUxLDI1ICsxNTEsMjUgQEAgaW5saW5lIEVuZFRhZyogTGFyZ2VDaHVuazo6ZW5k
VGFnKHZvaWQqIAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbmRUYWcqPigmY2h1bmstPm1fYm91
bmRhcnlUYWdzW2JvdW5kYXJ5VGFnTnVtYmVyXSk7CiB9CiAKLWlubGluZSBzaXplX3QgTGFyZ2VD
aHVuazo6b2Zmc2V0KHZvaWQqIG9iamVjdCkKK2lubGluZSBzaXplX3QgQ2h1bms6Om9mZnNldCh2
b2lkKiBvYmplY3QpCiB7CiAgICAgQkFTU0VSVChvYmplY3QgPj0gdGhpcyk7Ci0gICAgQkFTU0VS
VChvYmplY3QgPCByZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlzKSArIGxhcmdlQ2h1bmtTaXpl
KTsKKyAgICBCQVNTRVJUKG9iamVjdCA8IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHRoaXMpICsg
Y2h1bmtTaXplKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcio+KG9iamVjdCkgLSByZWlu
dGVycHJldF9jYXN0PGNoYXIqPih0aGlzKTsKIH0KIAotaW5saW5lIHZvaWQqIExhcmdlQ2h1bms6
Om9iamVjdChzaXplX3Qgb2Zmc2V0KQoraW5saW5lIHZvaWQqIENodW5rOjpvYmplY3Qoc2l6ZV90
IG9mZnNldCkKIHsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcykgKyBv
ZmZzZXQ7CiB9CiAKLWlubGluZSBTbWFsbFBhZ2UqIExhcmdlQ2h1bms6OnBhZ2Uoc2l6ZV90IG9m
ZnNldCkKK2lubGluZSBTbWFsbFBhZ2UqIENodW5rOjpwYWdlKHNpemVfdCBvZmZzZXQpCiB7CiAg
ICAgc2l6ZV90IHBhZ2VOdW1iZXIgPSBvZmZzZXQgLyB2bVBhZ2VTaXplOwogICAgIHJldHVybiAm
bV9wYWdlc1twYWdlTnVtYmVyXTsKIH0KIAotaW5saW5lIFNtYWxsTGluZSogTGFyZ2VDaHVuazo6
bGluZShzaXplX3Qgb2Zmc2V0KQoraW5saW5lIFNtYWxsTGluZSogQ2h1bms6OmxpbmUoc2l6ZV90
IG9mZnNldCkKIHsKICAgICBzaXplX3QgbGluZU51bWJlciA9IG9mZnNldCAvIHNtYWxsTGluZVNp
emU7CiAgICAgcmV0dXJuICZtX2xpbmVzW2xpbmVOdW1iZXJdOwpAQCAtMTc3LDcgKzE3Nyw3IEBA
IGlubGluZSBTbWFsbExpbmUqIExhcmdlQ2h1bms6OmxpbmUoc2l6ZV8KIAogaW5saW5lIGNoYXIq
IFNtYWxsTGluZTo6YmVnaW4oKQogewotICAgIExhcmdlQ2h1bmsqIGNodW5rID0gTGFyZ2VDaHVu
azo6Z2V0KHRoaXMpOworICAgIENodW5rKiBjaHVuayA9IENodW5rOjpnZXQodGhpcyk7CiAgICAg
c2l6ZV90IGxpbmVOdW1iZXIgPSB0aGlzIC0gY2h1bmstPmxpbmVzKCk7CiAgICAgc2l6ZV90IG9m
ZnNldCA9IGxpbmVOdW1iZXIgKiBzbWFsbExpbmVTaXplOwogICAgIHJldHVybiAmcmVpbnRlcnBy
ZXRfY2FzdDxjaGFyKj4oY2h1bmspW29mZnNldF07CkBAIC0xOTAsNyArMTkwLDcgQEAgaW5saW5l
IGNoYXIqIFNtYWxsTGluZTo6ZW5kKCkKIAogaW5saW5lIFNtYWxsTGluZSogU21hbGxQYWdlOjpi
ZWdpbigpCiB7Ci0gICAgTGFyZ2VDaHVuayogY2h1bmsgPSBMYXJnZUNodW5rOjpnZXQodGhpcyk7
CisgICAgQ2h1bmsqIGNodW5rID0gQ2h1bms6OmdldCh0aGlzKTsKICAgICBzaXplX3QgcGFnZU51
bWJlciA9IHRoaXMgLSBjaHVuay0+cGFnZXMoKTsKICAgICBzaXplX3QgbGluZU51bWJlciA9IHBh
Z2VOdW1iZXIgKiBzbWFsbExpbmVDb3VudDsKICAgICByZXR1cm4gJmNodW5rLT5saW5lcygpW2xp
bmVOdW1iZXJdOwpAQCAtMjAyLDE2ICsyMDIsMTYgQEAgaW5saW5lIFNtYWxsTGluZSogU21hbGxQ
YWdlOjplbmQoKQogfQogCiBpbmxpbmUgT2JqZWN0OjpPYmplY3Qodm9pZCogb2JqZWN0KQotICAg
IDogbV9jaHVuayhMYXJnZUNodW5rOjpnZXQob2JqZWN0KSkKKyAgICA6IG1fY2h1bmsoQ2h1bms6
OmdldChvYmplY3QpKQogICAgICwgbV9vZmZzZXQobV9jaHVuay0+b2Zmc2V0KG9iamVjdCkpCiB7
CiB9CiAKLWlubGluZSBPYmplY3Q6Ok9iamVjdChMYXJnZUNodW5rKiBjaHVuaywgdm9pZCogb2Jq
ZWN0KQoraW5saW5lIE9iamVjdDo6T2JqZWN0KENodW5rKiBjaHVuaywgdm9pZCogb2JqZWN0KQog
ICAgIDogbV9jaHVuayhjaHVuaykKICAgICAsIG1fb2Zmc2V0KG1fY2h1bmstPm9mZnNldChvYmpl
Y3QpKQogewotICAgIEJBU1NFUlQoY2h1bmsgPT0gTGFyZ2VDaHVuazo6Z2V0KG9iamVjdCkpOwor
ICAgIEJBU1NFUlQoY2h1bmsgPT0gQ2h1bms6OmdldChvYmplY3QpKTsKIH0KIAogaW5saW5lIHZv
aWQqIE9iamVjdDo6YmVnaW4oKQpAQCAtMjM2LDQgKzIzNiw0IEBAIGlubGluZSBTbWFsbFBhZ2Uq
IE9iamVjdDo6cGFnZSgpCiAKIH07IC8vIG5hbWVzcGFjZSBibWFsbG9jCiAKLSNlbmRpZiAvLyBM
YXJnZUNodW5rCisjZW5kaWYgLy8gQ2h1bmsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
RGVhbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVh
bGxvY2F0b3IuY3BwCShyZXZpc2lvbiAxOTg2NzUpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0RlYWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAK
ICNpbmNsdWRlICJCQXNzZXJ0LmgiCi0jaW5jbHVkZSAiTGFyZ2VDaHVuay5oIgorI2luY2x1ZGUg
IkNodW5rLmgiCiAjaW5jbHVkZSAiRGVhbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAj
aW5jbHVkZSAiSW5saW5lLmgiCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0ZyZWVMaXN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0ZyZWVMaXN0LmNwcAko
cmV2aXNpb24gMTk4Njc0KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9GcmVlTGlzdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
LSNpbmNsdWRlICJMYXJnZUNodW5rLmgiCiAjaW5jbHVkZSAiRnJlZUxpc3QuaCIKKyNpbmNsdWRl
ICJDaHVuay5oIgogI2luY2x1ZGUgIlZlY3Rvci5oIgogCiBuYW1lc3BhY2UgYm1hbGxvYyB7Cklu
ZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAJKHJldmlzaW9uIDE5ODY3NSkKKysrIFNvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAK
IAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJCdW1wQWxsb2NhdG9yLmgiCi0jaW5jbHVk
ZSAiTGFyZ2VDaHVuay5oIgorI2luY2x1ZGUgIkNodW5rLmgiCiAjaW5jbHVkZSAiTGFyZ2VPYmpl
Y3QuaCIKICNpbmNsdWRlICJQZXJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiU21hbGxMaW5lLmgiCkBA
IC0zMzQsNyArMzM0LDcgQEAgdm9pZCogSGVhcDo6YWxsb2NhdGVMYXJnZShzdGQ6OmxvY2tfZ3Vh
cgogICAgIEJBU1NFUlQodW5hbGlnbmVkU2l6ZSA8PSBsYXJnZU1heCk7CiAgICAgQkFTU0VSVCh1
bmFsaWduZWRTaXplID49IGxhcmdlTWluKTsKICAgICBCQVNTRVJUKHVuYWxpZ25lZFNpemUgPT0g
cm91bmRVcFRvTXVsdGlwbGVPZjxsYXJnZUFsaWdubWVudD4odW5hbGlnbmVkU2l6ZSkpOwotICAg
IEJBU1NFUlQoYWxpZ25tZW50IDw9IGxhcmdlQ2h1bmtTaXplIC8gMik7CisgICAgQkFTU0VSVChh
bGlnbm1lbnQgPD0gY2h1bmtTaXplIC8gMik7CiAgICAgQkFTU0VSVChhbGlnbm1lbnQgPj0gbGFy
Z2VBbGlnbm1lbnQpOwogICAgIEJBU1NFUlQoaXNQb3dlck9mVHdvKGFsaWdubWVudCkpOwogCklu
ZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdlQ2h1bmsuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0xhcmdlQ2h1bmsuaAkocmV2aXNpb24gMTk4Njc1KQorKysg
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZUNodW5rLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
MjM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2lmbmRlZiBMYXJnZUNodW5rX2gKLSNkZWZpbmUgTGFyZ2VDaHVua19oCi0KLSNpbmNsdWRl
ICJCZWdpblRhZy5oIgotI2luY2x1ZGUgIkVuZFRhZy5oIgotI2luY2x1ZGUgIk9iamVjdC5oIgot
I2luY2x1ZGUgIk9iamVjdFR5cGUuaCIKLSNpbmNsdWRlICJTaXplcy5oIgotI2luY2x1ZGUgIlNt
YWxsTGluZS5oIgotI2luY2x1ZGUgIlNtYWxsUGFnZS5oIgotI2luY2x1ZGUgIlZNQWxsb2NhdGUu
aCIKLSNpbmNsdWRlIDxhcnJheT4KLQotbmFtZXNwYWNlIGJtYWxsb2MgewotCi1jbGFzcyBMYXJn
ZUNodW5rIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgTGFyZ2VDaHVuayogZ2V0KHZvaWQqKTsKLQot
ICAgIHN0YXRpYyBCZWdpblRhZyogYmVnaW5UYWcodm9pZCopOwotICAgIHN0YXRpYyBFbmRUYWcq
IGVuZFRhZyh2b2lkKiwgc2l6ZV90KTsKLQotICAgIExhcmdlQ2h1bmsoc3RkOjpsb2NrX2d1YXJk
PFN0YXRpY011dGV4PiYpOwotCi0gICAgc2l6ZV90IG9mZnNldCh2b2lkKik7Ci0KLSAgICB2b2lk
KiBvYmplY3Qoc2l6ZV90IG9mZnNldCk7Ci0gICAgU21hbGxQYWdlKiBwYWdlKHNpemVfdCBvZmZz
ZXQpOwotICAgIFNtYWxsTGluZSogbGluZShzaXplX3Qgb2Zmc2V0KTsKLQotICAgIFNtYWxsUGFn
ZSogcGFnZUJlZ2luKCkgeyByZXR1cm4gT2JqZWN0KG1fbWVtb3J5KS5wYWdlKCk7IH0KLSAgICBT
bWFsbFBhZ2UqIHBhZ2VFbmQoKSB7IHJldHVybiBtX3BhZ2VzLmVuZCgpOyB9Ci0gICAgCi0gICAg
U21hbGxMaW5lKiBsaW5lcygpIHsgcmV0dXJuIG1fbGluZXMuYmVnaW4oKTsgfQotICAgIFNtYWxs
UGFnZSogcGFnZXMoKSB7IHJldHVybiBtX3BhZ2VzLmJlZ2luKCk7IH0KLQotICAgIGNoYXIqIGJl
Z2luKCkgeyByZXR1cm4gbV9tZW1vcnk7IH0KLSAgICBjaGFyKiBlbmQoKSB7IHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNoYXIqPih0aGlzKSArIGxhcmdlQ2h1bmtTaXplOyB9Ci0KLXByaXZhdGU6
Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBib3VuZGFyeVRhZ0NvdW50ID0gbGFyZ2VDaHVua1Np
emUgLyBsYXJnZU1pbjsKLSAgICBzdGF0aWNfYXNzZXJ0KGJvdW5kYXJ5VGFnQ291bnQgPiAyLCAi
TGFyZ2VDaHVuayBtdXN0IGhhdmUgc3BhY2UgZm9yIHR3byBzZW50aW5lbCBib3VuZGFyeSB0YWdz
Iik7Ci0KLSAgICAvLyBPdXIgbWV0YWRhdGEgbGF5b3V0IGluY2x1ZGVzIGEgbGVmdCBhbmQgcmln
aHQgZWRnZSBzZW50aW5lbC4KLSAgICAvLyBNZXRhZGF0YSB0YWtlcyB1cCBlbm91Z2ggc3BhY2Ug
dG8gbGVhdmUgYXQgbGVhc3QgdGhlIGZpcnN0IHR3bwotICAgIC8vIGJvdW5kYXJ5IHRhZyBzbG90
cyB1bnVzZWQuCi0gICAgLy8KLSAgICAvLyAgICAgIFNvLCBib3VuZGFyeSB0YWcgc3BhY2UgbG9v
a3MgbGlrZSB0aGlzOgotICAgIC8vCi0gICAgLy8gICAgICAgICAgW09PWFhYWFguLi5dCi0gICAg
Ly8KLSAgICAvLyAgICAgIEFuZCBCb3VuZGFyeVRhZzo6Z2V0IHN1YnRyYWN0cyBvbmUsIHByb2R1
Y2luZzoKLSAgICAvLwotICAgIC8vICAgICAgICAgIFtPWFhYWFguLi5PXS4KLSAgICAvLwotICAg
IC8vIFdlIHVzZSB0aGUgWCdzIGZvciBib3VuZGFyeSB0YWdzIGFuZCB0aGUgTydzIGZvciBlZGdl
IHNlbnRpbmVscy4KLQotICAgIHN0ZDo6YXJyYXk8U21hbGxMaW5lLCBsYXJnZUNodW5rU2l6ZSAv
IHNtYWxsTGluZVNpemU+IG1fbGluZXM7Ci0gICAgc3RkOjphcnJheTxTbWFsbFBhZ2UsIGxhcmdl
Q2h1bmtTaXplIC8gdm1QYWdlU2l6ZT4gbV9wYWdlczsKLSAgICBzdGQ6OmFycmF5PEJvdW5kYXJ5
VGFnLCBib3VuZGFyeVRhZ0NvdW50PiBtX2JvdW5kYXJ5VGFnczsKLSAgICBjaGFyIG1fbWVtb3J5
W10gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgyICogc21hbGxNYXggKyAwKSkpOwotfTsKLQotc3Rh
dGljX2Fzc2VydChzaXplb2YoTGFyZ2VDaHVuaykgKyBsYXJnZU1heCA8PSBsYXJnZUNodW5rU2l6
ZSwgImxhcmdlTWF4IGlzIHRvbyBiaWciKTsKLXN0YXRpY19hc3NlcnQoCi0gICAgc2l6ZW9mKExh
cmdlQ2h1bmspICUgdm1QYWdlU2l6ZSArIDIgKiBzbWFsbE1heCA8PSB2bVBhZ2VTaXplLAotICAg
ICJ0aGUgZmlyc3QgcGFnZSBvZiBvYmplY3QgbWVtb3J5IGluIGEgc21hbGwgY2h1bmsgbXVzdCBi
ZSBhYmxlIHRvIGFsbG9jYXRlIHNtYWxsTWF4Iik7Ci0KLWlubGluZSBMYXJnZUNodW5rOjpMYXJn
ZUNodW5rKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mIGxvY2spCi17Ci0gICAgUmFuZ2Ug
cmFuZ2UoYmVnaW4oKSwgZW5kKCkgLSBiZWdpbigpKTsKLSAgICBCQVNTRVJUKHJhbmdlLnNpemUo
KSA8PSBsYXJnZU9iamVjdE1heCk7Ci0KLSAgICBCZWdpblRhZyogYmVnaW5UYWcgPSBMYXJnZUNo
dW5rOjpiZWdpblRhZyhyYW5nZS5iZWdpbigpKTsKLSAgICBiZWdpblRhZy0+c2V0UmFuZ2UocmFu
Z2UpOwotICAgIGJlZ2luVGFnLT5zZXRGcmVlKHRydWUpOwotICAgIGJlZ2luVGFnLT5zZXRWTVN0
YXRlKFZNU3RhdGU6OlZpcnR1YWwpOwotCi0gICAgRW5kVGFnKiBlbmRUYWcgPSBMYXJnZUNodW5r
OjplbmRUYWcocmFuZ2UuYmVnaW4oKSwgcmFuZ2Uuc2l6ZSgpKTsKLSAgICBlbmRUYWctPmluaXQo
YmVnaW5UYWcpOwotCi0gICAgLy8gTWFyayB0aGUgbGVmdCBhbmQgcmlnaHQgZWRnZXMgb2Ygb3Vy
IHJhbmdlIGFzIGFsbG9jYXRlZC4gVGhpcyBuYXR1cmFsbHkKLSAgICAvLyBwcmV2ZW50cyBtZXJn
aW5nIGxvZ2ljIGZyb20gb3ZlcmZsb3dpbmcgbGVmdCAoaW50byBtZXRhZGF0YSkgb3IgcmlnaHQK
LSAgICAvLyAoYmV5b25kIG91ciBjaHVuayksIHdpdGhvdXQgcmVxdWlyaW5nIHNwZWNpYWwtY2Fz
ZSBjaGVja3MuCi0KLSAgICBFbmRUYWcqIGxlZnRTZW50aW5lbCA9IGJlZ2luVGFnLT5wcmV2KCk7
Ci0gICAgQkFTU0VSVChsZWZ0U2VudGluZWwgPj0gbV9ib3VuZGFyeVRhZ3MuYmVnaW4oKSk7Ci0g
ICAgQkFTU0VSVChsZWZ0U2VudGluZWwgPCBtX2JvdW5kYXJ5VGFncy5lbmQoKSk7Ci0gICAgbGVm
dFNlbnRpbmVsLT5pbml0U2VudGluZWwoKTsKLQotICAgIEJlZ2luVGFnKiByaWdodFNlbnRpbmVs
ID0gZW5kVGFnLT5uZXh0KCk7Ci0gICAgQkFTU0VSVChyaWdodFNlbnRpbmVsID49IG1fYm91bmRh
cnlUYWdzLmJlZ2luKCkpOwotICAgIEJBU1NFUlQocmlnaHRTZW50aW5lbCA8IG1fYm91bmRhcnlU
YWdzLmVuZCgpKTsKLSAgICByaWdodFNlbnRpbmVsLT5pbml0U2VudGluZWwoKTsKLQotICAgIC8v
IFRyYWNrIHRoZSBtZW1vcnkgdXNlZCBmb3IgbWV0YWRhdGEgYnkgYWxsb2NhdGluZyBpbWFnaW5h
cnkgb2JqZWN0cy4KLSAgICBmb3IgKGNoYXIqIGl0ID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
dGhpcyk7IGl0IDwgbV9tZW1vcnk7IGl0ICs9IHNtYWxsTGluZVNpemUpIHsKLSAgICAgICAgT2Jq
ZWN0IG9iamVjdChpdCk7Ci0gICAgICAgIG9iamVjdC5saW5lKCktPnJlZihsb2NrKTsKLSAgICAg
ICAgb2JqZWN0LnBhZ2UoKS0+cmVmKGxvY2spOwotICAgIH0KLX0KLQotaW5saW5lIExhcmdlQ2h1
bmsqIExhcmdlQ2h1bms6OmdldCh2b2lkKiBvYmplY3QpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PExhcmdlQ2h1bmsqPihtYXNrKG9iamVjdCwgbGFyZ2VDaHVua01hc2spKTsKLX0KLQotaW5s
aW5lIEJlZ2luVGFnKiBMYXJnZUNodW5rOjpiZWdpblRhZyh2b2lkKiBvYmplY3QpCi17Ci0gICAg
TGFyZ2VDaHVuayogY2h1bmsgPSBnZXQob2JqZWN0KTsKLSAgICBzaXplX3QgYm91bmRhcnlUYWdO
dW1iZXIgPSAoc3RhdGljX2Nhc3Q8Y2hhcio+KG9iamVjdCkgLSByZWludGVycHJldF9jYXN0PGNo
YXIqPihjaHVuaykpIC8gbGFyZ2VNaW4gLSAxOyAvLyAtIDEgdG8gb2Zmc2V0IGZyb20gdGhlIHJp
Z2h0IHNlbnRpbmVsLgotICAgIHJldHVybiBzdGF0aWNfY2FzdDxCZWdpblRhZyo+KCZjaHVuay0+
bV9ib3VuZGFyeVRhZ3NbYm91bmRhcnlUYWdOdW1iZXJdKTsKLX0KLQotaW5saW5lIEVuZFRhZyog
TGFyZ2VDaHVuazo6ZW5kVGFnKHZvaWQqIG9iamVjdCwgc2l6ZV90IHNpemUpCi17Ci0gICAgTGFy
Z2VDaHVuayogY2h1bmsgPSBnZXQob2JqZWN0KTsKLSAgICBjaGFyKiBlbmQgPSBzdGF0aWNfY2Fz
dDxjaGFyKj4ob2JqZWN0KSArIHNpemU7Ci0KLSAgICAvLyBXZSBzdWJ0cmFjdCBsYXJnZU1pbiBi
ZWZvcmUgY29tcHV0aW5nIHRoZSBlbmQgcG9pbnRlcidzIGJvdW5kYXJ5IHRhZy4gQW4KLSAgICAv
LyBvYmplY3QncyBzaXplIG5lZWQgbm90IGJlIGFuIGV2ZW4gbXVsdGlwbGUgb2YgbGFyZ2VNaW4u
IFN1YnRyYWN0aW5nCi0gICAgLy8gbGFyZ2VNaW4gcm91bmRzIGRvd24gdG8gdGhlIGxhc3QgYm91
bmRhcnkgdGFnIHByaW9yIHRvIG91ciBuZWlnaGJvci4KLQotICAgIHNpemVfdCBib3VuZGFyeVRh
Z051bWJlciA9IChlbmQgLSBsYXJnZU1pbiAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNodW5r
KSkgLyBsYXJnZU1pbiAtIDE7IC8vIC0gMSB0byBvZmZzZXQgZnJvbSB0aGUgcmlnaHQgc2VudGlu
ZWwuCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVuZFRhZyo+KCZjaHVuay0+bV9ib3VuZGFyeVRh
Z3NbYm91bmRhcnlUYWdOdW1iZXJdKTsKLX0KLQotaW5saW5lIHNpemVfdCBMYXJnZUNodW5rOjpv
ZmZzZXQodm9pZCogb2JqZWN0KQotewotICAgIEJBU1NFUlQob2JqZWN0ID49IHRoaXMpOwotICAg
IEJBU1NFUlQob2JqZWN0IDwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcykgKyBsYXJnZUNo
dW5rU2l6ZSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihvYmplY3QpIC0gcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4odGhpcyk7Ci19Ci0KLWlubGluZSB2b2lkKiBMYXJnZUNodW5rOjpv
YmplY3Qoc2l6ZV90IG9mZnNldCkKLXsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4odGhpcykgKyBvZmZzZXQ7Ci19Ci0KLWlubGluZSBTbWFsbFBhZ2UqIExhcmdlQ2h1bms6OnBh
Z2Uoc2l6ZV90IG9mZnNldCkKLXsKLSAgICBzaXplX3QgcGFnZU51bWJlciA9IG9mZnNldCAvIHZt
UGFnZVNpemU7Ci0gICAgcmV0dXJuICZtX3BhZ2VzW3BhZ2VOdW1iZXJdOwotfQotCi1pbmxpbmUg
U21hbGxMaW5lKiBMYXJnZUNodW5rOjpsaW5lKHNpemVfdCBvZmZzZXQpCi17Ci0gICAgc2l6ZV90
IGxpbmVOdW1iZXIgPSBvZmZzZXQgLyBzbWFsbExpbmVTaXplOwotICAgIHJldHVybiAmbV9saW5l
c1tsaW5lTnVtYmVyXTsKLX0KLQotaW5saW5lIGNoYXIqIFNtYWxsTGluZTo6YmVnaW4oKQotewot
ICAgIExhcmdlQ2h1bmsqIGNodW5rID0gTGFyZ2VDaHVuazo6Z2V0KHRoaXMpOwotICAgIHNpemVf
dCBsaW5lTnVtYmVyID0gdGhpcyAtIGNodW5rLT5saW5lcygpOwotICAgIHNpemVfdCBvZmZzZXQg
PSBsaW5lTnVtYmVyICogc21hbGxMaW5lU2l6ZTsKLSAgICByZXR1cm4gJnJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGNodW5rKVtvZmZzZXRdOwotfQotCi1pbmxpbmUgY2hhciogU21hbGxMaW5lOjpl
bmQoKQotewotICAgIHJldHVybiBiZWdpbigpICsgc21hbGxMaW5lU2l6ZTsKLX0KLQotaW5saW5l
IFNtYWxsTGluZSogU21hbGxQYWdlOjpiZWdpbigpCi17Ci0gICAgTGFyZ2VDaHVuayogY2h1bmsg
PSBMYXJnZUNodW5rOjpnZXQodGhpcyk7Ci0gICAgc2l6ZV90IHBhZ2VOdW1iZXIgPSB0aGlzIC0g
Y2h1bmstPnBhZ2VzKCk7Ci0gICAgc2l6ZV90IGxpbmVOdW1iZXIgPSBwYWdlTnVtYmVyICogc21h
bGxMaW5lQ291bnQ7Ci0gICAgcmV0dXJuICZjaHVuay0+bGluZXMoKVtsaW5lTnVtYmVyXTsKLX0K
LQotaW5saW5lIFNtYWxsTGluZSogU21hbGxQYWdlOjplbmQoKQotewotICAgIHJldHVybiBiZWdp
bigpICsgc21hbGxMaW5lQ291bnQ7Ci19Ci0KLWlubGluZSBPYmplY3Q6Ok9iamVjdCh2b2lkKiBv
YmplY3QpCi0gICAgOiBtX2NodW5rKExhcmdlQ2h1bms6OmdldChvYmplY3QpKQotICAgICwgbV9v
ZmZzZXQobV9jaHVuay0+b2Zmc2V0KG9iamVjdCkpCi17Ci19Ci0KLWlubGluZSBPYmplY3Q6Ok9i
amVjdChMYXJnZUNodW5rKiBjaHVuaywgdm9pZCogb2JqZWN0KQotICAgIDogbV9jaHVuayhjaHVu
aykKLSAgICAsIG1fb2Zmc2V0KG1fY2h1bmstPm9mZnNldChvYmplY3QpKQotewotICAgIEJBU1NF
UlQoY2h1bmsgPT0gTGFyZ2VDaHVuazo6Z2V0KG9iamVjdCkpOwotfQotCi1pbmxpbmUgdm9pZCog
T2JqZWN0OjpiZWdpbigpCi17Ci0gICAgcmV0dXJuIG1fY2h1bmstPm9iamVjdChtX29mZnNldCk7
Ci19Ci0KLWlubGluZSB2b2lkKiBPYmplY3Q6OnBhZ2VCZWdpbigpCi17Ci0gICAgcmV0dXJuIG1f
Y2h1bmstPm9iamVjdChyb3VuZERvd25Ub011bHRpcGxlT2Yodm1QYWdlU2l6ZSwgbV9vZmZzZXQp
KTsKLX0KLQotaW5saW5lIFNtYWxsTGluZSogT2JqZWN0OjpsaW5lKCkKLXsKLSAgICByZXR1cm4g
bV9jaHVuay0+bGluZShtX29mZnNldCk7Ci19Ci0KLWlubGluZSBTbWFsbFBhZ2UqIE9iamVjdDo6
cGFnZSgpCi17Ci0gICAgcmV0dXJuIG1fY2h1bmstPnBhZ2UobV9vZmZzZXQpOwotfQotCi19OyAv
LyBuYW1lc3BhY2UgYm1hbGxvYwotCi0jZW5kaWYgLy8gTGFyZ2VDaHVuawpJbmRleDogU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9MYXJnZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvTGFyZ2VPYmplY3QuaAkocmV2aXNpb24gMTk4Njc0KQorKysgU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9MYXJnZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4
IEBACiAjZGVmaW5lIExhcmdlT2JqZWN0X2gKIAogI2luY2x1ZGUgIkJlZ2luVGFnLmgiCisjaW5j
bHVkZSAiQ2h1bmsuaCIKICNpbmNsdWRlICJFbmRUYWcuaCIKLSNpbmNsdWRlICJMYXJnZUNodW5r
LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKIAogbmFtZXNwYWNlIGJtYWxsb2MgewpAQCAtODUsMTYg
Kzg1LDE2IEBAIGlubGluZSBMYXJnZU9iamVjdDo6TGFyZ2VPYmplY3QoKQogfQogCiBpbmxpbmUg
TGFyZ2VPYmplY3Q6OkxhcmdlT2JqZWN0KHZvaWQqIG9iamVjdCkKLSAgICA6IG1fYmVnaW5UYWco
TGFyZ2VDaHVuazo6YmVnaW5UYWcob2JqZWN0KSkKLSAgICAsIG1fZW5kVGFnKExhcmdlQ2h1bms6
OmVuZFRhZyhvYmplY3QsIG1fYmVnaW5UYWctPnNpemUoKSkpCisgICAgOiBtX2JlZ2luVGFnKENo
dW5rOjpiZWdpblRhZyhvYmplY3QpKQorICAgICwgbV9lbmRUYWcoQ2h1bms6OmVuZFRhZyhvYmpl
Y3QsIG1fYmVnaW5UYWctPnNpemUoKSkpCiAgICAgLCBtX29iamVjdChvYmplY3QpCiB7CiAgICAg
dmFsaWRhdGUoKTsKIH0KIAogaW5saW5lIExhcmdlT2JqZWN0OjpMYXJnZU9iamVjdChEb05vdFZh
bGlkYXRlVGFnLCB2b2lkKiBvYmplY3QpCi0gICAgOiBtX2JlZ2luVGFnKExhcmdlQ2h1bms6OmJl
Z2luVGFnKG9iamVjdCkpCi0gICAgLCBtX2VuZFRhZyhMYXJnZUNodW5rOjplbmRUYWcob2JqZWN0
LCBtX2JlZ2luVGFnLT5zaXplKCkpKQorICAgIDogbV9iZWdpblRhZyhDaHVuazo6YmVnaW5UYWco
b2JqZWN0KSkKKyAgICAsIG1fZW5kVGFnKENodW5rOjplbmRUYWcob2JqZWN0LCBtX2JlZ2luVGFn
LT5zaXplKCkpKQogICAgICwgbV9vYmplY3Qob2JqZWN0KQogewogfQpAQCAtMTk0LDcgKzE5NCw3
IEBAIGlubGluZSBMYXJnZU9iamVjdCBMYXJnZU9iamVjdDo6bWVyZ2UoKSAKICAgICAgICAgcHJl
di0+Y2xlYXIoKTsKICAgICAgICAgYmVnaW5UYWctPmNsZWFyKCk7CiAKLSAgICAgICAgYmVnaW5U
YWcgPSBMYXJnZUNodW5rOjpiZWdpblRhZyhyYW5nZS5iZWdpbigpKTsKKyAgICAgICAgYmVnaW5U
YWcgPSBDaHVuazo6YmVnaW5UYWcocmFuZ2UuYmVnaW4oKSk7CiAgICAgfQogCiAgICAgQmVnaW5U
YWcqIG5leHQgPSBlbmRUYWctPm5leHQoKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBpbmxpbmUgTGFy
Z2VPYmplY3QgTGFyZ2VPYmplY3Q6Om1lcmdlKCkgCiAgICAgICAgIGVuZFRhZy0+Y2xlYXIoKTsK
ICAgICAgICAgbmV4dC0+Y2xlYXIoKTsKIAotICAgICAgICBlbmRUYWcgPSBMYXJnZUNodW5rOjpl
bmRUYWcocmFuZ2UuYmVnaW4oKSwgcmFuZ2Uuc2l6ZSgpKTsKKyAgICAgICAgZW5kVGFnID0gQ2h1
bms6OmVuZFRhZyhyYW5nZS5iZWdpbigpLCByYW5nZS5zaXplKCkpOwogICAgIH0KIAogICAgIGJl
Z2luVGFnLT5zZXRSYW5nZShyYW5nZSk7CkBAIC0yMjUsOSArMjI1LDkgQEAgaW5saW5lIHN0ZDo6
cGFpcjxMYXJnZU9iamVjdCwgTGFyZ2VPYmplYwogICAgIEJBU1NFUlQobGVmdG92ZXIuc2l6ZSgp
ID49IGxhcmdlTWluKTsKIAogICAgIEJlZ2luVGFnKiBzcGxpdEJlZ2luVGFnID0gbV9iZWdpblRh
ZzsKLSAgICBFbmRUYWcqIHNwbGl0RW5kVGFnID0gTGFyZ2VDaHVuazo6ZW5kVGFnKHNwbGl0LmJl
Z2luKCksIHNpemUpOworICAgIEVuZFRhZyogc3BsaXRFbmRUYWcgPSBDaHVuazo6ZW5kVGFnKHNw
bGl0LmJlZ2luKCksIHNpemUpOwogCi0gICAgQmVnaW5UYWcqIGxlZnRvdmVyQmVnaW5UYWcgPSBM
YXJnZUNodW5rOjpiZWdpblRhZyhsZWZ0b3Zlci5iZWdpbigpKTsKKyAgICBCZWdpblRhZyogbGVm
dG92ZXJCZWdpblRhZyA9IENodW5rOjpiZWdpblRhZyhsZWZ0b3Zlci5iZWdpbigpKTsKICAgICBF
bmRUYWcqIGxlZnRvdmVyRW5kVGFnID0gbV9lbmRUYWc7CiAKICAgICBzcGxpdEJlZ2luVGFnLT5z
ZXRSYW5nZShzcGxpdCk7CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0LmgJKHJldmlzaW9uIDE5
ODY3NSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDE2ICsyOCwxNiBAQAogCiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKLWNsYXNzIExhcmdl
Q2h1bms7CitjbGFzcyBDaHVuazsKIGNsYXNzIFNtYWxsTGluZTsKIGNsYXNzIFNtYWxsUGFnZTsK
IAogY2xhc3MgT2JqZWN0IHsKIHB1YmxpYzoKICAgICBPYmplY3Qodm9pZCopOwotICAgIE9iamVj
dChMYXJnZUNodW5rKiwgdm9pZCopOworICAgIE9iamVjdChDaHVuayosIHZvaWQqKTsKICAgICAK
LSAgICBMYXJnZUNodW5rKiBjaHVuaygpIHsgcmV0dXJuIG1fY2h1bms7IH0KKyAgICBDaHVuayog
Y2h1bmsoKSB7IHJldHVybiBtX2NodW5rOyB9CiAgICAgdm9pZCogYmVnaW4oKTsKICAgICB2b2lk
KiBwYWdlQmVnaW4oKTsKIApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgU21hbGxQYWdl
KiBwYWdlKCk7CiAKIHByaXZhdGU6Ci0gICAgTGFyZ2VDaHVuayogbV9jaHVuazsKKyAgICBDaHVu
ayogbV9jaHVuazsKICAgICBzaXplX3QgbV9vZmZzZXQ7CiB9OwogCkluZGV4OiBTb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL09iamVjdFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvT2JqZWN0VHlwZS5jcHAJKHJldmlzaW9uIDE5ODY3NSkKKysrIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvT2JqZWN0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcg
QEAKIAogI2luY2x1ZGUgIk9iamVjdFR5cGUuaCIKIAotI2luY2x1ZGUgIkxhcmdlQ2h1bmsuaCIK
KyNpbmNsdWRlICJDaHVuay5oIgogI2luY2x1ZGUgIk9iamVjdC5oIgogCiBuYW1lc3BhY2UgYm1h
bGxvYyB7CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NpemVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TaXplcy5oCShyZXZpc2lvbiAxOTg2NzUpCisrKyBT
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NpemVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDE1ICs1
OCwxNSBAQCBuYW1lc3BhY2UgU2l6ZXMgewogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc21hbGxN
YXggPSAxICoga0I7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXNrU2l6ZUNsYXNzTWF4ID0g
NTEyOwogCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBsYXJnZUNodW5rU2l6ZSA9IDIgKiBNQjsK
LSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGxhcmdlQ2h1bmtNYXNrID0gfihsYXJnZUNodW5rU2l6
ZSAtIDF1bCk7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjaHVua1NpemUgPSAyICogTUI7Cisg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBjaHVua01hc2sgPSB+KGNodW5rU2l6ZSAtIDF1bCk7CiAK
ICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGxhcmdlQWxpZ25tZW50ID0gNjQ7CiAgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBsYXJnZU1pbiA9IHNtYWxsTWF4OwotICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgbGFyZ2VPYmplY3RNYXggPSBsYXJnZUNodW5rU2l6ZTsKKyAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IGxhcmdlT2JqZWN0TWF4ID0gY2h1bmtTaXplOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
bGFyZ2VNYXggPSBsYXJnZU9iamVjdE1heCAvIDI7CiAKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IHhMYXJnZUFsaWdubWVudCA9IGxhcmdlQ2h1bmtTaXplOworICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgeExhcmdlQWxpZ25tZW50ID0gY2h1bmtTaXplOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
eExhcmdlTWFzayA9IH4oeExhcmdlQWxpZ25tZW50IC0gMSk7CiAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCB4TGFyZ2VNYXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0geExh
cmdlQWxpZ25tZW50OyAvLyBNYWtlIHN1cmUgdGhhdCByb3VuZGluZyB1cCB0byB4TGFyZ2VBbGln
bm1lbnQgZG9lcyBub3Qgb3ZlcmZsb3cuCiAKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
U21hbGxBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L1ZNSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAu
Y3BwCShyZXZpc2lvbiAxOTg2NzUpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE2ICszNSwxNiBAQCBWTUhlYXA6OlZNSGVhcCgpCiB7
CiB9CiAKLUxhcmdlT2JqZWN0IFZNSGVhcDo6YWxsb2NhdGVMYXJnZUNodW5rKHN0ZDo6bG9ja19n
dWFyZDxTdGF0aWNNdXRleD4mIGxvY2spCitMYXJnZU9iamVjdCBWTUhlYXA6OmFsbG9jYXRlQ2h1
bmsoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaykKIHsKLSAgICBMYXJnZUNodW5r
KiBsYXJnZUNodW5rID0KLSAgICAgICAgbmV3ICh2bUFsbG9jYXRlKGxhcmdlQ2h1bmtTaXplLCBs
YXJnZUNodW5rU2l6ZSkpIExhcmdlQ2h1bmsobG9jayk7CisgICAgQ2h1bmsqIGNodW5rID0KKyAg
ICAgICAgbmV3ICh2bUFsbG9jYXRlKGNodW5rU2l6ZSwgY2h1bmtTaXplKSkgQ2h1bmsobG9jayk7
CiAKICNpZiBCT1MoREFSV0lOKQotICAgIG1fem9uZS5hZGRMYXJnZUNodW5rKGxhcmdlQ2h1bmsp
OworICAgIG1fem9uZS5hZGRDaHVuayhjaHVuayk7CiAjZW5kaWYKIAotICAgIHJldHVybiBMYXJn
ZU9iamVjdChsYXJnZUNodW5rLT5iZWdpbigpKTsKKyAgICByZXR1cm4gTGFyZ2VPYmplY3QoY2h1
bmstPmJlZ2luKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCkluZGV4OiBTb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvVk1IZWFwLmgJKHJldmlzaW9uIDE5ODY3NSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvVk1IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDggQEAKICNkZWZpbmUgVk1I
ZWFwX2gKIAogI2luY2x1ZGUgIkFzeW5jVGFzay5oIgorI2luY2x1ZGUgIkNodW5rLmgiCiAjaW5j
bHVkZSAiRml4ZWRWZWN0b3IuaCIKLSNpbmNsdWRlICJMYXJnZUNodW5rLmgiCiAjaW5jbHVkZSAi
TGFyZ2VPYmplY3QuaCIKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1ZGUgIlNlZ3JlZ2F0ZWRG
cmVlTGlzdC5oIgpAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWFsbG9jYXRl
TGFyZ2VPYmplY3Qoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mLCBMYXJnZU9iamVjdCk7
CiAgICAgCiBwcml2YXRlOgotICAgIExhcmdlT2JqZWN0IGFsbG9jYXRlTGFyZ2VDaHVuayhzdGQ6
OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jik7CisgICAgTGFyZ2VPYmplY3QgYWxsb2NhdGVDaHVu
ayhzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jik7CiAKICAgICBTZWdyZWdhdGVkRnJlZUxp
c3QgbV9sYXJnZU9iamVjdHM7CiAKQEAgLTY5LDcgKzY5LDcgQEAgaW5saW5lIExhcmdlT2JqZWN0
IFZNSGVhcDo6YWxsb2NhdGVMYXJnZQogICAgICAgICByZXR1cm4gbGFyZ2VPYmplY3Q7CiAKICAg
ICBCQVNTRVJUKHNpemUgPD0gbGFyZ2VNYXgpOwotICAgIHJldHVybiBhbGxvY2F0ZUxhcmdlQ2h1
bmsobG9jayk7CisgICAgcmV0dXJuIGFsbG9jYXRlQ2h1bmsobG9jayk7CiB9CiAKIGlubGluZSBM
YXJnZU9iamVjdCBWTUhlYXA6OmFsbG9jYXRlTGFyZ2VPYmplY3Qoc3RkOjpsb2NrX2d1YXJkPFN0
YXRpY011dGV4PiYgbG9jaywgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUsIHNpemVfdCB1
bmFsaWduZWRTaXplKQpAQCAtNzgsNyArNzgsNyBAQCBpbmxpbmUgTGFyZ2VPYmplY3QgVk1IZWFw
OjphbGxvY2F0ZUxhcmdlCiAgICAgICAgIHJldHVybiBsYXJnZU9iamVjdDsKIAogICAgIEJBU1NF
UlQodW5hbGlnbmVkU2l6ZSA8PSBsYXJnZU1heCk7Ci0gICAgcmV0dXJuIGFsbG9jYXRlTGFyZ2VD
aHVuayhsb2NrKTsKKyAgICByZXR1cm4gYWxsb2NhdGVDaHVuayhsb2NrKTsKIH0KIAogaW5saW5l
IHZvaWQgVk1IZWFwOjpkZWFsbG9jYXRlTGFyZ2VPYmplY3Qoc3RkOjp1bmlxdWVfbG9jazxTdGF0
aWNNdXRleD4mIGxvY2ssIExhcmdlT2JqZWN0IGxhcmdlT2JqZWN0KQpJbmRleDogU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9ab25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL1pvbmUuY3BwCShyZXZpc2lvbiAxOTg2NzUpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L1pvbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw4ICs4OCw4IEBAIHN0YXRpYyBzaXplX3Qg
em9uZVNpemUobWFsbG9jX3pvbmVfdCosIGMKIHN0YXRpYyBrZXJuX3JldHVybl90IGVudW1lcmF0
b3IodGFza190IHRhc2ssIHZvaWQqIGNvbnRleHQsIHVuc2lnbmVkIHR5cGVfbWFzaywgdm1fYWRk
cmVzc190IHpvbmVfYWRkcmVzcywgbWVtb3J5X3JlYWRlcl90IHJlYWRlciwgdm1fcmFuZ2VfcmVj
b3JkZXJfdCByZWNvcmRlcikKIHsKICAgICBab25lIHJlbW90ZVpvbmUodGFzaywgcmVhZGVyLCB6
b25lX2FkZHJlc3MpOwotICAgIGZvciAoYXV0byogbGFyZ2VDaHVuayA6IHJlbW90ZVpvbmUubGFy
Z2VDaHVua3MoKSkgewotICAgICAgICB2bV9yYW5nZV90IHJhbmdlID0geyByZWludGVycHJldF9j
YXN0PHZtX2FkZHJlc3NfdD4obGFyZ2VDaHVuayksIGxhcmdlQ2h1bmtTaXplIH07CisgICAgZm9y
IChhdXRvKiBjaHVuayA6IHJlbW90ZVpvbmUuY2h1bmtzKCkpIHsKKyAgICAgICAgdm1fcmFuZ2Vf
dCByYW5nZSA9IHsgcmVpbnRlcnByZXRfY2FzdDx2bV9hZGRyZXNzX3Q+KGNodW5rKSwgY2h1bmtT
aXplIH07CiAKICAgICAgICAgaWYgKCh0eXBlX21hc2sgJiBNQUxMT0NfUFRSX1JFR0lPTl9SQU5H
RV9UWVBFKSkKICAgICAgICAgICAgICgqcmVjb3JkZXIpKHRhc2ssIGNvbnRleHQsIE1BTExPQ19Q
VFJfUkVHSU9OX1JBTkdFX1RZUEUsICZyYW5nZSwgMSk7CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL1pvbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUu
aAkocmV2aXNpb24gMTk4Njc1KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25lLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIGJtYWxsb2MgewogCi1j
bGFzcyBMYXJnZUNodW5rOworY2xhc3MgQ2h1bms7CiAKIGNsYXNzIFpvbmUgOiBwdWJsaWMgbWFs
bG9jX3pvbmVfdCB7CiBwdWJsaWM6CkBAIC00MSwzMCArNDEsMzAgQEAgcHVibGljOgogICAgIFpv
bmUoKTsKICAgICBab25lKHRhc2tfdCwgbWVtb3J5X3JlYWRlcl90LCB2bV9hZGRyZXNzX3QpOwog
Ci0gICAgdm9pZCBhZGRMYXJnZUNodW5rKExhcmdlQ2h1bmsqKTsKLSAgICBGaXhlZFZlY3RvcjxM
YXJnZUNodW5rKiwgY2FwYWNpdHk+JiBsYXJnZUNodW5rcygpIHsgcmV0dXJuIG1fbGFyZ2VDaHVu
a3M7IH0KKyAgICB2b2lkIGFkZENodW5rKENodW5rKik7CisgICAgRml4ZWRWZWN0b3I8Q2h1bmsq
LCBjYXBhY2l0eT4mIGNodW5rcygpIHsgcmV0dXJuIG1fY2h1bmtzOyB9CiAgICAgCiBwcml2YXRl
OgogICAgIC8vIFRoaXMgdmVjdG9yIGhhcyB0d28gcHVycG9zZXM6Ci0gICAgLy8gICAgICgxKSBJ
dCBzdG9yZXMgdGhlIGxpc3Qgb2YgTGFyZ2VDaHVua3Mgc28gdGhhdCB3ZSBjYW4gZW51bWVyYXRl
Ci0gICAgLy8gICAgICAgICBlYWNoIExhcmdlQ2h1bmsgYW5kIHJlcXVlc3QgdGhhdCBpdCBiZSBz
Y2FubmVkIGlmIHJlYWNoYWJsZS4KLSAgICAvLyAgICAgKDIpIEl0IHJvb3RzIGEgcG9pbnRlciB0
byBlYWNoIExhcmdlQ2h1bmsgaW4gYSBnbG9iYWwgbm9uLW1hbGxvYwotICAgIC8vICAgICAgICAg
Vk0gcmVnaW9uLCBtYWtpbmcgZWFjaCBMYXJnZUNodW5rIGFwcGVhciByZWFjaGFibGUsIGFuZCB0
aGVyZWZvcmUKKyAgICAvLyAgICAgKDEpIEl0IHN0b3JlcyB0aGUgbGlzdCBvZiBDaHVua3Mgc28g
dGhhdCB3ZSBjYW4gZW51bWVyYXRlCisgICAgLy8gICAgICAgICBlYWNoIENodW5rIGFuZCByZXF1
ZXN0IHRoYXQgaXQgYmUgc2Nhbm5lZCBpZiByZWFjaGFibGUuCisgICAgLy8gICAgICgyKSBJdCBy
b290cyBhIHBvaW50ZXIgdG8gZWFjaCBDaHVuayBpbiBhIGdsb2JhbCBub24tbWFsbG9jCisgICAg
Ly8gICAgICAgICBWTSByZWdpb24sIG1ha2luZyBlYWNoIENodW5rIGFwcGVhciByZWFjaGFibGUs
IGFuZCB0aGVyZWZvcmUKICAgICAvLyAgICAgICAgIGVuc3VyaW5nIHRoYXQgdGhlIGxlYWtzIHRv
b2wgd2lsbCBzY2FuIGl0LiAoVGhlIGxlYWtzIHRvb2wKICAgICAvLyAgICAgICAgIGNvbnNlcnZh
dGl2ZWx5IHNjYW5zIGFsbCB3cml0ZWFibGUgVk0gcmVnaW9ucyB0aGF0IGFyZSBub3QgbWFsbG9j
CiAgICAgLy8gICAgICAgICByZWdpb25zLCBhbmQgdGhlbiBzY2FucyBtYWxsb2MgcmVnaW9ucyB1
c2luZyB0aGUgaW50cm9zcGVjdGlvbiBBUEkuKQogICAgIC8vIFRoaXMgcHJldmVudHMgdGhlIGxl
YWtzIHRvb2wgZnJvbSByZXBvcnRpbmcgZmFsc2UgcG9zaXRpdmUgbGVha3MgZm9yCiAgICAgLy8g
b2JqZWN0cyBwb2ludGVkIHRvIGZyb20gYm1hbGxvYyBtZW1vcnkgLS0gdGhvdWdoIGl0IGFsc28g
cHJldmVudHMgdGhlCiAgICAgLy8gbGVha3MgdG9vbCBmcm9tIGZpbmRpbmcgYW55IGxlYWtzIGlu
IGJtYWxsb2MgbWVtb3J5LgotICAgIEZpeGVkVmVjdG9yPExhcmdlQ2h1bmsqLCBjYXBhY2l0eT4g
bV9sYXJnZUNodW5rczsKKyAgICBGaXhlZFZlY3RvcjxDaHVuayosIGNhcGFjaXR5PiBtX2NodW5r
czsKIH07CiAKLWlubGluZSB2b2lkIFpvbmU6OmFkZExhcmdlQ2h1bmsoTGFyZ2VDaHVuayogbGFy
Z2VDaHVuaykKK2lubGluZSB2b2lkIFpvbmU6OmFkZENodW5rKENodW5rKiBjaHVuaykKIHsKLSAg
ICBpZiAobV9sYXJnZUNodW5rcy5zaXplKCkgPT0gbV9sYXJnZUNodW5rcy5jYXBhY2l0eSgpKQor
ICAgIGlmIChtX2NodW5rcy5zaXplKCkgPT0gbV9jaHVua3MuY2FwYWNpdHkoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIG1fbGFyZ2VDaHVua3MucHVzaChsYXJnZUNodW5rKTsKKyAgICBt
X2NodW5rcy5wdXNoKGNodW5rKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwo=
</data>
<flag name="review"
          id="299324"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>