<?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>161639</bug_id>
          
          <creation_ts>2016-09-06 12:14:54 -0700</creation_ts>
          <short_desc>MapHash should do constant folding when it has a constant argument and its legal to hash that value</short_desc>
          <delta_ts>2016-09-12 14:06:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local 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="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1226784</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-06 12:14:54 -0700</bug_when>
    <thetext>....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228663</commentid>
    <comment_count>1</comment_count>
      <attachid>288544</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-11 18:34:05 -0700</bug_when>
    <thetext>Created attachment 288544
WIP

I think this is the patch. Lets see what EWS thinks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228684</commentid>
    <comment_count>2</comment_count>
      <attachid>288552</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-11 23:10:04 -0700</bug_when>
    <thetext>Created attachment 288552
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228686</commentid>
    <comment_count>3</comment_count>
      <attachid>288554</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-11 23:11:29 -0700</bug_when>
    <thetext>Created attachment 288554
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228797</commentid>
    <comment_count>4</comment_count>
      <attachid>288554</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-12 10:57:18 -0700</bug_when>
    <thetext>Comment on attachment 288554
patch

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

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:987
&gt; +                // We don&apos;t want this JSValue to devolve into a double so
&gt; +                // we cast it to an int32_t. When we actually use this
&gt; +                // value, we will use it as if it were unsigned.
&gt; +                setConstant(node, JSValue(static_cast&lt;int32_t&gt;(*hash)));

Does MapHash ordinarily return an int32?  If so, then this comment would be less confusing as: &quot;Although C++ code uses uint32_t for the hash, the closest type in DFG IR is Int32 and that&apos;s what MapHash returns.  So, we have to cast to int32_t to avoid large unsigned values becoming doubles.&quot;

Also, I would use jsNumber(int32_t) instead of JSValue().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228826</commentid>
    <comment_count>5</comment_count>
      <attachid>288594</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-12 11:38:59 -0700</bug_when>
    <thetext>Created attachment 288594
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228883</commentid>
    <comment_count>6</comment_count>
      <attachid>288594</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-12 14:06:30 -0700</bug_when>
    <thetext>Comment on attachment 288594
patch for landing

Clearing flags on attachment: 288594

Committed r205819: &lt;http://trac.webkit.org/changeset/205819&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228884</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-12 14:06:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288544</attachid>
            <date>2016-09-11 18:34:05 -0700</date>
            <delta_ts>2016-09-11 23:10:04 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>4148</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDIwNTc5MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRGR0Fic3RyYWN0SW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgi
CisjaW5jbHVkZSAiSGFzaE1hcEltcGwuaCIKICNpbmNsdWRlICJKSVRPcGVyYXRpb25zLmgiCiAj
aW5jbHVkZSAiTWF0aENvbW1vbi5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKQEAgLTk3Nyw5
ICs5NzgsMTYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
ICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIE1hcEhhc2g6CisgICAgY2FzZSBNYXBIYXNo
OiB7CisgICAgICAgIGlmIChKU1ZhbHVlIGtleSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLnZh
bHVlKCkpIHsKKyAgICAgICAgICAgIGlmIChPcHRpb25hbDx1aW50MzJfdD4gaGFzaCA9IGNvbmN1
cnJlbnRKU01hcEhhc2goa2V5KSkgeworICAgICAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUs
IGpzTnVtYmVyKCpoYXNoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNJbnQzMk9ubHkp
OwogICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICBjYXNlIExvYWRGcm9tSlNNYXBCdWNrZXQ6
CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAkocmV2aXNpb24gMjA1NzkyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAkod29ya2luZyBjb3B5
KQpAQCAtMTk0LDYgKzE5NCwxOSBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgbm9ybWFsaXplTWFw
S2V5KEpTCiAgICAgcmV0dXJuIGtleTsKIH0KIAorc3RhdGljIEFMV0FZU19JTkxJTkUgdWludDMy
X3Qgd2FuZ3NJbnQ2NEhhc2godWludDY0X3Qga2V5KQoreworICAgIGtleSArPSB+KGtleSA8PCAz
Mik7CisgICAga2V5IF49IChrZXkgPj4gMjIpOworICAgIGtleSArPSB+KGtleSA8PCAxMyk7Cisg
ICAga2V5IF49IChrZXkgPj4gOCk7CisgICAga2V5ICs9IChrZXkgPDwgMyk7CisgICAga2V5IF49
IChrZXkgPj4gMTUpOworICAgIGtleSArPSB+KGtleSA8PCAyNyk7CisgICAga2V5IF49IChrZXkg
Pj4gMzEpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oa2V5KTsKK30KKwogQUxX
QVlTX0lOTElORSB1aW50MzJfdCBqc01hcEhhc2goRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpT
VmFsdWUgdmFsdWUpCiB7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShub3JtYWxpemVNYXBLZXko
dmFsdWUpID09IHZhbHVlLCAiV2UgZXhwZWN0IG5vcm1hbGl6ZWQgdmFsdWVzIGZsb3dpbmcgaW50
byB0aGlzIGZ1bmN0aW9uLiIpOwpAQCAtMjA4LDIxICsyMjEsMjcgQEAgQUxXQVlTX0lOTElORSB1
aW50MzJfdCBqc01hcEhhc2goRXhlY1N0YQogICAgICAgICByZXR1cm4gd3RmU3RyaW5nLmltcGwo
KS0+aGFzaCgpOwogICAgIH0KIAotICAgIGF1dG8gd2FuZ3NJbnQ2NEhhc2ggPSBbXSAodWludDY0
X3Qga2V5KSAtPiB1aW50MzJfdCB7Ci0gICAgICAgIGtleSArPSB+KGtleSA8PCAzMik7Ci0gICAg
ICAgIGtleSBePSAoa2V5ID4+IDIyKTsKLSAgICAgICAga2V5ICs9IH4oa2V5IDw8IDEzKTsKLSAg
ICAgICAga2V5IF49IChrZXkgPj4gOCk7Ci0gICAgICAgIGtleSArPSAoa2V5IDw8IDMpOwotICAg
ICAgICBrZXkgXj0gKGtleSA+PiAxNSk7Ci0gICAgICAgIGtleSArPSB+KGtleSA8PCAyNyk7Ci0g
ICAgICAgIGtleSBePSAoa2V5ID4+IDMxKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihrZXkpOwotICAgIH07CiAgICAgdWludDY0X3QgcmF3VmFsdWUgPSBKU1ZhbHVlOjpl
bmNvZGUodmFsdWUpOwogICAgIHJldHVybiB3YW5nc0ludDY0SGFzaChyYXdWYWx1ZSk7CiB9CiAK
K0FMV0FZU19JTkxJTkUgT3B0aW9uYWw8dWludDMyX3Q+IGNvbmN1cnJlbnRKU01hcEhhc2goSlNW
YWx1ZSBrZXkpCit7CisgICAga2V5ID0gbm9ybWFsaXplTWFwS2V5KGtleSk7CisgICAgaWYgKGtl
eS5pc1N0cmluZygpKSB7CisgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhrZXkp
OworICAgICAgICBpZiAoc3RyaW5nLT5sZW5ndGgoKSA+IDEwICogMTAyNCkKKyAgICAgICAgICAg
IHJldHVybiBOdWxsb3B0OworICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiBpbXBsID0gc3RyaW5n
LT50cnlHZXRWYWx1ZUltcGwoKTsKKyAgICAgICAgaWYgKCFpbXBsKQorICAgICAgICAgICAgcmV0
dXJuIE51bGxvcHQ7CisgICAgICAgIHJldHVybiBpbXBsLT5jb25jdXJyZW50SGFzaCgpOworICAg
IH0KKworICAgIHVpbnQ2NF90IHJhd1ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKGtleSk7CisgICAg
cmV0dXJuIHdhbmdzSW50NjRIYXNoKHJhd1ZhbHVlKTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1l
IEhhc2hNYXBCdWNrZXRUeXBlPgogY2xhc3MgSGFzaE1hcEltcGwgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwpJbmRleDogU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgJ
KHJldmlzaW9uIDIwNTc5MikKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
aGFzaFNsb3dDYXNlKCk7CiAgICAgfQogCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE5FVkVSX0lO
TElORSB1bnNpZ25lZCBjb25jdXJyZW50SGFzaCgpIGNvbnN0OworCiAgICAgdW5zaWduZWQgc3lt
Ym9sQXdhcmVIYXNoKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChpc1N5bWJvbCgpKQpJbmRl
eDogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCShyZXZpc2lvbiAyMDU3OTIpCisr
KyBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04Miw2ICs4MiwxNyBAQCBORVZFUl9JTkxJTkUgdW5zaWduZWQgU3RyaW5nSW1wbDo6aGFzaFNs
CiAgICAgcmV0dXJuIGV4aXN0aW5nSGFzaCgpOwogfQogCitORVZFUl9JTkxJTkUgdW5zaWduZWQg
U3RyaW5nSW1wbDo6Y29uY3VycmVudEhhc2goKSBjb25zdAoreworICAgIHVuc2lnbmVkIGhhc2g7
CisgICAgaWYgKGlzOEJpdCgpKQorICAgICAgICBoYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRl
SGFzaEFuZE1hc2tUb3A4Qml0cyhtX2RhdGE4LCBtX2xlbmd0aCk7CisgICAgZWxzZQorICAgICAg
ICBoYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhtX2RhdGEx
NiwgbV9sZW5ndGgpOworICAgIEFTU0VSVCgoKGhhc2ggPDwgc19mbGFnQ291bnQpID4+IHNfZmxh
Z0NvdW50KSA9PSBoYXNoKTsKKyAgICByZXR1cm4gaGFzaDsKK30KKwogdm9pZCBBdG9taWNTdHJp
bmc6OmluaXQoKQogewogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288552</attachid>
            <date>2016-09-11 23:10:04 -0700</date>
            <delta_ts>2016-09-11 23:11:29 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>8466</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDU3OTQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE2LTA5LTExICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIE1hcEhhc2ggc2hvdWxkIGRvIGNvbnN0YW50IGZvbGRpbmcgd2hlbiBp
