<?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>233311</bug_id>
          
          <creation_ts>2021-11-18 03:31:30 -0800</creation_ts>
          <short_desc>Factor child change invalidation into class</short_desc>
          <delta_ts>2021-11-22 09:54:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>
          <dependson>233394</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1816375</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-11-18 03:31:30 -0800</bug_when>
    <thetext>Similar to ClassChangeInvalidation and pals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816376</commentid>
    <comment_count>1</comment_count>
      <attachid>444657</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-11-18 03:37:39 -0800</bug_when>
    <thetext>Created attachment 444657
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816399</commentid>
    <comment_count>2</comment_count>
      <attachid>444664</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-11-18 06:13:33 -0800</bug_when>
    <thetext>Created attachment 444664
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816455</commentid>
    <comment_count>3</comment_count>
      <attachid>444683</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-11-18 08:43:20 -0800</bug_when>
    <thetext>Created attachment 444683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816536</commentid>
    <comment_count>4</comment_count>
      <attachid>444709</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-11-18 11:44:41 -0800</bug_when>
    <thetext>Created attachment 444709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816554</commentid>
    <comment_count>5</comment_count>
      <attachid>444713</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-11-18 12:10:45 -0800</bug_when>
    <thetext>Created attachment 444713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816840</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-19 06:48:32 -0800</bug_when>
    <thetext>Committed r286058 (244445@main): &lt;https://commits.webkit.org/244445@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444713.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816841</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-19 06:49:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/85600978&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817078</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-11-19 22:38:06 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 233394</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817271</commentid>
    <comment_count>9</comment_count>
      <attachid>444958</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-11-22 05:29:02 -0800</bug_when>
    <thetext>Created attachment 444958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817273</commentid>
    <comment_count>10</comment_count>
      <attachid>444959</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-11-22 06:02:23 -0800</bug_when>
    <thetext>Created attachment 444959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817274</commentid>
    <comment_count>11</comment_count>
      <attachid>444960</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-11-22 06:03:51 -0800</bug_when>
    <thetext>Created attachment 444960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817284</commentid>
    <comment_count>12</comment_count>
      <attachid>444963</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-11-22 06:59:45 -0800</bug_when>
    <thetext>Created attachment 444963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817295</commentid>
    <comment_count>13</comment_count>
      <attachid>444969</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-11-22 08:31:11 -0800</bug_when>
    <thetext>Created attachment 444969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817304</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-22 09:54:04 -0800</bug_when>
    <thetext>Committed r286112 (244499@main): &lt;https://commits.webkit.org/244499@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444969.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444657</attachid>
            <date>2021-11-18 03:37:39 -0800</date>
            <delta_ts>2021-11-18 06:13:26 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-233311-20211118133738.patch</filename>
            <type>text/plain</type>
            <size>40525</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1ODUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAyZjkzMWRjYTIwM2Mw
NTE5NDBiM2JkOWM2MzAyYjRlN2M4MTM2Ni4uZGZmMmUzMjVhMWViM2JiZThkZmQyMzljYTAwMDNk
ODIxMWZjYTg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTExLTE4ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgY2hpbGQgY2hh
bmdlIGludmFsaWRhdGlvbiBpbnRvIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXSVAuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0Nv
bnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3Zl
QWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpyZXBsYWNlQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVu
ZENoaWxkV2l0aG91dFByZUluc2VydGlvblZhbGlkaXR5Q2hlY2spOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
YWZmZWN0c0VsZW1lbnRzKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OmlzSW5zZXJ0aW9uIGNvbnN0
KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlk
YXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNo
aWxkVHlwZUFsbG93ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGls
ZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvckZvcndhcmRQb3NpdGlvbmFsUnVs
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvckJhY2t3YXJkUG9z
aXRpb25hbFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrRm9yU2libGlu
Z1N0eWxlQ2hhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290Ojpj
aGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9u
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlk
YXRpb246OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6fkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0
ZUFmdGVyQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUludmFs
aWRhdGlvbjo6Y2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjppbnZhbGlkYXRlRm9yRm9yd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6aW52YWxpZGF0ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6Y2hlY2tGb3JTaWJs
aW5nU3R5bGVDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUlu
dmFsaWRhdGlvbjo6Y2hlY2tGb3JTaGFkb3dSb290U3R5bGVDaGFuZ2UpOgorICAgICAgICAqIHN0
eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjplbGVtZW50KToKKyAgICAgICAgKiBzdHls
ZS9TdHlsZUFkanVzdGVyLmg6CisKIDIwMjEtMTEtMTUgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBhbm90aGVyIDxtb2RlbD4gYmFja2VuZCBiYWNrZWQgYnkg
U2NlbmVLaXQgdG8gcHJvdmUgb3V0IE1vZGVsUGxheWVyIGluZnJhc3RydWN0dXJlIGEgYml0IG1v
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggOWQ3NzU0OGNkZWEwYjQ3YjIyMDZiYjU4ZGU2ZDNkYTA4NGU1
Yzc0OC4uYjdiNDRiNjJmYTU1YmI4NDg3MDhmNmE5MjIyYmE3YzRmN2Q3YzIxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTI1MjEsNiArMjUyMSw3IEBAIHN0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKIHN0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAogc3RvcmFnZS9TdG9yYWdlUXVvdGFNYW5h
Z2VyLmNwcAogc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAorc3R5bGUvQ2hp
bGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCiBzdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5j
cHAKIHN0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAogc3R5bGUvSWRDaGFuZ2VJbnZhbGlk
YXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYmQxYjdhOTMyYjM1MDk3N2JmNWY5NDA1YTk2NWQwOGVhODU2OWEyYS4u
YWM0OGIwNDhjYjA5OGZmZjEyZmQ5OTQ1NzNlYzJiMmIzNjAxYTNhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTM0MSw2ICs1
MzQxLDcgQEAKIAkJRTRDMTc4OUIwRUU2OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDMTc4OTYw
RUU2OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0QzI3OTU5MENGOTc0MTkwMEU5N0I5OCAv
KiBSZW5kZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTRDMjc5NTcwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTRDM0IxRkEwRjBFNDE2
MTAwOTY5M0Y2IC8qIExlZ2FjeVRpbGVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDM0IxRjkwRjBFNDE2MTAwOTY5M0Y2IC8qIExlZ2FjeVRp
bGVDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUU0QzRDNjFBMjc0NTJBNzkwMEEwNDBFNyAvKiBDaGlsZENoYW5nZUludmFsaWRhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDNEM2MTgy
NzQ1MkE3OTAwQTA0MEU3IC8qIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi87IH07CiAJCUU0
QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDOTFBMEQxODAyMzQzMTAwQTE3RjZE
IC8qIFRleHRQYWludFN0eWxlLmggKi87IH07CiAJCUU0QzkxQTE2MTgwOTk5RjEwMEExN0Y2RCAv
KiBSZW5kZXJUZXh0TGluZUJveGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNEM5MUExNTE4MDk5OUYxMDBBMTdGNkQgLyogUmVuZGVyVGV4dExpbmVC
b3hlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUU0RDMzRjNCMjUyQUVFQ0QwMDgzN0QwNSAvKiBJbmxpbmVSdW5BbmRPZmZzZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDMzRjM5MjUyQUVFQ0Mw
MDgzN0QwNSAvKiBJbmxpbmVSdW5BbmRPZmZzZXQuaCAqLzsgfTsKQEAgLTE3MDQwLDYgKzE3MDQx
LDggQEAKIAkJRTRDMjc5NTcwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1lZGlhLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0QzNCMUY5MEYwRTQxNjEwMDk2OTNGNiAvKiBMZWdhY3lUaWxlQ2Fj
aGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5VGlsZUNhY2hlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QzNCMUZCMEYwRTQxNzAwMDk2OTNGNiAv
KiBMZWdhY3lUaWxlQ2FjaGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBMZWdhY3lUaWxlQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0
QzRDNjE4Mjc0NTJBNzkwMEEwNDBFNyAvKiBDaGlsZENoYW5nZUludmFsaWRhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGlsZENoYW5nZUludmFsaWRhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEM0QzYxQjI3NDUyQThBMDBBMDQwRTcgLyog
Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2hpbGRDaGFu
Z2VJbnZhbGlkYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEM5MUEw
RDE4MDIzNDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGV4dFBhaW50U3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTRDOTFBMEYxODAyMzQzOTAwQTE3RjZEIC8qIFRleHRQYWludFN0eWxlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRQYWludFN0eWxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRDOTFBMTUxODA5OTlGMTAwQTE3RjZEIC8qIFJl
bmRlclRleHRMaW5lQm94ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVu
ZGVyVGV4dExpbmVCb3hlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzAyNzAs
NiArMzAyNzMsOCBAQAogCQkJCUU0QTgxNEQ3MUM3MEUxMDUwMEJGODVBQyAvKiBBdHRyaWJ1dGVD
aGFuZ2VJbnZhbGlkYXRpb24uY3BwICovLAogCQkJCUU0QTgxNEQ5MUM3MEUxMEQwMEJGODVBQyAv
KiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlFNEFCQUJGNDIzNjhDNkVG
MDBGQTQzNDUgLyogQ2FzY2FkZUxldmVsLmggKi8sCisJCQkJRTRDNEM2MUIyNzQ1MkE4QTAwQTA0
MEU3IC8qIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLywKKwkJCQlFNEM0QzYxODI3NDUy
QTc5MDBBMDQwRTcgLyogQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlFNEE4MTRE
NTFDNkRFRThEMDBCRjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICovLAogCQkJ
CUU0QTgxNEQzMUM2REVDNDAwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oICov
LAogCQkJCUZCREI2MTlBMTZENjAzMkEwMEJCMzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5j
cHAgKi8sCkBAIC0zMjcyMyw2ICszMjcyOCw3IEBACiAJCQkJOTNGMkNDOTMyNDI3RkI5QzAwNTg1
MUQ4IC8qIENoYXJhY3RlclJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0I4RkZEMTE2QUU3
Rjk2MDAzODM4OEQgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRjU1QjNEQjIxMjUxRjEyRDAwM0VGMjY5IC8qIENoZWNrYm94SW5wdXRUeXBl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEM0QzYxQTI3NDUyQTc5MDBBMDQwRTcgLyogQ2hpbGRD
aGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUQ2MTlBMzA4MTQ0RTAwQkUw
MDRCQzMwMiAvKiBDaGlsZExpc3RNdXRhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODE4NzIyMDA5NzdEM0MwMDA1ODI2RDkgLyogQ2hpbGROb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTREODIzNTIwQUY5MkE3OTAwMDRGMDU3IC8qIENocm9tZS5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggNmQ4ZmQxZmQ1NzcwOTIwYjgx
MjMxZDMxNTZmZTUzYjg4OTRjODk4My4uNmM3MGZkMzBiZmQxM2M1M2EwYThhYzgyZDU3ODk3MWE0
ZTUxOTA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMjUsNiArMjUs
NyBAQAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFsbERlc2NlbmRh
bnRzQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmgiCiAj
aW5jbHVkZSAiQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkNsYXNzQ29sbGVj
dGlvbi5oIgogI2luY2x1ZGUgIkNvbW1vblZNLmgiCkBAIC0xMTEsOCArMTEyLDExIEBAIEFMV0FZ
U19JTkxJTkUgTm9kZVZlY3RvciBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbldpdGhT
Y3JpcHRBc3NlcnRpb24oQ2hpCiAKICAgICBkaXNjb25uZWN0U3ViZnJhbWVzSWZOZWVkZWQoKnRo
aXMsIERlc2NlbmRhbnRzT25seSk7CiAKKyAgICBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSBj
aGlsZENoYW5nZSB7IENoaWxkQ2hhbmdlOjpUeXBlOjpBbGxDaGlsZHJlblJlbW92ZWQsIG51bGxw
dHIsIG51bGxwdHIsIHNvdXJjZSB9OworCiAgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3Bl
bnNpb25TY29wZSBzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlczsKICAgICBTY3JpcHREaXNh
bGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CisgICAgU3R5
bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBjaGls
ZENoYW5nZSk7CiAKICAgICBpZiAoVU5MSUtFTFkoaXNTaGFkb3dSb290KCkgfHwgaXNJblNoYWRv
d1RyZWUoKSkpCiAgICAgICAgIGNvbnRhaW5pbmdTaGFkb3dSb290KCktPndpbGxSZW1vdmVBbGxD
aGlsZHJlbigqdGhpcyk7CkBAIC0xMjksNyArMTMzLDcgQEAgQUxXQVlTX0lOTElORSBOb2RlVmVj
dG9yIENvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlwdEFzc2VydGlvbihD
aGkKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZG9jdW1lbnQoKS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKS5pc09ycGhhbigpKTsKIAogICAgIGlmIChkZWZlckNoaWxkcmVu
Q2hhbmdlZCA9PSBEZWZlckNoaWxkcmVuQ2hhbmdlZDo6Tm8pCi0gICAgICAgIGNoaWxkcmVuQ2hh
bmdlZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSB7IENoaWxkQ2hhbmdlOjpUeXBlOjpBbGxD
aGlsZHJlblJlbW92ZWQsIG51bGxwdHIsIG51bGxwdHIsIHNvdXJjZSB9KTsKKyAgICAgICAgY2hp
bGRyZW5DaGFuZ2VkKGNoaWxkQ2hhbmdlKTsKIAogICAgIHJldHVybiBjaGlsZHJlbjsKIH0KQEAg
LTE2MiwxMSArMTY2LDI1IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBDb250YWluZXJOb2RlOjpyZW1v
dmVOb2RlV2l0aFNjcmlwdEFzc2VydGlvbihOb2RlJiBjaGlsZFRvUmVtCiAgICAgaWYgKGNoaWxk
VG9SZW1vdmUucGFyZW50Tm9kZSgpICE9IHRoaXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIENoaWxkQ2hhbmdlIGNoYW5nZTsKICAgICBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHkg
c3VidHJlZU9ic2VydmFiaWxpdHk7CiAgICAgeworICAgICAgICBSZWZQdHI8Tm9kZT4gcHJldmlv
dXNTaWJsaW5nID0gY2hpbGRUb1JlbW92ZS5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICAgICAgUmVm
UHRyPE5vZGU+IG5leHRTaWJsaW5nID0gY2hpbGRUb1JlbW92ZS5uZXh0U2libGluZygpOworCisg
ICAgICAgIENoaWxkQ2hhbmdlIGNoYW5nZTsKKworICAgICAgICBjaGFuZ2UudHlwZSA9IGlzPEVs
ZW1lbnQ+KGNoaWxkVG9SZW1vdmUpID8KKyAgICAgICAgICAgIENoaWxkQ2hhbmdlOjpUeXBlOjpF
bGVtZW50UmVtb3ZlZCA6CisgICAgICAgICAgICAoaXM8VGV4dD4oY2hpbGRUb1JlbW92ZSkgPwor
ICAgICAgICAgICAgICAgIENoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0UmVtb3ZlZCA6CisgICAgICAg
ICAgICAgICAgQ2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkKTsKKyAg
ICAgICAgY2hhbmdlLnByZXZpb3VzU2libGluZ0VsZW1lbnQgPSAoIXByZXZpb3VzU2libGluZyB8
fCBpczxFbGVtZW50PigqcHJldmlvdXNTaWJsaW5nKSkgPyBkb3duY2FzdDxFbGVtZW50PihwcmV2
aW91c1NpYmxpbmcuZ2V0KCkpIDogRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKCpw
cmV2aW91c1NpYmxpbmcpOworICAgICAgICBjaGFuZ2UubmV4dFNpYmxpbmdFbGVtZW50ID0gKCFu
ZXh0U2libGluZyB8fCBpczxFbGVtZW50PigqbmV4dFNpYmxpbmcpKSA/IGRvd25jYXN0PEVsZW1l
bnQ+KG5leHRTaWJsaW5nLmdldCgpKSA6IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKCpu
ZXh0U2libGluZyk7CisgICAgICAgIGNoYW5nZS5zb3VyY2UgPSBzb3VyY2U7CisKICAgICAgICAg
V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNwZW5kV2lkZ2V0SGllcmFy
Y2h5VXBkYXRlczsKICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQg
c2NyaXB0RGlzYWxsb3dlZFNjb3BlOworICAgICAgICBTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlk
YXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIGNoYW5nZSk7CiAKICAgICAgICAgaWYgKFVO
TElLRUxZKGlzU2hhZG93Um9vdCgpIHx8IGlzSW5TaGFkb3dUcmVlKCkpKQogICAgICAgICAgICAg
Y29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+cmVzb2x2ZVNsb3RzQmVmb3JlTm9kZUluc2VydGlvbk9y
UmVtb3ZhbCgpOwpAQCAtMTc2LDE5ICsxOTQsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIENvbnRh
aW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9SZW0K
ICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oY2hpbGRUb1JlbW92ZS5w
YXJlbnROb2RlKCkgPT0gdGhpcyk7CiAgICAgICAgIEFTU0VSVCghY2hpbGRUb1JlbW92ZS5pc0Rv
Y3VtZW50RnJhZ21lbnQoKSk7CiAKLSAgICAgICAgUmVmUHRyPE5vZGU+IHByZXZpb3VzU2libGlu
ZyA9IGNoaWxkVG9SZW1vdmUucHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgICAgIFJlZlB0cjxOb2Rl
PiBuZXh0U2libGluZyA9IGNoaWxkVG9SZW1vdmUubmV4dFNpYmxpbmcoKTsKICAgICAgICAgcmVt
b3ZlQmV0d2VlbihwcmV2aW91c1NpYmxpbmcuZ2V0KCksIG5leHRTaWJsaW5nLmdldCgpLCBjaGls
ZFRvUmVtb3ZlKTsKICAgICAgICAgc3VidHJlZU9ic2VydmFiaWxpdHkgPSBub3RpZnlDaGlsZE5v
ZGVSZW1vdmVkKCp0aGlzLCBjaGlsZFRvUmVtb3ZlKTsKIAotICAgICAgICBjaGFuZ2UudHlwZSA9
IGlzPEVsZW1lbnQ+KGNoaWxkVG9SZW1vdmUpID8KLSAgICAgICAgICAgIENoaWxkQ2hhbmdlOjpU
eXBlOjpFbGVtZW50UmVtb3ZlZCA6Ci0gICAgICAgICAgICAoaXM8VGV4dD4oY2hpbGRUb1JlbW92
ZSkgPwotICAgICAgICAgICAgICAgIENoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0UmVtb3ZlZCA6Ci0g
ICAgICAgICAgICAgICAgQ2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVk
KTsKLSAgICAgICAgY2hhbmdlLnByZXZpb3VzU2libGluZ0VsZW1lbnQgPSAoIXByZXZpb3VzU2li
bGluZyB8fCBpczxFbGVtZW50PigqcHJldmlvdXNTaWJsaW5nKSkgPyBkb3duY2FzdDxFbGVtZW50
PihwcmV2aW91c1NpYmxpbmcuZ2V0KCkpIDogRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJs
aW5nKCpwcmV2aW91c1NpYmxpbmcpOwotICAgICAgICBjaGFuZ2UubmV4dFNpYmxpbmdFbGVtZW50
ID0gKCFuZXh0U2libGluZyB8fCBpczxFbGVtZW50PigqbmV4dFNpYmxpbmcpKSA/IGRvd25jYXN0
PEVsZW1lbnQ+KG5leHRTaWJsaW5nLmdldCgpKSA6IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJs
aW5nKCpuZXh0U2libGluZyk7Ci0gICAgICAgIGNoYW5nZS5zb3VyY2UgPSBzb3VyY2U7CisgICAg
ICAgIGNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogICAgIH0KIAogICAgIGlmIChzb3VyY2UgPT0g
Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJICYmIHN1YnRyZWVPYnNlcnZhYmlsaXR5ID09IFJlbW92
ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eTo6TWF5YmVPYnNlcnZhYmxlQnlSZWZQdHIpCkBAIC0xOTYs
MjIgKzIwNSwzNCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlTm9k
ZVdpdGhTY3JpcHRBc3NlcnRpb24oTm9kZSYgY2hpbGRUb1JlbQogCiAgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
aXNPcnBoYW4oKSk7CiAKLSAgICAvLyBGSVhNRTogTW92ZSBjaGlsZHJlbkNoYW5nZWQgaW50byBT
Y3JpcHREaXNhbGxvd2VkU2NvcGUgYmxvY2suCi0gICAgY2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7
Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogZW51bSBjbGFzcyBSZXBsYWNlZEFsbENoaWxkcmVu
IHsgTm8sIFllcyB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBET01JbnNlcnRpb25Xb3JrPgotc3Rh
dGljIEFMV0FZU19JTkxJTkUgdm9pZCBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3Nl
cnRpb24oQ29udGFpbmVyTm9kZSYgY29udGFpbmVyTm9kZSwgTm9kZSYgY2hpbGQsCitzdGF0aWMg
QUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlv
bihDb250YWluZXJOb2RlJiBjb250YWluZXJOb2RlLCBOb2RlJiBjaGlsZCwgTm9kZSogYmVmb3Jl
Q2hpbGQsCiAgICAgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZSBzb3VyY2UsIFJl
cGxhY2VkQWxsQ2hpbGRyZW4gcmVwbGFjZWRBbGxDaGlsZHJlbiwgRE9NSW5zZXJ0aW9uV29yayBk
b05vZGVJbnNlcnRpb24pCiB7CisgICAgYXV0byBjaGlsZENoYW5nZSA9IFsmXSgpIC0+IENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlIHsKKyAgICAgICAgaWYgKHJlcGxhY2VkQWxsQ2hpbGRyZW4g
PT0gUmVwbGFjZWRBbGxDaGlsZHJlbjo6WWVzKQorICAgICAgICAgICAgcmV0dXJuIHsgQ29udGFp
bmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OkFsbENoaWxkcmVuUmVwbGFjZWQsIG51bGxwdHIs
IG51bGxwdHIsIHNvdXJjZSB9OworICAgICAgICBhdXRvIGluc2VydGlvblR5cGUgPSBjaGlsZC5p
c0VsZW1lbnROb2RlKCkKKyAgICAgICAgICAgID8gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6
OlR5cGU6OkVsZW1lbnRJbnNlcnRlZAorICAgICAgICAgICAgOiAoY2hpbGQuaXNUZXh0Tm9kZSgp
ID8gIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0SW5zZXJ0ZWQgOiBDb250
YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29udGVudHNDaGlsZEluc2VydGVkKTsK
KyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGluc2VydGlvblR5cGUsCisgICAgICAgICAg
ICBiZWZvcmVDaGlsZCA/IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZygqYmVmb3Jl
Q2hpbGQpIDogbnVsbHB0ciwKKyAgICAgICAgICAgICFiZWZvcmVDaGlsZCB8fCBiZWZvcmVDaGls
ZC0+aXNFbGVtZW50Tm9kZSgpID8gZG93bmNhc3Q8RWxlbWVudD4oYmVmb3JlQ2hpbGQpIDogRWxl
bWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoKmJlZm9yZUNoaWxkKSwKKyAgICAgICAgICAgIHNv
dXJjZQorICAgICAgICB9OworICAgIH0oKTsKKwogICAgIE5vZGVWZWN0b3IgcG9zdEluc2VydGlv
bk5vdGlmaWNhdGlvblRhcmdldHM7CiAgICAgewogICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRh
dGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogICAgICAg
ICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2Nv
cGU7CisgICAgICAgIFN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRh
dGlvbihjb250YWluZXJOb2RlLCBjaGlsZENoYW5nZSk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZ
KGNvbnRhaW5lck5vZGUuaXNTaGFkb3dSb290KCkgfHwgY29udGFpbmVyTm9kZS5pc0luU2hhZG93
VHJlZSgpKSkKICAgICAgICAgICAgIGNvbnRhaW5lck5vZGUuY29udGFpbmluZ1NoYWRvd1Jvb3Qo
KS0+cmVzb2x2ZVNsb3RzQmVmb3JlTm9kZUluc2VydGlvbk9yUmVtb3ZhbCgpOwpAQCAtMjE5LDIy
ICsyNDAsOCBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVOb2RlSW5zZXJ0aW9u
V2l0aFNjcmlwdEFzc2VydGlvbihDb250YWluZXJOb2RlJgogICAgICAgICBkb05vZGVJbnNlcnRp
b24oKTsKICAgICAgICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZShjb250YWluZXJOb2RlKS5jaGls
ZEFkZGVkKGNoaWxkKTsKICAgICAgICAgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMg
PSBub3RpZnlDaGlsZE5vZGVJbnNlcnRlZChjb250YWluZXJOb2RlLCBjaGlsZCk7Ci0gICAgfQog
Ci0gICAgLy8gRklYTUU6IE1vdmUgY2hpbGRyZW5DaGFuZ2VkIGludG8gU2NyaXB0RGlzYWxsb3dl
ZFNjb3BlIGJsb2NrLgotICAgIGlmIChyZXBsYWNlZEFsbENoaWxkcmVuID09IFJlcGxhY2VkQWxs
Q2hpbGRyZW46OlllcykKLSAgICAgICAgY29udGFpbmVyTm9kZS5jaGlsZHJlbkNoYW5nZWQoQ29u
dGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgeyBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlw
ZTo6QWxsQ2hpbGRyZW5SZXBsYWNlZCwgbnVsbHB0ciwgbnVsbHB0ciwgc291cmNlIH0pOwotICAg
IGVsc2UgewotICAgICAgICBjb250YWluZXJOb2RlLmNoaWxkcmVuQ2hhbmdlZChDb250YWluZXJO
b2RlOjpDaGlsZENoYW5nZSB7Ci0gICAgICAgICAgICBjaGlsZC5pc0VsZW1lbnROb2RlKCkgPwot
ICAgICAgICAgICAgICAgIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50
SW5zZXJ0ZWQgOgotICAgICAgICAgICAgICAgIChjaGlsZC5pc1RleHROb2RlKCkgPwotICAgICAg
ICAgICAgICAgICAgICBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6VGV4dEluc2Vy
dGVkIDoKLSAgICAgICAgICAgICAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5
cGU6Ok5vbkNvbnRlbnRzQ2hpbGRJbnNlcnRlZCksCi0gICAgICAgICAgICBFbGVtZW50VHJhdmVy
c2FsOjpwcmV2aW91c1NpYmxpbmcoY2hpbGQpLAotICAgICAgICAgICAgRWxlbWVudFRyYXZlcnNh
bDo6bmV4dFNpYmxpbmcoY2hpbGQpLAotICAgICAgICAgICAgc291cmNlCi0gICAgICAgIH0pOwor
ICAgICAgICBjb250YWluZXJOb2RlLmNoaWxkcmVuQ2hhbmdlZChjaGlsZENoYW5nZSk7CiAgICAg
fQogCiAgICAgQVNTRVJUKFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjppc0V2
ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKGNoaWxkKSk7CkBAIC00NDgsNyArNDU1LDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKE5vZGUmIG5ld0No
aWxkLCBOb2RlKiByZWZDaGlsZCkKICAgICAgICAgaWYgKGNoaWxkLT5wYXJlbnROb2RlKCkpCiAg
ICAgICAgICAgICBicmVhazsKIAotICAgICAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3Jp
cHRBc3NlcnRpb24oKnRoaXMsIGNoaWxkLmdldCgpLCBDaGlsZENoYW5nZTo6U291cmNlOjpBUEks
IFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vLCBbJl0geworICAgICAgICBleGVjdXRlTm9kZUluc2Vy
dGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIGNoaWxkLmdldCgpLCBuZXh0LnB0cigpLCBD
aGlsZENoYW5nZTo6U291cmNlOjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vLCBbJl0gewog
ICAgICAgICAgICAgY2hpbGQtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29wZSgpKTsK
ICAgICAgICAgICAgIGluc2VydEJlZm9yZUNvbW1vbihuZXh0LCBjaGlsZCk7CiAgICAgICAgIH0p
OwpAQCAtNTA3LDcgKzUxNCw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVm
b3JlKE5vZGUmIG5ld0NoaWxkLCBOb2RlJiBuZXh0Q2hpbGQpCiAgICAgaWYgKG5leHRDaGlsZC5w
cmV2aW91c1NpYmxpbmcoKSA9PSAmbmV3Q2hpbGQgfHwgJm5leHRDaGlsZCA9PSAmbmV3Q2hpbGQp
IC8vIG5vdGhpbmcgdG8gZG8KICAgICAgICAgcmV0dXJuOwogCi0gICAgZXhlY3V0ZU5vZGVJbnNl
cnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBuZXdDaGlsZCwgQ2hpbGRDaGFuZ2U6OlNv
dXJjZTo6UGFyc2VyLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpObywgWyZdIHsKKyAgICBleGVjdXRl
Tm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIG5ld0NoaWxkLCAmbmV4dENo
aWxkLCBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsIFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5v
LCBbJl0gewogICAgICAgICBpZiAoJmRvY3VtZW50KCkgIT0gJm5ld0NoaWxkLmRvY3VtZW50KCkp
CiAgICAgICAgICAgICBkb2N1bWVudCgpLmFkb3B0Tm9kZShuZXdDaGlsZCk7CiAKQEAgLTU4MSw3
ICs1ODgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQo
Tm9kZSYgbmV3Q2hpbGQsIE5vZGUmIG9sZENoaWxkKQogICAgICAgICBpZiAoY2hpbGQtPnBhcmVu
dE5vZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGV4ZWN1dGVOb2RlSW5zZXJ0
aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQuZ2V0KCksIENoaWxkQ2hhbmdlOjpT
b3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CisgICAgICAgIGV4ZWN1
dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQuZ2V0KCksIHJl
ZkNoaWxkLmdldCgpLCBDaGlsZENoYW5nZTo6U291cmNlOjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRy
ZW46Ok5vLCBbJl0gewogICAgICAgICAgICAgY2hpbGQtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5
KHRyZWVTY29wZSgpKTsKICAgICAgICAgICAgIGlmIChyZWZDaGlsZCkKICAgICAgICAgICAgICAg
ICBpbnNlcnRCZWZvcmVDb21tb24oKnJlZkNoaWxkLCBjaGlsZC5nZXQoKSk7CkBAIC02ODIsNyAr
Njg5LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZXBsYWNlQWxsKE5vZGUqIG5vZGUpCiAgICAg
Q2hpbGRMaXN0TXV0YXRpb25TY29wZSBtdXRhdGlvbigqdGhpcyk7CiAgICAgcmVtb3ZlQWxsQ2hp
bGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgRGVmZXJD
aGlsZHJlbkNoYW5nZWQ6Olllcyk7CiAKLSAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3Jp
cHRBc3NlcnRpb24oKnRoaXMsICpub2RlLCBDaGlsZENoYW5nZTo6U291cmNlOjpBUEksIFJlcGxh
Y2VkQWxsQ2hpbGRyZW46OlllcywgWyZdIHsKKyAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhT
Y3JpcHRBc3NlcnRpb24oKnRoaXMsICpub2RlLCBudWxscHRyLCBDaGlsZENoYW5nZTo6U291cmNl
OjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRyZW46OlllcywgWyZdIHsKICAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgpLCAqdGhpcyk7CiAg
ICAgICAgIG5vZGUtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29wZSgpKTsKICAgICAg
ICAgYXBwZW5kQ2hpbGRDb21tb24oKm5vZGUpOwpAQCAtNzYzLDcgKzc3MCw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkV2l0aG91dFByZUluc2VydGlvblZh
bGlkaXR5Q2hlY2soTm9kCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAvLyBBcHBlbmQg
Y2hpbGQgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdAotICAgICAgICBleGVjdXRlTm9kZUluc2VydGlv
bldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIGNoaWxkLmdldCgpLCBDaGlsZENoYW5nZTo6U291
cmNlOjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vLCBbJl0geworICAgICAgICBleGVjdXRl
Tm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIGNoaWxkLmdldCgpLCBudWxs
cHRyLCBDaGlsZENoYW5nZTo6U291cmNlOjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vLCBb
Jl0gewogICAgICAgICAgICAgY2hpbGQtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29w
ZSgpKTsKICAgICAgICAgICAgIGFwcGVuZENoaWxkQ29tbW9uKGNoaWxkKTsKICAgICAgICAgfSk7
CkBAIC03NzksNyArNzg2LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJzZXJBcHBlbmRDaGls
ZChOb2RlJiBuZXdDaGlsZCkKICAgICBBU1NFUlQoIW5ld0NoaWxkLmlzRG9jdW1lbnRGcmFnbWVu
dCgpKTsKICAgICBBU1NFUlQoIWhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0ZW1wbGF0ZVRhZykpOwog
Ci0gICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBuZXdD
aGlsZCwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpO
bywgWyZdIHsKKyAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRo
aXMsIG5ld0NoaWxkLCBudWxscHRyLCBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsIFJlcGxh
Y2VkQWxsQ2hpbGRyZW46Ok5vLCBbJl0gewogICAgICAgICBpZiAoJmRvY3VtZW50KCkgIT0gJm5l
d0NoaWxkLmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudCgpLmFkb3B0Tm9kZShuZXdD
aGlsZCk7CiAKQEAgLTgxMiw2ICs4MTksOCBAQCBzdGF0aWMgYm9vbCBhZmZlY3RzRWxlbWVudHMo
Y29uc3QgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICBjYXNlIENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0NoaWxkSW5zZXJ0ZWQ6CiAg
ICAgY2FzZSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29udGVudHNDaGls
ZFJlbW92ZWQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIENvbnRhaW5lck5vZGU6
OkNoaWxkQ2hhbmdlOjpUeXBlOjpGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbjoKKyAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4IDNmYjE5YzU5NjVmNDVlNmRiNjdiOTE2
MGJmNGQ5MDcxZjU4ZTE3OTguLmM0NDJjY2JmNWU4N2QyYmI2NTJhZjI0M2RlNzRmN2I0NGRhN2Uz
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAtNzQsNyArNzQsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjbG9uZUNoaWxkTm9kZXMoQ29udGFpbmVyTm9kZSYgY2xvbmUpOwogCiAg
ICAgc3RydWN0IENoaWxkQ2hhbmdlIHsKLSAgICAgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhf
dCB7IEVsZW1lbnRJbnNlcnRlZCwgRWxlbWVudFJlbW92ZWQsIFRleHRJbnNlcnRlZCwgVGV4dFJl
bW92ZWQsIFRleHRDaGFuZ2VkLCBBbGxDaGlsZHJlblJlbW92ZWQsIE5vbkNvbnRlbnRzQ2hpbGRS
ZW1vdmVkLCBOb25Db250ZW50c0NoaWxkSW5zZXJ0ZWQsIEFsbENoaWxkcmVuUmVwbGFjZWQgfTsK
KyAgICAgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7IEVsZW1lbnRJbnNlcnRlZCwgRWxl
bWVudFJlbW92ZWQsIFRleHRJbnNlcnRlZCwgVGV4dFJlbW92ZWQsIFRleHRDaGFuZ2VkLCBBbGxD
aGlsZHJlblJlbW92ZWQsIE5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkLCBOb25Db250ZW50c0NoaWxk
SW5zZXJ0ZWQsIEFsbENoaWxkcmVuUmVwbGFjZWQsIEZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuIH07
CiAgICAgICAgIGVudW0gY2xhc3MgU291cmNlIDogYm9vbCB7IFBhcnNlciwgQVBJIH07CiAKICAg
ICAgICAgQ2hpbGRDaGFuZ2U6OlR5cGUgdHlwZTsKQEAgLTk1LDYgKzk1LDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6VGV4dENoYW5nZWQ6CiAgICAgICAg
ICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpBbGxDaGlsZHJlblJlbW92ZWQ6CiAgICAgICAg
ICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0NoaWxkUmVtb3ZlZDoKKyAg
ICAgICAgICAgIGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6OkZpbmlzaGVkUGFyc2luZ0NoaWxkcmVu
OgogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDVkN2Ix
YmUyNjE2NDBjZjE0MTBlY2EzZWM5MTczYTQwODlhZmQxOGQuLjhmMTlmYzgwOWYxZTBjYzIzZWM0
N2JkNzZkMDAzM2MwYjFkOGY4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJBdHRyLmgiCiAjaW5jbHVkZSAiQXR0cmlidXRlQ2hhbmdlSW52YWxp
ZGF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiQ2hpbGRDaGFuZ2VJ
bnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGll
bnQuaCIKICNpbmNsdWRlICJDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIgpAQCAtMjAzOCw3ICsy
MDM5LDcgQEAgU3R5bGU6OkVsZW1lbnRTdHlsZSBFbGVtZW50OjpyZXNvbHZlU3R5bGUoY29uc3Qg
U3R5bGU6OlJlc29sdXRpb25Db250ZXh0JiByZXNvbHUKICAgICByZXR1cm4gc3R5bGVSZXNvbHZl
cigpLnN0eWxlRm9yRWxlbWVudCgqdGhpcywgcmVzb2x1dGlvbkNvbnRleHQpOwogfQogCi1zdGF0
aWMgdm9pZCBpbnZhbGlkYXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKEVsZW1lbnQqIHNpYmxpbmcp
Cit2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMoRWxlbWVudCogc2libGluZykK
IHsKICAgICBmb3IgKDsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2li
bGluZygpKSB7CiAgICAgICAgIGlmIChzaWJsaW5nLT5zdHlsZUlzQWZmZWN0ZWRCeVByZXZpb3Vz
U2libGluZygpKQpAQCAtMjY0MiwxNDMgKzI2NDMsOSBAQCBib29sIEVsZW1lbnQ6OmNoaWxkVHlw
ZUFsbG93ZWQoTm9kZVR5cGUgdHlwZSkgY29uc3QKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwog
fQotCi1zdGF0aWMgdm9pZCBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UoRWxlbWVudCYgZWxlbWVu
dCkKLXsKLSAgICBpZiAoZWxlbWVudC5zdHlsZUFmZmVjdGVkQnlFbXB0eSgpKSB7Ci0gICAgICAg
IGF1dG8qIHN0eWxlID0gZWxlbWVudC5yZW5kZXJTdHlsZSgpOwotICAgICAgICBpZiAoIXN0eWxl
IHx8ICghc3R5bGUtPmVtcHR5U3RhdGUoKSB8fCBlbGVtZW50Lmhhc0NoaWxkTm9kZXMoKSkpCi0g
ICAgICAgICAgICBlbGVtZW50LmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKLSAgICB9Ci19
Ci0KLQotc3RhdGljIHZvaWQgaW52YWxpZGF0ZUZvckZvcndhcmRQb3NpdGlvbmFsUnVsZXMoRWxl
bWVudCYgcGFyZW50LCBFbGVtZW50KiBlbGVtZW50QWZ0ZXJDaGFuZ2UpCi17Ci0gICAgYm9vbCBj
aGlsZHJlbkFmZmVjdGVkID0gcGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlv
bmFsUnVsZXMoKTsKLSAgICBib29sIGRlc2NlbmRhbnRzQWZmZWN0ZWQgPSBwYXJlbnQuZGVzY2Vu
ZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwotCi0gICAgaWYgKCFjaGls
ZHJlbkFmZmVjdGVkICYmICFkZXNjZW5kYW50c0FmZmVjdGVkKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmb3IgKGF1dG8qIHNpYmxpbmcgPSBlbGVtZW50QWZ0ZXJDaGFuZ2U7IHNpYmxpbmc7IHNp
YmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoY2hp
bGRyZW5BZmZlY3RlZCkKLSAgICAgICAgICAgIHNpYmxpbmctPmludmFsaWRhdGVTdHlsZUludGVy
bmFsKCk7Ci0gICAgICAgIGlmIChkZXNjZW5kYW50c0FmZmVjdGVkKSB7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8qIHNpYmxpbmdDaGlsZCA9IHNpYmxpbmctPmZpcnN0RWxlbWVudENoaWxkKCk7IHNp
YmxpbmdDaGlsZDsgc2libGluZ0NoaWxkID0gc2libGluZ0NoaWxkLT5uZXh0RWxlbWVudFNpYmxp
bmcoKSkKLSAgICAgICAgICAgICAgICBzaWJsaW5nQ2hpbGQtPmludmFsaWRhdGVTdHlsZUZvclN1
YnRyZWVJbnRlcm5hbCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBpbnZh
bGlkYXRlRm9yQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoRWxlbWVudCYgcGFyZW50LCBFbGVtZW50
KiBlbGVtZW50QmVmb3JlQ2hhbmdlKQotewotICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZCA9IHBh
cmVudC5jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwotICAgIGJv
b2wgZGVzY2VuZGFudHNBZmZlY3RlZCA9IHBhcmVudC5kZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNr
d2FyZFBvc2l0aW9uYWxSdWxlcygpOwotCi0gICAgaWYgKCFjaGlsZHJlbkFmZmVjdGVkICYmICFk
ZXNjZW5kYW50c0FmZmVjdGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8qIHNp
YmxpbmcgPSBlbGVtZW50QmVmb3JlQ2hhbmdlOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+
cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgIGlmIChjaGlsZHJlbkFmZmVjdGVk
KQotICAgICAgICAgICAgc2libGluZy0+aW52YWxpZGF0ZVN0eWxlSW50ZXJuYWwoKTsKLSAgICAg
ICAgaWYgKGRlc2NlbmRhbnRzQWZmZWN0ZWQpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byogc2li
bGluZ0NoaWxkID0gc2libGluZy0+Zmlyc3RFbGVtZW50Q2hpbGQoKTsgc2libGluZ0NoaWxkOyBz
aWJsaW5nQ2hpbGQgPSBzaWJsaW5nQ2hpbGQtPm5leHRFbGVtZW50U2libGluZygpKQotICAgICAg
ICAgICAgICAgIHNpYmxpbmdDaGlsZC0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFs
KCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWVudW0gU2libGluZ0NoZWNrVHlwZSB7IEZpbmlz
aGVkUGFyc2luZ0NoaWxkcmVuLCBTaWJsaW5nRWxlbWVudFJlbW92ZWQsIE90aGVyIH07Ci0KLXN0
YXRpYyB2b2lkIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcyhFbGVtZW50JiBwYXJlbnQsIFNp
YmxpbmdDaGVja1R5cGUgY2hlY2tUeXBlLCBFbGVtZW50KiBlbGVtZW50QmVmb3JlQ2hhbmdlLCBF
bGVtZW50KiBlbGVtZW50QWZ0ZXJDaGFuZ2UpCi17Ci0gICAgLy8gOmVtcHR5IHNlbGVjdG9yLgot
ICAgIGNoZWNrRm9yRW1wdHlTdHlsZUNoYW5nZShwYXJlbnQpOwotCi0gICAgaWYgKHBhcmVudC5z
dHlsZVZhbGlkaXR5KCkgPj0gU3R5bGU6OlZhbGlkaXR5OjpTdWJ0cmVlSW52YWxpZCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgLy8gOmZpcnN0LWNoaWxkLiAgSW4gdGhlIHBhcnNlciBjYWxsYmFj
ayBjYXNlLCB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrIGFueXRoaW5nLCBzaW5jZSB3ZSB3ZXJlIHJp
Z2h0IHRoZSBmaXJzdCB0aW1lLgotICAgIC8vIEluIHRoZSBET00gY2FzZSwgd2Ugb25seSBuZWVk
IHRvIGRvIHNvbWV0aGluZyBpZiB8YWZ0ZXJDaGFuZ2V8IGlzIG5vdCAwLgotICAgIC8vIHxhZnRl
ckNoYW5nZXwgaXMgMCBpbiB0aGUgcGFyc2VyIGNhc2UsIHNvIGl0IHdvcmtzIG91dCB0aGF0IHdl
J2xsIHNraXAgdGhpcyBibG9jay4KLSAgICBpZiAocGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRCeUZp
cnN0Q2hpbGRSdWxlcygpICYmIGVsZW1lbnRBZnRlckNoYW5nZSkgewotICAgICAgICAvLyBGaW5k
IG91ciBuZXcgZmlyc3QgY2hpbGQuCi0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBuZXdGaXJzdEVs
ZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdENoaWxkKHBhcmVudCk7Ci0gICAgICAgIC8v
IEZpbmQgdGhlIGZpcnN0IGVsZW1lbnQgbm9kZSBmb2xsb3dpbmcgfGFmdGVyQ2hhbmdlfAotCi0g
ICAgICAgIC8vIFRoaXMgaXMgdGhlIGluc2VydC9hcHBlbmQgY2FzZS4KLSAgICAgICAgaWYgKG5l
d0ZpcnN0RWxlbWVudCAhPSBlbGVtZW50QWZ0ZXJDaGFuZ2UpIHsKLSAgICAgICAgICAgIGF1dG8q
IHN0eWxlID0gZWxlbWVudEFmdGVyQ2hhbmdlLT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAg
aWYgKCFzdHlsZSB8fCBzdHlsZS0+Zmlyc3RDaGlsZFN0YXRlKCkpCi0gICAgICAgICAgICAgICAg
ZWxlbWVudEFmdGVyQ2hhbmdlLT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsK
LSAgICAgICAgfQotCi0gICAgICAgIC8vIFdlIGFsc28gaGF2ZSB0byBoYW5kbGUgbm9kZSByZW1v
dmFsLgotICAgICAgICBpZiAoY2hlY2tUeXBlID09IFNpYmxpbmdFbGVtZW50UmVtb3ZlZCAmJiBu
ZXdGaXJzdEVsZW1lbnQgPT0gZWxlbWVudEFmdGVyQ2hhbmdlICYmIG5ld0ZpcnN0RWxlbWVudCkg
ewotICAgICAgICAgICAgYXV0byogc3R5bGUgPSBuZXdGaXJzdEVsZW1lbnQtPnJlbmRlclN0eWxl
KCk7Ci0gICAgICAgICAgICBpZiAoIXN0eWxlIHx8ICFzdHlsZS0+Zmlyc3RDaGlsZFN0YXRlKCkp
Ci0gICAgICAgICAgICAgICAgbmV3Rmlyc3RFbGVtZW50LT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0
cmVlSW50ZXJuYWwoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIDpsYXN0LWNoaWxkLiAg
SW4gdGhlIHBhcnNlciBjYWxsYmFjayBjYXNlLCB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrIGFueXRo
aW5nLCBzaW5jZSB3ZSB3ZXJlIHJpZ2h0IHRoZSBmaXJzdCB0aW1lLgotICAgIC8vIEluIHRoZSBE
T00gY2FzZSwgd2Ugb25seSBuZWVkIHRvIGRvIHNvbWV0aGluZyBpZiB8YWZ0ZXJDaGFuZ2V8IGlz
IG5vdCAwLgotICAgIGlmIChwYXJlbnQuY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMo
KSAmJiBlbGVtZW50QmVmb3JlQ2hhbmdlKSB7Ci0gICAgICAgIC8vIEZpbmQgb3VyIG5ldyBsYXN0
IGNoaWxkLgotICAgICAgICBSZWZQdHI8RWxlbWVudD4gbmV3TGFzdEVsZW1lbnQgPSBFbGVtZW50
VHJhdmVyc2FsOjpsYXN0Q2hpbGQocGFyZW50KTsKLQotICAgICAgICBpZiAobmV3TGFzdEVsZW1l
bnQgIT0gZWxlbWVudEJlZm9yZUNoYW5nZSkgewotICAgICAgICAgICAgYXV0byogc3R5bGUgPSBl
bGVtZW50QmVmb3JlQ2hhbmdlLT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgaWYgKCFzdHls
ZSB8fCBzdHlsZS0+bGFzdENoaWxkU3RhdGUoKSkKLSAgICAgICAgICAgICAgICBlbGVtZW50QmVm
b3JlQ2hhbmdlLT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIFdlIGFsc28gaGF2ZSB0byBoYW5kbGUgbm9kZSByZW1vdmFsLiAgVGhl
IHBhcnNlciBjYWxsYmFjayBjYXNlIGlzIHNpbWlsYXIgdG8gbm9kZSByZW1vdmFsIGFzIHdlbGwg
aW4gdGhhdCB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUgbGFzdCBjaGlsZAotICAgICAgICAvLyB0byBt
YXRjaCBub3cuCi0gICAgICAgIGlmICgoY2hlY2tUeXBlID09IFNpYmxpbmdFbGVtZW50UmVtb3Zl
ZCB8fCBjaGVja1R5cGUgPT0gRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4pICYmIG5ld0xhc3RFbGVt
ZW50ID09IGVsZW1lbnRCZWZvcmVDaGFuZ2UgJiYgbmV3TGFzdEVsZW1lbnQpIHsKLSAgICAgICAg
ICAgIGF1dG8qIHN0eWxlID0gbmV3TGFzdEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7Ci0gICAgICAg
ICAgICBpZiAoIXN0eWxlIHx8ICFzdHlsZS0+bGFzdENoaWxkU3RhdGUoKSkKLSAgICAgICAgICAg
ICAgICBuZXdMYXN0RWxlbWVudC0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpbnZhbGlkYXRlRm9yU2libGluZ0NvbWJpbmF0b3Jz
KGVsZW1lbnRBZnRlckNoYW5nZSk7Ci0KLSAgICBpbnZhbGlkYXRlRm9yRm9yd2FyZFBvc2l0aW9u
YWxSdWxlcyhwYXJlbnQsIGVsZW1lbnRBZnRlckNoYW5nZSk7Ci0gICAgaW52YWxpZGF0ZUZvckJh
Y2t3YXJkUG9zaXRpb25hbFJ1bGVzKHBhcmVudCwgZWxlbWVudEJlZm9yZUNoYW5nZSk7Ci19Ci0K
IHZvaWQgRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2Up
CiB7CiAgICAgQ29udGFpbmVyTm9kZTo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7Ci0gICAgaWYg
KGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQotICAgICAgICBj
aGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UoKnRoaXMpOwotICAgIGVsc2UgewotICAgICAgICBhdXRv
IGNoZWNrVHlwZSA9IGNoYW5nZS50eXBlID09IENoaWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50UmVt
b3ZlZCA/IFNpYmxpbmdFbGVtZW50UmVtb3ZlZCA6IE90aGVyOwotICAgICAgICBjaGVja0ZvclNp
YmxpbmdTdHlsZUNoYW5nZXMoKnRoaXMsIGNoZWNrVHlwZSwgY2hhbmdlLnByZXZpb3VzU2libGlu
Z0VsZW1lbnQsIGNoYW5nZS5uZXh0U2libGluZ0VsZW1lbnQpOwotICAgIH0KLQotICAgIGlmIChT
aGFkb3dSb290KiBzaGFkb3dSb290ID0gdGhpcy0+c2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIHN3
aXRjaCAoY2hhbmdlLnR5cGUpIHsKLSAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6RWxl
bWVudEluc2VydGVkOgotICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50UmVt
b3ZlZDoKLSAgICAgICAgICAgIC8vIEZvciBlbGVtZW50cywgd2Ugbm90aWZ5IHNoYWRvd1Jvb3Qg
aW4gRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IgYW5kIEVsZW1lbnQ6OnJlbW92ZWRGcm9t
QW5jZXN0b3IuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6
VHlwZTo6QWxsQ2hpbGRyZW5SZW1vdmVkOgotICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBl
OjpBbGxDaGlsZHJlblJlcGxhY2VkOgotICAgICAgICAgICAgc2hhZG93Um9vdC0+ZGlkUmVtb3Zl
QWxsQ2hpbGRyZW5PZlNoYWRvd0hvc3QoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0SW5zZXJ0ZWQ6Ci0gICAgICAgIGNhc2UgQ2hpbGRD
aGFuZ2U6OlR5cGU6OlRleHRSZW1vdmVkOgotICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBl
OjpUZXh0Q2hhbmdlZDoKLSAgICAgICAgICAgIHNoYWRvd1Jvb3QtPmRpZENoYW5nZURlZmF1bHRT
bG90KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlw
ZTo6Tm9uQ29udGVudHNDaGlsZEluc2VydGVkOgotICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpU
eXBlOjpOb25Db250ZW50c0NoaWxkUmVtb3ZlZDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgfQogfQogCiB2b2lkIEVsZW1lbnQ6OnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKQEAgLTI4MDIsNyArMjY2
OSwxMyBAQCB2b2lkIEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiB7CiAgICAgQ29u
dGFpbmVyTm9kZTo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAgICAgc2V0SXNQYXJzaW5nQ2hp
bGRyZW5GaW5pc2hlZCgpOwotICAgIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcygqdGhpcywg
RmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4sIEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RDaGlsZCgqdGhp
cyksIG51bGxwdHIpOworCisgICAgU3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uIGludmFs
aWRhdGlvbigqdGhpcywgeworICAgICAgICBDaGlsZENoYW5nZTo6VHlwZTo6RmluaXNoZWRQYXJz
aW5nQ2hpbGRyZW4sCisgICAgICAgIEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RDaGlsZCgqdGhpcyks
CisgICAgICAgIG51bGxwdHIsCisgICAgICAgIENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcgor
ICAgIH0pOwogfQogCiBzdGF0aWMgdm9pZCBhcHBlbmRBdHRyaWJ1dGVzKFN0cmluZ0J1aWxkZXIm
IGJ1aWxkZXIsIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCAw
NGNlNjVkZTZlODcyY2YwOTNkMmNjYWYwZGYxOGFiOTZlN2E0ZTgyLi5lZjdjZTg5OThkZTAzZjIw
ZjQyMGYwOTVjMzgxN2RkMDUxNDMxZWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTc2Myw2ICs3
NjMsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxFbGVtZW50RGF0YT4gbV9lbGVtZW50RGF0YTsK
IH07CiAKK3ZvaWQgaW52YWxpZGF0ZUZvclNpYmxpbmdDb21iaW5hdG9ycyhFbGVtZW50KiBzaWJs
aW5nKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0JFR0lOKFdlYkNvcmU6OkVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXgg
NTNmMjM5YmJhZjZiM2YyNDkyNTJmMDI2Mzg1YTFlZGYwOThjMjY1Mi4uOTFjMjZmMTRkOWJkMDJi
M2ZmZjFmNjAyYjBkOWMzZDlkOGYxOWUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApA
QCAtMTQ0LDYgKzE0NCw5IEBAIHZvaWQgU2hhZG93Um9vdDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0
IENoaWxkQ2hhbmdlJiBjaGlsZENoYW5nZSkKICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpO
b25Db250ZW50c0NoaWxkSW5zZXJ0ZWQ6CiAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6QWxs
Q2hpbGRyZW5SZXBsYWNlZDoKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGlsZENoYW5nZTo6
VHlwZTo6RmluaXNoZWRQYXJzaW5nQ2hpbGRyZW46CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBicmVhazsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNjYyZWFkOGJlYjNm
NmJiZDI0NzdjODRiZTAyNjI1NDMwNjBhYjc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCkBAIC0wLDAgKzEsMjAxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNoaWxkQ2hhbmdl
SW52YWxpZGF0aW9uLmgiCisKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSAiU2xv
dEFzc2lnbm1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmU6OlN0eWxlIHsKKworQ2hpbGRDaGFu
Z2VJbnZhbGlkYXRpb246OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uKENvbnRhaW5lck5vZGUmIGNv
bnRhaW5lciwgY29uc3QgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UmIGNoaWxkQ2hhbmdlKQor
ICAgIDogbV9pc0VuYWJsZWQoaXM8RWxlbWVudD4oY29udGFpbmVyKSA/IGRvd25jYXN0PEVsZW1l
bnQ+KGNvbnRhaW5lcikubmVlZHNTdHlsZUludmFsaWRhdGlvbigpIDogZmFsc2UpCisgICAgLCBt
X2NvbnRhaW5lcihjb250YWluZXIpCisgICAgLCBtX2NoaWxkQ2hhbmdlKGNoaWxkQ2hhbmdlKQor
eworfQorCitDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6fkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9u
KCkKK3sKKyAgICBpZiAoIW1faXNFbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnZh
bGlkYXRlQWZ0ZXJDaGFuZ2UoKTsKK30KKwordm9pZCBDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6
aW52YWxpZGF0ZUFmdGVyQ2hhbmdlKCkKK3sKKyAgICBpZiAobV9jaGlsZENoYW5nZS50eXBlID09
IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpGaW5pc2hlZFBhcnNpbmdDaGlsZHJl
bikgeworICAgICAgICBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmIChtX2NoaWxkQ2hhbmdlLnNvdXJjZSA9PSBDb250YWluZXJO
b2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpIHsKKyAgICAgICAgY2hlY2tGb3JFbXB0
eVN0eWxlQ2hhbmdlKCk7CisgICAgICAgIGNoZWNrRm9yU2hhZG93Um9vdFN0eWxlQ2hhbmdlKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2Uo
KTsKKyAgICBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoKTsKKyAgICBjaGVja0ZvclNoYWRv
d1Jvb3RTdHlsZUNoYW5nZSgpOworfQorCit2b2lkIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjpj
aGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UoKQoreworICAgIGF1dG8mIGVsZW1lbnQgPSB0aGlzLT5l
bGVtZW50KCk7CisgICAgaWYgKCFlbGVtZW50LnN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8qIHN0eWxlID0gZWxlbWVudC5yZW5kZXJTdHlsZSgpOwor
ICAgIGlmICghc3R5bGUgfHwgKCFzdHlsZS0+ZW1wdHlTdGF0ZSgpIHx8IGVsZW1lbnQuaGFzQ2hp
bGROb2RlcygpKSkKKyAgICAgICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7
Cit9CisKK3N0YXRpYyB2b2lkIGludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKEVs
ZW1lbnQmIHBhcmVudCwgRWxlbWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQoreworICAgIGJvb2wg
Y2hpbGRyZW5BZmZlY3RlZCA9IHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKCk7CisgICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVkID0gcGFyZW50LmRlc2Nl
bmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKworICAgIGlmICghY2hp
bGRyZW5BZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNBZmZlY3RlZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudEFmdGVyQ2hhbmdlOyBzaWJsaW5nOyBz
aWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKGNo
aWxkcmVuQWZmZWN0ZWQpCisgICAgICAgICAgICBzaWJsaW5nLT5pbnZhbGlkYXRlU3R5bGVJbnRl
cm5hbCgpOworICAgICAgICBpZiAoZGVzY2VuZGFudHNBZmZlY3RlZCkgeworICAgICAgICAgICAg
Zm9yIChhdXRvKiBzaWJsaW5nQ2hpbGQgPSBzaWJsaW5nLT5maXJzdEVsZW1lbnRDaGlsZCgpOyBz
aWJsaW5nQ2hpbGQ7IHNpYmxpbmdDaGlsZCA9IHNpYmxpbmdDaGlsZC0+bmV4dEVsZW1lbnRTaWJs
aW5nKCkpCisgICAgICAgICAgICAgICAgc2libGluZ0NoaWxkLT5pbnZhbGlkYXRlU3R5bGVGb3JT
dWJ0cmVlSW50ZXJuYWwoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgaW52
YWxpZGF0ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxlbWVu
dCogZWxlbWVudEJlZm9yZUNoYW5nZSkKK3sKKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWQgPSBw
YXJlbnQuY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICBi
b29sIGRlc2NlbmRhbnRzQWZmZWN0ZWQgPSBwYXJlbnQuZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKworICAgIGlmICghY2hpbGRyZW5BZmZlY3RlZCAmJiAh
ZGVzY2VuZGFudHNBZmZlY3RlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvKiBz
aWJsaW5nID0gZWxlbWVudEJlZm9yZUNoYW5nZTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmct
PnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoY2hpbGRyZW5BZmZlY3Rl
ZCkKKyAgICAgICAgICAgIHNpYmxpbmctPmludmFsaWRhdGVTdHlsZUludGVybmFsKCk7CisgICAg
ICAgIGlmIChkZXNjZW5kYW50c0FmZmVjdGVkKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8qIHNp
YmxpbmdDaGlsZCA9IHNpYmxpbmctPmZpcnN0RWxlbWVudENoaWxkKCk7IHNpYmxpbmdDaGlsZDsg
c2libGluZ0NoaWxkID0gc2libGluZ0NoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKKyAgICAg
ICAgICAgICAgICBzaWJsaW5nQ2hpbGQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5h
bCgpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9u
OjpjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoKQoreworICAgIGF1dG8mIHBhcmVudCA9IGVs
ZW1lbnQoKTsKKyAgICBhdXRvKiBlbGVtZW50QmVmb3JlQ2hhbmdlID0gbV9jaGlsZENoYW5nZS5w
cmV2aW91c1NpYmxpbmdFbGVtZW50OworICAgIGF1dG8qIGVsZW1lbnRBZnRlckNoYW5nZSA9IG1f
Y2hpbGRDaGFuZ2UubmV4dFNpYmxpbmdFbGVtZW50OworCisgICAgaWYgKHBhcmVudC5zdHlsZVZh
bGlkaXR5KCkgPj0gU3R5bGU6OlZhbGlkaXR5OjpTdWJ0cmVlSW52YWxpZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gOmZpcnN0LWNoaWxkLiBJbiB0aGUgcGFyc2VyIGNhbGxiYWNrIGNhc2Us
IHdlIGRvbid0IGhhdmUgdG8gY2hlY2sgYW55dGhpbmcsIHNpbmNlIHdlIHdlcmUgcmlnaHQgdGhl
IGZpcnN0IHRpbWUuCisgICAgLy8gSW4gdGhlIERPTSBjYXNlLCB3ZSBvbmx5IG5lZWQgdG8gZG8g
c29tZXRoaW5nIGlmIHxhZnRlckNoYW5nZXwgaXMgbm90IDAuCisgICAgLy8gfGFmdGVyQ2hhbmdl
fCBpcyAwIGluIHRoZSBwYXJzZXIgY2FzZSwgc28gaXQgd29ya3Mgb3V0IHRoYXQgd2UnbGwgc2tp
cCB0aGlzIGJsb2NrLgorICAgIGlmIChwYXJlbnQuY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGls
ZFJ1bGVzKCkgJiYgZWxlbWVudEFmdGVyQ2hhbmdlKSB7CisgICAgICAgIC8vIEZpbmQgb3VyIG5l
dyBmaXJzdCBjaGlsZC4KKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0ZpcnN0RWxlbWVudCA9
IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQocGFyZW50KTsKKyAgICAgICAgLy8gRmluZCB0
aGUgZmlyc3QgZWxlbWVudCBub2RlIGZvbGxvd2luZyB8YWZ0ZXJDaGFuZ2V8CisKKyAgICAgICAg
Ly8gVGhpcyBpcyB0aGUgaW5zZXJ0L2FwcGVuZCBjYXNlLgorICAgICAgICBpZiAobmV3Rmlyc3RF
bGVtZW50ICE9IGVsZW1lbnRBZnRlckNoYW5nZSkgeworICAgICAgICAgICAgYXV0byogc3R5bGUg
PSBlbGVtZW50QWZ0ZXJDaGFuZ2UtPnJlbmRlclN0eWxlKCk7CisgICAgICAgICAgICBpZiAoIXN0
eWxlIHx8IHN0eWxlLT5maXJzdENoaWxkU3RhdGUoKSkKKyAgICAgICAgICAgICAgICBlbGVtZW50
QWZ0ZXJDaGFuZ2UtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gV2UgYWxzbyBoYXZlIHRvIGhhbmRsZSBub2RlIHJlbW92YWwuCisg
ICAgICAgIGlmIChtX2NoaWxkQ2hhbmdlLnR5cGUgPT0gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2U6OlR5cGU6OkVsZW1lbnRSZW1vdmVkICYmIG5ld0ZpcnN0RWxlbWVudCA9PSBlbGVtZW50QWZ0
ZXJDaGFuZ2UgJiYgbmV3Rmlyc3RFbGVtZW50KSB7CisgICAgICAgICAgICBhdXRvKiBzdHlsZSA9
IG5ld0ZpcnN0RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgICAgIGlmICghc3R5bGUg
fHwgIXN0eWxlLT5maXJzdENoaWxkU3RhdGUoKSkKKyAgICAgICAgICAgICAgICBuZXdGaXJzdEVs
ZW1lbnQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gOmxhc3QtY2hpbGQuIEluIHRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSwg
d2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnl0aGluZywgc2luY2Ugd2Ugd2VyZSByaWdodCB0aGUg
Zmlyc3QgdGltZS4KKyAgICAvLyBJbiB0aGUgRE9NIGNhc2UsIHdlIG9ubHkgbmVlZCB0byBkbyBz
b21ldGhpbmcgaWYgfGFmdGVyQ2hhbmdlfCBpcyBub3QgMC4KKyAgICBpZiAocGFyZW50LmNoaWxk
cmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgJiYgZWxlbWVudEJlZm9yZUNoYW5nZSkgewor
ICAgICAgICAvLyBGaW5kIG91ciBuZXcgbGFzdCBjaGlsZC4KKyAgICAgICAgUmVmUHRyPEVsZW1l
bnQ+IG5ld0xhc3RFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKHBhcmVudCk7
CisKKyAgICAgICAgaWYgKG5ld0xhc3RFbGVtZW50ICE9IGVsZW1lbnRCZWZvcmVDaGFuZ2UpIHsK
KyAgICAgICAgICAgIGF1dG8qIHN0eWxlID0gZWxlbWVudEJlZm9yZUNoYW5nZS0+cmVuZGVyU3R5
bGUoKTsKKyAgICAgICAgICAgIGlmICghc3R5bGUgfHwgc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkp
CisgICAgICAgICAgICAgICAgZWxlbWVudEJlZm9yZUNoYW5nZS0+aW52YWxpZGF0ZVN0eWxlRm9y
U3VidHJlZUludGVybmFsKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBhbHNvIGhhdmUg
dG8gaGFuZGxlIG5vZGUgcmVtb3ZhbC4gVGhlIHBhcnNlciBjYWxsYmFjayBjYXNlIGlzIHNpbWls
YXIgdG8gbm9kZSByZW1vdmFsIGFzIHdlbGwgaW4gdGhhdCB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUg
bGFzdCBjaGlsZAorICAgICAgICAvLyB0byBtYXRjaCBub3cuCisgICAgICAgIGJvb2wgcmVtb3Zl
ZE9yRmluaXNoZWQgPSBtX2NoaWxkQ2hhbmdlLnR5cGUgPT0gQ29udGFpbmVyTm9kZTo6Q2hpbGRD
aGFuZ2U6OlR5cGU6OkVsZW1lbnRSZW1vdmVkIHx8IG1fY2hpbGRDaGFuZ2UudHlwZSA9PSBDb250
YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6RmluaXNoZWRQYXJzaW5nQ2hpbGRyZW47Cisg
ICAgICAgIGlmIChyZW1vdmVkT3JGaW5pc2hlZCAmJiBuZXdMYXN0RWxlbWVudCA9PSBlbGVtZW50
QmVmb3JlQ2hhbmdlICYmIG5ld0xhc3RFbGVtZW50KSB7CisgICAgICAgICAgICBhdXRvKiBzdHls
ZSA9IG5ld0xhc3RFbGVtZW50LT5yZW5kZXJTdHlsZSgpOworICAgICAgICAgICAgaWYgKCFzdHls
ZSB8fCAhc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkpCisgICAgICAgICAgICAgICAgbmV3TGFzdEVs
ZW1lbnQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgaW52YWxpZGF0ZUZvclNpYmxpbmdDb21iaW5hdG9ycyhlbGVtZW50QWZ0ZXJD
aGFuZ2UpOworCisgICAgaW52YWxpZGF0ZUZvckZvcndhcmRQb3NpdGlvbmFsUnVsZXMocGFyZW50
LCBlbGVtZW50QWZ0ZXJDaGFuZ2UpOworICAgIGludmFsaWRhdGVGb3JCYWNrd2FyZFBvc2l0aW9u
YWxSdWxlcyhwYXJlbnQsIGVsZW1lbnRCZWZvcmVDaGFuZ2UpOworfQorCit2b2lkIENoaWxkQ2hh
bmdlSW52YWxpZGF0aW9uOjpjaGVja0ZvclNoYWRvd1Jvb3RTdHlsZUNoYW5nZSgpCit7CisgICAg
YXV0byogc2hhZG93Um9vdCA9IGVsZW1lbnQoKS5zaGFkb3dSb290KCk7CisgICAgaWYgKCFzaGFk
b3dSb290KQorICAgICAgICByZXR1cm47CisKKyAgICBzd2l0Y2ggKG1fY2hpbGRDaGFuZ2UudHlw
ZSkgeworICAgIGNhc2UgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRJ
bnNlcnRlZDoKKyAgICBjYXNlIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpFbGVt
ZW50UmVtb3ZlZDoKKyAgICAgICAgLy8gRm9yIGVsZW1lbnRzLCB3ZSBub3RpZnkgc2hhZG93Um9v
dCBpbiBFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvciBhbmQgRWxlbWVudDo6cmVtb3ZlZEZy
b21BbmNlc3Rvci4KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb250YWluZXJOb2RlOjpDaGls
ZENoYW5nZTo6VHlwZTo6QWxsQ2hpbGRyZW5SZW1vdmVkOgorICAgIGNhc2UgQ29udGFpbmVyTm9k
ZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OkFsbENoaWxkcmVuUmVwbGFjZWQ6CisgICAgICAgIHNoYWRv
d1Jvb3QtPmRpZFJlbW92ZUFsbENoaWxkcmVuT2ZTaGFkb3dIb3N0KCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OlRleHRJbnNlcnRl
ZDoKKyAgICBjYXNlIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0UmVtb3Zl
ZDoKKyAgICBjYXNlIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdl
ZDoKKyAgICAgICAgc2hhZG93Um9vdC0+ZGlkQ2hhbmdlRGVmYXVsdFNsb3QoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29u
dGVudHNDaGlsZEluc2VydGVkOgorICAgIGNhc2UgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6
OlR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkOgorICAgIGNhc2UgQ29udGFpbmVyTm9kZTo6
Q2hpbGRDaGFuZ2U6OlR5cGU6OkZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuOgorICAgICAgICBicmVh
azsKKyAgICB9Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NoaWxk
Q2hhbmdlSW52YWxpZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUlu
dmFsaWRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlNjljMWVmNTgyMmMxOGM0M2IwMTcyY2MwYjE2ZDM4
ZGU3NTYzZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENo
YW5nZUludmFsaWRhdGlvbi5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFt
ZXNwYWNlIFN0eWxlIHsKKworY2xhc3MgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24geworcHVibGlj
OgorICAgIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uKENvbnRhaW5lck5vZGUmLCBjb25zdCBDb250
YWluZXJOb2RlOjpDaGlsZENoYW5nZSYpOworICAgIH5DaGlsZENoYW5nZUludmFsaWRhdGlvbigp
OworCitwcml2YXRlOgorICAgIHZvaWQgaW52YWxpZGF0ZUFmdGVyQ2hhbmdlKCk7CisgICAgdm9p
ZCBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UoKTsKKyAgICB2b2lkIGNoZWNrRm9yU2libGluZ1N0
eWxlQ2hhbmdlcygpOworICAgIHZvaWQgY2hlY2tGb3JTaGFkb3dSb290U3R5bGVDaGFuZ2UoKTsK
KworICAgIEVsZW1lbnQmIGVsZW1lbnQoKSB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50PihtX2Nv
bnRhaW5lcik7IH0KKworICAgIGNvbnN0IGJvb2wgbV9pc0VuYWJsZWQ7CisgICAgQ29udGFpbmVy
Tm9kZSYgbV9jb250YWluZXI7CisKKyAgICBjb25zdCBDb250YWluZXJOb2RlOjpDaGlsZENoYW5n
ZSYgbV9jaGlsZENoYW5nZTsKK307CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlQWRqdXN0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0
ZXIuaAppbmRleCAxOTEzMWU1ODBmNTY0NWFlYTIyMzI4Mjk0ZTlkNzYxZWJmODM1ZDY3Li45NzJh
MWFiZDE1MjA2MDU2MDE4MzQzMWY2NDg0Nzk5ODM4ZDk5ZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZUFkanVzdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVBZGp1c3Rlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAiVGV4dFNpemVBZGp1c3RtZW50
LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444664</attachid>
            <date>2021-11-18 06:13:33 -0800</date>
            <delta_ts>2021-11-18 08:43:14 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-233311-20211118161331.patch</filename>
            <type>text/plain</type>
            <size>39820</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1ODUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAyZjkzMWRjYTIwM2Mw
NTE5NDBiM2JkOWM2MzAyYjRlN2M4MTM2Ni4uZGZmMmUzMjVhMWViM2JiZThkZmQyMzljYTAwMDNk
ODIxMWZjYTg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTExLTE4ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgY2hpbGQgY2hh
bmdlIGludmFsaWRhdGlvbiBpbnRvIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXSVAuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0Nv
bnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3Zl
QWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpyZXBsYWNlQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVu
ZENoaWxkV2l0aG91dFByZUluc2VydGlvblZhbGlkaXR5Q2hlY2spOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6
YWZmZWN0c0VsZW1lbnRzKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OmlzSW5zZXJ0aW9uIGNvbnN0
KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlk
YXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNo
aWxkVHlwZUFsbG93ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGls
ZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvckZvcndhcmRQb3NpdGlvbmFsUnVs
ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvckJhY2t3YXJkUG9z
aXRpb25hbFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrRm9yU2libGlu
Z1N0eWxlQ2hhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290Ojpj
aGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9u
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlk
YXRpb246OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6fkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0
ZUFmdGVyQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUludmFs
aWRhdGlvbjo6Y2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjppbnZhbGlkYXRlRm9yRm9yd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6aW52YWxpZGF0ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6Y2hlY2tGb3JTaWJs
aW5nU3R5bGVDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUlu
dmFsaWRhdGlvbjo6Y2hlY2tGb3JTaGFkb3dSb290U3R5bGVDaGFuZ2UpOgorICAgICAgICAqIHN0
eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjplbGVtZW50KToKKyAgICAgICAgKiBzdHls
ZS9TdHlsZUFkanVzdGVyLmg6CisKIDIwMjEtMTEtMTUgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBhbm90aGVyIDxtb2RlbD4gYmFja2VuZCBiYWNrZWQgYnkg
U2NlbmVLaXQgdG8gcHJvdmUgb3V0IE1vZGVsUGxheWVyIGluZnJhc3RydWN0dXJlIGEgYml0IG1v
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggOWQ3NzU0OGNkZWEwYjQ3YjIyMDZiYjU4ZGU2ZDNkYTA4NGU1
Yzc0OC4uYjdiNDRiNjJmYTU1YmI4NDg3MDhmNmE5MjIyYmE3YzRmN2Q3YzIxNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTI1MjEsNiArMjUyMSw3IEBAIHN0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKIHN0b3Jh
Z2UvU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAogc3RvcmFnZS9TdG9yYWdlUXVvdGFNYW5h
Z2VyLmNwcAogc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAorc3R5bGUvQ2hp
bGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCiBzdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5j
cHAKIHN0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAogc3R5bGUvSWRDaGFuZ2VJbnZhbGlk
YXRpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYmQxYjdhOTMyYjM1MDk3N2JmNWY5NDA1YTk2NWQwOGVhODU2OWEyYS4u
YWM0OGIwNDhjYjA5OGZmZjEyZmQ5OTQ1NzNlYzJiMmIzNjAxYTNhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTM0MSw2ICs1
MzQxLDcgQEAKIAkJRTRDMTc4OUIwRUU2OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDMTc4OTYw
RUU2OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0QzI3OTU5MENGOTc0MTkwMEU5N0I5OCAv
KiBSZW5kZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTRDMjc5NTcwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTRDM0IxRkEwRjBFNDE2
MTAwOTY5M0Y2IC8qIExlZ2FjeVRpbGVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDM0IxRjkwRjBFNDE2MTAwOTY5M0Y2IC8qIExlZ2FjeVRp
bGVDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUU0QzRDNjFBMjc0NTJBNzkwMEEwNDBFNyAvKiBDaGlsZENoYW5nZUludmFsaWRhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDNEM2MTgy
NzQ1MkE3OTAwQTA0MEU3IC8qIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi87IH07CiAJCUU0
QzkxQTBFMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDOTFBMEQxODAyMzQzMTAwQTE3RjZE
IC8qIFRleHRQYWludFN0eWxlLmggKi87IH07CiAJCUU0QzkxQTE2MTgwOTk5RjEwMEExN0Y2RCAv
KiBSZW5kZXJUZXh0TGluZUJveGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNEM5MUExNTE4MDk5OUYxMDBBMTdGNkQgLyogUmVuZGVyVGV4dExpbmVC
b3hlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUU0RDMzRjNCMjUyQUVFQ0QwMDgzN0QwNSAvKiBJbmxpbmVSdW5BbmRPZmZzZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDMzRjM5MjUyQUVFQ0Mw
MDgzN0QwNSAvKiBJbmxpbmVSdW5BbmRPZmZzZXQuaCAqLzsgfTsKQEAgLTE3MDQwLDYgKzE3MDQx
LDggQEAKIAkJRTRDMjc5NTcwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1lZGlhLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0QzNCMUY5MEYwRTQxNjEwMDk2OTNGNiAvKiBMZWdhY3lUaWxlQ2Fj
aGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5VGlsZUNhY2hlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QzNCMUZCMEYwRTQxNzAwMDk2OTNGNiAv
KiBMZWdhY3lUaWxlQ2FjaGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBMZWdhY3lUaWxlQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0
QzRDNjE4Mjc0NTJBNzkwMEEwNDBFNyAvKiBDaGlsZENoYW5nZUludmFsaWRhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDaGlsZENoYW5nZUludmFsaWRhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEM0QzYxQjI3NDUyQThBMDBBMDQwRTcgLyog
Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2hpbGRDaGFu
Z2VJbnZhbGlkYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEM5MUEw
RDE4MDIzNDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGV4dFBhaW50U3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTRDOTFBMEYxODAyMzQzOTAwQTE3RjZEIC8qIFRleHRQYWludFN0eWxlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRQYWludFN0eWxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRDOTFBMTUxODA5OTlGMTAwQTE3RjZEIC8qIFJl
bmRlclRleHRMaW5lQm94ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVu
ZGVyVGV4dExpbmVCb3hlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzAyNzAs
NiArMzAyNzMsOCBAQAogCQkJCUU0QTgxNEQ3MUM3MEUxMDUwMEJGODVBQyAvKiBBdHRyaWJ1dGVD
aGFuZ2VJbnZhbGlkYXRpb24uY3BwICovLAogCQkJCUU0QTgxNEQ5MUM3MEUxMEQwMEJGODVBQyAv
KiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlFNEFCQUJGNDIzNjhDNkVG
MDBGQTQzNDUgLyogQ2FzY2FkZUxldmVsLmggKi8sCisJCQkJRTRDNEM2MUIyNzQ1MkE4QTAwQTA0
MEU3IC8qIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLywKKwkJCQlFNEM0QzYxODI3NDUy
QTc5MDBBMDQwRTcgLyogQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlFNEE4MTRE
NTFDNkRFRThEMDBCRjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICovLAogCQkJ
CUU0QTgxNEQzMUM2REVDNDAwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oICov
LAogCQkJCUZCREI2MTlBMTZENjAzMkEwMEJCMzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5j
cHAgKi8sCkBAIC0zMjcyMyw2ICszMjcyOCw3IEBACiAJCQkJOTNGMkNDOTMyNDI3RkI5QzAwNTg1
MUQ4IC8qIENoYXJhY3RlclJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0I4RkZEMTE2QUU3
Rjk2MDAzODM4OEQgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRjU1QjNEQjIxMjUxRjEyRDAwM0VGMjY5IC8qIENoZWNrYm94SW5wdXRUeXBl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEM0QzYxQTI3NDUyQTc5MDBBMDQwRTcgLyogQ2hpbGRD
aGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUQ2MTlBMzA4MTQ0RTAwQkUw
MDRCQzMwMiAvKiBDaGlsZExpc3RNdXRhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODE4NzIyMDA5NzdEM0MwMDA1ODI2RDkgLyogQ2hpbGROb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTREODIzNTIwQUY5MkE3OTAwMDRGMDU3IC8qIENocm9tZS5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggNmQ4ZmQxZmQ1NzcwOTIwYjgx
MjMxZDMxNTZmZTUzYjg4OTRjODk4My4uMTY1NjM4N2M1ZjcxMzVjMWFiNTZhZTM1YjczM2E5NDA0
ZmE4MzdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMjUsNiArMjUs
NyBAQAogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIkFsbERlc2NlbmRh
bnRzQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmgiCiAj
aW5jbHVkZSAiQ2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkNsYXNzQ29sbGVj
dGlvbi5oIgogI2luY2x1ZGUgIkNvbW1vblZNLmgiCkBAIC0xMTEsMjkgKzExMiw1MiBAQCBBTFdB
WVNfSU5MSU5FIE5vZGVWZWN0b3IgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRo
U2NyaXB0QXNzZXJ0aW9uKENoaQogCiAgICAgZGlzY29ubmVjdFN1YmZyYW1lc0lmTmVlZGVkKCp0
aGlzLCBEZXNjZW5kYW50c09ubHkpOwogCisgICAgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2Ug
Y2hpbGRDaGFuZ2UgeyBDaGlsZENoYW5nZTo6VHlwZTo6QWxsQ2hpbGRyZW5SZW1vdmVkLCBudWxs
cHRyLCBudWxscHRyLCBzb3VyY2UgfTsKKwogICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNw
ZW5zaW9uU2NvcGUgc3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXM7CiAgICAgU2NyaXB0RGlz
YWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOworICAgIHsK
KyAgICAgICAgU3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9u
KCp0aGlzLCBjaGlsZENoYW5nZSk7CiAKLSAgICBpZiAoVU5MSUtFTFkoaXNTaGFkb3dSb290KCkg
fHwgaXNJblNoYWRvd1RyZWUoKSkpCi0gICAgICAgIGNvbnRhaW5pbmdTaGFkb3dSb290KCktPndp
bGxSZW1vdmVBbGxDaGlsZHJlbigqdGhpcyk7CisgICAgICAgIGlmIChVTkxJS0VMWShpc1NoYWRv
d1Jvb3QoKSB8fCBpc0luU2hhZG93VHJlZSgpKSkKKyAgICAgICAgICAgIGNvbnRhaW5pbmdTaGFk
b3dSb290KCktPndpbGxSZW1vdmVBbGxDaGlsZHJlbigqdGhpcyk7CiAKLSAgICBkb2N1bWVudCgp
Lm5vZGVDaGlsZHJlbldpbGxCZVJlbW92ZWQoKnRoaXMpOworICAgICAgICBkb2N1bWVudCgpLm5v
ZGVDaGlsZHJlbldpbGxCZVJlbW92ZWQoKnRoaXMpOwogCi0gICAgd2hpbGUgKFJlZlB0cjxOb2Rl
PiBjaGlsZCA9IG1fZmlyc3RDaGlsZCkgewotICAgICAgICByZW1vdmVCZXR3ZWVuKG51bGxwdHIs
IGNoaWxkLT5uZXh0U2libGluZygpLCAqY2hpbGQpOwotICAgICAgICBhdXRvIHN1YnRyZWVPYnNl
cnZhYmlsaXR5ID0gbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZCgqdGhpcywgKmNoaWxkKTsKLSAgICAg
ICAgaWYgKHNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpBUEkgJiYgc3VidHJlZU9ic2Vy
dmFiaWxpdHkgPT0gUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5OjpNYXliZU9ic2VydmFibGVC
eVJlZlB0cikKLSAgICAgICAgICAgIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVt
b3ZhbChjaGlsZC5nZXQoKSk7CisgICAgICAgIHdoaWxlIChSZWZQdHI8Tm9kZT4gY2hpbGQgPSBt
X2ZpcnN0Q2hpbGQpIHsKKyAgICAgICAgICAgIHJlbW92ZUJldHdlZW4obnVsbHB0ciwgY2hpbGQt
Pm5leHRTaWJsaW5nKCksICpjaGlsZCk7CisgICAgICAgICAgICBhdXRvIHN1YnRyZWVPYnNlcnZh
YmlsaXR5ID0gbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZCgqdGhpcywgKmNoaWxkKTsKKyAgICAgICAg
ICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJICYmIHN1YnRyZWVPYnNl
cnZhYmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eTo6TWF5YmVPYnNlcnZhYmxl
QnlSZWZQdHIpCisgICAgICAgICAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3JwaGFuZWRUcmVl
QnlSZW1vdmFsKGNoaWxkLmdldCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFkb2N1bWVudCgpLnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpLmlzT3JwaGFuKCkpOwogCiAgICAgaWYgKGRlZmVyQ2hpbGRyZW5DaGFuZ2VkID09IERlZmVy
Q2hpbGRyZW5DaGFuZ2VkOjpObykKLSAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKENvbnRhaW5lck5v
ZGU6OkNoaWxkQ2hhbmdlIHsgQ2hpbGRDaGFuZ2U6OlR5cGU6OkFsbENoaWxkcmVuUmVtb3ZlZCwg
bnVsbHB0ciwgbnVsbHB0ciwgc291cmNlIH0pOworICAgICAgICBjaGlsZHJlbkNoYW5nZWQoY2hp
bGRDaGFuZ2UpOwogCiAgICAgcmV0dXJuIGNoaWxkcmVuOwogfQogCitzdGF0aWMgQ29udGFpbmVy
Tm9kZTo6Q2hpbGRDaGFuZ2UgbWFrZUNoaWxkQ2hhbmdlRm9yUmVtb3ZhbChOb2RlJiBjaGlsZFRv
UmVtb3ZlLCBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSkKK3sKKyAg
ICBhdXRvIGNoYW5nZVR5cGUgPSBbJl0geworICAgICAgICBpZiAoaXM8RWxlbWVudD4oY2hpbGRU
b1JlbW92ZSkpCisgICAgICAgICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6
OlR5cGU6OkVsZW1lbnRSZW1vdmVkOworICAgICAgICBpZiAoaXM8VGV4dD4oY2hpbGRUb1JlbW92
ZSkpCisgICAgICAgICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6
OlRleHRSZW1vdmVkOworICAgICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6
OlR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkOworICAgIH0oKTsKKworICAgIHJldHVybiB7
CisgICAgICAgIGNoYW5nZVR5cGUsCisgICAgICAgIEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3Vz
U2libGluZyhjaGlsZFRvUmVtb3ZlKSwKKyAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNp
YmxpbmcoY2hpbGRUb1JlbW92ZSksCisgICAgICAgIHNvdXJjZQorICAgIH07Cit9CisKIEFMV0FZ
U19JTkxJTkUgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVOb2RlV2l0aFNjcmlwdEFzc2VydGlv
bihOb2RlJiBjaGlsZFRvUmVtb3ZlLCBDaGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSkKIHsKICAg
ICBSZWY8Tm9kZT4gcHJvdGVjdGVkQ2hpbGRUb1JlbW92ZShjaGlsZFRvUmVtb3ZlKTsKQEAgLTE2
MiwxMSArMTg2LDEzIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVO
b2RlV2l0aFNjcmlwdEFzc2VydGlvbihOb2RlJiBjaGlsZFRvUmVtCiAgICAgaWYgKGNoaWxkVG9S
ZW1vdmUucGFyZW50Tm9kZSgpICE9IHRoaXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IENoaWxkQ2hhbmdlIGNoYW5nZTsKKyAgICBhdXRvIGNoaWxkQ2hhbmdlID0gbWFrZUNoaWxkQ2hh
bmdlRm9yUmVtb3ZhbChjaGlsZFRvUmVtb3ZlLCBzb3VyY2UpOworCiAgICAgUmVtb3ZlZFN1YnRy
ZWVPYnNlcnZhYmlsaXR5IHN1YnRyZWVPYnNlcnZhYmlsaXR5OwogICAgIHsKICAgICAgICAgV2lk
Z2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNwZW5kV2lkZ2V0SGllcmFyY2h5
VXBkYXRlczsKICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2Ny
aXB0RGlzYWxsb3dlZFNjb3BlOworICAgICAgICBTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRp
b24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIGNoaWxkQ2hhbmdlKTsKIAogICAgICAgICBpZiAo
VU5MSUtFTFkoaXNTaGFkb3dSb290KCkgfHwgaXNJblNoYWRvd1RyZWUoKSkpCiAgICAgICAgICAg
ICBjb250YWluaW5nU2hhZG93Um9vdCgpLT5yZXNvbHZlU2xvdHNCZWZvcmVOb2RlSW5zZXJ0aW9u
T3JSZW1vdmFsKCk7CkBAIC0xNzgsMTcgKzIwNCw5IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBDb250
YWluZXJOb2RlOjpyZW1vdmVOb2RlV2l0aFNjcmlwdEFzc2VydGlvbihOb2RlJiBjaGlsZFRvUmVt
CiAKICAgICAgICAgUmVmUHRyPE5vZGU+IHByZXZpb3VzU2libGluZyA9IGNoaWxkVG9SZW1vdmUu
cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgICAgIFJlZlB0cjxOb2RlPiBuZXh0U2libGluZyA9IGNo
aWxkVG9SZW1vdmUubmV4dFNpYmxpbmcoKTsKKwogICAgICAgICByZW1vdmVCZXR3ZWVuKHByZXZp
b3VzU2libGluZy5nZXQoKSwgbmV4dFNpYmxpbmcuZ2V0KCksIGNoaWxkVG9SZW1vdmUpOwogICAg
ICAgICBzdWJ0cmVlT2JzZXJ2YWJpbGl0eSA9IG5vdGlmeUNoaWxkTm9kZVJlbW92ZWQoKnRoaXMs
IGNoaWxkVG9SZW1vdmUpOwotCi0gICAgICAgIGNoYW5nZS50eXBlID0gaXM8RWxlbWVudD4oY2hp
bGRUb1JlbW92ZSkgPwotICAgICAgICAgICAgQ2hpbGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRSZW1v
dmVkIDoKLSAgICAgICAgICAgIChpczxUZXh0PihjaGlsZFRvUmVtb3ZlKSA/Ci0gICAgICAgICAg
ICAgICAgQ2hpbGRDaGFuZ2U6OlR5cGU6OlRleHRSZW1vdmVkIDoKLSAgICAgICAgICAgICAgICBD
aGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29udGVudHNDaGlsZFJlbW92ZWQpOwotICAgICAgICBjaGFu
Z2UucHJldmlvdXNTaWJsaW5nRWxlbWVudCA9ICghcHJldmlvdXNTaWJsaW5nIHx8IGlzPEVsZW1l
bnQ+KCpwcmV2aW91c1NpYmxpbmcpKSA/IGRvd25jYXN0PEVsZW1lbnQ+KHByZXZpb3VzU2libGlu
Zy5nZXQoKSkgOiBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoKnByZXZpb3VzU2li
bGluZyk7Ci0gICAgICAgIGNoYW5nZS5uZXh0U2libGluZ0VsZW1lbnQgPSAoIW5leHRTaWJsaW5n
IHx8IGlzPEVsZW1lbnQ+KCpuZXh0U2libGluZykpID8gZG93bmNhc3Q8RWxlbWVudD4obmV4dFNp
YmxpbmcuZ2V0KCkpIDogRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoKm5leHRTaWJsaW5n
KTsKLSAgICAgICAgY2hhbmdlLnNvdXJjZSA9IHNvdXJjZTsKICAgICB9CiAKICAgICBpZiAoc291
cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSAmJiBzdWJ0cmVlT2JzZXJ2YWJpbGl0eSA9
PSBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHk6Ok1heWJlT2JzZXJ2YWJsZUJ5UmVmUHRyKQpA
QCAtMTk3LDIxICsyMTUsNDUgQEAgQUxXQVlTX0lOTElORSBib29sIENvbnRhaW5lck5vZGU6OnJl
bW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9SZW0KICAgICBBU1NFUlRf
V0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZG9jdW1lbnQoKS5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS5pc09ycGhhbigpKTsKIAogICAgIC8vIEZJWE1FOiBNb3ZlIGNoaWxkcmVuQ2hhbmdlZCBp
bnRvIFNjcmlwdERpc2FsbG93ZWRTY29wZSBibG9jay4KLSAgICBjaGlsZHJlbkNoYW5nZWQoY2hh
bmdlKTsKKyAgICBjaGlsZHJlbkNoYW5nZWQoY2hpbGRDaGFuZ2UpOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIGVudW0gY2xhc3MgUmVwbGFjZWRBbGxDaGlsZHJlbiB7IE5vLCBZZXMgfTsKIAor
c3RhdGljIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlIG1ha2VDaGlsZENoYW5nZUZvckluc2Vy
dGlvbihOb2RlJiBjaGlsZCwgTm9kZSogYmVmb3JlQ2hpbGQsIENvbnRhaW5lck5vZGU6OkNoaWxk
Q2hhbmdlOjpTb3VyY2Ugc291cmNlLCBSZXBsYWNlZEFsbENoaWxkcmVuIHJlcGxhY2VkQWxsQ2hp
bGRyZW4pCit7CisgICAgaWYgKHJlcGxhY2VkQWxsQ2hpbGRyZW4gPT0gUmVwbGFjZWRBbGxDaGls
ZHJlbjo6WWVzKQorICAgICAgICByZXR1cm4geyBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6
VHlwZTo6QWxsQ2hpbGRyZW5SZXBsYWNlZCwgbnVsbHB0ciwgbnVsbHB0ciwgc291cmNlIH07CisK
KyAgICBhdXRvIGNoYW5nZVR5cGUgPSBbJl0geworICAgICAgICBpZiAoaXM8RWxlbWVudD4oY2hp
bGQpKQorICAgICAgICAgICAgcmV0dXJuIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBl
OjpFbGVtZW50SW5zZXJ0ZWQ7CisgICAgICAgIGlmIChpczxUZXh0PihjaGlsZCkpCisgICAgICAg
ICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OlRleHRJbnNlcnRl
ZDsKKyAgICAgICAgcmV0dXJuIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpOb25D
b250ZW50c0NoaWxkSW5zZXJ0ZWQ7CisgICAgfSgpOworCisgICAgcmV0dXJuIHsKKyAgICAgICAg
Y2hhbmdlVHlwZSwKKyAgICAgICAgYmVmb3JlQ2hpbGQgPyBFbGVtZW50VHJhdmVyc2FsOjpwcmV2
aW91c1NpYmxpbmcoKmJlZm9yZUNoaWxkKSA6IG51bGxwdHIsCisgICAgICAgICFiZWZvcmVDaGls
ZCB8fCBiZWZvcmVDaGlsZC0+aXNFbGVtZW50Tm9kZSgpID8gZG93bmNhc3Q8RWxlbWVudD4oYmVm
b3JlQ2hpbGQpIDogRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoKmJlZm9yZUNoaWxkKSwK
KyAgICAgICAgc291cmNlCisgICAgfTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgRE9NSW5zZXJ0
aW9uV29yaz4KLXN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZXhlY3V0ZU5vZGVJbnNlcnRpb25X
aXRoU2NyaXB0QXNzZXJ0aW9uKENvbnRhaW5lck5vZGUmIGNvbnRhaW5lck5vZGUsIE5vZGUmIGNo
aWxkLAorc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBleGVjdXRlTm9kZUluc2VydGlvbldpdGhT
Y3JpcHRBc3NlcnRpb24oQ29udGFpbmVyTm9kZSYgY29udGFpbmVyTm9kZSwgTm9kZSYgY2hpbGQs
IE5vZGUqIGJlZm9yZUNoaWxkLAogICAgIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3Vy
Y2Ugc291cmNlLCBSZXBsYWNlZEFsbENoaWxkcmVuIHJlcGxhY2VkQWxsQ2hpbGRyZW4sIERPTUlu
c2VydGlvbldvcmsgZG9Ob2RlSW5zZXJ0aW9uKQogeworICAgIGF1dG8gY2hpbGRDaGFuZ2UgPSBt
YWtlQ2hpbGRDaGFuZ2VGb3JJbnNlcnRpb24oY2hpbGQsIGJlZm9yZUNoaWxkLCBzb3VyY2UsIHJl
cGxhY2VkQWxsQ2hpbGRyZW4pOworCiAgICAgTm9kZVZlY3RvciBwb3N0SW5zZXJ0aW9uTm90aWZp
Y2F0aW9uVGFyZ2V0czsKICAgICB7CiAgICAgICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNw
ZW5zaW9uU2NvcGUgc3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXM7CiAgICAgICAgIFNjcmlw
dERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKKyAg
ICAgICAgU3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKGNv
bnRhaW5lck5vZGUsIGNoaWxkQ2hhbmdlKTsKIAogICAgICAgICBpZiAoVU5MSUtFTFkoY29udGFp
bmVyTm9kZS5pc1NoYWRvd1Jvb3QoKSB8fCBjb250YWluZXJOb2RlLmlzSW5TaGFkb3dUcmVlKCkp
KQogICAgICAgICAgICAgY29udGFpbmVyTm9kZS5jb250YWluaW5nU2hhZG93Um9vdCgpLT5yZXNv
bHZlU2xvdHNCZWZvcmVOb2RlSW5zZXJ0aW9uT3JSZW1vdmFsKCk7CkBAIC0yMjIsMjAgKzI2NCw3
IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2Ny
aXB0QXNzZXJ0aW9uKENvbnRhaW5lck5vZGUmCiAgICAgfQogCiAgICAgLy8gRklYTUU6IE1vdmUg
Y2hpbGRyZW5DaGFuZ2VkIGludG8gU2NyaXB0RGlzYWxsb3dlZFNjb3BlIGJsb2NrLgotICAgIGlm
IChyZXBsYWNlZEFsbENoaWxkcmVuID09IFJlcGxhY2VkQWxsQ2hpbGRyZW46OlllcykKLSAgICAg
ICAgY29udGFpbmVyTm9kZS5jaGlsZHJlbkNoYW5nZWQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2UgeyBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6QWxsQ2hpbGRyZW5SZXBsYWNl
ZCwgbnVsbHB0ciwgbnVsbHB0ciwgc291cmNlIH0pOwotICAgIGVsc2UgewotICAgICAgICBjb250
YWluZXJOb2RlLmNoaWxkcmVuQ2hhbmdlZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSB7Ci0g
ICAgICAgICAgICBjaGlsZC5pc0VsZW1lbnROb2RlKCkgPwotICAgICAgICAgICAgICAgIENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50SW5zZXJ0ZWQgOgotICAgICAgICAg
ICAgICAgIChjaGlsZC5pc1RleHROb2RlKCkgPwotICAgICAgICAgICAgICAgICAgICBDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6VGV4dEluc2VydGVkIDoKLSAgICAgICAgICAgICAg
ICAgICAgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRJ
bnNlcnRlZCksCi0gICAgICAgICAgICBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmco
Y2hpbGQpLAotICAgICAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoY2hpbGQp
LAotICAgICAgICAgICAgc291cmNlCi0gICAgICAgIH0pOwotICAgIH0KKyAgICBjb250YWluZXJO
b2RlLmNoaWxkcmVuQ2hhbmdlZChjaGlsZENoYW5nZSk7CiAKICAgICBBU1NFUlQoU2NyaXB0RGlz
YWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQ6OmlzRXZlbnREaXNwYXRjaEFsbG93ZWRJblN1YnRy
ZWUoY2hpbGQpKTsKICAgICBmb3IgKGF1dG8mIHRhcmdldCA6IHBvc3RJbnNlcnRpb25Ob3RpZmlj
YXRpb25UYXJnZXRzKQpAQCAtNDQ4LDcgKzQ3Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRh
aW5lck5vZGU6Omluc2VydEJlZm9yZShOb2RlJiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQpCiAg
ICAgICAgIGlmIChjaGlsZC0+cGFyZW50Tm9kZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBjaGls
ZC5nZXQoKSwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpO
bywgWyZdIHsKKyAgICAgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9u
KCp0aGlzLCBjaGlsZC5nZXQoKSwgbmV4dC5wdHIoKSwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJ
LCBSZXBsYWNlZEFsbENoaWxkcmVuOjpObywgWyZdIHsKICAgICAgICAgICAgIGNoaWxkLT5zZXRU
cmVlU2NvcGVSZWN1cnNpdmVseSh0cmVlU2NvcGUoKSk7CiAgICAgICAgICAgICBpbnNlcnRCZWZv
cmVDb21tb24obmV4dCwgY2hpbGQpOwogICAgICAgICB9KTsKQEAgLTUwNyw3ICs1MzYsNyBAQCB2
b2lkIENvbnRhaW5lck5vZGU6OnBhcnNlckluc2VydEJlZm9yZShOb2RlJiBuZXdDaGlsZCwgTm9k
ZSYgbmV4dENoaWxkKQogICAgIGlmIChuZXh0Q2hpbGQucHJldmlvdXNTaWJsaW5nKCkgPT0gJm5l
d0NoaWxkIHx8ICZuZXh0Q2hpbGQgPT0gJm5ld0NoaWxkKSAvLyBub3RoaW5nIHRvIGRvCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlv
bigqdGhpcywgbmV3Q2hpbGQsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgUmVwbGFjZWRB
bGxDaGlsZHJlbjo6Tm8sIFsmXSB7CisgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0
QXNzZXJ0aW9uKCp0aGlzLCBuZXdDaGlsZCwgJm5leHRDaGlsZCwgQ2hpbGRDaGFuZ2U6OlNvdXJj
ZTo6UGFyc2VyLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpObywgWyZdIHsKICAgICAgICAgaWYgKCZk
b2N1bWVudCgpICE9ICZuZXdDaGlsZC5kb2N1bWVudCgpKQogICAgICAgICAgICAgZG9jdW1lbnQo
KS5hZG9wdE5vZGUobmV3Q2hpbGQpOwogCkBAIC01ODEsNyArNjEwLDcgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKE5vZGUmIG5ld0NoaWxkLCBOb2RlJiBv
bGRDaGlsZCkKICAgICAgICAgaWYgKGNoaWxkLT5wYXJlbnROb2RlKCkpCiAgICAgICAgICAgICBi
cmVhazsKIAotICAgICAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24o
KnRoaXMsIGNoaWxkLmdldCgpLCBDaGlsZENoYW5nZTo6U291cmNlOjpBUEksIFJlcGxhY2VkQWxs
Q2hpbGRyZW46Ok5vLCBbJl0geworICAgICAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3Jp
cHRBc3NlcnRpb24oKnRoaXMsIGNoaWxkLmdldCgpLCByZWZDaGlsZC5nZXQoKSwgQ2hpbGRDaGFu
Z2U6OlNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpObywgWyZdIHsKICAgICAgICAg
ICAgIGNoaWxkLT5zZXRUcmVlU2NvcGVSZWN1cnNpdmVseSh0cmVlU2NvcGUoKSk7CiAgICAgICAg
ICAgICBpZiAocmVmQ2hpbGQpCiAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKCpy
ZWZDaGlsZCwgY2hpbGQuZ2V0KCkpOwpAQCAtNjgyLDcgKzcxMSw3IEBAIHZvaWQgQ29udGFpbmVy
Tm9kZTo6cmVwbGFjZUFsbChOb2RlKiBub2RlKQogICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUg
bXV0YXRpb24oKnRoaXMpOwogICAgIHJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlwdEFzc2VydGlv
bihDaGlsZENoYW5nZTo6U291cmNlOjpBUEksIERlZmVyQ2hpbGRyZW5DaGFuZ2VkOjpZZXMpOwog
Ci0gICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCAqbm9k
ZSwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpZZXMsIFsm
XSB7CisgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCAq
bm9kZSwgbnVsbHB0ciwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxk
cmVuOjpZZXMsIFsmXSB7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbElu
c2VydERPTU5vZGUoZG9jdW1lbnQoKSwgKnRoaXMpOwogICAgICAgICBub2RlLT5zZXRUcmVlU2Nv
cGVSZWN1cnNpdmVseSh0cmVlU2NvcGUoKSk7CiAgICAgICAgIGFwcGVuZENoaWxkQ29tbW9uKCpu
b2RlKTsKQEAgLTc2Myw3ICs3OTIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2Rl
OjphcHBlbmRDaGlsZFdpdGhvdXRQcmVJbnNlcnRpb25WYWxpZGl0eUNoZWNrKE5vZAogICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgLy8gQXBwZW5kIGNoaWxkIHRvIHRoZSBlbmQgb2YgdGhl
IGxpc3QKLSAgICAgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0
aGlzLCBjaGlsZC5nZXQoKSwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENo
aWxkcmVuOjpObywgWyZdIHsKKyAgICAgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0
QXNzZXJ0aW9uKCp0aGlzLCBjaGlsZC5nZXQoKSwgbnVsbHB0ciwgQ2hpbGRDaGFuZ2U6OlNvdXJj
ZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpObywgWyZdIHsKICAgICAgICAgICAgIGNoaWxk
LT5zZXRUcmVlU2NvcGVSZWN1cnNpdmVseSh0cmVlU2NvcGUoKSk7CiAgICAgICAgICAgICBhcHBl
bmRDaGlsZENvbW1vbihjaGlsZCk7CiAgICAgICAgIH0pOwpAQCAtNzc5LDcgKzgwOCw3IEBAIHZv
aWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQoTm9kZSYgbmV3Q2hpbGQpCiAgICAg
QVNTRVJUKCFuZXdDaGlsZC5pc0RvY3VtZW50RnJhZ21lbnQoKSk7CiAgICAgQVNTRVJUKCFoYXNU
YWdOYW1lKEhUTUxOYW1lczo6dGVtcGxhdGVUYWcpKTsKIAotICAgIGV4ZWN1dGVOb2RlSW5zZXJ0
aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgbmV3Q2hpbGQsIENoaWxkQ2hhbmdlOjpTb3Vy
Y2U6OlBhcnNlciwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CisgICAgZXhlY3V0ZU5v
ZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBuZXdDaGlsZCwgbnVsbHB0ciwg
Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpObywgWyZd
IHsKICAgICAgICAgaWYgKCZkb2N1bWVudCgpICE9ICZuZXdDaGlsZC5kb2N1bWVudCgpKQogICAg
ICAgICAgICAgZG9jdW1lbnQoKS5hZG9wdE5vZGUobmV3Q2hpbGQpOwogCkBAIC04MTIsNiArODQx
LDggQEAgc3RhdGljIGJvb2wgYWZmZWN0c0VsZW1lbnRzKGNvbnN0IENvbnRhaW5lck5vZGU6OkNo
aWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgY2FzZSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6
VHlwZTo6Tm9uQ29udGVudHNDaGlsZEluc2VydGVkOgogICAgIGNhc2UgQ29udGFpbmVyTm9kZTo6
Q2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkOgogICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgY2FzZSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6Rmlu
aXNoZWRQYXJzaW5nQ2hpbGRyZW46CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuaAppbmRleCAzZmIxOWM1OTY1ZjQ1ZTZkYjY3YjkxNjBiZjRkOTA3MWY1OGUxNzk4Li5jNDQy
Y2NiZjVlODdkMmJiNjUyYWYyNDNkZTc0ZjdiNDRkYTdlMzJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xvbmVDaGls
ZE5vZGVzKENvbnRhaW5lck5vZGUmIGNsb25lKTsKIAogICAgIHN0cnVjdCBDaGlsZENoYW5nZSB7
Ci0gICAgICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBFbGVtZW50SW5zZXJ0ZWQsIEVs
ZW1lbnRSZW1vdmVkLCBUZXh0SW5zZXJ0ZWQsIFRleHRSZW1vdmVkLCBUZXh0Q2hhbmdlZCwgQWxs
Q2hpbGRyZW5SZW1vdmVkLCBOb25Db250ZW50c0NoaWxkUmVtb3ZlZCwgTm9uQ29udGVudHNDaGls
ZEluc2VydGVkLCBBbGxDaGlsZHJlblJlcGxhY2VkIH07CisgICAgICAgIGVudW0gY2xhc3MgVHlw
ZSA6IHVpbnQ4X3QgeyBFbGVtZW50SW5zZXJ0ZWQsIEVsZW1lbnRSZW1vdmVkLCBUZXh0SW5zZXJ0
ZWQsIFRleHRSZW1vdmVkLCBUZXh0Q2hhbmdlZCwgQWxsQ2hpbGRyZW5SZW1vdmVkLCBOb25Db250
ZW50c0NoaWxkUmVtb3ZlZCwgTm9uQ29udGVudHNDaGlsZEluc2VydGVkLCBBbGxDaGlsZHJlblJl
cGxhY2VkLCBGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbiB9OwogICAgICAgICBlbnVtIGNsYXNzIFNv
dXJjZSA6IGJvb2wgeyBQYXJzZXIsIEFQSSB9OwogCiAgICAgICAgIENoaWxkQ2hhbmdlOjpUeXBl
IHR5cGU7CkBAIC05NSw2ICs5NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNhc2UgQ2hpbGRD
aGFuZ2U6OlR5cGU6OlRleHRDaGFuZ2VkOgogICAgICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6
VHlwZTo6QWxsQ2hpbGRyZW5SZW1vdmVkOgogICAgICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6
VHlwZTo6Tm9uQ29udGVudHNDaGlsZFJlbW92ZWQ6CisgICAgICAgICAgICBjYXNlIENoaWxkQ2hh
bmdlOjpUeXBlOjpGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbjoKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA1ZDdiMWJlMjYxNjQwY2YxNDEwZWNhM2VjOTE3
M2E0MDg5YWZkMThkLi5iZDcwMTJlYWY3ZGI3MzllODI2ZmFmMTJmOGEyY2YwOWNjYjk4YzQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQXR0ci5o
IgogI2luY2x1ZGUgIkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5oIgogI2luY2x1ZGUgIkNT
U1BhcnNlci5oIgorI2luY2x1ZGUgIkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmgiCiAjaW5jbHVk
ZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb24uaCIKQEAgLTIwMzgsNyArMjAzOSw3IEBAIFN0eWxlOjpFbGVtZW50
U3R5bGUgRWxlbWVudDo6cmVzb2x2ZVN0eWxlKGNvbnN0IFN0eWxlOjpSZXNvbHV0aW9uQ29udGV4
dCYgcmVzb2x1CiAgICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvckVsZW1lbnQoKnRo
aXMsIHJlc29sdXRpb25Db250ZXh0KTsKIH0KIAotc3RhdGljIHZvaWQgaW52YWxpZGF0ZUZvclNp
YmxpbmdDb21iaW5hdG9ycyhFbGVtZW50KiBzaWJsaW5nKQordm9pZCBpbnZhbGlkYXRlRm9yU2li
bGluZ0NvbWJpbmF0b3JzKEVsZW1lbnQqIHNpYmxpbmcpCiB7CiAgICAgZm9yICg7IHNpYmxpbmc7
IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkgewogICAgICAgICBpZiAo
c2libGluZy0+c3R5bGVJc0FmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcoKSkKQEAgLTI2NDIsMTI0
ICsyNjQzLDExIEBAIGJvb2wgRWxlbWVudDo6Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSB0eXBl
KSBjb25zdAogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9Ci0KLXN0YXRpYyB2b2lkIGNoZWNr
Rm9yRW1wdHlTdHlsZUNoYW5nZShFbGVtZW50JiBlbGVtZW50KQotewotICAgIGlmIChlbGVtZW50
LnN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkpIHsKLSAgICAgICAgYXV0byogc3R5bGUgPSBlbGVtZW50
LnJlbmRlclN0eWxlKCk7Ci0gICAgICAgIGlmICghc3R5bGUgfHwgKCFzdHlsZS0+ZW1wdHlTdGF0
ZSgpIHx8IGVsZW1lbnQuaGFzQ2hpbGROb2RlcygpKSkKLSAgICAgICAgICAgIGVsZW1lbnQuaW52
YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwotICAgIH0KLX0KLQotCi1zdGF0aWMgdm9pZCBpbnZh
bGlkYXRlRm9yRm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhFbGVtZW50JiBwYXJlbnQsIEVsZW1lbnQq
IGVsZW1lbnRBZnRlckNoYW5nZSkKLXsKLSAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWQgPSBwYXJl
bnQuY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOwotICAgIGJvb2wg
ZGVzY2VuZGFudHNBZmZlY3RlZCA9IHBhcmVudC5kZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7Ci0KLSAgICBpZiAoIWNoaWxkcmVuQWZmZWN0ZWQgJiYgIWRlc2Nl
bmRhbnRzQWZmZWN0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoYXV0byogc2libGlu
ZyA9IGVsZW1lbnRBZnRlckNoYW5nZTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRF
bGVtZW50U2libGluZygpKSB7Ci0gICAgICAgIGlmIChjaGlsZHJlbkFmZmVjdGVkKQotICAgICAg
ICAgICAgc2libGluZy0+aW52YWxpZGF0ZVN0eWxlSW50ZXJuYWwoKTsKLSAgICAgICAgaWYgKGRl
c2NlbmRhbnRzQWZmZWN0ZWQpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byogc2libGluZ0NoaWxk
ID0gc2libGluZy0+Zmlyc3RFbGVtZW50Q2hpbGQoKTsgc2libGluZ0NoaWxkOyBzaWJsaW5nQ2hp
bGQgPSBzaWJsaW5nQ2hpbGQtPm5leHRFbGVtZW50U2libGluZygpKQotICAgICAgICAgICAgICAg
IHNpYmxpbmdDaGlsZC0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGludmFsaWRhdGVGb3JCYWNrd2FyZFBvc2l0
aW9uYWxSdWxlcyhFbGVtZW50JiBwYXJlbnQsIEVsZW1lbnQqIGVsZW1lbnRCZWZvcmVDaGFuZ2Up
Ci17Ci0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkID0gcGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVk
ID0gcGFyZW50LmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7
Ci0KLSAgICBpZiAoIWNoaWxkcmVuQWZmZWN0ZWQgJiYgIWRlc2NlbmRhbnRzQWZmZWN0ZWQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGZvciAoYXV0byogc2libGluZyA9IGVsZW1lbnRCZWZvcmVD
aGFuZ2U7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5n
KCkpIHsKLSAgICAgICAgaWYgKGNoaWxkcmVuQWZmZWN0ZWQpCi0gICAgICAgICAgICBzaWJsaW5n
LT5pbnZhbGlkYXRlU3R5bGVJbnRlcm5hbCgpOwotICAgICAgICBpZiAoZGVzY2VuZGFudHNBZmZl
Y3RlZCkgewotICAgICAgICAgICAgZm9yIChhdXRvKiBzaWJsaW5nQ2hpbGQgPSBzaWJsaW5nLT5m
aXJzdEVsZW1lbnRDaGlsZCgpOyBzaWJsaW5nQ2hpbGQ7IHNpYmxpbmdDaGlsZCA9IHNpYmxpbmdD
aGlsZC0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAgc2libGluZ0NoaWxk
LT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKLSAgICAgICAgfQotICAgIH0K
LX0KLQotZW51bSBTaWJsaW5nQ2hlY2tUeXBlIHsgRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4sIFNp
YmxpbmdFbGVtZW50UmVtb3ZlZCwgT3RoZXIgfTsKLQotc3RhdGljIHZvaWQgY2hlY2tGb3JTaWJs
aW5nU3R5bGVDaGFuZ2VzKEVsZW1lbnQmIHBhcmVudCwgU2libGluZ0NoZWNrVHlwZSBjaGVja1R5
cGUsIEVsZW1lbnQqIGVsZW1lbnRCZWZvcmVDaGFuZ2UsIEVsZW1lbnQqIGVsZW1lbnRBZnRlckNo
YW5nZSkKLXsKLSAgICAvLyA6ZW1wdHkgc2VsZWN0b3IuCi0gICAgY2hlY2tGb3JFbXB0eVN0eWxl
Q2hhbmdlKHBhcmVudCk7Ci0KLSAgICBpZiAocGFyZW50LnN0eWxlVmFsaWRpdHkoKSA+PSBTdHls
ZTo6VmFsaWRpdHk6OlN1YnRyZWVJbnZhbGlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyA6
Zmlyc3QtY2hpbGQuICBJbiB0aGUgcGFyc2VyIGNhbGxiYWNrIGNhc2UsIHdlIGRvbid0IGhhdmUg
dG8gY2hlY2sgYW55dGhpbmcsIHNpbmNlIHdlIHdlcmUgcmlnaHQgdGhlIGZpcnN0IHRpbWUuCi0g
ICAgLy8gSW4gdGhlIERPTSBjYXNlLCB3ZSBvbmx5IG5lZWQgdG8gZG8gc29tZXRoaW5nIGlmIHxh
ZnRlckNoYW5nZXwgaXMgbm90IDAuCi0gICAgLy8gfGFmdGVyQ2hhbmdlfCBpcyAwIGluIHRoZSBw
YXJzZXIgY2FzZSwgc28gaXQgd29ya3Mgb3V0IHRoYXQgd2UnbGwgc2tpcCB0aGlzIGJsb2NrLgot
ICAgIGlmIChwYXJlbnQuY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgJiYgZWxl
bWVudEFmdGVyQ2hhbmdlKSB7Ci0gICAgICAgIC8vIEZpbmQgb3VyIG5ldyBmaXJzdCBjaGlsZC4K
LSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0ZpcnN0RWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJz
YWw6OmZpcnN0Q2hpbGQocGFyZW50KTsKLSAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgZWxlbWVu
dCBub2RlIGZvbGxvd2luZyB8YWZ0ZXJDaGFuZ2V8Ci0KLSAgICAgICAgLy8gVGhpcyBpcyB0aGUg
aW5zZXJ0L2FwcGVuZCBjYXNlLgotICAgICAgICBpZiAobmV3Rmlyc3RFbGVtZW50ICE9IGVsZW1l
bnRBZnRlckNoYW5nZSkgewotICAgICAgICAgICAgYXV0byogc3R5bGUgPSBlbGVtZW50QWZ0ZXJD
aGFuZ2UtPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICBpZiAoIXN0eWxlIHx8IHN0eWxlLT5m
aXJzdENoaWxkU3RhdGUoKSkKLSAgICAgICAgICAgICAgICBlbGVtZW50QWZ0ZXJDaGFuZ2UtPmlu
dmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gV2UgYWxzbyBoYXZlIHRvIGhhbmRsZSBub2RlIHJlbW92YWwuCi0gICAgICAgIGlmIChjaGVj
a1R5cGUgPT0gU2libGluZ0VsZW1lbnRSZW1vdmVkICYmIG5ld0ZpcnN0RWxlbWVudCA9PSBlbGVt
ZW50QWZ0ZXJDaGFuZ2UgJiYgbmV3Rmlyc3RFbGVtZW50KSB7Ci0gICAgICAgICAgICBhdXRvKiBz
dHlsZSA9IG5ld0ZpcnN0RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgIGlmICgh
c3R5bGUgfHwgIXN0eWxlLT5maXJzdENoaWxkU3RhdGUoKSkKLSAgICAgICAgICAgICAgICBuZXdG
aXJzdEVsZW1lbnQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgLy8gOmxhc3QtY2hpbGQuICBJbiB0aGUgcGFyc2VyIGNhbGxiYWNr
IGNhc2UsIHdlIGRvbid0IGhhdmUgdG8gY2hlY2sgYW55dGhpbmcsIHNpbmNlIHdlIHdlcmUgcmln
aHQgdGhlIGZpcnN0IHRpbWUuCi0gICAgLy8gSW4gdGhlIERPTSBjYXNlLCB3ZSBvbmx5IG5lZWQg
dG8gZG8gc29tZXRoaW5nIGlmIHxhZnRlckNoYW5nZXwgaXMgbm90IDAuCi0gICAgaWYgKHBhcmVu
dC5jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpICYmIGVsZW1lbnRCZWZvcmVDaGFu
Z2UpIHsKLSAgICAgICAgLy8gRmluZCBvdXIgbmV3IGxhc3QgY2hpbGQuCi0gICAgICAgIFJlZlB0
cjxFbGVtZW50PiBuZXdMYXN0RWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RDaGlsZChw
YXJlbnQpOwotCi0gICAgICAgIGlmIChuZXdMYXN0RWxlbWVudCAhPSBlbGVtZW50QmVmb3JlQ2hh
bmdlKSB7Ci0gICAgICAgICAgICBhdXRvKiBzdHlsZSA9IGVsZW1lbnRCZWZvcmVDaGFuZ2UtPnJl
bmRlclN0eWxlKCk7Ci0gICAgICAgICAgICBpZiAoIXN0eWxlIHx8IHN0eWxlLT5sYXN0Q2hpbGRT
dGF0ZSgpKQotICAgICAgICAgICAgICAgIGVsZW1lbnRCZWZvcmVDaGFuZ2UtPmludmFsaWRhdGVT
dHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV2UgYWxz
byBoYXZlIHRvIGhhbmRsZSBub2RlIHJlbW92YWwuICBUaGUgcGFyc2VyIGNhbGxiYWNrIGNhc2Ug
aXMgc2ltaWxhciB0byBub2RlIHJlbW92YWwgYXMgd2VsbCBpbiB0aGF0IHdlIG5lZWQgdG8gY2hh
bmdlIHRoZSBsYXN0IGNoaWxkCi0gICAgICAgIC8vIHRvIG1hdGNoIG5vdy4KLSAgICAgICAgaWYg
KChjaGVja1R5cGUgPT0gU2libGluZ0VsZW1lbnRSZW1vdmVkIHx8IGNoZWNrVHlwZSA9PSBGaW5p
c2hlZFBhcnNpbmdDaGlsZHJlbikgJiYgbmV3TGFzdEVsZW1lbnQgPT0gZWxlbWVudEJlZm9yZUNo
YW5nZSAmJiBuZXdMYXN0RWxlbWVudCkgewotICAgICAgICAgICAgYXV0byogc3R5bGUgPSBuZXdM
YXN0RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgIGlmICghc3R5bGUgfHwgIXN0
eWxlLT5sYXN0Q2hpbGRTdGF0ZSgpKQotICAgICAgICAgICAgICAgIG5ld0xhc3RFbGVtZW50LT5p
bnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMoZWxlbWVudEFmdGVyQ2hhbmdlKTsK
LQotICAgIGludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKHBhcmVudCwgZWxlbWVu
dEFmdGVyQ2hhbmdlKTsKLSAgICBpbnZhbGlkYXRlRm9yQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMo
cGFyZW50LCBlbGVtZW50QmVmb3JlQ2hhbmdlKTsKLX0KLQogdm9pZCBFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKICAgICBDb250YWluZXJOb2Rl
OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKLSAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGls
ZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCi0gICAgICAgIGNoZWNrRm9yRW1wdHlTdHlsZUNoYW5n
ZSgqdGhpcyk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGF1dG8gY2hlY2tUeXBlID0gY2hhbmdlLnR5
cGUgPT0gQ2hpbGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRSZW1vdmVkID8gU2libGluZ0VsZW1lbnRS
ZW1vdmVkIDogT3RoZXI7Ci0gICAgICAgIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcygqdGhp
cywgY2hlY2tUeXBlLCBjaGFuZ2UucHJldmlvdXNTaWJsaW5nRWxlbWVudCwgY2hhbmdlLm5leHRT
aWJsaW5nRWxlbWVudCk7Ci0gICAgfQogCi0gICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3Qg
PSB0aGlzLT5zaGFkb3dSb290KCkpIHsKKyAgICBpZiAoYXV0byogc2hhZG93Um9vdCA9IHRoaXMt
PnNoYWRvd1Jvb3QoKSkgewogICAgICAgICBzd2l0Y2ggKGNoYW5nZS50eXBlKSB7CiAgICAgICAg
IGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRJbnNlcnRlZDoKICAgICAgICAgY2FzZSBD
aGlsZENoYW5nZTo6VHlwZTo6RWxlbWVudFJlbW92ZWQ6CkBAIC0yNzc2LDYgKzI2NjQsNyBAQCB2
b2lkIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNv
bnRlbnRzQ2hpbGRJbnNlcnRlZDoKICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6Tm9u
Q29udGVudHNDaGlsZFJlbW92ZWQ6CisgICAgICAgIGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6OkZp
bmlzaGVkUGFyc2luZ0NoaWxkcmVuOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0yODAyLDcgKzI2OTEsMTMgQEAgdm9pZCBFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hp
bGRyZW4oKQogewogICAgIENvbnRhaW5lck5vZGU6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwog
ICAgIHNldElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQoKTsKLSAgICBjaGVja0ZvclNpYmxpbmdT
dHlsZUNoYW5nZXMoKnRoaXMsIEZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuLCBFbGVtZW50VHJhdmVy
c2FsOjpsYXN0Q2hpbGQoKnRoaXMpLCBudWxscHRyKTsKKworICAgIFN0eWxlOjpDaGlsZENoYW5n
ZUludmFsaWRhdGlvbiBpbnZhbGlkYXRpb24oKnRoaXMsIHsKKyAgICAgICAgQ2hpbGRDaGFuZ2U6
OlR5cGU6OkZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuLAorICAgICAgICBFbGVtZW50VHJhdmVyc2Fs
OjpsYXN0Q2hpbGQoKnRoaXMpLAorICAgICAgICBudWxscHRyLAorICAgICAgICBDaGlsZENoYW5n
ZTo6U291cmNlOjpQYXJzZXIKKyAgICB9KTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kQXR0cmli
dXRlcyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKaW5kZXggMDRjZTY1ZGU2ZTg3MmNmMDkzZDJjY2FmMGRmMThhYjk2ZTdhNGU4
Mi4uZWY3Y2U4OTk4ZGUwM2YyMGY0MjBmMDk1YzM4MTdkZDA1MTQzMWVjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCkBAIC03NjMsNiArNzYzLDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RWxlbWVudERh
dGE+IG1fZWxlbWVudERhdGE7CiB9OwogCit2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmlu
YXRvcnMoRWxlbWVudCogc2libGluZyk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpFbGVtZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuY3BwCmluZGV4IDUzZjIzOWJiYWY2YjNmMjQ5MjUyZjAyNjM4NWExZWRmMDk4YzI2
NTIuLjkxYzI2ZjE0ZDliZDAyYjNmZmYxZjYwMmIwZDljM2Q5ZDhmMTllMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5jcHAKQEAgLTE0NCw2ICsxNDQsOSBAQCB2b2lkIFNoYWRvd1Jvb3Q6OmNo
aWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hpbGRDaGFuZ2UpCiAgICAgY2FzZSBD
aGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29udGVudHNDaGlsZEluc2VydGVkOgogICAgIGNhc2UgQ2hp
bGRDaGFuZ2U6OlR5cGU6OkFsbENoaWxkcmVuUmVwbGFjZWQ6CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6OkZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuOgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTNmMGMyODA1Mjk2ZmU3ZmNkNTIwNzBlOTlkNjlkNjEwYzQ1NmM3OQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmNw
cApAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJDaGlsZENoYW5nZUludmFsaWRhdGlvbi5oIgorCisjaW5jbHVkZSAiTm9kZVJlbmRl
clN0eWxlLmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlNsb3RBc3NpZ25t
ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlOjpTdHlsZSB7CisKK0NoaWxkQ2hhbmdlSW52YWxp
ZGF0aW9uOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbihDb250YWluZXJOb2RlJiBjb250YWluZXIs
IGNvbnN0IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlJiBjaGlsZENoYW5nZSkKKyAgICA6IG1f
aXNFbmFibGVkKGlzPEVsZW1lbnQ+KGNvbnRhaW5lcikgPyBkb3duY2FzdDxFbGVtZW50Pihjb250
YWluZXIpLm5lZWRzU3R5bGVJbnZhbGlkYXRpb24oKSA6IGZhbHNlKQorICAgICwgbV9jb250YWlu
ZXIoY29udGFpbmVyKQorICAgICwgbV9jaGlsZENoYW5nZShjaGlsZENoYW5nZSkKK3sKK30KKwor
Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246On5DaGlsZENoYW5nZUludmFsaWRhdGlvbigpCit7Cisg
ICAgaWYgKCFtX2lzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW52YWxpZGF0ZUFm
dGVyQ2hhbmdlKCk7Cit9CisKK3ZvaWQgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRh
dGVBZnRlckNoYW5nZSgpCit7CisgICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKCk7CisKKyAg
ICBpZiAobV9jaGlsZENoYW5nZS50eXBlID09IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpU
eXBlOjpGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbikgeworICAgICAgICBjaGVja0ZvclNpYmxpbmdT
dHlsZUNoYW5nZXMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX2NoaWxk
Q2hhbmdlLnNvdXJjZSA9PSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJz
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcygp
OworfQorCit2b2lkIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjpjaGVja0ZvckVtcHR5U3R5bGVD
aGFuZ2UoKQoreworICAgIGF1dG8mIGVsZW1lbnQgPSBwYXJlbnRFbGVtZW50KCk7CisgICAgaWYg
KCFlbGVtZW50LnN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8qIHN0eWxlID0gZWxlbWVudC5yZW5kZXJTdHlsZSgpOworICAgIGlmICghc3R5bGUgfHwg
KCFzdHlsZS0+ZW1wdHlTdGF0ZSgpIHx8IGVsZW1lbnQuaGFzQ2hpbGROb2RlcygpKSkKKyAgICAg
ICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Cit9CisKK3N0YXRpYyB2b2lk
IGludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxl
bWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQoreworICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZCA9
IHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CisgICAg
Ym9vbCBkZXNjZW5kYW50c0FmZmVjdGVkID0gcGFyZW50LmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKworICAgIGlmICghY2hpbGRyZW5BZmZlY3RlZCAmJiAh
ZGVzY2VuZGFudHNBZmZlY3RlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvKiBz
aWJsaW5nID0gZWxlbWVudEFmdGVyQ2hhbmdlOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+
bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkcmVuQWZmZWN0ZWQpCisg
ICAgICAgICAgICBzaWJsaW5nLT5pbnZhbGlkYXRlU3R5bGVJbnRlcm5hbCgpOworICAgICAgICBp
ZiAoZGVzY2VuZGFudHNBZmZlY3RlZCkgeworICAgICAgICAgICAgZm9yIChhdXRvKiBzaWJsaW5n
Q2hpbGQgPSBzaWJsaW5nLT5maXJzdEVsZW1lbnRDaGlsZCgpOyBzaWJsaW5nQ2hpbGQ7IHNpYmxp
bmdDaGlsZCA9IHNpYmxpbmdDaGlsZC0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpCisgICAgICAgICAg
ICAgICAgc2libGluZ0NoaWxkLT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgaW52YWxpZGF0ZUZvckJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxlbWVudCogZWxlbWVudEJlZm9yZUNo
YW5nZSkKK3sKKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWQgPSBwYXJlbnQuY2hpbGRyZW5BZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICBib29sIGRlc2NlbmRhbnRzQWZm
ZWN0ZWQgPSBwYXJlbnQuZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMoKTsKKworICAgIGlmICghY2hpbGRyZW5BZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNBZmZlY3Rl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudEJl
Zm9yZUNoYW5nZTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNp
YmxpbmcoKSkgeworICAgICAgICBpZiAoY2hpbGRyZW5BZmZlY3RlZCkKKyAgICAgICAgICAgIHNp
YmxpbmctPmludmFsaWRhdGVTdHlsZUludGVybmFsKCk7CisgICAgICAgIGlmIChkZXNjZW5kYW50
c0FmZmVjdGVkKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8qIHNpYmxpbmdDaGlsZCA9IHNpYmxp
bmctPmZpcnN0RWxlbWVudENoaWxkKCk7IHNpYmxpbmdDaGlsZDsgc2libGluZ0NoaWxkID0gc2li
bGluZ0NoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKKyAgICAgICAgICAgICAgICBzaWJsaW5n
Q2hpbGQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOworICAgICAgICB9Cisg
ICAgfQorfQorCit2b2lkIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjpjaGVja0ZvclNpYmxpbmdT
dHlsZUNoYW5nZXMoKQoreworICAgIGF1dG8mIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKKyAg
ICBhdXRvKiBlbGVtZW50QmVmb3JlQ2hhbmdlID0gbV9jaGlsZENoYW5nZS5wcmV2aW91c1NpYmxp
bmdFbGVtZW50OworICAgIGF1dG8qIGVsZW1lbnRBZnRlckNoYW5nZSA9IG1fY2hpbGRDaGFuZ2Uu
bmV4dFNpYmxpbmdFbGVtZW50OworCisgICAgaWYgKHBhcmVudC5zdHlsZVZhbGlkaXR5KCkgPj0g
U3R5bGU6OlZhbGlkaXR5OjpTdWJ0cmVlSW52YWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gOmZpcnN0LWNoaWxkLiBJbiB0aGUgcGFyc2VyIGNhbGxiYWNrIGNhc2UsIHdlIGRvbid0IGhh
dmUgdG8gY2hlY2sgYW55dGhpbmcsIHNpbmNlIHdlIHdlcmUgcmlnaHQgdGhlIGZpcnN0IHRpbWUu
CisgICAgLy8gSW4gdGhlIERPTSBjYXNlLCB3ZSBvbmx5IG5lZWQgdG8gZG8gc29tZXRoaW5nIGlm
IHxhZnRlckNoYW5nZXwgaXMgbm90IDAuCisgICAgLy8gfGFmdGVyQ2hhbmdlfCBpcyAwIGluIHRo
ZSBwYXJzZXIgY2FzZSwgc28gaXQgd29ya3Mgb3V0IHRoYXQgd2UnbGwgc2tpcCB0aGlzIGJsb2Nr
LgorICAgIGlmIChwYXJlbnQuY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgJiYg
ZWxlbWVudEFmdGVyQ2hhbmdlKSB7CisgICAgICAgIC8vIEZpbmQgb3VyIG5ldyBmaXJzdCBjaGls
ZC4KKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0ZpcnN0RWxlbWVudCA9IEVsZW1lbnRUcmF2
ZXJzYWw6OmZpcnN0Q2hpbGQocGFyZW50KTsKKyAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgZWxl
bWVudCBub2RlIGZvbGxvd2luZyB8YWZ0ZXJDaGFuZ2V8CisKKyAgICAgICAgLy8gVGhpcyBpcyB0
aGUgaW5zZXJ0L2FwcGVuZCBjYXNlLgorICAgICAgICBpZiAobmV3Rmlyc3RFbGVtZW50ICE9IGVs
ZW1lbnRBZnRlckNoYW5nZSkgeworICAgICAgICAgICAgYXV0byogc3R5bGUgPSBlbGVtZW50QWZ0
ZXJDaGFuZ2UtPnJlbmRlclN0eWxlKCk7CisgICAgICAgICAgICBpZiAoIXN0eWxlIHx8IHN0eWxl
LT5maXJzdENoaWxkU3RhdGUoKSkKKyAgICAgICAgICAgICAgICBlbGVtZW50QWZ0ZXJDaGFuZ2Ut
PmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gV2UgYWxzbyBoYXZlIHRvIGhhbmRsZSBub2RlIHJlbW92YWwuCisgICAgICAgIGlmICht
X2NoaWxkQ2hhbmdlLnR5cGUgPT0gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OkVs
ZW1lbnRSZW1vdmVkICYmIG5ld0ZpcnN0RWxlbWVudCA9PSBlbGVtZW50QWZ0ZXJDaGFuZ2UgJiYg
bmV3Rmlyc3RFbGVtZW50KSB7CisgICAgICAgICAgICBhdXRvKiBzdHlsZSA9IG5ld0ZpcnN0RWxl
bWVudC0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgICAgIGlmICghc3R5bGUgfHwgIXN0eWxlLT5m
aXJzdENoaWxkU3RhdGUoKSkKKyAgICAgICAgICAgICAgICBuZXdGaXJzdEVsZW1lbnQtPmludmFs
aWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOworICAgICAgICB9CisgICAgfQorCisgICAg
Ly8gOmxhc3QtY2hpbGQuIEluIHRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2
ZSB0byBjaGVjayBhbnl0aGluZywgc2luY2Ugd2Ugd2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4K
KyAgICAvLyBJbiB0aGUgRE9NIGNhc2UsIHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYg
fGFmdGVyQ2hhbmdlfCBpcyBub3QgMC4KKyAgICBpZiAocGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRC
eUxhc3RDaGlsZFJ1bGVzKCkgJiYgZWxlbWVudEJlZm9yZUNoYW5nZSkgeworICAgICAgICAvLyBG
aW5kIG91ciBuZXcgbGFzdCBjaGlsZC4KKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0xhc3RF
bGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKHBhcmVudCk7CisKKyAgICAgICAg
aWYgKG5ld0xhc3RFbGVtZW50ICE9IGVsZW1lbnRCZWZvcmVDaGFuZ2UpIHsKKyAgICAgICAgICAg
IGF1dG8qIHN0eWxlID0gZWxlbWVudEJlZm9yZUNoYW5nZS0+cmVuZGVyU3R5bGUoKTsKKyAgICAg
ICAgICAgIGlmICghc3R5bGUgfHwgc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkpCisgICAgICAgICAg
ICAgICAgZWxlbWVudEJlZm9yZUNoYW5nZS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVy
bmFsKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gaGFuZGxlIG5v
ZGUgcmVtb3ZhbC4gVGhlIHBhcnNlciBjYWxsYmFjayBjYXNlIGlzIHNpbWlsYXIgdG8gbm9kZSBy
ZW1vdmFsIGFzIHdlbGwgaW4gdGhhdCB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUgbGFzdCBjaGlsZAor
ICAgICAgICAvLyB0byBtYXRjaCBub3cuCisgICAgICAgIGJvb2wgcmVtb3ZlZE9yRmluaXNoZWQg
PSBtX2NoaWxkQ2hhbmdlLnR5cGUgPT0gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6
OkVsZW1lbnRSZW1vdmVkIHx8IG1fY2hpbGRDaGFuZ2UudHlwZSA9PSBDb250YWluZXJOb2RlOjpD
aGlsZENoYW5nZTo6VHlwZTo6RmluaXNoZWRQYXJzaW5nQ2hpbGRyZW47CisgICAgICAgIGlmIChy
ZW1vdmVkT3JGaW5pc2hlZCAmJiBuZXdMYXN0RWxlbWVudCA9PSBlbGVtZW50QmVmb3JlQ2hhbmdl
ICYmIG5ld0xhc3RFbGVtZW50KSB7CisgICAgICAgICAgICBhdXRvKiBzdHlsZSA9IG5ld0xhc3RF
bGVtZW50LT5yZW5kZXJTdHlsZSgpOworICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUt
Pmxhc3RDaGlsZFN0YXRlKCkpCisgICAgICAgICAgICAgICAgbmV3TGFzdEVsZW1lbnQtPmludmFs
aWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOworICAgICAgICB9CisgICAgfQorCisgICAg
aW52YWxpZGF0ZUZvclNpYmxpbmdDb21iaW5hdG9ycyhlbGVtZW50QWZ0ZXJDaGFuZ2UpOworCisg
ICAgaW52YWxpZGF0ZUZvckZvcndhcmRQb3NpdGlvbmFsUnVsZXMocGFyZW50LCBlbGVtZW50QWZ0
ZXJDaGFuZ2UpOworICAgIGludmFsaWRhdGVGb3JCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhwYXJl
bnQsIGVsZW1lbnRCZWZvcmVDaGFuZ2UpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNGI3NDUyNjFiOTFjZGFk
N2IwOWE3MjJiYzM0ZDc5Yzg0N2E1NTRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaApAQCAtMCwwICsxLDUyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJFbGVtZW50LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBTdHlsZSB7CisKK2NsYXNzIENoaWxkQ2hhbmdlSW52YWxp
ZGF0aW9uIHsKK3B1YmxpYzoKKyAgICBDaGlsZENoYW5nZUludmFsaWRhdGlvbihDb250YWluZXJO
b2RlJiwgY29uc3QgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UmKTsKKyAgICB+Q2hpbGRDaGFu
Z2VJbnZhbGlkYXRpb24oKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGludmFsaWRhdGVBZnRlckNo
YW5nZSgpOworICAgIHZvaWQgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKCk7CisgICAgdm9pZCBj
aGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoKTsKKworICAgIEVsZW1lbnQmIHBhcmVudEVsZW1l
bnQoKSB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50PihtX2NvbnRhaW5lcik7IH0KKworICAgIGNv
bnN0IGJvb2wgbV9pc0VuYWJsZWQ7CisgICAgQ29udGFpbmVyTm9kZSYgbV9jb250YWluZXI7CisK
KyAgICBjb25zdCBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSYgbV9jaGlsZENoYW5nZTsKK307
CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0ZXIuaAppbmRleCAxOTEzMWU1ODBm
NTY0NWFlYTIyMzI4Mjk0ZTlkNzYxZWJmODM1ZDY3Li45NzJhMWFiZDE1MjA2MDU2MDE4MzQzMWY2
NDg0Nzk5ODM4ZDk5ZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUFk
anVzdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVBZGp1c3Rlci5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3Rh
bnRzLmgiCisjaW5jbHVkZSAiVGV4dFNpemVBZGp1c3RtZW50LmgiCiAjaW5jbHVkZSA8d3RmL09w
dGlvblNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444683</attachid>
            <date>2021-11-18 08:43:20 -0800</date>
            <delta_ts>2021-11-18 11:44:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233311-20211118184318.patch</filename>
            <type>text/plain</type>
            <size>45042</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1ODUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAyZjkzMWRjYTIwM2Mw
NTE5NDBiM2JkOWM2MzAyYjRlN2M4MTM2Ni4uZjU2MjBjODczOTUwNTQ0N2Q3NjM0MmY3ZWMzNDNl
ZDJlZWUyNDNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIxLTExLTE4ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgY2hpbGQgY2hh
bmdlIGludmFsaWRhdGlvbiBpbnRvIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2Ugc2ltaWxhciBwYXR0ZXJuIGFzIENsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uIGFuZCBvdGhlcnMgd2hlcmUgd2UgY3JlYXRlIGEgc3RhY2sgb2JqZWN0IHNjb3Bl
ZAorICAgICAgICBvdmVyIGEgRE9NIG11dGF0aW9uLiBUaGlzIHdpbGwgYWxsb3cgbW9yZSBzb3Bo
aXN0aWNhdGVkIHJ1bGVzZXQgYmFzZWQgaW52YWxpZGF0aW9uIGluCisgICAgICAgIGZ1dHVyZS4K
KworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBpbnZhbGlkYXRpb24gY29kZSBmcm9tIGNo
aWxkcmVuQ2hhbmdlZCgpIHRvIHRoZSBuZXcgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24gY2xhc3Mu
CisgICAgICAgIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uIGlzIGluc3RhbnRpYXRlZCBpbiBDb250
YWluZXJOb2RlIGFuZCBDaGFyYWN0ZXJEYXRhIG11dGF0aW9uIGZ1bmN0aW9ucworICAgICAgICB0
aGF0IGNhbGwgY2hpbGRyZW5DaGFuZ2VkKCkuIEl0IHVzZXMgdGhlIHNhbWUgQ2hpbGRDaGFuZ2Ug
YXJndW1lbnQgdHlwZSBhcyBjaGlsZHJlbkNoYW5nZWQoKS4KKworICAgICAgICBUaGVyZSBhcmUg
bm8gY2hhbmdlcyB0byBpbnZhbGlkYXRpb24gZnVuY3Rpb25hbGl0eSBpbiB0aGlzIHBhdGNoLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om1ha2VDaGlsZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJE
YXRhOjpwYXJzZXJBcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6
OnNldERhdGFBbmRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6bm90
aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UpOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmg6Cisg
ICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFp
bmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Om1ha2VDaGlsZENoYW5nZUZvclJlbW92YWwpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6bWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2Rl
OjpyZXBsYWNlQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENo
aWxkV2l0aG91dFByZUluc2VydGlvblZhbGlkaXR5Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6YWZm
ZWN0c0VsZW1lbnRzKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OmlzSW5zZXJ0aW9uIGNvbnN0KToK
KyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlkYXRl
Rm9yU2libGluZ0NvbWJpbmF0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNoaWxk
VHlwZUFsbG93ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvckZvcndhcmRQb3NpdGlvbmFsUnVsZXMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvckJhY2t3YXJkUG9zaXRp
b25hbFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrRm9yU2libGluZ1N0
eWxlQ2hhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAg
KiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpjaGls
ZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRp
b246OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpD
aGlsZENoYW5nZUludmFsaWRhdGlvbjo6fkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZUFm
dGVyQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRh
dGlvbjo6Y2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjppbnZhbGlkYXRlRm9yRm9yd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6aW52YWxpZGF0ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6Y2hlY2tGb3JTaWJsaW5n
U3R5bGVDaGFuZ2VzKToKKyAgICAgICAgKiBzdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlv
bjo6cGFyZW50RWxlbWVudCk6CisgICAgICAgICogc3R5bGUvU3R5bGVBZGp1c3Rlci5oOgorCiAy
MDIxLTExLTE1ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
YW5vdGhlciA8bW9kZWw+IGJhY2tlbmQgYmFja2VkIGJ5IFNjZW5lS2l0IHRvIHByb3ZlIG91dCBN
b2RlbFBsYXllciBpbmZyYXN0cnVjdHVyZSBhIGJpdCBtb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDlk
Nzc1NDhjZGVhMGI0N2IyMjA2YmI1OGRlNmQzZGEwODRlNWM3NDguLmI3YjQ0YjYyZmE1NWJiODQ4
NzA4ZjZhOTIyMmJhN2M0ZjdkN2MyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNTIxLDYgKzI1MjEs
NyBAQCBzdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCiBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5jcHAKIHN0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdlci5jcHAKIHN0eWxlL0F0dHJpYnV0
ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAKK3N0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmNw
cAogc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCiBzdHlsZS9FbGVtZW50UnVsZUNv
bGxlY3Rvci5jcHAKIHN0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJkMWI3YTkz
MmIzNTA5NzdiZjVmOTQwNWE5NjVkMDhlYTg1NjlhMmEuLmFjNDhiMDQ4Y2IwOThmZmYxMmZkOTk0
NTczZWMyYjJiMzYwMWEzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzNDEsNiArNTM0MSw3IEBACiAJCUU0QzE3ODlCMEVF
NjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzE3ODk2MEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NT
ZWxlY3Rvckxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFNEMyNzk1OTBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzI3OTU3MENGOTc0MTkw
MEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUU0QzNCMUZBMEYwRTQxNjEwMDk2OTNGNiAvKiBMZWdhY3lUaWxl
Q2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
QzNCMUY5MEYwRTQxNjEwMDk2OTNGNiAvKiBMZWdhY3lUaWxlQ2FjaGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNEM0QzYxQTI3NDUyQTc5MDBB
MDQwRTcgLyogQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzRDNjE4Mjc0NTJBNzkwMEEwNDBFNyAvKiBDaGls
ZENoYW5nZUludmFsaWRhdGlvbi5oICovOyB9OwogCQlFNEM5MUEwRTE4MDIzNDMxMDBBMTdGNkQg
LyogVGV4dFBhaW50U3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0QzkxQTBEMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5oICov
OyB9OwogCQlFNEM5MUExNjE4MDk5OUYxMDBBMTdGNkQgLyogUmVuZGVyVGV4dExpbmVCb3hlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDOTFBMTUx
ODA5OTlGMTAwQTE3RjZEIC8qIFJlbmRlclRleHRMaW5lQm94ZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEQzM0YzQjI1MkFFRUNEMDA4MzdE
MDUgLyogSW5saW5lUnVuQW5kT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNEQzM0YzOTI1MkFFRUNDMDA4MzdEMDUgLyogSW5saW5lUnVuQW5k
T2Zmc2V0LmggKi87IH07CkBAIC0xNzA0MCw2ICsxNzA0MSw4IEBACiAJCUU0QzI3OTU3MENGOTc0
MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJNZWRpYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEMzQjFG
OTBGMEU0MTYxMDA5NjkzRjYgLyogTGVnYWN5VGlsZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExlZ2FjeVRpbGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFNEMzQjFGQjBGMEU0MTcwMDA5NjkzRjYgLyogTGVnYWN5VGlsZUNhY2hlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5VGlsZUNhY2hlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEM0QzYxODI3NDUyQTc5MDBBMDQwRTcg
LyogQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTRDNEM2MUIyNzQ1MkE4QTAwQTA0MEU3IC8qIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRDOTFBMEQxODAyMzQzMTAwQTE3RjZEIC8qIFRl
eHRQYWludFN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRQYWlu
dFN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QzkxQTBGMTgwMjM0Mzkw
MEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUZXh0UGFpbnRTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUU0QzkxQTE1MTgwOTk5RjEwMEExN0Y2RCAvKiBSZW5kZXJUZXh0TGluZUJveGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRleHRMaW5lQm94ZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwMjcwLDYgKzMwMjczLDggQEAKIAkJCQlFNEE4
MTRENzFDNzBFMTA1MDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAq
LywKIAkJCQlFNEE4MTREOTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxp
ZGF0aW9uLmggKi8sCiAJCQkJRTRBQkFCRjQyMzY4QzZFRjAwRkE0MzQ1IC8qIENhc2NhZGVMZXZl
bC5oICovLAorCQkJCUU0QzRDNjFCMjc0NTJBOEEwMEEwNDBFNyAvKiBDaGlsZENoYW5nZUludmFs
aWRhdGlvbi5jcHAgKi8sCisJCQkJRTRDNEM2MTgyNzQ1MkE3OTAwQTA0MEU3IC8qIENoaWxkQ2hh
bmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJRTRBODE0RDUxQzZERUU4RDAwQkY4NUFDIC8qIENs
YXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLywKIAkJCQlFNEE4MTREMzFDNkRFQzQwMDBCRjg1
QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlGQkRCNjE5QTE2RDYwMzJB
MDBCQjMzOTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwICovLApAQCAtMzI3MjMsNiArMzI3
MjgsNyBAQAogCQkJCTkzRjJDQzkzMjQyN0ZCOUMwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCOEZGRDExNkFFN0Y5NjAwMzgzODhEIC8qIENoYXJhY3Rl
clJlZmVyZW5jZVBhcnNlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREIyMTI1
MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTRDNEM2MUEyNzQ1MkE3OTAwQTA0MEU3IC8qIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlENjE5QTMwODE0NEUwMEJFMDA0QkMzMDIgLyogQ2hpbGRMaXN0TXV0
YXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMjAwOTc3RDNDMDAwNTgyNkQ5
IC8qIENoaWxkTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RDgyMzUyMEFGOTJBNzkw
MDA0RjA1NyAvKiBDaHJvbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3Rl
ckRhdGEuY3BwCmluZGV4IDJlNjVjNjI0NDk3MzM3ZTZiOTAwYWUzOTAwYzFhMTI2Yzk3ZDZjODgu
LjRmYjJiNmU1NjVlYzBlOTQwYzEwM2ZiNWZiYjIwYzFkOTQ1ZmVhZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJDaGFyYWN0
ZXJEYXRhLmgiCiAKICNpbmNsdWRlICJBdHRyLmgiCisjaW5jbHVkZSAiQ2hpbGRDaGFuZ2VJbnZh
bGlkYXRpb24uaCIKICNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCkBAIC03Myw2ICs3NCwxNiBA
QCBFeGNlcHRpb25PcjxTdHJpbmc+IENoYXJhY3RlckRhdGE6OnN1YnN0cmluZ0RhdGEodW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudAogICAgIHJldHVybiBtX2RhdGEuc3Vic3RyaW5nKG9m
ZnNldCwgY291bnQpOwogfQogCitzdGF0aWMgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgbWFr
ZUNoaWxkQ2hhbmdlKENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEsIENvbnRhaW5lck5vZGU6
OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNlKQoreworICAgIHJldHVybiB7CisgICAgICAgIENv
bnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdlZCwKKyAgICAgICAgRWxl
bWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoYXJhY3RlckRhdGEpLAorICAgICAgICBF
bGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGFyYWN0ZXJEYXRhKSwKKyAgICAgICAgc291
cmNlCisgICAgfTsKK30KKwogdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0
YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGhM
aW1pdCkKIHsKICAgICB1bnNpZ25lZCBvbGRMZW5ndGggPSBtX2RhdGEubGVuZ3RoKCk7CkBAIC05
NSw2ICsxMDYsOSBAQCB1bnNpZ25lZCBDaGFyYWN0ZXJEYXRhOjpwYXJzZXJBcHBlbmREYXRhKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBvZmZzZXQsCiAgICAgaWYgKCFjaGFyYWN0ZXJM
ZW5ndGhMaW1pdCkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBhdXRvIGNoaWxkQ2hhbmdlID0g
bWFrZUNoaWxkQ2hhbmdlKCp0aGlzLCBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNl
OjpQYXJzZXIpOworICAgIFN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFs
aWRhdGlvbihwYXJlbnROb2RlKCksIGNoaWxkQ2hhbmdlKTsKKwogICAgIFN0cmluZyBvbGREYXRh
ID0gbV9kYXRhOwogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCiAgICAgICAgIG1fZGF0YS5hcHBl
bmQoc3RyaW5nLmNoYXJhY3RlcnM4KCkgKyBvZmZzZXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KTsK
QEAgLTEwNSw3ICsxMTksNyBAQCB1bnNpZ25lZCBDaGFyYWN0ZXJEYXRhOjpwYXJzZXJBcHBlbmRE
YXRhKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBvZmZzZXQsCiAgICAgaWYgKGlzPFRl
eHQ+KCp0aGlzKSkKICAgICAgICAgZG93bmNhc3Q8VGV4dD4oKnRoaXMpLnVwZGF0ZVJlbmRlcmVy
QWZ0ZXJDb250ZW50Q2hhbmdlKG9sZExlbmd0aCwgMCk7CiAKLSAgICBub3RpZnlQYXJlbnRBZnRl
ckNoYW5nZShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpOworICAg
IG5vdGlmeVBhcmVudEFmdGVyQ2hhbmdlKGNoaWxkQ2hhbmdlKTsKIAogICAgIGF1dG8gbXV0YXRp
b25SZWNpcGllbnRzID0gTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUZvckNo
YXJhY3RlckRhdGFNdXRhdGlvbigqdGhpcyk7CiAgICAgaWYgKFVOTElLRUxZKG11dGF0aW9uUmVj
aXBpZW50cykpCkBAIC0xNzMsNiArMTg3LDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2hhcmFjdGVy
RGF0YTo6c2V0Tm9kZVZhbHVlKGNvbnN0IFN0cmluZyYgbm9kZVZhbHVlKQogCiB2b2lkIENoYXJh
Y3RlckRhdGE6OnNldERhdGFBbmRVcGRhdGUoY29uc3QgU3RyaW5nJiBuZXdEYXRhLCB1bnNpZ25l
ZCBvZmZzZXRPZlJlcGxhY2VkRGF0YSwgdW5zaWduZWQgb2xkTGVuZ3RoLCB1bnNpZ25lZCBuZXdM
ZW5ndGgsIFVwZGF0ZUxpdmVSYW5nZXMgc2hvdWxkVXBkYXRlTGl2ZVJhbmdlcykKIHsKKyAgICBh
dXRvIGNoaWxkQ2hhbmdlID0gbWFrZUNoaWxkQ2hhbmdlKCp0aGlzLCBDb250YWluZXJOb2RlOjpD
aGlsZENoYW5nZTo6U291cmNlOjpBUEkpOworICAgIFN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRh
dGlvbiBzdHlsZUludmFsaWRhdGlvbihwYXJlbnROb2RlKCksIGNoaWxkQ2hhbmdlKTsKKwogICAg
IFN0cmluZyBvbGREYXRhID0gbV9kYXRhOwogICAgIG1fZGF0YSA9IG5ld0RhdGE7CiAKQEAgLTE5
MSwyNiArMjA4LDE5IEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0YUFuZFVwZGF0ZShjb25z
dCBTdHJpbmcmIG5ld0RhdGEsIHVuc2lnbmVkIG9mZnNldE9mUmVwCiAgICAgaWYgKGRvY3VtZW50
KCkuZnJhbWUoKSkKICAgICAgICAgZG9jdW1lbnQoKS5mcmFtZSgpLT5zZWxlY3Rpb24oKS50ZXh0
V2FzUmVwbGFjZWQodGhpcywgb2Zmc2V0T2ZSZXBsYWNlZERhdGEsIG9sZExlbmd0aCwgbmV3TGVu
Z3RoKTsKIAotICAgIG5vdGlmeVBhcmVudEFmdGVyQ2hhbmdlKENvbnRhaW5lck5vZGU6OkNoaWxk
Q2hhbmdlOjpTb3VyY2U6OkFQSSk7CisgICAgbm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoY2hpbGRD
aGFuZ2UpOwogCiAgICAgZGlzcGF0Y2hNb2RpZmllZEV2ZW50KG9sZERhdGEpOwogfQogCi12b2lk
IENoYXJhY3RlckRhdGE6Om5vdGlmeVBhcmVudEFmdGVyQ2hhbmdlKENvbnRhaW5lck5vZGU6OkNo
aWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNlKQordm9pZCBDaGFyYWN0ZXJEYXRhOjpub3RpZnlQYXJl
bnRBZnRlckNoYW5nZShjb25zdCBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSYgY2hpbGRDaGFu
Z2UpCiB7CiAgICAgZG9jdW1lbnQoKS5pbmNET01UcmVlVmVyc2lvbigpOwogCiAgICAgaWYgKCFw
YXJlbnROb2RlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENvbnRhaW5lck5vZGU6OkNoaWxk
Q2hhbmdlIGNoYW5nZSA9IHsKLSAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5
cGU6OlRleHRDaGFuZ2VkLAotICAgICAgICBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxp
bmcoKnRoaXMpLAotICAgICAgICBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZygqdGhpcyks
Ci0gICAgICAgIHNvdXJjZQotICAgIH07Ci0KLSAgICBwYXJlbnROb2RlKCktPmNoaWxkcmVuQ2hh
bmdlZChjaGFuZ2UpOworICAgIHBhcmVudE5vZGUoKS0+Y2hpbGRyZW5DaGFuZ2VkKGNoaWxkQ2hh
bmdlKTsKIH0KIAogdm9pZCBDaGFyYWN0ZXJEYXRhOjpkaXNwYXRjaE1vZGlmaWVkRXZlbnQoY29u
c3QgU3RyaW5nJiBvbGREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJh
Y3RlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKaW5kZXggYzU5
NDczNWJlY2IwOWEzNmU2NTQyOWYyMjk2NmNmYTEzMzBmOTM4MS4uMzZhNDkyNTQwN2U5MTNjY2Nh
NzNlOTBkZTAzMmFiNWZiODc3NGE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0No
YXJhY3RlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCkBA
IC02NSw3ICs2NSw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgU3RyaW5nIG5vZGVWYWx1
ZSgpIGNvbnN0IGZpbmFsOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE5vZGVWYWx1ZShjb25z
dCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeVBhcmVudEFmdGVyQ2hhbmdlKENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2UpOworICAgIHZvaWQgbm90aWZ5UGFyZW50QWZ0
ZXJDaGFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UmKTsKIAogICAgIFN0cmlu
ZyBtX2RhdGE7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IDZkOGZk
MWZkNTc3MDkyMGI4MTIzMWQzMTU2ZmU1M2I4ODk0Yzg5ODMuLjExNTkyY2JmODdiNWRkMmE3MjZj
YjNhMzUxN2M1ZjRiYzc1ODhhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250
YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRl
ICJBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJDaGlsZENoYW5nZUludmFs
aWRhdGlvbi5oIgogI2luY2x1ZGUgIkNoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCIKICNpbmNsdWRl
ICJDbGFzc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJDb21tb25WTS5oIgpAQCAtMTExLDI5ICsx
MTIsNTIgQEAgQUxXQVlTX0lOTElORSBOb2RlVmVjdG9yIENvbnRhaW5lck5vZGU6OnJlbW92ZUFs
bENoaWxkcmVuV2l0aFNjcmlwdEFzc2VydGlvbihDaGkKIAogICAgIGRpc2Nvbm5lY3RTdWJmcmFt
ZXNJZk5lZWRlZCgqdGhpcywgRGVzY2VuZGFudHNPbmx5KTsKIAorICAgIENvbnRhaW5lck5vZGU6
OkNoaWxkQ2hhbmdlIGNoaWxkQ2hhbmdlIHsgQ2hpbGRDaGFuZ2U6OlR5cGU6OkFsbENoaWxkcmVu
UmVtb3ZlZCwgbnVsbHB0ciwgbnVsbHB0ciwgc291cmNlIH07CisKICAgICBXaWRnZXRIaWVyYXJj
aHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwog
ICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRT
Y29wZTsKKyAgICB7CisgICAgICAgIFN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbiBzdHls
ZUludmFsaWRhdGlvbih0aGlzLCBjaGlsZENoYW5nZSk7CiAKLSAgICBpZiAoVU5MSUtFTFkoaXNT
aGFkb3dSb290KCkgfHwgaXNJblNoYWRvd1RyZWUoKSkpCi0gICAgICAgIGNvbnRhaW5pbmdTaGFk
b3dSb290KCktPndpbGxSZW1vdmVBbGxDaGlsZHJlbigqdGhpcyk7CisgICAgICAgIGlmIChVTkxJ
S0VMWShpc1NoYWRvd1Jvb3QoKSB8fCBpc0luU2hhZG93VHJlZSgpKSkKKyAgICAgICAgICAgIGNv
bnRhaW5pbmdTaGFkb3dSb290KCktPndpbGxSZW1vdmVBbGxDaGlsZHJlbigqdGhpcyk7CiAKLSAg
ICBkb2N1bWVudCgpLm5vZGVDaGlsZHJlbldpbGxCZVJlbW92ZWQoKnRoaXMpOworICAgICAgICBk
b2N1bWVudCgpLm5vZGVDaGlsZHJlbldpbGxCZVJlbW92ZWQoKnRoaXMpOwogCi0gICAgd2hpbGUg
KFJlZlB0cjxOb2RlPiBjaGlsZCA9IG1fZmlyc3RDaGlsZCkgewotICAgICAgICByZW1vdmVCZXR3
ZWVuKG51bGxwdHIsIGNoaWxkLT5uZXh0U2libGluZygpLCAqY2hpbGQpOwotICAgICAgICBhdXRv
IHN1YnRyZWVPYnNlcnZhYmlsaXR5ID0gbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZCgqdGhpcywgKmNo
aWxkKTsKLSAgICAgICAgaWYgKHNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpBUEkgJiYg
c3VidHJlZU9ic2VydmFiaWxpdHkgPT0gUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5OjpNYXli
ZU9ic2VydmFibGVCeVJlZlB0cikKLSAgICAgICAgICAgIHdpbGxDcmVhdGVQb3NzaWJseU9ycGhh
bmVkVHJlZUJ5UmVtb3ZhbChjaGlsZC5nZXQoKSk7CisgICAgICAgIHdoaWxlIChSZWZQdHI8Tm9k
ZT4gY2hpbGQgPSBtX2ZpcnN0Q2hpbGQpIHsKKyAgICAgICAgICAgIHJlbW92ZUJldHdlZW4obnVs
bHB0ciwgY2hpbGQtPm5leHRTaWJsaW5nKCksICpjaGlsZCk7CisgICAgICAgICAgICBhdXRvIHN1
YnRyZWVPYnNlcnZhYmlsaXR5ID0gbm90aWZ5Q2hpbGROb2RlUmVtb3ZlZCgqdGhpcywgKmNoaWxk
KTsKKyAgICAgICAgICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJICYm
IHN1YnRyZWVPYnNlcnZhYmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eTo6TWF5
YmVPYnNlcnZhYmxlQnlSZWZQdHIpCisgICAgICAgICAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5
T3JwaGFuZWRUcmVlQnlSZW1vdmFsKGNoaWxkLmdldCgpKTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFkb2N1bWVudCgpLnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLmlzT3JwaGFuKCkpOwogCiAgICAgaWYgKGRlZmVyQ2hpbGRyZW5DaGFu
Z2VkID09IERlZmVyQ2hpbGRyZW5DaGFuZ2VkOjpObykKLSAgICAgICAgY2hpbGRyZW5DaGFuZ2Vk
KENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlIHsgQ2hpbGRDaGFuZ2U6OlR5cGU6OkFsbENoaWxk
cmVuUmVtb3ZlZCwgbnVsbHB0ciwgbnVsbHB0ciwgc291cmNlIH0pOworICAgICAgICBjaGlsZHJl
bkNoYW5nZWQoY2hpbGRDaGFuZ2UpOwogCiAgICAgcmV0dXJuIGNoaWxkcmVuOwogfQogCitzdGF0
aWMgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgbWFrZUNoaWxkQ2hhbmdlRm9yUmVtb3ZhbChO
b2RlJiBjaGlsZFRvUmVtb3ZlLCBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlIHNv
dXJjZSkKK3sKKyAgICBhdXRvIGNoYW5nZVR5cGUgPSBbJl0geworICAgICAgICBpZiAoaXM8RWxl
bWVudD4oY2hpbGRUb1JlbW92ZSkpCisgICAgICAgICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6
Q2hpbGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRSZW1vdmVkOworICAgICAgICBpZiAoaXM8VGV4dD4o
Y2hpbGRUb1JlbW92ZSkpCisgICAgICAgICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRD
aGFuZ2U6OlR5cGU6OlRleHRSZW1vdmVkOworICAgICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6
Q2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkOworICAgIH0oKTsKKwor
ICAgIHJldHVybiB7CisgICAgICAgIGNoYW5nZVR5cGUsCisgICAgICAgIEVsZW1lbnRUcmF2ZXJz
YWw6OnByZXZpb3VzU2libGluZyhjaGlsZFRvUmVtb3ZlKSwKKyAgICAgICAgRWxlbWVudFRyYXZl
cnNhbDo6bmV4dFNpYmxpbmcoY2hpbGRUb1JlbW92ZSksCisgICAgICAgIHNvdXJjZQorICAgIH07
Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVOb2RlV2l0aFNj
cmlwdEFzc2VydGlvbihOb2RlJiBjaGlsZFRvUmVtb3ZlLCBDaGlsZENoYW5nZTo6U291cmNlIHNv
dXJjZSkKIHsKICAgICBSZWY8Tm9kZT4gcHJvdGVjdGVkQ2hpbGRUb1JlbW92ZShjaGlsZFRvUmVt
b3ZlKTsKQEAgLTE2MiwxMSArMTg2LDEzIEBAIEFMV0FZU19JTkxJTkUgYm9vbCBDb250YWluZXJO
b2RlOjpyZW1vdmVOb2RlV2l0aFNjcmlwdEFzc2VydGlvbihOb2RlJiBjaGlsZFRvUmVtCiAgICAg
aWYgKGNoaWxkVG9SZW1vdmUucGFyZW50Tm9kZSgpICE9IHRoaXMpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIENoaWxkQ2hhbmdlIGNoYW5nZTsKKyAgICBhdXRvIGNoaWxkQ2hhbmdlID0g
bWFrZUNoaWxkQ2hhbmdlRm9yUmVtb3ZhbChjaGlsZFRvUmVtb3ZlLCBzb3VyY2UpOworCiAgICAg
UmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5IHN1YnRyZWVPYnNlcnZhYmlsaXR5OwogICAgIHsK
ICAgICAgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNwZW5kV2lk
Z2V0SGllcmFyY2h5VXBkYXRlczsKICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1h
aW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOworICAgICAgICBTdHlsZTo6Q2hpbGRDaGFu
Z2VJbnZhbGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24odGhpcywgY2hpbGRDaGFuZ2UpOwogCiAg
ICAgICAgIGlmIChVTkxJS0VMWShpc1NoYWRvd1Jvb3QoKSB8fCBpc0luU2hhZG93VHJlZSgpKSkK
ICAgICAgICAgICAgIGNvbnRhaW5pbmdTaGFkb3dSb290KCktPnJlc29sdmVTbG90c0JlZm9yZU5v
ZGVJbnNlcnRpb25PclJlbW92YWwoKTsKQEAgLTE3OCwxNyArMjA0LDkgQEAgQUxXQVlTX0lOTElO
RSBib29sIENvbnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUm
IGNoaWxkVG9SZW0KIAogICAgICAgICBSZWZQdHI8Tm9kZT4gcHJldmlvdXNTaWJsaW5nID0gY2hp
bGRUb1JlbW92ZS5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgUmVmUHRyPE5vZGU+IG5leHRT
aWJsaW5nID0gY2hpbGRUb1JlbW92ZS5uZXh0U2libGluZygpOworCiAgICAgICAgIHJlbW92ZUJl
dHdlZW4ocHJldmlvdXNTaWJsaW5nLmdldCgpLCBuZXh0U2libGluZy5nZXQoKSwgY2hpbGRUb1Jl
bW92ZSk7CiAgICAgICAgIHN1YnRyZWVPYnNlcnZhYmlsaXR5ID0gbm90aWZ5Q2hpbGROb2RlUmVt
b3ZlZCgqdGhpcywgY2hpbGRUb1JlbW92ZSk7Ci0KLSAgICAgICAgY2hhbmdlLnR5cGUgPSBpczxF
bGVtZW50PihjaGlsZFRvUmVtb3ZlKSA/Ci0gICAgICAgICAgICBDaGlsZENoYW5nZTo6VHlwZTo6
RWxlbWVudFJlbW92ZWQgOgotICAgICAgICAgICAgKGlzPFRleHQ+KGNoaWxkVG9SZW1vdmUpID8K
LSAgICAgICAgICAgICAgICBDaGlsZENoYW5nZTo6VHlwZTo6VGV4dFJlbW92ZWQgOgotICAgICAg
ICAgICAgICAgIENoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0NoaWxkUmVtb3ZlZCk7Ci0g
ICAgICAgIGNoYW5nZS5wcmV2aW91c1NpYmxpbmdFbGVtZW50ID0gKCFwcmV2aW91c1NpYmxpbmcg
fHwgaXM8RWxlbWVudD4oKnByZXZpb3VzU2libGluZykpID8gZG93bmNhc3Q8RWxlbWVudD4ocHJl
dmlvdXNTaWJsaW5nLmdldCgpKSA6IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZygq
cHJldmlvdXNTaWJsaW5nKTsKLSAgICAgICAgY2hhbmdlLm5leHRTaWJsaW5nRWxlbWVudCA9ICgh
bmV4dFNpYmxpbmcgfHwgaXM8RWxlbWVudD4oKm5leHRTaWJsaW5nKSkgPyBkb3duY2FzdDxFbGVt
ZW50PihuZXh0U2libGluZy5nZXQoKSkgOiBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZygq
bmV4dFNpYmxpbmcpOwotICAgICAgICBjaGFuZ2Uuc291cmNlID0gc291cmNlOwogICAgIH0KIAog
ICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJICYmIHN1YnRyZWVPYnNl
cnZhYmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eTo6TWF5YmVPYnNlcnZhYmxl
QnlSZWZQdHIpCkBAIC0xOTcsMjEgKzIxNSw0NSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgQ29udGFp
bmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24oTm9kZSYgY2hpbGRUb1JlbQog
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFkb2N1bWVudCgpLnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLmlzT3JwaGFuKCkpOwogCiAgICAgLy8gRklYTUU6IE1vdmUgY2hpbGRy
ZW5DaGFuZ2VkIGludG8gU2NyaXB0RGlzYWxsb3dlZFNjb3BlIGJsb2NrLgotICAgIGNoaWxkcmVu
Q2hhbmdlZChjaGFuZ2UpOworICAgIGNoaWxkcmVuQ2hhbmdlZChjaGlsZENoYW5nZSk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogZW51bSBjbGFzcyBSZXBsYWNlZEFsbENoaWxkcmVuIHsgTm8s
IFllcyB9OwogCitzdGF0aWMgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgbWFrZUNoaWxkQ2hh
bmdlRm9ySW5zZXJ0aW9uKENvbnRhaW5lck5vZGUmIGNvbnRhaW5lck5vZGUsIE5vZGUmIGNoaWxk
LCBOb2RlKiBiZWZvcmVDaGlsZCwgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZSBz
b3VyY2UsIFJlcGxhY2VkQWxsQ2hpbGRyZW4gcmVwbGFjZWRBbGxDaGlsZHJlbikKK3sKKyAgICBp
ZiAocmVwbGFjZWRBbGxDaGlsZHJlbiA9PSBSZXBsYWNlZEFsbENoaWxkcmVuOjpZZXMpCisgICAg
ICAgIHJldHVybiB7IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpBbGxDaGlsZHJl
blJlcGxhY2VkLCBudWxscHRyLCBudWxscHRyLCBzb3VyY2UgfTsKKworICAgIGF1dG8gY2hhbmdl
VHlwZSA9IFsmXSB7CisgICAgICAgIGlmIChpczxFbGVtZW50PihjaGlsZCkpCisgICAgICAgICAg
ICByZXR1cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRJbnNlcnRl
ZDsKKyAgICAgICAgaWYgKGlzPFRleHQ+KGNoaWxkKSkKKyAgICAgICAgICAgIHJldHVybiBDb250
YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6VGV4dEluc2VydGVkOworICAgICAgICByZXR1
cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRJbnNl
cnRlZDsKKyAgICB9KCk7CisKKyAgICByZXR1cm4geworICAgICAgICBjaGFuZ2VUeXBlLAorICAg
ICAgICBiZWZvcmVDaGlsZCA/IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZygqYmVm
b3JlQ2hpbGQpIDogRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKGNvbnRhaW5lck5vZGUpLAor
ICAgICAgICAhYmVmb3JlQ2hpbGQgfHwgYmVmb3JlQ2hpbGQtPmlzRWxlbWVudE5vZGUoKSA/IGRv
d25jYXN0PEVsZW1lbnQ+KGJlZm9yZUNoaWxkKSA6IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJs
aW5nKCpiZWZvcmVDaGlsZCksCisgICAgICAgIHNvdXJjZQorICAgIH07Cit9CisKIHRlbXBsYXRl
PHR5cGVuYW1lIERPTUluc2VydGlvbldvcms+Ci1zdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGV4
ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbihDb250YWluZXJOb2RlJiBjb250
YWluZXJOb2RlLCBOb2RlJiBjaGlsZCwKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZXhlY3V0
ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKENvbnRhaW5lck5vZGUmIGNvbnRhaW5l
ck5vZGUsIE5vZGUmIGNoaWxkLCBOb2RlKiBiZWZvcmVDaGlsZCwKICAgICBDb250YWluZXJOb2Rl
OjpDaGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSwgUmVwbGFjZWRBbGxDaGlsZHJlbiByZXBsYWNl
ZEFsbENoaWxkcmVuLCBET01JbnNlcnRpb25Xb3JrIGRvTm9kZUluc2VydGlvbikKIHsKKyAgICBh
dXRvIGNoaWxkQ2hhbmdlID0gbWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9uKGNvbnRhaW5lck5v
ZGUsIGNoaWxkLCBiZWZvcmVDaGlsZCwgc291cmNlLCByZXBsYWNlZEFsbENoaWxkcmVuKTsKKwog
ICAgIE5vZGVWZWN0b3IgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHM7CiAgICAgewog
ICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRn
ZXRIaWVyYXJjaHlVcGRhdGVzOwogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFp
blRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CisgICAgICAgIFN0eWxlOjpDaGlsZENoYW5n
ZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigmY29udGFpbmVyTm9kZSwgY2hpbGRDaGFu
Z2UpOwogCiAgICAgICAgIGlmIChVTkxJS0VMWShjb250YWluZXJOb2RlLmlzU2hhZG93Um9vdCgp
IHx8IGNvbnRhaW5lck5vZGUuaXNJblNoYWRvd1RyZWUoKSkpCiAgICAgICAgICAgICBjb250YWlu
ZXJOb2RlLmNvbnRhaW5pbmdTaGFkb3dSb290KCktPnJlc29sdmVTbG90c0JlZm9yZU5vZGVJbnNl
cnRpb25PclJlbW92YWwoKTsKQEAgLTIyMiwyMCArMjY0LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgdm9pZCBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oQ29udGFpbmVy
Tm9kZSYKICAgICB9CiAKICAgICAvLyBGSVhNRTogTW92ZSBjaGlsZHJlbkNoYW5nZWQgaW50byBT
Y3JpcHREaXNhbGxvd2VkU2NvcGUgYmxvY2suCi0gICAgaWYgKHJlcGxhY2VkQWxsQ2hpbGRyZW4g
PT0gUmVwbGFjZWRBbGxDaGlsZHJlbjo6WWVzKQotICAgICAgICBjb250YWluZXJOb2RlLmNoaWxk
cmVuQ2hhbmdlZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSB7IENvbnRhaW5lck5vZGU6OkNo
aWxkQ2hhbmdlOjpUeXBlOjpBbGxDaGlsZHJlblJlcGxhY2VkLCBudWxscHRyLCBudWxscHRyLCBz
b3VyY2UgfSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNvbnRhaW5lck5vZGUuY2hpbGRyZW5DaGFu
Z2VkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlIHsKLSAgICAgICAgICAgIGNoaWxkLmlzRWxl
bWVudE5vZGUoKSA/Ci0gICAgICAgICAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6
OlR5cGU6OkVsZW1lbnRJbnNlcnRlZCA6Ci0gICAgICAgICAgICAgICAgKGNoaWxkLmlzVGV4dE5v
ZGUoKSA/Ci0gICAgICAgICAgICAgICAgICAgIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpU
eXBlOjpUZXh0SW5zZXJ0ZWQgOgotICAgICAgICAgICAgICAgICAgICBDb250YWluZXJOb2RlOjpD
aGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29udGVudHNDaGlsZEluc2VydGVkKSwKLSAgICAgICAgICAg
IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhjaGlsZCksCi0gICAgICAgICAgICBF
bGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGlsZCksCi0gICAgICAgICAgICBzb3VyY2UK
LSAgICAgICAgfSk7Ci0gICAgfQorICAgIGNvbnRhaW5lck5vZGUuY2hpbGRyZW5DaGFuZ2VkKGNo
aWxkQ2hhbmdlKTsKIAogICAgIEFTU0VSVChTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRo
cmVhZDo6aXNFdmVudERpc3BhdGNoQWxsb3dlZEluU3VidHJlZShjaGlsZCkpOwogICAgIGZvciAo
YXV0byYgdGFyZ2V0IDogcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMpCkBAIC00NDgs
NyArNDc3LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3Jl
KE5vZGUmIG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCkKICAgICAgICAgaWYgKGNoaWxkLT5wYXJl
bnROb2RlKCkpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBleGVjdXRlTm9kZUluc2Vy
dGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIGNoaWxkLmdldCgpLCBDaGlsZENoYW5nZTo6
U291cmNlOjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vLCBbJl0geworICAgICAgICBleGVj
dXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIGNoaWxkLmdldCgpLCBu
ZXh0LnB0cigpLCBDaGlsZENoYW5nZTo6U291cmNlOjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRyZW46
Ok5vLCBbJl0gewogICAgICAgICAgICAgY2hpbGQtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRy
ZWVTY29wZSgpKTsKICAgICAgICAgICAgIGluc2VydEJlZm9yZUNvbW1vbihuZXh0LCBjaGlsZCk7
CiAgICAgICAgIH0pOwpAQCAtNTA3LDcgKzUzNiw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cGFy
c2VySW5zZXJ0QmVmb3JlKE5vZGUmIG5ld0NoaWxkLCBOb2RlJiBuZXh0Q2hpbGQpCiAgICAgaWYg
KG5leHRDaGlsZC5wcmV2aW91c1NpYmxpbmcoKSA9PSAmbmV3Q2hpbGQgfHwgJm5leHRDaGlsZCA9
PSAmbmV3Q2hpbGQpIC8vIG5vdGhpbmcgdG8gZG8KICAgICAgICAgcmV0dXJuOwogCi0gICAgZXhl
Y3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBuZXdDaGlsZCwgQ2hp
bGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpObywgWyZdIHsK
KyAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIG5ld0No
aWxkLCAmbmV4dENoaWxkLCBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsIFJlcGxhY2VkQWxs
Q2hpbGRyZW46Ok5vLCBbJl0gewogICAgICAgICBpZiAoJmRvY3VtZW50KCkgIT0gJm5ld0NoaWxk
LmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudCgpLmFkb3B0Tm9kZShuZXdDaGlsZCk7
CiAKQEAgLTU4MSw3ICs2MTAsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjpy
ZXBsYWNlQ2hpbGQoTm9kZSYgbmV3Q2hpbGQsIE5vZGUmIG9sZENoaWxkKQogICAgICAgICBpZiAo
Y2hpbGQtPnBhcmVudE5vZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGV4ZWN1
dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQuZ2V0KCksIENo
aWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7Cisg
ICAgICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hp
bGQuZ2V0KCksIHJlZkNoaWxkLmdldCgpLCBDaGlsZENoYW5nZTo6U291cmNlOjpBUEksIFJlcGxh
Y2VkQWxsQ2hpbGRyZW46Ok5vLCBbJl0gewogICAgICAgICAgICAgY2hpbGQtPnNldFRyZWVTY29w
ZVJlY3Vyc2l2ZWx5KHRyZWVTY29wZSgpKTsKICAgICAgICAgICAgIGlmIChyZWZDaGlsZCkKICAg
ICAgICAgICAgICAgICBpbnNlcnRCZWZvcmVDb21tb24oKnJlZkNoaWxkLCBjaGlsZC5nZXQoKSk7
CkBAIC02ODIsNyArNzExLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZXBsYWNlQWxsKE5vZGUq
IG5vZGUpCiAgICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBtdXRhdGlvbigqdGhpcyk7CiAgICAg
cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKENoaWxkQ2hhbmdlOjpTb3VyY2U6
OkFQSSwgRGVmZXJDaGlsZHJlbkNoYW5nZWQ6Olllcyk7CiAKLSAgICBleGVjdXRlTm9kZUluc2Vy
dGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsICpub2RlLCBDaGlsZENoYW5nZTo6U291cmNl
OjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRyZW46OlllcywgWyZdIHsKKyAgICBleGVjdXRlTm9kZUlu
c2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsICpub2RlLCBudWxscHRyLCBDaGlsZENo
YW5nZTo6U291cmNlOjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRyZW46OlllcywgWyZdIHsKICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZShkb2N1bWVudCgp
LCAqdGhpcyk7CiAgICAgICAgIG5vZGUtPnNldFRyZWVTY29wZVJlY3Vyc2l2ZWx5KHRyZWVTY29w
ZSgpKTsKICAgICAgICAgYXBwZW5kQ2hpbGRDb21tb24oKm5vZGUpOwpAQCAtNzYzLDcgKzc5Miw3
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkV2l0aG91dFBy
ZUluc2VydGlvblZhbGlkaXR5Q2hlY2soTm9kCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICAvLyBBcHBlbmQgY2hpbGQgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdAotICAgICAgICBleGVjdXRl
Tm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIGNoaWxkLmdldCgpLCBDaGls
ZENoYW5nZTo6U291cmNlOjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vLCBbJl0geworICAg
ICAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIGNoaWxk
LmdldCgpLCBudWxscHRyLCBDaGlsZENoYW5nZTo6U291cmNlOjpBUEksIFJlcGxhY2VkQWxsQ2hp
bGRyZW46Ok5vLCBbJl0gewogICAgICAgICAgICAgY2hpbGQtPnNldFRyZWVTY29wZVJlY3Vyc2l2
ZWx5KHRyZWVTY29wZSgpKTsKICAgICAgICAgICAgIGFwcGVuZENoaWxkQ29tbW9uKGNoaWxkKTsK
ICAgICAgICAgfSk7CkBAIC03NzksNyArODA4LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJz
ZXJBcHBlbmRDaGlsZChOb2RlJiBuZXdDaGlsZCkKICAgICBBU1NFUlQoIW5ld0NoaWxkLmlzRG9j
dW1lbnRGcmFnbWVudCgpKTsKICAgICBBU1NFUlQoIWhhc1RhZ05hbWUoSFRNTE5hbWVzOjp0ZW1w
bGF0ZVRhZykpOwogCi0gICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9u
KCp0aGlzLCBuZXdDaGlsZCwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyLCBSZXBsYWNlZEFs
bENoaWxkcmVuOjpObywgWyZdIHsKKyAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRB
c3NlcnRpb24oKnRoaXMsIG5ld0NoaWxkLCBudWxscHRyLCBDaGlsZENoYW5nZTo6U291cmNlOjpQ
YXJzZXIsIFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vLCBbJl0gewogICAgICAgICBpZiAoJmRvY3Vt
ZW50KCkgIT0gJm5ld0NoaWxkLmRvY3VtZW50KCkpCiAgICAgICAgICAgICBkb2N1bWVudCgpLmFk
b3B0Tm9kZShuZXdDaGlsZCk7CiAKQEAgLTgxMiw2ICs4NDEsOCBAQCBzdGF0aWMgYm9vbCBhZmZl
Y3RzRWxlbWVudHMoY29uc3QgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAg
ICBjYXNlIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0NoaWxk
SW5zZXJ0ZWQ6CiAgICAgY2FzZSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6Tm9u
Q29udGVudHNDaGlsZFJlbW92ZWQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIENv
bnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbjoK
KyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmluZGV4IDNmYjE5YzU5NjVm
NDVlNmRiNjdiOTE2MGJmNGQ5MDcxZjU4ZTE3OTguLmM0NDJjY2JmNWU4N2QyYmI2NTJhZjI0M2Rl
NzRmN2I0NGRhN2UzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaApAQCAtNzQsNyAr
NzQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbG9uZUNoaWxkTm9kZXMoQ29udGFpbmVyTm9kZSYg
Y2xvbmUpOwogCiAgICAgc3RydWN0IENoaWxkQ2hhbmdlIHsKLSAgICAgICAgZW51bSBjbGFzcyBU
eXBlIDogdWludDhfdCB7IEVsZW1lbnRJbnNlcnRlZCwgRWxlbWVudFJlbW92ZWQsIFRleHRJbnNl
cnRlZCwgVGV4dFJlbW92ZWQsIFRleHRDaGFuZ2VkLCBBbGxDaGlsZHJlblJlbW92ZWQsIE5vbkNv
bnRlbnRzQ2hpbGRSZW1vdmVkLCBOb25Db250ZW50c0NoaWxkSW5zZXJ0ZWQsIEFsbENoaWxkcmVu
UmVwbGFjZWQgfTsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7IEVsZW1lbnRJ
bnNlcnRlZCwgRWxlbWVudFJlbW92ZWQsIFRleHRJbnNlcnRlZCwgVGV4dFJlbW92ZWQsIFRleHRD
aGFuZ2VkLCBBbGxDaGlsZHJlblJlbW92ZWQsIE5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkLCBOb25D
b250ZW50c0NoaWxkSW5zZXJ0ZWQsIEFsbENoaWxkcmVuUmVwbGFjZWQsIEZpbmlzaGVkUGFyc2lu
Z0NoaWxkcmVuIH07CiAgICAgICAgIGVudW0gY2xhc3MgU291cmNlIDogYm9vbCB7IFBhcnNlciwg
QVBJIH07CiAKICAgICAgICAgQ2hpbGRDaGFuZ2U6OlR5cGUgdHlwZTsKQEAgLTk1LDYgKzk1LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6VGV4dENoYW5n
ZWQ6CiAgICAgICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpBbGxDaGlsZHJlblJlbW92
ZWQ6CiAgICAgICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0NoaWxk
UmVtb3ZlZDoKKyAgICAgICAgICAgIGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6OkZpbmlzaGVkUGFy
c2luZ0NoaWxkcmVuOgogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CmluZGV4IDVkN2IxYmUyNjE2NDBjZjE0MTBlY2EzZWM5MTczYTQwODlhZmQxOGQuLmFjZGFhMzY4
NDFmZjcxMGIxYWMyYmM2ODg5YWZhODBkNWY5ZDFkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBdHRyLmgiCiAjaW5jbHVkZSAiQXR0cmlidXRl
Q2hhbmdlSW52YWxpZGF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAi
Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIgpA
QCAtMjAzOCw3ICsyMDM5LDcgQEAgU3R5bGU6OkVsZW1lbnRTdHlsZSBFbGVtZW50OjpyZXNvbHZl
U3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0JiByZXNvbHUKICAgICByZXR1cm4g
c3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqdGhpcywgcmVzb2x1dGlvbkNvbnRleHQp
OwogfQogCi1zdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKEVsZW1l
bnQqIHNpYmxpbmcpCit2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMoRWxlbWVu
dCogc2libGluZykKIHsKICAgICBmb3IgKDsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5l
eHRFbGVtZW50U2libGluZygpKSB7CiAgICAgICAgIGlmIChzaWJsaW5nLT5zdHlsZUlzQWZmZWN0
ZWRCeVByZXZpb3VzU2libGluZygpKQpAQCAtMjY0MiwxMjQgKzI2NDMsMTEgQEAgYm9vbCBFbGVt
ZW50OjpjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlIHR5cGUpIGNvbnN0CiAgICAgfQogICAgIHJl
dHVybiBmYWxzZTsKIH0KLQotc3RhdGljIHZvaWQgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKEVs
ZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgaWYgKGVsZW1lbnQuc3R5bGVBZmZlY3RlZEJ5RW1wdHko
KSkgewotICAgICAgICBhdXRvKiBzdHlsZSA9IGVsZW1lbnQucmVuZGVyU3R5bGUoKTsKLSAgICAg
ICAgaWYgKCFzdHlsZSB8fCAoIXN0eWxlLT5lbXB0eVN0YXRlKCkgfHwgZWxlbWVudC5oYXNDaGls
ZE5vZGVzKCkpKQotICAgICAgICAgICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVl
KCk7Ci0gICAgfQotfQotCi0KLXN0YXRpYyB2b2lkIGludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxlbWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQot
ewotICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZCA9IHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlG
b3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVkID0g
cGFyZW50LmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLQot
ICAgIGlmICghY2hpbGRyZW5BZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNBZmZlY3RlZCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudEFmdGVyQ2hhbmdl
OyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAg
ICAgICAgaWYgKGNoaWxkcmVuQWZmZWN0ZWQpCi0gICAgICAgICAgICBzaWJsaW5nLT5pbnZhbGlk
YXRlU3R5bGVJbnRlcm5hbCgpOwotICAgICAgICBpZiAoZGVzY2VuZGFudHNBZmZlY3RlZCkgewot
ICAgICAgICAgICAgZm9yIChhdXRvKiBzaWJsaW5nQ2hpbGQgPSBzaWJsaW5nLT5maXJzdEVsZW1l
bnRDaGlsZCgpOyBzaWJsaW5nQ2hpbGQ7IHNpYmxpbmdDaGlsZCA9IHNpYmxpbmdDaGlsZC0+bmV4
dEVsZW1lbnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAgc2libGluZ0NoaWxkLT5pbnZhbGlk
YXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3Rh
dGljIHZvaWQgaW52YWxpZGF0ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBh
cmVudCwgRWxlbWVudCogZWxlbWVudEJlZm9yZUNoYW5nZSkKLXsKLSAgICBib29sIGNoaWxkcmVu
QWZmZWN0ZWQgPSBwYXJlbnQuY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMoKTsKLSAgICBib29sIGRlc2NlbmRhbnRzQWZmZWN0ZWQgPSBwYXJlbnQuZGVzY2VuZGFudHNB
ZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLQotICAgIGlmICghY2hpbGRyZW5B
ZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNBZmZlY3RlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Zm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudEJlZm9yZUNoYW5nZTsgc2libGluZzsgc2libGlu
ZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoY2hp
bGRyZW5BZmZlY3RlZCkKLSAgICAgICAgICAgIHNpYmxpbmctPmludmFsaWRhdGVTdHlsZUludGVy
bmFsKCk7Ci0gICAgICAgIGlmIChkZXNjZW5kYW50c0FmZmVjdGVkKSB7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8qIHNpYmxpbmdDaGlsZCA9IHNpYmxpbmctPmZpcnN0RWxlbWVudENoaWxkKCk7IHNp
YmxpbmdDaGlsZDsgc2libGluZ0NoaWxkID0gc2libGluZ0NoaWxkLT5uZXh0RWxlbWVudFNpYmxp
bmcoKSkKLSAgICAgICAgICAgICAgICBzaWJsaW5nQ2hpbGQtPmludmFsaWRhdGVTdHlsZUZvclN1
YnRyZWVJbnRlcm5hbCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1lbnVtIFNpYmxpbmdDaGVj
a1R5cGUgeyBGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbiwgU2libGluZ0VsZW1lbnRSZW1vdmVkLCBP
dGhlciB9OwotCi1zdGF0aWMgdm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoRWxlbWVu
dCYgcGFyZW50LCBTaWJsaW5nQ2hlY2tUeXBlIGNoZWNrVHlwZSwgRWxlbWVudCogZWxlbWVudEJl
Zm9yZUNoYW5nZSwgRWxlbWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQotewotICAgIC8vIDplbXB0
eSBzZWxlY3Rvci4KLSAgICBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UocGFyZW50KTsKLQotICAg
IGlmIChwYXJlbnQuc3R5bGVWYWxpZGl0eSgpID49IFN0eWxlOjpWYWxpZGl0eTo6U3VidHJlZUlu
dmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIDpmaXJzdC1jaGlsZC4gIEluIHRoZSBw
YXJzZXIgY2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnl0aGluZywgc2lu
Y2Ugd2Ugd2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4KLSAgICAvLyBJbiB0aGUgRE9NIGNhc2Us
IHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgfGFmdGVyQ2hhbmdlfCBpcyBub3QgMC4K
LSAgICAvLyB8YWZ0ZXJDaGFuZ2V8IGlzIDAgaW4gdGhlIHBhcnNlciBjYXNlLCBzbyBpdCB3b3Jr
cyBvdXQgdGhhdCB3ZSdsbCBza2lwIHRoaXMgYmxvY2suCi0gICAgaWYgKHBhcmVudC5jaGlsZHJl
bkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSAmJiBlbGVtZW50QWZ0ZXJDaGFuZ2UpIHsKLSAg
ICAgICAgLy8gRmluZCBvdXIgbmV3IGZpcnN0IGNoaWxkLgotICAgICAgICBSZWZQdHI8RWxlbWVu
dD4gbmV3Rmlyc3RFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZChwYXJlbnQp
OwotICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCBlbGVtZW50IG5vZGUgZm9sbG93aW5nIHxhZnRl
ckNoYW5nZXwKLQotICAgICAgICAvLyBUaGlzIGlzIHRoZSBpbnNlcnQvYXBwZW5kIGNhc2UuCi0g
ICAgICAgIGlmIChuZXdGaXJzdEVsZW1lbnQgIT0gZWxlbWVudEFmdGVyQ2hhbmdlKSB7Ci0gICAg
ICAgICAgICBhdXRvKiBzdHlsZSA9IGVsZW1lbnRBZnRlckNoYW5nZS0+cmVuZGVyU3R5bGUoKTsK
LSAgICAgICAgICAgIGlmICghc3R5bGUgfHwgc3R5bGUtPmZpcnN0Q2hpbGRTdGF0ZSgpKQotICAg
ICAgICAgICAgICAgIGVsZW1lbnRBZnRlckNoYW5nZS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJl
ZUludGVybmFsKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gaGFu
ZGxlIG5vZGUgcmVtb3ZhbC4KLSAgICAgICAgaWYgKGNoZWNrVHlwZSA9PSBTaWJsaW5nRWxlbWVu
dFJlbW92ZWQgJiYgbmV3Rmlyc3RFbGVtZW50ID09IGVsZW1lbnRBZnRlckNoYW5nZSAmJiBuZXdG
aXJzdEVsZW1lbnQpIHsKLSAgICAgICAgICAgIGF1dG8qIHN0eWxlID0gbmV3Rmlyc3RFbGVtZW50
LT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmZpcnN0
Q2hpbGRTdGF0ZSgpKQotICAgICAgICAgICAgICAgIG5ld0ZpcnN0RWxlbWVudC0+aW52YWxpZGF0
ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyA6
bGFzdC1jaGlsZC4gIEluIHRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2ZSB0
byBjaGVjayBhbnl0aGluZywgc2luY2Ugd2Ugd2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4KLSAg
ICAvLyBJbiB0aGUgRE9NIGNhc2UsIHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgfGFm
dGVyQ2hhbmdlfCBpcyBub3QgMC4KLSAgICBpZiAocGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRCeUxh
c3RDaGlsZFJ1bGVzKCkgJiYgZWxlbWVudEJlZm9yZUNoYW5nZSkgewotICAgICAgICAvLyBGaW5k
IG91ciBuZXcgbGFzdCBjaGlsZC4KLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0xhc3RFbGVt
ZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKHBhcmVudCk7Ci0KLSAgICAgICAgaWYg
KG5ld0xhc3RFbGVtZW50ICE9IGVsZW1lbnRCZWZvcmVDaGFuZ2UpIHsKLSAgICAgICAgICAgIGF1
dG8qIHN0eWxlID0gZWxlbWVudEJlZm9yZUNoYW5nZS0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAg
ICAgIGlmICghc3R5bGUgfHwgc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkpCi0gICAgICAgICAgICAg
ICAgZWxlbWVudEJlZm9yZUNoYW5nZS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFs
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gaGFuZGxlIG5vZGUg
cmVtb3ZhbC4gIFRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSBpcyBzaW1pbGFyIHRvIG5vZGUgcmVt
b3ZhbCBhcyB3ZWxsIGluIHRoYXQgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIGxhc3QgY2hpbGQKLSAg
ICAgICAgLy8gdG8gbWF0Y2ggbm93LgotICAgICAgICBpZiAoKGNoZWNrVHlwZSA9PSBTaWJsaW5n
RWxlbWVudFJlbW92ZWQgfHwgY2hlY2tUeXBlID09IEZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKSAm
JiBuZXdMYXN0RWxlbWVudCA9PSBlbGVtZW50QmVmb3JlQ2hhbmdlICYmIG5ld0xhc3RFbGVtZW50
KSB7Ci0gICAgICAgICAgICBhdXRvKiBzdHlsZSA9IG5ld0xhc3RFbGVtZW50LT5yZW5kZXJTdHls
ZSgpOwotICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkp
Ci0gICAgICAgICAgICAgICAgbmV3TGFzdEVsZW1lbnQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRy
ZWVJbnRlcm5hbCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaW52YWxpZGF0ZUZvclNpYmxp
bmdDb21iaW5hdG9ycyhlbGVtZW50QWZ0ZXJDaGFuZ2UpOwotCi0gICAgaW52YWxpZGF0ZUZvckZv
cndhcmRQb3NpdGlvbmFsUnVsZXMocGFyZW50LCBlbGVtZW50QWZ0ZXJDaGFuZ2UpOwotICAgIGlu
dmFsaWRhdGVGb3JCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhwYXJlbnQsIGVsZW1lbnRCZWZvcmVD
aGFuZ2UpOwotfQotCiB2b2lkIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENo
YW5nZSYgY2hhbmdlKQogewogICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFu
Z2UpOwotICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNl
cikKLSAgICAgICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKCp0aGlzKTsKLSAgICBlbHNlIHsK
LSAgICAgICAgYXV0byBjaGVja1R5cGUgPSBjaGFuZ2UudHlwZSA9PSBDaGlsZENoYW5nZTo6VHlw
ZTo6RWxlbWVudFJlbW92ZWQgPyBTaWJsaW5nRWxlbWVudFJlbW92ZWQgOiBPdGhlcjsKLSAgICAg
ICAgY2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKCp0aGlzLCBjaGVja1R5cGUsIGNoYW5nZS5w
cmV2aW91c1NpYmxpbmdFbGVtZW50LCBjaGFuZ2UubmV4dFNpYmxpbmdFbGVtZW50KTsKLSAgICB9
CiAKLSAgICBpZiAoU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRoaXMtPnNoYWRvd1Jvb3QoKSkg
eworICAgIGlmIChhdXRvKiBzaGFkb3dSb290ID0gdGhpcy0+c2hhZG93Um9vdCgpKSB7CiAgICAg
ICAgIHN3aXRjaCAoY2hhbmdlLnR5cGUpIHsKICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlw
ZTo6RWxlbWVudEluc2VydGVkOgogICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpFbGVt
ZW50UmVtb3ZlZDoKQEAgLTI3NzYsNiArMjY2NCw3IEBAIHZvaWQgRWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29udGVudHNDaGlsZEluc2VydGVkOgog
ICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0NoaWxkUmVtb3ZlZDoK
KyAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6RmluaXNoZWRQYXJzaW5nQ2hpbGRyZW46
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTI4MDIsNyArMjY5MSwx
MyBAQCB2b2lkIEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiB7CiAgICAgQ29udGFp
bmVyTm9kZTo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAgICAgc2V0SXNQYXJzaW5nQ2hpbGRy
ZW5GaW5pc2hlZCgpOwotICAgIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcygqdGhpcywgRmlu
aXNoZWRQYXJzaW5nQ2hpbGRyZW4sIEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RDaGlsZCgqdGhpcyks
IG51bGxwdHIpOworCisgICAgU3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52
YWxpZGF0aW9uKHRoaXMsIHsKKyAgICAgICAgQ2hpbGRDaGFuZ2U6OlR5cGU6OkZpbmlzaGVkUGFy
c2luZ0NoaWxkcmVuLAorICAgICAgICBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQoKnRoaXMp
LAorICAgICAgICBudWxscHRyLAorICAgICAgICBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIK
KyAgICB9KTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kQXR0cmlidXRlcyhTdHJpbmdCdWlsZGVy
JiBidWlsZGVyLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXgg
MDRjZTY1ZGU2ZTg3MmNmMDkzZDJjY2FmMGRmMThhYjk2ZTdhNGU4Mi4uZWY3Y2U4OTk4ZGUwM2Yy
MGY0MjBmMDk1YzM4MTdkZDA1MTQzMWVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC03NjMsNiAr
NzYzLDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RWxlbWVudERhdGE+IG1fZWxlbWVudERhdGE7
CiB9OwogCit2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMoRWxlbWVudCogc2li
bGluZyk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19CRUdJTihXZWJDb3JlOjpFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4
IDUzZjIzOWJiYWY2YjNmMjQ5MjUyZjAyNjM4NWExZWRmMDk4YzI2NTIuLjkxYzI2ZjE0ZDliZDAy
YjNmZmYxZjYwMmIwZDljM2Q5ZDhmMTllMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAK
QEAgLTE0NCw2ICsxNDQsOSBAQCB2b2lkIFNoYWRvd1Jvb3Q6OmNoaWxkcmVuQ2hhbmdlZChjb25z
dCBDaGlsZENoYW5nZSYgY2hpbGRDaGFuZ2UpCiAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6
Tm9uQ29udGVudHNDaGlsZEluc2VydGVkOgogICAgIGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6OkFs
bENoaWxkcmVuUmVwbGFjZWQ6CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hpbGRDaGFuZ2U6
OlR5cGU6OkZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDViZGNmOGVhNWYy
ZDdlOTEwOTc1MTU2YjNkNjU5YmZjM2RmZjRkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcApAQCAtMCwwICsxLDE3MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDaGlsZENoYW5n
ZUludmFsaWRhdGlvbi5oIgorCisjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCisjaW5jbHVk
ZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlNsb3RBc3NpZ25tZW50LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlOjpTdHlsZSB7CisKK0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjpDaGlsZENoYW5n
ZUludmFsaWRhdGlvbihDb250YWluZXJOb2RlKiBjb250YWluZXIsIGNvbnN0IENvbnRhaW5lck5v
ZGU6OkNoaWxkQ2hhbmdlJiBjaGlsZENoYW5nZSkKKyAgICA6IG1fcGFyZW50RWxlbWVudChpczxF
bGVtZW50Pihjb250YWluZXIpID8gZG93bmNhc3Q8RWxlbWVudD4oY29udGFpbmVyKSA6IG51bGxw
dHIpCisgICAgLCBtX2lzRW5hYmxlZChtX3BhcmVudEVsZW1lbnQgPyBtX3BhcmVudEVsZW1lbnQt
Pm5lZWRzU3R5bGVJbnZhbGlkYXRpb24oKSA6IGZhbHNlKQorICAgICwgbV9jaGlsZENoYW5nZShj
aGlsZENoYW5nZSkKK3sKKyAgICAvLyBGSVhNRTogRG8gc21hcnRlciBpbnZhbGlkYXRpb24gc2lt
aWxhdCB0byBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi4KK30KKworQ2hpbGRDaGFuZ2VJbnZhbGlk
YXRpb246On5DaGlsZENoYW5nZUludmFsaWRhdGlvbigpCit7CisgICAgaWYgKCFtX2lzRW5hYmxl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW52YWxpZGF0ZUFmdGVyQ2hhbmdlKCk7Cit9CisK
K3ZvaWQgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVBZnRlckNoYW5nZSgpCit7
CisgICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKCk7CisKKyAgICBpZiAobV9jaGlsZENoYW5n
ZS50eXBlID09IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpGaW5pc2hlZFBhcnNp
bmdDaGlsZHJlbikgeworICAgICAgICBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX2NoaWxkQ2hhbmdlLnNvdXJjZSA9PSBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcygpOworfQorCit2b2lkIENoaWxk
Q2hhbmdlSW52YWxpZGF0aW9uOjpjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UoKQoreworICAgIGF1
dG8mIGVsZW1lbnQgPSBwYXJlbnRFbGVtZW50KCk7CisgICAgaWYgKCFlbGVtZW50LnN0eWxlQWZm
ZWN0ZWRCeUVtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHN0eWxlID0gZWxl
bWVudC5yZW5kZXJTdHlsZSgpOworICAgIGlmICghc3R5bGUgfHwgKCFzdHlsZS0+ZW1wdHlTdGF0
ZSgpIHx8IGVsZW1lbnQuaGFzQ2hpbGROb2RlcygpKSkKKyAgICAgICAgZWxlbWVudC5pbnZhbGlk
YXRlU3R5bGVGb3JTdWJ0cmVlKCk7Cit9CisKK3N0YXRpYyB2b2lkIGludmFsaWRhdGVGb3JGb3J3
YXJkUG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxlbWVudCogZWxlbWVudEFmdGVy
Q2hhbmdlKQoreworICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZCA9IHBhcmVudC5jaGlsZHJlbkFm
ZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CisgICAgYm9vbCBkZXNjZW5kYW50c0Fm
ZmVjdGVkID0gcGFyZW50LmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVs
ZXMoKTsKKworICAgIGlmICghY2hpbGRyZW5BZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNBZmZlY3Rl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudEFm
dGVyQ2hhbmdlOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5n
KCkpIHsKKyAgICAgICAgaWYgKGNoaWxkcmVuQWZmZWN0ZWQpCisgICAgICAgICAgICBzaWJsaW5n
LT5pbnZhbGlkYXRlU3R5bGVJbnRlcm5hbCgpOworICAgICAgICBpZiAoZGVzY2VuZGFudHNBZmZl
Y3RlZCkgeworICAgICAgICAgICAgZm9yIChhdXRvKiBzaWJsaW5nQ2hpbGQgPSBzaWJsaW5nLT5m
aXJzdEVsZW1lbnRDaGlsZCgpOyBzaWJsaW5nQ2hpbGQ7IHNpYmxpbmdDaGlsZCA9IHNpYmxpbmdD
aGlsZC0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpCisgICAgICAgICAgICAgICAgc2libGluZ0NoaWxk
LT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKKyAgICAgICAgfQorICAgIH0K
K30KKworc3RhdGljIHZvaWQgaW52YWxpZGF0ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKEVs
ZW1lbnQmIHBhcmVudCwgRWxlbWVudCogZWxlbWVudEJlZm9yZUNoYW5nZSkKK3sKKyAgICBib29s
IGNoaWxkcmVuQWZmZWN0ZWQgPSBwYXJlbnQuY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3Np
dGlvbmFsUnVsZXMoKTsKKyAgICBib29sIGRlc2NlbmRhbnRzQWZmZWN0ZWQgPSBwYXJlbnQuZGVz
Y2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKworICAgIGlmICgh
Y2hpbGRyZW5BZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNBZmZlY3RlZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudEJlZm9yZUNoYW5nZTsgc2libGlu
Zzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgeworICAgICAg
ICBpZiAoY2hpbGRyZW5BZmZlY3RlZCkKKyAgICAgICAgICAgIHNpYmxpbmctPmludmFsaWRhdGVT
dHlsZUludGVybmFsKCk7CisgICAgICAgIGlmIChkZXNjZW5kYW50c0FmZmVjdGVkKSB7CisgICAg
ICAgICAgICBmb3IgKGF1dG8qIHNpYmxpbmdDaGlsZCA9IHNpYmxpbmctPmZpcnN0RWxlbWVudENo
aWxkKCk7IHNpYmxpbmdDaGlsZDsgc2libGluZ0NoaWxkID0gc2libGluZ0NoaWxkLT5uZXh0RWxl
bWVudFNpYmxpbmcoKSkKKyAgICAgICAgICAgICAgICBzaWJsaW5nQ2hpbGQtPmludmFsaWRhdGVT
dHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIENo
aWxkQ2hhbmdlSW52YWxpZGF0aW9uOjpjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoKQorewor
ICAgIGF1dG8mIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKKyAgICBhdXRvKiBlbGVtZW50QmVm
b3JlQ2hhbmdlID0gbV9jaGlsZENoYW5nZS5wcmV2aW91c1NpYmxpbmdFbGVtZW50OworICAgIGF1
dG8qIGVsZW1lbnRBZnRlckNoYW5nZSA9IG1fY2hpbGRDaGFuZ2UubmV4dFNpYmxpbmdFbGVtZW50
OworCisgICAgaWYgKHBhcmVudC5zdHlsZVZhbGlkaXR5KCkgPj0gU3R5bGU6OlZhbGlkaXR5OjpT
dWJ0cmVlSW52YWxpZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gOmZpcnN0LWNoaWxkLiBJ
biB0aGUgcGFyc2VyIGNhbGxiYWNrIGNhc2UsIHdlIGRvbid0IGhhdmUgdG8gY2hlY2sgYW55dGhp
bmcsIHNpbmNlIHdlIHdlcmUgcmlnaHQgdGhlIGZpcnN0IHRpbWUuCisgICAgLy8gSW4gdGhlIERP
TSBjYXNlLCB3ZSBvbmx5IG5lZWQgdG8gZG8gc29tZXRoaW5nIGlmIHxhZnRlckNoYW5nZXwgaXMg
bm90IDAuCisgICAgLy8gfGFmdGVyQ2hhbmdlfCBpcyAwIGluIHRoZSBwYXJzZXIgY2FzZSwgc28g
aXQgd29ya3Mgb3V0IHRoYXQgd2UnbGwgc2tpcCB0aGlzIGJsb2NrLgorICAgIGlmIChwYXJlbnQu
Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgJiYgZWxlbWVudEFmdGVyQ2hhbmdl
KSB7CisgICAgICAgIC8vIEZpbmQgb3VyIG5ldyBmaXJzdCBjaGlsZC4KKyAgICAgICAgUmVmUHRy
PEVsZW1lbnQ+IG5ld0ZpcnN0RWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQo
cGFyZW50KTsKKyAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgZWxlbWVudCBub2RlIGZvbGxvd2lu
ZyB8YWZ0ZXJDaGFuZ2V8CisKKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgaW5zZXJ0L2FwcGVuZCBj
YXNlLgorICAgICAgICBpZiAobmV3Rmlyc3RFbGVtZW50ICE9IGVsZW1lbnRBZnRlckNoYW5nZSkg
eworICAgICAgICAgICAgYXV0byogc3R5bGUgPSBlbGVtZW50QWZ0ZXJDaGFuZ2UtPnJlbmRlclN0
eWxlKCk7CisgICAgICAgICAgICBpZiAoIXN0eWxlIHx8IHN0eWxlLT5maXJzdENoaWxkU3RhdGUo
KSkKKyAgICAgICAgICAgICAgICBlbGVtZW50QWZ0ZXJDaGFuZ2UtPmludmFsaWRhdGVTdHlsZUZv
clN1YnRyZWVJbnRlcm5hbCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2UgYWxzbyBoYXZl
IHRvIGhhbmRsZSBub2RlIHJlbW92YWwuCisgICAgICAgIGlmIChtX2NoaWxkQ2hhbmdlLnR5cGUg
PT0gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRSZW1vdmVkICYmIG5l
d0ZpcnN0RWxlbWVudCA9PSBlbGVtZW50QWZ0ZXJDaGFuZ2UgJiYgbmV3Rmlyc3RFbGVtZW50KSB7
CisgICAgICAgICAgICBhdXRvKiBzdHlsZSA9IG5ld0ZpcnN0RWxlbWVudC0+cmVuZGVyU3R5bGUo
KTsKKyAgICAgICAgICAgIGlmICghc3R5bGUgfHwgIXN0eWxlLT5maXJzdENoaWxkU3RhdGUoKSkK
KyAgICAgICAgICAgICAgICBuZXdGaXJzdEVsZW1lbnQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRy
ZWVJbnRlcm5hbCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gOmxhc3QtY2hpbGQuIElu
IHRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnl0aGlu
Zywgc2luY2Ugd2Ugd2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4KKyAgICAvLyBJbiB0aGUgRE9N
IGNhc2UsIHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgfGFmdGVyQ2hhbmdlfCBpcyBu
b3QgMC4KKyAgICBpZiAocGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkg
JiYgZWxlbWVudEJlZm9yZUNoYW5nZSkgeworICAgICAgICAvLyBGaW5kIG91ciBuZXcgbGFzdCBj
aGlsZC4KKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0xhc3RFbGVtZW50ID0gRWxlbWVudFRy
YXZlcnNhbDo6bGFzdENoaWxkKHBhcmVudCk7CisKKyAgICAgICAgaWYgKG5ld0xhc3RFbGVtZW50
ICE9IGVsZW1lbnRCZWZvcmVDaGFuZ2UpIHsKKyAgICAgICAgICAgIGF1dG8qIHN0eWxlID0gZWxl
bWVudEJlZm9yZUNoYW5nZS0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgICAgIGlmICghc3R5bGUg
fHwgc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkpCisgICAgICAgICAgICAgICAgZWxlbWVudEJlZm9y
ZUNoYW5nZS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7CisgICAgICAgIH0K
KworICAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gaGFuZGxlIG5vZGUgcmVtb3ZhbC4gVGhlIHBh
cnNlciBjYWxsYmFjayBjYXNlIGlzIHNpbWlsYXIgdG8gbm9kZSByZW1vdmFsIGFzIHdlbGwgaW4g
dGhhdCB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUgbGFzdCBjaGlsZAorICAgICAgICAvLyB0byBtYXRj
aCBub3cuCisgICAgICAgIGJvb2wgcmVtb3ZlZE9yRmluaXNoZWQgPSBtX2NoaWxkQ2hhbmdlLnR5
cGUgPT0gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRSZW1vdmVkIHx8
IG1fY2hpbGRDaGFuZ2UudHlwZSA9PSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6
RmluaXNoZWRQYXJzaW5nQ2hpbGRyZW47CisgICAgICAgIGlmIChyZW1vdmVkT3JGaW5pc2hlZCAm
JiBuZXdMYXN0RWxlbWVudCA9PSBlbGVtZW50QmVmb3JlQ2hhbmdlICYmIG5ld0xhc3RFbGVtZW50
KSB7CisgICAgICAgICAgICBhdXRvKiBzdHlsZSA9IG5ld0xhc3RFbGVtZW50LT5yZW5kZXJTdHls
ZSgpOworICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkp
CisgICAgICAgICAgICAgICAgbmV3TGFzdEVsZW1lbnQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRy
ZWVJbnRlcm5hbCgpOworICAgICAgICB9CisgICAgfQorCisgICAgaW52YWxpZGF0ZUZvclNpYmxp
bmdDb21iaW5hdG9ycyhlbGVtZW50QWZ0ZXJDaGFuZ2UpOworCisgICAgaW52YWxpZGF0ZUZvckZv
cndhcmRQb3NpdGlvbmFsUnVsZXMocGFyZW50LCBlbGVtZW50QWZ0ZXJDaGFuZ2UpOworICAgIGlu
dmFsaWRhdGVGb3JCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhwYXJlbnQsIGVsZW1lbnRCZWZvcmVD
aGFuZ2UpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENo
YW5nZUludmFsaWRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvQ2hpbGRDaGFuZ2VJbnZh
bGlkYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYWIzMTJmNjUzNjA0NDExZjBkN2U2MDNjZjdiYjY4YTUx
OTA3YTA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvQ2hpbGRDaGFu
Z2VJbnZhbGlkYXRpb24uaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJFbGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVz
cGFjZSBTdHlsZSB7CisKK2NsYXNzIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uIHsKK3B1YmxpYzoK
KyAgICBDaGlsZENoYW5nZUludmFsaWRhdGlvbihDb250YWluZXJOb2RlKiwgY29uc3QgQ29udGFp
bmVyTm9kZTo6Q2hpbGRDaGFuZ2UmKTsKKyAgICB+Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24oKTsK
KworcHJpdmF0ZToKKyAgICB2b2lkIGludmFsaWRhdGVBZnRlckNoYW5nZSgpOworICAgIHZvaWQg
Y2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKCk7CisgICAgdm9pZCBjaGVja0ZvclNpYmxpbmdTdHls
ZUNoYW5nZXMoKTsKKworICAgIEVsZW1lbnQmIHBhcmVudEVsZW1lbnQoKSB7IHJldHVybiAqbV9w
YXJlbnRFbGVtZW50OyB9CisKKyAgICBFbGVtZW50KiBtX3BhcmVudEVsZW1lbnQgeyBudWxscHRy
IH07CisgICAgY29uc3QgYm9vbCBtX2lzRW5hYmxlZDsKKworICAgIGNvbnN0IENvbnRhaW5lck5v
ZGU6OkNoaWxkQ2hhbmdlJiBtX2NoaWxkQ2hhbmdlOworfTsKKworfQorfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVBZGp1c3Rlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVBZGp1c3Rlci5oCmluZGV4IDE5MTMxZTU4MGY1NjQ1YWVhMjIzMjgyOTRlOWQ3NjFl
YmY4MzVkNjcuLjk3MmExYWJkMTUyMDYwNTYwMTgzNDMxZjY0ODQ3OTk4MzhkOTlkNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZUFkanVzdGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKKyNpbmNsdWRlICJUZXh0
U2l6ZUFkanVzdG1lbnQuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444709</attachid>
            <date>2021-11-18 11:44:41 -0800</date>
            <delta_ts>2021-11-18 12:10:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233311-20211118214439.patch</filename>
            <type>text/plain</type>
            <size>45215</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1ODUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAyZjkzMWRjYTIwM2Mw
NTE5NDBiM2JkOWM2MzAyYjRlN2M4MTM2Ni4uZjU2MjBjODczOTUwNTQ0N2Q3NjM0MmY3ZWMzNDNl
ZDJlZWUyNDNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIxLTExLTE4ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgY2hpbGQgY2hh
bmdlIGludmFsaWRhdGlvbiBpbnRvIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2Ugc2ltaWxhciBwYXR0ZXJuIGFzIENsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uIGFuZCBvdGhlcnMgd2hlcmUgd2UgY3JlYXRlIGEgc3RhY2sgb2JqZWN0IHNjb3Bl
ZAorICAgICAgICBvdmVyIGEgRE9NIG11dGF0aW9uLiBUaGlzIHdpbGwgYWxsb3cgbW9yZSBzb3Bo
aXN0aWNhdGVkIHJ1bGVzZXQgYmFzZWQgaW52YWxpZGF0aW9uIGluCisgICAgICAgIGZ1dHVyZS4K
KworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBpbnZhbGlkYXRpb24gY29kZSBmcm9tIGNo
aWxkcmVuQ2hhbmdlZCgpIHRvIHRoZSBuZXcgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24gY2xhc3Mu
CisgICAgICAgIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uIGlzIGluc3RhbnRpYXRlZCBpbiBDb250
YWluZXJOb2RlIGFuZCBDaGFyYWN0ZXJEYXRhIG11dGF0aW9uIGZ1bmN0aW9ucworICAgICAgICB0
aGF0IGNhbGwgY2hpbGRyZW5DaGFuZ2VkKCkuIEl0IHVzZXMgdGhlIHNhbWUgQ2hpbGRDaGFuZ2Ug
YXJndW1lbnQgdHlwZSBhcyBjaGlsZHJlbkNoYW5nZWQoKS4KKworICAgICAgICBUaGVyZSBhcmUg
bm8gY2hhbmdlcyB0byBpbnZhbGlkYXRpb24gZnVuY3Rpb25hbGl0eSBpbiB0aGlzIHBhdGNoLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om1ha2VDaGlsZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJE
YXRhOjpwYXJzZXJBcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6
OnNldERhdGFBbmRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6bm90
aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UpOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmg6Cisg
ICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFp
bmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Om1ha2VDaGlsZENoYW5nZUZvclJlbW92YWwpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6bWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2Rl
OjpyZXBsYWNlQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENo
aWxkV2l0aG91dFByZUluc2VydGlvblZhbGlkaXR5Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6YWZm
ZWN0c0VsZW1lbnRzKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OmlzSW5zZXJ0aW9uIGNvbnN0KToK
KyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlkYXRl
Rm9yU2libGluZ0NvbWJpbmF0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNoaWxk
VHlwZUFsbG93ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvckZvcndhcmRQb3NpdGlvbmFsUnVsZXMp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvckJhY2t3YXJkUG9zaXRp
b25hbFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrRm9yU2libGluZ1N0
eWxlQ2hhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAg
KiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpjaGls
ZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRp
b246OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpD
aGlsZENoYW5nZUludmFsaWRhdGlvbjo6fkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZUFm
dGVyQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRh
dGlvbjo6Y2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjppbnZhbGlkYXRlRm9yRm9yd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6aW52YWxpZGF0ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6Y2hlY2tGb3JTaWJsaW5n
U3R5bGVDaGFuZ2VzKToKKyAgICAgICAgKiBzdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlv
bjo6cGFyZW50RWxlbWVudCk6CisgICAgICAgICogc3R5bGUvU3R5bGVBZGp1c3Rlci5oOgorCiAy
MDIxLTExLTE1ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
YW5vdGhlciA8bW9kZWw+IGJhY2tlbmQgYmFja2VkIGJ5IFNjZW5lS2l0IHRvIHByb3ZlIG91dCBN
b2RlbFBsYXllciBpbmZyYXN0cnVjdHVyZSBhIGJpdCBtb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDlk
Nzc1NDhjZGVhMGI0N2IyMjA2YmI1OGRlNmQzZGEwODRlNWM3NDguLmI3YjQ0YjYyZmE1NWJiODQ4
NzA4ZjZhOTIyMmJhN2M0ZjdkN2MyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yNTIxLDYgKzI1MjEs
NyBAQCBzdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCiBzdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5jcHAKIHN0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdlci5jcHAKIHN0eWxlL0F0dHJpYnV0
ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAKK3N0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmNw
cAogc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCiBzdHlsZS9FbGVtZW50UnVsZUNv
bGxlY3Rvci5jcHAKIHN0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJkMWI3YTkz
MmIzNTA5NzdiZjVmOTQwNWE5NjVkMDhlYTg1NjlhMmEuLmFjNDhiMDQ4Y2IwOThmZmYxMmZkOTk0
NTczZWMyYjJiMzYwMWEzYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzNDEsNiArNTM0MSw3IEBACiAJCUU0QzE3ODlCMEVF
NjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzE3ODk2MEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NT
ZWxlY3Rvckxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFNEMyNzk1OTBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzI3OTU3MENGOTc0MTkw
MEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUU0QzNCMUZBMEYwRTQxNjEwMDk2OTNGNiAvKiBMZWdhY3lUaWxl
Q2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
QzNCMUY5MEYwRTQxNjEwMDk2OTNGNiAvKiBMZWdhY3lUaWxlQ2FjaGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNEM0QzYxQTI3NDUyQTc5MDBB
MDQwRTcgLyogQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzRDNjE4Mjc0NTJBNzkwMEEwNDBFNyAvKiBDaGls
ZENoYW5nZUludmFsaWRhdGlvbi5oICovOyB9OwogCQlFNEM5MUEwRTE4MDIzNDMxMDBBMTdGNkQg
LyogVGV4dFBhaW50U3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0QzkxQTBEMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5oICov
OyB9OwogCQlFNEM5MUExNjE4MDk5OUYxMDBBMTdGNkQgLyogUmVuZGVyVGV4dExpbmVCb3hlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDOTFBMTUx
ODA5OTlGMTAwQTE3RjZEIC8qIFJlbmRlclRleHRMaW5lQm94ZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEQzM0YzQjI1MkFFRUNEMDA4MzdE
MDUgLyogSW5saW5lUnVuQW5kT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNEQzM0YzOTI1MkFFRUNDMDA4MzdEMDUgLyogSW5saW5lUnVuQW5k
T2Zmc2V0LmggKi87IH07CkBAIC0xNzA0MCw2ICsxNzA0MSw4IEBACiAJCUU0QzI3OTU3MENGOTc0
MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBSZW5kZXJNZWRpYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEMzQjFG
OTBGMEU0MTYxMDA5NjkzRjYgLyogTGVnYWN5VGlsZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExlZ2FjeVRpbGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFNEMzQjFGQjBGMEU0MTcwMDA5NjkzRjYgLyogTGVnYWN5VGlsZUNhY2hlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5VGlsZUNhY2hlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEM0QzYxODI3NDUyQTc5MDBBMDQwRTcg
LyogQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTRDNEM2MUIyNzQ1MkE4QTAwQTA0MEU3IC8qIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRDOTFBMEQxODAyMzQzMTAwQTE3RjZEIC8qIFRl
eHRQYWludFN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRQYWlu
dFN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QzkxQTBGMTgwMjM0Mzkw
MEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUZXh0UGFpbnRTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUU0QzkxQTE1MTgwOTk5RjEwMEExN0Y2RCAvKiBSZW5kZXJUZXh0TGluZUJveGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRleHRMaW5lQm94ZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwMjcwLDYgKzMwMjczLDggQEAKIAkJCQlFNEE4
MTRENzFDNzBFMTA1MDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAq
LywKIAkJCQlFNEE4MTREOTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxp
ZGF0aW9uLmggKi8sCiAJCQkJRTRBQkFCRjQyMzY4QzZFRjAwRkE0MzQ1IC8qIENhc2NhZGVMZXZl
bC5oICovLAorCQkJCUU0QzRDNjFCMjc0NTJBOEEwMEEwNDBFNyAvKiBDaGlsZENoYW5nZUludmFs
aWRhdGlvbi5jcHAgKi8sCisJCQkJRTRDNEM2MTgyNzQ1MkE3OTAwQTA0MEU3IC8qIENoaWxkQ2hh
bmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJRTRBODE0RDUxQzZERUU4RDAwQkY4NUFDIC8qIENs
YXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLywKIAkJCQlFNEE4MTREMzFDNkRFQzQwMDBCRjg1
QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlGQkRCNjE5QTE2RDYwMzJB
MDBCQjMzOTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwICovLApAQCAtMzI3MjMsNiArMzI3
MjgsNyBAQAogCQkJCTkzRjJDQzkzMjQyN0ZCOUMwMDU4NTFEOCAvKiBDaGFyYWN0ZXJSYW5nZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCOEZGRDExNkFFN0Y5NjAwMzgzODhEIC8qIENoYXJhY3Rl
clJlZmVyZW5jZVBhcnNlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREIyMTI1
MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RTRDNEM2MUEyNzQ1MkE3OTAwQTA0MEU3IC8qIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlENjE5QTMwODE0NEUwMEJFMDA0QkMzMDIgLyogQ2hpbGRMaXN0TXV0
YXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMjAwOTc3RDNDMDAwNTgyNkQ5
IC8qIENoaWxkTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RDgyMzUyMEFGOTJBNzkw
MDA0RjA1NyAvKiBDaHJvbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3Rl
ckRhdGEuY3BwCmluZGV4IDJlNjVjNjI0NDk3MzM3ZTZiOTAwYWUzOTAwYzFhMTI2Yzk3ZDZjODgu
Ljg5NzdlMjQ3ZjJiYWZlM2JmMjVmOTJiYTkzMjQ5OTllZGI5NDIzY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJDaGFyYWN0
ZXJEYXRhLmgiCiAKICNpbmNsdWRlICJBdHRyLmgiCisjaW5jbHVkZSAiQ2hpbGRDaGFuZ2VJbnZh
bGlkYXRpb24uaCIKICNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCkBAIC03Myw2ICs3NCwxNiBA
QCBFeGNlcHRpb25PcjxTdHJpbmc+IENoYXJhY3RlckRhdGE6OnN1YnN0cmluZ0RhdGEodW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudAogICAgIHJldHVybiBtX2RhdGEuc3Vic3RyaW5nKG9m
ZnNldCwgY291bnQpOwogfQogCitzdGF0aWMgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgbWFr
ZUNoaWxkQ2hhbmdlKENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEsIENvbnRhaW5lck5vZGU6
OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNlKQoreworICAgIHJldHVybiB7CisgICAgICAgIENv
bnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdlZCwKKyAgICAgICAgRWxl
bWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoYXJhY3RlckRhdGEpLAorICAgICAgICBF
bGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGFyYWN0ZXJEYXRhKSwKKyAgICAgICAgc291
cmNlCisgICAgfTsKK30KKwogdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0
YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGhM
aW1pdCkKIHsKICAgICB1bnNpZ25lZCBvbGRMZW5ndGggPSBtX2RhdGEubGVuZ3RoKCk7CkBAIC05
NSw2ICsxMDYsMTEgQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YShj
b25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIGlmICghY2hhcmFjdGVy
TGVuZ3RoTGltaXQpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgYXV0byBjaGlsZENoYW5nZSA9
IG1ha2VDaGlsZENoYW5nZSgqdGhpcywgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJj
ZTo6UGFyc2VyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRh
dGlvbj4gc3R5bGVJbnZhbGlkYXRpb247CisgICAgaWYgKGF1dG8qIHBhcmVudCA9IHBhcmVudE5v
ZGUoKSkKKyAgICAgICAgc3R5bGVJbnZhbGlkYXRpb24uZW1wbGFjZSgqcGFyZW50LCBjaGlsZENo
YW5nZSk7CisKICAgICBTdHJpbmcgb2xkRGF0YSA9IG1fZGF0YTsKICAgICBpZiAoc3RyaW5nLmlz
OEJpdCgpKQogICAgICAgICBtX2RhdGEuYXBwZW5kKHN0cmluZy5jaGFyYWN0ZXJzOCgpICsgb2Zm
c2V0LCBjaGFyYWN0ZXJMZW5ndGhMaW1pdCk7CkBAIC0xMDUsNyArMTIxLDcgQEAgdW5zaWduZWQg
Q2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5z
aWduZWQgb2Zmc2V0LAogICAgIGlmIChpczxUZXh0PigqdGhpcykpCiAgICAgICAgIGRvd25jYXN0
PFRleHQ+KCp0aGlzKS51cGRhdGVSZW5kZXJlckFmdGVyQ29udGVudENoYW5nZShvbGRMZW5ndGgs
IDApOwogCi0gICAgbm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoQ29udGFpbmVyTm9kZTo6Q2hpbGRD
aGFuZ2U6OlNvdXJjZTo6UGFyc2VyKTsKKyAgICBub3RpZnlQYXJlbnRBZnRlckNoYW5nZShjaGls
ZENoYW5nZSk7CiAKICAgICBhdXRvIG11dGF0aW9uUmVjaXBpZW50cyA9IE11dGF0aW9uT2JzZXJ2
ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JDaGFyYWN0ZXJEYXRhTXV0YXRpb24oKnRoaXMpOwog
ICAgIGlmIChVTkxJS0VMWShtdXRhdGlvblJlY2lwaWVudHMpKQpAQCAtMTczLDYgKzE4OSwxMiBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBDaGFyYWN0ZXJEYXRhOjpzZXROb2RlVmFsdWUoY29uc3QgU3Ry
aW5nJiBub2RlVmFsdWUpCiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0YUFuZFVwZGF0ZShj
b25zdCBTdHJpbmcmIG5ld0RhdGEsIHVuc2lnbmVkIG9mZnNldE9mUmVwbGFjZWREYXRhLCB1bnNp
Z25lZCBvbGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCwgVXBkYXRlTGl2ZVJhbmdlcyBzaG91
bGRVcGRhdGVMaXZlUmFuZ2VzKQogeworICAgIGF1dG8gY2hpbGRDaGFuZ2UgPSBtYWtlQ2hpbGRD
aGFuZ2UoKnRoaXMsIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSk7CisK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbj4gc3R5bGVJ
bnZhbGlkYXRpb247CisgICAgaWYgKGF1dG8qIHBhcmVudCA9IHBhcmVudE5vZGUoKSkKKyAgICAg
ICAgc3R5bGVJbnZhbGlkYXRpb24uZW1wbGFjZSgqcGFyZW50LCBjaGlsZENoYW5nZSk7CisKICAg
ICBTdHJpbmcgb2xkRGF0YSA9IG1fZGF0YTsKICAgICBtX2RhdGEgPSBuZXdEYXRhOwogCkBAIC0x
OTEsMjYgKzIxMywxOSBAQCB2b2lkIENoYXJhY3RlckRhdGE6OnNldERhdGFBbmRVcGRhdGUoY29u
c3QgU3RyaW5nJiBuZXdEYXRhLCB1bnNpZ25lZCBvZmZzZXRPZlJlcAogICAgIGlmIChkb2N1bWVu
dCgpLmZyYW1lKCkpCiAgICAgICAgIGRvY3VtZW50KCkuZnJhbWUoKS0+c2VsZWN0aW9uKCkudGV4
dFdhc1JlcGxhY2VkKHRoaXMsIG9mZnNldE9mUmVwbGFjZWREYXRhLCBvbGRMZW5ndGgsIG5ld0xl
bmd0aCk7CiAKLSAgICBub3RpZnlQYXJlbnRBZnRlckNoYW5nZShDb250YWluZXJOb2RlOjpDaGls
ZENoYW5nZTo6U291cmNlOjpBUEkpOworICAgIG5vdGlmeVBhcmVudEFmdGVyQ2hhbmdlKGNoaWxk
Q2hhbmdlKTsKIAogICAgIGRpc3BhdGNoTW9kaWZpZWRFdmVudChvbGREYXRhKTsKIH0KIAotdm9p
ZCBDaGFyYWN0ZXJEYXRhOjpub3RpZnlQYXJlbnRBZnRlckNoYW5nZShDb250YWluZXJOb2RlOjpD
aGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSkKK3ZvaWQgQ2hhcmFjdGVyRGF0YTo6bm90aWZ5UGFy
ZW50QWZ0ZXJDaGFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UmIGNoaWxkQ2hh
bmdlKQogewogICAgIGRvY3VtZW50KCkuaW5jRE9NVHJlZVZlcnNpb24oKTsKIAogICAgIGlmICgh
cGFyZW50Tm9kZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDb250YWluZXJOb2RlOjpDaGls
ZENoYW5nZSBjaGFuZ2UgPSB7Ci0gICAgICAgIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpU
eXBlOjpUZXh0Q2hhbmdlZCwKLSAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJs
aW5nKCp0aGlzKSwKLSAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoKnRoaXMp
LAotICAgICAgICBzb3VyY2UKLSAgICB9OwotCi0gICAgcGFyZW50Tm9kZSgpLT5jaGlsZHJlbkNo
YW5nZWQoY2hhbmdlKTsKKyAgICBwYXJlbnROb2RlKCktPmNoaWxkcmVuQ2hhbmdlZChjaGlsZENo
YW5nZSk7CiB9CiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6ZGlzcGF0Y2hNb2RpZmllZEV2ZW50KGNv
bnN0IFN0cmluZyYgb2xkRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFy
YWN0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCmluZGV4IGM1
OTQ3MzViZWNiMDlhMzZlNjU0MjlmMjI5NjZjZmExMzMwZjkzODEuLjM2YTQ5MjU0MDdlOTEzY2Nj
YTczZTkwZGUwMzJhYjVmYjg3NzRhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGFyYWN0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaApA
QCAtNjUsNyArNjUsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFN0cmluZyBub2RlVmFs
dWUoKSBjb25zdCBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXROb2RlVmFsdWUoY29u
c3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlQYXJlbnRBZnRlckNoYW5nZShDb250
YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlKTsKKyAgICB2b2lkIG5vdGlmeVBhcmVudEFm
dGVyQ2hhbmdlKGNvbnN0IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlJik7CiAKICAgICBTdHJp
bmcgbV9kYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCA2ZDhm
ZDFmZDU3NzA5MjBiODEyMzFkMzE1NmZlNTNiODg5NGM4OTgzLi5kN2Y0ZTllOTNiMDAxMzFhNjg2
MTFkZjE3ZjcwMjc0ZDhmZDZiMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVk
ZSAiQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2hpbGRDaGFuZ2VJbnZh
bGlkYXRpb24uaCIKICNpbmNsdWRlICJDaGlsZExpc3RNdXRhdGlvblNjb3BlLmgiCiAjaW5jbHVk
ZSAiQ2xhc3NDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKQEAgLTExMSwyOSAr
MTEyLDUyIEBAIEFMV0FZU19JTkxJTkUgTm9kZVZlY3RvciBDb250YWluZXJOb2RlOjpyZW1vdmVB
bGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpCiAKICAgICBkaXNjb25uZWN0U3ViZnJh
bWVzSWZOZWVkZWQoKnRoaXMsIERlc2NlbmRhbnRzT25seSk7CiAKKyAgICBDb250YWluZXJOb2Rl
OjpDaGlsZENoYW5nZSBjaGlsZENoYW5nZSB7IENoaWxkQ2hhbmdlOjpUeXBlOjpBbGxDaGlsZHJl
blJlbW92ZWQsIG51bGxwdHIsIG51bGxwdHIsIHNvdXJjZSB9OworCiAgICAgV2lkZ2V0SGllcmFy
Y2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlczsK
ICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2Vk
U2NvcGU7CisgICAgeworICAgICAgICBTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24gc3R5
bGVJbnZhbGlkYXRpb24oKnRoaXMsIGNoaWxkQ2hhbmdlKTsKIAotICAgIGlmIChVTkxJS0VMWShp
c1NoYWRvd1Jvb3QoKSB8fCBpc0luU2hhZG93VHJlZSgpKSkKLSAgICAgICAgY29udGFpbmluZ1No
YWRvd1Jvb3QoKS0+d2lsbFJlbW92ZUFsbENoaWxkcmVuKCp0aGlzKTsKKyAgICAgICAgaWYgKFVO
TElLRUxZKGlzU2hhZG93Um9vdCgpIHx8IGlzSW5TaGFkb3dUcmVlKCkpKQorICAgICAgICAgICAg
Y29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+d2lsbFJlbW92ZUFsbENoaWxkcmVuKCp0aGlzKTsKIAot
ICAgIGRvY3VtZW50KCkubm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZCgqdGhpcyk7CisgICAgICAg
IGRvY3VtZW50KCkubm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZCgqdGhpcyk7CiAKLSAgICB3aGls
ZSAoUmVmUHRyPE5vZGU+IGNoaWxkID0gbV9maXJzdENoaWxkKSB7Ci0gICAgICAgIHJlbW92ZUJl
dHdlZW4obnVsbHB0ciwgY2hpbGQtPm5leHRTaWJsaW5nKCksICpjaGlsZCk7Ci0gICAgICAgIGF1
dG8gc3VidHJlZU9ic2VydmFiaWxpdHkgPSBub3RpZnlDaGlsZE5vZGVSZW1vdmVkKCp0aGlzLCAq
Y2hpbGQpOwotICAgICAgICBpZiAoc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSAm
JiBzdWJ0cmVlT2JzZXJ2YWJpbGl0eSA9PSBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHk6Ok1h
eWJlT2JzZXJ2YWJsZUJ5UmVmUHRyKQotICAgICAgICAgICAgd2lsbENyZWF0ZVBvc3NpYmx5T3Jw
aGFuZWRUcmVlQnlSZW1vdmFsKGNoaWxkLmdldCgpKTsKKyAgICAgICAgd2hpbGUgKFJlZlB0cjxO
b2RlPiBjaGlsZCA9IG1fZmlyc3RDaGlsZCkgeworICAgICAgICAgICAgcmVtb3ZlQmV0d2Vlbihu
dWxscHRyLCBjaGlsZC0+bmV4dFNpYmxpbmcoKSwgKmNoaWxkKTsKKyAgICAgICAgICAgIGF1dG8g
c3VidHJlZU9ic2VydmFiaWxpdHkgPSBub3RpZnlDaGlsZE5vZGVSZW1vdmVkKCp0aGlzLCAqY2hp
bGQpOworICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpBUEkg
JiYgc3VidHJlZU9ic2VydmFiaWxpdHkgPT0gUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5OjpN
YXliZU9ic2VydmFibGVCeVJlZlB0cikKKyAgICAgICAgICAgICAgICB3aWxsQ3JlYXRlUG9zc2li
bHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoY2hpbGQuZ2V0KCkpOworICAgICAgICB9CiAgICAgfQog
CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3VtZW50KCkuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkuaXNPcnBoYW4oKSk7CiAKICAgICBpZiAoZGVmZXJDaGlsZHJlbkNo
YW5nZWQgPT0gRGVmZXJDaGlsZHJlbkNoYW5nZWQ6Ok5vKQotICAgICAgICBjaGlsZHJlbkNoYW5n
ZWQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgeyBDaGlsZENoYW5nZTo6VHlwZTo6QWxsQ2hp
bGRyZW5SZW1vdmVkLCBudWxscHRyLCBudWxscHRyLCBzb3VyY2UgfSk7CisgICAgICAgIGNoaWxk
cmVuQ2hhbmdlZChjaGlsZENoYW5nZSk7CiAKICAgICByZXR1cm4gY2hpbGRyZW47CiB9CiAKK3N0
YXRpYyBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSBtYWtlQ2hpbGRDaGFuZ2VGb3JSZW1vdmFs
KE5vZGUmIGNoaWxkVG9SZW1vdmUsIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2Ug
c291cmNlKQoreworICAgIGF1dG8gY2hhbmdlVHlwZSA9IFsmXSB7CisgICAgICAgIGlmIChpczxF
bGVtZW50PihjaGlsZFRvUmVtb3ZlKSkKKyAgICAgICAgICAgIHJldHVybiBDb250YWluZXJOb2Rl
OjpDaGlsZENoYW5nZTo6VHlwZTo6RWxlbWVudFJlbW92ZWQ7CisgICAgICAgIGlmIChpczxUZXh0
PihjaGlsZFRvUmVtb3ZlKSkKKyAgICAgICAgICAgIHJldHVybiBDb250YWluZXJOb2RlOjpDaGls
ZENoYW5nZTo6VHlwZTo6VGV4dFJlbW92ZWQ7CisgICAgICAgIHJldHVybiBDb250YWluZXJOb2Rl
OjpDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29udGVudHNDaGlsZFJlbW92ZWQ7CisgICAgfSgpOwor
CisgICAgcmV0dXJuIHsKKyAgICAgICAgY2hhbmdlVHlwZSwKKyAgICAgICAgRWxlbWVudFRyYXZl
cnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkVG9SZW1vdmUpLAorICAgICAgICBFbGVtZW50VHJh
dmVyc2FsOjpuZXh0U2libGluZyhjaGlsZFRvUmVtb3ZlKSwKKyAgICAgICAgc291cmNlCisgICAg
fTsKK30KKwogQUxXQVlTX0lOTElORSBib29sIENvbnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRo
U2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9SZW1vdmUsIENoaWxkQ2hhbmdlOjpTb3VyY2Ug
c291cmNlKQogewogICAgIFJlZjxOb2RlPiBwcm90ZWN0ZWRDaGlsZFRvUmVtb3ZlKGNoaWxkVG9S
ZW1vdmUpOwpAQCAtMTYyLDExICsxODYsMTMgQEAgQUxXQVlTX0lOTElORSBib29sIENvbnRhaW5l
ck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9SZW0KICAg
ICBpZiAoY2hpbGRUb1JlbW92ZS5wYXJlbnROb2RlKCkgIT0gdGhpcykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgQ2hpbGRDaGFuZ2UgY2hhbmdlOworICAgIGF1dG8gY2hpbGRDaGFuZ2Ug
PSBtYWtlQ2hpbGRDaGFuZ2VGb3JSZW1vdmFsKGNoaWxkVG9SZW1vdmUsIHNvdXJjZSk7CisKICAg
ICBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHkgc3VidHJlZU9ic2VydmFiaWxpdHk7CiAgICAg
ewogICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRX
aWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6Oklu
TWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CisgICAgICAgIFN0eWxlOjpDaGlsZENo
YW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgY2hpbGRDaGFuZ2UpOwog
CiAgICAgICAgIGlmIChVTkxJS0VMWShpc1NoYWRvd1Jvb3QoKSB8fCBpc0luU2hhZG93VHJlZSgp
KSkKICAgICAgICAgICAgIGNvbnRhaW5pbmdTaGFkb3dSb290KCktPnJlc29sdmVTbG90c0JlZm9y
ZU5vZGVJbnNlcnRpb25PclJlbW92YWwoKTsKQEAgLTE3OCwxNyArMjA0LDkgQEAgQUxXQVlTX0lO
TElORSBib29sIENvbnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5v
ZGUmIGNoaWxkVG9SZW0KIAogICAgICAgICBSZWZQdHI8Tm9kZT4gcHJldmlvdXNTaWJsaW5nID0g
Y2hpbGRUb1JlbW92ZS5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgUmVmUHRyPE5vZGU+IG5l
eHRTaWJsaW5nID0gY2hpbGRUb1JlbW92ZS5uZXh0U2libGluZygpOworCiAgICAgICAgIHJlbW92
ZUJldHdlZW4ocHJldmlvdXNTaWJsaW5nLmdldCgpLCBuZXh0U2libGluZy5nZXQoKSwgY2hpbGRU
b1JlbW92ZSk7CiAgICAgICAgIHN1YnRyZWVPYnNlcnZhYmlsaXR5ID0gbm90aWZ5Q2hpbGROb2Rl
UmVtb3ZlZCgqdGhpcywgY2hpbGRUb1JlbW92ZSk7Ci0KLSAgICAgICAgY2hhbmdlLnR5cGUgPSBp
czxFbGVtZW50PihjaGlsZFRvUmVtb3ZlKSA/Ci0gICAgICAgICAgICBDaGlsZENoYW5nZTo6VHlw
ZTo6RWxlbWVudFJlbW92ZWQgOgotICAgICAgICAgICAgKGlzPFRleHQ+KGNoaWxkVG9SZW1vdmUp
ID8KLSAgICAgICAgICAgICAgICBDaGlsZENoYW5nZTo6VHlwZTo6VGV4dFJlbW92ZWQgOgotICAg
ICAgICAgICAgICAgIENoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0NoaWxkUmVtb3ZlZCk7
Ci0gICAgICAgIGNoYW5nZS5wcmV2aW91c1NpYmxpbmdFbGVtZW50ID0gKCFwcmV2aW91c1NpYmxp
bmcgfHwgaXM8RWxlbWVudD4oKnByZXZpb3VzU2libGluZykpID8gZG93bmNhc3Q8RWxlbWVudD4o
cHJldmlvdXNTaWJsaW5nLmdldCgpKSA6IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGlu
ZygqcHJldmlvdXNTaWJsaW5nKTsKLSAgICAgICAgY2hhbmdlLm5leHRTaWJsaW5nRWxlbWVudCA9
ICghbmV4dFNpYmxpbmcgfHwgaXM8RWxlbWVudD4oKm5leHRTaWJsaW5nKSkgPyBkb3duY2FzdDxF
bGVtZW50PihuZXh0U2libGluZy5nZXQoKSkgOiBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGlu
ZygqbmV4dFNpYmxpbmcpOwotICAgICAgICBjaGFuZ2Uuc291cmNlID0gc291cmNlOwogICAgIH0K
IAogICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJICYmIHN1YnRyZWVP
YnNlcnZhYmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eTo6TWF5YmVPYnNlcnZh
YmxlQnlSZWZQdHIpCkBAIC0xOTcsMjEgKzIxNSw0NSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgQ29u
dGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24oTm9kZSYgY2hpbGRUb1Jl
bQogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFkb2N1bWVudCgpLnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpLmlzT3JwaGFuKCkpOwogCiAgICAgLy8gRklYTUU6IE1vdmUgY2hp
bGRyZW5DaGFuZ2VkIGludG8gU2NyaXB0RGlzYWxsb3dlZFNjb3BlIGJsb2NrLgotICAgIGNoaWxk
cmVuQ2hhbmdlZChjaGFuZ2UpOworICAgIGNoaWxkcmVuQ2hhbmdlZChjaGlsZENoYW5nZSk7CiAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogZW51bSBjbGFzcyBSZXBsYWNlZEFsbENoaWxkcmVuIHsg
Tm8sIFllcyB9OwogCitzdGF0aWMgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgbWFrZUNoaWxk
Q2hhbmdlRm9ySW5zZXJ0aW9uKENvbnRhaW5lck5vZGUmIGNvbnRhaW5lck5vZGUsIE5vZGUmIGNo
aWxkLCBOb2RlKiBiZWZvcmVDaGlsZCwgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJj
ZSBzb3VyY2UsIFJlcGxhY2VkQWxsQ2hpbGRyZW4gcmVwbGFjZWRBbGxDaGlsZHJlbikKK3sKKyAg
ICBpZiAocmVwbGFjZWRBbGxDaGlsZHJlbiA9PSBSZXBsYWNlZEFsbENoaWxkcmVuOjpZZXMpCisg
ICAgICAgIHJldHVybiB7IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpBbGxDaGls
ZHJlblJlcGxhY2VkLCBudWxscHRyLCBudWxscHRyLCBzb3VyY2UgfTsKKworICAgIGF1dG8gY2hh
bmdlVHlwZSA9IFsmXSB7CisgICAgICAgIGlmIChpczxFbGVtZW50PihjaGlsZCkpCisgICAgICAg
ICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRJbnNl
cnRlZDsKKyAgICAgICAgaWYgKGlzPFRleHQ+KGNoaWxkKSkKKyAgICAgICAgICAgIHJldHVybiBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6VGV4dEluc2VydGVkOworICAgICAgICBy
ZXR1cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRJ
bnNlcnRlZDsKKyAgICB9KCk7CisKKyAgICByZXR1cm4geworICAgICAgICBjaGFuZ2VUeXBlLAor
ICAgICAgICBiZWZvcmVDaGlsZCA/IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZygq
YmVmb3JlQ2hpbGQpIDogRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKGNvbnRhaW5lck5vZGUp
LAorICAgICAgICAhYmVmb3JlQ2hpbGQgfHwgaXM8RWxlbWVudD4oKmJlZm9yZUNoaWxkKSA/IGRv
d25jYXN0PEVsZW1lbnQ+KGJlZm9yZUNoaWxkKSA6IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJs
aW5nKCpiZWZvcmVDaGlsZCksCisgICAgICAgIHNvdXJjZQorICAgIH07Cit9CisKIHRlbXBsYXRl
PHR5cGVuYW1lIERPTUluc2VydGlvbldvcms+Ci1zdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGV4
ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbihDb250YWluZXJOb2RlJiBjb250
YWluZXJOb2RlLCBOb2RlJiBjaGlsZCwKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZXhlY3V0
ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKENvbnRhaW5lck5vZGUmIGNvbnRhaW5l
ck5vZGUsIE5vZGUmIGNoaWxkLCBOb2RlKiBiZWZvcmVDaGlsZCwKICAgICBDb250YWluZXJOb2Rl
OjpDaGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSwgUmVwbGFjZWRBbGxDaGlsZHJlbiByZXBsYWNl
ZEFsbENoaWxkcmVuLCBET01JbnNlcnRpb25Xb3JrIGRvTm9kZUluc2VydGlvbikKIHsKKyAgICBh
dXRvIGNoaWxkQ2hhbmdlID0gbWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9uKGNvbnRhaW5lck5v
ZGUsIGNoaWxkLCBiZWZvcmVDaGlsZCwgc291cmNlLCByZXBsYWNlZEFsbENoaWxkcmVuKTsKKwog
ICAgIE5vZGVWZWN0b3IgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHM7CiAgICAgewog
ICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRn
ZXRIaWVyYXJjaHlVcGRhdGVzOwogICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFp
blRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CisgICAgICAgIFN0eWxlOjpDaGlsZENoYW5n
ZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbihjb250YWluZXJOb2RlLCBjaGlsZENoYW5n
ZSk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGNvbnRhaW5lck5vZGUuaXNTaGFkb3dSb290KCkg
fHwgY29udGFpbmVyTm9kZS5pc0luU2hhZG93VHJlZSgpKSkKICAgICAgICAgICAgIGNvbnRhaW5l
ck5vZGUuY29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+cmVzb2x2ZVNsb3RzQmVmb3JlTm9kZUluc2Vy
dGlvbk9yUmVtb3ZhbCgpOwpAQCAtMjIyLDIwICsyNjQsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElO
RSB2b2lkIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbihDb250YWluZXJO
b2RlJgogICAgIH0KIAogICAgIC8vIEZJWE1FOiBNb3ZlIGNoaWxkcmVuQ2hhbmdlZCBpbnRvIFNj
cmlwdERpc2FsbG93ZWRTY29wZSBibG9jay4KLSAgICBpZiAocmVwbGFjZWRBbGxDaGlsZHJlbiA9
PSBSZXBsYWNlZEFsbENoaWxkcmVuOjpZZXMpCi0gICAgICAgIGNvbnRhaW5lck5vZGUuY2hpbGRy
ZW5DaGFuZ2VkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlIHsgQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2U6OlR5cGU6OkFsbENoaWxkcmVuUmVwbGFjZWQsIG51bGxwdHIsIG51bGxwdHIsIHNv
dXJjZSB9KTsKLSAgICBlbHNlIHsKLSAgICAgICAgY29udGFpbmVyTm9kZS5jaGlsZHJlbkNoYW5n
ZWQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgewotICAgICAgICAgICAgY2hpbGQuaXNFbGVt
ZW50Tm9kZSgpID8KLSAgICAgICAgICAgICAgICBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6
VHlwZTo6RWxlbWVudEluc2VydGVkIDoKLSAgICAgICAgICAgICAgICAoY2hpbGQuaXNUZXh0Tm9k
ZSgpID8KLSAgICAgICAgICAgICAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5
cGU6OlRleHRJbnNlcnRlZCA6Ci0gICAgICAgICAgICAgICAgICAgIENvbnRhaW5lck5vZGU6OkNo
aWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0NoaWxkSW5zZXJ0ZWQpLAotICAgICAgICAgICAg
RWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkKSwKLSAgICAgICAgICAgIEVs
ZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGNoaWxkKSwKLSAgICAgICAgICAgIHNvdXJjZQot
ICAgICAgICB9KTsKLSAgICB9CisgICAgY29udGFpbmVyTm9kZS5jaGlsZHJlbkNoYW5nZWQoY2hp
bGRDaGFuZ2UpOwogCiAgICAgQVNTRVJUKFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhy
ZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKGNoaWxkKSk7CiAgICAgZm9yIChh
dXRvJiB0YXJnZXQgOiBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cykKQEAgLTQ0OCw3
ICs0NzcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUo
Tm9kZSYgbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkKQogICAgICAgICBpZiAoY2hpbGQtPnBhcmVu
dE5vZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGV4ZWN1dGVOb2RlSW5zZXJ0
aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQuZ2V0KCksIENoaWxkQ2hhbmdlOjpT
b3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CisgICAgICAgIGV4ZWN1
dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQuZ2V0KCksIG5l
eHQucHRyKCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6
Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkodHJl
ZVNjb3BlKCkpOwogICAgICAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5leHQsIGNoaWxkKTsK
ICAgICAgICAgfSk7CkBAIC01MDcsNyArNTM2LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpwYXJz
ZXJJbnNlcnRCZWZvcmUoTm9kZSYgbmV3Q2hpbGQsIE5vZGUmIG5leHRDaGlsZCkKICAgICBpZiAo
bmV4dENoaWxkLnByZXZpb3VzU2libGluZygpID09ICZuZXdDaGlsZCB8fCAmbmV4dENoaWxkID09
ICZuZXdDaGlsZCkgLy8gbm90aGluZyB0byBkbwogICAgICAgICByZXR1cm47CiAKLSAgICBleGVj
dXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIG5ld0NoaWxkLCBDaGls
ZENoYW5nZTo6U291cmNlOjpQYXJzZXIsIFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vLCBbJl0gewor
ICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgbmV3Q2hp
bGQsICZuZXh0Q2hpbGQsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgUmVwbGFjZWRBbGxD
aGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgIGlmICgmZG9jdW1lbnQoKSAhPSAmbmV3Q2hpbGQu
ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50KCkuYWRvcHROb2RlKG5ld0NoaWxkKTsK
IApAQCAtNTgxLDcgKzYxMCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OnJl
cGxhY2VDaGlsZChOb2RlJiBuZXdDaGlsZCwgTm9kZSYgb2xkQ2hpbGQpCiAgICAgICAgIGlmIChj
aGlsZC0+cGFyZW50Tm9kZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgZXhlY3V0
ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBjaGlsZC5nZXQoKSwgQ2hp
bGRDaGFuZ2U6OlNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpObywgWyZdIHsKKyAg
ICAgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBjaGls
ZC5nZXQoKSwgcmVmQ2hpbGQuZ2V0KCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFj
ZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0VHJlZVNjb3Bl
UmVjdXJzaXZlbHkodHJlZVNjb3BlKCkpOwogICAgICAgICAgICAgaWYgKHJlZkNoaWxkKQogICAg
ICAgICAgICAgICAgIGluc2VydEJlZm9yZUNvbW1vbigqcmVmQ2hpbGQsIGNoaWxkLmdldCgpKTsK
QEAgLTY4Miw3ICs3MTEsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlcGxhY2VBbGwoTm9kZSog
bm9kZSkKICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKCp0aGlzKTsKICAgICBy
ZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6
QVBJLCBEZWZlckNoaWxkcmVuQ2hhbmdlZDo6WWVzKTsKIAotICAgIGV4ZWN1dGVOb2RlSW5zZXJ0
aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgKm5vZGUsIENoaWxkQ2hhbmdlOjpTb3VyY2U6
OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6WWVzLCBbJl0geworICAgIGV4ZWN1dGVOb2RlSW5z
ZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgKm5vZGUsIG51bGxwdHIsIENoaWxkQ2hh
bmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6WWVzLCBbJl0gewogICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2RlKGRvY3VtZW50KCks
ICp0aGlzKTsKICAgICAgICAgbm9kZS0+c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkodHJlZVNjb3Bl
KCkpOwogICAgICAgICBhcHBlbmRDaGlsZENvbW1vbigqbm9kZSk7CkBAIC03NjMsNyArNzkyLDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGRXaXRob3V0UHJl
SW5zZXJ0aW9uVmFsaWRpdHlDaGVjayhOb2QKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
IC8vIEFwcGVuZCBjaGlsZCB0byB0aGUgZW5kIG9mIHRoZSBsaXN0Ci0gICAgICAgIGV4ZWN1dGVO
b2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQuZ2V0KCksIENoaWxk
Q2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CisgICAg
ICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQu
Z2V0KCksIG51bGxwdHIsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGls
ZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0VHJlZVNjb3BlUmVjdXJzaXZl
bHkodHJlZVNjb3BlKCkpOwogICAgICAgICAgICAgYXBwZW5kQ2hpbGRDb21tb24oY2hpbGQpOwog
ICAgICAgICB9KTsKQEAgLTc3OSw3ICs4MDgsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnBhcnNl
ckFwcGVuZENoaWxkKE5vZGUmIG5ld0NoaWxkKQogICAgIEFTU0VSVCghbmV3Q2hpbGQuaXNEb2N1
bWVudEZyYWdtZW50KCkpOwogICAgIEFTU0VSVCghaGFzVGFnTmFtZShIVE1MTmFtZXM6OnRlbXBs
YXRlVGFnKSk7CiAKLSAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24o
KnRoaXMsIG5ld0NoaWxkLCBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsIFJlcGxhY2VkQWxs
Q2hpbGRyZW46Ok5vLCBbJl0geworICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFz
c2VydGlvbigqdGhpcywgbmV3Q2hpbGQsIG51bGxwdHIsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBh
cnNlciwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgIGlmICgmZG9jdW1l
bnQoKSAhPSAmbmV3Q2hpbGQuZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50KCkuYWRv
cHROb2RlKG5ld0NoaWxkKTsKIApAQCAtODEyLDYgKzg0MSw4IEBAIHN0YXRpYyBib29sIGFmZmVj
dHNFbGVtZW50cyhjb25zdCBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSYgY2hhbmdlKQogICAg
IGNhc2UgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRJ
bnNlcnRlZDoKICAgICBjYXNlIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpOb25D
b250ZW50c0NoaWxkUmVtb3ZlZDoKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgQ29u
dGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OkZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuOgor
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKaW5kZXggM2ZiMTljNTk2NWY0
NWU2ZGI2N2I5MTYwYmY0ZDkwNzFmNThlMTc5OC4uZTQ3NDY4MzkxOGNjMDUxMDljYjM3ZTA2NWJl
ZDYxNDBjZGEwN2Q5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCkBAIC03NCw3ICs3
NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb25lQ2hpbGROb2RlcyhDb250YWluZXJOb2RlJiBj
bG9uZSk7CiAKICAgICBzdHJ1Y3QgQ2hpbGRDaGFuZ2UgewotICAgICAgICBlbnVtIGNsYXNzIFR5
cGUgOiB1aW50OF90IHsgRWxlbWVudEluc2VydGVkLCBFbGVtZW50UmVtb3ZlZCwgVGV4dEluc2Vy
dGVkLCBUZXh0UmVtb3ZlZCwgVGV4dENoYW5nZWQsIEFsbENoaWxkcmVuUmVtb3ZlZCwgTm9uQ29u
dGVudHNDaGlsZFJlbW92ZWQsIE5vbkNvbnRlbnRzQ2hpbGRJbnNlcnRlZCwgQWxsQ2hpbGRyZW5S
ZXBsYWNlZCB9OworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgRWxlbWVudElu
c2VydGVkLCBFbGVtZW50UmVtb3ZlZCwgVGV4dEluc2VydGVkLCBUZXh0UmVtb3ZlZCwgVGV4dENo
YW5nZWQsIEFsbENoaWxkcmVuUmVtb3ZlZCwgTm9uQ29udGVudHNDaGlsZFJlbW92ZWQsIE5vbkNv
bnRlbnRzQ2hpbGRJbnNlcnRlZCwgQWxsQ2hpbGRyZW5SZXBsYWNlZCwgRmluaXNoZWRQYXJzaW5n
Q2hpbGRyZW4gfTsKICAgICAgICAgZW51bSBjbGFzcyBTb3VyY2UgOiBib29sIHsgUGFyc2VyLCBB
UEkgfTsKIAogICAgICAgICBDaGlsZENoYW5nZTo6VHlwZSB0eXBlOwpAQCAtOTYsNiArOTYsOCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpBbGxDaGlsZHJl
blJlbW92ZWQ6CiAgICAgICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50
c0NoaWxkUmVtb3ZlZDoKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbjoKKyAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CmluZGV4IDVkN2IxYmUyNjE2NDBjZjE0MTBlY2EzZWM5MTczYTQwODlhZmQxOGQuLmMxNmU1YTcy
ZGM0ZmNiNzk4MjFhMzFmYzlhNTQ3NDk0YzgxNDUwMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBdHRyLmgiCiAjaW5jbHVkZSAiQXR0cmlidXRl
Q2hhbmdlSW52YWxpZGF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAi
Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIgpA
QCAtMjAzOCw3ICsyMDM5LDcgQEAgU3R5bGU6OkVsZW1lbnRTdHlsZSBFbGVtZW50OjpyZXNvbHZl
U3R5bGUoY29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0JiByZXNvbHUKICAgICByZXR1cm4g
c3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqdGhpcywgcmVzb2x1dGlvbkNvbnRleHQp
OwogfQogCi1zdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKEVsZW1l
bnQqIHNpYmxpbmcpCit2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMoRWxlbWVu
dCogc2libGluZykKIHsKICAgICBmb3IgKDsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5l
eHRFbGVtZW50U2libGluZygpKSB7CiAgICAgICAgIGlmIChzaWJsaW5nLT5zdHlsZUlzQWZmZWN0
ZWRCeVByZXZpb3VzU2libGluZygpKQpAQCAtMjY0MiwxMjQgKzI2NDMsMTEgQEAgYm9vbCBFbGVt
ZW50OjpjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlIHR5cGUpIGNvbnN0CiAgICAgfQogICAgIHJl
dHVybiBmYWxzZTsKIH0KLQotc3RhdGljIHZvaWQgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKEVs
ZW1lbnQmIGVsZW1lbnQpCi17Ci0gICAgaWYgKGVsZW1lbnQuc3R5bGVBZmZlY3RlZEJ5RW1wdHko
KSkgewotICAgICAgICBhdXRvKiBzdHlsZSA9IGVsZW1lbnQucmVuZGVyU3R5bGUoKTsKLSAgICAg
ICAgaWYgKCFzdHlsZSB8fCAoIXN0eWxlLT5lbXB0eVN0YXRlKCkgfHwgZWxlbWVudC5oYXNDaGls
ZE5vZGVzKCkpKQotICAgICAgICAgICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVl
KCk7Ci0gICAgfQotfQotCi0KLXN0YXRpYyB2b2lkIGludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxlbWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQot
ewotICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZCA9IHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlG
b3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVkID0g
cGFyZW50LmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLQot
ICAgIGlmICghY2hpbGRyZW5BZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNBZmZlY3RlZCkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudEFmdGVyQ2hhbmdl
OyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAg
ICAgICAgaWYgKGNoaWxkcmVuQWZmZWN0ZWQpCi0gICAgICAgICAgICBzaWJsaW5nLT5pbnZhbGlk
YXRlU3R5bGVJbnRlcm5hbCgpOwotICAgICAgICBpZiAoZGVzY2VuZGFudHNBZmZlY3RlZCkgewot
ICAgICAgICAgICAgZm9yIChhdXRvKiBzaWJsaW5nQ2hpbGQgPSBzaWJsaW5nLT5maXJzdEVsZW1l
bnRDaGlsZCgpOyBzaWJsaW5nQ2hpbGQ7IHNpYmxpbmdDaGlsZCA9IHNpYmxpbmdDaGlsZC0+bmV4
dEVsZW1lbnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAgc2libGluZ0NoaWxkLT5pbnZhbGlk
YXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3Rh
dGljIHZvaWQgaW52YWxpZGF0ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBh
cmVudCwgRWxlbWVudCogZWxlbWVudEJlZm9yZUNoYW5nZSkKLXsKLSAgICBib29sIGNoaWxkcmVu
QWZmZWN0ZWQgPSBwYXJlbnQuY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMoKTsKLSAgICBib29sIGRlc2NlbmRhbnRzQWZmZWN0ZWQgPSBwYXJlbnQuZGVzY2VuZGFudHNB
ZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLQotICAgIGlmICghY2hpbGRyZW5B
ZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNBZmZlY3RlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Zm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudEJlZm9yZUNoYW5nZTsgc2libGluZzsgc2libGlu
ZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoY2hp
bGRyZW5BZmZlY3RlZCkKLSAgICAgICAgICAgIHNpYmxpbmctPmludmFsaWRhdGVTdHlsZUludGVy
bmFsKCk7Ci0gICAgICAgIGlmIChkZXNjZW5kYW50c0FmZmVjdGVkKSB7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8qIHNpYmxpbmdDaGlsZCA9IHNpYmxpbmctPmZpcnN0RWxlbWVudENoaWxkKCk7IHNp
YmxpbmdDaGlsZDsgc2libGluZ0NoaWxkID0gc2libGluZ0NoaWxkLT5uZXh0RWxlbWVudFNpYmxp
bmcoKSkKLSAgICAgICAgICAgICAgICBzaWJsaW5nQ2hpbGQtPmludmFsaWRhdGVTdHlsZUZvclN1
YnRyZWVJbnRlcm5hbCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1lbnVtIFNpYmxpbmdDaGVj
a1R5cGUgeyBGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbiwgU2libGluZ0VsZW1lbnRSZW1vdmVkLCBP
dGhlciB9OwotCi1zdGF0aWMgdm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoRWxlbWVu
dCYgcGFyZW50LCBTaWJsaW5nQ2hlY2tUeXBlIGNoZWNrVHlwZSwgRWxlbWVudCogZWxlbWVudEJl
Zm9yZUNoYW5nZSwgRWxlbWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQotewotICAgIC8vIDplbXB0
eSBzZWxlY3Rvci4KLSAgICBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UocGFyZW50KTsKLQotICAg
IGlmIChwYXJlbnQuc3R5bGVWYWxpZGl0eSgpID49IFN0eWxlOjpWYWxpZGl0eTo6U3VidHJlZUlu
dmFsaWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIDpmaXJzdC1jaGlsZC4gIEluIHRoZSBw
YXJzZXIgY2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnl0aGluZywgc2lu
Y2Ugd2Ugd2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4KLSAgICAvLyBJbiB0aGUgRE9NIGNhc2Us
IHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgfGFmdGVyQ2hhbmdlfCBpcyBub3QgMC4K
LSAgICAvLyB8YWZ0ZXJDaGFuZ2V8IGlzIDAgaW4gdGhlIHBhcnNlciBjYXNlLCBzbyBpdCB3b3Jr
cyBvdXQgdGhhdCB3ZSdsbCBza2lwIHRoaXMgYmxvY2suCi0gICAgaWYgKHBhcmVudC5jaGlsZHJl
bkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSAmJiBlbGVtZW50QWZ0ZXJDaGFuZ2UpIHsKLSAg
ICAgICAgLy8gRmluZCBvdXIgbmV3IGZpcnN0IGNoaWxkLgotICAgICAgICBSZWZQdHI8RWxlbWVu
dD4gbmV3Rmlyc3RFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZChwYXJlbnQp
OwotICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCBlbGVtZW50IG5vZGUgZm9sbG93aW5nIHxhZnRl
ckNoYW5nZXwKLQotICAgICAgICAvLyBUaGlzIGlzIHRoZSBpbnNlcnQvYXBwZW5kIGNhc2UuCi0g
ICAgICAgIGlmIChuZXdGaXJzdEVsZW1lbnQgIT0gZWxlbWVudEFmdGVyQ2hhbmdlKSB7Ci0gICAg
ICAgICAgICBhdXRvKiBzdHlsZSA9IGVsZW1lbnRBZnRlckNoYW5nZS0+cmVuZGVyU3R5bGUoKTsK
LSAgICAgICAgICAgIGlmICghc3R5bGUgfHwgc3R5bGUtPmZpcnN0Q2hpbGRTdGF0ZSgpKQotICAg
ICAgICAgICAgICAgIGVsZW1lbnRBZnRlckNoYW5nZS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJl
ZUludGVybmFsKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gaGFu
ZGxlIG5vZGUgcmVtb3ZhbC4KLSAgICAgICAgaWYgKGNoZWNrVHlwZSA9PSBTaWJsaW5nRWxlbWVu
dFJlbW92ZWQgJiYgbmV3Rmlyc3RFbGVtZW50ID09IGVsZW1lbnRBZnRlckNoYW5nZSAmJiBuZXdG
aXJzdEVsZW1lbnQpIHsKLSAgICAgICAgICAgIGF1dG8qIHN0eWxlID0gbmV3Rmlyc3RFbGVtZW50
LT5yZW5kZXJTdHlsZSgpOwotICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmZpcnN0
Q2hpbGRTdGF0ZSgpKQotICAgICAgICAgICAgICAgIG5ld0ZpcnN0RWxlbWVudC0+aW52YWxpZGF0
ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyA6
bGFzdC1jaGlsZC4gIEluIHRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2ZSB0
byBjaGVjayBhbnl0aGluZywgc2luY2Ugd2Ugd2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4KLSAg
ICAvLyBJbiB0aGUgRE9NIGNhc2UsIHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgfGFm
dGVyQ2hhbmdlfCBpcyBub3QgMC4KLSAgICBpZiAocGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRCeUxh
c3RDaGlsZFJ1bGVzKCkgJiYgZWxlbWVudEJlZm9yZUNoYW5nZSkgewotICAgICAgICAvLyBGaW5k
IG91ciBuZXcgbGFzdCBjaGlsZC4KLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0xhc3RFbGVt
ZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKHBhcmVudCk7Ci0KLSAgICAgICAgaWYg
KG5ld0xhc3RFbGVtZW50ICE9IGVsZW1lbnRCZWZvcmVDaGFuZ2UpIHsKLSAgICAgICAgICAgIGF1
dG8qIHN0eWxlID0gZWxlbWVudEJlZm9yZUNoYW5nZS0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAg
ICAgIGlmICghc3R5bGUgfHwgc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkpCi0gICAgICAgICAgICAg
ICAgZWxlbWVudEJlZm9yZUNoYW5nZS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFs
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gaGFuZGxlIG5vZGUg
cmVtb3ZhbC4gIFRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSBpcyBzaW1pbGFyIHRvIG5vZGUgcmVt
b3ZhbCBhcyB3ZWxsIGluIHRoYXQgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIGxhc3QgY2hpbGQKLSAg
ICAgICAgLy8gdG8gbWF0Y2ggbm93LgotICAgICAgICBpZiAoKGNoZWNrVHlwZSA9PSBTaWJsaW5n
RWxlbWVudFJlbW92ZWQgfHwgY2hlY2tUeXBlID09IEZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKSAm
JiBuZXdMYXN0RWxlbWVudCA9PSBlbGVtZW50QmVmb3JlQ2hhbmdlICYmIG5ld0xhc3RFbGVtZW50
KSB7Ci0gICAgICAgICAgICBhdXRvKiBzdHlsZSA9IG5ld0xhc3RFbGVtZW50LT5yZW5kZXJTdHls
ZSgpOwotICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkp
Ci0gICAgICAgICAgICAgICAgbmV3TGFzdEVsZW1lbnQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRy
ZWVJbnRlcm5hbCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaW52YWxpZGF0ZUZvclNpYmxp
bmdDb21iaW5hdG9ycyhlbGVtZW50QWZ0ZXJDaGFuZ2UpOwotCi0gICAgaW52YWxpZGF0ZUZvckZv
cndhcmRQb3NpdGlvbmFsUnVsZXMocGFyZW50LCBlbGVtZW50QWZ0ZXJDaGFuZ2UpOwotICAgIGlu
dmFsaWRhdGVGb3JCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhwYXJlbnQsIGVsZW1lbnRCZWZvcmVD
aGFuZ2UpOwotfQotCiB2b2lkIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENo
YW5nZSYgY2hhbmdlKQogewogICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFu
Z2UpOwotICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNl
cikKLSAgICAgICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKCp0aGlzKTsKLSAgICBlbHNlIHsK
LSAgICAgICAgYXV0byBjaGVja1R5cGUgPSBjaGFuZ2UudHlwZSA9PSBDaGlsZENoYW5nZTo6VHlw
ZTo6RWxlbWVudFJlbW92ZWQgPyBTaWJsaW5nRWxlbWVudFJlbW92ZWQgOiBPdGhlcjsKLSAgICAg
ICAgY2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKCp0aGlzLCBjaGVja1R5cGUsIGNoYW5nZS5w
cmV2aW91c1NpYmxpbmdFbGVtZW50LCBjaGFuZ2UubmV4dFNpYmxpbmdFbGVtZW50KTsKLSAgICB9
CiAKLSAgICBpZiAoU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRoaXMtPnNoYWRvd1Jvb3QoKSkg
eworICAgIGlmIChhdXRvKiBzaGFkb3dSb290ID0gdGhpcy0+c2hhZG93Um9vdCgpKSB7CiAgICAg
ICAgIHN3aXRjaCAoY2hhbmdlLnR5cGUpIHsKICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlw
ZTo6RWxlbWVudEluc2VydGVkOgogICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpFbGVt
ZW50UmVtb3ZlZDoKQEAgLTI3NzYsNiArMjY2NCw3IEBAIHZvaWQgRWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29udGVudHNDaGlsZEluc2VydGVkOgog
ICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0NoaWxkUmVtb3ZlZDoK
KyAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6RmluaXNoZWRQYXJzaW5nQ2hpbGRyZW46
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTI4MDIsNyArMjY5MSwx
MyBAQCB2b2lkIEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiB7CiAgICAgQ29udGFp
bmVyTm9kZTo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiAgICAgc2V0SXNQYXJzaW5nQ2hpbGRy
ZW5GaW5pc2hlZCgpOwotICAgIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcygqdGhpcywgRmlu
aXNoZWRQYXJzaW5nQ2hpbGRyZW4sIEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RDaGlsZCgqdGhpcyks
IG51bGxwdHIpOworCisgICAgU3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52
YWxpZGF0aW9uKCp0aGlzLCB7CisgICAgICAgIENoaWxkQ2hhbmdlOjpUeXBlOjpGaW5pc2hlZFBh
cnNpbmdDaGlsZHJlbiwKKyAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKCp0aGlz
KSwKKyAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2Vy
CisgICAgfSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFwcGVuZEF0dHJpYnV0ZXMoU3RyaW5nQnVpbGRl
ciYgYnVpbGRlciwgY29uc3QgRWxlbWVudCYgZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4
IDA0Y2U2NWRlNmU4NzJjZjA5M2QyY2NhZjBkZjE4YWI5NmU3YTRlODIuLmVmN2NlODk5OGRlMDNm
MjBmNDIwZjA5NWMzODE3ZGQwNTE0MzFlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNzYzLDYg
Kzc2Myw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEVsZW1lbnREYXRhPiBtX2VsZW1lbnREYXRh
OwogfTsKIAordm9pZCBpbnZhbGlkYXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKEVsZW1lbnQqIHNp
YmxpbmcpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJ
VFNfQkVHSU4oV2ViQ29yZTo6RWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRl
eCA1M2YyMzliYmFmNmIzZjI0OTI1MmYwMjYzODVhMWVkZjA5OGMyNjUyLi45MWMyNmYxNGQ5YmQw
MmIzZmZmMWY2MDJiMGQ5YzNkOWQ4ZjE5ZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
CkBAIC0xNDQsNiArMTQ0LDkgQEAgdm9pZCBTaGFkb3dSb290OjpjaGlsZHJlbkNoYW5nZWQoY29u
c3QgQ2hpbGRDaGFuZ2UmIGNoaWxkQ2hhbmdlKQogICAgIGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6
Ok5vbkNvbnRlbnRzQ2hpbGRJbnNlcnRlZDoKICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpB
bGxDaGlsZHJlblJlcGxhY2VkOgogICAgICAgICBicmVhazsKKyAgICBjYXNlIENoaWxkQ2hhbmdl
OjpUeXBlOjpGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbjoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0OTZmZTUxODlh
NjZiNWRkNzJiOTFkZTg2YzBkMzI4MWJjMjM0ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAKQEAgLTAsMCArMSwxNzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2hpbGRDaGFu
Z2VJbnZhbGlkYXRpb24uaCIKKworI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgorI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRlICJTbG90QXNzaWdubWVudC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZTo6U3R5bGUgeworCitDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6Q2hpbGRDaGFu
Z2VJbnZhbGlkYXRpb24oQ29udGFpbmVyTm9kZSYgY29udGFpbmVyLCBjb25zdCBDb250YWluZXJO
b2RlOjpDaGlsZENoYW5nZSYgY2hpbGRDaGFuZ2UpCisgICAgOiBtX3BhcmVudEVsZW1lbnQoaXM8
RWxlbWVudD4oY29udGFpbmVyKSA/IGRvd25jYXN0PEVsZW1lbnQ+KCZjb250YWluZXIpIDogbnVs
bHB0cikKKyAgICAsIG1faXNFbmFibGVkKG1fcGFyZW50RWxlbWVudCA/IG1fcGFyZW50RWxlbWVu
dC0+bmVlZHNTdHlsZUludmFsaWRhdGlvbigpIDogZmFsc2UpCisgICAgLCBtX2NoaWxkQ2hhbmdl
KGNoaWxkQ2hhbmdlKQoreworICAgIC8vIEZJWE1FOiBEbyBzbWFydGVyIGludmFsaWRhdGlvbiBz
aW1pbGF0IHRvIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLgorfQorCitDaGlsZENoYW5nZUludmFs
aWRhdGlvbjo6fkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uKCkKK3sKKyAgICBpZiAoIW1faXNFbmFi
bGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnZhbGlkYXRlQWZ0ZXJDaGFuZ2UoKTsKK30K
Kwordm9pZCBDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0ZUFmdGVyQ2hhbmdlKCkK
K3sKKyAgICBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UoKTsKKworICAgIGlmIChtX2NoaWxkQ2hh
bmdlLnR5cGUgPT0gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OkZpbmlzaGVkUGFy
c2luZ0NoaWxkcmVuKSB7CisgICAgICAgIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcygpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fY2hpbGRDaGFuZ2Uuc291cmNlID09
IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgY2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKCk7Cit9CisKK3ZvaWQgQ2hp
bGRDaGFuZ2VJbnZhbGlkYXRpb246OmNoZWNrRm9yRW1wdHlTdHlsZUNoYW5nZSgpCit7CisgICAg
YXV0byYgZWxlbWVudCA9IHBhcmVudEVsZW1lbnQoKTsKKyAgICBpZiAoIWVsZW1lbnQuc3R5bGVB
ZmZlY3RlZEJ5RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogc3R5bGUgPSBl
bGVtZW50LnJlbmRlclN0eWxlKCk7CisgICAgaWYgKCFzdHlsZSB8fCAoIXN0eWxlLT5lbXB0eVN0
YXRlKCkgfHwgZWxlbWVudC5oYXNDaGlsZE5vZGVzKCkpKQorICAgICAgICBlbGVtZW50LmludmFs
aWRhdGVTdHlsZUZvclN1YnRyZWUoKTsKK30KKworc3RhdGljIHZvaWQgaW52YWxpZGF0ZUZvckZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoRWxlbWVudCYgcGFyZW50LCBFbGVtZW50KiBlbGVtZW50QWZ0
ZXJDaGFuZ2UpCit7CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkID0gcGFyZW50LmNoaWxkcmVu
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICBib29sIGRlc2NlbmRhbnRz
QWZmZWN0ZWQgPSBwYXJlbnQuZGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxS
dWxlcygpOworCisgICAgaWYgKCFjaGlsZHJlbkFmZmVjdGVkICYmICFkZXNjZW5kYW50c0FmZmVj
dGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8qIHNpYmxpbmcgPSBlbGVtZW50
QWZ0ZXJDaGFuZ2U7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxp
bmcoKSkgeworICAgICAgICBpZiAoY2hpbGRyZW5BZmZlY3RlZCkKKyAgICAgICAgICAgIHNpYmxp
bmctPmludmFsaWRhdGVTdHlsZUludGVybmFsKCk7CisgICAgICAgIGlmIChkZXNjZW5kYW50c0Fm
ZmVjdGVkKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8qIHNpYmxpbmdDaGlsZCA9IHNpYmxpbmct
PmZpcnN0RWxlbWVudENoaWxkKCk7IHNpYmxpbmdDaGlsZDsgc2libGluZ0NoaWxkID0gc2libGlu
Z0NoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKKyAgICAgICAgICAgICAgICBzaWJsaW5nQ2hp
bGQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOworICAgICAgICB9CisgICAg
fQorfQorCitzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9yQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMo
RWxlbWVudCYgcGFyZW50LCBFbGVtZW50KiBlbGVtZW50QmVmb3JlQ2hhbmdlKQoreworICAgIGJv
b2wgY2hpbGRyZW5BZmZlY3RlZCA9IHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBv
c2l0aW9uYWxSdWxlcygpOworICAgIGJvb2wgZGVzY2VuZGFudHNBZmZlY3RlZCA9IHBhcmVudC5k
ZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOworCisgICAgaWYg
KCFjaGlsZHJlbkFmZmVjdGVkICYmICFkZXNjZW5kYW50c0FmZmVjdGVkKQorICAgICAgICByZXR1
cm47CisKKyAgICBmb3IgKGF1dG8qIHNpYmxpbmcgPSBlbGVtZW50QmVmb3JlQ2hhbmdlOyBzaWJs
aW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7CisgICAg
ICAgIGlmIChjaGlsZHJlbkFmZmVjdGVkKQorICAgICAgICAgICAgc2libGluZy0+aW52YWxpZGF0
ZVN0eWxlSW50ZXJuYWwoKTsKKyAgICAgICAgaWYgKGRlc2NlbmRhbnRzQWZmZWN0ZWQpIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byogc2libGluZ0NoaWxkID0gc2libGluZy0+Zmlyc3RFbGVtZW50
Q2hpbGQoKTsgc2libGluZ0NoaWxkOyBzaWJsaW5nQ2hpbGQgPSBzaWJsaW5nQ2hpbGQtPm5leHRF
bGVtZW50U2libGluZygpKQorICAgICAgICAgICAgICAgIHNpYmxpbmdDaGlsZC0+aW52YWxpZGF0
ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQg
Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcygpCit7
CisgICAgYXV0byYgcGFyZW50ID0gcGFyZW50RWxlbWVudCgpOworICAgIGF1dG8qIGVsZW1lbnRC
ZWZvcmVDaGFuZ2UgPSBtX2NoaWxkQ2hhbmdlLnByZXZpb3VzU2libGluZ0VsZW1lbnQ7CisgICAg
YXV0byogZWxlbWVudEFmdGVyQ2hhbmdlID0gbV9jaGlsZENoYW5nZS5uZXh0U2libGluZ0VsZW1l
bnQ7CisKKyAgICBpZiAocGFyZW50LnN0eWxlVmFsaWRpdHkoKSA+PSBTdHlsZTo6VmFsaWRpdHk6
OlN1YnRyZWVJbnZhbGlkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyA6Zmlyc3QtY2hpbGQu
IEluIHRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnl0
aGluZywgc2luY2Ugd2Ugd2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4KKyAgICAvLyBJbiB0aGUg
RE9NIGNhc2UsIHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgfGFmdGVyQ2hhbmdlfCBp
cyBub3QgMC4KKyAgICAvLyB8YWZ0ZXJDaGFuZ2V8IGlzIDAgaW4gdGhlIHBhcnNlciBjYXNlLCBz
byBpdCB3b3JrcyBvdXQgdGhhdCB3ZSdsbCBza2lwIHRoaXMgYmxvY2suCisgICAgaWYgKHBhcmVu
dC5jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSAmJiBlbGVtZW50QWZ0ZXJDaGFu
Z2UpIHsKKyAgICAgICAgLy8gRmluZCBvdXIgbmV3IGZpcnN0IGNoaWxkLgorICAgICAgICBSZWZQ
dHI8RWxlbWVudD4gbmV3Rmlyc3RFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGls
ZChwYXJlbnQpOworICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCBlbGVtZW50IG5vZGUgZm9sbG93
aW5nIHxhZnRlckNoYW5nZXwKKworICAgICAgICAvLyBUaGlzIGlzIHRoZSBpbnNlcnQvYXBwZW5k
IGNhc2UuCisgICAgICAgIGlmIChuZXdGaXJzdEVsZW1lbnQgIT0gZWxlbWVudEFmdGVyQ2hhbmdl
KSB7CisgICAgICAgICAgICBhdXRvKiBzdHlsZSA9IGVsZW1lbnRBZnRlckNoYW5nZS0+cmVuZGVy
U3R5bGUoKTsKKyAgICAgICAgICAgIGlmICghc3R5bGUgfHwgc3R5bGUtPmZpcnN0Q2hpbGRTdGF0
ZSgpKQorICAgICAgICAgICAgICAgIGVsZW1lbnRBZnRlckNoYW5nZS0+aW52YWxpZGF0ZVN0eWxl
Rm9yU3VidHJlZUludGVybmFsKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBhbHNvIGhh
dmUgdG8gaGFuZGxlIG5vZGUgcmVtb3ZhbC4KKyAgICAgICAgaWYgKG1fY2hpbGRDaGFuZ2UudHlw
ZSA9PSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6RWxlbWVudFJlbW92ZWQgJiYg
bmV3Rmlyc3RFbGVtZW50ID09IGVsZW1lbnRBZnRlckNoYW5nZSAmJiBuZXdGaXJzdEVsZW1lbnQp
IHsKKyAgICAgICAgICAgIGF1dG8qIHN0eWxlID0gbmV3Rmlyc3RFbGVtZW50LT5yZW5kZXJTdHls
ZSgpOworICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmZpcnN0Q2hpbGRTdGF0ZSgp
KQorICAgICAgICAgICAgICAgIG5ld0ZpcnN0RWxlbWVudC0+aW52YWxpZGF0ZVN0eWxlRm9yU3Vi
dHJlZUludGVybmFsKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyA6bGFzdC1jaGlsZC4g
SW4gdGhlIHBhcnNlciBjYWxsYmFjayBjYXNlLCB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrIGFueXRo
aW5nLCBzaW5jZSB3ZSB3ZXJlIHJpZ2h0IHRoZSBmaXJzdCB0aW1lLgorICAgIC8vIEluIHRoZSBE
T00gY2FzZSwgd2Ugb25seSBuZWVkIHRvIGRvIHNvbWV0aGluZyBpZiB8YWZ0ZXJDaGFuZ2V8IGlz
IG5vdCAwLgorICAgIGlmIChwYXJlbnQuY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMo
KSAmJiBlbGVtZW50QmVmb3JlQ2hhbmdlKSB7CisgICAgICAgIC8vIEZpbmQgb3VyIG5ldyBsYXN0
IGNoaWxkLgorICAgICAgICBSZWZQdHI8RWxlbWVudD4gbmV3TGFzdEVsZW1lbnQgPSBFbGVtZW50
VHJhdmVyc2FsOjpsYXN0Q2hpbGQocGFyZW50KTsKKworICAgICAgICBpZiAobmV3TGFzdEVsZW1l
bnQgIT0gZWxlbWVudEJlZm9yZUNoYW5nZSkgeworICAgICAgICAgICAgYXV0byogc3R5bGUgPSBl
bGVtZW50QmVmb3JlQ2hhbmdlLT5yZW5kZXJTdHlsZSgpOworICAgICAgICAgICAgaWYgKCFzdHls
ZSB8fCBzdHlsZS0+bGFzdENoaWxkU3RhdGUoKSkKKyAgICAgICAgICAgICAgICBlbGVtZW50QmVm
b3JlQ2hhbmdlLT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIFdlIGFsc28gaGF2ZSB0byBoYW5kbGUgbm9kZSByZW1vdmFsLiBUaGUg
cGFyc2VyIGNhbGxiYWNrIGNhc2UgaXMgc2ltaWxhciB0byBub2RlIHJlbW92YWwgYXMgd2VsbCBp
biB0aGF0IHdlIG5lZWQgdG8gY2hhbmdlIHRoZSBsYXN0IGNoaWxkCisgICAgICAgIC8vIHRvIG1h
dGNoIG5vdy4KKyAgICAgICAgYm9vbCByZW1vdmVkT3JGaW5pc2hlZCA9IG1fY2hpbGRDaGFuZ2Uu
dHlwZSA9PSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6RWxlbWVudFJlbW92ZWQg
fHwgbV9jaGlsZENoYW5nZS50eXBlID09IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBl
OjpGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbjsKKyAgICAgICAgaWYgKHJlbW92ZWRPckZpbmlzaGVk
ICYmIG5ld0xhc3RFbGVtZW50ID09IGVsZW1lbnRCZWZvcmVDaGFuZ2UgJiYgbmV3TGFzdEVsZW1l
bnQpIHsKKyAgICAgICAgICAgIGF1dG8qIHN0eWxlID0gbmV3TGFzdEVsZW1lbnQtPnJlbmRlclN0
eWxlKCk7CisgICAgICAgICAgICBpZiAoIXN0eWxlIHx8ICFzdHlsZS0+bGFzdENoaWxkU3RhdGUo
KSkKKyAgICAgICAgICAgICAgICBuZXdMYXN0RWxlbWVudC0+aW52YWxpZGF0ZVN0eWxlRm9yU3Vi
dHJlZUludGVybmFsKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpbnZhbGlkYXRlRm9yU2li
bGluZ0NvbWJpbmF0b3JzKGVsZW1lbnRBZnRlckNoYW5nZSk7CisKKyAgICBpbnZhbGlkYXRlRm9y
Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhwYXJlbnQsIGVsZW1lbnRBZnRlckNoYW5nZSk7CisgICAg
aW52YWxpZGF0ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKHBhcmVudCwgZWxlbWVudEJlZm9y
ZUNoYW5nZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NoaWxk
Q2hhbmdlSW52YWxpZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUlu
dmFsaWRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3NWEwMTE3OTlmOTUwNWE3YjAzMTcxZjQ4YWQ4Njky
ZTZiMzMyNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENo
YW5nZUludmFsaWRhdGlvbi5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFt
ZXNwYWNlIFN0eWxlIHsKKworY2xhc3MgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24geworcHVibGlj
OgorICAgIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uKENvbnRhaW5lck5vZGUmLCBjb25zdCBDb250
YWluZXJOb2RlOjpDaGlsZENoYW5nZSYpOworICAgIH5DaGlsZENoYW5nZUludmFsaWRhdGlvbigp
OworCitwcml2YXRlOgorICAgIHZvaWQgaW52YWxpZGF0ZUFmdGVyQ2hhbmdlKCk7CisgICAgdm9p
ZCBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UoKTsKKyAgICB2b2lkIGNoZWNrRm9yU2libGluZ1N0
eWxlQ2hhbmdlcygpOworCisgICAgRWxlbWVudCYgcGFyZW50RWxlbWVudCgpIHsgcmV0dXJuICpt
X3BhcmVudEVsZW1lbnQ7IH0KKworICAgIEVsZW1lbnQqIG1fcGFyZW50RWxlbWVudCB7IG51bGxw
dHIgfTsKKyAgICBjb25zdCBib29sIG1faXNFbmFibGVkOworCisgICAgY29uc3QgQ29udGFpbmVy
Tm9kZTo6Q2hpbGRDaGFuZ2UmIG1fY2hpbGRDaGFuZ2U7Cit9OworCit9Cit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUFkanVzdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZUFkanVzdGVyLmgKaW5kZXggMTkxMzFlNTgwZjU2NDVhZWEyMjMyODI5NGU5ZDc2
MWViZjgzNWQ2Ny4uOTcyYTFhYmQxNTIwNjA1NjAxODM0MzFmNjQ4NDc5OTgzOGQ5OWQ0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVBZGp1c3Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0ZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgorI2luY2x1ZGUgIlRl
eHRTaXplQWRqdXN0bWVudC5oIgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444713</attachid>
            <date>2021-11-18 12:10:45 -0800</date>
            <delta_ts>2021-11-22 05:28:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233311-20211118221043.patch</filename>
            <type>text/plain</type>
            <size>45253</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1ODUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAyZjkzMWRjYTIwM2Mw
NTE5NDBiM2JkOWM2MzAyYjRlN2M4MTM2Ni4uODIyOTE1MTM3OGVhNDFkMjE5MThjZjRmMDI2NDQz
OWM3N2QwNjhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIxLTExLTE4ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgY2hpbGQgY2hh
bmdlIGludmFsaWRhdGlvbiBpbnRvIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVc2Ugc2ltaWxhciBwYXR0ZXJuIGFzIENsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uIGFuZCBvdGhlcnMgd2hlcmUgd2UgY3JlYXRlIGEgc3RhY2sgb2JqZWN0IHNjb3Bl
ZAorICAgICAgICBvdmVyIGEgRE9NIG11dGF0aW9uLiBUaGlzIHdpbGwgYWxsb3cgbW9yZSBzb3Bo
aXN0aWNhdGVkIHJ1bGVzZXQgYmFzZWQgaW52YWxpZGF0aW9uIGluCisgICAgICAgIGZ1dHVyZS4K
KworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBpbnZhbGlkYXRpb24gY29kZSBmcm9tIGNo
aWxkcmVuQ2hhbmdlZCgpIHRvIHRoZSBuZXcgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24gY2xhc3Mu
CisgICAgICAgIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uIGlzIGluc3RhbnRpYXRlZCBpbiBDb250
YWluZXJOb2RlIGFuZCBDaGFyYWN0ZXJEYXRhIG11dGF0aW9uIGZ1bmN0aW9ucworICAgICAgICB0
aGF0IGNhbGwgY2hpbGRyZW5DaGFuZ2VkKCkuIEl0IHVzZXMgdGhlIHNhbWUgQ2hpbGRDaGFuZ2Ug
YXJndW1lbnQgdHlwZSBhcyBjaGlsZHJlbkNoYW5nZWQoKS4KKworICAgICAgICBUaGVyZSBhcmUg
bm8gY2hhbmdlcyB0byBpbnZhbGlkYXRpb24gZnVuY3Rpb25hbGl0eSBpbiB0aGlzIHBhdGNoLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om1ha2VDaGlsZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJE
YXRhOjpwYXJzZXJBcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6
OnNldERhdGFBbmRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6bm90
aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UpOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmg6Cisg
ICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFp
bmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Om1ha2VDaGlsZENoYW5nZUZvclJlbW92YWwpOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6bWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRh
aW5lck5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2Rl
OjpyZXBsYWNlQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENo
aWxkV2l0aG91dFByZUluc2VydGlvblZhbGlkaXR5Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6YWZm
ZWN0c0VsZW1lbnRzKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OmlzSW5zZXJ0aW9uIGNvbnN0KToK
KworICAgICAgICBBZGQgYSBuZXcgRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4gY2hhbmdlIHR5cGUs
IG9ubHkgdXNlZCB3aGVuIGludmFsaWRhdGluZyBmcm9tIEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdD
aGlsZHJlbi4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6Y2hpbGRUeXBlQWxsb3dlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZmluaXNoUGFy
c2luZ0NoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrRm9yRW1wdHlTdHlsZUNoYW5n
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppbnZhbGlkYXRlRm9yRm9yd2FyZFBvc2l0
aW9uYWxSdWxlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjppbnZhbGlkYXRlRm9yQmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tG
b3JTaWJsaW5nU3R5bGVDaGFuZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5o
OgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d1Jvb3Q6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3R5bGUvQ2hpbGRDaGFuZ2VJbnZh
bGlkYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpDaGlsZENoYW5n
ZUludmFsaWRhdGlvbjo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjp+Q2hpbGRDaGFuZ2VJbnZhbGlkYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjpp
bnZhbGlkYXRlQWZ0ZXJDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkNoaWxkQ2hh
bmdlSW52YWxpZGF0aW9uOjpjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OmludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjppbnZhbGlkYXRlRm9yQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjpjaGVj
a0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMpOgorICAgICAgICAqIHN0eWxlL0NoaWxkQ2hhbmdlSW52
YWxpZGF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkNoaWxkQ2hhbmdl
SW52YWxpZGF0aW9uOjpwYXJlbnRFbGVtZW50KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUFkanVz
dGVyLmg6CisKIDIwMjEtMTEtMTUgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBhbm90aGVyIDxtb2RlbD4gYmFja2VuZCBiYWNrZWQgYnkgU2NlbmVLaXQgdG8g
cHJvdmUgb3V0IE1vZGVsUGxheWVyIGluZnJhc3RydWN0dXJlIGEgYml0IG1vcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggOWQ3NzU0OGNkZWEwYjQ3YjIyMDZiYjU4ZGU2ZDNkYTA4NGU1Yzc0OC4uYjdiNDRi
NjJmYTU1YmI4NDg3MDhmNmE5MjIyYmE3YzRmN2Q3YzIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTI1
MjEsNiArMjUyMSw3IEBAIHN0b3JhZ2UvU3RvcmFnZU1hcC5jcHAKIHN0b3JhZ2UvU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyLmNwcAogc3RvcmFnZS9TdG9yYWdlUXVvdGFNYW5hZ2VyLmNwcAogc3R5
bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAorc3R5bGUvQ2hpbGRDaGFuZ2VJbnZh
bGlkYXRpb24uY3BwCiBzdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAKIHN0eWxlL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAogc3R5bGUvSWRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYmQxYjdhOTMyYjM1MDk3N2JmNWY5NDA1YTk2NWQwOGVhODU2OWEyYS4uYWM0OGIwNDhjYjA5
OGZmZjEyZmQ5OTQ1NzNlYzJiMmIzNjAxYTNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTM0MSw2ICs1MzQxLDcgQEAKIAkJ
RTRDMTc4OUIwRUU2OTAzODAwODI0RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDMTc4OTYwRUU2OTAzODAwODI0
RDY5IC8qIENTU1NlbGVjdG9yTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUU0QzI3OTU5MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRp
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDMjc5
NTcwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTRDM0IxRkEwRjBFNDE2MTAwOTY5M0Y2IC8q
IExlZ2FjeVRpbGVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTRDM0IxRjkwRjBFNDE2MTAwOTY5M0Y2IC8qIExlZ2FjeVRpbGVDYWNoZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUU0QzRDNjFB
Mjc0NTJBNzkwMEEwNDBFNyAvKiBDaGlsZENoYW5nZUludmFsaWRhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDNEM2MTgyNzQ1MkE3OTAwQTA0
MEU3IC8qIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi87IH07CiAJCUU0QzkxQTBFMTgwMjM0
MzEwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDOTFBMEQxODAyMzQzMTAwQTE3RjZEIC8qIFRleHRQYWlu
dFN0eWxlLmggKi87IH07CiAJCUU0QzkxQTE2MTgwOTk5RjEwMEExN0Y2RCAvKiBSZW5kZXJUZXh0
TGluZUJveGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNEM5MUExNTE4MDk5OUYxMDBBMTdGNkQgLyogUmVuZGVyVGV4dExpbmVCb3hlcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0RDMzRjNCMjUy
QUVFQ0QwMDgzN0QwNSAvKiBJbmxpbmVSdW5BbmRPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDMzRjM5MjUyQUVFQ0MwMDgzN0QwNSAvKiBJ
bmxpbmVSdW5BbmRPZmZzZXQuaCAqLzsgfTsKQEAgLTE3MDQwLDYgKzE3MDQxLDggQEAKIAkJRTRD
Mjc5NTcwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1lZGlhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlck1lZGlhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUU0QzNCMUY5MEYwRTQxNjEwMDk2OTNGNiAvKiBMZWdhY3lUaWxlQ2FjaGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5VGlsZUNhY2hlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU0QzNCMUZCMEYwRTQxNzAwMDk2OTNGNiAvKiBMZWdhY3lUaWxl
Q2FjaGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMZWdhY3lU
aWxlQ2FjaGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0QzRDNjE4Mjc0NTJB
NzkwMEEwNDBFNyAvKiBDaGlsZENoYW5nZUludmFsaWRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDaGlsZENoYW5nZUludmFsaWRhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFNEM0QzYxQjI3NDUyQThBMDBBMDQwRTcgLyogQ2hpbGRDaGFuZ2VJ
bnZhbGlkYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2hpbGRDaGFuZ2VJbnZhbGlkYXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEM5MUEwRDE4MDIzNDMxMDBB
MTdGNkQgLyogVGV4dFBhaW50U3R5bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGV4dFBhaW50U3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRDOTFB
MEYxODAyMzQzOTAwQTE3RjZEIC8qIFRleHRQYWludFN0eWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRQYWludFN0eWxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTRDOTFBMTUxODA5OTlGMTAwQTE3RjZEIC8qIFJlbmRlclRleHRMaW5l
Qm94ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyVGV4dExpbmVC
b3hlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzAyNzAsNiArMzAyNzMsOCBA
QAogCQkJCUU0QTgxNEQ3MUM3MEUxMDUwMEJGODVBQyAvKiBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlk
YXRpb24uY3BwICovLAogCQkJCUU0QTgxNEQ5MUM3MEUxMEQwMEJGODVBQyAvKiBBdHRyaWJ1dGVD
aGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlFNEFCQUJGNDIzNjhDNkVGMDBGQTQzNDUgLyog
Q2FzY2FkZUxldmVsLmggKi8sCisJCQkJRTRDNEM2MUIyNzQ1MkE4QTAwQTA0MEU3IC8qIENoaWxk
Q2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLywKKwkJCQlFNEM0QzYxODI3NDUyQTc5MDBBMDQwRTcg
LyogQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlFNEE4MTRENTFDNkRFRThEMDBC
Rjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwICovLAogCQkJCUU0QTgxNEQzMUM2
REVDNDAwMEJGODVBQyAvKiBDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oICovLAogCQkJCUZCREI2
MTlBMTZENjAzMkEwMEJCMzM5NCAvKiBFbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAgKi8sCkBAIC0z
MjcyMyw2ICszMjcyOCw3IEBACiAJCQkJOTNGMkNDOTMyNDI3RkI5QzAwNTg1MUQ4IC8qIENoYXJh
Y3RlclJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0I4RkZEMTE2QUU3Rjk2MDAzODM4OEQg
LyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RjU1QjNEQjIxMjUxRjEyRDAwM0VGMjY5IC8qIENoZWNrYm94SW5wdXRUeXBlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlFNEM0QzYxQTI3NDUyQTc5MDBBMDQwRTcgLyogQ2hpbGRDaGFuZ2VJbnZhbGlk
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUQ2MTlBMzA4MTQ0RTAwQkUwMDRCQzMwMiAvKiBD
aGlsZExpc3RNdXRhdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIyMDA5NzdE
M0MwMDA1ODI2RDkgLyogQ2hpbGROb2RlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTREODIz
NTIwQUY5MkE3OTAwMDRGMDU3IC8qIENocm9tZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ2hhcmFjdGVyRGF0YS5jcHAKaW5kZXggMmU2NWM2MjQ0OTczMzdlNmI5MDBhZTM5MDBjMWEx
MjZjOTdkNmM4OC4uODk3N2UyNDdmMmJhZmUzYmYyNWY5MmJhOTMyNDk5OWVkYjk0MjNjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1
ZGUgIkNoYXJhY3RlckRhdGEuaCIKIAogI2luY2x1ZGUgIkF0dHIuaCIKKyNpbmNsdWRlICJDaGls
ZENoYW5nZUludmFsaWRhdGlvbi5oIgogI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKICNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKQEAgLTcz
LDYgKzc0LDE2IEBAIEV4Y2VwdGlvbk9yPFN0cmluZz4gQ2hhcmFjdGVyRGF0YTo6c3Vic3RyaW5n
RGF0YSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50CiAgICAgcmV0dXJuIG1fZGF0YS5z
dWJzdHJpbmcob2Zmc2V0LCBjb3VudCk7CiB9CiAKK3N0YXRpYyBDb250YWluZXJOb2RlOjpDaGls
ZENoYW5nZSBtYWtlQ2hpbGRDaGFuZ2UoQ2hhcmFjdGVyRGF0YSYgY2hhcmFjdGVyRGF0YSwgQ29u
dGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZSBzb3VyY2UpCit7CisgICAgcmV0dXJuIHsK
KyAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OlRleHRDaGFuZ2VkLAor
ICAgICAgICBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoY2hhcmFjdGVyRGF0YSks
CisgICAgICAgIEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGNoYXJhY3RlckRhdGEpLAor
ICAgICAgICBzb3VyY2UKKyAgICB9OworfQorCiB1bnNpZ25lZCBDaGFyYWN0ZXJEYXRhOjpwYXJz
ZXJBcHBlbmREYXRhKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aExpbWl0KQogewogICAgIHVuc2lnbmVkIG9sZExlbmd0aCA9IG1fZGF0YS5sZW5n
dGgoKTsKQEAgLTk1LDYgKzEwNiwxMSBAQCB1bnNpZ25lZCBDaGFyYWN0ZXJEYXRhOjpwYXJzZXJB
cHBlbmREYXRhKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBvZmZzZXQsCiAgICAgaWYg
KCFjaGFyYWN0ZXJMZW5ndGhMaW1pdCkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBhdXRvIGNo
aWxkQ2hhbmdlID0gbWFrZUNoaWxkQ2hhbmdlKCp0aGlzLCBDb250YWluZXJOb2RlOjpDaGlsZENo
YW5nZTo6U291cmNlOjpQYXJzZXIpOworICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkNoaWxkQ2hh
bmdlSW52YWxpZGF0aW9uPiBzdHlsZUludmFsaWRhdGlvbjsKKyAgICBpZiAoYXV0byogcGFyZW50
ID0gcGFyZW50Tm9kZSgpKQorICAgICAgICBzdHlsZUludmFsaWRhdGlvbi5lbXBsYWNlKCpwYXJl
bnQsIGNoaWxkQ2hhbmdlKTsKKwogICAgIFN0cmluZyBvbGREYXRhID0gbV9kYXRhOwogICAgIGlm
IChzdHJpbmcuaXM4Qml0KCkpCiAgICAgICAgIG1fZGF0YS5hcHBlbmQoc3RyaW5nLmNoYXJhY3Rl
cnM4KCkgKyBvZmZzZXQsIGNoYXJhY3Rlckxlbmd0aExpbWl0KTsKQEAgLTEwNSw3ICsxMjEsNyBA
QCB1bnNpZ25lZCBDaGFyYWN0ZXJEYXRhOjpwYXJzZXJBcHBlbmREYXRhKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCB1bnNpZ25lZCBvZmZzZXQsCiAgICAgaWYgKGlzPFRleHQ+KCp0aGlzKSkKICAgICAg
ICAgZG93bmNhc3Q8VGV4dD4oKnRoaXMpLnVwZGF0ZVJlbmRlcmVyQWZ0ZXJDb250ZW50Q2hhbmdl
KG9sZExlbmd0aCwgMCk7CiAKLSAgICBub3RpZnlQYXJlbnRBZnRlckNoYW5nZShDb250YWluZXJO
b2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpOworICAgIG5vdGlmeVBhcmVudEFmdGVy
Q2hhbmdlKGNoaWxkQ2hhbmdlKTsKIAogICAgIGF1dG8gbXV0YXRpb25SZWNpcGllbnRzID0gTXV0
YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXA6OmNyZWF0ZUZvckNoYXJhY3RlckRhdGFNdXRhdGlv
bigqdGhpcyk7CiAgICAgaWYgKFVOTElLRUxZKG11dGF0aW9uUmVjaXBpZW50cykpCkBAIC0xNzMs
NiArMTg5LDEyIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENoYXJhY3RlckRhdGE6OnNldE5vZGVWYWx1
ZShjb25zdCBTdHJpbmcmIG5vZGVWYWx1ZSkKIAogdm9pZCBDaGFyYWN0ZXJEYXRhOjpzZXREYXRh
QW5kVXBkYXRlKGNvbnN0IFN0cmluZyYgbmV3RGF0YSwgdW5zaWduZWQgb2Zmc2V0T2ZSZXBsYWNl
ZERhdGEsIHVuc2lnbmVkIG9sZExlbmd0aCwgdW5zaWduZWQgbmV3TGVuZ3RoLCBVcGRhdGVMaXZl
UmFuZ2VzIHNob3VsZFVwZGF0ZUxpdmVSYW5nZXMpCiB7CisgICAgYXV0byBjaGlsZENoYW5nZSA9
IG1ha2VDaGlsZENoYW5nZSgqdGhpcywgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJj
ZTo6QVBJKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8U3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0
aW9uPiBzdHlsZUludmFsaWRhdGlvbjsKKyAgICBpZiAoYXV0byogcGFyZW50ID0gcGFyZW50Tm9k
ZSgpKQorICAgICAgICBzdHlsZUludmFsaWRhdGlvbi5lbXBsYWNlKCpwYXJlbnQsIGNoaWxkQ2hh
bmdlKTsKKwogICAgIFN0cmluZyBvbGREYXRhID0gbV9kYXRhOwogICAgIG1fZGF0YSA9IG5ld0Rh
dGE7CiAKQEAgLTE5MSwyNiArMjEzLDE5IEBAIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0YUFu
ZFVwZGF0ZShjb25zdCBTdHJpbmcmIG5ld0RhdGEsIHVuc2lnbmVkIG9mZnNldE9mUmVwCiAgICAg
aWYgKGRvY3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAgZG9jdW1lbnQoKS5mcmFtZSgpLT5zZWxl
Y3Rpb24oKS50ZXh0V2FzUmVwbGFjZWQodGhpcywgb2Zmc2V0T2ZSZXBsYWNlZERhdGEsIG9sZExl
bmd0aCwgbmV3TGVuZ3RoKTsKIAotICAgIG5vdGlmeVBhcmVudEFmdGVyQ2hhbmdlKENvbnRhaW5l
ck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSk7CisgICAgbm90aWZ5UGFyZW50QWZ0ZXJD
aGFuZ2UoY2hpbGRDaGFuZ2UpOwogCiAgICAgZGlzcGF0Y2hNb2RpZmllZEV2ZW50KG9sZERhdGEp
OwogfQogCi12b2lkIENoYXJhY3RlckRhdGE6Om5vdGlmeVBhcmVudEFmdGVyQ2hhbmdlKENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNlKQordm9pZCBDaGFyYWN0ZXJEYXRh
Ojpub3RpZnlQYXJlbnRBZnRlckNoYW5nZShjb25zdCBDb250YWluZXJOb2RlOjpDaGlsZENoYW5n
ZSYgY2hpbGRDaGFuZ2UpCiB7CiAgICAgZG9jdW1lbnQoKS5pbmNET01UcmVlVmVyc2lvbigpOwog
CiAgICAgaWYgKCFwYXJlbnROb2RlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENvbnRhaW5l
ck5vZGU6OkNoaWxkQ2hhbmdlIGNoYW5nZSA9IHsKLSAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2U6OlR5cGU6OlRleHRDaGFuZ2VkLAotICAgICAgICBFbGVtZW50VHJhdmVyc2FsOjpw
cmV2aW91c1NpYmxpbmcoKnRoaXMpLAotICAgICAgICBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2li
bGluZygqdGhpcyksCi0gICAgICAgIHNvdXJjZQotICAgIH07Ci0KLSAgICBwYXJlbnROb2RlKCkt
PmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOworICAgIHBhcmVudE5vZGUoKS0+Y2hpbGRyZW5DaGFu
Z2VkKGNoaWxkQ2hhbmdlKTsKIH0KIAogdm9pZCBDaGFyYWN0ZXJEYXRhOjpkaXNwYXRjaE1vZGlm
aWVkRXZlbnQoY29uc3QgU3RyaW5nJiBvbGREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRh
LmgKaW5kZXggYzU5NDczNWJlY2IwOWEzNmU2NTQyOWYyMjk2NmNmYTEzMzBmOTM4MS4uMzZhNDky
NTQwN2U5MTNjY2NhNzNlOTBkZTAzMmFiNWZiODc3NGE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFj
dGVyRGF0YS5oCkBAIC02NSw3ICs2NSw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgU3Ry
aW5nIG5vZGVWYWx1ZSgpIGNvbnN0IGZpbmFsOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE5v
ZGVWYWx1ZShjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeVBhcmVudEFmdGVy
Q2hhbmdlKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2UpOworICAgIHZvaWQgbm90
aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UmKTsK
IAogICAgIFN0cmluZyBtX2RhdGE7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CmluZGV4IDZkOGZkMWZkNTc3MDkyMGI4MTIzMWQzMTU2ZmU1M2I4ODk0Yzg5ODMuLmQ3ZjRlOWU5
M2IwMDEzMWE2ODYxMWRmMTdmNzAyNzRkOGZkNmIxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUu
aCIKICNpbmNsdWRlICJBbGxEZXNjZW5kYW50c0NvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJDaGls
ZENoYW5nZUludmFsaWRhdGlvbi5oIgogI2luY2x1ZGUgIkNoaWxkTGlzdE11dGF0aW9uU2NvcGUu
aCIKICNpbmNsdWRlICJDbGFzc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJDb21tb25WTS5oIgpA
QCAtMTExLDI5ICsxMTIsNTIgQEAgQUxXQVlTX0lOTElORSBOb2RlVmVjdG9yIENvbnRhaW5lck5v
ZGU6OnJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlwdEFzc2VydGlvbihDaGkKIAogICAgIGRpc2Nv
bm5lY3RTdWJmcmFtZXNJZk5lZWRlZCgqdGhpcywgRGVzY2VuZGFudHNPbmx5KTsKIAorICAgIENv
bnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlIGNoaWxkQ2hhbmdlIHsgQ2hpbGRDaGFuZ2U6OlR5cGU6
OkFsbENoaWxkcmVuUmVtb3ZlZCwgbnVsbHB0ciwgbnVsbHB0ciwgc291cmNlIH07CisKICAgICBX
aWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJj
aHlVcGRhdGVzOwogICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlw
dERpc2FsbG93ZWRTY29wZTsKKyAgICB7CisgICAgICAgIFN0eWxlOjpDaGlsZENoYW5nZUludmFs
aWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgY2hpbGRDaGFuZ2UpOwogCi0gICAgaWYg
KFVOTElLRUxZKGlzU2hhZG93Um9vdCgpIHx8IGlzSW5TaGFkb3dUcmVlKCkpKQotICAgICAgICBj
b250YWluaW5nU2hhZG93Um9vdCgpLT53aWxsUmVtb3ZlQWxsQ2hpbGRyZW4oKnRoaXMpOworICAg
ICAgICBpZiAoVU5MSUtFTFkoaXNTaGFkb3dSb290KCkgfHwgaXNJblNoYWRvd1RyZWUoKSkpCisg
ICAgICAgICAgICBjb250YWluaW5nU2hhZG93Um9vdCgpLT53aWxsUmVtb3ZlQWxsQ2hpbGRyZW4o
KnRoaXMpOwogCi0gICAgZG9jdW1lbnQoKS5ub2RlQ2hpbGRyZW5XaWxsQmVSZW1vdmVkKCp0aGlz
KTsKKyAgICAgICAgZG9jdW1lbnQoKS5ub2RlQ2hpbGRyZW5XaWxsQmVSZW1vdmVkKCp0aGlzKTsK
IAotICAgIHdoaWxlIChSZWZQdHI8Tm9kZT4gY2hpbGQgPSBtX2ZpcnN0Q2hpbGQpIHsKLSAgICAg
ICAgcmVtb3ZlQmV0d2VlbihudWxscHRyLCBjaGlsZC0+bmV4dFNpYmxpbmcoKSwgKmNoaWxkKTsK
LSAgICAgICAgYXV0byBzdWJ0cmVlT2JzZXJ2YWJpbGl0eSA9IG5vdGlmeUNoaWxkTm9kZVJlbW92
ZWQoKnRoaXMsICpjaGlsZCk7Ci0gICAgICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNv
dXJjZTo6QVBJICYmIHN1YnRyZWVPYnNlcnZhYmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2
YWJpbGl0eTo6TWF5YmVPYnNlcnZhYmxlQnlSZWZQdHIpCi0gICAgICAgICAgICB3aWxsQ3JlYXRl
UG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoY2hpbGQuZ2V0KCkpOworICAgICAgICB3aGls
ZSAoUmVmUHRyPE5vZGU+IGNoaWxkID0gbV9maXJzdENoaWxkKSB7CisgICAgICAgICAgICByZW1v
dmVCZXR3ZWVuKG51bGxwdHIsIGNoaWxkLT5uZXh0U2libGluZygpLCAqY2hpbGQpOworICAgICAg
ICAgICAgYXV0byBzdWJ0cmVlT2JzZXJ2YWJpbGl0eSA9IG5vdGlmeUNoaWxkTm9kZVJlbW92ZWQo
KnRoaXMsICpjaGlsZCk7CisgICAgICAgICAgICBpZiAoc291cmNlID09IENoaWxkQ2hhbmdlOjpT
b3VyY2U6OkFQSSAmJiBzdWJ0cmVlT2JzZXJ2YWJpbGl0eSA9PSBSZW1vdmVkU3VidHJlZU9ic2Vy
dmFiaWxpdHk6Ok1heWJlT2JzZXJ2YWJsZUJ5UmVmUHRyKQorICAgICAgICAgICAgICAgIHdpbGxD
cmVhdGVQb3NzaWJseU9ycGhhbmVkVHJlZUJ5UmVtb3ZhbChjaGlsZC5nZXQoKSk7CisgICAgICAg
IH0KICAgICB9CiAKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZG9jdW1l
bnQoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc09ycGhhbigpKTsKIAogICAgIGlmIChkZWZl
ckNoaWxkcmVuQ2hhbmdlZCA9PSBEZWZlckNoaWxkcmVuQ2hhbmdlZDo6Tm8pCi0gICAgICAgIGNo
aWxkcmVuQ2hhbmdlZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSB7IENoaWxkQ2hhbmdlOjpU
eXBlOjpBbGxDaGlsZHJlblJlbW92ZWQsIG51bGxwdHIsIG51bGxwdHIsIHNvdXJjZSB9KTsKKyAg
ICAgICAgY2hpbGRyZW5DaGFuZ2VkKGNoaWxkQ2hhbmdlKTsKIAogICAgIHJldHVybiBjaGlsZHJl
bjsKIH0KIAorc3RhdGljIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlIG1ha2VDaGlsZENoYW5n
ZUZvclJlbW92YWwoTm9kZSYgY2hpbGRUb1JlbW92ZSwgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2U6OlNvdXJjZSBzb3VyY2UpCit7CisgICAgYXV0byBjaGFuZ2VUeXBlID0gWyZdIHsKKyAgICAg
ICAgaWYgKGlzPEVsZW1lbnQ+KGNoaWxkVG9SZW1vdmUpKQorICAgICAgICAgICAgcmV0dXJuIENv
bnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50UmVtb3ZlZDsKKyAgICAgICAg
aWYgKGlzPFRleHQ+KGNoaWxkVG9SZW1vdmUpKQorICAgICAgICAgICAgcmV0dXJuIENvbnRhaW5l
ck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0UmVtb3ZlZDsKKyAgICAgICAgcmV0dXJuIENv
bnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0NoaWxkUmVtb3ZlZDsK
KyAgICB9KCk7CisKKyAgICByZXR1cm4geworICAgICAgICBjaGFuZ2VUeXBlLAorICAgICAgICBF
bGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoY2hpbGRUb1JlbW92ZSksCisgICAgICAg
IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGNoaWxkVG9SZW1vdmUpLAorICAgICAgICBz
b3VyY2UKKyAgICB9OworfQorCiBBTFdBWVNfSU5MSU5FIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVt
b3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24oTm9kZSYgY2hpbGRUb1JlbW92ZSwgQ2hpbGRDaGFu
Z2U6OlNvdXJjZSBzb3VyY2UpCiB7CiAgICAgUmVmPE5vZGU+IHByb3RlY3RlZENoaWxkVG9SZW1v
dmUoY2hpbGRUb1JlbW92ZSk7CkBAIC0xNjIsMTEgKzE4NiwxMyBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24oTm9kZSYgY2hp
bGRUb1JlbQogICAgIGlmIChjaGlsZFRvUmVtb3ZlLnBhcmVudE5vZGUoKSAhPSB0aGlzKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDaGlsZENoYW5nZSBjaGFuZ2U7CisgICAgYXV0byBj
aGlsZENoYW5nZSA9IG1ha2VDaGlsZENoYW5nZUZvclJlbW92YWwoY2hpbGRUb1JlbW92ZSwgc291
cmNlKTsKKwogICAgIFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eSBzdWJ0cmVlT2JzZXJ2YWJp
bGl0eTsKICAgICB7CiAgICAgICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2Nv
cGUgc3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXM7CiAgICAgICAgIFNjcmlwdERpc2FsbG93
ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKKyAgICAgICAgU3R5
bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKCp0aGlzLCBjaGls
ZENoYW5nZSk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGlzU2hhZG93Um9vdCgpIHx8IGlzSW5T
aGFkb3dUcmVlKCkpKQogICAgICAgICAgICAgY29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+cmVzb2x2
ZVNsb3RzQmVmb3JlTm9kZUluc2VydGlvbk9yUmVtb3ZhbCgpOwpAQCAtMTc4LDE3ICsyMDQsOSBA
QCBBTFdBWVNfSU5MSU5FIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRB
c3NlcnRpb24oTm9kZSYgY2hpbGRUb1JlbQogCiAgICAgICAgIFJlZlB0cjxOb2RlPiBwcmV2aW91
c1NpYmxpbmcgPSBjaGlsZFRvUmVtb3ZlLnByZXZpb3VzU2libGluZygpOwogICAgICAgICBSZWZQ
dHI8Tm9kZT4gbmV4dFNpYmxpbmcgPSBjaGlsZFRvUmVtb3ZlLm5leHRTaWJsaW5nKCk7CisKICAg
ICAgICAgcmVtb3ZlQmV0d2VlbihwcmV2aW91c1NpYmxpbmcuZ2V0KCksIG5leHRTaWJsaW5nLmdl
dCgpLCBjaGlsZFRvUmVtb3ZlKTsKICAgICAgICAgc3VidHJlZU9ic2VydmFiaWxpdHkgPSBub3Rp
ZnlDaGlsZE5vZGVSZW1vdmVkKCp0aGlzLCBjaGlsZFRvUmVtb3ZlKTsKLQotICAgICAgICBjaGFu
Z2UudHlwZSA9IGlzPEVsZW1lbnQ+KGNoaWxkVG9SZW1vdmUpID8KLSAgICAgICAgICAgIENoaWxk
Q2hhbmdlOjpUeXBlOjpFbGVtZW50UmVtb3ZlZCA6Ci0gICAgICAgICAgICAoaXM8VGV4dD4oY2hp
bGRUb1JlbW92ZSkgPwotICAgICAgICAgICAgICAgIENoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0UmVt
b3ZlZCA6Ci0gICAgICAgICAgICAgICAgQ2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNvbnRlbnRzQ2hp
bGRSZW1vdmVkKTsKLSAgICAgICAgY2hhbmdlLnByZXZpb3VzU2libGluZ0VsZW1lbnQgPSAoIXBy
ZXZpb3VzU2libGluZyB8fCBpczxFbGVtZW50PigqcHJldmlvdXNTaWJsaW5nKSkgPyBkb3duY2Fz
dDxFbGVtZW50PihwcmV2aW91c1NpYmxpbmcuZ2V0KCkpIDogRWxlbWVudFRyYXZlcnNhbDo6cHJl
dmlvdXNTaWJsaW5nKCpwcmV2aW91c1NpYmxpbmcpOwotICAgICAgICBjaGFuZ2UubmV4dFNpYmxp
bmdFbGVtZW50ID0gKCFuZXh0U2libGluZyB8fCBpczxFbGVtZW50PigqbmV4dFNpYmxpbmcpKSA/
IGRvd25jYXN0PEVsZW1lbnQ+KG5leHRTaWJsaW5nLmdldCgpKSA6IEVsZW1lbnRUcmF2ZXJzYWw6
Om5leHRTaWJsaW5nKCpuZXh0U2libGluZyk7Ci0gICAgICAgIGNoYW5nZS5zb3VyY2UgPSBzb3Vy
Y2U7CiAgICAgfQogCiAgICAgaWYgKHNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpBUEkg
JiYgc3VidHJlZU9ic2VydmFiaWxpdHkgPT0gUmVtb3ZlZFN1YnRyZWVPYnNlcnZhYmlsaXR5OjpN
YXliZU9ic2VydmFibGVCeVJlZlB0cikKQEAgLTE5NywyMSArMjE1LDQ1IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVOb2RlV2l0aFNjcmlwdEFzc2VydGlvbihOb2Rl
JiBjaGlsZFRvUmVtCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3Vt
ZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNPcnBoYW4oKSk7CiAKICAgICAvLyBGSVhN
RTogTW92ZSBjaGlsZHJlbkNoYW5nZWQgaW50byBTY3JpcHREaXNhbGxvd2VkU2NvcGUgYmxvY2su
Ci0gICAgY2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CisgICAgY2hpbGRyZW5DaGFuZ2VkKGNoaWxk
Q2hhbmdlKTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCiBlbnVtIGNsYXNzIFJlcGxhY2VkQWxs
Q2hpbGRyZW4geyBObywgWWVzIH07CiAKK3N0YXRpYyBDb250YWluZXJOb2RlOjpDaGlsZENoYW5n
ZSBtYWtlQ2hpbGRDaGFuZ2VGb3JJbnNlcnRpb24oQ29udGFpbmVyTm9kZSYgY29udGFpbmVyTm9k
ZSwgTm9kZSYgY2hpbGQsIE5vZGUqIGJlZm9yZUNoaWxkLCBDb250YWluZXJOb2RlOjpDaGlsZENo
YW5nZTo6U291cmNlIHNvdXJjZSwgUmVwbGFjZWRBbGxDaGlsZHJlbiByZXBsYWNlZEFsbENoaWxk
cmVuKQoreworICAgIGlmIChyZXBsYWNlZEFsbENoaWxkcmVuID09IFJlcGxhY2VkQWxsQ2hpbGRy
ZW46OlllcykKKyAgICAgICAgcmV0dXJuIHsgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5
cGU6OkFsbENoaWxkcmVuUmVwbGFjZWQsIG51bGxwdHIsIG51bGxwdHIsIHNvdXJjZSB9OworCisg
ICAgYXV0byBjaGFuZ2VUeXBlID0gWyZdIHsKKyAgICAgICAgaWYgKGlzPEVsZW1lbnQ+KGNoaWxk
KSkKKyAgICAgICAgICAgIHJldHVybiBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6
RWxlbWVudEluc2VydGVkOworICAgICAgICBpZiAoaXM8VGV4dD4oY2hpbGQpKQorICAgICAgICAg
ICAgcmV0dXJuIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0SW5zZXJ0ZWQ7
CisgICAgICAgIHJldHVybiBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29u
dGVudHNDaGlsZEluc2VydGVkOworICAgIH0oKTsKKworICAgIHJldHVybiB7CisgICAgICAgIGNo
YW5nZVR5cGUsCisgICAgICAgIGJlZm9yZUNoaWxkID8gRWxlbWVudFRyYXZlcnNhbDo6cHJldmlv
dXNTaWJsaW5nKCpiZWZvcmVDaGlsZCkgOiBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQoY29u
dGFpbmVyTm9kZSksCisgICAgICAgICFiZWZvcmVDaGlsZCB8fCBpczxFbGVtZW50PigqYmVmb3Jl
Q2hpbGQpID8gZG93bmNhc3Q8RWxlbWVudD4oYmVmb3JlQ2hpbGQpIDogRWxlbWVudFRyYXZlcnNh
bDo6bmV4dFNpYmxpbmcoKmJlZm9yZUNoaWxkKSwKKyAgICAgICAgc291cmNlCisgICAgfTsKK30K
KwogdGVtcGxhdGU8dHlwZW5hbWUgRE9NSW5zZXJ0aW9uV29yaz4KLXN0YXRpYyBBTFdBWVNfSU5M
SU5FIHZvaWQgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKENvbnRhaW5l
ck5vZGUmIGNvbnRhaW5lck5vZGUsIE5vZGUmIGNoaWxkLAorc3RhdGljIEFMV0FZU19JTkxJTkUg
dm9pZCBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oQ29udGFpbmVyTm9k
ZSYgY29udGFpbmVyTm9kZSwgTm9kZSYgY2hpbGQsIE5vZGUqIGJlZm9yZUNoaWxkLAogICAgIENv
bnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNlLCBSZXBsYWNlZEFsbENoaWxk
cmVuIHJlcGxhY2VkQWxsQ2hpbGRyZW4sIERPTUluc2VydGlvbldvcmsgZG9Ob2RlSW5zZXJ0aW9u
KQogeworICAgIGF1dG8gY2hpbGRDaGFuZ2UgPSBtYWtlQ2hpbGRDaGFuZ2VGb3JJbnNlcnRpb24o
Y29udGFpbmVyTm9kZSwgY2hpbGQsIGJlZm9yZUNoaWxkLCBzb3VyY2UsIHJlcGxhY2VkQWxsQ2hp
bGRyZW4pOworCiAgICAgTm9kZVZlY3RvciBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0
czsKICAgICB7CiAgICAgICAgIFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUg
c3VzcGVuZFdpZGdldEhpZXJhcmNoeVVwZGF0ZXM7CiAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRT
Y29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKKyAgICAgICAgU3R5bGU6
OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uIHN0eWxlSW52YWxpZGF0aW9uKGNvbnRhaW5lck5vZGUs
IGNoaWxkQ2hhbmdlKTsKIAogICAgICAgICBpZiAoVU5MSUtFTFkoY29udGFpbmVyTm9kZS5pc1No
YWRvd1Jvb3QoKSB8fCBjb250YWluZXJOb2RlLmlzSW5TaGFkb3dUcmVlKCkpKQogICAgICAgICAg
ICAgY29udGFpbmVyTm9kZS5jb250YWluaW5nU2hhZG93Um9vdCgpLT5yZXNvbHZlU2xvdHNCZWZv
cmVOb2RlSW5zZXJ0aW9uT3JSZW1vdmFsKCk7CkBAIC0yMjIsMjAgKzI2NCw3IEBAIHN0YXRpYyBB
TFdBWVNfSU5MSU5FIHZvaWQgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9u
KENvbnRhaW5lck5vZGUmCiAgICAgfQogCiAgICAgLy8gRklYTUU6IE1vdmUgY2hpbGRyZW5DaGFu
Z2VkIGludG8gU2NyaXB0RGlzYWxsb3dlZFNjb3BlIGJsb2NrLgotICAgIGlmIChyZXBsYWNlZEFs
bENoaWxkcmVuID09IFJlcGxhY2VkQWxsQ2hpbGRyZW46OlllcykKLSAgICAgICAgY29udGFpbmVy
Tm9kZS5jaGlsZHJlbkNoYW5nZWQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgeyBDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6QWxsQ2hpbGRyZW5SZXBsYWNlZCwgbnVsbHB0ciwg
bnVsbHB0ciwgc291cmNlIH0pOwotICAgIGVsc2UgewotICAgICAgICBjb250YWluZXJOb2RlLmNo
aWxkcmVuQ2hhbmdlZChDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSB7Ci0gICAgICAgICAgICBj
aGlsZC5pc0VsZW1lbnROb2RlKCkgPwotICAgICAgICAgICAgICAgIENvbnRhaW5lck5vZGU6OkNo
aWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50SW5zZXJ0ZWQgOgotICAgICAgICAgICAgICAgIChjaGls
ZC5pc1RleHROb2RlKCkgPwotICAgICAgICAgICAgICAgICAgICBDb250YWluZXJOb2RlOjpDaGls
ZENoYW5nZTo6VHlwZTo6VGV4dEluc2VydGVkIDoKLSAgICAgICAgICAgICAgICAgICAgQ29udGFp
bmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRJbnNlcnRlZCksCi0g
ICAgICAgICAgICBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoY2hpbGQpLAotICAg
ICAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcoY2hpbGQpLAotICAgICAgICAg
ICAgc291cmNlCi0gICAgICAgIH0pOwotICAgIH0KKyAgICBjb250YWluZXJOb2RlLmNoaWxkcmVu
Q2hhbmdlZChjaGlsZENoYW5nZSk7CiAKICAgICBBU1NFUlQoU2NyaXB0RGlzYWxsb3dlZFNjb3Bl
OjpJbk1haW5UaHJlYWQ6OmlzRXZlbnREaXNwYXRjaEFsbG93ZWRJblN1YnRyZWUoY2hpbGQpKTsK
ICAgICBmb3IgKGF1dG8mIHRhcmdldCA6IHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRz
KQpAQCAtNDQ4LDcgKzQ3Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6Omlu
c2VydEJlZm9yZShOb2RlJiBuZXdDaGlsZCwgTm9kZSogcmVmQ2hpbGQpCiAgICAgICAgIGlmIChj
aGlsZC0+cGFyZW50Tm9kZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgZXhlY3V0
ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBjaGlsZC5nZXQoKSwgQ2hp
bGRDaGFuZ2U6OlNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpObywgWyZdIHsKKyAg
ICAgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBjaGls
ZC5nZXQoKSwgbmV4dC5wdHIoKSwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJLCBSZXBsYWNlZEFs
bENoaWxkcmVuOjpObywgWyZdIHsKICAgICAgICAgICAgIGNoaWxkLT5zZXRUcmVlU2NvcGVSZWN1
cnNpdmVseSh0cmVlU2NvcGUoKSk7CiAgICAgICAgICAgICBpbnNlcnRCZWZvcmVDb21tb24obmV4
dCwgY2hpbGQpOwogICAgICAgICB9KTsKQEAgLTUwNyw3ICs1MzYsNyBAQCB2b2lkIENvbnRhaW5l
ck5vZGU6OnBhcnNlckluc2VydEJlZm9yZShOb2RlJiBuZXdDaGlsZCwgTm9kZSYgbmV4dENoaWxk
KQogICAgIGlmIChuZXh0Q2hpbGQucHJldmlvdXNTaWJsaW5nKCkgPT0gJm5ld0NoaWxkIHx8ICZu
ZXh0Q2hpbGQgPT0gJm5ld0NoaWxkKSAvLyBub3RoaW5nIHRvIGRvCiAgICAgICAgIHJldHVybjsK
IAotICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgbmV3
Q2hpbGQsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6
Tm8sIFsmXSB7CisgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0
aGlzLCBuZXdDaGlsZCwgJm5leHRDaGlsZCwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyLCBS
ZXBsYWNlZEFsbENoaWxkcmVuOjpObywgWyZdIHsKICAgICAgICAgaWYgKCZkb2N1bWVudCgpICE9
ICZuZXdDaGlsZC5kb2N1bWVudCgpKQogICAgICAgICAgICAgZG9jdW1lbnQoKS5hZG9wdE5vZGUo
bmV3Q2hpbGQpOwogCkBAIC01ODEsNyArNjEwLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFp
bmVyTm9kZTo6cmVwbGFjZUNoaWxkKE5vZGUmIG5ld0NoaWxkLCBOb2RlJiBvbGRDaGlsZCkKICAg
ICAgICAgaWYgKGNoaWxkLT5wYXJlbnROb2RlKCkpCiAgICAgICAgICAgICBicmVhazsKIAotICAg
ICAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIGNoaWxk
LmdldCgpLCBDaGlsZENoYW5nZTo6U291cmNlOjpBUEksIFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5v
LCBbJl0geworICAgICAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24o
KnRoaXMsIGNoaWxkLmdldCgpLCByZWZDaGlsZC5nZXQoKSwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6
QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpObywgWyZdIHsKICAgICAgICAgICAgIGNoaWxkLT5z
ZXRUcmVlU2NvcGVSZWN1cnNpdmVseSh0cmVlU2NvcGUoKSk7CiAgICAgICAgICAgICBpZiAocmVm
Q2hpbGQpCiAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKCpyZWZDaGlsZCwgY2hp
bGQuZ2V0KCkpOwpAQCAtNjgyLDcgKzcxMSw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVwbGFj
ZUFsbChOb2RlKiBub2RlKQogICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24oKnRo
aXMpOwogICAgIHJlbW92ZUFsbENoaWxkcmVuV2l0aFNjcmlwdEFzc2VydGlvbihDaGlsZENoYW5n
ZTo6U291cmNlOjpBUEksIERlZmVyQ2hpbGRyZW5DaGFuZ2VkOjpZZXMpOwogCi0gICAgZXhlY3V0
ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCAqbm9kZSwgQ2hpbGRDaGFu
Z2U6OlNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpZZXMsIFsmXSB7CisgICAgZXhl
Y3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCAqbm9kZSwgbnVsbHB0
ciwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpZZXMsIFsm
XSB7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGUo
ZG9jdW1lbnQoKSwgKnRoaXMpOwogICAgICAgICBub2RlLT5zZXRUcmVlU2NvcGVSZWN1cnNpdmVs
eSh0cmVlU2NvcGUoKSk7CiAgICAgICAgIGFwcGVuZENoaWxkQ29tbW9uKCpub2RlKTsKQEAgLTc2
Myw3ICs3OTIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjphcHBlbmRDaGls
ZFdpdGhvdXRQcmVJbnNlcnRpb25WYWxpZGl0eUNoZWNrKE5vZAogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgLy8gQXBwZW5kIGNoaWxkIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QKLSAgICAg
ICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBjaGlsZC5n
ZXQoKSwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpObywg
WyZdIHsKKyAgICAgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0
aGlzLCBjaGlsZC5nZXQoKSwgbnVsbHB0ciwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJLCBSZXBs
YWNlZEFsbENoaWxkcmVuOjpObywgWyZdIHsKICAgICAgICAgICAgIGNoaWxkLT5zZXRUcmVlU2Nv
cGVSZWN1cnNpdmVseSh0cmVlU2NvcGUoKSk7CiAgICAgICAgICAgICBhcHBlbmRDaGlsZENvbW1v
bihjaGlsZCk7CiAgICAgICAgIH0pOwpAQCAtNzc5LDcgKzgwOCw3IEBAIHZvaWQgQ29udGFpbmVy
Tm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQoTm9kZSYgbmV3Q2hpbGQpCiAgICAgQVNTRVJUKCFuZXdD
aGlsZC5pc0RvY3VtZW50RnJhZ21lbnQoKSk7CiAgICAgQVNTRVJUKCFoYXNUYWdOYW1lKEhUTUxO
YW1lczo6dGVtcGxhdGVUYWcpKTsKIAotICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlw
dEFzc2VydGlvbigqdGhpcywgbmV3Q2hpbGQsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwg
UmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CisgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25X
aXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBuZXdDaGlsZCwgbnVsbHB0ciwgQ2hpbGRDaGFuZ2U6
OlNvdXJjZTo6UGFyc2VyLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpObywgWyZdIHsKICAgICAgICAg
aWYgKCZkb2N1bWVudCgpICE9ICZuZXdDaGlsZC5kb2N1bWVudCgpKQogICAgICAgICAgICAgZG9j
dW1lbnQoKS5hZG9wdE5vZGUobmV3Q2hpbGQpOwogCkBAIC04MTIsNiArODQxLDggQEAgc3RhdGlj
IGJvb2wgYWZmZWN0c0VsZW1lbnRzKGNvbnN0IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlJiBj
aGFuZ2UpCiAgICAgY2FzZSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29u
dGVudHNDaGlsZEluc2VydGVkOgogICAgIGNhc2UgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6
OlR5cGU6Ok5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkOgogICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgY2FzZSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6RmluaXNoZWRQYXJzaW5n
Q2hpbGRyZW46CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuaAppbmRleCAz
ZmIxOWM1OTY1ZjQ1ZTZkYjY3YjkxNjBiZjRkOTA3MWY1OGUxNzk4Li5lNDc0NjgzOTE4Y2MwNTEw
OWNiMzdlMDY1YmVkNjE0MGNkYTA3ZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgK
QEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xvbmVDaGlsZE5vZGVzKENvbnRh
aW5lck5vZGUmIGNsb25lKTsKIAogICAgIHN0cnVjdCBDaGlsZENoYW5nZSB7Ci0gICAgICAgIGVu
dW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBFbGVtZW50SW5zZXJ0ZWQsIEVsZW1lbnRSZW1vdmVk
LCBUZXh0SW5zZXJ0ZWQsIFRleHRSZW1vdmVkLCBUZXh0Q2hhbmdlZCwgQWxsQ2hpbGRyZW5SZW1v
dmVkLCBOb25Db250ZW50c0NoaWxkUmVtb3ZlZCwgTm9uQ29udGVudHNDaGlsZEluc2VydGVkLCBB
bGxDaGlsZHJlblJlcGxhY2VkIH07CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3Qg
eyBFbGVtZW50SW5zZXJ0ZWQsIEVsZW1lbnRSZW1vdmVkLCBUZXh0SW5zZXJ0ZWQsIFRleHRSZW1v
dmVkLCBUZXh0Q2hhbmdlZCwgQWxsQ2hpbGRyZW5SZW1vdmVkLCBOb25Db250ZW50c0NoaWxkUmVt
b3ZlZCwgTm9uQ29udGVudHNDaGlsZEluc2VydGVkLCBBbGxDaGlsZHJlblJlcGxhY2VkLCBGaW5p
c2hlZFBhcnNpbmdDaGlsZHJlbiB9OwogICAgICAgICBlbnVtIGNsYXNzIFNvdXJjZSA6IGJvb2wg
eyBQYXJzZXIsIEFQSSB9OwogCiAgICAgICAgIENoaWxkQ2hhbmdlOjpUeXBlIHR5cGU7CkBAIC05
Niw2ICs5Niw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6
OkFsbENoaWxkcmVuUmVtb3ZlZDoKICAgICAgICAgICAgIGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6
Ok5vbkNvbnRlbnRzQ2hpbGRSZW1vdmVkOgogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6OkZpbmlzaGVkUGFyc2luZ0NoaWxk
cmVuOgorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKaW5kZXggNWQ3YjFiZTI2MTY0MGNmMTQxMGVjYTNlYzkxNzNhNDA4OWFmZDE4
ZC4uYzE2ZTVhNzJkYzRmY2I3OTgyMWEzMWZjOWE1NDc0OTRjODE0NTAzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkF0dHIuaCIKICNpbmNsdWRl
ICJBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIK
KyNpbmNsdWRlICJDaGlsZENoYW5nZUludmFsaWRhdGlvbi5oIgogI2luY2x1ZGUgIkNocm9tZS5o
IgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uLmgiCkBAIC0yMDM4LDcgKzIwMzksNyBAQCBTdHlsZTo6RWxlbWVudFN0eWxlIEVsZW1l
bnQ6OnJlc29sdmVTdHlsZShjb25zdCBTdHlsZTo6UmVzb2x1dGlvbkNvbnRleHQmIHJlc29sdQog
ICAgIHJldHVybiBzdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KCp0aGlzLCByZXNvbHV0
aW9uQ29udGV4dCk7CiB9CiAKLXN0YXRpYyB2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmlu
YXRvcnMoRWxlbWVudCogc2libGluZykKK3ZvaWQgaW52YWxpZGF0ZUZvclNpYmxpbmdDb21iaW5h
dG9ycyhFbGVtZW50KiBzaWJsaW5nKQogewogICAgIGZvciAoOyBzaWJsaW5nOyBzaWJsaW5nID0g
c2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKHNpYmxpbmctPnN0
eWxlSXNBZmZlY3RlZEJ5UHJldmlvdXNTaWJsaW5nKCkpCkBAIC0yNjQyLDEyNCArMjY0MywxMSBA
QCBib29sIEVsZW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUgdHlwZSkgY29uc3QKICAg
ICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQotCi1zdGF0aWMgdm9pZCBjaGVja0ZvckVtcHR5U3R5
bGVDaGFuZ2UoRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICBpZiAoZWxlbWVudC5zdHlsZUFmZmVj
dGVkQnlFbXB0eSgpKSB7Ci0gICAgICAgIGF1dG8qIHN0eWxlID0gZWxlbWVudC5yZW5kZXJTdHls
ZSgpOwotICAgICAgICBpZiAoIXN0eWxlIHx8ICghc3R5bGUtPmVtcHR5U3RhdGUoKSB8fCBlbGVt
ZW50Lmhhc0NoaWxkTm9kZXMoKSkpCi0gICAgICAgICAgICBlbGVtZW50LmludmFsaWRhdGVTdHls
ZUZvclN1YnRyZWUoKTsKLSAgICB9Ci19Ci0KLQotc3RhdGljIHZvaWQgaW52YWxpZGF0ZUZvckZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoRWxlbWVudCYgcGFyZW50LCBFbGVtZW50KiBlbGVtZW50QWZ0
ZXJDaGFuZ2UpCi17Ci0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkID0gcGFyZW50LmNoaWxkcmVu
QWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLSAgICBib29sIGRlc2NlbmRhbnRz
QWZmZWN0ZWQgPSBwYXJlbnQuZGVzY2VuZGFudHNBZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxS
dWxlcygpOwotCi0gICAgaWYgKCFjaGlsZHJlbkFmZmVjdGVkICYmICFkZXNjZW5kYW50c0FmZmVj
dGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8qIHNpYmxpbmcgPSBlbGVtZW50
QWZ0ZXJDaGFuZ2U7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxp
bmcoKSkgewotICAgICAgICBpZiAoY2hpbGRyZW5BZmZlY3RlZCkKLSAgICAgICAgICAgIHNpYmxp
bmctPmludmFsaWRhdGVTdHlsZUludGVybmFsKCk7Ci0gICAgICAgIGlmIChkZXNjZW5kYW50c0Fm
ZmVjdGVkKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8qIHNpYmxpbmdDaGlsZCA9IHNpYmxpbmct
PmZpcnN0RWxlbWVudENoaWxkKCk7IHNpYmxpbmdDaGlsZDsgc2libGluZ0NoaWxkID0gc2libGlu
Z0NoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKLSAgICAgICAgICAgICAgICBzaWJsaW5nQ2hp
bGQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOwotICAgICAgICB9Ci0gICAg
fQotfQotCi1zdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9yQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMo
RWxlbWVudCYgcGFyZW50LCBFbGVtZW50KiBlbGVtZW50QmVmb3JlQ2hhbmdlKQotewotICAgIGJv
b2wgY2hpbGRyZW5BZmZlY3RlZCA9IHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBv
c2l0aW9uYWxSdWxlcygpOwotICAgIGJvb2wgZGVzY2VuZGFudHNBZmZlY3RlZCA9IHBhcmVudC5k
ZXNjZW5kYW50c0FmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwotCi0gICAgaWYg
KCFjaGlsZHJlbkFmZmVjdGVkICYmICFkZXNjZW5kYW50c0FmZmVjdGVkKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBmb3IgKGF1dG8qIHNpYmxpbmcgPSBlbGVtZW50QmVmb3JlQ2hhbmdlOyBzaWJs
aW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7Ci0gICAg
ICAgIGlmIChjaGlsZHJlbkFmZmVjdGVkKQotICAgICAgICAgICAgc2libGluZy0+aW52YWxpZGF0
ZVN0eWxlSW50ZXJuYWwoKTsKLSAgICAgICAgaWYgKGRlc2NlbmRhbnRzQWZmZWN0ZWQpIHsKLSAg
ICAgICAgICAgIGZvciAoYXV0byogc2libGluZ0NoaWxkID0gc2libGluZy0+Zmlyc3RFbGVtZW50
Q2hpbGQoKTsgc2libGluZ0NoaWxkOyBzaWJsaW5nQ2hpbGQgPSBzaWJsaW5nQ2hpbGQtPm5leHRF
bGVtZW50U2libGluZygpKQotICAgICAgICAgICAgICAgIHNpYmxpbmdDaGlsZC0+aW52YWxpZGF0
ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWVudW0g
U2libGluZ0NoZWNrVHlwZSB7IEZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuLCBTaWJsaW5nRWxlbWVu
dFJlbW92ZWQsIE90aGVyIH07Ci0KLXN0YXRpYyB2b2lkIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hh
bmdlcyhFbGVtZW50JiBwYXJlbnQsIFNpYmxpbmdDaGVja1R5cGUgY2hlY2tUeXBlLCBFbGVtZW50
KiBlbGVtZW50QmVmb3JlQ2hhbmdlLCBFbGVtZW50KiBlbGVtZW50QWZ0ZXJDaGFuZ2UpCi17Ci0g
ICAgLy8gOmVtcHR5IHNlbGVjdG9yLgotICAgIGNoZWNrRm9yRW1wdHlTdHlsZUNoYW5nZShwYXJl
bnQpOwotCi0gICAgaWYgKHBhcmVudC5zdHlsZVZhbGlkaXR5KCkgPj0gU3R5bGU6OlZhbGlkaXR5
OjpTdWJ0cmVlSW52YWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gOmZpcnN0LWNoaWxk
LiAgSW4gdGhlIHBhcnNlciBjYWxsYmFjayBjYXNlLCB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrIGFu
eXRoaW5nLCBzaW5jZSB3ZSB3ZXJlIHJpZ2h0IHRoZSBmaXJzdCB0aW1lLgotICAgIC8vIEluIHRo
ZSBET00gY2FzZSwgd2Ugb25seSBuZWVkIHRvIGRvIHNvbWV0aGluZyBpZiB8YWZ0ZXJDaGFuZ2V8
IGlzIG5vdCAwLgotICAgIC8vIHxhZnRlckNoYW5nZXwgaXMgMCBpbiB0aGUgcGFyc2VyIGNhc2Us
IHNvIGl0IHdvcmtzIG91dCB0aGF0IHdlJ2xsIHNraXAgdGhpcyBibG9jay4KLSAgICBpZiAocGFy
ZW50LmNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcygpICYmIGVsZW1lbnRBZnRlckNo
YW5nZSkgewotICAgICAgICAvLyBGaW5kIG91ciBuZXcgZmlyc3QgY2hpbGQuCi0gICAgICAgIFJl
ZlB0cjxFbGVtZW50PiBuZXdGaXJzdEVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdENo
aWxkKHBhcmVudCk7Ci0gICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IGVsZW1lbnQgbm9kZSBmb2xs
b3dpbmcgfGFmdGVyQ2hhbmdlfAotCi0gICAgICAgIC8vIFRoaXMgaXMgdGhlIGluc2VydC9hcHBl
bmQgY2FzZS4KLSAgICAgICAgaWYgKG5ld0ZpcnN0RWxlbWVudCAhPSBlbGVtZW50QWZ0ZXJDaGFu
Z2UpIHsKLSAgICAgICAgICAgIGF1dG8qIHN0eWxlID0gZWxlbWVudEFmdGVyQ2hhbmdlLT5yZW5k
ZXJTdHlsZSgpOwotICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCBzdHlsZS0+Zmlyc3RDaGlsZFN0
YXRlKCkpCi0gICAgICAgICAgICAgICAgZWxlbWVudEFmdGVyQ2hhbmdlLT5pbnZhbGlkYXRlU3R5
bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFdlIGFsc28g
aGF2ZSB0byBoYW5kbGUgbm9kZSByZW1vdmFsLgotICAgICAgICBpZiAoY2hlY2tUeXBlID09IFNp
YmxpbmdFbGVtZW50UmVtb3ZlZCAmJiBuZXdGaXJzdEVsZW1lbnQgPT0gZWxlbWVudEFmdGVyQ2hh
bmdlICYmIG5ld0ZpcnN0RWxlbWVudCkgewotICAgICAgICAgICAgYXV0byogc3R5bGUgPSBuZXdG
aXJzdEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICBpZiAoIXN0eWxlIHx8ICFz
dHlsZS0+Zmlyc3RDaGlsZFN0YXRlKCkpCi0gICAgICAgICAgICAgICAgbmV3Rmlyc3RFbGVtZW50
LT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIC8vIDpsYXN0LWNoaWxkLiAgSW4gdGhlIHBhcnNlciBjYWxsYmFjayBjYXNlLCB3ZSBk
b24ndCBoYXZlIHRvIGNoZWNrIGFueXRoaW5nLCBzaW5jZSB3ZSB3ZXJlIHJpZ2h0IHRoZSBmaXJz
dCB0aW1lLgotICAgIC8vIEluIHRoZSBET00gY2FzZSwgd2Ugb25seSBuZWVkIHRvIGRvIHNvbWV0
aGluZyBpZiB8YWZ0ZXJDaGFuZ2V8IGlzIG5vdCAwLgotICAgIGlmIChwYXJlbnQuY2hpbGRyZW5B
ZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSAmJiBlbGVtZW50QmVmb3JlQ2hhbmdlKSB7Ci0gICAg
ICAgIC8vIEZpbmQgb3VyIG5ldyBsYXN0IGNoaWxkLgotICAgICAgICBSZWZQdHI8RWxlbWVudD4g
bmV3TGFzdEVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQocGFyZW50KTsKLQot
ICAgICAgICBpZiAobmV3TGFzdEVsZW1lbnQgIT0gZWxlbWVudEJlZm9yZUNoYW5nZSkgewotICAg
ICAgICAgICAgYXV0byogc3R5bGUgPSBlbGVtZW50QmVmb3JlQ2hhbmdlLT5yZW5kZXJTdHlsZSgp
OwotICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCBzdHlsZS0+bGFzdENoaWxkU3RhdGUoKSkKLSAg
ICAgICAgICAgICAgICBlbGVtZW50QmVmb3JlQ2hhbmdlLT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0
cmVlSW50ZXJuYWwoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFdlIGFsc28gaGF2ZSB0byBo
YW5kbGUgbm9kZSByZW1vdmFsLiAgVGhlIHBhcnNlciBjYWxsYmFjayBjYXNlIGlzIHNpbWlsYXIg
dG8gbm9kZSByZW1vdmFsIGFzIHdlbGwgaW4gdGhhdCB3ZSBuZWVkIHRvIGNoYW5nZSB0aGUgbGFz
dCBjaGlsZAotICAgICAgICAvLyB0byBtYXRjaCBub3cuCi0gICAgICAgIGlmICgoY2hlY2tUeXBl
ID09IFNpYmxpbmdFbGVtZW50UmVtb3ZlZCB8fCBjaGVja1R5cGUgPT0gRmluaXNoZWRQYXJzaW5n
Q2hpbGRyZW4pICYmIG5ld0xhc3RFbGVtZW50ID09IGVsZW1lbnRCZWZvcmVDaGFuZ2UgJiYgbmV3
TGFzdEVsZW1lbnQpIHsKLSAgICAgICAgICAgIGF1dG8qIHN0eWxlID0gbmV3TGFzdEVsZW1lbnQt
PnJlbmRlclN0eWxlKCk7Ci0gICAgICAgICAgICBpZiAoIXN0eWxlIHx8ICFzdHlsZS0+bGFzdENo
aWxkU3RhdGUoKSkKLSAgICAgICAgICAgICAgICBuZXdMYXN0RWxlbWVudC0+aW52YWxpZGF0ZVN0
eWxlRm9yU3VidHJlZUludGVybmFsKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpbnZhbGlk
YXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKGVsZW1lbnRBZnRlckNoYW5nZSk7Ci0KLSAgICBpbnZh
bGlkYXRlRm9yRm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhwYXJlbnQsIGVsZW1lbnRBZnRlckNoYW5n
ZSk7Ci0gICAgaW52YWxpZGF0ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKHBhcmVudCwgZWxl
bWVudEJlZm9yZUNoYW5nZSk7Ci19Ci0KIHZvaWQgRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNv
bnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiB7CiAgICAgQ29udGFpbmVyTm9kZTo6Y2hpbGRyZW5D
aGFuZ2VkKGNoYW5nZSk7Ci0gICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNv
dXJjZTo6UGFyc2VyKQotICAgICAgICBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UoKnRoaXMpOwot
ICAgIGVsc2UgewotICAgICAgICBhdXRvIGNoZWNrVHlwZSA9IGNoYW5nZS50eXBlID09IENoaWxk
Q2hhbmdlOjpUeXBlOjpFbGVtZW50UmVtb3ZlZCA/IFNpYmxpbmdFbGVtZW50UmVtb3ZlZCA6IE90
aGVyOwotICAgICAgICBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoKnRoaXMsIGNoZWNrVHlw
ZSwgY2hhbmdlLnByZXZpb3VzU2libGluZ0VsZW1lbnQsIGNoYW5nZS5uZXh0U2libGluZ0VsZW1l
bnQpOwotICAgIH0KIAotICAgIGlmIChTaGFkb3dSb290KiBzaGFkb3dSb290ID0gdGhpcy0+c2hh
ZG93Um9vdCgpKSB7CisgICAgaWYgKGF1dG8qIHNoYWRvd1Jvb3QgPSB0aGlzLT5zaGFkb3dSb290
KCkpIHsKICAgICAgICAgc3dpdGNoIChjaGFuZ2UudHlwZSkgewogICAgICAgICBjYXNlIENoaWxk
Q2hhbmdlOjpUeXBlOjpFbGVtZW50SW5zZXJ0ZWQ6CiAgICAgICAgIGNhc2UgQ2hpbGRDaGFuZ2U6
OlR5cGU6OkVsZW1lbnRSZW1vdmVkOgpAQCAtMjc3Niw2ICsyNjY0LDcgQEAgdm9pZCBFbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0NoaWxk
SW5zZXJ0ZWQ6CiAgICAgICAgIGNhc2UgQ2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNvbnRlbnRzQ2hp
bGRSZW1vdmVkOgorICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpGaW5pc2hlZFBhcnNp
bmdDaGlsZHJlbjoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtMjgw
Miw3ICsyNjkxLDEzIEBAIHZvaWQgRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKIHsK
ICAgICBDb250YWluZXJOb2RlOjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKICAgICBzZXRJc1Bh
cnNpbmdDaGlsZHJlbkZpbmlzaGVkKCk7Ci0gICAgY2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2Vz
KCp0aGlzLCBGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbiwgRWxlbWVudFRyYXZlcnNhbDo6bGFzdENo
aWxkKCp0aGlzKSwgbnVsbHB0cik7CisKKyAgICBTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRp
b24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIHsKKyAgICAgICAgQ2hpbGRDaGFuZ2U6OlR5cGU6
OkZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuLAorICAgICAgICBFbGVtZW50VHJhdmVyc2FsOjpsYXN0
Q2hpbGQoKnRoaXMpLAorICAgICAgICBudWxscHRyLAorICAgICAgICBDaGlsZENoYW5nZTo6U291
cmNlOjpQYXJzZXIKKyAgICB9KTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kQXR0cmlidXRlcyhT
dHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKaW5kZXggMDRjZTY1ZGU2ZTg3MmNmMDkzZDJjY2FmMGRmMThhYjk2ZTdhNGU4Mi4uZWY3
Y2U4OTk4ZGUwM2YyMGY0MjBmMDk1YzM4MTdkZDA1MTQzMWVjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CkBAIC03NjMsNiArNzYzLDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RWxlbWVudERhdGE+IG1f
ZWxlbWVudERhdGE7CiB9OwogCit2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMo
RWxlbWVudCogc2libGluZyk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuY3BwCmluZGV4IDUzZjIzOWJiYWY2YjNmMjQ5MjUyZjAyNjM4NWExZWRmMDk4YzI2NTIuLjkx
YzI2ZjE0ZDliZDAyYjNmZmYxZjYwMmIwZDljM2Q5ZDhmMTllMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAKQEAgLTE0NCw2ICsxNDQsOSBAQCB2b2lkIFNoYWRvd1Jvb3Q6OmNoaWxkcmVu
Q2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hpbGRDaGFuZ2UpCiAgICAgY2FzZSBDaGlsZENo
YW5nZTo6VHlwZTo6Tm9uQ29udGVudHNDaGlsZEluc2VydGVkOgogICAgIGNhc2UgQ2hpbGRDaGFu
Z2U6OlR5cGU6OkFsbENoaWxkcmVuUmVwbGFjZWQ6CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q2hpbGRDaGFuZ2U6OlR5cGU6OkZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuOgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGQ3MTk0NmY2ZDFiMzg3ZDRkNTRhYTQ3YzBmYjUzYmIzNWJiN2RkNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcApAQCAt
MCwwICsxLDE3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDaGlsZENoYW5nZUludmFsaWRhdGlvbi5oIgorCisjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxl
LmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlNsb3RBc3NpZ25tZW50Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlOjpTdHlsZSB7CisKK0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9u
OjpDaGlsZENoYW5nZUludmFsaWRhdGlvbihDb250YWluZXJOb2RlJiBjb250YWluZXIsIGNvbnN0
IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlJiBjaGlsZENoYW5nZSkKKyAgICA6IG1fcGFyZW50
RWxlbWVudChpczxFbGVtZW50Pihjb250YWluZXIpID8gZG93bmNhc3Q8RWxlbWVudD4oJmNvbnRh
aW5lcikgOiBudWxscHRyKQorICAgICwgbV9pc0VuYWJsZWQobV9wYXJlbnRFbGVtZW50ID8gbV9w
YXJlbnRFbGVtZW50LT5uZWVkc1N0eWxlSW52YWxpZGF0aW9uKCkgOiBmYWxzZSkKKyAgICAsIG1f
Y2hpbGRDaGFuZ2UoY2hpbGRDaGFuZ2UpCit7CisgICAgLy8gRklYTUU6IERvIHNtYXJ0ZXIgaW52
YWxpZGF0aW9uIHNpbWlsYXQgdG8gQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uCit9CisKK0NoaWxk
Q2hhbmdlSW52YWxpZGF0aW9uOjp+Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24oKQoreworICAgIGlm
ICghbV9pc0VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGludmFsaWRhdGVBZnRlckNo
YW5nZSgpOworfQorCit2b2lkIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlQWZ0
ZXJDaGFuZ2UoKQoreworICAgIGNoZWNrRm9yRW1wdHlTdHlsZUNoYW5nZSgpOworCisgICAgaWYg
KG1fY2hpbGRDaGFuZ2UudHlwZSA9PSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6
RmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4pIHsKKyAgICAgICAgY2hlY2tGb3JTaWJsaW5nU3R5bGVD
aGFuZ2VzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9jaGlsZENoYW5n
ZS5zb3VyY2UgPT0gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoKTsKK30K
Kwordm9pZCBDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6Y2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdl
KCkKK3sKKyAgICBhdXRvJiBlbGVtZW50ID0gcGFyZW50RWxlbWVudCgpOworICAgIGlmICghZWxl
bWVudC5zdHlsZUFmZmVjdGVkQnlFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
KiBzdHlsZSA9IGVsZW1lbnQucmVuZGVyU3R5bGUoKTsKKyAgICBpZiAoIXN0eWxlIHx8ICghc3R5
bGUtPmVtcHR5U3RhdGUoKSB8fCBlbGVtZW50Lmhhc0NoaWxkTm9kZXMoKSkpCisgICAgICAgIGVs
ZW1lbnQuaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOworfQorCitzdGF0aWMgdm9pZCBpbnZh
bGlkYXRlRm9yRm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhFbGVtZW50JiBwYXJlbnQsIEVsZW1lbnQq
IGVsZW1lbnRBZnRlckNoYW5nZSkKK3sKKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWQgPSBwYXJl
bnQuY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpOworICAgIGJvb2wg
ZGVzY2VuZGFudHNBZmZlY3RlZCA9IHBhcmVudC5kZXNjZW5kYW50c0FmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7CisKKyAgICBpZiAoIWNoaWxkcmVuQWZmZWN0ZWQgJiYgIWRlc2Nl
bmRhbnRzQWZmZWN0ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byogc2libGlu
ZyA9IGVsZW1lbnRBZnRlckNoYW5nZTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRF
bGVtZW50U2libGluZygpKSB7CisgICAgICAgIGlmIChjaGlsZHJlbkFmZmVjdGVkKQorICAgICAg
ICAgICAgc2libGluZy0+aW52YWxpZGF0ZVN0eWxlSW50ZXJuYWwoKTsKKyAgICAgICAgaWYgKGRl
c2NlbmRhbnRzQWZmZWN0ZWQpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byogc2libGluZ0NoaWxk
ID0gc2libGluZy0+Zmlyc3RFbGVtZW50Q2hpbGQoKTsgc2libGluZ0NoaWxkOyBzaWJsaW5nQ2hp
bGQgPSBzaWJsaW5nQ2hpbGQtPm5leHRFbGVtZW50U2libGluZygpKQorICAgICAgICAgICAgICAg
IHNpYmxpbmdDaGlsZC0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGludmFsaWRhdGVGb3JCYWNrd2FyZFBvc2l0
aW9uYWxSdWxlcyhFbGVtZW50JiBwYXJlbnQsIEVsZW1lbnQqIGVsZW1lbnRCZWZvcmVDaGFuZ2Up
Cit7CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkID0gcGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CisgICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVk
ID0gcGFyZW50LmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7
CisKKyAgICBpZiAoIWNoaWxkcmVuQWZmZWN0ZWQgJiYgIWRlc2NlbmRhbnRzQWZmZWN0ZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byogc2libGluZyA9IGVsZW1lbnRCZWZvcmVD
aGFuZ2U7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5n
KCkpIHsKKyAgICAgICAgaWYgKGNoaWxkcmVuQWZmZWN0ZWQpCisgICAgICAgICAgICBzaWJsaW5n
LT5pbnZhbGlkYXRlU3R5bGVJbnRlcm5hbCgpOworICAgICAgICBpZiAoZGVzY2VuZGFudHNBZmZl
Y3RlZCkgeworICAgICAgICAgICAgZm9yIChhdXRvKiBzaWJsaW5nQ2hpbGQgPSBzaWJsaW5nLT5m
aXJzdEVsZW1lbnRDaGlsZCgpOyBzaWJsaW5nQ2hpbGQ7IHNpYmxpbmdDaGlsZCA9IHNpYmxpbmdD
aGlsZC0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpCisgICAgICAgICAgICAgICAgc2libGluZ0NoaWxk
LT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCBDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6Y2hlY2tGb3JTaWJsaW5nU3R5bGVD
aGFuZ2VzKCkKK3sKKyAgICBhdXRvJiBwYXJlbnQgPSBwYXJlbnRFbGVtZW50KCk7CisgICAgYXV0
byogZWxlbWVudEJlZm9yZUNoYW5nZSA9IG1fY2hpbGRDaGFuZ2UucHJldmlvdXNTaWJsaW5nRWxl
bWVudDsKKyAgICBhdXRvKiBlbGVtZW50QWZ0ZXJDaGFuZ2UgPSBtX2NoaWxkQ2hhbmdlLm5leHRT
aWJsaW5nRWxlbWVudDsKKworICAgIC8vIDpmaXJzdC1jaGlsZC4gSW4gdGhlIHBhcnNlciBjYWxs
YmFjayBjYXNlLCB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrIGFueXRoaW5nLCBzaW5jZSB3ZSB3ZXJl
IHJpZ2h0IHRoZSBmaXJzdCB0aW1lLgorICAgIC8vIEluIHRoZSBET00gY2FzZSwgd2Ugb25seSBu
ZWVkIHRvIGRvIHNvbWV0aGluZyBpZiB8YWZ0ZXJDaGFuZ2V8IGlzIG5vdCAwLgorICAgIC8vIHxh
ZnRlckNoYW5nZXwgaXMgMCBpbiB0aGUgcGFyc2VyIGNhc2UsIHNvIGl0IHdvcmtzIG91dCB0aGF0
IHdlJ2xsIHNraXAgdGhpcyBibG9jay4KKyAgICBpZiAocGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRC
eUZpcnN0Q2hpbGRSdWxlcygpICYmIGVsZW1lbnRBZnRlckNoYW5nZSkgeworICAgICAgICAvLyBG
aW5kIG91ciBuZXcgZmlyc3QgY2hpbGQuCisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBuZXdGaXJz
dEVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdENoaWxkKHBhcmVudCk7CisgICAgICAg
IC8vIEZpbmQgdGhlIGZpcnN0IGVsZW1lbnQgbm9kZSBmb2xsb3dpbmcgfGFmdGVyQ2hhbmdlfAor
CisgICAgICAgIC8vIFRoaXMgaXMgdGhlIGluc2VydC9hcHBlbmQgY2FzZS4KKyAgICAgICAgaWYg
KG5ld0ZpcnN0RWxlbWVudCAhPSBlbGVtZW50QWZ0ZXJDaGFuZ2UpIHsKKyAgICAgICAgICAgIGF1
dG8qIHN0eWxlID0gZWxlbWVudEFmdGVyQ2hhbmdlLT5yZW5kZXJTdHlsZSgpOworICAgICAgICAg
ICAgaWYgKCFzdHlsZSB8fCBzdHlsZS0+Zmlyc3RDaGlsZFN0YXRlKCkpCisgICAgICAgICAgICAg
ICAgZWxlbWVudEFmdGVyQ2hhbmdlLT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwo
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIGFsc28gaGF2ZSB0byBoYW5kbGUgbm9kZSBy
ZW1vdmFsLgorICAgICAgICBpZiAobV9jaGlsZENoYW5nZS50eXBlID09IENvbnRhaW5lck5vZGU6
OkNoaWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50UmVtb3ZlZCAmJiBuZXdGaXJzdEVsZW1lbnQgPT0g
ZWxlbWVudEFmdGVyQ2hhbmdlICYmIG5ld0ZpcnN0RWxlbWVudCkgeworICAgICAgICAgICAgYXV0
byogc3R5bGUgPSBuZXdGaXJzdEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CisgICAgICAgICAgICBp
ZiAoIXN0eWxlIHx8ICFzdHlsZS0+Zmlyc3RDaGlsZFN0YXRlKCkpCisgICAgICAgICAgICAgICAg
bmV3Rmlyc3RFbGVtZW50LT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIDpsYXN0LWNoaWxkLiBJbiB0aGUgcGFyc2VyIGNhbGxi
YWNrIGNhc2UsIHdlIGRvbid0IGhhdmUgdG8gY2hlY2sgYW55dGhpbmcsIHNpbmNlIHdlIHdlcmUg
cmlnaHQgdGhlIGZpcnN0IHRpbWUuCisgICAgLy8gSW4gdGhlIERPTSBjYXNlLCB3ZSBvbmx5IG5l
ZWQgdG8gZG8gc29tZXRoaW5nIGlmIHxhZnRlckNoYW5nZXwgaXMgbm90IDAuCisgICAgaWYgKHBh
cmVudC5jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpICYmIGVsZW1lbnRCZWZvcmVD
aGFuZ2UpIHsKKyAgICAgICAgLy8gRmluZCBvdXIgbmV3IGxhc3QgY2hpbGQuCisgICAgICAgIFJl
ZlB0cjxFbGVtZW50PiBuZXdMYXN0RWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RDaGls
ZChwYXJlbnQpOworCisgICAgICAgIGlmIChuZXdMYXN0RWxlbWVudCAhPSBlbGVtZW50QmVmb3Jl
Q2hhbmdlKSB7CisgICAgICAgICAgICBhdXRvKiBzdHlsZSA9IGVsZW1lbnRCZWZvcmVDaGFuZ2Ut
PnJlbmRlclN0eWxlKCk7CisgICAgICAgICAgICBpZiAoIXN0eWxlIHx8IHN0eWxlLT5sYXN0Q2hp
bGRTdGF0ZSgpKQorICAgICAgICAgICAgICAgIGVsZW1lbnRCZWZvcmVDaGFuZ2UtPmludmFsaWRh
dGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2Ug
YWxzbyBoYXZlIHRvIGhhbmRsZSBub2RlIHJlbW92YWwuIFRoZSBwYXJzZXIgY2FsbGJhY2sgY2Fz
ZSBpcyBzaW1pbGFyIHRvIG5vZGUgcmVtb3ZhbCBhcyB3ZWxsIGluIHRoYXQgd2UgbmVlZCB0byBj
aGFuZ2UgdGhlIGxhc3QgY2hpbGQKKyAgICAgICAgLy8gdG8gbWF0Y2ggbm93LgorICAgICAgICBi
b29sIHJlbW92ZWRPckZpbmlzaGVkID0gbV9jaGlsZENoYW5nZS50eXBlID09IENvbnRhaW5lck5v
ZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50UmVtb3ZlZCB8fCBtX2NoaWxkQ2hhbmdlLnR5
cGUgPT0gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OkZpbmlzaGVkUGFyc2luZ0No
aWxkcmVuOworICAgICAgICBpZiAocmVtb3ZlZE9yRmluaXNoZWQgJiYgbmV3TGFzdEVsZW1lbnQg
PT0gZWxlbWVudEJlZm9yZUNoYW5nZSAmJiBuZXdMYXN0RWxlbWVudCkgeworICAgICAgICAgICAg
YXV0byogc3R5bGUgPSBuZXdMYXN0RWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgICAg
IGlmICghc3R5bGUgfHwgIXN0eWxlLT5sYXN0Q2hpbGRTdGF0ZSgpKQorICAgICAgICAgICAgICAg
IG5ld0xhc3RFbGVtZW50LT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMoZWxl
bWVudEFmdGVyQ2hhbmdlKTsKKworICAgIGludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1
bGVzKHBhcmVudCwgZWxlbWVudEFmdGVyQ2hhbmdlKTsKKyAgICBpbnZhbGlkYXRlRm9yQmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMocGFyZW50LCBlbGVtZW50QmVmb3JlQ2hhbmdlKTsKK30KKworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODc1YTAxMTc5OWY5NTA1YTdiMDMxNzFmNDhhZDg2OTJlNmIzMzI0ZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmgK
QEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
RWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgU3R5bGUgeworCitj
bGFzcyBDaGlsZENoYW5nZUludmFsaWRhdGlvbiB7CitwdWJsaWM6CisgICAgQ2hpbGRDaGFuZ2VJ
bnZhbGlkYXRpb24oQ29udGFpbmVyTm9kZSYsIGNvbnN0IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hh
bmdlJik7CisgICAgfkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uKCk7CisKK3ByaXZhdGU6CisgICAg
dm9pZCBpbnZhbGlkYXRlQWZ0ZXJDaGFuZ2UoKTsKKyAgICB2b2lkIGNoZWNrRm9yRW1wdHlTdHls
ZUNoYW5nZSgpOworICAgIHZvaWQgY2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKCk7CisKKyAg
ICBFbGVtZW50JiBwYXJlbnRFbGVtZW50KCkgeyByZXR1cm4gKm1fcGFyZW50RWxlbWVudDsgfQor
CisgICAgRWxlbWVudCogbV9wYXJlbnRFbGVtZW50IHsgbnVsbHB0ciB9OworICAgIGNvbnN0IGJv
b2wgbV9pc0VuYWJsZWQ7CisKKyAgICBjb25zdCBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSYg
bV9jaGlsZENoYW5nZTsKK307CisKK30KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlQWRqdXN0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQWRqdXN0ZXIu
aAppbmRleCAxOTEzMWU1ODBmNTY0NWFlYTIyMzI4Mjk0ZTlkNzYxZWJmODM1ZDY3Li45NzJhMWFi
ZDE1MjA2MDU2MDE4MzQzMWY2NDg0Nzk5ODM4ZDk5ZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZUFkanVzdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVBZGp1c3Rlci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAiVGV4dFNpemVBZGp1c3RtZW50Lmgi
CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444958</attachid>
            <date>2021-11-22 05:29:02 -0800</date>
            <delta_ts>2021-11-22 06:02:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233311-20211122152900.patch</filename>
            <type>text/plain</type>
            <size>42333</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ0YWUwOGI5ZjZjNGJm
MDUxZDc3YWFkOGNjNWEzNDA4NzZjODZmNy4uNTY0MjQ1NGQyODZjMTA4MmMwZTBiYTQxMDA0Njg2
NmI0OWUyYWRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIxLTExLTE4ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgY2hpbGQgY2hh
bmdlIGludmFsaWRhdGlvbiBpbnRvIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBBbGFuIEJ1
anRhcy4KKworICAgICAgICBVc2Ugc2ltaWxhciBwYXR0ZXJuIGFzIENsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uIGFuZCBvdGhlcnMgd2hlcmUgd2UgY3JlYXRlIGEgc3RhY2sgb2JqZWN0IHNjb3BlZAor
ICAgICAgICBvdmVyIGEgRE9NIG11dGF0aW9uLiBUaGlzIHdpbGwgYWxsb3cgbW9yZSBzb3BoaXN0
aWNhdGVkIHJ1bGVzZXQgYmFzZWQgaW52YWxpZGF0aW9uIGluCisgICAgICAgIGZ1dHVyZS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBpbnZhbGlkYXRpb24gY29kZSBmcm9tIGNoaWxk
cmVuQ2hhbmdlZCgpIHRvIHRoZSBuZXcgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24gY2xhc3MuCisg
ICAgICAgIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uIGlzIGluc3RhbnRpYXRlZCBpbiBDb250YWlu
ZXJOb2RlIGFuZCBDaGFyYWN0ZXJEYXRhIG11dGF0aW9uIGZ1bmN0aW9ucworICAgICAgICB0aGF0
IGNhbGwgY2hpbGRyZW5DaGFuZ2VkKCkuIEl0IHVzZXMgdGhlIHNhbWUgQ2hpbGRDaGFuZ2UgYXJn
dW1lbnQgdHlwZSBhcyBjaGlsZHJlbkNoYW5nZWQoKS4KKworICAgICAgICBUaGVyZSBhcmUgbm8g
Y2hhbmdlcyB0byBpbnZhbGlkYXRpb24gZnVuY3Rpb25hbGl0eSBpbiB0aGlzIHBhdGNoLgorCisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1ha2VDaGlsZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRh
OjpwYXJzZXJBcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OnNl
dERhdGFBbmRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6bm90aWZ5
UGFyZW50QWZ0ZXJDaGFuZ2UpOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmg6CisgICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Om1ha2VDaGlsZENoYW5nZUZvclJlbW92YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6bWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFp
bmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpy
ZXBsYWNlQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxk
V2l0aG91dFByZUluc2VydGlvblZhbGlkaXR5Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6YWZmZWN0
c0VsZW1lbnRzKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppbnZhbGlkYXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZpbmlzaFBh
cnNpbmdDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0ZvckVtcHR5U3R5bGVDaGFu
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvckZvcndhcmRQb3Np
dGlvbmFsUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvckJh
Y2t3YXJkUG9zaXRpb25hbFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNoZWNr
Rm9yU2libGluZ1N0eWxlQ2hhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0VsZW1lbnQu
aDoKKyAgICAgICAgKiBzdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjpDaGlsZENo
YW5nZUludmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJ
bnZhbGlkYXRpb246On5DaGlsZENoYW5nZUludmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVBZnRlckNoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmNoZWNr
Rm9yRW1wdHlTdHlsZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6aW52YWxpZGF0
ZUZvckZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Omlu
dmFsaWRhdGVGb3JCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdl
cyk6CisgICAgICAgICogc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OnBhcmVudEVs
ZW1lbnQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlQWRqdXN0ZXIuaDoKKwogMjAyMS0xMS0yMSAg
QWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRp
b25dIEVuYWJsZSBiaWRpIGNvbnRlbnQgZm9yIG5vbi1pbmxpbmUtYm94IGNhc2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDIwYTNkOGM4M2E2ZGY4YjY3ZjI0NzI1MzA5MTFjMjI5MTQ3ZjU5NjQuLjhmNzll
Y2U4Y2M3YzA1OTk4YTk1ZmNhMmI1YmU2NDMyN2ViY2U3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0y
NTI0LDYgKzI1MjQsNyBAQCBzdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCiBzdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci5jcHAKIHN0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdlci5jcHAKIHN0
eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAKK3N0eWxlL0NoaWxkQ2hhbmdlSW52
YWxpZGF0aW9uLmNwcAogc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCiBzdHlsZS9F
bGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKIHN0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDg3NTU3NDQwODg0Njk0ZjdlN2UzMTMyNDA3YzNmYzkzOGRkZmRlYWMuLjA0ZTk2OTg0NGRm
YmYzOGY3OTVjY2NmZTZiYmM2NTRhN2UwN2VhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzNDIsNiArNTM0Miw3IEBACiAJ
CUU0QzE3ODlCMEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzE3ODk2MEVFNjkwMzgwMDgy
NEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFNEMyNzk1OTBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVk
aWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzI3
OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0QzNCMUZBMEYwRTQxNjEwMDk2OTNGNiAv
KiBMZWdhY3lUaWxlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0QzNCMUY5MEYwRTQxNjEwMDk2OTNGNiAvKiBMZWdhY3lUaWxlQ2FjaGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNEM0QzYx
QTI3NDUyQTc5MDBBMDQwRTcgLyogQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzRDNjE4Mjc0NTJBNzkwMEEw
NDBFNyAvKiBDaGlsZENoYW5nZUludmFsaWRhdGlvbi5oICovOyB9OwogCQlFNEM5MUEwRTE4MDIz
NDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzkxQTBEMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFp
bnRTdHlsZS5oICovOyB9OwogCQlFNEM5MUExNjE4MDk5OUYxMDBBMTdGNkQgLyogUmVuZGVyVGV4
dExpbmVCb3hlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRDOTFBMTUxODA5OTlGMTAwQTE3RjZEIC8qIFJlbmRlclRleHRMaW5lQm94ZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEQzM0YzQjI1
MkFFRUNEMDA4MzdEMDUgLyogSW5saW5lUnVuQW5kT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQzM0YzOTI1MkFFRUNDMDA4MzdEMDUgLyog
SW5saW5lUnVuQW5kT2Zmc2V0LmggKi87IH07CkBAIC0xNzA0Niw2ICsxNzA0Nyw4IEBACiAJCUU0
QzI3OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZWRpYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNEMzQjFGOTBGMEU0MTYxMDA5NjkzRjYgLyogTGVnYWN5VGlsZUNhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2FjeVRpbGVDYWNoZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNEMzQjFGQjBGMEU0MTcwMDA5NjkzRjYgLyogTGVnYWN5VGls
ZUNhY2hlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5
VGlsZUNhY2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEM0QzYxODI3NDUy
QTc5MDBBMDQwRTcgLyogQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTRDNEM2MUIyNzQ1MkE4QTAwQTA0MEU3IC8qIENoaWxkQ2hhbmdl
SW52YWxpZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoaWxkQ2hhbmdlSW52YWxpZGF0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRDOTFBMEQxODAyMzQzMTAw
QTE3RjZEIC8qIFRleHRQYWludFN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRleHRQYWludFN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0Qzkx
QTBGMTgwMjM0MzkwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGFpbnRTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0QzkxQTE1MTgwOTk5RjEwMEExN0Y2RCAvKiBSZW5kZXJUZXh0TGlu
ZUJveGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRleHRMaW5l
Qm94ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwMjgyLDYgKzMwMjg1LDgg
QEAKIAkJCQlFNEE4MTRENzFDNzBFMTA1MDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxp
ZGF0aW9uLmNwcCAqLywKIAkJCQlFNEE4MTREOTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRl
Q2hhbmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJRTRBQkFCRjQyMzY4QzZFRjAwRkE0MzQ1IC8q
IENhc2NhZGVMZXZlbC5oICovLAorCQkJCUU0QzRDNjFCMjc0NTJBOEEwMEEwNDBFNyAvKiBDaGls
ZENoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8sCisJCQkJRTRDNEM2MTgyNzQ1MkE3OTAwQTA0MEU3
IC8qIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJRTRBODE0RDUxQzZERUU4RDAw
QkY4NUFDIC8qIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLywKIAkJCQlFNEE4MTREMzFD
NkRFQzQwMDBCRjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlGQkRC
NjE5QTE2RDYwMzJBMDBCQjMzOTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwICovLApAQCAt
MzI3MzcsNiArMzI3NDIsNyBAQAogCQkJCTkzRjJDQzkzMjQyN0ZCOUMwMDU4NTFEOCAvKiBDaGFy
YWN0ZXJSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCOEZGRDExNkFFN0Y5NjAwMzgzODhE
IC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY1NUIzREIyMTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTRDNEM2MUEyNzQ1MkE3OTAwQTA0MEU3IC8qIENoaWxkQ2hhbmdlSW52YWxp
ZGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlENjE5QTMwODE0NEUwMEJFMDA0QkMzMDIgLyog
Q2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMjAwOTc3
RDNDMDAwNTgyNkQ5IC8qIENoaWxkTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RDgy
MzUyMEFGOTJBNzkwMDA0RjA1NyAvKiBDaHJvbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IDJlNjVjNjI0NDk3MzM3ZTZiOTAwYWUzOTAwYzFh
MTI2Yzk3ZDZjODguLjg5NzdlMjQ3ZjJiYWZlM2JmMjVmOTJiYTkzMjQ5OTllZGI5NDIzY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNs
dWRlICJDaGFyYWN0ZXJEYXRhLmgiCiAKICNpbmNsdWRlICJBdHRyLmgiCisjaW5jbHVkZSAiQ2hp
bGRDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCkBAIC03
Myw2ICs3NCwxNiBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IENoYXJhY3RlckRhdGE6OnN1YnN0cmlu
Z0RhdGEodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudAogICAgIHJldHVybiBtX2RhdGEu
c3Vic3RyaW5nKG9mZnNldCwgY291bnQpOwogfQogCitzdGF0aWMgQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2UgbWFrZUNoaWxkQ2hhbmdlKENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEsIENv
bnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNlKQoreworICAgIHJldHVybiB7
CisgICAgICAgIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdlZCwK
KyAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoYXJhY3RlckRhdGEp
LAorICAgICAgICBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGFyYWN0ZXJEYXRhKSwK
KyAgICAgICAgc291cmNlCisgICAgfTsKK30KKwogdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFy
c2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGhMaW1pdCkKIHsKICAgICB1bnNpZ25lZCBvbGRMZW5ndGggPSBtX2RhdGEubGVu
Z3RoKCk7CkBAIC05NSw2ICsxMDYsMTEgQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2Vy
QXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIGlm
ICghY2hhcmFjdGVyTGVuZ3RoTGltaXQpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgYXV0byBj
aGlsZENoYW5nZSA9IG1ha2VDaGlsZENoYW5nZSgqdGhpcywgQ29udGFpbmVyTm9kZTo6Q2hpbGRD
aGFuZ2U6OlNvdXJjZTo6UGFyc2VyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpDaGlsZENo
YW5nZUludmFsaWRhdGlvbj4gc3R5bGVJbnZhbGlkYXRpb247CisgICAgaWYgKGF1dG8qIHBhcmVu
dCA9IHBhcmVudE5vZGUoKSkKKyAgICAgICAgc3R5bGVJbnZhbGlkYXRpb24uZW1wbGFjZSgqcGFy
ZW50LCBjaGlsZENoYW5nZSk7CisKICAgICBTdHJpbmcgb2xkRGF0YSA9IG1fZGF0YTsKICAgICBp
ZiAoc3RyaW5nLmlzOEJpdCgpKQogICAgICAgICBtX2RhdGEuYXBwZW5kKHN0cmluZy5jaGFyYWN0
ZXJzOCgpICsgb2Zmc2V0LCBjaGFyYWN0ZXJMZW5ndGhMaW1pdCk7CkBAIC0xMDUsNyArMTIxLDcg
QEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcm
IHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIGlmIChpczxUZXh0PigqdGhpcykpCiAgICAg
ICAgIGRvd25jYXN0PFRleHQ+KCp0aGlzKS51cGRhdGVSZW5kZXJlckFmdGVyQ29udGVudENoYW5n
ZShvbGRMZW5ndGgsIDApOwogCi0gICAgbm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoQ29udGFpbmVy
Tm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKTsKKyAgICBub3RpZnlQYXJlbnRBZnRl
ckNoYW5nZShjaGlsZENoYW5nZSk7CiAKICAgICBhdXRvIG11dGF0aW9uUmVjaXBpZW50cyA9IE11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JDaGFyYWN0ZXJEYXRhTXV0YXRp
b24oKnRoaXMpOwogICAgIGlmIChVTkxJS0VMWShtdXRhdGlvblJlY2lwaWVudHMpKQpAQCAtMTcz
LDYgKzE4OSwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDaGFyYWN0ZXJEYXRhOjpzZXROb2RlVmFs
dWUoY29uc3QgU3RyaW5nJiBub2RlVmFsdWUpCiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0
YUFuZFVwZGF0ZShjb25zdCBTdHJpbmcmIG5ld0RhdGEsIHVuc2lnbmVkIG9mZnNldE9mUmVwbGFj
ZWREYXRhLCB1bnNpZ25lZCBvbGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCwgVXBkYXRlTGl2
ZVJhbmdlcyBzaG91bGRVcGRhdGVMaXZlUmFuZ2VzKQogeworICAgIGF1dG8gY2hpbGRDaGFuZ2Ug
PSBtYWtlQ2hpbGRDaGFuZ2UoKnRoaXMsIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3Vy
Y2U6OkFQSSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRh
dGlvbj4gc3R5bGVJbnZhbGlkYXRpb247CisgICAgaWYgKGF1dG8qIHBhcmVudCA9IHBhcmVudE5v
ZGUoKSkKKyAgICAgICAgc3R5bGVJbnZhbGlkYXRpb24uZW1wbGFjZSgqcGFyZW50LCBjaGlsZENo
YW5nZSk7CisKICAgICBTdHJpbmcgb2xkRGF0YSA9IG1fZGF0YTsKICAgICBtX2RhdGEgPSBuZXdE
YXRhOwogCkBAIC0xOTEsMjYgKzIxMywxOSBAQCB2b2lkIENoYXJhY3RlckRhdGE6OnNldERhdGFB
bmRVcGRhdGUoY29uc3QgU3RyaW5nJiBuZXdEYXRhLCB1bnNpZ25lZCBvZmZzZXRPZlJlcAogICAg
IGlmIChkb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgIGRvY3VtZW50KCkuZnJhbWUoKS0+c2Vs
ZWN0aW9uKCkudGV4dFdhc1JlcGxhY2VkKHRoaXMsIG9mZnNldE9mUmVwbGFjZWREYXRhLCBvbGRM
ZW5ndGgsIG5ld0xlbmd0aCk7CiAKLSAgICBub3RpZnlQYXJlbnRBZnRlckNoYW5nZShDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpBUEkpOworICAgIG5vdGlmeVBhcmVudEFmdGVy
Q2hhbmdlKGNoaWxkQ2hhbmdlKTsKIAogICAgIGRpc3BhdGNoTW9kaWZpZWRFdmVudChvbGREYXRh
KTsKIH0KIAotdm9pZCBDaGFyYWN0ZXJEYXRhOjpub3RpZnlQYXJlbnRBZnRlckNoYW5nZShDb250
YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSkKK3ZvaWQgQ2hhcmFjdGVyRGF0
YTo6bm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2UmIGNoaWxkQ2hhbmdlKQogewogICAgIGRvY3VtZW50KCkuaW5jRE9NVHJlZVZlcnNpb24oKTsK
IAogICAgIGlmICghcGFyZW50Tm9kZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZSBjaGFuZ2UgPSB7Ci0gICAgICAgIENvbnRhaW5lck5vZGU6OkNo
aWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdlZCwKLSAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6
cHJldmlvdXNTaWJsaW5nKCp0aGlzKSwKLSAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNp
YmxpbmcoKnRoaXMpLAotICAgICAgICBzb3VyY2UKLSAgICB9OwotCi0gICAgcGFyZW50Tm9kZSgp
LT5jaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKKyAgICBwYXJlbnROb2RlKCktPmNoaWxkcmVuQ2hh
bmdlZChjaGlsZENoYW5nZSk7CiB9CiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6ZGlzcGF0Y2hNb2Rp
ZmllZEV2ZW50KGNvbnN0IFN0cmluZyYgb2xkRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0
YS5oCmluZGV4IGM1OTQ3MzViZWNiMDlhMzZlNjU0MjlmMjI5NjZjZmExMzMwZjkzODEuLjM2YTQ5
MjU0MDdlOTEzY2NjYTczZTkwZGUwMzJhYjVmYjg3NzRhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJh
Y3RlckRhdGEuaApAQCAtNjUsNyArNjUsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFN0
cmluZyBub2RlVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRO
b2RlVmFsdWUoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlQYXJlbnRBZnRl
ckNoYW5nZShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlKTsKKyAgICB2b2lkIG5v
dGlmeVBhcmVudEFmdGVyQ2hhbmdlKGNvbnN0IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlJik7
CiAKICAgICBTdHJpbmcgbV9kYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAppbmRleCA2ZDhmZDFmZDU3NzA5MjBiODEyMzFkMzE1NmZlNTNiODg5NGM4OTgzLi4yYmUwZDRk
YjAzM2M2OTc4MzRkNzFkYmY5MzQ0N2UwMmZkOTVkYjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCiAjaW5jbHVkZSAiQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2hp
bGRDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJDaGlsZExpc3RNdXRhdGlvblNjb3Bl
LmgiCiAjaW5jbHVkZSAiQ2xhc3NDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIK
QEAgLTExMSwyOSArMTEyLDUyIEBAIEFMV0FZU19JTkxJTkUgTm9kZVZlY3RvciBDb250YWluZXJO
b2RlOjpyZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpCiAKICAgICBkaXNj
b25uZWN0U3ViZnJhbWVzSWZOZWVkZWQoKnRoaXMsIERlc2NlbmRhbnRzT25seSk7CiAKKyAgICBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZSBjaGlsZENoYW5nZSB7IENoaWxkQ2hhbmdlOjpUeXBl
OjpBbGxDaGlsZHJlblJlbW92ZWQsIG51bGxwdHIsIG51bGxwdHIsIHNvdXJjZSB9OworCiAgICAg
V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNwZW5kV2lkZ2V0SGllcmFy
Y2h5VXBkYXRlczsKICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3Jp
cHREaXNhbGxvd2VkU2NvcGU7CisgICAgeworICAgICAgICBTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZh
bGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIGNoaWxkQ2hhbmdlKTsKIAotICAgIGlm
IChVTkxJS0VMWShpc1NoYWRvd1Jvb3QoKSB8fCBpc0luU2hhZG93VHJlZSgpKSkKLSAgICAgICAg
Y29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+d2lsbFJlbW92ZUFsbENoaWxkcmVuKCp0aGlzKTsKKyAg
ICAgICAgaWYgKFVOTElLRUxZKGlzU2hhZG93Um9vdCgpIHx8IGlzSW5TaGFkb3dUcmVlKCkpKQor
ICAgICAgICAgICAgY29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+d2lsbFJlbW92ZUFsbENoaWxkcmVu
KCp0aGlzKTsKIAotICAgIGRvY3VtZW50KCkubm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZCgqdGhp
cyk7CisgICAgICAgIGRvY3VtZW50KCkubm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZCgqdGhpcyk7
CiAKLSAgICB3aGlsZSAoUmVmUHRyPE5vZGU+IGNoaWxkID0gbV9maXJzdENoaWxkKSB7Ci0gICAg
ICAgIHJlbW92ZUJldHdlZW4obnVsbHB0ciwgY2hpbGQtPm5leHRTaWJsaW5nKCksICpjaGlsZCk7
Ci0gICAgICAgIGF1dG8gc3VidHJlZU9ic2VydmFiaWxpdHkgPSBub3RpZnlDaGlsZE5vZGVSZW1v
dmVkKCp0aGlzLCAqY2hpbGQpOwotICAgICAgICBpZiAoc291cmNlID09IENoaWxkQ2hhbmdlOjpT
b3VyY2U6OkFQSSAmJiBzdWJ0cmVlT2JzZXJ2YWJpbGl0eSA9PSBSZW1vdmVkU3VidHJlZU9ic2Vy
dmFiaWxpdHk6Ok1heWJlT2JzZXJ2YWJsZUJ5UmVmUHRyKQotICAgICAgICAgICAgd2lsbENyZWF0
ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKGNoaWxkLmdldCgpKTsKKyAgICAgICAgd2hp
bGUgKFJlZlB0cjxOb2RlPiBjaGlsZCA9IG1fZmlyc3RDaGlsZCkgeworICAgICAgICAgICAgcmVt
b3ZlQmV0d2VlbihudWxscHRyLCBjaGlsZC0+bmV4dFNpYmxpbmcoKSwgKmNoaWxkKTsKKyAgICAg
ICAgICAgIGF1dG8gc3VidHJlZU9ic2VydmFiaWxpdHkgPSBub3RpZnlDaGlsZE5vZGVSZW1vdmVk
KCp0aGlzLCAqY2hpbGQpOworICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBDaGlsZENoYW5nZTo6
U291cmNlOjpBUEkgJiYgc3VidHJlZU9ic2VydmFiaWxpdHkgPT0gUmVtb3ZlZFN1YnRyZWVPYnNl
cnZhYmlsaXR5OjpNYXliZU9ic2VydmFibGVCeVJlZlB0cikKKyAgICAgICAgICAgICAgICB3aWxs
Q3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoY2hpbGQuZ2V0KCkpOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3Vt
ZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNPcnBoYW4oKSk7CiAKICAgICBpZiAoZGVm
ZXJDaGlsZHJlbkNoYW5nZWQgPT0gRGVmZXJDaGlsZHJlbkNoYW5nZWQ6Ok5vKQotICAgICAgICBj
aGlsZHJlbkNoYW5nZWQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgeyBDaGlsZENoYW5nZTo6
VHlwZTo6QWxsQ2hpbGRyZW5SZW1vdmVkLCBudWxscHRyLCBudWxscHRyLCBzb3VyY2UgfSk7Cisg
ICAgICAgIGNoaWxkcmVuQ2hhbmdlZChjaGlsZENoYW5nZSk7CiAKICAgICByZXR1cm4gY2hpbGRy
ZW47CiB9CiAKK3N0YXRpYyBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSBtYWtlQ2hpbGRDaGFu
Z2VGb3JSZW1vdmFsKE5vZGUmIGNoaWxkVG9SZW1vdmUsIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hh
bmdlOjpTb3VyY2Ugc291cmNlKQoreworICAgIGF1dG8gY2hhbmdlVHlwZSA9IFsmXSB7CisgICAg
ICAgIGlmIChpczxFbGVtZW50PihjaGlsZFRvUmVtb3ZlKSkKKyAgICAgICAgICAgIHJldHVybiBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6RWxlbWVudFJlbW92ZWQ7CisgICAgICAg
IGlmIChpczxUZXh0PihjaGlsZFRvUmVtb3ZlKSkKKyAgICAgICAgICAgIHJldHVybiBDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6VGV4dFJlbW92ZWQ7CisgICAgICAgIHJldHVybiBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29udGVudHNDaGlsZFJlbW92ZWQ7
CisgICAgfSgpOworCisgICAgcmV0dXJuIHsKKyAgICAgICAgY2hhbmdlVHlwZSwKKyAgICAgICAg
RWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkVG9SZW1vdmUpLAorICAgICAg
ICBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGlsZFRvUmVtb3ZlKSwKKyAgICAgICAg
c291cmNlCisgICAgfTsKK30KKwogQUxXQVlTX0lOTElORSBib29sIENvbnRhaW5lck5vZGU6OnJl
bW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9SZW1vdmUsIENoaWxkQ2hh
bmdlOjpTb3VyY2Ugc291cmNlKQogewogICAgIFJlZjxOb2RlPiBwcm90ZWN0ZWRDaGlsZFRvUmVt
b3ZlKGNoaWxkVG9SZW1vdmUpOwpAQCAtMTYyLDExICsxODYsMTMgQEAgQUxXQVlTX0lOTElORSBi
b29sIENvbnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNo
aWxkVG9SZW0KICAgICBpZiAoY2hpbGRUb1JlbW92ZS5wYXJlbnROb2RlKCkgIT0gdGhpcykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ2hpbGRDaGFuZ2UgY2hhbmdlOworICAgIGF1dG8g
Y2hpbGRDaGFuZ2UgPSBtYWtlQ2hpbGRDaGFuZ2VGb3JSZW1vdmFsKGNoaWxkVG9SZW1vdmUsIHNv
dXJjZSk7CisKICAgICBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHkgc3VidHJlZU9ic2VydmFi
aWxpdHk7CiAgICAgewogICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNj
b3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogICAgICAgICBTY3JpcHREaXNhbGxv
d2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CisgICAgICAgIFN0
eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgY2hp
bGRDaGFuZ2UpOwogCiAgICAgICAgIGlmIChVTkxJS0VMWShpc1NoYWRvd1Jvb3QoKSB8fCBpc0lu
U2hhZG93VHJlZSgpKSkKICAgICAgICAgICAgIGNvbnRhaW5pbmdTaGFkb3dSb290KCktPnJlc29s
dmVTbG90c0JlZm9yZU5vZGVJbnNlcnRpb25PclJlbW92YWwoKTsKQEAgLTE3OCwxNyArMjA0LDkg
QEAgQUxXQVlTX0lOTElORSBib29sIENvbnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0
QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9SZW0KIAogICAgICAgICBSZWZQdHI8Tm9kZT4gcHJldmlv
dXNTaWJsaW5nID0gY2hpbGRUb1JlbW92ZS5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgUmVm
UHRyPE5vZGU+IG5leHRTaWJsaW5nID0gY2hpbGRUb1JlbW92ZS5uZXh0U2libGluZygpOworCiAg
ICAgICAgIHJlbW92ZUJldHdlZW4ocHJldmlvdXNTaWJsaW5nLmdldCgpLCBuZXh0U2libGluZy5n
ZXQoKSwgY2hpbGRUb1JlbW92ZSk7CiAgICAgICAgIHN1YnRyZWVPYnNlcnZhYmlsaXR5ID0gbm90
aWZ5Q2hpbGROb2RlUmVtb3ZlZCgqdGhpcywgY2hpbGRUb1JlbW92ZSk7Ci0KLSAgICAgICAgY2hh
bmdlLnR5cGUgPSBpczxFbGVtZW50PihjaGlsZFRvUmVtb3ZlKSA/Ci0gICAgICAgICAgICBDaGls
ZENoYW5nZTo6VHlwZTo6RWxlbWVudFJlbW92ZWQgOgotICAgICAgICAgICAgKGlzPFRleHQ+KGNo
aWxkVG9SZW1vdmUpID8KLSAgICAgICAgICAgICAgICBDaGlsZENoYW5nZTo6VHlwZTo6VGV4dFJl
bW92ZWQgOgotICAgICAgICAgICAgICAgIENoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0No
aWxkUmVtb3ZlZCk7Ci0gICAgICAgIGNoYW5nZS5wcmV2aW91c1NpYmxpbmdFbGVtZW50ID0gKCFw
cmV2aW91c1NpYmxpbmcgfHwgaXM8RWxlbWVudD4oKnByZXZpb3VzU2libGluZykpID8gZG93bmNh
c3Q8RWxlbWVudD4ocHJldmlvdXNTaWJsaW5nLmdldCgpKSA6IEVsZW1lbnRUcmF2ZXJzYWw6OnBy
ZXZpb3VzU2libGluZygqcHJldmlvdXNTaWJsaW5nKTsKLSAgICAgICAgY2hhbmdlLm5leHRTaWJs
aW5nRWxlbWVudCA9ICghbmV4dFNpYmxpbmcgfHwgaXM8RWxlbWVudD4oKm5leHRTaWJsaW5nKSkg
PyBkb3duY2FzdDxFbGVtZW50PihuZXh0U2libGluZy5nZXQoKSkgOiBFbGVtZW50VHJhdmVyc2Fs
OjpuZXh0U2libGluZygqbmV4dFNpYmxpbmcpOwotICAgICAgICBjaGFuZ2Uuc291cmNlID0gc291
cmNlOwogICAgIH0KIAogICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJ
ICYmIHN1YnRyZWVPYnNlcnZhYmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eTo6
TWF5YmVPYnNlcnZhYmxlQnlSZWZQdHIpCkBAIC0xOTcsMjEgKzIxNSw0NSBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24oTm9k
ZSYgY2hpbGRUb1JlbQogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFkb2N1
bWVudCgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzT3JwaGFuKCkpOwogCiAgICAgLy8gRklY
TUU6IE1vdmUgY2hpbGRyZW5DaGFuZ2VkIGludG8gU2NyaXB0RGlzYWxsb3dlZFNjb3BlIGJsb2Nr
LgotICAgIGNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOworICAgIGNoaWxkcmVuQ2hhbmdlZChjaGls
ZENoYW5nZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogZW51bSBjbGFzcyBSZXBsYWNlZEFs
bENoaWxkcmVuIHsgTm8sIFllcyB9OwogCitzdGF0aWMgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2UgbWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9uKENvbnRhaW5lck5vZGUmIGNvbnRhaW5lck5v
ZGUsIE5vZGUmIGNoaWxkLCBOb2RlKiBiZWZvcmVDaGlsZCwgQ29udGFpbmVyTm9kZTo6Q2hpbGRD
aGFuZ2U6OlNvdXJjZSBzb3VyY2UsIFJlcGxhY2VkQWxsQ2hpbGRyZW4gcmVwbGFjZWRBbGxDaGls
ZHJlbikKK3sKKyAgICBpZiAocmVwbGFjZWRBbGxDaGlsZHJlbiA9PSBSZXBsYWNlZEFsbENoaWxk
cmVuOjpZZXMpCisgICAgICAgIHJldHVybiB7IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpU
eXBlOjpBbGxDaGlsZHJlblJlcGxhY2VkLCBudWxscHRyLCBudWxscHRyLCBzb3VyY2UgfTsKKwor
ICAgIGF1dG8gY2hhbmdlVHlwZSA9IFsmXSB7CisgICAgICAgIGlmIChpczxFbGVtZW50PihjaGls
ZCkpCisgICAgICAgICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6
OkVsZW1lbnRJbnNlcnRlZDsKKyAgICAgICAgaWYgKGlzPFRleHQ+KGNoaWxkKSkKKyAgICAgICAg
ICAgIHJldHVybiBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6VGV4dEluc2VydGVk
OworICAgICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNv
bnRlbnRzQ2hpbGRJbnNlcnRlZDsKKyAgICB9KCk7CisKKyAgICByZXR1cm4geworICAgICAgICBj
aGFuZ2VUeXBlLAorICAgICAgICBiZWZvcmVDaGlsZCA/IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZp
b3VzU2libGluZygqYmVmb3JlQ2hpbGQpIDogRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKGNv
bnRhaW5lck5vZGUpLAorICAgICAgICAhYmVmb3JlQ2hpbGQgfHwgaXM8RWxlbWVudD4oKmJlZm9y
ZUNoaWxkKSA/IGRvd25jYXN0PEVsZW1lbnQ+KGJlZm9yZUNoaWxkKSA6IEVsZW1lbnRUcmF2ZXJz
YWw6Om5leHRTaWJsaW5nKCpiZWZvcmVDaGlsZCksCisgICAgICAgIHNvdXJjZQorICAgIH07Cit9
CisKIHRlbXBsYXRlPHR5cGVuYW1lIERPTUluc2VydGlvbldvcms+Ci1zdGF0aWMgQUxXQVlTX0lO
TElORSB2b2lkIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbihDb250YWlu
ZXJOb2RlJiBjb250YWluZXJOb2RlLCBOb2RlJiBjaGlsZCwKK3N0YXRpYyBBTFdBWVNfSU5MSU5F
IHZvaWQgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKENvbnRhaW5lck5v
ZGUmIGNvbnRhaW5lck5vZGUsIE5vZGUmIGNoaWxkLCBOb2RlKiBiZWZvcmVDaGlsZCwKICAgICBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSwgUmVwbGFjZWRBbGxDaGls
ZHJlbiByZXBsYWNlZEFsbENoaWxkcmVuLCBET01JbnNlcnRpb25Xb3JrIGRvTm9kZUluc2VydGlv
bikKIHsKKyAgICBhdXRvIGNoaWxkQ2hhbmdlID0gbWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9u
KGNvbnRhaW5lck5vZGUsIGNoaWxkLCBiZWZvcmVDaGlsZCwgc291cmNlLCByZXBsYWNlZEFsbENo
aWxkcmVuKTsKKwogICAgIE5vZGVWZWN0b3IgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdl
dHM7CiAgICAgewogICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3Bl
IHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogICAgICAgICBTY3JpcHREaXNhbGxvd2Vk
U2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CisgICAgICAgIFN0eWxl
OjpDaGlsZENoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbihjb250YWluZXJOb2Rl
LCBjaGlsZENoYW5nZSk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGNvbnRhaW5lck5vZGUuaXNT
aGFkb3dSb290KCkgfHwgY29udGFpbmVyTm9kZS5pc0luU2hhZG93VHJlZSgpKSkKICAgICAgICAg
ICAgIGNvbnRhaW5lck5vZGUuY29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+cmVzb2x2ZVNsb3RzQmVm
b3JlTm9kZUluc2VydGlvbk9yUmVtb3ZhbCgpOwpAQCAtMjIyLDIwICsyNjQsNyBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlv
bihDb250YWluZXJOb2RlJgogICAgIH0KIAogICAgIC8vIEZJWE1FOiBNb3ZlIGNoaWxkcmVuQ2hh
bmdlZCBpbnRvIFNjcmlwdERpc2FsbG93ZWRTY29wZSBibG9jay4KLSAgICBpZiAocmVwbGFjZWRB
bGxDaGlsZHJlbiA9PSBSZXBsYWNlZEFsbENoaWxkcmVuOjpZZXMpCi0gICAgICAgIGNvbnRhaW5l
ck5vZGUuY2hpbGRyZW5DaGFuZ2VkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlIHsgQ29udGFp
bmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OkFsbENoaWxkcmVuUmVwbGFjZWQsIG51bGxwdHIs
IG51bGxwdHIsIHNvdXJjZSB9KTsKLSAgICBlbHNlIHsKLSAgICAgICAgY29udGFpbmVyTm9kZS5j
aGlsZHJlbkNoYW5nZWQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgewotICAgICAgICAgICAg
Y2hpbGQuaXNFbGVtZW50Tm9kZSgpID8KLSAgICAgICAgICAgICAgICBDb250YWluZXJOb2RlOjpD
aGlsZENoYW5nZTo6VHlwZTo6RWxlbWVudEluc2VydGVkIDoKLSAgICAgICAgICAgICAgICAoY2hp
bGQuaXNUZXh0Tm9kZSgpID8KLSAgICAgICAgICAgICAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2U6OlR5cGU6OlRleHRJbnNlcnRlZCA6Ci0gICAgICAgICAgICAgICAgICAgIENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0NoaWxkSW5zZXJ0ZWQpLAot
ICAgICAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkKSwKLSAg
ICAgICAgICAgIEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGNoaWxkKSwKLSAgICAgICAg
ICAgIHNvdXJjZQotICAgICAgICB9KTsKLSAgICB9CisgICAgY29udGFpbmVyTm9kZS5jaGlsZHJl
bkNoYW5nZWQoY2hpbGRDaGFuZ2UpOwogCiAgICAgQVNTRVJUKFNjcmlwdERpc2FsbG93ZWRTY29w
ZTo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKGNoaWxkKSk7
CiAgICAgZm9yIChhdXRvJiB0YXJnZXQgOiBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0
cykKQEAgLTQ0OCw3ICs0NzcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjpp
bnNlcnRCZWZvcmUoTm9kZSYgbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkKQogICAgICAgICBpZiAo
Y2hpbGQtPnBhcmVudE5vZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGV4ZWN1
dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQuZ2V0KCksIENo
aWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7Cisg
ICAgICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hp
bGQuZ2V0KCksIG5leHQucHRyKCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRB
bGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0VHJlZVNjb3BlUmVj
dXJzaXZlbHkodHJlZVNjb3BlKCkpOwogICAgICAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5l
eHQsIGNoaWxkKTsKICAgICAgICAgfSk7CkBAIC01MDcsNyArNTM2LDcgQEAgdm9pZCBDb250YWlu
ZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUoTm9kZSYgbmV3Q2hpbGQsIE5vZGUmIG5leHRDaGls
ZCkKICAgICBpZiAobmV4dENoaWxkLnByZXZpb3VzU2libGluZygpID09ICZuZXdDaGlsZCB8fCAm
bmV4dENoaWxkID09ICZuZXdDaGlsZCkgLy8gbm90aGluZyB0byBkbwogICAgICAgICByZXR1cm47
CiAKLSAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIG5l
d0NoaWxkLCBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsIFJlcGxhY2VkQWxsQ2hpbGRyZW46
Ok5vLCBbJl0geworICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigq
dGhpcywgbmV3Q2hpbGQsICZuZXh0Q2hpbGQsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwg
UmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgIGlmICgmZG9jdW1lbnQoKSAh
PSAmbmV3Q2hpbGQuZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50KCkuYWRvcHROb2Rl
KG5ld0NoaWxkKTsKIApAQCAtNTgxLDcgKzYxMCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRh
aW5lck5vZGU6OnJlcGxhY2VDaGlsZChOb2RlJiBuZXdDaGlsZCwgTm9kZSYgb2xkQ2hpbGQpCiAg
ICAgICAgIGlmIChjaGlsZC0+cGFyZW50Tm9kZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBjaGls
ZC5nZXQoKSwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpO
bywgWyZdIHsKKyAgICAgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9u
KCp0aGlzLCBjaGlsZC5nZXQoKSwgcmVmQ2hpbGQuZ2V0KCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6
OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+
c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkodHJlZVNjb3BlKCkpOwogICAgICAgICAgICAgaWYgKHJl
ZkNoaWxkKQogICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZUNvbW1vbigqcmVmQ2hpbGQsIGNo
aWxkLmdldCgpKTsKQEAgLTY4Miw3ICs3MTEsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlcGxh
Y2VBbGwoTm9kZSogbm9kZSkKICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKCp0
aGlzKTsKICAgICByZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpbGRDaGFu
Z2U6OlNvdXJjZTo6QVBJLCBEZWZlckNoaWxkcmVuQ2hhbmdlZDo6WWVzKTsKIAotICAgIGV4ZWN1
dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgKm5vZGUsIENoaWxkQ2hh
bmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6WWVzLCBbJl0geworICAgIGV4
ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgKm5vZGUsIG51bGxw
dHIsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6WWVzLCBb
Jl0gewogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2Rl
KGRvY3VtZW50KCksICp0aGlzKTsKICAgICAgICAgbm9kZS0+c2V0VHJlZVNjb3BlUmVjdXJzaXZl
bHkodHJlZVNjb3BlKCkpOwogICAgICAgICBhcHBlbmRDaGlsZENvbW1vbigqbm9kZSk7CkBAIC03
NjMsNyArNzkyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hp
bGRXaXRob3V0UHJlSW5zZXJ0aW9uVmFsaWRpdHlDaGVjayhOb2QKICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgIC8vIEFwcGVuZCBjaGlsZCB0byB0aGUgZW5kIG9mIHRoZSBsaXN0Ci0gICAg
ICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQu
Z2V0KCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8s
IFsmXSB7CisgICAgICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigq
dGhpcywgY2hpbGQuZ2V0KCksIG51bGxwdHIsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVw
bGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0VHJlZVNj
b3BlUmVjdXJzaXZlbHkodHJlZVNjb3BlKCkpOwogICAgICAgICAgICAgYXBwZW5kQ2hpbGRDb21t
b24oY2hpbGQpOwogICAgICAgICB9KTsKQEAgLTc3OSw3ICs4MDgsNyBAQCB2b2lkIENvbnRhaW5l
ck5vZGU6OnBhcnNlckFwcGVuZENoaWxkKE5vZGUmIG5ld0NoaWxkKQogICAgIEFTU0VSVCghbmV3
Q2hpbGQuaXNEb2N1bWVudEZyYWdtZW50KCkpOwogICAgIEFTU0VSVCghaGFzVGFnTmFtZShIVE1M
TmFtZXM6OnRlbXBsYXRlVGFnKSk7CiAKLSAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3Jp
cHRBc3NlcnRpb24oKnRoaXMsIG5ld0NoaWxkLCBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIs
IFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vLCBbJl0geworICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9u
V2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgbmV3Q2hpbGQsIG51bGxwdHIsIENoaWxkQ2hhbmdl
OjpTb3VyY2U6OlBhcnNlciwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAg
IGlmICgmZG9jdW1lbnQoKSAhPSAmbmV3Q2hpbGQuZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRv
Y3VtZW50KCkuYWRvcHROb2RlKG5ld0NoaWxkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IDVkN2IxYmUyNjE2NDBjZjE0MTBlY2EzZWM5MTczYTQwODlhZmQxOGQuLjRiYjBlMGNiZTZhNDVh
ZGI0OTNmZDQ5M2Q2MWQ2YjUyY2IzNGRmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJBdHRyLmgiCiAjaW5jbHVkZSAiQXR0cmlidXRlQ2hhbmdl
SW52YWxpZGF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiQ2hpbGRD
aGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJv
bWVDbGllbnQuaCIKICNpbmNsdWRlICJDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIgpAQCAtMjAz
OCw3ICsyMDM5LDcgQEAgU3R5bGU6OkVsZW1lbnRTdHlsZSBFbGVtZW50OjpyZXNvbHZlU3R5bGUo
Y29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0JiByZXNvbHUKICAgICByZXR1cm4gc3R5bGVS
ZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqdGhpcywgcmVzb2x1dGlvbkNvbnRleHQpOwogfQog
Ci1zdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKEVsZW1lbnQqIHNp
YmxpbmcpCit2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMoRWxlbWVudCogc2li
bGluZykKIHsKICAgICBmb3IgKDsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVt
ZW50U2libGluZygpKSB7CiAgICAgICAgIGlmIChzaWJsaW5nLT5zdHlsZUlzQWZmZWN0ZWRCeVBy
ZXZpb3VzU2libGluZygpKQpAQCAtMjY0MiwxMjQgKzI2NDMsMTEgQEAgYm9vbCBFbGVtZW50Ojpj
aGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlIHR5cGUpIGNvbnN0CiAgICAgfQogICAgIHJldHVybiBm
YWxzZTsKIH0KLQotc3RhdGljIHZvaWQgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKEVsZW1lbnQm
IGVsZW1lbnQpCi17Ci0gICAgaWYgKGVsZW1lbnQuc3R5bGVBZmZlY3RlZEJ5RW1wdHkoKSkgewot
ICAgICAgICBhdXRvKiBzdHlsZSA9IGVsZW1lbnQucmVuZGVyU3R5bGUoKTsKLSAgICAgICAgaWYg
KCFzdHlsZSB8fCAoIXN0eWxlLT5lbXB0eVN0YXRlKCkgfHwgZWxlbWVudC5oYXNDaGlsZE5vZGVz
KCkpKQotICAgICAgICAgICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Ci0g
ICAgfQotfQotCi0KLXN0YXRpYyB2b2lkIGludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1
bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxlbWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQotewotICAg
IGJvb2wgY2hpbGRyZW5BZmZlY3RlZCA9IHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVkID0gcGFyZW50
LmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLQotICAgIGlm
ICghY2hpbGRyZW5BZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNBZmZlY3RlZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudEFmdGVyQ2hhbmdlOyBzaWJs
aW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAg
aWYgKGNoaWxkcmVuQWZmZWN0ZWQpCi0gICAgICAgICAgICBzaWJsaW5nLT5pbnZhbGlkYXRlU3R5
bGVJbnRlcm5hbCgpOwotICAgICAgICBpZiAoZGVzY2VuZGFudHNBZmZlY3RlZCkgewotICAgICAg
ICAgICAgZm9yIChhdXRvKiBzaWJsaW5nQ2hpbGQgPSBzaWJsaW5nLT5maXJzdEVsZW1lbnRDaGls
ZCgpOyBzaWJsaW5nQ2hpbGQ7IHNpYmxpbmdDaGlsZCA9IHNpYmxpbmdDaGlsZC0+bmV4dEVsZW1l
bnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAgc2libGluZ0NoaWxkLT5pbnZhbGlkYXRlU3R5
bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZv
aWQgaW52YWxpZGF0ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwg
RWxlbWVudCogZWxlbWVudEJlZm9yZUNoYW5nZSkKLXsKLSAgICBib29sIGNoaWxkcmVuQWZmZWN0
ZWQgPSBwYXJlbnQuY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsK
LSAgICBib29sIGRlc2NlbmRhbnRzQWZmZWN0ZWQgPSBwYXJlbnQuZGVzY2VuZGFudHNBZmZlY3Rl
ZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLQotICAgIGlmICghY2hpbGRyZW5BZmZlY3Rl
ZCAmJiAhZGVzY2VuZGFudHNBZmZlY3RlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChh
dXRvKiBzaWJsaW5nID0gZWxlbWVudEJlZm9yZUNoYW5nZTsgc2libGluZzsgc2libGluZyA9IHNp
YmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoY2hpbGRyZW5B
ZmZlY3RlZCkKLSAgICAgICAgICAgIHNpYmxpbmctPmludmFsaWRhdGVTdHlsZUludGVybmFsKCk7
Ci0gICAgICAgIGlmIChkZXNjZW5kYW50c0FmZmVjdGVkKSB7Ci0gICAgICAgICAgICBmb3IgKGF1
dG8qIHNpYmxpbmdDaGlsZCA9IHNpYmxpbmctPmZpcnN0RWxlbWVudENoaWxkKCk7IHNpYmxpbmdD
aGlsZDsgc2libGluZ0NoaWxkID0gc2libGluZ0NoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkK
LSAgICAgICAgICAgICAgICBzaWJsaW5nQ2hpbGQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJ
bnRlcm5hbCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1lbnVtIFNpYmxpbmdDaGVja1R5cGUg
eyBGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbiwgU2libGluZ0VsZW1lbnRSZW1vdmVkLCBPdGhlciB9
OwotCi1zdGF0aWMgdm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoRWxlbWVudCYgcGFy
ZW50LCBTaWJsaW5nQ2hlY2tUeXBlIGNoZWNrVHlwZSwgRWxlbWVudCogZWxlbWVudEJlZm9yZUNo
YW5nZSwgRWxlbWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQotewotICAgIC8vIDplbXB0eSBzZWxl
Y3Rvci4KLSAgICBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UocGFyZW50KTsKLQotICAgIGlmIChw
YXJlbnQuc3R5bGVWYWxpZGl0eSgpID49IFN0eWxlOjpWYWxpZGl0eTo6U3VidHJlZUludmFsaWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIDpmaXJzdC1jaGlsZC4gIEluIHRoZSBwYXJzZXIg
Y2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnl0aGluZywgc2luY2Ugd2Ug
d2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4KLSAgICAvLyBJbiB0aGUgRE9NIGNhc2UsIHdlIG9u
bHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgfGFmdGVyQ2hhbmdlfCBpcyBub3QgMC4KLSAgICAv
LyB8YWZ0ZXJDaGFuZ2V8IGlzIDAgaW4gdGhlIHBhcnNlciBjYXNlLCBzbyBpdCB3b3JrcyBvdXQg
dGhhdCB3ZSdsbCBza2lwIHRoaXMgYmxvY2suCi0gICAgaWYgKHBhcmVudC5jaGlsZHJlbkFmZmVj
dGVkQnlGaXJzdENoaWxkUnVsZXMoKSAmJiBlbGVtZW50QWZ0ZXJDaGFuZ2UpIHsKLSAgICAgICAg
Ly8gRmluZCBvdXIgbmV3IGZpcnN0IGNoaWxkLgotICAgICAgICBSZWZQdHI8RWxlbWVudD4gbmV3
Rmlyc3RFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZChwYXJlbnQpOwotICAg
ICAgICAvLyBGaW5kIHRoZSBmaXJzdCBlbGVtZW50IG5vZGUgZm9sbG93aW5nIHxhZnRlckNoYW5n
ZXwKLQotICAgICAgICAvLyBUaGlzIGlzIHRoZSBpbnNlcnQvYXBwZW5kIGNhc2UuCi0gICAgICAg
IGlmIChuZXdGaXJzdEVsZW1lbnQgIT0gZWxlbWVudEFmdGVyQ2hhbmdlKSB7Ci0gICAgICAgICAg
ICBhdXRvKiBzdHlsZSA9IGVsZW1lbnRBZnRlckNoYW5nZS0+cmVuZGVyU3R5bGUoKTsKLSAgICAg
ICAgICAgIGlmICghc3R5bGUgfHwgc3R5bGUtPmZpcnN0Q2hpbGRTdGF0ZSgpKQotICAgICAgICAg
ICAgICAgIGVsZW1lbnRBZnRlckNoYW5nZS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVy
bmFsKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gaGFuZGxlIG5v
ZGUgcmVtb3ZhbC4KLSAgICAgICAgaWYgKGNoZWNrVHlwZSA9PSBTaWJsaW5nRWxlbWVudFJlbW92
ZWQgJiYgbmV3Rmlyc3RFbGVtZW50ID09IGVsZW1lbnRBZnRlckNoYW5nZSAmJiBuZXdGaXJzdEVs
ZW1lbnQpIHsKLSAgICAgICAgICAgIGF1dG8qIHN0eWxlID0gbmV3Rmlyc3RFbGVtZW50LT5yZW5k
ZXJTdHlsZSgpOwotICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmZpcnN0Q2hpbGRT
dGF0ZSgpKQotICAgICAgICAgICAgICAgIG5ld0ZpcnN0RWxlbWVudC0+aW52YWxpZGF0ZVN0eWxl
Rm9yU3VidHJlZUludGVybmFsKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyA6bGFzdC1j
aGlsZC4gIEluIHRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2ZSB0byBjaGVj
ayBhbnl0aGluZywgc2luY2Ugd2Ugd2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4KLSAgICAvLyBJ
biB0aGUgRE9NIGNhc2UsIHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgfGFmdGVyQ2hh
bmdlfCBpcyBub3QgMC4KLSAgICBpZiAocGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGls
ZFJ1bGVzKCkgJiYgZWxlbWVudEJlZm9yZUNoYW5nZSkgewotICAgICAgICAvLyBGaW5kIG91ciBu
ZXcgbGFzdCBjaGlsZC4KLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0xhc3RFbGVtZW50ID0g
RWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKHBhcmVudCk7Ci0KLSAgICAgICAgaWYgKG5ld0xh
c3RFbGVtZW50ICE9IGVsZW1lbnRCZWZvcmVDaGFuZ2UpIHsKLSAgICAgICAgICAgIGF1dG8qIHN0
eWxlID0gZWxlbWVudEJlZm9yZUNoYW5nZS0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgIGlm
ICghc3R5bGUgfHwgc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkpCi0gICAgICAgICAgICAgICAgZWxl
bWVudEJlZm9yZUNoYW5nZS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gaGFuZGxlIG5vZGUgcmVtb3Zh
bC4gIFRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSBpcyBzaW1pbGFyIHRvIG5vZGUgcmVtb3ZhbCBh
cyB3ZWxsIGluIHRoYXQgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIGxhc3QgY2hpbGQKLSAgICAgICAg
Ly8gdG8gbWF0Y2ggbm93LgotICAgICAgICBpZiAoKGNoZWNrVHlwZSA9PSBTaWJsaW5nRWxlbWVu
dFJlbW92ZWQgfHwgY2hlY2tUeXBlID09IEZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKSAmJiBuZXdM
YXN0RWxlbWVudCA9PSBlbGVtZW50QmVmb3JlQ2hhbmdlICYmIG5ld0xhc3RFbGVtZW50KSB7Ci0g
ICAgICAgICAgICBhdXRvKiBzdHlsZSA9IG5ld0xhc3RFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwot
ICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkpCi0gICAg
ICAgICAgICAgICAgbmV3TGFzdEVsZW1lbnQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRl
cm5hbCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaW52YWxpZGF0ZUZvclNpYmxpbmdDb21i
aW5hdG9ycyhlbGVtZW50QWZ0ZXJDaGFuZ2UpOwotCi0gICAgaW52YWxpZGF0ZUZvckZvcndhcmRQ
b3NpdGlvbmFsUnVsZXMocGFyZW50LCBlbGVtZW50QWZ0ZXJDaGFuZ2UpOwotICAgIGludmFsaWRh
dGVGb3JCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhwYXJlbnQsIGVsZW1lbnRCZWZvcmVDaGFuZ2Up
OwotfQotCiB2b2lkIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYg
Y2hhbmdlKQogewogICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwot
ICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKLSAg
ICAgICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKCp0aGlzKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgYXV0byBjaGVja1R5cGUgPSBjaGFuZ2UudHlwZSA9PSBDaGlsZENoYW5nZTo6VHlwZTo6RWxl
bWVudFJlbW92ZWQgPyBTaWJsaW5nRWxlbWVudFJlbW92ZWQgOiBPdGhlcjsKLSAgICAgICAgY2hl
Y2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKCp0aGlzLCBjaGVja1R5cGUsIGNoYW5nZS5wcmV2aW91
c1NpYmxpbmdFbGVtZW50LCBjaGFuZ2UubmV4dFNpYmxpbmdFbGVtZW50KTsKLSAgICB9CiAKLSAg
ICBpZiAoU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRoaXMtPnNoYWRvd1Jvb3QoKSkgeworICAg
IGlmIChhdXRvKiBzaGFkb3dSb290ID0gdGhpcy0+c2hhZG93Um9vdCgpKSB7CiAgICAgICAgIHN3
aXRjaCAoY2hhbmdlLnR5cGUpIHsKICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6RWxl
bWVudEluc2VydGVkOgogICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50UmVt
b3ZlZDoKQEAgLTI4MDIsNyArMjY5MCw4IEBAIHZvaWQgRWxlbWVudDo6ZmluaXNoUGFyc2luZ0No
aWxkcmVuKCkKIHsKICAgICBDb250YWluZXJOb2RlOjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsK
ICAgICBzZXRJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCk7Ci0gICAgY2hlY2tGb3JTaWJsaW5n
U3R5bGVDaGFuZ2VzKCp0aGlzLCBGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbiwgRWxlbWVudFRyYXZl
cnNhbDo6bGFzdENoaWxkKCp0aGlzKSwgbnVsbHB0cik7CisKKyAgICBTdHlsZTo6Q2hpbGRDaGFu
Z2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVBZnRlckZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCp0
aGlzKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kQXR0cmlidXRlcyhTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggMDRj
ZTY1ZGU2ZTg3MmNmMDkzZDJjY2FmMGRmMThhYjk2ZTdhNGU4Mi4uZWY3Y2U4OTk4ZGUwM2YyMGY0
MjBmMDk1YzM4MTdkZDA1MTQzMWVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC03NjMsNiArNzYz
LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RWxlbWVudERhdGE+IG1fZWxlbWVudERhdGE7CiB9
OwogCit2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMoRWxlbWVudCogc2libGlu
Zyk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihXZWJDb3JlOjpFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvQ2hpbGRD
aGFuZ2VJbnZhbGlkYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyOWY1YjgzZjdhMzI5ZmZhMmIwY2M2
ZTdiZjU1NWU4NTFiNDdmM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAKQEAgLTAsMCArMSwxNzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2hpbGRDaGFuZ2VJbnZhbGlkYXRp
b24uaCIKKworI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKKyNpbmNsdWRlICJTbG90QXNzaWdubWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZTo6
U3R5bGUgeworCitDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRp
b24oQ29udGFpbmVyTm9kZSYgY29udGFpbmVyLCBjb25zdCBDb250YWluZXJOb2RlOjpDaGlsZENo
YW5nZSYgY2hpbGRDaGFuZ2UpCisgICAgOiBtX3BhcmVudEVsZW1lbnQoaXM8RWxlbWVudD4oY29u
dGFpbmVyKSA/IGRvd25jYXN0PEVsZW1lbnQ+KCZjb250YWluZXIpIDogbnVsbHB0cikKKyAgICAs
IG1faXNFbmFibGVkKG1fcGFyZW50RWxlbWVudCA/IG1fcGFyZW50RWxlbWVudC0+bmVlZHNTdHls
ZUludmFsaWRhdGlvbigpIDogZmFsc2UpCisgICAgLCBtX2NoaWxkQ2hhbmdlKGNoaWxkQ2hhbmdl
KQoreworICAgIC8vIEZJWE1FOiBEbyBzbWFydGVyIGludmFsaWRhdGlvbiBzaW1pbGF0IHRvIENs
YXNzQ2hhbmdlSW52YWxpZGF0aW9uLgorfQorCitDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6fkNo
aWxkQ2hhbmdlSW52YWxpZGF0aW9uKCkKK3sKKyAgICBpZiAoIW1faXNFbmFibGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpbnZhbGlkYXRlQWZ0ZXJDaGFuZ2UoKTsKK30KKworc3RhdGljIHZv
aWQgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgaWYg
KCFlbGVtZW50LnN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8qIHN0eWxlID0gZWxlbWVudC5yZW5kZXJTdHlsZSgpOworICAgIGlmICghc3R5bGUgfHwg
KCFzdHlsZS0+ZW1wdHlTdGF0ZSgpIHx8IGVsZW1lbnQuaGFzQ2hpbGROb2RlcygpKSkKKyAgICAg
ICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Cit9CisKK3N0YXRpYyB2b2lk
IGludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxl
bWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQoreworICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZCA9
IHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CisgICAg
Ym9vbCBkZXNjZW5kYW50c0FmZmVjdGVkID0gcGFyZW50LmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKworICAgIGlmICghY2hpbGRyZW5BZmZlY3RlZCAmJiAh
ZGVzY2VuZGFudHNBZmZlY3RlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvKiBz
aWJsaW5nID0gZWxlbWVudEFmdGVyQ2hhbmdlOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+
bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkcmVuQWZmZWN0ZWQpCisg
ICAgICAgICAgICBzaWJsaW5nLT5pbnZhbGlkYXRlU3R5bGVJbnRlcm5hbCgpOworICAgICAgICBp
ZiAoZGVzY2VuZGFudHNBZmZlY3RlZCkgeworICAgICAgICAgICAgZm9yIChhdXRvKiBzaWJsaW5n
Q2hpbGQgPSBzaWJsaW5nLT5maXJzdEVsZW1lbnRDaGlsZCgpOyBzaWJsaW5nQ2hpbGQ7IHNpYmxp
bmdDaGlsZCA9IHNpYmxpbmdDaGlsZC0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpCisgICAgICAgICAg
ICAgICAgc2libGluZ0NoaWxkLT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgaW52YWxpZGF0ZUZvckJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxlbWVudCogZWxlbWVudEJlZm9yZUNo
YW5nZSkKK3sKKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWQgPSBwYXJlbnQuY2hpbGRyZW5BZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICBib29sIGRlc2NlbmRhbnRzQWZm
ZWN0ZWQgPSBwYXJlbnQuZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMoKTsKKworICAgIGlmICghY2hpbGRyZW5BZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNBZmZlY3Rl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudEJl
Zm9yZUNoYW5nZTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNp
YmxpbmcoKSkgeworICAgICAgICBpZiAoY2hpbGRyZW5BZmZlY3RlZCkKKyAgICAgICAgICAgIHNp
YmxpbmctPmludmFsaWRhdGVTdHlsZUludGVybmFsKCk7CisgICAgICAgIGlmIChkZXNjZW5kYW50
c0FmZmVjdGVkKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8qIHNpYmxpbmdDaGlsZCA9IHNpYmxp
bmctPmZpcnN0RWxlbWVudENoaWxkKCk7IHNpYmxpbmdDaGlsZDsgc2libGluZ0NoaWxkID0gc2li
bGluZ0NoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKKyAgICAgICAgICAgICAgICBzaWJsaW5n
Q2hpbGQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOworICAgICAgICB9Cisg
ICAgfQorfQorCit2b2lkIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlQWZ0ZXJD
aGFuZ2UoKQoreworICAgIGNoZWNrRm9yRW1wdHlTdHlsZUNoYW5nZShwYXJlbnRFbGVtZW50KCkp
OworCisgICAgaWYgKG1fY2hpbGRDaGFuZ2Uuc291cmNlID09IENvbnRhaW5lck5vZGU6OkNoaWxk
Q2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgY2hlY2tGb3JT
aWJsaW5nU3R5bGVDaGFuZ2VzKCk7Cit9CisKK3ZvaWQgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246
OmludmFsaWRhdGVBZnRlckZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKEVsZW1lbnQmIHBhcmVudCkK
K3sKKyAgICBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UocGFyZW50KTsKKworICAgIGF1dG8qIGxh
c3RDaGlsZEVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQocGFyZW50KTsKKyAg
ICBpZiAoIWxhc3RDaGlsZEVsZW1lbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHN0
eWxlID0gbGFzdENoaWxkRWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKKyAgICBpZiAoIXN0eWxlIHx8
ICFzdHlsZS0+bGFzdENoaWxkU3RhdGUoKSkKKyAgICAgICAgbGFzdENoaWxkRWxlbWVudC0+aW52
YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7CisKKyAgICBpbnZhbGlkYXRlRm9yQmFj
a3dhcmRQb3NpdGlvbmFsUnVsZXMocGFyZW50LCBsYXN0Q2hpbGRFbGVtZW50KTsKK30KKwordm9p
ZCBDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6Y2hlY2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKCkK
K3sKKyAgICBhdXRvJiBwYXJlbnQgPSBwYXJlbnRFbGVtZW50KCk7CisgICAgYXV0byogZWxlbWVu
dEJlZm9yZUNoYW5nZSA9IG1fY2hpbGRDaGFuZ2UucHJldmlvdXNTaWJsaW5nRWxlbWVudDsKKyAg
ICBhdXRvKiBlbGVtZW50QWZ0ZXJDaGFuZ2UgPSBtX2NoaWxkQ2hhbmdlLm5leHRTaWJsaW5nRWxl
bWVudDsKKworICAgIC8vIDpmaXJzdC1jaGlsZC4gSW4gdGhlIHBhcnNlciBjYWxsYmFjayBjYXNl
LCB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrIGFueXRoaW5nLCBzaW5jZSB3ZSB3ZXJlIHJpZ2h0IHRo
ZSBmaXJzdCB0aW1lLgorICAgIC8vIEluIHRoZSBET00gY2FzZSwgd2Ugb25seSBuZWVkIHRvIGRv
IHNvbWV0aGluZyBpZiB8YWZ0ZXJDaGFuZ2V8IGlzIG5vdCAwLgorICAgIC8vIHxhZnRlckNoYW5n
ZXwgaXMgMCBpbiB0aGUgcGFyc2VyIGNhc2UsIHNvIGl0IHdvcmtzIG91dCB0aGF0IHdlJ2xsIHNr
aXAgdGhpcyBibG9jay4KKyAgICBpZiAocGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hp
bGRSdWxlcygpICYmIGVsZW1lbnRBZnRlckNoYW5nZSkgeworICAgICAgICAvLyBGaW5kIG91ciBu
ZXcgZmlyc3QgY2hpbGQuCisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBuZXdGaXJzdEVsZW1lbnQg
PSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdENoaWxkKHBhcmVudCk7CisgICAgICAgIC8vIEZpbmQg
dGhlIGZpcnN0IGVsZW1lbnQgbm9kZSBmb2xsb3dpbmcgfGFmdGVyQ2hhbmdlfAorCisgICAgICAg
IC8vIFRoaXMgaXMgdGhlIGluc2VydC9hcHBlbmQgY2FzZS4KKyAgICAgICAgaWYgKG5ld0ZpcnN0
RWxlbWVudCAhPSBlbGVtZW50QWZ0ZXJDaGFuZ2UpIHsKKyAgICAgICAgICAgIGF1dG8qIHN0eWxl
ID0gZWxlbWVudEFmdGVyQ2hhbmdlLT5yZW5kZXJTdHlsZSgpOworICAgICAgICAgICAgaWYgKCFz
dHlsZSB8fCBzdHlsZS0+Zmlyc3RDaGlsZFN0YXRlKCkpCisgICAgICAgICAgICAgICAgZWxlbWVu
dEFmdGVyQ2hhbmdlLT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIFdlIGFsc28gaGF2ZSB0byBoYW5kbGUgbm9kZSByZW1vdmFsLgor
ICAgICAgICBpZiAobV9jaGlsZENoYW5nZS50eXBlID09IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hh
bmdlOjpUeXBlOjpFbGVtZW50UmVtb3ZlZCAmJiBuZXdGaXJzdEVsZW1lbnQgPT0gZWxlbWVudEFm
dGVyQ2hhbmdlICYmIG5ld0ZpcnN0RWxlbWVudCkgeworICAgICAgICAgICAgYXV0byogc3R5bGUg
PSBuZXdGaXJzdEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7CisgICAgICAgICAgICBpZiAoIXN0eWxl
IHx8ICFzdHlsZS0+Zmlyc3RDaGlsZFN0YXRlKCkpCisgICAgICAgICAgICAgICAgbmV3Rmlyc3RF
bGVtZW50LT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIDpsYXN0LWNoaWxkLiBJbiB0aGUgcGFyc2VyIGNhbGxiYWNrIGNhc2Us
IHdlIGRvbid0IGhhdmUgdG8gY2hlY2sgYW55dGhpbmcsIHNpbmNlIHdlIHdlcmUgcmlnaHQgdGhl
IGZpcnN0IHRpbWUuCisgICAgLy8gSW4gdGhlIERPTSBjYXNlLCB3ZSBvbmx5IG5lZWQgdG8gZG8g
c29tZXRoaW5nIGlmIHxhZnRlckNoYW5nZXwgaXMgbm90IDAuCisgICAgaWYgKHBhcmVudC5jaGls
ZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpICYmIGVsZW1lbnRCZWZvcmVDaGFuZ2UpIHsK
KyAgICAgICAgLy8gRmluZCBvdXIgbmV3IGxhc3QgY2hpbGQuCisgICAgICAgIFJlZlB0cjxFbGVt
ZW50PiBuZXdMYXN0RWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RDaGlsZChwYXJlbnQp
OworCisgICAgICAgIGlmIChuZXdMYXN0RWxlbWVudCAhPSBlbGVtZW50QmVmb3JlQ2hhbmdlKSB7
CisgICAgICAgICAgICBhdXRvKiBzdHlsZSA9IGVsZW1lbnRCZWZvcmVDaGFuZ2UtPnJlbmRlclN0
eWxlKCk7CisgICAgICAgICAgICBpZiAoIXN0eWxlIHx8IHN0eWxlLT5sYXN0Q2hpbGRTdGF0ZSgp
KQorICAgICAgICAgICAgICAgIGVsZW1lbnRCZWZvcmVDaGFuZ2UtPmludmFsaWRhdGVTdHlsZUZv
clN1YnRyZWVJbnRlcm5hbCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2UgYWxzbyBoYXZl
IHRvIGhhbmRsZSBub2RlIHJlbW92YWwuCisgICAgICAgIGlmIChtX2NoaWxkQ2hhbmdlLnR5cGUg
PT0gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRSZW1vdmVkICYmIG5l
d0xhc3RFbGVtZW50ID09IGVsZW1lbnRCZWZvcmVDaGFuZ2UgJiYgbmV3TGFzdEVsZW1lbnQpIHsK
KyAgICAgICAgICAgIGF1dG8qIHN0eWxlID0gbmV3TGFzdEVsZW1lbnQtPnJlbmRlclN0eWxlKCk7
CisgICAgICAgICAgICBpZiAoIXN0eWxlIHx8ICFzdHlsZS0+bGFzdENoaWxkU3RhdGUoKSkKKyAg
ICAgICAgICAgICAgICBuZXdMYXN0RWxlbWVudC0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUlu
dGVybmFsKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpbnZhbGlkYXRlRm9yU2libGluZ0Nv
bWJpbmF0b3JzKGVsZW1lbnRBZnRlckNoYW5nZSk7CisKKyAgICBpbnZhbGlkYXRlRm9yRm9yd2Fy
ZFBvc2l0aW9uYWxSdWxlcyhwYXJlbnQsIGVsZW1lbnRBZnRlckNoYW5nZSk7CisgICAgaW52YWxp
ZGF0ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKHBhcmVudCwgZWxlbWVudEJlZm9yZUNoYW5n
ZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NoaWxkQ2hhbmdl
SW52YWxpZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUludmFsaWRh
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY3MTI5ZGQ0MGE3OWY2NGNkYmYyYzQyMGQ4YjQ0MzEwOGZlMmUy
NzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUlu
dmFsaWRhdGlvbi5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNl
IFN0eWxlIHsKKworY2xhc3MgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24geworcHVibGljOgorICAg
IENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uKENvbnRhaW5lck5vZGUmLCBjb25zdCBDb250YWluZXJO
b2RlOjpDaGlsZENoYW5nZSYpOworICAgIH5DaGlsZENoYW5nZUludmFsaWRhdGlvbigpOworCisg
ICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZUFmdGVyRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oRWxl
bWVudCYpOworCitwcml2YXRlOgorICAgIHZvaWQgaW52YWxpZGF0ZUFmdGVyQ2hhbmdlKCk7Cisg
ICAgdm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoKTsKKworICAgIEVsZW1lbnQmIHBh
cmVudEVsZW1lbnQoKSB7IHJldHVybiAqbV9wYXJlbnRFbGVtZW50OyB9CisKKyAgICBFbGVtZW50
KiBtX3BhcmVudEVsZW1lbnQgeyBudWxscHRyIH07CisgICAgY29uc3QgYm9vbCBtX2lzRW5hYmxl
ZDsKKworICAgIGNvbnN0IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlJiBtX2NoaWxkQ2hhbmdl
OworfTsKKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVBZGp1
c3Rlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVBZGp1c3Rlci5oCmluZGV4IDE5MTMx
ZTU4MGY1NjQ1YWVhMjIzMjgyOTRlOWQ3NjFlYmY4MzVkNjcuLjk3MmExYWJkMTUyMDYwNTYwMTgz
NDMxZjY0ODQ3OTk4MzhkOTlkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlQWRqdXN0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUFkanVzdGVyLmgK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVD
b25zdGFudHMuaCIKKyNpbmNsdWRlICJUZXh0U2l6ZUFkanVzdG1lbnQuaCIKICNpbmNsdWRlIDx3
dGYvT3B0aW9uU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444959</attachid>
            <date>2021-11-22 06:02:23 -0800</date>
            <delta_ts>2021-11-22 06:03:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233311-20211122160222.patch</filename>
            <type>text/plain</type>
            <size>42102</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ0YWUwOGI5ZjZjNGJm
MDUxZDc3YWFkOGNjNWEzNDA4NzZjODZmNy4uNTY0MjQ1NGQyODZjMTA4MmMwZTBiYTQxMDA0Njg2
NmI0OWUyYWRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIxLTExLTE4ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgY2hpbGQgY2hh
bmdlIGludmFsaWRhdGlvbiBpbnRvIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBBbGFuIEJ1
anRhcy4KKworICAgICAgICBVc2Ugc2ltaWxhciBwYXR0ZXJuIGFzIENsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uIGFuZCBvdGhlcnMgd2hlcmUgd2UgY3JlYXRlIGEgc3RhY2sgb2JqZWN0IHNjb3BlZAor
ICAgICAgICBvdmVyIGEgRE9NIG11dGF0aW9uLiBUaGlzIHdpbGwgYWxsb3cgbW9yZSBzb3BoaXN0
aWNhdGVkIHJ1bGVzZXQgYmFzZWQgaW52YWxpZGF0aW9uIGluCisgICAgICAgIGZ1dHVyZS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBpbnZhbGlkYXRpb24gY29kZSBmcm9tIGNoaWxk
cmVuQ2hhbmdlZCgpIHRvIHRoZSBuZXcgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24gY2xhc3MuCisg
ICAgICAgIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uIGlzIGluc3RhbnRpYXRlZCBpbiBDb250YWlu
ZXJOb2RlIGFuZCBDaGFyYWN0ZXJEYXRhIG11dGF0aW9uIGZ1bmN0aW9ucworICAgICAgICB0aGF0
IGNhbGwgY2hpbGRyZW5DaGFuZ2VkKCkuIEl0IHVzZXMgdGhlIHNhbWUgQ2hpbGRDaGFuZ2UgYXJn
dW1lbnQgdHlwZSBhcyBjaGlsZHJlbkNoYW5nZWQoKS4KKworICAgICAgICBUaGVyZSBhcmUgbm8g
Y2hhbmdlcyB0byBpbnZhbGlkYXRpb24gZnVuY3Rpb25hbGl0eSBpbiB0aGlzIHBhdGNoLgorCisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1ha2VDaGlsZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRh
OjpwYXJzZXJBcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OnNl
dERhdGFBbmRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6bm90aWZ5
UGFyZW50QWZ0ZXJDaGFuZ2UpOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmg6CisgICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Om1ha2VDaGlsZENoYW5nZUZvclJlbW92YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6bWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFp
bmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpy
ZXBsYWNlQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxk
V2l0aG91dFByZUluc2VydGlvblZhbGlkaXR5Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6YWZmZWN0
c0VsZW1lbnRzKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppbnZhbGlkYXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZpbmlzaFBh
cnNpbmdDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0ZvckVtcHR5U3R5bGVDaGFu
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvckZvcndhcmRQb3Np
dGlvbmFsUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvckJh
Y2t3YXJkUG9zaXRpb25hbFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNoZWNr
Rm9yU2libGluZ1N0eWxlQ2hhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0VsZW1lbnQu
aDoKKyAgICAgICAgKiBzdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjpDaGlsZENo
YW5nZUludmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJ
bnZhbGlkYXRpb246On5DaGlsZENoYW5nZUludmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVBZnRlckNoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmNoZWNr
Rm9yRW1wdHlTdHlsZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6aW52YWxpZGF0
ZUZvckZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Omlu
dmFsaWRhdGVGb3JCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdl
cyk6CisgICAgICAgICogc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OnBhcmVudEVs
ZW1lbnQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlQWRqdXN0ZXIuaDoKKwogMjAyMS0xMS0yMSAg
QWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRp
b25dIEVuYWJsZSBiaWRpIGNvbnRlbnQgZm9yIG5vbi1pbmxpbmUtYm94IGNhc2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDIwYTNkOGM4M2E2ZGY4YjY3ZjI0NzI1MzA5MTFjMjI5MTQ3ZjU5NjQuLjhmNzll
Y2U4Y2M3YzA1OTk4YTk1ZmNhMmI1YmU2NDMyN2ViY2U3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0y
NTI0LDYgKzI1MjQsNyBAQCBzdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCiBzdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci5jcHAKIHN0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdlci5jcHAKIHN0
eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAKK3N0eWxlL0NoaWxkQ2hhbmdlSW52
YWxpZGF0aW9uLmNwcAogc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCiBzdHlsZS9F
bGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKIHN0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDg3NTU3NDQwODg0Njk0ZjdlN2UzMTMyNDA3YzNmYzkzOGRkZmRlYWMuLjA0ZTk2OTg0NGRm
YmYzOGY3OTVjY2NmZTZiYmM2NTRhN2UwN2VhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzNDIsNiArNTM0Miw3IEBACiAJ
CUU0QzE3ODlCMEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzE3ODk2MEVFNjkwMzgwMDgy
NEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFNEMyNzk1OTBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVk
aWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzI3
OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0QzNCMUZBMEYwRTQxNjEwMDk2OTNGNiAv
KiBMZWdhY3lUaWxlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0QzNCMUY5MEYwRTQxNjEwMDk2OTNGNiAvKiBMZWdhY3lUaWxlQ2FjaGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNEM0QzYx
QTI3NDUyQTc5MDBBMDQwRTcgLyogQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzRDNjE4Mjc0NTJBNzkwMEEw
NDBFNyAvKiBDaGlsZENoYW5nZUludmFsaWRhdGlvbi5oICovOyB9OwogCQlFNEM5MUEwRTE4MDIz
NDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzkxQTBEMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFp
bnRTdHlsZS5oICovOyB9OwogCQlFNEM5MUExNjE4MDk5OUYxMDBBMTdGNkQgLyogUmVuZGVyVGV4
dExpbmVCb3hlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRDOTFBMTUxODA5OTlGMTAwQTE3RjZEIC8qIFJlbmRlclRleHRMaW5lQm94ZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEQzM0YzQjI1
MkFFRUNEMDA4MzdEMDUgLyogSW5saW5lUnVuQW5kT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQzM0YzOTI1MkFFRUNDMDA4MzdEMDUgLyog
SW5saW5lUnVuQW5kT2Zmc2V0LmggKi87IH07CkBAIC0xNzA0Niw2ICsxNzA0Nyw4IEBACiAJCUU0
QzI3OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZWRpYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNEMzQjFGOTBGMEU0MTYxMDA5NjkzRjYgLyogTGVnYWN5VGlsZUNhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2FjeVRpbGVDYWNoZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNEMzQjFGQjBGMEU0MTcwMDA5NjkzRjYgLyogTGVnYWN5VGls
ZUNhY2hlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5
VGlsZUNhY2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEM0QzYxODI3NDUy
QTc5MDBBMDQwRTcgLyogQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTRDNEM2MUIyNzQ1MkE4QTAwQTA0MEU3IC8qIENoaWxkQ2hhbmdl
SW52YWxpZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoaWxkQ2hhbmdlSW52YWxpZGF0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRDOTFBMEQxODAyMzQzMTAw
QTE3RjZEIC8qIFRleHRQYWludFN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRleHRQYWludFN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0Qzkx
QTBGMTgwMjM0MzkwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGFpbnRTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0QzkxQTE1MTgwOTk5RjEwMEExN0Y2RCAvKiBSZW5kZXJUZXh0TGlu
ZUJveGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRleHRMaW5l
Qm94ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwMjgyLDYgKzMwMjg1LDgg
QEAKIAkJCQlFNEE4MTRENzFDNzBFMTA1MDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxp
ZGF0aW9uLmNwcCAqLywKIAkJCQlFNEE4MTREOTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRl
Q2hhbmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJRTRBQkFCRjQyMzY4QzZFRjAwRkE0MzQ1IC8q
IENhc2NhZGVMZXZlbC5oICovLAorCQkJCUU0QzRDNjFCMjc0NTJBOEEwMEEwNDBFNyAvKiBDaGls
ZENoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8sCisJCQkJRTRDNEM2MTgyNzQ1MkE3OTAwQTA0MEU3
IC8qIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJRTRBODE0RDUxQzZERUU4RDAw
QkY4NUFDIC8qIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLywKIAkJCQlFNEE4MTREMzFD
NkRFQzQwMDBCRjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlGQkRC
NjE5QTE2RDYwMzJBMDBCQjMzOTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwICovLApAQCAt
MzI3MzcsNiArMzI3NDIsNyBAQAogCQkJCTkzRjJDQzkzMjQyN0ZCOUMwMDU4NTFEOCAvKiBDaGFy
YWN0ZXJSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCOEZGRDExNkFFN0Y5NjAwMzgzODhE
IC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY1NUIzREIyMTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTRDNEM2MUEyNzQ1MkE3OTAwQTA0MEU3IC8qIENoaWxkQ2hhbmdlSW52YWxp
ZGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlENjE5QTMwODE0NEUwMEJFMDA0QkMzMDIgLyog
Q2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMjAwOTc3
RDNDMDAwNTgyNkQ5IC8qIENoaWxkTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RDgy
MzUyMEFGOTJBNzkwMDA0RjA1NyAvKiBDaHJvbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IDJlNjVjNjI0NDk3MzM3ZTZiOTAwYWUzOTAwYzFh
MTI2Yzk3ZDZjODguLjg5NzdlMjQ3ZjJiYWZlM2JmMjVmOTJiYTkzMjQ5OTllZGI5NDIzY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNs
dWRlICJDaGFyYWN0ZXJEYXRhLmgiCiAKICNpbmNsdWRlICJBdHRyLmgiCisjaW5jbHVkZSAiQ2hp
bGRDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCkBAIC03
Myw2ICs3NCwxNiBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IENoYXJhY3RlckRhdGE6OnN1YnN0cmlu
Z0RhdGEodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudAogICAgIHJldHVybiBtX2RhdGEu
c3Vic3RyaW5nKG9mZnNldCwgY291bnQpOwogfQogCitzdGF0aWMgQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2UgbWFrZUNoaWxkQ2hhbmdlKENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEsIENv
bnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNlKQoreworICAgIHJldHVybiB7
CisgICAgICAgIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdlZCwK
KyAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoYXJhY3RlckRhdGEp
LAorICAgICAgICBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGFyYWN0ZXJEYXRhKSwK
KyAgICAgICAgc291cmNlCisgICAgfTsKK30KKwogdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFy
c2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGhMaW1pdCkKIHsKICAgICB1bnNpZ25lZCBvbGRMZW5ndGggPSBtX2RhdGEubGVu
Z3RoKCk7CkBAIC05NSw2ICsxMDYsMTEgQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2Vy
QXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIGlm
ICghY2hhcmFjdGVyTGVuZ3RoTGltaXQpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgYXV0byBj
aGlsZENoYW5nZSA9IG1ha2VDaGlsZENoYW5nZSgqdGhpcywgQ29udGFpbmVyTm9kZTo6Q2hpbGRD
aGFuZ2U6OlNvdXJjZTo6UGFyc2VyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpDaGlsZENo
YW5nZUludmFsaWRhdGlvbj4gc3R5bGVJbnZhbGlkYXRpb247CisgICAgaWYgKGF1dG8qIHBhcmVu
dCA9IHBhcmVudE5vZGUoKSkKKyAgICAgICAgc3R5bGVJbnZhbGlkYXRpb24uZW1wbGFjZSgqcGFy
ZW50LCBjaGlsZENoYW5nZSk7CisKICAgICBTdHJpbmcgb2xkRGF0YSA9IG1fZGF0YTsKICAgICBp
ZiAoc3RyaW5nLmlzOEJpdCgpKQogICAgICAgICBtX2RhdGEuYXBwZW5kKHN0cmluZy5jaGFyYWN0
ZXJzOCgpICsgb2Zmc2V0LCBjaGFyYWN0ZXJMZW5ndGhMaW1pdCk7CkBAIC0xMDUsNyArMTIxLDcg
QEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcm
IHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIGlmIChpczxUZXh0PigqdGhpcykpCiAgICAg
ICAgIGRvd25jYXN0PFRleHQ+KCp0aGlzKS51cGRhdGVSZW5kZXJlckFmdGVyQ29udGVudENoYW5n
ZShvbGRMZW5ndGgsIDApOwogCi0gICAgbm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoQ29udGFpbmVy
Tm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKTsKKyAgICBub3RpZnlQYXJlbnRBZnRl
ckNoYW5nZShjaGlsZENoYW5nZSk7CiAKICAgICBhdXRvIG11dGF0aW9uUmVjaXBpZW50cyA9IE11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JDaGFyYWN0ZXJEYXRhTXV0YXRp
b24oKnRoaXMpOwogICAgIGlmIChVTkxJS0VMWShtdXRhdGlvblJlY2lwaWVudHMpKQpAQCAtMTcz
LDYgKzE4OSwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDaGFyYWN0ZXJEYXRhOjpzZXROb2RlVmFs
dWUoY29uc3QgU3RyaW5nJiBub2RlVmFsdWUpCiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0
YUFuZFVwZGF0ZShjb25zdCBTdHJpbmcmIG5ld0RhdGEsIHVuc2lnbmVkIG9mZnNldE9mUmVwbGFj
ZWREYXRhLCB1bnNpZ25lZCBvbGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCwgVXBkYXRlTGl2
ZVJhbmdlcyBzaG91bGRVcGRhdGVMaXZlUmFuZ2VzKQogeworICAgIGF1dG8gY2hpbGRDaGFuZ2Ug
PSBtYWtlQ2hpbGRDaGFuZ2UoKnRoaXMsIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3Vy
Y2U6OkFQSSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRh
dGlvbj4gc3R5bGVJbnZhbGlkYXRpb247CisgICAgaWYgKGF1dG8qIHBhcmVudCA9IHBhcmVudE5v
ZGUoKSkKKyAgICAgICAgc3R5bGVJbnZhbGlkYXRpb24uZW1wbGFjZSgqcGFyZW50LCBjaGlsZENo
YW5nZSk7CisKICAgICBTdHJpbmcgb2xkRGF0YSA9IG1fZGF0YTsKICAgICBtX2RhdGEgPSBuZXdE
YXRhOwogCkBAIC0xOTEsMjYgKzIxMywxOSBAQCB2b2lkIENoYXJhY3RlckRhdGE6OnNldERhdGFB
bmRVcGRhdGUoY29uc3QgU3RyaW5nJiBuZXdEYXRhLCB1bnNpZ25lZCBvZmZzZXRPZlJlcAogICAg
IGlmIChkb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgIGRvY3VtZW50KCkuZnJhbWUoKS0+c2Vs
ZWN0aW9uKCkudGV4dFdhc1JlcGxhY2VkKHRoaXMsIG9mZnNldE9mUmVwbGFjZWREYXRhLCBvbGRM
ZW5ndGgsIG5ld0xlbmd0aCk7CiAKLSAgICBub3RpZnlQYXJlbnRBZnRlckNoYW5nZShDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpBUEkpOworICAgIG5vdGlmeVBhcmVudEFmdGVy
Q2hhbmdlKGNoaWxkQ2hhbmdlKTsKIAogICAgIGRpc3BhdGNoTW9kaWZpZWRFdmVudChvbGREYXRh
KTsKIH0KIAotdm9pZCBDaGFyYWN0ZXJEYXRhOjpub3RpZnlQYXJlbnRBZnRlckNoYW5nZShDb250
YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSkKK3ZvaWQgQ2hhcmFjdGVyRGF0
YTo6bm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2UmIGNoaWxkQ2hhbmdlKQogewogICAgIGRvY3VtZW50KCkuaW5jRE9NVHJlZVZlcnNpb24oKTsK
IAogICAgIGlmICghcGFyZW50Tm9kZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZSBjaGFuZ2UgPSB7Ci0gICAgICAgIENvbnRhaW5lck5vZGU6OkNo
aWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdlZCwKLSAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6
cHJldmlvdXNTaWJsaW5nKCp0aGlzKSwKLSAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNp
YmxpbmcoKnRoaXMpLAotICAgICAgICBzb3VyY2UKLSAgICB9OwotCi0gICAgcGFyZW50Tm9kZSgp
LT5jaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKKyAgICBwYXJlbnROb2RlKCktPmNoaWxkcmVuQ2hh
bmdlZChjaGlsZENoYW5nZSk7CiB9CiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6ZGlzcGF0Y2hNb2Rp
ZmllZEV2ZW50KGNvbnN0IFN0cmluZyYgb2xkRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0
YS5oCmluZGV4IGM1OTQ3MzViZWNiMDlhMzZlNjU0MjlmMjI5NjZjZmExMzMwZjkzODEuLjM2YTQ5
MjU0MDdlOTEzY2NjYTczZTkwZGUwMzJhYjVmYjg3NzRhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJh
Y3RlckRhdGEuaApAQCAtNjUsNyArNjUsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFN0
cmluZyBub2RlVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRO
b2RlVmFsdWUoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlQYXJlbnRBZnRl
ckNoYW5nZShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlKTsKKyAgICB2b2lkIG5v
dGlmeVBhcmVudEFmdGVyQ2hhbmdlKGNvbnN0IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlJik7
CiAKICAgICBTdHJpbmcgbV9kYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAppbmRleCA2ZDhmZDFmZDU3NzA5MjBiODEyMzFkMzE1NmZlNTNiODg5NGM4OTgzLi4yYmUwZDRk
YjAzM2M2OTc4MzRkNzFkYmY5MzQ0N2UwMmZkOTVkYjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCiAjaW5jbHVkZSAiQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2hp
bGRDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJDaGlsZExpc3RNdXRhdGlvblNjb3Bl
LmgiCiAjaW5jbHVkZSAiQ2xhc3NDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIK
QEAgLTExMSwyOSArMTEyLDUyIEBAIEFMV0FZU19JTkxJTkUgTm9kZVZlY3RvciBDb250YWluZXJO
b2RlOjpyZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpCiAKICAgICBkaXNj
b25uZWN0U3ViZnJhbWVzSWZOZWVkZWQoKnRoaXMsIERlc2NlbmRhbnRzT25seSk7CiAKKyAgICBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZSBjaGlsZENoYW5nZSB7IENoaWxkQ2hhbmdlOjpUeXBl
OjpBbGxDaGlsZHJlblJlbW92ZWQsIG51bGxwdHIsIG51bGxwdHIsIHNvdXJjZSB9OworCiAgICAg
V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNwZW5kV2lkZ2V0SGllcmFy
Y2h5VXBkYXRlczsKICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3Jp
cHREaXNhbGxvd2VkU2NvcGU7CisgICAgeworICAgICAgICBTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZh
bGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIGNoaWxkQ2hhbmdlKTsKIAotICAgIGlm
IChVTkxJS0VMWShpc1NoYWRvd1Jvb3QoKSB8fCBpc0luU2hhZG93VHJlZSgpKSkKLSAgICAgICAg
Y29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+d2lsbFJlbW92ZUFsbENoaWxkcmVuKCp0aGlzKTsKKyAg
ICAgICAgaWYgKFVOTElLRUxZKGlzU2hhZG93Um9vdCgpIHx8IGlzSW5TaGFkb3dUcmVlKCkpKQor
ICAgICAgICAgICAgY29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+d2lsbFJlbW92ZUFsbENoaWxkcmVu
KCp0aGlzKTsKIAotICAgIGRvY3VtZW50KCkubm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZCgqdGhp
cyk7CisgICAgICAgIGRvY3VtZW50KCkubm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZCgqdGhpcyk7
CiAKLSAgICB3aGlsZSAoUmVmUHRyPE5vZGU+IGNoaWxkID0gbV9maXJzdENoaWxkKSB7Ci0gICAg
ICAgIHJlbW92ZUJldHdlZW4obnVsbHB0ciwgY2hpbGQtPm5leHRTaWJsaW5nKCksICpjaGlsZCk7
Ci0gICAgICAgIGF1dG8gc3VidHJlZU9ic2VydmFiaWxpdHkgPSBub3RpZnlDaGlsZE5vZGVSZW1v
dmVkKCp0aGlzLCAqY2hpbGQpOwotICAgICAgICBpZiAoc291cmNlID09IENoaWxkQ2hhbmdlOjpT
b3VyY2U6OkFQSSAmJiBzdWJ0cmVlT2JzZXJ2YWJpbGl0eSA9PSBSZW1vdmVkU3VidHJlZU9ic2Vy
dmFiaWxpdHk6Ok1heWJlT2JzZXJ2YWJsZUJ5UmVmUHRyKQotICAgICAgICAgICAgd2lsbENyZWF0
ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKGNoaWxkLmdldCgpKTsKKyAgICAgICAgd2hp
bGUgKFJlZlB0cjxOb2RlPiBjaGlsZCA9IG1fZmlyc3RDaGlsZCkgeworICAgICAgICAgICAgcmVt
b3ZlQmV0d2VlbihudWxscHRyLCBjaGlsZC0+bmV4dFNpYmxpbmcoKSwgKmNoaWxkKTsKKyAgICAg
ICAgICAgIGF1dG8gc3VidHJlZU9ic2VydmFiaWxpdHkgPSBub3RpZnlDaGlsZE5vZGVSZW1vdmVk
KCp0aGlzLCAqY2hpbGQpOworICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBDaGlsZENoYW5nZTo6
U291cmNlOjpBUEkgJiYgc3VidHJlZU9ic2VydmFiaWxpdHkgPT0gUmVtb3ZlZFN1YnRyZWVPYnNl
cnZhYmlsaXR5OjpNYXliZU9ic2VydmFibGVCeVJlZlB0cikKKyAgICAgICAgICAgICAgICB3aWxs
Q3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoY2hpbGQuZ2V0KCkpOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3Vt
ZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNPcnBoYW4oKSk7CiAKICAgICBpZiAoZGVm
ZXJDaGlsZHJlbkNoYW5nZWQgPT0gRGVmZXJDaGlsZHJlbkNoYW5nZWQ6Ok5vKQotICAgICAgICBj
aGlsZHJlbkNoYW5nZWQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgeyBDaGlsZENoYW5nZTo6
VHlwZTo6QWxsQ2hpbGRyZW5SZW1vdmVkLCBudWxscHRyLCBudWxscHRyLCBzb3VyY2UgfSk7Cisg
ICAgICAgIGNoaWxkcmVuQ2hhbmdlZChjaGlsZENoYW5nZSk7CiAKICAgICByZXR1cm4gY2hpbGRy
ZW47CiB9CiAKK3N0YXRpYyBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSBtYWtlQ2hpbGRDaGFu
Z2VGb3JSZW1vdmFsKE5vZGUmIGNoaWxkVG9SZW1vdmUsIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hh
bmdlOjpTb3VyY2Ugc291cmNlKQoreworICAgIGF1dG8gY2hhbmdlVHlwZSA9IFsmXSB7CisgICAg
ICAgIGlmIChpczxFbGVtZW50PihjaGlsZFRvUmVtb3ZlKSkKKyAgICAgICAgICAgIHJldHVybiBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6RWxlbWVudFJlbW92ZWQ7CisgICAgICAg
IGlmIChpczxUZXh0PihjaGlsZFRvUmVtb3ZlKSkKKyAgICAgICAgICAgIHJldHVybiBDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6VGV4dFJlbW92ZWQ7CisgICAgICAgIHJldHVybiBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29udGVudHNDaGlsZFJlbW92ZWQ7
CisgICAgfSgpOworCisgICAgcmV0dXJuIHsKKyAgICAgICAgY2hhbmdlVHlwZSwKKyAgICAgICAg
RWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkVG9SZW1vdmUpLAorICAgICAg
ICBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGlsZFRvUmVtb3ZlKSwKKyAgICAgICAg
c291cmNlCisgICAgfTsKK30KKwogQUxXQVlTX0lOTElORSBib29sIENvbnRhaW5lck5vZGU6OnJl
bW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9SZW1vdmUsIENoaWxkQ2hh
bmdlOjpTb3VyY2Ugc291cmNlKQogewogICAgIFJlZjxOb2RlPiBwcm90ZWN0ZWRDaGlsZFRvUmVt
b3ZlKGNoaWxkVG9SZW1vdmUpOwpAQCAtMTYyLDExICsxODYsMTMgQEAgQUxXQVlTX0lOTElORSBi
b29sIENvbnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNo
aWxkVG9SZW0KICAgICBpZiAoY2hpbGRUb1JlbW92ZS5wYXJlbnROb2RlKCkgIT0gdGhpcykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ2hpbGRDaGFuZ2UgY2hhbmdlOworICAgIGF1dG8g
Y2hpbGRDaGFuZ2UgPSBtYWtlQ2hpbGRDaGFuZ2VGb3JSZW1vdmFsKGNoaWxkVG9SZW1vdmUsIHNv
dXJjZSk7CisKICAgICBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHkgc3VidHJlZU9ic2VydmFi
aWxpdHk7CiAgICAgewogICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNj
b3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogICAgICAgICBTY3JpcHREaXNhbGxv
d2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CisgICAgICAgIFN0
eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgY2hp
bGRDaGFuZ2UpOwogCiAgICAgICAgIGlmIChVTkxJS0VMWShpc1NoYWRvd1Jvb3QoKSB8fCBpc0lu
U2hhZG93VHJlZSgpKSkKICAgICAgICAgICAgIGNvbnRhaW5pbmdTaGFkb3dSb290KCktPnJlc29s
dmVTbG90c0JlZm9yZU5vZGVJbnNlcnRpb25PclJlbW92YWwoKTsKQEAgLTE3OCwxNyArMjA0LDkg
QEAgQUxXQVlTX0lOTElORSBib29sIENvbnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0
QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9SZW0KIAogICAgICAgICBSZWZQdHI8Tm9kZT4gcHJldmlv
dXNTaWJsaW5nID0gY2hpbGRUb1JlbW92ZS5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgUmVm
UHRyPE5vZGU+IG5leHRTaWJsaW5nID0gY2hpbGRUb1JlbW92ZS5uZXh0U2libGluZygpOworCiAg
ICAgICAgIHJlbW92ZUJldHdlZW4ocHJldmlvdXNTaWJsaW5nLmdldCgpLCBuZXh0U2libGluZy5n
ZXQoKSwgY2hpbGRUb1JlbW92ZSk7CiAgICAgICAgIHN1YnRyZWVPYnNlcnZhYmlsaXR5ID0gbm90
aWZ5Q2hpbGROb2RlUmVtb3ZlZCgqdGhpcywgY2hpbGRUb1JlbW92ZSk7Ci0KLSAgICAgICAgY2hh
bmdlLnR5cGUgPSBpczxFbGVtZW50PihjaGlsZFRvUmVtb3ZlKSA/Ci0gICAgICAgICAgICBDaGls
ZENoYW5nZTo6VHlwZTo6RWxlbWVudFJlbW92ZWQgOgotICAgICAgICAgICAgKGlzPFRleHQ+KGNo
aWxkVG9SZW1vdmUpID8KLSAgICAgICAgICAgICAgICBDaGlsZENoYW5nZTo6VHlwZTo6VGV4dFJl
bW92ZWQgOgotICAgICAgICAgICAgICAgIENoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0No
aWxkUmVtb3ZlZCk7Ci0gICAgICAgIGNoYW5nZS5wcmV2aW91c1NpYmxpbmdFbGVtZW50ID0gKCFw
cmV2aW91c1NpYmxpbmcgfHwgaXM8RWxlbWVudD4oKnByZXZpb3VzU2libGluZykpID8gZG93bmNh
c3Q8RWxlbWVudD4ocHJldmlvdXNTaWJsaW5nLmdldCgpKSA6IEVsZW1lbnRUcmF2ZXJzYWw6OnBy
ZXZpb3VzU2libGluZygqcHJldmlvdXNTaWJsaW5nKTsKLSAgICAgICAgY2hhbmdlLm5leHRTaWJs
aW5nRWxlbWVudCA9ICghbmV4dFNpYmxpbmcgfHwgaXM8RWxlbWVudD4oKm5leHRTaWJsaW5nKSkg
PyBkb3duY2FzdDxFbGVtZW50PihuZXh0U2libGluZy5nZXQoKSkgOiBFbGVtZW50VHJhdmVyc2Fs
OjpuZXh0U2libGluZygqbmV4dFNpYmxpbmcpOwotICAgICAgICBjaGFuZ2Uuc291cmNlID0gc291
cmNlOwogICAgIH0KIAogICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJ
ICYmIHN1YnRyZWVPYnNlcnZhYmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eTo6
TWF5YmVPYnNlcnZhYmxlQnlSZWZQdHIpCkBAIC0xOTcsMjEgKzIxNSw0NSBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24oTm9k
ZSYgY2hpbGRUb1JlbQogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFkb2N1
bWVudCgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzT3JwaGFuKCkpOwogCiAgICAgLy8gRklY
TUU6IE1vdmUgY2hpbGRyZW5DaGFuZ2VkIGludG8gU2NyaXB0RGlzYWxsb3dlZFNjb3BlIGJsb2Nr
LgotICAgIGNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOworICAgIGNoaWxkcmVuQ2hhbmdlZChjaGls
ZENoYW5nZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogZW51bSBjbGFzcyBSZXBsYWNlZEFs
bENoaWxkcmVuIHsgTm8sIFllcyB9OwogCitzdGF0aWMgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2UgbWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9uKENvbnRhaW5lck5vZGUmIGNvbnRhaW5lck5v
ZGUsIE5vZGUmIGNoaWxkLCBOb2RlKiBiZWZvcmVDaGlsZCwgQ29udGFpbmVyTm9kZTo6Q2hpbGRD
aGFuZ2U6OlNvdXJjZSBzb3VyY2UsIFJlcGxhY2VkQWxsQ2hpbGRyZW4gcmVwbGFjZWRBbGxDaGls
ZHJlbikKK3sKKyAgICBpZiAocmVwbGFjZWRBbGxDaGlsZHJlbiA9PSBSZXBsYWNlZEFsbENoaWxk
cmVuOjpZZXMpCisgICAgICAgIHJldHVybiB7IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpU
eXBlOjpBbGxDaGlsZHJlblJlcGxhY2VkLCBudWxscHRyLCBudWxscHRyLCBzb3VyY2UgfTsKKwor
ICAgIGF1dG8gY2hhbmdlVHlwZSA9IFsmXSB7CisgICAgICAgIGlmIChpczxFbGVtZW50PihjaGls
ZCkpCisgICAgICAgICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6
OkVsZW1lbnRJbnNlcnRlZDsKKyAgICAgICAgaWYgKGlzPFRleHQ+KGNoaWxkKSkKKyAgICAgICAg
ICAgIHJldHVybiBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6VGV4dEluc2VydGVk
OworICAgICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNv
bnRlbnRzQ2hpbGRJbnNlcnRlZDsKKyAgICB9KCk7CisKKyAgICByZXR1cm4geworICAgICAgICBj
aGFuZ2VUeXBlLAorICAgICAgICBiZWZvcmVDaGlsZCA/IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZp
b3VzU2libGluZygqYmVmb3JlQ2hpbGQpIDogRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKGNv
bnRhaW5lck5vZGUpLAorICAgICAgICAhYmVmb3JlQ2hpbGQgfHwgaXM8RWxlbWVudD4oKmJlZm9y
ZUNoaWxkKSA/IGRvd25jYXN0PEVsZW1lbnQ+KGJlZm9yZUNoaWxkKSA6IEVsZW1lbnRUcmF2ZXJz
YWw6Om5leHRTaWJsaW5nKCpiZWZvcmVDaGlsZCksCisgICAgICAgIHNvdXJjZQorICAgIH07Cit9
CisKIHRlbXBsYXRlPHR5cGVuYW1lIERPTUluc2VydGlvbldvcms+Ci1zdGF0aWMgQUxXQVlTX0lO
TElORSB2b2lkIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbihDb250YWlu
ZXJOb2RlJiBjb250YWluZXJOb2RlLCBOb2RlJiBjaGlsZCwKK3N0YXRpYyBBTFdBWVNfSU5MSU5F
IHZvaWQgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKENvbnRhaW5lck5v
ZGUmIGNvbnRhaW5lck5vZGUsIE5vZGUmIGNoaWxkLCBOb2RlKiBiZWZvcmVDaGlsZCwKICAgICBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSwgUmVwbGFjZWRBbGxDaGls
ZHJlbiByZXBsYWNlZEFsbENoaWxkcmVuLCBET01JbnNlcnRpb25Xb3JrIGRvTm9kZUluc2VydGlv
bikKIHsKKyAgICBhdXRvIGNoaWxkQ2hhbmdlID0gbWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9u
KGNvbnRhaW5lck5vZGUsIGNoaWxkLCBiZWZvcmVDaGlsZCwgc291cmNlLCByZXBsYWNlZEFsbENo
aWxkcmVuKTsKKwogICAgIE5vZGVWZWN0b3IgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdl
dHM7CiAgICAgewogICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3Bl
IHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogICAgICAgICBTY3JpcHREaXNhbGxvd2Vk
U2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CisgICAgICAgIFN0eWxl
OjpDaGlsZENoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbihjb250YWluZXJOb2Rl
LCBjaGlsZENoYW5nZSk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGNvbnRhaW5lck5vZGUuaXNT
aGFkb3dSb290KCkgfHwgY29udGFpbmVyTm9kZS5pc0luU2hhZG93VHJlZSgpKSkKICAgICAgICAg
ICAgIGNvbnRhaW5lck5vZGUuY29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+cmVzb2x2ZVNsb3RzQmVm
b3JlTm9kZUluc2VydGlvbk9yUmVtb3ZhbCgpOwpAQCAtMjIyLDIwICsyNjQsNyBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlv
bihDb250YWluZXJOb2RlJgogICAgIH0KIAogICAgIC8vIEZJWE1FOiBNb3ZlIGNoaWxkcmVuQ2hh
bmdlZCBpbnRvIFNjcmlwdERpc2FsbG93ZWRTY29wZSBibG9jay4KLSAgICBpZiAocmVwbGFjZWRB
bGxDaGlsZHJlbiA9PSBSZXBsYWNlZEFsbENoaWxkcmVuOjpZZXMpCi0gICAgICAgIGNvbnRhaW5l
ck5vZGUuY2hpbGRyZW5DaGFuZ2VkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlIHsgQ29udGFp
bmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OkFsbENoaWxkcmVuUmVwbGFjZWQsIG51bGxwdHIs
IG51bGxwdHIsIHNvdXJjZSB9KTsKLSAgICBlbHNlIHsKLSAgICAgICAgY29udGFpbmVyTm9kZS5j
aGlsZHJlbkNoYW5nZWQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgewotICAgICAgICAgICAg
Y2hpbGQuaXNFbGVtZW50Tm9kZSgpID8KLSAgICAgICAgICAgICAgICBDb250YWluZXJOb2RlOjpD
aGlsZENoYW5nZTo6VHlwZTo6RWxlbWVudEluc2VydGVkIDoKLSAgICAgICAgICAgICAgICAoY2hp
bGQuaXNUZXh0Tm9kZSgpID8KLSAgICAgICAgICAgICAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2U6OlR5cGU6OlRleHRJbnNlcnRlZCA6Ci0gICAgICAgICAgICAgICAgICAgIENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0NoaWxkSW5zZXJ0ZWQpLAot
ICAgICAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkKSwKLSAg
ICAgICAgICAgIEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGNoaWxkKSwKLSAgICAgICAg
ICAgIHNvdXJjZQotICAgICAgICB9KTsKLSAgICB9CisgICAgY29udGFpbmVyTm9kZS5jaGlsZHJl
bkNoYW5nZWQoY2hpbGRDaGFuZ2UpOwogCiAgICAgQVNTRVJUKFNjcmlwdERpc2FsbG93ZWRTY29w
ZTo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKGNoaWxkKSk7
CiAgICAgZm9yIChhdXRvJiB0YXJnZXQgOiBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0
cykKQEAgLTQ0OCw3ICs0NzcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjpp
bnNlcnRCZWZvcmUoTm9kZSYgbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkKQogICAgICAgICBpZiAo
Y2hpbGQtPnBhcmVudE5vZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGV4ZWN1
dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQuZ2V0KCksIENo
aWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7Cisg
ICAgICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hp
bGQuZ2V0KCksIG5leHQucHRyKCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRB
bGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0VHJlZVNjb3BlUmVj
dXJzaXZlbHkodHJlZVNjb3BlKCkpOwogICAgICAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5l
eHQsIGNoaWxkKTsKICAgICAgICAgfSk7CkBAIC01MDcsNyArNTM2LDcgQEAgdm9pZCBDb250YWlu
ZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUoTm9kZSYgbmV3Q2hpbGQsIE5vZGUmIG5leHRDaGls
ZCkKICAgICBpZiAobmV4dENoaWxkLnByZXZpb3VzU2libGluZygpID09ICZuZXdDaGlsZCB8fCAm
bmV4dENoaWxkID09ICZuZXdDaGlsZCkgLy8gbm90aGluZyB0byBkbwogICAgICAgICByZXR1cm47
CiAKLSAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIG5l
d0NoaWxkLCBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsIFJlcGxhY2VkQWxsQ2hpbGRyZW46
Ok5vLCBbJl0geworICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigq
dGhpcywgbmV3Q2hpbGQsICZuZXh0Q2hpbGQsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwg
UmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgIGlmICgmZG9jdW1lbnQoKSAh
PSAmbmV3Q2hpbGQuZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50KCkuYWRvcHROb2Rl
KG5ld0NoaWxkKTsKIApAQCAtNTgxLDcgKzYxMCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRh
aW5lck5vZGU6OnJlcGxhY2VDaGlsZChOb2RlJiBuZXdDaGlsZCwgTm9kZSYgb2xkQ2hpbGQpCiAg
ICAgICAgIGlmIChjaGlsZC0+cGFyZW50Tm9kZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBjaGls
ZC5nZXQoKSwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpO
bywgWyZdIHsKKyAgICAgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9u
KCp0aGlzLCBjaGlsZC5nZXQoKSwgcmVmQ2hpbGQuZ2V0KCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6
OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+
c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkodHJlZVNjb3BlKCkpOwogICAgICAgICAgICAgaWYgKHJl
ZkNoaWxkKQogICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZUNvbW1vbigqcmVmQ2hpbGQsIGNo
aWxkLmdldCgpKTsKQEAgLTY4Miw3ICs3MTEsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlcGxh
Y2VBbGwoTm9kZSogbm9kZSkKICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKCp0
aGlzKTsKICAgICByZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpbGRDaGFu
Z2U6OlNvdXJjZTo6QVBJLCBEZWZlckNoaWxkcmVuQ2hhbmdlZDo6WWVzKTsKIAotICAgIGV4ZWN1
dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgKm5vZGUsIENoaWxkQ2hh
bmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6WWVzLCBbJl0geworICAgIGV4
ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgKm5vZGUsIG51bGxw
dHIsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6WWVzLCBb
Jl0gewogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2Rl
KGRvY3VtZW50KCksICp0aGlzKTsKICAgICAgICAgbm9kZS0+c2V0VHJlZVNjb3BlUmVjdXJzaXZl
bHkodHJlZVNjb3BlKCkpOwogICAgICAgICBhcHBlbmRDaGlsZENvbW1vbigqbm9kZSk7CkBAIC03
NjMsNyArNzkyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hp
bGRXaXRob3V0UHJlSW5zZXJ0aW9uVmFsaWRpdHlDaGVjayhOb2QKICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgIC8vIEFwcGVuZCBjaGlsZCB0byB0aGUgZW5kIG9mIHRoZSBsaXN0Ci0gICAg
ICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQu
Z2V0KCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8s
IFsmXSB7CisgICAgICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigq
dGhpcywgY2hpbGQuZ2V0KCksIG51bGxwdHIsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVw
bGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0VHJlZVNj
b3BlUmVjdXJzaXZlbHkodHJlZVNjb3BlKCkpOwogICAgICAgICAgICAgYXBwZW5kQ2hpbGRDb21t
b24oY2hpbGQpOwogICAgICAgICB9KTsKQEAgLTc3OSw3ICs4MDgsNyBAQCB2b2lkIENvbnRhaW5l
ck5vZGU6OnBhcnNlckFwcGVuZENoaWxkKE5vZGUmIG5ld0NoaWxkKQogICAgIEFTU0VSVCghbmV3
Q2hpbGQuaXNEb2N1bWVudEZyYWdtZW50KCkpOwogICAgIEFTU0VSVCghaGFzVGFnTmFtZShIVE1M
TmFtZXM6OnRlbXBsYXRlVGFnKSk7CiAKLSAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3Jp
cHRBc3NlcnRpb24oKnRoaXMsIG5ld0NoaWxkLCBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIs
IFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vLCBbJl0geworICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9u
V2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgbmV3Q2hpbGQsIG51bGxwdHIsIENoaWxkQ2hhbmdl
OjpTb3VyY2U6OlBhcnNlciwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAg
IGlmICgmZG9jdW1lbnQoKSAhPSAmbmV3Q2hpbGQuZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRv
Y3VtZW50KCkuYWRvcHROb2RlKG5ld0NoaWxkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IDVkN2IxYmUyNjE2NDBjZjE0MTBlY2EzZWM5MTczYTQwODlhZmQxOGQuLjRiYjBlMGNiZTZhNDVh
ZGI0OTNmZDQ5M2Q2MWQ2YjUyY2IzNGRmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJBdHRyLmgiCiAjaW5jbHVkZSAiQXR0cmlidXRlQ2hhbmdl
SW52YWxpZGF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiQ2hpbGRD
aGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJv
bWVDbGllbnQuaCIKICNpbmNsdWRlICJDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIgpAQCAtMjAz
OCw3ICsyMDM5LDcgQEAgU3R5bGU6OkVsZW1lbnRTdHlsZSBFbGVtZW50OjpyZXNvbHZlU3R5bGUo
Y29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0JiByZXNvbHUKICAgICByZXR1cm4gc3R5bGVS
ZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqdGhpcywgcmVzb2x1dGlvbkNvbnRleHQpOwogfQog
Ci1zdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKEVsZW1lbnQqIHNp
YmxpbmcpCit2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMoRWxlbWVudCogc2li
bGluZykKIHsKICAgICBmb3IgKDsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVt
ZW50U2libGluZygpKSB7CiAgICAgICAgIGlmIChzaWJsaW5nLT5zdHlsZUlzQWZmZWN0ZWRCeVBy
ZXZpb3VzU2libGluZygpKQpAQCAtMjY0MiwxMjQgKzI2NDMsMTEgQEAgYm9vbCBFbGVtZW50Ojpj
aGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlIHR5cGUpIGNvbnN0CiAgICAgfQogICAgIHJldHVybiBm
YWxzZTsKIH0KLQotc3RhdGljIHZvaWQgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKEVsZW1lbnQm
IGVsZW1lbnQpCi17Ci0gICAgaWYgKGVsZW1lbnQuc3R5bGVBZmZlY3RlZEJ5RW1wdHkoKSkgewot
ICAgICAgICBhdXRvKiBzdHlsZSA9IGVsZW1lbnQucmVuZGVyU3R5bGUoKTsKLSAgICAgICAgaWYg
KCFzdHlsZSB8fCAoIXN0eWxlLT5lbXB0eVN0YXRlKCkgfHwgZWxlbWVudC5oYXNDaGlsZE5vZGVz
KCkpKQotICAgICAgICAgICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Ci0g
ICAgfQotfQotCi0KLXN0YXRpYyB2b2lkIGludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1
bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxlbWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQotewotICAg
IGJvb2wgY2hpbGRyZW5BZmZlY3RlZCA9IHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVkID0gcGFyZW50
LmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLQotICAgIGlm
ICghY2hpbGRyZW5BZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNBZmZlY3RlZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudEFmdGVyQ2hhbmdlOyBzaWJs
aW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAg
aWYgKGNoaWxkcmVuQWZmZWN0ZWQpCi0gICAgICAgICAgICBzaWJsaW5nLT5pbnZhbGlkYXRlU3R5
bGVJbnRlcm5hbCgpOwotICAgICAgICBpZiAoZGVzY2VuZGFudHNBZmZlY3RlZCkgewotICAgICAg
ICAgICAgZm9yIChhdXRvKiBzaWJsaW5nQ2hpbGQgPSBzaWJsaW5nLT5maXJzdEVsZW1lbnRDaGls
ZCgpOyBzaWJsaW5nQ2hpbGQ7IHNpYmxpbmdDaGlsZCA9IHNpYmxpbmdDaGlsZC0+bmV4dEVsZW1l
bnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAgc2libGluZ0NoaWxkLT5pbnZhbGlkYXRlU3R5
bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZv
aWQgaW52YWxpZGF0ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwg
RWxlbWVudCogZWxlbWVudEJlZm9yZUNoYW5nZSkKLXsKLSAgICBib29sIGNoaWxkcmVuQWZmZWN0
ZWQgPSBwYXJlbnQuY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsK
LSAgICBib29sIGRlc2NlbmRhbnRzQWZmZWN0ZWQgPSBwYXJlbnQuZGVzY2VuZGFudHNBZmZlY3Rl
ZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLQotICAgIGlmICghY2hpbGRyZW5BZmZlY3Rl
ZCAmJiAhZGVzY2VuZGFudHNBZmZlY3RlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChh
dXRvKiBzaWJsaW5nID0gZWxlbWVudEJlZm9yZUNoYW5nZTsgc2libGluZzsgc2libGluZyA9IHNp
YmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoY2hpbGRyZW5B
ZmZlY3RlZCkKLSAgICAgICAgICAgIHNpYmxpbmctPmludmFsaWRhdGVTdHlsZUludGVybmFsKCk7
Ci0gICAgICAgIGlmIChkZXNjZW5kYW50c0FmZmVjdGVkKSB7Ci0gICAgICAgICAgICBmb3IgKGF1
dG8qIHNpYmxpbmdDaGlsZCA9IHNpYmxpbmctPmZpcnN0RWxlbWVudENoaWxkKCk7IHNpYmxpbmdD
aGlsZDsgc2libGluZ0NoaWxkID0gc2libGluZ0NoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkK
LSAgICAgICAgICAgICAgICBzaWJsaW5nQ2hpbGQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJ
bnRlcm5hbCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1lbnVtIFNpYmxpbmdDaGVja1R5cGUg
eyBGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbiwgU2libGluZ0VsZW1lbnRSZW1vdmVkLCBPdGhlciB9
OwotCi1zdGF0aWMgdm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoRWxlbWVudCYgcGFy
ZW50LCBTaWJsaW5nQ2hlY2tUeXBlIGNoZWNrVHlwZSwgRWxlbWVudCogZWxlbWVudEJlZm9yZUNo
YW5nZSwgRWxlbWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQotewotICAgIC8vIDplbXB0eSBzZWxl
Y3Rvci4KLSAgICBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UocGFyZW50KTsKLQotICAgIGlmIChw
YXJlbnQuc3R5bGVWYWxpZGl0eSgpID49IFN0eWxlOjpWYWxpZGl0eTo6U3VidHJlZUludmFsaWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIDpmaXJzdC1jaGlsZC4gIEluIHRoZSBwYXJzZXIg
Y2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnl0aGluZywgc2luY2Ugd2Ug
d2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4KLSAgICAvLyBJbiB0aGUgRE9NIGNhc2UsIHdlIG9u
bHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgfGFmdGVyQ2hhbmdlfCBpcyBub3QgMC4KLSAgICAv
LyB8YWZ0ZXJDaGFuZ2V8IGlzIDAgaW4gdGhlIHBhcnNlciBjYXNlLCBzbyBpdCB3b3JrcyBvdXQg
dGhhdCB3ZSdsbCBza2lwIHRoaXMgYmxvY2suCi0gICAgaWYgKHBhcmVudC5jaGlsZHJlbkFmZmVj
dGVkQnlGaXJzdENoaWxkUnVsZXMoKSAmJiBlbGVtZW50QWZ0ZXJDaGFuZ2UpIHsKLSAgICAgICAg
Ly8gRmluZCBvdXIgbmV3IGZpcnN0IGNoaWxkLgotICAgICAgICBSZWZQdHI8RWxlbWVudD4gbmV3
Rmlyc3RFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZChwYXJlbnQpOwotICAg
ICAgICAvLyBGaW5kIHRoZSBmaXJzdCBlbGVtZW50IG5vZGUgZm9sbG93aW5nIHxhZnRlckNoYW5n
ZXwKLQotICAgICAgICAvLyBUaGlzIGlzIHRoZSBpbnNlcnQvYXBwZW5kIGNhc2UuCi0gICAgICAg
IGlmIChuZXdGaXJzdEVsZW1lbnQgIT0gZWxlbWVudEFmdGVyQ2hhbmdlKSB7Ci0gICAgICAgICAg
ICBhdXRvKiBzdHlsZSA9IGVsZW1lbnRBZnRlckNoYW5nZS0+cmVuZGVyU3R5bGUoKTsKLSAgICAg
ICAgICAgIGlmICghc3R5bGUgfHwgc3R5bGUtPmZpcnN0Q2hpbGRTdGF0ZSgpKQotICAgICAgICAg
ICAgICAgIGVsZW1lbnRBZnRlckNoYW5nZS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVy
bmFsKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gaGFuZGxlIG5v
ZGUgcmVtb3ZhbC4KLSAgICAgICAgaWYgKGNoZWNrVHlwZSA9PSBTaWJsaW5nRWxlbWVudFJlbW92
ZWQgJiYgbmV3Rmlyc3RFbGVtZW50ID09IGVsZW1lbnRBZnRlckNoYW5nZSAmJiBuZXdGaXJzdEVs
ZW1lbnQpIHsKLSAgICAgICAgICAgIGF1dG8qIHN0eWxlID0gbmV3Rmlyc3RFbGVtZW50LT5yZW5k
ZXJTdHlsZSgpOwotICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmZpcnN0Q2hpbGRT
dGF0ZSgpKQotICAgICAgICAgICAgICAgIG5ld0ZpcnN0RWxlbWVudC0+aW52YWxpZGF0ZVN0eWxl
Rm9yU3VidHJlZUludGVybmFsKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyA6bGFzdC1j
aGlsZC4gIEluIHRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2ZSB0byBjaGVj
ayBhbnl0aGluZywgc2luY2Ugd2Ugd2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4KLSAgICAvLyBJ
biB0aGUgRE9NIGNhc2UsIHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgfGFmdGVyQ2hh
bmdlfCBpcyBub3QgMC4KLSAgICBpZiAocGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGls
ZFJ1bGVzKCkgJiYgZWxlbWVudEJlZm9yZUNoYW5nZSkgewotICAgICAgICAvLyBGaW5kIG91ciBu
ZXcgbGFzdCBjaGlsZC4KLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0xhc3RFbGVtZW50ID0g
RWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKHBhcmVudCk7Ci0KLSAgICAgICAgaWYgKG5ld0xh
c3RFbGVtZW50ICE9IGVsZW1lbnRCZWZvcmVDaGFuZ2UpIHsKLSAgICAgICAgICAgIGF1dG8qIHN0
eWxlID0gZWxlbWVudEJlZm9yZUNoYW5nZS0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgIGlm
ICghc3R5bGUgfHwgc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkpCi0gICAgICAgICAgICAgICAgZWxl
bWVudEJlZm9yZUNoYW5nZS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gaGFuZGxlIG5vZGUgcmVtb3Zh
bC4gIFRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSBpcyBzaW1pbGFyIHRvIG5vZGUgcmVtb3ZhbCBh
cyB3ZWxsIGluIHRoYXQgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIGxhc3QgY2hpbGQKLSAgICAgICAg
Ly8gdG8gbWF0Y2ggbm93LgotICAgICAgICBpZiAoKGNoZWNrVHlwZSA9PSBTaWJsaW5nRWxlbWVu
dFJlbW92ZWQgfHwgY2hlY2tUeXBlID09IEZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKSAmJiBuZXdM
YXN0RWxlbWVudCA9PSBlbGVtZW50QmVmb3JlQ2hhbmdlICYmIG5ld0xhc3RFbGVtZW50KSB7Ci0g
ICAgICAgICAgICBhdXRvKiBzdHlsZSA9IG5ld0xhc3RFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwot
ICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkpCi0gICAg
ICAgICAgICAgICAgbmV3TGFzdEVsZW1lbnQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRl
cm5hbCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaW52YWxpZGF0ZUZvclNpYmxpbmdDb21i
aW5hdG9ycyhlbGVtZW50QWZ0ZXJDaGFuZ2UpOwotCi0gICAgaW52YWxpZGF0ZUZvckZvcndhcmRQ
b3NpdGlvbmFsUnVsZXMocGFyZW50LCBlbGVtZW50QWZ0ZXJDaGFuZ2UpOwotICAgIGludmFsaWRh
dGVGb3JCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhwYXJlbnQsIGVsZW1lbnRCZWZvcmVDaGFuZ2Up
OwotfQotCiB2b2lkIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYg
Y2hhbmdlKQogewogICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwot
ICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKLSAg
ICAgICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKCp0aGlzKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgYXV0byBjaGVja1R5cGUgPSBjaGFuZ2UudHlwZSA9PSBDaGlsZENoYW5nZTo6VHlwZTo6RWxl
bWVudFJlbW92ZWQgPyBTaWJsaW5nRWxlbWVudFJlbW92ZWQgOiBPdGhlcjsKLSAgICAgICAgY2hl
Y2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKCp0aGlzLCBjaGVja1R5cGUsIGNoYW5nZS5wcmV2aW91
c1NpYmxpbmdFbGVtZW50LCBjaGFuZ2UubmV4dFNpYmxpbmdFbGVtZW50KTsKLSAgICB9CiAKLSAg
ICBpZiAoU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRoaXMtPnNoYWRvd1Jvb3QoKSkgeworICAg
IGlmIChhdXRvKiBzaGFkb3dSb290ID0gdGhpcy0+c2hhZG93Um9vdCgpKSB7CiAgICAgICAgIHN3
aXRjaCAoY2hhbmdlLnR5cGUpIHsKICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6RWxl
bWVudEluc2VydGVkOgogICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50UmVt
b3ZlZDoKQEAgLTI4MDIsNyArMjY5MCw4IEBAIHZvaWQgRWxlbWVudDo6ZmluaXNoUGFyc2luZ0No
aWxkcmVuKCkKIHsKICAgICBDb250YWluZXJOb2RlOjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsK
ICAgICBzZXRJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCk7Ci0gICAgY2hlY2tGb3JTaWJsaW5n
U3R5bGVDaGFuZ2VzKCp0aGlzLCBGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbiwgRWxlbWVudFRyYXZl
cnNhbDo6bGFzdENoaWxkKCp0aGlzKSwgbnVsbHB0cik7CisKKyAgICBTdHlsZTo6Q2hpbGRDaGFu
Z2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVBZnRlckZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCp0
aGlzKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kQXR0cmlidXRlcyhTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggMDRj
ZTY1ZGU2ZTg3MmNmMDkzZDJjY2FmMGRmMThhYjk2ZTdhNGU4Mi4uZWY3Y2U4OTk4ZGUwM2YyMGY0
MjBmMDk1YzM4MTdkZDA1MTQzMWVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC03NjMsNiArNzYz
LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RWxlbWVudERhdGE+IG1fZWxlbWVudERhdGE7CiB9
OwogCit2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMoRWxlbWVudCogc2libGlu
Zyk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihXZWJDb3JlOjpFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvQ2hpbGRD
aGFuZ2VJbnZhbGlkYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2YzRhMzViZDQ2ZTViNDU0NjQwZjZm
MDA4NTM2ODc1ODAzNTg5NzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAKQEAgLTAsMCArMSwxNzggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2hpbGRDaGFuZ2VJbnZhbGlkYXRp
b24uaCIKKworI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKKyNpbmNsdWRlICJTbG90QXNzaWdubWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZTo6
U3R5bGUgeworCitDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRp
b24oQ29udGFpbmVyTm9kZSYgY29udGFpbmVyLCBjb25zdCBDb250YWluZXJOb2RlOjpDaGlsZENo
YW5nZSYgY2hpbGRDaGFuZ2UpCisgICAgOiBtX3BhcmVudEVsZW1lbnQoaXM8RWxlbWVudD4oY29u
dGFpbmVyKSA/IGRvd25jYXN0PEVsZW1lbnQ+KCZjb250YWluZXIpIDogbnVsbHB0cikKKyAgICAs
IG1faXNFbmFibGVkKG1fcGFyZW50RWxlbWVudCA/IG1fcGFyZW50RWxlbWVudC0+bmVlZHNTdHls
ZUludmFsaWRhdGlvbigpIDogZmFsc2UpCisgICAgLCBtX2NoaWxkQ2hhbmdlKGNoaWxkQ2hhbmdl
KQoreworICAgIC8vIEZJWE1FOiBEbyBzbWFydGVyIGludmFsaWRhdGlvbiBzaW1pbGF0IHRvIENs
YXNzQ2hhbmdlSW52YWxpZGF0aW9uLgorfQorCitDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6fkNo
aWxkQ2hhbmdlSW52YWxpZGF0aW9uKCkKK3sKKyAgICBpZiAoIW1faXNFbmFibGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpbnZhbGlkYXRlQWZ0ZXJDaGFuZ2UoKTsKK30KKworc3RhdGljIHZv
aWQgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgaWYg
KCFlbGVtZW50LnN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8qIHN0eWxlID0gZWxlbWVudC5yZW5kZXJTdHlsZSgpOworICAgIGlmICghc3R5bGUgfHwg
KCFzdHlsZS0+ZW1wdHlTdGF0ZSgpIHx8IGVsZW1lbnQuaGFzQ2hpbGROb2RlcygpKSkKKyAgICAg
ICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Cit9CisKK3N0YXRpYyB2b2lk
IGludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxl
bWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQoreworICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZCA9
IHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CisgICAg
Ym9vbCBkZXNjZW5kYW50c0FmZmVjdGVkID0gcGFyZW50LmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKworICAgIGlmICghY2hpbGRyZW5BZmZlY3RlZCAmJiAh
ZGVzY2VuZGFudHNBZmZlY3RlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvKiBz
aWJsaW5nID0gZWxlbWVudEFmdGVyQ2hhbmdlOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+
bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkcmVuQWZmZWN0ZWQpCisg
ICAgICAgICAgICBzaWJsaW5nLT5pbnZhbGlkYXRlU3R5bGVJbnRlcm5hbCgpOworICAgICAgICBp
ZiAoZGVzY2VuZGFudHNBZmZlY3RlZCkgeworICAgICAgICAgICAgZm9yIChhdXRvKiBzaWJsaW5n
Q2hpbGQgPSBzaWJsaW5nLT5maXJzdEVsZW1lbnRDaGlsZCgpOyBzaWJsaW5nQ2hpbGQ7IHNpYmxp
bmdDaGlsZCA9IHNpYmxpbmdDaGlsZC0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpCisgICAgICAgICAg
ICAgICAgc2libGluZ0NoaWxkLT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgaW52YWxpZGF0ZUZvckJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxlbWVudCogZWxlbWVudEJlZm9yZUNo
YW5nZSkKK3sKKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWQgPSBwYXJlbnQuY2hpbGRyZW5BZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICBib29sIGRlc2NlbmRhbnRzQWZm
ZWN0ZWQgPSBwYXJlbnQuZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMoKTsKKworICAgIGlmICghY2hpbGRyZW5BZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNBZmZlY3Rl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudEJl
Zm9yZUNoYW5nZTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNp
YmxpbmcoKSkgeworICAgICAgICBpZiAoY2hpbGRyZW5BZmZlY3RlZCkKKyAgICAgICAgICAgIHNp
YmxpbmctPmludmFsaWRhdGVTdHlsZUludGVybmFsKCk7CisgICAgICAgIGlmIChkZXNjZW5kYW50
c0FmZmVjdGVkKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8qIHNpYmxpbmdDaGlsZCA9IHNpYmxp
bmctPmZpcnN0RWxlbWVudENoaWxkKCk7IHNpYmxpbmdDaGlsZDsgc2libGluZ0NoaWxkID0gc2li
bGluZ0NoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKKyAgICAgICAgICAgICAgICBzaWJsaW5n
Q2hpbGQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOworICAgICAgICB9Cisg
ICAgfQorfQorCitzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9yRmlyc3RDaGlsZFN0YXRlKEVsZW1l
bnQmIGNoaWxkKQoreworICAgIGF1dG8qIHN0eWxlID0gY2hpbGQucmVuZGVyU3R5bGUoKTsKKyAg
ICBpZiAoIXN0eWxlIHx8ICFzdHlsZS0+Zmlyc3RDaGlsZFN0YXRlKCkpCisgICAgICAgIGNoaWxk
LmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOworfQorCitzdGF0aWMgdm9pZCBp
bnZhbGlkYXRlRm9yTGFzdENoaWxkU3RhdGUoRWxlbWVudCYgY2hpbGQpCit7CisgICAgYXV0byog
c3R5bGUgPSBjaGlsZC5yZW5kZXJTdHlsZSgpOworICAgIGlmICghc3R5bGUgfHwgIXN0eWxlLT5s
YXN0Q2hpbGRTdGF0ZSgpKQorICAgICAgICBjaGlsZC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVl
SW50ZXJuYWwoKTsKK30KKwordm9pZCBDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0
ZUFmdGVyQ2hhbmdlKCkKK3sKKyAgICBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UocGFyZW50RWxl
bWVudCgpKTsKKworICAgIGlmIChtX2NoaWxkQ2hhbmdlLnNvdXJjZSA9PSBDb250YWluZXJOb2Rl
OjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGNo
ZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcygpOworfQorCit2b2lkIENoaWxkQ2hhbmdlSW52YWxp
ZGF0aW9uOjppbnZhbGlkYXRlQWZ0ZXJGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbihFbGVtZW50JiBw
YXJlbnQpCit7CisgICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKHBhcmVudCk7CisKKyAgICBh
dXRvKiBsYXN0Q2hpbGRFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKHBhcmVu
dCk7CisgICAgaWYgKCFsYXN0Q2hpbGRFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAocGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkpCisgICAgICAgIGlu
dmFsaWRhdGVGb3JMYXN0Q2hpbGRTdGF0ZSgqbGFzdENoaWxkRWxlbWVudCk7CisKKyAgICBpbnZh
bGlkYXRlRm9yQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMocGFyZW50LCBsYXN0Q2hpbGRFbGVtZW50
KTsKK30KKwordm9pZCBDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6Y2hlY2tGb3JTaWJsaW5nU3R5
bGVDaGFuZ2VzKCkKK3sKKyAgICBhdXRvJiBwYXJlbnQgPSBwYXJlbnRFbGVtZW50KCk7CisgICAg
YXV0byogZWxlbWVudEJlZm9yZUNoYW5nZSA9IG1fY2hpbGRDaGFuZ2UucHJldmlvdXNTaWJsaW5n
RWxlbWVudDsKKyAgICBhdXRvKiBlbGVtZW50QWZ0ZXJDaGFuZ2UgPSBtX2NoaWxkQ2hhbmdlLm5l
eHRTaWJsaW5nRWxlbWVudDsKKworICAgIC8vIDpmaXJzdC1jaGlsZC4gSW4gdGhlIHBhcnNlciBj
YWxsYmFjayBjYXNlLCB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrIGFueXRoaW5nLCBzaW5jZSB3ZSB3
ZXJlIHJpZ2h0IHRoZSBmaXJzdCB0aW1lLgorICAgIC8vIEluIHRoZSBET00gY2FzZSwgd2Ugb25s
eSBuZWVkIHRvIGRvIHNvbWV0aGluZyBpZiB8YWZ0ZXJDaGFuZ2V8IGlzIG5vdCAwLgorICAgIC8v
IHxhZnRlckNoYW5nZXwgaXMgMCBpbiB0aGUgcGFyc2VyIGNhc2UsIHNvIGl0IHdvcmtzIG91dCB0
aGF0IHdlJ2xsIHNraXAgdGhpcyBibG9jay4KKyAgICBpZiAocGFyZW50LmNoaWxkcmVuQWZmZWN0
ZWRCeUZpcnN0Q2hpbGRSdWxlcygpICYmIGVsZW1lbnRBZnRlckNoYW5nZSkgeworICAgICAgICAv
LyBGaW5kIG91ciBuZXcgZmlyc3QgY2hpbGQuCisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBuZXdG
aXJzdEVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdENoaWxkKHBhcmVudCk7CisgICAg
ICAgIC8vIEZpbmQgdGhlIGZpcnN0IGVsZW1lbnQgbm9kZSBmb2xsb3dpbmcgfGFmdGVyQ2hhbmdl
fAorCisgICAgICAgIC8vIFRoaXMgaXMgdGhlIGluc2VydC9hcHBlbmQgY2FzZS4KKyAgICAgICAg
aWYgKG5ld0ZpcnN0RWxlbWVudCAhPSBlbGVtZW50QWZ0ZXJDaGFuZ2UpCisgICAgICAgICAgICBp
bnZhbGlkYXRlRm9yRmlyc3RDaGlsZFN0YXRlKCplbGVtZW50QWZ0ZXJDaGFuZ2UpOworCisgICAg
ICAgIC8vIFdlIGFsc28gaGF2ZSB0byBoYW5kbGUgbm9kZSByZW1vdmFsLgorICAgICAgICBpZiAo
bV9jaGlsZENoYW5nZS50eXBlID09IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpF
bGVtZW50UmVtb3ZlZCAmJiBuZXdGaXJzdEVsZW1lbnQgPT0gZWxlbWVudEFmdGVyQ2hhbmdlKQor
ICAgICAgICAgICAgaW52YWxpZGF0ZUZvckZpcnN0Q2hpbGRTdGF0ZSgqbmV3Rmlyc3RFbGVtZW50
KTsKKyAgICB9CisKKyAgICAvLyA6bGFzdC1jaGlsZC4gSW4gdGhlIHBhcnNlciBjYWxsYmFjayBj
YXNlLCB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrIGFueXRoaW5nLCBzaW5jZSB3ZSB3ZXJlIHJpZ2h0
IHRoZSBmaXJzdCB0aW1lLgorICAgIC8vIEluIHRoZSBET00gY2FzZSwgd2Ugb25seSBuZWVkIHRv
IGRvIHNvbWV0aGluZyBpZiB8YWZ0ZXJDaGFuZ2V8IGlzIG5vdCAwLgorICAgIGlmIChwYXJlbnQu
Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSAmJiBlbGVtZW50QmVmb3JlQ2hhbmdl
KSB7CisgICAgICAgIC8vIEZpbmQgb3VyIG5ldyBsYXN0IGNoaWxkLgorICAgICAgICBSZWZQdHI8
RWxlbWVudD4gbmV3TGFzdEVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQocGFy
ZW50KTsKKworICAgICAgICBpZiAobmV3TGFzdEVsZW1lbnQgIT0gZWxlbWVudEJlZm9yZUNoYW5n
ZSkKKyAgICAgICAgICAgIGludmFsaWRhdGVGb3JMYXN0Q2hpbGRTdGF0ZSgqZWxlbWVudEJlZm9y
ZUNoYW5nZSk7CisKKyAgICAgICAgLy8gV2UgYWxzbyBoYXZlIHRvIGhhbmRsZSBub2RlIHJlbW92
YWwuCisgICAgICAgIGlmIChtX2NoaWxkQ2hhbmdlLnR5cGUgPT0gQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRSZW1vdmVkICYmIG5ld0xhc3RFbGVtZW50ID09IGVsZW1l
bnRCZWZvcmVDaGFuZ2UpCisgICAgICAgICAgICBpbnZhbGlkYXRlRm9yTGFzdENoaWxkU3RhdGUo
Km5ld0xhc3RFbGVtZW50KTsKKyAgICB9CisKKyAgICBpbnZhbGlkYXRlRm9yU2libGluZ0NvbWJp
bmF0b3JzKGVsZW1lbnRBZnRlckNoYW5nZSk7CisKKyAgICBpbnZhbGlkYXRlRm9yRm9yd2FyZFBv
c2l0aW9uYWxSdWxlcyhwYXJlbnQsIGVsZW1lbnRBZnRlckNoYW5nZSk7CisgICAgaW52YWxpZGF0
ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKHBhcmVudCwgZWxlbWVudEJlZm9yZUNoYW5nZSk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NoaWxkQ2hhbmdlSW52
YWxpZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY3MTI5ZGQ0MGE3OWY2NGNkYmYyYzQyMGQ4YjQ0MzEwOGZlMmUyNzgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUludmFs
aWRhdGlvbi5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFN0
eWxlIHsKKworY2xhc3MgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24geworcHVibGljOgorICAgIENo
aWxkQ2hhbmdlSW52YWxpZGF0aW9uKENvbnRhaW5lck5vZGUmLCBjb25zdCBDb250YWluZXJOb2Rl
OjpDaGlsZENoYW5nZSYpOworICAgIH5DaGlsZENoYW5nZUludmFsaWRhdGlvbigpOworCisgICAg
c3RhdGljIHZvaWQgaW52YWxpZGF0ZUFmdGVyRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oRWxlbWVu
dCYpOworCitwcml2YXRlOgorICAgIHZvaWQgaW52YWxpZGF0ZUFmdGVyQ2hhbmdlKCk7CisgICAg
dm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoKTsKKworICAgIEVsZW1lbnQmIHBhcmVu
dEVsZW1lbnQoKSB7IHJldHVybiAqbV9wYXJlbnRFbGVtZW50OyB9CisKKyAgICBFbGVtZW50KiBt
X3BhcmVudEVsZW1lbnQgeyBudWxscHRyIH07CisgICAgY29uc3QgYm9vbCBtX2lzRW5hYmxlZDsK
KworICAgIGNvbnN0IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlJiBtX2NoaWxkQ2hhbmdlOwor
fTsKKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVBZGp1c3Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVBZGp1c3Rlci5oCmluZGV4IDE5MTMxZTU4
MGY1NjQ1YWVhMjIzMjgyOTRlOWQ3NjFlYmY4MzVkNjcuLjk3MmExYWJkMTUyMDYwNTYwMTgzNDMx
ZjY0ODQ3OTk4MzhkOTlkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
QWRqdXN0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUFkanVzdGVyLmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25z
dGFudHMuaCIKKyNpbmNsdWRlICJUZXh0U2l6ZUFkanVzdG1lbnQuaCIKICNpbmNsdWRlIDx3dGYv
T3B0aW9uU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444960</attachid>
            <date>2021-11-22 06:03:51 -0800</date>
            <delta_ts>2021-11-22 06:59:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233311-20211122160349.patch</filename>
            <type>text/plain</type>
            <size>42102</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ0YWUwOGI5ZjZjNGJm
MDUxZDc3YWFkOGNjNWEzNDA4NzZjODZmNy4uNTY0MjQ1NGQyODZjMTA4MmMwZTBiYTQxMDA0Njg2
NmI0OWUyYWRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIxLTExLTE4ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgY2hpbGQgY2hh
bmdlIGludmFsaWRhdGlvbiBpbnRvIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBBbGFuIEJ1
anRhcy4KKworICAgICAgICBVc2Ugc2ltaWxhciBwYXR0ZXJuIGFzIENsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uIGFuZCBvdGhlcnMgd2hlcmUgd2UgY3JlYXRlIGEgc3RhY2sgb2JqZWN0IHNjb3BlZAor
ICAgICAgICBvdmVyIGEgRE9NIG11dGF0aW9uLiBUaGlzIHdpbGwgYWxsb3cgbW9yZSBzb3BoaXN0
aWNhdGVkIHJ1bGVzZXQgYmFzZWQgaW52YWxpZGF0aW9uIGluCisgICAgICAgIGZ1dHVyZS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBpbnZhbGlkYXRpb24gY29kZSBmcm9tIGNoaWxk
cmVuQ2hhbmdlZCgpIHRvIHRoZSBuZXcgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24gY2xhc3MuCisg
ICAgICAgIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uIGlzIGluc3RhbnRpYXRlZCBpbiBDb250YWlu
ZXJOb2RlIGFuZCBDaGFyYWN0ZXJEYXRhIG11dGF0aW9uIGZ1bmN0aW9ucworICAgICAgICB0aGF0
IGNhbGwgY2hpbGRyZW5DaGFuZ2VkKCkuIEl0IHVzZXMgdGhlIHNhbWUgQ2hpbGRDaGFuZ2UgYXJn
dW1lbnQgdHlwZSBhcyBjaGlsZHJlbkNoYW5nZWQoKS4KKworICAgICAgICBUaGVyZSBhcmUgbm8g
Y2hhbmdlcyB0byBpbnZhbGlkYXRpb24gZnVuY3Rpb25hbGl0eSBpbiB0aGlzIHBhdGNoLgorCisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1ha2VDaGlsZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRh
OjpwYXJzZXJBcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OnNl
dERhdGFBbmRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6bm90aWZ5
UGFyZW50QWZ0ZXJDaGFuZ2UpOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmg6CisgICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Om1ha2VDaGlsZENoYW5nZUZvclJlbW92YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6bWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFp
bmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpy
ZXBsYWNlQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxk
V2l0aG91dFByZUluc2VydGlvblZhbGlkaXR5Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6YWZmZWN0
c0VsZW1lbnRzKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppbnZhbGlkYXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZpbmlzaFBh
cnNpbmdDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0ZvckVtcHR5U3R5bGVDaGFu
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvckZvcndhcmRQb3Np
dGlvbmFsUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvckJh
Y2t3YXJkUG9zaXRpb25hbFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNoZWNr
Rm9yU2libGluZ1N0eWxlQ2hhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0VsZW1lbnQu
aDoKKyAgICAgICAgKiBzdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjpDaGlsZENo
YW5nZUludmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJ
bnZhbGlkYXRpb246On5DaGlsZENoYW5nZUludmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVBZnRlckNoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmNoZWNr
Rm9yRW1wdHlTdHlsZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6aW52YWxpZGF0
ZUZvckZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Omlu
dmFsaWRhdGVGb3JCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdl
cyk6CisgICAgICAgICogc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OnBhcmVudEVs
ZW1lbnQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlQWRqdXN0ZXIuaDoKKwogMjAyMS0xMS0yMSAg
QWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRp
b25dIEVuYWJsZSBiaWRpIGNvbnRlbnQgZm9yIG5vbi1pbmxpbmUtYm94IGNhc2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDIwYTNkOGM4M2E2ZGY4YjY3ZjI0NzI1MzA5MTFjMjI5MTQ3ZjU5NjQuLjhmNzll
Y2U4Y2M3YzA1OTk4YTk1ZmNhMmI1YmU2NDMyN2ViY2U3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0y
NTI0LDYgKzI1MjQsNyBAQCBzdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCiBzdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci5jcHAKIHN0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdlci5jcHAKIHN0
eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAKK3N0eWxlL0NoaWxkQ2hhbmdlSW52
YWxpZGF0aW9uLmNwcAogc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCiBzdHlsZS9F
bGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKIHN0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDg3NTU3NDQwODg0Njk0ZjdlN2UzMTMyNDA3YzNmYzkzOGRkZmRlYWMuLjA0ZTk2OTg0NGRm
YmYzOGY3OTVjY2NmZTZiYmM2NTRhN2UwN2VhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzNDIsNiArNTM0Miw3IEBACiAJ
CUU0QzE3ODlCMEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzE3ODk2MEVFNjkwMzgwMDgy
NEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFNEMyNzk1OTBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVk
aWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzI3
OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0QzNCMUZBMEYwRTQxNjEwMDk2OTNGNiAv
KiBMZWdhY3lUaWxlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0QzNCMUY5MEYwRTQxNjEwMDk2OTNGNiAvKiBMZWdhY3lUaWxlQ2FjaGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNEM0QzYx
QTI3NDUyQTc5MDBBMDQwRTcgLyogQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzRDNjE4Mjc0NTJBNzkwMEEw
NDBFNyAvKiBDaGlsZENoYW5nZUludmFsaWRhdGlvbi5oICovOyB9OwogCQlFNEM5MUEwRTE4MDIz
NDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzkxQTBEMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFp
bnRTdHlsZS5oICovOyB9OwogCQlFNEM5MUExNjE4MDk5OUYxMDBBMTdGNkQgLyogUmVuZGVyVGV4
dExpbmVCb3hlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRDOTFBMTUxODA5OTlGMTAwQTE3RjZEIC8qIFJlbmRlclRleHRMaW5lQm94ZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEQzM0YzQjI1
MkFFRUNEMDA4MzdEMDUgLyogSW5saW5lUnVuQW5kT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQzM0YzOTI1MkFFRUNDMDA4MzdEMDUgLyog
SW5saW5lUnVuQW5kT2Zmc2V0LmggKi87IH07CkBAIC0xNzA0Niw2ICsxNzA0Nyw4IEBACiAJCUU0
QzI3OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZWRpYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNEMzQjFGOTBGMEU0MTYxMDA5NjkzRjYgLyogTGVnYWN5VGlsZUNhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2FjeVRpbGVDYWNoZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNEMzQjFGQjBGMEU0MTcwMDA5NjkzRjYgLyogTGVnYWN5VGls
ZUNhY2hlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5
VGlsZUNhY2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEM0QzYxODI3NDUy
QTc5MDBBMDQwRTcgLyogQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTRDNEM2MUIyNzQ1MkE4QTAwQTA0MEU3IC8qIENoaWxkQ2hhbmdl
SW52YWxpZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoaWxkQ2hhbmdlSW52YWxpZGF0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRDOTFBMEQxODAyMzQzMTAw
QTE3RjZEIC8qIFRleHRQYWludFN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRleHRQYWludFN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0Qzkx
QTBGMTgwMjM0MzkwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGFpbnRTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0QzkxQTE1MTgwOTk5RjEwMEExN0Y2RCAvKiBSZW5kZXJUZXh0TGlu
ZUJveGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRleHRMaW5l
Qm94ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwMjgyLDYgKzMwMjg1LDgg
QEAKIAkJCQlFNEE4MTRENzFDNzBFMTA1MDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxp
ZGF0aW9uLmNwcCAqLywKIAkJCQlFNEE4MTREOTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRl
Q2hhbmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJRTRBQkFCRjQyMzY4QzZFRjAwRkE0MzQ1IC8q
IENhc2NhZGVMZXZlbC5oICovLAorCQkJCUU0QzRDNjFCMjc0NTJBOEEwMEEwNDBFNyAvKiBDaGls
ZENoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8sCisJCQkJRTRDNEM2MTgyNzQ1MkE3OTAwQTA0MEU3
IC8qIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJRTRBODE0RDUxQzZERUU4RDAw
QkY4NUFDIC8qIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLywKIAkJCQlFNEE4MTREMzFD
NkRFQzQwMDBCRjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlGQkRC
NjE5QTE2RDYwMzJBMDBCQjMzOTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwICovLApAQCAt
MzI3MzcsNiArMzI3NDIsNyBAQAogCQkJCTkzRjJDQzkzMjQyN0ZCOUMwMDU4NTFEOCAvKiBDaGFy
YWN0ZXJSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCOEZGRDExNkFFN0Y5NjAwMzgzODhE
IC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY1NUIzREIyMTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTRDNEM2MUEyNzQ1MkE3OTAwQTA0MEU3IC8qIENoaWxkQ2hhbmdlSW52YWxp
ZGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlENjE5QTMwODE0NEUwMEJFMDA0QkMzMDIgLyog
Q2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMjAwOTc3
RDNDMDAwNTgyNkQ5IC8qIENoaWxkTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RDgy
MzUyMEFGOTJBNzkwMDA0RjA1NyAvKiBDaHJvbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IDJlNjVjNjI0NDk3MzM3ZTZiOTAwYWUzOTAwYzFh
MTI2Yzk3ZDZjODguLjg5NzdlMjQ3ZjJiYWZlM2JmMjVmOTJiYTkzMjQ5OTllZGI5NDIzY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNs
dWRlICJDaGFyYWN0ZXJEYXRhLmgiCiAKICNpbmNsdWRlICJBdHRyLmgiCisjaW5jbHVkZSAiQ2hp
bGRDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCkBAIC03
Myw2ICs3NCwxNiBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IENoYXJhY3RlckRhdGE6OnN1YnN0cmlu
Z0RhdGEodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudAogICAgIHJldHVybiBtX2RhdGEu
c3Vic3RyaW5nKG9mZnNldCwgY291bnQpOwogfQogCitzdGF0aWMgQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2UgbWFrZUNoaWxkQ2hhbmdlKENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEsIENv
bnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNlKQoreworICAgIHJldHVybiB7
CisgICAgICAgIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdlZCwK
KyAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoYXJhY3RlckRhdGEp
LAorICAgICAgICBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGFyYWN0ZXJEYXRhKSwK
KyAgICAgICAgc291cmNlCisgICAgfTsKK30KKwogdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFy
c2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGhMaW1pdCkKIHsKICAgICB1bnNpZ25lZCBvbGRMZW5ndGggPSBtX2RhdGEubGVu
Z3RoKCk7CkBAIC05NSw2ICsxMDYsMTEgQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2Vy
QXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIGlm
ICghY2hhcmFjdGVyTGVuZ3RoTGltaXQpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgYXV0byBj
aGlsZENoYW5nZSA9IG1ha2VDaGlsZENoYW5nZSgqdGhpcywgQ29udGFpbmVyTm9kZTo6Q2hpbGRD
aGFuZ2U6OlNvdXJjZTo6UGFyc2VyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpDaGlsZENo
YW5nZUludmFsaWRhdGlvbj4gc3R5bGVJbnZhbGlkYXRpb247CisgICAgaWYgKGF1dG8qIHBhcmVu
dCA9IHBhcmVudE5vZGUoKSkKKyAgICAgICAgc3R5bGVJbnZhbGlkYXRpb24uZW1wbGFjZSgqcGFy
ZW50LCBjaGlsZENoYW5nZSk7CisKICAgICBTdHJpbmcgb2xkRGF0YSA9IG1fZGF0YTsKICAgICBp
ZiAoc3RyaW5nLmlzOEJpdCgpKQogICAgICAgICBtX2RhdGEuYXBwZW5kKHN0cmluZy5jaGFyYWN0
ZXJzOCgpICsgb2Zmc2V0LCBjaGFyYWN0ZXJMZW5ndGhMaW1pdCk7CkBAIC0xMDUsNyArMTIxLDcg
QEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcm
IHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIGlmIChpczxUZXh0PigqdGhpcykpCiAgICAg
ICAgIGRvd25jYXN0PFRleHQ+KCp0aGlzKS51cGRhdGVSZW5kZXJlckFmdGVyQ29udGVudENoYW5n
ZShvbGRMZW5ndGgsIDApOwogCi0gICAgbm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoQ29udGFpbmVy
Tm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKTsKKyAgICBub3RpZnlQYXJlbnRBZnRl
ckNoYW5nZShjaGlsZENoYW5nZSk7CiAKICAgICBhdXRvIG11dGF0aW9uUmVjaXBpZW50cyA9IE11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JDaGFyYWN0ZXJEYXRhTXV0YXRp
b24oKnRoaXMpOwogICAgIGlmIChVTkxJS0VMWShtdXRhdGlvblJlY2lwaWVudHMpKQpAQCAtMTcz
LDYgKzE4OSwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDaGFyYWN0ZXJEYXRhOjpzZXROb2RlVmFs
dWUoY29uc3QgU3RyaW5nJiBub2RlVmFsdWUpCiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0
YUFuZFVwZGF0ZShjb25zdCBTdHJpbmcmIG5ld0RhdGEsIHVuc2lnbmVkIG9mZnNldE9mUmVwbGFj
ZWREYXRhLCB1bnNpZ25lZCBvbGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCwgVXBkYXRlTGl2
ZVJhbmdlcyBzaG91bGRVcGRhdGVMaXZlUmFuZ2VzKQogeworICAgIGF1dG8gY2hpbGRDaGFuZ2Ug
PSBtYWtlQ2hpbGRDaGFuZ2UoKnRoaXMsIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3Vy
Y2U6OkFQSSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRh
dGlvbj4gc3R5bGVJbnZhbGlkYXRpb247CisgICAgaWYgKGF1dG8qIHBhcmVudCA9IHBhcmVudE5v
ZGUoKSkKKyAgICAgICAgc3R5bGVJbnZhbGlkYXRpb24uZW1wbGFjZSgqcGFyZW50LCBjaGlsZENo
YW5nZSk7CisKICAgICBTdHJpbmcgb2xkRGF0YSA9IG1fZGF0YTsKICAgICBtX2RhdGEgPSBuZXdE
YXRhOwogCkBAIC0xOTEsMjYgKzIxMywxOSBAQCB2b2lkIENoYXJhY3RlckRhdGE6OnNldERhdGFB
bmRVcGRhdGUoY29uc3QgU3RyaW5nJiBuZXdEYXRhLCB1bnNpZ25lZCBvZmZzZXRPZlJlcAogICAg
IGlmIChkb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgIGRvY3VtZW50KCkuZnJhbWUoKS0+c2Vs
ZWN0aW9uKCkudGV4dFdhc1JlcGxhY2VkKHRoaXMsIG9mZnNldE9mUmVwbGFjZWREYXRhLCBvbGRM
ZW5ndGgsIG5ld0xlbmd0aCk7CiAKLSAgICBub3RpZnlQYXJlbnRBZnRlckNoYW5nZShDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpBUEkpOworICAgIG5vdGlmeVBhcmVudEFmdGVy
Q2hhbmdlKGNoaWxkQ2hhbmdlKTsKIAogICAgIGRpc3BhdGNoTW9kaWZpZWRFdmVudChvbGREYXRh
KTsKIH0KIAotdm9pZCBDaGFyYWN0ZXJEYXRhOjpub3RpZnlQYXJlbnRBZnRlckNoYW5nZShDb250
YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSkKK3ZvaWQgQ2hhcmFjdGVyRGF0
YTo6bm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2UmIGNoaWxkQ2hhbmdlKQogewogICAgIGRvY3VtZW50KCkuaW5jRE9NVHJlZVZlcnNpb24oKTsK
IAogICAgIGlmICghcGFyZW50Tm9kZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZSBjaGFuZ2UgPSB7Ci0gICAgICAgIENvbnRhaW5lck5vZGU6OkNo
aWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdlZCwKLSAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6
cHJldmlvdXNTaWJsaW5nKCp0aGlzKSwKLSAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNp
YmxpbmcoKnRoaXMpLAotICAgICAgICBzb3VyY2UKLSAgICB9OwotCi0gICAgcGFyZW50Tm9kZSgp
LT5jaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKKyAgICBwYXJlbnROb2RlKCktPmNoaWxkcmVuQ2hh
bmdlZChjaGlsZENoYW5nZSk7CiB9CiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6ZGlzcGF0Y2hNb2Rp
ZmllZEV2ZW50KGNvbnN0IFN0cmluZyYgb2xkRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0
YS5oCmluZGV4IGM1OTQ3MzViZWNiMDlhMzZlNjU0MjlmMjI5NjZjZmExMzMwZjkzODEuLjM2YTQ5
MjU0MDdlOTEzY2NjYTczZTkwZGUwMzJhYjVmYjg3NzRhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJh
Y3RlckRhdGEuaApAQCAtNjUsNyArNjUsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFN0
cmluZyBub2RlVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRO
b2RlVmFsdWUoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlQYXJlbnRBZnRl
ckNoYW5nZShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlKTsKKyAgICB2b2lkIG5v
dGlmeVBhcmVudEFmdGVyQ2hhbmdlKGNvbnN0IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlJik7
CiAKICAgICBTdHJpbmcgbV9kYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAppbmRleCA2ZDhmZDFmZDU3NzA5MjBiODEyMzFkMzE1NmZlNTNiODg5NGM4OTgzLi4yYmUwZDRk
YjAzM2M2OTc4MzRkNzFkYmY5MzQ0N2UwMmZkOTVkYjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCiAjaW5jbHVkZSAiQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2hp
bGRDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJDaGlsZExpc3RNdXRhdGlvblNjb3Bl
LmgiCiAjaW5jbHVkZSAiQ2xhc3NDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIK
QEAgLTExMSwyOSArMTEyLDUyIEBAIEFMV0FZU19JTkxJTkUgTm9kZVZlY3RvciBDb250YWluZXJO
b2RlOjpyZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpCiAKICAgICBkaXNj
b25uZWN0U3ViZnJhbWVzSWZOZWVkZWQoKnRoaXMsIERlc2NlbmRhbnRzT25seSk7CiAKKyAgICBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZSBjaGlsZENoYW5nZSB7IENoaWxkQ2hhbmdlOjpUeXBl
OjpBbGxDaGlsZHJlblJlbW92ZWQsIG51bGxwdHIsIG51bGxwdHIsIHNvdXJjZSB9OworCiAgICAg
V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNwZW5kV2lkZ2V0SGllcmFy
Y2h5VXBkYXRlczsKICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3Jp
cHREaXNhbGxvd2VkU2NvcGU7CisgICAgeworICAgICAgICBTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZh
bGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIGNoaWxkQ2hhbmdlKTsKIAotICAgIGlm
IChVTkxJS0VMWShpc1NoYWRvd1Jvb3QoKSB8fCBpc0luU2hhZG93VHJlZSgpKSkKLSAgICAgICAg
Y29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+d2lsbFJlbW92ZUFsbENoaWxkcmVuKCp0aGlzKTsKKyAg
ICAgICAgaWYgKFVOTElLRUxZKGlzU2hhZG93Um9vdCgpIHx8IGlzSW5TaGFkb3dUcmVlKCkpKQor
ICAgICAgICAgICAgY29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+d2lsbFJlbW92ZUFsbENoaWxkcmVu
KCp0aGlzKTsKIAotICAgIGRvY3VtZW50KCkubm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZCgqdGhp
cyk7CisgICAgICAgIGRvY3VtZW50KCkubm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZCgqdGhpcyk7
CiAKLSAgICB3aGlsZSAoUmVmUHRyPE5vZGU+IGNoaWxkID0gbV9maXJzdENoaWxkKSB7Ci0gICAg
ICAgIHJlbW92ZUJldHdlZW4obnVsbHB0ciwgY2hpbGQtPm5leHRTaWJsaW5nKCksICpjaGlsZCk7
Ci0gICAgICAgIGF1dG8gc3VidHJlZU9ic2VydmFiaWxpdHkgPSBub3RpZnlDaGlsZE5vZGVSZW1v
dmVkKCp0aGlzLCAqY2hpbGQpOwotICAgICAgICBpZiAoc291cmNlID09IENoaWxkQ2hhbmdlOjpT
b3VyY2U6OkFQSSAmJiBzdWJ0cmVlT2JzZXJ2YWJpbGl0eSA9PSBSZW1vdmVkU3VidHJlZU9ic2Vy
dmFiaWxpdHk6Ok1heWJlT2JzZXJ2YWJsZUJ5UmVmUHRyKQotICAgICAgICAgICAgd2lsbENyZWF0
ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKGNoaWxkLmdldCgpKTsKKyAgICAgICAgd2hp
bGUgKFJlZlB0cjxOb2RlPiBjaGlsZCA9IG1fZmlyc3RDaGlsZCkgeworICAgICAgICAgICAgcmVt
b3ZlQmV0d2VlbihudWxscHRyLCBjaGlsZC0+bmV4dFNpYmxpbmcoKSwgKmNoaWxkKTsKKyAgICAg
ICAgICAgIGF1dG8gc3VidHJlZU9ic2VydmFiaWxpdHkgPSBub3RpZnlDaGlsZE5vZGVSZW1vdmVk
KCp0aGlzLCAqY2hpbGQpOworICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBDaGlsZENoYW5nZTo6
U291cmNlOjpBUEkgJiYgc3VidHJlZU9ic2VydmFiaWxpdHkgPT0gUmVtb3ZlZFN1YnRyZWVPYnNl
cnZhYmlsaXR5OjpNYXliZU9ic2VydmFibGVCeVJlZlB0cikKKyAgICAgICAgICAgICAgICB3aWxs
Q3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoY2hpbGQuZ2V0KCkpOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3Vt
ZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNPcnBoYW4oKSk7CiAKICAgICBpZiAoZGVm
ZXJDaGlsZHJlbkNoYW5nZWQgPT0gRGVmZXJDaGlsZHJlbkNoYW5nZWQ6Ok5vKQotICAgICAgICBj
aGlsZHJlbkNoYW5nZWQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgeyBDaGlsZENoYW5nZTo6
VHlwZTo6QWxsQ2hpbGRyZW5SZW1vdmVkLCBudWxscHRyLCBudWxscHRyLCBzb3VyY2UgfSk7Cisg
ICAgICAgIGNoaWxkcmVuQ2hhbmdlZChjaGlsZENoYW5nZSk7CiAKICAgICByZXR1cm4gY2hpbGRy
ZW47CiB9CiAKK3N0YXRpYyBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSBtYWtlQ2hpbGRDaGFu
Z2VGb3JSZW1vdmFsKE5vZGUmIGNoaWxkVG9SZW1vdmUsIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hh
bmdlOjpTb3VyY2Ugc291cmNlKQoreworICAgIGF1dG8gY2hhbmdlVHlwZSA9IFsmXSB7CisgICAg
ICAgIGlmIChpczxFbGVtZW50PihjaGlsZFRvUmVtb3ZlKSkKKyAgICAgICAgICAgIHJldHVybiBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6RWxlbWVudFJlbW92ZWQ7CisgICAgICAg
IGlmIChpczxUZXh0PihjaGlsZFRvUmVtb3ZlKSkKKyAgICAgICAgICAgIHJldHVybiBDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6VGV4dFJlbW92ZWQ7CisgICAgICAgIHJldHVybiBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29udGVudHNDaGlsZFJlbW92ZWQ7
CisgICAgfSgpOworCisgICAgcmV0dXJuIHsKKyAgICAgICAgY2hhbmdlVHlwZSwKKyAgICAgICAg
RWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkVG9SZW1vdmUpLAorICAgICAg
ICBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGlsZFRvUmVtb3ZlKSwKKyAgICAgICAg
c291cmNlCisgICAgfTsKK30KKwogQUxXQVlTX0lOTElORSBib29sIENvbnRhaW5lck5vZGU6OnJl
bW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9SZW1vdmUsIENoaWxkQ2hh
bmdlOjpTb3VyY2Ugc291cmNlKQogewogICAgIFJlZjxOb2RlPiBwcm90ZWN0ZWRDaGlsZFRvUmVt
b3ZlKGNoaWxkVG9SZW1vdmUpOwpAQCAtMTYyLDExICsxODYsMTMgQEAgQUxXQVlTX0lOTElORSBi
b29sIENvbnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNo
aWxkVG9SZW0KICAgICBpZiAoY2hpbGRUb1JlbW92ZS5wYXJlbnROb2RlKCkgIT0gdGhpcykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ2hpbGRDaGFuZ2UgY2hhbmdlOworICAgIGF1dG8g
Y2hpbGRDaGFuZ2UgPSBtYWtlQ2hpbGRDaGFuZ2VGb3JSZW1vdmFsKGNoaWxkVG9SZW1vdmUsIHNv
dXJjZSk7CisKICAgICBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHkgc3VidHJlZU9ic2VydmFi
aWxpdHk7CiAgICAgewogICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNj
b3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogICAgICAgICBTY3JpcHREaXNhbGxv
d2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CisgICAgICAgIFN0
eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgY2hp
bGRDaGFuZ2UpOwogCiAgICAgICAgIGlmIChVTkxJS0VMWShpc1NoYWRvd1Jvb3QoKSB8fCBpc0lu
U2hhZG93VHJlZSgpKSkKICAgICAgICAgICAgIGNvbnRhaW5pbmdTaGFkb3dSb290KCktPnJlc29s
dmVTbG90c0JlZm9yZU5vZGVJbnNlcnRpb25PclJlbW92YWwoKTsKQEAgLTE3OCwxNyArMjA0LDkg
QEAgQUxXQVlTX0lOTElORSBib29sIENvbnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0
QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9SZW0KIAogICAgICAgICBSZWZQdHI8Tm9kZT4gcHJldmlv
dXNTaWJsaW5nID0gY2hpbGRUb1JlbW92ZS5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgUmVm
UHRyPE5vZGU+IG5leHRTaWJsaW5nID0gY2hpbGRUb1JlbW92ZS5uZXh0U2libGluZygpOworCiAg
ICAgICAgIHJlbW92ZUJldHdlZW4ocHJldmlvdXNTaWJsaW5nLmdldCgpLCBuZXh0U2libGluZy5n
ZXQoKSwgY2hpbGRUb1JlbW92ZSk7CiAgICAgICAgIHN1YnRyZWVPYnNlcnZhYmlsaXR5ID0gbm90
aWZ5Q2hpbGROb2RlUmVtb3ZlZCgqdGhpcywgY2hpbGRUb1JlbW92ZSk7Ci0KLSAgICAgICAgY2hh
bmdlLnR5cGUgPSBpczxFbGVtZW50PihjaGlsZFRvUmVtb3ZlKSA/Ci0gICAgICAgICAgICBDaGls
ZENoYW5nZTo6VHlwZTo6RWxlbWVudFJlbW92ZWQgOgotICAgICAgICAgICAgKGlzPFRleHQ+KGNo
aWxkVG9SZW1vdmUpID8KLSAgICAgICAgICAgICAgICBDaGlsZENoYW5nZTo6VHlwZTo6VGV4dFJl
bW92ZWQgOgotICAgICAgICAgICAgICAgIENoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0No
aWxkUmVtb3ZlZCk7Ci0gICAgICAgIGNoYW5nZS5wcmV2aW91c1NpYmxpbmdFbGVtZW50ID0gKCFw
cmV2aW91c1NpYmxpbmcgfHwgaXM8RWxlbWVudD4oKnByZXZpb3VzU2libGluZykpID8gZG93bmNh
c3Q8RWxlbWVudD4ocHJldmlvdXNTaWJsaW5nLmdldCgpKSA6IEVsZW1lbnRUcmF2ZXJzYWw6OnBy
ZXZpb3VzU2libGluZygqcHJldmlvdXNTaWJsaW5nKTsKLSAgICAgICAgY2hhbmdlLm5leHRTaWJs
aW5nRWxlbWVudCA9ICghbmV4dFNpYmxpbmcgfHwgaXM8RWxlbWVudD4oKm5leHRTaWJsaW5nKSkg
PyBkb3duY2FzdDxFbGVtZW50PihuZXh0U2libGluZy5nZXQoKSkgOiBFbGVtZW50VHJhdmVyc2Fs
OjpuZXh0U2libGluZygqbmV4dFNpYmxpbmcpOwotICAgICAgICBjaGFuZ2Uuc291cmNlID0gc291
cmNlOwogICAgIH0KIAogICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJ
ICYmIHN1YnRyZWVPYnNlcnZhYmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eTo6
TWF5YmVPYnNlcnZhYmxlQnlSZWZQdHIpCkBAIC0xOTcsMjEgKzIxNSw0NSBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24oTm9k
ZSYgY2hpbGRUb1JlbQogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFkb2N1
bWVudCgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzT3JwaGFuKCkpOwogCiAgICAgLy8gRklY
TUU6IE1vdmUgY2hpbGRyZW5DaGFuZ2VkIGludG8gU2NyaXB0RGlzYWxsb3dlZFNjb3BlIGJsb2Nr
LgotICAgIGNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOworICAgIGNoaWxkcmVuQ2hhbmdlZChjaGls
ZENoYW5nZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogZW51bSBjbGFzcyBSZXBsYWNlZEFs
bENoaWxkcmVuIHsgTm8sIFllcyB9OwogCitzdGF0aWMgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2UgbWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9uKENvbnRhaW5lck5vZGUmIGNvbnRhaW5lck5v
ZGUsIE5vZGUmIGNoaWxkLCBOb2RlKiBiZWZvcmVDaGlsZCwgQ29udGFpbmVyTm9kZTo6Q2hpbGRD
aGFuZ2U6OlNvdXJjZSBzb3VyY2UsIFJlcGxhY2VkQWxsQ2hpbGRyZW4gcmVwbGFjZWRBbGxDaGls
ZHJlbikKK3sKKyAgICBpZiAocmVwbGFjZWRBbGxDaGlsZHJlbiA9PSBSZXBsYWNlZEFsbENoaWxk
cmVuOjpZZXMpCisgICAgICAgIHJldHVybiB7IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpU
eXBlOjpBbGxDaGlsZHJlblJlcGxhY2VkLCBudWxscHRyLCBudWxscHRyLCBzb3VyY2UgfTsKKwor
ICAgIGF1dG8gY2hhbmdlVHlwZSA9IFsmXSB7CisgICAgICAgIGlmIChpczxFbGVtZW50PihjaGls
ZCkpCisgICAgICAgICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6
OkVsZW1lbnRJbnNlcnRlZDsKKyAgICAgICAgaWYgKGlzPFRleHQ+KGNoaWxkKSkKKyAgICAgICAg
ICAgIHJldHVybiBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6VGV4dEluc2VydGVk
OworICAgICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNv
bnRlbnRzQ2hpbGRJbnNlcnRlZDsKKyAgICB9KCk7CisKKyAgICByZXR1cm4geworICAgICAgICBj
aGFuZ2VUeXBlLAorICAgICAgICBiZWZvcmVDaGlsZCA/IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZp
b3VzU2libGluZygqYmVmb3JlQ2hpbGQpIDogRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKGNv
bnRhaW5lck5vZGUpLAorICAgICAgICAhYmVmb3JlQ2hpbGQgfHwgaXM8RWxlbWVudD4oKmJlZm9y
ZUNoaWxkKSA/IGRvd25jYXN0PEVsZW1lbnQ+KGJlZm9yZUNoaWxkKSA6IEVsZW1lbnRUcmF2ZXJz
YWw6Om5leHRTaWJsaW5nKCpiZWZvcmVDaGlsZCksCisgICAgICAgIHNvdXJjZQorICAgIH07Cit9
CisKIHRlbXBsYXRlPHR5cGVuYW1lIERPTUluc2VydGlvbldvcms+Ci1zdGF0aWMgQUxXQVlTX0lO
TElORSB2b2lkIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbihDb250YWlu
ZXJOb2RlJiBjb250YWluZXJOb2RlLCBOb2RlJiBjaGlsZCwKK3N0YXRpYyBBTFdBWVNfSU5MSU5F
IHZvaWQgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKENvbnRhaW5lck5v
ZGUmIGNvbnRhaW5lck5vZGUsIE5vZGUmIGNoaWxkLCBOb2RlKiBiZWZvcmVDaGlsZCwKICAgICBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSwgUmVwbGFjZWRBbGxDaGls
ZHJlbiByZXBsYWNlZEFsbENoaWxkcmVuLCBET01JbnNlcnRpb25Xb3JrIGRvTm9kZUluc2VydGlv
bikKIHsKKyAgICBhdXRvIGNoaWxkQ2hhbmdlID0gbWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9u
KGNvbnRhaW5lck5vZGUsIGNoaWxkLCBiZWZvcmVDaGlsZCwgc291cmNlLCByZXBsYWNlZEFsbENo
aWxkcmVuKTsKKwogICAgIE5vZGVWZWN0b3IgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdl
dHM7CiAgICAgewogICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3Bl
IHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogICAgICAgICBTY3JpcHREaXNhbGxvd2Vk
U2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CisgICAgICAgIFN0eWxl
OjpDaGlsZENoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbihjb250YWluZXJOb2Rl
LCBjaGlsZENoYW5nZSk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGNvbnRhaW5lck5vZGUuaXNT
aGFkb3dSb290KCkgfHwgY29udGFpbmVyTm9kZS5pc0luU2hhZG93VHJlZSgpKSkKICAgICAgICAg
ICAgIGNvbnRhaW5lck5vZGUuY29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+cmVzb2x2ZVNsb3RzQmVm
b3JlTm9kZUluc2VydGlvbk9yUmVtb3ZhbCgpOwpAQCAtMjIyLDIwICsyNjQsNyBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlv
bihDb250YWluZXJOb2RlJgogICAgIH0KIAogICAgIC8vIEZJWE1FOiBNb3ZlIGNoaWxkcmVuQ2hh
bmdlZCBpbnRvIFNjcmlwdERpc2FsbG93ZWRTY29wZSBibG9jay4KLSAgICBpZiAocmVwbGFjZWRB
bGxDaGlsZHJlbiA9PSBSZXBsYWNlZEFsbENoaWxkcmVuOjpZZXMpCi0gICAgICAgIGNvbnRhaW5l
ck5vZGUuY2hpbGRyZW5DaGFuZ2VkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlIHsgQ29udGFp
bmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OkFsbENoaWxkcmVuUmVwbGFjZWQsIG51bGxwdHIs
IG51bGxwdHIsIHNvdXJjZSB9KTsKLSAgICBlbHNlIHsKLSAgICAgICAgY29udGFpbmVyTm9kZS5j
aGlsZHJlbkNoYW5nZWQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgewotICAgICAgICAgICAg
Y2hpbGQuaXNFbGVtZW50Tm9kZSgpID8KLSAgICAgICAgICAgICAgICBDb250YWluZXJOb2RlOjpD
aGlsZENoYW5nZTo6VHlwZTo6RWxlbWVudEluc2VydGVkIDoKLSAgICAgICAgICAgICAgICAoY2hp
bGQuaXNUZXh0Tm9kZSgpID8KLSAgICAgICAgICAgICAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2U6OlR5cGU6OlRleHRJbnNlcnRlZCA6Ci0gICAgICAgICAgICAgICAgICAgIENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0NoaWxkSW5zZXJ0ZWQpLAot
ICAgICAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkKSwKLSAg
ICAgICAgICAgIEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGNoaWxkKSwKLSAgICAgICAg
ICAgIHNvdXJjZQotICAgICAgICB9KTsKLSAgICB9CisgICAgY29udGFpbmVyTm9kZS5jaGlsZHJl
bkNoYW5nZWQoY2hpbGRDaGFuZ2UpOwogCiAgICAgQVNTRVJUKFNjcmlwdERpc2FsbG93ZWRTY29w
ZTo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKGNoaWxkKSk7
CiAgICAgZm9yIChhdXRvJiB0YXJnZXQgOiBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0
cykKQEAgLTQ0OCw3ICs0NzcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjpp
bnNlcnRCZWZvcmUoTm9kZSYgbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkKQogICAgICAgICBpZiAo
Y2hpbGQtPnBhcmVudE5vZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGV4ZWN1
dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQuZ2V0KCksIENo
aWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7Cisg
ICAgICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hp
bGQuZ2V0KCksIG5leHQucHRyKCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRB
bGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0VHJlZVNjb3BlUmVj
dXJzaXZlbHkodHJlZVNjb3BlKCkpOwogICAgICAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5l
eHQsIGNoaWxkKTsKICAgICAgICAgfSk7CkBAIC01MDcsNyArNTM2LDcgQEAgdm9pZCBDb250YWlu
ZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUoTm9kZSYgbmV3Q2hpbGQsIE5vZGUmIG5leHRDaGls
ZCkKICAgICBpZiAobmV4dENoaWxkLnByZXZpb3VzU2libGluZygpID09ICZuZXdDaGlsZCB8fCAm
bmV4dENoaWxkID09ICZuZXdDaGlsZCkgLy8gbm90aGluZyB0byBkbwogICAgICAgICByZXR1cm47
CiAKLSAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIG5l
d0NoaWxkLCBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsIFJlcGxhY2VkQWxsQ2hpbGRyZW46
Ok5vLCBbJl0geworICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigq
dGhpcywgbmV3Q2hpbGQsICZuZXh0Q2hpbGQsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwg
UmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgIGlmICgmZG9jdW1lbnQoKSAh
PSAmbmV3Q2hpbGQuZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50KCkuYWRvcHROb2Rl
KG5ld0NoaWxkKTsKIApAQCAtNTgxLDcgKzYxMCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRh
aW5lck5vZGU6OnJlcGxhY2VDaGlsZChOb2RlJiBuZXdDaGlsZCwgTm9kZSYgb2xkQ2hpbGQpCiAg
ICAgICAgIGlmIChjaGlsZC0+cGFyZW50Tm9kZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBjaGls
ZC5nZXQoKSwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpO
bywgWyZdIHsKKyAgICAgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9u
KCp0aGlzLCBjaGlsZC5nZXQoKSwgcmVmQ2hpbGQuZ2V0KCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6
OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+
c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkodHJlZVNjb3BlKCkpOwogICAgICAgICAgICAgaWYgKHJl
ZkNoaWxkKQogICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZUNvbW1vbigqcmVmQ2hpbGQsIGNo
aWxkLmdldCgpKTsKQEAgLTY4Miw3ICs3MTEsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlcGxh
Y2VBbGwoTm9kZSogbm9kZSkKICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKCp0
aGlzKTsKICAgICByZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpbGRDaGFu
Z2U6OlNvdXJjZTo6QVBJLCBEZWZlckNoaWxkcmVuQ2hhbmdlZDo6WWVzKTsKIAotICAgIGV4ZWN1
dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgKm5vZGUsIENoaWxkQ2hh
bmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6WWVzLCBbJl0geworICAgIGV4
ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgKm5vZGUsIG51bGxw
dHIsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6WWVzLCBb
Jl0gewogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2Rl
KGRvY3VtZW50KCksICp0aGlzKTsKICAgICAgICAgbm9kZS0+c2V0VHJlZVNjb3BlUmVjdXJzaXZl
bHkodHJlZVNjb3BlKCkpOwogICAgICAgICBhcHBlbmRDaGlsZENvbW1vbigqbm9kZSk7CkBAIC03
NjMsNyArNzkyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hp
bGRXaXRob3V0UHJlSW5zZXJ0aW9uVmFsaWRpdHlDaGVjayhOb2QKICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgIC8vIEFwcGVuZCBjaGlsZCB0byB0aGUgZW5kIG9mIHRoZSBsaXN0Ci0gICAg
ICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQu
Z2V0KCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8s
IFsmXSB7CisgICAgICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigq
dGhpcywgY2hpbGQuZ2V0KCksIG51bGxwdHIsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVw
bGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0VHJlZVNj
b3BlUmVjdXJzaXZlbHkodHJlZVNjb3BlKCkpOwogICAgICAgICAgICAgYXBwZW5kQ2hpbGRDb21t
b24oY2hpbGQpOwogICAgICAgICB9KTsKQEAgLTc3OSw3ICs4MDgsNyBAQCB2b2lkIENvbnRhaW5l
ck5vZGU6OnBhcnNlckFwcGVuZENoaWxkKE5vZGUmIG5ld0NoaWxkKQogICAgIEFTU0VSVCghbmV3
Q2hpbGQuaXNEb2N1bWVudEZyYWdtZW50KCkpOwogICAgIEFTU0VSVCghaGFzVGFnTmFtZShIVE1M
TmFtZXM6OnRlbXBsYXRlVGFnKSk7CiAKLSAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3Jp
cHRBc3NlcnRpb24oKnRoaXMsIG5ld0NoaWxkLCBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIs
IFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vLCBbJl0geworICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9u
V2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgbmV3Q2hpbGQsIG51bGxwdHIsIENoaWxkQ2hhbmdl
OjpTb3VyY2U6OlBhcnNlciwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAg
IGlmICgmZG9jdW1lbnQoKSAhPSAmbmV3Q2hpbGQuZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRv
Y3VtZW50KCkuYWRvcHROb2RlKG5ld0NoaWxkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IDVkN2IxYmUyNjE2NDBjZjE0MTBlY2EzZWM5MTczYTQwODlhZmQxOGQuLjRiYjBlMGNiZTZhNDVh
ZGI0OTNmZDQ5M2Q2MWQ2YjUyY2IzNGRmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJBdHRyLmgiCiAjaW5jbHVkZSAiQXR0cmlidXRlQ2hhbmdl
SW52YWxpZGF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiQ2hpbGRD
aGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJv
bWVDbGllbnQuaCIKICNpbmNsdWRlICJDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIgpAQCAtMjAz
OCw3ICsyMDM5LDcgQEAgU3R5bGU6OkVsZW1lbnRTdHlsZSBFbGVtZW50OjpyZXNvbHZlU3R5bGUo
Y29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0JiByZXNvbHUKICAgICByZXR1cm4gc3R5bGVS
ZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqdGhpcywgcmVzb2x1dGlvbkNvbnRleHQpOwogfQog
Ci1zdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKEVsZW1lbnQqIHNp
YmxpbmcpCit2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMoRWxlbWVudCogc2li
bGluZykKIHsKICAgICBmb3IgKDsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVt
ZW50U2libGluZygpKSB7CiAgICAgICAgIGlmIChzaWJsaW5nLT5zdHlsZUlzQWZmZWN0ZWRCeVBy
ZXZpb3VzU2libGluZygpKQpAQCAtMjY0MiwxMjQgKzI2NDMsMTEgQEAgYm9vbCBFbGVtZW50Ojpj
aGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlIHR5cGUpIGNvbnN0CiAgICAgfQogICAgIHJldHVybiBm
YWxzZTsKIH0KLQotc3RhdGljIHZvaWQgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKEVsZW1lbnQm
IGVsZW1lbnQpCi17Ci0gICAgaWYgKGVsZW1lbnQuc3R5bGVBZmZlY3RlZEJ5RW1wdHkoKSkgewot
ICAgICAgICBhdXRvKiBzdHlsZSA9IGVsZW1lbnQucmVuZGVyU3R5bGUoKTsKLSAgICAgICAgaWYg
KCFzdHlsZSB8fCAoIXN0eWxlLT5lbXB0eVN0YXRlKCkgfHwgZWxlbWVudC5oYXNDaGlsZE5vZGVz
KCkpKQotICAgICAgICAgICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Ci0g
ICAgfQotfQotCi0KLXN0YXRpYyB2b2lkIGludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1
bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxlbWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQotewotICAg
IGJvb2wgY2hpbGRyZW5BZmZlY3RlZCA9IHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVkID0gcGFyZW50
LmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLQotICAgIGlm
ICghY2hpbGRyZW5BZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNBZmZlY3RlZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudEFmdGVyQ2hhbmdlOyBzaWJs
aW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAg
aWYgKGNoaWxkcmVuQWZmZWN0ZWQpCi0gICAgICAgICAgICBzaWJsaW5nLT5pbnZhbGlkYXRlU3R5
bGVJbnRlcm5hbCgpOwotICAgICAgICBpZiAoZGVzY2VuZGFudHNBZmZlY3RlZCkgewotICAgICAg
ICAgICAgZm9yIChhdXRvKiBzaWJsaW5nQ2hpbGQgPSBzaWJsaW5nLT5maXJzdEVsZW1lbnRDaGls
ZCgpOyBzaWJsaW5nQ2hpbGQ7IHNpYmxpbmdDaGlsZCA9IHNpYmxpbmdDaGlsZC0+bmV4dEVsZW1l
bnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAgc2libGluZ0NoaWxkLT5pbnZhbGlkYXRlU3R5
bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZv
aWQgaW52YWxpZGF0ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwg
RWxlbWVudCogZWxlbWVudEJlZm9yZUNoYW5nZSkKLXsKLSAgICBib29sIGNoaWxkcmVuQWZmZWN0
ZWQgPSBwYXJlbnQuY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsK
LSAgICBib29sIGRlc2NlbmRhbnRzQWZmZWN0ZWQgPSBwYXJlbnQuZGVzY2VuZGFudHNBZmZlY3Rl
ZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLQotICAgIGlmICghY2hpbGRyZW5BZmZlY3Rl
ZCAmJiAhZGVzY2VuZGFudHNBZmZlY3RlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChh
dXRvKiBzaWJsaW5nID0gZWxlbWVudEJlZm9yZUNoYW5nZTsgc2libGluZzsgc2libGluZyA9IHNp
YmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoY2hpbGRyZW5B
ZmZlY3RlZCkKLSAgICAgICAgICAgIHNpYmxpbmctPmludmFsaWRhdGVTdHlsZUludGVybmFsKCk7
Ci0gICAgICAgIGlmIChkZXNjZW5kYW50c0FmZmVjdGVkKSB7Ci0gICAgICAgICAgICBmb3IgKGF1
dG8qIHNpYmxpbmdDaGlsZCA9IHNpYmxpbmctPmZpcnN0RWxlbWVudENoaWxkKCk7IHNpYmxpbmdD
aGlsZDsgc2libGluZ0NoaWxkID0gc2libGluZ0NoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkK
LSAgICAgICAgICAgICAgICBzaWJsaW5nQ2hpbGQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJ
bnRlcm5hbCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1lbnVtIFNpYmxpbmdDaGVja1R5cGUg
eyBGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbiwgU2libGluZ0VsZW1lbnRSZW1vdmVkLCBPdGhlciB9
OwotCi1zdGF0aWMgdm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoRWxlbWVudCYgcGFy
ZW50LCBTaWJsaW5nQ2hlY2tUeXBlIGNoZWNrVHlwZSwgRWxlbWVudCogZWxlbWVudEJlZm9yZUNo
YW5nZSwgRWxlbWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQotewotICAgIC8vIDplbXB0eSBzZWxl
Y3Rvci4KLSAgICBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UocGFyZW50KTsKLQotICAgIGlmIChw
YXJlbnQuc3R5bGVWYWxpZGl0eSgpID49IFN0eWxlOjpWYWxpZGl0eTo6U3VidHJlZUludmFsaWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIDpmaXJzdC1jaGlsZC4gIEluIHRoZSBwYXJzZXIg
Y2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnl0aGluZywgc2luY2Ugd2Ug
d2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4KLSAgICAvLyBJbiB0aGUgRE9NIGNhc2UsIHdlIG9u
bHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgfGFmdGVyQ2hhbmdlfCBpcyBub3QgMC4KLSAgICAv
LyB8YWZ0ZXJDaGFuZ2V8IGlzIDAgaW4gdGhlIHBhcnNlciBjYXNlLCBzbyBpdCB3b3JrcyBvdXQg
dGhhdCB3ZSdsbCBza2lwIHRoaXMgYmxvY2suCi0gICAgaWYgKHBhcmVudC5jaGlsZHJlbkFmZmVj
dGVkQnlGaXJzdENoaWxkUnVsZXMoKSAmJiBlbGVtZW50QWZ0ZXJDaGFuZ2UpIHsKLSAgICAgICAg
Ly8gRmluZCBvdXIgbmV3IGZpcnN0IGNoaWxkLgotICAgICAgICBSZWZQdHI8RWxlbWVudD4gbmV3
Rmlyc3RFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZChwYXJlbnQpOwotICAg
ICAgICAvLyBGaW5kIHRoZSBmaXJzdCBlbGVtZW50IG5vZGUgZm9sbG93aW5nIHxhZnRlckNoYW5n
ZXwKLQotICAgICAgICAvLyBUaGlzIGlzIHRoZSBpbnNlcnQvYXBwZW5kIGNhc2UuCi0gICAgICAg
IGlmIChuZXdGaXJzdEVsZW1lbnQgIT0gZWxlbWVudEFmdGVyQ2hhbmdlKSB7Ci0gICAgICAgICAg
ICBhdXRvKiBzdHlsZSA9IGVsZW1lbnRBZnRlckNoYW5nZS0+cmVuZGVyU3R5bGUoKTsKLSAgICAg
ICAgICAgIGlmICghc3R5bGUgfHwgc3R5bGUtPmZpcnN0Q2hpbGRTdGF0ZSgpKQotICAgICAgICAg
ICAgICAgIGVsZW1lbnRBZnRlckNoYW5nZS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVy
bmFsKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gaGFuZGxlIG5v
ZGUgcmVtb3ZhbC4KLSAgICAgICAgaWYgKGNoZWNrVHlwZSA9PSBTaWJsaW5nRWxlbWVudFJlbW92
ZWQgJiYgbmV3Rmlyc3RFbGVtZW50ID09IGVsZW1lbnRBZnRlckNoYW5nZSAmJiBuZXdGaXJzdEVs
ZW1lbnQpIHsKLSAgICAgICAgICAgIGF1dG8qIHN0eWxlID0gbmV3Rmlyc3RFbGVtZW50LT5yZW5k
ZXJTdHlsZSgpOwotICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmZpcnN0Q2hpbGRT
dGF0ZSgpKQotICAgICAgICAgICAgICAgIG5ld0ZpcnN0RWxlbWVudC0+aW52YWxpZGF0ZVN0eWxl
Rm9yU3VidHJlZUludGVybmFsKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyA6bGFzdC1j
aGlsZC4gIEluIHRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2ZSB0byBjaGVj
ayBhbnl0aGluZywgc2luY2Ugd2Ugd2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4KLSAgICAvLyBJ
biB0aGUgRE9NIGNhc2UsIHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgfGFmdGVyQ2hh
bmdlfCBpcyBub3QgMC4KLSAgICBpZiAocGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGls
ZFJ1bGVzKCkgJiYgZWxlbWVudEJlZm9yZUNoYW5nZSkgewotICAgICAgICAvLyBGaW5kIG91ciBu
ZXcgbGFzdCBjaGlsZC4KLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0xhc3RFbGVtZW50ID0g
RWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKHBhcmVudCk7Ci0KLSAgICAgICAgaWYgKG5ld0xh
c3RFbGVtZW50ICE9IGVsZW1lbnRCZWZvcmVDaGFuZ2UpIHsKLSAgICAgICAgICAgIGF1dG8qIHN0
eWxlID0gZWxlbWVudEJlZm9yZUNoYW5nZS0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgIGlm
ICghc3R5bGUgfHwgc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkpCi0gICAgICAgICAgICAgICAgZWxl
bWVudEJlZm9yZUNoYW5nZS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gaGFuZGxlIG5vZGUgcmVtb3Zh
bC4gIFRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSBpcyBzaW1pbGFyIHRvIG5vZGUgcmVtb3ZhbCBh
cyB3ZWxsIGluIHRoYXQgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIGxhc3QgY2hpbGQKLSAgICAgICAg
Ly8gdG8gbWF0Y2ggbm93LgotICAgICAgICBpZiAoKGNoZWNrVHlwZSA9PSBTaWJsaW5nRWxlbWVu
dFJlbW92ZWQgfHwgY2hlY2tUeXBlID09IEZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKSAmJiBuZXdM
YXN0RWxlbWVudCA9PSBlbGVtZW50QmVmb3JlQ2hhbmdlICYmIG5ld0xhc3RFbGVtZW50KSB7Ci0g
ICAgICAgICAgICBhdXRvKiBzdHlsZSA9IG5ld0xhc3RFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwot
ICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkpCi0gICAg
ICAgICAgICAgICAgbmV3TGFzdEVsZW1lbnQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRl
cm5hbCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaW52YWxpZGF0ZUZvclNpYmxpbmdDb21i
aW5hdG9ycyhlbGVtZW50QWZ0ZXJDaGFuZ2UpOwotCi0gICAgaW52YWxpZGF0ZUZvckZvcndhcmRQ
b3NpdGlvbmFsUnVsZXMocGFyZW50LCBlbGVtZW50QWZ0ZXJDaGFuZ2UpOwotICAgIGludmFsaWRh
dGVGb3JCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhwYXJlbnQsIGVsZW1lbnRCZWZvcmVDaGFuZ2Up
OwotfQotCiB2b2lkIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYg
Y2hhbmdlKQogewogICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwot
ICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKLSAg
ICAgICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKCp0aGlzKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgYXV0byBjaGVja1R5cGUgPSBjaGFuZ2UudHlwZSA9PSBDaGlsZENoYW5nZTo6VHlwZTo6RWxl
bWVudFJlbW92ZWQgPyBTaWJsaW5nRWxlbWVudFJlbW92ZWQgOiBPdGhlcjsKLSAgICAgICAgY2hl
Y2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKCp0aGlzLCBjaGVja1R5cGUsIGNoYW5nZS5wcmV2aW91
c1NpYmxpbmdFbGVtZW50LCBjaGFuZ2UubmV4dFNpYmxpbmdFbGVtZW50KTsKLSAgICB9CiAKLSAg
ICBpZiAoU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRoaXMtPnNoYWRvd1Jvb3QoKSkgeworICAg
IGlmIChhdXRvKiBzaGFkb3dSb290ID0gdGhpcy0+c2hhZG93Um9vdCgpKSB7CiAgICAgICAgIHN3
aXRjaCAoY2hhbmdlLnR5cGUpIHsKICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6RWxl
bWVudEluc2VydGVkOgogICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50UmVt
b3ZlZDoKQEAgLTI4MDIsNyArMjY5MCw4IEBAIHZvaWQgRWxlbWVudDo6ZmluaXNoUGFyc2luZ0No
aWxkcmVuKCkKIHsKICAgICBDb250YWluZXJOb2RlOjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsK
ICAgICBzZXRJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCk7Ci0gICAgY2hlY2tGb3JTaWJsaW5n
U3R5bGVDaGFuZ2VzKCp0aGlzLCBGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbiwgRWxlbWVudFRyYXZl
cnNhbDo6bGFzdENoaWxkKCp0aGlzKSwgbnVsbHB0cik7CisKKyAgICBTdHlsZTo6Q2hpbGRDaGFu
Z2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVBZnRlckZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCp0
aGlzKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kQXR0cmlidXRlcyhTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggMDRj
ZTY1ZGU2ZTg3MmNmMDkzZDJjY2FmMGRmMThhYjk2ZTdhNGU4Mi4uZWY3Y2U4OTk4ZGUwM2YyMGY0
MjBmMDk1YzM4MTdkZDA1MTQzMWVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC03NjMsNiArNzYz
LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RWxlbWVudERhdGE+IG1fZWxlbWVudERhdGE7CiB9
OwogCit2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMoRWxlbWVudCogc2libGlu
Zyk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihXZWJDb3JlOjpFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvQ2hpbGRD
aGFuZ2VJbnZhbGlkYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmOGRkNDMyZmFhY2Q1NTlmNGM3MDg5
Y2FlY2YwZGFjMGRlN2RhNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAKQEAgLTAsMCArMSwxNzggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2hpbGRDaGFuZ2VJbnZhbGlkYXRp
b24uaCIKKworI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKKyNpbmNsdWRlICJTbG90QXNzaWdubWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZTo6
U3R5bGUgeworCitDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRp
b24oQ29udGFpbmVyTm9kZSYgY29udGFpbmVyLCBjb25zdCBDb250YWluZXJOb2RlOjpDaGlsZENo
YW5nZSYgY2hpbGRDaGFuZ2UpCisgICAgOiBtX3BhcmVudEVsZW1lbnQoaXM8RWxlbWVudD4oY29u
dGFpbmVyKSA/IGRvd25jYXN0PEVsZW1lbnQ+KCZjb250YWluZXIpIDogbnVsbHB0cikKKyAgICAs
IG1faXNFbmFibGVkKG1fcGFyZW50RWxlbWVudCA/IG1fcGFyZW50RWxlbWVudC0+bmVlZHNTdHls
ZUludmFsaWRhdGlvbigpIDogZmFsc2UpCisgICAgLCBtX2NoaWxkQ2hhbmdlKGNoaWxkQ2hhbmdl
KQoreworICAgIC8vIEZJWE1FOiBEbyBzbWFydGVyIGludmFsaWRhdGlvbiBzaW1pbGFyIHRvIENs
YXNzQ2hhbmdlSW52YWxpZGF0aW9uLgorfQorCitDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6fkNo
aWxkQ2hhbmdlSW52YWxpZGF0aW9uKCkKK3sKKyAgICBpZiAoIW1faXNFbmFibGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpbnZhbGlkYXRlQWZ0ZXJDaGFuZ2UoKTsKK30KKworc3RhdGljIHZv
aWQgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgaWYg
KCFlbGVtZW50LnN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8qIHN0eWxlID0gZWxlbWVudC5yZW5kZXJTdHlsZSgpOworICAgIGlmICghc3R5bGUgfHwg
KCFzdHlsZS0+ZW1wdHlTdGF0ZSgpIHx8IGVsZW1lbnQuaGFzQ2hpbGROb2RlcygpKSkKKyAgICAg
ICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Cit9CisKK3N0YXRpYyB2b2lk
IGludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxl
bWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQoreworICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZCA9
IHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CisgICAg
Ym9vbCBkZXNjZW5kYW50c0FmZmVjdGVkID0gcGFyZW50LmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKworICAgIGlmICghY2hpbGRyZW5BZmZlY3RlZCAmJiAh
ZGVzY2VuZGFudHNBZmZlY3RlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvKiBz
aWJsaW5nID0gZWxlbWVudEFmdGVyQ2hhbmdlOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+
bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkcmVuQWZmZWN0ZWQpCisg
ICAgICAgICAgICBzaWJsaW5nLT5pbnZhbGlkYXRlU3R5bGVJbnRlcm5hbCgpOworICAgICAgICBp
ZiAoZGVzY2VuZGFudHNBZmZlY3RlZCkgeworICAgICAgICAgICAgZm9yIChhdXRvKiBzaWJsaW5n
Q2hpbGQgPSBzaWJsaW5nLT5maXJzdEVsZW1lbnRDaGlsZCgpOyBzaWJsaW5nQ2hpbGQ7IHNpYmxp
bmdDaGlsZCA9IHNpYmxpbmdDaGlsZC0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpCisgICAgICAgICAg
ICAgICAgc2libGluZ0NoaWxkLT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgaW52YWxpZGF0ZUZvckJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxlbWVudCogZWxlbWVudEJlZm9yZUNo
YW5nZSkKK3sKKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWQgPSBwYXJlbnQuY2hpbGRyZW5BZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICBib29sIGRlc2NlbmRhbnRzQWZm
ZWN0ZWQgPSBwYXJlbnQuZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMoKTsKKworICAgIGlmICghY2hpbGRyZW5BZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNBZmZlY3Rl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudEJl
Zm9yZUNoYW5nZTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNp
YmxpbmcoKSkgeworICAgICAgICBpZiAoY2hpbGRyZW5BZmZlY3RlZCkKKyAgICAgICAgICAgIHNp
YmxpbmctPmludmFsaWRhdGVTdHlsZUludGVybmFsKCk7CisgICAgICAgIGlmIChkZXNjZW5kYW50
c0FmZmVjdGVkKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8qIHNpYmxpbmdDaGlsZCA9IHNpYmxp
bmctPmZpcnN0RWxlbWVudENoaWxkKCk7IHNpYmxpbmdDaGlsZDsgc2libGluZ0NoaWxkID0gc2li
bGluZ0NoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKKyAgICAgICAgICAgICAgICBzaWJsaW5n
Q2hpbGQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOworICAgICAgICB9Cisg
ICAgfQorfQorCitzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9yRmlyc3RDaGlsZFN0YXRlKEVsZW1l
bnQmIGNoaWxkKQoreworICAgIGF1dG8qIHN0eWxlID0gY2hpbGQucmVuZGVyU3R5bGUoKTsKKyAg
ICBpZiAoIXN0eWxlIHx8ICFzdHlsZS0+Zmlyc3RDaGlsZFN0YXRlKCkpCisgICAgICAgIGNoaWxk
LmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOworfQorCitzdGF0aWMgdm9pZCBp
bnZhbGlkYXRlRm9yTGFzdENoaWxkU3RhdGUoRWxlbWVudCYgY2hpbGQpCit7CisgICAgYXV0byog
c3R5bGUgPSBjaGlsZC5yZW5kZXJTdHlsZSgpOworICAgIGlmICghc3R5bGUgfHwgIXN0eWxlLT5s
YXN0Q2hpbGRTdGF0ZSgpKQorICAgICAgICBjaGlsZC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVl
SW50ZXJuYWwoKTsKK30KKwordm9pZCBDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0
ZUFmdGVyQ2hhbmdlKCkKK3sKKyAgICBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UocGFyZW50RWxl
bWVudCgpKTsKKworICAgIGlmIChtX2NoaWxkQ2hhbmdlLnNvdXJjZSA9PSBDb250YWluZXJOb2Rl
OjpDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGNo
ZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcygpOworfQorCit2b2lkIENoaWxkQ2hhbmdlSW52YWxp
ZGF0aW9uOjppbnZhbGlkYXRlQWZ0ZXJGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbihFbGVtZW50JiBw
YXJlbnQpCit7CisgICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKHBhcmVudCk7CisKKyAgICBh
dXRvKiBsYXN0Q2hpbGRFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKHBhcmVu
dCk7CisgICAgaWYgKCFsYXN0Q2hpbGRFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAocGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkpCisgICAgICAgIGlu
dmFsaWRhdGVGb3JMYXN0Q2hpbGRTdGF0ZSgqbGFzdENoaWxkRWxlbWVudCk7CisKKyAgICBpbnZh
bGlkYXRlRm9yQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMocGFyZW50LCBsYXN0Q2hpbGRFbGVtZW50
KTsKK30KKwordm9pZCBDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6Y2hlY2tGb3JTaWJsaW5nU3R5
bGVDaGFuZ2VzKCkKK3sKKyAgICBhdXRvJiBwYXJlbnQgPSBwYXJlbnRFbGVtZW50KCk7CisgICAg
YXV0byogZWxlbWVudEJlZm9yZUNoYW5nZSA9IG1fY2hpbGRDaGFuZ2UucHJldmlvdXNTaWJsaW5n
RWxlbWVudDsKKyAgICBhdXRvKiBlbGVtZW50QWZ0ZXJDaGFuZ2UgPSBtX2NoaWxkQ2hhbmdlLm5l
eHRTaWJsaW5nRWxlbWVudDsKKworICAgIC8vIDpmaXJzdC1jaGlsZC4gSW4gdGhlIHBhcnNlciBj
YWxsYmFjayBjYXNlLCB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrIGFueXRoaW5nLCBzaW5jZSB3ZSB3
ZXJlIHJpZ2h0IHRoZSBmaXJzdCB0aW1lLgorICAgIC8vIEluIHRoZSBET00gY2FzZSwgd2Ugb25s
eSBuZWVkIHRvIGRvIHNvbWV0aGluZyBpZiB8YWZ0ZXJDaGFuZ2V8IGlzIG5vdCAwLgorICAgIC8v
IHxhZnRlckNoYW5nZXwgaXMgMCBpbiB0aGUgcGFyc2VyIGNhc2UsIHNvIGl0IHdvcmtzIG91dCB0
aGF0IHdlJ2xsIHNraXAgdGhpcyBibG9jay4KKyAgICBpZiAocGFyZW50LmNoaWxkcmVuQWZmZWN0
ZWRCeUZpcnN0Q2hpbGRSdWxlcygpICYmIGVsZW1lbnRBZnRlckNoYW5nZSkgeworICAgICAgICAv
LyBGaW5kIG91ciBuZXcgZmlyc3QgY2hpbGQuCisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBuZXdG
aXJzdEVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdENoaWxkKHBhcmVudCk7CisgICAg
ICAgIC8vIEZpbmQgdGhlIGZpcnN0IGVsZW1lbnQgbm9kZSBmb2xsb3dpbmcgfGFmdGVyQ2hhbmdl
fAorCisgICAgICAgIC8vIFRoaXMgaXMgdGhlIGluc2VydC9hcHBlbmQgY2FzZS4KKyAgICAgICAg
aWYgKG5ld0ZpcnN0RWxlbWVudCAhPSBlbGVtZW50QWZ0ZXJDaGFuZ2UpCisgICAgICAgICAgICBp
bnZhbGlkYXRlRm9yRmlyc3RDaGlsZFN0YXRlKCplbGVtZW50QWZ0ZXJDaGFuZ2UpOworCisgICAg
ICAgIC8vIFdlIGFsc28gaGF2ZSB0byBoYW5kbGUgbm9kZSByZW1vdmFsLgorICAgICAgICBpZiAo
bV9jaGlsZENoYW5nZS50eXBlID09IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpF
bGVtZW50UmVtb3ZlZCAmJiBuZXdGaXJzdEVsZW1lbnQgPT0gZWxlbWVudEFmdGVyQ2hhbmdlKQor
ICAgICAgICAgICAgaW52YWxpZGF0ZUZvckZpcnN0Q2hpbGRTdGF0ZSgqbmV3Rmlyc3RFbGVtZW50
KTsKKyAgICB9CisKKyAgICAvLyA6bGFzdC1jaGlsZC4gSW4gdGhlIHBhcnNlciBjYWxsYmFjayBj
YXNlLCB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrIGFueXRoaW5nLCBzaW5jZSB3ZSB3ZXJlIHJpZ2h0
IHRoZSBmaXJzdCB0aW1lLgorICAgIC8vIEluIHRoZSBET00gY2FzZSwgd2Ugb25seSBuZWVkIHRv
IGRvIHNvbWV0aGluZyBpZiB8YWZ0ZXJDaGFuZ2V8IGlzIG5vdCAwLgorICAgIGlmIChwYXJlbnQu
Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSAmJiBlbGVtZW50QmVmb3JlQ2hhbmdl
KSB7CisgICAgICAgIC8vIEZpbmQgb3VyIG5ldyBsYXN0IGNoaWxkLgorICAgICAgICBSZWZQdHI8
RWxlbWVudD4gbmV3TGFzdEVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQocGFy
ZW50KTsKKworICAgICAgICBpZiAobmV3TGFzdEVsZW1lbnQgIT0gZWxlbWVudEJlZm9yZUNoYW5n
ZSkKKyAgICAgICAgICAgIGludmFsaWRhdGVGb3JMYXN0Q2hpbGRTdGF0ZSgqZWxlbWVudEJlZm9y
ZUNoYW5nZSk7CisKKyAgICAgICAgLy8gV2UgYWxzbyBoYXZlIHRvIGhhbmRsZSBub2RlIHJlbW92
YWwuCisgICAgICAgIGlmIChtX2NoaWxkQ2hhbmdlLnR5cGUgPT0gQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2U6OlR5cGU6OkVsZW1lbnRSZW1vdmVkICYmIG5ld0xhc3RFbGVtZW50ID09IGVsZW1l
bnRCZWZvcmVDaGFuZ2UpCisgICAgICAgICAgICBpbnZhbGlkYXRlRm9yTGFzdENoaWxkU3RhdGUo
Km5ld0xhc3RFbGVtZW50KTsKKyAgICB9CisKKyAgICBpbnZhbGlkYXRlRm9yU2libGluZ0NvbWJp
bmF0b3JzKGVsZW1lbnRBZnRlckNoYW5nZSk7CisKKyAgICBpbnZhbGlkYXRlRm9yRm9yd2FyZFBv
c2l0aW9uYWxSdWxlcyhwYXJlbnQsIGVsZW1lbnRBZnRlckNoYW5nZSk7CisgICAgaW52YWxpZGF0
ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKHBhcmVudCwgZWxlbWVudEJlZm9yZUNoYW5nZSk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NoaWxkQ2hhbmdlSW52
YWxpZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlv
bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY3MTI5ZGQ0MGE3OWY2NGNkYmYyYzQyMGQ4YjQ0MzEwOGZlMmUyNzgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUludmFs
aWRhdGlvbi5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFN0
eWxlIHsKKworY2xhc3MgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24geworcHVibGljOgorICAgIENo
aWxkQ2hhbmdlSW52YWxpZGF0aW9uKENvbnRhaW5lck5vZGUmLCBjb25zdCBDb250YWluZXJOb2Rl
OjpDaGlsZENoYW5nZSYpOworICAgIH5DaGlsZENoYW5nZUludmFsaWRhdGlvbigpOworCisgICAg
c3RhdGljIHZvaWQgaW52YWxpZGF0ZUFmdGVyRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oRWxlbWVu
dCYpOworCitwcml2YXRlOgorICAgIHZvaWQgaW52YWxpZGF0ZUFmdGVyQ2hhbmdlKCk7CisgICAg
dm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoKTsKKworICAgIEVsZW1lbnQmIHBhcmVu
dEVsZW1lbnQoKSB7IHJldHVybiAqbV9wYXJlbnRFbGVtZW50OyB9CisKKyAgICBFbGVtZW50KiBt
X3BhcmVudEVsZW1lbnQgeyBudWxscHRyIH07CisgICAgY29uc3QgYm9vbCBtX2lzRW5hYmxlZDsK
KworICAgIGNvbnN0IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlJiBtX2NoaWxkQ2hhbmdlOwor
fTsKKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVBZGp1c3Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVBZGp1c3Rlci5oCmluZGV4IDE5MTMxZTU4
MGY1NjQ1YWVhMjIzMjgyOTRlOWQ3NjFlYmY4MzVkNjcuLjk3MmExYWJkMTUyMDYwNTYwMTgzNDMx
ZjY0ODQ3OTk4MzhkOTlkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
QWRqdXN0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUFkanVzdGVyLmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25z
dGFudHMuaCIKKyNpbmNsdWRlICJUZXh0U2l6ZUFkanVzdG1lbnQuaCIKICNpbmNsdWRlIDx3dGYv
T3B0aW9uU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444963</attachid>
            <date>2021-11-22 06:59:45 -0800</date>
            <delta_ts>2021-11-22 08:31:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233311-20211122165944.patch</filename>
            <type>text/plain</type>
            <size>42111</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ0YWUwOGI5ZjZjNGJm
MDUxZDc3YWFkOGNjNWEzNDA4NzZjODZmNy4uNTY0MjQ1NGQyODZjMTA4MmMwZTBiYTQxMDA0Njg2
NmI0OWUyYWRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIxLTExLTE4ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgY2hpbGQgY2hh
bmdlIGludmFsaWRhdGlvbiBpbnRvIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBBbGFuIEJ1
anRhcy4KKworICAgICAgICBVc2Ugc2ltaWxhciBwYXR0ZXJuIGFzIENsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uIGFuZCBvdGhlcnMgd2hlcmUgd2UgY3JlYXRlIGEgc3RhY2sgb2JqZWN0IHNjb3BlZAor
ICAgICAgICBvdmVyIGEgRE9NIG11dGF0aW9uLiBUaGlzIHdpbGwgYWxsb3cgbW9yZSBzb3BoaXN0
aWNhdGVkIHJ1bGVzZXQgYmFzZWQgaW52YWxpZGF0aW9uIGluCisgICAgICAgIGZ1dHVyZS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBpbnZhbGlkYXRpb24gY29kZSBmcm9tIGNoaWxk
cmVuQ2hhbmdlZCgpIHRvIHRoZSBuZXcgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24gY2xhc3MuCisg
ICAgICAgIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uIGlzIGluc3RhbnRpYXRlZCBpbiBDb250YWlu
ZXJOb2RlIGFuZCBDaGFyYWN0ZXJEYXRhIG11dGF0aW9uIGZ1bmN0aW9ucworICAgICAgICB0aGF0
IGNhbGwgY2hpbGRyZW5DaGFuZ2VkKCkuIEl0IHVzZXMgdGhlIHNhbWUgQ2hpbGRDaGFuZ2UgYXJn
dW1lbnQgdHlwZSBhcyBjaGlsZHJlbkNoYW5nZWQoKS4KKworICAgICAgICBUaGVyZSBhcmUgbm8g
Y2hhbmdlcyB0byBpbnZhbGlkYXRpb24gZnVuY3Rpb25hbGl0eSBpbiB0aGlzIHBhdGNoLgorCisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1ha2VDaGlsZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRh
OjpwYXJzZXJBcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OnNl
dERhdGFBbmRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6bm90aWZ5
UGFyZW50QWZ0ZXJDaGFuZ2UpOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmg6CisgICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Om1ha2VDaGlsZENoYW5nZUZvclJlbW92YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6bWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFp
bmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpy
ZXBsYWNlQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxk
V2l0aG91dFByZUluc2VydGlvblZhbGlkaXR5Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6YWZmZWN0
c0VsZW1lbnRzKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppbnZhbGlkYXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZpbmlzaFBh
cnNpbmdDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0ZvckVtcHR5U3R5bGVDaGFu
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvckZvcndhcmRQb3Np
dGlvbmFsUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvckJh
Y2t3YXJkUG9zaXRpb25hbFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNoZWNr
Rm9yU2libGluZ1N0eWxlQ2hhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0VsZW1lbnQu
aDoKKyAgICAgICAgKiBzdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjpDaGlsZENo
YW5nZUludmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJ
bnZhbGlkYXRpb246On5DaGlsZENoYW5nZUludmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVBZnRlckNoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmNoZWNr
Rm9yRW1wdHlTdHlsZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6aW52YWxpZGF0
ZUZvckZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Omlu
dmFsaWRhdGVGb3JCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdl
cyk6CisgICAgICAgICogc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OnBhcmVudEVs
ZW1lbnQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlQWRqdXN0ZXIuaDoKKwogMjAyMS0xMS0yMSAg
QWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRp
b25dIEVuYWJsZSBiaWRpIGNvbnRlbnQgZm9yIG5vbi1pbmxpbmUtYm94IGNhc2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDIwYTNkOGM4M2E2ZGY4YjY3ZjI0NzI1MzA5MTFjMjI5MTQ3ZjU5NjQuLjhmNzll
Y2U4Y2M3YzA1OTk4YTk1ZmNhMmI1YmU2NDMyN2ViY2U3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0y
NTI0LDYgKzI1MjQsNyBAQCBzdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCiBzdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci5jcHAKIHN0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdlci5jcHAKIHN0
eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAKK3N0eWxlL0NoaWxkQ2hhbmdlSW52
YWxpZGF0aW9uLmNwcAogc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCiBzdHlsZS9F
bGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKIHN0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDg3NTU3NDQwODg0Njk0ZjdlN2UzMTMyNDA3YzNmYzkzOGRkZmRlYWMuLjA0ZTk2OTg0NGRm
YmYzOGY3OTVjY2NmZTZiYmM2NTRhN2UwN2VhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzNDIsNiArNTM0Miw3IEBACiAJ
CUU0QzE3ODlCMEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzE3ODk2MEVFNjkwMzgwMDgy
NEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFNEMyNzk1OTBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVk
aWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzI3
OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0QzNCMUZBMEYwRTQxNjEwMDk2OTNGNiAv
KiBMZWdhY3lUaWxlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0QzNCMUY5MEYwRTQxNjEwMDk2OTNGNiAvKiBMZWdhY3lUaWxlQ2FjaGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNEM0QzYx
QTI3NDUyQTc5MDBBMDQwRTcgLyogQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzRDNjE4Mjc0NTJBNzkwMEEw
NDBFNyAvKiBDaGlsZENoYW5nZUludmFsaWRhdGlvbi5oICovOyB9OwogCQlFNEM5MUEwRTE4MDIz
NDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzkxQTBEMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFp
bnRTdHlsZS5oICovOyB9OwogCQlFNEM5MUExNjE4MDk5OUYxMDBBMTdGNkQgLyogUmVuZGVyVGV4
dExpbmVCb3hlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRDOTFBMTUxODA5OTlGMTAwQTE3RjZEIC8qIFJlbmRlclRleHRMaW5lQm94ZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEQzM0YzQjI1
MkFFRUNEMDA4MzdEMDUgLyogSW5saW5lUnVuQW5kT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQzM0YzOTI1MkFFRUNDMDA4MzdEMDUgLyog
SW5saW5lUnVuQW5kT2Zmc2V0LmggKi87IH07CkBAIC0xNzA0Niw2ICsxNzA0Nyw4IEBACiAJCUU0
QzI3OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZWRpYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNEMzQjFGOTBGMEU0MTYxMDA5NjkzRjYgLyogTGVnYWN5VGlsZUNhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2FjeVRpbGVDYWNoZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNEMzQjFGQjBGMEU0MTcwMDA5NjkzRjYgLyogTGVnYWN5VGls
ZUNhY2hlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5
VGlsZUNhY2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEM0QzYxODI3NDUy
QTc5MDBBMDQwRTcgLyogQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTRDNEM2MUIyNzQ1MkE4QTAwQTA0MEU3IC8qIENoaWxkQ2hhbmdl
SW52YWxpZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoaWxkQ2hhbmdlSW52YWxpZGF0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRDOTFBMEQxODAyMzQzMTAw
QTE3RjZEIC8qIFRleHRQYWludFN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRleHRQYWludFN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0Qzkx
QTBGMTgwMjM0MzkwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGFpbnRTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0QzkxQTE1MTgwOTk5RjEwMEExN0Y2RCAvKiBSZW5kZXJUZXh0TGlu
ZUJveGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRleHRMaW5l
Qm94ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwMjgyLDYgKzMwMjg1LDgg
QEAKIAkJCQlFNEE4MTRENzFDNzBFMTA1MDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxp
ZGF0aW9uLmNwcCAqLywKIAkJCQlFNEE4MTREOTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRl
Q2hhbmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJRTRBQkFCRjQyMzY4QzZFRjAwRkE0MzQ1IC8q
IENhc2NhZGVMZXZlbC5oICovLAorCQkJCUU0QzRDNjFCMjc0NTJBOEEwMEEwNDBFNyAvKiBDaGls
ZENoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8sCisJCQkJRTRDNEM2MTgyNzQ1MkE3OTAwQTA0MEU3
IC8qIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJRTRBODE0RDUxQzZERUU4RDAw
QkY4NUFDIC8qIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLywKIAkJCQlFNEE4MTREMzFD
NkRFQzQwMDBCRjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlGQkRC
NjE5QTE2RDYwMzJBMDBCQjMzOTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwICovLApAQCAt
MzI3MzcsNiArMzI3NDIsNyBAQAogCQkJCTkzRjJDQzkzMjQyN0ZCOUMwMDU4NTFEOCAvKiBDaGFy
YWN0ZXJSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCOEZGRDExNkFFN0Y5NjAwMzgzODhE
IC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY1NUIzREIyMTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTRDNEM2MUEyNzQ1MkE3OTAwQTA0MEU3IC8qIENoaWxkQ2hhbmdlSW52YWxp
ZGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlENjE5QTMwODE0NEUwMEJFMDA0QkMzMDIgLyog
Q2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMjAwOTc3
RDNDMDAwNTgyNkQ5IC8qIENoaWxkTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RDgy
MzUyMEFGOTJBNzkwMDA0RjA1NyAvKiBDaHJvbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IDJlNjVjNjI0NDk3MzM3ZTZiOTAwYWUzOTAwYzFh
MTI2Yzk3ZDZjODguLjg5NzdlMjQ3ZjJiYWZlM2JmMjVmOTJiYTkzMjQ5OTllZGI5NDIzY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNs
dWRlICJDaGFyYWN0ZXJEYXRhLmgiCiAKICNpbmNsdWRlICJBdHRyLmgiCisjaW5jbHVkZSAiQ2hp
bGRDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCkBAIC03
Myw2ICs3NCwxNiBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IENoYXJhY3RlckRhdGE6OnN1YnN0cmlu
Z0RhdGEodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudAogICAgIHJldHVybiBtX2RhdGEu
c3Vic3RyaW5nKG9mZnNldCwgY291bnQpOwogfQogCitzdGF0aWMgQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2UgbWFrZUNoaWxkQ2hhbmdlKENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEsIENv
bnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNlKQoreworICAgIHJldHVybiB7
CisgICAgICAgIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdlZCwK
KyAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoYXJhY3RlckRhdGEp
LAorICAgICAgICBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGFyYWN0ZXJEYXRhKSwK
KyAgICAgICAgc291cmNlCisgICAgfTsKK30KKwogdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFy
c2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGhMaW1pdCkKIHsKICAgICB1bnNpZ25lZCBvbGRMZW5ndGggPSBtX2RhdGEubGVu
Z3RoKCk7CkBAIC05NSw2ICsxMDYsMTEgQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2Vy
QXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIGlm
ICghY2hhcmFjdGVyTGVuZ3RoTGltaXQpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgYXV0byBj
aGlsZENoYW5nZSA9IG1ha2VDaGlsZENoYW5nZSgqdGhpcywgQ29udGFpbmVyTm9kZTo6Q2hpbGRD
aGFuZ2U6OlNvdXJjZTo6UGFyc2VyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpDaGlsZENo
YW5nZUludmFsaWRhdGlvbj4gc3R5bGVJbnZhbGlkYXRpb247CisgICAgaWYgKGF1dG8qIHBhcmVu
dCA9IHBhcmVudE5vZGUoKSkKKyAgICAgICAgc3R5bGVJbnZhbGlkYXRpb24uZW1wbGFjZSgqcGFy
ZW50LCBjaGlsZENoYW5nZSk7CisKICAgICBTdHJpbmcgb2xkRGF0YSA9IG1fZGF0YTsKICAgICBp
ZiAoc3RyaW5nLmlzOEJpdCgpKQogICAgICAgICBtX2RhdGEuYXBwZW5kKHN0cmluZy5jaGFyYWN0
ZXJzOCgpICsgb2Zmc2V0LCBjaGFyYWN0ZXJMZW5ndGhMaW1pdCk7CkBAIC0xMDUsNyArMTIxLDcg
QEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcm
IHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIGlmIChpczxUZXh0PigqdGhpcykpCiAgICAg
ICAgIGRvd25jYXN0PFRleHQ+KCp0aGlzKS51cGRhdGVSZW5kZXJlckFmdGVyQ29udGVudENoYW5n
ZShvbGRMZW5ndGgsIDApOwogCi0gICAgbm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoQ29udGFpbmVy
Tm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKTsKKyAgICBub3RpZnlQYXJlbnRBZnRl
ckNoYW5nZShjaGlsZENoYW5nZSk7CiAKICAgICBhdXRvIG11dGF0aW9uUmVjaXBpZW50cyA9IE11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JDaGFyYWN0ZXJEYXRhTXV0YXRp
b24oKnRoaXMpOwogICAgIGlmIChVTkxJS0VMWShtdXRhdGlvblJlY2lwaWVudHMpKQpAQCAtMTcz
LDYgKzE4OSwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDaGFyYWN0ZXJEYXRhOjpzZXROb2RlVmFs
dWUoY29uc3QgU3RyaW5nJiBub2RlVmFsdWUpCiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0
YUFuZFVwZGF0ZShjb25zdCBTdHJpbmcmIG5ld0RhdGEsIHVuc2lnbmVkIG9mZnNldE9mUmVwbGFj
ZWREYXRhLCB1bnNpZ25lZCBvbGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCwgVXBkYXRlTGl2
ZVJhbmdlcyBzaG91bGRVcGRhdGVMaXZlUmFuZ2VzKQogeworICAgIGF1dG8gY2hpbGRDaGFuZ2Ug
PSBtYWtlQ2hpbGRDaGFuZ2UoKnRoaXMsIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3Vy
Y2U6OkFQSSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRh
dGlvbj4gc3R5bGVJbnZhbGlkYXRpb247CisgICAgaWYgKGF1dG8qIHBhcmVudCA9IHBhcmVudE5v
ZGUoKSkKKyAgICAgICAgc3R5bGVJbnZhbGlkYXRpb24uZW1wbGFjZSgqcGFyZW50LCBjaGlsZENo
YW5nZSk7CisKICAgICBTdHJpbmcgb2xkRGF0YSA9IG1fZGF0YTsKICAgICBtX2RhdGEgPSBuZXdE
YXRhOwogCkBAIC0xOTEsMjYgKzIxMywxOSBAQCB2b2lkIENoYXJhY3RlckRhdGE6OnNldERhdGFB
bmRVcGRhdGUoY29uc3QgU3RyaW5nJiBuZXdEYXRhLCB1bnNpZ25lZCBvZmZzZXRPZlJlcAogICAg
IGlmIChkb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgIGRvY3VtZW50KCkuZnJhbWUoKS0+c2Vs
ZWN0aW9uKCkudGV4dFdhc1JlcGxhY2VkKHRoaXMsIG9mZnNldE9mUmVwbGFjZWREYXRhLCBvbGRM
ZW5ndGgsIG5ld0xlbmd0aCk7CiAKLSAgICBub3RpZnlQYXJlbnRBZnRlckNoYW5nZShDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpBUEkpOworICAgIG5vdGlmeVBhcmVudEFmdGVy
Q2hhbmdlKGNoaWxkQ2hhbmdlKTsKIAogICAgIGRpc3BhdGNoTW9kaWZpZWRFdmVudChvbGREYXRh
KTsKIH0KIAotdm9pZCBDaGFyYWN0ZXJEYXRhOjpub3RpZnlQYXJlbnRBZnRlckNoYW5nZShDb250
YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSkKK3ZvaWQgQ2hhcmFjdGVyRGF0
YTo6bm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2UmIGNoaWxkQ2hhbmdlKQogewogICAgIGRvY3VtZW50KCkuaW5jRE9NVHJlZVZlcnNpb24oKTsK
IAogICAgIGlmICghcGFyZW50Tm9kZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZSBjaGFuZ2UgPSB7Ci0gICAgICAgIENvbnRhaW5lck5vZGU6OkNo
aWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdlZCwKLSAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6
cHJldmlvdXNTaWJsaW5nKCp0aGlzKSwKLSAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNp
YmxpbmcoKnRoaXMpLAotICAgICAgICBzb3VyY2UKLSAgICB9OwotCi0gICAgcGFyZW50Tm9kZSgp
LT5jaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKKyAgICBwYXJlbnROb2RlKCktPmNoaWxkcmVuQ2hh
bmdlZChjaGlsZENoYW5nZSk7CiB9CiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6ZGlzcGF0Y2hNb2Rp
ZmllZEV2ZW50KGNvbnN0IFN0cmluZyYgb2xkRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0
YS5oCmluZGV4IGM1OTQ3MzViZWNiMDlhMzZlNjU0MjlmMjI5NjZjZmExMzMwZjkzODEuLjM2YTQ5
MjU0MDdlOTEzY2NjYTczZTkwZGUwMzJhYjVmYjg3NzRhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJh
Y3RlckRhdGEuaApAQCAtNjUsNyArNjUsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFN0
cmluZyBub2RlVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRO
b2RlVmFsdWUoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlQYXJlbnRBZnRl
ckNoYW5nZShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlKTsKKyAgICB2b2lkIG5v
dGlmeVBhcmVudEFmdGVyQ2hhbmdlKGNvbnN0IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlJik7
CiAKICAgICBTdHJpbmcgbV9kYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAppbmRleCA2ZDhmZDFmZDU3NzA5MjBiODEyMzFkMzE1NmZlNTNiODg5NGM4OTgzLi4yYmUwZDRk
YjAzM2M2OTc4MzRkNzFkYmY5MzQ0N2UwMmZkOTVkYjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCiAjaW5jbHVkZSAiQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2hp
bGRDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJDaGlsZExpc3RNdXRhdGlvblNjb3Bl
LmgiCiAjaW5jbHVkZSAiQ2xhc3NDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIK
QEAgLTExMSwyOSArMTEyLDUyIEBAIEFMV0FZU19JTkxJTkUgTm9kZVZlY3RvciBDb250YWluZXJO
b2RlOjpyZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpCiAKICAgICBkaXNj
b25uZWN0U3ViZnJhbWVzSWZOZWVkZWQoKnRoaXMsIERlc2NlbmRhbnRzT25seSk7CiAKKyAgICBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZSBjaGlsZENoYW5nZSB7IENoaWxkQ2hhbmdlOjpUeXBl
OjpBbGxDaGlsZHJlblJlbW92ZWQsIG51bGxwdHIsIG51bGxwdHIsIHNvdXJjZSB9OworCiAgICAg
V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNwZW5kV2lkZ2V0SGllcmFy
Y2h5VXBkYXRlczsKICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3Jp
cHREaXNhbGxvd2VkU2NvcGU7CisgICAgeworICAgICAgICBTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZh
bGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIGNoaWxkQ2hhbmdlKTsKIAotICAgIGlm
IChVTkxJS0VMWShpc1NoYWRvd1Jvb3QoKSB8fCBpc0luU2hhZG93VHJlZSgpKSkKLSAgICAgICAg
Y29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+d2lsbFJlbW92ZUFsbENoaWxkcmVuKCp0aGlzKTsKKyAg
ICAgICAgaWYgKFVOTElLRUxZKGlzU2hhZG93Um9vdCgpIHx8IGlzSW5TaGFkb3dUcmVlKCkpKQor
ICAgICAgICAgICAgY29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+d2lsbFJlbW92ZUFsbENoaWxkcmVu
KCp0aGlzKTsKIAotICAgIGRvY3VtZW50KCkubm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZCgqdGhp
cyk7CisgICAgICAgIGRvY3VtZW50KCkubm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZCgqdGhpcyk7
CiAKLSAgICB3aGlsZSAoUmVmUHRyPE5vZGU+IGNoaWxkID0gbV9maXJzdENoaWxkKSB7Ci0gICAg
ICAgIHJlbW92ZUJldHdlZW4obnVsbHB0ciwgY2hpbGQtPm5leHRTaWJsaW5nKCksICpjaGlsZCk7
Ci0gICAgICAgIGF1dG8gc3VidHJlZU9ic2VydmFiaWxpdHkgPSBub3RpZnlDaGlsZE5vZGVSZW1v
dmVkKCp0aGlzLCAqY2hpbGQpOwotICAgICAgICBpZiAoc291cmNlID09IENoaWxkQ2hhbmdlOjpT
b3VyY2U6OkFQSSAmJiBzdWJ0cmVlT2JzZXJ2YWJpbGl0eSA9PSBSZW1vdmVkU3VidHJlZU9ic2Vy
dmFiaWxpdHk6Ok1heWJlT2JzZXJ2YWJsZUJ5UmVmUHRyKQotICAgICAgICAgICAgd2lsbENyZWF0
ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKGNoaWxkLmdldCgpKTsKKyAgICAgICAgd2hp
bGUgKFJlZlB0cjxOb2RlPiBjaGlsZCA9IG1fZmlyc3RDaGlsZCkgeworICAgICAgICAgICAgcmVt
b3ZlQmV0d2VlbihudWxscHRyLCBjaGlsZC0+bmV4dFNpYmxpbmcoKSwgKmNoaWxkKTsKKyAgICAg
ICAgICAgIGF1dG8gc3VidHJlZU9ic2VydmFiaWxpdHkgPSBub3RpZnlDaGlsZE5vZGVSZW1vdmVk
KCp0aGlzLCAqY2hpbGQpOworICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBDaGlsZENoYW5nZTo6
U291cmNlOjpBUEkgJiYgc3VidHJlZU9ic2VydmFiaWxpdHkgPT0gUmVtb3ZlZFN1YnRyZWVPYnNl
cnZhYmlsaXR5OjpNYXliZU9ic2VydmFibGVCeVJlZlB0cikKKyAgICAgICAgICAgICAgICB3aWxs
Q3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoY2hpbGQuZ2V0KCkpOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3Vt
ZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNPcnBoYW4oKSk7CiAKICAgICBpZiAoZGVm
ZXJDaGlsZHJlbkNoYW5nZWQgPT0gRGVmZXJDaGlsZHJlbkNoYW5nZWQ6Ok5vKQotICAgICAgICBj
aGlsZHJlbkNoYW5nZWQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgeyBDaGlsZENoYW5nZTo6
VHlwZTo6QWxsQ2hpbGRyZW5SZW1vdmVkLCBudWxscHRyLCBudWxscHRyLCBzb3VyY2UgfSk7Cisg
ICAgICAgIGNoaWxkcmVuQ2hhbmdlZChjaGlsZENoYW5nZSk7CiAKICAgICByZXR1cm4gY2hpbGRy
ZW47CiB9CiAKK3N0YXRpYyBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSBtYWtlQ2hpbGRDaGFu
Z2VGb3JSZW1vdmFsKE5vZGUmIGNoaWxkVG9SZW1vdmUsIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hh
bmdlOjpTb3VyY2Ugc291cmNlKQoreworICAgIGF1dG8gY2hhbmdlVHlwZSA9IFsmXSB7CisgICAg
ICAgIGlmIChpczxFbGVtZW50PihjaGlsZFRvUmVtb3ZlKSkKKyAgICAgICAgICAgIHJldHVybiBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6RWxlbWVudFJlbW92ZWQ7CisgICAgICAg
IGlmIChpczxUZXh0PihjaGlsZFRvUmVtb3ZlKSkKKyAgICAgICAgICAgIHJldHVybiBDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6VGV4dFJlbW92ZWQ7CisgICAgICAgIHJldHVybiBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29udGVudHNDaGlsZFJlbW92ZWQ7
CisgICAgfSgpOworCisgICAgcmV0dXJuIHsKKyAgICAgICAgY2hhbmdlVHlwZSwKKyAgICAgICAg
RWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkVG9SZW1vdmUpLAorICAgICAg
ICBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGlsZFRvUmVtb3ZlKSwKKyAgICAgICAg
c291cmNlCisgICAgfTsKK30KKwogQUxXQVlTX0lOTElORSBib29sIENvbnRhaW5lck5vZGU6OnJl
bW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9SZW1vdmUsIENoaWxkQ2hh
bmdlOjpTb3VyY2Ugc291cmNlKQogewogICAgIFJlZjxOb2RlPiBwcm90ZWN0ZWRDaGlsZFRvUmVt
b3ZlKGNoaWxkVG9SZW1vdmUpOwpAQCAtMTYyLDExICsxODYsMTMgQEAgQUxXQVlTX0lOTElORSBi
b29sIENvbnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNo
aWxkVG9SZW0KICAgICBpZiAoY2hpbGRUb1JlbW92ZS5wYXJlbnROb2RlKCkgIT0gdGhpcykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ2hpbGRDaGFuZ2UgY2hhbmdlOworICAgIGF1dG8g
Y2hpbGRDaGFuZ2UgPSBtYWtlQ2hpbGRDaGFuZ2VGb3JSZW1vdmFsKGNoaWxkVG9SZW1vdmUsIHNv
dXJjZSk7CisKICAgICBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHkgc3VidHJlZU9ic2VydmFi
aWxpdHk7CiAgICAgewogICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNj
b3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogICAgICAgICBTY3JpcHREaXNhbGxv
d2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CisgICAgICAgIFN0
eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgY2hp
bGRDaGFuZ2UpOwogCiAgICAgICAgIGlmIChVTkxJS0VMWShpc1NoYWRvd1Jvb3QoKSB8fCBpc0lu
U2hhZG93VHJlZSgpKSkKICAgICAgICAgICAgIGNvbnRhaW5pbmdTaGFkb3dSb290KCktPnJlc29s
dmVTbG90c0JlZm9yZU5vZGVJbnNlcnRpb25PclJlbW92YWwoKTsKQEAgLTE3OCwxNyArMjA0LDkg
QEAgQUxXQVlTX0lOTElORSBib29sIENvbnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0
QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9SZW0KIAogICAgICAgICBSZWZQdHI8Tm9kZT4gcHJldmlv
dXNTaWJsaW5nID0gY2hpbGRUb1JlbW92ZS5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgUmVm
UHRyPE5vZGU+IG5leHRTaWJsaW5nID0gY2hpbGRUb1JlbW92ZS5uZXh0U2libGluZygpOworCiAg
ICAgICAgIHJlbW92ZUJldHdlZW4ocHJldmlvdXNTaWJsaW5nLmdldCgpLCBuZXh0U2libGluZy5n
ZXQoKSwgY2hpbGRUb1JlbW92ZSk7CiAgICAgICAgIHN1YnRyZWVPYnNlcnZhYmlsaXR5ID0gbm90
aWZ5Q2hpbGROb2RlUmVtb3ZlZCgqdGhpcywgY2hpbGRUb1JlbW92ZSk7Ci0KLSAgICAgICAgY2hh
bmdlLnR5cGUgPSBpczxFbGVtZW50PihjaGlsZFRvUmVtb3ZlKSA/Ci0gICAgICAgICAgICBDaGls
ZENoYW5nZTo6VHlwZTo6RWxlbWVudFJlbW92ZWQgOgotICAgICAgICAgICAgKGlzPFRleHQ+KGNo
aWxkVG9SZW1vdmUpID8KLSAgICAgICAgICAgICAgICBDaGlsZENoYW5nZTo6VHlwZTo6VGV4dFJl
bW92ZWQgOgotICAgICAgICAgICAgICAgIENoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0No
aWxkUmVtb3ZlZCk7Ci0gICAgICAgIGNoYW5nZS5wcmV2aW91c1NpYmxpbmdFbGVtZW50ID0gKCFw
cmV2aW91c1NpYmxpbmcgfHwgaXM8RWxlbWVudD4oKnByZXZpb3VzU2libGluZykpID8gZG93bmNh
c3Q8RWxlbWVudD4ocHJldmlvdXNTaWJsaW5nLmdldCgpKSA6IEVsZW1lbnRUcmF2ZXJzYWw6OnBy
ZXZpb3VzU2libGluZygqcHJldmlvdXNTaWJsaW5nKTsKLSAgICAgICAgY2hhbmdlLm5leHRTaWJs
aW5nRWxlbWVudCA9ICghbmV4dFNpYmxpbmcgfHwgaXM8RWxlbWVudD4oKm5leHRTaWJsaW5nKSkg
PyBkb3duY2FzdDxFbGVtZW50PihuZXh0U2libGluZy5nZXQoKSkgOiBFbGVtZW50VHJhdmVyc2Fs
OjpuZXh0U2libGluZygqbmV4dFNpYmxpbmcpOwotICAgICAgICBjaGFuZ2Uuc291cmNlID0gc291
cmNlOwogICAgIH0KIAogICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJ
ICYmIHN1YnRyZWVPYnNlcnZhYmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eTo6
TWF5YmVPYnNlcnZhYmxlQnlSZWZQdHIpCkBAIC0xOTcsMjEgKzIxNSw0NSBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24oTm9k
ZSYgY2hpbGRUb1JlbQogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFkb2N1
bWVudCgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzT3JwaGFuKCkpOwogCiAgICAgLy8gRklY
TUU6IE1vdmUgY2hpbGRyZW5DaGFuZ2VkIGludG8gU2NyaXB0RGlzYWxsb3dlZFNjb3BlIGJsb2Nr
LgotICAgIGNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOworICAgIGNoaWxkcmVuQ2hhbmdlZChjaGls
ZENoYW5nZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogZW51bSBjbGFzcyBSZXBsYWNlZEFs
bENoaWxkcmVuIHsgTm8sIFllcyB9OwogCitzdGF0aWMgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2UgbWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9uKENvbnRhaW5lck5vZGUmIGNvbnRhaW5lck5v
ZGUsIE5vZGUmIGNoaWxkLCBOb2RlKiBiZWZvcmVDaGlsZCwgQ29udGFpbmVyTm9kZTo6Q2hpbGRD
aGFuZ2U6OlNvdXJjZSBzb3VyY2UsIFJlcGxhY2VkQWxsQ2hpbGRyZW4gcmVwbGFjZWRBbGxDaGls
ZHJlbikKK3sKKyAgICBpZiAocmVwbGFjZWRBbGxDaGlsZHJlbiA9PSBSZXBsYWNlZEFsbENoaWxk
cmVuOjpZZXMpCisgICAgICAgIHJldHVybiB7IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpU
eXBlOjpBbGxDaGlsZHJlblJlcGxhY2VkLCBudWxscHRyLCBudWxscHRyLCBzb3VyY2UgfTsKKwor
ICAgIGF1dG8gY2hhbmdlVHlwZSA9IFsmXSB7CisgICAgICAgIGlmIChpczxFbGVtZW50PihjaGls
ZCkpCisgICAgICAgICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6
OkVsZW1lbnRJbnNlcnRlZDsKKyAgICAgICAgaWYgKGlzPFRleHQ+KGNoaWxkKSkKKyAgICAgICAg
ICAgIHJldHVybiBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6VGV4dEluc2VydGVk
OworICAgICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNv
bnRlbnRzQ2hpbGRJbnNlcnRlZDsKKyAgICB9KCk7CisKKyAgICByZXR1cm4geworICAgICAgICBj
aGFuZ2VUeXBlLAorICAgICAgICBiZWZvcmVDaGlsZCA/IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZp
b3VzU2libGluZygqYmVmb3JlQ2hpbGQpIDogRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKGNv
bnRhaW5lck5vZGUpLAorICAgICAgICAhYmVmb3JlQ2hpbGQgfHwgaXM8RWxlbWVudD4oKmJlZm9y
ZUNoaWxkKSA/IGRvd25jYXN0PEVsZW1lbnQ+KGJlZm9yZUNoaWxkKSA6IEVsZW1lbnRUcmF2ZXJz
YWw6Om5leHRTaWJsaW5nKCpiZWZvcmVDaGlsZCksCisgICAgICAgIHNvdXJjZQorICAgIH07Cit9
CisKIHRlbXBsYXRlPHR5cGVuYW1lIERPTUluc2VydGlvbldvcms+Ci1zdGF0aWMgQUxXQVlTX0lO
TElORSB2b2lkIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbihDb250YWlu
ZXJOb2RlJiBjb250YWluZXJOb2RlLCBOb2RlJiBjaGlsZCwKK3N0YXRpYyBBTFdBWVNfSU5MSU5F
IHZvaWQgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKENvbnRhaW5lck5v
ZGUmIGNvbnRhaW5lck5vZGUsIE5vZGUmIGNoaWxkLCBOb2RlKiBiZWZvcmVDaGlsZCwKICAgICBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSwgUmVwbGFjZWRBbGxDaGls
ZHJlbiByZXBsYWNlZEFsbENoaWxkcmVuLCBET01JbnNlcnRpb25Xb3JrIGRvTm9kZUluc2VydGlv
bikKIHsKKyAgICBhdXRvIGNoaWxkQ2hhbmdlID0gbWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9u
KGNvbnRhaW5lck5vZGUsIGNoaWxkLCBiZWZvcmVDaGlsZCwgc291cmNlLCByZXBsYWNlZEFsbENo
aWxkcmVuKTsKKwogICAgIE5vZGVWZWN0b3IgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdl
dHM7CiAgICAgewogICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3Bl
IHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogICAgICAgICBTY3JpcHREaXNhbGxvd2Vk
U2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CisgICAgICAgIFN0eWxl
OjpDaGlsZENoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbihjb250YWluZXJOb2Rl
LCBjaGlsZENoYW5nZSk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGNvbnRhaW5lck5vZGUuaXNT
aGFkb3dSb290KCkgfHwgY29udGFpbmVyTm9kZS5pc0luU2hhZG93VHJlZSgpKSkKICAgICAgICAg
ICAgIGNvbnRhaW5lck5vZGUuY29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+cmVzb2x2ZVNsb3RzQmVm
b3JlTm9kZUluc2VydGlvbk9yUmVtb3ZhbCgpOwpAQCAtMjIyLDIwICsyNjQsNyBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlv
bihDb250YWluZXJOb2RlJgogICAgIH0KIAogICAgIC8vIEZJWE1FOiBNb3ZlIGNoaWxkcmVuQ2hh
bmdlZCBpbnRvIFNjcmlwdERpc2FsbG93ZWRTY29wZSBibG9jay4KLSAgICBpZiAocmVwbGFjZWRB
bGxDaGlsZHJlbiA9PSBSZXBsYWNlZEFsbENoaWxkcmVuOjpZZXMpCi0gICAgICAgIGNvbnRhaW5l
ck5vZGUuY2hpbGRyZW5DaGFuZ2VkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlIHsgQ29udGFp
bmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OkFsbENoaWxkcmVuUmVwbGFjZWQsIG51bGxwdHIs
IG51bGxwdHIsIHNvdXJjZSB9KTsKLSAgICBlbHNlIHsKLSAgICAgICAgY29udGFpbmVyTm9kZS5j
aGlsZHJlbkNoYW5nZWQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgewotICAgICAgICAgICAg
Y2hpbGQuaXNFbGVtZW50Tm9kZSgpID8KLSAgICAgICAgICAgICAgICBDb250YWluZXJOb2RlOjpD
aGlsZENoYW5nZTo6VHlwZTo6RWxlbWVudEluc2VydGVkIDoKLSAgICAgICAgICAgICAgICAoY2hp
bGQuaXNUZXh0Tm9kZSgpID8KLSAgICAgICAgICAgICAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2U6OlR5cGU6OlRleHRJbnNlcnRlZCA6Ci0gICAgICAgICAgICAgICAgICAgIENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0NoaWxkSW5zZXJ0ZWQpLAot
ICAgICAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkKSwKLSAg
ICAgICAgICAgIEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGNoaWxkKSwKLSAgICAgICAg
ICAgIHNvdXJjZQotICAgICAgICB9KTsKLSAgICB9CisgICAgY29udGFpbmVyTm9kZS5jaGlsZHJl
bkNoYW5nZWQoY2hpbGRDaGFuZ2UpOwogCiAgICAgQVNTRVJUKFNjcmlwdERpc2FsbG93ZWRTY29w
ZTo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKGNoaWxkKSk7
CiAgICAgZm9yIChhdXRvJiB0YXJnZXQgOiBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0
cykKQEAgLTQ0OCw3ICs0NzcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjpp
bnNlcnRCZWZvcmUoTm9kZSYgbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkKQogICAgICAgICBpZiAo
Y2hpbGQtPnBhcmVudE5vZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGV4ZWN1
dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQuZ2V0KCksIENo
aWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7Cisg
ICAgICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hp
bGQuZ2V0KCksIG5leHQucHRyKCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRB
bGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0VHJlZVNjb3BlUmVj
dXJzaXZlbHkodHJlZVNjb3BlKCkpOwogICAgICAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5l
eHQsIGNoaWxkKTsKICAgICAgICAgfSk7CkBAIC01MDcsNyArNTM2LDcgQEAgdm9pZCBDb250YWlu
ZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUoTm9kZSYgbmV3Q2hpbGQsIE5vZGUmIG5leHRDaGls
ZCkKICAgICBpZiAobmV4dENoaWxkLnByZXZpb3VzU2libGluZygpID09ICZuZXdDaGlsZCB8fCAm
bmV4dENoaWxkID09ICZuZXdDaGlsZCkgLy8gbm90aGluZyB0byBkbwogICAgICAgICByZXR1cm47
CiAKLSAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIG5l
d0NoaWxkLCBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsIFJlcGxhY2VkQWxsQ2hpbGRyZW46
Ok5vLCBbJl0geworICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigq
dGhpcywgbmV3Q2hpbGQsICZuZXh0Q2hpbGQsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwg
UmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgIGlmICgmZG9jdW1lbnQoKSAh
PSAmbmV3Q2hpbGQuZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50KCkuYWRvcHROb2Rl
KG5ld0NoaWxkKTsKIApAQCAtNTgxLDcgKzYxMCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRh
aW5lck5vZGU6OnJlcGxhY2VDaGlsZChOb2RlJiBuZXdDaGlsZCwgTm9kZSYgb2xkQ2hpbGQpCiAg
ICAgICAgIGlmIChjaGlsZC0+cGFyZW50Tm9kZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBjaGls
ZC5nZXQoKSwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpO
bywgWyZdIHsKKyAgICAgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9u
KCp0aGlzLCBjaGlsZC5nZXQoKSwgcmVmQ2hpbGQuZ2V0KCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6
OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+
c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkodHJlZVNjb3BlKCkpOwogICAgICAgICAgICAgaWYgKHJl
ZkNoaWxkKQogICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZUNvbW1vbigqcmVmQ2hpbGQsIGNo
aWxkLmdldCgpKTsKQEAgLTY4Miw3ICs3MTEsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlcGxh
Y2VBbGwoTm9kZSogbm9kZSkKICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKCp0
aGlzKTsKICAgICByZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpbGRDaGFu
Z2U6OlNvdXJjZTo6QVBJLCBEZWZlckNoaWxkcmVuQ2hhbmdlZDo6WWVzKTsKIAotICAgIGV4ZWN1
dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgKm5vZGUsIENoaWxkQ2hh
bmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6WWVzLCBbJl0geworICAgIGV4
ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgKm5vZGUsIG51bGxw
dHIsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6WWVzLCBb
Jl0gewogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2Rl
KGRvY3VtZW50KCksICp0aGlzKTsKICAgICAgICAgbm9kZS0+c2V0VHJlZVNjb3BlUmVjdXJzaXZl
bHkodHJlZVNjb3BlKCkpOwogICAgICAgICBhcHBlbmRDaGlsZENvbW1vbigqbm9kZSk7CkBAIC03
NjMsNyArNzkyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hp
bGRXaXRob3V0UHJlSW5zZXJ0aW9uVmFsaWRpdHlDaGVjayhOb2QKICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgIC8vIEFwcGVuZCBjaGlsZCB0byB0aGUgZW5kIG9mIHRoZSBsaXN0Ci0gICAg
ICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQu
Z2V0KCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8s
IFsmXSB7CisgICAgICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigq
dGhpcywgY2hpbGQuZ2V0KCksIG51bGxwdHIsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVw
bGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0VHJlZVNj
b3BlUmVjdXJzaXZlbHkodHJlZVNjb3BlKCkpOwogICAgICAgICAgICAgYXBwZW5kQ2hpbGRDb21t
b24oY2hpbGQpOwogICAgICAgICB9KTsKQEAgLTc3OSw3ICs4MDgsNyBAQCB2b2lkIENvbnRhaW5l
ck5vZGU6OnBhcnNlckFwcGVuZENoaWxkKE5vZGUmIG5ld0NoaWxkKQogICAgIEFTU0VSVCghbmV3
Q2hpbGQuaXNEb2N1bWVudEZyYWdtZW50KCkpOwogICAgIEFTU0VSVCghaGFzVGFnTmFtZShIVE1M
TmFtZXM6OnRlbXBsYXRlVGFnKSk7CiAKLSAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3Jp
cHRBc3NlcnRpb24oKnRoaXMsIG5ld0NoaWxkLCBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIs
IFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vLCBbJl0geworICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9u
V2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgbmV3Q2hpbGQsIG51bGxwdHIsIENoaWxkQ2hhbmdl
OjpTb3VyY2U6OlBhcnNlciwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAg
IGlmICgmZG9jdW1lbnQoKSAhPSAmbmV3Q2hpbGQuZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRv
Y3VtZW50KCkuYWRvcHROb2RlKG5ld0NoaWxkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IDVkN2IxYmUyNjE2NDBjZjE0MTBlY2EzZWM5MTczYTQwODlhZmQxOGQuLjRiYjBlMGNiZTZhNDVh
ZGI0OTNmZDQ5M2Q2MWQ2YjUyY2IzNGRmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJBdHRyLmgiCiAjaW5jbHVkZSAiQXR0cmlidXRlQ2hhbmdl
SW52YWxpZGF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiQ2hpbGRD
aGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJv
bWVDbGllbnQuaCIKICNpbmNsdWRlICJDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIgpAQCAtMjAz
OCw3ICsyMDM5LDcgQEAgU3R5bGU6OkVsZW1lbnRTdHlsZSBFbGVtZW50OjpyZXNvbHZlU3R5bGUo
Y29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0JiByZXNvbHUKICAgICByZXR1cm4gc3R5bGVS
ZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqdGhpcywgcmVzb2x1dGlvbkNvbnRleHQpOwogfQog
Ci1zdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKEVsZW1lbnQqIHNp
YmxpbmcpCit2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMoRWxlbWVudCogc2li
bGluZykKIHsKICAgICBmb3IgKDsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVt
ZW50U2libGluZygpKSB7CiAgICAgICAgIGlmIChzaWJsaW5nLT5zdHlsZUlzQWZmZWN0ZWRCeVBy
ZXZpb3VzU2libGluZygpKQpAQCAtMjY0MiwxMjQgKzI2NDMsMTEgQEAgYm9vbCBFbGVtZW50Ojpj
aGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlIHR5cGUpIGNvbnN0CiAgICAgfQogICAgIHJldHVybiBm
YWxzZTsKIH0KLQotc3RhdGljIHZvaWQgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKEVsZW1lbnQm
IGVsZW1lbnQpCi17Ci0gICAgaWYgKGVsZW1lbnQuc3R5bGVBZmZlY3RlZEJ5RW1wdHkoKSkgewot
ICAgICAgICBhdXRvKiBzdHlsZSA9IGVsZW1lbnQucmVuZGVyU3R5bGUoKTsKLSAgICAgICAgaWYg
KCFzdHlsZSB8fCAoIXN0eWxlLT5lbXB0eVN0YXRlKCkgfHwgZWxlbWVudC5oYXNDaGlsZE5vZGVz
KCkpKQotICAgICAgICAgICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Ci0g
ICAgfQotfQotCi0KLXN0YXRpYyB2b2lkIGludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1
bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxlbWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQotewotICAg
IGJvb2wgY2hpbGRyZW5BZmZlY3RlZCA9IHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVkID0gcGFyZW50
LmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLQotICAgIGlm
ICghY2hpbGRyZW5BZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNBZmZlY3RlZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudEFmdGVyQ2hhbmdlOyBzaWJs
aW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAg
aWYgKGNoaWxkcmVuQWZmZWN0ZWQpCi0gICAgICAgICAgICBzaWJsaW5nLT5pbnZhbGlkYXRlU3R5
bGVJbnRlcm5hbCgpOwotICAgICAgICBpZiAoZGVzY2VuZGFudHNBZmZlY3RlZCkgewotICAgICAg
ICAgICAgZm9yIChhdXRvKiBzaWJsaW5nQ2hpbGQgPSBzaWJsaW5nLT5maXJzdEVsZW1lbnRDaGls
ZCgpOyBzaWJsaW5nQ2hpbGQ7IHNpYmxpbmdDaGlsZCA9IHNpYmxpbmdDaGlsZC0+bmV4dEVsZW1l
bnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAgc2libGluZ0NoaWxkLT5pbnZhbGlkYXRlU3R5
bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZv
aWQgaW52YWxpZGF0ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwg
RWxlbWVudCogZWxlbWVudEJlZm9yZUNoYW5nZSkKLXsKLSAgICBib29sIGNoaWxkcmVuQWZmZWN0
ZWQgPSBwYXJlbnQuY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsK
LSAgICBib29sIGRlc2NlbmRhbnRzQWZmZWN0ZWQgPSBwYXJlbnQuZGVzY2VuZGFudHNBZmZlY3Rl
ZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLQotICAgIGlmICghY2hpbGRyZW5BZmZlY3Rl
ZCAmJiAhZGVzY2VuZGFudHNBZmZlY3RlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChh
dXRvKiBzaWJsaW5nID0gZWxlbWVudEJlZm9yZUNoYW5nZTsgc2libGluZzsgc2libGluZyA9IHNp
YmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoY2hpbGRyZW5B
ZmZlY3RlZCkKLSAgICAgICAgICAgIHNpYmxpbmctPmludmFsaWRhdGVTdHlsZUludGVybmFsKCk7
Ci0gICAgICAgIGlmIChkZXNjZW5kYW50c0FmZmVjdGVkKSB7Ci0gICAgICAgICAgICBmb3IgKGF1
dG8qIHNpYmxpbmdDaGlsZCA9IHNpYmxpbmctPmZpcnN0RWxlbWVudENoaWxkKCk7IHNpYmxpbmdD
aGlsZDsgc2libGluZ0NoaWxkID0gc2libGluZ0NoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkK
LSAgICAgICAgICAgICAgICBzaWJsaW5nQ2hpbGQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJ
bnRlcm5hbCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1lbnVtIFNpYmxpbmdDaGVja1R5cGUg
eyBGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbiwgU2libGluZ0VsZW1lbnRSZW1vdmVkLCBPdGhlciB9
OwotCi1zdGF0aWMgdm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoRWxlbWVudCYgcGFy
ZW50LCBTaWJsaW5nQ2hlY2tUeXBlIGNoZWNrVHlwZSwgRWxlbWVudCogZWxlbWVudEJlZm9yZUNo
YW5nZSwgRWxlbWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQotewotICAgIC8vIDplbXB0eSBzZWxl
Y3Rvci4KLSAgICBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UocGFyZW50KTsKLQotICAgIGlmIChw
YXJlbnQuc3R5bGVWYWxpZGl0eSgpID49IFN0eWxlOjpWYWxpZGl0eTo6U3VidHJlZUludmFsaWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIDpmaXJzdC1jaGlsZC4gIEluIHRoZSBwYXJzZXIg
Y2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnl0aGluZywgc2luY2Ugd2Ug
d2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4KLSAgICAvLyBJbiB0aGUgRE9NIGNhc2UsIHdlIG9u
bHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgfGFmdGVyQ2hhbmdlfCBpcyBub3QgMC4KLSAgICAv
LyB8YWZ0ZXJDaGFuZ2V8IGlzIDAgaW4gdGhlIHBhcnNlciBjYXNlLCBzbyBpdCB3b3JrcyBvdXQg
dGhhdCB3ZSdsbCBza2lwIHRoaXMgYmxvY2suCi0gICAgaWYgKHBhcmVudC5jaGlsZHJlbkFmZmVj
dGVkQnlGaXJzdENoaWxkUnVsZXMoKSAmJiBlbGVtZW50QWZ0ZXJDaGFuZ2UpIHsKLSAgICAgICAg
Ly8gRmluZCBvdXIgbmV3IGZpcnN0IGNoaWxkLgotICAgICAgICBSZWZQdHI8RWxlbWVudD4gbmV3
Rmlyc3RFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZChwYXJlbnQpOwotICAg
ICAgICAvLyBGaW5kIHRoZSBmaXJzdCBlbGVtZW50IG5vZGUgZm9sbG93aW5nIHxhZnRlckNoYW5n
ZXwKLQotICAgICAgICAvLyBUaGlzIGlzIHRoZSBpbnNlcnQvYXBwZW5kIGNhc2UuCi0gICAgICAg
IGlmIChuZXdGaXJzdEVsZW1lbnQgIT0gZWxlbWVudEFmdGVyQ2hhbmdlKSB7Ci0gICAgICAgICAg
ICBhdXRvKiBzdHlsZSA9IGVsZW1lbnRBZnRlckNoYW5nZS0+cmVuZGVyU3R5bGUoKTsKLSAgICAg
ICAgICAgIGlmICghc3R5bGUgfHwgc3R5bGUtPmZpcnN0Q2hpbGRTdGF0ZSgpKQotICAgICAgICAg
ICAgICAgIGVsZW1lbnRBZnRlckNoYW5nZS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVy
bmFsKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gaGFuZGxlIG5v
ZGUgcmVtb3ZhbC4KLSAgICAgICAgaWYgKGNoZWNrVHlwZSA9PSBTaWJsaW5nRWxlbWVudFJlbW92
ZWQgJiYgbmV3Rmlyc3RFbGVtZW50ID09IGVsZW1lbnRBZnRlckNoYW5nZSAmJiBuZXdGaXJzdEVs
ZW1lbnQpIHsKLSAgICAgICAgICAgIGF1dG8qIHN0eWxlID0gbmV3Rmlyc3RFbGVtZW50LT5yZW5k
ZXJTdHlsZSgpOwotICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmZpcnN0Q2hpbGRT
dGF0ZSgpKQotICAgICAgICAgICAgICAgIG5ld0ZpcnN0RWxlbWVudC0+aW52YWxpZGF0ZVN0eWxl
Rm9yU3VidHJlZUludGVybmFsKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyA6bGFzdC1j
aGlsZC4gIEluIHRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2ZSB0byBjaGVj
ayBhbnl0aGluZywgc2luY2Ugd2Ugd2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4KLSAgICAvLyBJ
biB0aGUgRE9NIGNhc2UsIHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgfGFmdGVyQ2hh
bmdlfCBpcyBub3QgMC4KLSAgICBpZiAocGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGls
ZFJ1bGVzKCkgJiYgZWxlbWVudEJlZm9yZUNoYW5nZSkgewotICAgICAgICAvLyBGaW5kIG91ciBu
ZXcgbGFzdCBjaGlsZC4KLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0xhc3RFbGVtZW50ID0g
RWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKHBhcmVudCk7Ci0KLSAgICAgICAgaWYgKG5ld0xh
c3RFbGVtZW50ICE9IGVsZW1lbnRCZWZvcmVDaGFuZ2UpIHsKLSAgICAgICAgICAgIGF1dG8qIHN0
eWxlID0gZWxlbWVudEJlZm9yZUNoYW5nZS0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgIGlm
ICghc3R5bGUgfHwgc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkpCi0gICAgICAgICAgICAgICAgZWxl
bWVudEJlZm9yZUNoYW5nZS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gaGFuZGxlIG5vZGUgcmVtb3Zh
bC4gIFRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSBpcyBzaW1pbGFyIHRvIG5vZGUgcmVtb3ZhbCBh
cyB3ZWxsIGluIHRoYXQgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIGxhc3QgY2hpbGQKLSAgICAgICAg
Ly8gdG8gbWF0Y2ggbm93LgotICAgICAgICBpZiAoKGNoZWNrVHlwZSA9PSBTaWJsaW5nRWxlbWVu
dFJlbW92ZWQgfHwgY2hlY2tUeXBlID09IEZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKSAmJiBuZXdM
YXN0RWxlbWVudCA9PSBlbGVtZW50QmVmb3JlQ2hhbmdlICYmIG5ld0xhc3RFbGVtZW50KSB7Ci0g
ICAgICAgICAgICBhdXRvKiBzdHlsZSA9IG5ld0xhc3RFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwot
ICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkpCi0gICAg
ICAgICAgICAgICAgbmV3TGFzdEVsZW1lbnQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRl
cm5hbCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaW52YWxpZGF0ZUZvclNpYmxpbmdDb21i
aW5hdG9ycyhlbGVtZW50QWZ0ZXJDaGFuZ2UpOwotCi0gICAgaW52YWxpZGF0ZUZvckZvcndhcmRQ
b3NpdGlvbmFsUnVsZXMocGFyZW50LCBlbGVtZW50QWZ0ZXJDaGFuZ2UpOwotICAgIGludmFsaWRh
dGVGb3JCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhwYXJlbnQsIGVsZW1lbnRCZWZvcmVDaGFuZ2Up
OwotfQotCiB2b2lkIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYg
Y2hhbmdlKQogewogICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwot
ICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKLSAg
ICAgICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKCp0aGlzKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgYXV0byBjaGVja1R5cGUgPSBjaGFuZ2UudHlwZSA9PSBDaGlsZENoYW5nZTo6VHlwZTo6RWxl
bWVudFJlbW92ZWQgPyBTaWJsaW5nRWxlbWVudFJlbW92ZWQgOiBPdGhlcjsKLSAgICAgICAgY2hl
Y2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKCp0aGlzLCBjaGVja1R5cGUsIGNoYW5nZS5wcmV2aW91
c1NpYmxpbmdFbGVtZW50LCBjaGFuZ2UubmV4dFNpYmxpbmdFbGVtZW50KTsKLSAgICB9CiAKLSAg
ICBpZiAoU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRoaXMtPnNoYWRvd1Jvb3QoKSkgeworICAg
IGlmIChhdXRvKiBzaGFkb3dSb290ID0gdGhpcy0+c2hhZG93Um9vdCgpKSB7CiAgICAgICAgIHN3
aXRjaCAoY2hhbmdlLnR5cGUpIHsKICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6RWxl
bWVudEluc2VydGVkOgogICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50UmVt
b3ZlZDoKQEAgLTI4MDIsNyArMjY5MCw4IEBAIHZvaWQgRWxlbWVudDo6ZmluaXNoUGFyc2luZ0No
aWxkcmVuKCkKIHsKICAgICBDb250YWluZXJOb2RlOjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsK
ICAgICBzZXRJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCk7Ci0gICAgY2hlY2tGb3JTaWJsaW5n
U3R5bGVDaGFuZ2VzKCp0aGlzLCBGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbiwgRWxlbWVudFRyYXZl
cnNhbDo6bGFzdENoaWxkKCp0aGlzKSwgbnVsbHB0cik7CisKKyAgICBTdHlsZTo6Q2hpbGRDaGFu
Z2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVBZnRlckZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCp0
aGlzKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kQXR0cmlidXRlcyhTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggMDRj
ZTY1ZGU2ZTg3MmNmMDkzZDJjY2FmMGRmMThhYjk2ZTdhNGU4Mi4uZWY3Y2U4OTk4ZGUwM2YyMGY0
MjBmMDk1YzM4MTdkZDA1MTQzMWVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC03NjMsNiArNzYz
LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RWxlbWVudERhdGE+IG1fZWxlbWVudERhdGE7CiB9
OwogCit2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMoRWxlbWVudCogc2libGlu
Zyk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihXZWJDb3JlOjpFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvQ2hpbGRD
aGFuZ2VJbnZhbGlkYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiMmNjNzQ2YzBjNjkxNmVhNWViYmM3
NjYyMTgyNjU0NzdhM2Q2MDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAKQEAgLTAsMCArMSwxNzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2hpbGRDaGFuZ2VJbnZhbGlkYXRp
b24uaCIKKworI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKKyNpbmNsdWRlICJTbG90QXNzaWdubWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZTo6
U3R5bGUgeworCitDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRp
b24oQ29udGFpbmVyTm9kZSYgY29udGFpbmVyLCBjb25zdCBDb250YWluZXJOb2RlOjpDaGlsZENo
YW5nZSYgY2hpbGRDaGFuZ2UpCisgICAgOiBtX3BhcmVudEVsZW1lbnQoaXM8RWxlbWVudD4oY29u
dGFpbmVyKSA/IGRvd25jYXN0PEVsZW1lbnQ+KCZjb250YWluZXIpIDogbnVsbHB0cikKKyAgICAs
IG1faXNFbmFibGVkKG1fcGFyZW50RWxlbWVudCA/IG1fcGFyZW50RWxlbWVudC0+bmVlZHNTdHls
ZUludmFsaWRhdGlvbigpIDogZmFsc2UpCisgICAgLCBtX2NoaWxkQ2hhbmdlKGNoaWxkQ2hhbmdl
KQoreworICAgIC8vIEZJWE1FOiBEbyBzbWFydGVyIGludmFsaWRhdGlvbiBzaW1pbGFyIHRvIENs
YXNzQ2hhbmdlSW52YWxpZGF0aW9uLgorfQorCitDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6fkNo
aWxkQ2hhbmdlSW52YWxpZGF0aW9uKCkKK3sKKyAgICBpZiAoIW1faXNFbmFibGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpbnZhbGlkYXRlQWZ0ZXJDaGFuZ2UoKTsKK30KKworc3RhdGljIHZv
aWQgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgaWYg
KCFlbGVtZW50LnN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8qIHN0eWxlID0gZWxlbWVudC5yZW5kZXJTdHlsZSgpOworICAgIGlmICghc3R5bGUgfHwg
KCFzdHlsZS0+ZW1wdHlTdGF0ZSgpIHx8IGVsZW1lbnQuaGFzQ2hpbGROb2RlcygpKSkKKyAgICAg
ICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Cit9CisKK3N0YXRpYyB2b2lk
IGludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxl
bWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQoreworICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZCA9
IHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CisgICAg
Ym9vbCBkZXNjZW5kYW50c0FmZmVjdGVkID0gcGFyZW50LmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKworICAgIGlmICghY2hpbGRyZW5BZmZlY3RlZCAmJiAh
ZGVzY2VuZGFudHNBZmZlY3RlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvKiBz
aWJsaW5nID0gZWxlbWVudEFmdGVyQ2hhbmdlOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+
bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkcmVuQWZmZWN0ZWQpCisg
ICAgICAgICAgICBzaWJsaW5nLT5pbnZhbGlkYXRlU3R5bGVJbnRlcm5hbCgpOworICAgICAgICBp
ZiAoZGVzY2VuZGFudHNBZmZlY3RlZCkgeworICAgICAgICAgICAgZm9yIChhdXRvKiBzaWJsaW5n
Q2hpbGQgPSBzaWJsaW5nLT5maXJzdEVsZW1lbnRDaGlsZCgpOyBzaWJsaW5nQ2hpbGQ7IHNpYmxp
bmdDaGlsZCA9IHNpYmxpbmdDaGlsZC0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpCisgICAgICAgICAg
ICAgICAgc2libGluZ0NoaWxkLT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgaW52YWxpZGF0ZUZvckJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxlbWVudCogZWxlbWVudEJlZm9yZUNo
YW5nZSkKK3sKKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWQgPSBwYXJlbnQuY2hpbGRyZW5BZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICBib29sIGRlc2NlbmRhbnRzQWZm
ZWN0ZWQgPSBwYXJlbnQuZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMoKTsKKworICAgIGlmICghY2hpbGRyZW5BZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNBZmZlY3Rl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudEJl
Zm9yZUNoYW5nZTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNp
YmxpbmcoKSkgeworICAgICAgICBpZiAoY2hpbGRyZW5BZmZlY3RlZCkKKyAgICAgICAgICAgIHNp
YmxpbmctPmludmFsaWRhdGVTdHlsZUludGVybmFsKCk7CisgICAgICAgIGlmIChkZXNjZW5kYW50
c0FmZmVjdGVkKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8qIHNpYmxpbmdDaGlsZCA9IHNpYmxp
bmctPmZpcnN0RWxlbWVudENoaWxkKCk7IHNpYmxpbmdDaGlsZDsgc2libGluZ0NoaWxkID0gc2li
bGluZ0NoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKKyAgICAgICAgICAgICAgICBzaWJsaW5n
Q2hpbGQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOworICAgICAgICB9Cisg
ICAgfQorfQorCitzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9yRmlyc3RDaGlsZFN0YXRlKEVsZW1l
bnQmIGNoaWxkLCBib29sIHN0YXRlKQoreworICAgIGF1dG8qIHN0eWxlID0gY2hpbGQucmVuZGVy
U3R5bGUoKTsKKyAgICBpZiAoIXN0eWxlIHx8IHN0eWxlLT5maXJzdENoaWxkU3RhdGUoKSA9PSBz
dGF0ZSkKKyAgICAgICAgY2hpbGQuaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7
Cit9CisKK3N0YXRpYyB2b2lkIGludmFsaWRhdGVGb3JMYXN0Q2hpbGRTdGF0ZShFbGVtZW50JiBj
aGlsZCwgYm9vbCBzdGF0ZSkKK3sKKyAgICBhdXRvKiBzdHlsZSA9IGNoaWxkLnJlbmRlclN0eWxl
KCk7CisgICAgaWYgKCFzdHlsZSB8fCBzdHlsZS0+bGFzdENoaWxkU3RhdGUoKSA9PSBzdGF0ZSkK
KyAgICAgICAgY2hpbGQuaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7Cit9CisK
K3ZvaWQgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVBZnRlckNoYW5nZSgpCit7
CisgICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKHBhcmVudEVsZW1lbnQoKSk7CisKKyAgICBp
ZiAobV9jaGlsZENoYW5nZS5zb3VyY2UgPT0gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNv
dXJjZTo6UGFyc2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBjaGVja0ZvclNpYmxpbmdTdHls
ZUNoYW5nZXMoKTsKK30KKwordm9pZCBDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0
ZUFmdGVyRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oRWxlbWVudCYgcGFyZW50KQoreworICAgIGNo
ZWNrRm9yRW1wdHlTdHlsZUNoYW5nZShwYXJlbnQpOworCisgICAgYXV0byogbGFzdENoaWxkRWxl
bWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RDaGlsZChwYXJlbnQpOworICAgIGlmICghbGFz
dENoaWxkRWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHBhcmVudC5jaGlsZHJl
bkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpKQorICAgICAgICBpbnZhbGlkYXRlRm9yTGFzdENo
aWxkU3RhdGUoKmxhc3RDaGlsZEVsZW1lbnQsIGZhbHNlKTsKKworICAgIGludmFsaWRhdGVGb3JC
YWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhwYXJlbnQsIGxhc3RDaGlsZEVsZW1lbnQpOworfQorCit2
b2lkIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjpjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMo
KQoreworICAgIGF1dG8mIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKKyAgICBhdXRvKiBlbGVt
ZW50QmVmb3JlQ2hhbmdlID0gbV9jaGlsZENoYW5nZS5wcmV2aW91c1NpYmxpbmdFbGVtZW50Owor
ICAgIGF1dG8qIGVsZW1lbnRBZnRlckNoYW5nZSA9IG1fY2hpbGRDaGFuZ2UubmV4dFNpYmxpbmdF
bGVtZW50OworCisgICAgLy8gOmZpcnN0LWNoaWxkLiBJbiB0aGUgcGFyc2VyIGNhbGxiYWNrIGNh
c2UsIHdlIGRvbid0IGhhdmUgdG8gY2hlY2sgYW55dGhpbmcsIHNpbmNlIHdlIHdlcmUgcmlnaHQg
dGhlIGZpcnN0IHRpbWUuCisgICAgLy8gSW4gdGhlIERPTSBjYXNlLCB3ZSBvbmx5IG5lZWQgdG8g
ZG8gc29tZXRoaW5nIGlmIHxhZnRlckNoYW5nZXwgaXMgbm90IDAuCisgICAgLy8gfGFmdGVyQ2hh
bmdlfCBpcyAwIGluIHRoZSBwYXJzZXIgY2FzZSwgc28gaXQgd29ya3Mgb3V0IHRoYXQgd2UnbGwg
c2tpcCB0aGlzIGJsb2NrLgorICAgIGlmIChwYXJlbnQuY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RD
aGlsZFJ1bGVzKCkgJiYgZWxlbWVudEFmdGVyQ2hhbmdlKSB7CisgICAgICAgIC8vIEZpbmQgb3Vy
IG5ldyBmaXJzdCBjaGlsZC4KKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0ZpcnN0RWxlbWVu
dCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQocGFyZW50KTsKKworICAgICAgICAvLyBU
aGlzIGlzIHRoZSBpbnNlcnQvYXBwZW5kIGNhc2UuCisgICAgICAgIGlmIChuZXdGaXJzdEVsZW1l
bnQgIT0gZWxlbWVudEFmdGVyQ2hhbmdlKQorICAgICAgICAgICAgaW52YWxpZGF0ZUZvckZpcnN0
Q2hpbGRTdGF0ZSgqZWxlbWVudEFmdGVyQ2hhbmdlLCB0cnVlKTsKKworICAgICAgICAvLyBXZSBh
bHNvIGhhdmUgdG8gaGFuZGxlIG5vZGUgcmVtb3ZhbC4KKyAgICAgICAgaWYgKG1fY2hpbGRDaGFu
Z2UudHlwZSA9PSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6RWxlbWVudFJlbW92
ZWQgJiYgbmV3Rmlyc3RFbGVtZW50ID09IGVsZW1lbnRBZnRlckNoYW5nZSkKKyAgICAgICAgICAg
IGludmFsaWRhdGVGb3JGaXJzdENoaWxkU3RhdGUoKm5ld0ZpcnN0RWxlbWVudCwgZmFsc2UpOwor
ICAgIH0KKworICAgIC8vIDpsYXN0LWNoaWxkLiBJbiB0aGUgcGFyc2VyIGNhbGxiYWNrIGNhc2Us
IHdlIGRvbid0IGhhdmUgdG8gY2hlY2sgYW55dGhpbmcsIHNpbmNlIHdlIHdlcmUgcmlnaHQgdGhl
IGZpcnN0IHRpbWUuCisgICAgLy8gSW4gdGhlIERPTSBjYXNlLCB3ZSBvbmx5IG5lZWQgdG8gZG8g
c29tZXRoaW5nIGlmIHxhZnRlckNoYW5nZXwgaXMgbm90IDAuCisgICAgaWYgKHBhcmVudC5jaGls
ZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpICYmIGVsZW1lbnRCZWZvcmVDaGFuZ2UpIHsK
KyAgICAgICAgLy8gRmluZCBvdXIgbmV3IGxhc3QgY2hpbGQuCisgICAgICAgIFJlZlB0cjxFbGVt
ZW50PiBuZXdMYXN0RWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6Omxhc3RDaGlsZChwYXJlbnQp
OworCisgICAgICAgIGlmIChuZXdMYXN0RWxlbWVudCAhPSBlbGVtZW50QmVmb3JlQ2hhbmdlKQor
ICAgICAgICAgICAgaW52YWxpZGF0ZUZvckxhc3RDaGlsZFN0YXRlKCplbGVtZW50QmVmb3JlQ2hh
bmdlLCB0cnVlKTsKKworICAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gaGFuZGxlIG5vZGUgcmVt
b3ZhbC4KKyAgICAgICAgaWYgKG1fY2hpbGRDaGFuZ2UudHlwZSA9PSBDb250YWluZXJOb2RlOjpD
aGlsZENoYW5nZTo6VHlwZTo6RWxlbWVudFJlbW92ZWQgJiYgbmV3TGFzdEVsZW1lbnQgPT0gZWxl
bWVudEJlZm9yZUNoYW5nZSkKKyAgICAgICAgICAgIGludmFsaWRhdGVGb3JMYXN0Q2hpbGRTdGF0
ZSgqbmV3TGFzdEVsZW1lbnQsIGZhbHNlKTsKKyAgICB9CisKKyAgICBpbnZhbGlkYXRlRm9yU2li
bGluZ0NvbWJpbmF0b3JzKGVsZW1lbnRBZnRlckNoYW5nZSk7CisKKyAgICBpbnZhbGlkYXRlRm9y
Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhwYXJlbnQsIGVsZW1lbnRBZnRlckNoYW5nZSk7CisgICAg
aW52YWxpZGF0ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKHBhcmVudCwgZWxlbWVudEJlZm9y
ZUNoYW5nZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NoaWxk
Q2hhbmdlSW52YWxpZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUlu
dmFsaWRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3MTI5ZGQ0MGE3OWY2NGNkYmYyYzQyMGQ4YjQ0MzEw
OGZlMmUyNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENo
YW5nZUludmFsaWRhdGlvbi5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFt
ZXNwYWNlIFN0eWxlIHsKKworY2xhc3MgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24geworcHVibGlj
OgorICAgIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uKENvbnRhaW5lck5vZGUmLCBjb25zdCBDb250
YWluZXJOb2RlOjpDaGlsZENoYW5nZSYpOworICAgIH5DaGlsZENoYW5nZUludmFsaWRhdGlvbigp
OworCisgICAgc3RhdGljIHZvaWQgaW52YWxpZGF0ZUFmdGVyRmluaXNoZWRQYXJzaW5nQ2hpbGRy
ZW4oRWxlbWVudCYpOworCitwcml2YXRlOgorICAgIHZvaWQgaW52YWxpZGF0ZUFmdGVyQ2hhbmdl
KCk7CisgICAgdm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoKTsKKworICAgIEVsZW1l
bnQmIHBhcmVudEVsZW1lbnQoKSB7IHJldHVybiAqbV9wYXJlbnRFbGVtZW50OyB9CisKKyAgICBF
bGVtZW50KiBtX3BhcmVudEVsZW1lbnQgeyBudWxscHRyIH07CisgICAgY29uc3QgYm9vbCBtX2lz
RW5hYmxlZDsKKworICAgIGNvbnN0IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlJiBtX2NoaWxk
Q2hhbmdlOworfTsKKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVBZGp1c3Rlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVBZGp1c3Rlci5oCmluZGV4
IDE5MTMxZTU4MGY1NjQ1YWVhMjIzMjgyOTRlOWQ3NjFlYmY4MzVkNjcuLjk3MmExYWJkMTUyMDYw
NTYwMTgzNDMxZjY0ODQ3OTk4MzhkOTlkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlQWRqdXN0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUFkanVz
dGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUmVuZGVy
U3R5bGVDb25zdGFudHMuaCIKKyNpbmNsdWRlICJUZXh0U2l6ZUFkanVzdG1lbnQuaCIKICNpbmNs
dWRlIDx3dGYvT3B0aW9uU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444969</attachid>
            <date>2021-11-22 08:31:11 -0800</date>
            <delta_ts>2021-11-22 09:54:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233311-20211122183109.patch</filename>
            <type>text/plain</type>
            <size>42173</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ0YWUwOGI5ZjZjNGJm
MDUxZDc3YWFkOGNjNWEzNDA4NzZjODZmNy4uNTY0MjQ1NGQyODZjMTA4MmMwZTBiYTQxMDA0Njg2
NmI0OWUyYWRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIxLTExLTE4ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgY2hpbGQgY2hh
bmdlIGludmFsaWRhdGlvbiBpbnRvIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzMzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBBbGFuIEJ1
anRhcy4KKworICAgICAgICBVc2Ugc2ltaWxhciBwYXR0ZXJuIGFzIENsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uIGFuZCBvdGhlcnMgd2hlcmUgd2UgY3JlYXRlIGEgc3RhY2sgb2JqZWN0IHNjb3BlZAor
ICAgICAgICBvdmVyIGEgRE9NIG11dGF0aW9uLiBUaGlzIHdpbGwgYWxsb3cgbW9yZSBzb3BoaXN0
aWNhdGVkIHJ1bGVzZXQgYmFzZWQgaW52YWxpZGF0aW9uIGluCisgICAgICAgIGZ1dHVyZS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBpbnZhbGlkYXRpb24gY29kZSBmcm9tIGNoaWxk
cmVuQ2hhbmdlZCgpIHRvIHRoZSBuZXcgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24gY2xhc3MuCisg
ICAgICAgIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uIGlzIGluc3RhbnRpYXRlZCBpbiBDb250YWlu
ZXJOb2RlIGFuZCBDaGFyYWN0ZXJEYXRhIG11dGF0aW9uIGZ1bmN0aW9ucworICAgICAgICB0aGF0
IGNhbGwgY2hpbGRyZW5DaGFuZ2VkKCkuIEl0IHVzZXMgdGhlIHNhbWUgQ2hpbGRDaGFuZ2UgYXJn
dW1lbnQgdHlwZSBhcyBjaGlsZHJlbkNoYW5nZWQoKS4KKworICAgICAgICBUaGVyZSBhcmUgbm8g
Y2hhbmdlcyB0byBpbnZhbGlkYXRpb24gZnVuY3Rpb25hbGl0eSBpbiB0aGlzIHBhdGNoLgorCisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Om1ha2VDaGlsZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJEYXRh
OjpwYXJzZXJBcHBlbmREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3RlckRhdGE6OnNl
dERhdGFBbmRVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVyRGF0YTo6bm90aWZ5
UGFyZW50QWZ0ZXJDaGFuZ2UpOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmg6CisgICAg
ICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Om1ha2VDaGlsZENoYW5nZUZvclJlbW92YWwpOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6bWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFp
bmVyTm9kZTo6cGFyc2VySW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5l
ck5vZGU6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpy
ZXBsYWNlQWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxk
V2l0aG91dFByZUluc2VydGlvblZhbGlkaXR5Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cGFyc2VyQXBwZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6YWZmZWN0
c0VsZW1lbnRzKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjppbnZhbGlkYXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmZpbmlzaFBh
cnNpbmdDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpjaGVja0ZvckVtcHR5U3R5bGVDaGFu
Z2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvckZvcndhcmRQb3Np
dGlvbmFsUnVsZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZvckJh
Y2t3YXJkUG9zaXRpb25hbFJ1bGVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNoZWNr
Rm9yU2libGluZ1N0eWxlQ2hhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0VsZW1lbnQu
aDoKKyAgICAgICAgKiBzdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjpDaGlsZENo
YW5nZUludmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJ
bnZhbGlkYXRpb246On5DaGlsZENoYW5nZUludmFsaWRhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVBZnRlckNoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmNoZWNr
Rm9yRW1wdHlTdHlsZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6aW52YWxpZGF0
ZUZvckZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Omlu
dmFsaWRhdGVGb3JCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdl
cyk6CisgICAgICAgICogc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OnBhcmVudEVs
ZW1lbnQpOgorICAgICAgICAqIHN0eWxlL1N0eWxlQWRqdXN0ZXIuaDoKKwogMjAyMS0xMS0yMSAg
QWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRp
b25dIEVuYWJsZSBiaWRpIGNvbnRlbnQgZm9yIG5vbi1pbmxpbmUtYm94IGNhc2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CmluZGV4IDIwYTNkOGM4M2E2ZGY4YjY3ZjI0NzI1MzA5MTFjMjI5MTQ3ZjU5NjQuLjhmNzll
Y2U4Y2M3YzA1OTk4YTk1ZmNhMmI1YmU2NDMyN2ViY2U3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0y
NTI0LDYgKzI1MjQsNyBAQCBzdG9yYWdlL1N0b3JhZ2VNYXAuY3BwCiBzdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci5jcHAKIHN0b3JhZ2UvU3RvcmFnZVF1b3RhTWFuYWdlci5jcHAKIHN0
eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAKK3N0eWxlL0NoaWxkQ2hhbmdlSW52
YWxpZGF0aW9uLmNwcAogc3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCiBzdHlsZS9F
bGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKIHN0eWxlL0lkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDg3NTU3NDQwODg0Njk0ZjdlN2UzMTMyNDA3YzNmYzkzOGRkZmRlYWMuLjA0ZTk2OTg0NGRm
YmYzOGY3OTVjY2NmZTZiYmM2NTRhN2UwN2VhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUzNDIsNiArNTM0Miw3IEBACiAJ
CUU0QzE3ODlCMEVFNjkwMzgwMDgyNEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzE3ODk2MEVFNjkwMzgwMDgy
NEQ2OSAvKiBDU1NTZWxlY3Rvckxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFNEMyNzk1OTBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVk
aWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzI3
OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0QzNCMUZBMEYwRTQxNjEwMDk2OTNGNiAv
KiBMZWdhY3lUaWxlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEU0QzNCMUY5MEYwRTQxNjEwMDk2OTNGNiAvKiBMZWdhY3lUaWxlQ2FjaGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFNEM0QzYx
QTI3NDUyQTc5MDBBMDQwRTcgLyogQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzRDNjE4Mjc0NTJBNzkwMEEw
NDBFNyAvKiBDaGlsZENoYW5nZUludmFsaWRhdGlvbi5oICovOyB9OwogCQlFNEM5MUEwRTE4MDIz
NDMxMDBBMTdGNkQgLyogVGV4dFBhaW50U3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QzkxQTBEMTgwMjM0MzEwMEExN0Y2RCAvKiBUZXh0UGFp
bnRTdHlsZS5oICovOyB9OwogCQlFNEM5MUExNjE4MDk5OUYxMDBBMTdGNkQgLyogUmVuZGVyVGV4
dExpbmVCb3hlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTRDOTFBMTUxODA5OTlGMTAwQTE3RjZEIC8qIFJlbmRlclRleHRMaW5lQm94ZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNEQzM0YzQjI1
MkFFRUNEMDA4MzdEMDUgLyogSW5saW5lUnVuQW5kT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEQzM0YzOTI1MkFFRUNDMDA4MzdEMDUgLyog
SW5saW5lUnVuQW5kT2Zmc2V0LmggKi87IH07CkBAIC0xNzA0Niw2ICsxNzA0Nyw4IEBACiAJCUU0
QzI3OTU3MENGOTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW5kZXJNZWRpYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFNEMzQjFGOTBGMEU0MTYxMDA5NjkzRjYgLyogTGVnYWN5VGlsZUNhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2FjeVRpbGVDYWNoZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFNEMzQjFGQjBGMEU0MTcwMDA5NjkzRjYgLyogTGVnYWN5VGls
ZUNhY2hlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGVnYWN5
VGlsZUNhY2hlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNEM0QzYxODI3NDUy
QTc5MDBBMDQwRTcgLyogQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTRDNEM2MUIyNzQ1MkE4QTAwQTA0MEU3IC8qIENoaWxkQ2hhbmdl
SW52YWxpZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoaWxkQ2hhbmdlSW52YWxpZGF0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRDOTFBMEQxODAyMzQzMTAw
QTE3RjZEIC8qIFRleHRQYWludFN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRleHRQYWludFN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0Qzkx
QTBGMTgwMjM0MzkwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGFpbnRTdHlsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0QzkxQTE1MTgwOTk5RjEwMEExN0Y2RCAvKiBSZW5kZXJUZXh0TGlu
ZUJveGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRleHRMaW5l
Qm94ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwMjgyLDYgKzMwMjg1LDgg
QEAKIAkJCQlFNEE4MTRENzFDNzBFMTA1MDBCRjg1QUMgLyogQXR0cmlidXRlQ2hhbmdlSW52YWxp
ZGF0aW9uLmNwcCAqLywKIAkJCQlFNEE4MTREOTFDNzBFMTBEMDBCRjg1QUMgLyogQXR0cmlidXRl
Q2hhbmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJRTRBQkFCRjQyMzY4QzZFRjAwRkE0MzQ1IC8q
IENhc2NhZGVMZXZlbC5oICovLAorCQkJCUU0QzRDNjFCMjc0NTJBOEEwMEEwNDBFNyAvKiBDaGls
ZENoYW5nZUludmFsaWRhdGlvbi5jcHAgKi8sCisJCQkJRTRDNEM2MTgyNzQ1MkE3OTAwQTA0MEU3
IC8qIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uLmggKi8sCiAJCQkJRTRBODE0RDUxQzZERUU4RDAw
QkY4NUFDIC8qIENsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCAqLywKIAkJCQlFNEE4MTREMzFD
NkRFQzQwMDBCRjg1QUMgLyogQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaCAqLywKIAkJCQlGQkRC
NjE5QTE2RDYwMzJBMDBCQjMzOTQgLyogRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwICovLApAQCAt
MzI3MzcsNiArMzI3NDIsNyBAQAogCQkJCTkzRjJDQzkzMjQyN0ZCOUMwMDU4NTFEOCAvKiBDaGFy
YWN0ZXJSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCOEZGRDExNkFFN0Y5NjAwMzgzODhE
IC8qIENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUY1NUIzREIyMTI1MUYxMkQwMDNFRjI2OSAvKiBDaGVja2JveElucHV0VHlwZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTRDNEM2MUEyNzQ1MkE3OTAwQTA0MEU3IC8qIENoaWxkQ2hhbmdlSW52YWxp
ZGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlENjE5QTMwODE0NEUwMEJFMDA0QkMzMDIgLyog
Q2hpbGRMaXN0TXV0YXRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMjAwOTc3
RDNDMDAwNTgyNkQ5IC8qIENoaWxkTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RDgy
MzUyMEFGOTJBNzkwMDA0RjA1NyAvKiBDaHJvbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IDJlNjVjNjI0NDk3MzM3ZTZiOTAwYWUzOTAwYzFh
MTI2Yzk3ZDZjODguLjg5NzdlMjQ3ZjJiYWZlM2JmMjVmOTJiYTkzMjQ5OTllZGI5NDIzY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNs
dWRlICJDaGFyYWN0ZXJEYXRhLmgiCiAKICNpbmNsdWRlICJBdHRyLmgiCisjaW5jbHVkZSAiQ2hp
bGRDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCiAj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1lU2VsZWN0aW9uLmgiCkBAIC03
Myw2ICs3NCwxNiBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IENoYXJhY3RlckRhdGE6OnN1YnN0cmlu
Z0RhdGEodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudAogICAgIHJldHVybiBtX2RhdGEu
c3Vic3RyaW5nKG9mZnNldCwgY291bnQpOwogfQogCitzdGF0aWMgQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2UgbWFrZUNoaWxkQ2hhbmdlKENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEsIENv
bnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3VyY2Ugc291cmNlKQoreworICAgIHJldHVybiB7
CisgICAgICAgIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdlZCwK
KyAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoYXJhY3RlckRhdGEp
LAorICAgICAgICBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGFyYWN0ZXJEYXRhKSwK
KyAgICAgICAgc291cmNlCisgICAgfTsKK30KKwogdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFy
c2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGhMaW1pdCkKIHsKICAgICB1bnNpZ25lZCBvbGRMZW5ndGggPSBtX2RhdGEubGVu
Z3RoKCk7CkBAIC05NSw2ICsxMDYsMTEgQEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2Vy
QXBwZW5kRGF0YShjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIGlm
ICghY2hhcmFjdGVyTGVuZ3RoTGltaXQpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgYXV0byBj
aGlsZENoYW5nZSA9IG1ha2VDaGlsZENoYW5nZSgqdGhpcywgQ29udGFpbmVyTm9kZTo6Q2hpbGRD
aGFuZ2U6OlNvdXJjZTo6UGFyc2VyKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpDaGlsZENo
YW5nZUludmFsaWRhdGlvbj4gc3R5bGVJbnZhbGlkYXRpb247CisgICAgaWYgKGF1dG8qIHBhcmVu
dCA9IHBhcmVudE5vZGUoKSkKKyAgICAgICAgc3R5bGVJbnZhbGlkYXRpb24uZW1wbGFjZSgqcGFy
ZW50LCBjaGlsZENoYW5nZSk7CisKICAgICBTdHJpbmcgb2xkRGF0YSA9IG1fZGF0YTsKICAgICBp
ZiAoc3RyaW5nLmlzOEJpdCgpKQogICAgICAgICBtX2RhdGEuYXBwZW5kKHN0cmluZy5jaGFyYWN0
ZXJzOCgpICsgb2Zmc2V0LCBjaGFyYWN0ZXJMZW5ndGhMaW1pdCk7CkBAIC0xMDUsNyArMTIxLDcg
QEAgdW5zaWduZWQgQ2hhcmFjdGVyRGF0YTo6cGFyc2VyQXBwZW5kRGF0YShjb25zdCBTdHJpbmcm
IHN0cmluZywgdW5zaWduZWQgb2Zmc2V0LAogICAgIGlmIChpczxUZXh0PigqdGhpcykpCiAgICAg
ICAgIGRvd25jYXN0PFRleHQ+KCp0aGlzKS51cGRhdGVSZW5kZXJlckFmdGVyQ29udGVudENoYW5n
ZShvbGRMZW5ndGgsIDApOwogCi0gICAgbm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoQ29udGFpbmVy
Tm9kZTo6Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKTsKKyAgICBub3RpZnlQYXJlbnRBZnRl
ckNoYW5nZShjaGlsZENoYW5nZSk7CiAKICAgICBhdXRvIG11dGF0aW9uUmVjaXBpZW50cyA9IE11
dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwOjpjcmVhdGVGb3JDaGFyYWN0ZXJEYXRhTXV0YXRp
b24oKnRoaXMpOwogICAgIGlmIChVTkxJS0VMWShtdXRhdGlvblJlY2lwaWVudHMpKQpAQCAtMTcz
LDYgKzE4OSwxMiBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDaGFyYWN0ZXJEYXRhOjpzZXROb2RlVmFs
dWUoY29uc3QgU3RyaW5nJiBub2RlVmFsdWUpCiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0
YUFuZFVwZGF0ZShjb25zdCBTdHJpbmcmIG5ld0RhdGEsIHVuc2lnbmVkIG9mZnNldE9mUmVwbGFj
ZWREYXRhLCB1bnNpZ25lZCBvbGRMZW5ndGgsIHVuc2lnbmVkIG5ld0xlbmd0aCwgVXBkYXRlTGl2
ZVJhbmdlcyBzaG91bGRVcGRhdGVMaXZlUmFuZ2VzKQogeworICAgIGF1dG8gY2hpbGRDaGFuZ2Ug
PSBtYWtlQ2hpbGRDaGFuZ2UoKnRoaXMsIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpTb3Vy
Y2U6OkFQSSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFN0eWxlOjpDaGlsZENoYW5nZUludmFsaWRh
dGlvbj4gc3R5bGVJbnZhbGlkYXRpb247CisgICAgaWYgKGF1dG8qIHBhcmVudCA9IHBhcmVudE5v
ZGUoKSkKKyAgICAgICAgc3R5bGVJbnZhbGlkYXRpb24uZW1wbGFjZSgqcGFyZW50LCBjaGlsZENo
YW5nZSk7CisKICAgICBTdHJpbmcgb2xkRGF0YSA9IG1fZGF0YTsKICAgICBtX2RhdGEgPSBuZXdE
YXRhOwogCkBAIC0xOTEsMjYgKzIxMywxOSBAQCB2b2lkIENoYXJhY3RlckRhdGE6OnNldERhdGFB
bmRVcGRhdGUoY29uc3QgU3RyaW5nJiBuZXdEYXRhLCB1bnNpZ25lZCBvZmZzZXRPZlJlcAogICAg
IGlmIChkb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgIGRvY3VtZW50KCkuZnJhbWUoKS0+c2Vs
ZWN0aW9uKCkudGV4dFdhc1JlcGxhY2VkKHRoaXMsIG9mZnNldE9mUmVwbGFjZWREYXRhLCBvbGRM
ZW5ndGgsIG5ld0xlbmd0aCk7CiAKLSAgICBub3RpZnlQYXJlbnRBZnRlckNoYW5nZShDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlOjpBUEkpOworICAgIG5vdGlmeVBhcmVudEFmdGVy
Q2hhbmdlKGNoaWxkQ2hhbmdlKTsKIAogICAgIGRpc3BhdGNoTW9kaWZpZWRFdmVudChvbGREYXRh
KTsKIH0KIAotdm9pZCBDaGFyYWN0ZXJEYXRhOjpub3RpZnlQYXJlbnRBZnRlckNoYW5nZShDb250
YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSkKK3ZvaWQgQ2hhcmFjdGVyRGF0
YTo6bm90aWZ5UGFyZW50QWZ0ZXJDaGFuZ2UoY29uc3QgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2UmIGNoaWxkQ2hhbmdlKQogewogICAgIGRvY3VtZW50KCkuaW5jRE9NVHJlZVZlcnNpb24oKTsK
IAogICAgIGlmICghcGFyZW50Tm9kZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZSBjaGFuZ2UgPSB7Ci0gICAgICAgIENvbnRhaW5lck5vZGU6OkNo
aWxkQ2hhbmdlOjpUeXBlOjpUZXh0Q2hhbmdlZCwKLSAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6
cHJldmlvdXNTaWJsaW5nKCp0aGlzKSwKLSAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNp
YmxpbmcoKnRoaXMpLAotICAgICAgICBzb3VyY2UKLSAgICB9OwotCi0gICAgcGFyZW50Tm9kZSgp
LT5jaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKKyAgICBwYXJlbnROb2RlKCktPmNoaWxkcmVuQ2hh
bmdlZChjaGlsZENoYW5nZSk7CiB9CiAKIHZvaWQgQ2hhcmFjdGVyRGF0YTo6ZGlzcGF0Y2hNb2Rp
ZmllZEV2ZW50KGNvbnN0IFN0cmluZyYgb2xkRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0
YS5oCmluZGV4IGM1OTQ3MzViZWNiMDlhMzZlNjU0MjlmMjI5NjZjZmExMzMwZjkzODEuLjM2YTQ5
MjU0MDdlOTEzY2NjYTczZTkwZGUwMzJhYjVmYjg3NzRhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJh
Y3RlckRhdGEuaApAQCAtNjUsNyArNjUsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFN0
cmluZyBub2RlVmFsdWUoKSBjb25zdCBmaW5hbDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRO
b2RlVmFsdWUoY29uc3QgU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBub3RpZnlQYXJlbnRBZnRl
ckNoYW5nZShDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlKTsKKyAgICB2b2lkIG5v
dGlmeVBhcmVudEFmdGVyQ2hhbmdlKGNvbnN0IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlJik7
CiAKICAgICBTdHJpbmcgbV9kYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAppbmRleCA2ZDhmZDFmZDU3NzA5MjBiODEyMzFkMzE1NmZlNTNiODg5NGM4OTgzLi4yYmUwZDRk
YjAzM2M2OTc4MzRkNzFkYmY5MzQ0N2UwMmZkOTVkYjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hl
LmgiCiAjaW5jbHVkZSAiQWxsRGVzY2VuZGFudHNDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiQ2hp
bGRDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJDaGlsZExpc3RNdXRhdGlvblNjb3Bl
LmgiCiAjaW5jbHVkZSAiQ2xhc3NDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIK
QEAgLTExMSwyOSArMTEyLDUyIEBAIEFMV0FZU19JTkxJTkUgTm9kZVZlY3RvciBDb250YWluZXJO
b2RlOjpyZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpCiAKICAgICBkaXNj
b25uZWN0U3ViZnJhbWVzSWZOZWVkZWQoKnRoaXMsIERlc2NlbmRhbnRzT25seSk7CiAKKyAgICBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZSBjaGlsZENoYW5nZSB7IENoaWxkQ2hhbmdlOjpUeXBl
OjpBbGxDaGlsZHJlblJlbW92ZWQsIG51bGxwdHIsIG51bGxwdHIsIHNvdXJjZSB9OworCiAgICAg
V2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNwZW5kV2lkZ2V0SGllcmFy
Y2h5VXBkYXRlczsKICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3Jp
cHREaXNhbGxvd2VkU2NvcGU7CisgICAgeworICAgICAgICBTdHlsZTo6Q2hpbGRDaGFuZ2VJbnZh
bGlkYXRpb24gc3R5bGVJbnZhbGlkYXRpb24oKnRoaXMsIGNoaWxkQ2hhbmdlKTsKIAotICAgIGlm
IChVTkxJS0VMWShpc1NoYWRvd1Jvb3QoKSB8fCBpc0luU2hhZG93VHJlZSgpKSkKLSAgICAgICAg
Y29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+d2lsbFJlbW92ZUFsbENoaWxkcmVuKCp0aGlzKTsKKyAg
ICAgICAgaWYgKFVOTElLRUxZKGlzU2hhZG93Um9vdCgpIHx8IGlzSW5TaGFkb3dUcmVlKCkpKQor
ICAgICAgICAgICAgY29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+d2lsbFJlbW92ZUFsbENoaWxkcmVu
KCp0aGlzKTsKIAotICAgIGRvY3VtZW50KCkubm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZCgqdGhp
cyk7CisgICAgICAgIGRvY3VtZW50KCkubm9kZUNoaWxkcmVuV2lsbEJlUmVtb3ZlZCgqdGhpcyk7
CiAKLSAgICB3aGlsZSAoUmVmUHRyPE5vZGU+IGNoaWxkID0gbV9maXJzdENoaWxkKSB7Ci0gICAg
ICAgIHJlbW92ZUJldHdlZW4obnVsbHB0ciwgY2hpbGQtPm5leHRTaWJsaW5nKCksICpjaGlsZCk7
Ci0gICAgICAgIGF1dG8gc3VidHJlZU9ic2VydmFiaWxpdHkgPSBub3RpZnlDaGlsZE5vZGVSZW1v
dmVkKCp0aGlzLCAqY2hpbGQpOwotICAgICAgICBpZiAoc291cmNlID09IENoaWxkQ2hhbmdlOjpT
b3VyY2U6OkFQSSAmJiBzdWJ0cmVlT2JzZXJ2YWJpbGl0eSA9PSBSZW1vdmVkU3VidHJlZU9ic2Vy
dmFiaWxpdHk6Ok1heWJlT2JzZXJ2YWJsZUJ5UmVmUHRyKQotICAgICAgICAgICAgd2lsbENyZWF0
ZVBvc3NpYmx5T3JwaGFuZWRUcmVlQnlSZW1vdmFsKGNoaWxkLmdldCgpKTsKKyAgICAgICAgd2hp
bGUgKFJlZlB0cjxOb2RlPiBjaGlsZCA9IG1fZmlyc3RDaGlsZCkgeworICAgICAgICAgICAgcmVt
b3ZlQmV0d2VlbihudWxscHRyLCBjaGlsZC0+bmV4dFNpYmxpbmcoKSwgKmNoaWxkKTsKKyAgICAg
ICAgICAgIGF1dG8gc3VidHJlZU9ic2VydmFiaWxpdHkgPSBub3RpZnlDaGlsZE5vZGVSZW1vdmVk
KCp0aGlzLCAqY2hpbGQpOworICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBDaGlsZENoYW5nZTo6
U291cmNlOjpBUEkgJiYgc3VidHJlZU9ic2VydmFiaWxpdHkgPT0gUmVtb3ZlZFN1YnRyZWVPYnNl
cnZhYmlsaXR5OjpNYXliZU9ic2VydmFibGVCeVJlZlB0cikKKyAgICAgICAgICAgICAgICB3aWxs
Q3JlYXRlUG9zc2libHlPcnBoYW5lZFRyZWVCeVJlbW92YWwoY2hpbGQuZ2V0KCkpOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWRvY3Vt
ZW50KCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNPcnBoYW4oKSk7CiAKICAgICBpZiAoZGVm
ZXJDaGlsZHJlbkNoYW5nZWQgPT0gRGVmZXJDaGlsZHJlbkNoYW5nZWQ6Ok5vKQotICAgICAgICBj
aGlsZHJlbkNoYW5nZWQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgeyBDaGlsZENoYW5nZTo6
VHlwZTo6QWxsQ2hpbGRyZW5SZW1vdmVkLCBudWxscHRyLCBudWxscHRyLCBzb3VyY2UgfSk7Cisg
ICAgICAgIGNoaWxkcmVuQ2hhbmdlZChjaGlsZENoYW5nZSk7CiAKICAgICByZXR1cm4gY2hpbGRy
ZW47CiB9CiAKK3N0YXRpYyBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZSBtYWtlQ2hpbGRDaGFu
Z2VGb3JSZW1vdmFsKE5vZGUmIGNoaWxkVG9SZW1vdmUsIENvbnRhaW5lck5vZGU6OkNoaWxkQ2hh
bmdlOjpTb3VyY2Ugc291cmNlKQoreworICAgIGF1dG8gY2hhbmdlVHlwZSA9IFsmXSB7CisgICAg
ICAgIGlmIChpczxFbGVtZW50PihjaGlsZFRvUmVtb3ZlKSkKKyAgICAgICAgICAgIHJldHVybiBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6RWxlbWVudFJlbW92ZWQ7CisgICAgICAg
IGlmIChpczxUZXh0PihjaGlsZFRvUmVtb3ZlKSkKKyAgICAgICAgICAgIHJldHVybiBDb250YWlu
ZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6VGV4dFJlbW92ZWQ7CisgICAgICAgIHJldHVybiBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6Tm9uQ29udGVudHNDaGlsZFJlbW92ZWQ7
CisgICAgfSgpOworCisgICAgcmV0dXJuIHsKKyAgICAgICAgY2hhbmdlVHlwZSwKKyAgICAgICAg
RWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkVG9SZW1vdmUpLAorICAgICAg
ICBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGlsZFRvUmVtb3ZlKSwKKyAgICAgICAg
c291cmNlCisgICAgfTsKK30KKwogQUxXQVlTX0lOTElORSBib29sIENvbnRhaW5lck5vZGU6OnJl
bW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9SZW1vdmUsIENoaWxkQ2hh
bmdlOjpTb3VyY2Ugc291cmNlKQogewogICAgIFJlZjxOb2RlPiBwcm90ZWN0ZWRDaGlsZFRvUmVt
b3ZlKGNoaWxkVG9SZW1vdmUpOwpAQCAtMTYyLDExICsxODYsMTMgQEAgQUxXQVlTX0lOTElORSBi
b29sIENvbnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKE5vZGUmIGNo
aWxkVG9SZW0KICAgICBpZiAoY2hpbGRUb1JlbW92ZS5wYXJlbnROb2RlKCkgIT0gdGhpcykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ2hpbGRDaGFuZ2UgY2hhbmdlOworICAgIGF1dG8g
Y2hpbGRDaGFuZ2UgPSBtYWtlQ2hpbGRDaGFuZ2VGb3JSZW1vdmFsKGNoaWxkVG9SZW1vdmUsIHNv
dXJjZSk7CisKICAgICBSZW1vdmVkU3VidHJlZU9ic2VydmFiaWxpdHkgc3VidHJlZU9ic2VydmFi
aWxpdHk7CiAgICAgewogICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNj
b3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogICAgICAgICBTY3JpcHREaXNhbGxv
d2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CisgICAgICAgIFN0
eWxlOjpDaGlsZENoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbigqdGhpcywgY2hp
bGRDaGFuZ2UpOwogCiAgICAgICAgIGlmIChVTkxJS0VMWShpc1NoYWRvd1Jvb3QoKSB8fCBpc0lu
U2hhZG93VHJlZSgpKSkKICAgICAgICAgICAgIGNvbnRhaW5pbmdTaGFkb3dSb290KCktPnJlc29s
dmVTbG90c0JlZm9yZU5vZGVJbnNlcnRpb25PclJlbW92YWwoKTsKQEAgLTE3OCwxNyArMjA0LDkg
QEAgQUxXQVlTX0lOTElORSBib29sIENvbnRhaW5lck5vZGU6OnJlbW92ZU5vZGVXaXRoU2NyaXB0
QXNzZXJ0aW9uKE5vZGUmIGNoaWxkVG9SZW0KIAogICAgICAgICBSZWZQdHI8Tm9kZT4gcHJldmlv
dXNTaWJsaW5nID0gY2hpbGRUb1JlbW92ZS5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgUmVm
UHRyPE5vZGU+IG5leHRTaWJsaW5nID0gY2hpbGRUb1JlbW92ZS5uZXh0U2libGluZygpOworCiAg
ICAgICAgIHJlbW92ZUJldHdlZW4ocHJldmlvdXNTaWJsaW5nLmdldCgpLCBuZXh0U2libGluZy5n
ZXQoKSwgY2hpbGRUb1JlbW92ZSk7CiAgICAgICAgIHN1YnRyZWVPYnNlcnZhYmlsaXR5ID0gbm90
aWZ5Q2hpbGROb2RlUmVtb3ZlZCgqdGhpcywgY2hpbGRUb1JlbW92ZSk7Ci0KLSAgICAgICAgY2hh
bmdlLnR5cGUgPSBpczxFbGVtZW50PihjaGlsZFRvUmVtb3ZlKSA/Ci0gICAgICAgICAgICBDaGls
ZENoYW5nZTo6VHlwZTo6RWxlbWVudFJlbW92ZWQgOgotICAgICAgICAgICAgKGlzPFRleHQ+KGNo
aWxkVG9SZW1vdmUpID8KLSAgICAgICAgICAgICAgICBDaGlsZENoYW5nZTo6VHlwZTo6VGV4dFJl
bW92ZWQgOgotICAgICAgICAgICAgICAgIENoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0No
aWxkUmVtb3ZlZCk7Ci0gICAgICAgIGNoYW5nZS5wcmV2aW91c1NpYmxpbmdFbGVtZW50ID0gKCFw
cmV2aW91c1NpYmxpbmcgfHwgaXM8RWxlbWVudD4oKnByZXZpb3VzU2libGluZykpID8gZG93bmNh
c3Q8RWxlbWVudD4ocHJldmlvdXNTaWJsaW5nLmdldCgpKSA6IEVsZW1lbnRUcmF2ZXJzYWw6OnBy
ZXZpb3VzU2libGluZygqcHJldmlvdXNTaWJsaW5nKTsKLSAgICAgICAgY2hhbmdlLm5leHRTaWJs
aW5nRWxlbWVudCA9ICghbmV4dFNpYmxpbmcgfHwgaXM8RWxlbWVudD4oKm5leHRTaWJsaW5nKSkg
PyBkb3duY2FzdDxFbGVtZW50PihuZXh0U2libGluZy5nZXQoKSkgOiBFbGVtZW50VHJhdmVyc2Fs
OjpuZXh0U2libGluZygqbmV4dFNpYmxpbmcpOwotICAgICAgICBjaGFuZ2Uuc291cmNlID0gc291
cmNlOwogICAgIH0KIAogICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJ
ICYmIHN1YnRyZWVPYnNlcnZhYmlsaXR5ID09IFJlbW92ZWRTdWJ0cmVlT2JzZXJ2YWJpbGl0eTo6
TWF5YmVPYnNlcnZhYmxlQnlSZWZQdHIpCkBAIC0xOTcsMjEgKzIxNSw0NSBAQCBBTFdBWVNfSU5M
SU5FIGJvb2wgQ29udGFpbmVyTm9kZTo6cmVtb3ZlTm9kZVdpdGhTY3JpcHRBc3NlcnRpb24oTm9k
ZSYgY2hpbGRUb1JlbQogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFkb2N1
bWVudCgpLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzT3JwaGFuKCkpOwogCiAgICAgLy8gRklY
TUU6IE1vdmUgY2hpbGRyZW5DaGFuZ2VkIGludG8gU2NyaXB0RGlzYWxsb3dlZFNjb3BlIGJsb2Nr
LgotICAgIGNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOworICAgIGNoaWxkcmVuQ2hhbmdlZChjaGls
ZENoYW5nZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogZW51bSBjbGFzcyBSZXBsYWNlZEFs
bENoaWxkcmVuIHsgTm8sIFllcyB9OwogCitzdGF0aWMgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFu
Z2UgbWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9uKENvbnRhaW5lck5vZGUmIGNvbnRhaW5lck5v
ZGUsIE5vZGUmIGNoaWxkLCBOb2RlKiBiZWZvcmVDaGlsZCwgQ29udGFpbmVyTm9kZTo6Q2hpbGRD
aGFuZ2U6OlNvdXJjZSBzb3VyY2UsIFJlcGxhY2VkQWxsQ2hpbGRyZW4gcmVwbGFjZWRBbGxDaGls
ZHJlbikKK3sKKyAgICBpZiAocmVwbGFjZWRBbGxDaGlsZHJlbiA9PSBSZXBsYWNlZEFsbENoaWxk
cmVuOjpZZXMpCisgICAgICAgIHJldHVybiB7IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpU
eXBlOjpBbGxDaGlsZHJlblJlcGxhY2VkLCBudWxscHRyLCBudWxscHRyLCBzb3VyY2UgfTsKKwor
ICAgIGF1dG8gY2hhbmdlVHlwZSA9IFsmXSB7CisgICAgICAgIGlmIChpczxFbGVtZW50PihjaGls
ZCkpCisgICAgICAgICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6
OkVsZW1lbnRJbnNlcnRlZDsKKyAgICAgICAgaWYgKGlzPFRleHQ+KGNoaWxkKSkKKyAgICAgICAg
ICAgIHJldHVybiBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6VHlwZTo6VGV4dEluc2VydGVk
OworICAgICAgICByZXR1cm4gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6Ok5vbkNv
bnRlbnRzQ2hpbGRJbnNlcnRlZDsKKyAgICB9KCk7CisKKyAgICByZXR1cm4geworICAgICAgICBj
aGFuZ2VUeXBlLAorICAgICAgICBiZWZvcmVDaGlsZCA/IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZp
b3VzU2libGluZygqYmVmb3JlQ2hpbGQpIDogRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKGNv
bnRhaW5lck5vZGUpLAorICAgICAgICAhYmVmb3JlQ2hpbGQgfHwgaXM8RWxlbWVudD4oKmJlZm9y
ZUNoaWxkKSA/IGRvd25jYXN0PEVsZW1lbnQ+KGJlZm9yZUNoaWxkKSA6IEVsZW1lbnRUcmF2ZXJz
YWw6Om5leHRTaWJsaW5nKCpiZWZvcmVDaGlsZCksCisgICAgICAgIHNvdXJjZQorICAgIH07Cit9
CisKIHRlbXBsYXRlPHR5cGVuYW1lIERPTUluc2VydGlvbldvcms+Ci1zdGF0aWMgQUxXQVlTX0lO
TElORSB2b2lkIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbihDb250YWlu
ZXJOb2RlJiBjb250YWluZXJOb2RlLCBOb2RlJiBjaGlsZCwKK3N0YXRpYyBBTFdBWVNfSU5MSU5F
IHZvaWQgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKENvbnRhaW5lck5v
ZGUmIGNvbnRhaW5lck5vZGUsIE5vZGUmIGNoaWxkLCBOb2RlKiBiZWZvcmVDaGlsZCwKICAgICBD
b250YWluZXJOb2RlOjpDaGlsZENoYW5nZTo6U291cmNlIHNvdXJjZSwgUmVwbGFjZWRBbGxDaGls
ZHJlbiByZXBsYWNlZEFsbENoaWxkcmVuLCBET01JbnNlcnRpb25Xb3JrIGRvTm9kZUluc2VydGlv
bikKIHsKKyAgICBhdXRvIGNoaWxkQ2hhbmdlID0gbWFrZUNoaWxkQ2hhbmdlRm9ySW5zZXJ0aW9u
KGNvbnRhaW5lck5vZGUsIGNoaWxkLCBiZWZvcmVDaGlsZCwgc291cmNlLCByZXBsYWNlZEFsbENo
aWxkcmVuKTsKKwogICAgIE5vZGVWZWN0b3IgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdl
dHM7CiAgICAgewogICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3Bl
IHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwogICAgICAgICBTY3JpcHREaXNhbGxvd2Vk
U2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CisgICAgICAgIFN0eWxl
OjpDaGlsZENoYW5nZUludmFsaWRhdGlvbiBzdHlsZUludmFsaWRhdGlvbihjb250YWluZXJOb2Rl
LCBjaGlsZENoYW5nZSk7CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGNvbnRhaW5lck5vZGUuaXNT
aGFkb3dSb290KCkgfHwgY29udGFpbmVyTm9kZS5pc0luU2hhZG93VHJlZSgpKSkKICAgICAgICAg
ICAgIGNvbnRhaW5lck5vZGUuY29udGFpbmluZ1NoYWRvd1Jvb3QoKS0+cmVzb2x2ZVNsb3RzQmVm
b3JlTm9kZUluc2VydGlvbk9yUmVtb3ZhbCgpOwpAQCAtMjIyLDIwICsyNjQsNyBAQCBzdGF0aWMg
QUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlv
bihDb250YWluZXJOb2RlJgogICAgIH0KIAogICAgIC8vIEZJWE1FOiBNb3ZlIGNoaWxkcmVuQ2hh
bmdlZCBpbnRvIFNjcmlwdERpc2FsbG93ZWRTY29wZSBibG9jay4KLSAgICBpZiAocmVwbGFjZWRB
bGxDaGlsZHJlbiA9PSBSZXBsYWNlZEFsbENoaWxkcmVuOjpZZXMpCi0gICAgICAgIGNvbnRhaW5l
ck5vZGUuY2hpbGRyZW5DaGFuZ2VkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlIHsgQ29udGFp
bmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlR5cGU6OkFsbENoaWxkcmVuUmVwbGFjZWQsIG51bGxwdHIs
IG51bGxwdHIsIHNvdXJjZSB9KTsKLSAgICBlbHNlIHsKLSAgICAgICAgY29udGFpbmVyTm9kZS5j
aGlsZHJlbkNoYW5nZWQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgewotICAgICAgICAgICAg
Y2hpbGQuaXNFbGVtZW50Tm9kZSgpID8KLSAgICAgICAgICAgICAgICBDb250YWluZXJOb2RlOjpD
aGlsZENoYW5nZTo6VHlwZTo6RWxlbWVudEluc2VydGVkIDoKLSAgICAgICAgICAgICAgICAoY2hp
bGQuaXNUZXh0Tm9kZSgpID8KLSAgICAgICAgICAgICAgICAgICAgQ29udGFpbmVyTm9kZTo6Q2hp
bGRDaGFuZ2U6OlR5cGU6OlRleHRJbnNlcnRlZCA6Ci0gICAgICAgICAgICAgICAgICAgIENvbnRh
aW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpOb25Db250ZW50c0NoaWxkSW5zZXJ0ZWQpLAot
ICAgICAgICAgICAgRWxlbWVudFRyYXZlcnNhbDo6cHJldmlvdXNTaWJsaW5nKGNoaWxkKSwKLSAg
ICAgICAgICAgIEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGNoaWxkKSwKLSAgICAgICAg
ICAgIHNvdXJjZQotICAgICAgICB9KTsKLSAgICB9CisgICAgY29udGFpbmVyTm9kZS5jaGlsZHJl
bkNoYW5nZWQoY2hpbGRDaGFuZ2UpOwogCiAgICAgQVNTRVJUKFNjcmlwdERpc2FsbG93ZWRTY29w
ZTo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKGNoaWxkKSk7
CiAgICAgZm9yIChhdXRvJiB0YXJnZXQgOiBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0
cykKQEAgLTQ0OCw3ICs0NzcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250YWluZXJOb2RlOjpp
bnNlcnRCZWZvcmUoTm9kZSYgbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkKQogICAgICAgICBpZiAo
Y2hpbGQtPnBhcmVudE5vZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGV4ZWN1
dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQuZ2V0KCksIENo
aWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7Cisg
ICAgICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hp
bGQuZ2V0KCksIG5leHQucHRyKCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRB
bGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0VHJlZVNjb3BlUmVj
dXJzaXZlbHkodHJlZVNjb3BlKCkpOwogICAgICAgICAgICAgaW5zZXJ0QmVmb3JlQ29tbW9uKG5l
eHQsIGNoaWxkKTsKICAgICAgICAgfSk7CkBAIC01MDcsNyArNTM2LDcgQEAgdm9pZCBDb250YWlu
ZXJOb2RlOjpwYXJzZXJJbnNlcnRCZWZvcmUoTm9kZSYgbmV3Q2hpbGQsIE5vZGUmIG5leHRDaGls
ZCkKICAgICBpZiAobmV4dENoaWxkLnByZXZpb3VzU2libGluZygpID09ICZuZXdDaGlsZCB8fCAm
bmV4dENoaWxkID09ICZuZXdDaGlsZCkgLy8gbm90aGluZyB0byBkbwogICAgICAgICByZXR1cm47
CiAKLSAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24oKnRoaXMsIG5l
d0NoaWxkLCBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIsIFJlcGxhY2VkQWxsQ2hpbGRyZW46
Ok5vLCBbJl0geworICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigq
dGhpcywgbmV3Q2hpbGQsICZuZXh0Q2hpbGQsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlciwg
UmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgIGlmICgmZG9jdW1lbnQoKSAh
PSAmbmV3Q2hpbGQuZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRvY3VtZW50KCkuYWRvcHROb2Rl
KG5ld0NoaWxkKTsKIApAQCAtNTgxLDcgKzYxMCw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRh
aW5lck5vZGU6OnJlcGxhY2VDaGlsZChOb2RlJiBuZXdDaGlsZCwgTm9kZSYgb2xkQ2hpbGQpCiAg
ICAgICAgIGlmIChjaGlsZC0+cGFyZW50Tm9kZSgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9uKCp0aGlzLCBjaGls
ZC5nZXQoKSwgQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJLCBSZXBsYWNlZEFsbENoaWxkcmVuOjpO
bywgWyZdIHsKKyAgICAgICAgZXhlY3V0ZU5vZGVJbnNlcnRpb25XaXRoU2NyaXB0QXNzZXJ0aW9u
KCp0aGlzLCBjaGlsZC5nZXQoKSwgcmVmQ2hpbGQuZ2V0KCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6
OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+
c2V0VHJlZVNjb3BlUmVjdXJzaXZlbHkodHJlZVNjb3BlKCkpOwogICAgICAgICAgICAgaWYgKHJl
ZkNoaWxkKQogICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZUNvbW1vbigqcmVmQ2hpbGQsIGNo
aWxkLmdldCgpKTsKQEAgLTY4Miw3ICs3MTEsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlcGxh
Y2VBbGwoTm9kZSogbm9kZSkKICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKCp0
aGlzKTsKICAgICByZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hpbGRDaGFu
Z2U6OlNvdXJjZTo6QVBJLCBEZWZlckNoaWxkcmVuQ2hhbmdlZDo6WWVzKTsKIAotICAgIGV4ZWN1
dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgKm5vZGUsIENoaWxkQ2hh
bmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6WWVzLCBbJl0geworICAgIGV4
ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgKm5vZGUsIG51bGxw
dHIsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6WWVzLCBb
Jl0gewogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2Rl
KGRvY3VtZW50KCksICp0aGlzKTsKICAgICAgICAgbm9kZS0+c2V0VHJlZVNjb3BlUmVjdXJzaXZl
bHkodHJlZVNjb3BlKCkpOwogICAgICAgICBhcHBlbmRDaGlsZENvbW1vbigqbm9kZSk7CkBAIC03
NjMsNyArNzkyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hp
bGRXaXRob3V0UHJlSW5zZXJ0aW9uVmFsaWRpdHlDaGVjayhOb2QKICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgIC8vIEFwcGVuZCBjaGlsZCB0byB0aGUgZW5kIG9mIHRoZSBsaXN0Ci0gICAg
ICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgY2hpbGQu
Z2V0KCksIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8s
IFsmXSB7CisgICAgICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbigq
dGhpcywgY2hpbGQuZ2V0KCksIG51bGxwdHIsIENoaWxkQ2hhbmdlOjpTb3VyY2U6OkFQSSwgUmVw
bGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0VHJlZVNj
b3BlUmVjdXJzaXZlbHkodHJlZVNjb3BlKCkpOwogICAgICAgICAgICAgYXBwZW5kQ2hpbGRDb21t
b24oY2hpbGQpOwogICAgICAgICB9KTsKQEAgLTc3OSw3ICs4MDgsNyBAQCB2b2lkIENvbnRhaW5l
ck5vZGU6OnBhcnNlckFwcGVuZENoaWxkKE5vZGUmIG5ld0NoaWxkKQogICAgIEFTU0VSVCghbmV3
Q2hpbGQuaXNEb2N1bWVudEZyYWdtZW50KCkpOwogICAgIEFTU0VSVCghaGFzVGFnTmFtZShIVE1M
TmFtZXM6OnRlbXBsYXRlVGFnKSk7CiAKLSAgICBleGVjdXRlTm9kZUluc2VydGlvbldpdGhTY3Jp
cHRBc3NlcnRpb24oKnRoaXMsIG5ld0NoaWxkLCBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIs
IFJlcGxhY2VkQWxsQ2hpbGRyZW46Ok5vLCBbJl0geworICAgIGV4ZWN1dGVOb2RlSW5zZXJ0aW9u
V2l0aFNjcmlwdEFzc2VydGlvbigqdGhpcywgbmV3Q2hpbGQsIG51bGxwdHIsIENoaWxkQ2hhbmdl
OjpTb3VyY2U6OlBhcnNlciwgUmVwbGFjZWRBbGxDaGlsZHJlbjo6Tm8sIFsmXSB7CiAgICAgICAg
IGlmICgmZG9jdW1lbnQoKSAhPSAmbmV3Q2hpbGQuZG9jdW1lbnQoKSkKICAgICAgICAgICAgIGRv
Y3VtZW50KCkuYWRvcHROb2RlKG5ld0NoaWxkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IDVkN2IxYmUyNjE2NDBjZjE0MTBlY2EzZWM5MTczYTQwODlhZmQxOGQuLjRiYjBlMGNiZTZhNDVh
ZGI0OTNmZDQ5M2Q2MWQ2YjUyY2IzNGRmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJBdHRyLmgiCiAjaW5jbHVkZSAiQXR0cmlidXRlQ2hhbmdl
SW52YWxpZGF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiQ2hpbGRD
aGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJv
bWVDbGllbnQuaCIKICNpbmNsdWRlICJDbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIgpAQCAtMjAz
OCw3ICsyMDM5LDcgQEAgU3R5bGU6OkVsZW1lbnRTdHlsZSBFbGVtZW50OjpyZXNvbHZlU3R5bGUo
Y29uc3QgU3R5bGU6OlJlc29sdXRpb25Db250ZXh0JiByZXNvbHUKICAgICByZXR1cm4gc3R5bGVS
ZXNvbHZlcigpLnN0eWxlRm9yRWxlbWVudCgqdGhpcywgcmVzb2x1dGlvbkNvbnRleHQpOwogfQog
Ci1zdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9yU2libGluZ0NvbWJpbmF0b3JzKEVsZW1lbnQqIHNp
YmxpbmcpCit2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMoRWxlbWVudCogc2li
bGluZykKIHsKICAgICBmb3IgKDsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPm5leHRFbGVt
ZW50U2libGluZygpKSB7CiAgICAgICAgIGlmIChzaWJsaW5nLT5zdHlsZUlzQWZmZWN0ZWRCeVBy
ZXZpb3VzU2libGluZygpKQpAQCAtMjY0MiwxMjQgKzI2NDMsMTEgQEAgYm9vbCBFbGVtZW50Ojpj
aGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlIHR5cGUpIGNvbnN0CiAgICAgfQogICAgIHJldHVybiBm
YWxzZTsKIH0KLQotc3RhdGljIHZvaWQgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKEVsZW1lbnQm
IGVsZW1lbnQpCi17Ci0gICAgaWYgKGVsZW1lbnQuc3R5bGVBZmZlY3RlZEJ5RW1wdHkoKSkgewot
ICAgICAgICBhdXRvKiBzdHlsZSA9IGVsZW1lbnQucmVuZGVyU3R5bGUoKTsKLSAgICAgICAgaWYg
KCFzdHlsZSB8fCAoIXN0eWxlLT5lbXB0eVN0YXRlKCkgfHwgZWxlbWVudC5oYXNDaGlsZE5vZGVz
KCkpKQotICAgICAgICAgICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Ci0g
ICAgfQotfQotCi0KLXN0YXRpYyB2b2lkIGludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1
bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxlbWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQotewotICAg
IGJvb2wgY2hpbGRyZW5BZmZlY3RlZCA9IHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7Ci0gICAgYm9vbCBkZXNjZW5kYW50c0FmZmVjdGVkID0gcGFyZW50
LmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLQotICAgIGlm
ICghY2hpbGRyZW5BZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNBZmZlY3RlZCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudEFmdGVyQ2hhbmdlOyBzaWJs
aW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAg
aWYgKGNoaWxkcmVuQWZmZWN0ZWQpCi0gICAgICAgICAgICBzaWJsaW5nLT5pbnZhbGlkYXRlU3R5
bGVJbnRlcm5hbCgpOwotICAgICAgICBpZiAoZGVzY2VuZGFudHNBZmZlY3RlZCkgewotICAgICAg
ICAgICAgZm9yIChhdXRvKiBzaWJsaW5nQ2hpbGQgPSBzaWJsaW5nLT5maXJzdEVsZW1lbnRDaGls
ZCgpOyBzaWJsaW5nQ2hpbGQ7IHNpYmxpbmdDaGlsZCA9IHNpYmxpbmdDaGlsZC0+bmV4dEVsZW1l
bnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAgc2libGluZ0NoaWxkLT5pbnZhbGlkYXRlU3R5
bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZv
aWQgaW52YWxpZGF0ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwg
RWxlbWVudCogZWxlbWVudEJlZm9yZUNoYW5nZSkKLXsKLSAgICBib29sIGNoaWxkcmVuQWZmZWN0
ZWQgPSBwYXJlbnQuY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsK
LSAgICBib29sIGRlc2NlbmRhbnRzQWZmZWN0ZWQgPSBwYXJlbnQuZGVzY2VuZGFudHNBZmZlY3Rl
ZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKLQotICAgIGlmICghY2hpbGRyZW5BZmZlY3Rl
ZCAmJiAhZGVzY2VuZGFudHNBZmZlY3RlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChh
dXRvKiBzaWJsaW5nID0gZWxlbWVudEJlZm9yZUNoYW5nZTsgc2libGluZzsgc2libGluZyA9IHNp
YmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoY2hpbGRyZW5B
ZmZlY3RlZCkKLSAgICAgICAgICAgIHNpYmxpbmctPmludmFsaWRhdGVTdHlsZUludGVybmFsKCk7
Ci0gICAgICAgIGlmIChkZXNjZW5kYW50c0FmZmVjdGVkKSB7Ci0gICAgICAgICAgICBmb3IgKGF1
dG8qIHNpYmxpbmdDaGlsZCA9IHNpYmxpbmctPmZpcnN0RWxlbWVudENoaWxkKCk7IHNpYmxpbmdD
aGlsZDsgc2libGluZ0NoaWxkID0gc2libGluZ0NoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkK
LSAgICAgICAgICAgICAgICBzaWJsaW5nQ2hpbGQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJ
bnRlcm5hbCgpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1lbnVtIFNpYmxpbmdDaGVja1R5cGUg
eyBGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbiwgU2libGluZ0VsZW1lbnRSZW1vdmVkLCBPdGhlciB9
OwotCi1zdGF0aWMgdm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXMoRWxlbWVudCYgcGFy
ZW50LCBTaWJsaW5nQ2hlY2tUeXBlIGNoZWNrVHlwZSwgRWxlbWVudCogZWxlbWVudEJlZm9yZUNo
YW5nZSwgRWxlbWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQotewotICAgIC8vIDplbXB0eSBzZWxl
Y3Rvci4KLSAgICBjaGVja0ZvckVtcHR5U3R5bGVDaGFuZ2UocGFyZW50KTsKLQotICAgIGlmIChw
YXJlbnQuc3R5bGVWYWxpZGl0eSgpID49IFN0eWxlOjpWYWxpZGl0eTo6U3VidHJlZUludmFsaWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIDpmaXJzdC1jaGlsZC4gIEluIHRoZSBwYXJzZXIg
Y2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnl0aGluZywgc2luY2Ugd2Ug
d2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4KLSAgICAvLyBJbiB0aGUgRE9NIGNhc2UsIHdlIG9u
bHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgfGFmdGVyQ2hhbmdlfCBpcyBub3QgMC4KLSAgICAv
LyB8YWZ0ZXJDaGFuZ2V8IGlzIDAgaW4gdGhlIHBhcnNlciBjYXNlLCBzbyBpdCB3b3JrcyBvdXQg
dGhhdCB3ZSdsbCBza2lwIHRoaXMgYmxvY2suCi0gICAgaWYgKHBhcmVudC5jaGlsZHJlbkFmZmVj
dGVkQnlGaXJzdENoaWxkUnVsZXMoKSAmJiBlbGVtZW50QWZ0ZXJDaGFuZ2UpIHsKLSAgICAgICAg
Ly8gRmluZCBvdXIgbmV3IGZpcnN0IGNoaWxkLgotICAgICAgICBSZWZQdHI8RWxlbWVudD4gbmV3
Rmlyc3RFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZChwYXJlbnQpOwotICAg
ICAgICAvLyBGaW5kIHRoZSBmaXJzdCBlbGVtZW50IG5vZGUgZm9sbG93aW5nIHxhZnRlckNoYW5n
ZXwKLQotICAgICAgICAvLyBUaGlzIGlzIHRoZSBpbnNlcnQvYXBwZW5kIGNhc2UuCi0gICAgICAg
IGlmIChuZXdGaXJzdEVsZW1lbnQgIT0gZWxlbWVudEFmdGVyQ2hhbmdlKSB7Ci0gICAgICAgICAg
ICBhdXRvKiBzdHlsZSA9IGVsZW1lbnRBZnRlckNoYW5nZS0+cmVuZGVyU3R5bGUoKTsKLSAgICAg
ICAgICAgIGlmICghc3R5bGUgfHwgc3R5bGUtPmZpcnN0Q2hpbGRTdGF0ZSgpKQotICAgICAgICAg
ICAgICAgIGVsZW1lbnRBZnRlckNoYW5nZS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVy
bmFsKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gaGFuZGxlIG5v
ZGUgcmVtb3ZhbC4KLSAgICAgICAgaWYgKGNoZWNrVHlwZSA9PSBTaWJsaW5nRWxlbWVudFJlbW92
ZWQgJiYgbmV3Rmlyc3RFbGVtZW50ID09IGVsZW1lbnRBZnRlckNoYW5nZSAmJiBuZXdGaXJzdEVs
ZW1lbnQpIHsKLSAgICAgICAgICAgIGF1dG8qIHN0eWxlID0gbmV3Rmlyc3RFbGVtZW50LT5yZW5k
ZXJTdHlsZSgpOwotICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmZpcnN0Q2hpbGRT
dGF0ZSgpKQotICAgICAgICAgICAgICAgIG5ld0ZpcnN0RWxlbWVudC0+aW52YWxpZGF0ZVN0eWxl
Rm9yU3VidHJlZUludGVybmFsKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyA6bGFzdC1j
aGlsZC4gIEluIHRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSwgd2UgZG9uJ3QgaGF2ZSB0byBjaGVj
ayBhbnl0aGluZywgc2luY2Ugd2Ugd2VyZSByaWdodCB0aGUgZmlyc3QgdGltZS4KLSAgICAvLyBJ
biB0aGUgRE9NIGNhc2UsIHdlIG9ubHkgbmVlZCB0byBkbyBzb21ldGhpbmcgaWYgfGFmdGVyQ2hh
bmdlfCBpcyBub3QgMC4KLSAgICBpZiAocGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGls
ZFJ1bGVzKCkgJiYgZWxlbWVudEJlZm9yZUNoYW5nZSkgewotICAgICAgICAvLyBGaW5kIG91ciBu
ZXcgbGFzdCBjaGlsZC4KLSAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IG5ld0xhc3RFbGVtZW50ID0g
RWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKHBhcmVudCk7Ci0KLSAgICAgICAgaWYgKG5ld0xh
c3RFbGVtZW50ICE9IGVsZW1lbnRCZWZvcmVDaGFuZ2UpIHsKLSAgICAgICAgICAgIGF1dG8qIHN0
eWxlID0gZWxlbWVudEJlZm9yZUNoYW5nZS0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgIGlm
ICghc3R5bGUgfHwgc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkpCi0gICAgICAgICAgICAgICAgZWxl
bWVudEJlZm9yZUNoYW5nZS0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBXZSBhbHNvIGhhdmUgdG8gaGFuZGxlIG5vZGUgcmVtb3Zh
bC4gIFRoZSBwYXJzZXIgY2FsbGJhY2sgY2FzZSBpcyBzaW1pbGFyIHRvIG5vZGUgcmVtb3ZhbCBh
cyB3ZWxsIGluIHRoYXQgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIGxhc3QgY2hpbGQKLSAgICAgICAg
Ly8gdG8gbWF0Y2ggbm93LgotICAgICAgICBpZiAoKGNoZWNrVHlwZSA9PSBTaWJsaW5nRWxlbWVu
dFJlbW92ZWQgfHwgY2hlY2tUeXBlID09IEZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKSAmJiBuZXdM
YXN0RWxlbWVudCA9PSBlbGVtZW50QmVmb3JlQ2hhbmdlICYmIG5ld0xhc3RFbGVtZW50KSB7Ci0g
ICAgICAgICAgICBhdXRvKiBzdHlsZSA9IG5ld0xhc3RFbGVtZW50LT5yZW5kZXJTdHlsZSgpOwot
ICAgICAgICAgICAgaWYgKCFzdHlsZSB8fCAhc3R5bGUtPmxhc3RDaGlsZFN0YXRlKCkpCi0gICAg
ICAgICAgICAgICAgbmV3TGFzdEVsZW1lbnQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRl
cm5hbCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaW52YWxpZGF0ZUZvclNpYmxpbmdDb21i
aW5hdG9ycyhlbGVtZW50QWZ0ZXJDaGFuZ2UpOwotCi0gICAgaW52YWxpZGF0ZUZvckZvcndhcmRQ
b3NpdGlvbmFsUnVsZXMocGFyZW50LCBlbGVtZW50QWZ0ZXJDaGFuZ2UpOwotICAgIGludmFsaWRh
dGVGb3JCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhwYXJlbnQsIGVsZW1lbnRCZWZvcmVDaGFuZ2Up
OwotfQotCiB2b2lkIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYg
Y2hhbmdlKQogewogICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwot
ICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKLSAg
ICAgICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKCp0aGlzKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgYXV0byBjaGVja1R5cGUgPSBjaGFuZ2UudHlwZSA9PSBDaGlsZENoYW5nZTo6VHlwZTo6RWxl
bWVudFJlbW92ZWQgPyBTaWJsaW5nRWxlbWVudFJlbW92ZWQgOiBPdGhlcjsKLSAgICAgICAgY2hl
Y2tGb3JTaWJsaW5nU3R5bGVDaGFuZ2VzKCp0aGlzLCBjaGVja1R5cGUsIGNoYW5nZS5wcmV2aW91
c1NpYmxpbmdFbGVtZW50LCBjaGFuZ2UubmV4dFNpYmxpbmdFbGVtZW50KTsKLSAgICB9CiAKLSAg
ICBpZiAoU2hhZG93Um9vdCogc2hhZG93Um9vdCA9IHRoaXMtPnNoYWRvd1Jvb3QoKSkgeworICAg
IGlmIChhdXRvKiBzaGFkb3dSb290ID0gdGhpcy0+c2hhZG93Um9vdCgpKSB7CiAgICAgICAgIHN3
aXRjaCAoY2hhbmdlLnR5cGUpIHsKICAgICAgICAgY2FzZSBDaGlsZENoYW5nZTo6VHlwZTo6RWxl
bWVudEluc2VydGVkOgogICAgICAgICBjYXNlIENoaWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50UmVt
b3ZlZDoKQEAgLTI4MDIsNyArMjY5MCw4IEBAIHZvaWQgRWxlbWVudDo6ZmluaXNoUGFyc2luZ0No
aWxkcmVuKCkKIHsKICAgICBDb250YWluZXJOb2RlOjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsK
ICAgICBzZXRJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCk7Ci0gICAgY2hlY2tGb3JTaWJsaW5n
U3R5bGVDaGFuZ2VzKCp0aGlzLCBGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbiwgRWxlbWVudFRyYXZl
cnNhbDo6bGFzdENoaWxkKCp0aGlzKSwgbnVsbHB0cik7CisKKyAgICBTdHlsZTo6Q2hpbGRDaGFu
Z2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVBZnRlckZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCp0
aGlzKTsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kQXR0cmlidXRlcyhTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggMDRj
ZTY1ZGU2ZTg3MmNmMDkzZDJjY2FmMGRmMThhYjk2ZTdhNGU4Mi4uZWY3Y2U4OTk4ZGUwM2YyMGY0
MjBmMDk1YzM4MTdkZDA1MTQzMWVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC03NjMsNiArNzYz
LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RWxlbWVudERhdGE+IG1fZWxlbWVudERhdGE7CiB9
OwogCit2b2lkIGludmFsaWRhdGVGb3JTaWJsaW5nQ29tYmluYXRvcnMoRWxlbWVudCogc2libGlu
Zyk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihXZWJDb3JlOjpFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvQ2hpbGRD
aGFuZ2VJbnZhbGlkYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1YWVlOTgzMGUxNzhiNGU4M2IxNjUz
YTkxMDgxYTZiY2JhYWQ5OWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAKQEAgLTAsMCArMSwxODAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2hpbGRDaGFuZ2VJbnZhbGlkYXRp
b24uaCIKKworI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKKyNpbmNsdWRlICJTbG90QXNzaWdubWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZTo6
U3R5bGUgeworCitDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6Q2hpbGRDaGFuZ2VJbnZhbGlkYXRp
b24oQ29udGFpbmVyTm9kZSYgY29udGFpbmVyLCBjb25zdCBDb250YWluZXJOb2RlOjpDaGlsZENo
YW5nZSYgY2hpbGRDaGFuZ2UpCisgICAgOiBtX3BhcmVudEVsZW1lbnQoaXM8RWxlbWVudD4oY29u
dGFpbmVyKSA/IGRvd25jYXN0PEVsZW1lbnQ+KCZjb250YWluZXIpIDogbnVsbHB0cikKKyAgICAs
IG1faXNFbmFibGVkKG1fcGFyZW50RWxlbWVudCA/IG1fcGFyZW50RWxlbWVudC0+bmVlZHNTdHls
ZUludmFsaWRhdGlvbigpIDogZmFsc2UpCisgICAgLCBtX2NoaWxkQ2hhbmdlKGNoaWxkQ2hhbmdl
KQoreworICAgIC8vIEZJWE1FOiBEbyBzbWFydGVyIGludmFsaWRhdGlvbiBzaW1pbGFyIHRvIENs
YXNzQ2hhbmdlSW52YWxpZGF0aW9uLgorfQorCitDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6fkNo
aWxkQ2hhbmdlSW52YWxpZGF0aW9uKCkKK3sKKyAgICBpZiAoIW1faXNFbmFibGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpbnZhbGlkYXRlQWZ0ZXJDaGFuZ2UoKTsKK30KKworc3RhdGljIHZv
aWQgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgaWYg
KCFlbGVtZW50LnN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8qIHN0eWxlID0gZWxlbWVudC5yZW5kZXJTdHlsZSgpOworICAgIGlmICghc3R5bGUgfHwg
KCFzdHlsZS0+ZW1wdHlTdGF0ZSgpIHx8IGVsZW1lbnQuaGFzQ2hpbGROb2RlcygpKSkKKyAgICAg
ICAgZWxlbWVudC5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlKCk7Cit9CisKK3N0YXRpYyB2b2lk
IGludmFsaWRhdGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxl
bWVudCogZWxlbWVudEFmdGVyQ2hhbmdlKQoreworICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZCA9
IHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CisgICAg
Ym9vbCBkZXNjZW5kYW50c0FmZmVjdGVkID0gcGFyZW50LmRlc2NlbmRhbnRzQWZmZWN0ZWRCeUZv
cndhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKworICAgIGlmICghY2hpbGRyZW5BZmZlY3RlZCAmJiAh
ZGVzY2VuZGFudHNBZmZlY3RlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvKiBz
aWJsaW5nID0gZWxlbWVudEFmdGVyQ2hhbmdlOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+
bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKGNoaWxkcmVuQWZmZWN0ZWQpCisg
ICAgICAgICAgICBzaWJsaW5nLT5pbnZhbGlkYXRlU3R5bGVJbnRlcm5hbCgpOworICAgICAgICBp
ZiAoZGVzY2VuZGFudHNBZmZlY3RlZCkgeworICAgICAgICAgICAgZm9yIChhdXRvKiBzaWJsaW5n
Q2hpbGQgPSBzaWJsaW5nLT5maXJzdEVsZW1lbnRDaGlsZCgpOyBzaWJsaW5nQ2hpbGQ7IHNpYmxp
bmdDaGlsZCA9IHNpYmxpbmdDaGlsZC0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpCisgICAgICAgICAg
ICAgICAgc2libGluZ0NoaWxkLT5pbnZhbGlkYXRlU3R5bGVGb3JTdWJ0cmVlSW50ZXJuYWwoKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgaW52YWxpZGF0ZUZvckJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKEVsZW1lbnQmIHBhcmVudCwgRWxlbWVudCogZWxlbWVudEJlZm9yZUNo
YW5nZSkKK3sKKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWQgPSBwYXJlbnQuY2hpbGRyZW5BZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsKKyAgICBib29sIGRlc2NlbmRhbnRzQWZm
ZWN0ZWQgPSBwYXJlbnQuZGVzY2VuZGFudHNBZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMoKTsKKworICAgIGlmICghY2hpbGRyZW5BZmZlY3RlZCAmJiAhZGVzY2VuZGFudHNBZmZlY3Rl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChhdXRvKiBzaWJsaW5nID0gZWxlbWVudEJl
Zm9yZUNoYW5nZTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNp
YmxpbmcoKSkgeworICAgICAgICBpZiAoY2hpbGRyZW5BZmZlY3RlZCkKKyAgICAgICAgICAgIHNp
YmxpbmctPmludmFsaWRhdGVTdHlsZUludGVybmFsKCk7CisgICAgICAgIGlmIChkZXNjZW5kYW50
c0FmZmVjdGVkKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8qIHNpYmxpbmdDaGlsZCA9IHNpYmxp
bmctPmZpcnN0RWxlbWVudENoaWxkKCk7IHNpYmxpbmdDaGlsZDsgc2libGluZ0NoaWxkID0gc2li
bGluZ0NoaWxkLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkKKyAgICAgICAgICAgICAgICBzaWJsaW5n
Q2hpbGQtPmludmFsaWRhdGVTdHlsZUZvclN1YnRyZWVJbnRlcm5hbCgpOworICAgICAgICB9Cisg
ICAgfQorfQorCitzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRm9yRmlyc3RDaGlsZFN0YXRlKEVsZW1l
bnQmIGNoaWxkLCBib29sIHN0YXRlKQoreworICAgIGF1dG8qIHN0eWxlID0gY2hpbGQucmVuZGVy
U3R5bGUoKTsKKyAgICBpZiAoIXN0eWxlIHx8IHN0eWxlLT5maXJzdENoaWxkU3RhdGUoKSA9PSBz
dGF0ZSkKKyAgICAgICAgY2hpbGQuaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7
Cit9CisKK3N0YXRpYyB2b2lkIGludmFsaWRhdGVGb3JMYXN0Q2hpbGRTdGF0ZShFbGVtZW50JiBj
aGlsZCwgYm9vbCBzdGF0ZSkKK3sKKyAgICBhdXRvKiBzdHlsZSA9IGNoaWxkLnJlbmRlclN0eWxl
KCk7CisgICAgaWYgKCFzdHlsZSB8fCBzdHlsZS0+bGFzdENoaWxkU3RhdGUoKSA9PSBzdGF0ZSkK
KyAgICAgICAgY2hpbGQuaW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZUludGVybmFsKCk7Cit9CisK
K3ZvaWQgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVBZnRlckNoYW5nZSgpCit7
CisgICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKHBhcmVudEVsZW1lbnQoKSk7CisKKyAgICBp
ZiAobV9jaGlsZENoYW5nZS5zb3VyY2UgPT0gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2U6OlNv
dXJjZTo6UGFyc2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBjaGVja0ZvclNpYmxpbmdTdHls
ZUNoYW5nZXMoKTsKK30KKwordm9pZCBDaGlsZENoYW5nZUludmFsaWRhdGlvbjo6aW52YWxpZGF0
ZUFmdGVyRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oRWxlbWVudCYgcGFyZW50KQoreworICAgIGlm
ICghcGFyZW50Lm5lZWRzU3R5bGVJbnZhbGlkYXRpb24oKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY2hlY2tGb3JFbXB0eVN0eWxlQ2hhbmdlKHBhcmVudCk7CisKKyAgICBhdXRvKiBsYXN0Q2hp
bGRFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKHBhcmVudCk7CisgICAgaWYg
KCFsYXN0Q2hpbGRFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAocGFyZW50LmNo
aWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkpCisgICAgICAgIGludmFsaWRhdGVGb3JM
YXN0Q2hpbGRTdGF0ZSgqbGFzdENoaWxkRWxlbWVudCwgZmFsc2UpOworCisgICAgaW52YWxpZGF0
ZUZvckJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKHBhcmVudCwgbGFzdENoaWxkRWxlbWVudCk7Cit9
CisKK3ZvaWQgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246OmNoZWNrRm9yU2libGluZ1N0eWxlQ2hh
bmdlcygpCit7CisgICAgYXV0byYgcGFyZW50ID0gcGFyZW50RWxlbWVudCgpOworICAgIGF1dG8q
IGVsZW1lbnRCZWZvcmVDaGFuZ2UgPSBtX2NoaWxkQ2hhbmdlLnByZXZpb3VzU2libGluZ0VsZW1l
bnQ7CisgICAgYXV0byogZWxlbWVudEFmdGVyQ2hhbmdlID0gbV9jaGlsZENoYW5nZS5uZXh0U2li
bGluZ0VsZW1lbnQ7CisKKyAgICAvLyA6Zmlyc3QtY2hpbGQuIEluIHRoZSBwYXJzZXIgY2FsbGJh
Y2sgY2FzZSwgd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnl0aGluZywgc2luY2Ugd2Ugd2VyZSBy
aWdodCB0aGUgZmlyc3QgdGltZS4KKyAgICAvLyBJbiB0aGUgRE9NIGNhc2UsIHdlIG9ubHkgbmVl
ZCB0byBkbyBzb21ldGhpbmcgaWYgfGFmdGVyQ2hhbmdlfCBpcyBub3QgMC4KKyAgICAvLyB8YWZ0
ZXJDaGFuZ2V8IGlzIDAgaW4gdGhlIHBhcnNlciBjYXNlLCBzbyBpdCB3b3JrcyBvdXQgdGhhdCB3
ZSdsbCBza2lwIHRoaXMgYmxvY2suCisgICAgaWYgKHBhcmVudC5jaGlsZHJlbkFmZmVjdGVkQnlG
aXJzdENoaWxkUnVsZXMoKSAmJiBlbGVtZW50QWZ0ZXJDaGFuZ2UpIHsKKyAgICAgICAgLy8gRmlu
ZCBvdXIgbmV3IGZpcnN0IGNoaWxkLgorICAgICAgICBSZWZQdHI8RWxlbWVudD4gbmV3Rmlyc3RF
bGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZChwYXJlbnQpOworCisgICAgICAg
IC8vIFRoaXMgaXMgdGhlIGluc2VydC9hcHBlbmQgY2FzZS4KKyAgICAgICAgaWYgKG5ld0ZpcnN0
RWxlbWVudCAhPSBlbGVtZW50QWZ0ZXJDaGFuZ2UpCisgICAgICAgICAgICBpbnZhbGlkYXRlRm9y
Rmlyc3RDaGlsZFN0YXRlKCplbGVtZW50QWZ0ZXJDaGFuZ2UsIHRydWUpOworCisgICAgICAgIC8v
IFdlIGFsc28gaGF2ZSB0byBoYW5kbGUgbm9kZSByZW1vdmFsLgorICAgICAgICBpZiAobV9jaGls
ZENoYW5nZS50eXBlID09IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50
UmVtb3ZlZCAmJiBuZXdGaXJzdEVsZW1lbnQgPT0gZWxlbWVudEFmdGVyQ2hhbmdlKQorICAgICAg
ICAgICAgaW52YWxpZGF0ZUZvckZpcnN0Q2hpbGRTdGF0ZSgqbmV3Rmlyc3RFbGVtZW50LCBmYWxz
ZSk7CisgICAgfQorCisgICAgLy8gOmxhc3QtY2hpbGQuIEluIHRoZSBwYXJzZXIgY2FsbGJhY2sg
Y2FzZSwgd2UgZG9uJ3QgaGF2ZSB0byBjaGVjayBhbnl0aGluZywgc2luY2Ugd2Ugd2VyZSByaWdo
dCB0aGUgZmlyc3QgdGltZS4KKyAgICAvLyBJbiB0aGUgRE9NIGNhc2UsIHdlIG9ubHkgbmVlZCB0
byBkbyBzb21ldGhpbmcgaWYgfGFmdGVyQ2hhbmdlfCBpcyBub3QgMC4KKyAgICBpZiAocGFyZW50
LmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgJiYgZWxlbWVudEJlZm9yZUNoYW5n
ZSkgeworICAgICAgICAvLyBGaW5kIG91ciBuZXcgbGFzdCBjaGlsZC4KKyAgICAgICAgUmVmUHRy
PEVsZW1lbnQ+IG5ld0xhc3RFbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6bGFzdENoaWxkKHBh
cmVudCk7CisKKyAgICAgICAgaWYgKG5ld0xhc3RFbGVtZW50ICE9IGVsZW1lbnRCZWZvcmVDaGFu
Z2UpCisgICAgICAgICAgICBpbnZhbGlkYXRlRm9yTGFzdENoaWxkU3RhdGUoKmVsZW1lbnRCZWZv
cmVDaGFuZ2UsIHRydWUpOworCisgICAgICAgIC8vIFdlIGFsc28gaGF2ZSB0byBoYW5kbGUgbm9k
ZSByZW1vdmFsLgorICAgICAgICBpZiAobV9jaGlsZENoYW5nZS50eXBlID09IENvbnRhaW5lck5v
ZGU6OkNoaWxkQ2hhbmdlOjpUeXBlOjpFbGVtZW50UmVtb3ZlZCAmJiBuZXdMYXN0RWxlbWVudCA9
PSBlbGVtZW50QmVmb3JlQ2hhbmdlKQorICAgICAgICAgICAgaW52YWxpZGF0ZUZvckxhc3RDaGls
ZFN0YXRlKCpuZXdMYXN0RWxlbWVudCwgZmFsc2UpOworICAgIH0KKworICAgIGludmFsaWRhdGVG
b3JTaWJsaW5nQ29tYmluYXRvcnMoZWxlbWVudEFmdGVyQ2hhbmdlKTsKKworICAgIGludmFsaWRh
dGVGb3JGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKHBhcmVudCwgZWxlbWVudEFmdGVyQ2hhbmdlKTsK
KyAgICBpbnZhbGlkYXRlRm9yQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMocGFyZW50LCBlbGVtZW50
QmVmb3JlQ2hhbmdlKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NoaWxkQ2hh
bmdlSW52YWxpZGF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjcxMjlkZDQwYTc5ZjY0Y2RiZjJjNDIwZDhi
NDQzMTA4ZmUyZTI3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0No
aWxkQ2hhbmdlSW52YWxpZGF0aW9uLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CituYW1lc3BhY2UgU3R5bGUgeworCitjbGFzcyBDaGlsZENoYW5nZUludmFsaWRhdGlvbiB7Citw
dWJsaWM6CisgICAgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24oQ29udGFpbmVyTm9kZSYsIGNvbnN0
IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlJik7CisgICAgfkNoaWxkQ2hhbmdlSW52YWxpZGF0
aW9uKCk7CisKKyAgICBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlQWZ0ZXJGaW5pc2hlZFBhcnNpbmdD
aGlsZHJlbihFbGVtZW50Jik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbnZhbGlkYXRlQWZ0ZXJD
aGFuZ2UoKTsKKyAgICB2b2lkIGNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcygpOworCisgICAg
RWxlbWVudCYgcGFyZW50RWxlbWVudCgpIHsgcmV0dXJuICptX3BhcmVudEVsZW1lbnQ7IH0KKwor
ICAgIEVsZW1lbnQqIG1fcGFyZW50RWxlbWVudCB7IG51bGxwdHIgfTsKKyAgICBjb25zdCBib29s
IG1faXNFbmFibGVkOworCisgICAgY29uc3QgQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UmIG1f
Y2hpbGRDaGFuZ2U7Cit9OworCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZUFkanVzdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUFkanVzdGVyLmgK
aW5kZXggMTkxMzFlNTgwZjU2NDVhZWEyMjMyODI5NGU5ZDc2MWViZjgzNWQ2Ny4uOTcyYTFhYmQx
NTIwNjA1NjAxODM0MzFmNjQ4NDc5OTgzOGQ5OWQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVBZGp1c3Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
QWRqdXN0ZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJS
ZW5kZXJTdHlsZUNvbnN0YW50cy5oIgorI2luY2x1ZGUgIlRleHRTaXplQWRqdXN0bWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>