<?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>175619</bug_id>
          
          <creation_ts>2017-08-15 21:56:20 -0700</creation_ts>
          <short_desc>[WebCrypto] Push WorkQueue dispatches for EC algorithms into shared code</short_desc>
          <delta_ts>2017-08-29 04:30:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>buildbot</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1339052</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-15 21:56:20 -0700</bug_when>
    <thetext>SSIA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339057</commentid>
    <comment_count>1</comment_count>
      <attachid>318228</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-15 22:02:51 -0700</bug_when>
    <thetext>Created attachment 318228
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339058</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-15 22:05:24 -0700</bug_when>
    <thetext>Attachment 318228 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 10 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>1339986</commentid>
    <comment_count>3</comment_count>
      <attachid>318479</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-17 23:44:32 -0700</bug_when>
    <thetext>Created attachment 318479
Patch

Ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340564</commentid>
    <comment_count>4</comment_count>
      <attachid>318624</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-21 04:13:30 -0700</bug_when>
    <thetext>Created attachment 318624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342342</commentid>
    <comment_count>5</comment_count>
      <attachid>319069</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-25 01:00:10 -0700</bug_when>
    <thetext>Created attachment 319069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342874</commentid>
    <comment_count>6</comment_count>
      <attachid>319069</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-08-28 11:43:37 -0700</bug_when>
    <thetext>Comment on attachment 319069
Patch

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

Looks good to me. r=me. Good job.

&gt; Source/WebCore/crypto/algorithms/CryptoAlgorithmECDH.cpp:117
&gt; +    context.ref();

It maybe better to add a comment here to state that this is the only special case that we have this unifiedCallback. Therefore, we cannot utilize the dispatchOperation infrastructure, and it is not necessary to make one for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343075</commentid>
    <comment_count>7</comment_count>
      <attachid>319249</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-29 01:06:52 -0700</bug_when>
    <thetext>Created attachment 319249
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343087</commentid>
    <comment_count>8</comment_count>
      <attachid>319249</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-29 04:29:59 -0700</bug_when>
    <thetext>Comment on attachment 319249
Patch for landing

Clearing flags on attachment: 319249

Committed r221293: &lt;http://trac.webkit.org/changeset/221293&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343088</commentid>
    <comment_count>9</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-29 04:30:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343089</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-29 04:30:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/34130591&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318228</attachid>
            <date>2017-08-15 22:02:51 -0700</date>
            <delta_ts>2017-08-17 23:44:29 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-175619-20170816070250.patch</filename>
            <type>text/plain</type>
            <size>24338</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTNmYTYxZTBjOTBhNjUz
NWNhODExMjdlYjM1N2Y2NzM4NTE4MzhkMi4uOGMyNWI0NGYzNDJhZTU0MjM3NWVjYzVkMjliNTcz
ZDEwYmFkOTg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTA4LTE1ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBFQyBhbGdvcml0aG1zIGludG8gc2hhcmVkIGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTYx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtRUNESC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1FQ0RIOjpk
ZXJpdmVCaXRzKToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1F
Q0RILmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNEU0Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNEU0E6OnNpZ24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNEU0E6OnZlcmlmeSk6CisgICAgICAgICog
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNEU0EuaDoKKyAgICAgICAgKiBjcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtRUNESDo6cGxhdGZvcm1EZXJpdmVCaXRzKToKKyAgICAgICAgKiBj
cnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBj
cnlwdG8va2V5cy9DcnlwdG9LZXlFQy5oOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxn
b3JpdGhtRUNESE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1FQ0RI
OjpwbGF0Zm9ybURlcml2ZUJpdHMpOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtRUNEU0FNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNEU0E6
OnBsYXRmb3JtU2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1FQ0RTQTo6
cGxhdGZvcm1WZXJpZnkpOgorCiAyMDE3LTA4LTE0ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBXZWJEcml2ZXI6IGhhbmRsZSBjbGljayBldmVu
dHMgb24gb3B0aW9uIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwCmluZGV4IDFjNzk5ZjYzZDI0ZjAx
ZGIzMzFiMGFjMWQyYTFiMDJlMjFhNTEyMzIuLmE5M2Y5MzY2YzYwYjZkZmNmY2E0YjkxOGNkMWY2
NjczZTMwMGZmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobUVDREguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiQ3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0
aG1FY2RoS2V5RGVyaXZlUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5RUMuaCIKKyNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTEyLDcgKzExMywxNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUVDREg6OmRlcml2ZUJpdHMo
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JgogICAgICAgICAoKmRl
cml2ZWRLZXkpLnNocmluayhsZW5ndGggLyA4KTsKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZSgq
ZGVyaXZlZEtleSkpOwogICAgIH07Ci0gICAgcGxhdGZvcm1EZXJpdmVCaXRzKFdURk1vdmUoYmFz
ZUtleSksIGVjUGFyYW1ldGVycy5wdWJsaWNLZXkucmVsZWFzZU5vbk51bGwoKSwgbGVuZ3RoLCBX
VEZNb3ZlKHVuaWZpZWRDYWxsYmFjayksIGNvbnRleHQsIHdvcmtRdWV1ZSk7CisKKyAgICBjb250
ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW2Jhc2VLZXkgPSBX
VEZNb3ZlKGJhc2VLZXkpLCBwdWJsaWNLZXkgPSBlY1BhcmFtZXRlcnMucHVibGljS2V5LnJlbGVh
c2VOb25OdWxsKCksIGxlbmd0aCwgdW5pZmllZENhbGxiYWNrID0gV1RGTW92ZSh1bmlmaWVkQ2Fs
bGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gZGVyaXZlZEtl
eSA9IHBsYXRmb3JtRGVyaXZlQml0cyhiYXNlS2V5LCBwdWJsaWNLZXkpOworICAgICAgICAgICAg
Y29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICBbZGVyaXZlZEtleSA9IFdURk1vdmUo
ZGVyaXZlZEtleSksIGxlbmd0aCwgdW5pZmllZENhbGxiYWNrID0gV1RGTW92ZSh1bmlmaWVkQ2Fs
bGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICAgICAgdW5pZmllZENhbGxiYWNrKFdURk1vdmUoZGVyaXZlZEtleSksIGxlbmd0
aCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNESDo6aW1wb3J0
S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0YSYmIGRhdGEsIGNvbnN0
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMs
IGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5Q2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUVDREguaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUVDREguaAppbmRleCAxYzM1ODdjMGZlMGEwYmFlNzY0NTE0NmRkNWU0MTViZDM3NzhiY2YxLi40
ZTkzY2Y4NTAxODQ3ZGNhNWFhOTRjMDYwOTYyNTgzOTU4MjRiNGUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNESC5oCkBA
IC00Niw4ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbXBvcnRLZXkoU3VidGxlQ3J5cHRv
OjpLZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29y
aXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFw
LCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGV4
cG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCwgUmVmPENyeXB0b0tleT4mJiwgS2V5RGF0
YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogCi0gICAgdXNpbmcgQ2Fs
bGJhY2sgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmLCBz
aXplX3QpPjsKLSAgICB2b2lkIHBsYXRmb3JtRGVyaXZlQml0cyhSZWY8Q3J5cHRvS2V5PiYmIGJh
c2VLZXksIFJlZjxDcnlwdG9LZXk+JiYgcHVibGljS2V5LCBzaXplX3QgbGVuZ3RoLCBDYWxsYmFj
ayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybURlcml2ZUJpdHMoY29uc3QgQ3J5
cHRvS2V5JiwgY29uc3QgQ3J5cHRvS2V5Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1FQ0RTQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1FQ0RTQS5jcHAKaW5kZXggNTUzMzc1ZmE3ZTgyZjBlMzgxMDIzNzgxYWRiN2NjOTQ0
YjUxMjllOS4uMDUxMjZlYjVmYzM0NjQ0NGZiMWFjYjU3OTA3NTMxODQ2ZjAyNDFjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNE
U0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUVDRFNBLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3Jp
dGhtRWNLZXlQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlFQy5oIgorI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw3
ICs1NSwyNCBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUVDRFNBOjpzaWduKHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcgogICAgICAgICBleGNlcHRpb25DYWxs
YmFjayhJbnZhbGlkQWNjZXNzRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHBs
YXRmb3JtU2lnbihXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGtleSksIFdURk1vdmUoZGF0
YSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4
dCwgd29ya1F1ZXVlKTsKKworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3Bh
dGNoKFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkp
LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhj
ZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkg
bXV0YWJsZSB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZvcm1TaWduKCpwYXJhbWV0ZXJz
LCBrZXksIFdURk1vdmUoZGF0YSkpOworICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KSB7CisgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3Mg
YWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKFtlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29k
ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7CisgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOworICAgICAgICAgICAg
ICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxi
YWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAg
ICAgICAgY29udGV4dC5wb3N0VGFzayhbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1
ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgY29udGV4dC5k
ZXJlZigpOworICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1F
Q0RTQTo6dmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYm
IHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWdu
YXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBF
eGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKQEAgLTYzLDcgKzgxLDI4IEBAIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnZlcmlmeShzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4mJiBwCiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKEludmFsaWRB
Y2Nlc3NFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcGxhdGZvcm1WZXJpZnko
V1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHNpZ25hdHVyZSksIFdU
Rk1vdmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1
ZXVlLmRpc3BhdGNoKAorICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyks
IGtleSA9IFdURk1vdmUoa2V5KSwgc2lnbmF0dXJlID0gV1RGTW92ZShzaWduYXR1cmUpLCBkYXRh
ID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHBsYXRmb3JtVmVyaWZ5KCpwYXJhbWV0ZXJz
LCBrZXksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxk
IG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3Vt
ZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisg
ICAgICAgICAgICAgICAgICAgIFtlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sg
dG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0
VGFzaygKKyAgICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1
ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7
CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OmdlbmVyYXRlS2V5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0
b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiBjYWxsYmFjaywg
RXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1FQ0RTQS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtRUNEU0EuaAppbmRleCAwZjg4ZTA0ZDE2M2RiOTAwYmViOWJmMzE1OGNiMjhh
NzJjY2RlNTI3Li40ODAxZDhkOTgzNjcyMTc1YTI1MzA3Mzg0MzY1OGFlZDYyODFlZjQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1F
Q0RTQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUVDRFNBLmgKQEAgLTQ3LDggKzQ3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGltcG9ydEtl
eShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCwgS2V5RGF0YSYmLCBjb25zdCBzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFs
OwogICAgIHZvaWQgZXhwb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0LCBSZWY8Q3J5cHRv
S2V5PiYmLCBLZXlEYXRhQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAK
LSAgICB2b2lkIHBsYXRmb3JtU2lnbihzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3RvckNh
bGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBX
b3JrUXVldWUmKTsKLSAgICB2b2lkIHBsYXRmb3JtVmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhf
dD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmLCBCb29sQ2FsbGJhY2smJiwgRXhjZXB0
aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOworICAg
IHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtU2lnbihjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgVmVjdG9yPHVpbnQ4
X3Q+JiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25Pcjxib29sPiBwbGF0Zm9ybVZlcmlmeShjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgVmVjdG9yPHVp
bnQ4X3Q+JiYsIFZlY3Rvcjx1aW50OF90PiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtRUNESEdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobUVDREhHQ3J5cHQuY3BwCmluZGV4IDlkYjJiNDI1YmFkYzRhZTdmZmYzYTNkMWMyNTdi
OWYxMDYyNmEwOWMuLmM4YTRmZDgxNmJhMmI2MjdiZThhYTRlMmIyY2FkOGMxZDQzNzVlNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNE
SEdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1FQ0RIR0NyeXB0LmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2lmIEVOQUJMRShTVUJUTEVf
Q1JZUFRPKQogCiAjaW5jbHVkZSAiQ3J5cHRvS2V5RUMuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmg+CiAj
aW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0aWVzLmg+CiAKQEAgLTExNiwyMSArMTE1
LDkgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZXJpdmUo
Z2NyeV9zZXhwX3QgYmFzZUtleVNleHAsIGdjcnkKICAgICByZXR1cm4gb3V0cHV0OwogfQogCi12
b2lkIENyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhSZWY8Q3J5cHRvS2V5
PiYmIGJhc2VLZXksIFJlZjxDcnlwdG9LZXk+JiYgcHVibGljS2V5LCBzaXplX3QgbGVuZ3RoLCBD
YWxsYmFjayYmIGNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3Jr
UXVldWUmIHdvcmtRdWV1ZSkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9B
bGdvcml0aG1FQ0RIOjpwbGF0Zm9ybURlcml2ZUJpdHMoY29uc3QgQ3J5cHRvS2V5JiBiYXNlS2V5
LCBjb25zdCBDcnlwdG9LZXkmIHB1YmxpY0tleSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAg
IHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW2Jhc2VLZXkgPSBXVEZNb3ZlKGJhc2VLZXkp
LCBwdWJsaWNLZXkgPSBXVEZNb3ZlKHB1YmxpY0tleSksIGxlbmd0aCwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvJiBl
Y0Jhc2VLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oYmFzZUtleS5nZXQoKSk7Ci0gICAgICAg
ICAgICBhdXRvJiBlY1B1YmxpY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUVDPihwdWJsaWNLZXku
Z2V0KCkpOwotCi0gICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERlcml2ZShlY0Jhc2VL
ZXkucGxhdGZvcm1LZXkoKSwgZWNQdWJsaWNLZXkucGxhdGZvcm1LZXkoKSk7Ci0gICAgICAgICAg
ICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKG91
dHB1dCksIGxlbmd0aCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKFdURk1vdmUob3V0cHV0KSwgbGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4
dC5kZXJlZigpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICByZXR1cm4g
Z2NyeXB0RGVyaXZlKGRvd25jYXN0PENyeXB0b0tleUVDPihiYXNlS2V5KS5wbGF0Zm9ybUtleSgp
LCBkb3duY2FzdDxDcnlwdG9LZXlFQz4ocHVibGljS2V5KS5wbGF0Zm9ybUtleSgpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcAppbmRleCA0ZDVlZGFk
YjU5ZWZlZGRmZjdlYmM3ZjQ5OWJlZjhhY2VjYzY2NmVhLi42YjA3Y2YwOTMwN2FiZWQ1Y2UzY2Jj
MWEwNzgyYmZmMGEwNmUxM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcApAQCAtMzMsNyArMzMs
NiBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zLmgiCiAjaW5jbHVkZSAi
Q3J5cHRvS2V5RUMuaCIKICNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdl
c3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTcxLDYwICsxNzAsMjYgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZ2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNv
bnN0IFZlY3Rvcjx1aW50OF8KICAgICByZXR1cm4geyBlcnJvciA9PSBHUEdfRVJSX05PX0VSUk9S
IH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtU2lnbihzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5
cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVNpZ24oY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
JiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAg
ICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJh
bWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvJiBl
Y0tleSA9IGRvd25jYXN0PENyeXB0b0tleUVDPihrZXkuZ2V0KCkpOwotICAgICAgICAgICAgYXV0
byYgZWNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXM+KCpw
YXJhbWV0ZXJzKTsKLQotICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRTaWduKGVjS2V5
LnBsYXRmb3JtS2V5KCksIGRhdGEsIGVjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgZWNLZXku
a2V5U2l6ZUluQml0cygpIC8gOCk7Ci0gICAgICAgICAgICBpZiAoIW91dHB1dCkgewotICAgICAg
ICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBi
ZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgICAg
ICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFdl
IHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRo
ZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2so
Ci0gICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25D
YWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY2FsbGJhY2sob3V0cHV0KTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5k
ZXJlZigpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICBhdXRvJiBlY1Bh
cmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4ocGFyYW1ldGVy
cyk7CisgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oa2V5KTsKKworICAg
IGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihlY0tleS5wbGF0Zm9ybUtleSgpLCBkYXRhLCBlY1Bh
cmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIGVjS2V5LmtleVNpemVJbkJpdHMoKSAvIDgpOworICAg
IGlmICghb3V0cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3Ig
fTsKKyAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0
aG1FQ0RTQTo6cGxhdGZvcm1WZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50
OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgQm9vbENhbGxiYWNrJiYg
Y2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9u
T3I8Ym9vbD4gQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBW
ZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0g
ICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtwYXJh
bWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1
cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8mIGVjS2V5
ID0gZG93bmNhc3Q8Q3J5cHRvS2V5RUM+KGtleS5nZXQoKSk7Ci0gICAgICAgICAgICBhdXRvJiBl
Y1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4oKnBhcmFt
ZXRlcnMpOwotCi0gICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFZlcmlmeShlY0tleS5w
bGF0Zm9ybUtleSgpLCBzaWduYXR1cmUsIGRhdGEsIGVjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmll
ciwgZWNLZXkua2V5U2l6ZUluQml0cygpIC8gOCk7Ci0gICAgICAgICAgICBpZiAoIW91dHB1dCkg
ewotICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNr
cyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAg
ICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBi
YWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQu
cG9zdFRhc2soCi0gICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShl
eGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgY2FsbGJhY2sob3V0cHV0KTsKLSAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICBh
dXRvJiBlY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4o
cGFyYW1ldGVycyk7CisgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oa2V5
KTsKKworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0VmVyaWZ5KGVjS2V5LnBsYXRmb3JtS2V5KCks
IHNpZ25hdHVyZSwgZGF0YSwgZWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBlY0tleS5rZXlT
aXplSW5CaXRzKCkgLyA4KTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9rZXlzL0NyeXB0b0tleUVDLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9Dcnlw
dG9LZXlFQy5oCmluZGV4IGM2Mzk4YzBjYjViYzkzN2E0ZTEzMmY1ZGZlNDJkM2FmNTcwMDE2ZTIu
Ljg5NzdlZDk5ZGFmMzc2OGFjMTg2ZmY5NzcwYzc3YzU2MThkNDVlMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuaApAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6CiAg
ICAgc2l6ZV90IGtleVNpemVJbkJpdHMoKSBjb25zdDsKICAgICBOYW1lZEN1cnZlIG5hbWVkQ3Vy
dmUoKSBjb25zdCB7IHJldHVybiBtX2N1cnZlOyB9CiAgICAgU3RyaW5nIG5hbWVkQ3VydmVTdHJp
bmcoKSBjb25zdDsKLSAgICBQbGF0Zm9ybUVDS2V5IHBsYXRmb3JtS2V5KCkgeyByZXR1cm4gbV9w
bGF0Zm9ybUtleTsgfQorICAgIFBsYXRmb3JtRUNLZXkgcGxhdGZvcm1LZXkoKSBjb25zdCB7IHJl
dHVybiBtX3BsYXRmb3JtS2V5OyB9CiAgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVDQWxnb3JpdGht
KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1FQ0RITWFjLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNESE1hYy5jcHAKaW5kZXggZjg0
YzcyYTcxYTk2ZjViYmY2NGRlN2M4NGVhYmRlNjIwNWZmNWQxMC4uNzkyNDlhZWZhNjY5MmRmOGQy
MzNmYWZkMjExYzIwMmZhYTdlZGQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L21hYy9DcnlwdG9BbGdvcml0aG1FQ0RITWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDREhNYWMuY3BwCkBAIC0zMCwyOCArMzAsMjAgQEAKIAog
I2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleUVD
LmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNESDo6cGxhdGZvcm1EZXJpdmVCaXRzKFJl
ZjxDcnlwdG9LZXk+JiYgYmFzZUtleSwgUmVmPENyeXB0b0tleT4mJiBwdWJsaWNLZXksIHNpemVf
dCBsZW5ndGgsIENhbGxiYWNrJiYgY2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IENyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhjb25zdCBDcnlwdG9L
ZXkmIGJhc2VLZXksIGNvbnN0IENyeXB0b0tleSYgcHVibGljS2V5KQogewotICAgIGNvbnRleHQu
cmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtiYXNlS2V5ID0gV1RGTW92ZShiYXNlS2V5
KSwgcHVibGljS2V5ID0gV1RGTW92ZShwdWJsaWNLZXkpLCBsZW5ndGgsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiBlY0Jh
c2VLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oYmFzZUtleS5nZXQoKSk7Ci0gICAgICAgIGF1
dG8mIGVjUHVibGljS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5RUM+KHB1YmxpY0tleS5nZXQoKSk7
Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHJlc3VsdCA9IHN0ZDo6
bnVsbG9wdDsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRlcml2ZWRLZXkoZWNCYXNlS2V5Lmtl
eVNpemVJbkJpdHMoKSAvIDgpOyAvLyBQZXIgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3Jm
YzYwOTAjc2VjdGlvbi00LgotICAgICAgICBzaXplX3Qgc2l6ZSA9IGRlcml2ZWRLZXkuc2l6ZSgp
OwotICAgICAgICBpZiAoIUNDRUNDcnlwdG9yQ29tcHV0ZVNoYXJlZFNlY3JldChlY0Jhc2VLZXku
cGxhdGZvcm1LZXkoKSwgZWNQdWJsaWNLZXkucGxhdGZvcm1LZXkoKSwgZGVyaXZlZEtleS5kYXRh
KCksICZzaXplKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IFdURk1vdmUoZGVyaXZlZEtleSk7Ci0K
LSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCBsZW5n
dGgsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIG11dGFibGUgewotICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQp
LCBsZW5ndGgpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAg
ICB9KTsKKyAgICBhdXRvJiBlY0Jhc2VLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oYmFzZUtl
eSk7CisgICAgYXV0byYgZWNQdWJsaWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4ocHVibGlj
S2V5KTsKKworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZXN1bHQgPSBzdGQ6
Om51bGxvcHQ7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRlcml2ZWRLZXkoZWNCYXNlS2V5LmtleVNp
emVJbkJpdHMoKSAvIDgpOyAvLyBQZXIgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzYw
OTAjc2VjdGlvbi00LgorICAgIHNpemVfdCBzaXplID0gZGVyaXZlZEtleS5zaXplKCk7CisgICAg
aWYgKCFDQ0VDQ3J5cHRvckNvbXB1dGVTaGFyZWRTZWNyZXQoZWNCYXNlS2V5LnBsYXRmb3JtS2V5
KCksIGVjUHVibGljS2V5LnBsYXRmb3JtS2V5KCksIGRlcml2ZWRLZXkuZGF0YSgpLCAmc2l6ZSkp
CisgICAgICAgIHJlc3VsdCA9IFdURk1vdmUoZGVyaXZlZEtleSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1FQ0RTQU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobUVDRFNBTWFjLmNwcAppbmRleCA5ZTNmOTNhMTk1NzBmZWM1ODk4ZmViNTYwNGZlNTQ0
MzJlMDY3MTg2Li41ODMyMDRlOTdlNzUwODA2MDMxMGQ2NWEyMGRjYmQxODM1ZWQ5ZGJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDRFNBTWFj
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDRFNB
TWFjLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUVjZHNh
UGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0QWxnb3JpdGhtLmgiCiAjaW5jbHVkZSAi
Q3J5cHRvS2V5RUMuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTUyLDUyICsxNTEsMTggQEAgc3RhdGljIEV4Y2VwdGlv
bk9yPGJvb2w+IHZlcmlmeUVDRFNBKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgY29u
c3QgUGxhdGYKICAgICByZXR1cm4gdmFsaWQ7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNE
U0E6OnBsYXRmb3JtU2lnbihzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYg
ZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNl
cHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVl
JiB3b3JrUXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRo
bUVDRFNBOjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7
Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW3BhcmFtZXRlcnMg
PSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIGRhdGEgPSBXVEZNb3Zl
KGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oa2V5LmdldCgpKTsKLSAgICAg
ICAgYXV0byYgZWNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJh
bXM+KCpwYXJhbWV0ZXJzKTsKLQotICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ25FQ0RTQShlY1Bh
cmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIGVjS2V5LnBsYXRmb3JtS2V5KCksIGVjS2V5LmtleVNp
emVJbkJpdHMoKSAvIDgsIGRhdGEpOwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3Mg
YWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spLCBlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOwotICAgICAgICAgICAg
ICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxi
YWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAg
ICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVz
dWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBleGNlcHRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29udGV4dC5k
ZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiBlY0tleSA9IGRvd25jYXN0
PENyeXB0b0tleUVDPihrZXkpOworICAgIGF1dG8mIGVjUGFyYW1ldGVycyA9IGRvd25jYXN0PENy
eXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihwYXJhbWV0ZXJzKTsKKyAgICByZXR1cm4gc2lnbkVD
RFNBKGVjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgZWNLZXkucGxhdGZvcm1LZXkoKSwgZWNL
ZXkua2V5U2l6ZUluQml0cygpIC8gOCwgZGF0YSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGht
RUNEU0E6OnBsYXRmb3JtVmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhf
dD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNh
bGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9y
PGJvb2w+IENyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgVmVj
dG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAg
IGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RG
TW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3Zl
KHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAm
Y29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlw
dG9LZXlFQz4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byYgZWNQYXJhbWV0ZXJzID0gZG93bmNh
c3Q8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXM+KCpwYXJhbWV0ZXJzKTsKLQotICAgICAgICBh
dXRvIHJlc3VsdCA9IHZlcmlmeUVDRFNBKGVjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgZWNL
ZXkucGxhdGZvcm1LZXkoKSwgZWNLZXkua2V5U2l6ZUluQml0cygpIC8gOCwgc2lnbmF0dXJlLCBk
YXRhKTsKLSAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sg
dG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0
VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgZWMg
PSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVm
KCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcg
YmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgIGNvbnRleHQucG9z
dFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IHJlc3VsdC5yZWxl
YXNlUmV0dXJuVmFsdWUoKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAg
Y2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAg
fSk7Ci0gICAgfSk7CisgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oa2V5
KTsKKyAgICBhdXRvJiBlY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY2Rz
YVBhcmFtcz4ocGFyYW1ldGVycyk7CisgICAgcmV0dXJuIHZlcmlmeUVDRFNBKGVjUGFyYW1ldGVy
cy5oYXNoSWRlbnRpZmllciwgZWNLZXkucGxhdGZvcm1LZXkoKSwgZWNLZXkua2V5U2l6ZUluQml0
cygpIC8gOCwgc2lnbmF0dXJlLCBkYXRhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318479</attachid>
            <date>2017-08-17 23:44:32 -0700</date>
            <delta_ts>2017-08-21 04:13:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175619-20170818084431.patch</filename>
            <type>text/plain</type>
            <size>25253</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQyNGNmMjk5MTMwMmZj
