<?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>172856</bug_id>
          
          <creation_ts>2017-06-02 07:36:30 -0700</creation_ts>
          <short_desc>[GCrypt] RSA-PSS support</short_desc>
          <delta_ts>2017-06-07 02:16:10 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>133122</blocked>
          <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>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1315039</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-02 07:36:30 -0700</bug_when>
    <thetext>[GCrypt] RSA-PSS support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315040</commentid>
    <comment_count>1</comment_count>
      <attachid>311822</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-02 07:37:15 -0700</bug_when>
    <thetext>Created attachment 311822
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315041</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-02 07:39:38 -0700</bug_when>
    <thetext>Attachment 311822 did not pass style-queue:


ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:203:  CryptoAlgorithmRSA_PSS::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:231:  CryptoAlgorithmRSA_PSS::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
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: 3 in 9 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>1315104</commentid>
    <comment_count>3</comment_count>
      <attachid>311822</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-06-02 10:37:24 -0700</bug_when>
    <thetext>Comment on attachment 311822
WIP

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

Now that Jiewen is a reviewer, I&apos;ll let him give the final r+. Just a couple nits:

&gt; Source/WTF/wtf/Platform.h:1274
&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101300) || (PLATFORM(IOS) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 110000) || PLATFORM(GTK) || PLATFORM(WPE)

Shouldn&apos;t this be || USE(GCRYPT)?

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:31
&gt; +#if ENABLE(SUBTLE_CRYPTO) &amp;&amp; HAVE(RSA_PSS)

This is confusing, since it implies that HAVE(RSA_PSS) can be false when compiling this file. I would remove it.

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:198
&gt; +    // a failure in any other case. OperationError should not be returned at this point.

Same as in the last patch, you should explain why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315135</commentid>
    <comment_count>4</comment_count>
      <attachid>311822</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-06-02 11:41:30 -0700</bug_when>
    <thetext>Comment on attachment 311822
WIP

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

Looks good to me, and please address comments in gcryptVerify.

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:43
&gt; +static std::optional&lt;PAL::CryptoDigest::Algorithm&gt; hashCryptoDigestAlgorithm(CryptoAlgorithmIdentifier identifier)

Remember to move this into a utility file.

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:61
&gt; +static std::optional&lt;const char*&gt; hashAlgorithmName(CryptoAlgorithmIdentifier identifier)

Ditto.

&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:79
&gt; +static std::optional&lt;Vector&lt;uint8_t&gt;&gt; mpiData(gcry_sexp_t paramSexp)

Ditto.

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:198
&gt;&gt; +    // a failure in any other case. OperationError should not be returned at this point.
&gt; 
&gt; Same as in the last patch, you should explain why.

I start wondering maybe we shouldn&apos;t return any std::nullopt before as that will cause OperationError.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315145</commentid>
    <comment_count>5</comment_count>
      <attachid>311822</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-06-02 11:46:43 -0700</bug_when>
    <thetext>Comment on attachment 311822
WIP

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

&gt;&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:198
&gt;&gt;&gt; +    // a failure in any other case. OperationError should not be returned at this point.
&gt;&gt; 
&gt;&gt; Same as in the last patch, you should explain why.
&gt; 
&gt; I start wondering maybe we shouldn&apos;t return any std::nullopt before as that will cause OperationError.

Maybe we shouldn&apos;t even pass exceptionCallback to platformVerify as there won&apos;t be any exceptions till this level. I will address that in Bug 171983.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315516</commentid>
    <comment_count>6</comment_count>
      <attachid>311822</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-03 23:55:50 -0700</bug_when>
    <thetext>Comment on attachment 311822
WIP

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

&gt;&gt; Source/WTF/wtf/Platform.h:1274
&gt;&gt; +#if (PLATFORM(MAC) &amp;&amp; __MAC_OS_X_VERSION_MIN_REQUIRED &gt;= 101300) || (PLATFORM(IOS) &amp;&amp; __IPHONE_OS_VERSION_MIN_REQUIRED &gt;= 110000) || PLATFORM(GTK) || PLATFORM(WPE)
&gt; 
&gt; Shouldn&apos;t this be || USE(GCRYPT)?

Could be, doesn&apos;t exist yet though. Should be simple to expose through CMake.

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:31
&gt;&gt; +#if ENABLE(SUBTLE_CRYPTO) &amp;&amp; HAVE(RSA_PSS)
&gt; 
&gt; This is confusing, since it implies that HAVE(RSA_PSS) can be false when compiling this file. I would remove it.

The cross-platform code still uses HAVE(RSA_PSS). I&apos;ll add a preprocessor error that&apos;s triggered if HAVE(RSA_PSS) is false here, which it shouldn&apos;t be because USE(GCRYPT) is at the moment definitely true if this file is being compiled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315517</commentid>
    <comment_count>7</comment_count>
      <attachid>311954</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-04 00:25:51 -0700</bug_when>
    <thetext>Created attachment 311954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315518</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-04 00:28:47 -0700</bug_when>
    <thetext>Attachment 311954 did not pass style-queue:


ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:145:  CryptoAlgorithmRSA_PSS::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:173:  CryptoAlgorithmRSA_PSS::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 12 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>1315789</commentid>
    <comment_count>9</comment_count>
      <attachid>311954</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-06-05 14:43:13 -0700</bug_when>
    <thetext>Comment on attachment 311954
Patch

wpe port seems not happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315920</commentid>
    <comment_count>10</comment_count>
      <attachid>312058</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-05 23:17:33 -0700</bug_when>
    <thetext>Created attachment 312058
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315922</commentid>
    <comment_count>11</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-05 23:20:12 -0700</bug_when>
    <thetext>Attachment 312058 did not pass style-queue:


ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:145:  CryptoAlgorithmRSA_PSS::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:173:  CryptoAlgorithmRSA_PSS::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 12 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>1316232</commentid>
    <comment_count>12</comment_count>
      <attachid>312058</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-06-06 14:13:40 -0700</bug_when>
    <thetext>Comment on attachment 312058
Patch

r=me. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316416</commentid>
    <comment_count>13</comment_count>
      <attachid>312172</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-07 02:00:39 -0700</bug_when>
    <thetext>Created attachment 312172
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316417</commentid>
    <comment_count>14</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-07 02:02:27 -0700</bug_when>
    <thetext>Attachment 312172 did not pass style-queue:


ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:145:  CryptoAlgorithmRSA_PSS::platformSign is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
ERROR: Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:173:  CryptoAlgorithmRSA_PSS::platformVerify is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 2 in 11 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>1316418</commentid>
    <comment_count>15</comment_count>
      <attachid>312172</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-07 02:16:06 -0700</bug_when>
    <thetext>Comment on attachment 312172
Patch for landing

Clearing flags on attachment: 312172

Committed r217877: &lt;http://trac.webkit.org/changeset/217877&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316419</commentid>
    <comment_count>16</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-07 02:16:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311822</attachid>
            <date>2017-06-02 07:37:15 -0700</date>
            <delta_ts>2017-06-04 00:25:47 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-172856-20170602163713.patch</filename>
            <type>text/plain</type>
            <size>18894</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU2MDc1M2UzOWUzZDAyMzYzOTY3ODY0
