<?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>180445</bug_id>
          
          <creation_ts>2017-12-05 14:03:48 -0800</creation_ts>
          <short_desc>Use WTF Locking primitives in WebThread and drop pthread_xxx use</short_desc>
          <delta_ts>2017-12-07 17:31:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1378353</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-05 14:03:48 -0800</bug_when>
    <thetext>Use WTF Locking primitives in WebThread and drop pthread_xxx use</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378380</commentid>
    <comment_count>1</comment_count>
      <attachid>328504</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-05 14:47:05 -0800</bug_when>
    <thetext>Created attachment 328504
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378388</commentid>
    <comment_count>2</comment_count>
      <attachid>328506</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-05 14:55:16 -0800</bug_when>
    <thetext>Created attachment 328506
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378391</commentid>
    <comment_count>3</comment_count>
      <attachid>328507</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-05 14:58:49 -0800</bug_when>
    <thetext>Created attachment 328507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1378405</commentid>
    <comment_count>4</comment_count>
      <attachid>328509</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-05 15:40:48 -0800</bug_when>
    <thetext>Created attachment 328509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379080</commentid>
    <comment_count>5</comment_count>
      <attachid>328689</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-12-07 04:48:12 -0800</bug_when>
    <thetext>Created attachment 328689
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379388</commentid>
    <comment_count>6</comment_count>
      <attachid>328689</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-07 17:26:31 -0800</bug_when>
    <thetext>Comment on attachment 328689
Patch

Clearing flags on attachment: 328689

Committed r225660: &lt;https://trac.webkit.org/changeset/225660&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379389</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-07 17:26:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1379394</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-07 17:31:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/35924509&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328504</attachid>
            <date>2017-12-05 14:47:05 -0800</date>
            <delta_ts>2017-12-05 14:55:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180445-20171206074704.patch</filename>
            <type>text/plain</type>
            <size>20634</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU5NzYwY2UxNTRmMDllNTc3YTJjNmRh
NGFmOTU2Y2QyMjFmYTllMDUuLjkyMWJjMjM2N2I3NWEyZjg5ODM4NmU0MDYxMjEwNDM3YjAxOTk3
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTctMTItMDUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgVXNlIFdURiBMb2NraW5nIHByaW1pdGl2ZXMg
aW4gV2ViVGhyZWFkIGFuZCBkcm9wIHB0aHJlYWRfeHh4IHVzZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNDQ1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGluaXRpYWxpemVyIGZvcm0gdG8gZmls
bCBzdHJ1Y3Qgd2l0aCB6ZXJvIGlmIHN0cnVjdCBkb2VzIG5vdCBoYXZlIGFueSBkZWZhdWx0IGlu
aXRpYWxpemVycy4KKworICAgICAgICAqIHd0Zi9UaHJlYWRTcGVjaWZpYy5oOgorICAgICAgICAo
V1RGOjpUaHJlYWRTcGVjaWZpYzo6RGF0YTo6RGF0YSk6CisKKzIwMTctMTItMDUgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgW1dURl0gUmVtb3ZlIG1f
YXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yIGluIFRocmVhZCBieSBxdWVyeWluZyB0aGUgY29u
ZGl0aW9uIGF0IHRocmVhZCBkZXN0cnVjdGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNDI5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMzI4OWI3NjUxMjlk
MWEyMTE5ODVjNGQ0YmJiM2E4MGNkNjlkZDIxLi41NzAxYTRiN2M2ODk5NTgzZTQ0ZWJiN2JmODAz
ZDZjNDAxZDMxNmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTctMTItMDUgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgVXNlIFdURiBM
b2NraW5nIHByaW1pdGl2ZXMgaW4gV2ViVGhyZWFkIGFuZCBkcm9wIHB0aHJlYWRfeHh4IHVzZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNDQ1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgcmVtb3Zl
IHVzZSBvZiBwdGhyZWFkIGxvY2tpbmcgcHJpbWl0aXZlcyBmcm9tIFdlYlRocmVhZCBpbXBsZW1l
bnRhdGlvbiwKKyAgICAgICAgYW5kIHVzZSBXVEYgTG9jayBhbmQgQ29uZGl0aW9uIGluc3RlYWQu
CisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoSGFuZGxlRGVsZWdhdGVTb3VyY2UpOgor
ICAgICAgICAoU2VuZERlbGVnYXRlTWVzc2FnZSk6CisgICAgICAgIChXZWJUaHJlYWRSdW5Pbk1h
aW5UaHJlYWQpOgorICAgICAgICAoV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKToKKyAgICAgICAg
KFdlYkNvcmVPYmpDRGVhbGxvY09uV2ViVGhyZWFkSW1wbCk6CisgICAgICAgIChXZWJDb3JlT2Jq
Q0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9ja0ltcGwpOgorICAgICAgICAoSGFuZGxlV2ViVGhyZWFk
UmVsZWFzZVNvdXJjZSk6CisgICAgICAgIChfV2ViVGhyZWFkQXV0b0xvY2spOgorICAgICAgICAo
V2ViUnVuTG9vcExvY2tJbnRlcm5hbCk6CisgICAgICAgIChDdXJyZW50VGhyZWFkQ29udGV4dCk6
CisgICAgICAgIChTdGFydFdlYlRocmVhZCk6CisgICAgICAgIChfV2ViVGhyZWFkTG9jayk6Cisg
ICAgICAgIChfV2ViVGhyZWFkTG9ja0Zyb21BbnlUaHJlYWQpOgorICAgICAgICAoV2ViVGhyZWFk
VW5sb2NrRnJvbUFueVRocmVhZCk6CisgICAgICAgIChfV2ViVGhyZWFkVW5sb2NrKToKKyAgICAg
ICAgKGxvY2tXZWJDb3JlUmVsZWFzZUxvY2spOiBEZWxldGVkLgorICAgICAgICAodW5sb2NrV2Vi
Q29yZVJlbGVhc2VMb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlRpbWVkQ29uZGl0aW9uTG9j
ayk6IERlbGV0ZWQuCisgICAgICAgIChfV2ViVHJ5VGhyZWFkTG9jayk6IERlbGV0ZWQuCisKIDIw
MTctMTItMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBjb250ZW50IHZpZXdzIGZvciByZXNvdXJjZXMgbG9hZGVkIHRocm91
Z2ggWEhSIGRvIG5vdCByZWZsZWN0IGRlY2xhcmVkIG1pbWUtdHlwZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvVGhyZWFkU3BlY2lmaWMuaCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZFNwZWNp
ZmljLmgKaW5kZXggM2E4OTcxYzg4MWYxYWIwZWMwYjQzYzE4NzY3MzZmYzFhNjE5ZTJiNi4uMWJl
MTIwNGNkZGY2OTQ1MjFlODJhNTc2Yjg4NTQyMzdkMGI1OWVlMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvVGhyZWFkU3BlY2lmaWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRTcGVj
aWZpYy5oCkBAIC0xMDEsNyArMTAxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgQ2FuQmVHQ1Ro
cmVhZCBjYW5CZUdDVGhyZWFkID0gQ2FuQmVHQ1RocmVhZDo6RmFsc2U+IGNsYXNzIFQKICAgICAg
ICAgICAgIC8vIFNldCB1cCB0aHJlYWQtc3BlY2lmaWMgdmFsdWUncyBtZW1vcnkgcG9pbnRlciBi
ZWZvcmUgaW52b2tpbmcgY29uc3RydWN0b3IsIGluIGNhc2UgYW55IGZ1bmN0aW9uIGl0IGNhbGxz
CiAgICAgICAgICAgICAvLyBuZWVkcyB0byBhY2Nlc3MgdGhlIHZhbHVlLCB0byBhdm9pZCByZWN1
cnNpb24uCiAgICAgICAgICAgICBvd25lci0+c2V0SW5UTFModGhpcyk7Ci0gICAgICAgICAgICBu
ZXcgKE5vdE51bGwsIHN0b3JhZ2VQb2ludGVyKCkpIFQ7CisgICAgICAgICAgICBuZXcgKE5vdE51
bGwsIHN0b3JhZ2VQb2ludGVyKCkpIFQoKTsKICAgICAgICAgfQogCiAgICAgICAgIH5EYXRhKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVh
ZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpp
bmRleCBhYWE3Mzc3MTEwYTVmYjc3YTI0M2UwYjgwMDA5ZmE4N2ZiNTU5NDFmLi45NjNmZjZmZDcz
MTA3ZjU2M2RkODE0YzUyODhjZWY5ZGFjODY2MDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC01NiwxNCArNTYsMTMgQEAKICNk
ZWZpbmUgTE9HX1JFTEVBU0VTIDAKIAogI2RlZmluZSBEaXN0YW50RnV0dXJlICAgKDg2NDAwLjAg
KiAyMDAwICogMzY1LjI0MjUgKyA4NjQwMC4wKSAgIC8vIHNhbWUgYXMgK1tOU0RhdGUgZGlzdGFu
dEZ1dHVyZV0KLSNkZWZpbmUgTWF4QXJnQ291bnQgICAgICAgICA1Ci0jZGVmaW5lIERyYXdXYWl0
SW50ZXJ2YWwgICAgIDEwCi0jZGVmaW5lIERlbGVnYXRlV2FpdEludGVydmFsIDEwCiAKLXN0YXRp
YyB2b2lkIF9XZWJUaHJlYWRBdXRvTG9jayh2b2lkKTsKLXN0YXRpYyBib29sIF9XZWJUcnlUaHJl
YWRMb2NrKGJvb2wgc2hvdWxkVHJ5KTsKK3N0YXRpYyBjb25zdCBjb25zdGV4cHIgU2Vjb25kcyBE
ZWxlZ2F0ZVdhaXRJbnRlcnZhbCB7IDEwcyB9OworCitzdGF0aWMgdm9pZCBfV2ViVGhyZWFkQXV0
b0xvY2soKTsKK3N0YXRpYyBib29sIF9XZWJUaHJlYWRMb2NrKCk7CiBzdGF0aWMgdm9pZCBfV2Vi
VGhyZWFkTG9ja0Zyb21BbnlUaHJlYWQoYm9vbCBzaG91bGRMb2cpOwotc3RhdGljIHZvaWQgX1dl
YlRocmVhZFVubG9jayh2b2lkKTsKK3N0YXRpYyB2b2lkIF9XZWJUaHJlYWRVbmxvY2soKTsKIAog
QGludGVyZmFjZSBOU09iamVjdChGb3J3YXJkRGVjbGFyYXRpb25zKQogLSh2b2lkKV93ZWJjb3Jl
X3JlbGVhc2VPbldlYlRocmVhZDsKQEAgLTkxLDkgKzkwLDEyIEBAIGV4dGVybiB2b2lkIE5TUG9w
QXV0b3JlbGVhc2VQb29sKE5TQXV0b3JlbGVhc2VQb29sTWFyayB0b2tlbik7CiB9CiAjZW5kaWYK
IAotc3RhdGljIGludCBXZWJUaW1lZENvbmRpdGlvbkxvY2socHRocmVhZF9jb25kX3QqIGNvbmRp
dGlvbiwgcHRocmVhZF9tdXRleF90KiBsb2NrLCBDRkFic29sdXRlVGltZSBpbnRlcnZhbCk7Cit1
c2luZyBTdGF0aWNSZWN1cnNpdmVMb2NrID0gV1RGOjpSZWN1cnNpdmVMb2NrQWRhcHRlcjxTdGF0
aWNMb2NrPjsKKworc3RhdGljIFN0YXRpY1JlY3Vyc2l2ZUxvY2sgd2ViTG9jazsKK3N0YXRpYyBT
dGF0aWNMb2NrIHdlYlRocmVhZFJlbGVhc2VMb2NrOworc3RhdGljIFN0YXRpY1JlY3Vyc2l2ZUxv
Y2sgd2ViQ29yZVJlbGVhc2VMb2NrOwogCi1zdGF0aWMgcHRocmVhZF9tdXRleF90IHdlYkxvY2s7
CiBzdGF0aWMgTlNBdXRvcmVsZWFzZVBvb2xNYXJrIGF1dG9yZWxlYXNlUG9vbE1hcms7CiBzdGF0
aWMgQ0ZSdW5Mb29wUmVmIHdlYlRocmVhZFJ1bkxvb3A7CiBzdGF0aWMgTlNSdW5Mb29wKiB3ZWJU
aHJlYWROU1J1bkxvb3A7CkBAIC0xMDksMTQgKzExMSwxMyBAQCB0eXBlZGVmIGVudW0gewogICAg
IElnbm9yZUF1dG9yZWxlYXNlUG9vbAogfSBBdXRvcmVsZWFzZVBvb2xPcGVyYXRpb247CiAKLXN0
YXRpYyBwdGhyZWFkX211dGV4X3QgV2ViVGhyZWFkUmVsZWFzZUxvY2sgPSBQVEhSRUFEX01VVEVY
X0lOSVRJQUxJWkVSOwogc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBXZWJUaHJlYWRSZWxlYXNl
U291cmNlOwogc3RhdGljIENGTXV0YWJsZUFycmF5UmVmIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJh
eTsKIAogc3RhdGljIHZvaWQgTWFpblRocmVhZEFkb3B0QW5kUmVsZWFzZShpZCBvYmopOwogCi1z
dGF0aWMgcHRocmVhZF9tdXRleF90IGRlbGVnYXRlTG9jayA9IFBUSFJFQURfTVVURVhfSU5JVElB
TElaRVI7Ci1zdGF0aWMgcHRocmVhZF9jb25kX3QgZGVsZWdhdGVDb25kaXRpb24gPSBQVEhSRUFE
X0NPTkRfSU5JVElBTElaRVI7CitzdGF0aWMgU3RhdGljTG9jayBkZWxlZ2F0ZUxvY2s7CitzdGF0
aWMgU3RhdGljQ29uZGl0aW9uIGRlbGVnYXRlQ29uZGl0aW9uOwogc3RhdGljIE5TSW52b2NhdGlv
biogZGVsZWdhdGVJbnZvY2F0aW9uOwogc3RhdGljIENGUnVuTG9vcFNvdXJjZVJlZiBkZWxlZ2F0
ZVNvdXJjZSA9IG51bGxwdHI7CiBzdGF0aWMgQk9PTCBkZWxlZ2F0ZUhhbmRsZWQ7CkBAIC0xMzAs
MTQgKzEzMSwxMiBAQCBzdGF0aWMgU3RhdGljTG9jayBzdGFydHVwTG9jazsKIHN0YXRpYyBTdGF0
aWNDb25kaXRpb24gc3RhcnR1cENvbmRpdGlvbjsKIAogc3RhdGljIFdlYlRocmVhZENvbnRleHQq
IHdlYlRocmVhZENvbnRleHQ7Ci1zdGF0aWMgcHRocmVhZF9rZXlfdCB0aHJlYWRDb250ZXh0S2V5
Owogc3RhdGljIHVuc2lnbmVkIG1haW5UaHJlYWRMb2NrQ291bnQ7CiBzdGF0aWMgdW5zaWduZWQg
b3RoZXJUaHJlYWRMb2NrQ291bnQ7CiBzdGF0aWMgdW5zaWduZWQgc01haW5UaHJlYWRNb2RhbENv
dW50OwogCiBXRUJDT1JFX0VYUE9SVCB2b2xhdGlsZSBib29sIHdlYlRocmVhZFNob3VsZFlpZWxk
OwogCi1zdGF0aWMgcHRocmVhZF9tdXRleF90IFdlYkNvcmVSZWxlYXNlTG9jazsKIHN0YXRpYyB2
b2lkIFdlYkNvcmVPYmpDRGVhbGxvY09uV2ViVGhyZWFkSW1wbChpZCBzZWxmLCBTRUwgX2NtZCk7
CiBzdGF0aWMgdm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9jayhDbGFzcyBj
bHMpOwogc3RhdGljIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2tJbXBs
KGlkIHNlbGYsIFNFTCBfY21kKTsKQEAgLTE2MCwyNSArMTU5LDIzIEBAIHN0YXRpYyB2b2lkIEhh
bmRsZURlbGVnYXRlU291cmNlKHZvaWQqKQogCiAgICAgX1dlYlRocmVhZEF1dG9Mb2NrKCk7CiAK
LSAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF9sb2NrKCZkZWxlZ2F0ZUxvY2spOwotICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgImRlbGVnYXRlIGxvY2sgZmFpbGVkIHdpdGgg
Y29kZTolZCIsIHJlc3VsdCk7CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KGRlbGVnYXRlTG9jayk7CiAKICNpZiBMT0dfTUVTU0FHRVMKLSAgICBpZiAoW1tkZWxlZ2F0ZUlu
dm9jYXRpb24gdGFyZ2V0XSBpc0tpbmRPZkNsYXNzOltOU05vdGlmaWNhdGlvbkNlbnRlciBjbGFz
c11dKSB7Ci0gICAgICAgIGlkIGFyZ3VtZW50MDsKLSAgICAgICAgW2RlbGVnYXRlSW52b2NhdGlv
biBnZXRBcmd1bWVudDomYXJndW1lbnQwIGF0SW5kZXg6MF07Ci0gICAgICAgIE5TTG9nKEAibm90
aWZpY2F0aW9uIHJlY2VpdmU6ICVAIiwgYXJndW1lbnQwKTsKLSAgICB9IGVsc2UKLSAgICAgICAg
TlNMb2coQCJkZWxlZ2F0ZSByZWNlaXZlOiAlQCIsIE5TU3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxl
Z2F0ZUludm9jYXRpb24gc2VsZWN0b3JdKSk7CisgICAgICAgIGlmIChbW2RlbGVnYXRlSW52b2Nh
dGlvbiB0YXJnZXRdIGlzS2luZE9mQ2xhc3M6W05TTm90aWZpY2F0aW9uQ2VudGVyIGNsYXNzXV0p
IHsKKyAgICAgICAgICAgIGlkIGFyZ3VtZW50MDsKKyAgICAgICAgICAgIFtkZWxlZ2F0ZUludm9j
YXRpb24gZ2V0QXJndW1lbnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOworICAgICAgICAgICAgTlNM
b2coQCJub3RpZmljYXRpb24gcmVjZWl2ZTogJUAiLCBhcmd1bWVudDApOworICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIE5TTG9nKEAiZGVsZWdhdGUgcmVjZWl2ZTogJUAiLCBOU1N0cmluZ0Zy
b21TZWxlY3RvcihbZGVsZWdhdGVJbnZvY2F0aW9uIHNlbGVjdG9yXSkpOwogI2VuZGlmCiAKLSAg
ICBTZW5kTWVzc2FnZShkZWxlZ2F0ZUludm9jYXRpb24pOworICAgICAgICBTZW5kTWVzc2FnZShk
ZWxlZ2F0ZUludm9jYXRpb24pOwogCi0gICAgZGVsZWdhdGVIYW5kbGVkID0gWUVTOwotICAgIHB0
aHJlYWRfY29uZF9zaWduYWwoJmRlbGVnYXRlQ29uZGl0aW9uKTsKLQotICAgIHJlc3VsdCA9IHB0
aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZWxlZ2F0ZUxvY2spOwotICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoIXJlc3VsdCwgImRlbGVnYXRlIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0
KTsKKyAgICAgICAgZGVsZWdhdGVIYW5kbGVkID0gWUVTOworICAgICAgICBkZWxlZ2F0ZUNvbmRp
dGlvbi5ub3RpZnlPbmUoKTsKKyAgICB9CiAKICNpZiBMT0dfTUFJTl9USFJFQURfTE9DS0lORwog
ICAgIHNlbmRpbmdEZWxlZ2F0ZU1lc3NhZ2UgPSBOTzsKQEAgLTE5Myw4ICsxOTAsNyBAQCBzdGF0
aWMgdm9pZCBTZW5kRGVsZWdhdGVNZXNzYWdlKE5TSW52b2NhdGlvbiogaW52b2NhdGlvbikKICAg
ICB9CiAKICAgICBBU1NFUlQoZGVsZWdhdGVTb3VyY2UpOwotICAgIGludCByZXN1bHQgPSBwdGhy
ZWFkX211dGV4X2xvY2soJmRlbGVnYXRlTG9jayk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
cmVzdWx0LCAiZGVsZWdhdGUgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKKyAg
ICBkZWxlZ2F0ZUxvY2subG9jaygpOwogCiAgICAgZGVsZWdhdGVJbnZvY2F0aW9uID0gaW52b2Nh
dGlvbjsKICAgICBkZWxlZ2F0ZUhhbmRsZWQgPSBOTzsKQEAgLTIxNyw3ICsyMTMsNyBAQCBzdGF0
aWMgdm9pZCBTZW5kRGVsZWdhdGVNZXNzYWdlKE5TSW52b2NhdGlvbiogaW52b2NhdGlvbikKICAg
ICAgICAgQ0ZSdW5Mb29wV2FrZVVwKENGUnVuTG9vcEdldE1haW4oKSk7CiAKICAgICAgICAgd2hp
bGUgKCFkZWxlZ2F0ZUhhbmRsZWQpIHsKLSAgICAgICAgICAgIGlmIChXZWJUaW1lZENvbmRpdGlv
bkxvY2soJmRlbGVnYXRlQ29uZGl0aW9uLCAmZGVsZWdhdGVMb2NrLCBEZWxlZ2F0ZVdhaXRJbnRl
cnZhbCkpIHsKKyAgICAgICAgICAgIGlmICghZGVsZWdhdGVDb25kaXRpb24ud2FpdEZvcihkZWxl
Z2F0ZUxvY2ssIERlbGVnYXRlV2FpdEludGVydmFsKSkgewogICAgICAgICAgICAgICAgIGlkIGRl
bGVnYXRlSW5mb3JtYXRpb247CiAgICAgICAgICAgICAgICAgaWYgKFtbZGVsZWdhdGVJbnZvY2F0
aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRpb25DZW50ZXIgY2xhc3NdXSkK
ICAgICAgICAgICAgICAgICAgICAgW2RlbGVnYXRlSW52b2NhdGlvbiBnZXRBcmd1bWVudDomZGVs
ZWdhdGVJbmZvcm1hdGlvbiBhdEluZGV4OjBdOwpAQCAtMjI1LDE1ICsyMjEsMTMgQEAgc3RhdGlj
IHZvaWQgU2VuZERlbGVnYXRlTWVzc2FnZShOU0ludm9jYXRpb24qIGludm9jYXRpb24pCiAgICAg
ICAgICAgICAgICAgICAgIGRlbGVnYXRlSW5mb3JtYXRpb24gPSBOU1N0cmluZ0Zyb21TZWxlY3Rv
cihbZGVsZWdhdGVJbnZvY2F0aW9uIHNlbGVjdG9yXSk7CiAgICAgCiAgICAgICAgICAgICAgICAg
Q0ZTdHJpbmdSZWYgbW9kZSA9IENGUnVuTG9vcENvcHlDdXJyZW50TW9kZShDRlJ1bkxvb3BHZXRN
YWluKCkpOwotICAgICAgICAgICAgICAgIE5TTG9nKEAiJXM6IGRlbGVnYXRlICglQCkgZmFpbGVk
IHRvIHJldHVybiBhZnRlciB3YWl0aW5nICVkIHNlY29uZHMuIG1haW4gcnVuIGxvb3AgbW9kZTog
JUAiLCBfX1BSRVRUWV9GVU5DVElPTl9fLCBkZWxlZ2F0ZUluZm9ybWF0aW9uLCBEZWxlZ2F0ZVdh
aXRJbnRlcnZhbCwgbW9kZSk7CisgICAgICAgICAgICAgICAgTlNMb2coQCIlczogZGVsZWdhdGUg
KCVAKSBmYWlsZWQgdG8gcmV0dXJuIGFmdGVyIHdhaXRpbmcgJWYgc2Vjb25kcy4gbWFpbiBydW4g
bG9vcCBtb2RlOiAlQCIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIGRlbGVnYXRlSW5mb3JtYXRpb24s
IERlbGVnYXRlV2FpdEludGVydmFsLnNlY29uZHMoKSwgbW9kZSk7CiAgICAgICAgICAgICAgICAg
aWYgKG1vZGUpCiAgICAgICAgICAgICAgICAgICAgIENGUmVsZWFzZShtb2RlKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgICAgICByZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygm
ZGVsZWdhdGVMb2NrKTsKLQotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJk
ZWxlZ2F0ZSB1bmxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7Ci0gICAgICAgIF9X
ZWJUcnlUaHJlYWRMb2NrKGZhbHNlKTsKKyAgICAgICAgZGVsZWdhdGVMb2NrLnVubG9jaygpOwor
ICAgICAgICBfV2ViVGhyZWFkTG9jaygpOwogICAgIH0KIH0KIApAQCAtMjUyLDcgKzI0Niw3IEBA
IHZvaWQgV2ViVGhyZWFkUnVuT25NYWluVGhyZWFkKHZvaWQoXmRlbGVnYXRlQmxvY2spKCkpCiAg
ICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBkZWxlZ2F0ZUJsb2Nr
Q29weSk7CiAgICAgQmxvY2tfcmVsZWFzZShkZWxlZ2F0ZUJsb2NrQ29weSk7CiAKLSAgICBfV2Vi
VHJ5VGhyZWFkTG9jayhmYWxzZSk7CisgICAgX1dlYlRocmVhZExvY2soKTsKIH0KIAogc3RhdGlj
IHZvaWQgTWFpblRocmVhZEFkb3B0QW5kUmVsZWFzZShpZCBvYmopCkBAIC0yODEsMjkgKzI3NSwx
MyBAQCB2b2lkIFdlYlRocmVhZEFkb3B0QW5kUmVsZWFzZShpZCBvYmopCiAgICAgTlNMb2coQCJS
ZWxlYXNlIHNlbmQgW21haW4gdGhyZWFkXTogJUAiLCBvYmopOwogI2VuZGlmICAgICAgICAKIAot
ICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X2xvY2soJldlYlRocmVhZFJlbGVhc2VMb2Nr
KTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJSZWxlYXNlIGxvY2sgZmFpbGVk
IHdpdGggY29kZTolZCIsIHJlc3VsdCk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3ZWJU
aHJlYWRSZWxlYXNlTG9jayk7CiAKICAgICBpZiAoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5ID09
IG5pbCkKICAgICAgICAgV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5ID0gQ0ZBcnJheUNyZWF0ZU11
dGFibGUoa0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwgMCwgbnVsbHB0cik7CiAgICAgQ0ZBcnJh
eUFwcGVuZFZhbHVlKFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSwgb2JqKTsKICAgICBDRlJ1bkxv
b3BTb3VyY2VTaWduYWwoV2ViVGhyZWFkUmVsZWFzZVNvdXJjZSk7CiAgICAgQ0ZSdW5Mb29wV2Fr
ZVVwKHdlYlRocmVhZFJ1bkxvb3ApOwotCi0gICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxv
Y2soJldlYlRocmVhZFJlbGVhc2VMb2NrKTsgICAgCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
cmVzdWx0LCAiUmVsZWFzZSB1bmxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBsb2NrV2ViQ29yZVJlbGVhc2VMb2NrKCkKLXsKLSAgICBp
bnQgbG9ja2NvZGUgPSBwdGhyZWFkX211dGV4X2xvY2soJldlYkNvcmVSZWxlYXNlTG9jayk7Ci0g
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQobG9ja2NvZGUsICFsb2NrY29kZSwgIldlYkNv
cmVSZWxlYXNlTG9jayBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCBsb2NrY29kZSk7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgdm9pZCB1bmxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKQotewotICAgIGlu
dCBsb2NrY29kZSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZXZWJDb3JlUmVsZWFzZUxvY2spOwot
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0VfVU5VU0VEKGxvY2tjb2RlLCAhbG9ja2NvZGUsICJXZWJD
b3JlUmVsZWFzZUxvY2sgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCBsb2NrY29kZSk7CiB9
CiAKIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jT25XZWJUaHJlYWQoQ2xhc3MgY2xzKQpAQCAtMzY1
LDUwICszNDMsNDYgQEAgdm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwoaWQg
c2VsZiwgU0VMKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbG9ja1dlYkNvcmVSZWxl
YXNlTG9jaygpOwotICAgIGlmIChbc2VsZiByZXRhaW5Db3VudF0gPT0gMSkgewotICAgICAgICAv
LyBUaGlzIGlzIHRoZSBvbmx5IHJlZmVyZW5jZSByZXRhaW5pbmcgdGhlIG9iamVjdCwgc28gd2Ug
Y2FuCi0gICAgICAgIC8vIHNhZmVseSByZWxlYXNlIHRoZSBXZWJDb3JlUmVsZWFzZUxvY2sgbm93
LgotICAgICAgICB1bmxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKLSAgICAgICAgaWYgKFdlYlRo
cmVhZElzQ3VycmVudCgpKQorICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3
ZWJDb3JlUmVsZWFzZUxvY2spOworICAgICAgICBpZiAoW3NlbGYgcmV0YWluQ291bnRdICE9IDEp
IHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgbm90IHRoZSBvbmx5IHJlZmVyZW5jZSByZXRhaW5p
bmcgdGhlIG9iamVjdCwgc28gYW5vdGhlcgorICAgICAgICAgICAgLy8gdGhyZWFkIGNvdWxkIGFs
c28gY2FsbCByZWxlYXNlIC0gaG9sZCB0aGUgbG9jayB3aGlsc3QgY2FsbGluZworICAgICAgICAg
ICAgLy8gcmVsZWFzZSB0byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uLgogICAgICAgICAgICAgW3Nl
bGYgX3dlYmNvcmVfcmVsZWFzZU9uV2ViVGhyZWFkXTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKHNlbGYpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IC8vIFRoaXMgaXMgbm90IHRoZSBvbmx5IHJlZmVyZW5jZSByZXRhaW5pbmcgdGhlIG9iamVjdCwg
c28gYW5vdGhlcgotICAgICAgICAvLyB0aHJlYWQgY291bGQgYWxzbyBjYWxsIHJlbGVhc2UgLSBo
b2xkIHRoZSBsb2NrIHdoaWxzdCBjYWxsaW5nCi0gICAgICAgIC8vIHJlbGVhc2UgdG8gYXZvaWQg
YSByYWNlIGNvbmRpdGlvbi4KLSAgICAgICAgW3NlbGYgX3dlYmNvcmVfcmVsZWFzZU9uV2ViVGhy
ZWFkXTsKLSAgICAgICAgdW5sb2NrV2ViQ29yZVJlbGVhc2VMb2NrKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSByZWZlcmVuY2Ug
cmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIHdlIGNhbgorICAgICAgICAvLyBzYWZlbHkgcmVsZWFz
ZSB0aGUgd2ViQ29yZVJlbGVhc2VMb2NrIG5vdy4KICAgICB9CisgICAgaWYgKFdlYlRocmVhZElz
Q3VycmVudCgpKQorICAgICAgICBbc2VsZiBfd2ViY29yZV9yZWxlYXNlT25XZWJUaHJlYWRdOwor
ICAgIGVsc2UKKyAgICAgICAgV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKHNlbGYpOwogfQogCiB2
b2lkIFdlYkNvcmVPYmpDRGVhbGxvY1dpdGhXZWJUaHJlYWRMb2NrSW1wbChpZCBzZWxmLCBTRUwp
CiB7Ci0gICAgbG9ja1dlYkNvcmVSZWxlYXNlTG9jaygpOworICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sod2ViQ29yZVJlbGVhc2VMb2NrKTsKICAgICBpZiAoV2ViVGhyZWFkSXNMb2NrZWRPckRp
c2FibGVkKCkgfHwgMSAhPSBbc2VsZiByZXRhaW5Db3VudF0pCiAgICAgICAgIFtzZWxmIF93ZWJj
b3JlX3JlbGVhc2VXaXRoV2ViVGhyZWFkTG9ja107CiAgICAgZWxzZQogICAgICAgICBXZWJUaHJl
YWRBZG9wdEFuZFJlbGVhc2Uoc2VsZik7Ci0gICAgdW5sb2NrV2ViQ29yZVJlbGVhc2VMb2NrKCk7
CiB9CiAKIHN0YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2Uodm9pZCopCiB7
CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKIAotICAgIGludCByZXN1bHQgPSBw
dGhyZWFkX211dGV4X2xvY2soJldlYlRocmVhZFJlbGVhc2VMb2NrKTsKLSAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFKCFyZXN1bHQsICJSZWxlYXNlIGxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJl
c3VsdCk7Ci0KICAgICBDRk11dGFibGVBcnJheVJlZiBvYmplY3RzID0gbnVsbHB0cjsKLSAgICBp
ZiAoQ0ZBcnJheUdldENvdW50KFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSkpIHsKLSAgICAgICAg
b2JqZWN0cyA9IENGQXJyYXlDcmVhdGVNdXRhYmxlQ29weShudWxscHRyLCAwLCBXZWJUaHJlYWRS
ZWxlYXNlT2JqQXJyYXkpOwotICAgICAgICBDRkFycmF5UmVtb3ZlQWxsVmFsdWVzKFdlYlRocmVh
ZFJlbGVhc2VPYmpBcnJheSk7CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KHdlYlRocmVhZFJlbGVhc2VMb2NrKTsKKyAgICAgICAgaWYgKENGQXJyYXlHZXRDb3VudChXZWJU
aHJlYWRSZWxlYXNlT2JqQXJyYXkpKSB7CisgICAgICAgICAgICBvYmplY3RzID0gQ0ZBcnJheUNy
ZWF0ZU11dGFibGVDb3B5KG51bGxwdHIsIDAsIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSk7Cisg
ICAgICAgICAgICBDRkFycmF5UmVtb3ZlQWxsVmFsdWVzKFdlYlRocmVhZFJlbGVhc2VPYmpBcnJh
eSk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICByZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9j
aygmV2ViVGhyZWFkUmVsZWFzZUxvY2spOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3Vs
dCwgIlJlbGVhc2UgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwotCiAgICAg
aWYgKCFvYmplY3RzKQogICAgICAgICByZXR1cm47CiAKQEAgLTQ4MiwxNCArNDU2LDE0IEBAIHN0
YXRpYyB2b2lkIF9XZWJUaHJlYWRBdXRvTG9jayh2b2lkKQogCiAgICAgaWYgKCFtYWluVGhyZWFk
TG9ja0NvdW50KSB7CiAgICAgICAgIENGUnVuTG9vcEFkZE9ic2VydmVyKENGUnVuTG9vcEdldEN1
cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2JzZXJ2ZXIsIGtDRlJ1bkxvb3BDb21tb25N
b2Rlcyk7ICAgIAotICAgICAgICBfV2ViVHJ5VGhyZWFkTG9jayhmYWxzZSk7CisgICAgICAgIF9X
ZWJUaHJlYWRMb2NrKCk7CiAgICAgICAgIENGUnVuTG9vcFdha2VVcChDRlJ1bkxvb3BHZXRNYWlu
KCkpOwogICAgIH0KIH0KIAogc3RhdGljIHZvaWQgV2ViUnVuTG9vcExvY2tJbnRlcm5hbChBdXRv
cmVsZWFzZVBvb2xPcGVyYXRpb24gcG9vbE9wZXJhdGlvbikKIHsKLSAgICBfV2ViVHJ5VGhyZWFk
TG9jayhmYWxzZSk7CisgICAgX1dlYlRocmVhZExvY2soKTsKICAgICBpZiAocG9vbE9wZXJhdGlv
biA9PSBQdXNoT3JQb3BBdXRvcmVsZWFzZVBvb2wpCiAgICAgICAgIGF1dG9yZWxlYXNlUG9vbE1h
cmsgPSBOU1B1c2hBdXRvcmVsZWFzZVBvb2woMCk7CiAgICAgaXNXZWJUaHJlYWRMb2NrZWQgPSBZ
RVM7CkBAIC01OTMsMjMgKzU2NywxNCBAQCB2b2lkIFdlYlJ1bkxvb3BEaXNhYmxlTmVzdGVkKCkK
ICAgICBpc05lc3RlZFdlYlRocmVhZFJ1bkxvb3AgPSBOTzsKIH0KIAotc3RhdGljIFdlYlRocmVh
ZENvbnRleHQqIEN1cnJlbnRUaHJlYWRDb250ZXh0KHZvaWQpCitzdGF0aWMgVGhyZWFkU3BlY2lm
aWM8V2ViVGhyZWFkQ29udGV4dCwgQ2FuQmVHQ1RocmVhZDo6VHJ1ZT4qIHRocmVhZENvbnRleHQ7
CitzdGF0aWMgV2ViVGhyZWFkQ29udGV4dCogQ3VycmVudFRocmVhZENvbnRleHQoKQogewogICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBmbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKGZsYWcsIFtd
IHsKLSAgICAgICAgaW50IGVycm9yID0gcHRocmVhZF9rZXlfY3JlYXRlKCZ0aHJlYWRDb250ZXh0
S2V5LCBbXSAodm9pZCogdGhyZWFkQ29udGV4dCkgewotICAgICAgICAgICAgaWYgKHRocmVhZENv
bnRleHQpCi0gICAgICAgICAgICAgICAgZnJlZSh0aHJlYWRDb250ZXh0KTsKLSAgICAgICAgfSk7
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKCFlcnJvcik7CisgICAgICAgIHRocmVhZENvbnRleHQg
PSBuZXcgVGhyZWFkU3BlY2lmaWM8V2ViVGhyZWFkQ29udGV4dCwgQ2FuQmVHQ1RocmVhZDo6VHJ1
ZT4oKTsKICAgICB9KTsKLQotICAgIFdlYlRocmVhZENvbnRleHQqIHRocmVhZENvbnRleHQgPSAo
V2ViVGhyZWFkQ29udGV4dCopcHRocmVhZF9nZXRzcGVjaWZpYyh0aHJlYWRDb250ZXh0S2V5KTsK
LSAgICBpZiAoIXRocmVhZENvbnRleHQpIHsKLSAgICAgICAgdGhyZWFkQ29udGV4dCA9IHN0YXRp
Y19jYXN0PFdlYlRocmVhZENvbnRleHQqPihjYWxsb2Moc2l6ZW9mKFdlYlRocmVhZENvbnRleHQp
LCAxKSk7Ci0gICAgICAgIHB0aHJlYWRfc2V0c3BlY2lmaWModGhyZWFkQ29udGV4dEtleSwgdGhy
ZWFkQ29udGV4dCk7Ci0gICAgfSAgICAgICAgCi0gICAgcmV0dXJuIHRocmVhZENvbnRleHQ7Cisg
ICAgcmV0dXJuICp0aHJlYWRDb250ZXh0OwogfQogCiBzdGF0aWMgdm9pZCogUnVuV2ViVGhyZWFk
KHZvaWQqKQpAQCAtNjgxLDE4ICs2NDYsNiBAQCBzdGF0aWMgdm9pZCBTdGFydFdlYlRocmVhZCgp
CiAgICAgV2ViQ29yZU9iakNEZWFsbG9jT25XZWJUaHJlYWQoW1dBS1dpbmRvdyBjbGFzc10pOwog
ICAgIFdlYkNvcmVPYmpDRGVhbGxvY1dpdGhXZWJUaHJlYWRMb2NrKFtXQUtWaWV3IGNsYXNzXSk7
CiAKLSAgICBwdGhyZWFkX211dGV4YXR0cl90IG1hdHRyOwotICAgIHB0aHJlYWRfbXV0ZXhhdHRy
X2luaXQoJm1hdHRyKTsKLSAgICBwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZtYXR0ciwgUFRI
UkVBRF9NVVRFWF9SRUNVUlNJVkUpOwotICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgmd2ViTG9jaywg
Jm1hdHRyKTsKLSAgICBwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95KCZtYXR0cik7ICAgICAgICAg
ICAgCi0KLSAgICBwdGhyZWFkX211dGV4YXR0cl90IG11dGV4X2F0dHI7Ci0gICAgcHRocmVhZF9t
dXRleGF0dHJfaW5pdCgmbXV0ZXhfYXR0cik7Ci0gICAgcHRocmVhZF9tdXRleGF0dHJfc2V0dHlw
ZSgmbXV0ZXhfYXR0ciwgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUpOyAgICAKLSAgICBwdGhyZWFk
X211dGV4X2luaXQoJldlYkNvcmVSZWxlYXNlTG9jaywgJm11dGV4X2F0dHIpOwotICAgIHB0aHJl
YWRfbXV0ZXhhdHRyX2Rlc3Ryb3koJm11dGV4X2F0dHIpOwotCiAgICAgQ0ZSdW5Mb29wUmVmIHJ1
bkxvb3AgPSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7CiAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4
dCBkZWxlZ2F0ZVNvdXJjZUNvbnRleHQgPSB7MCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSGFuZGxlRGVsZWdh
dGVTb3VyY2V9OwogICAgIGRlbGVnYXRlU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51
bGxwdHIsIDAsICZkZWxlZ2F0ZVNvdXJjZUNvbnRleHQpOwpAQCAtNzM1LDIxICs2ODgsMTEgQEAg
c3RhdGljIHZvaWQgU3RhcnRXZWJUaHJlYWQoKQogICAgIGluaXRpYWxpemVBcHBsaWNhdGlvblVJ
VGhyZWFkKCk7CiB9CiAKLXN0YXRpYyBpbnQgV2ViVGltZWRDb25kaXRpb25Mb2NrKHB0aHJlYWRf
Y29uZF90KiBjb25kaXRpb24sIHB0aHJlYWRfbXV0ZXhfdCogbG9jaywgQ0ZBYnNvbHV0ZVRpbWUg
aW50ZXJ2YWwpCi17Ci0gICAgc3RydWN0IHRpbWVzcGVjIHRpbWU7Ci0gICAgQ0ZBYnNvbHV0ZVRp
bWUgYXQgPSBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIGludGVydmFsOwotICAgIHRpbWUu
dHZfc2VjID0gKHRpbWVfdCkoZmxvb3IoYXQpICsga0NGQWJzb2x1dGVUaW1lSW50ZXJ2YWxTaW5j
ZTE5NzApOwotICAgIHRpbWUudHZfbnNlYyA9IChpbnQzMl90KSgoYXQgLSBmbG9vcihhdCkpICog
MTAwMDAwMDAwMC4wKTsgICAgICAgIAotICAgIHJldHVybiBwdGhyZWFkX2NvbmRfdGltZWR3YWl0
KGNvbmRpdGlvbiwgbG9jaywgJnRpbWUpOwotfQotCi0KICNpZiBMT0dfV0VCX0xPQ0sgfHwgTE9H
X01BSU5fVEhSRUFEX0xPQ0tJTkcKIHN0YXRpYyB1bnNpZ25lZCBsb2NrQ291bnQ7CiAjZW5kaWYK
IAotc3RhdGljIGJvb2wgX1dlYlRyeVRocmVhZExvY2soYm9vbCBzaG91bGRUcnkpCitzdGF0aWMg
Ym9vbCBfV2ViVGhyZWFkTG9jaygpCiB7CiAgICAgLy8gU3VzcGVuZCB0aGUgd2ViIHRocmVhZCBp
ZiB0aGUgbWFpbiB0aHJlYWQgaXMgdHJ5aW5nIHRvIGxvY2suCiAgICAgYm9vbCBvbk1haW5UaHJl
YWQgPSBwdGhyZWFkX21haW5fbnAoKTsKQEAgLTc1OSw0NSArNzAyLDMyIEBAIHN0YXRpYyBib29s
IF9XZWJUcnlUaHJlYWRMb2NrKGJvb2wgc2hvdWxkVHJ5KQogICAgICAgICBOU0xvZyhAIiVzLCAl
cDogVHJpZWQgdG8gb2J0YWluIHRoZSB3ZWIgbG9jayBmcm9tIGEgdGhyZWFkIG90aGVyIHRoYW4g
dGhlIG1haW4gdGhyZWFkIG9yIHRoZSB3ZWIgdGhyZWFkLiBUaGlzIG1heSBiZSBhIHJlc3VsdCBv
ZiBjYWxsaW5nIHRvIFVJS2l0IGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLiBDcmFzaGluZyBub3cu
Li4iLCBfX1BSRVRUWV9GVU5DVElPTl9fLCBDdXJyZW50VGhyZWFkQ29udGV4dCgpKTsKICAgICAg
ICAgQ1JBU0goKTsKICAgICB9Ci0gICAgICAgIAotICAgICAgICAgICAgCi0gICAgYm9vbCBidXN5
ID0gZmFsc2U7Ci0gICAgaWYgKHNob3VsZFRyeSkgewotICAgICAgICBpbnQgcmVzdWx0ID0gcHRo
cmVhZF9tdXRleF90cnlsb2NrKCZ3ZWJMb2NrKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBFQlVT
WSkKLSAgICAgICAgICAgIGJ1c3kgPSB0cnVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJ0cnkgd2ViIGxvY2sgZmFpbGVkIHdpdGggY29k
ZTolZCIsIHJlc3VsdCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaW50IHJlc3VsdCA9IHB0aHJl
YWRfbXV0ZXhfbG9jaygmd2ViTG9jayk7Ci0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0VfVU5V
U0VEKHJlc3VsdCwgIXJlc3VsdCwgIndlYiBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1
bHQpOwotICAgIH0KLSAgICAKLSAgICBpZiAoIWJ1c3kpIHsKKworICAgIHdlYkxvY2subG9jaygp
OworCiAjaWYgTE9HX1dFQl9MT0NLIHx8IExPR19NQUlOX1RIUkVBRF9MT0NLSU5HCi0gICAgICAg
IGxvY2tDb3VudCsrOworICAgIGxvY2tDb3VudCsrOwogI2lmIExPR19XRUJfTE9DSwotICAgICAg
ICBOU0xvZyhAImxvY2sgICAlZCwgd2ViLXRocmVhZDogJWQiLCBsb2NrQ291bnQsIFdlYlRocmVh
ZElzQ3VycmVudCgpKTsKKyAgICBOU0xvZyhAImxvY2sgICAlZCwgd2ViLXRocmVhZDogJWQiLCBs
b2NrQ291bnQsIFdlYlRocmVhZElzQ3VycmVudCgpKTsKICNlbmRpZgogI2VuZGlmCi0gICAgICAg
IGlmIChvbk1haW5UaHJlYWQpIHsKLSAgICAgICAgICAgIEFTU0VSVChDRlJ1bkxvb3BHZXRDdXJy
ZW50KCkgPT0gQ0ZSdW5Mb29wR2V0TWFpbigpKTsKLSAgICAgICAgICAgIHdlYlRocmVhZFNob3Vs
ZFlpZWxkID0gZmFsc2U7Ci0gICAgICAgICAgICBtYWluVGhyZWFkTG9ja0NvdW50Kys7CisgICAg
aWYgKG9uTWFpblRocmVhZCkgeworICAgICAgICBBU1NFUlQoQ0ZSdW5Mb29wR2V0Q3VycmVudCgp
ID09IENGUnVuTG9vcEdldE1haW4oKSk7CisgICAgICAgIHdlYlRocmVhZFNob3VsZFlpZWxkID0g
ZmFsc2U7CisgICAgICAgIG1haW5UaHJlYWRMb2NrQ291bnQrKzsKICNpZiBMT0dfTUFJTl9USFJF
QURfTE9DS0lORwotICAgICAgICAgICAgaWYgKCFzZW5kaW5nRGVsZWdhdGVNZXNzYWdlICYmIGxv
Y2tDb3VudCA9PSAxKQotICAgICAgICAgICAgICAgIE5TTG9nKEAiTWFpbiB0aHJlYWQgbG9ja2lu
ZyBvdXRzaWRlIG9mIGRlbGVnYXRlIG1lc3NhZ2VzLiIpOworICAgICAgICBpZiAoIXNlbmRpbmdE
ZWxlZ2F0ZU1lc3NhZ2UgJiYgbG9ja0NvdW50ID09IDEpCisgICAgICAgICAgICBOU0xvZyhAIk1h
aW4gdGhyZWFkIGxvY2tpbmcgb3V0c2lkZSBvZiBkZWxlZ2F0ZSBtZXNzYWdlcy4iKTsKICNlbmRp
ZgotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgd2ViVGhyZWFkTG9ja0NvdW50Kys7Ci0g
ICAgICAgICAgICBpZiAod2ViVGhyZWFkTG9ja0NvdW50ID4gMSkgewotICAgICAgICAgICAgICAg
IE5TTG9nKEAiJXMsICVwOiBNdWx0aXBsZSBsb2NrcyBvbiB3ZWIgdGhyZWFkIG5vdCBhbGxvd2Vk
ISBQbGVhc2UgZmlsZSBhIGJ1Zy4gQ3Jhc2hpbmcgbm93Li4uIiwgX19QUkVUVFlfRlVOQ1RJT05f
XywgQ3VycmVudFRocmVhZENvbnRleHQoKSk7Ci0gICAgICAgICAgICAgICAgQ1JBU0goKTsKLSAg
ICAgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB3ZWJUaHJlYWRMb2NrQ291bnQrKzsK
KyAgICAgICAgaWYgKHdlYlRocmVhZExvY2tDb3VudCA+IDEpIHsKKyAgICAgICAgICAgIE5TTG9n
KEAiJXMsICVwOiBNdWx0aXBsZSBsb2NrcyBvbiB3ZWIgdGhyZWFkIG5vdCBhbGxvd2VkISBQbGVh
c2UgZmlsZSBhIGJ1Zy4gQ3Jhc2hpbmcgbm93Li4uIiwgX19QUkVUVFlfRlVOQ1RJT05fXywgQ3Vy
cmVudFRocmVhZENvbnRleHQoKSk7CisgICAgICAgICAgICBDUkFTSCgpOwogICAgICAgICB9CiAg
ICAgfQotICAgIAotICAgIHJldHVybiAhYnVzeTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiB2
b2lkIFdlYlRocmVhZExvY2sodm9pZCkKQEAgLTgzNSw4ICs3NjUsOCBAQCBzdGF0aWMgdm9pZCBf
V2ViVGhyZWFkTG9ja0Zyb21BbnlUaHJlYWQoYm9vbCBzaG91bGRMb2cpCiAgICAgaWYgKHNob3Vs
ZExvZykKICAgICAgICAgTlNMb2coQCIlcywgJXA6IE9idGFpbmluZyB0aGUgd2ViIGxvY2sgZnJv
bSBhIHRocmVhZCBvdGhlciB0aGFuIHRoZSBtYWluIHRocmVhZCBvciB0aGUgd2ViIHRocmVhZC4g
VUlLaXQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQuIiwgX19Q
UkVUVFlfRlVOQ1RJT05fXywgQ3VycmVudFRocmVhZENvbnRleHQoKSk7CiAKLSAgICBwdGhyZWFk
X211dGV4X2xvY2soJndlYkxvY2spOwotICAgIAorICAgIHdlYkxvY2subG9jaygpOworCiAgICAg
Ly8gVGhpcyB1c2VkIGZvciBhbnkgdGhyZWFkIG90aGVyIHRoYW4gdGhlIHdlYiB0aHJlYWQuCiAg
ICAgb3RoZXJUaHJlYWRMb2NrQ291bnQrKzsKICAgICB3ZWJUaHJlYWRTaG91bGRZaWVsZCA9IGZh
bHNlOwpAQCAtODUzLDkgKzc4Myw4IEBAIHZvaWQgV2ViVGhyZWFkVW5sb2NrRnJvbUFueVRocmVh
ZCgpCiAgICAgCiAgICAgQVNTRVJUKG90aGVyVGhyZWFkTG9ja0NvdW50KTsKICAgICBvdGhlclRo
cmVhZExvY2tDb3VudC0tOwotICAgIAotICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X3Vu
bG9jaygmd2ViTG9jayk7IAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0VfVU5VU0VEKHJlc3VsdCwg
IXJlc3VsdCwgIndlYiB1bmxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7CisKKyAg
ICB3ZWJMb2NrLnVubG9jaygpOwogfQogCiB2b2lkIFdlYlRocmVhZFVubG9ja0d1YXJkRm9yTWFp
bCgpCkBAIC04NjcsNyArNzk2LDcgQEAgdm9pZCBXZWJUaHJlYWRVbmxvY2tHdWFyZEZvck1haWwo
KQogICAgIENGUmVsZWFzZShtYWluUnVuTG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIpOwogfQogCi12
b2lkIF9XZWJUaHJlYWRVbmxvY2sodm9pZCkKK3ZvaWQgX1dlYlRocmVhZFVubG9jaygpCiB7CiAj
aWYgTE9HX1dFQl9MT0NLIHx8IExPR19NQUlOX1RIUkVBRF9MT0NLSU5HCiAgICAgbG9ja0NvdW50
LS07CkBAIC04ODMsOSArODEyLDggQEAgdm9pZCBfV2ViVGhyZWFkVW5sb2NrKHZvaWQpCiAgICAg
ICAgIHdlYlRocmVhZExvY2tDb3VudC0tOwogICAgICAgICB3ZWJUaHJlYWRTaG91bGRZaWVsZCA9
IGZhbHNlOwogICAgIH0KLSAgICAKLSAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxv
Y2soJndlYkxvY2spOyAKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChyZXN1bHQsICFy
ZXN1bHQsICJ3ZWIgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOyAgICAKKwor
ICAgIHdlYkxvY2sudW5sb2NrKCk7CiB9CiAKIGJvb2wgV2ViVGhyZWFkSXNMb2NrZWQodm9pZCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328506</attachid>
            <date>2017-12-05 14:55:16 -0800</date>
            <delta_ts>2017-12-05 14:58:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180445-20171206075515.patch</filename>
            <type>text/plain</type>
            <size>21067</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU5NzYwY2UxNTRmMDllNTc3YTJjNmRh
