<?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>173589</bug_id>
          
          <creation_ts>2017-06-20 01:45:36 -0700</creation_ts>
          <short_desc>[GCrypt] Properly initialize libgcrypt before using it</short_desc>
          <delta_ts>2017-06-26 11:01:29 -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>cgarcia</cc>
    
    <cc>fujii</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1321055</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-20 01:45:36 -0700</bug_when>
    <thetext>[GCrypt] Properly initialize libgcrypt before using it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321056</commentid>
    <comment_count>1</comment_count>
      <attachid>313382</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-20 01:58:19 -0700</bug_when>
    <thetext>Created attachment 313382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321071</commentid>
    <comment_count>2</comment_count>
      <attachid>313387</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-20 02:33:06 -0700</bug_when>
    <thetext>Created attachment 313387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321789</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-06-22 00:39:20 -0700</bug_when>
    <thetext>Wouldn&apos;t it be possible to initialize gcrypt once in the main function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322512</commentid>
    <comment_count>4</comment_count>
      <attachid>313387</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-06-23 17:14:41 -0700</bug_when>
    <thetext>Comment on attachment 313387
Patch

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

Yeah, I agree with Carlos Garcia, there&apos;s got to be a better way to do this. If it has to be done in WebKit2 entry points, that would be unfortunate layering, but even that would seem preferable to adding such a huge number of initialization calls.

There&apos;s another problem here: what about applications that use Libgcrypt themselves? [1] recommends ensuring that applications have not already initialized Libgcrypt before doing so. It also recommends enabling secure memory before initialization, to ensure crypto keys don&apos;t get swapped to disk. So I think PAL::GCrypt::initialize should do something like this:

// Inside std::call_once and !gcry_check_version
if (!gcry_control (GCRYCTL_INITIALIZATION_FINISHED_P)) {
    gcry_control (GCRYCTL_INIT_SECMEM, 16384, nullptr);
    gcry_control (GCRYCTL_INITIALIZATION_FINISHED, nullptr);
}

[1] https://www.gnupg.org/documentation/manuals/gcrypt/Initializing-the-library.html

&gt; Source/WebCore/PAL/pal/crypto/gcrypt/Utilities.cpp:43
&gt; +        if (!gcry_check_version(&quot;1.7.0&quot;))

This is going to be lost and forgotten whenever we update our min Libgcrypt version. I first thought we should remove the runtime check, but apparently Libgcrypt really wants this to happen first. So I would instead ensure it gets defined somehow by CMake (probably in config.cmake) so that the min version can be reused here instead of hardcoded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322773</commentid>
    <comment_count>5</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-26 02:30:09 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #4)
&gt; Comment on attachment 313387 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=313387&amp;action=review
&gt; 
&gt; Yeah, I agree with Carlos Garcia, there&apos;s got to be a better way to do this.
&gt; If it has to be done in WebKit2 entry points, that would be unfortunate
&gt; layering, but even that would seem preferable to adding such a huge number
&gt; of initialization calls.
&gt; 
&gt; There&apos;s another problem here: what about applications that use Libgcrypt
&gt; themselves? [1] recommends ensuring that applications have not already
&gt; initialized Libgcrypt before doing so. It also recommends enabling secure
&gt; memory before initialization, to ensure crypto keys don&apos;t get swapped to
&gt; disk. So I think PAL::GCrypt::initialize should do something like this:
&gt; 

This initialization is only needed in the WebProcess. Problem here would be injected bundles that use libgcrypt, but we&apos;d initialize libgcrypt for ourselves before those libraries are loaded.

Another aspect is any potential memory consumption penalty we&apos;d have to pay when initializing libgcrypt early, even if it wouldn&apos;t be utilized at any point during the WebProcess lifetime. It might not be much, but I&apos;ll try to measure it.

&gt; // Inside std::call_once and !gcry_check_version
&gt; if (!gcry_control (GCRYCTL_INITIALIZATION_FINISHED_P)) {
&gt;     gcry_control (GCRYCTL_INIT_SECMEM, 16384, nullptr);
&gt;     gcry_control (GCRYCTL_INITIALIZATION_FINISHED, nullptr);
&gt; }
&gt; 
&gt; [1]
&gt; https://www.gnupg.org/documentation/manuals/gcrypt/Initializing-the-library.
&gt; html
&gt; 
&gt; &gt; Source/WebCore/PAL/pal/crypto/gcrypt/Utilities.cpp:43
&gt; &gt; +        if (!gcry_check_version(&quot;1.7.0&quot;))
&gt; 
&gt; This is going to be lost and forgotten whenever we update our min Libgcrypt
&gt; version. I first thought we should remove the runtime check, but apparently
&gt; Libgcrypt really wants this to happen first. So I would instead ensure it
&gt; gets defined somehow by CMake (probably in config.cmake) so that the min
&gt; version can be reused here instead of hardcoded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322786</commentid>
    <comment_count>6</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2017-06-26 03:18:53 -0700</bug_when>
    <thetext>*** Bug 173829 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322833</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-06-26 07:59:45 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #5)
&gt; This initialization is only needed in the WebProcess. Problem here would be
&gt; injected bundles that use libgcrypt, but we&apos;d initialize libgcrypt for
&gt; ourselves before those libraries are loaded.

Good point.

&gt; Another aspect is any potential memory consumption penalty we&apos;d have to pay
&gt; when initializing libgcrypt early, even if it wouldn&apos;t be utilized at any
&gt; point during the WebProcess lifetime. It might not be much, but I&apos;ll try to
&gt; measure it.

Oh, that&apos;s true... still, surely there&apos;s a better way to handle this than putting tons of calls in lots of different places. I&apos;d rather use a bit more memory than that. Do we have some IDL mechanism to call some sort of initialization function when a new subsystem is used? (Probably not?) Maybe someone on webkit-dev@ would have an idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322839</commentid>
    <comment_count>8</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-26 08:21:19 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #7)
&gt; &gt; Another aspect is any potential memory consumption penalty we&apos;d have to pay
&gt; &gt; when initializing libgcrypt early, even if it wouldn&apos;t be utilized at any
&gt; &gt; point during the WebProcess lifetime. It might not be much, but I&apos;ll try to
&gt; &gt; measure it.
&gt; 
&gt; Oh, that&apos;s true... still, surely there&apos;s a better way to handle this than
&gt; putting tons of calls in lots of different places. I&apos;d rather use a bit more
&gt; memory than that. Do we have some IDL mechanism to call some sort of
&gt; initialization function when a new subsystem is used? (Probably not?) Maybe
&gt; someone on webkit-dev@ would have an idea?

Increased memory usage is probably negligible -- in whole about 108kB is used after the initialization. 16kB are added to the heap (when the secure memory is allocated, probably) and the remaining increase is due to additional libgcrypt.so section data getting mapped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322853</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-06-26 09:14:07 -0700</bug_when>
    <thetext>I presume you&apos;ve added initialization of secure memory, since your original patch did not do that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322858</commentid>
    <comment_count>10</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-26 09:25:59 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #9)
&gt; I presume you&apos;ve added initialization of secure memory, since your original
&gt; patch did not do that?

Yes, and that&apos;s where likely the 16kB allocated on the heap come from.

FWIW this was tested on a barebones program that only compiles main().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322865</commentid>
    <comment_count>11</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-26 09:43:27 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #4)
&gt; &gt; Source/WebCore/PAL/pal/crypto/gcrypt/Utilities.cpp:43
&gt; &gt; +        if (!gcry_check_version(&quot;1.7.0&quot;))
&gt; 
&gt; This is going to be lost and forgotten whenever we update our min Libgcrypt
&gt; version. I first thought we should remove the runtime check, but apparently
&gt; Libgcrypt really wants this to happen first. So I would instead ensure it
&gt; gets defined somehow by CMake (probably in config.cmake) so that the min
&gt; version can be reused here instead of hardcoded.

Using CMake is a bit difficult here, at this time. Macro definitions listed in cmakeconfig.h can only posses a value of 0 or 1.

There&apos;s the GCRYPT_VERSION macro in gcrypt.h, but the comment there suggests it shouldn&apos;t be used by programs. But it seems the simplest way to ensure that the same version of library is used both during compilation and at runtime.