ZDNmMDdjMWNjNTUyYmVjMWIuLjliZjk2YTYyZTZhMzBmYTY3YTVlMjkwODUxMDQ3NTVkNDRkNjQ5
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTctMDYtMDIgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIFJTQS1QU1Mgc3VwcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyODU2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm0uaDoKKwogMjAxNy0wNi0wMSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbmRvIHJvbGxvdXQgaW4gcjIxNzYzOCB3aXRoIGJ1ZyBmaXgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBmY2RkYmIyODI2MGI0OThjMzJmZDdjODE0Zjk2NjU0Njk1ZjRiMzZiLi40ZDliZmZm
MDA2NmJiNjAzNjJhMGMyNzU5MjljZDg0MjY1YzI3NzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjUgQEAKKzIwMTctMDYtMDIgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHQ3J5cHRdIFJTQS1QU1Mgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyODU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdQRS5jbWFrZToKKyAg
ICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Omhhc2hDcnlwdG9EaWdlc3RBbGdvcml0aG0pOgorICAg
ICAgICAoV2ViQ29yZTo6aGFzaEFsZ29yaXRobU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6bXBp
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRTaWduKToKKyAgICAgICAgKFdlYkNvcmU6
OmdjcnlwdFZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfUFNT
OjpwbGF0Zm9ybVNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX1BT
Uzo6cGxhdGZvcm1WZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtUmVnaXN0cnlHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
UmVnaXN0cnk6OnBsYXRmb3JtUmVnaXN0ZXJBbGdvcml0aG1zKToKKwogMjAxNy0wNi0wMiAgSmF2
aWVyIEZlcm5hbmRleiAgPGpmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWdy
aWRdIExvZ2ljYWwgbWFyZ2luIGluY29ycmVjdGx5IGFwcGxpZWQgZHVyaW5nIHRoZSB0cmFja3Mg
c2l6aW5nIGFsZ29yaXRobSBvZiBhdXRvIHRyYWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggMGM5NTZmNGZm
NjM4MDY3NWU0YzQyN2RmMjBlYzk2ZTY2MGEwYmQ3OS4uMGZmOTlkMzM1NDJjZWE5NDEyYjI2M2Yx
YmI4YmMyMGIzZGE1ZDYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0xMjcxLDcgKzEyNzEsNyBAQAogI2Rl
ZmluZSBVU0VfTElCV0VCUlRDIDEKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JNKE1BQykgJiYgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1Mp
ICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkKKyNpZiAoUExB
VEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkg
fHwgKFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTEwMDAwKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICNkZWZpbmUgSEFWRV9S
U0FfUFNTIDEKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdU
Sy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDBhZTExYTBi
OGZjZGNmOTdjNDdhYTFjOWE0MDc5YWQxYmRkYzBiNDUuLjI0Njk5ZmRjMzQ0Njc0MDI3ZGZmNDgx
YTgzZmEzMjRlZTFlZmI3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RL
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0zNzYsNiAr
Mzc2LDcgQEAgaWYgKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKQogICAgICAgICBjcnlwdG8vZ2NyeXB0
L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCiAgICAgICAgIGNyeXB0
by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCiAgICAg
ICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwCisgICAg
ICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAKICAgICAg
ICAgY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeUdDcnlwdC5jcHAKICAgICAg
ICAgY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKICAgICAgICAgY3J5cHRvL2dj
cnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4
IGEzZGZjM2ExZWNlN2Y5YTg5MmUzNWI0ODA2ODc5NjUwN2UzYWZiNDEuLjhiOGI4NDBlNTNkZWQ4
MGJlOTgxYmNlM2U3NGQ3NTdhYjRlNTQ5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BFLmNtYWtlCkBA
IC0yNDEsNiArMjQxLDcgQEAgaWYgKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKQogICAgICAgICBjcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCiAgICAg
ICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQu
Y3BwCiAgICAgICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQu
Y3BwCisgICAgICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5j
cHAKICAgICAgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeUdDcnlwdC5j
cHAKICAgICAgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKICAgICAgICAg
Y3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mYWMwZWZiOGIxNDNiZjZjYjIxZDgxYmI1MjczYzU2YWVkMDYyNzhj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcApAQCAtMCwwICsxLDI2MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAx
NyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5oIgorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pICYm
IEhBVkUoUlNBX1BTUykKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcy5o
IgorI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
KyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0
by9DcnlwdG9EaWdlc3QuaD4KKyNpbmNsdWRlIDxwYWwvY3J5cHRvL2djcnlwdC9IYW5kbGUuaD4K
KyNpbmNsdWRlIDxwYWwvY3J5cHRvL2djcnlwdC9VdGlsaXRpZXMuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtPiBoYXNoQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aWRlbnRpZmllcikKK3sKKyAgICBzd2l0Y2ggKGlkZW50aWZpZXIpIHsKKyAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgorICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE7CisgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMjI0OgorICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzIyNDsKKyAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6
CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2Owor
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoKKyAgICAgICAgcmV0
dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CisgICAgY2FzZSBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgorICAgICAgICByZXR1cm4gUEFMOjpDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIH0KK30KKworc3RhdGljIHN0ZDo6b3B0aW9uYWw8Y29uc3Qg
Y2hhcio+IGhhc2hBbGdvcml0aG1OYW1lKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKK3sKKyAgICBzd2l0Y2ggKGlkZW50aWZpZXIpIHsKKyAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OlNIQV8xOgorICAgICAgICByZXR1cm4gInNoYTEiOworICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKKyAgICAgICAgcmV0dXJuICJzaGEy
MjQiOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKKyAgICAg
ICAgcmV0dXJuICJzaGEyNTYiOworICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzM4NDoKKyAgICAgICAgcmV0dXJuICJzaGEzODQiOworICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKKyAgICAgICAgcmV0dXJuICJzaGE1MTIiOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorfQorCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IG1waURhdGEoZ2NyeV9zZXhwX3QgcGFyYW1T
ZXhwKQoreworICAgIC8vIFJldHJpZXZlIHRoZSBNUEkgdmFsdWUgc3RvcmVkIGluIHRoZSBzLWV4
cHJlc3Npb246IChuYW1lIG1waS1kYXRhKQorICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9t
cGlfdD4gcGFyYW1NUEkoZ2NyeV9zZXhwX250aF9tcGkocGFyYW1TZXhwLCAxLCBHQ1JZTVBJX0ZN
VF9VU0cpKTsKKyAgICBpZiAoIXBhcmFtTVBJKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgLy8gUXVlcnkgdGhlIGRhdGEgbGVuZ3RoIGZpcnN0IHRvIHByb3Blcmx5IHByZXBh
cmUgdGhlIGJ1ZmZlci4KKyAgICBzaXplX3QgZGF0YUxlbmd0aCA9IDA7CisgICAgZ2NyeV9lcnJv
cl90IGVycm9yID0gZ2NyeV9tcGlfcHJpbnQoR0NSWU1QSV9GTVRfVVNHLCBudWxscHRyLCAwLCAm
ZGF0YUxlbmd0aCwgcGFyYW1NUEkpOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CisgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgLy8gRmluYWxseSwgY29weSB0aGUgTVBJIGRh
dGEgaW50byBhIHByb3Blcmx5LXNpemVkIGJ1ZmZlci4KKyAgICBWZWN0b3I8dWludDhfdD4gb3V0
cHV0KGRhdGFMZW5ndGgpOworICAgIGVycm9yID0gZ2NyeV9tcGlfcHJpbnQoR0NSWU1QSV9GTVRf
VVNHLCBvdXRwdXQuZGF0YSgpLCBvdXRwdXQuc2l6ZSgpLCBudWxscHRyLCBwYXJhbU1QSSk7Cisg
ICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6
OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisK
KyAgICByZXR1cm4gb3V0cHV0OworfQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBkYXRhLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlm
aWVyLCBzaXplX3Qgc2FsdExlbmd0aCkKK3sKKyAgICAvLyBQZXJmb3JtIGRpZ2VzdCBvcGVyYXRp
b24gd2l0aCB0aGUgc3BlY2lmaWVkIGFsZ29yaXRobSBvbiB0aGUgZ2l2ZW4gZGF0YS4KKyAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YUhhc2g7CisgICAgeworICAgICAgICBhdXRvIGRpZ2VzdEFsZ29y
aXRobSA9IGhhc2hDcnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaEFsZ29yaXRobUlkZW50aWZpZXIp
OworICAgICAgICBpZiAoIWRpZ2VzdEFsZ29yaXRobSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICAgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKCpkaWdlc3RBbGdvcml0aG0pOworICAgICAgICBpZiAoIWRpZ2VzdCkKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLmRh
dGEoKSwgZGF0YS5zaXplKCkpOworICAgICAgICBkYXRhSGFzaCA9IGRpZ2VzdC0+Y29tcHV0ZUhh
c2goKTsKKyAgICB9CisKKyAgICAvLyBDb25zdHJ1Y3QgdGhlIGRhdGEgcy1leHByZXNzaW9uIHRo
YXQgY29udGFpbnMgUFNTLXBhZGRlZCBoYXNoZWQgZGF0YS4KKyAgICBQQUw6OkdDcnlwdDo6SGFu
ZGxlPGdjcnlfc2V4cF90PiBkYXRhU2V4cDsKKyAgICB7CisgICAgICAgIGF1dG8gc2hhQWxnb3Jp
dGhtID0gaGFzaEFsZ29yaXRobU5hbWUoaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpOworICAgICAg
ICBpZiAoIXNoYUFsZ29yaXRobSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwg
bnVsbHB0ciwgIihkYXRhKGZsYWdzIHBzcykoc2FsdC1sZW5ndGggJXUpKGhhc2ggJXMgJWIpKSIs
CisgICAgICAgICAgICBzYWx0TGVuZ3RoLCAqc2hhQWxnb3JpdGhtLCBkYXRhSGFzaC5zaXplKCks
IGRhdGFIYXNoLmRhdGEoKSk7CisgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFBlcmZv
cm0gdGhlIFBLIHNpZ25pbmcsIHJldHJpZXZpbmcgYSBzaWctdmFsIHMtZXhwcmVzc2lvbiBvZiB0
aGUgZm9sbG93aW5nIGZvcm06CisgICAgLy8gKHNpZy12YWwKKyAgICAvLyAgIChyc2EKKyAgICAv
LyAgICAgKHMgcy1tcGkpKSkKKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBz
aWduYXR1cmVTZXhwOworICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfcGtfc2lnbigmc2ln
bmF0dXJlU2V4cCwgZGF0YVNleHAsIGtleVNleHApOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJS
X05PX0VSUk9SKSB7CisgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgLy8gUmV0dXJuIE1QSSBkYXRh
IG9mIHRoZSBlbWJlZGRlZCBzIGludGVnZXIuCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5
X3NleHBfdD4gc1NleHAoZ2NyeV9zZXhwX2ZpbmRfdG9rZW4oc2lnbmF0dXJlU2V4cCwgInMiLCAw
KSk7CisgICAgaWYgKCFzU2V4cCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IHJldHVybiBtcGlEYXRhKHNTZXhwKTsKK30KKworc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
Z2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
c2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBzYWx0TGVuZ3RoKQorewor
ICAgIC8vIFBlcmZvcm0gZGlnZXN0IG9wZXJhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgYWxnb3Jp
dGhtIG9uIHRoZSBnaXZlbiBkYXRhLgorICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhSGFzaDsKKyAg
ICB7CisgICAgICAgIGF1dG8gZGlnZXN0QWxnb3JpdGhtID0gaGFzaENyeXB0b0RpZ2VzdEFsZ29y
aXRobShoYXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CisgICAgICAgIGlmICghZGlnZXN0QWxnb3Jp
dGhtKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBhdXRvIGRp
Z2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmRpZ2VzdEFsZ29yaXRobSk7CisgICAg
ICAgIGlmICghZGlnZXN0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
ICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAg
IGRhdGFIYXNoID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOworICAgIH0KKworICAgIC8vIENvbnN0
cnVjdCB0aGUgc2lnLXZhbCBzLWV4cHJlc3Npb24gdGhhdCBjb250YWlucyB0aGUgc2lnbmF0dXJl
IGRhdGEuCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gc2lnbmF0dXJlU2V4
cDsKKyAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X3NleHBfYnVpbGQoJnNpZ25hdHVyZVNl
eHAsIG51bGxwdHIsICIoc2lnLXZhbChyc2EocyAlYikpKSIsCisgICAgICAgIHNpZ25hdHVyZS5z
aXplKCksIHNpZ25hdHVyZS5kYXRhKCkpOworICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VS
Uk9SKSB7CisgICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7CisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgLy8gQ29uc3RydWN0IHRoZSBkYXRhIHMt
ZXhwcmVzc2lvbiB0aGF0IGNvbnRhaW5zIFBTUy1wYWRkZWQgaGFzaGVkIGRhdGEuCisgICAgUEFM
OjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gZGF0YVNleHA7CisgICAgeworICAgICAgICBh
dXRvIHNoYUFsZ29yaXRobSA9IGhhc2hBbGdvcml0aG1OYW1lKGhhc2hBbGdvcml0aG1JZGVudGlm
aWVyKTsKKyAgICAgICAgaWYgKCFzaGFBbGdvcml0aG0pCisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworCisgICAgICAgIGVycm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwg
bnVsbHB0ciwgIihkYXRhKGZsYWdzIHBzcykoc2FsdC1sZW5ndGggJXUpKGhhc2ggJXMgJWIpKSIs
CisgICAgICAgICAgICBzYWx0TGVuZ3RoLCAqc2hhQWxnb3JpdGhtLCBkYXRhSGFzaC5zaXplKCks
IGRhdGFIYXNoLmRhdGEoKSk7CisgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFBlcmZv
cm0gdGhlIFBLIHZlcmlmaWNhdGlvbi4gV2UgcmVwb3J0IHN1Y2Nlc3MgaWYgdGhlcmUncyBubyBl
cnJvciByZXR1cm5lZCwgb3IKKyAgICAvLyBhIGZhaWx1cmUgaW4gYW55IG90aGVyIGNhc2UuIE9w
ZXJhdGlvbkVycm9yIHNob3VsZCBub3QgYmUgcmV0dXJuZWQgYXQgdGhpcyBwb2ludC4KKyAgICBl
cnJvciA9IGdjcnlfcGtfdmVyaWZ5KHNpZ25hdHVyZVNleHAsIGRhdGFTZXhwLCBrZXlTZXhwKTsK
KyAgICByZXR1cm4geyBlcnJvciA9PSBHUEdfRVJSX05PX0VSUk9SIH07Cit9CisKK3ZvaWQgQ3J5
cHRvQWxnb3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1TaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBW
ZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRp
b25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK3sKKyAgICBjb250ZXh0LnJlZigpOworICAg
IHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8mIHJz
YUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5LmdldCgpKTsKKyAgICAgICAgICAgIGF1
dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+
KCpwYXJhbWV0ZXJzKTsKKworICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRTaWduKHJz
YUtleS5wbGF0Zm9ybUtleSgpLCBkYXRhLCByc2FLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIo
KSwgcnNhUGFyYW1ldGVycy5zYWx0TGVuZ3RoKTsKKyAgICAgICAgICAgIGlmICghb3V0cHV0KSB7
CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tz
IGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAg
ICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgICAgIFtjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJh
Y2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5w
b3N0VGFzaygKKyAgICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAg
ICAgICAgICAgICAgICAgICBjYWxsYmFjayhvdXRwdXQpOworICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworfQorCit2
b2lkIENyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+
JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRh
dGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlv
bkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdv
cmtRdWV1ZSkKK3sKKyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgK
KyAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3Zl
KGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwgZGF0YSA9IFdURk1vdmUoZGF0
YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RG
TW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgICAgICAg
ICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UlNBPihrZXkuZ2V0KCkpOworICAg
ICAgICAgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVJz
YVBzc1BhcmFtcz4oKnBhcmFtZXRlcnMpOworCisgICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdj
cnlwdFZlcmlmeShyc2FLZXkucGxhdGZvcm1LZXkoKSwgc2lnbmF0dXJlLCBkYXRhLCByc2FLZXku
aGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSwgcnNhUGFyYW1ldGVycy5zYWx0TGVuZ3RoKTsKKyAg
ICAgICAgICAgIGlmICghb3V0cHV0KSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50
L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAg
ICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25D
YWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFj
ayhPcGVyYXRpb25FcnJvcik7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVm
KCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2Ug
Y2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRz
LgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICBbb3V0cHV0
ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhvdXRwdXQp
OworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgIH0pOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShTVUJUTEVfQ1JZUFRPKSAmJiBIQVZFKFJTQV9QU1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5R0NyeXB0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0
cnlHQ3J5cHQuY3BwCmluZGV4IDIyNmQ4OTVkNmIyOWU5MDg3ZTIzODVjMWM5MTBmNGU3ODljMGU0
OWQuLmI0NWI3YWI5YWUzOTdjNWRlYjA1NzIzOTMxMzJmYmFkYjJhNjU3MjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlHQ3J5
cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
UmVnaXN0cnlHQ3J5cHQuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81LmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCIKKyNp
bmNsdWRlICJDcnlwdG9BbGdvcml0aG1SU0FfUFNTLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3Jp
dGhtU0hBMS5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVNIQTIyNC5oIgogI2luY2x1ZGUg
IkNyeXB0b0FsZ29yaXRobVNIQTI1Ni5oIgpAQCAtNjQsNiArNjUsNyBAQCB2b2lkIENyeXB0b0Fs
Z29yaXRobVJlZ2lzdHJ5OjpwbGF0Zm9ybVJlZ2lzdGVyQWxnb3JpdGhtcygpCiAgICAgcmVnaXN0
ZXJBbGdvcml0aG08Q3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNT4oKTsKICAgICByZWdp
c3RlckFsZ29yaXRobTxDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNT4oKTsKICAgICBy
ZWdpc3RlckFsZ29yaXRobTxDcnlwdG9BbGdvcml0aG1SU0FfT0FFUD4oKTsKKyAgICByZWdpc3Rl
ckFsZ29yaXRobTxDcnlwdG9BbGdvcml0aG1SU0FfUFNTPigpOwogICAgIHJlZ2lzdGVyQWxnb3Jp
dGhtPENyeXB0b0FsZ29yaXRobVNIQTE+KCk7CiAgICAgcmVnaXN0ZXJBbGdvcml0aG08Q3J5cHRv
QWxnb3JpdGhtU0hBMjI0PigpOwogICAgIHJlZ2lzdGVyQWxnb3JpdGhtPENyeXB0b0FsZ29yaXRo
bVNIQTI1Nj4oKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA4ZGFjYzcwYTUyNTY1MGM3ODcwNmU4ZTYzZTBlYWE4MzEyZGM2
NGRkLi5mYzdjZWRlMWZjODAxOGI5MjQwNDM0MzE0MGQ0MTk4NTE4MDQ0YTNmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTIgQEAKKzIwMTctMDYtMDIgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtHQ3J5cHRdIFJTQS1QU1Mgc3VwcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyODU2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVj
dGF0aW9uczoKKwogMjAxNy0wNi0wMiAgSmF2aWVyIEZlcm5hbmRleiAgPGpmZXJuYW5kZXpAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbY3NzLWdyaWRdIExvZ2ljYWwgbWFyZ2luIGluY29ycmVjdGx5
IGFwcGxpZWQgZHVyaW5nIHRoZSB0cmFja3Mgc2l6aW5nIGFsZ29yaXRobSBvZiBhdXRvIHRyYWNr
cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5OWI5MzQ4
MmRlZjk1OThmYWVlYzJjZmYyOGIzMTQ1NTQ5MzU3MmI1Li41Mzc1OTk3NGE4YmE4Zjk2MGEyNzIz
ZTgzODg0OWRjMTFjZGFmMGJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtOTIwLDYgKzkyMCwyMSBAQCBjcnlwdG8vc3VidGxlL3JzYS1vYWVwLWltcG9y
dC1rZXktZW5jcnlwdC1sYWJlbC5odG1sIFsgUGFzcyBdCiBjcnlwdG8vc3VidGxlL3JzYS1vYWVw
LWltcG9ydC1rZXktdW53cmFwLWp3ay1vY3Qta2V5Lmh0bWwgWyBQYXNzIF0KIGNyeXB0by9zdWJ0
bGUvcnNhLW9hZXAtaW1wb3J0LWtleS13cmFwLWp3ay1vY3Qta2V5Lmh0bWwgWyBQYXNzIF0KIGNy
eXB0by9zdWJ0bGUvcnNhLW9hZXAtcGxhaW50ZXh0LWxlbmd0aC5odG1sIFsgUGFzcyBdCitjcnlw
dG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2stc2hhMS5odG1sIFsgUGFz
cyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2stc2hhMjI0
Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBvcnQta2V5
LWp3ay1zaGEyNTYuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRl
LWV4cG9ydC1rZXktandrLXNoYTM4NC5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1w
c3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2stc2hhNTEyLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9z
dWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1rZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9y
c2EtcHNzLWltcG9ydC1qd2stcHJpdmF0ZS1rZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRs
ZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1lbXB0eS11c2FnZXMuaHRtbCBbIFBhc3Mg
XQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1zaGExLmh0bWwg
WyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtandrLXB1YmxpYy1rZXktc2hh
MjI0Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtandrLXB1Ymxp
Yy1rZXktc2hhMjU2Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQt
andrLXB1YmxpYy1rZXktc2hhMzg0Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBz
cy1pbXBvcnQtandrLXB1YmxpYy1rZXktc2hhNTEyLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0
bGUvcnNhLXBzcy1pbXBvcnQta2V5LXNpZ24uaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9y
c2EtcHNzLWltcG9ydC1rZXktdmVyaWZ5Lmh0bWwgWyBQYXNzIF0KIGNyeXB0by9zdWJ0bGUvcnNh
ZXMtcGtjczEtdjFfNS1nZW5lcmF0ZS1leHBvcnQta2V5LWp3ay5odG1sIFsgUGFzcyBdCiBjcnlw
dG8vc3VidGxlL3JzYWVzLXBrY3MxLXYxXzUtZ2VuZXJhdGUta2V5LWVuY3J5cHQtZGVjcnlwdC5o
dG1sIFsgUGFzcyBdCiBjcnlwdG8vc3VidGxlL3JzYWVzLXBrY3MxLXYxXzUtZ2VuZXJhdGUta2V5
LWV4dHJhY3RhYmxlLmh0bWwgWyBQYXNzIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311954</attachid>
            <date>2017-06-04 00:25:51 -0700</date>
            <delta_ts>2017-06-05 23:17:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172856-20170604092549.patch</filename>
            <type>text/plain</type>
            <size>20401</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA1MWNmNjBkYzZhNTcxZThjYTJhZTlk
