<?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>141440</bug_id>
          
          <creation_ts>2015-02-10 12:57:51 -0800</creation_ts>
          <short_desc>op_call_varargs should only load the length once</short_desc>
          <delta_ts>2015-12-08 14:21:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>141332</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>bfulgham</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1068116</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-10 12:57:51 -0800</bug_when>
    <thetext>I believe this is a spec compliance issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068120</commentid>
    <comment_count>1</comment_count>
      <attachid>246337</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-10 13:04:48 -0800</bug_when>
    <thetext>Created attachment 246337
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068149</commentid>
    <comment_count>2</comment_count>
      <attachid>246342</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-10 14:54:50 -0800</bug_when>
    <thetext>Created attachment 246342
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068158</commentid>
    <comment_count>3</comment_count>
      <attachid>246342</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-02-10 15:10:32 -0800</bug_when>
    <thetext>Comment on attachment 246342
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068162</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-10 15:17:01 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/179887</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246337</attachid>
            <date>2015-02-10 13:04:48 -0800</date>
            <delta_ts>2015-02-10 14:54:50 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>32593</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAkocmV2aXNpb24gMTc5ODc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAsIDIwMTIsIDIwMTMsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5
LCAyMDEwLCAyMDEyLCAyMDEzLCAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDYW1lcm9uIFp3YXJpY2ggPGN3endhcmljaEB1
d2F0ZXJsb28uY2E+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMzQsMTUzICsxMzQsNzYgQEAgSlNW
YWx1ZSBldmFsKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIHJldHVybiBpbnRlcnByZXRlci0+
ZXhlY3V0ZShldmFsLCBjYWxsRnJhbWUsIHRoaXNWYWx1ZSwgY2FsbGVyU2NvcGVDaGFpbik7CiB9
CiAKLUNhbGxGcmFtZSogc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
SlNTdGFjayogc3RhY2ssIEpTVmFsdWUgYXJndW1lbnRzLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tT
bG90cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpCit1bnNpZ25lZCBzaXplRnJhbWVGb3JW
YXJhcmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1N0YWNrKiBzdGFjaywgSlNWYWx1ZSBhcmd1
bWVudHMsIHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09m
ZnNldCkKIHsKLSAgICBpZiAoIWFyZ3VtZW50cykgeyAvLyBmLmFwcGx5KHgsIGFyZ3VtZW50cyks
IHdpdGggYXJndW1lbnRzIHVubW9kaWZpZWQuCi0gICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygp
OwotICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPiBmaXJzdFZhckFyZ09m
ZnNldCkKLSAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC09IGZpcnN0VmFy
QXJnT2Zmc2V0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyA9IDE7Ci0gICAgICAgIHVuc2lnbmVkIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0ID0g
V1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG51bVVz
ZWRTdGFja1Nsb3RzICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBKU1N0YWNrOjpDYWxs
RnJhbWVIZWFkZXJTaXplKTsKLSAgICAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxs
RnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVP
ZmZzZXQpOwotICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPiBBcmd1bWVu
dHM6Ok1heEFyZ3VtZW50cyArIDEgfHwgIXN0YWNrLT5lbnN1cmVDYXBhY2l0eUZvcihuZXdDYWxs
RnJhbWUtPnJlZ2lzdGVycygpKSkgewotICAgICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJy
b3IoY2FsbEZyYW1lKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBuZXdDYWxsRnJhbWU7Ci0gICAgfQotCi0gICAgaWYgKGFyZ3VtZW50cy5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzID0gMTsKLSAgICAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgIG51bVVzZWRT
dGFja1Nsb3RzICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBKU1N0YWNrOjpDYWxsRnJh
bWVIZWFkZXJTaXplKTsKLSAgICAgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJh
bWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVycygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVPZmZz
ZXQpOwotICAgICAgICBpZiAoIXN0YWNrLT5lbnN1cmVDYXBhY2l0eUZvcihuZXdDYWxsRnJhbWUt
PnJlZ2lzdGVycygpKSkgewotICAgICAgICAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoY2Fs
bEZyYW1lKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBuZXdDYWxsRnJhbWU7Ci0gICAgfQotCi0gICAgaWYgKCFhcmd1bWVudHMuaXNPYmplY3QoKSkg
eworICAgIHVuc2lnbmVkIGxlbmd0aDsKKyAgICBpZiAoIWFyZ3VtZW50cykKKyAgICAgICAgbGVu
Z3RoID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOworICAgIGVsc2Ug
aWYgKGFyZ3VtZW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICBsZW5ndGggPSAwOwor
ICAgIGVsc2UgaWYgKCFhcmd1bWVudHMuaXNPYmplY3QoKSkgewogICAgICAgICBjYWxsRnJhbWUt
PnZtKCkudGhyb3dFeGNlcHRpb24oY2FsbEZyYW1lLCBjcmVhdGVJbnZhbGlkUGFyYW1ldGVyRXJy
b3IoY2FsbEZyYW1lLCAiRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5IiwgYXJndW1lbnRzKSk7CiAg
ICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChhc09iamVjdChhcmd1bWVudHMpLT5j
bGFzc0luZm8oKSA9PSBBcmd1bWVudHM6OmluZm8oKSkgewotICAgICAgICBBcmd1bWVudHMqIGFy
Z3NPYmplY3QgPSBhc0FyZ3VtZW50cyhhcmd1bWVudHMpOwotICAgICAgICB1bnNpZ25lZCBhcmdD
b3VudCA9IGFyZ3NPYmplY3QtPmxlbmd0aChjYWxsRnJhbWUpOwotICAgICAgICBpZiAoYXJnQ291
bnQgPj0gZmlyc3RWYXJBcmdPZmZzZXQpCi0gICAgICAgICAgICBhcmdDb3VudCAtPSBmaXJzdFZh
ckFyZ09mZnNldDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXJnQ291bnQgPSAwOwotICAg
ICAgICB1bnNpZ25lZCBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCA9IFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBudW1Vc2VkU3RhY2tTbG90cyArIGFy
Z0NvdW50ICsgMSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpOwotICAgICAgICBDYWxs
RnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0
ZXJzKCkgLSBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCk7Ci0gICAgICAgIGlmIChhcmdDb3VudCA+
IEFyZ3VtZW50czo6TWF4QXJndW1lbnRzIHx8ICFzdGFjay0+ZW5zdXJlQ2FwYWNpdHlGb3IobmV3
Q2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkpIHsKLSAgICAgICAgICAgIHRocm93U3RhY2tPdmVyZmxv
d0Vycm9yKGNhbGxGcmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwotICAgIH0KLQotICAgIGlmIChpc0pTQXJyYXkoYXJn
dW1lbnRzKSkgewotICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkoYXJndW1lbnRzKTsK
LSAgICAgICAgdW5zaWduZWQgYXJnQ291bnQgPSBhcnJheS0+bGVuZ3RoKCk7Ci0gICAgICAgIGlm
IChhcmdDb3VudCA+PSBmaXJzdFZhckFyZ09mZnNldCkKLSAgICAgICAgICAgIGFyZ0NvdW50IC09
IGZpcnN0VmFyQXJnT2Zmc2V0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcmdDb3VudCA9
IDA7Ci0gICAgICAgIHVuc2lnbmVkIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIG51bVVzZWRTdGFja1Ns
b3RzICsgYXJnQ291bnQgKyAxICsgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSk7Ci0gICAg
ICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1l
LT5yZWdpc3RlcnMoKSAtIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0KTsKLSAgICAgICAgaWYgKGFy
Z0NvdW50ID4gQXJndW1lbnRzOjpNYXhBcmd1bWVudHMgfHwgIXN0YWNrLT5lbnN1cmVDYXBhY2l0
eUZvcihuZXdDYWxsRnJhbWUtPnJlZ2lzdGVycygpKSkgewotICAgICAgICAgICAgdGhyb3dTdGFj
a092ZXJmbG93RXJyb3IoY2FsbEZyYW1lKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci0gICAgfQotCi0gICAgSlNPYmplY3Qq
IGFyZ09iamVjdCA9IGFzT2JqZWN0KGFyZ3VtZW50cyk7Ci0gICAgdW5zaWduZWQgYXJnQ291bnQg
PSBhcmdPYmplY3QtPmdldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCkudG9VSW50MzIoY2FsbEZyYW1lKTsKLSAgICBpZiAoYXJnQ291bnQgPj0gZmlyc3RWYXJB
cmdPZmZzZXQpCi0gICAgICAgIGFyZ0NvdW50IC09IGZpcnN0VmFyQXJnT2Zmc2V0OworICAgIH0g
ZWxzZSBpZiAoYXNPYmplY3QoYXJndW1lbnRzKS0+Y2xhc3NJbmZvKCkgPT0gQXJndW1lbnRzOjpp
bmZvKCkpCisgICAgICAgIGxlbmd0aCA9IGFzQXJndW1lbnRzKGFyZ3VtZW50cyktPmxlbmd0aChj
YWxsRnJhbWUpOworICAgIGVsc2UgaWYgKGlzSlNBcnJheShhcmd1bWVudHMpKQorICAgICAgICBs
ZW5ndGggPSBhc0FycmF5KGFyZ3VtZW50cyktPmxlbmd0aCgpOworICAgIGVsc2UKKyAgICAgICAg
bGVuZ3RoID0gYXNPYmplY3QoYXJndW1lbnRzKS0+Z2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5w
cm9wZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMigpOworICAgIAorICAgIGlmIChsZW5ndGgg
Pj0gZmlyc3RWYXJBcmdPZmZzZXQpCisgICAgICAgIGxlbmd0aCAtPSBmaXJzdFZhckFyZ09mZnNl
dDsKICAgICBlbHNlCi0gICAgICAgIGFyZ0NvdW50ID0gMDsKLSAgICB1bnNpZ25lZCBwYWRkZWRD
YWxsZWVGcmFtZU9mZnNldCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVu
dFJlZ2lzdGVycygpLCBudW1Vc2VkU3RhY2tTbG90cyArIGFyZ0NvdW50ICsgMSArIEpTU3RhY2s6
OkNhbGxGcmFtZUhlYWRlclNpemUpOwotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ2Fs
bEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAtIHBhZGRlZENhbGxlZUZyYW1l
T2Zmc2V0KTsKLSAgICBpZiAoYXJnQ291bnQgPiBBcmd1bWVudHM6Ok1heEFyZ3VtZW50cyB8fCAh
c3RhY2stPmVuc3VyZUNhcGFjaXR5Rm9yKG5ld0NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7Cisg
ICAgICAgIGxlbmd0aCA9IDA7CisgICAgCisgICAgQ2FsbEZyYW1lKiBjYWxsZWVGcmFtZSA9IGNh
bGxlZUZyYW1lRm9yVmFyYXJncyhjYWxsRnJhbWUsIG51bVVzZWRTdGFja1Nsb3RzLCBsZW5ndGgg
KyAxKTsKKyAgICBpZiAobGVuZ3RoID4gQXJndW1lbnRzOjpNYXhBcmd1bWVudHMgfHwgIXN0YWNr
LT5lbnN1cmVDYXBhY2l0eUZvcihjYWxsZWVGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7CiAgICAgICAg
IHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KLSAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOworICAgIAorICAgIHJldHVybiBsZW5ndGg7
CiB9CiAKLXZvaWQgbG9hZFZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFZpcnR1YWxSZWdp
c3RlciBmaXJzdEVsZW1lbnREZXN0LCBWaXJ0dWFsUmVnaXN0ZXIgY291bnREZXN0LCBKU1ZhbHVl
IGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpCit2b2lkIGxvYWRWYXJhcmdz
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIgZmlyc3RFbGVtZW50RGVzdCwg
SlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IG9mZnNldCwgdWludDMyX3QgbGVuZ3RoKQogewog
ICAgIGlmICghYXJndW1lbnRzKSB7IC8vIGYuYXBwbHkoeCwgYXJndW1lbnRzKSwgd2l0aCBhcmd1
bWVudHMgdW5tb2RpZmllZC4KLSAgICAgICAgdW5zaWduZWQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0gICAgICAg
IGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA+IGZpcnN0VmFyQXJnT2Zmc2V0KQotICAg
ICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgLT0gZmlyc3RWYXJBcmdPZmZzZXQ7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0g
MTsKLSAgICAgICAgY2FsbEZyYW1lLT5yKGNvdW50RGVzdCkucGF5bG9hZCgpID0gYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdFZhckFyZ09m
ZnNldDsgaSA8IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOyArK2kpCi0gICAgICAgICAgICBj
YWxsRnJhbWUtPnIoZmlyc3RFbGVtZW50RGVzdCArIGkgLSBmaXJzdFZhckFyZ09mZnNldCkgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50QWZ0ZXJDYXB0dXJlKGkpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGZpcnN0RWxl
bWVudERlc3QgKyBpKSA9IGNhbGxGcmFtZS0+YXJndW1lbnRBZnRlckNhcHR1cmUoaSArIG9mZnNl
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgaWYgKGFyZ3VtZW50cy5pc1Vu
ZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAgIGNhbGxGcmFtZS0+cihjb3VudERlc3QpLnBheWxv
YWQoKSA9IDE7CisgICAgaWYgKGFyZ3VtZW50cy5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgfQogICAgIAogICAgIGlmIChhc09iamVjdChhcmd1bWVudHMpLT5jbGFz
c0luZm8oKSA9PSBBcmd1bWVudHM6OmluZm8oKSkgewotICAgICAgICBBcmd1bWVudHMqIGFyZ3NP
YmplY3QgPSBhc0FyZ3VtZW50cyhhcmd1bWVudHMpOwotICAgICAgICB1bnNpZ25lZCBhcmdDb3Vu
dCA9IGFyZ3NPYmplY3QtPmxlbmd0aChjYWxsRnJhbWUpOwotICAgICAgICBpZiAoYXJnQ291bnQg
Pj0gZmlyc3RWYXJBcmdPZmZzZXQpIHsKLSAgICAgICAgICAgIGFyZ0NvdW50IC09IGZpcnN0VmFy
QXJnT2Zmc2V0OwotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGNvdW50RGVzdCkucGF5bG9hZCgp
ID0gYXJnQ291bnQgKyAxOwotICAgICAgICAgICAgYXJnc09iamVjdC0+Y29weVRvQXJndW1lbnRz
KGNhbGxGcmFtZSwgZmlyc3RFbGVtZW50RGVzdCwgYXJnQ291bnQsIGZpcnN0VmFyQXJnT2Zmc2V0
KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjYWxsRnJhbWUtPnIoY291bnREZXN0KS5w
YXlsb2FkKCkgPSAxOworICAgICAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHMpLT5jb3B5VG9Bcmd1
bWVudHMoY2FsbEZyYW1lLCBmaXJzdEVsZW1lbnREZXN0LCBvZmZzZXQsIGxlbmd0aCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAgaWYgKGlzSlNBcnJheShhcmd1bWVudHMpKSB7
Ci0gICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheShhcmd1bWVudHMpOwotICAgICAgICB1
bnNpZ25lZCBhcmdDb3VudCA9IGFycmF5LT5sZW5ndGgoKTsKLSAgICAgICAgaWYgKGFyZ0NvdW50
ID49IGZpcnN0VmFyQXJnT2Zmc2V0KSB7Ci0gICAgICAgICAgICBhcmdDb3VudCAtPSBmaXJzdFZh
ckFyZ09mZnNldDsKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+cihjb3VudERlc3QpLnBheWxvYWQo
KSA9IGFyZ0NvdW50ICsgMTsKLSAgICAgICAgICAgIGFycmF5LT5jb3B5VG9Bcmd1bWVudHMoY2Fs
bEZyYW1lLCBmaXJzdEVsZW1lbnREZXN0LCBhcmdDb3VudCwgZmlyc3RWYXJBcmdPZmZzZXQpOwot
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+cihjb3VudERlc3QpLnBheWxv
YWQoKSA9IDE7CisgICAgICAgIGFzQXJyYXkoYXJndW1lbnRzKS0+Y29weVRvQXJndW1lbnRzKGNh
bGxGcmFtZSwgZmlyc3RFbGVtZW50RGVzdCwgb2Zmc2V0LCBsZW5ndGgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAogICAgIEpTT2JqZWN0KiBhcmdPYmplY3QgPSBhc09iamVjdChhcmd1
bWVudHMpOwotICAgIHVuc2lnbmVkIGFyZ0NvdW50ID0gYXJnT2JqZWN0LT5nZXQoY2FsbEZyYW1l
LCBjYWxsRnJhbWUtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpLnRvVUludDMyKGNhbGxGcmFtZSk7
Ci0gICAgaWYgKGFyZ0NvdW50ID49IGZpcnN0VmFyQXJnT2Zmc2V0KSB7Ci0gICAgICAgIGFyZ0Nv
dW50IC09IGZpcnN0VmFyQXJnT2Zmc2V0OwotICAgICAgICBjYWxsRnJhbWUtPnIoY291bnREZXN0
KS5wYXlsb2FkKCkgPSBhcmdDb3VudCArIDE7Ci0gICAgfSBlbHNlCi0gICAgICAgIGNhbGxGcmFt
ZS0+cihjb3VudERlc3QpLnBheWxvYWQoKSA9IDE7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGFyZ0NvdW50OyArK2kpIHsKLSAgICAgICAgY2FsbEZyYW1lLT5yKGZpcnN0RWxlbWVudERl
c3QgKyBpKSA9IGFzT2JqZWN0KGFyZ3VtZW50cyktPmdldChjYWxsRnJhbWUsIGkgKyBmaXJzdFZh
ckFyZ09mZnNldCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7
CisgICAgICAgIGNhbGxGcmFtZS0+cihmaXJzdEVsZW1lbnREZXN0ICsgaSkgPSBhc09iamVjdChh
cmd1bWVudHMpLT5nZXQoY2FsbEZyYW1lLCBpICsgb2Zmc2V0KTsKICAgICAgICAgaWYgKFVOTElL
RUxZKGNhbGxGcmFtZS0+dm0oKS5leGNlcHRpb24oKSkpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgfQogfQogCi12b2lkIHNldHVwVmFyYXJnc0ZyYW1lKENhbGxGcmFtZSogY2FsbEZyYW1lLCBD
YWxsRnJhbWUqIG5ld0NhbGxGcmFtZSwgSlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0
VmFyQXJnT2Zmc2V0KQordm9pZCBzZXR1cFZhcmFyZ3NGcmFtZShDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBv
ZmZzZXQsIHVpbnQzMl90IGxlbmd0aCkKIHsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlRnJh
bWVPZmZzZXQobmV3Q2FsbEZyYW1lIC0gY2FsbEZyYW1lKTsKICAgICAKICAgICBsb2FkVmFyYXJn
cygKICAgICAgICAgY2FsbEZyYW1lLAogICAgICAgICBjYWxsZWVGcmFtZU9mZnNldCArIENhbGxG
cmFtZTo6YXJndW1lbnRPZmZzZXQoMCksCi0gICAgICAgIGNhbGxlZUZyYW1lT2Zmc2V0ICsgSlNT
dGFjazo6QXJndW1lbnRDb3VudCwKLSAgICAgICAgYXJndW1lbnRzLCBmaXJzdFZhckFyZ09mZnNl
dCk7CisgICAgICAgIGFyZ3VtZW50cywgb2Zmc2V0LCBsZW5ndGgpOworICAgIAorICAgIG5ld0Nh
bGxGcmFtZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMobGVuZ3RoICsgMSk7CiB9CiAK
IHZvaWQgc2V0dXBWYXJhcmdzRnJhbWVBbmRTZXRUaGlzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBD
YWxsRnJhbWUqIG5ld0NhbGxGcmFtZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIEpTVmFsdWUgYXJndW1l
bnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxNzk4NzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJMTEludERhdGEu
aCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlci5oIgorI2lu
Y2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTI5OCw3ICsyOTksMTYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqKTsKLSAg
ICBDYWxsRnJhbWUqIHNpemVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiBleGVjLCBKU1N0YWNr
KiwgSlNWYWx1ZSBhcmd1bWVudHMsIHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzLCB1aW50MzJf
dCBmaXJzdFZhckFyZ09mZnNldCk7CisKKyAgICBpbmxpbmUgQ2FsbEZyYW1lKiBjYWxsZWVGcmFt
ZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIHVuc2lnbmVkIG51bVVzZWRTdGFja1Ns
b3RzLCB1bnNpZ25lZCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcykKKyAgICB7CisgICAgICAg
IHVuc2lnbmVkIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0ID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBs
ZU9mKAorICAgICAgICAgICAgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwKKyAgICAgICAgICAg
IG51bVVzZWRTdGFja1Nsb3RzICsgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgKyBKU1N0YWNr
OjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKKyAgICAgICAgcmV0dXJuIENhbGxGcmFtZTo6Y3JlYXRl
KGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgLSBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCk7CisgICAg
fQorCisgICAgdW5zaWduZWQgc2l6ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUqIGV4ZWMsIEpT
U3RhY2sqLCBKU1ZhbHVlIGFyZ3VtZW50cywgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVp
bnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KTsKICAgICB2b2lkIGxvYWRWYXJhcmdzKENhbGxGcmFt
ZSogZXhlY0NhbGxlciwgVmlydHVhbFJlZ2lzdGVyIGZpcnN0RWxlbWVudERlc3QsIFZpcnR1YWxS
ZWdpc3RlciBjb3VudERlc3QsIEpTVmFsdWUgc291cmNlLCB1aW50MzJfdCBvZmZzZXQpOwogICAg
IHZvaWQgc2V0dXBWYXJhcmdzRnJhbWUoQ2FsbEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUq
IGV4ZWNDYWxsZWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNl
dCk7CiAgICAgdm9pZCBzZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMoQ2FsbEZyYW1lKiBleGVj
Q2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVl
IGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCShyZXZpc2lvbiAxNzk4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NzksNyArNjc5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVy
YXRpb25fRUwsIFRydXN0ZWRJbW1QdHIpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdCwgU3RydWN0dXJlKik7CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVosIGludDMy
X3QpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZfSklUT3Bl
cmF0aW9uX0VKWlosIEdQUlJlZywgaW50MzJfdCwgaW50MzJfdCk7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oWl9KSVRPcGVyYXRpb25fRUpaWiwgR1BSUmVnLCBp
bnQzMl90LCBpbnQzMl90KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FLCBpbnQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VBYXBKLCBpbnQsIEFycmF5QWxsb2NhdGlv
blByb2ZpbGUqLCBHUFJSZWcpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfSklUT3BlcmF0aW9uX0VBYXBKY3BaLCBpbnQsIEFycmF5QWxsb2NhdGlvblByb2Zp
bGUqLCBHUFJSZWcsIGludDMyX3QpOwpAQCAtNzMwLDcgKzczMCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogI2VuZGlmCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRUpJZEpKLCBSZWdpc3RlcklELCBjb25zdCBJZGVudGlmaWVyKiwgUmVnaXN0
ZXJJRCwgUmVnaXN0ZXJJRCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihGX0pJVE9wZXJhdGlvbl9FRkpaLCBSZWdpc3RlcklE
LCBSZWdpc3RlcklELCBpbnQzMl90KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihGX0pJVE9wZXJhdGlvbl9FRkpaWiwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwg
aW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRVNzaUpKSSwgU3RydWN0dXJlU3R1YkluZm8qLCBSZWdpc3RlcklELCBSZWdp
c3RlcklELCBTdHJpbmdJbXBsKik7CiAjZWxzZQogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VTc2lKSkksIFN0cnVjdHVyZVN0dWJJbmZv
KiwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgU3RyaW5n
SW1wbCopOwpAQCAtNzQ1LDggKzc0NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNl
cHRpb24oVl9KSVRPcGVyYXRpb25fRUNiLCBDb2RlQmxvY2sqKTsKICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbldpdGhDYWxsRnJhbWVSb2xsYmFja09uRXhjZXB0aW9u
KFpfSklUT3BlcmF0aW9uX0UpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRl9KSVRPcGVyYXRpb25fRUZKWiwgUmVnaXN0
ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgaW50MzJfdCk7Ci0gICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRl9KSVRPcGVyYXRpb25fRUpaWiwgR1BSUmVnLCBH
UFJSZWcsIGludDMyX3QsIGludDMyX3QpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VGSlpaLCBSZWdpc3RlcklELCBSZWdpc3RlcklE
LCBSZWdpc3RlcklELCBpbnQzMl90KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihaX0pJVE9wZXJhdGlvbl9FSlpaLCBHUFJSZWcsIEdQUlJlZywgaW50MzJfdCwg
aW50MzJfdCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRUFhcEosIGludCwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSosIEdQUlJlZywg
R1BSUmVnKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FSiwgaW50LCBHUFJSZWcsIEdQUlJlZyk7CiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpJZGMsIGludCwgR1BSUmVn
LCBHUFJSZWcsIGNvbnN0IElkZW50aWZpZXIqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsLmNwcAkocmV2aXNpb24gMTc5ODc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsOSArODAsMTEgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVTZXR1cFZhcmFyZ3NGcmFtZShJbnN0cgogCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3Rlcihhcmd1bWVudHMsIHJlZ1QxKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNp
emVGcmFtZUZvclZhcmFyZ3MsIHJlZ1QxLCAtZmlyc3RGcmVlUmVnaXN0ZXIsIGZpcnN0VmFyQXJn
T2Zmc2V0KTsKLSAgICBtb3ZlKHJldHVyblZhbHVlR1BSLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7
Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMsIHJlZ1QxKTsKLSAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lLCByZXR1cm5WYWx1ZUdQUiwgcmVn
VDEsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMigtZmlyc3RGcmVl
UmVnaXN0ZXIpLCByZWdUMSk7CisgICAgZW1pdFNldFZhcmFyZ3NGcmFtZSgqdGhpcywgcmV0dXJu
VmFsdWVHUFIsIHJlZ1QxLCByZWdUMSk7CisgICAgbW92ZShyZWdUMSwgc3RhY2tQb2ludGVyUmVn
aXN0ZXIpOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzLCByZWdUMik7Cisg
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZSwgcmVnVDEsIHJlZ1Qy
LCBmaXJzdFZhckFyZ09mZnNldCwgcmVnVDApOwogICAgIG1vdmUocmV0dXJuVmFsdWVHUFIsIHJl
Z1QxKTsKIAogICAgIGlmIChjYW5PcHRpbWl6ZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAxNzk4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDE1ICszNjksMTUgQEAg
QUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OgogCiAKICNpZiBVU0UoSlNW
QUxVRTY0KQotQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVy
YXRpb24oRl9KSVRPcGVyYXRpb25fRUpaWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBpbnQzMl90
IGFyZzIsIGludDMyX3QgYXJnMykKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
SklUOjpjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0VKWlogb3BlcmF0aW9uLCBHUFJSZWcg
YXJnMSwgaW50MzJfdCBhcmcyLCBpbnQzMl90IGFyZzMpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW0zMihhcmcyKSwgVHJ1c3RlZEltbTMyKGFyZzMp
KTsKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVyYXRpb24pOwog
fQogCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlv
bihGX0pJVE9wZXJhdGlvbl9FRkpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBpbnQzMl90IGFyZzMpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6
Y2FsbE9wZXJhdGlvbihGX0pJVE9wZXJhdGlvbl9FRkpaWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgaW50MzJfdCBhcmczLCBHUFJSZWcgYXJnNCkKIHsKLSAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgVHJ1c3RlZEltbTMyKGFyZzMpKTsKKyAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgVHJ1c3RlZEltbTMyKGFy
ZzMpLCBhcmc0KTsKICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVjayhvcGVy
YXRpb24pOwogfQogCkBAIC01MTYsMTUgKzUxNiwxNSBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNz
ZW1ibGVyOjpDYWxsIEpJVDo6CiAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKIH0K
IAotQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24o
Rl9KSVRPcGVyYXRpb25fRUpaWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJn
MVBheWxvYWQsIGludDMyX3QgYXJnMiwgaW50MzJfdCBhcmczKQorQUxXQVlTX0lOTElORSBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oWl9KSVRPcGVyYXRpb25fRUpaWiBv
cGVyYXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIGludDMyX3QgYXJn
MiwgaW50MzJfdCBhcmczKQogewogICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJ
XzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgVHJ1c3RlZEltbTMyKGFyZzIp
LCBUcnVzdGVkSW1tMzIoYXJnMykpOwogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlv
bkNoZWNrKG9wZXJhdGlvbik7CiB9CiAKLUFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgSklUOjpjYWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VGSlogb3BlcmF0aW9uLCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgaW50MzJfdCBhcmcz
KQorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24o
Rl9KSVRPcGVyYXRpb25fRUZKWlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJU
YWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgaW50MzJfdCBhcmczLCBHUFJSZWcgYXJnNCkKIHsKLSAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMlBheWxvYWQsIGFyZzJUYWcs
IFRydXN0ZWRJbW0zMihhcmczKSk7CisgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBUcnVzdGVkSW1tMzIoYXJnMyksIGFyZzQpOwogICAg
IHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlvbik7CiB9CiAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJl
dmlzaW9uIDE3OTg3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MDQsMjIgKzE2MDQsMjEgQEAgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25JbgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNCb29sZWFuKHJlc3VsdCkpOwogfQogCi1DYWxsRnJhbWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uU2l6ZUZyYW1lRm9yVmFyYXJncyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRBcmd1bWVudHMsIGludDMyX3QgbnVtVXNlZFN0YWNrU2xvdHMsIGludDMyX3QgZmlyc3RW
YXJBcmdPZmZzZXQpCitpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2l6ZUZyYW1lRm9y
VmFyYXJncyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcmd1bWVudHMs
IGludDMyX3QgbnVtVXNlZFN0YWNrU2xvdHMsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpCiB7
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKCZ2bSwgZXhlYyk7CiAgICAgSlNTdGFjayogc3RhY2sgPSAmZXhlYy0+aW50ZXJwcmV0ZXIo
KS0+c3RhY2soKTsKICAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkQXJndW1lbnRzKTsKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IHNpemVGcmFtZUZv
clZhcmFyZ3MoZXhlYywgc3RhY2ssIGFyZ3VtZW50cywgbnVtVXNlZFN0YWNrU2xvdHMsIGZpcnN0
VmFyQXJnT2Zmc2V0KTsKLSAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOworICAgIHJldHVybiBzaXpl
RnJhbWVGb3JWYXJhcmdzKGV4ZWMsIHN0YWNrLCBhcmd1bWVudHMsIG51bVVzZWRTdGFja1Nsb3Rz
LCBmaXJzdFZhckFyZ09mZnNldCk7CiB9CiAKLUNhbGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVy
YXRpb25TZXR1cFZhcmFyZ3NGcmFtZShFeGVjU3RhdGUqIGV4ZWMsIENhbGxGcmFtZSogbmV3Q2Fs
bEZyYW1lLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQXJndW1lbnRzLCBpbnQzMl90IGZpcnN0VmFy
QXJnT2Zmc2V0KQorQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNldHVwVmFyYXJn
c0ZyYW1lKEV4ZWNTdGF0ZSogZXhlYywgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRBcmd1bWVudHMsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIGludDMy
X3QgbGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwogICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRBcmd1bWVudHMpOwotICAgIHNldHVwVmFyYXJnc0ZyYW1lKGV4
ZWMsIG5ld0NhbGxGcmFtZSwgYXJndW1lbnRzLCBmaXJzdFZhckFyZ09mZnNldCk7CisgICAgc2V0
dXBWYXJhcmdzRnJhbWUoZXhlYywgbmV3Q2FsbEZyYW1lLCBhcmd1bWVudHMsIGZpcnN0VmFyQXJn
T2Zmc2V0LCBsZW5ndGgpOwogICAgIHJldHVybiBuZXdDYWxsRnJhbWU7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAxNzk4NzUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtODcsOCArODcsNyBAQCBleHRlcm4gIkMiIHsKICAgICBaOiBpbnQzMl90CiAqLwog
Ci10eXBlZGVmIENhbGxGcmFtZSogSklUX09QRVJBVElPTiAoKkZfSklUT3BlcmF0aW9uX0VGSlop
KEV4ZWNTdGF0ZSosIENhbGxGcmFtZSosIEVuY29kZWRKU1ZhbHVlLCBpbnQzMl90KTsKLXR5cGVk
ZWYgQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OICgqRl9KSVRPcGVyYXRpb25fRUpaWikoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QsIGludDMyX3QpOwordHlwZWRlZiBDYWxsRnJh
bWUqIEpJVF9PUEVSQVRJT04gKCpGX0pJVE9wZXJhdGlvbl9FRkpaWikoRXhlY1N0YXRlKiwgQ2Fs
bEZyYW1lKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QsIGludDMyX3QpOwogdHlwZWRlZiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRSkoRXhlY1N0YXRlKik7
CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9F
QSkoRXhlY1N0YXRlKiwgSlNBcnJheSopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUFaKShFeGVjU3RhdGUqLCBKU0FycmF5KiwgaW50MzJf
dCk7CkBAIC0xNTEsNiArMTUwLDcgQEAgdHlwZWRlZiBpbnQ2NF90IEpJVF9PUEVSQVRJT04oKlFf
SklUT3BlcgogdHlwZWRlZiBpbnQzMl90IEpJVF9PUEVSQVRJT04gKCpaX0pJVE9wZXJhdGlvbl9E
KShkb3VibGUpOwogdHlwZWRlZiBpbnQzMl90IEpJVF9PUEVSQVRJT04gKCpaX0pJVE9wZXJhdGlv
bl9FKShFeGVjU3RhdGUqKTsKIHR5cGVkZWYgaW50MzJfdCBKSVRfT1BFUkFUSU9OICgqWl9KSVRP
cGVyYXRpb25fRUMpKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOwordHlwZWRlZiBpbnQzMl90IEpJVF9P
UEVSQVRJT04gKCpaX0pJVE9wZXJhdGlvbl9FSlpaKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSwgaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19K
SVRPcGVyYXRpb25fRUNDKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBKU0NlbGwqKTsKIHR5cGVkZWYg
c2l6ZV90IEpJVF9PUEVSQVRJT04gKCpTX0pJVE9wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUpOwogdHlwZWRlZiBzaXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0
aW9uX0VKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKQEAg
LTMwOSw4ICszMDksOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVGVhck9mZkFyZ3Vt
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkRlbGV0ZUJ5SWQoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUgYmFzZSwgY29uc3QgSWRlbnRpZmllciopIFdURl9JTlRFUk5B
TDsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQTmFtZXMoRXhlY1N0YXRlKiwg
SlNPYmplY3QqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkluc3RhbmNlT2YoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlIHByb3RvKSBXVEZfSU5URVJOQUw7Ci1DYWxsRnJhbWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uU2l6ZUZyYW1lRm9yVmFyYXJncyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBhcmd1bWVu
dHMsIGludDMyX3QgbnVtVXNlZFN0YWNrU2xvdHMsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQp
IFdURl9JTlRFUk5BTDsKLUNhbGxGcmFtZSogSklUX09QRVJBVElPTiBvcGVyYXRpb25TZXR1cFZh
cmFyZ3NGcmFtZShFeGVjU3RhdGUqLCBDYWxsRnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSBhcmd1bWVu
dHMsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpIFdURl9JTlRFUk5BTDsKK2ludDMyX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlIGFyZ3VtZW50cywgaW50MzJfdCBudW1Vc2VkU3RhY2tTbG90cywgaW50MzJfdCBm
aXJzdFZhckFyZ09mZnNldCkgV1RGX0lOVEVSTkFMOworQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lKEV4ZWNTdGF0ZSosIENhbGxGcmFtZSosIEVuY29k
ZWRKU1ZhbHVlIGFyZ3VtZW50cywgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwgaW50MzJfdCBs
ZW5ndGgpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVG9PYmplY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIAog
Y2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25Td2l0Y2hDaGFyV2l0aFVua25vd25LZXlUeXBl
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGtleSwgc2l6ZV90IHRhYmxlSW5kZXgpIFdURl9J
TlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2V0dXBWYXJhcmdzRnJh
bWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2V0dXBWYXJh
cmdzRnJhbWUuY3BwCShyZXZpc2lvbiAxNzk4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMjMg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK3ZvaWQgZW1pdFNldFZhcmFyZ3NGcmFtZShDQ2FsbEhl
bHBlcnMmIGppdCwgR1BSUmVnIGxlbmd0aEdQUiwgR1BSUmVnIG51bVVzZWRTbG90c0dQUiwgR1BS
UmVnIHJlc3VsdEdQUikKK3sKKyAgICBqaXQubW92ZShudW1Vc2VkU2xvdHNHUFIsIHJlc3VsdEdQ
Uik7CisgICAgaml0LmFkZFB0cihsZW5ndGhHUFIsIHJlc3VsdEdQUik7CisgICAgaml0LmFkZFB0
cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXpl
ICsgMSksIHJlc3VsdEdQUik7CisgICAgCisgICAgLy8gcmVzdWx0R1BSIG5vdyBoYXMgdGhlIHJl
cXVpcmVkIGZyYW1lIHNpemUgaW4gUmVnaXN0ZXIgdW5pdHMKKyAgICAvLyBSb3VuZCByZXN1bHRH
UFIgdG8gbmV4dCBtdWx0aXBsZSBvZiBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpCisgICAgaml0
LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihzdGFja0FsaWdubWVudFJlZ2lzdGVy
cygpIC0gMSksIHJlc3VsdEdQUik7CisgICAgaml0LmFuZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMih+KHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgLSAxKSksIHJlc3VsdEdQUik7Cisg
ICAgCisgICAgLy8gTm93IHJlc3VsdEdQUiBoYXMgdGhlIHJpZ2h0IHN0YWNrIGZyYW1lIG9mZnNl
dCBpbiBSZWdpc3RlciB1bml0cy4KKyAgICBqaXQubmVnUHRyKHJlc3VsdEdQUik7CisgICAgaml0
LmxzaGlmdFB0cihDQ2FsbEhlbHBlcnM6OkltbTMyKDMpLCByZXN1bHRHUFIpOworICAgIGppdC5h
ZGRQdHIoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIHJlc3VsdEdQUik7Cit9CisKIHZvaWQg
ZW1pdFNldHVwVmFyYXJnc0ZyYW1lRmFzdENhc2UoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBu
dW1Vc2VkU2xvdHNHUFIsIEdQUlJlZyBzY3JhdGNoR1BSMSwgR1BSUmVnIHNjcmF0Y2hHUFIyLCBH
UFJSZWcgc2NyYXRjaEdQUjMsIGludCBpbmxpbmVTdGFja09mZnNldCwgdW5zaWduZWQgZmlyc3RW
YXJBcmdPZmZzZXQsIENDYWxsSGVscGVyczo6SnVtcExpc3QmIHNsb3dDYXNlKQogewogICAgIEND
YWxsSGVscGVyczo6SnVtcExpc3QgZW5kOwpAQCAtNDgsMTkgKzY1LDggQEAgdm9pZCBlbWl0U2V0
dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZShDQ2FsbAogICAgICAgICBlbmRWYXJBcmdzLmxpbmsoJmpp
dCk7CiAgICAgfQogICAgIHNsb3dDYXNlLmFwcGVuZChqaXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJz
OjpBYm92ZSwgc2NyYXRjaEdQUjEsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEFyZ3VtZW50
czo6TWF4QXJndW1lbnRzICsgMSkpKTsKLSAgICAvLyBzY3JhdGNoR1BSMTogYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMKLSAgICBqaXQubW92ZShudW1Vc2VkU2xvdHNHUFIsIHNjcmF0Y2hHUFIy
KTsKLSAgICBqaXQuYWRkUHRyKHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMik7Ci0gICAgaml0LmFk
ZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJT
aXplKSwgc2NyYXRjaEdQUjIpOwotICAgIC8vIHNjcmF0Y2hHUFIyIG5vdyBoYXMgdGhlIHJlcXVp
cmVkIGZyYW1lIHNpemUgaW4gUmVnaXN0ZXIgdW5pdHMKLSAgICAvLyBSb3VuZCBzY3JhdGNoR1BS
MiB0byBuZXh0IG11bHRpcGxlIG9mIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkKLSAgICBqaXQu
YWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJz
KCkgLSAxKSwgc2NyYXRjaEdQUjIpOwotICAgIGppdC5hbmRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tMzIofihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpIC0gMSkpLCBzY3JhdGNoR1BSMik7
Ci0KLSAgICBqaXQubmVnUHRyKHNjcmF0Y2hHUFIyKTsKLSAgICBqaXQubHNoaWZ0UHRyKENDYWxs
SGVscGVyczo6SW1tMzIoMyksIHNjcmF0Y2hHUFIyKTsKLSAgICBqaXQuYWRkUHRyKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBzY3JhdGNoR1BSMik7Ci0gICAgLy8gc2NyYXRjaEdQUjI6IG5l
d0NhbGxGcmFtZQorICAgIAorICAgIGVtaXRTZXRWYXJhcmdzRnJhbWUoaml0LCBzY3JhdGNoR1BS
MSwgbnVtVXNlZFNsb3RzR1BSLCBzY3JhdGNoR1BSMik7CiAKICAgICBzbG93Q2FzZS5hcHBlbmQo
aml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6OkFib3ZlLCBDQ2FsbEhlbHBlcnM6OkFic29sdXRl
QWRkcmVzcyhqaXQudm0oKS0+YWRkcmVzc09mU3RhY2tMaW1pdCgpKSwgc2NyYXRjaEdQUjIpKTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NGcmFtZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU2V0dXBWYXJhcmdzRnJhbWUu
aAkocmV2aXNpb24gMTc5ODc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZh
cmFyZ3NGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMywxMSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAordm9pZCBlbWl0U2V0VmFyYXJnc0ZyYW1lKENDYWxsSGVscGVycyYsIEdQUlJl
ZyBsZW5ndGhHUFIsIEdQUlJlZyBudW1Vc2VkU2xvdHNHUFIsIEdQUlJlZyByZXN1bHRHUFIpOwor
CiAvLyBBc3N1bWVzIHRoYXQgU1AgcmVmZXJzIHRvIHRoZSBsYXN0IGluLXVzZSBzdGFjayBsb2Nh
dGlvbiwgYW5kIGFmdGVyIHRoaXMgcmV0dXJucyBTUCB3aWxsIHBvaW50IHRvCiAvLyB0aGUgbmV3
bHkgY3JlYXRlZCBmcmFtZSBwbHVzIHRoZSBuYXRpdmUgaGVhZGVyLiBzY3JhdGNoR1BSMiBtYXkg
YmUgdGhlIHNhbWUgYXMgbnVtVXNlZFNsb3RzR1BSLgotdm9pZCBlbWl0U2V0dXBWYXJhcmdzRnJh
bWVGYXN0Q2FzZShDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIG51bVVzZWRTbG90c0dQUiwgR1BS
UmVnIHNjcmF0Y2hHUFIxLCBHUFJSZWcgc2NyYXRjaEdQUjIsIEdQUlJlZyBzY3JhdGNoR1BSMywg
aW50IGlubGluZVN0YWNrT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdFZhckFyZ09mZnNldCwgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCYgc2xvd0Nhc2UpOwordm9pZCBlbWl0U2V0dXBWYXJhcmdzRnJhbWVG
YXN0Q2FzZShDQ2FsbEhlbHBlcnMmLCBHUFJSZWcgbnVtVXNlZFNsb3RzR1BSLCBHUFJSZWcgc2Ny
YXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgR1BSUmVnIHNjcmF0Y2hHUFIzLCBpbnQgaW5s
aW5lU3RhY2tPZmZzZXQsIHVuc2lnbmVkIGZpcnN0VmFyQXJnT2Zmc2V0LCBDQ2FsbEhlbHBlcnM6
Okp1bXBMaXN0JiBzbG93Q2FzZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9u
IDE3OTg3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTExNjQsMTAgKzExNjQsMTMgQEAgTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3NpemVfZnJhbQogICAgIC8vIFRoaXMgbmVlZHMgdG86CiAgICAgLy8g
LSBTZXQgdXAgYSBjYWxsIGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3Vt
ZW50cy4KICAgICAKLSAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBzaXplRnJhbWVGb3JWYXJh
cmdzKGV4ZWMsICZ2bS5pbnRlcnByZXRlci0+c3RhY2soKSwKLSAgICAgICAgTExJTlRfT1BfQyg0
KS5qc1ZhbHVlKCksIC1wY1s1XS51Lm9wZXJhbmQsIHBjWzZdLnUub3BlcmFuZCk7CisgICAgdW5z
aWduZWQgbnVtVXNlZFN0YWNrU2xvdHMgPSAtcGNbNV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVk
IGxlbmd0aCA9IHNpemVGcmFtZUZvclZhcmFyZ3MoZXhlYywgJnZtLmludGVycHJldGVyLT5zdGFj
aygpLAorICAgICAgICBMTElOVF9PUF9DKDQpLmpzVmFsdWUoKSwgbnVtVXNlZFN0YWNrU2xvdHMs
IHBjWzZdLnUub3BlcmFuZCk7CiAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywg
ZXhlYyk7CiAgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gY2FsbGVlRnJhbWVGb3JW
YXJhcmdzKGV4ZWMsIG51bVVzZWRTdGFja1Nsb3RzLCBsZW5ndGggKyAxKTsKKyAgICB2bS52YXJh
cmdzTGVuZ3RoID0gbGVuZ3RoOwogICAgIHZtLm5ld0NhbGxGcmFtZVJldHVyblZhbHVlID0gZXhl
Y0NhbGxlZTsKIAogICAgIExMSU5UX1JFVFVSTl9DQUxMRUVfRlJBTUUoZXhlY0NhbGxlZSk7CkBA
IC0xMTg0LDcgKzExODcsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF92
YXJhCiAgICAgCiAgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gdm0ubmV3Q2FsbEZyYW1lUmV0
dXJuVmFsdWU7CiAKLSAgICBzZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMoZXhlYywgZXhlY0Nh
bGxlZSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoNCkuanNWYWx1ZSgpLCBw
Y1s2XS51Lm9wZXJhbmQpOworICAgIHNldHVwVmFyYXJnc0ZyYW1lQW5kU2V0VGhpcyhleGVjLCBl
eGVjQ2FsbGVlLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQyg0KS5qc1ZhbHVl
KCksIHBjWzZdLnUub3BlcmFuZCwgdm0udmFyYXJnc0xlbmd0aCk7CiAgICAgTExJTlRfQ0FMTF9D
SEVDS19FWENFUFRJT04oZXhlYywgZXhlYyk7CiAgICAgCiAgICAgZXhlY0NhbGxlZS0+dW5jaGVj
a2VkUihKU1N0YWNrOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkocmV2aXNpb24gMTc5ODc1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODcsMjIgKzg3LDEzIEBAIHZvaWQgQXJndW1lbnRzOjpjb3B5QmFja2luZ1N0b3JlKEpT
Q2VsbCoKICAgICAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFyZ3VtZW50
c0Z1bmNJdGVyYXRvcihFeGVjU3RhdGUqKTsKIAotdm9pZCBBcmd1bWVudHM6OmNvcHlUb0FyZ3Vt
ZW50cyhFeGVjU3RhdGUqIGV4ZWMsIFZpcnR1YWxSZWdpc3RlciBmaXJzdEVsZW1lbnREZXN0LCB1
aW50MzJfdCBjb3B5TGVuZ3RoLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQordm9pZCBBcmd1
bWVudHM6OmNvcHlUb0FyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMsIFZpcnR1YWxSZWdpc3RlciBm
aXJzdEVsZW1lbnREZXN0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKLSAg
ICB1aW50MzJfdCBsZW5ndGggPSBjb3B5TGVuZ3RoICsgZmlyc3RWYXJBcmdPZmZzZXQ7Ci0KLSAg
ICBpZiAoVU5MSUtFTFkobV9vdmVycm9kZUxlbmd0aCkpIHsKLSAgICAgICAgbGVuZ3RoID0gbWlu
KGdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMihleGVjKSwg
bGVuZ3RoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZmlyc3RWYXJBcmdPZmZzZXQ7IGkg
PCBsZW5ndGg7IGkrKykKLSAgICAgICAgICAgIGV4ZWMtPnIoZmlyc3RFbGVtZW50RGVzdCArIGkg
LSBmaXJzdFZhckFyZ09mZnNldCkgPSBnZXQoZXhlYywgaSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgQVNTRVJUKGxlbmd0aCA9PSB0aGlzLT5sZW5ndGgoZXhlYykpOwotICAgIGZvciAo
c2l6ZV90IGkgPSBmaXJzdFZhckFyZ09mZnNldDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAg
IGlmIChKU1ZhbHVlIHZhbHVlID0gdHJ5R2V0QXJndW1lbnQoaSkpCi0gICAgICAgICAgICBleGVj
LT5yKGZpcnN0RWxlbWVudERlc3QgKyBpIC0gZmlyc3RWYXJBcmdPZmZzZXQpID0gdmFsdWU7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmIChK
U1ZhbHVlIHZhbHVlID0gdHJ5R2V0QXJndW1lbnQoaSArIG9mZnNldCkpCisgICAgICAgICAgICBl
eGVjLT5yKGZpcnN0RWxlbWVudERlc3QgKyBpKSA9IHZhbHVlOwogICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIGV4ZWMtPnIoZmlyc3RFbGVtZW50RGVzdCArIGkgLSBmaXJzdFZhckFyZ09mZnNl
dCkgPSBnZXQoZXhlYywgaSk7CisgICAgICAgICAgICBleGVjLT5yKGZpcnN0RWxlbWVudERlc3Qg
KyBpKSA9IGdldChleGVjLCBpICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShl
eGVjLT52bSgpLmV4Y2VwdGlvbigpKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCShyZXZp
c2lvbiAxNzk4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMu
aAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBtX251bUFyZ3VtZW50czsgCiAgICAgfQogICAgICAgICAKLSAgICB2b2lkIGNvcHlUb0FyZ3Vt
ZW50cyhFeGVjU3RhdGUqLCBWaXJ0dWFsUmVnaXN0ZXIgZmlyc3RFbGVtZW50RGVzdCwgdWludDMy
X3QgY29weUxlbmd0aCwgaW50MzJfdCBmaXJzdEFyZ3VtZW50T2Zmc2V0KTsKKyAgICB2b2lkIGNv
cHlUb0FyZ3VtZW50cyhFeGVjU3RhdGUqLCBWaXJ0dWFsUmVnaXN0ZXIgZmlyc3RFbGVtZW50RGVz
dCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIHZvaWQgdGVhck9mZihD
YWxsRnJhbWUqKTsKICAgICB2b2lkIHRlYXJPZmYoQ2FsbEZyYW1lKiwgSW5saW5lQ2FsbEZyYW1l
Kik7CiAgICAgdm9pZCB0ZWFyT2ZmRm9yQ2xvbmluZyhDYWxsRnJhbWUqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShyZXZpc2lvbiAxNzk4NzUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU3MCwxMiArMTU3MCwxMiBAQCB2b2lkIEpTQXJyYXk6OmZpbGxBcmdMaXN0KEV4ZWNT
dGF0ZSogZXhlCiAgICAgICAgIGFyZ3MuYXBwZW5kKGdldChleGVjLCBpKSk7CiB9CiAKLXZvaWQg
SlNBcnJheTo6Y29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgVmlydHVhbFJlZ2lzdGVy
IGZpcnN0RWxlbWVudERlc3QsIHVpbnQzMl90IGNvcHlMZW5ndGgsIGludDMyX3QgZmlyc3RWYXJB
cmdPZmZzZXQpCit2b2lkIEpTQXJyYXk6OmNvcHlUb0FyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMs
IFZpcnR1YWxSZWdpc3RlciBmaXJzdEVsZW1lbnREZXN0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCkKIHsKLSAgICB1bnNpZ25lZCBpID0gZmlyc3RWYXJBcmdPZmZzZXQ7CisgICAg
dW5zaWduZWQgaSA9IG9mZnNldDsKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHZlY3RvcjsK
ICAgICB1bnNpZ25lZCB2ZWN0b3JFbmQ7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gY29weUxlbmd0
aCArIGZpcnN0VmFyQXJnT2Zmc2V0OworICAgIGxlbmd0aCArPSBvZmZzZXQ7IC8vIFdlIGxpa2Ug
dG8gdGhpbmsgb2YgdGhlIGxlbmd0aCBhcyBiZWluZyBvdXIgbGVuZ3RoLCByYXRoZXIgdGhhbiB0
aGUgb3V0cHV0IGxlbmd0aC4KICAgICBBU1NFUlQobGVuZ3RoID09IHRoaXMtPmxlbmd0aCgpKTsK
ICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2FzZSBBcnJheUNsYXNzOgpAQCAt
MTYwMiw3ICsxNjAyLDcgQEAgdm9pZCBKU0FycmF5Ojpjb3B5VG9Bcmd1bWVudHMoRXhlY1N0YXRl
KgogICAgICAgICAgICAgZG91YmxlIHYgPSBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgp
W2ldOwogICAgICAgICAgICAgaWYgKHYgIT0gdikKICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGV4ZWMtPnIoZmlyc3RFbGVtZW50RGVzdCArIGkgLSBmaXJzdFZhckFyZ09mZnNl
dCkgPSBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCB2KTsKKyAgICAgICAgICAgIGV4
ZWMtPnIoZmlyc3RFbGVtZW50RGVzdCArIGkgLSBvZmZzZXQpID0gSlNWYWx1ZShKU1ZhbHVlOjpF
bmNvZGVBc0RvdWJsZSwgdik7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt
MTYyNywxMSArMTYyNywxMSBAQCB2b2lkIEpTQXJyYXk6OmNvcHlUb0FyZ3VtZW50cyhFeGVjU3Rh
dGUqCiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgdiA9IHZlY3RvcltpXTsKICAgICAg
ICAgaWYgKCF2KQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGV4ZWMtPnIoZmlyc3RFbGVt
ZW50RGVzdCArIGkgLSBmaXJzdFZhckFyZ09mZnNldCkgPSB2LmdldCgpOworICAgICAgICBleGVj
LT5yKGZpcnN0RWxlbWVudERlc3QgKyBpIC0gb2Zmc2V0KSA9IHYuZ2V0KCk7CiAgICAgfQogICAg
IAogICAgIGZvciAoOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgZXhlYy0+cihmaXJzdEVs
ZW1lbnREZXN0ICsgaSAtIGZpcnN0VmFyQXJnT2Zmc2V0KSA9IGdldChleGVjLCBpKTsKKyAgICAg
ICAgZXhlYy0+cihmaXJzdEVsZW1lbnREZXN0ICsgaSAtIG9mZnNldCkgPSBnZXQoZXhlYywgaSk7
CiAgICAgICAgIGlmIChVTkxJS0VMWShleGVjLT52bSgpLmV4Y2VwdGlvbigpKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oCShyZXZpc2lvbiAxNzk4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaWxsQXJnTGlzdChFeGVjU3RhdGUq
LCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29w
eVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSosIFZpcnR1YWxSZWdpc3RlciBmaXJzdEVsZW1lbnREZXN0
LCB1aW50MzJfdCBsZW5ndGgsIGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgY29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSosIFZpcnR1YWxSZWdp
c3RlciBmaXJzdEVsZW1lbnREZXN0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7
CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSwgSW5kZXhpbmdUeXBlIGlu
ZGV4aW5nVHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJl
dmlzaW9uIDE3OTg3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQxMCw2ICs0MTAsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgQ2xhc3NJ
bmZvKiBjb25zdCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOwogCiAgICAgSlNWYWx1ZSBob3N0Q2Fs
bFJldHVyblZhbHVlOworICAgIHVuc2lnbmVkIHZhcmFyZ3NMZW5ndGg7CiAgICAgRXhlY1N0YXRl
KiBuZXdDYWxsRnJhbWVSZXR1cm5WYWx1ZTsKICAgICBWTUVudHJ5RnJhbWUqIHZtRW50cnlGcmFt
ZUZvclRocm93OwogICAgIEV4ZWNTdGF0ZSogY2FsbEZyYW1lRm9yVGhyb3c7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246342</attachid>
            <date>2015-02-10 14:54:50 -0800</date>
            <delta_ts>2015-02-10 15:10:32 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>41457</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc5ODg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDE1LTAyLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
