<?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>104624</bug_id>
          
          <creation_ts>2012-12-10 18:53:26 -0800</creation_ts>
          <short_desc>IndexedDB: Improve error messages</short_desc>
          <delta_ts>2012-12-13 12:11:14 -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>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Grogan">dgrogan</reporter>
          <assigned_to name="David Grogan">dgrogan</assigned_to>
          <cc>alecflett</cc>
    
    <cc>jsbell</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>787941</commentid>
    <comment_count>0</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-10 18:53:26 -0800</bug_when>
    <thetext>IndexedDB: Improve error messages</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787942</commentid>
    <comment_count>1</comment_count>
      <attachid>178686</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-10 18:54:50 -0800</bug_when>
    <thetext>Created attachment 178686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787943</commentid>
    <comment_count>2</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-10 18:55:19 -0800</bug_when>
    <thetext>Josh and Alec, could you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787978</commentid>
    <comment_count>3</comment_count>
      <attachid>178686</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-10 20:27:20 -0800</bug_when>
    <thetext>Comment on attachment 178686
Patch

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

lgtm with nits/suggestions

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:304
&gt; +        RefPtr&lt;IDBDatabaseError&gt; error = IDBDatabaseError::create(IDBDatabaseException::UnknownError, String::format(&quot;Internal error creating object store %s.&quot;, m_objectStore-&gt;name().utf8().data()));

If you haven&apos;t, can you try inducing one of these errors locally with an object store with a non-ASCII name to make sure the encoding/formatting of the name makes it through correctly?

Suggest quotes around the name in the output string. (I think we do that in other error messages, but whatever is consistent with existing messages.)

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:305
&gt; +        transaction-&gt;abort(error);

Could be error.release()

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:363
&gt;          transaction-&gt;abort(error);

Not new in this patch, but this could be error.release()

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:625
&gt; +            RefPtr&lt;IDBDatabaseError&gt; error = IDBDatabaseError::create(IDBDatabaseException::UnknownError, &quot;Connection is closing.&quot;);

This should be moved outside the loop.

&gt; Source/WebCore/Modules/indexeddb/IDBFactoryBackendImpl.cpp:85
&gt; +        callbacks-&gt;onError(IDBDatabaseError::create(IDBDatabaseException::UnknownError, &quot;Internal error opening backing store for getDatabaseNames.&quot;));

Should probably use &quot;webkitGetDatabaseNames&quot;

&gt; Source/WebCore/Modules/indexeddb/IDBFactoryBackendImpl.cpp:154
&gt; +            callbacks-&gt;onError(IDBDatabaseError::create(IDBDatabaseException::UnknownError, &quot;Internal error opening backing store for open.&quot;));

This might be more readable as &quot;...for indexedDB.open().&quot; or &quot;...for IDBFactory.open().&quot; (and maybe apply that pattern above/below too)

&gt; Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.cpp:108
&gt; +    abort(IDBDatabaseError::create(IDBDatabaseException::UnknownError, &quot;Internal error, no error specified.&quot;));

Is this called anywhere? If not, maybe remove this method entirely? If it is, I think this reads a bit like a &quot;Daily WTF Error&apos;d&quot; entry, so suggest &quot;Internal error (unknown cause).&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788661</commentid>
    <comment_count>4</comment_count>
      <attachid>178686</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-11 12:21:13 -0800</bug_when>
    <thetext>Comment on attachment 178686
Patch

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

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:348
&gt; +        RefPtr&lt;IDBDatabaseError&gt; error = IDBDatabaseError::create(IDBDatabaseException::UnknownError, String::format(&quot;Internal error deleting object store %s.&quot;, m_objectStore-&gt;name().utf8().data()));

Is there any precident for putting quotes around user data like this?  i.e. &quot;Internal error deleting object store &apos;store&apos;&quot; instead of &quot;Internal error deleting object store store&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788970</commentid>
    <comment_count>5</comment_count>
      <attachid>178686</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-11 16:43:58 -0800</bug_when>
    <thetext>Comment on attachment 178686
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:304
&gt;&gt; +        RefPtr&lt;IDBDatabaseError&gt; error = IDBDatabaseError::create(IDBDatabaseException::UnknownError, String::format(&quot;Internal error creating object store %s.&quot;, m_objectStore-&gt;name().utf8().data()));
&gt; 
&gt; If you haven&apos;t, can you try inducing one of these errors locally with an object store with a non-ASCII name to make sure the encoding/formatting of the name makes it through correctly?
&gt; 
&gt; Suggest quotes around the name in the output string. (I think we do that in other error messages, but whatever is consistent with existing messages.)

Yeah, a trial run with non-ascii characters is a good idea.

Quotes added.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:305
&gt;&gt; +        transaction-&gt;abort(error);
&gt; 
&gt; Could be error.release()

Done. That just reduces ref-count churn, right?  Or does it do something else?

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:348
&gt;&gt; +        RefPtr&lt;IDBDatabaseError&gt; error = IDBDatabaseError::create(IDBDatabaseException::UnknownError, String::format(&quot;Internal error deleting object store %s.&quot;, m_objectStore-&gt;name().utf8().data()));
&gt; 
&gt; Is there any precident for putting quotes around user data like this?  i.e. &quot;Internal error deleting object store &apos;store&apos;&quot; instead of &quot;Internal error deleting object store store&quot;

Quotes added.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:625
&gt;&gt; +            RefPtr&lt;IDBDatabaseError&gt; error = IDBDatabaseError::create(IDBDatabaseException::UnknownError, &quot;Connection is closing.&quot;);
&gt; 
&gt; This should be moved outside the loop.

Done.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBFactoryBackendImpl.cpp:85
&gt;&gt; +        callbacks-&gt;onError(IDBDatabaseError::create(IDBDatabaseException::UnknownError, &quot;Internal error opening backing store for getDatabaseNames.&quot;));
&gt; 
&gt; Should probably use &quot;webkitGetDatabaseNames&quot;

Done.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBFactoryBackendImpl.cpp:154
&gt;&gt; +            callbacks-&gt;onError(IDBDatabaseError::create(IDBDatabaseException::UnknownError, &quot;Internal error opening backing store for open.&quot;));
&gt; 
&gt; This might be more readable as &quot;...for indexedDB.open().&quot; or &quot;...for IDBFactory.open().&quot; (and maybe apply that pattern above/below too)

Done.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.cpp:108
&gt;&gt; +    abort(IDBDatabaseError::create(IDBDatabaseException::UnknownError, &quot;Internal error, no error specified.&quot;));
&gt; 
&gt; Is this called anywhere? If not, maybe remove this method entirely? If it is, I think this reads a bit like a &quot;Daily WTF Error&apos;d&quot; entry, so suggest &quot;Internal error (unknown cause).&quot;

I tried to remove it but it is indeed called. When script calls transaction-&gt;abort(), it ends up here, but AFAICT that&apos;s the only incoming path.

Message changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788973</commentid>
    <comment_count>6</comment_count>
      <attachid>178918</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-11 16:44:29 -0800</bug_when>
    <thetext>Created attachment 178918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789038</commentid>
    <comment_count>7</comment_count>
      <attachid>178686</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-11 17:33:59 -0800</bug_when>
    <thetext>Comment on attachment 178686
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp:304
&gt;&gt;&gt; +        RefPtr&lt;IDBDatabaseError&gt; error = IDBDatabaseError::create(IDBDatabaseException::UnknownError, String::format(&quot;Internal error creating object store %s.&quot;, m_objectStore-&gt;name().utf8().data()));
&gt;&gt; 
&gt;&gt; If you haven&apos;t, can you try inducing one of these errors locally with an object store with a non-ASCII name to make sure the encoding/formatting of the name makes it through correctly?
&gt;&gt; 
&gt;&gt; Suggest quotes around the name in the output string. (I think we do that in other error messages, but whatever is consistent with existing messages.)
&gt; 
&gt; Yeah, a trial run with non-ascii characters is a good idea.
&gt; 
&gt; Quotes added.

UTF8 whopping fail.

Line from js file:
evalAndLog(&quot;db.createObjectStore(&apos;汉  字  漢  𝄞&apos;, {keyPath: &apos;a&apos;})&quot;);

Result in chrome:
db.createObjectStore(&apos;æ±‰  å­—  æ¼¢  ð„ž&apos;, {keyPath: &apos;a&apos;})
FAIL Abort function called unexpectedly! Message: [Internal error creating object store &apos;Ã¦Â±â°  Ã¥Â­â  Ã¦Â¼Â¢  Ã°ÂâÅ¾&apos;.]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789077</commentid>
    <comment_count>8</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-11 18:09:53 -0800</bug_when>
    <thetext>After specifying charset=&quot;utf-8&quot; in the &lt;script&gt; tag, we get

evalAndLog(&quot;db.createObjectStore(&apos;汉  字  漢  𝄞&apos;, {keyPath: &apos;a&apos;})&quot;);


db.createObjectStore(&apos;汉  字  漢  𝄞&apos;, {keyPath: &apos;a&apos;})
FAIL Abort function called unexpectedly! Message: [Internal error creating object store &apos;æ±  å­  æ¼¢  ð&apos;.]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789125</commentid>
    <comment_count>9</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-11 19:36:35 -0800</bug_when>
    <thetext>A literal chinese character inserted into the error message in the source file is also garbled:

RefPtr&lt;IDBDatabaseError&gt; error = IDBDatabaseError::create(IDBDatabaseException::UnknownError, &quot;Internal error creating object 漢 sto&quot;)

causes

FAIL Abort function called unexpectedly! Message: [Internal error creating object æ¼¢ sto]

æ¼¢ are the latin1/extended ascii symbols for the three individual bytes of the utf8 representation of 漢.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789134</commentid>
    <comment_count>10</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-11 20:00:35 -0800</bug_when>
    <thetext>Tony, could you review this?

It appears that something further down the chain from IDB is misinterpreting these bytes so I don&apos;t want this patch to block on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789135</commentid>
    <comment_count>11</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-12-11 20:04:13 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; It appears that something further down the chain from IDB is misinterpreting these bytes so I don&apos;t want this patch to block on it.

Agreed - we should file a bug and track it down at some point. (I wouldn&apos;t bother with a FIXME since it&apos;s in so many places. I wonder if there are non-IDB examples that work or are equally broken?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789150</commentid>
    <comment_count>12</comment_count>
      <attachid>178918</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-11 20:51:02 -0800</bug_when>
    <thetext>Comment on attachment 178918
Patch

String::format is the problem. It assumes its result is only 8-bit characters:
StringImpl::create(reinterpret_cast&lt;const LChar*&gt;(buffer.data()), len)

I will use a series of String::append instead of format if nothing else. But that can wait, this patch can go in as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789654</commentid>
    <comment_count>13</comment_count>
      <attachid>178918</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-12-12 09:57:50 -0800</bug_when>
    <thetext>Comment on attachment 178918
Patch

Are there tests for any of these error strings?  Would be nice to have some with unicode names even if they are failing right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790195</commentid>
    <comment_count>14</comment_count>
      <attachid>179180</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-12 19:01:34 -0800</bug_when>
    <thetext>Created attachment 179180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790203</commentid>
    <comment_count>15</comment_count>
      <attachid>179181</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-12 19:21:42 -0800</bug_when>
    <thetext>Created attachment 179181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790205</commentid>
    <comment_count>16</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-12-12 19:25:48 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 178918 [details])
&gt; Are there tests for any of these error strings?  Would be nice to have some with unicode names even if they are failing right now.

We don&apos;t have tests for many of them, but I added a chinese character to one of the few we do have. (The tool behind &quot;Review Patch&quot; also does a utf8-&gt;ascii conversion, but you can see the original characters in the raw Patch.)

Alec, I plumbed errorMessage from verifyIndexKeys up to script. There was a FIXME for it, it seemed easy, and it was the only way I could test this utf8 stuff. Was there any reason you were holding off on plumbing it through?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790678</commentid>
    <comment_count>17</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-12-13 09:27:41 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Alec, I plumbed errorMessage from verifyIndexKeys up to script. There was a FIXME for it, it seemed easy, and it was the only way I could test this utf8 stuff. Was there any reason you were holding off on plumbing it through?

I&apos;m pretty sure when that FIXME first went in, the plumbing wasn&apos;t completely there.... like abort only took an error code or something. So what you have here looks great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790809</commentid>
    <comment_count>18</comment_count>
      <attachid>179181</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 12:11:10 -0800</bug_when>
    <thetext>Comment on attachment 179181
Patch

Clearing flags on attachment: 179181

Committed r137635: &lt;http://trac.webkit.org/changeset/137635&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790810</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-13 12:11:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178686</attachid>
            <date>2012-12-10 18:54:50 -0800</date>
            <delta_ts>2012-12-11 17:33:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104624-20121210185212.patch</filename>
            <type>text/plain</type>
            <size>12360</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGZhZGNjMDAzYmQ1ZWI3