NGFmOTU2Y2QyMjFmYTllMDUuLjkyMWJjMjM2N2I3NWEyZjg5ODM4NmU0MDYxMjEwNDM3YjAxOTk3
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTctMTItMDUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgVXNlIFdURiBMb2NraW5nIHByaW1pdGl2ZXMg
aW4gV2ViVGhyZWFkIGFuZCBkcm9wIHB0aHJlYWRfeHh4IHVzZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNDQ1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGluaXRpYWxpemVyIGZvcm0gdG8gZmls
bCBzdHJ1Y3Qgd2l0aCB6ZXJvIGlmIHN0cnVjdCBkb2VzIG5vdCBoYXZlIGFueSBkZWZhdWx0IGlu
aXRpYWxpemVycy4KKworICAgICAgICAqIHd0Zi9UaHJlYWRTcGVjaWZpYy5oOgorICAgICAgICAo
V1RGOjpUaHJlYWRTcGVjaWZpYzo6RGF0YTo6RGF0YSk6CisKKzIwMTctMTItMDUgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgW1dURl0gUmVtb3ZlIG1f
YXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yIGluIFRocmVhZCBieSBxdWVyeWluZyB0aGUgY29u
ZGl0aW9uIGF0IHRocmVhZCBkZXN0cnVjdGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNDI5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMzI4OWI3NjUxMjlk
MWEyMTE5ODVjNGQ0YmJiM2E4MGNkNjlkZDIxLi4wMTY5ZWIzNDFkNzU3MGJhYTJmYjU3MzQ1NmM5
ZmQ0YzcxMWIzNzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTctMTItMDUgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgVXNlIFdURiBM
b2NraW5nIHByaW1pdGl2ZXMgaW4gV2ViVGhyZWFkIGFuZCBkcm9wIHB0aHJlYWRfeHh4IHVzZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNDQ1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgcmVtb3Zl
IHVzZSBvZiBwdGhyZWFkIGxvY2tpbmcgcHJpbWl0aXZlcyBmcm9tIFdlYlRocmVhZCBpbXBsZW1l
bnRhdGlvbiwKKyAgICAgICAgYW5kIHVzZSBXVEYgTG9jayBhbmQgQ29uZGl0aW9uIGluc3RlYWQu
CisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoSGFuZGxlRGVsZWdhdGVTb3VyY2UpOgor
ICAgICAgICAoU2VuZERlbGVnYXRlTWVzc2FnZSk6CisgICAgICAgIChXZWJUaHJlYWRSdW5Pbk1h
aW5UaHJlYWQpOgorICAgICAgICAoV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKToKKyAgICAgICAg
KFdlYkNvcmVPYmpDRGVhbGxvY09uV2ViVGhyZWFkSW1wbCk6CisgICAgICAgIChXZWJDb3JlT2Jq
Q0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9ja0ltcGwpOgorICAgICAgICAoSGFuZGxlV2ViVGhyZWFk
UmVsZWFzZVNvdXJjZSk6CisgICAgICAgIChfV2ViVGhyZWFkQXV0b0xvY2spOgorICAgICAgICAo
V2ViUnVuTG9vcExvY2tJbnRlcm5hbCk6CisgICAgICAgIChDdXJyZW50VGhyZWFkQ29udGV4dCk6
CisgICAgICAgIChTdGFydFdlYlRocmVhZCk6CisgICAgICAgIChfV2ViVGhyZWFkTG9jayk6Cisg
ICAgICAgIFJlbW92ZSBgc2hvdWxkVHJ5YCBwYXJhbWV0ZXIgc2luY2UgaXQgaXMgYWx3YXlzIGBm
YWxzZWAuIFdlIGNsZWFuIHVwIGNvZGUgYmFzZWQgb24gYHNob3VsZFRyeSA9IGZhbHNlYCwKKyAg
ICAgICAgYW5kIHJlbmFtZSBpdCBmcm9tIF9XZWJUcnlUaHJlYWRMb2NrIHRvIF9XZWJUaHJlYWRM
b2NrIHNpbmNlIGl0IGRvZXMgbm90IHRyeSBub3cuCisKKyAgICAgICAgKF9XZWJUaHJlYWRMb2Nr
RnJvbUFueVRocmVhZCk6CisgICAgICAgIChXZWJUaHJlYWRVbmxvY2tGcm9tQW55VGhyZWFkKToK
KyAgICAgICAgKF9XZWJUaHJlYWRVbmxvY2spOgorICAgICAgICAobG9ja1dlYkNvcmVSZWxlYXNl
TG9jayk6IERlbGV0ZWQuCisgICAgICAgICh1bmxvY2tXZWJDb3JlUmVsZWFzZUxvY2spOiBEZWxl
dGVkLgorICAgICAgICAoV2ViVGltZWRDb25kaXRpb25Mb2NrKTogRGVsZXRlZC4KKyAgICAgICAg
KF9XZWJUcnlUaHJlYWRMb2NrKTogRGVsZXRlZC4KKwogMjAxNy0xMi0wNSAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbnRl
bnQgdmlld3MgZm9yIHJlc291cmNlcyBsb2FkZWQgdGhyb3VnaCBYSFIgZG8gbm90IHJlZmxlY3Qg
ZGVjbGFyZWQgbWltZS10eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRTcGVj
aWZpYy5oIGIvU291cmNlL1dURi93dGYvVGhyZWFkU3BlY2lmaWMuaAppbmRleCAzYTg5NzFjODgx
ZjFhYjBlYzBiNDNjMTg3NjczNmZjMWE2MTllMmI2Li4xYmUxMjA0Y2RkZjY5NDUyMWU4MmE1NzZi
ODg1NDIzN2QwYjU5ZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRTcGVjaWZp
Yy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZFNwZWNpZmljLmgKQEAgLTEwMSw3ICsxMDEs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBDYW5CZUdDVGhyZWFkIGNhbkJlR0NUaHJlYWQgPSBD
YW5CZUdDVGhyZWFkOjpGYWxzZT4gY2xhc3MgVAogICAgICAgICAgICAgLy8gU2V0IHVwIHRocmVh
ZC1zcGVjaWZpYyB2YWx1ZSdzIG1lbW9yeSBwb2ludGVyIGJlZm9yZSBpbnZva2luZyBjb25zdHJ1
Y3RvciwgaW4gY2FzZSBhbnkgZnVuY3Rpb24gaXQgY2FsbHMKICAgICAgICAgICAgIC8vIG5lZWRz
IHRvIGFjY2VzcyB0aGUgdmFsdWUsIHRvIGF2b2lkIHJlY3Vyc2lvbi4KICAgICAgICAgICAgIG93
bmVyLT5zZXRJblRMUyh0aGlzKTsKLSAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgc3RvcmFnZVBv
aW50ZXIoKSkgVDsKKyAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgc3RvcmFnZVBvaW50ZXIoKSkg
VCgpOwogICAgICAgICB9CiAKICAgICAgICAgfkRhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCmluZGV4IGFhYTczNzcxMTBhNWZiNzdh
MjQzZTBiODAwMDlmYTg3ZmI1NTk0MWYuLjdlMTBlMWYzZmU5NWE1ZTljYTNlYjFmZDg1YWZjNmMy
YjkxM2E5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2Vi
Q29yZVRocmVhZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWQubW0KQEAgLTQyLDYgKzQyLDcgQEAKICNpbXBvcnQgPHJ1bnRpbWUvSlNMb2NrLmg+
CiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4K
KyNpbXBvcnQgPHd0Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5oPgogI2ltcG9ydCA8d3RmL1J1bkxv
b3AuaD4KICNpbXBvcnQgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgpAQCAtNTYsMTQgKzU3LDEzIEBACiAjZGVmaW5lIExPR19SRUxFQVNFUyAwCiAK
ICNkZWZpbmUgRGlzdGFudEZ1dHVyZSAgICg4NjQwMC4wICogMjAwMCAqIDM2NS4yNDI1ICsgODY0
MDAuMCkgICAvLyBzYW1lIGFzICtbTlNEYXRlIGRpc3RhbnRGdXR1cmVdCi0jZGVmaW5lIE1heEFy
Z0NvdW50ICAgICAgICAgNQotI2RlZmluZSBEcmF3V2FpdEludGVydmFsICAgICAxMAotI2RlZmlu
ZSBEZWxlZ2F0ZVdhaXRJbnRlcnZhbCAxMAogCi1zdGF0aWMgdm9pZCBfV2ViVGhyZWFkQXV0b0xv
Y2sodm9pZCk7Ci1zdGF0aWMgYm9vbCBfV2ViVHJ5VGhyZWFkTG9jayhib29sIHNob3VsZFRyeSk7
CitzdGF0aWMgY29uc3QgY29uc3RleHByIFNlY29uZHMgRGVsZWdhdGVXYWl0SW50ZXJ2YWwgeyAx
MHMgfTsKKworc3RhdGljIHZvaWQgX1dlYlRocmVhZEF1dG9Mb2NrKCk7CitzdGF0aWMgYm9vbCBf
V2ViVGhyZWFkTG9jaygpOwogc3RhdGljIHZvaWQgX1dlYlRocmVhZExvY2tGcm9tQW55VGhyZWFk
KGJvb2wgc2hvdWxkTG9nKTsKLXN0YXRpYyB2b2lkIF9XZWJUaHJlYWRVbmxvY2sodm9pZCk7Citz
dGF0aWMgdm9pZCBfV2ViVGhyZWFkVW5sb2NrKCk7CiAKIEBpbnRlcmZhY2UgTlNPYmplY3QoRm9y
d2FyZERlY2xhcmF0aW9ucykKIC0odm9pZClfd2ViY29yZV9yZWxlYXNlT25XZWJUaHJlYWQ7CkBA
IC05MSw5ICs5MSwxMiBAQCBleHRlcm4gdm9pZCBOU1BvcEF1dG9yZWxlYXNlUG9vbChOU0F1dG9y
ZWxlYXNlUG9vbE1hcmsgdG9rZW4pOwogfQogI2VuZGlmCiAKLXN0YXRpYyBpbnQgV2ViVGltZWRD
b25kaXRpb25Mb2NrKHB0aHJlYWRfY29uZF90KiBjb25kaXRpb24sIHB0aHJlYWRfbXV0ZXhfdCog
bG9jaywgQ0ZBYnNvbHV0ZVRpbWUgaW50ZXJ2YWwpOwordXNpbmcgU3RhdGljUmVjdXJzaXZlTG9j
ayA9IFdURjo6UmVjdXJzaXZlTG9ja0FkYXB0ZXI8U3RhdGljTG9jaz47CisKK3N0YXRpYyBTdGF0
aWNSZWN1cnNpdmVMb2NrIHdlYkxvY2s7CitzdGF0aWMgU3RhdGljTG9jayB3ZWJUaHJlYWRSZWxl
YXNlTG9jazsKK3N0YXRpYyBTdGF0aWNSZWN1cnNpdmVMb2NrIHdlYkNvcmVSZWxlYXNlTG9jazsK
IAotc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCB3ZWJMb2NrOwogc3RhdGljIE5TQXV0b3JlbGVhc2VQ
b29sTWFyayBhdXRvcmVsZWFzZVBvb2xNYXJrOwogc3RhdGljIENGUnVuTG9vcFJlZiB3ZWJUaHJl
YWRSdW5Mb29wOwogc3RhdGljIE5TUnVuTG9vcCogd2ViVGhyZWFkTlNSdW5Mb29wOwpAQCAtMTA5
LDE0ICsxMTIsMTMgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBJZ25vcmVBdXRvcmVsZWFzZVBvb2wK
IH0gQXV0b3JlbGVhc2VQb29sT3BlcmF0aW9uOwogCi1zdGF0aWMgcHRocmVhZF9tdXRleF90IFdl
YlRocmVhZFJlbGVhc2VMb2NrID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKIHN0YXRpYyBD
RlJ1bkxvb3BTb3VyY2VSZWYgV2ViVGhyZWFkUmVsZWFzZVNvdXJjZTsKIHN0YXRpYyBDRk11dGFi
bGVBcnJheVJlZiBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXk7CiAKIHN0YXRpYyB2b2lkIE1haW5U
aHJlYWRBZG9wdEFuZFJlbGVhc2UoaWQgb2JqKTsKIAotc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBk
ZWxlZ2F0ZUxvY2sgPSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOwotc3RhdGljIHB0aHJlYWRf
Y29uZF90IGRlbGVnYXRlQ29uZGl0aW9uID0gUFRIUkVBRF9DT05EX0lOSVRJQUxJWkVSOworc3Rh
dGljIFN0YXRpY0xvY2sgZGVsZWdhdGVMb2NrOworc3RhdGljIFN0YXRpY0NvbmRpdGlvbiBkZWxl
Z2F0ZUNvbmRpdGlvbjsKIHN0YXRpYyBOU0ludm9jYXRpb24qIGRlbGVnYXRlSW52b2NhdGlvbjsK
IHN0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgZGVsZWdhdGVTb3VyY2UgPSBudWxscHRyOwogc3Rh
dGljIEJPT0wgZGVsZWdhdGVIYW5kbGVkOwpAQCAtMTMwLDE0ICsxMzIsMTIgQEAgc3RhdGljIFN0
YXRpY0xvY2sgc3RhcnR1cExvY2s7CiBzdGF0aWMgU3RhdGljQ29uZGl0aW9uIHN0YXJ0dXBDb25k
aXRpb247CiAKIHN0YXRpYyBXZWJUaHJlYWRDb250ZXh0KiB3ZWJUaHJlYWRDb250ZXh0Owotc3Rh
dGljIHB0aHJlYWRfa2V5X3QgdGhyZWFkQ29udGV4dEtleTsKIHN0YXRpYyB1bnNpZ25lZCBtYWlu
VGhyZWFkTG9ja0NvdW50Owogc3RhdGljIHVuc2lnbmVkIG90aGVyVGhyZWFkTG9ja0NvdW50Owog
c3RhdGljIHVuc2lnbmVkIHNNYWluVGhyZWFkTW9kYWxDb3VudDsKIAogV0VCQ09SRV9FWFBPUlQg
dm9sYXRpbGUgYm9vbCB3ZWJUaHJlYWRTaG91bGRZaWVsZDsKIAotc3RhdGljIHB0aHJlYWRfbXV0
ZXhfdCBXZWJDb3JlUmVsZWFzZUxvY2s7CiBzdGF0aWMgdm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NP
bldlYlRocmVhZEltcGwoaWQgc2VsZiwgU0VMIF9jbWQpOwogc3RhdGljIHZvaWQgV2ViQ29yZU9i
akNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2soQ2xhc3MgY2xzKTsKIHN0YXRpYyB2b2lkIFdlYkNv
cmVPYmpDRGVhbGxvY1dpdGhXZWJUaHJlYWRMb2NrSW1wbChpZCBzZWxmLCBTRUwgX2NtZCk7CkBA
IC0xNjAsMjUgKzE2MCwyMyBAQCBzdGF0aWMgdm9pZCBIYW5kbGVEZWxlZ2F0ZVNvdXJjZSh2b2lk
KikKIAogICAgIF9XZWJUaHJlYWRBdXRvTG9jaygpOwogCi0gICAgaW50IHJlc3VsdCA9IHB0aHJl
YWRfbXV0ZXhfbG9jaygmZGVsZWdhdGVMb2NrKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFy
ZXN1bHQsICJkZWxlZ2F0ZSBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOworICAg
IHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhkZWxlZ2F0ZUxvY2spOwogCiAjaWYg
TE9HX01FU1NBR0VTCi0gICAgaWYgKFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5k
T2ZDbGFzczpbTlNOb3RpZmljYXRpb25DZW50ZXIgY2xhc3NdXSkgewotICAgICAgICBpZCBhcmd1
bWVudDA7Ci0gICAgICAgIFtkZWxlZ2F0ZUludm9jYXRpb24gZ2V0QXJndW1lbnQ6JmFyZ3VtZW50
MCBhdEluZGV4OjBdOwotICAgICAgICBOU0xvZyhAIm5vdGlmaWNhdGlvbiByZWNlaXZlOiAlQCIs
IGFyZ3VtZW50MCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIE5TTG9nKEAiZGVsZWdhdGUgcmVjZWl2
ZTogJUAiLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihbZGVsZWdhdGVJbnZvY2F0aW9uIHNlbGVjdG9y
XSkpOworICAgICAgICBpZiAoW1tkZWxlZ2F0ZUludm9jYXRpb24gdGFyZ2V0XSBpc0tpbmRPZkNs
YXNzOltOU05vdGlmaWNhdGlvbkNlbnRlciBjbGFzc11dKSB7CisgICAgICAgICAgICBpZCBhcmd1
bWVudDA7CisgICAgICAgICAgICBbZGVsZWdhdGVJbnZvY2F0aW9uIGdldEFyZ3VtZW50OiZhcmd1
bWVudDAgYXRJbmRleDowXTsKKyAgICAgICAgICAgIE5TTG9nKEAibm90aWZpY2F0aW9uIHJlY2Vp
dmU6ICVAIiwgYXJndW1lbnQwKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBOU0xvZyhA
ImRlbGVnYXRlIHJlY2VpdmU6ICVAIiwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52
b2NhdGlvbiBzZWxlY3Rvcl0pKTsKICNlbmRpZgogCi0gICAgU2VuZE1lc3NhZ2UoZGVsZWdhdGVJ
bnZvY2F0aW9uKTsKKyAgICAgICAgU2VuZE1lc3NhZ2UoZGVsZWdhdGVJbnZvY2F0aW9uKTsKIAot
ICAgIGRlbGVnYXRlSGFuZGxlZCA9IFlFUzsKLSAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZkZWxl
Z2F0ZUNvbmRpdGlvbik7Ci0KLSAgICByZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmZGVs
ZWdhdGVMb2NrKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJkZWxlZ2F0ZSB1
bmxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7CisgICAgICAgIGRlbGVnYXRlSGFu
ZGxlZCA9IFlFUzsKKyAgICAgICAgZGVsZWdhdGVDb25kaXRpb24ubm90aWZ5T25lKCk7CisgICAg
fQogCiAjaWYgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKICAgICBzZW5kaW5nRGVsZWdhdGVNZXNz
YWdlID0gTk87CkBAIC0xOTMsOCArMTkxLDcgQEAgc3RhdGljIHZvaWQgU2VuZERlbGVnYXRlTWVz
c2FnZShOU0ludm9jYXRpb24qIGludm9jYXRpb24pCiAgICAgfQogCiAgICAgQVNTRVJUKGRlbGVn
YXRlU291cmNlKTsKLSAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF9sb2NrKCZkZWxlZ2F0
ZUxvY2spOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgImRlbGVnYXRlIGxvY2sg
ZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7CisgICAgZGVsZWdhdGVMb2NrLmxvY2soKTsK
IAogICAgIGRlbGVnYXRlSW52b2NhdGlvbiA9IGludm9jYXRpb247CiAgICAgZGVsZWdhdGVIYW5k
bGVkID0gTk87CkBAIC0yMTcsNyArMjE0LDcgQEAgc3RhdGljIHZvaWQgU2VuZERlbGVnYXRlTWVz
c2FnZShOU0ludm9jYXRpb24qIGludm9jYXRpb24pCiAgICAgICAgIENGUnVuTG9vcFdha2VVcChD
RlJ1bkxvb3BHZXRNYWluKCkpOwogCiAgICAgICAgIHdoaWxlICghZGVsZWdhdGVIYW5kbGVkKSB7
Ci0gICAgICAgICAgICBpZiAoV2ViVGltZWRDb25kaXRpb25Mb2NrKCZkZWxlZ2F0ZUNvbmRpdGlv
biwgJmRlbGVnYXRlTG9jaywgRGVsZWdhdGVXYWl0SW50ZXJ2YWwpKSB7CisgICAgICAgICAgICBp
ZiAoIWRlbGVnYXRlQ29uZGl0aW9uLndhaXRGb3IoZGVsZWdhdGVMb2NrLCBEZWxlZ2F0ZVdhaXRJ
bnRlcnZhbCkpIHsKICAgICAgICAgICAgICAgICBpZCBkZWxlZ2F0ZUluZm9ybWF0aW9uOwogICAg
ICAgICAgICAgICAgIGlmIChbW2RlbGVnYXRlSW52b2NhdGlvbiB0YXJnZXRdIGlzS2luZE9mQ2xh
c3M6W05TTm90aWZpY2F0aW9uQ2VudGVyIGNsYXNzXV0pCiAgICAgICAgICAgICAgICAgICAgIFtk
ZWxlZ2F0ZUludm9jYXRpb24gZ2V0QXJndW1lbnQ6JmRlbGVnYXRlSW5mb3JtYXRpb24gYXRJbmRl
eDowXTsKQEAgLTIyNSwxNSArMjIyLDEzIEBAIHN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3Nh
Z2UoTlNJbnZvY2F0aW9uKiBpbnZvY2F0aW9uKQogICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0
ZUluZm9ybWF0aW9uID0gTlNTdHJpbmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbiBz
ZWxlY3Rvcl0pOwogICAgIAogICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIG1vZGUgPSBDRlJ1
bkxvb3BDb3B5Q3VycmVudE1vZGUoQ0ZSdW5Mb29wR2V0TWFpbigpKTsKLSAgICAgICAgICAgICAg
ICBOU0xvZyhAIiVzOiBkZWxlZ2F0ZSAoJUApIGZhaWxlZCB0byByZXR1cm4gYWZ0ZXIgd2FpdGlu
ZyAlZCBzZWNvbmRzLiBtYWluIHJ1biBsb29wIG1vZGU6ICVAIiwgX19QUkVUVFlfRlVOQ1RJT05f
XywgZGVsZWdhdGVJbmZvcm1hdGlvbiwgRGVsZWdhdGVXYWl0SW50ZXJ2YWwsIG1vZGUpOworICAg
ICAgICAgICAgICAgIE5TTG9nKEAiJXM6IGRlbGVnYXRlICglQCkgZmFpbGVkIHRvIHJldHVybiBh
ZnRlciB3YWl0aW5nICVmIHNlY29uZHMuIG1haW4gcnVuIGxvb3AgbW9kZTogJUAiLCBfX1BSRVRU
WV9GVU5DVElPTl9fLCBkZWxlZ2F0ZUluZm9ybWF0aW9uLCBEZWxlZ2F0ZVdhaXRJbnRlcnZhbC5z
ZWNvbmRzKCksIG1vZGUpOwogICAgICAgICAgICAgICAgIGlmIChtb2RlKQogICAgICAgICAgICAg
ICAgICAgICBDRlJlbGVhc2UobW9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAg
ICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJmRlbGVnYXRlTG9jayk7Ci0KLSAgICAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcmVzdWx0LCAiZGVsZWdhdGUgdW5sb2NrIGZhaWxlZCB3
aXRoIGNvZGU6JWQiLCByZXN1bHQpOwotICAgICAgICBfV2ViVHJ5VGhyZWFkTG9jayhmYWxzZSk7
CisgICAgICAgIGRlbGVnYXRlTG9jay51bmxvY2soKTsKKyAgICAgICAgX1dlYlRocmVhZExvY2so
KTsKICAgICB9CiB9CiAKQEAgLTI1Miw3ICsyNDcsNyBAQCB2b2lkIFdlYlRocmVhZFJ1bk9uTWFp
blRocmVhZCh2b2lkKF5kZWxlZ2F0ZUJsb2NrKSgpKQogICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgZGVsZWdhdGVCbG9ja0NvcHkpOwogICAgIEJsb2NrX3JlbGVh
c2UoZGVsZWdhdGVCbG9ja0NvcHkpOwogCi0gICAgX1dlYlRyeVRocmVhZExvY2soZmFsc2UpOwor
ICAgIF9XZWJUaHJlYWRMb2NrKCk7CiB9CiAKIHN0YXRpYyB2b2lkIE1haW5UaHJlYWRBZG9wdEFu
ZFJlbGVhc2UoaWQgb2JqKQpAQCAtMjgxLDI5ICsyNzYsMTMgQEAgdm9pZCBXZWJUaHJlYWRBZG9w
dEFuZFJlbGVhc2UoaWQgb2JqKQogICAgIE5TTG9nKEAiUmVsZWFzZSBzZW5kIFttYWluIHRocmVh
ZF06ICVAIiwgb2JqKTsKICNlbmRpZiAgICAgICAgCiAKLSAgICBpbnQgcmVzdWx0ID0gcHRocmVh
ZF9tdXRleF9sb2NrKCZXZWJUaHJlYWRSZWxlYXNlTG9jayk7Ci0gICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghcmVzdWx0LCAiUmVsZWFzZSBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQp
OworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod2ViVGhyZWFkUmVsZWFzZUxvY2spOwogCiAg
ICAgaWYgKFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSA9PSBuaWwpCiAgICAgICAgIFdlYlRocmVh
ZFJlbGVhc2VPYmpBcnJheSA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvclN5c3Rl
bURlZmF1bHQsIDAsIG51bGxwdHIpOwogICAgIENGQXJyYXlBcHBlbmRWYWx1ZShXZWJUaHJlYWRS
ZWxlYXNlT2JqQXJyYXksIG9iaik7CiAgICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFsKFdlYlRocmVh
ZFJlbGVhc2VTb3VyY2UpOwogICAgIENGUnVuTG9vcFdha2VVcCh3ZWJUaHJlYWRSdW5Mb29wKTsK
LQotICAgIHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZXZWJUaHJlYWRSZWxlYXNlTG9j
ayk7ICAgIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgIlJlbGVhc2UgdW5sb2Nr
IGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQg
bG9ja1dlYkNvcmVSZWxlYXNlTG9jaygpCi17Ci0gICAgaW50IGxvY2tjb2RlID0gcHRocmVhZF9t
dXRleF9sb2NrKCZXZWJDb3JlUmVsZWFzZUxvY2spOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0Vf
VU5VU0VEKGxvY2tjb2RlLCAhbG9ja2NvZGUsICJXZWJDb3JlUmVsZWFzZUxvY2sgbG9jayBmYWls
ZWQgd2l0aCBjb2RlOiVkIiwgbG9ja2NvZGUpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgdW5s
b2NrV2ViQ29yZVJlbGVhc2VMb2NrKCkKLXsKLSAgICBpbnQgbG9ja2NvZGUgPSBwdGhyZWFkX211
dGV4X3VubG9jaygmV2ViQ29yZVJlbGVhc2VMb2NrKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
X1VOVVNFRChsb2NrY29kZSwgIWxvY2tjb2RlLCAiV2ViQ29yZVJlbGVhc2VMb2NrIHVubG9jayBm
YWlsZWQgd2l0aCBjb2RlOiVkIiwgbG9ja2NvZGUpOwogfQogCiB2b2lkIFdlYkNvcmVPYmpDRGVh
bGxvY09uV2ViVGhyZWFkKENsYXNzIGNscykKQEAgLTM2NSw1MCArMzQ0LDQ2IEBAIHZvaWQgV2Vi
Q29yZU9iakNEZWFsbG9jT25XZWJUaHJlYWRJbXBsKGlkIHNlbGYsIFNFTCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKLSAgICBpZiAoW3Nl
bGYgcmV0YWluQ291bnRdID09IDEpIHsKLSAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSByZWZl
cmVuY2UgcmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIHdlIGNhbgotICAgICAgICAvLyBzYWZlbHkg
cmVsZWFzZSB0aGUgV2ViQ29yZVJlbGVhc2VMb2NrIG5vdy4KLSAgICAgICAgdW5sb2NrV2ViQ29y
ZVJlbGVhc2VMb2NrKCk7Ci0gICAgICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkKKyAgICB7
CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod2ViQ29yZVJlbGVhc2VMb2NrKTsKKyAg
ICAgICAgaWYgKFtzZWxmIHJldGFpbkNvdW50XSAhPSAxKSB7CisgICAgICAgICAgICAvLyBUaGlz
IGlzIG5vdCB0aGUgb25seSByZWZlcmVuY2UgcmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIGFub3Ro
ZXIKKyAgICAgICAgICAgIC8vIHRocmVhZCBjb3VsZCBhbHNvIGNhbGwgcmVsZWFzZSAtIGhvbGQg
dGhlIGxvY2sgd2hpbHN0IGNhbGxpbmcKKyAgICAgICAgICAgIC8vIHJlbGVhc2UgdG8gYXZvaWQg
YSByYWNlIGNvbmRpdGlvbi4KICAgICAgICAgICAgIFtzZWxmIF93ZWJjb3JlX3JlbGVhc2VPbldl
YlRocmVhZF07Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdlYlRocmVhZEFkb3B0QW5kUmVs
ZWFzZShzZWxmKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBUaGlzIGlzIG5vdCB0aGUgb25s
eSByZWZlcmVuY2UgcmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIGFub3RoZXIKLSAgICAgICAgLy8g
dGhyZWFkIGNvdWxkIGFsc28gY2FsbCByZWxlYXNlIC0gaG9sZCB0aGUgbG9jayB3aGlsc3QgY2Fs
bGluZwotICAgICAgICAvLyByZWxlYXNlIHRvIGF2b2lkIGEgcmFjZSBjb25kaXRpb24uCi0gICAg
ICAgIFtzZWxmIF93ZWJjb3JlX3JlbGVhc2VPbldlYlRocmVhZF07Ci0gICAgICAgIHVubG9ja1dl
YkNvcmVSZWxlYXNlTG9jaygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgcmVmZXJlbmNlIHJldGFpbmluZyB0aGUgb2JqZWN0LCBz
byB3ZSBjYW4KKyAgICAgICAgLy8gc2FmZWx5IHJlbGVhc2UgdGhlIHdlYkNvcmVSZWxlYXNlTG9j
ayBub3cuCiAgICAgfQorICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkKKyAgICAgICAgW3Nl
bGYgX3dlYmNvcmVfcmVsZWFzZU9uV2ViVGhyZWFkXTsKKyAgICBlbHNlCisgICAgICAgIFdlYlRo
cmVhZEFkb3B0QW5kUmVsZWFzZShzZWxmKTsKIH0KIAogdm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NX
aXRoV2ViVGhyZWFkTG9ja0ltcGwoaWQgc2VsZiwgU0VMKQogewotICAgIGxvY2tXZWJDb3JlUmVs
ZWFzZUxvY2soKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdlYkNvcmVSZWxlYXNlTG9j
ayk7CiAgICAgaWYgKFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpIHx8IDEgIT0gW3NlbGYg
cmV0YWluQ291bnRdKQogICAgICAgICBbc2VsZiBfd2ViY29yZV9yZWxlYXNlV2l0aFdlYlRocmVh
ZExvY2tdOwogICAgIGVsc2UKICAgICAgICAgV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKHNlbGYp
OwotICAgIHVubG9ja1dlYkNvcmVSZWxlYXNlTG9jaygpOwogfQogCiBzdGF0aWMgdm9pZCBIYW5k
bGVXZWJUaHJlYWRSZWxlYXNlU291cmNlKHZvaWQqKQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJ
c0N1cnJlbnQoKSk7CiAKLSAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF9sb2NrKCZXZWJU
aHJlYWRSZWxlYXNlTG9jayk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcmVzdWx0LCAiUmVs
ZWFzZSBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwotCiAgICAgQ0ZNdXRhYmxl
QXJyYXlSZWYgb2JqZWN0cyA9IG51bGxwdHI7Ci0gICAgaWYgKENGQXJyYXlHZXRDb3VudChXZWJU
aHJlYWRSZWxlYXNlT2JqQXJyYXkpKSB7Ci0gICAgICAgIG9iamVjdHMgPSBDRkFycmF5Q3JlYXRl
TXV0YWJsZUNvcHkobnVsbHB0ciwgMCwgV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KTsKLSAgICAg
ICAgQ0ZBcnJheVJlbW92ZUFsbFZhbHVlcyhXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpOworICAg
IHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3ZWJUaHJlYWRSZWxlYXNlTG9jayk7
CisgICAgICAgIGlmIChDRkFycmF5R2V0Q291bnQoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KSkg
eworICAgICAgICAgICAgb2JqZWN0cyA9IENGQXJyYXlDcmVhdGVNdXRhYmxlQ29weShudWxscHRy
LCAwLCBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpOworICAgICAgICAgICAgQ0ZBcnJheVJlbW92
ZUFsbFZhbHVlcyhXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpOworICAgICAgICB9CiAgICAgfQog
Ci0gICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJldlYlRocmVhZFJlbGVhc2VMb2Nr
KTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJSZWxlYXNlIHVubG9jayBmYWls
ZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKLQogICAgIGlmICghb2JqZWN0cykKICAgICAgICAg
cmV0dXJuOwogCkBAIC00ODIsMTQgKzQ1NywxNCBAQCBzdGF0aWMgdm9pZCBfV2ViVGhyZWFkQXV0
b0xvY2sodm9pZCkKIAogICAgIGlmICghbWFpblRocmVhZExvY2tDb3VudCkgewogICAgICAgICBD
RlJ1bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0
b1VubG9ja09ic2VydmVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOyAgICAKLSAgICAgICAgX1dl
YlRyeVRocmVhZExvY2soZmFsc2UpOworICAgICAgICBfV2ViVGhyZWFkTG9jaygpOwogICAgICAg
ICBDRlJ1bkxvb3BXYWtlVXAoQ0ZSdW5Mb29wR2V0TWFpbigpKTsKICAgICB9CiB9CiAKIHN0YXRp
YyB2b2lkIFdlYlJ1bkxvb3BMb2NrSW50ZXJuYWwoQXV0b3JlbGVhc2VQb29sT3BlcmF0aW9uIHBv
b2xPcGVyYXRpb24pCiB7Ci0gICAgX1dlYlRyeVRocmVhZExvY2soZmFsc2UpOworICAgIF9XZWJU
aHJlYWRMb2NrKCk7CiAgICAgaWYgKHBvb2xPcGVyYXRpb24gPT0gUHVzaE9yUG9wQXV0b3JlbGVh
c2VQb29sKQogICAgICAgICBhdXRvcmVsZWFzZVBvb2xNYXJrID0gTlNQdXNoQXV0b3JlbGVhc2VQ
b29sKDApOwogICAgIGlzV2ViVGhyZWFkTG9ja2VkID0gWUVTOwpAQCAtNTkzLDIzICs1NjgsMTQg
QEAgdm9pZCBXZWJSdW5Mb29wRGlzYWJsZU5lc3RlZCgpCiAgICAgaXNOZXN0ZWRXZWJUaHJlYWRS
dW5Mb29wID0gTk87CiB9CiAKLXN0YXRpYyBXZWJUaHJlYWRDb250ZXh0KiBDdXJyZW50VGhyZWFk
Q29udGV4dCh2b2lkKQorc3RhdGljIFRocmVhZFNwZWNpZmljPFdlYlRocmVhZENvbnRleHQsIENh
bkJlR0NUaHJlYWQ6OlRydWU+KiB0aHJlYWRDb250ZXh0Oworc3RhdGljIFdlYlRocmVhZENvbnRl
eHQqIEN1cnJlbnRUaHJlYWRDb250ZXh0KCkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
ZmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShmbGFnLCBbXSB7Ci0gICAgICAgIGludCBlcnJvciA9
IHB0aHJlYWRfa2V5X2NyZWF0ZSgmdGhyZWFkQ29udGV4dEtleSwgW10gKHZvaWQqIHRocmVhZENv
bnRleHQpIHsKLSAgICAgICAgICAgIGlmICh0aHJlYWRDb250ZXh0KQotICAgICAgICAgICAgICAg
IGZyZWUodGhyZWFkQ29udGV4dCk7Ci0gICAgICAgIH0pOwotICAgICAgICBSRUxFQVNFX0FTU0VS
VCghZXJyb3IpOworICAgICAgICB0aHJlYWRDb250ZXh0ID0gbmV3IFRocmVhZFNwZWNpZmljPFdl
YlRocmVhZENvbnRleHQsIENhbkJlR0NUaHJlYWQ6OlRydWU+KCk7CiAgICAgfSk7Ci0KLSAgICBX
ZWJUaHJlYWRDb250ZXh0KiB0aHJlYWRDb250ZXh0ID0gKFdlYlRocmVhZENvbnRleHQqKXB0aHJl
YWRfZ2V0c3BlY2lmaWModGhyZWFkQ29udGV4dEtleSk7Ci0gICAgaWYgKCF0aHJlYWRDb250ZXh0
KSB7Ci0gICAgICAgIHRocmVhZENvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJUaHJlYWRDb250ZXh0
Kj4oY2FsbG9jKHNpemVvZihXZWJUaHJlYWRDb250ZXh0KSwgMSkpOwotICAgICAgICBwdGhyZWFk
X3NldHNwZWNpZmljKHRocmVhZENvbnRleHRLZXksIHRocmVhZENvbnRleHQpOwotICAgIH0gICAg
ICAgIAotICAgIHJldHVybiB0aHJlYWRDb250ZXh0OworICAgIHJldHVybiAqdGhyZWFkQ29udGV4
dDsKIH0KIAogc3RhdGljIHZvaWQqIFJ1bldlYlRocmVhZCh2b2lkKikKQEAgLTY4MSwxOCArNjQ3
LDYgQEAgc3RhdGljIHZvaWQgU3RhcnRXZWJUaHJlYWQoKQogICAgIFdlYkNvcmVPYmpDRGVhbGxv
Y09uV2ViVGhyZWFkKFtXQUtXaW5kb3cgY2xhc3NdKTsKICAgICBXZWJDb3JlT2JqQ0RlYWxsb2NX
aXRoV2ViVGhyZWFkTG9jayhbV0FLVmlldyBjbGFzc10pOwogCi0gICAgcHRocmVhZF9tdXRleGF0
dHJfdCBtYXR0cjsKLSAgICBwdGhyZWFkX211dGV4YXR0cl9pbml0KCZtYXR0cik7Ci0gICAgcHRo
cmVhZF9tdXRleGF0dHJfc2V0dHlwZSgmbWF0dHIsIFBUSFJFQURfTVVURVhfUkVDVVJTSVZFKTsK
LSAgICBwdGhyZWFkX211dGV4X2luaXQoJndlYkxvY2ssICZtYXR0cik7Ci0gICAgcHRocmVhZF9t
dXRleGF0dHJfZGVzdHJveSgmbWF0dHIpOyAgICAgICAgICAgIAotCi0gICAgcHRocmVhZF9tdXRl
eGF0dHJfdCBtdXRleF9hdHRyOwotICAgIHB0aHJlYWRfbXV0ZXhhdHRyX2luaXQoJm11dGV4X2F0
dHIpOwotICAgIHB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJm11dGV4X2F0dHIsIFBUSFJFQURf
TVVURVhfUkVDVVJTSVZFKTsgICAgCi0gICAgcHRocmVhZF9tdXRleF9pbml0KCZXZWJDb3JlUmVs
ZWFzZUxvY2ssICZtdXRleF9hdHRyKTsKLSAgICBwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95KCZt
dXRleF9hdHRyKTsKLQogICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gQ0ZSdW5Mb29wR2V0Q3Vy
cmVudCgpOwogICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgZGVsZWdhdGVTb3VyY2VDb250ZXh0
ID0gezAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIEhhbmRsZURlbGVnYXRlU291cmNlfTsKICAgICBkZWxlZ2F0
ZVNvdXJjZSA9IENGUnVuTG9vcFNvdXJjZUNyZWF0ZShudWxscHRyLCAwLCAmZGVsZWdhdGVTb3Vy
Y2VDb250ZXh0KTsKQEAgLTczNSwyMSArNjg5LDExIEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhy
ZWFkKCkKICAgICBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZCgpOwogfQogCi1zdGF0aWMg
aW50IFdlYlRpbWVkQ29uZGl0aW9uTG9jayhwdGhyZWFkX2NvbmRfdCogY29uZGl0aW9uLCBwdGhy
ZWFkX211dGV4X3QqIGxvY2ssIENGQWJzb2x1dGVUaW1lIGludGVydmFsKQotewotICAgIHN0cnVj
dCB0aW1lc3BlYyB0aW1lOwotICAgIENGQWJzb2x1dGVUaW1lIGF0ID0gQ0ZBYnNvbHV0ZVRpbWVH
ZXRDdXJyZW50KCkgKyBpbnRlcnZhbDsKLSAgICB0aW1lLnR2X3NlYyA9ICh0aW1lX3QpKGZsb29y
KGF0KSArIGtDRkFic29sdXRlVGltZUludGVydmFsU2luY2UxOTcwKTsKLSAgICB0aW1lLnR2X25z
ZWMgPSAoaW50MzJfdCkoKGF0IC0gZmxvb3IoYXQpKSAqIDEwMDAwMDAwMDAuMCk7ICAgICAgICAK
LSAgICByZXR1cm4gcHRocmVhZF9jb25kX3RpbWVkd2FpdChjb25kaXRpb24sIGxvY2ssICZ0aW1l
KTsKLX0KLQotCiAjaWYgTE9HX1dFQl9MT0NLIHx8IExPR19NQUlOX1RIUkVBRF9MT0NLSU5HCiBz
dGF0aWMgdW5zaWduZWQgbG9ja0NvdW50OwogI2VuZGlmCiAKLXN0YXRpYyBib29sIF9XZWJUcnlU
aHJlYWRMb2NrKGJvb2wgc2hvdWxkVHJ5KQorc3RhdGljIGJvb2wgX1dlYlRocmVhZExvY2soKQog
ewogICAgIC8vIFN1c3BlbmQgdGhlIHdlYiB0aHJlYWQgaWYgdGhlIG1haW4gdGhyZWFkIGlzIHRy
eWluZyB0byBsb2NrLgogICAgIGJvb2wgb25NYWluVGhyZWFkID0gcHRocmVhZF9tYWluX25wKCk7
CkBAIC03NTksNDUgKzcwMywzMiBAQCBzdGF0aWMgYm9vbCBfV2ViVHJ5VGhyZWFkTG9jayhib29s
IHNob3VsZFRyeSkKICAgICAgICAgTlNMb2coQCIlcywgJXA6IFRyaWVkIHRvIG9idGFpbiB0aGUg
d2ViIGxvY2sgZnJvbSBhIHRocmVhZCBvdGhlciB0aGFuIHRoZSBtYWluIHRocmVhZCBvciB0aGUg
d2ViIHRocmVhZC4gVGhpcyBtYXkgYmUgYSByZXN1bHQgb2YgY2FsbGluZyB0byBVSUtpdCBmcm9t
IGEgc2Vjb25kYXJ5IHRocmVhZC4gQ3Jhc2hpbmcgbm93Li4uIiwgX19QUkVUVFlfRlVOQ1RJT05f
XywgQ3VycmVudFRocmVhZENvbnRleHQoKSk7CiAgICAgICAgIENSQVNIKCk7CiAgICAgfQotICAg
ICAgICAKLSAgICAgICAgICAgIAotICAgIGJvb2wgYnVzeSA9IGZhbHNlOwotICAgIGlmIChzaG91
bGRUcnkpIHsKLSAgICAgICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaygmd2Vi
TG9jayk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gRUJVU1kpCi0gICAgICAgICAgICBidXN5ID0g
dHJ1ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcmVz
dWx0LCAidHJ5IHdlYiBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X2xvY2soJndlYkxvY2sp
OwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChyZXN1bHQsICFyZXN1bHQsICJ3
ZWIgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKLSAgICB9Ci0gICAgCi0gICAg
aWYgKCFidXN5KSB7CisKKyAgICB3ZWJMb2NrLmxvY2soKTsKKwogI2lmIExPR19XRUJfTE9DSyB8
fCBMT0dfTUFJTl9USFJFQURfTE9DS0lORwotICAgICAgICBsb2NrQ291bnQrKzsKKyAgICBsb2Nr
Q291bnQrKzsKICNpZiBMT0dfV0VCX0xPQ0sKLSAgICAgICAgTlNMb2coQCJsb2NrICAgJWQsIHdl
Yi10aHJlYWQ6ICVkIiwgbG9ja0NvdW50LCBXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CisgICAgTlNM
b2coQCJsb2NrICAgJWQsIHdlYi10aHJlYWQ6ICVkIiwgbG9ja0NvdW50LCBXZWJUaHJlYWRJc0N1
cnJlbnQoKSk7CiAjZW5kaWYKICNlbmRpZgotICAgICAgICBpZiAob25NYWluVGhyZWFkKSB7Ci0g
ICAgICAgICAgICBBU1NFUlQoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpID09IENGUnVuTG9vcEdldE1h
aW4oKSk7Ci0gICAgICAgICAgICB3ZWJUaHJlYWRTaG91bGRZaWVsZCA9IGZhbHNlOwotICAgICAg
ICAgICAgbWFpblRocmVhZExvY2tDb3VudCsrOworICAgIGlmIChvbk1haW5UaHJlYWQpIHsKKyAg
ICAgICAgQVNTRVJUKENGUnVuTG9vcEdldEN1cnJlbnQoKSA9PSBDRlJ1bkxvb3BHZXRNYWluKCkp
OworICAgICAgICB3ZWJUaHJlYWRTaG91bGRZaWVsZCA9IGZhbHNlOworICAgICAgICBtYWluVGhy
ZWFkTG9ja0NvdW50Kys7CiAjaWYgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKLSAgICAgICAgICAg
IGlmICghc2VuZGluZ0RlbGVnYXRlTWVzc2FnZSAmJiBsb2NrQ291bnQgPT0gMSkKLSAgICAgICAg
ICAgICAgICBOU0xvZyhAIk1haW4gdGhyZWFkIGxvY2tpbmcgb3V0c2lkZSBvZiBkZWxlZ2F0ZSBt
ZXNzYWdlcy4iKTsKKyAgICAgICAgaWYgKCFzZW5kaW5nRGVsZWdhdGVNZXNzYWdlICYmIGxvY2tD
b3VudCA9PSAxKQorICAgICAgICAgICAgTlNMb2coQCJNYWluIHRocmVhZCBsb2NraW5nIG91dHNp
ZGUgb2YgZGVsZWdhdGUgbWVzc2FnZXMuIik7CiAjZW5kaWYKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHdlYlRocmVhZExvY2tDb3VudCsrOwotICAgICAgICAgICAgaWYgKHdlYlRocmVh
ZExvY2tDb3VudCA+IDEpIHsKLSAgICAgICAgICAgICAgICBOU0xvZyhAIiVzLCAlcDogTXVsdGlw
bGUgbG9ja3Mgb24gd2ViIHRocmVhZCBub3QgYWxsb3dlZCEgUGxlYXNlIGZpbGUgYSBidWcuIENy
YXNoaW5nIG5vdy4uLiIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIEN1cnJlbnRUaHJlYWRDb250ZXh0
KCkpOwotICAgICAgICAgICAgICAgIENSQVNIKCk7Ci0gICAgICAgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgICAgd2ViVGhyZWFkTG9ja0NvdW50Kys7CisgICAgICAgIGlmICh3ZWJUaHJlYWRM
b2NrQ291bnQgPiAxKSB7CisgICAgICAgICAgICBOU0xvZyhAIiVzLCAlcDogTXVsdGlwbGUgbG9j
a3Mgb24gd2ViIHRocmVhZCBub3QgYWxsb3dlZCEgUGxlYXNlIGZpbGUgYSBidWcuIENyYXNoaW5n
IG5vdy4uLiIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIEN1cnJlbnRUaHJlYWRDb250ZXh0KCkpOwor
ICAgICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICByZXR1cm4g
IWJ1c3k7CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBXZWJUaHJlYWRMb2NrKHZvaWQp
CkBAIC04MzUsOCArNzY2LDggQEAgc3RhdGljIHZvaWQgX1dlYlRocmVhZExvY2tGcm9tQW55VGhy
ZWFkKGJvb2wgc2hvdWxkTG9nKQogICAgIGlmIChzaG91bGRMb2cpCiAgICAgICAgIE5TTG9nKEAi
JXMsICVwOiBPYnRhaW5pbmcgdGhlIHdlYiBsb2NrIGZyb20gYSB0aHJlYWQgb3RoZXIgdGhhbiB0
aGUgbWFpbiB0aHJlYWQgb3IgdGhlIHdlYiB0aHJlYWQuIFVJS2l0IHNob3VsZCBub3QgYmUgY2Fs
bGVkIGZyb20gYSBzZWNvbmRhcnkgdGhyZWFkLiIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIEN1cnJl
bnRUaHJlYWRDb250ZXh0KCkpOwogCi0gICAgcHRocmVhZF9tdXRleF9sb2NrKCZ3ZWJMb2NrKTsK
LSAgICAKKyAgICB3ZWJMb2NrLmxvY2soKTsKKwogICAgIC8vIFRoaXMgdXNlZCBmb3IgYW55IHRo
cmVhZCBvdGhlciB0aGFuIHRoZSB3ZWIgdGhyZWFkLgogICAgIG90aGVyVGhyZWFkTG9ja0NvdW50
Kys7CiAgICAgd2ViVGhyZWFkU2hvdWxkWWllbGQgPSBmYWxzZTsKQEAgLTg1Myw5ICs3ODQsOCBA
QCB2b2lkIFdlYlRocmVhZFVubG9ja0Zyb21BbnlUaHJlYWQoKQogICAgIAogICAgIEFTU0VSVChv
dGhlclRocmVhZExvY2tDb3VudCk7CiAgICAgb3RoZXJUaHJlYWRMb2NrQ291bnQtLTsKLSAgICAK
LSAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJndlYkxvY2spOyAKLSAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChyZXN1bHQsICFyZXN1bHQsICJ3ZWIgdW5sb2NrIGZh
aWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOworCisgICAgd2ViTG9jay51bmxvY2soKTsKIH0K
IAogdm9pZCBXZWJUaHJlYWRVbmxvY2tHdWFyZEZvck1haWwoKQpAQCAtODY3LDcgKzc5Nyw3IEBA
IHZvaWQgV2ViVGhyZWFkVW5sb2NrR3VhcmRGb3JNYWlsKCkKICAgICBDRlJlbGVhc2UobWFpblJ1
bkxvb3BVbmxvY2tHdWFyZE9ic2VydmVyKTsKIH0KIAotdm9pZCBfV2ViVGhyZWFkVW5sb2NrKHZv
aWQpCit2b2lkIF9XZWJUaHJlYWRVbmxvY2soKQogewogI2lmIExPR19XRUJfTE9DSyB8fCBMT0df
TUFJTl9USFJFQURfTE9DS0lORwogICAgIGxvY2tDb3VudC0tOwpAQCAtODgzLDkgKzgxMyw4IEBA
IHZvaWQgX1dlYlRocmVhZFVubG9jayh2b2lkKQogICAgICAgICB3ZWJUaHJlYWRMb2NrQ291bnQt
LTsKICAgICAgICAgd2ViVGhyZWFkU2hvdWxkWWllbGQgPSBmYWxzZTsKICAgICB9Ci0gICAgCi0g
ICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZ3ZWJMb2NrKTsgCi0gICAgQVNT
RVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQocmVzdWx0LCAhcmVzdWx0LCAid2ViIHVubG9jayBmYWls
ZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsgICAgCisKKyAgICB3ZWJMb2NrLnVubG9jaygpOwog
fQogCiBib29sIFdlYlRocmVhZElzTG9ja2VkKHZvaWQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328507</attachid>
            <date>2017-12-05 14:58:49 -0800</date>
            <delta_ts>2017-12-05 15:40:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180445-20171206075848.patch</filename>
            <type>text/plain</type>
            <size>21083</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU5NzYwY2UxNTRmMDllNTc3YTJjNmRh
