<?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>117849</bug_id>
          
          <creation_ts>2013-06-20 13:53:09 -0700</creation_ts>
          <short_desc>fourthTier: FTL should support SwitchChar</short_desc>
          <delta_ts>2013-06-20 14:19:30 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>112840</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>902306</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-20 13:53:09 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902308</commentid>
    <comment_count>1</comment_count>
      <attachid>205118</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-20 13:58:59 -0700</bug_when>
    <thetext>Created attachment 205118
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902309</commentid>
    <comment_count>2</comment_count>
      <attachid>205118</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-20 13:59:25 -0700</bug_when>
    <thetext>Comment on attachment 205118
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=205118&amp;action=review

&gt; Source/JavaScriptCore/dfg/DFGOperations.cpp:1542
&gt; -
&gt; +    

I will revert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902324</commentid>
    <comment_count>3</comment_count>
      <attachid>205118</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-06-20 14:17:09 -0700</bug_when>
    <thetext>Comment on attachment 205118
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902327</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-20 14:19:30 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/151802</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205118</attachid>
            <date>2013-06-20 13:58:59 -0700</date>
            <delta_ts>2013-06-20 14:17:09 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>36401</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUxNzk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBA
CisyMDEzLTA2LTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogRlRMIHNob3VsZCBzdXBwb3J0IFN3aXRjaENoYXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzg0OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBhZGRzIFN3aXRj
aChTd2l0Y2hDaGFyKSB0byB0aGUgRlRMIGFuZCBhbHNvIGltcGxpY2l0bHkgZG9lcyBzb21lIG90
aGVyIHRoaW5ncy4KKyAgICAgICAgU3dpdGNoQ2hhciByZXF1aXJlcyBjYWxsaW5nIGEgc2xvdyBw
YXRoIHRvIHJlc29sdmUgcm9wZXMuIFByZXZpb3VzbHkgdGhlIEZUTCBoYWQgbm8KKyAgICAgICAg
c3VwcG9ydCBmb3IgY2FsbGluZyBzbG93IHBhdGhzLCBhbmQgd2UgYXZvaWRlZCBhZGRpbmcgY292
ZXJhZ2UgdGhhdCB3b3VsZCByZXF1aXJlCisgICAgICAgIHRoYXQuIFdlbGwsIHRoaXMgcGF0Y2gg
YWRkcyB0aGUgYWJpbGl0eSB0byBjYWxsIHNsb3cgcGF0aHMgYW5kIGp1c3QgdXNlcyB0aGF0IGZv
cgorICAgICAgICByZXNvbHZpbmcgcm9wZXMgZm9yIFN3aXRjaENoYXIuIEFsc28gU3dpdGNoQ2hh
ciByZXF1aXJlZCBhZGRpbmcgYXdhcmVuZXNzIG9mIHN0cmluZ3MsCisgICAgICAgIHNvIEkgZGlk
IHRoYXQsIHRvby4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAo
Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRDb2RlT3JpZ2luKToKKyAg
ICAgICAgKiBkZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAg
KiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZS5jcHA6CisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjpw
cmludEludGVybmFsKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoV1RGKToK
KyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJh
dGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZnRsL0ZU
TEFiYnJldmlhdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6RlRMOjppbnQxNlR5cGUpOgorICAgICAg
ICAoSlNDOjpGVEw6OmNvbnN0SW50KToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oOgorICAgICAgICAoRlRMKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRM
Q29tbW9uVmFsdWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpDb21tb25WYWx1ZXM6OkNvbW1v
blZhbHVlcyk6CisgICAgICAgICogZnRsL0ZUTENvbW1vblZhbHVlcy5oOgorICAgICAgICAoQ29t
bW9uVmFsdWVzKToKKyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6SW50cmluc2ljUmVwb3NpdG9yeTo6SW50cmluc2ljUmVwb3NpdG9y
eSk6CisgICAgICAgIChGVEwpOgorICAgICAgICAqIGZ0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5
Lmg6CisgICAgICAgIChGVEwpOgorICAgICAgICAoSW50cmluc2ljUmVwb3NpdG9yeSk6CisgICAg
ICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dl
ckRGR1RvTExWTTo6bG93ZXIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjp0
cmFuc2ZlckFuZENoZWNrQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZUp1bXApOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpj
b21waWxlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGls
ZVN3aXRjaCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmJ1aWxkU3dpdGNo
KToKKyAgICAgICAgKExvd2VyREZHVG9MTFZNKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRG
R1RvTExWTTo6bG93U3RyaW5nKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
c3BlY3VsYXRlKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6aXNPYmplY3Qp
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjppc05vdFN0cmluZyk6CisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmlzU3RyaW5nKToKKyAgICAgICAgKEpTQzo6
RlRMOjpMb3dlckRGR1RvTExWTTo6aXNOb3RPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6Okxv
d2VyREZHVG9MTFZNOjpzcGVjdWxhdGVPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2Vy
REZHVG9MTFZNOjpzcGVjdWxhdGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZH
VG9MTFZNOjpzcGVjdWxhdGVOb25OdWxsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dl
ckRGR1RvTExWTTo6dm1DYWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6
Y2FsbFByZWZsaWdodCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNhbGxD
aGVjayk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd0Jsb2NrKToKKyAg
ICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpjb25z
dEJvb2wpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y29uc3RJbnQ4KToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6OmNvbnN0SW50MzIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6Y29uc3RJbnRQdHIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y29uc3RJbnQ2NCk6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpsb2FkMTYpOgorICAgICAgICAoSlNDOjpGVEw6
Ok91dHB1dDo6aXNOdWxsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om5vdE51bGwpOgor
ICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6dGVzdElzWmVybzMyKToKKyAgICAgICAgKEpTQzo6
RlRMOjpPdXRwdXQ6OnRlc3ROb25aZXJvMzIpOgorICAgICAgICAoT3V0cHV0KToKKyAgICAgICAg
KEpTQzo6RlRMOjpPdXRwdXQ6Om9wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0
OjpjcmFzaCk6CisKIDIwMTMtMDYtMTggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBmb3VydGhUaWVyOiBERkcgc2hvdWxkIGhhdmUgc3dpdGNoX2NoYXIKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE1
MTc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtNTk1LDYgKzU5NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIGNyZWF0ZVJh
cmVEYXRhSWZOZWNlc3NhcnkoKTsKICAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fY29kZU9y
aWdpbnM7CiAgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGFkZENvZGVPcmlnaW4oQ29kZU9yaWdp
biBjb2RlT3JpZ2luKQorICAgIHsKKyAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgp
OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBtX3JhcmVEYXRhLT5tX2NvZGVPcmlnaW5zLnNp
emUoKTsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9jb2RlT3JpZ2lucy5hcHBlbmQoY29kZU9yaWdp
bik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogICAgICAgICAKICAgICAvLyBIYXZp
bmcgY29kZSBvcmlnaW5zIGltcGxpZXMgdGhhdCB0aGVyZSBoYXMgYmVlbiBzb21lIGlubGluaW5n
LgogICAgIGJvb2wgaGFzQ29kZU9yaWdpbnMoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAxNTE3ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJk
c1Byb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTcsOCArMzU3LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAvLyAoaS5lLiB0aGV5IHdpbGwgdGFrZSBkZWZhdWx0
KS4KICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZDEoKS0+bWVyZ2VGbGFncyhOb2RlVXNlZEFz
TnVtYmVyIHwgTm9kZVVzZWRBc0ludCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB9IH0KICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwCShyZXZpc2lvbiAxNTE3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUyLDYgKzI1Miw3IEBAIHZvaWQg
R3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAgICAgICAgb3V0LnByaW50KGNv
bW1hLCAiRjojIiwgbm9kZS0+bm90VGFrZW5CbG9ja0luZGV4KCkpOwogICAgIGlmIChub2RlLT5p
c1N3aXRjaCgpKSB7CiAgICAgICAgIFN3aXRjaERhdGEqIGRhdGEgPSBub2RlLT5zd2l0Y2hEYXRh
KCk7CisgICAgICAgIG91dC5wcmludChjb21tYSwgZGF0YS0+a2luZCk7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLT5jYXNlcy5zaXplKCk7ICsraSkKICAgICAgICAgICAg
IG91dC5wcmludChjb21tYSwgZGF0YS0+Y2FzZXNbaV0udmFsdWUsICI6IyIsIGRhdGEtPmNhc2Vz
W2ldLnRhcmdldCk7CiAgICAgICAgIG91dC5wcmludChjb21tYSwgImRlZmF1bHQ6IyIsIGRhdGEt
PmZhbGxUaHJvdWdoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAko
cmV2aXNpb24gMTUxNzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTQgKzQxLDMwIEBAIHVuc2lnbmVkIE5vZGU6OmluZGV4
KCkgY29uc3QKIAogbmFtZXNwYWNlIFdURiB7CiAKLXZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBKU0M6OkRGRzo6Tm9kZSogbm9kZSkKK3VzaW5nIG5hbWVzcGFjZSBKU0M7Cit1
c2luZyBuYW1lc3BhY2UgSlNDOjpERkc7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVh
bSYgb3V0LCBTd2l0Y2hLaW5kIGtpbmQpCit7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2Fz
ZSBTd2l0Y2hJbW06CisgICAgICAgIG91dC5wcmludCgiU3dpdGNoSW1tIik7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIFN3aXRjaENoYXI6CisgICAgICAgIG91dC5wcmludCgiU3dpdGNoQ2hh
ciIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBOb2RlKiBu
b2RlKQogewogICAgIGlmICghbm9kZSkgewogICAgICAgICBvdXQucHJpbnQoIi0iKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBvdXQucHJpbnQoIkAiLCBub2RlLT5pbmRleCgpKTsKLSAg
ICBvdXQucHJpbnQoSlNDOjpBYmJyZXZpYXRlZFNwZWN1bGF0aW9uRHVtcChub2RlLT5wcmVkaWN0
aW9uKCkpKTsKKyAgICBvdXQucHJpbnQoQWJicmV2aWF0ZWRTcGVjdWxhdGlvbkR1bXAobm9kZS0+
cHJlZGljdGlvbigpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDE1MTc4MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgxLDYgKzEzODEsNyBA
QCBwdWJsaWM6CiAKIG5hbWVzcGFjZSBXVEYgewogCit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBKU0M6OkRGRzo6U3dpdGNoS2luZCk7CiB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRT
dHJlYW0mLCBKU0M6OkRGRzo6Tm9kZSopOwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTUx
NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTUzOSw3ICsxNTM5LDcgQEAgU3RyaW5nSW1wbCogREZHX09QRVJBVElP
TiBvcGVyYXRpb25SZXNvbAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotCisgICAgCiAgICAgcmV0dXJuIHN0
cmluZy0+dmFsdWUoZXhlYykuaW1wbCgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTUxNzgwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsx
MjAsNyBAQCB0eXBlZGVmIGNoYXIqIERGR19PUEVSQVRJT04gKCpQX0RGR09wZXJhCiB0eXBlZGVm
IGNoYXIqIERGR19PUEVSQVRJT04gKCpQX0RGR09wZXJhdGlvbl9FU3RQUykoRXhlY1N0YXRlKiwg
U3RydWN0dXJlKiwgdm9pZCosIHNpemVfdCk7CiB0eXBlZGVmIGNoYXIqIERGR19PUEVSQVRJT04g
KCpQX0RGR09wZXJhdGlvbl9FU3RTUykoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgc2l6ZV90LCBz
aXplX3QpOwogdHlwZWRlZiBjaGFyKiBERkdfT1BFUkFUSU9OICgqUF9ERkdPcGVyYXRpb25fRVN0
WikoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgaW50MzJfdCk7Ci10eXBlZGVmIFN0cmluZ0ltcGwq
IERGR19PUEVSQVRJT04gKCpTdHJfREZHT3BlcmF0aW9uX0VKc3MpKEV4ZWNTdGF0ZSosIEpTU3Ry
aW5nKik7Cit0eXBlZGVmIFN0cmluZ0ltcGwqIERGR19PUEVSQVRJT04gKCpJX0RGR09wZXJhdGlv
bl9FSnNzKShFeGVjU3RhdGUqLCBKU1N0cmluZyopOwogCiAvLyBUaGVzZSByb3V0aW5lcyBhcmUg
cHJvdmlkZSBjYWxsYmFja3Mgb3V0IHRvIEMrKyBpbXBsZW1lbnRhdGlvbnMgb2Ygb3BlcmF0aW9u
cyB0b28gY29tcGxleCB0byBKSVQuCiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9uTmV3
T2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE1
MTc4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTExMCw3ICsxMTEwLDcgQEAgcHVibGljOgogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFN0cl9ERkdPcGVyYXRpb25fRUpzcyBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIEdQUlJlZyBhcmcxKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
SV9ERkdPcGVyYXRpb25fRUpzcyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcx
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEp
OwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
YnJldmlhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFiYnJldmlhdGlvbnMuaAkocmV2aXNpb24gMTUxNzgwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYmJyZXZpYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogc3RhdGljIGlubGluZSBMVHlwZSB2
b2lkVHlwZShMQ29udGV4dCBjb250ZXh0KSB7IHJldHVybiBMTFZNVm9pZFR5cGVJbkNvbnRleHQo
Y29udGV4dCk7IH0KIHN0YXRpYyBpbmxpbmUgTFR5cGUgaW50MVR5cGUoTENvbnRleHQgY29udGV4
dCkgeyByZXR1cm4gTExWTUludDFUeXBlSW5Db250ZXh0KGNvbnRleHQpOyB9CiBzdGF0aWMgaW5s
aW5lIExUeXBlIGludDhUeXBlKExDb250ZXh0IGNvbnRleHQpIHsgcmV0dXJuIExMVk1JbnQ4VHlw
ZUluQ29udGV4dChjb250ZXh0KTsgfQorc3RhdGljIGlubGluZSBMVHlwZSBpbnQxNlR5cGUoTENv
bnRleHQgY29udGV4dCkgeyByZXR1cm4gTExWTUludDE2VHlwZUluQ29udGV4dChjb250ZXh0KTsg
fQogc3RhdGljIGlubGluZSBMVHlwZSBpbnQzMlR5cGUoTENvbnRleHQgY29udGV4dCkgeyByZXR1
cm4gTExWTUludDMyVHlwZUluQ29udGV4dChjb250ZXh0KTsgfQogc3RhdGljIGlubGluZSBMVHlw
ZSBpbnQ2NFR5cGUoTENvbnRleHQgY29udGV4dCkgeyByZXR1cm4gTExWTUludDY0VHlwZUluQ29u
dGV4dChjb250ZXh0KTsgfQogc3RhdGljIGlubGluZSBMVHlwZSBpbnRQdHJUeXBlKExDb250ZXh0
IGNvbnRleHQpIHsgcmV0dXJuIExMVk1JbnQ2NFR5cGVJbkNvbnRleHQoY29udGV4dCk7IH0KQEAg
LTEyOCw3ICsxMjksNyBAQCBzdGF0aWMgaW5saW5lIExWYWx1ZSBhZGRFeHRlcm5GdW5jdGlvbihM
CiBzdGF0aWMgaW5saW5lIExWYWx1ZSBnZXRQYXJhbShMVmFsdWUgZnVuY3Rpb24sIHVuc2lnbmVk
IGluZGV4KSB7IHJldHVybiBMTFZNR2V0UGFyYW0oZnVuY3Rpb24sIGluZGV4KTsgfQogCiBlbnVt
IEJpdEV4dGVuc2lvbiB7IFplcm9FeHRlbmQsIFNpZ25FeHRlbmQgfTsKLXN0YXRpYyBpbmxpbmUg
TFZhbHVlIGNvbnN0SW50KExUeXBlIHR5cGUsIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSwgQml0
RXh0ZW5zaW9uIGV4dGVuc2lvbikgeyByZXR1cm4gTExWTUNvbnN0SW50KHR5cGUsIHZhbHVlLCBl
eHRlbnNpb24gPT0gU2lnbkV4dGVuZCk7IH0KK3N0YXRpYyBpbmxpbmUgTFZhbHVlIGNvbnN0SW50
KExUeXBlIHR5cGUsIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZSwgQml0RXh0ZW5zaW9uIGV4dGVu
c2lvbiA9IFplcm9FeHRlbmQpIHsgcmV0dXJuIExMVk1Db25zdEludCh0eXBlLCB2YWx1ZSwgZXh0
ZW5zaW9uID09IFNpZ25FeHRlbmQpOyB9CiBzdGF0aWMgaW5saW5lIExWYWx1ZSBjb25zdFJlYWwo
TFR5cGUgdHlwZSwgZG91YmxlIHZhbHVlKSB7IHJldHVybiBMTFZNQ29uc3RSZWFsKHR5cGUsIHZh
bHVlKTsgfQogc3RhdGljIGlubGluZSBMVmFsdWUgY29uc3RJbnRUb1B0cihMVmFsdWUgdmFsdWUs
IExUeXBlIHR5cGUpIHsgcmV0dXJuIExMVk1Db25zdEludFRvUHRyKHZhbHVlLCB0eXBlKTsgfQog
c3RhdGljIGlubGluZSBMVmFsdWUgY29uc3RCaXRDYXN0KExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlw
ZSkgeyByZXR1cm4gTExWTUNvbnN0Qml0Q2FzdCh2YWx1ZSwgdHlwZSk7IH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oCShyZXZpc2lvbiAxNTE3ODApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMjIgKzM1LDI4IEBA
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKICNkZWZpbmUgRk9SX0VBQ0hfQUJT
VFJBQ1RfSEVBUChtYWNybykgXAotICAgIG1hY3JvKHR5cGVkQXJyYXlQcm9wZXJ0aWVzKSBcCi0g
ICAgbWFjcm8obGVuZ3RoKQorICAgIG1hY3JvKGxlbmd0aCkgXAorICAgIG1hY3JvKHR5cGVkQXJy
YXlQcm9wZXJ0aWVzKQogCiAjZGVmaW5lIEZPUl9FQUNIX0FCU1RSQUNUX0ZJRUxEKG1hY3JvKSBc
CisgICAgbWFjcm8oQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1
YmxpY0xlbmd0aCgpKSBcCiAgICAgbWFjcm8oSlNDZWxsX3N0cnVjdHVyZSwgSlNDZWxsOjpzdHJ1
Y3R1cmVPZmZzZXQoKSkgXAogICAgIG1hY3JvKEpTT2JqZWN0X2J1dHRlcmZseSwgSlNPYmplY3Q6
OmJ1dHRlcmZseU9mZnNldCgpKSBcCi0gICAgbWFjcm8oQnV0dGVyZmx5X3B1YmxpY0xlbmd0aCwg
QnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSBcCisgICAgbWFjcm8oSlNTdHJpbmdf
bGVuZ3RoLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXAorICAgIG1hY3JvKEpTU3RyaW5n
X3ZhbHVlLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSBcCisgICAgbWFjcm8oU3RyaW5nSW1w
bF9kYXRhLCBTdHJpbmdJbXBsOjpkYXRhT2Zmc2V0KCkpIFwKKyAgICBtYWNybyhTdHJpbmdJbXBs
X2hhc2hBbmRGbGFncywgU3RyaW5nSW1wbDo6ZmxhZ3NPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0
cnVjdHVyZV9nbG9iYWxPYmplY3QsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpIFwK
ICAgICBtYWNybyhTdHJ1Y3R1cmVfdHlwZUluZm9GbGFncywgU3RydWN0dXJlOjp0eXBlSW5mb0Zs
YWdzT2Zmc2V0KCkpCiAKICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1h
Y3JvKSBcCi0gICAgbWFjcm8odmFyaWFibGVzLCBzaXplb2YoUmVnaXN0ZXIpKSBcCisgICAgbWFj
cm8oY2hhcmFjdGVyczgsIHNpemVvZihMQ2hhcikpIFwKKyAgICBtYWNybyhjaGFyYWN0ZXJzMTYs
IHNpemVvZihVQ2hhcikpIFwKICAgICBtYWNybyhpbmRleGVkSW50MzJQcm9wZXJ0aWVzLCBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpKSBcCiAgICAgbWFjcm8oaW5kZXhlZERvdWJsZVByb3BlcnRpZXMs
IHNpemVvZihkb3VibGUpKSBcCiAgICAgbWFjcm8oaW5kZXhlZENvbnRpZ3VvdXNQcm9wZXJ0aWVz
LCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCi0gICAgbWFjcm8oaW5kZXhlZEFycmF5U3RvcmFn
ZVByb3BlcnRpZXMsIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpCisgICAgbWFjcm8oaW5kZXhlZEFy
cmF5U3RvcmFnZVByb3BlcnRpZXMsIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpIFwKKyAgICBtYWNy
byh2YXJpYWJsZXMsIHNpemVvZihSZWdpc3RlcikpCiAgICAgCiAjZGVmaW5lIEZPUl9FQUNIX05V
TUJFUkVEX0FCU1RSQUNUX0hFQVAobWFjcm8pIFwKICAgICBtYWNybyhwcm9wZXJ0aWVzKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2
aXNpb24gMTUxNzgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNiArMTQzLDcgQEAgaW5saW5lIGJvb2wgY2Fu
Q29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgU3dpdGNoOgogICAgICAgICBzd2l0Y2ggKG5v
ZGUtPnN3aXRjaERhdGEoKS0+a2luZCkgewogICAgICAgICBjYXNlIFN3aXRjaEltbToKKyAgICAg
ICAgY2FzZSBTd2l0Y2hDaGFyOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODEsNiArMTgyLDcgQEAgYm9vbCBjYW5D
b21waWxlKEdyYXBoJiBncmFwaCkKICAgICAgICAgICAgICAgICBjYXNlIEtub3duQ2VsbFVzZToK
ICAgICAgICAgICAgICAgICBjYXNlIE9iamVjdFVzZToKICAgICAgICAgICAgICAgICBjYXNlIE9i
amVjdE9yT3RoZXJVc2U6CisgICAgICAgICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CiAgICAgICAg
ICAgICAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ29tbW9uVmFsdWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAJKHJldmlzaW9uIDE1MTc4MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsMTEgKzM0LDEzIEBAIENvbW1vblZhbHVlczo6Q29tbW9uVmFsdWVzKExDb250ZXh0IGNvbnQK
ICAgICA6IHZvaWRUeXBlKEZUTDo6dm9pZFR5cGUoY29udGV4dCkpCiAgICAgLCBib29sZWFuKGlu
dDFUeXBlKGNvbnRleHQpKQogICAgICwgaW50OChpbnQ4VHlwZShjb250ZXh0KSkKKyAgICAsIGlu
dDE2KGludDE2VHlwZShjb250ZXh0KSkKICAgICAsIGludDMyKGludDMyVHlwZShjb250ZXh0KSkK
ICAgICAsIGludDY0KGludDY0VHlwZShjb250ZXh0KSkKICAgICAsIGludFB0cihpbnRQdHJUeXBl
KGNvbnRleHQpKQogICAgICwgZG91YmxlVHlwZShGVEw6OmRvdWJsZVR5cGUoY29udGV4dCkpCiAg
ICAgLCByZWY4KHBvaW50ZXJUeXBlKGludDgpKQorICAgICwgcmVmMTYocG9pbnRlclR5cGUoaW50
MTYpKQogICAgICwgcmVmMzIocG9pbnRlclR5cGUoaW50MzIpKQogICAgICwgcmVmNjQocG9pbnRl
clR5cGUoaW50NjQpKQogICAgICwgcmVmUHRyKHBvaW50ZXJUeXBlKGludFB0cikpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgJKHJldmlzaW9uIDE1
MTc4MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDExICs0NiwxMyBAQCBwdWJsaWM6CiAgICAgY29uc3QgTFR5cGUg
dm9pZFR5cGU7CiAgICAgY29uc3QgTFR5cGUgYm9vbGVhbjsKICAgICBjb25zdCBMVHlwZSBpbnQ4
OworICAgIGNvbnN0IExUeXBlIGludDE2OwogICAgIGNvbnN0IExUeXBlIGludDMyOwogICAgIGNv
bnN0IExUeXBlIGludDY0OwogICAgIGNvbnN0IExUeXBlIGludFB0cjsKICAgICBjb25zdCBMVHlw
ZSBkb3VibGVUeXBlOwogICAgIGNvbnN0IExUeXBlIHJlZjg7CisgICAgY29uc3QgTFR5cGUgcmVm
MTY7CiAgICAgY29uc3QgTFR5cGUgcmVmMzI7CiAgICAgY29uc3QgTFR5cGUgcmVmNjQ7CiAgICAg
Y29uc3QgTFR5cGUgcmVmUHRyOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJ
bnRyaW5zaWNSZXBvc2l0b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuY3BwCShyZXZpc2lvbiAxNTE3ODApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSwxNyArMzUsMzAgQEAgSW50cmluc2ljUmVwb3NpdG9yeTo6SW50cmlu
c2ljUmVwb3NpdG9yeQogI2RlZmluZSBJTlRSSU5TSUNfSU5JVElBTElaQVRJT04ob3VyTmFtZSwg
bGx2bU5hbWUsIHR5cGUpICwgbV8jI291ck5hbWUoMCkKICAgICBGT1JfRUFDSF9GVExfSU5UUklO
U0lDKElOVFJJTlNJQ19JTklUSUFMSVpBVElPTikKICN1bmRlZiBJTlRSSU5TSUNfSU5JVElBTEla
QVRJT04KKyNkZWZpbmUgRlVOQ1RJT05fVFlQRV9JTklUSUFMSVpBVElPTih0eXBlTmFtZSwgdHlw
ZSkgLCBtXyMjdHlwZU5hbWUoMCkKKyAgICBGT1JfRUFDSF9GVU5DVElPTl9UWVBFKEZVTkNUSU9O
X1RZUEVfSU5JVElBTElaQVRJT04pCisjdW5kZWYgRlVOQ1RJT05fVFlQRV9JTklUSUFMSVpBVElP
TgogewogfQogCiAjZGVmaW5lIElOVFJJTlNJQ19HRVRURVJfU0xPV19ERUZJTklUSU9OKG91ck5h
bWUsIGxsdm1OYW1lLCB0eXBlKSAgICAgICBcCi0gICAgTFZhbHVlIEludHJpbnNpY1JlcG9zaXRv
cnk6Om91ck5hbWUjI0ludHJpbnNpY1Nsb3coKSB7ICAgICAgICAgICAgICBcCisgICAgTFZhbHVl
IEludHJpbnNpY1JlcG9zaXRvcnk6Om91ck5hbWUjI0ludHJpbnNpY1Nsb3coKSAgICAgICAgICAg
ICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIG1fIyNvdXJOYW1lID0gYWRkRXh0ZXJu
RnVuY3Rpb24obV9tb2R1bGUsIGxsdm1OYW1lLCB0eXBlKTsgICAgICBcCiAgICAgICAgIHJldHVy
biBtXyMjb3VyTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgfQogRk9SX0VBQ0hfRlRMX0lOVFJJTlNJQyhJTlRSSU5TSUNfR0VUVEVSX1NMT1df
REVGSU5JVElPTikKICN1bmRlZiBJTlRSSU5TSUNfR0VUVEVSCiAKKyNkZWZpbmUgRlVOQ1RJT05f
VFlQRV9HRVRURVJfU0xPV19ERUZJTklUSU9OKHR5cGVOYW1lLCB0eXBlKSBcCisgICAgTFR5cGUg
SW50cmluc2ljUmVwb3NpdG9yeTo6dHlwZU5hbWUjI1Nsb3coKSAgICAgICAgICAgICAgXAorICAg
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgbV8jI3R5cGVOYW1lID0gdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIHJldHVybiBtXyMjdHlwZU5hbWU7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0KK0ZPUl9FQUNIX0ZVTkNUSU9OX1RZUEUoRlVOQ1RJT05f
VFlQRV9HRVRURVJfU0xPV19ERUZJTklUSU9OKQorI3VuZGVmIEZVTkNUSU9OX1RZUEVfR0VUVEVS
X1NMT1dfREVGSU5JVElPTgorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCiAKICNlbmRpZiAv
LyBFTkFCTEUoRlRMX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW50
cmluc2ljUmVwb3NpdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5oCShyZXZpc2lvbiAxNTE3ODApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKKyNpbmNsdWRlICJE
RkdPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAiRlRMQWJicmV2aWF0aW9ucy5oIgogI2luY2x1ZGUg
IkZUTENvbW1vblZhbHVlcy5oIgogCkBAIC00MSw2ICs0Miw5IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhtdWxXaXRoT3ZlcmZsb3czMiwgImxsdm0uc211bC53
aXRoLm92ZXJmbG93LmkzMiIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RUeXBlKG1fY29udGV4dCwgaW50
MzIsIGJvb2xlYW4pLCBpbnQzMiwgaW50MzIpKSBcCiAgICAgbWFjcm8oZG91YmxlQWJzLCAibGx2
bS5mYWJzLmY2NCIsIGZ1bmN0aW9uVHlwZShkb3VibGVUeXBlLCBkb3VibGVUeXBlKSkKIAorI2Rl
ZmluZSBGT1JfRUFDSF9GVU5DVElPTl9UWVBFKG1hY3JvKSBcCisgICAgbWFjcm8oSV9ERkdPcGVy
YXRpb25fRUpzcywgZnVuY3Rpb25UeXBlKGludFB0ciwgaW50UHRyLCBpbnRQdHIpKQorCiBjbGFz
cyBJbnRyaW5zaWNSZXBvc2l0b3J5IDogcHVibGljIENvbW1vblZhbHVlcyB7CiBwdWJsaWM6CiAg
ICAgSW50cmluc2ljUmVwb3NpdG9yeShMQ29udGV4dCk7CkBAIC01NCw2ICs1OCwyNCBAQCBwdWJs
aWM6CiAgICAgRk9SX0VBQ0hfRlRMX0lOVFJJTlNJQyhJTlRSSU5TSUNfR0VUVEVSKQogI3VuZGVm
IElOVFJJTlNJQ19HRVRURVIKIAorI2RlZmluZSBGVU5DVElPTl9UWVBFX0dFVFRFUih0eXBlTmFt
ZSwgdHlwZSkgXAorICAgIExUeXBlIHR5cGVOYW1lKCkgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBpZiAoIW1fIyN0eXBlTmFtZSkgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0
dXJuIHR5cGVOYW1lIyNTbG93KCk7ICAgICAgICAgXAorICAgICAgICByZXR1cm4gbV8jI3R5cGVO
YW1lOyAgICAgICAgICAgICAgICAgXAorICAgIH0KKyAgICBGT1JfRUFDSF9GVU5DVElPTl9UWVBF
KEZVTkNUSU9OX1RZUEVfR0VUVEVSKQorI3VuZGVmIEZVTkNUSU9OX1RZUEVfR0VUVEVSCisgICAg
CisjZGVmaW5lIEZVTkNUSU9OX1RZUEVfUkVTT0xWRVIodHlwZU5hbWUsIHR5cGUpIFwKKyAgICBM
VHlwZSBvcGVyYXRpb25UeXBlKERGRzo6dHlwZU5hbWUpICAgICAgICAgXAorICAgIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiB0eXBl
TmFtZSgpOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisgICAgRk9SX0VBQ0hfRlVOQ1RJ
T05fVFlQRShGVU5DVElPTl9UWVBFX1JFU09MVkVSKQorI3VuZGVmIEZVTkNUSU9OX1RZUEVfUkVT
T0xWRVIKKyAgICAKIHByaXZhdGU6CiAjZGVmaW5lIElOVFJJTlNJQ19HRVRURVJfU0xPV19ERUNM
QVJBVElPTihvdXJOYW1lLCBsbHZtTmFtZSwgdHlwZSkgXAogICAgIExWYWx1ZSBvdXJOYW1lIyNJ
bnRyaW5zaWNTbG93KCk7CkBAIC02Myw2ICs4NSwxNiBAQCBwcml2YXRlOgogI2RlZmluZSBJTlRS
SU5TSUNfRklFTERfREVDTEFSQVRJT04ob3VyTmFtZSwgbGx2bU5hbWUsIHR5cGUpIExWYWx1ZSBt
XyMjb3VyTmFtZTsKICAgICBGT1JfRUFDSF9GVExfSU5UUklOU0lDKElOVFJJTlNJQ19GSUVMRF9E
RUNMQVJBVElPTikKICN1bmRlZiBJTlRSSU5TSUNfRklFTERfREVDTEFSQVRJT04KKworI2RlZmlu
ZSBGVU5DVElPTl9UWVBFX0dFVFRFUl9TTE9XX0RFQ0xBUkFUSU9OKHR5cGVOYW1lLCB0eXBlKSBc
CisgICAgTFR5cGUgdHlwZU5hbWUjI1Nsb3coKTsKKyAgICBGT1JfRUFDSF9GVU5DVElPTl9UWVBF
KEZVTkNUSU9OX1RZUEVfR0VUVEVSX1NMT1dfREVDTEFSQVRJT04pCisjdW5kZWYgRlVOQ1RJT05f
VFlQRV9HRVRURVJfU0xPV19ERUNMQVJBVElPTgorCisjZGVmaW5lIEZVTkNUSU9OX1RZUEVfRklF
TERfREVDTEFSQVRJT04odHlwZU5hbWUsIHR5cGUpIFwKKyAgICBMVHlwZSBtXyMjdHlwZU5hbWU7
CisgICAgRk9SX0VBQ0hfRlVOQ1RJT05fVFlQRShGVU5DVElPTl9UWVBFX0ZJRUxEX0RFQ0xBUkFU
SU9OKQorI3VuZGVmIEZVTkNUSU9OX1RZUEVfRklFTERfREVDTEFSQVRJT04KIH07CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpGVEwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNTE3ODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTEwLDExICsxMTAsMTEgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgY2xvc2VPdmVyRmx1
c2hlZExvY2FsT3BzKCk7CiAgICAgICAgIAotICAgICAgICBtX291dC5hcHBlbmRUbyhtX2FyZ3Vt
ZW50Q2hlY2tzLCBtX2Jsb2Nrcy5nZXQobV9ncmFwaC5tX2Jsb2Nrc1swXS5nZXQoKSkpOworICAg
ICAgICBtX291dC5hcHBlbmRUbyhtX2FyZ3VtZW50Q2hlY2tzLCBsb3dCbG9jaygwKSk7CiAKICAg
ICAgICAgdHJhbnNmZXJBbmRDaGVja0FyZ3VtZW50cygpOwogICAgICAgICAKLSAgICAgICAgbV9v
dXQuanVtcChtX2Jsb2Nrcy5nZXQobV9ncmFwaC5tX2Jsb2Nrc1swXS5nZXQoKSkpOworICAgICAg
ICBtX291dC5qdW1wKGxvd0Jsb2NrKDApKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoQmxvY2tJ
bmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgp
OyArK2Jsb2NrSW5kZXgpCiAgICAgICAgICAgICBjb21waWxlQmxvY2soYmxvY2tJbmRleCk7CkBA
IC0xODQsNyArMTg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGlmICh2YXJpYWJsZS0+aXND
YXB0dXJlZCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAg
ICAgICAgICBMVmFsdWUganNWYWx1ZSA9IG1fb3V0LmxvYWQ2NChwYXlsb2FkRm9yKHZhcmlhYmxl
LT5sb2NhbCgpKSk7CisgICAgICAgICAgICBMVmFsdWUganNWYWx1ZSA9IG1fb3V0LmxvYWQ2NChh
ZGRyZXNzRm9yKHZhcmlhYmxlLT5sb2NhbCgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmICh2YXJpYWJsZS0+c2hvdWxkVW5ib3hJZlBvc3NpYmxlKCkpIHsKICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghdmFyaWFibGUtPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKTsKQEAg
LTE0MjAsMTUgKzE0MjAsMTUgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVKdW1w
KCkKICAgICB7Ci0gICAgICAgIG1fb3V0Lmp1bXAobV9ibG9ja3MuZ2V0KG1fZ3JhcGgubV9ibG9j
a3NbbV9ub2RlLT50YWtlbkJsb2NrSW5kZXgoKV0uZ2V0KCkpKTsKKyAgICAgICAgbV9vdXQuanVt
cChsb3dCbG9jayhtX25vZGUtPnRha2VuQmxvY2tJbmRleCgpKSk7CiAgICAgfQogICAgIAogICAg
IHZvaWQgY29tcGlsZUJyYW5jaCgpCiAgICAgewogICAgICAgICBtX291dC5icmFuY2goCiAgICAg
ICAgICAgICBib29saWZ5KG1fbm9kZS0+Y2hpbGQxKCkpLAotICAgICAgICAgICAgbV9ibG9ja3Mu
Z2V0KG1fZ3JhcGgubV9ibG9ja3NbbV9ub2RlLT50YWtlbkJsb2NrSW5kZXgoKV0uZ2V0KCkpLAot
ICAgICAgICAgICAgbV9ibG9ja3MuZ2V0KG1fZ3JhcGgubV9ibG9ja3NbbV9ub2RlLT5ub3RUYWtl
bkJsb2NrSW5kZXgoKV0uZ2V0KCkpKTsKKyAgICAgICAgICAgIGxvd0Jsb2NrKG1fbm9kZS0+dGFr
ZW5CbG9ja0luZGV4KCkpLAorICAgICAgICAgICAgbG93QmxvY2sobV9ub2RlLT5ub3RUYWtlbkJs
b2NrSW5kZXgoKSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVTd2l0Y2goKQpAQCAt
MTQ2Myw5ICsxNDYzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhpc05vdEludCwgaXNEb3VibGUpOwogICAgICAgICAgICAgICAg
IG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICAgICAgaXNDZWxsT3JNaXNjKGJveGVkVmFs
dWUpLAotICAgICAgICAgICAgICAgICAgICBtX2Jsb2Nrcy5nZXQobV9ncmFwaC5tX2Jsb2Nrc1tk
YXRhLT5mYWxsVGhyb3VnaF0uZ2V0KCkpLAotICAgICAgICAgICAgICAgICAgICBpc0RvdWJsZSk7
CisgICAgICAgICAgICAgICAgICAgIGlzQ2VsbE9yTWlzYyhib3hlZFZhbHVlKSwgbG93QmxvY2so
ZGF0YS0+ZmFsbFRocm91Z2gpLCBpc0RvdWJsZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oaXNEb3VibGUsIGlubmVyTGFzdE5leHQpOwogICAgICAg
ICAgICAgICAgIExWYWx1ZSBkb3VibGVWYWx1ZSA9IHVuYm94RG91YmxlKGJveGVkVmFsdWUpOwpA
QCAtMTQ3Myw4ICsxNDcxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpbnRWYWx1ZXMu
YXBwZW5kKG1fb3V0LmFuY2hvcihpbnRJbkRvdWJsZSkpOwogICAgICAgICAgICAgICAgIG1fb3V0
LmJyYW5jaCgKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlRXF1YWwobV9vdXQuaW50
VG9Eb3VibGUoaW50SW5Eb3VibGUpLCBkb3VibGVWYWx1ZSksCi0gICAgICAgICAgICAgICAgICAg
IHN3aXRjaE9uSW50cywKLSAgICAgICAgICAgICAgICAgICAgbV9ibG9ja3MuZ2V0KG1fZ3JhcGgu
bV9ibG9ja3NbZGF0YS0+ZmFsbFRocm91Z2hdLmdldCgpKSk7CisgICAgICAgICAgICAgICAgICAg
IHN3aXRjaE9uSW50cywgbG93QmxvY2soZGF0YS0+ZmFsbFRocm91Z2gpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKQEAgLTE0ODQsMjUg
KzE0ODEsOTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oc3dpdGNoT25JbnRzLCBsYXN0TmV4dCk7Ci0gICAgICAgICAg
ICBMVmFsdWUgaW50VmFsdWUgPSBtX291dC5waGkobV9vdXQuaW50MzIsIGludFZhbHVlcyk7Cisg
ICAgICAgICAgICBidWlsZFN3aXRjaChkYXRhLCBtX291dC5pbnQzMiwgbV9vdXQucGhpKG1fb3V0
LmludDMyLCBpbnRWYWx1ZXMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgY2FzZSBTd2l0Y2hDaGFyOiB7CisgICAgICAgICAgICBMVmFsdWUgc3Ry
aW5nVmFsdWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFZlY3RvcjxTd2l0Y2hDYXNlPiBj
YXNlczsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRhLT5jYXNlcy5z
aXplKCk7ICsraSkgewotICAgICAgICAgICAgICAgIGNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKAot
ICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKGRhdGEtPmNhc2VzW2ldLnZhbHVl
LnN3aXRjaExvb2t1cFZhbHVlKCkpLAotICAgICAgICAgICAgICAgICAgICBtX2Jsb2Nrcy5nZXQo
bV9ncmFwaC5tX2Jsb2Nrc1tkYXRhLT5jYXNlc1tpXS50YXJnZXRdLmdldCgpKSkpOworICAgICAg
ICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICAgICAg
Y2FzZSBTdHJpbmdVc2U6IHsKKyAgICAgICAgICAgICAgICBzdHJpbmdWYWx1ZSA9IGxvd1N0cmlu
ZyhtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAg
ICAgICAgICAgICAgIExWYWx1ZSB1bmJveGVkVmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGlz
Q2VsbENhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlN3aXRjaC9Td2l0Y2hDaGFyIGlzIGNl
bGwiKSk7CisgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaXNTdHJpbmdDYXNlID0gRlRMX05F
V19CTE9DSyhtX291dCwgKCJTd2l0Y2gvU3dpdGNoQ2hhciBpcyBzdHJpbmciKSk7CisgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAgICAg
ICAgICBpc05vdENlbGwodW5ib3hlZFZhbHVlKSwgbG93QmxvY2soZGF0YS0+ZmFsbFRocm91Z2gp
LCBpc0NlbGxDYXNlKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBMQmFzaWNC
bG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzQ2VsbENhc2UsIGlzU3RyaW5nQ2FzZSk7
CisgICAgICAgICAgICAgICAgTFZhbHVlIGNlbGxWYWx1ZSA9IHVuYm94ZWRWYWx1ZTsKKyAgICAg
ICAgICAgICAgICBtX291dC5icmFuY2goaXNOb3RTdHJpbmcoY2VsbFZhbHVlKSwgbG93QmxvY2so
ZGF0YS0+ZmFsbFRocm91Z2gpLCBpc1N0cmluZ0Nhc2UpOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGlzU3RyaW5nQ2FzZSwgbGFzdE5leHQpOworICAg
ICAgICAgICAgICAgIHN0cmluZ1ZhbHVlID0gY2VsbFZhbHVlOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBtX291dC5zd2l0Y2hJbnN0cnVjdGlvbigKLSAgICAgICAgICAgICAgICBpbnRWYWx1ZSwgY2Fz
ZXMsCi0gICAgICAgICAgICAgICAgbV9ibG9ja3MuZ2V0KG1fZ3JhcGgubV9ibG9ja3NbZGF0YS0+
ZmFsbFRocm91Z2hdLmdldCgpKSk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBsZW5ndGhJczEg
PSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlN3aXRjaC9Td2l0Y2hDaGFyIGxlbmd0aCBpcyAxIikp
OworICAgICAgICAgICAgTEJhc2ljQmxvY2sgbmVlZFJlc29sdXRpb24gPSBGVExfTkVXX0JMT0NL
KG1fb3V0LCAoIlN3aXRjaC9Td2l0Y2hDaGFyIHJlc29sdXRpb24iKSk7CisgICAgICAgICAgICBM
QmFzaWNCbG9jayByZXNvbHZlZCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiU3dpdGNoL1N3aXRj
aENoYXIgcmVzb2x2ZWQiKSk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBpczhCaXQgPSBGVExf
TkVXX0JMT0NLKG1fb3V0LCAoIlN3aXRjaC9Td2l0Y2hDaGFyIDhiaXQiKSk7CisgICAgICAgICAg
ICBMQmFzaWNCbG9jayBpczE2Qml0ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJTd2l0Y2gvU3dp
dGNoQ2hhciAxNmJpdCIpKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9
IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiU3dpdGNoL1N3aXRjaENoYXIgY29udGludWF0aW9uIikp
OworICAgICAgICAgICAgCisgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAg
ICAgbV9vdXQubm90RXF1YWwoCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMihzdHJp
bmdWYWx1ZSwgbV9oZWFwcy5KU1N0cmluZ19sZW5ndGgpLAorICAgICAgICAgICAgICAgICAgICBt
X291dC5pbnQzMk9uZSksCisgICAgICAgICAgICAgICAgbG93QmxvY2soZGF0YS0+ZmFsbFRocm91
Z2gpLCBsZW5ndGhJczEpOworICAgICAgICAgICAgCisgICAgICAgICAgICBMQmFzaWNCbG9jayBs
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGxlbmd0aElzMSwgbmVlZFJlc29sdXRpb24pOworICAg
ICAgICAgICAgVmVjdG9yPFZhbHVlRnJvbUJsb2NrLCAyPiB2YWx1ZXM7CisgICAgICAgICAgICBM
VmFsdWUgZmFzdFZhbHVlID0gbV9vdXQubG9hZFB0cihzdHJpbmdWYWx1ZSwgbV9oZWFwcy5KU1N0
cmluZ192YWx1ZSk7CisgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKG1fb3V0LmFuY2hvcihmYXN0
VmFsdWUpKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5pc051bGwoZmFzdFZhbHVl
KSwgbmVlZFJlc29sdXRpb24sIHJlc29sdmVkKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8obmVlZFJlc29sdXRpb24sIHJlc29sdmVkKTsKKyAgICAgICAgICAgIHZh
bHVlcy5hcHBlbmQobV9vdXQuYW5jaG9yKAorICAgICAgICAgICAgICAgIHZtQ2FsbChtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uUmVzb2x2ZVJvcGUpLCBtX2NhbGxGcmFtZSwgc3RyaW5nVmFsdWUp
KSk7CisgICAgICAgICAgICBtX291dC5qdW1wKHJlc29sdmVkKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8ocmVzb2x2ZWQsIGlzOEJpdCk7CisgICAgICAgICAgICBM
VmFsdWUgdmFsdWUgPSBtX291dC5waGkobV9vdXQuaW50UHRyLCB2YWx1ZXMpOworICAgICAgICAg
ICAgTFZhbHVlIGNoYXJhY3RlckRhdGEgPSBtX291dC5sb2FkUHRyKHZhbHVlLCBtX2hlYXBzLlN0
cmluZ0ltcGxfZGF0YSk7CisgICAgICAgICAgICBtX291dC5icmFuY2goCisgICAgICAgICAgICAg
ICAgbV9vdXQudGVzdE5vblplcm8zMigKKyAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMy
KHZhbHVlLCBtX2hlYXBzLlN0cmluZ0ltcGxfaGFzaEFuZEZsYWdzKSwKKyAgICAgICAgICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnQzMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkpKSwKKyAgICAg
ICAgICAgICAgICBpczhCaXQsIGlzMTZCaXQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBW
ZWN0b3I8VmFsdWVGcm9tQmxvY2ssIDI+IGNoYXJhY3RlcnM7CisgICAgICAgICAgICBtX291dC5h
cHBlbmRUbyhpczhCaXQsIGlzMTZCaXQpOworICAgICAgICAgICAgY2hhcmFjdGVycy5hcHBlbmQo
bV9vdXQuYW5jaG9yKAorICAgICAgICAgICAgICAgIG1fb3V0Lnplcm9FeHQobV9vdXQubG9hZDgo
Y2hhcmFjdGVyRGF0YSwgbV9oZWFwcy5jaGFyYWN0ZXJzOFswXSksIG1fb3V0LmludDE2KSkpOwor
ICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBtX291dC5hcHBlbmRUbyhpczE2Qml0LCBjb250aW51YXRpb24pOworICAgICAgICAg
ICAgY2hhcmFjdGVycy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmxvYWQxNihjaGFyYWN0ZXJE
YXRhLCBtX2hlYXBzLmNoYXJhY3RlcnMxNlswXSkpKTsKKyAgICAgICAgICAgIG1fb3V0Lmp1bXAo
Y29udGludWF0aW9uKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgICAgICBidWlsZFN3aXRjaChkYXRhLCBt
X291dC5pbnQxNiwgbV9vdXQucGhpKG1fb3V0LmludDE2LCBjaGFyYWN0ZXJzKSk7CiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgfSB9CiAgICAgICAgIAotICAgICAgICBj
YXNlIFN3aXRjaENoYXI6Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIApAQCAtMTYzNiw2ICsxNjk4LDE4IEBAIHByaXZh
dGU6CiAgICAgICAgIHJldHVybiBtX291dC5waGkobV9vdXQuYm9vbGVhbiwgcmVzdWx0cyk7CiAg
ICAgfQogICAgIAorICAgIHZvaWQgYnVpbGRTd2l0Y2goU3dpdGNoRGF0YSogZGF0YSwgTFR5cGUg
dHlwZSwgTFZhbHVlIHN3aXRjaFZhbHVlKQorICAgIHsKKyAgICAgICAgVmVjdG9yPFN3aXRjaENh
c2U+IGNhc2VzOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGF0YS0+Y2FzZXMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKAorICAg
ICAgICAgICAgICAgIGNvbnN0SW50KHR5cGUsIGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN3aXRjaExv
b2t1cFZhbHVlKCkpLAorICAgICAgICAgICAgICAgIGxvd0Jsb2NrKGRhdGEtPmNhc2VzW2ldLnRh
cmdldCkpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9vdXQuc3dpdGNoSW5zdHJ1
Y3Rpb24oc3dpdGNoVmFsdWUsIGNhc2VzLCBsb3dCbG9jayhkYXRhLT5mYWxsVGhyb3VnaCkpOwor
ICAgIH0KKyAgICAKICAgICB2b2lkIHNwZWN1bGF0ZUJhY2t3YXJkKAogICAgICAgICBFeGl0S2lu
ZCBraW5kLCBGb3JtYXR0ZWRWYWx1ZSBsb3dWYWx1ZSwgTm9kZSogaGlnaFZhbHVlLCBMVmFsdWUg
ZmFpbENvbmRpdGlvbikKICAgICB7CkBAIC0xNzQ1LDYgKzE4MTksMTUgQEAgcHJpdmF0ZToKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCisgICAgTFZhbHVlIGxvd1N0cmluZyhF
ZGdlIGVkZ2UsIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgbW9kZSA9IEF1dG9tYXRpY09wZXJhbmRT
cGVjdWxhdGlvbikKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgZWRnZS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlIHx8
IGVkZ2UudXNlS2luZCgpID09IEtub3duU3RyaW5nVXNlKTsKKyAgICAgICAgCisgICAgICAgIExW
YWx1ZSByZXN1bHQgPSBsb3dDZWxsKGVkZ2UsIG1vZGUpOworICAgICAgICBzcGVjdWxhdGVTdHJp
bmcoZWRnZSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCiAg
ICAgTFZhbHVlIGxvd05vbk51bGxPYmplY3QoRWRnZSBlZGdlLCBPcGVyYW5kU3BlY3VsYXRpb25N
b2RlIG1vZGUgPSBBdXRvbWF0aWNPcGVyYW5kU3BlY3VsYXRpb24pCiAgICAgewogICAgICAgICBB
U1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IGVk
Z2UudXNlS2luZCgpID09IE9iamVjdFVzZSk7CkBAIC0xOTMwLDYgKzIwMTMsOSBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIE9iamVjdFVzZToKICAgICAgICAgICAgIHNwZWN1bGF0ZU9iamVjdChl
ZGdlKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0cmluZ1VzZToKKyAgICAg
ICAgICAgIHNwZWN1bGF0ZVN0cmluZyhlZGdlKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFJlYWxOdW1iZXJVc2U6CiAgICAgICAgICAgICBzcGVjdWxhdGVSZWFsTnVtYmVyKGVk
Z2UpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTU2LDEzICsyMDQyLDMzIEBAIHByaXZhdGU6
CiAgICAgICAgIGxvd0NlbGwoZWRnZSk7CiAgICAgfQogICAgIAorICAgIExWYWx1ZSBpc09iamVj
dChMVmFsdWUgY2VsbCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX291dC5ub3RFcXVhbCgKKyAg
ICAgICAgICAgIG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKSwK
KyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHZtKCkuc3RyaW5nU3RydWN0dXJlLmdldCgp
KSk7CisgICAgfQorICAgIAorICAgIExWYWx1ZSBpc05vdFN0cmluZyhMVmFsdWUgY2VsbCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBpc09iamVjdChjZWxsKTsKKyAgICB9CisgICAgCisgICAgTFZh
bHVlIGlzU3RyaW5nKExWYWx1ZSBjZWxsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmVx
dWFsKAorICAgICAgICAgICAgbV9vdXQubG9hZFB0cihjZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1
Y3R1cmUpLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIodm0oKS5zdHJpbmdTdHJ1Y3R1
cmUuZ2V0KCkpKTsKKyAgICB9CisgICAgCisgICAgTFZhbHVlIGlzTm90T2JqZWN0KExWYWx1ZSBj
ZWxsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGlzU3RyaW5nKGNlbGwpOworICAgIH0KKyAgICAK
ICAgICB2b2lkIHNwZWN1bGF0ZU9iamVjdChFZGdlIGVkZ2UsIExWYWx1ZSBjZWxsKQogICAgIHsK
LSAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBqc1ZhbHVlVmFsdWUoY2VsbCks
IGVkZ2UsIFNwZWNPYmplY3QsCi0gICAgICAgICAgICBtX291dC5lcXVhbCgKLSAgICAgICAgICAg
ICAgICBtX291dC5sb2FkUHRyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZSksCi0gICAg
ICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIodm0oKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkp
KSk7CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3Bl
Y09iamVjdCwgaXNOb3RPYmplY3QoY2VsbCkpOwogICAgIH0KICAgICAKICAgICB2b2lkIHNwZWN1
bGF0ZU9iamVjdChFZGdlIGVkZ2UpCkBAIC0xOTcwLDExICsyMDc2LDIxIEBAIHByaXZhdGU6CiAg
ICAgICAgIHNwZWN1bGF0ZU9iamVjdChlZGdlLCBsb3dDZWxsKGVkZ2UpKTsKICAgICB9CiAgICAg
CisgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmcoRWRnZSBlZGdlLCBMVmFsdWUgY2VsbCkKKyAgICB7
CisgICAgICAgIEZUTF9UWVBFX0NIRUNLKGpzVmFsdWVWYWx1ZShjZWxsKSwgZWRnZSwgU3BlY1N0
cmluZywgaXNOb3RTdHJpbmcoY2VsbCkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNwZWN1bGF0
ZVN0cmluZyhFZGdlIGVkZ2UpCisgICAgeworICAgICAgICBzcGVjdWxhdGVTdHJpbmcoZWRnZSwg
bG93Q2VsbChlZGdlKSk7CisgICAgfQorICAgIAogICAgIHZvaWQgc3BlY3VsYXRlTm9uTnVsbE9i
amVjdChFZGdlIGVkZ2UsIExWYWx1ZSBjZWxsKQogICAgIHsKICAgICAgICAgTFZhbHVlIHN0cnVj
dHVyZSA9IG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlKTsKICAg
ICAgICAgRlRMX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBqc1ZhbHVlVmFsdWUoY2VsbCksIGVk
Z2UsIFNwZWNPYmplY3QsCisgICAgICAgICAgICBqc1ZhbHVlVmFsdWUoY2VsbCksIGVkZ2UsIFNw
ZWNPYmplY3QsIAogICAgICAgICAgICAgbV9vdXQuZXF1YWwoc3RydWN0dXJlLCBtX291dC5jb25z
dEludFB0cih2bSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpKTsKICAgICAgICAgaWYgKG1hc3F1
ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SWZJc1N0aWxsVmFsaWQoKSkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTIwMjIsNiArMjEzOCw2MiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAgICAgCisgICAgZW51bSBFeGNlcHRpb25DaGVja01vZGUgeyBOb0V4Y2Vw
dGlvbnMsIENoZWNrRXhjZXB0aW9ucyB9OworICAgIAorICAgIExWYWx1ZSB2bUNhbGwoTFZhbHVl
IGZ1bmN0aW9uLCBFeGNlcHRpb25DaGVja01vZGUgbW9kZSA9IENoZWNrRXhjZXB0aW9ucykKKyAg
ICB7CisgICAgICAgIGNhbGxQcmVmbGlnaHQoKTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1f
b3V0LmNhbGwoZnVuY3Rpb24pOworICAgICAgICBjYWxsQ2hlY2sobW9kZSk7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorICAgIExWYWx1ZSB2bUNhbGwoTFZhbHVlIGZ1bmN0aW9uLCBM
VmFsdWUgYXJnMSwgRXhjZXB0aW9uQ2hlY2tNb2RlIG1vZGUgPSBDaGVja0V4Y2VwdGlvbnMpCisg
ICAgeworICAgICAgICBjYWxsUHJlZmxpZ2h0KCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBt
X291dC5jYWxsKGZ1bmN0aW9uLCBhcmcxKTsKKyAgICAgICAgY2FsbENoZWNrKG1vZGUpOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBMVmFsdWUgdm1DYWxsKExWYWx1ZSBmdW5j
dGlvbiwgTFZhbHVlIGFyZzEsIExWYWx1ZSBhcmcyLCBFeGNlcHRpb25DaGVja01vZGUgbW9kZSA9
IENoZWNrRXhjZXB0aW9ucykKKyAgICB7CisgICAgICAgIGNhbGxQcmVmbGlnaHQoKTsKKyAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmNhbGwoZnVuY3Rpb24sIGFyZzEsIGFyZzIpOworICAg
ICAgICBjYWxsQ2hlY2sobW9kZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAg
IAorICAgIHZvaWQgY2FsbFByZWZsaWdodChDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCisgICAgewor
ICAgICAgICBtX291dC5zdG9yZTMyKAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMigKKyAg
ICAgICAgICAgICAgICBDYWxsRnJhbWU6OkxvY2F0aW9uOjplbmNvZGVBc0NvZGVPcmlnaW5JbmRl
eCgKKyAgICAgICAgICAgICAgICAgICAgY29kZUJsb2NrKCktPmFkZENvZGVPcmlnaW4oY29kZU9y
aWdpbikpKSwgCisgICAgICAgICAgICB0YWdGb3IoSlNTdGFjazo6QXJndW1lbnRDb3VudCkpOwor
ICAgIH0KKyAgICB2b2lkIGNhbGxQcmVmbGlnaHQoKQorICAgIHsKKyAgICAgICAgY2FsbFByZWZs
aWdodChtX25vZGUtPmNvZGVPcmlnaW4pOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNhbGxDaGVj
ayhFeGNlcHRpb25DaGVja01vZGUgbW9kZSA9IENoZWNrRXhjZXB0aW9ucykKKyAgICB7CisgICAg
ICAgIGlmIChtb2RlID09IE5vRXhjZXB0aW9ucykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgCisgICAgICAgIExCYXNpY0Jsb2NrIGRpZEhhdmVFeGNlcHRpb24gPSBGVExfTkVXX0JMT0NL
KG1fb3V0LCAoIkRpZCBoYXZlIGV4Y2VwdGlvbiIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29u
dGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJFeGNlcHRpb24gY2hlY2sgY29udGlu
dWF0aW9uIikpOworICAgICAgICAKKyAgICAgICAgbV9vdXQuYnJhbmNoKAorICAgICAgICAgICAg
bV9vdXQubm90WmVybzY0KG1fb3V0LmxvYWQ2NChtX291dC5hYnNvbHV0ZSgmdm0oKS5leGNlcHRp
b24pKSksCisgICAgICAgICAgICBkaWRIYXZlRXhjZXB0aW9uLCBjb250aW51YXRpb24pOworICAg
ICAgICAKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhkaWRI
YXZlRXhjZXB0aW9uLCBjb250aW51YXRpb24pOworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIGV4
Y2VwdGlvbnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM2MjIK
KyAgICAgICAgbV9vdXQuY3Jhc2goKTsKKyAgICAgICAgCisgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgIH0KKyAgICAKICAgICBib29sIGlzTGl2ZShO
b2RlKiBub2RlKQogICAgIHsKICAgICAgICAgSGFzaE1hcDxOb2RlKiwgdW5zaWduZWQ+OjppdGVy
YXRvciBpdGVyID0gbV90aW1lVG9MaXZlLmZpbmQobm9kZSk7CkBAIC0yMDQ4LDYgKzIyMjAsMTEg
QEAgcHJpdmF0ZToKICAgICAgICAgdXNlKGVkZ2UpOwogICAgIH0KICAgICAKKyAgICBMQmFzaWNC
bG9jayBsb3dCbG9jayhCbG9ja0luZGV4IGJsb2NrSW5kZXgpCisgICAgeworICAgICAgICByZXR1
cm4gbV9ibG9ja3MuZ2V0KG1fZ3JhcGgubV9ibG9ja3NbYmxvY2tJbmRleF0uZ2V0KCkpOworICAg
IH0KKyAgICAKICAgICB2b2lkIGluaXRpYWxpemVPU1JFeGl0U3RhdGVGb3JCbG9jaygpCiAgICAg
ewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3ZhbHVlU291cmNlcy5zaXplKCk7IGktLTsp
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkocmV2aXNpb24gMTUx
NzgwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTA0LDEyICsxMDQsMTIgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICBMVmFs
dWUgcGFyYW0odW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIGdldFBhcmFtKG1fZnVuY3Rpb24sIGlu
ZGV4KTsgfQotICAgIExWYWx1ZSBjb25zdEJvb2woYm9vbCB2YWx1ZSkgeyByZXR1cm4gY29uc3RJ
bnQoYm9vbGVhbiwgdmFsdWUsIFplcm9FeHRlbmQpOyB9Ci0gICAgTFZhbHVlIGNvbnN0SW50OChp
bnQ4X3QgdmFsdWUpIHsgcmV0dXJuIGNvbnN0SW50KGludDgsIHZhbHVlLCBTaWduRXh0ZW5kKTsg
fQotICAgIExWYWx1ZSBjb25zdEludDMyKGludDMyX3QgdmFsdWUpIHsgcmV0dXJuIGNvbnN0SW50
KGludDMyLCB2YWx1ZSwgU2lnbkV4dGVuZCk7IH0KKyAgICBMVmFsdWUgY29uc3RCb29sKGJvb2wg
dmFsdWUpIHsgcmV0dXJuIGNvbnN0SW50KGJvb2xlYW4sIHZhbHVlKTsgfQorICAgIExWYWx1ZSBj
b25zdEludDgoaW50OF90IHZhbHVlKSB7IHJldHVybiBjb25zdEludChpbnQ4LCB2YWx1ZSk7IH0K
KyAgICBMVmFsdWUgY29uc3RJbnQzMihpbnQzMl90IHZhbHVlKSB7IHJldHVybiBjb25zdEludChp
bnQzMiwgdmFsdWUpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBMVmFsdWUgY29u
c3RJbnRQdHIoVCB2YWx1ZSkgeyByZXR1cm4gY29uc3RJbnQoaW50UHRyLCBiaXR3aXNlX2Nhc3Q8
aW50cHRyX3Q+KHZhbHVlKSwgU2lnbkV4dGVuZCk7IH0KLSAgICBMVmFsdWUgY29uc3RJbnQ2NChp
bnQ2NF90IHZhbHVlKSB7IHJldHVybiBjb25zdEludChpbnQ2NCwgdmFsdWUsIFNpZ25FeHRlbmQp
OyB9CisgICAgTFZhbHVlIGNvbnN0SW50UHRyKFQgdmFsdWUpIHsgcmV0dXJuIGNvbnN0SW50KGlu
dFB0ciwgYml0d2lzZV9jYXN0PGludHB0cl90Pih2YWx1ZSkpOyB9CisgICAgTFZhbHVlIGNvbnN0
SW50NjQoaW50NjRfdCB2YWx1ZSkgeyByZXR1cm4gY29uc3RJbnQoaW50NjQsIHZhbHVlKTsgfQog
ICAgIExWYWx1ZSBjb25zdERvdWJsZShkb3VibGUgdmFsdWUpIHsgcmV0dXJuIGNvbnN0UmVhbChk
b3VibGVUeXBlLCB2YWx1ZSk7IH0KICAgICAKICAgICBMVmFsdWUgcGhpKExUeXBlIHR5cGUpIHsg
cmV0dXJuIGJ1aWxkUGhpKG1fYnVpbGRlciwgdHlwZSk7IH0KQEAgLTE5Nyw2ICsxOTcsNyBAQCBw
dWJsaWM6CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBsb2FkOChUeXBlZFBvaW50ZXIgcG9pbnRl
cikgeyByZXR1cm4gbG9hZChwb2ludGVyLCByZWY4KTsgfQorICAgIExWYWx1ZSBsb2FkMTYoVHlw
ZWRQb2ludGVyIHBvaW50ZXIpIHsgcmV0dXJuIGxvYWQocG9pbnRlciwgcmVmMTYpOyB9CiAgICAg
TFZhbHVlIGxvYWQzMihUeXBlZFBvaW50ZXIgcG9pbnRlcikgeyByZXR1cm4gbG9hZChwb2ludGVy
LCByZWYzMik7IH0KICAgICBMVmFsdWUgbG9hZDY0KFR5cGVkUG9pbnRlciBwb2ludGVyKSB7IHJl
dHVybiBsb2FkKHBvaW50ZXIsIHJlZjY0KTsgfQogICAgIExWYWx1ZSBsb2FkUHRyKFR5cGVkUG9p
bnRlciBwb2ludGVyKSB7IHJldHVybiBsb2FkKHBvaW50ZXIsIHJlZlB0cik7IH0KQEAgLTI2Nyw2
ICsyNjgsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBsb2FkOChMVmFsdWUg
YmFzZSwgY29uc3QgQWJzdHJhY3RGaWVsZCYgZmllbGQpIHsgcmV0dXJuIGxvYWQ4KGFkZHJlc3Mo
YmFzZSwgZmllbGQpKTsgfQorICAgIExWYWx1ZSBsb2FkMTYoTFZhbHVlIGJhc2UsIGNvbnN0IEFi
c3RyYWN0RmllbGQmIGZpZWxkKSB7IHJldHVybiBsb2FkMTYoYWRkcmVzcyhiYXNlLCBmaWVsZCkp
OyB9CiAgICAgTFZhbHVlIGxvYWQzMihMVmFsdWUgYmFzZSwgY29uc3QgQWJzdHJhY3RGaWVsZCYg
ZmllbGQpIHsgcmV0dXJuIGxvYWQzMihhZGRyZXNzKGJhc2UsIGZpZWxkKSk7IH0KICAgICBMVmFs
dWUgbG9hZDY0KExWYWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEZpZWxkJiBmaWVsZCkgeyByZXR1
cm4gbG9hZDY0KGFkZHJlc3MoYmFzZSwgZmllbGQpKTsgfQogICAgIExWYWx1ZSBsb2FkUHRyKExW
YWx1ZSBiYXNlLCBjb25zdCBBYnN0cmFjdEZpZWxkJiBmaWVsZCkgeyByZXR1cm4gbG9hZFB0cihh
ZGRyZXNzKGJhc2UsIGZpZWxkKSk7IH0KQEAgLTMwNCw5ICszMDYsMTMgQEAgcHVibGljOgogICAg
IExWYWx1ZSBub3RaZXJvMzIoTFZhbHVlIHZhbHVlKSB7IHJldHVybiBub3RFcXVhbCh2YWx1ZSwg
aW50MzJaZXJvKTsgfQogICAgIExWYWx1ZSBpc1plcm82NChMVmFsdWUgdmFsdWUpIHsgcmV0dXJu
IGVxdWFsKHZhbHVlLCBpbnQ2NFplcm8pOyB9CiAgICAgTFZhbHVlIG5vdFplcm82NChMVmFsdWUg
dmFsdWUpIHsgcmV0dXJuIG5vdEVxdWFsKHZhbHVlLCBpbnQ2NFplcm8pOyB9CisgICAgTFZhbHVl
IGlzTnVsbChMVmFsdWUgdmFsdWUpIHsgcmV0dXJuIGVxdWFsKHZhbHVlLCBpbnRQdHJaZXJvKTsg
fQorICAgIExWYWx1ZSBub3ROdWxsKExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gbm90RXF1YWwodmFs
dWUsIGludFB0clplcm8pOyB9CiAgICAgCiAgICAgTFZhbHVlIHRlc3RJc1plcm84KExWYWx1ZSB2
YWx1ZSwgTFZhbHVlIG1hc2spIHsgcmV0dXJuIGlzWmVybzgoYml0QW5kKHZhbHVlLCBtYXNrKSk7
IH0KICAgICBMVmFsdWUgdGVzdE5vblplcm84KExWYWx1ZSB2YWx1ZSwgTFZhbHVlIG1hc2spIHsg
cmV0dXJuIG5vdFplcm84KGJpdEFuZCh2YWx1ZSwgbWFzaykpOyB9CisgICAgTFZhbHVlIHRlc3RJ
c1plcm8zMihMVmFsdWUgdmFsdWUsIExWYWx1ZSBtYXNrKSB7IHJldHVybiBpc1plcm8zMihiaXRB
bmQodmFsdWUsIG1hc2spKTsgfQorICAgIExWYWx1ZSB0ZXN0Tm9uWmVybzMyKExWYWx1ZSB2YWx1
ZSwgTFZhbHVlIG1hc2spIHsgcmV0dXJuIG5vdFplcm8zMihiaXRBbmQodmFsdWUsIG1hc2spKTsg
fQogICAgIExWYWx1ZSB0ZXN0SXNaZXJvNjQoTFZhbHVlIHZhbHVlLCBMVmFsdWUgbWFzaykgeyBy
ZXR1cm4gaXNaZXJvNjQoYml0QW5kKHZhbHVlLCBtYXNrKSk7IH0KICAgICBMVmFsdWUgdGVzdE5v
blplcm82NChMVmFsdWUgdmFsdWUsIExWYWx1ZSBtYXNrKSB7IHJldHVybiBub3RaZXJvNjQoYml0
QW5kKHZhbHVlLCBtYXNrKSk7IH0KICAgICAKQEAgLTMxOSw2ICszMjUsMTIgQEAgcHVibGljOgog
ICAgIExWYWx1ZSBjYWxsKExWYWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEpIHsgcmV0dXJuIGJ1
aWxkQ2FsbChtX2J1aWxkZXIsIGZ1bmN0aW9uLCBhcmcxKTsgfQogICAgIExWYWx1ZSBjYWxsKExW
YWx1ZSBmdW5jdGlvbiwgTFZhbHVlIGFyZzEsIExWYWx1ZSBhcmcyKSB7IHJldHVybiBidWlsZENh
bGwobV9idWlsZGVyLCBmdW5jdGlvbiwgYXJnMSwgYXJnMik7IH0KICAgICAKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGU+CisgICAgTFZhbHVlIG9wZXJhdGlvbihGdW5jdGlvblR5
cGUgZnVuY3Rpb24pCisgICAgeworICAgICAgICByZXR1cm4gaW50VG9QdHIoY29uc3RJbnRQdHIo
ZnVuY3Rpb24pLCBwb2ludGVyVHlwZShvcGVyYXRpb25UeXBlKGZ1bmN0aW9uKSkpOworICAgIH0K
KyAgICAKICAgICBMVmFsdWUgY29udmVydFRvVGFpbENhbGwoTFZhbHVlIGNhbGwpCiAgICAgewog
ICAgICAgICBzZXRUYWlsQ2FsbChjYWxsLCBJc1RhaWxDYWxsKTsKQEAgLTMzMyw2ICszNDUsMTIg
QEAgcHVibGljOgogICAgIAogICAgIHZvaWQgdW5yZWFjaGFibGUoKSB7IGJ1aWxkVW5yZWFjaGFi
bGUobV9idWlsZGVyKTsgfQogICAgIAorICAgIHZvaWQgY3Jhc2goKQorICAgIHsKKyAgICAgICAg
Y2FsbChpbnRUb1B0cihjb25zdEludFB0cihhYm9ydCksIHBvaW50ZXJUeXBlKGZ1bmN0aW9uVHlw
ZSh2b2lkVHlwZSkpKSk7CisgICAgICAgIHVucmVhY2hhYmxlKCk7CisgICAgfQorICAgIAogICAg
IFZhbHVlRnJvbUJsb2NrIGFuY2hvcihMVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1
cm4gVmFsdWVGcm9tQmxvY2sodmFsdWUsIG1fYmxvY2spOwo=
</data>
<flag name="review"
          id="226588"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>