<?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>137200</bug_id>
          
          <creation_ts>2014-09-28 16:25:39 -0700</creation_ts>
          <short_desc>Remove RefPtrHashMap</short_desc>
          <delta_ts>2014-12-21 17:28:58 -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>New Bugs</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1037812</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-09-28 16:25:39 -0700</bug_when>
    <thetext>Remove RefPtrHashMap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037815</commentid>
    <comment_count>1</comment_count>
      <attachid>238831</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-09-28 16:32:02 -0700</bug_when>
    <thetext>Created attachment 238831
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037816</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-28 16:33:22 -0700</bug_when>
    <thetext>Attachment 238831 did not pass style-queue:


ERROR: Source/WTF/wtf/HashMap.h:431:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 4 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>1038262</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-09-30 11:01:50 -0700</bug_when>
    <thetext>Haters gonna hate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1039238</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-10-03 09:47:33 -0700</bug_when>
    <thetext>Fixed in http://trac.webkit.org/changeset/174268.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1057338</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-12-21 17:28:58 -0800</bug_when>
    <thetext>*** Bug 115905 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238831</attachid>
            <date>2014-09-28 16:32:02 -0700</date>
            <delta_ts>2014-09-28 17:55:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137200-20140928163202.patch</filename>
            <type>text/plain</type>
            <size>29309</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzQwNDYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE0LTA5LTI4ICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFJlZlB0ckhhc2hNYXAKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzIwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhc2hNYXAgbm93IGhhcyBhbGwgdGhl