dCBoYXMgYSBjb25zdGFudCBhcmd1bWVudCBhbmQgaXRzIGxlZ2FsIHRvIGhhc2ggdGhhdCB2YWx1
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNjM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNy
b2JlbmNobWFya3MvbWFwLWNvbnN0YW50LWtleS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQp
OgorICAgICAgICAodGVzdCk6CisgICAgICAgIChmb28pOgorCiAyMDE2LTA5LTA5ICBNaWNoYWVs
IFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgcjIwNTc1OSBiYWNrIGluIHdpdGggYSBmaXguCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9tYXAtY29uc3RhbnQta2V5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL21hcC1jb25zdGFudC1rZXkuanMJKHJldmlzaW9uIDApCisrKyBKU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9tYXAtY29uc3RhbnQta2V5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDkgQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKQorfQorbm9JbmxpbmUoYXNzZXJ0KTsKK2Z1bmN0aW9u
IHRlc3QobWFwLCBrZXksIHZhbHVlKSB7CisgICAgbGV0IGxvYWRWYWx1ZSA9IGV2YWwoYCR7TWF0
aC5yYW5kb20oKX07IGxldCBrID0ga2V5OyAoZnVuY3Rpb24gZ2V0VmFsdWUoKSB7IHJldHVybiBt
YXAuZ2V0KGspOyB9KTtgKTsKKyAgICBub0lubGluZShsb2FkVmFsdWUpOworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChsb2FkVmFsdWUoKSA9
PT0gdmFsdWUpOworICAgIH0KK30KKworbGV0IHJlYWxseUxvbmdTdHJpbmcgPSAiIjsKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgNjAwMDA7IGkrKykgeworICAgIHJlYWxseUxvbmdTdHJpbmcgKz0gImki
OworfQorcmVhbGx5TG9uZ1N0cmluZy50b1N0cmluZygpOworCitsZXQga2V5cyA9IFsKKyAgICAi
Zm9vIiwKKyAgICAiZmRhc2hmZHNhaGZkYXNoZmRzaCIsCisgICAgInJvcGUiICsgInN0cmluZyIs
CisgICAgcmVhbGx5TG9uZ1N0cmluZywKKyAgICAyNTkyNDMsCisgICAgMTIzODIzMS4yMTM4MzIx
LAorICAgIC05MjEzOC4zMjgsCisgICAge2ZvbzogMjV9LAorICAgIFN5bWJvbCgiSGVsbG8gd29y
bGQiKSwKKyAgICB0cnVlLAorICAgIGZhbHNlLAorICAgIHVuZGVmaW5lZCwKKyAgICBudWxsLAor
ICAgIE5hTiwKKyAgICAtMCwKKyAgICBmdW5jdGlvbiBmb28oKSB7fQorXTsKKworbGV0IHN0YXJ0
ID0gRGF0ZS5ub3coKTsKK2xldCBtYXAgPSBuZXcgTWFwOworbGV0IGkgPSAwOworZm9yIChsZXQg
a2V5IG9mIGtleXMpIHsKKyAgICBsZXQgdmFsdWUgPSB7aTogaSsrfTsKKyAgICBtYXAuc2V0KGtl
eSwgdmFsdWUpOworICAgIHRlc3QobWFwLCBrZXksIHZhbHVlKTsKK30KK2NvbnN0IHZlcmJvc2Ug
PSBmYWxzZTsKK2lmICh2ZXJib3NlKQorICAgIHByaW50KERhdGUubm93KCkgLSBzdGFydCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTc5MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAor
MjAxNi0wOS0xMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBN
YXBIYXNoIHNob3VsZCBkbyBjb25zdGFudCBmb2xkaW5nIHdoZW4gaXQgaGFzIGEgY29uc3RhbnQg
YXJndW1lbnQgYW5kIGl0cyBsZWdhbCB0byBoYXNoIHRoYXQgdmFsdWUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTYzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5vdyBjb25zdGFudCBmb2xkIHRo
ZSBNYXBIYXNoIG5vZGUuIFdlJ3JlIGNhcmVmdWwgdG8gbm90IHJlc29sdmUKKyAgICAgICAgcm9w
ZXMgZnJvbSB0aGUgY29tcGlsZXIgdGhyZWFkLCBhbmQgdG8gb25seSBoYXNoIHN0cmluZ3MgaWYg
dGhleSdyZQorICAgICAgICBub3QgdG9vIGxhcmdlLgorCisgICAgICAgICogZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBy
dW50aW1lL0hhc2hNYXBJbXBsLmg6CisgICAgICAgIChKU0M6OndhbmdzSW50NjRIYXNoKToKKyAg
ICAgICAgKEpTQzo6anNNYXBIYXNoKToKKyAgICAgICAgKEpTQzo6Y29uY3VycmVudEpTTWFwSGFz
aCk6CisKIDIwMTYtMDktMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBwYXJzZUhUTUxJbnRlZ2VyKCkgc2hvdWxkIHRha2UgYSBTdHJpbmdWaWV3IGluIHBhcmFt
ZXRlcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjA1NzkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiREZHQWJzdHJhY3RJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0
ZXIuaCIKKyNpbmNsdWRlICJIYXNoTWFwSW1wbC5oIgogI2luY2x1ZGUgIkpJVE9wZXJhdGlvbnMu
aCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgpAQCAt
OTc3LDkgKzk3OCwxOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgTWFwSGFzaDoKKyAgICBjYXNlIE1h
cEhhc2g6IHsKKyAgICAgICAgaWYgKEpTVmFsdWUga2V5ID0gZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkudmFsdWUoKSkgeworICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBoYXNoID0g
Y29uY3VycmVudEpTTWFwSGFzaChrZXkpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3Qg
d2FudCB0aGlzIEpTVmFsdWUgdG8gZGV2b2x2ZSBpbnRvIGEgZG91YmxlIHNvCisgICAgICAgICAg
ICAgICAgLy8gd2UgY2FzdCBpdCB0byBhbiBpbnQzMl90LiBXaGVuIHdlIGFjdHVhbGx5IHVzZSB0
aGlzCisgICAgICAgICAgICAgICAgLy8gdmFsdWUsIHdlIHdpbGwgdXNlIGl0IGFzIGlmIGl0IHdl
cmUgdW5zaWduZWQuCisgICAgICAgICAgICAgICAgc2V0Q29uc3RhbnQobm9kZSwgSlNWYWx1ZShz
dGF0aWNfY2FzdDxpbnQzMl90PigqaGFzaCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoU3Bl
Y0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2UgTG9hZEZyb21K
U01hcEJ1Y2tldDoKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCShyZXZpc2lvbiAy
MDU3OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTQsNiArMTk0LDE5IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBu
b3JtYWxpemVNYXBLZXkoSlMKICAgICByZXR1cm4ga2V5OwogfQogCitzdGF0aWMgQUxXQVlTX0lO
TElORSB1aW50MzJfdCB3YW5nc0ludDY0SGFzaCh1aW50NjRfdCBrZXkpCit7CisgICAga2V5ICs9
IH4oa2V5IDw8IDMyKTsKKyAgICBrZXkgXj0gKGtleSA+PiAyMik7CisgICAga2V5ICs9IH4oa2V5
IDw8IDEzKTsKKyAgICBrZXkgXj0gKGtleSA+PiA4KTsKKyAgICBrZXkgKz0gKGtleSA8PCAzKTsK
KyAgICBrZXkgXj0gKGtleSA+PiAxNSk7CisgICAga2V5ICs9IH4oa2V5IDw8IDI3KTsKKyAgICBr
ZXkgXj0gKGtleSA+PiAzMSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihrZXkp
OworfQorCiBBTFdBWVNfSU5MSU5FIHVpbnQzMl90IGpzTWFwSGFzaChFeGVjU3RhdGUqIGV4ZWMs
IFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG5vcm1h
bGl6ZU1hcEtleSh2YWx1ZSkgPT0gdmFsdWUsICJXZSBleHBlY3Qgbm9ybWFsaXplZCB2YWx1ZXMg
Zmxvd2luZyBpbnRvIHRoaXMgZnVuY3Rpb24uIik7CkBAIC0yMDgsMjEgKzIyMSwyNyBAQCBBTFdB
WVNfSU5MSU5FIHVpbnQzMl90IGpzTWFwSGFzaChFeGVjU3RhCiAgICAgICAgIHJldHVybiB3dGZT
dHJpbmcuaW1wbCgpLT5oYXNoKCk7CiAgICAgfQogCi0gICAgYXV0byB3YW5nc0ludDY0SGFzaCA9
IFtdICh1aW50NjRfdCBrZXkpIC0+IHVpbnQzMl90IHsKLSAgICAgICAga2V5ICs9IH4oa2V5IDw8
IDMyKTsKLSAgICAgICAga2V5IF49IChrZXkgPj4gMjIpOwotICAgICAgICBrZXkgKz0gfihrZXkg
PDwgMTMpOwotICAgICAgICBrZXkgXj0gKGtleSA+PiA4KTsKLSAgICAgICAga2V5ICs9IChrZXkg
PDwgMyk7Ci0gICAgICAgIGtleSBePSAoa2V5ID4+IDE1KTsKLSAgICAgICAga2V5ICs9IH4oa2V5
IDw8IDI3KTsKLSAgICAgICAga2V5IF49IChrZXkgPj4gMzEpOwotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGtleSk7Ci0gICAgfTsKICAgICB1aW50NjRfdCByYXdWYWx1ZSA9
IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CiAgICAgcmV0dXJuIHdhbmdzSW50NjRIYXNoKHJhd1Zh
bHVlKTsKIH0KIAorQUxXQVlTX0lOTElORSBPcHRpb25hbDx1aW50MzJfdD4gY29uY3VycmVudEpT
TWFwSGFzaChKU1ZhbHVlIGtleSkKK3sKKyAgICBrZXkgPSBub3JtYWxpemVNYXBLZXkoa2V5KTsK
KyAgICBpZiAoa2V5LmlzU3RyaW5nKCkpIHsKKyAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFz
U3RyaW5nKGtleSk7CisgICAgICAgIGlmIChzdHJpbmctPmxlbmd0aCgpID4gMTAgKiAxMDI0KQor
ICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIGlt
cGwgPSBzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpOworICAgICAgICBpZiAoIWltcGwpCisgICAg
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIGltcGwtPmNvbmN1cnJlbnRI
YXNoKCk7CisgICAgfQorCisgICAgdWludDY0X3QgcmF3VmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUo
a2V5KTsKKyAgICByZXR1cm4gd2FuZ3NJbnQ2NEhhc2gocmF3VmFsdWUpOworfQorCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgSGFzaE1hcEJ1Y2tldFR5cGU+CiBjbGFzcyBIYXNoTWFwSW1wbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CkluZGV4OiBTb3VyY2UvV1RGL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjA1
NzkyKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MiBAQAorMjAxNi0wOS0xMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAg
ICAgICBNYXBIYXNoIHNob3VsZCBkbyBjb25zdGFudCBmb2xkaW5nIHdoZW4gaXQgaGFzIGEgY29u
c3RhbnQgYXJndW1lbnQgYW5kIGl0cyBsZWdhbCB0byBoYXNoIHRoYXQgdmFsdWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTYzOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBh
IGNvbmN1cnJlbnRIYXNoIG1ldGhvZCB0byBTdHJpbmdJbXBsLiBJdCdzCisgICAgICAgIHByb2Jh
Ymx5IHNhZmUgdG8gZ2V0IHRoZSBhY3R1YWwgaGFzaCB3aGlsZSBiZWluZyByYWN5LCBob3dldmVy
LAorICAgICAgICBpdCdzIHNpbXBsZXIgYW5kIG1vcmUgZnV0dXJlIHByb29mIHRvIG5vdCBoYXZl
IHRvIHdvcnJ5IGFib3V0CisgICAgICAgIHRoYXQgYW5kIHRvIGp1c3QgY29tcHV0ZSBpdCBvbiBk
ZW1hbmQuIFVzZXJzIG9mIHRoaXMgQVBJIHNob3VsZAorICAgICAgICBiZSBhd2FyZSB0aGF0IGl0
J3MgZG9pbmcgbm9uLXRyaXZpYWwgd29yay4gQ3VycmVudGx5LCB0aGUgb25seQorICAgICAgICB1
c2VyIGlzIEpTQydzIEpJVCBjb21waWxlcnMsIGFuZCB0aGV5IG9ubHkgYXNrIGZvciBoYXNoZXMg
Zm9yIHNtYWxsLWlzaAorICAgICAgICBzdHJpbmdzLgorCisgICAgICAgICogd3RmL3RleHQvU3Ry
aW5nSW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwOgorICAgICAg
ICAoV1RGOjpTdHJpbmdJbXBsOjpjb25jdXJyZW50SGFzaCk6CisKIDIwMTYtMDktMTAgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBwYXJzZUhUTUxJbnRlZ2VyKCkg
c2hvdWxkIHRha2UgYSBTdHJpbmdWaWV3IGluIHBhcmFtZXRlcgpJbmRleDogU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmgJKHJldmlzaW9uIDIwNTc5MikKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDggQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gaGFzaFNsb3dDYXNlKCk7CiAgICAgfQogCisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHVuc2lnbmVkIGNvbmN1cnJlbnRIYXNoKCkgY29uc3Q7CisKICAgICB1bnNpZ25lZCBzeW1i
b2xBd2FyZUhhc2goKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzU3ltYm9sKCkpCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAJKHJldmlzaW9uIDIwNTc5MikKKysr
IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgyLDYgKzgyLDE3IEBAIE5FVkVSX0lOTElORSB1bnNpZ25lZCBTdHJpbmdJbXBsOjpoYXNoU2wK
ICAgICByZXR1cm4gZXhpc3RpbmdIYXNoKCk7CiB9CiAKK3Vuc2lnbmVkIFN0cmluZ0ltcGw6OmNv
bmN1cnJlbnRIYXNoKCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBoYXNoOworICAgIGlmIChpczhC
aXQoKSkKKyAgICAgICAgaGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9w
OEJpdHMobV9kYXRhOCwgbV9sZW5ndGgpOworICAgIGVsc2UKKyAgICAgICAgaGFzaCA9IFN0cmlu
Z0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9kYXRhMTYsIG1fbGVuZ3RoKTsK
KyAgICBBU1NFUlQoKChoYXNoIDw8IHNfZmxhZ0NvdW50KSA+PiBzX2ZsYWdDb3VudCkgPT0gaGFz
aCk7CisgICAgcmV0dXJuIGhhc2g7Cit9CisKIHZvaWQgQXRvbWljU3RyaW5nOjppbml0KCkKIHsK
ICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288554</attachid>
            <date>2016-09-11 23:11:29 -0700</date>
            <delta_ts>2016-09-12 11:38:59 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>8541</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDU3OTQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE2LTA5LTExICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIE1hcEhhc2ggc2hvdWxkIGRvIGNvbnN0YW50IGZvbGRpbmcgd2hlbiBp