NTQ1ZmJkYTFlNTU0Y2I5ZWVkYzQ3ZTk3Zi4uNTE3ZTEwNDUzNmVhMWVhMTdkNzVkOGExOTI3ZDMx
N2FlNDkzNDc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE3LTA4LTE3ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBFQyBhbGdvcml0aG1zIGludG8gc2hhcmVkIGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTYx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFB1c2gg
dGhlIFdvcmtRdWV1ZSBkaXNwYXRjaCBjb2RlIGR1cGxpY2F0ZWQgYmV0d2VlbiB0aGUgTWFjIGFu
ZCBsaWJnY3J5cHQKKyAgICAgICAgaW1wbGVtZW50YXRpb25zIG9mIFdlYiBDcnlwdG8gaW50byB0
aGUgc2hhcmVkIGxheWVyLiBUaGlzIHBhdGNoIGZvY3VzZXMgb24KKyAgICAgICAgdGhlIEVDLWJh
c2VkIGFsZ29yaXRobXMuCisKKyAgICAgICAgRnVuY3Rpb25zIHdpdGggcGxhdGZvcm0tc3BlY2lm
aWMgaW1wbGVtZW50YXRpb25zIHRoYXQgYXJlIGludm9rZWQgZnJvbQorICAgICAgICB0aGVzZSBh
c3luY2hyb25vdXMgZGlzcGF0Y2hlcyBhcmUgbWFkZSBzdGF0aWMgYW5kIHJldHVybiBhbiBFeGNl
cHRpb25PciBvcgorICAgICAgICBzdGQ6Om9wdGlvbmFsIHZhbHVlLiBDcnlwdG9LZXkgYW5kIENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMgb2JqZWN0cyBhcmUKKyAgICAgICAgcGFzc2VkIHRvIHRo
b3NlIHRocm91Z2ggY29uc3QgcmVmZXJlbmNlcy4gVGhlIGlucHV0IGRhdGEgaXMgcGFzc2VkIHRo
cm91Z2gKKyAgICAgICAgcnZhbHVlIHJlZmVyZW5jZXMsIGFsbG93aW5nIGltcGxlbWVudGF0aW9u
cyB0byByZXVzZSB0aGF0IFZlY3RvciBkYXRhCisgICAgICAgIGVmZmljaWVudGx5IChldmVuIGlm
IGN1cnJlbnQgaW1wbGVtZW50YXRpb25zIGRvbid0IGJlbmVmaXQgZnJvbSBpdCkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIC0tIG5vIGNoYW5nZXMgaW4gYmVoYXZpb3IgdGhhdCdzIGNvdmVyZWQg
YnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1FQ0RILmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDREg6
OmRlcml2ZUJpdHMpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUVDREguaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RT
QS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1FQ0RTQTo6c2lnbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1FQ0RTQTo6dmVyaWZ5KToKKyAgICAgICAg
KiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RTQS5oOgorICAgICAgICAqIGNy
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNESEdDcnlwdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1FQ0RIOjpwbGF0Zm9ybURlcml2ZUJpdHMpOgorICAgICAgICAq
IGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtU2lnbik6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1WZXJpZnkpOgorICAgICAgICAq
IGNyeXB0by9rZXlzL0NyeXB0b0tleUVDLmg6IE1ha2UgdGhlIHBsYXRmb3JtS2V5KCkgY29uc3Qt
cXVhbGlmaWVkLAorICAgICAgICBhbGxvd2luZyByZXRyaWV2YWwgb2YgUGxhdGZvcm1FQ0tleSB2
YWx1ZSBmcm9tIGNvbnN0IENyeXB0b0tleUVDIG9iamVjdHMuCisgICAgICAgICogY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1FQ0RITWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyk6CisgICAgICAgICogY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1FQ0RTQU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1FQ0RTQTo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobUVDRFNBOjpwbGF0Zm9ybVZlcmlmeSk6CisKIDIwMTctMDgtMTcgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW0lucHV0IEV2ZW50c10gUmVuYW1l
IGlucHV0VHlwZSAiZm9ybWF0Rm9yZUNvbG9yIiB0byAiZm9ybWF0Rm9udENvbG9yIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNE
SC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1F
Q0RILmNwcAppbmRleCBjZGE1MmZhNjIxOWNkY2U0OGUxMDM3Mzk1YWJjNjM2MGVmZThkNzU1Li4x
MjRiMTBkYTJmNWE1NmQxOTQ1M2QxMTJhYWQwMDk0ZTI0NGZjYjVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNw
cApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUVjS2V5UGFyYW1z
LmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtRWNkaEtleURlcml2ZVBhcmFtcy5oIgogI2lu
Y2x1ZGUgIkNyeXB0b0tleUVDLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExMiw3ICsxMTMsMTcgQEAgdm9pZCBDcnlw
dG9BbGdvcml0aG1FQ0RIOjpkZXJpdmVCaXRzKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiYKICAgICAgICAgKCpkZXJpdmVkS2V5KS5zaHJpbmsobGVuZ3RoIC8gOCk7
CiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoKmRlcml2ZWRLZXkpKTsKICAgICB9OwotICAgIHBs
YXRmb3JtRGVyaXZlQml0cyhXVEZNb3ZlKGJhc2VLZXkpLCBlY1BhcmFtZXRlcnMucHVibGljS2V5
LnJlbGVhc2VOb25OdWxsKCksIGxlbmd0aCwgV1RGTW92ZSh1bmlmaWVkQ2FsbGJhY2spLCBjb250
ZXh0LCB3b3JrUXVldWUpOworCisgICAgY29udGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUuZGlz
cGF0Y2goCisgICAgICAgIFtiYXNlS2V5ID0gV1RGTW92ZShiYXNlS2V5KSwgcHVibGljS2V5ID0g
ZWNQYXJhbWV0ZXJzLnB1YmxpY0tleS5yZWxlYXNlTm9uTnVsbCgpLCBsZW5ndGgsIHVuaWZpZWRD
YWxsYmFjayA9IFdURk1vdmUodW5pZmllZENhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBhdXRvIGRlcml2ZWRLZXkgPSBwbGF0Zm9ybURlcml2ZUJpdHMoYmFzZUtl
eSwgcHVibGljS2V5KTsKKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAg
ICAgICAgW2Rlcml2ZWRLZXkgPSBXVEZNb3ZlKGRlcml2ZWRLZXkpLCBsZW5ndGgsIHVuaWZpZWRD
YWxsYmFjayA9IFdURk1vdmUodW5pZmllZENhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIHVuaWZpZWRDYWxsYmFj
ayhXVEZNb3ZlKGRlcml2ZWRLZXkpLCBsZW5ndGgpOworICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogfQogCiB2b2lk
IENyeXB0b0FsZ29yaXRobUVDREg6OmltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQgZm9ybWF0LCBL
ZXlEYXRhJiYgZGF0YSwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnM+JiYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRt
YXAgdXNhZ2VzLCBLZXlDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4
Y2VwdGlvbkNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNESC5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNESC5oCmluZGV4IDQyZWVkZjUxODEwMzRmYTIxZjdjYzgw
YTIwMzY3Y2VhYjQ2MDYyOWIuLjY5MDEzMmI1YTgwMThjZTNiYTNlNTMzZDgyNThjOTkxOTljYWU4
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUVDREguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1FQ0RILmgKQEAgLTQ2LDggKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlt
cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tl
eVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsK
ICAgICB2b2lkIGV4cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIFJlZjxDcnlwdG9LZXk+JiYsIEtl
eURhdGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAotICAgIHVzaW5n
IENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4m
Jiwgc2l6ZV90KT47Ci0gICAgdm9pZCBwbGF0Zm9ybURlcml2ZUJpdHMoUmVmPENyeXB0b0tleT4m
JiBiYXNlS2V5LCBSZWY8Q3J5cHRvS2V5PiYmIHB1YmxpY0tleSwgc2l6ZV90IGxlbmd0aCwgQ2Fs
bGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOworICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0
IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b0tleSYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtRUNEU0EuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtRUNEU0EuY3BwCmluZGV4IDcwMGU5ZTU5ZDU2MjU3N2Q3MTFjMDNhOWFkNDAx
MmMzNzY5ZTVhMDMuLmM1ZWY0ZDQ5YTc3N2MzOTk3NTU3Y2M3NmI2YWZiNTE1NjNiNTViYTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUVDRFNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1FQ0RTQS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNyeXB0b0Fs
Z29yaXRobUVjS2V5UGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5RUMuaCIKKyNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NTQsNyArNTUsMjYgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6c2lnbihzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXIKICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBwbGF0Zm9ybVNpZ24oV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShrZXkpLCBXVEZNb3Zl
KGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNv
bnRleHQsIHdvcmtRdWV1ZSk7CisKKyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5k
aXNwYXRjaCgKKyAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkg
PSBXVEZNb3ZlKGtleSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2sp
LCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZv
cm1TaWduKCpwYXJhbWV0ZXJzLCBrZXksIFdURk1vdmUoZGF0YSkpOworICAgICAgICAgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBv
bmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVu
dC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtlYyA9
IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbkNhbGxiYWNrKGVjKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJh
Y2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAg
ICAgICAgICAgY29udGV4dC5wb3N0VGFzayhbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5W
YWx1ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiB9CiAKIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnZlcmlmeShzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVj
dG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBCb29sQ2Fs
bGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCkBA
IC02Myw3ICs4MywyOCBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUVDRFNBOjp2ZXJpZnkoc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcAogICAgICAgICBleGNlcHRp
b25DYWxsYmFjayhJbnZhbGlkQWNjZXNzRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIHBsYXRmb3JtVmVyaWZ5KFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUoa2V5KSwgV1RG
TW92ZShzaWduYXR1cmUpLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayksIGNvbnRleHQsIHdvcmtRdWV1ZSk7CisKKyAgICBjb250ZXh0
LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW3BhcmFtZXRlcnMgPSBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1v
dmUoc2lnbmF0dXJlKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayks
ICZjb250ZXh0XSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBwbGF0Zm9y
bVZlcmlmeSgqcGFyYW1ldGVycywga2V5LCBXVEZNb3ZlKHNpZ25hdHVyZSksIFdURk1vdmUoZGF0
YSkpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAg
ICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWlu
ZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAgICBj
b250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgICAgICBbZWMgPSByZXN1bHQucmVsZWFz
ZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2Fs
bGJhY2soZWMpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNr
cyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAg
ICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgW3Jlc3VsdCA9IHJlc3Vs
dC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhj
ZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1
bHQpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIENyeXB0b0FsZ29yaXRobUVDRFNBOjpnZW5l
cmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNh
bGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ss
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNEU0EuaCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDRFNBLmgKaW5kZXggMDYwZGQzY2IzYzc3
OTg2YWY5ZTg2ODlmMmFmZWZlZWZlMjYyZTgzOC4uZjUwM2M0MTg3OWNmN2Q2NzI4ZTA4NzUyOWFi
ZmZmOTk0NGQ4ZDJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtRUNEU0EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RTQS5oCkBAIC00Nyw4ICs0Nyw4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBpbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBLZXlEYXRhJiYsIGNvbnN0IHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgdm9pZCBleHBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBSZWY8Q3J5
cHRvS2V5PiYmLCBLZXlEYXRhQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7
CiAKLSAgICB2b2lkIHBsYXRmb3JtU2lnbihzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIFZlY3Rv
ckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBXb3JrUXVldWUmKTsKLSAgICB2b2lkIHBsYXRmb3JtVmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWlu
dDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmLCBCb29sQ2FsbGJhY2smJiwgRXhj
ZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOwor
ICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtU2lnbihjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgVmVjdG9yPHVp
bnQ4X3Q+JiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25Pcjxib29sPiBwbGF0Zm9ybVZlcmlmeShj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgVmVjdG9y
PHVpbnQ4X3Q+JiYsIFZlY3Rvcjx1aW50OF90PiYmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxn
b3JpdGhtRUNESEdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobUVDREhHQ3J5cHQuY3BwCmluZGV4IDlkYjJiNDI1YmFkYzRhZTdmZmYzYTNkMWMy
NTdiOWYxMDYyNmEwOWMuLmM4YTRmZDgxNmJhMmI2MjdiZThhYTRlMmIyY2FkOGMxZDQzNzVlNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
RUNESEdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1FQ0RIR0NyeXB0LmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2lmIEVOQUJMRShTVUJU
TEVfQ1JZUFRPKQogCiAjaW5jbHVkZSAiQ3J5cHRvS2V5RUMuaCIKLSNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmg+
CiAjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0aWVzLmg+CiAKQEAgLTExNiwyMSAr
MTE1LDkgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZXJp
dmUoZ2NyeV9zZXhwX3QgYmFzZUtleVNleHAsIGdjcnkKICAgICByZXR1cm4gb3V0cHV0OwogfQog
Ci12b2lkIENyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhSZWY8Q3J5cHRv
S2V5PiYmIGJhc2VLZXksIFJlZjxDcnlwdG9LZXk+JiYgcHVibGljS2V5LCBzaXplX3QgbGVuZ3Ro
LCBDYWxsYmFjayYmIGNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBX
b3JrUXVldWUmIHdvcmtRdWV1ZSkKK3N0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlw
dG9BbGdvcml0aG1FQ0RIOjpwbGF0Zm9ybURlcml2ZUJpdHMoY29uc3QgQ3J5cHRvS2V5JiBiYXNl
S2V5LCBjb25zdCBDcnlwdG9LZXkmIHB1YmxpY0tleSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwot
ICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW2Jhc2VLZXkgPSBXVEZNb3ZlKGJhc2VL
ZXkpLCBwdWJsaWNLZXkgPSBXVEZNb3ZlKHB1YmxpY0tleSksIGxlbmd0aCwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRv
JiBlY0Jhc2VLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oYmFzZUtleS5nZXQoKSk7Ci0gICAg
ICAgICAgICBhdXRvJiBlY1B1YmxpY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUVDPihwdWJsaWNL
ZXkuZ2V0KCkpOwotCi0gICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERlcml2ZShlY0Jh
c2VLZXkucGxhdGZvcm1LZXkoKSwgZWNQdWJsaWNLZXkucGxhdGZvcm1LZXkoKSk7Ci0gICAgICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3Zl
KG91dHB1dCksIGxlbmd0aCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgICAgIGNh
bGxiYWNrKFdURk1vdmUob3V0cHV0KSwgbGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICByZXR1
cm4gZ2NyeXB0RGVyaXZlKGRvd25jYXN0PENyeXB0b0tleUVDPihiYXNlS2V5KS5wbGF0Zm9ybUtl
eSgpLCBkb3duY2FzdDxDcnlwdG9LZXlFQz4ocHVibGljS2V5KS5wbGF0Zm9ybUtleSgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcAppbmRleCA0ZDVl
ZGFkYjU5ZWZlZGRmZjdlYmM3ZjQ5OWJlZjhhY2VjYzY2NmVhLi42YjA3Y2YwOTMwN2FiZWQ1Y2Uz
Y2JjMWEwNzgyYmZmMGEwNmUxM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcApAQCAtMzMsNyAr
MzMsNiBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zLmgiCiAjaW5jbHVk
ZSAiQ3J5cHRvS2V5RUMuaCIKICNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKLSNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9E
aWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTcxLDYwICsxNzAsMjYgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZ2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAs
IGNvbnN0IFZlY3Rvcjx1aW50OF8KICAgICByZXR1cm4geyBlcnJvciA9PSBHUEdfRVJSX05PX0VS
Uk9SIH07CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtU2lnbihzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8
Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sm
JiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVNpZ24o
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRv
S2V5JiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsK
LSAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShw
YXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRv
JiBlY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUVDPihrZXkuZ2V0KCkpOwotICAgICAgICAgICAg
YXV0byYgZWNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXM+
KCpwYXJhbWV0ZXJzKTsKLQotICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRTaWduKGVj
S2V5LnBsYXRmb3JtS2V5KCksIGRhdGEsIGVjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgZWNL
ZXkua2V5U2l6ZUluQml0cygpIC8gOCk7Ci0gICAgICAgICAgICBpZiAoIW91dHB1dCkgewotICAg
ICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRl
ciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgICAgICB9KTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8v
IFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRv
IHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRh
c2soCi0gICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY2FsbGJhY2sob3V0cHV0KTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4
dC5kZXJlZigpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICBhdXRvJiBl
Y1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4ocGFyYW1l
dGVycyk7CisgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oa2V5KTsKKwor
ICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihlY0tleS5wbGF0Zm9ybUtleSgpLCBkYXRhLCBl
Y1BhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIGVjS2V5LmtleVNpemVJbkJpdHMoKSAvIDgpOwor
ICAgIGlmICghb3V0cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJy
b3IgfTsKKyAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdv
cml0aG1FQ0RTQTo6cGxhdGZvcm1WZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1
aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgQm9vbENhbGxiYWNr
JiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0
aW9uT3I8Ym9vbD4gQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5
LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7
Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtw
YXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBzaWdu
YXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGF1dG8mIGVj
S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5RUM+KGtleS5nZXQoKSk7Ci0gICAgICAgICAgICBhdXRv
JiBlY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFtcz4oKnBh
cmFtZXRlcnMpOwotCi0gICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFZlcmlmeShlY0tl
eS5wbGF0Zm9ybUtleSgpLCBzaWduYXR1cmUsIGRhdGEsIGVjUGFyYW1ldGVycy5oYXNoSWRlbnRp
ZmllciwgZWNLZXkua2V5U2l6ZUluQml0cygpIC8gOCk7Ci0gICAgICAgICAgICBpZiAoIW91dHB1
dCkgewotICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxi
YWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAg
ICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWlu
ZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRl
eHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
LSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sob3V0cHV0KTsKLSAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAg
ICBhdXRvJiBlY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFt
cz4ocGFyYW1ldGVycyk7CisgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4o
a2V5KTsKKworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0VmVyaWZ5KGVjS2V5LnBsYXRmb3JtS2V5
KCksIHNpZ25hdHVyZSwgZGF0YSwgZWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBlY0tleS5r
ZXlTaXplSW5CaXRzKCkgLyA4KTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9D
cnlwdG9LZXlFQy5oCmluZGV4IGM2Mzk4YzBjYjViYzkzN2E0ZTEzMmY1ZGZlNDJkM2FmNTcwMDE2
ZTIuLjg5NzdlZDk5ZGFmMzc2OGFjMTg2ZmY5NzcwYzc3YzU2MThkNDVlMTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuaApAQCAtOTMsNyArOTMsNyBAQCBwdWJsaWM6
CiAgICAgc2l6ZV90IGtleVNpemVJbkJpdHMoKSBjb25zdDsKICAgICBOYW1lZEN1cnZlIG5hbWVk
Q3VydmUoKSBjb25zdCB7IHJldHVybiBtX2N1cnZlOyB9CiAgICAgU3RyaW5nIG5hbWVkQ3VydmVT
dHJpbmcoKSBjb25zdDsKLSAgICBQbGF0Zm9ybUVDS2V5IHBsYXRmb3JtS2V5KCkgeyByZXR1cm4g
bV9wbGF0Zm9ybUtleTsgfQorICAgIFBsYXRmb3JtRUNLZXkgcGxhdGZvcm1LZXkoKSBjb25zdCB7
IHJldHVybiBtX3BsYXRmb3JtS2V5OyB9CiAgICAgc3RhdGljIGJvb2wgaXNWYWxpZEVDQWxnb3Jp
dGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1FQ0RITWFjLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNESE1hYy5jcHAKaW5kZXgg
Zjg0YzcyYTcxYTk2ZjViYmY2NGRlN2M4NGVhYmRlNjIwNWZmNWQxMC4uNzkyNDlhZWZhNjY5MmRm
OGQyMzNmYWZkMjExYzIwMmZhYTdlZGQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL21hYy9DcnlwdG9BbGdvcml0aG1FQ0RITWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDREhNYWMuY3BwCkBAIC0zMCwyOCArMzAsMjAgQEAK
IAogI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tl
eUVDLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNESDo6cGxhdGZvcm1EZXJpdmVCaXRz
KFJlZjxDcnlwdG9LZXk+JiYgYmFzZUtleSwgUmVmPENyeXB0b0tleT4mJiBwdWJsaWNLZXksIHNp
emVfdCBsZW5ndGgsIENhbGxiYWNrJiYgY2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IENyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhjb25zdCBDcnlw
dG9LZXkmIGJhc2VLZXksIGNvbnN0IENyeXB0b0tleSYgcHVibGljS2V5KQogewotICAgIGNvbnRl
eHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtiYXNlS2V5ID0gV1RGTW92ZShiYXNl
S2V5KSwgcHVibGljS2V5ID0gV1RGTW92ZShwdWJsaWNLZXkpLCBsZW5ndGgsIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiBl
Y0Jhc2VLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oYmFzZUtleS5nZXQoKSk7Ci0gICAgICAg
IGF1dG8mIGVjUHVibGljS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5RUM+KHB1YmxpY0tleS5nZXQo
KSk7Ci0KLSAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHJlc3VsdCA9IHN0
ZDo6bnVsbG9wdDsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRlcml2ZWRLZXkoZWNCYXNlS2V5
LmtleVNpemVJbkJpdHMoKSAvIDgpOyAvLyBQZXIgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1s
L3JmYzYwOTAjc2VjdGlvbi00LgotICAgICAgICBzaXplX3Qgc2l6ZSA9IGRlcml2ZWRLZXkuc2l6
ZSgpOwotICAgICAgICBpZiAoIUNDRUNDcnlwdG9yQ29tcHV0ZVNoYXJlZFNlY3JldChlY0Jhc2VL
ZXkucGxhdGZvcm1LZXkoKSwgZWNQdWJsaWNLZXkucGxhdGZvcm1LZXkoKSwgZGVyaXZlZEtleS5k
YXRhKCksICZzaXplKSkKLSAgICAgICAgICAgIHJlc3VsdCA9IFdURk1vdmUoZGVyaXZlZEtleSk7
Ci0KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCBs
ZW5ndGgsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1
bHQpLCBsZW5ndGgpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsK
LSAgICB9KTsKKyAgICBhdXRvJiBlY0Jhc2VLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oYmFz
ZUtleSk7CisgICAgYXV0byYgZWNQdWJsaWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4ocHVi
bGljS2V5KTsKKworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiByZXN1bHQgPSBz
dGQ6Om51bGxvcHQ7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRlcml2ZWRLZXkoZWNCYXNlS2V5Lmtl
eVNpemVJbkJpdHMoKSAvIDgpOyAvLyBQZXIgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3Jm
YzYwOTAjc2VjdGlvbi00LgorICAgIHNpemVfdCBzaXplID0gZGVyaXZlZEtleS5zaXplKCk7Cisg
ICAgaWYgKCFDQ0VDQ3J5cHRvckNvbXB1dGVTaGFyZWRTZWNyZXQoZWNCYXNlS2V5LnBsYXRmb3Jt
S2V5KCksIGVjUHVibGljS2V5LnBsYXRmb3JtS2V5KCksIGRlcml2ZWRLZXkuZGF0YSgpLCAmc2l6
ZSkpCisgICAgICAgIHJlc3VsdCA9IFdURk1vdmUoZGVyaXZlZEtleSk7CisgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1FQ0RTQU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobUVDRFNBTWFjLmNwcAppbmRleCA5ZTNmOTNhMTk1NzBmZWM1ODk4ZmViNTYwNGZl
NTQ0MzJlMDY3MTg2Li41ODMyMDRlOTdlNzUwODA2MDMxMGQ2NWEyMGRjYmQxODM1ZWQ5ZGJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDRFNB
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVD
RFNBTWFjLmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUVj
ZHNhUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0QWxnb3JpdGhtLmgiCiAjaW5jbHVk
ZSAiQ3J5cHRvS2V5RUMuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTUyLDUyICsxNTEsMTggQEAgc3RhdGljIEV4Y2Vw
dGlvbk9yPGJvb2w+IHZlcmlmeUVDRFNBKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwg
Y29uc3QgUGxhdGYKICAgICByZXR1cm4gdmFsaWQ7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGht
RUNEU0E6OnBsYXRmb3JtU2lnbihzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBl
eGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1
ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29y
aXRobUVDRFNBOjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYg
cGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
CiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW3BhcmFtZXRl
cnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIGRhdGEgPSBXVEZN
b3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oa2V5LmdldCgpKTsKLSAg
ICAgICAgYXV0byYgZWNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQ
YXJhbXM+KCpwYXJhbWV0ZXJzKTsKLQotICAgICAgICBhdXRvIHJlc3VsdCA9IHNpZ25FQ0RTQShl
Y1BhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIGVjS2V5LnBsYXRmb3JtS2V5KCksIGVjS2V5Lmtl
eVNpemVJbkJpdHMoKSAvIDgsIGRhdGEpOwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFj
a3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAg
ICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spLCBlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOwotICAgICAgICAg
ICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNh
bGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4K
LSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
cmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBleGNlcHRpb25DYWxsYmFjayA9
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29udGV4
dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiBlY0tleSA9IGRvd25j
YXN0PENyeXB0b0tleUVDPihrZXkpOworICAgIGF1dG8mIGVjUGFyYW1ldGVycyA9IGRvd25jYXN0
PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihwYXJhbWV0ZXJzKTsKKyAgICByZXR1cm4gc2ln
bkVDRFNBKGVjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgZWNLZXkucGxhdGZvcm1LZXkoKSwg
ZWNLZXkua2V5U2l6ZUluQml0cygpIC8gOCwgZGF0YSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3Jp
dGhtRUNEU0E6OnBsYXRmb3JtVmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWlu
dDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYm
IGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlv
bk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwg
VmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewot
ICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0g
V1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZN
b3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2sp
LCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxD
cnlwdG9LZXlFQz4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byYgZWNQYXJhbWV0ZXJzID0gZG93
bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXM+KCpwYXJhbWV0ZXJzKTsKLQotICAgICAg
ICBhdXRvIHJlc3VsdCA9IHZlcmlmeUVDRFNBKGVjUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwg
ZWNLZXkucGxhdGZvcm1LZXkoKSwgZWNLZXkua2V5U2l6ZUluQml0cygpIC8gOCwgc2lnbmF0dXJl
LCBkYXRhKTsKLSAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAg
ICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJh
Y2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5w
b3N0VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwg
ZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRl
cmVmKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVp
bmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgIGNvbnRleHQu
cG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IHJlc3VsdC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlv
bkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAg
ICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAg
ICAgfSk7Ci0gICAgfSk7CisgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4o
a2V5KTsKKyAgICBhdXRvJiBlY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1F
Y2RzYVBhcmFtcz4ocGFyYW1ldGVycyk7CisgICAgcmV0dXJuIHZlcmlmeUVDRFNBKGVjUGFyYW1l
dGVycy5oYXNoSWRlbnRpZmllciwgZWNLZXkucGxhdGZvcm1LZXkoKSwgZWNLZXkua2V5U2l6ZUlu
Qml0cygpIC8gOCwgc2lnbmF0dXJlLCBkYXRhKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318624</attachid>
            <date>2017-08-21 04:13:30 -0700</date>
            <delta_ts>2017-08-25 01:00:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175619-20170821131329.patch</filename>
            <type>text/plain</type>
            <size>25066</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYwNzE3OGZkMTRjYWI1