MDYyY2Y4ZDQ1OGY5ZDY0MDAuLjRjMjIxN2U3ZWExMjFhMTc0ZmU1NjMyZjBkZmY4ZjgwZmE3ZDIy
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDYtMDMgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIFJTQS1QU1Mgc3VwcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyODU2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm0uaDogRGVmaW5lIEhBVkVfUlNBX1BTUyB0byAxIGZvciBVU0UoR0NSWVBUKS4gU3VwcG9ydCBm
b3IgUlNBLVBTUworICAgICAgICBpcyBwcm92aWRlZCBieSBkZWZhdWx0IHRocm91Z2ggdGhlIGxp
YmdjcnlwdCBsaWJyYXJ5LgorCiAyMDE3LTA2LTAyICBTdGVwaGFuIFN6YWJvICA8c3RlcGhhbi5z
emFib0BhbS5zb255LmNvbT4KIAogICAgICAgICBbSlNDT25seV0gQnVpbGQgc3RhdGljIGpzYy5l
eGUgb24gV2luZG93cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDMzZWU4NTBlZGFkNjUyNTQyYTg4ZGU0NTA0ZmJi
MDQ1ZTdjYTEyODcuLmIwY2EzZWM1NTAxZGU5ZjkwOWRlZGU3ZGQwOWQ5YzYwZTBmYjRkZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxNy0wNi0wMyAgWmFuIERvYmVyc2VrICA8emRv
YmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dDcnlwdF0gUlNBLVBTUyBzdXBwb3J0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI4NTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQg
UlNBLVBTUyBzdXBwb3J0IGZvciBXZWIgQ3J5cHRvIEFQSSBpbiBwb3J0cyB0aGF0IHVzZSBsaWJn
Y3J5cHQuCisKKyAgICAgICAgRm9yIHRoZSBzaWduaW5nIG9wZXJhdGlvbiwgdGhlIGRpZ2VzdCBh
bGdvcml0aG0gaXMgZGV0ZXJtaW5lZCBhbmQgdXNlZCB0bworICAgICAgICBjb21wdXRlIHRoZSBo
YXNoIG9mIHRoZSBwYXNzZWQtaW4gZGF0YS4gVGhlIGdpdmVuIHNhbHQgbGVuZ3RoIGFuZCBoYXNo
IHJlc3VsdHMKKyAgICAgICAgYXJlIGVtYmVkZGVkIGludG8gYSBkYXRhIHMtZXhwcmVzc2lvbiwg
c3BlY2lmeWluZyBQU1MgYXMgdGhlIHByZWZlcnJlZCB0eXBlIG9mCisgICAgICAgIHBhZGRpbmcu
IFRoaXMgcy1leHByZXNzaW9uIGFuZCB0aGUgcHJvdmlkZWQga2V5IGFyZSB0aGVuIHBhc3NlZCB0
byB0aGUKKyAgICAgICAgZ2NyeV9wa19zaWduKCkgY2FsbCB3aGljaCBjb21wdXRlcyB0aGUgc2ln
bmF0dXJlLiBUaGUgTVBJIGRhdGEgb2YgdGhpcyBzaWduYXR1cmUKKyAgICAgICAgaXMgcmV0cmll
dmVkIGFuZCBpdHMgc2l6ZSB2YWxpZGF0ZWQgYmVmb3JlIGJlaW5nIHBhc3NlZCB0byB0aGUgc3Vj
Y2VzcyBjYWxsYmFjay4KKworICAgICAgICBGb3IgdGhlIHZlcmlmaWNhdGlvbiBvcGVyYXRpb24s
IHRoZSBoYXNoIG9mIHRoZSBwYXNzZWQtaW4gZGF0YSBpcyBjb21wdXRlZCBhcworICAgICAgICBi
ZWZvcmUsIGVtYmVkZGluZyBpdCBpbnRvIGEgZGF0YSBzLWV4cHJlc3Npb24gYWxvbmcgd2l0aCB0
aGUgc3BlY2lmaWVkIHNhbHQKKyAgICAgICAgbGVuZ3RoLiBUaGUgcGFzc2VkLWluIHNpZ25hdHVy
ZSBkYXRhIGlzIGVtYmVkZGVkIGludG8gYSBzaWctdmFsIHMtZXhwcmVzc2lvbi4KKyAgICAgICAg
VGhlIHR3byBzLWV4cHJlc3Npb25zIGFyZSBwYXNzZWQgdG8gdGhlIGdjcnlfcGtfdmVyaWZ5KCkg
Y2FsbCBhbG9uZyB3aXRoIHRoZQorICAgICAgICBrZXkuIElmIHRoZSByZXR1cm5lZCBlcnJvciBj
b2RlIGZvciB0aGlzIG9wZXJhdGlvbiBpcyBHUEdfRVJSX05PX0VSUk9SIHRoZQorICAgICAgICB2
ZXJpZmljYXRpb24gaXMgZGVlbWVkIHN1Y2Nlc3NmdWwsIHdoaWxlIGluIGNhc2Ugb2YgYW55IG90
aGVyIGVycm9yIGNvZGUgKHdoaWNoCisgICAgICAgIG1pZ2h0IGluZGljYXRlIGEgdmVyaWZpY2F0
aW9uIGZhaWx1cmUgb3IgYW4gb3BlcmF0aW9uIGVycm9yKSB3ZSBzaW1wbHkgc2lnbmFsCisgICAg
ICAgIHRoYXQgdGhlIHZlcmlmaWNhdGlvbiBzdGVwIGZhaWxlZCAoYW5kIG5vdCB0aGF0IGl0IHBv
c3NpYmx5IGVycm9yZWQgb3V0KS4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gY292ZXJlZCBi
eSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBBZGQgdGhl
IG5ldyBidWlsZCB0YXJnZXQuCisgICAgICAgICogUGxhdGZvcm1XUEUuY21ha2U6IERpdHRvLgor
ICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0U2lnbik6CisgICAgICAgIChXZWJDb3Jl
OjpnY3J5cHRWZXJpZnkpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX1BT
Uzo6cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9Q
U1M6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobVJlZ2lzdHJ5R0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5OjpwbGF0Zm9ybVJlZ2lzdGVyQWxnb3JpdGhtcyk6IFJlZ2lzdGVyIHRoZSBSU0Et
UFNTIGFsZ29yaXRobS4KKwogMjAxNy0wNi0wMyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgogCiAgICAgICAgIENsZWFudXAgYXJndW1lbnRzIHRvIHByZXBhcmVQbGF0
Zm9ybUZvbnQoKSBhbmQgZm9udFdpdGhGYW1pbHkoKSBpbiBGb250Q2FjaGVDb3JlVGV4dC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCmluZGV4IDBjOTU2ZjRmZjYzODA2NzVlNGM0MjdkZjIwZWM5NmU2NjBhMGJkNzku
LmE3NGQ4ZGY5NTJjOWNmYzMxZDlhYzA1ODMwOGQ1OTUwYTlmYWM1YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApA
QCAtMTI3MSw3ICsxMjcxLDcgQEAKICNkZWZpbmUgVVNFX0xJQldFQlJUQyAxCiAjZW5kaWYKIAot
I2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFV
SVJFRCA+PSAxMTAwMDApCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEzMDApIHx8IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMCkgfHwgVVNFKEdDUllQVCkKICNkZWZpbmUg
SEFWRV9SU0FfUFNTIDEKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDBh
ZTExYTBiOGZjZGNmOTdjNDdhYTFjOWE0MDc5YWQxYmRkYzBiNDUuLjI0Njk5ZmRjMzQ0Njc0MDI3
ZGZmNDgxYTgzZmEzMjRlZTFlZmI3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0z
NzYsNiArMzc2LDcgQEAgaWYgKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKQogICAgICAgICBjcnlwdG8v
Z2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCiAgICAgICAg
IGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3Bw
CiAgICAgICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3Bw
CisgICAgICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAK
ICAgICAgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeUdDcnlwdC5jcHAK
ICAgICAgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKICAgICAgICAgY3J5
cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdQRS5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BFLmNtYWtl
CmluZGV4IGEzZGZjM2ExZWNlN2Y5YTg5MmUzNWI0ODA2ODc5NjUwN2UzYWZiNDEuLjhiOGI4NDBl
NTNkZWQ4MGJlOTgxYmNlM2U3NGQ3NTdhYjRlNTQ5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BFLmNt
YWtlCkBAIC0yNDEsNiArMjQxLDcgQEAgaWYgKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKQogICAgICAg
ICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3Bw
CiAgICAgICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVH
Q3J5cHQuY3BwCiAgICAgICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBH
Q3J5cHQuY3BwCisgICAgICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dD
cnlwdC5jcHAKICAgICAgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeUdD
cnlwdC5jcHAKICAgICAgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKICAg
ICAgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfUFNT
R0NyeXB0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNDkyZWFkOTc5ODE2MjVkYmYwMTRlNmQ1NGVkYzU1ZGQ1
MzRkZmQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcApAQCAtMCwwICsxLDIwNCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAo
QykgMjAxNyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUy5oIgorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQ
VE8pCisKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXMuaCIKKyNpbmNsdWRl
ICJDcnlwdG9LZXlSU0EuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAi
R0NyeXB0VXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBrZXlTZXhwLCBzaXplX3Qga2V5TGVuZ3RoLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFz
aEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBzYWx0TGVuZ3RoKQoreworICAgIC8vIFBlcmZv
cm0gZGlnZXN0IG9wZXJhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIG9uIHRoZSBn
aXZlbiBkYXRhLgorICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhSGFzaDsKKyAgICB7CisgICAgICAg
IGF1dG8gZGlnZXN0QWxnb3JpdGhtID0gaGFzaENyeXB0b0RpZ2VzdEFsZ29yaXRobShoYXNoQWxn
b3JpdGhtSWRlbnRpZmllcik7CisgICAgICAgIGlmICghZGlnZXN0QWxnb3JpdGhtKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6
Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmRpZ2VzdEFsZ29yaXRobSk7CisgICAgICAgIGlmICghZGln
ZXN0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBkaWdlc3Qt
PmFkZEJ5dGVzKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAgIGRhdGFIYXNoID0g
ZGlnZXN0LT5jb21wdXRlSGFzaCgpOworICAgIH0KKworICAgIC8vIENvbnN0cnVjdCB0aGUgYGRh
dGFgIHMtZXhwcmVzc2lvbiB0aGF0IGNvbnRhaW5zIFBTUy1wYWRkZWQgaGFzaGVkIGRhdGEuCisg
ICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gZGF0YVNleHA7CisgICAgeworICAg
ICAgICBhdXRvIHNoYUFsZ29yaXRobSA9IGhhc2hBbGdvcml0aG1OYW1lKGhhc2hBbGdvcml0aG1J
ZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFzaGFBbGdvcml0aG0pCisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfc2V4
cF9idWlsZCgmZGF0YVNleHAsIG51bGxwdHIsICIoZGF0YShmbGFncyBwc3MpKHNhbHQtbGVuZ3Ro
ICV1KShoYXNoICVzICViKSkiLAorICAgICAgICAgICAgc2FsdExlbmd0aCwgKnNoYUFsZ29yaXRo
bSwgZGF0YUhhc2guc2l6ZSgpLCBkYXRhSGFzaC5kYXRhKCkpOworICAgICAgICBpZiAoZXJyb3Ig
IT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9y
KGVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyBQZXJmb3JtIHRoZSBQSyBzaWduaW5nLCByZXRyaWV2aW5nIGEgYHNpZy12
YWxgIHMtZXhwcmVzc2lvbiBvZiB0aGUgZm9sbG93aW5nIGZvcm06CisgICAgLy8gKHNpZy12YWwK
KyAgICAvLyAgIChyc2EKKyAgICAvLyAgICAgKHMgcy1tcGkpKSkKKyAgICBQQUw6OkdDcnlwdDo6
SGFuZGxlPGdjcnlfc2V4cF90PiBzaWduYXR1cmVTZXhwOworICAgIGdjcnlfZXJyb3JfdCBlcnJv
ciA9IGdjcnlfcGtfc2lnbigmc2lnbmF0dXJlU2V4cCwgZGF0YVNleHAsIGtleVNleHApOworICAg
IGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgIFBBTDo6R0NyeXB0Ojps
b2dFcnJvcihlcnJvcik7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisg
ICAgLy8gUmV0cmlldmUgTVBJIGRhdGEgb2YgdGhlIGVtYmVkZGVkIGBzYCBpbnRlZ2VyLgorICAg
IFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHNTZXhwKGdjcnlfc2V4cF9maW5kX3Rv
a2VuKHNpZ25hdHVyZVNleHAsICJzIiwgMCkpOworICAgIGlmICghc1NleHApCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvLyBWYWxpZGF0ZSB0aGUgTVBJIGRhdGEgc2l6ZSAt
LSBpdCBzaG91bGQgbWF0Y2ggdGhlIGtleSBsZW5ndGggaW4gYnl0ZXMuCisgICAgYXV0byBzaWdu
YXR1cmUgPSBtcGlEYXRhKHNTZXhwKTsKKyAgICBpZiAoIXNpZ25hdHVyZSB8fCBzaWduYXR1cmUt
PnNpemUoKSAhPSBrZXlMZW5ndGggLyA4KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIHNpZ25hdHVyZTsKK30KKworc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
Z2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
c2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBzYWx0TGVuZ3RoKQorewor
ICAgIC8vIFBlcmZvcm0gZGlnZXN0IG9wZXJhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgYWxnb3Jp
dGhtIG9uIHRoZSBnaXZlbiBkYXRhLgorICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhSGFzaDsKKyAg
ICB7CisgICAgICAgIGF1dG8gZGlnZXN0QWxnb3JpdGhtID0gaGFzaENyeXB0b0RpZ2VzdEFsZ29y
aXRobShoYXNoQWxnb3JpdGhtSWRlbnRpZmllcik7CisgICAgICAgIGlmICghZGlnZXN0QWxnb3Jp
dGhtKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBhdXRvIGRp
Z2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmRpZ2VzdEFsZ29yaXRobSk7CisgICAg
ICAgIGlmICghZGlnZXN0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
ICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgICAg
IGRhdGFIYXNoID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOworICAgIH0KKworICAgIC8vIENvbnN0
cnVjdCB0aGUgYHNpZy12YWxgIHMtZXhwcmVzc2lvbiB0aGF0IGNvbnRhaW5zIHRoZSBzaWduYXR1
cmUgZGF0YS4KKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBzaWduYXR1cmVT
ZXhwOworICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmc2lnbmF0dXJl
U2V4cCwgbnVsbHB0ciwgIihzaWctdmFsKHJzYShzICViKSkpIiwKKyAgICAgICAgc2lnbmF0dXJl
LnNpemUoKSwgc2lnbmF0dXJlLmRhdGEoKSk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9f
RVJST1IpIHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICAvLyBDb25zdHJ1Y3QgdGhlIGBkYXRh
YCBzLWV4cHJlc3Npb24gdGhhdCBjb250YWlucyBQU1MtcGFkZGVkIGhhc2hlZCBkYXRhLgorICAg
IFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGRhdGFTZXhwOworICAgIHsKKyAgICAg
ICAgYXV0byBzaGFBbGdvcml0aG0gPSBoYXNoQWxnb3JpdGhtTmFtZShoYXNoQWxnb3JpdGhtSWRl
bnRpZmllcik7CisgICAgICAgIGlmICghc2hhQWxnb3JpdGhtKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgICAgICBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZGF0YVNl
eHAsIG51bGxwdHIsICIoZGF0YShmbGFncyBwc3MpKHNhbHQtbGVuZ3RoICV1KShoYXNoICVzICVi
KSkiLAorICAgICAgICAgICAgc2FsdExlbmd0aCwgKnNoYUFsZ29yaXRobSwgZGF0YUhhc2guc2l6
ZSgpLCBkYXRhSGFzaC5kYXRhKCkpOworICAgICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19F
UlJPUikgeworICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBQ
ZXJmb3JtIHRoZSBQSyB2ZXJpZmljYXRpb24uIFdlIHJlcG9ydCBzdWNjZXNzIGlmIHRoZXJlJ3Mg
bm8gZXJyb3IgcmV0dXJuZWQsIG9yCisgICAgLy8gYSBmYWlsdXJlIGluIGFueSBvdGhlciBjYXNl
LiBPcGVyYXRpb25FcnJvciBzaG91bGQgbm90IGJlIHJldHVybmVkIGF0IHRoaXMgcG9pbnQsCisg
ICAgLy8gYXZvaWRpbmcgc3BpbGxpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGV4YWN0IGNhdXNl
IG9mIHZlcmlmaWNhdGlvbiBmYWlsdXJlLgorICAgIGVycm9yID0gZ2NyeV9wa192ZXJpZnkoc2ln
bmF0dXJlU2V4cCwgZGF0YVNleHAsIGtleVNleHApOworICAgIHJldHVybiB7IGVycm9yID09IEdQ
R19FUlJfTk9fRVJST1IgfTsKK30KKwordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0
Zm9ybVNpZ24oc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFy
YW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2Fs
bGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1
ZXVlKQoreworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAorICAg
ICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUoa2V5
KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgp
IG11dGFibGUgeworICAgICAgICAgICAgYXV0byYgcnNhS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5
UlNBPihrZXkuZ2V0KCkpOworICAgICAgICAgICAgYXV0byYgcnNhUGFyYW1ldGVycyA9IGRvd25j
YXN0PENyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcz4oKnBhcmFtZXRlcnMpOworCisgICAgICAg
ICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdFNpZ24ocnNhS2V5LnBsYXRmb3JtS2V5KCksIHJzYUtl
eS5rZXlTaXplSW5CaXRzKCksIGRhdGEsIHJzYUtleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigp
LCByc2FQYXJhbWV0ZXJzLnNhbHRMZW5ndGgpOworICAgICAgICAgICAgaWYgKCFvdXRwdXQpIHsK
KyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3Mg
YWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAg
ICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFj
ayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICBjb250ZXh0LnBv
c3RUYXNrKAorICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7CisgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7Cit9CisKK3Zv
aWQgQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1WZXJpZnkoc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4m
JiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0
YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9u
Q2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29y
a1F1ZXVlKQoreworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAor
ICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1vdmUo
a2V5KSwgc2lnbmF0dXJlID0gV1RGTW92ZShzaWduYXR1cmUpLCBkYXRhID0gV1RGTW92ZShkYXRh
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZN
b3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBhdXRvJiByc2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7CisgICAg
ICAgICAgICBhdXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNh
UHNzUGFyYW1zPigqcGFyYW1ldGVycyk7CisKKyAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2Ny
eXB0VmVyaWZ5KHJzYUtleS5wbGF0Zm9ybUtleSgpLCBzaWduYXR1cmUsIGRhdGEsIHJzYUtleS5o
YXNoQWxnb3JpdGhtSWRlbnRpZmllcigpLCByc2FQYXJhbWV0ZXJzLnNhbHRMZW5ndGgpOworICAg
ICAgICAgICAgaWYgKCFvdXRwdXQpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25s
eSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQv
V29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAg
ICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNh
bGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KE9wZXJhdGlvbkVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYo
KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBj
YWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMu
CisgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgIFtvdXRwdXQg
PSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7
CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgfSk7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFNVQlRMRV9DUllQVE8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlHQ3J5cHQuY3BwCmluZGV4
IDIyNmQ4OTVkNmIyOWU5MDg3ZTIzODVjMWM5MTBmNGU3ODljMGU0OWQuLmI0NWI3YWI5YWUzOTdj
NWRlYjA1NzIzOTMxMzJmYmFkYjJhNjU3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlHQ3J5cHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlHQ3J5cHQuY3Bw
CkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFf
djFfNS5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81LmgiCiAj
aW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdv
cml0aG1SU0FfUFNTLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtU0hBMS5oIgogI2luY2x1
ZGUgIkNyeXB0b0FsZ29yaXRobVNIQTIyNC5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVNI
QTI1Ni5oIgpAQCAtNjQsNiArNjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5Ojpw
bGF0Zm9ybVJlZ2lzdGVyQWxnb3JpdGhtcygpCiAgICAgcmVnaXN0ZXJBbGdvcml0aG08Q3J5cHRv
QWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNT4oKTsKICAgICByZWdpc3RlckFsZ29yaXRobTxDcnlw
dG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNT4oKTsKICAgICByZWdpc3RlckFsZ29yaXRobTxD
cnlwdG9BbGdvcml0aG1SU0FfT0FFUD4oKTsKKyAgICByZWdpc3RlckFsZ29yaXRobTxDcnlwdG9B
bGdvcml0aG1SU0FfUFNTPigpOwogICAgIHJlZ2lzdGVyQWxnb3JpdGhtPENyeXB0b0FsZ29yaXRo
bVNIQTE+KCk7CiAgICAgcmVnaXN0ZXJBbGdvcml0aG08Q3J5cHRvQWxnb3JpdGhtU0hBMjI0Pigp
OwogICAgIHJlZ2lzdGVyQWxnb3JpdGhtPENyeXB0b0FsZ29yaXRobVNIQTI1Nj4oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlv
bnNHVEsuY21ha2UKaW5kZXggOThjOTIyYjhjYzQ0ZDBlYTkzMzI2ZmI2YzgxZDQ3NDE5OTRmZjM4
MC4uZGYzMDk2MmU2Zjk3ZTAzOTY3ZmZjZDMwYWZhZDBmMTI0NDA2YTY2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNH
VEsuY21ha2UKQEAgLTI3NCw2ICsyNzQsNyBAQCBpZiAoRU5BQkxFX1NVQlRMRV9DUllQVE8pCiAg
ICAgaWYgKExJQkdDUllQVF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxLjcuMCkKICAgICAgICAgbWVz
c2FnZShGQVRBTF9FUlJPUiAibGliZ2NyeXB0IDEuNy4wIGlzIHJlcXVpcmVkIHRvIGVuYWJsZSBX
ZWIgQ3J5cHRvIEFQSSBzdXBwb3J0LiIpCiAgICAgZW5kaWYgKCkKKyAgICBTRVRfQU5EX0VYUE9T
RV9UT19CVUlMRChVU0VfR0NSWVBUIFRSVUUpCiBlbmRpZiAoKQogCiBTRVRfQU5EX0VYUE9TRV9U
T19CVUlMRChVU0VfVEVYVFVSRV9NQVBQRVIgVFJVRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFr
ZS9PcHRpb25zV1BFLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKaW5kZXgg
YjRlZDU0ZjNlNDYzOWU4ODBmOGI1OTcwMGViMmE5ZmFmM2RjMjE5NS4uMmQ4YjhkN2RhYWYxZWUy
NWU3Y2UxYWNiOTAwNGEwZThhYzc0NjgwNSAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlv
bnNXUEUuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UKQEAgLTExMSw2
ICsxMTEsMTMgQEAgaWYgKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAgICAgZmluZF9w
YWNrYWdlKENhaXJvR0wgMS4xMC4yIFJFUVVJUkVEIENPTVBPTkVOVFMgY2Fpcm8tZWdsKQogZW5k
aWYgKCkKIAoraWYgKEVOQUJMRV9TVUJUTEVfQ1JZUFRPKQorICAgIGlmIChMSUJHQ1JZUFRfVkVS
U0lPTiBWRVJTSU9OX0xFU1MgMS43LjApCisgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgImxp
YmdjcnlwdCAxLjcuMCBpcyByZXF1aXJlZCB0byBlbmFibGUgV2ViIENyeXB0byBBUEkgc3VwcG9y
dC4iKQorICAgIGVuZGlmICgpCisgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0dDUllQ
VCBUUlVFKQorZW5kaWYgKCkKKwogYWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdfV1BFX189MSkK
IGFkZF9kZWZpbml0aW9ucygtRERBVEFfRElSPSIke0NNQUtFX0lOU1RBTExfREFUQURJUn0iKQog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMWRjMTk5MmRlODRjZmYwYTcwMjQ1NjgwYWYxNTkzN2ViODZkYzk5Zi4uNWVmN2Zm
NDY0NGYyZDZlNThkZDZkNmQyNjA1YTU2ODVjMmE1OTdlNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTA2LTAzICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR0NyeXB0XSBSU0EtUFNTIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Mjg1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6IEVu
YWJsZSBSU0EtUFNTIHRlc3RzIHRoYXQgd2UgcGFzcy4gVGhlIHJlbWFpbmluZworICAgICAgICBk
aXNhYmxlZCB0ZXN0cyByZWx5IG9uIFNQS0kgb3IgUEtDUyM4IHN1cHBvcnQgdGhhdCBoYXNuJ3Qg
bGFuZGVkIHlldC4KKwogMjAxNy0wNi0wMyAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5OWI5MzQ4MmRlZjk1OThmYWVlYzJj
ZmYyOGIzMTQ1NTQ5MzU3MmI1Li41Mzc1OTk3NGE4YmE4Zjk2MGEyNzIzZTgzODg0OWRjMTFjZGFm
MGJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtOTIw
LDYgKzkyMCwyMSBAQCBjcnlwdG8vc3VidGxlL3JzYS1vYWVwLWltcG9ydC1rZXktZW5jcnlwdC1s
YWJlbC5odG1sIFsgUGFzcyBdCiBjcnlwdG8vc3VidGxlL3JzYS1vYWVwLWltcG9ydC1rZXktdW53
cmFwLWp3ay1vY3Qta2V5Lmh0bWwgWyBQYXNzIF0KIGNyeXB0by9zdWJ0bGUvcnNhLW9hZXAtaW1w
b3J0LWtleS13cmFwLWp3ay1vY3Qta2V5Lmh0bWwgWyBQYXNzIF0KIGNyeXB0by9zdWJ0bGUvcnNh
LW9hZXAtcGxhaW50ZXh0LWxlbmd0aC5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1w
c3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2stc2hhMS5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3Vi
dGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2stc2hhMjI0Lmh0bWwgWyBQYXNzIF0K
K2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBvcnQta2V5LWp3ay1zaGEyNTYuaHRt
bCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1rZXktandr
LXNoYTM4NC5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhw
b3J0LWtleS1qd2stc2hhNTEyLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1n
ZW5lcmF0ZS1rZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1q
d2stcHJpdmF0ZS1rZXkuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9y
dC1qd2stcHVibGljLWtleS1lbXB0eS11c2FnZXMuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRs
ZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1zaGExLmh0bWwgWyBQYXNzIF0KK2NyeXB0
by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtandrLXB1YmxpYy1rZXktc2hhMjI0Lmh0bWwgWyBQYXNz
IF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtandrLXB1YmxpYy1rZXktc2hhMjU2Lmh0
bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtandrLXB1YmxpYy1rZXkt
c2hhMzg0Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBvcnQtandrLXB1
YmxpYy1rZXktc2hhNTEyLmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1pbXBv
cnQta2V5LXNpZ24uaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1r
ZXktdmVyaWZ5Lmh0bWwgWyBQYXNzIF0KIGNyeXB0by9zdWJ0bGUvcnNhZXMtcGtjczEtdjFfNS1n
ZW5lcmF0ZS1leHBvcnQta2V5LWp3ay5odG1sIFsgUGFzcyBdCiBjcnlwdG8vc3VidGxlL3JzYWVz
LXBrY3MxLXYxXzUtZ2VuZXJhdGUta2V5LWVuY3J5cHQtZGVjcnlwdC5odG1sIFsgUGFzcyBdCiBj
cnlwdG8vc3VidGxlL3JzYWVzLXBrY3MxLXYxXzUtZ2VuZXJhdGUta2V5LWV4dHJhY3RhYmxlLmh0
bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAzNzMz
OWJiNzQ5NGU5NmM5MTc4MmJmODllYzk0MzhkZTAwYzUyMDcwLi43ZGExNWY1NDJjMmFjZDFhYjYw
YjhjYzM5ZmQ1ZjkxODZhM2YyZTkxIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDYtMDMgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNl
a0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIFJTQS1QU1Mgc3VwcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyODU2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
T3B0aW9uc0dUSy5jbWFrZTogU2V0IGFuZCBleHBvc2UgdGhlIFVTRV9HQ1JZUFQgcHJlcHJvY2Vz
c29yIG1hY3JvIHdoZW4KKyAgICAgICAgU1VCVExFX0NSWVBUTyBpcyBlbmFibGVkLgorICAgICAg
ICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlOiBNYXRjaCB0aGUgR1RLKyBwb3J0IGlu
IGRlbWFuZGluZyBhdCBsZWFzdCB2ZXJzaW9uIDEuNy4wCisgICAgICAgIG9mIGxpYmdjcnlwdC4g
QWxzbyBzZXQgYW5kIGV4cG9zZSB0aGUgVVNFX0dDUllQVCBwcmVwcm9jZXNzb3IgbWFjcm8uCisK
IDIwMTctMDYtMDIgIFN0ZXBoYW4gU3phYm8gIDxzdGVwaGFuLnN6YWJvQGFtLnNvbnkuY29tPgog
CiAgICAgICAgIFtKU0NPbmx5XSBCdWlsZCBzdGF0aWMganNjLmV4ZSBvbiBXaW5kb3dzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312058</attachid>
            <date>2017-06-05 23:17:33 -0700</date>
            <delta_ts>2017-06-07 02:00:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172856-20170606081731.patch</filename>
            <type>text/plain</type>
            <size>20937</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3ODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY3ZTYyNDcxY2M3MDZiMjJmNjNkYzE1