NGFmOTU2Y2QyMjFmYTllMDUuLjkyMWJjMjM2N2I3NWEyZjg5ODM4NmU0MDYxMjEwNDM3YjAxOTk3
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTctMTItMDUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgVXNlIFdURiBMb2NraW5nIHByaW1pdGl2ZXMg
aW4gV2ViVGhyZWFkIGFuZCBkcm9wIHB0aHJlYWRfeHh4IHVzZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNDQ1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGluaXRpYWxpemVyIGZvcm0gdG8gZmls
bCBzdHJ1Y3Qgd2l0aCB6ZXJvIGlmIHN0cnVjdCBkb2VzIG5vdCBoYXZlIGFueSBkZWZhdWx0IGlu
aXRpYWxpemVycy4KKworICAgICAgICAqIHd0Zi9UaHJlYWRTcGVjaWZpYy5oOgorICAgICAgICAo
V1RGOjpUaHJlYWRTcGVjaWZpYzo6RGF0YTo6RGF0YSk6CisKKzIwMTctMTItMDUgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgW1dURl0gUmVtb3ZlIG1f
YXRvbWljU3RyaW5nVGFibGVEZXN0cnVjdG9yIGluIFRocmVhZCBieSBxdWVyeWluZyB0aGUgY29u
ZGl0aW9uIGF0IHRocmVhZCBkZXN0cnVjdGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNDI5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMzI4OWI3NjUxMjlk
MWEyMTE5ODVjNGQ0YmJiM2E4MGNkNjlkZDIxLi40NzVlOWIwNmM5ZmNmMGMyZmViOGUzY2Q5MmEz
M2I1OWZjMjkxZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTctMTItMDUgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgVXNlIFdURiBM
b2NraW5nIHByaW1pdGl2ZXMgaW4gV2ViVGhyZWFkIGFuZCBkcm9wIHB0aHJlYWRfeHh4IHVzZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNDQ1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgcmVtb3Zl
IHVzZSBvZiBwdGhyZWFkIGxvY2tpbmcgcHJpbWl0aXZlcyBmcm9tIFdlYlRocmVhZCBpbXBsZW1l
bnRhdGlvbiwKKyAgICAgICAgYW5kIHVzZSBXVEYgTG9jayBhbmQgQ29uZGl0aW9uIGluc3RlYWQu
CisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoSGFuZGxlRGVsZWdhdGVTb3VyY2UpOgor
ICAgICAgICAoU2VuZERlbGVnYXRlTWVzc2FnZSk6CisgICAgICAgIChXZWJUaHJlYWRSdW5Pbk1h
aW5UaHJlYWQpOgorICAgICAgICAoV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKToKKyAgICAgICAg
KFdlYkNvcmVPYmpDRGVhbGxvY09uV2ViVGhyZWFkSW1wbCk6CisgICAgICAgIChXZWJDb3JlT2Jq
Q0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9ja0ltcGwpOgorICAgICAgICAoSGFuZGxlV2ViVGhyZWFk
UmVsZWFzZVNvdXJjZSk6CisgICAgICAgIChfV2ViVGhyZWFkQXV0b0xvY2spOgorICAgICAgICAo
V2ViUnVuTG9vcExvY2tJbnRlcm5hbCk6CisgICAgICAgIChDdXJyZW50VGhyZWFkQ29udGV4dCk6
CisgICAgICAgIFVzZSBXVEY6OlRocmVhZFNwZWNpZmljLgorCisgICAgICAgIChTdGFydFdlYlRo
cmVhZCk6CisgICAgICAgIChfV2ViVGhyZWFkTG9jayk6CisgICAgICAgIFJlbW92ZSBgc2hvdWxk
VHJ5YCBwYXJhbWV0ZXIgc2luY2UgaXQgaXMgYWx3YXlzIGBmYWxzZWAuIFdlIGNsZWFuIHVwIGNv
ZGUgYmFzZWQgb24gYHNob3VsZFRyeSA9IGZhbHNlYCwKKyAgICAgICAgYW5kIHJlbmFtZSBpdCBm
cm9tIF9XZWJUcnlUaHJlYWRMb2NrIHRvIF9XZWJUaHJlYWRMb2NrIHNpbmNlIGl0IGRvZXMgbm90
IHRyeSBub3cuCisKKyAgICAgICAgKF9XZWJUaHJlYWRMb2NrRnJvbUFueVRocmVhZCk6CisgICAg
ICAgIChXZWJUaHJlYWRVbmxvY2tGcm9tQW55VGhyZWFkKToKKyAgICAgICAgKF9XZWJUaHJlYWRV
bmxvY2spOgorICAgICAgICAobG9ja1dlYkNvcmVSZWxlYXNlTG9jayk6IERlbGV0ZWQuCisgICAg
ICAgICh1bmxvY2tXZWJDb3JlUmVsZWFzZUxvY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViVGlt
ZWRDb25kaXRpb25Mb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKF9XZWJUcnlUaHJlYWRMb2NrKTog
RGVsZXRlZC4KKwogMjAxNy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbnRlbnQgdmlld3MgZm9yIHJlc291cmNl
cyBsb2FkZWQgdGhyb3VnaCBYSFIgZG8gbm90IHJlZmxlY3QgZGVjbGFyZWQgbWltZS10eXBlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRTcGVjaWZpYy5oIGIvU291cmNlL1dURi93
dGYvVGhyZWFkU3BlY2lmaWMuaAppbmRleCAzYTg5NzFjODgxZjFhYjBlYzBiNDNjMTg3NjczNmZj
MWE2MTllMmI2Li4xYmUxMjA0Y2RkZjY5NDUyMWU4MmE1NzZiODg1NDIzN2QwYjU5ZWUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1RocmVhZFNwZWNpZmljLmgKQEAgLTEwMSw3ICsxMDEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBDYW5CZUdDVGhyZWFkIGNhbkJlR0NUaHJlYWQgPSBDYW5CZUdDVGhyZWFkOjpGYWxzZT4g
Y2xhc3MgVAogICAgICAgICAgICAgLy8gU2V0IHVwIHRocmVhZC1zcGVjaWZpYyB2YWx1ZSdzIG1l
bW9yeSBwb2ludGVyIGJlZm9yZSBpbnZva2luZyBjb25zdHJ1Y3RvciwgaW4gY2FzZSBhbnkgZnVu
Y3Rpb24gaXQgY2FsbHMKICAgICAgICAgICAgIC8vIG5lZWRzIHRvIGFjY2VzcyB0aGUgdmFsdWUs
IHRvIGF2b2lkIHJlY3Vyc2lvbi4KICAgICAgICAgICAgIG93bmVyLT5zZXRJblRMUyh0aGlzKTsK
LSAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgc3RvcmFnZVBvaW50ZXIoKSkgVDsKKyAgICAgICAg
ICAgIG5ldyAoTm90TnVsbCwgc3RvcmFnZVBvaW50ZXIoKSkgVCgpOwogICAgICAgICB9CiAKICAg
ICAgICAgfkRhdGEoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dh
ay9XZWJDb3JlVGhyZWFkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJD
b3JlVGhyZWFkLm1tCmluZGV4IGFhYTczNzcxMTBhNWZiNzdhMjQzZTBiODAwMDlmYTg3ZmI1NTk0
MWYuLjA1ZGY1OGIwYjU1MzY0NzM5Mjk3NGM3ZmIwMzNlYTllNWI3Y2ZiNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KQEAgLTQyLDYg
KzQyLDcgQEAKICNpbXBvcnQgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW1wb3J0IDx3dGYvQXNzZXJ0
aW9ucy5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9SZWN1cnNp
dmVMb2NrQWRhcHRlci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9U
aHJlYWRpbmcuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpAQCAtNTYsMTQg
KzU3LDEzIEBACiAjZGVmaW5lIExPR19SRUxFQVNFUyAwCiAKICNkZWZpbmUgRGlzdGFudEZ1dHVy
ZSAgICg4NjQwMC4wICogMjAwMCAqIDM2NS4yNDI1ICsgODY0MDAuMCkgICAvLyBzYW1lIGFzICtb
TlNEYXRlIGRpc3RhbnRGdXR1cmVdCi0jZGVmaW5lIE1heEFyZ0NvdW50ICAgICAgICAgNQotI2Rl
ZmluZSBEcmF3V2FpdEludGVydmFsICAgICAxMAotI2RlZmluZSBEZWxlZ2F0ZVdhaXRJbnRlcnZh
bCAxMAogCi1zdGF0aWMgdm9pZCBfV2ViVGhyZWFkQXV0b0xvY2sodm9pZCk7Ci1zdGF0aWMgYm9v
bCBfV2ViVHJ5VGhyZWFkTG9jayhib29sIHNob3VsZFRyeSk7CitzdGF0aWMgY29uc3QgY29uc3Rl
eHByIFNlY29uZHMgRGVsZWdhdGVXYWl0SW50ZXJ2YWwgeyAxMHMgfTsKKworc3RhdGljIHZvaWQg
X1dlYlRocmVhZEF1dG9Mb2NrKCk7CitzdGF0aWMgdm9pZCBfV2ViVGhyZWFkTG9jaygpOwogc3Rh
dGljIHZvaWQgX1dlYlRocmVhZExvY2tGcm9tQW55VGhyZWFkKGJvb2wgc2hvdWxkTG9nKTsKLXN0
YXRpYyB2b2lkIF9XZWJUaHJlYWRVbmxvY2sodm9pZCk7CitzdGF0aWMgdm9pZCBfV2ViVGhyZWFk
VW5sb2NrKCk7CiAKIEBpbnRlcmZhY2UgTlNPYmplY3QoRm9yd2FyZERlY2xhcmF0aW9ucykKIC0o
dm9pZClfd2ViY29yZV9yZWxlYXNlT25XZWJUaHJlYWQ7CkBAIC05MSw5ICs5MSwxMiBAQCBleHRl
cm4gdm9pZCBOU1BvcEF1dG9yZWxlYXNlUG9vbChOU0F1dG9yZWxlYXNlUG9vbE1hcmsgdG9rZW4p
OwogfQogI2VuZGlmCiAKLXN0YXRpYyBpbnQgV2ViVGltZWRDb25kaXRpb25Mb2NrKHB0aHJlYWRf
Y29uZF90KiBjb25kaXRpb24sIHB0aHJlYWRfbXV0ZXhfdCogbG9jaywgQ0ZBYnNvbHV0ZVRpbWUg
aW50ZXJ2YWwpOwordXNpbmcgU3RhdGljUmVjdXJzaXZlTG9jayA9IFdURjo6UmVjdXJzaXZlTG9j
a0FkYXB0ZXI8U3RhdGljTG9jaz47CisKK3N0YXRpYyBTdGF0aWNSZWN1cnNpdmVMb2NrIHdlYkxv
Y2s7CitzdGF0aWMgU3RhdGljTG9jayB3ZWJUaHJlYWRSZWxlYXNlTG9jazsKK3N0YXRpYyBTdGF0
aWNSZWN1cnNpdmVMb2NrIHdlYkNvcmVSZWxlYXNlTG9jazsKIAotc3RhdGljIHB0aHJlYWRfbXV0
ZXhfdCB3ZWJMb2NrOwogc3RhdGljIE5TQXV0b3JlbGVhc2VQb29sTWFyayBhdXRvcmVsZWFzZVBv
b2xNYXJrOwogc3RhdGljIENGUnVuTG9vcFJlZiB3ZWJUaHJlYWRSdW5Mb29wOwogc3RhdGljIE5T
UnVuTG9vcCogd2ViVGhyZWFkTlNSdW5Mb29wOwpAQCAtMTA5LDE0ICsxMTIsMTMgQEAgdHlwZWRl
ZiBlbnVtIHsKICAgICBJZ25vcmVBdXRvcmVsZWFzZVBvb2wKIH0gQXV0b3JlbGVhc2VQb29sT3Bl
cmF0aW9uOwogCi1zdGF0aWMgcHRocmVhZF9tdXRleF90IFdlYlRocmVhZFJlbGVhc2VMb2NrID0g
UFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKIHN0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgV2Vi
VGhyZWFkUmVsZWFzZVNvdXJjZTsKIHN0YXRpYyBDRk11dGFibGVBcnJheVJlZiBXZWJUaHJlYWRS
ZWxlYXNlT2JqQXJyYXk7CiAKIHN0YXRpYyB2b2lkIE1haW5UaHJlYWRBZG9wdEFuZFJlbGVhc2Uo
aWQgb2JqKTsKIAotc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBkZWxlZ2F0ZUxvY2sgPSBQVEhSRUFE
X01VVEVYX0lOSVRJQUxJWkVSOwotc3RhdGljIHB0aHJlYWRfY29uZF90IGRlbGVnYXRlQ29uZGl0
aW9uID0gUFRIUkVBRF9DT05EX0lOSVRJQUxJWkVSOworc3RhdGljIFN0YXRpY0xvY2sgZGVsZWdh
dGVMb2NrOworc3RhdGljIFN0YXRpY0NvbmRpdGlvbiBkZWxlZ2F0ZUNvbmRpdGlvbjsKIHN0YXRp
YyBOU0ludm9jYXRpb24qIGRlbGVnYXRlSW52b2NhdGlvbjsKIHN0YXRpYyBDRlJ1bkxvb3BTb3Vy
Y2VSZWYgZGVsZWdhdGVTb3VyY2UgPSBudWxscHRyOwogc3RhdGljIEJPT0wgZGVsZWdhdGVIYW5k
bGVkOwpAQCAtMTMwLDE0ICsxMzIsMTIgQEAgc3RhdGljIFN0YXRpY0xvY2sgc3RhcnR1cExvY2s7
CiBzdGF0aWMgU3RhdGljQ29uZGl0aW9uIHN0YXJ0dXBDb25kaXRpb247CiAKIHN0YXRpYyBXZWJU
aHJlYWRDb250ZXh0KiB3ZWJUaHJlYWRDb250ZXh0Owotc3RhdGljIHB0aHJlYWRfa2V5X3QgdGhy
ZWFkQ29udGV4dEtleTsKIHN0YXRpYyB1bnNpZ25lZCBtYWluVGhyZWFkTG9ja0NvdW50Owogc3Rh
dGljIHVuc2lnbmVkIG90aGVyVGhyZWFkTG9ja0NvdW50Owogc3RhdGljIHVuc2lnbmVkIHNNYWlu
VGhyZWFkTW9kYWxDb3VudDsKIAogV0VCQ09SRV9FWFBPUlQgdm9sYXRpbGUgYm9vbCB3ZWJUaHJl
YWRTaG91bGRZaWVsZDsKIAotc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBXZWJDb3JlUmVsZWFzZUxv
Y2s7CiBzdGF0aWMgdm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwoaWQgc2Vs
ZiwgU0VMIF9jbWQpOwogc3RhdGljIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVh
ZExvY2soQ2xhc3MgY2xzKTsKIHN0YXRpYyB2b2lkIFdlYkNvcmVPYmpDRGVhbGxvY1dpdGhXZWJU
aHJlYWRMb2NrSW1wbChpZCBzZWxmLCBTRUwgX2NtZCk7CkBAIC0xNjAsMjUgKzE2MCwyMyBAQCBz
dGF0aWMgdm9pZCBIYW5kbGVEZWxlZ2F0ZVNvdXJjZSh2b2lkKikKIAogICAgIF9XZWJUaHJlYWRB
dXRvTG9jaygpOwogCi0gICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfbG9jaygmZGVsZWdh
dGVMb2NrKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJkZWxlZ2F0ZSBsb2Nr
IGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOworICAgIHsKKyAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhkZWxlZ2F0ZUxvY2spOwogCiAjaWYgTE9HX01FU1NBR0VTCi0gICAgaWYg
KFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRp
b25DZW50ZXIgY2xhc3NdXSkgewotICAgICAgICBpZCBhcmd1bWVudDA7Ci0gICAgICAgIFtkZWxl
Z2F0ZUludm9jYXRpb24gZ2V0QXJndW1lbnQ6JmFyZ3VtZW50MCBhdEluZGV4OjBdOwotICAgICAg
ICBOU0xvZyhAIm5vdGlmaWNhdGlvbiByZWNlaXZlOiAlQCIsIGFyZ3VtZW50MCk7Ci0gICAgfSBl
bHNlCi0gICAgICAgIE5TTG9nKEAiZGVsZWdhdGUgcmVjZWl2ZTogJUAiLCBOU1N0cmluZ0Zyb21T
ZWxlY3RvcihbZGVsZWdhdGVJbnZvY2F0aW9uIHNlbGVjdG9yXSkpOworICAgICAgICBpZiAoW1tk
ZWxlZ2F0ZUludm9jYXRpb24gdGFyZ2V0XSBpc0tpbmRPZkNsYXNzOltOU05vdGlmaWNhdGlvbkNl
bnRlciBjbGFzc11dKSB7CisgICAgICAgICAgICBpZCBhcmd1bWVudDA7CisgICAgICAgICAgICBb
ZGVsZWdhdGVJbnZvY2F0aW9uIGdldEFyZ3VtZW50OiZhcmd1bWVudDAgYXRJbmRleDowXTsKKyAg
ICAgICAgICAgIE5TTG9nKEAibm90aWZpY2F0aW9uIHJlY2VpdmU6ICVAIiwgYXJndW1lbnQwKTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBOU0xvZyhAImRlbGVnYXRlIHJlY2VpdmU6ICVA
IiwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbiBzZWxlY3Rvcl0pKTsK
ICNlbmRpZgogCi0gICAgU2VuZE1lc3NhZ2UoZGVsZWdhdGVJbnZvY2F0aW9uKTsKKyAgICAgICAg
U2VuZE1lc3NhZ2UoZGVsZWdhdGVJbnZvY2F0aW9uKTsKIAotICAgIGRlbGVnYXRlSGFuZGxlZCA9
IFlFUzsKLSAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZkZWxlZ2F0ZUNvbmRpdGlvbik7Ci0KLSAg
ICByZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmZGVsZWdhdGVMb2NrKTsKLSAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJkZWxlZ2F0ZSB1bmxvY2sgZmFpbGVkIHdpdGggY29k
ZTolZCIsIHJlc3VsdCk7CisgICAgICAgIGRlbGVnYXRlSGFuZGxlZCA9IFlFUzsKKyAgICAgICAg
ZGVsZWdhdGVDb25kaXRpb24ubm90aWZ5T25lKCk7CisgICAgfQogCiAjaWYgTE9HX01BSU5fVEhS
RUFEX0xPQ0tJTkcKICAgICBzZW5kaW5nRGVsZWdhdGVNZXNzYWdlID0gTk87CkBAIC0xOTMsOCAr
MTkxLDcgQEAgc3RhdGljIHZvaWQgU2VuZERlbGVnYXRlTWVzc2FnZShOU0ludm9jYXRpb24qIGlu
dm9jYXRpb24pCiAgICAgfQogCiAgICAgQVNTRVJUKGRlbGVnYXRlU291cmNlKTsKLSAgICBpbnQg
cmVzdWx0ID0gcHRocmVhZF9tdXRleF9sb2NrKCZkZWxlZ2F0ZUxvY2spOwotICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIXJlc3VsdCwgImRlbGVnYXRlIGxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIs
IHJlc3VsdCk7CisgICAgZGVsZWdhdGVMb2NrLmxvY2soKTsKIAogICAgIGRlbGVnYXRlSW52b2Nh
dGlvbiA9IGludm9jYXRpb247CiAgICAgZGVsZWdhdGVIYW5kbGVkID0gTk87CkBAIC0yMTcsNyAr
MjE0LDcgQEAgc3RhdGljIHZvaWQgU2VuZERlbGVnYXRlTWVzc2FnZShOU0ludm9jYXRpb24qIGlu
dm9jYXRpb24pCiAgICAgICAgIENGUnVuTG9vcFdha2VVcChDRlJ1bkxvb3BHZXRNYWluKCkpOwog
CiAgICAgICAgIHdoaWxlICghZGVsZWdhdGVIYW5kbGVkKSB7Ci0gICAgICAgICAgICBpZiAoV2Vi
VGltZWRDb25kaXRpb25Mb2NrKCZkZWxlZ2F0ZUNvbmRpdGlvbiwgJmRlbGVnYXRlTG9jaywgRGVs
ZWdhdGVXYWl0SW50ZXJ2YWwpKSB7CisgICAgICAgICAgICBpZiAoIWRlbGVnYXRlQ29uZGl0aW9u
LndhaXRGb3IoZGVsZWdhdGVMb2NrLCBEZWxlZ2F0ZVdhaXRJbnRlcnZhbCkpIHsKICAgICAgICAg
ICAgICAgICBpZCBkZWxlZ2F0ZUluZm9ybWF0aW9uOwogICAgICAgICAgICAgICAgIGlmIChbW2Rl
bGVnYXRlSW52b2NhdGlvbiB0YXJnZXRdIGlzS2luZE9mQ2xhc3M6W05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGNsYXNzXV0pCiAgICAgICAgICAgICAgICAgICAgIFtkZWxlZ2F0ZUludm9jYXRpb24gZ2V0
QXJndW1lbnQ6JmRlbGVnYXRlSW5mb3JtYXRpb24gYXRJbmRleDowXTsKQEAgLTIyNSwxNSArMjIy
LDEzIEBAIHN0YXRpYyB2b2lkIFNlbmREZWxlZ2F0ZU1lc3NhZ2UoTlNJbnZvY2F0aW9uKiBpbnZv
Y2F0aW9uKQogICAgICAgICAgICAgICAgICAgICBkZWxlZ2F0ZUluZm9ybWF0aW9uID0gTlNTdHJp
bmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52b2NhdGlvbiBzZWxlY3Rvcl0pOwogICAgIAogICAg
ICAgICAgICAgICAgIENGU3RyaW5nUmVmIG1vZGUgPSBDRlJ1bkxvb3BDb3B5Q3VycmVudE1vZGUo
Q0ZSdW5Mb29wR2V0TWFpbigpKTsKLSAgICAgICAgICAgICAgICBOU0xvZyhAIiVzOiBkZWxlZ2F0
ZSAoJUApIGZhaWxlZCB0byByZXR1cm4gYWZ0ZXIgd2FpdGluZyAlZCBzZWNvbmRzLiBtYWluIHJ1
biBsb29wIG1vZGU6ICVAIiwgX19QUkVUVFlfRlVOQ1RJT05fXywgZGVsZWdhdGVJbmZvcm1hdGlv
biwgRGVsZWdhdGVXYWl0SW50ZXJ2YWwsIG1vZGUpOworICAgICAgICAgICAgICAgIE5TTG9nKEAi
JXM6IGRlbGVnYXRlICglQCkgZmFpbGVkIHRvIHJldHVybiBhZnRlciB3YWl0aW5nICVmIHNlY29u
ZHMuIG1haW4gcnVuIGxvb3AgbW9kZTogJUAiLCBfX1BSRVRUWV9GVU5DVElPTl9fLCBkZWxlZ2F0
ZUluZm9ybWF0aW9uLCBEZWxlZ2F0ZVdhaXRJbnRlcnZhbC5zZWNvbmRzKCksIG1vZGUpOwogICAg
ICAgICAgICAgICAgIGlmIChtb2RlKQogICAgICAgICAgICAgICAgICAgICBDRlJlbGVhc2UobW9k
ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgcmVzdWx0ID0gcHRocmVhZF9t
dXRleF91bmxvY2soJmRlbGVnYXRlTG9jayk7Ci0KLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RSghcmVzdWx0LCAiZGVsZWdhdGUgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQp
OwotICAgICAgICBfV2ViVHJ5VGhyZWFkTG9jayhmYWxzZSk7CisgICAgICAgIGRlbGVnYXRlTG9j
ay51bmxvY2soKTsKKyAgICAgICAgX1dlYlRocmVhZExvY2soKTsKICAgICB9CiB9CiAKQEAgLTI1
Miw3ICsyNDcsNyBAQCB2b2lkIFdlYlRocmVhZFJ1bk9uTWFpblRocmVhZCh2b2lkKF5kZWxlZ2F0
ZUJsb2NrKSgpKQogICAgIGRpc3BhdGNoX3N5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
ZGVsZWdhdGVCbG9ja0NvcHkpOwogICAgIEJsb2NrX3JlbGVhc2UoZGVsZWdhdGVCbG9ja0NvcHkp
OwogCi0gICAgX1dlYlRyeVRocmVhZExvY2soZmFsc2UpOworICAgIF9XZWJUaHJlYWRMb2NrKCk7
CiB9CiAKIHN0YXRpYyB2b2lkIE1haW5UaHJlYWRBZG9wdEFuZFJlbGVhc2UoaWQgb2JqKQpAQCAt
MjgxLDI5ICsyNzYsMTMgQEAgdm9pZCBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2UoaWQgb2JqKQog
ICAgIE5TTG9nKEAiUmVsZWFzZSBzZW5kIFttYWluIHRocmVhZF06ICVAIiwgb2JqKTsKICNlbmRp
ZiAgICAgICAgCiAKLSAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF9sb2NrKCZXZWJUaHJl
YWRSZWxlYXNlTG9jayk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcmVzdWx0LCAiUmVsZWFz
ZSBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOworICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sod2ViVGhyZWFkUmVsZWFzZUxvY2spOwogCiAgICAgaWYgKFdlYlRocmVhZFJlbGVh
c2VPYmpBcnJheSA9PSBuaWwpCiAgICAgICAgIFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSA9IENG
QXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvclN5c3RlbURlZmF1bHQsIDAsIG51bGxwdHIp
OwogICAgIENGQXJyYXlBcHBlbmRWYWx1ZShXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXksIG9iaik7
CiAgICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFsKFdlYlRocmVhZFJlbGVhc2VTb3VyY2UpOwogICAg
IENGUnVuTG9vcFdha2VVcCh3ZWJUaHJlYWRSdW5Mb29wKTsKLQotICAgIHJlc3VsdCA9IHB0aHJl
YWRfbXV0ZXhfdW5sb2NrKCZXZWJUaHJlYWRSZWxlYXNlTG9jayk7ICAgIAotICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIXJlc3VsdCwgIlJlbGVhc2UgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQi
LCByZXN1bHQpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgbG9ja1dlYkNvcmVSZWxlYXNlTG9j
aygpCi17Ci0gICAgaW50IGxvY2tjb2RlID0gcHRocmVhZF9tdXRleF9sb2NrKCZXZWJDb3JlUmVs
ZWFzZUxvY2spOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0VfVU5VU0VEKGxvY2tjb2RlLCAhbG9j
a2NvZGUsICJXZWJDb3JlUmVsZWFzZUxvY2sgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgbG9j
a2NvZGUpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgdW5sb2NrV2ViQ29yZVJlbGVhc2VMb2Nr
KCkKLXsKLSAgICBpbnQgbG9ja2NvZGUgPSBwdGhyZWFkX211dGV4X3VubG9jaygmV2ViQ29yZVJl
bGVhc2VMb2NrKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChsb2NrY29kZSwgIWxv
Y2tjb2RlLCAiV2ViQ29yZVJlbGVhc2VMb2NrIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwg
bG9ja2NvZGUpOwogfQogCiB2b2lkIFdlYkNvcmVPYmpDRGVhbGxvY09uV2ViVGhyZWFkKENsYXNz
IGNscykKQEAgLTM2NSw1MCArMzQ0LDQ2IEBAIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jT25XZWJU
aHJlYWRJbXBsKGlkIHNlbGYsIFNFTCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGxv
Y2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKLSAgICBpZiAoW3NlbGYgcmV0YWluQ291bnRdID09IDEp
IHsKLSAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSByZWZlcmVuY2UgcmV0YWluaW5nIHRoZSBv
YmplY3QsIHNvIHdlIGNhbgotICAgICAgICAvLyBzYWZlbHkgcmVsZWFzZSB0aGUgV2ViQ29yZVJl
bGVhc2VMb2NrIG5vdy4KLSAgICAgICAgdW5sb2NrV2ViQ29yZVJlbGVhc2VMb2NrKCk7Ci0gICAg
ICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sod2ViQ29yZVJlbGVhc2VMb2NrKTsKKyAgICAgICAgaWYgKFtzZWxmIHJldGFp
bkNvdW50XSAhPSAxKSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIG5vdCB0aGUgb25seSByZWZl
cmVuY2UgcmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIGFub3RoZXIKKyAgICAgICAgICAgIC8vIHRo
cmVhZCBjb3VsZCBhbHNvIGNhbGwgcmVsZWFzZSAtIGhvbGQgdGhlIGxvY2sgd2hpbHN0IGNhbGxp
bmcKKyAgICAgICAgICAgIC8vIHJlbGVhc2UgdG8gYXZvaWQgYSByYWNlIGNvbmRpdGlvbi4KICAg
ICAgICAgICAgIFtzZWxmIF93ZWJjb3JlX3JlbGVhc2VPbldlYlRocmVhZF07Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIFdlYlRocmVhZEFkb3B0QW5kUmVsZWFzZShzZWxmKTsKLSAgICB9IGVs
c2UgewotICAgICAgICAvLyBUaGlzIGlzIG5vdCB0aGUgb25seSByZWZlcmVuY2UgcmV0YWluaW5n
IHRoZSBvYmplY3QsIHNvIGFub3RoZXIKLSAgICAgICAgLy8gdGhyZWFkIGNvdWxkIGFsc28gY2Fs
bCByZWxlYXNlIC0gaG9sZCB0aGUgbG9jayB3aGlsc3QgY2FsbGluZwotICAgICAgICAvLyByZWxl
YXNlIHRvIGF2b2lkIGEgcmFjZSBjb25kaXRpb24uCi0gICAgICAgIFtzZWxmIF93ZWJjb3JlX3Jl
bGVhc2VPbldlYlRocmVhZF07Ci0gICAgICAgIHVubG9ja1dlYkNvcmVSZWxlYXNlTG9jaygpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8vIFRoaXMgaXMgdGhlIG9u
bHkgcmVmZXJlbmNlIHJldGFpbmluZyB0aGUgb2JqZWN0LCBzbyB3ZSBjYW4KKyAgICAgICAgLy8g
c2FmZWx5IHJlbGVhc2UgdGhlIHdlYkNvcmVSZWxlYXNlTG9jayBub3cuCiAgICAgfQorICAgIGlm
IChXZWJUaHJlYWRJc0N1cnJlbnQoKSkKKyAgICAgICAgW3NlbGYgX3dlYmNvcmVfcmVsZWFzZU9u
V2ViVGhyZWFkXTsKKyAgICBlbHNlCisgICAgICAgIFdlYlRocmVhZEFkb3B0QW5kUmVsZWFzZShz
ZWxmKTsKIH0KIAogdm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9ja0ltcGwo
aWQgc2VsZiwgU0VMKQogewotICAgIGxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKKyAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKHdlYkNvcmVSZWxlYXNlTG9jayk7CiAgICAgaWYgKFdlYlRocmVh
ZElzTG9ja2VkT3JEaXNhYmxlZCgpIHx8IDEgIT0gW3NlbGYgcmV0YWluQ291bnRdKQogICAgICAg
ICBbc2VsZiBfd2ViY29yZV9yZWxlYXNlV2l0aFdlYlRocmVhZExvY2tdOwogICAgIGVsc2UKICAg
ICAgICAgV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKHNlbGYpOwotICAgIHVubG9ja1dlYkNvcmVS
ZWxlYXNlTG9jaygpOwogfQogCiBzdGF0aWMgdm9pZCBIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291
cmNlKHZvaWQqKQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAKLSAgICBp
bnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF9sb2NrKCZXZWJUaHJlYWRSZWxlYXNlTG9jayk7Ci0g
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcmVzdWx0LCAiUmVsZWFzZSBsb2NrIGZhaWxlZCB3aXRo
IGNvZGU6JWQiLCByZXN1bHQpOwotCiAgICAgQ0ZNdXRhYmxlQXJyYXlSZWYgb2JqZWN0cyA9IG51
bGxwdHI7Ci0gICAgaWYgKENGQXJyYXlHZXRDb3VudChXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkp
KSB7Ci0gICAgICAgIG9iamVjdHMgPSBDRkFycmF5Q3JlYXRlTXV0YWJsZUNvcHkobnVsbHB0ciwg
MCwgV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KTsKLSAgICAgICAgQ0ZBcnJheVJlbW92ZUFsbFZh
bHVlcyhXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpOworICAgIHsKKyAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayh3ZWJUaHJlYWRSZWxlYXNlTG9jayk7CisgICAgICAgIGlmIChDRkFycmF5
R2V0Q291bnQoV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KSkgeworICAgICAgICAgICAgb2JqZWN0
cyA9IENGQXJyYXlDcmVhdGVNdXRhYmxlQ29weShudWxscHRyLCAwLCBXZWJUaHJlYWRSZWxlYXNl
T2JqQXJyYXkpOworICAgICAgICAgICAgQ0ZBcnJheVJlbW92ZUFsbFZhbHVlcyhXZWJUaHJlYWRS
ZWxlYXNlT2JqQXJyYXkpOworICAgICAgICB9CiAgICAgfQogCi0gICAgcmVzdWx0ID0gcHRocmVh
ZF9tdXRleF91bmxvY2soJldlYlRocmVhZFJlbGVhc2VMb2NrKTsKLSAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKCFyZXN1bHQsICJSZWxlYXNlIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVz
dWx0KTsKLQogICAgIGlmICghb2JqZWN0cykKICAgICAgICAgcmV0dXJuOwogCkBAIC00ODIsMTQg
KzQ1NywxNCBAQCBzdGF0aWMgdm9pZCBfV2ViVGhyZWFkQXV0b0xvY2sodm9pZCkKIAogICAgIGlm
ICghbWFpblRocmVhZExvY2tDb3VudCkgewogICAgICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihD
RlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5SdW5Mb29wQXV0b1VubG9ja09ic2VydmVyLCBrQ0ZS
dW5Mb29wQ29tbW9uTW9kZXMpOyAgICAKLSAgICAgICAgX1dlYlRyeVRocmVhZExvY2soZmFsc2Up
OworICAgICAgICBfV2ViVGhyZWFkTG9jaygpOwogICAgICAgICBDRlJ1bkxvb3BXYWtlVXAoQ0ZS
dW5Mb29wR2V0TWFpbigpKTsKICAgICB9CiB9CiAKIHN0YXRpYyB2b2lkIFdlYlJ1bkxvb3BMb2Nr
SW50ZXJuYWwoQXV0b3JlbGVhc2VQb29sT3BlcmF0aW9uIHBvb2xPcGVyYXRpb24pCiB7Ci0gICAg
X1dlYlRyeVRocmVhZExvY2soZmFsc2UpOworICAgIF9XZWJUaHJlYWRMb2NrKCk7CiAgICAgaWYg
KHBvb2xPcGVyYXRpb24gPT0gUHVzaE9yUG9wQXV0b3JlbGVhc2VQb29sKQogICAgICAgICBhdXRv
cmVsZWFzZVBvb2xNYXJrID0gTlNQdXNoQXV0b3JlbGVhc2VQb29sKDApOwogICAgIGlzV2ViVGhy
ZWFkTG9ja2VkID0gWUVTOwpAQCAtNTkzLDIzICs1NjgsMTQgQEAgdm9pZCBXZWJSdW5Mb29wRGlz
YWJsZU5lc3RlZCgpCiAgICAgaXNOZXN0ZWRXZWJUaHJlYWRSdW5Mb29wID0gTk87CiB9CiAKLXN0
YXRpYyBXZWJUaHJlYWRDb250ZXh0KiBDdXJyZW50VGhyZWFkQ29udGV4dCh2b2lkKQorc3RhdGlj
IFRocmVhZFNwZWNpZmljPFdlYlRocmVhZENvbnRleHQsIENhbkJlR0NUaHJlYWQ6OlRydWU+KiB0
aHJlYWRDb250ZXh0Oworc3RhdGljIFdlYlRocmVhZENvbnRleHQqIEN1cnJlbnRUaHJlYWRDb250
ZXh0KCkKIHsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgZmxhZzsKICAgICBzdGQ6OmNhbGxf
b25jZShmbGFnLCBbXSB7Ci0gICAgICAgIGludCBlcnJvciA9IHB0aHJlYWRfa2V5X2NyZWF0ZSgm
dGhyZWFkQ29udGV4dEtleSwgW10gKHZvaWQqIHRocmVhZENvbnRleHQpIHsKLSAgICAgICAgICAg
IGlmICh0aHJlYWRDb250ZXh0KQotICAgICAgICAgICAgICAgIGZyZWUodGhyZWFkQ29udGV4dCk7
Ci0gICAgICAgIH0pOwotICAgICAgICBSRUxFQVNFX0FTU0VSVCghZXJyb3IpOworICAgICAgICB0
aHJlYWRDb250ZXh0ID0gbmV3IFRocmVhZFNwZWNpZmljPFdlYlRocmVhZENvbnRleHQsIENhbkJl
R0NUaHJlYWQ6OlRydWU+KCk7CiAgICAgfSk7Ci0KLSAgICBXZWJUaHJlYWRDb250ZXh0KiB0aHJl
YWRDb250ZXh0ID0gKFdlYlRocmVhZENvbnRleHQqKXB0aHJlYWRfZ2V0c3BlY2lmaWModGhyZWFk
Q29udGV4dEtleSk7Ci0gICAgaWYgKCF0aHJlYWRDb250ZXh0KSB7Ci0gICAgICAgIHRocmVhZENv
bnRleHQgPSBzdGF0aWNfY2FzdDxXZWJUaHJlYWRDb250ZXh0Kj4oY2FsbG9jKHNpemVvZihXZWJU
aHJlYWRDb250ZXh0KSwgMSkpOwotICAgICAgICBwdGhyZWFkX3NldHNwZWNpZmljKHRocmVhZENv
bnRleHRLZXksIHRocmVhZENvbnRleHQpOwotICAgIH0gICAgICAgIAotICAgIHJldHVybiB0aHJl
YWRDb250ZXh0OworICAgIHJldHVybiAqdGhyZWFkQ29udGV4dDsKIH0KIAogc3RhdGljIHZvaWQq
IFJ1bldlYlRocmVhZCh2b2lkKikKQEAgLTY4MSwxOCArNjQ3LDYgQEAgc3RhdGljIHZvaWQgU3Rh
cnRXZWJUaHJlYWQoKQogICAgIFdlYkNvcmVPYmpDRGVhbGxvY09uV2ViVGhyZWFkKFtXQUtXaW5k
b3cgY2xhc3NdKTsKICAgICBXZWJDb3JlT2JqQ0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9jayhbV0FL
VmlldyBjbGFzc10pOwogCi0gICAgcHRocmVhZF9tdXRleGF0dHJfdCBtYXR0cjsKLSAgICBwdGhy
ZWFkX211dGV4YXR0cl9pbml0KCZtYXR0cik7Ci0gICAgcHRocmVhZF9tdXRleGF0dHJfc2V0dHlw
ZSgmbWF0dHIsIFBUSFJFQURfTVVURVhfUkVDVVJTSVZFKTsKLSAgICBwdGhyZWFkX211dGV4X2lu
aXQoJndlYkxvY2ssICZtYXR0cik7Ci0gICAgcHRocmVhZF9tdXRleGF0dHJfZGVzdHJveSgmbWF0
dHIpOyAgICAgICAgICAgIAotCi0gICAgcHRocmVhZF9tdXRleGF0dHJfdCBtdXRleF9hdHRyOwot
ICAgIHB0aHJlYWRfbXV0ZXhhdHRyX2luaXQoJm11dGV4X2F0dHIpOwotICAgIHB0aHJlYWRfbXV0
ZXhhdHRyX3NldHR5cGUoJm11dGV4X2F0dHIsIFBUSFJFQURfTVVURVhfUkVDVVJTSVZFKTsgICAg
Ci0gICAgcHRocmVhZF9tdXRleF9pbml0KCZXZWJDb3JlUmVsZWFzZUxvY2ssICZtdXRleF9hdHRy
KTsKLSAgICBwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95KCZtdXRleF9hdHRyKTsKLQogICAgIENG
UnVuTG9vcFJlZiBydW5Mb29wID0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpOwogICAgIENGUnVuTG9v
cFNvdXJjZUNvbnRleHQgZGVsZWdhdGVTb3VyY2VDb250ZXh0ID0gezAsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IEhhbmRsZURlbGVnYXRlU291cmNlfTsKICAgICBkZWxlZ2F0ZVNvdXJjZSA9IENGUnVuTG9vcFNv
dXJjZUNyZWF0ZShudWxscHRyLCAwLCAmZGVsZWdhdGVTb3VyY2VDb250ZXh0KTsKQEAgLTczNSwy
MSArNjg5LDExIEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkKICAgICBpbml0aWFsaXpl
QXBwbGljYXRpb25VSVRocmVhZCgpOwogfQogCi1zdGF0aWMgaW50IFdlYlRpbWVkQ29uZGl0aW9u
TG9jayhwdGhyZWFkX2NvbmRfdCogY29uZGl0aW9uLCBwdGhyZWFkX211dGV4X3QqIGxvY2ssIENG
QWJzb2x1dGVUaW1lIGludGVydmFsKQotewotICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lOwotICAg
IENGQWJzb2x1dGVUaW1lIGF0ID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBpbnRlcnZh
bDsKLSAgICB0aW1lLnR2X3NlYyA9ICh0aW1lX3QpKGZsb29yKGF0KSArIGtDRkFic29sdXRlVGlt
ZUludGVydmFsU2luY2UxOTcwKTsKLSAgICB0aW1lLnR2X25zZWMgPSAoaW50MzJfdCkoKGF0IC0g
Zmxvb3IoYXQpKSAqIDEwMDAwMDAwMDAuMCk7ICAgICAgICAKLSAgICByZXR1cm4gcHRocmVhZF9j
b25kX3RpbWVkd2FpdChjb25kaXRpb24sIGxvY2ssICZ0aW1lKTsKLX0KLQotCiAjaWYgTE9HX1dF
Ql9MT0NLIHx8IExPR19NQUlOX1RIUkVBRF9MT0NLSU5HCiBzdGF0aWMgdW5zaWduZWQgbG9ja0Nv
dW50OwogI2VuZGlmCiAKLXN0YXRpYyBib29sIF9XZWJUcnlUaHJlYWRMb2NrKGJvb2wgc2hvdWxk
VHJ5KQorc3RhdGljIHZvaWQgX1dlYlRocmVhZExvY2soKQogewogICAgIC8vIFN1c3BlbmQgdGhl
IHdlYiB0aHJlYWQgaWYgdGhlIG1haW4gdGhyZWFkIGlzIHRyeWluZyB0byBsb2NrLgogICAgIGJv
b2wgb25NYWluVGhyZWFkID0gcHRocmVhZF9tYWluX25wKCk7CkBAIC03NTksNDUgKzcwMywzMCBA
QCBzdGF0aWMgYm9vbCBfV2ViVHJ5VGhyZWFkTG9jayhib29sIHNob3VsZFRyeSkKICAgICAgICAg
TlNMb2coQCIlcywgJXA6IFRyaWVkIHRvIG9idGFpbiB0aGUgd2ViIGxvY2sgZnJvbSBhIHRocmVh
ZCBvdGhlciB0aGFuIHRoZSBtYWluIHRocmVhZCBvciB0aGUgd2ViIHRocmVhZC4gVGhpcyBtYXkg
YmUgYSByZXN1bHQgb2YgY2FsbGluZyB0byBVSUtpdCBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZC4g
Q3Jhc2hpbmcgbm93Li4uIiwgX19QUkVUVFlfRlVOQ1RJT05fXywgQ3VycmVudFRocmVhZENvbnRl
eHQoKSk7CiAgICAgICAgIENSQVNIKCk7CiAgICAgfQotICAgICAgICAKLSAgICAgICAgICAgIAot
ICAgIGJvb2wgYnVzeSA9IGZhbHNlOwotICAgIGlmIChzaG91bGRUcnkpIHsKLSAgICAgICAgaW50
IHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaygmd2ViTG9jayk7Ci0gICAgICAgIGlmIChy
ZXN1bHQgPT0gRUJVU1kpCi0gICAgICAgICAgICBidXN5ID0gdHJ1ZTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcmVzdWx0LCAidHJ5IHdlYiBsb2NrIGZh
aWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGludCBy
ZXN1bHQgPSBwdGhyZWFkX211dGV4X2xvY2soJndlYkxvY2spOwotICAgICAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFX1VOVVNFRChyZXN1bHQsICFyZXN1bHQsICJ3ZWIgbG9jayBmYWlsZWQgd2l0aCBj
b2RlOiVkIiwgcmVzdWx0KTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKCFidXN5KSB7CisKKyAgICB3
ZWJMb2NrLmxvY2soKTsKKwogI2lmIExPR19XRUJfTE9DSyB8fCBMT0dfTUFJTl9USFJFQURfTE9D
S0lORwotICAgICAgICBsb2NrQ291bnQrKzsKKyAgICBsb2NrQ291bnQrKzsKICNpZiBMT0dfV0VC
X0xPQ0sKLSAgICAgICAgTlNMb2coQCJsb2NrICAgJWQsIHdlYi10aHJlYWQ6ICVkIiwgbG9ja0Nv
dW50LCBXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CisgICAgTlNMb2coQCJsb2NrICAgJWQsIHdlYi10
aHJlYWQ6ICVkIiwgbG9ja0NvdW50LCBXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAjZW5kaWYKICNl
bmRpZgotICAgICAgICBpZiAob25NYWluVGhyZWFkKSB7Ci0gICAgICAgICAgICBBU1NFUlQoQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpID09IENGUnVuTG9vcEdldE1haW4oKSk7Ci0gICAgICAgICAgICB3
ZWJUaHJlYWRTaG91bGRZaWVsZCA9IGZhbHNlOwotICAgICAgICAgICAgbWFpblRocmVhZExvY2tD
b3VudCsrOworICAgIGlmIChvbk1haW5UaHJlYWQpIHsKKyAgICAgICAgQVNTRVJUKENGUnVuTG9v
cEdldEN1cnJlbnQoKSA9PSBDRlJ1bkxvb3BHZXRNYWluKCkpOworICAgICAgICB3ZWJUaHJlYWRT
aG91bGRZaWVsZCA9IGZhbHNlOworICAgICAgICBtYWluVGhyZWFkTG9ja0NvdW50Kys7CiAjaWYg
TE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKLSAgICAgICAgICAgIGlmICghc2VuZGluZ0RlbGVnYXRl
TWVzc2FnZSAmJiBsb2NrQ291bnQgPT0gMSkKLSAgICAgICAgICAgICAgICBOU0xvZyhAIk1haW4g
dGhyZWFkIGxvY2tpbmcgb3V0c2lkZSBvZiBkZWxlZ2F0ZSBtZXNzYWdlcy4iKTsKKyAgICAgICAg
aWYgKCFzZW5kaW5nRGVsZWdhdGVNZXNzYWdlICYmIGxvY2tDb3VudCA9PSAxKQorICAgICAgICAg
ICAgTlNMb2coQCJNYWluIHRocmVhZCBsb2NraW5nIG91dHNpZGUgb2YgZGVsZWdhdGUgbWVzc2Fn
ZXMuIik7CiAjZW5kaWYKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHdlYlRocmVhZExv
Y2tDb3VudCsrOwotICAgICAgICAgICAgaWYgKHdlYlRocmVhZExvY2tDb3VudCA+IDEpIHsKLSAg
ICAgICAgICAgICAgICBOU0xvZyhAIiVzLCAlcDogTXVsdGlwbGUgbG9ja3Mgb24gd2ViIHRocmVh
ZCBub3QgYWxsb3dlZCEgUGxlYXNlIGZpbGUgYSBidWcuIENyYXNoaW5nIG5vdy4uLiIsIF9fUFJF
VFRZX0ZVTkNUSU9OX18sIEN1cnJlbnRUaHJlYWRDb250ZXh0KCkpOwotICAgICAgICAgICAgICAg
IENSQVNIKCk7Ci0gICAgICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgd2ViVGhyZWFk
TG9ja0NvdW50Kys7CisgICAgICAgIGlmICh3ZWJUaHJlYWRMb2NrQ291bnQgPiAxKSB7CisgICAg
ICAgICAgICBOU0xvZyhAIiVzLCAlcDogTXVsdGlwbGUgbG9ja3Mgb24gd2ViIHRocmVhZCBub3Qg
YWxsb3dlZCEgUGxlYXNlIGZpbGUgYSBidWcuIENyYXNoaW5nIG5vdy4uLiIsIF9fUFJFVFRZX0ZV
TkNUSU9OX18sIEN1cnJlbnRUaHJlYWRDb250ZXh0KCkpOworICAgICAgICAgICAgQ1JBU0goKTsK
ICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICByZXR1cm4gIWJ1c3k7CiB9CiAKIHZvaWQgV2Vi
VGhyZWFkTG9jayh2b2lkKQpAQCAtODM1LDggKzc2NCw4IEBAIHN0YXRpYyB2b2lkIF9XZWJUaHJl
YWRMb2NrRnJvbUFueVRocmVhZChib29sIHNob3VsZExvZykKICAgICBpZiAoc2hvdWxkTG9nKQog
ICAgICAgICBOU0xvZyhAIiVzLCAlcDogT2J0YWluaW5nIHRoZSB3ZWIgbG9jayBmcm9tIGEgdGhy
ZWFkIG90aGVyIHRoYW4gdGhlIG1haW4gdGhyZWFkIG9yIHRoZSB3ZWIgdGhyZWFkLiBVSUtpdCBz
aG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIGEgc2Vjb25kYXJ5IHRocmVhZC4iLCBfX1BSRVRUWV9G
VU5DVElPTl9fLCBDdXJyZW50VGhyZWFkQ29udGV4dCgpKTsKIAotICAgIHB0aHJlYWRfbXV0ZXhf
bG9jaygmd2ViTG9jayk7Ci0gICAgCisgICAgd2ViTG9jay5sb2NrKCk7CisKICAgICAvLyBUaGlz
IHVzZWQgZm9yIGFueSB0aHJlYWQgb3RoZXIgdGhhbiB0aGUgd2ViIHRocmVhZC4KICAgICBvdGhl
clRocmVhZExvY2tDb3VudCsrOwogICAgIHdlYlRocmVhZFNob3VsZFlpZWxkID0gZmFsc2U7CkBA
IC04NTMsOSArNzgyLDggQEAgdm9pZCBXZWJUaHJlYWRVbmxvY2tGcm9tQW55VGhyZWFkKCkKICAg
ICAKICAgICBBU1NFUlQob3RoZXJUaHJlYWRMb2NrQ291bnQpOwogICAgIG90aGVyVGhyZWFkTG9j
a0NvdW50LS07Ci0gICAgCi0gICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZ3
ZWJMb2NrKTsgCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQocmVzdWx0LCAhcmVzdWx0
LCAid2ViIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKKworICAgIHdlYkxv
Y2sudW5sb2NrKCk7CiB9CiAKIHZvaWQgV2ViVGhyZWFkVW5sb2NrR3VhcmRGb3JNYWlsKCkKQEAg
LTg2Nyw3ICs3OTUsNyBAQCB2b2lkIFdlYlRocmVhZFVubG9ja0d1YXJkRm9yTWFpbCgpCiAgICAg
Q0ZSZWxlYXNlKG1haW5SdW5Mb29wVW5sb2NrR3VhcmRPYnNlcnZlcik7CiB9CiAKLXZvaWQgX1dl
YlRocmVhZFVubG9jayh2b2lkKQordm9pZCBfV2ViVGhyZWFkVW5sb2NrKCkKIHsKICNpZiBMT0df
V0VCX0xPQ0sgfHwgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKICAgICBsb2NrQ291bnQtLTsKQEAg
LTg4Myw5ICs4MTEsOCBAQCB2b2lkIF9XZWJUaHJlYWRVbmxvY2sodm9pZCkKICAgICAgICAgd2Vi
VGhyZWFkTG9ja0NvdW50LS07CiAgICAgICAgIHdlYlRocmVhZFNob3VsZFlpZWxkID0gZmFsc2U7
CiAgICAgfQotICAgIAotICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmd2Vi
TG9jayk7IAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0VfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdCwg
IndlYiB1bmxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7ICAgIAorCisgICAgd2Vi
TG9jay51bmxvY2soKTsKIH0KIAogYm9vbCBXZWJUaHJlYWRJc0xvY2tlZCh2b2lkKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328509</attachid>
            <date>2017-12-05 15:40:48 -0800</date>
            <delta_ts>2017-12-07 04:48:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180445-20171206084047.patch</filename>
            <type>text/plain</type>
            <size>21693</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU5NzYwY2UxNTRmMDllNTc3YTJjNmRh
