<?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>280039</bug_id>
          
          <creation_ts>2024-09-19 20:31:41 -0700</creation_ts>
          <short_desc>[LFC][Integration] Always resolve margin/padding values (BoxGeometryUpdater)</short_desc>
          <delta_ts>2024-09-23 06:56: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>Layout and Rendering</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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2061730</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2024-09-19 20:31:41 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2061731</commentid>
    <comment_count>1</comment_count>
      <attachid>472610</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-09-19 20:38:39 -0700</bug_when>
    <thetext>Created attachment 472610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2061811</commentid>
    <comment_count>2</comment_count>
      <attachid>472611</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-09-20 05:51:10 -0700</bug_when>
    <thetext>Created attachment 472611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2061828</commentid>
    <comment_count>3</comment_count>
      <attachid>472613</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-09-20 07:10:20 -0700</bug_when>
    <thetext>Created attachment 472613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2061915</commentid>
    <comment_count>4</comment_count>
      <attachid>472617</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-09-20 12:46:37 -0700</bug_when>
    <thetext>Created attachment 472617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2062114</commentid>
    <comment_count>5</comment_count>
      <attachid>472624</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-09-21 13:26:36 -0700</bug_when>
    <thetext>Created attachment 472624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2062118</commentid>
    <comment_count>6</comment_count>
      <attachid>472625</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-09-21 14:15:46 -0700</bug_when>
    <thetext>Created attachment 472625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2062145</commentid>
    <comment_count>7</comment_count>
      <attachid>472626</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-09-21 20:24:25 -0700</bug_when>
    <thetext>Created attachment 472626
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2062193</commentid>
    <comment_count>8</comment_count>
      <attachid>472631</attachid>
    <who name="alan">zalan</who>
    <bug_when>2024-09-22 08:57:16 -0700</bug_when>
    <thetext>Created attachment 472631
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2062323</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-09-23 06:55:13 -0700</bug_when>
    <thetext>Committed 284074@main (e20aa5ee8e8a): &lt;https://commits.webkit.org/284074@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 472631.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2062324</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-09-23 06:56:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/136496744&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>472610</attachid>
            <date>2024-09-19 20:38:39 -0700</date>
            <delta_ts>2024-09-20 05:51:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-280039-20240919203839.patch</filename>
            <type>text/plain</type>
            <size>26590</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBmNDc5ZjE4ZWQxMGY1ZGEyYzg4NjE1MGIxOTcwMjYyNjkwNjg4MGM2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMTkgU2VwIDIwMjQgMjA6MzE6NDkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbTEZDXVtJ
bnRlZ3JhdGlvbl0gQWx3YXlzIHJlc29sdmUgbWFyZ2luL3BhZGRpbmcgdmFsdWVzCiAoQm94R2Vv
bWV0cnlVcGRhdGVyKSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjgw
MDM5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRoaXMgaXMgaW4gcHJlcGFyYXRpb24g
Zm9yIHVzaW5nIEJveEdlb21ldHJ5VXBkYXRlciBmcm9tIEZGQy4KClVwIHVudGlsIHJ1bm5pbmcg
cmVuZGVyIGxheW91dCBfYmVmb3JlXyBMRkMgbGF5b3V0IHRoZXJlIHdhcyBhbHdheXMgdmFsaWQg
bWFyZ2luL3BhZGRpbmcgdmFsdWVzCm9uIHRoZSByZW5kZXJlcnMgKHNpbmNlIHRoZXkgd2VyZSBj
b21wdXRlZCBkdXJpbmcgdGhlaXIgbGF5b3V0KS4KSG93ZXZlciBub3cgdGhhdCB3ZSBkb24ndCBu
ZWNlc3NhcmlseSBydW4gbGF5b3V0IGJlZm9yZSBlbnRlcmluZyBMRkMsCkJveEdlb21ldHJ5VXBk
YXRlciBtYXkgaG9sZCBzdGFsZSB2YWx1ZXMuCkl0IGdldHMgY29ycmVjdGVkIHRocm91Z2ggbGF5
b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94IGxhdGVyIGJ1dCBmb3IgYSBwZXJpb2Qgb2Yg
dGltZSBCb3hHZW9tZXRyeSBoYXMgaW5jb3JyZWN0IHZhbHVlcy4KCkluIGNhc2Ugb2YgRkZDIHRo
b3VnaCwgd2UgbmV2ZXIgcnVuIGxheW91dCBvbiBmbGV4IGl0ZW1zIHVwZnJvbnQsIGFuZCB3ZSBj
ZXJ0YWlubHkgbmVlZCBtYXJnaW4vcGFkZGluZyAoYm9yZGVyKSB2YWx1ZXMKYmVmb3JlIGluaXRp
YXRpbmcgbGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94IGNhbGxzIG9uIGZsZXggaXRl
bXMuIFNvIGxldCdzIGNvbXB1dGUgdGhlc2UgdmFsdWVzIGluIEJveEdlb21ldHJ5VXBkYXRlcgoo
dGhpcyB3aWxsIGdldCBhIGJpdCBtb3JlIGNvbXBsaWNhdGVkIHdpdGggQkZDIHdpdGggbWFyZ2lu
IGNvbGxhcHNpbmcvdHJpbW1pbmcpCgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LmNwcDoKKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpsYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3gpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRp
b25Cb3hHZW9tZXRyeVVwZGF0ZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OnVz
ZWRWYWx1ZU9yWmVybyk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94R2VvbWV0cnlV
cGRhdGVyOjp1cGRhdGVMaXN0TWFya2VyRGltZW5zaW9ucyk6CihXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6aG9yaXpvbnRhbExvZ2ljYWxNYXJnaW4pOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OmxvZ2ljYWxCb3JkZXIpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OmxvZ2lj
YWxQYWRkaW5nKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hHZW9tZXRyeVVwZGF0
ZXI6OnVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OkJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlSW5saW5lQm94RGltZW5zaW9ucyk6CihXZWJD
b3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94R2VvbWV0cnlVcGRhdGVyOjpzZXRHZW9tZXRyaWVz
Rm9yTGF5b3V0KToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hHZW9tZXRyeVVwZGF0
ZXI6OnNldEdlb21ldHJpZXNGb3JJbnRyaW5zaWNXaWR0aCk6CihXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6Qm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWlu
dHMpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveEdlb21ldHJ5VXBkYXRlcjo6c2V0
R2VvbWV0cnlBZnRlckludGVncmF0aW9uTGF5b3V0KToKKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUJveEdlb21ldHJ5KToKKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpmaXhlZFZhbHVlT3JaZXJvKTogRGVsZXRlZC4KKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUdlb21ldHJ5QWZ0ZXJM
YXlvdXQpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxp
bmUvTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuaDoKKiBTb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5j
cHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6dXBkYXRlSW5saW5l
Q29udGVudERpbWVuc2lvbnMpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9p
bmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0Lmg6CiogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CihXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6Omxh
eW91dElubGluZUNvbnRlbnQpOgotLS0KIC4uLnlvdXRJbnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250
ZXh0TGF5b3V0LmNwcCB8ICAzICstCiAuLi4vTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVw
ZGF0ZXIuY3BwICAgfCA5MCArKysrKysrKysrLS0tLS0tLS0tCiAuLi4vTGF5b3V0SW50ZWdyYXRp
b25Cb3hHZW9tZXRyeVVwZGF0ZXIuaCAgICAgfCAxNSArKy0tCiAuLi4vaW5saW5lL0xheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5jcHAgICAgfCAgNCArLQogLi4uL2lubGluZS9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuaCAgICAgIHwgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwICB8ICAyICstCiA2IGZpbGVzIGNoYW5nZWQsIDYzIGluc2Vy
dGlvbnMoKyksIDUzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LmNwcAppbmRleCA5NmI5ZWYzZGIwMjkuLjI3YTk1ZWUx
NDZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250ZXh0
TGF5b3V0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9u
Rm9ybWF0dGluZ0NvbnRleHRMYXlvdXQuaCIKIAogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9u
Qm94R2VvbWV0cnlVcGRhdGVyLmgiCisjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRl
ICJSZW5kZXJCb3guaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgsNyBAQCB2
b2lkIGxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveChjb25zdCBMYXlvdXQ6OkVsZW1l
bnRCb3gmIGJveCwgc3RkOjpvcHRpbwogICAgICAgICByZW5kZXJlci5jbGVhck92ZXJyaWRpbmdM
b2dpY2FsV2lkdGhMZW5ndGgoKTsKIAogICAgIGF1dG8gdXBkYXRlciA9IEJveEdlb21ldHJ5VXBk
YXRlciB7IGxheW91dFN0YXRlIH07Ci0gICAgdXBkYXRlci51cGRhdGVHZW9tZXRyeUFmdGVyTGF5
b3V0KGJveCk7CisgICAgdXBkYXRlci5zZXRHZW9tZXRyeUFmdGVySW50ZWdyYXRpb25MYXlvdXQo
Ym94LCB3aWR0aENvbnN0cmFpbnQudmFsdWVfb3IocmVuZGVyZXIuY29udGFpbmluZ0Jsb2NrKCkt
PmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpKSk7CiB9CiAKIExheW91dFVuaXQgZm9ybWF0dGluZ0Nv
bnRleHRSb290TG9naWNhbFdpZHRoRm9yVHlwZShjb25zdCBMYXlvdXQ6OkVsZW1lbnRCb3gmIGJv
eCwgTG9naWNhbFdpZHRoVHlwZSBsb2dpY2FsV2lkdGhUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdl
b21ldHJ5VXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5s
aW5lL0xheW91dEludGVncmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmNwcAppbmRleCBlNjlkOTVj
M2Q1ZDAuLjE2MGY1YWFlNmE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRl
Z3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5jcHAKQEAgLTU1LDkgKzU1LDE2IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCi1zdGF0aWMgTGF5
b3V0VW5pdCBmaXhlZFZhbHVlT3JaZXJvKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQorCitzdGF0aWMg
TGF5b3V0VW5pdCB1c2VkVmFsdWVPclplcm8oY29uc3QgTGVuZ3RoJiBsZW5ndGgsIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgpCiB7Ci0gICAgcmV0dXJuIExheW91dFVu
aXQgeyBsZW5ndGguaXNGaXhlZCgpID8gbGVuZ3RoLnZhbHVlKCkgOiAwLmYgfTsKKyAgICBpZiAo
bGVuZ3RoLmlzRml4ZWQoKSkKKyAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBsZW5ndGgudmFs
dWUoKSB9OworCisgICAgaWYgKGxlbmd0aC5pc0F1dG8oKSB8fCAhYXZhaWxhYmxlV2lkdGgpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKGxl
bmd0aCwgKmF2YWlsYWJsZVdpZHRoKTsKIH0KIAogQm94R2VvbWV0cnlVcGRhdGVyOjpCb3hHZW9t
ZXRyeVVwZGF0ZXIoQm94VHJlZSYgYm94VHJlZSwgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhdGUpCkBAIC03MSw5ICs3OCw5IEBAIEJveEdlb21ldHJ5VXBkYXRlcjo6Qm94R2VvbWV0cnlV
cGRhdGVyKExheW91dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKQogewogfQogCi12b2lkIEJv
eEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMoY29uc3QgUmVuZGVy
TGlzdE1hcmtlciYgbGlzdE1hcmtlciwgc3RkOjpvcHRpb25hbDxMYXlvdXQ6OkludHJpbnNpY1dp
ZHRoTW9kZT4gaW50cmluc2ljV2lkdGhNb2RlKQordm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVw
ZGF0ZUxpc3RNYXJrZXJEaW1lbnNpb25zKGNvbnN0IFJlbmRlckxpc3RNYXJrZXImIGxpc3RNYXJr
ZXIsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+IGludHJpbnNpY1dpZHRoTW9kZSkKIHsKLSAg
ICB1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKGxpc3RNYXJrZXIsIGludHJpbnNpY1dpZHRoTW9k
ZSk7CisgICAgdXBkYXRlTGF5b3V0Qm94RGltZW5zaW9ucyhsaXN0TWFya2VyLCBhdmFpbGFibGVX
aWR0aCwgaW50cmluc2ljV2lkdGhNb2RlKTsKICAgICBpZiAoaW50cmluc2ljV2lkdGhNb2RlKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTEzMywyMCArMTQwLDE5IEBAIHN0YXRpYyBpbmxpbmUgTGF5
b3V0VW5pdCBjb250ZW50TG9naWNhbEhlaWdodEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckJveCYg
cmVuZGVyCiAgICAgcmV0dXJuIHJlbmRlcmVyLnBhcmVudCgpLT5zdHlsZSgpLmlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPyByZW5kZXJlci5jb250ZW50SGVpZ2h0KCkgOiByZW5kZXJlci5jb250
ZW50V2lkdGgoKTsKIH0KIAotZW51bSBjbGFzcyBVc2VDb21wdXRlZFZhbHVlcyA6IGJvb2wgeyBO
bywgWWVzIH07Ci1zdGF0aWMgaW5saW5lIExheW91dDo6Qm94R2VvbWV0cnk6Okhvcml6b250YWxF
ZGdlcyBob3Jpem9udGFsTG9naWNhbE1hcmdpbihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYg
cmVuZGVyZXIsIGJvb2wgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYm9vbCBpc0hvcml6
b250YWxXcml0aW5nTW9kZSwgVXNlQ29tcHV0ZWRWYWx1ZXMgdXNlQ29tcHV0ZWRWYWx1ZXMgPSBV
c2VDb21wdXRlZFZhbHVlczo6Tm8sIGJvb2wgcmV0YWluTWFyZ2luU3RhcnQgPSB0cnVlLCBib29s
IHJldGFpbk1hcmdpbkVuZCA9IHRydWUpCitzdGF0aWMgaW5saW5lIExheW91dDo6Qm94R2VvbWV0
cnk6Okhvcml6b250YWxFZGdlcyBob3Jpem9udGFsTG9naWNhbE1hcmdpbihjb25zdCBSZW5kZXJC
b3hNb2RlbE9iamVjdCYgcmVuZGVyZXIsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxh
YmxlV2lkdGgsIGJvb2wgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYm9vbCBpc0hvcml6
b250YWxXcml0aW5nTW9kZSwgYm9vbCByZXRhaW5NYXJnaW5TdGFydCA9IHRydWUsIGJvb2wgcmV0
YWluTWFyZ2luRW5kID0gdHJ1ZSkKIHsKICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxl
KCk7Ci0gICAgYXV0byBtYXJnaW5MZWZ0ID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0
ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIubWFyZ2luTGVmdCgpIDogZml4ZWRWYWx1ZU9yWmVybyhz
dHlsZS5tYXJnaW5MZWZ0KCkpOwotICAgIGF1dG8gbWFyZ2luUmlnaHQgPSB1c2VDb21wdXRlZFZh
bHVlcyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5tYXJnaW5SaWdodCgpIDog
Zml4ZWRWYWx1ZU9yWmVybyhzdHlsZS5tYXJnaW5SaWdodCgpKTsKKyAgICBhdXRvIG1hcmdpbkxl
ZnQgPSB1c2VkVmFsdWVPclplcm8oc3R5bGUubWFyZ2luTGVmdCgpLCBhdmFpbGFibGVXaWR0aCk7
CisgICAgYXV0byBtYXJnaW5SaWdodCA9IHVzZWRWYWx1ZU9yWmVybyhzdHlsZS5tYXJnaW5SaWdo
dCgpLCBhdmFpbGFibGVXaWR0aCk7CiAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKSB7
CiAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uKQogICAgICAgICAgICAg
cmV0dXJuIHsgcmV0YWluTWFyZ2luU3RhcnQgPyBtYXJnaW5MZWZ0IDogMF9sdSwgcmV0YWluTWFy
Z2luRW5kID8gbWFyZ2luUmlnaHQgOiAwX2x1IH07CiAgICAgICAgIHJldHVybiB7IHJldGFpbk1h
cmdpblN0YXJ0ID8gbWFyZ2luUmlnaHQgOiAwX2x1LCByZXRhaW5NYXJnaW5FbmQgPyBtYXJnaW5M
ZWZ0IDogMF9sdSB9OwogICAgIH0KIAotICAgIGF1dG8gbWFyZ2luVG9wID0gdXNlQ29tcHV0ZWRW
YWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIubWFyZ2luVG9wKCkgOiBm
aXhlZFZhbHVlT3JaZXJvKHN0eWxlLm1hcmdpblRvcCgpKTsKLSAgICBhdXRvIG1hcmdpbkJvdHRv
bSA9IHVzZUNvbXB1dGVkVmFsdWVzID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVy
Lm1hcmdpbkJvdHRvbSgpIDogZml4ZWRWYWx1ZU9yWmVybyhzdHlsZS5tYXJnaW5Cb3R0b20oKSk7
CisgICAgYXV0byBtYXJnaW5Ub3AgPSB1c2VkVmFsdWVPclplcm8oc3R5bGUubWFyZ2luVG9wKCks
IGF2YWlsYWJsZVdpZHRoKTsKKyAgICBhdXRvIG1hcmdpbkJvdHRvbSA9IHVzZWRWYWx1ZU9yWmVy
byhzdHlsZS5tYXJnaW5Cb3R0b20oKSwgYXZhaWxhYmxlV2lkdGgpOwogICAgIGlmIChpc0xlZnRU
b1JpZ2h0SW5saW5lRGlyZWN0aW9uKQogICAgICAgICByZXR1cm4geyByZXRhaW5NYXJnaW5TdGFy
dCA/IG1hcmdpblRvcCA6IDBfbHUsIHJldGFpbk1hcmdpbkVuZCA/IG1hcmdpbkJvdHRvbSA6IDBf
bHUgfTsKICAgICByZXR1cm4geyByZXRhaW5NYXJnaW5TdGFydCA/IG1hcmdpbkJvdHRvbSA6IDBf
bHUsIHJldGFpbk1hcmdpbkVuZCA/IG1hcmdpblRvcCA6IDBfbHUgfTsKQEAgLTE2OCwxMyArMTc0
LDEzIEBAIHN0YXRpYyBpbmxpbmUgTGF5b3V0OjpCb3hHZW9tZXRyeTo6VmVydGljYWxFZGdlcyB2
ZXJ0aWNhbExvZ2ljYWxNYXJnaW4oY29uc3QgUmVuCiB9CiAKIGVudW0gY2xhc3MgSXNQYXJ0T2ZG
b3JtYXR0aW5nQ29udGV4dCA6IGJvb2wgeyBObywgWWVzIH07Ci1zdGF0aWMgaW5saW5lIExheW91
dDo6Qm94R2VvbWV0cnk6OkVkZ2VzIGxvZ2ljYWxCb3JkZXIoY29uc3QgUmVuZGVyQm94TW9kZWxP
YmplY3QmIHJlbmRlcmVyLCBib29sIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIEZsb3dE
aXJlY3Rpb24gYmxvY2tGbG93RGlyZWN0aW9uLCBVc2VDb21wdXRlZFZhbHVlcyB1c2VDb21wdXRl
ZFZhbHVlcyA9IFVzZUNvbXB1dGVkVmFsdWVzOjpObywgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4
dCBpc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0ID0gSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6
Tm8sIGJvb2wgcmV0YWluQm9yZGVyU3RhcnQgPSB0cnVlLCBib29sIHJldGFpbkJvcmRlckVuZCA9
IHRydWUpCitzdGF0aWMgaW5saW5lIExheW91dDo6Qm94R2VvbWV0cnk6OkVkZ2VzIGxvZ2ljYWxC
b3JkZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyLCBib29sIGlzTGVmdFRv
UmlnaHRJbmxpbmVEaXJlY3Rpb24sIEZsb3dEaXJlY3Rpb24gYmxvY2tGbG93RGlyZWN0aW9uLCBJ
c1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0IGlzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgPSBJc1Bh
cnRPZkZvcm1hdHRpbmdDb250ZXh0OjpObywgYm9vbCByZXRhaW5Cb3JkZXJTdGFydCA9IHRydWUs
IGJvb2wgcmV0YWluQm9yZGVyRW5kID0gdHJ1ZSkKIHsKICAgICBhdXRvJiBzdHlsZSA9IHJlbmRl
cmVyLnN0eWxlKCk7Ci0gICAgYXV0byBib3JkZXJMZWZ0ID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0g
VXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIuYm9yZGVyTGVmdCgpIDogTGF5b3V0VW5p
dChzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSk7Ci0gICAgYXV0byBib3JkZXJSaWdodCA9IHVzZUNv
bXB1dGVkVmFsdWVzID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVyLmJvcmRlclJp
Z2h0KCkgOiBMYXlvdXRVbml0KHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSk7Ci0gICAgYXV0byBi
b3JkZXJUb3AgPSB1c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyBy
ZW5kZXJlci5ib3JkZXJUb3AoKSA6IExheW91dFVuaXQoc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSk7
Ci0gICAgYXV0byBib3JkZXJCb3R0b20gPSB1c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21wdXRl
ZFZhbHVlczo6Tm8gPyByZW5kZXJlci5ib3JkZXJCb3R0b20oKSA6IExheW91dFVuaXQoc3R5bGUu
Ym9yZGVyQm90dG9tV2lkdGgoKSk7CisgICAgYXV0byBib3JkZXJMZWZ0ID0gTGF5b3V0VW5pdCB7
IHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpIH07CisgICAgYXV0byBib3JkZXJSaWdodCA9IExheW91
dFVuaXQgeyBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCkgfTsKKyAgICBhdXRvIGJvcmRlclRvcCA9
IExheW91dFVuaXQgeyBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpIH07CisgICAgYXV0byBib3JkZXJC
b3R0b20gPSBMYXlvdXRVbml0IHsgc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSB9OwogCiAgICAg
aWYgKGJsb2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpUb3BUb0JvdHRvbSB8fCBi
bG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6Qm90dG9tVG9Ub3ApIHsKICAgICAg
ICAgaWYgKGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24pCkBAIC0xOTAsMTMgKzE5NiwxMyBA
QCBzdGF0aWMgaW5saW5lIExheW91dDo6Qm94R2VvbWV0cnk6OkVkZ2VzIGxvZ2ljYWxCb3JkZXIo
Y29uc3QgUmVuZGVyQm94TW9kZWxPYmplYwogICAgIHJldHVybiB7IHsgYm9yZGVyTG9naWNhbExl
ZnQsIGJvcmRlckxvZ2ljYWxSaWdodCB9LCB7IGJvcmRlckxvZ2ljYWxUb3AsIGJvcmRlckxvZ2lj
YWxCb3R0b20gfSB9OwogfQogCi1zdGF0aWMgaW5saW5lIExheW91dDo6Qm94R2VvbWV0cnk6OkVk
Z2VzIGxvZ2ljYWxQYWRkaW5nKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlciwg
Ym9vbCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBGbG93RGlyZWN0aW9uIGJsb2NrRmxv
d0RpcmVjdGlvbiwgVXNlQ29tcHV0ZWRWYWx1ZXMgdXNlQ29tcHV0ZWRWYWx1ZXMgPSBVc2VDb21w
dXRlZFZhbHVlczo6Tm8sIElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgaXNQYXJ0T2ZGb3JtYXR0
aW5nQ29udGV4dCA9IElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6Ok5vLCBib29sIHJldGFpblBh
ZGRpbmdTdGFydCA9IHRydWUsIGJvb2wgcmV0YWluUGFkZGluZ0VuZCA9IHRydWUpCitzdGF0aWMg
aW5saW5lIExheW91dDo6Qm94R2VvbWV0cnk6OkVkZ2VzIGxvZ2ljYWxQYWRkaW5nKGNvbnN0IFJl
bmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlciwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBh
dmFpbGFibGVXaWR0aCwgYm9vbCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBGbG93RGly
ZWN0aW9uIGJsb2NrRmxvd0RpcmVjdGlvbiwgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dCBpc1Bh
cnRPZkZvcm1hdHRpbmdDb250ZXh0ID0gSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6Tm8sIGJv
b2wgcmV0YWluUGFkZGluZ1N0YXJ0ID0gdHJ1ZSwgYm9vbCByZXRhaW5QYWRkaW5nRW5kID0gdHJ1
ZSkKIHsKICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7Ci0gICAgYXV0byBwYWRk
aW5nTGVmdCA9IHVzZUNvbXB1dGVkVmFsdWVzID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJl
bmRlcmVyLnBhZGRpbmdMZWZ0KCkgOiBmaXhlZFZhbHVlT3JaZXJvKHN0eWxlLnBhZGRpbmdMZWZ0
KCkpOwotICAgIGF1dG8gcGFkZGluZ1JpZ2h0ID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29t
cHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIucGFkZGluZ1JpZ2h0KCkgOiBmaXhlZFZhbHVlT3Ja
ZXJvKHN0eWxlLnBhZGRpbmdSaWdodCgpKTsKLSAgICBhdXRvIHBhZGRpbmdUb3AgPSB1c2VDb21w
dXRlZFZhbHVlcyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5wYWRkaW5nVG9w
KCkgOiBmaXhlZFZhbHVlT3JaZXJvKHN0eWxlLnBhZGRpbmdUb3AoKSk7Ci0gICAgYXV0byBwYWRk
aW5nQm90dG9tID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8g
cmVuZGVyZXIucGFkZGluZ0JvdHRvbSgpIDogZml4ZWRWYWx1ZU9yWmVybyhzdHlsZS5wYWRkaW5n
Qm90dG9tKCkpOworICAgIGF1dG8gcGFkZGluZ0xlZnQgPSB1c2VkVmFsdWVPclplcm8oc3R5bGUu
cGFkZGluZ0xlZnQoKSwgYXZhaWxhYmxlV2lkdGgpOworICAgIGF1dG8gcGFkZGluZ1JpZ2h0ID0g
dXNlZFZhbHVlT3JaZXJvKHN0eWxlLnBhZGRpbmdSaWdodCgpLCBhdmFpbGFibGVXaWR0aCk7Cisg
ICAgYXV0byBwYWRkaW5nVG9wID0gdXNlZFZhbHVlT3JaZXJvKHN0eWxlLnBhZGRpbmdUb3AoKSwg
YXZhaWxhYmxlV2lkdGgpOworICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IHVzZWRWYWx1ZU9yWmVy
byhzdHlsZS5wYWRkaW5nQm90dG9tKCksIGF2YWlsYWJsZVdpZHRoKTsKIAogICAgIGlmIChibG9j
a0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6VG9wVG9Cb3R0b20gfHwgYmxvY2tGbG93
RGlyZWN0aW9uID09IEZsb3dEaXJlY3Rpb246OkJvdHRvbVRvVG9wKSB7CiAgICAgICAgIGlmIChp
c0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uKQpAQCAtMjIyLDcgKzIyOCw3IEBAIHN0YXRpYyBp
bmxpbmUgTGF5b3V0U2l6ZSBzY3JvbGxiYXJMb2dpY2FsU2l6ZShjb25zdCBSZW5kZXJCb3gmIHJl
bmRlcmVyKQogICAgIHJldHVybiB7IGhvcml6b250YWxTcGFjZVJlc2VydmVkRm9yU2Nyb2xsYmFy
LCB2ZXJ0aWNhbFNwYWNlUmVzZXJ2ZWRGb3JTY3JvbGxiYXIgfTsKIH0KIAotdm9pZCBCb3hHZW9t
ZXRyeVVwZGF0ZXI6OnVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVyQm94JiBy
ZW5kZXJCb3gsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+IGludHJp
bnNpY1dpZHRoTW9kZSkKK3ZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVMYXlvdXRCb3hE
aW1lbnNpb25zKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyQm94LCBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGF2YWlsYWJsZVdpZHRoLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50cmluc2ljV2lk
dGhNb2RlPiBpbnRyaW5zaWNXaWR0aE1vZGUpCiB7CiAgICAgYXV0byYgbGF5b3V0Qm94ID0gY29u
c3RfY2FzdDxMYXlvdXQ6OkVsZW1lbnRCb3gmPigqcmVuZGVyQm94LmxheW91dEJveCgpKTsKICAg
ICBhdXRvIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24gPSByZW5kZXJCb3gucGFyZW50KCkt
PnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwpAQCAtMjMwLDkgKzIzNiw5IEBAIHZv
aWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKGNvbnN0IFJl
bmRlckJveCYgcmVuZGVyQm94LCBzCiAgICAgYXV0byBpc0hvcml6b250YWxXcml0aW5nTW9kZSA9
IGJsb2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpUb3BUb0JvdHRvbSB8fCBibG9j
a0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6Qm90dG9tVG9Ub3A7CiAKICAgICBhdXRv
JiBib3hHZW9tZXRyeSA9IGxheW91dFN0YXRlKCkuZW5zdXJlR2VvbWV0cnlGb3JCb3gobGF5b3V0
Qm94KTsKLSAgICBhdXRvIGlubGluZU1hcmdpbiA9IGhvcml6b250YWxMb2dpY2FsTWFyZ2luKHJl
bmRlckJveCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUsIGludHJpbnNpY1dpZHRoTW9kZSA/IFVzZUNvbXB1dGVkVmFsdWVzOjpZZXMgOiBVc2VD
b21wdXRlZFZhbHVlczo6Tm8pOwotICAgIGF1dG8gYm9yZGVyID0gbG9naWNhbEJvcmRlcihyZW5k
ZXJCb3gsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlvbiwg
aW50cmluc2ljV2lkdGhNb2RlID8gVXNlQ29tcHV0ZWRWYWx1ZXM6OlllcyA6IFVzZUNvbXB1dGVk
VmFsdWVzOjpObyk7Ci0gICAgYXV0byBwYWRkaW5nID0gbG9naWNhbFBhZGRpbmcocmVuZGVyQm94
LCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24sIGludHJp
bnNpY1dpZHRoTW9kZSA/IFVzZUNvbXB1dGVkVmFsdWVzOjpZZXMgOiBVc2VDb21wdXRlZFZhbHVl
czo6Tm8pOworICAgIGF1dG8gaW5saW5lTWFyZ2luID0gaG9yaXpvbnRhbExvZ2ljYWxNYXJnaW4o
cmVuZGVyQm94LCBhdmFpbGFibGVXaWR0aCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwg
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUpOworICAgIGF1dG8gYm9yZGVyID0gbG9naWNhbEJvcmRl
cihyZW5kZXJCb3gsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVj
dGlvbik7CisgICAgYXV0byBwYWRkaW5nID0gbG9naWNhbFBhZGRpbmcocmVuZGVyQm94LCBhdmFp
bGFibGVXaWR0aCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0
aW9uKTsKICAgICBhdXRvIHNjcm9sbGJhclNpemUgPSBzY3JvbGxiYXJMb2dpY2FsU2l6ZShyZW5k
ZXJCb3gpOwogCiAgICAgaWYgKGludHJpbnNpY1dpZHRoTW9kZSkgewpAQCAtMzEwLDcgKzMxNiw3
IEBAIHZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVMaW5lQnJlYWtCb3hEaW1lbnNpb25z
KGNvbnN0IFJlbmRlckxpbmVCcmVhayYgbGluCiAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRl
bnRCb3hIZWlnaHQoeyB9KTsKIH0KIAotdm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUlu
bGluZUJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVySW5saW5lJiByZW5kZXJJbmxpbmUsIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+IGludHJpbnNpY1dpZHRoTW9kZSkK
K3ZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25zKGNvbnN0
IFJlbmRlcklubGluZSYgcmVuZGVySW5saW5lLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2
YWlsYWJsZVdpZHRoLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50cmluc2ljV2lkdGhNb2RlPiBp
bnRyaW5zaWNXaWR0aE1vZGUpCiB7CiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBsYXlvdXRTdGF0
ZSgpLmVuc3VyZUdlb21ldHJ5Rm9yQm94KCpyZW5kZXJJbmxpbmUubGF5b3V0Qm94KCkpOwogCkBA
IC0zMjIsOSArMzI4LDkgQEAgdm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUlubGluZUJv
eERpbWVuc2lvbnMoY29uc3QgUmVuZGVySW5saW5lJiByZW5kZXJJbmwKICAgICBhdXRvIGJsb2Nr
Rmxvd0RpcmVjdGlvbiA9IHdyaXRpbmdNb2RlVG9CbG9ja0Zsb3dEaXJlY3Rpb24ocmVuZGVySW5s
aW5lLnN0eWxlKCkud3JpdGluZ01vZGUoKSk7CiAgICAgYXV0byBpc0hvcml6b250YWxXcml0aW5n
TW9kZSA9IGJsb2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpUb3BUb0JvdHRvbSB8
fCBibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6Qm90dG9tVG9Ub3A7CiAKLSAg
ICBhdXRvIGlubGluZU1hcmdpbiA9IGhvcml6b250YWxMb2dpY2FsTWFyZ2luKHJlbmRlcklubGlu
ZSwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUs
IGludHJpbnNpY1dpZHRoTW9kZSA/IFVzZUNvbXB1dGVkVmFsdWVzOjpZZXMgOiBVc2VDb21wdXRl
ZFZhbHVlczo6Tm8sICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5kTWFyZ2luU3RhcnQs
ICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5kTWFyZ2luRW5kKTsKLSAgICBhdXRvIGJv
cmRlciA9IGxvZ2ljYWxCb3JkZXIocmVuZGVySW5saW5lLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGly
ZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24sIGludHJpbnNpY1dpZHRoTW9kZSA/IFVzZUNvbXB1
dGVkVmFsdWVzOjpZZXMgOiBVc2VDb21wdXRlZFZhbHVlczo6Tm8sIElzUGFydE9mRm9ybWF0dGlu
Z0NvbnRleHQ6OlllcywgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRNYXJnaW5TdGFy
dCwgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRNYXJnaW5FbmQpOwotICAgIGF1dG8g
cGFkZGluZyA9IGxvZ2ljYWxQYWRkaW5nKHJlbmRlcklubGluZSwgaXNMZWZ0VG9SaWdodElubGlu
ZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9uLCBpbnRyaW5zaWNXaWR0aE1vZGUgPyBVc2VD
b21wdXRlZFZhbHVlczo6WWVzIDogVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vLCBJc1BhcnRPZkZvcm1h
dHRpbmdDb250ZXh0OjpZZXMsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5kTWFyZ2lu
U3RhcnQsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5kTWFyZ2luRW5kKTsKKyAgICBh
dXRvIGlubGluZU1hcmdpbiA9IGhvcml6b250YWxMb2dpY2FsTWFyZ2luKHJlbmRlcklubGluZSwg
YXZhaWxhYmxlV2lkdGgsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlLCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGluZ0FuZE1hcmdpblN0YXJ0
LCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGluZ0FuZE1hcmdpbkVuZCk7CisgICAgYXV0byBi
b3JkZXIgPSBsb2dpY2FsQm9yZGVyKHJlbmRlcklubGluZSwgaXNMZWZ0VG9SaWdodElubGluZURp
cmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9uLCBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0OjpZ
ZXMsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5kTWFyZ2luU3RhcnQsICFzaG91bGRO
b3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5kTWFyZ2luRW5kKTsKKyAgICBhdXRvIHBhZGRpbmcgPSBs
b2dpY2FsUGFkZGluZyhyZW5kZXJJbmxpbmUsIGF2YWlsYWJsZVdpZHRoLCBpc0xlZnRUb1JpZ2h0
SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24sIElzUGFydE9mRm9ybWF0dGluZ0Nv
bnRleHQ6OlllcywgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRNYXJnaW5TdGFydCwg
IXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRNYXJnaW5FbmQpOwogCiAgICAgaWYgKGlu
dHJpbnNpY1dpZHRoTW9kZSkgewogICAgICAgICBib3hHZW9tZXRyeS5zZXRIb3Jpem9udGFsTWFy
Z2luKGlubGluZU1hcmdpbik7CkBAIC0zMzksNyArMzQ1LDcgQEAgdm9pZCBCb3hHZW9tZXRyeVVw
ZGF0ZXI6OnVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVySW5saW5lJiByZW5k
ZXJJbmwKICAgICBib3hHZW9tZXRyeS5zZXRQYWRkaW5nKHBhZGRpbmcpOwogfQogCi12b2lkIEJv
eEdlb21ldHJ5VXBkYXRlcjo6c2V0R2VvbWV0cmllc0ZvckxheW91dCgpCit2b2lkIEJveEdlb21l
dHJ5VXBkYXRlcjo6c2V0R2VvbWV0cmllc0ZvckxheW91dChMYXlvdXRVbml0IGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCkKIHsKICAgICBmb3IgKGF1dG8gd2Fsa2VyID0gSW5saW5lV2Fsa2VyKGRvd25j
YXN0PFJlbmRlckJsb2NrRmxvdz4oYm94VHJlZSgpLnJvb3RSZW5kZXJlcigpKSk7ICF3YWxrZXIu
YXRFbmQoKTsgd2Fsa2VyLmFkdmFuY2UoKSkgewogICAgICAgICBhdXRvJiByZW5kZXJlciA9ICp3
YWxrZXIuY3VycmVudCgpOwpAQCAtMzUwLDcgKzM1Niw3IEBAIHZvaWQgQm94R2VvbWV0cnlVcGRh
dGVyOjpzZXRHZW9tZXRyaWVzRm9yTGF5b3V0KCkKICAgICAgICAgaWYgKHJlbmRlcmVyLmlzRmxv
YXRpbmcoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHVwZGF0ZUdlb21ldHJ5
QWZ0ZXJMYXlvdXQoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpKTsKKyAgICAgICAg
dXBkYXRlQm94R2VvbWV0cnkoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpLCBhdmFp
bGFibGVMb2dpY2FsV2lkdGgpOwogICAgIH0KIH0KIApAQCAtMzY3LDE3ICszNzMsMTcgQEAgdm9p
ZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnNldEdlb21ldHJpZXNGb3JJbnRyaW5zaWNXaWR0aChMYXlv
dXQ6OkludHJpbnNpY1dpZHRoTW8KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChhdXRvKiByZW5kZXJJbmxpbmUgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW5s
aW5lPihyZW5kZXJlcikpIHsKLSAgICAgICAgICAgIHVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMo
KnJlbmRlcklubGluZSwgaW50cmluc2ljV2lkdGhNb2RlKTsKKyAgICAgICAgICAgIHVwZGF0ZUlu
bGluZUJveERpbWVuc2lvbnMoKnJlbmRlcklubGluZSwgeyB9LCBpbnRyaW5zaWNXaWR0aE1vZGUp
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGF1dG8qIHJl
bmRlckxpc3RNYXJrZXIgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyTGlzdE1hcmtlcj4ocmVuZGVy
ZXIpKSB7Ci0gICAgICAgICAgICB1cGRhdGVMaXN0TWFya2VyRGltZW5zaW9ucygqcmVuZGVyTGlz
dE1hcmtlciwgaW50cmluc2ljV2lkdGhNb2RlKTsKKyAgICAgICAgICAgIHVwZGF0ZUxpc3RNYXJr
ZXJEaW1lbnNpb25zKCpyZW5kZXJMaXN0TWFya2VyLCB7IH0sIGludHJpbnNpY1dpZHRoTW9kZSk7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoYXV0byogcmVu
ZGVyQm94ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIpKSB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGZsZXhpbmcgYm94ZXMuCiAgICAgICAgICAg
ICBBU1NFUlQocmVuZGVyQm94LT5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzRml4ZWQoKSk7Ci0g
ICAgICAgICAgICB1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKCpyZW5kZXJCb3gsIGludHJpbnNp
Y1dpZHRoTW9kZSk7CisgICAgICAgICAgICB1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKCpyZW5k
ZXJCb3gsIHsgfSwgaW50cmluc2ljV2lkdGhNb2RlKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAg
LTM4OSw4ICszOTUsOCBAQCBMYXlvdXQ6OkNvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCBCb3hH
ZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUlubGluZUNvbnRlbnRDb25zdAogICAgIGF1dG8gd3JpdGlu
Z01vZGUgPSByb290UmVuZGVyZXIuc3R5bGUoKS53cml0aW5nTW9kZSgpOwogICAgIGF1dG8gYmxv
Y2tGbG93RGlyZWN0aW9uID0gd3JpdGluZ01vZGVUb0Jsb2NrRmxvd0RpcmVjdGlvbih3cml0aW5n
TW9kZSk7CiAKLSAgICBhdXRvIHBhZGRpbmcgPSBsb2dpY2FsUGFkZGluZyhyb290UmVuZGVyZXIs
IGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlvbiwgVXNlQ29t
cHV0ZWRWYWx1ZXM6Ok5vLCBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0OjpObyk7Ci0gICAgYXV0
byBib3JkZXIgPSBsb2dpY2FsQm9yZGVyKHJvb3RSZW5kZXJlciwgaXNMZWZ0VG9SaWdodElubGlu
ZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9uLCBVc2VDb21wdXRlZFZhbHVlczo6Tm8sIElz
UGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6Ok5vKTsKKyAgICBhdXRvIHBhZGRpbmcgPSBsb2dpY2Fs
UGFkZGluZyhyb290UmVuZGVyZXIsIG1fYXZhaWxhYmxlV2lkdGgsIGlzTGVmdFRvUmlnaHRJbmxp
bmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlvbiwgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4
dDo6Tm8pOworICAgIGF1dG8gYm9yZGVyID0gbG9naWNhbEJvcmRlcihyb290UmVuZGVyZXIsIGlz
TGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlvbiwgSXNQYXJ0T2ZG
b3JtYXR0aW5nQ29udGV4dDo6Tm8pOwogICAgIGF1dG8gc2Nyb2xsYmFyU2l6ZSA9IHNjcm9sbGJh
ckxvZ2ljYWxTaXplKHJvb3RSZW5kZXJlcik7CiAgICAgYXV0byBzaG91bGRQbGFjZVZlcnRpY2Fs
U2Nyb2xsYmFyT25MZWZ0ID0gcm9vdFJlbmRlcmVyLnNob3VsZFBsYWNlVmVydGljYWxTY3JvbGxi
YXJPbkxlZnQoKTsKIApAQCAtNDA5LDcgKzQxNSw3IEBAIExheW91dDo6Q29uc3RyYWludHNGb3JJ
bmxpbmVDb250ZW50IEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlSW5saW5lQ29udGVudENvbnN0
CiAgICAgICAgIHJvb3RHZW9tZXRyeS5zZXRCb3JkZXIoYm9yZGVyKTsKICAgICAgICAgcm9vdEdl
b21ldHJ5LnNldEhvcml6b250YWxTcGFjZUZvclNjcm9sbGJhcihzY3JvbGxiYXJTaXplLndpZHRo
KCkpOwogICAgICAgICByb290R2VvbWV0cnkuc2V0VmVydGljYWxTcGFjZUZvclNjcm9sbGJhcihz
Y3JvbGxiYXJTaXplLmhlaWdodCgpKTsKLSAgICAgICAgcm9vdEdlb21ldHJ5LnNldEhvcml6b250
YWxNYXJnaW4oaG9yaXpvbnRhbExvZ2ljYWxNYXJnaW4ocm9vdFJlbmRlcmVyLCBpc0xlZnRUb1Jp
Z2h0SW5saW5lRGlyZWN0aW9uLCBXZWJDb3JlOjppc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0
aW5nTW9kZSksIFVzZUNvbXB1dGVkVmFsdWVzOjpObykpOworICAgICAgICByb290R2VvbWV0cnku
c2V0SG9yaXpvbnRhbE1hcmdpbihob3Jpem9udGFsTG9naWNhbE1hcmdpbihyb290UmVuZGVyZXIs
IG1fYXZhaWxhYmxlV2lkdGgsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIFdlYkNvcmU6
OmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSkpOwogICAgICAgICByb290R2Vv
bWV0cnkuc2V0VmVydGljYWxNYXJnaW4odmVydGljYWxMb2dpY2FsTWFyZ2luKHJvb3RSZW5kZXJl
ciwgYmxvY2tGbG93RGlyZWN0aW9uKSk7CiAgICAgfTsKICAgICBjcmVhdGVSb290R2VvbWV0cnlJ
Zk5lZWRlZCgpOwpAQCAtNDE3LDI0ICs0MjMsMjQgQEAgTGF5b3V0OjpDb25zdHJhaW50c0Zvcklu
bGluZUNvbnRlbnQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVJbmxpbmVDb250ZW50Q29uc3QK
ICAgICByZXR1cm4geyB7IGhvcml6b250YWxDb25zdHJhaW50cywgY29udGVudEJveFRvcCB9LCB2
aXN1YWxMZWZ0IH07CiB9CiAKLXZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVHZW9tZXRy
eUFmdGVyTGF5b3V0KGNvbnN0IExheW91dDo6RWxlbWVudEJveCYgYm94KQordm9pZCBCb3hHZW9t
ZXRyeVVwZGF0ZXI6OnNldEdlb21ldHJ5QWZ0ZXJJbnRlZ3JhdGlvbkxheW91dChjb25zdCBMYXlv
dXQ6OkVsZW1lbnRCb3gmIGJveCwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCkKIHsKLSAgICB1
cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KCpkeW5hbWljRG93bmNhc3Q8UmVuZGVyQm94Pihib3gu
cmVuZGVyZXJGb3JJbnRlZ3JhdGlvbigpKSk7CisgICAgdXBkYXRlQm94R2VvbWV0cnkoKmR5bmFt
aWNEb3duY2FzdDxSZW5kZXJCb3g+KGJveC5yZW5kZXJlckZvckludGVncmF0aW9uKCkpLCBhdmFp
bGFibGVXaWR0aCk7CiB9CiAKLXZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVHZW9tZXRy
eUFmdGVyTGF5b3V0KGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQordm9pZCBCb3hHZW9t
ZXRyeVVwZGF0ZXI6OnVwZGF0ZUJveEdlb21ldHJ5KGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKQogewogICAgIGlmIChpczxSZW5kZXJSZXBs
YWNlZD4ocmVuZGVyZXIpIHx8IGlzPFJlbmRlclRhYmxlPihyZW5kZXJlcikgfHwgaXM8UmVuZGVy
TGlzdEl0ZW0+KHJlbmRlcmVyKSB8fCBpczxSZW5kZXJCbG9jaz4ocmVuZGVyZXIpIHx8IGlzPFJl
bmRlckZyYW1lU2V0PihyZW5kZXJlcikpCi0gICAgICAgIHVwZGF0ZUxheW91dEJveERpbWVuc2lv
bnMoZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcikpOworICAgICAgICB1cGRhdGVMYXlvdXRC
b3hEaW1lbnNpb25zKGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIpLCBhdmFpbGFibGVXaWR0
aCk7CiAKICAgICBpZiAoYXV0byogcmVuZGVyTGlzdE1hcmtlciA9IGR5bmFtaWNEb3duY2FzdDxS
ZW5kZXJMaXN0TWFya2VyPihyZW5kZXJlcikpCi0gICAgICAgIHVwZGF0ZUxpc3RNYXJrZXJEaW1l
bnNpb25zKCpyZW5kZXJMaXN0TWFya2VyKTsKKyAgICAgICAgdXBkYXRlTGlzdE1hcmtlckRpbWVu
c2lvbnMoKnJlbmRlckxpc3RNYXJrZXIsIGF2YWlsYWJsZVdpZHRoKTsKIAogICAgIGlmIChhdXRv
KiByZW5kZXJMaW5lQnJlYWsgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyTGluZUJyZWFrPihyZW5k
ZXJlcikpCiAgICAgICAgIHVwZGF0ZUxpbmVCcmVha0JveERpbWVuc2lvbnMoKnJlbmRlckxpbmVC
cmVhayk7CiAKICAgICBpZiAoYXV0byogcmVuZGVySW5saW5lID0gZHluYW1pY0Rvd25jYXN0PFJl
bmRlcklubGluZT4ocmVuZGVyZXIpKQotICAgICAgICB1cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25z
KCpyZW5kZXJJbmxpbmUpOworICAgICAgICB1cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25zKCpyZW5k
ZXJJbmxpbmUsIGF2YWlsYWJsZVdpZHRoKTsKIH0KIAogY29uc3QgTGF5b3V0OjpFbGVtZW50Qm94
JiBCb3hHZW9tZXRyeVVwZGF0ZXI6OnJvb3RMYXlvdXRCb3goKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlv
bkJveEdlb21ldHJ5VXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5oCmluZGV4IGYwOTI1
M2RhNzY1Zi4uODI3MmU2NzAxZDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRl
Z3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5oCkBAIC00NywxOSArNDcsMjEgQEAgcHVibGljOgog
ICAgIEJveEdlb21ldHJ5VXBkYXRlcihCb3hUcmVlJiwgTGF5b3V0OjpMYXlvdXRTdGF0ZSYpOwog
ICAgIEJveEdlb21ldHJ5VXBkYXRlcihMYXlvdXQ6OkxheW91dFN0YXRlJik7CiAKLSAgICB2b2lk
IHNldEdlb21ldHJpZXNGb3JMYXlvdXQoKTsKKyAgICB2b2lkIHNldEdlb21ldHJpZXNGb3JMYXlv
dXQoTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAgIHZvaWQgc2V0R2VvbWV0
cmllc0ZvckludHJpbnNpY1dpZHRoKExheW91dDo6SW50cmluc2ljV2lkdGhNb2RlKTsKLSAgICB2
b2lkIHVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQoY29uc3QgTGF5b3V0OjpFbGVtZW50Qm94Jik7
CisKKyAgICB2b2lkIHNldEdlb21ldHJ5QWZ0ZXJJbnRlZ3JhdGlvbkxheW91dChjb25zdCBMYXlv
dXQ6OkVsZW1lbnRCb3gmLCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKTsKIAogICAgIExheW91
dDo6Q29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50IHVwZGF0ZUlubGluZUNvbnRlbnRDb25zdHJh
aW50cygpOwogICAgIEhhc2hNYXA8Y29uc3QgTGF5b3V0OjpFbGVtZW50Qm94KiwgTGF5b3V0VW5p
dD4gdGFrZU5lc3RlZExpc3RNYXJrZXJPZmZzZXRzKCkgeyByZXR1cm4gV1RGTW92ZShtX25lc3Rl
ZExpc3RNYXJrZXJPZmZzZXRzKTsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgdXBkYXRlTGF5b3V0
Qm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJCb3gmLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50
cmluc2ljV2lkdGhNb2RlPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCB1cGRhdGVCb3hHZW9t
ZXRyeShjb25zdCBSZW5kZXJFbGVtZW50JiwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCk7CisK
KyAgICB2b2lkIHVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVyQm94Jiwgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgc3RkOjpvcHRpb25hbDxMYXlv
dXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgdXBkYXRl
TGluZUJyZWFrQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJMaW5lQnJlYWsmKTsKLSAgICB2b2lk
IHVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVySW5saW5lJiwgc3RkOjpvcHRp
b25hbDxMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOwotICAgIHZv
aWQgdXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMoY29uc3QgUmVuZGVyTGlzdE1hcmtlciYsIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+ID0gc3RkOjpudWxsb3B0KTsK
LSAgICB2b2lkIHVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQoY29uc3QgUmVuZGVyRWxlbWVudCYp
OworICAgIHZvaWQgdXBkYXRlSW5saW5lQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJJbmxpbmUm
LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVdpZHRoLCBzdGQ6Om9wdGlvbmFs
PExheW91dDo6SW50cmluc2ljV2lkdGhNb2RlPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCB1
cGRhdGVMaXN0TWFya2VyRGltZW5zaW9ucyhjb25zdCBSZW5kZXJMaXN0TWFya2VyJiwgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgc3RkOjpvcHRpb25hbDxMYXlvdXQ6
OkludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgQm94VHJlZSYgYm94
VHJlZSgpIHsgcmV0dXJuICptX2JveFRyZWU7IH0KICAgICBjb25zdCBCb3hUcmVlJiBib3hUcmVl
KCkgY29uc3QgeyByZXR1cm4gKm1fYm94VHJlZTsgfQpAQCAtNzEsNiArNzMsNyBAQCBwcml2YXRl
OgogcHJpdmF0ZToKICAgICBXZWFrUHRyPEJveFRyZWU+IG1fYm94VHJlZTsKICAgICBXZWFrUHRy
PExheW91dDo6TGF5b3V0U3RhdGU+IG1fbGF5b3V0U3RhdGU7CisgICAgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBtX2F2YWlsYWJsZVdpZHRoOwogICAgIEhhc2hNYXA8Y29uc3QgTGF5b3V0OjpF
bGVtZW50Qm94KiwgTGF5b3V0VW5pdD4gbV9uZXN0ZWRMaXN0TWFya2VyT2Zmc2V0czsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCAxMWI0
NjIyMzFjNmEuLmVlNThhYjJhYmM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRp
b25MaW5lTGF5b3V0LmNwcApAQCAtMjQxLDkgKzI0MSw5IEBAIGJvb2wgTGluZUxheW91dDo6c2hv
dWxkSW52YWxpZGF0ZUxpbmVMYXlvdXRQYXRoQWZ0ZXJUcmVlTXV0YXRpb24oY29uc3QgUmVuZGVy
QmxvCiAgICAgcmV0dXJuIHNob3VsZEludmFsaWRhdGVMaW5lTGF5b3V0UGF0aEFmdGVyQ2hhbmdl
Rm9yKHBhcmVudCwgcmVuZGVyZXIsIGxpbmVMYXlvdXQsIGlzUmVtb3ZhbCA/IFR5cGVPZkNoYW5n
ZUZvckludmFsaWRhdGlvbjo6Tm9kZVJlbW92YWwgOiBUeXBlT2ZDaGFuZ2VGb3JJbnZhbGlkYXRp
b246Ok5vZGVJbnNlcnRpb24pOwogfQogCi12b2lkIExpbmVMYXlvdXQ6OnVwZGF0ZUlubGluZUNv
bnRlbnREaW1lbnNpb25zKCkKK3ZvaWQgTGluZUxheW91dDo6dXBkYXRlSW5saW5lQ29udGVudERp
bWVuc2lvbnMoTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpCiB7Ci0gICAgbV9ib3hH
ZW9tZXRyeVVwZGF0ZXIuc2V0R2VvbWV0cmllc0ZvckxheW91dCgpOworICAgIG1fYm94R2VvbWV0
cnlVcGRhdGVyLnNldEdlb21ldHJpZXNGb3JMYXlvdXQoYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsK
IH0KIAogdm9pZCBMaW5lTGF5b3V0Ojp1cGRhdGVTdHlsZShjb25zdCBSZW5kZXJPYmplY3QmIHJl
bmRlcmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lu
bGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKaW5kZXgg
NTA5YWI5Mjg4MDI3Li42MzZiNTc4ODNhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVMYXlvdXQuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkSW52YWxpZGF0ZUxpbmVMYXlvdXRQYXRoQWZ0ZXJUcmVlTXV0YXRpb24oY29uc3Qg
UmVuZGVyQmxvY2tGbG93JiBwYXJlbnQsIGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNv
bnN0IExpbmVMYXlvdXQmLCBib29sIGlzUmVtb3ZhbCk7CiAKICAgICB2b2lkIHVwZGF0ZUlubGlu
ZUNvbnRlbnRDb25zdHJhaW50cygpOwotICAgIHZvaWQgdXBkYXRlSW5saW5lQ29udGVudERpbWVu
c2lvbnMoKTsKKyAgICB2b2lkIHVwZGF0ZUlubGluZUNvbnRlbnREaW1lbnNpb25zKExheW91dFVu
aXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICB2b2lkIHVwZGF0ZU92ZXJmbG93KCk7CiAg
ICAgc3RhdGljIHZvaWQgdXBkYXRlU3R5bGUoY29uc3QgUmVuZGVyT2JqZWN0Jik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggZDJhODViY2Ri
NTM2Li45YTQ0MGVjMTgwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuY3BwCkBAIC0zODgwLDcgKzM4ODAsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6
bGF5b3V0SW5saW5lQ29udGVudChib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIHJl
cAogICAgIGF1dG8mIGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dCA9ICp0aGlzLT5p
bmxpbmVMYXlvdXQoKTsKIAogICAgIGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC51
cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMoKTsKLSAgICBsYXlvdXRGb3JtYXR0aW5nQ29u
dGV4dExpbmVMYXlvdXQudXBkYXRlSW5saW5lQ29udGVudERpbWVuc2lvbnMoKTsKKyAgICBsYXlv
dXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQudXBkYXRlSW5saW5lQ29udGVudERpbWVuc2lv
bnMoYXZhaWxhYmxlTG9naWNhbFdpZHRoKCkpOwogCiAgICAgYXV0byBjb250ZW50Qm94VG9wID0g
Ym9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>472611</attachid>
            <date>2024-09-20 05:51:10 -0700</date>
            <delta_ts>2024-09-20 07:23:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-280039-20240920055109.patch</filename>
            <type>text/plain</type>
            <size>28883</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBkZmNjNGI0NjJhNjhhNTJmMzE0MmQyNzNjMjc0MzBlYzNlNWMyODA0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMTkgU2VwIDIwMjQgMjA6MzE6NDkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbTEZDXVtJ
bnRlZ3JhdGlvbl0gQWx3YXlzIHJlc29sdmUgbWFyZ2luL3BhZGRpbmcgdmFsdWVzCiAoQm94R2Vv
bWV0cnlVcGRhdGVyKSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjgw
MDM5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRoaXMgaXMgaW4gcHJlcGFyYXRpb24g
Zm9yIHVzaW5nIEJveEdlb21ldHJ5VXBkYXRlciBmcm9tIEZGQy4KClVwIHVudGlsIHJ1bm5pbmcg
cmVuZGVyIGxheW91dCBfYmVmb3JlXyBMRkMgbGF5b3V0IHRoZXJlIHdhcyBhbHdheXMgdmFsaWQg
bWFyZ2luL3BhZGRpbmcgdmFsdWVzCm9uIHRoZSByZW5kZXJlcnMgKHNpbmNlIHRoZXkgd2VyZSBj
b21wdXRlZCBkdXJpbmcgdGhlaXIgbGF5b3V0KS4KSG93ZXZlciBub3cgdGhhdCB3ZSBkb24ndCBu
ZWNlc3NhcmlseSBydW4gbGF5b3V0IGJlZm9yZSBlbnRlcmluZyBMRkMsCkJveEdlb21ldHJ5VXBk
YXRlciBtYXkgaG9sZCBzdGFsZSB2YWx1ZXMuCkl0IGdldHMgY29ycmVjdGVkIHRocm91Z2ggbGF5
b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94IGxhdGVyIGJ1dCBmb3IgYSBwZXJpb2Qgb2Yg
dGltZSBCb3hHZW9tZXRyeSBoYXMgaW5jb3JyZWN0IHZhbHVlcy4KCkluIGNhc2Ugb2YgRkZDIHRo
b3VnaCwgd2UgbmV2ZXIgcnVuIGxheW91dCBvbiBmbGV4IGl0ZW1zIHVwZnJvbnQsIGFuZCB3ZSBj
ZXJ0YWlubHkgbmVlZCBtYXJnaW4vcGFkZGluZyAoYm9yZGVyKSB2YWx1ZXMKYmVmb3JlIGluaXRp
YXRpbmcgbGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94IGNhbGxzIG9uIGZsZXggaXRl
bXMuIFNvIGxldCdzIGNvbXB1dGUgdGhlc2UgdmFsdWVzIGluIEJveEdlb21ldHJ5VXBkYXRlcgoo
dGhpcyB3aWxsIGdldCBhIGJpdCBtb3JlIGNvbXBsaWNhdGVkIHdpdGggQkZDIHdpdGggbWFyZ2lu
IGNvbGxhcHNpbmcvdHJpbW1pbmcpCgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LmNwcDoKKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpsYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3gpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRp
b25Cb3hHZW9tZXRyeVVwZGF0ZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OnVz
ZWRWYWx1ZU9yWmVybyk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94R2VvbWV0cnlV
cGRhdGVyOjp1cGRhdGVMaXN0TWFya2VyRGltZW5zaW9ucyk6CihXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6aG9yaXpvbnRhbExvZ2ljYWxNYXJnaW4pOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OmxvZ2ljYWxCb3JkZXIpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OmxvZ2lj
YWxQYWRkaW5nKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hHZW9tZXRyeVVwZGF0
ZXI6OnVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OkJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlSW5saW5lQm94RGltZW5zaW9ucyk6CihXZWJD
b3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94R2VvbWV0cnlVcGRhdGVyOjpzZXRHZW9tZXRyaWVz
Rm9yTGF5b3V0KToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hHZW9tZXRyeVVwZGF0
ZXI6OnNldEdlb21ldHJpZXNGb3JJbnRyaW5zaWNXaWR0aCk6CihXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6Qm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWlu
dHMpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveEdlb21ldHJ5VXBkYXRlcjo6c2V0
R2VvbWV0cnlBZnRlckludGVncmF0aW9uTGF5b3V0KToKKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUJveEdlb21ldHJ5KToKKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpmaXhlZFZhbHVlT3JaZXJvKTogRGVsZXRlZC4KKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUdlb21ldHJ5QWZ0ZXJM
YXlvdXQpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxp
bmUvTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuaDoKKiBTb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5j
cHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6dXBkYXRlSW5saW5l
Q29udGVudERpbWVuc2lvbnMpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9p
bmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0Lmg6CiogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CihXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6Omxh
eW91dElubGluZUNvbnRlbnQpOgotLS0KIC4uLnlvdXRJbnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250
ZXh0TGF5b3V0LmNwcCB8ICAgMyArLQogLi4uL0xheW91dEludGVncmF0aW9uQm94R2VvbWV0cnlV
cGRhdGVyLmNwcCAgIHwgMTA1ICsrKysrKysrKystLS0tLS0tLQogLi4uL0xheW91dEludGVncmF0
aW9uQm94R2VvbWV0cnlVcGRhdGVyLmggICAgIHwgIDE1ICsrLQogLi4uL2lubGluZS9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwICAgIHwgICA0ICstCiAuLi4vaW5saW5lL0xheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5oICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwICB8ICAgMiArLQogNiBmaWxlcyBjaGFuZ2VkLCA3NSBp
bnNlcnRpb25zKCspLCA1NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExh
eW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5jcHAKaW5kZXggOTZiOWVmM2RiMDI5Li4yN2E5
NWVlMTQ2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29u
dGV4dExheW91dC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3Jh
dGlvbkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LmgiCiAKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3Jh
dGlvbkJveEdlb21ldHJ5VXBkYXRlci5oIgorI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5j
bHVkZSAiUmVuZGVyQm94LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDcgKzQ4LDcg
QEAgdm9pZCBsYXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3goY29uc3QgTGF5b3V0OjpF
bGVtZW50Qm94JiBib3gsIHN0ZDo6b3B0aW8KICAgICAgICAgcmVuZGVyZXIuY2xlYXJPdmVycmlk
aW5nTG9naWNhbFdpZHRoTGVuZ3RoKCk7CiAKICAgICBhdXRvIHVwZGF0ZXIgPSBCb3hHZW9tZXRy
eVVwZGF0ZXIgeyBsYXlvdXRTdGF0ZSB9OwotICAgIHVwZGF0ZXIudXBkYXRlR2VvbWV0cnlBZnRl
ckxheW91dChib3gpOworICAgIHVwZGF0ZXIuc2V0R2VvbWV0cnlBZnRlckludGVncmF0aW9uTGF5
b3V0KGJveCwgd2lkdGhDb25zdHJhaW50LnZhbHVlX29yKHJlbmRlcmVyLmNvbnRhaW5pbmdCbG9j
aygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKSkpOwogfQogCiBMYXlvdXRVbml0IGZvcm1hdHRp
bmdDb250ZXh0Um9vdExvZ2ljYWxXaWR0aEZvclR5cGUoY29uc3QgTGF5b3V0OjpFbGVtZW50Qm94
JiBib3gsIExvZ2ljYWxXaWR0aFR5cGUgbG9naWNhbFdpZHRoVHlwZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25C
b3hHZW9tZXRyeVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5jcHAKaW5kZXggZTY5
ZDk1YzNkNWQwLi5iMzM2MmJlNTBmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0
SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuY3BwCkBAIC00OSwxNSArNDksMjMgQEAKICNp
bmNsdWRlICJSZW5kZXJNYXRoTUxCbG9jay5oIgogI2luY2x1ZGUgIlJlbmRlclNsaWRlci5oIgog
I2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCisjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJU
aGVtZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRp
b24gewogCi1zdGF0aWMgTGF5b3V0VW5pdCBmaXhlZFZhbHVlT3JaZXJvKGNvbnN0IExlbmd0aCYg
bGVuZ3RoKQorCitzdGF0aWMgTGF5b3V0VW5pdCB1c2VkVmFsdWVPclplcm8oY29uc3QgTGVuZ3Ro
JiBsZW5ndGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgpCiB7Ci0g
ICAgcmV0dXJuIExheW91dFVuaXQgeyBsZW5ndGguaXNGaXhlZCgpID8gbGVuZ3RoLnZhbHVlKCkg
OiAwLmYgfTsKKyAgICBpZiAobGVuZ3RoLmlzRml4ZWQoKSkKKyAgICAgICAgcmV0dXJuIExheW91
dFVuaXQgeyBsZW5ndGgudmFsdWUoKSB9OworCisgICAgaWYgKGxlbmd0aC5pc0F1dG8oKSB8fCAh
YXZhaWxhYmxlV2lkdGgpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gbWluaW11
bVZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgKmF2YWlsYWJsZVdpZHRoKTsKIH0KIAogQm94R2VvbWV0
cnlVcGRhdGVyOjpCb3hHZW9tZXRyeVVwZGF0ZXIoQm94VHJlZSYgYm94VHJlZSwgTGF5b3V0OjpM
YXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCkBAIC03MSw5ICs3OSw5IEBAIEJveEdlb21ldHJ5VXBk
YXRlcjo6Qm94R2VvbWV0cnlVcGRhdGVyKExheW91dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YXRl
KQogewogfQogCi12b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlTGlzdE1hcmtlckRpbWVu
c2lvbnMoY29uc3QgUmVuZGVyTGlzdE1hcmtlciYgbGlzdE1hcmtlciwgc3RkOjpvcHRpb25hbDxM
YXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gaW50cmluc2ljV2lkdGhNb2RlKQordm9pZCBCb3hH
ZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUxpc3RNYXJrZXJEaW1lbnNpb25zKGNvbnN0IFJlbmRlckxp
c3RNYXJrZXImIGxpc3RNYXJrZXIsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxl
V2lkdGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+IGludHJpbnNp
Y1dpZHRoTW9kZSkKIHsKLSAgICB1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKGxpc3RNYXJrZXIs
IGludHJpbnNpY1dpZHRoTW9kZSk7CisgICAgdXBkYXRlTGF5b3V0Qm94RGltZW5zaW9ucyhsaXN0
TWFya2VyLCBhdmFpbGFibGVXaWR0aCwgaW50cmluc2ljV2lkdGhNb2RlKTsKICAgICBpZiAoaW50
cmluc2ljV2lkdGhNb2RlKQogICAgICAgICByZXR1cm47CiAKQEAgLTEzMywyMCArMTQxLDE5IEBA
IHN0YXRpYyBpbmxpbmUgTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbEhlaWdodEZvclJlbmRlcmVy
KGNvbnN0IFJlbmRlckJveCYgcmVuZGVyCiAgICAgcmV0dXJuIHJlbmRlcmVyLnBhcmVudCgpLT5z
dHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByZW5kZXJlci5jb250ZW50SGVpZ2h0
KCkgOiByZW5kZXJlci5jb250ZW50V2lkdGgoKTsKIH0KIAotZW51bSBjbGFzcyBVc2VDb21wdXRl
ZFZhbHVlcyA6IGJvb2wgeyBObywgWWVzIH07Ci1zdGF0aWMgaW5saW5lIExheW91dDo6Qm94R2Vv
bWV0cnk6Okhvcml6b250YWxFZGdlcyBob3Jpem9udGFsTG9naWNhbE1hcmdpbihjb25zdCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIsIGJvb2wgaXNMZWZ0VG9SaWdodElubGluZURpcmVj
dGlvbiwgYm9vbCBpc0hvcml6b250YWxXcml0aW5nTW9kZSwgVXNlQ29tcHV0ZWRWYWx1ZXMgdXNl
Q29tcHV0ZWRWYWx1ZXMgPSBVc2VDb21wdXRlZFZhbHVlczo6Tm8sIGJvb2wgcmV0YWluTWFyZ2lu
U3RhcnQgPSB0cnVlLCBib29sIHJldGFpbk1hcmdpbkVuZCA9IHRydWUpCitzdGF0aWMgaW5saW5l
IExheW91dDo6Qm94R2VvbWV0cnk6Okhvcml6b250YWxFZGdlcyBob3Jpem9udGFsTG9naWNhbE1h
cmdpbihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIsIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIGJvb2wgaXNMZWZ0VG9SaWdodElubGluZURpcmVj
dGlvbiwgYm9vbCBpc0hvcml6b250YWxXcml0aW5nTW9kZSwgYm9vbCByZXRhaW5NYXJnaW5TdGFy
dCA9IHRydWUsIGJvb2wgcmV0YWluTWFyZ2luRW5kID0gdHJ1ZSkKIHsKICAgICBhdXRvJiBzdHls
ZSA9IHJlbmRlcmVyLnN0eWxlKCk7Ci0gICAgYXV0byBtYXJnaW5MZWZ0ID0gdXNlQ29tcHV0ZWRW
YWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIubWFyZ2luTGVmdCgpIDog
Zml4ZWRWYWx1ZU9yWmVybyhzdHlsZS5tYXJnaW5MZWZ0KCkpOwotICAgIGF1dG8gbWFyZ2luUmln
aHQgPSB1c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5kZXJl
ci5tYXJnaW5SaWdodCgpIDogZml4ZWRWYWx1ZU9yWmVybyhzdHlsZS5tYXJnaW5SaWdodCgpKTsK
KyAgICBhdXRvIG1hcmdpbkxlZnQgPSB1c2VkVmFsdWVPclplcm8oc3R5bGUubWFyZ2luTGVmdCgp
LCBhdmFpbGFibGVXaWR0aCk7CisgICAgYXV0byBtYXJnaW5SaWdodCA9IHVzZWRWYWx1ZU9yWmVy
byhzdHlsZS5tYXJnaW5SaWdodCgpLCBhdmFpbGFibGVXaWR0aCk7CiAgICAgaWYgKGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKSB7CiAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0
aW9uKQogICAgICAgICAgICAgcmV0dXJuIHsgcmV0YWluTWFyZ2luU3RhcnQgPyBtYXJnaW5MZWZ0
IDogMF9sdSwgcmV0YWluTWFyZ2luRW5kID8gbWFyZ2luUmlnaHQgOiAwX2x1IH07CiAgICAgICAg
IHJldHVybiB7IHJldGFpbk1hcmdpblN0YXJ0ID8gbWFyZ2luUmlnaHQgOiAwX2x1LCByZXRhaW5N
YXJnaW5FbmQgPyBtYXJnaW5MZWZ0IDogMF9sdSB9OwogICAgIH0KIAotICAgIGF1dG8gbWFyZ2lu
VG9wID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVy
ZXIubWFyZ2luVG9wKCkgOiBmaXhlZFZhbHVlT3JaZXJvKHN0eWxlLm1hcmdpblRvcCgpKTsKLSAg
ICBhdXRvIG1hcmdpbkJvdHRvbSA9IHVzZUNvbXB1dGVkVmFsdWVzID09IFVzZUNvbXB1dGVkVmFs
dWVzOjpObyA/IHJlbmRlcmVyLm1hcmdpbkJvdHRvbSgpIDogZml4ZWRWYWx1ZU9yWmVybyhzdHls
ZS5tYXJnaW5Cb3R0b20oKSk7CisgICAgYXV0byBtYXJnaW5Ub3AgPSB1c2VkVmFsdWVPclplcm8o
c3R5bGUubWFyZ2luVG9wKCksIGF2YWlsYWJsZVdpZHRoKTsKKyAgICBhdXRvIG1hcmdpbkJvdHRv
bSA9IHVzZWRWYWx1ZU9yWmVybyhzdHlsZS5tYXJnaW5Cb3R0b20oKSwgYXZhaWxhYmxlV2lkdGgp
OwogICAgIGlmIChpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uKQogICAgICAgICByZXR1cm4g
eyByZXRhaW5NYXJnaW5TdGFydCA/IG1hcmdpblRvcCA6IDBfbHUsIHJldGFpbk1hcmdpbkVuZCA/
IG1hcmdpbkJvdHRvbSA6IDBfbHUgfTsKICAgICByZXR1cm4geyByZXRhaW5NYXJnaW5TdGFydCA/
IG1hcmdpbkJvdHRvbSA6IDBfbHUsIHJldGFpbk1hcmdpbkVuZCA/IG1hcmdpblRvcCA6IDBfbHUg
fTsKQEAgLTE2OCwxMyArMTc1LDEzIEBAIHN0YXRpYyBpbmxpbmUgTGF5b3V0OjpCb3hHZW9tZXRy
eTo6VmVydGljYWxFZGdlcyB2ZXJ0aWNhbExvZ2ljYWxNYXJnaW4oY29uc3QgUmVuCiB9CiAKIGVu
dW0gY2xhc3MgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dCA6IGJvb2wgeyBObywgWWVzIH07Ci1z
dGF0aWMgaW5saW5lIExheW91dDo6Qm94R2VvbWV0cnk6OkVkZ2VzIGxvZ2ljYWxCb3JkZXIoY29u
c3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyLCBib29sIGlzTGVmdFRvUmlnaHRJbmxp
bmVEaXJlY3Rpb24sIEZsb3dEaXJlY3Rpb24gYmxvY2tGbG93RGlyZWN0aW9uLCBVc2VDb21wdXRl
ZFZhbHVlcyB1c2VDb21wdXRlZFZhbHVlcyA9IFVzZUNvbXB1dGVkVmFsdWVzOjpObywgSXNQYXJ0
T2ZGb3JtYXR0aW5nQ29udGV4dCBpc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0ID0gSXNQYXJ0T2ZG
b3JtYXR0aW5nQ29udGV4dDo6Tm8sIGJvb2wgcmV0YWluQm9yZGVyU3RhcnQgPSB0cnVlLCBib29s
IHJldGFpbkJvcmRlckVuZCA9IHRydWUpCitzdGF0aWMgaW5saW5lIExheW91dDo6Qm94R2VvbWV0
cnk6OkVkZ2VzIGxvZ2ljYWxCb3JkZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRl
cmVyLCBib29sIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIEZsb3dEaXJlY3Rpb24gYmxv
Y2tGbG93RGlyZWN0aW9uLCBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0IGlzUGFydE9mRm9ybWF0
dGluZ0NvbnRleHQgPSBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0OjpObywgYm9vbCByZXRhaW5C
b3JkZXJTdGFydCA9IHRydWUsIGJvb2wgcmV0YWluQm9yZGVyRW5kID0gdHJ1ZSkKIHsKICAgICBh
dXRvJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7Ci0gICAgYXV0byBib3JkZXJMZWZ0ID0gdXNl
Q29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIuYm9yZGVy
TGVmdCgpIDogTGF5b3V0VW5pdChzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSk7Ci0gICAgYXV0byBi
b3JkZXJSaWdodCA9IHVzZUNvbXB1dGVkVmFsdWVzID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/
IHJlbmRlcmVyLmJvcmRlclJpZ2h0KCkgOiBMYXlvdXRVbml0KHN0eWxlLmJvcmRlclJpZ2h0V2lk
dGgoKSk7Ci0gICAgYXV0byBib3JkZXJUb3AgPSB1c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21w
dXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5ib3JkZXJUb3AoKSA6IExheW91dFVuaXQoc3R5bGUu
Ym9yZGVyVG9wV2lkdGgoKSk7Ci0gICAgYXV0byBib3JkZXJCb3R0b20gPSB1c2VDb21wdXRlZFZh
bHVlcyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5ib3JkZXJCb3R0b20oKSA6
IExheW91dFVuaXQoc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSk7CisgICAgYXV0byBib3JkZXJM
ZWZ0ID0gTGF5b3V0VW5pdCB7IHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpIH07CisgICAgYXV0byBi
b3JkZXJSaWdodCA9IExheW91dFVuaXQgeyBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCkgfTsKKyAg
ICBhdXRvIGJvcmRlclRvcCA9IExheW91dFVuaXQgeyBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpIH07
CisgICAgYXV0byBib3JkZXJCb3R0b20gPSBMYXlvdXRVbml0IHsgc3R5bGUuYm9yZGVyQm90dG9t
V2lkdGgoKSB9OwogCiAgICAgaWYgKGJsb2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9u
OjpUb3BUb0JvdHRvbSB8fCBibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6Qm90
dG9tVG9Ub3ApIHsKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24pCkBA
IC0xOTAsMTggKzE5NywyNiBAQCBzdGF0aWMgaW5saW5lIExheW91dDo6Qm94R2VvbWV0cnk6OkVk
Z2VzIGxvZ2ljYWxCb3JkZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplYwogICAgIHJldHVybiB7
IHsgYm9yZGVyTG9naWNhbExlZnQsIGJvcmRlckxvZ2ljYWxSaWdodCB9LCB7IGJvcmRlckxvZ2lj
YWxUb3AsIGJvcmRlckxvZ2ljYWxCb3R0b20gfSB9OwogfQogCi1zdGF0aWMgaW5saW5lIExheW91
dDo6Qm94R2VvbWV0cnk6OkVkZ2VzIGxvZ2ljYWxQYWRkaW5nKGNvbnN0IFJlbmRlckJveE1vZGVs
T2JqZWN0JiByZW5kZXJlciwgYm9vbCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBGbG93
RGlyZWN0aW9uIGJsb2NrRmxvd0RpcmVjdGlvbiwgVXNlQ29tcHV0ZWRWYWx1ZXMgdXNlQ29tcHV0
ZWRWYWx1ZXMgPSBVc2VDb21wdXRlZFZhbHVlczo6Tm8sIElzUGFydE9mRm9ybWF0dGluZ0NvbnRl
eHQgaXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dCA9IElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6
Ok5vLCBib29sIHJldGFpblBhZGRpbmdTdGFydCA9IHRydWUsIGJvb2wgcmV0YWluUGFkZGluZ0Vu
ZCA9IHRydWUpCitzdGF0aWMgaW5saW5lIExheW91dDo6Qm94R2VvbWV0cnk6OkVkZ2VzIGxvZ2lj
YWxQYWRkaW5nKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlciwgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgYm9vbCBpc0xlZnRUb1JpZ2h0SW5saW5l
RGlyZWN0aW9uLCBGbG93RGlyZWN0aW9uIGJsb2NrRmxvd0RpcmVjdGlvbiwgSXNQYXJ0T2ZGb3Jt
YXR0aW5nQ29udGV4dCBpc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0ID0gSXNQYXJ0T2ZGb3JtYXR0
aW5nQ29udGV4dDo6Tm8sIGJvb2wgcmV0YWluUGFkZGluZ1N0YXJ0ID0gdHJ1ZSwgYm9vbCByZXRh
aW5QYWRkaW5nRW5kID0gdHJ1ZSkKIHsKICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxl
KCk7Ci0gICAgYXV0byBwYWRkaW5nTGVmdCA9IHVzZUNvbXB1dGVkVmFsdWVzID09IFVzZUNvbXB1
dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVyLnBhZGRpbmdMZWZ0KCkgOiBmaXhlZFZhbHVlT3JaZXJv
KHN0eWxlLnBhZGRpbmdMZWZ0KCkpOwotICAgIGF1dG8gcGFkZGluZ1JpZ2h0ID0gdXNlQ29tcHV0
ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIucGFkZGluZ1JpZ2h0
KCkgOiBmaXhlZFZhbHVlT3JaZXJvKHN0eWxlLnBhZGRpbmdSaWdodCgpKTsKLSAgICBhdXRvIHBh
ZGRpbmdUb3AgPSB1c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyBy
ZW5kZXJlci5wYWRkaW5nVG9wKCkgOiBmaXhlZFZhbHVlT3JaZXJvKHN0eWxlLnBhZGRpbmdUb3Ao
KSk7Ci0gICAgYXV0byBwYWRkaW5nQm90dG9tID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29t
cHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIucGFkZGluZ0JvdHRvbSgpIDogZml4ZWRWYWx1ZU9y
WmVybyhzdHlsZS5wYWRkaW5nQm90dG9tKCkpOworCisgICAgYXV0byBwYWRkaW5nTGVmdCA9IHVz
ZWRWYWx1ZU9yWmVybyhzdHlsZS5wYWRkaW5nTGVmdCgpLCBhdmFpbGFibGVXaWR0aCk7CisgICAg
YXV0byBwYWRkaW5nUmlnaHQgPSB1c2VkVmFsdWVPclplcm8oc3R5bGUucGFkZGluZ1JpZ2h0KCks
IGF2YWlsYWJsZVdpZHRoKTsKKyAgICBhdXRvIHBhZGRpbmdUb3AgPSB1c2VkVmFsdWVPclplcm8o
c3R5bGUucGFkZGluZ1RvcCgpLCBhdmFpbGFibGVXaWR0aCk7CisgICAgYXV0byBwYWRkaW5nQm90
dG9tID0gdXNlZFZhbHVlT3JaZXJvKHN0eWxlLnBhZGRpbmdCb3R0b20oKSwgYXZhaWxhYmxlV2lk
dGgpOworCisgICAgYXV0byBpbnRyaW5zaWNQYWRkaW5nQmVmb3JlID0gTGF5b3V0VW5pdCB7IH07
CisgICAgYXV0byBpbnRyaW5zaWNQYWRkaW5nQWZ0ZXIgPSBMYXlvdXRVbml0IHsgfTsKKyAgICBp
ZiAoYXV0byogdGFibGVDZWxsID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRhYmxlQ2VsbD4ocmVu
ZGVyZXIpKSB7CisgICAgICAgIGludHJpbnNpY1BhZGRpbmdCZWZvcmUgPSB0YWJsZUNlbGwtPmlu
dHJpbnNpY1BhZGRpbmdCZWZvcmUoKTsKKyAgICAgICAgaW50cmluc2ljUGFkZGluZ0FmdGVyID0g
dGFibGVDZWxsLT5pbnRyaW5zaWNQYWRkaW5nQWZ0ZXIoKTsKKyAgICB9CiAKICAgICBpZiAoYmxv
Y2tGbG93RGlyZWN0aW9uID09IEZsb3dEaXJlY3Rpb246OlRvcFRvQm90dG9tIHx8IGJsb2NrRmxv
d0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpCb3R0b21Ub1RvcCkgewogICAgICAgICBpZiAo
aXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbikKLSAgICAgICAgICAgIHJldHVybiB7IHsgcmV0
YWluUGFkZGluZ1N0YXJ0ID8gcGFkZGluZ0xlZnQgOiAwX2x1LCByZXRhaW5QYWRkaW5nRW5kID8g
cGFkZGluZ1JpZ2h0IDogMF9sdSB9LCB7IHBhZGRpbmdUb3AsIHBhZGRpbmdCb3R0b20gfSB9Owot
ICAgICAgICByZXR1cm4geyB7IHJldGFpblBhZGRpbmdTdGFydCA/IHBhZGRpbmdSaWdodCA6IDBf
bHUsIHJldGFpblBhZGRpbmdFbmQgPyBwYWRkaW5nTGVmdCA6IDBfbHUgfSwgeyBwYWRkaW5nVG9w
LCBwYWRkaW5nQm90dG9tIH0gfTsKKyAgICAgICAgICAgIHJldHVybiB7IHsgcmV0YWluUGFkZGlu
Z1N0YXJ0ID8gcGFkZGluZ0xlZnQgOiAwX2x1LCByZXRhaW5QYWRkaW5nRW5kID8gcGFkZGluZ1Jp
Z2h0IDogMF9sdSB9LCB7IHBhZGRpbmdUb3AgKyBpbnRyaW5zaWNQYWRkaW5nQmVmb3JlLCBwYWRk
aW5nQm90dG9tICsgaW50cmluc2ljUGFkZGluZ0FmdGVyIH0gfTsKKyAgICAgICAgcmV0dXJuIHsg
eyByZXRhaW5QYWRkaW5nU3RhcnQgPyBwYWRkaW5nUmlnaHQgOiAwX2x1LCByZXRhaW5QYWRkaW5n
RW5kID8gcGFkZGluZ0xlZnQgOiAwX2x1IH0sIHsgcGFkZGluZ1RvcCArIGludHJpbnNpY1BhZGRp
bmdCZWZvcmUsIHBhZGRpbmdCb3R0b20gKyBpbnRyaW5zaWNQYWRkaW5nQWZ0ZXIgfSB9OwogICAg
IH0KIAogICAgIGF1dG8gcGFkZGluZ0xvZ2ljYWxMZWZ0ID0gcmV0YWluUGFkZGluZ1N0YXJ0ID8g
aXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiA/IHBhZGRpbmdUb3AgOiBwYWRkaW5nQm90dG9t
IDogMF9sdTsKQEAgLTIwOSw3ICsyMjQsNyBAQCBzdGF0aWMgaW5saW5lIExheW91dDo6Qm94R2Vv
bWV0cnk6OkVkZ2VzIGxvZ2ljYWxQYWRkaW5nKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZQogICAg
IC8vIEZvciBib3hlcyBpbnNpZGUgdGhlIGZvcm1hdHRpbmcgY29udGV4dCwgcmlnaHQgcGFkZGlu
ZyAoYm9yZGVyKSBhbHdheXMgcG9pbnRzIHVwLCB3aGlsZSB3aGVuIGNvbnZlcnRpbmcgdGhlIGZv
cm1hdHRpbmcgY29udGV4dCByb290J3MgcGFkZGluZyAoYm9yZGVyKSB0aGUgZGlyZWN0aW9uYWxp
dHkgbWF0dGVycy4KICAgICBhdXRvIHBhZGRpbmdMb2dpY2FsVG9wID0gaXNQYXJ0T2ZGb3JtYXR0
aW5nQ29udGV4dCA9PSBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0OjpZZXMgPyBwYWRkaW5nUmln
aHQgOiBibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6TGVmdFRvUmlnaHQgPyBw
YWRkaW5nTGVmdCA6IHBhZGRpbmdSaWdodDsKICAgICBhdXRvIHBhZGRpbmdMb2dpY2FsQm90dG9t
ID0gaXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dCA9PSBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0
OjpZZXMgPyBwYWRkaW5nTGVmdCA6IGJsb2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9u
OjpMZWZ0VG9SaWdodCA/IHBhZGRpbmdSaWdodCA6IHBhZGRpbmdMZWZ0OwotICAgIHJldHVybiB7
IHsgcGFkZGluZ0xvZ2ljYWxMZWZ0LCBwYWRkaW5nTG9naWNhbFJpZ2h0IH0sIHsgcGFkZGluZ0xv
Z2ljYWxUb3AsIHBhZGRpbmdMb2dpY2FsQm90dG9tIH0gfTsKKyAgICByZXR1cm4geyB7IHBhZGRp
bmdMb2dpY2FsTGVmdCwgcGFkZGluZ0xvZ2ljYWxSaWdodCB9LCB7IHBhZGRpbmdMb2dpY2FsVG9w
ICsgaW50cmluc2ljUGFkZGluZ0JlZm9yZSwgcGFkZGluZ0xvZ2ljYWxCb3R0b20gKyBpbnRyaW5z
aWNQYWRkaW5nQWZ0ZXIgfSB9OwogfQogCiBzdGF0aWMgaW5saW5lIExheW91dFNpemUgc2Nyb2xs
YmFyTG9naWNhbFNpemUoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlcikKQEAgLTIyMiw3ICsyMzcs
NyBAQCBzdGF0aWMgaW5saW5lIExheW91dFNpemUgc2Nyb2xsYmFyTG9naWNhbFNpemUoY29uc3Qg
UmVuZGVyQm94JiByZW5kZXJlcikKICAgICByZXR1cm4geyBob3Jpem9udGFsU3BhY2VSZXNlcnZl
ZEZvclNjcm9sbGJhciwgdmVydGljYWxTcGFjZVJlc2VydmVkRm9yU2Nyb2xsYmFyIH07CiB9CiAK
LXZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKGNvbnN0
IFJlbmRlckJveCYgcmVuZGVyQm94LCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50cmluc2ljV2lk
dGhNb2RlPiBpbnRyaW5zaWNXaWR0aE1vZGUpCit2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6dXBk
YXRlTGF5b3V0Qm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlckJveCwgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgc3RkOjpvcHRpb25hbDxMYXlvdXQ6
OkludHJpbnNpY1dpZHRoTW9kZT4gaW50cmluc2ljV2lkdGhNb2RlKQogewogICAgIGF1dG8mIGxh
eW91dEJveCA9IGNvbnN0X2Nhc3Q8TGF5b3V0OjpFbGVtZW50Qm94Jj4oKnJlbmRlckJveC5sYXlv
dXRCb3goKSk7CiAgICAgYXV0byBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uID0gcmVuZGVy
Qm94LnBhcmVudCgpLT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKQEAgLTIzMCw5
ICsyNDUsOSBAQCB2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlTGF5b3V0Qm94RGltZW5z
aW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlckJveCwgcwogICAgIGF1dG8gaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUgPSBibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6VG9wVG9C
b3R0b20gfHwgYmxvY2tGbG93RGlyZWN0aW9uID09IEZsb3dEaXJlY3Rpb246OkJvdHRvbVRvVG9w
OwogCiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBsYXlvdXRTdGF0ZSgpLmVuc3VyZUdlb21ldHJ5
Rm9yQm94KGxheW91dEJveCk7Ci0gICAgYXV0byBpbmxpbmVNYXJnaW4gPSBob3Jpem9udGFsTG9n
aWNhbE1hcmdpbihyZW5kZXJCb3gsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlLCBpbnRyaW5zaWNXaWR0aE1vZGUgPyBVc2VDb21wdXRlZFZhbHVl
czo6WWVzIDogVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vKTsKLSAgICBhdXRvIGJvcmRlciA9IGxvZ2lj
YWxCb3JkZXIocmVuZGVyQm94LCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zs
b3dEaXJlY3Rpb24sIGludHJpbnNpY1dpZHRoTW9kZSA/IFVzZUNvbXB1dGVkVmFsdWVzOjpZZXMg
OiBVc2VDb21wdXRlZFZhbHVlczo6Tm8pOwotICAgIGF1dG8gcGFkZGluZyA9IGxvZ2ljYWxQYWRk
aW5nKHJlbmRlckJveCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGly
ZWN0aW9uLCBpbnRyaW5zaWNXaWR0aE1vZGUgPyBVc2VDb21wdXRlZFZhbHVlczo6WWVzIDogVXNl
Q29tcHV0ZWRWYWx1ZXM6Ok5vKTsKKyAgICBhdXRvIGlubGluZU1hcmdpbiA9IGhvcml6b250YWxM
b2dpY2FsTWFyZ2luKHJlbmRlckJveCwgYXZhaWxhYmxlV2lkdGgsIGlzTGVmdFRvUmlnaHRJbmxp
bmVEaXJlY3Rpb24sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKTsKKyAgICBhdXRvIGJvcmRlciA9
IGxvZ2ljYWxCb3JkZXIocmVuZGVyQm94LCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBi
bG9ja0Zsb3dEaXJlY3Rpb24pOworICAgIGF1dG8gcGFkZGluZyA9IGxvZ2ljYWxQYWRkaW5nKHJl
bmRlckJveCwgYXZhaWxhYmxlV2lkdGgsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJs
b2NrRmxvd0RpcmVjdGlvbik7CiAgICAgYXV0byBzY3JvbGxiYXJTaXplID0gc2Nyb2xsYmFyTG9n
aWNhbFNpemUocmVuZGVyQm94KTsKIAogICAgIGlmIChpbnRyaW5zaWNXaWR0aE1vZGUpIHsKQEAg
LTMxMCw3ICszMjUsNyBAQCB2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlTGluZUJyZWFr
Qm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJMaW5lQnJlYWsmIGxpbgogICAgICAgICBib3hHZW9t
ZXRyeS5zZXRDb250ZW50Qm94SGVpZ2h0KHsgfSk7CiB9CiAKLXZvaWQgQm94R2VvbWV0cnlVcGRh
dGVyOjp1cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25zKGNvbnN0IFJlbmRlcklubGluZSYgcmVuZGVy
SW5saW5lLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50cmluc2ljV2lkdGhNb2RlPiBpbnRyaW5z
aWNXaWR0aE1vZGUpCit2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlSW5saW5lQm94RGlt
ZW5zaW9ucyhjb25zdCBSZW5kZXJJbmxpbmUmIHJlbmRlcklubGluZSwgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgc3RkOjpvcHRpb25hbDxMYXlvdXQ6OkludHJpbnNp
Y1dpZHRoTW9kZT4gaW50cmluc2ljV2lkdGhNb2RlKQogewogICAgIGF1dG8mIGJveEdlb21ldHJ5
ID0gbGF5b3V0U3RhdGUoKS5lbnN1cmVHZW9tZXRyeUZvckJveCgqcmVuZGVySW5saW5lLmxheW91
dEJveCgpKTsKIApAQCAtMzIyLDkgKzMzNyw5IEBAIHZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1
cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25zKGNvbnN0IFJlbmRlcklubGluZSYgcmVuZGVySW5sCiAg
ICAgYXV0byBibG9ja0Zsb3dEaXJlY3Rpb24gPSB3cml0aW5nTW9kZVRvQmxvY2tGbG93RGlyZWN0
aW9uKHJlbmRlcklubGluZS5zdHlsZSgpLndyaXRpbmdNb2RlKCkpOwogICAgIGF1dG8gaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUgPSBibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6
VG9wVG9Cb3R0b20gfHwgYmxvY2tGbG93RGlyZWN0aW9uID09IEZsb3dEaXJlY3Rpb246OkJvdHRv
bVRvVG9wOwogCi0gICAgYXV0byBpbmxpbmVNYXJnaW4gPSBob3Jpem9udGFsTG9naWNhbE1hcmdp
bihyZW5kZXJJbmxpbmUsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlLCBpbnRyaW5zaWNXaWR0aE1vZGUgPyBVc2VDb21wdXRlZFZhbHVlczo6WWVz
IDogVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vLCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGluZ0Fu
ZE1hcmdpblN0YXJ0LCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGluZ0FuZE1hcmdpbkVuZCk7
Ci0gICAgYXV0byBib3JkZXIgPSBsb2dpY2FsQm9yZGVyKHJlbmRlcklubGluZSwgaXNMZWZ0VG9S
aWdodElubGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9uLCBpbnRyaW5zaWNXaWR0aE1v
ZGUgPyBVc2VDb21wdXRlZFZhbHVlczo6WWVzIDogVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vLCBJc1Bh
cnRPZkZvcm1hdHRpbmdDb250ZXh0OjpZZXMsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5n
QW5kTWFyZ2luU3RhcnQsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5kTWFyZ2luRW5k
KTsKLSAgICBhdXRvIHBhZGRpbmcgPSBsb2dpY2FsUGFkZGluZyhyZW5kZXJJbmxpbmUsIGlzTGVm
dFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlvbiwgaW50cmluc2ljV2lk
dGhNb2RlID8gVXNlQ29tcHV0ZWRWYWx1ZXM6OlllcyA6IFVzZUNvbXB1dGVkVmFsdWVzOjpObywg
SXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6WWVzLCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFk
ZGluZ0FuZE1hcmdpblN0YXJ0LCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGluZ0FuZE1hcmdp
bkVuZCk7CisgICAgYXV0byBpbmxpbmVNYXJnaW4gPSBob3Jpem9udGFsTG9naWNhbE1hcmdpbihy
ZW5kZXJJbmxpbmUsIGF2YWlsYWJsZVdpZHRoLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9u
LCBpc0hvcml6b250YWxXcml0aW5nTW9kZSwgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdB
bmRNYXJnaW5TdGFydCwgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRNYXJnaW5FbmQp
OworICAgIGF1dG8gYm9yZGVyID0gbG9naWNhbEJvcmRlcihyZW5kZXJJbmxpbmUsIGlzTGVmdFRv
UmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlvbiwgSXNQYXJ0T2ZGb3JtYXR0
aW5nQ29udGV4dDo6WWVzLCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGluZ0FuZE1hcmdpblN0
YXJ0LCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGluZ0FuZE1hcmdpbkVuZCk7CisgICAgYXV0
byBwYWRkaW5nID0gbG9naWNhbFBhZGRpbmcocmVuZGVySW5saW5lLCBhdmFpbGFibGVXaWR0aCwg
aXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9uLCBJc1BhcnRP
ZkZvcm1hdHRpbmdDb250ZXh0OjpZZXMsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5k
TWFyZ2luU3RhcnQsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5kTWFyZ2luRW5kKTsK
IAogICAgIGlmIChpbnRyaW5zaWNXaWR0aE1vZGUpIHsKICAgICAgICAgYm94R2VvbWV0cnkuc2V0
SG9yaXpvbnRhbE1hcmdpbihpbmxpbmVNYXJnaW4pOwpAQCAtMzM5LDcgKzM1NCw3IEBAIHZvaWQg
Qm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25zKGNvbnN0IFJlbmRl
cklubGluZSYgcmVuZGVySW5sCiAgICAgYm94R2VvbWV0cnkuc2V0UGFkZGluZyhwYWRkaW5nKTsK
IH0KIAotdm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnNldEdlb21ldHJpZXNGb3JMYXlvdXQoKQor
dm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnNldEdlb21ldHJpZXNGb3JMYXlvdXQoTGF5b3V0VW5p
dCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpCiB7CiAgICAgZm9yIChhdXRvIHdhbGtlciA9IElubGlu
ZVdhbGtlcihkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KGJveFRyZWUoKS5yb290UmVuZGVyZXIo
KSkpOyAhd2Fsa2VyLmF0RW5kKCk7IHdhbGtlci5hZHZhbmNlKCkpIHsKICAgICAgICAgYXV0byYg
cmVuZGVyZXIgPSAqd2Fsa2VyLmN1cnJlbnQoKTsKQEAgLTM1MCw3ICszNjUsNyBAQCB2b2lkIEJv
eEdlb21ldHJ5VXBkYXRlcjo6c2V0R2VvbWV0cmllc0ZvckxheW91dCgpCiAgICAgICAgIGlmIChy
ZW5kZXJlci5pc0Zsb2F0aW5nKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICB1
cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVy
KSk7CisgICAgICAgIHVwZGF0ZUJveEdlb21ldHJ5KGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJl
bmRlcmVyKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICB9CiB9CiAKQEAgLTM2NywxNyAr
MzgyLDE3IEBAIHZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjpzZXRHZW9tZXRyaWVzRm9ySW50cmlu
c2ljV2lkdGgoTGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogICAgICAgICBpZiAoYXV0byogcmVuZGVySW5saW5lID0gZHluYW1pY0Rvd25j
YXN0PFJlbmRlcklubGluZT4ocmVuZGVyZXIpKSB7Ci0gICAgICAgICAgICB1cGRhdGVJbmxpbmVC
b3hEaW1lbnNpb25zKCpyZW5kZXJJbmxpbmUsIGludHJpbnNpY1dpZHRoTW9kZSk7CisgICAgICAg
ICAgICB1cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25zKCpyZW5kZXJJbmxpbmUsIHsgfSwgaW50cmlu
c2ljV2lkdGhNb2RlKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAg
IGlmIChhdXRvKiByZW5kZXJMaXN0TWFya2VyID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckxpc3RN
YXJrZXI+KHJlbmRlcmVyKSkgewotICAgICAgICAgICAgdXBkYXRlTGlzdE1hcmtlckRpbWVuc2lv
bnMoKnJlbmRlckxpc3RNYXJrZXIsIGludHJpbnNpY1dpZHRoTW9kZSk7CisgICAgICAgICAgICB1
cGRhdGVMaXN0TWFya2VyRGltZW5zaW9ucygqcmVuZGVyTGlzdE1hcmtlciwgeyB9LCBpbnRyaW5z
aWNXaWR0aE1vZGUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGF1dG8qIHJlbmRlckJveCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVy
KSkgewogICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBmbGV4aW5nIGJveGVz
LgogICAgICAgICAgICAgQVNTRVJUKHJlbmRlckJveC0+c3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5p
c0ZpeGVkKCkpOwotICAgICAgICAgICAgdXBkYXRlTGF5b3V0Qm94RGltZW5zaW9ucygqcmVuZGVy
Qm94LCBpbnRyaW5zaWNXaWR0aE1vZGUpOworICAgICAgICAgICAgdXBkYXRlTGF5b3V0Qm94RGlt
ZW5zaW9ucygqcmVuZGVyQm94LCB7IH0sIGludHJpbnNpY1dpZHRoTW9kZSk7CiAgICAgICAgIH0K
ICAgICB9CiB9CkBAIC0zODksOCArNDA0LDggQEAgTGF5b3V0OjpDb25zdHJhaW50c0ZvcklubGlu
ZUNvbnRlbnQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVJbmxpbmVDb250ZW50Q29uc3QKICAg
ICBhdXRvIHdyaXRpbmdNb2RlID0gcm9vdFJlbmRlcmVyLnN0eWxlKCkud3JpdGluZ01vZGUoKTsK
ICAgICBhdXRvIGJsb2NrRmxvd0RpcmVjdGlvbiA9IHdyaXRpbmdNb2RlVG9CbG9ja0Zsb3dEaXJl
Y3Rpb24od3JpdGluZ01vZGUpOwogCi0gICAgYXV0byBwYWRkaW5nID0gbG9naWNhbFBhZGRpbmco
cm9vdFJlbmRlcmVyLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJl
Y3Rpb24sIFVzZUNvbXB1dGVkVmFsdWVzOjpObywgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6
Tm8pOwotICAgIGF1dG8gYm9yZGVyID0gbG9naWNhbEJvcmRlcihyb290UmVuZGVyZXIsIGlzTGVm
dFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlvbiwgVXNlQ29tcHV0ZWRW
YWx1ZXM6Ok5vLCBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0OjpObyk7CisgICAgYXV0byBwYWRk
aW5nID0gbG9naWNhbFBhZGRpbmcocm9vdFJlbmRlcmVyLCBtX2F2YWlsYWJsZVdpZHRoLCBpc0xl
ZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24sIElzUGFydE9mRm9y
bWF0dGluZ0NvbnRleHQ6Ok5vKTsKKyAgICBhdXRvIGJvcmRlciA9IGxvZ2ljYWxCb3JkZXIocm9v
dFJlbmRlcmVyLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rp
b24sIElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6Ok5vKTsKICAgICBhdXRvIHNjcm9sbGJhclNp
emUgPSBzY3JvbGxiYXJMb2dpY2FsU2l6ZShyb290UmVuZGVyZXIpOwogICAgIGF1dG8gc2hvdWxk
UGxhY2VWZXJ0aWNhbFNjcm9sbGJhck9uTGVmdCA9IHJvb3RSZW5kZXJlci5zaG91bGRQbGFjZVZl
cnRpY2FsU2Nyb2xsYmFyT25MZWZ0KCk7CiAKQEAgLTQwOSw3ICs0MjQsNyBAQCBMYXlvdXQ6OkNv
bnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUlubGlu
ZUNvbnRlbnRDb25zdAogICAgICAgICByb290R2VvbWV0cnkuc2V0Qm9yZGVyKGJvcmRlcik7CiAg
ICAgICAgIHJvb3RHZW9tZXRyeS5zZXRIb3Jpem9udGFsU3BhY2VGb3JTY3JvbGxiYXIoc2Nyb2xs
YmFyU2l6ZS53aWR0aCgpKTsKICAgICAgICAgcm9vdEdlb21ldHJ5LnNldFZlcnRpY2FsU3BhY2VG
b3JTY3JvbGxiYXIoc2Nyb2xsYmFyU2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgIHJvb3RHZW9tZXRy
eS5zZXRIb3Jpem9udGFsTWFyZ2luKGhvcml6b250YWxMb2dpY2FsTWFyZ2luKHJvb3RSZW5kZXJl
ciwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgV2ViQ29yZTo6aXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUod3JpdGluZ01vZGUpLCBVc2VDb21wdXRlZFZhbHVlczo6Tm8pKTsKKyAgICAgICAg
cm9vdEdlb21ldHJ5LnNldEhvcml6b250YWxNYXJnaW4oaG9yaXpvbnRhbExvZ2ljYWxNYXJnaW4o
cm9vdFJlbmRlcmVyLCBtX2F2YWlsYWJsZVdpZHRoLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0
aW9uLCBXZWJDb3JlOjppc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkpKTsKICAg
ICAgICAgcm9vdEdlb21ldHJ5LnNldFZlcnRpY2FsTWFyZ2luKHZlcnRpY2FsTG9naWNhbE1hcmdp
bihyb290UmVuZGVyZXIsIGJsb2NrRmxvd0RpcmVjdGlvbikpOwogICAgIH07CiAgICAgY3JlYXRl
Um9vdEdlb21ldHJ5SWZOZWVkZWQoKTsKQEAgLTQxNywyNCArNDMyLDI0IEBAIExheW91dDo6Q29u
c3RyYWludHNGb3JJbmxpbmVDb250ZW50IEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlSW5saW5l
Q29udGVudENvbnN0CiAgICAgcmV0dXJuIHsgeyBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnRl
bnRCb3hUb3AgfSwgdmlzdWFsTGVmdCB9OwogfQogCi12b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6
dXBkYXRlR2VvbWV0cnlBZnRlckxheW91dChjb25zdCBMYXlvdXQ6OkVsZW1lbnRCb3gmIGJveCkK
K3ZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjpzZXRHZW9tZXRyeUFmdGVySW50ZWdyYXRpb25MYXlv
dXQoY29uc3QgTGF5b3V0OjpFbGVtZW50Qm94JiBib3gsIExheW91dFVuaXQgYXZhaWxhYmxlV2lk
dGgpCiB7Ci0gICAgdXBkYXRlR2VvbWV0cnlBZnRlckxheW91dCgqZHluYW1pY0Rvd25jYXN0PFJl
bmRlckJveD4oYm94LnJlbmRlcmVyRm9ySW50ZWdyYXRpb24oKSkpOworICAgIHVwZGF0ZUJveEdl
b21ldHJ5KCpkeW5hbWljRG93bmNhc3Q8UmVuZGVyQm94Pihib3gucmVuZGVyZXJGb3JJbnRlZ3Jh
dGlvbigpKSwgYXZhaWxhYmxlV2lkdGgpOwogfQogCi12b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6
dXBkYXRlR2VvbWV0cnlBZnRlckxheW91dChjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlcikK
K3ZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVCb3hHZW9tZXRyeShjb25zdCBSZW5kZXJF
bGVtZW50JiByZW5kZXJlciwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCkKIHsKICAgICBpZiAo
aXM8UmVuZGVyUmVwbGFjZWQ+KHJlbmRlcmVyKSB8fCBpczxSZW5kZXJUYWJsZT4ocmVuZGVyZXIp
IHx8IGlzPFJlbmRlckxpc3RJdGVtPihyZW5kZXJlcikgfHwgaXM8UmVuZGVyQmxvY2s+KHJlbmRl
cmVyKSB8fCBpczxSZW5kZXJGcmFtZVNldD4ocmVuZGVyZXIpKQotICAgICAgICB1cGRhdGVMYXlv
dXRCb3hEaW1lbnNpb25zKGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIpKTsKKyAgICAgICAg
dXBkYXRlTGF5b3V0Qm94RGltZW5zaW9ucyhkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKSwg
YXZhaWxhYmxlV2lkdGgpOwogCiAgICAgaWYgKGF1dG8qIHJlbmRlckxpc3RNYXJrZXIgPSBkeW5h
bWljRG93bmNhc3Q8UmVuZGVyTGlzdE1hcmtlcj4ocmVuZGVyZXIpKQotICAgICAgICB1cGRhdGVM
aXN0TWFya2VyRGltZW5zaW9ucygqcmVuZGVyTGlzdE1hcmtlcik7CisgICAgICAgIHVwZGF0ZUxp
c3RNYXJrZXJEaW1lbnNpb25zKCpyZW5kZXJMaXN0TWFya2VyLCBhdmFpbGFibGVXaWR0aCk7CiAK
ICAgICBpZiAoYXV0byogcmVuZGVyTGluZUJyZWFrID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckxp
bmVCcmVhaz4ocmVuZGVyZXIpKQogICAgICAgICB1cGRhdGVMaW5lQnJlYWtCb3hEaW1lbnNpb25z
KCpyZW5kZXJMaW5lQnJlYWspOwogCiAgICAgaWYgKGF1dG8qIHJlbmRlcklubGluZSA9IGR5bmFt
aWNEb3duY2FzdDxSZW5kZXJJbmxpbmU+KHJlbmRlcmVyKSkKLSAgICAgICAgdXBkYXRlSW5saW5l
Qm94RGltZW5zaW9ucygqcmVuZGVySW5saW5lKTsKKyAgICAgICAgdXBkYXRlSW5saW5lQm94RGlt
ZW5zaW9ucygqcmVuZGVySW5saW5lLCBhdmFpbGFibGVXaWR0aCk7CiB9CiAKIGNvbnN0IExheW91
dDo6RWxlbWVudEJveCYgQm94R2VvbWV0cnlVcGRhdGVyOjpyb290TGF5b3V0Qm94KCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5
b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIu
aAppbmRleCBmMDkyNTNkYTc2NWYuLjgyNzJlNjcwMWQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21l
dHJ5VXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxp
bmUvTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuaApAQCAtNDcsMTkgKzQ3LDIx
IEBAIHB1YmxpYzoKICAgICBCb3hHZW9tZXRyeVVwZGF0ZXIoQm94VHJlZSYsIExheW91dDo6TGF5
b3V0U3RhdGUmKTsKICAgICBCb3hHZW9tZXRyeVVwZGF0ZXIoTGF5b3V0OjpMYXlvdXRTdGF0ZSYp
OwogCi0gICAgdm9pZCBzZXRHZW9tZXRyaWVzRm9yTGF5b3V0KCk7CisgICAgdm9pZCBzZXRHZW9t
ZXRyaWVzRm9yTGF5b3V0KExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICB2
b2lkIHNldEdlb21ldHJpZXNGb3JJbnRyaW5zaWNXaWR0aChMYXlvdXQ6OkludHJpbnNpY1dpZHRo
TW9kZSk7Ci0gICAgdm9pZCB1cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KGNvbnN0IExheW91dDo6
RWxlbWVudEJveCYpOworCisgICAgdm9pZCBzZXRHZW9tZXRyeUFmdGVySW50ZWdyYXRpb25MYXlv
dXQoY29uc3QgTGF5b3V0OjpFbGVtZW50Qm94JiwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCk7
CiAKICAgICBMYXlvdXQ6OkNvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCB1cGRhdGVJbmxpbmVD
b250ZW50Q29uc3RyYWludHMoKTsKICAgICBIYXNoTWFwPGNvbnN0IExheW91dDo6RWxlbWVudEJv
eCosIExheW91dFVuaXQ+IHRha2VOZXN0ZWRMaXN0TWFya2VyT2Zmc2V0cygpIHsgcmV0dXJuIFdU
Rk1vdmUobV9uZXN0ZWRMaXN0TWFya2VyT2Zmc2V0cyk7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lk
IHVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVyQm94Jiwgc3RkOjpvcHRpb25h
bDxMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQg
dXBkYXRlQm94R2VvbWV0cnkoY29uc3QgUmVuZGVyRWxlbWVudCYsIExheW91dFVuaXQgYXZhaWxh
YmxlV2lkdGgpOworCisgICAgdm9pZCB1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKGNvbnN0IFJl
bmRlckJveCYsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+ID0gc3RkOjpudWxsb3B0KTsKICAg
ICB2b2lkIHVwZGF0ZUxpbmVCcmVha0JveERpbWVuc2lvbnMoY29uc3QgUmVuZGVyTGluZUJyZWFr
Jik7Ci0gICAgdm9pZCB1cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25zKGNvbnN0IFJlbmRlcklubGlu
ZSYsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+ID0gc3RkOjpudWxs
b3B0KTsKLSAgICB2b2lkIHVwZGF0ZUxpc3RNYXJrZXJEaW1lbnNpb25zKGNvbnN0IFJlbmRlckxp
c3RNYXJrZXImLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50cmluc2ljV2lkdGhNb2RlPiA9IHN0
ZDo6bnVsbG9wdCk7Ci0gICAgdm9pZCB1cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KGNvbnN0IFJl
bmRlckVsZW1lbnQmKTsKKyAgICB2b2lkIHVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMoY29uc3Qg
UmVuZGVySW5saW5lJiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwg
c3RkOjpvcHRpb25hbDxMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQp
OworICAgIHZvaWQgdXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMoY29uc3QgUmVuZGVyTGlzdE1h
cmtlciYsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+ID0gc3RkOjpudWxsb3B0KTsKIAogICAg
IEJveFRyZWUmIGJveFRyZWUoKSB7IHJldHVybiAqbV9ib3hUcmVlOyB9CiAgICAgY29uc3QgQm94
VHJlZSYgYm94VHJlZSgpIGNvbnN0IHsgcmV0dXJuICptX2JveFRyZWU7IH0KQEAgLTcxLDYgKzcz
LDcgQEAgcHJpdmF0ZToKIHByaXZhdGU6CiAgICAgV2Vha1B0cjxCb3hUcmVlPiBtX2JveFRyZWU7
CiAgICAgV2Vha1B0cjxMYXlvdXQ6OkxheW91dFN0YXRlPiBtX2xheW91dFN0YXRlOworICAgIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9hdmFpbGFibGVXaWR0aDsKICAgICBIYXNoTWFwPGNv
bnN0IExheW91dDo6RWxlbWVudEJveCosIExheW91dFVuaXQ+IG1fbmVzdGVkTGlzdE1hcmtlck9m
ZnNldHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5j
cHAKaW5kZXggMTFiNDYyMjMxYzZhLi5lZTU4YWIyYWJjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5
b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xh
eW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTI0MSw5ICsyNDEsOSBAQCBib29sIExp
bmVMYXlvdXQ6OnNob3VsZEludmFsaWRhdGVMaW5lTGF5b3V0UGF0aEFmdGVyVHJlZU11dGF0aW9u
KGNvbnN0IFJlbmRlckJsbwogICAgIHJldHVybiBzaG91bGRJbnZhbGlkYXRlTGluZUxheW91dFBh
dGhBZnRlckNoYW5nZUZvcihwYXJlbnQsIHJlbmRlcmVyLCBsaW5lTGF5b3V0LCBpc1JlbW92YWwg
PyBUeXBlT2ZDaGFuZ2VGb3JJbnZhbGlkYXRpb246Ok5vZGVSZW1vdmFsIDogVHlwZU9mQ2hhbmdl
Rm9ySW52YWxpZGF0aW9uOjpOb2RlSW5zZXJ0aW9uKTsKIH0KIAotdm9pZCBMaW5lTGF5b3V0Ojp1
cGRhdGVJbmxpbmVDb250ZW50RGltZW5zaW9ucygpCit2b2lkIExpbmVMYXlvdXQ6OnVwZGF0ZUlu
bGluZUNvbnRlbnREaW1lbnNpb25zKExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoKQog
ewotICAgIG1fYm94R2VvbWV0cnlVcGRhdGVyLnNldEdlb21ldHJpZXNGb3JMYXlvdXQoKTsKKyAg
ICBtX2JveEdlb21ldHJ5VXBkYXRlci5zZXRHZW9tZXRyaWVzRm9yTGF5b3V0KGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCk7CiB9CiAKIHZvaWQgTGluZUxheW91dDo6dXBkYXRlU3R5bGUoY29uc3QgUmVu
ZGVyT2JqZWN0JiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxh
eW91dC5oCmluZGV4IDUwOWFiOTI4ODAyNy4uNjM2YjU3ODgzYTI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGlu
ZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUv
TGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBib29sIHNob3VsZEludmFsaWRhdGVMaW5lTGF5b3V0UGF0aEFmdGVyVHJlZU11
dGF0aW9uKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgcGFyZW50LCBjb25zdCBSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyLCBjb25zdCBMaW5lTGF5b3V0JiwgYm9vbCBpc1JlbW92YWwpOwogCiAgICAgdm9p
ZCB1cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMoKTsKLSAgICB2b2lkIHVwZGF0ZUlubGlu
ZUNvbnRlbnREaW1lbnNpb25zKCk7CisgICAgdm9pZCB1cGRhdGVJbmxpbmVDb250ZW50RGltZW5z
aW9ucyhMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgdm9pZCB1cGRhdGVP
dmVyZmxvdygpOwogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVN0eWxlKGNvbnN0IFJlbmRlck9iamVj
dCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmlu
ZGV4IGQyYTg1YmNkYjUzNi4uOWE0NDBlYzE4MGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzg4MCw3ICszODgwLDcgQEAgdm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OmxheW91dElubGluZUNvbnRlbnQoYm9vbCByZWxheW91dENoaWxkcmVuLCBM
YXlvdXRVbml0JiByZXAKICAgICBhdXRvJiBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlv
dXQgPSAqdGhpcy0+aW5saW5lTGF5b3V0KCk7CiAKICAgICBsYXlvdXRGb3JtYXR0aW5nQ29udGV4
dExpbmVMYXlvdXQudXBkYXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKCk7Ci0gICAgbGF5b3V0
Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LnVwZGF0ZUlubGluZUNvbnRlbnREaW1lbnNpb25z
KCk7CisgICAgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LnVwZGF0ZUlubGluZUNv
bnRlbnREaW1lbnNpb25zKGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpKTsKIAogICAgIGF1dG8gY29u
dGVudEJveFRvcCA9IGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKTsKIAo=
</data>
<flag name="commit-queue"
          id="497714"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>472613</attachid>
            <date>2024-09-20 07:10:20 -0700</date>
            <delta_ts>2024-09-20 12:46:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-280039-20240920071020.patch</filename>
            <type>text/plain</type>
            <size>29981</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA0MjZhNDZhYTFkNzhiODlkYzgzZjkzYjc0YmRlYmNmYWE4NmMxMTQwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMTkgU2VwIDIwMjQgMjA6MzE6NDkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbTEZDXVtJ
bnRlZ3JhdGlvbl0gQWx3YXlzIHJlc29sdmUgbWFyZ2luL3BhZGRpbmcgdmFsdWVzCiAoQm94R2Vv
bWV0cnlVcGRhdGVyKSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjgw
MDM5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRoaXMgaXMgaW4gcHJlcGFyYXRpb24g
Zm9yIHVzaW5nIEJveEdlb21ldHJ5VXBkYXRlciBmcm9tIEZGQy4KClVwIHVudGlsIHJ1bm5pbmcg
cmVuZGVyIGxheW91dCBfYmVmb3JlXyBMRkMgbGF5b3V0IHRoZXJlIHdhcyBhbHdheXMgdmFsaWQg
bWFyZ2luL3BhZGRpbmcgdmFsdWVzCm9uIHRoZSByZW5kZXJlcnMgKHNpbmNlIHRoZXkgd2VyZSBj
b21wdXRlZCBkdXJpbmcgdGhlaXIgbGF5b3V0KS4KSG93ZXZlciBub3cgdGhhdCB3ZSBkb24ndCBu
ZWNlc3NhcmlseSBydW4gbGF5b3V0IGJlZm9yZSBlbnRlcmluZyBMRkMsIEJveEdlb21ldHJ5VXBk
YXRlciBtYXkgaG9sZCBzdGFsZSB2YWx1ZXMuCkl0IGdldHMgY29ycmVjdGVkIHRocm91Z2ggbGF5
b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94IGxhdGVyIGJ1dCBmb3IgYSBwZXJpb2Qgb2Yg
dGltZSBCb3hHZW9tZXRyeSBoYXMgaW5jb3JyZWN0IHZhbHVlcy4KCkluIGNhc2Ugb2YgRkZDIHRo
b3VnaCwgd2UgbmV2ZXIgcnVuIGxheW91dCBvbiBmbGV4IGl0ZW1zIHVwZnJvbnQsIGFuZCB3ZSBj
ZXJ0YWlubHkgbmVlZCBtYXJnaW4vcGFkZGluZyAoYm9yZGVyKSB2YWx1ZXMKYmVmb3JlIGluaXRp
YXRpbmcgbGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94IGNhbGxzIG9uIGZsZXggaXRl
bXMuIFNvIGxldCdzIGNvbXB1dGUgdGhlc2UgdmFsdWVzIGluIEJveEdlb21ldHJ5VXBkYXRlcgoo
dGhpcyB3aWxsIGdldCBhIGJpdCBtb3JlIGNvbXBsaWNhdGVkIHdpdGggQkZDIHdpdGggbWFyZ2lu
IGNvbGxhcHNpbmcvdHJpbW1pbmcpCgotc3BlY2lhbCBjYXNlIHRhYmxlIGNlbGwncyAiaW50cmlu
c2ljIHBhZGRpbmciIHZhbHVlcy4gVGhleSBhcmUgY29tcHV0ZWQgYXQgdGhlIGNvbnRhaW5pbmcg
YmxvY2sgbGV2ZWwgc28gc2hvdWxkIGJlCmF2YWlsYWJsZSBieSB0aGUgdGltZSB3ZSBzdGFydCBy
dW5uaW5nIGxheW91dCBvbiB0aGUgY2VsbCBjb250ZW50LgoKKiBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5j
cHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250
ZXh0Rm9yQm94KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xh
eW91dEludGVncmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dElu
dGVncmF0aW9uOjp1c2VkVmFsdWVPclplcm8pOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OkJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMpOgooV2ViQ29y
ZTo6TGF5b3V0SW50ZWdyYXRpb246Omhvcml6b250YWxMb2dpY2FsTWFyZ2luKToKKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpsb2dpY2FsQm9yZGVyKToKKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpsb2dpY2FsUGFkZGluZyk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94
R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKToKKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUlubGluZUJveERpbWVu
c2lvbnMpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveEdlb21ldHJ5VXBkYXRlcjo6
c2V0R2VvbWV0cmllc0ZvckxheW91dCk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94
R2VvbWV0cnlVcGRhdGVyOjpzZXRHZW9tZXRyaWVzRm9ySW50cmluc2ljV2lkdGgpOgooV2ViQ29y
ZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlSW5saW5lQ29u
dGVudENvbnN0cmFpbnRzKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hHZW9tZXRy
eVVwZGF0ZXI6OnNldEdlb21ldHJ5QWZ0ZXJJbnRlZ3JhdGlvbkxheW91dCk6CihXZWJDb3JlOjpM
YXlvdXRJbnRlZ3JhdGlvbjo6Qm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVCb3hHZW9tZXRyeSk6
CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Zml4ZWRWYWx1ZU9yWmVybyk6IERlbGV0ZWQu
CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVH
ZW9tZXRyeUFmdGVyTGF5b3V0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmg6Ciog
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuY3BwOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6
OnVwZGF0ZUlubGluZUNvbnRlbnREaW1lbnNpb25zKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oOgoqIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgooV2ViQ29yZTo6UmVuZGVy
QmxvY2tGbG93OjpsYXlvdXRJbmxpbmVDb250ZW50KToKLS0tCiAuLi55b3V0SW50ZWdyYXRpb25G
b3JtYXR0aW5nQ29udGV4dExheW91dC5jcHAgfCAgIDMgKy0KIC4uLi9MYXlvdXRJbnRlZ3JhdGlv
bkJveEdlb21ldHJ5VXBkYXRlci5jcHAgICB8IDEwNyArKysrKysrKysrLS0tLS0tLS0KIC4uLi9M
YXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5oICAgICB8ICAxNSArLS0KIC4uLi9p
bmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCAgICB8ICAgOCArLQogLi4uL2lu
bGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCAgICAgIHwgICA0ICstCiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCAgfCAgIDQgKy0KIDYgZmlsZXMg
Y2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygrKSwgNjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uRm9ybWF0
dGluZ0NvbnRleHRMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQuY3BwCmluZGV4IDk2Yjll
ZjNkYjAyOS4uNzRjMTEyMjEwZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
Rm9ybWF0dGluZ0NvbnRleHRMYXlvdXQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
TGF5b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5oIgogCiAjaW5jbHVkZSAi
TGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJC
bG9jay5oIgogI2luY2x1ZGUgIlJlbmRlckJveC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00Nyw3ICs0OCw3IEBAIHZvaWQgbGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGNv
bnN0IExheW91dDo6RWxlbWVudEJveCYgYm94LCBzdGQ6Om9wdGlvCiAgICAgICAgIHJlbmRlcmVy
LmNsZWFyT3ZlcnJpZGluZ0xvZ2ljYWxXaWR0aExlbmd0aCgpOwogCiAgICAgYXV0byB1cGRhdGVy
ID0gQm94R2VvbWV0cnlVcGRhdGVyIHsgbGF5b3V0U3RhdGUgfTsKLSAgICB1cGRhdGVyLnVwZGF0
ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQoYm94KTsKKyAgICB1cGRhdGVyLnVwZGF0ZUdlb21ldHJ5QWZ0
ZXJMYXlvdXQoYm94LCB3aWR0aENvbnN0cmFpbnQudmFsdWVfb3IocmVuZGVyZXIuY29udGFpbmlu
Z0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpKSk7CiB9CiAKIExheW91dFVuaXQgZm9y
bWF0dGluZ0NvbnRleHRSb290TG9naWNhbFdpZHRoRm9yVHlwZShjb25zdCBMYXlvdXQ6OkVsZW1l
bnRCb3gmIGJveCwgTG9naWNhbFdpZHRoVHlwZSBsb2dpY2FsV2lkdGhUeXBlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3Jh
dGlvbkJveEdlb21ldHJ5VXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmNwcAppbmRl
eCBlNjlkOTVjM2Q1ZDAuLmI5NTVhNWJkYmZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBk
YXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9M
YXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5jcHAKQEAgLTQ5LDE1ICs0OSwyMyBA
QAogI2luY2x1ZGUgIlJlbmRlck1hdGhNTEJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2xpZGVy
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGUuaCIKKyNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwu
aCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oIgogI2luY2x1ZGUgIlJl
bmRlclRoZW1lLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXRJbnRl
Z3JhdGlvbiB7CiAKLXN0YXRpYyBMYXlvdXRVbml0IGZpeGVkVmFsdWVPclplcm8oY29uc3QgTGVu
Z3RoJiBsZW5ndGgpCisKK3N0YXRpYyBMYXlvdXRVbml0IHVzZWRWYWx1ZU9yWmVybyhjb25zdCBM
ZW5ndGgmIGxlbmd0aCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCkK
IHsKLSAgICByZXR1cm4gTGF5b3V0VW5pdCB7IGxlbmd0aC5pc0ZpeGVkKCkgPyBsZW5ndGgudmFs
dWUoKSA6IDAuZiB9OworICAgIGlmIChsZW5ndGguaXNGaXhlZCgpKQorICAgICAgICByZXR1cm4g
TGF5b3V0VW5pdCB7IGxlbmd0aC52YWx1ZSgpIH07CisKKyAgICBpZiAobGVuZ3RoLmlzQXV0bygp
IHx8ICFhdmFpbGFibGVXaWR0aCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBt
aW5pbXVtVmFsdWVGb3JMZW5ndGgobGVuZ3RoLCAqYXZhaWxhYmxlV2lkdGgpOwogfQogCiBCb3hH
ZW9tZXRyeVVwZGF0ZXI6OkJveEdlb21ldHJ5VXBkYXRlcihCb3hUcmVlJiBib3hUcmVlLCBMYXlv
dXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKQEAgLTcxLDkgKzc5LDkgQEAgQm94R2VvbWV0
cnlVcGRhdGVyOjpCb3hHZW9tZXRyeVVwZGF0ZXIoTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhdGUpCiB7CiB9CiAKLXZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVMaXN0TWFya2Vy
RGltZW5zaW9ucyhjb25zdCBSZW5kZXJMaXN0TWFya2VyJiBsaXN0TWFya2VyLCBzdGQ6Om9wdGlv
bmFsPExheW91dDo6SW50cmluc2ljV2lkdGhNb2RlPiBpbnRyaW5zaWNXaWR0aE1vZGUpCit2b2lk
IEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMoY29uc3QgUmVu
ZGVyTGlzdE1hcmtlciYgbGlzdE1hcmtlciwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFp
bGFibGVXaWR0aCwgc3RkOjpvcHRpb25hbDxMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gaW50
cmluc2ljV2lkdGhNb2RlKQogewotICAgIHVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMobGlzdE1h
cmtlciwgaW50cmluc2ljV2lkdGhNb2RlKTsKKyAgICB1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25z
KGxpc3RNYXJrZXIsIGF2YWlsYWJsZVdpZHRoLCBpbnRyaW5zaWNXaWR0aE1vZGUpOwogICAgIGlm
IChpbnRyaW5zaWNXaWR0aE1vZGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTMzLDIwICsxNDEs
MTkgQEAgc3RhdGljIGlubGluZSBMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsSGVpZ2h0Rm9yUmVu
ZGVyZXIoY29uc3QgUmVuZGVyQm94JiByZW5kZXIKICAgICByZXR1cm4gcmVuZGVyZXIucGFyZW50
KCktPnN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlbmRlcmVyLmNvbnRlbnRI
ZWlnaHQoKSA6IHJlbmRlcmVyLmNvbnRlbnRXaWR0aCgpOwogfQogCi1lbnVtIGNsYXNzIFVzZUNv
bXB1dGVkVmFsdWVzIDogYm9vbCB7IE5vLCBZZXMgfTsKLXN0YXRpYyBpbmxpbmUgTGF5b3V0OjpC
b3hHZW9tZXRyeTo6SG9yaXpvbnRhbEVkZ2VzIGhvcml6b250YWxMb2dpY2FsTWFyZ2luKGNvbnN0
IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlciwgYm9vbCBpc0xlZnRUb1JpZ2h0SW5saW5l
RGlyZWN0aW9uLCBib29sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlLCBVc2VDb21wdXRlZFZhbHVl
cyB1c2VDb21wdXRlZFZhbHVlcyA9IFVzZUNvbXB1dGVkVmFsdWVzOjpObywgYm9vbCByZXRhaW5N
YXJnaW5TdGFydCA9IHRydWUsIGJvb2wgcmV0YWluTWFyZ2luRW5kID0gdHJ1ZSkKK3N0YXRpYyBp
bmxpbmUgTGF5b3V0OjpCb3hHZW9tZXRyeTo6SG9yaXpvbnRhbEVkZ2VzIGhvcml6b250YWxMb2dp
Y2FsTWFyZ2luKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlciwgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgYm9vbCBpc0xlZnRUb1JpZ2h0SW5saW5l
RGlyZWN0aW9uLCBib29sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlLCBib29sIHJldGFpbk1hcmdp
blN0YXJ0ID0gdHJ1ZSwgYm9vbCByZXRhaW5NYXJnaW5FbmQgPSB0cnVlKQogewogICAgIGF1dG8m
IHN0eWxlID0gcmVuZGVyZXIuc3R5bGUoKTsKLSAgICBhdXRvIG1hcmdpbkxlZnQgPSB1c2VDb21w
dXRlZFZhbHVlcyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5tYXJnaW5MZWZ0
KCkgOiBmaXhlZFZhbHVlT3JaZXJvKHN0eWxlLm1hcmdpbkxlZnQoKSk7Ci0gICAgYXV0byBtYXJn
aW5SaWdodCA9IHVzZUNvbXB1dGVkVmFsdWVzID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJl
bmRlcmVyLm1hcmdpblJpZ2h0KCkgOiBmaXhlZFZhbHVlT3JaZXJvKHN0eWxlLm1hcmdpblJpZ2h0
KCkpOworICAgIGF1dG8gbWFyZ2luTGVmdCA9IHVzZWRWYWx1ZU9yWmVybyhzdHlsZS5tYXJnaW5M
ZWZ0KCksIGF2YWlsYWJsZVdpZHRoKTsKKyAgICBhdXRvIG1hcmdpblJpZ2h0ID0gdXNlZFZhbHVl
T3JaZXJvKHN0eWxlLm1hcmdpblJpZ2h0KCksIGF2YWlsYWJsZVdpZHRoKTsKICAgICBpZiAoaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUpIHsKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHRJbmxpbmVE
aXJlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm4geyByZXRhaW5NYXJnaW5TdGFydCA/IG1hcmdp
bkxlZnQgOiAwX2x1LCByZXRhaW5NYXJnaW5FbmQgPyBtYXJnaW5SaWdodCA6IDBfbHUgfTsKICAg
ICAgICAgcmV0dXJuIHsgcmV0YWluTWFyZ2luU3RhcnQgPyBtYXJnaW5SaWdodCA6IDBfbHUsIHJl
dGFpbk1hcmdpbkVuZCA/IG1hcmdpbkxlZnQgOiAwX2x1IH07CiAgICAgfQogCi0gICAgYXV0byBt
YXJnaW5Ub3AgPSB1c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyBy
ZW5kZXJlci5tYXJnaW5Ub3AoKSA6IGZpeGVkVmFsdWVPclplcm8oc3R5bGUubWFyZ2luVG9wKCkp
OwotICAgIGF1dG8gbWFyZ2luQm90dG9tID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0
ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIubWFyZ2luQm90dG9tKCkgOiBmaXhlZFZhbHVlT3JaZXJv
KHN0eWxlLm1hcmdpbkJvdHRvbSgpKTsKKyAgICBhdXRvIG1hcmdpblRvcCA9IHVzZWRWYWx1ZU9y
WmVybyhzdHlsZS5tYXJnaW5Ub3AoKSwgYXZhaWxhYmxlV2lkdGgpOworICAgIGF1dG8gbWFyZ2lu
Qm90dG9tID0gdXNlZFZhbHVlT3JaZXJvKHN0eWxlLm1hcmdpbkJvdHRvbSgpLCBhdmFpbGFibGVX
aWR0aCk7CiAgICAgaWYgKGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24pCiAgICAgICAgIHJl
dHVybiB7IHJldGFpbk1hcmdpblN0YXJ0ID8gbWFyZ2luVG9wIDogMF9sdSwgcmV0YWluTWFyZ2lu
RW5kID8gbWFyZ2luQm90dG9tIDogMF9sdSB9OwogICAgIHJldHVybiB7IHJldGFpbk1hcmdpblN0
YXJ0ID8gbWFyZ2luQm90dG9tIDogMF9sdSwgcmV0YWluTWFyZ2luRW5kID8gbWFyZ2luVG9wIDog
MF9sdSB9OwpAQCAtMTY4LDEzICsxNzUsMTMgQEAgc3RhdGljIGlubGluZSBMYXlvdXQ6OkJveEdl
b21ldHJ5OjpWZXJ0aWNhbEVkZ2VzIHZlcnRpY2FsTG9naWNhbE1hcmdpbihjb25zdCBSZW4KIH0K
IAogZW51bSBjbGFzcyBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0IDogYm9vbCB7IE5vLCBZZXMg
fTsKLXN0YXRpYyBpbmxpbmUgTGF5b3V0OjpCb3hHZW9tZXRyeTo6RWRnZXMgbG9naWNhbEJvcmRl
cihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIsIGJvb2wgaXNMZWZ0VG9SaWdo
dElubGluZURpcmVjdGlvbiwgRmxvd0RpcmVjdGlvbiBibG9ja0Zsb3dEaXJlY3Rpb24sIFVzZUNv
bXB1dGVkVmFsdWVzIHVzZUNvbXB1dGVkVmFsdWVzID0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vLCBJ
c1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0IGlzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgPSBJc1Bh
cnRPZkZvcm1hdHRpbmdDb250ZXh0OjpObywgYm9vbCByZXRhaW5Cb3JkZXJTdGFydCA9IHRydWUs
IGJvb2wgcmV0YWluQm9yZGVyRW5kID0gdHJ1ZSkKK3N0YXRpYyBpbmxpbmUgTGF5b3V0OjpCb3hH
ZW9tZXRyeTo6RWRnZXMgbG9naWNhbEJvcmRlcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYg
cmVuZGVyZXIsIGJvb2wgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgRmxvd0RpcmVjdGlv
biBibG9ja0Zsb3dEaXJlY3Rpb24sIElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgaXNQYXJ0T2ZG
b3JtYXR0aW5nQ29udGV4dCA9IElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6Ok5vLCBib29sIHJl
dGFpbkJvcmRlclN0YXJ0ID0gdHJ1ZSwgYm9vbCByZXRhaW5Cb3JkZXJFbmQgPSB0cnVlKQogewog
ICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXIuc3R5bGUoKTsKLSAgICBhdXRvIGJvcmRlckxlZnQg
PSB1c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5i
b3JkZXJMZWZ0KCkgOiBMYXlvdXRVbml0KHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpKTsKLSAgICBh
dXRvIGJvcmRlclJpZ2h0ID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6
Ok5vID8gcmVuZGVyZXIuYm9yZGVyUmlnaHQoKSA6IExheW91dFVuaXQoc3R5bGUuYm9yZGVyUmln
aHRXaWR0aCgpKTsKLSAgICBhdXRvIGJvcmRlclRvcCA9IHVzZUNvbXB1dGVkVmFsdWVzID09IFVz
ZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVyLmJvcmRlclRvcCgpIDogTGF5b3V0VW5pdChz
dHlsZS5ib3JkZXJUb3BXaWR0aCgpKTsKLSAgICBhdXRvIGJvcmRlckJvdHRvbSA9IHVzZUNvbXB1
dGVkVmFsdWVzID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVyLmJvcmRlckJvdHRv
bSgpIDogTGF5b3V0VW5pdChzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKTsKKyAgICBhdXRvIGJv
cmRlckxlZnQgPSBMYXlvdXRVbml0IHsgc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCkgfTsKKyAgICBh
dXRvIGJvcmRlclJpZ2h0ID0gTGF5b3V0VW5pdCB7IHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSB9
OworICAgIGF1dG8gYm9yZGVyVG9wID0gTGF5b3V0VW5pdCB7IHN0eWxlLmJvcmRlclRvcFdpZHRo
KCkgfTsKKyAgICBhdXRvIGJvcmRlckJvdHRvbSA9IExheW91dFVuaXQgeyBzdHlsZS5ib3JkZXJC
b3R0b21XaWR0aCgpIH07CiAKICAgICBpZiAoYmxvY2tGbG93RGlyZWN0aW9uID09IEZsb3dEaXJl
Y3Rpb246OlRvcFRvQm90dG9tIHx8IGJsb2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9u
OjpCb3R0b21Ub1RvcCkgewogICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlv
bikKQEAgLTE5MCwxOCArMTk3LDI2IEBAIHN0YXRpYyBpbmxpbmUgTGF5b3V0OjpCb3hHZW9tZXRy
eTo6RWRnZXMgbG9naWNhbEJvcmRlcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjCiAgICAgcmV0
dXJuIHsgeyBib3JkZXJMb2dpY2FsTGVmdCwgYm9yZGVyTG9naWNhbFJpZ2h0IH0sIHsgYm9yZGVy
TG9naWNhbFRvcCwgYm9yZGVyTG9naWNhbEJvdHRvbSB9IH07CiB9CiAKLXN0YXRpYyBpbmxpbmUg
TGF5b3V0OjpCb3hHZW9tZXRyeTo6RWRnZXMgbG9naWNhbFBhZGRpbmcoY29uc3QgUmVuZGVyQm94
TW9kZWxPYmplY3QmIHJlbmRlcmVyLCBib29sIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24s
IEZsb3dEaXJlY3Rpb24gYmxvY2tGbG93RGlyZWN0aW9uLCBVc2VDb21wdXRlZFZhbHVlcyB1c2VD
b21wdXRlZFZhbHVlcyA9IFVzZUNvbXB1dGVkVmFsdWVzOjpObywgSXNQYXJ0T2ZGb3JtYXR0aW5n
Q29udGV4dCBpc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0ID0gSXNQYXJ0T2ZGb3JtYXR0aW5nQ29u
dGV4dDo6Tm8sIGJvb2wgcmV0YWluUGFkZGluZ1N0YXJ0ID0gdHJ1ZSwgYm9vbCByZXRhaW5QYWRk
aW5nRW5kID0gdHJ1ZSkKK3N0YXRpYyBpbmxpbmUgTGF5b3V0OjpCb3hHZW9tZXRyeTo6RWRnZXMg
bG9naWNhbFBhZGRpbmcoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyLCBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVdpZHRoLCBib29sIGlzTGVmdFRvUmlnaHRJ
bmxpbmVEaXJlY3Rpb24sIEZsb3dEaXJlY3Rpb24gYmxvY2tGbG93RGlyZWN0aW9uLCBJc1BhcnRP
ZkZvcm1hdHRpbmdDb250ZXh0IGlzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgPSBJc1BhcnRPZkZv
cm1hdHRpbmdDb250ZXh0OjpObywgYm9vbCByZXRhaW5QYWRkaW5nU3RhcnQgPSB0cnVlLCBib29s
IHJldGFpblBhZGRpbmdFbmQgPSB0cnVlKQogewogICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXIu
c3R5bGUoKTsKLSAgICBhdXRvIHBhZGRpbmdMZWZ0ID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNl
Q29tcHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIucGFkZGluZ0xlZnQoKSA6IGZpeGVkVmFsdWVP
clplcm8oc3R5bGUucGFkZGluZ0xlZnQoKSk7Ci0gICAgYXV0byBwYWRkaW5nUmlnaHQgPSB1c2VD
b21wdXRlZFZhbHVlcyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5wYWRkaW5n
UmlnaHQoKSA6IGZpeGVkVmFsdWVPclplcm8oc3R5bGUucGFkZGluZ1JpZ2h0KCkpOwotICAgIGF1
dG8gcGFkZGluZ1RvcCA9IHVzZUNvbXB1dGVkVmFsdWVzID09IFVzZUNvbXB1dGVkVmFsdWVzOjpO
byA/IHJlbmRlcmVyLnBhZGRpbmdUb3AoKSA6IGZpeGVkVmFsdWVPclplcm8oc3R5bGUucGFkZGlu
Z1RvcCgpKTsKLSAgICBhdXRvIHBhZGRpbmdCb3R0b20gPSB1c2VDb21wdXRlZFZhbHVlcyA9PSBV
c2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5wYWRkaW5nQm90dG9tKCkgOiBmaXhlZFZh
bHVlT3JaZXJvKHN0eWxlLnBhZGRpbmdCb3R0b20oKSk7CisKKyAgICBhdXRvIHBhZGRpbmdMZWZ0
ID0gdXNlZFZhbHVlT3JaZXJvKHN0eWxlLnBhZGRpbmdMZWZ0KCksIGF2YWlsYWJsZVdpZHRoKTsK
KyAgICBhdXRvIHBhZGRpbmdSaWdodCA9IHVzZWRWYWx1ZU9yWmVybyhzdHlsZS5wYWRkaW5nUmln
aHQoKSwgYXZhaWxhYmxlV2lkdGgpOworICAgIGF1dG8gcGFkZGluZ1RvcCA9IHVzZWRWYWx1ZU9y
WmVybyhzdHlsZS5wYWRkaW5nVG9wKCksIGF2YWlsYWJsZVdpZHRoKTsKKyAgICBhdXRvIHBhZGRp
bmdCb3R0b20gPSB1c2VkVmFsdWVPclplcm8oc3R5bGUucGFkZGluZ0JvdHRvbSgpLCBhdmFpbGFi
bGVXaWR0aCk7CisKKyAgICBhdXRvIGludHJpbnNpY1BhZGRpbmdCZWZvcmUgPSBMYXlvdXRVbml0
IHsgfTsKKyAgICBhdXRvIGludHJpbnNpY1BhZGRpbmdBZnRlciA9IExheW91dFVuaXQgeyB9Owor
ICAgIGlmIChhdXRvKiB0YWJsZUNlbGwgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGFibGVDZWxs
PihyZW5kZXJlcikpIHsKKyAgICAgICAgaW50cmluc2ljUGFkZGluZ0JlZm9yZSA9IHRhYmxlQ2Vs
bC0+aW50cmluc2ljUGFkZGluZ0JlZm9yZSgpOworICAgICAgICBpbnRyaW5zaWNQYWRkaW5nQWZ0
ZXIgPSB0YWJsZUNlbGwtPmludHJpbnNpY1BhZGRpbmdBZnRlcigpOworICAgIH0KIAogICAgIGlm
IChibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6VG9wVG9Cb3R0b20gfHwgYmxv
Y2tGbG93RGlyZWN0aW9uID09IEZsb3dEaXJlY3Rpb246OkJvdHRvbVRvVG9wKSB7CiAgICAgICAg
IGlmIChpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuIHsg
eyByZXRhaW5QYWRkaW5nU3RhcnQgPyBwYWRkaW5nTGVmdCA6IDBfbHUsIHJldGFpblBhZGRpbmdF
bmQgPyBwYWRkaW5nUmlnaHQgOiAwX2x1IH0sIHsgcGFkZGluZ1RvcCwgcGFkZGluZ0JvdHRvbSB9
IH07Ci0gICAgICAgIHJldHVybiB7IHsgcmV0YWluUGFkZGluZ1N0YXJ0ID8gcGFkZGluZ1JpZ2h0
IDogMF9sdSwgcmV0YWluUGFkZGluZ0VuZCA/IHBhZGRpbmdMZWZ0IDogMF9sdSB9LCB7IHBhZGRp
bmdUb3AsIHBhZGRpbmdCb3R0b20gfSB9OworICAgICAgICAgICAgcmV0dXJuIHsgeyByZXRhaW5Q
YWRkaW5nU3RhcnQgPyBwYWRkaW5nTGVmdCA6IDBfbHUsIHJldGFpblBhZGRpbmdFbmQgPyBwYWRk
aW5nUmlnaHQgOiAwX2x1IH0sIHsgcGFkZGluZ1RvcCArIGludHJpbnNpY1BhZGRpbmdCZWZvcmUs
IHBhZGRpbmdCb3R0b20gKyBpbnRyaW5zaWNQYWRkaW5nQWZ0ZXIgfSB9OworICAgICAgICByZXR1
cm4geyB7IHJldGFpblBhZGRpbmdTdGFydCA/IHBhZGRpbmdSaWdodCA6IDBfbHUsIHJldGFpblBh
ZGRpbmdFbmQgPyBwYWRkaW5nTGVmdCA6IDBfbHUgfSwgeyBwYWRkaW5nVG9wICsgaW50cmluc2lj
UGFkZGluZ0JlZm9yZSwgcGFkZGluZ0JvdHRvbSArIGludHJpbnNpY1BhZGRpbmdBZnRlciB9IH07
CiAgICAgfQogCiAgICAgYXV0byBwYWRkaW5nTG9naWNhbExlZnQgPSByZXRhaW5QYWRkaW5nU3Rh
cnQgPyBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uID8gcGFkZGluZ1RvcCA6IHBhZGRpbmdC
b3R0b20gOiAwX2x1OwpAQCAtMjA5LDcgKzIyNCw3IEBAIHN0YXRpYyBpbmxpbmUgTGF5b3V0OjpC
b3hHZW9tZXRyeTo6RWRnZXMgbG9naWNhbFBhZGRpbmcoY29uc3QgUmVuZGVyQm94TW9kZWxPYmpl
CiAgICAgLy8gRm9yIGJveGVzIGluc2lkZSB0aGUgZm9ybWF0dGluZyBjb250ZXh0LCByaWdodCBw
YWRkaW5nIChib3JkZXIpIGFsd2F5cyBwb2ludHMgdXAsIHdoaWxlIHdoZW4gY29udmVydGluZyB0
aGUgZm9ybWF0dGluZyBjb250ZXh0IHJvb3QncyBwYWRkaW5nIChib3JkZXIpIHRoZSBkaXJlY3Rp
b25hbGl0eSBtYXR0ZXJzLgogICAgIGF1dG8gcGFkZGluZ0xvZ2ljYWxUb3AgPSBpc1BhcnRPZkZv
cm1hdHRpbmdDb250ZXh0ID09IElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6OlllcyA/IHBhZGRp
bmdSaWdodCA6IGJsb2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpMZWZ0VG9SaWdo
dCA/IHBhZGRpbmdMZWZ0IDogcGFkZGluZ1JpZ2h0OwogICAgIGF1dG8gcGFkZGluZ0xvZ2ljYWxC
b3R0b20gPSBpc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0ID09IElzUGFydE9mRm9ybWF0dGluZ0Nv
bnRleHQ6OlllcyA/IHBhZGRpbmdMZWZ0IDogYmxvY2tGbG93RGlyZWN0aW9uID09IEZsb3dEaXJl
Y3Rpb246OkxlZnRUb1JpZ2h0ID8gcGFkZGluZ1JpZ2h0IDogcGFkZGluZ0xlZnQ7Ci0gICAgcmV0
dXJuIHsgeyBwYWRkaW5nTG9naWNhbExlZnQsIHBhZGRpbmdMb2dpY2FsUmlnaHQgfSwgeyBwYWRk
aW5nTG9naWNhbFRvcCwgcGFkZGluZ0xvZ2ljYWxCb3R0b20gfSB9OworICAgIHJldHVybiB7IHsg
cGFkZGluZ0xvZ2ljYWxMZWZ0LCBwYWRkaW5nTG9naWNhbFJpZ2h0IH0sIHsgcGFkZGluZ0xvZ2lj
YWxUb3AgKyBpbnRyaW5zaWNQYWRkaW5nQmVmb3JlLCBwYWRkaW5nTG9naWNhbEJvdHRvbSArIGlu
dHJpbnNpY1BhZGRpbmdBZnRlciB9IH07CiB9CiAKIHN0YXRpYyBpbmxpbmUgTGF5b3V0U2l6ZSBz
Y3JvbGxiYXJMb2dpY2FsU2l6ZShjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyKQpAQCAtMjIyLDcg
KzIzNyw3IEBAIHN0YXRpYyBpbmxpbmUgTGF5b3V0U2l6ZSBzY3JvbGxiYXJMb2dpY2FsU2l6ZShj
b25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyKQogICAgIHJldHVybiB7IGhvcml6b250YWxTcGFjZVJl
c2VydmVkRm9yU2Nyb2xsYmFyLCB2ZXJ0aWNhbFNwYWNlUmVzZXJ2ZWRGb3JTY3JvbGxiYXIgfTsK
IH0KIAotdm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMo
Y29uc3QgUmVuZGVyQm94JiByZW5kZXJCb3gsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5z
aWNXaWR0aE1vZGU+IGludHJpbnNpY1dpZHRoTW9kZSkKK3ZvaWQgQm94R2VvbWV0cnlVcGRhdGVy
Ojp1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyQm94LCBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVdpZHRoLCBzdGQ6Om9wdGlvbmFsPExh
eW91dDo6SW50cmluc2ljV2lkdGhNb2RlPiBpbnRyaW5zaWNXaWR0aE1vZGUpCiB7CiAgICAgYXV0
byYgbGF5b3V0Qm94ID0gY29uc3RfY2FzdDxMYXlvdXQ6OkVsZW1lbnRCb3gmPigqcmVuZGVyQm94
LmxheW91dEJveCgpKTsKICAgICBhdXRvIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24gPSBy
ZW5kZXJCb3gucGFyZW50KCktPnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwpAQCAt
MjMwLDkgKzI0NSw5IEBAIHZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVMYXlvdXRCb3hE
aW1lbnNpb25zKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyQm94LCBzCiAgICAgYXV0byBpc0hvcml6
b250YWxXcml0aW5nTW9kZSA9IGJsb2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpU
b3BUb0JvdHRvbSB8fCBibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6Qm90dG9t
VG9Ub3A7CiAKICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGxheW91dFN0YXRlKCkuZW5zdXJlR2Vv
bWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKLSAgICBhdXRvIGlubGluZU1hcmdpbiA9IGhvcml6b250
YWxMb2dpY2FsTWFyZ2luKHJlbmRlckJveCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwg
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUsIGludHJpbnNpY1dpZHRoTW9kZSA/IFVzZUNvbXB1dGVk
VmFsdWVzOjpZZXMgOiBVc2VDb21wdXRlZFZhbHVlczo6Tm8pOwotICAgIGF1dG8gYm9yZGVyID0g
bG9naWNhbEJvcmRlcihyZW5kZXJCb3gsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJs
b2NrRmxvd0RpcmVjdGlvbiwgaW50cmluc2ljV2lkdGhNb2RlID8gVXNlQ29tcHV0ZWRWYWx1ZXM6
OlllcyA6IFVzZUNvbXB1dGVkVmFsdWVzOjpObyk7Ci0gICAgYXV0byBwYWRkaW5nID0gbG9naWNh
bFBhZGRpbmcocmVuZGVyQm94LCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zs
b3dEaXJlY3Rpb24sIGludHJpbnNpY1dpZHRoTW9kZSA/IFVzZUNvbXB1dGVkVmFsdWVzOjpZZXMg
OiBVc2VDb21wdXRlZFZhbHVlczo6Tm8pOworICAgIGF1dG8gaW5saW5lTWFyZ2luID0gaG9yaXpv
bnRhbExvZ2ljYWxNYXJnaW4ocmVuZGVyQm94LCBhdmFpbGFibGVXaWR0aCwgaXNMZWZ0VG9SaWdo
dElubGluZURpcmVjdGlvbiwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUpOworICAgIGF1dG8gYm9y
ZGVyID0gbG9naWNhbEJvcmRlcihyZW5kZXJCb3gsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rp
b24sIGJsb2NrRmxvd0RpcmVjdGlvbik7CisgICAgYXV0byBwYWRkaW5nID0gbG9naWNhbFBhZGRp
bmcocmVuZGVyQm94LCBhdmFpbGFibGVXaWR0aCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlv
biwgYmxvY2tGbG93RGlyZWN0aW9uKTsKICAgICBhdXRvIHNjcm9sbGJhclNpemUgPSBzY3JvbGxi
YXJMb2dpY2FsU2l6ZShyZW5kZXJCb3gpOwogCiAgICAgaWYgKGludHJpbnNpY1dpZHRoTW9kZSkg
ewpAQCAtMzEwLDcgKzMyNSw3IEBAIHZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVMaW5l
QnJlYWtCb3hEaW1lbnNpb25zKGNvbnN0IFJlbmRlckxpbmVCcmVhayYgbGluCiAgICAgICAgIGJv
eEdlb21ldHJ5LnNldENvbnRlbnRCb3hIZWlnaHQoeyB9KTsKIH0KIAotdm9pZCBCb3hHZW9tZXRy
eVVwZGF0ZXI6OnVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVySW5saW5lJiBy
ZW5kZXJJbmxpbmUsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+IGlu
dHJpbnNpY1dpZHRoTW9kZSkKK3ZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVJbmxpbmVC
b3hEaW1lbnNpb25zKGNvbnN0IFJlbmRlcklubGluZSYgcmVuZGVySW5saW5lLCBzdGQ6Om9wdGlv
bmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVdpZHRoLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50
cmluc2ljV2lkdGhNb2RlPiBpbnRyaW5zaWNXaWR0aE1vZGUpCiB7CiAgICAgYXV0byYgYm94R2Vv
bWV0cnkgPSBsYXlvdXRTdGF0ZSgpLmVuc3VyZUdlb21ldHJ5Rm9yQm94KCpyZW5kZXJJbmxpbmUu
bGF5b3V0Qm94KCkpOwogCkBAIC0zMjIsOSArMzM3LDkgQEAgdm9pZCBCb3hHZW9tZXRyeVVwZGF0
ZXI6OnVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVySW5saW5lJiByZW5kZXJJ
bmwKICAgICBhdXRvIGJsb2NrRmxvd0RpcmVjdGlvbiA9IHdyaXRpbmdNb2RlVG9CbG9ja0Zsb3dE
aXJlY3Rpb24ocmVuZGVySW5saW5lLnN0eWxlKCkud3JpdGluZ01vZGUoKSk7CiAgICAgYXV0byBp
c0hvcml6b250YWxXcml0aW5nTW9kZSA9IGJsb2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0
aW9uOjpUb3BUb0JvdHRvbSB8fCBibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6
Qm90dG9tVG9Ub3A7CiAKLSAgICBhdXRvIGlubGluZU1hcmdpbiA9IGhvcml6b250YWxMb2dpY2Fs
TWFyZ2luKHJlbmRlcklubGluZSwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUsIGludHJpbnNpY1dpZHRoTW9kZSA/IFVzZUNvbXB1dGVkVmFsdWVz
OjpZZXMgOiBVc2VDb21wdXRlZFZhbHVlczo6Tm8sICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRk
aW5nQW5kTWFyZ2luU3RhcnQsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5kTWFyZ2lu
RW5kKTsKLSAgICBhdXRvIGJvcmRlciA9IGxvZ2ljYWxCb3JkZXIocmVuZGVySW5saW5lLCBpc0xl
ZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24sIGludHJpbnNpY1dp
ZHRoTW9kZSA/IFVzZUNvbXB1dGVkVmFsdWVzOjpZZXMgOiBVc2VDb21wdXRlZFZhbHVlczo6Tm8s
IElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6OlllcywgIXNob3VsZE5vdFJldGFpbkJvcmRlclBh
ZGRpbmdBbmRNYXJnaW5TdGFydCwgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRNYXJn
aW5FbmQpOwotICAgIGF1dG8gcGFkZGluZyA9IGxvZ2ljYWxQYWRkaW5nKHJlbmRlcklubGluZSwg
aXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9uLCBpbnRyaW5z
aWNXaWR0aE1vZGUgPyBVc2VDb21wdXRlZFZhbHVlczo6WWVzIDogVXNlQ29tcHV0ZWRWYWx1ZXM6
Ok5vLCBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0OjpZZXMsICFzaG91bGROb3RSZXRhaW5Cb3Jk
ZXJQYWRkaW5nQW5kTWFyZ2luU3RhcnQsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5k
TWFyZ2luRW5kKTsKKyAgICBhdXRvIGlubGluZU1hcmdpbiA9IGhvcml6b250YWxMb2dpY2FsTWFy
Z2luKHJlbmRlcklubGluZSwgYXZhaWxhYmxlV2lkdGgsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJl
Y3Rpb24sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlLCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFk
ZGluZ0FuZE1hcmdpblN0YXJ0LCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGluZ0FuZE1hcmdp
bkVuZCk7CisgICAgYXV0byBib3JkZXIgPSBsb2dpY2FsQm9yZGVyKHJlbmRlcklubGluZSwgaXNM
ZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9uLCBJc1BhcnRPZkZv
cm1hdHRpbmdDb250ZXh0OjpZZXMsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5kTWFy
Z2luU3RhcnQsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5kTWFyZ2luRW5kKTsKKyAg
ICBhdXRvIHBhZGRpbmcgPSBsb2dpY2FsUGFkZGluZyhyZW5kZXJJbmxpbmUsIGF2YWlsYWJsZVdp
ZHRoLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24sIElz
UGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6OlllcywgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRp
bmdBbmRNYXJnaW5TdGFydCwgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRNYXJnaW5F
bmQpOwogCiAgICAgaWYgKGludHJpbnNpY1dpZHRoTW9kZSkgewogICAgICAgICBib3hHZW9tZXRy
eS5zZXRIb3Jpem9udGFsTWFyZ2luKGlubGluZU1hcmdpbik7CkBAIC0zMzksNyArMzU0LDcgQEAg
dm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMoY29uc3Qg
UmVuZGVySW5saW5lJiByZW5kZXJJbmwKICAgICBib3hHZW9tZXRyeS5zZXRQYWRkaW5nKHBhZGRp
bmcpOwogfQogCi12b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6c2V0R2VvbWV0cmllc0ZvckxheW91
dCgpCit2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6c2V0R2VvbWV0cmllc0ZvckxheW91dChMYXlv
dXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkKIHsKICAgICBmb3IgKGF1dG8gd2Fsa2VyID0g
SW5saW5lV2Fsa2VyKGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oYm94VHJlZSgpLnJvb3RSZW5k
ZXJlcigpKSk7ICF3YWxrZXIuYXRFbmQoKTsgd2Fsa2VyLmFkdmFuY2UoKSkgewogICAgICAgICBh
dXRvJiByZW5kZXJlciA9ICp3YWxrZXIuY3VycmVudCgpOwpAQCAtMzUwLDcgKzM2NSw3IEBAIHZv
aWQgQm94R2VvbWV0cnlVcGRhdGVyOjpzZXRHZW9tZXRyaWVzRm9yTGF5b3V0KCkKICAgICAgICAg
aWYgKHJlbmRlcmVyLmlzRmxvYXRpbmcoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIHVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVu
ZGVyZXIpKTsKKyAgICAgICAgdXBkYXRlQm94R2VvbWV0cnkoZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4ocmVuZGVyZXIpLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAgIH0KIH0KIApAQCAtMzY3
LDMwICszODIsMzAgQEAgdm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnNldEdlb21ldHJpZXNGb3JJ
bnRyaW5zaWNXaWR0aChMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW8KICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChhdXRvKiByZW5kZXJJbmxpbmUgPSBkeW5hbWlj
RG93bmNhc3Q8UmVuZGVySW5saW5lPihyZW5kZXJlcikpIHsKLSAgICAgICAgICAgIHVwZGF0ZUlu
bGluZUJveERpbWVuc2lvbnMoKnJlbmRlcklubGluZSwgaW50cmluc2ljV2lkdGhNb2RlKTsKKyAg
ICAgICAgICAgIHVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMoKnJlbmRlcklubGluZSwgeyB9LCBp
bnRyaW5zaWNXaWR0aE1vZGUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKGF1dG8qIHJlbmRlckxpc3RNYXJrZXIgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVy
TGlzdE1hcmtlcj4ocmVuZGVyZXIpKSB7Ci0gICAgICAgICAgICB1cGRhdGVMaXN0TWFya2VyRGlt
ZW5zaW9ucygqcmVuZGVyTGlzdE1hcmtlciwgaW50cmluc2ljV2lkdGhNb2RlKTsKKyAgICAgICAg
ICAgIHVwZGF0ZUxpc3RNYXJrZXJEaW1lbnNpb25zKCpyZW5kZXJMaXN0TWFya2VyLCB7IH0sIGlu
dHJpbnNpY1dpZHRoTW9kZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoYXV0byogcmVuZGVyQm94ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4ocmVu
ZGVyZXIpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGZsZXhpbmcg
Ym94ZXMuCiAgICAgICAgICAgICBBU1NFUlQocmVuZGVyQm94LT5zdHlsZSgpLmxvZ2ljYWxXaWR0
aCgpLmlzRml4ZWQoKSk7Ci0gICAgICAgICAgICB1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKCpy
ZW5kZXJCb3gsIGludHJpbnNpY1dpZHRoTW9kZSk7CisgICAgICAgICAgICB1cGRhdGVMYXlvdXRC
b3hEaW1lbnNpb25zKCpyZW5kZXJCb3gsIHsgfSwgaW50cmluc2ljV2lkdGhNb2RlKTsKICAgICAg
ICAgfQogICAgIH0KIH0KIAotTGF5b3V0OjpDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQgQm94
R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMoKQorTGF5b3V0
OjpDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVJ
bmxpbmVDb250ZW50Q29uc3RyYWludHMoTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCkKIHsKICAg
ICBhdXRvJiByb290UmVuZGVyZXIgPSBib3hUcmVlKCkucm9vdFJlbmRlcmVyKCk7CiAgICAgYXV0
byBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uID0gcm9vdFJlbmRlcmVyLnN0eWxlKCkuaXNM
ZWZ0VG9SaWdodERpcmVjdGlvbigpOwogICAgIGF1dG8gd3JpdGluZ01vZGUgPSByb290UmVuZGVy
ZXIuc3R5bGUoKS53cml0aW5nTW9kZSgpOwogICAgIGF1dG8gYmxvY2tGbG93RGlyZWN0aW9uID0g
d3JpdGluZ01vZGVUb0Jsb2NrRmxvd0RpcmVjdGlvbih3cml0aW5nTW9kZSk7CiAKLSAgICBhdXRv
IHBhZGRpbmcgPSBsb2dpY2FsUGFkZGluZyhyb290UmVuZGVyZXIsIGlzTGVmdFRvUmlnaHRJbmxp
bmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlvbiwgVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vLCBJ
c1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0OjpObyk7Ci0gICAgYXV0byBib3JkZXIgPSBsb2dpY2Fs
Qm9yZGVyKHJvb3RSZW5kZXJlciwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYmxvY2tG
bG93RGlyZWN0aW9uLCBVc2VDb21wdXRlZFZhbHVlczo6Tm8sIElzUGFydE9mRm9ybWF0dGluZ0Nv
bnRleHQ6Ok5vKTsKKyAgICBhdXRvIHBhZGRpbmcgPSBsb2dpY2FsUGFkZGluZyhyb290UmVuZGVy
ZXIsIGF2YWlsYWJsZVdpZHRoLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zs
b3dEaXJlY3Rpb24sIElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6Ok5vKTsKKyAgICBhdXRvIGJv
cmRlciA9IGxvZ2ljYWxCb3JkZXIocm9vdFJlbmRlcmVyLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGly
ZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24sIElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6Ok5v
KTsKICAgICBhdXRvIHNjcm9sbGJhclNpemUgPSBzY3JvbGxiYXJMb2dpY2FsU2l6ZShyb290UmVu
ZGVyZXIpOwogICAgIGF1dG8gc2hvdWxkUGxhY2VWZXJ0aWNhbFNjcm9sbGJhck9uTGVmdCA9IHJv
b3RSZW5kZXJlci5zaG91bGRQbGFjZVZlcnRpY2FsU2Nyb2xsYmFyT25MZWZ0KCk7CiAKQEAgLTQw
OSw3ICs0MjQsNyBAQCBMYXlvdXQ6OkNvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCBCb3hHZW9t
ZXRyeVVwZGF0ZXI6OnVwZGF0ZUlubGluZUNvbnRlbnRDb25zdAogICAgICAgICByb290R2VvbWV0
cnkuc2V0Qm9yZGVyKGJvcmRlcik7CiAgICAgICAgIHJvb3RHZW9tZXRyeS5zZXRIb3Jpem9udGFs
U3BhY2VGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyU2l6ZS53aWR0aCgpKTsKICAgICAgICAgcm9vdEdl
b21ldHJ5LnNldFZlcnRpY2FsU3BhY2VGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyU2l6ZS5oZWlnaHQo
KSk7Ci0gICAgICAgIHJvb3RHZW9tZXRyeS5zZXRIb3Jpem9udGFsTWFyZ2luKGhvcml6b250YWxM
b2dpY2FsTWFyZ2luKHJvb3RSZW5kZXJlciwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwg
V2ViQ29yZTo6aXNIb3Jpem9udGFsV3JpdGluZ01vZGUod3JpdGluZ01vZGUpLCBVc2VDb21wdXRl
ZFZhbHVlczo6Tm8pKTsKKyAgICAgICAgcm9vdEdlb21ldHJ5LnNldEhvcml6b250YWxNYXJnaW4o
aG9yaXpvbnRhbExvZ2ljYWxNYXJnaW4ocm9vdFJlbmRlcmVyLCBhdmFpbGFibGVXaWR0aCwgaXNM
ZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgV2ViQ29yZTo6aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUod3JpdGluZ01vZGUpKSk7CiAgICAgICAgIHJvb3RHZW9tZXRyeS5zZXRWZXJ0aWNhbE1hcmdp
bih2ZXJ0aWNhbExvZ2ljYWxNYXJnaW4ocm9vdFJlbmRlcmVyLCBibG9ja0Zsb3dEaXJlY3Rpb24p
KTsKICAgICB9OwogICAgIGNyZWF0ZVJvb3RHZW9tZXRyeUlmTmVlZGVkKCk7CkBAIC00MTcsMjQg
KzQzMiwyNCBAQCBMYXlvdXQ6OkNvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCBCb3hHZW9tZXRy
eVVwZGF0ZXI6OnVwZGF0ZUlubGluZUNvbnRlbnRDb25zdAogICAgIHJldHVybiB7IHsgaG9yaXpv
bnRhbENvbnN0cmFpbnRzLCBjb250ZW50Qm94VG9wIH0sIHZpc3VhbExlZnQgfTsKIH0KIAotdm9p
ZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQoY29uc3QgTGF5
b3V0OjpFbGVtZW50Qm94JiBib3gpCit2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlR2Vv
bWV0cnlBZnRlckxheW91dChjb25zdCBMYXlvdXQ6OkVsZW1lbnRCb3gmIGJveCwgTGF5b3V0VW5p
dCBhdmFpbGFibGVXaWR0aCkKIHsKLSAgICB1cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KCpkeW5h
bWljRG93bmNhc3Q8UmVuZGVyQm94Pihib3gucmVuZGVyZXJGb3JJbnRlZ3JhdGlvbigpKSk7Cisg
ICAgdXBkYXRlQm94R2VvbWV0cnkoKmR5bmFtaWNEb3duY2FzdDxSZW5kZXJCb3g+KGJveC5yZW5k
ZXJlckZvckludGVncmF0aW9uKCkpLCBhdmFpbGFibGVXaWR0aCk7CiB9CiAKLXZvaWQgQm94R2Vv
bWV0cnlVcGRhdGVyOjp1cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KGNvbnN0IFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyKQordm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUJveEdlb21ldHJ5
KGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRo
KQogewogICAgIGlmIChpczxSZW5kZXJSZXBsYWNlZD4ocmVuZGVyZXIpIHx8IGlzPFJlbmRlclRh
YmxlPihyZW5kZXJlcikgfHwgaXM8UmVuZGVyTGlzdEl0ZW0+KHJlbmRlcmVyKSB8fCBpczxSZW5k
ZXJCbG9jaz4ocmVuZGVyZXIpIHx8IGlzPFJlbmRlckZyYW1lU2V0PihyZW5kZXJlcikpCi0gICAg
ICAgIHVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMoZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJl
cikpOworICAgICAgICB1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKGRvd25jYXN0PFJlbmRlckJv
eD4ocmVuZGVyZXIpLCBhdmFpbGFibGVXaWR0aCk7CiAKICAgICBpZiAoYXV0byogcmVuZGVyTGlz
dE1hcmtlciA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJMaXN0TWFya2VyPihyZW5kZXJlcikpCi0g
ICAgICAgIHVwZGF0ZUxpc3RNYXJrZXJEaW1lbnNpb25zKCpyZW5kZXJMaXN0TWFya2VyKTsKKyAg
ICAgICAgdXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMoKnJlbmRlckxpc3RNYXJrZXIsIGF2YWls
YWJsZVdpZHRoKTsKIAogICAgIGlmIChhdXRvKiByZW5kZXJMaW5lQnJlYWsgPSBkeW5hbWljRG93
bmNhc3Q8UmVuZGVyTGluZUJyZWFrPihyZW5kZXJlcikpCiAgICAgICAgIHVwZGF0ZUxpbmVCcmVh
a0JveERpbWVuc2lvbnMoKnJlbmRlckxpbmVCcmVhayk7CiAKICAgICBpZiAoYXV0byogcmVuZGVy
SW5saW5lID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlcklubGluZT4ocmVuZGVyZXIpKQotICAgICAg
ICB1cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25zKCpyZW5kZXJJbmxpbmUpOworICAgICAgICB1cGRh
dGVJbmxpbmVCb3hEaW1lbnNpb25zKCpyZW5kZXJJbmxpbmUsIGF2YWlsYWJsZVdpZHRoKTsKIH0K
IAogY29uc3QgTGF5b3V0OjpFbGVtZW50Qm94JiBCb3hHZW9tZXRyeVVwZGF0ZXI6OnJvb3RMYXlv
dXRCb3goKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdl
b21ldHJ5VXBkYXRlci5oCmluZGV4IGYwOTI1M2RhNzY1Zi4uMzVjNWJkOTAxOGMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVn
cmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5oCkBA
IC00NywxOSArNDcsMjAgQEAgcHVibGljOgogICAgIEJveEdlb21ldHJ5VXBkYXRlcihCb3hUcmVl
JiwgTGF5b3V0OjpMYXlvdXRTdGF0ZSYpOwogICAgIEJveEdlb21ldHJ5VXBkYXRlcihMYXlvdXQ6
OkxheW91dFN0YXRlJik7CiAKLSAgICB2b2lkIHNldEdlb21ldHJpZXNGb3JMYXlvdXQoKTsKKyAg
ICB2b2lkIHNldEdlb21ldHJpZXNGb3JMYXlvdXQoTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2Fs
V2lkdGgpOwogICAgIHZvaWQgc2V0R2VvbWV0cmllc0ZvckludHJpbnNpY1dpZHRoKExheW91dDo6
SW50cmluc2ljV2lkdGhNb2RlKTsKLSAgICB2b2lkIHVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQo
Y29uc3QgTGF5b3V0OjpFbGVtZW50Qm94Jik7CisgICAgdm9pZCB1cGRhdGVHZW9tZXRyeUFmdGVy
TGF5b3V0KGNvbnN0IExheW91dDo6RWxlbWVudEJveCYsIExheW91dFVuaXQgYXZhaWxhYmxlV2lk
dGgpOwogCi0gICAgTGF5b3V0OjpDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQgdXBkYXRlSW5s
aW5lQ29udGVudENvbnN0cmFpbnRzKCk7CisgICAgTGF5b3V0OjpDb25zdHJhaW50c0ZvcklubGlu
ZUNvbnRlbnQgdXBkYXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKExheW91dFVuaXQgYXZhaWxh
YmxlV2lkdGgpOwogICAgIEhhc2hNYXA8Y29uc3QgTGF5b3V0OjpFbGVtZW50Qm94KiwgTGF5b3V0
VW5pdD4gdGFrZU5lc3RlZExpc3RNYXJrZXJPZmZzZXRzKCkgeyByZXR1cm4gV1RGTW92ZShtX25l
c3RlZExpc3RNYXJrZXJPZmZzZXRzKTsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgdXBkYXRlTGF5
b3V0Qm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJCb3gmLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6
SW50cmluc2ljV2lkdGhNb2RlPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCB1cGRhdGVCb3hH
ZW9tZXRyeShjb25zdCBSZW5kZXJFbGVtZW50JiwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCk7
CisKKyAgICB2b2lkIHVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVyQm94Jiwg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgc3RkOjpvcHRpb25hbDxM
YXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgdXBk
YXRlTGluZUJyZWFrQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJMaW5lQnJlYWsmKTsKLSAgICB2
b2lkIHVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVySW5saW5lJiwgc3RkOjpv
cHRpb25hbDxMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOwotICAg
IHZvaWQgdXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMoY29uc3QgUmVuZGVyTGlzdE1hcmtlciYs
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+ID0gc3RkOjpudWxsb3B0
KTsKLSAgICB2b2lkIHVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQoY29uc3QgUmVuZGVyRWxlbWVu
dCYpOworICAgIHZvaWQgdXBkYXRlSW5saW5lQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJJbmxp
bmUmLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVdpZHRoLCBzdGQ6Om9wdGlv
bmFsPExheW91dDo6SW50cmluc2ljV2lkdGhNb2RlPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9p
ZCB1cGRhdGVMaXN0TWFya2VyRGltZW5zaW9ucyhjb25zdCBSZW5kZXJMaXN0TWFya2VyJiwgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgc3RkOjpvcHRpb25hbDxMYXlv
dXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgQm94VHJlZSYg
Ym94VHJlZSgpIHsgcmV0dXJuICptX2JveFRyZWU7IH0KICAgICBjb25zdCBCb3hUcmVlJiBib3hU
cmVlKCkgY29uc3QgeyByZXR1cm4gKm1fYm94VHJlZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCmluZGV4IDExYjQ2MjIzMWM2YS4uMWJlMDNlZmQ1Y2E5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xh
eW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC0y
NDEsOSArMjQxLDkgQEAgYm9vbCBMaW5lTGF5b3V0OjpzaG91bGRJbnZhbGlkYXRlTGluZUxheW91
dFBhdGhBZnRlclRyZWVNdXRhdGlvbihjb25zdCBSZW5kZXJCbG8KICAgICByZXR1cm4gc2hvdWxk
SW52YWxpZGF0ZUxpbmVMYXlvdXRQYXRoQWZ0ZXJDaGFuZ2VGb3IocGFyZW50LCByZW5kZXJlciwg
bGluZUxheW91dCwgaXNSZW1vdmFsID8gVHlwZU9mQ2hhbmdlRm9ySW52YWxpZGF0aW9uOjpOb2Rl
UmVtb3ZhbCA6IFR5cGVPZkNoYW5nZUZvckludmFsaWRhdGlvbjo6Tm9kZUluc2VydGlvbik7CiB9
CiAKLXZvaWQgTGluZUxheW91dDo6dXBkYXRlSW5saW5lQ29udGVudERpbWVuc2lvbnMoKQordm9p
ZCBMaW5lTGF5b3V0Ojp1cGRhdGVJbmxpbmVDb250ZW50RGltZW5zaW9ucyhMYXlvdXRVbml0IGF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCkKIHsKLSAgICBtX2JveEdlb21ldHJ5VXBkYXRlci5zZXRHZW9t
ZXRyaWVzRm9yTGF5b3V0KCk7CisgICAgbV9ib3hHZW9tZXRyeVVwZGF0ZXIuc2V0R2VvbWV0cmll
c0ZvckxheW91dChhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogfQogCiB2b2lkIExpbmVMYXlvdXQ6
OnVwZGF0ZVN0eWxlKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCkBAIC01NzIsOSArNTcy
LDkgQEAgdm9pZCBMaW5lTGF5b3V0Ojp1cGRhdGVSZW5kZXJUcmVlUG9zaXRpb25zKGNvbnN0IFZl
Y3RvcjxMaW5lQWRqdXN0bWVudD4mIGxpbmVBZGoKICAgICB9CiB9CiAKLXZvaWQgTGluZUxheW91
dDo6dXBkYXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKCkKK3ZvaWQgTGluZUxheW91dDo6dXBk
YXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdp
ZHRoKQogewotICAgIG1faW5saW5lQ29udGVudENvbnN0cmFpbnRzID0gbV9ib3hHZW9tZXRyeVVw
ZGF0ZXIudXBkYXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKCk7CisgICAgbV9pbmxpbmVDb250
ZW50Q29uc3RyYWludHMgPSBtX2JveEdlb21ldHJ5VXBkYXRlci51cGRhdGVJbmxpbmVDb250ZW50
Q29uc3RyYWludHMoYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKIH0KIAogdm9pZCBMaW5lTGF5b3V0
OjpwcmVwYXJlUGxhY2VkRmxvYXRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGlu
ZUxheW91dC5oCmluZGV4IDUwOWFiOTI4ODAyNy4uNGEyY2QxMmMyZTc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxp
bmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKQEAgLTc3LDggKzc3LDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBib29sIHNob3VsZEludmFsaWRhdGVMaW5lTGF5b3V0UGF0aEFmdGVyQ29u
dGVudENoYW5nZShjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIHBhcmVudCwgY29uc3QgUmVuZGVyT2Jq
ZWN0JiByZW5kZXJlcldpdGhOZXdDb250ZW50LCBjb25zdCBMaW5lTGF5b3V0Jik7CiAgICAgc3Rh
dGljIGJvb2wgc2hvdWxkSW52YWxpZGF0ZUxpbmVMYXlvdXRQYXRoQWZ0ZXJUcmVlTXV0YXRpb24o
Y29uc3QgUmVuZGVyQmxvY2tGbG93JiBwYXJlbnQsIGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVy
ZXIsIGNvbnN0IExpbmVMYXlvdXQmLCBib29sIGlzUmVtb3ZhbCk7CiAKLSAgICB2b2lkIHVwZGF0
ZUlubGluZUNvbnRlbnRDb25zdHJhaW50cygpOwotICAgIHZvaWQgdXBkYXRlSW5saW5lQ29udGVu
dERpbWVuc2lvbnMoKTsKKyAgICB2b2lkIHVwZGF0ZUlubGluZUNvbnRlbnRDb25zdHJhaW50cyhM
YXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgdm9pZCB1cGRhdGVJbmxpbmVD
b250ZW50RGltZW5zaW9ucyhMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAg
dm9pZCB1cGRhdGVPdmVyZmxvdygpOwogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVN0eWxlKGNvbnN0
IFJlbmRlck9iamVjdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwCmluZGV4IGQyYTg1YmNkYjUzNi4uYmU1ZTAzNWQ2NTliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzg3OSw4ICszODc5LDgg
QEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dElubGluZUNvbnRlbnQoYm9vbCByZWxheW91
dENoaWxkcmVuLCBMYXlvdXRVbml0JiByZXAKIAogICAgIGF1dG8mIGxheW91dEZvcm1hdHRpbmdD
b250ZXh0TGluZUxheW91dCA9ICp0aGlzLT5pbmxpbmVMYXlvdXQoKTsKIAotICAgIGxheW91dEZv
cm1hdHRpbmdDb250ZXh0TGluZUxheW91dC51cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMo
KTsKLSAgICBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQudXBkYXRlSW5saW5lQ29u
dGVudERpbWVuc2lvbnMoKTsKKyAgICBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQu
dXBkYXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFi
bGVMb2dpY2FsV2lkdGgoKSk7CisgICAgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0
LnVwZGF0ZUlubGluZUNvbnRlbnREaW1lbnNpb25zKGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpKTsK
IAogICAgIGF1dG8gY29udGVudEJveFRvcCA9IGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>472617</attachid>
            <date>2024-09-20 12:46:37 -0700</date>
            <delta_ts>2024-09-21 13:26:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-280039-20240920124636.patch</filename>
            <type>text/plain</type>
            <size>30824</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAwNGViZDJkNzMyZmExZTExZjY5M2M3MzEwMjg1ZDQ1MTRkMDg0NTlmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMTkgU2VwIDIwMjQgMjA6MzE6NDkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbTEZDXVtJ
bnRlZ3JhdGlvbl0gQWx3YXlzIHJlc29sdmUgbWFyZ2luL3BhZGRpbmcgdmFsdWVzCiAoQm94R2Vv
bWV0cnlVcGRhdGVyKSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjgw
MDM5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRoaXMgaXMgaW4gcHJlcGFyYXRpb24g
Zm9yIHVzaW5nIEJveEdlb21ldHJ5VXBkYXRlciBmcm9tIEZGQy4KClVwIHVudGlsIHJ1bm5pbmcg
cmVuZGVyIGxheW91dCBfYmVmb3JlXyBMRkMgbGF5b3V0IHRoZXJlIHdhcyBhbHdheXMgdmFsaWQg
bWFyZ2luL3BhZGRpbmcgdmFsdWVzCm9uIHRoZSByZW5kZXJlcnMgKHNpbmNlIHRoZXkgd2VyZSBj
b21wdXRlZCBkdXJpbmcgdGhlaXIgbGF5b3V0KS4KSG93ZXZlciBub3cgdGhhdCB3ZSBkb24ndCBu
ZWNlc3NhcmlseSBydW4gbGF5b3V0IGJlZm9yZSBlbnRlcmluZyBMRkMsIEJveEdlb21ldHJ5VXBk
YXRlciBtYXkgaG9sZCBzdGFsZSB2YWx1ZXMuCkl0IGdldHMgY29ycmVjdGVkIHRocm91Z2ggbGF5
b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94IGxhdGVyIGJ1dCBmb3IgYSBwZXJpb2Qgb2Yg
dGltZSBCb3hHZW9tZXRyeSBoYXMgaW5jb3JyZWN0IHZhbHVlcy4KCkluIGNhc2Ugb2YgRkZDIHRo
b3VnaCwgd2UgbmV2ZXIgcnVuIGxheW91dCBvbiBmbGV4IGl0ZW1zIHVwZnJvbnQsIGFuZCB3ZSBj
ZXJ0YWlubHkgbmVlZCBtYXJnaW4vcGFkZGluZyAoYm9yZGVyKSB2YWx1ZXMKYmVmb3JlIGluaXRp
YXRpbmcgbGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94IGNhbGxzIG9uIGZsZXggaXRl
bXMuIFNvIGxldCdzIGNvbXB1dGUgdGhlc2UgdmFsdWVzIGluIEJveEdlb21ldHJ5VXBkYXRlcgoo
dGhpcyB3aWxsIGdldCBhIGJpdCBtb3JlIGNvbXBsaWNhdGVkIHdpdGggQkZDIHdpdGggbWFyZ2lu
IGNvbGxhcHNpbmcvdHJpbW1pbmcpCgotc3BlY2lhbCBjYXNlIHRhYmxlIGNlbGwncyAiaW50cmlu
c2ljIHBhZGRpbmciIHZhbHVlcyBhbmQgY29sbGFwc2VkIGJvcmRlcnMuIFRoZXkgYXJlIGNvbXB1
dGVkIGF0IHRoZSBjb250YWluaW5nIGJsb2NrIGxldmVsIHNvIHNob3VsZCBiZQphdmFpbGFibGUg
YnkgdGhlIHRpbWUgd2Ugc3RhcnQgcnVubmluZyBsYXlvdXQgb24gdGhlIGNlbGwgY29udGVudC4K
LWFsc28gZmllbGRzZXQgYm9yZGVyIHdoaWNoIGlzIHJlYWxseSB1bmZvcnR1bmF0ZS4KCkV2ZW50
dWFsbHkgYWxsIHRoZXNlIGxvZ2ljIHdpbGwgZ2V0IG1vdmVkIG92ZXIgdG8gdXBkYXRlci4KCiog
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uRm9ybWF0
dGluZ0NvbnRleHRMYXlvdXQuY3BwOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OmxheW91
dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJveCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5jcHA6
CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6dXNlZFZhbHVlT3JaZXJvKToKKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUxpc3RNYXJrZXJE
aW1lbnNpb25zKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpob3Jpem9udGFsTG9naWNh
bE1hcmdpbik6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6bG9naWNhbEJvcmRlcik6CihX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6bG9naWNhbFBhZGRpbmcpOgooV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OkJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlTGF5b3V0Qm94RGltZW5z
aW9ucyk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94R2VvbWV0cnlVcGRhdGVyOjp1
cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25zKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpC
b3hHZW9tZXRyeVVwZGF0ZXI6OnNldEdlb21ldHJpZXNGb3JMYXlvdXQpOgooV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OkJveEdlb21ldHJ5VXBkYXRlcjo6c2V0R2VvbWV0cmllc0ZvckludHJp
bnNpY1dpZHRoKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hHZW9tZXRyeVVwZGF0
ZXI6OnVwZGF0ZUlubGluZUNvbnRlbnRDb25zdHJhaW50cyk6CihXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6Qm94R2VvbWV0cnlVcGRhdGVyOjpzZXRHZW9tZXRyeUFmdGVySW50ZWdyYXRpb25M
YXlvdXQpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveEdlb21ldHJ5VXBkYXRlcjo6
dXBkYXRlQm94R2VvbWV0cnkpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OmZpeGVkVmFs
dWVPclplcm8pOiBEZWxldGVkLgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveEdlb21l
dHJ5VXBkYXRlcjo6dXBkYXRlR2VvbWV0cnlBZnRlckxheW91dCk6IERlbGV0ZWQuCiogU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdl
b21ldHJ5VXBkYXRlci5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxp
bmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcDoKKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpMaW5lTGF5b3V0Ojp1cGRhdGVJbmxpbmVDb250ZW50RGltZW5zaW9ucyk6CiogU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxp
bmVMYXlvdXQuaDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNw
cDoKKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5lQ29udGVudCk6Ci0tLQog
Li4ueW91dEludGVncmF0aW9uRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQuY3BwIHwgICAzICstCiAu
Li4vTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuY3BwICAgfCAxMjAgKysrKysr
KysrKystLS0tLS0tCiAuLi4vTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuaCAg
ICAgfCAgMTUgKystCiAuLi4vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAg
ICAgfCAgIDggKy0KIC4uLi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmggICAg
ICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAg
IHwgICA1ICstCiA2IGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDYyIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250ZXh0TGF5
b3V0LmNwcAppbmRleCA5NmI5ZWYzZGIwMjkuLjc0YzExMjIxMGQyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uRm9ybWF0dGlu
Z0NvbnRleHRMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LmNwcApAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uRm9ybWF0dGluZ0NvbnRleHRMYXlv
dXQuaCIKIAogI2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmgi
CisjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgsNyBAQCB2b2lkIGxheW91dFdpdGhGb3JtYXR0
aW5nQ29udGV4dEZvckJveChjb25zdCBMYXlvdXQ6OkVsZW1lbnRCb3gmIGJveCwgc3RkOjpvcHRp
bwogICAgICAgICByZW5kZXJlci5jbGVhck92ZXJyaWRpbmdMb2dpY2FsV2lkdGhMZW5ndGgoKTsK
IAogICAgIGF1dG8gdXBkYXRlciA9IEJveEdlb21ldHJ5VXBkYXRlciB7IGxheW91dFN0YXRlIH07
Ci0gICAgdXBkYXRlci51cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KGJveCk7CisgICAgdXBkYXRl
ci51cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KGJveCwgd2lkdGhDb25zdHJhaW50LnZhbHVlX29y
KHJlbmRlcmVyLmNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKSkpOwog
fQogCiBMYXlvdXRVbml0IGZvcm1hdHRpbmdDb250ZXh0Um9vdExvZ2ljYWxXaWR0aEZvclR5cGUo
Y29uc3QgTGF5b3V0OjpFbGVtZW50Qm94JiBib3gsIExvZ2ljYWxXaWR0aFR5cGUgbG9naWNhbFdp
ZHRoVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9p
bmxpbmUvTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21l
dHJ5VXBkYXRlci5jcHAKaW5kZXggZTY5ZDk1YzNkNWQwLi44NmVlOGQ2YWM5NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdy
YXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuY3Bw
CkBAIC00OSwxNSArNDksMjMgQEAKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxCbG9jay5oIgogI2lu
Y2x1ZGUgIlJlbmRlclNsaWRlci5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCisjaW5jbHVk
ZSAiUmVuZGVyVGFibGVDZWxsLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBu
YW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCi1zdGF0aWMgTGF5b3V0VW5pdCBmaXhlZFZh
bHVlT3JaZXJvKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQorCitzdGF0aWMgTGF5b3V0VW5pdCB1c2Vk
VmFsdWVPclplcm8oY29uc3QgTGVuZ3RoJiBsZW5ndGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5p
dD4gYXZhaWxhYmxlV2lkdGgpCiB7Ci0gICAgcmV0dXJuIExheW91dFVuaXQgeyBsZW5ndGguaXNG
aXhlZCgpID8gbGVuZ3RoLnZhbHVlKCkgOiAwLmYgfTsKKyAgICBpZiAobGVuZ3RoLmlzRml4ZWQo
KSkKKyAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBsZW5ndGgudmFsdWUoKSB9OworCisgICAg
aWYgKGxlbmd0aC5pc0F1dG8oKSB8fCAhYXZhaWxhYmxlV2lkdGgpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgKmF2YWlsYWJs
ZVdpZHRoKTsKIH0KIAogQm94R2VvbWV0cnlVcGRhdGVyOjpCb3hHZW9tZXRyeVVwZGF0ZXIoQm94
VHJlZSYgYm94VHJlZSwgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCkBAIC03MSw5
ICs3OSw5IEBAIEJveEdlb21ldHJ5VXBkYXRlcjo6Qm94R2VvbWV0cnlVcGRhdGVyKExheW91dDo6
TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKQogewogfQogCi12b2lkIEJveEdlb21ldHJ5VXBkYXRl
cjo6dXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMoY29uc3QgUmVuZGVyTGlzdE1hcmtlciYgbGlz
dE1hcmtlciwgc3RkOjpvcHRpb25hbDxMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gaW50cmlu
c2ljV2lkdGhNb2RlKQordm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUxpc3RNYXJrZXJE
aW1lbnNpb25zKGNvbnN0IFJlbmRlckxpc3RNYXJrZXImIGxpc3RNYXJrZXIsIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRy
aW5zaWNXaWR0aE1vZGU+IGludHJpbnNpY1dpZHRoTW9kZSkKIHsKLSAgICB1cGRhdGVMYXlvdXRC
b3hEaW1lbnNpb25zKGxpc3RNYXJrZXIsIGludHJpbnNpY1dpZHRoTW9kZSk7CisgICAgdXBkYXRl
TGF5b3V0Qm94RGltZW5zaW9ucyhsaXN0TWFya2VyLCBhdmFpbGFibGVXaWR0aCwgaW50cmluc2lj
V2lkdGhNb2RlKTsKICAgICBpZiAoaW50cmluc2ljV2lkdGhNb2RlKQogICAgICAgICByZXR1cm47
CiAKQEAgLTEzMywyMCArMTQxLDE5IEBAIHN0YXRpYyBpbmxpbmUgTGF5b3V0VW5pdCBjb250ZW50
TG9naWNhbEhlaWdodEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyCiAgICAgcmV0
dXJuIHJlbmRlcmVyLnBhcmVudCgpLT5zdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyByZW5kZXJlci5jb250ZW50SGVpZ2h0KCkgOiByZW5kZXJlci5jb250ZW50V2lkdGgoKTsKIH0K
IAotZW51bSBjbGFzcyBVc2VDb21wdXRlZFZhbHVlcyA6IGJvb2wgeyBObywgWWVzIH07Ci1zdGF0
aWMgaW5saW5lIExheW91dDo6Qm94R2VvbWV0cnk6Okhvcml6b250YWxFZGdlcyBob3Jpem9udGFs
TG9naWNhbE1hcmdpbihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIsIGJvb2wg
aXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYm9vbCBpc0hvcml6b250YWxXcml0aW5nTW9k
ZSwgVXNlQ29tcHV0ZWRWYWx1ZXMgdXNlQ29tcHV0ZWRWYWx1ZXMgPSBVc2VDb21wdXRlZFZhbHVl
czo6Tm8sIGJvb2wgcmV0YWluTWFyZ2luU3RhcnQgPSB0cnVlLCBib29sIHJldGFpbk1hcmdpbkVu
ZCA9IHRydWUpCitzdGF0aWMgaW5saW5lIExheW91dDo6Qm94R2VvbWV0cnk6Okhvcml6b250YWxF
ZGdlcyBob3Jpem9udGFsTG9naWNhbE1hcmdpbihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYg
cmVuZGVyZXIsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIGJvb2wg
aXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYm9vbCBpc0hvcml6b250YWxXcml0aW5nTW9k
ZSwgYm9vbCByZXRhaW5NYXJnaW5TdGFydCA9IHRydWUsIGJvb2wgcmV0YWluTWFyZ2luRW5kID0g
dHJ1ZSkKIHsKICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7Ci0gICAgYXV0byBt
YXJnaW5MZWZ0ID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8g
cmVuZGVyZXIubWFyZ2luTGVmdCgpIDogZml4ZWRWYWx1ZU9yWmVybyhzdHlsZS5tYXJnaW5MZWZ0
KCkpOwotICAgIGF1dG8gbWFyZ2luUmlnaHQgPSB1c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21w
dXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5tYXJnaW5SaWdodCgpIDogZml4ZWRWYWx1ZU9yWmVy
byhzdHlsZS5tYXJnaW5SaWdodCgpKTsKKyAgICBhdXRvIG1hcmdpbkxlZnQgPSB1c2VkVmFsdWVP
clplcm8oc3R5bGUubWFyZ2luTGVmdCgpLCBhdmFpbGFibGVXaWR0aCk7CisgICAgYXV0byBtYXJn
aW5SaWdodCA9IHVzZWRWYWx1ZU9yWmVybyhzdHlsZS5tYXJnaW5SaWdodCgpLCBhdmFpbGFibGVX
aWR0aCk7CiAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKSB7CiAgICAgICAgIGlmIChp
c0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJuIHsgcmV0YWlu
TWFyZ2luU3RhcnQgPyBtYXJnaW5MZWZ0IDogMF9sdSwgcmV0YWluTWFyZ2luRW5kID8gbWFyZ2lu
UmlnaHQgOiAwX2x1IH07CiAgICAgICAgIHJldHVybiB7IHJldGFpbk1hcmdpblN0YXJ0ID8gbWFy
Z2luUmlnaHQgOiAwX2x1LCByZXRhaW5NYXJnaW5FbmQgPyBtYXJnaW5MZWZ0IDogMF9sdSB9Owog
ICAgIH0KIAotICAgIGF1dG8gbWFyZ2luVG9wID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29t
cHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIubWFyZ2luVG9wKCkgOiBmaXhlZFZhbHVlT3JaZXJv
KHN0eWxlLm1hcmdpblRvcCgpKTsKLSAgICBhdXRvIG1hcmdpbkJvdHRvbSA9IHVzZUNvbXB1dGVk
VmFsdWVzID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVyLm1hcmdpbkJvdHRvbSgp
IDogZml4ZWRWYWx1ZU9yWmVybyhzdHlsZS5tYXJnaW5Cb3R0b20oKSk7CisgICAgYXV0byBtYXJn
aW5Ub3AgPSB1c2VkVmFsdWVPclplcm8oc3R5bGUubWFyZ2luVG9wKCksIGF2YWlsYWJsZVdpZHRo
KTsKKyAgICBhdXRvIG1hcmdpbkJvdHRvbSA9IHVzZWRWYWx1ZU9yWmVybyhzdHlsZS5tYXJnaW5C
b3R0b20oKSwgYXZhaWxhYmxlV2lkdGgpOwogICAgIGlmIChpc0xlZnRUb1JpZ2h0SW5saW5lRGly
ZWN0aW9uKQogICAgICAgICByZXR1cm4geyByZXRhaW5NYXJnaW5TdGFydCA/IG1hcmdpblRvcCA6
IDBfbHUsIHJldGFpbk1hcmdpbkVuZCA/IG1hcmdpbkJvdHRvbSA6IDBfbHUgfTsKICAgICByZXR1
cm4geyByZXRhaW5NYXJnaW5TdGFydCA/IG1hcmdpbkJvdHRvbSA6IDBfbHUsIHJldGFpbk1hcmdp
bkVuZCA/IG1hcmdpblRvcCA6IDBfbHUgfTsKQEAgLTE2OCwxMyArMTc1LDI2IEBAIHN0YXRpYyBp
bmxpbmUgTGF5b3V0OjpCb3hHZW9tZXRyeTo6VmVydGljYWxFZGdlcyB2ZXJ0aWNhbExvZ2ljYWxN
YXJnaW4oY29uc3QgUmVuCiB9CiAKIGVudW0gY2xhc3MgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4
dCA6IGJvb2wgeyBObywgWWVzIH07Ci1zdGF0aWMgaW5saW5lIExheW91dDo6Qm94R2VvbWV0cnk6
OkVkZ2VzIGxvZ2ljYWxCb3JkZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVy
LCBib29sIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIEZsb3dEaXJlY3Rpb24gYmxvY2tG
bG93RGlyZWN0aW9uLCBVc2VDb21wdXRlZFZhbHVlcyB1c2VDb21wdXRlZFZhbHVlcyA9IFVzZUNv
bXB1dGVkVmFsdWVzOjpObywgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dCBpc1BhcnRPZkZvcm1h
dHRpbmdDb250ZXh0ID0gSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6Tm8sIGJvb2wgcmV0YWlu
Qm9yZGVyU3RhcnQgPSB0cnVlLCBib29sIHJldGFpbkJvcmRlckVuZCA9IHRydWUpCitzdGF0aWMg
aW5saW5lIExheW91dDo6Qm94R2VvbWV0cnk6OkVkZ2VzIGxvZ2ljYWxCb3JkZXIoY29uc3QgUmVu
ZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyLCBib29sIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJl
Y3Rpb24sIEZsb3dEaXJlY3Rpb24gYmxvY2tGbG93RGlyZWN0aW9uLCBJc1BhcnRPZkZvcm1hdHRp
bmdDb250ZXh0IGlzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgPSBJc1BhcnRPZkZvcm1hdHRpbmdD
b250ZXh0OjpObywgYm9vbCByZXRhaW5Cb3JkZXJTdGFydCA9IHRydWUsIGJvb2wgcmV0YWluQm9y
ZGVyRW5kID0gdHJ1ZSkKIHsKICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7Ci0g
ICAgYXV0byBib3JkZXJMZWZ0ID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1
ZXM6Ok5vID8gcmVuZGVyZXIuYm9yZGVyTGVmdCgpIDogTGF5b3V0VW5pdChzdHlsZS5ib3JkZXJM
ZWZ0V2lkdGgoKSk7Ci0gICAgYXV0byBib3JkZXJSaWdodCA9IHVzZUNvbXB1dGVkVmFsdWVzID09
IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVyLmJvcmRlclJpZ2h0KCkgOiBMYXlvdXRV
bml0KHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSk7Ci0gICAgYXV0byBib3JkZXJUb3AgPSB1c2VD
b21wdXRlZFZhbHVlcyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5ib3JkZXJU
b3AoKSA6IExheW91dFVuaXQoc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSk7Ci0gICAgYXV0byBib3Jk
ZXJCb3R0b20gPSB1c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyBy
ZW5kZXJlci5ib3JkZXJCb3R0b20oKSA6IExheW91dFVuaXQoc3R5bGUuYm9yZGVyQm90dG9tV2lk
dGgoKSk7CisgICAgYXV0byBib3JkZXJMZWZ0ID0gTGF5b3V0VW5pdCB7IHN0eWxlLmJvcmRlckxl
ZnRXaWR0aCgpIH07CisgICAgYXV0byBib3JkZXJSaWdodCA9IExheW91dFVuaXQgeyBzdHlsZS5i
b3JkZXJSaWdodFdpZHRoKCkgfTsKKyAgICBhdXRvIGJvcmRlclRvcCA9IExheW91dFVuaXQgeyBz
dHlsZS5ib3JkZXJUb3BXaWR0aCgpIH07CisgICAgYXV0byBib3JkZXJCb3R0b20gPSBMYXlvdXRV
bml0IHsgc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSB9OworCisgICAgaWYgKGF1dG8qIHRhYmxl
Q2VsbCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKTsgdGFibGVD
ZWxsICYmIHRhYmxlQ2VsbC0+dGFibGUoKS0+Y29sbGFwc2VCb3JkZXJzKCkpIHsKKyAgICAgICAg
Ym9yZGVyTGVmdCA9IHRhYmxlQ2VsbC0+Ym9yZGVyTGVmdCgpOworICAgICAgICBib3JkZXJSaWdo
dCA9IHRhYmxlQ2VsbC0+Ym9yZGVyUmlnaHQoKTsKKyAgICAgICAgYm9yZGVyVG9wID0gdGFibGVD
ZWxsLT5ib3JkZXJUb3AoKTsKKyAgICAgICAgYm9yZGVyQm90dG9tID0gdGFibGVDZWxsLT5ib3Jk
ZXJCb3R0b20oKTsKKyAgICB9IGVsc2UgaWYgKHJlbmRlcmVyLmlzRmllbGRzZXQoKSkgeworICAg
ICAgICBhdXRvIGZpZWxkc2V0Qm9yZGVyID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KHJlbmRlcmVy
KS5pbnRyaW5zaWNCb3JkZXJGb3JGaWVsZHNldCgpOworICAgICAgICBib3JkZXJMZWZ0ICs9IGZp
ZWxkc2V0Qm9yZGVyOworICAgICAgICBib3JkZXJSaWdodCArPSBmaWVsZHNldEJvcmRlcjsKKyAg
ICAgICAgYm9yZGVyVG9wICs9IGZpZWxkc2V0Qm9yZGVyOworICAgICAgICBib3JkZXJCb3R0b20g
Kz0gZmllbGRzZXRCb3JkZXI7CisgICAgfQogCiAgICAgaWYgKGJsb2NrRmxvd0RpcmVjdGlvbiA9
PSBGbG93RGlyZWN0aW9uOjpUb3BUb0JvdHRvbSB8fCBibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxv
d0RpcmVjdGlvbjo6Qm90dG9tVG9Ub3ApIHsKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHRJbmxp
bmVEaXJlY3Rpb24pCkBAIC0xOTAsMTggKzIxMCwyNiBAQCBzdGF0aWMgaW5saW5lIExheW91dDo6
Qm94R2VvbWV0cnk6OkVkZ2VzIGxvZ2ljYWxCb3JkZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmpl
YwogICAgIHJldHVybiB7IHsgYm9yZGVyTG9naWNhbExlZnQsIGJvcmRlckxvZ2ljYWxSaWdodCB9
LCB7IGJvcmRlckxvZ2ljYWxUb3AsIGJvcmRlckxvZ2ljYWxCb3R0b20gfSB9OwogfQogCi1zdGF0
aWMgaW5saW5lIExheW91dDo6Qm94R2VvbWV0cnk6OkVkZ2VzIGxvZ2ljYWxQYWRkaW5nKGNvbnN0
IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlciwgYm9vbCBpc0xlZnRUb1JpZ2h0SW5saW5l
RGlyZWN0aW9uLCBGbG93RGlyZWN0aW9uIGJsb2NrRmxvd0RpcmVjdGlvbiwgVXNlQ29tcHV0ZWRW
YWx1ZXMgdXNlQ29tcHV0ZWRWYWx1ZXMgPSBVc2VDb21wdXRlZFZhbHVlczo6Tm8sIElzUGFydE9m
Rm9ybWF0dGluZ0NvbnRleHQgaXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dCA9IElzUGFydE9mRm9y
bWF0dGluZ0NvbnRleHQ6Ok5vLCBib29sIHJldGFpblBhZGRpbmdTdGFydCA9IHRydWUsIGJvb2wg
cmV0YWluUGFkZGluZ0VuZCA9IHRydWUpCitzdGF0aWMgaW5saW5lIExheW91dDo6Qm94R2VvbWV0
cnk6OkVkZ2VzIGxvZ2ljYWxQYWRkaW5nKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5k
ZXJlciwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgYm9vbCBpc0xl
ZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBGbG93RGlyZWN0aW9uIGJsb2NrRmxvd0RpcmVjdGlv
biwgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dCBpc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0ID0g
SXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6Tm8sIGJvb2wgcmV0YWluUGFkZGluZ1N0YXJ0ID0g
dHJ1ZSwgYm9vbCByZXRhaW5QYWRkaW5nRW5kID0gdHJ1ZSkKIHsKICAgICBhdXRvJiBzdHlsZSA9
IHJlbmRlcmVyLnN0eWxlKCk7Ci0gICAgYXV0byBwYWRkaW5nTGVmdCA9IHVzZUNvbXB1dGVkVmFs
dWVzID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVyLnBhZGRpbmdMZWZ0KCkgOiBm
aXhlZFZhbHVlT3JaZXJvKHN0eWxlLnBhZGRpbmdMZWZ0KCkpOwotICAgIGF1dG8gcGFkZGluZ1Jp
Z2h0ID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVy
ZXIucGFkZGluZ1JpZ2h0KCkgOiBmaXhlZFZhbHVlT3JaZXJvKHN0eWxlLnBhZGRpbmdSaWdodCgp
KTsKLSAgICBhdXRvIHBhZGRpbmdUb3AgPSB1c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21wdXRl
ZFZhbHVlczo6Tm8gPyByZW5kZXJlci5wYWRkaW5nVG9wKCkgOiBmaXhlZFZhbHVlT3JaZXJvKHN0
eWxlLnBhZGRpbmdUb3AoKSk7Ci0gICAgYXV0byBwYWRkaW5nQm90dG9tID0gdXNlQ29tcHV0ZWRW
YWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIucGFkZGluZ0JvdHRvbSgp
IDogZml4ZWRWYWx1ZU9yWmVybyhzdHlsZS5wYWRkaW5nQm90dG9tKCkpOworCisgICAgYXV0byBw
YWRkaW5nTGVmdCA9IHVzZWRWYWx1ZU9yWmVybyhzdHlsZS5wYWRkaW5nTGVmdCgpLCBhdmFpbGFi
bGVXaWR0aCk7CisgICAgYXV0byBwYWRkaW5nUmlnaHQgPSB1c2VkVmFsdWVPclplcm8oc3R5bGUu
cGFkZGluZ1JpZ2h0KCksIGF2YWlsYWJsZVdpZHRoKTsKKyAgICBhdXRvIHBhZGRpbmdUb3AgPSB1
c2VkVmFsdWVPclplcm8oc3R5bGUucGFkZGluZ1RvcCgpLCBhdmFpbGFibGVXaWR0aCk7CisgICAg
YXV0byBwYWRkaW5nQm90dG9tID0gdXNlZFZhbHVlT3JaZXJvKHN0eWxlLnBhZGRpbmdCb3R0b20o
KSwgYXZhaWxhYmxlV2lkdGgpOworCisgICAgYXV0byBpbnRyaW5zaWNQYWRkaW5nQmVmb3JlID0g
TGF5b3V0VW5pdCB7IH07CisgICAgYXV0byBpbnRyaW5zaWNQYWRkaW5nQWZ0ZXIgPSBMYXlvdXRV
bml0IHsgfTsKKyAgICBpZiAoYXV0byogdGFibGVDZWxsID0gZHluYW1pY0Rvd25jYXN0PFJlbmRl
clRhYmxlQ2VsbD4ocmVuZGVyZXIpKSB7CisgICAgICAgIGludHJpbnNpY1BhZGRpbmdCZWZvcmUg
PSB0YWJsZUNlbGwtPmludHJpbnNpY1BhZGRpbmdCZWZvcmUoKTsKKyAgICAgICAgaW50cmluc2lj
UGFkZGluZ0FmdGVyID0gdGFibGVDZWxsLT5pbnRyaW5zaWNQYWRkaW5nQWZ0ZXIoKTsKKyAgICB9
CiAKICAgICBpZiAoYmxvY2tGbG93RGlyZWN0aW9uID09IEZsb3dEaXJlY3Rpb246OlRvcFRvQm90
dG9tIHx8IGJsb2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpCb3R0b21Ub1RvcCkg
ewogICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbikKLSAgICAgICAgICAg
IHJldHVybiB7IHsgcmV0YWluUGFkZGluZ1N0YXJ0ID8gcGFkZGluZ0xlZnQgOiAwX2x1LCByZXRh
aW5QYWRkaW5nRW5kID8gcGFkZGluZ1JpZ2h0IDogMF9sdSB9LCB7IHBhZGRpbmdUb3AsIHBhZGRp
bmdCb3R0b20gfSB9OwotICAgICAgICByZXR1cm4geyB7IHJldGFpblBhZGRpbmdTdGFydCA/IHBh
ZGRpbmdSaWdodCA6IDBfbHUsIHJldGFpblBhZGRpbmdFbmQgPyBwYWRkaW5nTGVmdCA6IDBfbHUg
fSwgeyBwYWRkaW5nVG9wLCBwYWRkaW5nQm90dG9tIH0gfTsKKyAgICAgICAgICAgIHJldHVybiB7
IHsgcmV0YWluUGFkZGluZ1N0YXJ0ID8gcGFkZGluZ0xlZnQgOiAwX2x1LCByZXRhaW5QYWRkaW5n
RW5kID8gcGFkZGluZ1JpZ2h0IDogMF9sdSB9LCB7IHBhZGRpbmdUb3AgKyBpbnRyaW5zaWNQYWRk
aW5nQmVmb3JlLCBwYWRkaW5nQm90dG9tICsgaW50cmluc2ljUGFkZGluZ0FmdGVyIH0gfTsKKyAg
ICAgICAgcmV0dXJuIHsgeyByZXRhaW5QYWRkaW5nU3RhcnQgPyBwYWRkaW5nUmlnaHQgOiAwX2x1
LCByZXRhaW5QYWRkaW5nRW5kID8gcGFkZGluZ0xlZnQgOiAwX2x1IH0sIHsgcGFkZGluZ1RvcCAr
IGludHJpbnNpY1BhZGRpbmdCZWZvcmUsIHBhZGRpbmdCb3R0b20gKyBpbnRyaW5zaWNQYWRkaW5n
QWZ0ZXIgfSB9OwogICAgIH0KIAogICAgIGF1dG8gcGFkZGluZ0xvZ2ljYWxMZWZ0ID0gcmV0YWlu
UGFkZGluZ1N0YXJ0ID8gaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiA/IHBhZGRpbmdUb3Ag
OiBwYWRkaW5nQm90dG9tIDogMF9sdTsKQEAgLTIwOSw3ICsyMzcsNyBAQCBzdGF0aWMgaW5saW5l
IExheW91dDo6Qm94R2VvbWV0cnk6OkVkZ2VzIGxvZ2ljYWxQYWRkaW5nKGNvbnN0IFJlbmRlckJv
eE1vZGVsT2JqZQogICAgIC8vIEZvciBib3hlcyBpbnNpZGUgdGhlIGZvcm1hdHRpbmcgY29udGV4
dCwgcmlnaHQgcGFkZGluZyAoYm9yZGVyKSBhbHdheXMgcG9pbnRzIHVwLCB3aGlsZSB3aGVuIGNv
bnZlcnRpbmcgdGhlIGZvcm1hdHRpbmcgY29udGV4dCByb290J3MgcGFkZGluZyAoYm9yZGVyKSB0
aGUgZGlyZWN0aW9uYWxpdHkgbWF0dGVycy4KICAgICBhdXRvIHBhZGRpbmdMb2dpY2FsVG9wID0g
aXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dCA9PSBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0OjpZ
ZXMgPyBwYWRkaW5nUmlnaHQgOiBibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6
TGVmdFRvUmlnaHQgPyBwYWRkaW5nTGVmdCA6IHBhZGRpbmdSaWdodDsKICAgICBhdXRvIHBhZGRp
bmdMb2dpY2FsQm90dG9tID0gaXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dCA9PSBJc1BhcnRPZkZv
cm1hdHRpbmdDb250ZXh0OjpZZXMgPyBwYWRkaW5nTGVmdCA6IGJsb2NrRmxvd0RpcmVjdGlvbiA9
PSBGbG93RGlyZWN0aW9uOjpMZWZ0VG9SaWdodCA/IHBhZGRpbmdSaWdodCA6IHBhZGRpbmdMZWZ0
OwotICAgIHJldHVybiB7IHsgcGFkZGluZ0xvZ2ljYWxMZWZ0LCBwYWRkaW5nTG9naWNhbFJpZ2h0
IH0sIHsgcGFkZGluZ0xvZ2ljYWxUb3AsIHBhZGRpbmdMb2dpY2FsQm90dG9tIH0gfTsKKyAgICBy
ZXR1cm4geyB7IHBhZGRpbmdMb2dpY2FsTGVmdCwgcGFkZGluZ0xvZ2ljYWxSaWdodCB9LCB7IHBh
ZGRpbmdMb2dpY2FsVG9wICsgaW50cmluc2ljUGFkZGluZ0JlZm9yZSwgcGFkZGluZ0xvZ2ljYWxC
b3R0b20gKyBpbnRyaW5zaWNQYWRkaW5nQWZ0ZXIgfSB9OwogfQogCiBzdGF0aWMgaW5saW5lIExh
eW91dFNpemUgc2Nyb2xsYmFyTG9naWNhbFNpemUoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlcikK
QEAgLTIyMiw3ICsyNTAsNyBAQCBzdGF0aWMgaW5saW5lIExheW91dFNpemUgc2Nyb2xsYmFyTG9n
aWNhbFNpemUoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlcikKICAgICByZXR1cm4geyBob3Jpem9u
dGFsU3BhY2VSZXNlcnZlZEZvclNjcm9sbGJhciwgdmVydGljYWxTcGFjZVJlc2VydmVkRm9yU2Ny
b2xsYmFyIH07CiB9CiAKLXZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVMYXlvdXRCb3hE
aW1lbnNpb25zKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyQm94LCBzdGQ6Om9wdGlvbmFsPExheW91
dDo6SW50cmluc2ljV2lkdGhNb2RlPiBpbnRyaW5zaWNXaWR0aE1vZGUpCit2b2lkIEJveEdlb21l
dHJ5VXBkYXRlcjo6dXBkYXRlTGF5b3V0Qm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJCb3gmIHJl
bmRlckJveCwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgc3RkOjpv
cHRpb25hbDxMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gaW50cmluc2ljV2lkdGhNb2RlKQog
ewogICAgIGF1dG8mIGxheW91dEJveCA9IGNvbnN0X2Nhc3Q8TGF5b3V0OjpFbGVtZW50Qm94Jj4o
KnJlbmRlckJveC5sYXlvdXRCb3goKSk7CiAgICAgYXV0byBpc0xlZnRUb1JpZ2h0SW5saW5lRGly
ZWN0aW9uID0gcmVuZGVyQm94LnBhcmVudCgpLT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKTsKQEAgLTIzMCw5ICsyNTgsOSBAQCB2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRl
TGF5b3V0Qm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlckJveCwgcwogICAgIGF1
dG8gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPSBibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0Rp
cmVjdGlvbjo6VG9wVG9Cb3R0b20gfHwgYmxvY2tGbG93RGlyZWN0aW9uID09IEZsb3dEaXJlY3Rp
b246OkJvdHRvbVRvVG9wOwogCiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBsYXlvdXRTdGF0ZSgp
LmVuc3VyZUdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7Ci0gICAgYXV0byBpbmxpbmVNYXJnaW4g
PSBob3Jpem9udGFsTG9naWNhbE1hcmdpbihyZW5kZXJCb3gsIGlzTGVmdFRvUmlnaHRJbmxpbmVE
aXJlY3Rpb24sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlLCBpbnRyaW5zaWNXaWR0aE1vZGUgPyBV
c2VDb21wdXRlZFZhbHVlczo6WWVzIDogVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vKTsKLSAgICBhdXRv
IGJvcmRlciA9IGxvZ2ljYWxCb3JkZXIocmVuZGVyQm94LCBpc0xlZnRUb1JpZ2h0SW5saW5lRGly
ZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24sIGludHJpbnNpY1dpZHRoTW9kZSA/IFVzZUNvbXB1
dGVkVmFsdWVzOjpZZXMgOiBVc2VDb21wdXRlZFZhbHVlczo6Tm8pOwotICAgIGF1dG8gcGFkZGlu
ZyA9IGxvZ2ljYWxQYWRkaW5nKHJlbmRlckJveCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlv
biwgYmxvY2tGbG93RGlyZWN0aW9uLCBpbnRyaW5zaWNXaWR0aE1vZGUgPyBVc2VDb21wdXRlZFZh
bHVlczo6WWVzIDogVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vKTsKKyAgICBhdXRvIGlubGluZU1hcmdp
biA9IGhvcml6b250YWxMb2dpY2FsTWFyZ2luKHJlbmRlckJveCwgYXZhaWxhYmxlV2lkdGgsIGlz
TGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKTsKKyAg
ICBhdXRvIGJvcmRlciA9IGxvZ2ljYWxCb3JkZXIocmVuZGVyQm94LCBpc0xlZnRUb1JpZ2h0SW5s
aW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24pOworICAgIGF1dG8gcGFkZGluZyA9IGxv
Z2ljYWxQYWRkaW5nKHJlbmRlckJveCwgYXZhaWxhYmxlV2lkdGgsIGlzTGVmdFRvUmlnaHRJbmxp
bmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlvbik7CiAgICAgYXV0byBzY3JvbGxiYXJTaXpl
ID0gc2Nyb2xsYmFyTG9naWNhbFNpemUocmVuZGVyQm94KTsKIAogICAgIGlmIChpbnRyaW5zaWNX
aWR0aE1vZGUpIHsKQEAgLTMxMCw3ICszMzgsNyBAQCB2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6
dXBkYXRlTGluZUJyZWFrQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJMaW5lQnJlYWsmIGxpbgog
ICAgICAgICBib3hHZW9tZXRyeS5zZXRDb250ZW50Qm94SGVpZ2h0KHsgfSk7CiB9CiAKLXZvaWQg
Qm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25zKGNvbnN0IFJlbmRl
cklubGluZSYgcmVuZGVySW5saW5lLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50cmluc2ljV2lk
dGhNb2RlPiBpbnRyaW5zaWNXaWR0aE1vZGUpCit2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6dXBk
YXRlSW5saW5lQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJJbmxpbmUmIHJlbmRlcklubGluZSwg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgc3RkOjpvcHRpb25hbDxM
YXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gaW50cmluc2ljV2lkdGhNb2RlKQogewogICAgIGF1
dG8mIGJveEdlb21ldHJ5ID0gbGF5b3V0U3RhdGUoKS5lbnN1cmVHZW9tZXRyeUZvckJveCgqcmVu
ZGVySW5saW5lLmxheW91dEJveCgpKTsKIApAQCAtMzIyLDkgKzM1MCw5IEBAIHZvaWQgQm94R2Vv
bWV0cnlVcGRhdGVyOjp1cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25zKGNvbnN0IFJlbmRlcklubGlu
ZSYgcmVuZGVySW5sCiAgICAgYXV0byBibG9ja0Zsb3dEaXJlY3Rpb24gPSB3cml0aW5nTW9kZVRv
QmxvY2tGbG93RGlyZWN0aW9uKHJlbmRlcklubGluZS5zdHlsZSgpLndyaXRpbmdNb2RlKCkpOwog
ICAgIGF1dG8gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPSBibG9ja0Zsb3dEaXJlY3Rpb24gPT0g
Rmxvd0RpcmVjdGlvbjo6VG9wVG9Cb3R0b20gfHwgYmxvY2tGbG93RGlyZWN0aW9uID09IEZsb3dE
aXJlY3Rpb246OkJvdHRvbVRvVG9wOwogCi0gICAgYXV0byBpbmxpbmVNYXJnaW4gPSBob3Jpem9u
dGFsTG9naWNhbE1hcmdpbihyZW5kZXJJbmxpbmUsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rp
b24sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlLCBpbnRyaW5zaWNXaWR0aE1vZGUgPyBVc2VDb21w
dXRlZFZhbHVlczo6WWVzIDogVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vLCAhc2hvdWxkTm90UmV0YWlu
Qm9yZGVyUGFkZGluZ0FuZE1hcmdpblN0YXJ0LCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGlu
Z0FuZE1hcmdpbkVuZCk7Ci0gICAgYXV0byBib3JkZXIgPSBsb2dpY2FsQm9yZGVyKHJlbmRlcklu
bGluZSwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9uLCBp
bnRyaW5zaWNXaWR0aE1vZGUgPyBVc2VDb21wdXRlZFZhbHVlczo6WWVzIDogVXNlQ29tcHV0ZWRW
YWx1ZXM6Ok5vLCBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0OjpZZXMsICFzaG91bGROb3RSZXRh
aW5Cb3JkZXJQYWRkaW5nQW5kTWFyZ2luU3RhcnQsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRk
aW5nQW5kTWFyZ2luRW5kKTsKLSAgICBhdXRvIHBhZGRpbmcgPSBsb2dpY2FsUGFkZGluZyhyZW5k
ZXJJbmxpbmUsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlv
biwgaW50cmluc2ljV2lkdGhNb2RlID8gVXNlQ29tcHV0ZWRWYWx1ZXM6OlllcyA6IFVzZUNvbXB1
dGVkVmFsdWVzOjpObywgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6WWVzLCAhc2hvdWxkTm90
UmV0YWluQm9yZGVyUGFkZGluZ0FuZE1hcmdpblN0YXJ0LCAhc2hvdWxkTm90UmV0YWluQm9yZGVy
UGFkZGluZ0FuZE1hcmdpbkVuZCk7CisgICAgYXV0byBpbmxpbmVNYXJnaW4gPSBob3Jpem9udGFs
TG9naWNhbE1hcmdpbihyZW5kZXJJbmxpbmUsIGF2YWlsYWJsZVdpZHRoLCBpc0xlZnRUb1JpZ2h0
SW5saW5lRGlyZWN0aW9uLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSwgIXNob3VsZE5vdFJldGFp
bkJvcmRlclBhZGRpbmdBbmRNYXJnaW5TdGFydCwgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRp
bmdBbmRNYXJnaW5FbmQpOworICAgIGF1dG8gYm9yZGVyID0gbG9naWNhbEJvcmRlcihyZW5kZXJJ
bmxpbmUsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlvbiwg
SXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6WWVzLCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFk
ZGluZ0FuZE1hcmdpblN0YXJ0LCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGluZ0FuZE1hcmdp
bkVuZCk7CisgICAgYXV0byBwYWRkaW5nID0gbG9naWNhbFBhZGRpbmcocmVuZGVySW5saW5lLCBh
dmFpbGFibGVXaWR0aCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGly
ZWN0aW9uLCBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0OjpZZXMsICFzaG91bGROb3RSZXRhaW5C
b3JkZXJQYWRkaW5nQW5kTWFyZ2luU3RhcnQsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5n
QW5kTWFyZ2luRW5kKTsKIAogICAgIGlmIChpbnRyaW5zaWNXaWR0aE1vZGUpIHsKICAgICAgICAg
Ym94R2VvbWV0cnkuc2V0SG9yaXpvbnRhbE1hcmdpbihpbmxpbmVNYXJnaW4pOwpAQCAtMzM5LDcg
KzM2Nyw3IEBAIHZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVJbmxpbmVCb3hEaW1lbnNp
b25zKGNvbnN0IFJlbmRlcklubGluZSYgcmVuZGVySW5sCiAgICAgYm94R2VvbWV0cnkuc2V0UGFk
ZGluZyhwYWRkaW5nKTsKIH0KIAotdm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnNldEdlb21ldHJp
ZXNGb3JMYXlvdXQoKQordm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnNldEdlb21ldHJpZXNGb3JM
YXlvdXQoTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpCiB7CiAgICAgZm9yIChhdXRv
IHdhbGtlciA9IElubGluZVdhbGtlcihkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KGJveFRyZWUo
KS5yb290UmVuZGVyZXIoKSkpOyAhd2Fsa2VyLmF0RW5kKCk7IHdhbGtlci5hZHZhbmNlKCkpIHsK
ICAgICAgICAgYXV0byYgcmVuZGVyZXIgPSAqd2Fsa2VyLmN1cnJlbnQoKTsKQEAgLTM1MCw3ICsz
NzgsNyBAQCB2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6c2V0R2VvbWV0cmllc0ZvckxheW91dCgp
CiAgICAgICAgIGlmIChyZW5kZXJlci5pc0Zsb2F0aW5nKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICB1cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KGRvd25jYXN0PFJlbmRlckVs
ZW1lbnQ+KHJlbmRlcmVyKSk7CisgICAgICAgIHVwZGF0ZUJveEdlb21ldHJ5KGRvd25jYXN0PFJl
bmRlckVsZW1lbnQ+KHJlbmRlcmVyKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICB9CiB9
CiAKQEAgLTM2NywzMCArMzk1LDMwIEBAIHZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjpzZXRHZW9t
ZXRyaWVzRm9ySW50cmluc2ljV2lkdGgoTGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoYXV0byogcmVuZGVySW5saW5l
ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlcklubGluZT4ocmVuZGVyZXIpKSB7Ci0gICAgICAgICAg
ICB1cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25zKCpyZW5kZXJJbmxpbmUsIGludHJpbnNpY1dpZHRo
TW9kZSk7CisgICAgICAgICAgICB1cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25zKCpyZW5kZXJJbmxp
bmUsIHsgfSwgaW50cmluc2ljV2lkdGhNb2RlKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChhdXRvKiByZW5kZXJMaXN0TWFya2VyID0gZHluYW1pY0Rvd25j
YXN0PFJlbmRlckxpc3RNYXJrZXI+KHJlbmRlcmVyKSkgewotICAgICAgICAgICAgdXBkYXRlTGlz
dE1hcmtlckRpbWVuc2lvbnMoKnJlbmRlckxpc3RNYXJrZXIsIGludHJpbnNpY1dpZHRoTW9kZSk7
CisgICAgICAgICAgICB1cGRhdGVMaXN0TWFya2VyRGltZW5zaW9ucygqcmVuZGVyTGlzdE1hcmtl
ciwgeyB9LCBpbnRyaW5zaWNXaWR0aE1vZGUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGF1dG8qIHJlbmRlckJveCA9IGR5bmFtaWNEb3duY2FzdDxSZW5k
ZXJCb3g+KHJlbmRlcmVyKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZv
ciBmbGV4aW5nIGJveGVzLgogICAgICAgICAgICAgQVNTRVJUKHJlbmRlckJveC0+c3R5bGUoKS5s
b2dpY2FsV2lkdGgoKS5pc0ZpeGVkKCkpOwotICAgICAgICAgICAgdXBkYXRlTGF5b3V0Qm94RGlt
ZW5zaW9ucygqcmVuZGVyQm94LCBpbnRyaW5zaWNXaWR0aE1vZGUpOworICAgICAgICAgICAgdXBk
YXRlTGF5b3V0Qm94RGltZW5zaW9ucygqcmVuZGVyQm94LCB7IH0sIGludHJpbnNpY1dpZHRoTW9k
ZSk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLUxheW91dDo6Q29uc3RyYWludHNGb3JJbmxpbmVD
b250ZW50IEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRz
KCkKK0xheW91dDo6Q29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50IEJveEdlb21ldHJ5VXBkYXRl
cjo6dXBkYXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKExheW91dFVuaXQgYXZhaWxhYmxlV2lk
dGgpCiB7CiAgICAgYXV0byYgcm9vdFJlbmRlcmVyID0gYm94VHJlZSgpLnJvb3RSZW5kZXJlcigp
OwogICAgIGF1dG8gaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiA9IHJvb3RSZW5kZXJlci5z
dHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKICAgICBhdXRvIHdyaXRpbmdNb2RlID0g
cm9vdFJlbmRlcmVyLnN0eWxlKCkud3JpdGluZ01vZGUoKTsKICAgICBhdXRvIGJsb2NrRmxvd0Rp
cmVjdGlvbiA9IHdyaXRpbmdNb2RlVG9CbG9ja0Zsb3dEaXJlY3Rpb24od3JpdGluZ01vZGUpOwog
Ci0gICAgYXV0byBwYWRkaW5nID0gbG9naWNhbFBhZGRpbmcocm9vdFJlbmRlcmVyLCBpc0xlZnRU
b1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24sIFVzZUNvbXB1dGVkVmFs
dWVzOjpObywgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6Tm8pOwotICAgIGF1dG8gYm9yZGVy
ID0gbG9naWNhbEJvcmRlcihyb290UmVuZGVyZXIsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rp
b24sIGJsb2NrRmxvd0RpcmVjdGlvbiwgVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vLCBJc1BhcnRPZkZv
cm1hdHRpbmdDb250ZXh0OjpObyk7CisgICAgYXV0byBwYWRkaW5nID0gbG9naWNhbFBhZGRpbmco
cm9vdFJlbmRlcmVyLCBhdmFpbGFibGVXaWR0aCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlv
biwgYmxvY2tGbG93RGlyZWN0aW9uLCBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0OjpObyk7Cisg
ICAgYXV0byBib3JkZXIgPSBsb2dpY2FsQm9yZGVyKHJvb3RSZW5kZXJlciwgaXNMZWZ0VG9SaWdo
dElubGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9uLCBJc1BhcnRPZkZvcm1hdHRpbmdD
b250ZXh0OjpObyk7CiAgICAgYXV0byBzY3JvbGxiYXJTaXplID0gc2Nyb2xsYmFyTG9naWNhbFNp
emUocm9vdFJlbmRlcmVyKTsKICAgICBhdXRvIHNob3VsZFBsYWNlVmVydGljYWxTY3JvbGxiYXJP
bkxlZnQgPSByb290UmVuZGVyZXIuc2hvdWxkUGxhY2VWZXJ0aWNhbFNjcm9sbGJhck9uTGVmdCgp
OwogCkBAIC00MDksNyArNDM3LDcgQEAgTGF5b3V0OjpDb25zdHJhaW50c0ZvcklubGluZUNvbnRl
bnQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVJbmxpbmVDb250ZW50Q29uc3QKICAgICAgICAg
cm9vdEdlb21ldHJ5LnNldEJvcmRlcihib3JkZXIpOwogICAgICAgICByb290R2VvbWV0cnkuc2V0
SG9yaXpvbnRhbFNwYWNlRm9yU2Nyb2xsYmFyKHNjcm9sbGJhclNpemUud2lkdGgoKSk7CiAgICAg
ICAgIHJvb3RHZW9tZXRyeS5zZXRWZXJ0aWNhbFNwYWNlRm9yU2Nyb2xsYmFyKHNjcm9sbGJhclNp
emUuaGVpZ2h0KCkpOwotICAgICAgICByb290R2VvbWV0cnkuc2V0SG9yaXpvbnRhbE1hcmdpbiho
b3Jpem9udGFsTG9naWNhbE1hcmdpbihyb290UmVuZGVyZXIsIGlzTGVmdFRvUmlnaHRJbmxpbmVE
aXJlY3Rpb24sIFdlYkNvcmU6OmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSwg
VXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vKSk7CisgICAgICAgIHJvb3RHZW9tZXRyeS5zZXRIb3Jpem9u
dGFsTWFyZ2luKGhvcml6b250YWxMb2dpY2FsTWFyZ2luKHJvb3RSZW5kZXJlciwgYXZhaWxhYmxl
V2lkdGgsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIFdlYkNvcmU6OmlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSkpOwogICAgICAgICByb290R2VvbWV0cnkuc2V0VmVy
dGljYWxNYXJnaW4odmVydGljYWxMb2dpY2FsTWFyZ2luKHJvb3RSZW5kZXJlciwgYmxvY2tGbG93
RGlyZWN0aW9uKSk7CiAgICAgfTsKICAgICBjcmVhdGVSb290R2VvbWV0cnlJZk5lZWRlZCgpOwpA
QCAtNDE3LDI0ICs0NDUsMjQgQEAgTGF5b3V0OjpDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQg
Qm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVJbmxpbmVDb250ZW50Q29uc3QKICAgICByZXR1cm4g
eyB7IGhvcml6b250YWxDb25zdHJhaW50cywgY29udGVudEJveFRvcCB9LCB2aXN1YWxMZWZ0IH07
CiB9CiAKLXZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0
KGNvbnN0IExheW91dDo6RWxlbWVudEJveCYgYm94KQordm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6
OnVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQoY29uc3QgTGF5b3V0OjpFbGVtZW50Qm94JiBib3gs
IExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpCiB7Ci0gICAgdXBkYXRlR2VvbWV0cnlBZnRlckxh
eW91dCgqZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4oYm94LnJlbmRlcmVyRm9ySW50ZWdyYXRp
b24oKSkpOworICAgIHVwZGF0ZUJveEdlb21ldHJ5KCpkeW5hbWljRG93bmNhc3Q8UmVuZGVyQm94
Pihib3gucmVuZGVyZXJGb3JJbnRlZ3JhdGlvbigpKSwgYXZhaWxhYmxlV2lkdGgpOwogfQogCi12
b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlR2VvbWV0cnlBZnRlckxheW91dChjb25zdCBS
ZW5kZXJFbGVtZW50JiByZW5kZXJlcikKK3ZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVC
b3hHZW9tZXRyeShjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgTGF5b3V0VW5pdCBhdmFp
bGFibGVXaWR0aCkKIHsKICAgICBpZiAoaXM8UmVuZGVyUmVwbGFjZWQ+KHJlbmRlcmVyKSB8fCBp
czxSZW5kZXJUYWJsZT4ocmVuZGVyZXIpIHx8IGlzPFJlbmRlckxpc3RJdGVtPihyZW5kZXJlcikg
fHwgaXM8UmVuZGVyQmxvY2s+KHJlbmRlcmVyKSB8fCBpczxSZW5kZXJGcmFtZVNldD4ocmVuZGVy
ZXIpKQotICAgICAgICB1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKGRvd25jYXN0PFJlbmRlckJv
eD4ocmVuZGVyZXIpKTsKKyAgICAgICAgdXBkYXRlTGF5b3V0Qm94RGltZW5zaW9ucyhkb3duY2Fz
dDxSZW5kZXJCb3g+KHJlbmRlcmVyKSwgYXZhaWxhYmxlV2lkdGgpOwogCiAgICAgaWYgKGF1dG8q
IHJlbmRlckxpc3RNYXJrZXIgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyTGlzdE1hcmtlcj4ocmVu
ZGVyZXIpKQotICAgICAgICB1cGRhdGVMaXN0TWFya2VyRGltZW5zaW9ucygqcmVuZGVyTGlzdE1h
cmtlcik7CisgICAgICAgIHVwZGF0ZUxpc3RNYXJrZXJEaW1lbnNpb25zKCpyZW5kZXJMaXN0TWFy
a2VyLCBhdmFpbGFibGVXaWR0aCk7CiAKICAgICBpZiAoYXV0byogcmVuZGVyTGluZUJyZWFrID0g
ZHluYW1pY0Rvd25jYXN0PFJlbmRlckxpbmVCcmVhaz4ocmVuZGVyZXIpKQogICAgICAgICB1cGRh
dGVMaW5lQnJlYWtCb3hEaW1lbnNpb25zKCpyZW5kZXJMaW5lQnJlYWspOwogCiAgICAgaWYgKGF1
dG8qIHJlbmRlcklubGluZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJJbmxpbmU+KHJlbmRlcmVy
KSkKLSAgICAgICAgdXBkYXRlSW5saW5lQm94RGltZW5zaW9ucygqcmVuZGVySW5saW5lKTsKKyAg
ICAgICAgdXBkYXRlSW5saW5lQm94RGltZW5zaW9ucygqcmVuZGVySW5saW5lLCBhdmFpbGFibGVX
aWR0aCk7CiB9CiAKIGNvbnN0IExheW91dDo6RWxlbWVudEJveCYgQm94R2VvbWV0cnlVcGRhdGVy
Ojpyb290TGF5b3V0Qm94KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdy
YXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuaAppbmRleCBmMDkyNTNkYTc2NWYuLjM1YzViZDkwMThj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9M
YXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVw
ZGF0ZXIuaApAQCAtNDcsMTkgKzQ3LDIwIEBAIHB1YmxpYzoKICAgICBCb3hHZW9tZXRyeVVwZGF0
ZXIoQm94VHJlZSYsIExheW91dDo6TGF5b3V0U3RhdGUmKTsKICAgICBCb3hHZW9tZXRyeVVwZGF0
ZXIoTGF5b3V0OjpMYXlvdXRTdGF0ZSYpOwogCi0gICAgdm9pZCBzZXRHZW9tZXRyaWVzRm9yTGF5
b3V0KCk7CisgICAgdm9pZCBzZXRHZW9tZXRyaWVzRm9yTGF5b3V0KExheW91dFVuaXQgYXZhaWxh
YmxlTG9naWNhbFdpZHRoKTsKICAgICB2b2lkIHNldEdlb21ldHJpZXNGb3JJbnRyaW5zaWNXaWR0
aChMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZSk7Ci0gICAgdm9pZCB1cGRhdGVHZW9tZXRyeUFm
dGVyTGF5b3V0KGNvbnN0IExheW91dDo6RWxlbWVudEJveCYpOworICAgIHZvaWQgdXBkYXRlR2Vv
bWV0cnlBZnRlckxheW91dChjb25zdCBMYXlvdXQ6OkVsZW1lbnRCb3gmLCBMYXlvdXRVbml0IGF2
YWlsYWJsZVdpZHRoKTsKIAotICAgIExheW91dDo6Q29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50
IHVwZGF0ZUlubGluZUNvbnRlbnRDb25zdHJhaW50cygpOworICAgIExheW91dDo6Q29uc3RyYWlu
dHNGb3JJbmxpbmVDb250ZW50IHVwZGF0ZUlubGluZUNvbnRlbnRDb25zdHJhaW50cyhMYXlvdXRV
bml0IGF2YWlsYWJsZVdpZHRoKTsKICAgICBIYXNoTWFwPGNvbnN0IExheW91dDo6RWxlbWVudEJv
eCosIExheW91dFVuaXQ+IHRha2VOZXN0ZWRMaXN0TWFya2VyT2Zmc2V0cygpIHsgcmV0dXJuIFdU
Rk1vdmUobV9uZXN0ZWRMaXN0TWFya2VyT2Zmc2V0cyk7IH0KIAogcHJpdmF0ZToKLSAgICB2b2lk
IHVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVyQm94Jiwgc3RkOjpvcHRpb25h
bDxMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOworICAgIHZvaWQg
dXBkYXRlQm94R2VvbWV0cnkoY29uc3QgUmVuZGVyRWxlbWVudCYsIExheW91dFVuaXQgYXZhaWxh
YmxlV2lkdGgpOworCisgICAgdm9pZCB1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKGNvbnN0IFJl
bmRlckJveCYsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+ID0gc3RkOjpudWxsb3B0KTsKICAg
ICB2b2lkIHVwZGF0ZUxpbmVCcmVha0JveERpbWVuc2lvbnMoY29uc3QgUmVuZGVyTGluZUJyZWFr
Jik7Ci0gICAgdm9pZCB1cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25zKGNvbnN0IFJlbmRlcklubGlu
ZSYsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+ID0gc3RkOjpudWxs
b3B0KTsKLSAgICB2b2lkIHVwZGF0ZUxpc3RNYXJrZXJEaW1lbnNpb25zKGNvbnN0IFJlbmRlckxp
c3RNYXJrZXImLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50cmluc2ljV2lkdGhNb2RlPiA9IHN0
ZDo6bnVsbG9wdCk7Ci0gICAgdm9pZCB1cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KGNvbnN0IFJl
bmRlckVsZW1lbnQmKTsKKyAgICB2b2lkIHVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMoY29uc3Qg
UmVuZGVySW5saW5lJiwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwg
c3RkOjpvcHRpb25hbDxMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQp
OworICAgIHZvaWQgdXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMoY29uc3QgUmVuZGVyTGlzdE1h
cmtlciYsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+ID0gc3RkOjpudWxsb3B0KTsKIAogICAg
IEJveFRyZWUmIGJveFRyZWUoKSB7IHJldHVybiAqbV9ib3hUcmVlOyB9CiAgICAgY29uc3QgQm94
VHJlZSYgYm94VHJlZSgpIGNvbnN0IHsgcmV0dXJuICptX2JveFRyZWU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRp
b25MaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxp
bmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCAxMWI0NjIyMzFjNmEuLjFi
ZTAzZWZkNWNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmNwcApAQCAtMjQxLDkgKzI0MSw5IEBAIGJvb2wgTGluZUxheW91dDo6c2hvdWxkSW52YWxpZGF0
ZUxpbmVMYXlvdXRQYXRoQWZ0ZXJUcmVlTXV0YXRpb24oY29uc3QgUmVuZGVyQmxvCiAgICAgcmV0
dXJuIHNob3VsZEludmFsaWRhdGVMaW5lTGF5b3V0UGF0aEFmdGVyQ2hhbmdlRm9yKHBhcmVudCwg
cmVuZGVyZXIsIGxpbmVMYXlvdXQsIGlzUmVtb3ZhbCA/IFR5cGVPZkNoYW5nZUZvckludmFsaWRh
dGlvbjo6Tm9kZVJlbW92YWwgOiBUeXBlT2ZDaGFuZ2VGb3JJbnZhbGlkYXRpb246Ok5vZGVJbnNl
cnRpb24pOwogfQogCi12b2lkIExpbmVMYXlvdXQ6OnVwZGF0ZUlubGluZUNvbnRlbnREaW1lbnNp
b25zKCkKK3ZvaWQgTGluZUxheW91dDo6dXBkYXRlSW5saW5lQ29udGVudERpbWVuc2lvbnMoTGF5
b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpCiB7Ci0gICAgbV9ib3hHZW9tZXRyeVVwZGF0
ZXIuc2V0R2VvbWV0cmllc0ZvckxheW91dCgpOworICAgIG1fYm94R2VvbWV0cnlVcGRhdGVyLnNl
dEdlb21ldHJpZXNGb3JMYXlvdXQoYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKIH0KIAogdm9pZCBM
aW5lTGF5b3V0Ojp1cGRhdGVTdHlsZShjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQpAQCAt
NTcyLDkgKzU3Miw5IEBAIHZvaWQgTGluZUxheW91dDo6dXBkYXRlUmVuZGVyVHJlZVBvc2l0aW9u
cyhjb25zdCBWZWN0b3I8TGluZUFkanVzdG1lbnQ+JiBsaW5lQWRqCiAgICAgfQogfQogCi12b2lk
IExpbmVMYXlvdXQ6OnVwZGF0ZUlubGluZUNvbnRlbnRDb25zdHJhaW50cygpCit2b2lkIExpbmVM
YXlvdXQ6OnVwZGF0ZUlubGluZUNvbnRlbnRDb25zdHJhaW50cyhMYXlvdXRVbml0IGF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aCkKIHsKLSAgICBtX2lubGluZUNvbnRlbnRDb25zdHJhaW50cyA9IG1fYm94
R2VvbWV0cnlVcGRhdGVyLnVwZGF0ZUlubGluZUNvbnRlbnRDb25zdHJhaW50cygpOworICAgIG1f
aW5saW5lQ29udGVudENvbnN0cmFpbnRzID0gbV9ib3hHZW9tZXRyeVVwZGF0ZXIudXBkYXRlSW5s
aW5lQ29udGVudENvbnN0cmFpbnRzKGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiB9CiAKIHZvaWQg
TGluZUxheW91dDo6cHJlcGFyZVBsYWNlZEZsb2F0cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91
dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuaAppbmRleCA1MDlhYjkyODgwMjcuLjRhMmNkMTJjMmU3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oCkBAIC03Nyw4ICs3Nyw4
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnZhbGlkYXRlTGluZUxheW91dFBh
dGhBZnRlckNvbnRlbnRDaGFuZ2UoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBwYXJlbnQsIGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyZXJXaXRoTmV3Q29udGVudCwgY29uc3QgTGluZUxheW91dCYp
OwogICAgIHN0YXRpYyBib29sIHNob3VsZEludmFsaWRhdGVMaW5lTGF5b3V0UGF0aEFmdGVyVHJl
ZU11dGF0aW9uKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgcGFyZW50LCBjb25zdCBSZW5kZXJPYmpl
Y3QmIHJlbmRlcmVyLCBjb25zdCBMaW5lTGF5b3V0JiwgYm9vbCBpc1JlbW92YWwpOwogCi0gICAg
dm9pZCB1cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMoKTsKLSAgICB2b2lkIHVwZGF0ZUlu
bGluZUNvbnRlbnREaW1lbnNpb25zKCk7CisgICAgdm9pZCB1cGRhdGVJbmxpbmVDb250ZW50Q29u
c3RyYWludHMoTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOworICAgIHZvaWQgdXBk
YXRlSW5saW5lQ29udGVudERpbWVuc2lvbnMoTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lk
dGgpOwogICAgIHZvaWQgdXBkYXRlT3ZlcmZsb3coKTsKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVT
dHlsZShjb25zdCBSZW5kZXJPYmplY3QmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCBkMmE4NWJjZGI1MzYuLjJjOTdmNWU4NDY0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTM4Nzks
OCArMzg3OSw5IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJbmxpbmVDb250ZW50KGJv
b2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcmVwCiAKICAgICBhdXRvJiBsYXlvdXRG
b3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQgPSAqdGhpcy0+aW5saW5lTGF5b3V0KCk7CiAKLSAg
ICBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQudXBkYXRlSW5saW5lQ29udGVudENv
bnN0cmFpbnRzKCk7Ci0gICAgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LnVwZGF0
ZUlubGluZUNvbnRlbnREaW1lbnNpb25zKCk7CisgICAgQVNTRVJUKGNvbnRhaW5pbmdCbG9jaygp
IHx8IGlzPFJlbmRlclZpZXc+KCp0aGlzKSk7CisgICAgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRM
aW5lTGF5b3V0LnVwZGF0ZUlubGluZUNvbnRlbnRDb25zdHJhaW50cyhjb250YWluaW5nQmxvY2so
KSA/IGNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKSA6IExheW91dFVu
aXQoKSk7CisgICAgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LnVwZGF0ZUlubGlu
ZUNvbnRlbnREaW1lbnNpb25zKGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpKTsKIAogICAgIGF1dG8g
Y29udGVudEJveFRvcCA9IGJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>472624</attachid>
            <date>2024-09-21 13:26:36 -0700</date>
            <delta_ts>2024-09-21 14:15:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-280039-20240921132635.patch</filename>
            <type>text/plain</type>
            <size>31486</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAzYmQzMDI2YWIxMjdjYTdkMDEyNTlkOTc0ZWExYmVkOTAyOWI1YWUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMTkgU2VwIDIwMjQgMjA6MzE6NDkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbTEZDXVtJ
bnRlZ3JhdGlvbl0gQWx3YXlzIHJlc29sdmUgbWFyZ2luL3BhZGRpbmcgdmFsdWVzCiAoQm94R2Vv
bWV0cnlVcGRhdGVyKSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjgw
MDM5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRoaXMgaXMgaW4gcHJlcGFyYXRpb24g
Zm9yIHVzaW5nIEJveEdlb21ldHJ5VXBkYXRlciBmcm9tIEZGQy4KCi1zcGVjaWFsIGNhc2UgdGFi
bGUgY2VsbCdzICJpbnRyaW5zaWMgcGFkZGluZyIgdmFsdWVzIGFuZCBjb2xsYXBzZWQgYm9yZGVy
cy4gVGhleSBhcmUgY29tcHV0ZWQgYXQgdGhlIGNvbnRhaW5pbmcgYmxvY2sgbGV2ZWwgc28gc2hv
dWxkIGJlCmF2YWlsYWJsZSBieSB0aGUgdGltZSB3ZSBzdGFydCBydW5uaW5nIGxheW91dCBvbiB0
aGUgY2VsbCBjb250ZW50LgotYWxzbyBmaWVsZHNldCBib3JkZXIgd2hpY2ggaXMgcmVhbGx5IHVu
Zm9ydHVuYXRlLgoKRXZlbnR1YWxseSBhbGwgdGhlc2UgbG9naWMgd2lsbCBnZXQgbW92ZWQgb3Zl
ciB0byB1cGRhdGVyLgoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5jcHA6CihXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KToKKiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uQm94R2Vv
bWV0cnlVcGRhdGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjp1c2VkVmFsdWVP
clplcm8pOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveEdlb21ldHJ5VXBkYXRlcjo6
dXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
Omhvcml6b250YWxMb2dpY2FsTWFyZ2luKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjps
b2dpY2FsQm9yZGVyKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpsb2dpY2FsUGFkZGlu
Zyk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94R2VvbWV0cnlVcGRhdGVyOjp1cGRh
dGVMYXlvdXRCb3hEaW1lbnNpb25zKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hH
ZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMpOgooV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OkJveEdlb21ldHJ5VXBkYXRlcjo6c2V0R2VvbWV0cmllc0ZvckxheW91
dCk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94R2VvbWV0cnlVcGRhdGVyOjpzZXRH
ZW9tZXRyaWVzRm9ySW50cmluc2ljV2lkdGgpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OkJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKToKKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hHZW9tZXRyeVVwZGF0ZXI6OnNldEdlb21ldHJ5
QWZ0ZXJJbnRlZ3JhdGlvbkxheW91dCk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94
R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVCb3hHZW9tZXRyeSk6CihXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6Zml4ZWRWYWx1ZU9yWmVybyk6IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6Qm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KTog
RGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91
dEludGVncmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwOgooV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnVwZGF0ZUlubGluZUNvbnRlbnRE
aW1lbnNpb25zKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xh
eW91dEludGVncmF0aW9uTGluZUxheW91dC5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuY3BwOgooV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJbmxp
bmVDb250ZW50KToKLS0tCiAuLi55b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91
dC5jcHAgfCAgIDMgKy0KIC4uLi9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5j
cHAgICB8IDE0MCArKysrKysrKysrKystLS0tLS0KIC4uLi9MYXlvdXRJbnRlZ3JhdGlvbkJveEdl
b21ldHJ5VXBkYXRlci5oICAgICB8ICAxNSArLQogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuY3BwICAgIHwgICA4ICstCiAuLi4vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5oICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwICB8ICAgNSArLQogNiBmaWxlcyBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9u
cygrKSwgNjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uRm9y
bWF0dGluZ0NvbnRleHRMYXlvdXQuY3BwCmluZGV4IDk2YjllZjNkYjAyOS4uNzRjMTEyMjEwZDI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uRm9ybWF0dGluZ0NvbnRleHRMYXlv
dXQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25Gb3Jt
YXR0aW5nQ29udGV4dExheW91dC5oIgogCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25Cb3hH
ZW9tZXRyeVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJl
bmRlckJveC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw3ICs0OCw3IEBAIHZvaWQg
bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IExheW91dDo6RWxlbWVudEJv
eCYgYm94LCBzdGQ6Om9wdGlvCiAgICAgICAgIHJlbmRlcmVyLmNsZWFyT3ZlcnJpZGluZ0xvZ2lj
YWxXaWR0aExlbmd0aCgpOwogCiAgICAgYXV0byB1cGRhdGVyID0gQm94R2VvbWV0cnlVcGRhdGVy
IHsgbGF5b3V0U3RhdGUgfTsKLSAgICB1cGRhdGVyLnVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQo
Ym94KTsKKyAgICB1cGRhdGVyLnVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQoYm94LCB3aWR0aENv
bnN0cmFpbnQudmFsdWVfb3IocmVuZGVyZXIuY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCgpKSk7CiB9CiAKIExheW91dFVuaXQgZm9ybWF0dGluZ0NvbnRleHRSb290TG9n
aWNhbFdpZHRoRm9yVHlwZShjb25zdCBMYXlvdXQ6OkVsZW1lbnRCb3gmIGJveCwgTG9naWNhbFdp
ZHRoVHlwZSBsb2dpY2FsV2lkdGhUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dElu
dGVncmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmNwcAppbmRleCBlNjlkOTVjM2Q1ZDAuLmYzMzZh
ZTJlYWMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lu
bGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdl
b21ldHJ5VXBkYXRlci5jcHAKQEAgLTQ5LDE1ICs0OSwyMyBAQAogI2luY2x1ZGUgIlJlbmRlck1h
dGhNTEJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGFibGUuaCIKKyNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJSZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiAKLXN0YXRpYyBM
YXlvdXRVbml0IGZpeGVkVmFsdWVPclplcm8oY29uc3QgTGVuZ3RoJiBsZW5ndGgpCisKK3N0YXRp
YyBMYXlvdXRVbml0IHVzZWRWYWx1ZU9yWmVybyhjb25zdCBMZW5ndGgmIGxlbmd0aCwgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCkKIHsKLSAgICByZXR1cm4gTGF5b3V0
VW5pdCB7IGxlbmd0aC5pc0ZpeGVkKCkgPyBsZW5ndGgudmFsdWUoKSA6IDAuZiB9OworICAgIGlm
IChsZW5ndGguaXNGaXhlZCgpKQorICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IGxlbmd0aC52
YWx1ZSgpIH07CisKKyAgICBpZiAobGVuZ3RoLmlzQXV0bygpIHx8ICFhdmFpbGFibGVXaWR0aCkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgo
bGVuZ3RoLCAqYXZhaWxhYmxlV2lkdGgpOwogfQogCiBCb3hHZW9tZXRyeVVwZGF0ZXI6OkJveEdl
b21ldHJ5VXBkYXRlcihCb3hUcmVlJiBib3hUcmVlLCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlv
dXRTdGF0ZSkKQEAgLTcxLDkgKzc5LDkgQEAgQm94R2VvbWV0cnlVcGRhdGVyOjpCb3hHZW9tZXRy
eVVwZGF0ZXIoTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCiB7CiB9CiAKLXZvaWQg
Qm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVMaXN0TWFya2VyRGltZW5zaW9ucyhjb25zdCBSZW5k
ZXJMaXN0TWFya2VyJiBsaXN0TWFya2VyLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50cmluc2lj
V2lkdGhNb2RlPiBpbnRyaW5zaWNXaWR0aE1vZGUpCit2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6
dXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMoY29uc3QgUmVuZGVyTGlzdE1hcmtlciYgbGlzdE1h
cmtlciwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgc3RkOjpvcHRp
b25hbDxMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gaW50cmluc2ljV2lkdGhNb2RlKQogewot
ICAgIHVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMobGlzdE1hcmtlciwgaW50cmluc2ljV2lkdGhN
b2RlKTsKKyAgICB1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKGxpc3RNYXJrZXIsIGF2YWlsYWJs
ZVdpZHRoLCBpbnRyaW5zaWNXaWR0aE1vZGUpOwogICAgIGlmIChpbnRyaW5zaWNXaWR0aE1vZGUp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMTMzLDIwICsxNDEsMTkgQEAgc3RhdGljIGlubGluZSBM
YXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsSGVpZ2h0Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyQm94
JiByZW5kZXIKICAgICByZXR1cm4gcmVuZGVyZXIucGFyZW50KCktPnN0eWxlKCkuaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IHJlbmRlcmVyLmNvbnRlbnRIZWlnaHQoKSA6IHJlbmRlcmVyLmNv
bnRlbnRXaWR0aCgpOwogfQogCi1lbnVtIGNsYXNzIFVzZUNvbXB1dGVkVmFsdWVzIDogYm9vbCB7
IE5vLCBZZXMgfTsKLXN0YXRpYyBpbmxpbmUgTGF5b3V0OjpCb3hHZW9tZXRyeTo6SG9yaXpvbnRh
bEVkZ2VzIGhvcml6b250YWxMb2dpY2FsTWFyZ2luKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0
JiByZW5kZXJlciwgYm9vbCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBib29sIGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlLCBVc2VDb21wdXRlZFZhbHVlcyB1c2VDb21wdXRlZFZhbHVlcyA9
IFVzZUNvbXB1dGVkVmFsdWVzOjpObywgYm9vbCByZXRhaW5NYXJnaW5TdGFydCA9IHRydWUsIGJv
b2wgcmV0YWluTWFyZ2luRW5kID0gdHJ1ZSkKK3N0YXRpYyBpbmxpbmUgTGF5b3V0OjpCb3hHZW9t
ZXRyeTo6SG9yaXpvbnRhbEVkZ2VzIGhvcml6b250YWxMb2dpY2FsTWFyZ2luKGNvbnN0IFJlbmRl
ckJveE1vZGVsT2JqZWN0JiByZW5kZXJlciwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFp
bGFibGVXaWR0aCwgYm9vbCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBib29sIGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlLCBib29sIHJldGFpbk1hcmdpblN0YXJ0ID0gdHJ1ZSwgYm9vbCBy
ZXRhaW5NYXJnaW5FbmQgPSB0cnVlKQogewogICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXIuc3R5
bGUoKTsKLSAgICBhdXRvIG1hcmdpbkxlZnQgPSB1c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21w
dXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5tYXJnaW5MZWZ0KCkgOiBmaXhlZFZhbHVlT3JaZXJv
KHN0eWxlLm1hcmdpbkxlZnQoKSk7Ci0gICAgYXV0byBtYXJnaW5SaWdodCA9IHVzZUNvbXB1dGVk
VmFsdWVzID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVyLm1hcmdpblJpZ2h0KCkg
OiBmaXhlZFZhbHVlT3JaZXJvKHN0eWxlLm1hcmdpblJpZ2h0KCkpOworICAgIGF1dG8gbWFyZ2lu
TGVmdCA9IHVzZWRWYWx1ZU9yWmVybyhzdHlsZS5tYXJnaW5MZWZ0KCksIGF2YWlsYWJsZVdpZHRo
KTsKKyAgICBhdXRvIG1hcmdpblJpZ2h0ID0gdXNlZFZhbHVlT3JaZXJvKHN0eWxlLm1hcmdpblJp
Z2h0KCksIGF2YWlsYWJsZVdpZHRoKTsKICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUp
IHsKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24pCiAgICAgICAgICAg
ICByZXR1cm4geyByZXRhaW5NYXJnaW5TdGFydCA/IG1hcmdpbkxlZnQgOiAwX2x1LCByZXRhaW5N
YXJnaW5FbmQgPyBtYXJnaW5SaWdodCA6IDBfbHUgfTsKICAgICAgICAgcmV0dXJuIHsgcmV0YWlu
TWFyZ2luU3RhcnQgPyBtYXJnaW5SaWdodCA6IDBfbHUsIHJldGFpbk1hcmdpbkVuZCA/IG1hcmdp
bkxlZnQgOiAwX2x1IH07CiAgICAgfQogCi0gICAgYXV0byBtYXJnaW5Ub3AgPSB1c2VDb21wdXRl
ZFZhbHVlcyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5tYXJnaW5Ub3AoKSA6
IGZpeGVkVmFsdWVPclplcm8oc3R5bGUubWFyZ2luVG9wKCkpOwotICAgIGF1dG8gbWFyZ2luQm90
dG9tID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVy
ZXIubWFyZ2luQm90dG9tKCkgOiBmaXhlZFZhbHVlT3JaZXJvKHN0eWxlLm1hcmdpbkJvdHRvbSgp
KTsKKyAgICBhdXRvIG1hcmdpblRvcCA9IHVzZWRWYWx1ZU9yWmVybyhzdHlsZS5tYXJnaW5Ub3Ao
KSwgYXZhaWxhYmxlV2lkdGgpOworICAgIGF1dG8gbWFyZ2luQm90dG9tID0gdXNlZFZhbHVlT3Ja
ZXJvKHN0eWxlLm1hcmdpbkJvdHRvbSgpLCBhdmFpbGFibGVXaWR0aCk7CiAgICAgaWYgKGlzTGVm
dFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24pCiAgICAgICAgIHJldHVybiB7IHJldGFpbk1hcmdpblN0
YXJ0ID8gbWFyZ2luVG9wIDogMF9sdSwgcmV0YWluTWFyZ2luRW5kID8gbWFyZ2luQm90dG9tIDog
MF9sdSB9OwogICAgIHJldHVybiB7IHJldGFpbk1hcmdpblN0YXJ0ID8gbWFyZ2luQm90dG9tIDog
MF9sdSwgcmV0YWluTWFyZ2luRW5kID8gbWFyZ2luVG9wIDogMF9sdSB9OwpAQCAtMTY4LDE4ICsx
NzUsNDcgQEAgc3RhdGljIGlubGluZSBMYXlvdXQ6OkJveEdlb21ldHJ5OjpWZXJ0aWNhbEVkZ2Vz
IHZlcnRpY2FsTG9naWNhbE1hcmdpbihjb25zdCBSZW4KIH0KIAogZW51bSBjbGFzcyBJc1BhcnRP
ZkZvcm1hdHRpbmdDb250ZXh0IDogYm9vbCB7IE5vLCBZZXMgfTsKLXN0YXRpYyBpbmxpbmUgTGF5
b3V0OjpCb3hHZW9tZXRyeTo6RWRnZXMgbG9naWNhbEJvcmRlcihjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCYgcmVuZGVyZXIsIGJvb2wgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgRmxv
d0RpcmVjdGlvbiBibG9ja0Zsb3dEaXJlY3Rpb24sIFVzZUNvbXB1dGVkVmFsdWVzIHVzZUNvbXB1
dGVkVmFsdWVzID0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vLCBJc1BhcnRPZkZvcm1hdHRpbmdDb250
ZXh0IGlzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgPSBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0
OjpObywgYm9vbCByZXRhaW5Cb3JkZXJTdGFydCA9IHRydWUsIGJvb2wgcmV0YWluQm9yZGVyRW5k
ID0gdHJ1ZSkKK3N0YXRpYyBpbmxpbmUgTGF5b3V0OjpCb3hHZW9tZXRyeTo6RWRnZXMgbG9naWNh
bEJvcmRlcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIsIGJvb2wgaXNMZWZ0
VG9SaWdodElubGluZURpcmVjdGlvbiwgRmxvd0RpcmVjdGlvbiBibG9ja0Zsb3dEaXJlY3Rpb24s
IElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgaXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dCA9IElz
UGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6Ok5vLCBib29sIHJldGFpbkJvcmRlclN0YXJ0ID0gdHJ1
ZSwgYm9vbCByZXRhaW5Cb3JkZXJFbmQgPSB0cnVlKQogewogICAgIGF1dG8mIHN0eWxlID0gcmVu
ZGVyZXIuc3R5bGUoKTsKLSAgICBhdXRvIGJvcmRlckxlZnQgPSB1c2VDb21wdXRlZFZhbHVlcyA9
PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5ib3JkZXJMZWZ0KCkgOiBMYXlvdXRV
bml0KHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpKTsKLSAgICBhdXRvIGJvcmRlclJpZ2h0ID0gdXNl
Q29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIuYm9yZGVy
UmlnaHQoKSA6IExheW91dFVuaXQoc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpKTsKLSAgICBhdXRv
IGJvcmRlclRvcCA9IHVzZUNvbXB1dGVkVmFsdWVzID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/
IHJlbmRlcmVyLmJvcmRlclRvcCgpIDogTGF5b3V0VW5pdChzdHlsZS5ib3JkZXJUb3BXaWR0aCgp
KTsKLSAgICBhdXRvIGJvcmRlckJvdHRvbSA9IHVzZUNvbXB1dGVkVmFsdWVzID09IFVzZUNvbXB1
dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVyLmJvcmRlckJvdHRvbSgpIDogTGF5b3V0VW5pdChzdHls
ZS5ib3JkZXJCb3R0b21XaWR0aCgpKTsKKyAgICBhdXRvIGJvcmRlckxlZnQgPSBMYXlvdXRVbml0
IHsgc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCkgfTsKKyAgICBhdXRvIGJvcmRlclJpZ2h0ID0gTGF5
b3V0VW5pdCB7IHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSB9OworICAgIGF1dG8gYm9yZGVyVG9w
ID0gTGF5b3V0VW5pdCB7IHN0eWxlLmJvcmRlclRvcFdpZHRoKCkgfTsKKyAgICBhdXRvIGJvcmRl
ckJvdHRvbSA9IExheW91dFVuaXQgeyBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpIH07CisKKyAg
ICBpZiAoYXV0byogdGFibGVDZWxsID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRhYmxlQ2VsbD4o
cmVuZGVyZXIpOyB0YWJsZUNlbGwgJiYgdGFibGVDZWxsLT50YWJsZSgpLT5jb2xsYXBzZUJvcmRl
cnMoKSkgeworICAgICAgICBib3JkZXJMZWZ0ID0gdGFibGVDZWxsLT5ib3JkZXJMZWZ0KCk7Cisg
ICAgICAgIGJvcmRlclJpZ2h0ID0gdGFibGVDZWxsLT5ib3JkZXJSaWdodCgpOworICAgICAgICBi
b3JkZXJUb3AgPSB0YWJsZUNlbGwtPmJvcmRlclRvcCgpOworICAgICAgICBib3JkZXJCb3R0b20g
PSB0YWJsZUNlbGwtPmJvcmRlckJvdHRvbSgpOworICAgIH0gZWxzZSBpZiAocmVuZGVyZXIuaXNG
aWVsZHNldCgpKSB7CisgICAgICAgIGF1dG8gYWRqdXN0bWVudCA9IGRvd25jYXN0PFJlbmRlckJs
b2NrPihyZW5kZXJlcikuaW50cmluc2ljQm9yZGVyRm9yRmllbGRzZXQoKTsKKyAgICAgICAgLy8g
Tm90ZSB0aGF0IHRoaXMgYWRqdXN0bWVudCBpcyBjb21pbmcgZnJvbSBfaW5zaWRlXyB0aGUgZmll
bGRzZXQgc28gaXRzIG93biBmbG93IGRpcmVjdGlvbiBpcyB3aGF0IGlzIHJlbGV2YW50IGhlcmUu
CisgICAgICAgIHN3aXRjaCAoc3R5bGUuYmxvY2tGbG93RGlyZWN0aW9uKCkpIHsKKyAgICAgICAg
Y2FzZSBGbG93RGlyZWN0aW9uOjpUb3BUb0JvdHRvbToKKyAgICAgICAgICAgIGJvcmRlclRvcCAr
PSBhZGp1c3RtZW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRmxvd0RpcmVj
dGlvbjo6Qm90dG9tVG9Ub3A6CisgICAgICAgICAgICBib3JkZXJCb3R0b20gKz0gYWRqdXN0bWVu
dDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZsb3dEaXJlY3Rpb246OkxlZnRU
b1JpZ2h0OgorICAgICAgICAgICAgYm9yZGVyTGVmdCArPSBhZGp1c3RtZW50OworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRmxvd0RpcmVjdGlvbjo6UmlnaHRUb0xlZnQ6CisgICAg
ICAgICAgICBib3JkZXJSaWdodCArPSBhZGp1c3RtZW50OworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgfQorICAgIH0KIAogICAgIGlmIChibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlv
bjo6VG9wVG9Cb3R0b20gfHwgYmxvY2tGbG93RGlyZWN0aW9uID09IEZsb3dEaXJlY3Rpb246OkJv
dHRvbVRvVG9wKSB7CisgICAgICAgIGF1dG8gYm9yZGVyTG9naWNhbFRvcCA9IGJsb2NrRmxvd0Rp
cmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpUb3BUb0JvdHRvbSA/IGJvcmRlclRvcCA6IGJvcmRl
ckJvdHRvbTsKKyAgICAgICAgYXV0byBib3JkZXJMb2dpY2FsQm90dG9tID0gYmxvY2tGbG93RGly
ZWN0aW9uID09IEZsb3dEaXJlY3Rpb246OlRvcFRvQm90dG9tID8gYm9yZGVyQm90dG9tIDogYm9y
ZGVyVG9wOworCiAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uKQotICAg
ICAgICAgICAgcmV0dXJuIHsgeyByZXRhaW5Cb3JkZXJTdGFydCA/IGJvcmRlckxlZnQgOiAwX2x1
LCByZXRhaW5Cb3JkZXJFbmQgPyBib3JkZXJSaWdodCA6IDBfbHUgfSwgeyBib3JkZXJUb3AsIGJv
cmRlckJvdHRvbSB9IH07Ci0gICAgICAgIHJldHVybiB7IHsgcmV0YWluQm9yZGVyU3RhcnQgPyBi
b3JkZXJSaWdodCA6IDBfbHUsIHJldGFpbkJvcmRlckVuZCA/IGJvcmRlckxlZnQgOiAwX2x1IH0s
IHsgYm9yZGVyVG9wLCBib3JkZXJCb3R0b20gfSB9OworICAgICAgICAgICAgcmV0dXJuIHsgeyBy
ZXRhaW5Cb3JkZXJTdGFydCA/IGJvcmRlckxlZnQgOiAwX2x1LCByZXRhaW5Cb3JkZXJFbmQgPyBi
b3JkZXJSaWdodCA6IDBfbHUgfSwgeyBib3JkZXJMb2dpY2FsVG9wLCBib3JkZXJMb2dpY2FsQm90
dG9tIH0gfTsKKyAgICAgICAgcmV0dXJuIHsgeyByZXRhaW5Cb3JkZXJTdGFydCA/IGJvcmRlclJp
Z2h0IDogMF9sdSwgcmV0YWluQm9yZGVyRW5kID8gYm9yZGVyTGVmdCA6IDBfbHUgfSwgeyBib3Jk
ZXJMb2dpY2FsVG9wLCBib3JkZXJMb2dpY2FsQm90dG9tIH0gfTsKICAgICB9CiAKICAgICBhdXRv
IGJvcmRlckxvZ2ljYWxMZWZ0ID0gcmV0YWluQm9yZGVyU3RhcnQgPyBpc0xlZnRUb1JpZ2h0SW5s
aW5lRGlyZWN0aW9uID8gYm9yZGVyVG9wIDogYm9yZGVyQm90dG9tIDogMF9sdTsKQEAgLTE5MCwx
OCArMjI2LDI2IEBAIHN0YXRpYyBpbmxpbmUgTGF5b3V0OjpCb3hHZW9tZXRyeTo6RWRnZXMgbG9n
aWNhbEJvcmRlcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjCiAgICAgcmV0dXJuIHsgeyBib3Jk
ZXJMb2dpY2FsTGVmdCwgYm9yZGVyTG9naWNhbFJpZ2h0IH0sIHsgYm9yZGVyTG9naWNhbFRvcCwg
Ym9yZGVyTG9naWNhbEJvdHRvbSB9IH07CiB9CiAKLXN0YXRpYyBpbmxpbmUgTGF5b3V0OjpCb3hH
ZW9tZXRyeTo6RWRnZXMgbG9naWNhbFBhZGRpbmcoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3Qm
IHJlbmRlcmVyLCBib29sIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIEZsb3dEaXJlY3Rp
b24gYmxvY2tGbG93RGlyZWN0aW9uLCBVc2VDb21wdXRlZFZhbHVlcyB1c2VDb21wdXRlZFZhbHVl
cyA9IFVzZUNvbXB1dGVkVmFsdWVzOjpObywgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dCBpc1Bh
cnRPZkZvcm1hdHRpbmdDb250ZXh0ID0gSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6Tm8sIGJv
b2wgcmV0YWluUGFkZGluZ1N0YXJ0ID0gdHJ1ZSwgYm9vbCByZXRhaW5QYWRkaW5nRW5kID0gdHJ1
ZSkKK3N0YXRpYyBpbmxpbmUgTGF5b3V0OjpCb3hHZW9tZXRyeTo6RWRnZXMgbG9naWNhbFBhZGRp
bmcoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyLCBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IGF2YWlsYWJsZVdpZHRoLCBib29sIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rp
b24sIEZsb3dEaXJlY3Rpb24gYmxvY2tGbG93RGlyZWN0aW9uLCBJc1BhcnRPZkZvcm1hdHRpbmdD
b250ZXh0IGlzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgPSBJc1BhcnRPZkZvcm1hdHRpbmdDb250
ZXh0OjpObywgYm9vbCByZXRhaW5QYWRkaW5nU3RhcnQgPSB0cnVlLCBib29sIHJldGFpblBhZGRp
bmdFbmQgPSB0cnVlKQogewogICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXIuc3R5bGUoKTsKLSAg
ICBhdXRvIHBhZGRpbmdMZWZ0ID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1
ZXM6Ok5vID8gcmVuZGVyZXIucGFkZGluZ0xlZnQoKSA6IGZpeGVkVmFsdWVPclplcm8oc3R5bGUu
cGFkZGluZ0xlZnQoKSk7Ci0gICAgYXV0byBwYWRkaW5nUmlnaHQgPSB1c2VDb21wdXRlZFZhbHVl
cyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5wYWRkaW5nUmlnaHQoKSA6IGZp
eGVkVmFsdWVPclplcm8oc3R5bGUucGFkZGluZ1JpZ2h0KCkpOwotICAgIGF1dG8gcGFkZGluZ1Rv
cCA9IHVzZUNvbXB1dGVkVmFsdWVzID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVy
LnBhZGRpbmdUb3AoKSA6IGZpeGVkVmFsdWVPclplcm8oc3R5bGUucGFkZGluZ1RvcCgpKTsKLSAg
ICBhdXRvIHBhZGRpbmdCb3R0b20gPSB1c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21wdXRlZFZh
bHVlczo6Tm8gPyByZW5kZXJlci5wYWRkaW5nQm90dG9tKCkgOiBmaXhlZFZhbHVlT3JaZXJvKHN0
eWxlLnBhZGRpbmdCb3R0b20oKSk7CisKKyAgICBhdXRvIHBhZGRpbmdMZWZ0ID0gdXNlZFZhbHVl
T3JaZXJvKHN0eWxlLnBhZGRpbmdMZWZ0KCksIGF2YWlsYWJsZVdpZHRoKTsKKyAgICBhdXRvIHBh
ZGRpbmdSaWdodCA9IHVzZWRWYWx1ZU9yWmVybyhzdHlsZS5wYWRkaW5nUmlnaHQoKSwgYXZhaWxh
YmxlV2lkdGgpOworICAgIGF1dG8gcGFkZGluZ1RvcCA9IHVzZWRWYWx1ZU9yWmVybyhzdHlsZS5w
YWRkaW5nVG9wKCksIGF2YWlsYWJsZVdpZHRoKTsKKyAgICBhdXRvIHBhZGRpbmdCb3R0b20gPSB1
c2VkVmFsdWVPclplcm8oc3R5bGUucGFkZGluZ0JvdHRvbSgpLCBhdmFpbGFibGVXaWR0aCk7CisK
KyAgICBhdXRvIGludHJpbnNpY1BhZGRpbmdCZWZvcmUgPSBMYXlvdXRVbml0IHsgfTsKKyAgICBh
dXRvIGludHJpbnNpY1BhZGRpbmdBZnRlciA9IExheW91dFVuaXQgeyB9OworICAgIGlmIChhdXRv
KiB0YWJsZUNlbGwgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcikp
IHsKKyAgICAgICAgaW50cmluc2ljUGFkZGluZ0JlZm9yZSA9IHRhYmxlQ2VsbC0+aW50cmluc2lj
UGFkZGluZ0JlZm9yZSgpOworICAgICAgICBpbnRyaW5zaWNQYWRkaW5nQWZ0ZXIgPSB0YWJsZUNl
bGwtPmludHJpbnNpY1BhZGRpbmdBZnRlcigpOworICAgIH0KIAogICAgIGlmIChibG9ja0Zsb3dE
aXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6VG9wVG9Cb3R0b20gfHwgYmxvY2tGbG93RGlyZWN0
aW9uID09IEZsb3dEaXJlY3Rpb246OkJvdHRvbVRvVG9wKSB7CiAgICAgICAgIGlmIChpc0xlZnRU
b1JpZ2h0SW5saW5lRGlyZWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuIHsgeyByZXRhaW5QYWRk
aW5nU3RhcnQgPyBwYWRkaW5nTGVmdCA6IDBfbHUsIHJldGFpblBhZGRpbmdFbmQgPyBwYWRkaW5n
UmlnaHQgOiAwX2x1IH0sIHsgcGFkZGluZ1RvcCwgcGFkZGluZ0JvdHRvbSB9IH07Ci0gICAgICAg
IHJldHVybiB7IHsgcmV0YWluUGFkZGluZ1N0YXJ0ID8gcGFkZGluZ1JpZ2h0IDogMF9sdSwgcmV0
YWluUGFkZGluZ0VuZCA/IHBhZGRpbmdMZWZ0IDogMF9sdSB9LCB7IHBhZGRpbmdUb3AsIHBhZGRp
bmdCb3R0b20gfSB9OworICAgICAgICAgICAgcmV0dXJuIHsgeyByZXRhaW5QYWRkaW5nU3RhcnQg
PyBwYWRkaW5nTGVmdCA6IDBfbHUsIHJldGFpblBhZGRpbmdFbmQgPyBwYWRkaW5nUmlnaHQgOiAw
X2x1IH0sIHsgcGFkZGluZ1RvcCArIGludHJpbnNpY1BhZGRpbmdCZWZvcmUsIHBhZGRpbmdCb3R0
b20gKyBpbnRyaW5zaWNQYWRkaW5nQWZ0ZXIgfSB9OworICAgICAgICByZXR1cm4geyB7IHJldGFp
blBhZGRpbmdTdGFydCA/IHBhZGRpbmdSaWdodCA6IDBfbHUsIHJldGFpblBhZGRpbmdFbmQgPyBw
YWRkaW5nTGVmdCA6IDBfbHUgfSwgeyBwYWRkaW5nVG9wICsgaW50cmluc2ljUGFkZGluZ0JlZm9y
ZSwgcGFkZGluZ0JvdHRvbSArIGludHJpbnNpY1BhZGRpbmdBZnRlciB9IH07CiAgICAgfQogCiAg
ICAgYXV0byBwYWRkaW5nTG9naWNhbExlZnQgPSByZXRhaW5QYWRkaW5nU3RhcnQgPyBpc0xlZnRU
b1JpZ2h0SW5saW5lRGlyZWN0aW9uID8gcGFkZGluZ1RvcCA6IHBhZGRpbmdCb3R0b20gOiAwX2x1
OwpAQCAtMjA5LDcgKzI1Myw3IEBAIHN0YXRpYyBpbmxpbmUgTGF5b3V0OjpCb3hHZW9tZXRyeTo6
RWRnZXMgbG9naWNhbFBhZGRpbmcoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplCiAgICAgLy8gRm9y
IGJveGVzIGluc2lkZSB0aGUgZm9ybWF0dGluZyBjb250ZXh0LCByaWdodCBwYWRkaW5nIChib3Jk
ZXIpIGFsd2F5cyBwb2ludHMgdXAsIHdoaWxlIHdoZW4gY29udmVydGluZyB0aGUgZm9ybWF0dGlu
ZyBjb250ZXh0IHJvb3QncyBwYWRkaW5nIChib3JkZXIpIHRoZSBkaXJlY3Rpb25hbGl0eSBtYXR0
ZXJzLgogICAgIGF1dG8gcGFkZGluZ0xvZ2ljYWxUb3AgPSBpc1BhcnRPZkZvcm1hdHRpbmdDb250
ZXh0ID09IElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6OlllcyA/IHBhZGRpbmdSaWdodCA6IGJs
b2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpMZWZ0VG9SaWdodCA/IHBhZGRpbmdM
ZWZ0IDogcGFkZGluZ1JpZ2h0OwogICAgIGF1dG8gcGFkZGluZ0xvZ2ljYWxCb3R0b20gPSBpc1Bh
cnRPZkZvcm1hdHRpbmdDb250ZXh0ID09IElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6OlllcyA/
IHBhZGRpbmdMZWZ0IDogYmxvY2tGbG93RGlyZWN0aW9uID09IEZsb3dEaXJlY3Rpb246OkxlZnRU
b1JpZ2h0ID8gcGFkZGluZ1JpZ2h0IDogcGFkZGluZ0xlZnQ7Ci0gICAgcmV0dXJuIHsgeyBwYWRk
aW5nTG9naWNhbExlZnQsIHBhZGRpbmdMb2dpY2FsUmlnaHQgfSwgeyBwYWRkaW5nTG9naWNhbFRv
cCwgcGFkZGluZ0xvZ2ljYWxCb3R0b20gfSB9OworICAgIHJldHVybiB7IHsgcGFkZGluZ0xvZ2lj
YWxMZWZ0LCBwYWRkaW5nTG9naWNhbFJpZ2h0IH0sIHsgcGFkZGluZ0xvZ2ljYWxUb3AgKyBpbnRy
aW5zaWNQYWRkaW5nQmVmb3JlLCBwYWRkaW5nTG9naWNhbEJvdHRvbSArIGludHJpbnNpY1BhZGRp
bmdBZnRlciB9IH07CiB9CiAKIHN0YXRpYyBpbmxpbmUgTGF5b3V0U2l6ZSBzY3JvbGxiYXJMb2dp
Y2FsU2l6ZShjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyKQpAQCAtMjIyLDcgKzI2Niw3IEBAIHN0
YXRpYyBpbmxpbmUgTGF5b3V0U2l6ZSBzY3JvbGxiYXJMb2dpY2FsU2l6ZShjb25zdCBSZW5kZXJC
b3gmIHJlbmRlcmVyKQogICAgIHJldHVybiB7IGhvcml6b250YWxTcGFjZVJlc2VydmVkRm9yU2Ny
b2xsYmFyLCB2ZXJ0aWNhbFNwYWNlUmVzZXJ2ZWRGb3JTY3JvbGxiYXIgfTsKIH0KIAotdm9pZCBC
b3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVy
Qm94JiByZW5kZXJCb3gsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+
IGludHJpbnNpY1dpZHRoTW9kZSkKK3ZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVMYXlv
dXRCb3hEaW1lbnNpb25zKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyQm94LCBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IGF2YWlsYWJsZVdpZHRoLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50cmlu
c2ljV2lkdGhNb2RlPiBpbnRyaW5zaWNXaWR0aE1vZGUpCiB7CiAgICAgYXV0byYgbGF5b3V0Qm94
ID0gY29uc3RfY2FzdDxMYXlvdXQ6OkVsZW1lbnRCb3gmPigqcmVuZGVyQm94LmxheW91dEJveCgp
KTsKICAgICBhdXRvIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24gPSByZW5kZXJCb3gucGFy
ZW50KCktPnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwpAQCAtMjMwLDkgKzI3NCw5
IEBAIHZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKGNv
bnN0IFJlbmRlckJveCYgcmVuZGVyQm94LCBzCiAgICAgYXV0byBpc0hvcml6b250YWxXcml0aW5n
TW9kZSA9IGJsb2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpUb3BUb0JvdHRvbSB8
fCBibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6Qm90dG9tVG9Ub3A7CiAKICAg
ICBhdXRvJiBib3hHZW9tZXRyeSA9IGxheW91dFN0YXRlKCkuZW5zdXJlR2VvbWV0cnlGb3JCb3go
bGF5b3V0Qm94KTsKLSAgICBhdXRvIGlubGluZU1hcmdpbiA9IGhvcml6b250YWxMb2dpY2FsTWFy
Z2luKHJlbmRlckJveCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUsIGludHJpbnNpY1dpZHRoTW9kZSA/IFVzZUNvbXB1dGVkVmFsdWVzOjpZZXMg
OiBVc2VDb21wdXRlZFZhbHVlczo6Tm8pOwotICAgIGF1dG8gYm9yZGVyID0gbG9naWNhbEJvcmRl
cihyZW5kZXJCb3gsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVj
dGlvbiwgaW50cmluc2ljV2lkdGhNb2RlID8gVXNlQ29tcHV0ZWRWYWx1ZXM6OlllcyA6IFVzZUNv
bXB1dGVkVmFsdWVzOjpObyk7Ci0gICAgYXV0byBwYWRkaW5nID0gbG9naWNhbFBhZGRpbmcocmVu
ZGVyQm94LCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24s
IGludHJpbnNpY1dpZHRoTW9kZSA/IFVzZUNvbXB1dGVkVmFsdWVzOjpZZXMgOiBVc2VDb21wdXRl
ZFZhbHVlczo6Tm8pOworICAgIGF1dG8gaW5saW5lTWFyZ2luID0gaG9yaXpvbnRhbExvZ2ljYWxN
YXJnaW4ocmVuZGVyQm94LCBhdmFpbGFibGVXaWR0aCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVj
dGlvbiwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUpOworICAgIGF1dG8gYm9yZGVyID0gbG9naWNh
bEJvcmRlcihyZW5kZXJCb3gsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxv
d0RpcmVjdGlvbik7CisgICAgYXV0byBwYWRkaW5nID0gbG9naWNhbFBhZGRpbmcocmVuZGVyQm94
LCBhdmFpbGFibGVXaWR0aCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYmxvY2tGbG93
RGlyZWN0aW9uKTsKICAgICBhdXRvIHNjcm9sbGJhclNpemUgPSBzY3JvbGxiYXJMb2dpY2FsU2l6
ZShyZW5kZXJCb3gpOwogCiAgICAgaWYgKGludHJpbnNpY1dpZHRoTW9kZSkgewpAQCAtMzEwLDcg
KzM1NCw3IEBAIHZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVMaW5lQnJlYWtCb3hEaW1l
bnNpb25zKGNvbnN0IFJlbmRlckxpbmVCcmVhayYgbGluCiAgICAgICAgIGJveEdlb21ldHJ5LnNl
dENvbnRlbnRCb3hIZWlnaHQoeyB9KTsKIH0KIAotdm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVw
ZGF0ZUlubGluZUJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVySW5saW5lJiByZW5kZXJJbmxpbmUs
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+IGludHJpbnNpY1dpZHRo
TW9kZSkKK3ZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25z
KGNvbnN0IFJlbmRlcklubGluZSYgcmVuZGVySW5saW5lLCBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IGF2YWlsYWJsZVdpZHRoLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50cmluc2ljV2lkdGhN
b2RlPiBpbnRyaW5zaWNXaWR0aE1vZGUpCiB7CiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBsYXlv
dXRTdGF0ZSgpLmVuc3VyZUdlb21ldHJ5Rm9yQm94KCpyZW5kZXJJbmxpbmUubGF5b3V0Qm94KCkp
OwogCkBAIC0zMjIsOSArMzY2LDkgQEAgdm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUlu
bGluZUJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVySW5saW5lJiByZW5kZXJJbmwKICAgICBhdXRv
IGJsb2NrRmxvd0RpcmVjdGlvbiA9IHdyaXRpbmdNb2RlVG9CbG9ja0Zsb3dEaXJlY3Rpb24ocmVu
ZGVySW5saW5lLnN0eWxlKCkud3JpdGluZ01vZGUoKSk7CiAgICAgYXV0byBpc0hvcml6b250YWxX
cml0aW5nTW9kZSA9IGJsb2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpUb3BUb0Jv
dHRvbSB8fCBibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6Qm90dG9tVG9Ub3A7
CiAKLSAgICBhdXRvIGlubGluZU1hcmdpbiA9IGhvcml6b250YWxMb2dpY2FsTWFyZ2luKHJlbmRl
cklubGluZSwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUsIGludHJpbnNpY1dpZHRoTW9kZSA/IFVzZUNvbXB1dGVkVmFsdWVzOjpZZXMgOiBVc2VD
b21wdXRlZFZhbHVlczo6Tm8sICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5kTWFyZ2lu
U3RhcnQsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5kTWFyZ2luRW5kKTsKLSAgICBh
dXRvIGJvcmRlciA9IGxvZ2ljYWxCb3JkZXIocmVuZGVySW5saW5lLCBpc0xlZnRUb1JpZ2h0SW5s
aW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24sIGludHJpbnNpY1dpZHRoTW9kZSA/IFVz
ZUNvbXB1dGVkVmFsdWVzOjpZZXMgOiBVc2VDb21wdXRlZFZhbHVlczo6Tm8sIElzUGFydE9mRm9y
bWF0dGluZ0NvbnRleHQ6OlllcywgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRNYXJn
aW5TdGFydCwgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRNYXJnaW5FbmQpOwotICAg
IGF1dG8gcGFkZGluZyA9IGxvZ2ljYWxQYWRkaW5nKHJlbmRlcklubGluZSwgaXNMZWZ0VG9SaWdo
dElubGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9uLCBpbnRyaW5zaWNXaWR0aE1vZGUg
PyBVc2VDb21wdXRlZFZhbHVlczo6WWVzIDogVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vLCBJc1BhcnRP
ZkZvcm1hdHRpbmdDb250ZXh0OjpZZXMsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5k
TWFyZ2luU3RhcnQsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5kTWFyZ2luRW5kKTsK
KyAgICBhdXRvIGlubGluZU1hcmdpbiA9IGhvcml6b250YWxMb2dpY2FsTWFyZ2luKHJlbmRlcklu
bGluZSwgYXZhaWxhYmxlV2lkdGgsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlLCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGluZ0FuZE1hcmdp
blN0YXJ0LCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGluZ0FuZE1hcmdpbkVuZCk7CisgICAg
YXV0byBib3JkZXIgPSBsb2dpY2FsQm9yZGVyKHJlbmRlcklubGluZSwgaXNMZWZ0VG9SaWdodElu
bGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9uLCBJc1BhcnRPZkZvcm1hdHRpbmdDb250
ZXh0OjpZZXMsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5kTWFyZ2luU3RhcnQsICFz
aG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5kTWFyZ2luRW5kKTsKKyAgICBhdXRvIHBhZGRp
bmcgPSBsb2dpY2FsUGFkZGluZyhyZW5kZXJJbmxpbmUsIGF2YWlsYWJsZVdpZHRoLCBpc0xlZnRU
b1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24sIElzUGFydE9mRm9ybWF0
dGluZ0NvbnRleHQ6OlllcywgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRNYXJnaW5T
dGFydCwgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRNYXJnaW5FbmQpOwogCiAgICAg
aWYgKGludHJpbnNpY1dpZHRoTW9kZSkgewogICAgICAgICBib3hHZW9tZXRyeS5zZXRIb3Jpem9u
dGFsTWFyZ2luKGlubGluZU1hcmdpbik7CkBAIC0zMzksNyArMzgzLDcgQEAgdm9pZCBCb3hHZW9t
ZXRyeVVwZGF0ZXI6OnVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVySW5saW5l
JiByZW5kZXJJbmwKICAgICBib3hHZW9tZXRyeS5zZXRQYWRkaW5nKHBhZGRpbmcpOwogfQogCi12
b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6c2V0R2VvbWV0cmllc0ZvckxheW91dCgpCit2b2lkIEJv
eEdlb21ldHJ5VXBkYXRlcjo6c2V0R2VvbWV0cmllc0ZvckxheW91dChMYXlvdXRVbml0IGF2YWls
YWJsZUxvZ2ljYWxXaWR0aCkKIHsKICAgICBmb3IgKGF1dG8gd2Fsa2VyID0gSW5saW5lV2Fsa2Vy
KGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oYm94VHJlZSgpLnJvb3RSZW5kZXJlcigpKSk7ICF3
YWxrZXIuYXRFbmQoKTsgd2Fsa2VyLmFkdmFuY2UoKSkgewogICAgICAgICBhdXRvJiByZW5kZXJl
ciA9ICp3YWxrZXIuY3VycmVudCgpOwpAQCAtMzUwLDcgKzM5NCw3IEBAIHZvaWQgQm94R2VvbWV0
cnlVcGRhdGVyOjpzZXRHZW9tZXRyaWVzRm9yTGF5b3V0KCkKICAgICAgICAgaWYgKHJlbmRlcmVy
LmlzRmxvYXRpbmcoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHVwZGF0ZUdl
b21ldHJ5QWZ0ZXJMYXlvdXQoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIpKTsKKyAg
ICAgICAgdXBkYXRlQm94R2VvbWV0cnkoZG93bmNhc3Q8UmVuZGVyRWxlbWVudD4ocmVuZGVyZXIp
LCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAgIH0KIH0KIApAQCAtMzY3LDMwICs0MTEsMzAg
QEAgdm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnNldEdlb21ldHJpZXNGb3JJbnRyaW5zaWNXaWR0
aChMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW8KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChhdXRvKiByZW5kZXJJbmxpbmUgPSBkeW5hbWljRG93bmNhc3Q8UmVu
ZGVySW5saW5lPihyZW5kZXJlcikpIHsKLSAgICAgICAgICAgIHVwZGF0ZUlubGluZUJveERpbWVu
c2lvbnMoKnJlbmRlcklubGluZSwgaW50cmluc2ljV2lkdGhNb2RlKTsKKyAgICAgICAgICAgIHVw
ZGF0ZUlubGluZUJveERpbWVuc2lvbnMoKnJlbmRlcklubGluZSwgeyB9LCBpbnRyaW5zaWNXaWR0
aE1vZGUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGF1
dG8qIHJlbmRlckxpc3RNYXJrZXIgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyTGlzdE1hcmtlcj4o
cmVuZGVyZXIpKSB7Ci0gICAgICAgICAgICB1cGRhdGVMaXN0TWFya2VyRGltZW5zaW9ucygqcmVu
ZGVyTGlzdE1hcmtlciwgaW50cmluc2ljV2lkdGhNb2RlKTsKKyAgICAgICAgICAgIHVwZGF0ZUxp
c3RNYXJrZXJEaW1lbnNpb25zKCpyZW5kZXJMaXN0TWFya2VyLCB7IH0sIGludHJpbnNpY1dpZHRo
TW9kZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoYXV0
byogcmVuZGVyQm94ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIpKSB7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGZsZXhpbmcgYm94ZXMuCiAgICAg
ICAgICAgICBBU1NFUlQocmVuZGVyQm94LT5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpLmlzRml4ZWQo
KSk7Ci0gICAgICAgICAgICB1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKCpyZW5kZXJCb3gsIGlu
dHJpbnNpY1dpZHRoTW9kZSk7CisgICAgICAgICAgICB1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25z
KCpyZW5kZXJCb3gsIHsgfSwgaW50cmluc2ljV2lkdGhNb2RlKTsKICAgICAgICAgfQogICAgIH0K
IH0KIAotTGF5b3V0OjpDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQgQm94R2VvbWV0cnlVcGRh
dGVyOjp1cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMoKQorTGF5b3V0OjpDb25zdHJhaW50
c0ZvcklubGluZUNvbnRlbnQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVJbmxpbmVDb250ZW50
Q29uc3RyYWludHMoTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCkKIHsKICAgICBhdXRvJiByb290
UmVuZGVyZXIgPSBib3hUcmVlKCkucm9vdFJlbmRlcmVyKCk7CiAgICAgYXV0byBpc0xlZnRUb1Jp
Z2h0SW5saW5lRGlyZWN0aW9uID0gcm9vdFJlbmRlcmVyLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpOwogICAgIGF1dG8gd3JpdGluZ01vZGUgPSByb290UmVuZGVyZXIuc3R5bGUoKS53
cml0aW5nTW9kZSgpOwogICAgIGF1dG8gYmxvY2tGbG93RGlyZWN0aW9uID0gd3JpdGluZ01vZGVU
b0Jsb2NrRmxvd0RpcmVjdGlvbih3cml0aW5nTW9kZSk7CiAKLSAgICBhdXRvIHBhZGRpbmcgPSBs
b2dpY2FsUGFkZGluZyhyb290UmVuZGVyZXIsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24s
IGJsb2NrRmxvd0RpcmVjdGlvbiwgVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vLCBJc1BhcnRPZkZvcm1h
dHRpbmdDb250ZXh0OjpObyk7Ci0gICAgYXV0byBib3JkZXIgPSBsb2dpY2FsQm9yZGVyKHJvb3RS
ZW5kZXJlciwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9u
LCBVc2VDb21wdXRlZFZhbHVlczo6Tm8sIElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6Ok5vKTsK
KyAgICBhdXRvIHBhZGRpbmcgPSBsb2dpY2FsUGFkZGluZyhyb290UmVuZGVyZXIsIGF2YWlsYWJs
ZVdpZHRoLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24s
IElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6Ok5vKTsKKyAgICBhdXRvIGJvcmRlciA9IGxvZ2lj
YWxCb3JkZXIocm9vdFJlbmRlcmVyLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9j
a0Zsb3dEaXJlY3Rpb24sIElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6Ok5vKTsKICAgICBhdXRv
IHNjcm9sbGJhclNpemUgPSBzY3JvbGxiYXJMb2dpY2FsU2l6ZShyb290UmVuZGVyZXIpOwogICAg
IGF1dG8gc2hvdWxkUGxhY2VWZXJ0aWNhbFNjcm9sbGJhck9uTGVmdCA9IHJvb3RSZW5kZXJlci5z
aG91bGRQbGFjZVZlcnRpY2FsU2Nyb2xsYmFyT25MZWZ0KCk7CiAKQEAgLTQwOSw3ICs0NTMsNyBA
QCBMYXlvdXQ6OkNvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCBCb3hHZW9tZXRyeVVwZGF0ZXI6
OnVwZGF0ZUlubGluZUNvbnRlbnRDb25zdAogICAgICAgICByb290R2VvbWV0cnkuc2V0Qm9yZGVy
KGJvcmRlcik7CiAgICAgICAgIHJvb3RHZW9tZXRyeS5zZXRIb3Jpem9udGFsU3BhY2VGb3JTY3Jv
bGxiYXIoc2Nyb2xsYmFyU2l6ZS53aWR0aCgpKTsKICAgICAgICAgcm9vdEdlb21ldHJ5LnNldFZl
cnRpY2FsU3BhY2VGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyU2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAg
IHJvb3RHZW9tZXRyeS5zZXRIb3Jpem9udGFsTWFyZ2luKGhvcml6b250YWxMb2dpY2FsTWFyZ2lu
KHJvb3RSZW5kZXJlciwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgV2ViQ29yZTo6aXNI
b3Jpem9udGFsV3JpdGluZ01vZGUod3JpdGluZ01vZGUpLCBVc2VDb21wdXRlZFZhbHVlczo6Tm8p
KTsKKyAgICAgICAgcm9vdEdlb21ldHJ5LnNldEhvcml6b250YWxNYXJnaW4oaG9yaXpvbnRhbExv
Z2ljYWxNYXJnaW4ocm9vdFJlbmRlcmVyLCBhdmFpbGFibGVXaWR0aCwgaXNMZWZ0VG9SaWdodElu
bGluZURpcmVjdGlvbiwgV2ViQ29yZTo6aXNIb3Jpem9udGFsV3JpdGluZ01vZGUod3JpdGluZ01v
ZGUpKSk7CiAgICAgICAgIHJvb3RHZW9tZXRyeS5zZXRWZXJ0aWNhbE1hcmdpbih2ZXJ0aWNhbExv
Z2ljYWxNYXJnaW4ocm9vdFJlbmRlcmVyLCBibG9ja0Zsb3dEaXJlY3Rpb24pKTsKICAgICB9Owog
ICAgIGNyZWF0ZVJvb3RHZW9tZXRyeUlmTmVlZGVkKCk7CkBAIC00MTcsMjQgKzQ2MSwyNCBAQCBM
YXlvdXQ6OkNvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVw
ZGF0ZUlubGluZUNvbnRlbnRDb25zdAogICAgIHJldHVybiB7IHsgaG9yaXpvbnRhbENvbnN0cmFp
bnRzLCBjb250ZW50Qm94VG9wIH0sIHZpc3VhbExlZnQgfTsKIH0KIAotdm9pZCBCb3hHZW9tZXRy
eVVwZGF0ZXI6OnVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQoY29uc3QgTGF5b3V0OjpFbGVtZW50
Qm94JiBib3gpCit2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlR2VvbWV0cnlBZnRlckxh
eW91dChjb25zdCBMYXlvdXQ6OkVsZW1lbnRCb3gmIGJveCwgTGF5b3V0VW5pdCBhdmFpbGFibGVX
aWR0aCkKIHsKLSAgICB1cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KCpkeW5hbWljRG93bmNhc3Q8
UmVuZGVyQm94Pihib3gucmVuZGVyZXJGb3JJbnRlZ3JhdGlvbigpKSk7CisgICAgdXBkYXRlQm94
R2VvbWV0cnkoKmR5bmFtaWNEb3duY2FzdDxSZW5kZXJCb3g+KGJveC5yZW5kZXJlckZvckludGVn
cmF0aW9uKCkpLCBhdmFpbGFibGVXaWR0aCk7CiB9CiAKLXZvaWQgQm94R2VvbWV0cnlVcGRhdGVy
Ojp1cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
KQordm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUJveEdlb21ldHJ5KGNvbnN0IFJlbmRl
ckVsZW1lbnQmIHJlbmRlcmVyLCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKQogewogICAgIGlm
IChpczxSZW5kZXJSZXBsYWNlZD4ocmVuZGVyZXIpIHx8IGlzPFJlbmRlclRhYmxlPihyZW5kZXJl
cikgfHwgaXM8UmVuZGVyTGlzdEl0ZW0+KHJlbmRlcmVyKSB8fCBpczxSZW5kZXJCbG9jaz4ocmVu
ZGVyZXIpIHx8IGlzPFJlbmRlckZyYW1lU2V0PihyZW5kZXJlcikpCi0gICAgICAgIHVwZGF0ZUxh
eW91dEJveERpbWVuc2lvbnMoZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcikpOworICAgICAg
ICB1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIp
LCBhdmFpbGFibGVXaWR0aCk7CiAKICAgICBpZiAoYXV0byogcmVuZGVyTGlzdE1hcmtlciA9IGR5
bmFtaWNEb3duY2FzdDxSZW5kZXJMaXN0TWFya2VyPihyZW5kZXJlcikpCi0gICAgICAgIHVwZGF0
ZUxpc3RNYXJrZXJEaW1lbnNpb25zKCpyZW5kZXJMaXN0TWFya2VyKTsKKyAgICAgICAgdXBkYXRl
TGlzdE1hcmtlckRpbWVuc2lvbnMoKnJlbmRlckxpc3RNYXJrZXIsIGF2YWlsYWJsZVdpZHRoKTsK
IAogICAgIGlmIChhdXRvKiByZW5kZXJMaW5lQnJlYWsgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVy
TGluZUJyZWFrPihyZW5kZXJlcikpCiAgICAgICAgIHVwZGF0ZUxpbmVCcmVha0JveERpbWVuc2lv
bnMoKnJlbmRlckxpbmVCcmVhayk7CiAKICAgICBpZiAoYXV0byogcmVuZGVySW5saW5lID0gZHlu
YW1pY0Rvd25jYXN0PFJlbmRlcklubGluZT4ocmVuZGVyZXIpKQotICAgICAgICB1cGRhdGVJbmxp
bmVCb3hEaW1lbnNpb25zKCpyZW5kZXJJbmxpbmUpOworICAgICAgICB1cGRhdGVJbmxpbmVCb3hE
aW1lbnNpb25zKCpyZW5kZXJJbmxpbmUsIGF2YWlsYWJsZVdpZHRoKTsKIH0KIAogY29uc3QgTGF5
b3V0OjpFbGVtZW50Qm94JiBCb3hHZW9tZXRyeVVwZGF0ZXI6OnJvb3RMYXlvdXRCb3goKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9M
YXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRl
ci5oCmluZGV4IGYwOTI1M2RhNzY1Zi4uMzVjNWJkOTAxOGMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uQm94R2Vv
bWV0cnlVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lu
bGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5oCkBAIC00NywxOSArNDcs
MjAgQEAgcHVibGljOgogICAgIEJveEdlb21ldHJ5VXBkYXRlcihCb3hUcmVlJiwgTGF5b3V0OjpM
YXlvdXRTdGF0ZSYpOwogICAgIEJveEdlb21ldHJ5VXBkYXRlcihMYXlvdXQ6OkxheW91dFN0YXRl
Jik7CiAKLSAgICB2b2lkIHNldEdlb21ldHJpZXNGb3JMYXlvdXQoKTsKKyAgICB2b2lkIHNldEdl
b21ldHJpZXNGb3JMYXlvdXQoTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAg
IHZvaWQgc2V0R2VvbWV0cmllc0ZvckludHJpbnNpY1dpZHRoKExheW91dDo6SW50cmluc2ljV2lk
dGhNb2RlKTsKLSAgICB2b2lkIHVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQoY29uc3QgTGF5b3V0
OjpFbGVtZW50Qm94Jik7CisgICAgdm9pZCB1cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KGNvbnN0
IExheW91dDo6RWxlbWVudEJveCYsIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpOwogCi0gICAg
TGF5b3V0OjpDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQgdXBkYXRlSW5saW5lQ29udGVudENv
bnN0cmFpbnRzKCk7CisgICAgTGF5b3V0OjpDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQgdXBk
YXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpOwog
ICAgIEhhc2hNYXA8Y29uc3QgTGF5b3V0OjpFbGVtZW50Qm94KiwgTGF5b3V0VW5pdD4gdGFrZU5l
c3RlZExpc3RNYXJrZXJPZmZzZXRzKCkgeyByZXR1cm4gV1RGTW92ZShtX25lc3RlZExpc3RNYXJr
ZXJPZmZzZXRzKTsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgdXBkYXRlTGF5b3V0Qm94RGltZW5z
aW9ucyhjb25zdCBSZW5kZXJCb3gmLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50cmluc2ljV2lk
dGhNb2RlPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCB1cGRhdGVCb3hHZW9tZXRyeShjb25z
dCBSZW5kZXJFbGVtZW50JiwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCk7CisKKyAgICB2b2lk
IHVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVyQm94Jiwgc3RkOjpvcHRpb25h
bDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgc3RkOjpvcHRpb25hbDxMYXlvdXQ6OkludHJp
bnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgdXBkYXRlTGluZUJyZWFr
Qm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJMaW5lQnJlYWsmKTsKLSAgICB2b2lkIHVwZGF0ZUlu
bGluZUJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVySW5saW5lJiwgc3RkOjpvcHRpb25hbDxMYXlv
dXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOwotICAgIHZvaWQgdXBkYXRl
TGlzdE1hcmtlckRpbWVuc2lvbnMoY29uc3QgUmVuZGVyTGlzdE1hcmtlciYsIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+ID0gc3RkOjpudWxsb3B0KTsKLSAgICB2b2lk
IHVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQoY29uc3QgUmVuZGVyRWxlbWVudCYpOworICAgIHZv
aWQgdXBkYXRlSW5saW5lQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJJbmxpbmUmLCBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVdpZHRoLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6
SW50cmluc2ljV2lkdGhNb2RlPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCB1cGRhdGVMaXN0
TWFya2VyRGltZW5zaW9ucyhjb25zdCBSZW5kZXJMaXN0TWFya2VyJiwgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgc3RkOjpvcHRpb25hbDxMYXlvdXQ6OkludHJpbnNp
Y1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgQm94VHJlZSYgYm94VHJlZSgpIHsg
cmV0dXJuICptX2JveFRyZWU7IH0KICAgICBjb25zdCBCb3hUcmVlJiBib3hUcmVlKCkgY29uc3Qg
eyByZXR1cm4gKm1fYm94VHJlZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxp
bmVMYXlvdXQuY3BwCmluZGV4IDExYjQ2MjIzMWM2YS4uMWJlMDNlZmQ1Y2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0
aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC0yNDEsOSArMjQxLDkg
QEAgYm9vbCBMaW5lTGF5b3V0OjpzaG91bGRJbnZhbGlkYXRlTGluZUxheW91dFBhdGhBZnRlclRy
ZWVNdXRhdGlvbihjb25zdCBSZW5kZXJCbG8KICAgICByZXR1cm4gc2hvdWxkSW52YWxpZGF0ZUxp
bmVMYXlvdXRQYXRoQWZ0ZXJDaGFuZ2VGb3IocGFyZW50LCByZW5kZXJlciwgbGluZUxheW91dCwg
aXNSZW1vdmFsID8gVHlwZU9mQ2hhbmdlRm9ySW52YWxpZGF0aW9uOjpOb2RlUmVtb3ZhbCA6IFR5
cGVPZkNoYW5nZUZvckludmFsaWRhdGlvbjo6Tm9kZUluc2VydGlvbik7CiB9CiAKLXZvaWQgTGlu
ZUxheW91dDo6dXBkYXRlSW5saW5lQ29udGVudERpbWVuc2lvbnMoKQordm9pZCBMaW5lTGF5b3V0
Ojp1cGRhdGVJbmxpbmVDb250ZW50RGltZW5zaW9ucyhMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2lj
YWxXaWR0aCkKIHsKLSAgICBtX2JveEdlb21ldHJ5VXBkYXRlci5zZXRHZW9tZXRyaWVzRm9yTGF5
b3V0KCk7CisgICAgbV9ib3hHZW9tZXRyeVVwZGF0ZXIuc2V0R2VvbWV0cmllc0ZvckxheW91dChh
dmFpbGFibGVMb2dpY2FsV2lkdGgpOwogfQogCiB2b2lkIExpbmVMYXlvdXQ6OnVwZGF0ZVN0eWxl
KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCkBAIC01NzIsOSArNTcyLDkgQEAgdm9pZCBM
aW5lTGF5b3V0Ojp1cGRhdGVSZW5kZXJUcmVlUG9zaXRpb25zKGNvbnN0IFZlY3RvcjxMaW5lQWRq
dXN0bWVudD4mIGxpbmVBZGoKICAgICB9CiB9CiAKLXZvaWQgTGluZUxheW91dDo6dXBkYXRlSW5s
aW5lQ29udGVudENvbnN0cmFpbnRzKCkKK3ZvaWQgTGluZUxheW91dDo6dXBkYXRlSW5saW5lQ29u
dGVudENvbnN0cmFpbnRzKExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoKQogewotICAg
IG1faW5saW5lQ29udGVudENvbnN0cmFpbnRzID0gbV9ib3hHZW9tZXRyeVVwZGF0ZXIudXBkYXRl
SW5saW5lQ29udGVudENvbnN0cmFpbnRzKCk7CisgICAgbV9pbmxpbmVDb250ZW50Q29uc3RyYWlu
dHMgPSBtX2JveEdlb21ldHJ5VXBkYXRlci51cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMo
YXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKIH0KIAogdm9pZCBMaW5lTGF5b3V0OjpwcmVwYXJlUGxh
Y2VkRmxvYXRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oCmlu
ZGV4IDUwOWFiOTI4ODAyNy4uNGEyY2QxMmMyZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50
ZWdyYXRpb25MaW5lTGF5b3V0LmgKQEAgLTc3LDggKzc3LDggQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIHNob3VsZEludmFsaWRhdGVMaW5lTGF5b3V0UGF0aEFmdGVyQ29udGVudENoYW5nZShj
b25zdCBSZW5kZXJCbG9ja0Zsb3cmIHBhcmVudCwgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJl
cldpdGhOZXdDb250ZW50LCBjb25zdCBMaW5lTGF5b3V0Jik7CiAgICAgc3RhdGljIGJvb2wgc2hv
dWxkSW52YWxpZGF0ZUxpbmVMYXlvdXRQYXRoQWZ0ZXJUcmVlTXV0YXRpb24oY29uc3QgUmVuZGVy
QmxvY2tGbG93JiBwYXJlbnQsIGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IExp
bmVMYXlvdXQmLCBib29sIGlzUmVtb3ZhbCk7CiAKLSAgICB2b2lkIHVwZGF0ZUlubGluZUNvbnRl
bnRDb25zdHJhaW50cygpOwotICAgIHZvaWQgdXBkYXRlSW5saW5lQ29udGVudERpbWVuc2lvbnMo
KTsKKyAgICB2b2lkIHVwZGF0ZUlubGluZUNvbnRlbnRDb25zdHJhaW50cyhMYXlvdXRVbml0IGF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgdm9pZCB1cGRhdGVJbmxpbmVDb250ZW50RGltZW5z
aW9ucyhMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgdm9pZCB1cGRhdGVP
dmVyZmxvdygpOwogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVN0eWxlKGNvbnN0IFJlbmRlck9iamVj
dCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmlu
ZGV4IGQyYTg1YmNkYjUzNi4uMmM5N2Y1ZTg0NjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzg3OSw4ICszODc5LDkgQEAgdm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OmxheW91dElubGluZUNvbnRlbnQoYm9vbCByZWxheW91dENoaWxkcmVuLCBM
YXlvdXRVbml0JiByZXAKIAogICAgIGF1dG8mIGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxh
eW91dCA9ICp0aGlzLT5pbmxpbmVMYXlvdXQoKTsKIAotICAgIGxheW91dEZvcm1hdHRpbmdDb250
ZXh0TGluZUxheW91dC51cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMoKTsKLSAgICBsYXlv
dXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQudXBkYXRlSW5saW5lQ29udGVudERpbWVuc2lv
bnMoKTsKKyAgICBBU1NFUlQoY29udGFpbmluZ0Jsb2NrKCkgfHwgaXM8UmVuZGVyVmlldz4oKnRo
aXMpKTsKKyAgICBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQudXBkYXRlSW5saW5l
Q29udGVudENvbnN0cmFpbnRzKGNvbnRhaW5pbmdCbG9jaygpID8gY29udGFpbmluZ0Jsb2NrKCkt
PmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpIDogTGF5b3V0VW5pdCgpKTsKKyAgICBsYXlvdXRGb3Jt
YXR0aW5nQ29udGV4dExpbmVMYXlvdXQudXBkYXRlSW5saW5lQ29udGVudERpbWVuc2lvbnMoYXZh
aWxhYmxlTG9naWNhbFdpZHRoKCkpOwogCiAgICAgYXV0byBjb250ZW50Qm94VG9wID0gYm9yZGVy
QW5kUGFkZGluZ0JlZm9yZSgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>472625</attachid>
            <date>2024-09-21 14:15:46 -0700</date>
            <delta_ts>2024-09-21 20:24:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-280039-20240921141545.patch</filename>
            <type>text/plain</type>
            <size>30582</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBhYWI1OGE3ZTkyY2MxNTA5MWFlZDRiNjUzZTJhMTJlMzE1NGIyOWUyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFRodSwgMTkgU2VwIDIwMjQgMjA6MzE6NDkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbTEZDXVtJ
bnRlZ3JhdGlvbl0gQWx3YXlzIHJlc29sdmUgbWFyZ2luL3BhZGRpbmcgdmFsdWVzCiAoQm94R2Vv
bWV0cnlVcGRhdGVyKSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjgw
MDM5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRoaXMgaXMgaW4gcHJlcGFyYXRpb24g
Zm9yIHVzaW5nIEJveEdlb21ldHJ5VXBkYXRlciBmcm9tIEZGQy4KCi1zcGVjaWFsIGNhc2UgdGFi
bGUgY2VsbCdzICJpbnRyaW5zaWMgcGFkZGluZyIgdmFsdWVzIGFuZCBjb2xsYXBzZWQgYm9yZGVy
cy4gVGhleSBhcmUgY29tcHV0ZWQgYXQgdGhlIGNvbnRhaW5pbmcgYmxvY2sgbGV2ZWwgc28gc2hv
dWxkIGJlCmF2YWlsYWJsZSBieSB0aGUgdGltZSB3ZSBzdGFydCBydW5uaW5nIGxheW91dCBvbiB0
aGUgY2VsbCBjb250ZW50LgotYWxzbyBmaWVsZHNldCBib3JkZXIgd2hpY2ggaXMgcmVhbGx5IHVu
Zm9ydHVuYXRlLgoKRXZlbnR1YWxseSBhbGwgdGhlc2UgbG9naWMgd2lsbCBnZXQgbW92ZWQgb3Zl
ciB0byB1cGRhdGVyLgoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5jcHA6CihXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KToKKiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uQm94R2Vv
bWV0cnlVcGRhdGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjp1c2VkVmFsdWVP
clplcm8pOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveEdlb21ldHJ5VXBkYXRlcjo6
dXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
Omhvcml6b250YWxMb2dpY2FsTWFyZ2luKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjps
b2dpY2FsQm9yZGVyKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpsb2dpY2FsUGFkZGlu
Zyk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94R2VvbWV0cnlVcGRhdGVyOjp1cGRh
dGVMYXlvdXRCb3hEaW1lbnNpb25zKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hH
ZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMpOgooV2ViQ29yZTo6TGF5
b3V0SW50ZWdyYXRpb246OkJveEdlb21ldHJ5VXBkYXRlcjo6c2V0R2VvbWV0cmllc0ZvckxheW91
dCk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94R2VvbWV0cnlVcGRhdGVyOjpzZXRH
ZW9tZXRyaWVzRm9ySW50cmluc2ljV2lkdGgpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OkJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKToKKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hHZW9tZXRyeVVwZGF0ZXI6OnNldEdlb21ldHJ5
QWZ0ZXJJbnRlZ3JhdGlvbkxheW91dCk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94
R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVCb3hHZW9tZXRyeSk6CihXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6Zml4ZWRWYWx1ZU9yWmVybyk6IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6Qm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KTog
RGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91
dEludGVncmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwOgooV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnVwZGF0ZUlubGluZUNvbnRlbnRE
aW1lbnNpb25zKToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xh
eW91dEludGVncmF0aW9uTGluZUxheW91dC5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuY3BwOgooV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpsYXlvdXRJbmxp
bmVDb250ZW50KToKLS0tCiAuLi55b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91
dC5jcHAgfCAgIDMgKy0KIC4uLi9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5j
cHAgICB8IDEzMyArKysrKysrKysrKystLS0tLS0KIC4uLi9MYXlvdXRJbnRlZ3JhdGlvbkJveEdl
b21ldHJ5VXBkYXRlci5oICAgICB8ICAxNSArLQogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuY3BwICAgIHwgICA4ICstCiAuLi4vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5oICAgICAgfCAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwICB8ICAgNSArLQogNiBmaWxlcyBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9u
cygrKSwgNjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uRm9y
bWF0dGluZ0NvbnRleHRMYXlvdXQuY3BwCmluZGV4IDk2YjllZjNkYjAyOS4uNzRjMTEyMjEwZDI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uRm9ybWF0dGluZ0NvbnRleHRMYXlv
dXQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25Gb3Jt
YXR0aW5nQ29udGV4dExheW91dC5oIgogCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25Cb3hH
ZW9tZXRyeVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlJl
bmRlckJveC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw3ICs0OCw3IEBAIHZvaWQg
bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KGNvbnN0IExheW91dDo6RWxlbWVudEJv
eCYgYm94LCBzdGQ6Om9wdGlvCiAgICAgICAgIHJlbmRlcmVyLmNsZWFyT3ZlcnJpZGluZ0xvZ2lj
YWxXaWR0aExlbmd0aCgpOwogCiAgICAgYXV0byB1cGRhdGVyID0gQm94R2VvbWV0cnlVcGRhdGVy
IHsgbGF5b3V0U3RhdGUgfTsKLSAgICB1cGRhdGVyLnVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQo
Ym94KTsKKyAgICB1cGRhdGVyLnVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQoYm94LCB3aWR0aENv
bnN0cmFpbnQudmFsdWVfb3IocmVuZGVyZXIuY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCgpKSk7CiB9CiAKIExheW91dFVuaXQgZm9ybWF0dGluZ0NvbnRleHRSb290TG9n
aWNhbFdpZHRoRm9yVHlwZShjb25zdCBMYXlvdXQ6OkVsZW1lbnRCb3gmIGJveCwgTG9naWNhbFdp
ZHRoVHlwZSBsb2dpY2FsV2lkdGhUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dElu
dGVncmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmNwcAppbmRleCBlNjlkOTVjM2Q1ZDAuLjQ4Y2Nh
MTIzOWM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lu
bGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdl
b21ldHJ5VXBkYXRlci5jcHAKQEAgLTQ5LDE1ICs0OSwyMyBAQAogI2luY2x1ZGUgIlJlbmRlck1h
dGhNTEJsb2NrLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGFibGUuaCIKKyNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJSZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXRJbnRlZ3JhdGlvbiB7CiAKLXN0YXRpYyBM
YXlvdXRVbml0IGZpeGVkVmFsdWVPclplcm8oY29uc3QgTGVuZ3RoJiBsZW5ndGgpCisKK3N0YXRp
YyBMYXlvdXRVbml0IHVzZWRWYWx1ZU9yWmVybyhjb25zdCBMZW5ndGgmIGxlbmd0aCwgc3RkOjpv
cHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCkKIHsKLSAgICByZXR1cm4gTGF5b3V0
VW5pdCB7IGxlbmd0aC5pc0ZpeGVkKCkgPyBsZW5ndGgudmFsdWUoKSA6IDAuZiB9OworICAgIGlm
IChsZW5ndGguaXNGaXhlZCgpKQorICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IGxlbmd0aC52
YWx1ZSgpIH07CisKKyAgICBpZiAobGVuZ3RoLmlzQXV0bygpIHx8ICFhdmFpbGFibGVXaWR0aCkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgo
bGVuZ3RoLCAqYXZhaWxhYmxlV2lkdGgpOwogfQogCiBCb3hHZW9tZXRyeVVwZGF0ZXI6OkJveEdl
b21ldHJ5VXBkYXRlcihCb3hUcmVlJiBib3hUcmVlLCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlv
dXRTdGF0ZSkKQEAgLTcxLDkgKzc5LDkgQEAgQm94R2VvbWV0cnlVcGRhdGVyOjpCb3hHZW9tZXRy
eVVwZGF0ZXIoTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCiB7CiB9CiAKLXZvaWQg
Qm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVMaXN0TWFya2VyRGltZW5zaW9ucyhjb25zdCBSZW5k
ZXJMaXN0TWFya2VyJiBsaXN0TWFya2VyLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50cmluc2lj
V2lkdGhNb2RlPiBpbnRyaW5zaWNXaWR0aE1vZGUpCit2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6
dXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMoY29uc3QgUmVuZGVyTGlzdE1hcmtlciYgbGlzdE1h
cmtlciwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgc3RkOjpvcHRp
b25hbDxMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gaW50cmluc2ljV2lkdGhNb2RlKQogewot
ICAgIHVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMobGlzdE1hcmtlciwgaW50cmluc2ljV2lkdGhN
b2RlKTsKKyAgICB1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKGxpc3RNYXJrZXIsIGF2YWlsYWJs
ZVdpZHRoLCBpbnRyaW5zaWNXaWR0aE1vZGUpOwogICAgIGlmIChpbnRyaW5zaWNXaWR0aE1vZGUp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMTMzLDIwICsxNDEsMTkgQEAgc3RhdGljIGlubGluZSBM
YXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsSGVpZ2h0Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyQm94
JiByZW5kZXIKICAgICByZXR1cm4gcmVuZGVyZXIucGFyZW50KCktPnN0eWxlKCkuaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IHJlbmRlcmVyLmNvbnRlbnRIZWlnaHQoKSA6IHJlbmRlcmVyLmNv
bnRlbnRXaWR0aCgpOwogfQogCi1lbnVtIGNsYXNzIFVzZUNvbXB1dGVkVmFsdWVzIDogYm9vbCB7
IE5vLCBZZXMgfTsKLXN0YXRpYyBpbmxpbmUgTGF5b3V0OjpCb3hHZW9tZXRyeTo6SG9yaXpvbnRh
bEVkZ2VzIGhvcml6b250YWxMb2dpY2FsTWFyZ2luKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0
JiByZW5kZXJlciwgYm9vbCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBib29sIGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlLCBVc2VDb21wdXRlZFZhbHVlcyB1c2VDb21wdXRlZFZhbHVlcyA9
IFVzZUNvbXB1dGVkVmFsdWVzOjpObywgYm9vbCByZXRhaW5NYXJnaW5TdGFydCA9IHRydWUsIGJv
b2wgcmV0YWluTWFyZ2luRW5kID0gdHJ1ZSkKK3N0YXRpYyBpbmxpbmUgTGF5b3V0OjpCb3hHZW9t
ZXRyeTo6SG9yaXpvbnRhbEVkZ2VzIGhvcml6b250YWxMb2dpY2FsTWFyZ2luKGNvbnN0IFJlbmRl
ckJveE1vZGVsT2JqZWN0JiByZW5kZXJlciwgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFp
bGFibGVXaWR0aCwgYm9vbCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBib29sIGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlLCBib29sIHJldGFpbk1hcmdpblN0YXJ0ID0gdHJ1ZSwgYm9vbCBy
ZXRhaW5NYXJnaW5FbmQgPSB0cnVlKQogewogICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXIuc3R5
bGUoKTsKLSAgICBhdXRvIG1hcmdpbkxlZnQgPSB1c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21w
dXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5tYXJnaW5MZWZ0KCkgOiBmaXhlZFZhbHVlT3JaZXJv
KHN0eWxlLm1hcmdpbkxlZnQoKSk7Ci0gICAgYXV0byBtYXJnaW5SaWdodCA9IHVzZUNvbXB1dGVk
VmFsdWVzID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVyLm1hcmdpblJpZ2h0KCkg
OiBmaXhlZFZhbHVlT3JaZXJvKHN0eWxlLm1hcmdpblJpZ2h0KCkpOworICAgIGF1dG8gbWFyZ2lu
TGVmdCA9IHVzZWRWYWx1ZU9yWmVybyhzdHlsZS5tYXJnaW5MZWZ0KCksIGF2YWlsYWJsZVdpZHRo
KTsKKyAgICBhdXRvIG1hcmdpblJpZ2h0ID0gdXNlZFZhbHVlT3JaZXJvKHN0eWxlLm1hcmdpblJp
Z2h0KCksIGF2YWlsYWJsZVdpZHRoKTsKICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUp
IHsKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24pCiAgICAgICAgICAg
ICByZXR1cm4geyByZXRhaW5NYXJnaW5TdGFydCA/IG1hcmdpbkxlZnQgOiAwX2x1LCByZXRhaW5N
YXJnaW5FbmQgPyBtYXJnaW5SaWdodCA6IDBfbHUgfTsKICAgICAgICAgcmV0dXJuIHsgcmV0YWlu
TWFyZ2luU3RhcnQgPyBtYXJnaW5SaWdodCA6IDBfbHUsIHJldGFpbk1hcmdpbkVuZCA/IG1hcmdp
bkxlZnQgOiAwX2x1IH07CiAgICAgfQogCi0gICAgYXV0byBtYXJnaW5Ub3AgPSB1c2VDb21wdXRl
ZFZhbHVlcyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5tYXJnaW5Ub3AoKSA6
IGZpeGVkVmFsdWVPclplcm8oc3R5bGUubWFyZ2luVG9wKCkpOwotICAgIGF1dG8gbWFyZ2luQm90
dG9tID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVy
ZXIubWFyZ2luQm90dG9tKCkgOiBmaXhlZFZhbHVlT3JaZXJvKHN0eWxlLm1hcmdpbkJvdHRvbSgp
KTsKKyAgICBhdXRvIG1hcmdpblRvcCA9IHVzZWRWYWx1ZU9yWmVybyhzdHlsZS5tYXJnaW5Ub3Ao
KSwgYXZhaWxhYmxlV2lkdGgpOworICAgIGF1dG8gbWFyZ2luQm90dG9tID0gdXNlZFZhbHVlT3Ja
ZXJvKHN0eWxlLm1hcmdpbkJvdHRvbSgpLCBhdmFpbGFibGVXaWR0aCk7CiAgICAgaWYgKGlzTGVm
dFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24pCiAgICAgICAgIHJldHVybiB7IHJldGFpbk1hcmdpblN0
YXJ0ID8gbWFyZ2luVG9wIDogMF9sdSwgcmV0YWluTWFyZ2luRW5kID8gbWFyZ2luQm90dG9tIDog
MF9sdSB9OwogICAgIHJldHVybiB7IHJldGFpbk1hcmdpblN0YXJ0ID8gbWFyZ2luQm90dG9tIDog
MF9sdSwgcmV0YWluTWFyZ2luRW5kID8gbWFyZ2luVG9wIDogMF9sdSB9OwpAQCAtMTY4LDEzICsx
NzUsMzkgQEAgc3RhdGljIGlubGluZSBMYXlvdXQ6OkJveEdlb21ldHJ5OjpWZXJ0aWNhbEVkZ2Vz
IHZlcnRpY2FsTG9naWNhbE1hcmdpbihjb25zdCBSZW4KIH0KIAogZW51bSBjbGFzcyBJc1BhcnRP
ZkZvcm1hdHRpbmdDb250ZXh0IDogYm9vbCB7IE5vLCBZZXMgfTsKLXN0YXRpYyBpbmxpbmUgTGF5
b3V0OjpCb3hHZW9tZXRyeTo6RWRnZXMgbG9naWNhbEJvcmRlcihjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCYgcmVuZGVyZXIsIGJvb2wgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgRmxv
d0RpcmVjdGlvbiBibG9ja0Zsb3dEaXJlY3Rpb24sIFVzZUNvbXB1dGVkVmFsdWVzIHVzZUNvbXB1
dGVkVmFsdWVzID0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vLCBJc1BhcnRPZkZvcm1hdHRpbmdDb250
ZXh0IGlzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgPSBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0
OjpObywgYm9vbCByZXRhaW5Cb3JkZXJTdGFydCA9IHRydWUsIGJvb2wgcmV0YWluQm9yZGVyRW5k
ID0gdHJ1ZSkKK3N0YXRpYyBpbmxpbmUgTGF5b3V0OjpCb3hHZW9tZXRyeTo6RWRnZXMgbG9naWNh
bEJvcmRlcihjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIsIGJvb2wgaXNMZWZ0
VG9SaWdodElubGluZURpcmVjdGlvbiwgRmxvd0RpcmVjdGlvbiBibG9ja0Zsb3dEaXJlY3Rpb24s
IElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgaXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dCA9IElz
UGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6Ok5vLCBib29sIHJldGFpbkJvcmRlclN0YXJ0ID0gdHJ1
ZSwgYm9vbCByZXRhaW5Cb3JkZXJFbmQgPSB0cnVlKQogewogICAgIGF1dG8mIHN0eWxlID0gcmVu
ZGVyZXIuc3R5bGUoKTsKLSAgICBhdXRvIGJvcmRlckxlZnQgPSB1c2VDb21wdXRlZFZhbHVlcyA9
PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5ib3JkZXJMZWZ0KCkgOiBMYXlvdXRV
bml0KHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpKTsKLSAgICBhdXRvIGJvcmRlclJpZ2h0ID0gdXNl
Q29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIuYm9yZGVy
UmlnaHQoKSA6IExheW91dFVuaXQoc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpKTsKLSAgICBhdXRv
IGJvcmRlclRvcCA9IHVzZUNvbXB1dGVkVmFsdWVzID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/
IHJlbmRlcmVyLmJvcmRlclRvcCgpIDogTGF5b3V0VW5pdChzdHlsZS5ib3JkZXJUb3BXaWR0aCgp
KTsKLSAgICBhdXRvIGJvcmRlckJvdHRvbSA9IHVzZUNvbXB1dGVkVmFsdWVzID09IFVzZUNvbXB1
dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVyLmJvcmRlckJvdHRvbSgpIDogTGF5b3V0VW5pdChzdHls
ZS5ib3JkZXJCb3R0b21XaWR0aCgpKTsKKyAgICBhdXRvIGJvcmRlckxlZnQgPSBMYXlvdXRVbml0
IHsgc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCkgfTsKKyAgICBhdXRvIGJvcmRlclJpZ2h0ID0gTGF5
b3V0VW5pdCB7IHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSB9OworICAgIGF1dG8gYm9yZGVyVG9w
ID0gTGF5b3V0VW5pdCB7IHN0eWxlLmJvcmRlclRvcFdpZHRoKCkgfTsKKyAgICBhdXRvIGJvcmRl
ckJvdHRvbSA9IExheW91dFVuaXQgeyBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpIH07CisKKyAg
ICBpZiAoYXV0byogdGFibGVDZWxsID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlclRhYmxlQ2VsbD4o
cmVuZGVyZXIpOyB0YWJsZUNlbGwgJiYgdGFibGVDZWxsLT50YWJsZSgpLT5jb2xsYXBzZUJvcmRl
cnMoKSkgeworICAgICAgICBib3JkZXJMZWZ0ID0gdGFibGVDZWxsLT5ib3JkZXJMZWZ0KCk7Cisg
ICAgICAgIGJvcmRlclJpZ2h0ID0gdGFibGVDZWxsLT5ib3JkZXJSaWdodCgpOworICAgICAgICBi
b3JkZXJUb3AgPSB0YWJsZUNlbGwtPmJvcmRlclRvcCgpOworICAgICAgICBib3JkZXJCb3R0b20g
PSB0YWJsZUNlbGwtPmJvcmRlckJvdHRvbSgpOworICAgIH0gZWxzZSBpZiAocmVuZGVyZXIuaXNG
aWVsZHNldCgpKSB7CisgICAgICAgIGF1dG8gYWRqdXN0bWVudCA9IGRvd25jYXN0PFJlbmRlckJs
b2NrPihyZW5kZXJlcikuaW50cmluc2ljQm9yZGVyRm9yRmllbGRzZXQoKTsKKyAgICAgICAgLy8g
Tm90ZSB0aGF0IHRoaXMgYWRqdXN0bWVudCBpcyBjb21pbmcgZnJvbSBfaW5zaWRlXyB0aGUgZmll
bGRzZXQgc28gaXRzIG93biBmbG93IGRpcmVjdGlvbiBpcyB3aGF0IGlzIHJlbGV2YW50IGhlcmUu
CisgICAgICAgIHN3aXRjaCAoc3R5bGUuYmxvY2tGbG93RGlyZWN0aW9uKCkpIHsKKyAgICAgICAg
Y2FzZSBGbG93RGlyZWN0aW9uOjpUb3BUb0JvdHRvbToKKyAgICAgICAgICAgIGJvcmRlclRvcCAr
PSBhZGp1c3RtZW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRmxvd0RpcmVj
dGlvbjo6Qm90dG9tVG9Ub3A6CisgICAgICAgICAgICBib3JkZXJCb3R0b20gKz0gYWRqdXN0bWVu
dDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZsb3dEaXJlY3Rpb246OkxlZnRU
b1JpZ2h0OgorICAgICAgICAgICAgYm9yZGVyTGVmdCArPSBhZGp1c3RtZW50OworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRmxvd0RpcmVjdGlvbjo6UmlnaHRUb0xlZnQ6CisgICAg
ICAgICAgICBib3JkZXJSaWdodCArPSBhZGp1c3RtZW50OworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgfQorICAgIH0KIAogICAgIGlmIChibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlv
bjo6VG9wVG9Cb3R0b20gfHwgYmxvY2tGbG93RGlyZWN0aW9uID09IEZsb3dEaXJlY3Rpb246OkJv
dHRvbVRvVG9wKSB7CiAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uKQpA
QCAtMTkwLDE4ICsyMjMsMjYgQEAgc3RhdGljIGlubGluZSBMYXlvdXQ6OkJveEdlb21ldHJ5OjpF
ZGdlcyBsb2dpY2FsQm9yZGVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWMKICAgICByZXR1cm4g
eyB7IGJvcmRlckxvZ2ljYWxMZWZ0LCBib3JkZXJMb2dpY2FsUmlnaHQgfSwgeyBib3JkZXJMb2dp
Y2FsVG9wLCBib3JkZXJMb2dpY2FsQm90dG9tIH0gfTsKIH0KIAotc3RhdGljIGlubGluZSBMYXlv
dXQ6OkJveEdlb21ldHJ5OjpFZGdlcyBsb2dpY2FsUGFkZGluZyhjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCYgcmVuZGVyZXIsIGJvb2wgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgRmxv
d0RpcmVjdGlvbiBibG9ja0Zsb3dEaXJlY3Rpb24sIFVzZUNvbXB1dGVkVmFsdWVzIHVzZUNvbXB1
dGVkVmFsdWVzID0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vLCBJc1BhcnRPZkZvcm1hdHRpbmdDb250
ZXh0IGlzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgPSBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0
OjpObywgYm9vbCByZXRhaW5QYWRkaW5nU3RhcnQgPSB0cnVlLCBib29sIHJldGFpblBhZGRpbmdF
bmQgPSB0cnVlKQorc3RhdGljIGlubGluZSBMYXlvdXQ6OkJveEdlb21ldHJ5OjpFZGdlcyBsb2dp
Y2FsUGFkZGluZyhjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIsIHN0ZDo6b3B0
aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIGJvb2wgaXNMZWZ0VG9SaWdodElubGlu
ZURpcmVjdGlvbiwgRmxvd0RpcmVjdGlvbiBibG9ja0Zsb3dEaXJlY3Rpb24sIElzUGFydE9mRm9y
bWF0dGluZ0NvbnRleHQgaXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dCA9IElzUGFydE9mRm9ybWF0
dGluZ0NvbnRleHQ6Ok5vLCBib29sIHJldGFpblBhZGRpbmdTdGFydCA9IHRydWUsIGJvb2wgcmV0
YWluUGFkZGluZ0VuZCA9IHRydWUpCiB7CiAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci5zdHls
ZSgpOwotICAgIGF1dG8gcGFkZGluZ0xlZnQgPSB1c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21w
dXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5wYWRkaW5nTGVmdCgpIDogZml4ZWRWYWx1ZU9yWmVy
byhzdHlsZS5wYWRkaW5nTGVmdCgpKTsKLSAgICBhdXRvIHBhZGRpbmdSaWdodCA9IHVzZUNvbXB1
dGVkVmFsdWVzID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVyLnBhZGRpbmdSaWdo
dCgpIDogZml4ZWRWYWx1ZU9yWmVybyhzdHlsZS5wYWRkaW5nUmlnaHQoKSk7Ci0gICAgYXV0byBw
YWRkaW5nVG9wID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8g
cmVuZGVyZXIucGFkZGluZ1RvcCgpIDogZml4ZWRWYWx1ZU9yWmVybyhzdHlsZS5wYWRkaW5nVG9w
KCkpOwotICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IHVzZUNvbXB1dGVkVmFsdWVzID09IFVzZUNv
bXB1dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVyLnBhZGRpbmdCb3R0b20oKSA6IGZpeGVkVmFsdWVP
clplcm8oc3R5bGUucGFkZGluZ0JvdHRvbSgpKTsKKworICAgIGF1dG8gcGFkZGluZ0xlZnQgPSB1
c2VkVmFsdWVPclplcm8oc3R5bGUucGFkZGluZ0xlZnQoKSwgYXZhaWxhYmxlV2lkdGgpOworICAg
IGF1dG8gcGFkZGluZ1JpZ2h0ID0gdXNlZFZhbHVlT3JaZXJvKHN0eWxlLnBhZGRpbmdSaWdodCgp
LCBhdmFpbGFibGVXaWR0aCk7CisgICAgYXV0byBwYWRkaW5nVG9wID0gdXNlZFZhbHVlT3JaZXJv
KHN0eWxlLnBhZGRpbmdUb3AoKSwgYXZhaWxhYmxlV2lkdGgpOworICAgIGF1dG8gcGFkZGluZ0Jv
dHRvbSA9IHVzZWRWYWx1ZU9yWmVybyhzdHlsZS5wYWRkaW5nQm90dG9tKCksIGF2YWlsYWJsZVdp
ZHRoKTsKKworICAgIGF1dG8gaW50cmluc2ljUGFkZGluZ0JlZm9yZSA9IExheW91dFVuaXQgeyB9
OworICAgIGF1dG8gaW50cmluc2ljUGFkZGluZ0FmdGVyID0gTGF5b3V0VW5pdCB7IH07CisgICAg
aWYgKGF1dG8qIHRhYmxlQ2VsbCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KHJl
bmRlcmVyKSkgeworICAgICAgICBpbnRyaW5zaWNQYWRkaW5nQmVmb3JlID0gdGFibGVDZWxsLT5p
bnRyaW5zaWNQYWRkaW5nQmVmb3JlKCk7CisgICAgICAgIGludHJpbnNpY1BhZGRpbmdBZnRlciA9
IHRhYmxlQ2VsbC0+aW50cmluc2ljUGFkZGluZ0FmdGVyKCk7CisgICAgfQogCiAgICAgaWYgKGJs
b2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpUb3BUb0JvdHRvbSB8fCBibG9ja0Zs
b3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6Qm90dG9tVG9Ub3ApIHsKICAgICAgICAgaWYg
KGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24pCi0gICAgICAgICAgICByZXR1cm4geyB7IHJl
dGFpblBhZGRpbmdTdGFydCA/IHBhZGRpbmdMZWZ0IDogMF9sdSwgcmV0YWluUGFkZGluZ0VuZCA/
IHBhZGRpbmdSaWdodCA6IDBfbHUgfSwgeyBwYWRkaW5nVG9wLCBwYWRkaW5nQm90dG9tIH0gfTsK
LSAgICAgICAgcmV0dXJuIHsgeyByZXRhaW5QYWRkaW5nU3RhcnQgPyBwYWRkaW5nUmlnaHQgOiAw
X2x1LCByZXRhaW5QYWRkaW5nRW5kID8gcGFkZGluZ0xlZnQgOiAwX2x1IH0sIHsgcGFkZGluZ1Rv
cCwgcGFkZGluZ0JvdHRvbSB9IH07CisgICAgICAgICAgICByZXR1cm4geyB7IHJldGFpblBhZGRp
bmdTdGFydCA/IHBhZGRpbmdMZWZ0IDogMF9sdSwgcmV0YWluUGFkZGluZ0VuZCA/IHBhZGRpbmdS
aWdodCA6IDBfbHUgfSwgeyBwYWRkaW5nVG9wICsgaW50cmluc2ljUGFkZGluZ0JlZm9yZSwgcGFk
ZGluZ0JvdHRvbSArIGludHJpbnNpY1BhZGRpbmdBZnRlciB9IH07CisgICAgICAgIHJldHVybiB7
IHsgcmV0YWluUGFkZGluZ1N0YXJ0ID8gcGFkZGluZ1JpZ2h0IDogMF9sdSwgcmV0YWluUGFkZGlu
Z0VuZCA/IHBhZGRpbmdMZWZ0IDogMF9sdSB9LCB7IHBhZGRpbmdUb3AgKyBpbnRyaW5zaWNQYWRk
aW5nQmVmb3JlLCBwYWRkaW5nQm90dG9tICsgaW50cmluc2ljUGFkZGluZ0FmdGVyIH0gfTsKICAg
ICB9CiAKICAgICBhdXRvIHBhZGRpbmdMb2dpY2FsTGVmdCA9IHJldGFpblBhZGRpbmdTdGFydCA/
IGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24gPyBwYWRkaW5nVG9wIDogcGFkZGluZ0JvdHRv
bSA6IDBfbHU7CkBAIC0yMDksNyArMjUwLDcgQEAgc3RhdGljIGlubGluZSBMYXlvdXQ6OkJveEdl
b21ldHJ5OjpFZGdlcyBsb2dpY2FsUGFkZGluZyhjb25zdCBSZW5kZXJCb3hNb2RlbE9iamUKICAg
ICAvLyBGb3IgYm94ZXMgaW5zaWRlIHRoZSBmb3JtYXR0aW5nIGNvbnRleHQsIHJpZ2h0IHBhZGRp
bmcgKGJvcmRlcikgYWx3YXlzIHBvaW50cyB1cCwgd2hpbGUgd2hlbiBjb252ZXJ0aW5nIHRoZSBm
b3JtYXR0aW5nIGNvbnRleHQgcm9vdCdzIHBhZGRpbmcgKGJvcmRlcikgdGhlIGRpcmVjdGlvbmFs
aXR5IG1hdHRlcnMuCiAgICAgYXV0byBwYWRkaW5nTG9naWNhbFRvcCA9IGlzUGFydE9mRm9ybWF0
dGluZ0NvbnRleHQgPT0gSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6WWVzID8gcGFkZGluZ1Jp
Z2h0IDogYmxvY2tGbG93RGlyZWN0aW9uID09IEZsb3dEaXJlY3Rpb246OkxlZnRUb1JpZ2h0ID8g
cGFkZGluZ0xlZnQgOiBwYWRkaW5nUmlnaHQ7CiAgICAgYXV0byBwYWRkaW5nTG9naWNhbEJvdHRv
bSA9IGlzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgPT0gSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4
dDo6WWVzID8gcGFkZGluZ0xlZnQgOiBibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlv
bjo6TGVmdFRvUmlnaHQgPyBwYWRkaW5nUmlnaHQgOiBwYWRkaW5nTGVmdDsKLSAgICByZXR1cm4g
eyB7IHBhZGRpbmdMb2dpY2FsTGVmdCwgcGFkZGluZ0xvZ2ljYWxSaWdodCB9LCB7IHBhZGRpbmdM
b2dpY2FsVG9wLCBwYWRkaW5nTG9naWNhbEJvdHRvbSB9IH07CisgICAgcmV0dXJuIHsgeyBwYWRk
aW5nTG9naWNhbExlZnQsIHBhZGRpbmdMb2dpY2FsUmlnaHQgfSwgeyBwYWRkaW5nTG9naWNhbFRv
cCArIGludHJpbnNpY1BhZGRpbmdCZWZvcmUsIHBhZGRpbmdMb2dpY2FsQm90dG9tICsgaW50cmlu
c2ljUGFkZGluZ0FmdGVyIH0gfTsKIH0KIAogc3RhdGljIGlubGluZSBMYXlvdXRTaXplIHNjcm9s
bGJhckxvZ2ljYWxTaXplKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIpCkBAIC0yMjIsNyArMjYz
LDcgQEAgc3RhdGljIGlubGluZSBMYXlvdXRTaXplIHNjcm9sbGJhckxvZ2ljYWxTaXplKGNvbnN0
IFJlbmRlckJveCYgcmVuZGVyZXIpCiAgICAgcmV0dXJuIHsgaG9yaXpvbnRhbFNwYWNlUmVzZXJ2
ZWRGb3JTY3JvbGxiYXIsIHZlcnRpY2FsU3BhY2VSZXNlcnZlZEZvclNjcm9sbGJhciB9OwogfQog
Ci12b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlTGF5b3V0Qm94RGltZW5zaW9ucyhjb25z
dCBSZW5kZXJCb3gmIHJlbmRlckJveCwgc3RkOjpvcHRpb25hbDxMYXlvdXQ6OkludHJpbnNpY1dp
ZHRoTW9kZT4gaW50cmluc2ljV2lkdGhNb2RlKQordm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVw
ZGF0ZUxheW91dEJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJCb3gsIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
OjpJbnRyaW5zaWNXaWR0aE1vZGU+IGludHJpbnNpY1dpZHRoTW9kZSkKIHsKICAgICBhdXRvJiBs
YXlvdXRCb3ggPSBjb25zdF9jYXN0PExheW91dDo6RWxlbWVudEJveCY+KCpyZW5kZXJCb3gubGF5
b3V0Qm94KCkpOwogICAgIGF1dG8gaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiA9IHJlbmRl
ckJveC5wYXJlbnQoKS0+c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CkBAIC0yMzAs
OSArMjcxLDkgQEAgdm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUxheW91dEJveERpbWVu
c2lvbnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJCb3gsIHMKICAgICBhdXRvIGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlID0gYmxvY2tGbG93RGlyZWN0aW9uID09IEZsb3dEaXJlY3Rpb246OlRvcFRv
Qm90dG9tIHx8IGJsb2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpCb3R0b21Ub1Rv
cDsKIAogICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gbGF5b3V0U3RhdGUoKS5lbnN1cmVHZW9tZXRy
eUZvckJveChsYXlvdXRCb3gpOwotICAgIGF1dG8gaW5saW5lTWFyZ2luID0gaG9yaXpvbnRhbExv
Z2ljYWxNYXJnaW4ocmVuZGVyQm94LCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBpc0hv
cml6b250YWxXcml0aW5nTW9kZSwgaW50cmluc2ljV2lkdGhNb2RlID8gVXNlQ29tcHV0ZWRWYWx1
ZXM6OlllcyA6IFVzZUNvbXB1dGVkVmFsdWVzOjpObyk7Ci0gICAgYXV0byBib3JkZXIgPSBsb2dp
Y2FsQm9yZGVyKHJlbmRlckJveCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYmxvY2tG
bG93RGlyZWN0aW9uLCBpbnRyaW5zaWNXaWR0aE1vZGUgPyBVc2VDb21wdXRlZFZhbHVlczo6WWVz
IDogVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vKTsKLSAgICBhdXRvIHBhZGRpbmcgPSBsb2dpY2FsUGFk
ZGluZyhyZW5kZXJCb3gsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0Rp
cmVjdGlvbiwgaW50cmluc2ljV2lkdGhNb2RlID8gVXNlQ29tcHV0ZWRWYWx1ZXM6OlllcyA6IFVz
ZUNvbXB1dGVkVmFsdWVzOjpObyk7CisgICAgYXV0byBpbmxpbmVNYXJnaW4gPSBob3Jpem9udGFs
TG9naWNhbE1hcmdpbihyZW5kZXJCb3gsIGF2YWlsYWJsZVdpZHRoLCBpc0xlZnRUb1JpZ2h0SW5s
aW5lRGlyZWN0aW9uLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSk7CisgICAgYXV0byBib3JkZXIg
PSBsb2dpY2FsQm9yZGVyKHJlbmRlckJveCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwg
YmxvY2tGbG93RGlyZWN0aW9uKTsKKyAgICBhdXRvIHBhZGRpbmcgPSBsb2dpY2FsUGFkZGluZyhy
ZW5kZXJCb3gsIGF2YWlsYWJsZVdpZHRoLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBi
bG9ja0Zsb3dEaXJlY3Rpb24pOwogICAgIGF1dG8gc2Nyb2xsYmFyU2l6ZSA9IHNjcm9sbGJhckxv
Z2ljYWxTaXplKHJlbmRlckJveCk7CiAKICAgICBpZiAoaW50cmluc2ljV2lkdGhNb2RlKSB7CkBA
IC0zMTAsNyArMzUxLDcgQEAgdm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUxpbmVCcmVh
a0JveERpbWVuc2lvbnMoY29uc3QgUmVuZGVyTGluZUJyZWFrJiBsaW4KICAgICAgICAgYm94R2Vv
bWV0cnkuc2V0Q29udGVudEJveEhlaWdodCh7IH0pOwogfQogCi12b2lkIEJveEdlb21ldHJ5VXBk
YXRlcjo6dXBkYXRlSW5saW5lQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJJbmxpbmUmIHJlbmRl
cklubGluZSwgc3RkOjpvcHRpb25hbDxMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gaW50cmlu
c2ljV2lkdGhNb2RlKQordm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUlubGluZUJveERp
bWVuc2lvbnMoY29uc3QgUmVuZGVySW5saW5lJiByZW5kZXJJbmxpbmUsIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5z
aWNXaWR0aE1vZGU+IGludHJpbnNpY1dpZHRoTW9kZSkKIHsKICAgICBhdXRvJiBib3hHZW9tZXRy
eSA9IGxheW91dFN0YXRlKCkuZW5zdXJlR2VvbWV0cnlGb3JCb3goKnJlbmRlcklubGluZS5sYXlv
dXRCb3goKSk7CiAKQEAgLTMyMiw5ICszNjMsOSBAQCB2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6
dXBkYXRlSW5saW5lQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJJbmxpbmUmIHJlbmRlcklubAog
ICAgIGF1dG8gYmxvY2tGbG93RGlyZWN0aW9uID0gd3JpdGluZ01vZGVUb0Jsb2NrRmxvd0RpcmVj
dGlvbihyZW5kZXJJbmxpbmUuc3R5bGUoKS53cml0aW5nTW9kZSgpKTsKICAgICBhdXRvIGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlID0gYmxvY2tGbG93RGlyZWN0aW9uID09IEZsb3dEaXJlY3Rpb246
OlRvcFRvQm90dG9tIHx8IGJsb2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpCb3R0
b21Ub1RvcDsKIAotICAgIGF1dG8gaW5saW5lTWFyZ2luID0gaG9yaXpvbnRhbExvZ2ljYWxNYXJn
aW4ocmVuZGVySW5saW5lLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBpc0hvcml6b250
YWxXcml0aW5nTW9kZSwgaW50cmluc2ljV2lkdGhNb2RlID8gVXNlQ29tcHV0ZWRWYWx1ZXM6Olll
cyA6IFVzZUNvbXB1dGVkVmFsdWVzOjpObywgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdB
bmRNYXJnaW5TdGFydCwgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRNYXJnaW5FbmQp
OwotICAgIGF1dG8gYm9yZGVyID0gbG9naWNhbEJvcmRlcihyZW5kZXJJbmxpbmUsIGlzTGVmdFRv
UmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlvbiwgaW50cmluc2ljV2lkdGhN
b2RlID8gVXNlQ29tcHV0ZWRWYWx1ZXM6OlllcyA6IFVzZUNvbXB1dGVkVmFsdWVzOjpObywgSXNQ
YXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6WWVzLCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGlu
Z0FuZE1hcmdpblN0YXJ0LCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGluZ0FuZE1hcmdpbkVu
ZCk7Ci0gICAgYXV0byBwYWRkaW5nID0gbG9naWNhbFBhZGRpbmcocmVuZGVySW5saW5lLCBpc0xl
ZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24sIGludHJpbnNpY1dp
ZHRoTW9kZSA/IFVzZUNvbXB1dGVkVmFsdWVzOjpZZXMgOiBVc2VDb21wdXRlZFZhbHVlczo6Tm8s
IElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6OlllcywgIXNob3VsZE5vdFJldGFpbkJvcmRlclBh
ZGRpbmdBbmRNYXJnaW5TdGFydCwgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRNYXJn
aW5FbmQpOworICAgIGF1dG8gaW5saW5lTWFyZ2luID0gaG9yaXpvbnRhbExvZ2ljYWxNYXJnaW4o
cmVuZGVySW5saW5lLCBhdmFpbGFibGVXaWR0aCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlv
biwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5n
QW5kTWFyZ2luU3RhcnQsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5kTWFyZ2luRW5k
KTsKKyAgICBhdXRvIGJvcmRlciA9IGxvZ2ljYWxCb3JkZXIocmVuZGVySW5saW5lLCBpc0xlZnRU
b1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24sIElzUGFydE9mRm9ybWF0
dGluZ0NvbnRleHQ6OlllcywgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRNYXJnaW5T
dGFydCwgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRNYXJnaW5FbmQpOworICAgIGF1
dG8gcGFkZGluZyA9IGxvZ2ljYWxQYWRkaW5nKHJlbmRlcklubGluZSwgYXZhaWxhYmxlV2lkdGgs
IGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlvbiwgSXNQYXJ0
T2ZGb3JtYXR0aW5nQ29udGV4dDo6WWVzLCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGluZ0Fu
ZE1hcmdpblN0YXJ0LCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGluZ0FuZE1hcmdpbkVuZCk7
CiAKICAgICBpZiAoaW50cmluc2ljV2lkdGhNb2RlKSB7CiAgICAgICAgIGJveEdlb21ldHJ5LnNl
dEhvcml6b250YWxNYXJnaW4oaW5saW5lTWFyZ2luKTsKQEAgLTMzOSw3ICszODAsNyBAQCB2b2lk
IEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlSW5saW5lQm94RGltZW5zaW9ucyhjb25zdCBSZW5k
ZXJJbmxpbmUmIHJlbmRlcklubAogICAgIGJveEdlb21ldHJ5LnNldFBhZGRpbmcocGFkZGluZyk7
CiB9CiAKLXZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjpzZXRHZW9tZXRyaWVzRm9yTGF5b3V0KCkK
K3ZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjpzZXRHZW9tZXRyaWVzRm9yTGF5b3V0KExheW91dFVu
aXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoKQogewogICAgIGZvciAoYXV0byB3YWxrZXIgPSBJbmxp
bmVXYWxrZXIoZG93bmNhc3Q8UmVuZGVyQmxvY2tGbG93Pihib3hUcmVlKCkucm9vdFJlbmRlcmVy
KCkpKTsgIXdhbGtlci5hdEVuZCgpOyB3YWxrZXIuYWR2YW5jZSgpKSB7CiAgICAgICAgIGF1dG8m
IHJlbmRlcmVyID0gKndhbGtlci5jdXJyZW50KCk7CkBAIC0zNTAsNyArMzkxLDcgQEAgdm9pZCBC
b3hHZW9tZXRyeVVwZGF0ZXI6OnNldEdlb21ldHJpZXNGb3JMYXlvdXQoKQogICAgICAgICBpZiAo
cmVuZGVyZXIuaXNGbG9hdGluZygpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
dXBkYXRlR2VvbWV0cnlBZnRlckxheW91dChkb3duY2FzdDxSZW5kZXJFbGVtZW50PihyZW5kZXJl
cikpOworICAgICAgICB1cGRhdGVCb3hHZW9tZXRyeShkb3duY2FzdDxSZW5kZXJFbGVtZW50Pihy
ZW5kZXJlciksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgfQogfQogCkBAIC0zNjcsMzAg
KzQwOCwzMCBAQCB2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6c2V0R2VvbWV0cmllc0ZvckludHJp
bnNpY1dpZHRoKExheW91dDo6SW50cmluc2ljV2lkdGhNbwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcklubGluZSA9IGR5bmFtaWNEb3du
Y2FzdDxSZW5kZXJJbmxpbmU+KHJlbmRlcmVyKSkgewotICAgICAgICAgICAgdXBkYXRlSW5saW5l
Qm94RGltZW5zaW9ucygqcmVuZGVySW5saW5lLCBpbnRyaW5zaWNXaWR0aE1vZGUpOworICAgICAg
ICAgICAgdXBkYXRlSW5saW5lQm94RGltZW5zaW9ucygqcmVuZGVySW5saW5lLCB7IH0sIGludHJp
bnNpY1dpZHRoTW9kZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAg
ICBpZiAoYXV0byogcmVuZGVyTGlzdE1hcmtlciA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJMaXN0
TWFya2VyPihyZW5kZXJlcikpIHsKLSAgICAgICAgICAgIHVwZGF0ZUxpc3RNYXJrZXJEaW1lbnNp
b25zKCpyZW5kZXJMaXN0TWFya2VyLCBpbnRyaW5zaWNXaWR0aE1vZGUpOworICAgICAgICAgICAg
dXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMoKnJlbmRlckxpc3RNYXJrZXIsIHsgfSwgaW50cmlu
c2ljV2lkdGhNb2RlKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAg
IGlmIChhdXRvKiByZW5kZXJCb3ggPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJl
cikpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgZmxleGluZyBib3hl
cy4KICAgICAgICAgICAgIEFTU0VSVChyZW5kZXJCb3gtPnN0eWxlKCkubG9naWNhbFdpZHRoKCku
aXNGaXhlZCgpKTsKLSAgICAgICAgICAgIHVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMoKnJlbmRl
ckJveCwgaW50cmluc2ljV2lkdGhNb2RlKTsKKyAgICAgICAgICAgIHVwZGF0ZUxheW91dEJveERp
bWVuc2lvbnMoKnJlbmRlckJveCwgeyB9LCBpbnRyaW5zaWNXaWR0aE1vZGUpOwogICAgICAgICB9
CiAgICAgfQogfQogCi1MYXlvdXQ6OkNvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCBCb3hHZW9t
ZXRyeVVwZGF0ZXI6OnVwZGF0ZUlubGluZUNvbnRlbnRDb25zdHJhaW50cygpCitMYXlvdXQ6OkNv
bnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUlubGlu
ZUNvbnRlbnRDb25zdHJhaW50cyhMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKQogewogICAgIGF1
dG8mIHJvb3RSZW5kZXJlciA9IGJveFRyZWUoKS5yb290UmVuZGVyZXIoKTsKICAgICBhdXRvIGlz
TGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24gPSByb290UmVuZGVyZXIuc3R5bGUoKS5pc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKCk7CiAgICAgYXV0byB3cml0aW5nTW9kZSA9IHJvb3RSZW5kZXJlci5z
dHlsZSgpLndyaXRpbmdNb2RlKCk7CiAgICAgYXV0byBibG9ja0Zsb3dEaXJlY3Rpb24gPSB3cml0
aW5nTW9kZVRvQmxvY2tGbG93RGlyZWN0aW9uKHdyaXRpbmdNb2RlKTsKIAotICAgIGF1dG8gcGFk
ZGluZyA9IGxvZ2ljYWxQYWRkaW5nKHJvb3RSZW5kZXJlciwgaXNMZWZ0VG9SaWdodElubGluZURp
cmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9uLCBVc2VDb21wdXRlZFZhbHVlczo6Tm8sIElzUGFy
dE9mRm9ybWF0dGluZ0NvbnRleHQ6Ok5vKTsKLSAgICBhdXRvIGJvcmRlciA9IGxvZ2ljYWxCb3Jk
ZXIocm9vdFJlbmRlcmVyLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dE
aXJlY3Rpb24sIFVzZUNvbXB1dGVkVmFsdWVzOjpObywgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4
dDo6Tm8pOworICAgIGF1dG8gcGFkZGluZyA9IGxvZ2ljYWxQYWRkaW5nKHJvb3RSZW5kZXJlciwg
YXZhaWxhYmxlV2lkdGgsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0Rp
cmVjdGlvbiwgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6Tm8pOworICAgIGF1dG8gYm9yZGVy
ID0gbG9naWNhbEJvcmRlcihyb290UmVuZGVyZXIsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rp
b24sIGJsb2NrRmxvd0RpcmVjdGlvbiwgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6Tm8pOwog
ICAgIGF1dG8gc2Nyb2xsYmFyU2l6ZSA9IHNjcm9sbGJhckxvZ2ljYWxTaXplKHJvb3RSZW5kZXJl
cik7CiAgICAgYXV0byBzaG91bGRQbGFjZVZlcnRpY2FsU2Nyb2xsYmFyT25MZWZ0ID0gcm9vdFJl
bmRlcmVyLnNob3VsZFBsYWNlVmVydGljYWxTY3JvbGxiYXJPbkxlZnQoKTsKIApAQCAtNDA5LDcg
KzQ1MCw3IEBAIExheW91dDo6Q29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50IEJveEdlb21ldHJ5
VXBkYXRlcjo6dXBkYXRlSW5saW5lQ29udGVudENvbnN0CiAgICAgICAgIHJvb3RHZW9tZXRyeS5z
ZXRCb3JkZXIoYm9yZGVyKTsKICAgICAgICAgcm9vdEdlb21ldHJ5LnNldEhvcml6b250YWxTcGFj
ZUZvclNjcm9sbGJhcihzY3JvbGxiYXJTaXplLndpZHRoKCkpOwogICAgICAgICByb290R2VvbWV0
cnkuc2V0VmVydGljYWxTcGFjZUZvclNjcm9sbGJhcihzY3JvbGxiYXJTaXplLmhlaWdodCgpKTsK
LSAgICAgICAgcm9vdEdlb21ldHJ5LnNldEhvcml6b250YWxNYXJnaW4oaG9yaXpvbnRhbExvZ2lj
YWxNYXJnaW4ocm9vdFJlbmRlcmVyLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBXZWJD
b3JlOjppc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSksIFVzZUNvbXB1dGVkVmFs
dWVzOjpObykpOworICAgICAgICByb290R2VvbWV0cnkuc2V0SG9yaXpvbnRhbE1hcmdpbihob3Jp
em9udGFsTG9naWNhbE1hcmdpbihyb290UmVuZGVyZXIsIGF2YWlsYWJsZVdpZHRoLCBpc0xlZnRU
b1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBXZWJDb3JlOjppc0hvcml6b250YWxXcml0aW5nTW9kZSh3
cml0aW5nTW9kZSkpKTsKICAgICAgICAgcm9vdEdlb21ldHJ5LnNldFZlcnRpY2FsTWFyZ2luKHZl
cnRpY2FsTG9naWNhbE1hcmdpbihyb290UmVuZGVyZXIsIGJsb2NrRmxvd0RpcmVjdGlvbikpOwog
ICAgIH07CiAgICAgY3JlYXRlUm9vdEdlb21ldHJ5SWZOZWVkZWQoKTsKQEAgLTQxNywyNCArNDU4
LDI0IEBAIExheW91dDo6Q29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50IEJveEdlb21ldHJ5VXBk
YXRlcjo6dXBkYXRlSW5saW5lQ29udGVudENvbnN0CiAgICAgcmV0dXJuIHsgeyBob3Jpem9udGFs
Q29uc3RyYWludHMsIGNvbnRlbnRCb3hUb3AgfSwgdmlzdWFsTGVmdCB9OwogfQogCi12b2lkIEJv
eEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlR2VvbWV0cnlBZnRlckxheW91dChjb25zdCBMYXlvdXQ6
OkVsZW1lbnRCb3gmIGJveCkKK3ZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVHZW9tZXRy
eUFmdGVyTGF5b3V0KGNvbnN0IExheW91dDo6RWxlbWVudEJveCYgYm94LCBMYXlvdXRVbml0IGF2
YWlsYWJsZVdpZHRoKQogewotICAgIHVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQoKmR5bmFtaWNE
b3duY2FzdDxSZW5kZXJCb3g+KGJveC5yZW5kZXJlckZvckludGVncmF0aW9uKCkpKTsKKyAgICB1
cGRhdGVCb3hHZW9tZXRyeSgqZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4oYm94LnJlbmRlcmVy
Rm9ySW50ZWdyYXRpb24oKSksIGF2YWlsYWJsZVdpZHRoKTsKIH0KIAotdm9pZCBCb3hHZW9tZXRy
eVVwZGF0ZXI6OnVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQoY29uc3QgUmVuZGVyRWxlbWVudCYg
cmVuZGVyZXIpCit2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlQm94R2VvbWV0cnkoY29u
c3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIExheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpCiB7
CiAgICAgaWYgKGlzPFJlbmRlclJlcGxhY2VkPihyZW5kZXJlcikgfHwgaXM8UmVuZGVyVGFibGU+
KHJlbmRlcmVyKSB8fCBpczxSZW5kZXJMaXN0SXRlbT4ocmVuZGVyZXIpIHx8IGlzPFJlbmRlckJs
b2NrPihyZW5kZXJlcikgfHwgaXM8UmVuZGVyRnJhbWVTZXQ+KHJlbmRlcmVyKSkKLSAgICAgICAg
dXBkYXRlTGF5b3V0Qm94RGltZW5zaW9ucyhkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKSk7
CisgICAgICAgIHVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMoZG93bmNhc3Q8UmVuZGVyQm94Pihy
ZW5kZXJlciksIGF2YWlsYWJsZVdpZHRoKTsKIAogICAgIGlmIChhdXRvKiByZW5kZXJMaXN0TWFy
a2VyID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckxpc3RNYXJrZXI+KHJlbmRlcmVyKSkKLSAgICAg
ICAgdXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMoKnJlbmRlckxpc3RNYXJrZXIpOworICAgICAg
ICB1cGRhdGVMaXN0TWFya2VyRGltZW5zaW9ucygqcmVuZGVyTGlzdE1hcmtlciwgYXZhaWxhYmxl
V2lkdGgpOwogCiAgICAgaWYgKGF1dG8qIHJlbmRlckxpbmVCcmVhayA9IGR5bmFtaWNEb3duY2Fz
dDxSZW5kZXJMaW5lQnJlYWs+KHJlbmRlcmVyKSkKICAgICAgICAgdXBkYXRlTGluZUJyZWFrQm94
RGltZW5zaW9ucygqcmVuZGVyTGluZUJyZWFrKTsKIAogICAgIGlmIChhdXRvKiByZW5kZXJJbmxp
bmUgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW5saW5lPihyZW5kZXJlcikpCi0gICAgICAgIHVw
ZGF0ZUlubGluZUJveERpbWVuc2lvbnMoKnJlbmRlcklubGluZSk7CisgICAgICAgIHVwZGF0ZUlu
bGluZUJveERpbWVuc2lvbnMoKnJlbmRlcklubGluZSwgYXZhaWxhYmxlV2lkdGgpOwogfQogCiBj
b25zdCBMYXlvdXQ6OkVsZW1lbnRCb3gmIEJveEdlb21ldHJ5VXBkYXRlcjo6cm9vdExheW91dEJv
eCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
aW5saW5lL0xheW91dEludGVncmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uQm94R2VvbWV0
cnlVcGRhdGVyLmgKaW5kZXggZjA5MjUzZGE3NjVmLi4zNWM1YmQ5MDE4YzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRp
b25Cb3hHZW9tZXRyeVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmgKQEAgLTQ3
LDE5ICs0NywyMCBAQCBwdWJsaWM6CiAgICAgQm94R2VvbWV0cnlVcGRhdGVyKEJveFRyZWUmLCBM
YXlvdXQ6OkxheW91dFN0YXRlJik7CiAgICAgQm94R2VvbWV0cnlVcGRhdGVyKExheW91dDo6TGF5
b3V0U3RhdGUmKTsKIAotICAgIHZvaWQgc2V0R2VvbWV0cmllc0ZvckxheW91dCgpOworICAgIHZv
aWQgc2V0R2VvbWV0cmllc0ZvckxheW91dChMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCk7CiAgICAgdm9pZCBzZXRHZW9tZXRyaWVzRm9ySW50cmluc2ljV2lkdGgoTGF5b3V0OjpJbnRy
aW5zaWNXaWR0aE1vZGUpOwotICAgIHZvaWQgdXBkYXRlR2VvbWV0cnlBZnRlckxheW91dChjb25z
dCBMYXlvdXQ6OkVsZW1lbnRCb3gmKTsKKyAgICB2b2lkIHVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlv
dXQoY29uc3QgTGF5b3V0OjpFbGVtZW50Qm94JiwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCk7
CiAKLSAgICBMYXlvdXQ6OkNvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCB1cGRhdGVJbmxpbmVD
b250ZW50Q29uc3RyYWludHMoKTsKKyAgICBMYXlvdXQ6OkNvbnN0cmFpbnRzRm9ySW5saW5lQ29u
dGVudCB1cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMoTGF5b3V0VW5pdCBhdmFpbGFibGVX
aWR0aCk7CiAgICAgSGFzaE1hcDxjb25zdCBMYXlvdXQ6OkVsZW1lbnRCb3gqLCBMYXlvdXRVbml0
PiB0YWtlTmVzdGVkTGlzdE1hcmtlck9mZnNldHMoKSB7IHJldHVybiBXVEZNb3ZlKG1fbmVzdGVk
TGlzdE1hcmtlck9mZnNldHMpOyB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCB1cGRhdGVMYXlvdXRC
b3hEaW1lbnNpb25zKGNvbnN0IFJlbmRlckJveCYsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRy
aW5zaWNXaWR0aE1vZGU+ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIHVwZGF0ZUJveEdlb21l
dHJ5KGNvbnN0IFJlbmRlckVsZW1lbnQmLCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKTsKKwor
ICAgIHZvaWQgdXBkYXRlTGF5b3V0Qm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJCb3gmLCBzdGQ6
Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVdpZHRoLCBzdGQ6Om9wdGlvbmFsPExheW91
dDo6SW50cmluc2ljV2lkdGhNb2RlPiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdm9pZCB1cGRhdGVM
aW5lQnJlYWtCb3hEaW1lbnNpb25zKGNvbnN0IFJlbmRlckxpbmVCcmVhayYpOwotICAgIHZvaWQg
dXBkYXRlSW5saW5lQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJJbmxpbmUmLCBzdGQ6Om9wdGlv
bmFsPExheW91dDo6SW50cmluc2ljV2lkdGhNb2RlPiA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgdm9p
ZCB1cGRhdGVMaXN0TWFya2VyRGltZW5zaW9ucyhjb25zdCBSZW5kZXJMaXN0TWFya2VyJiwgc3Rk
OjpvcHRpb25hbDxMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOwot
ICAgIHZvaWQgdXBkYXRlR2VvbWV0cnlBZnRlckxheW91dChjb25zdCBSZW5kZXJFbGVtZW50Jik7
CisgICAgdm9pZCB1cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25zKGNvbnN0IFJlbmRlcklubGluZSYs
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+ID0gc3RkOjpudWxsb3B0KTsKKyAgICB2b2lkIHVw
ZGF0ZUxpc3RNYXJrZXJEaW1lbnNpb25zKGNvbnN0IFJlbmRlckxpc3RNYXJrZXImLCBzdGQ6Om9w
dGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVdpZHRoLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6
SW50cmluc2ljV2lkdGhNb2RlPiA9IHN0ZDo6bnVsbG9wdCk7CiAKICAgICBCb3hUcmVlJiBib3hU
cmVlKCkgeyByZXR1cm4gKm1fYm94VHJlZTsgfQogICAgIGNvbnN0IEJveFRyZWUmIGJveFRyZWUo
KSBjb25zdCB7IHJldHVybiAqbV9ib3hUcmVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggMTFiNDYyMjMxYzZhLi4xYmUwM2VmZDVjYTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0
SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTI0MSw5
ICsyNDEsOSBAQCBib29sIExpbmVMYXlvdXQ6OnNob3VsZEludmFsaWRhdGVMaW5lTGF5b3V0UGF0
aEFmdGVyVHJlZU11dGF0aW9uKGNvbnN0IFJlbmRlckJsbwogICAgIHJldHVybiBzaG91bGRJbnZh
bGlkYXRlTGluZUxheW91dFBhdGhBZnRlckNoYW5nZUZvcihwYXJlbnQsIHJlbmRlcmVyLCBsaW5l
TGF5b3V0LCBpc1JlbW92YWwgPyBUeXBlT2ZDaGFuZ2VGb3JJbnZhbGlkYXRpb246Ok5vZGVSZW1v
dmFsIDogVHlwZU9mQ2hhbmdlRm9ySW52YWxpZGF0aW9uOjpOb2RlSW5zZXJ0aW9uKTsKIH0KIAot
dm9pZCBMaW5lTGF5b3V0Ojp1cGRhdGVJbmxpbmVDb250ZW50RGltZW5zaW9ucygpCit2b2lkIExp
bmVMYXlvdXQ6OnVwZGF0ZUlubGluZUNvbnRlbnREaW1lbnNpb25zKExheW91dFVuaXQgYXZhaWxh
YmxlTG9naWNhbFdpZHRoKQogewotICAgIG1fYm94R2VvbWV0cnlVcGRhdGVyLnNldEdlb21ldHJp
ZXNGb3JMYXlvdXQoKTsKKyAgICBtX2JveEdlb21ldHJ5VXBkYXRlci5zZXRHZW9tZXRyaWVzRm9y
TGF5b3V0KGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiB9CiAKIHZvaWQgTGluZUxheW91dDo6dXBk
YXRlU3R5bGUoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlcikKQEAgLTU3Miw5ICs1NzIsOSBA
QCB2b2lkIExpbmVMYXlvdXQ6OnVwZGF0ZVJlbmRlclRyZWVQb3NpdGlvbnMoY29uc3QgVmVjdG9y
PExpbmVBZGp1c3RtZW50PiYgbGluZUFkagogICAgIH0KIH0KIAotdm9pZCBMaW5lTGF5b3V0Ojp1
cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMoKQordm9pZCBMaW5lTGF5b3V0Ojp1cGRhdGVJ
bmxpbmVDb250ZW50Q29uc3RyYWludHMoTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgp
CiB7Ci0gICAgbV9pbmxpbmVDb250ZW50Q29uc3RyYWludHMgPSBtX2JveEdlb21ldHJ5VXBkYXRl
ci51cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMoKTsKKyAgICBtX2lubGluZUNvbnRlbnRD
b25zdHJhaW50cyA9IG1fYm94R2VvbWV0cnlVcGRhdGVyLnVwZGF0ZUlubGluZUNvbnRlbnRDb25z
dHJhaW50cyhhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogfQogCiB2b2lkIExpbmVMYXlvdXQ6OnBy
ZXBhcmVQbGFjZWRGbG9hdHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5
b3V0LmgKaW5kZXggNTA5YWI5Mjg4MDI3Li40YTJjZDEyYzJlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5l
TGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaApAQCAtNzcsOCArNzcsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkSW52YWxpZGF0ZUxpbmVMYXlvdXRQYXRoQWZ0ZXJDb250ZW50
Q2hhbmdlKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgcGFyZW50LCBjb25zdCBSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyV2l0aE5ld0NvbnRlbnQsIGNvbnN0IExpbmVMYXlvdXQmKTsKICAgICBzdGF0aWMg
Ym9vbCBzaG91bGRJbnZhbGlkYXRlTGluZUxheW91dFBhdGhBZnRlclRyZWVNdXRhdGlvbihjb25z
dCBSZW5kZXJCbG9ja0Zsb3cmIHBhcmVudCwgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwg
Y29uc3QgTGluZUxheW91dCYsIGJvb2wgaXNSZW1vdmFsKTsKIAotICAgIHZvaWQgdXBkYXRlSW5s
aW5lQ29udGVudENvbnN0cmFpbnRzKCk7Ci0gICAgdm9pZCB1cGRhdGVJbmxpbmVDb250ZW50RGlt
ZW5zaW9ucygpOworICAgIHZvaWQgdXBkYXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKExheW91
dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKKyAgICB2b2lkIHVwZGF0ZUlubGluZUNvbnRl
bnREaW1lbnNpb25zKExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICB2b2lk
IHVwZGF0ZU92ZXJmbG93KCk7CiAgICAgc3RhdGljIHZvaWQgdXBkYXRlU3R5bGUoY29uc3QgUmVu
ZGVyT2JqZWN0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKaW5kZXggZDJhODViY2RiNTM2Li4yYzk3ZjVlODQ2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBAIC0zODc5LDggKzM4NzksOSBAQCB2
b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5lQ29udGVudChib29sIHJlbGF5b3V0Q2hp
bGRyZW4sIExheW91dFVuaXQmIHJlcAogCiAgICAgYXV0byYgbGF5b3V0Rm9ybWF0dGluZ0NvbnRl
eHRMaW5lTGF5b3V0ID0gKnRoaXMtPmlubGluZUxheW91dCgpOwogCi0gICAgbGF5b3V0Rm9ybWF0
dGluZ0NvbnRleHRMaW5lTGF5b3V0LnVwZGF0ZUlubGluZUNvbnRlbnRDb25zdHJhaW50cygpOwot
ICAgIGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC51cGRhdGVJbmxpbmVDb250ZW50
RGltZW5zaW9ucygpOworICAgIEFTU0VSVChjb250YWluaW5nQmxvY2soKSB8fCBpczxSZW5kZXJW
aWV3PigqdGhpcykpOworICAgIGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC51cGRh
dGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMoY29udGFpbmluZ0Jsb2NrKCkgPyBjb250YWluaW5n
QmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCkgOiBMYXlvdXRVbml0KCkpOworICAgIGxh
eW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC51cGRhdGVJbmxpbmVDb250ZW50RGltZW5z
aW9ucyhhdmFpbGFibGVMb2dpY2FsV2lkdGgoKSk7CiAKICAgICBhdXRvIGNvbnRlbnRCb3hUb3Ag
PSBib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>472626</attachid>
            <date>2024-09-21 20:24:25 -0700</date>
            <delta_ts>2024-09-22 08:57:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-280039-20240921202425.patch</filename>
            <type>text/plain</type>
            <size>30891</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBlNTY4YmE4MWFkOTNiMGVhZmVjZjZmZmU5YmI3ZTgxNzEwNmIyZWY1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgMjEgU2VwIDIwMjQgMjA6MjM6NDQgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbTEZDXVtJ
bnRlZ3JhdGlvbl0gQWx3YXlzIHJlc29sdmUgbWFyZ2luL3BhZGRpbmcgdmFsdWVzCiAoQm94R2Vv
bWV0cnlVcGRhdGVyKSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjgw
MDM5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQuY3Bw
OgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OmxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4
dEZvckJveCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlv
dXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6dXNlZFZhbHVlT3JaZXJvKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpC
b3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUxpc3RNYXJrZXJEaW1lbnNpb25zKToKKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpob3Jpem9udGFsTG9naWNhbE1hcmdpbik6CihXZWJDb3JlOjpM
YXlvdXRJbnRlZ3JhdGlvbjo6bG9naWNhbEJvcmRlcik6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6bG9naWNhbFBhZGRpbmcpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveEdl
b21ldHJ5VXBkYXRlcjo6dXBkYXRlTGF5b3V0Qm94RGltZW5zaW9ucyk6CihXZWJDb3JlOjpMYXlv
dXRJbnRlZ3JhdGlvbjo6Qm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVJbmxpbmVCb3hEaW1lbnNp
b25zKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hHZW9tZXRyeVVwZGF0ZXI6OnNl
dEdlb21ldHJpZXNGb3JMYXlvdXQpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveEdl
b21ldHJ5VXBkYXRlcjo6c2V0R2VvbWV0cmllc0ZvckludHJpbnNpY1dpZHRoKToKKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUlubGluZUNvbnRl
bnRDb25zdHJhaW50cyk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94R2VvbWV0cnlV
cGRhdGVyOjp1cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KToKKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUJveEdlb21ldHJ5KToKKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpmaXhlZFZhbHVlT3JaZXJvKTogRGVsZXRlZC4KKiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uQm94R2Vv
bWV0cnlVcGRhdGVyLmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGlu
ZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OkxpbmVMYXlvdXQ6OnVwZGF0ZUlubGluZUNvbnRlbnREaW1lbnNpb25zKToKKFdlYkNv
cmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojp1cGRhdGVJbmxpbmVDb250ZW50Q29u
c3RyYWludHMpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHA6CihXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dElubGlu
ZUNvbnRlbnQpOgotLS0KIC4uLnlvdXRJbnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0
LmNwcCB8ICAgMyArLQogLi4uL0xheW91dEludGVncmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmNw
cCAgIHwgMTQxICsrKysrKysrKysrKy0tLS0tLQogLi4uL0xheW91dEludGVncmF0aW9uQm94R2Vv
bWV0cnlVcGRhdGVyLmggICAgIHwgIDE1ICstCiAuLi4vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHAgICAgfCAgIDggKy0KIC4uLi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmggICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHAgIHwgICA1ICstCiA2IGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25z
KCspLCA2MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Gb3Jt
YXR0aW5nQ29udGV4dExheW91dC5jcHAKaW5kZXggOTZiOWVmM2RiMDI5Li43NGMxMTIyMTBkMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91
dC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkZvcm1h
dHRpbmdDb250ZXh0TGF5b3V0LmgiCiAKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvbkJveEdl
b21ldHJ5VXBkYXRlci5oIgorI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyQm94LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDcgKzQ4LDcgQEAgdm9pZCBs
YXlvdXRXaXRoRm9ybWF0dGluZ0NvbnRleHRGb3JCb3goY29uc3QgTGF5b3V0OjpFbGVtZW50Qm94
JiBib3gsIHN0ZDo6b3B0aW8KICAgICAgICAgcmVuZGVyZXIuY2xlYXJPdmVycmlkaW5nTG9naWNh
bFdpZHRoTGVuZ3RoKCk7CiAKICAgICBhdXRvIHVwZGF0ZXIgPSBCb3hHZW9tZXRyeVVwZGF0ZXIg
eyBsYXlvdXRTdGF0ZSB9OwotICAgIHVwZGF0ZXIudXBkYXRlR2VvbWV0cnlBZnRlckxheW91dChi
b3gpOworICAgIHVwZGF0ZXIudXBkYXRlR2VvbWV0cnlBZnRlckxheW91dChib3gsIHdpZHRoQ29u
c3RyYWludC52YWx1ZV9vcihyZW5kZXJlci5jb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9n
aWNhbFdpZHRoKCkpKTsKIH0KIAogTGF5b3V0VW5pdCBmb3JtYXR0aW5nQ29udGV4dFJvb3RMb2dp
Y2FsV2lkdGhGb3JUeXBlKGNvbnN0IExheW91dDo6RWxlbWVudEJveCYgYm94LCBMb2dpY2FsV2lk
dGhUeXBlIGxvZ2ljYWxXaWR0aFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uQm94R2VvbWV0cnlVcGRhdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50
ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuY3BwCmluZGV4IGU2OWQ5NWMzZDVkMC4uNTEyNmRl
Y2U2MjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5s
aW5lL0xheW91dEludGVncmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uQm94R2Vv
bWV0cnlVcGRhdGVyLmNwcApAQCAtNDksMTUgKzQ5LDI0IEBACiAjaW5jbHVkZSAiUmVuZGVyTWF0
aE1MQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJTbGlkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJU
YWJsZS5oIgorI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2VsbC5oIgorI2luY2x1ZGUgIlJlbmRlclRh
YmxlSW5saW5lcy5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNl
IExheW91dEludGVncmF0aW9uIHsKIAotc3RhdGljIExheW91dFVuaXQgZml4ZWRWYWx1ZU9yWmVy
byhjb25zdCBMZW5ndGgmIGxlbmd0aCkKKworc3RhdGljIExheW91dFVuaXQgdXNlZFZhbHVlT3Ja
ZXJvKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWls
YWJsZVdpZHRoKQogewotICAgIHJldHVybiBMYXlvdXRVbml0IHsgbGVuZ3RoLmlzRml4ZWQoKSA/
IGxlbmd0aC52YWx1ZSgpIDogMC5mIH07CisgICAgaWYgKGxlbmd0aC5pc0ZpeGVkKCkpCisgICAg
ICAgIHJldHVybiBMYXlvdXRVbml0IHsgbGVuZ3RoLnZhbHVlKCkgfTsKKworICAgIGlmIChsZW5n
dGguaXNBdXRvKCkgfHwgIWF2YWlsYWJsZVdpZHRoKQorICAgICAgICByZXR1cm4geyB9OworCisg
ICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChsZW5ndGgsICphdmFpbGFibGVXaWR0aCk7
CiB9CiAKIEJveEdlb21ldHJ5VXBkYXRlcjo6Qm94R2VvbWV0cnlVcGRhdGVyKEJveFRyZWUmIGJv
eFRyZWUsIExheW91dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKQpAQCAtNzEsOSArODAsOSBA
QCBCb3hHZW9tZXRyeVVwZGF0ZXI6OkJveEdlb21ldHJ5VXBkYXRlcihMYXlvdXQ6OkxheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSkKIHsKIH0KIAotdm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0
ZUxpc3RNYXJrZXJEaW1lbnNpb25zKGNvbnN0IFJlbmRlckxpc3RNYXJrZXImIGxpc3RNYXJrZXIs
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+IGludHJpbnNpY1dpZHRo
TW9kZSkKK3ZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVMaXN0TWFya2VyRGltZW5zaW9u
cyhjb25zdCBSZW5kZXJMaXN0TWFya2VyJiBsaXN0TWFya2VyLCBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGF2YWlsYWJsZVdpZHRoLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50cmluc2ljV2lk
dGhNb2RlPiBpbnRyaW5zaWNXaWR0aE1vZGUpCiB7Ci0gICAgdXBkYXRlTGF5b3V0Qm94RGltZW5z
aW9ucyhsaXN0TWFya2VyLCBpbnRyaW5zaWNXaWR0aE1vZGUpOworICAgIHVwZGF0ZUxheW91dEJv
eERpbWVuc2lvbnMobGlzdE1hcmtlciwgYXZhaWxhYmxlV2lkdGgsIGludHJpbnNpY1dpZHRoTW9k
ZSk7CiAgICAgaWYgKGludHJpbnNpY1dpZHRoTW9kZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0x
MzMsMjAgKzE0MiwxOSBAQCBzdGF0aWMgaW5saW5lIExheW91dFVuaXQgY29udGVudExvZ2ljYWxI
ZWlnaHRGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJCb3gmIHJlbmRlcgogICAgIHJldHVybiByZW5k
ZXJlci5wYXJlbnQoKS0+c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVuZGVy
ZXIuY29udGVudEhlaWdodCgpIDogcmVuZGVyZXIuY29udGVudFdpZHRoKCk7CiB9CiAKLWVudW0g
Y2xhc3MgVXNlQ29tcHV0ZWRWYWx1ZXMgOiBib29sIHsgTm8sIFllcyB9Owotc3RhdGljIGlubGlu
ZSBMYXlvdXQ6OkJveEdlb21ldHJ5OjpIb3Jpem9udGFsRWRnZXMgaG9yaXpvbnRhbExvZ2ljYWxN
YXJnaW4oY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyLCBib29sIGlzTGVmdFRv
UmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJvb2wgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUsIFVzZUNv
bXB1dGVkVmFsdWVzIHVzZUNvbXB1dGVkVmFsdWVzID0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vLCBi
b29sIHJldGFpbk1hcmdpblN0YXJ0ID0gdHJ1ZSwgYm9vbCByZXRhaW5NYXJnaW5FbmQgPSB0cnVl
KQorc3RhdGljIGlubGluZSBMYXlvdXQ6OkJveEdlb21ldHJ5OjpIb3Jpem9udGFsRWRnZXMgaG9y
aXpvbnRhbExvZ2ljYWxNYXJnaW4oY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVy
LCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVdpZHRoLCBib29sIGlzTGVmdFRv
UmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJvb2wgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUsIGJvb2wg
cmV0YWluTWFyZ2luU3RhcnQgPSB0cnVlLCBib29sIHJldGFpbk1hcmdpbkVuZCA9IHRydWUpCiB7
CiAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci5zdHlsZSgpOwotICAgIGF1dG8gbWFyZ2luTGVm
dCA9IHVzZUNvbXB1dGVkVmFsdWVzID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVy
Lm1hcmdpbkxlZnQoKSA6IGZpeGVkVmFsdWVPclplcm8oc3R5bGUubWFyZ2luTGVmdCgpKTsKLSAg
ICBhdXRvIG1hcmdpblJpZ2h0ID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1
ZXM6Ok5vID8gcmVuZGVyZXIubWFyZ2luUmlnaHQoKSA6IGZpeGVkVmFsdWVPclplcm8oc3R5bGUu
bWFyZ2luUmlnaHQoKSk7CisgICAgYXV0byBtYXJnaW5MZWZ0ID0gdXNlZFZhbHVlT3JaZXJvKHN0
eWxlLm1hcmdpbkxlZnQoKSwgYXZhaWxhYmxlV2lkdGgpOworICAgIGF1dG8gbWFyZ2luUmlnaHQg
PSB1c2VkVmFsdWVPclplcm8oc3R5bGUubWFyZ2luUmlnaHQoKSwgYXZhaWxhYmxlV2lkdGgpOwog
ICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSkgewogICAgICAgICBpZiAoaXNMZWZ0VG9S
aWdodElubGluZURpcmVjdGlvbikKICAgICAgICAgICAgIHJldHVybiB7IHJldGFpbk1hcmdpblN0
YXJ0ID8gbWFyZ2luTGVmdCA6IDBfbHUsIHJldGFpbk1hcmdpbkVuZCA/IG1hcmdpblJpZ2h0IDog
MF9sdSB9OwogICAgICAgICByZXR1cm4geyByZXRhaW5NYXJnaW5TdGFydCA/IG1hcmdpblJpZ2h0
IDogMF9sdSwgcmV0YWluTWFyZ2luRW5kID8gbWFyZ2luTGVmdCA6IDBfbHUgfTsKICAgICB9CiAK
LSAgICBhdXRvIG1hcmdpblRvcCA9IHVzZUNvbXB1dGVkVmFsdWVzID09IFVzZUNvbXB1dGVkVmFs
dWVzOjpObyA/IHJlbmRlcmVyLm1hcmdpblRvcCgpIDogZml4ZWRWYWx1ZU9yWmVybyhzdHlsZS5t
YXJnaW5Ub3AoKSk7Ci0gICAgYXV0byBtYXJnaW5Cb3R0b20gPSB1c2VDb21wdXRlZFZhbHVlcyA9
PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5tYXJnaW5Cb3R0b20oKSA6IGZpeGVk
VmFsdWVPclplcm8oc3R5bGUubWFyZ2luQm90dG9tKCkpOworICAgIGF1dG8gbWFyZ2luVG9wID0g
dXNlZFZhbHVlT3JaZXJvKHN0eWxlLm1hcmdpblRvcCgpLCBhdmFpbGFibGVXaWR0aCk7CisgICAg
YXV0byBtYXJnaW5Cb3R0b20gPSB1c2VkVmFsdWVPclplcm8oc3R5bGUubWFyZ2luQm90dG9tKCks
IGF2YWlsYWJsZVdpZHRoKTsKICAgICBpZiAoaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbikK
ICAgICAgICAgcmV0dXJuIHsgcmV0YWluTWFyZ2luU3RhcnQgPyBtYXJnaW5Ub3AgOiAwX2x1LCBy
ZXRhaW5NYXJnaW5FbmQgPyBtYXJnaW5Cb3R0b20gOiAwX2x1IH07CiAgICAgcmV0dXJuIHsgcmV0
YWluTWFyZ2luU3RhcnQgPyBtYXJnaW5Cb3R0b20gOiAwX2x1LCByZXRhaW5NYXJnaW5FbmQgPyBt
YXJnaW5Ub3AgOiAwX2x1IH07CkBAIC0xNjgsMTMgKzE3Niw0NiBAQCBzdGF0aWMgaW5saW5lIExh
eW91dDo6Qm94R2VvbWV0cnk6OlZlcnRpY2FsRWRnZXMgdmVydGljYWxMb2dpY2FsTWFyZ2luKGNv
bnN0IFJlbgogfQogCiBlbnVtIGNsYXNzIElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgOiBib29s
IHsgTm8sIFllcyB9Owotc3RhdGljIGlubGluZSBMYXlvdXQ6OkJveEdlb21ldHJ5OjpFZGdlcyBs
b2dpY2FsQm9yZGVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlciwgYm9vbCBp
c0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBGbG93RGlyZWN0aW9uIGJsb2NrRmxvd0RpcmVj
dGlvbiwgVXNlQ29tcHV0ZWRWYWx1ZXMgdXNlQ29tcHV0ZWRWYWx1ZXMgPSBVc2VDb21wdXRlZFZh
bHVlczo6Tm8sIElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgaXNQYXJ0T2ZGb3JtYXR0aW5nQ29u
dGV4dCA9IElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6Ok5vLCBib29sIHJldGFpbkJvcmRlclN0
YXJ0ID0gdHJ1ZSwgYm9vbCByZXRhaW5Cb3JkZXJFbmQgPSB0cnVlKQorc3RhdGljIGlubGluZSBM
YXlvdXQ6OkJveEdlb21ldHJ5OjpFZGdlcyBsb2dpY2FsQm9yZGVyKGNvbnN0IFJlbmRlckJveE1v
ZGVsT2JqZWN0JiByZW5kZXJlciwgYm9vbCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBG
bG93RGlyZWN0aW9uIGJsb2NrRmxvd0RpcmVjdGlvbiwgYm9vbCBpc0ludHJpbnNpY1dpZHRoTW9k
ZSwgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dCBpc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0ID0g
SXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6Tm8sIGJvb2wgcmV0YWluQm9yZGVyU3RhcnQgPSB0
cnVlLCBib29sIHJldGFpbkJvcmRlckVuZCA9IHRydWUpCiB7CiAgICAgYXV0byYgc3R5bGUgPSBy
ZW5kZXJlci5zdHlsZSgpOwotICAgIGF1dG8gYm9yZGVyTGVmdCA9IHVzZUNvbXB1dGVkVmFsdWVz
ID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVyLmJvcmRlckxlZnQoKSA6IExheW91
dFVuaXQoc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCkpOwotICAgIGF1dG8gYm9yZGVyUmlnaHQgPSB1
c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5ib3Jk
ZXJSaWdodCgpIDogTGF5b3V0VW5pdChzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCkpOwotICAgIGF1
dG8gYm9yZGVyVG9wID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5v
ID8gcmVuZGVyZXIuYm9yZGVyVG9wKCkgOiBMYXlvdXRVbml0KHN0eWxlLmJvcmRlclRvcFdpZHRo
KCkpOwotICAgIGF1dG8gYm9yZGVyQm90dG9tID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29t
cHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIuYm9yZGVyQm90dG9tKCkgOiBMYXlvdXRVbml0KHN0
eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkpOworICAgIGF1dG8gYm9yZGVyTGVmdCA9IExheW91dFVu
aXQgeyBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSB9OworICAgIGF1dG8gYm9yZGVyUmlnaHQgPSBM
YXlvdXRVbml0IHsgc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpIH07CisgICAgYXV0byBib3JkZXJU
b3AgPSBMYXlvdXRVbml0IHsgc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSB9OworICAgIGF1dG8gYm9y
ZGVyQm90dG9tID0gTGF5b3V0VW5pdCB7IHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkgfTsKKwor
ICAgIGlmICghaXNJbnRyaW5zaWNXaWR0aE1vZGUpIHsKKyAgICAgICAgaWYgKGF1dG8qIHRhYmxl
Q2VsbCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUYWJsZUNlbGw+KHJlbmRlcmVyKTsgdGFibGVD
ZWxsICYmIHRhYmxlQ2VsbC0+dGFibGUoKS0+Y29sbGFwc2VCb3JkZXJzKCkpIHsKKyAgICAgICAg
ICAgIGJvcmRlckxlZnQgPSB0YWJsZUNlbGwtPmJvcmRlckxlZnQoKTsKKyAgICAgICAgICAgIGJv
cmRlclJpZ2h0ID0gdGFibGVDZWxsLT5ib3JkZXJSaWdodCgpOworICAgICAgICAgICAgYm9yZGVy
VG9wID0gdGFibGVDZWxsLT5ib3JkZXJUb3AoKTsKKyAgICAgICAgICAgIGJvcmRlckJvdHRvbSA9
IHRhYmxlQ2VsbC0+Ym9yZGVyQm90dG9tKCk7CisgICAgICAgIH0gZWxzZSBpZiAoYXV0byogdGFi
bGUgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVyVGFibGU+KHJlbmRlcmVyKTsgdGFibGUgJiYgdGFi
bGUtPmNvbGxhcHNlQm9yZGVycygpKSB7CisgICAgICAgICAgICBib3JkZXJMZWZ0ID0gdGFibGUt
PmJvcmRlckxlZnQoKTsKKyAgICAgICAgICAgIGJvcmRlclJpZ2h0ID0gdGFibGUtPmJvcmRlclJp
Z2h0KCk7CisgICAgICAgICAgICBib3JkZXJUb3AgPSB0YWJsZS0+Ym9yZGVyVG9wKCk7CisgICAg
ICAgICAgICBib3JkZXJCb3R0b20gPSB0YWJsZS0+Ym9yZGVyQm90dG9tKCk7CisgICAgICAgIH0g
ZWxzZSBpZiAocmVuZGVyZXIuaXNGaWVsZHNldCgpKSB7CisgICAgICAgICAgICBhdXRvIGFkanVz
dG1lbnQgPSBkb3duY2FzdDxSZW5kZXJCbG9jaz4ocmVuZGVyZXIpLmludHJpbnNpY0JvcmRlckZv
ckZpZWxkc2V0KCk7CisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBhZGp1c3RtZW50IGlz
IGNvbWluZyBmcm9tIF9pbnNpZGVfIHRoZSBmaWVsZHNldCBzbyBpdHMgb3duIGZsb3cgZGlyZWN0
aW9uIGlzIHdoYXQgaXMgcmVsZXZhbnQgaGVyZS4KKyAgICAgICAgICAgIHN3aXRjaCAoc3R5bGUu
YmxvY2tGbG93RGlyZWN0aW9uKCkpIHsKKyAgICAgICAgICAgIGNhc2UgRmxvd0RpcmVjdGlvbjo6
VG9wVG9Cb3R0b206CisgICAgICAgICAgICAgICAgYm9yZGVyVG9wICs9IGFkanVzdG1lbnQ7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsb3dEaXJlY3Rpb246OkJv
dHRvbVRvVG9wOgorICAgICAgICAgICAgICAgIGJvcmRlckJvdHRvbSArPSBhZGp1c3RtZW50Owor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbG93RGlyZWN0aW9uOjpM
ZWZ0VG9SaWdodDoKKyAgICAgICAgICAgICAgICBib3JkZXJMZWZ0ICs9IGFkanVzdG1lbnQ7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZsb3dEaXJlY3Rpb246OlJp
Z2h0VG9MZWZ0OgorICAgICAgICAgICAgICAgIGJvcmRlclJpZ2h0ICs9IGFkanVzdG1lbnQ7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQogCiAgICAgaWYgKGJsb2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpUb3BUb0Jv
dHRvbSB8fCBibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6Qm90dG9tVG9Ub3Ap
IHsKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24pCkBAIC0xOTAsMTgg
KzIzMSwyNiBAQCBzdGF0aWMgaW5saW5lIExheW91dDo6Qm94R2VvbWV0cnk6OkVkZ2VzIGxvZ2lj
YWxCb3JkZXIoY29uc3QgUmVuZGVyQm94TW9kZWxPYmplYwogICAgIHJldHVybiB7IHsgYm9yZGVy
TG9naWNhbExlZnQsIGJvcmRlckxvZ2ljYWxSaWdodCB9LCB7IGJvcmRlckxvZ2ljYWxUb3AsIGJv
cmRlckxvZ2ljYWxCb3R0b20gfSB9OwogfQogCi1zdGF0aWMgaW5saW5lIExheW91dDo6Qm94R2Vv
bWV0cnk6OkVkZ2VzIGxvZ2ljYWxQYWRkaW5nKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiBy
ZW5kZXJlciwgYm9vbCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBGbG93RGlyZWN0aW9u
IGJsb2NrRmxvd0RpcmVjdGlvbiwgVXNlQ29tcHV0ZWRWYWx1ZXMgdXNlQ29tcHV0ZWRWYWx1ZXMg
PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8sIElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgaXNQYXJ0
T2ZGb3JtYXR0aW5nQ29udGV4dCA9IElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6Ok5vLCBib29s
IHJldGFpblBhZGRpbmdTdGFydCA9IHRydWUsIGJvb2wgcmV0YWluUGFkZGluZ0VuZCA9IHRydWUp
CitzdGF0aWMgaW5saW5lIExheW91dDo6Qm94R2VvbWV0cnk6OkVkZ2VzIGxvZ2ljYWxQYWRkaW5n
KGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlciwgc3RkOjpvcHRpb25hbDxMYXlv
dXRVbml0PiBhdmFpbGFibGVXaWR0aCwgYm9vbCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9u
LCBGbG93RGlyZWN0aW9uIGJsb2NrRmxvd0RpcmVjdGlvbiwgYm9vbCBpc0ludHJpbnNpY1dpZHRo
TW9kZSwgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dCBpc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0
ID0gSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6Tm8sIGJvb2wgcmV0YWluUGFkZGluZ1N0YXJ0
ID0gdHJ1ZSwgYm9vbCByZXRhaW5QYWRkaW5nRW5kID0gdHJ1ZSkKIHsKICAgICBhdXRvJiBzdHls
ZSA9IHJlbmRlcmVyLnN0eWxlKCk7Ci0gICAgYXV0byBwYWRkaW5nTGVmdCA9IHVzZUNvbXB1dGVk
VmFsdWVzID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVyLnBhZGRpbmdMZWZ0KCkg
OiBmaXhlZFZhbHVlT3JaZXJvKHN0eWxlLnBhZGRpbmdMZWZ0KCkpOwotICAgIGF1dG8gcGFkZGlu
Z1JpZ2h0ID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8gcmVu
ZGVyZXIucGFkZGluZ1JpZ2h0KCkgOiBmaXhlZFZhbHVlT3JaZXJvKHN0eWxlLnBhZGRpbmdSaWdo
dCgpKTsKLSAgICBhdXRvIHBhZGRpbmdUb3AgPSB1c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21w
dXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5wYWRkaW5nVG9wKCkgOiBmaXhlZFZhbHVlT3JaZXJv
KHN0eWxlLnBhZGRpbmdUb3AoKSk7Ci0gICAgYXV0byBwYWRkaW5nQm90dG9tID0gdXNlQ29tcHV0
ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIucGFkZGluZ0JvdHRv
bSgpIDogZml4ZWRWYWx1ZU9yWmVybyhzdHlsZS5wYWRkaW5nQm90dG9tKCkpOworCisgICAgYXV0
byBwYWRkaW5nTGVmdCA9IHVzZWRWYWx1ZU9yWmVybyhzdHlsZS5wYWRkaW5nTGVmdCgpLCBhdmFp
bGFibGVXaWR0aCk7CisgICAgYXV0byBwYWRkaW5nUmlnaHQgPSB1c2VkVmFsdWVPclplcm8oc3R5
bGUucGFkZGluZ1JpZ2h0KCksIGF2YWlsYWJsZVdpZHRoKTsKKyAgICBhdXRvIHBhZGRpbmdUb3Ag
PSB1c2VkVmFsdWVPclplcm8oc3R5bGUucGFkZGluZ1RvcCgpLCBhdmFpbGFibGVXaWR0aCk7Cisg
ICAgYXV0byBwYWRkaW5nQm90dG9tID0gdXNlZFZhbHVlT3JaZXJvKHN0eWxlLnBhZGRpbmdCb3R0
b20oKSwgYXZhaWxhYmxlV2lkdGgpOworCisgICAgYXV0byBpbnRyaW5zaWNQYWRkaW5nQmVmb3Jl
ID0gTGF5b3V0VW5pdCB7IH07CisgICAgYXV0byBpbnRyaW5zaWNQYWRkaW5nQWZ0ZXIgPSBMYXlv
dXRVbml0IHsgfTsKKyAgICBpZiAoYXV0byogdGFibGVDZWxsID0gZHluYW1pY0Rvd25jYXN0PFJl
bmRlclRhYmxlQ2VsbD4ocmVuZGVyZXIpOyB0YWJsZUNlbGwgJiYgIWlzSW50cmluc2ljV2lkdGhN
b2RlKSB7CisgICAgICAgIGludHJpbnNpY1BhZGRpbmdCZWZvcmUgPSB0YWJsZUNlbGwtPmludHJp
bnNpY1BhZGRpbmdCZWZvcmUoKTsKKyAgICAgICAgaW50cmluc2ljUGFkZGluZ0FmdGVyID0gdGFi
bGVDZWxsLT5pbnRyaW5zaWNQYWRkaW5nQWZ0ZXIoKTsKKyAgICB9CiAKICAgICBpZiAoYmxvY2tG
bG93RGlyZWN0aW9uID09IEZsb3dEaXJlY3Rpb246OlRvcFRvQm90dG9tIHx8IGJsb2NrRmxvd0Rp
cmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpCb3R0b21Ub1RvcCkgewogICAgICAgICBpZiAoaXNM
ZWZ0VG9SaWdodElubGluZURpcmVjdGlvbikKLSAgICAgICAgICAgIHJldHVybiB7IHsgcmV0YWlu
UGFkZGluZ1N0YXJ0ID8gcGFkZGluZ0xlZnQgOiAwX2x1LCByZXRhaW5QYWRkaW5nRW5kID8gcGFk
ZGluZ1JpZ2h0IDogMF9sdSB9LCB7IHBhZGRpbmdUb3AsIHBhZGRpbmdCb3R0b20gfSB9OwotICAg
ICAgICByZXR1cm4geyB7IHJldGFpblBhZGRpbmdTdGFydCA/IHBhZGRpbmdSaWdodCA6IDBfbHUs
IHJldGFpblBhZGRpbmdFbmQgPyBwYWRkaW5nTGVmdCA6IDBfbHUgfSwgeyBwYWRkaW5nVG9wLCBw
YWRkaW5nQm90dG9tIH0gfTsKKyAgICAgICAgICAgIHJldHVybiB7IHsgcmV0YWluUGFkZGluZ1N0
YXJ0ID8gcGFkZGluZ0xlZnQgOiAwX2x1LCByZXRhaW5QYWRkaW5nRW5kID8gcGFkZGluZ1JpZ2h0
IDogMF9sdSB9LCB7IHBhZGRpbmdUb3AgKyBpbnRyaW5zaWNQYWRkaW5nQmVmb3JlLCBwYWRkaW5n
Qm90dG9tICsgaW50cmluc2ljUGFkZGluZ0FmdGVyIH0gfTsKKyAgICAgICAgcmV0dXJuIHsgeyBy
ZXRhaW5QYWRkaW5nU3RhcnQgPyBwYWRkaW5nUmlnaHQgOiAwX2x1LCByZXRhaW5QYWRkaW5nRW5k
ID8gcGFkZGluZ0xlZnQgOiAwX2x1IH0sIHsgcGFkZGluZ1RvcCArIGludHJpbnNpY1BhZGRpbmdC
ZWZvcmUsIHBhZGRpbmdCb3R0b20gKyBpbnRyaW5zaWNQYWRkaW5nQWZ0ZXIgfSB9OwogICAgIH0K
IAogICAgIGF1dG8gcGFkZGluZ0xvZ2ljYWxMZWZ0ID0gcmV0YWluUGFkZGluZ1N0YXJ0ID8gaXNM
ZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiA/IHBhZGRpbmdUb3AgOiBwYWRkaW5nQm90dG9tIDog
MF9sdTsKQEAgLTIwOSw3ICsyNTgsNyBAQCBzdGF0aWMgaW5saW5lIExheW91dDo6Qm94R2VvbWV0
cnk6OkVkZ2VzIGxvZ2ljYWxQYWRkaW5nKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZQogICAgIC8v
IEZvciBib3hlcyBpbnNpZGUgdGhlIGZvcm1hdHRpbmcgY29udGV4dCwgcmlnaHQgcGFkZGluZyAo
Ym9yZGVyKSBhbHdheXMgcG9pbnRzIHVwLCB3aGlsZSB3aGVuIGNvbnZlcnRpbmcgdGhlIGZvcm1h
dHRpbmcgY29udGV4dCByb290J3MgcGFkZGluZyAoYm9yZGVyKSB0aGUgZGlyZWN0aW9uYWxpdHkg
bWF0dGVycy4KICAgICBhdXRvIHBhZGRpbmdMb2dpY2FsVG9wID0gaXNQYXJ0T2ZGb3JtYXR0aW5n
Q29udGV4dCA9PSBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0OjpZZXMgPyBwYWRkaW5nUmlnaHQg
OiBibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6TGVmdFRvUmlnaHQgPyBwYWRk
aW5nTGVmdCA6IHBhZGRpbmdSaWdodDsKICAgICBhdXRvIHBhZGRpbmdMb2dpY2FsQm90dG9tID0g
aXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dCA9PSBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0OjpZ
ZXMgPyBwYWRkaW5nTGVmdCA6IGJsb2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpM
ZWZ0VG9SaWdodCA/IHBhZGRpbmdSaWdodCA6IHBhZGRpbmdMZWZ0OwotICAgIHJldHVybiB7IHsg
cGFkZGluZ0xvZ2ljYWxMZWZ0LCBwYWRkaW5nTG9naWNhbFJpZ2h0IH0sIHsgcGFkZGluZ0xvZ2lj
YWxUb3AsIHBhZGRpbmdMb2dpY2FsQm90dG9tIH0gfTsKKyAgICByZXR1cm4geyB7IHBhZGRpbmdM
b2dpY2FsTGVmdCwgcGFkZGluZ0xvZ2ljYWxSaWdodCB9LCB7IHBhZGRpbmdMb2dpY2FsVG9wICsg
aW50cmluc2ljUGFkZGluZ0JlZm9yZSwgcGFkZGluZ0xvZ2ljYWxCb3R0b20gKyBpbnRyaW5zaWNQ
YWRkaW5nQWZ0ZXIgfSB9OwogfQogCiBzdGF0aWMgaW5saW5lIExheW91dFNpemUgc2Nyb2xsYmFy
TG9naWNhbFNpemUoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlcikKQEAgLTIyMiw3ICsyNzEsNyBA
QCBzdGF0aWMgaW5saW5lIExheW91dFNpemUgc2Nyb2xsYmFyTG9naWNhbFNpemUoY29uc3QgUmVu
ZGVyQm94JiByZW5kZXJlcikKICAgICByZXR1cm4geyBob3Jpem9udGFsU3BhY2VSZXNlcnZlZEZv
clNjcm9sbGJhciwgdmVydGljYWxTcGFjZVJlc2VydmVkRm9yU2Nyb2xsYmFyIH07CiB9CiAKLXZv
aWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKGNvbnN0IFJl
bmRlckJveCYgcmVuZGVyQm94LCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50cmluc2ljV2lkdGhN
b2RlPiBpbnRyaW5zaWNXaWR0aE1vZGUpCit2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRl
TGF5b3V0Qm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlckJveCwgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgc3RkOjpvcHRpb25hbDxMYXlvdXQ6Oklu
dHJpbnNpY1dpZHRoTW9kZT4gaW50cmluc2ljV2lkdGhNb2RlKQogewogICAgIGF1dG8mIGxheW91
dEJveCA9IGNvbnN0X2Nhc3Q8TGF5b3V0OjpFbGVtZW50Qm94Jj4oKnJlbmRlckJveC5sYXlvdXRC
b3goKSk7CiAgICAgYXV0byBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uID0gcmVuZGVyQm94
LnBhcmVudCgpLT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKQEAgLTIzMCw5ICsy
NzksOSBAQCB2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlTGF5b3V0Qm94RGltZW5zaW9u
cyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlckJveCwgcwogICAgIGF1dG8gaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUgPSBibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6VG9wVG9Cb3R0
b20gfHwgYmxvY2tGbG93RGlyZWN0aW9uID09IEZsb3dEaXJlY3Rpb246OkJvdHRvbVRvVG9wOwog
CiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBsYXlvdXRTdGF0ZSgpLmVuc3VyZUdlb21ldHJ5Rm9y
Qm94KGxheW91dEJveCk7Ci0gICAgYXV0byBpbmxpbmVNYXJnaW4gPSBob3Jpem9udGFsTG9naWNh
bE1hcmdpbihyZW5kZXJCb3gsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlLCBpbnRyaW5zaWNXaWR0aE1vZGUgPyBVc2VDb21wdXRlZFZhbHVlczo6
WWVzIDogVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vKTsKLSAgICBhdXRvIGJvcmRlciA9IGxvZ2ljYWxC
b3JkZXIocmVuZGVyQm94LCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dE
aXJlY3Rpb24sIGludHJpbnNpY1dpZHRoTW9kZSA/IFVzZUNvbXB1dGVkVmFsdWVzOjpZZXMgOiBV
c2VDb21wdXRlZFZhbHVlczo6Tm8pOwotICAgIGF1dG8gcGFkZGluZyA9IGxvZ2ljYWxQYWRkaW5n
KHJlbmRlckJveCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0
aW9uLCBpbnRyaW5zaWNXaWR0aE1vZGUgPyBVc2VDb21wdXRlZFZhbHVlczo6WWVzIDogVXNlQ29t
cHV0ZWRWYWx1ZXM6Ok5vKTsKKyAgICBhdXRvIGlubGluZU1hcmdpbiA9IGhvcml6b250YWxMb2dp
Y2FsTWFyZ2luKHJlbmRlckJveCwgYXZhaWxhYmxlV2lkdGgsIGlzTGVmdFRvUmlnaHRJbmxpbmVE
aXJlY3Rpb24sIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKTsKKyAgICBhdXRvIGJvcmRlciA9IGxv
Z2ljYWxCb3JkZXIocmVuZGVyQm94LCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9j
a0Zsb3dEaXJlY3Rpb24sIGludHJpbnNpY1dpZHRoTW9kZS5oYXNfdmFsdWUoKSk7CisgICAgYXV0
byBwYWRkaW5nID0gbG9naWNhbFBhZGRpbmcocmVuZGVyQm94LCBhdmFpbGFibGVXaWR0aCwgaXNM
ZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9uLCBpbnRyaW5zaWNX
aWR0aE1vZGUuaGFzX3ZhbHVlKCkpOwogICAgIGF1dG8gc2Nyb2xsYmFyU2l6ZSA9IHNjcm9sbGJh
ckxvZ2ljYWxTaXplKHJlbmRlckJveCk7CiAKICAgICBpZiAoaW50cmluc2ljV2lkdGhNb2RlKSB7
CkBAIC0zMTAsNyArMzU5LDcgQEAgdm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUxpbmVC
cmVha0JveERpbWVuc2lvbnMoY29uc3QgUmVuZGVyTGluZUJyZWFrJiBsaW4KICAgICAgICAgYm94
R2VvbWV0cnkuc2V0Q29udGVudEJveEhlaWdodCh7IH0pOwogfQogCi12b2lkIEJveEdlb21ldHJ5
VXBkYXRlcjo6dXBkYXRlSW5saW5lQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJJbmxpbmUmIHJl
bmRlcklubGluZSwgc3RkOjpvcHRpb25hbDxMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gaW50
cmluc2ljV2lkdGhNb2RlKQordm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUlubGluZUJv
eERpbWVuc2lvbnMoY29uc3QgUmVuZGVySW5saW5lJiByZW5kZXJJbmxpbmUsIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRy
aW5zaWNXaWR0aE1vZGU+IGludHJpbnNpY1dpZHRoTW9kZSkKIHsKICAgICBhdXRvJiBib3hHZW9t
ZXRyeSA9IGxheW91dFN0YXRlKCkuZW5zdXJlR2VvbWV0cnlGb3JCb3goKnJlbmRlcklubGluZS5s
YXlvdXRCb3goKSk7CiAKQEAgLTMyMiw5ICszNzEsOSBAQCB2b2lkIEJveEdlb21ldHJ5VXBkYXRl
cjo6dXBkYXRlSW5saW5lQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJJbmxpbmUmIHJlbmRlcklu
bAogICAgIGF1dG8gYmxvY2tGbG93RGlyZWN0aW9uID0gd3JpdGluZ01vZGVUb0Jsb2NrRmxvd0Rp
cmVjdGlvbihyZW5kZXJJbmxpbmUuc3R5bGUoKS53cml0aW5nTW9kZSgpKTsKICAgICBhdXRvIGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlID0gYmxvY2tGbG93RGlyZWN0aW9uID09IEZsb3dEaXJlY3Rp
b246OlRvcFRvQm90dG9tIHx8IGJsb2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpC
b3R0b21Ub1RvcDsKIAotICAgIGF1dG8gaW5saW5lTWFyZ2luID0gaG9yaXpvbnRhbExvZ2ljYWxN
YXJnaW4ocmVuZGVySW5saW5lLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBpc0hvcml6
b250YWxXcml0aW5nTW9kZSwgaW50cmluc2ljV2lkdGhNb2RlID8gVXNlQ29tcHV0ZWRWYWx1ZXM6
OlllcyA6IFVzZUNvbXB1dGVkVmFsdWVzOjpObywgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRp
bmdBbmRNYXJnaW5TdGFydCwgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRNYXJnaW5F
bmQpOwotICAgIGF1dG8gYm9yZGVyID0gbG9naWNhbEJvcmRlcihyZW5kZXJJbmxpbmUsIGlzTGVm
dFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlvbiwgaW50cmluc2ljV2lk
dGhNb2RlID8gVXNlQ29tcHV0ZWRWYWx1ZXM6OlllcyA6IFVzZUNvbXB1dGVkVmFsdWVzOjpObywg
SXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6WWVzLCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFk
ZGluZ0FuZE1hcmdpblN0YXJ0LCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGluZ0FuZE1hcmdp
bkVuZCk7Ci0gICAgYXV0byBwYWRkaW5nID0gbG9naWNhbFBhZGRpbmcocmVuZGVySW5saW5lLCBp
c0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24sIGludHJpbnNp
Y1dpZHRoTW9kZSA/IFVzZUNvbXB1dGVkVmFsdWVzOjpZZXMgOiBVc2VDb21wdXRlZFZhbHVlczo6
Tm8sIElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6OlllcywgIXNob3VsZE5vdFJldGFpbkJvcmRl
clBhZGRpbmdBbmRNYXJnaW5TdGFydCwgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRN
YXJnaW5FbmQpOworICAgIGF1dG8gaW5saW5lTWFyZ2luID0gaG9yaXpvbnRhbExvZ2ljYWxNYXJn
aW4ocmVuZGVySW5saW5lLCBhdmFpbGFibGVXaWR0aCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVj
dGlvbiwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRk
aW5nQW5kTWFyZ2luU3RhcnQsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5kTWFyZ2lu
RW5kKTsKKyAgICBhdXRvIGJvcmRlciA9IGxvZ2ljYWxCb3JkZXIocmVuZGVySW5saW5lLCBpc0xl
ZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24sIGludHJpbnNpY1dp
ZHRoTW9kZS5oYXNfdmFsdWUoKSwgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6WWVzLCAhc2hv
dWxkTm90UmV0YWluQm9yZGVyUGFkZGluZ0FuZE1hcmdpblN0YXJ0LCAhc2hvdWxkTm90UmV0YWlu
Qm9yZGVyUGFkZGluZ0FuZE1hcmdpbkVuZCk7CisgICAgYXV0byBwYWRkaW5nID0gbG9naWNhbFBh
ZGRpbmcocmVuZGVySW5saW5lLCBhdmFpbGFibGVXaWR0aCwgaXNMZWZ0VG9SaWdodElubGluZURp
cmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9uLCBpbnRyaW5zaWNXaWR0aE1vZGUuaGFzX3ZhbHVl
KCksIElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6OlllcywgIXNob3VsZE5vdFJldGFpbkJvcmRl
clBhZGRpbmdBbmRNYXJnaW5TdGFydCwgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRN
YXJnaW5FbmQpOwogCiAgICAgaWYgKGludHJpbnNpY1dpZHRoTW9kZSkgewogICAgICAgICBib3hH
ZW9tZXRyeS5zZXRIb3Jpem9udGFsTWFyZ2luKGlubGluZU1hcmdpbik7CkBAIC0zMzksNyArMzg4
LDcgQEAgdm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMo
Y29uc3QgUmVuZGVySW5saW5lJiByZW5kZXJJbmwKICAgICBib3hHZW9tZXRyeS5zZXRQYWRkaW5n
KHBhZGRpbmcpOwogfQogCi12b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6c2V0R2VvbWV0cmllc0Zv
ckxheW91dCgpCit2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6c2V0R2VvbWV0cmllc0ZvckxheW91
dChMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCkKIHsKICAgICBmb3IgKGF1dG8gd2Fs
a2VyID0gSW5saW5lV2Fsa2VyKGRvd25jYXN0PFJlbmRlckJsb2NrRmxvdz4oYm94VHJlZSgpLnJv
b3RSZW5kZXJlcigpKSk7ICF3YWxrZXIuYXRFbmQoKTsgd2Fsa2VyLmFkdmFuY2UoKSkgewogICAg
ICAgICBhdXRvJiByZW5kZXJlciA9ICp3YWxrZXIuY3VycmVudCgpOwpAQCAtMzUwLDcgKzM5OSw3
IEBAIHZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjpzZXRHZW9tZXRyaWVzRm9yTGF5b3V0KCkKICAg
ICAgICAgaWYgKHJlbmRlcmVyLmlzRmxvYXRpbmcoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIHVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQoZG93bmNhc3Q8UmVuZGVyRWxlbWVu
dD4ocmVuZGVyZXIpKTsKKyAgICAgICAgdXBkYXRlQm94R2VvbWV0cnkoZG93bmNhc3Q8UmVuZGVy
RWxlbWVudD4ocmVuZGVyZXIpLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAgIH0KIH0KIApA
QCAtMzY3LDMwICs0MTYsMzAgQEAgdm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnNldEdlb21ldHJp
ZXNGb3JJbnRyaW5zaWNXaWR0aChMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW8KICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChhdXRvKiByZW5kZXJJbmxpbmUgPSBk
eW5hbWljRG93bmNhc3Q8UmVuZGVySW5saW5lPihyZW5kZXJlcikpIHsKLSAgICAgICAgICAgIHVw
ZGF0ZUlubGluZUJveERpbWVuc2lvbnMoKnJlbmRlcklubGluZSwgaW50cmluc2ljV2lkdGhNb2Rl
KTsKKyAgICAgICAgICAgIHVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMoKnJlbmRlcklubGluZSwg
eyB9LCBpbnRyaW5zaWNXaWR0aE1vZGUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKGF1dG8qIHJlbmRlckxpc3RNYXJrZXIgPSBkeW5hbWljRG93bmNhc3Q8
UmVuZGVyTGlzdE1hcmtlcj4ocmVuZGVyZXIpKSB7Ci0gICAgICAgICAgICB1cGRhdGVMaXN0TWFy
a2VyRGltZW5zaW9ucygqcmVuZGVyTGlzdE1hcmtlciwgaW50cmluc2ljV2lkdGhNb2RlKTsKKyAg
ICAgICAgICAgIHVwZGF0ZUxpc3RNYXJrZXJEaW1lbnNpb25zKCpyZW5kZXJMaXN0TWFya2VyLCB7
IH0sIGludHJpbnNpY1dpZHRoTW9kZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogICAgICAgICBpZiAoYXV0byogcmVuZGVyQm94ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJv
eD4ocmVuZGVyZXIpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGZs
ZXhpbmcgYm94ZXMuCiAgICAgICAgICAgICBBU1NFUlQocmVuZGVyQm94LT5zdHlsZSgpLmxvZ2lj
YWxXaWR0aCgpLmlzRml4ZWQoKSk7Ci0gICAgICAgICAgICB1cGRhdGVMYXlvdXRCb3hEaW1lbnNp
b25zKCpyZW5kZXJCb3gsIGludHJpbnNpY1dpZHRoTW9kZSk7CisgICAgICAgICAgICB1cGRhdGVM
YXlvdXRCb3hEaW1lbnNpb25zKCpyZW5kZXJCb3gsIHsgfSwgaW50cmluc2ljV2lkdGhNb2RlKTsK
ICAgICAgICAgfQogICAgIH0KIH0KIAotTGF5b3V0OjpDb25zdHJhaW50c0ZvcklubGluZUNvbnRl
bnQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMoKQor
TGF5b3V0OjpDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQgQm94R2VvbWV0cnlVcGRhdGVyOjp1
cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMoTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCkK
IHsKICAgICBhdXRvJiByb290UmVuZGVyZXIgPSBib3hUcmVlKCkucm9vdFJlbmRlcmVyKCk7CiAg
ICAgYXV0byBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uID0gcm9vdFJlbmRlcmVyLnN0eWxl
KCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwogICAgIGF1dG8gd3JpdGluZ01vZGUgPSByb290
UmVuZGVyZXIuc3R5bGUoKS53cml0aW5nTW9kZSgpOwogICAgIGF1dG8gYmxvY2tGbG93RGlyZWN0
aW9uID0gd3JpdGluZ01vZGVUb0Jsb2NrRmxvd0RpcmVjdGlvbih3cml0aW5nTW9kZSk7CiAKLSAg
ICBhdXRvIHBhZGRpbmcgPSBsb2dpY2FsUGFkZGluZyhyb290UmVuZGVyZXIsIGlzTGVmdFRvUmln
aHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlvbiwgVXNlQ29tcHV0ZWRWYWx1ZXM6
Ok5vLCBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0OjpObyk7Ci0gICAgYXV0byBib3JkZXIgPSBs
b2dpY2FsQm9yZGVyKHJvb3RSZW5kZXJlciwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwg
YmxvY2tGbG93RGlyZWN0aW9uLCBVc2VDb21wdXRlZFZhbHVlczo6Tm8sIElzUGFydE9mRm9ybWF0
dGluZ0NvbnRleHQ6Ok5vKTsKKyAgICBhdXRvIHBhZGRpbmcgPSBsb2dpY2FsUGFkZGluZyhyb290
UmVuZGVyZXIsIGF2YWlsYWJsZVdpZHRoLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBi
bG9ja0Zsb3dEaXJlY3Rpb24sIGZhbHNlLCBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0OjpObyk7
CisgICAgYXV0byBib3JkZXIgPSBsb2dpY2FsQm9yZGVyKHJvb3RSZW5kZXJlciwgaXNMZWZ0VG9S
aWdodElubGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9uLCBmYWxzZSwgSXNQYXJ0T2ZG
b3JtYXR0aW5nQ29udGV4dDo6Tm8pOwogICAgIGF1dG8gc2Nyb2xsYmFyU2l6ZSA9IHNjcm9sbGJh
ckxvZ2ljYWxTaXplKHJvb3RSZW5kZXJlcik7CiAgICAgYXV0byBzaG91bGRQbGFjZVZlcnRpY2Fs
U2Nyb2xsYmFyT25MZWZ0ID0gcm9vdFJlbmRlcmVyLnNob3VsZFBsYWNlVmVydGljYWxTY3JvbGxi
YXJPbkxlZnQoKTsKIApAQCAtNDA5LDcgKzQ1OCw3IEBAIExheW91dDo6Q29uc3RyYWludHNGb3JJ
bmxpbmVDb250ZW50IEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlSW5saW5lQ29udGVudENvbnN0
CiAgICAgICAgIHJvb3RHZW9tZXRyeS5zZXRCb3JkZXIoYm9yZGVyKTsKICAgICAgICAgcm9vdEdl
b21ldHJ5LnNldEhvcml6b250YWxTcGFjZUZvclNjcm9sbGJhcihzY3JvbGxiYXJTaXplLndpZHRo
KCkpOwogICAgICAgICByb290R2VvbWV0cnkuc2V0VmVydGljYWxTcGFjZUZvclNjcm9sbGJhcihz
Y3JvbGxiYXJTaXplLmhlaWdodCgpKTsKLSAgICAgICAgcm9vdEdlb21ldHJ5LnNldEhvcml6b250
YWxNYXJnaW4oaG9yaXpvbnRhbExvZ2ljYWxNYXJnaW4ocm9vdFJlbmRlcmVyLCBpc0xlZnRUb1Jp
Z2h0SW5saW5lRGlyZWN0aW9uLCBXZWJDb3JlOjppc0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0
aW5nTW9kZSksIFVzZUNvbXB1dGVkVmFsdWVzOjpObykpOworICAgICAgICByb290R2VvbWV0cnku
c2V0SG9yaXpvbnRhbE1hcmdpbihob3Jpem9udGFsTG9naWNhbE1hcmdpbihyb290UmVuZGVyZXIs
IGF2YWlsYWJsZVdpZHRoLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBXZWJDb3JlOjpp
c0hvcml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkpKTsKICAgICAgICAgcm9vdEdlb21l
dHJ5LnNldFZlcnRpY2FsTWFyZ2luKHZlcnRpY2FsTG9naWNhbE1hcmdpbihyb290UmVuZGVyZXIs
IGJsb2NrRmxvd0RpcmVjdGlvbikpOwogICAgIH07CiAgICAgY3JlYXRlUm9vdEdlb21ldHJ5SWZO
ZWVkZWQoKTsKQEAgLTQxNywyNCArNDY2LDI0IEBAIExheW91dDo6Q29uc3RyYWludHNGb3JJbmxp
bmVDb250ZW50IEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlSW5saW5lQ29udGVudENvbnN0CiAg
ICAgcmV0dXJuIHsgeyBob3Jpem9udGFsQ29uc3RyYWludHMsIGNvbnRlbnRCb3hUb3AgfSwgdmlz
dWFsTGVmdCB9OwogfQogCi12b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlR2VvbWV0cnlB
ZnRlckxheW91dChjb25zdCBMYXlvdXQ6OkVsZW1lbnRCb3gmIGJveCkKK3ZvaWQgQm94R2VvbWV0
cnlVcGRhdGVyOjp1cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KGNvbnN0IExheW91dDo6RWxlbWVu
dEJveCYgYm94LCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKQogewotICAgIHVwZGF0ZUdlb21l
dHJ5QWZ0ZXJMYXlvdXQoKmR5bmFtaWNEb3duY2FzdDxSZW5kZXJCb3g+KGJveC5yZW5kZXJlckZv
ckludGVncmF0aW9uKCkpKTsKKyAgICB1cGRhdGVCb3hHZW9tZXRyeSgqZHluYW1pY0Rvd25jYXN0
PFJlbmRlckJveD4oYm94LnJlbmRlcmVyRm9ySW50ZWdyYXRpb24oKSksIGF2YWlsYWJsZVdpZHRo
KTsKIH0KIAotdm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlv
dXQoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCit2b2lkIEJveEdlb21ldHJ5VXBkYXRl
cjo6dXBkYXRlQm94R2VvbWV0cnkoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIExheW91
dFVuaXQgYXZhaWxhYmxlV2lkdGgpCiB7CiAgICAgaWYgKGlzPFJlbmRlclJlcGxhY2VkPihyZW5k
ZXJlcikgfHwgaXM8UmVuZGVyVGFibGU+KHJlbmRlcmVyKSB8fCBpczxSZW5kZXJMaXN0SXRlbT4o
cmVuZGVyZXIpIHx8IGlzPFJlbmRlckJsb2NrPihyZW5kZXJlcikgfHwgaXM8UmVuZGVyRnJhbWVT
ZXQ+KHJlbmRlcmVyKSkKLSAgICAgICAgdXBkYXRlTGF5b3V0Qm94RGltZW5zaW9ucyhkb3duY2Fz
dDxSZW5kZXJCb3g+KHJlbmRlcmVyKSk7CisgICAgICAgIHVwZGF0ZUxheW91dEJveERpbWVuc2lv
bnMoZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlciksIGF2YWlsYWJsZVdpZHRoKTsKIAogICAg
IGlmIChhdXRvKiByZW5kZXJMaXN0TWFya2VyID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckxpc3RN
YXJrZXI+KHJlbmRlcmVyKSkKLSAgICAgICAgdXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMoKnJl
bmRlckxpc3RNYXJrZXIpOworICAgICAgICB1cGRhdGVMaXN0TWFya2VyRGltZW5zaW9ucygqcmVu
ZGVyTGlzdE1hcmtlciwgYXZhaWxhYmxlV2lkdGgpOwogCiAgICAgaWYgKGF1dG8qIHJlbmRlckxp
bmVCcmVhayA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJMaW5lQnJlYWs+KHJlbmRlcmVyKSkKICAg
ICAgICAgdXBkYXRlTGluZUJyZWFrQm94RGltZW5zaW9ucygqcmVuZGVyTGluZUJyZWFrKTsKIAog
ICAgIGlmIChhdXRvKiByZW5kZXJJbmxpbmUgPSBkeW5hbWljRG93bmNhc3Q8UmVuZGVySW5saW5l
PihyZW5kZXJlcikpCi0gICAgICAgIHVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMoKnJlbmRlcklu
bGluZSk7CisgICAgICAgIHVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMoKnJlbmRlcklubGluZSwg
YXZhaWxhYmxlV2lkdGgpOwogfQogCiBjb25zdCBMYXlvdXQ6OkVsZW1lbnRCb3gmIEJveEdlb21l
dHJ5VXBkYXRlcjo6cm9vdExheW91dEJveCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uQm94R2VvbWV0
cnlVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xh
eW91dEludGVncmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmgKaW5kZXggZjA5MjUzZGE3NjVmLi4z
NWM1YmQ5MDE4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uQm94
R2VvbWV0cnlVcGRhdGVyLmgKQEAgLTQ3LDE5ICs0NywyMCBAQCBwdWJsaWM6CiAgICAgQm94R2Vv
bWV0cnlVcGRhdGVyKEJveFRyZWUmLCBMYXlvdXQ6OkxheW91dFN0YXRlJik7CiAgICAgQm94R2Vv
bWV0cnlVcGRhdGVyKExheW91dDo6TGF5b3V0U3RhdGUmKTsKIAotICAgIHZvaWQgc2V0R2VvbWV0
cmllc0ZvckxheW91dCgpOworICAgIHZvaWQgc2V0R2VvbWV0cmllc0ZvckxheW91dChMYXlvdXRV
bml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgdm9pZCBzZXRHZW9tZXRyaWVzRm9ySW50
cmluc2ljV2lkdGgoTGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGUpOwotICAgIHZvaWQgdXBkYXRl
R2VvbWV0cnlBZnRlckxheW91dChjb25zdCBMYXlvdXQ6OkVsZW1lbnRCb3gmKTsKKyAgICB2b2lk
IHVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQoY29uc3QgTGF5b3V0OjpFbGVtZW50Qm94JiwgTGF5
b3V0VW5pdCBhdmFpbGFibGVXaWR0aCk7CiAKLSAgICBMYXlvdXQ6OkNvbnN0cmFpbnRzRm9ySW5s
aW5lQ29udGVudCB1cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMoKTsKKyAgICBMYXlvdXQ6
OkNvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCB1cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWlu
dHMoTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCk7CiAgICAgSGFzaE1hcDxjb25zdCBMYXlvdXQ6
OkVsZW1lbnRCb3gqLCBMYXlvdXRVbml0PiB0YWtlTmVzdGVkTGlzdE1hcmtlck9mZnNldHMoKSB7
IHJldHVybiBXVEZNb3ZlKG1fbmVzdGVkTGlzdE1hcmtlck9mZnNldHMpOyB9CiAKIHByaXZhdGU6
Ci0gICAgdm9pZCB1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKGNvbnN0IFJlbmRlckJveCYsIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+ID0gc3RkOjpudWxsb3B0KTsK
KyAgICB2b2lkIHVwZGF0ZUJveEdlb21ldHJ5KGNvbnN0IFJlbmRlckVsZW1lbnQmLCBMYXlvdXRV
bml0IGF2YWlsYWJsZVdpZHRoKTsKKworICAgIHZvaWQgdXBkYXRlTGF5b3V0Qm94RGltZW5zaW9u
cyhjb25zdCBSZW5kZXJCb3gmLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVdp
ZHRoLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50cmluc2ljV2lkdGhNb2RlPiA9IHN0ZDo6bnVs
bG9wdCk7CiAgICAgdm9pZCB1cGRhdGVMaW5lQnJlYWtCb3hEaW1lbnNpb25zKGNvbnN0IFJlbmRl
ckxpbmVCcmVhayYpOwotICAgIHZvaWQgdXBkYXRlSW5saW5lQm94RGltZW5zaW9ucyhjb25zdCBS
ZW5kZXJJbmxpbmUmLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50cmluc2ljV2lkdGhNb2RlPiA9
IHN0ZDo6bnVsbG9wdCk7Ci0gICAgdm9pZCB1cGRhdGVMaXN0TWFya2VyRGltZW5zaW9ucyhjb25z
dCBSZW5kZXJMaXN0TWFya2VyJiwgc3RkOjpvcHRpb25hbDxMYXlvdXQ6OkludHJpbnNpY1dpZHRo
TW9kZT4gPSBzdGQ6Om51bGxvcHQpOwotICAgIHZvaWQgdXBkYXRlR2VvbWV0cnlBZnRlckxheW91
dChjb25zdCBSZW5kZXJFbGVtZW50Jik7CisgICAgdm9pZCB1cGRhdGVJbmxpbmVCb3hEaW1lbnNp
b25zKGNvbnN0IFJlbmRlcklubGluZSYsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxh
YmxlV2lkdGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+ID0gc3Rk
OjpudWxsb3B0KTsKKyAgICB2b2lkIHVwZGF0ZUxpc3RNYXJrZXJEaW1lbnNpb25zKGNvbnN0IFJl
bmRlckxpc3RNYXJrZXImLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVdpZHRo
LCBzdGQ6Om9wdGlvbmFsPExheW91dDo6SW50cmluc2ljV2lkdGhNb2RlPiA9IHN0ZDo6bnVsbG9w
dCk7CiAKICAgICBCb3hUcmVlJiBib3hUcmVlKCkgeyByZXR1cm4gKm1fYm94VHJlZTsgfQogICAg
IGNvbnN0IEJveFRyZWUmIGJveFRyZWUoKSBjb25zdCB7IHJldHVybiAqbV9ib3hUcmVlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91
dEludGVncmF0aW9uTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggMTFiNDYy
MjMxYzZhLi4xYmUwM2VmZDVjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHAKQEAgLTI0MSw5ICsyNDEsOSBAQCBib29sIExpbmVMYXlvdXQ6OnNob3Vs
ZEludmFsaWRhdGVMaW5lTGF5b3V0UGF0aEFmdGVyVHJlZU11dGF0aW9uKGNvbnN0IFJlbmRlckJs
bwogICAgIHJldHVybiBzaG91bGRJbnZhbGlkYXRlTGluZUxheW91dFBhdGhBZnRlckNoYW5nZUZv
cihwYXJlbnQsIHJlbmRlcmVyLCBsaW5lTGF5b3V0LCBpc1JlbW92YWwgPyBUeXBlT2ZDaGFuZ2VG
b3JJbnZhbGlkYXRpb246Ok5vZGVSZW1vdmFsIDogVHlwZU9mQ2hhbmdlRm9ySW52YWxpZGF0aW9u
OjpOb2RlSW5zZXJ0aW9uKTsKIH0KIAotdm9pZCBMaW5lTGF5b3V0Ojp1cGRhdGVJbmxpbmVDb250
ZW50RGltZW5zaW9ucygpCit2b2lkIExpbmVMYXlvdXQ6OnVwZGF0ZUlubGluZUNvbnRlbnREaW1l
bnNpb25zKExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoKQogewotICAgIG1fYm94R2Vv
bWV0cnlVcGRhdGVyLnNldEdlb21ldHJpZXNGb3JMYXlvdXQoKTsKKyAgICBtX2JveEdlb21ldHJ5
VXBkYXRlci5zZXRHZW9tZXRyaWVzRm9yTGF5b3V0KGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiB9
CiAKIHZvaWQgTGluZUxheW91dDo6dXBkYXRlU3R5bGUoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5k
ZXJlcikKQEAgLTU3Miw5ICs1NzIsOSBAQCB2b2lkIExpbmVMYXlvdXQ6OnVwZGF0ZVJlbmRlclRy
ZWVQb3NpdGlvbnMoY29uc3QgVmVjdG9yPExpbmVBZGp1c3RtZW50PiYgbGluZUFkagogICAgIH0K
IH0KIAotdm9pZCBMaW5lTGF5b3V0Ojp1cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMoKQor
dm9pZCBMaW5lTGF5b3V0Ojp1cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMoTGF5b3V0VW5p
dCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpCiB7Ci0gICAgbV9pbmxpbmVDb250ZW50Q29uc3RyYWlu
dHMgPSBtX2JveEdlb21ldHJ5VXBkYXRlci51cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMo
KTsKKyAgICBtX2lubGluZUNvbnRlbnRDb25zdHJhaW50cyA9IG1fYm94R2VvbWV0cnlVcGRhdGVy
LnVwZGF0ZUlubGluZUNvbnRlbnRDb25zdHJhaW50cyhhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwog
fQogCiB2b2lkIExpbmVMYXlvdXQ6OnByZXBhcmVQbGFjZWRGbG9hdHMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlv
bkxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUv
TGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKaW5kZXggNTA5YWI5Mjg4MDI3Li40YTJjZDEy
YzJlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxp
bmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaApAQCAt
NzcsOCArNzcsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkSW52YWxpZGF0ZUxp
bmVMYXlvdXRQYXRoQWZ0ZXJDb250ZW50Q2hhbmdlKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgcGFy
ZW50LCBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyV2l0aE5ld0NvbnRlbnQsIGNvbnN0IExp
bmVMYXlvdXQmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRJbnZhbGlkYXRlTGluZUxheW91dFBh
dGhBZnRlclRyZWVNdXRhdGlvbihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIHBhcmVudCwgY29uc3Qg
UmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGluZUxheW91dCYsIGJvb2wgaXNSZW1vdmFs
KTsKIAotICAgIHZvaWQgdXBkYXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKCk7Ci0gICAgdm9p
ZCB1cGRhdGVJbmxpbmVDb250ZW50RGltZW5zaW9ucygpOworICAgIHZvaWQgdXBkYXRlSW5saW5l
Q29udGVudENvbnN0cmFpbnRzKExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKKyAg
ICB2b2lkIHVwZGF0ZUlubGluZUNvbnRlbnREaW1lbnNpb25zKExheW91dFVuaXQgYXZhaWxhYmxl
TG9naWNhbFdpZHRoKTsKICAgICB2b2lkIHVwZGF0ZU92ZXJmbG93KCk7CiAgICAgc3RhdGljIHZv
aWQgdXBkYXRlU3R5bGUoY29uc3QgUmVuZGVyT2JqZWN0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggZDJhODViY2RiNTM2Li4yYzk3ZjVl
ODQ2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3Bw
CkBAIC0zODc5LDggKzM4NzksOSBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5l
Q29udGVudChib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQmIHJlcAogCiAgICAgYXV0
byYgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0ID0gKnRoaXMtPmlubGluZUxheW91
dCgpOwogCi0gICAgbGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRMaW5lTGF5b3V0LnVwZGF0ZUlubGlu
ZUNvbnRlbnRDb25zdHJhaW50cygpOwotICAgIGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxh
eW91dC51cGRhdGVJbmxpbmVDb250ZW50RGltZW5zaW9ucygpOworICAgIEFTU0VSVChjb250YWlu
aW5nQmxvY2soKSB8fCBpczxSZW5kZXJWaWV3PigqdGhpcykpOworICAgIGxheW91dEZvcm1hdHRp
bmdDb250ZXh0TGluZUxheW91dC51cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMoY29udGFp
bmluZ0Jsb2NrKCkgPyBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCkg
OiBMYXlvdXRVbml0KCkpOworICAgIGxheW91dEZvcm1hdHRpbmdDb250ZXh0TGluZUxheW91dC51
cGRhdGVJbmxpbmVDb250ZW50RGltZW5zaW9ucyhhdmFpbGFibGVMb2dpY2FsV2lkdGgoKSk7CiAK
ICAgICBhdXRvIGNvbnRlbnRCb3hUb3AgPSBib3JkZXJBbmRQYWRkaW5nQmVmb3JlKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>472631</attachid>
            <date>2024-09-22 08:57:16 -0700</date>
            <delta_ts>2024-09-23 06:55:14 -0700</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-280039-20240922085715.patch</filename>
            <type>text/plain</type>
            <size>34633</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAyNTBiNjg2MmYxYzM0NTk3NWJiOTg3NmVjMGRlNGU3ZWJkNTU4NWIzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFNhdCwgMjEgU2VwIDIwMjQgMjA6MjM6NDQgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbTEZDXVtJ
bnRlZ3JhdGlvbl0gQWx3YXlzIHJlc29sdmUgbWFyZ2luL3BhZGRpbmcgdmFsdWVzCiAoQm94R2Vv
bWV0cnlVcGRhdGVyKSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjgw
MDM5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRoaXMgaXMgaW4gcHJlcGFyYXRpb24g
Zm9yIHVzaW5nIEJveEdlb21ldHJ5VXBkYXRlciBmcm9tIEZGQyBhbmQgYWxzbyBtb3ZpbmcgbW9y
ZQpsb2dpYyBmcm9tIHJlbmRlciB0cmVlIHRvIExGQy4KCldpdGggdGhlIGV4Y2VwdGlvbiBvZiBz
b21lIHRhYmxlL2NlbGwvZmllbGRzZXQgc3BlY2lhbCBkZWNvcmF0aW9uIGhhbmRsaW5nLCB3ZSBz
aG91bGQgYmUgYWJsZSB0bwpjb21wdXRlIG1hcmdpbiwgYm9yZGVyIGFuZCBwYWRkaW5nIHZhbHVl
cyB3aXRob3V0IGNhbGxpbmcgbGF5b3V0IG9uIHRoZSByZW5kZXJlciBpdHNlbGYuCih3aGljaCB3
ZSBhbHJlYWR5IHNraXAgZm9yIHRoZSBpbnRyaW5zaWMgd2lkdGggY29tcHV0YXRpb24gY29kZXBh
dGgpLgoKVGhpcyB3aWxsIGVuYWJsZSB1cyB0byB1c2UgbGVzcyBhbmQgbGVzcyByZW5kZXJlciBs
YXlvdXQgbG9naWMgdG8gdGhlIHBvaW50IHdoZXJlIHdlCm9ubHkgbmVlZCB0byBjYWxsIGludG8g
YSByZW5kZXIgbGF5b3V0IHdoZW4gaXQgaXMgYSBmb3JtYXR0aW5nIGNvbnRleHQgcm9vdCAodG8g
aW5pdGlhdGUgbGF5b3V0IG9uIGl0cyBkZXNjZW5kYW50cykuCgpUaGlzIGNoYW5nZSBhbHNvIGVu
c3VyZXMgdGhhdCBCb3hHZW9tZXRyeSBkb2VzIG5vdCBob2xkIGFueSBzdGFsZSB2YWx1ZXMgZXZl
biB0ZW1wb3JhcmlseSBmcm9tIHN0YXJ0aW5nIHJ1bm5pbmcgSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OmxheW91dAp1bnRpbCBjYWxsaW5nIGxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4dEZvckJv
eCBvbiBlYWNoIChub24taW5saW5lIGJveCkgaW5saW5lIGxldmVsIGJveGVzLgoKLXNwZWNpYWwg
Y2FzZSB0YWJsZSBjZWxsJ3MgImludHJpbnNpYyBwYWRkaW5nIiB2YWx1ZXMgYW5kIGNvbGxhcHNl
ZCBib3JkZXJzLgotYWxzbyBmaWVsZHNldCBib3JkZXIgd2hpY2ggaXMgcmVhbGx5IHVuZm9ydHVu
YXRlLgoKRXZlbnR1YWxseSBhbGwgdGhlc2UgbG9naWMgd2lsbCBnZXQgbW92ZWQgb3ZlciB0byB1
cGRhdGVyLgoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25Gb3JtYXR0aW5nQ29udGV4dExheW91dC5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6bGF5b3V0V2l0aEZvcm1hdHRpbmdDb250ZXh0Rm9yQm94KToKKiBTb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uQm94R2VvbWV0cnlV
cGRhdGVyLmNwcDoKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjp1c2VkVmFsdWVPclplcm8p
OgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRl
TGlzdE1hcmtlckRpbWVuc2lvbnMpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Omhvcml6
b250YWxMb2dpY2FsTWFyZ2luKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpsb2dpY2Fs
Qm9yZGVyKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpsb2dpY2FsUGFkZGluZyk6CihX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVMYXlv
dXRCb3hEaW1lbnNpb25zKToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpCb3hHZW9tZXRy
eVVwZGF0ZXI6OnVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMpOgooV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OkJveEdlb21ldHJ5VXBkYXRlcjo6c2V0R2VvbWV0cmllc0ZvckxheW91dCk6CihX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94R2VvbWV0cnlVcGRhdGVyOjpzZXRHZW9tZXRy
aWVzRm9ySW50cmluc2ljV2lkdGgpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveEdl
b21ldHJ5VXBkYXRlcjo6dXBkYXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKToKKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUdlb21ldHJ5QWZ0
ZXJMYXlvdXQpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveEdlb21ldHJ5VXBkYXRl
cjo6dXBkYXRlQm94R2VvbWV0cnkpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OmZpeGVk
VmFsdWVPclplcm8pOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuaDoKKiBTb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxh
eW91dC5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6dXBkYXRl
SW5saW5lQ29udGVudERpbWVuc2lvbnMpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Okxp
bmVMYXlvdXQ6OnVwZGF0ZUlubGluZUNvbnRlbnRDb25zdHJhaW50cyk6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
aDoKKiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0SW5saW5lQ29udGVudCk6Ci0tLQogLi4ueW91dElu
dGVncmF0aW9uRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQuY3BwIHwgICAzICstCiAuLi4vTGF5b3V0
SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuY3BwICAgfCAxODIgKysrKysrKysrKysrLS0t
LS0tCiAuLi4vTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuaCAgICAgfCAgMTUg
Ky0KIC4uLi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCAgICB8ICAgOCAr
LQogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCAgICAgIHwgICA0ICst
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCAgfCAgIDUgKy0K
IDYgZmlsZXMgY2hhbmdlZCwgMTQyIGluc2VydGlvbnMoKyksIDc1IGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LmNwcApp
bmRleCA5NmI5ZWYzZGIwMjkuLjc0YzExMjIxMGQyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uRm9ybWF0dGluZ0NvbnRleHRM
YXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LmNwcApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQuaCIKIAog
I2luY2x1ZGUgIkxheW91dEludGVncmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmgiCisjaW5jbHVk
ZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNDcsNyArNDgsNyBAQCB2b2lkIGxheW91dFdpdGhGb3JtYXR0aW5nQ29udGV4
dEZvckJveChjb25zdCBMYXlvdXQ6OkVsZW1lbnRCb3gmIGJveCwgc3RkOjpvcHRpbwogICAgICAg
ICByZW5kZXJlci5jbGVhck92ZXJyaWRpbmdMb2dpY2FsV2lkdGhMZW5ndGgoKTsKIAogICAgIGF1
dG8gdXBkYXRlciA9IEJveEdlb21ldHJ5VXBkYXRlciB7IGxheW91dFN0YXRlIH07Ci0gICAgdXBk
YXRlci51cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KGJveCk7CisgICAgdXBkYXRlci51cGRhdGVH
ZW9tZXRyeUFmdGVyTGF5b3V0KGJveCwgd2lkdGhDb25zdHJhaW50LnZhbHVlX29yKHJlbmRlcmVy
LmNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKSkpOwogfQogCiBMYXlv
dXRVbml0IGZvcm1hdHRpbmdDb250ZXh0Um9vdExvZ2ljYWxXaWR0aEZvclR5cGUoY29uc3QgTGF5
b3V0OjpFbGVtZW50Qm94JiBib3gsIExvZ2ljYWxXaWR0aFR5cGUgbG9naWNhbFdpZHRoVHlwZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5
b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRl
ci5jcHAKaW5kZXggZTY5ZDk1YzNkNWQwLi5kYjAzNWJlYTBmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25Cb3hH
ZW9tZXRyeVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25Cb3hHZW9tZXRyeVVwZGF0ZXIuY3BwCkBAIC00OSwx
NSArNDksNzQgQEAKICNpbmNsdWRlICJSZW5kZXJNYXRoTUxCbG9jay5oIgogI2luY2x1ZGUgIlJl
bmRlclNsaWRlci5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCisjaW5jbHVkZSAiUmVuZGVy
VGFibGVDZWxsLmgiCisjaW5jbHVkZSAiUmVuZGVyVGFibGVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0SW50ZWdyYXRpb24gewogCi1z
dGF0aWMgTGF5b3V0VW5pdCBmaXhlZFZhbHVlT3JaZXJvKGNvbnN0IExlbmd0aCYgbGVuZ3RoKQor
CitzdGF0aWMgTGF5b3V0VW5pdCB1c2VkVmFsdWVPclplcm8oY29uc3QgTGVuZ3RoJiBsZW5ndGgs
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgpCit7CisgICAgaWYgKGxl
bmd0aC5pc0ZpeGVkKCkpCisgICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgbGVuZ3RoLnZhbHVl
KCkgfTsKKworICAgIGlmIChsZW5ndGguaXNBdXRvKCkgfHwgIWF2YWlsYWJsZVdpZHRoKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChsZW5n
dGgsICphdmFpbGFibGVXaWR0aCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhZGp1c3RCb3Jk
ZXJGb3JUYWJsZUFuZEZpZWxkc2V0KGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJl
ciwgTGF5b3V0VW5pdCYgYm9yZGVyTGVmdCwgTGF5b3V0VW5pdCYgYm9yZGVyUmlnaHQsIExheW91
dFVuaXQmIGJvcmRlclRvcCwgTGF5b3V0VW5pdCYgYm9yZGVyQm90dG9tKQoreworICAgIGlmIChh
dXRvKiB0YWJsZSA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJUYWJsZT4ocmVuZGVyZXIpOyB0YWJs
ZSAmJiB0YWJsZS0+Y29sbGFwc2VCb3JkZXJzKCkpIHsKKyAgICAgICAgYm9yZGVyTGVmdCA9IHRh
YmxlLT5ib3JkZXJMZWZ0KCk7CisgICAgICAgIGJvcmRlclJpZ2h0ID0gdGFibGUtPmJvcmRlclJp
Z2h0KCk7CisgICAgICAgIGJvcmRlclRvcCA9IHRhYmxlLT5ib3JkZXJUb3AoKTsKKyAgICAgICAg
Ym9yZGVyQm90dG9tID0gdGFibGUtPmJvcmRlckJvdHRvbSgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgaWYgKGF1dG8qIHRhYmxlQ2VsbCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJU
YWJsZUNlbGw+KHJlbmRlcmVyKTsgdGFibGVDZWxsICYmIHRhYmxlQ2VsbC0+dGFibGUoKS0+Y29s
bGFwc2VCb3JkZXJzKCkpIHsKKyAgICAgICAgYm9yZGVyTGVmdCA9IHRhYmxlQ2VsbC0+Ym9yZGVy
TGVmdCgpOworICAgICAgICBib3JkZXJSaWdodCA9IHRhYmxlQ2VsbC0+Ym9yZGVyUmlnaHQoKTsK
KyAgICAgICAgYm9yZGVyVG9wID0gdGFibGVDZWxsLT5ib3JkZXJUb3AoKTsKKyAgICAgICAgYm9y
ZGVyQm90dG9tID0gdGFibGVDZWxsLT5ib3JkZXJCb3R0b20oKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChyZW5kZXJlci5pc0ZpZWxkc2V0KCkpIHsKKyAgICAgICAgYXV0byBh
ZGp1c3RtZW50ID0gZG93bmNhc3Q8UmVuZGVyQmxvY2s+KHJlbmRlcmVyKS5pbnRyaW5zaWNCb3Jk
ZXJGb3JGaWVsZHNldCgpOworICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBhZGp1c3RtZW50IGlz
IGNvbWluZyBmcm9tIF9pbnNpZGVfIHRoZSBmaWVsZHNldCBzbyBpdHMgb3duIGZsb3cgZGlyZWN0
aW9uIGlzIHdoYXQgaXMgcmVsZXZhbnQgaGVyZS4KKyAgICAgICAgYXV0byYgc3R5bGUgPSByZW5k
ZXJlci5zdHlsZSgpOworICAgICAgICBzd2l0Y2ggKHN0eWxlLmJsb2NrRmxvd0RpcmVjdGlvbigp
KSB7CisgICAgICAgIGNhc2UgRmxvd0RpcmVjdGlvbjo6VG9wVG9Cb3R0b206CisgICAgICAgICAg
ICBib3JkZXJUb3AgKz0gYWRqdXN0bWVudDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEZsb3dEaXJlY3Rpb246OkJvdHRvbVRvVG9wOgorICAgICAgICAgICAgYm9yZGVyQm90dG9t
ICs9IGFkanVzdG1lbnQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGbG93RGly
ZWN0aW9uOjpMZWZ0VG9SaWdodDoKKyAgICAgICAgICAgIGJvcmRlckxlZnQgKz0gYWRqdXN0bWVu
dDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZsb3dEaXJlY3Rpb246OlJpZ2h0
VG9MZWZ0OgorICAgICAgICAgICAgYm9yZGVyUmlnaHQgKz0gYWRqdXN0bWVudDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KK30KKworc3RhdGljIGlubGluZSBzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5p
dD4gaW50cmluc2ljUGFkZGluZ0ZvclRhYmxlKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiBy
ZW5kZXJlcikKIHsKLSAgICByZXR1cm4gTGF5b3V0VW5pdCB7IGxlbmd0aC5pc0ZpeGVkKCkgPyBs
ZW5ndGgudmFsdWUoKSA6IDAuZiB9OworICAgIGlmIChhdXRvKiB0YWJsZUNlbGwgPSBkeW5hbWlj
RG93bmNhc3Q8UmVuZGVyVGFibGVDZWxsPihyZW5kZXJlcikpCisgICAgICAgIHJldHVybiB7IHRh
YmxlQ2VsbC0+aW50cmluc2ljUGFkZGluZ0JlZm9yZSgpLCB0YWJsZUNlbGwtPmludHJpbnNpY1Bh
ZGRpbmdBZnRlcigpIH07CisgICAgcmV0dXJuIHsgfTsKIH0KIAogQm94R2VvbWV0cnlVcGRhdGVy
OjpCb3hHZW9tZXRyeVVwZGF0ZXIoQm94VHJlZSYgYm94VHJlZSwgTGF5b3V0OjpMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdGUpCkBAIC03MSw5ICsxMzAsOSBAQCBCb3hHZW9tZXRyeVVwZGF0ZXI6OkJv
eEdlb21ldHJ5VXBkYXRlcihMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKIHsKIH0K
IAotdm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUxpc3RNYXJrZXJEaW1lbnNpb25zKGNv
bnN0IFJlbmRlckxpc3RNYXJrZXImIGxpc3RNYXJrZXIsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpJ
bnRyaW5zaWNXaWR0aE1vZGU+IGludHJpbnNpY1dpZHRoTW9kZSkKK3ZvaWQgQm94R2VvbWV0cnlV
cGRhdGVyOjp1cGRhdGVMaXN0TWFya2VyRGltZW5zaW9ucyhjb25zdCBSZW5kZXJMaXN0TWFya2Vy
JiBsaXN0TWFya2VyLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVdpZHRoLCBz
dGQ6Om9wdGlvbmFsPExheW91dDo6SW50cmluc2ljV2lkdGhNb2RlPiBpbnRyaW5zaWNXaWR0aE1v
ZGUpCiB7Ci0gICAgdXBkYXRlTGF5b3V0Qm94RGltZW5zaW9ucyhsaXN0TWFya2VyLCBpbnRyaW5z
aWNXaWR0aE1vZGUpOworICAgIHVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMobGlzdE1hcmtlciwg
YXZhaWxhYmxlV2lkdGgsIGludHJpbnNpY1dpZHRoTW9kZSk7CiAgICAgaWYgKGludHJpbnNpY1dp
ZHRoTW9kZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzMsNDggKzE5Miw1MSBAQCBzdGF0aWMg
aW5saW5lIExheW91dFVuaXQgY29udGVudExvZ2ljYWxIZWlnaHRGb3JSZW5kZXJlcihjb25zdCBS
ZW5kZXJCb3gmIHJlbmRlcgogICAgIHJldHVybiByZW5kZXJlci5wYXJlbnQoKS0+c3R5bGUoKS5p
c0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVuZGVyZXIuY29udGVudEhlaWdodCgpIDogcmVu
ZGVyZXIuY29udGVudFdpZHRoKCk7CiB9CiAKLWVudW0gY2xhc3MgVXNlQ29tcHV0ZWRWYWx1ZXMg
OiBib29sIHsgTm8sIFllcyB9Owotc3RhdGljIGlubGluZSBMYXlvdXQ6OkJveEdlb21ldHJ5OjpI
b3Jpem9udGFsRWRnZXMgaG9yaXpvbnRhbExvZ2ljYWxNYXJnaW4oY29uc3QgUmVuZGVyQm94TW9k
ZWxPYmplY3QmIHJlbmRlcmVyLCBib29sIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJv
b2wgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUsIFVzZUNvbXB1dGVkVmFsdWVzIHVzZUNvbXB1dGVk
VmFsdWVzID0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vLCBib29sIHJldGFpbk1hcmdpblN0YXJ0ID0g
dHJ1ZSwgYm9vbCByZXRhaW5NYXJnaW5FbmQgPSB0cnVlKQorc3RhdGljIGlubGluZSBMYXlvdXQ6
OkJveEdlb21ldHJ5OjpIb3Jpem9udGFsRWRnZXMgaG9yaXpvbnRhbExvZ2ljYWxNYXJnaW4oY29u
c3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyLCBzdGQ6Om9wdGlvbmFsPExheW91dFVu
aXQ+IGF2YWlsYWJsZVdpZHRoLCBib29sIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJv
b2wgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUsIGJvb2wgcmV0YWluTWFyZ2luU3RhcnQgPSB0cnVl
LCBib29sIHJldGFpbk1hcmdpbkVuZCA9IHRydWUpCiB7CiAgICAgYXV0byYgc3R5bGUgPSByZW5k
ZXJlci5zdHlsZSgpOwotICAgIGF1dG8gbWFyZ2luTGVmdCA9IHVzZUNvbXB1dGVkVmFsdWVzID09
IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVyLm1hcmdpbkxlZnQoKSA6IGZpeGVkVmFs
dWVPclplcm8oc3R5bGUubWFyZ2luTGVmdCgpKTsKLSAgICBhdXRvIG1hcmdpblJpZ2h0ID0gdXNl
Q29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIubWFyZ2lu
UmlnaHQoKSA6IGZpeGVkVmFsdWVPclplcm8oc3R5bGUubWFyZ2luUmlnaHQoKSk7CisKICAgICBp
ZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUpIHsKLSAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHRJ
bmxpbmVEaXJlY3Rpb24pCi0gICAgICAgICAgICByZXR1cm4geyByZXRhaW5NYXJnaW5TdGFydCA/
IG1hcmdpbkxlZnQgOiAwX2x1LCByZXRhaW5NYXJnaW5FbmQgPyBtYXJnaW5SaWdodCA6IDBfbHUg
fTsKLSAgICAgICAgcmV0dXJuIHsgcmV0YWluTWFyZ2luU3RhcnQgPyBtYXJnaW5SaWdodCA6IDBf
bHUsIHJldGFpbk1hcmdpbkVuZCA/IG1hcmdpbkxlZnQgOiAwX2x1IH07CisgICAgICAgIGF1dG8g
bG9naWNhbExlZnRWYWx1ZSA9IHJldGFpbk1hcmdpblN0YXJ0ID8gdXNlZFZhbHVlT3JaZXJvKGlz
TGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24gPyBzdHlsZS5tYXJnaW5MZWZ0KCkgOiBzdHlsZS5t
YXJnaW5SaWdodCgpLCBhdmFpbGFibGVXaWR0aCkgOiAwX2x1OworICAgICAgICBhdXRvIGxvZ2lj
YWxSaWdodFZhbHVlID0gcmV0YWluTWFyZ2luRW5kID8gdXNlZFZhbHVlT3JaZXJvKGlzTGVmdFRv
UmlnaHRJbmxpbmVEaXJlY3Rpb24gPyBzdHlsZS5tYXJnaW5SaWdodCgpIDogc3R5bGUubWFyZ2lu
TGVmdCgpLCBhdmFpbGFibGVXaWR0aCkgOiAwX2x1OworCisgICAgICAgIHJldHVybiB7IGxvZ2lj
YWxMZWZ0VmFsdWUsIGxvZ2ljYWxSaWdodFZhbHVlIH07CiAgICAgfQogCi0gICAgYXV0byBtYXJn
aW5Ub3AgPSB1c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5k
ZXJlci5tYXJnaW5Ub3AoKSA6IGZpeGVkVmFsdWVPclplcm8oc3R5bGUubWFyZ2luVG9wKCkpOwot
ICAgIGF1dG8gbWFyZ2luQm90dG9tID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRW
YWx1ZXM6Ok5vID8gcmVuZGVyZXIubWFyZ2luQm90dG9tKCkgOiBmaXhlZFZhbHVlT3JaZXJvKHN0
eWxlLm1hcmdpbkJvdHRvbSgpKTsKLSAgICBpZiAoaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlv
bikKLSAgICAgICAgcmV0dXJuIHsgcmV0YWluTWFyZ2luU3RhcnQgPyBtYXJnaW5Ub3AgOiAwX2x1
LCByZXRhaW5NYXJnaW5FbmQgPyBtYXJnaW5Cb3R0b20gOiAwX2x1IH07Ci0gICAgcmV0dXJuIHsg
cmV0YWluTWFyZ2luU3RhcnQgPyBtYXJnaW5Cb3R0b20gOiAwX2x1LCByZXRhaW5NYXJnaW5FbmQg
PyBtYXJnaW5Ub3AgOiAwX2x1IH07CisgICAgYXV0byBsb2dpY2FsTGVmdFZhbHVlID0gcmV0YWlu
TWFyZ2luU3RhcnQgPyB1c2VkVmFsdWVPclplcm8oaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlv
biA/IHN0eWxlLm1hcmdpblRvcCgpIDogc3R5bGUubWFyZ2luQm90dG9tKCksIGF2YWlsYWJsZVdp
ZHRoKSA6IDBfbHU7CisgICAgYXV0byBsb2dpY2FsUmlnaHRWYWx1ZSA9IHJldGFpbk1hcmdpbkVu
ZCA/IHVzZWRWYWx1ZU9yWmVybyhpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uID8gc3R5bGUu
bWFyZ2luQm90dG9tKCkgOiBzdHlsZS5tYXJnaW5Ub3AoKSwgYXZhaWxhYmxlV2lkdGgpIDogMF9s
dTsKKworICAgIHJldHVybiB7IGxvZ2ljYWxMZWZ0VmFsdWUsIGxvZ2ljYWxSaWdodFZhbHVlIH07
CiB9CiAKLXN0YXRpYyBpbmxpbmUgTGF5b3V0OjpCb3hHZW9tZXRyeTo6VmVydGljYWxFZGdlcyB2
ZXJ0aWNhbExvZ2ljYWxNYXJnaW4oY29uc3QgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVy
LCBGbG93RGlyZWN0aW9uIGJsb2NrRmxvd0RpcmVjdGlvbikKK3N0YXRpYyBpbmxpbmUgTGF5b3V0
OjpCb3hHZW9tZXRyeTo6VmVydGljYWxFZGdlcyB2ZXJ0aWNhbExvZ2ljYWxNYXJnaW4oY29uc3Qg
UmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+
IGF2YWlsYWJsZVdpZHRoLCBGbG93RGlyZWN0aW9uIGJsb2NrRmxvd0RpcmVjdGlvbikKIHsKKyAg
ICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLnN0eWxlKCk7CiAgICAgc3dpdGNoIChibG9ja0Zsb3dE
aXJlY3Rpb24pIHsKICAgICBjYXNlIEZsb3dEaXJlY3Rpb246OlRvcFRvQm90dG9tOgogICAgIGNh
c2UgRmxvd0RpcmVjdGlvbjo6Qm90dG9tVG9Ub3A6Ci0gICAgICAgIHJldHVybiB7IHJlbmRlcmVy
Lm1hcmdpblRvcCgpLCByZW5kZXJlci5tYXJnaW5Cb3R0b20oKSB9OworICAgICAgICByZXR1cm4g
eyB1c2VkVmFsdWVPclplcm8oc3R5bGUubWFyZ2luVG9wKCksIGF2YWlsYWJsZVdpZHRoKSwgdXNl
ZFZhbHVlT3JaZXJvKHN0eWxlLm1hcmdpbkJvdHRvbSgpLCBhdmFpbGFibGVXaWR0aCkgfTsKICAg
ICBjYXNlIEZsb3dEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgogICAgIGNhc2UgRmxvd0RpcmVjdGlv
bjo6UmlnaHRUb0xlZnQ6Ci0gICAgICAgIHJldHVybiB7IHJlbmRlcmVyLm1hcmdpblJpZ2h0KCks
IHJlbmRlcmVyLm1hcmdpbkxlZnQoKSB9OworICAgICAgICByZXR1cm4geyB1c2VkVmFsdWVPclpl
cm8oc3R5bGUubWFyZ2luUmlnaHQoKSwgYXZhaWxhYmxlV2lkdGgpLCB1c2VkVmFsdWVPclplcm8o
c3R5bGUubWFyZ2luTGVmdCgpLCBhdmFpbGFibGVXaWR0aCkgfTsKICAgICBkZWZhdWx0OgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHsgcmVuZGVyZXIubWFy
Z2luVG9wKCksIHJlbmRlcmVyLm1hcmdpbkJvdHRvbSgpIH07CisgICAgICAgIHJldHVybiB7IH07
CiAgICAgfQogfQogCiBlbnVtIGNsYXNzIElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgOiBib29s
IHsgTm8sIFllcyB9Owotc3RhdGljIGlubGluZSBMYXlvdXQ6OkJveEdlb21ldHJ5OjpFZGdlcyBs
b2dpY2FsQm9yZGVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWN0JiByZW5kZXJlciwgYm9vbCBp
c0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBGbG93RGlyZWN0aW9uIGJsb2NrRmxvd0RpcmVj
dGlvbiwgVXNlQ29tcHV0ZWRWYWx1ZXMgdXNlQ29tcHV0ZWRWYWx1ZXMgPSBVc2VDb21wdXRlZFZh
bHVlczo6Tm8sIElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgaXNQYXJ0T2ZGb3JtYXR0aW5nQ29u
dGV4dCA9IElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6Ok5vLCBib29sIHJldGFpbkJvcmRlclN0
YXJ0ID0gdHJ1ZSwgYm9vbCByZXRhaW5Cb3JkZXJFbmQgPSB0cnVlKQorc3RhdGljIGlubGluZSBM
YXlvdXQ6OkJveEdlb21ldHJ5OjpFZGdlcyBsb2dpY2FsQm9yZGVyKGNvbnN0IFJlbmRlckJveE1v
ZGVsT2JqZWN0JiByZW5kZXJlciwgYm9vbCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBG
bG93RGlyZWN0aW9uIGJsb2NrRmxvd0RpcmVjdGlvbiwgYm9vbCBpc0ludHJpbnNpY1dpZHRoTW9k
ZSwgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dCBpc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0ID0g
SXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6Tm8sIGJvb2wgcmV0YWluQm9yZGVyU3RhcnQgPSB0
cnVlLCBib29sIHJldGFpbkJvcmRlckVuZCA9IHRydWUpCiB7CiAgICAgYXV0byYgc3R5bGUgPSBy
ZW5kZXJlci5zdHlsZSgpOwotICAgIGF1dG8gYm9yZGVyTGVmdCA9IHVzZUNvbXB1dGVkVmFsdWVz
ID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVyLmJvcmRlckxlZnQoKSA6IExheW91
dFVuaXQoc3R5bGUuYm9yZGVyTGVmdFdpZHRoKCkpOwotICAgIGF1dG8gYm9yZGVyUmlnaHQgPSB1
c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5kZXJlci5ib3Jk
ZXJSaWdodCgpIDogTGF5b3V0VW5pdChzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCkpOwotICAgIGF1
dG8gYm9yZGVyVG9wID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5v
ID8gcmVuZGVyZXIuYm9yZGVyVG9wKCkgOiBMYXlvdXRVbml0KHN0eWxlLmJvcmRlclRvcFdpZHRo
KCkpOwotICAgIGF1dG8gYm9yZGVyQm90dG9tID0gdXNlQ29tcHV0ZWRWYWx1ZXMgPT0gVXNlQ29t
cHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIuYm9yZGVyQm90dG9tKCkgOiBMYXlvdXRVbml0KHN0
eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkpOworCisgICAgYXV0byBib3JkZXJMZWZ0ID0gTGF5b3V0
VW5pdCB7IHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpIH07CisgICAgYXV0byBib3JkZXJSaWdodCA9
IExheW91dFVuaXQgeyBzdHlsZS5ib3JkZXJSaWdodFdpZHRoKCkgfTsKKyAgICBhdXRvIGJvcmRl
clRvcCA9IExheW91dFVuaXQgeyBzdHlsZS5ib3JkZXJUb3BXaWR0aCgpIH07CisgICAgYXV0byBi
b3JkZXJCb3R0b20gPSBMYXlvdXRVbml0IHsgc3R5bGUuYm9yZGVyQm90dG9tV2lkdGgoKSB9Owor
CisgICAgaWYgKCFpc0ludHJpbnNpY1dpZHRoTW9kZSkKKyAgICAgICAgYWRqdXN0Qm9yZGVyRm9y
VGFibGVBbmRGaWVsZHNldChyZW5kZXJlciwgYm9yZGVyTGVmdCwgYm9yZGVyUmlnaHQsIGJvcmRl
clRvcCwgYm9yZGVyQm90dG9tKTsKIAogICAgIGlmIChibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxv
d0RpcmVjdGlvbjo6VG9wVG9Cb3R0b20gfHwgYmxvY2tGbG93RGlyZWN0aW9uID09IEZsb3dEaXJl
Y3Rpb246OkJvdHRvbVRvVG9wKSB7CiAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0SW5saW5lRGly
ZWN0aW9uKQpAQCAtMTkwLDE4ICsyNTIsMjAgQEAgc3RhdGljIGlubGluZSBMYXlvdXQ6OkJveEdl
b21ldHJ5OjpFZGdlcyBsb2dpY2FsQm9yZGVyKGNvbnN0IFJlbmRlckJveE1vZGVsT2JqZWMKICAg
ICByZXR1cm4geyB7IGJvcmRlckxvZ2ljYWxMZWZ0LCBib3JkZXJMb2dpY2FsUmlnaHQgfSwgeyBi
b3JkZXJMb2dpY2FsVG9wLCBib3JkZXJMb2dpY2FsQm90dG9tIH0gfTsKIH0KIAotc3RhdGljIGlu
bGluZSBMYXlvdXQ6OkJveEdlb21ldHJ5OjpFZGdlcyBsb2dpY2FsUGFkZGluZyhjb25zdCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIsIGJvb2wgaXNMZWZ0VG9SaWdodElubGluZURpcmVj
dGlvbiwgRmxvd0RpcmVjdGlvbiBibG9ja0Zsb3dEaXJlY3Rpb24sIFVzZUNvbXB1dGVkVmFsdWVz
IHVzZUNvbXB1dGVkVmFsdWVzID0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vLCBJc1BhcnRPZkZvcm1h
dHRpbmdDb250ZXh0IGlzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgPSBJc1BhcnRPZkZvcm1hdHRp
bmdDb250ZXh0OjpObywgYm9vbCByZXRhaW5QYWRkaW5nU3RhcnQgPSB0cnVlLCBib29sIHJldGFp
blBhZGRpbmdFbmQgPSB0cnVlKQorc3RhdGljIGlubGluZSBMYXlvdXQ6OkJveEdlb21ldHJ5OjpF
ZGdlcyBsb2dpY2FsUGFkZGluZyhjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIs
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIGJvb2wgaXNMZWZ0VG9S
aWdodElubGluZURpcmVjdGlvbiwgRmxvd0RpcmVjdGlvbiBibG9ja0Zsb3dEaXJlY3Rpb24sIGJv
b2wgaXNJbnRyaW5zaWNXaWR0aE1vZGUsIElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgaXNQYXJ0
T2ZGb3JtYXR0aW5nQ29udGV4dCA9IElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6Ok5vLCBib29s
IHJldGFpblBhZGRpbmdTdGFydCA9IHRydWUsIGJvb2wgcmV0YWluUGFkZGluZ0VuZCA9IHRydWUp
CiB7CiAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci5zdHlsZSgpOwotICAgIGF1dG8gcGFkZGlu
Z0xlZnQgPSB1c2VDb21wdXRlZFZhbHVlcyA9PSBVc2VDb21wdXRlZFZhbHVlczo6Tm8gPyByZW5k
ZXJlci5wYWRkaW5nTGVmdCgpIDogZml4ZWRWYWx1ZU9yWmVybyhzdHlsZS5wYWRkaW5nTGVmdCgp
KTsKLSAgICBhdXRvIHBhZGRpbmdSaWdodCA9IHVzZUNvbXB1dGVkVmFsdWVzID09IFVzZUNvbXB1
dGVkVmFsdWVzOjpObyA/IHJlbmRlcmVyLnBhZGRpbmdSaWdodCgpIDogZml4ZWRWYWx1ZU9yWmVy
byhzdHlsZS5wYWRkaW5nUmlnaHQoKSk7Ci0gICAgYXV0byBwYWRkaW5nVG9wID0gdXNlQ29tcHV0
ZWRWYWx1ZXMgPT0gVXNlQ29tcHV0ZWRWYWx1ZXM6Ok5vID8gcmVuZGVyZXIucGFkZGluZ1RvcCgp
IDogZml4ZWRWYWx1ZU9yWmVybyhzdHlsZS5wYWRkaW5nVG9wKCkpOwotICAgIGF1dG8gcGFkZGlu
Z0JvdHRvbSA9IHVzZUNvbXB1dGVkVmFsdWVzID09IFVzZUNvbXB1dGVkVmFsdWVzOjpObyA/IHJl
bmRlcmVyLnBhZGRpbmdCb3R0b20oKSA6IGZpeGVkVmFsdWVPclplcm8oc3R5bGUucGFkZGluZ0Jv
dHRvbSgpKTsKKworICAgIGF1dG8gcGFkZGluZ0xlZnQgPSB1c2VkVmFsdWVPclplcm8oc3R5bGUu
cGFkZGluZ0xlZnQoKSwgYXZhaWxhYmxlV2lkdGgpOworICAgIGF1dG8gcGFkZGluZ1JpZ2h0ID0g
dXNlZFZhbHVlT3JaZXJvKHN0eWxlLnBhZGRpbmdSaWdodCgpLCBhdmFpbGFibGVXaWR0aCk7Cisg
ICAgYXV0byBwYWRkaW5nVG9wID0gdXNlZFZhbHVlT3JaZXJvKHN0eWxlLnBhZGRpbmdUb3AoKSwg
YXZhaWxhYmxlV2lkdGgpOworICAgIGF1dG8gcGFkZGluZ0JvdHRvbSA9IHVzZWRWYWx1ZU9yWmVy
byhzdHlsZS5wYWRkaW5nQm90dG9tKCksIGF2YWlsYWJsZVdpZHRoKTsKKyAgICBhdXRvIFtpbnRy
aW5zaWNQYWRkaW5nQmVmb3JlLCBpbnRyaW5zaWNQYWRkaW5nQWZ0ZXJdID0gIWlzSW50cmluc2lj
V2lkdGhNb2RlID8gaW50cmluc2ljUGFkZGluZ0ZvclRhYmxlKHJlbmRlcmVyKSA6IHN0ZDo6cGFp
cjxMYXlvdXRVbml0LCBMYXlvdXRVbml0PigpOwogCiAgICAgaWYgKGJsb2NrRmxvd0RpcmVjdGlv
biA9PSBGbG93RGlyZWN0aW9uOjpUb3BUb0JvdHRvbSB8fCBibG9ja0Zsb3dEaXJlY3Rpb24gPT0g
Rmxvd0RpcmVjdGlvbjo6Qm90dG9tVG9Ub3ApIHsKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHRJ
bmxpbmVEaXJlY3Rpb24pCi0gICAgICAgICAgICByZXR1cm4geyB7IHJldGFpblBhZGRpbmdTdGFy
dCA/IHBhZGRpbmdMZWZ0IDogMF9sdSwgcmV0YWluUGFkZGluZ0VuZCA/IHBhZGRpbmdSaWdodCA6
IDBfbHUgfSwgeyBwYWRkaW5nVG9wLCBwYWRkaW5nQm90dG9tIH0gfTsKLSAgICAgICAgcmV0dXJu
IHsgeyByZXRhaW5QYWRkaW5nU3RhcnQgPyBwYWRkaW5nUmlnaHQgOiAwX2x1LCByZXRhaW5QYWRk
aW5nRW5kID8gcGFkZGluZ0xlZnQgOiAwX2x1IH0sIHsgcGFkZGluZ1RvcCwgcGFkZGluZ0JvdHRv
bSB9IH07CisgICAgICAgICAgICByZXR1cm4geyB7IHJldGFpblBhZGRpbmdTdGFydCA/IHBhZGRp
bmdMZWZ0IDogMF9sdSwgcmV0YWluUGFkZGluZ0VuZCA/IHBhZGRpbmdSaWdodCA6IDBfbHUgfSwg
eyBwYWRkaW5nVG9wICsgaW50cmluc2ljUGFkZGluZ0JlZm9yZSwgcGFkZGluZ0JvdHRvbSArIGlu
dHJpbnNpY1BhZGRpbmdBZnRlciB9IH07CisgICAgICAgIHJldHVybiB7IHsgcmV0YWluUGFkZGlu
Z1N0YXJ0ID8gcGFkZGluZ1JpZ2h0IDogMF9sdSwgcmV0YWluUGFkZGluZ0VuZCA/IHBhZGRpbmdM
ZWZ0IDogMF9sdSB9LCB7IHBhZGRpbmdUb3AgKyBpbnRyaW5zaWNQYWRkaW5nQmVmb3JlLCBwYWRk
aW5nQm90dG9tICsgaW50cmluc2ljUGFkZGluZ0FmdGVyIH0gfTsKICAgICB9CiAKICAgICBhdXRv
IHBhZGRpbmdMb2dpY2FsTGVmdCA9IHJldGFpblBhZGRpbmdTdGFydCA/IGlzTGVmdFRvUmlnaHRJ
bmxpbmVEaXJlY3Rpb24gPyBwYWRkaW5nVG9wIDogcGFkZGluZ0JvdHRvbSA6IDBfbHU7CkBAIC0y
MDksNyArMjczLDcgQEAgc3RhdGljIGlubGluZSBMYXlvdXQ6OkJveEdlb21ldHJ5OjpFZGdlcyBs
b2dpY2FsUGFkZGluZyhjb25zdCBSZW5kZXJCb3hNb2RlbE9iamUKICAgICAvLyBGb3IgYm94ZXMg
aW5zaWRlIHRoZSBmb3JtYXR0aW5nIGNvbnRleHQsIHJpZ2h0IHBhZGRpbmcgKGJvcmRlcikgYWx3
YXlzIHBvaW50cyB1cCwgd2hpbGUgd2hlbiBjb252ZXJ0aW5nIHRoZSBmb3JtYXR0aW5nIGNvbnRl
eHQgcm9vdCdzIHBhZGRpbmcgKGJvcmRlcikgdGhlIGRpcmVjdGlvbmFsaXR5IG1hdHRlcnMuCiAg
ICAgYXV0byBwYWRkaW5nTG9naWNhbFRvcCA9IGlzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQgPT0g
SXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6WWVzID8gcGFkZGluZ1JpZ2h0IDogYmxvY2tGbG93
RGlyZWN0aW9uID09IEZsb3dEaXJlY3Rpb246OkxlZnRUb1JpZ2h0ID8gcGFkZGluZ0xlZnQgOiBw
YWRkaW5nUmlnaHQ7CiAgICAgYXV0byBwYWRkaW5nTG9naWNhbEJvdHRvbSA9IGlzUGFydE9mRm9y
bWF0dGluZ0NvbnRleHQgPT0gSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6WWVzID8gcGFkZGlu
Z0xlZnQgOiBibG9ja0Zsb3dEaXJlY3Rpb24gPT0gRmxvd0RpcmVjdGlvbjo6TGVmdFRvUmlnaHQg
PyBwYWRkaW5nUmlnaHQgOiBwYWRkaW5nTGVmdDsKLSAgICByZXR1cm4geyB7IHBhZGRpbmdMb2dp
Y2FsTGVmdCwgcGFkZGluZ0xvZ2ljYWxSaWdodCB9LCB7IHBhZGRpbmdMb2dpY2FsVG9wLCBwYWRk
aW5nTG9naWNhbEJvdHRvbSB9IH07CisgICAgcmV0dXJuIHsgeyBwYWRkaW5nTG9naWNhbExlZnQs
IHBhZGRpbmdMb2dpY2FsUmlnaHQgfSwgeyBwYWRkaW5nTG9naWNhbFRvcCArIGludHJpbnNpY1Bh
ZGRpbmdCZWZvcmUsIHBhZGRpbmdMb2dpY2FsQm90dG9tICsgaW50cmluc2ljUGFkZGluZ0FmdGVy
IH0gfTsKIH0KIAogc3RhdGljIGlubGluZSBMYXlvdXRTaXplIHNjcm9sbGJhckxvZ2ljYWxTaXpl
KGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIpCkBAIC0yMjIsNyArMjg2LDcgQEAgc3RhdGljIGlu
bGluZSBMYXlvdXRTaXplIHNjcm9sbGJhckxvZ2ljYWxTaXplKGNvbnN0IFJlbmRlckJveCYgcmVu
ZGVyZXIpCiAgICAgcmV0dXJuIHsgaG9yaXpvbnRhbFNwYWNlUmVzZXJ2ZWRGb3JTY3JvbGxiYXIs
IHZlcnRpY2FsU3BhY2VSZXNlcnZlZEZvclNjcm9sbGJhciB9OwogfQogCi12b2lkIEJveEdlb21l
dHJ5VXBkYXRlcjo6dXBkYXRlTGF5b3V0Qm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJCb3gmIHJl
bmRlckJveCwgc3RkOjpvcHRpb25hbDxMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gaW50cmlu
c2ljV2lkdGhNb2RlKQordm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUxheW91dEJveERp
bWVuc2lvbnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJCb3gsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
VW5pdD4gYXZhaWxhYmxlV2lkdGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0
aE1vZGU+IGludHJpbnNpY1dpZHRoTW9kZSkKIHsKICAgICBhdXRvJiBsYXlvdXRCb3ggPSBjb25z
dF9jYXN0PExheW91dDo6RWxlbWVudEJveCY+KCpyZW5kZXJCb3gubGF5b3V0Qm94KCkpOwogICAg
IGF1dG8gaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiA9IHJlbmRlckJveC5wYXJlbnQoKS0+
c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CkBAIC0yMzAsOSArMjk0LDkgQEAgdm9p
ZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMoY29uc3QgUmVu
ZGVyQm94JiByZW5kZXJCb3gsIHMKICAgICBhdXRvIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID0g
YmxvY2tGbG93RGlyZWN0aW9uID09IEZsb3dEaXJlY3Rpb246OlRvcFRvQm90dG9tIHx8IGJsb2Nr
Rmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0aW9uOjpCb3R0b21Ub1RvcDsKIAogICAgIGF1dG8m
IGJveEdlb21ldHJ5ID0gbGF5b3V0U3RhdGUoKS5lbnN1cmVHZW9tZXRyeUZvckJveChsYXlvdXRC
b3gpOwotICAgIGF1dG8gaW5saW5lTWFyZ2luID0gaG9yaXpvbnRhbExvZ2ljYWxNYXJnaW4ocmVu
ZGVyQm94LCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBpc0hvcml6b250YWxXcml0aW5n
TW9kZSwgaW50cmluc2ljV2lkdGhNb2RlID8gVXNlQ29tcHV0ZWRWYWx1ZXM6OlllcyA6IFVzZUNv
bXB1dGVkVmFsdWVzOjpObyk7Ci0gICAgYXV0byBib3JkZXIgPSBsb2dpY2FsQm9yZGVyKHJlbmRl
ckJveCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9uLCBp
bnRyaW5zaWNXaWR0aE1vZGUgPyBVc2VDb21wdXRlZFZhbHVlczo6WWVzIDogVXNlQ29tcHV0ZWRW
YWx1ZXM6Ok5vKTsKLSAgICBhdXRvIHBhZGRpbmcgPSBsb2dpY2FsUGFkZGluZyhyZW5kZXJCb3gs
IGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlvbiwgaW50cmlu
c2ljV2lkdGhNb2RlID8gVXNlQ29tcHV0ZWRWYWx1ZXM6OlllcyA6IFVzZUNvbXB1dGVkVmFsdWVz
OjpObyk7CisgICAgYXV0byBpbmxpbmVNYXJnaW4gPSBob3Jpem9udGFsTG9naWNhbE1hcmdpbihy
ZW5kZXJCb3gsIGF2YWlsYWJsZVdpZHRoLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBp
c0hvcml6b250YWxXcml0aW5nTW9kZSk7CisgICAgYXV0byBib3JkZXIgPSBsb2dpY2FsQm9yZGVy
KHJlbmRlckJveCwgaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0
aW9uLCBpbnRyaW5zaWNXaWR0aE1vZGUuaGFzX3ZhbHVlKCkpOworICAgIGF1dG8gcGFkZGluZyA9
IGxvZ2ljYWxQYWRkaW5nKHJlbmRlckJveCwgYXZhaWxhYmxlV2lkdGgsIGlzTGVmdFRvUmlnaHRJ
bmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlvbiwgaW50cmluc2ljV2lkdGhNb2RlLmhh
c192YWx1ZSgpKTsKICAgICBhdXRvIHNjcm9sbGJhclNpemUgPSBzY3JvbGxiYXJMb2dpY2FsU2l6
ZShyZW5kZXJCb3gpOwogCiAgICAgaWYgKGludHJpbnNpY1dpZHRoTW9kZSkgewpAQCAtMjU0LDcg
KzMxOCw3IEBAIHZvaWQgQm94R2VvbWV0cnlVcGRhdGVyOjp1cGRhdGVMYXlvdXRCb3hEaW1lbnNp
b25zKGNvbnN0IFJlbmRlckJveCYgcmVuZGVyQm94LCBzCiAgICAgYm94R2VvbWV0cnkuc2V0Q29u
dGVudEJveFdpZHRoKGNvbnRlbnRMb2dpY2FsV2lkdGhGb3JSZW5kZXJlcihyZW5kZXJCb3gpKTsK
ICAgICBib3hHZW9tZXRyeS5zZXRDb250ZW50Qm94SGVpZ2h0KGNvbnRlbnRMb2dpY2FsSGVpZ2h0
Rm9yUmVuZGVyZXIocmVuZGVyQm94KSk7CiAKLSAgICBib3hHZW9tZXRyeS5zZXRWZXJ0aWNhbE1h
cmdpbih2ZXJ0aWNhbExvZ2ljYWxNYXJnaW4ocmVuZGVyQm94LCBibG9ja0Zsb3dEaXJlY3Rpb24p
KTsKKyAgICBib3hHZW9tZXRyeS5zZXRWZXJ0aWNhbE1hcmdpbih2ZXJ0aWNhbExvZ2ljYWxNYXJn
aW4ocmVuZGVyQm94LCBhdmFpbGFibGVXaWR0aCwgYmxvY2tGbG93RGlyZWN0aW9uKSk7CiAgICAg
Ym94R2VvbWV0cnkuc2V0SG9yaXpvbnRhbE1hcmdpbihpbmxpbmVNYXJnaW4pOwogICAgIGJveEdl
b21ldHJ5LnNldEJvcmRlcihib3JkZXIpOwogICAgIGJveEdlb21ldHJ5LnNldFBhZGRpbmcocGFk
ZGluZyk7CkBAIC0zMTAsNyArMzc0LDcgQEAgdm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0
ZUxpbmVCcmVha0JveERpbWVuc2lvbnMoY29uc3QgUmVuZGVyTGluZUJyZWFrJiBsaW4KICAgICAg
ICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveEhlaWdodCh7IH0pOwogfQogCi12b2lkIEJveEdl
b21ldHJ5VXBkYXRlcjo6dXBkYXRlSW5saW5lQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJJbmxp
bmUmIHJlbmRlcklubGluZSwgc3RkOjpvcHRpb25hbDxMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW9k
ZT4gaW50cmluc2ljV2lkdGhNb2RlKQordm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUlu
bGluZUJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVySW5saW5lJiByZW5kZXJJbmxpbmUsIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlV2lkdGgsIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
OjpJbnRyaW5zaWNXaWR0aE1vZGU+IGludHJpbnNpY1dpZHRoTW9kZSkKIHsKICAgICBhdXRvJiBi
b3hHZW9tZXRyeSA9IGxheW91dFN0YXRlKCkuZW5zdXJlR2VvbWV0cnlGb3JCb3goKnJlbmRlcklu
bGluZS5sYXlvdXRCb3goKSk7CiAKQEAgLTMyMiw5ICszODYsOSBAQCB2b2lkIEJveEdlb21ldHJ5
VXBkYXRlcjo6dXBkYXRlSW5saW5lQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJJbmxpbmUmIHJl
bmRlcklubAogICAgIGF1dG8gYmxvY2tGbG93RGlyZWN0aW9uID0gd3JpdGluZ01vZGVUb0Jsb2Nr
Rmxvd0RpcmVjdGlvbihyZW5kZXJJbmxpbmUuc3R5bGUoKS53cml0aW5nTW9kZSgpKTsKICAgICBh
dXRvIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID0gYmxvY2tGbG93RGlyZWN0aW9uID09IEZsb3dE
aXJlY3Rpb246OlRvcFRvQm90dG9tIHx8IGJsb2NrRmxvd0RpcmVjdGlvbiA9PSBGbG93RGlyZWN0
aW9uOjpCb3R0b21Ub1RvcDsKIAotICAgIGF1dG8gaW5saW5lTWFyZ2luID0gaG9yaXpvbnRhbExv
Z2ljYWxNYXJnaW4ocmVuZGVySW5saW5lLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBp
c0hvcml6b250YWxXcml0aW5nTW9kZSwgaW50cmluc2ljV2lkdGhNb2RlID8gVXNlQ29tcHV0ZWRW
YWx1ZXM6OlllcyA6IFVzZUNvbXB1dGVkVmFsdWVzOjpObywgIXNob3VsZE5vdFJldGFpbkJvcmRl
clBhZGRpbmdBbmRNYXJnaW5TdGFydCwgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRN
YXJnaW5FbmQpOwotICAgIGF1dG8gYm9yZGVyID0gbG9naWNhbEJvcmRlcihyZW5kZXJJbmxpbmUs
IGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlvbiwgaW50cmlu
c2ljV2lkdGhNb2RlID8gVXNlQ29tcHV0ZWRWYWx1ZXM6OlllcyA6IFVzZUNvbXB1dGVkVmFsdWVz
OjpObywgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6WWVzLCAhc2hvdWxkTm90UmV0YWluQm9y
ZGVyUGFkZGluZ0FuZE1hcmdpblN0YXJ0LCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGluZ0Fu
ZE1hcmdpbkVuZCk7Ci0gICAgYXV0byBwYWRkaW5nID0gbG9naWNhbFBhZGRpbmcocmVuZGVySW5s
aW5lLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24sIGlu
dHJpbnNpY1dpZHRoTW9kZSA/IFVzZUNvbXB1dGVkVmFsdWVzOjpZZXMgOiBVc2VDb21wdXRlZFZh
bHVlczo6Tm8sIElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6OlllcywgIXNob3VsZE5vdFJldGFp
bkJvcmRlclBhZGRpbmdBbmRNYXJnaW5TdGFydCwgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRp
bmdBbmRNYXJnaW5FbmQpOworICAgIGF1dG8gaW5saW5lTWFyZ2luID0gaG9yaXpvbnRhbExvZ2lj
YWxNYXJnaW4ocmVuZGVySW5saW5lLCBhdmFpbGFibGVXaWR0aCwgaXNMZWZ0VG9SaWdodElubGlu
ZURpcmVjdGlvbiwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUsICFzaG91bGROb3RSZXRhaW5Cb3Jk
ZXJQYWRkaW5nQW5kTWFyZ2luU3RhcnQsICFzaG91bGROb3RSZXRhaW5Cb3JkZXJQYWRkaW5nQW5k
TWFyZ2luRW5kKTsKKyAgICBhdXRvIGJvcmRlciA9IGxvZ2ljYWxCb3JkZXIocmVuZGVySW5saW5l
LCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rpb24sIGludHJp
bnNpY1dpZHRoTW9kZS5oYXNfdmFsdWUoKSwgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6WWVz
LCAhc2hvdWxkTm90UmV0YWluQm9yZGVyUGFkZGluZ0FuZE1hcmdpblN0YXJ0LCAhc2hvdWxkTm90
UmV0YWluQm9yZGVyUGFkZGluZ0FuZE1hcmdpbkVuZCk7CisgICAgYXV0byBwYWRkaW5nID0gbG9n
aWNhbFBhZGRpbmcocmVuZGVySW5saW5lLCBhdmFpbGFibGVXaWR0aCwgaXNMZWZ0VG9SaWdodElu
bGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9uLCBpbnRyaW5zaWNXaWR0aE1vZGUuaGFz
X3ZhbHVlKCksIElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6OlllcywgIXNob3VsZE5vdFJldGFp
bkJvcmRlclBhZGRpbmdBbmRNYXJnaW5TdGFydCwgIXNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRp
bmdBbmRNYXJnaW5FbmQpOwogCiAgICAgaWYgKGludHJpbnNpY1dpZHRoTW9kZSkgewogICAgICAg
ICBib3hHZW9tZXRyeS5zZXRIb3Jpem9udGFsTWFyZ2luKGlubGluZU1hcmdpbik7CkBAIC0zMzQs
MTIgKzM5OCwxMiBAQCB2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlSW5saW5lQm94RGlt
ZW5zaW9ucyhjb25zdCBSZW5kZXJJbmxpbmUmIHJlbmRlcklubAogICAgIH0KIAogICAgIGJveEdl
b21ldHJ5LnNldEhvcml6b250YWxNYXJnaW4oaW5saW5lTWFyZ2luKTsKLSAgICBib3hHZW9tZXRy
eS5zZXRWZXJ0aWNhbE1hcmdpbih2ZXJ0aWNhbExvZ2ljYWxNYXJnaW4ocmVuZGVySW5saW5lLCBi
bG9ja0Zsb3dEaXJlY3Rpb24pKTsKKyAgICBib3hHZW9tZXRyeS5zZXRWZXJ0aWNhbE1hcmdpbih2
ZXJ0aWNhbExvZ2ljYWxNYXJnaW4ocmVuZGVySW5saW5lLCBhdmFpbGFibGVXaWR0aCwgYmxvY2tG
bG93RGlyZWN0aW9uKSk7CiAgICAgYm94R2VvbWV0cnkuc2V0Qm9yZGVyKGJvcmRlcik7CiAgICAg
Ym94R2VvbWV0cnkuc2V0UGFkZGluZyhwYWRkaW5nKTsKIH0KIAotdm9pZCBCb3hHZW9tZXRyeVVw
ZGF0ZXI6OnNldEdlb21ldHJpZXNGb3JMYXlvdXQoKQordm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6
OnNldEdlb21ldHJpZXNGb3JMYXlvdXQoTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGgp
CiB7CiAgICAgZm9yIChhdXRvIHdhbGtlciA9IElubGluZVdhbGtlcihkb3duY2FzdDxSZW5kZXJC
bG9ja0Zsb3c+KGJveFRyZWUoKS5yb290UmVuZGVyZXIoKSkpOyAhd2Fsa2VyLmF0RW5kKCk7IHdh
bGtlci5hZHZhbmNlKCkpIHsKICAgICAgICAgYXV0byYgcmVuZGVyZXIgPSAqd2Fsa2VyLmN1cnJl
bnQoKTsKQEAgLTM1MCw3ICs0MTQsNyBAQCB2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6c2V0R2Vv
bWV0cmllc0ZvckxheW91dCgpCiAgICAgICAgIGlmIChyZW5kZXJlci5pc0Zsb2F0aW5nKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICB1cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0
KGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKSk7CisgICAgICAgIHVwZGF0ZUJveEdl
b21ldHJ5KGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KHJlbmRlcmVyKSwgYXZhaWxhYmxlTG9naWNh
bFdpZHRoKTsKICAgICB9CiB9CiAKQEAgLTM2NywzMCArNDMxLDMwIEBAIHZvaWQgQm94R2VvbWV0
cnlVcGRhdGVyOjpzZXRHZW9tZXRyaWVzRm9ySW50cmluc2ljV2lkdGgoTGF5b3V0OjpJbnRyaW5z
aWNXaWR0aE1vCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAo
YXV0byogcmVuZGVySW5saW5lID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlcklubGluZT4ocmVuZGVy
ZXIpKSB7Ci0gICAgICAgICAgICB1cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25zKCpyZW5kZXJJbmxp
bmUsIGludHJpbnNpY1dpZHRoTW9kZSk7CisgICAgICAgICAgICB1cGRhdGVJbmxpbmVCb3hEaW1l
bnNpb25zKCpyZW5kZXJJbmxpbmUsIHsgfSwgaW50cmluc2ljV2lkdGhNb2RlKTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChhdXRvKiByZW5kZXJMaXN0TWFy
a2VyID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckxpc3RNYXJrZXI+KHJlbmRlcmVyKSkgewotICAg
ICAgICAgICAgdXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMoKnJlbmRlckxpc3RNYXJrZXIsIGlu
dHJpbnNpY1dpZHRoTW9kZSk7CisgICAgICAgICAgICB1cGRhdGVMaXN0TWFya2VyRGltZW5zaW9u
cygqcmVuZGVyTGlzdE1hcmtlciwgeyB9LCBpbnRyaW5zaWNXaWR0aE1vZGUpOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGF1dG8qIHJlbmRlckJveCA9IGR5
bmFtaWNEb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKSkgewogICAgICAgICAgICAgLy8gRklY
TUU6IEFkZCBzdXBwb3J0IGZvciBmbGV4aW5nIGJveGVzLgogICAgICAgICAgICAgQVNTRVJUKHJl
bmRlckJveC0+c3R5bGUoKS5sb2dpY2FsV2lkdGgoKS5pc0ZpeGVkKCkpOwotICAgICAgICAgICAg
dXBkYXRlTGF5b3V0Qm94RGltZW5zaW9ucygqcmVuZGVyQm94LCBpbnRyaW5zaWNXaWR0aE1vZGUp
OworICAgICAgICAgICAgdXBkYXRlTGF5b3V0Qm94RGltZW5zaW9ucygqcmVuZGVyQm94LCB7IH0s
IGludHJpbnNpY1dpZHRoTW9kZSk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLUxheW91dDo6Q29u
c3RyYWludHNGb3JJbmxpbmVDb250ZW50IEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlSW5saW5l
Q29udGVudENvbnN0cmFpbnRzKCkKK0xheW91dDo6Q29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50
IEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKExheW91
dFVuaXQgYXZhaWxhYmxlV2lkdGgpCiB7CiAgICAgYXV0byYgcm9vdFJlbmRlcmVyID0gYm94VHJl
ZSgpLnJvb3RSZW5kZXJlcigpOwogICAgIGF1dG8gaXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlv
biA9IHJvb3RSZW5kZXJlci5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKICAgICBh
dXRvIHdyaXRpbmdNb2RlID0gcm9vdFJlbmRlcmVyLnN0eWxlKCkud3JpdGluZ01vZGUoKTsKICAg
ICBhdXRvIGJsb2NrRmxvd0RpcmVjdGlvbiA9IHdyaXRpbmdNb2RlVG9CbG9ja0Zsb3dEaXJlY3Rp
b24od3JpdGluZ01vZGUpOwogCi0gICAgYXV0byBwYWRkaW5nID0gbG9naWNhbFBhZGRpbmcocm9v
dFJlbmRlcmVyLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBibG9ja0Zsb3dEaXJlY3Rp
b24sIFVzZUNvbXB1dGVkVmFsdWVzOjpObywgSXNQYXJ0T2ZGb3JtYXR0aW5nQ29udGV4dDo6Tm8p
OwotICAgIGF1dG8gYm9yZGVyID0gbG9naWNhbEJvcmRlcihyb290UmVuZGVyZXIsIGlzTGVmdFRv
UmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVjdGlvbiwgVXNlQ29tcHV0ZWRWYWx1
ZXM6Ok5vLCBJc1BhcnRPZkZvcm1hdHRpbmdDb250ZXh0OjpObyk7CisgICAgYXV0byBwYWRkaW5n
ID0gbG9naWNhbFBhZGRpbmcocm9vdFJlbmRlcmVyLCBhdmFpbGFibGVXaWR0aCwgaXNMZWZ0VG9S
aWdodElubGluZURpcmVjdGlvbiwgYmxvY2tGbG93RGlyZWN0aW9uLCBmYWxzZSwgSXNQYXJ0T2ZG
b3JtYXR0aW5nQ29udGV4dDo6Tm8pOworICAgIGF1dG8gYm9yZGVyID0gbG9naWNhbEJvcmRlcihy
b290UmVuZGVyZXIsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIGJsb2NrRmxvd0RpcmVj
dGlvbiwgZmFsc2UsIElzUGFydE9mRm9ybWF0dGluZ0NvbnRleHQ6Ok5vKTsKICAgICBhdXRvIHNj
cm9sbGJhclNpemUgPSBzY3JvbGxiYXJMb2dpY2FsU2l6ZShyb290UmVuZGVyZXIpOwogICAgIGF1
dG8gc2hvdWxkUGxhY2VWZXJ0aWNhbFNjcm9sbGJhck9uTGVmdCA9IHJvb3RSZW5kZXJlci5zaG91
bGRQbGFjZVZlcnRpY2FsU2Nyb2xsYmFyT25MZWZ0KCk7CiAKQEAgLTQwOSwzMiArNDczLDMyIEBA
IExheW91dDo6Q29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50IEJveEdlb21ldHJ5VXBkYXRlcjo6
dXBkYXRlSW5saW5lQ29udGVudENvbnN0CiAgICAgICAgIHJvb3RHZW9tZXRyeS5zZXRCb3JkZXIo
Ym9yZGVyKTsKICAgICAgICAgcm9vdEdlb21ldHJ5LnNldEhvcml6b250YWxTcGFjZUZvclNjcm9s
bGJhcihzY3JvbGxiYXJTaXplLndpZHRoKCkpOwogICAgICAgICByb290R2VvbWV0cnkuc2V0VmVy
dGljYWxTcGFjZUZvclNjcm9sbGJhcihzY3JvbGxiYXJTaXplLmhlaWdodCgpKTsKLSAgICAgICAg
cm9vdEdlb21ldHJ5LnNldEhvcml6b250YWxNYXJnaW4oaG9yaXpvbnRhbExvZ2ljYWxNYXJnaW4o
cm9vdFJlbmRlcmVyLCBpc0xlZnRUb1JpZ2h0SW5saW5lRGlyZWN0aW9uLCBXZWJDb3JlOjppc0hv
cml6b250YWxXcml0aW5nTW9kZSh3cml0aW5nTW9kZSksIFVzZUNvbXB1dGVkVmFsdWVzOjpObykp
OwotICAgICAgICByb290R2VvbWV0cnkuc2V0VmVydGljYWxNYXJnaW4odmVydGljYWxMb2dpY2Fs
TWFyZ2luKHJvb3RSZW5kZXJlciwgYmxvY2tGbG93RGlyZWN0aW9uKSk7CisgICAgICAgIHJvb3RH
ZW9tZXRyeS5zZXRIb3Jpem9udGFsTWFyZ2luKGhvcml6b250YWxMb2dpY2FsTWFyZ2luKHJvb3RS
ZW5kZXJlciwgYXZhaWxhYmxlV2lkdGgsIGlzTGVmdFRvUmlnaHRJbmxpbmVEaXJlY3Rpb24sIFdl
YkNvcmU6OmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSkpOworICAgICAgICBy
b290R2VvbWV0cnkuc2V0VmVydGljYWxNYXJnaW4odmVydGljYWxMb2dpY2FsTWFyZ2luKHJvb3RS
ZW5kZXJlciwgYXZhaWxhYmxlV2lkdGgsIGJsb2NrRmxvd0RpcmVjdGlvbikpOwogICAgIH07CiAg
ICAgY3JlYXRlUm9vdEdlb21ldHJ5SWZOZWVkZWQoKTsKIAogICAgIHJldHVybiB7IHsgaG9yaXpv
bnRhbENvbnN0cmFpbnRzLCBjb250ZW50Qm94VG9wIH0sIHZpc3VhbExlZnQgfTsKIH0KIAotdm9p
ZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQoY29uc3QgTGF5
b3V0OjpFbGVtZW50Qm94JiBib3gpCit2b2lkIEJveEdlb21ldHJ5VXBkYXRlcjo6dXBkYXRlR2Vv
bWV0cnlBZnRlckxheW91dChjb25zdCBMYXlvdXQ6OkVsZW1lbnRCb3gmIGJveCwgTGF5b3V0VW5p
dCBhdmFpbGFibGVXaWR0aCkKIHsKLSAgICB1cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KCpkeW5h
bWljRG93bmNhc3Q8UmVuZGVyQm94Pihib3gucmVuZGVyZXJGb3JJbnRlZ3JhdGlvbigpKSk7Cisg
ICAgdXBkYXRlQm94R2VvbWV0cnkoKmR5bmFtaWNEb3duY2FzdDxSZW5kZXJCb3g+KGJveC5yZW5k
ZXJlckZvckludGVncmF0aW9uKCkpLCBhdmFpbGFibGVXaWR0aCk7CiB9CiAKLXZvaWQgQm94R2Vv
bWV0cnlVcGRhdGVyOjp1cGRhdGVHZW9tZXRyeUFmdGVyTGF5b3V0KGNvbnN0IFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyKQordm9pZCBCb3hHZW9tZXRyeVVwZGF0ZXI6OnVwZGF0ZUJveEdlb21ldHJ5
KGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRo
KQogewogICAgIGlmIChpczxSZW5kZXJSZXBsYWNlZD4ocmVuZGVyZXIpIHx8IGlzPFJlbmRlclRh
YmxlPihyZW5kZXJlcikgfHwgaXM8UmVuZGVyTGlzdEl0ZW0+KHJlbmRlcmVyKSB8fCBpczxSZW5k
ZXJCbG9jaz4ocmVuZGVyZXIpIHx8IGlzPFJlbmRlckZyYW1lU2V0PihyZW5kZXJlcikpCi0gICAg
ICAgIHVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMoZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJl
cikpOworICAgICAgICB1cGRhdGVMYXlvdXRCb3hEaW1lbnNpb25zKGRvd25jYXN0PFJlbmRlckJv
eD4ocmVuZGVyZXIpLCBhdmFpbGFibGVXaWR0aCk7CiAKICAgICBpZiAoYXV0byogcmVuZGVyTGlz
dE1hcmtlciA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJMaXN0TWFya2VyPihyZW5kZXJlcikpCi0g
ICAgICAgIHVwZGF0ZUxpc3RNYXJrZXJEaW1lbnNpb25zKCpyZW5kZXJMaXN0TWFya2VyKTsKKyAg
ICAgICAgdXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMoKnJlbmRlckxpc3RNYXJrZXIsIGF2YWls
YWJsZVdpZHRoKTsKIAogICAgIGlmIChhdXRvKiByZW5kZXJMaW5lQnJlYWsgPSBkeW5hbWljRG93
bmNhc3Q8UmVuZGVyTGluZUJyZWFrPihyZW5kZXJlcikpCiAgICAgICAgIHVwZGF0ZUxpbmVCcmVh
a0JveERpbWVuc2lvbnMoKnJlbmRlckxpbmVCcmVhayk7CiAKICAgICBpZiAoYXV0byogcmVuZGVy
SW5saW5lID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlcklubGluZT4ocmVuZGVyZXIpKQotICAgICAg
ICB1cGRhdGVJbmxpbmVCb3hEaW1lbnNpb25zKCpyZW5kZXJJbmxpbmUpOworICAgICAgICB1cGRh
dGVJbmxpbmVCb3hEaW1lbnNpb25zKCpyZW5kZXJJbmxpbmUsIGF2YWlsYWJsZVdpZHRoKTsKIH0K
IAogY29uc3QgTGF5b3V0OjpFbGVtZW50Qm94JiBCb3hHZW9tZXRyeVVwZGF0ZXI6OnJvb3RMYXlv
dXRCb3goKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdl
b21ldHJ5VXBkYXRlci5oCmluZGV4IGYwOTI1M2RhNzY1Zi4uMzVjNWJkOTAxOGMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVn
cmF0aW9uQm94R2VvbWV0cnlVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkJveEdlb21ldHJ5VXBkYXRlci5oCkBA
IC00NywxOSArNDcsMjAgQEAgcHVibGljOgogICAgIEJveEdlb21ldHJ5VXBkYXRlcihCb3hUcmVl
JiwgTGF5b3V0OjpMYXlvdXRTdGF0ZSYpOwogICAgIEJveEdlb21ldHJ5VXBkYXRlcihMYXlvdXQ6
OkxheW91dFN0YXRlJik7CiAKLSAgICB2b2lkIHNldEdlb21ldHJpZXNGb3JMYXlvdXQoKTsKKyAg
ICB2b2lkIHNldEdlb21ldHJpZXNGb3JMYXlvdXQoTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2Fs
V2lkdGgpOwogICAgIHZvaWQgc2V0R2VvbWV0cmllc0ZvckludHJpbnNpY1dpZHRoKExheW91dDo6
SW50cmluc2ljV2lkdGhNb2RlKTsKLSAgICB2b2lkIHVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQo
Y29uc3QgTGF5b3V0OjpFbGVtZW50Qm94Jik7CisgICAgdm9pZCB1cGRhdGVHZW9tZXRyeUFmdGVy
TGF5b3V0KGNvbnN0IExheW91dDo6RWxlbWVudEJveCYsIExheW91dFVuaXQgYXZhaWxhYmxlV2lk
dGgpOwogCi0gICAgTGF5b3V0OjpDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQgdXBkYXRlSW5s
aW5lQ29udGVudENvbnN0cmFpbnRzKCk7CisgICAgTGF5b3V0OjpDb25zdHJhaW50c0ZvcklubGlu
ZUNvbnRlbnQgdXBkYXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKExheW91dFVuaXQgYXZhaWxh
YmxlV2lkdGgpOwogICAgIEhhc2hNYXA8Y29uc3QgTGF5b3V0OjpFbGVtZW50Qm94KiwgTGF5b3V0
VW5pdD4gdGFrZU5lc3RlZExpc3RNYXJrZXJPZmZzZXRzKCkgeyByZXR1cm4gV1RGTW92ZShtX25l
c3RlZExpc3RNYXJrZXJPZmZzZXRzKTsgfQogCiBwcml2YXRlOgotICAgIHZvaWQgdXBkYXRlTGF5
b3V0Qm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJCb3gmLCBzdGQ6Om9wdGlvbmFsPExheW91dDo6
SW50cmluc2ljV2lkdGhNb2RlPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9pZCB1cGRhdGVCb3hH
ZW9tZXRyeShjb25zdCBSZW5kZXJFbGVtZW50JiwgTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCk7
CisKKyAgICB2b2lkIHVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVyQm94Jiwg
c3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgc3RkOjpvcHRpb25hbDxM
YXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOwogICAgIHZvaWQgdXBk
YXRlTGluZUJyZWFrQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJMaW5lQnJlYWsmKTsKLSAgICB2
b2lkIHVwZGF0ZUlubGluZUJveERpbWVuc2lvbnMoY29uc3QgUmVuZGVySW5saW5lJiwgc3RkOjpv
cHRpb25hbDxMYXlvdXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOwotICAg
IHZvaWQgdXBkYXRlTGlzdE1hcmtlckRpbWVuc2lvbnMoY29uc3QgUmVuZGVyTGlzdE1hcmtlciYs
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0OjpJbnRyaW5zaWNXaWR0aE1vZGU+ID0gc3RkOjpudWxsb3B0
KTsKLSAgICB2b2lkIHVwZGF0ZUdlb21ldHJ5QWZ0ZXJMYXlvdXQoY29uc3QgUmVuZGVyRWxlbWVu
dCYpOworICAgIHZvaWQgdXBkYXRlSW5saW5lQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJJbmxp
bmUmLCBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IGF2YWlsYWJsZVdpZHRoLCBzdGQ6Om9wdGlv
bmFsPExheW91dDo6SW50cmluc2ljV2lkdGhNb2RlPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgdm9p
ZCB1cGRhdGVMaXN0TWFya2VyRGltZW5zaW9ucyhjb25zdCBSZW5kZXJMaXN0TWFya2VyJiwgc3Rk
OjpvcHRpb25hbDxMYXlvdXRVbml0PiBhdmFpbGFibGVXaWR0aCwgc3RkOjpvcHRpb25hbDxMYXlv
dXQ6OkludHJpbnNpY1dpZHRoTW9kZT4gPSBzdGQ6Om51bGxvcHQpOwogCiAgICAgQm94VHJlZSYg
Ym94VHJlZSgpIHsgcmV0dXJuICptX2JveFRyZWU7IH0KICAgICBjb25zdCBCb3hUcmVlJiBib3hU
cmVlKCkgY29uc3QgeyByZXR1cm4gKm1fYm94VHJlZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCmluZGV4IDExYjQ2MjIzMWM2YS4uMWJlMDNlZmQ1Y2E5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xh
eW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC0y
NDEsOSArMjQxLDkgQEAgYm9vbCBMaW5lTGF5b3V0OjpzaG91bGRJbnZhbGlkYXRlTGluZUxheW91
dFBhdGhBZnRlclRyZWVNdXRhdGlvbihjb25zdCBSZW5kZXJCbG8KICAgICByZXR1cm4gc2hvdWxk
SW52YWxpZGF0ZUxpbmVMYXlvdXRQYXRoQWZ0ZXJDaGFuZ2VGb3IocGFyZW50LCByZW5kZXJlciwg
bGluZUxheW91dCwgaXNSZW1vdmFsID8gVHlwZU9mQ2hhbmdlRm9ySW52YWxpZGF0aW9uOjpOb2Rl
UmVtb3ZhbCA6IFR5cGVPZkNoYW5nZUZvckludmFsaWRhdGlvbjo6Tm9kZUluc2VydGlvbik7CiB9
CiAKLXZvaWQgTGluZUxheW91dDo6dXBkYXRlSW5saW5lQ29udGVudERpbWVuc2lvbnMoKQordm9p
ZCBMaW5lTGF5b3V0Ojp1cGRhdGVJbmxpbmVDb250ZW50RGltZW5zaW9ucyhMYXlvdXRVbml0IGF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCkKIHsKLSAgICBtX2JveEdlb21ldHJ5VXBkYXRlci5zZXRHZW9t
ZXRyaWVzRm9yTGF5b3V0KCk7CisgICAgbV9ib3hHZW9tZXRyeVVwZGF0ZXIuc2V0R2VvbWV0cmll
c0ZvckxheW91dChhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogfQogCiB2b2lkIExpbmVMYXlvdXQ6
OnVwZGF0ZVN0eWxlKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpCkBAIC01NzIsOSArNTcy
LDkgQEAgdm9pZCBMaW5lTGF5b3V0Ojp1cGRhdGVSZW5kZXJUcmVlUG9zaXRpb25zKGNvbnN0IFZl
Y3RvcjxMaW5lQWRqdXN0bWVudD4mIGxpbmVBZGoKICAgICB9CiB9CiAKLXZvaWQgTGluZUxheW91
dDo6dXBkYXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKCkKK3ZvaWQgTGluZUxheW91dDo6dXBk
YXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdp
ZHRoKQogewotICAgIG1faW5saW5lQ29udGVudENvbnN0cmFpbnRzID0gbV9ib3hHZW9tZXRyeVVw
ZGF0ZXIudXBkYXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKCk7CisgICAgbV9pbmxpbmVDb250
ZW50Q29uc3RyYWludHMgPSBtX2JveEdlb21ldHJ5VXBkYXRlci51cGRhdGVJbmxpbmVDb250ZW50
Q29uc3RyYWludHMoYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKIH0KIAogdm9pZCBMaW5lTGF5b3V0
OjpwcmVwYXJlUGxhY2VkRmxvYXRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGlu
ZUxheW91dC5oCmluZGV4IDUwOWFiOTI4ODAyNy4uNGEyY2QxMmMyZTc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxp
bmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmgKQEAgLTc3LDggKzc3LDggQEAgcHVibGlj
OgogICAgIHN0YXRpYyBib29sIHNob3VsZEludmFsaWRhdGVMaW5lTGF5b3V0UGF0aEFmdGVyQ29u
dGVudENoYW5nZShjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIHBhcmVudCwgY29uc3QgUmVuZGVyT2Jq
ZWN0JiByZW5kZXJlcldpdGhOZXdDb250ZW50LCBjb25zdCBMaW5lTGF5b3V0Jik7CiAgICAgc3Rh
dGljIGJvb2wgc2hvdWxkSW52YWxpZGF0ZUxpbmVMYXlvdXRQYXRoQWZ0ZXJUcmVlTXV0YXRpb24o
Y29uc3QgUmVuZGVyQmxvY2tGbG93JiBwYXJlbnQsIGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVy
ZXIsIGNvbnN0IExpbmVMYXlvdXQmLCBib29sIGlzUmVtb3ZhbCk7CiAKLSAgICB2b2lkIHVwZGF0
ZUlubGluZUNvbnRlbnRDb25zdHJhaW50cygpOwotICAgIHZvaWQgdXBkYXRlSW5saW5lQ29udGVu
dERpbWVuc2lvbnMoKTsKKyAgICB2b2lkIHVwZGF0ZUlubGluZUNvbnRlbnRDb25zdHJhaW50cyhM
YXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CisgICAgdm9pZCB1cGRhdGVJbmxpbmVD
b250ZW50RGltZW5zaW9ucyhMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAg
dm9pZCB1cGRhdGVPdmVyZmxvdygpOwogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVN0eWxlKGNvbnN0
IFJlbmRlck9iamVjdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwCmluZGV4IGQyYTg1YmNkYjUzNi4uMmM5N2Y1ZTg0NjRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzg3OSw4ICszODc5LDkg
QEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dElubGluZUNvbnRlbnQoYm9vbCByZWxheW91
dENoaWxkcmVuLCBMYXlvdXRVbml0JiByZXAKIAogICAgIGF1dG8mIGxheW91dEZvcm1hdHRpbmdD
b250ZXh0TGluZUxheW91dCA9ICp0aGlzLT5pbmxpbmVMYXlvdXQoKTsKIAotICAgIGxheW91dEZv
cm1hdHRpbmdDb250ZXh0TGluZUxheW91dC51cGRhdGVJbmxpbmVDb250ZW50Q29uc3RyYWludHMo
KTsKLSAgICBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQudXBkYXRlSW5saW5lQ29u
dGVudERpbWVuc2lvbnMoKTsKKyAgICBBU1NFUlQoY29udGFpbmluZ0Jsb2NrKCkgfHwgaXM8UmVu
ZGVyVmlldz4oKnRoaXMpKTsKKyAgICBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQu
dXBkYXRlSW5saW5lQ29udGVudENvbnN0cmFpbnRzKGNvbnRhaW5pbmdCbG9jaygpID8gY29udGFp
bmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpIDogTGF5b3V0VW5pdCgpKTsKKyAg
ICBsYXlvdXRGb3JtYXR0aW5nQ29udGV4dExpbmVMYXlvdXQudXBkYXRlSW5saW5lQ29udGVudERp
bWVuc2lvbnMoYXZhaWxhYmxlTG9naWNhbFdpZHRoKCkpOwogCiAgICAgYXV0byBjb250ZW50Qm94
VG9wID0gYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>