IGZlYXR1cmVzIG9mIHRoZSBSZWZQdHIgc3BlY2lhbGl6YXRpb24gb2YgSGFzaE1hcAorICAgICAg
ICAod2hpY2ggbGl2ZWQgaW4gUmVmUHRySGFzaE1hcC5oKSBhbmQgaXMgaW4gZmFjdCBtb3JlIGVm
ZmljaWVudCB3aGVuIG1vdmluZworICAgICAgICBpdGVtcyBpbnRvIGl0LiBGb3IgaW5zdGFuY2U6
CisKKyAgICAgICAgRm9yIEhhc2hNYXA8UmVmUHRyPEZvbz4sIEJhcj4gbWFwOgorCisgICAgICAg
IFJlZlB0cjxGb28+IGZvbyA9IC4uLjsKKyAgICAgICAgbWFwLmFkZChXVEY6Om1vdmUoZm9vKSwg
QmFyKCkpOworCisgICAgICAgIHdpbGwgbm93IG5vdCBjYXVzZSBhIHJlZigpIC8gZGVyZWYoKSwg
YnV0IHdpbGwgc3VjY2Vzc2Z1bGx5IG1vdmUgdGhlIGl0ZW0gaW4KKyAgICAgICAgd2l0aG91dCBj
aHVybi4gVGhlIHNhbWUgaXMgdHJ1ZSBpZiBmb28ucmVsZWFzZSgpIHdhcyB1c2VkLgorCisgICAg
ICAgICogV1RGLnZjeHByb2ovV1RGLnZjeHByb2o6CisgICAgICAgICogV1RGLnZjeHByb2ovV1RG
LnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgIFJlbW92ZSByZWZlcmVu
Y2VzIHRvIFJlZlB0ckhhc2hNYXAuaC4KKworICAgICAgICAqIHd0Zi9SZWZQdHJIYXNoTWFwLmg6
IFJlbW92ZWQuCisKKyAgICAgICAgKiB3dGYvSGFzaE1hcC5oOgorICAgICAgICBSZW1vdmUgI2lu
Y2x1ZGUgb2YgUmVmUHRySGFzaE1hcC5oIGFuZCBhZGQgaW5saW5lR2V0IHRvIG1hdGNoIHRoZSBp
bnRlcmZhY2UKKyAgICAgICAgZXhwb3NlZCBieSB0aGUgUmVmUHRySGFzaE1hcCBzcGVjaWFsaXph
dGlvbi4KKwogMjAxNC0wOS0yNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJlcGxhY2UgT1NPYmplY3RQdHIgd2l0aCBSZXRhaW5QdHIvYWRvcHRPUwpJbmRleDogU291
cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCShyZXZpc2lvbiAxNzQwNDQpCisrKyBTb3VyY2UvV1RG
L1dURi52Y3hwcm9qL1dURi52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcsNyArMjU3LDYg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxSZWZDb3VudGVkLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcUmVmQ291bnRlZExlYWtDb3VudGVyLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcUmVmUHRyLmgiIC8+Ci0gICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlx3dGZcUmVmUHRySGFzaE1hcC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cd3RmXFJldGFpblB0ci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
d3RmXFJ1bkxvb3AuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxTYXR1cmF0
ZWRBcml0aG1ldGljLmgiIC8+CkluZGV4OiBTb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hw
cm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYudmN4
cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNzQwNDQpCisrKyBTb3VyY2UvV1RGL1dURi52Y3hwcm9q
L1dURi52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTU4Miw5ICs1ODIsNiBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXFJlZlB0ci5oIj4KICAgICAgIDxGaWx0ZXI+
d3RmPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
Llx3dGZcUmVmUHRySGFzaE1hcC5oIj4KLSAgICAgIDxGaWx0ZXI+d3RmPC9GaWx0ZXI+Ci0gICAg
PC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcUmV0YWluUHRyLmgi
PgogICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTc0MDQ1KQor
KysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjA0LDcgKzIwNCw2IEBACiAJCUE4QTQ3NDFBMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZD
b3VudGVkTGVha0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThBNDczMDExNTFBODI1QjAwNDEyM0ZGIC8qIFJlZkNvdW50ZWRMZWFrQ291
bnRlci5jcHAgKi87IH07CiAJCUE4QTQ3NDFCMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZDb3VudGVk
TGVha0NvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE4QTQ3MzAyMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIuaCAq
LzsgfTsKIAkJQThBNDc0MUMxNTFBODI1QjAwNDEyM0ZGIC8qIFJlZlB0ci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczMDMxNTFBODI1QjAwNDEy
M0ZGIC8qIFJlZlB0ci5oICovOyB9OwotCQlBOEE0NzQxRDE1MUE4MjVCMDA0MTIzRkYgLyogUmVm
UHRySGFzaE1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThBNDczMDQxNTFBODI1QjAwNDEyM0ZGIC8qIFJlZlB0ckhhc2hNYXAuaCAqLzsgfTsKIAkJ
QThBNDc0MUUxNTFBODI1QjAwNDEyM0ZGIC8qIFJldGFpblB0ci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDczMDUxNTFBODI1QjAwNDEyM0ZGIC8q
IFJldGFpblB0ci5oICovOyB9OwogCQlBOEE0NzQxRjE1MUE4MjVCMDA0MTIzRkYgLyogU2VnbWVu
dGVkVmVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEE0NzMwNjE1MUE4MjVCMDA0MTIzRkYgLyogU2VnbWVudGVkVmVjdG9yLmggKi87IH07CiAJ
CUE4QTQ3NDIwMTUxQTgyNUIwMDQxMjNGRiAvKiBTZW50aW5lbExpbmtlZExpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MzA3MTUxQTgyNUIw
MDQxMjNGRiAvKiBTZW50aW5lbExpbmtlZExpc3QuaCAqLzsgfTsKQEAgLTQ5Myw3ICs0OTIsNiBA
QAogCQlBOEE0NzMwMTE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZkNvdW50ZWRMZWFrQ291
bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QTQ3MzAyMTUxQTgyNUIw
MDQxMjNGRiAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVmQ291bnRlZExlYWtDb3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE4QTQ3MzAzMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZQdHIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVmUHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUE4QTQ3MzA0MTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZQdHJIYXNoTWFwLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZlB0ckhhc2hNYXAuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczMDUxNTFBODI1QjAwNDEyM0ZGIC8qIFJldGFpblB0ci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXRhaW5QdHIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczMDYxNTFBODI1QjAwNDEyM0ZGIC8qIFNlZ21lbnRl
ZFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWdtZW50ZWRWZWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDczMDcxNTFBODI1QjAwNDEy
M0ZGIC8qIFNlbnRpbmVsTGlua2VkTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZW50aW5lbExpbmtlZExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTgyMyw3ICs4MjEsNiBAQAogCQkJCUE4QTQ3MzAxMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZDb3Vu
dGVkTGVha0NvdW50ZXIuY3BwICovLAogCQkJCUE4QTQ3MzAyMTUxQTgyNUIwMDQxMjNGRiAvKiBS
ZWZDb3VudGVkTGVha0NvdW50ZXIuaCAqLywKIAkJCQlBOEE0NzMwMzE1MUE4MjVCMDA0MTIzRkYg
LyogUmVmUHRyLmggKi8sCi0JCQkJQThBNDczMDQxNTFBODI1QjAwNDEyM0ZGIC8qIFJlZlB0ckhh
c2hNYXAuaCAqLywKIAkJCQlBOEE0NzMwNTE1MUE4MjVCMDA0MTIzRkYgLyogUmV0YWluUHRyLmgg
Ki8sCiAJCQkJMkNERUQwRjExODExNUM4NTAwNERCQTcwIC8qIFJ1bkxvb3AuY3BwICovLAogCQkJ
CTJDREVEMEYyMTgxMTVDODUwMDREQkE3MCAvKiBSdW5Mb29wLmggKi8sCkBAIC0xMTE4LDcgKzEx
MTUsNiBAQAogCQkJCUE4QTQ3NDE5MTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZDb3VudGVkQXJyYXku
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDFCMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZDb3Vu
dGVkTGVha0NvdW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDFDMTUxQTgyNUIwMDQx
MjNGRiAvKiBSZWZQdHIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE4QTQ3NDFEMTUxQTgyNUIwMDQx
MjNGRiAvKiBSZWZQdHJIYXNoTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQxRTE1MUE4
MjVCMDA0MTIzRkYgLyogUmV0YWluUHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQ0RFRDBGNDE4
MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9vcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ2OTQxOTIx
NkVBQUY2RDAwMjRFMTQ2IC8qIFJ1bkxvb3BUaW1lci5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTc0MDQ0KQorKysgU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDYgQEAgc2V0KFdURl9IRUFE
RVJTCiAgICAgUmVmQ291bnRlZC5oCiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmgKICAgICBS
ZWZQdHIuaAotICAgIFJlZlB0ckhhc2hNYXAuaAogICAgIFJldGFpblB0ci5oCiAgICAgUnVuTG9v
cC5oCiAgICAgU0hBMS5oCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9IYXNoTWFwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvSGFzaE1hcC5oCShyZXZpc2lvbiAxNzQwNDQpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9IYXNoTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw2ICsxNDcsNyBAQCBw
dWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSyA9IEtleVR5cGU+IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBpdGVyYXRvcj46OnR5cGUgZmluZCh0eXBl
bmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEsg
PSBLZXlUeXBlPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwg
Y29uc3RfaXRlcmF0b3I+Ojp0eXBlIGZpbmQodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJU
eXBlKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLID0gS2V5VHlwZT4gdHlwZW5hbWUg
c3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFsdWUsIGJvb2w+Ojp0eXBlIGNvbnRhaW5z
KHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSkgY29uc3Q7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgSyA9IEtleVR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8
Sz46OnZhbHVlLCBNYXBwZWRQZWVrVHlwZT46OnR5cGUgaW5saW5lR2V0KHR5cGVuYW1lIEdldFB0
ckhlbHBlcjxLPjo6UHRyVHlwZSkgY29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSyA9IEtl
eVR5cGU+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBNYXBw
ZWRQZWVrVHlwZT46OnR5cGUgZ2V0KHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlwZSkg
Y29uc3Q7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSyA9IEtleVR5cGU+IHR5cGVuYW1lIHN0ZDo6
ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZhbHVlLCBib29sPjo6dHlwZSByZW1vdmUodHlwZW5h
bWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLID0g
S2V5VHlwZT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8SXNTbWFydFB0cjxLPjo6dmFsdWUsIE1h
cHBlZFR5cGU+Ojp0eXBlIHRha2UodHlwZW5hbWUgR2V0UHRySGVscGVyPEs+OjpQdHJUeXBlKTsK
QEAgLTQxNiw3ICs0MTcsNyBAQCBpbmxpbmUgYXV0byBIYXNoTWFwPFQsIFUsIFYsIFcsIFg+Ojpj
b250CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVu
YW1lIFcsIHR5cGVuYW1lIFg+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBLPgotaW5saW5lIGF1dG8gSGFz
aE1hcDxULCBVLCBWLCBXLCBYPjo6Z2V0KHR5cGVuYW1lIEdldFB0ckhlbHBlcjxLPjo6UHRyVHlw
ZSBrZXkpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPElzU21hcnRQdHI8Sz46OnZh
bHVlLCBNYXBwZWRQZWVrVHlwZT46OnR5cGUKK2lubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwgViwg
VywgWD46OmlubGluZUdldCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0clR5cGUga2V5KSBj
b25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2YWx1ZSwgTWFw
cGVkUGVla1R5cGU+Ojp0eXBlCiB7CiAgICAgS2V5VmFsdWVQYWlyVHlwZSogZW50cnkgPSBjb25z
dF9jYXN0PEhhc2hUYWJsZVR5cGUmPihtX2ltcGwpLnRlbXBsYXRlIGxvb2t1cDxIYXNoTWFwVHJh
bnNsYXRvcjxLZXlWYWx1ZVBhaXJUcmFpdHMsIEhhc2hGdW5jdGlvbnM+PihrZXkpOwogICAgIGlm
ICghZW50cnkpCkBAIC00MjYsNiArNDI3LDEzIEBAIGlubGluZSBhdXRvIEhhc2hNYXA8VCwgVSwg
ViwgVywgWD46OmdldCgKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KIHRlbXBsYXRlPHR5cGVuYW1lIEs+CithdXRv
IEhhc2hNYXA8VCwgVSwgViwgVywgWD46OmdldCh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46OlB0
clR5cGUga2V5KSBjb25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+
Ojp2YWx1ZSwgTWFwcGVkUGVla1R5cGU+Ojp0eXBlCit7CisgICAgcmV0dXJuIGlubGluZUdldChr
ZXkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0
eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgordGVtcGxhdGU8dHlwZW5hbWUgSz4KIGlubGluZSBhdXRv
IEhhc2hNYXA8VCwgVSwgViwgVywgWD46OnJlbW92ZSh0eXBlbmFtZSBHZXRQdHJIZWxwZXI8Sz46
OlB0clR5cGUga2V5KSAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxJc1NtYXJ0UHRyPEs+Ojp2
YWx1ZSwgYm9vbD46OnR5cGUKIHsKICAgICByZXR1cm4gcmVtb3ZlKGZpbmQoa2V5KSk7CkBAIC01
MjEsNiArNTI5LDQgQEAgaW5saW5lIHZvaWQgY29weVZhbHVlc1RvVmVjdG9yKGNvbnN0IEhhcwog
CiB1c2luZyBXVEY6Okhhc2hNYXA7CiAKLSNpbmNsdWRlIDx3dGYvUmVmUHRySGFzaE1hcC5oPgot
CiAjZW5kaWYgLyogV1RGX0hhc2hNYXBfaCAqLwpJbmRleDogU291cmNlL1dURi93dGYvUmVmUHRy
SGFzaE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1JlZlB0ckhhc2hNYXAuaAko
cmV2aXNpb24gMTc0MDQ0KQorKysgU291cmNlL1dURi93dGYvUmVmUHRySGFzaE1hcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgot
ICovCi0KLSNpZm5kZWYgUmVmUHRySGFzaE1hcF9oCi0jZGVmaW5lIFJlZlB0ckhhc2hNYXBfaAot
Ci1uYW1lc3BhY2UgV1RGIHsKLQotICAgIC8vIFRoaXMgc3BlY2lhbGl6YXRpb24gaXMgYSBjb3B5
IG9mIEhhc2hNYXAgZm9yIHVzZSB3aXRoIFJlZlB0ciBrZXlzLCB3aXRoIG92ZXJsb2FkZWQgZnVu
Y3Rpb25zCi0gICAgLy8gdG8gYWxsb3cgZm9yIGxvb2t1cCBieSBwb2ludGVyIGluc3RlYWQgb2Yg
UmVmUHRyLCBhdm9pZGluZyByZWYtY291bnQgY2h1cm4uCi0gICAgCi0gICAgIC8vIEZJWE1FOiBG
aW5kIGEgd2F5IHRvIGRvIHRoaXMgd2l0aCB0cmFpdHMgdGhhdCBkb2Vzbid0IHJlcXVpcmUgYSBj
b3B5IG9mIHRoZSBIYXNoTWFwIHRlbXBsYXRlLgotICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJh
aXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Ci0gICAgY2xhc3MgSGFzaE1hcDxSZWZQ
dHI8VD4sIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+
IHsKLSAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgcHJpdmF0ZToKLSAgICAg
ICAgdHlwZWRlZiBLZXlUcmFpdHNBcmcgS2V5VHJhaXRzOwotICAgICAgICB0eXBlZGVmIE1hcHBl
ZFRyYWl0c0FyZyBNYXBwZWRUcmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgS2V5VmFsdWVQYWlySGFz
aFRyYWl0czxLZXlUcmFpdHMsIE1hcHBlZFRyYWl0cz4gVmFsdWVUcmFpdHM7Ci0KLSAgICBwdWJs
aWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgS2V5VHJhaXRzOjpUcmFpdFR5cGUgS2V5VHlw
ZTsKLSAgICAgICAgdHlwZWRlZiBUKiBSYXdLZXlUeXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVu
YW1lIE1hcHBlZFRyYWl0czo6VHJhaXRUeXBlIE1hcHBlZFR5cGU7Ci0gICAgICAgIHR5cGVkZWYg
dHlwZW5hbWUgVmFsdWVUcmFpdHM6OlRyYWl0VHlwZSBWYWx1ZVR5cGU7Ci0KLSAgICBwcml2YXRl
OgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE1hcHBlZFRyYWl0czo6UGVla1R5cGUgTWFwcGVk
UGVla1R5cGU7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIEhhc2hBcmcgSGFzaEZ1bmN0aW9u
czsKLQotICAgICAgICB0eXBlZGVmIEhhc2hUYWJsZTxLZXlUeXBlLCBWYWx1ZVR5cGUsIEtleVZh
bHVlUGFpcktleUV4dHJhY3RvcjxWYWx1ZVR5cGU+LAotICAgICAgICAgICAgSGFzaEZ1bmN0aW9u
cywgVmFsdWVUcmFpdHMsIEtleVRyYWl0cz4gSGFzaFRhYmxlVHlwZTsKLQotICAgICAgICB0eXBl
ZGVmIEhhc2hNYXBUcmFuc2xhdG9yPFZhbHVlVHJhaXRzLCBIYXNoRnVuY3Rpb25zPgotICAgICAg
ICAgICAgVHJhbnNsYXRvcjsKLQotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBIYXNoVGFi
bGVJdGVyYXRvckFkYXB0ZXI8SGFzaFRhYmxlVHlwZSwgVmFsdWVUeXBlPiBpdGVyYXRvcjsKLSAg
ICAgICAgdHlwZWRlZiBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRhcHRlcjxIYXNoVGFibGVUeXBl
LCBWYWx1ZVR5cGU+IGNvbnN0X2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEhh
c2hUYWJsZVR5cGU6OkFkZFJlc3VsdCBBZGRSZXN1bHQ7Ci0KLSAgICAgICAgdm9pZCBzd2FwKEhh
c2hNYXAmKTsKLQotICAgICAgICBpbnQgc2l6ZSgpIGNvbnN0OwotICAgICAgICBpbnQgY2FwYWNp
dHkoKSBjb25zdDsKLSAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7Ci0KLSAgICAgICAgLy8g
aXRlcmF0b3JzIGl0ZXJhdGUgb3ZlciBwYWlycyBvZiBrZXlzIGFuZCB2YWx1ZXMKLSAgICAgICAg
aXRlcmF0b3IgYmVnaW4oKTsKLSAgICAgICAgaXRlcmF0b3IgZW5kKCk7Ci0gICAgICAgIGNvbnN0
X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNv
bnN0OwotCi0gICAgICAgIEl0ZXJhdG9yUmFuZ2U8dHlwZW5hbWUgaXRlcmF0b3I6OktleXM+IGtl
eXMoKSB7IHJldHVybiBtYWtlSXRlcmF0b3JSYW5nZShiZWdpbigpLmtleXMoKSwgZW5kKCkua2V5
cygpKTsgfQotICAgICAgICBjb25zdCBJdGVyYXRvclJhbmdlPHR5cGVuYW1lIGNvbnN0X2l0ZXJh
dG9yOjpLZXlzPiBrZXlzKCkgY29uc3QgeyByZXR1cm4gbWFrZUl0ZXJhdG9yUmFuZ2UoYmVnaW4o
KS5rZXlzKCksIGVuZCgpLmtleXMoKSk7IH0KLQotICAgICAgICBJdGVyYXRvclJhbmdlPHR5cGVu
YW1lIGl0ZXJhdG9yOjpWYWx1ZXM+IHZhbHVlcygpIHsgcmV0dXJuIG1ha2VJdGVyYXRvclJhbmdl
KGJlZ2luKCkudmFsdWVzKCksIGVuZCgpLnZhbHVlcygpKTsgfQotICAgICAgICBjb25zdCBJdGVy
YXRvclJhbmdlPHR5cGVuYW1lIGNvbnN0X2l0ZXJhdG9yOjpWYWx1ZXM+IHZhbHVlcygpIGNvbnN0
IHsgcmV0dXJuIG1ha2VJdGVyYXRvclJhbmdlKGJlZ2luKCkudmFsdWVzKCksIGVuZCgpLnZhbHVl
cygpKTsgfQotCi0gICAgICAgIGl0ZXJhdG9yIGZpbmQoY29uc3QgS2V5VHlwZSYpOwotICAgICAg
ICBpdGVyYXRvciBmaW5kKFJhd0tleVR5cGUpOwotICAgICAgICBjb25zdF9pdGVyYXRvciBmaW5k
KGNvbnN0IEtleVR5cGUmKSBjb25zdDsKLSAgICAgICAgY29uc3RfaXRlcmF0b3IgZmluZChSYXdL
ZXlUeXBlKSBjb25zdDsKLSAgICAgICAgYm9vbCBjb250YWlucyhjb25zdCBLZXlUeXBlJikgY29u
c3Q7Ci0gICAgICAgIGJvb2wgY29udGFpbnMoUmF3S2V5VHlwZSkgY29uc3Q7Ci0gICAgICAgIE1h
cHBlZFBlZWtUeXBlIGdldChjb25zdCBLZXlUeXBlJikgY29uc3Q7Ci0gICAgICAgIE1hcHBlZFBl
ZWtUeXBlIGdldChSYXdLZXlUeXBlKSBjb25zdDsKLSAgICAgICAgTWFwcGVkUGVla1R5cGUgaW5s
aW5lR2V0KFJhd0tleVR5cGUpIGNvbnN0OwotCi0gICAgICAgIC8vIHJlcGxhY2VzIHZhbHVlIGJ1
dCBub3Qga2V5IGlmIGtleSBpcyBhbHJlYWR5IHByZXNlbnQKLSAgICAgICAgLy8gcmV0dXJuIHZh
bHVlIGlzIGEgcGFpciBvZiB0aGUgaXRlcmF0b3IgdG8gdGhlIGtleSBsb2NhdGlvbiwgCi0gICAg
ICAgIC8vIGFuZCBhIGJvb2xlYW4gdGhhdCdzIHRydWUgaWYgYSBuZXcgdmFsdWUgd2FzIGFjdHVh
bGx5IGFkZGVkCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+IEFkZFJlc3VsdCBzZXQoY29u
c3QgS2V5VHlwZSYsIFYmJik7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+IEFkZFJlc3Vs
dCBzZXQoUmF3S2V5VHlwZSwgViYmKTsKLQotICAgICAgICAvLyBkb2VzIG5vdGhpbmcgaWYga2V5
IGlzIGFscmVhZHkgcHJlc2VudAotICAgICAgICAvLyByZXR1cm4gdmFsdWUgaXMgYSBwYWlyIG9m
IHRoZSBpdGVyYXRvciB0byB0aGUga2V5IGxvY2F0aW9uLCAKLSAgICAgICAgLy8gYW5kIGEgYm9v
bGVhbiB0aGF0J3MgdHJ1ZSBpZiBhIG5ldyB2YWx1ZSB3YXMgYWN0dWFsbHkgYWRkZWQKLSAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4gQWRkUmVzdWx0IGFkZChjb25zdCBLZXlUeXBlJiwgViYm
KTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4gQWRkUmVzdWx0IGFkZChSYXdLZXlUeXBl
LCBWJiYpOwotCi0gICAgICAgIGJvb2wgcmVtb3ZlKGNvbnN0IEtleVR5cGUmKTsKLSAgICAgICAg
Ym9vbCByZW1vdmUoUmF3S2V5VHlwZSk7Ci0gICAgICAgIGJvb2wgcmVtb3ZlKGl0ZXJhdG9yKTsK
LSAgICAgICAgdm9pZCBjbGVhcigpOwotCi0gICAgICAgIE1hcHBlZFR5cGUgdGFrZShjb25zdCBL
ZXlUeXBlJik7IC8vIGVmZmljaWVudCBjb21iaW5hdGlvbiBvZiBnZXQgd2l0aCByZW1vdmUKLSAg
ICAgICAgTWFwcGVkVHlwZSB0YWtlKFJhd0tleVR5cGUpOyAvLyBlZmZpY2llbnQgY29tYmluYXRp
b24gb2YgZ2V0IHdpdGggcmVtb3ZlCi0KLSAgICBwcml2YXRlOgotICAgICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBWPgotICAgICAgICBBZGRSZXN1bHQgaW5saW5lQWRkKGNvbnN0IEtleVR5cGUmLCBW
JiYpOwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+Ci0gICAgICAgIEFkZFJlc3VsdCBp
bmxpbmVBZGQoUmF3S2V5VHlwZSwgViYmKTsKLQotICAgICAgICBIYXNoVGFibGVUeXBlIG1faW1w
bDsKLSAgICB9OwotICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5
cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgaW5saW5lIHZvaWQgSGFzaE1h
cDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+Ojpzd2FwKEhhc2hNYXAmIG90aGVyKQotICAgIHsKLSAg
ICAgICAgbV9pbXBsLnN3YXAob3RoZXIubV9pbXBsKTsgCi0gICAgfQotCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUg
WD4KLSAgICBpbmxpbmUgaW50IEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6c2l6ZSgp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pbXBsLnNpemUoKTsgCi0gICAgfQotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUg
VywgdHlwZW5hbWUgWD4KLSAgICBpbmxpbmUgaW50IEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBX
LCBYPjo6Y2FwYWNpdHkoKSBjb25zdAotICAgIHsgCi0gICAgICAgIHJldHVybiBtX2ltcGwuY2Fw
YWNpdHkoKTsgCi0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwg
dHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBpbmxpbmUgYm9vbCBIYXNo
TWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OmlzRW1wdHkoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1faW1wbC5pc0VtcHR5KCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAg
ICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjppdGVyYXRv
ciBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OmJlZ2luKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2ltcGwuYmVnaW4oKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIGlu
bGluZSB0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46Oml0ZXJhdG9yIEhh
c2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6ZW5kKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX2ltcGwuZW5kKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBpbmxpbmUgdHlw
ZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+Ojpjb25zdF9pdGVyYXRvciBIYXNo
TWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OmJlZ2luKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2ltcGwuYmVnaW4oKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIGlu
bGluZSB0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OmNvbnN0X2l0ZXJh
dG9yIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6ZW5kKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2ltcGwuZW5kKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAg
ICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjppdGVyYXRv
ciBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OmZpbmQoY29uc3QgS2V5VHlwZSYga2V5
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1wbC5maW5kKGtleSk7Ci0gICAgfQotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywg
dHlwZW5hbWUgWD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYs
IFcsIFg+OjppdGVyYXRvciBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OmZpbmQoUmF3
S2V5VHlwZSBrZXkpCi0gICAgewotICAgICAgICByZXR1cm4gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8
VHJhbnNsYXRvcj4oa2V5KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgotICAgIGlubGluZSB0
eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OmNvbnN0X2l0ZXJhdG9yIEhh
c2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6ZmluZChjb25zdCBLZXlUeXBlJiBrZXkpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pbXBsLmZpbmQoa2V5KTsKLSAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBX
LCB0eXBlbmFtZSBYPgotICAgIGlubGluZSB0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwg
ViwgVywgWD46OmNvbnN0X2l0ZXJhdG9yIEhhc2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBYPjo6
ZmluZChSYXdLZXlUeXBlIGtleSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2ltcGwu
dGVtcGxhdGUgZmluZDxUcmFuc2xhdG9yPihrZXkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+
Ci0gICAgaW5saW5lIGJvb2wgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+Ojpjb250YWlu
cyhjb25zdCBLZXlUeXBlJiBrZXkpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9pbXBs
LmNvbnRhaW5zKGtleSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5h
bWUgVSwgdHlwZW5hbWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBpbmxpbmUgYm9v
bCBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgWD46OmNvbnRhaW5zKFJhd0tleVR5cGUga2V5
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBjb250YWluczxU
cmFuc2xhdG9yPihrZXkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywg
dHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNB
cmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgot
ICAgIGF1dG8gSGFzaE1hcDxSZWZQdHI8S2V5QXJnPiwgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlU
cmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OmlubGluZUFkZChjb25zdCBLZXlUeXBlJiBrZXks
IFYmJiBtYXBwZWQpIC0+IEFkZFJlc3VsdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1wbC50
ZW1wbGF0ZSBhZGQ8VHJhbnNsYXRvcj4oa2V5LCBzdGQ6OmZvcndhcmQ8Vj4obWFwcGVkKSk7Ci0g
ICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBNYXBwZWRBcmcs
IHR5cGVuYW1lIEhhc2hBcmcsIHR5cGVuYW1lIEtleVRyYWl0c0FyZywgdHlwZW5hbWUgTWFwcGVk
VHJhaXRzQXJnPgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFY+Ci0gICAgYXV0byBIYXNoTWFwPFJl
ZlB0cjxLZXlBcmc+LCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZywgTWFwcGVkVHJh
aXRzQXJnPjo6aW5saW5lQWRkKFJhd0tleVR5cGUga2V5LCBWJiYgbWFwcGVkKSAtPiBBZGRSZXN1
bHQKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgYWRkPFRyYW5zbGF0b3I+
KGtleSwgc3RkOjpmb3J3YXJkPFY+KG1hcHBlZCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBl
bmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBWPgotICAgIGF1dG8gSGFzaE1hcDxSZWZQdHI8S2V5QXJnPiwgTWFwcGVkQXJn
LCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46OnNldChjb25zdCBLZXlU
eXBlJiBrZXksIFYmJiB2YWx1ZSkgLT4gQWRkUmVzdWx0Ci0gICAgewotICAgICAgICBBZGRSZXN1
bHQgcmVzdWx0ID0gaW5saW5lQWRkKGtleSwgc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSk7Ci0gICAg
ICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpIHsKLSAgICAgICAgICAgIC8vIFRoZSBpbmxpbmVB
ZGQgY2FsbCBhYm92ZSBmb3VuZCBhbiBleGlzdGluZyBoYXNoIHRhYmxlIGVudHJ5OyB3ZSBuZWVk
IHRvIHNldCB0aGUgbWFwcGVkIHZhbHVlLgotICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IHN0ZDo6Zm9yd2FyZDxWPih2YWx1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1l
IE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBl
bmFtZSBNYXBwZWRUcmFpdHNBcmc+Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4KLSAgICBhdXRv
IEhhc2hNYXA8UmVmUHRyPEtleUFyZz4sIE1hcHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJn
LCBNYXBwZWRUcmFpdHNBcmc+OjpzZXQoUmF3S2V5VHlwZSBrZXksIFYmJiB2YWx1ZSkgLT4gQWRk
UmVzdWx0Ci0gICAgewotICAgICAgICBBZGRSZXN1bHQgcmVzdWx0ID0gaW5saW5lQWRkKGtleSwg
c3RkOjpmb3J3YXJkPFY+KHZhbHVlKSk7Ci0gICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkp
IHsKLSAgICAgICAgICAgIC8vIFRoZSBpbmxpbmVBZGQgY2FsbCBhYm92ZSBmb3VuZCBhbiBleGlz
dGluZyBoYXNoIHRhYmxlIGVudHJ5OyB3ZSBuZWVkIHRvIHNldCB0aGUgbWFwcGVkIHZhbHVlLgot
ICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6Zm9yd2FyZDxWPih2YWx1
ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFy
ZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHNBcmc+Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVj4KLSAgICBhdXRvIEhhc2hNYXA8UmVmUHRyPEtleUFyZz4sIE1h
cHBlZEFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnLCBNYXBwZWRUcmFpdHNBcmc+OjphZGQoY29u
c3QgS2V5VHlwZSYga2V5LCBWJiYgdmFsdWUpIC0+IEFkZFJlc3VsdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIGlubGluZUFkZChrZXksIHN0ZDo6Zm9yd2FyZDxWPih2YWx1ZSkpOwotICAgIH0KLQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFt
ZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0c0Fy
Zz4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWPgotICAgIGF1dG8gSGFzaE1hcDxSZWZQdHI8S2V5
QXJnPiwgTWFwcGVkQXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmcsIE1hcHBlZFRyYWl0c0FyZz46
OmFkZChSYXdLZXlUeXBlIGtleSwgViYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBpbmxpbmVBZGQoa2V5LCBzdGQ6OmZvcndhcmQ8Vj4odmFsdWUpKTsKLSAgICB9
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBl
bmFtZSBXLCB0eXBlbmFtZSBNYXBwZWRUcmFpdHM+Ci0gICAgdHlwZW5hbWUgSGFzaE1hcDxSZWZQ
dHI8VD4sIFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46Ok1hcHBlZFBlZWtUeXBlCi0gICAgSGFzaE1h
cDxSZWZQdHI8VD4sIFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46OmdldChjb25zdCBLZXlUeXBlJiBr
ZXkpIGNvbnN0Ci0gICAgewotICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gY29uc3RfY2FzdDxI
YXNoVGFibGVUeXBlJj4obV9pbXBsKS5sb29rdXAoa2V5KTsKLSAgICAgICAgaWYgKCFlbnRyeSkK
LSAgICAgICAgICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OnBlZWsoTWFwcGVkVHJhaXRzOjplbXB0
eVZhbHVlKCkpOwotICAgICAgICByZXR1cm4gTWFwcGVkVHJhaXRzOjpwZWVrKGVudHJ5LT52YWx1
ZSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5h
bWUgViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzPgotICAgIHR5cGVuYW1lIEhh
c2hNYXA8UmVmUHRyPFQ+LCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+OjpNYXBwZWRQZWVrVHlwZQot
ICAgIGlubGluZSBIYXNoTWFwPFJlZlB0cjxUPiwgVSwgViwgVywgTWFwcGVkVHJhaXRzPjo6aW5s
aW5lR2V0KFJhd0tleVR5cGUga2V5KSBjb25zdAotICAgIHsKLSAgICAgICAgVmFsdWVUeXBlKiBl
bnRyeSA9IGNvbnN0X2Nhc3Q8SGFzaFRhYmxlVHlwZSY+KG1faW1wbCkudGVtcGxhdGUgbG9va3Vw
PFRyYW5zbGF0b3I+KGtleSk7Ci0gICAgICAgIGlmICghZW50cnkpCi0gICAgICAgICAgICByZXR1
cm4gTWFwcGVkVHJhaXRzOjpwZWVrKE1hcHBlZFRyYWl0czo6ZW1wdHlWYWx1ZSgpKTsKLSAgICAg
ICAgcmV0dXJuIE1hcHBlZFRyYWl0czo6cGVlayhlbnRyeS0+dmFsdWUpOwotICAgIH0KLQotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcs
IHR5cGVuYW1lIE1hcHBlZFRyYWl0cz4KLSAgICB0eXBlbmFtZSBIYXNoTWFwPFJlZlB0cjxUPiwg
VSwgViwgVywgTWFwcGVkVHJhaXRzPjo6TWFwcGVkUGVla1R5cGUKLSAgICBIYXNoTWFwPFJlZlB0
cjxUPiwgVSwgViwgVywgTWFwcGVkVHJhaXRzPjo6Z2V0KFJhd0tleVR5cGUga2V5KSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGlubGluZUdldChrZXkpOwotICAgIH0KLQotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVu
YW1lIFg+Ci0gICAgaW5saW5lIGJvb2wgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+Ojpy
ZW1vdmUoaXRlcmF0b3IgaXQpCi0gICAgewotICAgICAgICBpZiAoaXQubV9pbXBsID09IG1faW1w
bC5lbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9pbXBsLmludGVy
bmFsQ2hlY2tUYWJsZUNvbnNpc3RlbmN5KCk7Ci0gICAgICAgIG1faW1wbC5yZW1vdmVXaXRob3V0
RW50cnlDb25zaXN0ZW5jeUNoZWNrKGl0Lm1faW1wbCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0gICAgaW5saW5lIGJvb2wgSGFzaE1hcDxSZWZQdHI8
VD4sIFUsIFYsIFcsIFg+OjpyZW1vdmUoY29uc3QgS2V5VHlwZSYga2V5KQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHJlbW92ZShmaW5kKGtleSkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5cGVuYW1lIFcsIHR5cGVuYW1lIFg+Ci0g
ICAgaW5saW5lIGJvb2wgSGFzaE1hcDxSZWZQdHI8VD4sIFUsIFYsIFcsIFg+OjpyZW1vdmUoUmF3
S2V5VHlwZSBrZXkpCi0gICAgewotICAgICAgICByZXR1cm4gcmVtb3ZlKGZpbmQoa2V5KSk7Ci0g
ICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwg
dHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KLSAgICBpbmxpbmUgdm9pZCBIYXNoTWFwPFJlZlB0cjxU
PiwgVSwgViwgVywgWD46OmNsZWFyKCkKLSAgICB7Ci0gICAgICAgIG1faW1wbC5jbGVhcigpOwot
ICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYs
IHR5cGVuYW1lIFcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0cz4KLSAgICBhdXRvIEhhc2hNYXA8UmVm
UHRyPFQ+LCBVLCBWLCBXLCBNYXBwZWRUcmFpdHM+Ojp0YWtlKGNvbnN0IEtleVR5cGUmIGtleSkg
LT4gTWFwcGVkVHlwZQotICAgIHsKLSAgICAgICAgaXRlcmF0b3IgaXQgPSBmaW5kKGtleSk7Ci0g
ICAgICAgIGlmIChpdCA9PSBlbmQoKSkKLSAgICAgICAgICAgIHJldHVybiBNYXBwZWRUcmFpdHM6
OmVtcHR5VmFsdWUoKTsKLSAgICAgICAgTWFwcGVkVHlwZSB2YWx1ZSA9IFdURjo6bW92ZShpdC0+
dmFsdWUpOwotICAgICAgICByZW1vdmUoaXQpOwotICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAg
fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgViwgdHlw
ZW5hbWUgVywgdHlwZW5hbWUgTWFwcGVkVHJhaXRzPgotICAgIGF1dG8gSGFzaE1hcDxSZWZQdHI8
VD4sIFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46OnRha2UoUmF3S2V5VHlwZSBrZXkpIC0+IE1hcHBl
ZFR5cGUKLSAgICB7Ci0gICAgICAgIGl0ZXJhdG9yIGl0ID0gZmluZChrZXkpOwotICAgICAgICBp
ZiAoaXQgPT0gZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gTWFwcGVkVHJhaXRzOjplbXB0eVZh
bHVlKCk7Ci0gICAgICAgIE1hcHBlZFR5cGUgdmFsdWUgPSBXVEY6Om1vdmUoaXQtPnZhbHVlKTsK
LSAgICAgICAgcmVtb3ZlKGl0KTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH0KLQotfSAv
LyBuYW1lc3BhY2UgV1RGCi0KLSNlbmRpZiAvLyBSZWZQdHJIYXNoTWFwX2gKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NDA0
NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisy
MDE0LTA5LTI4ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3Zl
IFJlZlB0ckhhc2hNYXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNzIwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaE1hcC5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgQWRkIHRlc3RzIGZvciB1c2luZyBhIEhhc2hN
YXAgd2l0aCBSZWZQdHIga2V5cywgZm9jdXNpbmcgb24gZW5zdXJpbmcgdGhhdAorICAgICAgICBh
IG1pbmltdW0gb2YgcmVmY291bnQgY2h1cm4gb2NjdXJzLgorCiAyMDE0LTA5LTI2ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBPU09iamVjdFB0ciB3aXRo
IFJldGFpblB0ci9hZG9wdE9TCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
YXNoTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
YXNoTWFwLmNwcAkocmV2aXNpb24gMTc0MDQ0KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvSGFzaE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDExICsyNywxMiBAQAogCiAj
aW5jbHVkZSAiQ291bnRlcnMuaCIKICNpbmNsdWRlICJNb3ZlT25seS5oIgorI2luY2x1ZGUgIlJl
ZkxvZ2dlci5oIgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIApAQCAtMzg2LDQgKzM4NywyMjIg
QEAgVEVTVChXVEZfSGFzaE1hcCwgVW5pcXVlUHRyS2V5X1Rha2VVc2luZwogICAgIEVYUEVDVF9F
USgxdSwgQ29uc3RydWN0b3JEZXN0cnVjdG9yQ291bnRlcjo6ZGVzdHJ1Y3Rpb25Db3VudCk7CiB9
CiAKK1RFU1QoV1RGX0hhc2hNYXAsIFJlZlB0cktleV9BZGQpCit7CisgICAgSGFzaE1hcDxSZWZQ
dHI8UmVmTG9nZ2VyPiwgaW50PiBtYXA7CisKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsK
KyAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgIG1hcC5hZGQocHRyLCAwKTsKKwor
ICAgIEFTU0VSVF9TVFJFUSgicmVmKGEpIHJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7
Cit9CisKK1RFU1QoV1RGX0hhc2hNYXAsIFJlZlB0cktleV9BZGRVc2luZ1JlbGVhc2UpCit7Cisg
ICAgSGFzaE1hcDxSZWZQdHI8UmVmTG9nZ2VyPiwgaW50PiBtYXA7CisKKyAgICBEZXJpdmVkUmVm
TG9nZ2VyIGEoImEiKTsKKyAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgIG1hcC5h
ZGQocHRyLnJlbGVhc2UoKSwgMCk7CisKKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSAiLCB0YWtl
TG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX0hhc2hNYXAsIFJlZlB0cktleV9BZGRV
c2luZ01vdmUpCit7CisgICAgSGFzaE1hcDxSZWZQdHI8UmVmTG9nZ2VyPiwgaW50PiBtYXA7CisK
KyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIo
JmEpOworICAgIG1hcC5hZGQoV1RGOjptb3ZlKHB0ciksIDApOworCisgICAgRVhQRUNUX1NUUkVR
KCJyZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitURVNUKFdURl9IYXNoTWFw
LCBSZWZQdHJLZXlfQWRkVXNpbmdSYXcpCit7CisgICAgSGFzaE1hcDxSZWZQdHI8UmVmTG9nZ2Vy
PiwgaW50PiBtYXA7CisKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZQdHI8
UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgIG1hcC5hZGQocHRyLmdldCgpLCAwKTsKKworICAgIEVY
UEVDVF9TVFJFUSgicmVmKGEpIHJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisK
K1RFU1QoV1RGX0hhc2hNYXAsIFJlZlB0cktleV9BZGRLZXlBbHJlYWR5UHJlc2VudCkKK3sKKyAg
ICBIYXNoTWFwPFJlZlB0cjxSZWZMb2dnZXI+LCBpbnQ+IG1hcDsKKworICAgIERlcml2ZWRSZWZM
b2dnZXIgYSgiYSIpOworCisgICAgeworICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEp
OworICAgICAgICBtYXAuYWRkKHB0ciwgMCk7CisgICAgfQorCisgICAgRVhQRUNUX1NUUkVRKCJy
ZWYoYSkgcmVmKGEpIGRlcmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsK
KyAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyMigmYSk7CisgICAgICAgIGF1dG8gYWRkUmVz
dWx0ID0gbWFwLmFkZChwdHIyLCAwKTsKKyAgICAgICAgRVhQRUNUX0VRKGZhbHNlLCBhZGRSZXN1
bHQuaXNOZXdFbnRyeSk7CisgICAgfQorCisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgZGVyZWYo
YSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworfQorCitURVNUKFdURl9IYXNoTWFwLCBSZWZQ
dHJLZXlfQWRkVXNpbmdSZWxlYXNlS2V5QWxyZWFkeVByZXNlbnQpCit7CisgICAgSGFzaE1hcDxS
ZWZQdHI8UmVmTG9nZ2VyPiwgaW50PiBtYXA7CisKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEi
KTsKKworICAgIHsKKyAgICAgICAgUmVmUHRyPFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICAgICAg
bWFwLmFkZChwdHIsIDApOworICAgIH0KKworICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihh
KSBkZXJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7CisgICAgICAgIFJl
ZlB0cjxSZWZMb2dnZXI+IHB0cjIoJmEpOworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1hcC5h
ZGQocHRyMi5yZWxlYXNlKCksIDApOworICAgICAgICBFWFBFQ1RfRVEoZmFsc2UsIGFkZFJlc3Vs
dC5pc05ld0VudHJ5KTsKKyAgICB9CisKKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihh
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX0hhc2hNYXAsIFJlZlB0
cktleV9BZGRVc2luZ01vdmVLZXlBbHJlYWR5UHJlc2VudCkKK3sKKyAgICBIYXNoTWFwPFJlZlB0
cjxSZWZMb2dnZXI+LCBpbnQ+IG1hcDsKKworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOwor
CisgICAgeworICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgICAgICBtYXAu
YWRkKHB0ciwgMCk7CisgICAgfQorCisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGEpIGRl
cmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKKworICAgIHsKKyAgICAgICAgUmVmUHRy
PFJlZkxvZ2dlcj4gcHRyMigmYSk7CisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbWFwLmFkZChX
VEY6Om1vdmUocHRyMiksIDApOworICAgICAgICBFWFBFQ1RfRVEoZmFsc2UsIGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKKyAgICB9CisKKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAi
LCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX0hhc2hNYXAsIFJlZlB0cktl
eV9TZXQpCit7CisgICAgSGFzaE1hcDxSZWZQdHI8UmVmTG9nZ2VyPiwgaW50PiBtYXA7CisKKyAg
ICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEp
OworICAgIG1hcC5zZXQocHRyLCAwKTsKKworICAgIEFTU0VSVF9TVFJFUSgicmVmKGEpIHJlZihh
KSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX0hhc2hNYXAsIFJlZlB0
cktleV9TZXRVc2luZ1JlbGVhc2UpCit7CisgICAgSGFzaE1hcDxSZWZQdHI8UmVmTG9nZ2VyPiwg
aW50PiBtYXA7CisKKyAgICBEZXJpdmVkUmVmTG9nZ2VyIGEoImEiKTsKKyAgICBSZWZQdHI8UmVm
TG9nZ2VyPiBwdHIoJmEpOworICAgIG1hcC5zZXQocHRyLnJlbGVhc2UoKSwgMCk7CisKKyAgICBF
WFBFQ1RfU1RSRVEoInJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7Cit9CisKKworVEVT
VChXVEZfSGFzaE1hcCwgUmVmUHRyS2V5X1NldFVzaW5nTW92ZSkKK3sKKyAgICBIYXNoTWFwPFJl
ZlB0cjxSZWZMb2dnZXI+LCBpbnQ+IG1hcDsKKworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIp
OworICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgbWFwLnNldChXVEY6Om1vdmUo
cHRyKSwgMCk7CisKKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19z
dHIoKSk7Cit9CisKK1RFU1QoV1RGX0hhc2hNYXAsIFJlZlB0cktleV9TZXRVc2luZ1JhdykKK3sK
KyAgICBIYXNoTWFwPFJlZlB0cjxSZWZMb2dnZXI+LCBpbnQ+IG1hcDsKKworICAgIERlcml2ZWRS
ZWZMb2dnZXIgYSgiYSIpOworICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0cigmYSk7CisgICAgbWFw
LnNldChwdHIuZ2V0KCksIDApOworCisgICAgRVhQRUNUX1NUUkVRKCJyZWYoYSkgcmVmKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChXVEZfSGFzaE1hcCwgUmVmUHRyS2V5
X1NldEtleUFscmVhZHlQcmVzZW50KQoreworICAgIEhhc2hNYXA8UmVmUHRyPFJlZkxvZ2dlcj4s
IGludD4gbWFwOworCisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAgICBSZWZQdHI8
UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgIG1hcC5zZXQocHRyLCAwKTsKKworICAgIEVYUEVDVF9T
VFJFUSgicmVmKGEpIHJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisKKyAgICB7Cisg
ICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0cjIoJmEpOworICAgICAgICBhdXRvIGFkZFJlc3Vs
dCA9IG1hcC5zZXQocHRyMiwgMSk7CisgICAgICAgIEVYUEVDVF9FUShmYWxzZSwgYWRkUmVzdWx0
LmlzTmV3RW50cnkpOworICAgICAgICBFWFBFQ1RfRVEoMSwgbWFwLmdldChwdHIuZ2V0KCkpKTsK
KyAgICB9CisKKyAgICBFWFBFQ1RfU1RSRVEoInJlZihhKSBkZXJlZihhKSAiLCB0YWtlTG9nU3Ry
KCkuY19zdHIoKSk7Cit9CisKK1RFU1QoV1RGX0hhc2hNYXAsIFJlZlB0cktleV9TZXRVc2luZ1Jl
bGVhc2VLZXlBbHJlYWR5UHJlc2VudCkKK3sKKyAgICBIYXNoTWFwPFJlZlB0cjxSZWZMb2dnZXI+
LCBpbnQ+IG1hcDsKKworICAgIERlcml2ZWRSZWZMb2dnZXIgYSgiYSIpOworCisgICAgUmVmUHRy
PFJlZkxvZ2dlcj4gcHRyKCZhKTsKKyAgICBtYXAuc2V0KHB0ciwgMCk7CisKKyAgICBFWFBFQ1Rf
U1RSRVEoInJlZihhKSByZWYoYSkgIiwgdGFrZUxvZ1N0cigpLmNfc3RyKCkpOworCisgICAgewor
ICAgICAgICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIyKCZhKTsKKyAgICAgICAgYXV0byBhZGRSZXN1
bHQgPSBtYXAuc2V0KHB0cjIucmVsZWFzZSgpLCAxKTsKKyAgICAgICAgRVhQRUNUX0VRKGZhbHNl
LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAgIEVYUEVDVF9FUSgxLCBtYXAuZ2V0KHB0
ci5nZXQoKSkpOworICAgIH0KKworICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRlcmVmKGEpICIs
IHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKworVEVTVChXVEZfSGFzaE1hcCwgUmVmUHRyS2V5
X1NldFVzaW5nTW92ZUtleUFscmVhZHlQcmVzZW50KQoreworICAgIEhhc2hNYXA8UmVmUHRyPFJl
ZkxvZ2dlcj4sIGludD4gbWFwOworCisgICAgRGVyaXZlZFJlZkxvZ2dlciBhKCJhIik7CisKKyAg
ICBSZWZQdHI8UmVmTG9nZ2VyPiBwdHIoJmEpOworICAgIG1hcC5zZXQocHRyLCAwKTsKKworICAg
IEVYUEVDVF9TVFJFUSgicmVmKGEpIHJlZihhKSAiLCB0YWtlTG9nU3RyKCkuY19zdHIoKSk7CisK
KyAgICB7CisgICAgICAgIFJlZlB0cjxSZWZMb2dnZXI+IHB0cjIoJmEpOworICAgICAgICBhdXRv
IGFkZFJlc3VsdCA9IG1hcC5zZXQoV1RGOjptb3ZlKHB0cjIpLCAxKTsKKyAgICAgICAgRVhQRUNU
X0VRKGZhbHNlLCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgICAgIEVYUEVDVF9FUSgxLCBt
YXAuZ2V0KHB0ci5nZXQoKSkpOworICAgIH0KKworICAgIEVYUEVDVF9TVFJFUSgicmVmKGEpIGRl
cmVmKGEpICIsIHRha2VMb2dTdHIoKS5jX3N0cigpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQo=
</data>
<flag name="review"
          id="263551"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>