NGFmOTU2Y2QyMjFmYTllMDUuLjlkNGVjMDVjMDg5NGE2YTVmYTk3MWRkZmQ3YzhhOGE5NDhhNmRm
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTctMTItMDUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgVXNlIFdURiBMb2NraW5nIHByaW1pdGl2ZXMg
aW4gV2ViVGhyZWFkIGFuZCBkcm9wIHB0aHJlYWRfeHh4IHVzZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNDQ1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGluaXRpYWxpemVyIGZvcm0gdG8gZmls
bCBzdHJ1Y3Qgd2l0aCB6ZXJvIGlmIHN0cnVjdCBkb2VzIG5vdCBoYXZlIGFueSBkZWZhdWx0IGlu
aXRpYWxpemVycy4KKworICAgICAgICAqIHd0Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5oOgorICAg
ICAgICAoV1RGOjpSZWN1cnNpdmVMb2NrQWRhcHRlcjo6UmVjdXJzaXZlTG9ja0FkYXB0ZXIpOiBE
ZWxldGVkLgorICAgICAgICAqIHd0Zi9UaHJlYWRTcGVjaWZpYy5oOgorICAgICAgICAoV1RGOjpU
aHJlYWRTcGVjaWZpYzo6RGF0YTo6RGF0YSk6CisKKzIwMTctMTItMDUgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgW1dURl0gUmVtb3ZlIG1fYXRvbWlj
U3RyaW5nVGFibGVEZXN0cnVjdG9yIGluIFRocmVhZCBieSBxdWVyeWluZyB0aGUgY29uZGl0aW9u
IGF0IHRocmVhZCBkZXN0cnVjdGlvbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgwNDI5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMzI4OWI3NjUxMjlkMWEyMTE5
ODVjNGQ0YmJiM2E4MGNkNjlkZDIxLi40NzVlOWIwNmM5ZmNmMGMyZmViOGUzY2Q5MmEzM2I1OWZj
MjkxZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTctMTItMDUgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgVXNlIFdURiBMb2NraW5n
IHByaW1pdGl2ZXMgaW4gV2ViVGhyZWFkIGFuZCBkcm9wIHB0aHJlYWRfeHh4IHVzZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNDQ1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgcmVtb3ZlIHVzZSBv
ZiBwdGhyZWFkIGxvY2tpbmcgcHJpbWl0aXZlcyBmcm9tIFdlYlRocmVhZCBpbXBsZW1lbnRhdGlv
biwKKyAgICAgICAgYW5kIHVzZSBXVEYgTG9jayBhbmQgQ29uZGl0aW9uIGluc3RlYWQuCisKKyAg
ICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9X
ZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoSGFuZGxlRGVsZWdhdGVTb3VyY2UpOgorICAgICAg
ICAoU2VuZERlbGVnYXRlTWVzc2FnZSk6CisgICAgICAgIChXZWJUaHJlYWRSdW5Pbk1haW5UaHJl
YWQpOgorICAgICAgICAoV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKToKKyAgICAgICAgKFdlYkNv
cmVPYmpDRGVhbGxvY09uV2ViVGhyZWFkSW1wbCk6CisgICAgICAgIChXZWJDb3JlT2JqQ0RlYWxs
b2NXaXRoV2ViVGhyZWFkTG9ja0ltcGwpOgorICAgICAgICAoSGFuZGxlV2ViVGhyZWFkUmVsZWFz
ZVNvdXJjZSk6CisgICAgICAgIChfV2ViVGhyZWFkQXV0b0xvY2spOgorICAgICAgICAoV2ViUnVu
TG9vcExvY2tJbnRlcm5hbCk6CisgICAgICAgIChDdXJyZW50VGhyZWFkQ29udGV4dCk6CisgICAg
ICAgIFVzZSBXVEY6OlRocmVhZFNwZWNpZmljLgorCisgICAgICAgIChTdGFydFdlYlRocmVhZCk6
CisgICAgICAgIChfV2ViVGhyZWFkTG9jayk6CisgICAgICAgIFJlbW92ZSBgc2hvdWxkVHJ5YCBw
YXJhbWV0ZXIgc2luY2UgaXQgaXMgYWx3YXlzIGBmYWxzZWAuIFdlIGNsZWFuIHVwIGNvZGUgYmFz
ZWQgb24gYHNob3VsZFRyeSA9IGZhbHNlYCwKKyAgICAgICAgYW5kIHJlbmFtZSBpdCBmcm9tIF9X
ZWJUcnlUaHJlYWRMb2NrIHRvIF9XZWJUaHJlYWRMb2NrIHNpbmNlIGl0IGRvZXMgbm90IHRyeSBu
b3cuCisKKyAgICAgICAgKF9XZWJUaHJlYWRMb2NrRnJvbUFueVRocmVhZCk6CisgICAgICAgIChX
ZWJUaHJlYWRVbmxvY2tGcm9tQW55VGhyZWFkKToKKyAgICAgICAgKF9XZWJUaHJlYWRVbmxvY2sp
OgorICAgICAgICAobG9ja1dlYkNvcmVSZWxlYXNlTG9jayk6IERlbGV0ZWQuCisgICAgICAgICh1
bmxvY2tXZWJDb3JlUmVsZWFzZUxvY2spOiBEZWxldGVkLgorICAgICAgICAoV2ViVGltZWRDb25k
aXRpb25Mb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKF9XZWJUcnlUaHJlYWRMb2NrKTogRGVsZXRl
ZC4KKwogMjAxNy0xMi0wNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbnRlbnQgdmlld3MgZm9yIHJlc291cmNlcyBsb2Fk
ZWQgdGhyb3VnaCBYSFIgZG8gbm90IHJlZmxlY3QgZGVjbGFyZWQgbWltZS10eXBlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5oIGIvU291cmNlL1dURi93
dGYvUmVjdXJzaXZlTG9ja0FkYXB0ZXIuaAppbmRleCBkNGZlYjM3MTBhODQ2N2UzN2Y1MDQ4NjU5
OWNmZWNkMjBmMTRjMWE3Li5lMTZjZDNkMDA0OTRhY2QyZGRkMDA0ODk0ZDBjMTRlOWEzZTZmNDYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWN1cnNpdmVMb2NrQWRhcHRlci5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmgKQEAgLTMyLDEwICszMiw2IEBA
IG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWUgTG9ja1R5cGU+CiBjbGFzcyBSZWN1
cnNpdmVMb2NrQWRhcHRlciB7CiBwdWJsaWM6Ci0gICAgUmVjdXJzaXZlTG9ja0FkYXB0ZXIoKQot
ICAgIHsKLSAgICB9Ci0gICAgCiAgICAgdm9pZCBsb2NrKCkKICAgICB7CiAgICAgICAgIFRocmVh
ZCYgbWUgPSBUaHJlYWQ6OmN1cnJlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Ro
cmVhZFNwZWNpZmljLmggYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCmluZGV4IDNh
ODk3MWM4ODFmMWFiMGVjMGI0M2MxODc2NzM2ZmMxYTYxOWUyYjYuLjFiZTEyMDRjZGRmNjk0NTIx
ZTgyYTU3NmI4ODU0MjM3ZDBiNTllZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZFNwZWNpZmljLmgKKysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkU3BlY2lmaWMuaApAQCAtMTAx
LDcgKzEwMSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIENhbkJlR0NUaHJlYWQgY2FuQmVHQ1Ro
cmVhZCA9IENhbkJlR0NUaHJlYWQ6OkZhbHNlPiBjbGFzcyBUCiAgICAgICAgICAgICAvLyBTZXQg
dXAgdGhyZWFkLXNwZWNpZmljIHZhbHVlJ3MgbWVtb3J5IHBvaW50ZXIgYmVmb3JlIGludm9raW5n
IGNvbnN0cnVjdG9yLCBpbiBjYXNlIGFueSBmdW5jdGlvbiBpdCBjYWxscwogICAgICAgICAgICAg
Ly8gbmVlZHMgdG8gYWNjZXNzIHRoZSB2YWx1ZSwgdG8gYXZvaWQgcmVjdXJzaW9uLgogICAgICAg
ICAgICAgb3duZXItPnNldEluVExTKHRoaXMpOwotICAgICAgICAgICAgbmV3IChOb3ROdWxsLCBz
dG9yYWdlUG9pbnRlcigpKSBUOworICAgICAgICAgICAgbmV3IChOb3ROdWxsLCBzdG9yYWdlUG9p
bnRlcigpKSBUKCk7CiAgICAgICAgIH0KIAogICAgICAgICB+RGF0YSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5kZXggYWFhNzM3NzEx
MGE1ZmI3N2EyNDNlMGI4MDAwOWZhODdmYjU1OTQxZi4uYzZmMzhiMjAyNDA4ZjcwMjA4MzNhZjUz
MDNkMDMwMDlhZTk5NDVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93
YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtNDIsNiArNDIsNyBAQAogI2ltcG9ydCA8cnVudGltZS9K
U0xvY2suaD4KICNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRo
cmVhZC5oPgorI2ltcG9ydCA8d3RmL1JlY3Vyc2l2ZUxvY2tBZGFwdGVyLmg+CiAjaW1wb3J0IDx3
dGYvUnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1RocmVhZGluZy5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CkBAIC01NiwxNCArNTcsMTMgQEAKICNkZWZpbmUgTE9HX1JFTEVB
U0VTIDAKIAogI2RlZmluZSBEaXN0YW50RnV0dXJlICAgKDg2NDAwLjAgKiAyMDAwICogMzY1LjI0
MjUgKyA4NjQwMC4wKSAgIC8vIHNhbWUgYXMgK1tOU0RhdGUgZGlzdGFudEZ1dHVyZV0KLSNkZWZp
bmUgTWF4QXJnQ291bnQgICAgICAgICA1Ci0jZGVmaW5lIERyYXdXYWl0SW50ZXJ2YWwgICAgIDEw
Ci0jZGVmaW5lIERlbGVnYXRlV2FpdEludGVydmFsIDEwCiAKLXN0YXRpYyB2b2lkIF9XZWJUaHJl
YWRBdXRvTG9jayh2b2lkKTsKLXN0YXRpYyBib29sIF9XZWJUcnlUaHJlYWRMb2NrKGJvb2wgc2hv
dWxkVHJ5KTsKK3N0YXRpYyBjb25zdCBjb25zdGV4cHIgU2Vjb25kcyBEZWxlZ2F0ZVdhaXRJbnRl
cnZhbCB7IDEwX3MgfTsKKworc3RhdGljIHZvaWQgX1dlYlRocmVhZEF1dG9Mb2NrKCk7CitzdGF0
aWMgdm9pZCBfV2ViVGhyZWFkTG9jaygpOwogc3RhdGljIHZvaWQgX1dlYlRocmVhZExvY2tGcm9t
QW55VGhyZWFkKGJvb2wgc2hvdWxkTG9nKTsKLXN0YXRpYyB2b2lkIF9XZWJUaHJlYWRVbmxvY2so
dm9pZCk7CitzdGF0aWMgdm9pZCBfV2ViVGhyZWFkVW5sb2NrKCk7CiAKIEBpbnRlcmZhY2UgTlNP
YmplY3QoRm9yd2FyZERlY2xhcmF0aW9ucykKIC0odm9pZClfd2ViY29yZV9yZWxlYXNlT25XZWJU
aHJlYWQ7CkBAIC05MSw5ICs5MSwxMiBAQCBleHRlcm4gdm9pZCBOU1BvcEF1dG9yZWxlYXNlUG9v
bChOU0F1dG9yZWxlYXNlUG9vbE1hcmsgdG9rZW4pOwogfQogI2VuZGlmCiAKLXN0YXRpYyBpbnQg
V2ViVGltZWRDb25kaXRpb25Mb2NrKHB0aHJlYWRfY29uZF90KiBjb25kaXRpb24sIHB0aHJlYWRf
bXV0ZXhfdCogbG9jaywgQ0ZBYnNvbHV0ZVRpbWUgaW50ZXJ2YWwpOwordXNpbmcgU3RhdGljUmVj
dXJzaXZlTG9jayA9IFdURjo6UmVjdXJzaXZlTG9ja0FkYXB0ZXI8U3RhdGljTG9jaz47CisKK3N0
YXRpYyBTdGF0aWNSZWN1cnNpdmVMb2NrIHdlYkxvY2s7CitzdGF0aWMgU3RhdGljTG9jayB3ZWJU
aHJlYWRSZWxlYXNlTG9jazsKK3N0YXRpYyBTdGF0aWNSZWN1cnNpdmVMb2NrIHdlYkNvcmVSZWxl
YXNlTG9jazsKIAotc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCB3ZWJMb2NrOwogc3RhdGljIE5TQXV0
b3JlbGVhc2VQb29sTWFyayBhdXRvcmVsZWFzZVBvb2xNYXJrOwogc3RhdGljIENGUnVuTG9vcFJl
ZiB3ZWJUaHJlYWRSdW5Mb29wOwogc3RhdGljIE5TUnVuTG9vcCogd2ViVGhyZWFkTlNSdW5Mb29w
OwpAQCAtMTA5LDE0ICsxMTIsMTMgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBJZ25vcmVBdXRvcmVs
ZWFzZVBvb2wKIH0gQXV0b3JlbGVhc2VQb29sT3BlcmF0aW9uOwogCi1zdGF0aWMgcHRocmVhZF9t
dXRleF90IFdlYlRocmVhZFJlbGVhc2VMb2NrID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsK
IHN0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgV2ViVGhyZWFkUmVsZWFzZVNvdXJjZTsKIHN0YXRp
YyBDRk11dGFibGVBcnJheVJlZiBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXk7CiAKIHN0YXRpYyB2
b2lkIE1haW5UaHJlYWRBZG9wdEFuZFJlbGVhc2UoaWQgb2JqKTsKIAotc3RhdGljIHB0aHJlYWRf
bXV0ZXhfdCBkZWxlZ2F0ZUxvY2sgPSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOwotc3RhdGlj
IHB0aHJlYWRfY29uZF90IGRlbGVnYXRlQ29uZGl0aW9uID0gUFRIUkVBRF9DT05EX0lOSVRJQUxJ
WkVSOworc3RhdGljIFN0YXRpY0xvY2sgZGVsZWdhdGVMb2NrOworc3RhdGljIFN0YXRpY0NvbmRp
dGlvbiBkZWxlZ2F0ZUNvbmRpdGlvbjsKIHN0YXRpYyBOU0ludm9jYXRpb24qIGRlbGVnYXRlSW52
b2NhdGlvbjsKIHN0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgZGVsZWdhdGVTb3VyY2UgPSBudWxs
cHRyOwogc3RhdGljIEJPT0wgZGVsZWdhdGVIYW5kbGVkOwpAQCAtMTMwLDE0ICsxMzIsMTIgQEAg
c3RhdGljIFN0YXRpY0xvY2sgc3RhcnR1cExvY2s7CiBzdGF0aWMgU3RhdGljQ29uZGl0aW9uIHN0
YXJ0dXBDb25kaXRpb247CiAKIHN0YXRpYyBXZWJUaHJlYWRDb250ZXh0KiB3ZWJUaHJlYWRDb250
ZXh0Owotc3RhdGljIHB0aHJlYWRfa2V5X3QgdGhyZWFkQ29udGV4dEtleTsKIHN0YXRpYyB1bnNp
Z25lZCBtYWluVGhyZWFkTG9ja0NvdW50Owogc3RhdGljIHVuc2lnbmVkIG90aGVyVGhyZWFkTG9j
a0NvdW50Owogc3RhdGljIHVuc2lnbmVkIHNNYWluVGhyZWFkTW9kYWxDb3VudDsKIAogV0VCQ09S
RV9FWFBPUlQgdm9sYXRpbGUgYm9vbCB3ZWJUaHJlYWRTaG91bGRZaWVsZDsKIAotc3RhdGljIHB0
aHJlYWRfbXV0ZXhfdCBXZWJDb3JlUmVsZWFzZUxvY2s7CiBzdGF0aWMgdm9pZCBXZWJDb3JlT2Jq
Q0RlYWxsb2NPbldlYlRocmVhZEltcGwoaWQgc2VsZiwgU0VMIF9jbWQpOwogc3RhdGljIHZvaWQg
V2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2soQ2xhc3MgY2xzKTsKIHN0YXRpYyB2
b2lkIFdlYkNvcmVPYmpDRGVhbGxvY1dpdGhXZWJUaHJlYWRMb2NrSW1wbChpZCBzZWxmLCBTRUwg
X2NtZCk7CkBAIC0xNjAsMjUgKzE2MCwyMyBAQCBzdGF0aWMgdm9pZCBIYW5kbGVEZWxlZ2F0ZVNv
dXJjZSh2b2lkKikKIAogICAgIF9XZWJUaHJlYWRBdXRvTG9jaygpOwogCi0gICAgaW50IHJlc3Vs
dCA9IHB0aHJlYWRfbXV0ZXhfbG9jaygmZGVsZWdhdGVMb2NrKTsKLSAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKCFyZXN1bHQsICJkZWxlZ2F0ZSBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1
bHQpOworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhkZWxlZ2F0ZUxvY2sp
OwogCiAjaWYgTE9HX01FU1NBR0VTCi0gICAgaWYgKFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdl
dF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRpb25DZW50ZXIgY2xhc3NdXSkgewotICAgICAg
ICBpZCBhcmd1bWVudDA7Ci0gICAgICAgIFtkZWxlZ2F0ZUludm9jYXRpb24gZ2V0QXJndW1lbnQ6
JmFyZ3VtZW50MCBhdEluZGV4OjBdOwotICAgICAgICBOU0xvZyhAIm5vdGlmaWNhdGlvbiByZWNl
aXZlOiAlQCIsIGFyZ3VtZW50MCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIE5TTG9nKEAiZGVsZWdh
dGUgcmVjZWl2ZTogJUAiLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihbZGVsZWdhdGVJbnZvY2F0aW9u
IHNlbGVjdG9yXSkpOworICAgICAgICBpZiAoW1tkZWxlZ2F0ZUludm9jYXRpb24gdGFyZ2V0XSBp
c0tpbmRPZkNsYXNzOltOU05vdGlmaWNhdGlvbkNlbnRlciBjbGFzc11dKSB7CisgICAgICAgICAg
ICBpZCBhcmd1bWVudDA7CisgICAgICAgICAgICBbZGVsZWdhdGVJbnZvY2F0aW9uIGdldEFyZ3Vt
ZW50OiZhcmd1bWVudDAgYXRJbmRleDowXTsKKyAgICAgICAgICAgIE5TTG9nKEAibm90aWZpY2F0
aW9uIHJlY2VpdmU6ICVAIiwgYXJndW1lbnQwKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBOU0xvZyhAImRlbGVnYXRlIHJlY2VpdmU6ICVAIiwgTlNTdHJpbmdGcm9tU2VsZWN0b3IoW2Rl
bGVnYXRlSW52b2NhdGlvbiBzZWxlY3Rvcl0pKTsKICNlbmRpZgogCi0gICAgU2VuZE1lc3NhZ2Uo
ZGVsZWdhdGVJbnZvY2F0aW9uKTsKKyAgICAgICAgU2VuZE1lc3NhZ2UoZGVsZWdhdGVJbnZvY2F0
aW9uKTsKIAotICAgIGRlbGVnYXRlSGFuZGxlZCA9IFlFUzsKLSAgICBwdGhyZWFkX2NvbmRfc2ln
bmFsKCZkZWxlZ2F0ZUNvbmRpdGlvbik7Ci0KLSAgICByZXN1bHQgPSBwdGhyZWFkX211dGV4X3Vu
bG9jaygmZGVsZWdhdGVMb2NrKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJk
ZWxlZ2F0ZSB1bmxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7CisgICAgICAgIGRl
bGVnYXRlSGFuZGxlZCA9IFlFUzsKKyAgICAgICAgZGVsZWdhdGVDb25kaXRpb24ubm90aWZ5T25l
KCk7CisgICAgfQogCiAjaWYgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKICAgICBzZW5kaW5nRGVs
ZWdhdGVNZXNzYWdlID0gTk87CkBAIC0xOTMsOCArMTkxLDcgQEAgc3RhdGljIHZvaWQgU2VuZERl
bGVnYXRlTWVzc2FnZShOU0ludm9jYXRpb24qIGludm9jYXRpb24pCiAgICAgfQogCiAgICAgQVNT
RVJUKGRlbGVnYXRlU291cmNlKTsKLSAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF9sb2Nr
KCZkZWxlZ2F0ZUxvY2spOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgImRlbGVn
YXRlIGxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7CisgICAgZGVsZWdhdGVMb2Nr
LmxvY2soKTsKIAogICAgIGRlbGVnYXRlSW52b2NhdGlvbiA9IGludm9jYXRpb247CiAgICAgZGVs
ZWdhdGVIYW5kbGVkID0gTk87CkBAIC0yMTcsNyArMjE0LDcgQEAgc3RhdGljIHZvaWQgU2VuZERl
bGVnYXRlTWVzc2FnZShOU0ludm9jYXRpb24qIGludm9jYXRpb24pCiAgICAgICAgIENGUnVuTG9v
cFdha2VVcChDRlJ1bkxvb3BHZXRNYWluKCkpOwogCiAgICAgICAgIHdoaWxlICghZGVsZWdhdGVI
YW5kbGVkKSB7Ci0gICAgICAgICAgICBpZiAoV2ViVGltZWRDb25kaXRpb25Mb2NrKCZkZWxlZ2F0
ZUNvbmRpdGlvbiwgJmRlbGVnYXRlTG9jaywgRGVsZWdhdGVXYWl0SW50ZXJ2YWwpKSB7CisgICAg
ICAgICAgICBpZiAoIWRlbGVnYXRlQ29uZGl0aW9uLndhaXRGb3IoZGVsZWdhdGVMb2NrLCBEZWxl
Z2F0ZVdhaXRJbnRlcnZhbCkpIHsKICAgICAgICAgICAgICAgICBpZCBkZWxlZ2F0ZUluZm9ybWF0
aW9uOwogICAgICAgICAgICAgICAgIGlmIChbW2RlbGVnYXRlSW52b2NhdGlvbiB0YXJnZXRdIGlz
S2luZE9mQ2xhc3M6W05TTm90aWZpY2F0aW9uQ2VudGVyIGNsYXNzXV0pCiAgICAgICAgICAgICAg
ICAgICAgIFtkZWxlZ2F0ZUludm9jYXRpb24gZ2V0QXJndW1lbnQ6JmRlbGVnYXRlSW5mb3JtYXRp
b24gYXRJbmRleDowXTsKQEAgLTIyNSwxNSArMjIyLDEzIEBAIHN0YXRpYyB2b2lkIFNlbmREZWxl
Z2F0ZU1lc3NhZ2UoTlNJbnZvY2F0aW9uKiBpbnZvY2F0aW9uKQogICAgICAgICAgICAgICAgICAg
ICBkZWxlZ2F0ZUluZm9ybWF0aW9uID0gTlNTdHJpbmdGcm9tU2VsZWN0b3IoW2RlbGVnYXRlSW52
b2NhdGlvbiBzZWxlY3Rvcl0pOwogICAgIAogICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIG1v
ZGUgPSBDRlJ1bkxvb3BDb3B5Q3VycmVudE1vZGUoQ0ZSdW5Mb29wR2V0TWFpbigpKTsKLSAgICAg
ICAgICAgICAgICBOU0xvZyhAIiVzOiBkZWxlZ2F0ZSAoJUApIGZhaWxlZCB0byByZXR1cm4gYWZ0
ZXIgd2FpdGluZyAlZCBzZWNvbmRzLiBtYWluIHJ1biBsb29wIG1vZGU6ICVAIiwgX19QUkVUVFlf
RlVOQ1RJT05fXywgZGVsZWdhdGVJbmZvcm1hdGlvbiwgRGVsZWdhdGVXYWl0SW50ZXJ2YWwsIG1v
ZGUpOworICAgICAgICAgICAgICAgIE5TTG9nKEAiJXM6IGRlbGVnYXRlICglQCkgZmFpbGVkIHRv
IHJldHVybiBhZnRlciB3YWl0aW5nICVmIHNlY29uZHMuIG1haW4gcnVuIGxvb3AgbW9kZTogJUAi
LCBfX1BSRVRUWV9GVU5DVElPTl9fLCBkZWxlZ2F0ZUluZm9ybWF0aW9uLCBEZWxlZ2F0ZVdhaXRJ
bnRlcnZhbC5zZWNvbmRzKCksIG1vZGUpOwogICAgICAgICAgICAgICAgIGlmIChtb2RlKQogICAg
ICAgICAgICAgICAgICAgICBDRlJlbGVhc2UobW9kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICAgICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJmRlbGVnYXRlTG9jayk7
Ci0KLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcmVzdWx0LCAiZGVsZWdhdGUgdW5sb2Nr
IGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwotICAgICAgICBfV2ViVHJ5VGhyZWFkTG9j
ayhmYWxzZSk7CisgICAgICAgIGRlbGVnYXRlTG9jay51bmxvY2soKTsKKyAgICAgICAgX1dlYlRo
cmVhZExvY2soKTsKICAgICB9CiB9CiAKQEAgLTI1Miw3ICsyNDcsNyBAQCB2b2lkIFdlYlRocmVh
ZFJ1bk9uTWFpblRocmVhZCh2b2lkKF5kZWxlZ2F0ZUJsb2NrKSgpKQogICAgIGRpc3BhdGNoX3N5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgZGVsZWdhdGVCbG9ja0NvcHkpOwogICAgIEJs
b2NrX3JlbGVhc2UoZGVsZWdhdGVCbG9ja0NvcHkpOwogCi0gICAgX1dlYlRyeVRocmVhZExvY2so
ZmFsc2UpOworICAgIF9XZWJUaHJlYWRMb2NrKCk7CiB9CiAKIHN0YXRpYyB2b2lkIE1haW5UaHJl
YWRBZG9wdEFuZFJlbGVhc2UoaWQgb2JqKQpAQCAtMjgxLDI5ICsyNzYsMTMgQEAgdm9pZCBXZWJU
aHJlYWRBZG9wdEFuZFJlbGVhc2UoaWQgb2JqKQogICAgIE5TTG9nKEAiUmVsZWFzZSBzZW5kIFtt
YWluIHRocmVhZF06ICVAIiwgb2JqKTsKICNlbmRpZiAgICAgICAgCiAKLSAgICBpbnQgcmVzdWx0
ID0gcHRocmVhZF9tdXRleF9sb2NrKCZXZWJUaHJlYWRSZWxlYXNlTG9jayk7Ci0gICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghcmVzdWx0LCAiUmVsZWFzZSBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQi
LCByZXN1bHQpOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod2ViVGhyZWFkUmVsZWFzZUxv
Y2spOwogCiAgICAgaWYgKFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSA9PSBuaWwpCiAgICAgICAg
IFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSA9IENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9j
YXRvclN5c3RlbURlZmF1bHQsIDAsIG51bGxwdHIpOwogICAgIENGQXJyYXlBcHBlbmRWYWx1ZShX
ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXksIG9iaik7CiAgICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFs
KFdlYlRocmVhZFJlbGVhc2VTb3VyY2UpOwogICAgIENGUnVuTG9vcFdha2VVcCh3ZWJUaHJlYWRS
dW5Mb29wKTsKLQotICAgIHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZXZWJUaHJlYWRS
ZWxlYXNlTG9jayk7ICAgIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgIlJlbGVh
c2UgdW5sb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwotfQotCi1zdGF0aWMgaW5s
aW5lIHZvaWQgbG9ja1dlYkNvcmVSZWxlYXNlTG9jaygpCi17Ci0gICAgaW50IGxvY2tjb2RlID0g
cHRocmVhZF9tdXRleF9sb2NrKCZXZWJDb3JlUmVsZWFzZUxvY2spOwotICAgIEFTU0VSVF9XSVRI
X01FU1NBR0VfVU5VU0VEKGxvY2tjb2RlLCAhbG9ja2NvZGUsICJXZWJDb3JlUmVsZWFzZUxvY2sg
bG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgbG9ja2NvZGUpOwotfQotCi1zdGF0aWMgaW5saW5l
IHZvaWQgdW5sb2NrV2ViQ29yZVJlbGVhc2VMb2NrKCkKLXsKLSAgICBpbnQgbG9ja2NvZGUgPSBw
dGhyZWFkX211dGV4X3VubG9jaygmV2ViQ29yZVJlbGVhc2VMb2NrKTsKLSAgICBBU1NFUlRfV0lU
SF9NRVNTQUdFX1VOVVNFRChsb2NrY29kZSwgIWxvY2tjb2RlLCAiV2ViQ29yZVJlbGVhc2VMb2Nr
IHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgbG9ja2NvZGUpOwogfQogCiB2b2lkIFdlYkNv
cmVPYmpDRGVhbGxvY09uV2ViVGhyZWFkKENsYXNzIGNscykKQEAgLTM2NSw1MCArMzQ0LDQ2IEBA
IHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jT25XZWJUaHJlYWRJbXBsKGlkIHNlbGYsIFNFTCkKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGxvY2tXZWJDb3JlUmVsZWFzZUxvY2soKTsKLSAg
ICBpZiAoW3NlbGYgcmV0YWluQ291bnRdID09IDEpIHsKLSAgICAgICAgLy8gVGhpcyBpcyB0aGUg
b25seSByZWZlcmVuY2UgcmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIHdlIGNhbgotICAgICAgICAv
LyBzYWZlbHkgcmVsZWFzZSB0aGUgV2ViQ29yZVJlbGVhc2VMb2NrIG5vdy4KLSAgICAgICAgdW5s
b2NrV2ViQ29yZVJlbGVhc2VMb2NrKCk7Ci0gICAgICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQo
KSkKKyAgICB7CisgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod2ViQ29yZVJlbGVhc2VM
b2NrKTsKKyAgICAgICAgaWYgKFtzZWxmIHJldGFpbkNvdW50XSAhPSAxKSB7CisgICAgICAgICAg
ICAvLyBUaGlzIGlzIG5vdCB0aGUgb25seSByZWZlcmVuY2UgcmV0YWluaW5nIHRoZSBvYmplY3Qs
IHNvIGFub3RoZXIKKyAgICAgICAgICAgIC8vIHRocmVhZCBjb3VsZCBhbHNvIGNhbGwgcmVsZWFz
ZSAtIGhvbGQgdGhlIGxvY2sgd2hpbHN0IGNhbGxpbmcKKyAgICAgICAgICAgIC8vIHJlbGVhc2Ug
dG8gYXZvaWQgYSByYWNlIGNvbmRpdGlvbi4KICAgICAgICAgICAgIFtzZWxmIF93ZWJjb3JlX3Jl
bGVhc2VPbldlYlRocmVhZF07Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdlYlRocmVhZEFk
b3B0QW5kUmVsZWFzZShzZWxmKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBUaGlzIGlzIG5v
dCB0aGUgb25seSByZWZlcmVuY2UgcmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIGFub3RoZXIKLSAg
ICAgICAgLy8gdGhyZWFkIGNvdWxkIGFsc28gY2FsbCByZWxlYXNlIC0gaG9sZCB0aGUgbG9jayB3
aGlsc3QgY2FsbGluZwotICAgICAgICAvLyByZWxlYXNlIHRvIGF2b2lkIGEgcmFjZSBjb25kaXRp
b24uCi0gICAgICAgIFtzZWxmIF93ZWJjb3JlX3JlbGVhc2VPbldlYlRocmVhZF07Ci0gICAgICAg
IHVubG9ja1dlYkNvcmVSZWxlYXNlTG9jaygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgcmVmZXJlbmNlIHJldGFpbmluZyB0aGUg
b2JqZWN0LCBzbyB3ZSBjYW4KKyAgICAgICAgLy8gc2FmZWx5IHJlbGVhc2UgdGhlIHdlYkNvcmVS
ZWxlYXNlTG9jayBub3cuCiAgICAgfQorICAgIGlmIChXZWJUaHJlYWRJc0N1cnJlbnQoKSkKKyAg
ICAgICAgW3NlbGYgX3dlYmNvcmVfcmVsZWFzZU9uV2ViVGhyZWFkXTsKKyAgICBlbHNlCisgICAg
ICAgIFdlYlRocmVhZEFkb3B0QW5kUmVsZWFzZShzZWxmKTsKIH0KIAogdm9pZCBXZWJDb3JlT2Jq
Q0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9ja0ltcGwoaWQgc2VsZiwgU0VMKQogewotICAgIGxvY2tX
ZWJDb3JlUmVsZWFzZUxvY2soKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdlYkNvcmVS
ZWxlYXNlTG9jayk7CiAgICAgaWYgKFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpIHx8IDEg
IT0gW3NlbGYgcmV0YWluQ291bnRdKQogICAgICAgICBbc2VsZiBfd2ViY29yZV9yZWxlYXNlV2l0
aFdlYlRocmVhZExvY2tdOwogICAgIGVsc2UKICAgICAgICAgV2ViVGhyZWFkQWRvcHRBbmRSZWxl
YXNlKHNlbGYpOwotICAgIHVubG9ja1dlYkNvcmVSZWxlYXNlTG9jaygpOwogfQogCiBzdGF0aWMg
dm9pZCBIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291cmNlKHZvaWQqKQogewogICAgIEFTU0VSVChX
ZWJUaHJlYWRJc0N1cnJlbnQoKSk7CiAKLSAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF9s
b2NrKCZXZWJUaHJlYWRSZWxlYXNlTG9jayk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcmVz
dWx0LCAiUmVsZWFzZSBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwotCiAgICAg
Q0ZNdXRhYmxlQXJyYXlSZWYgb2JqZWN0cyA9IG51bGxwdHI7Ci0gICAgaWYgKENGQXJyYXlHZXRD
b3VudChXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpKSB7Ci0gICAgICAgIG9iamVjdHMgPSBDRkFy
cmF5Q3JlYXRlTXV0YWJsZUNvcHkobnVsbHB0ciwgMCwgV2ViVGhyZWFkUmVsZWFzZU9iakFycmF5
KTsKLSAgICAgICAgQ0ZBcnJheVJlbW92ZUFsbFZhbHVlcyhXZWJUaHJlYWRSZWxlYXNlT2JqQXJy
YXkpOworICAgIHsKKyAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3ZWJUaHJlYWRSZWxl
YXNlTG9jayk7CisgICAgICAgIGlmIChDRkFycmF5R2V0Q291bnQoV2ViVGhyZWFkUmVsZWFzZU9i
akFycmF5KSkgeworICAgICAgICAgICAgb2JqZWN0cyA9IENGQXJyYXlDcmVhdGVNdXRhYmxlQ29w
eShudWxscHRyLCAwLCBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpOworICAgICAgICAgICAgQ0ZB
cnJheVJlbW92ZUFsbFZhbHVlcyhXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpOworICAgICAgICB9
CiAgICAgfQogCi0gICAgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJldlYlRocmVhZFJl
bGVhc2VMb2NrKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJSZWxlYXNlIHVu
bG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKLQogICAgIGlmICghb2JqZWN0cykK
ICAgICAgICAgcmV0dXJuOwogCkBAIC00ODIsMTQgKzQ1NywxNCBAQCBzdGF0aWMgdm9pZCBfV2Vi
VGhyZWFkQXV0b0xvY2sodm9pZCkKIAogICAgIGlmICghbWFpblRocmVhZExvY2tDb3VudCkgewog
ICAgICAgICBDRlJ1bkxvb3BBZGRPYnNlcnZlcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIG1haW5S
dW5Mb29wQXV0b1VubG9ja09ic2VydmVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOyAgICAKLSAg
ICAgICAgX1dlYlRyeVRocmVhZExvY2soZmFsc2UpOworICAgICAgICBfV2ViVGhyZWFkTG9jaygp
OwogICAgICAgICBDRlJ1bkxvb3BXYWtlVXAoQ0ZSdW5Mb29wR2V0TWFpbigpKTsKICAgICB9CiB9
CiAKIHN0YXRpYyB2b2lkIFdlYlJ1bkxvb3BMb2NrSW50ZXJuYWwoQXV0b3JlbGVhc2VQb29sT3Bl
cmF0aW9uIHBvb2xPcGVyYXRpb24pCiB7Ci0gICAgX1dlYlRyeVRocmVhZExvY2soZmFsc2UpOwor
ICAgIF9XZWJUaHJlYWRMb2NrKCk7CiAgICAgaWYgKHBvb2xPcGVyYXRpb24gPT0gUHVzaE9yUG9w
QXV0b3JlbGVhc2VQb29sKQogICAgICAgICBhdXRvcmVsZWFzZVBvb2xNYXJrID0gTlNQdXNoQXV0
b3JlbGVhc2VQb29sKDApOwogICAgIGlzV2ViVGhyZWFkTG9ja2VkID0gWUVTOwpAQCAtNTkzLDIz
ICs1NjgsMTQgQEAgdm9pZCBXZWJSdW5Mb29wRGlzYWJsZU5lc3RlZCgpCiAgICAgaXNOZXN0ZWRX
ZWJUaHJlYWRSdW5Mb29wID0gTk87CiB9CiAKLXN0YXRpYyBXZWJUaHJlYWRDb250ZXh0KiBDdXJy
ZW50VGhyZWFkQ29udGV4dCh2b2lkKQorc3RhdGljIFRocmVhZFNwZWNpZmljPFdlYlRocmVhZENv
bnRleHQsIFdURjo6Q2FuQmVHQ1RocmVhZDo6VHJ1ZT4qIHRocmVhZENvbnRleHQ7CitzdGF0aWMg
V2ViVGhyZWFkQ29udGV4dCogQ3VycmVudFRocmVhZENvbnRleHQoKQogewogICAgIHN0YXRpYyBz
dGQ6Om9uY2VfZmxhZyBmbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKGZsYWcsIFtdIHsKLSAgICAg
ICAgaW50IGVycm9yID0gcHRocmVhZF9rZXlfY3JlYXRlKCZ0aHJlYWRDb250ZXh0S2V5LCBbXSAo
dm9pZCogdGhyZWFkQ29udGV4dCkgewotICAgICAgICAgICAgaWYgKHRocmVhZENvbnRleHQpCi0g
ICAgICAgICAgICAgICAgZnJlZSh0aHJlYWRDb250ZXh0KTsKLSAgICAgICAgfSk7Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFlcnJvcik7CisgICAgICAgIHRocmVhZENvbnRleHQgPSBuZXcgVGhy
ZWFkU3BlY2lmaWM8V2ViVGhyZWFkQ29udGV4dCwgV1RGOjpDYW5CZUdDVGhyZWFkOjpUcnVlPigp
OwogICAgIH0pOwotCi0gICAgV2ViVGhyZWFkQ29udGV4dCogdGhyZWFkQ29udGV4dCA9IChXZWJU
aHJlYWRDb250ZXh0KilwdGhyZWFkX2dldHNwZWNpZmljKHRocmVhZENvbnRleHRLZXkpOwotICAg
IGlmICghdGhyZWFkQ29udGV4dCkgewotICAgICAgICB0aHJlYWRDb250ZXh0ID0gc3RhdGljX2Nh
c3Q8V2ViVGhyZWFkQ29udGV4dCo+KGNhbGxvYyhzaXplb2YoV2ViVGhyZWFkQ29udGV4dCksIDEp
KTsKLSAgICAgICAgcHRocmVhZF9zZXRzcGVjaWZpYyh0aHJlYWRDb250ZXh0S2V5LCB0aHJlYWRD
b250ZXh0KTsKLSAgICB9ICAgICAgICAKLSAgICByZXR1cm4gdGhyZWFkQ29udGV4dDsKKyAgICBy
ZXR1cm4gKnRocmVhZENvbnRleHQ7CiB9CiAKIHN0YXRpYyB2b2lkKiBSdW5XZWJUaHJlYWQodm9p
ZCopCkBAIC02ODEsMTggKzY0Nyw2IEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhyZWFkKCkKICAg
ICBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZChbV0FLV2luZG93IGNsYXNzXSk7CiAgICAg
V2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2soW1dBS1ZpZXcgY2xhc3NdKTsKIAot
ICAgIHB0aHJlYWRfbXV0ZXhhdHRyX3QgbWF0dHI7Ci0gICAgcHRocmVhZF9tdXRleGF0dHJfaW5p
dCgmbWF0dHIpOwotICAgIHB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJm1hdHRyLCBQVEhSRUFE
X01VVEVYX1JFQ1VSU0lWRSk7Ci0gICAgcHRocmVhZF9tdXRleF9pbml0KCZ3ZWJMb2NrLCAmbWF0
dHIpOwotICAgIHB0aHJlYWRfbXV0ZXhhdHRyX2Rlc3Ryb3koJm1hdHRyKTsgICAgICAgICAgICAK
LQotICAgIHB0aHJlYWRfbXV0ZXhhdHRyX3QgbXV0ZXhfYXR0cjsKLSAgICBwdGhyZWFkX211dGV4
YXR0cl9pbml0KCZtdXRleF9hdHRyKTsKLSAgICBwdGhyZWFkX211dGV4YXR0cl9zZXR0eXBlKCZt
dXRleF9hdHRyLCBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRSk7ICAgIAotICAgIHB0aHJlYWRfbXV0
ZXhfaW5pdCgmV2ViQ29yZVJlbGVhc2VMb2NrLCAmbXV0ZXhfYXR0cik7Ci0gICAgcHRocmVhZF9t
dXRleGF0dHJfZGVzdHJveSgmbXV0ZXhfYXR0cik7Ci0KICAgICBDRlJ1bkxvb3BSZWYgcnVuTG9v
cCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKICAgICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IGRl
bGVnYXRlU291cmNlQ29udGV4dCA9IHswLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBIYW5kbGVEZWxlZ2F0ZVNv
dXJjZX07CiAgICAgZGVsZWdhdGVTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0
ciwgMCwgJmRlbGVnYXRlU291cmNlQ29udGV4dCk7CkBAIC03MzUsMjEgKzY4OSwxMSBAQCBzdGF0
aWMgdm9pZCBTdGFydFdlYlRocmVhZCgpCiAgICAgaW5pdGlhbGl6ZUFwcGxpY2F0aW9uVUlUaHJl
YWQoKTsKIH0KIAotc3RhdGljIGludCBXZWJUaW1lZENvbmRpdGlvbkxvY2socHRocmVhZF9jb25k
X3QqIGNvbmRpdGlvbiwgcHRocmVhZF9tdXRleF90KiBsb2NrLCBDRkFic29sdXRlVGltZSBpbnRl
cnZhbCkKLXsKLSAgICBzdHJ1Y3QgdGltZXNwZWMgdGltZTsKLSAgICBDRkFic29sdXRlVGltZSBh
dCA9IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgaW50ZXJ2YWw7Ci0gICAgdGltZS50dl9z
ZWMgPSAodGltZV90KShmbG9vcihhdCkgKyBrQ0ZBYnNvbHV0ZVRpbWVJbnRlcnZhbFNpbmNlMTk3
MCk7Ci0gICAgdGltZS50dl9uc2VjID0gKGludDMyX3QpKChhdCAtIGZsb29yKGF0KSkgKiAxMDAw
MDAwMDAwLjApOyAgICAgICAgCi0gICAgcmV0dXJuIHB0aHJlYWRfY29uZF90aW1lZHdhaXQoY29u
ZGl0aW9uLCBsb2NrLCAmdGltZSk7Ci19Ci0KLQogI2lmIExPR19XRUJfTE9DSyB8fCBMT0dfTUFJ
Tl9USFJFQURfTE9DS0lORwogc3RhdGljIHVuc2lnbmVkIGxvY2tDb3VudDsKICNlbmRpZgogCi1z
dGF0aWMgYm9vbCBfV2ViVHJ5VGhyZWFkTG9jayhib29sIHNob3VsZFRyeSkKK3N0YXRpYyB2b2lk
IF9XZWJUaHJlYWRMb2NrKCkKIHsKICAgICAvLyBTdXNwZW5kIHRoZSB3ZWIgdGhyZWFkIGlmIHRo
ZSBtYWluIHRocmVhZCBpcyB0cnlpbmcgdG8gbG9jay4KICAgICBib29sIG9uTWFpblRocmVhZCA9
IHB0aHJlYWRfbWFpbl9ucCgpOwpAQCAtNzU5LDQ1ICs3MDMsMzAgQEAgc3RhdGljIGJvb2wgX1dl
YlRyeVRocmVhZExvY2soYm9vbCBzaG91bGRUcnkpCiAgICAgICAgIE5TTG9nKEAiJXMsICVwOiBU
cmllZCB0byBvYnRhaW4gdGhlIHdlYiBsb2NrIGZyb20gYSB0aHJlYWQgb3RoZXIgdGhhbiB0aGUg
bWFpbiB0aHJlYWQgb3IgdGhlIHdlYiB0aHJlYWQuIFRoaXMgbWF5IGJlIGEgcmVzdWx0IG9mIGNh
bGxpbmcgdG8gVUlLaXQgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQuIENyYXNoaW5nIG5vdy4uLiIs
IF9fUFJFVFRZX0ZVTkNUSU9OX18sIEN1cnJlbnRUaHJlYWRDb250ZXh0KCkpOwogICAgICAgICBD
UkFTSCgpOwogICAgIH0KLSAgICAgICAgCi0gICAgICAgICAgICAKLSAgICBib29sIGJ1c3kgPSBm
YWxzZTsKLSAgICBpZiAoc2hvdWxkVHJ5KSB7Ci0gICAgICAgIGludCByZXN1bHQgPSBwdGhyZWFk
X211dGV4X3RyeWxvY2soJndlYkxvY2spOwotICAgICAgICBpZiAocmVzdWx0ID09IEVCVVNZKQot
ICAgICAgICAgICAgYnVzeSA9IHRydWU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgInRyeSB3ZWIgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVk
IiwgcmVzdWx0KTsKLSAgICB9IGVsc2UgewotICAgICAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9t
dXRleF9sb2NrKCZ3ZWJMb2NrKTsKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQo
cmVzdWx0LCAhcmVzdWx0LCAid2ViIGxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7
Ci0gICAgfQotICAgIAotICAgIGlmICghYnVzeSkgeworCisgICAgd2ViTG9jay5sb2NrKCk7CisK
ICNpZiBMT0dfV0VCX0xPQ0sgfHwgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKLSAgICAgICAgbG9j
a0NvdW50Kys7CisgICAgbG9ja0NvdW50Kys7CiAjaWYgTE9HX1dFQl9MT0NLCi0gICAgICAgIE5T
TG9nKEAibG9jayAgICVkLCB3ZWItdGhyZWFkOiAlZCIsIGxvY2tDb3VudCwgV2ViVGhyZWFkSXND
dXJyZW50KCkpOworICAgIE5TTG9nKEAibG9jayAgICVkLCB3ZWItdGhyZWFkOiAlZCIsIGxvY2tD
b3VudCwgV2ViVGhyZWFkSXNDdXJyZW50KCkpOwogI2VuZGlmCiAjZW5kaWYKLSAgICAgICAgaWYg
KG9uTWFpblRocmVhZCkgewotICAgICAgICAgICAgQVNTRVJUKENGUnVuTG9vcEdldEN1cnJlbnQo
KSA9PSBDRlJ1bkxvb3BHZXRNYWluKCkpOwotICAgICAgICAgICAgd2ViVGhyZWFkU2hvdWxkWWll
bGQgPSBmYWxzZTsKLSAgICAgICAgICAgIG1haW5UaHJlYWRMb2NrQ291bnQrKzsKKyAgICBpZiAo
b25NYWluVGhyZWFkKSB7CisgICAgICAgIEFTU0VSVChDRlJ1bkxvb3BHZXRDdXJyZW50KCkgPT0g
Q0ZSdW5Mb29wR2V0TWFpbigpKTsKKyAgICAgICAgd2ViVGhyZWFkU2hvdWxkWWllbGQgPSBmYWxz
ZTsKKyAgICAgICAgbWFpblRocmVhZExvY2tDb3VudCsrOwogI2lmIExPR19NQUlOX1RIUkVBRF9M
T0NLSU5HCi0gICAgICAgICAgICBpZiAoIXNlbmRpbmdEZWxlZ2F0ZU1lc3NhZ2UgJiYgbG9ja0Nv
dW50ID09IDEpCi0gICAgICAgICAgICAgICAgTlNMb2coQCJNYWluIHRocmVhZCBsb2NraW5nIG91
dHNpZGUgb2YgZGVsZWdhdGUgbWVzc2FnZXMuIik7CisgICAgICAgIGlmICghc2VuZGluZ0RlbGVn
YXRlTWVzc2FnZSAmJiBsb2NrQ291bnQgPT0gMSkKKyAgICAgICAgICAgIE5TTG9nKEAiTWFpbiB0
aHJlYWQgbG9ja2luZyBvdXRzaWRlIG9mIGRlbGVnYXRlIG1lc3NhZ2VzLiIpOwogI2VuZGlmCi0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB3ZWJUaHJlYWRMb2NrQ291bnQrKzsKLSAgICAg
ICAgICAgIGlmICh3ZWJUaHJlYWRMb2NrQ291bnQgPiAxKSB7Ci0gICAgICAgICAgICAgICAgTlNM
b2coQCIlcywgJXA6IE11bHRpcGxlIGxvY2tzIG9uIHdlYiB0aHJlYWQgbm90IGFsbG93ZWQhIFBs
ZWFzZSBmaWxlIGEgYnVnLiBDcmFzaGluZyBub3cuLi4iLCBfX1BSRVRUWV9GVU5DVElPTl9fLCBD
dXJyZW50VGhyZWFkQ29udGV4dCgpKTsKLSAgICAgICAgICAgICAgICBDUkFTSCgpOwotICAgICAg
ICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHdlYlRocmVhZExvY2tDb3VudCsrOworICAg
ICAgICBpZiAod2ViVGhyZWFkTG9ja0NvdW50ID4gMSkgeworICAgICAgICAgICAgTlNMb2coQCIl
cywgJXA6IE11bHRpcGxlIGxvY2tzIG9uIHdlYiB0aHJlYWQgbm90IGFsbG93ZWQhIFBsZWFzZSBm
aWxlIGEgYnVnLiBDcmFzaGluZyBub3cuLi4iLCBfX1BSRVRUWV9GVU5DVElPTl9fLCBDdXJyZW50
VGhyZWFkQ29udGV4dCgpKTsKKyAgICAgICAgICAgIENSQVNIKCk7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgCi0gICAgcmV0dXJuICFidXN5OwogfQogCiB2b2lkIFdlYlRocmVhZExvY2sodm9pZCkK
QEAgLTgzNSw4ICs3NjQsOCBAQCBzdGF0aWMgdm9pZCBfV2ViVGhyZWFkTG9ja0Zyb21BbnlUaHJl
YWQoYm9vbCBzaG91bGRMb2cpCiAgICAgaWYgKHNob3VsZExvZykKICAgICAgICAgTlNMb2coQCIl
cywgJXA6IE9idGFpbmluZyB0aGUgd2ViIGxvY2sgZnJvbSBhIHRocmVhZCBvdGhlciB0aGFuIHRo
ZSBtYWluIHRocmVhZCBvciB0aGUgd2ViIHRocmVhZC4gVUlLaXQgc2hvdWxkIG5vdCBiZSBjYWxs
ZWQgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQuIiwgX19QUkVUVFlfRlVOQ1RJT05fXywgQ3VycmVu
dFRocmVhZENvbnRleHQoKSk7CiAKLSAgICBwdGhyZWFkX211dGV4X2xvY2soJndlYkxvY2spOwot
ICAgIAorICAgIHdlYkxvY2subG9jaygpOworCiAgICAgLy8gVGhpcyB1c2VkIGZvciBhbnkgdGhy
ZWFkIG90aGVyIHRoYW4gdGhlIHdlYiB0aHJlYWQuCiAgICAgb3RoZXJUaHJlYWRMb2NrQ291bnQr
KzsKICAgICB3ZWJUaHJlYWRTaG91bGRZaWVsZCA9IGZhbHNlOwpAQCAtODUzLDkgKzc4Miw4IEBA
IHZvaWQgV2ViVGhyZWFkVW5sb2NrRnJvbUFueVRocmVhZCgpCiAgICAgCiAgICAgQVNTRVJUKG90
aGVyVGhyZWFkTG9ja0NvdW50KTsKICAgICBvdGhlclRocmVhZExvY2tDb3VudC0tOwotICAgIAot
ICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmd2ViTG9jayk7IAotICAgIEFT
U0VSVF9XSVRIX01FU1NBR0VfVU5VU0VEKHJlc3VsdCwgIXJlc3VsdCwgIndlYiB1bmxvY2sgZmFp
bGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7CisKKyAgICB3ZWJMb2NrLnVubG9jaygpOwogfQog
CiB2b2lkIFdlYlRocmVhZFVubG9ja0d1YXJkRm9yTWFpbCgpCkBAIC04NjcsNyArNzk1LDcgQEAg
dm9pZCBXZWJUaHJlYWRVbmxvY2tHdWFyZEZvck1haWwoKQogICAgIENGUmVsZWFzZShtYWluUnVu
TG9vcFVubG9ja0d1YXJkT2JzZXJ2ZXIpOwogfQogCi12b2lkIF9XZWJUaHJlYWRVbmxvY2sodm9p
ZCkKK3ZvaWQgX1dlYlRocmVhZFVubG9jaygpCiB7CiAjaWYgTE9HX1dFQl9MT0NLIHx8IExPR19N
QUlOX1RIUkVBRF9MT0NLSU5HCiAgICAgbG9ja0NvdW50LS07CkBAIC04ODMsOSArODExLDggQEAg
dm9pZCBfV2ViVGhyZWFkVW5sb2NrKHZvaWQpCiAgICAgICAgIHdlYlRocmVhZExvY2tDb3VudC0t
OwogICAgICAgICB3ZWJUaHJlYWRTaG91bGRZaWVsZCA9IGZhbHNlOwogICAgIH0KLSAgICAKLSAg
ICBpbnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJndlYkxvY2spOyAKLSAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFX1VOVVNFRChyZXN1bHQsICFyZXN1bHQsICJ3ZWIgdW5sb2NrIGZhaWxl
ZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOyAgICAKKworICAgIHdlYkxvY2sudW5sb2NrKCk7CiB9
CiAKIGJvb2wgV2ViVGhyZWFkSXNMb2NrZWQodm9pZCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328689</attachid>
            <date>2017-12-07 04:48:12 -0800</date>
            <delta_ts>2017-12-07 17:26:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180445-20171207214811.patch</filename>
            <type>text/plain</type>
            <size>20933</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NjI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU1MmRkNDQ3NzI1YTFjMTViMDlmNDg3
