<?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>162554</bug_id>
          
          <creation_ts>2016-09-26 06:26:25 -0700</creation_ts>
          <short_desc>REGRESSION (Safari 10 combined with WK changes): Unable to store WebCrypto keys in IndexedDB database</short_desc>
          <delta_ts>2017-04-26 16:18:58 -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>WebKit API</component>
          <version>Safari 10</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>macOS 10.12</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=171350</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>oyvind.pedersen</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>jason.mei</cc>
    
    <cc>jonlee</cc>
    
    <cc>oyvind.pedersen</cc>
    
    <cc>sam</cc>
    
    <cc>trygve.hardersen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1233383</commentid>
    <comment_count>0</comment_count>
      <attachid>289823</attachid>
    <who name="">oyvind.pedersen</who>
    <bug_when>2016-09-26 06:26:25 -0700</bug_when>
    <thetext>Created attachment 289823
stand-alone html file that shows the problem

In Safari 10 (at least on Sierra) I am unable to store an RSA KeyPair created by the WebCrypto api in an IndexedDB database. The indexedDB put operation results in a DataCloneError. This works in Safari 9 and Chrome on El Capitan, and on Chrome on Windows. It seems that the CryptoKey object is no longer cloneable in Safari 10. I have also verified that symmetric keys (AES) suffer from the same problem.

I have attached a html file which shows the bug. It alerts &quot;works!&quot; on all the above platforms except on Safari 10, where it shows a DataCloneError instead. On Safari 9, indexedDB cannot be accessed from a file url, so it has to be run from a web server instead, e.g. https://api-op.developer.ensafer.no/client/app/RSAIndexedDBtest.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233386</commentid>
    <comment_count>1</comment_count>
    <who name="">oyvind.pedersen</who>
    <bug_when>2016-09-26 06:41:25 -0700</bug_when>
    <thetext>I have also tried a relevant test on webkit-master found at https://github.com/WebKit/webkit (LayoutTests/crypto/subtle/rsa-indexeddb.html) and verified that it fails on Safari 10 (or rather it does neither PASS nor FAIL, it crashes showing a DataCloneError in the console).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233434</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-09-26 09:32:22 -0700</bug_when>
    <thetext>DataCloneError (DOM IDBDatabase Exception 25): Failed to store record in an IDBObjectStore: An object could not be cloned.

Given that the test passes in WebKitTestRunner, this may be a Safari bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233435</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-09-26 09:32:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/28475450&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1233610</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-09-26 15:13:16 -0700</bug_when>
    <thetext>Using old archive builds we&apos;ve tracked this to https://trac.webkit.org/changeset/191810 (bizarrely)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235027</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-09-29 16:24:05 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Using old archive builds we&apos;ve tracked this to
&gt; https://trac.webkit.org/changeset/191810 (bizarrely)

Never mind this, it&apos;s actually because Safari 10 started using WKPageNavigationClient, but does NOT implement the copyWebCryptoMasterKey callback.

Combine that with this code in WK2:
void WebPageProxy::wrapCryptoKey(const Vector&lt;uint8_t&gt;&amp; key, bool&amp; succeeded, Vector&lt;uint8_t&gt;&amp; wrappedKey)
{
    PageClientProtector protector(m_pageClient);

    Vector&lt;uint8_t&gt; masterKey;

    if (m_navigationClient) {
        if (RefPtr&lt;API::Data&gt; keyData = m_navigationClient-&gt;webCryptoMasterKey(*this))
            masterKey = keyData-&gt;dataReference().vector();
    } else if (RefPtr&lt;API::Data&gt; keyData = m_loaderClient-&gt;webCryptoMasterKey(*this))
        masterKey = keyData-&gt;dataReference().vector();
    else if (!getDefaultWebCryptoMasterKey(masterKey)) {
        succeeded = false;
        return;
    }

    succeeded = wrapSerializedCryptoKey(masterKey, key, wrappedKey);
}

If there *is* a nav client but it does *not* return a master key, this always fails.

I think this method should always fallback to the default key.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235028</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-09-29 16:25:38 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; 
&gt; If there *is* a nav client but it does *not* return a master key, this
&gt; always fails.
&gt; 
&gt; I think this method should always fallback to the default key.

(The unwrap method, as well)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235034</commentid>
    <comment_count>7</comment_count>
      <attachid>290264</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-09-29 16:45:59 -0700</bug_when>
    <thetext>Created attachment 290264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235041</commentid>
    <comment_count>8</comment_count>
      <attachid>290264</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-09-29 17:01:52 -0700</bug_when>
    <thetext>Comment on attachment 290264
Patch

This has the result of falling back to WebKit even if the delegate implements webCryptoMasterKey(), and calling it legitimately fails (e.g. locked keychain). This seems wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235044</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-09-29 17:04:14 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 290264 [details]
&gt; Patch
&gt; 
&gt; This has the result of falling back to WebKit even if the delegate
&gt; implements webCryptoMasterKey(), and calling it legitimately fails (e.g.
&gt; locked keychain). This seems wrong.

Hmmmmm  good point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235050</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-09-29 17:20:30 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Comment on attachment 290264 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; This has the result of falling back to WebKit even if the delegate
&gt; &gt; implements webCryptoMasterKey(), and calling it legitimately fails (e.g.
&gt; &gt; locked keychain). This seems wrong.
&gt; 
&gt; Hmmmmm  good point.

Note that this is actually what the LoaderClient part of the code path did already - Even if the client implemented the method but returned a null key, WK2 would still fallback to the default key.

I still agree this seems wrong, but with that realization I think I will simplify this patch to only add default key fallback to the navigation client case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235056</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-09-29 17:31:50 -0700</bug_when>
    <thetext>Yup, going to go about this a little differently. Patch coming in the AM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235194</commentid>
    <comment_count>12</comment_count>
    <who name="Trygve">trygve.hardersen</who>
    <bug_when>2016-09-30 04:00:22 -0700</bug_when>
    <thetext>Looks very similar to what I encountered in bug 156553.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235298</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-09-30 11:19:27 -0700</bug_when>
    <thetext>Patch is done, but working on an API test which is... slow going.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235299</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-09-30 11:20:02 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Looks very similar to what I encountered in bug 156553.

Yup, this is exactly that issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235301</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-09-30 11:20:17 -0700</bug_when>
    <thetext>*** Bug 156553 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235332</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-09-30 12:15:25 -0700</bug_when>
    <thetext>After spending all morning piecing together a glorious API test, I re-discovered why this was never API-tested in the first place:

The WebCore::getDefaultWebCryptoMasterKey implemented brings up the keychain dialog, which we can&apos;t have during automated testing.

DANGIT!

Will put together the patch without the test, then attach the test for posterity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235377</commentid>
    <comment_count>17</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-09-30 13:15:48 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; After spending all morning piecing together a glorious API test, I
&gt; re-discovered why this was never API-tested in the first place:
&gt; 
&gt; The WebCore::getDefaultWebCryptoMasterKey implemented brings up the keychain
&gt; dialog, which we can&apos;t have during automated testing.
&gt; 
&gt; DANGIT!
&gt; 
&gt; Will put together the patch without the test, then attach the test for
&gt; posterity.

Can we swizzle the keychain dialog out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235379</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-09-30 13:23:13 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; After spending all morning piecing together a glorious API test, I
&gt; &gt; re-discovered why this was never API-tested in the first place:
&gt; &gt; 
&gt; &gt; The WebCore::getDefaultWebCryptoMasterKey implemented brings up the keychain
&gt; &gt; dialog, which we can&apos;t have during automated testing.
&gt; &gt; 
&gt; &gt; DANGIT!
&gt; &gt; 
&gt; &gt; Will put together the patch without the test, then attach the test for
&gt; &gt; posterity.
&gt; 
&gt; Can we swizzle the keychain dialog out?

I doubt it?

But will try for a little bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235399</commentid>
    <comment_count>19</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-09-30 13:57:42 -0700</bug_when>
    <thetext>The dialog comes from internals deep inside of SecItemCopyMatching.

We could swizzle SecItemCopyMatching to return our own canned item, but then we&apos;d run into further issues downstream (more swizzles required)

I&apos;m not sure if it&apos;s worth going down the rabbit hole or if - in the end - it will even be possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235405</commentid>
    <comment_count>20</comment_count>
      <attachid>290381</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-09-30 14:04:28 -0700</bug_when>
    <thetext>Created attachment 290381
The currently unusable test

For posterity in case we can revisit later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235408</commentid>
    <comment_count>21</comment_count>
      <attachid>290382</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-09-30 14:05:56 -0700</bug_when>
    <thetext>Created attachment 290382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235451</commentid>
    <comment_count>22</comment_count>
      <attachid>290382</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-09-30 15:09:11 -0700</bug_when>
    <thetext>Comment on attachment 290382
Patch

r=me

I&apos;m surprised that this now goes through NavigationClient - WebCrypto has nothing to do with navigation. But that&apos;s a pre-existing issue, if an issue at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235469</commentid>
    <comment_count>23</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-09-30 15:41:52 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/206684</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236566</commentid>
    <comment_count>24</comment_count>
    <who name="Trygve">trygve.hardersen</who>
    <bug_when>2016-10-05 00:33:20 -0700</bug_when>
    <thetext>Thanks for fixing this issue so quickly.

This might not be possible to answer, but is there any way of knowing if and when this fix will make it into an official Safari release?