dCBoYXMgYSBjb25zdGFudCBhcmd1bWVudCBhbmQgaXRzIGxlZ2FsIHRvIGhhc2ggdGhhdCB2YWx1
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNjM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNy
b2JlbmNobWFya3MvbWFwLWNvbnN0YW50LWtleS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQp
OgorICAgICAgICAodGVzdCk6CisgICAgICAgIChmb28pOgorCiAyMDE2LTA5LTA5ICBNaWNoYWVs
IFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgcjIwNTc1OSBiYWNrIGluIHdpdGggYSBmaXguCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9tYXAtY29uc3RhbnQta2V5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL21hcC1jb25zdGFudC1rZXkuanMJKHJldmlzaW9uIDApCisrKyBKU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9tYXAtY29uc3RhbnQta2V5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDkgQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKQorfQorbm9JbmxpbmUoYXNzZXJ0KTsKK2Z1bmN0aW9u
IHRlc3QobWFwLCBrZXksIHZhbHVlKSB7CisgICAgbGV0IGxvYWRWYWx1ZSA9IGV2YWwoYCR7TWF0
aC5yYW5kb20oKX07IGxldCBrID0ga2V5OyAoZnVuY3Rpb24gZ2V0VmFsdWUoKSB7IHJldHVybiBt
YXAuZ2V0KGspOyB9KTtgKTsKKyAgICBub0lubGluZShsb2FkVmFsdWUpOworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChsb2FkVmFsdWUoKSA9
PT0gdmFsdWUpOworICAgIH0KK30KKworbGV0IHJlYWxseUxvbmdTdHJpbmcgPSAiIjsKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgNjAwMDA7IGkrKykgeworICAgIHJlYWxseUxvbmdTdHJpbmcgKz0gImki
OworfQorcmVhbGx5TG9uZ1N0cmluZy50b1N0cmluZygpOworCitsZXQga2V5cyA9IFsKKyAgICAi
Zm9vIiwKKyAgICAiZmRhc2hmZHNhaGZkYXNoZmRzaCIsCisgICAgInJvcGUiICsgInN0cmluZyIs
CisgICAgcmVhbGx5TG9uZ1N0cmluZywKKyAgICAyNTkyNDMsCisgICAgMTIzODIzMS4yMTM4MzIx
LAorICAgIC05MjEzOC4zMjgsCisgICAge2ZvbzogMjV9LAorICAgIFN5bWJvbCgiSGVsbG8gd29y
bGQiKSwKKyAgICB0cnVlLAorICAgIGZhbHNlLAorICAgIHVuZGVmaW5lZCwKKyAgICBudWxsLAor
ICAgIE5hTiwKKyAgICAtMCwKKyAgICBmdW5jdGlvbiBmb28oKSB7fQorXTsKKworbGV0IHN0YXJ0
ID0gRGF0ZS5ub3coKTsKK2xldCBtYXAgPSBuZXcgTWFwOworbGV0IGkgPSAwOworZm9yIChsZXQg
a2V5IG9mIGtleXMpIHsKKyAgICBsZXQgdmFsdWUgPSB7aTogaSsrfTsKKyAgICBtYXAuc2V0KGtl
eSwgdmFsdWUpOworICAgIHRlc3QobWFwLCBrZXksIHZhbHVlKTsKK30KK2NvbnN0IHZlcmJvc2Ug
PSBmYWxzZTsKK2lmICh2ZXJib3NlKQorICAgIHByaW50KERhdGUubm93KCkgLSBzdGFydCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTc5MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAor
MjAxNi0wOS0xMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBN
YXBIYXNoIHNob3VsZCBkbyBjb25zdGFudCBmb2xkaW5nIHdoZW4gaXQgaGFzIGEgY29uc3RhbnQg
YXJndW1lbnQgYW5kIGl0cyBsZWdhbCB0byBoYXNoIHRoYXQgdmFsdWUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTYzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5vdyBjb25zdGFudCBmb2xkIHRo
ZSBNYXBIYXNoIG5vZGUuIFdlJ3JlIGNhcmVmdWwgdG8gbm90IHJlc29sdmUKKyAgICAgICAgcm9w
ZXMgZnJvbSB0aGUgY29tcGlsZXIgdGhyZWFkLCBhbmQgdG8gb25seSBoYXNoIHN0cmluZ3MgaWYg
dGhleSdyZQorICAgICAgICBub3QgdG9vIGxhcmdlLiBUaGUgbWljcm9iZW5jaG1hcmsgSSBhZGRl
ZCBydW5zIGFib3V0IDEyJSBmYXN0ZXIgd2l0aAorICAgICAgICB0aGlzIHBhdGNoLgorCisgICAg
ICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKToKKyAgICAgICAgKiBydW50aW1lL0hhc2hNYXBJbXBsLmg6CisgICAgICAgIChKU0M6Ondh
bmdzSW50NjRIYXNoKToKKyAgICAgICAgKEpTQzo6anNNYXBIYXNoKToKKyAgICAgICAgKEpTQzo6
Y29uY3VycmVudEpTTWFwSGFzaCk6CisKIDIwMTYtMDktMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBwYXJzZUhUTUxJbnRlZ2VyKCkgc2hvdWxkIHRha2UgYSBT
dHJpbmdWaWV3IGluIHBhcmFtZXRlcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24g
MjA1NzkyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
REZHQWJzdHJhY3RJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKICNp
bmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIYXNoTWFwSW1wbC5oIgogI2luY2x1
ZGUgIkpJVE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSAi
T3BlcmF0aW9ucy5oIgpAQCAtOTc3LDkgKzk3OCwxOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgTWFw
SGFzaDoKKyAgICBjYXNlIE1hcEhhc2g6IHsKKyAgICAgICAgaWYgKEpTVmFsdWUga2V5ID0gZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKSkgeworICAgICAgICAgICAgaWYgKE9wdGlvbmFs
PHVpbnQzMl90PiBoYXNoID0gY29uY3VycmVudEpTTWFwSGFzaChrZXkpKSB7CisgICAgICAgICAg
ICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0aGlzIEpTVmFsdWUgdG8gZGV2b2x2ZSBpbnRvIGEgZG91
YmxlIHNvCisgICAgICAgICAgICAgICAgLy8gd2UgY2FzdCBpdCB0byBhbiBpbnQzMl90LiBXaGVu
IHdlIGFjdHVhbGx5IHVzZSB0aGlzCisgICAgICAgICAgICAgICAgLy8gdmFsdWUsIHdlIHdpbGwg
dXNlIGl0IGFzIGlmIGl0IHdlcmUgdW5zaWduZWQuCisgICAgICAgICAgICAgICAgc2V0Q29uc3Rh
bnQobm9kZSwgSlNWYWx1ZShzdGF0aWNfY2FzdDxpbnQzMl90PigqaGFzaCkpKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOworICAgIH0KIAog
ICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtl
SGVhcFRvcCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcElt
cGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFw
SW1wbC5oCShyZXZpc2lvbiAyMDU3OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9IYXNoTWFwSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNiArMTk0LDE5IEBAIEFMV0FZ
U19JTkxJTkUgSlNWYWx1ZSBub3JtYWxpemVNYXBLZXkoSlMKICAgICByZXR1cm4ga2V5OwogfQog
CitzdGF0aWMgQUxXQVlTX0lOTElORSB1aW50MzJfdCB3YW5nc0ludDY0SGFzaCh1aW50NjRfdCBr
ZXkpCit7CisgICAga2V5ICs9IH4oa2V5IDw8IDMyKTsKKyAgICBrZXkgXj0gKGtleSA+PiAyMik7
CisgICAga2V5ICs9IH4oa2V5IDw8IDEzKTsKKyAgICBrZXkgXj0gKGtleSA+PiA4KTsKKyAgICBr
ZXkgKz0gKGtleSA8PCAzKTsKKyAgICBrZXkgXj0gKGtleSA+PiAxNSk7CisgICAga2V5ICs9IH4o
a2V5IDw8IDI3KTsKKyAgICBrZXkgXj0gKGtleSA+PiAzMSk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihrZXkpOworfQorCiBBTFdBWVNfSU5MSU5FIHVpbnQzMl90IGpzTWFwSGFz
aChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKG5vcm1hbGl6ZU1hcEtleSh2YWx1ZSkgPT0gdmFsdWUsICJXZSBleHBlY3Qg
bm9ybWFsaXplZCB2YWx1ZXMgZmxvd2luZyBpbnRvIHRoaXMgZnVuY3Rpb24uIik7CkBAIC0yMDgs
MjEgKzIyMSwyNyBAQCBBTFdBWVNfSU5MSU5FIHVpbnQzMl90IGpzTWFwSGFzaChFeGVjU3RhCiAg
ICAgICAgIHJldHVybiB3dGZTdHJpbmcuaW1wbCgpLT5oYXNoKCk7CiAgICAgfQogCi0gICAgYXV0
byB3YW5nc0ludDY0SGFzaCA9IFtdICh1aW50NjRfdCBrZXkpIC0+IHVpbnQzMl90IHsKLSAgICAg
ICAga2V5ICs9IH4oa2V5IDw8IDMyKTsKLSAgICAgICAga2V5IF49IChrZXkgPj4gMjIpOwotICAg
ICAgICBrZXkgKz0gfihrZXkgPDwgMTMpOwotICAgICAgICBrZXkgXj0gKGtleSA+PiA4KTsKLSAg
ICAgICAga2V5ICs9IChrZXkgPDwgMyk7Ci0gICAgICAgIGtleSBePSAoa2V5ID4+IDE1KTsKLSAg
ICAgICAga2V5ICs9IH4oa2V5IDw8IDI3KTsKLSAgICAgICAga2V5IF49IChrZXkgPj4gMzEpOwot
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtleSk7Ci0gICAgfTsKICAgICB1
aW50NjRfdCByYXdWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CiAgICAgcmV0dXJuIHdh
bmdzSW50NjRIYXNoKHJhd1ZhbHVlKTsKIH0KIAorQUxXQVlTX0lOTElORSBPcHRpb25hbDx1aW50
MzJfdD4gY29uY3VycmVudEpTTWFwSGFzaChKU1ZhbHVlIGtleSkKK3sKKyAgICBrZXkgPSBub3Jt
YWxpemVNYXBLZXkoa2V5KTsKKyAgICBpZiAoa2V5LmlzU3RyaW5nKCkpIHsKKyAgICAgICAgSlNT
dHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKGtleSk7CisgICAgICAgIGlmIChzdHJpbmctPmxlbmd0
aCgpID4gMTAgKiAxMDI0KQorICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIGNv
bnN0IFN0cmluZ0ltcGwqIGltcGwgPSBzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpOworICAgICAg
ICBpZiAoIWltcGwpCisgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IGltcGwtPmNvbmN1cnJlbnRIYXNoKCk7CisgICAgfQorCisgICAgdWludDY0X3QgcmF3VmFsdWUg
PSBKU1ZhbHVlOjplbmNvZGUoa2V5KTsKKyAgICByZXR1cm4gd2FuZ3NJbnQ2NEhhc2gocmF3VmFs
dWUpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaE1hcEJ1Y2tldFR5cGU+CiBjbGFzcyBI
YXNoTWFwSW1wbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Cklu
ZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjA1NzkyKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxNi0wOS0xMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRp
QGFwcGxlLmNvbT4KKworICAgICAgICBNYXBIYXNoIHNob3VsZCBkbyBjb25zdGFudCBmb2xkaW5n
IHdoZW4gaXQgaGFzIGEgY29uc3RhbnQgYXJndW1lbnQgYW5kIGl0cyBsZWdhbCB0byBoYXNoIHRo
YXQgdmFsdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MTYzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyBhIGNvbmN1cnJlbnRIYXNoIG1ldGhvZCB0byBTdHJpbmdJbXBsLiBJ
dCdzCisgICAgICAgIHByb2JhYmx5IHNhZmUgdG8gZ2V0IHRoZSBhY3R1YWwgaGFzaCB3aGlsZSBi
ZWluZyByYWN5LCBob3dldmVyLAorICAgICAgICBpdCdzIHNpbXBsZXIgYW5kIG1vcmUgZnV0dXJl
IHByb29mIHRvIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0CisgICAgICAgIHRoYXQgYW5kIHRvIGp1
c3QgY29tcHV0ZSBpdCBvbiBkZW1hbmQuIFVzZXJzIG9mIHRoaXMgQVBJIHNob3VsZAorICAgICAg
ICBiZSBhd2FyZSB0aGF0IGl0J3MgZG9pbmcgbm9uLXRyaXZpYWwgd29yay4gQ3VycmVudGx5LCB0
aGUgb25seQorICAgICAgICB1c2VyIGlzIEpTQydzIEpJVCBjb21waWxlcnMsIGFuZCB0aGV5IG9u
bHkgYXNrIGZvciBoYXNoZXMgZm9yIHNtYWxsLWlzaAorICAgICAgICBzdHJpbmdzLgorCisgICAg
ICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1N0
YXRpY3MuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjb25jdXJyZW50SGFzaCk6CisK
IDIwMTYtMDktMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBw
YXJzZUhUTUxJbnRlZ2VyKCkgc2hvdWxkIHRha2UgYSBTdHJpbmdWaWV3IGluIHBhcmFtZXRlcgpJ
bmRleDogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDIwNTc5MikKKysrIFNvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUz
LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaGFzaFNsb3dDYXNlKCk7CiAgICAgfQogCisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGNvbmN1cnJlbnRIYXNoKCkgY29uc3Q7CisK
ICAgICB1bnNpZ25lZCBzeW1ib2xBd2FyZUhhc2goKSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KGlzU3ltYm9sKCkpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAJKHJl
dmlzaW9uIDIwNTc5MikKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDE3IEBAIE5FVkVSX0lOTElORSB1bnNpZ25lZCBT
dHJpbmdJbXBsOjpoYXNoU2wKICAgICByZXR1cm4gZXhpc3RpbmdIYXNoKCk7CiB9CiAKK3Vuc2ln
bmVkIFN0cmluZ0ltcGw6OmNvbmN1cnJlbnRIYXNoKCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBo
YXNoOworICAgIGlmIChpczhCaXQoKSkKKyAgICAgICAgaGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29t
cHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9kYXRhOCwgbV9sZW5ndGgpOworICAgIGVsc2UKKyAg
ICAgICAgaGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9k
YXRhMTYsIG1fbGVuZ3RoKTsKKyAgICBBU1NFUlQoKChoYXNoIDw8IHNfZmxhZ0NvdW50KSA+PiBz
X2ZsYWdDb3VudCkgPT0gaGFzaCk7CisgICAgcmV0dXJuIGhhc2g7Cit9CisKIHZvaWQgQXRvbWlj
U3RyaW5nOjppbml0KCkKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsK
</data>
<flag name="review"
          id="311866"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288594</attachid>
            <date>2016-09-12 11:38:59 -0700</date>
            <delta_ts>2016-09-12 14:06:30 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>8712</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDU3OTQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDE2LTA5LTExICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIE1hcEhhc2ggc2hvdWxkIGRvIGNvbnN0YW50IGZvbGRpbmcgd2hlbiBp
