<?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>202683</bug_id>
          
          <creation_ts>2019-10-07 22:07:24 -0700</creation_ts>
          <short_desc>[JSC] FTL vmCall should check # of arguments</short_desc>
          <delta_ts>2019-10-08 20:50:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1577660</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-07 22:07:24 -0700</bug_when>
    <thetext>[JSC] FTL vmCall should check # of arguments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577661</commentid>
    <comment_count>1</comment_count>
      <attachid>380402</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-07 22:09:18 -0700</bug_when>
    <thetext>Created attachment 380402
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577662</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-07 22:09:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/56062503&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577780</commentid>
    <comment_count>3</comment_count>
      <attachid>380402</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-10-08 08:26:24 -0700</bug_when>
    <thetext>Comment on attachment 380402
Patch

Nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577868</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-08 12:00:43 -0700</bug_when>
    <thetext>Committed r250848: &lt;https://trac.webkit.org/changeset/250848&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578047</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-08 18:54:17 -0700</bug_when>
    <thetext>Committed r250883: &lt;https://trac.webkit.org/changeset/250883&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578048</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-10-08 18:56:43 -0700</bug_when>
    <thetext>it caused regressions. Reopening</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578073</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-08 20:50:15 -0700</bug_when>
    <thetext>Committed r250886: &lt;https://trac.webkit.org/changeset/250886&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380402</attachid>
            <date>2019-10-07 22:09:18 -0700</date>
            <delta_ts>2019-10-08 08:26:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202683-20191007220917.patch</filename>
            <type>text/plain</type>
            <size>98718</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwODEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NjUxZjhiZDhiOGQ4OTY4MjgyYzBjY2YwYzJkN2U0Mzg5NGU2OWI3Li44MTJjN2Q5NWI3ZGMzMTA0
