<?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>142215</bug_id>
          
          <creation_ts>2015-03-03 06:28:43 -0800</creation_ts>
          <short_desc>Include key to NetworkCacheStorage::Entry</short_desc>
          <delta_ts>2015-03-03 13:58:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1073652</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-03-03 06:28:43 -0800</bug_when>
    <thetext>This simplified code. The key is saved as part of the entry so it makes logical sense too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073653</commentid>
    <comment_count>1</comment_count>
      <attachid>247757</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-03-03 06:51:51 -0800</bug_when>
    <thetext>Created attachment 247757
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073654</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-03 06:54:03 -0800</bug_when>
    <thetext>Attachment 247757 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.h:153:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheStorageCocoa.mm:496:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073689</commentid>
    <comment_count>3</comment_count>
      <attachid>247757</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-03 09:39:38 -0800</bug_when>
    <thetext>Comment on attachment 247757
patch

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

r=me with a question.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheStorageCocoa.mm:304
&gt; +    return std::unique_ptr&lt;NetworkCacheStorage::Entry&gt;(new NetworkCacheStorage::Entry {

Why are you moving away from std::make_unique&lt;&gt;() in this patch? I personally prefer std::make_unique&lt;&gt;() than explicitly calling new.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheStorageCocoa.mm:458
&gt; +    m_pendingReadOperationsByPriority[priority].append(new ReadOperation { key, WTF::move(completionHandler) });

ditto here and a couple of other places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073727</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-03-03 11:28:18 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Why are you moving away from std::make_unique&lt;&gt;() in this patch? I
&gt; personally prefer std::make_unique&lt;&gt;() than explicitly calling new.

It seemed cleaner to do regular initialisation in cases where make_unique doesn&apos;t actually make code more compact.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073749</commentid>
    <comment_count>5</comment_count>
      <attachid>247757</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-03 12:13:40 -0800</bug_when>
    <thetext>Comment on attachment 247757
patch

Clearing flags on attachment: 247757

Committed r180949: &lt;http://trac.webkit.org/changeset/180949&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073750</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-03 12:13:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073788</commentid>
    <comment_count>7</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-03-03 13:58:04 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Why are you moving away from std::make_unique&lt;&gt;() in this patch? I
&gt; &gt; personally prefer std::make_unique&lt;&gt;() than explicitly calling new.
&gt; 
&gt; It seemed cleaner to do regular initialisation in cases where make_unique
&gt; doesn&apos;t actually make code more compact.

Gross. I&apos;d prefer if we didn&apos;t introduce more naked news outside of construction helpers.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247757</attachid>
            <date>2015-03-03 06:51:51 -0800</date>
            <delta_ts>2015-03-03 12:13:40 -0800</delta_ts>
            <desc>patch</desc>
            <filename>disk-cache-entry-key.patch</filename>
            <type>text/plain</type>
            <size>21719</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDkzMSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE1LTAzLTAzICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbmNsdWRlIGtleSB0byBOZXR3
b3JrQ2FjaGVTdG9yYWdlOjpFbnRyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQyMjE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBzaW1wbGlmaWVkIGNvZGUuIFRoZSBrZXkgaXMgc2F2ZWQgYXMg
cGFydCBvZiB0aGUgZW50cnkgc28gaXQgbWFrZXMgbG9naWNhbCBzZW5zZSB0b28uCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjptYWtlQ2FjaGVLZXkpOgorICAgICAgICAoV2ViS2l0OjplbmNvZGVTdG9yYWdlRW50cnkp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OnJldHJpZXZlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpzdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6dXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjp0cmF2ZXJzZSk6Cisg
ICAgICAgIChXZWJLaXQ6OmVudHJ5QXNKU09OKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpkdW1wQ29udGVudHNUb0ZpbGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUtleS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZUtleTo6
b3BlcmF0b3I9KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVL
ZXkuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlS2V5Ojppc051bGwpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlQ29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OmRlY29kZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6ZW5jb2RlRW50cnlI
ZWFkZXIpOgorICAgICAgICAoV2ViS2l0OjpyZXRyaWV2ZUZyb21NZW1vcnkpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGVTdG9yYWdlOjpyZXRyaWV2ZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZVN0b3JhZ2U6OnN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlU3RvcmFnZTo6dXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlU3RvcmFn
ZTo6dHJhdmVyc2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGVTdG9yYWdlOjpkaXNw
YXRjaFBlbmRpbmdXcml0ZU9wZXJhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGVTdG9yYWdlOjpkaXNwYXRjaEZ1bGxXcml0ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZVN0b3JhZ2U6OmRpc3BhdGNoSGVhZGVyV3JpdGVPcGVyYXRpb24pOgorCiAy
MDE1LTAzLTAzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBSRUdSRVNTSU9OKHIxNzcwNzUpOiBXZWJQcm9jZXNzIGNyYXNoZXMgd2hlbiBlbnRl
cmluZyBhY2NlbGVyYXRpbmcgY29tcG9zaXRpbmcgbW9kZSBiZWZvcmUgdGhlIFdlYlZpZXcgaXMg
cmVhbGl6ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmNwcAkocmV2aXNpb24gMTgwOTMxKQorKysgU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04
NCw2ICs4NCwxOCBAQCB2b2lkIE5ldHdvcmtDYWNoZTo6c2V0TWF4aW11bVNpemUoc2l6ZV90CiAg
ICAgbV9zdG9yYWdlLT5zZXRNYXhpbXVtU2l6ZShtYXhpbXVtU2l6ZSk7CiB9CiAKK3N0YXRpYyBO
ZXR3b3JrQ2FjaGVLZXkgbWFrZUNhY2hlS2V5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCkKK3sKKyNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQorICAgIFN0cmlu
ZyBwYXJ0aXRpb24gPSByZXF1ZXN0LmNhY2hlUGFydGl0aW9uKCk7CisjZWxzZQorICAgIFN0cmlu
ZyBwYXJ0aXRpb247CisjZW5kaWYKKyAgICBpZiAocGFydGl0aW9uLmlzRW1wdHkoKSkKKyAgICAg
ICAgcGFydGl0aW9uID0gQVNDSUlMaXRlcmFsKCJObyBwYXJ0aXRpb24iKTsKKyAgICByZXR1cm4g
TmV0d29ya0NhY2hlS2V5KHJlcXVlc3QuaHR0cE1ldGhvZCgpLCBwYXJ0aXRpb24sIHJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCkpOworfQorCiBzdGF0aWMgTmV0d29ya0NhY2hlU3RvcmFnZTo6RW50cnkg
ZW5jb2RlU3RvcmFnZUVudHJ5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZXNwb25zZURhdGEpCiB7CiAgICAgTmV0d29ya0NhY2hl
RW5jb2RlciBlbmNvZGVyOwpAQCAtMTEzLDcgKzEyNSw3IEBAIHN0YXRpYyBOZXR3b3JrQ2FjaGVT
dG9yYWdlOjpFbnRyeSBlbmNvZGUKICAgICBpZiAocmVzcG9uc2VEYXRhKQogICAgICAgICBib2R5
ID0gTmV0d29ya0NhY2hlU3RvcmFnZTo6RGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihyZXNwb25zZURhdGEtPmRhdGEoKSksIHJlc3BvbnNlRGF0YS0+c2l6ZSgpKTsKIAotICAg
IHJldHVybiBOZXR3b3JrQ2FjaGVTdG9yYWdlOjpFbnRyeSB7IHRpbWVTdGFtcCwgaGVhZGVyLCBi
b2R5IH07CisgICAgcmV0dXJuIE5ldHdvcmtDYWNoZVN0b3JhZ2U6OkVudHJ5IHsgbWFrZUNhY2hl
S2V5KHJlcXVlc3QpLCB0aW1lU3RhbXAsIGhlYWRlciwgYm9keSB9OwogfQogCiBzdGF0aWMgYm9v
bCB2ZXJpZnlWYXJ5aW5nUmVxdWVzdEhlYWRlcnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTIzMSwxOCArMjQzLDYgQEAgc3RhdGljIE5ldHdvcmtD
YWNoZTo6UmV0cmlldmVEZWNpc2lvbiBjYQogICAgIHJldHVybiBOZXR3b3JrQ2FjaGU6OlJldHJp
ZXZlRGVjaXNpb246OlllczsKIH0KIAotc3RhdGljIE5ldHdvcmtDYWNoZUtleSBtYWtlQ2FjaGVL
ZXkoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQotewotI2lmIEVOQUJM
RShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgU3RyaW5nIHBhcnRpdGlvbiA9IHJlcXVlc3QuY2Fj
aGVQYXJ0aXRpb24oKTsKLSNlbHNlCi0gICAgU3RyaW5nIHBhcnRpdGlvbjsKLSNlbmRpZgotICAg
IGlmIChwYXJ0aXRpb24uaXNFbXB0eSgpKQotICAgICAgICBwYXJ0aXRpb24gPSBBU0NJSUxpdGVy
YWwoIk5vIHBhcnRpdGlvbiIpOwotICAgIHJldHVybiBOZXR3b3JrQ2FjaGVLZXkocmVxdWVzdC5o
dHRwTWV0aG9kKCksIHBhcnRpdGlvbiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7Ci19Ci0KIHZv
aWQgTmV0d29ya0NhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCwgdWludDY0X3Qgd2ViUGFnZUlELCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4pPiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NF
UlQoaXNFbmFibGVkKCkpOwpAQCAtMjcyLDYgKzI3Miw4IEBAIHZvaWQgTmV0d29ya0NhY2hlOjpy
ZXRyaWV2ZShjb25zdCBXZWJDb3IKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxw
dHIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAgIEFTU0VS
VChlbnRyeS0+a2V5ID09IHN0b3JhZ2VLZXkpOworCiAgICAgICAgIENhY2hlZEVudHJ5UmV1c2VG
YWlsdXJlIGZhaWx1cmUgPSBDYWNoZWRFbnRyeVJldXNlRmFpbHVyZTo6Tm9uZTsKICAgICAgICAg
YXV0byBkZWNvZGVkRW50cnkgPSBkZWNvZGVTdG9yYWdlRW50cnkoKmVudHJ5LCBvcmlnaW5hbFJl
cXVlc3QsIGZhaWx1cmUpOwogICAgICAgICBib29sIHN1Y2Nlc3MgPSAhIWRlY29kZWRFbnRyeTsK
QEAgLTMyOSwxOCArMzMxLDE5IEBAIHZvaWQgTmV0d29ya0NhY2hlOjpzdG9yZShjb25zdCBXZWJD
b3JlOjoKIAogICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIHN0b3Jpbmcg
JXMsIHBhcnRpdGlvbiAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEo
KS5kYXRhKCksIG9yaWdpbmFsUmVxdWVzdC5jYWNoZVBhcnRpdGlvbigpLmxhdGluMSgpLmRhdGEo
KSk7CiAKLSAgICBhdXRvIGtleSA9IG1ha2VDYWNoZUtleShvcmlnaW5hbFJlcXVlc3QpOwogICAg
IFN0b3JlRGVjaXNpb24gc3RvcmVEZWNpc2lvbiA9IGNhblN0b3JlKG9yaWdpbmFsUmVxdWVzdCwg
cmVzcG9uc2UpOwogICAgIGlmIChzdG9yZURlY2lzaW9uICE9IFN0b3JlRGVjaXNpb246Olllcykg
ewogICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBkaWRuJ3Qgc3Rv
cmUiKTsKLSAgICAgICAgaWYgKG1fc3RhdGlzdGljcykKKyAgICAgICAgaWYgKG1fc3RhdGlzdGlj
cykgeworICAgICAgICAgICAgYXV0byBrZXkgPSBtYWtlQ2FjaGVLZXkob3JpZ2luYWxSZXF1ZXN0
KTsKICAgICAgICAgICAgIG1fc3RhdGlzdGljcy0+cmVjb3JkTm90Q2FjaGluZ1Jlc3BvbnNlKGtl
eSwgc3RvcmVEZWNpc2lvbik7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGF1dG8gc3RvcmFnZUVudHJ5ID0gZW5jb2RlU3RvcmFnZUVudHJ5KG9yaWdpbmFsUmVxdWVz
dCwgcmVzcG9uc2UsIFdURjo6bW92ZShyZXNwb25zZURhdGEpKTsKIAotICAgIG1fc3RvcmFnZS0+
c3RvcmUoa2V5LCBzdG9yYWdlRW50cnksIFtjb21wbGV0aW9uSGFuZGxlcl0oYm9vbCBzdWNjZXNz
LCBjb25zdCBOZXR3b3JrQ2FjaGVTdG9yYWdlOjpEYXRhJiBib2R5RGF0YSkgeworICAgIG1fc3Rv
cmFnZS0+c3RvcmUoc3RvcmFnZUVudHJ5LCBbY29tcGxldGlvbkhhbmRsZXJdKGJvb2wgc3VjY2Vz
cywgY29uc3QgTmV0d29ya0NhY2hlU3RvcmFnZTo6RGF0YSYgYm9keURhdGEpIHsKICAgICAgICAg
TWFwcGVkQm9keSBtYXBwZWRCb2R5OwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiAg
ICAgICAgIGlmIChib2R5RGF0YS5pc01hcCgpKSB7CkBAIC0zNjIsMTAgKzM2NSw5IEBAIHZvaWQg
TmV0d29ya0NhY2hlOjp1cGRhdGUoY29uc3QgV2ViQ29yZToKICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlIHJlc3BvbnNlID0gZW50cnkucmVzcG9uc2U7CiAgICAgV2ViQ29yZTo6dXBkYXRl
UmVzcG9uc2VIZWFkZXJzQWZ0ZXJSZXZhbGlkYXRpb24ocmVzcG9uc2UsIHZhbGlkYXRpbmdSZXNw
b25zZSk7CiAKLSAgICBhdXRvIGtleSA9IG1ha2VDYWNoZUtleShvcmlnaW5hbFJlcXVlc3QpOwog
ICAgIGF1dG8gdXBkYXRlRW50cnkgPSBlbmNvZGVTdG9yYWdlRW50cnkob3JpZ2luYWxSZXF1ZXN0
LCByZXNwb25zZSwgZW50cnkuYnVmZmVyKTsKIAotICAgIG1fc3RvcmFnZS0+dXBkYXRlKGtleSwg
dXBkYXRlRW50cnksIGVudHJ5LnN0b3JhZ2VFbnRyeSwgW10oYm9vbCBzdWNjZXNzLCBjb25zdCBO
ZXR3b3JrQ2FjaGVTdG9yYWdlOjpEYXRhJikgeworICAgIG1fc3RvcmFnZS0+dXBkYXRlKHVwZGF0
ZUVudHJ5LCBlbnRyeS5zdG9yYWdlRW50cnksIFtdKGJvb2wgc3VjY2VzcywgY29uc3QgTmV0d29y
a0NhY2hlU3RvcmFnZTo6RGF0YSYpIHsKICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3
b3JrUHJvY2VzcykgdXBkYXRlZCwgc3VjY2Vzcz0lZCIsIHN1Y2Nlc3MpOwogICAgIH0pOwogfQpA
QCAtMzc0LDcgKzM3Niw3IEBAIHZvaWQgTmV0d29ya0NhY2hlOjp0cmF2ZXJzZShzdGQ6OmZ1bmN0
aW8KIHsKICAgICBBU1NFUlQoaXNFbmFibGVkKCkpOwogCi0gICAgbV9zdG9yYWdlLT50cmF2ZXJz
ZShbdHJhdmVyc2VIYW5kbGVyXShjb25zdCBOZXR3b3JrQ2FjaGVLZXkmIGtleSwgY29uc3QgTmV0
d29ya0NhY2hlU3RvcmFnZTo6RW50cnkqIGVudHJ5KSB7CisgICAgbV9zdG9yYWdlLT50cmF2ZXJz
ZShbdHJhdmVyc2VIYW5kbGVyXShjb25zdCBOZXR3b3JrQ2FjaGVTdG9yYWdlOjpFbnRyeSogZW50
cnkpIHsKICAgICAgICAgaWYgKCFlbnRyeSkgewogICAgICAgICAgICAgdHJhdmVyc2VIYW5kbGVy
KG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzk2LDcgKzM5OCw3IEBAIFN0cmlu
ZyBOZXR3b3JrQ2FjaGU6OmR1bXBGaWxlUGF0aCgpIGNvbnMKICAgICByZXR1cm4gV2ViQ29yZTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZS0+YmFzZURpcmVjdG9yeVBhdGgoKSwg
ImR1bXAuanNvbiIpOwogfQogCi1zdGF0aWMgYm9vbCBlbnRyeUFzSlNPTihTdHJpbmdCdWlsZGVy
JiBqc29uLCBjb25zdCBOZXR3b3JrQ2FjaGVLZXkmIGtleSwgY29uc3QgTmV0d29ya0NhY2hlU3Rv
cmFnZTo6RW50cnkmIGVudHJ5KQorc3RhdGljIGJvb2wgZW50cnlBc0pTT04oU3RyaW5nQnVpbGRl
ciYganNvbiwgY29uc3QgTmV0d29ya0NhY2hlU3RvcmFnZTo6RW50cnkmIGVudHJ5KQogewogICAg
IE5ldHdvcmtDYWNoZURlY29kZXIgZGVjb2RlcihlbnRyeS5oZWFkZXIuZGF0YSgpLCBlbnRyeS5o
ZWFkZXIuc2l6ZSgpKTsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIGNhY2hlZFJlc3Bv
bnNlOwpAQCAtNDA0LDEwICs0MDYsMTAgQEAgc3RhdGljIGJvb2wgZW50cnlBc0pTT04oU3RyaW5n
QnVpbGRlciYgagogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAganNvbi5hcHBlbmQoIntcbiIp
OwogICAgIGpzb24uYXBwZW5kKCJcImhhc2hcIjogIik7Ci0gICAgSlNDOjphcHBlbmRRdW90ZWRK
U09OU3RyaW5nVG9CdWlsZGVyKGpzb24sIGtleS5oYXNoQXNTdHJpbmcoKSk7CisgICAgSlNDOjph
cHBlbmRRdW90ZWRKU09OU3RyaW5nVG9CdWlsZGVyKGpzb24sIGVudHJ5LmtleS5oYXNoQXNTdHJp
bmcoKSk7CiAgICAganNvbi5hcHBlbmQoIixcbiIpOwogICAgIGpzb24uYXBwZW5kKCJcInBhcnRp
dGlvblwiOiAiKTsKLSAgICBKU0M6OmFwcGVuZFF1b3RlZEpTT05TdHJpbmdUb0J1aWxkZXIoanNv
biwga2V5LnBhcnRpdGlvbigpKTsKKyAgICBKU0M6OmFwcGVuZFF1b3RlZEpTT05TdHJpbmdUb0J1
aWxkZXIoanNvbiwgZW50cnkua2V5LnBhcnRpdGlvbigpKTsKICAgICBqc29uLmFwcGVuZCgiLFxu
Iik7CiAgICAganNvbi5hcHBlbmQoIlwidGltZXN0YW1wXCI6ICIpOwogICAgIGpzb24uYXBwZW5k
TnVtYmVyKGVudHJ5LnRpbWVTdGFtcC5jb3VudCgpKTsKQEAgLTQzOSw3ICs0NDEsNyBAQCB2b2lk
IE5ldHdvcmtDYWNoZTo6ZHVtcENvbnRlbnRzVG9GaWxlKCkKICAgICBpZiAoIWR1bXBGaWxlSGFu
ZGxlKQogICAgICAgICByZXR1cm47CiAgICAgV2ViQ29yZTo6d3JpdGVUb0ZpbGUoZHVtcEZpbGVI
YW5kbGUsICJbXG4iLCAyKTsKLSAgICBtX3N0b3JhZ2UtPnRyYXZlcnNlKFtkdW1wRmlsZUhhbmRs
ZV0oY29uc3QgTmV0d29ya0NhY2hlS2V5JiBrZXksIGNvbnN0IE5ldHdvcmtDYWNoZVN0b3JhZ2U6
OkVudHJ5KiBlbnRyeSkgeworICAgIG1fc3RvcmFnZS0+dHJhdmVyc2UoW2R1bXBGaWxlSGFuZGxl
XShjb25zdCBOZXR3b3JrQ2FjaGVTdG9yYWdlOjpFbnRyeSogZW50cnkpIHsKICAgICAgICAgaWYg
KCFlbnRyeSkgewogICAgICAgICAgICAgV2ViQ29yZTo6d3JpdGVUb0ZpbGUoZHVtcEZpbGVIYW5k
bGUsICJ7fVxuXVxuIiwgNSk7CiAgICAgICAgICAgICBhdXRvIGhhbmRsZSA9IGR1bXBGaWxlSGFu
ZGxlOwpAQCAtNDQ3LDcgKzQ0OSw3IEBAIHZvaWQgTmV0d29ya0NhY2hlOjpkdW1wQ29udGVudHNU
b0ZpbGUoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIFN0cmluZ0J1
aWxkZXIganNvbjsKLSAgICAgICAgaWYgKCFlbnRyeUFzSlNPTihqc29uLCBrZXksICplbnRyeSkp
CisgICAgICAgIGlmICghZW50cnlBc0pTT04oanNvbiwgKmVudHJ5KSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAganNvbi5hcHBlbmQoIixcbiIpOwogICAgICAgICBhdXRvIHdyaXRlRGF0
YSA9IGpzb24udG9TdHJpbmcoKS51dGY4KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5jcHAJKHJldmlzaW9u
IDE4MDkzMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUtleS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDE1IEBAIE5ldHdvcmtDYWNo
ZUtleTo6TmV0d29ya0NhY2hlS2V5KGNvbnN0IFMKIHsKIH0KIAorTmV0d29ya0NhY2hlS2V5JiBO
ZXR3b3JrQ2FjaGVLZXk6Om9wZXJhdG9yPShjb25zdCBOZXR3b3JrQ2FjaGVLZXkmIG90aGVyKQor
eworICAgIG1fbWV0aG9kID0gb3RoZXIubV9tZXRob2QuaXNvbGF0ZWRDb3B5KCk7CisgICAgbV9w
YXJ0aXRpb24gPSBvdGhlci5tX3BhcnRpdGlvbi5pc29sYXRlZENvcHkoKTsKKyAgICBtX2lkZW50
aWZpZXIgPSBvdGhlci5tX2lkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCk7CisgICAgbV9oYXNoID0g
b3RoZXIubV9oYXNoOworICAgIHJldHVybiAqdGhpczsKK30KKwogc3RhdGljIHZvaWQgaGFzaFN0
cmluZyhNRDUmIG1kNSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7CiAgICAgY29uc3QgdWludDhf
dCB6ZXJvID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUtleS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUtleS5oCShyZXZpc2lvbiAxODA5MzEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVLZXkuaAkod29ya2luZyBj
b3B5KQpAQCAtNDUsNiArNDUsMTAgQEAgcHVibGljOgogICAgIE5ldHdvcmtDYWNoZUtleShOZXR3
b3JrQ2FjaGVLZXkmJik7CiAgICAgTmV0d29ya0NhY2hlS2V5KGNvbnN0IFN0cmluZyYgbWV0aG9k
LCBjb25zdCBTdHJpbmcmIHBhcnRpdGlvbiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKIAor
ICAgIE5ldHdvcmtDYWNoZUtleSYgb3BlcmF0b3I9KGNvbnN0IE5ldHdvcmtDYWNoZUtleSYpOwor
CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXIuaXNOdWxsKCk7
IH0KKwogICAgIGNvbnN0IFN0cmluZyYgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9tZXRob2Q7
IH0KICAgICBjb25zdCBTdHJpbmcmIHBhcnRpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFydGl0
aW9uOyB9CiAgICAgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudGlmaWVyOyB9CkBAIC02Niw3ICs3MCw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBI
YXNoVHlwZSBjb21wdXRlSGFzaCgpIGNvbnN0OwotICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IE5l
dHdvcmtDYWNoZUtleSYpID0gZGVsZXRlOwogCiAgICAgU3RyaW5nIG1fbWV0aG9kOwogICAgIFN0
cmluZyBtX3BhcnRpdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgJKHJldmlzaW9uIDE4MDkz
MSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDYgKzEzNiw3IEBAIHB1YmxpYzoKICAgICB9
OwogCiAgICAgc3RydWN0IEVudHJ5IHsKKyAgICAgICAgTmV0d29ya0NhY2hlS2V5IGtleTsKICAg
ICAgICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lU3RhbXA7CiAgICAgICAgIERhdGEg
aGVhZGVyOwogICAgICAgICBEYXRhIGJvZHk7CkBAIC0xNDUsMTEgKzE0NiwxMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZXRyaWV2ZShjb25zdCBOZXR3b3JrQ2FjaGVLZXkmLCB1bnNpZ25lZCBwcmlv
cml0eSwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKIAogICAgIHR5cGVkZWYgc3RkOjpm
dW5jdGlvbjx2b2lkIChib29sIHN1Y2Nlc3MsIGNvbnN0IERhdGEmIG1hcHBlZEJvZHkpPiBTdG9y
ZUNvbXBsZXRpb25IYW5kbGVyOwotICAgIHZvaWQgc3RvcmUoY29uc3QgTmV0d29ya0NhY2hlS2V5
JiwgY29uc3QgRW50cnkmLCBTdG9yZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgdXBk
YXRlKGNvbnN0IE5ldHdvcmtDYWNoZUtleSYsIGNvbnN0IEVudHJ5JiB1cGRhdGVFbnRyeSwgY29u
c3QgRW50cnkmIGV4aXN0aW5nRW50cnksIFN0b3JlQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAg
dm9pZCBzdG9yZShjb25zdCBFbnRyeSYsIFN0b3JlQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAg
dm9pZCB1cGRhdGUoY29uc3QgRW50cnkmIHVwZGF0ZUVudHJ5LCBjb25zdCBFbnRyeSYgZXhpc3Rp
bmdFbnRyeSwgU3RvcmVDb21wbGV0aW9uSGFuZGxlciYmKTsKIAogICAgIC8vIE51bGwgZW50cnkg
c2lnbmFscyBlbmQuCi0gICAgdm9pZCB0cmF2ZXJzZShzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0
IE5ldHdvcmtDYWNoZUtleSYsIGNvbnN0IEVudHJ5Kik+JiYpOworICAgIHZvaWQgdHJhdmVyc2Uo
c3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBFbnRyeSopPiYmKTsKIAogICAgIHZvaWQgc2V0TWF4
aW11bVNpemUoc2l6ZV90KTsKICAgICB2b2lkIGNsZWFyKCk7CkBAIC0xNzYsNyArMTc3LDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ1JlYWRPcGVyYXRpb25zKCk7CiAKICAg
ICBzdHJ1Y3QgV3JpdGVPcGVyYXRpb24gewotICAgICAgICBOZXR3b3JrQ2FjaGVLZXkga2V5Owog
ICAgICAgICBFbnRyeSBlbnRyeTsKICAgICAgICAgT3B0aW9uYWw8RW50cnk+IGV4aXN0aW5nRW50
cnk7CiAgICAgICAgIFN0b3JlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXI7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZUNvY29hLm1tCShyZXZpc2lvbiAxODA5MzEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlQ29j
b2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwMSw3ICszMDEsOCBAQCBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtDYWNoZVN0b3JhCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAotICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtDYWNoZVN0b3JhZ2U6OkVudHJ5
PihOZXR3b3JrQ2FjaGVTdG9yYWdlOjpFbnRyeSB7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrQ2FjaGVTdG9yYWdlOjpFbnRyeT4obmV3IE5ldHdvcmtDYWNoZVN0b3JhZ2U6OkVu
dHJ5IHsKKyAgICAgICAgbWV0YURhdGEua2V5LAogICAgICAgICBtZXRhRGF0YS50aW1lU3RhbXAs
CiAgICAgICAgIGhlYWRlckRhdGEsCiAgICAgICAgIE5ldHdvcmtDYWNoZVN0b3JhZ2U6OkRhdGEg
eyBib2R5RGF0YSwgTmV0d29ya0NhY2hlU3RvcmFnZTo6RGF0YTo6QmFja2luZzo6TWFwIH0KQEAg
LTMyNSw5ICszMjYsOSBAQCBzdGF0aWMgRGlzcGF0Y2hQdHI8ZGlzcGF0Y2hfZGF0YV90PiBlbmNv
CiAgICAgcmV0dXJuIGFkb3B0RGlzcGF0Y2goZGlzcGF0Y2hfZGF0YV9jcmVhdGUoZW5jb2Rlci5i
dWZmZXIoKSwgZW5jb2Rlci5idWZmZXJTaXplKCksIG51bGxwdHIsIERJU1BBVENIX0RBVEFfREVT
VFJVQ1RPUl9ERUZBVUxUKSk7CiB9CiAKLXN0YXRpYyBEaXNwYXRjaFB0cjxkaXNwYXRjaF9kYXRh
X3Q+IGVuY29kZUVudHJ5SGVhZGVyKGNvbnN0IE5ldHdvcmtDYWNoZUtleSYga2V5LCBjb25zdCBO
ZXR3b3JrQ2FjaGVTdG9yYWdlOjpFbnRyeSYgZW50cnkpCitzdGF0aWMgRGlzcGF0Y2hQdHI8ZGlz
cGF0Y2hfZGF0YV90PiBlbmNvZGVFbnRyeUhlYWRlcihjb25zdCBOZXR3b3JrQ2FjaGVTdG9yYWdl
OjpFbnRyeSYgZW50cnkpCiB7Ci0gICAgRW50cnlNZXRhRGF0YSBtZXRhRGF0YShrZXkpOworICAg
IEVudHJ5TWV0YURhdGEgbWV0YURhdGEoZW50cnkua2V5KTsKICAgICBtZXRhRGF0YS50aW1lU3Rh
bXAgPSBlbnRyeS50aW1lU3RhbXA7CiAgICAgbWV0YURhdGEuaGVhZGVyQ2hlY2tzdW0gPSBoYXNo
RGF0YShlbnRyeS5oZWFkZXIuZGlzcGF0Y2hEYXRhKCkpOwogICAgIG1ldGFEYXRhLmhlYWRlclNp
emUgPSBlbnRyeS5oZWFkZXIuc2l6ZSgpOwpAQCAtNDIxLDcgKzQyMiw3IEBAIHZvaWQgTmV0d29y
a0NhY2hlU3RvcmFnZTo6ZGlzcGF0Y2hQZW5kaW4KIHRlbXBsYXRlIDxjbGFzcyBUPiBib29sIHJl
dHJpZXZlRnJvbU1lbW9yeShjb25zdCBUJiBvcGVyYXRpb25zLCBjb25zdCBOZXR3b3JrQ2FjaGVL
ZXkmIGtleSwgTmV0d29ya0NhY2hlU3RvcmFnZTo6UmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgZm9yIChhdXRvJiBvcGVyYXRpb24gOiBvcGVyYXRp
b25zKSB7Ci0gICAgICAgIGlmIChvcGVyYXRpb24tPmtleSA9PSBrZXkpIHsKKyAgICAgICAgaWYg
KG9wZXJhdGlvbi0+ZW50cnkua2V5ID09IGtleSkgewogICAgICAgICAgICAgTE9HKE5ldHdvcmtD
YWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIGZvdW5kIHdyaXRlIG9wZXJhdGlvbiBpbiBw
cm9ncmVzcyIpOwogICAgICAgICAgICAgYXV0byBlbnRyeSA9IG9wZXJhdGlvbi0+ZW50cnk7CiAg
ICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbZW50
cnksIGNvbXBsZXRpb25IYW5kbGVyXSB7CkBAIC00MzcsNiArNDM4LDcgQEAgdm9pZCBOZXR3b3Jr
Q2FjaGVTdG9yYWdlOjpyZXRyaWV2ZShjb25zdAogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAgICAgQVNTRVJUKHByaW9yaXR5IDw9IG1heGltdW1SZXRyaWV2ZVByaW9yaXR5KTsK
KyAgICBBU1NFUlQoIWtleS5pc051bGwoKSk7CiAKICAgICBpZiAoIW1fbWF4aW11bVNpemUpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CkBAIC00NTMsNDQgKzQ1NSw0NSBA
QCB2b2lkIE5ldHdvcmtDYWNoZVN0b3JhZ2U6OnJldHJpZXZlKGNvbnN0CiAgICAgaWYgKHJldHJp
ZXZlRnJvbU1lbW9yeShtX2FjdGl2ZVdyaXRlT3BlcmF0aW9ucywga2V5LCBjb21wbGV0aW9uSGFu
ZGxlcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGVuZGluZ1JlYWRPcGVyYXRpb25zQnlQ
cmlvcml0eVtwcmlvcml0eV0uYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UmVhZE9wZXJhdGlvbj4o
UmVhZE9wZXJhdGlvbiB7IGtleSwgV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSB9KSk7Cisg
ICAgbV9wZW5kaW5nUmVhZE9wZXJhdGlvbnNCeVByaW9yaXR5W3ByaW9yaXR5XS5hcHBlbmQobmV3
IFJlYWRPcGVyYXRpb24geyBrZXksIFdURjo6bW92ZShjb21wbGV0aW9uSGFuZGxlcikgfSk7CiAg
ICAgZGlzcGF0Y2hQZW5kaW5nUmVhZE9wZXJhdGlvbnMoKTsKIH0KIAotdm9pZCBOZXR3b3JrQ2Fj
aGVTdG9yYWdlOjpzdG9yZShjb25zdCBOZXR3b3JrQ2FjaGVLZXkmIGtleSwgY29uc3QgRW50cnkm
IGVudHJ5LCBTdG9yZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtDYWNoZVN0b3JhZ2U6OnN0b3JlKGNvbnN0IEVudHJ5JiBlbnRyeSwgU3RvcmVDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgQVNTRVJUKCFlbnRyeS5rZXkuaXNOdWxsKCkpOwogCiAgICAgaWYg
KCFtX21heGltdW1TaXplKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlLCBEYXRh
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byB3cml0ZU9wZXJhdGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8V3JpdGVPcGVyYXRpb24+KFdyaXRlT3BlcmF0aW9uIHsga2V5LCBl
bnRyeSwgeyB9LCBXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpIH0pOwotICAgIG1fcGVuZGlu
Z1dyaXRlT3BlcmF0aW9ucy5hcHBlbmQoV1RGOjptb3ZlKHdyaXRlT3BlcmF0aW9uKSk7CisgICAg
bV9wZW5kaW5nV3JpdGVPcGVyYXRpb25zLmFwcGVuZChuZXcgV3JpdGVPcGVyYXRpb24geyBlbnRy
eSwgeyB9LCBXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpIH0pOwogCiAgICAgLy8gQWRkIGtl
eSB0byB0aGUgZmlsdGVyIGFscmVhZHkgaGVyZSBhcyB3ZSBkbyBsb29rdXBzIGZyb20gdGhlIHBl
bmRpbmcgb3BlcmF0aW9ucyB0b28uCi0gICAgbV9jb250ZW50c0ZpbHRlci5hZGQoa2V5LnNob3J0
SGFzaCgpKTsKKyAgICBtX2NvbnRlbnRzRmlsdGVyLmFkZChlbnRyeS5rZXkuc2hvcnRIYXNoKCkp
OwogCiAgICAgZGlzcGF0Y2hQZW5kaW5nV3JpdGVPcGVyYXRpb25zKCk7CiB9CiAKLXZvaWQgTmV0
d29ya0NhY2hlU3RvcmFnZTo6dXBkYXRlKGNvbnN0IE5ldHdvcmtDYWNoZUtleSYga2V5LCBjb25z
dCBFbnRyeSYgdXBkYXRlRW50cnksIGNvbnN0IEVudHJ5JiBleGlzdGluZ0VudHJ5LCBTdG9yZUNv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDYWNoZVN0
b3JhZ2U6OnVwZGF0ZShjb25zdCBFbnRyeSYgdXBkYXRlRW50cnksIGNvbnN0IEVudHJ5JiBleGlz
dGluZ0VudHJ5LCBTdG9yZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQoIWV4aXN0aW5nRW50
cnkua2V5LmlzTnVsbCgpKTsKKyAgICBBU1NFUlQoZXhpc3RpbmdFbnRyeS5rZXkgPT0gdXBkYXRl
RW50cnkua2V5KTsKIAogICAgIGlmICghbV9tYXhpbXVtU2l6ZSkgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihmYWxzZSwgRGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGF1dG8gd3JpdGVPcGVyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFdyaXRlT3BlcmF0aW9uPihX
cml0ZU9wZXJhdGlvbiB7IGtleSwgdXBkYXRlRW50cnksIGV4aXN0aW5nRW50cnksIFdURjo6bW92
ZShjb21wbGV0aW9uSGFuZGxlcikgfSk7Ci0gICAgbV9wZW5kaW5nV3JpdGVPcGVyYXRpb25zLmFw
cGVuZChXVEY6Om1vdmUod3JpdGVPcGVyYXRpb24pKTsKKyAgICBtX3BlbmRpbmdXcml0ZU9wZXJh
dGlvbnMuYXBwZW5kKG5ldyBXcml0ZU9wZXJhdGlvbiB7IHVwZGF0ZUVudHJ5LCBleGlzdGluZ0Vu
dHJ5LCBXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpIH0pOwogCiAgICAgZGlzcGF0Y2hQZW5k
aW5nV3JpdGVPcGVyYXRpb25zKCk7CiB9CiAKLXZvaWQgTmV0d29ya0NhY2hlU3RvcmFnZTo6dHJh
dmVyc2Uoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBOZXR3b3JrQ2FjaGVLZXkmLCBjb25zdCBF
bnRyeSopPiYmIHRyYXZlcnNlSGFuZGxlcikKK3ZvaWQgTmV0d29ya0NhY2hlU3RvcmFnZTo6dHJh
dmVyc2Uoc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBFbnRyeSopPiYmIHRyYXZlcnNlSGFuZGxl
cikKIHsKICAgICBTdHJpbmdDYXB0dXJlIGNhY2hlUGF0aENhcHR1cmUobV9kaXJlY3RvcnlQYXRo
KTsKICAgICBkaXNwYXRjaF9hc3luYyhtX2lvUXVldWUuZ2V0KCksIFt0aGlzLCBjYWNoZVBhdGhD
YXB0dXJlLCB0cmF2ZXJzZUhhbmRsZXJdIHsKQEAgLTUwNCw4ICs1MDcsOCBAQCB2b2lkIE5ldHdv
cmtDYWNoZVN0b3JhZ2U6OnRyYXZlcnNlKHN0ZDo6CiAgICAgICAgICAgICAgICAgRW50cnlNZXRh
RGF0YSBtZXRhRGF0YTsKICAgICAgICAgICAgICAgICBOZXR3b3JrQ2FjaGVTdG9yYWdlOjpEYXRh
IGhlYWRlckRhdGE7CiAgICAgICAgICAgICAgICAgaWYgKGRlY29kZUVudHJ5SGVhZGVyKGZpbGVE
YXRhLCBtZXRhRGF0YSwgaGVhZGVyRGF0YSkpIHsKLSAgICAgICAgICAgICAgICAgICAgRW50cnkg
ZW50cnkgeyBtZXRhRGF0YS50aW1lU3RhbXAsIGhlYWRlckRhdGEsIERhdGEoKSB9OwotICAgICAg
ICAgICAgICAgICAgICB0cmF2ZXJzZUhhbmRsZXIobWV0YURhdGEua2V5LCAmZW50cnkpOworICAg
ICAgICAgICAgICAgICAgICBFbnRyeSBlbnRyeSB7IG1ldGFEYXRhLmtleSwgbWV0YURhdGEudGlt
ZVN0YW1wLCBoZWFkZXJEYXRhLCBEYXRhKCkgfTsKKyAgICAgICAgICAgICAgICAgICAgdHJhdmVy
c2VIYW5kbGVyKCZlbnRyeSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlm
IChkb25lKQogICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaF9zZW1hcGhvcmVfc2lnbmFsKHNl
bWFwaG9yZS5nZXQoKSk7CkBAIC01MTMsNyArNTE2LDcgQEAgdm9pZCBOZXR3b3JrQ2FjaGVTdG9y
YWdlOjp0cmF2ZXJzZShzdGQ6OgogICAgICAgICAgICAgZGlzcGF0Y2hfc2VtYXBob3JlX3dhaXQo
c2VtYXBob3JlLmdldCgpLCBESVNQQVRDSF9USU1FX0ZPUkVWRVIpOwogICAgICAgICB9KTsKICAg
ICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3RoaXMsIHRy
YXZlcnNlSGFuZGxlcl0gewotICAgICAgICAgICAgdHJhdmVyc2VIYW5kbGVyKHsgfSwgbnVsbHB0
cik7CisgICAgICAgICAgICB0cmF2ZXJzZUhhbmRsZXIobnVsbHB0cik7CiAgICAgICAgIH0pOwog
ICAgIH0pOwogfQpAQCAtNTMzLDcgKzUzNiw3IEBAIHZvaWQgTmV0d29ya0NhY2hlU3RvcmFnZTo6
ZGlzcGF0Y2hQZW5kaW4KICAgICAgICAgYXV0byYgd3JpdGUgPSAqd3JpdGVPcGVyYXRpb247CiAg
ICAgICAgIG1fYWN0aXZlV3JpdGVPcGVyYXRpb25zLmFkZChXVEY6Om1vdmUod3JpdGVPcGVyYXRp
b24pKTsKIAotICAgICAgICBpZiAod3JpdGUuZXhpc3RpbmdFbnRyeSAmJiBtX2NvbnRlbnRzRmls
dGVyLm1heUNvbnRhaW4od3JpdGUua2V5LnNob3J0SGFzaCgpKSkgeworICAgICAgICBpZiAod3Jp
dGUuZXhpc3RpbmdFbnRyeSAmJiBtX2NvbnRlbnRzRmlsdGVyLm1heUNvbnRhaW4od3JpdGUuZW50
cnkua2V5LnNob3J0SGFzaCgpKSkgewogICAgICAgICAgICAgZGlzcGF0Y2hIZWFkZXJXcml0ZU9w
ZXJhdGlvbih3cml0ZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtNTQ2
LDI0ICs1NDksMjQgQEAgdm9pZCBOZXR3b3JrQ2FjaGVTdG9yYWdlOjpkaXNwYXRjaEZ1bGxXcgog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgQVNTRVJUKG1fYWN0aXZlV3JpdGVP
cGVyYXRpb25zLmNvbnRhaW5zKCZ3cml0ZSkpOwogCi0gICAgaWYgKCFtX2NvbnRlbnRzRmlsdGVy
Lm1heUNvbnRhaW4od3JpdGUua2V5LnNob3J0SGFzaCgpKSkKLSAgICAgICAgbV9jb250ZW50c0Zp
bHRlci5hZGQod3JpdGUua2V5LnNob3J0SGFzaCgpKTsKKyAgICBpZiAoIW1fY29udGVudHNGaWx0
ZXIubWF5Q29udGFpbih3cml0ZS5lbnRyeS5rZXkuc2hvcnRIYXNoKCkpKQorICAgICAgICBtX2Nv
bnRlbnRzRmlsdGVyLmFkZCh3cml0ZS5lbnRyeS5rZXkuc2hvcnRIYXNoKCkpOwogCiAgICAgU3Ry
aW5nQ2FwdHVyZSBjYWNoZVBhdGhDYXB0dXJlKG1fZGlyZWN0b3J5UGF0aCk7CiAgICAgZGlzcGF0
Y2hfYXN5bmMobV9iYWNrZ3JvdW5kSU9RdWV1ZS5nZXQoKSwgW3RoaXMsICZ3cml0ZSwgY2FjaGVQ
YXRoQ2FwdHVyZV0gewotICAgICAgICBhdXRvIGVuY29kZWRIZWFkZXIgPSBlbmNvZGVFbnRyeUhl
YWRlcih3cml0ZS5rZXksIHdyaXRlLmVudHJ5KTsKKyAgICAgICAgYXV0byBlbmNvZGVkSGVhZGVy
ID0gZW5jb2RlRW50cnlIZWFkZXIod3JpdGUuZW50cnkpOwogICAgICAgICBhdXRvIHdyaXRlRGF0
YSA9IGFkb3B0RGlzcGF0Y2goZGlzcGF0Y2hfZGF0YV9jcmVhdGVfY29uY2F0KGVuY29kZWRIZWFk
ZXIuZ2V0KCksIHdyaXRlLmVudHJ5LmJvZHkuZGlzcGF0Y2hEYXRhKCkpKTsKIAogICAgICAgICBz
aXplX3QgYm9keU9mZnNldCA9IGRpc3BhdGNoX2RhdGFfZ2V0X3NpemUoZW5jb2RlZEhlYWRlci5n
ZXQoKSk7CiAKICAgICAgICAgaW50IGZkOwotICAgICAgICBhdXRvIGNoYW5uZWwgPSBvcGVuRmls
ZUZvcktleSh3cml0ZS5rZXksIEZpbGVPcGVuVHlwZTo6Q3JlYXRlLCBjYWNoZVBhdGhDYXB0dXJl
LnN0cmluZygpLCBmZCk7CisgICAgICAgIGF1dG8gY2hhbm5lbCA9IG9wZW5GaWxlRm9yS2V5KHdy
aXRlLmVudHJ5LmtleSwgRmlsZU9wZW5UeXBlOjpDcmVhdGUsIGNhY2hlUGF0aENhcHR1cmUuc3Ry
aW5nKCksIGZkKTsKICAgICAgICAgZGlzcGF0Y2hfaW9fd3JpdGUoY2hhbm5lbC5nZXQoKSwgMCwg
d3JpdGVEYXRhLmdldCgpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbdGhpcywgJndyaXRl
LCBmZCwgYm9keU9mZnNldF0oYm9vbCBkb25lLCBkaXNwYXRjaF9kYXRhX3QsIGludCBlcnJvcikg
ewogICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChkb25lLCBkb25lKTsKICAgICAgICAgICAgIExP
RyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSB3cml0ZSBjb21wbGV0ZSBl
cnJvcj0lZCIsIGVycm9yKTsKICAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAg
ICAgIGlmIChtX2NvbnRlbnRzRmlsdGVyLm1heUNvbnRhaW4od3JpdGUua2V5LnNob3J0SGFzaCgp
KSkKLSAgICAgICAgICAgICAgICAgICAgbV9jb250ZW50c0ZpbHRlci5yZW1vdmUod3JpdGUua2V5
LnNob3J0SGFzaCgpKTsKKyAgICAgICAgICAgICAgICBpZiAobV9jb250ZW50c0ZpbHRlci5tYXlD
b250YWluKHdyaXRlLmVudHJ5LmtleS5zaG9ydEhhc2goKSkpCisgICAgICAgICAgICAgICAgICAg
IG1fY29udGVudHNGaWx0ZXIucmVtb3ZlKHdyaXRlLmVudHJ5LmtleS5zaG9ydEhhc2goKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBzaXplX3QgYm9keVNpemUgPSB3cml0ZS5lbnRyeS5i
b2R5LnNpemUoKTsKICAgICAgICAgICAgIHNpemVfdCB0b3RhbFNpemUgPSBib2R5T2Zmc2V0ICsg
Ym9keVNpemU7CkBAIC01OTAsMTMgKzU5MywxMyBAQCB2b2lkIE5ldHdvcmtDYWNoZVN0b3JhZ2U6
OmRpc3BhdGNoSGVhZGVyCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NF
UlQod3JpdGUuZXhpc3RpbmdFbnRyeSk7CiAgICAgQVNTRVJUKG1fYWN0aXZlV3JpdGVPcGVyYXRp
b25zLmNvbnRhaW5zKCZ3cml0ZSkpOwotICAgIEFTU0VSVChtX2NvbnRlbnRzRmlsdGVyLm1heUNv
bnRhaW4od3JpdGUua2V5LnNob3J0SGFzaCgpKSk7CisgICAgQVNTRVJUKG1fY29udGVudHNGaWx0
ZXIubWF5Q29udGFpbih3cml0ZS5lbnRyeS5rZXkuc2hvcnRIYXNoKCkpKTsKIAogICAgIC8vIFRy
eSB0byB1cGRhdGUgdGhlIGhlYWRlciBvZiBhbiBleGlzdGluZyBlbnRyeS4KICAgICBTdHJpbmdD
YXB0dXJlIGNhY2hlUGF0aENhcHR1cmUobV9kaXJlY3RvcnlQYXRoKTsKICAgICBkaXNwYXRjaF9h
c3luYyhtX2JhY2tncm91bmRJT1F1ZXVlLmdldCgpLCBbdGhpcywgJndyaXRlLCBjYWNoZVBhdGhD
YXB0dXJlXSB7Ci0gICAgICAgIGF1dG8gaGVhZGVyRGF0YSA9IGVuY29kZUVudHJ5SGVhZGVyKHdy
aXRlLmtleSwgd3JpdGUuZW50cnkpOwotICAgICAgICBhdXRvIGV4aXN0aW5nSGVhZGVyRGF0YSA9
IGVuY29kZUVudHJ5SGVhZGVyKHdyaXRlLmtleSwgd3JpdGUuZXhpc3RpbmdFbnRyeS52YWx1ZSgp
KTsKKyAgICAgICAgYXV0byBoZWFkZXJEYXRhID0gZW5jb2RlRW50cnlIZWFkZXIod3JpdGUuZW50
cnkpOworICAgICAgICBhdXRvIGV4aXN0aW5nSGVhZGVyRGF0YSA9IGVuY29kZUVudHJ5SGVhZGVy
KHdyaXRlLmV4aXN0aW5nRW50cnkudmFsdWUoKSk7CiAKICAgICAgICAgYm9vbCBwYWdlUm91bmRl
ZEhlYWRlclNpemVDaGFuZ2VkID0gZGlzcGF0Y2hfZGF0YV9nZXRfc2l6ZShoZWFkZXJEYXRhLmdl
dCgpKSAhPSBkaXNwYXRjaF9kYXRhX2dldF9zaXplKGV4aXN0aW5nSGVhZGVyRGF0YS5nZXQoKSk7
CiAgICAgICAgIGlmIChwYWdlUm91bmRlZEhlYWRlclNpemVDaGFuZ2VkKSB7CkBAIC02MDgsMTMg
KzYxMSwxMyBAQCB2b2lkIE5ldHdvcmtDYWNoZVN0b3JhZ2U6OmRpc3BhdGNoSGVhZGVyCiAgICAg
ICAgIH0KIAogICAgICAgICBpbnQgZmQ7Ci0gICAgICAgIGF1dG8gY2hhbm5lbCA9IG9wZW5GaWxl
Rm9yS2V5KHdyaXRlLmtleSwgRmlsZU9wZW5UeXBlOjpXcml0ZSwgY2FjaGVQYXRoQ2FwdHVyZS5z
dHJpbmcoKSwgZmQpOworICAgICAgICBhdXRvIGNoYW5uZWwgPSBvcGVuRmlsZUZvcktleSh3cml0
ZS5lbnRyeS5rZXksIEZpbGVPcGVuVHlwZTo6V3JpdGUsIGNhY2hlUGF0aENhcHR1cmUuc3RyaW5n
KCksIGZkKTsKICAgICAgICAgZGlzcGF0Y2hfaW9fd3JpdGUoY2hhbm5lbC5nZXQoKSwgMCwgaGVh
ZGVyRGF0YS5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3RoaXMsICZ3cml0ZV0o
Ym9vbCBkb25lLCBkaXNwYXRjaF9kYXRhX3QsIGludCBlcnJvcikgewogICAgICAgICAgICAgQVNT
RVJUX1VOVVNFRChkb25lLCBkb25lKTsKICAgICAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9y
YWdlLCAiKE5ldHdvcmtQcm9jZXNzKSB1cGRhdGUgY29tcGxldGUgZXJyb3I9JWQiLCBlcnJvcik7
CiAKICAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICByZW1vdmVFbnRyeSh3
cml0ZS5rZXkpOworICAgICAgICAgICAgICAgIHJlbW92ZUVudHJ5KHdyaXRlLmVudHJ5LmtleSk7
CiAKICAgICAgICAgICAgIHdyaXRlLmNvbXBsZXRpb25IYW5kbGVyKCFlcnJvciwgRGF0YSgpKTsK
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>