<?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>224906</bug_id>
          
          <creation_ts>2021-04-21 17:04:13 -0700</creation_ts>
          <short_desc>Generalize CompletionHandlerCallingScope</short_desc>
          <delta_ts>2021-09-27 22:50:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>kkinnunen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1752979</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-21 17:04:13 -0700</bug_when>
    <thetext>Make it possible to use CompletionHandlerCallingScope with non-trivial CompletionHandler types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752980</commentid>
    <comment_count>1</comment_count>
      <attachid>426757</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-21 17:04:34 -0700</bug_when>
    <thetext>Created attachment 426757
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755241</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-28 17:05:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/77292963&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426757</attachid>
            <date>2021-04-21 17:04:34 -0700</date>
            <delta_ts>2021-04-21 17:04:34 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>wip224906.patch</filename>
            <type>text/plain</type>
            <size>68216</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NvbXBsZXRpb25IYW5kbGVyLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9Db21wbGV0aW9uSGFuZGxlci5oCmluZGV4IGEzNThjMGY2ZWVhOS4uYmVjYThmNTM3
MTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Db21wbGV0aW9uSGFuZGxlci5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0NvbXBsZXRpb25IYW5kbGVyLmgKQEAgLTEzNSwyOCArMTM1LDQyIEBA
IHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIERldGFpbAogCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
b21wbGV0aW9uSGFuZGxlclR5cGUgPSB2b2lkKCksIHR5cGVuYW1lIERlZmF1bHRFeGl0RnVuY3Rp
b25UeXBlID0gRnVuY3Rpb248dm9pZChDb21wbGV0aW9uSGFuZGxlcjxDb21wbGV0aW9uSGFuZGxl
clR5cGU+JiYpPj4KIGNsYXNzIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGZpbmFsIHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBDb21wbGV0aW9uSGFu
ZGxlckNhbGxpbmdTY29wZSgpID0gZGVmYXVsdDsKIAotICAgIENvbXBsZXRpb25IYW5kbGVyQ2Fs
bGluZ1Njb3BlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZShDb21wbGV0aW9uSGFuZGxlcjxDb21w
bGV0aW9uSGFuZGxlclR5cGU+JiYgY29tcGxldGlvbkhhbmRsZXIsIERlZmF1bHRFeGl0RnVuY3Rp
b25UeXBlJiYgZGVmYXVsdEV4aXRGdW5jdGlvbikKKyAgICAgICAgOiBtX2NvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICAsIG1fZGVmYXVsdEZ1bmN0
aW9uKFdURk1vdmUoZGVmYXVsdEV4aXRGdW5jdGlvbikpCisgICAgeyB9CisKKyAgICBDb21wbGV0
aW9uSGFuZGxlckNhbGxpbmdTY29wZShDb21wbGV0aW9uSGFuZGxlcjxDb21wbGV0aW9uSGFuZGxl
clR5cGU+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIDogbV9jb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgLCBtX2RlZmF1bHRGdW5jdGlv
bihbXShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29t
cGxldGlvbkhhbmRsZXIoKTsgfSkKICAgICB7IH0KIAogICAgIH5Db21wbGV0aW9uSGFuZGxlckNh
bGxpbmdTY29wZSgpCiAgICAgewogICAgICAgICBpZiAobV9jb21wbGV0aW9uSGFuZGxlcikKLSAg
ICAgICAgICAgIG1fY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIG1fZGVmYXVsdEZ1
bmN0aW9uKFdURk1vdmUobV9jb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0KIAogICAgIENvbXBs
ZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlKENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlJiYp
ID0gZGVmYXVsdDsKICAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSYgb3BlcmF0b3I9
KENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlJiYpID0gZGVmYXVsdDsKIAotICAgIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4gcmVsZWFzZSgpIHsgcmV0dXJuIFdURk1vdmUobV9jb21wbGV0
aW9uSGFuZGxlcik7IH0KKyAgICBDb21wbGV0aW9uSGFuZGxlcjxDb21wbGV0aW9uSGFuZGxlclR5
cGU+IHJlbGVhc2UoKSB7IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fY29tcGxldGlvbkhhbmRsZXIs
IENvbXBsZXRpb25IYW5kbGVyPENvbXBsZXRpb25IYW5kbGVyVHlwZT4geyB9KTsgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUuLi4gSW4+CisgICAgYXV0byBjYWxsKEluLi4uIGluKQorICAgIHsK
KyAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jb21wbGV0
aW9uSGFuZGxlciwgQ29tcGxldGlvbkhhbmRsZXI8Q29tcGxldGlvbkhhbmRsZXJUeXBlPiB7IH0p
OworICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoc3RkOjpmb3J3YXJkPEluPihpbiku
Li4pOworICAgIH0KIAogcHJpdmF0ZToKLSAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IG1f
Y29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8Q29tcGxldGlvbkhhbmRs
ZXJUeXBlPiBtX2NvbXBsZXRpb25IYW5kbGVyOworICAgIERlZmF1bHRFeGl0RnVuY3Rpb25UeXBl
IG1fZGVmYXVsdEZ1bmN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9TY29wZS5oIGIvU291cmNlL1dURi93dGYvU2NvcGUuaAppbmRleCBi
NzRkNzVhYTU3ZjUuLjFmYTAxOTgzMGQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU2Nv
cGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9TY29wZS5oCkBAIC01OCw2ICs1OCwxMyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fZXhlY3V0ZU9uRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKICAgICB9CiAKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXBsYWNlbWVudEZ1bmN0aW9uPgorICAgIHZvaWQgcmVwbGFj
ZUFuZEV4aXQoUmVwbGFjZW1lbnRGdW5jdGlvbiYmIHJlcGxhY2VtZW50RnVuY3Rpb24pCisgICAg
eworICAgICAgICByZWxlYXNlKCk7CisgICAgICAgIHJlcGxhY2VtZW50RnVuY3Rpb24oKTsKKyAg
ICB9CisKICAgICBTY29wZUV4aXQoY29uc3QgU2NvcGVFeGl0JikgPSBkZWxldGU7CiAgICAgU2Nv
cGVFeGl0JiBvcGVyYXRvcj0oY29uc3QgU2NvcGVFeGl0JikgPSBkZWxldGU7CiAgICAgU2NvcGVF
eGl0JiBvcGVyYXRvcj0oU2NvcGVFeGl0JiYpID0gZGVsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BvbGljeUNoZWNrZXIuY3BwCmluZGV4IGFkMjc2MmJlNjQzNC4uNDFmOWFhNDlhZTRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCkBAIC0xMDUsNyArMTA1LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KFJl
c291cmNlUmVxdWVzdCYmIG5ld1JlcXUKICAgICBjaGVja05hdmlnYXRpb25Qb2xpY3koV1RGTW92
ZShuZXdSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgbV9mcmFtZS5sb2FkZXIoKS5hY3RpdmVE
b2N1bWVudExvYWRlcigpLCB7IH0sIFdURk1vdmUoZnVuY3Rpb24pKTsKIH0KIAotQ29tcGxldGlv
bkhhbmRsZXJDYWxsaW5nU2NvcGUgRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmV4dGVuZEJs
b2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRG9jdW1l
bnRMb2FkZXIqIGxvYWRlcikgY29uc3QKK0NvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlPHZv
aWQoKT4gRnJhbWVMb2FkZXI6OlBvbGljeUNoZWNrZXI6OmV4dGVuZEJsb2JVUkxMaWZldGltZUlm
TmVjZXNzYXJ5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
cikgY29uc3QKIHsKICAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Jsb2IoKSkKICAg
ICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xp
Y3lDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oCmluZGV4
IGRmMjI3YjZjMTAzYS4uNDUwOGRlZjc1Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUG9saWN5Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lD
aGVja2VyLmgKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdURiB7CiB0ZW1wbGF0ZTx0
eXBlbmFtZT4gY2xhc3MgQ29tcGxldGlvbkhhbmRsZXI7Ci1jbGFzcyBDb21wbGV0aW9uSGFuZGxl
ckNhbGxpbmdTY29wZTsKK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBlbmFtZT4gY2xhc3MgQ29tcGxl
dGlvbkhhbmRsZXJDYWxsaW5nU2NvcGU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg5
LDcgKzg5LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlVW5pbXBsZW1l
bnRhYmxlUG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyQ2FsbGluZ1Njb3BlIGV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNzYXJ5KFJlc291
cmNlUmVxdWVzdCYsIERvY3VtZW50TG9hZGVyKikgY29uc3Q7CisgICAgV1RGOjpDb21wbGV0aW9u
SGFuZGxlckNhbGxpbmdTY29wZTx2b2lkKCk+IGV4dGVuZEJsb2JVUkxMaWZldGltZUlmTmVjZXNz
YXJ5KFJlc291cmNlUmVxdWVzdCYsIERvY3VtZW50TG9hZGVyKikgY29uc3Q7CiAKICAgICBGcmFt
ZSYgbV9mcmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1l
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKaW5k
ZXggZjQzMTViMzgyZWM4Li41NjgxYWNlOGYzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YmZyYW1lTG9hZGVyLmNwcApAQCAtODksNyArODksNyBAQCBib29sIEZyYW1lTG9hZGVyOjpTdWJm
cmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCYgb3duZXJFbGVt
ZQogICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIHN0b3BEZWxheWluZ0xvYWRFdmVu
dDsKICAgICBpZiAoIXNjcmlwdFVSTC5pc0VtcHR5KCkpIHsKICAgICAgICAgb3duZXJFbGVtZW50
LmRvY3VtZW50KCkuaW5jcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOwotICAgICAgICBzdG9w
RGVsYXlpbmdMb2FkRXZlbnQgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZShbb3duZXJE
b2N1bWVudCA9IG1ha2VSZWYob3duZXJFbGVtZW50LmRvY3VtZW50KCkpXSB7CisgICAgICAgIHN0
b3BEZWxheWluZ0xvYWRFdmVudCA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlPHZvaWQo
KT4oW293bmVyRG9jdW1lbnQgPSBtYWtlUmVmKG93bmVyRWxlbWVudC5kb2N1bWVudCgpKV0gewog
ICAgICAgICAgICAgb3duZXJEb2N1bWVudC0+ZGVjcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgp
OwogICAgICAgICB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAppbmRleCAxMDEz
NTJmYjBkYzYuLjk2YWYxMTRlMzgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlR3JhcGhpY3NDb250ZXh0R0wuY3BwCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Cisj
aW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAKICNpZiBVU0UoQVZGT1VOREFUSU9OKQogI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0R0xDVi5oPgpAQCAtMjIwLDYgKzIyMSw4IEBAIHZvaWQg
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OnBhaW50SW1hZ2VEYXRhVG9JbWFnZUJ1ZmZlcihSZWZQ
dHI8V2ViQ29yZTo6SW1hZ2VECiAKIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0R0w6OmNvcHlU
ZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllciBtZWRpYVBsYXll
cklkZW50aWZpZXIsIHVpbnQzMl90IHRleHR1cmUsIHVpbnQzMl90IHRhcmdldCwgaW50MzJfdCBs
ZXZlbCwgdWludDMyX3QgaW50ZXJuYWxGb3JtYXQsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3Qg
dHlwZSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBib29sIGZsaXBZLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIENvbXBsZXRpb25IYW5k
bGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyU2NvcGUgeyBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgW10oYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsgfSB9OworCiAjaWYgVVNFKEFWRk9VTkRBVElPTikKICAgICBVTlVTRURfVkFS
SUFCTEUocHJlbXVsdGlwbHlBbHBoYSk7CiAgICAgQVNTRVJUX1VOVVNFRCh0YXJnZXQsIHRhcmdl
dCA9PSBHcmFwaGljc0NvbnRleHRHTDo6VEVYVFVSRV8yRCk7CkBAIC0yMzUsMTggKzIzOCwxNCBA
QCB2b2lkIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMOjpjb3B5VGV4dHVyZUZyb21NZWRpYShXZWJD
b3JlOjpNZWRpYVBsYXllcklkZW50aWZpZQogCiAgICAgY2FsbE9uTWFpblJ1bkxvb3BBbmRXYWl0
KFdURk1vdmUoZ2V0UGl4ZWxCdWZmZXIpKTsKIAotICAgIGlmICghcGl4ZWxCdWZmZXIpIHsKLSAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgIGlmICghcGl4ZWxCdWZmZXIpCiAg
ICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBhdXRvIGNvbnRleHRDViA9IG1fY29udGV4dC0+
YXNDVigpOwotICAgIGlmICghY29udGV4dENWKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKKyAgICBpZiAoIWNvbnRleHRDVikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAot
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHRDVi0+Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJl
KHBpeGVsQnVmZmVyLmdldCgpLCB0ZXh0dXJlLCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGZvcm1h
dCwgdHlwZSwgR3JhcGhpY3NDb250ZXh0R0w6OkZsaXBZKGZsaXBZKSkpOworICAgIGNvbXBsZXRp
b25IYW5kbGVyU2NvcGUuY2FsbChjb250ZXh0Q1YtPmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShw
aXhlbEJ1ZmZlci5nZXQoKSwgdGV4dHVyZSwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBmb3JtYXQs
IHR5cGUsIEdyYXBoaWNzQ29udGV4dEdMOjpGbGlwWShmbGlwWSkpKTsKICNlbHNlCiAgICAgVU5V
U0VEX1ZBUklBQkxFKG1lZGlhUGxheWVySWRlbnRpZmllcik7CiAgICAgVU5VU0VEX1ZBUklBQkxF
KHRleHR1cmUpOwpAQCAtMjU5LDcgKzI1OCw2IEBAIHZvaWQgUmVtb3RlR3JhcGhpY3NDb250ZXh0
R0w6OmNvcHlUZXh0dXJlRnJvbU1lZGlhKFdlYkNvcmU6Ok1lZGlhUGxheWVySWRlbnRpZmllCiAg
ICAgVU5VU0VEX1ZBUklBQkxFKGZsaXBZKTsKIAogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJBVkZQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJv
eHkuY3BwCmluZGV4IDAwODFjMTJmZGNiYy4uYzI5ZmFhYjYxOTFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlSW1hZ2VEZWNvZGVyQVZGUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVJbWFnZURlY29kZXJB
VkZQcm94eS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW1hZ2VEZWNvZGVyQVZGT2JqQy5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIApAQCAtMTE4LDIzICsxMTksMjAgQEAgdm9pZCBSZW1vdGVJbWFnZURl
Y29kZXJBVkZQcm94eTo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoSW1hZ2VEZWNvZGVySWRlbnRp
ZmllcgogICAgIEFTU0VSVChtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwog
ICAgIE9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4gc2VuZFJpZ2h0OwogICAgIENvbG9yU3Bh
Y2VEYXRhIGNvbG9yU3BhY2VEYXRhOwotICAgIGlmICghbV9pbWFnZURlY29kZXJzLmNvbnRhaW5z
KGlkZW50aWZpZXIpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJp
Z2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkpOworICAgIENvbXBsZXRpb25IYW5kbGVyQ2Fs
bGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyU2NvcGUgeyBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwKKyAgICAgICAgWyZdKGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHNlbmRSaWdodCksIFdURk1vdmUoY29sb3JTcGFjZURhdGEpKTsgfSB9
OworCisgICAgaWYgKCFtX2ltYWdlRGVjb2RlcnMuY29udGFpbnMoaWRlbnRpZmllcikpCiAgICAg
ICAgIHJldHVybjsKLSAgICB9CiAKICAgICBhdXRvIGZyYW1lSW1hZ2UgPSBtX2ltYWdlRGVjb2Rl
cnMuZ2V0KGlkZW50aWZpZXIpLT5jcmVhdGVGcmFtZUltYWdlQXRJbmRleChpbmRleCk7Ci0gICAg
aWYgKCFmcmFtZUltYWdlKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc2Vu
ZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkpOworICAgIGlmICghZnJhbWVJbWFnZSkK
ICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBJT1N1cmZh
Y2U6OmNyZWF0ZUZyb21JbWFnZShmcmFtZUltYWdlLmdldCgpKSkgewogICAgICAgICBzZW5kUmln
aHQgPSBzdXJmYWNlLT5jcmVhdGVTZW5kUmlnaHQoKTsKICAgICAgICAgY29sb3JTcGFjZURhdGEu
Y2dDb2xvclNwYWNlID0gc3VyZmFjZS0+Y29sb3JTcGFjZSgpOwogICAgIH0KLQotICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoc2VuZFJpZ2h0KSwgV1RGTW92ZShjb2xvclNwYWNlRGF0YSkp
OwogfQogCiB2b2lkIFJlbW90ZUltYWdlRGVjb2RlckFWRlByb3h5OjpjbGVhckZyYW1lQnVmZmVy
Q2FjaGUoSW1hZ2VEZWNvZGVySWRlbnRpZmllciBpZGVudGlmaWVyLCBzaXplX3QgaW5kZXgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5jcHAKaW5kZXggYmQxOTFlNTcxZDcxLi4zZTBmNmM4MmRhZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxh
eWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXllclByaXZhdGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CiAKICNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQogI2luY2x1ZGUgIlJlbW90ZUNETUZhY3RvcnlQcm94
eS5oIgpAQCAtMTQxLDE1ICsxNDIsMTQgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojps
b2FkTWVkaWFTb3VyY2UoVVJMJiYgdXJsLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHkKICAgICBB
U1NFUlQobV9tYW5hZ2VyICYmIG1fbWFuYWdlci0+Z3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcygp
KTsKIAogICAgIFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwot
ICAgIGlmICghbV9tYW5hZ2VyIHx8ICFtX21hbmFnZXItPmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24p
KTsKKyAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBjb21wbGV0aW9uSGFuZGxlclNj
b3BlIHsgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFsmXShhdXRvJiYgY29tcGxldGlvbkhh
bmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb25maWd1cmF0aW9uKSk7IH0gfTsK
KworICAgIGlmICghbV9tYW5hZ2VyIHx8ICFtX21hbmFnZXItPmdwdUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIG1fbWVkaWFTb3VyY2VQcm94
eSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlTWVkaWFTb3VyY2VQcm94eSgqbV9tYW5hZ2VyLT5ncHVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzKCksIG1lZGlhU291cmNlSWRlbnRpZmllciwgd2ViTVBhcnNl
ckVuYWJsZWQsICp0aGlzKSk7CiAgICAgbV9wbGF5ZXItPmxvYWQodXJsLCBjb250ZW50VHlwZSwg
bV9tZWRpYVNvdXJjZVByb3h5LmdldCgpKTsKICAgICBnZXRDb25maWd1cmF0aW9uKGNvbmZpZ3Vy
YXRpb24pOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29uZmlndXJhdGlvbikpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9j
b2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tCmluZGV4IGI1
MjM4ZTdhY2VkOS4uYmY4NmZiZGU1NDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvY29jb2EvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9jb2NvYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
Q29jb2EubW0KQEAgLTgwLDU1ICs4MCw0MiBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6
OnNldFZpZGVvSW5saW5lU2l6ZUZlbmNlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaQogCiB2
b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxXVEY6Ok1hY2hTZW5kUmlnaHQ+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmICghbV9wbGF5ZXIpIHsKLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdT
Y29wZSBjb21wbGV0aW9uSGFuZGxlclNjb3BlIHsgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IFsmXShhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpu
dWxsb3B0KTsgfSB9OworICAgIGlmICghbV9wbGF5ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICB9
CiAKICAgICBhdXRvIG5hdGl2ZUltYWdlID0gbV9wbGF5ZXItPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKTsKLSAgICBpZiAoIW5hdGl2ZUltYWdlKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURjo6bnVsbG9wdCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKICAgICAgICAgcmV0dXJu
OwotICAgIH0KIAogICAgIGF1dG8gcGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9y
bUltYWdlKCk7Ci0gICAgaWYgKCFwbGF0Zm9ybUltYWdlKSB7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgaWYgKCFwbGF0Zm9ybUltYWdlKQogICAgICAgICBy
ZXR1cm47Ci0gICAgfQogCiAgICAgYXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpj
cmVhdGVGcm9tSW1hZ2UocGxhdGZvcm1JbWFnZS5nZXQoKSk7Ci0gICAgaWYgKCFzdXJmYWNlKSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgaWYgKCFzdXJm
YWNlKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoc3Vy
ZmFjZS0+Y3JlYXRlU2VuZFJpZ2h0KCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyU2NvcGUuY2Fs
bChzdXJmYWNlLT5jcmVhdGVTZW5kUmlnaHQoKSk7CiB9CiAKIHZvaWQgUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFdURjo6TWFjaFNlbmRSaWdodD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0jaWYgIVVTRShBVkZPVU5EQVRJT04pCi0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxs
b3B0KTsKLSNlbHNlCi0gICAgaWYgKCFtX3BsYXllcikgewotICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEY6Om51bGxvcHQpOworICAgIENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNv
bXBsZXRpb25IYW5kbGVyU2NvcGUgeyBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgWyZdKGF1
dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQp
OyB9IH07CisKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQorICAgIGlmICghbV9wbGF5ZXIpCiAgICAg
ICAgIHJldHVybjsKLSAgICB9CiAKICAgICBhdXRvIHBpeGVsQnVmZmVyID0gbV9wbGF5ZXItPnBp
eGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKTsKLSAgICBpZiAoIXBpeGVsQnVmZmVyKSB7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgaWYgKCFwaXhlbEJ1ZmZl
cikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGF1dG8gc3VyZmFjZSA9IFdlYkNvcmU6
OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyLmdldCgpKTsKLSAg
ICBpZiAoIXN1cmZhY2UpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0
KTsKKyAgICBpZiAoIXN1cmZhY2UpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBjb21w
bGV0aW9uSGFuZGxlcihzdXJmYWNlLT5jcmVhdGVTZW5kUmlnaHQoKSk7CisgICAgY29tcGxldGlv
bkhhbmRsZXJTY29wZS5jYWxsKHN1cmZhY2UtPmNyZWF0ZVNlbmRSaWdodCgpKTsKICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNw
cAppbmRleCA0ZmYxYjFmZDIzZjYuLjNmNzM3YzY0NzY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySm9iLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9U
ZXh0UmVzb3VyY2VEZWNvZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Xb3JrZXJTY3JpcHRMb2Fk
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAg
LTE0MiwxOSArMTQzLDE4IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6Ondp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsCiAKIHZvaWQgU2Vydmlj
ZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKKyAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBjb21wbGV0aW9uSGFu
ZGxlclNjb3BlIHsgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFsmXShhdXRvJiYgY29tcGxl
dGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpJZ25vcmUpOyB9
IH07CiAgICAgbV9jZXJ0aWZpY2F0ZUluZm8gPSAqcmVzcG9uc2UuY2VydGlmaWNhdGVJbmZvKCk7
CiAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gMzA0ICYmIG1fY2FjaGVFbnRy
eSkgewogICAgICAgICBsb2FkV2l0aENhY2hlRW50cnkoKm1fY2FjaGVFbnRyeSk7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFBvbGljeUFjdGlvbjo6SWdub3JlKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBhdXRvIGVycm9yID0gcHJvY2Vzc1Jlc3BvbnNlKHJlc3BvbnNlKTsKICAg
ICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CiAgICAgICAgIGZhaWwoV1RGTW92ZShlcnJvcikpOwot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoUG9saWN5QWN0aW9uOjpVc2Up
OworICAgIGNvbXBsZXRpb25IYW5kbGVyU2NvcGUuY2FsbChQb2xpY3lBY3Rpb246OlVzZSk7CiB9
CiAKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyN1cGRhdGUtYWxnb3Jp
dGhtLCBzdGVwcyA5LjcgdG8gOS4xNwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAKaW5kZXggNWJm
Njg3ZjQ5ZjkzLi5jYTViMjM3MWJjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlclNldC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyU2V0LmNwcApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZXMuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgogI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVh
ZENvcGllci5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRz
L0JpbmFyeVNlbWFwaG9yZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTMxMCwyMyArMzEx
LDIyIEBAIHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6OmNvbm5lY3RUb0xvY2FsU3RvcmFnZUFyZWEo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAKKyAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBjb21wbGV0aW9u
SGFuZGxlclNjb3BlIHsgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFsmXShhdXRvJiYgY29t
cGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsgfSB9Owor
CiAgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBtX3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lv
bklEKTsKLSAgICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURjo6bnVsbG9wdCk7CisgICAgaWYgKCFzdG9yYWdlTWFuYWdlcikKICAgICAgICAgcmV0
dXJuOwotICAgIH0KIAogICAgIGF1dG8qIHN0b3JhZ2VBcmVhID0gc3RvcmFnZU1hbmFnZXItPmNy
ZWF0ZUxvY2FsU3RvcmFnZUFyZWEoc3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKG9yaWdpbkRh
dGEpLCBtX3F1ZXVlLmNvcHlSZWYoKSk7Ci0gICAgaWYgKCFzdG9yYWdlQXJlYSkgewotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOworICAgIGlmICghc3RvcmFnZUFyZWEp
CiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBhdXRvIHN0b3JhZ2VBcmVhSUQgPSBzdG9y
YWdlQXJlYS0+aWRlbnRpZmllcigpOwogICAgIGF1dG8gaXRlciA9IG1fc3RvcmFnZUFyZWFzLmFk
ZChzdG9yYWdlQXJlYUlELCBtYWtlV2Vha1B0cihzdG9yYWdlQXJlYSkpLml0ZXJhdG9yOwogICAg
IEFTU0VSVF9VTlVTRUQoaXRlciwgc3RvcmFnZUFyZWEgPT0gaXRlci0+dmFsdWUuZ2V0KCkpOwog
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoc3RvcmFnZUFyZWFJRCk7CisgICAgLy8gRklYTUU6IFdo
eSBpcyBpdCBjb3JyZWN0IHRvIGNhbGwgdGhlIGNvbXBsZXRpb24gaGFuZGxlciBiZWZvcmUgYWRk
aW5nIHRoZSBsaXN0ZW5lcj8KKyAgICBjb21wbGV0aW9uSGFuZGxlclNjb3BlLmNhbGwoc3RvcmFn
ZUFyZWFJRCk7CiAKICAgICBzdG9yYWdlQXJlYS0+YWRkTGlzdGVuZXIoY29ubmVjdGlvbi51bmlx
dWVJRCgpKTsKIH0KQEAgLTMzNSwyMyArMzM1LDIyIEBAIHZvaWQgU3RvcmFnZU1hbmFnZXJTZXQ6
OmNvbm5lY3RUb1RyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEoSVBDOjpDb25uZWN0aW9uJiBjb25u
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKKyAgICBDb21wbGV0aW9uSGFu
ZGxlckNhbGxpbmdTY29wZSBjb21wbGV0aW9uSGFuZGxlclNjb3BlIHsgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIFsmXShhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoV1RGOjpudWxsb3B0KTsgfSB9OworCiAgICAgYXV0byogc3RvcmFnZU1hbmFnZXIgPSBt
X3N0b3JhZ2VNYW5hZ2Vycy5nZXQoc2Vzc2lvbklEKTsKLSAgICBpZiAoIXN0b3JhZ2VNYW5hZ2Vy
KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgaWYgKCFz
dG9yYWdlTWFuYWdlcikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGF1dG8qIHN0b3Jh
Z2VBcmVhID0gc3RvcmFnZU1hbmFnZXItPmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZUFyZWEo
c3RvcmFnZU5hbWVzcGFjZUlELCBXVEZNb3ZlKHRvcExldmVsT3JpZ2luRGF0YSksIFdURk1vdmUo
b3JpZ2luRGF0YSksIG1fcXVldWUuY29weVJlZigpKTsKLSAgICBpZiAoIXN0b3JhZ2VBcmVhKSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCk7CisgICAgaWYgKCFzdG9y
YWdlQXJlYSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGF1dG8gc3RvcmFnZUFyZWFJ
RCA9IHN0b3JhZ2VBcmVhLT5pZGVudGlmaWVyKCk7CiAgICAgYXV0byBpdGVyID0gbV9zdG9yYWdl
QXJlYXMuYWRkKHN0b3JhZ2VBcmVhSUQsIG1ha2VXZWFrUHRyKHN0b3JhZ2VBcmVhKSkuaXRlcmF0
b3I7CiAgICAgQVNTRVJUX1VOVVNFRChpdGVyLCBzdG9yYWdlQXJlYSA9PSBpdGVyLT52YWx1ZS5n
ZXQoKSk7CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlQXJlYUlEKTsKKyAgICAvLyBG
SVhNRTogV2h5IGlzIGl0IGNvcnJlY3QgdG8gY2FsbCB0aGUgY29tcGxldGlvbiBoYW5kbGVyIGJl
Zm9yZSBhZGRpbmcgdGhlIGxpc3RlbmVyPworICAgIGNvbXBsZXRpb25IYW5kbGVyU2NvcGUuY2Fs
bChzdG9yYWdlQXJlYUlEKTsKIAogICAgIHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0
aW9uLnVuaXF1ZUlEKCkpOwogfQpAQCAtMzYwLDIzICszNTksMjIgQEAgdm9pZCBTdG9yYWdlTWFu
YWdlclNldDo6Y29ubmVjdFRvU2Vzc2lvblN0b3JhZ2VBcmVhKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAorICAgIENvbXBs
ZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyU2NvcGUgeyBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgWyZdKGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQpOyB9IH07CisKICAgICBhdXRvKiBzdG9yYWdlTWFu
YWdlciA9IG1fc3RvcmFnZU1hbmFnZXJzLmdldChzZXNzaW9uSUQpOwotICAgIGlmICghc3RvcmFn
ZU1hbmFnZXIpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0KTsKKyAg
ICBpZiAoIXN0b3JhZ2VNYW5hZ2VyKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgYXV0
byogc3RvcmFnZUFyZWEgPSBzdG9yYWdlTWFuYWdlci0+Y3JlYXRlU2Vzc2lvblN0b3JhZ2VBcmVh
KHN0b3JhZ2VOYW1lc3BhY2VJRCwgV1RGTW92ZShvcmlnaW5EYXRhKSwgbV9xdWV1ZS5jb3B5UmVm
KCkpOwotICAgIGlmICghc3RvcmFnZUFyZWEpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGOjpudWxsb3B0KTsKKyAgICBpZiAoIXN0b3JhZ2VBcmVhKQogICAgICAgICByZXR1cm47Ci0g
ICAgfQogCiAgICAgYXV0byBzdG9yYWdlQXJlYUlEID0gc3RvcmFnZUFyZWEtPmlkZW50aWZpZXIo
KTsKICAgICBhdXRvIGl0ZXIgPSBtX3N0b3JhZ2VBcmVhcy5hZGQoc3RvcmFnZUFyZWFJRCwgbWFr
ZVdlYWtQdHIoc3RvcmFnZUFyZWEpKS5pdGVyYXRvcjsKICAgICBBU1NFUlRfVU5VU0VEKGl0ZXIs
IHN0b3JhZ2VBcmVhID09IGl0ZXItPnZhbHVlLmdldCgpKTsKIAotICAgIGNvbXBsZXRpb25IYW5k
bGVyKHN0b3JhZ2VBcmVhSUQpOworICAgIC8vIEZJWE1FOiBXaHkgaXMgaXQgY29ycmVjdCB0byBj
YWxsIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgYmVmb3JlIGFkZGluZyB0aGUgbGlzdGVuZXI/Cisg
ICAgY29tcGxldGlvbkhhbmRsZXJTY29wZS5jYWxsKHN0b3JhZ2VBcmVhSUQpOwogICAgIAogICAg
IHN0b3JhZ2VBcmVhLT5hZGRMaXN0ZW5lcihjb25uZWN0aW9uLnVuaXF1ZUlEKCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCmluZGV4IGRjNjNiZGYxMjAwYy4uYThlN2Iz
OGU3MGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgPHBhbC9jb2NvYS9QYXNz
S2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL1Nj
b3BlLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC01NywyNSArNTgsMjMgQEAgdm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVS
TCYgb3JpZ2luYXRpbmdVUkwKICAgICBhdXRvIHNob3dQYXltZW50VUlSZXF1ZXN0U2VlZCA9IG1f
c2hvd1BheW1lbnRVSVJlcXVlc3RTZWVkOwogICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyk7CiAgICAgW1BBTDo6Z2V0UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyQ2xhc3MoKSByZXF1ZXN0Vmlld0NvbnRyb2xsZXJXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVu
dFJlcXVlc3QuZ2V0KCkgY29tcGxldGlvbjptYWtlQmxvY2tQdHIoW3BheW1lbnRSZXF1ZXN0LCBz
aG93UGF5bWVudFVJUmVxdWVzdFNlZWQsIHdlYWtUaGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXIgKnZpZXdDb250cm9sbGVyLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAg
IENvbXBsZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyU2NvcGUgeyBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgWyZdKGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikg
eyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0gfTsKKwogICAgICAgICBhdXRvIHBheW1lbnRD
b29yZGluYXRvclByb3h5ID0gd2Vha1RoaXMuZ2V0KCk7CiAgICAgICAgIGlmICghcGF5bWVudENv
b3JkaW5hdG9yUHJveHkpCi0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOworICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChlcnJvcikgewogICAgICAg
ICAgICAgTE9HX0VSUk9SKCIrW1BLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBy
ZXF1ZXN0Vmlld0NvbnRyb2xsZXJXaXRoUGF5bWVudFJlcXVlc3Q6Y29tcGxldGlvbjpdIGVycm9y
ICVAIiwgZXJyb3IpOwotCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc2hvd1BheW1lbnRV
SVJlcXVlc3RTZWVkICE9IHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3Nob3dQYXltZW50VUlS
ZXF1ZXN0U2VlZCkgewotICAgICAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBiZWVuIGFza2VkIHRv
IGhpZGUgdGhlIHBheW1lbnQgVUkuIERvbid0IGF0dGVtcHQgdG8gc2hvdyBpdC4KLSAgICAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIH0KKyAgICAgICAg
aWYgKHNob3dQYXltZW50VUlSZXF1ZXN0U2VlZCAhPSBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+
bV9zaG93UGF5bWVudFVJUmVxdWVzdFNlZWQpCisgICAgICAgICAgICByZXR1cm47IC8vIFdlJ3Zl
IGFscmVhZHkgYmVlbiBhc2tlZCB0byBoaWRlIHRoZSBwYXltZW50IFVJLiBEb24ndCBhdHRlbXB0
IHRvIHNob3cgaXQuCiAKICAgICAgICAgTlNXaW5kb3cgKnByZXNlbnRpbmdXaW5kb3cgPSBwYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS0+bV9jbGllbnQucGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGlu
Z1dpbmRvdygqcGF5bWVudENvb3JkaW5hdG9yUHJveHkpOwogICAgICAgICBpZiAoIXByZXNlbnRp
bmdXaW5kb3cpCi0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwor
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIEFTU0VSVCh2aWV3Q29udHJvbGxlcik7CiAK
QEAgLTkwLDcgKzg5LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1TaG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwKIAogICAgICAgICBbcHJl
c2VudGluZ1dpbmRvdyBiZWdpblNoZWV0OnBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3NoZWV0
V2luZG93LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm51bGxwdHJdOwogCi0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHRydWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlclNjb3BlLmNhbGwo
dHJ1ZSk7CiAgICAgfSkuZ2V0KCldOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLRG93bmxvYWRSZWYuY3BwCmluZGV4IGVlYmNjOTJkNzk5YS4uMTcwYjI4YzM3YmZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVm
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldL
RG93bmxvYWRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDx3
dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRU
cmFpdHM8V0tEb3dubG9hZENsaWVudEJhc2U+IHsKQEAgLTEwMSwxNiArMTAyLDE3IEBAIHZvaWQg
V0tEb3dubG9hZFNldENsaWVudChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Rvd25sb2FkQ2xp
ZW50QmFzZSogY2xpZW50KQogCiAgICAgICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdURjo6U3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkFsbG93T3Zlcndy
aXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9u
c2UpIHsKKyAgICAgICAgICAgIGF1dG8gY2FsbENvbXBsZXRpb25IYW5kbGVyID0gbWFrZVNjb3Bl
RXhpdChbJl0gewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxs
b3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKQogICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIEFQSTo6U3RyaW5nKiBkZXN0aW5h
dGlvbiA9IHRvSW1wbChtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSh0b0FQ
SShkb3dubG9hZCksIHRvQVBJKHJlc3BvbnNlKSwgdG9BUEkoc3VnZ2VzdGVkRmlsZW5hbWUuaW1w
bCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSk7Ci0gICAgICAgICAgICBpZiAoIWRlc3Rp
bmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxv
d092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5hdGlvbi0+c3RyaW5n
KCkpOworICAgICAgICAgICAgY2FsbENvbXBsZXRpb25IYW5kbGVyLnJlcGxhY2VBbmRFeGl0KFsm
XSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3
cml0ZTo6Tm8sIGRlc3RpbmF0aW9uLT5zdHJpbmcoKSk7CisgICAgICAgICAgICB9KTsKICAgICAg
ICAgfQogCiAgICAgICAgIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93
bmxvYWQpIG92ZXJyaWRlCkBAIC0xMzQsMTUgKzEzNiwxNiBAQCB2b2lkIFdLRG93bmxvYWRTZXRD
bGllbnQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tEb3dubG9hZENsaWVudEJhc2UqIGNsaWVu
dCkKIAogICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkm
IGRvd25sb2FkLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24pIHsKKyAgICAgICAgICAgIGF1dG8gY2FsbENvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZVNjb3BlRXhpdChbJl0gewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVxdWVzdCkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50
LndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24odG9BUEkoZG93bmxvYWQpLCB0b0FQSShyZXNwb25zZSksIHRvQVBJKHJlcXVlc3Qp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKKyAgICAgICAgICAgIGlmIChtX2NsaWVudC53aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbih0b0FQSShkb3dubG9hZCksIHRvQVBJKHJlc3BvbnNlKSwgdG9BUEkocmVxdWVz
dCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1
ZXN0KSk7CisgICAgICAgICAgICBjYWxsQ29tcGxldGlvbkhhbmRsZXIucmVwbGFjZUFuZEV4aXQo
WyZdIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0KICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tCmluZGV4IGFiZWE4YTBlZWJiOS4uNjZhMmYwZWZjOGFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9h
ZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5t
bQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09i
akNQdHIuaD4KKyNpbXBvcnQgPHd0Zi9TY29wZS5oPgogCiBjbGFzcyBEb3dubG9hZENsaWVudCBm
aW5hbCA6IHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTExMCwxMSAr
MTExLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
Y2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CiAKKyAgICAgICAgICAgIENvbXBs
ZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyU2NvcGUgeyBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgWyZdKGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsgfSB9OworCiAg
ICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uKQotICAgICAgICAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKLSAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgaWYgKCFkZXN0aW5h
dGlvbi5pc0ZpbGVVUkwpIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJL
aXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKICAgICAgICAgICAgICAgICBbTlNFeGNlcHRp
b24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiZGVzdGluYXRpb24g
bXVzdCBiZSBhIGZpbGUgVVJMIl07CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQpAQCAtMTI0LDIwICsxMjYsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2Rvd25sb2FkXSB7CiAgICAgICAgICAgICAgICAgICAgIGRv
d25sb2FkLT5kaWRGYWlsKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWlu
IGNvZGU6TlNVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUgdXNlckluZm86bmlsXSwgeyB9KTsKICAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJL
aXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBh
dGg6ZGVzdGluYXRpb24ucGF0aF0pIHsKICAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2Rvd25sb2FkXSB7CiAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkLT5kaWRG
YWlsKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxF
cnJvckNhbm5vdENyZWF0ZUZpbGUgdXNlckluZm86bmlsXSwgeyB9KTsKICAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3Zl
cndyaXRlOjpObywgeyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIHdyYXBwZXIoZG93bmxvYWQuZ2V0KCkpLnByb2dyZXNzLmZpbGVVUkwg
PSBkZXN0aW5hdGlvbjsKIAotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpB
bGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0aW9uLnBhdGgpOworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXJTY29wZS5jYWxsKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5h
dGlvbi5wYXRoKTsKICAgICAgICAgfSkuZ2V0KCldOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggZDY0NTk1M2Fk
MWE1Li4xYzAzZThjMjUzNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9n
bGliL1J1bkxvb3BTb3VyY2VQcmlvcml0eS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTU1
OCwxMCArNTU5LDEyIEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29u
c3QgU3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUKICAgICAgICAgfQogICAgICAg
ICBzdGFydFBydW5lVGltZXIoKTsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGljb25VUkwgPSBXVEZNb3ZlKGlj
b25VUkwpLCBpY29uRGF0YSA9IFdURk1vdmUoaWNvbkRhdGEpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICAgICAgaWYg
KGljb25VUkwuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBhdXRvIGNhbGxDb21wbGV0aW9uSGFu
ZGxlciA9IG1ha2VTY29wZUV4aXQoWyZdIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihudWxscHRyKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBpZiAoaWNvblVS
TC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2tIb2xkZXIobV9sb2FkZWRJY29uc0xvY2spOwogICAg
ICAgICAgICAgYXV0byBpdCA9IG1fbG9hZGVkSWNvbnMuZmluZChpY29uVVJMKTsKQEAgLTU3MCwy
NCArNTczLDI2IEBAIHZvaWQgSWNvbkRhdGFiYXNlOjpsb2FkSWNvbkZvclBhZ2VVUkwoY29uc3Qg
U3RyaW5nJiBwYWdlVVJMLCBBbGxvd0RhdGFiYXNlV3JpdGUKICAgICAgICAgICAgICAgICBpdC0+
dmFsdWUuc2Vjb25kID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgICAgICAgICAgICAgc3Rh
cnRDbGVhckxvYWRlZEljb25zVGltZXIoKTsKICAgICAgICAgICAgICAgICBsb2NrSG9sZGVyLnVu
bG9ja0Vhcmx5KCk7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShp
Y29uKSk7CisgICAgICAgICAgICAgICAgY2FsbENvbXBsZXRpb25IYW5kbGVyLnJlcGxhY2VBbmRF
eGl0KFsmXSB7CisgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
aWNvbikpOworICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2xvYWRlZEljb25z
LnNldChpY29uVVJMLCBzdGQ6Om1ha2VfcGFpcjxQbGF0Zm9ybUltYWdlUHRyLCBNb25vdG9uaWNU
aW1lPihudWxscHRyLCBNb25vdG9uaWNUaW1lOjpub3coKSkpOwogICAgICAgICAgICAgaWYgKCFp
Y29uRGF0YS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIGltYWdlID0gQml0bWFw
SW1hZ2U6OmNyZWF0ZSgpOwotICAgICAgICAgICAgICAgIGlmIChpbWFnZS0+c2V0RGF0YShTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGljb25EYXRhKSksIHRydWUpIDwgRW5jb2RlZERhdGFT
dGF0dXM6OlNpemVBdmFpbGFibGUpIHsKLSAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobnVsbHB0cik7CisgICAgICAgICAgICAgICAgaWYgKGltYWdlLT5zZXREYXRhKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUoaWNvbkRhdGEpKSwgdHJ1ZSkgPCBFbmNvZGVkRGF0YVN0
YXR1czo6U2l6ZUF2YWlsYWJsZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmZp
cnN0ID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCktPnBsYXRmb3JtSW1hZ2Uo
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYXV0byBpY29uID0gYWRkUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5maXJzdDsKICAgICAgICAgICAgIHN0YXJ0Q2xlYXJMb2FkZWRJY29uc1Rp
bWVyKCk7CiAgICAgICAgICAgICBsb2NrSG9sZGVyLnVubG9ja0Vhcmx5KCk7Ci0gICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGljb24pKTsKKyAgICAgICAgICAgIGNhbGxDb21w
bGV0aW9uSGFuZGxlci5yZXBsYWNlQW5kRXhpdChbJl0geworICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUoaWNvbikpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0p
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
SWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0lj
b25Mb2FkaW5nRGVsZWdhdGUubW0KaW5kZXggOGY5N2RkZjVmM2MwLi41MjkzMjk0ZmY2YmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0ljb25Mb2FkaW5nRGVsZWdh
dGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvSWNvbkxvYWRpbmdEZWxl
Z2F0ZS5tbQpAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCAiX1dLSWNvbkxvYWRpbmdEZWxlZ2F0
ZS5oIgogI2ltcG9ydCAiX1dLTGlua0ljb25QYXJhbWV0ZXJzSW50ZXJuYWwuaCIKICNpbXBvcnQg
PHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9ydCA8d3RmL1Njb3BlLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCkBAIC03MiwyNyArNzMsMjMgQEAgdHlwZWRlZiB2b2lkICheSWNvbkxvYWRDb21wbGV0
aW9uSGFuZGxlcikoTlNEYXRhKik7CiAKIHZvaWQgSWNvbkxvYWRpbmdEZWxlZ2F0ZTo6SWNvbkxv
YWRpbmdDbGllbnQ6OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0lj
b24mIGxpbmtJY29uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoQVBJOjpEYXRhKik+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmICghbV9p
Y29uTG9hZGluZ0RlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdTaG91bGRMb2FkSWNv
bldpdGhQYXJhbWV0ZXJzQ29tcGxldGlvbkhhbmRsZXIpIHsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobnVsbHB0cik7CisgICAgQ29tcGxldGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY29tcGxl
dGlvbkhhbmRsZXJTY29wZSB7IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBbJl0oYXV0byYm
IGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOyB9IH07Cisg
ICAgaWYgKCFtX2ljb25Mb2FkaW5nRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1No
b3VsZExvYWRJY29uV2l0aFBhcmFtZXRlcnNDb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgcmV0
dXJuOwotICAgIH0KIAogICAgIGF1dG8gZGVsZWdhdGUgPSBtX2ljb25Mb2FkaW5nRGVsZWdhdGUu
bV9kZWxlZ2F0ZS5nZXQoKTsKLSAgICBpZiAoIWRlbGVnYXRlKSB7Ci0gICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG51bGxwdHIpOworICAgIGlmICghZGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsK
LSAgICB9CiAKICAgICBSZXRhaW5QdHI8X1dLTGlua0ljb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJz
ID0gYWRvcHROUyhbW19XS0xpbmtJY29uUGFyYW1ldGVycyBhbGxvY10gX2luaXRXaXRoTGlua0lj
b246bGlua0ljb25dKTsKIAotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1faWNvbkxvYWRpbmdEZWxl
Z2F0ZS5tX3dlYlZpZXcgc2hvdWxkTG9hZEljb25XaXRoUGFyYW1ldGVyczpwYXJhbWV0ZXJzLmdl
dCgpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEljb25Mb2FkQ29tcGxldGlvbkhhbmRsZXIgbG9h
ZENvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKKyAgICBbZGVsZWdhdGUgd2ViVmlldzptX2lj
b25Mb2FkaW5nRGVsZWdhdGUubV93ZWJWaWV3IHNob3VsZExvYWRJY29uV2l0aFBhcmFtZXRlcnM6
cGFyYW1ldGVycy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRp
b25IYW5kbGVyU2NvcGUgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyU2NvcGUpXSAoSWNvbkxv
YWRDb21wbGV0aW9uSGFuZGxlciBsb2FkQ29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgewogICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBpZiAobG9hZENvbXBsZXRp
b25IYW5kbGVyKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbbG9hZENvbXBsZXRp
b25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGxvYWRDb21wbGV0aW9uSGFuZGxlcildKEFQSTo6RGF0
YSogZGF0YSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJTY29wZS5jYWxsKFtsb2Fk
Q29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIobG9hZENvbXBsZXRpb25IYW5kbGVyKV0o
QVBJOjpEYXRhKiBkYXRhKSB7CiAgICAgICAgICAgICAgICAgbG9hZENvbXBsZXRpb25IYW5kbGVy
KHdyYXBwZXIoZGF0YSkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgICAgIH0KICAgICB9KS5nZXQo
KV07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbQppbmRleCBlNWRkZmU1NmVlZGIuLjA4NTRiZmYzOGUzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtNzksNiArNzks
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5oPgogI2ltcG9y
dCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBv
cnQgPHd0Zi9TY29wZS5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgogI2ltcG9ydCA8d3RmL2NvY29h
L1ZlY3RvckNvY29hLmg+CiAKQEAgLTEyODksMjAgKzEyOTAsMjAgQEAgc3RhdGljIF9XS1NPQXV0
aG9yaXphdGlvbkxvYWRQb2xpY3kgd2tTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5KFNPQXV0aG9y
aXphdGlvbkwKIAogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lk
ZVBvbGljeUZvclNPQXV0aG9yaXphdGlvbkxvYWQoV2ViUGFnZVByb3h5JiwgU09BdXRob3JpemF0
aW9uTG9hZFBvbGljeSBjdXJyZW50U09BdXRob3JpemF0aW9uTG9hZFBvbGljeSwgY29uc3QgU3Ry
aW5nJiBleHRlbnNpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU09BdXRob3JpemF0aW9uTG9h
ZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgYXV0byBjYWxsQ29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGN1cnJlbnRTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5KTsKKyAgICB9KTsKICAgICBpZiAoIW1f
bmF2aWdhdGlvblN0YXRlKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoY3VycmVu
dFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kpOworICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fbmF2aWdhdGlvblN0YXRlLT5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Rl
Y2lkZVBvbGljeUZvclNPQXV0aG9yaXphdGlvbkxvYWRXaXRoQ3VycmVudFBvbGljeUZvckV4dGVu
c2lvbkNvbXBsZXRpb25IYW5kbGVyKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGN1cnJl
bnRTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5KTsKKyAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRl
LT5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVBvbGljeUZvclNPQXV0
aG9yaXphdGlvbkxvYWRXaXRoQ3VycmVudFBvbGljeUZvckV4dGVuc2lvbkNvbXBsZXRpb25IYW5k
bGVyKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdh
dGUgPSBtX25hdmlnYXRpb25TdGF0ZS0+bV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7Ci0gICAg
aWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY3Vy
cmVudFNPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kpOworICAgIGlmICghbmF2aWdhdGlvbkRlbGVn
YXRlKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCisgICAgY2FsbENvbXBsZXRpb25IYW5kbGVy
LnJlbGVhc2UoKTsKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyOjpjcmVhdGUobmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6
ZGVjaWRlUG9saWN5Rm9yU09BdXRob3JpemF0aW9uTG9hZFdpdGhDdXJyZW50UG9saWN5OmZvckV4
dGVuc2lvbjpjb21wbGV0aW9uSGFuZGxlcjopKTsKICAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxl
Z2F0ZVByaXZhdGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0
ZS0+bV93ZWJWaWV3IGRlY2lkZVBvbGljeUZvclNPQXV0aG9yaXphdGlvbkxvYWRXaXRoQ3VycmVu
dFBvbGljeTp3a1NPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3koY3VycmVudFNPQXV0aG9yaXphdGlv
bkxvYWRQb2xpY3kpIGZvckV4dGVuc2lvbjpleHRlbnNpb24gY29tcGxldGlvbkhhbmRsZXI6bWFr
ZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oX1dLU09BdXRob3JpemF0aW9uTG9hZFBvbGlj
eSBwb2xpY3kpIG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRs
ZXJIYXNCZWVuQ2FsbGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1tCmluZGV4IGMxN2QzOGZhNGRiYy4uOGZm
ODg2MzQwZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YXN0ZWJvYXJkUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9QYXN0ZWJvYXJkSXRlbUluZm8uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1Q
YXN0ZWJvYXJkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2ltcG9ydCA8
d3RmL1Njb3BlLmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAKICNkZWZpbmUgTUVTU0FHRV9DSEVD
Syhhc3NlcnRpb24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sICgmY29ubmVjdGlvbikp
CkBAIC0yMjcsMjAgKzIyOCwyNyBAQCB2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6Z2V0UGFzdGVi
b2FyZEJ1ZmZlckZvclR5cGUoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLAogICAgIE1FU1NB
R0VfQ0hFQ0tfQ09NUExFVElPTihkYXRhT3duZXIsIGNvbXBsZXRpb25IYW5kbGVyKHsgfSkpOwog
CiAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkOjpwZXJmb3JtQXNEYXRhT3duZXIoKmRhdGFPd25lciwg
WyZdIHsKKyAgICAgICAgYXV0byBjYWxsQ29tcGxldGlvbkhhbmRsZXIgPSBtYWtlU2NvcGVFeGl0
KFsmXSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICB9KTsK
KwogICAgICAgICBhdXRvIGJ1ZmZlciA9IFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFt
ZSkuYnVmZmVyRm9yVHlwZShwYXN0ZWJvYXJkVHlwZSk7CiAgICAgICAgIGlmICghYnVmZmVyKQot
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIHVpbnQ2NF90IHNpemUgPSBidWZmZXItPnNpemUoKTsKICAgICAgICAg
aWYgKCFzaXplKQotICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Cisg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1l
bW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoc2l6ZSk7CiAgICAgICAgIGlmICgh
c2hhcmVkTWVtb3J5QnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIG1lbWNweShzaGFyZWRNZW1vcnlC
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIHNpemUpOwogICAgICAgICBTaGFyZWRNZW1v
cnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5QnVmZmVyLT5jcmVh
dGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KSkKLSAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgc2l6
ZSB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYWxsQ29tcGxldGlvbkhhbmRs
ZXIucmVwbGFjZUFuZEV4aXQoWyZdIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBzaXplIH0pOworICAgICAg
ICB9KTsKICAgICB9KTsKIH0KIApAQCAtNTUwLDIwICs1NTgsMjcgQEAgdm9pZCBXZWJQYXN0ZWJv
YXJkUHJveHk6OnJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIHMKICAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oZGF0YU93bmVyLCBjb21wbGV0
aW9uSGFuZGxlcih7IH0pKTsKIAogICAgIFBsYXRmb3JtUGFzdGVib2FyZDo6cGVyZm9ybUFzRGF0
YU93bmVyKCpkYXRhT3duZXIsIFsmXSB7CisgICAgICAgIGF1dG8gY2FsbENvbXBsZXRpb25IYW5k
bGVyID0gbWFrZVNjb3BlRXhpdChbJl0geworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKKyAgICAgICAgfSk7CisKICAgICAgICAgYXV0byBidWZmZXIgPSBQbGF0Zm9ybVBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpLnJlYWRCdWZmZXIoaW5kZXgsIHBhc3RlYm9hcmRUeXBlKTsK
ICAgICAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoeyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdWludDY0X3Qgc2l6ZSA9IGJ1
ZmZlci0+c2l6ZSgpOwogICAgICAgICBpZiAoIXNpemUpCi0gICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgUmVmUHRy
PFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0
ZShzaXplKTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnlCdWZmZXIpCi0gICAgICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgbWVtY3B5KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgc2l6
ZSk7CiAgICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKICAgICAgICAgaWYgKCFz
aGFyZWRNZW1vcnlCdWZmZXItPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJv
dGVjdGlvbjo6UmVhZE9ubHkpKQotICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxl
IHsgV1RGTW92ZShoYW5kbGUpLCBzaXplIH0pOworICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGNhbGxDb21wbGV0aW9uSGFuZGxlci5yZXBsYWNlQW5kRXhpdChbJl0geworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhh
bmRsZSksIHNpemUgfSk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IGE0MTg0M2VhMjAwNy4uN2U5
MzY3NTIwMGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQpAQCAtMTMxLDYgKzEzMSw3IEBACiAjaW1wb3J0IDx3dGYvRmlsZVN5c3RlbS5oPgogI2lt
cG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVn
ZS5oPgorI2ltcG9ydCA8d3RmL1Njb3BlLmg+CiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4K
ICNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NG
Lmg+CkBAIC00MjE3LDMwICs0MjE4LDI1IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRpZFBlcmZvcm1E
cmFnT3BlcmF0aW9uKGJvb2wgaGFuZGxlZCkKIAogdm9pZCBXZWJWaWV3SW1wbDo6d3JpdGVUb1VS
TEZvckZpbGVQcm9taXNlUHJvdmlkZXIoTlNGaWxlUHJvbWlzZVByb3ZpZGVyICpwcm92aWRlciwg
TlNVUkwgKmZpbGVVUkwsIHZvaWQoXmNvbXBsZXRpb25IYW5kbGVyKShOU0Vycm9yICopKQogewot
ICAgIGlkIHVzZXJJbmZvID0gcHJvdmlkZXIudXNlckluZm87Ci0gICAgaWYgKCFbdXNlckluZm8g
aXNLaW5kT2ZDbGFzczpbV0tQcm9taXNlZEF0dGFjaG1lbnRDb250ZXh0IGNsYXNzXV0pIHsKKyAg
ICBhdXRvIGNhbGxDb21wbGV0aW9uSGFuZGxlciA9IG1ha2VTY29wZUV4aXQoWyZdIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIod2ViS2l0VW5rbm93bkVycm9yKCkpOworICAgIH0pOworCisg
ICAgaWQgdXNlckluZm8gPSBwcm92aWRlci51c2VySW5mbzsKKyAgICBpZiAoIVt1c2VySW5mbyBp
c0tpbmRPZkNsYXNzOltXS1Byb21pc2VkQXR0YWNobWVudENvbnRleHQgY2xhc3NdXSkKICAgICAg
ICAgcmV0dXJuOwotICAgIH0KIAogICAgIFdLUHJvbWlzZWRBdHRhY2htZW50Q29udGV4dCAqaW5m
byA9IChXS1Byb21pc2VkQXR0YWNobWVudENvbnRleHQgKil1c2VySW5mbzsKICAgICBhdXRvIGF0
dGFjaG1lbnQgPSBtX3BhZ2UtPmF0dGFjaG1lbnRGb3JJZGVudGlmaWVyKGluZm8uYXR0YWNobWVu
dElkZW50aWZpZXIpOwogICAgIGlmIChOU0ZpbGVXcmFwcGVyICpmaWxlV3JhcHBlciA9IGF0dGFj
aG1lbnQgPyBhdHRhY2htZW50LT5maWxlV3JhcHBlcigpIDogbmlsKSB7CiAgICAgICAgIE5TRXJy
b3IgKmF0dGFjaG1lbnRXcml0aW5nRXJyb3IgPSBuaWw7Ci0gICAgICAgIGlmIChbZmlsZVdyYXBw
ZXIgd3JpdGVUb1VSTDpmaWxlVVJMIG9wdGlvbnM6MCBvcmlnaW5hbENvbnRlbnRzVVJMOm5pbCBl
cnJvcjomYXR0YWNobWVudFdyaXRpbmdFcnJvcl0pCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihuaWwpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihh
dHRhY2htZW50V3JpdGluZ0Vycm9yKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIFVS
TCBibG9iVVJMIHsgaW5mby5ibG9iVVJMIH07Ci0gICAgaWYgKGJsb2JVUkwuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYktpdFVua25vd25FcnJvcigpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAgW2ZpbGVXcmFwcGVyIHdyaXRlVG9VUkw6ZmlsZVVS
TCBvcHRpb25zOjAgb3JpZ2luYWxDb250ZW50c1VSTDpuaWwgZXJyb3I6JmF0dGFjaG1lbnRXcml0
aW5nRXJyb3JdOwogCi0gICAgY29tcGxldGlvbkhhbmRsZXIod2ViS2l0VW5rbm93bkVycm9yKCkp
OworICAgICAgICBjYWxsQ29tcGxldGlvbkhhbmRsZXIucmVwbGFjZUFuZEV4aXQoWyZdIHsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGF0dGFjaG1lbnRXcml0aW5nRXJyb3IpOworICAg
ICAgICB9KTsKKyAgICB9CiB9CiAKIE5TRHJhZ09wZXJhdGlvbiBXZWJWaWV3SW1wbDo6ZHJhZ1Nv
dXJjZU9wZXJhdGlvbk1hc2soTlNEcmFnZ2luZ1Nlc3Npb24gKiwgTlNEcmFnZ2luZ0NvbnRleHQg
Y29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCBkY2Q5MjIx
MDhiYzYuLjNkYjQwOTUzNzlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cApAQCAtNzgyLDkgKzc4Miw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKEZyYW1lCiAgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSKTsKIAogICAgIGF1dG8gY2FsbGJhY2sgPSBbdGhpcywgZnJhbWVJ
RCwgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIHRvcExldmVsRG9jdW1lbnRPcmlnaW4sIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFBlcm1pc3Npb25JbmZv
IHBlcm1pc3Npb25JbmZvKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBjYWxsQ29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlU2NvcGVFeGl0KFsmY29tcGxldGlvbkhhbmRsZXJdIHsKLSAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgeyB9KTsKLSAgICAgICAgfSk7CisgICAgICAgIENvbXBs
ZXRpb25IYW5kbGVyQ2FsbGluZ1Njb3BlIGNvbXBsZXRpb25IYW5kbGVyU2NvcGUgeyBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgWyZdKGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcih7IH0sIHsgfSk7IH0gfTsKIAogICAgICAgICBib29sIG9yaWdpbkhhc1Bl
cnNpc3RlbnRBY2Nlc3M7CiAgICAgICAgIHN3aXRjaCAocGVybWlzc2lvbkluZm8pIHsKQEAgLTgw
NywxMiArODA1LDkgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eTo6ZW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUoRnJhbWUKICAgICAgICAgYXV0byYgcmVx
dWVzdE9yaWdpbiA9IHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLmdldCgpOwogICAgICAgICBhdXRv
JiB0b3BPcmlnaW4gPSB0b3BMZXZlbERvY3VtZW50T3JpZ2luLmdldCgpOwogCi0gICAgICAgIGNh
bGxDb21wbGV0aW9uSGFuZGxlci5yZWxlYXNlKCk7Ci0gICAgICAgIG1fcGFnZS53ZWJzaXRlRGF0
YVN0b3JlKCkuZGV2aWNlSWRIYXNoU2FsdFN0b3JhZ2UoKS5kZXZpY2VJZEhhc2hTYWx0Rm9yT3Jp
Z2luKHJlcXVlc3RPcmlnaW4sIHRvcE9yaWdpbiwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpLCByZXF1ZXN0SUQsIGZyYW1lSUQsIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luID0g
V1RGTW92ZSh1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiksIHRvcExldmVsRG9jdW1lbnRPcmlnaW4g
PSBXVEZNb3ZlKHRvcExldmVsRG9jdW1lbnRPcmlnaW4pLCBvcmlnaW5IYXNQZXJzaXN0ZW50QWNj
ZXNzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShTdHJp
bmcmJiBkZXZpY2VJREhhc2hTYWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8gY2FsbENv
bXBsZXRpb25IYW5kbGVyID0gbWFrZVNjb3BlRXhpdChbJmNvbXBsZXRpb25IYW5kbGVyXSB7Ci0g
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCB7IH0pOwotICAgICAgICAgICAg
fSk7Ci0KKyAgICAgICAgbV9wYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5kZXZpY2VJZEhhc2hTYWx0
U3RvcmFnZSgpLmRldmljZUlkSGFzaFNhbHRGb3JPcmlnaW4ocmVxdWVzdE9yaWdpbiwgdG9wT3Jp
Z2luLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcXVlc3RJRCwgZnJh
bWVJRCwKKyAgICAgICAgICAgIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luID0gV1RGTW92ZSh1c2Vy
TWVkaWFEb2N1bWVudE9yaWdpbiksIHRvcExldmVsRG9jdW1lbnRPcmlnaW4gPSBXVEZNb3ZlKHRv
cExldmVsRG9jdW1lbnRPcmlnaW4pLCBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzLAorICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXJTY29wZSA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXJT
Y29wZSldKFN0cmluZyYmIGRldmljZUlESGFzaFNhbHQpIG11dGFibGUgewogICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcyB8fCAhbV9wZW5kaW5nRGV2aWNlUmVxdWVzdHMucmVtb3ZlKHJlcXVlc3RJ
RCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC04MjMsOSArODE4LDggQEAgdm9pZCBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZW51bWVyYXRlTWVkaWFEZXZp
Y2VzRm9yRnJhbWUoRnJhbWUKIAogICAgICAgICAgICAgYm9vbCByZXZlYWxJZHNBbmRMYWJlbHMg
PSBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzIHx8IHdhc0dyYW50ZWRWaWRlb09yQXVkaW9BY2Nl
c3MoZnJhbWVJRCwgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4uZ2V0KCksIHRvcExldmVsRG9jdW1l
bnRPcmlnaW4uZ2V0KCkpOwogCi0gICAgICAgICAgICBjYWxsQ29tcGxldGlvbkhhbmRsZXIucmVs
ZWFzZSgpOwotICAgICAgICAgICAgY29tcHV0ZUZpbHRlcmVkRGV2aWNlTGlzdChyZXZlYWxJZHNB
bmRMYWJlbHMsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBkZXZpY2VJREhhc2hTYWx0ID0gV1RGTW92ZShkZXZpY2VJREhhc2hTYWx0KV0gKGF1dG8mJiBk
ZXZpY2VzKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkZXZp
Y2VzLCBkZXZpY2VJREhhc2hTYWx0KTsKKyAgICAgICAgICAgIGNvbXB1dGVGaWx0ZXJlZERldmlj
ZUxpc3QocmV2ZWFsSWRzQW5kTGFiZWxzLCBbY29tcGxldGlvbkhhbmRsZXJTY29wZSA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXJTY29wZSksIGRldmljZUlESGFzaFNhbHQgPSBXVEZNb3ZlKGRl
dmljZUlESGFzaFNhbHQpXSAoYXV0byYmIGRldmljZXMpIG11dGFibGUgeworICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyU2NvcGUuY2FsbChkZXZpY2VzLCBkZXZpY2VJREhhc2hTYWx0
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGlj
YXRpb25QYW5lbENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0KaW5kZXggYTA4OTRh
MjBmOTFmLi43MzQ3ZDI0YTZhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2Vi
QXV0aGVudGljYXRpb25QYW5lbENsaWVudC5tbQpAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCAi
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAj
aW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL1Njb3BlLmg+CiAKICNpbXBvcnQg
IkxvY2FsQXV0aGVudGljYXRpb25Tb2Z0TGluay5oIgogCkBAIC0xNTQsMjIgKzE1NSwyMyBAQCB2
b2lkIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxDbGllbnQ6OnNlbGVjdEFzc2VydGlvblJlc3BvbnNl
KFZlY3RvcjxSZWY8V2ViQ29yZTo6QQogewogICAgIEFTU0VSVCghcmVzcG9uc2VzLmlzRW1wdHko
KSk7CiAKLSAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLnBhbmVsU2VsZWN0QXNzZXJ0aW9uUmVz
cG9uc2VTb3VyY2VDb21wbGV0aW9uSGFuZGxlcikgeworICAgIGF1dG8gY2FsbENvbXBsZXRpb25I
YW5kbGVyID0gbWFrZVNjb3BlRXhpdChbJl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihu
dWxscHRyKTsKKyAgICB9KTsKKworICAgIGlmICghbV9kZWxlZ2F0ZU1ldGhvZHMucGFuZWxTZWxl
Y3RBc3NlcnRpb25SZXNwb25zZVNvdXJjZUNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICByZXR1
cm47Ci0gICAgfQogCiAgICAgYXV0byBkZWxlZ2F0ZSA9IG1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAg
aWYgKCFkZWxlZ2F0ZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAg
ICBpZiAoIWRlbGVnYXRlKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgVmVjdG9yPFJl
ZlB0cjxBUEk6Ok9iamVjdD4+IGFwaVJlc3BvbnNlczsKICAgICBhcGlSZXNwb25zZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShyZXNwb25zZXMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8mIHJlc3Bv
bnNlIDogcmVzcG9uc2VzKQogICAgICAgICBhcGlSZXNwb25zZXMudW5jaGVja2VkQXBwZW5kKEFQ
STo6V2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKHJlc3BvbnNlLmNv
cHlSZWYoKSkpOwogCisgICAgY2FsbENvbXBsZXRpb25IYW5kbGVyLnJlbGVhc2UoKTsKICAgICBh
dXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdh
dGUuZ2V0KCksIEBzZWxlY3RvcihwYW5lbDpzZWxlY3RBc3NlcnRpb25SZXNwb25zZTpzb3VyY2U6
Y29tcGxldGlvbkhhbmRsZXI6KSk7CiAgICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgc2VsZWN0
QXNzZXJ0aW9uUmVzcG9uc2U6d3JhcHBlcihBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShhcGlS
ZXNwb25zZXMpKSkgc291cmNlOndrV2ViQXV0aGVudGljYXRpb25Tb3VyY2Uoc291cmNlKSBjb21w
bGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShfV0tXZWJBdXRo
ZW50aWNhdGlvbkFzc2VydGlvblJlc3BvbnNlICpyZXNwb25zZSkgbXV0YWJsZSB7CiAgICAgICAg
IGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKQEAgLTIyMCwx
NyArMjIyLDE4IEBAIHZvaWQgV2ViQXV0aGVudGljYXRpb25QYW5lbENsaWVudDo6ZGVjaWRlUG9s
aWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yKENvbXBsZXRpb25ICiAKIHZvaWQgV2ViQXV0aGVudGlj
YXRpb25QYW5lbENsaWVudDo6cmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb24oQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX2RlbGVnYXRlTWV0aG9kcy5wYW5lbFJlcXVlc3RMQUNvbnRleHRG
b3JVc2VyVmVyaWZpY2F0aW9uQ29tcGxldGlvbkhhbmRsZXIpIHsKKyAgICBhdXRvIGNhbGxDb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VTY29wZUV4aXQoWyZdIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobnVsbHB0cik7CisgICAgfSk7CisKKyAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLnBh
bmVsUmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb25Db21wbGV0aW9uSGFuZGxlcikK
ICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGF1dG8gZGVsZWdhdGUgPSBtX2RlbGVnYXRl
LmdldCgpOwotICAgIGlmICghZGVsZWdhdGUpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bnVsbHB0cik7CisgICAgaWYgKCFkZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAor
ICAgIGNhbGxDb21wbGV0aW9uSGFuZGxlci5yZWxlYXNlKCk7CiAgICAgYXV0byBjaGVja2VyID0g
Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2Vs
ZWN0b3IocGFuZWw6cmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb25XaXRoQ29tcGxl
dGlvbkhhbmRsZXI6KSk7CiAgICAgW2RlbGVnYXRlIHBhbmVsOm1fcGFuZWwgcmVxdWVzdExBQ29u
dGV4dEZvclVzZXJWZXJpZmljYXRpb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRy
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2Vy
ID0gV1RGTW92ZShjaGVja2VyKV0oTEFDb250ZXh0ICpjb250ZXh0KSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KaW5kZXggOGNmYzE3N2YwNmY1Li5jOWViYTMwYzBmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpA
QCAtMTM1LDYgKzEzNSw3IEBACiAjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgorI2ltcG9ydCA8d3Rm
L1Njb3BlLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KICNpbXBvcnQgPHd0Zi9jb2Nv
YS9OU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CkBAIC00
NDg3LDMxICs0NDg4LDMyIEBAIHN0YXRpYyB2b2lkIHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2go
V0tDb250ZW50VmlldyAqdmlldywgY29uc3QgV2ViQ29yZTo6SW50UG9pCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSNpZiBVU0UoVUlLSVRfS0VZQk9BUkRfQURESVRJT05TKQotICAgIGlmIChb
c2VsZiBfZGlzYWJsZUF1dG9tYXRpY0tleWJvYXJkVUldKSB7CisgICAgYXV0byBjYWxsQ29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdLQXV0b2NvcnJlY3Rpb25Db250ZXh0LmVtcHR5QXV0b2NvcnJlY3Rpb25Db250ZXh0KTsK
KyAgICB9KTsKKworI2lmIFVTRShVSUtJVF9LRVlCT0FSRF9BRERJVElPTlMpCisgICAgaWYgKFtz
ZWxmIF9kaXNhYmxlQXV0b21hdGljS2V5Ym9hcmRVSV0pCiAgICAgICAgIHJldHVybjsKLSAgICB9
CiAjZW5kaWYKIAotICAgIGlmICghX3BhZ2UtPmhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV0tBdXRvY29ycmVjdGlvbkNvbnRleHQuZW1wdHlBdXRvY29y
cmVjdGlvbkNvbnRleHQpOworICAgIGlmICghX3BhZ2UtPmhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBpZiAoX2RvbVBhc3RlUmVxdWVzdEhhbmRsZXIp
IHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0IGF1
dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhXZWJDb250ZXh0Ol9sYXN0QXV0b2NvcnJlY3Rpb25Db250
ZXh0XSk7CisgICAgICAgIGNhbGxDb21wbGV0aW9uSGFuZGxlci5yZXBsYWNlQW5kRXhpdChbJl0g
eworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW1dLQXV0b2NvcnJlY3Rpb25Db250ZXh0
IGF1dG9jb3JyZWN0aW9uQ29udGV4dFdpdGhXZWJDb250ZXh0Ol9sYXN0QXV0b2NvcnJlY3Rpb25D
b250ZXh0XSk7CisgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8g
RklYTUU6IFJlbW92ZSB0aGUgc3luY2hyb25vdXMgY2FsbCB3aGVuIDxyZGFyOi8vcHJvYmxlbS8x
NjIwNzAwMj4gaXMgZml4ZWQuCiAgICAgY29uc3QgYm9vbCB1c2VTeW5jUmVxdWVzdCA9IHRydWU7
CiAKLSAgICBpZiAodXNlU3luY1JlcXVlc3QgJiYgX3BlbmRpbmdBdXRvY29ycmVjdGlvbkNvbnRl
eHRIYW5kbGVyKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLQXV0b2NvcnJlY3Rpb25D
b250ZXh0LmVtcHR5QXV0b2NvcnJlY3Rpb25Db250ZXh0KTsKKyAgICBpZiAodXNlU3luY1JlcXVl
c3QgJiYgX3BlbmRpbmdBdXRvY29ycmVjdGlvbkNvbnRleHRIYW5kbGVyKQogICAgICAgICByZXR1
cm47Ci0gICAgfQogCisgICAgY2FsbENvbXBsZXRpb25IYW5kbGVyLnJlbGVhc2UoKTsKICAgICBf
cGVuZGluZ0F1dG9jb3JyZWN0aW9uQ29udGV4dEhhbmRsZXIgPSBjb21wbGV0aW9uSGFuZGxlcjsK
ICAgICBfcGFnZS0+cmVxdWVzdEF1dG9jb3JyZWN0aW9uQ29udGV4dCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IGIyZWZjOGZmOGQzYi4uZTc5YTZhOWUxY2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtNTksNiArNTksNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvSFRNTFNlbGVjdEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pT
RWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyRWxlbWVudC5oPgorI2luY2x1ZGUg
PHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKICNpZiBFTkFCTEUoREFUQUxJ
U1RfRUxFTUVOVCkKQEAgLTQyMiwzMiArNDIzLDI1IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChXZWJDb3JlOjpQYWdlSWRlbnRp
CiAgICAgfQogCiAgICAgU3RyaW5nIGZyYW1lTm90Rm91bmRFcnJvclR5cGUgPSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVj
dG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdlOjpGcmFtZU5vdEZvdW5kKTsK
KyAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBjb21wbGV0aW9uSGFuZGxlclNjb3Bl
IHsgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFsmXShhdXRvJiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVycm9yVHlwZSwgV1RGOjpudWxs
b3B0KTsgfSB9OwogCiAgICAgYXV0byogZnJhbWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViRnJhbWUoKmZyYW1lSUQpIDogJnBhZ2UtPm1haW5XZWJGcmFtZSgpOwotICAg
IGlmICghZnJhbWUpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RGb3VuZEVy
cm9yVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47
Ci0gICAgfQogCiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9IGZyYW1lLT5jb3JlRnJh
bWUoKTsKLSAgICBpZiAoIWNvcmVGcmFtZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihm
cmFtZU5vdEZvdW5kRXJyb3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgIGlmICghY29yZUZyYW1l
KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVDaGls
ZEZyYW1lID0gY29yZUZyYW1lLT50cmVlKCkuc2NvcGVkQ2hpbGQob3JkaW5hbCk7Ci0gICAgaWYg
KCFjb3JlQ2hpbGRGcmFtZSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZv
dW5kRXJyb3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgIGlmICghY29yZUNoaWxkRnJhbWUpCiAg
ICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBXZWJGcmFtZSogY2hpbGRGcmFtZSA9IFdlYkZy
YW1lOjpmcm9tQ29yZUZyYW1lKCpjb3JlQ2hpbGRGcmFtZSk7Ci0gICAgaWYgKCFjaGlsZEZyYW1l
KSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdU
Rjo6bnVsbG9wdCk7CisgICAgaWYgKCFjaGlsZEZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAg
fQogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBjaGlsZEZyYW1lLT5mcmFt
ZUlEKCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVyU2NvcGUuY2FsbChXVEY6Om51bGxvcHQsIGNo
aWxkRnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgY29u
c3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0
cmluZz4sIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpAQCAtNDgwLDI0ICs0NzQsMjQgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFdlYkNvcmU6OlBhZ2VJZGUKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghaXM8V2ViQ29yZTo6SFRNTEZyYW1lRWxl
bWVudEJhc2U+KGNvcmVFbGVtZW50KSkgeworICAgIGF1dG8gY2FsbENvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZVNjb3BlRXhpdChbJl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmcmFtZU5v
dEZvdW5kRXJyb3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgIH0pOworCisgICAgaWYgKCFpczxX
ZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZT4oY29yZUVsZW1lbnQpKQogICAgICAgICByZXR1
cm47Ci0gICAgfQogCiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZUZyb21FbGVtZW50ID0g
ZG93bmNhc3Q8V2ViQ29yZTo6SFRNTEZyYW1lRWxlbWVudEJhc2U+KCpjb3JlRWxlbWVudCkuY29u
dGVudEZyYW1lKCk7Ci0gICAgaWYgKCFjb3JlRnJhbWVGcm9tRWxlbWVudCkgewotICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCBXVEY6Om51bGxvcHQpOwor
ICAgIGlmICghY29yZUZyYW1lRnJvbUVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAK
ICAgICBXZWJGcmFtZSogZnJhbWVGcm9tRWxlbWVudCA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1l
KCpjb3JlRnJhbWVGcm9tRWxlbWVudCk7Ci0gICAgaWYgKCFmcmFtZUZyb21FbGVtZW50KSB7Ci0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVs
bG9wdCk7CisgICAgaWYgKCFmcmFtZUZyb21FbGVtZW50KQogICAgICAgICByZXR1cm47Ci0gICAg
fQogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBmcmFtZUZyb21FbGVtZW50
LT5mcmFtZUlEKCkpOworICAgIGNhbGxDb21wbGV0aW9uSGFuZGxlci5yZXBsYWNlQW5kRXhpdChb
Jl0geworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGZyYW1lRnJvbUVs
ZW1lbnQtPmZyYW1lSUQoKSk7CisgICAgfSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4s
IE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQpAQCAtNTExLDMxICs1MDUsMjkgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpy
ZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWUKIAogICAgIFN0
cmluZyBmcmFtZU5vdEZvdW5kRXJyb3JUeXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OkVycm9yTWVzc2FnZTo6RnJhbWVOb3RGb3VuZCk7CiAKLSAgICBhdXRvKiBmcmFt
ZSA9IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZSgqZnJhbWVJRCkg
OiAmcGFnZS0+bWFpbldlYkZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkgeworICAgIGF1dG8gY2Fs
bENvbXBsZXRpb25IYW5kbGVyID0gbWFrZVNjb3BlRXhpdChbJl0gewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihmcmFtZU5vdEZvdW5kRXJyb3JUeXBlLCBXVEY6Om51bGxvcHQpOworICAgIH0p
OworCisgICAgYXV0byogZnJhbWUgPSBmcmFtZUlEID8gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViRnJhbWUoKmZyYW1lSUQpIDogJnBhZ2UtPm1haW5XZWJGcmFtZSgpOworICAgIGlmICghZnJh
bWUpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBXZWJDb3JlOjpGcmFtZSogY29yZUZy
YW1lID0gZnJhbWUtPmNvcmVGcmFtZSgpOwotICAgIGlmICghY29yZUZyYW1lKSB7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVsbG9wdCk7
CisgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBXZWJD
b3JlOjpGcmFtZSogY29yZUNoaWxkRnJhbWUgPSBjb3JlRnJhbWUtPnRyZWUoKS5zY29wZWRDaGls
ZChuYW1lKTsKLSAgICBpZiAoIWNvcmVDaGlsZEZyYW1lKSB7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZyYW1lTm90Rm91bmRFcnJvclR5cGUsIFdURjo6bnVsbG9wdCk7CisgICAgaWYgKCFj
b3JlQ2hpbGRGcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIFdlYkZyYW1lKiBj
aGlsZEZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmNvcmVDaGlsZEZyYW1lKTsKLSAg
ICBpZiAoIWNoaWxkRnJhbWUpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJhbWVOb3RG
b3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICBpZiAoIWNoaWxkRnJhbWUpCiAgICAg
ICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQs
IGNoaWxkRnJhbWUtPmZyYW1lSUQoKSk7CisgICAgY2FsbENvbXBsZXRpb25IYW5kbGVyLnJlcGxh
Y2VBbmRFeGl0KFsmXSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwg
Y2hpbGRGcmFtZS0+ZnJhbWVJRCgpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpyZXNvbHZlUGFyZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC01NDksMTkgKzU0MSwyMSBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQYXJlbnRGcmFtZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSQogCiAgICAgU3RyaW5nIGZyYW1lTm90Rm91bmRFcnJv
clR5cGUgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uSGVscGVyczo6Z2V0RW51bUNv
bnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6RXJyb3JNZXNzYWdl
OjpGcmFtZU5vdEZvdW5kKTsKIAotICAgIGF1dG8qIGZyYW1lID0gZnJhbWVJRCA/IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKCpmcmFtZUlEKSA6ICZwYWdlLT5tYWluV2ViRnJhbWUo
KTsKLSAgICBpZiAoIWZyYW1lKSB7CisgICAgYXV0byBjYWxsQ29tcGxldGlvbkhhbmRsZXIgPSBt
YWtlU2NvcGVFeGl0KFsmXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZyYW1lTm90Rm91
bmRFcnJvclR5cGUsIFdURjo6bnVsbG9wdCk7CisgICAgfSk7CisKKyAgICBhdXRvKiBmcmFtZSA9
IGZyYW1lSUQgPyBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZSgqZnJhbWVJRCkgOiAm
cGFnZS0+bWFpbldlYkZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KIAogICAgIFdlYkZyYW1lKiBwYXJlbnRGcmFtZSA9IGZyYW1lLT5wYXJlbnRGcmFtZSgp
OwotICAgIGlmICghcGFyZW50RnJhbWUpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZnJh
bWVOb3RGb3VuZEVycm9yVHlwZSwgV1RGOjpudWxsb3B0KTsKKyAgICBpZiAoIXBhcmVudEZyYW1l
KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpu
dWxsb3B0LCBwYXJlbnRGcmFtZS0+ZnJhbWVJRCgpKTsKKyAgICBjYWxsQ29tcGxldGlvbkhhbmRs
ZXIucmVwbGFjZUFuZEV4aXQoWyZdIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpu
dWxsb3B0LCBwYXJlbnRGcmFtZS0+ZnJhbWVJRCgpKTsKKyAgICB9KTsKIH0KIAogc3RhdGljIFdl
YkNvcmU6OkVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnRGb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1l
bnQmIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5jcHAKaW5kZXggYmZmODA0YjM4ODVhLi4xMWMwNzU1MjQyMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTQ2LDYg
KzQ2LDcgQEAKICNpbmNsdWRlICJXZWJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9TY29wZS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwpAQCAtMTM4LDI0ICsxMzksMjYgQEAgYm9vbCBQbHVnaW5Qcm94eTo6aW5pdGlh
bGl6ZVN5bmNocm9ub3VzbHkoKQogCiB2b2lkIFBsdWdpblByb3h5OjpkaWRDcmVhdGVQbHVnaW4o
Ym9vbCB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCByZW1vdGVMYXllckNsaWVudElELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgQ29tcGxl
dGlvbkhhbmRsZXJDYWxsaW5nU2NvcGUgY29tcGxldGlvbkhhbmRsZXJTY29wZSB7IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpIH07CisKICAgICAvLyBXZSBtaWdodCBoYXZlIHRyaWVkIHRvIGNy
ZWF0ZSB0aGUgcGx1Zy1pbiBzeWNocm9ub3VzbHkgd2hpbGUgd2FpdGluZyBvbiB0aGUgYXN5bmNo
cm9ub3VzIHJlcGx5LAogICAgIC8vIGluIHdoaWNoIGNhc2Ugd2Ugc2hvdWxkIGlnbm9yZSB0aGlz
IG1lc3NhZ2UuCiAgICAgaWYgKCFtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9u
KQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuOwog
CiAgICAgZGlkQ3JlYXRlUGx1Z2luSW50ZXJuYWwod2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5
ZXJDbGllbnRJRCk7Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAogdm9pZCBQbHVnaW5Q
cm94eTo6ZGlkRmFpbFRvQ3JlYXRlUGx1Z2luKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBDb21wbGV0aW9uSGFuZGxlckNhbGxpbmdTY29wZSBj
b21wbGV0aW9uSGFuZGxlclNjb3BlIHsgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikgfTsKKwog
ICAgIC8vIFdlIG1pZ2h0IGhhdmUgdHJpZWQgdG8gY3JlYXRlIHRoZSBwbHVnLWluIHN5Y2hyb25v
dXNseSB3aGlsZSB3YWl0aW5nIG9uIHRoZSBhc3luY2hyb25vdXMgcmVwbHksCiAgICAgLy8gaW4g
d2hpY2ggY2FzZSB3ZSBzaG91bGQgaWdub3JlIHRoaXMgbWVzc2FnZS4KICAgICBpZiAoIW1fd2Fp
dGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pCi0gICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CiAKICAgICBkaWRGYWlsVG9DcmVhdGVQbHVn
aW5JbnRlcm5hbCgpOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKIHZvaWQgUGx1Z2lu
UHJveHk6OmRpZENyZWF0ZVBsdWdpbkludGVybmFsKGJvb2wgd2FudHNXaGVlbEV2ZW50cywgdWlu
dDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJRCkKQEAgLTY1MSwxNCArNjU0LDE2IEBAIHZvaWQgUGx1
Z2luUHJveHk6OmV2YWx1YXRlKGNvbnN0IE5QVmFyaWFudERhdGEmIG5wT2JqZWN0QXNWYXJpYW50
RGF0YSwgY29uc3QgU3RyCiB7CiAgICAgUGx1Z2luQ29udHJvbGxlcjo6UGx1Z2luRGVzdHJ1Y3Rp
b25Qcm90ZWN0b3IgcHJvdGVjdG9yKGNvbnRyb2xsZXIoKSk7CiAKKyAgICBDb21wbGV0aW9uSGFu
ZGxlckNhbGxpbmdTY29wZSBjb21wbGV0aW9uSGFuZGxlclNjb3BlIHsgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIFtdKGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSwgeyB9KTsgfSB9OworCiAgICAgTlBWYXJpYW50IG5wT2JqZWN0QXNWYXJpYW50
ID0gbV9jb25uZWN0aW9uLT5ucFJlbW90ZU9iamVjdE1hcCgpLT5ucFZhcmlhbnREYXRhVG9OUFZh
cmlhbnQobnBPYmplY3RBc1ZhcmlhbnREYXRhLCB0aGlzKTsKICAgICBpZiAoIU5QVkFSSUFOVF9J
U19PQkpFQ1QobnBPYmplY3RBc1ZhcmlhbnQpIHx8ICEoTlBWQVJJQU5UX1RPX09CSkVDVChucE9i
amVjdEFzVmFyaWFudCkpKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2Us
IHsgfSk7CisgICAgICAgIHJldHVybjsKIAogICAgIE5QVmFyaWFudCByZXN1bHQ7CiAgICAgYm9v
bCByZXR1cm5WYWx1ZSA9IGNvbnRyb2xsZXIoKS0+ZXZhbHVhdGUoTlBWQVJJQU5UX1RPX09CSkVD
VChucE9iamVjdEFzVmFyaWFudCksIHNjcmlwdFN0cmluZywgJnJlc3VsdCwgYWxsb3dQb3B1cHMp
OwogICAgIGlmICghcmV0dXJuVmFsdWUpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQ29udmVydCB0aGUgTlBW
YXJpYW50IHRvIGFuIE5QVmFyaWFudERhdGEuCiAgICAgTlBWYXJpYW50RGF0YSByZXN1bHREYXRh
ID0gbV9jb25uZWN0aW9uLT5ucFJlbW90ZU9iamVjdE1hcCgpLT5ucFZhcmlhbnRUb05QVmFyaWFu
dERhdGEocmVzdWx0LCB0aGlzKTsKQEAgLTY2Niw4ICs2NzEsOCBAQCB2b2lkIFBsdWdpblByb3h5
OjpldmFsdWF0ZShjb25zdCBOUFZhcmlhbnREYXRhJiBucE9iamVjdEFzVmFyaWFudERhdGEsIGNv
bnN0IFN0cgogICAgIC8vIEFuZCByZWxlYXNlIHRoZSByZXN1bHQuCiAgICAgcmVsZWFzZU5QVmFy
aWFudFZhbHVlKCZyZXN1bHQpOwogICAgIHJlbGVhc2VOUFZhcmlhbnRWYWx1ZSgmbnBPYmplY3RB
c1ZhcmlhbnQpOwotICAgIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKHJldHVyblZhbHVlLCBXVEZN
b3ZlKHJlc3VsdERhdGEpKTsKKworICAgIGNvbXBsZXRpb25IYW5kbGVyU2NvcGUuY2FsbChyZXR1
cm5WYWx1ZSwgV1RGTW92ZShyZXN1bHREYXRhKSk7CiB9CiAKIHZvaWQgUGx1Z2luUHJveHk6OnNl
dFBsdWdpbklzUGxheWluZ0F1ZGlvKGJvb2wgcGx1Z2luSXNQbGF5aW5nQXVkaW8pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAzNGNhZTlhZDU2MWIuLjFlOTdjZmM2N2RlNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMDY1LDI3ICsxMDY1LDI3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChS
ZWY8Rm9ybVN0YXRlPiYmIGZvcm1TdGF0CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoV2lsbFN1Ym1pdEZvcm0oRm9ybVN0YXRlJiBmb3JtU3RhdGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBDb21wbGV0aW9uSGFuZGxl
ckNhbGxpbmdTY29wZSBjYWxsQ29tcGxldGlvbkhhbmRsZXIgeyBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSB9OworCiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAg
ICBpZiAoIXdlYlBhZ2UpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICBpZiAo
IXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBhdXRvJiBmb3JtID0gZm9y
bVN0YXRlLmZvcm0oKTsKIAogICAgIGF1dG8qIHNvdXJjZUNvcmVGcmFtZSA9IGZvcm1TdGF0ZS5z
b3VyY2VEb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFzb3VyY2VDb3JlRnJhbWUpCi0gICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CiAgICAgYXV0
byogc291cmNlRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqc291cmNlQ29yZUZyYW1l
KTsKICAgICBpZiAoIXNvdXJjZUZyYW1lKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoKTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgdmFsdWVzID0gZm9ybVN0YXRlLnRl
eHRGaWVsZFZhbHVlcygpOwogCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKICAg
ICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoKS53aWxsU3VibWl0Rm9ybSh3ZWJQ
YWdlLCAmZm9ybSwgbV9mcmFtZS5wdHIoKSwgc291cmNlRnJhbWUsIHZhbHVlcywgdXNlckRhdGEp
OwogCi0gICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwV2lsbFN1Ym1pdEZv
cm1MaXN0ZW5lcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgdWludDY0X3QgbGlz
dGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwV2lsbFN1Ym1pdEZvcm1MaXN0ZW5lcihjYWxsQ29tcGxl
dGlvbkhhbmRsZXIucmVsZWFzZSgpKTsKIAogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6V2lsbFN1Ym1pdEZvcm0obV9mcmFtZS0+ZnJhbWVJRCgpLCBzb3VyY2VGcmFt
ZS0+ZnJhbWVJRCgpLCB2YWx1ZXMsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgp
KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViUGFnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViUGFnZUNvY29hLm1tCmluZGV4IDNkMjFlM2RkMGM4Ni4uMGUwM2RkY2MyMWJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFn
ZUNvY29hLm1tCkBAIC01Myw2ICs1Myw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1JhbmdlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1JlbmRlckVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEl0
ZXJhdG9yLmg+CisjaW1wb3J0IDx3dGYvU2NvcGUuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNp
bXBvcnQgPFdlYkNvcmUvUGFyZW50YWxDb250cm9sc0NvbnRlbnRGaWx0ZXIuaD4KQEAgLTQyMCwy
MyArNDIxLDI5IEBAIHZvaWQgV2ViUGFnZTo6Y29uc3VtZU5ldHdvcmtFeHRlbnNpb25TYW5kYm94
RXh0ZW5zaW9ucyhjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpICiAKIHZvaWQgV2ViUGFnZTo6Z2V0
UERGRmlyc3RQYWdlU2l6ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpGbG9hdFNpemUpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogeworICAgIGF1dG8gY2FsbENvbXBsZXRpb25IYW5kbGVyID0gbWFrZVNjb3BlRXhpdChbJl0g
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgIH0pOworCiAgICAgYXV0byog
d2ViRnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAg
ICBpZiAoIXdlYkZyYW1lKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
KyAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byogY29yZUZyYW1lID0gd2ViRnJhbWUtPmNvcmVG
cmFtZSgpOwogICAgIGlmICghY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byogcGx1Z2luVmlldyA9IHBs
dWdpblZpZXdGb3JGcmFtZShjb3JlRnJhbWUpOwogICAgIGlmICghcGx1Z2luVmlldykKLSAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKICAgICAK
ICAgICBhdXRvKiBwbHVnaW4gPSBwbHVnaW5WaWV3LT5wbHVnaW4oKTsKICAgICBpZiAoIXBsdWdp
bikKLSAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVy
bjsKIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKEZsb2F0U2l6ZShwbHVnaW4tPnBkZkRvY3VtZW50
U2l6ZUZvclByaW50aW5nKCkpKTsKKyAgICBjYWxsQ29tcGxldGlvbkhhbmRsZXIucmVwbGFjZUFu
ZEV4aXQoWyZdIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoRmxvYXRTaXplKHBsdWdpbi0+
cGRmRG9jdW1lbnRTaXplRm9yUHJpbnRpbmcoKSkpOworICAgIH0pOwogfQogCiAjaWYgRU5BQkxF
KFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCAxNGIxMDljOWQwNTguLmFhNmYxMTRlZjQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTI1OCw2ICsyNTgsNyBAQAogI2luY2x1ZGUg
PHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvU2V0
Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTcxNjQs
MjQgKzcxNjUsMjQgQEAgdm9pZCBjb21wbGV0ZVRleHRNYW5pcHVsYXRpb24oY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjoKIHZvaWQgV2ViUGFnZTo6Y29t
cGxldGVUZXh0TWFuaXB1bGF0aW9uKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbT4mIGl0ZW1zLAogICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCBhbGxGYWlsZWQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uRmFpbHVyZT4mKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKLSAgICBpZiAoIW1fcGFnZSkgeworICAgIGF1dG8gY2FsbENvbXBsZXRpb25I
YW5kbGVyID0gbWFrZVNjb3BlRXhpdChbJl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0
cnVlLCB7IH0pOworICAgIH0pOworCisgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsK
LSAgICB9CiAKICAgICBhdXRvIG1haW5Eb2N1bWVudCA9IG1ha2VSZWZQdHIobV9wYWdlLT5tYWlu
RnJhbWUoKS5kb2N1bWVudCgpKTsKLSAgICBpZiAoIW1haW5Eb2N1bWVudCkgewotICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih0cnVlLCB7IH0pOworICAgIGlmICghbWFpbkRvY3VtZW50KQogICAg
ICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgYXV0byogY29udHJvbGxlciA9IG1haW5Eb2N1bWVu
dC0+dGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXJJZkV4aXN0cygpOwotICAgIGlmICghY29udHJv
bGxlcikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlLCB7IH0pOworICAgIGlmICgh
Y29udHJvbGxlcikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlLCBjb250cm9sbGVyLT5jb21wbGV0ZU1hbmlwdWxhdGlvbihpdGVtcykpOworICAg
IGNhbGxDb21wbGV0aW9uSGFuZGxlci5yZXBsYWNlQW5kRXhpdChbJl0geworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSwgY29udHJvbGxlci0+Y29tcGxldGVNYW5pcHVsYXRpb24oaXRl
bXMpKTsKKyAgICB9KTsKIH0KIAogUEFMOjpTZXNzaW9uSUQgV2ViUGFnZTo6c2Vzc2lvbklEKCkg
Y29uc3QKQEAgLTczNzksMTEgKzczODAsMTMgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0SW1hZ2VF
eHRyYWN0aW9uKFdlYkNvcmU6OkVsZW1lbnQmIGVsZW1lbnQsIENvbXBsZXRpb25IYW5kbGUKIAog
dm9pZCBXZWJQYWdlOjp1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0KEltYWdlRXh0cmFj
dGlvblJlc3VsdCYmIHJlc3VsdCwgY29uc3QgRWxlbWVudENvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UG9pbnQmIGxvY2F0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8gZWxlbWVudFRvVXBkYXRlID0gZWxlbWVudEZv
ckNvbnRleHQoY29udGV4dCk7Ci0gICAgaWYgKCFpczxIVE1MRWxlbWVudD4oZWxlbWVudFRvVXBk
YXRlKSkgeworICAgIGF1dG8gY2FsbENvbXBsZXRpb25IYW5kbGVyID0gbWFrZVNjb3BlRXhpdChb
Jl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgfSk7CisKKyAgICBh
dXRvIGVsZW1lbnRUb1VwZGF0ZSA9IGVsZW1lbnRGb3JDb250ZXh0KGNvbnRleHQpOworICAgIGlm
ICghaXM8SFRNTEVsZW1lbnQ+KGVsZW1lbnRUb1VwZGF0ZSkpCiAgICAgICAgIHJldHVybjsKLSAg
ICB9CiAKICAgICBkb3duY2FzdDxIVE1MRWxlbWVudD4oKmVsZW1lbnRUb1VwZGF0ZSkudXBkYXRl
V2l0aEltYWdlRXh0cmFjdGlvblJlc3VsdChXVEZNb3ZlKHJlc3VsdCkpOwogICAgIGF1dG8gaGl0
VGVzdFJlc3VsdCA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLmV2ZW50SGFuZGxlcigpLmhpdFRl
c3RSZXN1bHRBdFBvaW50KHJvdW5kZWRJbnRQb2ludChsb2NhdGlvbiksIHsKQEAgLTczOTMsMTIg
KzczOTYsMTIgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVXaXRoSW1hZ2VFeHRyYWN0aW9uUmVzdWx0
KEltYWdlRXh0cmFjdGlvblJlc3VsdCYmIHJlc3VsdCwgY28KICAgICB9KTsKIAogICAgIGF1dG8g
bm9kZUF0TG9jYXRpb24gPSBtYWtlUmVmUHRyKGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFyZWRO
b2RlKCkpOwotICAgIGlmICghbm9kZUF0TG9jYXRpb24gfHwgbm9kZUF0TG9jYXRpb24tPnNoYWRv
d0hvc3QoKSAhPSBlbGVtZW50VG9VcGRhdGUpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZmFsc2UpOworICAgIGlmICghbm9kZUF0TG9jYXRpb24gfHwgbm9kZUF0TG9jYXRpb24tPnNoYWRv
d0hvc3QoKSAhPSBlbGVtZW50VG9VcGRhdGUpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAg
ICBjb21wbGV0aW9uSGFuZGxlcihIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJsYXlUZXh0KCpub2Rl
QXRMb2NhdGlvbikpOworICAgIGNhbGxDb21wbGV0aW9uSGFuZGxlci5yZXBsYWNlQW5kRXhpdChb
Jl0geworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihIVE1MRWxlbWVudDo6aXNJbWFnZU92ZXJs
YXlUZXh0KCpub2RlQXRMb2NhdGlvbikpOworICAgIH0pOwogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KElNQUdFX0VYVFJBQ1RJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDYwYmM5MDI2YjZmMi4uZTA1NDFkNTE5MjQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQpAQCAtNDQwMSwxMSArNDQwMSwxMyBAQCB2b2lkIFdlYlBhZ2U6OnRleHRJbnB1dENvbnRl
eHRzSW5SZWN0KEZsb2F0UmVjdCBzZWFyY2hSZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2bwogCiB2
b2lkIFdlYlBhZ2U6OmZvY3VzVGV4dElucHV0Q29udGV4dEFuZFBsYWNlQ2FyZXQoY29uc3QgRWxl
bWVudENvbnRleHQmIGVsZW1lbnRDb250ZXh0LCBjb25zdCBJbnRQb2ludCYgcG9pbnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0
byB0YXJnZXQgPSBlbGVtZW50Rm9yQ29udGV4dChlbGVtZW50Q29udGV4dCk7Ci0gICAgaWYgKCF0
YXJnZXQpIHsKKyAgICBhdXRvIGNhbGxDb21wbGV0aW9uSGFuZGxlciA9IG1ha2VTY29wZUV4aXQo
WyZdIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgIH0pOworCisgICAg
YXV0byB0YXJnZXQgPSBlbGVtZW50Rm9yQ29udGV4dChlbGVtZW50Q29udGV4dCk7CisgICAgaWYg
KCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBBU1NFUlQodGFyZ2V0LT5k
b2N1bWVudCgpLmZyYW1lKCkpOwogICAgIGF1dG8gdGFyZ2V0RnJhbWUgPSBtYWtlUmVmKCp0YXJn
ZXQtPmRvY3VtZW50KCkuZnJhbWUoKSk7CkBAIC00NDE1LDEwICs0NDE3LDggQEAgdm9pZCBXZWJQ
YWdlOjpmb2N1c1RleHRJbnB1dENvbnRleHRBbmRQbGFjZUNhcmV0KGNvbnN0IEVsZW1lbnRDb250
ZXh0JiBlbGVtZW50Q28KICAgICAvLyBQZXJmb3JtaW5nIGxheW91dCBjb3VsZCBoYXZlIGNvdWxk
IHRvcm4gZG93biB0aGUgZWxlbWVudCdzIHJlbmRlcmVyLiBDaGVjayB0aGF0IHdlIHN0aWxsCiAg
ICAgLy8gaGF2ZSBvbmUuIE90aGVyd2lzZSwgYmFpbCBvdXQgYXMgdGhpcyBmdW5jdGlvbiBvbmx5
IGZvY3VzZXMgZWxlbWVudHMgdGhhdCBoYXZlIGEgdmlzdWFsCiAgICAgLy8gcmVwcmVzZW50YXRp
b24uCi0gICAgaWYgKCF0YXJnZXQtPnJlbmRlcmVyKCkgfHwgIXRhcmdldC0+aXNGb2N1c2FibGUo
KSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgaWYgKCF0YXJnZXQt
PnJlbmRlcmVyKCkgfHwgIXRhcmdldC0+aXNGb2N1c2FibGUoKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyBub3QgZm9jdXMgYW4gZWxlbWVudCBpZiBpdCBtb3Zl
ZCBvciB0aGUgY2FyZXQgcG9pbnQgaXMgb3V0c2lkZSBpdHMgYm91bmRzCiAgICAgLy8gYmVjYXVz
ZSB3ZSBvbmx5IHdhbnQgdG8gZG8gc28gaWYgdGhlIGNhcmV0IGNhbiBiZSBwbGFjZWQuCkBAIC00
NDI3LDE5ICs0NDI3LDE5IEBAIHZvaWQgV2ViUGFnZTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0QW5k
UGxhY2VDYXJldChjb25zdCBFbGVtZW50Q29udGV4dCYgZWxlbWVudENvCiAgICAgbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRWxlbWVudCh0YXJnZXQuZ2V0KCksIHRhcmdldEZy
YW1lKTsKIAogICAgIC8vIFNldHRpbmcgdGhlIGZvY3VzZWQgZWxlbWVudCBjb3VsZCB0ZWFyIGRv
d24gdGhlIGVsZW1lbnQncyByZW5kZXJlci4gQ2hlY2sgdGhhdCB3ZSBzdGlsbCBoYXZlIG9uZS4K
LSAgICBpZiAobV9mb2N1c2VkRWxlbWVudCAhPSB0YXJnZXQgfHwgIXRhcmdldC0+cmVuZGVyZXIo
KSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgaWYgKG1fZm9jdXNl
ZEVsZW1lbnQgIT0gdGFyZ2V0IHx8ICF0YXJnZXQtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICB9CiAKICAgICBBU1NFUlQodGFyZ2V0RnJhbWUtPnZpZXcoKSk7CiAgICAgYXV0byBw
b3NpdGlvbiA9IGNsb3Nlc3RFZGl0YWJsZVBvc2l0aW9uSW5FbGVtZW50Rm9yQWJzb2x1dGVQb2lu
dCgqdGFyZ2V0LCB0YXJnZXRGcmFtZS0+dmlldygpLT5yb290Vmlld1RvQ29udGVudHMocG9pbnQp
KTsKLSAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOworICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KKwogICAgIHRhcmdldEZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKG1h
a2VTaW1wbGVSYW5nZShwb3NpdGlvbiksIHBvc2l0aW9uLmFmZmluaXR5KCksIFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6WWVzLCBVc2VyVHJpZ2dlcmVkKTsKLSAg
ICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKworICAgIGNhbGxDb21wbGV0aW9uSGFuZGxlci5y
ZXBsYWNlQW5kRXhpdChbJl0geworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAg
ICB9KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFNjYWxlUGFnZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4
IDc0ZGE2MzU3ODgyYy4uZmE5MTNhMDlkMTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtOTUsNiArOTUsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9XaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oPgogI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9OU0FjY2Vzc2liaWxpdHlTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL05TQXBwbGlj
YXRpb25TUEkuaD4KKyNpbXBvcnQgPHd0Zi9TY29wZS5oPgogI2ltcG9ydCA8d3RmL1NldEZvclNj
b3BlLmg+CiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpAQCAtMzc0LDMz
ICszNzUsMzEgQEAgdm9pZCBXZWJQYWdlOjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVy
UmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIGVkaXQKIAogdm9pZCBXZWJQYWdlOjpmb250
QXRTZWxlY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBGb250SW5mbyYsIGRvdWJs
ZSwgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgYXV0byBjYWxsQ29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlU2NvcGVFeGl0KFsmXSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgMCwgZmFsc2UpOworICAgIH0pOworCiAgICAgYm9vbCBzZWxlY3Rpb25IYXNNdWx0aXBs
ZUZvbnRzID0gZmFsc2U7CiAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogCi0gICAgaWYgKGZyYW1lLnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpLmlzTm9uZSgpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgMCwg
ZmFsc2UpOworICAgIGlmIChmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc05vbmUoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGF1dG8qIGZvbnQgPSBmcmFtZS5lZGl0b3Io
KS5mb250Rm9yU2VsZWN0aW9uKHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMpOwotICAgIGlmICgh
Zm9udCkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIDAsIGZhbHNlKTsKKyAgICBp
ZiAoIWZvbnQpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBhdXRvIGN0Rm9udCA9IGZv
bnQtPmdldENURm9udCgpOwotICAgIGlmICghY3RGb250KSB7Ci0gICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSwgMCwgZmFsc2UpOworICAgIGlmICghY3RGb250KQogICAgICAgICByZXR1cm47
Ci0gICAgfQogCiAgICAgYXV0byBmb250RGVzY3JpcHRvciA9IGFkb3B0Q0YoQ1RGb250Q29weUZv
bnREZXNjcmlwdG9yKGN0Rm9udCkpOwotICAgIGlmICghZm9udERlc2NyaXB0b3IpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCAwLCBmYWxzZSk7CisgICAgaWYgKCFmb250RGVzY3Jp
cHRvcikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
YWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ29weUF0dHJpYnV0ZXMoZm9udERlc2NyaXB0b3IuZ2V0
KCkpKSB9LCBDVEZvbnRHZXRTaXplKGN0Rm9udCksIHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMp
OworICAgIGNhbGxDb21wbGV0aW9uSGFuZGxlci5yZXBsYWNlQW5kRXhpdChbJl0geworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNvcHlBdHRyaWJ1
dGVzKGZvbnREZXNjcmlwdG9yLmdldCgpKSkgfSwgQ1RGb250R2V0U2l6ZShjdEZvbnQpLCBzZWxl
Y3Rpb25IYXNNdWx0aXBsZUZvbnRzKTsKKyAgICB9KTsKIH0KICAgICAKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>