NTljY2Y4YjE5NzU3ZTY1ZTYuLjgyNDgyMzkzZWU3YjliZWIxNWMyZWNiMzlmYjhlNjNmNDMxYzVi
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMTItMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgVXNlIFdURiBMb2NraW5nIHByaW1pdGl2ZXMg
aW4gV2ViVGhyZWFkIGFuZCBkcm9wIHB0aHJlYWRfeHh4IHVzZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNDQ1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGluaXRpYWxpemVyIGZvcm0gdG8gZmls
bCBzdHJ1Y3Qgd2l0aCB6ZXJvIGlmIHN0cnVjdCBkb2VzIG5vdCBoYXZlIGFueSBkZWZhdWx0IGlu
aXRpYWxpemVycy4KKworICAgICAgICAqIHd0Zi9UaHJlYWRTcGVjaWZpYy5oOgorICAgICAgICAo
V1RGOjpUaHJlYWRTcGVjaWZpYzo6RGF0YTo6RGF0YSk6CisKIDIwMTctMTItMDYgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yaW5nOiBSZW5hbWUgU2Ny
YW1ibGVkUHRyIHRvIFBvaXNvbmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRmODM5ZjZhMmVhMDYwNTllYzZj
YzcyNTRhMTkyYWRiOTUyYmYwMWUuLjIwNzhlNWY4N2FkYTFlY2QwMDU0MDIwMjU5YmQ2MmQ3YmU3
Y2RiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxNy0xMi0wNyAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBVc2UgV1RGIExvY2tpbmcg
cHJpbWl0aXZlcyBpbiBXZWJUaHJlYWQgYW5kIGRyb3AgcHRocmVhZF94eHggdXNlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA0NDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSByZW1vdmUgdXNlIG9m
IHB0aHJlYWQgbG9ja2luZyBwcmltaXRpdmVzIGZyb20gV2ViVGhyZWFkIGltcGxlbWVudGF0aW9u
LAorICAgICAgICBhbmQgdXNlIFdURiBMb2NrIGFuZCBDb25kaXRpb24gaW5zdGVhZC4KKworICAg
ICAgICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3Mvd2FrL1dl
YkNvcmVUaHJlYWQubW06CisgICAgICAgIChIYW5kbGVEZWxlZ2F0ZVNvdXJjZSk6CisgICAgICAg
IChTZW5kRGVsZWdhdGVNZXNzYWdlKToKKyAgICAgICAgKFdlYlRocmVhZFJ1bk9uTWFpblRocmVh
ZCk6CisgICAgICAgIChXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2UpOgorICAgICAgICAoV2ViQ29y
ZU9iakNEZWFsbG9jT25XZWJUaHJlYWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmVPYmpDRGVhbGxv
Y1dpdGhXZWJUaHJlYWRMb2NrSW1wbCk6CisgICAgICAgIChIYW5kbGVXZWJUaHJlYWRSZWxlYXNl
U291cmNlKToKKyAgICAgICAgKF9XZWJUaHJlYWRBdXRvTG9jayk6CisgICAgICAgIChXZWJSdW5M
b29wTG9ja0ludGVybmFsKToKKyAgICAgICAgKEN1cnJlbnRUaHJlYWRDb250ZXh0KToKKyAgICAg
ICAgVXNlIFdURjo6VGhyZWFkU3BlY2lmaWMuCisKKyAgICAgICAgKFN0YXJ0V2ViVGhyZWFkKToK
KyAgICAgICAgKF9XZWJUaHJlYWRMb2NrKToKKyAgICAgICAgUmVtb3ZlIGBzaG91bGRUcnlgIHBh
cmFtZXRlciBzaW5jZSBpdCBpcyBhbHdheXMgYGZhbHNlYC4gV2UgY2xlYW4gdXAgY29kZSBiYXNl
ZCBvbiBgc2hvdWxkVHJ5ID0gZmFsc2VgLAorICAgICAgICBhbmQgcmVuYW1lIGl0IGZyb20gX1dl
YlRyeVRocmVhZExvY2sgdG8gX1dlYlRocmVhZExvY2sgc2luY2UgaXQgZG9lcyBub3QgdHJ5IG5v
dy4KKworICAgICAgICAoX1dlYlRocmVhZExvY2tGcm9tQW55VGhyZWFkKToKKyAgICAgICAgKFdl
YlRocmVhZFVubG9ja0Zyb21BbnlUaHJlYWQpOgorICAgICAgICAoX1dlYlRocmVhZFVubG9jayk6
CisgICAgICAgIChsb2NrV2ViQ29yZVJlbGVhc2VMb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKHVu
bG9ja1dlYkNvcmVSZWxlYXNlTG9jayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJUaW1lZENvbmRp
dGlvbkxvY2spOiBEZWxldGVkLgorICAgICAgICAoX1dlYlRyeVRocmVhZExvY2spOiBEZWxldGVk
LgorCiAyMDE3LTEyLTA3ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNv
bT4KIAogICAgICAgICBbV1BFXVtHVEtdIFVwZGF0ZSB1c2VyIGFnZW50IHF1aXJrIHZlcnNpb24g
c3RyaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkU3BlY2lmaWMuaCBiL1Nv
dXJjZS9XVEYvd3RmL1RocmVhZFNwZWNpZmljLmgKaW5kZXggM2E4OTcxYzg4MWYxYWIwZWMwYjQz
YzE4NzY3MzZmYzFhNjE5ZTJiNi4uMWJlMTIwNGNkZGY2OTQ1MjFlODJhNTc2Yjg4NTQyMzdkMGI1
OWVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkU3BlY2lmaWMuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCkBAIC0xMDEsNyArMTAxLDcgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgQ2FuQmVHQ1RocmVhZCBjYW5CZUdDVGhyZWFkID0gQ2FuQmVHQ1RocmVh
ZDo6RmFsc2U+IGNsYXNzIFQKICAgICAgICAgICAgIC8vIFNldCB1cCB0aHJlYWQtc3BlY2lmaWMg
dmFsdWUncyBtZW1vcnkgcG9pbnRlciBiZWZvcmUgaW52b2tpbmcgY29uc3RydWN0b3IsIGluIGNh
c2UgYW55IGZ1bmN0aW9uIGl0IGNhbGxzCiAgICAgICAgICAgICAvLyBuZWVkcyB0byBhY2Nlc3Mg
dGhlIHZhbHVlLCB0byBhdm9pZCByZWN1cnNpb24uCiAgICAgICAgICAgICBvd25lci0+c2V0SW5U
TFModGhpcyk7Ci0gICAgICAgICAgICBuZXcgKE5vdE51bGwsIHN0b3JhZ2VQb2ludGVyKCkpIFQ7
CisgICAgICAgICAgICBuZXcgKE5vdE51bGwsIHN0b3JhZ2VQb2ludGVyKCkpIFQoKTsKICAgICAg
ICAgfQogCiAgICAgICAgIH5EYXRhKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy93YWsvV2ViQ29yZVRocmVhZC5tbQppbmRleCBhYWE3Mzc3MTEwYTVmYjc3YTI0M2UwYjgwMDA5
ZmE4N2ZiNTU5NDFmLi5jNmYzOGIyMDI0MDhmNzAyMDgzM2FmNTMwM2QwMzAwOWFlOTk0NWNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1t
CkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0IDxydW50aW1lL0pTTG9jay5oPgogI2ltcG9ydCA8
d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3
dGYvUmVjdXJzaXZlTG9ja0FkYXB0ZXIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1w
b3J0IDx3dGYvVGhyZWFkaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4K
QEAgLTU2LDE0ICs1NywxMyBAQAogI2RlZmluZSBMT0dfUkVMRUFTRVMgMAogCiAjZGVmaW5lIERp
c3RhbnRGdXR1cmUgICAoODY0MDAuMCAqIDIwMDAgKiAzNjUuMjQyNSArIDg2NDAwLjApICAgLy8g
c2FtZSBhcyArW05TRGF0ZSBkaXN0YW50RnV0dXJlXQotI2RlZmluZSBNYXhBcmdDb3VudCAgICAg
ICAgIDUKLSNkZWZpbmUgRHJhd1dhaXRJbnRlcnZhbCAgICAgMTAKLSNkZWZpbmUgRGVsZWdhdGVX
YWl0SW50ZXJ2YWwgMTAKIAotc3RhdGljIHZvaWQgX1dlYlRocmVhZEF1dG9Mb2NrKHZvaWQpOwot
c3RhdGljIGJvb2wgX1dlYlRyeVRocmVhZExvY2soYm9vbCBzaG91bGRUcnkpOworc3RhdGljIGNv
bnN0IGNvbnN0ZXhwciBTZWNvbmRzIERlbGVnYXRlV2FpdEludGVydmFsIHsgMTBfcyB9OworCitz
dGF0aWMgdm9pZCBfV2ViVGhyZWFkQXV0b0xvY2soKTsKK3N0YXRpYyB2b2lkIF9XZWJUaHJlYWRM
b2NrKCk7CiBzdGF0aWMgdm9pZCBfV2ViVGhyZWFkTG9ja0Zyb21BbnlUaHJlYWQoYm9vbCBzaG91
bGRMb2cpOwotc3RhdGljIHZvaWQgX1dlYlRocmVhZFVubG9jayh2b2lkKTsKK3N0YXRpYyB2b2lk
IF9XZWJUaHJlYWRVbmxvY2soKTsKIAogQGludGVyZmFjZSBOU09iamVjdChGb3J3YXJkRGVjbGFy
YXRpb25zKQogLSh2b2lkKV93ZWJjb3JlX3JlbGVhc2VPbldlYlRocmVhZDsKQEAgLTkxLDkgKzkx
LDEyIEBAIGV4dGVybiB2b2lkIE5TUG9wQXV0b3JlbGVhc2VQb29sKE5TQXV0b3JlbGVhc2VQb29s
TWFyayB0b2tlbik7CiB9CiAjZW5kaWYKIAotc3RhdGljIGludCBXZWJUaW1lZENvbmRpdGlvbkxv
Y2socHRocmVhZF9jb25kX3QqIGNvbmRpdGlvbiwgcHRocmVhZF9tdXRleF90KiBsb2NrLCBDRkFi
c29sdXRlVGltZSBpbnRlcnZhbCk7Cit1c2luZyBTdGF0aWNSZWN1cnNpdmVMb2NrID0gV1RGOjpS
ZWN1cnNpdmVMb2NrQWRhcHRlcjxTdGF0aWNMb2NrPjsKKworc3RhdGljIFN0YXRpY1JlY3Vyc2l2
ZUxvY2sgd2ViTG9jazsKK3N0YXRpYyBTdGF0aWNMb2NrIHdlYlRocmVhZFJlbGVhc2VMb2NrOwor
c3RhdGljIFN0YXRpY1JlY3Vyc2l2ZUxvY2sgd2ViQ29yZVJlbGVhc2VMb2NrOwogCi1zdGF0aWMg
cHRocmVhZF9tdXRleF90IHdlYkxvY2s7CiBzdGF0aWMgTlNBdXRvcmVsZWFzZVBvb2xNYXJrIGF1
dG9yZWxlYXNlUG9vbE1hcms7CiBzdGF0aWMgQ0ZSdW5Mb29wUmVmIHdlYlRocmVhZFJ1bkxvb3A7
CiBzdGF0aWMgTlNSdW5Mb29wKiB3ZWJUaHJlYWROU1J1bkxvb3A7CkBAIC0xMDksMTQgKzExMiwx
MyBAQCB0eXBlZGVmIGVudW0gewogICAgIElnbm9yZUF1dG9yZWxlYXNlUG9vbAogfSBBdXRvcmVs
ZWFzZVBvb2xPcGVyYXRpb247CiAKLXN0YXRpYyBwdGhyZWFkX211dGV4X3QgV2ViVGhyZWFkUmVs
ZWFzZUxvY2sgPSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOwogc3RhdGljIENGUnVuTG9vcFNv
dXJjZVJlZiBXZWJUaHJlYWRSZWxlYXNlU291cmNlOwogc3RhdGljIENGTXV0YWJsZUFycmF5UmVm
IFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheTsKIAogc3RhdGljIHZvaWQgTWFpblRocmVhZEFkb3B0
QW5kUmVsZWFzZShpZCBvYmopOwogCi1zdGF0aWMgcHRocmVhZF9tdXRleF90IGRlbGVnYXRlTG9j
ayA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7Ci1zdGF0aWMgcHRocmVhZF9jb25kX3QgZGVs
ZWdhdGVDb25kaXRpb24gPSBQVEhSRUFEX0NPTkRfSU5JVElBTElaRVI7CitzdGF0aWMgU3RhdGlj
TG9jayBkZWxlZ2F0ZUxvY2s7CitzdGF0aWMgU3RhdGljQ29uZGl0aW9uIGRlbGVnYXRlQ29uZGl0
aW9uOwogc3RhdGljIE5TSW52b2NhdGlvbiogZGVsZWdhdGVJbnZvY2F0aW9uOwogc3RhdGljIENG
UnVuTG9vcFNvdXJjZVJlZiBkZWxlZ2F0ZVNvdXJjZSA9IG51bGxwdHI7CiBzdGF0aWMgQk9PTCBk
ZWxlZ2F0ZUhhbmRsZWQ7CkBAIC0xMzAsMTQgKzEzMiwxMiBAQCBzdGF0aWMgU3RhdGljTG9jayBz
dGFydHVwTG9jazsKIHN0YXRpYyBTdGF0aWNDb25kaXRpb24gc3RhcnR1cENvbmRpdGlvbjsKIAog
c3RhdGljIFdlYlRocmVhZENvbnRleHQqIHdlYlRocmVhZENvbnRleHQ7Ci1zdGF0aWMgcHRocmVh
ZF9rZXlfdCB0aHJlYWRDb250ZXh0S2V5Owogc3RhdGljIHVuc2lnbmVkIG1haW5UaHJlYWRMb2Nr
Q291bnQ7CiBzdGF0aWMgdW5zaWduZWQgb3RoZXJUaHJlYWRMb2NrQ291bnQ7CiBzdGF0aWMgdW5z
aWduZWQgc01haW5UaHJlYWRNb2RhbENvdW50OwogCiBXRUJDT1JFX0VYUE9SVCB2b2xhdGlsZSBi
b29sIHdlYlRocmVhZFNob3VsZFlpZWxkOwogCi1zdGF0aWMgcHRocmVhZF9tdXRleF90IFdlYkNv
cmVSZWxlYXNlTG9jazsKIHN0YXRpYyB2b2lkIFdlYkNvcmVPYmpDRGVhbGxvY09uV2ViVGhyZWFk
SW1wbChpZCBzZWxmLCBTRUwgX2NtZCk7CiBzdGF0aWMgdm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NX
aXRoV2ViVGhyZWFkTG9jayhDbGFzcyBjbHMpOwogc3RhdGljIHZvaWQgV2ViQ29yZU9iakNEZWFs
bG9jV2l0aFdlYlRocmVhZExvY2tJbXBsKGlkIHNlbGYsIFNFTCBfY21kKTsKQEAgLTE2MCwyNSAr
MTYwLDIzIEBAIHN0YXRpYyB2b2lkIEhhbmRsZURlbGVnYXRlU291cmNlKHZvaWQqKQogCiAgICAg
X1dlYlRocmVhZEF1dG9Mb2NrKCk7CiAKLSAgICBpbnQgcmVzdWx0ID0gcHRocmVhZF9tdXRleF9s
b2NrKCZkZWxlZ2F0ZUxvY2spOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgImRl
bGVnYXRlIGxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7CisgICAgeworICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlbGVnYXRlTG9jayk7CiAKICNpZiBMT0dfTUVTU0FH
RVMKLSAgICBpZiAoW1tkZWxlZ2F0ZUludm9jYXRpb24gdGFyZ2V0XSBpc0tpbmRPZkNsYXNzOltO
U05vdGlmaWNhdGlvbkNlbnRlciBjbGFzc11dKSB7Ci0gICAgICAgIGlkIGFyZ3VtZW50MDsKLSAg
ICAgICAgW2RlbGVnYXRlSW52b2NhdGlvbiBnZXRBcmd1bWVudDomYXJndW1lbnQwIGF0SW5kZXg6
MF07Ci0gICAgICAgIE5TTG9nKEAibm90aWZpY2F0aW9uIHJlY2VpdmU6ICVAIiwgYXJndW1lbnQw
KTsKLSAgICB9IGVsc2UKLSAgICAgICAgTlNMb2coQCJkZWxlZ2F0ZSByZWNlaXZlOiAlQCIsIE5T
U3RyaW5nRnJvbVNlbGVjdG9yKFtkZWxlZ2F0ZUludm9jYXRpb24gc2VsZWN0b3JdKSk7CisgICAg
ICAgIGlmIChbW2RlbGVnYXRlSW52b2NhdGlvbiB0YXJnZXRdIGlzS2luZE9mQ2xhc3M6W05TTm90
aWZpY2F0aW9uQ2VudGVyIGNsYXNzXV0pIHsKKyAgICAgICAgICAgIGlkIGFyZ3VtZW50MDsKKyAg
ICAgICAgICAgIFtkZWxlZ2F0ZUludm9jYXRpb24gZ2V0QXJndW1lbnQ6JmFyZ3VtZW50MCBhdElu
ZGV4OjBdOworICAgICAgICAgICAgTlNMb2coQCJub3RpZmljYXRpb24gcmVjZWl2ZTogJUAiLCBh
cmd1bWVudDApOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIE5TTG9nKEAiZGVsZWdhdGUg
cmVjZWl2ZTogJUAiLCBOU1N0cmluZ0Zyb21TZWxlY3RvcihbZGVsZWdhdGVJbnZvY2F0aW9uIHNl
bGVjdG9yXSkpOwogI2VuZGlmCiAKLSAgICBTZW5kTWVzc2FnZShkZWxlZ2F0ZUludm9jYXRpb24p
OworICAgICAgICBTZW5kTWVzc2FnZShkZWxlZ2F0ZUludm9jYXRpb24pOwogCi0gICAgZGVsZWdh
dGVIYW5kbGVkID0gWUVTOwotICAgIHB0aHJlYWRfY29uZF9zaWduYWwoJmRlbGVnYXRlQ29uZGl0
aW9uKTsKLQotICAgIHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZkZWxlZ2F0ZUxvY2sp
OwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgImRlbGVnYXRlIHVubG9jayBmYWls
ZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKKyAgICAgICAgZGVsZWdhdGVIYW5kbGVkID0gWUVT
OworICAgICAgICBkZWxlZ2F0ZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKKyAgICB9CiAKICNpZiBM
T0dfTUFJTl9USFJFQURfTE9DS0lORwogICAgIHNlbmRpbmdEZWxlZ2F0ZU1lc3NhZ2UgPSBOTzsK
QEAgLTE5Myw4ICsxOTEsNyBAQCBzdGF0aWMgdm9pZCBTZW5kRGVsZWdhdGVNZXNzYWdlKE5TSW52
b2NhdGlvbiogaW52b2NhdGlvbikKICAgICB9CiAKICAgICBBU1NFUlQoZGVsZWdhdGVTb3VyY2Up
OwotICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X2xvY2soJmRlbGVnYXRlTG9jayk7Ci0g
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcmVzdWx0LCAiZGVsZWdhdGUgbG9jayBmYWlsZWQgd2l0
aCBjb2RlOiVkIiwgcmVzdWx0KTsKKyAgICBkZWxlZ2F0ZUxvY2subG9jaygpOwogCiAgICAgZGVs
ZWdhdGVJbnZvY2F0aW9uID0gaW52b2NhdGlvbjsKICAgICBkZWxlZ2F0ZUhhbmRsZWQgPSBOTzsK
QEAgLTIxNyw3ICsyMTQsNyBAQCBzdGF0aWMgdm9pZCBTZW5kRGVsZWdhdGVNZXNzYWdlKE5TSW52
b2NhdGlvbiogaW52b2NhdGlvbikKICAgICAgICAgQ0ZSdW5Mb29wV2FrZVVwKENGUnVuTG9vcEdl
dE1haW4oKSk7CiAKICAgICAgICAgd2hpbGUgKCFkZWxlZ2F0ZUhhbmRsZWQpIHsKLSAgICAgICAg
ICAgIGlmIChXZWJUaW1lZENvbmRpdGlvbkxvY2soJmRlbGVnYXRlQ29uZGl0aW9uLCAmZGVsZWdh
dGVMb2NrLCBEZWxlZ2F0ZVdhaXRJbnRlcnZhbCkpIHsKKyAgICAgICAgICAgIGlmICghZGVsZWdh
dGVDb25kaXRpb24ud2FpdEZvcihkZWxlZ2F0ZUxvY2ssIERlbGVnYXRlV2FpdEludGVydmFsKSkg
ewogICAgICAgICAgICAgICAgIGlkIGRlbGVnYXRlSW5mb3JtYXRpb247CiAgICAgICAgICAgICAg
ICAgaWYgKFtbZGVsZWdhdGVJbnZvY2F0aW9uIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgY2xhc3NdXSkKICAgICAgICAgICAgICAgICAgICAgW2RlbGVnYXRlSW52
b2NhdGlvbiBnZXRBcmd1bWVudDomZGVsZWdhdGVJbmZvcm1hdGlvbiBhdEluZGV4OjBdOwpAQCAt
MjI1LDE1ICsyMjIsMTMgQEAgc3RhdGljIHZvaWQgU2VuZERlbGVnYXRlTWVzc2FnZShOU0ludm9j
YXRpb24qIGludm9jYXRpb24pCiAgICAgICAgICAgICAgICAgICAgIGRlbGVnYXRlSW5mb3JtYXRp
b24gPSBOU1N0cmluZ0Zyb21TZWxlY3RvcihbZGVsZWdhdGVJbnZvY2F0aW9uIHNlbGVjdG9yXSk7
CiAgICAgCiAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgbW9kZSA9IENGUnVuTG9vcENvcHlD
dXJyZW50TW9kZShDRlJ1bkxvb3BHZXRNYWluKCkpOwotICAgICAgICAgICAgICAgIE5TTG9nKEAi
JXM6IGRlbGVnYXRlICglQCkgZmFpbGVkIHRvIHJldHVybiBhZnRlciB3YWl0aW5nICVkIHNlY29u
ZHMuIG1haW4gcnVuIGxvb3AgbW9kZTogJUAiLCBfX1BSRVRUWV9GVU5DVElPTl9fLCBkZWxlZ2F0
ZUluZm9ybWF0aW9uLCBEZWxlZ2F0ZVdhaXRJbnRlcnZhbCwgbW9kZSk7CisgICAgICAgICAgICAg
ICAgTlNMb2coQCIlczogZGVsZWdhdGUgKCVAKSBmYWlsZWQgdG8gcmV0dXJuIGFmdGVyIHdhaXRp
bmcgJWYgc2Vjb25kcy4gbWFpbiBydW4gbG9vcCBtb2RlOiAlQCIsIF9fUFJFVFRZX0ZVTkNUSU9O
X18sIGRlbGVnYXRlSW5mb3JtYXRpb24sIERlbGVnYXRlV2FpdEludGVydmFsLnNlY29uZHMoKSwg
bW9kZSk7CiAgICAgICAgICAgICAgICAgaWYgKG1vZGUpCiAgICAgICAgICAgICAgICAgICAgIENG
UmVsZWFzZShtb2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICByZXN1bHQg
PSBwdGhyZWFkX211dGV4X3VubG9jaygmZGVsZWdhdGVMb2NrKTsKLQotICAgICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKCFyZXN1bHQsICJkZWxlZ2F0ZSB1bmxvY2sgZmFpbGVkIHdpdGggY29kZTol
ZCIsIHJlc3VsdCk7Ci0gICAgICAgIF9XZWJUcnlUaHJlYWRMb2NrKGZhbHNlKTsKKyAgICAgICAg
ZGVsZWdhdGVMb2NrLnVubG9jaygpOworICAgICAgICBfV2ViVGhyZWFkTG9jaygpOwogICAgIH0K
IH0KIApAQCAtMjUyLDcgKzI0Nyw3IEBAIHZvaWQgV2ViVGhyZWFkUnVuT25NYWluVGhyZWFkKHZv
aWQoXmRlbGVnYXRlQmxvY2spKCkpCiAgICAgZGlzcGF0Y2hfc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBkZWxlZ2F0ZUJsb2NrQ29weSk7CiAgICAgQmxvY2tfcmVsZWFzZShkZWxlZ2F0
ZUJsb2NrQ29weSk7CiAKLSAgICBfV2ViVHJ5VGhyZWFkTG9jayhmYWxzZSk7CisgICAgX1dlYlRo
cmVhZExvY2soKTsKIH0KIAogc3RhdGljIHZvaWQgTWFpblRocmVhZEFkb3B0QW5kUmVsZWFzZShp
ZCBvYmopCkBAIC0yODEsMjkgKzI3NiwxMyBAQCB2b2lkIFdlYlRocmVhZEFkb3B0QW5kUmVsZWFz
ZShpZCBvYmopCiAgICAgTlNMb2coQCJSZWxlYXNlIHNlbmQgW21haW4gdGhyZWFkXTogJUAiLCBv
YmopOwogI2VuZGlmICAgICAgICAKIAotICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X2xv
Y2soJldlYlRocmVhZFJlbGVhc2VMb2NrKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1
bHQsICJSZWxlYXNlIGxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7CisgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayh3ZWJUaHJlYWRSZWxlYXNlTG9jayk7CiAKICAgICBpZiAoV2Vi
VGhyZWFkUmVsZWFzZU9iakFycmF5ID09IG5pbCkKICAgICAgICAgV2ViVGhyZWFkUmVsZWFzZU9i
akFycmF5ID0gQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwg
MCwgbnVsbHB0cik7CiAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKFdlYlRocmVhZFJlbGVhc2VPYmpB
cnJheSwgb2JqKTsKICAgICBDRlJ1bkxvb3BTb3VyY2VTaWduYWwoV2ViVGhyZWFkUmVsZWFzZVNv
dXJjZSk7CiAgICAgQ0ZSdW5Mb29wV2FrZVVwKHdlYlRocmVhZFJ1bkxvb3ApOwotCi0gICAgcmVz
dWx0ID0gcHRocmVhZF9tdXRleF91bmxvY2soJldlYlRocmVhZFJlbGVhc2VMb2NrKTsgICAgCi0g
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcmVzdWx0LCAiUmVsZWFzZSB1bmxvY2sgZmFpbGVkIHdp
dGggY29kZTolZCIsIHJlc3VsdCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBsb2NrV2ViQ29y
ZVJlbGVhc2VMb2NrKCkKLXsKLSAgICBpbnQgbG9ja2NvZGUgPSBwdGhyZWFkX211dGV4X2xvY2so
JldlYkNvcmVSZWxlYXNlTG9jayk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9VTlVTRUQobG9j
a2NvZGUsICFsb2NrY29kZSwgIldlYkNvcmVSZWxlYXNlTG9jayBsb2NrIGZhaWxlZCB3aXRoIGNv
ZGU6JWQiLCBsb2NrY29kZSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCB1bmxvY2tXZWJDb3Jl
UmVsZWFzZUxvY2soKQotewotICAgIGludCBsb2NrY29kZSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2Nr
KCZXZWJDb3JlUmVsZWFzZUxvY2spOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0VfVU5VU0VEKGxv
Y2tjb2RlLCAhbG9ja2NvZGUsICJXZWJDb3JlUmVsZWFzZUxvY2sgdW5sb2NrIGZhaWxlZCB3aXRo
IGNvZGU6JWQiLCBsb2NrY29kZSk7CiB9CiAKIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jT25XZWJU
aHJlYWQoQ2xhc3MgY2xzKQpAQCAtMzY1LDUwICszNDQsNDYgQEAgdm9pZCBXZWJDb3JlT2JqQ0Rl
YWxsb2NPbldlYlRocmVhZEltcGwoaWQgc2VsZiwgU0VMKQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbG9ja1dlYkNvcmVSZWxlYXNlTG9jaygpOwotICAgIGlmIChbc2VsZiByZXRhaW5D
b3VudF0gPT0gMSkgewotICAgICAgICAvLyBUaGlzIGlzIHRoZSBvbmx5IHJlZmVyZW5jZSByZXRh
aW5pbmcgdGhlIG9iamVjdCwgc28gd2UgY2FuCi0gICAgICAgIC8vIHNhZmVseSByZWxlYXNlIHRo
ZSBXZWJDb3JlUmVsZWFzZUxvY2sgbm93LgotICAgICAgICB1bmxvY2tXZWJDb3JlUmVsZWFzZUxv
Y2soKTsKLSAgICAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKQorICAgIHsKKyAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayh3ZWJDb3JlUmVsZWFzZUxvY2spOworICAgICAgICBpZiAo
W3NlbGYgcmV0YWluQ291bnRdICE9IDEpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgbm90IHRo
ZSBvbmx5IHJlZmVyZW5jZSByZXRhaW5pbmcgdGhlIG9iamVjdCwgc28gYW5vdGhlcgorICAgICAg
ICAgICAgLy8gdGhyZWFkIGNvdWxkIGFsc28gY2FsbCByZWxlYXNlIC0gaG9sZCB0aGUgbG9jayB3
aGlsc3QgY2FsbGluZworICAgICAgICAgICAgLy8gcmVsZWFzZSB0byBhdm9pZCBhIHJhY2UgY29u
ZGl0aW9uLgogICAgICAgICAgICAgW3NlbGYgX3dlYmNvcmVfcmVsZWFzZU9uV2ViVGhyZWFkXTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKHNlbGYp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFRoaXMgaXMgbm90IHRoZSBvbmx5IHJlZmVyZW5j
ZSByZXRhaW5pbmcgdGhlIG9iamVjdCwgc28gYW5vdGhlcgotICAgICAgICAvLyB0aHJlYWQgY291
bGQgYWxzbyBjYWxsIHJlbGVhc2UgLSBob2xkIHRoZSBsb2NrIHdoaWxzdCBjYWxsaW5nCi0gICAg
ICAgIC8vIHJlbGVhc2UgdG8gYXZvaWQgYSByYWNlIGNvbmRpdGlvbi4KLSAgICAgICAgW3NlbGYg
X3dlYmNvcmVfcmVsZWFzZU9uV2ViVGhyZWFkXTsKLSAgICAgICAgdW5sb2NrV2ViQ29yZVJlbGVh
c2VMb2NrKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gVGhp
cyBpcyB0aGUgb25seSByZWZlcmVuY2UgcmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIHdlIGNhbgor
ICAgICAgICAvLyBzYWZlbHkgcmVsZWFzZSB0aGUgd2ViQ29yZVJlbGVhc2VMb2NrIG5vdy4KICAg
ICB9CisgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgpKQorICAgICAgICBbc2VsZiBfd2ViY29y
ZV9yZWxlYXNlT25XZWJUaHJlYWRdOworICAgIGVsc2UKKyAgICAgICAgV2ViVGhyZWFkQWRvcHRB
bmRSZWxlYXNlKHNlbGYpOwogfQogCiB2b2lkIFdlYkNvcmVPYmpDRGVhbGxvY1dpdGhXZWJUaHJl
YWRMb2NrSW1wbChpZCBzZWxmLCBTRUwpCiB7Ci0gICAgbG9ja1dlYkNvcmVSZWxlYXNlTG9jaygp
OworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod2ViQ29yZVJlbGVhc2VMb2NrKTsKICAgICBp
ZiAoV2ViVGhyZWFkSXNMb2NrZWRPckRpc2FibGVkKCkgfHwgMSAhPSBbc2VsZiByZXRhaW5Db3Vu
dF0pCiAgICAgICAgIFtzZWxmIF93ZWJjb3JlX3JlbGVhc2VXaXRoV2ViVGhyZWFkTG9ja107CiAg
ICAgZWxzZQogICAgICAgICBXZWJUaHJlYWRBZG9wdEFuZFJlbGVhc2Uoc2VsZik7Ci0gICAgdW5s
b2NrV2ViQ29yZVJlbGVhc2VMb2NrKCk7CiB9CiAKIHN0YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVh
ZFJlbGVhc2VTb3VyY2Uodm9pZCopCiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgp
KTsKIAotICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X2xvY2soJldlYlRocmVhZFJlbGVh
c2VMb2NrKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFyZXN1bHQsICJSZWxlYXNlIGxvY2sg
ZmFpbGVkIHdpdGggY29kZTolZCIsIHJlc3VsdCk7Ci0KICAgICBDRk11dGFibGVBcnJheVJlZiBv
YmplY3RzID0gbnVsbHB0cjsKLSAgICBpZiAoQ0ZBcnJheUdldENvdW50KFdlYlRocmVhZFJlbGVh
c2VPYmpBcnJheSkpIHsKLSAgICAgICAgb2JqZWN0cyA9IENGQXJyYXlDcmVhdGVNdXRhYmxlQ29w
eShudWxscHRyLCAwLCBXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpOwotICAgICAgICBDRkFycmF5
UmVtb3ZlQWxsVmFsdWVzKFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSk7CisgICAgeworICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdlYlRocmVhZFJlbGVhc2VMb2NrKTsKKyAgICAgICAg
aWYgKENGQXJyYXlHZXRDb3VudChXZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkpKSB7CisgICAgICAg
ICAgICBvYmplY3RzID0gQ0ZBcnJheUNyZWF0ZU11dGFibGVDb3B5KG51bGxwdHIsIDAsIFdlYlRo
cmVhZFJlbGVhc2VPYmpBcnJheSk7CisgICAgICAgICAgICBDRkFycmF5UmVtb3ZlQWxsVmFsdWVz
KFdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICByZXN1
bHQgPSBwdGhyZWFkX211dGV4X3VubG9jaygmV2ViVGhyZWFkUmVsZWFzZUxvY2spOwotICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIXJlc3VsdCwgIlJlbGVhc2UgdW5sb2NrIGZhaWxlZCB3aXRoIGNv
ZGU6JWQiLCByZXN1bHQpOwotCiAgICAgaWYgKCFvYmplY3RzKQogICAgICAgICByZXR1cm47CiAK
QEAgLTQ4MiwxNCArNDU3LDE0IEBAIHN0YXRpYyB2b2lkIF9XZWJUaHJlYWRBdXRvTG9jayh2b2lk
KQogCiAgICAgaWYgKCFtYWluVGhyZWFkTG9ja0NvdW50KSB7CiAgICAgICAgIENGUnVuTG9vcEFk
ZE9ic2VydmVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbWFpblJ1bkxvb3BBdXRvVW5sb2NrT2Jz
ZXJ2ZXIsIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7ICAgIAotICAgICAgICBfV2ViVHJ5VGhyZWFk
TG9jayhmYWxzZSk7CisgICAgICAgIF9XZWJUaHJlYWRMb2NrKCk7CiAgICAgICAgIENGUnVuTG9v
cFdha2VVcChDRlJ1bkxvb3BHZXRNYWluKCkpOwogICAgIH0KIH0KIAogc3RhdGljIHZvaWQgV2Vi
UnVuTG9vcExvY2tJbnRlcm5hbChBdXRvcmVsZWFzZVBvb2xPcGVyYXRpb24gcG9vbE9wZXJhdGlv
bikKIHsKLSAgICBfV2ViVHJ5VGhyZWFkTG9jayhmYWxzZSk7CisgICAgX1dlYlRocmVhZExvY2so
KTsKICAgICBpZiAocG9vbE9wZXJhdGlvbiA9PSBQdXNoT3JQb3BBdXRvcmVsZWFzZVBvb2wpCiAg
ICAgICAgIGF1dG9yZWxlYXNlUG9vbE1hcmsgPSBOU1B1c2hBdXRvcmVsZWFzZVBvb2woMCk7CiAg
ICAgaXNXZWJUaHJlYWRMb2NrZWQgPSBZRVM7CkBAIC01OTMsMjMgKzU2OCwxNCBAQCB2b2lkIFdl
YlJ1bkxvb3BEaXNhYmxlTmVzdGVkKCkKICAgICBpc05lc3RlZFdlYlRocmVhZFJ1bkxvb3AgPSBO
TzsKIH0KIAotc3RhdGljIFdlYlRocmVhZENvbnRleHQqIEN1cnJlbnRUaHJlYWRDb250ZXh0KHZv
aWQpCitzdGF0aWMgVGhyZWFkU3BlY2lmaWM8V2ViVGhyZWFkQ29udGV4dCwgV1RGOjpDYW5CZUdD
VGhyZWFkOjpUcnVlPiogdGhyZWFkQ29udGV4dDsKK3N0YXRpYyBXZWJUaHJlYWRDb250ZXh0KiBD
dXJyZW50VGhyZWFkQ29udGV4dCgpCiB7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGZsYWc7
CiAgICAgc3RkOjpjYWxsX29uY2UoZmxhZywgW10gewotICAgICAgICBpbnQgZXJyb3IgPSBwdGhy
ZWFkX2tleV9jcmVhdGUoJnRocmVhZENvbnRleHRLZXksIFtdICh2b2lkKiB0aHJlYWRDb250ZXh0
KSB7Ci0gICAgICAgICAgICBpZiAodGhyZWFkQ29udGV4dCkKLSAgICAgICAgICAgICAgICBmcmVl
KHRocmVhZENvbnRleHQpOwotICAgICAgICB9KTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWVy
cm9yKTsKKyAgICAgICAgdGhyZWFkQ29udGV4dCA9IG5ldyBUaHJlYWRTcGVjaWZpYzxXZWJUaHJl
YWRDb250ZXh0LCBXVEY6OkNhbkJlR0NUaHJlYWQ6OlRydWU+KCk7CiAgICAgfSk7Ci0KLSAgICBX
ZWJUaHJlYWRDb250ZXh0KiB0aHJlYWRDb250ZXh0ID0gKFdlYlRocmVhZENvbnRleHQqKXB0aHJl
YWRfZ2V0c3BlY2lmaWModGhyZWFkQ29udGV4dEtleSk7Ci0gICAgaWYgKCF0aHJlYWRDb250ZXh0
KSB7Ci0gICAgICAgIHRocmVhZENvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJUaHJlYWRDb250ZXh0
Kj4oY2FsbG9jKHNpemVvZihXZWJUaHJlYWRDb250ZXh0KSwgMSkpOwotICAgICAgICBwdGhyZWFk
X3NldHNwZWNpZmljKHRocmVhZENvbnRleHRLZXksIHRocmVhZENvbnRleHQpOwotICAgIH0gICAg
ICAgIAotICAgIHJldHVybiB0aHJlYWRDb250ZXh0OworICAgIHJldHVybiAqdGhyZWFkQ29udGV4
dDsKIH0KIAogc3RhdGljIHZvaWQqIFJ1bldlYlRocmVhZCh2b2lkKikKQEAgLTY4MSwxOCArNjQ3
LDYgQEAgc3RhdGljIHZvaWQgU3RhcnRXZWJUaHJlYWQoKQogICAgIFdlYkNvcmVPYmpDRGVhbGxv
Y09uV2ViVGhyZWFkKFtXQUtXaW5kb3cgY2xhc3NdKTsKICAgICBXZWJDb3JlT2JqQ0RlYWxsb2NX
aXRoV2ViVGhyZWFkTG9jayhbV0FLVmlldyBjbGFzc10pOwogCi0gICAgcHRocmVhZF9tdXRleGF0
dHJfdCBtYXR0cjsKLSAgICBwdGhyZWFkX211dGV4YXR0cl9pbml0KCZtYXR0cik7Ci0gICAgcHRo
cmVhZF9tdXRleGF0dHJfc2V0dHlwZSgmbWF0dHIsIFBUSFJFQURfTVVURVhfUkVDVVJTSVZFKTsK
LSAgICBwdGhyZWFkX211dGV4X2luaXQoJndlYkxvY2ssICZtYXR0cik7Ci0gICAgcHRocmVhZF9t
dXRleGF0dHJfZGVzdHJveSgmbWF0dHIpOyAgICAgICAgICAgIAotCi0gICAgcHRocmVhZF9tdXRl
eGF0dHJfdCBtdXRleF9hdHRyOwotICAgIHB0aHJlYWRfbXV0ZXhhdHRyX2luaXQoJm11dGV4X2F0
dHIpOwotICAgIHB0aHJlYWRfbXV0ZXhhdHRyX3NldHR5cGUoJm11dGV4X2F0dHIsIFBUSFJFQURf
TVVURVhfUkVDVVJTSVZFKTsgICAgCi0gICAgcHRocmVhZF9tdXRleF9pbml0KCZXZWJDb3JlUmVs
ZWFzZUxvY2ssICZtdXRleF9hdHRyKTsKLSAgICBwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95KCZt
dXRleF9hdHRyKTsKLQogICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gQ0ZSdW5Mb29wR2V0Q3Vy
cmVudCgpOwogICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgZGVsZWdhdGVTb3VyY2VDb250ZXh0
ID0gezAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIEhhbmRsZURlbGVnYXRlU291cmNlfTsKICAgICBkZWxlZ2F0
ZVNvdXJjZSA9IENGUnVuTG9vcFNvdXJjZUNyZWF0ZShudWxscHRyLCAwLCAmZGVsZWdhdGVTb3Vy
Y2VDb250ZXh0KTsKQEAgLTczNSwyMSArNjg5LDExIEBAIHN0YXRpYyB2b2lkIFN0YXJ0V2ViVGhy
ZWFkKCkKICAgICBpbml0aWFsaXplQXBwbGljYXRpb25VSVRocmVhZCgpOwogfQogCi1zdGF0aWMg
aW50IFdlYlRpbWVkQ29uZGl0aW9uTG9jayhwdGhyZWFkX2NvbmRfdCogY29uZGl0aW9uLCBwdGhy
ZWFkX211dGV4X3QqIGxvY2ssIENGQWJzb2x1dGVUaW1lIGludGVydmFsKQotewotICAgIHN0cnVj
dCB0aW1lc3BlYyB0aW1lOwotICAgIENGQWJzb2x1dGVUaW1lIGF0ID0gQ0ZBYnNvbHV0ZVRpbWVH
ZXRDdXJyZW50KCkgKyBpbnRlcnZhbDsKLSAgICB0aW1lLnR2X3NlYyA9ICh0aW1lX3QpKGZsb29y
KGF0KSArIGtDRkFic29sdXRlVGltZUludGVydmFsU2luY2UxOTcwKTsKLSAgICB0aW1lLnR2X25z
ZWMgPSAoaW50MzJfdCkoKGF0IC0gZmxvb3IoYXQpKSAqIDEwMDAwMDAwMDAuMCk7ICAgICAgICAK
LSAgICByZXR1cm4gcHRocmVhZF9jb25kX3RpbWVkd2FpdChjb25kaXRpb24sIGxvY2ssICZ0aW1l
KTsKLX0KLQotCiAjaWYgTE9HX1dFQl9MT0NLIHx8IExPR19NQUlOX1RIUkVBRF9MT0NLSU5HCiBz
dGF0aWMgdW5zaWduZWQgbG9ja0NvdW50OwogI2VuZGlmCiAKLXN0YXRpYyBib29sIF9XZWJUcnlU
aHJlYWRMb2NrKGJvb2wgc2hvdWxkVHJ5KQorc3RhdGljIHZvaWQgX1dlYlRocmVhZExvY2soKQog
ewogICAgIC8vIFN1c3BlbmQgdGhlIHdlYiB0aHJlYWQgaWYgdGhlIG1haW4gdGhyZWFkIGlzIHRy
eWluZyB0byBsb2NrLgogICAgIGJvb2wgb25NYWluVGhyZWFkID0gcHRocmVhZF9tYWluX25wKCk7
CkBAIC03NTksNDUgKzcwMywzMCBAQCBzdGF0aWMgYm9vbCBfV2ViVHJ5VGhyZWFkTG9jayhib29s
IHNob3VsZFRyeSkKICAgICAgICAgTlNMb2coQCIlcywgJXA6IFRyaWVkIHRvIG9idGFpbiB0aGUg
d2ViIGxvY2sgZnJvbSBhIHRocmVhZCBvdGhlciB0aGFuIHRoZSBtYWluIHRocmVhZCBvciB0aGUg
d2ViIHRocmVhZC4gVGhpcyBtYXkgYmUgYSByZXN1bHQgb2YgY2FsbGluZyB0byBVSUtpdCBmcm9t
IGEgc2Vjb25kYXJ5IHRocmVhZC4gQ3Jhc2hpbmcgbm93Li4uIiwgX19QUkVUVFlfRlVOQ1RJT05f
XywgQ3VycmVudFRocmVhZENvbnRleHQoKSk7CiAgICAgICAgIENSQVNIKCk7CiAgICAgfQotICAg
ICAgICAKLSAgICAgICAgICAgIAotICAgIGJvb2wgYnVzeSA9IGZhbHNlOwotICAgIGlmIChzaG91
bGRUcnkpIHsKLSAgICAgICAgaW50IHJlc3VsdCA9IHB0aHJlYWRfbXV0ZXhfdHJ5bG9jaygmd2Vi
TG9jayk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gRUJVU1kpCi0gICAgICAgICAgICBidXN5ID0g
dHJ1ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcmVz
dWx0LCAidHJ5IHdlYiBsb2NrIGZhaWxlZCB3aXRoIGNvZGU6JWQiLCByZXN1bHQpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGludCByZXN1bHQgPSBwdGhyZWFkX211dGV4X2xvY2soJndlYkxvY2sp
OwotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChyZXN1bHQsICFyZXN1bHQsICJ3
ZWIgbG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwgcmVzdWx0KTsKLSAgICB9Ci0gICAgCi0gICAg
aWYgKCFidXN5KSB7CisKKyAgICB3ZWJMb2NrLmxvY2soKTsKKwogI2lmIExPR19XRUJfTE9DSyB8
fCBMT0dfTUFJTl9USFJFQURfTE9DS0lORwotICAgICAgICBsb2NrQ291bnQrKzsKKyAgICBsb2Nr
Q291bnQrKzsKICNpZiBMT0dfV0VCX0xPQ0sKLSAgICAgICAgTlNMb2coQCJsb2NrICAgJWQsIHdl
Yi10aHJlYWQ6ICVkIiwgbG9ja0NvdW50LCBXZWJUaHJlYWRJc0N1cnJlbnQoKSk7CisgICAgTlNM
b2coQCJsb2NrICAgJWQsIHdlYi10aHJlYWQ6ICVkIiwgbG9ja0NvdW50LCBXZWJUaHJlYWRJc0N1
cnJlbnQoKSk7CiAjZW5kaWYKICNlbmRpZgotICAgICAgICBpZiAob25NYWluVGhyZWFkKSB7Ci0g
ICAgICAgICAgICBBU1NFUlQoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpID09IENGUnVuTG9vcEdldE1h
aW4oKSk7Ci0gICAgICAgICAgICB3ZWJUaHJlYWRTaG91bGRZaWVsZCA9IGZhbHNlOwotICAgICAg
ICAgICAgbWFpblRocmVhZExvY2tDb3VudCsrOworICAgIGlmIChvbk1haW5UaHJlYWQpIHsKKyAg
ICAgICAgQVNTRVJUKENGUnVuTG9vcEdldEN1cnJlbnQoKSA9PSBDRlJ1bkxvb3BHZXRNYWluKCkp
OworICAgICAgICB3ZWJUaHJlYWRTaG91bGRZaWVsZCA9IGZhbHNlOworICAgICAgICBtYWluVGhy
ZWFkTG9ja0NvdW50Kys7CiAjaWYgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcKLSAgICAgICAgICAg
IGlmICghc2VuZGluZ0RlbGVnYXRlTWVzc2FnZSAmJiBsb2NrQ291bnQgPT0gMSkKLSAgICAgICAg
ICAgICAgICBOU0xvZyhAIk1haW4gdGhyZWFkIGxvY2tpbmcgb3V0c2lkZSBvZiBkZWxlZ2F0ZSBt
ZXNzYWdlcy4iKTsKKyAgICAgICAgaWYgKCFzZW5kaW5nRGVsZWdhdGVNZXNzYWdlICYmIGxvY2tD
b3VudCA9PSAxKQorICAgICAgICAgICAgTlNMb2coQCJNYWluIHRocmVhZCBsb2NraW5nIG91dHNp
ZGUgb2YgZGVsZWdhdGUgbWVzc2FnZXMuIik7CiAjZW5kaWYKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHdlYlRocmVhZExvY2tDb3VudCsrOwotICAgICAgICAgICAgaWYgKHdlYlRocmVh
ZExvY2tDb3VudCA+IDEpIHsKLSAgICAgICAgICAgICAgICBOU0xvZyhAIiVzLCAlcDogTXVsdGlw
bGUgbG9ja3Mgb24gd2ViIHRocmVhZCBub3QgYWxsb3dlZCEgUGxlYXNlIGZpbGUgYSBidWcuIENy
YXNoaW5nIG5vdy4uLiIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIEN1cnJlbnRUaHJlYWRDb250ZXh0
KCkpOwotICAgICAgICAgICAgICAgIENSQVNIKCk7Ci0gICAgICAgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgICAgd2ViVGhyZWFkTG9ja0NvdW50Kys7CisgICAgICAgIGlmICh3ZWJUaHJlYWRM
b2NrQ291bnQgPiAxKSB7CisgICAgICAgICAgICBOU0xvZyhAIiVzLCAlcDogTXVsdGlwbGUgbG9j
a3Mgb24gd2ViIHRocmVhZCBub3QgYWxsb3dlZCEgUGxlYXNlIGZpbGUgYSBidWcuIENyYXNoaW5n
IG5vdy4uLiIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIEN1cnJlbnRUaHJlYWRDb250ZXh0KCkpOwor
ICAgICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICByZXR1cm4g
IWJ1c3k7CiB9CiAKIHZvaWQgV2ViVGhyZWFkTG9jayh2b2lkKQpAQCAtODM1LDggKzc2NCw4IEBA
IHN0YXRpYyB2b2lkIF9XZWJUaHJlYWRMb2NrRnJvbUFueVRocmVhZChib29sIHNob3VsZExvZykK
ICAgICBpZiAoc2hvdWxkTG9nKQogICAgICAgICBOU0xvZyhAIiVzLCAlcDogT2J0YWluaW5nIHRo
ZSB3ZWIgbG9jayBmcm9tIGEgdGhyZWFkIG90aGVyIHRoYW4gdGhlIG1haW4gdGhyZWFkIG9yIHRo
ZSB3ZWIgdGhyZWFkLiBVSUtpdCBzaG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIGEgc2Vjb25kYXJ5
IHRocmVhZC4iLCBfX1BSRVRUWV9GVU5DVElPTl9fLCBDdXJyZW50VGhyZWFkQ29udGV4dCgpKTsK
IAotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmd2ViTG9jayk7Ci0gICAgCisgICAgd2ViTG9jay5s
b2NrKCk7CisKICAgICAvLyBUaGlzIHVzZWQgZm9yIGFueSB0aHJlYWQgb3RoZXIgdGhhbiB0aGUg
d2ViIHRocmVhZC4KICAgICBvdGhlclRocmVhZExvY2tDb3VudCsrOwogICAgIHdlYlRocmVhZFNo
b3VsZFlpZWxkID0gZmFsc2U7CkBAIC04NTMsOSArNzgyLDggQEAgdm9pZCBXZWJUaHJlYWRVbmxv
Y2tGcm9tQW55VGhyZWFkKCkKICAgICAKICAgICBBU1NFUlQob3RoZXJUaHJlYWRMb2NrQ291bnQp
OwogICAgIG90aGVyVGhyZWFkTG9ja0NvdW50LS07Ci0gICAgCi0gICAgaW50IHJlc3VsdCA9IHB0
aHJlYWRfbXV0ZXhfdW5sb2NrKCZ3ZWJMb2NrKTsgCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRV9V
TlVTRUQocmVzdWx0LCAhcmVzdWx0LCAid2ViIHVubG9jayBmYWlsZWQgd2l0aCBjb2RlOiVkIiwg
cmVzdWx0KTsKKworICAgIHdlYkxvY2sudW5sb2NrKCk7CiB9CiAKIHZvaWQgV2ViVGhyZWFkVW5s
b2NrR3VhcmRGb3JNYWlsKCkKQEAgLTg2Nyw3ICs3OTUsNyBAQCB2b2lkIFdlYlRocmVhZFVubG9j
a0d1YXJkRm9yTWFpbCgpCiAgICAgQ0ZSZWxlYXNlKG1haW5SdW5Mb29wVW5sb2NrR3VhcmRPYnNl
cnZlcik7CiB9CiAKLXZvaWQgX1dlYlRocmVhZFVubG9jayh2b2lkKQordm9pZCBfV2ViVGhyZWFk
VW5sb2NrKCkKIHsKICNpZiBMT0dfV0VCX0xPQ0sgfHwgTE9HX01BSU5fVEhSRUFEX0xPQ0tJTkcK
ICAgICBsb2NrQ291bnQtLTsKQEAgLTg4Myw5ICs4MTEsOCBAQCB2b2lkIF9XZWJUaHJlYWRVbmxv
Y2sodm9pZCkKICAgICAgICAgd2ViVGhyZWFkTG9ja0NvdW50LS07CiAgICAgICAgIHdlYlRocmVh
ZFNob3VsZFlpZWxkID0gZmFsc2U7CiAgICAgfQotICAgIAotICAgIGludCByZXN1bHQgPSBwdGhy
ZWFkX211dGV4X3VubG9jaygmd2ViTG9jayk7IAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0VfVU5V
U0VEKHJlc3VsdCwgIXJlc3VsdCwgIndlYiB1bmxvY2sgZmFpbGVkIHdpdGggY29kZTolZCIsIHJl
c3VsdCk7ICAgIAorCisgICAgd2ViTG9jay51bmxvY2soKTsKIH0KIAogYm9vbCBXZWJUaHJlYWRJ
c0xvY2tlZCh2b2lkKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>