<?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>161638</bug_id>
          
          <creation_ts>2016-09-06 12:13:59 -0700</creation_ts>
          <short_desc>GetMapBucket node should speculate on the type of its &apos;key&apos; child</short_desc>
          <delta_ts>2016-10-03 17:38:56 -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>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>1226783</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-06 12:13:59 -0700</bug_when>
    <thetext>We may already have proved the types of the incoming key into the GetMapBucket node, so we should take advantage of this.
Currently, we emit runtime checks for types, however, we could probably emit a less branchy loop if we know what the type of the
incoming key is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235536</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-30 18:01:16 -0700</bug_when>
    <thetext>Looks like this is worth 2-3% on ES6SampleBench/Basic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235977</commentid>
    <comment_count>2</comment_count>
      <attachid>290532</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-03 16:10:03 -0700</bug_when>
    <thetext>Created attachment 290532
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235979</commentid>
    <comment_count>3</comment_count>
      <attachid>290532</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-03 16:17:30 -0700</bug_when>
    <thetext>Comment on attachment 290532
patch

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6606
&gt; +            m_out.insertNewBlocksBefore(notBitEqual);

It&apos;s scary to me that you&apos;re not capturing the return value here and resetting it...

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6648
&gt; +            m_out.appendTo(bucketKeyIsInt32, loopAround);

... down here.  Any reason why you don&apos;t do that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235984</commentid>
    <comment_count>4</comment_count>
      <attachid>290532</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-03 16:26:40 -0700</bug_when>
    <thetext>Comment on attachment 290532
patch

I think that aside from that minor thing, this code is right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235994</commentid>
    <comment_count>5</comment_count>
      <attachid>290537</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-03 17:03:09 -0700</bug_when>
    <thetext>Created attachment 290537
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235995</commentid>
    <comment_count>6</comment_count>
      <attachid>290537</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-10-03 17:08:29 -0700</bug_when>
    <thetext>Comment on attachment 290537
patch for landing

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6612
&gt; +            m_out.appendTo(notBitEqual, bucketKeyIsCell);

This order: notBitEqual -&gt; bucketKeyIsCell

is inconsistent with the order of allocation, above:

notBitEqual -&gt; bucketKeyNotCell -&gt; bucketKeyIsCell

I think that might confuse Output, at worst leading to a wonky block order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236001</commentid>
    <comment_count>7</comment_count>
      <attachid>290537</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-03 17:25:24 -0700</bug_when>
    <thetext>Comment on attachment 290537
patch for landing

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

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6612
&gt;&gt; +            m_out.appendTo(notBitEqual, bucketKeyIsCell);
&gt; 
&gt; This order: notBitEqual -&gt; bucketKeyIsCell
&gt; 
&gt; is inconsistent with the order of allocation, above:
&gt; 
&gt; notBitEqual -&gt; bucketKeyNotCell -&gt; bucketKeyIsCell
&gt; 
&gt; I think that might confuse Output, at worst leading to a wonky block order.

Ok. I&apos;ll re-order the allocations. Good catch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236007</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-03 17:38:56 -0700</bug_when>
    <thetext>landed in:
https://trac.webkit.org/changeset/206763</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290532</attachid>
            <date>2016-10-03 16:10:03 -0700</date>
            <delta_ts>2016-10-03 17:03:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>17381</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2NzU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE2LTEwLTAzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEdldE1hcEJ1Y2tldCBub2RlIHNob3VsZCBzcGVjdWxhdGUgb24gdGhlIHR5cGUgb2YgaXRzICdr
ZXknIGNoaWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjE2MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGVsaW1pbmF0ZXMgdHlwZS1jaGVjayBicmFuY2hlcyB3aGVuIHdlJ3ZlIGFscmVhZHkK
KyAgICAgICAgcHJvdmVuIHRoZSB0eXBlIG9mIHRoZSBpbmNvbWluZyBrZXkuIEFsc28sIGl0IHJl
ZHVjZXMKKyAgICAgICAgdGhlIGJyYW5jaGVzIHdlIGVtaXQgd2hlbiB0eXBlIGNoZWNraW5nIHRo
ZSBidWNrZXQncyBrZXkuCisKKyAgICAgICAgVGhpcyBpcyBhIDItMyUgc3BlZWR1cCBvbiBFUzZT
YW1wbGVCZW5jaC9CYXNpYy4KKworICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRNYXBCdWNrZXQpOgorCiAy
MDE2LTEwLTAzICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAgICAgICBB
dXRvLWdlbmVyYXRlIFdBU01PcHMuaCwgc2hhcmUgd2l0aCB0ZXN0aW5nIEpTT04gZmlsZQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lv
biAyMDY3NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTg3LDcgKzE1ODcsMjIgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBmaXhFZGdlPFNldE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKworICAgICAg
ICAgICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpCisgICAg
ICAgICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCkpCisg
ICAgICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSkK
KyAgICAgICAgICAgICAgICBmaXhFZGdlPE9iamVjdFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygp
KQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihub2RlLT5jaGlsZDIoKSk7Cisg
ICAgICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgp
KQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4obm9kZS0+
Y2hpbGQyKCkpOworCiAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDMo
KSk7CiAgICAgICAgICAgICBicmVhazsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMDY3NDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NzE3LDcgKzQ3MTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgfQogICAgIGNhc2UgR2V0TWFwQnVja2V0OiB7CiAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIG1hcCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpT
VmFsdWVPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEpTVmFsdWVP
cGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9u
KTsKICAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIGhhc2godGhpcywgbm9kZS0+Y2hpbGQz
KCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgbWFzayh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9y
YXJ5IGluZGV4KHRoaXMpOwpAQCAtNDc0MSw2ICs0NzQxLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCisgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VL
aW5kKCkgIT0gVW50eXBlZFVzZSkKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5j
aGlsZDIoKSk7CisKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhtYXBHUFIsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBNYXBPYmplY3RVc2UgPyBKU01h
cDo6b2Zmc2V0T2ZIYXNoTWFwSW1wbCgpIDogSlNTZXQ6Om9mZnNldE9mSGFzaE1hcEltcGwoKSks
IGJ1ZmZlckdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhidWZmZXJHUFIsIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFL
ZXk+Pjo6b2Zmc2V0T2ZDYXBhY2l0eSgpKSwgbWFza0dQUik7CiAgICAgICAgIG1faml0LmxvYWRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYnVmZmVyR1BSLCBIYXNoTWFwSW1wbDxIYXNoTWFw
QnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mQnVmZmVyKCkpLCBidWZmZXJH
UFIpOwpAQCAtNDc2Myw0MCArNDc2Niw3OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhidWNrZXRHUFIsIEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+OjpvZmZzZXRP
ZktleSgpKSwgYnVja2V0R1BSKTsKIAogICAgICAgICAvLyBQZXJmb3JtIE9iamVjdC5pcygpCi0g
ICAgICAgIGRvbmUuYXBwZW5kKG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwg
YnVja2V0R1BSLCBrZXlHUFIpKTsgLy8gVGhleSdyZSBkZWZpbml0ZWx5IHRoZSBzYW1lIHZhbHVl
LCB3ZSBmb3VuZCB0aGUgYnVja2V0IHdlIHdlcmUgbG9va2luZyBmb3IhCi0gICAgICAgIGF1dG8g
b25lSXNudENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYnVja2V0R1BS
KSk7Ci0gICAgICAgIC8vIGZpcnN0IGlzIGEgY2VsbCBoZXJlLgotICAgICAgICBsb29wQXJvdW5k
LmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3Moa2V5R1BSKSkpOwotICAg
ICAgICAvLyBCb3RoIGFyZSBjZWxscyBoZXJlLgotICAgICAgICBsb29wQXJvdW5kLmFwcGVuZCht
X2ppdC5icmFuY2g4KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpBZGRyZXNzKGJ1Y2tldEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihTdHJpbmdUeXBlKSkpOwotICAgICAgICAvLyBUaGUgZmlyc3QgaXMgYSBzdHJp
bmcgaGVyZS4KLSAgICAgICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoOChKSVRD
b21waWxlcjo6RXF1YWwsCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhrZXlHUFIs
IEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkp
KTsKLSAgICAgICAgLy8gVGhlIGZpcnN0IGlzIGEgc3RyaW5nLCBidXQgdGhlIHNlY29uZCBpcyBu
b3QsIHdlIGNvbnRpbnVlIHRvIGxvb3AgYXJvdW5kLgotICAgICAgICBsb29wQXJvdW5kLmFwcGVu
ZChtX2ppdC5qdW1wKCkpOwotCi0gICAgICAgIG9uZUlzbnRDZWxsLmxpbmsoJm1faml0KTsKLSAg
ICAgICAgLy8gV2UndmUgYWxyZWFkeSBkb25lIGEgNjQtYml0IGNvbXBhcmUgYXQgdGhpcyBwb2lu
dCwgc28gaWYgb25lIGlzIG5vdCBhIG51bWJlciwgdGhleSdyZSBkZWZpbml0ZWx5IG5vdCBlcXVh
bC4KLSAgICAgICAgbG9vcEFyb3VuZC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3ROdW1iZXIoYnVj
a2V0R1BSKSk7Ci0gICAgICAgIGxvb3BBcm91bmQuYXBwZW5kKG1faml0LmJyYW5jaElmTm90TnVt
YmVyKGtleUdQUikpOwotICAgICAgICAvLyBCb3RoIGFyZSBkZWZpbml0ZWx5IG51bWJlcnMuIElm
IHdlIHNlZSBhIGRvdWJsZSwgd2UgZ28gdG8gdGhlIHNsb3cgcGF0aC4KLSAgICAgICAgc2xvd1Bh
dGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RJbnQzMihidWNrZXRHUFIpKTsKLSAgICAg
ICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RJbnQzMihrZXlHUFIpKTsK
LSAgICAgICAgCi0gICAgICAgIGxvb3BBcm91bmQubGluaygmbV9qaXQpOworICAgICAgICBzd2l0
Y2ggKG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6
CisgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAgIGNhc2UgU3ltYm9sVXNlOgorICAgICAg
ICBjYXNlIE9iamVjdFVzZTogeworICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJhbmNo
NjQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBidWNrZXRHUFIsIGtleUdQUikpOyAvLyBUaGV5J3Jl
IGRlZmluaXRlbHkgdGhlIHNhbWUgdmFsdWUsIHdlIGZvdW5kIHRoZSBidWNrZXQgd2Ugd2VyZSBs
b29raW5nIGZvciEKKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgbG9vcCBhcm91bmQuCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAg
ICAgICAgIGRvbmUuYXBwZW5kKG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwg
YnVja2V0R1BSLCBrZXlHUFIpKTsKKyAgICAgICAgICAgIGxvb3BBcm91bmQuYXBwZW5kKG1faml0
LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhidWNrZXRHUFIpKSk7CisgICAgICAgICAgICBs
b29wQXJvdW5kLmFwcGVuZChtX2ppdC5icmFuY2g4KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKKyAg
ICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhidWNrZXRHUFIsIEpTQ2VsbDo6dHlw
ZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpKTsKKyAgICAgICAg
ICAgIGxvb3BBcm91bmQuYXBwZW5kKG1faml0LmJyYW5jaDgoSklUQ29tcGlsZXI6Ok5vdEVxdWFs
LAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGtleUdQUiwgSlNDZWxsOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSkpOworICAgICAg
ICAgICAgLy8gVGhleSdyZSBib3RoIHN0cmluZ3MuCisgICAgICAgICAgICBzbG93UGF0aENhc2Vz
LmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBTdHJpbmdVc2U6IHsKKyAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0LmJy
YW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgYnVja2V0R1BSLCBrZXlHUFIpKTsgLy8gVGhl
eSdyZSBkZWZpbml0ZWx5IHRoZSBzYW1lIHZhbHVlLCB3ZSBmb3VuZCB0aGUgYnVja2V0IHdlIHdl
cmUgbG9va2luZyBmb3IhCisgICAgICAgICAgICBsb29wQXJvdW5kLmFwcGVuZChtX2ppdC5icmFu
Y2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYnVja2V0R1BSKSkpOworICAgICAgICAgICAgbG9vcEFy
b3VuZC5hcHBlbmQobV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1YWwsCisgICAgICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYnVja2V0R1BSLCBKU0NlbGw6OnR5cGVJbmZv
VHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKSk7CisgICAgICAgICAgICBz
bG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7IAorICAgICAgICAgICAgZG9uZS5h
cHBlbmQobV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBidWNrZXRHUFIsIGtl
eUdQUikpOyAvLyBUaGV5J3JlIGRlZmluaXRlbHkgdGhlIHNhbWUgdmFsdWUsIHdlIGZvdW5kIHRo
ZSBidWNrZXQgd2Ugd2VyZSBsb29raW5nIGZvciEKKyAgICAgICAgICAgIGF1dG8gb25lSXNudENl
bGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYnVja2V0R1BSKSk7CisgICAg
ICAgICAgICAvLyBmaXJzdCBpcyBhIGNlbGwgaGVyZS4KKyAgICAgICAgICAgIGxvb3BBcm91bmQu
YXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhrZXlHUFIpKSk7CisgICAg
ICAgICAgICAvLyBCb3RoIGFyZSBjZWxscyBoZXJlLgorICAgICAgICAgICAgbG9vcEFyb3VuZC5h
cHBlbmQobV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1YWwsCisgICAgICAgICAgICAg
ICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYnVja2V0R1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9m
ZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKSk7CisgICAgICAgICAgICAvLyBUaGUg
Zmlyc3QgaXMgYSBzdHJpbmcgaGVyZS4KKyAgICAgICAgICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5k
KG1faml0LmJyYW5jaDgoSklUQ29tcGlsZXI6OkVxdWFsLAorICAgICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpBZGRyZXNzKGtleUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihTdHJpbmdUeXBlKSkpOworICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGlzIGEg
c3RyaW5nLCBidXQgdGhlIHNlY29uZCBpcyBub3QsIHdlIGNvbnRpbnVlIHRvIGxvb3AgYXJvdW5k
LgorICAgICAgICAgICAgbG9vcEFyb3VuZC5hcHBlbmQobV9qaXQuanVtcCgpKTsKKworICAgICAg
ICAgICAgb25lSXNudENlbGwubGluaygmbV9qaXQpOworICAgICAgICAgICAgLy8gV2UndmUgYWxy
ZWFkeSBkb25lIGEgNjQtYml0IGNvbXBhcmUgYXQgdGhpcyBwb2ludCwgc28gaWYgb25lIGlzIG5v
dCBhIG51bWJlciwgdGhleSdyZSBkZWZpbml0ZWx5IG5vdCBlcXVhbC4KKyAgICAgICAgICAgIGxv
b3BBcm91bmQuYXBwZW5kKG1faml0LmJyYW5jaElmTm90TnVtYmVyKGJ1Y2tldEdQUikpOworICAg
ICAgICAgICAgbG9vcEFyb3VuZC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3ROdW1iZXIoa2V5R1BS
KSk7CisgICAgICAgICAgICAvLyBCb3RoIGFyZSBkZWZpbml0ZWx5IG51bWJlcnMuIElmIHdlIHNl
ZSBhIGRvdWJsZSwgd2UgZ28gdG8gdGhlIHNsb3cgcGF0aC4KKyAgICAgICAgICAgIHNsb3dQYXRo
Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90SW50MzIoYnVja2V0R1BSKSk7CisgICAgICAg
ICAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEludDMyKGtleUdQUikp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAg
ICAgICAgCisgICAgICAgIGlmICghbG9vcEFyb3VuZC5lbXB0eSgpKQorICAgICAgICAgICAgbG9v
cEFyb3VuZC5saW5rKCZtX2ppdCk7CisKICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMy
KDEpLCBpbmRleEdQUik7CiAgICAgICAgIG1faml0Lmp1bXAoKS5saW5rVG8obG9vcCwgJm1faml0
KTsKIAotICAgICAgICBzbG93UGF0aENhc2VzLmxpbmsoJm1faml0KTsKLSAgICAgICAgc2lsZW50
U3BpbGxBbGxSZWdpc3RlcnMoaW5kZXhHUFIpOwotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IE1hcE9iamVjdFVzZSkKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uSlNNYXBGaW5kQnVja2V0LCByZXN1bHRHUFIsIG1hcEdQUiwga2V5R1BSLCBoYXNoR1BS
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25KU1Nl
dEZpbmRCdWNrZXQsIHJlc3VsdEdQUiwgbWFwR1BSLCBrZXlHUFIsIGhhc2hHUFIpOwotICAgICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKGluZGV4R1BSKTsKLSAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKLSAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAg
aWYgKCFzbG93UGF0aENhc2VzLmVtcHR5KCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FzZXMu
bGluaygmbV9qaXQpOworICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoaW5kZXhH
UFIpOworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBNYXBPYmpl
Y3RVc2UpCisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25KU01hcEZpbmRC
dWNrZXQsIHJlc3VsdEdQUiwgbWFwR1BSLCBrZXlHUFIsIGhhc2hHUFIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSlNTZXRGaW5kQnVj
a2V0LCByZXN1bHRHUFIsIG1hcEdQUiwga2V5R1BSLCBoYXNoR1BSKTsKKyAgICAgICAgICAgIHNp
bGVudEZpbGxBbGxSZWdpc3RlcnMoaW5kZXhHUFIpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKKyAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAg
ICAgIH0KIAogICAgICAgICBub3RQcmVzZW50SW5UYWJsZS5saW5rKCZtX2ppdCk7CiAgICAgICAg
IG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgcmVzdWx0R1BSKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9u
IDIwNjc0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjUwOSwxNCArNjUwOSw2IEBAIHByaXZhdGU6CiAgICAgICAg
IExCYXNpY0Jsb2NrIG5vdFByZXNlbnRJblRhYmxlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAg
ICAgTEJhc2ljQmxvY2sgbm90RW1wdHlWYWx1ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAg
IExCYXNpY0Jsb2NrIG5vdERlbGV0ZWRWYWx1ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAg
IExCYXNpY0Jsb2NrIG5vdEJpdEVxdWFsID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgTEJh
c2ljQmxvY2sgYnVja2V0S2V5Tm90Q2VsbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExC
YXNpY0Jsb2NrIGJ1Y2tldEtleUlzQ2VsbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExC
YXNpY0Jsb2NrIGJvdGhBcmVDZWxscyA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExCYXNp
Y0Jsb2NrIGJ1Y2tldEtleUlzU3RyaW5nID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgTEJh
c2ljQmxvY2sgYnVja2V0S2V5SXNOdW1iZXIgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICBM
QmFzaWNCbG9jayBib3RoQXJlTnVtYmVycyA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExC
YXNpY0Jsb2NrIGJ1Y2tldEtleUlzSW50MzIgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBM
QmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogCiAgICAgICAgIExC
YXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKGxvb3BTdGFy
dCk7CkBAIC02NTI5LDcgKzY1MjEsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgICAgICBMVmFsdWUga2V5
ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVlIGtleSA9IGxv
d0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAg
ICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpICE9IFVudHlwZWRVc2UpCisgICAg
ICAgICAgICBzcGVjdWxhdGUobV9ub2RlLT5jaGlsZDIoKSk7CisKICAgICAgICAgTFZhbHVlIGhh
c2ggPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMygpKTsKIAogICAgICAgICBMVmFsdWUgaGFzaE1h
cEltcGwgPSBtX291dC5sb2FkUHRyKG1hcCwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
TWFwT2JqZWN0VXNlID8gbV9oZWFwcy5KU01hcF9oYXNoTWFwSW1wbCA6IG1faGVhcHMuSlNTZXRf
aGFzaE1hcEltcGwpOwpAQCAtNjU1MSw0MyArNjU0NiwxMTMgQEAgcHJpdmF0ZToKICAgICAgICAg
bV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGhhc2hNYXBCdWNrZXQsIG1fb3V0LmNvbnN0SW50UHRy
KEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6ZGVsZXRl
ZFZhbHVlKCkpKSwKICAgICAgICAgICAgIHVuc3VyZShsb29wQXJvdW5kKSwgdW5zdXJlKG5vdERl
bGV0ZWRWYWx1ZSkpOwogCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdERlbGV0ZWRWYWx1ZSwg
bm90Qml0RXF1YWwpOworICAgICAgICBtX291dC5hcHBlbmRUbyhub3REZWxldGVkVmFsdWUpOwog
ICAgICAgICBMVmFsdWUgYnVja2V0S2V5ID0gbV9vdXQubG9hZDY0KGhhc2hNYXBCdWNrZXQsIG1f
aGVhcHMuSGFzaE1hcEJ1Y2tldF9rZXkpOworCiAgICAgICAgIC8vIFBlcmZvcm0gT2JqZWN0Lmlz
KCkKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGtleSwgYnVja2V0S2V5KSwKLSAg
ICAgICAgICAgIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobm90Qml0RXF1YWwpKTsKKyAg
ICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNl
IEJvb2xlYW5Vc2U6CisgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAgIGNhc2UgU3ltYm9s
VXNlOgorICAgICAgICBjYXNlIE9iamVjdFVzZTogeworICAgICAgICAgICAgbV9vdXQuaW5zZXJ0
TmV3QmxvY2tzQmVmb3JlKGxvb3BBcm91bmQpOwogCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKG5v
dEJpdEVxdWFsLCBidWNrZXRLZXlJc0NlbGwpOwotICAgICAgICBtX291dC5icmFuY2goaXNDZWxs
KGJ1Y2tldEtleSksCi0gICAgICAgICAgICB1bnN1cmUoYnVja2V0S2V5SXNDZWxsKSwgdW5zdXJl
KGJ1Y2tldEtleU5vdENlbGwpKTsKLQotICAgICAgICBtX291dC5hcHBlbmRUbyhidWNrZXRLZXlJ
c0NlbGwsIGJvdGhBcmVDZWxscyk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChpc0NlbGwoa2V5KSwK
LSAgICAgICAgICAgIHVuc3VyZShib3RoQXJlQ2VsbHMpLCB1bnN1cmUobG9vcEFyb3VuZCkpOwot
Ci0gICAgICAgIG1fb3V0LmFwcGVuZFRvKGJvdGhBcmVDZWxscywgYnVja2V0S2V5SXNTdHJpbmcp
OwotICAgICAgICBtX291dC5icmFuY2goaXNTdHJpbmcoYnVja2V0S2V5KSwKLSAgICAgICAgICAg
IHVuc3VyZShidWNrZXRLZXlJc1N0cmluZyksIHVuc3VyZShsb29wQXJvdW5kKSk7Ci0KLSAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oYnVja2V0S2V5SXNTdHJpbmcsIGJ1Y2tldEtleU5vdENlbGwpOwot
ICAgICAgICBtX291dC5icmFuY2goaXNTdHJpbmcoa2V5KSwKLSAgICAgICAgICAgIHVuc3VyZShz
bG93UGF0aCksIHVuc3VyZShsb29wQXJvdW5kKSk7Ci0KLSAgICAgICAgbV9vdXQuYXBwZW5kVG8o
YnVja2V0S2V5Tm90Q2VsbCwgYnVja2V0S2V5SXNOdW1iZXIpOwotICAgICAgICBtX291dC5icmFu
Y2goaXNOb3ROdW1iZXIoYnVja2V0S2V5KSwKLSAgICAgICAgICAgIHVuc3VyZShsb29wQXJvdW5k
KSwgdW5zdXJlKGJ1Y2tldEtleUlzTnVtYmVyKSk7Ci0KLSAgICAgICAgbV9vdXQuYXBwZW5kVG8o
YnVja2V0S2V5SXNOdW1iZXIsIGJvdGhBcmVOdW1iZXJzKTsKLSAgICAgICAgbV9vdXQuYnJhbmNo
KGlzTm90TnVtYmVyKGtleSksCi0gICAgICAgICAgICB1bnN1cmUobG9vcEFyb3VuZCksIHVuc3Vy
ZShib3RoQXJlTnVtYmVycykpOwotCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKGJvdGhBcmVOdW1i
ZXJzLCBidWNrZXRLZXlJc0ludDMyKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90SW50MzIo
YnVja2V0S2V5KSwKLSAgICAgICAgICAgIHVuc3VyZShzbG93UGF0aCksIHVuc3VyZShidWNrZXRL
ZXlJc0ludDMyKSk7Ci0KLSAgICAgICAgbV9vdXQuYXBwZW5kVG8oYnVja2V0S2V5SXNJbnQzMiwg
bG9vcEFyb3VuZCk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChpc05vdEludDMyKGtleSksCi0gICAg
ICAgICAgICB1bnN1cmUoc2xvd1BhdGgpLCB1bnN1cmUobG9vcEFyb3VuZCkpOworICAgICAgICAg
ICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGtleSwgYnVja2V0S2V5KSwKKyAgICAgICAgICAg
ICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGxvb3BBcm91bmQpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAg
ICAgICBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUobm90Qml0RXF1YWwpOworCisgICAgICAg
ICAgICBMQmFzaWNCbG9jayBub3RCaXRFcXVhbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAg
ICAgICBMQmFzaWNCbG9jayBidWNrZXRLZXlJc0NlbGwgPSBtX291dC5uZXdCbG9jaygpOworCisg
ICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwoa2V5LCBidWNrZXRLZXkpLAorICAg
ICAgICAgICAgICAgIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobm90Qml0RXF1YWwpKTsK
KworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90Qml0RXF1YWwsIGJ1Y2tldEtleUlzQ2Vs
bCk7CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKGJ1Y2tldEtleSksCisgICAgICAg
ICAgICAgICAgdW5zdXJlKGJ1Y2tldEtleUlzQ2VsbCksIHVuc3VyZShsb29wQXJvdW5kKSk7CisK
KyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJ1Y2tldEtleUlzQ2VsbCwgbG9vcEFyb3VuZCk7
CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNTdHJpbmcoYnVja2V0S2V5KSwKKyAgICAgICAg
ICAgICAgICB1bnN1cmUoc2xvd1BhdGgpLCB1bnN1cmUobG9vcEFyb3VuZCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgICAg
ICBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUobm90Qml0RXF1YWwpOworCisgICAgICAgICAg
ICBMQmFzaWNCbG9jayBub3RCaXRFcXVhbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAg
ICBMQmFzaWNCbG9jayBidWNrZXRLZXlJc0NlbGwgPSBtX291dC5uZXdCbG9jaygpOworICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgYnVja2V0S2V5SXNTdHJpbmcgPSBtX291dC5uZXdCbG9jaygpOwor
CisgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwoa2V5LCBidWNrZXRLZXkpLAor
ICAgICAgICAgICAgICAgIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobm90Qml0RXF1YWwp
KTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90Qml0RXF1YWwsIGJ1Y2tldEtleUlz
Q2VsbCk7CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKGJ1Y2tldEtleSksCisgICAg
ICAgICAgICAgICAgdW5zdXJlKGJ1Y2tldEtleUlzQ2VsbCksIHVuc3VyZShsb29wQXJvdW5kKSk7
CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJ1Y2tldEtleUlzQ2VsbCwgYnVja2V0S2V5
SXNTdHJpbmcpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzU3RyaW5nKGJ1Y2tldEtleSks
CisgICAgICAgICAgICAgICAgdW5zdXJlKGJ1Y2tldEtleUlzU3RyaW5nKSwgdW5zdXJlKGxvb3BB
cm91bmQpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYnVja2V0S2V5SXNTdHJpbmcs
IGxvb3BBcm91bmQpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzU3RyaW5nKGtleSksCisg
ICAgICAgICAgICAgICAgdW5zdXJlKHNsb3dQYXRoKSwgdW5zdXJlKGxvb3BBcm91bmQpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogewor
ICAgICAgICAgICAgbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKG5vdEJpdEVxdWFsKTsKKwor
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90Qml0RXF1YWwgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgYnVja2V0S2V5Tm90Q2VsbCA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBidWNrZXRLZXlJc0NlbGwgPSBtX291dC5uZXdC
bG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgYm90aEFyZUNlbGxzID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGJ1Y2tldEtleUlzU3RyaW5nID0gbV9v
dXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGJ1Y2tldEtleUlzTnVtYmVy
ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGJvdGhBcmVOdW1i
ZXJzID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGJ1Y2tldEtl
eUlzSW50MzIgPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgICAgICBtX291dC5icmFuY2go
bV9vdXQuZXF1YWwoa2V5LCBidWNrZXRLZXkpLAorICAgICAgICAgICAgICAgIHVuc3VyZShjb250
aW51YXRpb24pLCB1bnN1cmUobm90Qml0RXF1YWwpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8obm90Qml0RXF1YWwsIGJ1Y2tldEtleUlzQ2VsbCk7CisgICAgICAgICAgICBtX291dC5i
cmFuY2goaXNDZWxsKGJ1Y2tldEtleSksCisgICAgICAgICAgICAgICAgdW5zdXJlKGJ1Y2tldEtl
eUlzQ2VsbCksIHVuc3VyZShidWNrZXRLZXlOb3RDZWxsKSk7CisKKyAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGJ1Y2tldEtleUlzQ2VsbCwgYm90aEFyZUNlbGxzKTsKKyAgICAgICAgICAgIG1f
b3V0LmJyYW5jaChpc0NlbGwoa2V5KSwKKyAgICAgICAgICAgICAgICB1bnN1cmUoYm90aEFyZUNl
bGxzKSwgdW5zdXJlKGxvb3BBcm91bmQpKTsKKworICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Ym90aEFyZUNlbGxzLCBidWNrZXRLZXlJc1N0cmluZyk7CisgICAgICAgICAgICBtX291dC5icmFu
Y2goaXNTdHJpbmcoYnVja2V0S2V5KSwKKyAgICAgICAgICAgICAgICB1bnN1cmUoYnVja2V0S2V5
SXNTdHJpbmcpLCB1bnN1cmUobG9vcEFyb3VuZCkpOworCisgICAgICAgICAgICBtX291dC5hcHBl
bmRUbyhidWNrZXRLZXlJc1N0cmluZywgYnVja2V0S2V5Tm90Q2VsbCk7CisgICAgICAgICAgICBt
X291dC5icmFuY2goaXNTdHJpbmcoa2V5KSwKKyAgICAgICAgICAgICAgICB1bnN1cmUoc2xvd1Bh
dGgpLCB1bnN1cmUobG9vcEFyb3VuZCkpOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhi
dWNrZXRLZXlOb3RDZWxsLCBidWNrZXRLZXlJc051bWJlcik7CisgICAgICAgICAgICBtX291dC5i
cmFuY2goaXNOb3ROdW1iZXIoYnVja2V0S2V5KSwKKyAgICAgICAgICAgICAgICB1bnN1cmUobG9v
cEFyb3VuZCksIHVuc3VyZShidWNrZXRLZXlJc051bWJlcikpOworCisgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhidWNrZXRLZXlJc051bWJlciwgYm90aEFyZU51bWJlcnMpOworICAgICAgICAg
ICAgbV9vdXQuYnJhbmNoKGlzTm90TnVtYmVyKGtleSksCisgICAgICAgICAgICAgICAgdW5zdXJl
KGxvb3BBcm91bmQpLCB1bnN1cmUoYm90aEFyZU51bWJlcnMpKTsKKworICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oYm90aEFyZU51bWJlcnMsIGJ1Y2tldEtleUlzSW50MzIpOworICAgICAgICAg
ICAgbV9vdXQuYnJhbmNoKGlzTm90SW50MzIoYnVja2V0S2V5KSwKKyAgICAgICAgICAgICAgICB1
bnN1cmUoc2xvd1BhdGgpLCB1bnN1cmUoYnVja2V0S2V5SXNJbnQzMikpOworCisgICAgICAgICAg
ICBtX291dC5hcHBlbmRUbyhidWNrZXRLZXlJc0ludDMyLCBsb29wQXJvdW5kKTsKKyAgICAgICAg
ICAgIG1fb3V0LmJyYW5jaChpc05vdEludDMyKGtleSksCisgICAgICAgICAgICAgICAgdW5zdXJl
KHNsb3dQYXRoKSwgdW5zdXJlKGxvb3BBcm91bmQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICB9CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obG9vcEFyb3Vu
ZCwgc2xvd1BhdGgpOwogICAgICAgICBtX291dC5hZGRJbmNvbWluZ1RvUGhpKHVubWFza2VkSW5k
ZXgsIG1fb3V0LmFuY2hvcihtX291dC5hZGQoaW5kZXgsIG1fb3V0LmludDMyT25lKSkpOwo=
</data>
<flag name="review"
          id="313707"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290537</attachid>
            <date>2016-10-03 17:03:09 -0700</date>
            <delta_ts>2016-10-03 17:03:09 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>17163</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2NzU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE2LTEwLTAzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEdldE1hcEJ1Y2tldCBub2RlIHNob3VsZCBzcGVjdWxhdGUgb24gdGhlIHR5cGUgb2YgaXRzICdr
ZXknIGNoaWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjE2MzgKKworICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICBU
aGlzIGVsaW1pbmF0ZXMgdHlwZS1jaGVjayBicmFuY2hlcyB3aGVuIHdlJ3ZlIGFscmVhZHkKKyAg
ICAgICAgcHJvdmVuIHRoZSB0eXBlIG9mIHRoZSBpbmNvbWluZyBrZXkuIEFsc28sIGl0IHJlZHVj
ZXMKKyAgICAgICAgdGhlIGJyYW5jaGVzIHdlIGVtaXQgd2hlbiB0eXBlIGNoZWNraW5nIHRoZSBi
dWNrZXQncyBrZXkuCisKKyAgICAgICAgVGhpcyBpcyBhIDItMyUgc3BlZWR1cCBvbiBFUzZTYW1w
bGVCZW5jaC9CYXNpYy4KKworICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRNYXBCdWNrZXQpOgorCiAyMDE2
LTEwLTAzICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAgICAgICBBdXRv
LWdlbmVyYXRlIFdBU01PcHMuaCwgc2hhcmUgd2l0aCB0ZXN0aW5nIEpTT04gZmlsZQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAy
MDY3NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTg3LDcgKzE1ODcsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBmaXhFZGdlPFNldE9iamVjdFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICBmaXhFZGdlPFVudHlwZWRVc2U+KG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpCisgICAgICAg
ICAgICAgICAgZml4RWRnZTxCb29sZWFuVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICBlbHNlIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlSW50MzIoKSkKKyAgICAg
ICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAg
ICBlbHNlIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlU3ltYm9sKCkpCisgICAg
ICAgICAgICAgICAgZml4RWRnZTxTeW1ib2xVc2U+KG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKG5vZGUtPmNoaWxkMigpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSkKKyAg
ICAgICAgICAgICAgICBmaXhFZGdlPE9iamVjdFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgZWxzZSBpZiAobm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZVN0cmluZygpKQor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8U3RyaW5nVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAg
ICAgICAgICBlbHNlIGlmIChub2RlLT5jaGlsZDIoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKQor
ICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4obm9kZS0+Y2hp
bGQyKCkpOworCiAgICAgICAgICAgICBmaXhFZGdlPEludDMyVXNlPihub2RlLT5jaGlsZDMoKSk7
CiAgICAgICAgICAgICBicmVhazsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMDY3NDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NzE3LDcgKzQ3MTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgfQogICAgIGNhc2UgR2V0TWFwQnVja2V0OiB7CiAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIG1hcCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIEpTVmFs
dWVPcGVyYW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEpTVmFsdWVPcGVy
YW5kIGtleSh0aGlzLCBub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsK
ICAgICAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIGhhc2godGhpcywgbm9kZS0+Y2hpbGQzKCkp
OwogICAgICAgICBHUFJUZW1wb3JhcnkgbWFzayh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5
IGluZGV4KHRoaXMpOwpAQCAtNDc0MSw2ICs0NzQxLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogCisgICAgICAgIGlmIChub2RlLT5jaGlsZDIoKS51c2VLaW5k
KCkgIT0gVW50eXBlZFVzZSkKKyAgICAgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGls
ZDIoKSk7CisKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyht
YXBHUFIsIG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBNYXBPYmplY3RVc2UgPyBKU01hcDo6
b2Zmc2V0T2ZIYXNoTWFwSW1wbCgpIDogSlNTZXQ6Om9mZnNldE9mSGFzaE1hcEltcGwoKSksIGJ1
ZmZlckdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
dWZmZXJHUFIsIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+
Pjo6b2Zmc2V0T2ZDYXBhY2l0eSgpKSwgbWFza0dQUik7CiAgICAgICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYnVmZmVyR1BSLCBIYXNoTWFwSW1wbDxIYXNoTWFwQnVj
a2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mQnVmZmVyKCkpLCBidWZmZXJHUFIp
OwpAQCAtNDc2Myw0MCArNDc2Niw3OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
dWNrZXRHUFIsIEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+OjpvZmZzZXRPZktl
eSgpKSwgYnVja2V0R1BSKTsKIAogICAgICAgICAvLyBQZXJmb3JtIE9iamVjdC5pcygpCi0gICAg
ICAgIGRvbmUuYXBwZW5kKG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgYnVj
a2V0R1BSLCBrZXlHUFIpKTsgLy8gVGhleSdyZSBkZWZpbml0ZWx5IHRoZSBzYW1lIHZhbHVlLCB3
ZSBmb3VuZCB0aGUgYnVja2V0IHdlIHdlcmUgbG9va2luZyBmb3IhCi0gICAgICAgIGF1dG8gb25l
SXNudENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYnVja2V0R1BSKSk7
Ci0gICAgICAgIC8vIGZpcnN0IGlzIGEgY2VsbCBoZXJlLgotICAgICAgICBsb29wQXJvdW5kLmFw
cGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3Moa2V5R1BSKSkpOwotICAgICAg
ICAvLyBCb3RoIGFyZSBjZWxscyBoZXJlLgotICAgICAgICBsb29wQXJvdW5kLmFwcGVuZChtX2pp
dC5icmFuY2g4KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKLSAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpBZGRyZXNzKGJ1Y2tldEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMihTdHJpbmdUeXBlKSkpOwotICAgICAgICAvLyBUaGUgZmlyc3QgaXMgYSBzdHJpbmcg
aGVyZS4KLSAgICAgICAgc2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoOChKSVRDb21w
aWxlcjo6RXF1YWwsCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhrZXlHUFIsIEpT
Q2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpKTsK
LSAgICAgICAgLy8gVGhlIGZpcnN0IGlzIGEgc3RyaW5nLCBidXQgdGhlIHNlY29uZCBpcyBub3Qs
IHdlIGNvbnRpbnVlIHRvIGxvb3AgYXJvdW5kLgotICAgICAgICBsb29wQXJvdW5kLmFwcGVuZCht
X2ppdC5qdW1wKCkpOwotCi0gICAgICAgIG9uZUlzbnRDZWxsLmxpbmsoJm1faml0KTsKLSAgICAg
ICAgLy8gV2UndmUgYWxyZWFkeSBkb25lIGEgNjQtYml0IGNvbXBhcmUgYXQgdGhpcyBwb2ludCwg
c28gaWYgb25lIGlzIG5vdCBhIG51bWJlciwgdGhleSdyZSBkZWZpbml0ZWx5IG5vdCBlcXVhbC4K
LSAgICAgICAgbG9vcEFyb3VuZC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3ROdW1iZXIoYnVja2V0
R1BSKSk7Ci0gICAgICAgIGxvb3BBcm91bmQuYXBwZW5kKG1faml0LmJyYW5jaElmTm90TnVtYmVy
KGtleUdQUikpOwotICAgICAgICAvLyBCb3RoIGFyZSBkZWZpbml0ZWx5IG51bWJlcnMuIElmIHdl
IHNlZSBhIGRvdWJsZSwgd2UgZ28gdG8gdGhlIHNsb3cgcGF0aC4KLSAgICAgICAgc2xvd1BhdGhD
YXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RJbnQzMihidWNrZXRHUFIpKTsKLSAgICAgICAg
c2xvd1BhdGhDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RJbnQzMihrZXlHUFIpKTsKLSAg
ICAgICAgCi0gICAgICAgIGxvb3BBcm91bmQubGluaygmbV9qaXQpOworICAgICAgICBzd2l0Y2gg
KG5vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6Cisg
ICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAgIGNhc2UgU3ltYm9sVXNlOgorICAgICAgICBj
YXNlIE9iamVjdFVzZTogeworICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJhbmNoNjQo
TWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBidWNrZXRHUFIsIGtleUdQUikpOyAvLyBUaGV5J3JlIGRl
ZmluaXRlbHkgdGhlIHNhbWUgdmFsdWUsIHdlIGZvdW5kIHRoZSBidWNrZXQgd2Ugd2VyZSBsb29r
aW5nIGZvciEKKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgbG9vcCBhcm91bmQuCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAg
ICAgIGRvbmUuYXBwZW5kKG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgYnVj
a2V0R1BSLCBrZXlHUFIpKTsKKyAgICAgICAgICAgIGxvb3BBcm91bmQuYXBwZW5kKG1faml0LmJy
YW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhidWNrZXRHUFIpKSk7CisgICAgICAgICAgICBsb29w
QXJvdW5kLmFwcGVuZChtX2ppdC5icmFuY2g4KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKKyAgICAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhidWNrZXRHUFIsIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpKTsKKyAgICAgICAgICAg
IGxvb3BBcm91bmQuYXBwZW5kKG1faml0LmJyYW5jaDgoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAor
ICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGtleUdQUiwgSlNDZWxsOjp0eXBl
SW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSkpOworICAgICAgICAg
ICAgLy8gVGhleSdyZSBib3RoIHN0cmluZ3MuCisgICAgICAgICAgICBzbG93UGF0aENhc2VzLmFw
cGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBTdHJpbmdVc2U6IHsKKyAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0LmJyYW5j
aDY0KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgYnVja2V0R1BSLCBrZXlHUFIpKTsgLy8gVGhleSdy
ZSBkZWZpbml0ZWx5IHRoZSBzYW1lIHZhbHVlLCB3ZSBmb3VuZCB0aGUgYnVja2V0IHdlIHdlcmUg
bG9va2luZyBmb3IhCisgICAgICAgICAgICBsb29wQXJvdW5kLmFwcGVuZChtX2ppdC5icmFuY2hJ
Zk5vdENlbGwoSlNWYWx1ZVJlZ3MoYnVja2V0R1BSKSkpOworICAgICAgICAgICAgbG9vcEFyb3Vu
ZC5hcHBlbmQobV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1YWwsCisgICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYnVja2V0R1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKSk7CisgICAgICAgICAgICBzbG93
UGF0aENhc2VzLmFwcGVuZChtX2ppdC5qdW1wKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7IAorICAgICAgICAgICAgZG9uZS5hcHBl
bmQobV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBidWNrZXRHUFIsIGtleUdQ
UikpOyAvLyBUaGV5J3JlIGRlZmluaXRlbHkgdGhlIHNhbWUgdmFsdWUsIHdlIGZvdW5kIHRoZSBi
dWNrZXQgd2Ugd2VyZSBsb29raW5nIGZvciEKKyAgICAgICAgICAgIGF1dG8gb25lSXNudENlbGwg
PSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYnVja2V0R1BSKSk7CisgICAgICAg
ICAgICAvLyBmaXJzdCBpcyBhIGNlbGwgaGVyZS4KKyAgICAgICAgICAgIGxvb3BBcm91bmQuYXBw
ZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhrZXlHUFIpKSk7CisgICAgICAg
ICAgICAvLyBCb3RoIGFyZSBjZWxscyBoZXJlLgorICAgICAgICAgICAgbG9vcEFyb3VuZC5hcHBl
bmQobV9qaXQuYnJhbmNoOChKSVRDb21waWxlcjo6Tm90RXF1YWwsCisgICAgICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkFkZHJlc3MoYnVja2V0R1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ1R5cGUpKSk7CisgICAgICAgICAgICAvLyBUaGUgZmly
c3QgaXMgYSBzdHJpbmcgaGVyZS4KKyAgICAgICAgICAgIHNsb3dQYXRoQ2FzZXMuYXBwZW5kKG1f
aml0LmJyYW5jaDgoSklUQ29tcGlsZXI6OkVxdWFsLAorICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpBZGRyZXNzKGtleUdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0
ZWRJbW0zMihTdHJpbmdUeXBlKSkpOworICAgICAgICAgICAgLy8gVGhlIGZpcnN0IGlzIGEgc3Ry
aW5nLCBidXQgdGhlIHNlY29uZCBpcyBub3QsIHdlIGNvbnRpbnVlIHRvIGxvb3AgYXJvdW5kLgor
ICAgICAgICAgICAgbG9vcEFyb3VuZC5hcHBlbmQobV9qaXQuanVtcCgpKTsKKworICAgICAgICAg
ICAgb25lSXNudENlbGwubGluaygmbV9qaXQpOworICAgICAgICAgICAgLy8gV2UndmUgYWxyZWFk
eSBkb25lIGEgNjQtYml0IGNvbXBhcmUgYXQgdGhpcyBwb2ludCwgc28gaWYgb25lIGlzIG5vdCBh
IG51bWJlciwgdGhleSdyZSBkZWZpbml0ZWx5IG5vdCBlcXVhbC4KKyAgICAgICAgICAgIGxvb3BB
cm91bmQuYXBwZW5kKG1faml0LmJyYW5jaElmTm90TnVtYmVyKGJ1Y2tldEdQUikpOworICAgICAg
ICAgICAgbG9vcEFyb3VuZC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3ROdW1iZXIoa2V5R1BSKSk7
CisgICAgICAgICAgICAvLyBCb3RoIGFyZSBkZWZpbml0ZWx5IG51bWJlcnMuIElmIHdlIHNlZSBh
IGRvdWJsZSwgd2UgZ28gdG8gdGhlIHNsb3cgcGF0aC4KKyAgICAgICAgICAgIHNsb3dQYXRoQ2Fz
ZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90SW50MzIoYnVja2V0R1BSKSk7CisgICAgICAgICAg
ICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdEludDMyKGtleUdQUikpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKworICAgICAgICAg
ICAgCisgICAgICAgIGlmICghbG9vcEFyb3VuZC5lbXB0eSgpKQorICAgICAgICAgICAgbG9vcEFy
b3VuZC5saW5rKCZtX2ppdCk7CisKICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEp
LCBpbmRleEdQUik7CiAgICAgICAgIG1faml0Lmp1bXAoKS5saW5rVG8obG9vcCwgJm1faml0KTsK
IAotICAgICAgICBzbG93UGF0aENhc2VzLmxpbmsoJm1faml0KTsKLSAgICAgICAgc2lsZW50U3Bp
bGxBbGxSZWdpc3RlcnMoaW5kZXhHUFIpOwotICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IE1hcE9iamVjdFVzZSkKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uSlNNYXBGaW5kQnVja2V0LCByZXN1bHRHUFIsIG1hcEdQUiwga2V5R1BSLCBoYXNoR1BSKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25KU1NldEZp
bmRCdWNrZXQsIHJlc3VsdEdQUiwgbWFwR1BSLCBrZXlHUFIsIGhhc2hHUFIpOwotICAgICAgICBz
aWxlbnRGaWxsQWxsUmVnaXN0ZXJzKGluZGV4R1BSKTsKLSAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKLSAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgaWYg
KCFzbG93UGF0aENhc2VzLmVtcHR5KCkpIHsKKyAgICAgICAgICAgIHNsb3dQYXRoQ2FzZXMubGlu
aygmbV9qaXQpOworICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoaW5kZXhHUFIp
OworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBNYXBPYmplY3RV
c2UpCisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25KU01hcEZpbmRCdWNr
ZXQsIHJlc3VsdEdQUiwgbWFwR1BSLCBrZXlHUFIsIGhhc2hHUFIpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSlNTZXRGaW5kQnVja2V0
LCByZXN1bHRHUFIsIG1hcEdQUiwga2V5R1BSLCBoYXNoR1BSKTsKKyAgICAgICAgICAgIHNpbGVu
dEZpbGxBbGxSZWdpc3RlcnMoaW5kZXhHUFIpOworICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKKyAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAg
IH0KIAogICAgICAgICBub3RQcmVzZW50SW5UYWJsZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cihudWxscHRyKSwgcmVzdWx0R1BSKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIw
Njc0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjUwOSwxNCArNjUwOSw2IEBAIHByaXZhdGU6CiAgICAgICAgIExC
YXNpY0Jsb2NrIG5vdFByZXNlbnRJblRhYmxlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAg
TEJhc2ljQmxvY2sgbm90RW1wdHlWYWx1ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExC
YXNpY0Jsb2NrIG5vdERlbGV0ZWRWYWx1ZSA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExC
YXNpY0Jsb2NrIG5vdEJpdEVxdWFsID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgTEJhc2lj
QmxvY2sgYnVja2V0S2V5Tm90Q2VsbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExCYXNp
Y0Jsb2NrIGJ1Y2tldEtleUlzQ2VsbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExCYXNp
Y0Jsb2NrIGJvdGhBcmVDZWxscyA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExCYXNpY0Js
b2NrIGJ1Y2tldEtleUlzU3RyaW5nID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgTEJhc2lj
QmxvY2sgYnVja2V0S2V5SXNOdW1iZXIgPSBtX291dC5uZXdCbG9jaygpOwotICAgICAgICBMQmFz
aWNCbG9jayBib3RoQXJlTnVtYmVycyA9IG1fb3V0Lm5ld0Jsb2NrKCk7Ci0gICAgICAgIExCYXNp
Y0Jsb2NrIGJ1Y2tldEtleUlzSW50MzIgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFz
aWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogCiAgICAgICAgIExCYXNp
Y0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKGxvb3BTdGFydCk7
CkBAIC02NTI5LDcgKzY1MjEsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAotICAgICAgICBMVmFsdWUga2V5ID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVlIGtleSA9IGxvd0pT
VmFsdWUobV9ub2RlLT5jaGlsZDIoKSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAg
ICAgaWYgKG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpICE9IFVudHlwZWRVc2UpCisgICAgICAg
ICAgICBzcGVjdWxhdGUobV9ub2RlLT5jaGlsZDIoKSk7CisKICAgICAgICAgTFZhbHVlIGhhc2gg
PSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMygpKTsKIAogICAgICAgICBMVmFsdWUgaGFzaE1hcElt
cGwgPSBtX291dC5sb2FkUHRyKG1hcCwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gTWFw
T2JqZWN0VXNlID8gbV9oZWFwcy5KU01hcF9oYXNoTWFwSW1wbCA6IG1faGVhcHMuSlNTZXRfaGFz
aE1hcEltcGwpOwpAQCAtNjU1MSw0MyArNjU0NiwxMDUgQEAgcHJpdmF0ZToKICAgICAgICAgbV9v
dXQuYnJhbmNoKG1fb3V0LmVxdWFsKGhhc2hNYXBCdWNrZXQsIG1fb3V0LmNvbnN0SW50UHRyKEhh
c2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6ZGVsZXRlZFZh
bHVlKCkpKSwKICAgICAgICAgICAgIHVuc3VyZShsb29wQXJvdW5kKSwgdW5zdXJlKG5vdERlbGV0
ZWRWYWx1ZSkpOwogCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdERlbGV0ZWRWYWx1ZSwgbm90
Qml0RXF1YWwpOworICAgICAgICBtX291dC5hcHBlbmRUbyhub3REZWxldGVkVmFsdWUsIGxvb3BB
cm91bmQpOwogICAgICAgICBMVmFsdWUgYnVja2V0S2V5ID0gbV9vdXQubG9hZDY0KGhhc2hNYXBC
dWNrZXQsIG1faGVhcHMuSGFzaE1hcEJ1Y2tldF9rZXkpOworCiAgICAgICAgIC8vIFBlcmZvcm0g
T2JqZWN0LmlzKCkKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGtleSwgYnVja2V0
S2V5KSwKLSAgICAgICAgICAgIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobm90Qml0RXF1
YWwpKTsKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSkgeworICAg
ICAgICBjYXNlIEJvb2xlYW5Vc2U6CisgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAgIGNh
c2UgU3ltYm9sVXNlOgorICAgICAgICBjYXNlIE9iamVjdFVzZTogeworICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKG1fb3V0LmVxdWFsKGtleSwgYnVja2V0S2V5KSwKKyAgICAgICAgICAgICAgICB1
bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGxvb3BBcm91bmQpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgU3RyaW5nVXNlOiB7CisgICAgICAgICAgICBM
QmFzaWNCbG9jayBub3RCaXRFcXVhbCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBM
QmFzaWNCbG9jayBidWNrZXRLZXlJc0NlbGwgPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAg
ICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwoa2V5LCBidWNrZXRLZXkpLAorICAgICAgICAg
ICAgICAgIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUobm90Qml0RXF1YWwpKTsKIAotICAg
ICAgICBtX291dC5hcHBlbmRUbyhub3RCaXRFcXVhbCwgYnVja2V0S2V5SXNDZWxsKTsKLSAgICAg
ICAgbV9vdXQuYnJhbmNoKGlzQ2VsbChidWNrZXRLZXkpLAotICAgICAgICAgICAgdW5zdXJlKGJ1
Y2tldEtleUlzQ2VsbCksIHVuc3VyZShidWNrZXRLZXlOb3RDZWxsKSk7Ci0KLSAgICAgICAgbV9v
dXQuYXBwZW5kVG8oYnVja2V0S2V5SXNDZWxsLCBib3RoQXJlQ2VsbHMpOwotICAgICAgICBtX291
dC5icmFuY2goaXNDZWxsKGtleSksCi0gICAgICAgICAgICB1bnN1cmUoYm90aEFyZUNlbGxzKSwg
dW5zdXJlKGxvb3BBcm91bmQpKTsKLQotICAgICAgICBtX291dC5hcHBlbmRUbyhib3RoQXJlQ2Vs
bHMsIGJ1Y2tldEtleUlzU3RyaW5nKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlzU3RyaW5nKGJ1
Y2tldEtleSksCi0gICAgICAgICAgICB1bnN1cmUoYnVja2V0S2V5SXNTdHJpbmcpLCB1bnN1cmUo
bG9vcEFyb3VuZCkpOwotCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKGJ1Y2tldEtleUlzU3RyaW5n
LCBidWNrZXRLZXlOb3RDZWxsKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlzU3RyaW5nKGtleSks
Ci0gICAgICAgICAgICB1bnN1cmUoc2xvd1BhdGgpLCB1bnN1cmUobG9vcEFyb3VuZCkpOwotCi0g
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGJ1Y2tldEtleU5vdENlbGwsIGJ1Y2tldEtleUlzTnVtYmVy
KTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKGlzTm90TnVtYmVyKGJ1Y2tldEtleSksCi0gICAgICAg
ICAgICB1bnN1cmUobG9vcEFyb3VuZCksIHVuc3VyZShidWNrZXRLZXlJc051bWJlcikpOwotCi0g
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGJ1Y2tldEtleUlzTnVtYmVyLCBib3RoQXJlTnVtYmVycyk7
Ci0gICAgICAgIG1fb3V0LmJyYW5jaChpc05vdE51bWJlcihrZXkpLAotICAgICAgICAgICAgdW5z
dXJlKGxvb3BBcm91bmQpLCB1bnN1cmUoYm90aEFyZU51bWJlcnMpKTsKLQotICAgICAgICBtX291
dC5hcHBlbmRUbyhib3RoQXJlTnVtYmVycywgYnVja2V0S2V5SXNJbnQzMik7Ci0gICAgICAgIG1f
b3V0LmJyYW5jaChpc05vdEludDMyKGJ1Y2tldEtleSksCi0gICAgICAgICAgICB1bnN1cmUoc2xv
d1BhdGgpLCB1bnN1cmUoYnVja2V0S2V5SXNJbnQzMikpOwotCi0gICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGJ1Y2tldEtleUlzSW50MzIsIGxvb3BBcm91bmQpOwotICAgICAgICBtX291dC5icmFuY2go
aXNOb3RJbnQzMihrZXkpLAotICAgICAgICAgICAgdW5zdXJlKHNsb3dQYXRoKSwgdW5zdXJlKGxv
b3BBcm91bmQpKTsKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJpdEVxdWFsLCBidWNr
ZXRLZXlJc0NlbGwpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbChidWNrZXRLZXkp
LAorICAgICAgICAgICAgICAgIHVuc3VyZShidWNrZXRLZXlJc0NlbGwpLCB1bnN1cmUobG9vcEFy
b3VuZCkpOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhidWNrZXRLZXlJc0NlbGwsIGxv
b3BBcm91bmQpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzU3RyaW5nKGJ1Y2tldEtleSks
CisgICAgICAgICAgICAgICAgdW5zdXJlKHNsb3dQYXRoKSwgdW5zdXJlKGxvb3BBcm91bmQpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgQ2VsbFVzZTogewor
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgbm90Qml0RXF1YWwgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICAgICAgTEJhc2ljQmxvY2sgYnVja2V0S2V5SXNDZWxsID0gbV9vdXQubmV3QmxvY2so
KTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGJ1Y2tldEtleUlzU3RyaW5nID0gbV9vdXQubmV3
QmxvY2soKTsKKworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGtleSwgYnVj
a2V0S2V5KSwKKyAgICAgICAgICAgICAgICB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5v
dEJpdEVxdWFsKSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEJpdEVxdWFsLCBi
dWNrZXRLZXlJc0NlbGwpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbChidWNrZXRL
ZXkpLAorICAgICAgICAgICAgICAgIHVuc3VyZShidWNrZXRLZXlJc0NlbGwpLCB1bnN1cmUobG9v
cEFyb3VuZCkpOworCisgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhidWNrZXRLZXlJc0NlbGws
IGJ1Y2tldEtleUlzU3RyaW5nKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc1N0cmluZyhi
dWNrZXRLZXkpLAorICAgICAgICAgICAgICAgIHVuc3VyZShidWNrZXRLZXlJc1N0cmluZyksIHVu
c3VyZShsb29wQXJvdW5kKSk7CisKKyAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJ1Y2tldEtl
eUlzU3RyaW5nLCBsb29wQXJvdW5kKTsKKyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc1N0cmlu
ZyhrZXkpLAorICAgICAgICAgICAgICAgIHVuc3VyZShzbG93UGF0aCksIHVuc3VyZShsb29wQXJv
dW5kKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFVudHlw
ZWRVc2U6IHsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdEJpdEVxdWFsID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGJ1Y2tldEtleU5vdENlbGwgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICAgICAgTEJhc2ljQmxvY2sgYnVja2V0S2V5SXNDZWxsID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgICAgIExCYXNpY0Jsb2NrIGJvdGhBcmVDZWxscyA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBidWNrZXRLZXlJc1N0
cmluZyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBidWNrZXRL
ZXlJc051bWJlciA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9jayBi
b3RoQXJlTnVtYmVycyA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgICAgICBMQmFzaWNCbG9j
ayBidWNrZXRLZXlJc0ludDMyID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKG1fb3V0LmVxdWFsKGtleSwgYnVja2V0S2V5KSwKKyAgICAgICAgICAgICAgICB1
bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKG5vdEJpdEVxdWFsKSk7CisKKyAgICAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKG5vdEJpdEVxdWFsLCBidWNrZXRLZXlJc0NlbGwpOworICAgICAgICAg
ICAgbV9vdXQuYnJhbmNoKGlzQ2VsbChidWNrZXRLZXkpLAorICAgICAgICAgICAgICAgIHVuc3Vy
ZShidWNrZXRLZXlJc0NlbGwpLCB1bnN1cmUoYnVja2V0S2V5Tm90Q2VsbCkpOworCisgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhidWNrZXRLZXlJc0NlbGwsIGJvdGhBcmVDZWxscyk7CisgICAg
ICAgICAgICBtX291dC5icmFuY2goaXNDZWxsKGtleSksCisgICAgICAgICAgICAgICAgdW5zdXJl
KGJvdGhBcmVDZWxscyksIHVuc3VyZShsb29wQXJvdW5kKSk7CisKKyAgICAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGJvdGhBcmVDZWxscywgYnVja2V0S2V5SXNTdHJpbmcpOworICAgICAgICAgICAg
bV9vdXQuYnJhbmNoKGlzU3RyaW5nKGJ1Y2tldEtleSksCisgICAgICAgICAgICAgICAgdW5zdXJl
KGJ1Y2tldEtleUlzU3RyaW5nKSwgdW5zdXJlKGxvb3BBcm91bmQpKTsKKworICAgICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oYnVja2V0S2V5SXNTdHJpbmcsIGJ1Y2tldEtleU5vdENlbGwpOworICAg
ICAgICAgICAgbV9vdXQuYnJhbmNoKGlzU3RyaW5nKGtleSksCisgICAgICAgICAgICAgICAgdW5z
dXJlKHNsb3dQYXRoKSwgdW5zdXJlKGxvb3BBcm91bmQpKTsKKworICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oYnVja2V0S2V5Tm90Q2VsbCwgYnVja2V0S2V5SXNOdW1iZXIpOworICAgICAgICAg
ICAgbV9vdXQuYnJhbmNoKGlzTm90TnVtYmVyKGJ1Y2tldEtleSksCisgICAgICAgICAgICAgICAg
dW5zdXJlKGxvb3BBcm91bmQpLCB1bnN1cmUoYnVja2V0S2V5SXNOdW1iZXIpKTsKKworICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oYnVja2V0S2V5SXNOdW1iZXIsIGJvdGhBcmVOdW1iZXJzKTsK
KyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc05vdE51bWJlcihrZXkpLAorICAgICAgICAgICAg
ICAgIHVuc3VyZShsb29wQXJvdW5kKSwgdW5zdXJlKGJvdGhBcmVOdW1iZXJzKSk7CisKKyAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGJvdGhBcmVOdW1iZXJzLCBidWNrZXRLZXlJc0ludDMyKTsK
KyAgICAgICAgICAgIG1fb3V0LmJyYW5jaChpc05vdEludDMyKGJ1Y2tldEtleSksCisgICAgICAg
ICAgICAgICAgdW5zdXJlKHNsb3dQYXRoKSwgdW5zdXJlKGJ1Y2tldEtleUlzSW50MzIpKTsKKwor
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYnVja2V0S2V5SXNJbnQzMiwgbG9vcEFyb3VuZCk7
CisgICAgICAgICAgICBtX291dC5icmFuY2goaXNOb3RJbnQzMihrZXkpLAorICAgICAgICAgICAg
ICAgIHVuc3VyZShzbG93UGF0aCksIHVuc3VyZShsb29wQXJvdW5kKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGxvb3BBcm91bmQsIHNsb3dQYXRoKTsKICAgICAgICAgbV9vdXQuYWRkSW5jb21pbmdUb1BoaSh1
bm1hc2tlZEluZGV4LCBtX291dC5hbmNob3IobV9vdXQuYWRkKGluZGV4LCBtX291dC5pbnQzMk9u
ZSkpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>