But maybe we&apos;re just complicating things at this point. We should expect the runtime to match the configuration, where libgcrypt 1.7.0 is already guaranteed. So we could simply pass a nullptr value to the gcry_check_version() call and ignore the return value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322870</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-06-26 09:46:52 -0700</bug_when>
    <thetext>(In reply to Zan Dobersek from comment #11)
&gt; But maybe we&apos;re just complicating things at this point. We should expect the
&gt; runtime to match the configuration, where libgcrypt 1.7.0 is already
&gt; guaranteed. So we could simply pass a nullptr value to the
&gt; gcry_check_version() call and ignore the return value.

OK, if that works it seems best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322872</commentid>
    <comment_count>13</comment_count>
      <attachid>313848</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-26 09:51:27 -0700</bug_when>
    <thetext>Created attachment 313848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322880</commentid>
    <comment_count>14</comment_count>
      <attachid>313848</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-06-26 10:30:34 -0700</bug_when>
    <thetext>Comment on attachment 313848
Patch

Much better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322907</commentid>
    <comment_count>15</comment_count>
      <attachid>313848</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-26 11:01:24 -0700</bug_when>
    <thetext>Comment on attachment 313848
Patch

Clearing flags on attachment: 313848

Committed r218814: &lt;http://trac.webkit.org/changeset/218814&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322908</commentid>
    <comment_count>16</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-26 11:01:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313382</attachid>
            <date>2017-06-20 01:58:19 -0700</date>
            <delta_ts>2017-06-20 02:33:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173589-20170620105818.patch</filename>
            <type>text/plain</type>
            <size>28509</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY4MjE0MDQ4OGNiYThl
NmMwMDAzOTJlY2Y5M2RlMjNhNGM4NmRiMS4uOWUwNWQ0YTVkMWJiYjllOTFkNzI0NTMyYzYyZjZk
YzYzNDk3MmJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE3LTA2LTIwICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBQcm9w
ZXJseSBpbml0aWFsaXplIGxpYmdjcnlwdCBiZWZvcmUgdXNpbmcgaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzU4OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtLSBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIG9uZXMuCisKKyAgICAgICAgSW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSBm
aXJzdCBBUEkgY2FsbCB0byBwcm9wZXJseSBpbml0aWFsaXplIHRoZQorICAgICAgICBsaWJnY3J5
cHQgbGlicmFyeSwgZG8gaXQgbWFudWFsbHkgYXQgZXZlcnkgcG90ZW50aWFsIGVudHJ5cG9pbnQu
CisKKyAgICAgICAgUEFMOkdDcnlwdDo6aW5pdGlhbGl6ZSgpIGlzIGFkZGVkLCBjYWxsaW5nIGdj
cnlfY2hlY2tfdmVyc2lvbigpIHRvCisgICAgICAgIGVuc3VyZSB0aGUgdXNlZCBsaWJyYXJ5IGlz
IGF0IGxlYXN0IG9mIHZlcnNpb24gMS43LjAgKGFzIHJlcXVpcmVkCisgICAgICAgIGR1cmluZyBj
b25maWd1cmF0aW9uKSBhbmQgdGhlbiBjb21wbGV0aW5nIHRoZSBpbml0aWFsaXphdGlvbi4KKwor
ICAgICAgICBQQUw6OkdDcnlwdDo6aW5pdGlhbGl6ZSgpIGNhbGxzIGFyZSBhZGRlZCB0byBldmVy
eSBXZWIgQ3J5cHRvCisgICAgICAgIGFsZ29yaXRobSBvciBrZXkgaW1wbGVtZW50YXRpb24sIHBs
YWNpbmcgdGhlbSBhdCB0aGUgYmVnaW5uaW5nIG9mCisgICAgICAgIGhlbHBlciBzdGF0aWMgZnVu
Y3Rpb25zIG9yIGluIGVudHJ5cG9pbnQgbWV0aG9kcyBpbiBFQyBhbmQgUlNBIGtleQorICAgICAg
ICBjbGFzc2VzLCBtYWtpbmcgc3VyZSB0aGUgbGlicmFyeSBpcyBpbml0aWFsaXplZCBiZWZvcmUg
YW55IGxpYmdjcnlwdAorICAgICAgICBBUEkgaXMgdXNlZC4KKworICAgICAgICAqIGNyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpnY3J5cHRFbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OmdjcnlwdERlY3J5cHQpOgorICAg
ICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUkdDcnlwdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpnY3J5cHRBRVNfQ1RSKToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0
L0NyeXB0b0FsZ29yaXRobUFFU19HQ01HQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2Ny
eXB0RW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHREZWNyeXB0KToKKyAgICAgICAg
KiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19LV0dDcnlwdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnY3J5cHRXcmFwS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OmdjcnlwdFVud3Jh
cEtleSk6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdjcnlwdERlcml2ZSk6CisgICAgICAgICogY3J5cHRv
L2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpnY3J5cHRTaWduKToKKyAgICAgICAgKFdlYkNvcmU6OmdjcnlwdFZlcmlmeSk6CisgICAgICAg
ICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdjcnlwdERlcml2ZUJpdHMpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVT
aWduYXR1cmUpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUEJLREYy
R0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdjcnlwdERlcml2ZUJpdHMpOgorICAgICAg
ICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRFbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6
OmdjcnlwdERlY3J5cHQpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0U2ln
bik6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRWZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Z2NyeXB0RW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHREZWNyeXB0KToKKyAg
ICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0U2lnbik6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRW
ZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtR2VuZXJhdGVQYWlyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydFJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRKV0tQdWJsaWMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0SldLUHJpdmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1FeHBvcnRSYXcpOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtQWRkRmllbGRFbGVtZW50cyk6CisgICAgICAg
ICogY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvS2V5UlNBOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNB
OjpnZW5lcmF0ZVBhaXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpidWlsZEFs
Z29yaXRobSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmV4cG9ydERhdGEpOgor
CiAyMDE3LTA2LTE5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
QVg6IFJlbW92ZSByZWR1bmRhbnQgQVhPYmplY3RDYWNoZTo6dGV4dENoYW5nZWQoUmVuZGVyT2Jq
ZWN0KikuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA4NThlNGZlODNlZTcwM2U4OGU5NzUyMzA0NDdi
YzA0N2U4YWY0NjUzLi42NGQ3NmNjNWM3OTQxNDdmM2E0M2VkNGIxZGQzMDY0ZjMwZjRkZGYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxNy0wNi0yMCAgWmFuIERvYmVy
c2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dDcnlwdF0gUHJvcGVybHkg
aW5pdGlhbGl6ZSBsaWJnY3J5cHQgYmVmb3JlIHVzaW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM1ODkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gY292ZXJlZCBieSBl
eGlzdGluZyBvbmVzLgorCisgICAgICAgIEFkZCBQQUw6OkdDcnlwdDo6aW5pdGlhbGl6ZSgpLCBh
IGhlbHBlciBmdW5jdGlvbiB0aGF0IGluaXRpYWxpemVzCisgICAgICAgIHRoZSBsaWJnY3J5cHQg
bGlicmFyeSBiZWZvcmUgYW55IEFQSSBjYWxscyBhcmUgbWFkZS4gVGhlIGluaXRpYWxpemF0aW9u
CisgICAgICAgIGlzIGRvbmUgaW4gYSB0aHJlYWQtc2FmZSBtYW5uZXIsIHVzaW5nIHRoZSBzdGQ6
OmNhbGxfb25jZSgpIGFwcHJvYWNoLgorCisgICAgICAgIFBBTDo6R0NyeXB0Ojppbml0aWFsaXpl
KCkgY2FsbCBpcyBhZGRlZCB0byB0aGUgQ3J5cHRvRGlnZXN0OjpjcmVhdGUoKQorICAgICAgICBm
dW5jdGlvbiB0byBtYWtlIHN1cmUgdGhlIGxpYnJhcnkgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHRo
ZSBkaWdlc3QKKyAgICAgICAgb3BlcmF0aW9uLgorCisgICAgICAgICogcGFsL1BsYXRmb3JtV1BF
LmNtYWtlOgorICAgICAgICAqIHBhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5j
cHA6CisgICAgICAgIChQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWwv
Y3J5cHRvL2djcnlwdC9VdGlsaXRpZXMuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0aWVzLmguCisgICAgICAgIChQQUw6OkdDcnlwdDo6
aW5pdGlhbGl6ZSk6CisgICAgICAgICogcGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0aWVzLmg6CisK
IDIwMTctMDYtMTkgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIyMTg0ODQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCA3NzVjMTg5ODRhZTg5YjljZWFhYjI1YjU3ZmRh
MDZhMWExNWZjNjNiLi44ZTJlMGI5NmEzZTlmMGQ3YTBkMjU5NjE4MDI4Yzk5M2IwZDkyYmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV1BFLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTEsMyArMSw0IEBA
CiBsaXN0KEFQUEVORCBQQUxfU09VUkNFUwogICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0
R0NyeXB0LmNwcAorICAgIGNyeXB0by9nY3J5cHQvVXRpbGl0aWVzLmNwcAogKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlw
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0
R0NyeXB0LmNwcAppbmRleCAwYTc4YWUwYzNiOGQ3MDA4NjA3NzMzNWFlM2UzMmVmYWE5MTM5NmQ4
Li5iODRiZWFiZDJkZWYxODY2ZDU4NzZlMTUyOWFkMjM5MmEwM2UxN2RmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0
R0NyeXB0LmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkNyeXB0b0RpZ2VzdC5oIgogCi0jaW5jbHVkZSA8Z2NyeXB0Lmg+CisjaW5jbHVkZSAiVXRp
bGl0aWVzLmgiCiAKIG5hbWVzcGFjZSBQQUwgewogCkBAIC00Nyw4ICs0Nyw5IEBAIENyeXB0b0Rp
Z2VzdDo6fkNyeXB0b0RpZ2VzdCgpCiAKIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENy
eXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKIHsK
LSAgICBpbnQgZ2NyeXB0QWxnb3JpdGhtOworICAgIEdDcnlwdDo6aW5pdGlhbGl6ZSgpOwogCisg
ICAgaW50IGdjcnlwdEFsZ29yaXRobTsKICAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewogICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgogICAgICAgICBnY3J5cHRBbGdvcml0
aG0gPSBHQ1JZX01EX1NIQTE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Ny
eXB0by9nY3J5cHQvVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRv
L2djcnlwdC9VdGlsaXRpZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2MzhiMWE0MTc4NzZkMjBiYjY0ZmQ0
YjVhMDE4NGRmNWQyMTI1MDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0aWVzLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlV0aWxpdGllcy5oIgorCisjaW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDxtdXRl
eD4KKworbmFtZXNwYWNlIFBBTCB7CituYW1lc3BhY2UgR0NyeXB0IHsKKwordm9pZCBpbml0aWFs
aXplKCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpj
YWxsX29uY2Uob25jZUZsYWcsIFtdIHsKKyAgICAgICAgLy8gQWJvcnQgaWYgd2UncmUgc29tZWhv
dyBydW5uaW5nIGFnYWluc3QgYSBsaWJnY3J5cHQgbGlicmFyeSB0aGF0IGlzCisgICAgICAgIC8v
IG9mIGxvd2VyIHZlcnNpb24gdGhhbiAxLjcuMCwgd2hpY2ggaXMgdGhlIHZlcnNpb24gd2UgZGVt
YW5kIGF0CisgICAgICAgIC8vIGNvbmZpZ3VyZS10aW1lLgorICAgICAgICBpZiAoIWdjcnlfY2hl
Y2tfdmVyc2lvbigiMS43LjAiKSkKKyAgICAgICAgICAgIHN0ZDo6YWJvcnQoKTsKKworICAgICAg
ICAvLyBDb21wbGV0ZSB0aGUgaW5pdGlhbGl6YXRpb24uCisgICAgICAgIGdjcnlfY29udHJvbChH
Q1JZQ1RMX0lOSVRJQUxJWkFUSU9OX0ZJTklTSEVELCBudWxscHRyKTsKKyAgICB9KTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgUEFMCit9IC8vIG5hbWVzcGFjZSBHQ3J5cHQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9VdGlsaXRpZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9VdGlsaXRpZXMuaAppbmRleCBhNzg4NDhlMzc3
NmM3NTNlMDdmM2Q4YWJmMTc1YjY0OTk2OGZjNDg1Li5hODgyZTI4ODk2NTg3ZDM5ZTdjNWM2ZDEz
ZDAwMDMxYjY0ZjlmNWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0
by9nY3J5cHQvVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8v
Z2NyeXB0L1V0aWxpdGllcy5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlIDxnY3J5cHQu
aD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgogCiBuYW1lc3BhY2UgUEFMIHsKIG5hbWVzcGFjZSBHQ3J5cHQgewpAQCAtNDEsNiArNDIsOCBA
QCBuYW1lc3BhY2UgR0NyeXB0IHsKIAogdXNpbmcgQ2lwaGVyT3BlcmF0aW9uID0gZ2NyeV9lcnJv
cl90KGdjcnlfY2lwaGVyX2hkX3QsIHZvaWQqLCBzaXplX3QsIGNvbnN0IHZvaWQqLCBzaXplX3Qp
OwogCit2b2lkIGluaXRpYWxpemUoKTsKKwogc3RhdGljIGlubGluZSB2b2lkIGxvZ0Vycm9yKGdj
cnlfZXJyb3JfdCBlcnJvcikKIHsKICAgICBXVEZMb2dBbHdheXMoImxpYmdjcnlwdCBlcnJvcjog
c291cmNlICclcycsIGRlc2NyaXB0aW9uICclcyciLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR0NyeXB0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dDcnlwdC5jcHAK
aW5kZXggNjQ1MzU5N2U0ZjI5ZDgzZmQ4YzFhZjcyZTU3YTE2Y2I4OWYwMDViNS4uZWU4N2EzZDlh
MDFlNDkxM2YxNjYzZjNiMmU4OTM5NWIxMDA1MjJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR0NyeXB0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19DQkNHQ3J5cHQu
Y3BwCkBAIC00MCw2ICs0MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBWZWN0b3I8dWludDhfdD4mJiBw
bGFpblRleHQpCiB7CisgICAgUEFMOjpHQ3J5cHQ6OmluaXRpYWxpemUoKTsKKwogICAgIC8vIERl
dGVybWluZSB0aGUgQUVTIGFsZ29yaXRobSBmb3IgdGhlIGdpdmVuIGtleSBzaXplLgogICAgIGF1
dG8gYWxnb3JpdGhtID0gUEFMOjpHQ3J5cHQ6OmFlc0FsZ29yaXRobUZvcktleVNpemUoa2V5LnNp
emUoKSAqIDgpOwogICAgIGlmICghYWxnb3JpdGhtKQpAQCAtMTAzLDYgKzEwNSw4IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChjb25zdCBWZWN0
b3I8dWludDhfdD4mIGtleSwKIAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBnY3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGl2LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCiB7CisgICAg
UEFMOjpHQ3J5cHQ6OmluaXRpYWxpemUoKTsKKwogICAgIC8vIERldGVybWluZSB0aGUgQUVTIGFs
Z29yaXRobSBmb3IgdGhlIGdpdmVuIGtleSBzaXplLgogICAgIGF1dG8gYWxnb3JpdGhtID0gUEFM
OjpHQ3J5cHQ6OmFlc0FsZ29yaXRobUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgpOwogICAgIGlm
ICghYWxnb3JpdGhtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1BRVNfQ1RSR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUkdDcnlwdC5jcHAKaW5kZXggNmRjZjc5YTczZjQ1
NzJhNTFiMjBhZjJiYzU4ZmVhODA2NWZhZmEzYy4uNzFmMWE0ZTc1ZWQ1NmVlNjI0YmM5OGQyNzA5
NmFjZTQ1MWNlYWJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1BRVNfQ1RSR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19DVFJHQ3J5cHQuY3BwCkBAIC03Myw2ICs3Myw4
IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY2FsbE9wZXJhdGlvbihQ
QUw6OkdDcnlwdDo6Q2lwaGVyT3BlcmF0aW9uCiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gZ2NyeXB0QUVTX0NUUihQQUw6OkdDcnlwdDo6Q2lwaGVyT3BlcmF0aW9uIG9w
ZXJhdGlvbiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgY291bnRlciwgc2l6ZV90IGNvdW50ZXJMZW5ndGgsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
aW5wdXRUZXh0KQogeworICAgIFBBTDo6R0NyeXB0Ojppbml0aWFsaXplKCk7CisKICAgICBjb25z
dGV4cHIgc2l6ZV90IGJsb2NrU2l6ZSA9IDE2OwogICAgIGF1dG8gYWxnb3JpdGhtID0gUEFMOjpH
Q3J5cHQ6OmFlc0FsZ29yaXRobUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgpOwogICAgIGlmICgh
YWxnb3JpdGhtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1BRVNfR0NNR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5
cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTUdDcnlwdC5jcHAKaW5kZXggNjgxMzRjNGI2NTcxMWI0
ZGQ1NTljYThiMDkzNTk4NGE4ZjExMTkxMy4uYzUxZTJiMTU0MzRkYWY3ZWYyODQ4NTBmNzU1ZGU4
OTE1ODE4NGZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1BRVNfR0NNR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19HQ01HQ3J5cHQuY3BwCkBAIC00Myw2ICs0Myw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBnY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGl2LCBWZWN0b3I8dWludDhfdD4mJiBwbGFpblRleHQsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgYWRkaXRpb25hbERhdGEsIHVpbnQ4X3QgdGFnTGVuZ3RoKQogeworICAgIFBB
TDo6R0NyeXB0Ojppbml0aWFsaXplKCk7CisKICAgICAvLyBEZXRlcm1pbmUgdGhlIEFFUyBhbGdv
cml0aG0gZm9yIHRoZSBnaXZlbiBrZXkgc2l6ZS4KICAgICBhdXRvIGFsZ29yaXRobSA9IFBBTDo6
R0NyeXB0OjphZXNBbGdvcml0aG1Gb3JLZXlTaXplKGtleS5zaXplKCkgKiA4KTsKICAgICBpZiAo
IWFsZ29yaXRobSkKQEAgLTExMSw2ICsxMTMsOCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksCiAK
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChjb25z
dCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpdiwgVmVjdG9y
PHVpbnQ4X3Q+JiYgY2lwaGVyVGV4dCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhZGRpdGlvbmFs
RGF0YSwgdWludDhfdCB0YWdMZW5ndGgpCiB7CisgICAgUEFMOjpHQ3J5cHQ6OmluaXRpYWxpemUo
KTsKKwogICAgIC8vIERldGVybWluZSB0aGUgQUVTIGFsZ29yaXRobSBmb3IgdGhlIGdpdmVuIGtl
eSBzaXplLgogICAgIGF1dG8gYWxnb3JpdGhtID0gUEFMOjpHQ3J5cHQ6OmFlc0FsZ29yaXRobUZv
cktleVNpemUoa2V5LnNpemUoKSAqIDgpOwogICAgIGlmICghYWxnb3JpdGhtKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfS1dHQ3J5
cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNf
S1dHQ3J5cHQuY3BwCmluZGV4IDhhZWNhNmNiM2I3MTc3NGNjMGIwNTYxMGYwYzM1MDgwMzExMDI5
NjUuLjc3ODZhOTcxZGY1YmQzZGU5MTUyOWZiNjQ2ZTE3NTlmZTVkNWY3ZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXR0NyeXB0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFF
U19LV0dDcnlwdC5jcHAKQEAgLTM5LDYgKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFdyYXBLZXkoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKKyAg
ICBQQUw6OkdDcnlwdDo6aW5pdGlhbGl6ZSgpOworCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBBRVMg
YWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4ga2V5IHNpemUuCiAgICAgYXV0byBhbGdvcml0aG0gPSBQ
QUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7CiAgICAg
aWYgKCFhbGdvcml0aG0pCkBAIC03OSw2ICs4MSw4IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gZ2NyeXB0V3JhcEtleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwK
IAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRVbndyYXBLZXko
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkK
IHsKKyAgICBQQUw6OkdDcnlwdDo6aW5pdGlhbGl6ZSgpOworCiAgICAgLy8gRGV0ZXJtaW5lIHRo
ZSBBRVMgYWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4ga2V5IHNpemUuCiAgICAgYXV0byBhbGdvcml0
aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7
CiAgICAgaWYgKCFhbGdvcml0aG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0LmNwcAppbmRleCBjNWU2ZDY2OTUx
NTVlYjRhOWVjMDc1NGRkMTY2YWUyNmJlODA5MzRmLi4yNzZjZWE2YmI2NTVlNTVjOGJmYjEwZDU3
NjFlMzc4ZDZlYzZkMWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0
L0NyeXB0b0FsZ29yaXRobUVDREhHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNESEdDcnlwdC5jcHAKQEAgLTM5LDYgKzM5LDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IGdjcnlwdERlcml2ZShnY3J5X3NleHBfdCBiYXNlS2V5U2V4cCwgZ2NyeV9zZXhwX3QgcHVi
bGljS2V5U2V4cCkKIHsKKyAgICBQQUw6OkdDcnlwdDo6aW5pdGlhbGl6ZSgpOworCiAgICAgLy8g
Rmlyc3QsIHJldHJpZXZlIHByaXZhdGUga2V5IGRhdGEsIHdoaWNoIGlzIHJvdWdobHkgb2YgdGhl
IGZvbGxvd2luZyBmb3JtOgogICAgIC8vIChwcml2YXRlLWtleQogICAgIC8vICAgKGVjYwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RT
QUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bUVDRFNBR0NyeXB0LmNwcAppbmRleCA0NGIwMDkzMTNiNjIzYjhkZjdmNjEwYzBhYzVhZWY0MmVm
YmUxNGU4Li5jMjQ0OGE4N2UzNmFlNTNiOTY0MWMzOTc0YWZhMTYxNGE4MWM3Y2UyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0Ny
eXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bUVDRFNBR0NyeXB0LmNwcApAQCAtNjYsNiArNjYsOCBAQCBzdGF0aWMgYm9vbCBleHRyYWN0RUNE
U0FTaWduYXR1cmVJbnRlZ2VyKFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBnY3J5X3NleHBf
dAogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFNpZ24oZ2Ny
eV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlmaWVyLCBzaXplX3Qga2V5U2l6ZUlu
Qnl0ZXMpCiB7CisgICAgUEFMOjpHQ3J5cHQ6OmluaXRpYWxpemUoKTsKKwogICAgIC8vIFBlcmZv
cm0gZGlnZXN0IG9wZXJhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgYWxnb3JpdGhtIG9uIHRoZSBn
aXZlbiBkYXRhLgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhSGFzaDsKICAgICB7CkBAIC0xMjIs
NiArMTI0LDggQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRT
aWduKGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3QKIAogc3RhdGljIHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gZ2NyeXB0VmVyaWZ5KGdjcnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBrZXlTaXpl
SW5CeXRlcykKIHsKKyAgICBQQUw6OkdDcnlwdDo6aW5pdGlhbGl6ZSgpOworCiAgICAgLy8gQmFp
bCBpZiB0aGUgc2lnbmF0dXJlIHNpemUgaXNuJ3QgZG91YmxlIHRoZSBrZXkgc2l6ZSAoaS5lLiBj
b25jYXRlbmF0ZWQgciBhbmQgcyBjb21wb25lbnRzKS4KICAgICBpZiAoc2lnbmF0dXJlLnNpemUo
KSAhPSBrZXlTaXplSW5CeXRlcyAqIDIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlw
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZH
Q3J5cHQuY3BwCmluZGV4IDExYWIxOTY5N2MwNTA2MTYyMDAwZmY3NzIxYjg4NjNkZTQ3ODE1NGIu
LmNiZDgxNTFjMDdmMDBhODc0ODU4ZjBjMDc1ODc3MzgyMzE5ZDRhYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0Ny
eXB0LmNwcApAQCAtNDQsNiArNDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVyaXZlQml0cyhjb25zdCBWZWN0
b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzYWx0LCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIGluZm8sIHNpemVfdCBsZW5ndGhJbkJ5dGVzLCBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CisgICAgUEFMOjpHQ3J5cHQ6OmluaXRpYWxpemUoKTsK
KwogICAgIC8vIGxpYmdjcnlwdCBkb2Vzbid0IHByb3ZpZGUgSEtERiBzdXBwb3J0LCBzbyB3ZSBo
YXZlIHRvIGltcGxlbWVudAogICAgIC8vIHRoZSBmdW5jdGlvbmFsaXR5IG91cnNlbHZlcyBhcyBz
cGVjaWZpZWQgaW4gUkZDNTg2OS4KICAgICAvLyBodHRwczovL3d3dy5pZXRmLm9yZy9yZmMvcmZj
NTg2OS50eHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRv
QWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwCmluZGV4IDIyNDgwM2VlMzQ4NzA2YzhjNTFkOTJk
YmMxNDVjOGVhMWNiZTQ5ZDAuLjk0M2JiZDA3NmQ1MWNiNzM3MzgwMjc0YmVjNjcwODEzZTMxNzhl
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtSE1BQ0dDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1ITUFDR0NyeXB0LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5j
bHVkZSA8cGFsL2NyeXB0by9nY3J5cHQvSGFuZGxlLmg+CisjaW5jbHVkZSA8cGFsL2NyeXB0by9n
Y3J5cHQvVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNVdGlsaXRpZXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjAsNiArNjEsOCBAQCBzdGF0aWMgaW50IGdl
dEdDcnlwdERpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5j
dGlvbikKIAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjYWxjdWxhdGVT
aWduYXR1cmUoaW50IGFsZ29yaXRobSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0
IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogeworICAgIFBBTDo6R0NyeXB0Ojpp
bml0aWFsaXplKCk7CisKICAgICBjb25zdCB2b2lkKiBrZXlEYXRhID0ga2V5LmRhdGEoKSA/IGtl
eS5kYXRhKCkgOiByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigiIik7CiAKICAgICBQ
QUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbWFjX2hkX3Q+IGhkOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1QQktERjJHQ3J5cHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1QQktERjJHQ3J5cHQu
Y3BwCmluZGV4IDM1NmRlZGIyZTJmYTRiZDcxZTE5OWEzYWY0ODc2MmQxOGFmOTQ1ODQuLmUwNzdh
NmYwN2U3NWIwMmVkYWU5MmZmZDYyYTk0MGVmZWRhZjQ0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUEJLREYyR0NyeXB0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdDcnlw
dC5jcHAKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZUJpdHMoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBrZXlEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNhbHREYXRhLCBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hJZGVudGlmaWVyLCBzaXplX3QgaXRlcmF0aW9ucywg
c2l6ZV90IGxlbmd0aCkKIHsKKyAgICBQQUw6OkdDcnlwdDo6aW5pdGlhbGl6ZSgpOworCiAgICAg
Ly8gRGV0ZXJtaW5lIHRoZSBoYXNoIGFsZ29yaXRobSB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgZGVy
aXZhdGlvbi4KICAgICBhdXRvIGhhc2hBbGdvcml0aG0gPSBkaWdlc3RBbGdvcml0aG0oaGFzaElk
ZW50aWZpZXIpOwogICAgIGlmICghaGFzaEFsZ29yaXRobSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlw
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQUVT
X1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCmluZGV4IDM3OWI5ZjQ5MDI1NWMxMTY1OGE5Yjc0YzBiMDQ1
YzQ3M2Q3YmNjNTcuLjNjMWFjMTJlYTdhNzlhNzg5NTZmMzA2OWVmZmNjODU0ODM4MjI2YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNB
RVNfUEtDUzFfdjFfNUdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcApAQCAtMzgsNiArMzgs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChnY3J5X3NleHBfdCBrZXlTZXhwLCBWZWN0b3I8dWludDhf
dD4mJiBwbGFpblRleHQpCiB7CisgICAgUEFMOjpHQ3J5cHQ6OmluaXRpYWxpemUoKTsKKwogICAg
IC8vIEVtYmVkIHRoZSBwbGFpbi10ZXh0IGRhdGEgaW4gYSBgZGF0YWAgcy1leHByZXNzaW9uIHVz
aW5nIFBLQ1MjMSBwYWRkaW5nLgogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+
IGRhdGFTZXhwOwogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZGF0
YVNleHAsIG51bGxwdHIsICIoZGF0YShmbGFncyBwa2NzMSkodmFsdWUgJWIpKSIsCkBAIC02OCw2
ICs3MCw4IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5j
cnlwdChnY3J5X3NleHBfdCBrZXlTZXhwLCBWZWN0b3I8CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVjcnlwdChnY3J5X3NleHBfdCBrZXlTZXhwLCBWZWN0
b3I8dWludDhfdD4mJiBjaXBoZXJUZXh0KQogeworICAgIFBBTDo6R0NyeXB0Ojppbml0aWFsaXpl
KCk7CisKICAgICAvLyBFbWJlZCB0aGUgY2lwaGVyLXRleHQgZGF0YSBpbiBhbiBgZW5jLXZhbGAg
cy1leHByZXNzaW9uIHVzaW5nIFBLQ1MjMSBwYWRkaW5nLgogICAgIFBBTDo6R0NyeXB0OjpIYW5k
bGU8Z2NyeV9zZXhwX3Q+IGVuY1ZhbFNleHA7CiAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2Ny
eV9zZXhwX2J1aWxkKCZlbmNWYWxTZXhwLCBudWxscHRyLCAiKGVuYy12YWwoZmxhZ3MgcGtjczEp
KHJzYShhICViKSkpIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5j
cHAKaW5kZXggNzQwMTE5ZGY1ZWUyYmNjNmEyNWJjN2Q0ZTg3OTQ5MjQ0ODBlYTYzYS4uZWFjNjg2
ZDlhNWNlZjdhMGU4YmJlYTcwZmEzZDNiNTIxYzc2MGJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNUdDcnlw
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1S
U0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFNp
Z24oZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlmaWVyKQogeworICAgIFBB
TDo6R0NyeXB0Ojppbml0aWFsaXplKCk7CisKICAgICAvLyBQZXJmb3JtIGRpZ2VzdCBvcGVyYXRp
b24gd2l0aCB0aGUgc3BlY2lmaWVkIGFsZ29yaXRobSBvbiB0aGUgZ2l2ZW4gZGF0YS4KICAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YUhhc2g7CiAgICAgewpAQCAtOTEsNiArOTMsOCBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5
U2V4cCwgY29uc3QgVmVjdAogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBnY3J5cHRWZXJp
ZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUs
IGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBo
YXNoQWxnb3JpdGhtSWRlbnRpZmllcikKIHsKKyAgICBQQUw6OkdDcnlwdDo6aW5pdGlhbGl6ZSgp
OworCiAgICAgLy8gUGVyZm9ybSBkaWdlc3Qgb3BlcmF0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBh
bGdvcml0aG0gb24gdGhlIGdpdmVuIGRhdGEuCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFIYXNo
OwogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdDcnlwdC5jcHAKaW5kZXggYmY4OTcxMTQ2NWI5NDhi
MGJkZmIyMGJmODE0NDAyMWMyZmZlZTNjNi4uMTc5MTkzNWU5MWQyMzIwOGVhNjM1NzM5MmYxNmNi
YmM1ZDdjZjQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1SU0FfT0FFUEdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FFUEdDcnlwdC5jcHAKQEAgLTM5LDYgKzM5LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGdjcnlwdEVuY3J5cHQoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3Jp
dGhtSWRlbnRpZmllciwgZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBsYWJlbFZlY3RvciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBwbGFpblRleHQpCiB7CisgICAg
UEFMOjpHQ3J5cHQ6OmluaXRpYWxpemUoKTsKKwogICAgIC8vIEVtYmVkIHRoZSBwbGFpbi10ZXh0
IGRhdGEgaW4gYSBkYXRhIHMtZXhwcmVzc2lvbiB1c2luZyBPQUVQIHBhZGRpbmcuCiAgICAgLy8g
RW1wdHkgbGFiZWwgZGF0YSBpcyBwcm9wZXJseSBoYW5kbGVkIGJ5IGdjcnlfc2V4cF9idWlsZCgp
LgogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IGRhdGFTZXhwOwpAQCAtNzcs
NiArNzksOCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVu
Y3J5cHQoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYQogCiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllciwgZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBsYWJlbFZlY3RvciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaXBoZXJU
ZXh0KQogeworICAgIFBBTDo6R0NyeXB0Ojppbml0aWFsaXplKCk7CisKICAgICAvLyBFbWJlZCB0
aGUgY2lwaGVyLXRleHQgZGF0YSBpbiBhbiBlbmMtdmFsIHMtZXhwcmVzc2lvbiB1c2luZyBPQUVQ
IHBhZGRpbmcuCiAgICAgLy8gRW1wdHkgbGFiZWwgZGF0YSBpcyBwcm9wZXJseSBoYW5kbGVkIGJ5
IGdjcnlfc2V4cF9idWlsZCgpLgogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+
IGVuY1ZhbFNleHA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dj
cnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcAppbmRleCBkNDkyZWFkOTc5ODE2
MjVkYmYwMTRlNmQ1NGVkYzU1ZGQ1MzRkZmQzLi44NTFjYTY0YThmMmYwMGIzOTMzNzEyYzQ4N2M2
ODg4MzhhNGZmMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX1BTU0dDcnlwdC5jcHAKQEAgLTQwLDYgKzQwLDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5U2V4cCwgc2l6ZV90IGtleUxlbmd0aCwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhh
c2hBbGdvcml0aG1JZGVudGlmaWVyLCBzaXplX3Qgc2FsdExlbmd0aCkKIHsKKyAgICBQQUw6OkdD
cnlwdDo6aW5pdGlhbGl6ZSgpOworCiAgICAgLy8gUGVyZm9ybSBkaWdlc3Qgb3BlcmF0aW9uIHdp
dGggdGhlIHNwZWNpZmllZCBhbGdvcml0aG0gb24gdGhlIGdpdmVuIGRhdGEuCiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGRhdGFIYXNoOwogICAgIHsKQEAgLTk2LDYgKzk4LDggQEAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRTaWduKGdjcnlfc2V4cF90IGtleVNleHAs
IHNpemVfdCBrZXkKIAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZ2NyeXB0VmVyaWZ5KGdj
cnlfc2V4cF90IGtleVNleHAsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2lnbmF0dXJlLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFs
Z29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBzYWx0TGVuZ3RoKQogeworICAgIFBBTDo6R0NyeXB0
Ojppbml0aWFsaXplKCk7CisKICAgICAvLyBQZXJmb3JtIGRpZ2VzdCBvcGVyYXRpb24gd2l0aCB0
aGUgc3BlY2lmaWVkIGFsZ29yaXRobSBvbiB0aGUgZ2l2ZW4gZGF0YS4KICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YUhhc2g7CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0tleUVDR0NyeXB0LmNwcAppbmRleCA1ZWZmZDZjNmEyMGE3NGE0MzhhNDkyZDA1
NTg3NjFjYjM4OTU0YWViLi5hNDY3NTVlYTFhYzE4NTA0MGVkNGUzYTY0NmFmNjI2ZTczMzZkODJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleUVDR0Ny
eXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleUVDR0Ny
eXB0LmNwcApAQCAtMTA1LDYgKzEwNSw4IEBAIHNpemVfdCBDcnlwdG9LZXlFQzo6a2V5U2l6ZUlu
Qml0cygpIGNvbnN0CiAKIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvS2V5UGFpcj4gQ3J5cHRvS2V5RUM6
OnBsYXRmb3JtR2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgTmFtZWRDdXJ2ZSBjdXJ2ZSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRt
YXAgdXNhZ2VzKQogeworICAgIFBBTDo6R0NyeXB0Ojppbml0aWFsaXplKCk7CisKICAgICBQQUw6
OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4cF90PiBnZW5rZXlTZXhwOwogICAgIGdjcnlfZXJyb3Jf
dCBlcnJvciA9IGdjcnlfc2V4cF9idWlsZCgmZ2Vua2V5U2V4cCwgbnVsbHB0ciwgIihnZW5rZXko
ZWNjKGN1cnZlICVzKSkpIiwgY3VydmVOYW1lKGN1cnZlKSk7CiAgICAgaWYgKGVycm9yICE9IEdQ
R19FUlJfTk9fRVJST1IpIHsKQEAgLTEzMSw2ICsxMzMsOCBAQCBzdGQ6Om9wdGlvbmFsPENyeXB0
b0tleVBhaXI+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUdlbmVyYXRlUGFpcihDcnlwdG9BbGdvcml0
aG1JZAogCiBSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydFJh
dyhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIsIE5hbWVkQ3VydmUgY3VydmUs
IFZlY3Rvcjx1aW50OF90PiYmIGtleURhdGEsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVz
YWdlQml0bWFwIHVzYWdlcykKIHsKKyAgICBQQUw6OkdDcnlwdDo6aW5pdGlhbGl6ZSgpOworCiAg
ICAgaWYgKGtleURhdGEuc2l6ZSgpICE9IHVuY29tcHJlc3NlZFBvaW50U2l6ZUZvckN1cnZlKGN1
cnZlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE0Nyw2ICsxNTEsOCBAQCBSZWZQ
dHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydFJhdyhDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIGlkZQogCiBSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpw
bGF0Zm9ybUltcG9ydEpXS1B1YmxpYyhDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZp
ZXIsIE5hbWVkQ3VydmUgY3VydmUsIFZlY3Rvcjx1aW50OF90PiYmIHgsIFZlY3Rvcjx1aW50OF90
PiYmIHksIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcykKIHsK
KyAgICBQQUw6OkdDcnlwdDo6aW5pdGlhbGl6ZSgpOworCiAgICAgdW5zaWduZWQgdW5jb21wcmVz
c2VkRmllbGRFbGVtZW50U2l6ZSA9IHVuY29tcHJlc3NlZEZpZWxkRWxlbWVudFNpemVGb3JDdXJ2
ZShjdXJ2ZSk7CiAgICAgaWYgKHguc2l6ZSgpICE9IHVuY29tcHJlc3NlZEZpZWxkRWxlbWVudFNp
emUgfHwgeS5zaXplKCkgIT0gdW5jb21wcmVzc2VkRmllbGRFbGVtZW50U2l6ZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0xNzEsNiArMTc3LDggQEAgUmVmUHRyPENyeXB0b0tleUVDPiBD
cnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRKV0tQdWJsaWMoQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
ZmkKIAogUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRKV0tQ
cml2YXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgTmFtZWRDdXJ2ZSBj
dXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgeCwgVmVjdG9yPHVpbnQ4X3Q+JiYgeSwgVmVjdG9yPHVp
bnQ4X3Q+JiYgZCwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2Vz
KQogeworICAgIFBBTDo6R0NyeXB0Ojppbml0aWFsaXplKCk7CisKICAgICB1bnNpZ25lZCB1bmNv
bXByZXNzZWRGaWVsZEVsZW1lbnRTaXplID0gdW5jb21wcmVzc2VkRmllbGRFbGVtZW50U2l6ZUZv
ckN1cnZlKGN1cnZlKTsKICAgICBpZiAoeC5zaXplKCkgIT0gdW5jb21wcmVzc2VkRmllbGRFbGVt
ZW50U2l6ZSB8fCB5LnNpemUoKSAhPSB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplIHx8IGQu
c2l6ZSgpICE9IHVuY29tcHJlc3NlZEZpZWxkRWxlbWVudFNpemUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMjA5LDYgKzIxNyw4IEBAIFJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5
RUM6OnBsYXRmb3JtSW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwKIAogVmVj
dG9yPHVpbnQ4X3Q+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUV4cG9ydFJhdygpIGNvbnN0CiB7Cisg
ICAgUEFMOjpHQ3J5cHQ6OmluaXRpYWxpemUoKTsKKwogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8
Z2NyeV9jdHhfdD4gY29udGV4dDsKICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X21waV9l
Y19uZXcoJmNvbnRleHQsIG1fcGxhdGZvcm1LZXksIG51bGxwdHIpOwogICAgIGlmIChlcnJvciAh
PSBHUEdfRVJSX05PX0VSUk9SKSB7CkBAIC0yMjksNiArMjM5LDggQEAgVmVjdG9yPHVpbnQ4X3Q+
IENyeXB0b0tleUVDOjpwbGF0Zm9ybUV4cG9ydFJhdygpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvS2V5
RUM6OnBsYXRmb3JtQWRkRmllbGRFbGVtZW50cyhKc29uV2ViS2V5JiBqd2spIGNvbnN0CiB7Cisg
ICAgUEFMOjpHQ3J5cHQ6OmluaXRpYWxpemUoKTsKKwogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8
Z2NyeV9jdHhfdD4gY29udGV4dDsKICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X21waV9l
Y19uZXcoJmNvbnRleHQsIG1fcGxhdGZvcm1LZXksIG51bGxwdHIpOwogICAgIGlmIChlcnJvciAh
PSBHUEdfRVJSX05PX0VSUk9SKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKaW5kZXggMTI0NWJlMmE3NTZkZDg5NzFkNDQwMjM5
ZGNkOWZiOTRlMmE0YjBiYy4uNjZhM2Q4YzNmYTNiYmJhNmU0OWU2ZWI2OWJhNTllNDQ3YmJiNGIw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FH
Q3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNB
R0NyeXB0LmNwcApAQCAtNzIsNiArNzIsOCBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGdldFJT
QUtleVBhcmFtZXRlcihnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBjaGFyKiBuYW1lKQogCiBS
ZWZQdHI8Q3J5cHRvS2V5UlNBPiBDcnlwdG9LZXlSU0E6OmNyZWF0ZShDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIGlkZW50aWZpZXIsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9v
bCBoYXNIYXNoLCBjb25zdCBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cyYga2V5RGF0YSwgYm9v
bCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogeworICAgIFBBTDo6
R0NyeXB0Ojppbml0aWFsaXplKCk7CisKICAgICAvLyBXaGVuIGNyZWF0aW5nIGEgcHJpdmF0ZSBr
ZXksIHdlIHJlcXVpcmUgdGhlIHAgYW5kIHEgcHJpbWUgaW5mb3JtYXRpb24uCiAgICAgaWYgKGtl
eURhdGEudHlwZSgpID09IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpUeXBlOjpQcml2YXRl
ICYmICFrZXlEYXRhLmhhc0FkZGl0aW9uYWxQcml2YXRlS2V5UGFyYW1ldGVycygpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5Myw2ICsxOTUsOCBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gZXhwb25lbnRWZWN0b3JUb1VJbnQzMihjb25zdCBWZWN0b3I8dWludDhfdD4m
IGV4cAogCiB2b2lkIENyeXB0b0tleVJTQTo6Z2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgYWxnb3JpdGhtLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsIGJvb2wg
aGFzSGFzaCwgdW5zaWduZWQgbW9kdWx1c0xlbmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBw
dWJsaWNFeHBvbmVudCwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNh
Z2UsIEtleVBhaXJDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CisgICAgUEFMOjpHQ3J5
cHQ6OmluaXRpYWxpemUoKTsKKwogICAgIC8vIGxpYmdjcnlwdCBkb2Vzbid0IHJlcG9ydCBhbiBl
cnJvciBpZiB0aGUgZXhwb25lbnQgaXMgc21hbGxlciB0aGFuIHRocmVlIG9yIGV2ZW4uCiAgICAg
YXV0byBlID0gZXhwb25lbnRWZWN0b3JUb1VJbnQzMihwdWJsaWNFeHBvbmVudCk7CiAgICAgaWYg
KCFlIHx8ICplIDwgMyB8fCAhKCplICYgMHgxKSkgewpAQCAtMjcwLDYgKzI3NCw4IEBAIEV4Y2Vw
dGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvS2V5UlNBOjpleHBvcnRQa2NzOCgpIGNvbnN0
CiAKIHN0ZDo6dW5pcXVlX3B0cjxLZXlBbGdvcml0aG0+IENyeXB0b0tleVJTQTo6YnVpbGRBbGdv
cml0aG0oKSBjb25zdAogeworICAgIFBBTDo6R0NyeXB0Ojppbml0aWFsaXplKCk7CisKICAgICBT
dHJpbmcgbmFtZSA9IENyeXB0b0FsZ29yaXRobVJlZ2lzdHJ5OjpzaW5nbGV0b24oKS5uYW1lKGFs
Z29yaXRobUlkZW50aWZpZXIoKSk7CiAgICAgc2l6ZV90IG1vZHVsdXNMZW5ndGggPSBnZXRSU0FN
b2R1bHVzTGVuZ3RoKG1fcGxhdGZvcm1LZXkpOwogICAgIFZlY3Rvcjx1aW50OF90PiBwdWJsaWNF
eHBvbmVudCA9IGdldFJTQUtleVBhcmFtZXRlcihtX3BsYXRmb3JtS2V5LCAiZSIpOwpAQCAtMjgx
LDYgKzI4Nyw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxLZXlBbGdvcml0aG0+IENyeXB0b0tleVJTQTo6
YnVpbGRBbGdvcml0aG0oKSBjb25zdAogCiBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4g
Q3J5cHRvS2V5UlNBOjpleHBvcnREYXRhKCkgY29uc3QKIHsKKyAgICBQQUw6OkdDcnlwdDo6aW5p
dGlhbGl6ZSgpOworCiAgICAgQVNTRVJUKGV4dHJhY3RhYmxlKCkpOwogCiAgICAgc3dpdGNoICh0
eXBlKCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313387</attachid>
            <date>2017-06-20 02:33:06 -0700</date>
            <delta_ts>2017-06-26 09:51:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173589-20170620113305.patch</filename>
            <type>text/plain</type>
            <size>28949</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY4MjE0MDQ4OGNiYThl
NmMwMDAzOTJlY2Y5M2RlMjNhNGM4NmRiMS4uOWUwNWQ0YTVkMWJiYjllOTFkNzI0NTMyYzYyZjZk
YzYzNDk3MmJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE3LTA2LTIwICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBQcm9w
ZXJseSBpbml0aWFsaXplIGxpYmdjcnlwdCBiZWZvcmUgdXNpbmcgaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzU4OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtLSBjb3ZlcmVk
IGJ5IGV4aXN0aW5nIG9uZXMuCisKKyAgICAgICAgSW5zdGVhZCBvZiByZWx5aW5nIG9uIHRoZSBm
aXJzdCBBUEkgY2FsbCB0byBwcm9wZXJseSBpbml0aWFsaXplIHRoZQorICAgICAgICBsaWJnY3J5
cHQgbGlicmFyeSwgZG8gaXQgbWFudWFsbHkgYXQgZXZlcnkgcG90ZW50aWFsIGVudHJ5cG9pbnQu
CisKKyAgICAgICAgUEFMOkdDcnlwdDo6aW5pdGlhbGl6ZSgpIGlzIGFkZGVkLCBjYWxsaW5nIGdj
cnlfY2hlY2tfdmVyc2lvbigpIHRvCisgICAgICAgIGVuc3VyZSB0aGUgdXNlZCBsaWJyYXJ5IGlz
IGF0IGxlYXN0IG9mIHZlcnNpb24gMS43LjAgKGFzIHJlcXVpcmVkCisgICAgICAgIGR1cmluZyBj
b25maWd1cmF0aW9uKSBhbmQgdGhlbiBjb21wbGV0aW5nIHRoZSBpbml0aWFsaXphdGlvbi4KKwor
ICAgICAgICBQQUw6OkdDcnlwdDo6aW5pdGlhbGl6ZSgpIGNhbGxzIGFyZSBhZGRlZCB0byBldmVy
eSBXZWIgQ3J5cHRvCisgICAgICAgIGFsZ29yaXRobSBvciBrZXkgaW1wbGVtZW50YXRpb24sIHBs
YWNpbmcgdGhlbSBhdCB0aGUgYmVnaW5uaW5nIG9mCisgICAgICAgIGhlbHBlciBzdGF0aWMgZnVu
Y3Rpb25zIG9yIGluIGVudHJ5cG9pbnQgbWV0aG9kcyBpbiBFQyBhbmQgUlNBIGtleQorICAgICAg
ICBjbGFzc2VzLCBtYWtpbmcgc3VyZSB0aGUgbGlicmFyeSBpcyBpbml0aWFsaXplZCBiZWZvcmUg
YW55IGxpYmdjcnlwdAorICAgICAgICBBUEkgaXMgdXNlZC4KKworICAgICAgICAqIGNyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpnY3J5cHRFbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6OmdjcnlwdERlY3J5cHQpOgorICAg
ICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NUUkdDcnlwdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpnY3J5cHRBRVNfQ1RSKToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0
L0NyeXB0b0FsZ29yaXRobUFFU19HQ01HQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2Ny
eXB0RW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHREZWNyeXB0KToKKyAgICAgICAg
KiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19LV0dDcnlwdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpnY3J5cHRXcmFwS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OmdjcnlwdFVud3Jh
cEtleSk6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RIR0NyeXB0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdjcnlwdERlcml2ZSk6CisgICAgICAgICogY3J5cHRv
L2djcnlwdC9DcnlwdG9BbGdvcml0aG1FQ0RTQUdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpnY3J5cHRTaWduKToKKyAgICAgICAgKFdlYkNvcmU6OmdjcnlwdFZlcmlmeSk6CisgICAgICAg
ICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmdjcnlwdERlcml2ZUJpdHMpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVT
aWduYXR1cmUpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUEJLREYy
R0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdjcnlwdERlcml2ZUJpdHMpOgorICAgICAg
ICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlwdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRFbmNyeXB0KToKKyAgICAgICAgKFdlYkNvcmU6
OmdjcnlwdERlY3J5cHQpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0U2ln
bik6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRWZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Z2NyeXB0RW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHREZWNyeXB0KToKKyAg
ICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9QU1NHQ3J5cHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Z2NyeXB0U2lnbik6CisgICAgICAgIChXZWJDb3JlOjpnY3J5cHRW
ZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtR2VuZXJhdGVQYWlyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydFJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRKV0tQdWJsaWMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0SldLUHJpdmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9LZXlFQzo6cGxhdGZvcm1FeHBvcnRSYXcpOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtQWRkRmllbGRFbGVtZW50cyk6CisgICAgICAg
ICogY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvS2V5UlNBOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNB
OjpnZW5lcmF0ZVBhaXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5UlNBOjpidWlsZEFs
Z29yaXRobSk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlSU0E6OmV4cG9ydERhdGEpOgor
CiAyMDE3LTA2LTE5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
QVg6IFJlbW92ZSByZWR1bmRhbnQgQVhPYmplY3RDYWNoZTo6dGV4dENoYW5nZWQoUmVuZGVyT2Jq
ZWN0KikuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA4NThlNGZlODNlZTcwM2U4OGU5NzUyMzA0NDdi
YzA0N2U4YWY0NjUzLi4wZDBlYmU4N2VmMDBlMDM5NjczNjAyODMxODY3NmU1MTk0NWM5MmRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNy0wNi0yMCAgWmFuIERvYmVy
c2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dDcnlwdF0gUHJvcGVybHkg
aW5pdGlhbGl6ZSBsaWJnY3J5cHQgYmVmb3JlIHVzaW5nIGl0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM1ODkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gY292ZXJlZCBieSBl
eGlzdGluZyBvbmVzLgorCisgICAgICAgIEFkZCBQQUw6OkdDcnlwdDo6aW5pdGlhbGl6ZSgpLCBh
IGhlbHBlciBmdW5jdGlvbiB0aGF0IGluaXRpYWxpemVzCisgICAgICAgIHRoZSBsaWJnY3J5cHQg
bGlicmFyeSBiZWZvcmUgYW55IEFQSSBjYWxscyBhcmUgbWFkZS4gVGhlIGluaXRpYWxpemF0aW9u
CisgICAgICAgIGlzIGRvbmUgaW4gYSB0aHJlYWQtc2FmZSBtYW5uZXIsIHVzaW5nIHRoZSBzdGQ6
OmNhbGxfb25jZSgpIGFwcHJvYWNoLgorCisgICAgICAgIFBBTDo6R0NyeXB0Ojppbml0aWFsaXpl
KCkgY2FsbCBpcyBhZGRlZCB0byB0aGUgQ3J5cHRvRGlnZXN0OjpjcmVhdGUoKQorICAgICAgICBm
dW5jdGlvbiB0byBtYWtlIHN1cmUgdGhlIGxpYnJhcnkgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlIHRo
ZSBkaWdlc3QKKyAgICAgICAgb3BlcmF0aW9uLgorCisgICAgICAgICogcGFsL1BsYXRmb3JtR1RL
LmNtYWtlOgorICAgICAgICAqIHBhbC9QbGF0Zm9ybVdQRS5jbWFrZToKKyAgICAgICAgKiBwYWwv
Y3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwOgorICAgICAgICAoUEFMOjpDcnlw
dG9EaWdlc3Q6OmNyZWF0ZSk6CisgICAgICAgICogcGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0aWVz
LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L1V0
aWxpdGllcy5oLgorICAgICAgICAoUEFMOjpHQ3J5cHQ6OmluaXRpYWxpemUpOgorICAgICAgICAq
IHBhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5oOgorCiAyMDE3LTA2LTE5ICBaYW4gRG9iZXJz
ZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZp
eCBhZnRlciByMjE4NDg0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0
Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggNzc1YzE4OTg0YWU4OWI5Y2VhYWIyNWI1N2ZkYTA2YTFhMTVmYzYzYi4uOGUyZTBiOTZh
M2U5ZjBkN2EwZDI1OTYxODAyOGM5OTNiMGQ5MmJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0xLDMgKzEsNCBAQAogbGlzdChBUFBFTkQgUEFMX1NPVVJD
RVMKICAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKyAgICBjcnlwdG8v
Z2NyeXB0L1V0aWxpdGllcy5jcHAKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvUGxhdGZvcm1XUEUuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV1BF
LmNtYWtlCmluZGV4IDc3NWMxODk4NGFlODliOWNlYWFiMjViNTdmZGEwNmExYTE1ZmM2M2IuLjhl
MmUwYjk2YTNlOWYwZDdhMGQyNTk2MTgwMjhjOTkzYjBkOTJiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XUEUuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtMSwzICsxLDQgQEAKIGxpc3QoQVBQRU5EIFBB
TF9TT1VSQ0VTCiAgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCisgICAg
Y3J5cHRvL2djcnlwdC9VdGlsaXRpZXMuY3BwCiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCmluZGV4
IDBhNzhhZTBjM2I4ZDcwMDg2MDc3MzM1YWUzZTMyZWZhYTkxMzk2ZDguLmI4NGJlYWJkMmRlZjE4
NjZkNTg3NmUxNTI5YWQyMzkyYTAzZTE3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCkBAIC0y
Nyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0
LmgiCiAKLSNpbmNsdWRlIDxnY3J5cHQuaD4KKyNpbmNsdWRlICJVdGlsaXRpZXMuaCIKIAogbmFt
ZXNwYWNlIFBBTCB7CiAKQEAgLTQ3LDggKzQ3LDkgQEAgQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGln
ZXN0KCkKIAogc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVh
dGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQogewotICAgIGludCBnY3J5cHRB
bGdvcml0aG07CisgICAgR0NyeXB0Ojppbml0aWFsaXplKCk7CiAKKyAgICBpbnQgZ2NyeXB0QWxn
b3JpdGhtOwogICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CiAgICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzE6CiAgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hB
MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9VdGls
aXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGll
cy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzYzOGIxYTQxNzg3NmQyMGJiNjRmZDRiNWEwMTg0ZGY1ZDIxMjUw
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlw
dC9VdGlsaXRpZXMuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEg
Uy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVXRpbGl0aWVz
LmgiCisKKyNpbmNsdWRlIDxjc3RkbGliPgorI2luY2x1ZGUgPG11dGV4PgorCituYW1lc3BhY2Ug
UEFMIHsKK25hbWVzcGFjZSBHQ3J5cHQgeworCit2b2lkIGluaXRpYWxpemUoKQoreworICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxh
ZywgW10geworICAgICAgICAvLyBBYm9ydCBpZiB3ZSdyZSBzb21laG93IHJ1bm5pbmcgYWdhaW5z
dCBhIGxpYmdjcnlwdCBsaWJyYXJ5IHRoYXQgaXMKKyAgICAgICAgLy8gb2YgbG93ZXIgdmVyc2lv
biB0aGFuIDEuNy4wLCB3aGljaCBpcyB0aGUgdmVyc2lvbiB3ZSBkZW1hbmQgYXQKKyAgICAgICAg
Ly8gY29uZmlndXJlLXRpbWUuCisgICAgICAgIGlmICghZ2NyeV9jaGVja192ZXJzaW9uKCIxLjcu
MCIpKQorICAgICAgICAgICAgc3RkOjphYm9ydCgpOworCisgICAgICAgIC8vIENvbXBsZXRlIHRo
ZSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgZ2NyeV9jb250cm9sKEdDUllDVExfSU5JVElBTEla
QVRJT05fRklOSVNIRUQsIG51bGxwdHIpOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBQ
QUwKK30gLy8gbmFtZXNwYWNlIEdDcnlwdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9jcnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
cnlwdG8vZ2NyeXB0L1V0aWxpdGllcy5oCmluZGV4IGE3ODg0OGUzNzc2Yzc1M2UwN2YzZDhhYmYx
NzViNjQ5OTY4ZmM0ODUuLmE4ODJlMjg4OTY1ODdkMzllN2M1YzZkMTNkMDAwMzFiNjRmOWY1YjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9VdGlsaXRp
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvVXRpbGl0aWVz
LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgPGdjcnlwdC5oPgogI2luY2x1ZGUgPHd0
Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBQ
QUwgewogbmFtZXNwYWNlIEdDcnlwdCB7CkBAIC00MSw2ICs0Miw4IEBAIG5hbWVzcGFjZSBHQ3J5
cHQgewogCiB1c2luZyBDaXBoZXJPcGVyYXRpb24gPSBnY3J5X2Vycm9yX3QoZ2NyeV9jaXBoZXJf
aGRfdCwgdm9pZCosIHNpemVfdCwgY29uc3Qgdm9pZCosIHNpemVfdCk7CiAKK3ZvaWQgaW5pdGlh
bGl6ZSgpOworCiBzdGF0aWMgaW5saW5lIHZvaWQgbG9nRXJyb3IoZ2NyeV9lcnJvcl90IGVycm9y
KQogewogICAgIFdURkxvZ0Fsd2F5cygibGliZ2NyeXB0IGVycm9yOiBzb3VyY2UgJyVzJywgZGVz
Y3JpcHRpb24gJyVzJyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0
L0NyeXB0b0FsZ29yaXRobUFFU19DQkNHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR0NyeXB0LmNwcAppbmRleCA2NDUzNTk3ZTRm
MjlkODNmZDhjMWFmNzJlNTdhMTZjYjg5ZjAwNWI1Li5lZTg3YTNkOWEwMWU0OTEzZjE2NjNmM2Iy
ZTg5Mzk1YjEwMDUyMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0
L0NyeXB0b0FsZ29yaXRobUFFU19DQkNHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dDcnlwdC5jcHAKQEAgLTQwLDYgKzQw
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGdjcnlwdEVuY3J5cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgaXYsIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCkKIHsKKyAg
ICBQQUw6OkdDcnlwdDo6aW5pdGlhbGl6ZSgpOworCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBBRVMg
YWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4ga2V5IHNpemUuCiAgICAgYXV0byBhbGdvcml0aG0gPSBQ
QUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7CiAgICAg
aWYgKCFhbGdvcml0aG0pCkBAIC0xMDMsNiArMTA1LDggQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5
LAogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlY3J5cHQo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgY2lwaGVyVGV4dCkKIHsKKyAgICBQQUw6OkdDcnlwdDo6aW5p
dGlhbGl6ZSgpOworCiAgICAgLy8gRGV0ZXJtaW5lIHRoZSBBRVMgYWxnb3JpdGhtIGZvciB0aGUg
Z2l2ZW4ga2V5IHNpemUuCiAgICAgYXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxn
b3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7CiAgICAgaWYgKCFhbGdvcml0aG0pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFF
U19DVFJHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1BRVNfQ1RSR0NyeXB0LmNwcAppbmRleCA2ZGNmNzlhNzNmNDU3MmE1MWIyMGFmMmJjNThm
ZWE4MDY1ZmFmYTNjLi43MWYxYTRlNzVlZDU2ZWU2MjRiYzk4ZDI3MDk2YWNlNDUxY2VhYmEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFF
U19DVFJHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRv
QWxnb3JpdGhtQUVTX0NUUkdDcnlwdC5jcHAKQEAgLTczLDYgKzczLDggQEAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjYWxsT3BlcmF0aW9uKFBBTDo6R0NyeXB0OjpDaXBo
ZXJPcGVyYXRpb24KIAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5
cHRBRVNfQ1RSKFBBTDo6R0NyeXB0OjpDaXBoZXJPcGVyYXRpb24gb3BlcmF0aW9uLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjb3VudGVyLCBzaXpl
X3QgY291bnRlckxlbmd0aCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbnB1dFRleHQpCiB7Cisg
ICAgUEFMOjpHQ3J5cHQ6OmluaXRpYWxpemUoKTsKKwogICAgIGNvbnN0ZXhwciBzaXplX3QgYmxv
Y2tTaXplID0gMTY7CiAgICAgYXV0byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxnb3Jp
dGhtRm9yS2V5U2l6ZShrZXkuc2l6ZSgpICogOCk7CiAgICAgaWYgKCFhbGdvcml0aG0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19H
Q01HQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1BRVNfR0NNR0NyeXB0LmNwcAppbmRleCA2ODEzNGM0YjY1NzExYjRkZDU1OWNhOGIwOTM1OTg0
YThmMTExOTEzLi5jNTFlMmIxNTQzNGRhZjdlZjI4NDg1MGY3NTVkZTg5MTU4MTg0ZmZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19H
Q01HQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxn
b3JpdGhtQUVTX0dDTUdDcnlwdC5jcHAKQEAgLTQzLDYgKzQzLDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdEVuY3J5
cHQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaXYs
IFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhZGRp
dGlvbmFsRGF0YSwgdWludDhfdCB0YWdMZW5ndGgpCiB7CisgICAgUEFMOjpHQ3J5cHQ6OmluaXRp
YWxpemUoKTsKKwogICAgIC8vIERldGVybWluZSB0aGUgQUVTIGFsZ29yaXRobSBmb3IgdGhlIGdp
dmVuIGtleSBzaXplLgogICAgIGF1dG8gYWxnb3JpdGhtID0gUEFMOjpHQ3J5cHQ6OmFlc0FsZ29y
aXRobUZvcktleVNpemUoa2V5LnNpemUoKSAqIDgpOwogICAgIGlmICghYWxnb3JpdGhtKQpAQCAt
MTExLDYgKzExMyw4IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2Ny
eXB0RW5jcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwKIAogc3RhdGljIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGl2LCBWZWN0b3I8dWludDhfdD4mJiBjaXBo
ZXJUZXh0LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGFkZGl0aW9uYWxEYXRhLCB1aW50OF90IHRh
Z0xlbmd0aCkKIHsKKyAgICBQQUw6OkdDcnlwdDo6aW5pdGlhbGl6ZSgpOworCiAgICAgLy8gRGV0
ZXJtaW5lIHRoZSBBRVMgYWxnb3JpdGhtIGZvciB0aGUgZ2l2ZW4ga2V5IHNpemUuCiAgICAgYXV0
byBhbGdvcml0aG0gPSBQQUw6OkdDcnlwdDo6YWVzQWxnb3JpdGhtRm9yS2V5U2l6ZShrZXkuc2l6
ZSgpICogOCk7CiAgICAgaWYgKCFhbGdvcml0aG0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19LV0dDcnlwdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUFFU19LV0dDcnlwdC5jcHAKaW5k
ZXggOGFlY2E2Y2IzYjcxNzc0Y2MwYjA1NjEwZjBjMzUwODAzMTEwMjk2NS4uNzc4NmE5NzFkZjVi
ZDNkZTkxNTI5ZmI2NDZlMTc1OWZlNWQ1ZjdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1BRVNfS1dHQ3J5cHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtQUVTX0tXR0NyeXB0LmNwcApA
QCAtMzksNiArMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0V3JhcEtleShjb25zdCBWZWN0b3I8dWludDhfdD4m
IGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogeworICAgIFBBTDo6R0NyeXB0Ojpp
bml0aWFsaXplKCk7CisKICAgICAvLyBEZXRlcm1pbmUgdGhlIEFFUyBhbGdvcml0aG0gZm9yIHRo
ZSBnaXZlbiBrZXkgc2l6ZS4KICAgICBhdXRvIGFsZ29yaXRobSA9IFBBTDo6R0NyeXB0OjphZXNB
bGdvcml0aG1Gb3JLZXlTaXplKGtleS5zaXplKCkgKiA4KTsKICAgICBpZiAoIWFsZ29yaXRobSkK
QEAgLTc5LDYgKzgxLDggQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBn
Y3J5cHRXcmFwS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LAogCiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFVud3JhcEtleShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogeworICAgIFBBTDo6R0Ny
eXB0Ojppbml0aWFsaXplKCk7CisKICAgICAvLyBEZXRlcm1pbmUgdGhlIEFFUyBhbGdvcml0aG0g
Zm9yIHRoZSBnaXZlbiBrZXkgc2l6ZS4KICAgICBhdXRvIGFsZ29yaXRobSA9IFBBTDo6R0NyeXB0
OjphZXNBbGdvcml0aG1Gb3JLZXlTaXplKGtleS5zaXplKCkgKiA4KTsKICAgICBpZiAoIWFsZ29y
aXRobSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxn
b3JpdGhtRUNESEdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0FsZ29yaXRobUVDREhHQ3J5cHQuY3BwCmluZGV4IGM1ZTZkNjY5NTE1NWViNGE5ZWMwNzU0ZGQx
NjZhZTI2YmU4MDkzNGYuLjI3NmNlYTZiYjY1NWU1NWM4YmZiMTBkNTc2MWUzNzhkNmVjNmQxZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
RUNESEdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1FQ0RIR0NyeXB0LmNwcApAQCAtMzksNiArMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVyaXZl
KGdjcnlfc2V4cF90IGJhc2VLZXlTZXhwLCBnY3J5X3NleHBfdCBwdWJsaWNLZXlTZXhwKQogewor
ICAgIFBBTDo6R0NyeXB0Ojppbml0aWFsaXplKCk7CisKICAgICAvLyBGaXJzdCwgcmV0cmlldmUg
cHJpdmF0ZSBrZXkgZGF0YSwgd2hpY2ggaXMgcm91Z2hseSBvZiB0aGUgZm9sbG93aW5nIGZvcm06
CiAgICAgLy8gKHByaXZhdGUta2V5CiAgICAgLy8gICAoZWNjCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUVDRFNBR0NyeXB0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3Bw
CmluZGV4IDQ0YjAwOTMxM2I2MjNiOGRmN2Y2MTBjMGFjNWFlZjQyZWZiZTE0ZTguLmMyNDQ4YTg3
ZTM2YWU1M2I5NjQxYzM5NzRhZmExNjE0YTgxYzdjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtRUNEU0FHQ3J5cHQuY3Bw
CkBAIC02Niw2ICs2Niw4IEBAIHN0YXRpYyBib29sIGV4dHJhY3RFQ0RTQVNpZ25hdHVyZUludGVn
ZXIoVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGdjcnlfc2V4cF90CiAKIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBrZXlTZXhw
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aGFzaEFsZ29yaXRobUlkZW50aWZpZXIsIHNpemVfdCBrZXlTaXplSW5CeXRlcykKIHsKKyAgICBQ
QUw6OkdDcnlwdDo6aW5pdGlhbGl6ZSgpOworCiAgICAgLy8gUGVyZm9ybSBkaWdlc3Qgb3BlcmF0
aW9uIHdpdGggdGhlIHNwZWNpZmllZCBhbGdvcml0aG0gb24gdGhlIGdpdmVuIGRhdGEuCiAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGFIYXNoOwogICAgIHsKQEAgLTEyMiw2ICsxMjQsOCBAQCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qg
a2V5U2V4cCwgY29uc3QgVmVjdAogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBnY3J5cHRW
ZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1
cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciBoYXNoQWxnb3JpdGhtSWRlbnRpZmllciwgc2l6ZV90IGtleVNpemVJbkJ5dGVzKQogeworICAg
IFBBTDo6R0NyeXB0Ojppbml0aWFsaXplKCk7CisKICAgICAvLyBCYWlsIGlmIHRoZSBzaWduYXR1
cmUgc2l6ZSBpc24ndCBkb3VibGUgdGhlIGtleSBzaXplIChpLmUuIGNvbmNhdGVuYXRlZCByIGFu
ZCBzIGNvbXBvbmVudHMpLgogICAgIGlmIChzaWduYXR1cmUuc2l6ZSgpICE9IGtleVNpemVJbkJ5
dGVzICogMikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAKaW5kZXgg
MTFhYjE5Njk3YzA1MDYxNjIwMDBmZjc3MjFiODg2M2RlNDc4MTU0Yi4uY2JkODE1MWMwN2YwMGE4
NzQ4NThmMGMwNzU4NzczODIzMTlkNGFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwCkBAIC00NCw2
ICs0NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBnY3J5cHREZXJpdmVCaXRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNhbHQsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaW5m
bywgc2l6ZV90IGxlbmd0aEluQnl0ZXMsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRp
ZmllcikKIHsKKyAgICBQQUw6OkdDcnlwdDo6aW5pdGlhbGl6ZSgpOworCiAgICAgLy8gbGliZ2Ny
eXB0IGRvZXNuJ3QgcHJvdmlkZSBIS0RGIHN1cHBvcnQsIHNvIHdlIGhhdmUgdG8gaW1wbGVtZW50
CiAgICAgLy8gdGhlIGZ1bmN0aW9uYWxpdHkgb3Vyc2VsdmVzIGFzIHNwZWNpZmllZCBpbiBSRkM1
ODY5LgogICAgIC8vIGh0dHBzOi8vd3d3LmlldGYub3JnL3JmYy9yZmM1ODY5LnR4dApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFDR0Ny
eXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1B
Q0dDcnlwdC5jcHAKaW5kZXggMjI0ODAzZWUzNDg3MDZjOGM1MWQ5MmRiYzE0NWM4ZWExY2JlNDlk
MC4uOTQzYmJkMDc2ZDUxY2I3MzczODAyNzRiZWM2NzA4MTNlMzE3OGU0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFDR0NyeXB0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNH
Q3J5cHQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvY3J5cHRv
L2djcnlwdC9IYW5kbGUuaD4KKyNpbmNsdWRlIDxwYWwvY3J5cHRvL2djcnlwdC9VdGlsaXRpZXMu
aD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC02MCw2ICs2MSw4IEBAIHN0YXRpYyBpbnQgZ2V0R0NyeXB0RGlnZXN0QWxn
b3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQogCiBzdGF0aWMg
c3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNhbGN1bGF0ZVNpZ25hdHVyZShpbnQgYWxn
b3JpdGhtLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpCiB7CisgICAgUEFMOjpHQ3J5cHQ6OmluaXRpYWxpemUoKTsKKwog
ICAgIGNvbnN0IHZvaWQqIGtleURhdGEgPSBrZXkuZGF0YSgpID8ga2V5LmRhdGEoKSA6IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCIiKTsKIAogICAgIFBBTDo6R0NyeXB0OjpIYW5k
bGU8Z2NyeV9tYWNfaGRfdD4gaGQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHAKaW5kZXggMzU2ZGVk
YjJlMmZhNGJkNzFlMTk5YTNhZjQ4NzYyZDE4YWY5NDU4NC4uZTA3N2E2ZjA3ZTc1YjAyZWRhZTky
ZmZkNjJhOTQwZWZlZGFmNDQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dj
cnlwdC9DcnlwdG9BbGdvcml0aG1QQktERjJHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUEJLREYyR0NyeXB0LmNwcApAQCAtNDAsNiAr
NDAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gZ2NyeXB0RGVyaXZlQml0cyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleURh
dGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgc2FsdERhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIgaGFzaElkZW50aWZpZXIsIHNpemVfdCBpdGVyYXRpb25zLCBzaXplX3QgbGVuZ3RoKQog
eworICAgIFBBTDo6R0NyeXB0Ojppbml0aWFsaXplKCk7CisKICAgICAvLyBEZXRlcm1pbmUgdGhl
IGhhc2ggYWxnb3JpdGhtIHRoYXQgd2lsbCBiZSB1c2VkIGZvciBkZXJpdmF0aW9uLgogICAgIGF1
dG8gaGFzaEFsZ29yaXRobSA9IGRpZ2VzdEFsZ29yaXRobShoYXNoSWRlbnRpZmllcik7CiAgICAg
aWYgKCFoYXNoQWxnb3JpdGhtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dj
cnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0NyeXB0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNUdDcnlw
dC5jcHAKaW5kZXggMzc5YjlmNDkwMjU1YzExNjU4YTliNzRjMGIwNDVjNDczZDdiY2M1Ny4uM2Mx
YWMxMmVhN2E3OWE3ODk1NmYzMDY5ZWZmY2M4NTQ4MzgyMjZhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81R0Ny
eXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bVJTQUVTX1BLQ1MxX3YxXzVHQ3J5cHQuY3BwCkBAIC0zOCw2ICszOCw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRF
bmNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIFZlY3Rvcjx1aW50OF90PiYmIHBsYWluVGV4dCkK
IHsKKyAgICBQQUw6OkdDcnlwdDo6aW5pdGlhbGl6ZSgpOworCiAgICAgLy8gRW1iZWQgdGhlIHBs
YWluLXRleHQgZGF0YSBpbiBhIGBkYXRhYCBzLWV4cHJlc3Npb24gdXNpbmcgUEtDUyMxIHBhZGRp
bmcuCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gZGF0YVNleHA7CiAgICAg
Z2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9zZXhwX2J1aWxkKCZkYXRhU2V4cCwgbnVsbHB0ciwg
IihkYXRhKGZsYWdzIHBrY3MxKSh2YWx1ZSAlYikpIiwKQEAgLTY4LDYgKzcwLDggQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHRFbmNyeXB0KGdjcnlfc2V4cF90
IGtleVNleHAsIFZlY3RvcjwKIAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+
PiBnY3J5cHREZWNyeXB0KGdjcnlfc2V4cF90IGtleVNleHAsIFZlY3Rvcjx1aW50OF90PiYmIGNp
cGhlclRleHQpCiB7CisgICAgUEFMOjpHQ3J5cHQ6OmluaXRpYWxpemUoKTsKKwogICAgIC8vIEVt
YmVkIHRoZSBjaXBoZXItdGV4dCBkYXRhIGluIGFuIGBlbmMtdmFsYCBzLWV4cHJlc3Npb24gdXNp
bmcgUEtDUyMxIHBhZGRpbmcuCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4g
ZW5jVmFsU2V4cDsKICAgICBnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X3NleHBfYnVpbGQoJmVu
Y1ZhbFNleHAsIG51bGxwdHIsICIoZW5jLXZhbChmbGFncyBwa2NzMSkocnNhKGEgJWIpKSkiLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1S
U0FTU0FfUEtDUzFfdjFfNUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0
L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcAppbmRleCA3NDAxMTlk
ZjVlZTJiY2M2YTI1YmM3ZDRlODc5NDkyNDQ4MGVhNjNhLi5lYWM2ODZkOWE1Y2VmN2EwZThiYmVh
NzBmYTNkM2I1MjFjNzYwYmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81R0NyeXB0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81
R0NyeXB0LmNwcApAQCAtNDAsNiArNDAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBr
ZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50aWZpZXIpCiB7CisgICAgUEFMOjpHQ3J5cHQ6OmluaXRp
YWxpemUoKTsKKwogICAgIC8vIFBlcmZvcm0gZGlnZXN0IG9wZXJhdGlvbiB3aXRoIHRoZSBzcGVj
aWZpZWQgYWxnb3JpdGhtIG9uIHRoZSBnaXZlbiBkYXRhLgogICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhSGFzaDsKICAgICB7CkBAIC05MSw2ICs5Myw4IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2lnbihnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0
CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGJvb2w+IGdjcnlwdFZlcmlmeShnY3J5X3NleHBfdCBr
ZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBkYXRhLCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVu
dGlmaWVyKQogeworICAgIFBBTDo6R0NyeXB0Ojppbml0aWFsaXplKCk7CisKICAgICAvLyBQZXJm
b3JtIGRpZ2VzdCBvcGVyYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIGFsZ29yaXRobSBvbiB0aGUg
Z2l2ZW4gZGF0YS4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YUhhc2g7CiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1SU0FfT0FF
UEdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQR0NyeXB0LmNwcAppbmRleCBiZjg5NzExNDY1Yjk0OGIwYmRmYjIwYmY4MTQ0MDIx
YzJmZmVlM2M2Li4xNzkxOTM1ZTkxZDIzMjA4ZWE2MzU3MzkyZjE2Y2JiYzVkN2NmNDJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVJTQV9P
QUVQR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQR0NyeXB0LmNwcApAQCAtMzksNiArMzksOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5j
cnlwdChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1JZGVudGlmaWVyLCBn
Y3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGxhYmVsVmVjdG9yLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHBsYWluVGV4dCkKIHsKKyAgICBQQUw6OkdDcnlwdDo6aW5p
dGlhbGl6ZSgpOworCiAgICAgLy8gRW1iZWQgdGhlIHBsYWluLXRleHQgZGF0YSBpbiBhIGRhdGEg
cy1leHByZXNzaW9uIHVzaW5nIE9BRVAgcGFkZGluZy4KICAgICAvLyBFbXB0eSBsYWJlbCBkYXRh
IGlzIHByb3Blcmx5IGhhbmRsZWQgYnkgZ2NyeV9zZXhwX2J1aWxkKCkuCiAgICAgUEFMOjpHQ3J5
cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gZGF0YVNleHA7CkBAIC03Nyw2ICs3OSw4IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RW5jcnlwdChDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIGhhCiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90
Pj4gZ2NyeXB0RGVjcnlwdChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hBbGdvcml0aG1J
ZGVudGlmaWVyLCBnY3J5X3NleHBfdCBrZXlTZXhwLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGxh
YmVsVmVjdG9yLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGNpcGhlclRleHQpCiB7CisgICAgUEFM
OjpHQ3J5cHQ6OmluaXRpYWxpemUoKTsKKwogICAgIC8vIEVtYmVkIHRoZSBjaXBoZXItdGV4dCBk
YXRhIGluIGFuIGVuYy12YWwgcy1leHByZXNzaW9uIHVzaW5nIE9BRVAgcGFkZGluZy4KICAgICAv
LyBFbXB0eSBsYWJlbCBkYXRhIGlzIHByb3Blcmx5IGhhbmRsZWQgYnkgZ2NyeV9zZXhwX2J1aWxk
KCkuCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X3NleHBfdD4gZW5jVmFsU2V4cDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNB
X1BTU0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobVJTQV9QU1NHQ3J5cHQuY3BwCmluZGV4IGQ0OTJlYWQ5Nzk4MTYyNWRiZjAxNGU2ZDU0ZWRj
NTVkZDUzNGRmZDMuLjg1MWNhNjRhOGYyZjAwYjM5MzM3MTJjNDg3YzY4ODgzOGE0ZmYxNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUlNB
X1BTU0dDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9B
bGdvcml0aG1SU0FfUFNTR0NyeXB0LmNwcApAQCAtNDAsNiArNDAsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0U2ln
bihnY3J5X3NleHBfdCBrZXlTZXhwLCBzaXplX3Qga2V5TGVuZ3RoLCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGRhdGEsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEFsZ29yaXRobUlkZW50
aWZpZXIsIHNpemVfdCBzYWx0TGVuZ3RoKQogeworICAgIFBBTDo6R0NyeXB0Ojppbml0aWFsaXpl
KCk7CisKICAgICAvLyBQZXJmb3JtIGRpZ2VzdCBvcGVyYXRpb24gd2l0aCB0aGUgc3BlY2lmaWVk
IGFsZ29yaXRobSBvbiB0aGUgZ2l2ZW4gZGF0YS4KICAgICBWZWN0b3I8dWludDhfdD4gZGF0YUhh
c2g7CiAgICAgewpAQCAtOTYsNiArOTgsOCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8
dWludDhfdD4+IGdjcnlwdFNpZ24oZ2NyeV9zZXhwX3Qga2V5U2V4cCwgc2l6ZV90IGtleQogCiBz
dGF0aWMgc3RkOjpvcHRpb25hbDxib29sPiBnY3J5cHRWZXJpZnkoZ2NyeV9zZXhwX3Qga2V5U2V4
cCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgZGF0YSwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoQWxnb3JpdGhtSWRlbnRpZmll
ciwgc2l6ZV90IHNhbHRMZW5ndGgpCiB7CisgICAgUEFMOjpHQ3J5cHQ6OmluaXRpYWxpemUoKTsK
KwogICAgIC8vIFBlcmZvcm0gZGlnZXN0IG9wZXJhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgYWxn
b3JpdGhtIG9uIHRoZSBnaXZlbiBkYXRhLgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhSGFzaDsK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tl
eUVDR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNH
Q3J5cHQuY3BwCmluZGV4IDVlZmZkNmM2YTIwYTc0YTQzOGE0OTJkMDU1ODc2MWNiMzg5NTRhZWIu
LmE0Njc1NWVhMWFjMTg1MDQwZWQ0ZTNhNjQ2YWY2MjZlNzMzNmQ4MmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwCkBAIC0xMDUs
NiArMTA1LDggQEAgc2l6ZV90IENyeXB0b0tleUVDOjprZXlTaXplSW5CaXRzKCkgY29uc3QKIAog
c3RkOjpvcHRpb25hbDxDcnlwdG9LZXlQYWlyPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1HZW5lcmF0
ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBOYW1lZEN1cnZlIGN1
cnZlLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCiB7Cisg
ICAgUEFMOjpHQ3J5cHQ6OmluaXRpYWxpemUoKTsKKwogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8
Z2NyeV9zZXhwX3Q+IGdlbmtleVNleHA7CiAgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9z
ZXhwX2J1aWxkKCZnZW5rZXlTZXhwLCBudWxscHRyLCAiKGdlbmtleShlY2MoY3VydmUgJXMpKSki
LCBjdXJ2ZU5hbWUoY3VydmUpKTsKICAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19FUlJPUikg
ewpAQCAtMTMxLDYgKzEzMyw4IEBAIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvS2V5UGFpcj4gQ3J5cHRv
S2V5RUM6OnBsYXRmb3JtR2VuZXJhdGVQYWlyKENyeXB0b0FsZ29yaXRobUlkCiAKIFJlZlB0cjxD
cnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0UmF3KENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgaWRlbnRpZmllciwgTmFtZWRDdXJ2ZSBjdXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+
JiYga2V5RGF0YSwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2Vz
KQogeworICAgIFBBTDo6R0NyeXB0Ojppbml0aWFsaXplKCk7CisKICAgICBpZiAoa2V5RGF0YS5z
aXplKCkgIT0gdW5jb21wcmVzc2VkUG9pbnRTaXplRm9yQ3VydmUoY3VydmUpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIApAQCAtMTQ3LDYgKzE1MSw4IEBAIFJlZlB0cjxDcnlwdG9LZXlFQz4g
Q3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0UmF3KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aWRlCiAKIFJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtSW1wb3J0SldL
UHVibGljKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllciwgTmFtZWRDdXJ2ZSBj
dXJ2ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgeCwgVmVjdG9yPHVpbnQ4X3Q+JiYgeSwgYm9vbCBleHRy
YWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogeworICAgIFBBTDo6R0NyeXB0
Ojppbml0aWFsaXplKCk7CisKICAgICB1bnNpZ25lZCB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRT
aXplID0gdW5jb21wcmVzc2VkRmllbGRFbGVtZW50U2l6ZUZvckN1cnZlKGN1cnZlKTsKICAgICBp
ZiAoeC5zaXplKCkgIT0gdW5jb21wcmVzc2VkRmllbGRFbGVtZW50U2l6ZSB8fCB5LnNpemUoKSAh
PSB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTE3MSw2ICsxNzcsOCBAQCBSZWZQdHI8Q3J5cHRvS2V5RUM+IENyeXB0b0tleUVDOjpwbGF0
Zm9ybUltcG9ydEpXS1B1YmxpYyhDcnlwdG9BbGdvcml0aG1JZGVudGlmaQogCiBSZWZQdHI8Q3J5
cHRvS2V5RUM+IENyeXB0b0tleUVDOjpwbGF0Zm9ybUltcG9ydEpXS1ByaXZhdGUoQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVyLCBOYW1lZEN1cnZlIGN1cnZlLCBWZWN0b3I8dWlu
dDhfdD4mJiB4LCBWZWN0b3I8dWludDhfdD4mJiB5LCBWZWN0b3I8dWludDhfdD4mJiBkLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCiB7CisgICAgUEFMOjpH
Q3J5cHQ6OmluaXRpYWxpemUoKTsKKwogICAgIHVuc2lnbmVkIHVuY29tcHJlc3NlZEZpZWxkRWxl
bWVudFNpemUgPSB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplRm9yQ3VydmUoY3VydmUpOwog
ICAgIGlmICh4LnNpemUoKSAhPSB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplIHx8IHkuc2l6
ZSgpICE9IHVuY29tcHJlc3NlZEZpZWxkRWxlbWVudFNpemUgfHwgZC5zaXplKCkgIT0gdW5jb21w
cmVzc2VkRmllbGRFbGVtZW50U2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yMDks
NiArMjE3LDggQEAgUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBv
cnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLAogCiBWZWN0b3I8dWludDhfdD4gQ3J5
cHRvS2V5RUM6OnBsYXRmb3JtRXhwb3J0UmF3KCkgY29uc3QKIHsKKyAgICBQQUw6OkdDcnlwdDo6
aW5pdGlhbGl6ZSgpOworCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X2N0eF90PiBjb250
ZXh0OwogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfbXBpX2VjX25ldygmY29udGV4dCwg
bV9wbGF0Zm9ybUtleSwgbnVsbHB0cik7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJS
T1IpIHsKQEAgLTIyOSw2ICsyMzksOCBAQCBWZWN0b3I8dWludDhfdD4gQ3J5cHRvS2V5RUM6OnBs
YXRmb3JtRXhwb3J0UmF3KCkgY29uc3QKIAogdm9pZCBDcnlwdG9LZXlFQzo6cGxhdGZvcm1BZGRG
aWVsZEVsZW1lbnRzKEpzb25XZWJLZXkmIGp3aykgY29uc3QKIHsKKyAgICBQQUw6OkdDcnlwdDo6
aW5pdGlhbGl6ZSgpOworCiAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X2N0eF90PiBjb250
ZXh0OwogICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfbXBpX2VjX25ldygmY29udGV4dCwg
bV9wbGF0Zm9ybUtleSwgbnVsbHB0cik7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJS
T1IpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5
UlNBR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNB
R0NyeXB0LmNwcAppbmRleCAxMjQ1YmUyYTc1NmRkODk3MWQ0NDAyMzlkY2Q5ZmI5NGUyYTRiMGJj
Li42NmEzZDhjM2ZhM2JiYmE2ZTQ5ZTZlYjY5YmE1OWU0NDdiYmI0YjBkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlSU0FHQ3J5cHQuY3BwCkBAIC03
Miw2ICs3Miw4IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gZ2V0UlNBS2V5UGFyYW1ldGVyKGdj
cnlfc2V4cF90IGtleVNleHAsIGNvbnN0IGNoYXIqIG5hbWUpCiAKIFJlZlB0cjxDcnlwdG9LZXlS
U0E+IENyeXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRp
ZmllciwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29sIGhhc0hhc2gsIGNvbnN0
IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzJiBrZXlEYXRhLCBib29sIGV4dHJhY3RhYmxlLCBD
cnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCiB7CisgICAgUEFMOjpHQ3J5cHQ6OmluaXRpYWxp
emUoKTsKKwogICAgIC8vIFdoZW4gY3JlYXRpbmcgYSBwcml2YXRlIGtleSwgd2UgcmVxdWlyZSB0
aGUgcCBhbmQgcSBwcmltZSBpbmZvcm1hdGlvbi4KICAgICBpZiAoa2V5RGF0YS50eXBlKCkgPT0g
Q3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OlR5cGU6OlByaXZhdGUgJiYgIWtleURhdGEuaGFz
QWRkaXRpb25hbFByaXZhdGVLZXlQYXJhbWV0ZXJzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTkzLDYgKzE5NSw4IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBleHBv
bmVudFZlY3RvclRvVUludDMyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZXhwCiAKIHZvaWQgQ3J5
cHRvS2V5UlNBOjpnZW5lcmF0ZVBhaXIoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBhbGdvcml0
aG0sIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9vbCBoYXNIYXNoLCB1bnNpZ25l
ZCBtb2R1bHVzTGVuZ3RoLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHB1YmxpY0V4cG9uZW50LCBi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZSwgS2V5UGFpckNhbGxi
YWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKKyAgICBQQUw6OkdDcnlwdDo6aW5pdGlhbGl6ZSgp
OworCiAgICAgLy8gbGliZ2NyeXB0IGRvZXNuJ3QgcmVwb3J0IGFuIGVycm9yIGlmIHRoZSBleHBv
bmVudCBpcyBzbWFsbGVyIHRoYW4gdGhyZWUgb3IgZXZlbi4KICAgICBhdXRvIGUgPSBleHBvbmVu
dFZlY3RvclRvVUludDMyKHB1YmxpY0V4cG9uZW50KTsKICAgICBpZiAoIWUgfHwgKmUgPCAzIHx8
ICEoKmUgJiAweDEpKSB7CkBAIC0yNzAsNiArMjc0LDggQEAgRXhjZXB0aW9uT3I8VmVjdG9yPHVp
bnQ4X3Q+PiBDcnlwdG9LZXlSU0E6OmV4cG9ydFBrY3M4KCkgY29uc3QKIAogc3RkOjp1bmlxdWVf
cHRyPEtleUFsZ29yaXRobT4gQ3J5cHRvS2V5UlNBOjpidWlsZEFsZ29yaXRobSgpIGNvbnN0CiB7
CisgICAgUEFMOjpHQ3J5cHQ6OmluaXRpYWxpemUoKTsKKwogICAgIFN0cmluZyBuYW1lID0gQ3J5
cHRvQWxnb3JpdGhtUmVnaXN0cnk6OnNpbmdsZXRvbigpLm5hbWUoYWxnb3JpdGhtSWRlbnRpZmll
cigpKTsKICAgICBzaXplX3QgbW9kdWx1c0xlbmd0aCA9IGdldFJTQU1vZHVsdXNMZW5ndGgobV9w
bGF0Zm9ybUtleSk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHB1YmxpY0V4cG9uZW50ID0gZ2V0UlNB
S2V5UGFyYW1ldGVyKG1fcGxhdGZvcm1LZXksICJlIik7CkBAIC0yODEsNiArMjg3LDggQEAgc3Rk
Ojp1bmlxdWVfcHRyPEtleUFsZ29yaXRobT4gQ3J5cHRvS2V5UlNBOjpidWlsZEFsZ29yaXRobSgp
IGNvbnN0CiAKIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBDcnlwdG9LZXlSU0E6OmV4
cG9ydERhdGEoKSBjb25zdAogeworICAgIFBBTDo6R0NyeXB0Ojppbml0aWFsaXplKCk7CisKICAg
ICBBU1NFUlQoZXh0cmFjdGFibGUoKSk7CiAKICAgICBzd2l0Y2ggKHR5cGUoKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313848</attachid>
            <date>2017-06-26 09:51:27 -0700</date>
            <delta_ts>2017-06-26 11:01:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173589-20170626185126.patch</filename>
            <type>text/plain</type>
            <size>2263</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4ODA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzQ3NzExNTVlMjQ2YTk0
MGMzNjljM2QxMTA0YTA0NmFjMmQxNzc1Yi4uYWZhYmFhMWNiMzkxMjk0MWQzZjY3MThlZjEyY2Ey
ZGMxODA2YzdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE3LTA2LTI2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBQcm9w
ZXJseSBpbml0aWFsaXplIGxpYmdjcnlwdCBiZWZvcmUgdXNpbmcgaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzU4OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluaXRpYWxpemUgbGliZ2NyeXB0IGlu
IHRoZSBVbml4LXNwZWNpZmljIG1haW4oKSBlbnRyeXBvaW50LiBUaGlzIGlzIGVhcmx5IGVub3Vn
aAorICAgICAgICB0byBlbnN1cmUgbm8gb3RoZXIgbGliZ2NyeXB0IEFQSSBmdW5jdGlvbiBpcyBp
bnZva2VkIGFuZCB0byBhbHNvIGVuc3VyZSB0aGlzIGlzCisgICAgICAgIGRvbmUgaW4gYSB0aHJl
YWQtc2FmZSBtYW5uZXIuCisKKyAgICAgICAgSW5pdGlhbGl6YXRpb24gaXMgaW5pdGlhdGVkIHRo
cm91Z2ggdGhlIGdjcnlfY2hlY2tfdmVyc2lvbigpIGNhbGwuIDE2IGtpbG9ieXRlcyBvZgorICAg
ICAgICBzZWN1cmUgbWVtb3J5IGlzIHByZS1hbGxvY2F0ZWQgYmVmb3JlIHdlIG1hcmsgdGhlIGlu
aXRpYWxpemF0aW9uIGFzIGNvbXBsZXRlLCBhcworICAgICAgICByZWNvbW1lbmRlZCBieSB0aGUg
bGliZ2NyeXB0IGRvY3VtZW50YXRpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0VudHJ5UG9p
bnQvdW5peC9XZWJQcm9jZXNzTWFpbi5jcHA6CisgICAgICAgIChtYWluKToKKwogMjAxNy0wNi0y
NiAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5kZXgucnU+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgYWRkIG1pc3NpbmcgaGVhZGVyIGljbmNsdWRlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvV2ViUHJvY2Vzc01haW4uY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvV2ViUHJvY2Vzc01haW4u
Y3BwCmluZGV4IDQ4MGY5ZDBjMzY1MWVlYzA1YWUxNGU5MTA1ODJlYzcwMTQ1ZDgwNzYuLjc3N2Qy
ZTc2NWEzZDdjNzk1M2FlNDkyNTljOGE2NzQwZDQyYTBhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRW50cnlQb2ludC91bml4L1dlYlByb2Nlc3NNYWluLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9XZWJQcm9jZXNzTWFp
bi5jcHAKQEAgLTI3LDYgKzI3LDEwIEBACiAKICNpbmNsdWRlIDxjc3RkbGliPgogCisjaWYgVVNF
KEdDUllQVCkKKyNpbmNsdWRlIDxnY3J5cHQuaD4KKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCkBAIC00MSw1ICs0NSwx
NSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgLy8gV0FSTklORzogVGhp
cyBuZWVkcyB0byBiZSBLRVBUIElOIFNZTkMgd2l0aCBXZWJQcm9jZXNzTWFpbi5jcHAuCiAgICAg
c2V0ZW52KCJHX1RMU19HTlVUTFNfUFJJT1JJVFkiLCAiTk9STUFMOiVDT01QQVQ6IVZFUlMtU1NM
My4wOiFBUkNGT1VSLTEyOCIsIDApOwogCisjaWYgVVNFKEdDUllQVCkKKyAgICAvLyBDYWxsIGdj
cnlfY2hlY2tfdmVyc2lvbigpIGJlZm9yZSBhbnkgb3RoZXIgbGliZ2NyeXB0IGNhbGwsIGlnbm9y
aW5nIHRoZQorICAgIC8vIHJldHVybmVkIHZlcnNpb24gc3RyaW5nLgorICAgIGdjcnlfY2hlY2tf
dmVyc2lvbihudWxscHRyKTsKKworICAgIC8vIFByZS1hbGxvY2F0ZSAxNmtCIG9mIHNlY3VyZSBt
ZW1vcnkgYW5kIGZpbmlzaCB0aGUgaW5pdGlhbGl6YXRpb24uCisgICAgZ2NyeV9jb250cm9sKEdD
UllDVExfSU5JVF9TRUNNRU0sIDE2Mzg0LCBudWxscHRyKTsKKyAgICBnY3J5X2NvbnRyb2woR0NS
WUNUTF9JTklUSUFMSVpBVElPTl9GSU5JU0hFRCwgbnVsbHB0cik7CisjZW5kaWYKKwogICAgIHJl
dHVybiBXZWJQcm9jZXNzTWFpblVuaXgoYXJnYywgYXJndik7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>