<?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>133344</bug_id>
          
          <creation_ts>2014-05-28 03:52:42 -0700</creation_ts>
          <short_desc>[GTK] Adds implementation of subtle crypto AES-CBC algorithm</short_desc>
          <delta_ts>2022-02-28 03:26:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>170550</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>133316</dependson>
    
    <dependson>133317</dependson>
          <blocked>133122</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eduardo Lima Mitev">elima</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1012181</commentid>
    <comment_count>0</comment_count>
    <who name="Eduardo Lima Mitev">elima</who>
    <bug_when>2014-05-28 03:52:42 -0700</bug_when>
    <thetext>[GTK] Adds implementation of subtle crypto AES-CBC algorithm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012182</commentid>
    <comment_count>1</comment_count>
      <attachid>232189</attachid>
    <who name="Eduardo Lima Mitev">elima</who>
    <bug_when>2014-05-28 03:57:56 -0700</bug_when>
    <thetext>Created attachment 232189
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012184</commentid>
    <comment_count>2</comment_count>
    <who name="Eduardo Lima Mitev">elima</who>
    <bug_when>2014-05-28 03:59:30 -0700</bug_when>
    <thetext>Adding dependency on bug 133316 and bug 133317.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036747</commentid>
    <comment_count>3</comment_count>
      <attachid>238545</attachid>
    <who name="Eduardo Lima Mitev">elima</who>
    <bug_when>2014-09-23 09:46:02 -0700</bug_when>
    <thetext>Created attachment 238545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036748</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-23 09:47:17 -0700</bug_when>
    <thetext>Attachment 238545 did not pass style-queue:


ERROR: Source/WebCore/crypto/gtk/CryptoAlgorithmAES_CBCGtk.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036927</commentid>
    <comment_count>5</comment_count>
      <attachid>238545</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-09-24 00:49:14 -0700</bug_when>
    <thetext>Comment on attachment 238545
Patch

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

&gt; Source/WebCore/crypto/gtk/CryptoAlgorithmAES_CBCGtk.cpp:39
&gt; +static gnutls_cipher_hd_t createCipher(const CryptoAlgorithmAesCbcParams&amp; parameters, const CryptoKeyAES&amp; key, gnutls_cipher_algorithm_t *algorithm)

Misplaced * :) Also perhaps a smart pointer could be used instead of a raw pointer here.

&gt; Source/WebCore/crypto/gtk/CryptoAlgorithmAES_CBCGtk.cpp:51
&gt; +    gnutlsKey.data =  (unsigned char*) key.key().data();

We avoid C-style casts in WebCore, here I think a reinterpret_cast might work.

&gt; Source/WebCore/crypto/gtk/CryptoAlgorithmAES_CBCGtk.cpp:55
&gt; +    gnutlsIv.data = (unsigned char*) parameters.iv.data();

Ditto

&gt; Source/WebCore/crypto/gtk/CryptoAlgorithmAES_CBCGtk.cpp:68
&gt; +    gnutls_cipher_algorithm_t algo;

algorithm

&gt; Source/WebCore/crypto/gtk/CryptoAlgorithmAES_CBCGtk.cpp:71
&gt; +        failureCallback();

No need to set ExceptionCode here?

&gt; Source/WebCore/crypto/gtk/CryptoAlgorithmAES_CBCGtk.cpp:90
&gt; +            failureCallback();

No need to set ExceptionCode here?

&gt; Source/WebCore/crypto/gtk/CryptoAlgorithmAES_CBCGtk.cpp:104
&gt; +        failureCallback();

No need to set ExceptionCode here?

&gt; Source/WebCore/crypto/gtk/CryptoAlgorithmAES_CBCGtk.cpp:112
&gt; +void CryptoAlgorithmAES_CBC::platformDecrypt(const CryptoAlgorithmAesCbcParams&amp; parameters, const CryptoKeyAES&amp; key, const CryptoOperationData&amp; data, VectorCallback callback, VoidCallback failureCallback, ExceptionCode&amp;)

Same comments as in previous method</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036981</commentid>
    <comment_count>6</comment_count>
      <attachid>238601</attachid>
    <who name="Eduardo Lima Mitev">elima</who>
    <bug_when>2014-09-24 10:25:17 -0700</bug_when>
    <thetext>Created attachment 238601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036985</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-24 10:27:49 -0700</bug_when>
    <thetext>Attachment 238601 did not pass style-queue:


ERROR: Source/WebCore/crypto/gtk/CryptoAlgorithmAES_CBCGtk.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037167</commentid>
    <comment_count>8</comment_count>
      <attachid>238601</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-09-24 23:56:27 -0700</bug_when>
    <thetext>Comment on attachment 238601
Patch

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

&gt; Source/WebCore/crypto/CryptoExceptionCode.h:38
&gt; +    CryptoNotSupportedErr,
&gt; +    CryptoInvalidAccessErr,
&gt; +    CryptoTypeMismatchErr,
&gt; +    CryptoExceededQuotaErr,
&gt; +    CryptoSyntaxErr,

These are in Source/WebCore/dom/DOMCoreException.idl already

&gt; Source/WebCore/crypto/CryptoExceptionCode.h:39
&gt; +    CryptoOperationErr

I think you&apos;d need to add the DataErr and OperationErr in the idl files of the subtlecrypto module instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038212</commentid>
    <comment_count>9</comment_count>
      <attachid>238601</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-09-30 07:11:55 -0700</bug_when>
    <thetext>Comment on attachment 238601
Patch

r- as per review in previous comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1052720</commentid>
    <comment_count>10</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2014-12-05 06:59:49 -0800</bug_when>
    <thetext>You&apos;ll need a rebase of the patch, the files were renamed when included in the EFL build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053341</commentid>
    <comment_count>11</comment_count>
      <attachid>242797</attachid>
    <who name="Eduardo Lima Mitev">elima</who>
    <bug_when>2014-12-08 03:22:26 -0800</bug_when>
    <thetext>Created attachment 242797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053343</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-08 03:24:20 -0800</bug_when>
    <thetext>Attachment 242797 did not pass style-queue:


ERROR: Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1053344</commentid>
    <comment_count>13</comment_count>
    <who name="Eduardo Lima Mitev">elima</who>
    <bug_when>2014-12-08 03:25:54 -0800</bug_when>
    <thetext>Philn, I just uploaded a rebased version of the patch, but it still doesn&apos;t address your comments about generating the enums from subtle crypto IDL files. I&apos;m still getting that to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088086</commentid>
    <comment_count>14</comment_count>
      <attachid>242797</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-04-23 16:16:16 -0700</bug_when>
    <thetext>Comment on attachment 242797
Patch

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

This patch needs a bit more work. It&apos;s a bit of a nitpick, but please use comments that align with WebKit style (full sentences with capital letter and a period).

&gt; Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:41
&gt; +    ASSERT(sizeof(parameters.iv) == gnutls_cipher_get_iv_size(algorithm));

If this cannot be a static assertion, it should be a runtime failure IMO. Causing a runtime error on a debug build isn&apos;t useful when this is on some random system that isn&apos;t using a debug build.

&gt; Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:45
&gt; +        return 0;

This should be nullptr, since the handle is a pointer.

&gt; Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:52
&gt; +    gnutlsIv.data = const_cast&lt;unsigned char *&gt;(reinterpret_cast&lt;const unsigned char*&gt;(parameters.iv.data()));

Kinda spooky to cast away the constness.

&gt; Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:58
&gt; +    int ret = gnutls_cipher_init(&amp;cipher, algorithm, &amp;gnutlsKey, &amp;gnutlsIv);
&gt; +    if (ret != GNUTLS_E_SUCCESS)
&gt; +        return 0;

No need for the temporary value here.

&gt; Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:66
&gt; +    // in this context, AES_256_CBC is a valid algorithm also for 128 and 192
&gt; +    gnutls_cipher_algorithm_t algorithm = GNUTLS_CIPHER_AES_128_CBC;

If AES_256_CBC is valid, why do you then use GNUTLS_CIPHER_AES_128_CBC. Perhaps either the code of the comment is incorrect?

&gt; Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:70
&gt; +        ec = CryptoDataErr;

The exception code isn&apos;t set for the Mac port. It&apos;s best to match behavior for now and fix the problem all at once in a separate bug, I think. Compatibility with other WebKit ports is more important for the moment, and we want this work to keep moving forward.

&gt; Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:79
&gt; +    uint8_t paddingSize = blockSize - (dataSize % blockSize);
&gt; +    size_t paddedSize = (dataSize / blockSize) * blockSize;

It might be clearer to calculate one in terms of the other.