b3BfY2FsbF92YXJhcmdzIHNob3VsZCBvbmx5IGxvYWQgdGhlIGxlbmd0aCBvbmNlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE0NDAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFJlZmFjdG9y
cyB0aGUgcGFpciBvZiBjYWxscyB0aGF0IHNldCB1cCB0aGUgdmFyYXJncyBmcmFtZSBzbyB0aGF0
IHRoZSBmaXJzdCBjYWxsIHJldHVybnMgdGhlCisgICAgICAgIGxlbmd0aCwgYW5kIHRoZSBzZWNv
bmQgY2FsbCB1c2VzIHRoZSBsZW5ndGggcmV0dXJuZWQgYnkgdGhlIGZpcnN0IG9uZS4gSXQgdHVy
bnMgb3V0IHRoYXQgdGhpcworICAgICAgICBnYXZlIG1lIGFuIG9wcG9ydHVuaXR5IHRvIHNob3J0
ZW4gYSBsb3Qgb2YgdGhlIGNvZGUuCisKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHA6CisgICAgICAgIChKU0M6OnNpemVGcmFtZUZvclZhcmFyZ3MpOgorICAgICAgICAoSlND
Ojpsb2FkVmFyYXJncyk6CisgICAgICAgIChKU0M6OnNldHVwVmFyYXJnc0ZyYW1lKToKKyAgICAg
ICAgKEpTQzo6c2V0dXBWYXJhcmdzRnJhbWVBbmRTZXRUaGlzKToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpjYWxsZWVGcmFtZUZvclZhcmFyZ3Mp
OgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxw
ZXJzOjpzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUpOgorICAgICAgICAqIGppdC9KSVQuaDoK
KyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNl
dHVwVmFyYXJnc0ZyYW1lKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpjb21waWxlU2V0dXBWYXJhcmdzRnJhbWUpOgorICAgICAgICAqIGppdC9K
SVRJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAg
ICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6
CisgICAgICAgICogaml0L1NldHVwVmFyYXJnc0ZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6ZW1p
dFNldFZhcmFyZ3NGcmFtZSk6CisgICAgICAgIChKU0M6OmVtaXRTZXR1cFZhcmFyZ3NGcmFtZUZh
c3RDYXNlKToKKyAgICAgICAgKiBqaXQvU2V0dXBWYXJhcmdzRnJhbWUuaDoKKyAgICAgICAgKiBs
bGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9X
X1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuY3BwOgorICAgICAgICAo
SlNDOjpBcmd1bWVudHM6OmNvcHlUb0FyZ3VtZW50cyk6CisgICAgICAgICogcnVudGltZS9Bcmd1
bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuY3BwOgorICAgICAgICAoSlNDOjpK
U0FycmF5Ojpjb3B5VG9Bcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvY2FsbC12YXJh
cmdzLWxlbmd0aC1lZmZlY3RzLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgIChi
YXIpOgorCiAyMDE1LTAyLTEwICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgog
CiAgICAgICAgIENyYXNoIGluIEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUNvbXBh
cmVTdHJpY3RFcQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxNzk4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMiwgMjAx
MywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMDksIDIwMTAsIDIwMTIsIDIwMTMsIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVyb24gWndhcmljaCA8
Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTEzNCwxNTggKzEz
NCw4MCBAQCBKU1ZhbHVlIGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgcmV0dXJuIGlu
dGVycHJldGVyLT5leGVjdXRlKGV2YWwsIGNhbGxGcmFtZSwgdGhpc1ZhbHVlLCBjYWxsZXJTY29w
ZUNoYWluKTsKIH0KIAotQ2FsbEZyYW1lKiBzaXplRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBKU1N0YWNrKiBzdGFjaywgSlNWYWx1ZSBhcmd1bWVudHMsIHVuc2lnbmVkIG51
bVVzZWRTdGFja1Nsb3RzLCB1aW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkKK3Vuc2lnbmVkIHNp
emVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTU3RhY2sqIHN0YWNrLCBK
U1ZhbHVlIGFyZ3VtZW50cywgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMsIHVpbnQzMl90IGZp
cnN0VmFyQXJnT2Zmc2V0KQogewotICAgIGlmICghYXJndW1lbnRzKSB7IC8vIGYuYXBwbHkoeCwg
YXJndW1lbnRzKSwgd2l0aCBhcmd1bWVudHMgdW5tb2RpZmllZC4KLSAgICAgICAgdW5zaWduZWQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCk7Ci0gICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA+IGZp
cnN0VmFyQXJnT2Zmc2V0KQotICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
LT0gZmlyc3RWYXJBcmdPZmZzZXQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzID0gMTsKLSAgICAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJh
bWVPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3Rl
cnMoKSwgbnVtVXNlZFN0YWNrU2xvdHMgKyBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIEpT
U3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpOwotICAgICAgICBDYWxsRnJhbWUqIG5ld0NhbGxG
cmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgLSBwYWRkZWRD
YWxsZWVGcmFtZU9mZnNldCk7Ci0gICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyA+IEFyZ3VtZW50czo6TWF4QXJndW1lbnRzICsgMSB8fCAhc3RhY2stPmVuc3VyZUNhcGFjaXR5
Rm9yKG5ld0NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7Ci0gICAgICAgICAgICB0aHJvd1N0YWNr
T3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKLSAgICB9Ci0KLSAgICBpZiAoYXJndW1l
bnRzLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAgICAgdW5zaWduZWQgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgPSAxOwotICAgICAgICB1bnNpZ25lZCBwYWRkZWRDYWxsZWVGcmFtZU9m
ZnNldCA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygp
LCAgbnVtVXNlZFN0YWNrU2xvdHMgKyBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIEpTU3Rh
Y2s6OkNhbGxGcmFtZUhlYWRlclNpemUpOwotICAgICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFt
ZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgLSBwYWRkZWRDYWxs
ZWVGcmFtZU9mZnNldCk7Ci0gICAgICAgIGlmICghc3RhY2stPmVuc3VyZUNhcGFjaXR5Rm9yKG5l
d0NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7Ci0gICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZs
b3dFcnJvcihjYWxsRnJhbWUpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKLSAgICB9Ci0KLSAgICBpZiAoIWFyZ3VtZW50cy5p
c09iamVjdCgpKSB7CisgICAgdW5zaWduZWQgbGVuZ3RoOworICAgIGlmICghYXJndW1lbnRzKQor
ICAgICAgICBsZW5ndGggPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKKyAgICBlbHNlIGlm
IChhcmd1bWVudHMuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgbGVuZ3RoID0gMDsKKyAg
ICBlbHNlIGlmICghYXJndW1lbnRzLmlzT2JqZWN0KCkpIHsKICAgICAgICAgY2FsbEZyYW1lLT52
bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwgY3JlYXRlSW52YWxpZFBhcmFtZXRlckVycm9y
KGNhbGxGcmFtZSwgIkZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSIsIGFyZ3VtZW50cykpOwogICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoYXNPYmplY3QoYXJndW1lbnRzKS0+Y2xh
c3NJbmZvKCkgPT0gQXJndW1lbnRzOjppbmZvKCkpIHsKLSAgICAgICAgQXJndW1lbnRzKiBhcmdz
T2JqZWN0ID0gYXNBcmd1bWVudHMoYXJndW1lbnRzKTsKLSAgICAgICAgdW5zaWduZWQgYXJnQ291
bnQgPSBhcmdzT2JqZWN0LT5sZW5ndGgoY2FsbEZyYW1lKTsKLSAgICAgICAgaWYgKGFyZ0NvdW50
ID49IGZpcnN0VmFyQXJnT2Zmc2V0KQotICAgICAgICAgICAgYXJnQ291bnQgLT0gZmlyc3RWYXJB
cmdPZmZzZXQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFyZ0NvdW50ID0gMDsKLSAgICAg
ICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011bHRp
cGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgbnVtVXNlZFN0YWNrU2xvdHMgKyBhcmdD
b3VudCArIDEgKyBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKLSAgICAgICAgQ2FsbEZy
YW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUtPnJlZ2lzdGVy
cygpIC0gcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQpOwotICAgICAgICBpZiAoYXJnQ291bnQgPiBB
cmd1bWVudHM6Ok1heEFyZ3VtZW50cyB8fCAhc3RhY2stPmVuc3VyZUNhcGFjaXR5Rm9yKG5ld0Nh
bGxGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7Ci0gICAgICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dF
cnJvcihjYWxsRnJhbWUpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKLSAgICB9Ci0KLSAgICBpZiAoaXNKU0FycmF5KGFyZ3Vt
ZW50cykpIHsKLSAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KGFyZ3VtZW50cyk7Ci0g
ICAgICAgIHVuc2lnbmVkIGFyZ0NvdW50ID0gYXJyYXktPmxlbmd0aCgpOwotICAgICAgICBpZiAo
YXJnQ291bnQgPj0gZmlyc3RWYXJBcmdPZmZzZXQpCi0gICAgICAgICAgICBhcmdDb3VudCAtPSBm
aXJzdFZhckFyZ09mZnNldDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXJnQ291bnQgPSAw
OwotICAgICAgICB1bnNpZ25lZCBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCA9IFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBudW1Vc2VkU3RhY2tTbG90
cyArIGFyZ0NvdW50ICsgMSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpOwotICAgICAg
ICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+
cmVnaXN0ZXJzKCkgLSBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCk7Ci0gICAgICAgIGlmIChhcmdD
b3VudCA+IEFyZ3VtZW50czo6TWF4QXJndW1lbnRzIHx8ICFzdGFjay0+ZW5zdXJlQ2FwYWNpdHlG
b3IobmV3Q2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkpIHsKLSAgICAgICAgICAgIHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwotICAgIH0KLQotICAgIEpTT2JqZWN0KiBh
cmdPYmplY3QgPSBhc09iamVjdChhcmd1bWVudHMpOwotICAgIHVuc2lnbmVkIGFyZ0NvdW50ID0g
YXJnT2JqZWN0LT5nZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgpLnRvVUludDMyKGNhbGxGcmFtZSk7Ci0gICAgaWYgKGFyZ0NvdW50ID49IGZpcnN0VmFyQXJn
T2Zmc2V0KQotICAgICAgICBhcmdDb3VudCAtPSBmaXJzdFZhckFyZ09mZnNldDsKKyAgICB9IGVs
c2UgaWYgKGFzT2JqZWN0KGFyZ3VtZW50cyktPmNsYXNzSW5mbygpID09IEFyZ3VtZW50czo6aW5m
bygpKQorICAgICAgICBsZW5ndGggPSBhc0FyZ3VtZW50cyhhcmd1bWVudHMpLT5sZW5ndGgoY2Fs
bEZyYW1lKTsKKyAgICBlbHNlIGlmIChpc0pTQXJyYXkoYXJndW1lbnRzKSkKKyAgICAgICAgbGVu
Z3RoID0gYXNBcnJheShhcmd1bWVudHMpLT5sZW5ndGgoKTsKICAgICBlbHNlCi0gICAgICAgIGFy
Z0NvdW50ID0gMDsKLSAgICB1bnNpZ25lZCBwYWRkZWRDYWxsZWVGcmFtZU9mZnNldCA9IFdURjo6
cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBudW1Vc2VkU3Rh
Y2tTbG90cyArIGFyZ0NvdW50ICsgMSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpOwot
ICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1l
LT5yZWdpc3RlcnMoKSAtIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0KTsKLSAgICBpZiAoYXJnQ291
bnQgPiBBcmd1bWVudHM6Ok1heEFyZ3VtZW50cyB8fCAhc3RhY2stPmVuc3VyZUNhcGFjaXR5Rm9y
KG5ld0NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7CisgICAgICAgIGxlbmd0aCA9IGFzT2JqZWN0
KGFyZ3VtZW50cyktPmdldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCkudG9VSW50MzIoY2FsbEZyYW1lKTsKKyAgICAKKyAgICBpZiAobGVuZ3RoID49IGZpcnN0
VmFyQXJnT2Zmc2V0KQorICAgICAgICBsZW5ndGggLT0gZmlyc3RWYXJBcmdPZmZzZXQ7CisgICAg
ZWxzZQorICAgICAgICBsZW5ndGggPSAwOworICAgIAorICAgIENhbGxGcmFtZSogY2FsbGVlRnJh
bWUgPSBjYWxsZWVGcmFtZUZvclZhcmFyZ3MoY2FsbEZyYW1lLCBudW1Vc2VkU3RhY2tTbG90cywg
bGVuZ3RoICsgMSk7CisgICAgaWYgKGxlbmd0aCA+IEFyZ3VtZW50czo6TWF4QXJndW1lbnRzIHx8
ICFzdGFjay0+ZW5zdXJlQ2FwYWNpdHlGb3IoY2FsbGVlRnJhbWUtPnJlZ2lzdGVycygpKSkgewog
ICAgICAgICB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9Ci0gICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKKyAgICAKKyAgICByZXR1cm4g
bGVuZ3RoOwogfQogCi12b2lkIGxvYWRWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZyYW1lLCBWaXJ0
dWFsUmVnaXN0ZXIgZmlyc3RFbGVtZW50RGVzdCwgVmlydHVhbFJlZ2lzdGVyIGNvdW50RGVzdCwg
SlNWYWx1ZSBhcmd1bWVudHMsIHVpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KQordm9pZCBsb2Fk
VmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVyIGZpcnN0RWxlbWVu
dERlc3QsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJfdCBvZmZzZXQsIHVpbnQzMl90IGxlbmd0
aCkKIHsKICAgICBpZiAoIWFyZ3VtZW50cykgeyAvLyBmLmFwcGx5KHgsIGFyZ3VtZW50cyksIHdp
dGggYXJndW1lbnRzIHVubW9kaWZpZWQuCi0gICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOwot
ICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPiBmaXJzdFZhckFyZ09mZnNl
dCkKLSAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIC09IGZpcnN0VmFyQXJn
T2Zmc2V0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyA9IDE7Ci0gICAgICAgIGNhbGxGcmFtZS0+cihjb3VudERlc3QpLnBheWxvYWQoKSA9IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gZmlyc3RW
YXJBcmdPZmZzZXQ7IGkgPCBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsgKytpKQotICAgICAg
ICAgICAgY2FsbEZyYW1lLT5yKGZpcnN0RWxlbWVudERlc3QgKyBpIC0gZmlyc3RWYXJBcmdPZmZz
ZXQpID0gY2FsbEZyYW1lLT5hcmd1bWVudEFmdGVyQ2FwdHVyZShpKTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGNhbGxGcmFtZS0+cihm
aXJzdEVsZW1lbnREZXN0ICsgaSkgPSBjYWxsRnJhbWUtPmFyZ3VtZW50QWZ0ZXJDYXB0dXJlKGkg
KyBvZmZzZXQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIGlmIChhcmd1bWVu
dHMuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICBjYWxsRnJhbWUtPnIoY291bnREZXN0
KS5wYXlsb2FkKCkgPSAxOworICAgIGlmIChhcmd1bWVudHMuaXNVbmRlZmluZWRPck51bGwoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICAKICAgICBpZiAoYXNPYmplY3QoYXJndW1lbnRz
KS0+Y2xhc3NJbmZvKCkgPT0gQXJndW1lbnRzOjppbmZvKCkpIHsKLSAgICAgICAgQXJndW1lbnRz
KiBhcmdzT2JqZWN0ID0gYXNBcmd1bWVudHMoYXJndW1lbnRzKTsKLSAgICAgICAgdW5zaWduZWQg
YXJnQ291bnQgPSBhcmdzT2JqZWN0LT5sZW5ndGgoY2FsbEZyYW1lKTsKLSAgICAgICAgaWYgKGFy
Z0NvdW50ID49IGZpcnN0VmFyQXJnT2Zmc2V0KSB7Ci0gICAgICAgICAgICBhcmdDb3VudCAtPSBm
aXJzdFZhckFyZ09mZnNldDsKLSAgICAgICAgICAgIGNhbGxGcmFtZS0+cihjb3VudERlc3QpLnBh
eWxvYWQoKSA9IGFyZ0NvdW50ICsgMTsKLSAgICAgICAgICAgIGFyZ3NPYmplY3QtPmNvcHlUb0Fy
Z3VtZW50cyhjYWxsRnJhbWUsIGZpcnN0RWxlbWVudERlc3QsIGFyZ0NvdW50LCBmaXJzdFZhckFy
Z09mZnNldCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY2FsbEZyYW1lLT5yKGNvdW50
RGVzdCkucGF5bG9hZCgpID0gMTsKKyAgICAgICAgYXNBcmd1bWVudHMoYXJndW1lbnRzKS0+Y29w
eVRvQXJndW1lbnRzKGNhbGxGcmFtZSwgZmlyc3RFbGVtZW50RGVzdCwgb2Zmc2V0LCBsZW5ndGgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIGlmIChpc0pTQXJyYXkoYXJndW1l
bnRzKSkgewotICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkoYXJndW1lbnRzKTsKLSAg
ICAgICAgdW5zaWduZWQgYXJnQ291bnQgPSBhcnJheS0+bGVuZ3RoKCk7Ci0gICAgICAgIGlmIChh
cmdDb3VudCA+PSBmaXJzdFZhckFyZ09mZnNldCkgewotICAgICAgICAgICAgYXJnQ291bnQgLT0g
Zmlyc3RWYXJBcmdPZmZzZXQ7Ci0gICAgICAgICAgICBjYWxsRnJhbWUtPnIoY291bnREZXN0KS5w
YXlsb2FkKCkgPSBhcmdDb3VudCArIDE7Ci0gICAgICAgICAgICBhcnJheS0+Y29weVRvQXJndW1l
bnRzKGNhbGxGcmFtZSwgZmlyc3RFbGVtZW50RGVzdCwgYXJnQ291bnQsIGZpcnN0VmFyQXJnT2Zm
c2V0KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjYWxsRnJhbWUtPnIoY291bnREZXN0
KS5wYXlsb2FkKCkgPSAxOworICAgICAgICBhc0FycmF5KGFyZ3VtZW50cyktPmNvcHlUb0FyZ3Vt
ZW50cyhjYWxsRnJhbWUsIGZpcnN0RWxlbWVudERlc3QsIG9mZnNldCwgbGVuZ3RoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBKU09iamVjdCogYXJnT2JqZWN0ID0gYXNPYmpl
Y3QoYXJndW1lbnRzKTsKLSAgICB1bnNpZ25lZCBhcmdDb3VudCA9IGFyZ09iamVjdC0+Z2V0KGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMihjYWxs
RnJhbWUpOwotICAgIGlmIChhcmdDb3VudCA+PSBmaXJzdFZhckFyZ09mZnNldCkgewotICAgICAg
ICBhcmdDb3VudCAtPSBmaXJzdFZhckFyZ09mZnNldDsKLSAgICAgICAgY2FsbEZyYW1lLT5yKGNv
dW50RGVzdCkucGF5bG9hZCgpID0gYXJnQ291bnQgKyAxOwotICAgIH0gZWxzZQotICAgICAgICBj
YWxsRnJhbWUtPnIoY291bnREZXN0KS5wYXlsb2FkKCkgPSAxOwotCi0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhcmdDb3VudDsgKytpKSB7Ci0gICAgICAgIGNhbGxGcmFtZS0+cihmaXJzdEVs
ZW1lbnREZXN0ICsgaSkgPSBhc09iamVjdChhcmd1bWVudHMpLT5nZXQoY2FsbEZyYW1lLCBpICsg
Zmlyc3RWYXJBcmdPZmZzZXQpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgeworICAgICAgICBjYWxsRnJhbWUtPnIoZmlyc3RFbGVtZW50RGVzdCArIGkpID0gYXNP
YmplY3QoYXJndW1lbnRzKS0+Z2V0KGNhbGxGcmFtZSwgaSArIG9mZnNldCk7CiAgICAgICAgIGlm
IChVTkxJS0VMWShjYWxsRnJhbWUtPnZtKCkuZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgIH0KIH0KIAotdm9pZCBzZXR1cFZhcmFyZ3NGcmFtZShDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUsIEpTVmFsdWUgYXJndW1lbnRzLCB1aW50MzJf
dCBmaXJzdFZhckFyZ09mZnNldCkKK3ZvaWQgc2V0dXBWYXJhcmdzRnJhbWUoQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWlu
dDMyX3Qgb2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgpCiB7CiAgICAgVmlydHVhbFJlZ2lzdGVyIGNh
bGxlZUZyYW1lT2Zmc2V0KG5ld0NhbGxGcmFtZSAtIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgbG9h
ZFZhcmFyZ3MoCiAgICAgICAgIGNhbGxGcmFtZSwKICAgICAgICAgY2FsbGVlRnJhbWVPZmZzZXQg
KyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KDApLAotICAgICAgICBjYWxsZWVGcmFtZU9mZnNl
dCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQsCi0gICAgICAgIGFyZ3VtZW50cywgZmlyc3RWYXJB
cmdPZmZzZXQpOworICAgICAgICBhcmd1bWVudHMsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAKKyAg
ICBuZXdDYWxsRnJhbWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKGxlbmd0aCArIDEp
OwogfQogCi12b2lkIHNldHVwVmFyYXJnc0ZyYW1lQW5kU2V0VGhpcyhDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVl
IGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpCit2b2lkIHNldHVwVmFyYXJn
c0ZyYW1lQW5kU2V0VGhpcyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ2FsbEZyYW1lKiBuZXdDYWxs
RnJhbWUsIEpTVmFsdWUgdGhpc1ZhbHVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmly
c3RWYXJBcmdPZmZzZXQsIHVpbnQzMl90IGxlbmd0aCkKIHsKLSAgICBzZXR1cFZhcmFyZ3NGcmFt
ZShjYWxsRnJhbWUsIG5ld0NhbGxGcmFtZSwgYXJndW1lbnRzLCBmaXJzdFZhckFyZ09mZnNldCk7
CisgICAgc2V0dXBWYXJhcmdzRnJhbWUoY2FsbEZyYW1lLCBuZXdDYWxsRnJhbWUsIGFyZ3VtZW50
cywgZmlyc3RWYXJBcmdPZmZzZXQsIGxlbmd0aCk7CiAgICAgbmV3Q2FsbEZyYW1lLT5zZXRUaGlz
VmFsdWUodGhpc1ZhbHVlKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDE3OTg3NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMsIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1
ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiU3Rh
Y2tBbGlnbm1lbnQuaCIKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtMjk4LDEwICsyOTksMTkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgfTsKIAogICAgIEpTVmFsdWUgZXZhbChDYWxsRnJhbWUqKTsKLSAgICBDYWxsRnJh
bWUqIHNpemVGcmFtZUZvclZhcmFyZ3MoQ2FsbEZyYW1lKiBleGVjLCBKU1N0YWNrKiwgSlNWYWx1
ZSBhcmd1bWVudHMsIHVuc2lnbmVkIG51bVVzZWRTdGFja1Nsb3RzLCB1aW50MzJfdCBmaXJzdFZh
ckFyZ09mZnNldCk7Ci0gICAgdm9pZCBsb2FkVmFyYXJncyhDYWxsRnJhbWUqIGV4ZWNDYWxsZXIs
IFZpcnR1YWxSZWdpc3RlciBmaXJzdEVsZW1lbnREZXN0LCBWaXJ0dWFsUmVnaXN0ZXIgY291bnRE
ZXN0LCBKU1ZhbHVlIHNvdXJjZSwgdWludDMyX3Qgb2Zmc2V0KTsKLSAgICB2b2lkIHNldHVwVmFy
YXJnc0ZyYW1lKENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVjQ2FsbGVlLCBK
U1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOwotICAgIHZvaWQg
c2V0dXBWYXJhcmdzRnJhbWVBbmRTZXRUaGlzKENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZy
YW1lKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNWYWx1ZSBhcmd1bWVudHMsIHVp
bnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0KTsKKworICAgIGlubGluZSBDYWxsRnJhbWUqIGNhbGxl
ZUZyYW1lRm9yVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgdW5zaWduZWQgbnVtVXNlZFN0
YWNrU2xvdHMsIHVuc2lnbmVkIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKQorICAgIHsKKyAg
ICAgICAgdW5zaWduZWQgcGFkZGVkQ2FsbGVlRnJhbWVPZmZzZXQgPSBXVEY6OnJvdW5kVXBUb011
bHRpcGxlT2YoCisgICAgICAgICAgICBzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLAorICAgICAg
ICAgICAgbnVtVXNlZFN0YWNrU2xvdHMgKyBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyArIEpT
U3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpOworICAgICAgICByZXR1cm4gQ2FsbEZyYW1lOjpj
cmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAtIHBhZGRlZENhbGxlZUZyYW1lT2Zmc2V0KTsK
KyAgICB9CisKKyAgICB1bnNpZ25lZCBzaXplRnJhbWVGb3JWYXJhcmdzKENhbGxGcmFtZSogZXhl
YywgSlNTdGFjayosIEpTVmFsdWUgYXJndW1lbnRzLCB1bnNpZ25lZCBudW1Vc2VkU3RhY2tTbG90
cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpOworICAgIHZvaWQgbG9hZFZhcmFyZ3MoQ2Fs
bEZyYW1lKiBleGVjQ2FsbGVyLCBWaXJ0dWFsUmVnaXN0ZXIgZmlyc3RFbGVtZW50RGVzdCwgSlNW
YWx1ZSBzb3VyY2UsIHVpbnQzMl90IG9mZnNldCwgdWludDMyX3QgbGVuZ3RoKTsKKyAgICB2b2lk
IHNldHVwVmFyYXJnc0ZyYW1lKENhbGxGcmFtZSogZXhlY0NhbGxlciwgQ2FsbEZyYW1lKiBleGVj
Q2FsbGVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIHVp
bnQzMl90IGxlbmd0aCk7CisgICAgdm9pZCBzZXR1cFZhcmFyZ3NGcmFtZUFuZFNldFRoaXMoQ2Fs
bEZyYW1lKiBleGVjQ2FsbGVyLCBDYWxsRnJhbWUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgdGhpc1Zh
bHVlLCBKU1ZhbHVlIGFyZ3VtZW50cywgdWludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQsIHVpbnQz
Ml90IGxlbmd0aCk7CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCShyZXZpc2lvbiAxNzk4NzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MzUsNiArNDM1LDE3IEBAIHB1YmxpYzoKICAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzQpOwog
ICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFy
ZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7Cisg
ICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAg
ICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIp
OworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVu
dChhcmc0KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzUpOworICAgIH0KKwogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMy
IGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBy
ZXNldENhbGxBcmd1bWVudHMoKTsKQEAgLTEzODEsNiArMTM5MiwxMiBAQCBwdWJsaWM6CiAgICAg
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9
CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0LCBH
UFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZT
RVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBHUFJSZWcgYXJnMywgIEdQ
UlJlZyBhcmc0KQogICAgIHsKICAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNF
VCk7CkBAIC0xNTI4LDYgKzE1NDUsMTIgQEAgcHVibGljOgogICAgICAgICBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHBv
a2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCiAgICAgewog
ICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CkBAIC0xNzY5LDYg
KzE3OTIsMTMgQEAgcHVibGljOgogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBzZXR1cFRo
cmVlU3R1YkFyZ3NHUFI8R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjIsIEdQUkluZm86OmFyZ3VtZW50R1BSND4oYXJnMSwgYXJnMiwgYXJnNCk7CisgICAgICAgIG1v
dmUoYXJnMywgR1BSSW5mbzo6YXJndW1lbnRHUFIzKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1Q
dHIgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBUcnVzdGVkSW1tUHRyIGFyZzUpCiAg
ICAgewogICAgICAgICBzZXR1cFRocmVlU3R1YkFyZ3NHUFI8R1BSSW5mbzo6YXJndW1lbnRHUFIw
LCBHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMz4oYXJnMSwgYXJn
MywgYXJnNCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE3OTg3NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTY3
OSw3ICs2NzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FTCwgVHJ1c3RlZEltbVB0cik7CiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0
LCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihDX0pJVE9wZXJhdGlvbl9FWiwgaW50MzJfdCk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oRl9KSVRPcGVyYXRpb25fRUpaWiwgR1BSUmVnLCBpbnQzMl90LCBp
bnQzMl90KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihaX0pJ
VE9wZXJhdGlvbl9FSlpaLCBHUFJSZWcsIGludDMyX3QsIGludDMyX3QpOwogICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0UsIGludCk7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUFhcEosIGludCwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSosIEdQUlJlZyk7CiAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUFhcEpjcFos
IGludCwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSosIEdQUlJlZywgaW50MzJfdCk7CkBAIC03MzAs
NyArNzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FSklkSkosIFJlZ2lzdGVySUQs
IGNvbnN0IElkZW50aWZpZXIqLCBSZWdpc3RlcklELCBSZWdpc3RlcklEKTsKICNpZiBVU0UoSlNW
QUxVRTY0KQotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZfSklU
T3BlcmF0aW9uX0VGSlosIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIGludDMyX3QpOworICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VGSlpa
LCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBpbnQzMl90LCBSZWdpc3RlcklEKTsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FU3NpSkpJ
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFN0cmluZ0ltcGwq
KTsKICNlbHNlCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRVNzaUpKSSwgU3RydWN0dXJlU3R1YkluZm8qLCBSZWdpc3RlcklELCBSZWdp
c3RlcklELCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBTdHJpbmdJbXBsKik7CkBAIC03NDUsOCAr
NzQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNh
bGxPcGVyYXRpb25XaXRoQ2FsbEZyYW1lUm9sbGJhY2tPbkV4Y2VwdGlvbihWX0pJVE9wZXJhdGlv
bl9FQ2IsIENvZGVCbG9jayopOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uV2l0aENhbGxGcmFtZVJvbGxiYWNrT25FeGNlcHRpb24oWl9KSVRPcGVyYXRpb25fRSk7
CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihGX0pJVE9wZXJhdGlvbl9FRkpaLCBSZWdpc3RlcklELCBSZWdpc3RlcklELCBS
ZWdpc3RlcklELCBpbnQzMl90KTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihGX0pJVE9wZXJhdGlvbl9FSlpaLCBHUFJSZWcsIEdQUlJlZywgaW50MzJfdCwgaW50
MzJfdCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRl9KSVRP
cGVyYXRpb25fRUZKWlosIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIGludDMy
X3QsIFJlZ2lzdGVySUQpOworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFpfSklUT3BlcmF0aW9uX0VKWlosIEdQUlJlZywgR1BSUmVnLCBpbnQzMl90LCBpbnQzMl90
KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJh
dGlvbl9FQWFwSiwgaW50LCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiwgR1BSUmVnLCBHUFJSZWcp
OwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VKLCBpbnQsIEdQUlJlZywgR1BSUmVnKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSklkYywgaW50LCBHUFJSZWcsIEdQUlJl
ZywgY29uc3QgSWRlbnRpZmllciopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbDMyXzY0LmNwcAkocmV2aXNpb24gMTc5ODc1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsMTYgKzE0MCwx
MSBAQCB2b2lkIEpJVDo6Y29tcGlsZVNldHVwVmFyYXJnc0ZyYW1lKEluc3RyCiAKICAgICBlbWl0
TG9hZChhcmd1bWVudHMsIHJlZ1QxLCByZWdUMCk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25TaXplRnJhbWVGb3JWYXJhcmdzLCByZWdUMSwgcmVnVDAsIC1maXJzdEZyZWVSZWdpc3Rlciwg
Zmlyc3RWYXJBcmdPZmZzZXQpOwotICAgIC8vIFRoaXMgaXMgc3BlY3RhY3VsYXJseSBkaXJ0eS4g
V2Ugd2FudCB0byBwYXNzIGZvdXIgYXJndW1lbnRzIHRvIG9wZXJhdGlvblNldHVwVmFyYXJnc0Zy
YW1lLiBPbiB4ODYtMzIgd2UKLSAgICAvLyB3aWxsIHBhc3MgdGhlbSBvbiB0aGUgc3RhY2suIFdl
IHdhbnQgZm91ciBzdGFjayBzbG90cywgb3IgMTYgYnl0ZXMuIEV4dGVuZGluZyB0aGUgc3RhY2sg
YnkgOCBieXRlcwotICAgIC8vIG92ZXIgd2hlcmUgd2UgcGxhbm5lZCBvbiBwb2ludGluZyB0aGUg
RlAgZ2l2ZXMgdXMgZW5vdWdoIHJvb20uIFRoZSByZWFzb24gaXMgdGhhdCB0aGUgRlAgZ2l2ZXMg
YW4KLSAgICAvLyBleHRyYSBDYWxsZXJGcmFtZUFuZFBDIGJ5dGVzIGJleW9uZCB3aGVyZSBTUCBz
aG91bGQgcG9pbnQgcHJpb3IgdG8gdGhlIGNhbGwuIFNvIGlmIHdlIGp1c3QgZGlkCi0gICAgLy8g
bW92ZShyZXR1cm5WYWx1ZUdQUiwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpLCB3ZSdkIGhhdmUgZW5v
dWdoIHJvb20gZm9yIHBhc3NpbmcgdHdvIGFyZ3MsIG9yIDgKLSAgICAvLyBieXRlcyAtIGV4Y2Vw
dCB0aGF0IHdlJ2QgaGF2ZSBhIG1pc2FsaWduZWQgc3RhY2suIFNvIGlmIHdlIHN1YnRyYWN0ICph
bm90aGVyKiBDYWxsZXJGcmFtZUFuZFBDCi0gICAgLy8gYnl0ZXMsIHdlIGFyZSB1cCB0byAxNiBi
eXRlcyBvZiBzcGFyZSByb29tICphbmQqIHdlIGhhdmUgYW4gYWxpZ25lZCBzdGFjay4gR3Jvc3Ms
IGJ1dCBjb3JyZWN0IQotICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLXNpemVvZihDYWxsZXJGcmFt
ZUFuZFBDKSksIHJldHVyblZhbHVlR1BSLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgZW1p
dExvYWQoYXJndW1lbnRzLCByZWdUMiwgcmVnVDEpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uU2V0dXBWYXJhcmdzRnJhbWUsIHJldHVyblZhbHVlR1BSLCByZWdUMiwgcmVnVDEsIGZpcnN0
VmFyQXJnT2Zmc2V0KTsKKyAgICBtb3ZlKFRydXN0ZWRJbW0zMigtZmlyc3RGcmVlUmVnaXN0ZXIp
LCByZWdUMSk7CisgICAgZW1pdFNldFZhcmFyZ3NGcmFtZSgqdGhpcywgcmV0dXJuVmFsdWVHUFIs
IGZhbHNlLCByZWdUMSwgcmVnVDEpOworICAgIGFkZFB0cihUcnVzdGVkSW1tMzIoLShzaXplb2Yo
Q2FsbGVyRnJhbWVBbmRQQykgKyBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1l
bnRCeXRlcygpLCA2ICogc2l6ZW9mKHZvaWQqKSkpKSwgcmVnVDEsIHN0YWNrUG9pbnRlclJlZ2lz
dGVyKTsKKyAgICBlbWl0TG9hZChhcmd1bWVudHMsIHJlZ1QyLCByZWdUNCk7CisgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZSwgcmVnVDEsIHJlZ1QyLCByZWdUNCwg
Zmlyc3RWYXJBcmdPZmZzZXQsIHJlZ1QwKTsKICAgICBtb3ZlKHJldHVyblZhbHVlR1BSLCByZWdU
MSk7CiAKICAgICBpZiAoY2FuT3B0aW1pemUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbC5jcHAJKHJldmlzaW9uIDE3OTg3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDkgKzgwLDExIEBAIHZvaWQgSklU
Ojpjb21waWxlU2V0dXBWYXJhcmdzRnJhbWUoSW5zdHIKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYXJndW1lbnRzLCByZWdUMSk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25TaXpl
RnJhbWVGb3JWYXJhcmdzLCByZWdUMSwgLWZpcnN0RnJlZVJlZ2lzdGVyLCBmaXJzdFZhckFyZ09m
ZnNldCk7Ci0gICAgbW92ZShyZXR1cm5WYWx1ZUdQUiwgc3RhY2tQb2ludGVyUmVnaXN0ZXIpOwot
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzLCByZWdUMSk7Ci0gICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25TZXR1cFZhcmFyZ3NGcmFtZSwgcmV0dXJuVmFsdWVHUFIsIHJlZ1Qx
LCBmaXJzdFZhckFyZ09mZnNldCk7CisgICAgbW92ZShUcnVzdGVkSW1tMzIoLWZpcnN0RnJlZVJl
Z2lzdGVyKSwgcmVnVDEpOworICAgIGVtaXRTZXRWYXJhcmdzRnJhbWUoKnRoaXMsIHJldHVyblZh
bHVlR1BSLCBmYWxzZSwgcmVnVDEsIHJlZ1QxKTsKKyAgICBhZGRQdHIoVHJ1c3RlZEltbTMyKC0o
c2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpICsgV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNr
QWxpZ25tZW50Qnl0ZXMoKSwgNSAqIHNpemVvZih2b2lkKikpKSksIHJlZ1QxLCBzdGFja1BvaW50
ZXJSZWdpc3Rlcik7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMsIHJlZ1Qy
KTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lLCByZWdUMSwg
cmVnVDIsIGZpcnN0VmFyQXJnT2Zmc2V0LCByZWdUMCk7CiAgICAgbW92ZShyZXR1cm5WYWx1ZUdQ
UiwgcmVnVDEpOwogCiAgICAgaWYgKGNhbk9wdGltaXplKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDE3OTg3NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksMTUgKzM2OSwx
NSBAQCBBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6CiAKIAogI2lmIFVT
RShKU1ZBTFVFNjQpCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2Fs
bE9wZXJhdGlvbihGX0pJVE9wZXJhdGlvbl9FSlpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIGlu
dDMyX3QgYXJnMiwgaW50MzJfdCBhcmczKQorQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxlcjo6
Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oWl9KSVRPcGVyYXRpb25fRUpaWiBvcGVyYXRpb24sIEdQ
UlJlZyBhcmcxLCBpbnQzMl90IGFyZzIsIGludDMyX3QgYXJnMykKIHsKICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbTMyKGFyZzIpLCBUcnVzdGVkSW1tMzIo
YXJnMykpOwogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlv
bik7CiB9CiAKLUFMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgSklUOjpjYWxsT3Bl
cmF0aW9uKEZfSklUT3BlcmF0aW9uX0VGSlogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIsIGludDMyX3QgYXJnMykKK0FMV0FZU19JTkxJTkUgTWFjcm9Bc3NlbWJsZXI6OkNhbGwg
SklUOjpjYWxsT3BlcmF0aW9uKEZfSklUT3BlcmF0aW9uX0VGSlpaIG9wZXJhdGlvbiwgR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyLCBpbnQzMl90IGFyZzMsIEdQUlJlZyBhcmc0KQogewotICAgIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tMzIoYXJnMykp
OworICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1t
MzIoYXJnMyksIGFyZzQpOwogICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNr
KG9wZXJhdGlvbik7CiB9CiAKQEAgLTUxNiwxNSArNTE2LDE1IEBAIEFMV0FZU19JTkxJTkUgTWFj
cm9Bc3NlbWJsZXI6OkNhbGwgSklUOjoKICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24p
OwogfQogCi1BTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJh
dGlvbihGX0pJVE9wZXJhdGlvbl9FSlpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzFUYWcsIEdQUlJl
ZyBhcmcxUGF5bG9hZCwgaW50MzJfdCBhcmcyLCBpbnQzMl90IGFyZzMpCitBTFdBWVNfSU5MSU5F
IE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJhdGlvbihaX0pJVE9wZXJhdGlvbl9F
SlpaIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCwgaW50MzJf
dCBhcmcyLCBpbnQzMl90IGFyZzMpCiB7CiAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBUcnVzdGVkSW1tMzIo
YXJnMiksIFRydXN0ZWRJbW0zMihhcmczKSk7CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhj
ZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0KIAotQUxXQVlTX0lOTElORSBNYWNyb0Fzc2VtYmxl
cjo6Q2FsbCBKSVQ6OmNhbGxPcGVyYXRpb24oRl9KSVRPcGVyYXRpb25fRUZKWiBvcGVyYXRpb24s
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCBpbnQzMl90
IGFyZzMpCitBTFdBWVNfSU5MSU5FIE1hY3JvQXNzZW1ibGVyOjpDYWxsIEpJVDo6Y2FsbE9wZXJh
dGlvbihGX0pJVE9wZXJhdGlvbl9FRkpaWiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCBpbnQzMl90IGFyZzMsIEdQUlJlZyBhcmc0KQog
ewotICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyUGF5bG9hZCwgYXJn
MlRhZywgVHJ1c3RlZEltbTMyKGFyZzMpKTsKKyAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMlBheWxvYWQsIGFyZzJUYWcsIFRydXN0ZWRJbW0zMihhcmczKSwgYXJnNCk7
CiAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKIH0K
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAkocmV2aXNpb24gMTc5ODc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwNCwyMiArMTYwNCwyMSBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkluCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CiB9CiAKLUNhbGxGcmFtZSogSklUX09QRVJBVElPTiBv
cGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEFyZ3VtZW50cywgaW50MzJfdCBudW1Vc2VkU3RhY2tTbG90cywgaW50MzJfdCBm
aXJzdFZhckFyZ09mZnNldCkKK2ludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25TaXplRnJh
bWVGb3JWYXJhcmdzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3Vt
ZW50cywgaW50MzJfdCBudW1Vc2VkU3RhY2tTbG90cywgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNl
dCkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIoJnZtLCBleGVjKTsKICAgICBKU1N0YWNrKiBzdGFjayA9ICZleGVjLT5pbnRlcnBy
ZXRlcigpLT5zdGFjaygpOwogICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRBcmd1bWVudHMpOwotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gc2l6ZUZy
YW1lRm9yVmFyYXJncyhleGVjLCBzdGFjaywgYXJndW1lbnRzLCBudW1Vc2VkU3RhY2tTbG90cywg
Zmlyc3RWYXJBcmdPZmZzZXQpOwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7CisgICAgcmV0dXJu
IHNpemVGcmFtZUZvclZhcmFyZ3MoZXhlYywgc3RhY2ssIGFyZ3VtZW50cywgbnVtVXNlZFN0YWNr
U2xvdHMsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKIH0KIAotQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblNldHVwVmFyYXJnc0ZyYW1lKEV4ZWNTdGF0ZSogZXhlYywgQ2FsbEZyYW1lKiBu
ZXdDYWxsRnJhbWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRBcmd1bWVudHMsIGludDMyX3QgZmly
c3RWYXJBcmdPZmZzZXQpCitDYWxsRnJhbWUqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uU2V0dXBW
YXJhcmdzRnJhbWUoRXhlY1N0YXRlKiBleGVjLCBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZEFyZ3VtZW50cywgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCwg
aW50MzJfdCBsZW5ndGgpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudHMg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEFyZ3VtZW50cyk7Ci0gICAgc2V0dXBWYXJhcmdzRnJh
bWUoZXhlYywgbmV3Q2FsbEZyYW1lLCBhcmd1bWVudHMsIGZpcnN0VmFyQXJnT2Zmc2V0KTsKKyAg
ICBzZXR1cFZhcmFyZ3NGcmFtZShleGVjLCBuZXdDYWxsRnJhbWUsIGFyZ3VtZW50cywgZmlyc3RW
YXJBcmdPZmZzZXQsIGxlbmd0aCk7CiAgICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDE3
OTg3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Nyw4ICs4Nyw3IEBAIGV4dGVybiAiQyIgewogICAgIFo6IGludDMyX3QK
ICovCiAKLXR5cGVkZWYgQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OICgqRl9KSVRPcGVyYXRpb25f
RUZKWikoRXhlY1N0YXRlKiwgQ2FsbEZyYW1lKiwgRW5jb2RlZEpTVmFsdWUsIGludDMyX3QpOwot
dHlwZWRlZiBDYWxsRnJhbWUqIEpJVF9PUEVSQVRJT04gKCpGX0pJVE9wZXJhdGlvbl9FSlpaKShF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgaW50MzJfdCk7Cit0eXBlZGVmIENh
bGxGcmFtZSogSklUX09QRVJBVElPTiAoKkZfSklUT3BlcmF0aW9uX0VGSlpaKShFeGVjU3RhdGUq
LCBDYWxsRnJhbWUqLCBFbmNvZGVkSlNWYWx1ZSwgaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVm
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FKShFeGVjU3Rh
dGUqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0
aW9uX0VBKShFeGVjU3RhdGUqLCBKU0FycmF5Kik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FQVopKEV4ZWNTdGF0ZSosIEpTQXJyYXkqLCBp
bnQzMl90KTsKQEAgLTE1MSw2ICsxNTAsNyBAQCB0eXBlZGVmIGludDY0X3QgSklUX09QRVJBVElP
TigqUV9KSVRPcGVyCiB0eXBlZGVmIGludDMyX3QgSklUX09QRVJBVElPTiAoKlpfSklUT3BlcmF0
aW9uX0QpKGRvdWJsZSk7CiB0eXBlZGVmIGludDMyX3QgSklUX09QRVJBVElPTiAoKlpfSklUT3Bl
cmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwogdHlwZWRlZiBpbnQzMl90IEpJVF9PUEVSQVRJT04gKCpa
X0pJVE9wZXJhdGlvbl9FQykoRXhlY1N0YXRlKiwgSlNDZWxsKik7Cit0eXBlZGVmIGludDMyX3Qg
SklUX09QRVJBVElPTiAoKlpfSklUT3BlcmF0aW9uX0VKWlopKEV4ZWNTdGF0ZSosIEVuY29kZWRK
U1ZhbHVlLCBpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYgc2l6ZV90IEpJVF9PUEVSQVRJT04g
KCpTX0pJVE9wZXJhdGlvbl9FQ0MpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCopOwogdHlw
ZWRlZiBzaXplX3QgSklUX09QRVJBVElPTiAoKlNfSklUT3BlcmF0aW9uX0VKKShFeGVjU3RhdGUq
LCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHNpemVfdCBKSVRfT1BFUkFUSU9OICgqU19KSVRP
cGVyYXRpb25fRUpKKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUp
OwpAQCAtMzA5LDggKzMwOSw4IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25UZWFyT2Zm
QXJndW0KIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZChF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBjb25zdCBJZGVudGlmaWVyKikgV1RGX0lO
VEVSTkFMOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFBOYW1lcyhFeGVjU3Rh
dGUqLCBKU09iamVjdCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uSW5zdGFuY2VPZihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgcHJvdG8pIFdURl9JTlRFUk5BTDsKLUNhbGxGcmFtZSogSklUX09QRVJBVElPTiBv
cGVyYXRpb25TaXplRnJhbWVGb3JWYXJhcmdzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGFy
Z3VtZW50cywgaW50MzJfdCBudW1Vc2VkU3RhY2tTbG90cywgaW50MzJfdCBmaXJzdFZhckFyZ09m
ZnNldCkgV1RGX0lOVEVSTkFMOwotQ2FsbEZyYW1lKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNl
dHVwVmFyYXJnc0ZyYW1lKEV4ZWNTdGF0ZSosIENhbGxGcmFtZSosIEVuY29kZWRKU1ZhbHVlIGFy
Z3VtZW50cywgaW50MzJfdCBmaXJzdFZhckFyZ09mZnNldCkgV1RGX0lOVEVSTkFMOworaW50MzJf
dCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblNpemVGcmFtZUZvclZhcmFyZ3MoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUgYXJndW1lbnRzLCBpbnQzMl90IG51bVVzZWRTdGFja1Nsb3RzLCBpbnQz
Ml90IGZpcnN0VmFyQXJnT2Zmc2V0KSBXVEZfSU5URVJOQUw7CitDYWxsRnJhbWUqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uU2V0dXBWYXJhcmdzRnJhbWUoRXhlY1N0YXRlKiwgQ2FsbEZyYW1lKiwg
RW5jb2RlZEpTVmFsdWUgYXJndW1lbnRzLCBpbnQzMl90IGZpcnN0VmFyQXJnT2Zmc2V0LCBpbnQz
Ml90IGxlbmd0aCkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25Ub09iamVjdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFM
OwogCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblN3aXRjaENoYXJXaXRoVW5rbm93bktl
eVR5cGUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUga2V5LCBzaXplX3QgdGFibGVJbmRleCkg
V1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFy
Z3NGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1
cFZhcmFyZ3NGcmFtZS5jcHAJKHJldmlzaW9uIDE3OTg3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvU2V0dXBWYXJhcmdzRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICsz
NCwyMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBlbWl0U2V0VmFyYXJnc0ZyYW1lKEND
YWxsSGVscGVycyYgaml0LCBHUFJSZWcgbGVuZ3RoR1BSLCBib29sIGxlbmd0aEluY2x1ZGVzVGhp
cywgR1BSUmVnIG51bVVzZWRTbG90c0dQUiwgR1BSUmVnIHJlc3VsdEdQUikKK3sKKyAgICBqaXQu
bW92ZShudW1Vc2VkU2xvdHNHUFIsIHJlc3VsdEdQUik7CisgICAgaml0LmFkZFB0cihsZW5ndGhH
UFIsIHJlc3VsdEdQUik7CisgICAgaml0LmFkZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgKGxlbmd0aEluY2x1ZGVzVGhpcz8gMCA6
IDEpKSwgcmVzdWx0R1BSKTsKKyAgICAKKyAgICAvLyByZXN1bHRHUFIgbm93IGhhcyB0aGUgcmVx
dWlyZWQgZnJhbWUgc2l6ZSBpbiBSZWdpc3RlciB1bml0cworICAgIC8vIFJvdW5kIHJlc3VsdEdQ
UiB0byBuZXh0IG11bHRpcGxlIG9mIHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkKKyAgICBqaXQu
YWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJz
KCkgLSAxKSwgcmVzdWx0R1BSKTsKKyAgICBqaXQuYW5kUHRyKENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKH4oc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSAtIDEpKSwgcmVzdWx0R1BSKTsKKyAg
ICAKKyAgICAvLyBOb3cgcmVzdWx0R1BSIGhhcyB0aGUgcmlnaHQgc3RhY2sgZnJhbWUgb2Zmc2V0
IGluIFJlZ2lzdGVyIHVuaXRzLgorICAgIGppdC5uZWdQdHIocmVzdWx0R1BSKTsKKyAgICBqaXQu
bHNoaWZ0UHRyKENDYWxsSGVscGVyczo6SW1tMzIoMyksIHJlc3VsdEdQUik7CisgICAgaml0LmFk
ZFB0cihHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcmVzdWx0R1BSKTsKK30KKwogdm9pZCBl
bWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZShDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVnIG51
bVVzZWRTbG90c0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIxLCBHUFJSZWcgc2NyYXRjaEdQUjIsIEdQ
UlJlZyBzY3JhdGNoR1BSMywgaW50IGlubGluZVN0YWNrT2Zmc2V0LCB1bnNpZ25lZCBmaXJzdFZh
ckFyZ09mZnNldCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd0Nhc2UpCiB7CiAgICAgQ0Nh
bGxIZWxwZXJzOjpKdW1wTGlzdCBlbmQ7CkBAIC00OCwxOSArNjUsOCBAQCB2b2lkIGVtaXRTZXR1
cFZhcmFyZ3NGcmFtZUZhc3RDYXNlKENDYWxsCiAgICAgICAgIGVuZFZhckFyZ3MubGluaygmaml0
KTsKICAgICB9CiAgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2gzMihDQ2FsbEhlbHBlcnM6
OkFib3ZlLCBzY3JhdGNoR1BSMSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoQXJndW1lbnRz
OjpNYXhBcmd1bWVudHMgKyAxKSkpOwotICAgIC8vIHNjcmF0Y2hHUFIxOiBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcwotICAgIGppdC5tb3ZlKG51bVVzZWRTbG90c0dQUiwgc2NyYXRjaEdQUjIp
OwotICAgIGppdC5hZGRQdHIoc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyKTsKLSAgICBqaXQuYWRk
UHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNp
emUpLCBzY3JhdGNoR1BSMik7Ci0gICAgLy8gc2NyYXRjaEdQUjIgbm93IGhhcyB0aGUgcmVxdWly
ZWQgZnJhbWUgc2l6ZSBpbiBSZWdpc3RlciB1bml0cwotICAgIC8vIFJvdW5kIHNjcmF0Y2hHUFIy
IHRvIG5leHQgbXVsdGlwbGUgb2Ygc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKQotICAgIGppdC5h
ZGRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMo
KSAtIDEpLCBzY3JhdGNoR1BSMik7Ci0gICAgaml0LmFuZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMih+KHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCkgLSAxKSksIHNjcmF0Y2hHUFIyKTsK
LQotICAgIGppdC5uZWdQdHIoc2NyYXRjaEdQUjIpOwotICAgIGppdC5sc2hpZnRQdHIoQ0NhbGxI
ZWxwZXJzOjpJbW0zMigzKSwgc2NyYXRjaEdQUjIpOwotICAgIGppdC5hZGRQdHIoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIHNjcmF0Y2hHUFIyKTsKLSAgICAvLyBzY3JhdGNoR1BSMjogbmV3
Q2FsbEZyYW1lCisgICAgCisgICAgZW1pdFNldFZhcmFyZ3NGcmFtZShqaXQsIHNjcmF0Y2hHUFIx
LCB0cnVlLCBudW1Vc2VkU2xvdHNHUFIsIHNjcmF0Y2hHUFIyKTsKIAogICAgIHNsb3dDYXNlLmFw
cGVuZChqaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6QWJvdmUsIENDYWxsSGVscGVyczo6QWJz
b2x1dGVBZGRyZXNzKGppdC52bSgpLT5hZGRyZXNzT2ZTdGFja0xpbWl0KCkpLCBzY3JhdGNoR1BS
MikpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NldHVwVmFyYXJnc0ZyYW1l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TZXR1cFZhcmFyZ3NG
cmFtZS5oCShyZXZpc2lvbiAxNzk4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Nl
dHVwVmFyYXJnc0ZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDExIEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCit2b2lkIGVtaXRTZXRWYXJhcmdzRnJhbWUoQ0NhbGxIZWxwZXJzJiwg
R1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBsZW5ndGhJbmNsdWRlc1RoaXMsIEdQUlJlZyBudW1Vc2Vk
U2xvdHNHUFIsIEdQUlJlZyByZXN1bHRHUFIpOworCiAvLyBBc3N1bWVzIHRoYXQgU1AgcmVmZXJz
IHRvIHRoZSBsYXN0IGluLXVzZSBzdGFjayBsb2NhdGlvbiwgYW5kIGFmdGVyIHRoaXMgcmV0dXJu
cyBTUCB3aWxsIHBvaW50IHRvCiAvLyB0aGUgbmV3bHkgY3JlYXRlZCBmcmFtZSBwbHVzIHRoZSBu
YXRpdmUgaGVhZGVyLiBzY3JhdGNoR1BSMiBtYXkgYmUgdGhlIHNhbWUgYXMgbnVtVXNlZFNsb3Rz
R1BSLgotdm9pZCBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZShDQ2FsbEhlbHBlcnMmIGpp
dCwgR1BSUmVnIG51bVVzZWRTbG90c0dQUiwgR1BSUmVnIHNjcmF0Y2hHUFIxLCBHUFJSZWcgc2Ny
YXRjaEdQUjIsIEdQUlJlZyBzY3JhdGNoR1BSMywgaW50IGlubGluZVN0YWNrT2Zmc2V0LCB1bnNp
Z25lZCBmaXJzdFZhckFyZ09mZnNldCwgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCYgc2xvd0Nhc2Up
Owordm9pZCBlbWl0U2V0dXBWYXJhcmdzRnJhbWVGYXN0Q2FzZShDQ2FsbEhlbHBlcnMmLCBHUFJS
ZWcgbnVtVXNlZFNsb3RzR1BSLCBHUFJSZWcgc2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BS
MiwgR1BSUmVnIHNjcmF0Y2hHUFIzLCBpbnQgaW5saW5lU3RhY2tPZmZzZXQsIHVuc2lnbmVkIGZp
cnN0VmFyQXJnT2Zmc2V0LCBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0JiBzbG93Q2FzZSk7CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDE3OTg3NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNjQs
MTAgKzExNjQsMTMgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NpemVfZnJhbQog
ICAgIC8vIFRoaXMgbmVlZHMgdG86CiAgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lIHdoaWxl
IHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4KICAgICAKLSAgICBFeGVjU3RhdGUq
IGV4ZWNDYWxsZWUgPSBzaXplRnJhbWVGb3JWYXJhcmdzKGV4ZWMsICZ2bS5pbnRlcnByZXRlci0+
c3RhY2soKSwKLSAgICAgICAgTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCksIC1wY1s1XS51Lm9wZXJh
bmQsIHBjWzZdLnUub3BlcmFuZCk7CisgICAgdW5zaWduZWQgbnVtVXNlZFN0YWNrU2xvdHMgPSAt
cGNbNV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHNpemVGcmFtZUZvclZhcmFy
Z3MoZXhlYywgJnZtLmludGVycHJldGVyLT5zdGFjaygpLAorICAgICAgICBMTElOVF9PUF9DKDQp
LmpzVmFsdWUoKSwgbnVtVXNlZFN0YWNrU2xvdHMsIHBjWzZdLnUub3BlcmFuZCk7CiAgICAgTExJ
TlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgZXhlYyk7CiAgICAgCisgICAgRXhlY1N0YXRl
KiBleGVjQ2FsbGVlID0gY2FsbGVlRnJhbWVGb3JWYXJhcmdzKGV4ZWMsIG51bVVzZWRTdGFja1Ns
b3RzLCBsZW5ndGggKyAxKTsKKyAgICB2bS52YXJhcmdzTGVuZ3RoID0gbGVuZ3RoOwogICAgIHZt
Lm5ld0NhbGxGcmFtZVJldHVyblZhbHVlID0gZXhlY0NhbGxlZTsKIAogICAgIExMSU5UX1JFVFVS
Tl9DQUxMRUVfRlJBTUUoZXhlY0NhbGxlZSk7CkBAIC0xMTg0LDcgKzExODcsNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF92YXJhCiAgICAgCiAgICAgRXhlY1N0YXRlKiBl
eGVjQ2FsbGVlID0gdm0ubmV3Q2FsbEZyYW1lUmV0dXJuVmFsdWU7CiAKLSAgICBzZXR1cFZhcmFy
Z3NGcmFtZUFuZFNldFRoaXMoZXhlYywgZXhlY0NhbGxlZSwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoNCkuanNWYWx1ZSgpLCBwY1s2XS51Lm9wZXJhbmQpOworICAgIHNldHVw
VmFyYXJnc0ZyYW1lQW5kU2V0VGhpcyhleGVjLCBleGVjQ2FsbGVlLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCksIHBjWzZdLnUub3BlcmFuZCwgdm0udmFy
YXJnc0xlbmd0aCk7CiAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgZXhlYyk7
CiAgICAgCiAgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihKU1N0YWNrOjpDYWxsZWUpID0gY2Fs
bGVlQXNWYWx1ZTsKQEAgLTEyMDUsNyArMTIwOCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jb25zdHJ1Y3QKICAgICAKICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSB2bS5u
ZXdDYWxsRnJhbWVSZXR1cm5WYWx1ZTsKICAgICAKLSAgICBzZXR1cFZhcmFyZ3NGcmFtZUFuZFNl
dFRoaXMoZXhlYywgZXhlY0NhbGxlZSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09Q
X0MoNCkuanNWYWx1ZSgpLCBwY1s2XS51Lm9wZXJhbmQpOworICAgIHNldHVwVmFyYXJnc0ZyYW1l
QW5kU2V0VGhpcyhleGVjLCBleGVjQ2FsbGVlLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQyg0KS5qc1ZhbHVlKCksIHBjWzZdLnUub3BlcmFuZCwgdm0udmFyYXJnc0xlbmd0aCk7
CiAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgZXhlYyk7CiAgICAgCiAgICAg
ZXhlY0NhbGxlZS0+dW5jaGVja2VkUihKU1N0YWNrOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcAkocmV2
aXNpb24gMTc5ODc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsMjIgKzg3LDEzIEBAIHZvaWQgQXJndW1lbnRzOjpj
b3B5QmFja2luZ1N0b3JlKEpTQ2VsbCoKICAgICAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFyZ3VtZW50c0Z1bmNJdGVyYXRvcihFeGVjU3RhdGUqKTsKIAotdm9pZCBBcmd1
bWVudHM6OmNvcHlUb0FyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMsIFZpcnR1YWxSZWdpc3RlciBm
aXJzdEVsZW1lbnREZXN0LCB1aW50MzJfdCBjb3B5TGVuZ3RoLCBpbnQzMl90IGZpcnN0VmFyQXJn
T2Zmc2V0KQordm9pZCBBcmd1bWVudHM6OmNvcHlUb0FyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMs
IFZpcnR1YWxSZWdpc3RlciBmaXJzdEVsZW1lbnREZXN0LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCkKIHsKLSAgICB1aW50MzJfdCBsZW5ndGggPSBjb3B5TGVuZ3RoICsgZmlyc3RW
YXJBcmdPZmZzZXQ7Ci0KLSAgICBpZiAoVU5MSUtFTFkobV9vdmVycm9kZUxlbmd0aCkpIHsKLSAg
ICAgICAgbGVuZ3RoID0gbWluKGdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
KS50b1VJbnQzMihleGVjKSwgbGVuZ3RoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZmly
c3RWYXJBcmdPZmZzZXQ7IGkgPCBsZW5ndGg7IGkrKykKLSAgICAgICAgICAgIGV4ZWMtPnIoZmly
c3RFbGVtZW50RGVzdCArIGkgLSBmaXJzdFZhckFyZ09mZnNldCkgPSBnZXQoZXhlYywgaSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUKGxlbmd0aCA9PSB0aGlzLT5sZW5ndGgo
ZXhlYykpOwotICAgIGZvciAoc2l6ZV90IGkgPSBmaXJzdFZhckFyZ09mZnNldDsgaSA8IGxlbmd0
aDsgKytpKSB7Ci0gICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gdHJ5R2V0QXJndW1lbnQoaSkp
Ci0gICAgICAgICAgICBleGVjLT5yKGZpcnN0RWxlbWVudERlc3QgKyBpIC0gZmlyc3RWYXJBcmdP
ZmZzZXQpID0gdmFsdWU7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytp
KSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gdHJ5R2V0QXJndW1lbnQoaSArIG9mZnNl
dCkpCisgICAgICAgICAgICBleGVjLT5yKGZpcnN0RWxlbWVudERlc3QgKyBpKSA9IHZhbHVlOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGV4ZWMtPnIoZmlyc3RFbGVtZW50RGVzdCArIGkg
LSBmaXJzdFZhckFyZ09mZnNldCkgPSBnZXQoZXhlYywgaSk7CisgICAgICAgICAgICBleGVjLT5y
KGZpcnN0RWxlbWVudERlc3QgKyBpKSA9IGdldChleGVjLCBpICsgb2Zmc2V0KTsKICAgICAgICAg
ICAgIGlmIChVTkxJS0VMWShleGVjLT52bSgpLmV4Y2VwdGlvbigpKSkKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ3VtZW50cy5oCShyZXZpc2lvbiAxNzk4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBtX251bUFyZ3VtZW50czsgCiAgICAgfQogICAgICAgICAKLSAg
ICB2b2lkIGNvcHlUb0FyZ3VtZW50cyhFeGVjU3RhdGUqLCBWaXJ0dWFsUmVnaXN0ZXIgZmlyc3RF
bGVtZW50RGVzdCwgdWludDMyX3QgY29weUxlbmd0aCwgaW50MzJfdCBmaXJzdEFyZ3VtZW50T2Zm
c2V0KTsKKyAgICB2b2lkIGNvcHlUb0FyZ3VtZW50cyhFeGVjU3RhdGUqLCBWaXJ0dWFsUmVnaXN0
ZXIgZmlyc3RFbGVtZW50RGVzdCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwog
ICAgIHZvaWQgdGVhck9mZihDYWxsRnJhbWUqKTsKICAgICB2b2lkIHRlYXJPZmYoQ2FsbEZyYW1l
KiwgSW5saW5lQ2FsbEZyYW1lKik7CiAgICAgdm9pZCB0ZWFyT2ZmRm9yQ2xvbmluZyhDYWxsRnJh
bWUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCShy
ZXZpc2lvbiAxNzk4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3MCwxMiArMTU3MCwxMiBAQCB2b2lkIEpTQXJyYXk6
OmZpbGxBcmdMaXN0KEV4ZWNTdGF0ZSogZXhlCiAgICAgICAgIGFyZ3MuYXBwZW5kKGdldChleGVj
LCBpKSk7CiB9CiAKLXZvaWQgSlNBcnJheTo6Y29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhl
YywgVmlydHVhbFJlZ2lzdGVyIGZpcnN0RWxlbWVudERlc3QsIHVpbnQzMl90IGNvcHlMZW5ndGgs
IGludDMyX3QgZmlyc3RWYXJBcmdPZmZzZXQpCit2b2lkIEpTQXJyYXk6OmNvcHlUb0FyZ3VtZW50
cyhFeGVjU3RhdGUqIGV4ZWMsIFZpcnR1YWxSZWdpc3RlciBmaXJzdEVsZW1lbnREZXN0LCB1bnNp
Z25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKIHsKLSAgICB1bnNpZ25lZCBpID0gZmlyc3RW
YXJBcmdPZmZzZXQ7CisgICAgdW5zaWduZWQgaSA9IG9mZnNldDsKICAgICBXcml0ZUJhcnJpZXI8
VW5rbm93bj4qIHZlY3RvcjsKICAgICB1bnNpZ25lZCB2ZWN0b3JFbmQ7Ci0gICAgdW5zaWduZWQg
bGVuZ3RoID0gY29weUxlbmd0aCArIGZpcnN0VmFyQXJnT2Zmc2V0OworICAgIGxlbmd0aCArPSBv
ZmZzZXQ7IC8vIFdlIGxpa2UgdG8gdGhpbmsgb2YgdGhlIGxlbmd0aCBhcyBiZWluZyBvdXIgbGVu
Z3RoLCByYXRoZXIgdGhhbiB0aGUgb3V0cHV0IGxlbmd0aC4KICAgICBBU1NFUlQobGVuZ3RoID09
IHRoaXMtPmxlbmd0aCgpKTsKICAgICBzd2l0Y2ggKGluZGV4aW5nVHlwZSgpKSB7CiAgICAgY2Fz
ZSBBcnJheUNsYXNzOgpAQCAtMTYwMiw3ICsxNjAyLDcgQEAgdm9pZCBKU0FycmF5Ojpjb3B5VG9B
cmd1bWVudHMoRXhlY1N0YXRlKgogICAgICAgICAgICAgZG91YmxlIHYgPSBtX2J1dHRlcmZseS0+
Y29udGlndW91c0RvdWJsZSgpW2ldOwogICAgICAgICAgICAgaWYgKHYgIT0gdikKICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGV4ZWMtPnIoZmlyc3RFbGVtZW50RGVzdCArIGkg
LSBmaXJzdFZhckFyZ09mZnNldCkgPSBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCB2
KTsKKyAgICAgICAgICAgIGV4ZWMtPnIoZmlyc3RFbGVtZW50RGVzdCArIGkgLSBvZmZzZXQpID0g
SlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0RvdWJsZSwgdik7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtMTYyNywxMSArMTYyNywxMSBAQCB2b2lkIEpTQXJyYXk6OmNvcHlU
b0FyZ3VtZW50cyhFeGVjU3RhdGUqCiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgdiA9
IHZlY3RvcltpXTsKICAgICAgICAgaWYgKCF2KQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGV4ZWMtPnIoZmlyc3RFbGVtZW50RGVzdCArIGkgLSBmaXJzdFZhckFyZ09mZnNldCkgPSB2Lmdl
dCgpOworICAgICAgICBleGVjLT5yKGZpcnN0RWxlbWVudERlc3QgKyBpIC0gb2Zmc2V0KSA9IHYu
Z2V0KCk7CiAgICAgfQogICAgIAogICAgIGZvciAoOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgZXhlYy0+cihmaXJzdEVsZW1lbnREZXN0ICsgaSAtIGZpcnN0VmFyQXJnT2Zmc2V0KSA9IGdl
dChleGVjLCBpKTsKKyAgICAgICAgZXhlYy0+cihmaXJzdEVsZW1lbnREZXN0ICsgaSAtIG9mZnNl
dCkgPSBnZXQoZXhlYywgaSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShleGVjLT52bSgpLmV4Y2Vw
dGlvbigpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAxNzk4NzUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsx
MzIsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBmaWxs
QXJnTGlzdChFeGVjU3RhdGUqLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYpOwotICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgY29weVRvQXJndW1lbnRzKEV4ZWNTdGF0ZSosIFZpcnR1YWxSZWdpc3Rl
ciBmaXJzdEVsZW1lbnREZXN0LCB1aW50MzJfdCBsZW5ndGgsIGludDMyX3QgZmlyc3RWYXJBcmdP
ZmZzZXQpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgY29weVRvQXJndW1lbnRzKEV4ZWNT
dGF0ZSosIFZpcnR1YWxSZWdpc3RlciBmaXJzdEVsZW1lbnREZXN0LCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCk7CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE3OTg3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxMCw2ICs0MTAsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOwogCiAg
ICAgSlNWYWx1ZSBob3N0Q2FsbFJldHVyblZhbHVlOworICAgIHVuc2lnbmVkIHZhcmFyZ3NMZW5n
dGg7CiAgICAgRXhlY1N0YXRlKiBuZXdDYWxsRnJhbWVSZXR1cm5WYWx1ZTsKICAgICBWTUVudHJ5
RnJhbWUqIHZtRW50cnlGcmFtZUZvclRocm93OwogICAgIEV4ZWNTdGF0ZSogY2FsbEZyYW1lRm9y
VGhyb3c7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2NhbGwtdmFy
YXJncy1sZW5ndGgtZWZmZWN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2NhbGwtdmFyYXJncy1sZW5ndGgtZWZmZWN0cy5qcwkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvY2FsbC12YXJhcmdzLWxl
bmd0aC1lZmZlY3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjQgQEAKK2Z1bmN0aW9u
IGZvbygpIHsgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg7IH0KKwordmFyIG8gPSB7fTsKK29bMF0g
PSA0MjsKK3ZhciBjYWxsQ291bnQgPSAwOworby5fX2RlZmluZUdldHRlcl9fKCJsZW5ndGgiLCBm
dW5jdGlvbigpIHsKKyAgICBjYWxsQ291bnQrKzsKKyAgICByZXR1cm4gMTsKK30pOworCitmdW5j
dGlvbiBiYXIoKSB7CisgICAgY2FsbENvdW50ID0gMDsKKyAgICB2YXIgcmVzdWx0ID0gZm9vLmFw
cGx5KHRoaXMsIG8pOworICAgIGlmIChyZXN1bHQgIT0gMSkKKyAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworICAgIGlmIChjYWxsQ291bnQgIT0gMSkKKyAgICAg
ICAgdGhyb3cgIkVycm9yOiBiYWQgY2FsbCBjb3VudDogIiArIGNhbGxDb3VudDsKK30KKworbm9J
bmxpbmUoZm9vKTsKK25vSW5saW5lKGJhcik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7
ICsraSkKKyAgICBiYXIoKTsK
</data>
<flag name="review"
          id="271277"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>