Mjg0MGI0NTRlZTMyNjI1ZWEuLjlkMWFkMGZkOTY3ZDA2YzZlMjZkNDZhMTE4YjgwOGJhMTE2NDNm
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDYtMDUgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIFJTQS1QU1Mgc3VwcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyODU2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm0uaDogRGVmaW5lIEhBVkVfUlNBX1BTUyB0byAxIGZvciBVU0UoR0NSWVBUKS4gU3VwcG9ydCBm
b3IgUlNBLVBTUworICAgICAgICBpcyBwcm92aWRlZCBieSBkZWZhdWx0IHRocm91Z2ggdGhlIGxp
YmdjcnlwdCBsaWJyYXJ5LgorCiAyMDE3LTA2LTA1ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgogCiAgICAgICAgIEFsbG93IGNsaWVudHMgdG8gc3BlY2lmeSBhIGxpc3Qgb2YgY29k
ZWNzIHdoaWNoIHNob3VsZCByZXF1aXJlIGhhcmR3YXJlIGRlY29kZSBzdXBwb3J0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGQ1ZmVkYTIxNzBlZDc5ZTRmNzIxMWM4ZjRmOWRjMzNhOTZhNDNlYzkuLjc1NThjMmEx
YjdkMGJiY2JkNTBlOWE4NDZhYjY4MWE1ZjdlMWZhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
MCBAQAorMjAxNy0wNi0wNSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0dDcnlwdF0gUlNBLVBTUyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI4NTYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgUlNBLVBTUyBzdXBwb3J0IGZvciBX
ZWIgQ3J5cHRvIEFQSSBpbiBwb3J0cyB0aGF0IHVzZSBsaWJnY3J5cHQuCisKKyAgICAgICAgRm9y
IHRoZSBzaWduaW5nIG9wZXJhdGlvbiwgdGhlIGRpZ2VzdCBhbGdvcml0aG0gaXMgZGV0ZXJtaW5l
ZCBhbmQgdXNlZCB0bworICAgICAgICBjb21wdXRlIHRoZSBoYXNoIG9mIHRoZSBwYXNzZWQtaW4g
ZGF0YS4gVGhlIGdpdmVuIHNhbHQgbGVuZ3RoIGFuZCBoYXNoIHJlc3VsdHMKKyAgICAgICAgYXJl
IGVtYmVkZGVkIGludG8gYSBkYXRhIHMtZXhwcmVzc2lvbiwgc3BlY2lmeWluZyBQU1MgYXMgdGhl
IHByZWZlcnJlZCB0eXBlIG9mCisgICAgICAgIHBhZGRpbmcuIFRoaXMgcy1leHByZXNzaW9uIGFu
ZCB0aGUgcHJvdmlkZWQga2V5IGFyZSB0aGVuIHBhc3NlZCB0byB0aGUKKyAgICAgICAgZ2NyeV9w
a19zaWduKCkgY2FsbCB3aGljaCBjb21wdXRlcyB0aGUgc2lnbmF0dXJlLiBUaGUgTVBJIGRhdGEg
b2YgdGhpcyBzaWduYXR1cmUKKyAgICAgICAgaXMgcmV0cmlldmVkIGFuZCBpdHMgc2l6ZSB2YWxp
ZGF0ZWQgYmVmb3JlIGJlaW5nIHBhc3NlZCB0byB0aGUgc3VjY2VzcyBjYWxsYmFjay4KKworICAg
ICAgICBGb3IgdGhlIHZlcmlmaWNhdGlvbiBvcGVyYXRpb24sIHRoZSBoYXNoIG9mIHRoZSBwYXNz
ZWQtaW4gZGF0YSBpcyBjb21wdXRlZCBhcworICAgICAgICBiZWZvcmUsIGVtYmVkZGluZyBpdCBp
bnRvIGEgZGF0YSBzLWV4cHJlc3Npb24gYWxvbmcgd2l0aCB0aGUgc3BlY2lmaWVkIHNhbHQKKyAg
ICAgICAgbGVuZ3RoLiBUaGUgcGFzc2VkLWluIHNpZ25hdHVyZSBkYXRhIGlzIGVtYmVkZGVkIGlu
dG8gYSBzaWctdmFsIHMtZXhwcmVzc2lvbi4KKyAgICAgICAgVGhlIHR3byBzLWV4cHJlc3Npb25z
IGFyZSBwYXNzZWQgdG8gdGhlIGdjcnlfcGtfdmVyaWZ5KCkgY2FsbCBhbG9uZyB3aXRoIHRoZQor
ICAgICAgICBrZXkuIElmIHRoZSByZXR1cm5lZCBlcnJvciBjb2RlIGZvciB0aGlzIG9wZXJhdGlv
biBpcyBHUEdfRVJSX05PX0VSUk9SIHRoZQorICAgICAgICB2ZXJpZmljYXRpb24gaXMgZGVlbWVk
IHN1Y2Nlc3NmdWwsIHdoaWxlIGluIGNhc2Ugb2YgYW55IG90aGVyIGVycm9yIGNvZGUgKHdoaWNo
CisgICAgICAgIG1pZ2h0IGluZGljYXRlIGEgdmVyaWZpY2F0aW9uIGZhaWx1cmUgb3IgYW4gb3Bl
cmF0aW9uIGVycm9yKSB3ZSBzaW1wbHkgc2lnbmFsCisgICAgICAgIHRoYXQgdGhlIHZlcmlmaWNh
dGlvbiBzdGVwIGZhaWxlZCAoYW5kIG5vdCB0aGF0IGl0IHBvc3NpYmx5IGVycm9yZWQgb3V0KS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgLS0gY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKwor
ICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOiBBZGQgdGhlIG5ldyBidWlsZCB0YXJnZXRzLgor
ICAgICAgICAqIFBsYXRmb3JtV1BFLmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBjcnlwdG8vZ2Ny
eXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmdjcnlwdFNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0VmVyaWZ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtU2lnbik6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVZlcmlmeSk6
CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeUdDcnlwdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1SZWdpc3RyeTo6cGxhdGZvcm1S
ZWdpc3RlckFsZ29yaXRobXMpOiBSZWdpc3RlciB0aGUgUlNBLVBTUyBhbGdvcml0aG0uCisKIDIw
MTctMDYtMDUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVmYWN0b3IgLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHZhbHVlc0ZvclBhc3RlYm9h
cmRUeXBlOmluSXRlbVNldDpdIHRvIGNoZWNrIHJlYWRhYmxlIHR5cGVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRl
eCAwYzk1NmY0ZmY2MzgwNjc1ZTRjNDI3ZGYyMGVjOTZlNjYwYTBiZDc5Li5hNzRkOGRmOTUyYzlj
ZmMzMWQ5YWMwNTgzMDhkNTk1MGE5ZmFjNWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTEyNzEsNyArMTI3
MSw3IEBACiAjZGVmaW5lIFVTRV9MSUJXRUJSVEMgMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBM
QVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAw
KQorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxMzAwKSB8fCAoUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMTAwMDApIHx8IFVTRShHQ1JZUFQpCiAjZGVmaW5lIEhBVkVfUlNBX1BTUyAx
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAwYWUxMWEwYjhmY2RjZjk3
YzQ3YWExYzlhNDA3OWFkMWJkZGMwYjQ1Li4yNDY5OWZkYzM0NDY3NDAyN2RmZjQ4MWE4M2ZhMzI0
ZWUxZWZiN2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMzc2LDYgKzM3Niw3IEBA
IGlmIChFTkFCTEVfU1VCVExFX0NSWVBUTykKICAgICAgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcAogICAgICAgICBjcnlwdG8vZ2NyeXB0
L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcAogICAgICAgICBjcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQR0NyeXB0LmNwcAorICAgICAgICBjcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwCiAgICAgICAgIGNyeXB0
by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlHQ3J5cHQuY3BwCiAgICAgICAgIGNyeXB0
by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwCiAgICAgICAgIGNyeXB0by9nY3J5cHQvQ3J5
cHRvS2V5UlNBR0NyeXB0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1X
UEUuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCBhM2RmYzNh
MWVjZTdmOWE4OTJlMzViNDgwNjg3OTY1MDdlM2FmYjQxLi45ODU4ZDE4OTkxZTJmOTM0N2MxNzE3
ZGJjNjI4YmM3OWRmMWIxYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdQ
RS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtMjIyLDYg
KzIyMiw3IEBAIGlmIChFTkFCTEVfU1VCVExFX0NSWVBUTykKICAgICAgICAgY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAKICAgICAgICAgY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwCiAgICAgICAg
IGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcAorICAgICAgICBj
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTLmNwcAogICAgICAgICBjcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcAogICAgICAgICBjcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCiAgICAgICAgIGNyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKQEAgLTI0MSw2ICsyNDIsNyBAQCBpZiAoRU5B
QkxFX1NVQlRMRV9DUllQVE8pCiAgICAgICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
UlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAKICAgICAgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKICAgICAgICAgY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdDcnlwdC5jcHAKKyAgICAgICAgY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcAogICAgICAgICBjcnlwdG8vZ2NyeXB0
L0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5R0NyeXB0LmNwcAogICAgICAgICBjcnlwdG8vZ2NyeXB0
L0NyeXB0b0tleUVDR0NyeXB0LmNwcAogICAgICAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJT
QUdDcnlwdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0OTJlYWQ5
Nzk4MTYyNWRiZjAxNGU2ZDU0ZWRjNTVkZDUzNGRmZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3Bw
CkBAIC0wLDAgKzEsMjA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBNZXRyb2xvZ2ljYWwg
R3JvdXAgQi5WLgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1SU0FfUFNTLmgi
CisKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRo
bVJzYVBzc1BhcmFtcy5oIgorI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgorI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtl
eVNleHAsIHNpemVfdCBrZXlMZW5ndGgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllciwgc2l6ZV90IHNh
bHRMZW5ndGgpCit7CisgICAgLy8gUGVyZm9ybSBkaWdlc3Qgb3BlcmF0aW9uIHdpdGggdGhlIHNw
ZWNpZmllZCBhbGdvcml0aG0gb24gdGhlIGdpdmVuIGRhdGEuCisgICAgVmVjdG9yPHVpbnQ4X3Q+
IGRhdGFIYXNoOworICAgIHsKKyAgICAgICAgYXV0byBkaWdlc3RBbGdvcml0aG0gPSBoYXNoQ3J5
cHRvRGlnZXN0QWxnb3JpdGhtKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsKKyAgICAgICAgaWYg
KCFkaWdlc3RBbGdvcml0aG0pCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqZGlnZXN0QWxn
b3JpdGhtKTsKKyAgICAgICAgaWYgKCFkaWdlc3QpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKTsKKyAgICAgICAgZGF0YUhhc2ggPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CisgICAgfQor
CisgICAgLy8gQ29uc3RydWN0IHRoZSBgZGF0YWAgcy1leHByZXNzaW9uIHRoYXQgY29udGFpbnMg
UFNTLXBhZGRlZCBoYXNoZWQgZGF0YS4KKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4
cF90PiBkYXRhU2V4cDsKKyAgICB7CisgICAgICAgIGF1dG8gc2hhQWxnb3JpdGhtID0gaGFzaEFs
Z29yaXRobU5hbWUoaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpOworICAgICAgICBpZiAoIXNoYUFs
Z29yaXRobSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgZ2Ny
eV9lcnJvcl90IGVycm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwgbnVsbHB0ciwgIihk
YXRhKGZsYWdzIHBzcykoc2FsdC1sZW5ndGggJXUpKGhhc2ggJXMgJWIpKSIsCisgICAgICAgICAg
ICBzYWx0TGVuZ3RoLCAqc2hhQWxnb3JpdGhtLCBkYXRhSGFzaC5zaXplKCksIGRhdGFIYXNoLmRh
dGEoKSk7CisgICAgICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAg
ICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFBlcmZvcm0gdGhlIFBLIHNp
Z25pbmcsIHJldHJpZXZpbmcgYSBgc2lnLXZhbGAgcy1leHByZXNzaW9uIG9mIHRoZSBmb2xsb3dp
bmcgZm9ybToKKyAgICAvLyAoc2lnLXZhbAorICAgIC8vICAgKHJzYQorICAgIC8vICAgICAocyBz
LW1waSkpKQorICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHNpZ25hdHVyZVNl
eHA7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9wa19zaWduKCZzaWduYXR1cmVTZXhw
LCBkYXRhU2V4cCwga2V5U2V4cCk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1Ip
IHsKKyAgICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICAvLyBSZXRyaWV2ZSBNUEkgZGF0YSBvZiB0aGUg
ZW1iZWRkZWQgYHNgIGludGVnZXIuCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBf
dD4gc1NleHAoZ2NyeV9zZXhwX2ZpbmRfdG9rZW4oc2lnbmF0dXJlU2V4cCwgInMiLCAwKSk7Cisg
ICAgaWYgKCFzU2V4cCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIC8vIFZh
bGlkYXRlIHRoZSBNUEkgZGF0YSBzaXplIC0tIGl0IHNob3VsZCBtYXRjaCB0aGUga2V5IGxlbmd0
aCBpbiBieXRlcy4KKyAgICBhdXRvIHNpZ25hdHVyZSA9IG1waURhdGEoc1NleHApOworICAgIGlm
ICghc2lnbmF0dXJlIHx8IHNpZ25hdHVyZS0+c2l6ZSgpICE9IGtleUxlbmd0aCAvIDgpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gc2lnbmF0dXJlOworfQorCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4
cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmll
ciwgc2l6ZV90IHNhbHRMZW5ndGgpCit7CisgICAgLy8gUGVyZm9ybSBkaWdlc3Qgb3BlcmF0aW9u
IHdpdGggdGhlIHNwZWNpZmllZCBhbGdvcml0aG0gb24gdGhlIGdpdmVuIGRhdGEuCisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGFIYXNoOworICAgIHsKKyAgICAgICAgYXV0byBkaWdlc3RBbGdvcml0
aG0gPSBoYXNoQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsK
KyAgICAgICAgaWYgKCFkaWdlc3RBbGdvcml0aG0pCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCisgICAgICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0
ZSgqZGlnZXN0QWxnb3JpdGhtKTsKKyAgICAgICAgaWYgKCFkaWdlc3QpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5kYXRh
KCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAgZGF0YUhhc2ggPSBkaWdlc3QtPmNvbXB1dGVIYXNo
KCk7CisgICAgfQorCisgICAgLy8gQ29uc3RydWN0IHRoZSBgc2lnLXZhbGAgcy1leHByZXNzaW9u
IHRoYXQgY29udGFpbnMgdGhlIHNpZ25hdHVyZSBkYXRhLgorICAgIFBBTDo6R0NyeXB0OjpIYW5k
bGU8Z2NyeV9zZXhwX3Q+IHNpZ25hdHVyZVNleHA7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0g
Z2NyeV9zZXhwX2J1aWxkKCZzaWduYXR1cmVTZXhwLCBudWxscHRyLCAiKHNpZy12YWwocnNhKHMg
JWIpKSkiLAorICAgICAgICBzaWduYXR1cmUuc2l6ZSgpLCBzaWduYXR1cmUuZGF0YSgpKTsKKyAg
ICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6
bG9nRXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKwor
ICAgIC8vIENvbnN0cnVjdCB0aGUgYGRhdGFgIHMtZXhwcmVzc2lvbiB0aGF0IGNvbnRhaW5zIFBT
Uy1wYWRkZWQgaGFzaGVkIGRhdGEuCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBf
dD4gZGF0YVNleHA7CisgICAgeworICAgICAgICBhdXRvIHNoYUFsZ29yaXRobSA9IGhhc2hBbGdv
cml0aG1OYW1lKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFzaGFBbGdv
cml0aG0pCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIGVycm9y
ID0gZ2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwgbnVsbHB0ciwgIihkYXRhKGZsYWdzIHBzcyko
c2FsdC1sZW5ndGggJXUpKGhhc2ggJXMgJWIpKSIsCisgICAgICAgICAgICBzYWx0TGVuZ3RoLCAq
c2hhQWxnb3JpdGhtLCBkYXRhSGFzaC5zaXplKCksIGRhdGFIYXNoLmRhdGEoKSk7CisgICAgICAg
IGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAgICBQQUw6OkdDcnlw
dDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIFBlcmZvcm0gdGhlIFBLIHZlcmlmaWNhdGlvbi4gV2Ug
cmVwb3J0IHN1Y2Nlc3MgaWYgdGhlcmUncyBubyBlcnJvciByZXR1cm5lZCwgb3IKKyAgICAvLyBh
IGZhaWx1cmUgaW4gYW55IG90aGVyIGNhc2UuIE9wZXJhdGlvbkVycm9yIHNob3VsZCBub3QgYmUg
cmV0dXJuZWQgYXQgdGhpcyBwb2ludCwKKyAgICAvLyBhdm9pZGluZyBzcGlsbGluZyBpbmZvcm1h
dGlvbiBhYm91dCB0aGUgZXhhY3QgY2F1c2Ugb2YgdmVyaWZpY2F0aW9uIGZhaWx1cmUuCisgICAg
ZXJyb3IgPSBnY3J5X3BrX3ZlcmlmeShzaWduYXR1cmVTZXhwLCBkYXRhU2V4cCwga2V5U2V4cCk7
CisgICAgcmV0dXJuIHsgZXJyb3IgPT0gR1BHX0VSUl9OT19FUlJPUiB9OworfQorCit2b2lkIENy
eXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtU2lnbihzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwg
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0
aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCit7CisgICAgY29udGV4dC5yZWYoKTsKKyAg
ICB3b3JrUXVldWUuZGlzcGF0Y2goCisgICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJh
bWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvJiBy
c2FLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7CisgICAgICAgICAgICBh
dXRvJiByc2FQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1z
PigqcGFyYW1ldGVycyk7CisKKyAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihy
c2FLZXkucGxhdGZvcm1LZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgZGF0YSwgcnNhS2V5
Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFtZXRlcnMuc2FsdExlbmd0aCk7Cisg
ICAgICAgICAgICBpZiAoIW91dHB1dCkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBv
bmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVu
dC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAg
ICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJh
Y2soT3BlcmF0aW9uRXJyb3IpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJl
ZigpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNl
IGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFk
cy4KKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgW291dHB1
dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2Vw
dGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sob3V0cHV0
KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKK30KKwordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0
Zm9ybVZlcmlmeShzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBw
YXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0
dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhj
ZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCit7CisgICAgY29udGV4dC5yZWYoKTsK
KyAgICB3b3JrUXVldWUuZGlzcGF0Y2goCisgICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShw
YXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25h
dHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4
dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0
b0tleVJTQT4oa2V5LmdldCgpKTsKKyAgICAgICAgICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBk
b3duY2FzdDxDcnlwdG9BbGdvcml0aG1Sc2FQc3NQYXJhbXM+KCpwYXJhbWV0ZXJzKTsKKworICAg
ICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHRWZXJpZnkocnNhS2V5LnBsYXRmb3JtS2V5KCks
IHNpZ25hdHVyZSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBh
cmFtZXRlcnMuc2FsdExlbmd0aCk7CisgICAgICAgICAgICBpZiAoIW91dHB1dCkgeworICAgICAg
ICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBi
ZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAg
ICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOworICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdl
IHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRo
ZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2so
CisgICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25D
YWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY2FsbGJhY2sob3V0cHV0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5k
ZXJlZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKK30KKworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0
cnlHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1SZWdpc3RyeUdDcnlwdC5jcHAKaW5kZXggMjI2ZDg5NWQ2YjI5ZTkwODdlMjM4NWMxYzkxMGY0
ZTc4OWMwZTQ5ZC4uYjQ1YjdhYjlhZTM5N2M1ZGViMDU3MjM5MzEzMmZiYWRiMmE2NTcyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SZWdp
c3RyeUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1SZWdpc3RyeUdDcnlwdC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJD
cnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzUuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1SU0FfT0FF
UC5oIgorI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJTQV9QU1MuaCIKICNpbmNsdWRlICJDcnlw
dG9BbGdvcml0aG1TSEExLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmgiCiAj
aW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmgiCkBAIC02NCw2ICs2NSw3IEBAIHZvaWQg
Q3J5cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnBsYXRmb3JtUmVnaXN0ZXJBbGdvcml0aG1zKCkKICAg
ICByZWdpc3RlckFsZ29yaXRobTxDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81PigpOwog
ICAgIHJlZ2lzdGVyQWxnb3JpdGhtPENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81Pigp
OwogICAgIHJlZ2lzdGVyQWxnb3JpdGhtPENyeXB0b0FsZ29yaXRobVJTQV9PQUVQPigpOworICAg
IHJlZ2lzdGVyQWxnb3JpdGhtPENyeXB0b0FsZ29yaXRobVJTQV9QU1M+KCk7CiAgICAgcmVnaXN0
ZXJBbGdvcml0aG08Q3J5cHRvQWxnb3JpdGhtU0hBMT4oKTsKICAgICByZWdpc3RlckFsZ29yaXRo
bTxDcnlwdG9BbGdvcml0aG1TSEEyMjQ+KCk7CiAgICAgcmVnaXN0ZXJBbGdvcml0aG08Q3J5cHRv
QWxnb3JpdGhtU0hBMjU2PigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsu
Y21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCA5OGM5MjJiOGNjNDRk
MGVhOTMzMjZmYjZjODFkNDc0MTk5NGZmMzgwLi5kZjMwOTYyZTZmOTdlMDM5NjdmZmNkMzBhZmFk
MGYxMjQ0MDZhNjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQor
KysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMjc0LDYgKzI3NCw3IEBAIGlm
IChFTkFCTEVfU1VCVExFX0NSWVBUTykKICAgICBpZiAoTElCR0NSWVBUX1ZFUlNJT04gVkVSU0lP
Tl9MRVNTIDEuNy4wKQogICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJsaWJnY3J5cHQgMS43
LjAgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIFdlYiBDcnlwdG8gQVBJIHN1cHBvcnQuIikKICAgICBl
bmRpZiAoKQorICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9HQ1JZUFQgVFJVRSkKIGVu
ZGlmICgpCiAKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9URVhUVVJFX01BUFBFUiBUUlVF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UgYi9Tb3VyY2UvY21h
a2UvT3B0aW9uc1dQRS5jbWFrZQppbmRleCBiNGVkNTRmM2U0NjM5ZTg4MGY4YjU5NzAwZWIyYTlm
YWYzZGMyMTk1Li4yZDhiOGQ3ZGFhZjFlZTI1ZTdjZTFhY2I5MDA0YTBlOGFjNzQ2ODA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc1dQRS5jbWFrZQpAQCAtMTExLDYgKzExMSwxMyBAQCBpZiAoRU5BQkxFX0FDQ0VMRVJB
VEVEXzJEX0NBTlZBUykKICAgICBmaW5kX3BhY2thZ2UoQ2Fpcm9HTCAxLjEwLjIgUkVRVUlSRUQg
Q09NUE9ORU5UUyBjYWlyby1lZ2wpCiBlbmRpZiAoKQogCitpZiAoRU5BQkxFX1NVQlRMRV9DUllQ
VE8pCisgICAgaWYgKExJQkdDUllQVF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxLjcuMCkKKyAgICAg
ICAgbWVzc2FnZShGQVRBTF9FUlJPUiAibGliZ2NyeXB0IDEuNy4wIGlzIHJlcXVpcmVkIHRvIGVu
YWJsZSBXZWIgQ3J5cHRvIEFQSSBzdXBwb3J0LiIpCisgICAgZW5kaWYgKCkKKyAgICBTRVRfQU5E
X0VYUE9TRV9UT19CVUlMRChVU0VfR0NSWVBUIFRSVUUpCitlbmRpZiAoKQorCiBhZGRfZGVmaW5p
dGlvbnMoLURCVUlMRElOR19XUEVfXz0xKQogYWRkX2RlZmluaXRpb25zKC1EREFUQV9ESVI9IiR7
Q01BS0VfSU5TVEFMTF9EQVRBRElSfSIpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkNjYwZmFjNWJlM2JmNGQ4ODg4ZWUz
NDc5YTJmMTFiMjI0NTY1ZWI4Li42N2U2M2Y5YjBiNGMxN2U1NWYyMTczMDExMTBmZTQxNDk4MTBh
YmY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDYtMDUgIFphbiBEb2JlcnNlayAgPHpk
b2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIFJTQS1QU1Mgc3VwcG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyODU2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9uczogRW5hYmxlIFJTQS1QU1MgdGVzdHMgdGhhdCB3ZSBwYXNz
LiBUaGUgcmVtYWluaW5nCisgICAgICAgIGRpc2FibGVkIHRlc3RzIHJlbHkgb24gU1BLSSBvciBQ
S0NTIzggc3VwcG9ydCB0aGF0IGhhc24ndCBsYW5kZWQgeWV0LgorCiAyMDE3LTA2LTA1ICBSeWFu
IEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFNraXAgc3RvcmFnZS9k
b21zdG9yYWdlL3Nlc3Npb25zdG9yYWdlL3NldC1pdGVtLXN5bmNocm9ub3VzLWtleWRvd24uaHRt
bCBvbiBpT1MuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IDhmNzg1MDI5YjQyNmRmMTMyMjZhZWM3ZTE2MTUyODFkYmY1MWQ0YTMuLjE1OGZiN2QwNzI5OGVk
NmJlZjAyZTZmZTFmNmQ4OTRkYWU3Y2FlOWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9U
ZXN0RXhwZWN0YXRpb25zCkBAIC05MjEsNiArOTIxLDIxIEBAIGNyeXB0by9zdWJ0bGUvcnNhLW9h
ZXAtaW1wb3J0LWtleS1lbmNyeXB0LWxhYmVsLmh0bWwgWyBQYXNzIF0KIGNyeXB0by9zdWJ0bGUv
cnNhLW9hZXAtaW1wb3J0LWtleS11bndyYXAtandrLW9jdC1rZXkuaHRtbCBbIFBhc3MgXQogY3J5
cHRvL3N1YnRsZS9yc2Etb2FlcC1pbXBvcnQta2V5LXdyYXAtandrLW9jdC1rZXkuaHRtbCBbIFBh
c3MgXQogY3J5cHRvL3N1YnRsZS9yc2Etb2FlcC1wbGFpbnRleHQtbGVuZ3RoLmh0bWwgWyBQYXNz
IF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBvcnQta2V5LWp3ay1zaGExLmh0
bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBvcnQta2V5LWp3
ay1zaGEyMjQuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4
cG9ydC1rZXktandrLXNoYTI1Ni5odG1sIFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3Mt
Z2VuZXJhdGUtZXhwb3J0LWtleS1qd2stc2hhMzg0Lmh0bWwgWyBQYXNzIF0KK2NyeXB0by9zdWJ0
bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBvcnQta2V5LWp3ay1zaGE1MTIuaHRtbCBbIFBhc3MgXQor
Y3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWtleS5odG1sIFsgUGFzcyBdCitjcnlwdG8v
c3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wcml2YXRlLWtleS5odG1sIFsgUGFzcyBdCitjcnlw
dG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5LWVtcHR5LXVzYWdlcy5odG1s
IFsgUGFzcyBdCitjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJsaWMta2V5LXNo
YTEuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGlj
LWtleS1zaGEyMjQuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1q
d2stcHVibGljLWtleS1zaGEyNTYuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRsZS9yc2EtcHNz
LWltcG9ydC1qd2stcHVibGljLWtleS1zaGEzODQuaHRtbCBbIFBhc3MgXQorY3J5cHRvL3N1YnRs
ZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1zaGE1MTIuaHRtbCBbIFBhc3MgXQorY3J5
cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1rZXktc2lnbi5odG1sIFsgUGFzcyBdCitjcnlwdG8v
c3VidGxlL3JzYS1wc3MtaW1wb3J0LWtleS12ZXJpZnkuaHRtbCBbIFBhc3MgXQogY3J5cHRvL3N1
YnRsZS9yc2Flcy1wa2NzMS12MV81LWdlbmVyYXRlLWV4cG9ydC1rZXktandrLmh0bWwgWyBQYXNz
IF0KIGNyeXB0by9zdWJ0bGUvcnNhZXMtcGtjczEtdjFfNS1nZW5lcmF0ZS1rZXktZW5jcnlwdC1k
ZWNyeXB0Lmh0bWwgWyBQYXNzIF0KIGNyeXB0by9zdWJ0bGUvcnNhZXMtcGtjczEtdjFfNS1nZW5l
cmF0ZS1rZXktZXh0cmFjdGFibGUuaHRtbCBbIFBhc3MgXQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9n
IGIvQ2hhbmdlTG9nCmluZGV4IDM3MzM5YmI3NDk0ZTk2YzkxNzgyYmY4OWVjOTQzOGRlMDBjNTIw
NzAuLjEwMWNiZjdjNDE3NjAwOWZiOGQyNzg5YTBmYjk0YzkwOTkyYjI4NjkgMTAwNjQ0Ci0tLSBh
L0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wNi0wNSAg
WmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dDcnlwdF0g
UlNBLVBTUyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzI4NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlOiBTZXQgYW5kIGV4cG9zZSB0
aGUgVVNFX0dDUllQVCBwcmVwcm9jZXNzb3IgbWFjcm8gd2hlbgorICAgICAgICBTVUJUTEVfQ1JZ
UFRPIGlzIGVuYWJsZWQuCisgICAgICAgICogU291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2U6
IE1hdGNoIHRoZSBHVEsrIHBvcnQgaW4gZGVtYW5kaW5nIGF0IGxlYXN0IHZlcnNpb24gMS43LjAK
KyAgICAgICAgb2YgbGliZ2NyeXB0LiBBbHNvIHNldCBhbmQgZXhwb3NlIHRoZSBVU0VfR0NSWVBU
IHByZXByb2Nlc3NvciBtYWNyby4KKwogMjAxNy0wNi0wMiAgU3RlcGhhbiBTemFibyAgPHN0ZXBo
YW4uc3phYm9AYW0uc29ueS5jb20+CiAKICAgICAgICAgW0pTQ09ubHldIEJ1aWxkIHN0YXRpYyBq
c2MuZXhlIG9uIFdpbmRvd3MK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312172</attachid>
            <date>2017-06-07 02:00:39 -0700</date>
            <delta_ts>2017-06-07 02:00:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-172856-20170607110038.patch</filename>
            <type>text/plain</type>
            <size>21643</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3ODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg0ODgwZTY2NTNiOGNmN2VhMDIyNTMx