NTg0NzBjNTAyYzM5NjY5YmQ2OWRmNDVlOC4uZmMyZmE4YzhhMGY4MzlkODdjOWNiYTg0NzZkYjI0
MWE3NDJmNDQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDE3LTA4LTIxICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBFQyBhbGdvcml0aG1zIGludG8gc2hhcmVkIGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTYx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFB1c2gg
dGhlIFdvcmtRdWV1ZSBkaXNwYXRjaCBjb2RlIGR1cGxpY2F0ZWQgYmV0d2VlbiB0aGUgTWFjIGFu
ZCBsaWJnY3J5cHQKKyAgICAgICAgaW1wbGVtZW50YXRpb25zIG9mIFdlYiBDcnlwdG8gaW50byB0
aGUgc2hhcmVkIGxheWVyLiBUaGlzIHBhdGNoIGZvY3VzZXMgb24KKyAgICAgICAgdGhlIEVDLWJh
c2VkIGFsZ29yaXRobXMuCisKKyAgICAgICAgRnVuY3Rpb25zIHdpdGggcGxhdGZvcm0tc3BlY2lm
aWMgaW1wbGVtZW50YXRpb25zIHRoYXQgYXJlIGludm9rZWQgZnJvbQorICAgICAgICB0aGVzZSBh
c3luY2hyb25vdXMgZGlzcGF0Y2hlcyBhcmUgbWFkZSBzdGF0aWMgYW5kIHJldHVybiBhbiBFeGNl
cHRpb25PciBvcgorICAgICAgICBzdGQ6Om9wdGlvbmFsIHZhbHVlLiBDcnlwdG9LZXkgYW5kIENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMgb2JqZWN0cyBhcmUKKyAgICAgICAgcGFzc2VkIHRvIHRo
b3NlIHRocm91Z2ggY29uc3QgcmVmZXJlbmNlcy4gSW5wdXQgZGF0YSBpcyBwYXNzZWQgdGhyb3Vn
aAorICAgICAgICBjb25zdCByZWZlcmVuY2VzIHRvIHRoZSBvcmlnaW5hbCBWZWN0b3Igb2JqZWN0
cy4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gbm8gY2hhbmdlcyBpbiBiZWhhdmlvciB0aGF0
J3MgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGNyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtRUNESDo6ZGVyaXZlQml0cyk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtRUNESC5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUVDRFNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDRFNB
OjpzaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDRFNBOjp2ZXJpZnkp
OgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDRFNBLmg6Cisg
ICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyk6
CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1TaWduKToK
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVZlcmlmeSk6
CisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuaDoKKyAgICAgICAgKiBjcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobUVDREhNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtRUNESDo6cGxhdGZvcm1EZXJpdmVCaXRzKToKKyAgICAgICAgKiBjcnlwdG8vbWFj
L0NyeXB0b0FsZ29yaXRobUVDRFNBTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobUVDRFNBOjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtRUNEU0E6OnBsYXRmb3JtVmVyaWZ5KToKKwogMjAxNy0wOC0yMCAgWmFuIERvYmVyc2Vr
ICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0VNRV0gQWRkIGJhc2ljIGltcGxl
bWVudGF0aW9uIG9mIEhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhS2V5cygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RILmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREgu
Y3BwCmluZGV4IDYzMTBkNDQ3NDM2ZmNhOWM0YWRkMjI2OTM5ZWVlYjIwYzdjY2EyNWEuLmM0MGYw
YjU1YTI1ZGZhOWYyOTdiNjA3MTc0N2IzNzAyMTIzMDdkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtRWNLZXlQYXJhbXMuaCIK
ICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1FY2RoS2V5RGVyaXZlUGFyYW1zLmgiCiAjaW5jbHVk
ZSAiQ3J5cHRvS2V5RUMuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTEyLDcgKzExMywxNyBAQCB2b2lkIENyeXB0b0Fs
Z29yaXRobUVDREg6OmRlcml2ZUJpdHMoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnM+JgogICAgICAgICAoKmRlcml2ZWRLZXkpLnNocmluayhsZW5ndGggLyA4KTsKICAg
ICAgICAgY2FsbGJhY2soV1RGTW92ZSgqZGVyaXZlZEtleSkpOwogICAgIH07Ci0gICAgcGxhdGZv
cm1EZXJpdmVCaXRzKFdURk1vdmUoYmFzZUtleSksIGVjUGFyYW1ldGVycy5wdWJsaWNLZXkucmVs
ZWFzZU5vbk51bGwoKSwgbGVuZ3RoLCBXVEZNb3ZlKHVuaWZpZWRDYWxsYmFjayksIGNvbnRleHQs
IHdvcmtRdWV1ZSk7CisKKyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRj
aCgKKyAgICAgICAgW2Jhc2VLZXkgPSBXVEZNb3ZlKGJhc2VLZXkpLCBwdWJsaWNLZXkgPSBlY1Bh
cmFtZXRlcnMucHVibGljS2V5LnJlbGVhc2VOb25OdWxsKCksIGxlbmd0aCwgdW5pZmllZENhbGxi
YWNrID0gV1RGTW92ZSh1bmlmaWVkQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGF1dG8gZGVyaXZlZEtleSA9IHBsYXRmb3JtRGVyaXZlQml0cyhiYXNlS2V5LCBw
dWJsaWNLZXkpOworICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAg
ICBbZGVyaXZlZEtleSA9IFdURk1vdmUoZGVyaXZlZEtleSksIGxlbmd0aCwgdW5pZmllZENhbGxi
YWNrID0gV1RGTW92ZSh1bmlmaWVkQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgdW5pZmllZENhbGxiYWNrKFdU
Rk1vdmUoZGVyaXZlZEtleSksIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQu
ZGVyZWYoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5
cHRvQWxnb3JpdGhtRUNESDo6aW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCBmb3JtYXQsIEtleURh
dGEmJiBkYXRhLCBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cz4mJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1
c2FnZXMsIEtleUNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0
aW9uQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1FQ0RILmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1FQ0RILmgKaW5kZXggNDJlZWRmNTE4MTAzNGZhMjFmN2NjODBhMjAz
NjdjZWFiNDYwNjI5Yi4uNjkwMTMyYjVhODAxOGNlM2JhM2U1MzNkODI1OGM5OTE5OWNhZTg5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtRUNESC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUVDREguaApAQCAtNDYsOCArNDYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW1wb3J0
S2V5KENyeXB0b0tleUZvcm1hdCwgS2V5RGF0YSYmLCBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNh
Z2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAg
IHZvaWQgZXhwb3J0S2V5KENyeXB0b0tleUZvcm1hdCwgUmVmPENyeXB0b0tleT4mJiwgS2V5RGF0
YUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogCi0gICAgdXNpbmcgQ2Fs
bGJhY2sgPSBGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiYmLCBz
aXplX3QpPjsKLSAgICB2b2lkIHBsYXRmb3JtRGVyaXZlQml0cyhSZWY8Q3J5cHRvS2V5PiYmIGJh
c2VLZXksIFJlZjxDcnlwdG9LZXk+JiYgcHVibGljS2V5LCBzaXplX3QgbGVuZ3RoLCBDYWxsYmFj
ayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7CisgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybURlcml2ZUJpdHMoY29uc3QgQ3J5
cHRvS2V5JiwgY29uc3QgQ3J5cHRvS2V5Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1FQ0RTQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1FQ0RTQS5jcHAKaW5kZXggNTM0ODEzZjA4NGNjMDViYTliNjdiMjQ4MTE5YzBkNzFm
YzJkZDkzMi4uYmM0Mzk4MDE2YzIyYjg3MTQxZDAwNzIyYmQwYTJmN2U5NWMyMzY0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNE
U0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUVDRFNBLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3Jp
dGhtRWNLZXlQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlFQy5oIgorI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw3
ICs1NSwyNiBAQCB2b2lkIENyeXB0b0FsZ29yaXRobUVDRFNBOjpzaWduKHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcgogICAgICAgICBleGNlcHRpb25DYWxs
YmFjayhJbnZhbGlkQWNjZXNzRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHBs
YXRmb3JtU2lnbihXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGtleSksIFdURk1vdmUoZGF0
YSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4
dCwgd29ya1F1ZXVlKTsKKworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3Bh
dGNoKAorICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdU
Rk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZj
b250ZXh0XSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBwbGF0Zm9ybVNp
Z24oKnBhcmFtZXRlcnMsIGtleSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkg
ZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dv
cmtlciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2VjID0gcmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9uQ2FsbGJhY2soZWMpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Cisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3Mg
YWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKFtyZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVl
KCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RG
TW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgICAgIGNv
bnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKIH0KIAogdm9pZCBD
cnlwdG9BbGdvcml0aG1FQ0RTQTo6dmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8
dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFj
ayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKQEAgLTYz
LDcgKzgzLDI4IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnZlcmlmeShzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwCiAgICAgICAgIGV4Y2VwdGlvbkNh
bGxiYWNrKEludmFsaWRBY2Nlc3NFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
cGxhdGZvcm1WZXJpZnkoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShrZXkpLCBXVEZNb3Zl
KHNpZ25hdHVyZSksIFdURk1vdmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGNvbnRleHQucmVm
KCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAorICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1v
dmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgc2lnbmF0dXJlID0gV1RGTW92ZShz
aWduYXR1cmUpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNv
bnRleHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHBsYXRmb3JtVmVy
aWZ5KCpwYXJhbWV0ZXJzLCBrZXksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZShkYXRhKSk7
CisgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAg
ICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJh
Y2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNvbnRl
eHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgICAgIFtlYyA9IHJlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25D
YWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFj
ayhlYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFm
dGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAg
ICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJl
bGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7
CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OmdlbmVyYXRl
S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RTQS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNEU0EuaAppbmRleCAwNjBkZDNjYjNjNzc5ODZh
ZjllODY4OWYyYWZlZmVlZmUyNjJlODM4Li5lMWRmODgwOWE2ZjBjYTM2NWZhMzNlZTE2NTQyMDk3
YWY5ZTI1ZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1FQ0RTQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUVDRFNBLmgKQEAgLTQ3LDggKzQ3LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUs
IENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYm
KSBmaW5hbDsKICAgICB2b2lkIGV4cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIFJlZjxDcnlwdG9L
ZXk+JiYsIEtleURhdGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAot
ICAgIHZvaWQgcGxhdGZvcm1TaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2Fs
bGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdv
cmtRdWV1ZSYpOwotICAgIHZvaWQgcGxhdGZvcm1WZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90
PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYsIEJvb2xDYWxsYmFjayYmLCBFeGNlcHRp
b25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7CisgICAg
c3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1TaWduKGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gcGxhdGZvcm1WZXJpZnko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNESEdDcnlwdC5jcHAKaW5kZXggOWRiMmI0MjViYWRjNGFl
N2ZmZjNhM2QxYzI1N2I5ZjEwNjI2YTA5Yy4uYzhhNGZkODE2YmEyYjYyN2JlOGFhNGUyYjJjYWQ4
YzFkNDM3NWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1FQ0RIR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5cHQuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaWYg
RU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKICNpbmNsdWRlICJDcnlwdG9LZXlFQy5oIgotI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvY3J5cHRvL2djcnlw
dC9IYW5kbGUuaD4KICNpbmNsdWRlIDxwYWwvY3J5cHRvL2djcnlwdC9VdGlsaXRpZXMuaD4KIApA
QCAtMTE2LDIxICsxMTUsOSBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGdjcnlwdERlcml2ZShnY3J5X3NleHBfdCBiYXNlS2V5U2V4cCwgZ2NyeQogICAgIHJldHVybiBv
dXRwdXQ7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNESDo6cGxhdGZvcm1EZXJpdmVCaXRz
KFJlZjxDcnlwdG9LZXk+JiYgYmFzZUtleSwgUmVmPENyeXB0b0tleT4mJiBwdWJsaWNLZXksIHNp
emVfdCBsZW5ndGgsIENhbGxiYWNrJiYgY2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IENyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhjb25zdCBDcnlw
dG9LZXkmIGJhc2VLZXksIGNvbnN0IENyeXB0b0tleSYgcHVibGljS2V5KQogewotICAgIGNvbnRl
eHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBbYmFzZUtleSA9IFdU
Rk1vdmUoYmFzZUtleSksIHB1YmxpY0tleSA9IFdURk1vdmUocHVibGljS2V5KSwgbGVuZ3RoLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgICAgIGF1dG8mIGVjQmFzZUtleSA9IGRvd25jYXN0PENyeXB0b0tleUVDPihiYXNlS2V5Lmdl
dCgpKTsKLSAgICAgICAgICAgIGF1dG8mIGVjUHVibGljS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5
RUM+KHB1YmxpY0tleS5nZXQoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0
RGVyaXZlKGVjQmFzZUtleS5wbGF0Zm9ybUtleSgpLCBlY1B1YmxpY0tleS5wbGF0Zm9ybUtleSgp
KTsKLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgW291dHB1
dCA9IFdURk1vdmUob3V0cHV0KSwgbGVuZ3RoLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgICAg
ICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShvdXRwdXQpLCBsZW5ndGgpOwotICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0p
OworICAgIHJldHVybiBnY3J5cHREZXJpdmUoZG93bmNhc3Q8Q3J5cHRvS2V5RUM+KGJhc2VLZXkp
LnBsYXRmb3JtS2V5KCksIGRvd25jYXN0PENyeXB0b0tleUVDPihwdWJsaWNLZXkpLnBsYXRmb3Jt
S2V5KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3Bw
CmluZGV4IDRkNWVkYWRiNTllZmVkZGZmN2ViYzdmNDk5YmVmOGFjZWNjNjY2ZWEuLjc0OTBlY2E3
MjA4ZGEyZTFhYTZjYTVhZmJjN2RjMzVkZDA1ZmZhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3Bw
CkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXMu
aCIKICNpbmNsdWRlICJDcnlwdG9LZXlFQy5oIgogI2luY2x1ZGUgIkdDcnlwdFV0aWxpdGllcy5o
IgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvY3J5
cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNzEsNjAgKzE3
MCwyNiBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhw
X3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4XwogICAgIHJldHVybiB7IGVycm9yID09IEdQ
R19FUlJfTk9fRVJST1IgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZv
cm1TaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFt
ZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0
b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxi
YWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1
ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBs
YXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBj
b25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAg
IGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBbcGFyYW1l
dGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdU
Rk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewot
ICAgICAgICAgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oa2V5LmdldCgp
KTsKLSAgICAgICAgICAgIGF1dG8mIGVjUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29y
aXRobUVjZHNhUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0
ID0gZ2NyeXB0U2lnbihlY0tleS5wbGF0Zm9ybUtleSgpLCBkYXRhLCBlY1BhcmFtZXRlcnMuaGFz
aElkZW50aWZpZXIsIGVjS2V5LmtleVNpemVJbkJpdHMoKSAvIDgpOwotICAgICAgICAgICAgaWYg
KCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5j
ZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVh
ZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICAg
ICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RG
TW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVy
cm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0
ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAg
ICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpv
dXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
fSk7CisgICAgYXV0byYgZWNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtRWNk
c2FQYXJhbXM+KHBhcmFtZXRlcnMpOworICAgIGF1dG8mIGVjS2V5ID0gZG93bmNhc3Q8Q3J5cHRv
S2V5RUM+KGtleSk7CisKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFNpZ24oZWNLZXkucGxhdGZv
cm1LZXkoKSwgZGF0YSwgZWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBlY0tleS5rZXlTaXpl
SW5CaXRzKCkgLyA4KTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CiB9CiAK
LXZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtVmVyaWZ5KHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+
JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlv
bkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdv
cmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9y
bVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtR
dWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwgZGF0
YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFi
bGUgewotICAgICAgICAgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oa2V5
LmdldCgpKTsKLSAgICAgICAgICAgIGF1dG8mIGVjUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0
b0FsZ29yaXRobUVjZHNhUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGF1dG8g
b3V0cHV0ID0gZ2NyeXB0VmVyaWZ5KGVjS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVyZSwgZGF0
YSwgZWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBlY0tleS5rZXlTaXplSW5CaXRzKCkgLyA4
KTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hv
dWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERv
Y3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2so
Ci0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25D
YWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZl
cmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0
aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICBb
b3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
ZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhv
dXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8mIGVjUGFyYW1ldGVycyA9IGRvd25jYXN0
PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihwYXJhbWV0ZXJzKTsKKyAgICBhdXRvJiBlY0tl
eSA9IGRvd25jYXN0PENyeXB0b0tleUVDPihrZXkpOworCisgICAgYXV0byBvdXRwdXQgPSBnY3J5
cHRWZXJpZnkoZWNLZXkucGxhdGZvcm1LZXkoKSwgc2lnbmF0dXJlLCBkYXRhLCBlY1BhcmFtZXRl
cnMuaGFzaElkZW50aWZpZXIsIGVjS2V5LmtleVNpemVJbkJpdHMoKSAvIDgpOworICAgIGlmICgh
b3V0cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKyAg
ICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmgKaW5kZXggZmUxMDRjMzY1NTFh
YzkyYzg1ZDU2MGZiYWQ3NjUwOTkxNDJjODI4YS4uODBkZGY2YzJhNmVhNzE3ZDM1OWIzZjVlZDVk
YTBiMzRiMGVjYTQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5
cHRvS2V5RUMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlFQy5o
CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzaXplX3Qga2V5U2l6ZUluQml0cygpIGNv
bnN0OwogICAgIE5hbWVkQ3VydmUgbmFtZWRDdXJ2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VydmU7
IH0KICAgICBTdHJpbmcgbmFtZWRDdXJ2ZVN0cmluZygpIGNvbnN0OwotICAgIFBsYXRmb3JtRUNL
ZXkgcGxhdGZvcm1LZXkoKSB7IHJldHVybiBtX3BsYXRmb3JtS2V5OyB9CisgICAgUGxhdGZvcm1F
Q0tleSBwbGF0Zm9ybUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1LZXk7IH0KICAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkRUNBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcik7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobUVDREhNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1FQ0RITWFjLmNwcAppbmRleCBmODRjNzJhNzFhOTZmNWJiZjY0ZGU3Yzg0ZWFiZGU2
MjA1ZmY1ZDEwLi43OTI0OWFlZmE2NjkyZGY4ZDIzM2ZhZmQyMTFjMjAyZmFhN2VkZDA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDREhNYWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNESE1h
Yy5jcHAKQEAgLTMwLDI4ICszMCwyMCBAQAogCiAjaW5jbHVkZSAiQ29tbW9uQ3J5cHRvVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5RUMuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0
aG1FQ0RIOjpwbGF0Zm9ybURlcml2ZUJpdHMoUmVmPENyeXB0b0tleT4mJiBiYXNlS2V5LCBSZWY8
Q3J5cHRvS2V5PiYmIHB1YmxpY0tleSwgc2l6ZV90IGxlbmd0aCwgQ2FsbGJhY2smJiBjYWxsYmFj
aywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUp
CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtRUNESDo6cGxh
dGZvcm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0b0tleSYgYmFzZUtleSwgY29uc3QgQ3J5cHRvS2V5
JiBwdWJsaWNLZXkpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0
Y2goW2Jhc2VLZXkgPSBXVEZNb3ZlKGJhc2VLZXkpLCBwdWJsaWNLZXkgPSBXVEZNb3ZlKHB1Ymxp
Y0tleSksIGxlbmd0aCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgJmNvbnRleHRdKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGVjQmFzZUtleSA9IGRvd25jYXN0PENyeXB0b0tleUVD
PihiYXNlS2V5LmdldCgpKTsKLSAgICAgICAgYXV0byYgZWNQdWJsaWNLZXkgPSBkb3duY2FzdDxD
cnlwdG9LZXlFQz4ocHVibGljS2V5LmdldCgpKTsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gcmVzdWx0ID0gc3RkOjpudWxsb3B0OwotICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gZGVyaXZlZEtleShlY0Jhc2VLZXkua2V5U2l6ZUluQml0cygpIC8gOCk7IC8vIFBlciBo
dHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjA5MCNzZWN0aW9uLTQuCi0gICAgICAgIHNp
emVfdCBzaXplID0gZGVyaXZlZEtleS5zaXplKCk7Ci0gICAgICAgIGlmICghQ0NFQ0NyeXB0b3JD
b21wdXRlU2hhcmVkU2VjcmV0KGVjQmFzZUtleS5wbGF0Zm9ybUtleSgpLCBlY1B1YmxpY0tleS5w
bGF0Zm9ybUtleSgpLCBkZXJpdmVkS2V5LmRhdGEoKSwgJnNpemUpKQotICAgICAgICAgICAgcmVz
dWx0ID0gV1RGTW92ZShkZXJpdmVkS2V5KTsKLQotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFty
ZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksIGxlbmd0aCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAg
ICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCksIGxlbmd0aCk7Ci0gICAgICAgICAgICBjb250
ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIGF1dG8mIGVjQmFzZUtleSA9
IGRvd25jYXN0PENyeXB0b0tleUVDPihiYXNlS2V5KTsKKyAgICBhdXRvJiBlY1B1YmxpY0tleSA9
IGRvd25jYXN0PENyeXB0b0tleUVDPihwdWJsaWNLZXkpOworCisgICAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IHJlc3VsdCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBWZWN0b3I8dWludDhf
dD4gZGVyaXZlZEtleShlY0Jhc2VLZXkua2V5U2l6ZUluQml0cygpIC8gOCk7IC8vIFBlciBodHRw
czovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjA5MCNzZWN0aW9uLTQuCisgICAgc2l6ZV90IHNp
emUgPSBkZXJpdmVkS2V5LnNpemUoKTsKKyAgICBpZiAoIUNDRUNDcnlwdG9yQ29tcHV0ZVNoYXJl
ZFNlY3JldChlY0Jhc2VLZXkucGxhdGZvcm1LZXkoKSwgZWNQdWJsaWNLZXkucGxhdGZvcm1LZXko
KSwgZGVyaXZlZEtleS5kYXRhKCksICZzaXplKSkKKyAgICAgICAgcmVzdWx0ID0gV1RGTW92ZShk
ZXJpdmVkS2V5KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDRFNBTWFjLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNEU0FNYWMuY3BwCmluZGV4IDll
M2Y5M2ExOTU3MGZlYzU4OThmZWI1NjA0ZmU1NDQzMmUwNjcxODYuLmE0Mjk3MTMzMzE4ZDk4OTAw
Mzg1ZmU4ZjMwYTViYWE2MzQ1NDRlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNEU0FNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNEU0FNYWMuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAj
aW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9E
aWdlc3RBbGdvcml0aG0uaCIKICNpbmNsdWRlICJDcnlwdG9LZXlFQy5oIgotI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNTIs
NTIgKzE1MSwxOCBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gdmVyaWZ5RUNEU0EoQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBjb25zdCBQbGF0ZgogICAgIHJldHVybiB2YWxpZDsK
IH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1TaWduKHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9L
ZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxi
YWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtU2lnbihjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtl
eSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0g
ICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwg
a2V5ID0gV1RGTW92ZShrZXkpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGVjS2V5ID0gZG93bmNh
c3Q8Q3J5cHRvS2V5RUM+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1dG8mIGVjUGFyYW1ldGVycyA9
IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0KLSAg
ICAgICAgYXV0byByZXN1bHQgPSBzaWduRUNEU0EoZWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVy
LCBlY0tleS5wbGF0Zm9ybUtleSgpLCBlY0tleS5rZXlTaXplSW5CaXRzKCkgLyA4LCBkYXRhKTsK
LSAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgLy8gV2Ug
c2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhl
IERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzayhb
ZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgZWMgPSByZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbkNhbGxiYWNrKGVjKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAv
LyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0
byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgIGNvbnRleHQucG9zdFRhc2so
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0
dXJuVmFsdWUoKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgY2FsbGJh
Y2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgfSk7Ci0g
ICAgfSk7CisgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oa2V5KTsKKyAg
ICBhdXRvJiBlY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFt
cz4ocGFyYW1ldGVycyk7CisgICAgcmV0dXJuIHNpZ25FQ0RTQShlY1BhcmFtZXRlcnMuaGFzaElk
ZW50aWZpZXIsIGVjS2V5LnBsYXRmb3JtS2V5KCksIGVjS2V5LmtleVNpemVJbkJpdHMoKSAvIDgs
IGRhdGEpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVZlcmlmeShz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBS
ZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8
dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJh
Y2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
V29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1F
Q0RTQTo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2ln
bmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7Ci0gICAgY29udGV4dC5yZWYo
KTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwg
ZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2Vw
dGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11
dGFibGUgewotICAgICAgICBhdXRvJiBlY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUVDPihrZXku
Z2V0KCkpOwotICAgICAgICBhdXRvJiBlY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdv
cml0aG1FY2RzYVBhcmFtcz4oKnBhcmFtZXRlcnMpOwotCi0gICAgICAgIGF1dG8gcmVzdWx0ID0g
dmVyaWZ5RUNEU0EoZWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBlY0tleS5wbGF0Zm9ybUtl
eSgpLCBlY0tleS5rZXlTaXplSW5CaXRzKCkgLyA4LCBzaWduYXR1cmUsIGRhdGEpOwotICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQg
b25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1l
bnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBlYyA9IHJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soZWMpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNo
b3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBE
b2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1
ZSgpLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1
bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsK
KyAgICBhdXRvJiBlY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUVDPihrZXkpOworICAgIGF1dG8m
IGVjUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihwYXJh
bWV0ZXJzKTsKKyAgICByZXR1cm4gdmVyaWZ5RUNEU0EoZWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlm
aWVyLCBlY0tleS5wbGF0Zm9ybUtleSgpLCBlY0tleS5rZXlTaXplSW5CaXRzKCkgLyA4LCBzaWdu
YXR1cmUsIGRhdGEpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319069</attachid>
            <date>2017-08-25 01:00:10 -0700</date>
            <delta_ts>2017-08-29 01:06:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175619-20170825100008.patch</filename>
            <type>text/plain</type>
            <size>23071</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVlYWI3MzAwNzI0MDIy