&gt; Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:88
&gt; +    int ret;
&gt; +    if (paddedSize &gt; 0) {
&gt; +        ret = gnutls_cipher_encrypt2(cipher, (void *) data.first, paddedSize, (void *) result.data(), paddedSize);
&gt; +        if (ret != GNUTLS_E_SUCCESS) {

&apos;ret&apos; is unnecessary here. You should not use C-style casts in C++ code. If code accepts void pointers, perhaps the cast is unnecessary to begin with?

&gt; Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:99
&gt; +    // Add PKCS7 padding &lt;http://tools.ietf.org/html/rfc5652#section-6.3&gt;
&gt; +    // and encrypt last block
&gt; +    memcpy(result.data() + paddedSize, data.first + paddedSize, blockSize - paddingSize);
&gt; +    memset(result.data() + cipherTextSize - paddingSize, paddingSize, paddingSize);

I wonder if it is possible to calculate the result directly into the result vector and avoid the copy.

&gt; Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:103
&gt; +    ret = gnutls_cipher_encrypt2(cipher, result.data() + paddedSize, blockSize, (void *) (result.data() + paddedSize), blockSize);
&gt; +    if (ret != GNUTLS_E_SUCCESS) {

You can avoid ret here as well.

&gt; Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:105
&gt; +            ec = CryptoOperationErr;

Indentation is wrong here.

&gt; Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:126
&gt; +    Vector&lt;uint8_t&gt; result(data.second);

The Mac port asks CommonCrypto for the size. Why don&apos;t we have to do that here?

&gt; Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:128
&gt; +    int ret = gnutls_cipher_decrypt2(cipher, data.first, data.second, (void *) result.data(), result.size());
&gt; +    if (ret != GNUTLS_E_SUCCESS) {

ret can be eliminated.

&gt; Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:136
&gt; +    size_t dataSize = result.size();

If you are going to store this in a variable, I&apos;d do it before you use data.second and call it resultDataSize for clarity.

&gt; Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:138
&gt; +    uint8_t paddingSize = result.data() [dataSize - 1];

Extra space after data().

&gt; Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:147
&gt; +        if (result.data() [dataSize - i] != paddingSize) {

Ditto.

&gt; Source/WebCore/crypto/gnutls/CryptoAlgorithmAES_CBCGnuTLS.cpp:155
&gt; +    result.shrink(dataSize - paddingSize);

Ah, perhaps this is where we determine the output size? Is it possible to calculate ahead of time and avoid the extra memory allocation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293505</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-04-01 18:07:11 -0700</bug_when>
    <thetext>Zan, what are your plans for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293585</commentid>
    <comment_count>16</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-02 23:33:49 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #15)
&gt; Zan, what are your plans for this?

libgcrypt-based implementation is currently stashed in the patch in bug #133122.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1295279</commentid>
    <comment_count>17</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-04-07 05:06:15 -0700</bug_when>
    <thetext>Forgot there was an existing bug for CBC support -- finished in bug #170550.

*** This bug has been marked as a duplicate of bug 170550 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232189</attachid>
            <date>2014-05-28 03:57:56 -0700</date>
            <delta_ts>2014-09-23 09:45:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133344-20140528125731.patch</filename>
            <type>text/plain</type>
            <size>6457</size>
            <attacher name="Eduardo Lima Mitev">elima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5NDE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA5NzQ5NWQ3ODgwNzk5
ZWExMzViNzY4MWNjNTliMjY4NTU5MmU0ZC4uNjkzMzEwYTk5Mjk0N2ZkZTdjZDlkYTIxNDEwYWZl
YzYxNzNjZGE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTA1LTI4ICBFZHVh
cmRvIExpbWEgTWl0ZXYgIDxlbGltYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZHMg
aW1wbGVtZW50YXRpb24gb2Ygc3VidGxlIGNyeXB0byBBRVMtQ0JDIGFsZ29yaXRobQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMzQ0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgYXJlIGFscmVh
ZHkgaW4gcGxhY2UgdW5kZXIgY3J5cHRvL3N1YnRsZS9hZXMtY2JjLSouaHRtbAorCisgICAgICAg
ICogY3J5cHRvL2d0ay9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR3RrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUNpcGhlcik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1B
RVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtQUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0KToKKwogMjAxNC0wNS0yNyAgRWR1YXJkbyBMaW1h
IE1pdGV2ICA8ZWxpbWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgR251VExTIGxp
YnJhcmllcyBhbmQgaW5jbHVkZWQgZGlycyB0byBXZWJDb3JlIHRhcmdldHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9ndGsvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0d0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ3RrL0NyeXB0b0FsZ29yaXRobUFFU19DQkNHdGsuY3Bw
CmluZGV4IDRiMDJiYTY2NTY4ZTgzNzdiNDhmNjA4NjgzZDNlYWE1M2E1ZDEyMDkuLjM1YmU4ZWY1
NTVkNTYxZjExNWYwMWM0NmI0ODcyY2QxNTk1MWYwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9ndGsvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0d0ay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2d0ay9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR3RrLmNwcApAQCAtMzEs
MzEgKzMxLDEyMyBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcy5oIgog
I2luY2x1ZGUgIkNyeXB0b0tleUFFUy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNp
bmNsdWRlIDxnbnV0bHMvZ251dGxzLmg+CisjaW5jbHVkZSA8Z251dGxzL2NyeXB0by5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZv
cm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcyYgcGFyYW1ldGVycywg
Y29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEs
IFZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJiBlYykKK3N0YXRpYyBnbnV0bHNfY2lwaGVyX2hkX3QgY3JlYXRlQ2lwaGVy
KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5
cHRvS2V5QUVTJiBrZXksIGdudXRsc19jaXBoZXJfYWxnb3JpdGhtX3QgKmFsZ28pCiB7Ci0gICAg
Ly8gVW5pbXBsZW1lbnRlZCBhbGdvcml0aG0gc3R1YgotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9F
UlI7Ci0gICAgZmFpbHVyZUNhbGxiYWNrKCk7Ci0KLSAgICBVTlVTRURfUEFSQU0ocGFyYW1ldGVy
cyk7Ci0gICAgVU5VU0VEX1BBUkFNKGtleSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAg
IFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CisgICAgLy8gaW4gdGhpcyBjb250ZXh0LCBBRVNfMjU2
X0NCQyBpcyBhIHZhbGlkIGFsZ29yaXRobSBhbHNvIGZvciAxMjggYW5kIDE5MgorICAgICphbGdv
ID0gR05VVExTX0NJUEhFUl9BRVNfMTI4X0NCQzsKKworICAgIEFTU0VSVChzaXplb2YocGFyYW1l
dGVycy5pdikgPT0gZ251dGxzX2NpcGhlcl9nZXRfaXZfc2l6ZSgqYWxnbykpOworCisgICAgc2l6
ZV90IGtleUxlbmd0aEluQnl0ZXMgPSBrZXkua2V5KCkuc2l6ZSgpOworICAgIGlmIChrZXlMZW5n
dGhJbkJ5dGVzICE9IDE2ICYmIGtleUxlbmd0aEluQnl0ZXMgIT0gMjQgJiYga2V5TGVuZ3RoSW5C
eXRlcyAhPSAzMikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBnbnV0bHNfZGF0dW1fdCBnbnV0
bHNLZXk7CisgICAgZ251dGxzS2V5LmRhdGEgPSAgKHVuc2lnbmVkIGNoYXIqKSBrZXkua2V5KCku
ZGF0YSgpOworICAgIGdudXRsc0tleS5zaXplID0ga2V5TGVuZ3RoSW5CeXRlczsKKworICAgIGdu
dXRsc19kYXR1bV90IGdudXRsc0l2OworICAgIGdudXRsc0l2LmRhdGEgPSAodW5zaWduZWQgY2hh
ciopIHBhcmFtZXRlcnMuaXYuZGF0YSgpOworICAgIGdudXRsc0l2LnNpemUgPSBzaXplb2YocGFy
YW1ldGVycy5pdik7CisKKyAgICBnbnV0bHNfY2lwaGVyX2hkX3QgY2lwaGVyOworICAgIGludCBy
ZXQgPSBnbnV0bHNfY2lwaGVyX2luaXQoJmNpcGhlciwgKmFsZ28sICZnbnV0bHNLZXksICZnbnV0
bHNJdik7CisgICAgaWYgKHJldCAhPSBHTlVUTFNfRV9TVUNDRVNTKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIHJldHVybiBjaXBoZXI7Cit9CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NC
Qzo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcyYgcGFy
YW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK3sKKyAgICBnbnV0bHNfY2lwaGVyX2FsZ29yaXRobV90
IGFsZ287CisgICAgZ251dGxzX2NpcGhlcl9oZF90IGNpcGhlciA9IGNyZWF0ZUNpcGhlcihwYXJh
bWV0ZXJzLCBrZXksICZhbGdvKTsKKyAgICBpZiAoIWNpcGhlcikgeworICAgICAgICBmYWlsdXJl
Q2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVpbnQ4X3QgYmxvY2tT
aXplID0gZ251dGxzX2NpcGhlcl9nZXRfYmxvY2tfc2l6ZShhbGdvKTsKKyAgICBzaXplX3QgZGF0
YVNpemUgPSBkYXRhLnNlY29uZDsKKworICAgIHVpbnQ4X3QgcGFkZGluZ1NpemUgPSBibG9ja1Np
emUgLSAoZGF0YVNpemUgJSBibG9ja1NpemUpOworICAgIHNpemVfdCBwYWRkZWRTaXplID0gKGRh
dGFTaXplIC8gYmxvY2tTaXplKSAqIGJsb2NrU2l6ZTsKKyAgICBzaXplX3QgY2lwaGVyVGV4dFNp
emUgPSBwYWRkZWRTaXplICsgYmxvY2tTaXplOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3Vs
dChjaXBoZXJUZXh0U2l6ZSk7CisKKyAgICAvLyBFbmNyeXB0IGFsbCBkYXRhIGV4Y2VwdCBsYXN0
IHVucGFkZGVkIG9jdGV0cworICAgIGludCByZXQ7CisgICAgaWYgKHBhZGRlZFNpemUgPiAwKSB7
CisgICAgICAgIHJldCA9IGdudXRsc19jaXBoZXJfZW5jcnlwdDIoY2lwaGVyLCAodm9pZCAqKSBk
YXRhLmZpcnN0LCBwYWRkZWRTaXplLCAodm9pZCAqKSByZXN1bHQuZGF0YSgpLCBwYWRkZWRTaXpl
KTsKKyAgICAgICAgaWYgKHJldCAhPSBHTlVUTFNfRV9TVUNDRVNTKSB7CisgICAgICAgICAgICBn
bnV0bHNfY2lwaGVyX2RlaW5pdChjaXBoZXIpOworICAgICAgICAgICAgZmFpbHVyZUNhbGxiYWNr
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBBZGQg
UEtDUzcgcGFkZGluZyA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTY1MiNzZWN0aW9u
LTYuMz4KKyAgICAvLyBhbmQgZW5jcnlwdCBsYXN0IGJsb2NrCisgICAgbWVtY3B5KHJlc3VsdC5k
YXRhKCkgKyBwYWRkZWRTaXplLCBkYXRhLmZpcnN0ICsgcGFkZGVkU2l6ZSwgYmxvY2tTaXplIC0g
cGFkZGluZ1NpemUpOworICAgIG1lbXNldChyZXN1bHQuZGF0YSgpICsgY2lwaGVyVGV4dFNpemUg
LSBwYWRkaW5nU2l6ZSwgcGFkZGluZ1NpemUsIHBhZGRpbmdTaXplKTsKKworICAgIC8vIEVuY3J5
cHQgbGFzdCBibG9jayB3aXRoIHBhZGRpbmcKKyAgICByZXQgPSBnbnV0bHNfY2lwaGVyX2VuY3J5
cHQyKGNpcGhlciwgcmVzdWx0LmRhdGEoKSArIHBhZGRlZFNpemUsIGJsb2NrU2l6ZSwgKHZvaWQg
KikgKHJlc3VsdC5kYXRhKCkgKyBwYWRkZWRTaXplKSwgYmxvY2tTaXplKTsKKyAgICBpZiAocmV0
ICE9IEdOVVRMU19FX1NVQ0NFU1MpIHsKKyAgICAgICAgZ251dGxzX2NpcGhlcl9kZWluaXQoY2lw
aGVyKTsKKyAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBnbnV0bHNfY2lwaGVyX2RlaW5pdChjaXBoZXIpOworICAgIGNhbGxiYWNrKHJlc3Vs
dCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0KGNv
bnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRv
S2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxi
YWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0
IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNr
IGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikK
IHsKLSAgICAvLyBVbmltcGxlbWVudGVkIGFsZ29yaXRobSBzdHViCi0gICAgZWMgPSBOT1RfU1VQ
UE9SVEVEX0VSUjsKLSAgICBmYWlsdXJlQ2FsbGJhY2soKTsKLQotICAgIFVOVVNFRF9QQVJBTShw
YXJhbWV0ZXJzKTsKLSAgICBVTlVTRURfUEFSQU0oa2V5KTsKLSAgICBVTlVTRURfUEFSQU0oZGF0
YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGNhbGxiYWNrKTsKKyAgICBnbnV0bHNfY2lwaGVyX2FsZ29y
aXRobV90IGFsZ287CisgICAgZ251dGxzX2NpcGhlcl9oZF90IGNpcGhlciA9IGNyZWF0ZUNpcGhl
cihwYXJhbWV0ZXJzLCBrZXksICZhbGdvKTsKKyAgICBpZiAoIWNpcGhlcikgeworICAgICAgICBm
YWlsdXJlQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZlY3Rvcjx1
aW50OF90PiByZXN1bHQoZGF0YS5zZWNvbmQpOworICAgIGludCByZXQgPSBnbnV0bHNfY2lwaGVy
X2RlY3J5cHQyKGNpcGhlciwgZGF0YS5maXJzdCwgZGF0YS5zZWNvbmQsICh2b2lkICopIHJlc3Vs
dC5kYXRhKCksIHJlc3VsdC5zaXplKCkpOworICAgIGlmIChyZXQgIT0gR05VVExTX0VfU1VDQ0VT
UykgeworICAgICAgICBnbnV0bHNfY2lwaGVyX2RlaW5pdChjaXBoZXIpOworICAgICAgICBmYWls
dXJlQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFJlbW92ZSBQ
S0NTNyBwYWRkaW5nIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1NjUyI3NlY3Rpb24t
Ni4zPgorICAgIHNpemVfdCBkYXRhU2l6ZSA9IHJlc3VsdC5zaXplKCk7CisgICAgdWludDhfdCBi
bG9ja1NpemUgPSBnbnV0bHNfY2lwaGVyX2dldF9ibG9ja19zaXplKGFsZ28pOworICAgIHVpbnQ4
X3QgcGFkZGluZ1NpemUgPSByZXN1bHQuZGF0YSgpIFtkYXRhU2l6ZSAtIDFdOworICAgIGlmICgh
cGFkZGluZ1NpemUgfHwgcGFkZGluZ1NpemUgPiBibG9ja1NpemUpIHsKKyAgICAgICAgZ251dGxz
X2NpcGhlcl9kZWluaXQoY2lwaGVyKTsKKyAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gQ2hlY2sgc2FuaXR5IG9mIHRoZSB3aG9sZSBwYWRk
aW5nCisgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBwYWRkaW5nU2l6ZTsgaSsrKSB7CisgICAgICAg
IGlmIChyZXN1bHQuZGF0YSgpIFtkYXRhU2l6ZSAtIGldICE9IHBhZGRpbmdTaXplKSB7CisgICAg
ICAgICAgICBnbnV0bHNfY2lwaGVyX2RlaW5pdChjaXBoZXIpOworICAgICAgICAgICAgZmFpbHVy
ZUNhbGxiYWNrKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXN1bHQuc2hyaW5rKGRhdGFTaXplIC0gcGFkZGluZ1NpemUpOworCisgICAgZ251dGxzX2Np
cGhlcl9kZWluaXQoY2lwaGVyKTsKKyAgICBjYWxsYmFjayhyZXN1bHQpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238545</attachid>
            <date>2014-09-23 09:46:02 -0700</date>
            <delta_ts>2014-09-24 10:25:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133344-20140923184601.patch</filename>
            <type>text/plain</type>
            <size>9041</size>
            <attacher name="Eduardo Lima Mitev">elima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTkxMTgzYWFiNDcxYzI2
OWVmNTAzYzA4MzAyZTYyNDBlMTYzMWJhNy4uY2VkOWVmOTc4ZThjOGViYTgzMzE3MWM4N2I5MzYy
OGUyOWEwOTk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5IEBACiAyMDE0LTA5LTIzICBFZHVh
cmRvIExpbWEgTWl0ZXYgIDxlbGltYUBpZ2FsaWEuY29tPgogCisgICAgICAgIFtHVEtdIEFkZHMg
aW1wbGVtZW50YXRpb24gb2Ygc3VidGxlIGNyeXB0byBBRVMtQ0JDIGFsZ29yaXRobQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMzQ0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgYXJlIGFscmVh
ZHkgaW4gcGxhY2UgdW5kZXIgY3J5cHRvL3N1YnRsZS9hZXMtY2JjLSouaHRtbAorCisgICAgICAg
ICogY3J5cHRvL2d0ay9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR3RrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUNpcGhlcik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1B
RVNfQ0JDOjpwbGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3Jp
dGhtQUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0KToKKworMjAxNC0wOS0yMyAgRWR1YXJkbyBMaW1h
IE1pdGV2ICA8ZWxpbWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBbR1RLXSBBZGRzIGltcGxlbWVu
dGF0aW9uIG9mIHN1YnRsZSBjcnlwdG8gSE1BQyBhbGdvcml0aG0KICAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzMyMAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vZ3RrL0NyeXB0b0FsZ29yaXRobUFFU19DQkNHdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2d0ay9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR3RrLmNwcAppbmRl
eCBkMTViZmVhMDM0NzMxZWM5ZWUzZWVjOGZjNDg2YzAyNjYxMDNmMzVmLi5jYmJlMDhmY2I2ZDg3
N2RlZjNiODFiNDZhYzBhODQwOWZlNTYxYTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ3RrL0NyeXB0b0FsZ29yaXRobUFFU19DQkNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9ndGsvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0d0ay5jcHAKQEAgLTMxLDMyICsz
MSwxMjMgQEAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXMuaCIKICNpbmNs
dWRlICJDcnlwdG9LZXlBRVMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDxnbnV0bHMvZ251dGxzLmg+CisjaW5jbHVk
ZSA8Z251dGxzL2NyeXB0by5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQ3J5cHRv
QWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFl
c0NiY1BhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2Fs
bGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3N0YXRpYyBnbnV0bHNf
Y2lwaGVyX2hkX3QgY3JlYXRlQ2lwaGVyKGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFt
cyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGdudXRsc19jaXBoZXJfYWxn
b3JpdGhtX3QgKmFsZ29yaXRobSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIGVjID0g
Tk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgZmFpbHVyZUNhbGxiYWNrKCk7Ci0KLSAgICBVTlVTRURf
UEFSQU0ocGFyYW1ldGVycyk7Ci0gICAgVU5VU0VEX1BBUkFNKGtleSk7Ci0gICAgVU5VU0VEX1BB
UkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CisgICAgLy8gaW4gdGhpcyBj
b250ZXh0LCBBRVNfMjU2X0NCQyBpcyBhIHZhbGlkIGFsZ29yaXRobSBhbHNvIGZvciAxMjggYW5k
IDE5MgorICAgICphbGdvcml0aG0gPSBHTlVUTFNfQ0lQSEVSX0FFU18xMjhfQ0JDOworCisgICAg
QVNTRVJUKHNpemVvZihwYXJhbWV0ZXJzLml2KSA9PSBnbnV0bHNfY2lwaGVyX2dldF9pdl9zaXpl
KCphbGdvcml0aG0pKTsKKworICAgIHNpemVfdCBrZXlMZW5ndGhJbkJ5dGVzID0ga2V5LmtleSgp
LnNpemUoKTsKKyAgICBpZiAoa2V5TGVuZ3RoSW5CeXRlcyAhPSAxNiAmJiBrZXlMZW5ndGhJbkJ5
dGVzICE9IDI0ICYmIGtleUxlbmd0aEluQnl0ZXMgIT0gMzIpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgZ251dGxzX2RhdHVtX3QgZ251dGxzS2V5OworICAgIGdudXRsc0tleS5kYXRhID0gICh1
bnNpZ25lZCBjaGFyKikga2V5LmtleSgpLmRhdGEoKTsKKyAgICBnbnV0bHNLZXkuc2l6ZSA9IGtl
eUxlbmd0aEluQnl0ZXM7CisKKyAgICBnbnV0bHNfZGF0dW1fdCBnbnV0bHNJdjsKKyAgICBnbnV0
bHNJdi5kYXRhID0gKHVuc2lnbmVkIGNoYXIqKSBwYXJhbWV0ZXJzLml2LmRhdGEoKTsKKyAgICBn
bnV0bHNJdi5zaXplID0gc2l6ZW9mKHBhcmFtZXRlcnMuaXYpOworCisgICAgZ251dGxzX2NpcGhl
cl9oZF90IGNpcGhlcjsKKyAgICBpbnQgcmV0ID0gZ251dGxzX2NpcGhlcl9pbml0KCZjaXBoZXIs
ICphbGdvcml0aG0sICZnbnV0bHNLZXksICZnbnV0bHNJdik7CisgICAgaWYgKHJldCAhPSBHTlVU
TFNfRV9TVUNDRVNTKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBjaXBoZXI7Cit9
CisKK3ZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0IENy
eXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVT
JiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKK3sK
KyAgICBnbnV0bHNfY2lwaGVyX2FsZ29yaXRobV90IGFsZ287CisgICAgZ251dGxzX2NpcGhlcl9o
ZF90IGNpcGhlciA9IGNyZWF0ZUNpcGhlcihwYXJhbWV0ZXJzLCBrZXksICZhbGdvKTsKKyAgICBp
ZiAoIWNpcGhlcikgeworICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHVpbnQ4X3QgYmxvY2tTaXplID0gZ251dGxzX2NpcGhlcl9nZXRfYmxv
Y2tfc2l6ZShhbGdvKTsKKyAgICBzaXplX3QgZGF0YVNpemUgPSBkYXRhLnNlY29uZDsKKworICAg
IHVpbnQ4X3QgcGFkZGluZ1NpemUgPSBibG9ja1NpemUgLSAoZGF0YVNpemUgJSBibG9ja1NpemUp
OworICAgIHNpemVfdCBwYWRkZWRTaXplID0gKGRhdGFTaXplIC8gYmxvY2tTaXplKSAqIGJsb2Nr
U2l6ZTsKKyAgICBzaXplX3QgY2lwaGVyVGV4dFNpemUgPSBwYWRkZWRTaXplICsgYmxvY2tTaXpl
OworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChjaXBoZXJUZXh0U2l6ZSk7CisKKyAgICAv
LyBFbmNyeXB0IGFsbCBkYXRhIGV4Y2VwdCBsYXN0IHVucGFkZGVkIG9jdGV0cworICAgIGludCBy
ZXQ7CisgICAgaWYgKHBhZGRlZFNpemUgPiAwKSB7CisgICAgICAgIHJldCA9IGdudXRsc19jaXBo
ZXJfZW5jcnlwdDIoY2lwaGVyLCAodm9pZCAqKSBkYXRhLmZpcnN0LCBwYWRkZWRTaXplLCAodm9p
ZCAqKSByZXN1bHQuZGF0YSgpLCBwYWRkZWRTaXplKTsKKyAgICAgICAgaWYgKHJldCAhPSBHTlVU
TFNfRV9TVUNDRVNTKSB7CisgICAgICAgICAgICBnbnV0bHNfY2lwaGVyX2RlaW5pdChjaXBoZXIp
OworICAgICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBBZGQgUEtDUzcgcGFkZGluZyA8aHR0cDovL3Rvb2xz
LmlldGYub3JnL2h0bWwvcmZjNTY1MiNzZWN0aW9uLTYuMz4KKyAgICAvLyBhbmQgZW5jcnlwdCBs
YXN0IGJsb2NrCisgICAgbWVtY3B5KHJlc3VsdC5kYXRhKCkgKyBwYWRkZWRTaXplLCBkYXRhLmZp
cnN0ICsgcGFkZGVkU2l6ZSwgYmxvY2tTaXplIC0gcGFkZGluZ1NpemUpOworICAgIG1lbXNldChy
ZXN1bHQuZGF0YSgpICsgY2lwaGVyVGV4dFNpemUgLSBwYWRkaW5nU2l6ZSwgcGFkZGluZ1NpemUs
IHBhZGRpbmdTaXplKTsKKworICAgIC8vIEVuY3J5cHQgbGFzdCBibG9jayB3aXRoIHBhZGRpbmcK
KyAgICByZXQgPSBnbnV0bHNfY2lwaGVyX2VuY3J5cHQyKGNpcGhlciwgcmVzdWx0LmRhdGEoKSAr
IHBhZGRlZFNpemUsIGJsb2NrU2l6ZSwgKHZvaWQgKikgKHJlc3VsdC5kYXRhKCkgKyBwYWRkZWRT
aXplKSwgYmxvY2tTaXplKTsKKyAgICBpZiAocmV0ICE9IEdOVVRMU19FX1NVQ0NFU1MpIHsKKyAg
ICAgICAgZ251dGxzX2NpcGhlcl9kZWluaXQoY2lwaGVyKTsKKyAgICAgICAgZmFpbHVyZUNhbGxi
YWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnbnV0bHNfY2lwaGVyX2RlaW5p
dChjaXBoZXIpOworICAgIGNhbGxiYWNrKHJlc3VsdCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3Jp
dGhtQUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1Bh
cmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sg
ZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgQ3J5cHRvQWxnb3JpdGht
QUVTX0NCQzo6cGxhdGZvcm1EZWNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFt
cyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJh
dGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFp
bHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgZmFpbHVyZUNhbGxiYWNrKCk7Ci0KLSAg
ICBVTlVTRURfUEFSQU0ocGFyYW1ldGVycyk7Ci0gICAgVU5VU0VEX1BBUkFNKGtleSk7Ci0gICAg
VU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVOVVNFRF9QQVJBTShjYWxsYmFjayk7CisgICAgZ251
dGxzX2NpcGhlcl9hbGdvcml0aG1fdCBhbGdvOworICAgIGdudXRsc19jaXBoZXJfaGRfdCBjaXBo
ZXIgPSBjcmVhdGVDaXBoZXIocGFyYW1ldGVycywga2V5LCAmYWxnbyk7CisgICAgaWYgKCFjaXBo
ZXIpIHsKKyAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KGRhdGEuc2Vjb25kKTsKKyAgICBpbnQgcmV0
ID0gZ251dGxzX2NpcGhlcl9kZWNyeXB0MihjaXBoZXIsIGRhdGEuZmlyc3QsIGRhdGEuc2Vjb25k
LCAodm9pZCAqKSByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpKTsKKyAgICBpZiAocmV0ICE9
IEdOVVRMU19FX1NVQ0NFU1MpIHsKKyAgICAgICAgZ251dGxzX2NpcGhlcl9kZWluaXQoY2lwaGVy
KTsKKyAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBSZW1vdmUgUEtDUzcgcGFkZGluZyA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwv
cmZjNTY1MiNzZWN0aW9uLTYuMz4KKyAgICBzaXplX3QgZGF0YVNpemUgPSByZXN1bHQuc2l6ZSgp
OworICAgIHVpbnQ4X3QgYmxvY2tTaXplID0gZ251dGxzX2NpcGhlcl9nZXRfYmxvY2tfc2l6ZShh
bGdvKTsKKyAgICB1aW50OF90IHBhZGRpbmdTaXplID0gcmVzdWx0LmRhdGEoKSBbZGF0YVNpemUg
LSAxXTsKKyAgICBpZiAoIXBhZGRpbmdTaXplIHx8IHBhZGRpbmdTaXplID4gYmxvY2tTaXplKSB7
CisgICAgICAgIGdudXRsc19jaXBoZXJfZGVpbml0KGNpcGhlcik7CisgICAgICAgIGZhaWx1cmVD
YWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIENoZWNrIHNhbml0eSBv
ZiB0aGUgd2hvbGUgcGFkZGluZworICAgIGZvciAoaW50IGkgPSAxOyBpIDwgcGFkZGluZ1NpemU7
IGkrKykgeworICAgICAgICBpZiAocmVzdWx0LmRhdGEoKSBbZGF0YVNpemUgLSBpXSAhPSBwYWRk
aW5nU2l6ZSkgeworICAgICAgICAgICAgZ251dGxzX2NpcGhlcl9kZWluaXQoY2lwaGVyKTsKKyAg
ICAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQorCisgICAgcmVzdWx0LnNocmluayhkYXRhU2l6ZSAtIHBhZGRpbmdTaXplKTsK
KworICAgIGdudXRsc19jaXBoZXJfZGVpbml0KGNpcGhlcik7CisgICAgY2FsbGJhY2socmVzdWx0
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDlmOWQxZWY0MzEwYjMxZDJm
NTgwZWM4ODI5YTUxYTk2OGYwYzA2NzUuLjg3MjZiZDkxNjQ2YTY4ZWU3YjQ5NzUwNmM5NWFmMzk1
ZmMxMmUxNjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNCBAQAogMjAxNC0wOS0yMyAgRWR1YXJkbyBMaW1h
IE1pdGV2ICA8ZWxpbWFAaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1RLXSBBZGRzIGltcGxlbWVu
dGF0aW9uIG9mIHN1YnRsZSBjcnlwdG8gQUVTLUNCQyBhbGdvcml0aG0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzM0NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBl
Y3RhdGlvbnM6IFdoaXRlbGlzdHMgQUVTLUNCQyByZWxhdGVkIHRlc3RzIHRoYXQgYXJlIHBhc3Np
bmcKKworMjAxNC0wOS0yMyAgRWR1YXJkbyBMaW1hIE1pdGV2ICA8ZWxpbWFAaWdhbGlhLmNvbT4K
KwogICAgICAgICBbR1RLXSBBZGRzIGltcGxlbWVudGF0aW9uIG9mIHN1YnRsZSBjcnlwdG8gSE1B
QyBhbGdvcml0aG0KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzMzMyMAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IGRjYzcyN2YxNjg1NGZiN2I1ZWRmMzFhZTgxZDNiZDVhZjI1MjAxZjcuLjYxYTQxOWE2Yzg0
NzlmMWMyYTg3ZTcxMGJmZjZmNTQzNWZhNGQ1ODkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNTUsNyArMzU1LDcgQEAgQnVnKEdUSykgZWRpdGluZy9z
ZWN1cmUtaW5wdXQgWyBGYWlsdXJlIF0KICMgU3ludGhlc2l6ZWQgaXRhbGljcyBub3Qgc3VwcG9y
dGVkCiB3ZWJraXQub3JnL2IvMTE3OTc1IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3N5bnRoZXNp
emVkLWl0YWxpYy12ZXJ0aWNhbC1sYXRpbi5odG1sIFsgU2tpcCBdCiAKLSMgY3J5cHRvLnN1YnRs
ZSBpcyBub3QgeWV0IGVuYWJsZWQsIGJ1dCBkaWdlc3QgYWxnb3JpdGhtcyBhcmUgYWxyZWFkeSBp
bXBsZW1lbnRlZAorIyBjcnlwdG8uc3VidGxlIGlzIG5vdCB5ZXQgZnVsbHkgZW5hYmxlZCwgYnV0
IHNvbWUgYWxnb3JpdGhtcyBhcmUgYWxyZWFkeSBpbXBsZW1lbnRlZAogIyBhbmQgdGhlaXIgdGVz
dHMgYXJlIHdoaXRlbGlzdGVkCiB3ZWJraXQub3JnL2IvMTMzMTIyIGNyeXB0by9zdWJ0bGUgWyBT
a2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMzMTkgY3J5cHRvL3N1YnRsZS9zaGEtMS5odG1sIFsgUGFz
cyBdCkBAIC0zNjksNiArMzY5LDE0IEBAIHdlYmtpdC5vcmcvYi8xMzMzMjAgY3J5cHRvL3N1YnRs
ZS9obWFjLWdlbmVyYXRlLWtleS5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTMzMzIwIGNy
eXB0by9zdWJ0bGUvaG1hYy1pbXBvcnQtandrLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8x
MzMzMjAgY3J5cHRvL3N1YnRsZS9obWFjLXNpZ24tdmVyaWZ5LWVtcHR5LWtleS5odG1sIFsgUGFz
cyBdCiB3ZWJraXQub3JnL2IvMTMzMzIwIGNyeXB0by9zdWJ0bGUvaG1hYy1zaWduLXZlcmlmeS5o
dG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTMzMzQ0IGNyeXB0by9zdWJ0bGUvYWVzLWNiYy0x
OTItZW5jcnlwdC1kZWNyeXB0Lmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMzMzNDQgY3J5
cHRvL3N1YnRsZS9hZXMtY2JjLTI1Ni1lbmNyeXB0LWRlY3J5cHQuaHRtbCBbIFBhc3MgXQord2Vi
a2l0Lm9yZy9iLzEzMzM0NCBjcnlwdG8vc3VidGxlL2Flcy1jYmMtZW5jcnlwdC1kZWNyeXB0Lmh0
bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMzMzNDQgY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWVu
Y3J5cHQtZGVjcnlwdC13aXRoLXBhZGRpbmcuaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzEz
MzM0NCBjcnlwdG8vc3VidGxlL2Flcy1jYmMtZ2VuZXJhdGUta2V5Lmh0bWwgWyBQYXNzIF0KK3dl
YmtpdC5vcmcvYi8xMzMzNDQgY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWltcG9ydC1qd2suaHRtbCBb
IFBhc3MgXQord2Via2l0Lm9yZy9iLzEzMzM0NCBjcnlwdG8vc3VidGxlL2Flcy1jYmMtaW52YWxp
ZC1sZW5ndGguaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzEzMzM0NCBjcnlwdG8vc3VidGxl
L2Flcy1jYmMtd3Jvbmcta2V5LWNsYXNzLmh0bWwgWyBQYXNzIF0KIAogIyBRdWlja1RpbWUgcGx1
Zy1pbiBub3QgcmVsZXZhbnQgdG8gdGhpcyBwb3J0CiBCdWcoR1RLKSBwbHVnaW5zL3F1aWNrdGlt
ZS1wbHVnaW4tcmVwbGFjZW1lbnQuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238601</attachid>
            <date>2014-09-24 10:25:17 -0700</date>
            <delta_ts>2014-12-08 03:22:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133344-20140924192514.patch</filename>
            <type>text/plain</type>
            <size>11000</size>
            <attacher name="Eduardo Lima Mitev">elima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczOTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDRmMGExZDc5Yjg2NDAy
MTc1ZDExMjc4NTJjYTVmOTJkZjkwMGE3MC4uYzFiYjEyN2NmOTllYThiN2QxNTE3MzEyNTkxNWNj
OGRjOWE3YWZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTA5LTI0ICBFZHVh
cmRvIExpbWEgTWl0ZXYgIDxlbGltYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZHMg
aW1wbGVtZW50YXRpb24gb2Ygc3VidGxlIGNyeXB0byBBRVMtQ0JDIGFsZ29yaXRobQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMzQ0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgYXJlIGFscmVh
ZHkgaW4gcGxhY2UgdW5kZXIgY3J5cHRvL3N1YnRsZS9hZXMtY2JjLSouaHRtbAorCisgICAgICAg
ICogY3J5cHRvL0NyeXB0b0V4Y2VwdGlvbkNvZGUuaDogQWRkZWQuCisgICAgICAgICogY3J5cHRv
L2d0ay9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUNpcGhlcik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpw
bGF0Zm9ybUVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtQUVTX0NC
Qzo6cGxhdGZvcm1EZWNyeXB0KToKKwogMjAxNC0wOS0yNCAgQmVuamFtaW4gUG91bGFpbiAgPGJw
b3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIHN0eWxlIG1hcmtpbmcgZnJv
bSA6bnRoLWNoaWxkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9F
eGNlcHRpb25Db2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvRXhjZXB0aW9uQ29k
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFkOGI3ZDhlZjk5NmYwM2U2YThmMzNlYjgxMTFkY2RjYjg2MTNjY2UK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vQ3J5cHRvRXhjZXB0aW9u
Q29kZS5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlh
IFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDcnlwdG9FeGNl
cHRpb25Db2RlX2gKKyNkZWZpbmUgQ3J5cHRvRXhjZXB0aW9uQ29kZV9oCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworZW51bSB7CisgICAgQ3J5cHRvTm9FcnIgPSAwLAorICAgIENyeXB0b0RhdGFF
cnIsCisgICAgQ3J5cHRvTm90U3VwcG9ydGVkRXJyLAorICAgIENyeXB0b0ludmFsaWRBY2Nlc3NF
cnIsCisgICAgQ3J5cHRvVHlwZU1pc21hdGNoRXJyLAorICAgIENyeXB0b0V4Y2VlZGVkUXVvdGFF
cnIsCisgICAgQ3J5cHRvU3ludGF4RXJyLAorICAgIENyeXB0b09wZXJhdGlvbkVycgorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ3J5cHRvRXhjZXB0aW9uQ29kZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ3RrL0NyeXB0b0FsZ29yaXRobUFF
U19DQkNHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2d0ay9DcnlwdG9BbGdvcml0aG1B
RVNfQ0JDR3RrLmNwcAppbmRleCBkMTViZmVhMDM0NzMxZWM5ZWUzZWVjOGZjNDg2YzAyNjYxMDNm
MzVmLi5mMjVjYTE4YTY3ZjllNmM5ZjkwZmI0NmViYmY0NzRmOWEzMDRjODNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ3RrL0NyeXB0b0FsZ29yaXRobUFFU19DQkNHdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9ndGsvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0d0
ay5jcHAKQEAgLTI5LDM0ICsyOSwxMzMgQEAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAog
I2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcy5oIgorI2luY2x1ZGUgIkNyeXB0
b0V4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlBRVMuaCIKLSNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlIDxn
bnV0bHMvZ251dGxzLmg+CisjaW5jbHVkZSA8Z251dGxzL2NyeXB0by5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK3N0YXRpYyBnbnV0bHNfY2lwaGVyX2hkX3QgY3JlYXRlQ2lwaGVyKGNvbnN0
IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
QUVTJiBrZXksIGdudXRsc19jaXBoZXJfYWxnb3JpdGhtX3QgYWxnb3JpdGhtKQoreworICAgIEFT
U0VSVChzaXplb2YocGFyYW1ldGVycy5pdikgPT0gZ251dGxzX2NpcGhlcl9nZXRfaXZfc2l6ZShh
bGdvcml0aG0pKTsKKworICAgIHNpemVfdCBrZXlMZW5ndGhJbkJ5dGVzID0ga2V5LmtleSgpLnNp
emUoKTsKKyAgICBpZiAoa2V5TGVuZ3RoSW5CeXRlcyAhPSAxNiAmJiBrZXlMZW5ndGhJbkJ5dGVz
ICE9IDI0ICYmIGtleUxlbmd0aEluQnl0ZXMgIT0gMzIpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgZ251dGxzX2RhdHVtX3QgZ251dGxzS2V5OworICAgIGdudXRsc0tleS5kYXRhID0gY29uc3Rf
Y2FzdDx1bnNpZ25lZCBjaGFyKj4oa2V5LmtleSgpLmRhdGEoKSk7CisgICAgZ251dGxzS2V5LnNp
emUgPSBrZXlMZW5ndGhJbkJ5dGVzOworCisgICAgZ251dGxzX2RhdHVtX3QgZ251dGxzSXY7Cisg
ICAgZ251dGxzSXYuZGF0YSA9IGNvbnN0X2Nhc3Q8dW5zaWduZWQgY2hhciAqPihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihwYXJhbWV0ZXJzLml2LmRhdGEoKSkpOworICAg
IGdudXRsc0l2LnNpemUgPSBzaXplb2YocGFyYW1ldGVycy5pdik7CisKKyAgICBnbnV0bHNfY2lw
aGVyX2hkX3QgY2lwaGVyOworICAgIGludCByZXQgPSBnbnV0bHNfY2lwaGVyX2luaXQoJmNpcGhl
ciwgYWxnb3JpdGhtLCAmZ251dGxzS2V5LCAmZ251dGxzSXYpOworICAgIGlmIChyZXQgIT0gR05V
VExTX0VfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gY2lwaGVyOwor
fQorCiB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRW5jcnlwdChjb25zdCBD
cnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFF
UyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayBj
YWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwot
ICAgIGZhaWx1cmVDYWxsYmFjaygpOwotCi0gICAgVU5VU0VEX1BBUkFNKHBhcmFtZXRlcnMpOwot
ICAgIFVOVVNFRF9QQVJBTShrZXkpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVT
RURfUEFSQU0oY2FsbGJhY2spOworICAgIC8vIGluIHRoaXMgY29udGV4dCwgQUVTXzI1Nl9DQkMg
aXMgYSB2YWxpZCBhbGdvcml0aG0gYWxzbyBmb3IgMTI4IGFuZCAxOTIKKyAgICBnbnV0bHNfY2lw
aGVyX2FsZ29yaXRobV90IGFsZ29yaXRobSA9IEdOVVRMU19DSVBIRVJfQUVTXzEyOF9DQkM7CisK
KyAgICBnbnV0bHNfY2lwaGVyX2hkX3QgY2lwaGVyID0gY3JlYXRlQ2lwaGVyKHBhcmFtZXRlcnMs
IGtleSwgYWxnb3JpdGhtKTsKKyAgICBpZiAoIWNpcGhlcikgeworICAgICAgICBlYyA9IENyeXB0
b0RhdGFFcnI7CisgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdWludDhfdCBibG9ja1NpemUgPSBnbnV0bHNfY2lwaGVyX2dldF9ibG9ja19z
aXplKGFsZ29yaXRobSk7CisgICAgc2l6ZV90IGRhdGFTaXplID0gZGF0YS5zZWNvbmQ7CisKKyAg
ICB1aW50OF90IHBhZGRpbmdTaXplID0gYmxvY2tTaXplIC0gKGRhdGFTaXplICUgYmxvY2tTaXpl
KTsKKyAgICBzaXplX3QgcGFkZGVkU2l6ZSA9IChkYXRhU2l6ZSAvIGJsb2NrU2l6ZSkgKiBibG9j
a1NpemU7CisgICAgc2l6ZV90IGNpcGhlclRleHRTaXplID0gcGFkZGVkU2l6ZSArIGJsb2NrU2l6
ZTsKKworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoY2lwaGVyVGV4dFNpemUpOworCisgICAg
Ly8gRW5jcnlwdCBhbGwgZGF0YSBleGNlcHQgbGFzdCB1bnBhZGRlZCBvY3RldHMKKyAgICBpbnQg
cmV0OworICAgIGlmIChwYWRkZWRTaXplID4gMCkgeworICAgICAgICByZXQgPSBnbnV0bHNfY2lw
aGVyX2VuY3J5cHQyKGNpcGhlciwgKHZvaWQgKikgZGF0YS5maXJzdCwgcGFkZGVkU2l6ZSwgKHZv
aWQgKikgcmVzdWx0LmRhdGEoKSwgcGFkZGVkU2l6ZSk7CisgICAgICAgIGlmIChyZXQgIT0gR05V
VExTX0VfU1VDQ0VTUykgeworICAgICAgICAgICAgZ251dGxzX2NpcGhlcl9kZWluaXQoY2lwaGVy
KTsKKyAgICAgICAgICAgIGVjID0gQ3J5cHRvT3BlcmF0aW9uRXJyOworICAgICAgICAgICAgZmFp
bHVyZUNhbGxiYWNrKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBBZGQgUEtDUzcgcGFkZGluZyA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZj
NTY1MiNzZWN0aW9uLTYuMz4KKyAgICAvLyBhbmQgZW5jcnlwdCBsYXN0IGJsb2NrCisgICAgbWVt
Y3B5KHJlc3VsdC5kYXRhKCkgKyBwYWRkZWRTaXplLCBkYXRhLmZpcnN0ICsgcGFkZGVkU2l6ZSwg
YmxvY2tTaXplIC0gcGFkZGluZ1NpemUpOworICAgIG1lbXNldChyZXN1bHQuZGF0YSgpICsgY2lw
aGVyVGV4dFNpemUgLSBwYWRkaW5nU2l6ZSwgcGFkZGluZ1NpemUsIHBhZGRpbmdTaXplKTsKKwor
ICAgIC8vIEVuY3J5cHQgbGFzdCBibG9jayB3aXRoIHBhZGRpbmcKKyAgICByZXQgPSBnbnV0bHNf
Y2lwaGVyX2VuY3J5cHQyKGNpcGhlciwgcmVzdWx0LmRhdGEoKSArIHBhZGRlZFNpemUsIGJsb2Nr
U2l6ZSwgKHZvaWQgKikgKHJlc3VsdC5kYXRhKCkgKyBwYWRkZWRTaXplKSwgYmxvY2tTaXplKTsK
KyAgICBpZiAocmV0ICE9IEdOVVRMU19FX1NVQ0NFU1MpIHsKKyAgICAgICAgZ251dGxzX2NpcGhl
cl9kZWluaXQoY2lwaGVyKTsKKyAgICAgICAgICAgIGVjID0gQ3J5cHRvT3BlcmF0aW9uRXJyOwor
ICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGdudXRsc19jaXBoZXJfZGVpbml0KGNpcGhlcik7CisgICAgY2FsbGJhY2socmVzdWx0KTsKIH0K
IAogdm9pZCBDcnlwdG9BbGdvcml0aG1BRVNfQ0JDOjpwbGF0Zm9ybURlY3J5cHQoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlBRVMm
IGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAg
ICBmYWlsdXJlQ2FsbGJhY2soKTsKLQotICAgIFVOVVNFRF9QQVJBTShwYXJhbWV0ZXJzKTsKLSAg
ICBVTlVTRURfUEFSQU0oa2V5KTsKLSAgICBVTlVTRURfUEFSQU0oZGF0YSk7Ci0gICAgVU5VU0VE
X1BBUkFNKGNhbGxiYWNrKTsKKyAgICAvLyBpbiB0aGlzIGNvbnRleHQsIEFFU18yNTZfQ0JDIGlz
IGEgdmFsaWQgYWxnb3JpdGhtIGFsc28gZm9yIDEyOCBhbmQgMTkyCisgICAgZ251dGxzX2NpcGhl
cl9hbGdvcml0aG1fdCBhbGdvcml0aG0gPSBHTlVUTFNfQ0lQSEVSX0FFU18xMjhfQ0JDOworCisg
ICAgZ251dGxzX2NpcGhlcl9oZF90IGNpcGhlciA9IGNyZWF0ZUNpcGhlcihwYXJhbWV0ZXJzLCBr
ZXksIGFsZ29yaXRobSk7CisgICAgaWYgKCFjaXBoZXIpIHsKKyAgICAgICAgZWMgPSBDcnlwdG9E
YXRhRXJyOworICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoZGF0YS5zZWNvbmQpOworICAgIGludCBy
ZXQgPSBnbnV0bHNfY2lwaGVyX2RlY3J5cHQyKGNpcGhlciwgZGF0YS5maXJzdCwgZGF0YS5zZWNv
bmQsICh2b2lkICopIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpOworICAgIGlmIChyZXQg
IT0gR05VVExTX0VfU1VDQ0VTUykgeworICAgICAgICBnbnV0bHNfY2lwaGVyX2RlaW5pdChjaXBo
ZXIpOworICAgICAgICBlYyA9IENyeXB0b09wZXJhdGlvbkVycjsKKyAgICAgICAgZmFpbHVyZUNh
bGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBSZW1vdmUgUEtDUzcg
cGFkZGluZyA8aHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTY1MiNzZWN0aW9uLTYuMz4K
KyAgICBzaXplX3QgZGF0YVNpemUgPSByZXN1bHQuc2l6ZSgpOworICAgIHVpbnQ4X3QgYmxvY2tT
aXplID0gZ251dGxzX2NpcGhlcl9nZXRfYmxvY2tfc2l6ZShhbGdvcml0aG0pOworICAgIHVpbnQ4
X3QgcGFkZGluZ1NpemUgPSByZXN1bHQuZGF0YSgpIFtkYXRhU2l6ZSAtIDFdOworICAgIGlmICgh
cGFkZGluZ1NpemUgfHwgcGFkZGluZ1NpemUgPiBibG9ja1NpemUpIHsKKyAgICAgICAgZ251dGxz
X2NpcGhlcl9kZWluaXQoY2lwaGVyKTsKKyAgICAgICAgZWMgPSBDcnlwdG9EYXRhRXJyOworICAg
ICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyBD
aGVjayBzYW5pdHkgb2YgdGhlIHdob2xlIHBhZGRpbmcKKyAgICBmb3IgKGludCBpID0gMTsgaSA8
IHBhZGRpbmdTaXplOyBpKyspIHsKKyAgICAgICAgaWYgKHJlc3VsdC5kYXRhKCkgW2RhdGFTaXpl
IC0gaV0gIT0gcGFkZGluZ1NpemUpIHsKKyAgICAgICAgICAgIGdudXRsc19jaXBoZXJfZGVpbml0
KGNpcGhlcik7CisgICAgICAgICAgICBlYyA9IENyeXB0b0RhdGFFcnI7CisgICAgICAgICAgICBm
YWlsdXJlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJlc3VsdC5zaHJpbmsoZGF0YVNpemUgLSBwYWRkaW5nU2l6ZSk7CisKKyAgICBnbnV0
bHNfY2lwaGVyX2RlaW5pdChjaXBoZXIpOworICAgIGNhbGxiYWNrKHJlc3VsdCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNDJjY2EwMmVmMGE1NGM4ODA3NDY0ZDg1MGMz
MjdjOGI4NWRmODA2Li5jODVhMzdjMjZmNTc1NmYzMTljYjQ0ODA4NmVjOTA3ZDljY2RjMjM1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMDktMjQgIEVkdWFyZG8gTGltYSBNaXRldiAgPGVs
aW1hQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkcyBpbXBsZW1lbnRhdGlvbiBvZiBz
dWJ0bGUgY3J5cHRvIEFFUy1DQkMgYWxnb3JpdGhtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMzNDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOiBX
aGl0ZWxpc3RzIEFFUy1DQkMgcmVsYXRlZCB0ZXN0cyB0aGF0IGFyZSBwYXNzaW5nCisKIDIwMTQt
MDktMjQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNzM4MzkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGRjYzcyN2YxNjg1NGZiN2I1ZWRmMzFhZTgxZDNiZDVh
ZjI1MjAxZjcuLjYxYTQxOWE2Yzg0NzlmMWMyYTg3ZTcxMGJmZjZmNTQzNWZhNGQ1ODkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNTUsNyArMzU1LDcg
QEAgQnVnKEdUSykgZWRpdGluZy9zZWN1cmUtaW5wdXQgWyBGYWlsdXJlIF0KICMgU3ludGhlc2l6
ZWQgaXRhbGljcyBub3Qgc3VwcG9ydGVkCiB3ZWJraXQub3JnL2IvMTE3OTc1IGZhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL3N5bnRoZXNpemVkLWl0YWxpYy12ZXJ0aWNhbC1sYXRpbi5odG1sIFsgU2tp
cCBdCiAKLSMgY3J5cHRvLnN1YnRsZSBpcyBub3QgeWV0IGVuYWJsZWQsIGJ1dCBkaWdlc3QgYWxn
b3JpdGhtcyBhcmUgYWxyZWFkeSBpbXBsZW1lbnRlZAorIyBjcnlwdG8uc3VidGxlIGlzIG5vdCB5
ZXQgZnVsbHkgZW5hYmxlZCwgYnV0IHNvbWUgYWxnb3JpdGhtcyBhcmUgYWxyZWFkeSBpbXBsZW1l
bnRlZAogIyBhbmQgdGhlaXIgdGVzdHMgYXJlIHdoaXRlbGlzdGVkCiB3ZWJraXQub3JnL2IvMTMz
MTIyIGNyeXB0by9zdWJ0bGUgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMzMzMTkgY3J5cHRvL3N1
YnRsZS9zaGEtMS5odG1sIFsgUGFzcyBdCkBAIC0zNjksNiArMzY5LDE0IEBAIHdlYmtpdC5vcmcv
Yi8xMzMzMjAgY3J5cHRvL3N1YnRsZS9obWFjLWdlbmVyYXRlLWtleS5odG1sIFsgUGFzcyBdCiB3
ZWJraXQub3JnL2IvMTMzMzIwIGNyeXB0by9zdWJ0bGUvaG1hYy1pbXBvcnQtandrLmh0bWwgWyBQ
YXNzIF0KIHdlYmtpdC5vcmcvYi8xMzMzMjAgY3J5cHRvL3N1YnRsZS9obWFjLXNpZ24tdmVyaWZ5
LWVtcHR5LWtleS5odG1sIFsgUGFzcyBdCiB3ZWJraXQub3JnL2IvMTMzMzIwIGNyeXB0by9zdWJ0
bGUvaG1hYy1zaWduLXZlcmlmeS5odG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTMzMzQ0IGNy
eXB0by9zdWJ0bGUvYWVzLWNiYy0xOTItZW5jcnlwdC1kZWNyeXB0Lmh0bWwgWyBQYXNzIF0KK3dl
YmtpdC5vcmcvYi8xMzMzNDQgY3J5cHRvL3N1YnRsZS9hZXMtY2JjLTI1Ni1lbmNyeXB0LWRlY3J5
cHQuaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzEzMzM0NCBjcnlwdG8vc3VidGxlL2Flcy1j
YmMtZW5jcnlwdC1kZWNyeXB0Lmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMzMzNDQgY3J5
cHRvL3N1YnRsZS9hZXMtY2JjLWVuY3J5cHQtZGVjcnlwdC13aXRoLXBhZGRpbmcuaHRtbCBbIFBh
c3MgXQord2Via2l0Lm9yZy9iLzEzMzM0NCBjcnlwdG8vc3VidGxlL2Flcy1jYmMtZ2VuZXJhdGUt
a2V5Lmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMzMzNDQgY3J5cHRvL3N1YnRsZS9hZXMt
Y2JjLWltcG9ydC1qd2suaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzEzMzM0NCBjcnlwdG8v
c3VidGxlL2Flcy1jYmMtaW52YWxpZC1sZW5ndGguaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9i
LzEzMzM0NCBjcnlwdG8vc3VidGxlL2Flcy1jYmMtd3Jvbmcta2V5LWNsYXNzLmh0bWwgWyBQYXNz
IF0KIAogIyBRdWlja1RpbWUgcGx1Zy1pbiBub3QgcmVsZXZhbnQgdG8gdGhpcyBwb3J0CiBCdWco
R1RLKSBwbHVnaW5zL3F1aWNrdGltZS1wbHVnaW4tcmVwbGFjZW1lbnQuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242797</attachid>
            <date>2014-12-08 03:22:26 -0800</date>
            <delta_ts>2022-02-28 03:26:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133344-20141208122315.patch</filename>
            <type>text/plain</type>
            <size>11103</size>
            <attacher name="Eduardo Lima Mitev">elima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2OTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTUyMzVhMTg3MWY1ZTQ2
YThhMTg2Mzc3MjBlYWE3ZTQ3YzU2ODA3MS4uNDYxNDJkNThiN2JkNmRmZDJiNzViYjFlYzljYjU1
NTA2ODM0N2JjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTEyLTA3ICBFZHVh
cmRvIExpbWEgTWl0ZXYgIDxlbGltYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIEFkZHMg
aW1wbGVtZW50YXRpb24gb2Ygc3VidGxlIGNyeXB0byBBRVMtQ0JDIGFsZ29yaXRobQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMzMzQ0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgUGhpbGlwcGUgTm9ybWFuZC4KKworICAgICAgICBUZXN0cyBhcmUgYWxy
ZWFkeSBpbiBwbGFjZSB1bmRlciBjcnlwdG8vc3VidGxlL2Flcy1jYmMtKi5odG1sCisKKyAgICAg
ICAgKiBjcnlwdG8vQ3J5cHRvRXhjZXB0aW9uQ29kZS5oOiBBZGRlZC4KKyAgICAgICAgKiBjcnlw
dG8vZ3RrL0NyeXB0b0FsZ29yaXRobUFFU19DQkNHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlQ2lwaGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUFFU19DQkM6
OnBsYXRmb3JtRW5jcnlwdCk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1BRVNf
Q0JDOjpwbGF0Zm9ybURlY3J5cHQpOgorCiAyMDE0LTEyLTA3ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgW1NvdXBdW0N1cmxdIEhUVFAgaGVh
ZGVyIHZhbHVlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyBsYXRpbjEsIG5vdCBVVEYtOApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL0NyeXB0b0V4Y2VwdGlvbkNvZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9FeGNlcHRpb25Db2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ4Yjdk
OGVmOTk2ZjAzZTZhOGYzM2ViODExMWRjZGNiODYxM2NjZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9DcnlwdG9FeGNlcHRpb25Db2RlLmgKQEAgLTAsMCArMSw0NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIENyeXB0b0V4Y2VwdGlvbkNvZGVfaAorI2RlZmluZSBD
cnlwdG9FeGNlcHRpb25Db2RlX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIHsKKyAg
ICBDcnlwdG9Ob0VyciA9IDAsCisgICAgQ3J5cHRvRGF0YUVyciwKKyAgICBDcnlwdG9Ob3RTdXBw
b3J0ZWRFcnIsCisgICAgQ3J5cHRvSW52YWxpZEFjY2Vzc0VyciwKKyAgICBDcnlwdG9UeXBlTWlz
bWF0Y2hFcnIsCisgICAgQ3J5cHRvRXhjZWVkZWRRdW90YUVyciwKKyAgICBDcnlwdG9TeW50YXhF
cnIsCisgICAgQ3J5cHRvT3BlcmF0aW9uRXJyCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBDcnlwdG9FeGNlcHRpb25Db2RlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dudVRMUy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ251dGxzL0NyeXB0b0FsZ29yaXRobUFFU19DQkNHbnVUTFMu
Y3BwCmluZGV4IGQxNWJmZWEwMzQ3MzFlYzllZTNlZWM4ZmM0ODZjMDI2NjEwM2YzNWYuLmYyNWNh
MThhNjdmOWU2YzlmOTBmYjQ2ZWJiZjQ3NGY5YTMwNGM4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nbnV0bHMvQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQ0dudVRMUy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dudXRscy9DcnlwdG9BbGdvcml0aG1BRVNfQ0JDR251
VExTLmNwcApAQCAtMjksMzQgKzI5LDEzMyBAQAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQog
CiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zLmgiCisjaW5jbHVkZSAiQ3J5
cHRvRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkNyeXB0b0tleUFFUy5oIgotI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUg
PGdudXRscy9nbnV0bHMuaD4KKyNpbmNsdWRlIDxnbnV0bHMvY3J5cHRvLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorc3RhdGljIGdudXRsc19jaXBoZXJfaGRfdCBjcmVhdGVDaXBoZXIoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9L
ZXlBRVMmIGtleSwgZ251dGxzX2NpcGhlcl9hbGdvcml0aG1fdCBhbGdvcml0aG0pCit7CisgICAg
QVNTRVJUKHNpemVvZihwYXJhbWV0ZXJzLml2KSA9PSBnbnV0bHNfY2lwaGVyX2dldF9pdl9zaXpl
KGFsZ29yaXRobSkpOworCisgICAgc2l6ZV90IGtleUxlbmd0aEluQnl0ZXMgPSBrZXkua2V5KCku
c2l6ZSgpOworICAgIGlmIChrZXlMZW5ndGhJbkJ5dGVzICE9IDE2ICYmIGtleUxlbmd0aEluQnl0
ZXMgIT0gMjQgJiYga2V5TGVuZ3RoSW5CeXRlcyAhPSAzMikKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBnbnV0bHNfZGF0dW1fdCBnbnV0bHNLZXk7CisgICAgZ251dGxzS2V5LmRhdGEgPSBjb25z
dF9jYXN0PHVuc2lnbmVkIGNoYXIqPihrZXkua2V5KCkuZGF0YSgpKTsKKyAgICBnbnV0bHNLZXku
c2l6ZSA9IGtleUxlbmd0aEluQnl0ZXM7CisKKyAgICBnbnV0bHNfZGF0dW1fdCBnbnV0bHNJdjsK
KyAgICBnbnV0bHNJdi5kYXRhID0gY29uc3RfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KHBhcmFtZXRlcnMuaXYuZGF0YSgpKSk7Cisg
ICAgZ251dGxzSXYuc2l6ZSA9IHNpemVvZihwYXJhbWV0ZXJzLml2KTsKKworICAgIGdudXRsc19j
aXBoZXJfaGRfdCBjaXBoZXI7CisgICAgaW50IHJldCA9IGdudXRsc19jaXBoZXJfaW5pdCgmY2lw
aGVyLCBhbGdvcml0aG0sICZnbnV0bHNLZXksICZnbnV0bHNJdik7CisgICAgaWYgKHJldCAhPSBH
TlVUTFNfRV9TVUNDRVNTKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBjaXBoZXI7
Cit9CisKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQzo6cGxhdGZvcm1FbmNyeXB0KGNvbnN0
IENyeXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
QUVTJiBrZXksIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNr
IGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7
Ci0gICAgZmFpbHVyZUNhbGxiYWNrKCk7Ci0KLSAgICBVTlVTRURfUEFSQU0ocGFyYW1ldGVycyk7
Ci0gICAgVU5VU0VEX1BBUkFNKGtleSk7Ci0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOwotICAgIFVO
VVNFRF9QQVJBTShjYWxsYmFjayk7CisgICAgLy8gaW4gdGhpcyBjb250ZXh0LCBBRVNfMjU2X0NC
QyBpcyBhIHZhbGlkIGFsZ29yaXRobSBhbHNvIGZvciAxMjggYW5kIDE5MgorICAgIGdudXRsc19j
aXBoZXJfYWxnb3JpdGhtX3QgYWxnb3JpdGhtID0gR05VVExTX0NJUEhFUl9BRVNfMTI4X0NCQzsK
KworICAgIGdudXRsc19jaXBoZXJfaGRfdCBjaXBoZXIgPSBjcmVhdGVDaXBoZXIocGFyYW1ldGVy
cywga2V5LCBhbGdvcml0aG0pOworICAgIGlmICghY2lwaGVyKSB7CisgICAgICAgIGVjID0gQ3J5
cHRvRGF0YUVycjsKKyAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICB1aW50OF90IGJsb2NrU2l6ZSA9IGdudXRsc19jaXBoZXJfZ2V0X2Jsb2Nr
X3NpemUoYWxnb3JpdGhtKTsKKyAgICBzaXplX3QgZGF0YVNpemUgPSBkYXRhLnNlY29uZDsKKwor
ICAgIHVpbnQ4X3QgcGFkZGluZ1NpemUgPSBibG9ja1NpemUgLSAoZGF0YVNpemUgJSBibG9ja1Np
emUpOworICAgIHNpemVfdCBwYWRkZWRTaXplID0gKGRhdGFTaXplIC8gYmxvY2tTaXplKSAqIGJs
b2NrU2l6ZTsKKyAgICBzaXplX3QgY2lwaGVyVGV4dFNpemUgPSBwYWRkZWRTaXplICsgYmxvY2tT
aXplOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChjaXBoZXJUZXh0U2l6ZSk7CisKKyAg
ICAvLyBFbmNyeXB0IGFsbCBkYXRhIGV4Y2VwdCBsYXN0IHVucGFkZGVkIG9jdGV0cworICAgIGlu
dCByZXQ7CisgICAgaWYgKHBhZGRlZFNpemUgPiAwKSB7CisgICAgICAgIHJldCA9IGdudXRsc19j
aXBoZXJfZW5jcnlwdDIoY2lwaGVyLCAodm9pZCAqKSBkYXRhLmZpcnN0LCBwYWRkZWRTaXplLCAo
dm9pZCAqKSByZXN1bHQuZGF0YSgpLCBwYWRkZWRTaXplKTsKKyAgICAgICAgaWYgKHJldCAhPSBH
TlVUTFNfRV9TVUNDRVNTKSB7CisgICAgICAgICAgICBnbnV0bHNfY2lwaGVyX2RlaW5pdChjaXBo
ZXIpOworICAgICAgICAgICAgZWMgPSBDcnlwdG9PcGVyYXRpb25FcnI7CisgICAgICAgICAgICBm
YWlsdXJlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KworICAgIC8vIEFkZCBQS0NTNyBwYWRkaW5nIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9y
ZmM1NjUyI3NlY3Rpb24tNi4zPgorICAgIC8vIGFuZCBlbmNyeXB0IGxhc3QgYmxvY2sKKyAgICBt
ZW1jcHkocmVzdWx0LmRhdGEoKSArIHBhZGRlZFNpemUsIGRhdGEuZmlyc3QgKyBwYWRkZWRTaXpl
LCBibG9ja1NpemUgLSBwYWRkaW5nU2l6ZSk7CisgICAgbWVtc2V0KHJlc3VsdC5kYXRhKCkgKyBj
aXBoZXJUZXh0U2l6ZSAtIHBhZGRpbmdTaXplLCBwYWRkaW5nU2l6ZSwgcGFkZGluZ1NpemUpOwor
CisgICAgLy8gRW5jcnlwdCBsYXN0IGJsb2NrIHdpdGggcGFkZGluZworICAgIHJldCA9IGdudXRs
c19jaXBoZXJfZW5jcnlwdDIoY2lwaGVyLCByZXN1bHQuZGF0YSgpICsgcGFkZGVkU2l6ZSwgYmxv
Y2tTaXplLCAodm9pZCAqKSAocmVzdWx0LmRhdGEoKSArIHBhZGRlZFNpemUpLCBibG9ja1NpemUp
OworICAgIGlmIChyZXQgIT0gR05VVExTX0VfU1VDQ0VTUykgeworICAgICAgICBnbnV0bHNfY2lw
aGVyX2RlaW5pdChjaXBoZXIpOworICAgICAgICAgICAgZWMgPSBDcnlwdG9PcGVyYXRpb25FcnI7
CisgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgZ251dGxzX2NpcGhlcl9kZWluaXQoY2lwaGVyKTsKKyAgICBjYWxsYmFjayhyZXN1bHQpOwog
fQogCiB2b2lkIENyeXB0b0FsZ29yaXRobUFFU19DQkM6OnBsYXRmb3JtRGVjcnlwdChjb25zdCBD
cnlwdG9BbGdvcml0aG1BZXNDYmNQYXJhbXMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUFF
UyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayBj
YWxsYmFjaywgVm9pZENhbGxiYWNrIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwot
ICAgIGZhaWx1cmVDYWxsYmFjaygpOwotCi0gICAgVU5VU0VEX1BBUkFNKHBhcmFtZXRlcnMpOwot
ICAgIFVOVVNFRF9QQVJBTShrZXkpOwotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKLSAgICBVTlVT
RURfUEFSQU0oY2FsbGJhY2spOworICAgIC8vIGluIHRoaXMgY29udGV4dCwgQUVTXzI1Nl9DQkMg
aXMgYSB2YWxpZCBhbGdvcml0aG0gYWxzbyBmb3IgMTI4IGFuZCAxOTIKKyAgICBnbnV0bHNfY2lw
aGVyX2FsZ29yaXRobV90IGFsZ29yaXRobSA9IEdOVVRMU19DSVBIRVJfQUVTXzEyOF9DQkM7CisK
KyAgICBnbnV0bHNfY2lwaGVyX2hkX3QgY2lwaGVyID0gY3JlYXRlQ2lwaGVyKHBhcmFtZXRlcnMs
IGtleSwgYWxnb3JpdGhtKTsKKyAgICBpZiAoIWNpcGhlcikgeworICAgICAgICBlYyA9IENyeXB0
b0RhdGFFcnI7CisgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChkYXRhLnNlY29uZCk7CisgICAgaW50
IHJldCA9IGdudXRsc19jaXBoZXJfZGVjcnlwdDIoY2lwaGVyLCBkYXRhLmZpcnN0LCBkYXRhLnNl
Y29uZCwgKHZvaWQgKikgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSk7CisgICAgaWYgKHJl
dCAhPSBHTlVUTFNfRV9TVUNDRVNTKSB7CisgICAgICAgIGdudXRsc19jaXBoZXJfZGVpbml0KGNp
cGhlcik7CisgICAgICAgIGVjID0gQ3J5cHRvT3BlcmF0aW9uRXJyOworICAgICAgICBmYWlsdXJl
Q2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFJlbW92ZSBQS0NT
NyBwYWRkaW5nIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1NjUyI3NlY3Rpb24tNi4z
PgorICAgIHNpemVfdCBkYXRhU2l6ZSA9IHJlc3VsdC5zaXplKCk7CisgICAgdWludDhfdCBibG9j
a1NpemUgPSBnbnV0bHNfY2lwaGVyX2dldF9ibG9ja19zaXplKGFsZ29yaXRobSk7CisgICAgdWlu
dDhfdCBwYWRkaW5nU2l6ZSA9IHJlc3VsdC5kYXRhKCkgW2RhdGFTaXplIC0gMV07CisgICAgaWYg
KCFwYWRkaW5nU2l6ZSB8fCBwYWRkaW5nU2l6ZSA+IGJsb2NrU2l6ZSkgeworICAgICAgICBnbnV0
bHNfY2lwaGVyX2RlaW5pdChjaXBoZXIpOworICAgICAgICBlYyA9IENyeXB0b0RhdGFFcnI7Cisg
ICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8v
IENoZWNrIHNhbml0eSBvZiB0aGUgd2hvbGUgcGFkZGluZworICAgIGZvciAoaW50IGkgPSAxOyBp
IDwgcGFkZGluZ1NpemU7IGkrKykgeworICAgICAgICBpZiAocmVzdWx0LmRhdGEoKSBbZGF0YVNp
emUgLSBpXSAhPSBwYWRkaW5nU2l6ZSkgeworICAgICAgICAgICAgZ251dGxzX2NpcGhlcl9kZWlu
aXQoY2lwaGVyKTsKKyAgICAgICAgICAgIGVjID0gQ3J5cHRvRGF0YUVycjsKKyAgICAgICAgICAg
IGZhaWx1cmVDYWxsYmFjaygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorCisgICAgcmVzdWx0LnNocmluayhkYXRhU2l6ZSAtIHBhZGRpbmdTaXplKTsKKworICAgIGdu
dXRsc19jaXBoZXJfZGVpbml0KGNpcGhlcik7CisgICAgY2FsbGJhY2socmVzdWx0KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDEzZmVhNTNkMWM4ZDQzNWQzY2E0NzEyMzBi
NzRjOTE4MTVmMjIwZWEuLmEzZjJhNDk1Y2JmYzdlOTNhZmYwMTI1YTRkZWEyYTU5NzUzZWFiMjAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNC0xMi0wNyAgRWR1YXJkbyBMaW1hIE1pdGV2ICA8
ZWxpbWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGRzIGltcGxlbWVudGF0aW9uIG9m
IHN1YnRsZSBjcnlwdG8gQUVTLUNCQyBhbGdvcml0aG0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzM0NAorCisgICAgICAgIFJldmlld2VkIGJ5IFBo
aWxpcHBlIE5vcm1hbmQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9u
czogV2hpdGVsaXN0cyBBRVMtQ0JDIHJlbGF0ZWQgdGVzdHMgdGhhdCBhcmUgcGFzc2luZworCiAy
MDE0LTEyLTA3ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAK
ICAgICAgICAgW1NvdXBdW0N1cmxdIEhUVFAgaGVhZGVyIHZhbHVlcyBzaG91bGQgYmUgdHJlYXRl
ZCBhcyBsYXRpbjEsIG5vdCBVVEYtOApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCA1Njg0YTIxODBjYTFhOTAxMDVmNjNlNjU2NTRhZTFkZDk5Y2RmNmQ4Li5h
ZjMxYTc5YmRhNmJhNjZkZTM1NGVkODgyYjk2ODAyZjJiMGY3ODEyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzkxLDcgKzM5MSw3IEBAIEJ1ZyhHVEsp
IGVkaXRpbmcvc2VjdXJlLWlucHV0IFsgRmFpbHVyZSBdCiAjIFN5bnRoZXNpemVkIGl0YWxpY3Mg
bm90IHN1cHBvcnRlZAogd2Via2l0Lm9yZy9iLzExNzk3NSBmYXN0L3RleHQvaW50ZXJuYXRpb25h
bC9zeW50aGVzaXplZC1pdGFsaWMtdmVydGljYWwtbGF0aW4uaHRtbCBbIFNraXAgXQogCi0jIGNy
eXB0by5zdWJ0bGUgaXMgbm90IHlldCBlbmFibGVkLCBidXQgZGlnZXN0IGFsZ29yaXRobXMgYXJl
IGFscmVhZHkgaW1wbGVtZW50ZWQKKyMgY3J5cHRvLnN1YnRsZSBpcyBub3QgeWV0IGZ1bGx5IGVu
YWJsZWQsIGJ1dCBzb21lIGFsZ29yaXRobXMgYXJlIGFscmVhZHkgaW1wbGVtZW50ZWQKICMgYW5k
IHRoZWlyIHRlc3RzIGFyZSB3aGl0ZWxpc3RlZAogd2Via2l0Lm9yZy9iLzEzMzEyMiBjcnlwdG8v
c3VidGxlIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTMzMzE5IGNyeXB0by9zdWJ0bGUvc2hhLTEu
aHRtbCBbIFBhc3MgXQpAQCAtNDA1LDYgKzQwNSwxNCBAQCB3ZWJraXQub3JnL2IvMTMzMzIwIGNy
eXB0by9zdWJ0bGUvaG1hYy1nZW5lcmF0ZS1rZXkuaHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9i
LzEzMzMyMCBjcnlwdG8vc3VidGxlL2htYWMtaW1wb3J0LWp3ay5odG1sIFsgUGFzcyBdCiB3ZWJr
aXQub3JnL2IvMTMzMzIwIGNyeXB0by9zdWJ0bGUvaG1hYy1zaWduLXZlcmlmeS1lbXB0eS1rZXku
aHRtbCBbIFBhc3MgXQogd2Via2l0Lm9yZy9iLzEzMzMyMCBjcnlwdG8vc3VidGxlL2htYWMtc2ln
bi12ZXJpZnkuaHRtbCBbIFBhc3MgXQord2Via2l0Lm9yZy9iLzEzMzM0NCBjcnlwdG8vc3VidGxl
L2Flcy1jYmMtMTkyLWVuY3J5cHQtZGVjcnlwdC5odG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2Iv
MTMzMzQ0IGNyeXB0by9zdWJ0bGUvYWVzLWNiYy0yNTYtZW5jcnlwdC1kZWNyeXB0Lmh0bWwgWyBQ
YXNzIF0KK3dlYmtpdC5vcmcvYi8xMzMzNDQgY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWVuY3J5cHQt
ZGVjcnlwdC5odG1sIFsgUGFzcyBdCit3ZWJraXQub3JnL2IvMTMzMzQ0IGNyeXB0by9zdWJ0bGUv
YWVzLWNiYy1lbmNyeXB0LWRlY3J5cHQtd2l0aC1wYWRkaW5nLmh0bWwgWyBQYXNzIF0KK3dlYmtp
dC5vcmcvYi8xMzMzNDQgY3J5cHRvL3N1YnRsZS9hZXMtY2JjLWdlbmVyYXRlLWtleS5odG1sIFsg
UGFzcyBdCit3ZWJraXQub3JnL2IvMTMzMzQ0IGNyeXB0by9zdWJ0bGUvYWVzLWNiYy1pbXBvcnQt
andrLmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMzMzNDQgY3J5cHRvL3N1YnRsZS9hZXMt
Y2JjLWludmFsaWQtbGVuZ3RoLmh0bWwgWyBQYXNzIF0KK3dlYmtpdC5vcmcvYi8xMzMzNDQgY3J5
cHRvL3N1YnRsZS9hZXMtY2JjLXdyb25nLWtleS1jbGFzcy5odG1sIFsgUGFzcyBdCiAKICMgUXVp
Y2tUaW1lIHBsdWctaW4gbm90IHJlbGV2YW50IHRvIHRoaXMgcG9ydAogQnVnKEdUSykgcGx1Z2lu
cy9xdWlja3RpbWUtcGx1Z2luLXJlcGxhY2VtZW50Lmh0bWwgWyBTa2lwIF0K
</data>
<flag name="review"
          id="267671"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>