MWNkNTExMmRiODVjODQ3MmUuLjIwNWEyMmIxMDQ2YjY1Y2E0NWYxZTQwMzkzZWQ0NGY3OWE2MTgz
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTctMDYtMDcgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtHQ3J5cHRdIFJTQS1QU1Mgc3VwcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyODU2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgSmlld2VuIFRhbi4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5o
OiBEZWZpbmUgSEFWRV9SU0FfUFNTIHRvIDEgZm9yIFVTRShHQ1JZUFQpLiBTdXBwb3J0IGZvciBS
U0EtUFNTCisgICAgICAgIGlzIHByb3ZpZGVkIGJ5IGRlZmF1bHQgdGhyb3VnaCB0aGUgbGliZ2Ny
eXB0IGxpYnJhcnkuCisKIDIwMTctMDYtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE0OTc0LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDliYTEwMzUwOWFkN2MzMWQzZjdhMjBjMGQ4ZTBhMzg2ZWQyZDYxNGQuLjIyZTIzZDY4OWVm
NDhhMTIxOTAxMTMxNjkyZGRlN2M4YjQ3NzM5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBA
QAorMjAxNy0wNi0wNyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAg
ICAgICAgW0dDcnlwdF0gUlNBLVBTUyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI4NTYKKworICAgICAgICBSZXZpZXdlZCBieSBKaWV3
ZW4gVGFuLgorCisgICAgICAgIEltcGxlbWVudCBSU0EtUFNTIHN1cHBvcnQgZm9yIFdlYiBDcnlw
dG8gQVBJIGluIHBvcnRzIHRoYXQgdXNlIGxpYmdjcnlwdC4KKworICAgICAgICBGb3IgdGhlIHNp
Z25pbmcgb3BlcmF0aW9uLCB0aGUgZGlnZXN0IGFsZ29yaXRobSBpcyBkZXRlcm1pbmVkIGFuZCB1
c2VkIHRvCisgICAgICAgIGNvbXB1dGUgdGhlIGhhc2ggb2YgdGhlIHBhc3NlZC1pbiBkYXRhLiBU
aGUgZ2l2ZW4gc2FsdCBsZW5ndGggYW5kIGhhc2ggcmVzdWx0cworICAgICAgICBhcmUgZW1iZWRk
ZWQgaW50byBhIGRhdGEgcy1leHByZXNzaW9uLCBzcGVjaWZ5aW5nIFBTUyBhcyB0aGUgcHJlZmVy
cmVkIHR5cGUgb2YKKyAgICAgICAgcGFkZGluZy4gVGhpcyBzLWV4cHJlc3Npb24gYW5kIHRoZSBw
cm92aWRlZCBrZXkgYXJlIHRoZW4gcGFzc2VkIHRvIHRoZQorICAgICAgICBnY3J5X3BrX3NpZ24o
KSBjYWxsIHdoaWNoIGNvbXB1dGVzIHRoZSBzaWduYXR1cmUuIFRoZSBNUEkgZGF0YSBvZiB0aGlz
IHNpZ25hdHVyZQorICAgICAgICBpcyByZXRyaWV2ZWQgYW5kIGl0cyBzaXplIHZhbGlkYXRlZCBi
ZWZvcmUgYmVpbmcgcGFzc2VkIHRvIHRoZSBzdWNjZXNzIGNhbGxiYWNrLgorCisgICAgICAgIEZv
ciB0aGUgdmVyaWZpY2F0aW9uIG9wZXJhdGlvbiwgdGhlIGhhc2ggb2YgdGhlIHBhc3NlZC1pbiBk
YXRhIGlzIGNvbXB1dGVkIGFzCisgICAgICAgIGJlZm9yZSwgZW1iZWRkaW5nIGl0IGludG8gYSBk
YXRhIHMtZXhwcmVzc2lvbiBhbG9uZyB3aXRoIHRoZSBzcGVjaWZpZWQgc2FsdAorICAgICAgICBs
ZW5ndGguIFRoZSBwYXNzZWQtaW4gc2lnbmF0dXJlIGRhdGEgaXMgZW1iZWRkZWQgaW50byBhIHNp
Zy12YWwgcy1leHByZXNzaW9uLgorICAgICAgICBUaGUgdHdvIHMtZXhwcmVzc2lvbnMgYXJlIHBh
c3NlZCB0byB0aGUgZ2NyeV9wa192ZXJpZnkoKSBjYWxsIGFsb25nIHdpdGggdGhlCisgICAgICAg
IGtleS4gSWYgdGhlIHJldHVybmVkIGVycm9yIGNvZGUgZm9yIHRoaXMgb3BlcmF0aW9uIGlzIEdQ
R19FUlJfTk9fRVJST1IgdGhlCisgICAgICAgIHZlcmlmaWNhdGlvbiBpcyBkZWVtZWQgc3VjY2Vz
c2Z1bCwgd2hpbGUgaW4gY2FzZSBvZiBhbnkgb3RoZXIgZXJyb3IgY29kZSAod2hpY2gKKyAgICAg
ICAgbWlnaHQgaW5kaWNhdGUgYSB2ZXJpZmljYXRpb24gZmFpbHVyZSBvciBhbiBvcGVyYXRpb24g
ZXJyb3IpIHdlIHNpbXBseSBzaWduYWwKKyAgICAgICAgdGhhdCB0aGUgdmVyaWZpY2F0aW9uIHN0
ZXAgZmFpbGVkIChhbmQgbm90IHRoYXQgaXQgcG9zc2libHkgZXJyb3JlZCBvdXQpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAtLSBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAg
ICogUGxhdGZvcm1HVEsuY21ha2U6IEFkZCB0aGUgbmV3IGJ1aWxkIHRhcmdldHMuCisgICAgICAg
ICogUGxhdGZvcm1XUEUuY21ha2U6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Z2NyeXB0U2lnbik6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRWZXJpZnkpOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUlNBX1BTUzo6cGxhdGZvcm1TaWduKToKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJTQV9QU1M6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAg
ICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5R0NyeXB0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpwbGF0Zm9ybVJlZ2lzdGVy
QWxnb3JpdGhtcyk6IFJlZ2lzdGVyIHRoZSBSU0EtUFNTIGFsZ29yaXRobS4KKwogMjAxNy0wNi0w
NyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBNZXJnZSBUcmVl
U2NvcGVBZG9wdGVyIGludG8gVHJlZVNjb3BlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBhYjVmZTMyMWVjYWEz
NThlZDBkOTk3YWY0ODg4ZmFlZmI0ZjQxYWJkLi4xNzE3YzM2ZmM0Yzg4MTMxM2M5YmVjMTRlN2Yw
ZmFiNDhmYmY0YWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTEyNjcsNyArMTI2Nyw3IEBACiAjZGVmaW5l
IFVTRV9MSUJXRUJSVEMgMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTMwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwKQorI2lmIChQTEFURk9S
TShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKSB8fCAo
UExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAw
MDApIHx8IFVTRShHQ1JZUFQpCiAjZGVmaW5lIEhBVkVfUlNBX1BTUyAxCiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCAwYWUxMWEwYjhmY2RjZjk3YzQ3YWExYzlhNDA3OWFk
MWJkZGMwYjQ1Li4yNDY5OWZkYzM0NDY3NDAyN2RmZjQ4MWE4M2ZhMzI0ZWUxZWZiN2JlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMzc2LDYgKzM3Niw3IEBAIGlmIChFTkFCTEVfU1VC
VExFX0NSWVBUTykKICAgICAgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19Q
S0NTMV92MV81R0NyeXB0LmNwcAogICAgICAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcAogICAgICAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVJTQV9PQUVQR0NyeXB0LmNwcAorICAgICAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwCiAgICAgICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRv
QWxnb3JpdGhtUmVnaXN0cnlHQ3J5cHQuY3BwCiAgICAgICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRv
S2V5RUNHQ3J5cHQuY3BwCiAgICAgICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCBhM2RmYzNhMWVjZTdmOWE4OTJlMzVi
NDgwNjg3OTY1MDdlM2FmYjQxLi45ODU4ZDE4OTkxZTJmOTM0N2MxNzE3ZGJjNjI4YmM3OWRmMWIx
YzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtMjIyLDYgKzIyMiw3IEBAIGlmIChF
TkFCTEVfU1VCVExFX0NSWVBUTykKICAgICAgICAgY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5jcHAKICAgICAgICAgY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuY3BwCiAgICAgICAgIGNyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcAorICAgICAgICBjcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1SU0FfUFNTLmNwcAogICAgICAgICBjcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEExLmNwcAogICAgICAgICBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEEyMjQuY3BwCiAgICAgICAgIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTI1Ni5jcHAKQEAgLTI0MSw2ICsyNDIsNyBAQCBpZiAoRU5BQkxFX1NVQlRMRV9DUllQ
VE8pCiAgICAgICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFf
NUdDcnlwdC5jcHAKICAgICAgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNUdDcnlwdC5jcHAKICAgICAgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1SU0FfT0FFUEdDcnlwdC5jcHAKKyAgICAgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1SU0FfUFNTR0NyeXB0LmNwcAogICAgICAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bVJlZ2lzdHJ5R0NyeXB0LmNwcAogICAgICAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0tleUVDR0Ny
eXB0LmNwcAogICAgICAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNB
X1BTU0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobVJTQV9QU1NHQ3J5cHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0OTJlYWQ5Nzk4MTYyNWRiZjAxNGU2
ZDU0ZWRjNTVkZDUzNGRmZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwCkBAIC0wLDAgKzEsMjA0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICog
Q29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1SU0FfUFNTLmgiCisKKyNpZiBFTkFCTEUo
U1VCVExFX0NSWVBUTykKKworI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYVBzc1BhcmFtcy5o
IgorI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
KyNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAsIHNpemVfdCBr
ZXlMZW5ndGgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllciwgc2l6ZV90IHNhbHRMZW5ndGgpCit7Cisg
ICAgLy8gUGVyZm9ybSBkaWdlc3Qgb3BlcmF0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBhbGdvcml0
aG0gb24gdGhlIGdpdmVuIGRhdGEuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFIYXNoOworICAg
IHsKKyAgICAgICAgYXV0byBkaWdlc3RBbGdvcml0aG0gPSBoYXNoQ3J5cHRvRGlnZXN0QWxnb3Jp
dGhtKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFkaWdlc3RBbGdvcml0
aG0pCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIGF1dG8gZGln
ZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqZGlnZXN0QWxnb3JpdGhtKTsKKyAgICAg
ICAgaWYgKCFkaWdlc3QpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
ICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICAgICAg
ZGF0YUhhc2ggPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CisgICAgfQorCisgICAgLy8gQ29uc3Ry
dWN0IHRoZSBgZGF0YWAgcy1leHByZXNzaW9uIHRoYXQgY29udGFpbnMgUFNTLXBhZGRlZCBoYXNo
ZWQgZGF0YS4KKyAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBkYXRhU2V4cDsK
KyAgICB7CisgICAgICAgIGF1dG8gc2hhQWxnb3JpdGhtID0gaGFzaEFsZ29yaXRobU5hbWUoaGFz
aEFsZ29yaXRobUlkZW50aWZpZXIpOworICAgICAgICBpZiAoIXNoYUFsZ29yaXRobSkKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgZ2NyeV9lcnJvcl90IGVycm9y
ID0gZ2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwgbnVsbHB0ciwgIihkYXRhKGZsYWdzIHBzcyko
c2FsdC1sZW5ndGggJXUpKGhhc2ggJXMgJWIpKSIsCisgICAgICAgICAgICBzYWx0TGVuZ3RoLCAq
c2hhQWxnb3JpdGhtLCBkYXRhSGFzaC5zaXplKCksIGRhdGFIYXNoLmRhdGEoKSk7CisgICAgICAg
IGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAgICBQQUw6OkdDcnlw
dDo6bG9nRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIFBlcmZvcm0gdGhlIFBLIHNpZ25pbmcsIHJldHJpZXZp
bmcgYSBgc2lnLXZhbGAgcy1leHByZXNzaW9uIG9mIHRoZSBmb2xsb3dpbmcgZm9ybToKKyAgICAv
LyAoc2lnLXZhbAorICAgIC8vICAgKHJzYQorICAgIC8vICAgICAocyBzLW1waSkpKQorICAgIFBB
TDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IHNpZ25hdHVyZVNleHA7CisgICAgZ2NyeV9l
cnJvcl90IGVycm9yID0gZ2NyeV9wa19zaWduKCZzaWduYXR1cmVTZXhwLCBkYXRhU2V4cCwga2V5
U2V4cCk7CisgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKKyAgICAgICAgUEFM
OjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICB9CisKKyAgICAvLyBSZXRyaWV2ZSBNUEkgZGF0YSBvZiB0aGUgZW1iZWRkZWQgYHNgIGlu
dGVnZXIuCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gc1NleHAoZ2NyeV9z
ZXhwX2ZpbmRfdG9rZW4oc2lnbmF0dXJlU2V4cCwgInMiLCAwKSk7CisgICAgaWYgKCFzU2V4cCkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIC8vIFZhbGlkYXRlIHRoZSBNUEkg
ZGF0YSBzaXplIC0tIGl0IHNob3VsZCBtYXRjaCB0aGUga2V5IGxlbmd0aCBpbiBieXRlcy4KKyAg
ICBhdXRvIHNpZ25hdHVyZSA9IG1waURhdGEoc1NleHApOworICAgIGlmICghc2lnbmF0dXJlIHx8
IHNpZ25hdHVyZS0+c2l6ZSgpICE9IGtleUxlbmd0aCAvIDgpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4gc2lnbmF0dXJlOworfQorCitzdGF0aWMgc3RkOjpvcHRp
b25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllciwgc2l6ZV90IHNhbHRM
ZW5ndGgpCit7CisgICAgLy8gUGVyZm9ybSBkaWdlc3Qgb3BlcmF0aW9uIHdpdGggdGhlIHNwZWNp
ZmllZCBhbGdvcml0aG0gb24gdGhlIGdpdmVuIGRhdGEuCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRh
dGFIYXNoOworICAgIHsKKyAgICAgICAgYXV0byBkaWdlc3RBbGdvcml0aG0gPSBoYXNoQ3J5cHRv
RGlnZXN0QWxnb3JpdGhtKGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFk
aWdlc3RBbGdvcml0aG0pCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
ICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqZGlnZXN0QWxnb3Jp
dGhtKTsKKyAgICAgICAgaWYgKCFkaWdlc3QpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgp
KTsKKyAgICAgICAgZGF0YUhhc2ggPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CisgICAgfQorCisg
ICAgLy8gQ29uc3RydWN0IHRoZSBgc2lnLXZhbGAgcy1leHByZXNzaW9uIHRoYXQgY29udGFpbnMg
dGhlIHNpZ25hdHVyZSBkYXRhLgorICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+
IHNpZ25hdHVyZVNleHA7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9zZXhwX2J1aWxk
KCZzaWduYXR1cmVTZXhwLCBudWxscHRyLCAiKHNpZy12YWwocnNhKHMgJWIpKSkiLAorICAgICAg
ICBzaWduYXR1cmUuc2l6ZSgpLCBzaWduYXR1cmUuZGF0YSgpKTsKKyAgICBpZiAoZXJyb3IgIT0g
R1BHX0VSUl9OT19FUlJPUikgeworICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3Ip
OworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIC8vIENvbnN0cnVj
dCB0aGUgYGRhdGFgIHMtZXhwcmVzc2lvbiB0aGF0IGNvbnRhaW5zIFBTUy1wYWRkZWQgaGFzaGVk
IGRhdGEuCisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gZGF0YVNleHA7Cisg
ICAgeworICAgICAgICBhdXRvIHNoYUFsZ29yaXRobSA9IGhhc2hBbGdvcml0aG1OYW1lKGhhc2hB
bGdvcml0aG1JZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFzaGFBbGdvcml0aG0pCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIGVycm9yID0gZ2NyeV9zZXhwX2J1
aWxkKCZkYXRhU2V4cCwgbnVsbHB0ciwgIihkYXRhKGZsYWdzIHBzcykoc2FsdC1sZW5ndGggJXUp
KGhhc2ggJXMgJWIpKSIsCisgICAgICAgICAgICBzYWx0TGVuZ3RoLCAqc2hhQWxnb3JpdGhtLCBk
YXRhSGFzaC5zaXplKCksIGRhdGFIYXNoLmRhdGEoKSk7CisgICAgICAgIGlmIChlcnJvciAhPSBH
UEdfRVJSX05PX0VSUk9SKSB7CisgICAgICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJy
b3IpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgIH0K
KworICAgIC8vIFBlcmZvcm0gdGhlIFBLIHZlcmlmaWNhdGlvbi4gV2UgcmVwb3J0IHN1Y2Nlc3Mg
aWYgdGhlcmUncyBubyBlcnJvciByZXR1cm5lZCwgb3IKKyAgICAvLyBhIGZhaWx1cmUgaW4gYW55
IG90aGVyIGNhc2UuIE9wZXJhdGlvbkVycm9yIHNob3VsZCBub3QgYmUgcmV0dXJuZWQgYXQgdGhp
cyBwb2ludCwKKyAgICAvLyBhdm9pZGluZyBzcGlsbGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUg
ZXhhY3QgY2F1c2Ugb2YgdmVyaWZpY2F0aW9uIGZhaWx1cmUuCisgICAgZXJyb3IgPSBnY3J5X3Br
X3ZlcmlmeShzaWduYXR1cmVTZXhwLCBkYXRhU2V4cCwga2V5U2V4cCk7CisgICAgcmV0dXJuIHsg
ZXJyb3IgPT0gR1BHX0VSUl9OT19FUlJPUiB9OworfQorCit2b2lkIENyeXB0b0FsZ29yaXRobVJT
QV9QU1M6OnBsYXRmb3JtU2lnbihzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+
JiYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBl
eGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1
ZXVlJiB3b3JrUXVldWUpCit7CisgICAgY29udGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUuZGlz
cGF0Y2goCisgICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0g
V1RGTW92ZShrZXkpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwg
JmNvbnRleHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvJiByc2FLZXkgPSBkb3duY2Fz
dDxDcnlwdG9LZXlSU0E+KGtleS5nZXQoKSk7CisgICAgICAgICAgICBhdXRvJiByc2FQYXJhbWV0
ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUnNhUHNzUGFyYW1zPigqcGFyYW1ldGVycyk7
CisKKyAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0U2lnbihyc2FLZXkucGxhdGZvcm1L
ZXkoKSwgcnNhS2V5LmtleVNpemVJbkJpdHMoKSwgZGF0YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1J
ZGVudGlmaWVyKCksIHJzYVBhcmFtZXRlcnMuc2FsdExlbmd0aCk7CisgICAgICAgICAgICBpZiAo
IW91dHB1dCkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNl
IGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFk
cy4KKyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgICAg
ICBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZN
b3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJy
b3IpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRl
ciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAg
IGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91
dHB1dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0g
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sob3V0cHV0KTsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKK30KKwordm9pZCBDcnlwdG9BbGdvcml0aG1SU0FfUFNTOjpwbGF0Zm9ybVZlcmlmeShzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8
Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWlu
dDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2sm
JiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29y
a1F1ZXVlJiB3b3JrUXVldWUpCit7CisgICAgY29udGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUu
ZGlzcGF0Y2goCisgICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5
ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBX
VEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxs
YmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGF1dG8mIHJzYUtleSA9IGRvd25jYXN0PENyeXB0b0tleVJTQT4oa2V5Lmdl
dCgpKTsKKyAgICAgICAgICAgIGF1dG8mIHJzYVBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9B
bGdvcml0aG1Sc2FQc3NQYXJhbXM+KCpwYXJhbWV0ZXJzKTsKKworICAgICAgICAgICAgYXV0byBv
dXRwdXQgPSBnY3J5cHRWZXJpZnkocnNhS2V5LnBsYXRmb3JtS2V5KCksIHNpZ25hdHVyZSwgZGF0
YSwgcnNhS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCksIHJzYVBhcmFtZXRlcnMuc2FsdExl
bmd0aCk7CisgICAgICAgICAgICBpZiAoIW91dHB1dCkgeworICAgICAgICAgICAgICAgIC8vIFdl
IHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRo
ZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RU
YXNrKAorICAgICAgICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
ZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0
aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOworICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRl
cmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3Jr
ZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAg
ICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2sob3V0cHV0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoU1VCVExFX0NSWVBUTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUmVnaXN0cnlHQ3J5cHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeUdDcnlw
dC5jcHAKaW5kZXggMjI2ZDg5NWQ2YjI5ZTkwODdlMjM4NWMxYzkxMGY0ZTc4OWMwZTQ5ZC4uYjQ1
YjdhYjlhZTM5N2M1ZGViMDU3MjM5MzEzMmZiYWRiMmE2NTcyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SZWdpc3RyeUdDcnlwdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SZWdpc3Ry
eUdDcnlwdC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1S
U0FFU19QS0NTMV92MV81LmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1Mx
X3YxXzUuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oIgorI2luY2x1ZGUg
IkNyeXB0b0FsZ29yaXRobVJTQV9QU1MuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1TSEEx
LmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmgiCiAjaW5jbHVkZSAiQ3J5cHRv
QWxnb3JpdGhtU0hBMjU2LmgiCkBAIC02NCw2ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGht
UmVnaXN0cnk6OnBsYXRmb3JtUmVnaXN0ZXJBbGdvcml0aG1zKCkKICAgICByZWdpc3RlckFsZ29y
aXRobTxDcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81PigpOwogICAgIHJlZ2lzdGVyQWxn
b3JpdGhtPENyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81PigpOwogICAgIHJlZ2lzdGVy
QWxnb3JpdGhtPENyeXB0b0FsZ29yaXRobVJTQV9PQUVQPigpOworICAgIHJlZ2lzdGVyQWxnb3Jp
dGhtPENyeXB0b0FsZ29yaXRobVJTQV9QU1M+KCk7CiAgICAgcmVnaXN0ZXJBbGdvcml0aG08Q3J5
cHRvQWxnb3JpdGhtU0hBMT4oKTsKICAgICByZWdpc3RlckFsZ29yaXRobTxDcnlwdG9BbGdvcml0
aG1TSEEyMjQ+KCk7CiAgICAgcmVnaXN0ZXJBbGdvcml0aG08Q3J5cHRvQWxnb3JpdGhtU0hBMjU2
PigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRleCA5OGM5MjJiOGNjNDRkMGVhOTMzMjZmYjZjODFk
NDc0MTk5NGZmMzgwLi5kZjMwOTYyZTZmOTdlMDM5NjdmZmNkMzBhZmFkMGYxMjQ0MDZhNjZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysgYi9Tb3VyY2UvY21h
a2UvT3B0aW9uc0dUSy5jbWFrZQpAQCAtMjc0LDYgKzI3NCw3IEBAIGlmIChFTkFCTEVfU1VCVExF
X0NSWVBUTykKICAgICBpZiAoTElCR0NSWVBUX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDEuNy4wKQog
ICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJsaWJnY3J5cHQgMS43LjAgaXMgcmVxdWlyZWQg
dG8gZW5hYmxlIFdlYiBDcnlwdG8gQVBJIHN1cHBvcnQuIikKICAgICBlbmRpZiAoKQorICAgIFNF
VF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9HQ1JZUFQgVFJVRSkKIGVuZGlmICgpCiAKIFNFVF9B
TkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9URVhUVVJFX01BUFBFUiBUUlVFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL2NtYWtlL09wdGlvbnNXUEUuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5j
bWFrZQppbmRleCA1Mjc1NGJlNGI3ZmQ2N2M4NjkzZWU2Y2ViMGU1NjkzMjNiZmJmMjBiLi4xNmRl
OGNjZTMzNGIwZmRlZGU3M2I2N2MwZTVmYmUzYzQ4ZWE0ZThlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc1dQRS5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1dQRS5jbWFr
ZQpAQCAtMTEyLDYgKzExMiwxMyBAQCBpZiAoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUykK
ICAgICBmaW5kX3BhY2thZ2UoQ2Fpcm9HTCAxLjEwLjIgUkVRVUlSRUQgQ09NUE9ORU5UUyBjYWly
by1lZ2wpCiBlbmRpZiAoKQogCitpZiAoRU5BQkxFX1NVQlRMRV9DUllQVE8pCisgICAgaWYgKExJ
QkdDUllQVF9WRVJTSU9OIFZFUlNJT05fTEVTUyAxLjcuMCkKKyAgICAgICAgbWVzc2FnZShGQVRB
TF9FUlJPUiAibGliZ2NyeXB0IDEuNy4wIGlzIHJlcXVpcmVkIHRvIGVuYWJsZSBXZWIgQ3J5cHRv
IEFQSSBzdXBwb3J0LiIpCisgICAgZW5kaWYgKCkKKyAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlM
RChVU0VfR0NSWVBUIFRSVUUpCitlbmRpZiAoKQorCiBhZGRfZGVmaW5pdGlvbnMoLURCVUlMRElO
R19XUEVfXz0xKQogYWRkX2RlZmluaXRpb25zKC1EREFUQV9ESVI9IiR7Q01BS0VfSU5TVEFMTF9E
QVRBRElSfSIpCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCAyYjg3ZjVmYzgxYTA3MDg0ZTY1ZGI0MzczYjBlOWE4M2VkOWY1
ZmQ1Li40ZDNmZWMyM2ViNDM0MWJhZmE0NGRlZjAzMTZhOTZlOTM2YjEyZTcwIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTctMDYtMDcgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIFtHQ3J5cHRdIFJTQS1QU1Mgc3VwcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyODU2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgSmlld2VuIFRhbi4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRp
b25zOiBFbmFibGUgUlNBLVBTUyB0ZXN0cyB0aGF0IHdlIHBhc3MuIFRoZSByZW1haW5pbmcKKyAg
ICAgICAgZGlzYWJsZWQgdGVzdHMgcmVseSBvbiBTUEtJIG9yIFBLQ1MjOCBzdXBwb3J0IHRoYXQg
aGFzbid0IGxhbmRlZCB5ZXQuCisKIDIwMTctMDYtMDYgIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFw
cGxlLmNvbT4KIAogICAgICAgICBNYXJrZWQgd29ya2Vycy9ib21iLmh0bWwgYXMgZmxha3kgb24g
aU9TLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBmNzYy
MzNlNWFkYzg4OTQwZjM5NWNkMThiODBmZDBlODg0M2IwODZlLi5hOTcyN2JiNzE3MmViMDJjZGZl
ODk1MjNiOGI0NDIzYzhmNmY4ZWRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtODAwLDI3ICs4MDAsMTAgQEAgd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlw
dG8vc3VidGxlL3JzYS1vYWVwLWdlbmVyYXRlLWV4cG9ydC1rZXktc3BraS5odG1sIFsgU2tpcAog
d2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL3JzYS1vYWVwLWltcG9ydC1wa2NzOC1r
ZXkuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL3JzYS1v
YWVwLWltcG9ydC1zcGtpLWtleS1lbXB0eS11c2FnZXMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9y
Zy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL3JzYS1vYWVwLWltcG9ydC1zcGtpLWtleS5odG1sIFsg
U2tpcCBdCi13ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0
ZS1leHBvcnQta2V5LWp3ay1zaGExLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMzMxMjIg
Y3J5cHRvL3N1YnRsZS9yc2EtcHNzLWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTIyNC5odG1s
IFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5l
cmF0ZS1leHBvcnQta2V5LWp3ay1zaGEyNTYuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzEz
MzEyMiBjcnlwdG8vc3VidGxlL3JzYS1wc3MtZ2VuZXJhdGUtZXhwb3J0LWtleS1qd2stc2hhMzg0
Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9yc2EtcHNz
LWdlbmVyYXRlLWV4cG9ydC1rZXktandrLXNoYTUxMi5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1leHBvcnQta2V5LXBrY3M4
Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9yc2EtcHNz
LWdlbmVyYXRlLWV4cG9ydC1rZXktc3BraS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTMz
MTIyIGNyeXB0by9zdWJ0bGUvcnNhLXBzcy1nZW5lcmF0ZS1rZXkuaHRtbCBbIFNraXAgXQotd2Vi
a2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wcml2YXRl
LWtleS5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvcnNh
LXBzcy1pbXBvcnQtandrLXB1YmxpYy1rZXktZW1wdHktdXNhZ2VzLmh0bWwgWyBTa2lwIF0KLXdl
YmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGlj
LWtleS1zaGExLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRs
ZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGljLWtleS1zaGEyMjQuaHRtbCBbIFNraXAgXQotd2Vi
a2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LWp3ay1wdWJsaWMt
a2V5LXNoYTI1Ni5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0
bGUvcnNhLXBzcy1pbXBvcnQtandrLXB1YmxpYy1rZXktc2hhMzg0Lmh0bWwgWyBTa2lwIF0KLXdl
YmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1qd2stcHVibGlj
LWtleS1zaGE1MTIuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8vc3Vi
dGxlL3JzYS1wc3MtaW1wb3J0LWtleS1zaWduLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8x
MzMxMjIgY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWltcG9ydC1rZXktc2lnbi1sYXJnZS1zYWx0Lmh0
bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRvL3N1YnRsZS9yc2EtcHNzLWlt
cG9ydC1rZXktdmVyaWZ5Lmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi8xMzMxMjIgY3J5cHRv
L3N1YnRsZS9yc2EtcHNzLWltcG9ydC1wa2NzOC1rZXkuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9y
Zy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL3JzYS1wc3MtaW1wb3J0LXNwa2kta2V5LWVtcHR5LXVz
YWdlcy5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvcnNh
LXBzcy1pbXBvcnQtc3BraS1rZXkuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzEzMzEyMiBj
cnlwdG8vc3VidGxlL3JzYWVzLXBrY3MxLXYxXzUtZ2VuZXJhdGUtZXhwb3J0LWtleS1wa2NzOC5o
dG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUvcnNhZXMtcGtj
czEtdjFfNS1nZW5lcmF0ZS1leHBvcnQta2V5LXNwa2kuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9y
Zy9iLzEzMzEyMiBjcnlwdG8vc3VidGxlL3JzYWVzLXBrY3MxLXYxXzUtaW1wb3J0LXBrY3M4LWtl
eS5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXgg
ZDBhYmE1Y2FiYjU2MzRmMWM5ZTRiNTVmNjNkMDc3ZmE3ZGEyNzZiMC4uYTJlY2U1YWQxOWYwMWI4
MjY1MjkzMTdmOTZkZDk2NTQyZGI1M2VkZSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA2LTA3ICBaYW4gRG9iZXJzZWsgIDx6ZG9i
ZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBSU0EtUFNTIHN1cHBvcnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Mjg1NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEppZXdlbiBUYW4uCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
T3B0aW9uc0dUSy5jbWFrZTogU2V0IGFuZCBleHBvc2UgdGhlIFVTRV9HQ1JZUFQgcHJlcHJvY2Vz
c29yIG1hY3JvIHdoZW4KKyAgICAgICAgU1VCVExFX0NSWVBUTyBpcyBlbmFibGVkLgorICAgICAg
ICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zV1BFLmNtYWtlOiBNYXRjaCB0aGUgR1RLKyBwb3J0IGlu
IGRlbWFuZGluZyBhdCBsZWFzdCB2ZXJzaW9uIDEuNy4wCisgICAgICAgIG9mIGxpYmdjcnlwdC4g
QWxzbyBzZXQgYW5kIGV4cG9zZSB0aGUgVVNFX0dDUllQVCBwcmVwcm9jZXNzb3IgbWFjcm8uCisK
IDIwMTctMDYtMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtXUEVdIEVuYWJsZSByZW1vdGUgaW5zcGVjdG9yCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>