NTMxNmRkZjc5NWUyZGYwMzhmZWRkM2NlMy4uNWU2MmMwNWE0NjVlYzJhMTNkODdkYjJhM2I4YmM1
NTNjM2RiMDhkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDE3LTA4LTI1ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBFQyBhbGdvcml0aG1zIGludG8gc2hhcmVkIGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTYx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFB1c2gg
dGhlIFdvcmtRdWV1ZSBkaXNwYXRjaCBjb2RlIGR1cGxpY2F0ZWQgYmV0d2VlbiB0aGUgTWFjIGFu
ZCBsaWJnY3J5cHQKKyAgICAgICAgaW1wbGVtZW50YXRpb25zIG9mIFdlYiBDcnlwdG8gaW50byB0
aGUgc2hhcmVkIGxheWVyLiBUaGlzIHBhdGNoIGZvY3VzZXMgb24KKyAgICAgICAgdGhlIEVDLWJh
c2VkIGFsZ29yaXRobXMuCisKKyAgICAgICAgRnVuY3Rpb25zIHdpdGggcGxhdGZvcm0tc3BlY2lm
aWMgaW1wbGVtZW50YXRpb25zIHRoYXQgYXJlIGludm9rZWQgZnJvbQorICAgICAgICB0aGVzZSBh
c3luY2hyb25vdXMgZGlzcGF0Y2hlcyBhcmUgbWFkZSBzdGF0aWMgYW5kIHJldHVybiBhbiBFeGNl
cHRpb25PciBvcgorICAgICAgICBzdGQ6Om9wdGlvbmFsIHZhbHVlLiBDcnlwdG9LZXkgYW5kIENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMgb2JqZWN0cyBhcmUKKyAgICAgICAgcGFzc2VkIHRvIHRo
b3NlIHRocm91Z2ggY29uc3QgcmVmZXJlbmNlcy4gSW5wdXQgZGF0YSBpcyBwYXNzZWQgdGhyb3Vn
aAorICAgICAgICBjb25zdCByZWZlcmVuY2VzIHRvIHRoZSBvcmlnaW5hbCBWZWN0b3Igb2JqZWN0
cy4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gbm8gY2hhbmdlcyBpbiBiZWhhdmlvciB0aGF0
J3MgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGNyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtRUNESDo6ZGVyaXZlQml0cyk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtRUNESC5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUVDRFNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDRFNB
OjpzaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDRFNBOjp2ZXJpZnkp
OgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDRFNBLmg6Cisg
ICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyk6
CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1TaWduKToK
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVZlcmlmeSk6
CisgICAgICAgICogY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuaDoKKyAgICAgICAgKiBjcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobUVDREhNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtRUNESDo6cGxhdGZvcm1EZXJpdmVCaXRzKToKKyAgICAgICAgKiBjcnlwdG8vbWFj
L0NyeXB0b0FsZ29yaXRobUVDRFNBTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0Fs
Z29yaXRobUVDRFNBOjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtRUNEU0E6OnBsYXRmb3JtVmVyaWZ5KToKKworMjAxNy0wOC0yNSAgWmFuIERvYmVyc2Vr
ICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKICAgICAgICAgW1dlYkNyeXB0b10gUHVzaCBXb3Jr
UXVldWUgZGlzcGF0Y2hlcyBmb3IgUlNBIGFsZ29yaXRobXMgaW50byBzaGFyZWQgY29kZQogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NjIxCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUVDREguY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtRUNESC5jcHAKaW5kZXggNjMxMGQ0NDc0MzZmY2E5YzRhZGQyMjY5MzllZWViMjBjN2NjYTI1
YS4uYzQwZjBiNTVhMjVkZmE5ZjI5N2I2MDcxNzQ3YjM3MDIxMjMwN2RiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNESC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNE
SC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1FY0tleVBh
cmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUVjZGhLZXlEZXJpdmVQYXJhbXMuaCIK
ICNpbmNsdWRlICJDcnlwdG9LZXlFQy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMTIsNyArMTEzLDE3IEBAIHZvaWQg
Q3J5cHRvQWxnb3JpdGhtRUNESDo6ZGVyaXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4mCiAgICAgICAgICgqZGVyaXZlZEtleSkuc2hyaW5rKGxlbmd0aCAv
IDgpOwogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCpkZXJpdmVkS2V5KSk7CiAgICAgfTsKLSAg
ICBwbGF0Zm9ybURlcml2ZUJpdHMoV1RGTW92ZShiYXNlS2V5KSwgZWNQYXJhbWV0ZXJzLnB1Ymxp
Y0tleS5yZWxlYXNlTm9uTnVsbCgpLCBsZW5ndGgsIFdURk1vdmUodW5pZmllZENhbGxiYWNrKSwg
Y29udGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVl
LmRpc3BhdGNoKAorICAgICAgICBbYmFzZUtleSA9IFdURk1vdmUoYmFzZUtleSksIHB1YmxpY0tl
eSA9IGVjUGFyYW1ldGVycy5wdWJsaWNLZXkucmVsZWFzZU5vbk51bGwoKSwgbGVuZ3RoLCB1bmlm
aWVkQ2FsbGJhY2sgPSBXVEZNb3ZlKHVuaWZpZWRDYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFi
bGUgeworICAgICAgICAgICAgYXV0byBkZXJpdmVkS2V5ID0gcGxhdGZvcm1EZXJpdmVCaXRzKGJh
c2VLZXksIHB1YmxpY0tleSk7CisgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAg
ICAgICAgICAgIFtkZXJpdmVkS2V5ID0gV1RGTW92ZShkZXJpdmVkS2V5KSwgbGVuZ3RoLCB1bmlm
aWVkQ2FsbGJhY2sgPSBXVEZNb3ZlKHVuaWZpZWRDYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICB1bmlmaWVkQ2Fs
bGJhY2soV1RGTW92ZShkZXJpdmVkS2V5KSwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKIH0KIAog
dm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RIOjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1h
dCwgS2V5RGF0YSYmIGRhdGEsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwIHVzYWdlcywgS2V5Q2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2sm
JiBleGNlcHRpb25DYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguaAppbmRleCA0MmVlZGY1MTgxMDM0ZmEyMWY3
Y2M4MGEyMDM2N2NlYWI0NjA2MjliLi42OTAxMzJiNWE4MDE4Y2UzYmEzZTUzM2Q4MjU4Yzk5MTk5
Y2FlODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1FQ0RILmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtRUNESC5oCkBAIC00Niw4ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBpbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBLZXlEYXRhJiYsIGNvbnN0IHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlw
dG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmlu
YWw7CiAgICAgdm9pZCBleHBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBSZWY8Q3J5cHRvS2V5PiYm
LCBLZXlEYXRhQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAKLSAgICB1
c2luZyBDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+JiYsIHNpemVfdCk+OwotICAgIHZvaWQgcGxhdGZvcm1EZXJpdmVCaXRzKFJlZjxDcnlwdG9L
ZXk+JiYgYmFzZUtleSwgUmVmPENyeXB0b0tleT4mJiBwdWJsaWNLZXksIHNpemVfdCBsZW5ndGgs
IENhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRGVyaXZlQml0cyhj
b25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9LZXkmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUVDRFNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobUVDRFNBLmNwcAppbmRleCA1MzQ4MTNmMDg0Y2MwNWJhOWI2N2IyNDgx
MTljMGQ3MWZjMmRkOTMyLi43Njc3OTFkNmM5MjJjYzMzMWM4YWNkOTc5OTAyNjlhNTZkODE1MDli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1FQ0RTQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtRUNEU0EuY3BwCkBAIC01NCw3ICs1NCwxMSBAQCB2b2lkIENyeXB0b0FsZ29y
aXRobUVDRFNBOjpzaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PiYmIHBhcgogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhJbnZhbGlkQWNjZXNzRXJyb3IpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHBsYXRmb3JtU2lnbihXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBXVEZNb3ZlKGtleSksIFdURk1vdmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZN
b3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGRpc3Bh
dGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spLAorICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFy
YW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSldIHsKKyAg
ICAgICAgICAgIHJldHVybiBwbGF0Zm9ybVNpZ24oKnBhcmFtZXRlcnMsIGtleSwgZGF0YSk7Cisg
ICAgICAgIH0pOwogfQogCiB2b2lkIENyeXB0b0FsZ29yaXRobUVDRFNBOjp2ZXJpZnkoc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENy
eXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4
X3Q+JiYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYg
ZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtR
dWV1ZSYgd29ya1F1ZXVlKQpAQCAtNjMsNyArNjcsMTEgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1F
Q0RTQTo6dmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYm
IHAKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9ybVZlcmlmeShXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBXVEZNb3ZlKGtleSksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZShkYXRhKSwgV1RGTW92
ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVl
dWUpOworCisgICAgZGlzcGF0Y2hPcGVyYXRpb24od29ya1F1ZXVlLCBjb250ZXh0LCBXVEZNb3Zl
KGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksCisgICAgICAgIFtwYXJhbWV0
ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUg
PSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7CisgICAgICAgICAg
ICByZXR1cm4gcGxhdGZvcm1WZXJpZnkoKnBhcmFtZXRlcnMsIGtleSwgc2lnbmF0dXJlLCBkYXRh
KTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OmdlbmVyYXRl
S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWlyQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RTQS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNEU0EuaAppbmRleCAwNjBkZDNjYjNjNzc5ODZh
ZjllODY4OWYyYWZlZmVlZmUyNjJlODM4Li5lMWRmODgwOWE2ZjBjYTM2NWZhMzNlZTE2NTQyMDk3
YWY5ZTI1ZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1FQ0RTQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUVDRFNBLmgKQEAgLTQ3LDggKzQ3LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUs
IENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYm
KSBmaW5hbDsKICAgICB2b2lkIGV4cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIFJlZjxDcnlwdG9L
ZXk+JiYsIEtleURhdGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKIAot
ICAgIHZvaWQgcGxhdGZvcm1TaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2Fs
bGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdv
cmtRdWV1ZSYpOwotICAgIHZvaWQgcGxhdGZvcm1WZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90
PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYsIEJvb2xDYWxsYmFjayYmLCBFeGNlcHRp
b25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7CisgICAg
c3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1TaWduKGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gcGxhdGZvcm1WZXJpZnko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNESEdDcnlwdC5jcHAKaW5kZXggOWRiMmI0MjViYWRjNGFl
N2ZmZjNhM2QxYzI1N2I5ZjEwNjI2YTA5Yy4uYzhhNGZkODE2YmEyYjYyN2JlOGFhNGUyYjJjYWQ4
YzFkNDM3NWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1FQ0RIR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5cHQuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaWYg
RU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKICNpbmNsdWRlICJDcnlwdG9LZXlFQy5oIgotI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvY3J5cHRvL2djcnlw
dC9IYW5kbGUuaD4KICNpbmNsdWRlIDxwYWwvY3J5cHRvL2djcnlwdC9VdGlsaXRpZXMuaD4KIApA
QCAtMTE2LDIxICsxMTUsOSBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGdjcnlwdERlcml2ZShnY3J5X3NleHBfdCBiYXNlS2V5U2V4cCwgZ2NyeQogICAgIHJldHVybiBv
dXRwdXQ7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNESDo6cGxhdGZvcm1EZXJpdmVCaXRz
KFJlZjxDcnlwdG9LZXk+JiYgYmFzZUtleSwgUmVmPENyeXB0b0tleT4mJiBwdWJsaWNLZXksIHNp
emVfdCBsZW5ndGgsIENhbGxiYWNrJiYgY2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IENyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhjb25zdCBDcnlw
dG9LZXkmIGJhc2VLZXksIGNvbnN0IENyeXB0b0tleSYgcHVibGljS2V5KQogewotICAgIGNvbnRl
eHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBbYmFzZUtleSA9IFdU
Rk1vdmUoYmFzZUtleSksIHB1YmxpY0tleSA9IFdURk1vdmUocHVibGljS2V5KSwgbGVuZ3RoLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAg
ICAgICAgIGF1dG8mIGVjQmFzZUtleSA9IGRvd25jYXN0PENyeXB0b0tleUVDPihiYXNlS2V5Lmdl
dCgpKTsKLSAgICAgICAgICAgIGF1dG8mIGVjUHVibGljS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5
RUM+KHB1YmxpY0tleS5nZXQoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0
RGVyaXZlKGVjQmFzZUtleS5wbGF0Zm9ybUtleSgpLCBlY1B1YmxpY0tleS5wbGF0Zm9ybUtleSgp
KTsKLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgW291dHB1
dCA9IFdURk1vdmUob3V0cHV0KSwgbGVuZ3RoLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgICAg
ICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShvdXRwdXQpLCBsZW5ndGgpOwotICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0p
OworICAgIHJldHVybiBnY3J5cHREZXJpdmUoZG93bmNhc3Q8Q3J5cHRvS2V5RUM+KGJhc2VLZXkp
LnBsYXRmb3JtS2V5KCksIGRvd25jYXN0PENyeXB0b0tleUVDPihwdWJsaWNLZXkpLnBsYXRmb3Jt
S2V5KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3Bw
CmluZGV4IDRkNWVkYWRiNTllZmVkZGZmN2ViYzdmNDk5YmVmOGFjZWNjNjY2ZWEuLjc0OTBlY2E3
MjA4ZGEyZTFhYTZjYTVhZmJjN2RjMzVkZDA1ZmZhNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3Bw
CkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXMu
aCIKICNpbmNsdWRlICJDcnlwdG9LZXlFQy5oIgogI2luY2x1ZGUgIkdDcnlwdFV0aWxpdGllcy5o
IgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvY3J5
cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNzEsNjAgKzE3
MCwyNiBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhw
X3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4XwogICAgIHJldHVybiB7IGVycm9yID09IEdQ
R19FUlJfTk9fRVJST1IgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZv
cm1TaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFt
ZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0
b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxi
YWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1
ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBs
YXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBj
b25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAg
IGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBbcGFyYW1l
dGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdU
Rk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewot
ICAgICAgICAgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oa2V5LmdldCgp
KTsKLSAgICAgICAgICAgIGF1dG8mIGVjUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29y
aXRobUVjZHNhUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0
ID0gZ2NyeXB0U2lnbihlY0tleS5wbGF0Zm9ybUtleSgpLCBkYXRhLCBlY1BhcmFtZXRlcnMuaGFz
aElkZW50aWZpZXIsIGVjS2V5LmtleVNpemVJbkJpdHMoKSAvIDgpOwotICAgICAgICAgICAgaWYg
KCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5j
ZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVh
ZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICAg
ICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RG
TW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVy
cm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0
ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAg
ICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpv
dXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
fSk7CisgICAgYXV0byYgZWNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtRWNk
c2FQYXJhbXM+KHBhcmFtZXRlcnMpOworICAgIGF1dG8mIGVjS2V5ID0gZG93bmNhc3Q8Q3J5cHRv
S2V5RUM+KGtleSk7CisKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFNpZ24oZWNLZXkucGxhdGZv
cm1LZXkoKSwgZGF0YSwgZWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBlY0tleS5rZXlTaXpl
SW5CaXRzKCkgLyA4KTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CiB9CiAK
LXZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtVmVyaWZ5KHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+
JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlv
bkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdv
cmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9y
bVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25z
dCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtR
dWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwgZGF0
YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFi
bGUgewotICAgICAgICAgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oa2V5
LmdldCgpKTsKLSAgICAgICAgICAgIGF1dG8mIGVjUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0
b0FsZ29yaXRobUVjZHNhUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGF1dG8g
b3V0cHV0ID0gZ2NyeXB0VmVyaWZ5KGVjS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVyZSwgZGF0
YSwgZWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBlY0tleS5rZXlTaXplSW5CaXRzKCkgLyA4
KTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hv
dWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERv
Y3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2so
Ci0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25D
YWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZl
cmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0
aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICBb
b3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
ZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhv
dXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8mIGVjUGFyYW1ldGVycyA9IGRvd25jYXN0
PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihwYXJhbWV0ZXJzKTsKKyAgICBhdXRvJiBlY0tl
eSA9IGRvd25jYXN0PENyeXB0b0tleUVDPihrZXkpOworCisgICAgYXV0byBvdXRwdXQgPSBnY3J5
cHRWZXJpZnkoZWNLZXkucGxhdGZvcm1LZXkoKSwgc2lnbmF0dXJlLCBkYXRhLCBlY1BhcmFtZXRl
cnMuaGFzaElkZW50aWZpZXIsIGVjS2V5LmtleVNpemVJbkJpdHMoKSAvIDgpOworICAgIGlmICgh
b3V0cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKyAg
ICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmgKaW5kZXggZmUxMDRjMzY1NTFh
YzkyYzg1ZDU2MGZiYWQ3NjUwOTkxNDJjODI4YS4uODBkZGY2YzJhNmVhNzE3ZDM1OWIzZjVlZDVk
YTBiMzRiMGVjYTQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5
cHRvS2V5RUMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlFQy5o
CkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzaXplX3Qga2V5U2l6ZUluQml0cygpIGNv
bnN0OwogICAgIE5hbWVkQ3VydmUgbmFtZWRDdXJ2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VydmU7
IH0KICAgICBTdHJpbmcgbmFtZWRDdXJ2ZVN0cmluZygpIGNvbnN0OwotICAgIFBsYXRmb3JtRUNL
ZXkgcGxhdGZvcm1LZXkoKSB7IHJldHVybiBtX3BsYXRmb3JtS2V5OyB9CisgICAgUGxhdGZvcm1F
Q0tleSBwbGF0Zm9ybUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1LZXk7IH0KICAgICBz
dGF0aWMgYm9vbCBpc1ZhbGlkRUNBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcik7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobUVDREhNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1FQ0RITWFjLmNwcAppbmRleCBmODRjNzJhNzFhOTZmNWJiZjY0ZGU3Yzg0ZWFiZGU2
MjA1ZmY1ZDEwLi43OTI0OWFlZmE2NjkyZGY4ZDIzM2ZhZmQyMTFjMjAyZmFhN2VkZDA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDREhNYWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNESE1h
Yy5jcHAKQEAgLTMwLDI4ICszMCwyMCBAQAogCiAjaW5jbHVkZSAiQ29tbW9uQ3J5cHRvVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5RUMuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0
aG1FQ0RIOjpwbGF0Zm9ybURlcml2ZUJpdHMoUmVmPENyeXB0b0tleT4mJiBiYXNlS2V5LCBSZWY8
Q3J5cHRvS2V5PiYmIHB1YmxpY0tleSwgc2l6ZV90IGxlbmd0aCwgQ2FsbGJhY2smJiBjYWxsYmFj
aywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUp
CitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtRUNESDo6cGxh
dGZvcm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0b0tleSYgYmFzZUtleSwgY29uc3QgQ3J5cHRvS2V5
JiBwdWJsaWNLZXkpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0
Y2goW2Jhc2VLZXkgPSBXVEZNb3ZlKGJhc2VLZXkpLCBwdWJsaWNLZXkgPSBXVEZNb3ZlKHB1Ymxp
Y0tleSksIGxlbmd0aCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgJmNvbnRleHRdKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGVjQmFzZUtleSA9IGRvd25jYXN0PENyeXB0b0tleUVD
PihiYXNlS2V5LmdldCgpKTsKLSAgICAgICAgYXV0byYgZWNQdWJsaWNLZXkgPSBkb3duY2FzdDxD
cnlwdG9LZXlFQz4ocHVibGljS2V5LmdldCgpKTsKLQotICAgICAgICBzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gcmVzdWx0ID0gc3RkOjpudWxsb3B0OwotICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gZGVyaXZlZEtleShlY0Jhc2VLZXkua2V5U2l6ZUluQml0cygpIC8gOCk7IC8vIFBlciBo
dHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjA5MCNzZWN0aW9uLTQuCi0gICAgICAgIHNp
emVfdCBzaXplID0gZGVyaXZlZEtleS5zaXplKCk7Ci0gICAgICAgIGlmICghQ0NFQ0NyeXB0b3JD
b21wdXRlU2hhcmVkU2VjcmV0KGVjQmFzZUtleS5wbGF0Zm9ybUtleSgpLCBlY1B1YmxpY0tleS5w
bGF0Zm9ybUtleSgpLCBkZXJpdmVkS2V5LmRhdGEoKSwgJnNpemUpKQotICAgICAgICAgICAgcmVz
dWx0ID0gV1RGTW92ZShkZXJpdmVkS2V5KTsKLQotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFty
ZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksIGxlbmd0aCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAg
ICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCksIGxlbmd0aCk7Ci0gICAgICAgICAgICBjb250
ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIGF1dG8mIGVjQmFzZUtleSA9
IGRvd25jYXN0PENyeXB0b0tleUVDPihiYXNlS2V5KTsKKyAgICBhdXRvJiBlY1B1YmxpY0tleSA9
IGRvd25jYXN0PENyeXB0b0tleUVDPihwdWJsaWNLZXkpOworCisgICAgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IHJlc3VsdCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBWZWN0b3I8dWludDhf
dD4gZGVyaXZlZEtleShlY0Jhc2VLZXkua2V5U2l6ZUluQml0cygpIC8gOCk7IC8vIFBlciBodHRw
czovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjA5MCNzZWN0aW9uLTQuCisgICAgc2l6ZV90IHNp
emUgPSBkZXJpdmVkS2V5LnNpemUoKTsKKyAgICBpZiAoIUNDRUNDcnlwdG9yQ29tcHV0ZVNoYXJl
ZFNlY3JldChlY0Jhc2VLZXkucGxhdGZvcm1LZXkoKSwgZWNQdWJsaWNLZXkucGxhdGZvcm1LZXko
KSwgZGVyaXZlZEtleS5kYXRhKCksICZzaXplKSkKKyAgICAgICAgcmVzdWx0ID0gV1RGTW92ZShk
ZXJpdmVkS2V5KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDRFNBTWFjLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNEU0FNYWMuY3BwCmluZGV4IDll
M2Y5M2ExOTU3MGZlYzU4OThmZWI1NjA0ZmU1NDQzMmUwNjcxODYuLmE0Mjk3MTMzMzE4ZDk4OTAw
Mzg1ZmU4ZjMwYTViYWE2MzQ1NDRlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNEU0FNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNEU0FNYWMuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAj
aW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9E
aWdlc3RBbGdvcml0aG0uaCIKICNpbmNsdWRlICJDcnlwdG9LZXlFQy5oIgotI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNTIs
NTIgKzE1MSwxOCBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gdmVyaWZ5RUNEU0EoQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBjb25zdCBQbGF0ZgogICAgIHJldHVybiB2YWxpZDsK
IH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1TaWduKHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9L
ZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxi
YWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtU2lnbihjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtl
eSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0g
ICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwg
a2V5ID0gV1RGTW92ZShrZXkpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGVjS2V5ID0gZG93bmNh
c3Q8Q3J5cHRvS2V5RUM+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1dG8mIGVjUGFyYW1ldGVycyA9
IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0KLSAg
ICAgICAgYXV0byByZXN1bHQgPSBzaWduRUNEU0EoZWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVy
LCBlY0tleS5wbGF0Zm9ybUtleSgpLCBlY0tleS5rZXlTaXplSW5CaXRzKCkgLyA4LCBkYXRhKTsK
LSAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAgLy8gV2Ug
c2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhl
IERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzayhb
ZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgZWMgPSByZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbkNhbGxiYWNrKGVjKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAv
LyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0
byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgIGNvbnRleHQucG9zdFRhc2so
W2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0
dXJuVmFsdWUoKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgY2FsbGJh
Y2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgfSk7Ci0g
ICAgfSk7CisgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oa2V5KTsKKyAg
ICBhdXRvJiBlY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY2RzYVBhcmFt
cz4ocGFyYW1ldGVycyk7CisgICAgcmV0dXJuIHNpZ25FQ0RTQShlY1BhcmFtZXRlcnMuaGFzaElk
ZW50aWZpZXIsIGVjS2V5LnBsYXRmb3JtS2V5KCksIGVjS2V5LmtleVNpemVJbkJpdHMoKSAvIDgs
IGRhdGEpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVZlcmlmeShz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBS
ZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8
dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJh
Y2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
V29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1F
Q0RTQTo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2ln
bmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7Ci0gICAgY29udGV4dC5yZWYo
KTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwg
ZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2Vw
dGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11
dGFibGUgewotICAgICAgICBhdXRvJiBlY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUVDPihrZXku
Z2V0KCkpOwotICAgICAgICBhdXRvJiBlY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdv
cml0aG1FY2RzYVBhcmFtcz4oKnBhcmFtZXRlcnMpOwotCi0gICAgICAgIGF1dG8gcmVzdWx0ID0g
dmVyaWZ5RUNEU0EoZWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBlY0tleS5wbGF0Zm9ybUtl
eSgpLCBlY0tleS5rZXlTaXplSW5CaXRzKCkgLyA4LCBzaWduYXR1cmUsIGRhdGEpOwotICAgICAg
ICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQg
b25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1l
bnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBlYyA9IHJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soZWMpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNo
b3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBE
b2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1
ZSgpLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1
bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsK
KyAgICBhdXRvJiBlY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUVDPihrZXkpOworICAgIGF1dG8m
IGVjUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihwYXJh
bWV0ZXJzKTsKKyAgICByZXR1cm4gdmVyaWZ5RUNEU0EoZWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlm
aWVyLCBlY0tleS5wbGF0Zm9ybUtleSgpLCBlY0tleS5rZXlTaXplSW5CaXRzKCkgLyA4LCBzaWdu
YXR1cmUsIGRhdGEpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319249</attachid>
            <date>2017-08-29 01:06:52 -0700</date>
            <delta_ts>2017-08-29 01:06:52 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175619-20170829100651.patch</filename>
            <type>text/plain</type>
            <size>23191</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTZlN2QwMjIzYmU4MDU1