NGI4MjBlOGU0M2FjMzcwY2Y4ZjE5MTJiZi4uMTY5OTk3YzA1OThiZDE5OWY2OTRmMjU4ZWQ4ZDg2
YTQxY2M3ZDFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTEyLTEwICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IElt
cHJvdmUgZXJyb3IgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNDYyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBkZXRhaWwgdG8gZXJyb3IgbWVzc2FnZXMgc28gdGhhdCB0aGV5IGFy
ZSBtb3JlIGhlbHBmdWwgYW5kIGNhbiBiZQorICAgICAgICB0cmFjZWQgYmFjayB0byBhIHNwZWNp
ZmljIGxpbmUgb2YgY29kZS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6Q3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6RGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246
OnBlcmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVy
c2lvbkNoYW5nZU9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpnZXREYXRhYmFzZU5hbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OkNyZWF0ZUluZGV4T3BlcmF0aW9uOjpw
ZXJmb3JtKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6
OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNv
bW1pdCk6CisKIDIwMTItMTItMTAgIFlpIFNoZW4gIDxtYXguaG9uZy5zaGVuQGdtYWlsLmNvbT4K
IAogICAgICAgICBLZXlib2FyZCBjYXJldCBtb3ZlbWVudCBpbiB0ZXh0YXJlYSB3aXRoIFJUTCBP
dmVycmlkZSBDaGFyYWN0ZXIgY2FuIG1ha2UgdGFiIHVucmVzcG9uc2l2ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcAppbmRleCAzYmM3NTRhODcxZWQ0ZTNjMTNmNTU2ODUxMjAzOTk2ODA1ZDdkOTczLi5h
MTVjODlmZTMzMzZjMGQ0OTc2YTk4MzVlODkxNTQ4MzMwY2Y3MDYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcApAQCAtMzAxLDcgKzMwMSw4IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
Q3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CCiB7CiAg
ICAgSURCX1RSQUNFKCJDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbiIpOwogICAgIGlmICghbV9k
YXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLT5i
YWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlLT5pZCgpLCBtX29iamVjdFN0b3Jl
LT5pZCgpLCBtX29iamVjdFN0b3JlLT5uYW1lKCksIG1fb2JqZWN0U3RvcmUtPmtleVBhdGgoKSwg
bV9vYmplY3RTdG9yZS0+YXV0b0luY3JlbWVudCgpKSkgewotICAgICAgICB0cmFuc2FjdGlvbi0+
YWJvcnQoKTsKKyAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIFN0
cmluZzo6Zm9ybWF0KCJJbnRlcm5hbCBlcnJvciBjcmVhdGluZyBvYmplY3Qgc3RvcmUgJXMuIiwg
bV9vYmplY3RTdG9yZS0+bmFtZSgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgdHJhbnNhY3Rp
b24tPmFib3J0KGVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTM0NCw3ICsz
NDUsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OkRlbGV0ZU9iamVjdFN0b3JlT3Bl
cmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQgogICAgIElEQl9UUkFDRSgiRGVsZXRlT2Jq
ZWN0U3RvcmVPcGVyYXRpb24iKTsKICAgICBib29sIG9rID0gbV9kYXRhYmFzZS0+bV9iYWNraW5n
U3RvcmUtPmRlbGV0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbigpLCBtX2RhdGFiYXNlLT5pZCgpLCBtX29iamVjdFN0b3JlLT5pZCgpKTsKICAgICBpZiAo
IW9rKSB7Ci0gICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50
ZXJuYWwgZXJyb3IgZGVsZXRpbmcgb2JqZWN0IHN0b3JlLiIpOworICAgICAgICBSZWZQdHI8SURC
RGF0YWJhc2VFcnJvcj4gZXJyb3IgPSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJh
c2VFeGNlcHRpb246OlVua25vd25FcnJvciwgU3RyaW5nOjpmb3JtYXQoIkludGVybmFsIGVycm9y
IGRlbGV0aW5nIG9iamVjdCBzdG9yZSAlcy4iLCBtX29iamVjdFN0b3JlLT5uYW1lKCkudXRmOCgp
LmRhdGEoKSkpOwogICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoZXJyb3IpOwogICAgIH0KIH0K
QEAgLTM1Nyw3ICszNTgsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OlZlcnNpb25D
aGFuZ2VPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrZQogICAgIEFTU0VSVCht
X3ZlcnNpb24gPiBvbGRWZXJzaW9uKTsKICAgICBtX2RhdGFiYXNlLT5tX21ldGFkYXRhLmludFZl
cnNpb24gPSBtX3ZlcnNpb247CiAgICAgaWYgKCFtX2RhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+
dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFu
c2FjdGlvbigpLCBkYXRhYmFzZUlkLCBtX2RhdGFiYXNlLT5tX21ldGFkYXRhLmludFZlcnNpb24p
KSB7Ci0gICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiRXJyb3Ig
d3JpdGluZyBkYXRhIHRvIHN0YWJsZSBzdG9yYWdlLiIpOworICAgICAgICBSZWZQdHI8SURCRGF0
YWJhc2VFcnJvcj4gZXJyb3IgPSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VF
eGNlcHRpb246OlVua25vd25FcnJvciwgIkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3Rv
cmFnZSB3aGVuIHVwZGF0aW5nIHZlcnNpb24uIik7CiAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkVy
cm9yKGVycm9yKTsKICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KGVycm9yKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtNDgzLDcgKzQ4NCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV9tZXRhZGF0YS5pZCA9PSBJbnZhbGlkSWQgJiYg
IW9wZW5JbnRlcm5hbCgpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVy
bmFsIGVycm9yLiIpKTsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwg
ZXJyb3Igb3BlbmluZyBkYXRhYmFzZSB3aXRoIG5vIHZlcnNpb24gc3BlY2lmaWVkLiIpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV9tZXRhZGF0YS52ZXJzaW9uID09IE5vU3Ry
aW5nVmVyc2lvbiAmJiBtX21ldGFkYXRhLmludFZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0
YTo6Tm9JbnRWZXJzaW9uKSB7CkBAIC01NDUsNyArNTQ2LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPgogICAgICAgICBpZiAob3BlbkludGVybmFsKCkpCiAgICAgICAgICAgICBBU1NFUlQobV9t
ZXRhZGF0YS5pbnRWZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbik7
CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50
ZXJuYWwgZXJyb3IuIikpOworICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBTdHJp
bmc6OmZvcm1hdCgiSW50ZXJuYWwgZXJyb3Igb3BlbmluZyBjb25uZWN0aW9uIHdpdGggdmVyc2lv
biAlbGxkIiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPih2ZXJzaW9uKSkpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTU4Myw3ICs1ODQsNyBAQCB2b2lkIElEQkRh
dGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBwcnBDYWxsYmFjawogICAgIH0KICAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogICAgIGlm
ICghbV9iYWNraW5nU3RvcmUtPmRlbGV0ZURhdGFiYXNlKG1fbWV0YWRhdGEubmFtZSkpIHsKLSAg
ICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgICAg
ICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvciBkZWxldGluZyBkYXRhYmFz
ZS4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9tZXRhZGF0YS52ZXJzaW9uID0g
Tm9TdHJpbmdWZXJzaW9uOwpAQCAtNjIwLDggKzYyMSwxMCBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OmNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycENhbGxi
YWNrcwogICAgIC8vIEZJWE1FOiBBZGQgYSB0ZXN0IGZvciB0aGUgbV9wZW5kaW5nT3BlbkNhbGxz
IGFuZCBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscyBjYXNlcyBiZWxvdy4KICAgICBpZiAo
IWNvbm5lY3Rpb25Db3VudCgpICYmICFtX3BlbmRpbmdPcGVuQ2FsbHMuc2l6ZSgpICYmICFtX3Bl
bmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5zaXplKCkgJiYgIW1fcGVuZGluZ0RlbGV0ZUNhbGxz
LnNpemUoKSkgewogICAgICAgICBUcmFuc2FjdGlvbk1hcCB0cmFuc2FjdGlvbnMobV90cmFuc2Fj
dGlvbnMpOwotICAgICAgICBmb3IgKFRyYW5zYWN0aW9uTWFwOjpjb25zdF9pdGVyYXRvcjo6VmFs
dWVzIGl0ID0gdHJhbnNhY3Rpb25zLnZhbHVlcygpLmJlZ2luKCksIGVuZCA9IHRyYW5zYWN0aW9u
cy52YWx1ZXMoKS5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgKCppdCktPmFi
b3J0KCk7CisgICAgICAgIGZvciAoVHJhbnNhY3Rpb25NYXA6OmNvbnN0X2l0ZXJhdG9yOjpWYWx1
ZXMgaXQgPSB0cmFuc2FjdGlvbnMudmFsdWVzKCkuYmVnaW4oKSwgZW5kID0gdHJhbnNhY3Rpb25z
LnZhbHVlcygpLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIFJlZlB0cjxJ
REJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiQ29ubmVjdGlvbiBpcyBjbG9zaW5nLiIpOwor
ICAgICAgICAgICAgKCppdCktPmFib3J0KGVycm9yKTsKKyAgICAgICAgfQogCiAgICAgICAgIEFT
U0VSVChtX3RyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAppbmRl
eCA1MWFlOGNlZDE5Yjg4NjNlY2QxYWM5ZWQ3ODk5OWMxMjQ0NWUwZTQ4Li4zYWNlNDZjOTVhNmZl
MjNlYTA2NTBiMjBhNTU2NTk4MTRjZDNjOWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKQEAgLTgy
LDcgKzgyLDcgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6OmdldERhdGFiYXNlTmFtZXMo
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywKIHsKICAgICBSZWZQdHI8SURCQmFj
a2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBvcGVuQmFja2luZ1N0b3JlKHNlY3VyaXR5T3JpZ2lu
LCBkYXRhRGlyZWN0b3J5KTsKICAgICBpZiAoIWJhY2tpbmdTdG9yZSkgewotICAgICAgICBjYWxs
YmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yIG9wZW5pbmcgYmFja2luZyBzdG9yZSBmb3Ig
Z2V0RGF0YWJhc2VOYW1lcy4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMCw3
ICsxMTAsNyBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UoY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbAogICAgIC8vIEZJWE1FOiBFdmVyeXRo
aW5nIGZyb20gbm93IG9uIHNob3VsZCBiZSBkb25lIG9uIGFub3RoZXIgdGhyZWFkLgogICAgIFJl
ZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IG9wZW5CYWNraW5nU3RvcmUoc2Vj
dXJpdHlPcmlnaW4sIGRhdGFEaXJlY3RvcnkpOwogICAgIGlmICghYmFja2luZ1N0b3JlKSB7Ci0g
ICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yLiIpKTsKKyAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3Igb3BlbmluZyBiYWNraW5n
IHN0b3JlIGZvciBkZWxldGVEYXRhYmFzZS4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0
YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbAogICAgICAgICBkYXRh
YmFzZUJhY2tlbmQtPmRlbGV0ZURhdGFiYXNlKGNhbGxiYWNrcyk7CiAgICAgICAgIG1fZGF0YWJh
c2VCYWNrZW5kTWFwLnJlbW92ZSh1bmlxdWVJZGVudGlmaWVyKTsKICAgICB9IGVsc2UKLSAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgICAgICBj
YWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvciBjcmVhdGluZyBkYXRhYmFzZSBi
YWNrZW5kIGZvciBkZWxldGVEYXRhYmFzZS4iKSk7CiB9CiAKIFBhc3NSZWZQdHI8SURCQmFja2lu
Z1N0b3JlPiBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YURpcmVj
dG9yeSkKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Bl
bihjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgaW50NjRfdCB0cgogICAgIGlm
IChpdCA9PSBtX2RhdGFiYXNlQmFja2VuZE1hcC5lbmQoKSkgewogICAgICAgICBSZWZQdHI8SURC
QmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUgPSBvcGVuQmFja2luZ1N0b3JlKHNlY3VyaXR5T3Jp
Z2luLCBkYXRhRGlyZWN0b3J5KTsKICAgICAgICAgaWYgKCFiYWNraW5nU3RvcmUpIHsKLSAgICAg
ICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yLiIpKTsKKyAgICAg
ICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yIG9wZW5pbmcgYmFj
a2luZyBzdG9yZSBmb3Igb3Blbi4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IApAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNv
bnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBpbnQ2NF90IHRyCiAgICAgICAgIGlm
IChkYXRhYmFzZUJhY2tlbmQpCiAgICAgICAgICAgICBtX2RhdGFiYXNlQmFja2VuZE1hcC5zZXQo
dW5pcXVlSWRlbnRpZmllciwgZGF0YWJhc2VCYWNrZW5kLmdldCgpKTsKICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvci4iKSk7
CisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvciBjcmVh
dGluZyBkYXRhYmFzZSBiYWNrZW5kIGZvciBvcGVuLiIpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAppbmRleCAy
YWRhNTI1MzlkNjA2Y2E2YmVlNTE4YTYzMTM3NzA5OWU2N2FlYjdlLi5lZWFhNWIwZThkMWE5ZTc0
NjI5YmY0ZmM0N2VhMDdjY2M3ZmIzZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcApA
QCAtNjUwLDcgKzY1MCw3IEBAIHZvaWQgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6Q3JlYXRl
SW5kZXhPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYWNrCiB7CiAgICAgSURCX1RS
QUNFKCJDcmVhdGVJbmRleE9wZXJhdGlvbiIpOwogICAgIGlmICghbV9vYmplY3RTdG9yZS0+YmFj
a2luZ1N0b3JlKCktPmNyZWF0ZUluZGV4KHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbigpLCBtX29iamVjdFN0b3JlLT5kYXRhYmFzZUlkKCksIG1fb2JqZWN0U3RvcmUtPmlkKCks
IG1faW5kZXgtPmlkKCksIG1faW5kZXgtPm5hbWUoKSwgbV9pbmRleC0+a2V5UGF0aCgpLCBtX2lu
ZGV4LT51bmlxdWUoKSwgbV9pbmRleC0+bXVsdGlFbnRyeSgpKSkgewotICAgICAgICB0cmFuc2Fj
dGlvbi0+YWJvcnQoKTsKKyAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBTdHJpbmc6OmZv
cm1hdCgiSW50ZXJuYWwgZXJyb3Igd2hlbiB0cnlpbmcgdG8gY3JlYXRlIGluZGV4ICVzLiIsIG1f
aW5kZXgtPm5hbWUoKS51dGY4KCkuZGF0YSgpKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAppbmRleCAyYmFkNTkwNmQ0YWRmZDA1OTlhOTQx
OTRiNmI3NGRmYjQ0MDNkMzYzLi5mNDA3MTVjZWYyYjllMjkxOWYyMmYzMjg0NTY3ZGVjNWVjYzMw
MWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIGJv
b2wgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2NoZWR1bGVUYXNrKFRhc2tUeXBlIHR5cGUs
IFBhc3NPd25QdHI8T3BlcmF0aW9uCiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6
YWJvcnQoKQogewotICAgIGFib3J0KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgIGFib3J0
KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVy
cm9yLCAiSW50ZXJuYWwgZXJyb3IsIG5vIGVycm9yIHNwZWNpZmllZC4iKSk7CiB9CiAKIHZvaWQg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWJvcnQoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVy
cm9yPiBlcnJvcikKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEltcGw6OmNvbW1pdCgpCiAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkNvbXBsZXRlKCk7CiAgICAg
ICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWRBbmRDb21wbGV0ZUZpcmVkKHRoaXMp
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fY2FsbGJhY2tzLT5vbkFib3J0KElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJu
YWwgZXJyb3IuIikpOworICAgICAgICBtX2NhbGxiYWNrcy0+b25BYm9ydChJREJEYXRhYmFzZUVy
cm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFs
IGVycm9yIGNvbW1pdHRpbmcgdHJhbnNhY3Rpb24uIikpOwogICAgICAgICBtX2RhdGFiYXNlLT50
cmFuc2FjdGlvbkZpbmlzaGVkQW5kQWJvcnRGaXJlZCh0aGlzKTsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178918</attachid>
            <date>2012-12-11 16:44:29 -0800</date>
            <delta_ts>2012-12-12 19:01:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104624-20121211164150.patch</filename>
            <type>text/plain</type>
            <size>13552</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY1OWM2MDk1ODlkMDc2
