<?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>80467</bug_id>
          
          <creation_ts>2012-03-06 18:12:39 -0800</creation_ts>
          <short_desc>Array.prototype functions should throw if delete fails</short_desc>
          <delta_ts>2012-03-06 23:49:13 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>572391</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-06 18:12:39 -0800</bug_when>
    <thetext>All calls to [[Delete]] from Array.prototype are specified to pass &apos;true&apos; as the value of Throw.  In the case of shift/unshift, these are also missing a throw from the &apos;put&apos; in the implementations in JSArray.cpp.  There are effectively three copies of each of the generic shift/unshift routines, one in splice, one in ArrayPrototype&apos;s shift/unshift methods, and one in JSArray&apos;s shift/unshift routines, for handling arrays with holes.  These three copies should be unified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572396</commentid>
    <comment_count>1</comment_count>
      <attachid>130505</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-06 18:16:16 -0800</bug_when>
    <thetext>Created attachment 130505
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572400</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-06 18:18:32 -0800</bug_when>
    <thetext>Attachment 130505 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast...&quot; exit_code: 1
LayoutTests/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572409</commentid>
    <comment_count>3</comment_count>
      <attachid>130509</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-06 18:24:17 -0800</bug_when>
    <thetext>Created attachment 130509
Fix (forgot a ChangeLog in last patch)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572599</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-06 23:49:13 -0800</bug_when>
    <thetext>Fixed in r110026</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130505</attachid>
            <date>2012-03-06 18:16:16 -0800</date>
            <delta_ts>2012-03-06 18:24:17 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>80467.patch</filename>
            <type>text/plain</type>
            <size>27366</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA5OTkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEyLTAzLTA2ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBBcnJheS5wcm90b3R5cGUgZnVuY3Rpb25zIHNob3VsZCB0aHJvdyBpZiBkZWxl
dGUgZmFpbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgwNDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWxsIGNhbGxzIHRvIFtbRGVsZXRlXV0gZnJvbSBBcnJheS5wcm90b3R5cGUgYXJlIHNwZWNpZmll
ZCB0byBwYXNzICd0cnVlJyBhcyB0aGUgdmFsdWUgb2YgVGhyb3cuCisgICAgICAgIEluIHRoZSBj
YXNlIG9mIHNoaWZ0L3Vuc2hpZnQsIHRoZXNlIGFyZSBhbHNvIG1pc3NpbmcgYSB0aHJvdyBmcm9t
IHRoZSAncHV0JyBpbiB0aGUgaW1wbGVtZW50YXRpb25zCisgICAgICAgIGluIEpTQXJyYXkuY3Bw
LiBUaGVyZSBhcmUgZWZmZWN0aXZlbHkgdGhyZWUgY29waWVzIG9mIGVhY2ggb2YgdGhlIGdlbmVy
aWMgc2hpZnQvdW5zaGlmdCByb3V0aW5lcywKKyAgICAgICAgb25lIGluIHNwbGljZSwgb25lIGlu
IEFycmF5UHJvdG90eXBlJ3Mgc2hpZnQvdW5zaGlmdCBtZXRob2RzLCBhbmQgb25lIGluIEpTQXJy
YXkncyBzaGlmdC91bnNoaWZ0CisgICAgICAgIHJvdXRpbmVzLCBmb3IgaGFuZGxpbmcgYXJyYXlz
IHdpdGggaG9sZXMuIFRoZXNlIHRocmVlIGNvcGllcyBzaG91bGQgYmUgdW5pZmllZC4KKworICAg
ICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpzaGlmdCk6
CisgICAgICAgIChKU0M6OnVuc2hpZnQpOgorICAgICAgICAgICAgLSBBZGRlZCAtIHNoYXJlZCBj
b3BpZXMgb2YgdGhlIHNoaWZ0L3Vuc2hpZnQgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgKEpTQzo6
YXJyYXlQcm90b0Z1bmNQb3ApOgorICAgICAgICAgICAgLSBzaG91bGQgdGhyb3cgaWYgdGhlIGRl
bGV0ZSBmYWlscy4KKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAg
ICAgICAgIC0gc2hvdWxkIHRocm93IGlmIHRoZSBkZWxldGUgZmFpbHMuCisgICAgICAgIChKU0M6
OmFycmF5UHJvdG9GdW5jU2hpZnQpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NwbGlj
ZSk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVW5TaGlmdCk6CisgICAgICAgICAgICAt
IHVzZSBzaGlmdC91bnNoaWZ0LgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXJyYXk6OnNoaWZ0Q291bnQpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp1
bnNoaWZ0Q291bnQpOgorICAgICAgICAgICAgLSBEb24ndCB0cnkgdG8gaGFuZGxlIGFycmF5cyB3
aXRoIGhvbGVzOyByZXR1cm4gYSB2YWx1ZSBpbmRpY2F0aW5nCisgICAgICAgICAgICAgIHRoZSBn
ZW5lcmljIHJvdXRpbmUgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KKyAgICAgICAgKiBydW50aW1l
L0pTQXJyYXkuaDoKKyAgICAgICAgICAgIC0gZGVjbGFyYXRpb24gZm9yIHNoaWZ0Q291bnQvdW5z
aGlmdENvdW50IGNoYW5nZWQuCisgICAgICAgICogdGVzdHMvbW96aWxsYS9qczFfNi9BcnJheS9y
ZWdyZXNzLTMwNDgyOC5qczoKKyAgICAgICAgICAgIC0gdGhpcyB3YXMgYXNzZXJ0aW5nIGluY29y
cmVjdCBiZWhhdmlvdXIuCisKIDIwMTItMDMtMDYgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5i
ZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBHQ0FjdGl2aXR5Q2FsbGJhY2sgdGltZXIgc2hvdWxk
IHZhcnkgd2l0aCB0aGUgbGVuZ3RoIG9mIHRoZSBwcmV2aW91cyBHQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MTA5OTUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNiArMTY2LDkwIEBAIHN0YXRpYyB1bnNpZ25lZCBh
cmd1bWVudENsYW1wZWRJbmRleEZyb20KICAgICByZXR1cm4gaW5kZXhEb3VibGUgPiBsZW5ndGgg
PyBsZW5ndGggOiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXhEb3VibGUpOwogfQogCisKKy8v
IFRoZSBzaGlmdC91bnNoaWZ0IGZ1bmN0aW9uIGltcGxlbWVudCB0aGUgc2hpZnQvdW5zaGlmdCBi
ZWhhdmlvdXIgcmVxdWlyZWQKKy8vIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGFycmF5IHByb3RvdHlw
ZSBtZXRob2RzLCBhbmQgYnkgc3BsaWNlLiBJbiBib3RoIGNhc2VzLAorLy8gdGhlIG1ldGhvZHMg
YXJlIG9wZXJhdGluZyBhbiBhbiBhcnJheSBvciBhcnJheSBsaWtlIG9iamVjdC4KKy8vCisvLyAg
aGVhZGVyICBjdXJyZW50Q291bnQgIChyZW1haW5kZXIpCisvLyBbLS0tLS0tXVstLS0tLS0tLS0t
LS1dWy0tLS0tLS0tLS0tXQorLy8gIGhlYWRlciAgcmVzdWx0Q291bnQgIChyZW1haW5kZXIpCisv
LyBbLS0tLS0tXVstLS0tLS0tLS0tLV1bLS0tLS0tLS0tLS1dCisvLworLy8gVGhlIHNldCBvZiBw
cm9wZXJ0aWVzIGluIHRoZSByYW5nZSAnaGVhZGVyJyBtdXN0IGJlIHVuY2hhbmdlZC4gVGhlIHNl
dCBvZgorLy8gcHJvcGVydGllcyBpbiB0aGUgcmFuZ2UgJ3JlbWFpbmRlcicgKHdoZXJlIHJlbWFp
bmRlciA9IGxlbmd0aCAtIGhlYWRlciAtCisvLyBjdXJyZW50Q291bnQpIHdpbGwgYmUgc2hpZnRl
ZCB0byB0aGUgbGVmdCBvciByaWdodCBhcyBhcHByb3ByaWF0ZTsgaW4gdGhlCisvLyBjYXNlIG9m
IHNoaWZ0IHRoaXMgbXVzdCBiZSByZW1vdmluZyB2YWx1ZXMsIGluIHRoZSBjYXNlIG9mIHVuc2hp
ZnQgdGhpcworLy8gbXVzdCBiZSBpbnRyb2R1Y2luZyBuZXcgdmFsdWVzLgorc3RhdGljIGlubGlu
ZSB2b2lkIHNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIHVuc2lnbmVk
IGhlYWRlciwgdW5zaWduZWQgY3VycmVudENvdW50LCB1bnNpZ25lZCByZXN1bHRDb3VudCwgdW5z
aWduZWQgbGVuZ3RoKQoreworICAgIEFTU0VSVChjdXJyZW50Q291bnQgPiByZXN1bHRDb3VudCk7
CisgICAgdW5zaWduZWQgY291bnQgPSBjdXJyZW50Q291bnQgLSByZXN1bHRDb3VudDsKKworICAg
IEFTU0VSVChoZWFkZXIgPD0gbGVuZ3RoKTsKKyAgICBBU1NFUlQoY3VycmVudENvdW50IDw9IChs
ZW5ndGggLSBoZWFkZXIpKTsKKworICAgIGlmICghaGVhZGVyICYmIGlzSlNBcnJheSh0aGlzT2Jq
KSAmJiBhc0FycmF5KHRoaXNPYmopLT5zaGlmdENvdW50KGV4ZWMsIGNvdW50KSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZm9yICh1bnNpZ25lZCBrID0gaGVhZGVyOyBrIDwgbGVuZ3RoIC0gY3Vy
cmVudENvdW50OyArK2spIHsKKyAgICAgICAgdW5zaWduZWQgZnJvbSA9IGsgKyBjdXJyZW50Q291
bnQ7CisgICAgICAgIHVuc2lnbmVkIHRvID0gayArIHJlc3VsdENvdW50OworICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqKTsKKyAgICAgICAgaWYgKHRoaXNPYmotPmdldFByb3BlcnR5
U2xvdChleGVjLCBmcm9tLCBzbG90KSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHNs
b3QuZ2V0VmFsdWUoZXhlYywgZnJvbSk7CisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgdGhpc09iai0+bWV0
aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bywgdmFsdWUsIHRydWUpOwor
ICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRl
UHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvKSkgeworICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBrID0gbGVuZ3Ro
OyBrID4gbGVuZ3RoIC0gY291bnQ7IC0taykgeworICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhv
ZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrIC0gMSkpIHsK
KyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3Bl
cnR5LiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorc3RhdGlj
IGlubGluZSB2b2lkIHVuc2hpZnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwg
dW5zaWduZWQgaGVhZGVyLCB1bnNpZ25lZCBjdXJyZW50Q291bnQsIHVuc2lnbmVkIHJlc3VsdENv
dW50LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgQVNTRVJUKHJlc3VsdENvdW50ID4gY3VycmVu
dENvdW50KTsKKyAgICB1bnNpZ25lZCBjb3VudCA9IHJlc3VsdENvdW50IC0gY3VycmVudENvdW50
OworCisgICAgQVNTRVJUKGhlYWRlciA8PSBsZW5ndGgpOworICAgIEFTU0VSVChjdXJyZW50Q291
bnQgPD0gKGxlbmd0aCAtIGhlYWRlcikpOworCisgICAgLy8gR3VhcmQgYWdhaW5zdCBvdmVyZmxv
dy4KKyAgICBpZiAoY291bnQgPiAoVUlOVF9NQVggLSBsZW5ndGgpKSB7CisgICAgICAgIHRocm93
T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghaGVhZGVyICYmIGlzSlNBcnJheSh0aGlzT2JqKSAmJiBhc0FycmF5KHRoaXNPYmopLT51bnNo
aWZ0Q291bnQoZXhlYywgY291bnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHVuc2ln
bmVkIGsgPSBsZW5ndGggLSBjdXJyZW50Q291bnQ7IGsgPiBoZWFkZXI7IC0taykgeworICAgICAg
ICB1bnNpZ25lZCBmcm9tID0gayArIGN1cnJlbnRDb3VudCAtIDE7CisgICAgICAgIHVuc2lnbmVk
IHRvID0gayArIHJlc3VsdENvdW50IC0gMTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhp
c09iaik7CisgICAgICAgIGlmICh0aGlzT2JqLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgZnJvbSwg
c2xvdCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzbG90LmdldFZhbHVlKGV4ZWMs
IGZyb20pOworICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5
SW5kZXgodGhpc09iaiwgZXhlYywgdG8sIHZhbHVlLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIGlm
ICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmos
IGV4ZWMsIHRvKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0
byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhv
c3RUaGlzVmFsdWUoKTsKQEAgLTQwMiw3ICs0ODYsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRgogICAgICAgICByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIHJlc3VsdCA9IHRoaXNPYmotPmdldChleGVjLCBsZW5ndGggLSAx
KTsKLSAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4
KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCAtIDEpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJ
bmRleCh0aGlzT2JqLCBleGVjLCBsZW5ndGggLSAxKSkgeworICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgICAgICB9CiAgICAgICAg
IHB1dFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgs
IGpzTnVtYmVyKGxlbmd0aCAtIDEpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwpAQCAtNDU3LDE5ICs1NDYsMjMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRgogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgICAg
IGlmIChvYmoyKQorICAgICAgICBpZiAob2JqMikgewogICAgICAgICAgICAgdGhpc09iai0+bWV0
aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrLCBvYmoyLCB0cnVlKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJv
cGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGspOwotICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAg
fSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4
KHRoaXNPYmosIGV4ZWMsIGspKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAi
VW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgICAgIH0KIAotICAgICAgICBpZiAob2JqKQor
ICAgICAgICBpZiAob2JqKSB7CiAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5w
dXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxrMSwgb2JqLCB0cnVlKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4
KHRoaXNPYmosIGV4ZWMsIGxrMSk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgICAgICB9IGVsc2UgaWYg
KCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwg
ZXhlYywgbGsxKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0
byBkZWxldGUgcHJvcGVydHkuIik7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhpc09iaik7CiB9CkBAIC00ODcsMjIgKzU4MCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgcmVzdWx0ID0ganNVbmRlZmluZWQoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICByZXN1bHQgPSB0aGlzT2JqLT5nZXQoZXhlYywgMCk7Ci0g
ICAgICAgIGlmIChpc0pTQXJyYXkodGhpc09iaikpCi0gICAgICAgICAgICAoKEpTQXJyYXkgKil0
aGlzT2JqKS0+c2hpZnRDb3VudChleGVjLCAxKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGsgPSAxOyBrIDwgbGVuZ3RoOyBrKyspIHsKLSAgICAgICAgICAgICAg
ICBKU1ZhbHVlIG9iaiA9IGdldFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGspOwotICAgICAgICAg
ICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgICAgICAgICBpZiAo
b2JqKQotICAgICAgICAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUlu
ZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxLCBvYmosIHRydWUpOwotICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJv
cGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxKTsKLSAgICAgICAgICAgICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlz
T2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywg
bGVuZ3RoIC0gMSk7Ci0gICAgICAgIH0KKyAgICAgICAgc2hpZnQoZXhlYywgdGhpc09iaiwgMCwg
MSwgMCwgbGVuZ3RoKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgcHV0
UHJvcGVydHkoZXhlYywgdGhpc09iaiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNO
dW1iZXIobGVuZ3RoIC0gMSkpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CkBAIC02MzksNDIgKzcxOSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GCiAgICAgcmVzT2JqLT5jb21wbGV0ZUluaXRpYWxpemF0aW9uKGRlbGV0ZUNv
dW50KTsKIAogICAgIHVuc2lnbmVkIGFkZGl0aW9uYWxBcmdzID0gc3RkOjptYXg8aW50PihleGVj
LT5hcmd1bWVudENvdW50KCkgLSAyLCAwKTsKLSAgICBpZiAoYWRkaXRpb25hbEFyZ3MgIT0gZGVs
ZXRlQ291bnQpIHsKLSAgICAgICAgaWYgKGFkZGl0aW9uYWxBcmdzIDwgZGVsZXRlQ291bnQpIHsK
LSAgICAgICAgICAgIGlmICgoIWJlZ2luKSAmJiAoaXNKU0FycmF5KHRoaXNPYmopKSkKLSAgICAg
ICAgICAgICAgICAoKEpTQXJyYXkgKil0aGlzT2JqKS0+c2hpZnRDb3VudChleGVjLCBkZWxldGVD
b3VudCAtIGFkZGl0aW9uYWxBcmdzKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgayA9IGJlZ2luOyBrIDwgbGVuZ3RoIC0gZGVsZXRlQ291bnQ7ICsr
aykgewotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIHYgPSBnZXRQcm9wZXJ0eShleGVjLCB0
aGlzT2JqLCBrICsgZGVsZXRlQ291bnQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAodikKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhp
c09iaiwgZXhlYywgayArIGFkZGl0aW9uYWxBcmdzLCB2LCB0cnVlKTsKLSAgICAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUo
KS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgKyBhZGRpdGlvbmFsQXJn
cyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgayA9IGxl
bmd0aDsgayA+IGxlbmd0aCAtIGRlbGV0ZUNvdW50ICsgYWRkaXRpb25hbEFyZ3M7IC0taykKLSAg
ICAgICAgICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlC
eUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmICgoIWJlZ2luKSAmJiAoaXNKU0FycmF5KHRoaXNPYmopKSkK
LSAgICAgICAgICAgICAgICAoKEpTQXJyYXkgKil0aGlzT2JqKS0+dW5zaGlmdENvdW50KGV4ZWMs
IGFkZGl0aW9uYWxBcmdzIC0gZGVsZXRlQ291bnQpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gbGVuZ3RoIC0gZGVsZXRlQ291bnQ7IGsgPiBi
ZWdpbjsgLS1rKSB7Ci0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgb2JqID0gZ2V0UHJvcGVy
dHkoZXhlYywgdGhpc09iaiwgayArIGRlbGV0ZUNvdW50IC0gMSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChvYmopCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgp
LT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgKyBhZGRpdGlvbmFsQXJncyAtIDEsIG9iaiwg
dHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBl
eGVjLCBrICsgYWRkaXRpb25hbEFyZ3MgLSAxKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KKyAgICBpZiAoYWRkaXRpb25hbEFyZ3MgPCBkZWxldGVDb3VudCkgewor
ICAgICAgICBzaGlmdChleGVjLCB0aGlzT2JqLCBiZWdpbiwgZGVsZXRlQ291bnQsIGFkZGl0aW9u
YWxBcmdzLCBsZW5ndGgpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0gZWxz
ZSBpZiAoYWRkaXRpb25hbEFyZ3MgPiBkZWxldGVDb3VudCkgeworICAgICAgICB1bnNoaWZ0KGV4
ZWMsIHRoaXNPYmosIGJlZ2luLCBkZWxldGVDb3VudCwgYWRkaXRpb25hbEFyZ3MsIGxlbmd0aCk7
CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQg
ayA9IDA7IGsgPCBhZGRpdGlvbmFsQXJnczsgKytrKSB7CiAgICAgICAgIHRoaXNPYmotPm1ldGhv
ZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgayArIGJlZ2luLCBleGVjLT5hcmd1
bWVudChrICsgMiksIHRydWUpOwpAQCAtNjk2LDIyICs3NDgsMTAgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogCiAgICAgdW5zaWduZWQgbnJBcmdzID0gZXhlYy0+YXJndW1lbnRD
b3VudCgpOwotICAgIGlmICgobnJBcmdzKSAmJiAobGVuZ3RoKSkgewotICAgICAgICBpZiAoaXNK
U0FycmF5KHRoaXNPYmopKQotICAgICAgICAgICAgKChKU0FycmF5ICopdGhpc09iaiktPnVuc2hp
ZnRDb3VudChleGVjLCBuckFyZ3MpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgayA9IGxlbmd0aDsgayA+IDA7IC0taykgewotICAgICAgICAgICAgICAgIEpTVmFs
dWUgdiA9IGdldFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGsgLSAxKTsKLSAgICAgICAgICAgICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHYpCi0g
ICAgICAgICAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhp
c09iaiwgZXhlYywgayArIG5yQXJncyAtIDEsIHYsIHRydWUpOwotICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJv
cGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgKyBuckFyZ3MgLSAxKTsKLSAgICAgICAgICAg
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KKyAgICBpZiAobnJBcmdzKSB7CisgICAgICAgIHVuc2hpZnQoZXhlYywgdGhpc09iaiwgMCwg
MCwgbnJBcmdzLCBsZW5ndGgpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0K
ICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgbnJBcmdzOyArK2spIHsKICAgICAgICAgdGhp
c09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrLCBleGVjLT5h
cmd1bWVudChrKSwgdHJ1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcAkocmV2aXNpb24gMTA5OTUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMDksNyArMTMwOSw3IEBAIHZv
aWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICBjaGVja0NvbnNpc3Rl
bmN5KCk7CiB9CiAKLXZvaWQgSlNBcnJheTo6c2hpZnRDb3VudChFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIGNvdW50KQorYm9vbCBKU0FycmF5OjpzaGlmdENvdW50KEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIGNvdW50KQogewogICAgIEFTU0VSVChjb3VudCA+IDApOwogICAgIApAQCAtMTMxNywzMiAr
MTMxNywxNSBAQCB2b2lkIEpTQXJyYXk6OnNoaWZ0Q291bnQoRXhlY1N0YXRlKiBleGVjCiAgICAg
CiAgICAgdW5zaWduZWQgb2xkTGVuZ3RoID0gc3RvcmFnZS0+bV9sZW5ndGg7CiAgICAgCi0gICAg
aWYgKCFvbGRMZW5ndGgpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAob2xkTGVuZ3Ro
ICE9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IpIHsKLSAgICAgICAgLy8gSWYgbV9sZW5n
dGggYW5kIG1fbnVtVmFsdWVzSW5WZWN0b3IgYXJlbid0IHRoZSBzYW1lLCB3ZSBoYXZlIGEgc3Bh
cnNlIHZlY3RvcgotICAgICAgICAvLyB3aGljaCBtZWFucyB3ZSBuZWVkIHRvIGdvIHRocm91Z2gg
ZWFjaCBlbnRyeSBsb29raW5nIGZvciB0aGUgdGhlICJlbXB0eSIKLSAgICAgICAgLy8gc2xvdHMg
YW5kIHRoZW4gZmlsbCB0aGVtIHdpdGggcG9zc2libGUgcHJvcGVydGllcy4gIFNlZSBFQ01BIHNw
ZWMuCi0gICAgICAgIC8vIDE1LjQuNC45IHN0ZXBzIDExIHRocm91Z2ggMTMuCi0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGNvdW50OyBpIDwgb2xkTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
IGlmICgoaSA+PSBtX3ZlY3Rvckxlbmd0aCkgfHwgKCFtX3N0b3JhZ2UtPm1fdmVjdG9yW2ldKSkg
ewotICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgICAgICAgICAg
ICAgIEpTVmFsdWUgcCA9IHByb3RvdHlwZSgpOwotICAgICAgICAgICAgICAgIGlmICgoIXAuaXNO
dWxsKCkpICYmIChhc09iamVjdChwKS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGksIHNsb3QpKSkK
LSAgICAgICAgICAgICAgICAgICAgbWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBleGVj
LCBpLCBzbG90LmdldFZhbHVlKGV4ZWMsIGkpLCBmYWxzZSk7IC8vIEZJWE1FIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDMzNQotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgc3RvcmFnZSA9IG1fc3RvcmFnZTsgLy8gVGhlIHB1dCgpIGFib3ZlIGNv
dWxkIGhhdmUgZ3Jvd24gdGhlIHZlY3RvciBhbmQgcmVhbGxvYydlZCBzdG9yYWdlLgorICAgIC8v
IElmIHRoZSBhcnJheSBjb250YWlucyBob2xlcyBvciBpcyBvdGhlcndpc2UgaW4gYW4gYWJub3Jt
YWwgc3RhdGUsCisgICAgLy8gdXNlIHRoZSBnZW5lcmljIGFsZ29yaXRobSBpbiBBcnJheVByb3Rv
dHlwZS4KKyAgICBpZiAob2xkTGVuZ3RoICE9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3Ig
fHwgaW5TcGFyc2VNb2RlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAvLyBO
ZWVkIHRvIGRlY3JlbWVudCBudW1WYWx1ZXNJbnZlY3RvciBiYXNlZCBvbiBudW1iZXIgb2YgcmVh
bCBlbnRyaWVzCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAodW5zaWduZWQpY291
bnQ7ICsraSkKLSAgICAgICAgICAgIGlmICgoaSA8IG1fdmVjdG9yTGVuZ3RoKSAmJiAoc3RvcmFn
ZS0+bV92ZWN0b3JbaV0pKQotICAgICAgICAgICAgICAgIC0tc3RvcmFnZS0+bV9udW1WYWx1ZXNJ
blZlY3RvcjsKLSAgICB9IGVsc2UKLSAgICAgICAgc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3Rv
ciAtPSBjb3VudDsKKyAgICBpZiAoIW9sZExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgCisgICAgc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciAtPSBjb3VudDsKICAgICBzdG9y
YWdlLT5tX2xlbmd0aCAtPSBjb3VudDsKICAgICAKICAgICBpZiAobV92ZWN0b3JMZW5ndGgpIHsK
QEAgLTEzNTgsMzAgKzEzNDEsMjAgQEAgdm9pZCBKU0FycmF5OjpzaGlmdENvdW50KEV4ZWNTdGF0
ZSogZXhlYwogICAgICAgICAgICAgbV9pbmRleEJpYXMgKz0gY291bnQ7CiAgICAgICAgIH0KICAg
ICB9CisgICAgcmV0dXJuIHRydWU7CiB9Ci0gICAgCi12b2lkIEpTQXJyYXk6OnVuc2hpZnRDb3Vu
dChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGNvdW50KQorCisvLyBSZXR1cm5zIHRydWUgaWYg
dGhlIHVuc2hpZnQgY2FuIGJlIGhhbmRsZWQsIGZhbHNlIHRvIGZhbGxiYWNrLiAgICAKK2Jvb2wg
SlNBcnJheTo6dW5zaGlmdENvdW50KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgY291bnQpCiB7
CiAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gbV9zdG9yYWdlOwogICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHN0b3JhZ2UtPm1fbGVuZ3RoOwogCi0gICAgaWYgKGxlbmd0aCAhPSBzdG9yYWdlLT5t
X251bVZhbHVlc0luVmVjdG9yKSB7Ci0gICAgICAgIC8vIElmIG1fbGVuZ3RoIGFuZCBtX251bVZh
bHVlc0luVmVjdG9yIGFyZW4ndCB0aGUgc2FtZSwgd2UgaGF2ZSBhIHNwYXJzZSB2ZWN0b3IKLSAg
ICAgICAgLy8gd2hpY2ggbWVhbnMgd2UgbmVlZCB0byBnbyB0aHJvdWdoIGVhY2ggZW50cnkgbG9v
a2luZyBmb3IgdGhlIHRoZSAiZW1wdHkiCi0gICAgICAgIC8vIHNsb3RzIGFuZCB0aGVuIGZpbGwg
dGhlbSB3aXRoIHBvc3NpYmxlIHByb3BlcnRpZXMuICBTZWUgRUNNQSBzcGVjLgotICAgICAgICAv
LyAxNS40LjQuMTMgc3RlcHMgOCB0aHJvdWdoIDEwLgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICgoaSA+PSBtX3ZlY3Rvckxl
bmd0aCkgfHwgKCFtX3N0b3JhZ2UtPm1fdmVjdG9yW2ldKSkgewotICAgICAgICAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgICAgICAgICAgICAgIEpTVmFsdWUgcCA9IHByb3Rv
dHlwZSgpOwotICAgICAgICAgICAgICAgIGlmICgoIXAuaXNOdWxsKCkpICYmIChhc09iamVjdChw
KS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGksIHNsb3QpKSkKLSAgICAgICAgICAgICAgICAgICAg
bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBpLCBzbG90LmdldFZhbHVlKGV4
ZWMsIGkpLCBmYWxzZSk7IC8vIEZJWE1FIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MDMzNQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIAotICAg
IHN0b3JhZ2UgPSBtX3N0b3JhZ2U7IC8vIFRoZSBwdXQoKSBhYm92ZSBjb3VsZCBoYXZlIGdyb3du
IHRoZSB2ZWN0b3IgYW5kIHJlYWxsb2MnZWQgc3RvcmFnZS4KLSAgICAKKyAgICAvLyBJZiB0aGUg
YXJyYXkgY29udGFpbnMgaG9sZXMgb3IgaXMgb3RoZXJ3aXNlIGluIGFuIGFibm9ybWFsIHN0YXRl
LAorICAgIC8vIHVzZSB0aGUgZ2VuZXJpYyBhbGdvcml0aG0gaW4gQXJyYXlQcm90b3R5cGUuCisg
ICAgaWYgKGxlbmd0aCAhPSBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yIHx8IGluU3BhcnNl
TW9kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAobV9pbmRleEJpYXMgPj0g
Y291bnQpIHsKICAgICAgICAgbV9pbmRleEJpYXMgLT0gY291bnQ7CiAgICAgICAgIGNoYXIqIG5l
d0Jhc2VTdG9yYWdlID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc3RvcmFnZSkgLSBjb3VudCAq
IHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwpAQCAtMTM5MCwxMiArMTM2MywxMyBAQCB2
b2lkIEpTQXJyYXk6OnVuc2hpZnRDb3VudChFeGVjU3RhdGUqIGV4CiAgICAgICAgIG1fdmVjdG9y
TGVuZ3RoICs9IGNvdW50OwogICAgIH0gZWxzZSBpZiAoIXVuc2hpZnRDb3VudFNsb3dDYXNlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgY291bnQpKSB7CiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJv
cihleGVjKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHZlY3RvciA9IG1fc3RvcmFnZS0+bV92ZWN0b3I7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyBpKyspCiAgICAgICAgIHZlY3Rv
cltpXS5jbGVhcigpOworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIEpTQXJyYXk6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEwOTk1MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTg3LDggKzE4Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHB1c2goRXhlY1N0
YXRlKiwgSlNWYWx1ZSk7CiAgICAgICAgIEpTVmFsdWUgcG9wKEV4ZWNTdGF0ZSopOwogCi0gICAg
ICAgIHZvaWQgc2hpZnRDb3VudChFeGVjU3RhdGUqLCB1bnNpZ25lZCBjb3VudCk7Ci0gICAgICAg
IHZvaWQgdW5zaGlmdENvdW50KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGNvdW50KTsKKyAgICAgICAg
Ym9vbCBzaGlmdENvdW50KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGNvdW50KTsKKyAgICAgICAgYm9v
bCB1bnNoaWZ0Q291bnQoRXhlY1N0YXRlKiwgdW5zaWduZWQgY291bnQpOwogCiAgICAgICAgIGJv
b2wgY2FuR2V0SW5kZXgodW5zaWduZWQgaSkgeyByZXR1cm4gaSA8IG1fdmVjdG9yTGVuZ3RoICYm
IG1fc3RvcmFnZS0+bV92ZWN0b3JbaV07IH0KICAgICAgICAgSlNWYWx1ZSBnZXRJbmRleCh1bnNp
Z25lZCBpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vemlsbGEvanMxXzYv
QXJyYXkvcmVncmVzcy0zMDQ4MjguanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL21vemlsbGEvanMxXzYvQXJyYXkvcmVncmVzcy0zMDQ4MjguanMJKHJldmlzaW9u
IDEwOTk1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxhL2pzMV82L0Fy
cmF5L3JlZ3Jlc3MtMzA0ODI4LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAg
cmVwb3J0Q29tcGFyZSgnYWJjJywgdmFsdWUsIHN1bW1hcnkgKyAnOgogCiAvLyBwb3AKIHZhbHVl
ICA9ICdhYmMnOwotZXhwZWN0ID0gJ2MnOworZXhwZWN0ID0gJ1R5cGVFcnJvcjogVW5hYmxlIHRv
IGRlbGV0ZSBwcm9wZXJ0eS4nOwogdHJ5CiB7CiAgIGFjdHVhbCA9IEFycmF5LnByb3RvdHlwZS5w
b3AuY2FsbCh2YWx1ZSk7CkBAIC0xMjgsNyArMTI4LDcgQEAgcmVwb3J0Q29tcGFyZSgnZGVmJywg
dmFsdWUsIHN1bW1hcnkgKyAnOgogCiAvLyBzaGlmdAogdmFsdWUgID0gJ2FiYyc7Ci1leHBlY3Qg
PSAnYSc7CitleHBlY3QgPSAnVHlwZUVycm9yOiBVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5Lic7
CiB0cnkKIHsKICAgYWN0dWFsID0gQXJyYXkucHJvdG90eXBlLnNoaWZ0LmNhbGwodmFsdWUpOwpA
QCAtMTQyLDcgKzE0Miw3IEBAIHJlcG9ydENvbXBhcmUoJ2FiYycsIHZhbHVlLCBzdW1tYXJ5ICsg
JzoKIAogLy8gc3BsaWNlCiB2YWx1ZSAgPSAnYWJjJzsKLWV4cGVjdCA9ICdiJzsKK2V4cGVjdCA9
ICdUeXBlRXJyb3I6IFVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuJzsKIHRyeQogewogICBhY3R1
YWwgPSBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodmFsdWUsIDEsIDEpICsgJyc7CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMDk5OTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMy0wNiAgR2F2aW4gQmFycmFjbG91Z2ggIDxi
YXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9u
IGFuZCBidWcgVVJMIChPT1BTISkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3QvanMvbW96aWxsYS9zdHJpY3QvMTUuNC40LjEyLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL21vemlsbGEvc3RyaWN0LzE1LjQuNC4xMy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8xNS40LjQuNi1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8xNS40LjQuOC1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8xNS40LjQuOS1leHBlY3Rl
ZC50eHQ6CisKIDIwMTItMDMtMDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgQ2FuJ3Qgc2VsZWN0IGEgbGluZSBvZiBSVEwgdGV4dCBvbiBGYWNlYm9vawpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8xNS40LjQuNi1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8xNS40
LjQuNi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEwOTk1MSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
anMvbW96aWxsYS9zdHJpY3QvMTUuNC40LjYtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDggKzEsOCBAQAogUEFTUyAndXNlIHN0cmljdCc7IHZhciBhID0gYXJyKCk7IFthLnBvcCgp
LCBhXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCiBQQVNTIHZhciBhID0gYXJy
KCk7IFthLnBvcCgpLCBhXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCiBQQVNT
IHRydWUgPT09IHRydWUKLUZBSUwgJ3VzZSBzdHJpY3QnOyB2YXIgbyA9IG9iaigpOyBbQXJyYXku
cHJvdG90eXBlLnBvcC5jYWxsKG8pLCBvXSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlw
ZUVycm9yCi1GQUlMIHZhciBvID0gb2JqKCk7IFtBcnJheS5wcm90b3R5cGUucG9wLmNhbGwobyks
IG9dIHNob3VsZCB0aHJvdyBhbiBpbnN0YW5jZSBvZiBUeXBlRXJyb3IKK1BBU1MgJ3VzZSBzdHJp
Y3QnOyB2YXIgbyA9IG9iaigpOyBbQXJyYXkucHJvdG90eXBlLnBvcC5jYWxsKG8pLCBvXSB0aHJl
dyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCitQQVNTIHZhciBvID0gb2JqKCk7IFtBcnJh
eS5wcm90b3R5cGUucG9wLmNhbGwobyksIG9dIHRocmV3IGV4Y2VwdGlvbiBvZiB0eXBlIFR5cGVF
cnJvci4KIFBBU1MgdHJ1ZSA9PT0gdHJ1ZQogIFBBU1NFRCEgCiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL21vemlsbGEvc3RyaWN0LzE1
LjQuNC44LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL21v
emlsbGEvc3RyaWN0LzE1LjQuNC44LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTA5OTUxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8xNS40LjQuOC1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTQsMTEgKzQsMTEgQEAgUEFTUyB0cnVlID09PSB0cnVlCiBQQVNT
ICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBvYmooKTsgQXJyYXkucHJvdG90eXBlLnJldmVyc2UuY2Fs
bChvKSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCiBQQVNTIHZhciBvID0gb2Jq
KCk7IEFycmF5LnByb3RvdHlwZS5yZXZlcnNlLmNhbGwobykgdGhyZXcgZXhjZXB0aW9uIG9mIHR5
cGUgVHlwZUVycm9yLgogUEFTUyB0cnVlID09PSB0cnVlCi1GQUlMICd1c2Ugc3RyaWN0JzsgdmFy
IGEgPSBhZ2FwKCk7IGEucmV2ZXJzZSgpIHNob3VsZCB0aHJvdyBhbiBpbnN0YW5jZSBvZiBUeXBl
RXJyb3IKLUZBSUwgdmFyIGEgPSBhZ2FwKCk7IGEucmV2ZXJzZSgpIHNob3VsZCB0aHJvdyBhbiBp
bnN0YW5jZSBvZiBUeXBlRXJyb3IKK1BBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgYSA9IGFnYXAoKTsg
YS5yZXZlcnNlKCkgdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgVHlwZUVycm9yLgorUEFTUyB2YXIg
YSA9IGFnYXAoKTsgYS5yZXZlcnNlKCkgdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgVHlwZUVycm9y
LgogUEFTUyB0cnVlID09PSB0cnVlCi1GQUlMICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBvZ2FwKCk7
IEFycmF5LnByb3RvdHlwZS5yZXZlcnNlLmNhbGwobykgc2hvdWxkIHRocm93IGFuIGluc3RhbmNl
IG9mIFR5cGVFcnJvcgotRkFJTCB2YXIgbyA9IG9nYXAoKTsgQXJyYXkucHJvdG90eXBlLnJldmVy
c2UuY2FsbChvKSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCitQQVNTICd1
c2Ugc3RyaWN0JzsgdmFyIG8gPSBvZ2FwKCk7IEFycmF5LnByb3RvdHlwZS5yZXZlcnNlLmNhbGwo
bykgdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgVHlwZUVycm9yLgorUEFTUyB2YXIgbyA9IG9nYXAo
KTsgQXJyYXkucHJvdG90eXBlLnJldmVyc2UuY2FsbChvKSB0aHJldyBleGNlcHRpb24gb2YgdHlw
ZSBUeXBlRXJyb3IuCiBQQVNTIHRydWUgPT09IHRydWUKICBQQVNTRUQhIAogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9tb3ppbGxhL3N0
cmljdC8xNS40LjQuOS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9tb3ppbGxhL3N0cmljdC8xNS40LjQuOS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEwOTk1
MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvbW96aWxsYS9zdHJpY3QvMTUuNC40LjktZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICsxLDE0IEBACi1GQUlMICd1c2Ugc3RyaWN0
JzsgdmFyIGEgPSBhcnIoKTsgW2Euc2hpZnQoKSwgYV0gc2hvdWxkIHRocm93IGFuIGluc3RhbmNl
IG9mIFR5cGVFcnJvcgotRkFJTCB2YXIgYSA9IGFycigpOyBbYS5zaGlmdCgpLCBhXSBzaG91bGQg
dGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCitQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIGEg
PSBhcnIoKTsgW2Euc2hpZnQoKSwgYV0gdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgVHlwZUVycm9y
LgorUEFTUyB2YXIgYSA9IGFycigpOyBbYS5zaGlmdCgpLCBhXSB0aHJldyBleGNlcHRpb24gb2Yg
dHlwZSBUeXBlRXJyb3IuCiBQQVNTIHRydWUgPT09IHRydWUKIFBBU1MgJ3VzZSBzdHJpY3QnOyB2
YXIgbyA9IG9iaigpOyBbQXJyYXkucHJvdG90eXBlLnNoaWZ0LmNhbGwobyksIG9dIHRocmV3IGV4
Y2VwdGlvbiBvZiB0eXBlIFR5cGVFcnJvci4KIFBBU1MgdmFyIG8gPSBvYmooKTsgW0FycmF5LnBy
b3RvdHlwZS5zaGlmdC5jYWxsKG8pLCBvXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJy
b3IuCiBQQVNTIHRydWUgPT09IHRydWUKLUZBSUwgJ3VzZSBzdHJpY3QnOyB2YXIgYSA9IGFnYXAo
KTsgW2Euc2hpZnQoKSwgYV0gc2hvdWxkIHRocm93IGFuIGluc3RhbmNlIG9mIFR5cGVFcnJvcgot
RkFJTCB2YXIgYSA9IGFnYXAoKTsgW2Euc2hpZnQoKSwgYV0gc2hvdWxkIHRocm93IGFuIGluc3Rh
bmNlIG9mIFR5cGVFcnJvcgorUEFTUyAndXNlIHN0cmljdCc7IHZhciBhID0gYWdhcCgpOyBbYS5z
aGlmdCgpLCBhXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCitQQVNTIHZhciBh
ID0gYWdhcCgpOyBbYS5zaGlmdCgpLCBhXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJy
b3IuCiBQQVNTIHRydWUgPT09IHRydWUKLUZBSUwgJ3VzZSBzdHJpY3QnOyB2YXIgbyA9IG9nYXAo
KTsgW0FycmF5LnByb3RvdHlwZS5zaGlmdC5jYWxsKG8pLCBvXSBzaG91bGQgdGhyb3cgYW4gaW5z
dGFuY2Ugb2YgVHlwZUVycm9yCi1GQUlMIHZhciBvID0gb2dhcCgpOyBbQXJyYXkucHJvdG90eXBl
LnNoaWZ0LmNhbGwobyksIG9dIHNob3VsZCB0aHJvdyBhbiBpbnN0YW5jZSBvZiBUeXBlRXJyb3IK
K1BBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgbyA9IG9nYXAoKTsgW0FycmF5LnByb3RvdHlwZS5zaGlm
dC5jYWxsKG8pLCBvXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCitQQVNTIHZh
ciBvID0gb2dhcCgpOyBbQXJyYXkucHJvdG90eXBlLnNoaWZ0LmNhbGwobyksIG9dIHRocmV3IGV4
Y2VwdGlvbiBvZiB0eXBlIFR5cGVFcnJvci4KIFBBU1MgdHJ1ZSA9PT0gdHJ1ZQogIFBBU1NFRCEg
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2pzL21vemlsbGEvc3RyaWN0LzE1LjQuNC4xMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8xNS40LjQuMTItZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxMDk5NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL21vemlsbGEvc3RyaWN0
LzE1LjQuNC4xMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzEsMTQgQEAK
LUZBSUwgJ3VzZSBzdHJpY3QnOyB2YXIgYSA9IGFycigpOyBbYS5zcGxpY2UoMCwgMSksIGFdIHNo
b3VsZCB0aHJvdyBhbiBpbnN0YW5jZSBvZiBUeXBlRXJyb3IKLUZBSUwgdmFyIGEgPSBhcnIoKTsg
W2Euc3BsaWNlKDAsIDEpLCBhXSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9y
CitQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIGEgPSBhcnIoKTsgW2Euc3BsaWNlKDAsIDEpLCBhXSB0
aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCitQQVNTIHZhciBhID0gYXJyKCk7IFth
LnNwbGljZSgwLCAxKSwgYV0gdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgVHlwZUVycm9yLgogUEFT
UyB0cnVlID09PSB0cnVlCiBQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBvYmooKTsgW0FycmF5
LnByb3RvdHlwZS5zcGxpY2UuY2FsbChvLCAwLCAxKSwgb10gdGhyZXcgZXhjZXB0aW9uIG9mIHR5
cGUgVHlwZUVycm9yLgogUEFTUyB2YXIgbyA9IG9iaigpOyBbQXJyYXkucHJvdG90eXBlLnNwbGlj
ZS5jYWxsKG8sIDAsIDEpLCBvXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCiBQ
QVNTIHRydWUgPT09IHRydWUKLUZBSUwgJ3VzZSBzdHJpY3QnOyB2YXIgYSA9IGFnYXAoKTsgW2Eu
c3BsaWNlKDAsIDEpLCBhXSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCi1G
QUlMIHZhciBhID0gYWdhcCgpOyBbYS5zcGxpY2UoMCwgMSksIGFdIHNob3VsZCB0aHJvdyBhbiBp
bnN0YW5jZSBvZiBUeXBlRXJyb3IKK1BBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgYSA9IGFnYXAoKTsg
W2Euc3BsaWNlKDAsIDEpLCBhXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCitQ
QVNTIHZhciBhID0gYWdhcCgpOyBbYS5zcGxpY2UoMCwgMSksIGFdIHRocmV3IGV4Y2VwdGlvbiBv
ZiB0eXBlIFR5cGVFcnJvci4KIFBBU1MgdHJ1ZSA9PT0gdHJ1ZQotRkFJTCAndXNlIHN0cmljdCc7
IHZhciBvID0gb2dhcCgpOyBbQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKG8sIDAsIDEpLCBv
XSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCi1GQUlMIHZhciBvID0gb2dh
cCgpOyBbQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKG8sIDAsIDEpLCBvXSBzaG91bGQgdGhy
b3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCitQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBv
Z2FwKCk7IFtBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwobywgMCwgMSksIG9dIHRocmV3IGV4
Y2VwdGlvbiBvZiB0eXBlIFR5cGVFcnJvci4KK1BBU1MgdmFyIG8gPSBvZ2FwKCk7IFtBcnJheS5w
cm90b3R5cGUuc3BsaWNlLmNhbGwobywgMCwgMSksIG9dIHRocmV3IGV4Y2VwdGlvbiBvZiB0eXBl
IFR5cGVFcnJvci4KIFBBU1MgdHJ1ZSA9PT0gdHJ1ZQogIFBBU1NFRCEgCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL21vemlsbGEvc3Ry
aWN0LzE1LjQuNC4xMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9qcy9tb3ppbGxhL3N0cmljdC8xNS40LjQuMTMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMDk5
NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL21vemlsbGEvc3RyaWN0LzE1LjQuNC4xMy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzEsMTQgQEAKLUZBSUwgJ3VzZSBzdHJp
Y3QnOyB2YXIgYSA9IGFycigpOyBbYS51bnNoaWZ0KDQwLCA1MCksIGFdIHNob3VsZCB0aHJvdyBh
biBpbnN0YW5jZSBvZiBUeXBlRXJyb3IKLUZBSUwgdmFyIGEgPSBhcnIoKTsgW2EudW5zaGlmdCg0
MCwgNTApLCBhXSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCitQQVNTICd1
c2Ugc3RyaWN0JzsgdmFyIGEgPSBhcnIoKTsgW2EudW5zaGlmdCg0MCwgNTApLCBhXSB0aHJldyBl
eGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCitQQVNTIHZhciBhID0gYXJyKCk7IFthLnVuc2hp
ZnQoNDAsIDUwKSwgYV0gdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgVHlwZUVycm9yLgogUEFTUyB0
cnVlID09PSB0cnVlCiBQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBvYmooKTsgW0FycmF5LnBy
b3RvdHlwZS51bnNoaWZ0LmNhbGwobywgNDAsIDUwKSwgb10gdGhyZXcgZXhjZXB0aW9uIG9mIHR5
cGUgVHlwZUVycm9yLgogUEFTUyB2YXIgbyA9IG9iaigpOyBbQXJyYXkucHJvdG90eXBlLnVuc2hp
ZnQuY2FsbChvLCA0MCwgNTApLCBvXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3Iu
CiBQQVNTIHRydWUgPT09IHRydWUKLUZBSUwgJ3VzZSBzdHJpY3QnOyB2YXIgYSA9IGFnYXAoKTsg
W2EudW5zaGlmdCg5KSwgYV0gc2hvdWxkIHRocm93IGFuIGluc3RhbmNlIG9mIFR5cGVFcnJvcgot
RkFJTCB2YXIgYSA9IGFnYXAoKTsgW2EudW5zaGlmdCg5KSwgYV0gc2hvdWxkIHRocm93IGFuIGlu
c3RhbmNlIG9mIFR5cGVFcnJvcgorUEFTUyAndXNlIHN0cmljdCc7IHZhciBhID0gYWdhcCgpOyBb
YS51bnNoaWZ0KDkpLCBhXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCitQQVNT
IHZhciBhID0gYWdhcCgpOyBbYS51bnNoaWZ0KDkpLCBhXSB0aHJldyBleGNlcHRpb24gb2YgdHlw
ZSBUeXBlRXJyb3IuCiBQQVNTIHRydWUgPT09IHRydWUKLUZBSUwgJ3VzZSBzdHJpY3QnOyB2YXIg
byA9IG9nYXAoKTsgW0FycmF5LnByb3RvdHlwZS51bnNoaWZ0LmNhbGwobywgOSksIG9dIHNob3Vs
ZCB0aHJvdyBhbiBpbnN0YW5jZSBvZiBUeXBlRXJyb3IKLUZBSUwgdmFyIG8gPSBvZ2FwKCk7IFtB
cnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKG8sIDkpLCBvXSBzaG91bGQgdGhyb3cgYW4gaW5z
dGFuY2Ugb2YgVHlwZUVycm9yCitQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBvZ2FwKCk7IFtB
cnJheS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKG8sIDkpLCBvXSB0aHJldyBleGNlcHRpb24gb2Yg
dHlwZSBUeXBlRXJyb3IuCitQQVNTIHZhciBvID0gb2dhcCgpOyBbQXJyYXkucHJvdG90eXBlLnVu
c2hpZnQuY2FsbChvLCA5KSwgb10gdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgVHlwZUVycm9yLgog
UEFTUyB0cnVlID09PSB0cnVlCiAgUEFTU0VEISAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130509</attachid>
            <date>2012-03-06 18:24:17 -0800</date>
            <delta_ts>2012-03-06 20:11:19 -0800</delta_ts>
            <desc>Fix (forgot a ChangeLog in last patch)</desc>
            <filename>80467.2.patch</filename>
            <type>text/plain</type>
            <size>27477</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA5OTkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEyLTAzLTA2ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBBcnJheS5wcm90b3R5cGUgZnVuY3Rpb25zIHNob3VsZCB0aHJvdyBpZiBkZWxl
dGUgZmFpbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgwNDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWxsIGNhbGxzIHRvIFtbRGVsZXRlXV0gZnJvbSBBcnJheS5wcm90b3R5cGUgYXJlIHNwZWNpZmll
ZCB0byBwYXNzICd0cnVlJyBhcyB0aGUgdmFsdWUgb2YgVGhyb3cuCisgICAgICAgIEluIHRoZSBj
YXNlIG9mIHNoaWZ0L3Vuc2hpZnQsIHRoZXNlIGFyZSBhbHNvIG1pc3NpbmcgYSB0aHJvdyBmcm9t
IHRoZSAncHV0JyBpbiB0aGUgaW1wbGVtZW50YXRpb25zCisgICAgICAgIGluIEpTQXJyYXkuY3Bw
LiBUaGVyZSBhcmUgZWZmZWN0aXZlbHkgdGhyZWUgY29waWVzIG9mIGVhY2ggb2YgdGhlIGdlbmVy
aWMgc2hpZnQvdW5zaGlmdCByb3V0aW5lcywKKyAgICAgICAgb25lIGluIHNwbGljZSwgb25lIGlu
IEFycmF5UHJvdG90eXBlJ3Mgc2hpZnQvdW5zaGlmdCBtZXRob2RzLCBhbmQgb25lIGluIEpTQXJy
YXkncyBzaGlmdC91bnNoaWZ0CisgICAgICAgIHJvdXRpbmVzLCBmb3IgaGFuZGxpbmcgYXJyYXlz
IHdpdGggaG9sZXMuIFRoZXNlIHRocmVlIGNvcGllcyBzaG91bGQgYmUgdW5pZmllZC4KKworICAg
ICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpzaGlmdCk6
CisgICAgICAgIChKU0M6OnVuc2hpZnQpOgorICAgICAgICAgICAgLSBBZGRlZCAtIHNoYXJlZCBj
b3BpZXMgb2YgdGhlIHNoaWZ0L3Vuc2hpZnQgZnVuY3Rpb25hbGl0eS4KKyAgICAgICAgKEpTQzo6
YXJyYXlQcm90b0Z1bmNQb3ApOgorICAgICAgICAgICAgLSBzaG91bGQgdGhyb3cgaWYgdGhlIGRl
bGV0ZSBmYWlscy4KKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZXZlcnNlKToKKyAgICAg
ICAgICAgIC0gc2hvdWxkIHRocm93IGlmIHRoZSBkZWxldGUgZmFpbHMuCisgICAgICAgIChKU0M6
OmFycmF5UHJvdG9GdW5jU2hpZnQpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NwbGlj
ZSk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVW5TaGlmdCk6CisgICAgICAgICAgICAt
IHVzZSBzaGlmdC91bnNoaWZ0LgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5jcHA6CisgICAg
ICAgIChKU0M6OkpTQXJyYXk6OnNoaWZ0Q291bnQpOgorICAgICAgICAoSlNDOjpKU0FycmF5Ojp1
bnNoaWZ0Q291bnQpOgorICAgICAgICAgICAgLSBEb24ndCB0cnkgdG8gaGFuZGxlIGFycmF5cyB3
aXRoIGhvbGVzOyByZXR1cm4gYSB2YWx1ZSBpbmRpY2F0aW5nCisgICAgICAgICAgICAgIHRoZSBn
ZW5lcmljIHJvdXRpbmUgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KKyAgICAgICAgKiBydW50aW1l
L0pTQXJyYXkuaDoKKyAgICAgICAgICAgIC0gZGVjbGFyYXRpb24gZm9yIHNoaWZ0Q291bnQvdW5z
aGlmdENvdW50IGNoYW5nZWQuCisgICAgICAgICogdGVzdHMvbW96aWxsYS9qczFfNi9BcnJheS9y
ZWdyZXNzLTMwNDgyOC5qczoKKyAgICAgICAgICAgIC0gdGhpcyB3YXMgYXNzZXJ0aW5nIGluY29y
cmVjdCBiZWhhdmlvdXIuCisKIDIwMTItMDMtMDYgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5i
ZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBHQ0FjdGl2aXR5Q2FsbGJhY2sgdGltZXIgc2hvdWxk
IHZhcnkgd2l0aCB0aGUgbGVuZ3RoIG9mIHRoZSBwcmV2aW91cyBHQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MTA5OTUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNiArMTY2LDkwIEBAIHN0YXRpYyB1bnNpZ25lZCBh
cmd1bWVudENsYW1wZWRJbmRleEZyb20KICAgICByZXR1cm4gaW5kZXhEb3VibGUgPiBsZW5ndGgg
PyBsZW5ndGggOiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXhEb3VibGUpOwogfQogCisKKy8v
IFRoZSBzaGlmdC91bnNoaWZ0IGZ1bmN0aW9uIGltcGxlbWVudCB0aGUgc2hpZnQvdW5zaGlmdCBi
ZWhhdmlvdXIgcmVxdWlyZWQKKy8vIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGFycmF5IHByb3RvdHlw
ZSBtZXRob2RzLCBhbmQgYnkgc3BsaWNlLiBJbiBib3RoIGNhc2VzLAorLy8gdGhlIG1ldGhvZHMg
YXJlIG9wZXJhdGluZyBhbiBhbiBhcnJheSBvciBhcnJheSBsaWtlIG9iamVjdC4KKy8vCisvLyAg
aGVhZGVyICBjdXJyZW50Q291bnQgIChyZW1haW5kZXIpCisvLyBbLS0tLS0tXVstLS0tLS0tLS0t
LS1dWy0tLS0tLS0tLS0tXQorLy8gIGhlYWRlciAgcmVzdWx0Q291bnQgIChyZW1haW5kZXIpCisv
LyBbLS0tLS0tXVstLS0tLS0tLS0tLV1bLS0tLS0tLS0tLS1dCisvLworLy8gVGhlIHNldCBvZiBw
cm9wZXJ0aWVzIGluIHRoZSByYW5nZSAnaGVhZGVyJyBtdXN0IGJlIHVuY2hhbmdlZC4gVGhlIHNl
dCBvZgorLy8gcHJvcGVydGllcyBpbiB0aGUgcmFuZ2UgJ3JlbWFpbmRlcicgKHdoZXJlIHJlbWFp
bmRlciA9IGxlbmd0aCAtIGhlYWRlciAtCisvLyBjdXJyZW50Q291bnQpIHdpbGwgYmUgc2hpZnRl
ZCB0byB0aGUgbGVmdCBvciByaWdodCBhcyBhcHByb3ByaWF0ZTsgaW4gdGhlCisvLyBjYXNlIG9m
IHNoaWZ0IHRoaXMgbXVzdCBiZSByZW1vdmluZyB2YWx1ZXMsIGluIHRoZSBjYXNlIG9mIHVuc2hp
ZnQgdGhpcworLy8gbXVzdCBiZSBpbnRyb2R1Y2luZyBuZXcgdmFsdWVzLgorc3RhdGljIGlubGlu
ZSB2b2lkIHNoaWZ0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIHVuc2lnbmVk
IGhlYWRlciwgdW5zaWduZWQgY3VycmVudENvdW50LCB1bnNpZ25lZCByZXN1bHRDb3VudCwgdW5z
aWduZWQgbGVuZ3RoKQoreworICAgIEFTU0VSVChjdXJyZW50Q291bnQgPiByZXN1bHRDb3VudCk7
CisgICAgdW5zaWduZWQgY291bnQgPSBjdXJyZW50Q291bnQgLSByZXN1bHRDb3VudDsKKworICAg
IEFTU0VSVChoZWFkZXIgPD0gbGVuZ3RoKTsKKyAgICBBU1NFUlQoY3VycmVudENvdW50IDw9IChs
ZW5ndGggLSBoZWFkZXIpKTsKKworICAgIGlmICghaGVhZGVyICYmIGlzSlNBcnJheSh0aGlzT2Jq
KSAmJiBhc0FycmF5KHRoaXNPYmopLT5zaGlmdENvdW50KGV4ZWMsIGNvdW50KSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZm9yICh1bnNpZ25lZCBrID0gaGVhZGVyOyBrIDwgbGVuZ3RoIC0gY3Vy
cmVudENvdW50OyArK2spIHsKKyAgICAgICAgdW5zaWduZWQgZnJvbSA9IGsgKyBjdXJyZW50Q291
bnQ7CisgICAgICAgIHVuc2lnbmVkIHRvID0gayArIHJlc3VsdENvdW50OworICAgICAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdCh0aGlzT2JqKTsKKyAgICAgICAgaWYgKHRoaXNPYmotPmdldFByb3BlcnR5
U2xvdChleGVjLCBmcm9tLCBzbG90KSkgeworICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHNs
b3QuZ2V0VmFsdWUoZXhlYywgZnJvbSk7CisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgdGhpc09iai0+bWV0
aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCB0bywgdmFsdWUsIHRydWUpOwor
ICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRl
UHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIHRvKSkgeworICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yICh1bnNpZ25lZCBrID0gbGVuZ3Ro
OyBrID4gbGVuZ3RoIC0gY291bnQ7IC0taykgeworICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhv
ZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrIC0gMSkpIHsK
KyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3Bl
cnR5LiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorc3RhdGlj
IGlubGluZSB2b2lkIHVuc2hpZnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwg
dW5zaWduZWQgaGVhZGVyLCB1bnNpZ25lZCBjdXJyZW50Q291bnQsIHVuc2lnbmVkIHJlc3VsdENv
dW50LCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgQVNTRVJUKHJlc3VsdENvdW50ID4gY3VycmVu
dENvdW50KTsKKyAgICB1bnNpZ25lZCBjb3VudCA9IHJlc3VsdENvdW50IC0gY3VycmVudENvdW50
OworCisgICAgQVNTRVJUKGhlYWRlciA8PSBsZW5ndGgpOworICAgIEFTU0VSVChjdXJyZW50Q291
bnQgPD0gKGxlbmd0aCAtIGhlYWRlcikpOworCisgICAgLy8gR3VhcmQgYWdhaW5zdCBvdmVyZmxv
dy4KKyAgICBpZiAoY291bnQgPiAoVUlOVF9NQVggLSBsZW5ndGgpKSB7CisgICAgICAgIHRocm93
T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghaGVhZGVyICYmIGlzSlNBcnJheSh0aGlzT2JqKSAmJiBhc0FycmF5KHRoaXNPYmopLT51bnNo
aWZ0Q291bnQoZXhlYywgY291bnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHVuc2ln
bmVkIGsgPSBsZW5ndGggLSBjdXJyZW50Q291bnQ7IGsgPiBoZWFkZXI7IC0taykgeworICAgICAg
ICB1bnNpZ25lZCBmcm9tID0gayArIGN1cnJlbnRDb3VudCAtIDE7CisgICAgICAgIHVuc2lnbmVk
IHRvID0gayArIHJlc3VsdENvdW50IC0gMTsKKyAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGhp
c09iaik7CisgICAgICAgIGlmICh0aGlzT2JqLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgZnJvbSwg
c2xvdCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBzbG90LmdldFZhbHVlKGV4ZWMs
IGZyb20pOworICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5
SW5kZXgodGhpc09iaiwgZXhlYywgdG8sIHZhbHVlLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIGlm
ICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmos
IGV4ZWMsIHRvKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0
byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhv
c3RUaGlzVmFsdWUoKTsKQEAgLTQwMiw3ICs0ODYsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRgogICAgICAgICByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwogICAg
IH0gZWxzZSB7CiAgICAgICAgIHJlc3VsdCA9IHRoaXNPYmotPmdldChleGVjLCBsZW5ndGggLSAx
KTsKLSAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4
KHRoaXNPYmosIGV4ZWMsIGxlbmd0aCAtIDEpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OworICAgICAgICBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJ
bmRleCh0aGlzT2JqLCBleGVjLCBsZW5ndGggLSAxKSkgeworICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIik7CisgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgICAgICB9CiAgICAgICAg
IHB1dFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgs
IGpzTnVtYmVyKGxlbmd0aCAtIDEpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwpAQCAtNDU3LDE5ICs1NDYsMjMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRgogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgICAg
IGlmIChvYmoyKQorICAgICAgICBpZiAob2JqMikgewogICAgICAgICAgICAgdGhpc09iai0+bWV0
aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrLCBvYmoyLCB0cnVlKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJv
cGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGspOwotICAgICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAg
fSBlbHNlIGlmICghdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4
KHRoaXNPYmosIGV4ZWMsIGspKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAi
VW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKTsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgICAgIH0KIAotICAgICAgICBpZiAob2JqKQor
ICAgICAgICBpZiAob2JqKSB7CiAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5w
dXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGxrMSwgb2JqLCB0cnVlKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4
KHRoaXNPYmosIGV4ZWMsIGxrMSk7Ci0gICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgICAgICB9IGVsc2UgaWYg
KCF0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwg
ZXhlYywgbGsxKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0
byBkZWxldGUgcHJvcGVydHkuIik7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhpc09iaik7CiB9CkBAIC00ODcsMjIgKzU4MCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYXJyYXlQcm90b0YKICAgICAgICAgcmVzdWx0ID0ganNVbmRlZmluZWQoKTsK
ICAgICB9IGVsc2UgewogICAgICAgICByZXN1bHQgPSB0aGlzT2JqLT5nZXQoZXhlYywgMCk7Ci0g
ICAgICAgIGlmIChpc0pTQXJyYXkodGhpc09iaikpCi0gICAgICAgICAgICAoKEpTQXJyYXkgKil0
aGlzT2JqKS0+c2hpZnRDb3VudChleGVjLCAxKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGsgPSAxOyBrIDwgbGVuZ3RoOyBrKyspIHsKLSAgICAgICAgICAgICAg
ICBKU1ZhbHVlIG9iaiA9IGdldFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGspOwotICAgICAgICAg
ICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgICAgICAgICBpZiAo
b2JqKQotICAgICAgICAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUlu
ZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxLCBvYmosIHRydWUpOwotICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJv
cGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxKTsKLSAgICAgICAgICAgICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlz
T2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywg
bGVuZ3RoIC0gMSk7Ci0gICAgICAgIH0KKyAgICAgICAgc2hpZnQoZXhlYywgdGhpc09iaiwgMCwg
MSwgMCwgbGVuZ3RoKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgcHV0
UHJvcGVydHkoZXhlYywgdGhpc09iaiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNO
dW1iZXIobGVuZ3RoIC0gMSkpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CkBAIC02MzksNDIgKzcxOSwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GCiAgICAgcmVzT2JqLT5jb21wbGV0ZUluaXRpYWxpemF0aW9uKGRlbGV0ZUNv
dW50KTsKIAogICAgIHVuc2lnbmVkIGFkZGl0aW9uYWxBcmdzID0gc3RkOjptYXg8aW50PihleGVj
LT5hcmd1bWVudENvdW50KCkgLSAyLCAwKTsKLSAgICBpZiAoYWRkaXRpb25hbEFyZ3MgIT0gZGVs
ZXRlQ291bnQpIHsKLSAgICAgICAgaWYgKGFkZGl0aW9uYWxBcmdzIDwgZGVsZXRlQ291bnQpIHsK
LSAgICAgICAgICAgIGlmICgoIWJlZ2luKSAmJiAoaXNKU0FycmF5KHRoaXNPYmopKSkKLSAgICAg
ICAgICAgICAgICAoKEpTQXJyYXkgKil0aGlzT2JqKS0+c2hpZnRDb3VudChleGVjLCBkZWxldGVD
b3VudCAtIGFkZGl0aW9uYWxBcmdzKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgayA9IGJlZ2luOyBrIDwgbGVuZ3RoIC0gZGVsZXRlQ291bnQ7ICsr
aykgewotICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIHYgPSBnZXRQcm9wZXJ0eShleGVjLCB0
aGlzT2JqLCBrICsgZGVsZXRlQ291bnQpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAodikKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhp
c09iaiwgZXhlYywgayArIGFkZGl0aW9uYWxBcmdzLCB2LCB0cnVlKTsKLSAgICAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUo
KS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgKyBhZGRpdGlvbmFsQXJn
cyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgayA9IGxl
bmd0aDsgayA+IGxlbmd0aCAtIGRlbGV0ZUNvdW50ICsgYWRkaXRpb25hbEFyZ3M7IC0taykKLSAg
ICAgICAgICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlC
eUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgLSAxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmICgoIWJlZ2luKSAmJiAoaXNKU0FycmF5KHRoaXNPYmopKSkK
LSAgICAgICAgICAgICAgICAoKEpTQXJyYXkgKil0aGlzT2JqKS0+dW5zaGlmdENvdW50KGV4ZWMs
IGFkZGl0aW9uYWxBcmdzIC0gZGVsZXRlQ291bnQpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gbGVuZ3RoIC0gZGVsZXRlQ291bnQ7IGsgPiBi
ZWdpbjsgLS1rKSB7Ci0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgb2JqID0gZ2V0UHJvcGVy
dHkoZXhlYywgdGhpc09iaiwgayArIGRlbGV0ZUNvdW50IC0gMSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChvYmopCi0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgp
LT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgKyBhZGRpdGlvbmFsQXJncyAtIDEsIG9iaiwg
dHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleCh0aGlzT2JqLCBl
eGVjLCBrICsgYWRkaXRpb25hbEFyZ3MgLSAxKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KKyAgICBpZiAoYWRkaXRpb25hbEFyZ3MgPCBkZWxldGVDb3VudCkgewor
ICAgICAgICBzaGlmdChleGVjLCB0aGlzT2JqLCBiZWdpbiwgZGVsZXRlQ291bnQsIGFkZGl0aW9u
YWxBcmdzLCBsZW5ndGgpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0gZWxz
ZSBpZiAoYWRkaXRpb25hbEFyZ3MgPiBkZWxldGVDb3VudCkgeworICAgICAgICB1bnNoaWZ0KGV4
ZWMsIHRoaXNPYmosIGJlZ2luLCBkZWxldGVDb3VudCwgYWRkaXRpb25hbEFyZ3MsIGxlbmd0aCk7
CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQg
ayA9IDA7IGsgPCBhZGRpdGlvbmFsQXJnczsgKytrKSB7CiAgICAgICAgIHRoaXNPYmotPm1ldGhv
ZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgayArIGJlZ2luLCBleGVjLT5hcmd1
bWVudChrICsgMiksIHRydWUpOwpAQCAtNjk2LDIyICs3NDgsMTAgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogCiAgICAgdW5zaWduZWQgbnJBcmdzID0gZXhlYy0+YXJndW1lbnRD
b3VudCgpOwotICAgIGlmICgobnJBcmdzKSAmJiAobGVuZ3RoKSkgewotICAgICAgICBpZiAoaXNK
U0FycmF5KHRoaXNPYmopKQotICAgICAgICAgICAgKChKU0FycmF5ICopdGhpc09iaiktPnVuc2hp
ZnRDb3VudChleGVjLCBuckFyZ3MpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgayA9IGxlbmd0aDsgayA+IDA7IC0taykgewotICAgICAgICAgICAgICAgIEpTVmFs
dWUgdiA9IGdldFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGsgLSAxKTsKLSAgICAgICAgICAgICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHYpCi0g
ICAgICAgICAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhp
c09iaiwgZXhlYywgayArIG5yQXJncyAtIDEsIHYsIHRydWUpOwotICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJv
cGVydHlCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgKyBuckFyZ3MgLSAxKTsKLSAgICAgICAgICAg
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KKyAgICBpZiAobnJBcmdzKSB7CisgICAgICAgIHVuc2hpZnQoZXhlYywgdGhpc09iaiwgMCwg
MCwgbnJBcmdzLCBsZW5ndGgpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0K
ICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgbnJBcmdzOyArK2spIHsKICAgICAgICAgdGhp
c09iai0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrLCBleGVjLT5h
cmd1bWVudChrKSwgdHJ1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcAkocmV2aXNpb24gMTA5OTUxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMDksNyArMTMwOSw3IEBAIHZv
aWQgSlNBcnJheTo6cHVzaChFeGVjU3RhdGUqIGV4ZWMsIEpTVmEKICAgICBjaGVja0NvbnNpc3Rl
bmN5KCk7CiB9CiAKLXZvaWQgSlNBcnJheTo6c2hpZnRDb3VudChFeGVjU3RhdGUqIGV4ZWMsIHVu
c2lnbmVkIGNvdW50KQorYm9vbCBKU0FycmF5OjpzaGlmdENvdW50KEV4ZWNTdGF0ZSosIHVuc2ln
bmVkIGNvdW50KQogewogICAgIEFTU0VSVChjb3VudCA+IDApOwogICAgIApAQCAtMTMxNywzMiAr
MTMxNywxNSBAQCB2b2lkIEpTQXJyYXk6OnNoaWZ0Q291bnQoRXhlY1N0YXRlKiBleGVjCiAgICAg
CiAgICAgdW5zaWduZWQgb2xkTGVuZ3RoID0gc3RvcmFnZS0+bV9sZW5ndGg7CiAgICAgCi0gICAg
aWYgKCFvbGRMZW5ndGgpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAob2xkTGVuZ3Ro
ICE9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IpIHsKLSAgICAgICAgLy8gSWYgbV9sZW5n
dGggYW5kIG1fbnVtVmFsdWVzSW5WZWN0b3IgYXJlbid0IHRoZSBzYW1lLCB3ZSBoYXZlIGEgc3Bh
cnNlIHZlY3RvcgotICAgICAgICAvLyB3aGljaCBtZWFucyB3ZSBuZWVkIHRvIGdvIHRocm91Z2gg
ZWFjaCBlbnRyeSBsb29raW5nIGZvciB0aGUgdGhlICJlbXB0eSIKLSAgICAgICAgLy8gc2xvdHMg
YW5kIHRoZW4gZmlsbCB0aGVtIHdpdGggcG9zc2libGUgcHJvcGVydGllcy4gIFNlZSBFQ01BIHNw
ZWMuCi0gICAgICAgIC8vIDE1LjQuNC45IHN0ZXBzIDExIHRocm91Z2ggMTMuCi0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGNvdW50OyBpIDwgb2xkTGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
IGlmICgoaSA+PSBtX3ZlY3Rvckxlbmd0aCkgfHwgKCFtX3N0b3JhZ2UtPm1fdmVjdG9yW2ldKSkg
ewotICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgICAgICAgICAg
ICAgIEpTVmFsdWUgcCA9IHByb3RvdHlwZSgpOwotICAgICAgICAgICAgICAgIGlmICgoIXAuaXNO
dWxsKCkpICYmIChhc09iamVjdChwKS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGksIHNsb3QpKSkK
LSAgICAgICAgICAgICAgICAgICAgbWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBleGVj
LCBpLCBzbG90LmdldFZhbHVlKGV4ZWMsIGkpLCBmYWxzZSk7IC8vIEZJWE1FIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDMzNQotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgc3RvcmFnZSA9IG1fc3RvcmFnZTsgLy8gVGhlIHB1dCgpIGFib3ZlIGNv
dWxkIGhhdmUgZ3Jvd24gdGhlIHZlY3RvciBhbmQgcmVhbGxvYydlZCBzdG9yYWdlLgorICAgIC8v
IElmIHRoZSBhcnJheSBjb250YWlucyBob2xlcyBvciBpcyBvdGhlcndpc2UgaW4gYW4gYWJub3Jt
YWwgc3RhdGUsCisgICAgLy8gdXNlIHRoZSBnZW5lcmljIGFsZ29yaXRobSBpbiBBcnJheVByb3Rv
dHlwZS4KKyAgICBpZiAob2xkTGVuZ3RoICE9IHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3Ig
fHwgaW5TcGFyc2VNb2RlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAvLyBO
ZWVkIHRvIGRlY3JlbWVudCBudW1WYWx1ZXNJbnZlY3RvciBiYXNlZCBvbiBudW1iZXIgb2YgcmVh
bCBlbnRyaWVzCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAodW5zaWduZWQpY291
bnQ7ICsraSkKLSAgICAgICAgICAgIGlmICgoaSA8IG1fdmVjdG9yTGVuZ3RoKSAmJiAoc3RvcmFn
ZS0+bV92ZWN0b3JbaV0pKQotICAgICAgICAgICAgICAgIC0tc3RvcmFnZS0+bV9udW1WYWx1ZXNJ
blZlY3RvcjsKLSAgICB9IGVsc2UKLSAgICAgICAgc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3Rv
ciAtPSBjb3VudDsKKyAgICBpZiAoIW9sZExlbmd0aCkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgCisgICAgc3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciAtPSBjb3VudDsKICAgICBzdG9y
YWdlLT5tX2xlbmd0aCAtPSBjb3VudDsKICAgICAKICAgICBpZiAobV92ZWN0b3JMZW5ndGgpIHsK
QEAgLTEzNTgsMzAgKzEzNDEsMjAgQEAgdm9pZCBKU0FycmF5OjpzaGlmdENvdW50KEV4ZWNTdGF0
ZSogZXhlYwogICAgICAgICAgICAgbV9pbmRleEJpYXMgKz0gY291bnQ7CiAgICAgICAgIH0KICAg
ICB9CisgICAgcmV0dXJuIHRydWU7CiB9Ci0gICAgCi12b2lkIEpTQXJyYXk6OnVuc2hpZnRDb3Vu
dChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGNvdW50KQorCisvLyBSZXR1cm5zIHRydWUgaWYg
dGhlIHVuc2hpZnQgY2FuIGJlIGhhbmRsZWQsIGZhbHNlIHRvIGZhbGxiYWNrLiAgICAKK2Jvb2wg
SlNBcnJheTo6dW5zaGlmdENvdW50KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgY291bnQpCiB7
CiAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gbV9zdG9yYWdlOwogICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHN0b3JhZ2UtPm1fbGVuZ3RoOwogCi0gICAgaWYgKGxlbmd0aCAhPSBzdG9yYWdlLT5t
X251bVZhbHVlc0luVmVjdG9yKSB7Ci0gICAgICAgIC8vIElmIG1fbGVuZ3RoIGFuZCBtX251bVZh
bHVlc0luVmVjdG9yIGFyZW4ndCB0aGUgc2FtZSwgd2UgaGF2ZSBhIHNwYXJzZSB2ZWN0b3IKLSAg
ICAgICAgLy8gd2hpY2ggbWVhbnMgd2UgbmVlZCB0byBnbyB0aHJvdWdoIGVhY2ggZW50cnkgbG9v
a2luZyBmb3IgdGhlIHRoZSAiZW1wdHkiCi0gICAgICAgIC8vIHNsb3RzIGFuZCB0aGVuIGZpbGwg
dGhlbSB3aXRoIHBvc3NpYmxlIHByb3BlcnRpZXMuICBTZWUgRUNNQSBzcGVjLgotICAgICAgICAv
LyAxNS40LjQuMTMgc3RlcHMgOCB0aHJvdWdoIDEwLgotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICgoaSA+PSBtX3ZlY3Rvckxl
bmd0aCkgfHwgKCFtX3N0b3JhZ2UtPm1fdmVjdG9yW2ldKSkgewotICAgICAgICAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90KHRoaXMpOwotICAgICAgICAgICAgICAgIEpTVmFsdWUgcCA9IHByb3Rv
dHlwZSgpOwotICAgICAgICAgICAgICAgIGlmICgoIXAuaXNOdWxsKCkpICYmIChhc09iamVjdChw
KS0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGksIHNsb3QpKSkKLSAgICAgICAgICAgICAgICAgICAg
bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleCh0aGlzLCBleGVjLCBpLCBzbG90LmdldFZhbHVlKGV4
ZWMsIGkpLCBmYWxzZSk7IC8vIEZJWE1FIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MDMzNQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIAotICAg
IHN0b3JhZ2UgPSBtX3N0b3JhZ2U7IC8vIFRoZSBwdXQoKSBhYm92ZSBjb3VsZCBoYXZlIGdyb3du
IHRoZSB2ZWN0b3IgYW5kIHJlYWxsb2MnZWQgc3RvcmFnZS4KLSAgICAKKyAgICAvLyBJZiB0aGUg
YXJyYXkgY29udGFpbnMgaG9sZXMgb3IgaXMgb3RoZXJ3aXNlIGluIGFuIGFibm9ybWFsIHN0YXRl
LAorICAgIC8vIHVzZSB0aGUgZ2VuZXJpYyBhbGdvcml0aG0gaW4gQXJyYXlQcm90b3R5cGUuCisg
ICAgaWYgKGxlbmd0aCAhPSBzdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yIHx8IGluU3BhcnNl
TW9kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAobV9pbmRleEJpYXMgPj0g
Y291bnQpIHsKICAgICAgICAgbV9pbmRleEJpYXMgLT0gY291bnQ7CiAgICAgICAgIGNoYXIqIG5l
d0Jhc2VTdG9yYWdlID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc3RvcmFnZSkgLSBjb3VudCAq
IHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwpAQCAtMTM5MCwxMiArMTM2MywxMyBAQCB2
b2lkIEpTQXJyYXk6OnVuc2hpZnRDb3VudChFeGVjU3RhdGUqIGV4CiAgICAgICAgIG1fdmVjdG9y
TGVuZ3RoICs9IGNvdW50OwogICAgIH0gZWxzZSBpZiAoIXVuc2hpZnRDb3VudFNsb3dDYXNlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgY291bnQpKSB7CiAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJv
cihleGVjKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
ICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHZlY3RvciA9IG1fc3RvcmFnZS0+bV92ZWN0b3I7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyBpKyspCiAgICAgICAgIHZlY3Rv
cltpXS5jbGVhcigpOworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIEpTQXJyYXk6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEwOTk1MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTg3LDggKzE4Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHB1c2goRXhlY1N0
YXRlKiwgSlNWYWx1ZSk7CiAgICAgICAgIEpTVmFsdWUgcG9wKEV4ZWNTdGF0ZSopOwogCi0gICAg
ICAgIHZvaWQgc2hpZnRDb3VudChFeGVjU3RhdGUqLCB1bnNpZ25lZCBjb3VudCk7Ci0gICAgICAg
IHZvaWQgdW5zaGlmdENvdW50KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGNvdW50KTsKKyAgICAgICAg
Ym9vbCBzaGlmdENvdW50KEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGNvdW50KTsKKyAgICAgICAgYm9v
bCB1bnNoaWZ0Q291bnQoRXhlY1N0YXRlKiwgdW5zaWduZWQgY291bnQpOwogCiAgICAgICAgIGJv
b2wgY2FuR2V0SW5kZXgodW5zaWduZWQgaSkgeyByZXR1cm4gaSA8IG1fdmVjdG9yTGVuZ3RoICYm
IG1fc3RvcmFnZS0+bV92ZWN0b3JbaV07IH0KICAgICAgICAgSlNWYWx1ZSBnZXRJbmRleCh1bnNp
Z25lZCBpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL21vemlsbGEvanMxXzYv
QXJyYXkvcmVncmVzcy0zMDQ4MjguanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL21vemlsbGEvanMxXzYvQXJyYXkvcmVncmVzcy0zMDQ4MjguanMJKHJldmlzaW9u
IDEwOTk1MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9tb3ppbGxhL2pzMV82L0Fy
cmF5L3JlZ3Jlc3MtMzA0ODI4LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAg
cmVwb3J0Q29tcGFyZSgnYWJjJywgdmFsdWUsIHN1bW1hcnkgKyAnOgogCiAvLyBwb3AKIHZhbHVl
ICA9ICdhYmMnOwotZXhwZWN0ID0gJ2MnOworZXhwZWN0ID0gJ1R5cGVFcnJvcjogVW5hYmxlIHRv
IGRlbGV0ZSBwcm9wZXJ0eS4nOwogdHJ5CiB7CiAgIGFjdHVhbCA9IEFycmF5LnByb3RvdHlwZS5w
b3AuY2FsbCh2YWx1ZSk7CkBAIC0xMjgsNyArMTI4LDcgQEAgcmVwb3J0Q29tcGFyZSgnZGVmJywg
dmFsdWUsIHN1bW1hcnkgKyAnOgogCiAvLyBzaGlmdAogdmFsdWUgID0gJ2FiYyc7Ci1leHBlY3Qg
PSAnYSc7CitleHBlY3QgPSAnVHlwZUVycm9yOiBVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5Lic7
CiB0cnkKIHsKICAgYWN0dWFsID0gQXJyYXkucHJvdG90eXBlLnNoaWZ0LmNhbGwodmFsdWUpOwpA
QCAtMTQyLDcgKzE0Miw3IEBAIHJlcG9ydENvbXBhcmUoJ2FiYycsIHZhbHVlLCBzdW1tYXJ5ICsg
JzoKIAogLy8gc3BsaWNlCiB2YWx1ZSAgPSAnYWJjJzsKLWV4cGVjdCA9ICdiJzsKK2V4cGVjdCA9
ICdUeXBlRXJyb3I6IFVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuJzsKIHRyeQogewogICBhY3R1
YWwgPSBBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwodmFsdWUsIDEsIDEpICsgJyc7CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMDk5OTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMy0wNiAgR2F2aW4gQmFycmFjbG91Z2ggIDxi
YXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgQXJyYXkucHJvdG90eXBlIGZ1bmN0aW9u
cyBzaG91bGQgdGhyb3cgaWYgZGVsZXRlIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQ2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8xNS40LjQuMTIt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvanMvbW96aWxsYS9zdHJpY3QvMTUuNC40LjEz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL21vemlsbGEvc3RyaWN0LzE1LjQuNC42
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL21vemlsbGEvc3RyaWN0LzE1LjQuNC44
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2pzL21vemlsbGEvc3RyaWN0LzE1LjQuNC45
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgICAgIC0gY2hlY2sgaW4gcGFzc2luZyB0ZXN0IHJlc3Vs
dHMuCisKIDIwMTItMDMtMDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgQ2FuJ3Qgc2VsZWN0IGEgbGluZSBvZiBSVEwgdGV4dCBvbiBGYWNlYm9vawpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8xNS40LjQuNi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8xNS40LjQu
Ni1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEwOTk1MSkKKysrIExheW91dFRlc3RzL2Zhc3QvanMv
bW96aWxsYS9zdHJpY3QvMTUuNC40LjYtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDggKzEsOCBAQAogUEFTUyAndXNlIHN0cmljdCc7IHZhciBhID0gYXJyKCk7IFthLnBvcCgpLCBh
XSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCiBQQVNTIHZhciBhID0gYXJyKCk7
IFthLnBvcCgpLCBhXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCiBQQVNTIHRy
dWUgPT09IHRydWUKLUZBSUwgJ3VzZSBzdHJpY3QnOyB2YXIgbyA9IG9iaigpOyBbQXJyYXkucHJv
dG90eXBlLnBvcC5jYWxsKG8pLCBvXSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVy
cm9yCi1GQUlMIHZhciBvID0gb2JqKCk7IFtBcnJheS5wcm90b3R5cGUucG9wLmNhbGwobyksIG9d
IHNob3VsZCB0aHJvdyBhbiBpbnN0YW5jZSBvZiBUeXBlRXJyb3IKK1BBU1MgJ3VzZSBzdHJpY3Qn
OyB2YXIgbyA9IG9iaigpOyBbQXJyYXkucHJvdG90eXBlLnBvcC5jYWxsKG8pLCBvXSB0aHJldyBl
eGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCitQQVNTIHZhciBvID0gb2JqKCk7IFtBcnJheS5w
cm90b3R5cGUucG9wLmNhbGwobyksIG9dIHRocmV3IGV4Y2VwdGlvbiBvZiB0eXBlIFR5cGVFcnJv
ci4KIFBBU1MgdHJ1ZSA9PT0gdHJ1ZQogIFBBU1NFRCEgCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL21vemlsbGEvc3RyaWN0LzE1LjQu
NC44LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL21vemls
bGEvc3RyaWN0LzE1LjQuNC44LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTA5OTUxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8xNS40LjQuOC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTQsMTEgKzQsMTEgQEAgUEFTUyB0cnVlID09PSB0cnVlCiBQQVNTICd1
c2Ugc3RyaWN0JzsgdmFyIG8gPSBvYmooKTsgQXJyYXkucHJvdG90eXBlLnJldmVyc2UuY2FsbChv
KSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCiBQQVNTIHZhciBvID0gb2JqKCk7
IEFycmF5LnByb3RvdHlwZS5yZXZlcnNlLmNhbGwobykgdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUg
VHlwZUVycm9yLgogUEFTUyB0cnVlID09PSB0cnVlCi1GQUlMICd1c2Ugc3RyaWN0JzsgdmFyIGEg
PSBhZ2FwKCk7IGEucmV2ZXJzZSgpIHNob3VsZCB0aHJvdyBhbiBpbnN0YW5jZSBvZiBUeXBlRXJy
b3IKLUZBSUwgdmFyIGEgPSBhZ2FwKCk7IGEucmV2ZXJzZSgpIHNob3VsZCB0aHJvdyBhbiBpbnN0
YW5jZSBvZiBUeXBlRXJyb3IKK1BBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgYSA9IGFnYXAoKTsgYS5y
ZXZlcnNlKCkgdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgVHlwZUVycm9yLgorUEFTUyB2YXIgYSA9
IGFnYXAoKTsgYS5yZXZlcnNlKCkgdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgVHlwZUVycm9yLgog
UEFTUyB0cnVlID09PSB0cnVlCi1GQUlMICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBvZ2FwKCk7IEFy
cmF5LnByb3RvdHlwZS5yZXZlcnNlLmNhbGwobykgc2hvdWxkIHRocm93IGFuIGluc3RhbmNlIG9m
IFR5cGVFcnJvcgotRkFJTCB2YXIgbyA9IG9nYXAoKTsgQXJyYXkucHJvdG90eXBlLnJldmVyc2Uu
Y2FsbChvKSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCitQQVNTICd1c2Ug
c3RyaWN0JzsgdmFyIG8gPSBvZ2FwKCk7IEFycmF5LnByb3RvdHlwZS5yZXZlcnNlLmNhbGwobykg
dGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgVHlwZUVycm9yLgorUEFTUyB2YXIgbyA9IG9nYXAoKTsg
QXJyYXkucHJvdG90eXBlLnJldmVyc2UuY2FsbChvKSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBU
eXBlRXJyb3IuCiBQQVNTIHRydWUgPT09IHRydWUKICBQQVNTRUQhIAogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9tb3ppbGxhL3N0cmlj
dC8xNS40LjQuOS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9tb3ppbGxhL3N0cmljdC8xNS40LjQuOS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDEwOTk1MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvbW96aWxsYS9zdHJpY3QvMTUuNC40LjktZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICsxLDE0IEBACi1GQUlMICd1c2Ugc3RyaWN0Jzsg
dmFyIGEgPSBhcnIoKTsgW2Euc2hpZnQoKSwgYV0gc2hvdWxkIHRocm93IGFuIGluc3RhbmNlIG9m
IFR5cGVFcnJvcgotRkFJTCB2YXIgYSA9IGFycigpOyBbYS5zaGlmdCgpLCBhXSBzaG91bGQgdGhy
b3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCitQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIGEgPSBh
cnIoKTsgW2Euc2hpZnQoKSwgYV0gdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgVHlwZUVycm9yLgor
UEFTUyB2YXIgYSA9IGFycigpOyBbYS5zaGlmdCgpLCBhXSB0aHJldyBleGNlcHRpb24gb2YgdHlw
ZSBUeXBlRXJyb3IuCiBQQVNTIHRydWUgPT09IHRydWUKIFBBU1MgJ3VzZSBzdHJpY3QnOyB2YXIg
byA9IG9iaigpOyBbQXJyYXkucHJvdG90eXBlLnNoaWZ0LmNhbGwobyksIG9dIHRocmV3IGV4Y2Vw
dGlvbiBvZiB0eXBlIFR5cGVFcnJvci4KIFBBU1MgdmFyIG8gPSBvYmooKTsgW0FycmF5LnByb3Rv
dHlwZS5zaGlmdC5jYWxsKG8pLCBvXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3Iu
CiBQQVNTIHRydWUgPT09IHRydWUKLUZBSUwgJ3VzZSBzdHJpY3QnOyB2YXIgYSA9IGFnYXAoKTsg
W2Euc2hpZnQoKSwgYV0gc2hvdWxkIHRocm93IGFuIGluc3RhbmNlIG9mIFR5cGVFcnJvcgotRkFJ
TCB2YXIgYSA9IGFnYXAoKTsgW2Euc2hpZnQoKSwgYV0gc2hvdWxkIHRocm93IGFuIGluc3RhbmNl
IG9mIFR5cGVFcnJvcgorUEFTUyAndXNlIHN0cmljdCc7IHZhciBhID0gYWdhcCgpOyBbYS5zaGlm
dCgpLCBhXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCitQQVNTIHZhciBhID0g
YWdhcCgpOyBbYS5zaGlmdCgpLCBhXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3Iu
CiBQQVNTIHRydWUgPT09IHRydWUKLUZBSUwgJ3VzZSBzdHJpY3QnOyB2YXIgbyA9IG9nYXAoKTsg
W0FycmF5LnByb3RvdHlwZS5zaGlmdC5jYWxsKG8pLCBvXSBzaG91bGQgdGhyb3cgYW4gaW5zdGFu
Y2Ugb2YgVHlwZUVycm9yCi1GQUlMIHZhciBvID0gb2dhcCgpOyBbQXJyYXkucHJvdG90eXBlLnNo
aWZ0LmNhbGwobyksIG9dIHNob3VsZCB0aHJvdyBhbiBpbnN0YW5jZSBvZiBUeXBlRXJyb3IKK1BB
U1MgJ3VzZSBzdHJpY3QnOyB2YXIgbyA9IG9nYXAoKTsgW0FycmF5LnByb3RvdHlwZS5zaGlmdC5j
YWxsKG8pLCBvXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCitQQVNTIHZhciBv
ID0gb2dhcCgpOyBbQXJyYXkucHJvdG90eXBlLnNoaWZ0LmNhbGwobyksIG9dIHRocmV3IGV4Y2Vw
dGlvbiBvZiB0eXBlIFR5cGVFcnJvci4KIFBBU1MgdHJ1ZSA9PT0gdHJ1ZQogIFBBU1NFRCEgCiBQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L21vemlsbGEvc3RyaWN0LzE1LjQuNC4xMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9qcy9tb3ppbGxhL3N0cmljdC8xNS40LjQuMTItZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxMDk5NTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL21vemlsbGEvc3RyaWN0LzE1
LjQuNC4xMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzEsMTQgQEAKLUZB
SUwgJ3VzZSBzdHJpY3QnOyB2YXIgYSA9IGFycigpOyBbYS5zcGxpY2UoMCwgMSksIGFdIHNob3Vs
ZCB0aHJvdyBhbiBpbnN0YW5jZSBvZiBUeXBlRXJyb3IKLUZBSUwgdmFyIGEgPSBhcnIoKTsgW2Eu
c3BsaWNlKDAsIDEpLCBhXSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCitQ
QVNTICd1c2Ugc3RyaWN0JzsgdmFyIGEgPSBhcnIoKTsgW2Euc3BsaWNlKDAsIDEpLCBhXSB0aHJl
dyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCitQQVNTIHZhciBhID0gYXJyKCk7IFthLnNw
bGljZSgwLCAxKSwgYV0gdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgVHlwZUVycm9yLgogUEFTUyB0
cnVlID09PSB0cnVlCiBQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBvYmooKTsgW0FycmF5LnBy
b3RvdHlwZS5zcGxpY2UuY2FsbChvLCAwLCAxKSwgb10gdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUg
VHlwZUVycm9yLgogUEFTUyB2YXIgbyA9IG9iaigpOyBbQXJyYXkucHJvdG90eXBlLnNwbGljZS5j
YWxsKG8sIDAsIDEpLCBvXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCiBQQVNT
IHRydWUgPT09IHRydWUKLUZBSUwgJ3VzZSBzdHJpY3QnOyB2YXIgYSA9IGFnYXAoKTsgW2Euc3Bs
aWNlKDAsIDEpLCBhXSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCi1GQUlM
IHZhciBhID0gYWdhcCgpOyBbYS5zcGxpY2UoMCwgMSksIGFdIHNob3VsZCB0aHJvdyBhbiBpbnN0
YW5jZSBvZiBUeXBlRXJyb3IKK1BBU1MgJ3VzZSBzdHJpY3QnOyB2YXIgYSA9IGFnYXAoKTsgW2Eu
c3BsaWNlKDAsIDEpLCBhXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCitQQVNT
IHZhciBhID0gYWdhcCgpOyBbYS5zcGxpY2UoMCwgMSksIGFdIHRocmV3IGV4Y2VwdGlvbiBvZiB0
eXBlIFR5cGVFcnJvci4KIFBBU1MgdHJ1ZSA9PT0gdHJ1ZQotRkFJTCAndXNlIHN0cmljdCc7IHZh
ciBvID0gb2dhcCgpOyBbQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKG8sIDAsIDEpLCBvXSBz
aG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCi1GQUlMIHZhciBvID0gb2dhcCgp
OyBbQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKG8sIDAsIDEpLCBvXSBzaG91bGQgdGhyb3cg
YW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCitQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBvZ2Fw
KCk7IFtBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwobywgMCwgMSksIG9dIHRocmV3IGV4Y2Vw
dGlvbiBvZiB0eXBlIFR5cGVFcnJvci4KK1BBU1MgdmFyIG8gPSBvZ2FwKCk7IFtBcnJheS5wcm90
b3R5cGUuc3BsaWNlLmNhbGwobywgMCwgMSksIG9dIHRocmV3IGV4Y2VwdGlvbiBvZiB0eXBlIFR5
cGVFcnJvci4KIFBBU1MgdHJ1ZSA9PT0gdHJ1ZQogIFBBU1NFRCEgCiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL21vemlsbGEvc3RyaWN0
LzE1LjQuNC4xMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9tb3ppbGxhL3N0cmljdC8xNS40LjQuMTMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxMDk5NTEp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL21vemlsbGEvc3RyaWN0LzE1LjQuNC4xMy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzEsMTQgQEAKLUZBSUwgJ3VzZSBzdHJpY3Qn
OyB2YXIgYSA9IGFycigpOyBbYS51bnNoaWZ0KDQwLCA1MCksIGFdIHNob3VsZCB0aHJvdyBhbiBp
bnN0YW5jZSBvZiBUeXBlRXJyb3IKLUZBSUwgdmFyIGEgPSBhcnIoKTsgW2EudW5zaGlmdCg0MCwg
NTApLCBhXSBzaG91bGQgdGhyb3cgYW4gaW5zdGFuY2Ugb2YgVHlwZUVycm9yCitQQVNTICd1c2Ug
c3RyaWN0JzsgdmFyIGEgPSBhcnIoKTsgW2EudW5zaGlmdCg0MCwgNTApLCBhXSB0aHJldyBleGNl
cHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCitQQVNTIHZhciBhID0gYXJyKCk7IFthLnVuc2hpZnQo
NDAsIDUwKSwgYV0gdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgVHlwZUVycm9yLgogUEFTUyB0cnVl
ID09PSB0cnVlCiBQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBvYmooKTsgW0FycmF5LnByb3Rv
dHlwZS51bnNoaWZ0LmNhbGwobywgNDAsIDUwKSwgb10gdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUg
VHlwZUVycm9yLgogUEFTUyB2YXIgbyA9IG9iaigpOyBbQXJyYXkucHJvdG90eXBlLnVuc2hpZnQu
Y2FsbChvLCA0MCwgNTApLCBvXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCiBQ
QVNTIHRydWUgPT09IHRydWUKLUZBSUwgJ3VzZSBzdHJpY3QnOyB2YXIgYSA9IGFnYXAoKTsgW2Eu
dW5zaGlmdCg5KSwgYV0gc2hvdWxkIHRocm93IGFuIGluc3RhbmNlIG9mIFR5cGVFcnJvcgotRkFJ
TCB2YXIgYSA9IGFnYXAoKTsgW2EudW5zaGlmdCg5KSwgYV0gc2hvdWxkIHRocm93IGFuIGluc3Rh
bmNlIG9mIFR5cGVFcnJvcgorUEFTUyAndXNlIHN0cmljdCc7IHZhciBhID0gYWdhcCgpOyBbYS51
bnNoaWZ0KDkpLCBhXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBUeXBlRXJyb3IuCitQQVNTIHZh
ciBhID0gYWdhcCgpOyBbYS51bnNoaWZ0KDkpLCBhXSB0aHJldyBleGNlcHRpb24gb2YgdHlwZSBU
eXBlRXJyb3IuCiBQQVNTIHRydWUgPT09IHRydWUKLUZBSUwgJ3VzZSBzdHJpY3QnOyB2YXIgbyA9
IG9nYXAoKTsgW0FycmF5LnByb3RvdHlwZS51bnNoaWZ0LmNhbGwobywgOSksIG9dIHNob3VsZCB0
aHJvdyBhbiBpbnN0YW5jZSBvZiBUeXBlRXJyb3IKLUZBSUwgdmFyIG8gPSBvZ2FwKCk7IFtBcnJh
eS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKG8sIDkpLCBvXSBzaG91bGQgdGhyb3cgYW4gaW5zdGFu
Y2Ugb2YgVHlwZUVycm9yCitQQVNTICd1c2Ugc3RyaWN0JzsgdmFyIG8gPSBvZ2FwKCk7IFtBcnJh
eS5wcm90b3R5cGUudW5zaGlmdC5jYWxsKG8sIDkpLCBvXSB0aHJldyBleGNlcHRpb24gb2YgdHlw
ZSBUeXBlRXJyb3IuCitQQVNTIHZhciBvID0gb2dhcCgpOyBbQXJyYXkucHJvdG90eXBlLnVuc2hp
ZnQuY2FsbChvLCA5KSwgb10gdGhyZXcgZXhjZXB0aW9uIG9mIHR5cGUgVHlwZUVycm9yLgogUEFT
UyB0cnVlID09PSB0cnVlCiAgUEFTU0VEISAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUK
</data>
<flag name="review"
          id="133533"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>