OGUwMjU3MDJmZTU2YzkzZWUxOWRlYmRlNC4uZDY5MmViMGI2ZTg3NmQ4MTJiOTVjMzIyYjU5ZGUw
ODVkODhhZDdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDE3LTA4LTI5ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBFQyBhbGdvcml0aG1zIGludG8gc2hhcmVkIGNv
ZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTYx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IEppZXdlbiBUYW4uCisKKyAgICAgICAgUHVzaCB0aGUg
V29ya1F1ZXVlIGRpc3BhdGNoIGNvZGUgZHVwbGljYXRlZCBiZXR3ZWVuIHRoZSBNYWMgYW5kIGxp
YmdjcnlwdAorICAgICAgICBpbXBsZW1lbnRhdGlvbnMgb2YgV2ViIENyeXB0byBpbnRvIHRoZSBz
aGFyZWQgbGF5ZXIuIFRoaXMgcGF0Y2ggZm9jdXNlcyBvbgorICAgICAgICB0aGUgRUMtYmFzZWQg
YWxnb3JpdGhtcy4KKworICAgICAgICBGdW5jdGlvbnMgd2l0aCBwbGF0Zm9ybS1zcGVjaWZpYyBp
bXBsZW1lbnRhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBmcm9tCisgICAgICAgIHRoZXNlIGFzeW5j
aHJvbm91cyBkaXNwYXRjaGVzIGFyZSBtYWRlIHN0YXRpYyBhbmQgcmV0dXJuIGFuIEV4Y2VwdGlv
bk9yIG9yCisgICAgICAgIHN0ZDo6b3B0aW9uYWwgdmFsdWUuIENyeXB0b0tleSBhbmQgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycyBvYmplY3RzIGFyZQorICAgICAgICBwYXNzZWQgdG8gdGhvc2Ug
dGhyb3VnaCBjb25zdCByZWZlcmVuY2VzLiBJbnB1dCBkYXRhIGlzIHBhc3NlZCB0aHJvdWdoCisg
ICAgICAgIGNvbnN0IHJlZmVyZW5jZXMgdG8gdGhlIG9yaWdpbmFsIFZlY3RvciBvYmplY3RzLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyAtLSBubyBjaGFuZ2VzIGluIGJlaGF2aW9yIHRoYXQncyBj
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtRUNESC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG1FQ0RIOjpkZXJpdmVCaXRzKToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1FQ0RILmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtRUNEU0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNEU0E6OnNp
Z24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNEU0E6OnZlcmlmeSk6Cisg
ICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNEU0EuaDoKKyAgICAg
ICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5cHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNESDo6cGxhdGZvcm1EZXJpdmVCaXRzKToKKyAg
ICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVNpZ24pOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtVmVyaWZ5KToKKyAg
ICAgICAgKiBjcnlwdG8va2V5cy9DcnlwdG9LZXlFQy5oOgorICAgICAgICAqIGNyeXB0by9tYWMv
Q3J5cHRvQWxnb3JpdGhtRUNESE1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdv
cml0aG1FQ0RIOjpwbGF0Zm9ybURlcml2ZUJpdHMpOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtRUNEU0FNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtRUNEU0E6OnBsYXRmb3JtU2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG1FQ0RTQTo6cGxhdGZvcm1WZXJpZnkpOgorCisyMDE3LTA4LTI5ICBaYW4gRG9iZXJzZWsgIDx6
ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKwogICAgICAgICBVbnJldmlld2VkIFdQRSBkZWJ1ZyBidWls
ZCBmaXguCiAKICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVu
ZFBpcGVsaW5lLmNwcDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUVDREguY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNESC5jcHAKaW5kZXggNjMxMGQ0NDc0MzZmY2E5YzRhZGQy
MjY5MzllZWViMjBjN2NjYTI1YS4uMDNkNWFkYWFlZWI4MjJmZTFhOTZkYjc3MzNmNGY3OTM0OWM1
ZGI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtRUNESC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtRUNESC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDcnlw
dG9BbGdvcml0aG1FY0tleVBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUVjZGhL
ZXlEZXJpdmVQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlFQy5oIgorI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMTIs
NyArMTEzLDE5IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNESDo6ZGVyaXZlQml0cyhzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mCiAgICAgICAgICgqZGVyaXZlZEtl
eSkuc2hyaW5rKGxlbmd0aCAvIDgpOwogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKCpkZXJpdmVk
S2V5KSk7CiAgICAgfTsKLSAgICBwbGF0Zm9ybURlcml2ZUJpdHMoV1RGTW92ZShiYXNlS2V5KSwg
ZWNQYXJhbWV0ZXJzLnB1YmxpY0tleS5yZWxlYXNlTm9uTnVsbCgpLCBsZW5ndGgsIFdURk1vdmUo
dW5pZmllZENhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKworICAgIC8vIFRoaXMgaXMg
YSBzcGVjaWFsIGNhc2UgdGhhdCBjYW4ndCB1c2UgZGlzcGF0Y2hPcGVyYXRpb24oKSBiZWNhdXNl
IGl0IGJ1bmRsZXMKKyAgICAvLyB0aGUgcmVzdWx0IHZhbGlkYXRpb24gYW5kIGNhbGxiYWNrIGRp
c3BhdGNoIGludG8gdW5pZmllZENhbGxiYWNrLgorICAgIGNvbnRleHQucmVmKCk7CisgICAgd29y
a1F1ZXVlLmRpc3BhdGNoKAorICAgICAgICBbYmFzZUtleSA9IFdURk1vdmUoYmFzZUtleSksIHB1
YmxpY0tleSA9IGVjUGFyYW1ldGVycy5wdWJsaWNLZXkucmVsZWFzZU5vbk51bGwoKSwgbGVuZ3Ro
LCB1bmlmaWVkQ2FsbGJhY2sgPSBXVEZNb3ZlKHVuaWZpZWRDYWxsYmFjayksICZjb250ZXh0XSgp
IG11dGFibGUgeworICAgICAgICAgICAgYXV0byBkZXJpdmVkS2V5ID0gcGxhdGZvcm1EZXJpdmVC
aXRzKGJhc2VLZXksIHB1YmxpY0tleSk7CisgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAor
ICAgICAgICAgICAgICAgIFtkZXJpdmVkS2V5ID0gV1RGTW92ZShkZXJpdmVkS2V5KSwgbGVuZ3Ro
LCB1bmlmaWVkQ2FsbGJhY2sgPSBXVEZNb3ZlKHVuaWZpZWRDYWxsYmFjayldKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICB1bmlm
aWVkQ2FsbGJhY2soV1RGTW92ZShkZXJpdmVkS2V5KSwgbGVuZ3RoKTsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsK
IH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RIOjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0
IGZvcm1hdCwgS2V5RGF0YSYmIGRhdGEsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tl
eVVzYWdlQml0bWFwIHVzYWdlcywgS2V5Q2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2Fs
bGJhY2smJiBleGNlcHRpb25DYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguaCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDREguaAppbmRleCA0MmVlZGY1MTgxMDM0
ZmEyMWY3Y2M4MGEyMDM2N2NlYWI0NjA2MjliLi42OTAxMzJiNWE4MDE4Y2UzYmEzZTUzM2Q4MjU4
Yzk5MTk5Y2FlODk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1FQ0RILmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNESC5oCkBAIC00Niw4ICs0Niw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBpbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBLZXlEYXRhJiYsIGNvbnN0IHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2sm
JikgZmluYWw7CiAgICAgdm9pZCBleHBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBSZWY8Q3J5cHRv
S2V5PiYmLCBLZXlEYXRhQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAK
LSAgICB1c2luZyBDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+JiYsIHNpemVfdCk+OwotICAgIHZvaWQgcGxhdGZvcm1EZXJpdmVCaXRzKFJlZjxD
cnlwdG9LZXk+JiYgYmFzZUtleSwgUmVmPENyeXB0b0tleT4mJiBwdWJsaWNLZXksIHNpemVfdCBs
ZW5ndGgsIENhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRGVyaXZl
Qml0cyhjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9LZXkmKTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUVDRFNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUVDRFNBLmNwcAppbmRleCA1MzQ4MTNmMDg0Y2MwNWJhOWI2
N2IyNDgxMTljMGQ3MWZjMmRkOTMyLi43Njc3OTFkNmM5MjJjYzMzMWM4YWNkOTc5OTAyNjlhNTZk
ODE1MDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1FQ0RTQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtRUNEU0EuY3BwCkBAIC01NCw3ICs1NCwxMSBAQCB2b2lkIENyeXB0
b0FsZ29yaXRobUVDRFNBOjpzaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPiYmIHBhcgogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhJbnZhbGlkQWNjZXNzRXJy
b3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHBsYXRmb3JtU2lnbihXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBXVEZNb3ZlKGtleSksIFdURk1vdmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2sp
LCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKworICAg
IGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxsYmFjayks
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAorICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1v
dmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSld
IHsKKyAgICAgICAgICAgIHJldHVybiBwbGF0Zm9ybVNpZ24oKnBhcmFtZXRlcnMsIGtleSwgZGF0
YSk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIENyeXB0b0FsZ29yaXRobUVDRFNBOjp2ZXJpZnko
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywg
UmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxi
YWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQpAQCAtNjMsNyArNjcsMTEgQEAgdm9pZCBDcnlwdG9BbGdv
cml0aG1FQ0RTQTo6dmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPiYmIHAKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soSW52YWxpZEFjY2Vzc0Vycm9yKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9ybVZlcmlmeShXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBXVEZNb3ZlKGtleSksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZShkYXRhKSwg
V1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3
b3JrUXVldWUpOworCisgICAgZGlzcGF0Y2hPcGVyYXRpb24od29ya1F1ZXVlLCBjb250ZXh0LCBX
VEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksCisgICAgICAgIFtw
YXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBzaWdu
YXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7CisgICAg
ICAgICAgICByZXR1cm4gcGxhdGZvcm1WZXJpZnkoKnBhcmFtZXRlcnMsIGtleSwgc2lnbmF0dXJl
LCBkYXRhKTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNEU0E6Omdl
bmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5T3JLZXlQYWly
Q2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFj
aywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RTQS5oIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtRUNEU0EuaAppbmRleCAwNjBkZDNjYjNj
Nzc5ODZhZjllODY4OWYyYWZlZmVlZmUyNjJlODM4Li5lMWRmODgwOWE2ZjBjYTM2NWZhMzNlZTE2
NTQyMDk3YWY5ZTI1ZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1FQ0RTQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUVDRFNBLmgKQEAgLTQ3LDggKzQ3LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qg
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFj
dGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmKSBmaW5hbDsKICAgICB2b2lkIGV4cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIFJlZjxD
cnlwdG9LZXk+JiYsIEtleURhdGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5h
bDsKIAotICAgIHZvaWQgcGxhdGZvcm1TaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVj
dG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIFdvcmtRdWV1ZSYpOwotICAgIHZvaWQgcGxhdGZvcm1WZXJpZnkoc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1
aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYsIEJvb2xDYWxsYmFjayYmLCBF
eGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7
CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1TaWduKGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gcGxhdGZvcm1W
ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNESEdDcnlwdC5jcHAKaW5kZXggOWRiMmI0MjVi
YWRjNGFlN2ZmZjNhM2QxYzI1N2I5ZjEwNjI2YTA5Yy4uYzhhNGZkODE2YmEyYjYyN2JlOGFhNGUy
YjJjYWQ4YzFkNDM3NWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5cHQuY3BwCkBAIC0zMSw3ICszMSw2IEBA
CiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKICNpbmNsdWRlICJDcnlwdG9LZXlFQy5oIgot
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvY3J5cHRv
L2djcnlwdC9IYW5kbGUuaD4KICNpbmNsdWRlIDxwYWwvY3J5cHRvL2djcnlwdC9VdGlsaXRpZXMu
aD4KIApAQCAtMTE2LDIxICsxMTUsOSBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGdjcnlwdERlcml2ZShnY3J5X3NleHBfdCBiYXNlS2V5U2V4cCwgZ2NyeQogICAgIHJl
dHVybiBvdXRwdXQ7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNESDo6cGxhdGZvcm1EZXJp
dmVCaXRzKFJlZjxDcnlwdG9LZXk+JiYgYmFzZUtleSwgUmVmPENyeXB0b0tleT4mJiBwdWJsaWNL
ZXksIHNpemVfdCBsZW5ndGgsIENhbGxiYWNrJiYgY2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUVDREg6OnBsYXRmb3JtRGVyaXZlQml0cyhjb25z
dCBDcnlwdG9LZXkmIGJhc2VLZXksIGNvbnN0IENyeXB0b0tleSYgcHVibGljS2V5KQogewotICAg
IGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBbYmFzZUtl
eSA9IFdURk1vdmUoYmFzZUtleSksIHB1YmxpY0tleSA9IFdURk1vdmUocHVibGljS2V5KSwgbGVu
Z3RoLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsK
LSAgICAgICAgICAgIGF1dG8mIGVjQmFzZUtleSA9IGRvd25jYXN0PENyeXB0b0tleUVDPihiYXNl
S2V5LmdldCgpKTsKLSAgICAgICAgICAgIGF1dG8mIGVjUHVibGljS2V5ID0gZG93bmNhc3Q8Q3J5
cHRvS2V5RUM+KHB1YmxpY0tleS5nZXQoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0g
Z2NyeXB0RGVyaXZlKGVjQmFzZUtleS5wbGF0Zm9ybUtleSgpLCBlY1B1YmxpY0tleS5wbGF0Zm9y
bUtleSgpKTsKLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAg
W291dHB1dCA9IFdURk1vdmUob3V0cHV0KSwgbGVuZ3RoLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAg
ICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShvdXRwdXQpLCBsZW5ndGgpOwotICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIH0pOworICAgIHJldHVybiBnY3J5cHREZXJpdmUoZG93bmNhc3Q8Q3J5cHRvS2V5RUM+KGJh
c2VLZXkpLnBsYXRmb3JtS2V5KCksIGRvd25jYXN0PENyeXB0b0tleUVDPihwdWJsaWNLZXkpLnBs
YXRmb3JtS2V5KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5
cHQuY3BwCmluZGV4IDRkNWVkYWRiNTllZmVkZGZmN2ViYzdmNDk5YmVmOGFjZWNjNjY2ZWEuLjc0
OTBlY2E3MjA4ZGEyZTFhYTZjYTVhZmJjN2RjMzVkZDA1ZmZhNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5
cHQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtRWNkc2FQ
YXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlFQy5oIgogI2luY2x1ZGUgIkdDcnlwdFV0aWxp
dGllcy5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxw
YWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNzEs
NjAgKzE3MCwyNiBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2Ny
eV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4XwogICAgIHJldHVybiB7IGVycm9y
ID09IEdQR19FUlJfTk9fRVJST1IgfTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6
cGxhdGZvcm1TaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYm
IHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRh
LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlv
bkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdv
cmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtRUNE
U0E6OnBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQog
ewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBb
cGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5KSwgZGF0
YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFi
bGUgewotICAgICAgICAgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oa2V5
LmdldCgpKTsKLSAgICAgICAgICAgIGF1dG8mIGVjUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0
b0FsZ29yaXRobUVjZHNhUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0KLSAgICAgICAgICAgIGF1dG8g
b3V0cHV0ID0gZ2NyeXB0U2lnbihlY0tleS5wbGF0Zm9ybUtleSgpLCBkYXRhLCBlY1BhcmFtZXRl
cnMuaGFzaElkZW50aWZpZXIsIGVjS2V5LmtleVNpemVJbkJpdHMoKSAvIDgpOwotICAgICAgICAg
ICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJl
ZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2Vy
IHRocmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAg
ICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNr
ID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJh
dGlvbkVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAg
ICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFj
a3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAg
ICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZN
b3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxs
YmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgfSk7CisgICAgYXV0byYgZWNQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3Jp
dGhtRWNkc2FQYXJhbXM+KHBhcmFtZXRlcnMpOworICAgIGF1dG8mIGVjS2V5ID0gZG93bmNhc3Q8
Q3J5cHRvS2V5RUM+KGtleSk7CisKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFNpZ24oZWNLZXku
cGxhdGZvcm1LZXkoKSwgZGF0YSwgZWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBlY0tleS5r
ZXlTaXplSW5CaXRzKCkgLyA4KTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7
CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtVmVyaWZ5KHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlw
dG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4
Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVl
dWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobUVDRFNBOjpw
bGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAg
IHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJl
KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgp
IG11dGFibGUgewotICAgICAgICAgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlF
Qz4oa2V5LmdldCgpKTsKLSAgICAgICAgICAgIGF1dG8mIGVjUGFyYW1ldGVycyA9IGRvd25jYXN0
PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0KLSAgICAgICAgICAg
IGF1dG8gb3V0cHV0ID0gZ2NyeXB0VmVyaWZ5KGVjS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVy
ZSwgZGF0YSwgZWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBlY0tleS5rZXlTaXplSW5CaXRz
KCkgLyA4KTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAgLy8g
V2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8g
dGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQucG9z
dFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkg
ZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dv
cmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAg
ICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBjYWxs
YmFjayhvdXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8mIGVjUGFyYW1ldGVycyA9IGRv
d25jYXN0PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPihwYXJhbWV0ZXJzKTsKKyAgICBhdXRv
JiBlY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUVDPihrZXkpOworCisgICAgYXV0byBvdXRwdXQg
PSBnY3J5cHRWZXJpZnkoZWNLZXkucGxhdGZvcm1LZXkoKSwgc2lnbmF0dXJlLCBkYXRhLCBlY1Bh
cmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIGVjS2V5LmtleVNpemVJbkJpdHMoKSAvIDgpOworICAg
IGlmICghb3V0cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3Ig
fTsKKyAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMu
aCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmgKaW5kZXggZmUxMDRj
MzY1NTFhYzkyYzg1ZDU2MGZiYWQ3NjUwOTkxNDJjODI4YS4uODBkZGY2YzJhNmVhNzE3ZDM1OWIz
ZjVlZDVkYTBiMzRiMGVjYTQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tl
eXMvQ3J5cHRvS2V5RUMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9L
ZXlFQy5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBzaXplX3Qga2V5U2l6ZUluQml0
cygpIGNvbnN0OwogICAgIE5hbWVkQ3VydmUgbmFtZWRDdXJ2ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VydmU7IH0KICAgICBTdHJpbmcgbmFtZWRDdXJ2ZVN0cmluZygpIGNvbnN0OwotICAgIFBsYXRm
b3JtRUNLZXkgcGxhdGZvcm1LZXkoKSB7IHJldHVybiBtX3BsYXRmb3JtS2V5OyB9CisgICAgUGxh
dGZvcm1FQ0tleSBwbGF0Zm9ybUtleSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1LZXk7IH0K
ICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRUNBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFj
L0NyeXB0b0FsZ29yaXRobUVDREhNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1FQ0RITWFjLmNwcAppbmRleCBmODRjNzJhNzFhOTZmNWJiZjY0ZGU3Yzg0
ZWFiZGU2MjA1ZmY1ZDEwLi43OTI0OWFlZmE2NjkyZGY4ZDIzM2ZhZmQyMTFjMjAyZmFhN2VkZDA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVD
REhNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGht
RUNESE1hYy5jcHAKQEAgLTMwLDI4ICszMCwyMCBAQAogCiAjaW5jbHVkZSAiQ29tbW9uQ3J5cHRv
VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5RUMuaCIKLSNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9B
bGdvcml0aG1FQ0RIOjpwbGF0Zm9ybURlcml2ZUJpdHMoUmVmPENyeXB0b0tleT4mJiBiYXNlS2V5
LCBSZWY8Q3J5cHRvS2V5PiYmIHB1YmxpY0tleSwgc2l6ZV90IGxlbmd0aCwgQ2FsbGJhY2smJiBj
YWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3Jr
UXVldWUpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtRUNE
SDo6cGxhdGZvcm1EZXJpdmVCaXRzKGNvbnN0IENyeXB0b0tleSYgYmFzZUtleSwgY29uc3QgQ3J5
cHRvS2V5JiBwdWJsaWNLZXkpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUu
ZGlzcGF0Y2goW2Jhc2VLZXkgPSBXVEZNb3ZlKGJhc2VLZXkpLCBwdWJsaWNLZXkgPSBXVEZNb3Zl
KHB1YmxpY0tleSksIGxlbmd0aCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgJmNvbnRl
eHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGVjQmFzZUtleSA9IGRvd25jYXN0PENyeXB0
b0tleUVDPihiYXNlS2V5LmdldCgpKTsKLSAgICAgICAgYXV0byYgZWNQdWJsaWNLZXkgPSBkb3du
Y2FzdDxDcnlwdG9LZXlFQz4ocHVibGljS2V5LmdldCgpKTsKLQotICAgICAgICBzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gcmVzdWx0ID0gc3RkOjpudWxsb3B0OwotICAgICAgICBWZWN0
b3I8dWludDhfdD4gZGVyaXZlZEtleShlY0Jhc2VLZXkua2V5U2l6ZUluQml0cygpIC8gOCk7IC8v
IFBlciBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjA5MCNzZWN0aW9uLTQuCi0gICAg
ICAgIHNpemVfdCBzaXplID0gZGVyaXZlZEtleS5zaXplKCk7Ci0gICAgICAgIGlmICghQ0NFQ0Ny
eXB0b3JDb21wdXRlU2hhcmVkU2VjcmV0KGVjQmFzZUtleS5wbGF0Zm9ybUtleSgpLCBlY1B1Ymxp
Y0tleS5wbGF0Zm9ybUtleSgpLCBkZXJpdmVkS2V5LmRhdGEoKSwgJnNpemUpKQotICAgICAgICAg
ICAgcmVzdWx0ID0gV1RGTW92ZShkZXJpdmVkS2V5KTsKLQotICAgICAgICBjb250ZXh0LnBvc3RU
YXNrKFtyZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksIGxlbmd0aCwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCksIGxlbmd0aCk7Ci0gICAgICAgICAg
ICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIGF1dG8mIGVjQmFz
ZUtleSA9IGRvd25jYXN0PENyeXB0b0tleUVDPihiYXNlS2V5KTsKKyAgICBhdXRvJiBlY1B1Ymxp
Y0tleSA9IGRvd25jYXN0PENyeXB0b0tleUVDPihwdWJsaWNLZXkpOworCisgICAgc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4+IHJlc3VsdCA9IHN0ZDo6bnVsbG9wdDsKKyAgICBWZWN0b3I8
dWludDhfdD4gZGVyaXZlZEtleShlY0Jhc2VLZXkua2V5U2l6ZUluQml0cygpIC8gOCk7IC8vIFBl
ciBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjA5MCNzZWN0aW9uLTQuCisgICAgc2l6
ZV90IHNpemUgPSBkZXJpdmVkS2V5LnNpemUoKTsKKyAgICBpZiAoIUNDRUNDcnlwdG9yQ29tcHV0
ZVNoYXJlZFNlY3JldChlY0Jhc2VLZXkucGxhdGZvcm1LZXkoKSwgZWNQdWJsaWNLZXkucGxhdGZv
cm1LZXkoKSwgZGVyaXZlZEtleS5kYXRhKCksICZzaXplKSkKKyAgICAgICAgcmVzdWx0ID0gV1RG
TW92ZShkZXJpdmVkS2V5KTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUVDRFNBTWFjLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNEU0FNYWMuY3BwCmlu
ZGV4IDllM2Y5M2ExOTU3MGZlYzU4OThmZWI1NjA0ZmU1NDQzMmUwNjcxODYuLmE0Mjk3MTMzMzE4
ZDk4OTAwMzg1ZmU4ZjMwYTViYWE2MzQ1NDRlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNEU0FNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtRUNEU0FNYWMuY3BwCkBAIC0zMyw3ICszMyw2
IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtRWNkc2FQYXJhbXMuaCIKICNpbmNsdWRlICJD
cnlwdG9EaWdlc3RBbGdvcml0aG0uaCIKICNpbmNsdWRlICJDcnlwdG9LZXlFQy5oIgotI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0xNTIsNTIgKzE1MSwxOCBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gdmVyaWZ5RUNEU0Eo
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBjb25zdCBQbGF0ZgogICAgIHJldHVybiB2
YWxpZDsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1FQ0RTQTo6cGxhdGZvcm1TaWduKHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxD
cnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYm
IGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtRUNEU0E6OnBsYXRmb3JtU2lnbihj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9L
ZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGNvbnRleHQucmVm
KCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0
ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlv
bkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGVjS2V5ID0g
ZG93bmNhc3Q8Q3J5cHRvS2V5RUM+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1dG8mIGVjUGFyYW1l
dGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1zPigqcGFyYW1ldGVycyk7
Ci0KLSAgICAgICAgYXV0byByZXN1bHQgPSBzaWduRUNEU0EoZWNQYXJhbWV0ZXJzLmhhc2hJZGVu
dGlmaWVyLCBlY0tleS5wbGF0Zm9ybUtleSgpLCBlY0tleS5rZXlTaXplSW5CaXRzKCkgLyA4LCBk
YXRhKTsKLSAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sg
dG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0
VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgZWMg
PSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVm
KCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAg
ICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcg
YmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgIGNvbnRleHQucG9z
dFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IHJlc3VsdC5yZWxl
YXNlUmV0dXJuVmFsdWUoKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAg
Y2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAg
fSk7Ci0gICAgfSk7CisgICAgYXV0byYgZWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlFQz4oa2V5
KTsKKyAgICBhdXRvJiBlY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1FY2Rz
YVBhcmFtcz4ocGFyYW1ldGVycyk7CisgICAgcmV0dXJuIHNpZ25FQ0RTQShlY1BhcmFtZXRlcnMu
aGFzaElkZW50aWZpZXIsIGVjS2V5LnBsYXRmb3JtS2V5KCksIGVjS2V5LmtleVNpemVJbkJpdHMo
KSAvIDgsIGRhdGEpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUVDRFNBOjpwbGF0Zm9ybVZl
cmlmeShzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0
ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBW
ZWN0b3I8dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9u
Q2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdv
cml0aG1FQ0RTQTo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7Ci0gICAgY29udGV4
dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0
dXJlKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0
XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiBlY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUVD
PihrZXkuZ2V0KCkpOwotICAgICAgICBhdXRvJiBlY1BhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlw
dG9BbGdvcml0aG1FY2RzYVBhcmFtcz4oKnBhcmFtZXRlcnMpOwotCi0gICAgICAgIGF1dG8gcmVz
dWx0ID0gdmVyaWZ5RUNEU0EoZWNQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBlY0tleS5wbGF0
Zm9ybUtleSgpLCBlY0tleS5rZXlTaXplSW5CaXRzKCkgLyA4LCBzaWduYXR1cmUsIGRhdGEpOwot
ICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICAvLyBXZSBz
aG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUg
RG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtl
eGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBlYyA9IHJlc3Vs
dC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhj
ZXB0aW9uQ2FsbGJhY2soZWMpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8v
IFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRv
IHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2sp
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFj
ayhyZXN1bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAg
ICB9KTsKKyAgICBhdXRvJiBlY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUVDPihrZXkpOworICAg
IGF1dG8mIGVjUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUVjZHNhUGFyYW1z
PihwYXJhbWV0ZXJzKTsKKyAgICByZXR1cm4gdmVyaWZ5RUNEU0EoZWNQYXJhbWV0ZXJzLmhhc2hJ
ZGVudGlmaWVyLCBlY0tleS5wbGF0Zm9ybUtleSgpLCBlY0tleS5rZXlTaXplSW5CaXRzKCkgLyA4
LCBzaWduYXR1cmUsIGRhdGEpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>