Mzk3MjRkZGIwMTRjZTdiNTMxODNmZTAxYy4uYWVjYWYwNzBjZDcxNDBmMjhkNWY1ZTAzNWNiN2U0
ODRmNjk4MGViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTEyLTEwICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IElt
cHJvdmUgZXJyb3IgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNDYyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBkZXRhaWwgdG8gZXJyb3IgbWVzc2FnZXMgc28gdGhhdCB0aGV5IGFy
ZSBtb3JlIGhlbHBmdWwgYW5kIGNhbiBiZQorICAgICAgICB0cmFjZWQgYmFjayB0byBhIHNwZWNp
ZmljIGxpbmUgb2YgY29kZS4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
SW1wbDo6Q3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6RGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246
OnBlcmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVy
c2lvbkNoYW5nZU9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpnZXREYXRhYmFzZU5hbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OkNyZWF0ZUluZGV4T3BlcmF0aW9uOjpw
ZXJmb3JtKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tl
bmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6
OmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmNv
bW1pdCk6CisKIDIwMTItMTItMTEgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4K
IAogICAgICAgICBGaXggdGhlIE1hYyBidWlsZCBhZnRlciByMTM3MjYxCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwCmluZGV4IDNiYzc1NGE4NzFlZDRlM2MxM2Y1NTY4NTEyMDM5OTY4MDVkN2Q5NzMuLjI5
MzM5NjI3ZmZiZTY5M2ZhZWQwNjg4MzA4NTI4YjQ2NDA1NTEyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZElt
cGwuY3BwCkBAIC0zMDEsNyArMzAxLDggQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpD
cmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2FjdGlvbkIKIHsKICAg
ICBJREJfVFJBQ0UoIkNyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uIik7CiAgICAgaWYgKCFtX2Rh
dGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+Y3JlYXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2UtPmlkKCksIG1fb2JqZWN0U3RvcmUt
PmlkKCksIG1fb2JqZWN0U3RvcmUtPm5hbWUoKSwgbV9vYmplY3RTdG9yZS0+a2V5UGF0aCgpLCBt
X29iamVjdFN0b3JlLT5hdXRvSW5jcmVtZW50KCkpKSB7Ci0gICAgICAgIHRyYW5zYWN0aW9uLT5h
Ym9ydCgpOworICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IgPSBJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgU3Ry
aW5nOjpmb3JtYXQoIkludGVybmFsIGVycm9yIGNyZWF0aW5nIG9iamVjdCBzdG9yZSAnJXMnLiIs
IG1fb2JqZWN0U3RvcmUtPm5hbWUoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIHRyYW5zYWN0
aW9uLT5hYm9ydChlcnJvci5yZWxlYXNlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpA
QCAtMzQ0LDcgKzM0NSw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6RGVsZXRlT2Jq
ZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CCiAgICAgSURCX1RSQUNF
KCJEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbiIpOwogICAgIGJvb2wgb2sgPSBtX2RhdGFiYXNl
LT5tX2JhY2tpbmdTdG9yZS0+ZGVsZXRlT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24tPmJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uKCksIG1fZGF0YWJhc2UtPmlkKCksIG1fb2JqZWN0U3RvcmUtPmlkKCkp
OwogICAgIGlmICghb2spIHsKLSAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9y
ID0gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3du
RXJyb3IsICJJbnRlcm5hbCBlcnJvciBkZWxldGluZyBvYmplY3Qgc3RvcmUuIik7CisgICAgICAg
IFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBTdHJpbmc6OmZvcm1hdCgiSW50
ZXJuYWwgZXJyb3IgZGVsZXRpbmcgb2JqZWN0IHN0b3JlICclcycuIiwgbV9vYmplY3RTdG9yZS0+
bmFtZSgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KGVycm9y
KTsKICAgICB9CiB9CkBAIC0zNTcsNyArMzU4LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFja2UK
ICAgICBBU1NFUlQobV92ZXJzaW9uID4gb2xkVmVyc2lvbik7CiAgICAgbV9kYXRhYmFzZS0+bV9t
ZXRhZGF0YS5pbnRWZXJzaW9uID0gbV92ZXJzaW9uOwogICAgIGlmICghbV9kYXRhYmFzZS0+bV9i
YWNraW5nU3RvcmUtPnVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbih0cmFuc2FjdGlvbi0+YmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCwgbV9kYXRhYmFzZS0+bV9tZXRhZGF0
YS5pbnRWZXJzaW9uKSkgewotICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3Ig
PSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25F
cnJvciwgIkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZS4iKTsKKyAgICAgICAg
UmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJFcnJvciB3cml0aW5nIGRhdGEg
dG8gc3RhYmxlIHN0b3JhZ2Ugd2hlbiB1cGRhdGluZyB2ZXJzaW9uLiIpOwogICAgICAgICBtX2Nh
bGxiYWNrcy0+b25FcnJvcihlcnJvcik7CiAgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydChlcnJv
cik7CiAgICAgICAgIHJldHVybjsKQEAgLTQ4Myw3ICs0ODQsNyBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxs
YmFja3MsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1fbWV0YWRhdGEuaWQgPT0g
SW52YWxpZElkICYmICFvcGVuSW50ZXJuYWwoKSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJy
b3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3du
RXJyb3IsICJJbnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJ
REJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJv
ciwgIkludGVybmFsIGVycm9yIG9wZW5pbmcgZGF0YWJhc2Ugd2l0aCBubyB2ZXJzaW9uIHNwZWNp
ZmllZC4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1fbWV0YWRhdGEudmVy
c2lvbiA9PSBOb1N0cmluZ1ZlcnNpb24gJiYgbV9tZXRhZGF0YS5pbnRWZXJzaW9uID09IElEQkRh
dGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbikgewpAQCAtNTQ1LDcgKzU0Niw3IEBAIHZvaWQg
SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVm
UHRyPElEQkNhbGxiYWNrcz4KICAgICAgICAgaWYgKG9wZW5JbnRlcm5hbCgpKQogICAgICAgICAg
ICAgQVNTRVJUKG1fbWV0YWRhdGEuaW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpO
b0ludFZlcnNpb24pOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNhbGxiYWNrcy0+b25F
cnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25v
d25FcnJvciwgIkludGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrcy0+b25F
cnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25v
d25FcnJvciwgU3RyaW5nOjpmb3JtYXQoIkludGVybmFsIGVycm9yIG9wZW5pbmcgY29ubmVjdGlv
biB3aXRoIHZlcnNpb24gJWxsZCIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4odmVyc2lvbikpKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC01ODMsNyArNTg0LDcg
QEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFzZShQYXNzUmVmUHRy
PElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2sKICAgICB9CiAgICAgQVNTRVJUKG1fYmFja2luZ1N0
b3JlKTsKICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5kZWxldGVEYXRhYmFzZShtX21ldGFkYXRh
Lm5hbWUpKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9y
LiIpKTsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0
ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgZGVs
ZXRpbmcgZGF0YWJhc2UuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fbWV0YWRh
dGEudmVyc2lvbiA9IE5vU3RyaW5nVmVyc2lvbjsKQEAgLTYyMCw4ICs2MjEsOSBAQCB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3M+IHBycENhbGxiYWNrcwogICAgIC8vIEZJWE1FOiBBZGQgYSB0ZXN0IGZvciB0aGUgbV9wZW5k
aW5nT3BlbkNhbGxzIGFuZCBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscyBjYXNlcyBiZWxv
dy4KICAgICBpZiAoIWNvbm5lY3Rpb25Db3VudCgpICYmICFtX3BlbmRpbmdPcGVuQ2FsbHMuc2l6
ZSgpICYmICFtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5zaXplKCkgJiYgIW1fcGVuZGlu
Z0RlbGV0ZUNhbGxzLnNpemUoKSkgewogICAgICAgICBUcmFuc2FjdGlvbk1hcCB0cmFuc2FjdGlv
bnMobV90cmFuc2FjdGlvbnMpOworICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJy
b3IgPSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25v
d25FcnJvciwgIkNvbm5lY3Rpb24gaXMgY2xvc2luZy4iKTsKICAgICAgICAgZm9yIChUcmFuc2Fj
dGlvbk1hcDo6Y29uc3RfaXRlcmF0b3I6OlZhbHVlcyBpdCA9IHRyYW5zYWN0aW9ucy52YWx1ZXMo
KS5iZWdpbigpLCBlbmQgPSB0cmFuc2FjdGlvbnMudmFsdWVzKCkuZW5kKCk7IGl0ICE9IGVuZDsg
KytpdCkKLSAgICAgICAgICAgICgqaXQpLT5hYm9ydCgpOworICAgICAgICAgICAgKCppdCktPmFi
b3J0KGVycm9yKTsKIAogICAgICAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuaXNFbXB0eSgpKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eUJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnlCYWNrZW5kSW1wbC5jcHAKaW5kZXggNTFhZThjZWQxOWI4ODYzZWNkMWFjOWVkNzg5OTlj
MTI0NDVlMGU0OC4uNDUxYzgxZDExMzNhODg2ZDg2OWY0ZDkyYzBmZmMwNjAwMjgwMzJiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tl
bmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5QmFja2VuZEltcGwuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tl
bmRJbXBsOjpnZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFj
a3MsCiB7CiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gb3BlbkJh
Y2tpbmdTdG9yZShzZWN1cml0eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7CiAgICAgaWYgKCFiYWNr
aW5nU3RvcmUpIHsKLSAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJy
b3IuIikpOworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3Jl
YXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvciBv
cGVuaW5nIGJhY2tpbmcgc3RvcmUgZm9yIGluZGV4ZWREQi53ZWJraXRHZXREYXRhYmFzZU5hbWVz
LiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQg
SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUs
IFBhc3NSZWZQdHI8SURCQ2FsCiAgICAgLy8gRklYTUU6IEV2ZXJ5dGhpbmcgZnJvbSBub3cgb24g
c2hvdWxkIGJlIGRvbmUgb24gYW5vdGhlciB0aHJlYWQuCiAgICAgUmVmUHRyPElEQkJhY2tpbmdT
dG9yZT4gYmFja2luZ1N0b3JlID0gb3BlbkJhY2tpbmdTdG9yZShzZWN1cml0eU9yaWdpbiwgZGF0
YURpcmVjdG9yeSk7CiAgICAgaWYgKCFiYWNraW5nU3RvcmUpIHsKLSAgICAgICAgY2FsbGJhY2tz
LT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgICAgICBjYWxsYmFja3MtPm9u
RXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtu
b3duRXJyb3IsICJJbnRlcm5hbCBlcnJvciBvcGVuaW5nIGJhY2tpbmcgc3RvcmUgZm9yIGluZGV4
ZWREQi5kZWxldGVEYXRhYmFzZS4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEy
MCw3ICsxMjAsNyBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2Uo
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbAogICAgICAgICBkYXRhYmFzZUJh
Y2tlbmQtPmRlbGV0ZURhdGFiYXNlKGNhbGxiYWNrcyk7CiAgICAgICAgIG1fZGF0YWJhc2VCYWNr
ZW5kTWFwLnJlbW92ZSh1bmlxdWVJZGVudGlmaWVyKTsKICAgICB9IGVsc2UKLSAgICAgICAgY2Fs
bGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvciBjcmVhdGluZyBkYXRhYmFzZSBiYWNrZW5k
IGZvciBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UuIikpOwogfQogCiBQYXNzUmVmUHRyPElEQkJh
Y2tpbmdTdG9yZT4gSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuQmFja2luZ1N0b3JlKFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFE
aXJlY3RvcnkpCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6
Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIGludDY0X3QgdHIKICAg
ICBpZiAoaXQgPT0gbV9kYXRhYmFzZUJhY2tlbmRNYXAuZW5kKCkpIHsKICAgICAgICAgUmVmUHRy
PElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gb3BlbkJhY2tpbmdTdG9yZShzZWN1cml0
eU9yaWdpbiwgZGF0YURpcmVjdG9yeSk7CiAgICAgICAgIGlmICghYmFja2luZ1N0b3JlKSB7Ci0g
ICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvci4iKSk7Cisg
ICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvciBvcGVuaW5n
IGJhY2tpbmcgc3RvcmUgZm9yIGluZGV4ZWREQi5vcGVuLiIpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBJREJGYWN0b3J5QmFja2Vu
ZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNpb24sIGludDY0X3Qg
dHIKICAgICAgICAgaWYgKGRhdGFiYXNlQmFja2VuZCkKICAgICAgICAgICAgIG1fZGF0YWJhc2VC
YWNrZW5kTWFwLnNldCh1bmlxdWVJZGVudGlmaWVyLCBkYXRhYmFzZUJhY2tlbmQuZ2V0KCkpOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVy
bmFsIGVycm9yLiIpKTsKKyAgICAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFz
ZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVy
bmFsIGVycm9yIGNyZWF0aW5nIGRhdGFiYXNlIGJhY2tlbmQgZm9yIGluZGV4ZWRkYi5vcGVuLiIp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0gZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9y
ZUJhY2tlbmRJbXBsLmNwcAppbmRleCA4MmViZDQ2NmI3NGFmODU1ZTU3ZmVlYjMzNjkzODE2MGU2
YTUwOTViLi41MzllOGRlMTI4ZTkzMDNmYjc0NTIxMmFiMGZmNWQzZjZlMTk2OWQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tl
bmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbXBsLmNwcApAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbDo6c2V0SW5kZXhLZXlzKFBhc3NSZWZQdHI8SURCS2V5PiBwcnBQcmlt
YXJ5S2V5LCBjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKCFmb3VuZCkgewotICAg
ICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IgPSBJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgU3RyaW5nOjpmb3JtYXQo
IkludGVybmFsIGVycm9yIHNldHRpbmcgaW5kZXgga2V5cyBmb3Igb2JqZWN0IHN0b3JlICVzLiIs
IG5hbWUoKS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9y
PiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6
VW5rbm93bkVycm9yLCBTdHJpbmc6OmZvcm1hdCgiSW50ZXJuYWwgZXJyb3Igc2V0dGluZyBpbmRl
eCBrZXlzIGZvciBvYmplY3Qgc3RvcmUgJyVzJy4iLCBuYW1lKCkudXRmOCgpLmRhdGEoKSkpOwog
ICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoZXJyb3IucmVsZWFzZSgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTYzMiw3ICs2MzIsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEltcGw6Ok9iamVjdFN0b3JlQ2xlYXJPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpbwog
CiBQYXNzUmVmUHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNr
ZW5kSW1wbDo6Y3JlYXRlSW5kZXgoaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBJREJLZXlQYXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2luZGV4ZXMuY29udGFpbnMoaWQp
LCAiSW5kZXhlcyBhbHJlYWR5IGNvbnRhaW4gJXMiLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faW5kZXhlcy5jb250YWlucyhpZCksICJJbmRleGVzIGFs
cmVhZHkgY29udGFpbiAnJXMnIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIAogICAgIFJlZlB0cjxJ
REJJbmRleEJhY2tlbmRJbXBsPiBpbmRleCA9IElEQkluZGV4QmFja2VuZEltcGw6OmNyZWF0ZSht
X2RhdGFiYXNlLCB0aGlzLCBJREJJbmRleE1ldGFkYXRhKG5hbWUsIGlkLCBrZXlQYXRoLCB1bmlx
dWUsIG11bHRpRW50cnkpKTsKICAgICBBU1NFUlQoaW5kZXgtPm5hbWUoKSA9PSBuYW1lKTsKQEAg
LTY1NSw3ICs2NTUsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OkNyZWF0ZUlu
ZGV4T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFjawogewogICAgIElEQl9UUkFD
RSgiQ3JlYXRlSW5kZXhPcGVyYXRpb24iKTsKICAgICBpZiAoIW1fb2JqZWN0U3RvcmUtPmJhY2tp
bmdTdG9yZSgpLT5jcmVhdGVJbmRleCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oKSwgbV9vYmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBtX29iamVjdFN0b3JlLT5pZCgpLCBt
X2luZGV4LT5pZCgpLCBtX2luZGV4LT5uYW1lKCksIG1faW5kZXgtPmtleVBhdGgoKSwgbV9pbmRl
eC0+dW5pcXVlKCksIG1faW5kZXgtPm11bHRpRW50cnkoKSkpIHsKLSAgICAgICAgdHJhbnNhY3Rp
b24tPmFib3J0KCk7CisgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydChJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgU3RyaW5nOjpmb3Jt
YXQoIkludGVybmFsIGVycm9yIHdoZW4gdHJ5aW5nIHRvIGNyZWF0ZSBpbmRleCAnJXMnLiIsIG1f
aW5kZXgtPm5hbWUoKS51dGY4KCkuZGF0YSgpKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcAppbmRleCAyYmFkNTkwNmQ0YWRmZDA1OTlhOTQx
OTRiNmI3NGRmYjQ0MDNkMzYzLi43ODJmNDY1ODI4YzgyN2YyZmU2YzhiNmUzNjdlMTc1ZTdhYmYw
OTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIGJv
b2wgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6c2NoZWR1bGVUYXNrKFRhc2tUeXBlIHR5cGUs
IFBhc3NPd25QdHI8T3BlcmF0aW9uCiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6
YWJvcnQoKQogewotICAgIGFib3J0KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgIGFib3J0
KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVy
cm9yLCAiSW50ZXJuYWwgZXJyb3IgKHVua25vd24gY2F1c2UpIikpOwogfQogCiB2b2lkIElEQlRy
YW5zYWN0aW9uQmFja2VuZEltcGw6OmFib3J0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4g
ZXJyb3IpCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
Ojpjb21taXQoKQogICAgICAgICBtX2NhbGxiYWNrcy0+b25Db21wbGV0ZSgpOwogICAgICAgICBt
X2RhdGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkQW5kQ29tcGxldGVGaXJlZCh0aGlzKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBtX2NhbGxiYWNrcy0+b25BYm9ydChJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVy
cm9yLiIpKTsKKyAgICAgICAgbV9jYWxsYmFja3MtPm9uQWJvcnQoSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJv
ciBjb21taXR0aW5nIHRyYW5zYWN0aW9uLiIpKTsKICAgICAgICAgbV9kYXRhYmFzZS0+dHJhbnNh
Y3Rpb25GaW5pc2hlZEFuZEFib3J0RmlyZWQodGhpcyk7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179180</attachid>
            <date>2012-12-12 19:01:34 -0800</date>
            <delta_ts>2012-12-12 19:21:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104624-20121212185855.patch</filename>
            <type>text/plain</type>
            <size>19389</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDUzYjkwYjZlMTkxNzY1
MTEwMmQ3YzlhYjJhNThhNjZlZDFkMzU3Yi4uZDQzYmRlMTQ0ZjA3NDBjYzAxYmRiMzI4NjMyZmJl
ODhkN2E0NGFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTEyLTEyICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IElt
cHJvdmUgZXJyb3IgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNDYyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBkZXRhaWwgdG8gZXJyb3IgbWVzc2FnZXMgc28gdGhhdCB0aGV5IGFy
ZSBtb3JlIGhlbHBmdWwgYW5kIGNhbiBiZQorICAgICAgICB0cmFjZWQgYmFjayB0byBhIHNwZWNp
ZmljIGxpbmUgb2YgY29kZS4KKworICAgICAgICBVcGRhdGVkIHRlc3Q6IHRyYW5zYWN0aW9uLWVy
cm9yLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Q3Jl
YXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6RGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5n
ZU9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
RmFjdG9yeUJhY2tlbmRJbXBsOjpnZXREYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4S2V5cyk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpDcmVhdGVJbmRleE9wZXJhdGlvbjo6cGVy
Zm9ybSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjph
Ym9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjb21t
aXQpOgorCiAyMDEyLTEyLTEyICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIEluY2x1ZGUgcGFkZGluZ3MgYW5kIGJv
cmRlcnMgaW50byB0aGUgZ3JpZCBlbGVtZW50J3MgbG9naWNhbCBoZWlnaHQgLyB3aWR0aApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmNwcAppbmRleCA1YjEzODIxODg0YzkyNGI3NDBlZTcyZTJmNGNiYmQyMTQz
ODVjYjFkLi45ZWNjM2ZjZDk0NDg1Yzc1OTkxYzA3MGIwYjVkYmI0YTMzMmExM2I1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmNwcApAQCAtMzAxLDcgKzMwMSw4IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Q3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rp
b25CCiB7CiAgICAgSURCX1RSQUNFKCJDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbiIpOwogICAg
IGlmICghbV9kYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3JlKHRyYW5z
YWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlLT5pZCgpLCBtX29i
amVjdFN0b3JlLT5pZCgpLCBtX29iamVjdFN0b3JlLT5uYW1lKCksIG1fb2JqZWN0U3RvcmUtPmtl
eVBhdGgoKSwgbV9vYmplY3RTdG9yZS0+YXV0b0luY3JlbWVudCgpKSkgewotICAgICAgICB0cmFu
c2FjdGlvbi0+YWJvcnQoKTsKKyAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9y
ID0gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3du
RXJyb3IsIFN0cmluZzo6Zm9ybWF0KCJJbnRlcm5hbCBlcnJvciBjcmVhdGluZyBvYmplY3Qgc3Rv
cmUgJyVzJy4iLCBtX29iamVjdFN0b3JlLT5uYW1lKCkudXRmOCgpLmRhdGEoKSkpOworICAgICAg
ICB0cmFuc2FjdGlvbi0+YWJvcnQoZXJyb3IucmVsZWFzZSgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIH0KQEAgLTM4Myw3ICszODQsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OkRlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQgogICAg
IElEQl9UUkFDRSgiRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb24iKTsKICAgICBib29sIG9rID0g
bV9kYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPmRlbGV0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9u
LT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlLT5pZCgpLCBtX29iamVjdFN0
b3JlLT5pZCgpKTsKICAgICBpZiAoIW9rKSB7Ci0gICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVy
cm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgZGVsZXRpbmcgb2JqZWN0IHN0b3JlLiIp
OworICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IgPSBJREJEYXRhYmFzZUVy
cm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgU3RyaW5nOjpm
b3JtYXQoIkludGVybmFsIGVycm9yIGRlbGV0aW5nIG9iamVjdCBzdG9yZSAnJXMnLiIsIG1fb2Jq
ZWN0U3RvcmUtPm5hbWUoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIHRyYW5zYWN0aW9uLT5h
Ym9ydChlcnJvcik7CiAgICAgfQogfQpAQCAtMzk2LDcgKzM5Nyw3IEBAIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2Fj
dGlvbkJhY2tlCiAgICAgQVNTRVJUKG1fdmVyc2lvbiA+IG9sZFZlcnNpb24pOwogICAgIG1fZGF0
YWJhc2UtPm1fbWV0YWRhdGEuaW50VmVyc2lvbiA9IG1fdmVyc2lvbjsKICAgICBpZiAoIW1fZGF0
YWJhc2UtPm1fYmFja2luZ1N0b3JlLT51cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24odHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlSWQsIG1fZGF0YWJhc2Ut
Pm1fbWV0YWRhdGEuaW50VmVyc2lvbikpIHsKLSAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJy
b3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpVbmtub3duRXJyb3IsICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3RhYmxlIHN0b3JhZ2UuIik7
CisgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiRXJyb3Igd3Jp
dGluZyBkYXRhIHRvIHN0YWJsZSBzdG9yYWdlIHdoZW4gdXBkYXRpbmcgdmVyc2lvbi4iKTsKICAg
ICAgICAgbV9jYWxsYmFja3MtPm9uRXJyb3IoZXJyb3IpOwogICAgICAgICB0cmFuc2FjdGlvbi0+
YWJvcnQoZXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC01MjIsNyArNTIzLDcgQEAgdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzLAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX21ldGFk
YXRhLmlkID09IEludmFsaWRJZCAmJiAhb3BlbkludGVybmFsKCkpIHsKLSAgICAgICAgY2FsbGJh
Y2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgICAgICBjYWxsYmFja3Mt
Pm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpV
bmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvciBvcGVuaW5nIGRhdGFiYXNlIHdpdGggbm8gdmVy
c2lvbiBzcGVjaWZpZWQuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX21l
dGFkYXRhLnZlcnNpb24gPT0gTm9TdHJpbmdWZXJzaW9uICYmIG1fbWV0YWRhdGEuaW50VmVyc2lv
biA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pIHsKQEAgLTU4NCw3ICs1ODUs
NyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZlcnNp
b24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+CiAgICAgICAgIGlmIChvcGVuSW50ZXJuYWwoKSkK
ICAgICAgICAgICAgIEFTU0VSVChtX21ldGFkYXRhLmludFZlcnNpb24gPT0gSURCRGF0YWJhc2VN
ZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjYWxs
YmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAgICAgICBjYWxs
YmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVbmtub3duRXJyb3IsIFN0cmluZzo6Zm9ybWF0KCJJbnRlcm5hbCBlcnJvciBvcGVuaW5n
IGNvbm5lY3Rpb24gd2l0aCB2ZXJzaW9uICVsbGQiLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHZl
cnNpb24pKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtNjIy
LDcgKzYyMyw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2Uo
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrCiAgICAgfQogICAgIEFTU0VSVCht
X2JhY2tpbmdTdG9yZSk7CiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlRGF0YWJhc2Uo
bV9tZXRhZGF0YS5uYW1lKSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRl
cm5hbCBlcnJvci4iKSk7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVy
cm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFs
IGVycm9yIGRlbGV0aW5nIGRhdGFiYXNlLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBtX21ldGFkYXRhLnZlcnNpb24gPSBOb1N0cmluZ1ZlcnNpb247CkBAIC02NTksOCArNjYwLDkg
QEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MKICAgICAvLyBGSVhNRTogQWRkIGEgdGVzdCBmb3Ig
dGhlIG1fcGVuZGluZ09wZW5DYWxscyBhbmQgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMg
Y2FzZXMgYmVsb3cuCiAgICAgaWYgKCFjb25uZWN0aW9uQ291bnQoKSAmJiAhbV9wZW5kaW5nT3Bl
bkNhbGxzLnNpemUoKSAmJiAhbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuc2l6ZSgpICYm
ICFtX3BlbmRpbmdEZWxldGVDYWxscy5zaXplKCkpIHsKICAgICAgICAgVHJhbnNhY3Rpb25NYXAg
dHJhbnNhY3Rpb25zKG1fdHJhbnNhY3Rpb25zKTsKKyAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGNsb3NpbmcuIik7CiAgICAgICAgIGZv
ciAoVHJhbnNhY3Rpb25NYXA6OmNvbnN0X2l0ZXJhdG9yOjpWYWx1ZXMgaXQgPSB0cmFuc2FjdGlv
bnMudmFsdWVzKCkuYmVnaW4oKSwgZW5kID0gdHJhbnNhY3Rpb25zLnZhbHVlcygpLmVuZCgpOyBp
dCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAoKml0KS0+YWJvcnQoKTsKKyAgICAgICAgICAg
ICgqaXQpLT5hYm9ydChlcnJvcik7CiAKICAgICAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmlz
RW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmluZGV4IDUxYWU4Y2VkMTliODg2M2VjZDFh
YzllZDc4OTk5YzEyNDQ1ZTBlNDguLjQ1MWM4MWQxMTMzYTg4NmQ4NjlmNGQ5MmMwZmZjMDYwMDI4
MDMyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIElEQkZh
Y3RvcnlCYWNrZW5kSW1wbDo6Z2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzLAogewogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9y
ZSA9IG9wZW5CYWNraW5nU3RvcmUoc2VjdXJpdHlPcmlnaW4sIGRhdGFEaXJlY3RvcnkpOwogICAg
IGlmICghYmFja2luZ1N0b3JlKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIklu
dGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJu
YWwgZXJyb3Igb3BlbmluZyBiYWNraW5nIHN0b3JlIGZvciBpbmRleGVkREIud2Via2l0R2V0RGF0
YWJhc2VOYW1lcy4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMCw3ICsxMTAs
NyBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3Ry
aW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbAogICAgIC8vIEZJWE1FOiBFdmVyeXRoaW5nIGZy
b20gbm93IG9uIHNob3VsZCBiZSBkb25lIG9uIGFub3RoZXIgdGhyZWFkLgogICAgIFJlZlB0cjxJ
REJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IG9wZW5CYWNraW5nU3RvcmUoc2VjdXJpdHlP
cmlnaW4sIGRhdGFEaXJlY3RvcnkpOwogICAgIGlmICghYmFja2luZ1N0b3JlKSB7Ci0gICAgICAg
IGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VF
eGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgY2Fs
bGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3Igb3BlbmluZyBiYWNraW5nIHN0b3Jl
IGZvciBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UuIikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6OmRlbGV0
ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWwKICAgICAgICAg
ZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVEYXRhYmFzZShjYWxsYmFja3MpOwogICAgICAgICBtX2Rh
dGFiYXNlQmFja2VuZE1hcC5yZW1vdmUodW5pcXVlSWRlbnRpZmllcik7CiAgICAgfSBlbHNlCi0g
ICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yLiIpKTsKKyAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgY3JlYXRpbmcgZGF0YWJh
c2UgYmFja2VuZCBmb3IgaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlLiIpKTsKIH0KIAogUGFzc1Jl
ZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3BlbkJhY2tpbmdT
dG9yZShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBkYXRhRGlyZWN0b3J5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSURCRmFjdG9yeUJh
Y2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBpbnQ2
NF90IHRyCiAgICAgaWYgKGl0ID09IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmVuZCgpKSB7CiAgICAg
ICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IG9wZW5CYWNraW5nU3Rv
cmUoc2VjdXJpdHlPcmlnaW4sIGRhdGFEaXJlY3RvcnkpOwogICAgICAgICBpZiAoIWJhY2tpbmdT
dG9yZSkgewotICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJy
b3IuIikpOworICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJy
b3Igb3BlbmluZyBiYWNraW5nIHN0b3JlIGZvciBpbmRleGVkREIub3Blbi4iKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgSURCRmFj
dG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9u
LCBpbnQ2NF90IHRyCiAgICAgICAgIGlmIChkYXRhYmFzZUJhY2tlbmQpCiAgICAgICAgICAgICBt
X2RhdGFiYXNlQmFja2VuZE1hcC5zZXQodW5pcXVlSWRlbnRpZmllciwgZGF0YWJhc2VCYWNrZW5k
LmdldCgpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJy
b3IsICJJbnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJy
b3IsICJJbnRlcm5hbCBlcnJvciBjcmVhdGluZyBkYXRhYmFzZSBiYWNrZW5kIGZvciBpbmRleGVk
ZGIub3Blbi4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9IGVsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggODJlYmQ0NjZiNzRhZjg1NWU1N2ZlZWIz
MzY5MzgxNjBlNmE1MDk1Yi4uMGMyOGIxNTNjODgxYmZjNTdkM2Y1NjJmM2IxOTdlNTkxYzk3ZjQ4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lk
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4S2V5cyhQYXNzUmVmUHRyPElEQktl
eT4gcHJwUHJpbWFyeUtleSwgYwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICghZm91
bmQpIHsKLSAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIFN0cmlu
Zzo6Zm9ybWF0KCJJbnRlcm5hbCBlcnJvciBzZXR0aW5nIGluZGV4IGtleXMgZm9yIG9iamVjdCBz
dG9yZSAlcy4iLCBuYW1lKCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBSZWZQdHI8SURCRGF0
YWJhc2VFcnJvcj4gZXJyb3IgPSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VF
eGNlcHRpb246OlVua25vd25FcnJvciwgU3RyaW5nOjpmb3JtYXQoIkludGVybmFsIGVycm9yIHNl
dHRpbmcgaW5kZXgga2V5cyBmb3Igb2JqZWN0IHN0b3JlICclcycuIiwgbmFtZSgpLnV0ZjgoKS5k
YXRhKCkpKTsKICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KGVycm9yLnJlbGVhc2UoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC00ODEsOCArNDgxLDcgQEAgdm9pZCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleEtleXMoUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1h
cnlLZXksIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoIW9iZXlzQ29uc3RyYWlu
dHMpIHsKLSAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gZGVhbCB3aXRoIGVycm9yTWVzc2FnZSBo
ZXJlLiBtYWtlSW5kZXhXcml0ZXJzIG9ubHkgZmFpbHMgb24gdW5pcXVlbmVzcyBjb25zdHJhaW50
IGVycm9ycy4KLSAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KElEQkRhdGFiYXNlRXJyb3I6OmNy
ZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yLCAiRHVwbGljYXRlIGlu
ZGV4IGtleXMgZXhpc3QgaW4gdGhlIG9iamVjdCBzdG9yZS4iKSk7CisgICAgICAgIHRyYW5zYWN0
aW9uLT5hYm9ydChJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OkNvbnN0cmFpbnRFcnJvciwgZXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTYzMiw3ICs2MzEsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9i
amVjdFN0b3JlQ2xlYXJPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3RpbwogCiBQYXNzUmVm
UHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
Y3JlYXRlSW5kZXgoaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2luZGV4ZXMuY29udGFpbnMoaWQpLCAiSW5kZXhl
cyBhbHJlYWR5IGNvbnRhaW4gJXMiLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIW1faW5kZXhlcy5jb250YWlucyhpZCksICJJbmRleGVzIGFscmVhZHkgY29u
dGFpbiAnJXMnIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIAogICAgIFJlZlB0cjxJREJJbmRleEJh
Y2tlbmRJbXBsPiBpbmRleCA9IElEQkluZGV4QmFja2VuZEltcGw6OmNyZWF0ZShtX2RhdGFiYXNl
LCB0aGlzLCBJREJJbmRleE1ldGFkYXRhKG5hbWUsIGlkLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRp
RW50cnkpKTsKICAgICBBU1NFUlQoaW5kZXgtPm5hbWUoKSA9PSBuYW1lKTsKQEAgLTY1NSw3ICs2
NTQsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OkNyZWF0ZUluZGV4T3BlcmF0
aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFjawogewogICAgIElEQl9UUkFDRSgiQ3JlYXRl
SW5kZXhPcGVyYXRpb24iKTsKICAgICBpZiAoIW1fb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgp
LT5jcmVhdGVJbmRleCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9v
YmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBtX29iamVjdFN0b3JlLT5pZCgpLCBtX2luZGV4LT5p
ZCgpLCBtX2luZGV4LT5uYW1lKCksIG1faW5kZXgtPmtleVBhdGgoKSwgbV9pbmRleC0+dW5pcXVl
KCksIG1faW5kZXgtPm11bHRpRW50cnkoKSkpIHsKLSAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0
KCk7CisgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydChJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUo
SURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgU3RyaW5nOjpmb3JtYXQoIkludGVy
bmFsIGVycm9yIHdoZW4gdHJ5aW5nIHRvIGNyZWF0ZSBpbmRleCAnJXMnLiIsIG1faW5kZXgtPm5h
bWUoKS51dGY4KCkuZGF0YSgpKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmNwcAppbmRleCAyYmFkNTkwNmQ0YWRmZDA1OTlhOTQxOTRiNmI3NGRm
YjQ0MDNkMzYzLi43ODJmNDY1ODI4YzgyN2YyZmU2YzhiNmUzNjdlMTc1ZTdhYmYwOTQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIGJvb2wgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6c2NoZWR1bGVUYXNrKFRhc2tUeXBlIHR5cGUsIFBhc3NPd25Q
dHI8T3BlcmF0aW9uCiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWJvcnQoKQog
ewotICAgIGFib3J0KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgIGFib3J0KElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50
ZXJuYWwgZXJyb3IgKHVua25vd24gY2F1c2UpIikpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6OmFib3J0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IpCkBA
IC0yMzUsNyArMjM1LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjb21taXQo
KQogICAgICAgICBtX2NhbGxiYWNrcy0+b25Db21wbGV0ZSgpOwogICAgICAgICBtX2RhdGFiYXNl
LT50cmFuc2FjdGlvbkZpbmlzaGVkQW5kQ29tcGxldGVGaXJlZCh0aGlzKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBtX2NhbGxiYWNrcy0+b25BYm9ydChJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUo
SURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yLiIpKTsK
KyAgICAgICAgbV9jYWxsYmFja3MtPm9uQWJvcnQoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvciBjb21taXR0
aW5nIHRyYW5zYWN0aW9uLiIpKTsKICAgICAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25GaW5p
c2hlZEFuZEFib3J0RmlyZWQodGhpcyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGY0ZDc4MDNlN2I0MGJh
OTJkYWZlMjRhN2Q4MzQ5NGY2MGExOTAwMC4uZDQxNTI2NmU2MzM1YjdlZTFkMDI2ZTI2ZDRhNTM0
MDUzZDIzYWJmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTEyLTEyICBEYXZpZCBHcm9n
YW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEltcHJvdmUg
ZXJyb3IgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNDYyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZWQgZXJyb3IgbWVzc2FnZSBhbmQgZXN0YWJsaXNoIHRoYXQgbm9uLWFzY2lp
IGNoYXJhY3RlcnMgaW4gaW5kZXgKKyAgICAgICAgbmFtZXMgZG9uJ3QgbWFrZSBpdCBiYWNrIHRv
IHRoZSBicm93c2VyIHByb3Blcmx5LgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL3NoYXJlZC5qczoKKyAgICAgICAgKHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrKToKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tZXJyb3IuanM6
CisgICAgICAgICh0ZXN0RXJyb3JGcm9tQ29tbWl0LnRyYW5zLm9uY29tcGxldGUucmVxdWVzdC5v
bnVwZ3JhZGVuZWVkZWQudHJhbnMub25hYm9ydCk6CisgICAgICAgICh0ZXN0RXJyb3JGcm9tQ29t
bWl0LnRyYW5zLm9uY29tcGxldGUucmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQpOgorICAgICAgICAo
dGVzdEVycm9yRnJvbUNvbW1pdC50cmFucy5vbmNvbXBsZXRlKToKKyAgICAgICAgKHRlc3RFcnJv
ckZyb21Db21taXQpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWVy
cm9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1lcnJvci5odG1sOgorCiAyMDEyLTEyLTEyICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFp
eEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIEluY2x1ZGUgcGFkZGlu
Z3MgYW5kIGJvcmRlcnMgaW50byB0aGUgZ3JpZCBlbGVtZW50J3MgbG9naWNhbCBoZWlnaHQgLyB3
aWR0aApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L3NoYXJlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFy
ZWQuanMKaW5kZXggNTUxYzAyYTgwOTIyNTU5N2Y0MGY1N2VlZDVhMDdkYmE5ZGNkMmMxMC4uY2I5
OTQzODRmYWNiMjc2ODc3NDBkNmIxY2JlODkxNGU4MTc1MGFiOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcworKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzCkBAIC01Myw3ICs1Myw3
IEBAIGZ1bmN0aW9uIHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrKGV2ZW50KQogCiBmdW5jdGlvbiB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjayhlKQogewotICAgIHRlc3RGYWlsZWQoIkFib3J0IGZ1bmN0
aW9uIGNhbGxlZCB1bmV4cGVjdGVkbHkhIik7CisgICAgdGVzdEZhaWxlZCgiQWJvcnQgZnVuY3Rp
b24gY2FsbGVkIHVuZXhwZWN0ZWRseSEgTWVzc2FnZTogWyIgKyBlLnRhcmdldC53ZWJraXRFcnJv
ck1lc3NhZ2UgKyAiXSIpOwogICAgIGZpbmlzaEpTVGVzdCgpOwogfQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tZXJyb3Iu
anMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24t
ZXJyb3IuanMKaW5kZXggMDRlM2JiMjg3NDlhMWEzZDUzNzEwOTdjN2RlZTdlMWQ1YjAyZjRlNy4u
NmFlYWUwMWIyZWM0NzJkMWUwZjBlOGE1YjUxOGQ3OWQwNTU5NDY5YiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWVycm9yLmpz
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlv
bi1lcnJvci5qcwpAQCAtMTA1LDEyICsxMDUsMTMgQEAgZnVuY3Rpb24gdGVzdEVycm9yRnJvbUNv
bW1pdCgpCiAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucyA9IHJlcXVlc3QudHJhbnNhY3Rpb24iKTsKICAg
ICAgICAgICAgIGRlYnVnKCJUaGlzIHNob3VsZCBmYWlsIGR1ZSB0byB0aGUgdW5pcXVlIGNvbnN0
cmFpbnQ6Iik7Ci0gICAgICAgICAgICBldmFsQW5kTG9nKCJ0cmFucy5vYmplY3RTdG9yZSgnc3Rv
cmVOYW1lJykuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICdpZCcsIHt1bmlxdWU6IHRydWV9KSIp
OworICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFtZScp
LmNyZWF0ZUluZGV4KCdBbHNvIHRlc3QgdXRmODog5ryiJywgJ2lkJywge3VuaXF1ZTogdHJ1ZX0p
Iik7CiAgICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2Fs
bGJhY2s7CiAgICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICAgICAgZGVidWcoIlRyYW5zYWN0aW9uIHJlY2VpdmVkIGFib3J0IGV2ZW50LiIpOwogICAg
ICAgICAgICAgICAgIHNob3VsZEJlTm9uTnVsbCgidHJhbnMuZXJyb3IiKTsKICAgICAgICAgICAg
ICAgICBzaG91bGRCZSgidHJhbnMuZXJyb3IubmFtZSIsICInQ29uc3RyYWludEVycm9yJyIpOwor
ICAgICAgICAgICAgICAgIGRlYnVnKCJOb3RlOiB0aGUgY2hpbmVzZSBjaGFyYWN0ZXIgd2lsbCBu
b3Qgc2hvdyB1cCB1bnNjYXRoZWQuIGh0dHA6Ly93a2IudWcvMzczMjciKTsKICAgICAgICAgICAg
ICAgICBkZWJ1ZygidHJhbnMud2Via2l0RXJyb3JNZXNzYWdlID0gIiArIHRyYW5zLndlYmtpdEVy
cm9yTWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmVOb25OdWxsKCJ0cmFucy53ZWJr
aXRFcnJvck1lc3NhZ2UiKTsKICAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1lcnJvci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1lcnJvci1l
eHBlY3RlZC50eHQKaW5kZXggMWI1NDliNTJkNTkyM2U0NGUxMzNiZWJlZDdkZjE1ZmM4NDUwYWZm
Ny4uZDUxMWJmOGI5ZjY5ZmE2MjVkYmMyNGNhM2NiZTY4MWExM2E1YjYyZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tZXJyb3ItZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWVycm9y
LWV4cGVjdGVkLnR4dApAQCAtNTAsMTEgKzUwLDEyIEBAIHJlcXVlc3QgPSB0cmFucy5vYmplY3RT
dG9yZSgnc3RvcmVOYW1lJykuYWRkKHtpZDogMX0sICdyZWNvcmQyJykKIHJlcXVlc3QgPSBpbmRl
eGVkREIub3BlbihkYm5hbWUsIDIpCiB0cmFucyA9IHJlcXVlc3QudHJhbnNhY3Rpb24KIFRoaXMg
c2hvdWxkIGZhaWwgZHVlIHRvIHRoZSB1bmlxdWUgY29uc3RyYWludDoKLXRyYW5zLm9iamVjdFN0
b3JlKCdzdG9yZU5hbWUnKS5jcmVhdGVJbmRleCgnaW5kZXhOYW1lJywgJ2lkJywge3VuaXF1ZTog
dHJ1ZX0pCit0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1lJykuY3JlYXRlSW5kZXgoJ0Fsc28g
dGVzdCB1dGY4OiDmvKInLCAnaWQnLCB7dW5pcXVlOiB0cnVlfSkKIFRyYW5zYWN0aW9uIHJlY2Vp
dmVkIGFib3J0IGV2ZW50LgogUEFTUyB0cmFucy5lcnJvciBpcyBub24tbnVsbC4KIFBBU1MgdHJh
bnMuZXJyb3IubmFtZSBpcyAnQ29uc3RyYWludEVycm9yJwotdHJhbnMud2Via2l0RXJyb3JNZXNz
YWdlID0gRHVwbGljYXRlIGluZGV4IGtleXMgZXhpc3QgaW4gdGhlIG9iamVjdCBzdG9yZS4KK05v
dGU6IHRoZSBjaGluZXNlIGNoYXJhY3RlciB3aWxsIG5vdCBzaG93IHVwIHVuc2NhdGhlZC4gaHR0
cDovL3drYi51Zy8zNzMyNwordHJhbnMud2Via2l0RXJyb3JNZXNzYWdlID0gVW5hYmxlIHRvIGFk
ZCBrZXkgdG8gaW5kZXggJ0Fsc28gdGVzdCB1dGY4OiDDpsK8wqInOiBhdCBsZWFzdCBvbmUga2V5
IGRvZXMgbm90IHNhdGlzZnkgdGhlIHVuaXF1ZW5lc3MgcmVxdWlyZW1lbnRzLgogUEFTUyB0cmFu
cy53ZWJraXRFcnJvck1lc3NhZ2UgaXMgbm9uLW51bGwuCiAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Ry
YW5zYWN0aW9uLWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFu
c2FjdGlvbi1lcnJvci5odG1sCmluZGV4IDNjMGM3Y2UyMDg3YTkzYjE5ZTRkZWRkZGQ3YzdhZDQy
ODA0YzBkYTYuLmMyYzVmODU1YWNhYTI4NmIwNTlhYTVkOGY1YWU5NGNjZWI4ZjA4MzAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWVycm9yLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tZXJyb3Iu
aHRtbApAQCAtNCw3ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48
L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2Fj
dGlvbi1lcnJvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RyYW5zYWN0
aW9uLWVycm9yLmpzIiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179181</attachid>
            <date>2012-12-12 19:21:42 -0800</date>
            <delta_ts>2012-12-13 12:11:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104624-20121212191903.patch</filename>
            <type>text/plain</type>
            <size>19611</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDUzYjkwYjZlMTkxNzY1
MTEwMmQ3YzlhYjJhNThhNjZlZDFkMzU3Yi4uZDQzYmRlMTQ0ZjA3NDBjYzAxYmRiMzI4NjMyZmJl
ODhkN2E0NGFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTEyLTEyICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IElt
cHJvdmUgZXJyb3IgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwNDYyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBkZXRhaWwgdG8gZXJyb3IgbWVzc2FnZXMgc28gdGhhdCB0aGV5IGFy
ZSBtb3JlIGhlbHBmdWwgYW5kIGNhbiBiZQorICAgICAgICB0cmFjZWQgYmFjayB0byBhIHNwZWNp
ZmljIGxpbmUgb2YgY29kZS4KKworICAgICAgICBVcGRhdGVkIHRlc3Q6IHRyYW5zYWN0aW9uLWVy
cm9yLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Q3Jl
YXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6RGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5n
ZU9wZXJhdGlvbjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpvcGVuQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNsb3NlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
RmFjdG9yeUJhY2tlbmRJbXBsOjpnZXREYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpvcGVuKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4S2V5cyk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJPYmplY3RTdG9yZUJhY2tlbmRJbXBsOjpDcmVhdGVJbmRleE9wZXJhdGlvbjo6cGVy
Zm9ybSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjph
Ym9ydCk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjb21t
aXQpOgorCiAyMDEyLTEyLTEyICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIEluY2x1ZGUgcGFkZGluZ3MgYW5kIGJv
cmRlcnMgaW50byB0aGUgZ3JpZCBlbGVtZW50J3MgbG9naWNhbCBoZWlnaHQgLyB3aWR0aApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmNwcAppbmRleCA1YjEzODIxODg0YzkyNGI3NDBlZTcyZTJmNGNiYmQyMTQz
ODVjYjFkLi45ZWNjM2ZjZDk0NDg1Yzc1OTkxYzA3MGIwYjVkYmI0YTMzMmExM2I1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsLmNwcApAQCAtMzAxLDcgKzMwMSw4IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6Q3JlYXRlT2JqZWN0U3RvcmVPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rp
b25CCiB7CiAgICAgSURCX1RSQUNFKCJDcmVhdGVPYmplY3RTdG9yZU9wZXJhdGlvbiIpOwogICAg
IGlmICghbV9kYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPmNyZWF0ZU9iamVjdFN0b3JlKHRyYW5z
YWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlLT5pZCgpLCBtX29i
amVjdFN0b3JlLT5pZCgpLCBtX29iamVjdFN0b3JlLT5uYW1lKCksIG1fb2JqZWN0U3RvcmUtPmtl
eVBhdGgoKSwgbV9vYmplY3RTdG9yZS0+YXV0b0luY3JlbWVudCgpKSkgewotICAgICAgICB0cmFu
c2FjdGlvbi0+YWJvcnQoKTsKKyAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9y
ID0gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3du
RXJyb3IsIFN0cmluZzo6Zm9ybWF0KCJJbnRlcm5hbCBlcnJvciBjcmVhdGluZyBvYmplY3Qgc3Rv
cmUgJyVzJy4iLCBtX29iamVjdFN0b3JlLT5uYW1lKCkudXRmOCgpLmRhdGEoKSkpOworICAgICAg
ICB0cmFuc2FjdGlvbi0+YWJvcnQoZXJyb3IucmVsZWFzZSgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIH0KQEAgLTM4Myw3ICszODQsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OkRlbGV0ZU9iamVjdFN0b3JlT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQgogICAg
IElEQl9UUkFDRSgiRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb24iKTsKICAgICBib29sIG9rID0g
bV9kYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPmRlbGV0ZU9iamVjdFN0b3JlKHRyYW5zYWN0aW9u
LT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBtX2RhdGFiYXNlLT5pZCgpLCBtX29iamVjdFN0
b3JlLT5pZCgpKTsKICAgICBpZiAoIW9rKSB7Ci0gICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVy
cm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgZGVsZXRpbmcgb2JqZWN0IHN0b3JlLiIp
OworICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IgPSBJREJEYXRhYmFzZUVy
cm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgU3RyaW5nOjpm
b3JtYXQoIkludGVybmFsIGVycm9yIGRlbGV0aW5nIG9iamVjdCBzdG9yZSAnJXMnLiIsIG1fb2Jq
ZWN0U3RvcmUtPm5hbWUoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIHRyYW5zYWN0aW9uLT5h
Ym9ydChlcnJvcik7CiAgICAgfQogfQpAQCAtMzk2LDcgKzM5Nyw3IEBAIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6cGVyZm9ybShJREJUcmFuc2Fj
dGlvbkJhY2tlCiAgICAgQVNTRVJUKG1fdmVyc2lvbiA+IG9sZFZlcnNpb24pOwogICAgIG1fZGF0
YWJhc2UtPm1fbWV0YWRhdGEuaW50VmVyc2lvbiA9IG1fdmVyc2lvbjsKICAgICBpZiAoIW1fZGF0
YWJhc2UtPm1fYmFja2luZ1N0b3JlLT51cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24odHJhbnNh
Y3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlSWQsIG1fZGF0YWJhc2Ut
Pm1fbWV0YWRhdGEuaW50VmVyc2lvbikpIHsKLSAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJy
b3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpVbmtub3duRXJyb3IsICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3RhYmxlIHN0b3JhZ2UuIik7
CisgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiRXJyb3Igd3Jp
dGluZyBkYXRhIHRvIHN0YWJsZSBzdG9yYWdlIHdoZW4gdXBkYXRpbmcgdmVyc2lvbi4iKTsKICAg
ICAgICAgbV9jYWxsYmFja3MtPm9uRXJyb3IoZXJyb3IpOwogICAgICAgICB0cmFuc2FjdGlvbi0+
YWJvcnQoZXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC01MjIsNyArNTIzLDcgQEAgdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxi
YWNrcz4gY2FsbGJhY2tzLAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX21ldGFk
YXRhLmlkID09IEludmFsaWRJZCAmJiAhb3BlbkludGVybmFsKCkpIHsKLSAgICAgICAgY2FsbGJh
Y2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgICAgICBjYWxsYmFja3Mt
Pm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpV
bmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvciBvcGVuaW5nIGRhdGFiYXNlIHdpdGggbm8gdmVy
c2lvbiBzcGVjaWZpZWQuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX21l
dGFkYXRhLnZlcnNpb24gPT0gTm9TdHJpbmdWZXJzaW9uICYmIG1fbWV0YWRhdGEuaW50VmVyc2lv
biA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pIHsKQEAgLTU4NCw3ICs1ODUs
NyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZlcnNp
b24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+CiAgICAgICAgIGlmIChvcGVuSW50ZXJuYWwoKSkK
ICAgICAgICAgICAgIEFTU0VSVChtX21ldGFkYXRhLmludFZlcnNpb24gPT0gSURCRGF0YWJhc2VN
ZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjYWxs
YmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAgICAgICBjYWxs
YmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVbmtub3duRXJyb3IsIFN0cmluZzo6Zm9ybWF0KCJJbnRlcm5hbCBlcnJvciBvcGVuaW5n
IGNvbm5lY3Rpb24gd2l0aCB2ZXJzaW9uICVsbGQiLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHZl
cnNpb24pKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtNjIy
LDcgKzYyMyw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2Uo
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrCiAgICAgfQogICAgIEFTU0VSVCht
X2JhY2tpbmdTdG9yZSk7CiAgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+ZGVsZXRlRGF0YWJhc2Uo
bV9tZXRhZGF0YS5uYW1lKSkgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRl
cm5hbCBlcnJvci4iKSk7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVy
cm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFs
IGVycm9yIGRlbGV0aW5nIGRhdGFiYXNlLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBtX21ldGFkYXRhLnZlcnNpb24gPSBOb1N0cmluZ1ZlcnNpb247CkBAIC02NTksOCArNjYwLDkg
QEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiBwcnBDYWxsYmFja3MKICAgICAvLyBGSVhNRTogQWRkIGEgdGVzdCBmb3Ig
dGhlIG1fcGVuZGluZ09wZW5DYWxscyBhbmQgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMg
Y2FzZXMgYmVsb3cuCiAgICAgaWYgKCFjb25uZWN0aW9uQ291bnQoKSAmJiAhbV9wZW5kaW5nT3Bl
bkNhbGxzLnNpemUoKSAmJiAhbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuc2l6ZSgpICYm
ICFtX3BlbmRpbmdEZWxldGVDYWxscy5zaXplKCkpIHsKICAgICAgICAgVHJhbnNhY3Rpb25NYXAg
dHJhbnNhY3Rpb25zKG1fdHJhbnNhY3Rpb25zKTsKKyAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0
aW9uOjpVbmtub3duRXJyb3IsICJDb25uZWN0aW9uIGlzIGNsb3NpbmcuIik7CiAgICAgICAgIGZv
ciAoVHJhbnNhY3Rpb25NYXA6OmNvbnN0X2l0ZXJhdG9yOjpWYWx1ZXMgaXQgPSB0cmFuc2FjdGlv
bnMudmFsdWVzKCkuYmVnaW4oKSwgZW5kID0gdHJhbnNhY3Rpb25zLnZhbHVlcygpLmVuZCgpOyBp
dCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICAoKml0KS0+YWJvcnQoKTsKKyAgICAgICAgICAg
ICgqaXQpLT5hYm9ydChlcnJvcik7CiAKICAgICAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmlz
RW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCmluZGV4IDUxYWU4Y2VkMTliODg2M2VjZDFh
YzllZDc4OTk5YzEyNDQ1ZTBlNDguLjQ1MWM4MWQxMTMzYTg4NmQ4NjlmNGQ5MmMwZmZjMDYwMDI4
MDMyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZh
Y3RvcnlCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIElEQkZh
Y3RvcnlCYWNrZW5kSW1wbDo6Z2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gY2FsbGJhY2tzLAogewogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9y
ZSA9IG9wZW5CYWNraW5nU3RvcmUoc2VjdXJpdHlPcmlnaW4sIGRhdGFEaXJlY3RvcnkpOwogICAg
IGlmICghYmFja2luZ1N0b3JlKSB7Ci0gICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIklu
dGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJu
YWwgZXJyb3Igb3BlbmluZyBiYWNraW5nIHN0b3JlIGZvciBpbmRleGVkREIud2Via2l0R2V0RGF0
YWJhc2VOYW1lcy4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMCw3ICsxMTAs
NyBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3Ry
aW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbAogICAgIC8vIEZJWE1FOiBFdmVyeXRoaW5nIGZy
b20gbm93IG9uIHNob3VsZCBiZSBkb25lIG9uIGFub3RoZXIgdGhyZWFkLgogICAgIFJlZlB0cjxJ
REJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IG9wZW5CYWNraW5nU3RvcmUoc2VjdXJpdHlP
cmlnaW4sIGRhdGFEaXJlY3RvcnkpOwogICAgIGlmICghYmFja2luZ1N0b3JlKSB7Ci0gICAgICAg
IGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VF
eGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgY2Fs
bGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3Igb3BlbmluZyBiYWNraW5nIHN0b3Jl
IGZvciBpbmRleGVkREIuZGVsZXRlRGF0YWJhc2UuIikpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6OmRlbGV0
ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWwKICAgICAgICAg
ZGF0YWJhc2VCYWNrZW5kLT5kZWxldGVEYXRhYmFzZShjYWxsYmFja3MpOwogICAgICAgICBtX2Rh
dGFiYXNlQmFja2VuZE1hcC5yZW1vdmUodW5pcXVlSWRlbnRpZmllcik7CiAgICAgfSBlbHNlCi0g
ICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yLiIpKTsKKyAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IgY3JlYXRpbmcgZGF0YWJh
c2UgYmFja2VuZCBmb3IgaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlLiIpKTsKIH0KIAogUGFzc1Jl
ZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3BlbkJhY2tpbmdT
dG9yZShQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBkYXRhRGlyZWN0b3J5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgSURCRmFjdG9yeUJh
Y2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBpbnQ2
NF90IHRyCiAgICAgaWYgKGl0ID09IG1fZGF0YWJhc2VCYWNrZW5kTWFwLmVuZCgpKSB7CiAgICAg
ICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IG9wZW5CYWNraW5nU3Rv
cmUoc2VjdXJpdHlPcmlnaW4sIGRhdGFEaXJlY3RvcnkpOwogICAgICAgICBpZiAoIWJhY2tpbmdT
dG9yZSkgewotICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJy
b3IuIikpOworICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6
OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJy
b3Igb3BlbmluZyBiYWNraW5nIHN0b3JlIGZvciBpbmRleGVkREIub3Blbi4iKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgSURCRmFj
dG9yeUJhY2tlbmRJbXBsOjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9u
LCBpbnQ2NF90IHRyCiAgICAgICAgIGlmIChkYXRhYmFzZUJhY2tlbmQpCiAgICAgICAgICAgICBt
X2RhdGFiYXNlQmFja2VuZE1hcC5zZXQodW5pcXVlSWRlbnRpZmllciwgZGF0YWJhc2VCYWNrZW5k
LmdldCgpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJy
b3IsICJJbnRlcm5hbCBlcnJvci4iKSk7CisgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJy
b3IsICJJbnRlcm5hbCBlcnJvciBjcmVhdGluZyBkYXRhYmFzZSBiYWNrZW5kIGZvciBpbmRleGVk
ZGIub3Blbi4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9IGVsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKaW5kZXggODJlYmQ0NjZiNzRhZjg1NWU1N2ZlZWIz
MzY5MzgxNjBlNmE1MDk1Yi4uMGMyOGIxNTNjODgxYmZjNTdkM2Y1NjJmM2IxOTdlNTkxYzk3ZjQ4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmVCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbC5jcHAKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lk
IElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OnNldEluZGV4S2V5cyhQYXNzUmVmUHRyPElEQktl
eT4gcHJwUHJpbWFyeUtleSwgYwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICghZm91
bmQpIHsKLSAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIFN0cmlu
Zzo6Zm9ybWF0KCJJbnRlcm5hbCBlcnJvciBzZXR0aW5nIGluZGV4IGtleXMgZm9yIG9iamVjdCBz
dG9yZSAlcy4iLCBuYW1lKCkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBSZWZQdHI8SURCRGF0
YWJhc2VFcnJvcj4gZXJyb3IgPSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VF
eGNlcHRpb246OlVua25vd25FcnJvciwgU3RyaW5nOjpmb3JtYXQoIkludGVybmFsIGVycm9yIHNl
dHRpbmcgaW5kZXgga2V5cyBmb3Igb2JqZWN0IHN0b3JlICclcycuIiwgbmFtZSgpLnV0ZjgoKS5k
YXRhKCkpKTsKICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KGVycm9yLnJlbGVhc2UoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC00ODEsOCArNDgxLDcgQEAgdm9pZCBJREJPYmplY3RT
dG9yZUJhY2tlbmRJbXBsOjpzZXRJbmRleEtleXMoUGFzc1JlZlB0cjxJREJLZXk+IHBycFByaW1h
cnlLZXksIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoIW9iZXlzQ29uc3RyYWlu
dHMpIHsKLSAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gZGVhbCB3aXRoIGVycm9yTWVzc2FnZSBo
ZXJlLiBtYWtlSW5kZXhXcml0ZXJzIG9ubHkgZmFpbHMgb24gdW5pcXVlbmVzcyBjb25zdHJhaW50
IGVycm9ycy4KLSAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KElEQkRhdGFiYXNlRXJyb3I6OmNy
ZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yLCAiRHVwbGljYXRlIGlu
ZGV4IGtleXMgZXhpc3QgaW4gdGhlIG9iamVjdCBzdG9yZS4iKSk7CisgICAgICAgIHRyYW5zYWN0
aW9uLT5hYm9ydChJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OkNvbnN0cmFpbnRFcnJvciwgZXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTYzMiw3ICs2MzEsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6Ok9i
amVjdFN0b3JlQ2xlYXJPcGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3RpbwogCiBQYXNzUmVm
UHRyPElEQkluZGV4QmFja2VuZEludGVyZmFjZT4gSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDo6
Y3JlYXRlSW5kZXgoaW50NjRfdCBpZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQ
YXRoJiBrZXlQYXRoLCBib29sIHVuaXF1ZSwgYm9vbCBtdWx0aUVudHJ5LCBJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uUHRyLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2luZGV4ZXMuY29udGFpbnMoaWQpLCAiSW5kZXhl
cyBhbHJlYWR5IGNvbnRhaW4gJXMiLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIW1faW5kZXhlcy5jb250YWlucyhpZCksICJJbmRleGVzIGFscmVhZHkgY29u
dGFpbiAnJXMnIiwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIAogICAgIFJlZlB0cjxJREJJbmRleEJh
Y2tlbmRJbXBsPiBpbmRleCA9IElEQkluZGV4QmFja2VuZEltcGw6OmNyZWF0ZShtX2RhdGFiYXNl
LCB0aGlzLCBJREJJbmRleE1ldGFkYXRhKG5hbWUsIGlkLCBrZXlQYXRoLCB1bmlxdWUsIG11bHRp
RW50cnkpKTsKICAgICBBU1NFUlQoaW5kZXgtPm5hbWUoKSA9PSBuYW1lKTsKQEAgLTY1NSw3ICs2
NTQsNyBAQCB2b2lkIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw6OkNyZWF0ZUluZGV4T3BlcmF0
aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmFjawogewogICAgIElEQl9UUkFDRSgiQ3JlYXRl
SW5kZXhPcGVyYXRpb24iKTsKICAgICBpZiAoIW1fb2JqZWN0U3RvcmUtPmJhY2tpbmdTdG9yZSgp
LT5jcmVhdGVJbmRleCh0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgbV9v
YmplY3RTdG9yZS0+ZGF0YWJhc2VJZCgpLCBtX29iamVjdFN0b3JlLT5pZCgpLCBtX2luZGV4LT5p
ZCgpLCBtX2luZGV4LT5uYW1lKCksIG1faW5kZXgtPmtleVBhdGgoKSwgbV9pbmRleC0+dW5pcXVl
KCksIG1faW5kZXgtPm11bHRpRW50cnkoKSkpIHsKLSAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0
KCk7CisgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydChJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUo
SURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgU3RyaW5nOjpmb3JtYXQoIkludGVy
bmFsIGVycm9yIHdoZW4gdHJ5aW5nIHRvIGNyZWF0ZSBpbmRleCAnJXMnLiIsIG1faW5kZXgtPm5h
bWUoKS51dGY4KCkuZGF0YSgpKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbXBsLmNwcAppbmRleCAyYmFkNTkwNmQ0YWRmZDA1OTlhOTQxOTRiNmI3NGRm
YjQ0MDNkMzYzLi43ODJmNDY1ODI4YzgyN2YyZmU2YzhiNmUzNjdlMTc1ZTdhYmYwOTQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIGJvb2wgSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW1wbDo6c2NoZWR1bGVUYXNrKFRhc2tUeXBlIHR5cGUsIFBhc3NPd25Q
dHI8T3BlcmF0aW9uCiAKIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbDo6YWJvcnQoKQog
ewotICAgIGFib3J0KElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlv
bjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgIGFib3J0KElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50
ZXJuYWwgZXJyb3IgKHVua25vd24gY2F1c2UpIikpOwogfQogCiB2b2lkIElEQlRyYW5zYWN0aW9u
QmFja2VuZEltcGw6OmFib3J0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IpCkBA
IC0yMzUsNyArMjM1LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpjb21taXQo
KQogICAgICAgICBtX2NhbGxiYWNrcy0+b25Db21wbGV0ZSgpOwogICAgICAgICBtX2RhdGFiYXNl
LT50cmFuc2FjdGlvbkZpbmlzaGVkQW5kQ29tcGxldGVGaXJlZCh0aGlzKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBtX2NhbGxiYWNrcy0+b25BYm9ydChJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUo
SURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yLiIpKTsK
KyAgICAgICAgbV9jYWxsYmFja3MtPm9uQWJvcnQoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJJbnRlcm5hbCBlcnJvciBjb21taXR0
aW5nIHRyYW5zYWN0aW9uLiIpKTsKICAgICAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25GaW5p
c2hlZEFuZEFib3J0RmlyZWQodGhpcyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGY0ZDc4MDNlN2I0MGJh
OTJkYWZlMjRhN2Q4MzQ5NGY2MGExOTAwMC4uZDQxNTI2NmU2MzM1YjdlZTFkMDI2ZTI2ZDRhNTM0
MDUzZDIzYWJmNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTEyLTEyICBEYXZpZCBHcm9n
YW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IEltcHJvdmUg
ZXJyb3IgbWVzc2FnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNDYyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZWQgZXJyb3IgbWVzc2FnZSBhbmQgZXN0YWJsaXNoIHRoYXQgbm9uLWFzY2lp
IGNoYXJhY3RlcnMgaW4gaW5kZXgKKyAgICAgICAgbmFtZXMgZG9uJ3QgbWFrZSBpdCBiYWNrIHRv
IHRoZSBicm93c2VyIHByb3Blcmx5LgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL3NoYXJlZC5qczoKKyAgICAgICAgKHVuZXhwZWN0ZWRBYm9ydENhbGxiYWNrKToKKyAg
ICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tZXJyb3IuanM6
CisgICAgICAgICh0ZXN0RXJyb3JGcm9tQ29tbWl0LnRyYW5zLm9uY29tcGxldGUucmVxdWVzdC5v
bnVwZ3JhZGVuZWVkZWQudHJhbnMub25hYm9ydCk6CisgICAgICAgICh0ZXN0RXJyb3JGcm9tQ29t
bWl0LnRyYW5zLm9uY29tcGxldGUucmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQpOgorICAgICAgICAo
dGVzdEVycm9yRnJvbUNvbW1pdC50cmFucy5vbmNvbXBsZXRlKToKKyAgICAgICAgKHRlc3RFcnJv
ckZyb21Db21taXQpOgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWVy
cm9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1lcnJvci5odG1sOgorCiAyMDEyLTEyLTEyICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFp
eEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIEluY2x1ZGUgcGFkZGlu
Z3MgYW5kIGJvcmRlcnMgaW50byB0aGUgZ3JpZCBlbGVtZW50J3MgbG9naWNhbCBoZWlnaHQgLyB3
aWR0aApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L3NoYXJlZC5qcyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFy
ZWQuanMKaW5kZXggNTUxYzAyYTgwOTIyNTU5N2Y0MGY1N2VlZDVhMDdkYmE5ZGNkMmMxMC4uY2I5
OTQzODRmYWNiMjc2ODc3NDBkNmIxY2JlODkxNGU4MTc1MGFiOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcworKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzCkBAIC01Myw3ICs1Myw3
IEBAIGZ1bmN0aW9uIHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrKGV2ZW50KQogCiBmdW5jdGlvbiB1
bmV4cGVjdGVkQWJvcnRDYWxsYmFjayhlKQogewotICAgIHRlc3RGYWlsZWQoIkFib3J0IGZ1bmN0
aW9uIGNhbGxlZCB1bmV4cGVjdGVkbHkhIik7CisgICAgdGVzdEZhaWxlZCgiQWJvcnQgZnVuY3Rp
b24gY2FsbGVkIHVuZXhwZWN0ZWRseSEgTWVzc2FnZTogWyIgKyBlLnRhcmdldC53ZWJraXRFcnJv
ck1lc3NhZ2UgKyAiXSIpOwogICAgIGZpbmlzaEpTVGVzdCgpOwogfQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24tZXJyb3Iu
anMgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvdHJhbnNhY3Rpb24t
ZXJyb3IuanMKaW5kZXggMDRlM2JiMjg3NDlhMWEzZDUzNzEwOTdjN2RlZTdlMWQ1YjAyZjRlNy4u
Njc2MGRlZWVjZWFjYjE5ZjNkODAyMzQwNjZjZDA1OWNmODU3YmU0NCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3RyYW5zYWN0aW9uLWVycm9yLmpz
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy90cmFuc2FjdGlv
bi1lcnJvci5qcwpAQCAtMTA1LDcgKzEwNSw4IEBAIGZ1bmN0aW9uIHRlc3RFcnJvckZyb21Db21t
aXQoKQogICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgZXZhbEFuZExvZygidHJhbnMgPSByZXF1ZXN0LnRyYW5zYWN0aW9uIik7CiAgICAg
ICAgICAgICBkZWJ1ZygiVGhpcyBzaG91bGQgZmFpbCBkdWUgdG8gdGhlIHVuaXF1ZSBjb25zdHJh
aW50OiIpOwotICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScpLmNyZWF0ZUluZGV4KCdpbmRleE5hbWUnLCAnaWQnLCB7dW5pcXVlOiB0cnVlfSkiKTsK
KyAgICAgICAgICAgIGV2YWxBbmRMb2coImluZGV4TmFtZSA9ICdBbHNvIHRlc3QgdXRmODogXHU2
RjIyJyIpOworICAgICAgICAgICAgZXZhbEFuZExvZygidHJhbnMub2JqZWN0U3RvcmUoJ3N0b3Jl
TmFtZScpLmNyZWF0ZUluZGV4KGluZGV4TmFtZSwgJ2lkJywge3VuaXF1ZTogdHJ1ZX0pIik7CiAg
ICAgICAgICAgICB0cmFucy5vbmNvbXBsZXRlID0gdW5leHBlY3RlZENvbXBsZXRlQ2FsbGJhY2s7
CiAgICAgICAgICAgICB0cmFucy5vbmFib3J0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAg
ICAgZGVidWcoIlRyYW5zYWN0aW9uIHJlY2VpdmVkIGFib3J0IGV2ZW50LiIpOwpAQCAtMTEzLDYg
KzExNCw4IEBAIGZ1bmN0aW9uIHRlc3RFcnJvckZyb21Db21taXQoKQogICAgICAgICAgICAgICAg
IHNob3VsZEJlKCJ0cmFucy5lcnJvci5uYW1lIiwgIidDb25zdHJhaW50RXJyb3InIik7CiAgICAg
ICAgICAgICAgICAgZGVidWcoInRyYW5zLndlYmtpdEVycm9yTWVzc2FnZSA9ICIgKyB0cmFucy53
ZWJraXRFcnJvck1lc3NhZ2UpOwogICAgICAgICAgICAgICAgIHNob3VsZEJlTm9uTnVsbCgidHJh
bnMud2Via2l0RXJyb3JNZXNzYWdlIik7CisgICAgICAgICAgICAgICAgZGVidWcoIk5vdGU6IFRo
aXMgZmFpbHMgYmVjYXVzZSBvZiBodHRwOi8vd2tiLnVnLzM3MzI3Iik7CisgICAgICAgICAgICAg
ICAgc2hvdWxkTm90QmUoInRyYW5zLndlYmtpdEVycm9yTWVzc2FnZS5pbmRleE9mKGluZGV4TmFt
ZSkiLCAiLTEiKTsKICAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CiAgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CiAgICAgICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tZXJyb3ItZXhwZWN0ZWQudHh0Cmlu
ZGV4IDFiNTQ5YjUyZDU5MjNlNDRlMTMzYmViZWQ3ZGYxNWZjODQ1MGFmZjcuLjZjYjRjNDQ3ZTQx
ODcxZWFiMmYxOWQ3MzY0MzAwZmJkNTY5YWY4YTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWVycm9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1lcnJvci1leHBlY3RlZC50eHQK
QEAgLTUwLDEyICs1MCwxNSBAQCByZXF1ZXN0ID0gdHJhbnMub2JqZWN0U3RvcmUoJ3N0b3JlTmFt
ZScpLmFkZCh7aWQ6IDF9LCAncmVjb3JkMicpCiByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJu
YW1lLCAyKQogdHJhbnMgPSByZXF1ZXN0LnRyYW5zYWN0aW9uCiBUaGlzIHNob3VsZCBmYWlsIGR1
ZSB0byB0aGUgdW5pcXVlIGNvbnN0cmFpbnQ6Ci10cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykuY3JlYXRlSW5kZXgoJ2luZGV4TmFtZScsICdpZCcsIHt1bmlxdWU6IHRydWV9KQoraW5kZXhO
YW1lID0gJ0Fsc28gdGVzdCB1dGY4OiDmvKInCit0cmFucy5vYmplY3RTdG9yZSgnc3RvcmVOYW1l
JykuY3JlYXRlSW5kZXgoaW5kZXhOYW1lLCAnaWQnLCB7dW5pcXVlOiB0cnVlfSkKIFRyYW5zYWN0
aW9uIHJlY2VpdmVkIGFib3J0IGV2ZW50LgogUEFTUyB0cmFucy5lcnJvciBpcyBub24tbnVsbC4K
IFBBU1MgdHJhbnMuZXJyb3IubmFtZSBpcyAnQ29uc3RyYWludEVycm9yJwotdHJhbnMud2Via2l0
RXJyb3JNZXNzYWdlID0gRHVwbGljYXRlIGluZGV4IGtleXMgZXhpc3QgaW4gdGhlIG9iamVjdCBz
dG9yZS4KK3RyYW5zLndlYmtpdEVycm9yTWVzc2FnZSA9IFVuYWJsZSB0byBhZGQga2V5IHRvIGlu
ZGV4ICdBbHNvIHRlc3QgdXRmODogw6bCvMKiJzogYXQgbGVhc3Qgb25lIGtleSBkb2VzIG5vdCBz
YXRpc2Z5IHRoZSB1bmlxdWVuZXNzIHJlcXVpcmVtZW50cy4KIFBBU1MgdHJhbnMud2Via2l0RXJy
b3JNZXNzYWdlIGlzIG5vbi1udWxsLgorTm90ZTogVGhpcyBmYWlscyBiZWNhdXNlIG9mIGh0dHA6
Ly93a2IudWcvMzczMjcKK0ZBSUwgdHJhbnMud2Via2l0RXJyb3JNZXNzYWdlLmluZGV4T2YoaW5k
ZXhOYW1lKSBzaG91bGQgbm90IGJlIC0xLgogCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1lcnJvci5odG1sCmluZGV4IDNjMGM3Y2UyMDg3YTkzYjE5ZTRkZWRkZGQ3YzdhZDQyODA0YzBk
YTYuLmMyYzVmODU1YWNhYTI4NmIwNTlhYTVkOGY1YWU5NGNjZWI4ZjA4MzAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWVycm9yLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tZXJyb3IuaHRtbApA
QCAtNCw3ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy90cmFuc2FjdGlvbi1l
cnJvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RyYW5zYWN0aW9uLWVy
cm9yLmpzIiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>