OWNjYmY2ZjNjYTY4OWYyODM4ZGJlNzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzcgQEAKKzIwMTktMTAtMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBGVEwgdm1DYWxsIHNob3VsZCBjaGVjayAjIG9mIGFyZ3VtZW50
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyNjgz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpbnNlcnRzIHN0YXRpY19hc3NlcnQgZm9yICMgb2YgYXJndW1lbnRzIHdoZW4gdXNpbmcg
RlRMIHZtQ2FsbC4KKyAgICAgICAgSXQgdHVybmVkIG91dCB0aGF0IHN1Y2ggY2hlY2sgaXMgdXNl
ZnVsIHdoZW4gY29udmVydGluZyBFeGVjU3RhdGUqIHRvIEpTR2xvYmFsT2JqZWN0Ki4KKyAgICAg
ICAgTGlrZSwgZmlyc3QsIGFkZGluZyBKU0dsb2JhbE9iamVjdCogcGFyYW1ldGVyLCBtYWtpbmcg
aXQgY29tcGlsZWQgYW5kIHJlbW92aW5nIEV4ZWNTdGF0ZSogYW5kIG1fY2FsbEZyYW1lIHBhcmFt
ZXRlciBsYXRlci4KKworICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9PYmplY3RPckNhbGxPYmpl
Y3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVUb1RoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlVmFsdWVBZGQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlVmFsdWVTdWIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlVmFsdWVNdWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlU3RyQ2F0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUFyaXRoQ2x6MzIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlVmFsdWVEaXYpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlVmFsdWVNb2QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQXJpdGhBYnMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQXJpdGhVbmFyeSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVWYWx1ZVBvdyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVBcml0aFJvdW5kKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUFyaXRoRmxvb3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQXJpdGhDZWlsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUFyaXRoVHJ1bmMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlQXJpdGhTcXJ0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZUFyaXRoRlJvdW5kKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVZhbHVlQml0Tm90KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0QW5kKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZVZhbHVlQml0T3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVCaXRYb3IpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVCaXRSU2hpZnQpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVCaXRMU2hpZnQpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQXJyYXlpZnkpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlJZCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeUlkV2l0aFRoaXMpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWxXaXRo
VGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRC
eUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlUHV0QnlWYWxXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVBdG9taWNzUmVhZE1vZGlmeVdyaXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUF0b21pY3NJc0xvY2tGcmVlKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlZmluZURhdGFQcm9wZXJ0eSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWZpbmVBY2Nlc3Nv
clByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlR2V0UHJvdG90eXBlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QWNjZXNzb3JCeUlkKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1dEdldHRlclNldHRlckJ5SWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QWNjZXNzb3JCeVZh
bCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVEZWxldGVC
eUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURlbGV0
ZUJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFy
cmF5UHVzaCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVB
cnJheUluZGV4T2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQXJyYXlQb3ApOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlUHVzaFdpdGhTY29wZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZVNjb3BlZEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVDbG9uZWRBcmd1bWVudHMpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRlUmVzdCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVPYmplY3RLZXlz
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU9iamVjdENy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdQ
cm9taXNlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5l
d0ludGVybmFsRmllbGRPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlTmV3U3ltYm9sKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZU5ld0FycmF5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZU5ld0FycmF5V2l0aFNwcmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZVByb21pc2UpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRlSW50ZXJuYWxGaWVsZE9iamVjdCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVTcHJlYWQpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXlCdWZm
ZXIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJy
YXlXaXRoU2l6ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVOZXdUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVRvTnVtYmVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPclN0cmluZ1ZhbHVlT2YpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9QcmltaXRpdmUp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlU3RyaW5nQ2hh
ckF0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVN0cmlu
Z0Zyb21DaGFyQ29kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVDb21wYXJlU3RyaWN0RXEpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlU2FtZVZhbHVlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZUxvYWRWYXJhcmdzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVN3aXRjaCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVUaHJvdyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVUaHJvd1N0YXRpY0Vycm9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6bWFwSGFzaFN0cmluZyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVNYXBIYXNoKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUdldE1hcEJ1Y2tldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVTZXRBZGQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlTWFwU2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVdlYWtTZXRBZGQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlV2Vha01hcFNldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVJbkJ5VmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZUhhc093blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVBhcnNlSW50KToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUluc3RhbmNlT2ZDdXN0b20pOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUhhc0dlbmVyaWNQcm9w
ZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVIYXNT
dHJ1Y3R1cmVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVHZXREaXJlY3RQbmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVHZXRQcm9wZXJ0eUVudW1lcmF0b3IpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVG9JbmRleFN0cmluZyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVSZWdFeHBFeGVjKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVJlZ0V4cEV4ZWNOb25HbG9iYWxPclN0
aWNreSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVSZWdF
eHBNYXRjaEZhc3RHbG9iYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlUmVnRXhwVGVzdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVSZWdFeHBNYXRjaEZhc3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlU2V0RnVuY3Rpb25OYW1lKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVN0cmluZ1JlcGxhY2UpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjphbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Up
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21wYXJlKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVN0cmluZ1NsaWNlKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVRvTG93ZXJDYXNlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU51bWJlclRvU3Ry
aW5nV2l0aFJhZGl4KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudCk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVSZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1
bmNEZWNsSW5FdmFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZVJlc29sdmVTY29wZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVHZXREeW5hbWljVmFyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVB1dER5bmFtaWNWYXIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlQ2FsbERPTSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDYWxsRE9NR2V0dGVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6bm9uU3BlY3VsYXRpdmVDb21wYXJlKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6c3RyaW5nc0VxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6ZW5zdXJlU2hhZG93Q2hpY2tlblBhY2tldCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbnRpZ3VvdXNQdXRCeVZhbE91dE9mQm91bmRz
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3dpdGNoU3RyaW5nU2xv
dyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRTdG9yZUJhcnJp
ZXIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjp2bUNhbGwpOgorCiAy
MDE5LTEwLTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
W0pTQ10gQ2xlYW4gdXAgVGh1bmtHZW5lcmF0b3IncyBuYXRpdmVDYWxsVHJhbXBvbGluZSBnZW5l
cmF0b3IgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCmluZGV4IGU0MWJmYzI3ZWQwMTJjNmZmYjkxNDNhMzY1OGM3ZjI3ZmFlMDg1NWMuLmEwYWE2
MTNhNDAxOTVkMjdiOTNmNzZlNDBhYmIyZmFkN2Y4ZWY0NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTIwNTIsOSArMjA1Miw5IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQ7CiAg
ICAgICAgIGlmIChtX25vZGUtPm9wKCkgPT0gVG9PYmplY3QpIHsKICAgICAgICAgICAgIGF1dG8q
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKLSAgICAgICAgICAgIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKElu
dDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uVG9PYmplY3QpLCBtX2NhbGxGcmFtZSwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgdmFsdWUsIG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGgu
aWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV0pKSk7CisgICAgICAgICAg
ICBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uVG9PYmpl
Y3QsIG1fY2FsbEZyYW1lLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCB2YWx1ZSwgbV9vdXQu
Y29uc3RJbnRQdHIobV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJl
cigpXSkpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzbG93UmVzdWx0ID0gbV9vdXQu
YW5jaG9yKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNhbGxPYmplY3RD
b25zdHJ1Y3RvciksIG1fY2FsbEZyYW1lLCBmcm96ZW5Qb2ludGVyKG1fbm9kZS0+Y2VsbE9wZXJh
bmQoKSksIHZhbHVlKSk7CisgICAgICAgICAgICBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZt
Q2FsbChJbnQ2NCwgb3BlcmF0aW9uQ2FsbE9iamVjdENvbnN0cnVjdG9yLCBtX2NhbGxGcmFtZSwg
ZnJvemVuUG9pbnRlcihtX25vZGUtPmNlbGxPcGVyYW5kKCkpLCB2YWx1ZSkpOwogICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0yMDg3LDcgKzIwODcsNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmdW5jdGlvbiA9IG9wZXJhdGlvblRvVGhp
czsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcigKLSAg
ICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKGZ1bmN0aW9uKSwgbV9jYWxs
RnJhbWUsIHZhbHVlKSk7CisgICAgICAgICAgICB2bUNhbGwoSW50NjQsIGZ1bmN0aW9uLCBtX2Nh
bGxGcmFtZSwgdmFsdWUpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAg
ICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBA
IC0yMTAwLDcgKzIxMDAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgTFZh
bHVlIGxlZnQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAKLSAgICAgICAgICAgIExW
YWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkFkZEJpZ0ludCksIG1fY2FsbEZyYW1lLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkFkZEJpZ0ludCwg
bV9jYWxsRnJhbWUsIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjExOSw3ICsyMTE5LDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50
KG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50
KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVz
dWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TdWJC
aWdJbnQpLCBtX2NhbGxGcmFtZSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJl
c3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25TdWJCaWdJbnQsIG1fY2FsbEZy
YW1lLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIxMzgsNyArMjEzOCw3IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUt
PmNoaWxkMigpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZt
Q2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk11bEJpZ0ludCksIG1fY2FsbEZy
YW1lLCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKElu
dDY0LCBvcGVyYXRpb25NdWxCaWdJbnQsIG1fY2FsbEZyYW1lLCBsZWZ0LCByaWdodCk7CiAgICAg
ICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTIzMzgsMTMgKzIzMzgsMTMgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
TFZhbHVlIHJlc3VsdDsKICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQzKCkpIHsKICAgICAgICAg
ICAgIHJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0
aW9uKG9wZXJhdGlvblN0ckNhdDMpLCBtX2NhbGxGcmFtZSwKKyAgICAgICAgICAgICAgICBJbnQ2
NCwgb3BlcmF0aW9uU3RyQ2F0MywgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICAgICAgbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMSgpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRpb24pLAogICAgICAg
ICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1
bGF0aW9uKSwKICAgICAgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCksIE1h
bnVhbE9wZXJhbmRTcGVjdWxhdGlvbikpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
cmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uU3RyQ2F0MiksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgICAgIEludDY0LCBv
cGVyYXRpb25TdHJDYXQyLCBtX2NhbGxGcmFtZSwKICAgICAgICAgICAgICAgICBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQxKCksIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiksCiAgICAgICAgICAg
ICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpLCBNYW51YWxPcGVyYW5kU3BlY3VsYXRp
b24pKTsKICAgICAgICAgfQpAQCAtMjQyOCw3ICsyNDI4LDcgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgfQogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkpOwogICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDMyLCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uQXJpdGhDbHozMiksIG1fY2FsbEZyYW1lLCBhcmd1bWVudCk7CisgICAg
ICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50MzIsIG9wZXJhdGlvbkFyaXRoQ2x6MzIsIG1f
Y2FsbEZyYW1lLCBhcmd1bWVudCk7CiAgICAgICAgIHNldEludDMyKHJlc3VsdCk7CiAgICAgfQog
ICAgIApAQCAtMjUxMSw3ICsyNTExLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
ICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAg
ICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EaXZCaWdJbnQpLCBtX2NhbGxGcmFtZSwgbGVmdCwgcmln
aHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBv
cGVyYXRpb25EaXZCaWdJbnQsIG1fY2FsbEZyYW1lLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAg
ICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTI1ODksNyArMjU4OSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBMVmFs
dWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1
ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAgICAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uTW9kQmlnSW50KSwgbV9jYWxsRnJhbWUsIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgIExW
YWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uTW9kQmlnSW50LCBt
X2NhbGxGcmFtZSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNTk3LDcgKzI1OTcsNyBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwg
bV9ub2RlLT5iaW5hcnlVc2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbV9ub2RlLT5iaW5hcnlVc2VL
aW5kKCkpOwogICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7
Ci0gICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25WYWx1ZU1vZCksIG1fY2FsbEZyYW1lLCBsZWZ0LCByaWdodCk7CisgICAgICAgIExW
YWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvblZhbHVlTW9kLCBtX2NhbGxGcmFt
ZSwgbGVmdCwgcmlnaHQpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCkBA
IC0yNzM4LDcgKzI3MzgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBkZWZhdWx0
OiB7CiAgICAgICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkp
OwogICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoRG91YmxlLCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uQXJpdGhBYnMpLCBtX2NhbGxGcmFtZSwgYXJndW1lbnQpOworICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChEb3VibGUsIG9wZXJhdGlvbkFyaXRoQWJz
LCBtX2NhbGxGcmFtZSwgYXJndW1lbnQpOwogICAgICAgICAgICAgc2V0RG91YmxlKHJlc3VsdCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjc1Miw3ICsyNzUyLDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKERvdWJsZSwgbV9vdXQub3BlcmF0aW9uKERGRzo6YXJp
dGhVbmFyeU9wZXJhdGlvbihtX25vZGUtPmFyaXRoVW5hcnlUeXBlKCkpKSwgbV9jYWxsRnJhbWUs
IGFyZ3VtZW50KTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChEb3VibGUsIERGRzo6
YXJpdGhVbmFyeU9wZXJhdGlvbihtX25vZGUtPmFyaXRoVW5hcnlUeXBlKCkpLCBtX2NhbGxGcmFt
ZSwgYXJndW1lbnQpOwogICAgICAgICBzZXREb3VibGUocmVzdWx0KTsKICAgICB9CiAKQEAgLTI3
NjIsMTQgKzI3NjIsMTQgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIExWYWx1
ZSBiYXNlID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgTFZhbHVl
IGV4cG9uZW50ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25Qb3dCaWdJbnQpLCBtX2NhbGxGcmFtZSwgYmFzZSwgZXhwb25lbnQp
OworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVy
YXRpb25Qb3dCaWdJbnQsIG1fY2FsbEZyYW1lLCBiYXNlLCBleHBvbmVudCk7CiAgICAgICAgICAg
ICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAog
ICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgIExWYWx1ZSBleHBvbmVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAg
ICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25WYWx1ZVBvdyksIG1fY2FsbEZyYW1lLCBiYXNlLCBleHBvbmVudCk7CisgICAgICAgIExWYWx1
ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvblZhbHVlUG93LCBtX2NhbGxGcmFtZSwg
YmFzZSwgZXhwb25lbnQpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQogCkBA
IC0yOTk0LDcgKzI5OTQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgIERGR19B
U1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CiAgICAgICAgIExWYWx1ZSBhcmd1
bWVudCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNldEpTVmFsdWUo
dm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhSb3VuZCksIG1fY2Fs
bEZyYW1lLCBhcmd1bWVudCkpOworICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgb3Bl
cmF0aW9uQXJpdGhSb3VuZCwgbV9jYWxsRnJhbWUsIGFyZ3VtZW50KSk7CiAgICAgfQogCiAgICAg
dm9pZCBjb21waWxlQXJpdGhGbG9vcigpCkBAIC0zMDEwLDcgKzMwMTAsNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICB9CiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2Rl
LCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBtX25vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSk7CiAgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uQXJpdGhGbG9vciksIG1fY2FsbEZyYW1lLCBhcmd1bWVudCkpOwor
ICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uQXJpdGhGbG9vciwgbV9j
YWxsRnJhbWUsIGFyZ3VtZW50KSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlQXJpdGhDZWls
KCkKQEAgLTMwMjYsNyArMzAyNiw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIH0K
ICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IFVudHlwZWRVc2UsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKTsKICAgICAg
ICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAg
ICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Bcml0
aENlaWwpLCBtX2NhbGxGcmFtZSwgYXJndW1lbnQpKTsKKyAgICAgICAgc2V0SlNWYWx1ZSh2bUNh
bGwoSW50NjQsIG9wZXJhdGlvbkFyaXRoQ2VpbCwgbV9jYWxsRnJhbWUsIGFyZ3VtZW50KSk7CiAg
ICAgfQogCiAgICAgdm9pZCBjb21waWxlQXJpdGhUcnVuYygpCkBAIC0zMDQyLDcgKzMwNDIsNyBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICB9CiAgICAgICAgIERGR19BU1NFUlQobV9n
cmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlLCBt
X25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSk7CiAgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IGxv
d0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNldEpTVmFsdWUodm1DYWxsKElu
dDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhUcnVuYyksIG1fY2FsbEZyYW1lLCBh
cmd1bWVudCkpOworICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uQXJp
dGhUcnVuYywgbV9jYWxsRnJhbWUsIGFyZ3VtZW50KSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21w
aWxlQXJpdGhTcXJ0KCkKQEAgLTMwNTIsNyArMzA1Miw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgTFZhbHVlIGFyZ3VtZW50
ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IHZtQ2FsbChEb3VibGUsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Bcml0aFNxcnQpLCBtX2Nh
bGxGcmFtZSwgYXJndW1lbnQpOworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKERvdWJs
ZSwgb3BlcmF0aW9uQXJpdGhTcXJ0LCBtX2NhbGxGcmFtZSwgYXJndW1lbnQpOwogICAgICAgICBz
ZXREb3VibGUocmVzdWx0KTsKICAgICB9CiAKQEAgLTMwNjMsNyArMzA2Myw3IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgTFZh
bHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IHZtQ2FsbChEb3VibGUsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Bcml0
aEZSb3VuZCksIG1fY2FsbEZyYW1lLCBhcmd1bWVudCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQg
PSB2bUNhbGwoRG91YmxlLCBvcGVyYXRpb25Bcml0aEZSb3VuZCwgbV9jYWxsRnJhbWUsIGFyZ3Vt
ZW50KTsKICAgICAgICAgc2V0RG91YmxlKHJlc3VsdCk7CiAgICAgfQogCkBAIC0zMTM1LDEzICsz
MTM1LDEzIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgewogICAgICAgICBpZiAobV9ub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQmlnSW50VXNlKSB7CiAgICAgICAgICAgICBMVmFsdWUg
b3BlcmFuZCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIExWYWx1
ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bkJpdE5vdEJpZ0ludCksIG1fY2FsbEZyYW1lLCBvcGVyYW5kKTsKKyAgICAgICAgICAgIExWYWx1
ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0Tm90QmlnSW50LCBt
X2NhbGxGcmFtZSwgb3BlcmFuZCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBMVmFsdWUgb3BlcmFuZCA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIExWYWx1ZSByZXN1bHQgPSB2
bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUJpdE5vdCksIG1fY2Fs
bEZyYW1lLCBvcGVyYW5kKTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwg
b3BlcmF0aW9uVmFsdWVCaXROb3QsIG1fY2FsbEZyYW1lLCBvcGVyYW5kKTsKICAgICAgICAgc2V0
SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KIApAQCAtMzE1Niw3ICszMTU2LDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+
Y2hpbGQyKCkpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1D
YWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25CaXRBbmRCaWdJbnQp
LCBtX2NhbGxGcmFtZSwgbGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25CaXRBbmRCaWdJbnQsIG1fY2FsbEZyYW1l
LCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMxNzUsNyArMzE3NSw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNo
aWxkMigpKTsKIAotICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlw
ZSgpLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQml0T3JCaWdJbnQpLCBtX2NhbGxGcmFtZSwg
bGVmdCwgcmlnaHQpOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVy
VHlwZSgpLCBvcGVyYXRpb25CaXRPckJpZ0ludCwgbV9jYWxsRnJhbWUsIGxlZnQsIHJpZ2h0KTsK
ICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtMzE5NCw3ICszMTk0LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93QmlnSW50KG1fbm9kZS0+Y2hpbGQyKCkpOwogCi0gICAg
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25CaXRYb3JCaWdJbnQpLCBtX2NhbGxGcmFtZSwgbGVmdCwgcmlnaHQpOwor
ICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRp
b25CaXRYb3JCaWdJbnQsIG1fY2FsbEZyYW1lLCBsZWZ0LCByaWdodCk7CiAgICAgICAgICAgICBz
ZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMy
MTMsNyArMzIxMyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBMVmFsdWUg
bGVmdCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1ZSBy
aWdodCA9IGxvd0JpZ0ludChtX25vZGUtPmNoaWxkMigpKTsKIAotICAgICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
Qml0UlNoaWZ0QmlnSW50KSwgbV9jYWxsRnJhbWUsIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQml0UlNoaWZ0
QmlnSW50LCBtX2NhbGxGcmFtZSwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgc2V0SlNWYWx1
ZShyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjQxLDcgKzMy
NDEsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBs
b3dCaWdJbnQobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBs
b3dCaWdJbnQobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIExW
YWx1ZSByZXN1bHQgPSB2bUNhbGwocG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkJpdExTaGlmdEJpZ0ludCksIG1fY2FsbEZyYW1lLCBsZWZ0LCByaWdodCk7CisgICAgICAg
ICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvbkJpdExT
aGlmdEJpZ0ludCwgbV9jYWxsRnJhbWUsIGxlZnQsIHJpZ2h0KTsKICAgICAgICAgICAgIHNldEpT
VmFsdWUocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzQ0OSwx
NyArMzQ0OSwxNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAKICAgICAgICAgc3dp
dGNoIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkgewogICAgICAgICBjYXNlIEFycmF5OjpJ
bnQzMjoKLSAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
RW5zdXJlSW50MzIpLCBtX2NhbGxGcmFtZSwgY2VsbCk7CisgICAgICAgICAgICB2bUNhbGwoVm9p
ZCwgb3BlcmF0aW9uRW5zdXJlSW50MzIsIG1fY2FsbEZyYW1lLCBjZWxsKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6Ci0gICAgICAgICAgICB2bUNhbGwo
Vm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZURvdWJsZSksIG1fY2FsbEZyYW1l
LCBjZWxsKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBvcGVyYXRpb25FbnN1cmVEb3VibGUs
IG1fY2FsbEZyYW1lLCBjZWxsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFy
cmF5OjpDb250aWd1b3VzOgotICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25FbnN1cmVDb250aWd1b3VzKSwgbV9jYWxsRnJhbWUsIGNlbGwpOworICAgICAg
ICAgICAgdm1DYWxsKFZvaWQsIG9wZXJhdGlvbkVuc3VyZUNvbnRpZ3VvdXMsIG1fY2FsbEZyYW1l
LCBjZWxsKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0
b3JhZ2U6CiAgICAgICAgIGNhc2UgQXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2U6Ci0gICAgICAg
ICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkVuc3VyZUFycmF5U3Rv
cmFnZSksIG1fY2FsbEZyYW1lLCBjZWxsKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBvcGVy
YXRpb25FbnN1cmVBcnJheVN0b3JhZ2UsIG1fY2FsbEZyYW1lLCBjZWxsKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgs
IG1fbm9kZSwgIkJhZCBhcnJheSB0eXBlIik7CkBAIC0zNTE4LDcgKzM1MTgsNyBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhub3RDZWxsQ2FzZSwg
Y29udGludWF0aW9uKTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vdENlbGxSZXN1bHQg
PSBtX291dC5hbmNob3Iodm1DYWxsKAotICAgICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVy
YXRpb24oZ2V0QnlJZEZ1bmN0aW9uKSwKKyAgICAgICAgICAgICAgICBJbnQ2NCwgZ2V0QnlJZEZ1
bmN0aW9uLAogICAgICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCB2YWx1ZSwKICAgICAgICAgICAg
ICAgICBtX291dC5jb25zdEludFB0cihtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVu
dGlmaWVyTnVtYmVyKCldKSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OwpAQCAtMzU2MSw3ICszNTYxLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8obm90Q2VsbENhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAg
ICBWYWx1ZUZyb21CbG9jayBub3RDZWxsUmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbCgKLSAg
ICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5SWRXaXRo
VGhpc0dlbmVyaWMpLAorICAgICAgICAgICAgICAgIEludDY0LCBvcGVyYXRpb25HZXRCeUlkV2l0
aFRoaXNHZW5lcmljLAogICAgICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFs
dWUsCiAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ncmFwaC5pZGVudGlmaWVy
cygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKQEAgLTM1NzgsNyArMzU3OCw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIExWYWx1ZSB0aGlzVmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQy
KCkpOwogICAgICAgICBMVmFsdWUgc3Vic2NyaXB0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxk
MygpKTsKIAotICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uR2V0QnlWYWxXaXRoVGhpcyksIG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlz
VmFsdWUsIHN1YnNjcmlwdCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50NjQs
IG9wZXJhdGlvbkdldEJ5VmFsV2l0aFRoaXMsIG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUs
IHN1YnNjcmlwdCk7CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CiAKQEAgLTM1
ODgsNyArMzU4OCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIExWYWx1ZSB0aGlz
VmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgdmFs
dWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOwogCi0gICAgICAgIHZtQ2FsbChWb2lk
LCBtX291dC5vcGVyYXRpb24obV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0
QnlJZFdpdGhUaGlzKSwKKyAgICAgICAgdm1DYWxsKFZvaWQsIG1fZ3JhcGguaXNTdHJpY3RNb2Rl
Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0
cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcywKICAgICAgICAgICAgIG1fY2FsbEZyYW1l
LCBiYXNlLCB0aGlzVmFsdWUsIHZhbHVlLCBtX291dC5jb25zdEludFB0cihtX2dyYXBoLmlkZW50
aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldKSk7CiAgICAgfQogCkBAIC0zNTk5
LDcgKzM1OTksNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBMVmFsdWUgcHJvcGVy
dHkgPSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAyKSk7CiAgICAgICAg
IExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDMp
KTsKIAotICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG1fZ3JhcGguaXNTdHJp
Y3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0
aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzKSwKKyAgICAgICAgdm1DYWxs
KFZvaWQsIG1fZ3JhcGguaXNTdHJpY3RNb2RlRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSA/
IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhU
aGlzLAogICAgICAgICAgICAgbV9jYWxsRnJhbWUsIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHks
IHZhbHVlKTsKICAgICB9CiAgICAgCkBAIC0zNjE0LDQwICszNjE0LDU0IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgICAgICBhcmdFZGdlc1tpXSA9IG1fZ3JhcGguY2hpbGQobV9ub2Rl
LCAyICsgaSk7CiAgICAgICAgIEVkZ2Ugc3RvcmFnZUVkZ2UgPSBtX2dyYXBoLmNoaWxkKG1fbm9k
ZSwgMiArIG51bUV4dHJhQXJncyk7CiAgICAgICAgIAotICAgICAgICBhdXRvIG9wZXJhdGlvbiA9
IFsmXSAoKSAtPiBMVmFsdWUgeworICAgICAgICBpZiAoIXN0b3JhZ2VFZGdlKSB7CisgICAgICAg
ICAgICBhdXRvIGNhbGxXaXRoMCA9IFsmXSAoYXV0byogb3BlcmF0aW9uKSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKG51bUV4dHJhQXJncyA9PSAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dm1DYWxsKEludDY0LCBvcGVyYXRpb24sIG1fY2FsbEZyYW1lLCBsb3dKU1ZhbHVlKGJhc2VFZGdl
KSwgbG93SlNWYWx1ZShpbmRleEVkZ2UpKTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAg
IGF1dG8gY2FsbFdpdGgxID0gWyZdIChhdXRvKiBvcGVyYXRpb24pIHsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQobnVtRXh0cmFBcmdzID09IDEpOworICAgICAgICAgICAgICAgIHJldHVybiB2bUNh
bGwoSW50NjQsIG9wZXJhdGlvbiwgbV9jYWxsRnJhbWUsIGxvd0pTVmFsdWUoYmFzZUVkZ2UpLCBs
b3dKU1ZhbHVlKGluZGV4RWRnZSksIGxvd0pTVmFsdWUoYXJnRWRnZXNbMF0pKTsKKyAgICAgICAg
ICAgIH07CisKKyAgICAgICAgICAgIGF1dG8gY2FsbFdpdGgyID0gWyZdIChhdXRvKiBvcGVyYXRp
b24pIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQobnVtRXh0cmFBcmdzID09IDIpOworICAgICAg
ICAgICAgICAgIHJldHVybiB2bUNhbGwoSW50NjQsIG9wZXJhdGlvbiwgbV9jYWxsRnJhbWUsIGxv
d0pTVmFsdWUoYmFzZUVkZ2UpLCBsb3dKU1ZhbHVlKGluZGV4RWRnZSksIGxvd0pTVmFsdWUoYXJn
RWRnZXNbMF0pLCBsb3dKU1ZhbHVlKGFyZ0VkZ2VzWzFdKSk7CisgICAgICAgICAgICB9OworCisg
ICAgICAgICAgICBMVmFsdWUgcmVzdWx0OwogICAgICAgICAgICAgc3dpdGNoIChtX25vZGUtPm9w
KCkpIHsKICAgICAgICAgICAgIGNhc2UgQXRvbWljc0FkZDoKLSAgICAgICAgICAgICAgICByZXR1
cm4gbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkF0b21pY3NBZGQpOworICAgICAgICAgICAgICAg
IHJlc3VsdCA9IGNhbGxXaXRoMShvcGVyYXRpb25BdG9taWNzQWRkKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXRvbWljc0FuZDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkF0b21pY3NBbmQpOworICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IGNhbGxXaXRoMShvcGVyYXRpb25BdG9taWNzQW5kKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXRvbWljc0NvbXBhcmVFeGNoYW5nZToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkF0b21pY3NDb21w
YXJlRXhjaGFuZ2UpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxXaXRoMihvcGVyYXRp
b25BdG9taWNzQ29tcGFyZUV4Y2hhbmdlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgQXRvbWljc0V4Y2hhbmdlOgotICAgICAgICAgICAgICAgIHJldHVybiBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uQXRvbWljc0V4Y2hhbmdlKTsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBjYWxsV2l0aDEob3BlcmF0aW9uQXRvbWljc0V4Y2hhbmdlKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXRvbWljc0xvYWQ6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25BdG9taWNzTG9hZCk7CisgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gY2FsbFdpdGgwKG9wZXJhdGlvbkF0b21pY3NMb2FkKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXRvbWljc09yOgotICAgICAgICAg
ICAgICAgIHJldHVybiBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQXRvbWljc09yKTsKKyAgICAg
ICAgICAgICAgICByZXN1bHQgPSBjYWxsV2l0aDEob3BlcmF0aW9uQXRvbWljc09yKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXRvbWljc1N0b3JlOgotICAgICAg
ICAgICAgICAgIHJldHVybiBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQXRvbWljc1N0b3JlKTsK
KyAgICAgICAgICAgICAgICByZXN1bHQgPSBjYWxsV2l0aDEob3BlcmF0aW9uQXRvbWljc1N0b3Jl
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXRvbWljc1N1YjoK
LSAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkF0b21pY3NT
dWIpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxXaXRoMShvcGVyYXRpb25BdG9taWNz
U3ViKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQXRvbWljc1hv
cjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkF0b21p
Y3NYb3IpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNhbGxXaXRoMShvcGVyYXRpb25BdG9t
aWNzWG9yKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAg
IGlmICghc3RvcmFnZUVkZ2UpIHsKLSAgICAgICAgICAgIFZlY3RvcjxMVmFsdWU+IGFyZ3M7Ci0g
ICAgICAgICAgICBhcmdzLmFwcGVuZChtX2NhbGxGcmFtZSk7Ci0gICAgICAgICAgICBhcmdzLmFw
cGVuZChsb3dKU1ZhbHVlKGJhc2VFZGdlKSk7Ci0gICAgICAgICAgICBhcmdzLmFwcGVuZChsb3dK
U1ZhbHVlKGluZGV4RWRnZSkpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bUV4dHJhQXJnczsgKytpKQotICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKGxvd0pTVmFs
dWUoYXJnRWRnZXNbaV0pKTsKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoSW50
NjQsIG9wZXJhdGlvbigpLCBhcmdzKTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzczNSw3ICszNzQ5LDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICB2b2lkIGNvbXBpbGVBdG9taWNzSXNMb2NrRnJlZSgpCiAg
ICAgewogICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgIT0gSW50MzJVc2Up
IHsKLSAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uQXRvbWljc0lzTG9ja0ZyZWUpLCBtX2NhbGxGcmFtZSwgbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMSgpKSkpOworICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9w
ZXJhdGlvbkF0b21pY3NJc0xvY2tGcmVlLCBtX2NhbGxGcmFtZSwgbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMSgpKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApA
QCAtMzc3MywyMiArMzc4NywyMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBzd2l0
Y2ggKHByb3BlcnR5RWRnZS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBTdHJpbmdVc2U6IHsK
ICAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N0cmluZyhwcm9wZXJ0eUVkZ2UpOwot
ICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVE
YXRhUHJvcGVydHlTdHJpbmcpLCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBh
dHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBvcGVyYXRpb25EZWZpbmVEYXRh
UHJvcGVydHlTdHJpbmcsIG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGF0dHJp
YnV0ZXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTdHJp
bmdJZGVudFVzZTogewogICAgICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93U3RyaW5nSWRl
bnQocHJvcGVydHlFZGdlKTsKLSAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5U3RyaW5nSWRlbnQpLCBtX2NhbGxGcmFtZSwg
YmFzZSwgcHJvcGVydHksIHZhbHVlLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIHZtQ2FsbChW
b2lkLCBvcGVyYXRpb25EZWZpbmVEYXRhUHJvcGVydHlTdHJpbmdJZGVudCwgbV9jYWxsRnJhbWUs
IGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgYXR0cmlidXRlcyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIFN5bWJvbFVzZTogewogICAgICAgICAgICAgTFZhbHVl
IHByb3BlcnR5ID0gbG93U3ltYm9sKHByb3BlcnR5RWRnZSk7Ci0gICAgICAgICAgICB2bUNhbGwo
Vm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbCks
IG1fY2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSwgdmFsdWUsIGF0dHJpYnV0ZXMpOworICAgICAg
ICAgICAgdm1DYWxsKFZvaWQsIG9wZXJhdGlvbkRlZmluZURhdGFQcm9wZXJ0eVN5bWJvbCwgbV9j
YWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgYXR0cmlidXRlcyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKICAgICAgICAg
ICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd0pTVmFsdWUocHJvcGVydHlFZGdlKTsKLSAgICAgICAg
ICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uRGVmaW5lRGF0YVByb3Bl
cnR5KSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCB2YWx1ZSwgYXR0cmlidXRlcyk7Cisg
ICAgICAgICAgICB2bUNhbGwoVm9pZCwgb3BlcmF0aW9uRGVmaW5lRGF0YVByb3BlcnR5LCBtX2Nh
bGxGcmFtZSwgYmFzZSwgcHJvcGVydHksIHZhbHVlLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CkBAIC0zODA2LDIyICszODIwLDIy
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIHN3aXRjaCAocHJvcGVydHlFZGdlLnVz
ZUtpbmQoKSkgewogICAgICAgICBjYXNlIFN0cmluZ1VzZTogewogICAgICAgICAgICAgTFZhbHVl
IHByb3BlcnR5ID0gbG93U3RyaW5nKHByb3BlcnR5RWRnZSk7Ci0gICAgICAgICAgICB2bUNhbGwo
Vm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJp
bmcpLCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHksIGdldHRlciwgc2V0dGVyLCBhdHRyaWJ1
dGVzKTsKKyAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclBy
b3BlcnR5U3RyaW5nLCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHksIGdldHRlciwgc2V0dGVy
LCBhdHRyaWJ1dGVzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgU3RyaW5nSWRlbnRVc2U6IHsKICAgICAgICAgICAgIExWYWx1ZSBwcm9wZXJ0eSA9IGxvd1N0
cmluZ0lkZW50KHByb3BlcnR5RWRnZSk7Ci0gICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTdHJpbmdJZGVudCksIG1f
Y2FsbEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSwgZ2V0dGVyLCBzZXR0ZXIsIGF0dHJpYnV0ZXMpOwor
ICAgICAgICAgICAgdm1DYWxsKFZvaWQsIG9wZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlT
dHJpbmdJZGVudCwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCBnZXR0ZXIsIHNldHRlciwg
YXR0cmlidXRlcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IFN5bWJvbFVzZTogewogICAgICAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93U3ltYm9sKHBy
b3BlcnR5RWRnZSk7Ci0gICAgICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbkRlZmluZUFjY2Vzc29yUHJvcGVydHlTeW1ib2wpLCBtX2NhbGxGcmFtZSwgYmFzZSwg
cHJvcGVydHksIGdldHRlciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIHZtQ2Fs
bChWb2lkLCBvcGVyYXRpb25EZWZpbmVBY2Nlc3NvclByb3BlcnR5U3ltYm9sLCBtX2NhbGxGcmFt
ZSwgYmFzZSwgcHJvcGVydHksIGdldHRlciwgc2V0dGVyLCBhdHRyaWJ1dGVzKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAg
ICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93SlNWYWx1ZShwcm9wZXJ0eUVkZ2UpOwotICAgICAg
ICAgICAgdm1DYWxsKFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25EZWZpbmVBY2Nlc3Nv
clByb3BlcnR5KSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCBnZXR0ZXIsIHNldHRlciwg
YXR0cmlidXRlcyk7CisgICAgICAgICAgICB2bUNhbGwoVm9pZCwgb3BlcmF0aW9uRGVmaW5lQWNj
ZXNzb3JQcm9wZXJ0eSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5LCBnZXR0ZXIsIHNldHRl
ciwgYXR0cmlidXRlcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBk
ZWZhdWx0OgpAQCAtMzkyNSw4ICszOTM5LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhzbG93UGF0aCwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgVmFs
dWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcigKLSAgICAgICAgICAgICAgICB2
bUNhbGwocG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlc29sdmVSb3Bl
KSwgbV9jYWxsRnJhbWUsIGNlbGwpKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dS
ZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvblJlc29s
dmVSb3BlLCBtX2NhbGxGcmFtZSwgY2VsbCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKQEAgLTQwNjMsMTEgKzQwNzYs
MTEgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICBjYXNlIE9iamVjdFVzZTogewotICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNh
bGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRQcm90b3R5cGVPZk9iamVjdCks
IG1fY2FsbEZyYW1lLCBsb3dPYmplY3QobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAg
IHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRpb25HZXRQcm90b3R5cGVPZk9iamVjdCwg
bV9jYWxsRnJhbWUsIGxvd09iamVjdChtX25vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6IHsKLSAgICAgICAgICAgIHNldEpT
VmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0UHJvdG90eXBl
T2YpLCBtX2NhbGxGcmFtZSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAg
ICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkdldFByb3RvdHlwZU9mLCBt
X2NhbGxGcmFtZSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQyMTIsOCArNDIyNSw3IEBAIGNsYXNz
IExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgbV9vdXQuaXNaZXJvNjQoZmFzdFJlc3Vs
dFZhbHVlKSwgcmFyZWx5KHNsb3dDYXNlKSwgdXN1YWxseShjb250aW51YXRpb24pKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlv
bik7Ci0gICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9y
KAotICAgICAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bkdldEJ5VmFsT2JqZWN0SW50KSwgbV9jYWxsRnJhbWUsIGJhc2UsIGluZGV4KSk7CisgICAgICAg
ICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2
NCwgb3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQsIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCkp
OwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTQy
NjMsOCArNDI3NSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
c2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcigKLSAgICAgICAgICAgICAgICB2bUNhbGwoSW50NjQs
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbE9iamVjdEludCksIG1fY2FsbEZyYW1l
LCBiYXNlLCBpbmRleCkpOworICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9
IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50LCBt
X2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7CkBAIC00MzEzLDggKzQzMjQsNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoCi0gICAgICAgICAgICAgICAg
dm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxPYmplY3RJbnQp
LCBtX2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgpKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBvcGVyYXRpb25HZXRCeVZh
bE9iamVjdEludCwgbV9jYWxsRnJhbWUsIGJhc2UsIGluZGV4KSk7CiAgICAgICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRp
bnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtNDM4NCwyMCArNDM5NCwyMCBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgICAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKS51
c2VLaW5kKCkgPT0gT2JqZWN0VXNlKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgudmFy
QXJnQ2hpbGQobV9ub2RlLCAxKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKAotICAgICAgICAgICAgICAgICAgICAgICAgSW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN0cmluZyksIG1fY2Fs
bEZyYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgSW50NjQsIG9wZXJhdGlvbkdldEJ5VmFs
T2JqZWN0U3RyaW5nLCBtX2NhbGxGcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGxvd09i
amVjdChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpLCBsb3dTdHJpbmcobV9ncmFwaC52
YXJBcmdDaGlsZChtX25vZGUsIDEpKSkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGgudmFyQXJnQ2hp
bGQobV9ub2RlLCAxKS51c2VLaW5kKCkgPT0gU3ltYm9sVXNlKSB7CiAgICAgICAgICAgICAgICAg
ICAgIHNldEpTVmFsdWUodm1DYWxsKAotICAgICAgICAgICAgICAgICAgICAgICAgSW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN5bWJvbCksIG1fY2FsbEZyYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgSW50NjQsIG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0
U3ltYm9sLCBtX2NhbGxGcmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGxvd09iamVjdCht
X2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpLCBsb3dTeW1ib2wobV9ncmFwaC52YXJBcmdD
aGlsZChtX25vZGUsIDEpKSkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwo
Ci0gICAgICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZh
bCksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgICAgIEludDY0LCBvcGVyYXRpb25HZXRCeVZh
bCwgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICAgICAgbG93SlNWYWx1ZShtX2dyYXBoLnZhckFy
Z0NoaWxkKG1fbm9kZSwgMCkpLCBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2Rl
LCAxKSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDQzNCw3ICs0NDQ0
LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
c2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgbV9v
dXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsT2JqZWN0SW50KSwgbV9jYWxsRnJhbWUsIGJh
c2UsIGluZGV4KSk7CisgICAgICAgICAgICAgICAgdm1DYWxsKEludDY0LCBvcGVyYXRpb25HZXRC
eVZhbE9iamVjdEludCwgbV9jYWxsRnJhbWUsIGJhc2UsIGluZGV4KSk7CiAgICAgICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtNDU5Myw3ICs0NjAzLDcgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcGVyYXRpb24gPSBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpbmdOb25TdHJp
Y3Q7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgdm1DYWxsKFZv
aWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb24pLCBtX2NhbGxGcmFtZSwgbG93Q2VsbChjaGls
ZDEpLCBsb3dTdHJpbmcoY2hpbGQyKSwgbG93SlNWYWx1ZShjaGlsZDMpKTsKKyAgICAgICAgICAg
ICAgICAgICAgdm1DYWxsKFZvaWQsIG9wZXJhdGlvbiwgbV9jYWxsRnJhbWUsIGxvd0NlbGwoY2hp
bGQxKSwgbG93U3RyaW5nKGNoaWxkMiksIGxvd0pTVmFsdWUoY2hpbGQzKSk7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTQ2MDksNyArNDYxOSw3
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gb3BlcmF0aW9uUHV0QnlWYWxD
ZWxsU3ltYm9sTm9uU3RyaWN0OwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIHZtQ2FsbChWb2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uKSwgbV9jYWxsRnJh
bWUsIGxvd0NlbGwoY2hpbGQxKSwgbG93U3ltYm9sKGNoaWxkMiksIGxvd0pTVmFsdWUoY2hpbGQz
KSk7CisgICAgICAgICAgICAgICAgICAgIHZtQ2FsbChWb2lkLCBvcGVyYXRpb24sIG1fY2FsbEZy
YW1lLCBsb3dDZWxsKGNoaWxkMSksIGxvd1N5bWJvbChjaGlsZDIpLCBsb3dKU1ZhbHVlKGNoaWxk
MykpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQpAQCAtNDYyOCw3ICs0NjM4LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIHZtQ2FsbCgKLSAgICAg
ICAgICAgICAgICBWb2lkLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uKSwgbV9jYWxsRnJhbWUs
CisgICAgICAgICAgICAgICAgVm9pZCwgb3BlcmF0aW9uLCBtX2NhbGxGcmFtZSwKICAgICAgICAg
ICAgICAgICBsb3dKU1ZhbHVlKGNoaWxkMSksIGxvd0pTVmFsdWUoY2hpbGQyKSwgbG93SlNWYWx1
ZShjaGlsZDMpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDc1Miw3ICs0
NzYyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sg
bGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgaW5Cb3VuZENhc2UpOwogICAgICAg
ICAgICAgdm1DYWxsKAotICAgICAgICAgICAgICAgIFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihzbG93
UGF0aEZ1bmN0aW9uKSwKKyAgICAgICAgICAgICAgICBWb2lkLCBzbG93UGF0aEZ1bmN0aW9uLAog
ICAgICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCwgdmFsdWUpOwogICAgICAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCkBAIC00ODc3LDcgKzQ4ODcsNyBAQCBj
bGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBhdXRvIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmll
cnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07CiAgICAgICAgIHZtQ2FsbCgKICAgICAg
ICAgICAgIFZvaWQsCi0gICAgICAgICAgICBtX291dC5vcGVyYXRpb24obV9ub2RlLT5vcCgpID09
IFB1dEdldHRlckJ5SWQgPyBvcGVyYXRpb25QdXRHZXR0ZXJCeUlkIDogb3BlcmF0aW9uUHV0U2V0
dGVyQnlJZCksCisgICAgICAgICAgICBtX25vZGUtPm9wKCkgPT0gUHV0R2V0dGVyQnlJZCA/IG9w
ZXJhdGlvblB1dEdldHRlckJ5SWQgOiBvcGVyYXRpb25QdXRTZXR0ZXJCeUlkLAogICAgICAgICAg
ICAgbV9jYWxsRnJhbWUsIGJhc2UsIG1fb3V0LmNvbnN0SW50UHRyKHVpZCksIG1fb3V0LmNvbnN0
SW50MzIobV9ub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSksIGFjY2Vzc29yKTsKICAgICB9CiAK
QEAgLTQ4ODgsNyArNDg5OCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIExWYWx1
ZSBzZXR0ZXIgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOwogICAgICAgICBhdXRvIHVp
ZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07CiAg
ICAgICAgIHZtQ2FsbCgKLSAgICAgICAgICAgIFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25QdXRHZXR0ZXJTZXR0ZXIpLAorICAgICAgICAgICAgVm9pZCwgb3BlcmF0aW9uUHV0R2V0dGVy
U2V0dGVyLAogICAgICAgICAgICAgbV9jYWxsRnJhbWUsIGJhc2UsIG1fb3V0LmNvbnN0SW50UHRy
KHVpZCksIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5hY2Nlc3NvckF0dHJpYnV0ZXMoKSksIGdl
dHRlciwgc2V0dGVyKTsKIAogICAgIH0KQEAgLTQ5MDAsNyArNDkxMCw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgIExWYWx1ZSBhY2Nlc3NvciA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDMoKSk7CiAgICAgICAgIHZtQ2FsbCgKICAgICAgICAgICAgIFZvaWQsCi0gICAgICAgICAgICBt
X291dC5vcGVyYXRpb24obV9ub2RlLT5vcCgpID09IFB1dEdldHRlckJ5VmFsID8gb3BlcmF0aW9u
UHV0R2V0dGVyQnlWYWwgOiBvcGVyYXRpb25QdXRTZXR0ZXJCeVZhbCksCisgICAgICAgICAgICBt
X25vZGUtPm9wKCkgPT0gUHV0R2V0dGVyQnlWYWwgPyBvcGVyYXRpb25QdXRHZXR0ZXJCeVZhbCA6
IG9wZXJhdGlvblB1dFNldHRlckJ5VmFsLAogICAgICAgICAgICAgbV9jYWxsRnJhbWUsIGJhc2Us
IHN1YnNjcmlwdCwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmFjY2Vzc29yQXR0cmlidXRlcygp
KSwgYWNjZXNzb3IpOwogICAgIH0KIApAQCAtNDkwOCwxNCArNDkxOCwxNCBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgIHsKICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICBhdXRvIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtt
X25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07Ci0gICAgICAgIHNldEJvb2xlYW4obV9vdXQubm90
WmVybzY0KHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRlbGV0ZUJ5SWQp
LCBtX2NhbGxGcmFtZSwgYmFzZSwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSkpKTsKKyAgICAgICAg
c2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25EZWxldGVC
eUlkLCBtX2NhbGxGcmFtZSwgYmFzZSwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSkpKTsKICAgICB9
CiAKICAgICB2b2lkIGNvbXBpbGVEZWxldGVCeVZhbCgpCiAgICAgewogICAgICAgICBMVmFsdWUg
YmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSBzdWJz
Y3JpcHQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICBzZXRCb29sZWFu
KG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25E
ZWxldGVCeVZhbCksIG1fY2FsbEZyYW1lLCBiYXNlLCBzdWJzY3JpcHQpKSk7CisgICAgICAgIHNl
dEJvb2xlYW4obV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uRGVsZXRlQnlW
YWwsIG1fY2FsbEZyYW1lLCBiYXNlLCBzdWJzY3JpcHQpKSk7CiAgICAgfQogICAgIAogICAgIHZv
aWQgY29tcGlsZUFycmF5UHVzaCgpCkBAIC00OTY2LDEzICs0OTc2LDEyIEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBj
b250aW51YXRpb24pOwotICAgICAgICAgICAgICAgIExWYWx1ZSBvcGVyYXRpb247CisgICAgICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdDsKICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJh
eU1vZGUoKS50eXBlKCkgIT0gQXJyYXk6OkRvdWJsZSkKLSAgICAgICAgICAgICAgICAgICAgb3Bl
cmF0aW9uID0gbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5UHVzaCk7CisgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uQXJyYXlQdXNoLCBtX2Nh
bGxGcmFtZSwgdmFsdWUsIGJhc2UpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgb3BlcmF0aW9uID0gbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5UHVzaERv
dWJsZSk7Ci0gICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0
LmFuY2hvcigKLSAgICAgICAgICAgICAgICAgICAgdm1DYWxsKEludDY0LCBvcGVyYXRpb24sIG1f
Y2FsbEZyYW1lLCB2YWx1ZSwgYmFzZSkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB2
bUNhbGwoSW50NjQsIG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZSwgbV9jYWxsRnJhbWUsIHZhbHVl
LCBiYXNlKTsKKyAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9v
dXQuYW5jaG9yKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtNTAzNCwxMSArNTA0Myw5IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAgICAgICAgICAgICBtX291dC5icmFuY2goYmV5b25kVmVjdG9yTGVuZ3RoLCB1
bnN1cmUoc2xvd0NhbGxQYXRoKSwgdW5zdXJlKGNvbnRpbnVhdGlvbikpOwogCiAgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhzbG93Q2FsbFBhdGgsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAg
ICBMVmFsdWUgb3BlcmF0aW9uOwotICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCku
dHlwZSgpICE9IEFycmF5OjpEb3VibGUpCi0gICAgICAgICAgICAgICAgb3BlcmF0aW9uID0gbV9v
dXQub3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBvcGVyYXRpb24gPSBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
QXJyYXlQdXNoRG91YmxlTXVsdGlwbGUpOworICAgICAgICAgICAgYXV0byogb3BlcmF0aW9uID0g
Jm9wZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlOworICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJy
YXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpEb3VibGUpCisgICAgICAgICAgICAgICAgb3BlcmF0
aW9uID0gJm9wZXJhdGlvbkFycmF5UHVzaERvdWJsZU11bHRpcGxlOwogICAgICAgICAgICAgVmFs
dWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG9wZXJh
dGlvbiwgbV9jYWxsRnJhbWUsIGJhc2UsIGJ1ZmZlciwgbV9vdXQuY29uc3RJbnQzMihlbGVtZW50
Q291bnQpKSk7CiAgICAgICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cigw
KSwgbV9vdXQuYWJzb2x1dGUoc2NyYXRjaEJ1ZmZlci0+YWRkcmVzc09mQWN0aXZlTGVuZ3RoKCkp
KTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTUwODQsNyArNTA5
MSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgICAgICBWYWx1ZUZyb21C
bG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgICAgICAgICB2bUNh
bGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25BcnJheVB1c2gpLCBtX2NhbGxGcmFt
ZSwgdmFsdWUsIGJhc2UpKTsKKyAgICAgICAgICAgICAgICAgICAgdm1DYWxsKEludDY0LCBvcGVy
YXRpb25BcnJheVB1c2gsIG1fY2FsbEZyYW1lLCB2YWx1ZSwgYmFzZSkpOwogICAgICAgICAgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtNTEzMyw3ICs1MTQwLDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIG1fb3V0LmJyYW5jaChiZXlvbmRWZWN0b3JM
ZW5ndGgsIHJhcmVseShzbG93Q2FsbFBhdGgpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbikpOwogCiAg
ICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FsbFBhdGgsIGNvbnRpbnVhdGlvbik7Ci0g
ICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2Fs
bChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5UHVzaE11bHRpcGxlKSwgbV9j
YWxsRnJhbWUsIGJhc2UsIGJ1ZmZlciwgbV9vdXQuY29uc3RJbnQzMihlbGVtZW50Q291bnQpKSk7
CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZt
Q2FsbChJbnQ2NCwgb3BlcmF0aW9uQXJyYXlQdXNoTXVsdGlwbGUsIG1fY2FsbEZyYW1lLCBiYXNl
LCBidWZmZXIsIG1fb3V0LmNvbnN0SW50MzIoZWxlbWVudENvdW50KSkpOwogICAgICAgICAgICAg
bV9vdXQuc3RvcmVQdHIobV9vdXQuY29uc3RJbnRQdHIoMCksIG1fb3V0LmFic29sdXRlKHNjcmF0
Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2ZUxlbmd0aCgpKSk7CiAgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CiAKQEAgLTUzNTIsMTcgKzUzNTksMTcgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKIAogICAgICAgICBjYXNlIFN0cmluZ1VzZToKICAgICAgICAgICAgIEFTU0VSVCht
X25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6Q29udGlndW91cyk7Ci0gICAgICAg
ICAgICBzZXRJbnQzMih2bUNhbGwoSW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25BcnJh
eUluZGV4T2ZTdHJpbmcpLCBtX2NhbGxGcmFtZSwgc3RvcmFnZSwgbG93U3RyaW5nKHNlYXJjaEVs
ZW1lbnRFZGdlKSwgc3RhcnRJbmRleCkpOworICAgICAgICAgICAgc2V0SW50MzIodm1DYWxsKElu
dDMyLCBvcGVyYXRpb25BcnJheUluZGV4T2ZTdHJpbmcsIG1fY2FsbEZyYW1lLCBzdG9yYWdlLCBs
b3dTdHJpbmcoc2VhcmNoRWxlbWVudEVkZ2UpLCBzdGFydEluZGV4KSk7CiAgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICBjYXNlIFVudHlwZWRVc2U6CiAgICAgICAgICAgICBzd2l0Y2ggKG1f
bm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3Vi
bGU6Ci0gICAgICAgICAgICAgICAgc2V0SW50MzIodm1DYWxsKEludDMyLCBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uQXJyYXlJbmRleE9mVmFsdWVEb3VibGUpLCBtX2NhbGxGcmFtZSwgc3RvcmFn
ZSwgbG93SlNWYWx1ZShzZWFyY2hFbGVtZW50RWRnZSksIHN0YXJ0SW5kZXgpKTsKKyAgICAgICAg
ICAgICAgICBzZXRJbnQzMih2bUNhbGwoSW50MzIsIG9wZXJhdGlvbkFycmF5SW5kZXhPZlZhbHVl
RG91YmxlLCBtX2NhbGxGcmFtZSwgc3RvcmFnZSwgbG93SlNWYWx1ZShzZWFyY2hFbGVtZW50RWRn
ZSksIHN0YXJ0SW5kZXgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgQXJyYXk6OkludDMyOgogICAgICAgICAgICAgY2FzZSBBcnJheTo6Q29udGlndW91czoKLSAg
ICAgICAgICAgICAgICBzZXRJbnQzMih2bUNhbGwoSW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25BcnJheUluZGV4T2ZWYWx1ZUludDMyT3JDb250aWd1b3VzKSwgbV9jYWxsRnJhbWUsIHN0
b3JhZ2UsIGxvd0pTVmFsdWUoc2VhcmNoRWxlbWVudEVkZ2UpLCBzdGFydEluZGV4KSk7CisgICAg
ICAgICAgICAgICAgc2V0SW50MzIodm1DYWxsKEludDMyLCBvcGVyYXRpb25BcnJheUluZGV4T2ZW
YWx1ZUludDMyT3JDb250aWd1b3VzLCBtX2NhbGxGcmFtZSwgc3RvcmFnZSwgbG93SlNWYWx1ZShz
ZWFyY2hFbGVtZW50RWRnZSksIHN0YXJ0SW5kZXgpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTU0MjAsNyArNTQyNyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51
YXRpb24pOwogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHZtQ2FsbCgK
LSAgICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkFycmF5UG9w
QW5kUmVjb3Zlckxlbmd0aCksIG1fY2FsbEZyYW1lLCBiYXNlKSkpOworICAgICAgICAgICAgICAg
IEludDY0LCBvcGVyYXRpb25BcnJheVBvcEFuZFJlY292ZXJMZW5ndGgsIG1fY2FsbEZyYW1lLCBi
YXNlKSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsK
QEAgLTU0NjIsOCArNTQ2OSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNs
b3dDYXNlLCBjb250aW51YXRpb24pOwotICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQu
YW5jaG9yKHZtQ2FsbCgKLSAgICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbkFycmF5UG9wKSwgbV9jYWxsRnJhbWUsIGJhc2UpKSk7CisgICAgICAgICAgICByZXN1
bHRzLmFwcGVuZChtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBvcGVyYXRpb25BcnJheVBvcCwg
bV9jYWxsRnJhbWUsIGJhc2UpKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CiAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OwpAQCAtNTQ4MywxMiArNTQ4OSwxMiBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBh
dXRvIG9iamVjdEVkZ2UgPSBtX25vZGUtPmNoaWxkMigpOwogICAgICAgICBpZiAob2JqZWN0RWRn
ZS51c2VLaW5kKCkgPT0gT2JqZWN0VXNlKSB7CiAgICAgICAgICAgICBMVmFsdWUgb2JqZWN0ID0g
bG93Tm9uTnVsbE9iamVjdChvYmplY3RFZGdlKTsKLSAgICAgICAgICAgIExWYWx1ZSByZXN1bHQg
PSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25QdXNoV2l0aFNjb3BlT2Jq
ZWN0KSwgbV9jYWxsRnJhbWUsIHBhcmVudFNjb3BlLCBvYmplY3QpOworICAgICAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uUHVzaFdpdGhTY29wZU9iamVjdCwg
bV9jYWxsRnJhbWUsIHBhcmVudFNjb3BlLCBvYmplY3QpOwogICAgICAgICAgICAgc2V0SlNWYWx1
ZShyZXN1bHQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKG9iamVjdEVk
Z2UudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgICAgICAgICAgTFZhbHVlIG9iamVjdCA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUHVzaFdpdGhTY29wZSks
IG1fY2FsbEZyYW1lLCBwYXJlbnRTY29wZSwgb2JqZWN0KTsKKyAgICAgICAgICAgIExWYWx1ZSBy
ZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvblB1c2hXaXRoU2NvcGUsIG1fY2FsbEZyYW1l
LCBwYXJlbnRTY29wZSwgb2JqZWN0KTsKICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTU1MDMsNyArNTUwOSw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIGlmICh0YWJsZS0+c2luZ2xldG9uKCkuaXNTdGlsbFZhbGlkKCkpIHsKICAg
ICAgICAgICAgIExWYWx1ZSBjYWxsUmVzdWx0ID0gdm1DYWxsKAogICAgICAgICAgICAgICAgIElu
dDY0LAotICAgICAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVBY3Rp
dmF0aW9uRGlyZWN0KSwgbV9jYWxsRnJhbWUsIHdlYWtTdHJ1Y3R1cmUoc3RydWN0dXJlKSwKKyAg
ICAgICAgICAgICAgICBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0LCBtX2NhbGxGcmFt
ZSwgd2Vha1N0cnVjdHVyZShzdHJ1Y3R1cmUpLAogICAgICAgICAgICAgICAgIHNjb3BlLCB3ZWFr
UG9pbnRlcih0YWJsZSksIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGluaXRpYWxp
emF0aW9uVmFsdWUpKSk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKGNhbGxSZXN1bHQpOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtNTU2MywxMCArNTU2OSwxMCBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBtX25vZGUtPmNh
c3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxl
LT5zaW5nbGV0b24oKS5pc1N0aWxsVmFsaWQoKSkgewogICAgICAgICAgICAgTFZhbHVlIGNhbGxS
ZXN1bHQgPQotICAgICAgICAgICAgICAgIGlzR2VuZXJhdG9yRnVuY3Rpb24gPyB2bUNhbGwoSW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbiksIG1fY2Fs
bEZyYW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJsZSkpIDoKLSAgICAgICAgICAgICAg
ICBpc0FzeW5jRnVuY3Rpb24gPyB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25OZXdBc3luY0Z1bmN0aW9uKSwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVj
dXRhYmxlKSkgOgotICAgICAgICAgICAgICAgIGlzQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiA/IHZt
Q2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FzeW5jR2VuZXJhdG9yRnVu
Y3Rpb24pLCBtX2NhbGxGcmFtZSwgc2NvcGUsIHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpKSA6Ci0g
ICAgICAgICAgICAgICAgdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3
RnVuY3Rpb24pLCBtX2NhbGxGcmFtZSwgc2NvcGUsIHdlYWtQb2ludGVyKGV4ZWN1dGFibGUpKTsK
KyAgICAgICAgICAgICAgICBpc0dlbmVyYXRvckZ1bmN0aW9uID8gdm1DYWxsKEludDY0LCBvcGVy
YXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbiwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRl
cihleGVjdXRhYmxlKSkgOgorICAgICAgICAgICAgICAgIGlzQXN5bmNGdW5jdGlvbiA/IHZtQ2Fs
bChJbnQ2NCwgb3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbiwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3
ZWFrUG9pbnRlcihleGVjdXRhYmxlKSkgOgorICAgICAgICAgICAgICAgIGlzQXN5bmNHZW5lcmF0
b3JGdW5jdGlvbiA/IHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uTmV3QXN5bmNHZW5lcmF0b3JGdW5j
dGlvbiwgbV9jYWxsRnJhbWUsIHNjb3BlLCB3ZWFrUG9pbnRlcihleGVjdXRhYmxlKSkgOgorICAg
ICAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uTmV3RnVuY3Rpb24sIG1fY2FsbEZy
YW1lLCBzY29wZSwgd2Vha1BvaW50ZXIoZXhlY3V0YWJsZSkpOwogICAgICAgICAgICAgc2V0SlNW
YWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNTc1
MCw3ICs1NzU2LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgTFZhbHVlIHNjb3Bl
ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBy
ZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cyksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgSW50
NjQsIG9wZXJhdGlvbkNyZWF0ZVNjb3BlZEFyZ3VtZW50cywgbV9jYWxsRnJhbWUsCiAgICAgICAg
ICAgICB3ZWFrUG9pbnRlcigKICAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnNjb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSgpKSwK
ICAgICAgICAgICAgIGdldEFyZ3VtZW50c1N0YXJ0KCksIGdldEFyZ3VtZW50c0xlbmd0aCgpLnZh
bHVlLCBnZXRDdXJyZW50Q2FsbGVlKCksIHNjb3BlKTsKQEAgLTU3NjEsNyArNTc2Nyw3IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRz
KCkKICAgICB7CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICBJ
bnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3VtZW50cyksIG1f
Y2FsbEZyYW1lLAorICAgICAgICAgICAgSW50NjQsIG9wZXJhdGlvbkNyZWF0ZUNsb25lZEFyZ3Vt
ZW50cywgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICB3ZWFrUG9pbnRlcigKICAgICAgICAgICAg
ICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmNs
b25lZEFyZ3VtZW50c1N0cnVjdHVyZSgpKSwKICAgICAgICAgICAgIGdldEFyZ3VtZW50c1N0YXJ0
KCksIGdldEFyZ3VtZW50c0xlbmd0aCgpLnZhbHVlLCBnZXRDdXJyZW50Q2FsbGVlKCkpOwpAQCAt
NTgwNCw3ICs1ODEwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgTFZhbHVlIGFy
Z3VtZW50U3RhcnQgPSBnZXRBcmd1bWVudHNTdGFydCgpOwogICAgICAgICBMVmFsdWUgbnVtYmVy
T2ZBcmd1bWVudHNUb1NraXAgPSBtX291dC5jb25zdEludDMyKG1fbm9kZS0+bnVtYmVyT2ZBcmd1
bWVudHNUb1NraXAoKSk7CiAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKAotICAgICAgICAgICAg
SW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVSZXN0KSwgbV9jYWxsRnJhbWUs
IGFyZ3VtZW50U3RhcnQsIG51bWJlck9mQXJndW1lbnRzVG9Ta2lwLCBhcnJheUxlbmd0aCkpOwor
ICAgICAgICAgICAgSW50NjQsIG9wZXJhdGlvbkNyZWF0ZVJlc3QsIG1fY2FsbEZyYW1lLCBhcmd1
bWVudFN0YXJ0LCBudW1iZXJPZkFyZ3VtZW50c1RvU2tpcCwgYXJyYXlMZW5ndGgpKTsKICAgICB9
CiAKICAgICB2b2lkIGNvbXBpbGVHZXRSZXN0TGVuZ3RoKCkKQEAgLTU4NjIsNyArNTg2OCw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwogCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0J1dEFycmF5QnVm
ZmVyQ2FzZSwgc2xvd0Nhc2UpOwotICAgICAgICAgICAgICAgIExWYWx1ZSBzbG93QXJyYXkgPSB2
bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciksIG1f
Y2FsbEZyYW1lLCB3ZWFrU3RydWN0dXJlKGFycmF5U3RydWN0dXJlKSwgY2FjaGVkT3duS2V5cyk7
CisgICAgICAgICAgICAgICAgTFZhbHVlIHNsb3dBcnJheSA9IHZtQ2FsbChJbnQ2NCwgb3BlcmF0
aW9uTmV3QXJyYXlCdWZmZXIsIG1fY2FsbEZyYW1lLCB3ZWFrU3RydWN0dXJlKGFycmF5U3RydWN0
dXJlKSwgY2FjaGVkT3duS2V5cyk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d0J1dEFycmF5QnVmZmVyUmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dBcnJheSk7CiAgICAgICAg
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCkBAIC01ODgxLDExICs1ODg3LDEx
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291
dC5waGkocG9pbnRlclR5cGUoKSwgZmFzdFJlc3VsdCwgc2xvd0J1dEFycmF5QnVmZmVyUmVzdWx0
LCBzbG93UmVzdWx0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbk9iamVjdEtleXNPYmplY3QpLCBtX2NhbGxGcmFtZSwgbG93T2JqZWN0KG1fbm9kZS0+Y2hp
bGQxKCkpKSk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9u
T2JqZWN0S2V5c09iamVjdCwgbV9jYWxsRnJhbWUsIGxvd09iamVjdChtX25vZGUtPmNoaWxkMSgp
KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBVbnR5cGVk
VXNlOgotICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25PYmplY3RLZXlzKSwgbV9jYWxsRnJhbWUsIGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDEoKSkpKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRp
b25PYmplY3RLZXlzLCBtX2NhbGxGcmFtZSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTg5NywxMCArNTkwMywxMCBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgIHsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSkgewogICAgICAgICBjYXNlIE9iamVjdFVzZToKLSAgICAgICAgICAgIHNldEpTVmFs
dWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0Q3JlYXRlT2Jq
ZWN0KSwgbV9jYWxsRnJhbWUsIGxvd09iamVjdChtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAg
ICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbk9iamVjdENyZWF0ZU9iamVj
dCwgbV9jYWxsRnJhbWUsIGxvd09iamVjdChtX25vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZToKLSAgICAgICAgICAgIHNldEpTVmFs
dWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0Q3JlYXRlKSwg
bV9jYWxsRnJhbWUsIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAg
IHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRpb25PYmplY3RDcmVhdGUsIG1fY2FsbEZy
YW1lLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC01OTMzLDcgKzU5MzksNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nh
c2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBt
X291dC5hbmNob3Iodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJhdGlvbihtX25vZGUt
PmlzSW50ZXJuYWxQcm9taXNlKCkgPyBvcGVyYXRpb25OZXdJbnRlcm5hbFByb21pc2UgOiBvcGVy
YXRpb25OZXdQcm9taXNlKSwgbV9jYWxsRnJhbWUsIGZyb3plblBvaW50ZXIobV9ncmFwaC5mcmVl
emVTdHJvbmcobV9ub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSkpKSk7CisgICAgICAgIFZhbHVlRnJv
bUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1f
bm9kZS0+aXNJbnRlcm5hbFByb21pc2UoKSA/IG9wZXJhdGlvbk5ld0ludGVybmFsUHJvbWlzZSA6
IG9wZXJhdGlvbk5ld1Byb21pc2UsIG1fY2FsbEZyYW1lLCBmcm96ZW5Qb2ludGVyKG1fZ3JhcGgu
ZnJlZXplU3Ryb25nKG1fbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpKSkpOwogICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uLCBsYXN0TmV4dCk7CkBAIC01OTU4LDcgKzU5NjQsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIHNs
b3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb24pLCBtX2NhbGxGcmFtZSwgZnJvemVuUG9pbnRlcihtX2dyYXBoLmZyZWV6
ZVN0cm9uZyhtX25vZGUtPnN0cnVjdHVyZSgpLmdldCgpKSkpKTsKKyAgICAgICAgVmFsdWVGcm9t
QmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwocG9pbnRlclR5cGUoKSwgb3Bl
cmF0aW9uLCBtX2NhbGxGcmFtZSwgZnJvemVuUG9pbnRlcihtX2dyYXBoLmZyZWV6ZVN0cm9uZyht
X25vZGUtPnN0cnVjdHVyZSgpLmdldCgpKSkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OwpAQCAtNjAxMSwxMSArNjAxNywxMSBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIHZvaWQg
Y29tcGlsZU5ld1N5bWJvbCgpCiAgICAgewogICAgICAgICBpZiAoIW1fbm9kZS0+Y2hpbGQxKCkp
IHsKLSAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25OZXdTeW1ib2wpLCBtX2NhbGxGcmFtZSkpOworICAgICAgICAgICAg
c2V0SlNWYWx1ZSh2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uTmV3U3ltYm9sLCBtX2Nh
bGxGcmFtZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIEFTU0VS
VChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBLbm93blN0cmluZ1VzZSk7Ci0gICAgICAg
IHNldEpTVmFsdWUodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25OZXdTeW1ib2xXaXRoRGVzY3JpcHRpb24pLCBtX2NhbGxGcmFtZSwgbG93U3RyaW5nKG1fbm9k
ZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKHBvaW50ZXJUeXBlKCks
IG9wZXJhdGlvbk5ld1N5bWJvbFdpdGhEZXNjcmlwdGlvbiwgbV9jYWxsRnJhbWUsIGxvd1N0cmlu
ZyhtX25vZGUtPmNoaWxkMSgpKSkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZU5ld0FycmF5
KCkKQEAgLTYwNzYsNyArNjA4Miw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIAog
ICAgICAgICBpZiAoIW1fbm9kZS0+bnVtQ2hpbGRyZW4oKSkgewogICAgICAgICAgICAgc2V0SlNW
YWx1ZSh2bUNhbGwoCi0gICAgICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25OZXdFbXB0eUFycmF5KSwgbV9jYWxsRnJhbWUsCisgICAgICAgICAgICAgICAgSW50NjQs
IG9wZXJhdGlvbk5ld0VtcHR5QXJyYXksIG1fY2FsbEZyYW1lLAogICAgICAgICAgICAgICAgIHdl
YWtTdHJ1Y3R1cmUoc3RydWN0dXJlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC02MTA0LDcgKzYxMTAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnRQdHIoc2NyYXRjaFNpemUpLCBtX291dC5hYnNvbHV0ZShzY3JhdGNoQnVm
ZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSkpOwogICAgICAgICAKICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uTmV3QXJyYXkpLCBtX2NhbGxGcmFtZSwKKyAgICAgICAgICAgIEludDY0LCBvcGVyYXRp
b25OZXdBcnJheSwgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICB3ZWFrU3RydWN0dXJlKHN0cnVj
dHVyZSksIG1fb3V0LmNvbnN0SW50UHRyKGJ1ZmZlciksCiAgICAgICAgICAgICBtX291dC5jb25z
dEludFB0cihtX25vZGUtPm51bUNoaWxkcmVuKCkpKTsKICAgICAgICAgCkBAIC02MjkzLDcgKzYy
OTksNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICB9CiAKICAgICAgICAgbV9vdXQu
c3RvcmVQdHIobV9vdXQuY29uc3RJbnRQdHIoc2NyYXRjaFNpemUpLCBtX291dC5hYnNvbHV0ZShz
Y3JhdGNoQnVmZmVyLT5hZGRyZXNzT2ZBY3RpdmVMZW5ndGgoKSkpOwotICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlX
aXRoU3ByZWFkU2xvdyksIG1fY2FsbEZyYW1lLCBtX291dC5jb25zdEludFB0cihidWZmZXIpLCBt
X291dC5jb25zdEludDMyKG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSkpOworICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25OZXdBcnJheVdpdGhTcHJlYWRTbG93LCBt
X2NhbGxGcmFtZSwgbV9vdXQuY29uc3RJbnRQdHIoYnVmZmVyKSwgbV9vdXQuY29uc3RJbnQzMiht
X25vZGUtPm51bUNoaWxkcmVuKCkpKTsKICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuY29u
c3RJbnRQdHIoMCksIG1fb3V0LmFic29sdXRlKHNjcmF0Y2hCdWZmZXItPmFkZHJlc3NPZkFjdGl2
ZUxlbmd0aCgpKSk7CiAKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwpAQCAtNjMyMyw3ICs2
MzI5LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhz
bG93UGF0aCwgY29udGludWF0aW9uKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3Vs
dCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoCi0gICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0
aW9uKG9wZXJhdGlvbkNyZWF0ZVRoaXMpLCBtX2NhbGxGcmFtZSwgY2FsbGVlLCBtX291dC5jb25z
dEludDMyKG1fbm9kZS0+aW5saW5lQ2FwYWNpdHkoKSkpKTsKKyAgICAgICAgICAgIEludDY0LCBv
cGVyYXRpb25DcmVhdGVUaGlzLCBtX2NhbGxGcmFtZSwgY2FsbGVlLCBtX291dC5jb25zdEludDMy
KG1fbm9kZS0+aW5saW5lQ2FwYWNpdHkoKSkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OwpAQCAtNjM4Miw3ICs2Mzg4LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNl
LCBjb250aW51YXRpb24pOwotICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9v
dXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG1fbm9kZS0+aXNJbnRlcm5h
bFByb21pc2UoKSA/IG9wZXJhdGlvbkNyZWF0ZUludGVybmFsUHJvbWlzZSA6IG9wZXJhdGlvbkNy
ZWF0ZVByb21pc2UpLCBtX2NhbGxGcmFtZSwgY2FsbGVlLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QpKSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Io
dm1DYWxsKEludDY0LCBtX25vZGUtPmlzSW50ZXJuYWxQcm9taXNlKCkgPyBvcGVyYXRpb25DcmVh
dGVJbnRlcm5hbFByb21pc2UgOiBvcGVyYXRpb25DcmVhdGVQcm9taXNlLCBtX2NhbGxGcmFtZSwg
Y2FsbGVlLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAo
Y29udGludWF0aW9uKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxh
c3ROZXh0KTsKQEAgLTY0MzMsNyArNjQzOSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhz
bG93Q2FzZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3Vs
dCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb24p
LCBtX2NhbGxGcmFtZSwgY2FsbGVlLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpKSk7CisgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0
LCBvcGVyYXRpb24sIG1fY2FsbEZyYW1lLCBjYWxsZWUsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVj
dCkpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtNjQ2OCw3ICs2NDc0LDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhz
bG93QWxsb2NhdGlvbiwgY29udGludWF0aW9uKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dGaXhlZEFycmF5ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlRml4ZWRBcnJheSksIG1fY2FsbEZyYW1lLCBtX291
dC5jb25zdEludDMyKGltbXV0YWJsZUJ1dHRlcmZseS0+bGVuZ3RoKCkpKSk7CisgICAgICAgICAg
ICBWYWx1ZUZyb21CbG9jayBzbG93Rml4ZWRBcnJheSA9IG1fb3V0LmFuY2hvcih2bUNhbGwocG9p
bnRlclR5cGUoKSwgb3BlcmF0aW9uQ3JlYXRlRml4ZWRBcnJheSwgbV9jYWxsRnJhbWUsIG1fb3V0
LmNvbnN0SW50MzIoaW1tdXRhYmxlQnV0dGVyZmx5LT5sZW5ndGgoKSkpKTsKICAgICAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC02NTEzLDcgKzY1MTksNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICAgICAgbV9vdXQuanVtcChsb29wSGVhZGVyKTsKIAogICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0FsbG9jYXRpb24sIGxvb3BIZWFkZXIpOwotICAgICAg
ICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd0FycmF5ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChwb2lu
dGVyVHlwZSgpLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlRml4ZWRBcnJheSksIG1f
Y2FsbEZyYW1lLCBsZW5ndGgpKTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dBcnJh
eSA9IG1fb3V0LmFuY2hvcih2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uQ3JlYXRlRml4
ZWRBcnJheSwgbV9jYWxsRnJhbWUsIGxlbmd0aCkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChs
b29wSGVhZGVyKTsKIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obG9vcEhlYWRlciwgbG9v
cEJvZHkpOwpAQCAtNjYxNSwxNCArNjYyMSwxNCBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGlu
dWF0aW9uKTsKLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5h
bmNob3Iodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TcHJl
YWRGYXN0QXJyYXkpLCBtX2NhbGxGcmFtZSwgYXJndW1lbnQpKTsKKyAgICAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKHBvaW50ZXJUeXBlKCks
IG9wZXJhdGlvblNwcmVhZEZhc3RBcnJheSwgbV9jYWxsRnJhbWUsIGFyZ3VtZW50KSk7CiAgICAg
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICAgICAgcmVzdWx0ID0gbV9v
dXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpOwogICAgICAgICAg
ICAgbXV0YXRvckZlbmNlKCk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0g
dm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TcHJlYWRHZW5l
cmljKSwgbV9jYWxsRnJhbWUsIGFyZ3VtZW50KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2Fs
bChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25TcHJlYWRHZW5lcmljLCBtX2NhbGxGcmFtZSwgYXJn
dW1lbnQpOwogCiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CkBAIC02NjQzLDcg
KzY2NDksNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwogCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29u
dGludWF0aW9uKTsKLSAgICAgICAgICAgIExWYWx1ZSBzbG93QXJyYXkgPSB2bUNhbGwoSW50NjQs
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciksIG1fY2FsbEZyYW1lLCB3
ZWFrU3RydWN0dXJlKHN0cnVjdHVyZSksIGZyb3plblBvaW50ZXIobV9ub2RlLT5jZWxsT3BlcmFu
ZCgpKSk7CisgICAgICAgICAgICBMVmFsdWUgc2xvd0FycmF5ID0gdm1DYWxsKEludDY0LCBvcGVy
YXRpb25OZXdBcnJheUJ1ZmZlciwgbV9jYWxsRnJhbWUsIHdlYWtTdHJ1Y3R1cmUoc3RydWN0dXJl
KSwgZnJvemVuUG9pbnRlcihtX25vZGUtPmNlbGxPcGVyYW5kKCkpKTsKICAgICAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd0FycmF5KTsKICAgICAg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIApAQCAtNjY1NSw3ICs2NjYxLDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc2V0SlNW
YWx1ZSh2bUNhbGwoCi0gICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0FycmF5QnVmZmVyKSwgbV9jYWxsRnJhbWUsCisgICAgICAgICAgICBJbnQ2NCwgb3BlcmF0
aW9uTmV3QXJyYXlCdWZmZXIsIG1fY2FsbEZyYW1lLAogICAgICAgICAgICAgd2Vha1N0cnVjdHVy
ZShzdHJ1Y3R1cmUpLCBmcm96ZW5Qb2ludGVyKG1fbm9kZS0+Y2VsbE9wZXJhbmQoKSkpKTsKICAg
ICB9CiAKQEAgLTY2ODAsNyArNjY4Niw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
ICAgICBtX291dC5hYm92ZU9yRXF1YWwocHVibGljTGVuZ3RoLCBtX291dC5jb25zdEludDMyKE1J
Tl9BUlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpKSwKICAgICAgICAgICAgIHdlYWtT
dHJ1Y3R1cmUobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3Jh
Z2UpKSksCiAgICAgICAgICAgICB3ZWFrU3RydWN0dXJlKHN0cnVjdHVyZSkpOwotICAgICAgICBz
ZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5
V2l0aFNpemUpLCBtX2NhbGxGcmFtZSwgc3RydWN0dXJlVmFsdWUsIHB1YmxpY0xlbmd0aCwgbV9v
dXQuaW50UHRyWmVybykpOworICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgb3BlcmF0
aW9uTmV3QXJyYXlXaXRoU2l6ZSwgbV9jYWxsRnJhbWUsIHN0cnVjdHVyZVZhbHVlLCBwdWJsaWNM
ZW5ndGgsIG1fb3V0LmludFB0clplcm8pKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVOZXdU
eXBlZEFycmF5KCkKQEAgLTY3NzUsNyArNjc4MSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgICAgICBMVmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkp
OwogCiAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAgICAgICAg
IHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0
aE9uZUFyZ3VtZW50Rm9yVHlwZSh0eXBlZEFycmF5VHlwZSkpLAorICAgICAgICAgICAgICAgIHBv
aW50ZXJUeXBlKCksIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoT25lQXJndW1lbnRGb3JUeXBl
KHR5cGVkQXJyYXlUeXBlKSwKICAgICAgICAgICAgICAgICBtX2NhbGxGcmFtZSwgd2Vha1BvaW50
ZXIoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGVkQXJy
YXlUeXBlKSksIGFyZ3VtZW50KTsKIAogICAgICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwpA
QCAtNjgxNSw3ICs2ODIxLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgTFZhbHVl
IHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKIAogICAgICAgICBpZiAoIShh
YnN0cmFjdFZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIFNwZWNCeXRlY29kZU51bWJl
cikpCi0gICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvblRvTnVtYmVyKSwgbV9jYWxsRnJhbWUsIHZhbHVlKSk7CisgICAgICAgICAgICBz
ZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uVG9OdW1iZXIsIG1fY2FsbEZyYW1lLCB2
YWx1ZSkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bWJl
ciA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRp
b24gPSBtX291dC5uZXdCbG9jaygpOwpAQCAtNjgyOCw3ICs2ODM0LDcgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgc2V2ZXJhbCBhdHRlbXB0cyB0byByZW1v
dmUgVG9OdW1iZXIuIEJ1dCBUb051bWJlciBzdGlsbCBleGlzdHMuCiAgICAgICAgICAgICAvLyBJ
dCBtZWFucyB0aGF0IGNvbnZlcnRpbmcgbm9uLW51bWJlcnMgdG8gbnVtYmVycyBieSB0aGlzIFRv
TnVtYmVyIGlzIG5vdCByYXJlLgogICAgICAgICAgICAgLy8gSW5zdGVhZCBvZiB0aGUgbGF6eSBz
bG93IHBhdGggZ2VuZXJhdG9yLCB3ZSBjYWxsIHRoZSBvcGVyYXRpb24gaGVyZS4KLSAgICAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0
LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uVG9OdW1iZXIpLCBtX2NhbGxGcmFtZSwgdmFsdWUp
KTsKKyAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Io
dm1DYWxsKEludDY0LCBvcGVyYXRpb25Ub051bWJlciwgbV9jYWxsRnJhbWUsIHZhbHVlKSk7CiAg
ICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgICAgIC8vIGNv
bnRpbnVhdGlvbiBjYXNlLgpAQCAtNjkwOSwxNiArNjkxNSwxNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzU3RyaW5nUHJlZGljYXRlLCB1bnN1cmUo
Y29udGludWF0aW9uKSwgdW5zdXJlKG5vdFN0cmluZykpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhub3RTdHJpbmcsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgICAg
ICBMVmFsdWUgb3BlcmF0aW9uOworICAgICAgICAgICAgTFZhbHVlIHJlc3VsdDsKICAgICAgICAg
ICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKSB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKG1fbm9kZS0+b3AoKSAhPSBTdHJpbmdWYWx1ZU9mKTsKLSAgICAgICAg
ICAgICAgICBvcGVyYXRpb24gPSBtX291dC5vcGVyYXRpb24obV9ub2RlLT5vcCgpID09IFRvU3Ry
aW5nID8gb3BlcmF0aW9uVG9TdHJpbmdPbkNlbGwgOiBvcGVyYXRpb25DYWxsU3RyaW5nQ29uc3Ry
dWN0b3JPbkNlbGwpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9u
b2RlLT5vcCgpID09IFRvU3RyaW5nID8gb3BlcmF0aW9uVG9TdHJpbmdPbkNlbGwgOiBvcGVyYXRp
b25DYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwsIG1fY2FsbEZyYW1lLCB2YWx1ZSk7CiAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG9wZXJhdGlvbiA9IG1fb3V0Lm9wZXJh
dGlvbihtX25vZGUtPm9wKCkgPT0gVG9TdHJpbmcKKyAgICAgICAgICAgICAgICBhdXRvKiBvcGVy
YXRpb24gPSBtX25vZGUtPm9wKCkgPT0gVG9TdHJpbmcKICAgICAgICAgICAgICAgICAgICAgPyBv
cGVyYXRpb25Ub1N0cmluZyA6IG1fbm9kZS0+b3AoKSA9PSBTdHJpbmdWYWx1ZU9mCi0gICAgICAg
ICAgICAgICAgICAgID8gb3BlcmF0aW9uU3RyaW5nVmFsdWVPZiA6IG9wZXJhdGlvbkNhbGxTdHJp
bmdDb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICAgICAgICAgID8gb3BlcmF0aW9uU3RyaW5nVmFs
dWVPZiA6IG9wZXJhdGlvbkNhbGxTdHJpbmdDb25zdHJ1Y3RvcjsKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlvbiwgbV9jYWxsRnJhbWUsIHZhbHVlKTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGNvbnZlcnRlZFJlc3VsdCA9
IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG9wZXJhdGlvbiwgbV9jYWxsRnJhbWUsIHZhbHVl
KSk7CisgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBjb252ZXJ0ZWRSZXN1bHQgPSBtX291dC5h
bmNob3IocmVzdWx0KTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0
TmV4dCk7CkBAIC02OTI3LDE1ICs2OTM0LDE1IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgIH0KIAogICAgICAgICBjYXNlIEludDMyVXNlOgotICAgICAgICAgICAgc2V0SlNWYWx1ZSh2
bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25JbnQzMlRvU3RyaW5nV2l0aFZh
bGlkUmFkaXgpLCBtX2NhbGxGcmFtZSwgbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0
LmNvbnN0SW50MzIoMTApKSk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwg
b3BlcmF0aW9uSW50MzJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4LCBtX2NhbGxGcmFtZSwgbG93SW50
MzIobV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmNvbnN0SW50MzIoMTApKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKLSAgICAgICAgICAgIHNldEpT
VmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uSW50NTJUb1N0cmlu
Z1dpdGhWYWxpZFJhZGl4KSwgbV9jYWxsRnJhbWUsIGxvd1N0cmljdEludDUyKG1fbm9kZS0+Y2hp
bGQxKCkpLCBtX291dC5jb25zdEludDMyKDEwKSkpOworICAgICAgICAgICAgc2V0SlNWYWx1ZSh2
bUNhbGwoSW50NjQsIG9wZXJhdGlvbkludDUyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCwgbV9jYWxs
RnJhbWUsIGxvd1N0cmljdEludDUyKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX291dC5jb25zdEludDMy
KDEwKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNl
OgotICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25Eb3VibGVUb1N0cmluZ1dpdGhWYWxpZFJhZGl4KSwgbV9jYWxsRnJhbWUsIGxvd0Rv
dWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuY29uc3RJbnQzMigxMCkpKTsKKyAgICAgICAg
ICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRpb25Eb3VibGVUb1N0cmluZ1dpdGhW
YWxpZFJhZGl4LCBtX2NhbGxGcmFtZSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX291
dC5jb25zdEludDMyKDEwKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCiAg
ICAgICAgIGRlZmF1bHQ6CkBAIC02OTY2LDcgKzY5NzMsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMg
ewogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNPYmplY3RDYXNlLCBjb250aW51
YXRpb24pOwogICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3Iodm1DYWxsKAotICAg
ICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub1ByaW1pdGl2ZSksIG1f
Y2FsbEZyYW1lLCB2YWx1ZSkpKTsKKyAgICAgICAgICAgIEludDY0LCBvcGVyYXRpb25Ub1ByaW1p
dGl2ZSwgbV9jYWxsRnJhbWUsIHZhbHVlKSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxh
c3ROZXh0KTsKQEAgLTcxNjIsNyArNzE2OSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgICAgICAKICAgICAgICAgVmVjdG9yPFZhbHVlRnJvbUJsb2NrLCA0PiByZXN1bHRzOwogICAg
ICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3Iodm1DYWxsKAotICAgICAgICAgICAgSW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TaW5nbGVDaGFyYWN0ZXJTdHJpbmcpLAorICAg
ICAgICAgICAgSW50NjQsIG9wZXJhdGlvblNpbmdsZUNoYXJhY3RlclN0cmluZywKICAgICAgICAg
ICAgIG1fY2FsbEZyYW1lLCBjaGFyMTZCaXRWYWx1ZSkpKTsKICAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOwogICAgICAgICAgICAgCkBAIC03MjA3LDcgKzcyMTQsNyBAQCBjbGFzcyBM
b3dlckRGR1RvQjMgewogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHZtQ2FsbCgKLSAgICAgICAgICAgICAgICBJ
bnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsU3RyaW5nSW50KSwgbV9jYWxs
RnJhbWUsIGJhc2UsIGluZGV4KSkpOworICAgICAgICAgICAgICAgIEludDY0LCBvcGVyYXRpb25H
ZXRCeVZhbFN0cmluZ0ludCwgbV9jYWxsRnJhbWUsIGJhc2UsIGluZGV4KSkpOwogICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpAQCAtNzMy
Niw3ICs3MzMzLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgCiAgICAgICAgIGlm
IChjaGlsZEVkZ2UudXNlS2luZCgpID09IFVudHlwZWRVc2UpIHsKICAgICAgICAgICAgIExWYWx1
ZSByZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25TdHJpbmdGcm9tQ2hhckNvZGVVbnR5cGVkKSwgbV9jYWxsRnJhbWUsCisgICAg
ICAgICAgICAgICAgSW50NjQsIG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZVVudHlwZWQsIG1f
Y2FsbEZyYW1lLAogICAgICAgICAgICAgICAgIGxvd0pTVmFsdWUoY2hpbGRFZGdlKSk7CiAgICAg
ICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC03MzU1
LDcgKzczNjIsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBtX291dC5hcHBlbmRU
byhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKIAogICAgICAgICBMVmFsdWUgc2xvd1Jlc3VsdFZh
bHVlID0gdm1DYWxsKAotICAgICAgICAgICAgcG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvblN0cmluZ0Zyb21DaGFyQ29kZSksIG1fY2FsbEZyYW1lLCB2YWx1ZSk7CisgICAg
ICAgICAgICBwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25TdHJpbmdGcm9tQ2hhckNvZGUsIG1fY2Fs
bEZyYW1lLCB2YWx1ZSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291
dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogCkBAIC03ODc5LDcgKzc4ODYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhub3RUcml2aWFsbHlF
cXVhbENhc2UsIGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNs
b3dSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQubm90TnVsbCh2bUNhbGwoCi0gICAgICAgICAg
ICAgICAgcG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJp
Y3RFcSksIG1fY2FsbEZyYW1lLCBsZWZ0LCByaWdodCkpKTsKKyAgICAgICAgICAgICAgICBwb2lu
dGVyVHlwZSgpLCBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIG1fY2FsbEZyYW1lLCBsZWZ0LCBy
aWdodCkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC04MTExLDcg
KzgxMTgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICB9CiAKICAgICAgICAgQVNT
RVJUKG1fbm9kZS0+aXNCaW5hcnlVc2VLaW5kKFVudHlwZWRVc2UpKTsKLSAgICAgICAgc2V0Qm9v
bGVhbih2bUNhbGwoSW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TYW1lVmFsdWUpLCBt
X2NhbGxGcmFtZSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSwgbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMigpKSkpOworICAgICAgICBzZXRCb29sZWFuKHZtQ2FsbChJbnQzMiwgb3BlcmF0
aW9uU2FtZVZhbHVlLCBtX2NhbGxGcmFtZSwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSwg
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNv
bXBpbGVMb2dpY2FsTm90KCkKQEAgLTkyMjMsNyArOTIzMCw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgIExWYWx1ZSBqc0FyZ3VtZW50cyA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgbGVuZ3RoID0gdm1DYWxsKAotICAgICAg
ICAgICAgSW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TaXplT2ZWYXJhcmdzKSwgbV9j
YWxsRnJhbWUsIGpzQXJndW1lbnRzLAorICAgICAgICAgICAgSW50MzIsIG9wZXJhdGlvblNpemVP
ZlZhcmFyZ3MsIG1fY2FsbEZyYW1lLCBqc0FyZ3VtZW50cywKICAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50MzIoZGF0YS0+b2Zmc2V0KSk7CiAgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogVGhl
cmUgaXMgYSBjaGFuY2UgdGhhdCB3ZSB3aWxsIGNhbGwgYW4gZWZmZWN0ZnVsIGxlbmd0aCBwcm9w
ZXJ0eSB0d2ljZS4gVGhpcyBpcyBzYWZlCkBAIC05MjUyLDcgKzkyNTksNyBAQCBjbGFzcyBMb3dl
ckRGR1RvQjMgewogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoMykpOwogICAgICAgICAK
ICAgICAgICAgdm1DYWxsKAotICAgICAgICAgICAgVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkxvYWRWYXJhcmdzKSwgbV9jYWxsRnJhbWUsCisgICAgICAgICAgICBWb2lkLCBvcGVyYXRp
b25Mb2FkVmFyYXJncywgbV9jYWxsRnJhbWUsCiAgICAgICAgICAgICBtX291dC5jYXN0VG9JbnQz
MihtYWNoaW5lU3RhcnQpLCBqc0FyZ3VtZW50cywgbV9vdXQuY29uc3RJbnQzMihkYXRhLT5vZmZz
ZXQpLAogICAgICAgICAgICAgbGVuZ3RoLCBtX291dC5jb25zdEludDMyKGRhdGEtPm1hbmRhdG9y
eU1pbmltdW0pKTsKICAgICB9CkBAIC05NjUwLDcgKzk2NTcsNyBAQCBjbGFzcyBMb3dlckRGR1Rv
QjMgewogCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRv
KG5lZWRSZXNvbHV0aW9uLCByZXNvbHZlZCk7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBz
bG93VmFsdWUgPSBtX291dC5hbmNob3IoCi0gICAgICAgICAgICAgICAgdm1DYWxsKHBvaW50ZXJU
eXBlKCksIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25SZXNvbHZlUm9wZSksIG1fY2FsbEZyYW1l
LCBzdHJpbmdWYWx1ZSkpOworICAgICAgICAgICAgICAgIHZtQ2FsbChwb2ludGVyVHlwZSgpLCBv
cGVyYXRpb25SZXNvbHZlUm9wZSwgbV9jYWxsRnJhbWUsIHN0cmluZ1ZhbHVlKSk7CiAgICAgICAg
ICAgICBtX291dC5qdW1wKHJlc29sdmVkKTsKIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
cmVzb2x2ZWQsIGxlbmd0aElzMSk7CkBAIC05ODM4LDcgKzk4NDUsNyBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogICAgIHZvaWQgY29tcGlsZVRocm93KCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBl
cnJvciA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHZtQ2FsbChWb2lk
LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uVGhyb3dERkcpLCBtX2NhbGxGcmFtZSwgZXJyb3Ip
OyAKKyAgICAgICAgdm1DYWxsKFZvaWQsIG9wZXJhdGlvblRocm93REZHLCBtX2NhbGxGcmFtZSwg
ZXJyb3IpOyAKICAgICAgICAgLy8gdm1DYWxsKCkgZG9lcyBhbiBleGNlcHRpb24gY2hlY2sgc28g
d2Ugc2hvdWxkIG5ldmVyIHJlYWNoIHRoaXMuCiAgICAgICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7
CiAgICAgfQpAQCAtOTg0Nyw3ICs5ODU0LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICB7
CiAgICAgICAgIExWYWx1ZSBlcnJvck1lc3NhZ2UgPSBsb3dTdHJpbmcobV9ub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgIExWYWx1ZSBlcnJvclR5cGUgPSBtX291dC5jb25zdEludDMyKG1fbm9kZS0+
ZXJyb3JUeXBlKCkpOwotICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvblRocm93U3RhdGljRXJyb3IpLCBtX2NhbGxGcmFtZSwgZXJyb3JNZXNzYWdlLCBlcnJvclR5
cGUpOworICAgICAgICB2bUNhbGwoVm9pZCwgb3BlcmF0aW9uVGhyb3dTdGF0aWNFcnJvciwgbV9j
YWxsRnJhbWUsIGVycm9yTWVzc2FnZSwgZXJyb3JUeXBlKTsKICAgICAgICAgLy8gdm1DYWxsKCkg
ZG9lcyBhbiBleGNlcHRpb24gY2hlY2sgc28gd2Ugc2hvdWxkIG5ldmVyIHJlYWNoIHRoaXMuCiAg
ICAgICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7CiAgICAgfQpAQCAtMTAwODAsNyArMTAwODcsNyBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNl
LCBjb250aW51YXRpb24pOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9v
dXQuYW5jaG9yKAotICAgICAgICAgICAgdm1DYWxsKEludDMyLCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uTWFwSGFzaCksIG1fY2FsbEZyYW1lLCBzdHJpbmcpKTsKKyAgICAgICAgICAgIHZtQ2Fs
bChJbnQzMiwgb3BlcmF0aW9uTWFwSGFzaCwgbV9jYWxsRnJhbWUsIHN0cmluZykpOwogICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0xMDE2Nyw3ICsxMDE3NCw3IEBAIGNsYXNzIExvd2Vy
REZHVG9CMyB7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlv
bik7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoCi0g
ICAgICAgICAgICB2bUNhbGwoSW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25NYXBIYXNo
KSwgbV9jYWxsRnJhbWUsIHZhbHVlKSk7CisgICAgICAgICAgICB2bUNhbGwoSW50MzIsIG9wZXJh
dGlvbk1hcEhhc2gsIG1fY2FsbEZyYW1lLCB2YWx1ZSkpOwogICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0
TmV4dCk7CkBAIC0xMDM0NCw3ICsxMDM1MSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIG5vdFByZXNlbnRJblRhYmxlKTsKICAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgc2xvd1BhdGhSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKHBv
aW50ZXJUeXBlKCksCi0gICAgICAgICAgICBtX291dC5vcGVyYXRpb24obV9ub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gTWFwT2JqZWN0VXNlID8gb3BlcmF0aW9uSlNNYXBGaW5kQnVja2V0IDog
b3BlcmF0aW9uSlNTZXRGaW5kQnVja2V0KSwgbV9jYWxsRnJhbWUsIG1hcCwga2V5LCBoYXNoKSk7
CisgICAgICAgICAgICBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBNYXBPYmplY3RVc2Ug
PyBvcGVyYXRpb25KU01hcEZpbmRCdWNrZXQgOiBvcGVyYXRpb25KU1NldEZpbmRCdWNrZXQsIG1f
Y2FsbEZyYW1lLCBtYXAsIGtleSwgaGFzaCkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90UHJlc2VudEluVGFibGUsIGNvbnRp
bnVhdGlvbik7CkBAIC0xMDQ0Myw3ICsxMDQ1MCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgICAgIExWYWx1ZSBrZXkgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAg
ICBMVmFsdWUgaGFzaCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQzKCkpOwogCi0gICAgICAgIHNl
dEpTVmFsdWUodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25T
ZXRBZGQpLCBtX2NhbGxGcmFtZSwgc2V0LCBrZXksIGhhc2gpKTsKKyAgICAgICAgc2V0SlNWYWx1
ZSh2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uU2V0QWRkLCBtX2NhbGxGcmFtZSwgc2V0
LCBrZXksIGhhc2gpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVNYXBTZXQoKQpAQCAtMTA0
NTMsNyArMTA0NjAsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBMVmFsdWUgdmFs
dWUgPSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAyKSk7CiAgICAgICAg
IExWYWx1ZSBoYXNoID0gbG93SW50MzIobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDMpKTsK
IAotICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uTWFwU2V0KSwgbV9jYWxsRnJhbWUsIG1hcCwga2V5LCB2YWx1ZSwgaGFzaCkp
OworICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25NYXBT
ZXQsIG1fY2FsbEZyYW1lLCBtYXAsIGtleSwgdmFsdWUsIGhhc2gpKTsKICAgICB9CiAKICAgICB2
b2lkIGNvbXBpbGVXZWFrTWFwR2V0KCkKQEAgLTEwNTIwLDcgKzEwNTI3LDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgTFZhbHVlIGtleSA9IGxvd09iamVjdChtX25vZGUtPmNoaWxk
MigpKTsKICAgICAgICAgTFZhbHVlIGhhc2ggPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMygpKTsK
IAotICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbldlYWtTZXRB
ZGQpLCBtX2NhbGxGcmFtZSwgc2V0LCBrZXksIGhhc2gpOworICAgICAgICB2bUNhbGwoVm9pZCwg
b3BlcmF0aW9uV2Vha1NldEFkZCwgbV9jYWxsRnJhbWUsIHNldCwga2V5LCBoYXNoKTsKICAgICB9
CiAKICAgICB2b2lkIGNvbXBpbGVXZWFrTWFwU2V0KCkKQEAgLTEwNTMwLDcgKzEwNTM3LDcgQEAg
Y2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZSht
X2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikpOwogICAgICAgICBMVmFsdWUgaGFzaCA9IGxv
d0ludDMyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKSk7CiAKLSAgICAgICAgdm1DYWxs
KFZvaWQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25XZWFrTWFwU2V0KSwgbV9jYWxsRnJhbWUs
IG1hcCwga2V5LCB2YWx1ZSwgaGFzaCk7CisgICAgICAgIHZtQ2FsbChWb2lkLCBvcGVyYXRpb25X
ZWFrTWFwU2V0LCBtX2NhbGxGcmFtZSwgbWFwLCBrZXksIHZhbHVlLCBoYXNoKTsKICAgICB9CiAK
ICAgICB2b2lkIGNvbXBpbGVJc09iamVjdE9yTnVsbCgpCkBAIC0xMDY3Niw3ICsxMDY4Myw3IEBA
IGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgCiAgICAgdm9pZCBjb21waWxlSW5CeVZhbCgpCiAg
ICAgewotICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbkluQnlWYWwpLCBtX2NhbGxGcmFtZSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwg
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKSkpOworICAgICAgICBzZXRKU1ZhbHVlKHZtQ2Fs
bChJbnQ2NCwgb3BlcmF0aW9uSW5CeVZhbCwgbV9jYWxsRnJhbWUsIGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSksIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSkpKTsKICAgICB9CiAKICAgICB2
b2lkIGNvbXBpbGVJbkJ5SWQoKQpAQCAtMTA4MzUsNyArMTA4NDIsNyBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24p
OwogICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0OwotICAgICAgICBzbG93UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQzMiwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkhh
c093blByb3BlcnR5KSwgbV9jYWxsRnJhbWUsIG9iamVjdCwga2V5QXNWYWx1ZSkpOworICAgICAg
ICBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQzMiwgb3BlcmF0aW9uSGFzT3du
UHJvcGVydHksIG1fY2FsbEZyYW1lLCBvYmplY3QsIGtleUFzVmFsdWUpKTsKICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVh
dGlvbiwgbGFzdE5leHQpOwpAQCAtMTA4NDksMTQgKzEwODU2LDE0IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMigpKSB7CiAgICAgICAgICAgICBMVmFs
dWUgcmFkaXggPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIGlmICht
X25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKQotICAgICAgICAgICAgICAg
IHJlc3VsdCA9IHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblBhcnNlSW50
R2VuZXJpYyksIG1fY2FsbEZyYW1lLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLCByYWRp
eCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25QYXJz
ZUludEdlbmVyaWMsIG1fY2FsbEZyYW1lLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLCBy
YWRpeCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gdm1DYWxs
KEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUGFyc2VJbnRTdHJpbmcpLCBtX2NhbGxG
cmFtZSwgbG93U3RyaW5nKG1fbm9kZS0+Y2hpbGQxKCkpLCByYWRpeCk7CisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBvcGVyYXRpb25QYXJzZUludFN0cmluZywgbV9jYWxs
RnJhbWUsIGxvd1N0cmluZyhtX25vZGUtPmNoaWxkMSgpKSwgcmFkaXgpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlw
ZWRVc2UpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uUGFyc2VJbnROb1JhZGl4R2VuZXJpYyksIG1fY2FsbEZyYW1lLCBsb3dK
U1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSB2bUNh
bGwoSW50NjQsIG9wZXJhdGlvblBhcnNlSW50Tm9SYWRpeEdlbmVyaWMsIG1fY2FsbEZyYW1lLCBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Q
YXJzZUludFN0cmluZ05vUmFkaXgpLCBtX2NhbGxGcmFtZSwgbG93U3RyaW5nKG1fbm9kZS0+Y2hp
bGQxKCkpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG9wZXJhdGlv
blBhcnNlSW50U3RyaW5nTm9SYWRpeCwgbV9jYWxsRnJhbWUsIGxvd1N0cmluZyhtX25vZGUtPmNo
aWxkMSgpKSk7CiAgICAgICAgIH0KICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0K
QEAgLTExMDEwLDcgKzExMDE3LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgTFZh
bHVlIGNvbnN0cnVjdG9yID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgTFZh
bHVlIGhhc0luc3RhbmNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsKIAotICAgICAg
ICBzZXRCb29sZWFuKG1fb3V0LmxvZ2ljYWxOb3QobV9vdXQuZXF1YWwobV9vdXQuY29uc3RJbnQz
MigwKSwgdm1DYWxsKEludDMyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uSW5zdGFuY2VPZkN1
c3RvbSksIG1fY2FsbEZyYW1lLCB2YWx1ZSwgY29uc3RydWN0b3IsIGhhc0luc3RhbmNlKSkpKTsK
KyAgICAgICAgc2V0Qm9vbGVhbihtX291dC5sb2dpY2FsTm90KG1fb3V0LmVxdWFsKG1fb3V0LmNv
bnN0SW50MzIoMCksIHZtQ2FsbChJbnQzMiwgb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbSwgbV9j
YWxsRnJhbWUsIHZhbHVlLCBjb25zdHJ1Y3RvciwgaGFzSW5zdGFuY2UpKSkpOwogICAgIH0KICAg
ICAKICAgICB2b2lkIGNvbXBpbGVDb3VudEV4ZWN1dGlvbigpCkBAIC0xMTA3MSw3ICsxMTA3OCw3
IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNs
b3dDYXNlLCBjb250aW51YXRpb24pOwogICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jl
c3VsdCA9IG1fb3V0LmFuY2hvcigKLSAgICAgICAgICAgICAgICBtX291dC5ub3RaZXJvNjQodm1D
YWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5QnlJ
bnQpLCBtX2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgsIGludGVybmFsTWV0aG9kVHlwZSkpKTsKKyAg
ICAgICAgICAgICAgICBtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBvcGVyYXRpb25IYXNJ
bmRleGVkUHJvcGVydHlCeUludCwgbV9jYWxsRnJhbWUsIGJhc2UsIGluZGV4LCBpbnRlcm5hbE1l
dGhvZFR5cGUpKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAg
ICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtMTEx
MDUsNyArMTExMTIsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoCi0gICAgICAgICAg
ICAgICAgbV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkhhc0luZGV4ZWRQcm9wZXJ0eUJ5SW50KSwgbV9jYWxsRnJhbWUsIGJhc2UsIGluZGV4LCBp
bnRlcm5hbE1ldGhvZFR5cGUpKSk7CisgICAgICAgICAgICAgICAgbV9vdXQubm90WmVybzY0KHZt
Q2FsbChJbnQ2NCwgb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5QnlJbnQsIG1fY2FsbEZyYW1l
LCBiYXNlLCBpbmRleCwgaW50ZXJuYWxNZXRob2RUeXBlKSkpOwogICAgICAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAgLTExMTM4LDcgKzExMTQ1LDcgQEAgY2xh
c3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2Us
IGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0g
bV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgICAgIG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlCeUludCksIG1f
Y2FsbEZyYW1lLCBiYXNlLCBpbmRleCwgaW50ZXJuYWxNZXRob2RUeXBlKSkpOworICAgICAgICAg
ICAgICAgIG1fb3V0Lm5vdFplcm82NCh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkhhc0luZGV4ZWRQ
cm9wZXJ0eUJ5SW50LCBtX2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgsIGludGVybmFsTWV0aG9kVHlw
ZSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0xMTE0OCw3ICsx
MTE1NSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgZGVmYXVsdDogewogICAg
ICAgICAgICAgTFZhbHVlIGludGVybmFsTWV0aG9kVHlwZSA9IG1fb3V0LmNvbnN0SW50MzIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4obV9ub2RlLT5pbnRlcm5hbE1ldGhvZFR5cGUoKSkpOwotICAgICAg
ICAgICAgc2V0Qm9vbGVhbihtX291dC5ub3RaZXJvNjQodm1DYWxsKEludDY0LCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5QnlJbnQpLCBtX2NhbGxGcmFtZSwgYmFz
ZSwgaW5kZXgsIGludGVybmFsTWV0aG9kVHlwZSkpKTsKKyAgICAgICAgICAgIHNldEJvb2xlYW4o
bV9vdXQubm90WmVybzY0KHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5
QnlJbnQsIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCwgaW50ZXJuYWxNZXRob2RUeXBlKSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTExNTgsNyArMTEx
NjUsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIHsKICAgICAgICAgTFZhbHVlIGJhc2Ug
PSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBMVmFsdWUgcHJvcGVydHkg
PSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQyKCkpOwotICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJ
bnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0eSksIG1fY2Fs
bEZyYW1lLCBiYXNlLCBwcm9wZXJ0eSkpOworICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2
NCwgb3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5LCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVy
dHkpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVIYXNTdHJ1Y3R1cmVQcm9wZXJ0eSgpCkBA
IC0xMTE4NCw3ICsxMTE5MSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIHdyb25nU3RydWN0dXJlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKAogICAgICAgICAg
ICAgbV9vdXQuZXF1YWwoCiAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKHRydWUpKSksIAotICAgICAgICAgICAgICAgIHZtQ2FsbChJbnQ2
NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0eSksIG1fY2FsbEZy
YW1lLCBiYXNlLCBwcm9wZXJ0eSkpKTsKKyAgICAgICAgICAgICAgICB2bUNhbGwoSW50NjQsIG9w
ZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0eSwgbV9jYWxsRnJhbWUsIGJhc2UsIHByb3BlcnR5KSkp
OwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0xMTIzMCw3ICsxMTIzNyw3IEBAIGNs
YXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNv
bnRpbnVhdGlvbik7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dDYXNlUmVzdWx0ID0gbV9v
dXQuYW5jaG9yKAotICAgICAgICAgICAgdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uR2V0QnlWYWwpLCBtX2NhbGxGcmFtZSwgYmFzZSwgcHJvcGVydHkpKTsKKyAgICAgICAg
ICAgIHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9uR2V0QnlWYWwsIG1fY2FsbEZyYW1lLCBiYXNlLCBw
cm9wZXJ0eSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0xMTI0Niw5ICsxMTI1
Myw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgdm9pZCBjb21waWxlR2V0UHJvcGVydHlF
bnVtZXJhdG9yKCkKICAgICB7CiAgICAgICAgIGlmIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBDZWxsVXNlKQotICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3JDZWxsKSwgbV9jYWxsRnJh
bWUsIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUo
dm1DYWxsKEludDY0LCBvcGVyYXRpb25HZXRQcm9wZXJ0eUVudW1lcmF0b3JDZWxsLCBtX2NhbGxG
cmFtZSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSkpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdl
dFByb3BlcnR5RW51bWVyYXRvciksIG1fY2FsbEZyYW1lLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQxKCkpKSk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgb3BlcmF0aW9u
R2V0UHJvcGVydHlFbnVtZXJhdG9yLCBtX2NhbGxGcmFtZSwgbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMSgpKSkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUdldEVudW1lcmF0b3JTdHJ1Y3R1
cmVQbmFtZSgpCkBAIC0xMTMwNiw3ICsxMTMxMyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAg
ICAgdm9pZCBjb21waWxlVG9JbmRleFN0cmluZygpCiAgICAgewogICAgICAgICBMVmFsdWUgaW5k
ZXggPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNh
bGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Ub0luZGV4U3RyaW5nKSwgbV9jYWxs
RnJhbWUsIGluZGV4KSk7CisgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBvcGVyYXRp
b25Ub0luZGV4U3RyaW5nLCBtX2NhbGxGcmFtZSwgaW5kZXgpKTsKICAgICB9CiAgICAgCiAgICAg
dm9pZCBjb21waWxlQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGUoKQpAQCAtMTE3MjMsNyArMTE3MzAs
NyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQz
KCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewogICAgICAgICAgICAgICAgIExWYWx1ZSBhcmd1
bWVudCA9IGxvd1N0cmluZyhtX25vZGUtPmNoaWxkMygpKTsKICAgICAgICAgICAgICAgICBMVmFs
dWUgcmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3Bl
cmF0aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWNTdHJpbmcpLCBtX2NhbGxGcmFtZSwgZ2xvYmFsT2Jq
ZWN0LAorICAgICAgICAgICAgICAgICAgICBJbnQ2NCwgb3BlcmF0aW9uUmVnRXhwRXhlY1N0cmlu
ZywgbV9jYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgYmFzZSwg
YXJndW1lbnQpOwogICAgICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CkBAIC0xMTczMSw3ICsxMTczOCw3IEBAIGNsYXNzIExvd2VyREZHVG9C
MyB7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxs
KAotICAgICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhw
RXhlYyksIG1fY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGJhc2UsCisgICAgICAgICAgICAgICAg
SW50NjQsIG9wZXJhdGlvblJlZ0V4cEV4ZWMsIG1fY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGJh
c2UsCiAgICAgICAgICAgICAgICAgYXJndW1lbnQpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShy
ZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE3NDAsNyArMTE3NDcsNyBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDIoKSk7CiAgICAgICAgIExWYWx1ZSBhcmd1bWVudCA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDMoKSk7CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAg
ICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlZ0V4cEV4ZWNHZW5lcmljKSwgbV9j
YWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYmFzZSwKKyAgICAgICAgICAgIEludDY0LCBvcGVyYXRp
b25SZWdFeHBFeGVjR2VuZXJpYywgbV9jYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYmFzZSwKICAg
ICAgICAgICAgIGFyZ3VtZW50KTsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0K
QEAgLTExNzUwLDcgKzExNzU3LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgTFZh
bHVlIGdsb2JhbE9iamVjdCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExW
YWx1ZSBhcmd1bWVudCA9IGxvd1N0cmluZyhtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uUmVnRXhwRXhlY05vbkdsb2JhbE9yU3RpY2t5KSwgbV9jYWxsRnJhbWUsIGdsb2Jh
bE9iamVjdCwgZnJvemVuUG9pbnRlcihtX25vZGUtPmNlbGxPcGVyYW5kKCkpLCBhcmd1bWVudCk7
CisgICAgICAgICAgICBJbnQ2NCwgb3BlcmF0aW9uUmVnRXhwRXhlY05vbkdsb2JhbE9yU3RpY2t5
LCBtX2NhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBmcm96ZW5Qb2ludGVyKG1fbm9kZS0+Y2VsbE9w
ZXJhbmQoKSksIGFyZ3VtZW50KTsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0K
IApAQCAtMTE3NTksNyArMTE3NjYsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBM
VmFsdWUgZ2xvYmFsT2JqZWN0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
TFZhbHVlIGFyZ3VtZW50ID0gbG93U3RyaW5nKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25SZWdFeHBNYXRjaEZhc3RHbG9iYWxTdHJpbmcpLCBtX2NhbGxGcmFtZSwgZ2xv
YmFsT2JqZWN0LCBmcm96ZW5Qb2ludGVyKG1fbm9kZS0+Y2VsbE9wZXJhbmQoKSksIGFyZ3VtZW50
KTsKKyAgICAgICAgICAgIEludDY0LCBvcGVyYXRpb25SZWdFeHBNYXRjaEZhc3RHbG9iYWxTdHJp
bmcsIG1fY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGZyb3plblBvaW50ZXIobV9ub2RlLT5jZWxs
T3BlcmFuZCgpKSwgYXJndW1lbnQpOwogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAg
fQogCkBAIC0xMTc3Myw3ICsxMTc4MCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAg
ICAgICBpZiAobV9ub2RlLT5jaGlsZDMoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKSB7CiAgICAg
ICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93U3RyaW5nKG1fbm9kZS0+Y2hpbGQzKCkp
OwogICAgICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAg
ICAgICAgIEludDMyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwVGVzdFN0cmluZyks
IG1fY2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsCisgICAgICAgICAgICAgICAgICAgIEludDMyLCBv
cGVyYXRpb25SZWdFeHBUZXN0U3RyaW5nLCBtX2NhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LAogICAg
ICAgICAgICAgICAgICAgICBiYXNlLCBhcmd1bWVudCk7CiAgICAgICAgICAgICAgICAgc2V0Qm9v
bGVhbihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTExNzgxLDcgKzExNzg4
LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICAgICAgTFZhbHVlIGFyZ3VtZW50
ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsKICAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgSW50MzIsIG1fb3V0Lm9wZXJhdGlvbihvcGVy
YXRpb25SZWdFeHBUZXN0KSwgbV9jYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgYmFzZSwKKyAgICAg
ICAgICAgICAgICBJbnQzMiwgb3BlcmF0aW9uUmVnRXhwVGVzdCwgbV9jYWxsRnJhbWUsIGdsb2Jh
bE9iamVjdCwgYmFzZSwKICAgICAgICAgICAgICAgICBhcmd1bWVudCk7CiAgICAgICAgICAgICBz
ZXRCb29sZWFuKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTc5MCw3ICsxMTc5
Nyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMygpKTsKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbCgK
LSAgICAgICAgICAgIEludDMyLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uUmVnRXhwVGVzdEdl
bmVyaWMpLCBtX2NhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0LCBiYXNlLAorICAgICAgICAgICAgSW50
MzIsIG9wZXJhdGlvblJlZ0V4cFRlc3RHZW5lcmljLCBtX2NhbGxGcmFtZSwgZ2xvYmFsT2JqZWN0
LCBiYXNlLAogICAgICAgICAgICAgYXJndW1lbnQpOwogICAgICAgICBzZXRCb29sZWFuKHJlc3Vs
dCk7CiAgICAgfQpAQCAtMTE4MDEsNyArMTE4MDgsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewog
ICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd1JlZ0V4cE9iamVjdChtX25vZGUtPmNoaWxkMigpKTsK
ICAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93U3RyaW5nKG1fbm9kZS0+Y2hpbGQzKCkpOwog
ICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAgICAgSW50NjQsIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25SZWdFeHBNYXRjaEZhc3RTdHJpbmcpLCBtX2NhbGxGcmFtZSwg
Z2xvYmFsT2JqZWN0LAorICAgICAgICAgICAgSW50NjQsIG9wZXJhdGlvblJlZ0V4cE1hdGNoRmFz
dFN0cmluZywgbV9jYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwKICAgICAgICAgICAgIGJhc2UsIGFy
Z3VtZW50KTsKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KQEAgLTExODQzLDcg
KzExODUwLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgIHZvaWQgY29tcGlsZVNldEZ1
bmN0aW9uTmFtZSgpCiAgICAgewotICAgICAgICB2bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvblNldEZ1bmN0aW9uTmFtZSksIG1fY2FsbEZyYW1lLAorICAgICAgICB2bUNhbGwo
Vm9pZCwgb3BlcmF0aW9uU2V0RnVuY3Rpb25OYW1lLCBtX2NhbGxGcmFtZSwKICAgICAgICAgICAg
IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSkp
OwogICAgIH0KICAgICAKQEAgLTExODU5LDcgKzExODY2LDcgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgICAgICAgICAgICAgTFZhbHVlIHJlZ0V4cCA9IGxvd1JlZ0V4cE9iamVjdCht
X25vZGUtPmNoaWxkMigpKTsKIAogICAgICAgICAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
dm1DYWxsKAotICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlclR5cGUoKSwgbV9vdXQub3Bl
cmF0aW9uKG9wZXJhdGlvblN0cmluZ1Byb3RvRnVuY1JlcGxhY2VSZWdFeHBFbXB0eVN0ciksCisg
ICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25TdHJpbmdQcm90
b0Z1bmNSZXBsYWNlUmVnRXhwRW1wdHlTdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2Nh
bGxGcmFtZSwgc3RyaW5nLCByZWdFeHApOwogCiAgICAgICAgICAgICAgICAgICAgIHNldEpTVmFs
dWUocmVzdWx0KTsKQEAgLTExODcyLDcgKzExODc5LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgICAgIExWYWx1ZSByZXBsYWNlID0gbG93U3RyaW5nKG1fbm9kZS0+Y2hpbGQzKCkp
OwogCiAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAotICAgICAgICAgICAgICAg
IHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNS
ZXBsYWNlUmVnRXhwU3RyaW5nKSwKKyAgICAgICAgICAgICAgICBwb2ludGVyVHlwZSgpLCBvcGVy
YXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlUmVnRXhwU3RyaW5nLAogICAgICAgICAgICAgICAg
IG1fY2FsbEZyYW1lLCBzdHJpbmcsIHJlZ0V4cCwgcmVwbGFjZSk7CiAKICAgICAgICAgICAgIHNl
dEpTVmFsdWUocmVzdWx0KTsKQEAgLTExODg2LDcgKzExODkzLDcgQEAgY2xhc3MgTG93ZXJERkdU
b0IzIHsKICAgICAgICAgICAgIHNlYXJjaCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7
CiAKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbCgKLSAgICAgICAgICAgIHBvaW50ZXJU
eXBlKCksIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25TdHJpbmdQcm90b0Z1bmNSZXBsYWNlR2Vu
ZXJpYyksIG1fY2FsbEZyYW1lLAorICAgICAgICAgICAgcG9pbnRlclR5cGUoKSwgb3BlcmF0aW9u
U3RyaW5nUHJvdG9GdW5jUmVwbGFjZUdlbmVyaWMsIG1fY2FsbEZyYW1lLAogICAgICAgICAgICAg
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSwgc2VhcmNoLAogICAgICAgICAgICAgbG93SlNW
YWx1ZShtX25vZGUtPmNoaWxkMygpKSk7CiAKQEAgLTEyMjMwLDcgKzEyMjM3LDcgQEAgY2xhc3Mg
TG93ZXJERkdUb0IzIHsKICAgICAgICAgaWYgKHByZXZpb3VzU3RydWN0dXJlLT5jb3VsZEhhdmVJ
bmRleGluZ0hlYWRlcigpKSB7CiAgICAgICAgICAgICByZXR1cm4gdm1DYWxsKAogICAgICAgICAg
ICAgICAgIHBvaW50ZXJUeXBlKCksCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbkFsbG9jYXRlQ29tcGxleFByb3BlcnR5U3RvcmFnZVdpdGhJbml0aWFsQ2FwYWNpdHkp
LAorICAgICAgICAgICAgICAgIG9wZXJhdGlvbkFsbG9jYXRlQ29tcGxleFByb3BlcnR5U3RvcmFn
ZVdpdGhJbml0aWFsQ2FwYWNpdHksCiAgICAgICAgICAgICAgICAgbV9jYWxsRnJhbWUsIG9iamVj
dCk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0xMjI1NCw3ICsxMjI2MSw3IEBAIGNsYXNzIExv
d2VyREZHVG9CMyB7CiAgICAgICAgIAogICAgICAgICBpZiAocHJldmlvdXMtPmNvdWxkSGF2ZUlu
ZGV4aW5nSGVhZGVyKCkpIHsKICAgICAgICAgICAgIExWYWx1ZSBuZXdBbGxvY1NpemUgPSBtX291
dC5jb25zdEludFB0cihuZXdTaXplKTsgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
cmV0dXJuIHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQWxs
b2NhdGVDb21wbGV4UHJvcGVydHlTdG9yYWdlKSwgbV9jYWxsRnJhbWUsIG9iamVjdCwgbmV3QWxs
b2NTaXplKTsKKyAgICAgICAgICAgIHJldHVybiB2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0
aW9uQWxsb2NhdGVDb21wbGV4UHJvcGVydHlTdG9yYWdlLCBtX2NhbGxGcmFtZSwgb2JqZWN0LCBu
ZXdBbGxvY1NpemUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2VXaXRoU2l6ZUltcGwobmV3U2l6ZSk7CkBAIC0xMjUw
NCw3ICsxMjUxMSw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGlmIChtX25vZGUt
PmlzQmluYXJ5VXNlS2luZChTdHJpbmdJZGVudFVzZSkpIHsKICAgICAgICAgICAgIExWYWx1ZSBs
ZWZ0ID0gbG93U3RyaW5nSWRlbnQobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dTdHJpbmdJZGVudChtX25vZGUtPmNoaWxkMigpKTsKLSAgICAgICAgICAg
IHNldEJvb2xlYW4obV9vdXQuY2FsbFdpdGhvdXRTaWRlRWZmZWN0cyhJbnQzMiwgc3RyaW5nSWRl
bnRGdW5jdGlvbiwgbGVmdCwgcmlnaHQpKTsKKyAgICAgICAgICAgIHNldEJvb2xlYW4obV9vdXQu
Y2FsbFdpdGhvdXRTaWRlRWZmZWN0cyhJbnQzMiwgbV9vdXQub3BlcmF0aW9uKHN0cmluZ0lkZW50
RnVuY3Rpb24pLCBsZWZ0LCByaWdodCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTEyNTE1LDcgKzEyNTIyLDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAg
ICAgIHNwZWN1bGF0ZVN0cmluZyhtX25vZGUtPmNoaWxkMigpLCByaWdodCk7CiAKICAgICAgICAg
ICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoCi0gICAgICAgICAgICAgICAgSW50MzIsIG1fb3V0
Lm9wZXJhdGlvbihzdHJpbmdGdW5jdGlvbiksCisgICAgICAgICAgICAgICAgSW50MzIsIHN0cmlu
Z0Z1bmN0aW9uLAogICAgICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBsZWZ0LCByaWdodCk7CiAg
ICAgICAgICAgICBzZXRCb29sZWFuKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0x
MjU4Nyw3ICsxMjU5NCw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAKICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oYmlnQ2hhcmFjdGVyLCBiaXRzQ29udGludWF0aW9uKTsKICAgICAgICAgcmVzdWx0
cy5hcHBlbmQobV9vdXQuYW5jaG9yKHZtQ2FsbCgKLSAgICAgICAgICAgIEludDY0LCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKSwKKyAgICAgICAgICAgIElu
dDY0LCBvcGVyYXRpb25TaW5nbGVDaGFyYWN0ZXJTdHJpbmcsCiAgICAgICAgICAgICBtX2NhbGxG
cmFtZSwgY2hhcjE2Qml0VmFsdWUpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKIApAQCAtMTI1OTksMTEgKzEyNjA2LDExIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhz
bG93Q2FzZSwgcm9wZVNsb3dDYXNlKTsKLSAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5j
aG9yKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uU3RyaW5n
U3Vic3RyKSwgbV9jYWxsRnJhbWUsIHN0cmluZywgZnJvbSwgc3BhbikpKTsKKyAgICAgICAgcmVz
dWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25T
dHJpbmdTdWJzdHIsIG1fY2FsbEZyYW1lLCBzdHJpbmcsIGZyb20sIHNwYW4pKSk7CiAgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhyb3Bl
U2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFu
Y2hvcih2bUNhbGwocG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblN0cmlu
Z1NsaWNlKSwgbV9jYWxsRnJhbWUsIHN0cmluZywgc3RhcnQsIGVuZCkpKTsKKyAgICAgICAgcmVz
dWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25T
dHJpbmdTbGljZSwgbV9jYWxsRnJhbWUsIHN0cmluZywgc3RhcnQsIGVuZCkpKTsKICAgICAgICAg
bV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRp
bnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtMTI2NTgsNyArMTI2NjUsNyBAQCBjbGFzcyBMb3dlckRG
R1RvQjMgewogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24p
OwogICAgICAgICBMVmFsdWUgc2xvd1BhdGhJbmRleCA9IG1fb3V0LnBoaShJbnQzMiwgc3RhcnRJ
bmRleEZvckNhbGwsIGluZGV4RnJvbUJsb2NrKTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwocG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0
aW9uKG9wZXJhdGlvblRvTG93ZXJDYXNlKSwgbV9jYWxsRnJhbWUsIHN0cmluZywgc2xvd1BhdGhJ
bmRleCkpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9y
KHZtQ2FsbChwb2ludGVyVHlwZSgpLCBvcGVyYXRpb25Ub0xvd2VyQ2FzZSwgbV9jYWxsRnJhbWUs
IHN0cmluZywgc2xvd1BhdGhJbmRleCkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBA
IC0xMjY3NiwxMyArMTI2ODMsMTMgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKIAogICAgICAgICBz
d2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgSW50MzJV
c2U6Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291dC5v
cGVyYXRpb24odmFsaWRSYWRpeElzR3VhcmFudGVlZCA/IG9wZXJhdGlvbkludDMyVG9TdHJpbmdX
aXRoVmFsaWRSYWRpeCA6IG9wZXJhdGlvbkludDMyVG9TdHJpbmcpLCBtX2NhbGxGcmFtZSwgbG93
SW50MzIobV9ub2RlLT5jaGlsZDEoKSksIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpKSk7Cisg
ICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCB2YWxpZFJhZGl4SXNH
dWFyYW50ZWVkID8gb3BlcmF0aW9uSW50MzJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4IDogb3BlcmF0
aW9uSW50MzJUb1N0cmluZywgbV9jYWxsRnJhbWUsIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkp
LCBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgSW50NTJSZXBVc2U6Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2lu
dGVyVHlwZSgpLCBtX291dC5vcGVyYXRpb24odmFsaWRSYWRpeElzR3VhcmFudGVlZCA/IG9wZXJh
dGlvbkludDUyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCA6IG9wZXJhdGlvbkludDUyVG9TdHJpbmcp
LCBtX2NhbGxGcmFtZSwgbG93U3RyaWN0SW50NTIobV9ub2RlLT5jaGlsZDEoKSksIGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQyKCkpKSk7CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2lu
dGVyVHlwZSgpLCB2YWxpZFJhZGl4SXNHdWFyYW50ZWVkID8gb3BlcmF0aW9uSW50NTJUb1N0cmlu
Z1dpdGhWYWxpZFJhZGl4IDogb3BlcmF0aW9uSW50NTJUb1N0cmluZywgbV9jYWxsRnJhbWUsIGxv
d1N0cmljdEludDUyKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigp
KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgotICAg
ICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwocG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9u
KHZhbGlkUmFkaXhJc0d1YXJhbnRlZWQgPyBvcGVyYXRpb25Eb3VibGVUb1N0cmluZ1dpdGhWYWxp
ZFJhZGl4IDogb3BlcmF0aW9uRG91YmxlVG9TdHJpbmcpLCBtX2NhbGxGcmFtZSwgbG93RG91Ymxl
KG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSkpOworICAgICAg
ICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwocG9pbnRlclR5cGUoKSwgdmFsaWRSYWRpeElzR3VhcmFu
dGVlZCA/IG9wZXJhdGlvbkRvdWJsZVRvU3RyaW5nV2l0aFZhbGlkUmFkaXggOiBvcGVyYXRpb25E
b3VibGVUb1N0cmluZywgbV9jYWxsRnJhbWUsIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwg
bG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAg
LTEyNjkzLDEzICsxMjcwMCwxMyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIHsKICAgICAg
ICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIElu
dDMyVXNlOgotICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwocG9pbnRlclR5cGUoKSwgbV9v
dXQub3BlcmF0aW9uKG9wZXJhdGlvbkludDMyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCksIG1fY2Fs
bEZyYW1lLCBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuY29uc3RJbnQzMihtX25v
ZGUtPnZhbGlkUmFkaXhDb25zdGFudCgpKSkpOworICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNh
bGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uSW50MzJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4LCBt
X2NhbGxGcmFtZSwgbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmNvbnN0SW50MzIo
bV9ub2RlLT52YWxpZFJhZGl4Q29uc3RhbnQoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEludDUyUmVwVXNlOgotICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwocG9p
bnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkludDUyVG9TdHJpbmdXaXRoVmFs
aWRSYWRpeCksIG1fY2FsbEZyYW1lLCBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKSwg
bV9vdXQuY29uc3RJbnQzMihtX25vZGUtPnZhbGlkUmFkaXhDb25zdGFudCgpKSkpOworICAgICAg
ICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwocG9pbnRlclR5cGUoKSwgb3BlcmF0aW9uSW50NTJUb1N0
cmluZ1dpdGhWYWxpZFJhZGl4LCBtX2NhbGxGcmFtZSwgbG93U3RyaWN0SW50NTIobV9ub2RlLT5j
aGlsZDEoKSksIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT52YWxpZFJhZGl4Q29uc3RhbnQoKSkp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKLSAgICAg
ICAgICAgIHNldEpTVmFsdWUodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25Eb3VibGVUb1N0cmluZ1dpdGhWYWxpZFJhZGl4KSwgbV9jYWxsRnJhbWUsIGxvd0Rv
dWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPnZhbGlkUmFk
aXhDb25zdGFudCgpKSkpOworICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwocG9pbnRlclR5
cGUoKSwgb3BlcmF0aW9uRG91YmxlVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCwgbV9jYWxsRnJhbWUs
IGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPnZh
bGlkUmFkaXhDb25zdGFudCgpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTI3MDks
MjcgKzEyNzE2LDI3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgdm9pZCBjb21waWxlUmVz
b2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbCgpCiAgICAgewogICAgICAgICBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRp
Zmllck51bWJlcigpXTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwocG9pbnRlclR5cGUoKSwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJ
bkV2YWwpLCBtX2NhbGxGcmFtZSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuY29u
c3RJbnRQdHIodWlkKSkpOworICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgp
LCBvcGVyYXRpb25SZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsLCBtX2NhbGxG
cmFtZSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuY29uc3RJbnRQdHIodWlkKSkp
OwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZVJlc29sdmVTY29wZSgpCiAgICAgewogICAgICAg
ICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+
aWRlbnRpZmllck51bWJlcigpXTsKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwocG9pbnRlclR5
cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblJlc29sdmVTY29wZSksCisgICAgICAgIHNl
dEpTVmFsdWUodm1DYWxsKHBvaW50ZXJUeXBlKCksIG9wZXJhdGlvblJlc29sdmVTY29wZSwKICAg
ICAgICAgICAgIG1fY2FsbEZyYW1lLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX291dC5j
b25zdEludFB0cih1aWQpKSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlR2V0RHluYW1pY1Zh
cigpCiAgICAgewogICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVu
dGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAgICAgICAgc2V0SlNWYWx1
ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXREeW5hbWljVmFyKSwK
KyAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG9wZXJhdGlvbkdldER5bmFtaWNWYXIs
CiAgICAgICAgICAgICBtX2NhbGxGcmFtZSwgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgbV9v
dXQuY29uc3RJbnRQdHIodWlkKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmdldFB1dEluZm8o
KSkpKTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVQdXREeW5hbWljVmFyKCkKICAgICB7CiAg
ICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9u
b2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOwotICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChWb2lk
LCBtX291dC5vcGVyYXRpb24obV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpID8gb3BlcmF0aW9uUHV0RHluYW1pY1ZhclN0cmljdCA6IG9wZXJhdGlvblB1dER5
bmFtaWNWYXJOb25TdHJpY3QpLAorICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChWb2lkLCBtX2dy
YXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25Q
dXREeW5hbWljVmFyU3RyaWN0IDogb3BlcmF0aW9uUHV0RHluYW1pY1Zhck5vblN0cmljdCwKICAg
ICAgICAgICAgIG1fY2FsbEZyYW1lLCBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBsb3dKU1Zh
bHVlKG1fbm9kZS0+Y2hpbGQyKCkpLCBtX291dC5jb25zdEludFB0cih1aWQpLCBtX291dC5jb25z
dEludDMyKG1fbm9kZS0+Z2V0UHV0SW5mbygpKSkpOwogICAgIH0KICAgICAKQEAgLTEyODYxLDEz
ICsxMjg2OCwxMyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBhdXRvIGZ1bmN0aW9u
ID0gQ0Z1bmN0aW9uUHRyKHNpZ25hdHVyZS0+ZnVuY3Rpb25XaXRob3V0VHlwZUNoZWNrKTsKICAg
ICAgICAgc3dpdGNoIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykgewogICAgICAgICBjYXNl
IDE6Ci0gICAgICAgICAgICByZXN1bHQgPSB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihy
ZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQPihmdW5jdGlvbi5nZXQoKSkpLCBtX2Nh
bGxGcmFtZSwgb3BlcmFuZHNbMF0pOworICAgICAgICAgICAgcmVzdWx0ID0gdm1DYWxsKEludDY0
LCByZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQPihmdW5jdGlvbi5nZXQoKSksIG1f
Y2FsbEZyYW1lLCBvcGVyYW5kc1swXSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSAyOgotICAgICAgICAgICAgcmVzdWx0ID0gdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24o
cmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUFA+KGZ1bmN0aW9uLmdldCgpKSksIG1f
Y2FsbEZyYW1lLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pOworICAgICAgICAgICAgcmVzdWx0
ID0gdm1DYWxsKEludDY0LCByZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0aW9uX0VQUD4oZnVu
Y3Rpb24uZ2V0KCkpLCBtX2NhbGxGcmFtZSwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICByZXN1bHQgPSB2
bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihyZWludGVycHJldF9jYXN0PEpfSklUT3BlcmF0
aW9uX0VQUFA+KGZ1bmN0aW9uLmdldCgpKSksIG1fY2FsbEZyYW1lLCBvcGVyYW5kc1swXSwgb3Bl
cmFuZHNbMV0sIG9wZXJhbmRzWzJdKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IHZtQ2FsbChJbnQ2
NCwgcmVpbnRlcnByZXRfY2FzdDxKX0pJVE9wZXJhdGlvbl9FUFBQPihmdW5jdGlvbi5nZXQoKSks
IG1fY2FsbEZyYW1lLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJdKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEyODg1LDcgKzEyODkyLDcgQEAgY2xhc3MgTG93ZXJE
RkdUb0IzIHsKICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSBnZXR0ZXIgZG9lcyBub3QgaGF2ZSBj
b2RlIHNldHRpbmcgdG9wQ2FsbEZyYW1lLCBBcyBpcyB0aGUgc2FtZSB0byBJQywgd2Ugc2hvdWxk
IHNldCB0b3BDYWxsRnJhbWUgaW4gY2FsbGVyIHNpZGUuCiAgICAgICAgICAgICBtX291dC5zdG9y
ZVB0cihtX2NhbGxGcmFtZSwgbV9vdXQuYWJzb2x1dGUoJnZtKCkudG9wQ2FsbEZyYW1lKSk7CiAg
ICAgICAgICAgICBzZXRKU1ZhbHVlKAotICAgICAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgbV9v
dXQub3BlcmF0aW9uKG1fbm9kZS0+Y2FsbERPTUdldHRlckRhdGEoKS0+Y3VzdG9tQWNjZXNzb3JH
ZXR0ZXIucmV0YWdnZWRFeGVjdXRhYmxlQWRkcmVzczxDRnVuY3Rpb25QdHJUYWc+KCkpLAorICAg
ICAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgYml0d2lzZV9jYXN0PEN1c3RvbUdldHRlclNldHRl
cjo6Q3VzdG9tR2V0dGVyPihtX25vZGUtPmNhbGxET01HZXR0ZXJEYXRhKCktPmN1c3RvbUFjY2Vz
c29yR2V0dGVyLnJldGFnZ2VkRXhlY3V0YWJsZUFkZHJlc3M8Q0Z1bmN0aW9uUHRyVGFnPigpKSwK
ICAgICAgICAgICAgICAgICAgICAgbV9jYWxsRnJhbWUsIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSksIG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmNhbGxE
T01HZXR0ZXJEYXRhKCktPmlkZW50aWZpZXJOdW1iZXJdKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CkBAIC0xMzM5MCw3ICsxMzM5Nyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7
CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9u
KTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291
dC5ub3ROdWxsKHZtQ2FsbCgKLSAgICAgICAgICAgIHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJh
dGlvbihoZWxwZXJGdW5jdGlvbiksIG1fY2FsbEZyYW1lLCBsZWZ0LCByaWdodCkpKTsKKyAgICAg
ICAgICAgIHBvaW50ZXJUeXBlKCksIGhlbHBlckZ1bmN0aW9uLCBtX2NhbGxGcmFtZSwgbGVmdCwg
cmlnaHQpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtMTM0ODIs
NyArMTM0ODksNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICBtX291dC5hcHBlbmRU
byhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKIAogICAgICAgICBMVmFsdWUgc2xvd1Jlc3VsdFZh
bHVlID0gdm1DYWxsKAotICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25Db21wYXJlU3RyaW5nRXEpLCBtX2NhbGxGcmFtZSwKKyAgICAgICAgICAgIEludDY0LCBvcGVy
YXRpb25Db21wYXJlU3RyaW5nRXEsIG1fY2FsbEZyYW1lLAogICAgICAgICAgICAgbGVmdEpTU3Ry
aW5nLCByaWdodEpTU3RyaW5nKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9
IG1fb3V0LmFuY2hvcih1bmJveEJvb2xlYW4oc2xvd1Jlc3VsdFZhbHVlKSk7CiAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTE0MTI3LDcgKzE0MTM0LDcgQEAgY2xhc3MgTG93
ZXJERkdUb0IzIHsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIAotICAgICAgICB2
bUNhbGwoVm9pZCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblByb2Nlc3NTaGFkb3dDaGlja2Vu
TG9nKSwgbV9jYWxsRnJhbWUpOworICAgICAgICB2bUNhbGwoVm9pZCwgb3BlcmF0aW9uUHJvY2Vz
c1NoYWRvd0NoaWNrZW5Mb2csIG1fY2FsbEZyYW1lKTsKICAgICAgICAgCiAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQubG9hZFB0cihhZGRyZXNz
T2ZMb2dDdXJzb3IpKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpAQCAtMTQ0
MTgsNyArMTQ0MjUsNyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGlubmVyTGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhvdXRPZkJvdW5kc0Nhc2Us
IGhvbGVDYXNlKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgdm1DYWxs
KAotICAgICAgICAgICAgICAgICAgICBWb2lkLCBtX291dC5vcGVyYXRpb24oc2xvd1BhdGhGdW5j
dGlvbiksCisgICAgICAgICAgICAgICAgICAgIFZvaWQsIHNsb3dQYXRoRnVuY3Rpb24sCiAgICAg
ICAgICAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCwgdmFsdWUpOwogICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CkBAIC0xNDc5MCw3ICsxNDc5Nyw3IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQzNjkKICAgICAgICAg
CiAgICAgICAgIExWYWx1ZSBicmFuY2hPZmZzZXQgPSB2bUNhbGwoCi0gICAgICAgICAgICBJbnQz
MiwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaFN0cmluZ0FuZEdldEJyYW5jaE9mZnNl
dCksCisgICAgICAgICAgICBJbnQzMiwgb3BlcmF0aW9uU3dpdGNoU3RyaW5nQW5kR2V0QnJhbmNo
T2Zmc2V0LAogICAgICAgICAgICAgbV9jYWxsRnJhbWUsIG1fb3V0LmNvbnN0SW50UHRyKGRhdGEt
PnN3aXRjaFRhYmxlSW5kZXgpLCBzdHJpbmcpOwogICAgICAgICAKICAgICAgICAgU3RyaW5nSnVt
cFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jaygpLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoZGF0YS0+
c3dpdGNoVGFibGVJbmRleCk7CkBAIC0xNzAyNCw3ICsxNzAzMSw3IEBAIGNsYXNzIExvd2VyREZH
VG9CMyB7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7
CiAgICAgICAgIAotICAgICAgICBMVmFsdWUgY2FsbCA9IHZtQ2FsbChWb2lkLCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uV3JpdGVCYXJyaWVyU2xvd1BhdGgpLCBtX2NhbGxGcmFtZSwgYmFzZSk7
CisgICAgICAgIExWYWx1ZSBjYWxsID0gdm1DYWxsKFZvaWQsIG9wZXJhdGlvbldyaXRlQmFycmll
clNsb3dQYXRoLCBtX2NhbGxGcmFtZSwgYmFzZSk7CiAgICAgICAgIG1faGVhcHMuZGVjb3JhdGVD
Q2FsbFJlYWQoJm1faGVhcHMucm9vdCwgY2FsbCk7CiAgICAgICAgIG1faGVhcHMuZGVjb3JhdGVD
Q2FsbFdyaXRlKCZtX2hlYXBzLkpTQ2VsbF9jZWxsU3RhdGUsIGNhbGwpOwogICAgICAgICAKQEAg
LTE3MTE3LDExICsxNzEyNCwxMyBAQCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgICAgICByZXR1
cm4gcHJlY2lzZUluZGV4TWFzazY0KHZhbHVlLCBtX291dC56ZXJvRXh0KGluZGV4LCBJbnQ2NCks
IG1fb3V0Lnplcm9FeHQobGltaXQsIEludDY0KSk7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRl
PHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgTFZhbHVlIHZtQ2FsbChMVHlwZSB0eXBlLCBMVmFsdWUg
ZnVuY3Rpb24sIEFyZ3MmJi4uLiBhcmdzKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9wZXJhdGlv
blR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgTFZhbHVlIHZtQ2FsbChMVHlwZSB0eXBlLCBP
cGVyYXRpb25UeXBlIGZ1bmN0aW9uLCBBcmdzJiYuLi4gYXJncykKICAgICB7CisgICAgICAgIHN0
YXRpY19hc3NlcnQoIXN0ZDo6aXNfc2FtZTxPcGVyYXRpb25UeXBlLCBMVmFsdWU+Ojp2YWx1ZSk7
CisgICAgICAgIHN0YXRpY19hc3NlcnQoRnVuY3Rpb25UcmFpdHM8T3BlcmF0aW9uVHlwZT46OmND
YWxsQXJpdHkoKSA9PSBzaXplb2YuLi4oQXJncyksICJTYW5pdHkgY2hlY2siKTsKICAgICAgICAg
Y2FsbFByZWZsaWdodCgpOwotICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuY2FsbCh0eXBl
LCBmdW5jdGlvbiwgc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IG1fb3V0LmNhbGwodHlwZSwgbV9vdXQub3BlcmF0aW9uKGZ1bmN0aW9uKSwgc3Rk
Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKICAgICAgICAgaWYgKG1heUV4aXQobV9ncmFwaCwg
bV9ub2RlKSkKICAgICAgICAgICAgIGNhbGxDaGVjaygpOwogICAgICAgICBlbHNlIHsK
</data>
<flag name="review"
          id="396126"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>