We have a product that is broken because of this and we&apos;re considering an alternative key store implementation to mitigate the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236658</commentid>
    <comment_count>25</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-10-05 09:23:43 -0700</bug_when>
    <thetext>(In reply to comment #24)&gt; 
&gt; This might not be possible to answer, but is there any way of knowing if and
&gt; when this fix will make it into an official Safari release?

The WebKit open source project is in no position to discuss the future plans for a vendor&apos;s product release.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251603</commentid>
    <comment_count>26</comment_count>
      <attachid>294873</attachid>
    <who name="Jason Mei">jason.mei</who>
    <bug_when>2016-11-15 13:43:28 -0800</bug_when>
    <thetext>Created attachment 294873
New test case to highlight the issue with saving the CryptoKeyPair

There is a problem adding the CryptoKeyPair object into indexedDB.  This testcase is a modification to the existing testcase that tries to save the object when generating a key pair.

This code works in Chrome and Firefox.  Neither browser returns a CryptoKeyPair, and instead returns a plain object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1251612</commentid>
    <comment_count>27</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-11-15 13:53:46 -0800</bug_when>
    <thetext>Jason, can you reproduce that in Safari Tech Preview? Could you please file a new bug about that if you can?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252295</commentid>
    <comment_count>28</comment_count>
    <who name="Jason Mei">jason.mei</who>
    <bug_when>2016-11-17 08:11:29 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; Jason, can you reproduce that in Safari Tech Preview? Could you please file
&gt; a new bug about that if you can?

I have created tested this in Safari Tech Preview, and it still exists.  I have added created a new bug as requested (https://bugs.webkit.org/show_bug.cgi?id=164868)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252444</commentid>
    <comment_count>29</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-11-17 14:06:30 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #27)
&gt; &gt; Jason, can you reproduce that in Safari Tech Preview? Could you please file
&gt; &gt; a new bug about that if you can?
&gt; 
&gt; I have created tested this in Safari Tech Preview, and it still exists.  I
&gt; have added created a new bug as requested
&gt; (https://bugs.webkit.org/show_bug.cgi?id=164868)

As mentioned over in 164868, the issue you found is one with our IDL bindings and serialized script values, and not really with IDB.

It&apos;s been explored/fixed over there.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>289823</attachid>
            <date>2016-09-26 06:26:25 -0700</date>
            <delta_ts>2016-09-26 06:26:25 -0700</delta_ts>
            <desc>stand-alone html file that shows the problem</desc>
            <filename>RSAIndexedDBtest.html</filename>
            <type>text/html</type>
            <size>3674</size>
            <attacher>oyvind.pedersen</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+DQo8aHRtbCBsYW5nPSJlbiI+DQo8aGVhZD4NCiAgICA8bWV0YSBjaGFy
c2V0PSJVVEYtOCI+DQogICAgPHRpdGxlPlN0b3JlIFJTQSBrZXlwYWlyIGluIEluZGV4ZWREQjwv
dGl0bGU+DQogICAgPHNjcmlwdD4NCiAgICAgICAgdmFyIF9pZGIgPSB3aW5kb3cuaW5kZXhlZERC
Ow0KICAgICAgICB2YXIgX2RiID0gbnVsbDsNCiAgICAgICAgdmFyIF90ZXN0REIgPSAiUlNBX1Rl
c3REQiI7DQogICAgICAgIHZhciBfdGVzdFN0b3JlID0gInJzYWtleXMiOw0KDQogICAgICAgIHZh
ciBDID0gZnVuY3Rpb24oKSB7DQogICAgICAgICAgICBpZiAoIWNyeXB0bykgew0KICAgICAgICAg
ICAgICAgIGFsZXJ0KCJDcnlwdG8gbm90IHN1cHBvcnRlZCIpOw0KICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgaWYgKGNyeXB0by53ZWJraXRTdWJ0bGUpIHsNCiAgICAgICAgICAgICAgICByZXR1
cm4gY3J5cHRvLndlYmtpdFN1YnRsZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2Ug
ew0KICAgICAgICAgICAgICAgIHJldHVybiBjcnlwdG8uc3VidGxlOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICB9Ow0KDQogICAgICAgIGZ1bmN0aW9uIGdlbmVyYXRlS2V5UGFpcigpIHsNCiAgICAg
ICAgICAgIHZhciBhbGdvID0gew0KICAgICAgICAgICAgICAgIG5hbWU6ICJSU0EtT0FFUCIsDQog
ICAgICAgICAgICAgICAgbW9kdWx1c0xlbmd0aDogMjA0OCwNCiAgICAgICAgICAgICAgICBwdWJs
aWNFeHBvbmVudDogbmV3IFVpbnQ4QXJyYXkoWzB4MDEsIDB4MDAsIDB4MDFdKSwNCiAgICAgICAg
ICAgICAgICBoYXNoOiB7bmFtZTogIlNIQS0xIn0NCiAgICAgICAgICAgIH07DQoNCiAgICAgICAg
ICAgIHZhciBnZW5lcmF0ZSA9IGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsNCiAgICAgICAg
ICAgICAgICBDKCkuZ2VuZXJhdGVLZXkoYWxnbywgZmFsc2UsIFsiZW5jcnlwdCIsICJkZWNyeXB0
Il0pLnRoZW4oZnVuY3Rpb24gKGtleVBhaXIpIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZShrZXlQYWlyKTsNCiAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsN
CiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTsNCiAgICAgICAgICAgICAgICB9KTsN
CiAgICAgICAgICAgIH07DQogICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZ2VuZXJhdGUp
Ow0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gb3BlbkRCKHJlc29sdmUsIHJlamVjdCkg
ew0KICAgICAgICAgICAgaWYgKF9kYikgew0KICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7
DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHZhciByZXEgPSBfaWRiLm9wZW4oX3Rlc3RE
QiwgMSk7DQogICAgICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7DQog
ICAgICAgICAgICAgICAgX2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsNCiAgICAgICAgICAgICAg
ICByZXNvbHZlKHRydWUpOw0KICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIHJlcS5vbmVycm9y
ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIHJlamVjdChyZXEuZXJyb3IpOw0KICAg
ICAgICAgICAgfTsNCg0KICAgICAgICAgICAgcmVxLm9uYmxvY2tlZCA9IGZ1bmN0aW9uICgpIHsN
CiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCJEQiBpcyBibG9ja2VkLCB1bmFibGUg
dG8gb3BlbiAiKSk7DQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICByZXEub251cGdyYWRl
bmVlZGVkID0gZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgX2RiID0gZXZlbnQudGFyZ2V0
LnJlc3VsdDsNCiAgICAgICAgICAgICAgICB2YXIgb3B0cyA9IHsNCiAgICAgICAgICAgICAgICAg
ICAga2V5UGF0aDogImtleSIsDQogICAgICAgICAgICAgICAgICAgIGF1dG9JbmNyZW1lbnQ6IGZh
bHNlDQogICAgICAgICAgICAgICAgfTsNCg0KICAgICAgICAgICAgICAgIHZhciBzdG9yZSA9IF9k
Yi5jcmVhdGVPYmplY3RTdG9yZShfdGVzdFN0b3JlLCBvcHRzKTsNCiAgICAgICAgICAgICAgICBp
ZiAoIXN0b3JlKSB7DQogICAgICAgICAgICAgICAgICAgIC8vbm9pbnNwZWN0aW9uIEV4Y2VwdGlv
bkNhdWdodExvY2FsbHlKUw0KICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlN0
b3JlIGNyZWF0aW9uIHJldHVybmVkIG51bGwiKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAg
ICAgICAgICAgcmVzb2x2ZSh0cnVlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAg
ICAgIGZ1bmN0aW9uIHB1dChrZXlQYWlyKSB7DQogICAgICAgICAgICB2YXIgc3RvcmVLZXlQYWly
ID0gZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICAgICAgdmFyIHR4ID0g
X2RiLnRyYW5zYWN0aW9uKFtfdGVzdFN0b3JlXSwgInJlYWR3cml0ZSIpOw0KICAgICAgICAgICAg
ICAgIHR4Lm9uY29tcGxldGUgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgIHJl
c29sdmUodHJ1ZSk7DQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICB0eC5vbmFi
b3J0ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICByZWplY3QodHguZXJyb3Ip
Ow0KICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICAgICAgdHgub25lcnJvciA9IGZ1bmN0
aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHR4LmVycm9yKTsNCiAgICAgICAg
ICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgdmFyIHN0b3JlID0gdHgub2JqZWN0U3RvcmUo
X3Rlc3RTdG9yZSk7DQogICAgICAgICAgICAgICAgcmV0dXJuIHN0b3JlLnB1dCh7DQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAga2V5IDogMSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdWJrZXkgOiBrZXlQYWlyLnB1YmxpY0tleSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcml2a2V5IDoga2V5UGFpci5wcml2YXRlS2V5DQogICAgICAgICAgICAgICAgICAgICAgICB9
KTsNCiAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShzdG9y
ZUtleVBhaXIpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdGVzdCgpIHsNCiAgICAg
ICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShvcGVuREIpLnRoZW4oZnVuY3Rpb24oKSB7DQogICAg
ICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlS2V5UGFpcigpOw0KICAgICAgICAgICAgfSkudGhl
bihmdW5jdGlvbihrZXlwYWlyKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHB1dChrZXlwYWly
KTsNCiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgYWxl
cnQoIndvcmtzISIpOw0KICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHsNCiAg
ICAgICAgICAgICAgICBhbGVydCgiZmFpbHMgd2l0aCBlcnJvciAiICsgKGVycm9yID8gZXJyb3Iu
bWVzc2FnZSB8fCBlcnJvci5uYW1lIHx8IGVycm9yIDogIih1bmtub3duKSIpKTsNCiAgICAgICAg
ICAgIH0pOw0KICAgICAgICB9DQogICAgPC9zY3JpcHQ+DQo8L2hlYWQ+DQo8Ym9keT4NCiAgICA8
YnV0dG9uIGlkPSJ0ZXN0IiBvbmNsaWNrPSJ0ZXN0KCkiPlRlc3QgUlNBIGFuZCBJbmRleGVkREI8
L2J1dHRvbj4NCjwvYm9keT4NCjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290264</attachid>
            <date>2016-09-29 16:45:59 -0700</date>
            <delta_ts>2016-09-29 17:31:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162554-20160929164257.patch</filename>
            <type>text/plain</type>
            <size>4700</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNmRlY2QzZDgwZjZlM2E4
MDJkOTYxYTEzYmE3MWUwODRmZDIyNzc5My4uODUyM2MwNjFkMDEyODVkNDQyMmY0ZmJmNzI4MzMy
YTgwZmRmZGQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE2LTA5LTI5ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChTYWZh
cmkgMTAgY29tYmluZWQgd2l0aCBXSyBjaGFuZ2VzKTogVW5hYmxlIHRvIHN0b3JlIFdlYkNyeXB0
byBrZXlzIGluIEluZGV4ZWREQiBkYXRhYmFzZS4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4
MzM0NDQwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjU1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNhZmFy
aSAxMCBoYXMgYSBXS1BhZ2VOYXZpZ2F0aW9uIGNsaWVudCBidXQgZG9lcyBub3QgaW1wbGVtZW50
IHRoZSAiY29weVdlYkNyeXB0b01hc3RlcktleSIgY2FsbGJhY2suCisKKyAgICAgICAgV2ViS2l0
IGp1c3QgZmFpbHMgaW4gdGhpcyBjYXNlLCBpbnN0ZWFkIG9mIGZhbGxpbmcgYmFjayB0byAiZ2V0
RGVmYXVsdFdlYkNyeXB0b01hc3RlcktleSIKKyAgICAgICAgSXQgc2hvdWxkIHJlYWxseSBqdXN0
IGdvIGRvd24gdGhlIGNoYWluLCBmYWxsaW5nIGJhY2sgdG8gImdldERlZmF1bHRXZWJDcnlwdG9N
YXN0ZXJLZXkiIGFzIGEgbGFzdCBkZWZhdWx0LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d3JhcENyeXB0b0tl
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dW53cmFwQ3J5cHRvS2V5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRDcnlwdG9NYXN0ZXJLZXkpOiBJbnN0ZWFk
IG9mIG9ubHkgdHJ5aW5nIGV4YWN0bHkgb25lIGNsaWVudCB3ZSBzaG91bGQgdHJ5IHRoZSAKKyAg
ICAgICAgICBuYXZpZ2F0aW9uQ2xpZW50LCB0aGVuIHRoZSBsb2FkZXJDbGllbnQsIHRoZW4gZmlu
YWxseSBnZXREZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5LgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDoKKwogMjAxNi0wOS0yOSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgTmV0d29ya1Nlc3Npb246IEhUVFAgYXV0aGVudGlj
YXRpb24gZG9lc24ndCB3b3JrIGlmIFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSyBpcyBu
b3QgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCAwMmZmZDE4NGQyMTc3ZDIyMzdmNGU4MjRhZmIwNWM2ZGJjZGEwZmNmLi4yOGJiYzU4MDI0ODJk
NzZmMmQxMGM0OGE1ZjRjYmVlZjkwNzI1NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcApAQCAtNjEzOCwyNSArNjEzOCwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xs
YmFyT3ZlcgogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogdm9pZCBXZWJQYWdlUHJveHk6Ondy
YXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIGJvb2wmIHN1Y2NlZWRlZCwg
VmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KQogewotICAgIFBhZ2VDbGllbnRQcm90ZWN0b3Ig
cHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7Ci0KLSAgICBWZWN0b3I8dWludDhfdD4gbWFzdGVyS2V5
OwotCi0gICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewotICAgICAgICBpZiAoUmVmUHRyPEFQ
STo6RGF0YT4ga2V5RGF0YSA9IG1fbmF2aWdhdGlvbkNsaWVudC0+d2ViQ3J5cHRvTWFzdGVyS2V5
KCp0aGlzKSkKLSAgICAgICAgICAgIG1hc3RlcktleSA9IGtleURhdGEtPmRhdGFSZWZlcmVuY2Uo
KS52ZWN0b3IoKTsKLSAgICB9IGVsc2UgaWYgKFJlZlB0cjxBUEk6OkRhdGE+IGtleURhdGEgPSBt
X2xvYWRlckNsaWVudC0+d2ViQ3J5cHRvTWFzdGVyS2V5KCp0aGlzKSkKLSAgICAgICAgbWFzdGVy
S2V5ID0ga2V5RGF0YS0+ZGF0YVJlZmVyZW5jZSgpLnZlY3RvcigpOwotICAgIGVsc2UgaWYgKCFn
ZXREZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KG1hc3RlcktleSkpIHsKLSAgICAgICAgc3VjY2Vl
ZGVkID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzdWNjZWVkZWQgPSB3
cmFwU2VyaWFsaXplZENyeXB0b0tleShtYXN0ZXJLZXksIGtleSwgd3JhcHBlZEtleSk7CisgICAg
c3VjY2VlZGVkID0gd3JhcFNlcmlhbGl6ZWRDcnlwdG9LZXkoZ2V0Q3J5cHRvTWFzdGVyS2V5KCks
IGtleSwgd3JhcHBlZEtleSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1bndyYXBDcnlwdG9L
ZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBib29sJiBzdWNjZWVkZWQsIFZl
Y3Rvcjx1aW50OF90PiYga2V5KQogeworICAgIHN1Y2NlZWRlZCA9IHVud3JhcFNlcmlhbGl6ZWRD
cnlwdG9LZXkoZ2V0Q3J5cHRvTWFzdGVyS2V5KCksIHdyYXBwZWRLZXksIGtleSk7Cit9CisKK1Zl
Y3Rvcjx1aW50OF90PiBXZWJQYWdlUHJveHk6OmdldENyeXB0b01hc3RlcktleSgpCit7CiAgICAg
UGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKIAogICAgIFZlY3Rv
cjx1aW50OF90PiBtYXN0ZXJLZXk7CkBAIC02MTY0LDE1ICs2MTU1LDE5IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5
LCBib29sJiBzdWNjCiAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkgewogICAgICAgICBpZiAo
UmVmUHRyPEFQSTo6RGF0YT4ga2V5RGF0YSA9IG1fbmF2aWdhdGlvbkNsaWVudC0+d2ViQ3J5cHRv
TWFzdGVyS2V5KCp0aGlzKSkKICAgICAgICAgICAgIG1hc3RlcktleSA9IGtleURhdGEtPmRhdGFS
ZWZlcmVuY2UoKS52ZWN0b3IoKTsKLSAgICB9IGVsc2UgaWYgKFJlZlB0cjxBUEk6OkRhdGE+IGtl
eURhdGEgPSBtX2xvYWRlckNsaWVudC0+d2ViQ3J5cHRvTWFzdGVyS2V5KCp0aGlzKSkKLSAgICAg
ICAgbWFzdGVyS2V5ID0ga2V5RGF0YS0+ZGF0YVJlZmVyZW5jZSgpLnZlY3RvcigpOwotICAgIGVs
c2UgaWYgKCFnZXREZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KG1hc3RlcktleSkpIHsKLSAgICAg
ICAgc3VjY2VlZGVkID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzdWNj
ZWVkZWQgPSB1bndyYXBTZXJpYWxpemVkQ3J5cHRvS2V5KG1hc3RlcktleSwgd3JhcHBlZEtleSwg
a2V5KTsKKyAgICBpZiAobWFzdGVyS2V5LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoUmVmUHRy
PEFQSTo6RGF0YT4ga2V5RGF0YSA9IG1fbG9hZGVyQ2xpZW50LT53ZWJDcnlwdG9NYXN0ZXJLZXko
KnRoaXMpKQorICAgICAgICAgICAgbWFzdGVyS2V5ID0ga2V5RGF0YS0+ZGF0YVJlZmVyZW5jZSgp
LnZlY3RvcigpOworICAgIH0KKworICAgIGlmIChtYXN0ZXJLZXkuaXNFbXB0eSgpKQorICAgICAg
ICBnZXREZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KG1hc3RlcktleSk7CisKKyAgICByZXR1cm4g
bWFzdGVyS2V5OwogfQorCiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmFkZE1JTUVUeXBl
V2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDJlYTMwNGFmNjZlMjA3ZmUwYWJm
MTY5MTk5ZmZmZjkyZWRiM2U4NzIuLjVmY2Y2NzM2MjQwNjhhMTYxNmYzZjU2NDhmYmEwNzNlMTU1
YjJkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1NDIs
NiArMTU0MiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgaGFuZGxlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBjb25zdCBVc2VyRGF0YSYgbWVzc2Fn
ZUJvZHkpOwogICAgIHZvaWQgaGFuZGxlU3luY2hyb25vdXNNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIGNvbnN0IFVzZXJEYXRhJiBtZXNzYWdlQm9k
eSwgVXNlckRhdGEmIHJldHVyblVzZXJEYXRhKTsKIAorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQ
VE8pCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGdldENyeXB0b01hc3RlcktleSgpOworI2VuZGlmCisK
ICAgICBQYWdlQ2xpZW50JiBtX3BhZ2VDbGllbnQ7CiAgICAgUmVmPEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb24+IG1fY29uZmlndXJhdGlvbjsKIAo=
</data>
<flag name="review"
          id="313458"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290381</attachid>
            <date>2016-09-30 14:04:28 -0700</date>
            <delta_ts>2016-09-30 14:06:14 -0700</delta_ts>
            <desc>The currently unusable test</desc>
            <filename>TestPatch</filename>
            <type>text/plain</type>
            <size>14813</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzYwZTVkZC4uZDEwMTkzNCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEwOSw2ICsxMDksOCBAQAogCQk1MTA0Nzc3NDFEMjk4REREMDA5NzQ3
RUIgLyogSURCRGVsZXRlUmVjb3Zlcnkuc3FsaXRlMy13YWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNDc3NzExRDI5OEQ4NTAwOTc0N0VC
IC8qIElEQkRlbGV0ZVJlY292ZXJ5LnNxbGl0ZTMtd2FsICovOyB9OwogCQk1MTA0Nzc3NzFEMjk4
RTcyMDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3ZlcnkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA0Nzc3NjFEMjk4RTU3MDA5NzQ3
RUIgLyogSURCRGVsZXRlUmVjb3ZlcnkuaHRtbCAqLzsgfTsKIAkJNTEwNDc3NzgxRDI5OTIzQjAw
OTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwNDc3NzUxRDI5OEUwMzAwOTc0N0VCIC8qIElEQkRlbGV0
ZVJlY292ZXJ5Lm1tICovOyB9OworCQk1MTMwMkM1MDFEOUVDQzhCMDBFQjI0RDcgLyogbmF2aWdh
dGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTMwMkM0RDFEOUVDODE4MDBFQjI0RDcgLyog
bmF2aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRtbCAqLzsgfTsKKwkJNTEzMDJDNTQx
RDlFRUM5RDAwRUIyNEQ3IC8qIE5hdmlnYXRpb25DbGllbnREZWZhdWx0Q3J5cHRvLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMzAyQzUzMUQ5RUVD
OTgwMEVCMjRENyAvKiBOYXZpZ2F0aW9uQ2xpZW50RGVmYXVsdENyeXB0by5jcHAgKi87IH07CiAJ
CTUxMzkzRTIyMTUyMzk1MkQwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5k
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEz
OTNFMUQxNTIzOTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5j
cHAgKi87IH07CiAJCTUxNDJCMjczMTUxN0M4QzgwMEMzMkIxOSAvKiBDb250ZXh0TWVudUNhbkNv
cHlVUkwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTQyQjI3MjE1MTdDODkxMDBDMzJCMTkgLyogQ29udGV4dE1lbnVDYW5Db3B5VVJM
Lmh0bWwgKi87IH07CiAJCTUxNUJFMTZGMUQ0MjhCQjEwMEREN0M2OCAvKiBTdG9yZUJsb2JUb0Jl
RGVsZXRlZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNUJFMTZFMUQ0Mjg4RkYwMEREN0M2OCAvKiBTdG9yZUJsb2JUb0JlRGVsZXRl
ZC5odG1sICovOyB9OwpAQCAtNTUyLDYgKzU1NCw3IEBACiAJCQlkc3RQYXRoID0gVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZpbGVzID0gKAor
CQkJCTUxMzAyQzUwMUQ5RUNDOEIwMEVCMjRENyAvKiBuYXZpZ2F0aW9uLWNsaWVudC1kZWZhdWx0
LWNyeXB0by5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0RjEzNzkyMUQ5QjY4M0Uw
MDJCRUM1NyAvKiBsYXJnZS12aWRlby10ZXN0LW5vdy1wbGF5aW5nLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCiAJCQkJODM3QTM1RjExRDlBMUU3RDAwNjYzQzU3IC8qIERvd25sb2FkUmVxdWVz
dEJsb2JVUkwuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkyRTk4OTYxNTFEOEYwOTM4
MDA3Mzk4OTIgLyogdGV4dC1hbmQtcGFzc3dvcmQtaW5wdXRzLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCkBAIC04NjEsNiArODY0LDggQEAKIAkJNTEwNDc3NzExRDI5OEQ4NTAwOTc0N0VCIC8q
IElEQkRlbGV0ZVJlY292ZXJ5LnNxbGl0ZTMtd2FsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJJREJEZWxldGVSZWNvdmVyeS5z
cWxpdGUzLXdhbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDQ3Nzc1MUQyOThF
MDMwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IElEQkRlbGV0ZVJlY292ZXJ5Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTA0Nzc3NjFEMjk4RTU3MDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3Zl
cnkuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IElEQkRlbGV0ZVJlY292ZXJ5Lmh0
bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMzAyQzREMUQ5RUM4MTgwMEVCMjRE
NyAvKiBuYXZpZ2F0aW9uLWNsaWVudC1kZWZhdWx0LWNyeXB0by5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gIm5hdmlnYXRpb24tY2xpZW50LWRlZmF1bHQtY3J5cHRvLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTMwMkM1MzFEOUVFQzk4MDBFQjI0RDcgLyog
TmF2aWdhdGlvbkNsaWVudERlZmF1bHRDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTmF2aWdhdGlvbkNsaWVudERlZmF1bHRDcnlwdG8uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTM5M0UxRDE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2lu
ZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxMzkzRTFFMTUyMzk0NEEwMDVGMzlDNSAvKiBET01XaW5kb3dF
eHRlbnNpb25CYXNpYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
T01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxNDJCMjcwMTUxN0M4OEIwMEMzMkIxOSAvKiBDb250ZXh0TWVudUNhbkNvcHlVUkwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb250ZXh0TWVudUNhbkNvcHlV
UkwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjcxLDYgKzE2NzYsNyBAQAog
CQkJCTUxQ0I0QUQ3MUIzQTA3OUMwMEMxQjFDNiAvKiBNb2RhbEFsZXJ0c1NQSS5jcHAgKi8sCiAJ
CQkJMzNCRTVBRjQxMzdCNUE2QzAwNzA1ODEzIC8qIE1vdXNlTW92ZUFmdGVyQ3Jhc2guY3BwICov
LAogCQkJCTMzQkU1QUY4MTM3QjVBQUUwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRlckNyYXNoX0J1
bmRsZS5jcHAgKi8sCisJCQkJNTEzMDJDNTMxRDlFRUM5ODAwRUIyNEQ3IC8qIE5hdmlnYXRpb25D
bGllbnREZWZhdWx0Q3J5cHRvLmNwcCAqLywKIAkJCQk5M0YxREIzMDE0REEyMDc2MDAyNEMzNjIg
LyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LmNwcCAqLywKIAkJCQk5M0YxREIzMzE0
REEyMDg3MDAyNEMzNjIgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0X0J1bmRsZS5j
cHAgKi8sCiAJCQkJOTNGMURCNTQxNERCMUI3MzAwMjRDMzYyIC8qIE5ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEZhaWxzLmNwcCAqLywKQEAgLTE4MjIsNiArMTgyOCw3IEBACiAJCQkJNTFD
RDFDNzExQjM4RDQ4NDAwMTQyQ0E1IC8qIG1vZGFsLWFsZXJ0cy1pbi1uZXctYWJvdXQtYmxhbmst
d2luZG93Lmh0bWwgKi8sCiAJCQkJN0ExNDU4RkIxQUQ1QzAzNTAwRTA2NzcyIC8qIG1vdXNlLWJ1
dHRvbi1saXN0ZW5lci5odG1sICovLAogCQkJCTMzRTc5RTA1MTM3QjVGQ0UwMEUzMkQ5OSAvKiBt
b3VzZS1tb3ZlLWxpc3RlbmVyLmh0bWwgKi8sCisJCQkJNTEzMDJDNEQxRDlFQzgxODAwRUIyNEQ3
IC8qIG5hdmlnYXRpb24tY2xpZW50LWRlZmF1bHQtY3J5cHRvLmh0bWwgKi8sCiAJCQkJQ0VBNkNG
MjcxOUNDRjY5RDAwNjRGNUE3IC8qIG9wZW4tYW5kLWNsb3NlLXdpbmRvdy5odG1sICovLAogCQkJ
CUY2RkREREQ1MTQyNDFDNDgwMDRGMTcyOSAvKiBwdXNoLXN0YXRlLmh0bWwgKi8sCiAJCQkJQ0VC
QUJENDgxQjcxNjg3QzAwNTEyMTBBIC8qIHNob3VsZC1vcGVuLWV4dGVybmFsLXNjaGVtZXMuaHRt
bCAqLywKQEAgLTI1MTksNiArMjUyNiw3IEBACiAJCQkJOUM2NERDMzIxRDc2MTk4QTAwNEI1OThF
IC8qIFlvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1RTRC
MUQyRTFENDA0QzYxMDAwNTM2MjEgLyogV0tTY3JvbGxWaWV3RGVsZWdhdGVDcmFzaC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDQ0U3RjIyMUE0MTFBRTYwMDQ0N0M0QyAvKiBXS1N0cmluZy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1MTMwMkM1NDFEOUVFQzlEMDBFQjI0RDcgLyogTmF2aWdhdGlv
bkNsaWVudERlZmF1bHRDcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMUUxQTQx
MUFFNjAwNDQ3QzRDIC8qIFdLU3RyaW5nSlNTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTE0RkM1ODUxQjg5NzM5MTAwRDEwN0VCIC8qIFdLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzQxN0YzMzFEMTlFMTQ4MDBCOEVGNTMgLyogV0tXZWJW
aWV3RGVmYXVsdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05hdmlnYXRpb25DbGllbnREZWZh
dWx0Q3J5cHRvLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OYXZpZ2F0
aW9uQ2xpZW50RGVmYXVsdENyeXB0by5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNGU1MWNkYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9OYXZpZ2F0aW9uQ2xpZW50RGVmYXVsdENyeXB0by5jcHAKQEAgLTAsMCArMSw5
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCA8V2ViS2l0L1dL
Rm91bmRhdGlvbi5oPgorCisjaWYgV0tfSEFWRV9DX1NQSQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgorI2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW1wb3J0ICJUZXN0Lmgi
CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
Kworc3RhdGljIGJvb2wgcmVjZWl2ZWRBbGVydDsKK3N0YXRpYyBSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IGxhc3RBbGVydDsKKworc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJl
ZiBwYWdlLCBXS1N0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYgZnJhbWUsIFdLU2VjdXJp
dHlPcmlnaW5SZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgbGFzdEFsZXJ0ID0g
YWxlcnRUZXh0OworICAgIHJlY2VpdmVkQWxlcnQgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uQWN0
aW9uUmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiwgY29u
c3Qgdm9pZCopCit7CisgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlKGxpc3RlbmVyKTsKK30K
Kworc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdLUGFnZVJl
ZiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0
ZW5lciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBXS0ZyYW1lUG9saWN5TGlzdGVu
ZXJVc2UobGlzdGVuZXIpOworfQorCitURVNUKFdlYktpdDIsIE5hdmlnYXRpb25DbGllbnREZWZh
dWx0Q3J5cHRvKQoreworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0V0soV0tDb250ZXh0Q3JlYXRl
KCkpOworICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOworCisgICAg
Ly8gVGhlIG5hdmlnYXRpb25DbGllbnQgcXVpdGUgZXhwbGljaXRseSBkb2VzICpub3QqIGhhdmUg
YSBjb3B5V2ViQ3J5cHRvTWFzdGVyS2V5IGNhbGxiYWNrLAorICAgIC8vIHdoaWNoIGFsbG93cyB0
aGlzIHRlc3QgdG8gbWFrZSBzdXJlIHRoYXQgV2ViS2l0MiBpbnN0ZWFkIGNyZWF0ZXMgYSBkZWZh
dWx0IGNyeXB0byBtYXN0ZXIga2V5LgorICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMCBuYXZp
Z2F0aW9uQ2xpZW50OworICAgIG1lbXNldCgmbmF2aWdhdGlvbkNsaWVudCwgMCwgc2l6ZW9mKG5h
dmlnYXRpb25DbGllbnQpKTsKKyAgICBuYXZpZ2F0aW9uQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7
CisgICAgbmF2aWdhdGlvbkNsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0g
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjsKKyAgICBuYXZpZ2F0aW9uQ2xpZW50LmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSA9IGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25SZXNwb25zZTsKKworICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KHdlYlZpZXcu
cGFnZSgpLCAmbmF2aWdhdGlvbkNsaWVudC5iYXNlKTsKKworICAgIFdLUGFnZVVJQ2xpZW50VjUg
dWlDbGllbnQ7CisgICAgbWVtc2V0KCZ1aUNsaWVudCwgMCwgc2l6ZW9mKHVpQ2xpZW50KSk7Cisg
ICAgdWlDbGllbnQuYmFzZS52ZXJzaW9uID0gNTsKKyAgICB1aUNsaWVudC5ydW5KYXZhU2NyaXB0
QWxlcnQgPSBydW5KYXZhU2NyaXB0QWxlcnQ7CisKKyAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQo
d2ViVmlldy5wYWdlKCksICZ1aUNsaWVudC5iYXNlKTsKKworICAgIFdLUmV0YWluUHRyPFdLVVJM
UmVmPiB1cmwgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJuYXZpZ2F0aW9u
LWNsaWVudC1kZWZhdWx0LWNyeXB0byIsICJodG1sIikpIDsKKyAgICBXS1BhZ2VMb2FkVVJMKHdl
YlZpZXcucGFnZSgpLCB1cmwuZ2V0KCkpOworCisgICAgVXRpbDo6cnVuKCZyZWNlaXZlZEFsZXJ0
KTsKKyAgICBFWFBFQ1RfVFJVRShXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGxhc3RBbGVy
dC5nZXQoKSwgInN1Y2Nlc3NmdWxseSBzdG9yZWQga2V5IikpOworCisgICAgcmVjZWl2ZWRBbGVy
dCA9IGZhbHNlOworICAgIFV0aWw6OnJ1bigmcmVjZWl2ZWRBbGVydCk7CisgICAgRVhQRUNUX1RS
VUUoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhsYXN0QWxlcnQuZ2V0KCksICJyZXRyaWV2
ZWQgdmFsaWQga2V5IikpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNl
bmRpZiAvLyBXS19IQVZFX0NfU1BJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvbmF2aWdhdGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRtbCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9uYXZpZ2F0aW9uLWNsaWVudC1kZWZhdWx0LWNy
eXB0by5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZWViYTQKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbmF2aWdh
dGlvbi1jbGllbnQtZGVmYXVsdC1jcnlwdG8uaHRtbApAQCAtMCwwICsxLDk5IEBACis8c2NyaXB0
PgorCit2YXIgcHJpdmF0ZUtleUpTT04gPSB7CisgICAga3R5OiAiUlNBIiwKKyAgICBhbGc6ICJS
UzI1NiIsCisgICAgbjogInJjQ1VDdjdPYzFIVmFtMURJaEN6cWtuVGhXYXdPcDhRTGs4Wml5MnAx
MEJ5alFGQ2Fqb0ZpeXVBV2wtUjFXWFphZjR4aXRMUnJhY1Q5YWdwekl6Yy1NYkxTSElHZ1dRR08y
MWxHaUlteTVmdFotRDhiSEFxUnoyeTE1cHpENGM0Q0VvdTdYU1NMRG9SblIwUUc1TXNEaEQ2czJn
Vjltd0hrcnRrQ3h0TVdkQmktNzdhczh3R21sTlJsZGNPU2daRExLOFVuQ1NnQTFPZ3VaOTg5YkZ5
Yzh0T09FSWIweFVTZlBTejNMUFNDbnlZejY4YURqbUtWZU5ILWlnODU3T1NjeVdiR3lFeTNCaXc2
NHF1bjNqdVVsTldzSjN6bmdrT2R0ZVlXeXR4NVFyNFhLTnM2Ui1NeXlxNzJLVXAwMm1KRFppaXlp
Z2x4TUxfaTMtX0NlZWNDdyIsCisgICAgZTogIkFRQUIiLAorICAgIGQ6ICJlTkxTMzdhQ3o3UlhT
TlBEX0R0TEJKNmo1VDhjU3hkelJCQ2pQYUk2V2NHcUpwMTZscTNVVHd1b0RMQXFsQTlvR1ltMjM4
ZHNJV3B1dWNQX2xRdGJXZS03U3B4b0k2X3ZtWUdmN1lWVUh2MS1ERjlxaU9tU3JNbWR4TW5WT3pZ
WFk4UmFUNnRoUGpuX0o1Y2ZMVjJ4SV9Md3NyTXRtcGRTeU5sZ1gwelRVaHd0dWFoZ0FLTUVDaFlq
SDJFbmpIZEh3NnNZMi13QXBkY1FJN1VMRTBvbzVSemJRWnBtdWhjTjloaUJjMEwzaGhGMHFvNTBt
YmwwMl82NV9HUTdEcFZrWEJ4TmdSQkx6bFBhYm16ekcyb0FoZmVmTGdZbVNDMW9wYUNrWEU2dlJX
UU5XTkw0NVJaTlpGWU0zdW9KZ2hPTXFHZW9jTTBCcGpkQ2hIclBPbEZ2U1EiLAorICAgIHA6ICI0
bWlUdUFqS01lSDV1SjVLQjM5N1FVd2hia1lFZ1NiY0EybWlmbVNrdkUyMDE4Z2I1NXFrQkhLMWVW
cnlmMV9tNDNMTmxjNk9fYWs2Z2Z6ZFpJWnZTNU5DR2pQbDBxMDlwbFVwdThxRk9Tc3BCd0E2N3FH
SDc2bEZsWkxuX2Q0eWdsUzd3ZkxydTRfNVlzOHFMTHMtRHFWTHZpd3Bvc09ueXlXcXdNNUFYcDAi
LAorICAgIHE6ICJ4SFlyemtpdnRtbnpfc0djaG5XR2MwcS1wRE9rS2ljcHRScHYycE1GSUlYeG5G
WDVhTWVFWElaalZ1alh0d1V5MVVsRklOMkdaSlN2eTVLSjc5bXVfWHlObkZITXplZEgtQTNlZTN1
OGgxVVVyWkYtdlV1MV9lNFVfeDY3Tk4xZGVkelVTS3luTjdwRmwzT2t1U2hNQldHVi1jd3pPUGRj
VkFmVnVabHhVTWMiLAorICAgIGRwOiAiZkJ6RHpZRFVCbUJRR29wN0huMGR2Zl9UMjdWNlJxcGN0
V28wNzRDUVpjRmJQMmF0RlZ0S1NqM3ZpV1QzeGlkMlZIemNnaURIZGZwTTNuRVZsRU8xd3dJb25H
Q1N2ZGpHRU9aaWlGVk9qclpBT1Z4QThndU9qeXlGdnFiWGtlMDZWd1BJSVZ2ZktlU1UyenVoYlBf
XzF0dDZGX2Z4b3c0S2IyeG9uR1QwR0drIiwKKyAgICBkcTogImptRTJEaUlQZGh3RGdMWEFRcElh
QnFRODFiTzNYZlZUX0xSVUxBd3d3d2xQdVFWMTQ4SDA0emxoOVRKNlkyR1pIWW9rVjFVMGVPQnBK
eGZrYjdkTFl0cEpwdWlCalJmNHlJVUVvR2xra0lfUWxKbkZTRnItWWpHUmRmTkhxV0JreGxTTVpM
NzcwUjltSUFUbmRHa0g3ejV4LXI5S3dCWkZDNEZDRzJoZ196RSIsCisgICAgcWk6ICJZQ1hfcEx3
Yk1CQTFUaFZIMFdjd21ueXRxTmNyTUNFd1RtN0J5QTJlVTZuV2JRclVMdmY3bTlfa3pmTFVjanNu
cEFWbEJRRzVKTVhNeTBTcTRwdHdieXdzYTUtRzhLQU9PT1IyTDN2NGhDLUV5czlmdGdGTV8zaTBv
NDBlZVFINGIzaGFQYm50ckllTWc4SXpsT3VWWUtmOS0yUXVLRG9XZVJkZDdOc2R4VGsiCit9Owor
CitmdW5jdGlvbiBhc2NpaVRvVWludDhBcnJheShzdHIpCit7CisgICAgdmFyIGNoYXJzID0gW107
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpCisgICAgICAgIGNoYXJz
LnB1c2goc3RyLmNoYXJDb2RlQXQoaSkpOworICAgIHJldHVybiBuZXcgVWludDhBcnJheShjaGFy
cyk7Cit9CisKK2Z1bmN0aW9uIGJ5dGVzVG9IZXhTdHJpbmcoYnl0ZXMpCit7CisgICAgaWYgKCFi
eXRlcykKKyAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICBieXRlcyA9IG5ldyBVaW50OEFycmF5
KGJ5dGVzKTsKKyAgICB2YXIgaGV4Qnl0ZXMgPSBbXTsKKworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYnl0ZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIGJ5dGVTdHJpbmcgPSBieXRlc1tp
XS50b1N0cmluZygxNik7CisgICAgICAgIGlmIChieXRlU3RyaW5nLmxlbmd0aCA8IDIpCisgICAg
ICAgICAgICBieXRlU3RyaW5nID0gIjAiICsgYnl0ZVN0cmluZzsKKyAgICAgICAgaGV4Qnl0ZXMu
cHVzaChieXRlU3RyaW5nKTsKKyAgICB9CisKKyAgICByZXR1cm4gaGV4Qnl0ZXMuam9pbigiIik7
Cit9CisKK2NyeXB0by53ZWJraXRTdWJ0bGUuaW1wb3J0S2V5KCJqd2siLCBhc2NpaVRvVWludDhB
cnJheShKU09OLnN0cmluZ2lmeShwcml2YXRlS2V5SlNPTikpLCBudWxsLCB0cnVlLCBbInNpZ24i
LCAidmVyaWZ5Il0pLnRoZW4oZnVuY3Rpb24oa2V5KSB7CisgICAgdmFyIG9wZW5SZXF1ZXN0ID0g
aW5kZXhlZERCLm9wZW4oImNyeXB0b19zdWJ0bGUiKTsKKyAgICBvcGVuUmVxdWVzdC5vbnVwZ3Jh
ZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICB2YXIgb2JqZWN0U3RvcmUgPSBl
dmVudC50YXJnZXQucmVzdWx0LmNyZWF0ZU9iamVjdFN0b3JlKCJyc2EtaW5kZXhlZGRiIik7Cisg
ICAgfQorICAgIG9wZW5SZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAg
ICB0ZXN0RmFpbGVkKCJDb3VsZCBub3Qgb3BlbiBkYXRhYmFzZTogIiArIGV2ZW50LnRhcmdldC5l
cnJvci5uYW1lKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorICAgIG9wZW5SZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKKyAgICAgICAgc3RvcmVLZXkoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBz
dG9yZUtleSgpIHsKKyAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gZGIudHJhbnNhY3Rpb24oInJz
YS1pbmRleGVkZGIiLCAicmVhZHdyaXRlIikub2JqZWN0U3RvcmUoInJzYS1pbmRleGVkZGIiKTsK
KyAgICAgICAgdmFyIHJlcSA9IG9iamVjdFN0b3JlLnB1dChrZXksICJteWtleSIpOworICAgICAg
ICByZXEub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBhbGVydCgnZmFp
bGVkIHRvIHN0b3JlIGtleScpOworCisgICAgICAgIH0KKyAgICAgICAgcmVxLm9uc3VjY2VzcyA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBhbGVydCgnc3VjY2Vzc2Z1bGx5IHN0b3Jl
ZCBrZXknKTsKKyAgICAgICAgICAgIHJlYWRLZXkoKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGZ1bmN0aW9uIHJlYWRLZXkoKSB7CisgICAgICAgIHZhciBvYmplY3RTdG9yZSA9IGRiLnRyYW5z
YWN0aW9uKCJyc2EtaW5kZXhlZGRiIikub2JqZWN0U3RvcmUoInJzYS1pbmRleGVkZGIiKTsKKyAg
ICAgICAgdmFyIHJlcSA9IG9iamVjdFN0b3JlLmdldCgibXlrZXkiKTsKKyAgICAgICAgcmVxLm9u
ZXJyb3IgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgcmV0cmlldmVGYWlsZWQoKTsK
KyAgICAgICAgfQorICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICAgICAgICAgIHdpbmRvdy5yZXRyaWV2ZWRLZXkgPSBldmVudC50YXJnZXQucmVzdWx0OworICAg
ICAgICAgICAgaWYgKHJldHJpZXZlZEtleS50eXBlICE9ICdwcml2YXRlJykKKyAgICAgICAgICAg
ICAgICByZXR1cm4gYWxlcnQoInJldHJpZXZlZEtleS50eXBlICE9ICdwcml2YXRlJzogIiArIHJl
dHJpZXZlZEtleS50eXBlKTsKKyAgICAgICAgICAgIGlmIChyZXRyaWV2ZWRLZXkuZXh0cmFjdGFi
bGUgIT0gdHJ1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYWxlcnQoInJldHJpZXZlZEtleS5l
eHRyYWN0YWJsZSAhPSB0cnVlOiAiICsgcmV0cmlldmVkS2V5LmV4dHJhY3RhYmxlKTsKKyAgICAg
ICAgICAgIGlmIChyZXRyaWV2ZWRLZXkuYWxnb3JpdGhtLm5hbWUgIT0gJ1JTQVNTQS1QS0NTMS12
MV81JykKKyAgICAgICAgICAgICAgICByZXR1cm4gYWxlcnQoInJldHJpZXZlZEtleS5hbGdvcml0
aG0ubmFtZSAhPSAnUlNBU1NBLVBLQ1MxLXYxXzUnOiAiICsgcmV0cmlldmVkS2V5LmFsZ29yaXRo
bS5uYW1lKTsKKyAgICAgICAgICAgIGlmIChyZXRyaWV2ZWRLZXkuYWxnb3JpdGhtLm1vZHVsdXNM
ZW5ndGggIT0gMjA0OCkKKyAgICAgICAgICAgICAgICByZXR1cm4gYWxlcnQoInJldHJpZXZlZEtl
eS5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aCAhPSAyMDQ4OiAiICsgcmV0cmlldmVkS2V5LmFsZ29y
aXRobS5tb2R1bHVzTGVuZ3RoKTsKKyAgICAgICAgICAgIGlmIChieXRlc1RvSGV4U3RyaW5nKHJl
dHJpZXZlZEtleS5hbGdvcml0aG0ucHVibGljRXhwb25lbnQpICE9ICcwMTAwMDEnKQorICAgICAg
ICAgICAgICAgIHJldHVybiBhbGVydCgiYnl0ZXNUb0hleFN0cmluZyhyZXRyaWV2ZWRLZXkuYWxn
b3JpdGhtLnB1YmxpY0V4cG9uZW50KSAhPSAnMDEwMDAxJzogIiArIGJ5dGVzVG9IZXhTdHJpbmco
cmV0cmlldmVkS2V5LmFsZ29yaXRobS5wdWJsaWNFeHBvbmVudCkpOworICAgICAgICAgICAgaWYg
KHJldHJpZXZlZEtleS51c2FnZXMubGVuZ3RoICE9IDIpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGFsZXJ0KCJyZXRyaWV2ZWRLZXkudXNhZ2VzLmxlbmd0aCAhPSAyOiAiICsgcmV0cmlldmVkS2V5
LnVzYWdlcy5sZW5ndGgpOworICAgICAgICAgICAgaWYgKHJldHJpZXZlZEtleS51c2FnZXNbMF0g
IT0gJ3NpZ24nKQorICAgICAgICAgICAgICAgIHJldHVybiBhbGVydCgicmV0cmlldmVkS2V5LnVz
YWdlc1swXSAhPSAnc2lnbic6ICIgKyByZXRyaWV2ZWRLZXkudXNhZ2VzWzBdKTsKKyAgICAgICAg
ICAgIGlmIChyZXRyaWV2ZWRLZXkudXNhZ2VzWzFdICE9ICd2ZXJpZnknKQorICAgICAgICAgICAg
ICAgIHJldHVybiBhbGVydCgicmV0cmlldmVkS2V5LnVzYWdlc1sxXSAhPSAndmVyaWZ5JzogIiAr
IHJldHJpZXZlZEtleS51c2FnZXNbMV0pOworCisgICAgICAgICAgICBhbGVydCgncmV0cmlldmVk
IHZhbGlkIGtleScpOworICAgICAgICB9CisgICAgfQorfSk7CisKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290382</attachid>
            <date>2016-09-30 14:05:56 -0700</date>
            <delta_ts>2016-09-30 15:09:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162554-20160930140252.patch</filename>
            <type>text/plain</type>
            <size>10820</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTgwYjQyODExNWE5MTk2
YmQ3OWEwNDNhNjczMzVjZGRkYzA1ZTQzYy4uM2Y5YWNkZGEzMzE5MTMwMDYwMTk4ZDQ4MjMzZDVh
MzhhOTBlZmY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE2LTA5LTMwICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChTYWZh
cmkgMTAgY29tYmluZWQgd2l0aCBXSyBjaGFuZ2VzKTogVW5hYmxlIHRvIHN0b3JlIFdlYkNyeXB0
byBrZXlzIGluIEluZGV4ZWREQiBkYXRhYmFzZS4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4
MzM0NDQwPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjU1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNhZmFy
aSAxMCBoYXMgYSBXS1BhZ2VOYXZpZ2F0aW9uIGNsaWVudCBidXQgZG9lcyBub3QgaW1wbGVtZW50
IHRoZSAiY29weVdlYkNyeXB0b01hc3RlcktleSIgY2FsbGJhY2suCisKKyAgICAgICAgV2ViS2l0
IGp1c3QgZmFpbHMgaW4gdGhpcyBjYXNlLCBpbnN0ZWFkIG9mIGZhbGxpbmcgYmFjayB0byAiZ2V0
RGVmYXVsdFdlYkNyeXB0b01hc3RlcktleSIuCisgICAgICAgIEl0IHNob3VsZCBmYWxsIGJhY2su
CisKKyAgICAgICAgQWRkaXRpb25hbGx5IHRoZXJlJ3MgYSBXS0NvbnRleHRDbGllbnQgY2FsbGJh
Y2sgdG8gZ2V0IHRoZSBjcnlwdG8ga2V5LCBhbHNvLCBidXQgaXQgaXMgY29tcGxldGVseSB1bnVz
ZWQuCisgICAgICAgIFNvIGl0IHNob3VsZCBiZSBwdWxsZWQuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUxvYWRlckNsaWVudC5oOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6Ondl
YkNyeXB0b01hc3RlcktleSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAg
ICAgIChXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VO
YXZpZ2F0aW9uQ2xpZW50KTogSWYgdGhlIGNsaWVudCBkb2Vzbid0IGltcGxlbWVudCB0aGlzIG1l
dGhvZCwgZmFsbGJhY2sgdG8gZ2V0RGVmYXVsdFdlYkNyeXB0b01hc3RlcktleS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6
Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViQ3J5cHRvTWFzdGVyS2V5KTog
SWYgdGhlIGNsaWVudCBkb2Vzbid0IGltcGxlbWVudCB0aGlzIG1ldGhvZCwKKyAgICAgICAgICBm
YWxsYmFjayB0byBnZXREZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5LgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvbnRleHRDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
Q2xpZW50Ojpjb3B5V2ViQ3J5cHRvTWFzdGVyS2V5KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQ29udGV4dENsaWVudC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d3JhcENyeXB0b0tleSk6
IE9ubHkgYXNrIHRoZSBOYXZpZ2F0aW9uQ2xpZW50IGJlZm9yZSBmYWxsaW5nIGJhY2suIERvbid0
IGFzayB0aGUgbG9hZGVyIGNsaWVudC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp1
bndyYXBDcnlwdG9LZXkpOiBEaXR0by4KKwogMjAxNi0wOS0zMCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdW2lPU10gQWRkIHJhZGl1c1ggLyByYWRpdXNZ
IC8gcm90YXRpb25BbmdsZSB0byBXZWJQbGF0Zm9ybVRvdWNoUG9pbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUxvYWRlckNsaWVudC5oCmluZGV4IGMxZTgyNzEzOGYwZDE3
ZWM2MDE1YzM5ODQ4MTE2MDA3Y2QyZTRlMDUuLmY5YjZlNDYzMmYwMjRkOWIyNTMzM2MxOWI5ODMz
Yzg2ZjkzNjM1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2Fk
ZXJDbGllbnQuaApAQCAtOTMsOCArOTMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNo
b3VsZEtlZXBDdXJyZW50QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdChXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSopIHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiwgQVBJOjpPYmplY3Qq
KSB7IH0KIAotICAgIHZpcnR1YWwgUmVmUHRyPERhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJL
aXQ6OldlYlBhZ2VQcm94eSYpIHsgcmV0dXJuIG51bGxwdHI7IH0KLQogICAgIHZpcnR1YWwgdm9p
ZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNv
bnN0IFdlYktpdDo6V2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYsIFdlYktpdDo6V2ViRnJhbWVQcm94
eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2ViS2l0
OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwg
V2ViS2l0OjpXZWJGcmFtZVByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1T
ZXJ2ZXJSZWRpcmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwg
Y29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAppbmRleCA0YzRmNDU4MmJmOTg2YmY4
YzQ0ZDFlMTY4OTQ4NDUwNjJhYzVjY2ViLi4xMDdiOWYzOTE2YzMxYzE2ZmRhNTllMDA1ODY2MDU4
MmM1ZDY5MjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5o
CkBAIC03NSw3ICs3NSw3IEBAIHR5cGVkZWYgc3RydWN0IFdLQ29udGV4dENsaWVudFYxIHsKICAg
ICBXS0NvbnRleHRQbHVnSW5JbmZvcm1hdGlvbkJlY2FtZUF2YWlsYWJsZUNhbGxiYWNrICAgICAg
ICAgICAgICAgICAgIHBsdWdJbkluZm9ybWF0aW9uQmVjYW1lQXZhaWxhYmxlOwogCiAgICAgLy8g
VmVyc2lvbiAxLgotICAgIFdLQ29udGV4dENvcHlXZWJDcnlwdG9NYXN0ZXJLZXlDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weVdlYkNyeXB0b01hc3RlcktleTsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICgqY29weVdlYkNyeXB0b01hc3RlcktleV91bmF2YWlsYWJsZSkodm9pZCk7CiB9
IFdLQ29udGV4dENsaWVudFYxOwogCiB0eXBlZGVmIHN0cnVjdCBXS0NvbnRleHRDbGllbnRWMiB7
CkBAIC04Nyw3ICs4Nyw3IEBAIHR5cGVkZWYgc3RydWN0IFdLQ29udGV4dENsaWVudFYyIHsKICAg
ICBXS0NvbnRleHRQbHVnSW5JbmZvcm1hdGlvbkJlY2FtZUF2YWlsYWJsZUNhbGxiYWNrICAgICAg
ICAgICAgICAgICAgIHBsdWdJbkluZm9ybWF0aW9uQmVjYW1lQXZhaWxhYmxlOwogCiAgICAgLy8g
VmVyc2lvbiAxLgotICAgIFdLQ29udGV4dENvcHlXZWJDcnlwdG9NYXN0ZXJLZXlDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weVdlYkNyeXB0b01hc3RlcktleTsKKyAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICgqY29weVdlYkNyeXB0b01hc3RlcktleV91bmF2YWlsYWJsZSkodm9pZCk7CiAK
ICAgICAvLyBWZXJzaW9uIDIuCiAgICAgV0tDb250ZXh0RGF0YWJhc2VQcm9jZXNzRGlkQ3Jhc2hD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhYmFzZVByb2Nlc3NEaWRDcmFz
aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggNjBkMDVm
MjY1YjkyOGUyMzkwNzQ0NDk1YTRlOWY5YzI0YzEzMTI4ZC4uMTUyYzMwODgxYjljYWM0MjFhYjM1
NzhlMWNmZjQzM2QxOGI3MmNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJXZWJQcm90ZWN0aW9uU3BhY2Uu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZENyeXB0b0tleVdyYXAu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAKICNpZmRlZiBfX0JMT0NL
U19fCkBAIC0xMjE1LDExICsxMjE2LDYgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50
KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKgogICAgICAg
ICAgICAgICAgIG1fY2xpZW50LndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSh0b0FQSSgmcGFn
ZSksIHRvQVBJKGl0ZW0pLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9NYXN0
ZXJLZXkoV2ViUGFnZVByb3h5JiBwYWdlKSBvdmVycmlkZQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5jbGllbnQoKS5jb3B5V2ViQ3J5
cHRvTWFzdGVyS2V5KCZwYWdlLnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpKTsKLSAgICAgICAgfQot
CiAgICAgICAgIHZvaWQgbmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbihXZWJQYWdlUHJveHkmIHBh
Z2UpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5uYXZpZ2F0
aW9uR2VzdHVyZURpZEJlZ2luKQpAQCAtMjMyNyw5ICsyMzIzLDE0IEBAIHZvaWQgV0tQYWdlU2V0
UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZU5hdmln
YXRpb25DbGllCiAKICAgICAgICAgUmVmUHRyPEFQSTo6RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5
KFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKICAgICAgICAgewotICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5jb3B5V2ViQ3J5cHRvTWFzdGVyS2V5KQorICAgICAgICAgICAgaWYgKG1fY2xp
ZW50LmNvcHlXZWJDcnlwdG9NYXN0ZXJLZXkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKHRvSW1wbChtX2NsaWVudC5jb3B5V2ViQ3J5cHRvTWFzdGVyS2V5KHRvQVBJKCZwYWdlKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSkpOworCisgICAgICAgICAgICBWZWN0b3I8dWludDhf
dD4gbWFzdGVyS2V5OworICAgICAgICAgICAgaWYgKCFnZXREZWZhdWx0V2ViQ3J5cHRvTWFzdGVy
S2V5KG1hc3RlcktleSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNvcHlXZWJDcnlwdG9NYXN0ZXJL
ZXkodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSk7CisKKyAgICAgICAg
ICAgIHJldHVybiBBUEk6OkRhdGE6OmNyZWF0ZShtYXN0ZXJLZXkuZGF0YSgpLCBtYXN0ZXJLZXku
c2l6ZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZGlkQmVnaW5OYXZpZ2F0aW9uR2Vz
dHVyZShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCAxODA3NzdmMTU3NDM5OGQ3
MDlmZTk2MWNjZjBlZDkyNTk3YTkyZDQ4Li40NTI5OTIyYjRmYmY2YmY1MzFjN2MwNWE3YzIyM2I2
MzUxNDMyNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0KQEAgLTY0LDYgKzY0LDcgQEAKICNpbXBvcnQgIl9XS1NhbWVEb2N1bWVu
dE5hdmlnYXRpb25UeXBlSW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ3JlZGVudGlhbC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvU2VyaWFsaXplZENyeXB0b0tleVdyYXAuaD4KICNpbXBvcnQgPFdlYkNvcmUvVVJMLmg+CiAj
aW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNzE5LDggKzcyMCwxMyBAQCB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6cHJvY2Vzc0RpZEJlY29tZVVucmVz
cG9uc2l2ZShXZWJLaXQ6OldlYgogCiBSZWZQdHI8QVBJOjpEYXRhPiBOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6OndlYkNyeXB0b01hc3RlcktleShXZWJLaXQ6OldlYlBhZ2VQcm94
eSYpCiB7Ci0gICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1l
dGhvZHMud2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldykKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhv
ZHMud2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldykgeworICAgICAgICBWZWN0b3I8dWludDhf
dD4gbWFzdGVyS2V5OworICAgICAgICBpZiAoIWdldERlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXko
bWFzdGVyS2V5KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAgIHJldHVy
biBBUEk6OkRhdGE6OmNyZWF0ZShtYXN0ZXJLZXkuZGF0YSgpLCBtYXN0ZXJLZXkuc2l6ZSgpKTsK
KyAgICB9CiAKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRl
Lm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOwogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHRDbGllbnQuY3BwCmluZGV4
IDcyYTFhYmYxZDNhYWM2Nzc0ZWZlNzlkMWNlZTM4ZTE1ZGQ1ZGE3M2UuLjY0ZGJkZWZhZjBiYTI3
MjBkZDdiZWEyZDkzOWI4MTYwN2U2YWQ5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dENsaWVudC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0Q2xpZW50LmgiCiAKLSNpbmNsdWRlICJBUElBcnJh
eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNTUsMTIgKzU0LDQgQEAgdm9pZCBXZWJDb250ZXh0Q2xpZW50OjpkYXRhYmFzZVByb2Nlc3NE
aWRDcmFzaChXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiAgICAgbV9jbGllbnQuZGF0YWJh
c2VQcm9jZXNzRGlkQ3Jhc2godG9BUEkocHJvY2Vzc1Bvb2wpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwogfQogCi1QYXNzUmVmUHRyPEFQSTo6RGF0YT4gV2ViQ29udGV4dENsaWVudDo6Y29w
eVdlYkNyeXB0b01hc3RlcktleShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCi17Ci0gICAg
aWYgKCFtX2NsaWVudC5jb3B5V2ViQ3J5cHRvTWFzdGVyS2V5KQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIHJldHVybiBhZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY29weVdlYkNyeXB0
b01hc3RlcktleSh0b0FQSShwcm9jZXNzUG9vbCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykp
KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dENsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHRDbGllbnQuaAppbmRleCA3Zjc1MjFlODBhZTliZDRjNzI2MjNkZTM5NWMzNjkz
YTdjZGViYzIwLi5iMjVjNGQzYjlkNGE5MmVkZTE2MjY4MGJhYTc0NjFkNzdjZDIxNWUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dENsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Q2xpZW50LmgKQEAgLTMxLDggKzMx
LDYgQEAKICNpbmNsdWRlICJXS0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIEFQSSB7Ci1jbGFzcyBB
cnJheTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQ29udGV4dENsaWVudEJh
c2U+IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tDb250ZXh0Q2xpZW50VjAsIFdLQ29udGV4
dENsaWVudFYxLCBXS0NvbnRleHRDbGllbnRWMj4gVmVyc2lvbnM7CiB9OwpAQCAtNDgsNyArNDYs
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXNDaGFuZ2Vk
KFdlYlByb2Nlc3NQb29sKik7CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0RpZENyYXNoKFdlYlBy
b2Nlc3NQb29sKik7CiAgICAgdm9pZCBkYXRhYmFzZVByb2Nlc3NEaWRDcmFzaChXZWJQcm9jZXNz
UG9vbCopOwotICAgIFBhc3NSZWZQdHI8QVBJOjpEYXRhPiBjb3B5V2ViQ3J5cHRvTWFzdGVyS2V5
KFdlYlByb2Nlc3NQb29sKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMDJmZmQxODRkMjE3N2QyMjM3
ZjRlODI0YWZiMDVjNmRiY2RhMGZjZi4uM2ZmNWI3Y2E5YzY4YTBjNGIxODY5NzNkZDkwMThkYzk3
YmQ4YWVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTYxNDUsOSArNjE0NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3cmFwQ3J5cHRvS2V5KGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYga2V5LCBib29sJiBzdWNjZWVkZWQsIFZlCiAgICAgaWYgKG1fbmF2
aWdhdGlvbkNsaWVudCkgewogICAgICAgICBpZiAoUmVmUHRyPEFQSTo6RGF0YT4ga2V5RGF0YSA9
IG1fbmF2aWdhdGlvbkNsaWVudC0+d2ViQ3J5cHRvTWFzdGVyS2V5KCp0aGlzKSkKICAgICAgICAg
ICAgIG1hc3RlcktleSA9IGtleURhdGEtPmRhdGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKLSAgICB9
IGVsc2UgaWYgKFJlZlB0cjxBUEk6OkRhdGE+IGtleURhdGEgPSBtX2xvYWRlckNsaWVudC0+d2Vi
Q3J5cHRvTWFzdGVyS2V5KCp0aGlzKSkKLSAgICAgICAgbWFzdGVyS2V5ID0ga2V5RGF0YS0+ZGF0
YVJlZmVyZW5jZSgpLnZlY3RvcigpOwotICAgIGVsc2UgaWYgKCFnZXREZWZhdWx0V2ViQ3J5cHRv
TWFzdGVyS2V5KG1hc3RlcktleSkpIHsKKyAgICB9IGVsc2UgaWYgKCFnZXREZWZhdWx0V2ViQ3J5
cHRvTWFzdGVyS2V5KG1hc3RlcktleSkpIHsKICAgICAgICAgc3VjY2VlZGVkID0gZmFsc2U7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MTY0LDkgKzYxNjIsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwg
Ym9vbCYgc3VjYwogICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpIHsKICAgICAgICAgaWYgKFJl
ZlB0cjxBUEk6OkRhdGE+IGtleURhdGEgPSBtX25hdmlnYXRpb25DbGllbnQtPndlYkNyeXB0b01h
c3RlcktleSgqdGhpcykpCiAgICAgICAgICAgICBtYXN0ZXJLZXkgPSBrZXlEYXRhLT5kYXRhUmVm
ZXJlbmNlKCkudmVjdG9yKCk7Ci0gICAgfSBlbHNlIGlmIChSZWZQdHI8QVBJOjpEYXRhPiBrZXlE
YXRhID0gbV9sb2FkZXJDbGllbnQtPndlYkNyeXB0b01hc3RlcktleSgqdGhpcykpCi0gICAgICAg
IG1hc3RlcktleSA9IGtleURhdGEtPmRhdGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKLSAgICBlbHNl
IGlmICghZ2V0RGVmYXVsdFdlYkNyeXB0b01hc3RlcktleShtYXN0ZXJLZXkpKSB7CisgICAgfSBl
bHNlIGlmICghZ2V0RGVmYXVsdFdlYkNyeXB0b01hc3RlcktleShtYXN0ZXJLZXkpKSB7CiAgICAg
ICAgIHN1Y2NlZWRlZCA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQo=
</data>
<flag name="review"
          id="313572"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>294873</attachid>
            <date>2016-11-15 13:43:28 -0800</date>
            <delta_ts>2016-11-15 13:43:28 -0800</delta_ts>
            <desc>New test case to highlight the issue with saving the CryptoKeyPair</desc>
            <filename>crypto-safari-test.html</filename>
            <type>text/html</type>
            <size>3725</size>
            <attacher name="Jason Mei">jason.mei</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+DQo8aHRtbCBsYW5nPSJlbiI+DQo8aGVhZD4NCiAgICA8bWV0YSBjaGFy
c2V0PSJVVEYtOCI+DQogICAgPHRpdGxlPlN0b3JlIFJTQSBrZXlwYWlyIGluIEluZGV4ZWREQjwv
dGl0bGU+DQogICAgPHNjcmlwdD4NCiAgICAgICAgdmFyIF9pZGIgPSB3aW5kb3cuaW5kZXhlZERC
Ow0KICAgICAgICB2YXIgX2RiID0gbnVsbDsNCiAgICAgICAgdmFyIF90ZXN0REIgPSAiUlNBX1Rl
c3REQiI7DQogICAgICAgIHZhciBfdGVzdFN0b3JlID0gInJzYWtleXMiOw0KDQogICAgICAgIHZh
ciBDID0gZnVuY3Rpb24oKSB7DQogICAgICAgICAgICBpZiAoIWNyeXB0bykgew0KICAgICAgICAg
ICAgICAgIGFsZXJ0KCJDcnlwdG8gbm90IHN1cHBvcnRlZCIpOw0KICAgICAgICAgICAgfQ0KICAg
ICAgICAgICAgaWYgKGNyeXB0by53ZWJraXRTdWJ0bGUpIHsNCiAgICAgICAgICAgICAgICByZXR1
cm4gY3J5cHRvLndlYmtpdFN1YnRsZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2Ug
ew0KICAgICAgICAgICAgICAgIHJldHVybiBjcnlwdG8uc3VidGxlOw0KICAgICAgICAgICAgfQ0K
ICAgICAgICB9Ow0KDQogICAgICAgIGZ1bmN0aW9uIGdlbmVyYXRlS2V5UGFpcigpIHsNCiAgICAg
ICAgICAgIHZhciBhbGdvID0gew0KICAgICAgICAgICAgICAgIG5hbWU6ICJSU0EtT0FFUCIsDQog
ICAgICAgICAgICAgICAgbW9kdWx1c0xlbmd0aDogMjA0OCwNCiAgICAgICAgICAgICAgICBwdWJs
aWNFeHBvbmVudDogbmV3IFVpbnQ4QXJyYXkoWzB4MDEsIDB4MDAsIDB4MDFdKSwNCiAgICAgICAg
ICAgICAgICBoYXNoOiB7bmFtZTogIlNIQS0xIn0NCiAgICAgICAgICAgIH07DQoNCiAgICAgICAg
ICAgIHZhciBnZW5lcmF0ZSA9IGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsNCiAgICAgICAg
ICAgICAgICBDKCkuZ2VuZXJhdGVLZXkoYWxnbywgZmFsc2UsIFsiZW5jcnlwdCIsICJkZWNyeXB0
Il0pLnRoZW4oZnVuY3Rpb24gKGtleVBhaXIpIHsNCiAgICAgICAgICAgICAgICAgICAgcmVzb2x2
ZShrZXlQYWlyKTsNCiAgICAgICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsN
CiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTsNCiAgICAgICAgICAgICAgICB9KTsN
CiAgICAgICAgICAgIH07DQogICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZ2VuZXJhdGUp
Ow0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gb3BlbkRCKHJlc29sdmUsIHJlamVjdCkg
ew0KICAgICAgICAgICAgaWYgKF9kYikgew0KICAgICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7
DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHZhciByZXEgPSBfaWRiLm9wZW4oX3Rlc3RE
QiwgMSk7DQogICAgICAgICAgICByZXEub25zdWNjZXNzID0gZnVuY3Rpb24gKGV2ZW50KSB7DQog
ICAgICAgICAgICAgICAgX2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsNCiAgICAgICAgICAgICAg
ICByZXNvbHZlKHRydWUpOw0KICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIHJlcS5vbmVycm9y
ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgIHJlamVjdChyZXEuZXJyb3IpOw0KICAg
ICAgICAgICAgfTsNCg0KICAgICAgICAgICAgcmVxLm9uYmxvY2tlZCA9IGZ1bmN0aW9uICgpIHsN
CiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCJEQiBpcyBibG9ja2VkLCB1bmFibGUg
dG8gb3BlbiAiKSk7DQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICByZXEub251cGdyYWRl
bmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsNCiAgICAgICAgICAgICAgICBfZGIgPSBldmVudC50
YXJnZXQucmVzdWx0Ow0KICAgICAgICAgICAgICAgIHZhciBvcHRzID0gew0KICAgICAgICAgICAg
ICAgICAgICBrZXlQYXRoOiAia2V5IiwNCiAgICAgICAgICAgICAgICAgICAgYXV0b0luY3JlbWVu
dDogZmFsc2UNCiAgICAgICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICAgICAgdmFyIHN0b3Jl
ID0gX2RiLmNyZWF0ZU9iamVjdFN0b3JlKF90ZXN0U3RvcmUsIG9wdHMpOw0KICAgICAgICAgICAg
ICAgIGlmICghc3RvcmUpIHsNCiAgICAgICAgICAgICAgICAgICAgLy9ub2luc3BlY3Rpb24gRXhj
ZXB0aW9uQ2F1Z2h0TG9jYWxseUpTDQogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiU3RvcmUgY3JlYXRpb24gcmV0dXJuZWQgbnVsbCIpOw0KICAgICAgICAgICAgICAgIH0NCiAg
ICAgICAgICAgICAgICByZXNvbHZlKHRydWUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoN
CiAgICAgICAgZnVuY3Rpb24gcHV0KGtleVBhaXIpIHsNCiAgICAgICAgICAgIHZhciBzdG9yZUtl
eVBhaXIgPSBmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsNCiAgICAgICAgICAgICAgICB2YXIg
dHggPSBfZGIudHJhbnNhY3Rpb24oW190ZXN0U3RvcmVdLCAicmVhZHdyaXRlIik7DQogICAgICAg
ICAgICAgICAgdHgub25jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAg
ICAgcmVzb2x2ZSh0cnVlKTsNCiAgICAgICAgICAgICAgICB9Ow0KICAgICAgICAgICAgICAgIHR4
Lm9uYWJvcnQgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgIHJlamVjdCh0eC5l
cnJvcik7DQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgICAgICB0eC5vbmVycm9yID0g
ZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICByZWplY3QodHguZXJyb3IpOw0KICAg
ICAgICAgICAgICAgIH07DQoNCiAgICAgICAgICAgICAgICB2YXIgc3RvcmUgPSB0eC5vYmplY3RT
dG9yZShfdGVzdFN0b3JlKTsNCiAgICAgICAgICAgICAgICBrZXlQYWlyLmtleT0xOw0KICAgICAg
ICAgICAgICAgIC8qcmV0dXJuIHN0b3JlLnB1dCh7DQogICAgICAgICAgICAgICAgICAgIGtleSA6
IDEsDQogICAgICAgICAgICAgICAgICAgIHB1YmtleSA6IGtleVBhaXIucHVibGljS2V5LA0KICAg
ICAgICAgICAgICAgICAgICBwcml2a2V5IDoga2V5UGFpci5wcml2YXRlS2V5DQogICAgICAgICAg
ICAgICAgfSk7Ki8NCg0KICAgICAgICAgICAgICAgIHJldHVybiBzdG9yZS5wdXQoa2V5UGFpcik7
DQogICAgICAgICAgICB9Ow0KDQogICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uoc3RvcmVL
ZXlQYWlyKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHRlc3QoKSB7DQogICAgICAg
ICAgICByZXR1cm4gbmV3IFByb21pc2Uob3BlbkRCKS50aGVuKGZ1bmN0aW9uKCkgew0KICAgICAg
ICAgICAgICAgIHJldHVybiBnZW5lcmF0ZUtleVBhaXIoKTsNCiAgICAgICAgICAgIH0pLnRoZW4o
ZnVuY3Rpb24oa2V5cGFpcikgew0KICAgICAgICAgICAgICAgIHJldHVybiBwdXQoa2V5cGFpcik7
DQogICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgIGFsZXJ0
KCJ3b3JrcyEiKTsNCiAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7DQogICAg
ICAgICAgICAgICAgYWxlcnQoImZhaWxzIHdpdGggZXJyb3IgIiArIChlcnJvciA/IGVycm9yLm1l
c3NhZ2UgfHwgZXJyb3IubmFtZSB8fCBlcnJvciA6ICIodW5rbm93bikiKSk7DQogICAgICAgICAg
ICB9KTsNCiAgICAgICAgfQ0KICAgIDwvc2NyaXB0Pg0KPC9oZWFkPg0KPGJvZHk+DQo8YnV0dG9u
IGlkPSJ0ZXN0IiBvbmNsaWNrPSJ0ZXN0KCkiPlRlc3QgUlNBIGFuZCBJbmRleGVkREI8L2J1dHRv
bj4NCjwvYm9keT4NCjwvaHRtbD4=
</data>

          </attachment>
      

    </bug>

</bugzilla>