dCBoYXMgYSBjb25zdGFudCBhcmd1bWVudCBhbmQgaXRzIGxlZ2FsIHRvIGhhc2ggdGhhdCB2YWx1
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNjM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgKiBtaWNyb2Jl
bmNobWFya3MvbWFwLWNvbnN0YW50LWtleS5qczogQWRkZWQuCisgICAgICAgIChhc3NlcnQpOgor
ICAgICAgICAodGVzdCk6CisgICAgICAgIChmb28pOgorCiAyMDE2LTA5LTA5ICBNaWNoYWVsIFNh
Ym9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
cjIwNTc1OSBiYWNrIGluIHdpdGggYSBmaXguCkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9tYXAtY29uc3RhbnQta2V5LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvbWljcm9iZW5jaG1h
cmtzL21hcC1jb25zdGFudC1rZXkuanMJKHJldmlzaW9uIDApCisrKyBKU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9tYXAtY29uc3RhbnQta2V5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkg
QEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkJhZCBhc3NlcnRpb24iKQorfQorbm9JbmxpbmUoYXNzZXJ0KTsKK2Z1bmN0aW9uIHRl
c3QobWFwLCBrZXksIHZhbHVlKSB7CisgICAgbGV0IGxvYWRWYWx1ZSA9IGV2YWwoYCR7TWF0aC5y
YW5kb20oKX07IGxldCBrID0ga2V5OyAoZnVuY3Rpb24gZ2V0VmFsdWUoKSB7IHJldHVybiBtYXAu
Z2V0KGspOyB9KTtgKTsKKyAgICBub0lubGluZShsb2FkVmFsdWUpOworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChsb2FkVmFsdWUoKSA9PT0g
dmFsdWUpOworICAgIH0KK30KKworbGV0IHJlYWxseUxvbmdTdHJpbmcgPSAiIjsKK2ZvciAobGV0
IGkgPSAwOyBpIDwgNjAwMDA7IGkrKykgeworICAgIHJlYWxseUxvbmdTdHJpbmcgKz0gImkiOwor
fQorcmVhbGx5TG9uZ1N0cmluZy50b1N0cmluZygpOworCitsZXQga2V5cyA9IFsKKyAgICAiZm9v
IiwKKyAgICAiZmRhc2hmZHNhaGZkYXNoZmRzaCIsCisgICAgInJvcGUiICsgInN0cmluZyIsCisg
ICAgcmVhbGx5TG9uZ1N0cmluZywKKyAgICAyNTkyNDMsCisgICAgMTIzODIzMS4yMTM4MzIxLAor
ICAgIC05MjEzOC4zMjgsCisgICAge2ZvbzogMjV9LAorICAgIFN5bWJvbCgiSGVsbG8gd29ybGQi
KSwKKyAgICB0cnVlLAorICAgIGZhbHNlLAorICAgIHVuZGVmaW5lZCwKKyAgICBudWxsLAorICAg
IE5hTiwKKyAgICAtMCwKKyAgICBmdW5jdGlvbiBmb28oKSB7fQorXTsKKworbGV0IHN0YXJ0ID0g
RGF0ZS5ub3coKTsKK2xldCBtYXAgPSBuZXcgTWFwOworbGV0IGkgPSAwOworZm9yIChsZXQga2V5
IG9mIGtleXMpIHsKKyAgICBsZXQgdmFsdWUgPSB7aTogaSsrfTsKKyAgICBtYXAuc2V0KGtleSwg
dmFsdWUpOworICAgIHRlc3QobWFwLCBrZXksIHZhbHVlKTsKK30KK2NvbnN0IHZlcmJvc2UgPSBm
YWxzZTsKK2lmICh2ZXJib3NlKQorICAgIHByaW50KERhdGUubm93KCkgLSBzdGFydCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTc5MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAx
Ni0wOS0xMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBNYXBI
YXNoIHNob3VsZCBkbyBjb25zdGFudCBmb2xkaW5nIHdoZW4gaXQgaGFzIGEgY29uc3RhbnQgYXJn
dW1lbnQgYW5kIGl0cyBsZWdhbCB0byBoYXNoIHRoYXQgdmFsdWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTYzOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgIFdlIG5vdyBjb25zdGFudCBmb2xkIHRoZSBNYXBI
YXNoIG5vZGUuIFdlJ3JlIGNhcmVmdWwgdG8gbm90IHJlc29sdmUKKyAgICAgICAgcm9wZXMgZnJv
bSB0aGUgY29tcGlsZXIgdGhyZWFkLCBhbmQgdG8gb25seSBoYXNoIHN0cmluZ3MgaWYgdGhleSdy
ZQorICAgICAgICBub3QgdG9vIGxhcmdlLiBUaGUgbWljcm9iZW5jaG1hcmsgSSBhZGRlZCBydW5z
IGFib3V0IDEyJSBmYXN0ZXIgd2l0aAorICAgICAgICB0aGlzIHBhdGNoLgorCisgICAgICAgICog
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToK
KyAgICAgICAgKiBydW50aW1lL0hhc2hNYXBJbXBsLmg6CisgICAgICAgIChKU0M6OndhbmdzSW50
NjRIYXNoKToKKyAgICAgICAgKEpTQzo6anNNYXBIYXNoKToKKyAgICAgICAgKEpTQzo6Y29uY3Vy
cmVudEpTTWFwSGFzaCk6CisKIDIwMTYtMDktMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBwYXJzZUhUTUxJbnRlZ2VyKCkgc2hvdWxkIHRha2UgYSBTdHJpbmdW
aWV3IGluIHBhcmFtZXRlcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjA1Nzky
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiREZHQWJz
dHJhY3RJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKICNpbmNsdWRl
ICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIYXNoTWFwSW1wbC5oIgogI2luY2x1ZGUgIkpJ
VE9wZXJhdGlvbnMuaCIKICNpbmNsdWRlICJNYXRoQ29tbW9uLmgiCiAjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgpAQCAtOTc3LDkgKzk3OCwyMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgTWFwSGFzaDoK
KyAgICBjYXNlIE1hcEhhc2g6IHsKKyAgICAgICAgaWYgKEpTVmFsdWUga2V5ID0gZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkudmFsdWUoKSkgeworICAgICAgICAgICAgaWYgKE9wdGlvbmFsPHVpbnQz
Ml90PiBoYXNoID0gY29uY3VycmVudEpTTWFwSGFzaChrZXkpKSB7CisgICAgICAgICAgICAgICAg
Ly8gQWx0aG91Z2ggQysrIGNvZGUgdXNlcyB1aW50MzJfdCBmb3IgdGhlIGhhc2gsIHRoZSBjbG9z
ZXN0IHR5cGUgaW4gREZHIElSIGlzIEludDMyCisgICAgICAgICAgICAgICAgLy8gYW5kIHRoYXQn
cyB3aGF0IE1hcEhhc2ggcmV0dXJucy4gU28sIHdlIGhhdmUgdG8gY2FzdCB0byBpbnQzMl90IHRv
IGF2b2lkIGxhcmdlCisgICAgICAgICAgICAgICAgLy8gdW5zaWduZWQgdmFsdWVzIGJlY29taW5n
IGRvdWJsZXMuIFRoaXMgY2FzdGluZyBiZXR3ZWVuIHNpZ25lZCBhbmQgdW5zaWduZWQKKyAgICAg
ICAgICAgICAgICAvLyBoYXBwZW5zIGluIHRoZSBhc3NlbWJseSBjb2RlIHdlIGVtaXQgd2hlbiB3
ZSBkb24ndCBjb25zdGFudCBmb2xkIHRoaXMgbm9kZS4KKyAgICAgICAgICAgICAgICBzZXRDb25z
dGFudChub2RlLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PigqaGFzaCkpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldFR5cGUoU3BlY0ludDMyT25seSk7CiAgICAgICAgIGJyZWFrOworICAgIH0K
IAogICAgIGNhc2UgTG9hZEZyb21KU01hcEJ1Y2tldDoKICAgICAgICAgZm9yTm9kZShub2RlKS5t
YWtlSGVhcFRvcCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1h
cEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNo
TWFwSW1wbC5oCShyZXZpc2lvbiAyMDU3OTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9IYXNoTWFwSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNiArMTk0LDE5IEBAIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBub3JtYWxpemVNYXBLZXkoSlMKICAgICByZXR1cm4ga2V5Owog
fQogCitzdGF0aWMgQUxXQVlTX0lOTElORSB1aW50MzJfdCB3YW5nc0ludDY0SGFzaCh1aW50NjRf
dCBrZXkpCit7CisgICAga2V5ICs9IH4oa2V5IDw8IDMyKTsKKyAgICBrZXkgXj0gKGtleSA+PiAy
Mik7CisgICAga2V5ICs9IH4oa2V5IDw8IDEzKTsKKyAgICBrZXkgXj0gKGtleSA+PiA4KTsKKyAg
ICBrZXkgKz0gKGtleSA8PCAzKTsKKyAgICBrZXkgXj0gKGtleSA+PiAxNSk7CisgICAga2V5ICs9
IH4oa2V5IDw8IDI3KTsKKyAgICBrZXkgXj0gKGtleSA+PiAzMSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihrZXkpOworfQorCiBBTFdBWVNfSU5MSU5FIHVpbnQzMl90IGpzTWFw
SGFzaChFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKG5vcm1hbGl6ZU1hcEtleSh2YWx1ZSkgPT0gdmFsdWUsICJXZSBleHBl
Y3Qgbm9ybWFsaXplZCB2YWx1ZXMgZmxvd2luZyBpbnRvIHRoaXMgZnVuY3Rpb24uIik7CkBAIC0y
MDgsMjEgKzIyMSwyNyBAQCBBTFdBWVNfSU5MSU5FIHVpbnQzMl90IGpzTWFwSGFzaChFeGVjU3Rh
CiAgICAgICAgIHJldHVybiB3dGZTdHJpbmcuaW1wbCgpLT5oYXNoKCk7CiAgICAgfQogCi0gICAg
YXV0byB3YW5nc0ludDY0SGFzaCA9IFtdICh1aW50NjRfdCBrZXkpIC0+IHVpbnQzMl90IHsKLSAg
ICAgICAga2V5ICs9IH4oa2V5IDw8IDMyKTsKLSAgICAgICAga2V5IF49IChrZXkgPj4gMjIpOwot
ICAgICAgICBrZXkgKz0gfihrZXkgPDwgMTMpOwotICAgICAgICBrZXkgXj0gKGtleSA+PiA4KTsK
LSAgICAgICAga2V5ICs9IChrZXkgPDwgMyk7Ci0gICAgICAgIGtleSBePSAoa2V5ID4+IDE1KTsK
LSAgICAgICAga2V5ICs9IH4oa2V5IDw8IDI3KTsKLSAgICAgICAga2V5IF49IChrZXkgPj4gMzEp
OwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtleSk7Ci0gICAgfTsKICAg
ICB1aW50NjRfdCByYXdWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CiAgICAgcmV0dXJu
IHdhbmdzSW50NjRIYXNoKHJhd1ZhbHVlKTsKIH0KIAorQUxXQVlTX0lOTElORSBPcHRpb25hbDx1
aW50MzJfdD4gY29uY3VycmVudEpTTWFwSGFzaChKU1ZhbHVlIGtleSkKK3sKKyAgICBrZXkgPSBu
b3JtYWxpemVNYXBLZXkoa2V5KTsKKyAgICBpZiAoa2V5LmlzU3RyaW5nKCkpIHsKKyAgICAgICAg
SlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKGtleSk7CisgICAgICAgIGlmIChzdHJpbmctPmxl
bmd0aCgpID4gMTAgKiAxMDI0KQorICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAg
IGNvbnN0IFN0cmluZ0ltcGwqIGltcGwgPSBzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpOworICAg
ICAgICBpZiAoIWltcGwpCisgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIGltcGwtPmNvbmN1cnJlbnRIYXNoKCk7CisgICAgfQorCisgICAgdWludDY0X3QgcmF3VmFs
dWUgPSBKU1ZhbHVlOjplbmNvZGUoa2V5KTsKKyAgICByZXR1cm4gd2FuZ3NJbnQ2NEhhc2gocmF3
VmFsdWUpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaE1hcEJ1Y2tldFR5cGU+CiBjbGFz
cyBIYXNoTWFwSW1wbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7
CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0No
YW5nZUxvZwkocmV2aXNpb24gMjA1NzkyKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxNi0wOS0xMSAgU2FhbSBCYXJhdGkgIDxzYmFy
YXRpQGFwcGxlLmNvbT4KKworICAgICAgICBNYXBIYXNoIHNob3VsZCBkbyBjb25zdGFudCBmb2xk
aW5nIHdoZW4gaXQgaGFzIGEgY29uc3RhbnQgYXJndW1lbnQgYW5kIGl0cyBsZWdhbCB0byBoYXNo
IHRoYXQgdmFsdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MTYzOQorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyBhIGNvbmN1cnJlbnRIYXNoIG1ldGhvZCB0byBTdHJpbmdJbXBsLiBJ
dCdzCisgICAgICAgIHByb2JhYmx5IHNhZmUgdG8gZ2V0IHRoZSBhY3R1YWwgaGFzaCB3aGlsZSBi
ZWluZyByYWN5LCBob3dldmVyLAorICAgICAgICBpdCdzIHNpbXBsZXIgYW5kIG1vcmUgZnV0dXJl
IHByb29mIHRvIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0CisgICAgICAgIHRoYXQgYW5kIHRvIGp1
c3QgY29tcHV0ZSBpdCBvbiBkZW1hbmQuIFVzZXJzIG9mIHRoaXMgQVBJIHNob3VsZAorICAgICAg
ICBiZSBhd2FyZSB0aGF0IGl0J3MgZG9pbmcgbm9uLXRyaXZpYWwgd29yay4gQ3VycmVudGx5LCB0
aGUgb25seQorICAgICAgICB1c2VyIGlzIEpTQydzIEpJVCBjb21waWxlcnMsIGFuZCB0aGV5IG9u
bHkgYXNrIGZvciBoYXNoZXMgZm9yIHNtYWxsLWlzaAorICAgICAgICBzdHJpbmdzLgorCisgICAg
ICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1N0
YXRpY3MuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjb25jdXJyZW50SGFzaCk6CisK
IDIwMTYtMDktMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBw
YXJzZUhUTUxJbnRlZ2VyKCkgc2hvdWxkIHRha2UgYSBTdHJpbmdWaWV3IGluIHBhcmFtZXRlcgpJ
bmRleDogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDIwNTc5MikKKysrIFNvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUz
LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaGFzaFNsb3dDYXNlKCk7CiAgICAgfQogCisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHVuc2lnbmVkIGNvbmN1cnJlbnRIYXNoKCkgY29uc3Q7CisK
ICAgICB1bnNpZ25lZCBzeW1ib2xBd2FyZUhhc2goKSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KGlzU3ltYm9sKCkpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAJKHJl
dmlzaW9uIDIwNTc5MikKKysrIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDE3IEBAIE5FVkVSX0lOTElORSB1bnNpZ25lZCBT
dHJpbmdJbXBsOjpoYXNoU2wKICAgICByZXR1cm4gZXhpc3RpbmdIYXNoKCk7CiB9CiAKK3Vuc2ln
bmVkIFN0cmluZ0ltcGw6OmNvbmN1cnJlbnRIYXNoKCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBo
YXNoOworICAgIGlmIChpczhCaXQoKSkKKyAgICAgICAgaGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29t
cHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9kYXRhOCwgbV9sZW5ndGgpOworICAgIGVsc2UKKyAg
ICAgICAgaGFzaCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobV9k
YXRhMTYsIG1fbGVuZ3RoKTsKKyAgICBBU1NFUlQoKChoYXNoIDw8IHNfZmxhZ0NvdW50KSA+PiBz
X2ZsYWdDb3VudCkgPT0gaGFzaCk7CisgICAgcmV0dXJuIGhhc2g7Cit9CisKIHZvaWQgQXRvbWlj
U3RyaW5nOjppbml0KCkKIHsKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>