<?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>100786</bug_id>
          
          <creation_ts>2012-10-30 14:01:24 -0700</creation_ts>
          <short_desc>Expose snapshots in platform/leveldb wrapper API</short_desc>
          <delta_ts>2012-11-08 15:48:16 -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="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>754643</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-30 14:01:24 -0700</bug_when>
    <thetext>Expose snapshots in platform/leveldb wrapper API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754647</commentid>
    <comment_count>1</comment_count>
      <attachid>171516</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-30 14:08:34 -0700</bug_when>
    <thetext>Created attachment 171516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754648</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-30 14:09:46 -0700</bug_when>
    <thetext>dgrogan@, alecflett@ - please take a look

Not used yet, but this could be the basis of parallel transactions. (Mostly an excuse to play with the leveldb snapshot API.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754699</commentid>
    <comment_count>3</comment_count>
      <attachid>171516</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-30 15:12:38 -0700</bug_when>
    <thetext>Comment on attachment 171516
Patch

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

&gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:96
&gt; +class LevelDBSnapshotImpl : public LevelDBSnapshot {

My only thought here is that making this another separate heap-based object behind an interface seems unnecessary.. I don&apos;t know *exactly* what the ownership model is for LevelDB snapshots (I see DB::ReleaseSnapshot though) but does ownership of this thing change ever? (seems like no...its always bound to the transaction in question)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754727</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-30 15:31:57 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 171516 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171516&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:96
&gt; &gt; +class LevelDBSnapshotImpl : public LevelDBSnapshot {
&gt; 
&gt; My only thought here is that making this another separate heap-based object behind an interface seems unnecessary.. I don&apos;t know *exactly* what the ownership model is for LevelDB snapshots (I see DB::ReleaseSnapshot though) but does ownership of this thing change ever? (seems like no...its always bound to the transaction in question)

Since leveldb doesn&apos;t have transactions, in leveldb its separate; you either read from a specific snapshot or just the database.

The way we&apos;d use it in IndexedDB we&apos;d probably always have a IDBLevelDBBackingStoreTransaction own both a LevelDBSnapshot and a LevelDBTransaction. But I can imagine other clients of the WebCore::LevelDB* classes wanting to do things differently, so I stuck to the philosophy of making the WebCore::LevelDB* classes wrappers of leveldb (with value-adds). 

Making it &quot;just&quot; a property of the LevelDBTransaction (a flag passed in during construction) is doable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754735</commentid>
    <comment_count>5</comment_count>
      <attachid>171516</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-30 15:42:23 -0700</bug_when>
    <thetext>Comment on attachment 171516
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:96
&gt;&gt;&gt; +class LevelDBSnapshotImpl : public LevelDBSnapshot {
&gt;&gt; 
&gt;&gt; My only thought here is that making this another separate heap-based object behind an interface seems unnecessary.. I don&apos;t know *exactly* what the ownership model is for LevelDB snapshots (I see DB::ReleaseSnapshot though) but does ownership of this thing change ever? (seems like no...its always bound to the transaction in question)
&gt; 
&gt; Since leveldb doesn&apos;t have transactions, in leveldb its separate; you either read from a specific snapshot or just the database.
&gt; 
&gt; The way we&apos;d use it in IndexedDB we&apos;d probably always have a IDBLevelDBBackingStoreTransaction own both a LevelDBSnapshot and a LevelDBTransaction. But I can imagine other clients of the WebCore::LevelDB* classes wanting to do things differently, so I stuck to the philosophy of making the WebCore::LevelDB* classes wrappers of leveldb (with value-adds). 
&gt; 
&gt; Making it &quot;just&quot; a property of the LevelDBTransaction (a flag passed in during construction) is doable.

yeah - this is more or less what I meant - I think snapshots is a necessary primitive which lets you create consistent read transactions, at least in the sense that IDB thinks of them. They really aren&apos;t peers, one is a building block of the other.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755388</commentid>
    <comment_count>6</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-31 09:45:02 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; yeah - this is more or less what I meant - I think snapshots is a necessary primitive which lets you create consistent read transactions, at least in the sense that IDB thinks of them. They really aren&apos;t peers, one is a building block of the other.

Yeah, but should we expose that building block separately for non-IDB usage?

I&apos;m still on the fence. Bundling it into LevelDBTransaction would definitely be less code.

One could argue that maybe *all* LevelDBTransactions should work off of snapshots, matching the IDB semantics. We&apos;d want to perf test that, though - right now LevelDBTransactions are &quot;cheap&quot; and also have no lifetime requirements w/r/t other LevelDB objects.

...

Also, this patch is incomplete: it doesn&apos;t handle iterators - LevelDBTransaction::createIterator() should use the associated snapshot, and LevelDBDatabase::createIterator() should take an optional snapshot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755483</commentid>
    <comment_count>7</comment_count>
      <attachid>171693</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-31 11:27:20 -0700</bug_when>
    <thetext>Created attachment 171693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755485</commentid>
    <comment_count>8</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-10-31 11:28:21 -0700</bug_when>
    <thetext>Updated patch w/ support and tests for snapshots w/ iterators (creating iterators against a snapshot, and creating iterators against a transaction based on a snapshot)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756737</commentid>
    <comment_count>9</comment_count>
      <attachid>171955</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-01 17:07:20 -0700</bug_when>
    <thetext>Created attachment 171955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756740</commentid>
    <comment_count>10</comment_count>
      <attachid>171955</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-01 17:10:41 -0700</bug_when>
    <thetext>Comment on attachment 171955
Patch

Attachment 171955 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14696475</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756742</commentid>
    <comment_count>11</comment_count>
      <attachid>171955</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-01 17:12:16 -0700</bug_when>
    <thetext>Comment on attachment 171955
Patch

Attachment 171955 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14692640</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756745</commentid>
    <comment_count>12</comment_count>
      <attachid>171957</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-01 17:14:31 -0700</bug_when>
    <thetext>Created attachment 171957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757243</commentid>
    <comment_count>13</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-02 09:06:41 -0700</bug_when>
    <thetext>Based on conversations with alecflett@, just made LevelDBTransactions take and use snapshots implicitly. This matches the IndexedDB needs.

alecflett@ - please take a look</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757754</commentid>
    <comment_count>14</comment_count>
      <attachid>171957</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-02 16:50:00 -0700</bug_when>
    <thetext>Comment on attachment 171957
Patch

lgtm
(makes me wonder if you can now have &apos;const LevelDBSnapshot m_snapshot;&apos; - not a big deal though)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758820</commentid>
    <comment_count>15</comment_count>
      <attachid>172387</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-05 13:25:07 -0800</bug_when>
    <thetext>Created attachment 172387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758821</commentid>
    <comment_count>16</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-05 13:25:30 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (makes me wonder if you can now have &apos;const LevelDBSnapshot m_snapshot;&apos; - not a big deal though)

Yes, thanks. Added const qualifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758823</commentid>
    <comment_count>17</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-05 13:25:44 -0800</bug_when>
    <thetext>tony@ - r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760784</commentid>
    <comment_count>18</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-07 09:41:06 -0800</bug_when>
    <thetext>abarth@ - if you&apos;re bored (heh), could you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760839</commentid>
    <comment_count>19</comment_count>
      <attachid>172387</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-07 10:29:57 -0800</bug_when>
    <thetext>Comment on attachment 172387
Patch

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

&gt; Source/WebCore/platform/leveldb/LevelDBDatabase.h:56
&gt; +    LevelDBSnapshot(LevelDBDatabase*);

explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760843</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-07 10:31:44 -0800</bug_when>
    <thetext>Looks like Tony has been reviewing most of the changes to this code.  I think he gets back from vacation tomorrow.  If you&apos;re in a rush, I can rubber-stamp this change, but I&apos;m not super familiar with the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760844</commentid>
    <comment_count>21</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-07 10:32:29 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Looks like Tony has been reviewing most of the changes to this code.  I think he gets back from vacation tomorrow.  If you&apos;re in a rush, I can rubber-stamp this change, but I&apos;m not super familiar with the code.

No rush on this one, thanks for looking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760851</commentid>
    <comment_count>22</comment_count>
      <attachid>172833</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-07 10:35:25 -0800</bug_when>
    <thetext>Created attachment 172833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762096</commentid>
    <comment_count>23</comment_count>
      <attachid>172833</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-11-08 13:08:03 -0800</bug_when>
    <thetext>Comment on attachment 172833
Patch

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

&gt; Source/WebCore/platform/leveldb/LevelDBDatabase.h:46
&gt; +class LevelDBDatabase;
&gt;  class LevelDBComparator;

Nit: sort</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762124</commentid>
    <comment_count>24</comment_count>
      <attachid>173107</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-08 13:33:10 -0800</bug_when>
    <thetext>Created attachment 173107
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762138</commentid>
    <comment_count>25</comment_count>
      <attachid>173107</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 13:41:28 -0800</bug_when>
    <thetext>Comment on attachment 173107
Patch for landing

Rejecting attachment 173107 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
Core/platform/leveldb/LevelDBTransaction.h
patching file Source/WebKit/chromium/tests/LevelDBTest.cpp
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 94 (offset 57 lines).
patching file LayoutTests/platform/chromium/TestExpectations
Hunk #1 FAILED at 4190.
1 out of 1 hunk FAILED -- saving rejects to file LayoutTests/platform/chromium/TestExpectations.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/14758883</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762140</commentid>
    <comment_count>26</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-08 13:44:33 -0800</bug_when>
    <thetext>&gt; 1 out of 1 hunk FAILED -- saving rejects to file LayoutTests/platform/chromium/TestExpectations.rej

*sigh* Rebased onto a dirty tree and didn&apos;t notice it in the diff. Bleah.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762142</commentid>
    <comment_count>27</comment_count>
      <attachid>173110</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-08 13:45:38 -0800</bug_when>
    <thetext>Created attachment 173110
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762143</commentid>
    <comment_count>28</comment_count>
      <attachid>173110</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-08 13:46:20 -0800</bug_when>
    <thetext>Comment on attachment 173110
Patch for landing

Ugh, no, it wasn&apos;t in my local diff. One more time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762146</commentid>
    <comment_count>29</comment_count>
      <attachid>173112</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-11-08 13:50:06 -0800</bug_when>
    <thetext>Created attachment 173112
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762259</commentid>
    <comment_count>30</comment_count>
      <attachid>173112</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 15:48:12 -0800</bug_when>
    <thetext>Comment on attachment 173112
Patch for landing

Clearing flags on attachment: 173112

Committed r133963: &lt;http://trac.webkit.org/changeset/133963&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762260</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 15:48:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171516</attachid>
            <date>2012-10-30 14:08:34 -0700</date>
            <delta_ts>2012-10-31 11:27:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100786-20121030140659.patch</filename>
            <type>text/plain</type>
            <size>14108</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWQ3YjU5OTU3MmFlMTQz
NDI5ZDgwYjZiMzkyOTExZjcxZDgzNGVmYy4uM2MzNzc5MjhlYTNjYmJlY2IzNGQ1YjYxMThiMDE2
YTlkODZkYmU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTEwLTMwICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXhwb3NlIHNuYXBzaG90
cyBpbiBwbGF0Zm9ybS9sZXZlbGRiIHdyYXBwZXIgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3ODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgbGV2ZWxkYiAic25hcHNob3RzIiBpbiB0
aGUgTGV2ZWxEQiBBUEkuIEEgc25hcHNob3QgbGV0cyB5b3Ugb2JzZXJ2ZSB0aGUgZGF0YWJhc2UK
KyAgICAgICAgYXMgaXQgd2FzIHdoZW4gdGhlIHNuYXBzaG90IHdhcyB0YWtlbi4gVGhpcyBjYW4g
YmUgdXNlZCB0byBpbXBsZW1lbnQgcGFyYWxsZWwgdHJhbnNhY3Rpb25zLAorICAgICAgICBlLmcu
IHdoZXJlIGEgcmVhZCB0cmFuc2FjdGlvbiB3b24ndCBzZWUgdXBkYXRlcyBtYWRlIGJ5IGEgbGF0
ZXIgd3JpdGUgdHJhbnNhY3Rpb24uCisKKyAgICAgICAgVGVzdHM6IHdlYmtpdF91bml0X3Rlc3Rz
IC0tZ3Rlc3RfZmlsdGVyPSdMZXZlbERCRGF0YWJhc2VUZXN0LlNuYXBzaG90VGVzdCcKKyAgICAg
ICAgICAgICAgIHdlYmtpdF91bml0X3Rlc3RzIC0tZ3Rlc3RfZmlsdGVyPSdMZXZlbERCRGF0YWJh
c2VUZXN0LlRyYW5zYWN0aW9uU25hcHNob3RUZXN0JworCisgICAgICAgICogcGxhdGZvcm0vbGV2
ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQlNuYXBz
aG90Ojp+TGV2ZWxEQlNuYXBzaG90KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTGV2
ZWxEQlNuYXBzaG90SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCU25hcHNob3RJbXBs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQlNuYXBzaG90SW1wbDo6fkxldmVs
REJTbmFwc2hvdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQlNuYXBzaG90SW1wbDo6
c25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQlNuYXBzaG90SW1wbDo6TGV2ZWxE
QlNuYXBzaG90SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCRGF0YWJhc2U6OmdldCk6
IFJlYWQgZnJvbSBzbmFwc2hvdCwgaWYgc3VwcGxpZWQuCisgICAgICAgIChXZWJDb3JlOjpMZXZl
bERCRGF0YWJhc2U6OmNyZWF0ZVNuYXBzaG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9sZXZlbGRi
L0xldmVsREJEYXRhYmFzZS5oOgorICAgICAgICAoTGV2ZWxEQlNuYXBzaG90KTogTmV3IHR5cGUs
IGhlbGQgb24gdG8gYnkgY2FsbGluZyBjb2RlLCBjYW4gYmUgdXNlZCBkaXJlY3RseSB3aXRoCisg
ICAgICAgIExldmVsREJEYXRhYmFzZTo6Z2V0KCkgb3IgcGFzc2VkIHRvIExldmVsREJUcmFuc2Fj
dGlvbiBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTGV2ZWxEQkRh
dGFiYXNlKTogQWRkIG5ldyBjcmVhdGVTbmFwc2hvdCgpIG1ldGhvZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
ZXZlbERCVHJhbnNhY3Rpb246OmNyZWF0ZSk6IE9wdGlvbmFsbHkgYmluZCB0cmFuc2FjdGlvbiB0
byBhIHNuYXBzaG90LgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQlRyYW5zYWN0aW9uOjpMZXZl
bERCVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQlRyYW5zYWN0aW9uOjpn
ZXQpOiBVc2Ugc25hcHNob3QsIGlmIHN1cHBsaWVkLgorICAgICAgICAqIHBsYXRmb3JtL2xldmVs
ZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKExl
dmVsREJUcmFuc2FjdGlvbik6CisKIDIwMTItMTAtMzAgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgY29kZSBmb3Igb2xkIGlucHV0W3R5
cGU9ZGF0ZV0gVUkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMWI1ZmYzYjBkMzZhYjc5
MmRkNTA2MDk1Y2QwOGNmZTY5NWNiZmFjZC4uYWRiYzVjOWE2NTI4NTE4NmRlMTRiZmIyNDRhMDM1
YTc2NzA3YmMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxMi0xMC0zMCAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IEV4cG9zZSBzbmFwc2hvdHMgaW4gcGxhdGZvcm0vbGV2ZWxkYiB3cmFwcGVyIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzg2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHVuaXQgdGVzdHMg
Zm9yIHRyYW5zYWN0aW9ucywgc25hcHNob3RzLCBhbmQgdHJhbnNhY3Rpb25zIHdpdGggc25hcHNo
b3RzLgorCisgICAgICAgICogdGVzdHMvTGV2ZWxEQlRlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZW5jb2RlU3RyaW5nKTogRG9uJ3QgYXBwZW5kIHRvIHByZS1zaXplZCB2ZWN0b3IuCisgICAg
ICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTEwLTMwICBL
ZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgdW51c2Vk
IGNvZGUgZm9yIG9sZCBpbnB1dFt0eXBlPWRhdGVdIFVJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAKaW5kZXggMjczYWZkNGRlYzFh
YWU3MGJkMWFhOTJiMDhlNjgwNGJiMjYzMDhjMi4uOTczMjkzZTZmNzg0ODkxNGUzMjlmMjQyZDc0
MGIwNGUxODAwZDYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxk
Yi9MZXZlbERCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVs
ZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcApAQCAtODksNiArODksMzUgQEAgcHJpdmF0ZToKICAgICBj
b25zdCBMZXZlbERCQ29tcGFyYXRvciogbV9jb21wYXJhdG9yOwogfTsKIAorTGV2ZWxEQlNuYXBz
aG90Ojp+TGV2ZWxEQlNuYXBzaG90KCkKK3sKK30KKworY2xhc3MgTGV2ZWxEQlNuYXBzaG90SW1w
bCA6IHB1YmxpYyBMZXZlbERCU25hcHNob3QgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3du
UHRyPExldmVsREJTbmFwc2hvdEltcGw+IGNyZWF0ZShsZXZlbGRiOjpEQiogZGIsIGNvbnN0IGxl
dmVsZGI6OlNuYXBzaG90KiBzbmFwc2hvdCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgTGV2ZWxEQlNuYXBzaG90SW1wbChkYiwgc25hcHNob3QpKTsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIH5MZXZlbERCU25hcHNob3RJbXBsKCkKKyAgICB7CisgICAgICAgIG1fZGItPlJlbGVh
c2VTbmFwc2hvdChtX3NuYXBzaG90KTsKKyAgICB9CisKKyAgICBjb25zdCBsZXZlbGRiOjpTbmFw
c2hvdCogc25hcHNob3QoKSBjb25zdCB7IHJldHVybiBtX3NuYXBzaG90OyB9CisKK3ByaXZhdGU6
CisgICAgTGV2ZWxEQlNuYXBzaG90SW1wbChsZXZlbGRiOjpEQiogZGIsIGNvbnN0IGxldmVsZGI6
OlNuYXBzaG90KiBzbmFwc2hvdCkKKyAgICAgICAgOiBtX2RiKGRiKQorICAgICAgICAsIG1fc25h
cHNob3Qoc25hcHNob3QpCisgICAgeworICAgIH0KKworICAgIGxldmVsZGI6OkRCKiBtX2RiOwor
ICAgIGNvbnN0IGxldmVsZGI6OlNuYXBzaG90KiBtX3NuYXBzaG90OworfTsKKwogTGV2ZWxEQkRh
dGFiYXNlOjpMZXZlbERCRGF0YWJhc2UoKQogewogfQpAQCAtMTg3LDExICsyMTYsMTIgQEAgYm9v
bCBMZXZlbERCRGF0YWJhc2U6OnJlbW92ZShjb25zdCBMZXZlbERCU2xpY2UmIGtleSkKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgTGV2ZWxEQkRhdGFiYXNlOjpnZXQoY29uc3QgTGV2ZWxE
QlNsaWNlJiBrZXksIFZlY3RvcjxjaGFyPiYgdmFsdWUpCitib29sIExldmVsREJEYXRhYmFzZTo6
Z2V0KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBWZWN0b3I8Y2hhcj4mIHZhbHVlLCBjb25zdCBM
ZXZlbERCU25hcHNob3QqIHNuYXBzaG90KQogewogICAgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKICAg
ICBsZXZlbGRiOjpSZWFkT3B0aW9ucyByZWFkT3B0aW9uczsKICAgICByZWFkT3B0aW9ucy52ZXJp
ZnlfY2hlY2tzdW1zID0gdHJ1ZTsgLy8gRklYTUU6IERpc2FibGUgdGhpcyBpZiB0aGUgcGVyZm9y
bWFuY2UgaW1wYWN0IGlzIHRvbyBncmVhdC4KKyAgICByZWFkT3B0aW9ucy5zbmFwc2hvdCA9IHNu
YXBzaG90ID8gc3RhdGljX2Nhc3Q8Y29uc3QgTGV2ZWxEQlNuYXBzaG90SW1wbCo+KHNuYXBzaG90
KS0+c25hcHNob3QoKSA6IDA7CiAKICAgICBjb25zdCBsZXZlbGRiOjpTdGF0dXMgcyA9IG1fZGIt
PkdldChyZWFkT3B0aW9ucywgbWFrZVNsaWNlKGtleSksICZyZXN1bHQpOwogICAgIGlmIChzLm9r
KCkpIHsKQEAgLTMwMyw2ICszMzMsMTEgQEAgUGFzc093blB0cjxMZXZlbERCSXRlcmF0b3I+IExl
dmVsREJEYXRhYmFzZTo6Y3JlYXRlSXRlcmF0b3IoKQogICAgIHJldHVybiBhZG9wdFB0cihuZXcg
SXRlcmF0b3JJbXBsKGkucmVsZWFzZSgpKSk7CiB9CiAKK1Bhc3NPd25QdHI8TGV2ZWxEQlNuYXBz
aG90PiBMZXZlbERCRGF0YWJhc2U6OmNyZWF0ZVNuYXBzaG90KCkKK3sKKyAgICByZXR1cm4gTGV2
ZWxEQlNuYXBzaG90SW1wbDo6Y3JlYXRlKG1fZGIuZ2V0KCksIG1fZGItPkdldFNuYXBzaG90KCkp
OworfQorCiBjb25zdCBMZXZlbERCQ29tcGFyYXRvciogTGV2ZWxEQkRhdGFiYXNlOjpjb21wYXJh
dG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb21wYXJhdG9yOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmgKaW5kZXggZTgwYjQ5YTI0
YWM3N2QyZmMwM2YxMGFlM2IwZGI3MGYzNmEyNjc2OS4uNjQ0ZGI4OGYwYzcwMmZjZjI2N2Y3MTI0
ZGEwNWVkYjVlMTBmNjMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2
ZWxkYi9MZXZlbERCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZl
bGRiL0xldmVsREJEYXRhYmFzZS5oCkBAIC00Niw2ICs0NiwxMSBAQCBjbGFzcyBMZXZlbERCSXRl
cmF0b3I7CiBjbGFzcyBMZXZlbERCU2xpY2U7CiBjbGFzcyBMZXZlbERCV3JpdGVCYXRjaDsKIAor
Y2xhc3MgTGV2ZWxEQlNuYXBzaG90IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5MZXZlbERCU25h
cHNob3QoKTsKK307CisKIGNsYXNzIExldmVsREJEYXRhYmFzZSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBvcGVuKGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUsIGNvbnN0IExldmVsREJDb21wYXJhdG9yKik7CkBAIC01NSw5ICs2MCwxMCBAQCBwdWJsaWM6
CiAKICAgICBib29sIHB1dChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgY29uc3QgVmVjdG9yPGNo
YXI+JiB2YWx1ZSk7CiAgICAgYm9vbCByZW1vdmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXkpOwot
ICAgIGJvb2wgZ2V0KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBWZWN0b3I8Y2hhcj4mIHZhbHVl
KTsKKyAgICBib29sIGdldChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgVmVjdG9yPGNoYXI+JiB2
YWx1ZSwgY29uc3QgTGV2ZWxEQlNuYXBzaG90KiA9IDApOwogICAgIGJvb2wgd3JpdGUoTGV2ZWxE
QldyaXRlQmF0Y2gmKTsKICAgICBQYXNzT3duUHRyPExldmVsREJJdGVyYXRvcj4gY3JlYXRlSXRl
cmF0b3IoKTsKKyAgICBQYXNzT3duUHRyPExldmVsREJTbmFwc2hvdD4gY3JlYXRlU25hcHNob3Qo
KTsKICAgICBjb25zdCBMZXZlbERCQ29tcGFyYXRvciogY29tcGFyYXRvcigpIGNvbnN0OwogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZl
bERCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZl
bERCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDhmZTNmZDA4ZWRiMjc5YmNlMzg0NTBkNWM3YjliYmEw
MTc0NzU5NTMuLjUxZjZkYzE3ODE2MThjYzY0NGY3NTkzNDc1MzZjYmI0YWI5MTdjMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2Fj
dGlvbi5jcHAKQEAgLTM1LDEzICszNSwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBh
c3NSZWZQdHI8TGV2ZWxEQlRyYW5zYWN0aW9uPiBMZXZlbERCVHJhbnNhY3Rpb246OmNyZWF0ZShM
ZXZlbERCRGF0YWJhc2UqIGRiKQorUGFzc1JlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+IExldmVs
REJUcmFuc2FjdGlvbjo6Y3JlYXRlKExldmVsREJEYXRhYmFzZSogZGIsIExldmVsREJTbmFwc2hv
dCogc25hcHNob3QpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMZXZlbERCVHJhbnNhY3Rp
b24oZGIpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IExldmVsREJUcmFuc2FjdGlvbihkYiwg
c25hcHNob3QpKTsKIH0KIAotTGV2ZWxEQlRyYW5zYWN0aW9uOjpMZXZlbERCVHJhbnNhY3Rpb24o
TGV2ZWxEQkRhdGFiYXNlKiBkYikKK0xldmVsREJUcmFuc2FjdGlvbjo6TGV2ZWxEQlRyYW5zYWN0
aW9uKExldmVsREJEYXRhYmFzZSogZGIsIExldmVsREJTbmFwc2hvdCogc25hcHNob3QpCiAgICAg
OiBtX2RiKGRiKQorICAgICwgbV9zbmFwc2hvdChzbmFwc2hvdCkKICAgICAsIG1fY29tcGFyYXRv
cihkYi0+Y29tcGFyYXRvcigpKQogICAgICwgbV9maW5pc2hlZChmYWxzZSkKIHsKQEAgLTExOSw3
ICsxMjAsNyBAQCBib29sIExldmVsREJUcmFuc2FjdGlvbjo6Z2V0KGNvbnN0IExldmVsREJTbGlj
ZSYga2V5LCBWZWN0b3I8Y2hhcj4mIHZhbHVlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKLSAgICByZXR1cm4gbV9kYi0+Z2V0KGtleSwgdmFsdWUpOworICAgIHJldHVybiBtX2RiLT5n
ZXQoa2V5LCB2YWx1ZSwgbV9zbmFwc2hvdCk7CiB9CiAKIGJvb2wgTGV2ZWxEQlRyYW5zYWN0aW9u
Ojpjb21taXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9M
ZXZlbERCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2
ZWxEQlRyYW5zYWN0aW9uLmgKaW5kZXggODBhMzM1ZDQ3YTAxMGFmNGQzODJhNWYxNWExOTQ1OTE3
Mzc0NGY1Zi4uZTZhNTNmZjkxYmRiYzg0YjI4MmFjZWM3NTM5MDNjNDZmYmFmOTgxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlv
bi5oCkBAIC00MywxMyArNDMsMTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGV2
ZWxEQkRhdGFiYXNlOworY2xhc3MgTGV2ZWxEQlNuYXBzaG90OwogY2xhc3MgTGV2ZWxEQldyaXRl
QmF0Y2g7CiAKIHVzaW5nIFdURjo6QVZMVHJlZTsKIAogY2xhc3MgTGV2ZWxEQlRyYW5zYWN0aW9u
IDogcHVibGljIFJlZkNvdW50ZWQ8TGV2ZWxEQlRyYW5zYWN0aW9uPiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8TGV2ZWxEQlRyYW5zYWN0aW9uPiBjcmVhdGUoTGV2ZWxEQkRhdGFi
YXNlKik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TGV2ZWxEQlRyYW5zYWN0aW9uPiBjcmVhdGUo
TGV2ZWxEQkRhdGFiYXNlKiwgTGV2ZWxEQlNuYXBzaG90KiA9IDApOwogCiAgICAgfkxldmVsREJU
cmFuc2FjdGlvbigpOwogICAgIGJvb2wgcHV0KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBjb25z
dCBWZWN0b3I8Y2hhcj4mIHZhbHVlKTsKQEAgLTYxLDcgKzYyLDcgQEAgcHVibGljOgogICAgIFBh
c3NPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBjcmVhdGVJdGVyYXRvcigpOwogCiBwcml2YXRlOgot
ICAgIExldmVsREJUcmFuc2FjdGlvbihMZXZlbERCRGF0YWJhc2UqKTsKKyAgICBMZXZlbERCVHJh
bnNhY3Rpb24oTGV2ZWxEQkRhdGFiYXNlKiwgTGV2ZWxEQlNuYXBzaG90Kik7CiAKICAgICBzdHJ1
Y3QgQVZMVHJlZU5vZGUgewogICAgICAgICBWZWN0b3I8Y2hhcj4ga2V5OwpAQCAtMTY0LDYgKzE2
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlJdGVyYXRvcnNPZlRyZWVDaGFuZ2UoKTsK
IAogICAgIExldmVsREJEYXRhYmFzZSogbV9kYjsKKyAgICBMZXZlbERCU25hcHNob3QqIG1fc25h
cHNob3Q7CiAgICAgY29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqIG1fY29tcGFyYXRvcjsKICAgICBU
cmVlVHlwZSBtX3RyZWU7CiAgICAgYm9vbCBtX2ZpbmlzaGVkOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MZXZlbERCVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0xldmVsREJUZXN0LmNwcAppbmRleCAyYTAwYWU2ODYxYzAwZTkwNWU0M2Y4
NTA0YTUwNTEyYzUzMWFlYmFkLi42MWE3ZDE4N2U2NDNjZjlkZTQ3MWI2ZWQ3OWYwMTAwMGFmOGI1
NzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xldmVsREJUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xldmVsREJUZXN0LmNwcApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkxldmVsREJDb21wYXJhdG9yLmgiCiAjaW5jbHVk
ZSAiTGV2ZWxEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQlNsaWNlLmgiCisjaW5jbHVk
ZSAiTGV2ZWxEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNs
dWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KQEAgLTUzLDcgKzU0LDcgQEAgVmVjdG9yPGNoYXI+IGVuY29kZVN0cmluZyhjb25zdCBz
dGQ6OnN0cmluZyYgcykKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0KHMuc2l6ZSgpKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHJldC5hcHBlbmQo
c1tpXSk7CisgICAgICAgIHJldFtpXSA9IHNbaV07CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAt
MTAwLDYgKzEwMSwxMjcgQEAgVEVTVChMZXZlbERCRGF0YWJhc2VUZXN0LCBDb3JydXB0aW9uVGVz
dCkKICAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7CiB9CiAKK1RFU1QoTGV2ZWxEQkRhdGFiYXNl
VGVzdCwgU25hcHNob3RUZXN0KQoreworICAgIE93blB0cjx3ZWJraXRfc3VwcG9ydDo6U2NvcGVk
VGVtcERpcmVjdG9yeT4gdGVtcERpcmVjdG9yeSA9IGFkb3B0UHRyKHdlYmtpdF9zdXBwb3J0OjpD
cmVhdGVTY29wZWRUZW1wRGlyZWN0b3J5KCkpOworICAgIHRlbXBEaXJlY3RvcnktPkNyZWF0ZVVu
aXF1ZVRlbXBEaXIoKTsKKyAgICBjb25zdCBTdHJpbmcgcGF0aCA9IFN0cmluZzo6ZnJvbVVURjgo
dGVtcERpcmVjdG9yeS0+cGF0aCgpLmNfc3RyKCkpOworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+
IGtleSA9IGVuY29kZVN0cmluZygia2V5Iik7CisgICAgVmVjdG9yPGNoYXI+IGdvdFZhbHVlOwor
ICAgIFNpbXBsZUNvbXBhcmF0b3IgY29tcGFyYXRvcjsKKworICAgIE93blB0cjxMZXZlbERCRGF0
YWJhc2U+IGxldmVsZGIgPSBMZXZlbERCRGF0YWJhc2U6Om9wZW4ocGF0aCwgJmNvbXBhcmF0b3Ip
OworICAgIEVYUEVDVF9UUlVFKGxldmVsZGIpOworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+IG9s
ZFZhbHVlID0gZW5jb2RlU3RyaW5nKCJ2YWx1ZSIpOworICAgIGJvb2wgc3VjY2VzcyA9IGxldmVs
ZGItPnB1dChrZXksIG9sZFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKworICAg
IE93blB0cjxMZXZlbERCU25hcHNob3Q+IHNuYXBzaG90ID0gbGV2ZWxkYi0+Y3JlYXRlU25hcHNo
b3QoKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBuZXdWYWx1ZSA9IGVuY29kZVN0cmluZygi
bmV3IHZhbHVlIik7CisgICAgc3VjY2VzcyA9IGxldmVsZGItPnB1dChrZXksIG5ld1ZhbHVlKTsK
KyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKworICAgIHN1Y2Nlc3MgPSBsZXZlbGRiLT5nZXQo
a2V5LCBnb3RWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VR
KGNvbXBhcmF0b3IuY29tcGFyZShnb3RWYWx1ZSwgbmV3VmFsdWUpLCAwKTsKKworICAgIHN1Y2Nl
c3MgPSBsZXZlbGRiLT5nZXQoa2V5LCBnb3RWYWx1ZSwgc25hcHNob3QuZ2V0KCkpOworICAgIEVY
UEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUoZ290
VmFsdWUsIG9sZFZhbHVlKSwgMCk7Cit9CisKK1RFU1QoTGV2ZWxEQkRhdGFiYXNlVGVzdCwgVHJh
bnNhY3Rpb25TbmFwc2hvdFRlc3QpCit7CisgICAgT3duUHRyPHdlYmtpdF9zdXBwb3J0OjpTY29w
ZWRUZW1wRGlyZWN0b3J5PiB0ZW1wRGlyZWN0b3J5ID0gYWRvcHRQdHIod2Via2l0X3N1cHBvcnQ6
OkNyZWF0ZVNjb3BlZFRlbXBEaXJlY3RvcnkoKSk7CisgICAgdGVtcERpcmVjdG9yeS0+Q3JlYXRl
VW5pcXVlVGVtcERpcigpOworICAgIGNvbnN0IFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRG
OCh0ZW1wRGlyZWN0b3J5LT5wYXRoKCkuY19zdHIoKSk7CisKKyAgICBjb25zdCBWZWN0b3I8Y2hh
cj4ga2V5ID0gZW5jb2RlU3RyaW5nKCJrZXkiKTsKKyAgICBWZWN0b3I8Y2hhcj4gZ290VmFsdWU7
CisgICAgU2ltcGxlQ29tcGFyYXRvciBjb21wYXJhdG9yOworCisgICAgT3duUHRyPExldmVsREJE
YXRhYmFzZT4gbGV2ZWxkYiA9IExldmVsREJEYXRhYmFzZTo6b3BlbihwYXRoLCAmY29tcGFyYXRv
cik7CisgICAgRVhQRUNUX1RSVUUobGV2ZWxkYik7CisKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4g
b2xkVmFsdWUgPSBlbmNvZGVTdHJpbmcoInZhbHVlIik7CisgICAgYm9vbCBzdWNjZXNzID0gbGV2
ZWxkYi0+cHV0KGtleSwgb2xkVmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworCisg
ICAgT3duUHRyPExldmVsREJTbmFwc2hvdD4gc25hcHNob3QgPSBsZXZlbGRiLT5jcmVhdGVTbmFw
c2hvdCgpOworICAgIFJlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gTGV2
ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUobGV2ZWxkYi5nZXQoKSwgc25hcHNob3QuZ2V0KCkpOwor
CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IG5ld1ZhbHVlID0gZW5jb2RlU3RyaW5nKCJuZXcgdmFs
dWUiKTsKKyAgICBzdWNjZXNzID0gbGV2ZWxkYi0+cHV0KGtleSwgbmV3VmFsdWUpOworICAgIEVY
UEVDVF9UUlVFKHN1Y2Nlc3MpOworCisgICAgc3VjY2VzcyA9IHRyYW5zYWN0aW9uLT5nZXQoa2V5
LCBnb3RWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGNv
bXBhcmF0b3IuY29tcGFyZShnb3RWYWx1ZSwgb2xkVmFsdWUpLCAwKTsKKworICAgIHN1Y2Nlc3Mg
PSBsZXZlbGRiLT5nZXQoa2V5LCBnb3RWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7
CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShnb3RWYWx1ZSwgbmV3VmFsdWUpLCAw
KTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBhZGRlZEtleSA9IGVuY29kZVN0cmluZygiYWRk
ZWQga2V5Iik7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGFkZGVkVmFsdWUgPSBlbmNvZGVTdHJp
bmcoImFkZGVkIHZhbHVlIik7CisgICAgc3VjY2VzcyA9IGxldmVsZGItPnB1dChhZGRlZEtleSwg
YWRkZWRWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisKKyAgICBzdWNjZXNzID0g
bGV2ZWxkYi0+Z2V0KGFkZGVkS2V5LCBnb3RWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vz
cyk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShnb3RWYWx1ZSwgYWRkZWRWYWx1
ZSksIDApOworCisgICAgc3VjY2VzcyA9IHRyYW5zYWN0aW9uLT5nZXQoYWRkZWRLZXksIGdvdFZh
bHVlKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7Cit9CisKK1RFU1QoTGV2ZWxEQkRhdGFi
YXNlVGVzdCwgVHJhbnNhY3Rpb25UZXN0KQoreworICAgIE93blB0cjx3ZWJraXRfc3VwcG9ydDo6
U2NvcGVkVGVtcERpcmVjdG9yeT4gdGVtcERpcmVjdG9yeSA9IGFkb3B0UHRyKHdlYmtpdF9zdXBw
b3J0OjpDcmVhdGVTY29wZWRUZW1wRGlyZWN0b3J5KCkpOworICAgIHRlbXBEaXJlY3RvcnktPkNy
ZWF0ZVVuaXF1ZVRlbXBEaXIoKTsKKyAgICBjb25zdCBTdHJpbmcgcGF0aCA9IFN0cmluZzo6ZnJv
bVVURjgodGVtcERpcmVjdG9yeS0+cGF0aCgpLmNfc3RyKCkpOworCisgICAgY29uc3QgVmVjdG9y
PGNoYXI+IGtleSA9IGVuY29kZVN0cmluZygia2V5Iik7CisgICAgVmVjdG9yPGNoYXI+IGdvdFZh
bHVlOworICAgIFNpbXBsZUNvbXBhcmF0b3IgY29tcGFyYXRvcjsKKworICAgIE93blB0cjxMZXZl
bERCRGF0YWJhc2U+IGxldmVsZGIgPSBMZXZlbERCRGF0YWJhc2U6Om9wZW4ocGF0aCwgJmNvbXBh
cmF0b3IpOworICAgIEVYUEVDVF9UUlVFKGxldmVsZGIpOworCisgICAgY29uc3QgVmVjdG9yPGNo
YXI+IG9sZFZhbHVlID0gZW5jb2RlU3RyaW5nKCJ2YWx1ZSIpOworICAgIGJvb2wgc3VjY2VzcyA9
IGxldmVsZGItPnB1dChrZXksIG9sZFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsK
KworICAgIFJlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gTGV2ZWxEQlRy
YW5zYWN0aW9uOjpjcmVhdGUobGV2ZWxkYi5nZXQoKSk7CisKKyAgICBjb25zdCBWZWN0b3I8Y2hh
cj4gbmV3VmFsdWUgPSBlbmNvZGVTdHJpbmcoIm5ldyB2YWx1ZSIpOworICAgIHRyYW5zYWN0aW9u
LT5wdXQoa2V5LCBuZXdWYWx1ZSk7CisKKyAgICBzdWNjZXNzID0gdHJhbnNhY3Rpb24tPmdldChr
ZXksIGdvdFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEo
Y29tcGFyYXRvci5jb21wYXJlKGdvdFZhbHVlLCBuZXdWYWx1ZSksIDApOworCisgICAgc3VjY2Vz
cyA9IGxldmVsZGItPmdldChrZXksIGdvdFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNz
KTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKGdvdFZhbHVlLCBvbGRWYWx1ZSks
IDApOworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGFkZGVkS2V5ID0gZW5jb2RlU3RyaW5nKCJh
ZGRlZCBrZXkiKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gYWRkZWRWYWx1ZSA9IGVuY29kZVN0
cmluZygiYWRkZWQgdmFsdWUiKTsKKyAgICBzdWNjZXNzID0gbGV2ZWxkYi0+cHV0KGFkZGVkS2V5
LCBhZGRlZFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKworICAgIHN1Y2Nlc3Mg
PSBsZXZlbGRiLT5nZXQoYWRkZWRLZXksIGdvdFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNj
ZXNzKTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKGdvdFZhbHVlLCBhZGRlZFZh
bHVlKSwgMCk7CisKKyAgICBzdWNjZXNzID0gdHJhbnNhY3Rpb24tPmdldChhZGRlZEtleSwgZ290
VmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9FUShjb21wYXJh
dG9yLmNvbXBhcmUoZ290VmFsdWUsIGFkZGVkVmFsdWUpLCAwKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UKIAogI2VuZGlmIC8vIFVTRShMRVZFTERCKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171693</attachid>
            <date>2012-10-31 11:27:20 -0700</date>
            <delta_ts>2012-11-01 17:07:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100786-20121031112543.patch</filename>
            <type>text/plain</type>
            <size>18868</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY3YjM1MDU4MWZkNTIx
ZjE5Y2ZhNDY4N2FjOGE0MDczMjE0ZWRkOC4uYWVjODdhNjgwNmI1M2NiMWE5Zjg2ZTc0ZjU1ZWYy
ZTMwNzU1MzY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTEwLTMxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXhwb3NlIHNuYXBzaG90
cyBpbiBwbGF0Zm9ybS9sZXZlbGRiIHdyYXBwZXIgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3ODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgbGV2ZWxkYiAic25hcHNob3RzIiBpbiB0
aGUgTGV2ZWxEQiBBUEkuIEEgc25hcHNob3QgbGV0cyB5b3Ugb2JzZXJ2ZSB0aGUgZGF0YWJhc2UK
KyAgICAgICAgYXMgaXQgd2FzIHdoZW4gdGhlIHNuYXBzaG90IHdhcyB0YWtlbi4gVGhpcyBjYW4g
YmUgdXNlZCB0byBpbXBsZW1lbnQgcGFyYWxsZWwgdHJhbnNhY3Rpb25zLAorICAgICAgICBlLmcu
IHdoZXJlIGEgcmVhZCB0cmFuc2FjdGlvbiB3b24ndCBzZWUgdXBkYXRlcyBtYWRlIGJ5IGEgbGF0
ZXIgd3JpdGUgdHJhbnNhY3Rpb24uCisKKyAgICAgICAgVGVzdHM6IHdlYmtpdF91bml0X3Rlc3Rz
IC0tZ3Rlc3RfZmlsdGVyPSdMZXZlbERCRGF0YWJhc2VUZXN0LlNuYXBzaG90VGVzdCcKKyAgICAg
ICAgICAgICAgIHdlYmtpdF91bml0X3Rlc3RzIC0tZ3Rlc3RfZmlsdGVyPSdMZXZlbERCRGF0YWJh
c2VUZXN0LlRyYW5zYWN0aW9uU25hcHNob3RUZXN0JworCisgICAgICAgICogcGxhdGZvcm0vbGV2
ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQlNuYXBz
aG90Ojp+TGV2ZWxEQlNuYXBzaG90KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTGV2
ZWxEQlNuYXBzaG90SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCU25hcHNob3RJbXBs
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQlNuYXBzaG90SW1wbDo6fkxldmVs
REJTbmFwc2hvdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQlNuYXBzaG90SW1wbDo6
c25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQlNuYXBzaG90SW1wbDo6TGV2ZWxE
QlNuYXBzaG90SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCRGF0YWJhc2U6OmdldCk6
IFJlYWQgZnJvbSBzbmFwc2hvdCwgaWYgc3VwcGxpZWQuCisgICAgICAgIChXZWJDb3JlOjpMZXZl
bERCRGF0YWJhc2U6OmNyZWF0ZVNuYXBzaG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9sZXZlbGRi
L0xldmVsREJEYXRhYmFzZS5oOgorICAgICAgICAoTGV2ZWxEQlNuYXBzaG90KTogTmV3IHR5cGUs
IGhlbGQgb24gdG8gYnkgY2FsbGluZyBjb2RlLCBjYW4gYmUgdXNlZCBkaXJlY3RseSB3aXRoCisg
ICAgICAgIExldmVsREJEYXRhYmFzZTo6Z2V0KCkgb3IgcGFzc2VkIHRvIExldmVsREJUcmFuc2Fj
dGlvbiBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoTGV2ZWxEQkRh
dGFiYXNlKTogQWRkIG5ldyBjcmVhdGVTbmFwc2hvdCgpIG1ldGhvZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
ZXZlbERCVHJhbnNhY3Rpb246OmNyZWF0ZSk6IE9wdGlvbmFsbHkgYmluZCB0cmFuc2FjdGlvbiB0
byBhIHNuYXBzaG90LgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQlRyYW5zYWN0aW9uOjpMZXZl
bERCVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQlRyYW5zYWN0aW9uOjpn
ZXQpOiBVc2Ugc25hcHNob3QsIGlmIHN1cHBsaWVkLgorICAgICAgICAqIHBsYXRmb3JtL2xldmVs
ZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKExl
dmVsREJUcmFuc2FjdGlvbik6CisKIDIwMTItMTAtMzEgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAg
PGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgUmVzZXQgYmluZGluZyB0ZXN0IHJl
c3VsdCBhZnRlciByMTMyOTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDA4YjVkMGNm
M2M5YmU1ODhlMDc0OGNhOGY0ZGQ2OWFiYTYyMTAyNzEuLmQ5ODM4MTFhNmU1N2IyMzNmOTliNmNl
ZTA4MTU2NjgyOGNjN2ExZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTItMTAtMzEgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBFeHBvc2Ugc25hcHNob3RzIGluIHBsYXRmb3JtL2xldmVsZGIgd3JhcHBlciBBUEkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDc4Ngor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB1bml0
IHRlc3RzIGZvciB0cmFuc2FjdGlvbnMsIHNuYXBzaG90cywgYW5kIHRyYW5zYWN0aW9ucyB3aXRo
IHNuYXBzaG90cy4KKworICAgICAgICAqIHRlc3RzL0xldmVsREJUZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmVuY29kZVN0cmluZyk6IERvbid0IGFwcGVuZCB0byBwcmUtc2l6ZWQgdmVjdG9y
LgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0x
MC0zMSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3Zl
IGNvZGUgdG8gaGlkZS9yZXNob3cgdGV4dCBjYXJldCBmb3IgUGFnZVBvcHVwcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwCmluZGV4
IDI3M2FmZDRkZWMxYWFlNzBiZDFhYTkyYjA4ZTY4MDRiYjI2MzA4YzIuLmNjYWM4NzcwMzQxOGYz
YmUyYjcxN2NjN2Q2NWI4OGVjZTNiYTQ2ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAKQEAgLTg5LDYgKzg5LDM1IEBAIHBy
aXZhdGU6CiAgICAgY29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqIG1fY29tcGFyYXRvcjsKIH07CiAK
K0xldmVsREJTbmFwc2hvdDo6fkxldmVsREJTbmFwc2hvdCgpCit7Cit9CisKK2NsYXNzIFNuYXBz
aG90SW1wbCA6IHB1YmxpYyBMZXZlbERCU25hcHNob3QgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFNuYXBzaG90SW1wbD4gY3JlYXRlKGxldmVsZGI6OkRCKiBkYiwgY29uc3QgbGV2
ZWxkYjo6U25hcHNob3QqIHNuYXBzaG90KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBTbmFwc2hvdEltcGwoZGIsIHNuYXBzaG90KSk7CisgICAgfQorCisgICAgdmlydHVhbCB+
U25hcHNob3RJbXBsKCkKKyAgICB7CisgICAgICAgIG1fZGItPlJlbGVhc2VTbmFwc2hvdChtX3Nu
YXBzaG90KTsKKyAgICB9CisKKyAgICBjb25zdCBsZXZlbGRiOjpTbmFwc2hvdCogc25hcHNob3Qo
KSBjb25zdCB7IHJldHVybiBtX3NuYXBzaG90OyB9CisKK3ByaXZhdGU6CisgICAgU25hcHNob3RJ
bXBsKGxldmVsZGI6OkRCKiBkYiwgY29uc3QgbGV2ZWxkYjo6U25hcHNob3QqIHNuYXBzaG90KQor
ICAgICAgICA6IG1fZGIoZGIpCisgICAgICAgICwgbV9zbmFwc2hvdChzbmFwc2hvdCkKKyAgICB7
CisgICAgfQorCisgICAgbGV2ZWxkYjo6REIqIG1fZGI7CisgICAgY29uc3QgbGV2ZWxkYjo6U25h
cHNob3QqIG1fc25hcHNob3Q7Cit9OworCiBMZXZlbERCRGF0YWJhc2U6OkxldmVsREJEYXRhYmFz
ZSgpCiB7CiB9CkBAIC0xODcsMTEgKzIxNiwxMiBAQCBib29sIExldmVsREJEYXRhYmFzZTo6cmVt
b3ZlKGNvbnN0IExldmVsREJTbGljZSYga2V5KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9v
bCBMZXZlbERCRGF0YWJhc2U6OmdldChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgVmVjdG9yPGNo
YXI+JiB2YWx1ZSkKK2Jvb2wgTGV2ZWxEQkRhdGFiYXNlOjpnZXQoY29uc3QgTGV2ZWxEQlNsaWNl
JiBrZXksIFZlY3RvcjxjaGFyPiYgdmFsdWUsIGNvbnN0IExldmVsREJTbmFwc2hvdCogc25hcHNo
b3QpCiB7CiAgICAgc3RkOjpzdHJpbmcgcmVzdWx0OwogICAgIGxldmVsZGI6OlJlYWRPcHRpb25z
IHJlYWRPcHRpb25zOwogICAgIHJlYWRPcHRpb25zLnZlcmlmeV9jaGVja3N1bXMgPSB0cnVlOyAv
LyBGSVhNRTogRGlzYWJsZSB0aGlzIGlmIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3QgaXMgdG9vIGdy
ZWF0LgorICAgIHJlYWRPcHRpb25zLnNuYXBzaG90ID0gc25hcHNob3QgPyBzdGF0aWNfY2FzdDxj
b25zdCBTbmFwc2hvdEltcGwqPihzbmFwc2hvdCktPnNuYXBzaG90KCkgOiAwOwogCiAgICAgY29u
c3QgbGV2ZWxkYjo6U3RhdHVzIHMgPSBtX2RiLT5HZXQocmVhZE9wdGlvbnMsIG1ha2VTbGljZShr
ZXkpLCAmcmVzdWx0KTsKICAgICBpZiAocy5vaygpKSB7CkBAIC0yOTMsMTYgKzMyMywyMiBAQCBM
ZXZlbERCU2xpY2UgSXRlcmF0b3JJbXBsOjp2YWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1ha2VM
ZXZlbERCU2xpY2UobV9pdGVyYXRvci0+dmFsdWUoKSk7CiB9CiAKLVBhc3NPd25QdHI8TGV2ZWxE
Qkl0ZXJhdG9yPiBMZXZlbERCRGF0YWJhc2U6OmNyZWF0ZUl0ZXJhdG9yKCkKK1Bhc3NPd25QdHI8
TGV2ZWxEQkl0ZXJhdG9yPiBMZXZlbERCRGF0YWJhc2U6OmNyZWF0ZUl0ZXJhdG9yKGNvbnN0IExl
dmVsREJTbmFwc2hvdCogc25hcHNob3QpCiB7CiAgICAgbGV2ZWxkYjo6UmVhZE9wdGlvbnMgcmVh
ZE9wdGlvbnM7CiAgICAgcmVhZE9wdGlvbnMudmVyaWZ5X2NoZWNrc3VtcyA9IHRydWU7IC8vIEZJ
WE1FOiBEaXNhYmxlIHRoaXMgaWYgdGhlIHBlcmZvcm1hbmNlIGltcGFjdCBpcyB0b28gZ3JlYXQu
CisgICAgcmVhZE9wdGlvbnMuc25hcHNob3QgPSBzbmFwc2hvdCA/IHN0YXRpY19jYXN0PGNvbnN0
IFNuYXBzaG90SW1wbCo+KHNuYXBzaG90KS0+c25hcHNob3QoKSA6IDA7CiAgICAgT3duUHRyPGxl
dmVsZGI6Okl0ZXJhdG9yPiBpID0gYWRvcHRQdHIobV9kYi0+TmV3SXRlcmF0b3IocmVhZE9wdGlv
bnMpKTsKICAgICBpZiAoIWkpIC8vIEZJWE1FOiBEb3VibGUgY2hlY2sgaWYgd2UgYWN0dWFsbHkg
bmVlZCB0byBjaGVjayB0aGlzLgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IEl0ZXJhdG9ySW1wbChpLnJlbGVhc2UoKSkpOwogfQogCitQYXNzT3duUHRy
PExldmVsREJTbmFwc2hvdD4gTGV2ZWxEQkRhdGFiYXNlOjpjcmVhdGVTbmFwc2hvdCgpCit7Cisg
ICAgcmV0dXJuIFNuYXBzaG90SW1wbDo6Y3JlYXRlKG1fZGIuZ2V0KCksIG1fZGItPkdldFNuYXBz
aG90KCkpOworfQorCiBjb25zdCBMZXZlbERCQ29tcGFyYXRvciogTGV2ZWxEQkRhdGFiYXNlOjpj
b21wYXJhdG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9jb21wYXJhdG9yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmgKaW5kZXggZTgw
YjQ5YTI0YWM3N2QyZmMwM2YxMGFlM2IwZGI3MGYzNmEyNjc2OS4uMmY1YmZlZGVkZTFmYzQ2ZDc1
ODdlNjdlMDVhMjIzNTJjNGI4MjM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5oCkBAIC00Niw2ICs0NiwxMSBAQCBjbGFzcyBMZXZl
bERCSXRlcmF0b3I7CiBjbGFzcyBMZXZlbERCU2xpY2U7CiBjbGFzcyBMZXZlbERCV3JpdGVCYXRj
aDsKIAorY2xhc3MgTGV2ZWxEQlNuYXBzaG90IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5MZXZl
bERCU25hcHNob3QoKTsKK307CisKIGNsYXNzIExldmVsREJEYXRhYmFzZSB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBvcGVuKGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUsIGNvbnN0IExldmVsREJDb21wYXJhdG9yKik7CkBAIC01NSw5ICs2MCwxMCBAQCBw
dWJsaWM6CiAKICAgICBib29sIHB1dChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgY29uc3QgVmVj
dG9yPGNoYXI+JiB2YWx1ZSk7CiAgICAgYm9vbCByZW1vdmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBr
ZXkpOwotICAgIGJvb2wgZ2V0KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBWZWN0b3I8Y2hhcj4m
IHZhbHVlKTsKKyAgICBib29sIGdldChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgVmVjdG9yPGNo
YXI+JiB2YWx1ZSwgY29uc3QgTGV2ZWxEQlNuYXBzaG90KiA9IDApOwogICAgIGJvb2wgd3JpdGUo
TGV2ZWxEQldyaXRlQmF0Y2gmKTsKLSAgICBQYXNzT3duUHRyPExldmVsREJJdGVyYXRvcj4gY3Jl
YXRlSXRlcmF0b3IoKTsKKyAgICBQYXNzT3duUHRyPExldmVsREJJdGVyYXRvcj4gY3JlYXRlSXRl
cmF0b3IoY29uc3QgTGV2ZWxEQlNuYXBzaG90KiA9IDApOworICAgIFBhc3NPd25QdHI8TGV2ZWxE
QlNuYXBzaG90PiBjcmVhdGVTbmFwc2hvdCgpOwogICAgIGNvbnN0IExldmVsREJDb21wYXJhdG9y
KiBjb21wYXJhdG9yKCkgY29uc3Q7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggOGZlM2Zk
MDhlZGIyNzliY2UzODQ1MGQ1YzdiOWJiYTAxNzQ3NTk1My4uM2Y3ZGUwMTk2MTViODU2NmExMzNi
YzJlODJjZGI5ZDM4MmI1NDBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcApAQCAtMzUsMTMgKzM1LDE0IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+IExl
dmVsREJUcmFuc2FjdGlvbjo6Y3JlYXRlKExldmVsREJEYXRhYmFzZSogZGIpCitQYXNzUmVmUHRy
PExldmVsREJUcmFuc2FjdGlvbj4gTGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUoTGV2ZWxEQkRh
dGFiYXNlKiBkYiwgTGV2ZWxEQlNuYXBzaG90KiBzbmFwc2hvdCkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IExldmVsREJUcmFuc2FjdGlvbihkYikpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgTGV2ZWxEQlRyYW5zYWN0aW9uKGRiLCBzbmFwc2hvdCkpOwogfQogCi1MZXZlbERCVHJhbnNh
Y3Rpb246OkxldmVsREJUcmFuc2FjdGlvbihMZXZlbERCRGF0YWJhc2UqIGRiKQorTGV2ZWxEQlRy
YW5zYWN0aW9uOjpMZXZlbERCVHJhbnNhY3Rpb24oTGV2ZWxEQkRhdGFiYXNlKiBkYiwgTGV2ZWxE
QlNuYXBzaG90KiBzbmFwc2hvdCkKICAgICA6IG1fZGIoZGIpCisgICAgLCBtX3NuYXBzaG90KHNu
YXBzaG90KQogICAgICwgbV9jb21wYXJhdG9yKGRiLT5jb21wYXJhdG9yKCkpCiAgICAgLCBtX2Zp
bmlzaGVkKGZhbHNlKQogewpAQCAtMTE5LDcgKzEyMCw3IEBAIGJvb2wgTGV2ZWxEQlRyYW5zYWN0
aW9uOjpnZXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIFZlY3RvcjxjaGFyPiYgdmFsdWUpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHJldHVybiBtX2RiLT5nZXQoa2V5LCB2
YWx1ZSk7CisgICAgcmV0dXJuIG1fZGItPmdldChrZXksIHZhbHVlLCBtX3NuYXBzaG90KTsKIH0K
IAogYm9vbCBMZXZlbERCVHJhbnNhY3Rpb246OmNvbW1pdCgpCkBAIC0yNTgsNyArMjU5LDcgQEAg
TGV2ZWxEQlRyYW5zYWN0aW9uOjpUcmFuc2FjdGlvbkl0ZXJhdG9yOjpUcmFuc2FjdGlvbkl0ZXJh
dG9yKFBhc3NSZWZQdHI8TGV2ZWxEQlQKICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24p
CiAgICAgLCBtX2NvbXBhcmF0b3IobV90cmFuc2FjdGlvbi0+bV9jb21wYXJhdG9yKQogICAgICwg
bV90cmVlSXRlcmF0b3IoVHJlZUl0ZXJhdG9yOjpjcmVhdGUobV90cmFuc2FjdGlvbi5nZXQoKSkp
Ci0gICAgLCBtX2RiSXRlcmF0b3IobV90cmFuc2FjdGlvbi0+bV9kYi0+Y3JlYXRlSXRlcmF0b3Io
KSkKKyAgICAsIG1fZGJJdGVyYXRvcihtX3RyYW5zYWN0aW9uLT5tX2RiLT5jcmVhdGVJdGVyYXRv
cihtX3RyYW5zYWN0aW9uLT5tX3NuYXBzaG90KSkKICAgICAsIG1fY3VycmVudCgwKQogICAgICwg
bV9kaXJlY3Rpb24oa0ZvcndhcmQpCiAgICAgLCBtX3RyZWVDaGFuZ2VkKGZhbHNlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmgK
aW5kZXggODBhMzM1ZDQ3YTAxMGFmNGQzODJhNWYxNWExOTQ1OTE3Mzc0NGY1Zi4uZTZhNTNmZjkx
YmRiYzg0YjI4MmFjZWM3NTM5MDNjNDZmYmFmOTgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5oCkBAIC00MywxMyArNDMs
MTQgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTGV2ZWxEQkRhdGFiYXNlOworY2xh
c3MgTGV2ZWxEQlNuYXBzaG90OwogY2xhc3MgTGV2ZWxEQldyaXRlQmF0Y2g7CiAKIHVzaW5nIFdU
Rjo6QVZMVHJlZTsKIAogY2xhc3MgTGV2ZWxEQlRyYW5zYWN0aW9uIDogcHVibGljIFJlZkNvdW50
ZWQ8TGV2ZWxEQlRyYW5zYWN0aW9uPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
TGV2ZWxEQlRyYW5zYWN0aW9uPiBjcmVhdGUoTGV2ZWxEQkRhdGFiYXNlKik7CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TGV2ZWxEQlRyYW5zYWN0aW9uPiBjcmVhdGUoTGV2ZWxEQkRhdGFiYXNlKiwg
TGV2ZWxEQlNuYXBzaG90KiA9IDApOwogCiAgICAgfkxldmVsREJUcmFuc2FjdGlvbigpOwogICAg
IGJvb2wgcHV0KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZh
bHVlKTsKQEAgLTYxLDcgKzYyLDcgQEAgcHVibGljOgogICAgIFBhc3NPd25QdHI8TGV2ZWxEQkl0
ZXJhdG9yPiBjcmVhdGVJdGVyYXRvcigpOwogCiBwcml2YXRlOgotICAgIExldmVsREJUcmFuc2Fj
dGlvbihMZXZlbERCRGF0YWJhc2UqKTsKKyAgICBMZXZlbERCVHJhbnNhY3Rpb24oTGV2ZWxEQkRh
dGFiYXNlKiwgTGV2ZWxEQlNuYXBzaG90Kik7CiAKICAgICBzdHJ1Y3QgQVZMVHJlZU5vZGUgewog
ICAgICAgICBWZWN0b3I8Y2hhcj4ga2V5OwpAQCAtMTY0LDYgKzE2NSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBub3RpZnlJdGVyYXRvcnNPZlRyZWVDaGFuZ2UoKTsKIAogICAgIExldmVsREJEYXRh
YmFzZSogbV9kYjsKKyAgICBMZXZlbERCU25hcHNob3QqIG1fc25hcHNob3Q7CiAgICAgY29uc3Qg
TGV2ZWxEQkNvbXBhcmF0b3IqIG1fY29tcGFyYXRvcjsKICAgICBUcmVlVHlwZSBtX3RyZWU7CiAg
ICAgYm9vbCBtX2ZpbmlzaGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9MZXZlbERCVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xldmVs
REJUZXN0LmNwcAppbmRleCAyYTAwYWU2ODYxYzAwZTkwNWU0M2Y4NTA0YTUwNTEyYzUzMWFlYmFk
Li42MWQ4YTMzYWVmZTFiY2IwNGU0Y2MyMzM5OTkxMjNiMTMyNmE1NzA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xldmVsREJUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xldmVsREJUZXN0LmNwcApAQCAtMzAsNyArMzAsOSBAQAog
I2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMZXZlbERCQ29tcGFyYXRvci5oIgog
I2luY2x1ZGUgIkxldmVsREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkxldmVsREJJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkxldmVsREJTbGljZS5oIgorI2luY2x1ZGUgIkxldmVsREJUcmFuc2FjdGlv
bi5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQv
d2Via2l0X3N1cHBvcnQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01Myw3ICs1NSw3
IEBAIFZlY3RvcjxjaGFyPiBlbmNvZGVTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHMpCiB7CiAg
ICAgVmVjdG9yPGNoYXI+IHJldChzLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzLnNpemUoKTsgKytpKQotICAgICAgICByZXQuYXBwZW5kKHNbaV0pOworICAgICAgICByZXRb
aV0gPSBzW2ldOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTEwMCw2ICsxMDIsMjMxIEBAIFRF
U1QoTGV2ZWxEQkRhdGFiYXNlVGVzdCwgQ29ycnVwdGlvblRlc3QpCiAgICAgRVhQRUNUX0ZBTFNF
KHN1Y2Nlc3MpOwogfQogCitURVNUKExldmVsREJEYXRhYmFzZVRlc3QsIFNuYXBzaG90KQorewor
ICAgIE93blB0cjx3ZWJraXRfc3VwcG9ydDo6U2NvcGVkVGVtcERpcmVjdG9yeT4gdGVtcERpcmVj
dG9yeSA9IGFkb3B0UHRyKHdlYmtpdF9zdXBwb3J0OjpDcmVhdGVTY29wZWRUZW1wRGlyZWN0b3J5
KCkpOworICAgIHRlbXBEaXJlY3RvcnktPkNyZWF0ZVVuaXF1ZVRlbXBEaXIoKTsKKyAgICBjb25z
dCBTdHJpbmcgcGF0aCA9IFN0cmluZzo6ZnJvbVVURjgodGVtcERpcmVjdG9yeS0+cGF0aCgpLmNf
c3RyKCkpOworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleSA9IGVuY29kZVN0cmluZygia2V5
Iik7CisgICAgVmVjdG9yPGNoYXI+IGdvdFZhbHVlOworICAgIFNpbXBsZUNvbXBhcmF0b3IgY29t
cGFyYXRvcjsKKworICAgIE93blB0cjxMZXZlbERCRGF0YWJhc2U+IGxldmVsZGIgPSBMZXZlbERC
RGF0YWJhc2U6Om9wZW4ocGF0aCwgJmNvbXBhcmF0b3IpOworICAgIEVYUEVDVF9UUlVFKGxldmVs
ZGIpOworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+IG9sZFZhbHVlID0gZW5jb2RlU3RyaW5nKCJ2
YWx1ZSIpOworICAgIGJvb2wgc3VjY2VzcyA9IGxldmVsZGItPnB1dChrZXksIG9sZFZhbHVlKTsK
KyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKworICAgIE93blB0cjxMZXZlbERCU25hcHNob3Q+
IHNuYXBzaG90ID0gbGV2ZWxkYi0+Y3JlYXRlU25hcHNob3QoKTsKKworICAgIGNvbnN0IFZlY3Rv
cjxjaGFyPiBuZXdWYWx1ZSA9IGVuY29kZVN0cmluZygibmV3IHZhbHVlIik7CisgICAgc3VjY2Vz
cyA9IGxldmVsZGItPnB1dChrZXksIG5ld1ZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNz
KTsKKworICAgIHN1Y2Nlc3MgPSBsZXZlbGRiLT5nZXQoa2V5LCBnb3RWYWx1ZSk7CisgICAgRVhQ
RUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShnb3RW
YWx1ZSwgbmV3VmFsdWUpLCAwKTsKKworICAgIHN1Y2Nlc3MgPSBsZXZlbGRiLT5nZXQoa2V5LCBn
b3RWYWx1ZSwgc25hcHNob3QuZ2V0KCkpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAg
IEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUoZ290VmFsdWUsIG9sZFZhbHVlKSwgMCk7Cit9
CisKK1RFU1QoTGV2ZWxEQkRhdGFiYXNlVGVzdCwgVHJhbnNhY3Rpb25TbmFwc2hvdCkKK3sKKyAg
ICBPd25QdHI8d2Via2l0X3N1cHBvcnQ6OlNjb3BlZFRlbXBEaXJlY3Rvcnk+IHRlbXBEaXJlY3Rv
cnkgPSBhZG9wdFB0cih3ZWJraXRfc3VwcG9ydDo6Q3JlYXRlU2NvcGVkVGVtcERpcmVjdG9yeSgp
KTsKKyAgICB0ZW1wRGlyZWN0b3J5LT5DcmVhdGVVbmlxdWVUZW1wRGlyKCk7CisgICAgY29uc3Qg
U3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KHRlbXBEaXJlY3RvcnktPnBhdGgoKS5jX3N0
cigpKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXkgPSBlbmNvZGVTdHJpbmcoImtleSIp
OworICAgIFZlY3RvcjxjaGFyPiBnb3RWYWx1ZTsKKyAgICBTaW1wbGVDb21wYXJhdG9yIGNvbXBh
cmF0b3I7CisKKyAgICBPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBsZXZlbGRiID0gTGV2ZWxEQkRh
dGFiYXNlOjpvcGVuKHBhdGgsICZjb21wYXJhdG9yKTsKKyAgICBFWFBFQ1RfVFJVRShsZXZlbGRi
KTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBvbGRWYWx1ZSA9IGVuY29kZVN0cmluZygidmFs
dWUiKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBsZXZlbGRiLT5wdXQoa2V5LCBvbGRWYWx1ZSk7Cisg
ICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisKKyAgICBPd25QdHI8TGV2ZWxEQlNuYXBzaG90PiBz
bmFwc2hvdCA9IGxldmVsZGItPmNyZWF0ZVNuYXBzaG90KCk7CisgICAgUmVmUHRyPExldmVsREJU
cmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBMZXZlbERCVHJhbnNhY3Rpb246OmNyZWF0ZShsZXZl
bGRiLmdldCgpLCBzbmFwc2hvdC5nZXQoKSk7CisKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbmV3
VmFsdWUgPSBlbmNvZGVTdHJpbmcoIm5ldyB2YWx1ZSIpOworICAgIHN1Y2Nlc3MgPSBsZXZlbGRi
LT5wdXQoa2V5LCBuZXdWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisKKyAgICBz
dWNjZXNzID0gdHJhbnNhY3Rpb24tPmdldChrZXksIGdvdFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJV
RShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKGdvdFZhbHVlLCBv
bGRWYWx1ZSksIDApOworCisgICAgc3VjY2VzcyA9IGxldmVsZGItPmdldChrZXksIGdvdFZhbHVl
KTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5j
b21wYXJlKGdvdFZhbHVlLCBuZXdWYWx1ZSksIDApOworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+
IGFkZGVkS2V5ID0gZW5jb2RlU3RyaW5nKCJhZGRlZCBrZXkiKTsKKyAgICBjb25zdCBWZWN0b3I8
Y2hhcj4gYWRkZWRWYWx1ZSA9IGVuY29kZVN0cmluZygiYWRkZWQgdmFsdWUiKTsKKyAgICBzdWNj
ZXNzID0gbGV2ZWxkYi0+cHV0KGFkZGVkS2V5LCBhZGRlZFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJV
RShzdWNjZXNzKTsKKworICAgIHN1Y2Nlc3MgPSBsZXZlbGRiLT5nZXQoYWRkZWRLZXksIGdvdFZh
bHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRv
ci5jb21wYXJlKGdvdFZhbHVlLCBhZGRlZFZhbHVlKSwgMCk7CisKKyAgICBzdWNjZXNzID0gdHJh
bnNhY3Rpb24tPmdldChhZGRlZEtleSwgZ290VmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShzdWNj
ZXNzKTsKK30KKworVEVTVChMZXZlbERCRGF0YWJhc2VUZXN0LCBUcmFuc2FjdGlvbikKK3sKKyAg
ICBPd25QdHI8d2Via2l0X3N1cHBvcnQ6OlNjb3BlZFRlbXBEaXJlY3Rvcnk+IHRlbXBEaXJlY3Rv
cnkgPSBhZG9wdFB0cih3ZWJraXRfc3VwcG9ydDo6Q3JlYXRlU2NvcGVkVGVtcERpcmVjdG9yeSgp
KTsKKyAgICB0ZW1wRGlyZWN0b3J5LT5DcmVhdGVVbmlxdWVUZW1wRGlyKCk7CisgICAgY29uc3Qg
U3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KHRlbXBEaXJlY3RvcnktPnBhdGgoKS5jX3N0
cigpKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXkgPSBlbmNvZGVTdHJpbmcoImtleSIp
OworICAgIFZlY3RvcjxjaGFyPiBnb3RWYWx1ZTsKKyAgICBTaW1wbGVDb21wYXJhdG9yIGNvbXBh
cmF0b3I7CisKKyAgICBPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBsZXZlbGRiID0gTGV2ZWxEQkRh
dGFiYXNlOjpvcGVuKHBhdGgsICZjb21wYXJhdG9yKTsKKyAgICBFWFBFQ1RfVFJVRShsZXZlbGRi
KTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBvbGRWYWx1ZSA9IGVuY29kZVN0cmluZygidmFs
dWUiKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBsZXZlbGRiLT5wdXQoa2V5LCBvbGRWYWx1ZSk7Cisg
ICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisKKyAgICBSZWZQdHI8TGV2ZWxEQlRyYW5zYWN0aW9u
PiB0cmFuc2FjdGlvbiA9IExldmVsREJUcmFuc2FjdGlvbjo6Y3JlYXRlKGxldmVsZGIuZ2V0KCkp
OworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+IG5ld1ZhbHVlID0gZW5jb2RlU3RyaW5nKCJuZXcg
dmFsdWUiKTsKKyAgICB0cmFuc2FjdGlvbi0+cHV0KGtleSwgbmV3VmFsdWUpOworCisgICAgc3Vj
Y2VzcyA9IHRyYW5zYWN0aW9uLT5nZXQoa2V5LCBnb3RWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUo
c3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShnb3RWYWx1ZSwgbmV3
VmFsdWUpLCAwKTsKKworICAgIHN1Y2Nlc3MgPSBsZXZlbGRiLT5nZXQoa2V5LCBnb3RWYWx1ZSk7
CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29t
cGFyZShnb3RWYWx1ZSwgb2xkVmFsdWUpLCAwKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBh
ZGRlZEtleSA9IGVuY29kZVN0cmluZygiYWRkZWQga2V5Iik7CisgICAgY29uc3QgVmVjdG9yPGNo
YXI+IGFkZGVkVmFsdWUgPSBlbmNvZGVTdHJpbmcoImFkZGVkIHZhbHVlIik7CisgICAgc3VjY2Vz
cyA9IGxldmVsZGItPnB1dChhZGRlZEtleSwgYWRkZWRWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUo
c3VjY2Vzcyk7CisKKyAgICBzdWNjZXNzID0gbGV2ZWxkYi0+Z2V0KGFkZGVkS2V5LCBnb3RWYWx1
ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3Iu
Y29tcGFyZShnb3RWYWx1ZSwgYWRkZWRWYWx1ZSksIDApOworCisgICAgc3VjY2VzcyA9IHRyYW5z
YWN0aW9uLT5nZXQoYWRkZWRLZXksIGdvdFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNz
KTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKGdvdFZhbHVlLCBhZGRlZFZhbHVl
KSwgMCk7Cit9CisKK1RFU1QoTGV2ZWxEQkRhdGFiYXNlVGVzdCwgU25hcHNob3RJdGVyYXRvcikK
K3sKKyAgICBPd25QdHI8d2Via2l0X3N1cHBvcnQ6OlNjb3BlZFRlbXBEaXJlY3Rvcnk+IHRlbXBE
aXJlY3RvcnkgPSBhZG9wdFB0cih3ZWJraXRfc3VwcG9ydDo6Q3JlYXRlU2NvcGVkVGVtcERpcmVj
dG9yeSgpKTsKKyAgICB0ZW1wRGlyZWN0b3J5LT5DcmVhdGVVbmlxdWVUZW1wRGlyKCk7CisgICAg
Y29uc3QgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KHRlbXBEaXJlY3RvcnktPnBhdGgo
KS5jX3N0cigpKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydCA9IGVuY29kZVN0cmlu
ZygiIik7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleTEgPSBlbmNvZGVTdHJpbmcoImtleTEi
KTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gdmFsdWUxID0gZW5jb2RlU3RyaW5nKCJ2YWx1ZTEi
KTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5MiA9IGVuY29kZVN0cmluZygia2V5MiIpOwor
ICAgIGNvbnN0IFZlY3RvcjxjaGFyPiB2YWx1ZTIgPSBlbmNvZGVTdHJpbmcoInZhbHVlMiIpOwor
CisgICAgU2ltcGxlQ29tcGFyYXRvciBjb21wYXJhdG9yOworICAgIGJvb2wgc3VjY2VzczsKKwor
ICAgIE93blB0cjxMZXZlbERCRGF0YWJhc2U+IGxldmVsZGIgPSBMZXZlbERCRGF0YWJhc2U6Om9w
ZW4ocGF0aCwgJmNvbXBhcmF0b3IpOworICAgIEVYUEVDVF9UUlVFKGxldmVsZGIpOworCisgICAg
c3VjY2VzcyA9IGxldmVsZGItPnB1dChrZXkxLCB2YWx1ZTEpOworICAgIEVYUEVDVF9UUlVFKHN1
Y2Nlc3MpOworICAgIHN1Y2Nlc3MgPSBsZXZlbGRiLT5wdXQoa2V5MiwgdmFsdWUyKTsKKyAgICBF
WFBFQ1RfVFJVRShzdWNjZXNzKTsKKworICAgIE93blB0cjxMZXZlbERCU25hcHNob3Q+IHNuYXBz
aG90ID0gbGV2ZWxkYi0+Y3JlYXRlU25hcHNob3QoKTsKKworICAgIHN1Y2Nlc3MgPSBsZXZlbGRi
LT5yZW1vdmUoa2V5Mik7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisKKyAgICBPd25QdHI8
TGV2ZWxEQkl0ZXJhdG9yPiBub3JtYWxJdGVyYXRvciA9IGxldmVsZGItPmNyZWF0ZUl0ZXJhdG9y
KCk7CisgICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gc25hcHNob3RJdGVyYXRvciA9IGxldmVs
ZGItPmNyZWF0ZUl0ZXJhdG9yKHNuYXBzaG90LmdldCgpKTsKKworICAgIG5vcm1hbEl0ZXJhdG9y
LT5zZWVrKHN0YXJ0KTsKKyAgICBzbmFwc2hvdEl0ZXJhdG9yLT5zZWVrKHN0YXJ0KTsKKworICAg
IEVYUEVDVF9UUlVFKG5vcm1hbEl0ZXJhdG9yLT5pc1ZhbGlkKCkpOworICAgIEVYUEVDVF9FUShj
b21wYXJhdG9yLmNvbXBhcmUobm9ybWFsSXRlcmF0b3ItPmtleSgpLCBrZXkxKSwgMCk7CisgICAg
RVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShub3JtYWxJdGVyYXRvci0+dmFsdWUoKSwgdmFs
dWUxKSwgMCk7CisKKyAgICBFWFBFQ1RfVFJVRShzbmFwc2hvdEl0ZXJhdG9yLT5pc1ZhbGlkKCkp
OworICAgIEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUoc25hcHNob3RJdGVyYXRvci0+a2V5
KCksIGtleTEpLCAwKTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKHNuYXBzaG90
SXRlcmF0b3ItPnZhbHVlKCksIHZhbHVlMSksIDApOworCisgICAgbm9ybWFsSXRlcmF0b3ItPm5l
eHQoKTsKKyAgICBzbmFwc2hvdEl0ZXJhdG9yLT5uZXh0KCk7CisKKyAgICBFWFBFQ1RfRkFMU0Uo
bm9ybWFsSXRlcmF0b3ItPmlzVmFsaWQoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShzbmFwc2hvdEl0
ZXJhdG9yLT5pc1ZhbGlkKCkpOworICAgIEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUoc25h
cHNob3RJdGVyYXRvci0+a2V5KCksIGtleTIpLCAwKTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRv
ci5jb21wYXJlKHNuYXBzaG90SXRlcmF0b3ItPnZhbHVlKCksIHZhbHVlMiksIDApOworCisgICAg
c25hcHNob3RJdGVyYXRvci0+bmV4dCgpOworCisgICAgRVhQRUNUX0ZBTFNFKHNuYXBzaG90SXRl
cmF0b3ItPmlzVmFsaWQoKSk7Cit9CisKK1RFU1QoTGV2ZWxEQkRhdGFiYXNlVGVzdCwgU25hcHNo
b3RUcmFuc2FjdGlvbkl0ZXJhdG9yKQoreworICAgIE93blB0cjx3ZWJraXRfc3VwcG9ydDo6U2Nv
cGVkVGVtcERpcmVjdG9yeT4gdGVtcERpcmVjdG9yeSA9IGFkb3B0UHRyKHdlYmtpdF9zdXBwb3J0
OjpDcmVhdGVTY29wZWRUZW1wRGlyZWN0b3J5KCkpOworICAgIHRlbXBEaXJlY3RvcnktPkNyZWF0
ZVVuaXF1ZVRlbXBEaXIoKTsKKyAgICBjb25zdCBTdHJpbmcgcGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgodGVtcERpcmVjdG9yeS0+cGF0aCgpLmNfc3RyKCkpOworCisgICAgY29uc3QgVmVjdG9yPGNo
YXI+IHN0YXJ0ID0gZW5jb2RlU3RyaW5nKCIiKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5
MSA9IGVuY29kZVN0cmluZygia2V5MSIpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiB2YWx1ZTEg
PSBlbmNvZGVTdHJpbmcoInZhbHVlMSIpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXkyID0g
ZW5jb2RlU3RyaW5nKCJrZXkyIik7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IHZhbHVlMiA9IGVu
Y29kZVN0cmluZygidmFsdWUyIik7CisKKyAgICBTaW1wbGVDb21wYXJhdG9yIGNvbXBhcmF0b3I7
CisgICAgYm9vbCBzdWNjZXNzOworCisgICAgT3duUHRyPExldmVsREJEYXRhYmFzZT4gbGV2ZWxk
YiA9IExldmVsREJEYXRhYmFzZTo6b3BlbihwYXRoLCAmY29tcGFyYXRvcik7CisgICAgRVhQRUNU
X1RSVUUobGV2ZWxkYik7CisKKyAgICBzdWNjZXNzID0gbGV2ZWxkYi0+cHV0KGtleTEsIHZhbHVl
MSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgc3VjY2VzcyA9IGxldmVsZGItPnB1
dChrZXkyLCB2YWx1ZTIpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworCisgICAgT3duUHRy
PExldmVsREJTbmFwc2hvdD4gc25hcHNob3QgPSBsZXZlbGRiLT5jcmVhdGVTbmFwc2hvdCgpOwor
CisgICAgc3VjY2VzcyA9IGxldmVsZGItPnJlbW92ZShrZXkyKTsKKyAgICBFWFBFQ1RfVFJVRShz
dWNjZXNzKTsKKworICAgIFJlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0g
TGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUobGV2ZWxkYi5nZXQoKSwgc25hcHNob3QuZ2V0KCkp
OworICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IGl0ID0gdHJhbnNhY3Rpb24tPmNyZWF0ZUl0
ZXJhdG9yKCk7CisKKyAgICBpdC0+c2VlayhzdGFydCk7CisKKyAgICBFWFBFQ1RfVFJVRShpdC0+
aXNWYWxpZCgpKTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKGl0LT5rZXkoKSwg
a2V5MSksIDApOworICAgIEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUoaXQtPnZhbHVlKCks
IHZhbHVlMSksIDApOworCisgICAgaXQtPm5leHQoKTsKKworICAgIEVYUEVDVF9UUlVFKGl0LT5p
c1ZhbGlkKCkpOworICAgIEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUoaXQtPmtleSgpLCBr
ZXkyKSwgMCk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShpdC0+dmFsdWUoKSwg
dmFsdWUyKSwgMCk7CisKKyAgICBpdC0+bmV4dCgpOworCisgICAgRVhQRUNUX0ZBTFNFKGl0LT5p
c1ZhbGlkKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYgLy8gVVNFKExFVkVMREIp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171955</attachid>
            <date>2012-11-01 17:07:20 -0700</date>
            <delta_ts>2012-11-01 17:14:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100786-20121101170541.patch</filename>
            <type>text/plain</type>
            <size>12533</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVmYjEwYmYyN2JhYmUw
ZmZhM2Y0OGFmZjVkMmFkYTMyNjhjOTkzNi4uMTg4MzkxZmUxYmZkYzljYjhkNTQ4MWVkODk1MTZk
NTRkOGQxNThiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTExLTAxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXhwb3NlIHNuYXBzaG90
cyBpbiBwbGF0Zm9ybS9sZXZlbGRiIHdyYXBwZXIgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3ODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgbGV2ZWxkYiAic25hcHNob3RzIiBpbiB0
aGUgTGV2ZWxEQiBBUEkuIEEgc25hcHNob3QgbGV0cyB5b3Ugb2JzZXJ2ZSB0aGUgZGF0YWJhc2UK
KyAgICAgICAgYXMgaXQgd2FzIHdoZW4gdGhlIHNuYXBzaG90IHdhcyB0YWtlbi4gVGhpcyBjYW4g
YmUgdXNlZCB0byBpbXBsZW1lbnQgcGFyYWxsZWwgdHJhbnNhY3Rpb25zLAorICAgICAgICBlLmcu
IHdoZXJlIGEgcmVhZCB0cmFuc2FjdGlvbiB3b24ndCBzZWUgdXBkYXRlcyBtYWRlIGJ5IGEgbGF0
ZXIgd3JpdGUgdHJhbnNhY3Rpb24uCisKKyAgICAgICAgVGVzdHM6IHdlYmtpdF91bml0X3Rlc3Rz
IC0tZ3Rlc3RfZmlsdGVyPSdMZXZlbERCRGF0YWJhc2VUZXN0LlRyYW5zYWN0aW9uKicKKworICAg
ICAgICAqIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxldmVsREJTbmFwc2hvdDo6TGV2ZWxEQlNuYXBzaG90KTogTmV3IChidXQgZm9yIG5v
dyBpbnRlcm5hbC1vbmx5KSB3cmFwcGVyIHR5cGUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxldmVsREJTbmFwc2hvdDo6fkxldmVsREJTbmFwc2hvdCk6IFJlbGVhc2Ug
dGhlIGxldmVsZGI6OlNuYXBzaG90LgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQkRhdGFiYXNl
OjpnZXQpOiBPcHRpb25hbCBzbmFwc2hvdCBhcmd1bWVudCwgZm9yIHVzZSBieSB0cmFuc2FjdGlv
bnMuCisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCRGF0YWJhc2U6OmNyZWF0ZUl0ZXJhdG9yKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaDoKKyAg
ICAgICAgKGxldmVsZGIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMZXZlbERCU25h
cHNob3QpOgorICAgICAgICAoTGV2ZWxEQkRhdGFiYXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9s
ZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZXZlbERC
VHJhbnNhY3Rpb246OkxldmVsREJUcmFuc2FjdGlvbik6IEluaXRpYWxpemUgYSBzbmFwc2hvdC4K
KyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJUcmFuc2FjdGlvbjo6Z2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxldmVsREJUcmFuc2FjdGlvbjo6VHJhbnNhY3Rpb25JdGVyYXRvcjo6VHJhbnNhY3Rp
b25JdGVyYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rp
b24uaDoKKyAgICAgICAgKExldmVsREJUcmFuc2FjdGlvbik6CisKIDIwMTItMTEtMDEgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBCdWlsZCBm
aXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDBmYTdlMTFhYzE0OTZiZTRkZTQ4ZWI1
ODg0Yzk1ZWVkYjM3ODEwNDguLmNjMGNlMTJlNzI1YmY5MjA5MDBlNTk4NmJmN2YwYjI5NzAxMzdh
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTEt
MDEgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBFeHBvc2Ug
c25hcHNob3RzIGluIHBsYXRmb3JtL2xldmVsZGIgd3JhcHBlciBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDc4NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB1bml0IHRlc3RzIGZvciB0cmFu
c2FjdGlvbnMvc25hcHNob3RzLgorCisgICAgICAgICogdGVzdHMvTGV2ZWxEQlRlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlU3RyaW5nKTogRG9uJ3QgYXBwZW5kIHRvIHByZS1zaXpl
ZCB2ZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKFdlYkNvcmUpOgor
CiAyMDEyLTExLTAxICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBBdm9pZCBhdHRlbXB0aW5nIHRvIGRlZmVyIGNvbW1pdHMgd2hlbiB0
aGV5IGFyZSBhbHJlYWR5IGRlZmVycmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAKaW5kZXggMjczYWZkNGRlYzFhYWU3MGJkMWFh
OTJiMDhlNjgwNGJiMjYzMDhjMi4uZWRmOWRiMjU3MmUzNThmN2I1Y2MzYTc1NDQ3MzBhZDQ3ZmNm
MzFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERC
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxE
QkRhdGFiYXNlLmNwcApAQCAtODksNiArODksMTcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBMZXZl
bERCQ29tcGFyYXRvciogbV9jb21wYXJhdG9yOwogfTsKIAorTGV2ZWxEQlNuYXBzaG90OjpMZXZl
bERCU25hcHNob3QoTGV2ZWxEQkRhdGFiYXNlKiBkYikKKyAgICA6IG1fZGIoZGItPm1fZGIuZ2V0
KCkpCisgICAgLCBtX3NuYXBzaG90KG1fZGItPkdldFNuYXBzaG90KCkpCit7Cit9CisKK0xldmVs
REJTbmFwc2hvdDo6fkxldmVsREJTbmFwc2hvdCgpCit7CisgICAgbV9kYi0+UmVsZWFzZVNuYXBz
aG90KG1fc25hcHNob3QpOworfQorCiBMZXZlbERCRGF0YWJhc2U6OkxldmVsREJEYXRhYmFzZSgp
CiB7CiB9CkBAIC0xODcsMTEgKzE5OCwxMiBAQCBib29sIExldmVsREJEYXRhYmFzZTo6cmVtb3Zl
KGNvbnN0IExldmVsREJTbGljZSYga2V5KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBM
ZXZlbERCRGF0YWJhc2U6OmdldChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgVmVjdG9yPGNoYXI+
JiB2YWx1ZSkKK2Jvb2wgTGV2ZWxEQkRhdGFiYXNlOjpnZXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBr
ZXksIFZlY3RvcjxjaGFyPiYgdmFsdWUsIGNvbnN0IExldmVsREJTbmFwc2hvdCogc25hcHNob3Qp
CiB7CiAgICAgc3RkOjpzdHJpbmcgcmVzdWx0OwogICAgIGxldmVsZGI6OlJlYWRPcHRpb25zIHJl
YWRPcHRpb25zOwogICAgIHJlYWRPcHRpb25zLnZlcmlmeV9jaGVja3N1bXMgPSB0cnVlOyAvLyBG
SVhNRTogRGlzYWJsZSB0aGlzIGlmIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3QgaXMgdG9vIGdyZWF0
LgorICAgIHJlYWRPcHRpb25zLnNuYXBzaG90ID0gc25hcHNob3QgPyBzbmFwc2hvdC0+bV9zbmFw
c2hvdCA6IDA7CiAKICAgICBjb25zdCBsZXZlbGRiOjpTdGF0dXMgcyA9IG1fZGItPkdldChyZWFk
T3B0aW9ucywgbWFrZVNsaWNlKGtleSksICZyZXN1bHQpOwogICAgIGlmIChzLm9rKCkpIHsKQEAg
LTI5MywxMCArMzA1LDExIEBAIExldmVsREJTbGljZSBJdGVyYXRvckltcGw6OnZhbHVlKCkgY29u
c3QKICAgICByZXR1cm4gbWFrZUxldmVsREJTbGljZShtX2l0ZXJhdG9yLT52YWx1ZSgpKTsKIH0K
IAotUGFzc093blB0cjxMZXZlbERCSXRlcmF0b3I+IExldmVsREJEYXRhYmFzZTo6Y3JlYXRlSXRl
cmF0b3IoKQorUGFzc093blB0cjxMZXZlbERCSXRlcmF0b3I+IExldmVsREJEYXRhYmFzZTo6Y3Jl
YXRlSXRlcmF0b3IoY29uc3QgTGV2ZWxEQlNuYXBzaG90KiBzbmFwc2hvdCkKIHsKICAgICBsZXZl
bGRiOjpSZWFkT3B0aW9ucyByZWFkT3B0aW9uczsKICAgICByZWFkT3B0aW9ucy52ZXJpZnlfY2hl
Y2tzdW1zID0gdHJ1ZTsgLy8gRklYTUU6IERpc2FibGUgdGhpcyBpZiB0aGUgcGVyZm9ybWFuY2Ug
aW1wYWN0IGlzIHRvbyBncmVhdC4KKyAgICByZWFkT3B0aW9ucy5zbmFwc2hvdCA9IHNuYXBzaG90
ID8gc25hcHNob3QtPm1fc25hcHNob3QgOiAwOwogICAgIE93blB0cjxsZXZlbGRiOjpJdGVyYXRv
cj4gaSA9IGFkb3B0UHRyKG1fZGItPk5ld0l0ZXJhdG9yKHJlYWRPcHRpb25zKSk7CiAgICAgaWYg
KCFpKSAvLyBGSVhNRTogRG91YmxlIGNoZWNrIGlmIHdlIGFjdHVhbGx5IG5lZWQgdG8gY2hlY2sg
dGhpcy4KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaAppbmRleCBlODBiNDlhMjRhYzc3ZDJmYzAz
ZjEwYWUzYjBkYjcwZjM2YTI2NzY5Li44MjAxYzA4YjBiMjQ1MGVlZDE0YTRjYTM2NTc3MGU3ZjVh
MmUwMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVs
REJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxE
QkRhdGFiYXNlLmgKQEAgLTM3LDE1ICszNywyOSBAQCBuYW1lc3BhY2UgbGV2ZWxkYiB7CiBjbGFz
cyBDb21wYXJhdG9yOwogY2xhc3MgREI7CiBjbGFzcyBFbnY7CitjbGFzcyBTbmFwc2hvdDsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBMZXZlbERCRGF0YWJhc2U7CiBjbGFzcyBM
ZXZlbERCQ29tcGFyYXRvcjsKIGNsYXNzIExldmVsREJJdGVyYXRvcjsKIGNsYXNzIExldmVsREJT
bGljZTsKIGNsYXNzIExldmVsREJXcml0ZUJhdGNoOwogCitjbGFzcyBMZXZlbERCU25hcHNob3Qg
eworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTGV2ZWxEQkRhdGFiYXNlOworICAgIGZyaWVu
ZCBjbGFzcyBMZXZlbERCVHJhbnNhY3Rpb247CisKKyAgICBMZXZlbERCU25hcHNob3QoTGV2ZWxE
QkRhdGFiYXNlKik7CisgICAgfkxldmVsREJTbmFwc2hvdCgpOworCisgICAgbGV2ZWxkYjo6REIq
IG1fZGI7CisgICAgY29uc3QgbGV2ZWxkYjo6U25hcHNob3QqIG1fc25hcHNob3Q7Cit9OworCiBj
bGFzcyBMZXZlbERCRGF0YWJhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPExl
dmVsREJEYXRhYmFzZT4gb3Blbihjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBMZXZlbERC
Q29tcGFyYXRvciopOwpAQCAtNTUsMTIgKzY5LDEzIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcHV0
KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlKTsKICAg
ICBib29sIHJlbW92ZShjb25zdCBMZXZlbERCU2xpY2UmIGtleSk7Ci0gICAgYm9vbCBnZXQoY29u
c3QgTGV2ZWxEQlNsaWNlJiBrZXksIFZlY3RvcjxjaGFyPiYgdmFsdWUpOworICAgIGJvb2wgZ2V0
KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBWZWN0b3I8Y2hhcj4mIHZhbHVlLCBjb25zdCBMZXZl
bERCU25hcHNob3QqID0gMCk7CiAgICAgYm9vbCB3cml0ZShMZXZlbERCV3JpdGVCYXRjaCYpOwot
ICAgIFBhc3NPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBjcmVhdGVJdGVyYXRvcigpOworICAgIFBh
c3NPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBjcmVhdGVJdGVyYXRvcihjb25zdCBMZXZlbERCU25h
cHNob3QqID0gMCk7CiAgICAgY29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqIGNvbXBhcmF0b3IoKSBj
b25zdDsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTGV2ZWxEQlNuYXBzaG90OwogICAg
IExldmVsREJEYXRhYmFzZSgpOwogCiAgICAgT3duUHRyPGxldmVsZGI6OkVudj4gbV9lbnY7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2Fj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2Fj
dGlvbi5jcHAKaW5kZXggOGZlM2ZkMDhlZGIyNzliY2UzODQ1MGQ1YzdiOWJiYTAxNzQ3NTk1My4u
MWE0ODQ5MzExMDk4MzFkN2JmZDQ1YTdkNWEyNzg0YWFjYzcyYTczZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkxldmVsREJEYXRhYmFzZS5oIgogI2luY2x1ZGUg
IkxldmVsREJTbGljZS5oIgogI2luY2x1ZGUgIkxldmVsREJXcml0ZUJhdGNoLmgiCisjaW5jbHVk
ZSA8bGV2ZWxkYi9kYi5oPgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAjaWYgVVNF
KExFVkVMREIpCkBAIC00Miw2ICs0Myw3IEBAIFBhc3NSZWZQdHI8TGV2ZWxEQlRyYW5zYWN0aW9u
PiBMZXZlbERCVHJhbnNhY3Rpb246OmNyZWF0ZShMZXZlbERCRGF0YWJhc2UqIGRiKQogCiBMZXZl
bERCVHJhbnNhY3Rpb246OkxldmVsREJUcmFuc2FjdGlvbihMZXZlbERCRGF0YWJhc2UqIGRiKQog
ICAgIDogbV9kYihkYikKKyAgICAsIG1fc25hcHNob3QoZGIpCiAgICAgLCBtX2NvbXBhcmF0b3Io
ZGItPmNvbXBhcmF0b3IoKSkKICAgICAsIG1fZmluaXNoZWQoZmFsc2UpCiB7CkBAIC0xMTksNyAr
MTIxLDcgQEAgYm9vbCBMZXZlbERCVHJhbnNhY3Rpb246OmdldChjb25zdCBMZXZlbERCU2xpY2Um
IGtleSwgVmVjdG9yPGNoYXI+JiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgcmV0dXJuIG1fZGItPmdldChrZXksIHZhbHVlKTsKKyAgICByZXR1cm4gbV9kYi0+Z2V0
KGtleSwgdmFsdWUsICZtX3NuYXBzaG90KTsKIH0KIAogYm9vbCBMZXZlbERCVHJhbnNhY3Rpb246
OmNvbW1pdCgpCkBAIC0yNTgsNyArMjYwLDcgQEAgTGV2ZWxEQlRyYW5zYWN0aW9uOjpUcmFuc2Fj
dGlvbkl0ZXJhdG9yOjpUcmFuc2FjdGlvbkl0ZXJhdG9yKFBhc3NSZWZQdHI8TGV2ZWxEQlQKICAg
ICA6IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAgLCBtX2NvbXBhcmF0b3IobV90cmFu
c2FjdGlvbi0+bV9jb21wYXJhdG9yKQogICAgICwgbV90cmVlSXRlcmF0b3IoVHJlZUl0ZXJhdG9y
OjpjcmVhdGUobV90cmFuc2FjdGlvbi5nZXQoKSkpCi0gICAgLCBtX2RiSXRlcmF0b3IobV90cmFu
c2FjdGlvbi0+bV9kYi0+Y3JlYXRlSXRlcmF0b3IoKSkKKyAgICAsIG1fZGJJdGVyYXRvcihtX3Ry
YW5zYWN0aW9uLT5tX2RiLT5jcmVhdGVJdGVyYXRvcigmbV90cmFuc2FjdGlvbi0+bV9zbmFwc2hv
dCkpCiAgICAgLCBtX2N1cnJlbnQoMCkKICAgICAsIG1fZGlyZWN0aW9uKGtGb3J3YXJkKQogICAg
ICwgbV90cmVlQ2hhbmdlZChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5oCmluZGV4IDgwYTMzNWQ0N2EwMTBhZjRkMzgy
YTVmMTVhMTk0NTkxNzM3NDRmNWYuLjBlNjA5N2M0M2UwYWUzY2RlNDM0NzAyN2I4YzkyMmYzOWRm
ZjNiYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxE
QlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZl
bERCVHJhbnNhY3Rpb24uaApAQCAtMzAsNiArMzAsNyBAQAogI2lmIFVTRShMRVZFTERCKQogCiAj
aW5jbHVkZSAiTGV2ZWxEQkNvbXBhcmF0b3IuaCIKKyNpbmNsdWRlICJMZXZlbERCRGF0YWJhc2Uu
aCIKICNpbmNsdWRlICJMZXZlbERCSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMZXZlbERCU2xpY2Uu
aCIKICNpbmNsdWRlIDx3dGYvQVZMVHJlZS5oPgpAQCAtNDIsNyArNDMsNiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIExldmVsREJEYXRhYmFzZTsKIGNsYXNzIExldmVsREJXcml0
ZUJhdGNoOwogCiB1c2luZyBXVEY6OkFWTFRyZWU7CkBAIC0xNjQsNiArMTY0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIG5vdGlmeUl0ZXJhdG9yc09mVHJlZUNoYW5nZSgpOwogCiAgICAgTGV2ZWxE
QkRhdGFiYXNlKiBtX2RiOworICAgIExldmVsREJTbmFwc2hvdCBtX3NuYXBzaG90OwogICAgIGNv
bnN0IExldmVsREJDb21wYXJhdG9yKiBtX2NvbXBhcmF0b3I7CiAgICAgVHJlZVR5cGUgbV90cmVl
OwogICAgIGJvb2wgbV9maW5pc2hlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvTGV2ZWxEQlRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9M
ZXZlbERCVGVzdC5jcHAKaW5kZXggMmEwMGFlNjg2MWMwMGU5MDVlNDNmODUwNGE1MDUxMmM1MzFh
ZWJhZC4uN2RjMDM1NWRmZTkzNWYzOTMzMTQ1MGVlNjk2NjI5NzcyZWNjMmYyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MZXZlbERCVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MZXZlbERCVGVzdC5jcHAKQEAgLTMwLDcgKzMwLDkg
QEAKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQkNvbXBhcmF0b3Iu
aCIKICNpbmNsdWRlICJMZXZlbERCRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJMZXZlbERCSXRlcmF0
b3IuaCIKICNpbmNsdWRlICJMZXZlbERCU2xpY2UuaCIKKyNpbmNsdWRlICJMZXZlbERCVHJhbnNh
Y3Rpb24uaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogI2luY2x1ZGUgPHdlYmtpdC9zdXBw
b3J0L3dlYmtpdF9zdXBwb3J0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNTMsNyAr
NTUsNyBAQCBWZWN0b3I8Y2hhcj4gZW5jb2RlU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBzKQog
ewogICAgIFZlY3RvcjxjaGFyPiByZXQocy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcy5zaXplKCk7ICsraSkKLSAgICAgICAgcmV0LmFwcGVuZChzW2ldKTsKKyAgICAgICAg
cmV0W2ldID0gc1tpXTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xMDAsNiArMTAyLDk3IEBA
IFRFU1QoTGV2ZWxEQkRhdGFiYXNlVGVzdCwgQ29ycnVwdGlvblRlc3QpCiAgICAgRVhQRUNUX0ZB
TFNFKHN1Y2Nlc3MpOwogfQogCitURVNUKExldmVsREJEYXRhYmFzZVRlc3QsIFRyYW5zYWN0aW9u
KQoreworICAgIE93blB0cjx3ZWJraXRfc3VwcG9ydDo6U2NvcGVkVGVtcERpcmVjdG9yeT4gdGVt
cERpcmVjdG9yeSA9IGFkb3B0UHRyKHdlYmtpdF9zdXBwb3J0OjpDcmVhdGVTY29wZWRUZW1wRGly
ZWN0b3J5KCkpOworICAgIHRlbXBEaXJlY3RvcnktPkNyZWF0ZVVuaXF1ZVRlbXBEaXIoKTsKKyAg
ICBjb25zdCBTdHJpbmcgcGF0aCA9IFN0cmluZzo6ZnJvbVVURjgodGVtcERpcmVjdG9yeS0+cGF0
aCgpLmNfc3RyKCkpOworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleSA9IGVuY29kZVN0cmlu
Zygia2V5Iik7CisgICAgVmVjdG9yPGNoYXI+IGdvdFZhbHVlOworICAgIFNpbXBsZUNvbXBhcmF0
b3IgY29tcGFyYXRvcjsKKworICAgIE93blB0cjxMZXZlbERCRGF0YWJhc2U+IGxldmVsZGIgPSBM
ZXZlbERCRGF0YWJhc2U6Om9wZW4ocGF0aCwgJmNvbXBhcmF0b3IpOworICAgIEVYUEVDVF9UUlVF
KGxldmVsZGIpOworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+IG9sZFZhbHVlID0gZW5jb2RlU3Ry
aW5nKCJ2YWx1ZSIpOworICAgIGJvb2wgc3VjY2VzcyA9IGxldmVsZGItPnB1dChrZXksIG9sZFZh
bHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKworICAgIFJlZlB0cjxMZXZlbERCVHJh
bnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gTGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUobGV2ZWxk
Yi5nZXQoKSk7CisKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbmV3VmFsdWUgPSBlbmNvZGVTdHJp
bmcoIm5ldyB2YWx1ZSIpOworICAgIHN1Y2Nlc3MgPSBsZXZlbGRiLT5wdXQoa2V5LCBuZXdWYWx1
ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisKKyAgICBzdWNjZXNzID0gdHJhbnNhY3Rp
b24tPmdldChrZXksIGdvdFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBF
WFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKGdvdFZhbHVlLCBvbGRWYWx1ZSksIDApOworCisg
ICAgc3VjY2VzcyA9IGxldmVsZGItPmdldChrZXksIGdvdFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJV
RShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKGdvdFZhbHVlLCBu
ZXdWYWx1ZSksIDApOworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGFkZGVkS2V5ID0gZW5jb2Rl
U3RyaW5nKCJhZGRlZCBrZXkiKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gYWRkZWRWYWx1ZSA9
IGVuY29kZVN0cmluZygiYWRkZWQgdmFsdWUiKTsKKyAgICBzdWNjZXNzID0gbGV2ZWxkYi0+cHV0
KGFkZGVkS2V5LCBhZGRlZFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKworICAg
IHN1Y2Nlc3MgPSBsZXZlbGRiLT5nZXQoYWRkZWRLZXksIGdvdFZhbHVlKTsKKyAgICBFWFBFQ1Rf
VFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKGdvdFZhbHVl
LCBhZGRlZFZhbHVlKSwgMCk7CisKKyAgICBzdWNjZXNzID0gdHJhbnNhY3Rpb24tPmdldChhZGRl
ZEtleSwgZ290VmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKK30KKworVEVTVChM
ZXZlbERCRGF0YWJhc2VUZXN0LCBUcmFuc2FjdGlvbkl0ZXJhdG9yKQoreworICAgIE93blB0cjx3
ZWJraXRfc3VwcG9ydDo6U2NvcGVkVGVtcERpcmVjdG9yeT4gdGVtcERpcmVjdG9yeSA9IGFkb3B0
UHRyKHdlYmtpdF9zdXBwb3J0OjpDcmVhdGVTY29wZWRUZW1wRGlyZWN0b3J5KCkpOworICAgIHRl
bXBEaXJlY3RvcnktPkNyZWF0ZVVuaXF1ZVRlbXBEaXIoKTsKKyAgICBjb25zdCBTdHJpbmcgcGF0
aCA9IFN0cmluZzo6ZnJvbVVURjgodGVtcERpcmVjdG9yeS0+cGF0aCgpLmNfc3RyKCkpOworCisg
ICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0YXJ0ID0gZW5jb2RlU3RyaW5nKCIiKTsKKyAgICBjb25z
dCBWZWN0b3I8Y2hhcj4ga2V5MSA9IGVuY29kZVN0cmluZygia2V5MSIpOworICAgIGNvbnN0IFZl
Y3RvcjxjaGFyPiB2YWx1ZTEgPSBlbmNvZGVTdHJpbmcoInZhbHVlMSIpOworICAgIGNvbnN0IFZl
Y3RvcjxjaGFyPiBrZXkyID0gZW5jb2RlU3RyaW5nKCJrZXkyIik7CisgICAgY29uc3QgVmVjdG9y
PGNoYXI+IHZhbHVlMiA9IGVuY29kZVN0cmluZygidmFsdWUyIik7CisKKyAgICBTaW1wbGVDb21w
YXJhdG9yIGNvbXBhcmF0b3I7CisgICAgYm9vbCBzdWNjZXNzOworCisgICAgT3duUHRyPExldmVs
REJEYXRhYmFzZT4gbGV2ZWxkYiA9IExldmVsREJEYXRhYmFzZTo6b3BlbihwYXRoLCAmY29tcGFy
YXRvcik7CisgICAgRVhQRUNUX1RSVUUobGV2ZWxkYik7CisKKyAgICBzdWNjZXNzID0gbGV2ZWxk
Yi0+cHV0KGtleTEsIHZhbHVlMSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgc3Vj
Y2VzcyA9IGxldmVsZGItPnB1dChrZXkyLCB2YWx1ZTIpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nl
c3MpOworCisgICAgUmVmUHRyPExldmVsREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBMZXZl
bERCVHJhbnNhY3Rpb246OmNyZWF0ZShsZXZlbGRiLmdldCgpKTsKKworICAgIHN1Y2Nlc3MgPSBs
ZXZlbGRiLT5yZW1vdmUoa2V5Mik7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisKKyAgICBP
d25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdCA9IHRyYW5zYWN0aW9uLT5jcmVhdGVJdGVyYXRvcigp
OworCisgICAgaXQtPnNlZWsoc3RhcnQpOworCisgICAgRVhQRUNUX1RSVUUoaXQtPmlzVmFsaWQo
KSk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShpdC0+a2V5KCksIGtleTEpLCAw
KTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKGl0LT52YWx1ZSgpLCB2YWx1ZTEp
LCAwKTsKKworICAgIGl0LT5uZXh0KCk7CisKKyAgICBFWFBFQ1RfVFJVRShpdC0+aXNWYWxpZCgp
KTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKGl0LT5rZXkoKSwga2V5MiksIDAp
OworICAgIEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUoaXQtPnZhbHVlKCksIHZhbHVlMiks
IDApOworCisgICAgaXQtPm5leHQoKTsKKworICAgIEVYUEVDVF9GQUxTRShpdC0+aXNWYWxpZCgp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmIC8vIFVTRShMRVZFTERCKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171957</attachid>
            <date>2012-11-01 17:14:31 -0700</date>
            <delta_ts>2012-11-05 13:25:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100786-20121101171252.patch</filename>
            <type>text/plain</type>
            <size>12666</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjVmYjEwYmYyN2JhYmUw
ZmZhM2Y0OGFmZjVkMmFkYTMyNjhjOTkzNi4uMTg4MzkxZmUxYmZkYzljYjhkNTQ4MWVkODk1MTZk
NTRkOGQxNThiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTExLTAxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXhwb3NlIHNuYXBzaG90
cyBpbiBwbGF0Zm9ybS9sZXZlbGRiIHdyYXBwZXIgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3ODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgbGV2ZWxkYiAic25hcHNob3RzIiBpbiB0
aGUgTGV2ZWxEQiBBUEkuIEEgc25hcHNob3QgbGV0cyB5b3Ugb2JzZXJ2ZSB0aGUgZGF0YWJhc2UK
KyAgICAgICAgYXMgaXQgd2FzIHdoZW4gdGhlIHNuYXBzaG90IHdhcyB0YWtlbi4gVGhpcyBjYW4g
YmUgdXNlZCB0byBpbXBsZW1lbnQgcGFyYWxsZWwgdHJhbnNhY3Rpb25zLAorICAgICAgICBlLmcu
IHdoZXJlIGEgcmVhZCB0cmFuc2FjdGlvbiB3b24ndCBzZWUgdXBkYXRlcyBtYWRlIGJ5IGEgbGF0
ZXIgd3JpdGUgdHJhbnNhY3Rpb24uCisKKyAgICAgICAgVGVzdHM6IHdlYmtpdF91bml0X3Rlc3Rz
IC0tZ3Rlc3RfZmlsdGVyPSdMZXZlbERCRGF0YWJhc2VUZXN0LlRyYW5zYWN0aW9uKicKKworICAg
ICAgICAqIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxldmVsREJTbmFwc2hvdDo6TGV2ZWxEQlNuYXBzaG90KTogTmV3IChidXQgZm9yIG5v
dyBpbnRlcm5hbC1vbmx5KSB3cmFwcGVyIHR5cGUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxldmVsREJTbmFwc2hvdDo6fkxldmVsREJTbmFwc2hvdCk6IFJlbGVhc2Ug
dGhlIGxldmVsZGI6OlNuYXBzaG90LgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQkRhdGFiYXNl
OjpnZXQpOiBPcHRpb25hbCBzbmFwc2hvdCBhcmd1bWVudCwgZm9yIHVzZSBieSB0cmFuc2FjdGlv
bnMuCisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCRGF0YWJhc2U6OmNyZWF0ZUl0ZXJhdG9yKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaDoKKyAg
ICAgICAgKGxldmVsZGIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMZXZlbERCU25h
cHNob3QpOgorICAgICAgICAoTGV2ZWxEQkRhdGFiYXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9s
ZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZXZlbERC
VHJhbnNhY3Rpb246OkxldmVsREJUcmFuc2FjdGlvbik6IEluaXRpYWxpemUgYSBzbmFwc2hvdC4K
KyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJUcmFuc2FjdGlvbjo6Z2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxldmVsREJUcmFuc2FjdGlvbjo6VHJhbnNhY3Rpb25JdGVyYXRvcjo6VHJhbnNhY3Rp
b25JdGVyYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rp
b24uaDoKKyAgICAgICAgKExldmVsREJUcmFuc2FjdGlvbik6CisKIDIwMTItMTEtMDEgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBCdWlsZCBm
aXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDBmYTdlMTFhYzE0OTZiZTRkZTQ4ZWI1
ODg0Yzk1ZWVkYjM3ODEwNDguLmNjMGNlMTJlNzI1YmY5MjA5MDBlNTk4NmJmN2YwYjI5NzAxMzdh
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTEt
MDEgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBFeHBvc2Ug
c25hcHNob3RzIGluIHBsYXRmb3JtL2xldmVsZGIgd3JhcHBlciBBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDc4NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB1bml0IHRlc3RzIGZvciB0cmFu
c2FjdGlvbnMvc25hcHNob3RzLgorCisgICAgICAgICogdGVzdHMvTGV2ZWxEQlRlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlU3RyaW5nKTogRG9uJ3QgYXBwZW5kIHRvIHByZS1zaXpl
ZCB2ZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKFdlYkNvcmUpOgor
CiAyMDEyLTExLTAxICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBBdm9pZCBhdHRlbXB0aW5nIHRvIGRlZmVyIGNvbW1pdHMgd2hlbiB0
aGV5IGFyZSBhbHJlYWR5IGRlZmVycmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAKaW5kZXggMjczYWZkNGRlYzFhYWU3MGJkMWFh
OTJiMDhlNjgwNGJiMjYzMDhjMi4uZWRmOWRiMjU3MmUzNThmN2I1Y2MzYTc1NDQ3MzBhZDQ3ZmNm
MzFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERC
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxE
QkRhdGFiYXNlLmNwcApAQCAtODksNiArODksMTcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBMZXZl
bERCQ29tcGFyYXRvciogbV9jb21wYXJhdG9yOwogfTsKIAorTGV2ZWxEQlNuYXBzaG90OjpMZXZl
bERCU25hcHNob3QoTGV2ZWxEQkRhdGFiYXNlKiBkYikKKyAgICA6IG1fZGIoZGItPm1fZGIuZ2V0
KCkpCisgICAgLCBtX3NuYXBzaG90KG1fZGItPkdldFNuYXBzaG90KCkpCit7Cit9CisKK0xldmVs
REJTbmFwc2hvdDo6fkxldmVsREJTbmFwc2hvdCgpCit7CisgICAgbV9kYi0+UmVsZWFzZVNuYXBz
aG90KG1fc25hcHNob3QpOworfQorCiBMZXZlbERCRGF0YWJhc2U6OkxldmVsREJEYXRhYmFzZSgp
CiB7CiB9CkBAIC0xODcsMTEgKzE5OCwxMiBAQCBib29sIExldmVsREJEYXRhYmFzZTo6cmVtb3Zl
KGNvbnN0IExldmVsREJTbGljZSYga2V5KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBM
ZXZlbERCRGF0YWJhc2U6OmdldChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgVmVjdG9yPGNoYXI+
JiB2YWx1ZSkKK2Jvb2wgTGV2ZWxEQkRhdGFiYXNlOjpnZXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBr
ZXksIFZlY3RvcjxjaGFyPiYgdmFsdWUsIGNvbnN0IExldmVsREJTbmFwc2hvdCogc25hcHNob3Qp
CiB7CiAgICAgc3RkOjpzdHJpbmcgcmVzdWx0OwogICAgIGxldmVsZGI6OlJlYWRPcHRpb25zIHJl
YWRPcHRpb25zOwogICAgIHJlYWRPcHRpb25zLnZlcmlmeV9jaGVja3N1bXMgPSB0cnVlOyAvLyBG
SVhNRTogRGlzYWJsZSB0aGlzIGlmIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3QgaXMgdG9vIGdyZWF0
LgorICAgIHJlYWRPcHRpb25zLnNuYXBzaG90ID0gc25hcHNob3QgPyBzbmFwc2hvdC0+bV9zbmFw
c2hvdCA6IDA7CiAKICAgICBjb25zdCBsZXZlbGRiOjpTdGF0dXMgcyA9IG1fZGItPkdldChyZWFk
T3B0aW9ucywgbWFrZVNsaWNlKGtleSksICZyZXN1bHQpOwogICAgIGlmIChzLm9rKCkpIHsKQEAg
LTI5MywxMCArMzA1LDExIEBAIExldmVsREJTbGljZSBJdGVyYXRvckltcGw6OnZhbHVlKCkgY29u
c3QKICAgICByZXR1cm4gbWFrZUxldmVsREJTbGljZShtX2l0ZXJhdG9yLT52YWx1ZSgpKTsKIH0K
IAotUGFzc093blB0cjxMZXZlbERCSXRlcmF0b3I+IExldmVsREJEYXRhYmFzZTo6Y3JlYXRlSXRl
cmF0b3IoKQorUGFzc093blB0cjxMZXZlbERCSXRlcmF0b3I+IExldmVsREJEYXRhYmFzZTo6Y3Jl
YXRlSXRlcmF0b3IoY29uc3QgTGV2ZWxEQlNuYXBzaG90KiBzbmFwc2hvdCkKIHsKICAgICBsZXZl
bGRiOjpSZWFkT3B0aW9ucyByZWFkT3B0aW9uczsKICAgICByZWFkT3B0aW9ucy52ZXJpZnlfY2hl
Y2tzdW1zID0gdHJ1ZTsgLy8gRklYTUU6IERpc2FibGUgdGhpcyBpZiB0aGUgcGVyZm9ybWFuY2Ug
aW1wYWN0IGlzIHRvbyBncmVhdC4KKyAgICByZWFkT3B0aW9ucy5zbmFwc2hvdCA9IHNuYXBzaG90
ID8gc25hcHNob3QtPm1fc25hcHNob3QgOiAwOwogICAgIE93blB0cjxsZXZlbGRiOjpJdGVyYXRv
cj4gaSA9IGFkb3B0UHRyKG1fZGItPk5ld0l0ZXJhdG9yKHJlYWRPcHRpb25zKSk7CiAgICAgaWYg
KCFpKSAvLyBGSVhNRTogRG91YmxlIGNoZWNrIGlmIHdlIGFjdHVhbGx5IG5lZWQgdG8gY2hlY2sg
dGhpcy4KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaAppbmRleCBlODBiNDlhMjRhYzc3ZDJmYzAz
ZjEwYWUzYjBkYjcwZjM2YTI2NzY5Li44MjAxYzA4YjBiMjQ1MGVlZDE0YTRjYTM2NTc3MGU3ZjVh
MmUwMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVs
REJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxE
QkRhdGFiYXNlLmgKQEAgLTM3LDE1ICszNywyOSBAQCBuYW1lc3BhY2UgbGV2ZWxkYiB7CiBjbGFz
cyBDb21wYXJhdG9yOwogY2xhc3MgREI7CiBjbGFzcyBFbnY7CitjbGFzcyBTbmFwc2hvdDsKIH0K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBMZXZlbERCRGF0YWJhc2U7CiBjbGFzcyBM
ZXZlbERCQ29tcGFyYXRvcjsKIGNsYXNzIExldmVsREJJdGVyYXRvcjsKIGNsYXNzIExldmVsREJT
bGljZTsKIGNsYXNzIExldmVsREJXcml0ZUJhdGNoOwogCitjbGFzcyBMZXZlbERCU25hcHNob3Qg
eworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTGV2ZWxEQkRhdGFiYXNlOworICAgIGZyaWVu
ZCBjbGFzcyBMZXZlbERCVHJhbnNhY3Rpb247CisKKyAgICBMZXZlbERCU25hcHNob3QoTGV2ZWxE
QkRhdGFiYXNlKik7CisgICAgfkxldmVsREJTbmFwc2hvdCgpOworCisgICAgbGV2ZWxkYjo6REIq
IG1fZGI7CisgICAgY29uc3QgbGV2ZWxkYjo6U25hcHNob3QqIG1fc25hcHNob3Q7Cit9OworCiBj
bGFzcyBMZXZlbERCRGF0YWJhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPExl
dmVsREJEYXRhYmFzZT4gb3Blbihjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBMZXZlbERC
Q29tcGFyYXRvciopOwpAQCAtNTUsMTIgKzY5LDEzIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcHV0
KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlKTsKICAg
ICBib29sIHJlbW92ZShjb25zdCBMZXZlbERCU2xpY2UmIGtleSk7Ci0gICAgYm9vbCBnZXQoY29u
c3QgTGV2ZWxEQlNsaWNlJiBrZXksIFZlY3RvcjxjaGFyPiYgdmFsdWUpOworICAgIGJvb2wgZ2V0
KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBWZWN0b3I8Y2hhcj4mIHZhbHVlLCBjb25zdCBMZXZl
bERCU25hcHNob3QqID0gMCk7CiAgICAgYm9vbCB3cml0ZShMZXZlbERCV3JpdGVCYXRjaCYpOwot
ICAgIFBhc3NPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBjcmVhdGVJdGVyYXRvcigpOworICAgIFBh
c3NPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBjcmVhdGVJdGVyYXRvcihjb25zdCBMZXZlbERCU25h
cHNob3QqID0gMCk7CiAgICAgY29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqIGNvbXBhcmF0b3IoKSBj
b25zdDsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTGV2ZWxEQlNuYXBzaG90OwogICAg
IExldmVsREJEYXRhYmFzZSgpOwogCiAgICAgT3duUHRyPGxldmVsZGI6OkVudj4gbV9lbnY7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2Fj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2Fj
dGlvbi5jcHAKaW5kZXggOGZlM2ZkMDhlZGIyNzliY2UzODQ1MGQ1YzdiOWJiYTAxNzQ3NTk1My4u
N2ZlMGJhOGI2NDdjNTliYWFhMWUwNWE4MzAwYjRiMDg4M2ZiNjkxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcApA
QCAtMjYsMTIgKzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGV2ZWxE
QlRyYW5zYWN0aW9uLmgiCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNpZiBVU0Uo
TEVWRUxEQikKKwogI2luY2x1ZGUgIkxldmVsREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkxldmVs
REJTbGljZS5oIgogI2luY2x1ZGUgIkxldmVsREJXcml0ZUJhdGNoLmgiCi0KLSNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKLSNpZiBVU0UoTEVWRUxEQikKKyNpbmNsdWRlIDxsZXZlbGRiL2Ri
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsNiArNDMsNyBAQCBQYXNzUmVmUHRy
PExldmVsREJUcmFuc2FjdGlvbj4gTGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUoTGV2ZWxEQkRh
dGFiYXNlKiBkYikKIAogTGV2ZWxEQlRyYW5zYWN0aW9uOjpMZXZlbERCVHJhbnNhY3Rpb24oTGV2
ZWxEQkRhdGFiYXNlKiBkYikKICAgICA6IG1fZGIoZGIpCisgICAgLCBtX3NuYXBzaG90KGRiKQog
ICAgICwgbV9jb21wYXJhdG9yKGRiLT5jb21wYXJhdG9yKCkpCiAgICAgLCBtX2ZpbmlzaGVkKGZh
bHNlKQogewpAQCAtMTE5LDcgKzEyMSw3IEBAIGJvb2wgTGV2ZWxEQlRyYW5zYWN0aW9uOjpnZXQo
Y29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIFZlY3RvcjxjaGFyPiYgdmFsdWUpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAotICAgIHJldHVybiBtX2RiLT5nZXQoa2V5LCB2YWx1ZSk7Cisg
ICAgcmV0dXJuIG1fZGItPmdldChrZXksIHZhbHVlLCAmbV9zbmFwc2hvdCk7CiB9CiAKIGJvb2wg
TGV2ZWxEQlRyYW5zYWN0aW9uOjpjb21taXQoKQpAQCAtMjU4LDcgKzI2MCw3IEBAIExldmVsREJU
cmFuc2FjdGlvbjo6VHJhbnNhY3Rpb25JdGVyYXRvcjo6VHJhbnNhY3Rpb25JdGVyYXRvcihQYXNz
UmVmUHRyPExldmVsREJUCiAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICwg
bV9jb21wYXJhdG9yKG1fdHJhbnNhY3Rpb24tPm1fY29tcGFyYXRvcikKICAgICAsIG1fdHJlZUl0
ZXJhdG9yKFRyZWVJdGVyYXRvcjo6Y3JlYXRlKG1fdHJhbnNhY3Rpb24uZ2V0KCkpKQotICAgICwg
bV9kYkl0ZXJhdG9yKG1fdHJhbnNhY3Rpb24tPm1fZGItPmNyZWF0ZUl0ZXJhdG9yKCkpCisgICAg
LCBtX2RiSXRlcmF0b3IobV90cmFuc2FjdGlvbi0+bV9kYi0+Y3JlYXRlSXRlcmF0b3IoJm1fdHJh
bnNhY3Rpb24tPm1fc25hcHNob3QpKQogICAgICwgbV9jdXJyZW50KDApCiAgICAgLCBtX2RpcmVj
dGlvbihrRm9yd2FyZCkKICAgICAsIG1fdHJlZUNoYW5nZWQoZmFsc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uaAppbmRleCA4
MGEzMzVkNDdhMDEwYWY0ZDM4MmE1ZjE1YTE5NDU5MTczNzQ0ZjVmLi4wZTYwOTdjNDNlMGFlM2Nk
ZTQzNDcwMjdiOGM5MjJmMzlkZmYzYmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
ZiBVU0UoTEVWRUxEQikKIAogI2luY2x1ZGUgIkxldmVsREJDb21wYXJhdG9yLmgiCisjaW5jbHVk
ZSAiTGV2ZWxEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQkl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiTGV2ZWxEQlNsaWNlLmgiCiAjaW5jbHVkZSA8d3RmL0FWTFRyZWUuaD4KQEAgLTQyLDcg
KzQzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBMZXZlbERCRGF0YWJhc2U7
CiBjbGFzcyBMZXZlbERCV3JpdGVCYXRjaDsKIAogdXNpbmcgV1RGOjpBVkxUcmVlOwpAQCAtMTY0
LDYgKzE2NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlJdGVyYXRvcnNPZlRyZWVDaGFu
Z2UoKTsKIAogICAgIExldmVsREJEYXRhYmFzZSogbV9kYjsKKyAgICBMZXZlbERCU25hcHNob3Qg
bV9zbmFwc2hvdDsKICAgICBjb25zdCBMZXZlbERCQ29tcGFyYXRvciogbV9jb21wYXJhdG9yOwog
ICAgIFRyZWVUeXBlIG1fdHJlZTsKICAgICBib29sIG1fZmluaXNoZWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xldmVsREJUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTGV2ZWxEQlRlc3QuY3BwCmluZGV4IDJhMDBhZTY4NjFjMDBlOTA1
ZTQzZjg1MDRhNTA1MTJjNTMxYWViYWQuLjdkYzAzNTVkZmU5MzVmMzkzMzE0NTBlZTY5NjYyOTc3
MmVjYzJmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGV2ZWxE
QlRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGV2ZWxEQlRlc3Qu
Y3BwCkBAIC0zMCw3ICszMCw5IEBACiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUg
IkxldmVsREJDb21wYXJhdG9yLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQkRhdGFiYXNlLmgiCisjaW5j
bHVkZSAiTGV2ZWxEQkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQlNsaWNlLmgiCisjaW5j
bHVkZSAiTGV2ZWxEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNp
bmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KQEAgLTUzLDcgKzU1LDcgQEAgVmVjdG9yPGNoYXI+IGVuY29kZVN0cmluZyhjb25z
dCBzdGQ6OnN0cmluZyYgcykKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0KHMuc2l6ZSgpKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHJldC5hcHBl
bmQoc1tpXSk7CisgICAgICAgIHJldFtpXSA9IHNbaV07CiAgICAgcmV0dXJuIHJldDsKIH0KIApA
QCAtMTAwLDYgKzEwMiw5NyBAQCBURVNUKExldmVsREJEYXRhYmFzZVRlc3QsIENvcnJ1cHRpb25U
ZXN0KQogICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKIH0KIAorVEVTVChMZXZlbERCRGF0YWJh
c2VUZXN0LCBUcmFuc2FjdGlvbikKK3sKKyAgICBPd25QdHI8d2Via2l0X3N1cHBvcnQ6OlNjb3Bl
ZFRlbXBEaXJlY3Rvcnk+IHRlbXBEaXJlY3RvcnkgPSBhZG9wdFB0cih3ZWJraXRfc3VwcG9ydDo6
Q3JlYXRlU2NvcGVkVGVtcERpcmVjdG9yeSgpKTsKKyAgICB0ZW1wRGlyZWN0b3J5LT5DcmVhdGVV
bmlxdWVUZW1wRGlyKCk7CisgICAgY29uc3QgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4
KHRlbXBEaXJlY3RvcnktPnBhdGgoKS5jX3N0cigpKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFy
PiBrZXkgPSBlbmNvZGVTdHJpbmcoImtleSIpOworICAgIFZlY3RvcjxjaGFyPiBnb3RWYWx1ZTsK
KyAgICBTaW1wbGVDb21wYXJhdG9yIGNvbXBhcmF0b3I7CisKKyAgICBPd25QdHI8TGV2ZWxEQkRh
dGFiYXNlPiBsZXZlbGRiID0gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuKHBhdGgsICZjb21wYXJhdG9y
KTsKKyAgICBFWFBFQ1RfVFJVRShsZXZlbGRiKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBv
bGRWYWx1ZSA9IGVuY29kZVN0cmluZygidmFsdWUiKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBsZXZl
bGRiLT5wdXQoa2V5LCBvbGRWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisKKyAg
ICBSZWZQdHI8TGV2ZWxEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IExldmVsREJUcmFuc2Fj
dGlvbjo6Y3JlYXRlKGxldmVsZGIuZ2V0KCkpOworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+IG5l
d1ZhbHVlID0gZW5jb2RlU3RyaW5nKCJuZXcgdmFsdWUiKTsKKyAgICBzdWNjZXNzID0gbGV2ZWxk
Yi0+cHV0KGtleSwgbmV3VmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworCisgICAg
c3VjY2VzcyA9IHRyYW5zYWN0aW9uLT5nZXQoa2V5LCBnb3RWYWx1ZSk7CisgICAgRVhQRUNUX1RS
VUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShnb3RWYWx1ZSwg
b2xkVmFsdWUpLCAwKTsKKworICAgIHN1Y2Nlc3MgPSBsZXZlbGRiLT5nZXQoa2V5LCBnb3RWYWx1
ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3Iu
Y29tcGFyZShnb3RWYWx1ZSwgbmV3VmFsdWUpLCAwKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFy
PiBhZGRlZEtleSA9IGVuY29kZVN0cmluZygiYWRkZWQga2V5Iik7CisgICAgY29uc3QgVmVjdG9y
PGNoYXI+IGFkZGVkVmFsdWUgPSBlbmNvZGVTdHJpbmcoImFkZGVkIHZhbHVlIik7CisgICAgc3Vj
Y2VzcyA9IGxldmVsZGItPnB1dChhZGRlZEtleSwgYWRkZWRWYWx1ZSk7CisgICAgRVhQRUNUX1RS
VUUoc3VjY2Vzcyk7CisKKyAgICBzdWNjZXNzID0gbGV2ZWxkYi0+Z2V0KGFkZGVkS2V5LCBnb3RW
YWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0
b3IuY29tcGFyZShnb3RWYWx1ZSwgYWRkZWRWYWx1ZSksIDApOworCisgICAgc3VjY2VzcyA9IHRy
YW5zYWN0aW9uLT5nZXQoYWRkZWRLZXksIGdvdFZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3Vj
Y2Vzcyk7Cit9CisKK1RFU1QoTGV2ZWxEQkRhdGFiYXNlVGVzdCwgVHJhbnNhY3Rpb25JdGVyYXRv
cikKK3sKKyAgICBPd25QdHI8d2Via2l0X3N1cHBvcnQ6OlNjb3BlZFRlbXBEaXJlY3Rvcnk+IHRl
bXBEaXJlY3RvcnkgPSBhZG9wdFB0cih3ZWJraXRfc3VwcG9ydDo6Q3JlYXRlU2NvcGVkVGVtcERp
cmVjdG9yeSgpKTsKKyAgICB0ZW1wRGlyZWN0b3J5LT5DcmVhdGVVbmlxdWVUZW1wRGlyKCk7Cisg
ICAgY29uc3QgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KHRlbXBEaXJlY3RvcnktPnBh
dGgoKS5jX3N0cigpKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydCA9IGVuY29kZVN0
cmluZygiIik7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleTEgPSBlbmNvZGVTdHJpbmcoImtl
eTEiKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gdmFsdWUxID0gZW5jb2RlU3RyaW5nKCJ2YWx1
ZTEiKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5MiA9IGVuY29kZVN0cmluZygia2V5MiIp
OworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiB2YWx1ZTIgPSBlbmNvZGVTdHJpbmcoInZhbHVlMiIp
OworCisgICAgU2ltcGxlQ29tcGFyYXRvciBjb21wYXJhdG9yOworICAgIGJvb2wgc3VjY2VzczsK
KworICAgIE93blB0cjxMZXZlbERCRGF0YWJhc2U+IGxldmVsZGIgPSBMZXZlbERCRGF0YWJhc2U6
Om9wZW4ocGF0aCwgJmNvbXBhcmF0b3IpOworICAgIEVYUEVDVF9UUlVFKGxldmVsZGIpOworCisg
ICAgc3VjY2VzcyA9IGxldmVsZGItPnB1dChrZXkxLCB2YWx1ZTEpOworICAgIEVYUEVDVF9UUlVF
KHN1Y2Nlc3MpOworICAgIHN1Y2Nlc3MgPSBsZXZlbGRiLT5wdXQoa2V5MiwgdmFsdWUyKTsKKyAg
ICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKworICAgIFJlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+
IHRyYW5zYWN0aW9uID0gTGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUobGV2ZWxkYi5nZXQoKSk7
CisKKyAgICBzdWNjZXNzID0gbGV2ZWxkYi0+cmVtb3ZlKGtleTIpOworICAgIEVYUEVDVF9UUlVF
KHN1Y2Nlc3MpOworCisgICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gaXQgPSB0cmFuc2FjdGlv
bi0+Y3JlYXRlSXRlcmF0b3IoKTsKKworICAgIGl0LT5zZWVrKHN0YXJ0KTsKKworICAgIEVYUEVD
VF9UUlVFKGl0LT5pc1ZhbGlkKCkpOworICAgIEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUo
aXQtPmtleSgpLCBrZXkxKSwgMCk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShp
dC0+dmFsdWUoKSwgdmFsdWUxKSwgMCk7CisKKyAgICBpdC0+bmV4dCgpOworCisgICAgRVhQRUNU
X1RSVUUoaXQtPmlzVmFsaWQoKSk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShp
dC0+a2V5KCksIGtleTIpLCAwKTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKGl0
LT52YWx1ZSgpLCB2YWx1ZTIpLCAwKTsKKworICAgIGl0LT5uZXh0KCk7CisKKyAgICBFWFBFQ1Rf
RkFMU0UoaXQtPmlzVmFsaWQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZiAvLyBV
U0UoTEVWRUxEQikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172387</attachid>
            <date>2012-11-05 13:25:07 -0800</date>
            <delta_ts>2012-11-07 10:35:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100786-20121105132322.patch</filename>
            <type>text/plain</type>
            <size>12712</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFlNjZiYTA0M2YzMjc5
NjljOTcxZTkyOWQzNTBiNmQwMjE5MDg5Ny4uZTM1NDllYzBjYjk3MzRhMjRlMGZjODg2MzEwN2Ni
Y2VlOGI2YzQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTExLTAxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXhwb3NlIHNuYXBzaG90
cyBpbiBwbGF0Zm9ybS9sZXZlbGRiIHdyYXBwZXIgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3ODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgbGV2ZWxkYiAic25hcHNob3RzIiBpbiB0
aGUgTGV2ZWxEQiBBUEkuIEEgc25hcHNob3QgbGV0cyB5b3Ugb2JzZXJ2ZSB0aGUgZGF0YWJhc2UK
KyAgICAgICAgYXMgaXQgd2FzIHdoZW4gdGhlIHNuYXBzaG90IHdhcyB0YWtlbi4gVGhpcyBjYW4g
YmUgdXNlZCB0byBpbXBsZW1lbnQgcGFyYWxsZWwgdHJhbnNhY3Rpb25zLAorICAgICAgICBlLmcu
IHdoZXJlIGEgcmVhZCB0cmFuc2FjdGlvbiB3b24ndCBzZWUgdXBkYXRlcyBtYWRlIGJ5IGEgbGF0
ZXIgd3JpdGUgdHJhbnNhY3Rpb24uCisKKyAgICAgICAgVGVzdHM6IHdlYmtpdF91bml0X3Rlc3Rz
IC0tZ3Rlc3RfZmlsdGVyPSdMZXZlbERCRGF0YWJhc2VUZXN0LlRyYW5zYWN0aW9uKicKKworICAg
ICAgICAqIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxldmVsREJTbmFwc2hvdDo6TGV2ZWxEQlNuYXBzaG90KTogTmV3IChidXQgZm9yIG5v
dyBpbnRlcm5hbC1vbmx5KSB3cmFwcGVyIHR5cGUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxldmVsREJTbmFwc2hvdDo6fkxldmVsREJTbmFwc2hvdCk6IFJlbGVhc2Ug
dGhlIGxldmVsZGI6OlNuYXBzaG90LgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQkRhdGFiYXNl
OjpnZXQpOiBPcHRpb25hbCBzbmFwc2hvdCBhcmd1bWVudCwgZm9yIHVzZSBieSB0cmFuc2FjdGlv
bnMuCisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCRGF0YWJhc2U6OmNyZWF0ZUl0ZXJhdG9yKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaDoKKyAg
ICAgICAgKGxldmVsZGIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMZXZlbERCU25h
cHNob3QpOgorICAgICAgICAoTGV2ZWxEQkRhdGFiYXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9s
ZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZXZlbERC
VHJhbnNhY3Rpb246OkxldmVsREJUcmFuc2FjdGlvbik6IEluaXRpYWxpemUgYSBzbmFwc2hvdC4K
KyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJUcmFuc2FjdGlvbjo6Z2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxldmVsREJUcmFuc2FjdGlvbjo6VHJhbnNhY3Rpb25JdGVyYXRvcjo6VHJhbnNhY3Rp
b25JdGVyYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rp
b24uaDoKKyAgICAgICAgKExldmVsREJUcmFuc2FjdGlvbik6CisKIDIwMTItMTEtMDIgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBhIGNvbW1vbiBiYXNl
IGNsYXNzIGZvciBkYXRlL3RpbWUgaW5wdXQgdHlwZXMgd2l0aG91dCBpbmxpbmUgZWRpdGluZyBi
ZWhhdmlvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmODc2NjQ4Y2FhNmYzNTM0NmRl
NWMxOWViZDZmYzI3OGNhODUwNDJjLi4xNmU0N2ViMjViNGFjNDFhOGFjNDFmZTI5Yzc1NGZiNGVl
MWU1NmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEy
LTExLTAxICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXhw
b3NlIHNuYXBzaG90cyBpbiBwbGF0Zm9ybS9sZXZlbGRiIHdyYXBwZXIgQVBJCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3ODYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdW5pdCB0ZXN0cyBmb3Ig
dHJhbnNhY3Rpb25zL3NuYXBzaG90cy4KKworICAgICAgICAqIHRlc3RzL0xldmVsREJUZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZVN0cmluZyk6IERvbid0IGFwcGVuZCB0byBwcmUt
c2l6ZWQgdmVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgIChXZWJDb3Jl
KToKKwogMjAxMi0xMS0wMSAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgSW5kZXhlZERCOiBhZGQgbWV0aG9kcyB0byBzdXBwb3J0IGlkLWJhc2VkIGJhY2tl
bmQgQVBJcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZl
bERCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERC
RGF0YWJhc2UuY3BwCmluZGV4IDI3M2FmZDRkZWMxYWFlNzBiZDFhYTkyYjA4ZTY4MDRiYjI2MzA4
YzIuLmVkZjlkYjI1NzJlMzU4ZjdiNWNjM2E3NTQ0NzMwYWQ0N2ZjZjMxZDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAKQEAg
LTg5LDYgKzg5LDE3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqIG1f
Y29tcGFyYXRvcjsKIH07CiAKK0xldmVsREJTbmFwc2hvdDo6TGV2ZWxEQlNuYXBzaG90KExldmVs
REJEYXRhYmFzZSogZGIpCisgICAgOiBtX2RiKGRiLT5tX2RiLmdldCgpKQorICAgICwgbV9zbmFw
c2hvdChtX2RiLT5HZXRTbmFwc2hvdCgpKQoreworfQorCitMZXZlbERCU25hcHNob3Q6On5MZXZl
bERCU25hcHNob3QoKQoreworICAgIG1fZGItPlJlbGVhc2VTbmFwc2hvdChtX3NuYXBzaG90KTsK
K30KKwogTGV2ZWxEQkRhdGFiYXNlOjpMZXZlbERCRGF0YWJhc2UoKQogewogfQpAQCAtMTg3LDEx
ICsxOTgsMTIgQEAgYm9vbCBMZXZlbERCRGF0YWJhc2U6OnJlbW92ZShjb25zdCBMZXZlbERCU2xp
Y2UmIGtleSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgTGV2ZWxEQkRhdGFiYXNlOjpn
ZXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIFZlY3RvcjxjaGFyPiYgdmFsdWUpCitib29sIExl
dmVsREJEYXRhYmFzZTo6Z2V0KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBWZWN0b3I8Y2hhcj4m
IHZhbHVlLCBjb25zdCBMZXZlbERCU25hcHNob3QqIHNuYXBzaG90KQogewogICAgIHN0ZDo6c3Ry
aW5nIHJlc3VsdDsKICAgICBsZXZlbGRiOjpSZWFkT3B0aW9ucyByZWFkT3B0aW9uczsKICAgICBy
ZWFkT3B0aW9ucy52ZXJpZnlfY2hlY2tzdW1zID0gdHJ1ZTsgLy8gRklYTUU6IERpc2FibGUgdGhp
cyBpZiB0aGUgcGVyZm9ybWFuY2UgaW1wYWN0IGlzIHRvbyBncmVhdC4KKyAgICByZWFkT3B0aW9u
cy5zbmFwc2hvdCA9IHNuYXBzaG90ID8gc25hcHNob3QtPm1fc25hcHNob3QgOiAwOwogCiAgICAg
Y29uc3QgbGV2ZWxkYjo6U3RhdHVzIHMgPSBtX2RiLT5HZXQocmVhZE9wdGlvbnMsIG1ha2VTbGlj
ZShrZXkpLCAmcmVzdWx0KTsKICAgICBpZiAocy5vaygpKSB7CkBAIC0yOTMsMTAgKzMwNSwxMSBA
QCBMZXZlbERCU2xpY2UgSXRlcmF0b3JJbXBsOjp2YWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1h
a2VMZXZlbERCU2xpY2UobV9pdGVyYXRvci0+dmFsdWUoKSk7CiB9CiAKLVBhc3NPd25QdHI8TGV2
ZWxEQkl0ZXJhdG9yPiBMZXZlbERCRGF0YWJhc2U6OmNyZWF0ZUl0ZXJhdG9yKCkKK1Bhc3NPd25Q
dHI8TGV2ZWxEQkl0ZXJhdG9yPiBMZXZlbERCRGF0YWJhc2U6OmNyZWF0ZUl0ZXJhdG9yKGNvbnN0
IExldmVsREJTbmFwc2hvdCogc25hcHNob3QpCiB7CiAgICAgbGV2ZWxkYjo6UmVhZE9wdGlvbnMg
cmVhZE9wdGlvbnM7CiAgICAgcmVhZE9wdGlvbnMudmVyaWZ5X2NoZWNrc3VtcyA9IHRydWU7IC8v
IEZJWE1FOiBEaXNhYmxlIHRoaXMgaWYgdGhlIHBlcmZvcm1hbmNlIGltcGFjdCBpcyB0b28gZ3Jl
YXQuCisgICAgcmVhZE9wdGlvbnMuc25hcHNob3QgPSBzbmFwc2hvdCA/IHNuYXBzaG90LT5tX3Nu
YXBzaG90IDogMDsKICAgICBPd25QdHI8bGV2ZWxkYjo6SXRlcmF0b3I+IGkgPSBhZG9wdFB0ciht
X2RiLT5OZXdJdGVyYXRvcihyZWFkT3B0aW9ucykpOwogICAgIGlmICghaSkgLy8gRklYTUU6IERv
dWJsZSBjaGVjayBpZiB3ZSBhY3R1YWxseSBuZWVkIHRvIGNoZWNrIHRoaXMuCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxk
Yi9MZXZlbERCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2
ZWxEQkRhdGFiYXNlLmgKaW5kZXggZTgwYjQ5YTI0YWM3N2QyZmMwM2YxMGFlM2IwZGI3MGYzNmEy
Njc2OS4uODIwMWMwOGIwYjI0NTBlZWQxNGE0Y2EzNjU3NzBlN2Y1YTJlMDI5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5oCkBAIC0z
NywxNSArMzcsMjkgQEAgbmFtZXNwYWNlIGxldmVsZGIgewogY2xhc3MgQ29tcGFyYXRvcjsKIGNs
YXNzIERCOwogY2xhc3MgRW52OworY2xhc3MgU25hcHNob3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgTGV2ZWxEQkRhdGFiYXNlOwogY2xhc3MgTGV2ZWxEQkNvbXBhcmF0b3I7
CiBjbGFzcyBMZXZlbERCSXRlcmF0b3I7CiBjbGFzcyBMZXZlbERCU2xpY2U7CiBjbGFzcyBMZXZl
bERCV3JpdGVCYXRjaDsKIAorY2xhc3MgTGV2ZWxEQlNuYXBzaG90IHsKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIExldmVsREJEYXRhYmFzZTsKKyAgICBmcmllbmQgY2xhc3MgTGV2ZWxEQlRy
YW5zYWN0aW9uOworCisgICAgTGV2ZWxEQlNuYXBzaG90KExldmVsREJEYXRhYmFzZSopOworICAg
IH5MZXZlbERCU25hcHNob3QoKTsKKworICAgIGxldmVsZGI6OkRCKiBtX2RiOworICAgIGNvbnN0
IGxldmVsZGI6OlNuYXBzaG90KiBtX3NuYXBzaG90OworfTsKKwogY2xhc3MgTGV2ZWxEQkRhdGFi
YXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxMZXZlbERCRGF0YWJhc2U+IG9w
ZW4oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqKTsKQEAg
LTU1LDEyICs2OSwxMyBAQCBwdWJsaWM6CiAKICAgICBib29sIHB1dChjb25zdCBMZXZlbERCU2xp
Y2UmIGtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2YWx1ZSk7CiAgICAgYm9vbCByZW1vdmUoY29u
c3QgTGV2ZWxEQlNsaWNlJiBrZXkpOwotICAgIGJvb2wgZ2V0KGNvbnN0IExldmVsREJTbGljZSYg
a2V5LCBWZWN0b3I8Y2hhcj4mIHZhbHVlKTsKKyAgICBib29sIGdldChjb25zdCBMZXZlbERCU2xp
Y2UmIGtleSwgVmVjdG9yPGNoYXI+JiB2YWx1ZSwgY29uc3QgTGV2ZWxEQlNuYXBzaG90KiA9IDAp
OwogICAgIGJvb2wgd3JpdGUoTGV2ZWxEQldyaXRlQmF0Y2gmKTsKLSAgICBQYXNzT3duUHRyPExl
dmVsREJJdGVyYXRvcj4gY3JlYXRlSXRlcmF0b3IoKTsKKyAgICBQYXNzT3duUHRyPExldmVsREJJ
dGVyYXRvcj4gY3JlYXRlSXRlcmF0b3IoY29uc3QgTGV2ZWxEQlNuYXBzaG90KiA9IDApOwogICAg
IGNvbnN0IExldmVsREJDb21wYXJhdG9yKiBjb21wYXJhdG9yKCkgY29uc3Q7CiAKIHByaXZhdGU6
CisgICAgZnJpZW5kIGNsYXNzIExldmVsREJTbmFwc2hvdDsKICAgICBMZXZlbERCRGF0YWJhc2Uo
KTsKIAogICAgIE93blB0cjxsZXZlbGRiOjpFbnY+IG1fZW52OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDhm
ZTNmZDA4ZWRiMjc5YmNlMzg0NTBkNWM3YjliYmEwMTc0NzU5NTMuLjdmZTBiYThiNjQ3YzU5YmFh
YTFlMDVhODMwMGI0YjA4ODNmYjY5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHAKQEAgLTI2LDEyICsyNiwxMyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxldmVsREJUcmFuc2FjdGlvbi5oIgog
CisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisjaWYgVVNFKExFVkVMREIpCisKICNpbmNs
dWRlICJMZXZlbERCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJMZXZlbERCU2xpY2UuaCIKICNpbmNs
dWRlICJMZXZlbERCV3JpdGVCYXRjaC5oIgotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
Ci0jaWYgVVNFKExFVkVMREIpCisjaW5jbHVkZSA8bGV2ZWxkYi9kYi5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTQyLDYgKzQzLDcgQEAgUGFzc1JlZlB0cjxMZXZlbERCVHJhbnNhY3Rp
b24+IExldmVsREJUcmFuc2FjdGlvbjo6Y3JlYXRlKExldmVsREJEYXRhYmFzZSogZGIpCiAKIExl
dmVsREJUcmFuc2FjdGlvbjo6TGV2ZWxEQlRyYW5zYWN0aW9uKExldmVsREJEYXRhYmFzZSogZGIp
CiAgICAgOiBtX2RiKGRiKQorICAgICwgbV9zbmFwc2hvdChkYikKICAgICAsIG1fY29tcGFyYXRv
cihkYi0+Y29tcGFyYXRvcigpKQogICAgICwgbV9maW5pc2hlZChmYWxzZSkKIHsKQEAgLTExOSw3
ICsxMjEsNyBAQCBib29sIExldmVsREJUcmFuc2FjdGlvbjo6Z2V0KGNvbnN0IExldmVsREJTbGlj
ZSYga2V5LCBWZWN0b3I8Y2hhcj4mIHZhbHVlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKLSAgICByZXR1cm4gbV9kYi0+Z2V0KGtleSwgdmFsdWUpOworICAgIHJldHVybiBtX2RiLT5n
ZXQoa2V5LCB2YWx1ZSwgJm1fc25hcHNob3QpOwogfQogCiBib29sIExldmVsREJUcmFuc2FjdGlv
bjo6Y29tbWl0KCkKQEAgLTI1OCw3ICsyNjAsNyBAQCBMZXZlbERCVHJhbnNhY3Rpb246OlRyYW5z
YWN0aW9uSXRlcmF0b3I6OlRyYW5zYWN0aW9uSXRlcmF0b3IoUGFzc1JlZlB0cjxMZXZlbERCVAog
ICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2FjdGlvbikKICAgICAsIG1fY29tcGFyYXRvcihtX3Ry
YW5zYWN0aW9uLT5tX2NvbXBhcmF0b3IpCiAgICAgLCBtX3RyZWVJdGVyYXRvcihUcmVlSXRlcmF0
b3I6OmNyZWF0ZShtX3RyYW5zYWN0aW9uLmdldCgpKSkKLSAgICAsIG1fZGJJdGVyYXRvcihtX3Ry
YW5zYWN0aW9uLT5tX2RiLT5jcmVhdGVJdGVyYXRvcigpKQorICAgICwgbV9kYkl0ZXJhdG9yKG1f
dHJhbnNhY3Rpb24tPm1fZGItPmNyZWF0ZUl0ZXJhdG9yKCZtX3RyYW5zYWN0aW9uLT5tX3NuYXBz
aG90KSkKICAgICAsIG1fY3VycmVudCgwKQogICAgICwgbV9kaXJlY3Rpb24oa0ZvcndhcmQpCiAg
ICAgLCBtX3RyZWVDaGFuZ2VkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmgKaW5kZXggODBhMzM1ZDQ3YTAxMGFmNGQz
ODJhNWYxNWExOTQ1OTE3Mzc0NGY1Zi4uYjNkYzY4NDRjNjExOWM2NjA1NzQ0MWNmZTVkODFiYTE3
ZWU1NWY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZl
bERCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xl
dmVsREJUcmFuc2FjdGlvbi5oCkBAIC0zMCw2ICszMCw3IEBACiAjaWYgVVNFKExFVkVMREIpCiAK
ICNpbmNsdWRlICJMZXZlbERCQ29tcGFyYXRvci5oIgorI2luY2x1ZGUgIkxldmVsREJEYXRhYmFz
ZS5oIgogI2luY2x1ZGUgIkxldmVsREJJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxldmVsREJTbGlj
ZS5oIgogI2luY2x1ZGUgPHd0Zi9BVkxUcmVlLmg+CkBAIC00Miw3ICs0Myw2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTGV2ZWxEQkRhdGFiYXNlOwogY2xhc3MgTGV2ZWxEQldy
aXRlQmF0Y2g7CiAKIHVzaW5nIFdURjo6QVZMVHJlZTsKQEAgLTE2NCw2ICsxNjQsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgbm90aWZ5SXRlcmF0b3JzT2ZUcmVlQ2hhbmdlKCk7CiAKICAgICBMZXZl
bERCRGF0YWJhc2UqIG1fZGI7CisgICAgY29uc3QgTGV2ZWxEQlNuYXBzaG90IG1fc25hcHNob3Q7
CiAgICAgY29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqIG1fY29tcGFyYXRvcjsKICAgICBUcmVlVHlw
ZSBtX3RyZWU7CiAgICAgYm9vbCBtX2ZpbmlzaGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9MZXZlbERCVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0xldmVsREJUZXN0LmNwcAppbmRleCAyYTAwYWU2ODYxYzAwZTkwNWU0M2Y4NTA0YTUw
NTEyYzUzMWFlYmFkLi43ZGMwMzU1ZGZlOTM1ZjM5MzMxNDUwZWU2OTY2Mjk3NzJlY2MyZjI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xldmVsREJUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xldmVsREJUZXN0LmNwcApAQCAtMzAs
NyArMzAsOSBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMZXZlbERCQ29t
cGFyYXRvci5oIgogI2luY2x1ZGUgIkxldmVsREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkxldmVs
REJJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxldmVsREJTbGljZS5oIgorI2luY2x1ZGUgIkxldmVs
REJUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVkZSA8d2Vi
a2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBA
IC01Myw3ICs1NSw3IEBAIFZlY3RvcjxjaGFyPiBlbmNvZGVTdHJpbmcoY29uc3Qgc3RkOjpzdHJp
bmcmIHMpCiB7CiAgICAgVmVjdG9yPGNoYXI+IHJldChzLnNpemUoKSk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzLnNpemUoKTsgKytpKQotICAgICAgICByZXQuYXBwZW5kKHNbaV0pOwor
ICAgICAgICByZXRbaV0gPSBzW2ldOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTEwMCw2ICsx
MDIsOTcgQEAgVEVTVChMZXZlbERCRGF0YWJhc2VUZXN0LCBDb3JydXB0aW9uVGVzdCkKICAgICBF
WFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7CiB9CiAKK1RFU1QoTGV2ZWxEQkRhdGFiYXNlVGVzdCwgVHJh
bnNhY3Rpb24pCit7CisgICAgT3duUHRyPHdlYmtpdF9zdXBwb3J0OjpTY29wZWRUZW1wRGlyZWN0
b3J5PiB0ZW1wRGlyZWN0b3J5ID0gYWRvcHRQdHIod2Via2l0X3N1cHBvcnQ6OkNyZWF0ZVNjb3Bl
ZFRlbXBEaXJlY3RvcnkoKSk7CisgICAgdGVtcERpcmVjdG9yeS0+Q3JlYXRlVW5pcXVlVGVtcERp
cigpOworICAgIGNvbnN0IFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOCh0ZW1wRGlyZWN0
b3J5LT5wYXRoKCkuY19zdHIoKSk7CisKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gZW5j
b2RlU3RyaW5nKCJrZXkiKTsKKyAgICBWZWN0b3I8Y2hhcj4gZ290VmFsdWU7CisgICAgU2ltcGxl
Q29tcGFyYXRvciBjb21wYXJhdG9yOworCisgICAgT3duUHRyPExldmVsREJEYXRhYmFzZT4gbGV2
ZWxkYiA9IExldmVsREJEYXRhYmFzZTo6b3BlbihwYXRoLCAmY29tcGFyYXRvcik7CisgICAgRVhQ
RUNUX1RSVUUobGV2ZWxkYik7CisKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gb2xkVmFsdWUgPSBl
bmNvZGVTdHJpbmcoInZhbHVlIik7CisgICAgYm9vbCBzdWNjZXNzID0gbGV2ZWxkYi0+cHV0KGtl
eSwgb2xkVmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworCisgICAgUmVmUHRyPExl
dmVsREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBMZXZlbERCVHJhbnNhY3Rpb246OmNyZWF0
ZShsZXZlbGRiLmdldCgpKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBuZXdWYWx1ZSA9IGVu
Y29kZVN0cmluZygibmV3IHZhbHVlIik7CisgICAgc3VjY2VzcyA9IGxldmVsZGItPnB1dChrZXks
IG5ld1ZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKworICAgIHN1Y2Nlc3MgPSB0
cmFuc2FjdGlvbi0+Z2V0KGtleSwgZ290VmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3Mp
OworICAgIEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUoZ290VmFsdWUsIG9sZFZhbHVlKSwg
MCk7CisKKyAgICBzdWNjZXNzID0gbGV2ZWxkYi0+Z2V0KGtleSwgZ290VmFsdWUpOworICAgIEVY
UEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUoZ290
VmFsdWUsIG5ld1ZhbHVlKSwgMCk7CisKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gYWRkZWRLZXkg
PSBlbmNvZGVTdHJpbmcoImFkZGVkIGtleSIpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBhZGRl
ZFZhbHVlID0gZW5jb2RlU3RyaW5nKCJhZGRlZCB2YWx1ZSIpOworICAgIHN1Y2Nlc3MgPSBsZXZl
bGRiLT5wdXQoYWRkZWRLZXksIGFkZGVkVmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3Mp
OworCisgICAgc3VjY2VzcyA9IGxldmVsZGItPmdldChhZGRlZEtleSwgZ290VmFsdWUpOworICAg
IEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUo
Z290VmFsdWUsIGFkZGVkVmFsdWUpLCAwKTsKKworICAgIHN1Y2Nlc3MgPSB0cmFuc2FjdGlvbi0+
Z2V0KGFkZGVkS2V5LCBnb3RWYWx1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworfQor
CitURVNUKExldmVsREJEYXRhYmFzZVRlc3QsIFRyYW5zYWN0aW9uSXRlcmF0b3IpCit7CisgICAg
T3duUHRyPHdlYmtpdF9zdXBwb3J0OjpTY29wZWRUZW1wRGlyZWN0b3J5PiB0ZW1wRGlyZWN0b3J5
ID0gYWRvcHRQdHIod2Via2l0X3N1cHBvcnQ6OkNyZWF0ZVNjb3BlZFRlbXBEaXJlY3RvcnkoKSk7
CisgICAgdGVtcERpcmVjdG9yeS0+Q3JlYXRlVW5pcXVlVGVtcERpcigpOworICAgIGNvbnN0IFN0
cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOCh0ZW1wRGlyZWN0b3J5LT5wYXRoKCkuY19zdHIo
KSk7CisKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnQgPSBlbmNvZGVTdHJpbmcoIiIpOwor
ICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXkxID0gZW5jb2RlU3RyaW5nKCJrZXkxIik7CisgICAg
Y29uc3QgVmVjdG9yPGNoYXI+IHZhbHVlMSA9IGVuY29kZVN0cmluZygidmFsdWUxIik7CisgICAg
Y29uc3QgVmVjdG9yPGNoYXI+IGtleTIgPSBlbmNvZGVTdHJpbmcoImtleTIiKTsKKyAgICBjb25z
dCBWZWN0b3I8Y2hhcj4gdmFsdWUyID0gZW5jb2RlU3RyaW5nKCJ2YWx1ZTIiKTsKKworICAgIFNp
bXBsZUNvbXBhcmF0b3IgY29tcGFyYXRvcjsKKyAgICBib29sIHN1Y2Nlc3M7CisKKyAgICBPd25Q
dHI8TGV2ZWxEQkRhdGFiYXNlPiBsZXZlbGRiID0gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuKHBhdGgs
ICZjb21wYXJhdG9yKTsKKyAgICBFWFBFQ1RfVFJVRShsZXZlbGRiKTsKKworICAgIHN1Y2Nlc3Mg
PSBsZXZlbGRiLT5wdXQoa2V5MSwgdmFsdWUxKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsK
KyAgICBzdWNjZXNzID0gbGV2ZWxkYi0+cHV0KGtleTIsIHZhbHVlMik7CisgICAgRVhQRUNUX1RS
VUUoc3VjY2Vzcyk7CisKKyAgICBSZWZQdHI8TGV2ZWxEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlv
biA9IExldmVsREJUcmFuc2FjdGlvbjo6Y3JlYXRlKGxldmVsZGIuZ2V0KCkpOworCisgICAgc3Vj
Y2VzcyA9IGxldmVsZGItPnJlbW92ZShrZXkyKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsK
KworICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IGl0ID0gdHJhbnNhY3Rpb24tPmNyZWF0ZUl0
ZXJhdG9yKCk7CisKKyAgICBpdC0+c2VlayhzdGFydCk7CisKKyAgICBFWFBFQ1RfVFJVRShpdC0+
aXNWYWxpZCgpKTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKGl0LT5rZXkoKSwg
a2V5MSksIDApOworICAgIEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUoaXQtPnZhbHVlKCks
IHZhbHVlMSksIDApOworCisgICAgaXQtPm5leHQoKTsKKworICAgIEVYUEVDVF9UUlVFKGl0LT5p
c1ZhbGlkKCkpOworICAgIEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUoaXQtPmtleSgpLCBr
ZXkyKSwgMCk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShpdC0+dmFsdWUoKSwg
dmFsdWUyKSwgMCk7CisKKyAgICBpdC0+bmV4dCgpOworCisgICAgRVhQRUNUX0ZBTFNFKGl0LT5p
c1ZhbGlkKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYgLy8gVVNFKExFVkVMREIp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172833</attachid>
            <date>2012-11-07 10:35:25 -0800</date>
            <delta_ts>2012-11-08 13:33:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100786-20121107103336.patch</filename>
            <type>text/plain</type>
            <size>12697</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk1ZmJkMTNiZDJmNjNh
YmYwMDFjYTMxYjg1NDRmMjQzNWExMjM4MS4uMDBjOTIzYTc2YmI3YmM4ZjhjODM1MTBmYjExNmIy
ZWIwOGVkYzg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTExLTAxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXhwb3NlIHNuYXBzaG90
cyBpbiBwbGF0Zm9ybS9sZXZlbGRiIHdyYXBwZXIgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3ODYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgbGV2ZWxkYiAic25hcHNob3RzIiBpbiB0
aGUgTGV2ZWxEQiBBUEkuIEEgc25hcHNob3QgbGV0cyB5b3Ugb2JzZXJ2ZSB0aGUgZGF0YWJhc2UK
KyAgICAgICAgYXMgaXQgd2FzIHdoZW4gdGhlIHNuYXBzaG90IHdhcyB0YWtlbi4gVGhpcyBjYW4g
YmUgdXNlZCB0byBpbXBsZW1lbnQgcGFyYWxsZWwgdHJhbnNhY3Rpb25zLAorICAgICAgICBlLmcu
IHdoZXJlIGEgcmVhZCB0cmFuc2FjdGlvbiB3b24ndCBzZWUgdXBkYXRlcyBtYWRlIGJ5IGEgbGF0
ZXIgd3JpdGUgdHJhbnNhY3Rpb24uCisKKyAgICAgICAgVGVzdHM6IHdlYmtpdF91bml0X3Rlc3Rz
IC0tZ3Rlc3RfZmlsdGVyPSdMZXZlbERCRGF0YWJhc2VUZXN0LlRyYW5zYWN0aW9uKicKKworICAg
ICAgICAqIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxldmVsREJTbmFwc2hvdDo6TGV2ZWxEQlNuYXBzaG90KTogTmV3IChidXQgZm9yIG5v
dyBpbnRlcm5hbC1vbmx5KSB3cmFwcGVyIHR5cGUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxldmVsREJTbmFwc2hvdDo6fkxldmVsREJTbmFwc2hvdCk6IFJlbGVhc2Ug
dGhlIGxldmVsZGI6OlNuYXBzaG90LgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQkRhdGFiYXNl
OjpnZXQpOiBPcHRpb25hbCBzbmFwc2hvdCBhcmd1bWVudCwgZm9yIHVzZSBieSB0cmFuc2FjdGlv
bnMuCisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCRGF0YWJhc2U6OmNyZWF0ZUl0ZXJhdG9yKTog
RGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaDoKKyAg
ICAgICAgKGxldmVsZGIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMZXZlbERCU25h
cHNob3QpOgorICAgICAgICAoTGV2ZWxEQkRhdGFiYXNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9s
ZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMZXZlbERC
VHJhbnNhY3Rpb246OkxldmVsREJUcmFuc2FjdGlvbik6IEluaXRpYWxpemUgYSBzbmFwc2hvdC4K
KyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJUcmFuc2FjdGlvbjo6Z2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxldmVsREJUcmFuc2FjdGlvbjo6VHJhbnNhY3Rpb25JdGVyYXRvcjo6VHJhbnNhY3Rp
b25JdGVyYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rp
b24uaDoKKyAgICAgICAgKExldmVsREJUcmFuc2FjdGlvbik6CisKIDIwMTItMTEtMDcgIEFsZXhh
bmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgU2hhZGVy
c10gQWRkIEN1c3RvbUZpbHRlck1lc2hCb3hUeXBlIHRvIFZhbGlkYXRlZEN1c3RvbUZpbHRlck9w
ZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3MWFlYjlmY2JiZTMxOTM0YmRl
NWU0ZmEyZWRmMDI1OTBhOGJlODg4Li4yM2E2YjVmZDYyNzIzMDM1YzZlZGRiMDdjN2YwYWRiMzRh
MzM0ZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEy
LTExLTAxICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXhw
b3NlIHNuYXBzaG90cyBpbiBwbGF0Zm9ybS9sZXZlbGRiIHdyYXBwZXIgQVBJCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3ODYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdW5pdCB0ZXN0cyBmb3Ig
dHJhbnNhY3Rpb25zL3NuYXBzaG90cy4KKworICAgICAgICAqIHRlc3RzL0xldmVsREJUZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZVN0cmluZyk6IERvbid0IGFwcGVuZCB0byBwcmUt
c2l6ZWQgdmVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgIChXZWJDb3Jl
KToKKwogMjAxMi0xMS0wNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwCmluZGV4IDI3M2Fm
ZDRkZWMxYWFlNzBiZDFhYTkyYjA4ZTY4MDRiYjI2MzA4YzIuLmVkZjlkYjI1NzJlMzU4ZjdiNWNj
M2E3NTQ0NzMwYWQ0N2ZjZjMxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAKQEAgLTg5LDYgKzg5LDE3IEBAIHByaXZhdGU6
CiAgICAgY29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqIG1fY29tcGFyYXRvcjsKIH07CiAKK0xldmVs
REJTbmFwc2hvdDo6TGV2ZWxEQlNuYXBzaG90KExldmVsREJEYXRhYmFzZSogZGIpCisgICAgOiBt
X2RiKGRiLT5tX2RiLmdldCgpKQorICAgICwgbV9zbmFwc2hvdChtX2RiLT5HZXRTbmFwc2hvdCgp
KQoreworfQorCitMZXZlbERCU25hcHNob3Q6On5MZXZlbERCU25hcHNob3QoKQoreworICAgIG1f
ZGItPlJlbGVhc2VTbmFwc2hvdChtX3NuYXBzaG90KTsKK30KKwogTGV2ZWxEQkRhdGFiYXNlOjpM
ZXZlbERCRGF0YWJhc2UoKQogewogfQpAQCAtMTg3LDExICsxOTgsMTIgQEAgYm9vbCBMZXZlbERC
RGF0YWJhc2U6OnJlbW92ZShjb25zdCBMZXZlbERCU2xpY2UmIGtleSkKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLWJvb2wgTGV2ZWxEQkRhdGFiYXNlOjpnZXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBr
ZXksIFZlY3RvcjxjaGFyPiYgdmFsdWUpCitib29sIExldmVsREJEYXRhYmFzZTo6Z2V0KGNvbnN0
IExldmVsREJTbGljZSYga2V5LCBWZWN0b3I8Y2hhcj4mIHZhbHVlLCBjb25zdCBMZXZlbERCU25h
cHNob3QqIHNuYXBzaG90KQogewogICAgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKICAgICBsZXZlbGRi
OjpSZWFkT3B0aW9ucyByZWFkT3B0aW9uczsKICAgICByZWFkT3B0aW9ucy52ZXJpZnlfY2hlY2tz
dW1zID0gdHJ1ZTsgLy8gRklYTUU6IERpc2FibGUgdGhpcyBpZiB0aGUgcGVyZm9ybWFuY2UgaW1w
YWN0IGlzIHRvbyBncmVhdC4KKyAgICByZWFkT3B0aW9ucy5zbmFwc2hvdCA9IHNuYXBzaG90ID8g
c25hcHNob3QtPm1fc25hcHNob3QgOiAwOwogCiAgICAgY29uc3QgbGV2ZWxkYjo6U3RhdHVzIHMg
PSBtX2RiLT5HZXQocmVhZE9wdGlvbnMsIG1ha2VTbGljZShrZXkpLCAmcmVzdWx0KTsKICAgICBp
ZiAocy5vaygpKSB7CkBAIC0yOTMsMTAgKzMwNSwxMSBAQCBMZXZlbERCU2xpY2UgSXRlcmF0b3JJ
bXBsOjp2YWx1ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1ha2VMZXZlbERCU2xpY2UobV9pdGVyYXRv
ci0+dmFsdWUoKSk7CiB9CiAKLVBhc3NPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBMZXZlbERCRGF0
YWJhc2U6OmNyZWF0ZUl0ZXJhdG9yKCkKK1Bhc3NPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBMZXZl
bERCRGF0YWJhc2U6OmNyZWF0ZUl0ZXJhdG9yKGNvbnN0IExldmVsREJTbmFwc2hvdCogc25hcHNo
b3QpCiB7CiAgICAgbGV2ZWxkYjo6UmVhZE9wdGlvbnMgcmVhZE9wdGlvbnM7CiAgICAgcmVhZE9w
dGlvbnMudmVyaWZ5X2NoZWNrc3VtcyA9IHRydWU7IC8vIEZJWE1FOiBEaXNhYmxlIHRoaXMgaWYg
dGhlIHBlcmZvcm1hbmNlIGltcGFjdCBpcyB0b28gZ3JlYXQuCisgICAgcmVhZE9wdGlvbnMuc25h
cHNob3QgPSBzbmFwc2hvdCA/IHNuYXBzaG90LT5tX3NuYXBzaG90IDogMDsKICAgICBPd25QdHI8
bGV2ZWxkYjo6SXRlcmF0b3I+IGkgPSBhZG9wdFB0cihtX2RiLT5OZXdJdGVyYXRvcihyZWFkT3B0
aW9ucykpOwogICAgIGlmICghaSkgLy8gRklYTUU6IERvdWJsZSBjaGVjayBpZiB3ZSBhY3R1YWxs
eSBuZWVkIHRvIGNoZWNrIHRoaXMuCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmgKaW5kZXggZTgw
YjQ5YTI0YWM3N2QyZmMwM2YxMGFlM2IwZGI3MGYzNmEyNjc2OS4uYzk3ZGVlNmE1NzE3NmVmZDIy
Nzg3ZDBmMmQyNTZmYjFlYzcwNGFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5oCkBAIC0zNywxNSArMzcsMjkgQEAgbmFtZXNwYWNl
IGxldmVsZGIgewogY2xhc3MgQ29tcGFyYXRvcjsKIGNsYXNzIERCOwogY2xhc3MgRW52OworY2xh
c3MgU25hcHNob3Q7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTGV2ZWxEQkRh
dGFiYXNlOwogY2xhc3MgTGV2ZWxEQkNvbXBhcmF0b3I7CiBjbGFzcyBMZXZlbERCSXRlcmF0b3I7
CiBjbGFzcyBMZXZlbERCU2xpY2U7CiBjbGFzcyBMZXZlbERCV3JpdGVCYXRjaDsKIAorY2xhc3Mg
TGV2ZWxEQlNuYXBzaG90IHsKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExldmVsREJEYXRh
YmFzZTsKKyAgICBmcmllbmQgY2xhc3MgTGV2ZWxEQlRyYW5zYWN0aW9uOworCisgICAgZXhwbGlj
aXQgTGV2ZWxEQlNuYXBzaG90KExldmVsREJEYXRhYmFzZSopOworICAgIH5MZXZlbERCU25hcHNo
b3QoKTsKKworICAgIGxldmVsZGI6OkRCKiBtX2RiOworICAgIGNvbnN0IGxldmVsZGI6OlNuYXBz
aG90KiBtX3NuYXBzaG90OworfTsKKwogY2xhc3MgTGV2ZWxEQkRhdGFiYXNlIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc093blB0cjxMZXZlbERCRGF0YWJhc2U+IG9wZW4oY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSwgY29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqKTsKQEAgLTU1LDEyICs2OSwxMyBA
QCBwdWJsaWM6CiAKICAgICBib29sIHB1dChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgY29uc3Qg
VmVjdG9yPGNoYXI+JiB2YWx1ZSk7CiAgICAgYm9vbCByZW1vdmUoY29uc3QgTGV2ZWxEQlNsaWNl
JiBrZXkpOwotICAgIGJvb2wgZ2V0KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBWZWN0b3I8Y2hh
cj4mIHZhbHVlKTsKKyAgICBib29sIGdldChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgVmVjdG9y
PGNoYXI+JiB2YWx1ZSwgY29uc3QgTGV2ZWxEQlNuYXBzaG90KiA9IDApOwogICAgIGJvb2wgd3Jp
dGUoTGV2ZWxEQldyaXRlQmF0Y2gmKTsKLSAgICBQYXNzT3duUHRyPExldmVsREJJdGVyYXRvcj4g
Y3JlYXRlSXRlcmF0b3IoKTsKKyAgICBQYXNzT3duUHRyPExldmVsREJJdGVyYXRvcj4gY3JlYXRl
SXRlcmF0b3IoY29uc3QgTGV2ZWxEQlNuYXBzaG90KiA9IDApOwogICAgIGNvbnN0IExldmVsREJD
b21wYXJhdG9yKiBjb21wYXJhdG9yKCkgY29uc3Q7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIExldmVsREJTbmFwc2hvdDsKICAgICBMZXZlbERCRGF0YWJhc2UoKTsKIAogICAgIE93blB0
cjxsZXZlbGRiOjpFbnY+IG1fZW52OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDhmZTNmZDA4ZWRiMjc5YmNl
Mzg0NTBkNWM3YjliYmEwMTc0NzU5NTMuLjdmZTBiYThiNjQ3YzU5YmFhYTFlMDVhODMwMGI0YjA4
ODNmYjY5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2
ZWxEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRi
L0xldmVsREJUcmFuc2FjdGlvbi5jcHAKQEAgLTI2LDEyICsyNiwxMyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkxldmVsREJUcmFuc2FjdGlvbi5oIgogCisjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCisjaWYgVVNFKExFVkVMREIpCisKICNpbmNsdWRlICJMZXZlbERCRGF0
YWJhc2UuaCIKICNpbmNsdWRlICJMZXZlbERCU2xpY2UuaCIKICNpbmNsdWRlICJMZXZlbERCV3Jp
dGVCYXRjaC5oIgotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0jaWYgVVNFKExFVkVM
REIpCisjaW5jbHVkZSA8bGV2ZWxkYi9kYi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTQyLDYgKzQzLDcgQEAgUGFzc1JlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+IExldmVsREJUcmFu
c2FjdGlvbjo6Y3JlYXRlKExldmVsREJEYXRhYmFzZSogZGIpCiAKIExldmVsREJUcmFuc2FjdGlv
bjo6TGV2ZWxEQlRyYW5zYWN0aW9uKExldmVsREJEYXRhYmFzZSogZGIpCiAgICAgOiBtX2RiKGRi
KQorICAgICwgbV9zbmFwc2hvdChkYikKICAgICAsIG1fY29tcGFyYXRvcihkYi0+Y29tcGFyYXRv
cigpKQogICAgICwgbV9maW5pc2hlZChmYWxzZSkKIHsKQEAgLTExOSw3ICsxMjEsNyBAQCBib29s
IExldmVsREJUcmFuc2FjdGlvbjo6Z2V0KGNvbnN0IExldmVsREJTbGljZSYga2V5LCBWZWN0b3I8
Y2hhcj4mIHZhbHVlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICByZXR1cm4g
bV9kYi0+Z2V0KGtleSwgdmFsdWUpOworICAgIHJldHVybiBtX2RiLT5nZXQoa2V5LCB2YWx1ZSwg
Jm1fc25hcHNob3QpOwogfQogCiBib29sIExldmVsREJUcmFuc2FjdGlvbjo6Y29tbWl0KCkKQEAg
LTI1OCw3ICsyNjAsNyBAQCBMZXZlbERCVHJhbnNhY3Rpb246OlRyYW5zYWN0aW9uSXRlcmF0b3I6
OlRyYW5zYWN0aW9uSXRlcmF0b3IoUGFzc1JlZlB0cjxMZXZlbERCVAogICAgIDogbV90cmFuc2Fj
dGlvbih0cmFuc2FjdGlvbikKICAgICAsIG1fY29tcGFyYXRvcihtX3RyYW5zYWN0aW9uLT5tX2Nv
bXBhcmF0b3IpCiAgICAgLCBtX3RyZWVJdGVyYXRvcihUcmVlSXRlcmF0b3I6OmNyZWF0ZShtX3Ry
YW5zYWN0aW9uLmdldCgpKSkKLSAgICAsIG1fZGJJdGVyYXRvcihtX3RyYW5zYWN0aW9uLT5tX2Ri
LT5jcmVhdGVJdGVyYXRvcigpKQorICAgICwgbV9kYkl0ZXJhdG9yKG1fdHJhbnNhY3Rpb24tPm1f
ZGItPmNyZWF0ZUl0ZXJhdG9yKCZtX3RyYW5zYWN0aW9uLT5tX3NuYXBzaG90KSkKICAgICAsIG1f
Y3VycmVudCgwKQogICAgICwgbV9kaXJlY3Rpb24oa0ZvcndhcmQpCiAgICAgLCBtX3RyZWVDaGFu
Z2VkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9M
ZXZlbERCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2
ZWxEQlRyYW5zYWN0aW9uLmgKaW5kZXggODBhMzM1ZDQ3YTAxMGFmNGQzODJhNWYxNWExOTQ1OTE3
Mzc0NGY1Zi4uYjNkYzY4NDRjNjExOWM2NjA1NzQ0MWNmZTVkODFiYTE3ZWU1NWY4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlv
bi5oCkBAIC0zMCw2ICszMCw3IEBACiAjaWYgVVNFKExFVkVMREIpCiAKICNpbmNsdWRlICJMZXZl
bERCQ29tcGFyYXRvci5oIgorI2luY2x1ZGUgIkxldmVsREJEYXRhYmFzZS5oIgogI2luY2x1ZGUg
IkxldmVsREJJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxldmVsREJTbGljZS5oIgogI2luY2x1ZGUg
PHd0Zi9BVkxUcmVlLmg+CkBAIC00Miw3ICs0Myw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgTGV2ZWxEQkRhdGFiYXNlOwogY2xhc3MgTGV2ZWxEQldyaXRlQmF0Y2g7CiAKIHVz
aW5nIFdURjo6QVZMVHJlZTsKQEAgLTE2NCw2ICsxNjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
bm90aWZ5SXRlcmF0b3JzT2ZUcmVlQ2hhbmdlKCk7CiAKICAgICBMZXZlbERCRGF0YWJhc2UqIG1f
ZGI7CisgICAgY29uc3QgTGV2ZWxEQlNuYXBzaG90IG1fc25hcHNob3Q7CiAgICAgY29uc3QgTGV2
ZWxEQkNvbXBhcmF0b3IqIG1fY29tcGFyYXRvcjsKICAgICBUcmVlVHlwZSBtX3RyZWU7CiAgICAg
Ym9vbCBtX2ZpbmlzaGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9MZXZlbERCVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xldmVsREJU
ZXN0LmNwcAppbmRleCAyYTAwYWU2ODYxYzAwZTkwNWU0M2Y4NTA0YTUwNTEyYzUzMWFlYmFkLi43
ZGMwMzU1ZGZlOTM1ZjM5MzMxNDUwZWU2OTY2Mjk3NzJlY2MyZjI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xldmVsREJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0xldmVsREJUZXN0LmNwcApAQCAtMzAsNyArMzAsOSBAQAogI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJMZXZlbERCQ29tcGFyYXRvci5oIgogI2lu
Y2x1ZGUgIkxldmVsREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIkxldmVsREJJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkxldmVsREJTbGljZS5oIgorI2luY2x1ZGUgIkxldmVsREJUcmFuc2FjdGlvbi5o
IgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQvd2Vi
a2l0X3N1cHBvcnQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01Myw3ICs1NSw3IEBA
IFZlY3RvcjxjaGFyPiBlbmNvZGVTdHJpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHMpCiB7CiAgICAg
VmVjdG9yPGNoYXI+IHJldChzLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
LnNpemUoKTsgKytpKQotICAgICAgICByZXQuYXBwZW5kKHNbaV0pOworICAgICAgICByZXRbaV0g
PSBzW2ldOwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTEwMCw2ICsxMDIsOTcgQEAgVEVTVChM
ZXZlbERCRGF0YWJhc2VUZXN0LCBDb3JydXB0aW9uVGVzdCkKICAgICBFWFBFQ1RfRkFMU0Uoc3Vj
Y2Vzcyk7CiB9CiAKK1RFU1QoTGV2ZWxEQkRhdGFiYXNlVGVzdCwgVHJhbnNhY3Rpb24pCit7Cisg
ICAgT3duUHRyPHdlYmtpdF9zdXBwb3J0OjpTY29wZWRUZW1wRGlyZWN0b3J5PiB0ZW1wRGlyZWN0
b3J5ID0gYWRvcHRQdHIod2Via2l0X3N1cHBvcnQ6OkNyZWF0ZVNjb3BlZFRlbXBEaXJlY3Rvcnko
KSk7CisgICAgdGVtcERpcmVjdG9yeS0+Q3JlYXRlVW5pcXVlVGVtcERpcigpOworICAgIGNvbnN0
IFN0cmluZyBwYXRoID0gU3RyaW5nOjpmcm9tVVRGOCh0ZW1wRGlyZWN0b3J5LT5wYXRoKCkuY19z
dHIoKSk7CisKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5ID0gZW5jb2RlU3RyaW5nKCJrZXki
KTsKKyAgICBWZWN0b3I8Y2hhcj4gZ290VmFsdWU7CisgICAgU2ltcGxlQ29tcGFyYXRvciBjb21w
YXJhdG9yOworCisgICAgT3duUHRyPExldmVsREJEYXRhYmFzZT4gbGV2ZWxkYiA9IExldmVsREJE
YXRhYmFzZTo6b3BlbihwYXRoLCAmY29tcGFyYXRvcik7CisgICAgRVhQRUNUX1RSVUUobGV2ZWxk
Yik7CisKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gb2xkVmFsdWUgPSBlbmNvZGVTdHJpbmcoInZh
bHVlIik7CisgICAgYm9vbCBzdWNjZXNzID0gbGV2ZWxkYi0+cHV0KGtleSwgb2xkVmFsdWUpOwor
ICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworCisgICAgUmVmUHRyPExldmVsREJUcmFuc2FjdGlv
bj4gdHJhbnNhY3Rpb24gPSBMZXZlbERCVHJhbnNhY3Rpb246OmNyZWF0ZShsZXZlbGRiLmdldCgp
KTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBuZXdWYWx1ZSA9IGVuY29kZVN0cmluZygibmV3
IHZhbHVlIik7CisgICAgc3VjY2VzcyA9IGxldmVsZGItPnB1dChrZXksIG5ld1ZhbHVlKTsKKyAg
ICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKworICAgIHN1Y2Nlc3MgPSB0cmFuc2FjdGlvbi0+Z2V0
KGtleSwgZ290VmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIEVYUEVDVF9F
UShjb21wYXJhdG9yLmNvbXBhcmUoZ290VmFsdWUsIG9sZFZhbHVlKSwgMCk7CisKKyAgICBzdWNj
ZXNzID0gbGV2ZWxkYi0+Z2V0KGtleSwgZ290VmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nl
c3MpOworICAgIEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUoZ290VmFsdWUsIG5ld1ZhbHVl
KSwgMCk7CisKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gYWRkZWRLZXkgPSBlbmNvZGVTdHJpbmco
ImFkZGVkIGtleSIpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBhZGRlZFZhbHVlID0gZW5jb2Rl
U3RyaW5nKCJhZGRlZCB2YWx1ZSIpOworICAgIHN1Y2Nlc3MgPSBsZXZlbGRiLT5wdXQoYWRkZWRL
ZXksIGFkZGVkVmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworCisgICAgc3VjY2Vz
cyA9IGxldmVsZGItPmdldChhZGRlZEtleSwgZ290VmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHN1
Y2Nlc3MpOworICAgIEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUoZ290VmFsdWUsIGFkZGVk
VmFsdWUpLCAwKTsKKworICAgIHN1Y2Nlc3MgPSB0cmFuc2FjdGlvbi0+Z2V0KGFkZGVkS2V5LCBn
b3RWYWx1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworfQorCitURVNUKExldmVsREJE
YXRhYmFzZVRlc3QsIFRyYW5zYWN0aW9uSXRlcmF0b3IpCit7CisgICAgT3duUHRyPHdlYmtpdF9z
dXBwb3J0OjpTY29wZWRUZW1wRGlyZWN0b3J5PiB0ZW1wRGlyZWN0b3J5ID0gYWRvcHRQdHIod2Vi
a2l0X3N1cHBvcnQ6OkNyZWF0ZVNjb3BlZFRlbXBEaXJlY3RvcnkoKSk7CisgICAgdGVtcERpcmVj
dG9yeS0+Q3JlYXRlVW5pcXVlVGVtcERpcigpOworICAgIGNvbnN0IFN0cmluZyBwYXRoID0gU3Ry
aW5nOjpmcm9tVVRGOCh0ZW1wRGlyZWN0b3J5LT5wYXRoKCkuY19zdHIoKSk7CisKKyAgICBjb25z
dCBWZWN0b3I8Y2hhcj4gc3RhcnQgPSBlbmNvZGVTdHJpbmcoIiIpOworICAgIGNvbnN0IFZlY3Rv
cjxjaGFyPiBrZXkxID0gZW5jb2RlU3RyaW5nKCJrZXkxIik7CisgICAgY29uc3QgVmVjdG9yPGNo
YXI+IHZhbHVlMSA9IGVuY29kZVN0cmluZygidmFsdWUxIik7CisgICAgY29uc3QgVmVjdG9yPGNo
YXI+IGtleTIgPSBlbmNvZGVTdHJpbmcoImtleTIiKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4g
dmFsdWUyID0gZW5jb2RlU3RyaW5nKCJ2YWx1ZTIiKTsKKworICAgIFNpbXBsZUNvbXBhcmF0b3Ig
Y29tcGFyYXRvcjsKKyAgICBib29sIHN1Y2Nlc3M7CisKKyAgICBPd25QdHI8TGV2ZWxEQkRhdGFi
YXNlPiBsZXZlbGRiID0gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuKHBhdGgsICZjb21wYXJhdG9yKTsK
KyAgICBFWFBFQ1RfVFJVRShsZXZlbGRiKTsKKworICAgIHN1Y2Nlc3MgPSBsZXZlbGRiLT5wdXQo
a2V5MSwgdmFsdWUxKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBzdWNjZXNzID0g
bGV2ZWxkYi0+cHV0KGtleTIsIHZhbHVlMik7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisK
KyAgICBSZWZQdHI8TGV2ZWxEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IExldmVsREJUcmFu
c2FjdGlvbjo6Y3JlYXRlKGxldmVsZGIuZ2V0KCkpOworCisgICAgc3VjY2VzcyA9IGxldmVsZGIt
PnJlbW92ZShrZXkyKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKworICAgIE93blB0cjxM
ZXZlbERCSXRlcmF0b3I+IGl0ID0gdHJhbnNhY3Rpb24tPmNyZWF0ZUl0ZXJhdG9yKCk7CisKKyAg
ICBpdC0+c2VlayhzdGFydCk7CisKKyAgICBFWFBFQ1RfVFJVRShpdC0+aXNWYWxpZCgpKTsKKyAg
ICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKGl0LT5rZXkoKSwga2V5MSksIDApOworICAg
IEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUoaXQtPnZhbHVlKCksIHZhbHVlMSksIDApOwor
CisgICAgaXQtPm5leHQoKTsKKworICAgIEVYUEVDVF9UUlVFKGl0LT5pc1ZhbGlkKCkpOworICAg
IEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUoaXQtPmtleSgpLCBrZXkyKSwgMCk7CisgICAg
RVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShpdC0+dmFsdWUoKSwgdmFsdWUyKSwgMCk7CisK
KyAgICBpdC0+bmV4dCgpOworCisgICAgRVhQRUNUX0ZBTFNFKGl0LT5pc1ZhbGlkKCkpOworfQor
CiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYgLy8gVVNFKExFVkVMREIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173107</attachid>
            <date>2012-11-08 13:33:10 -0800</date>
            <delta_ts>2012-11-08 13:45:36 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-100786-20121108133119.patch</filename>
            <type>text/plain</type>
            <size>15034</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzOTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjYwZWVjZThkNjQyMDI2
ODg5NjUwYWI0NWFlZjgyNTg4Njk4N2U4MC4uY2MxYTUwNWRiYTE0YjIwNjdkNDRiNWE0MGYzZjhk
N2YzMWUzZTQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTExLTAxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXhwb3NlIHNuYXBzaG90
cyBpbiBwbGF0Zm9ybS9sZXZlbGRiIHdyYXBwZXIgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3ODYKKworICAgICAgICBSZXZpZXdlZCBieSBU
b255IENoYW5nLgorCisgICAgICAgIEV4cG9zZSBsZXZlbGRiICJzbmFwc2hvdHMiIGluIHRoZSBM
ZXZlbERCIEFQSS4gQSBzbmFwc2hvdCBsZXRzIHlvdSBvYnNlcnZlIHRoZSBkYXRhYmFzZQorICAg
ICAgICBhcyBpdCB3YXMgd2hlbiB0aGUgc25hcHNob3Qgd2FzIHRha2VuLiBUaGlzIGNhbiBiZSB1
c2VkIHRvIGltcGxlbWVudCBwYXJhbGxlbCB0cmFuc2FjdGlvbnMsCisgICAgICAgIGUuZy4gd2hl
cmUgYSByZWFkIHRyYW5zYWN0aW9uIHdvbid0IHNlZSB1cGRhdGVzIG1hZGUgYnkgYSBsYXRlciB3
cml0ZSB0cmFuc2FjdGlvbi4KKworICAgICAgICBUZXN0czogd2Via2l0X3VuaXRfdGVzdHMgLS1n
dGVzdF9maWx0ZXI9J0xldmVsREJEYXRhYmFzZVRlc3QuVHJhbnNhY3Rpb24qJworCisgICAgICAg
ICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGV2ZWxEQlNuYXBzaG90OjpMZXZlbERCU25hcHNob3QpOiBOZXcgKGJ1dCBmb3Igbm93IGlu
dGVybmFsLW9ubHkpIHdyYXBwZXIgdHlwZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGV2ZWxEQlNuYXBzaG90Ojp+TGV2ZWxEQlNuYXBzaG90KTogUmVsZWFzZSB0aGUg
bGV2ZWxkYjo6U25hcHNob3QuCisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCRGF0YWJhc2U6Omdl
dCk6IE9wdGlvbmFsIHNuYXBzaG90IGFyZ3VtZW50LCBmb3IgdXNlIGJ5IHRyYW5zYWN0aW9ucy4K
KyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJEYXRhYmFzZTo6Y3JlYXRlSXRlcmF0b3IpOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5oOgorICAgICAg
ICAobGV2ZWxkYik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKExldmVsREJTbmFwc2hv
dCk6CisgICAgICAgIChMZXZlbERCRGF0YWJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2xldmVs
ZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJUcmFu
c2FjdGlvbjo6TGV2ZWxEQlRyYW5zYWN0aW9uKTogSW5pdGlhbGl6ZSBhIHNuYXBzaG90LgorICAg
ICAgICAoV2ViQ29yZTo6TGV2ZWxEQlRyYW5zYWN0aW9uOjpnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGV2ZWxEQlRyYW5zYWN0aW9uOjpUcmFuc2FjdGlvbkl0ZXJhdG9yOjpUcmFuc2FjdGlvbkl0
ZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5o
OgorICAgICAgICAoTGV2ZWxEQlRyYW5zYWN0aW9uKToKKwogMjAxMi0xMS0wOCAgRWxsaW90dCBT
cHJlaG4gIDxlc3ByZWhuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBTa2lwIGZyYW1lIG93bmVy
IGRpc2Nvbm5lY3Qgd2hlbiB0aGVyZSdzIG5vIGZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCBiMTM0MTMwOGViZWExMjA2YTZjMGMzYTZlYThmYzM1ZWVlMzUxN2FlLi45YjI1MzE4
ZWQ1MDU4ZDBmZTljOTQwZjFhMDVlNWRjMGMxYTMzMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTExLTAxICBKb3NodWEgQmVsbCAgPGpzYmVsbEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXhwb3NlIHNuYXBzaG90cyBpbiBwbGF0Zm9ybS9sZXZl
bGRiIHdyYXBwZXIgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDA3ODYKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAg
ICAgIEFkZCB1bml0IHRlc3RzIGZvciB0cmFuc2FjdGlvbnMvc25hcHNob3RzLgorCisgICAgICAg
ICogdGVzdHMvTGV2ZWxEQlRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlU3RyaW5n
KTogRG9uJ3QgYXBwZW5kIHRvIHByZS1zaXplZCB2ZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpU
RVNUKToKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTExLTA4ICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVk
IERFUFMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVs
REJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJE
YXRhYmFzZS5jcHAKaW5kZXggMjczYWZkNGRlYzFhYWU3MGJkMWFhOTJiMDhlNjgwNGJiMjYzMDhj
Mi4uZWRmOWRiMjU3MmUzNThmN2I1Y2MzYTc1NDQ3MzBhZDQ3ZmNmMzFkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcApAQCAt
ODksNiArODksMTcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBMZXZlbERCQ29tcGFyYXRvciogbV9j
b21wYXJhdG9yOwogfTsKIAorTGV2ZWxEQlNuYXBzaG90OjpMZXZlbERCU25hcHNob3QoTGV2ZWxE
QkRhdGFiYXNlKiBkYikKKyAgICA6IG1fZGIoZGItPm1fZGIuZ2V0KCkpCisgICAgLCBtX3NuYXBz
aG90KG1fZGItPkdldFNuYXBzaG90KCkpCit7Cit9CisKK0xldmVsREJTbmFwc2hvdDo6fkxldmVs
REJTbmFwc2hvdCgpCit7CisgICAgbV9kYi0+UmVsZWFzZVNuYXBzaG90KG1fc25hcHNob3QpOwor
fQorCiBMZXZlbERCRGF0YWJhc2U6OkxldmVsREJEYXRhYmFzZSgpCiB7CiB9CkBAIC0xODcsMTEg
KzE5OCwxMiBAQCBib29sIExldmVsREJEYXRhYmFzZTo6cmVtb3ZlKGNvbnN0IExldmVsREJTbGlj
ZSYga2V5KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBMZXZlbERCRGF0YWJhc2U6Omdl
dChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgVmVjdG9yPGNoYXI+JiB2YWx1ZSkKK2Jvb2wgTGV2
ZWxEQkRhdGFiYXNlOjpnZXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIFZlY3RvcjxjaGFyPiYg
dmFsdWUsIGNvbnN0IExldmVsREJTbmFwc2hvdCogc25hcHNob3QpCiB7CiAgICAgc3RkOjpzdHJp
bmcgcmVzdWx0OwogICAgIGxldmVsZGI6OlJlYWRPcHRpb25zIHJlYWRPcHRpb25zOwogICAgIHJl
YWRPcHRpb25zLnZlcmlmeV9jaGVja3N1bXMgPSB0cnVlOyAvLyBGSVhNRTogRGlzYWJsZSB0aGlz
IGlmIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3QgaXMgdG9vIGdyZWF0LgorICAgIHJlYWRPcHRpb25z
LnNuYXBzaG90ID0gc25hcHNob3QgPyBzbmFwc2hvdC0+bV9zbmFwc2hvdCA6IDA7CiAKICAgICBj
b25zdCBsZXZlbGRiOjpTdGF0dXMgcyA9IG1fZGItPkdldChyZWFkT3B0aW9ucywgbWFrZVNsaWNl
KGtleSksICZyZXN1bHQpOwogICAgIGlmIChzLm9rKCkpIHsKQEAgLTI5MywxMCArMzA1LDExIEBA
IExldmVsREJTbGljZSBJdGVyYXRvckltcGw6OnZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gbWFr
ZUxldmVsREJTbGljZShtX2l0ZXJhdG9yLT52YWx1ZSgpKTsKIH0KIAotUGFzc093blB0cjxMZXZl
bERCSXRlcmF0b3I+IExldmVsREJEYXRhYmFzZTo6Y3JlYXRlSXRlcmF0b3IoKQorUGFzc093blB0
cjxMZXZlbERCSXRlcmF0b3I+IExldmVsREJEYXRhYmFzZTo6Y3JlYXRlSXRlcmF0b3IoY29uc3Qg
TGV2ZWxEQlNuYXBzaG90KiBzbmFwc2hvdCkKIHsKICAgICBsZXZlbGRiOjpSZWFkT3B0aW9ucyBy
ZWFkT3B0aW9uczsKICAgICByZWFkT3B0aW9ucy52ZXJpZnlfY2hlY2tzdW1zID0gdHJ1ZTsgLy8g
RklYTUU6IERpc2FibGUgdGhpcyBpZiB0aGUgcGVyZm9ybWFuY2UgaW1wYWN0IGlzIHRvbyBncmVh
dC4KKyAgICByZWFkT3B0aW9ucy5zbmFwc2hvdCA9IHNuYXBzaG90ID8gc25hcHNob3QtPm1fc25h
cHNob3QgOiAwOwogICAgIE93blB0cjxsZXZlbGRiOjpJdGVyYXRvcj4gaSA9IGFkb3B0UHRyKG1f
ZGItPk5ld0l0ZXJhdG9yKHJlYWRPcHRpb25zKSk7CiAgICAgaWYgKCFpKSAvLyBGSVhNRTogRG91
YmxlIGNoZWNrIGlmIHdlIGFjdHVhbGx5IG5lZWQgdG8gY2hlY2sgdGhpcy4KICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRi
L0xldmVsREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZl
bERCRGF0YWJhc2UuaAppbmRleCBlODBiNDlhMjRhYzc3ZDJmYzAzZjEwYWUzYjBkYjcwZjM2YTI2
NzY5Li4yZDMyY2Q3MzYzZTU4MzY3N2Q1Y2M3YTQ4NDM2ZTMwMjczYThmNWVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmgKQEAgLTM3
LDE1ICszNywyOSBAQCBuYW1lc3BhY2UgbGV2ZWxkYiB7CiBjbGFzcyBDb21wYXJhdG9yOwogY2xh
c3MgREI7CiBjbGFzcyBFbnY7CitjbGFzcyBTbmFwc2hvdDsKIH0KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBMZXZlbERCQ29tcGFyYXRvcjsKK2NsYXNzIExldmVsREJEYXRhYmFzZTsK
IGNsYXNzIExldmVsREJJdGVyYXRvcjsKIGNsYXNzIExldmVsREJTbGljZTsKIGNsYXNzIExldmVs
REJXcml0ZUJhdGNoOwogCitjbGFzcyBMZXZlbERCU25hcHNob3QgeworcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgTGV2ZWxEQkRhdGFiYXNlOworICAgIGZyaWVuZCBjbGFzcyBMZXZlbERCVHJh
bnNhY3Rpb247CisKKyAgICBleHBsaWNpdCBMZXZlbERCU25hcHNob3QoTGV2ZWxEQkRhdGFiYXNl
Kik7CisgICAgfkxldmVsREJTbmFwc2hvdCgpOworCisgICAgbGV2ZWxkYjo6REIqIG1fZGI7Cisg
ICAgY29uc3QgbGV2ZWxkYjo6U25hcHNob3QqIG1fc25hcHNob3Q7Cit9OworCiBjbGFzcyBMZXZl
bERCRGF0YWJhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPExldmVsREJEYXRh
YmFzZT4gb3Blbihjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBMZXZlbERCQ29tcGFyYXRv
ciopOwpAQCAtNTUsMTIgKzY5LDEzIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcHV0KGNvbnN0IExl
dmVsREJTbGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlKTsKICAgICBib29sIHJl
bW92ZShjb25zdCBMZXZlbERCU2xpY2UmIGtleSk7Ci0gICAgYm9vbCBnZXQoY29uc3QgTGV2ZWxE
QlNsaWNlJiBrZXksIFZlY3RvcjxjaGFyPiYgdmFsdWUpOworICAgIGJvb2wgZ2V0KGNvbnN0IExl
dmVsREJTbGljZSYga2V5LCBWZWN0b3I8Y2hhcj4mIHZhbHVlLCBjb25zdCBMZXZlbERCU25hcHNo
b3QqID0gMCk7CiAgICAgYm9vbCB3cml0ZShMZXZlbERCV3JpdGVCYXRjaCYpOwotICAgIFBhc3NP
d25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBjcmVhdGVJdGVyYXRvcigpOworICAgIFBhc3NPd25QdHI8
TGV2ZWxEQkl0ZXJhdG9yPiBjcmVhdGVJdGVyYXRvcihjb25zdCBMZXZlbERCU25hcHNob3QqID0g
MCk7CiAgICAgY29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqIGNvbXBhcmF0b3IoKSBjb25zdDsKIAog
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTGV2ZWxEQlNuYXBzaG90OwogICAgIExldmVsREJE
YXRhYmFzZSgpOwogCiAgICAgT3duUHRyPGxldmVsZGI6OkVudj4gbV9lbnY7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHAK
aW5kZXggOGZlM2ZkMDhlZGIyNzliY2UzODQ1MGQ1YzdiOWJiYTAxNzQ3NTk1My4uN2ZlMGJhOGI2
NDdjNTliYWFhMWUwNWE4MzAwYjRiMDg4M2ZiNjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcApAQCAtMjYsMTIg
KzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQlRyYW5zYWN0
aW9uLmgiCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNpZiBVU0UoTEVWRUxEQikK
KwogI2luY2x1ZGUgIkxldmVsREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkxldmVsREJTbGljZS5o
IgogI2luY2x1ZGUgIkxldmVsREJXcml0ZUJhdGNoLmgiCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKLSNpZiBVU0UoTEVWRUxEQikKKyNpbmNsdWRlIDxsZXZlbGRiL2RiLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsNiArNDMsNyBAQCBQYXNzUmVmUHRyPExldmVsREJU
cmFuc2FjdGlvbj4gTGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUoTGV2ZWxEQkRhdGFiYXNlKiBk
YikKIAogTGV2ZWxEQlRyYW5zYWN0aW9uOjpMZXZlbERCVHJhbnNhY3Rpb24oTGV2ZWxEQkRhdGFi
YXNlKiBkYikKICAgICA6IG1fZGIoZGIpCisgICAgLCBtX3NuYXBzaG90KGRiKQogICAgICwgbV9j
b21wYXJhdG9yKGRiLT5jb21wYXJhdG9yKCkpCiAgICAgLCBtX2ZpbmlzaGVkKGZhbHNlKQogewpA
QCAtMTE5LDcgKzEyMSw3IEBAIGJvb2wgTGV2ZWxEQlRyYW5zYWN0aW9uOjpnZXQoY29uc3QgTGV2
ZWxEQlNsaWNlJiBrZXksIFZlY3RvcjxjaGFyPiYgdmFsdWUpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAotICAgIHJldHVybiBtX2RiLT5nZXQoa2V5LCB2YWx1ZSk7CisgICAgcmV0dXJu
IG1fZGItPmdldChrZXksIHZhbHVlLCAmbV9zbmFwc2hvdCk7CiB9CiAKIGJvb2wgTGV2ZWxEQlRy
YW5zYWN0aW9uOjpjb21taXQoKQpAQCAtMjU4LDcgKzI2MCw3IEBAIExldmVsREJUcmFuc2FjdGlv
bjo6VHJhbnNhY3Rpb25JdGVyYXRvcjo6VHJhbnNhY3Rpb25JdGVyYXRvcihQYXNzUmVmUHRyPExl
dmVsREJUCiAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICwgbV9jb21wYXJh
dG9yKG1fdHJhbnNhY3Rpb24tPm1fY29tcGFyYXRvcikKICAgICAsIG1fdHJlZUl0ZXJhdG9yKFRy
ZWVJdGVyYXRvcjo6Y3JlYXRlKG1fdHJhbnNhY3Rpb24uZ2V0KCkpKQotICAgICwgbV9kYkl0ZXJh
dG9yKG1fdHJhbnNhY3Rpb24tPm1fZGItPmNyZWF0ZUl0ZXJhdG9yKCkpCisgICAgLCBtX2RiSXRl
cmF0b3IobV90cmFuc2FjdGlvbi0+bV9kYi0+Y3JlYXRlSXRlcmF0b3IoJm1fdHJhbnNhY3Rpb24t
Pm1fc25hcHNob3QpKQogICAgICwgbV9jdXJyZW50KDApCiAgICAgLCBtX2RpcmVjdGlvbihrRm9y
d2FyZCkKICAgICAsIG1fdHJlZUNoYW5nZWQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uaAppbmRleCA4MGEzMzVkNDdh
MDEwYWY0ZDM4MmE1ZjE1YTE5NDU5MTczNzQ0ZjVmLi5iM2RjNjg0NGM2MTE5YzY2MDU3NDQxY2Zl
NWQ4MWJhMTdlZTU1ZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZl
bGRiL0xldmVsREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xl
dmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBVU0UoTEVW
RUxEQikKIAogI2luY2x1ZGUgIkxldmVsREJDb21wYXJhdG9yLmgiCisjaW5jbHVkZSAiTGV2ZWxE
QkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGV2
ZWxEQlNsaWNlLmgiCiAjaW5jbHVkZSA8d3RmL0FWTFRyZWUuaD4KQEAgLTQyLDcgKzQzLDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBMZXZlbERCRGF0YWJhc2U7CiBjbGFzcyBM
ZXZlbERCV3JpdGVCYXRjaDsKIAogdXNpbmcgV1RGOjpBVkxUcmVlOwpAQCAtMTY0LDYgKzE2NCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlJdGVyYXRvcnNPZlRyZWVDaGFuZ2UoKTsKIAog
ICAgIExldmVsREJEYXRhYmFzZSogbV9kYjsKKyAgICBjb25zdCBMZXZlbERCU25hcHNob3QgbV9z
bmFwc2hvdDsKICAgICBjb25zdCBMZXZlbERCQ29tcGFyYXRvciogbV9jb21wYXJhdG9yOwogICAg
IFRyZWVUeXBlIG1fdHJlZTsKICAgICBib29sIG1fZmluaXNoZWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xldmVsREJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTGV2ZWxEQlRlc3QuY3BwCmluZGV4IDJhMDBhZTY4NjFjMDBlOTA1ZTQz
Zjg1MDRhNTA1MTJjNTMxYWViYWQuLjdkYzAzNTVkZmU5MzVmMzkzMzE0NTBlZTY5NjYyOTc3MmVj
YzJmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGV2ZWxEQlRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGV2ZWxEQlRlc3QuY3Bw
CkBAIC0zMCw3ICszMCw5IEBACiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkxl
dmVsREJDb21wYXJhdG9yLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQkRhdGFiYXNlLmgiCisjaW5jbHVk
ZSAiTGV2ZWxEQkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQlNsaWNlLmgiCisjaW5jbHVk
ZSAiTGV2ZWxEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNs
dWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KQEAgLTUzLDcgKzU1LDcgQEAgVmVjdG9yPGNoYXI+IGVuY29kZVN0cmluZyhjb25zdCBz
dGQ6OnN0cmluZyYgcykKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0KHMuc2l6ZSgpKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHJldC5hcHBlbmQo
c1tpXSk7CisgICAgICAgIHJldFtpXSA9IHNbaV07CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAt
MTAwLDYgKzEwMiw5NyBAQCBURVNUKExldmVsREJEYXRhYmFzZVRlc3QsIENvcnJ1cHRpb25UZXN0
KQogICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKIH0KIAorVEVTVChMZXZlbERCRGF0YWJhc2VU
ZXN0LCBUcmFuc2FjdGlvbikKK3sKKyAgICBPd25QdHI8d2Via2l0X3N1cHBvcnQ6OlNjb3BlZFRl
bXBEaXJlY3Rvcnk+IHRlbXBEaXJlY3RvcnkgPSBhZG9wdFB0cih3ZWJraXRfc3VwcG9ydDo6Q3Jl
YXRlU2NvcGVkVGVtcERpcmVjdG9yeSgpKTsKKyAgICB0ZW1wRGlyZWN0b3J5LT5DcmVhdGVVbmlx
dWVUZW1wRGlyKCk7CisgICAgY29uc3QgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KHRl
bXBEaXJlY3RvcnktPnBhdGgoKS5jX3N0cigpKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBr
ZXkgPSBlbmNvZGVTdHJpbmcoImtleSIpOworICAgIFZlY3RvcjxjaGFyPiBnb3RWYWx1ZTsKKyAg
ICBTaW1wbGVDb21wYXJhdG9yIGNvbXBhcmF0b3I7CisKKyAgICBPd25QdHI8TGV2ZWxEQkRhdGFi
YXNlPiBsZXZlbGRiID0gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuKHBhdGgsICZjb21wYXJhdG9yKTsK
KyAgICBFWFBFQ1RfVFJVRShsZXZlbGRiKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBvbGRW
YWx1ZSA9IGVuY29kZVN0cmluZygidmFsdWUiKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBsZXZlbGRi
LT5wdXQoa2V5LCBvbGRWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisKKyAgICBS
ZWZQdHI8TGV2ZWxEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IExldmVsREJUcmFuc2FjdGlv
bjo6Y3JlYXRlKGxldmVsZGIuZ2V0KCkpOworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+IG5ld1Zh
bHVlID0gZW5jb2RlU3RyaW5nKCJuZXcgdmFsdWUiKTsKKyAgICBzdWNjZXNzID0gbGV2ZWxkYi0+
cHV0KGtleSwgbmV3VmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworCisgICAgc3Vj
Y2VzcyA9IHRyYW5zYWN0aW9uLT5nZXQoa2V5LCBnb3RWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUo
c3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShnb3RWYWx1ZSwgb2xk
VmFsdWUpLCAwKTsKKworICAgIHN1Y2Nlc3MgPSBsZXZlbGRiLT5nZXQoa2V5LCBnb3RWYWx1ZSk7
CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29t
cGFyZShnb3RWYWx1ZSwgbmV3VmFsdWUpLCAwKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBh
ZGRlZEtleSA9IGVuY29kZVN0cmluZygiYWRkZWQga2V5Iik7CisgICAgY29uc3QgVmVjdG9yPGNo
YXI+IGFkZGVkVmFsdWUgPSBlbmNvZGVTdHJpbmcoImFkZGVkIHZhbHVlIik7CisgICAgc3VjY2Vz
cyA9IGxldmVsZGItPnB1dChhZGRlZEtleSwgYWRkZWRWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUo
c3VjY2Vzcyk7CisKKyAgICBzdWNjZXNzID0gbGV2ZWxkYi0+Z2V0KGFkZGVkS2V5LCBnb3RWYWx1
ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3Iu
Y29tcGFyZShnb3RWYWx1ZSwgYWRkZWRWYWx1ZSksIDApOworCisgICAgc3VjY2VzcyA9IHRyYW5z
YWN0aW9uLT5nZXQoYWRkZWRLZXksIGdvdFZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vz
cyk7Cit9CisKK1RFU1QoTGV2ZWxEQkRhdGFiYXNlVGVzdCwgVHJhbnNhY3Rpb25JdGVyYXRvcikK
K3sKKyAgICBPd25QdHI8d2Via2l0X3N1cHBvcnQ6OlNjb3BlZFRlbXBEaXJlY3Rvcnk+IHRlbXBE
aXJlY3RvcnkgPSBhZG9wdFB0cih3ZWJraXRfc3VwcG9ydDo6Q3JlYXRlU2NvcGVkVGVtcERpcmVj
dG9yeSgpKTsKKyAgICB0ZW1wRGlyZWN0b3J5LT5DcmVhdGVVbmlxdWVUZW1wRGlyKCk7CisgICAg
Y29uc3QgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KHRlbXBEaXJlY3RvcnktPnBhdGgo
KS5jX3N0cigpKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydCA9IGVuY29kZVN0cmlu
ZygiIik7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleTEgPSBlbmNvZGVTdHJpbmcoImtleTEi
KTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gdmFsdWUxID0gZW5jb2RlU3RyaW5nKCJ2YWx1ZTEi
KTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5MiA9IGVuY29kZVN0cmluZygia2V5MiIpOwor
ICAgIGNvbnN0IFZlY3RvcjxjaGFyPiB2YWx1ZTIgPSBlbmNvZGVTdHJpbmcoInZhbHVlMiIpOwor
CisgICAgU2ltcGxlQ29tcGFyYXRvciBjb21wYXJhdG9yOworICAgIGJvb2wgc3VjY2VzczsKKwor
ICAgIE93blB0cjxMZXZlbERCRGF0YWJhc2U+IGxldmVsZGIgPSBMZXZlbERCRGF0YWJhc2U6Om9w
ZW4ocGF0aCwgJmNvbXBhcmF0b3IpOworICAgIEVYUEVDVF9UUlVFKGxldmVsZGIpOworCisgICAg
c3VjY2VzcyA9IGxldmVsZGItPnB1dChrZXkxLCB2YWx1ZTEpOworICAgIEVYUEVDVF9UUlVFKHN1
Y2Nlc3MpOworICAgIHN1Y2Nlc3MgPSBsZXZlbGRiLT5wdXQoa2V5MiwgdmFsdWUyKTsKKyAgICBF
WFBFQ1RfVFJVRShzdWNjZXNzKTsKKworICAgIFJlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+IHRy
YW5zYWN0aW9uID0gTGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUobGV2ZWxkYi5nZXQoKSk7CisK
KyAgICBzdWNjZXNzID0gbGV2ZWxkYi0+cmVtb3ZlKGtleTIpOworICAgIEVYUEVDVF9UUlVFKHN1
Y2Nlc3MpOworCisgICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gaXQgPSB0cmFuc2FjdGlvbi0+
Y3JlYXRlSXRlcmF0b3IoKTsKKworICAgIGl0LT5zZWVrKHN0YXJ0KTsKKworICAgIEVYUEVDVF9U
UlVFKGl0LT5pc1ZhbGlkKCkpOworICAgIEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUoaXQt
PmtleSgpLCBrZXkxKSwgMCk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShpdC0+
dmFsdWUoKSwgdmFsdWUxKSwgMCk7CisKKyAgICBpdC0+bmV4dCgpOworCisgICAgRVhQRUNUX1RS
VUUoaXQtPmlzVmFsaWQoKSk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShpdC0+
a2V5KCksIGtleTIpLCAwKTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKGl0LT52
YWx1ZSgpLCB2YWx1ZTIpLCAwKTsKKworICAgIGl0LT5uZXh0KCk7CisKKyAgICBFWFBFQ1RfRkFM
U0UoaXQtPmlzVmFsaWQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZiAvLyBVU0Uo
TEVWRUxEQikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBhNzFiNDAyZTJmYTk0MGJiNzZjMmMzZTkyMjFhYWFjZmNhM2U1YzMz
Li45MzUyMTAxNTE1N2ViZmFhN2RjNDNhM2ZjZTYxYmM5MzYzZDMzNWIzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0zNyw2
ICszNywxMiBAQAogICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL3BlZXJj
b25uZWN0aW9uLWFyZ3VtZW50LXR5cGVzLmpzOgogICAgICAgICAqIGZhc3Qvd29ya2Vycy9zdG9y
YWdlL29wZW4tZGF0YWJhc2UtaW5wdXRzLXN5bmMtZXhwZWN0ZWQudHh0OgogCisyMDEyLTExLTA4
ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVt
XSBVbnJldmlld2VkIGdhcmRlbmluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnM6CisKIDIwMTItMTEtMDggIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25A
aW50ZWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEV2ZW4gbW9yZSBnYXJkZW5pbmcgYWZ0
ZXIgcjEzMzg5OC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDUxMzNiNDE3MWFiZGVlM2I3YjY4MWFmYzA1NDhmZWI2OGFmZTBkNDIuLmIw
MGE4MmU1YWEyZTRhYzI0ZDQ1Yzk5NGJkNTgxNDZhM2FjN2JjZTQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDE5MCwxMSArNDE5MCwx
MSBAQCB3ZWJraXQub3JnL2IvMTAxNTQ3IGZhc3QvcmVwYWludC9jYXJldC1vdXRzaWRlLWJsb2Nr
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDE1NDcgZmFzdC9yZXBh
aW50L2RlbGV0ZS1pbnRvLW5lc3RlZC1ibG9jay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMTAxNTQ3IGZhc3QvcmVwYWludC9pbmxpbmUtb3V0bGluZS1yZXBhaW50Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KICMgVGhlIGZvbGxvd2luZyB0ZXN0IGhhcyBwcmlvciBl
eHBlY3RhdGlvbnMgd2hpY2ggd2VyZSBkaXNhYmxlZC4gUmUtZW5hYmxlIHdoZW4gcmVtb3Zpbmcg
dGhpczoKLXdlYmtpdC5vcmcvYi8xMDE1NDcgZmFzdC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVj
dGlvbi1jbGVhci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTAxNTQ3
IGZhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24tY2xlYXIuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgRmFpbHVyZSBdCiAjIFRoZSBmb2xsb3dpbmcgdGVzdCBoYXMgcHJpb3IgZXhwZWN0
YXRpb25zIHdoaWNoIHdlcmUgZGlzYWJsZWQuIFJlLWVuYWJsZSB3aGVuIHJlbW92aW5nIHRoaXM6
Ci13ZWJraXQub3JnL2IvMTAxNTQ3IGZhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24t
cmVwYWludC1pbi1yZWdpb25zLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcv
Yi8xMDE1NDcgZmFzdC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50LWluLXJl
Z2lvbnMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgRmFpbHVyZSBdCiAjIFRoZSBmb2xsb3dpbmcg
dGVzdCBoYXMgcHJpb3IgZXhwZWN0YXRpb25zIHdoaWNoIHdlcmUgZGlzYWJsZWQuIFJlLWVuYWJs
ZSB3aGVuIHJlbW92aW5nIHRoaXM6Ci13ZWJraXQub3JnL2IvMTAxNTQ3IGZhc3QvcmVwYWludC9q
YXBhbmVzZS1ybC1zZWxlY3Rpb24tcmVwYWludC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3
ZWJraXQub3JnL2IvMTAxNTQ3IGZhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24tcmVw
YWludC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDE1
NDcgZmFzdC9yZXBhaW50L25vLWNhcmV0LXJlcGFpbnQtaW4tbm9uLWNvbnRlbnQtZWRpdGFibGUt
ZWxlbWVudC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTAxNTQ3IGZh
c3QvcmVwYWludC9yZXBhaW50LWFjcm9zcy13cml0aW5nLW1vZGUtYm91bmRhcnkuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEwMTU0NyBmYXN0L3JlcGFpbnQvc2VsZWN0
aW9uLWFmdGVyLWRlbGV0ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173110</attachid>
            <date>2012-11-08 13:45:38 -0800</date>
            <delta_ts>2012-11-08 13:50:03 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-100786-20121108134347.patch</filename>
            <type>text/plain</type>
            <size>15034</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzOTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjYwZWVjZThkNjQyMDI2
ODg5NjUwYWI0NWFlZjgyNTg4Njk4N2U4MC4uY2MxYTUwNWRiYTE0YjIwNjdkNDRiNWE0MGYzZjhk
N2YzMWUzZTQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTExLTAxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXhwb3NlIHNuYXBzaG90
cyBpbiBwbGF0Zm9ybS9sZXZlbGRiIHdyYXBwZXIgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3ODYKKworICAgICAgICBSZXZpZXdlZCBieSBU
b255IENoYW5nLgorCisgICAgICAgIEV4cG9zZSBsZXZlbGRiICJzbmFwc2hvdHMiIGluIHRoZSBM
ZXZlbERCIEFQSS4gQSBzbmFwc2hvdCBsZXRzIHlvdSBvYnNlcnZlIHRoZSBkYXRhYmFzZQorICAg
ICAgICBhcyBpdCB3YXMgd2hlbiB0aGUgc25hcHNob3Qgd2FzIHRha2VuLiBUaGlzIGNhbiBiZSB1
c2VkIHRvIGltcGxlbWVudCBwYXJhbGxlbCB0cmFuc2FjdGlvbnMsCisgICAgICAgIGUuZy4gd2hl
cmUgYSByZWFkIHRyYW5zYWN0aW9uIHdvbid0IHNlZSB1cGRhdGVzIG1hZGUgYnkgYSBsYXRlciB3
cml0ZSB0cmFuc2FjdGlvbi4KKworICAgICAgICBUZXN0czogd2Via2l0X3VuaXRfdGVzdHMgLS1n
dGVzdF9maWx0ZXI9J0xldmVsREJEYXRhYmFzZVRlc3QuVHJhbnNhY3Rpb24qJworCisgICAgICAg
ICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGV2ZWxEQlNuYXBzaG90OjpMZXZlbERCU25hcHNob3QpOiBOZXcgKGJ1dCBmb3Igbm93IGlu
dGVybmFsLW9ubHkpIHdyYXBwZXIgdHlwZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGV2ZWxEQlNuYXBzaG90Ojp+TGV2ZWxEQlNuYXBzaG90KTogUmVsZWFzZSB0aGUg
bGV2ZWxkYjo6U25hcHNob3QuCisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCRGF0YWJhc2U6Omdl
dCk6IE9wdGlvbmFsIHNuYXBzaG90IGFyZ3VtZW50LCBmb3IgdXNlIGJ5IHRyYW5zYWN0aW9ucy4K
KyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJEYXRhYmFzZTo6Y3JlYXRlSXRlcmF0b3IpOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5oOgorICAgICAg
ICAobGV2ZWxkYik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKExldmVsREJTbmFwc2hv
dCk6CisgICAgICAgIChMZXZlbERCRGF0YWJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2xldmVs
ZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJUcmFu
c2FjdGlvbjo6TGV2ZWxEQlRyYW5zYWN0aW9uKTogSW5pdGlhbGl6ZSBhIHNuYXBzaG90LgorICAg
ICAgICAoV2ViQ29yZTo6TGV2ZWxEQlRyYW5zYWN0aW9uOjpnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGV2ZWxEQlRyYW5zYWN0aW9uOjpUcmFuc2FjdGlvbkl0ZXJhdG9yOjpUcmFuc2FjdGlvbkl0
ZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5o
OgorICAgICAgICAoTGV2ZWxEQlRyYW5zYWN0aW9uKToKKwogMjAxMi0xMS0wOCAgRWxsaW90dCBT
cHJlaG4gIDxlc3ByZWhuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBTa2lwIGZyYW1lIG93bmVy
IGRpc2Nvbm5lY3Qgd2hlbiB0aGVyZSdzIG5vIGZyYW1lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCBiMTM0MTMwOGViZWExMjA2YTZjMGMzYTZlYThmYzM1ZWVlMzUxN2FlLi45YjI1MzE4
ZWQ1MDU4ZDBmZTljOTQwZjFhMDVlNWRjMGMxYTMzMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTExLTAxICBKb3NodWEgQmVsbCAgPGpzYmVsbEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXhwb3NlIHNuYXBzaG90cyBpbiBwbGF0Zm9ybS9sZXZl
bGRiIHdyYXBwZXIgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDA3ODYKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5nLgorCisgICAg
ICAgIEFkZCB1bml0IHRlc3RzIGZvciB0cmFuc2FjdGlvbnMvc25hcHNob3RzLgorCisgICAgICAg
ICogdGVzdHMvTGV2ZWxEQlRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlU3RyaW5n
KTogRG9uJ3QgYXBwZW5kIHRvIHByZS1zaXplZCB2ZWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpU
RVNUKToKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTExLTA4ICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVk
IERFUFMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVs
REJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJE
YXRhYmFzZS5jcHAKaW5kZXggMjczYWZkNGRlYzFhYWU3MGJkMWFhOTJiMDhlNjgwNGJiMjYzMDhj
Mi4uZWRmOWRiMjU3MmUzNThmN2I1Y2MzYTc1NDQ3MzBhZDQ3ZmNmMzFkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcApAQCAt
ODksNiArODksMTcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBMZXZlbERCQ29tcGFyYXRvciogbV9j
b21wYXJhdG9yOwogfTsKIAorTGV2ZWxEQlNuYXBzaG90OjpMZXZlbERCU25hcHNob3QoTGV2ZWxE
QkRhdGFiYXNlKiBkYikKKyAgICA6IG1fZGIoZGItPm1fZGIuZ2V0KCkpCisgICAgLCBtX3NuYXBz
aG90KG1fZGItPkdldFNuYXBzaG90KCkpCit7Cit9CisKK0xldmVsREJTbmFwc2hvdDo6fkxldmVs
REJTbmFwc2hvdCgpCit7CisgICAgbV9kYi0+UmVsZWFzZVNuYXBzaG90KG1fc25hcHNob3QpOwor
fQorCiBMZXZlbERCRGF0YWJhc2U6OkxldmVsREJEYXRhYmFzZSgpCiB7CiB9CkBAIC0xODcsMTEg
KzE5OCwxMiBAQCBib29sIExldmVsREJEYXRhYmFzZTo6cmVtb3ZlKGNvbnN0IExldmVsREJTbGlj
ZSYga2V5KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBMZXZlbERCRGF0YWJhc2U6Omdl
dChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgVmVjdG9yPGNoYXI+JiB2YWx1ZSkKK2Jvb2wgTGV2
ZWxEQkRhdGFiYXNlOjpnZXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIFZlY3RvcjxjaGFyPiYg
dmFsdWUsIGNvbnN0IExldmVsREJTbmFwc2hvdCogc25hcHNob3QpCiB7CiAgICAgc3RkOjpzdHJp
bmcgcmVzdWx0OwogICAgIGxldmVsZGI6OlJlYWRPcHRpb25zIHJlYWRPcHRpb25zOwogICAgIHJl
YWRPcHRpb25zLnZlcmlmeV9jaGVja3N1bXMgPSB0cnVlOyAvLyBGSVhNRTogRGlzYWJsZSB0aGlz
IGlmIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3QgaXMgdG9vIGdyZWF0LgorICAgIHJlYWRPcHRpb25z
LnNuYXBzaG90ID0gc25hcHNob3QgPyBzbmFwc2hvdC0+bV9zbmFwc2hvdCA6IDA7CiAKICAgICBj
b25zdCBsZXZlbGRiOjpTdGF0dXMgcyA9IG1fZGItPkdldChyZWFkT3B0aW9ucywgbWFrZVNsaWNl
KGtleSksICZyZXN1bHQpOwogICAgIGlmIChzLm9rKCkpIHsKQEAgLTI5MywxMCArMzA1LDExIEBA
IExldmVsREJTbGljZSBJdGVyYXRvckltcGw6OnZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gbWFr
ZUxldmVsREJTbGljZShtX2l0ZXJhdG9yLT52YWx1ZSgpKTsKIH0KIAotUGFzc093blB0cjxMZXZl
bERCSXRlcmF0b3I+IExldmVsREJEYXRhYmFzZTo6Y3JlYXRlSXRlcmF0b3IoKQorUGFzc093blB0
cjxMZXZlbERCSXRlcmF0b3I+IExldmVsREJEYXRhYmFzZTo6Y3JlYXRlSXRlcmF0b3IoY29uc3Qg
TGV2ZWxEQlNuYXBzaG90KiBzbmFwc2hvdCkKIHsKICAgICBsZXZlbGRiOjpSZWFkT3B0aW9ucyBy
ZWFkT3B0aW9uczsKICAgICByZWFkT3B0aW9ucy52ZXJpZnlfY2hlY2tzdW1zID0gdHJ1ZTsgLy8g
RklYTUU6IERpc2FibGUgdGhpcyBpZiB0aGUgcGVyZm9ybWFuY2UgaW1wYWN0IGlzIHRvbyBncmVh
dC4KKyAgICByZWFkT3B0aW9ucy5zbmFwc2hvdCA9IHNuYXBzaG90ID8gc25hcHNob3QtPm1fc25h
cHNob3QgOiAwOwogICAgIE93blB0cjxsZXZlbGRiOjpJdGVyYXRvcj4gaSA9IGFkb3B0UHRyKG1f
ZGItPk5ld0l0ZXJhdG9yKHJlYWRPcHRpb25zKSk7CiAgICAgaWYgKCFpKSAvLyBGSVhNRTogRG91
YmxlIGNoZWNrIGlmIHdlIGFjdHVhbGx5IG5lZWQgdG8gY2hlY2sgdGhpcy4KICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRi
L0xldmVsREJEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZl
bERCRGF0YWJhc2UuaAppbmRleCBlODBiNDlhMjRhYzc3ZDJmYzAzZjEwYWUzYjBkYjcwZjM2YTI2
NzY5Li4yZDMyY2Q3MzYzZTU4MzY3N2Q1Y2M3YTQ4NDM2ZTMwMjczYThmNWVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmgKQEAgLTM3
LDE1ICszNywyOSBAQCBuYW1lc3BhY2UgbGV2ZWxkYiB7CiBjbGFzcyBDb21wYXJhdG9yOwogY2xh
c3MgREI7CiBjbGFzcyBFbnY7CitjbGFzcyBTbmFwc2hvdDsKIH0KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBMZXZlbERCQ29tcGFyYXRvcjsKK2NsYXNzIExldmVsREJEYXRhYmFzZTsK
IGNsYXNzIExldmVsREJJdGVyYXRvcjsKIGNsYXNzIExldmVsREJTbGljZTsKIGNsYXNzIExldmVs
REJXcml0ZUJhdGNoOwogCitjbGFzcyBMZXZlbERCU25hcHNob3QgeworcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgTGV2ZWxEQkRhdGFiYXNlOworICAgIGZyaWVuZCBjbGFzcyBMZXZlbERCVHJh
bnNhY3Rpb247CisKKyAgICBleHBsaWNpdCBMZXZlbERCU25hcHNob3QoTGV2ZWxEQkRhdGFiYXNl
Kik7CisgICAgfkxldmVsREJTbmFwc2hvdCgpOworCisgICAgbGV2ZWxkYjo6REIqIG1fZGI7Cisg
ICAgY29uc3QgbGV2ZWxkYjo6U25hcHNob3QqIG1fc25hcHNob3Q7Cit9OworCiBjbGFzcyBMZXZl
bERCRGF0YWJhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPExldmVsREJEYXRh
YmFzZT4gb3Blbihjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBMZXZlbERCQ29tcGFyYXRv
ciopOwpAQCAtNTUsMTIgKzY5LDEzIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgcHV0KGNvbnN0IExl
dmVsREJTbGljZSYga2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlKTsKICAgICBib29sIHJl
bW92ZShjb25zdCBMZXZlbERCU2xpY2UmIGtleSk7Ci0gICAgYm9vbCBnZXQoY29uc3QgTGV2ZWxE
QlNsaWNlJiBrZXksIFZlY3RvcjxjaGFyPiYgdmFsdWUpOworICAgIGJvb2wgZ2V0KGNvbnN0IExl
dmVsREJTbGljZSYga2V5LCBWZWN0b3I8Y2hhcj4mIHZhbHVlLCBjb25zdCBMZXZlbERCU25hcHNo
b3QqID0gMCk7CiAgICAgYm9vbCB3cml0ZShMZXZlbERCV3JpdGVCYXRjaCYpOwotICAgIFBhc3NP
d25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBjcmVhdGVJdGVyYXRvcigpOworICAgIFBhc3NPd25QdHI8
TGV2ZWxEQkl0ZXJhdG9yPiBjcmVhdGVJdGVyYXRvcihjb25zdCBMZXZlbERCU25hcHNob3QqID0g
MCk7CiAgICAgY29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqIGNvbXBhcmF0b3IoKSBjb25zdDsKIAog
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTGV2ZWxEQlNuYXBzaG90OwogICAgIExldmVsREJE
YXRhYmFzZSgpOwogCiAgICAgT3duUHRyPGxldmVsZGI6OkVudj4gbV9lbnY7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHAK
aW5kZXggOGZlM2ZkMDhlZGIyNzliY2UzODQ1MGQ1YzdiOWJiYTAxNzQ3NTk1My4uN2ZlMGJhOGI2
NDdjNTliYWFhMWUwNWE4MzAwYjRiMDg4M2ZiNjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcApAQCAtMjYsMTIg
KzI2LDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQlRyYW5zYWN0
aW9uLmgiCiAKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyNpZiBVU0UoTEVWRUxEQikK
KwogI2luY2x1ZGUgIkxldmVsREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkxldmVsREJTbGljZS5o
IgogI2luY2x1ZGUgIkxldmVsREJXcml0ZUJhdGNoLmgiCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKLSNpZiBVU0UoTEVWRUxEQikKKyNpbmNsdWRlIDxsZXZlbGRiL2RiLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsNiArNDMsNyBAQCBQYXNzUmVmUHRyPExldmVsREJU
cmFuc2FjdGlvbj4gTGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUoTGV2ZWxEQkRhdGFiYXNlKiBk
YikKIAogTGV2ZWxEQlRyYW5zYWN0aW9uOjpMZXZlbERCVHJhbnNhY3Rpb24oTGV2ZWxEQkRhdGFi
YXNlKiBkYikKICAgICA6IG1fZGIoZGIpCisgICAgLCBtX3NuYXBzaG90KGRiKQogICAgICwgbV9j
b21wYXJhdG9yKGRiLT5jb21wYXJhdG9yKCkpCiAgICAgLCBtX2ZpbmlzaGVkKGZhbHNlKQogewpA
QCAtMTE5LDcgKzEyMSw3IEBAIGJvb2wgTGV2ZWxEQlRyYW5zYWN0aW9uOjpnZXQoY29uc3QgTGV2
ZWxEQlNsaWNlJiBrZXksIFZlY3RvcjxjaGFyPiYgdmFsdWUpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAotICAgIHJldHVybiBtX2RiLT5nZXQoa2V5LCB2YWx1ZSk7CisgICAgcmV0dXJu
IG1fZGItPmdldChrZXksIHZhbHVlLCAmbV9zbmFwc2hvdCk7CiB9CiAKIGJvb2wgTGV2ZWxEQlRy
YW5zYWN0aW9uOjpjb21taXQoKQpAQCAtMjU4LDcgKzI2MCw3IEBAIExldmVsREJUcmFuc2FjdGlv
bjo6VHJhbnNhY3Rpb25JdGVyYXRvcjo6VHJhbnNhY3Rpb25JdGVyYXRvcihQYXNzUmVmUHRyPExl
dmVsREJUCiAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQogICAgICwgbV9jb21wYXJh
dG9yKG1fdHJhbnNhY3Rpb24tPm1fY29tcGFyYXRvcikKICAgICAsIG1fdHJlZUl0ZXJhdG9yKFRy
ZWVJdGVyYXRvcjo6Y3JlYXRlKG1fdHJhbnNhY3Rpb24uZ2V0KCkpKQotICAgICwgbV9kYkl0ZXJh
dG9yKG1fdHJhbnNhY3Rpb24tPm1fZGItPmNyZWF0ZUl0ZXJhdG9yKCkpCisgICAgLCBtX2RiSXRl
cmF0b3IobV90cmFuc2FjdGlvbi0+bV9kYi0+Y3JlYXRlSXRlcmF0b3IoJm1fdHJhbnNhY3Rpb24t
Pm1fc25hcHNob3QpKQogICAgICwgbV9jdXJyZW50KDApCiAgICAgLCBtX2RpcmVjdGlvbihrRm9y
d2FyZCkKICAgICAsIG1fdHJlZUNoYW5nZWQoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uaAppbmRleCA4MGEzMzVkNDdh
MDEwYWY0ZDM4MmE1ZjE1YTE5NDU5MTczNzQ0ZjVmLi5iM2RjNjg0NGM2MTE5YzY2MDU3NDQxY2Zl
NWQ4MWJhMTdlZTU1ZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZl
bGRiL0xldmVsREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xl
dmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBVU0UoTEVW
RUxEQikKIAogI2luY2x1ZGUgIkxldmVsREJDb21wYXJhdG9yLmgiCisjaW5jbHVkZSAiTGV2ZWxE
QkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGV2
ZWxEQlNsaWNlLmgiCiAjaW5jbHVkZSA8d3RmL0FWTFRyZWUuaD4KQEAgLTQyLDcgKzQzLDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBMZXZlbERCRGF0YWJhc2U7CiBjbGFzcyBM
ZXZlbERCV3JpdGVCYXRjaDsKIAogdXNpbmcgV1RGOjpBVkxUcmVlOwpAQCAtMTY0LDYgKzE2NCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlJdGVyYXRvcnNPZlRyZWVDaGFuZ2UoKTsKIAog
ICAgIExldmVsREJEYXRhYmFzZSogbV9kYjsKKyAgICBjb25zdCBMZXZlbERCU25hcHNob3QgbV9z
bmFwc2hvdDsKICAgICBjb25zdCBMZXZlbERCQ29tcGFyYXRvciogbV9jb21wYXJhdG9yOwogICAg
IFRyZWVUeXBlIG1fdHJlZTsKICAgICBib29sIG1fZmluaXNoZWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xldmVsREJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTGV2ZWxEQlRlc3QuY3BwCmluZGV4IDJhMDBhZTY4NjFjMDBlOTA1ZTQz
Zjg1MDRhNTA1MTJjNTMxYWViYWQuLjdkYzAzNTVkZmU5MzVmMzkzMzE0NTBlZTY5NjYyOTc3MmVj
YzJmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGV2ZWxEQlRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGV2ZWxEQlRlc3QuY3Bw
CkBAIC0zMCw3ICszMCw5IEBACiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkxl
dmVsREJDb21wYXJhdG9yLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQkRhdGFiYXNlLmgiCisjaW5jbHVk
ZSAiTGV2ZWxEQkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQlNsaWNlLmgiCisjaW5jbHVk
ZSAiTGV2ZWxEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNs
dWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KQEAgLTUzLDcgKzU1LDcgQEAgVmVjdG9yPGNoYXI+IGVuY29kZVN0cmluZyhjb25zdCBz
dGQ6OnN0cmluZyYgcykKIHsKICAgICBWZWN0b3I8Y2hhcj4gcmV0KHMuc2l6ZSgpKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHJldC5hcHBlbmQo
c1tpXSk7CisgICAgICAgIHJldFtpXSA9IHNbaV07CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAt
MTAwLDYgKzEwMiw5NyBAQCBURVNUKExldmVsREJEYXRhYmFzZVRlc3QsIENvcnJ1cHRpb25UZXN0
KQogICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKIH0KIAorVEVTVChMZXZlbERCRGF0YWJhc2VU
ZXN0LCBUcmFuc2FjdGlvbikKK3sKKyAgICBPd25QdHI8d2Via2l0X3N1cHBvcnQ6OlNjb3BlZFRl
bXBEaXJlY3Rvcnk+IHRlbXBEaXJlY3RvcnkgPSBhZG9wdFB0cih3ZWJraXRfc3VwcG9ydDo6Q3Jl
YXRlU2NvcGVkVGVtcERpcmVjdG9yeSgpKTsKKyAgICB0ZW1wRGlyZWN0b3J5LT5DcmVhdGVVbmlx
dWVUZW1wRGlyKCk7CisgICAgY29uc3QgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KHRl
bXBEaXJlY3RvcnktPnBhdGgoKS5jX3N0cigpKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBr
ZXkgPSBlbmNvZGVTdHJpbmcoImtleSIpOworICAgIFZlY3RvcjxjaGFyPiBnb3RWYWx1ZTsKKyAg
ICBTaW1wbGVDb21wYXJhdG9yIGNvbXBhcmF0b3I7CisKKyAgICBPd25QdHI8TGV2ZWxEQkRhdGFi
YXNlPiBsZXZlbGRiID0gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuKHBhdGgsICZjb21wYXJhdG9yKTsK
KyAgICBFWFBFQ1RfVFJVRShsZXZlbGRiKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBvbGRW
YWx1ZSA9IGVuY29kZVN0cmluZygidmFsdWUiKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBsZXZlbGRi
LT5wdXQoa2V5LCBvbGRWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisKKyAgICBS
ZWZQdHI8TGV2ZWxEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IExldmVsREJUcmFuc2FjdGlv
bjo6Y3JlYXRlKGxldmVsZGIuZ2V0KCkpOworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+IG5ld1Zh
bHVlID0gZW5jb2RlU3RyaW5nKCJuZXcgdmFsdWUiKTsKKyAgICBzdWNjZXNzID0gbGV2ZWxkYi0+
cHV0KGtleSwgbmV3VmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworCisgICAgc3Vj
Y2VzcyA9IHRyYW5zYWN0aW9uLT5nZXQoa2V5LCBnb3RWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUo
c3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShnb3RWYWx1ZSwgb2xk
VmFsdWUpLCAwKTsKKworICAgIHN1Y2Nlc3MgPSBsZXZlbGRiLT5nZXQoa2V5LCBnb3RWYWx1ZSk7
CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29t
cGFyZShnb3RWYWx1ZSwgbmV3VmFsdWUpLCAwKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBh
ZGRlZEtleSA9IGVuY29kZVN0cmluZygiYWRkZWQga2V5Iik7CisgICAgY29uc3QgVmVjdG9yPGNo
YXI+IGFkZGVkVmFsdWUgPSBlbmNvZGVTdHJpbmcoImFkZGVkIHZhbHVlIik7CisgICAgc3VjY2Vz
cyA9IGxldmVsZGItPnB1dChhZGRlZEtleSwgYWRkZWRWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUo
c3VjY2Vzcyk7CisKKyAgICBzdWNjZXNzID0gbGV2ZWxkYi0+Z2V0KGFkZGVkS2V5LCBnb3RWYWx1
ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3Iu
Y29tcGFyZShnb3RWYWx1ZSwgYWRkZWRWYWx1ZSksIDApOworCisgICAgc3VjY2VzcyA9IHRyYW5z
YWN0aW9uLT5nZXQoYWRkZWRLZXksIGdvdFZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vz
cyk7Cit9CisKK1RFU1QoTGV2ZWxEQkRhdGFiYXNlVGVzdCwgVHJhbnNhY3Rpb25JdGVyYXRvcikK
K3sKKyAgICBPd25QdHI8d2Via2l0X3N1cHBvcnQ6OlNjb3BlZFRlbXBEaXJlY3Rvcnk+IHRlbXBE
aXJlY3RvcnkgPSBhZG9wdFB0cih3ZWJraXRfc3VwcG9ydDo6Q3JlYXRlU2NvcGVkVGVtcERpcmVj
dG9yeSgpKTsKKyAgICB0ZW1wRGlyZWN0b3J5LT5DcmVhdGVVbmlxdWVUZW1wRGlyKCk7CisgICAg
Y29uc3QgU3RyaW5nIHBhdGggPSBTdHJpbmc6OmZyb21VVEY4KHRlbXBEaXJlY3RvcnktPnBhdGgo
KS5jX3N0cigpKTsKKworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydCA9IGVuY29kZVN0cmlu
ZygiIik7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleTEgPSBlbmNvZGVTdHJpbmcoImtleTEi
KTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gdmFsdWUxID0gZW5jb2RlU3RyaW5nKCJ2YWx1ZTEi
KTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5MiA9IGVuY29kZVN0cmluZygia2V5MiIpOwor
ICAgIGNvbnN0IFZlY3RvcjxjaGFyPiB2YWx1ZTIgPSBlbmNvZGVTdHJpbmcoInZhbHVlMiIpOwor
CisgICAgU2ltcGxlQ29tcGFyYXRvciBjb21wYXJhdG9yOworICAgIGJvb2wgc3VjY2VzczsKKwor
ICAgIE93blB0cjxMZXZlbERCRGF0YWJhc2U+IGxldmVsZGIgPSBMZXZlbERCRGF0YWJhc2U6Om9w
ZW4ocGF0aCwgJmNvbXBhcmF0b3IpOworICAgIEVYUEVDVF9UUlVFKGxldmVsZGIpOworCisgICAg
c3VjY2VzcyA9IGxldmVsZGItPnB1dChrZXkxLCB2YWx1ZTEpOworICAgIEVYUEVDVF9UUlVFKHN1
Y2Nlc3MpOworICAgIHN1Y2Nlc3MgPSBsZXZlbGRiLT5wdXQoa2V5MiwgdmFsdWUyKTsKKyAgICBF
WFBFQ1RfVFJVRShzdWNjZXNzKTsKKworICAgIFJlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+IHRy
YW5zYWN0aW9uID0gTGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGUobGV2ZWxkYi5nZXQoKSk7CisK
KyAgICBzdWNjZXNzID0gbGV2ZWxkYi0+cmVtb3ZlKGtleTIpOworICAgIEVYUEVDVF9UUlVFKHN1
Y2Nlc3MpOworCisgICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gaXQgPSB0cmFuc2FjdGlvbi0+
Y3JlYXRlSXRlcmF0b3IoKTsKKworICAgIGl0LT5zZWVrKHN0YXJ0KTsKKworICAgIEVYUEVDVF9U
UlVFKGl0LT5pc1ZhbGlkKCkpOworICAgIEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUoaXQt
PmtleSgpLCBrZXkxKSwgMCk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShpdC0+
dmFsdWUoKSwgdmFsdWUxKSwgMCk7CisKKyAgICBpdC0+bmV4dCgpOworCisgICAgRVhQRUNUX1RS
VUUoaXQtPmlzVmFsaWQoKSk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShpdC0+
a2V5KCksIGtleTIpLCAwKTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKGl0LT52
YWx1ZSgpLCB2YWx1ZTIpLCAwKTsKKworICAgIGl0LT5uZXh0KCk7CisKKyAgICBFWFBFQ1RfRkFM
U0UoaXQtPmlzVmFsaWQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZiAvLyBVU0Uo
TEVWRUxEQikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA4ODdmMTNlZTYxMzg3MGEzZmIxMTAzMGQ5MTRiYmRmMjY5Zjc4MTk3
Li5lODIyYWZmOGQyOTg4YzM3YTE0ZjE2M2VkOWUyNWI2NzJhOWZmZTI4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC04OCw2
ICs4OCwxMiBAQAogICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL3BlZXJj
b25uZWN0aW9uLWFyZ3VtZW50LXR5cGVzLmpzOgogICAgICAgICAqIGZhc3Qvd29ya2Vycy9zdG9y
YWdlL29wZW4tZGF0YWJhc2UtaW5wdXRzLXN5bmMtZXhwZWN0ZWQudHh0OgogCisyMDEyLTExLTA4
ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVt
XSBVbnJldmlld2VkIGdhcmRlbmluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnM6CisKIDIwMTItMTEtMDggIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25A
aW50ZWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEV2ZW4gbW9yZSBnYXJkZW5pbmcgYWZ0
ZXIgcjEzMzg5OC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDUxMzNiNDE3MWFiZGVlM2I3YjY4MWFmYzA1NDhmZWI2OGFmZTBkNDIuLmIw
MGE4MmU1YWEyZTRhYzI0ZDQ1Yzk5NGJkNTgxNDZhM2FjN2JjZTQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDE5MCwxMSArNDE5MCwx
MSBAQCB3ZWJraXQub3JnL2IvMTAxNTQ3IGZhc3QvcmVwYWludC9jYXJldC1vdXRzaWRlLWJsb2Nr
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDE1NDcgZmFzdC9yZXBh
aW50L2RlbGV0ZS1pbnRvLW5lc3RlZC1ibG9jay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvMTAxNTQ3IGZhc3QvcmVwYWludC9pbmxpbmUtb3V0bGluZS1yZXBhaW50Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KICMgVGhlIGZvbGxvd2luZyB0ZXN0IGhhcyBwcmlvciBl
eHBlY3RhdGlvbnMgd2hpY2ggd2VyZSBkaXNhYmxlZC4gUmUtZW5hYmxlIHdoZW4gcmVtb3Zpbmcg
dGhpczoKLXdlYmtpdC5vcmcvYi8xMDE1NDcgZmFzdC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVj
dGlvbi1jbGVhci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTAxNTQ3
IGZhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24tY2xlYXIuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgRmFpbHVyZSBdCiAjIFRoZSBmb2xsb3dpbmcgdGVzdCBoYXMgcHJpb3IgZXhwZWN0
YXRpb25zIHdoaWNoIHdlcmUgZGlzYWJsZWQuIFJlLWVuYWJsZSB3aGVuIHJlbW92aW5nIHRoaXM6
Ci13ZWJraXQub3JnL2IvMTAxNTQ3IGZhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24t
cmVwYWludC1pbi1yZWdpb25zLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcv
Yi8xMDE1NDcgZmFzdC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50LWluLXJl
Z2lvbnMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgRmFpbHVyZSBdCiAjIFRoZSBmb2xsb3dpbmcg
dGVzdCBoYXMgcHJpb3IgZXhwZWN0YXRpb25zIHdoaWNoIHdlcmUgZGlzYWJsZWQuIFJlLWVuYWJs
ZSB3aGVuIHJlbW92aW5nIHRoaXM6Ci13ZWJraXQub3JnL2IvMTAxNTQ3IGZhc3QvcmVwYWludC9q
YXBhbmVzZS1ybC1zZWxlY3Rpb24tcmVwYWludC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3
ZWJraXQub3JnL2IvMTAxNTQ3IGZhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24tcmVw
YWludC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDE1
NDcgZmFzdC9yZXBhaW50L25vLWNhcmV0LXJlcGFpbnQtaW4tbm9uLWNvbnRlbnQtZWRpdGFibGUt
ZWxlbWVudC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTAxNTQ3IGZh
c3QvcmVwYWludC9yZXBhaW50LWFjcm9zcy13cml0aW5nLW1vZGUtYm91bmRhcnkuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzEwMTU0NyBmYXN0L3JlcGFpbnQvc2VsZWN0
aW9uLWFmdGVyLWRlbGV0ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173112</attachid>
            <date>2012-11-08 13:50:06 -0800</date>
            <delta_ts>2012-11-08 15:48:12 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-100786-20121108134815.patch</filename>
            <type>text/plain</type>
            <size>12659</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzOTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZmMmY5NGQyOGJkOGU4
ZmU3Nzg3NDVjYzllY2U3ZmFmYjIzZWVhOS4uMDg4MWY4NDI3MWRmNWQ2MDkyNjZkZjBmYzEyYzU5
M2ZhN2I4ODkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTExLTAxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXhwb3NlIHNuYXBzaG90
cyBpbiBwbGF0Zm9ybS9sZXZlbGRiIHdyYXBwZXIgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3ODYKKworICAgICAgICBSZXZpZXdlZCBieSBU
b255IENoYW5nLgorCisgICAgICAgIEV4cG9zZSBsZXZlbGRiICJzbmFwc2hvdHMiIGluIHRoZSBM
ZXZlbERCIEFQSS4gQSBzbmFwc2hvdCBsZXRzIHlvdSBvYnNlcnZlIHRoZSBkYXRhYmFzZQorICAg
ICAgICBhcyBpdCB3YXMgd2hlbiB0aGUgc25hcHNob3Qgd2FzIHRha2VuLiBUaGlzIGNhbiBiZSB1
c2VkIHRvIGltcGxlbWVudCBwYXJhbGxlbCB0cmFuc2FjdGlvbnMsCisgICAgICAgIGUuZy4gd2hl
cmUgYSByZWFkIHRyYW5zYWN0aW9uIHdvbid0IHNlZSB1cGRhdGVzIG1hZGUgYnkgYSBsYXRlciB3
cml0ZSB0cmFuc2FjdGlvbi4KKworICAgICAgICBUZXN0czogd2Via2l0X3VuaXRfdGVzdHMgLS1n
dGVzdF9maWx0ZXI9J0xldmVsREJEYXRhYmFzZVRlc3QuVHJhbnNhY3Rpb24qJworCisgICAgICAg
ICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGV2ZWxEQlNuYXBzaG90OjpMZXZlbERCU25hcHNob3QpOiBOZXcgKGJ1dCBmb3Igbm93IGlu
dGVybmFsLW9ubHkpIHdyYXBwZXIgdHlwZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGV2ZWxEQlNuYXBzaG90Ojp+TGV2ZWxEQlNuYXBzaG90KTogUmVsZWFzZSB0aGUg
bGV2ZWxkYjo6U25hcHNob3QuCisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCRGF0YWJhc2U6Omdl
dCk6IE9wdGlvbmFsIHNuYXBzaG90IGFyZ3VtZW50LCBmb3IgdXNlIGJ5IHRyYW5zYWN0aW9ucy4K
KyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJEYXRhYmFzZTo6Y3JlYXRlSXRlcmF0b3IpOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5oOgorICAgICAg
ICAobGV2ZWxkYik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKExldmVsREJTbmFwc2hv
dCk6CisgICAgICAgIChMZXZlbERCRGF0YWJhc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2xldmVs
ZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJUcmFu
c2FjdGlvbjo6TGV2ZWxEQlRyYW5zYWN0aW9uKTogSW5pdGlhbGl6ZSBhIHNuYXBzaG90LgorICAg
ICAgICAoV2ViQ29yZTo6TGV2ZWxEQlRyYW5zYWN0aW9uOjpnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGV2ZWxEQlRyYW5zYWN0aW9uOjpUcmFuc2FjdGlvbkl0ZXJhdG9yOjpUcmFuc2FjdGlvbkl0
ZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5o
OgorICAgICAgICAoTGV2ZWxEQlRyYW5zYWN0aW9uKToKKwogMjAxMi0xMS0wOCAgSm9zaHVhIEJl
bGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogUmVtb3ZlIHVu
dXNlZCBlcnJvciBoYW5kbGluZyBjbGF1c2VzIHdoZW4gd3JpdGluZyB0byB0cmFuc2FjdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiNmRjNWM5NzU0YzYyNWU0NGU2MzllZjFlZTE1
OWRkNjgxZWZhZTFhLi45Y2U4MTFkMGM0NDdjMzgxZThlOWRjYmZjYzdiMDE5NjA5Y2Y4YmJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTExLTAxICBK
b3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgRXhwb3NlIHNuYXBz
aG90cyBpbiBwbGF0Zm9ybS9sZXZlbGRiIHdyYXBwZXIgQVBJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3ODYKKworICAgICAgICBSZXZpZXdlZCBi
eSBUb255IENoYW5nLgorCisgICAgICAgIEFkZCB1bml0IHRlc3RzIGZvciB0cmFuc2FjdGlvbnMv
c25hcHNob3RzLgorCisgICAgICAgICogdGVzdHMvTGV2ZWxEQlRlc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZW5jb2RlU3RyaW5nKTogRG9uJ3QgYXBwZW5kIHRvIHByZS1zaXplZCB2ZWN0b3Iu
CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTEx
LTA4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFi
YXNlLmNwcAppbmRleCAyNzNhZmQ0ZGVjMWFhZTcwYmQxYWE5MmIwOGU2ODA0YmIyNjMwOGMyLi5l
ZGY5ZGIyNTcyZTM1OGY3YjVjYzNhNzU0NDczMGFkNDdmY2YzMWQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwCkBAIC04OSw2
ICs4OSwxNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IExldmVsREJDb21wYXJhdG9yKiBtX2NvbXBh
cmF0b3I7CiB9OwogCitMZXZlbERCU25hcHNob3Q6OkxldmVsREJTbmFwc2hvdChMZXZlbERCRGF0
YWJhc2UqIGRiKQorICAgIDogbV9kYihkYi0+bV9kYi5nZXQoKSkKKyAgICAsIG1fc25hcHNob3Qo
bV9kYi0+R2V0U25hcHNob3QoKSkKK3sKK30KKworTGV2ZWxEQlNuYXBzaG90Ojp+TGV2ZWxEQlNu
YXBzaG90KCkKK3sKKyAgICBtX2RiLT5SZWxlYXNlU25hcHNob3QobV9zbmFwc2hvdCk7Cit9CisK
IExldmVsREJEYXRhYmFzZTo6TGV2ZWxEQkRhdGFiYXNlKCkKIHsKIH0KQEAgLTE4NywxMSArMTk4
LDEyIEBAIGJvb2wgTGV2ZWxEQkRhdGFiYXNlOjpyZW1vdmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBr
ZXkpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIExldmVsREJEYXRhYmFzZTo6Z2V0KGNv
bnN0IExldmVsREJTbGljZSYga2V5LCBWZWN0b3I8Y2hhcj4mIHZhbHVlKQorYm9vbCBMZXZlbERC
RGF0YWJhc2U6OmdldChjb25zdCBMZXZlbERCU2xpY2UmIGtleSwgVmVjdG9yPGNoYXI+JiB2YWx1
ZSwgY29uc3QgTGV2ZWxEQlNuYXBzaG90KiBzbmFwc2hvdCkKIHsKICAgICBzdGQ6OnN0cmluZyBy
ZXN1bHQ7CiAgICAgbGV2ZWxkYjo6UmVhZE9wdGlvbnMgcmVhZE9wdGlvbnM7CiAgICAgcmVhZE9w
dGlvbnMudmVyaWZ5X2NoZWNrc3VtcyA9IHRydWU7IC8vIEZJWE1FOiBEaXNhYmxlIHRoaXMgaWYg
dGhlIHBlcmZvcm1hbmNlIGltcGFjdCBpcyB0b28gZ3JlYXQuCisgICAgcmVhZE9wdGlvbnMuc25h
cHNob3QgPSBzbmFwc2hvdCA/IHNuYXBzaG90LT5tX3NuYXBzaG90IDogMDsKIAogICAgIGNvbnN0
IGxldmVsZGI6OlN0YXR1cyBzID0gbV9kYi0+R2V0KHJlYWRPcHRpb25zLCBtYWtlU2xpY2Uoa2V5
KSwgJnJlc3VsdCk7CiAgICAgaWYgKHMub2soKSkgewpAQCAtMjkzLDEwICszMDUsMTEgQEAgTGV2
ZWxEQlNsaWNlIEl0ZXJhdG9ySW1wbDo6dmFsdWUoKSBjb25zdAogICAgIHJldHVybiBtYWtlTGV2
ZWxEQlNsaWNlKG1faXRlcmF0b3ItPnZhbHVlKCkpOwogfQogCi1QYXNzT3duUHRyPExldmVsREJJ
dGVyYXRvcj4gTGV2ZWxEQkRhdGFiYXNlOjpjcmVhdGVJdGVyYXRvcigpCitQYXNzT3duUHRyPExl
dmVsREJJdGVyYXRvcj4gTGV2ZWxEQkRhdGFiYXNlOjpjcmVhdGVJdGVyYXRvcihjb25zdCBMZXZl
bERCU25hcHNob3QqIHNuYXBzaG90KQogewogICAgIGxldmVsZGI6OlJlYWRPcHRpb25zIHJlYWRP
cHRpb25zOwogICAgIHJlYWRPcHRpb25zLnZlcmlmeV9jaGVja3N1bXMgPSB0cnVlOyAvLyBGSVhN
RTogRGlzYWJsZSB0aGlzIGlmIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3QgaXMgdG9vIGdyZWF0Lgor
ICAgIHJlYWRPcHRpb25zLnNuYXBzaG90ID0gc25hcHNob3QgPyBzbmFwc2hvdC0+bV9zbmFwc2hv
dCA6IDA7CiAgICAgT3duUHRyPGxldmVsZGI6Okl0ZXJhdG9yPiBpID0gYWRvcHRQdHIobV9kYi0+
TmV3SXRlcmF0b3IocmVhZE9wdGlvbnMpKTsKICAgICBpZiAoIWkpIC8vIEZJWE1FOiBEb3VibGUg
Y2hlY2sgaWYgd2UgYWN0dWFsbHkgbmVlZCB0byBjaGVjayB0aGlzLgogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2
ZWxEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJE
YXRhYmFzZS5oCmluZGV4IGU4MGI0OWEyNGFjNzdkMmZjMDNmMTBhZTNiMGRiNzBmMzZhMjY3Njku
LjJkMzJjZDczNjNlNTgzNjc3ZDVjYzdhNDg0MzZlMzAyNzNhOGY1ZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaApAQCAtMzcsMTUg
KzM3LDI5IEBAIG5hbWVzcGFjZSBsZXZlbGRiIHsKIGNsYXNzIENvbXBhcmF0b3I7CiBjbGFzcyBE
QjsKIGNsYXNzIEVudjsKK2NsYXNzIFNuYXBzaG90OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIExldmVsREJDb21wYXJhdG9yOworY2xhc3MgTGV2ZWxEQkRhdGFiYXNlOwogY2xh
c3MgTGV2ZWxEQkl0ZXJhdG9yOwogY2xhc3MgTGV2ZWxEQlNsaWNlOwogY2xhc3MgTGV2ZWxEQldy
aXRlQmF0Y2g7CiAKK2NsYXNzIExldmVsREJTbmFwc2hvdCB7Citwcml2YXRlOgorICAgIGZyaWVu
ZCBjbGFzcyBMZXZlbERCRGF0YWJhc2U7CisgICAgZnJpZW5kIGNsYXNzIExldmVsREJUcmFuc2Fj
dGlvbjsKKworICAgIGV4cGxpY2l0IExldmVsREJTbmFwc2hvdChMZXZlbERCRGF0YWJhc2UqKTsK
KyAgICB+TGV2ZWxEQlNuYXBzaG90KCk7CisKKyAgICBsZXZlbGRiOjpEQiogbV9kYjsKKyAgICBj
b25zdCBsZXZlbGRiOjpTbmFwc2hvdCogbV9zbmFwc2hvdDsKK307CisKIGNsYXNzIExldmVsREJE
YXRhYmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNl
PiBvcGVuKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IExldmVsREJDb21wYXJhdG9yKik7
CkBAIC01NSwxMiArNjksMTMgQEAgcHVibGljOgogCiAgICAgYm9vbCBwdXQoY29uc3QgTGV2ZWxE
QlNsaWNlJiBrZXksIGNvbnN0IFZlY3RvcjxjaGFyPiYgdmFsdWUpOwogICAgIGJvb2wgcmVtb3Zl
KGNvbnN0IExldmVsREJTbGljZSYga2V5KTsKLSAgICBib29sIGdldChjb25zdCBMZXZlbERCU2xp
Y2UmIGtleSwgVmVjdG9yPGNoYXI+JiB2YWx1ZSk7CisgICAgYm9vbCBnZXQoY29uc3QgTGV2ZWxE
QlNsaWNlJiBrZXksIFZlY3RvcjxjaGFyPiYgdmFsdWUsIGNvbnN0IExldmVsREJTbmFwc2hvdCog
PSAwKTsKICAgICBib29sIHdyaXRlKExldmVsREJXcml0ZUJhdGNoJik7Ci0gICAgUGFzc093blB0
cjxMZXZlbERCSXRlcmF0b3I+IGNyZWF0ZUl0ZXJhdG9yKCk7CisgICAgUGFzc093blB0cjxMZXZl
bERCSXRlcmF0b3I+IGNyZWF0ZUl0ZXJhdG9yKGNvbnN0IExldmVsREJTbmFwc2hvdCogPSAwKTsK
ICAgICBjb25zdCBMZXZlbERCQ29tcGFyYXRvciogY29tcGFyYXRvcigpIGNvbnN0OwogCiBwcml2
YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMZXZlbERCU25hcHNob3Q7CiAgICAgTGV2ZWxEQkRhdGFi
YXNlKCk7CiAKICAgICBPd25QdHI8bGV2ZWxkYjo6RW52PiBtX2VudjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmNwcAppbmRl
eCBiZjVjY2JiN2Y4MDJhNDU2YTgyZDZmZDU4MTM0ZjlmOTQ0OTdiYjllLi5mZTgyNjJhMjQwMjMy
ZDNlMjgwZTlkNTAyZTI2NGM0YjI0NmQ0MTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwCkBAIC0yNiwxMiArMjYs
MTMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMZXZlbERCVHJhbnNhY3Rpb24u
aCIKIAorI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2lmIFVTRShMRVZFTERCKQorCiAj
aW5jbHVkZSAiTGV2ZWxEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQlNsaWNlLmgiCiAj
aW5jbHVkZSAiTGV2ZWxEQldyaXRlQmF0Y2guaCIKLQotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQotI2lmIFVTRShMRVZFTERCKQorI2luY2x1ZGUgPGxldmVsZGIvZGIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00Miw2ICs0Myw3IEBAIFBhc3NSZWZQdHI8TGV2ZWxEQlRyYW5z
YWN0aW9uPiBMZXZlbERCVHJhbnNhY3Rpb246OmNyZWF0ZShMZXZlbERCRGF0YWJhc2UqIGRiKQog
CiBMZXZlbERCVHJhbnNhY3Rpb246OkxldmVsREJUcmFuc2FjdGlvbihMZXZlbERCRGF0YWJhc2Uq
IGRiKQogICAgIDogbV9kYihkYikKKyAgICAsIG1fc25hcHNob3QoZGIpCiAgICAgLCBtX2NvbXBh
cmF0b3IoZGItPmNvbXBhcmF0b3IoKSkKICAgICAsIG1fZmluaXNoZWQoZmFsc2UpCiB7CkBAIC0x
MTgsNyArMTIwLDcgQEAgYm9vbCBMZXZlbERCVHJhbnNhY3Rpb246OmdldChjb25zdCBMZXZlbERC
U2xpY2UmIGtleSwgVmVjdG9yPGNoYXI+JiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCi0gICAgcmV0dXJuIG1fZGItPmdldChrZXksIHZhbHVlKTsKKyAgICByZXR1cm4gbV9k
Yi0+Z2V0KGtleSwgdmFsdWUsICZtX3NuYXBzaG90KTsKIH0KIAogYm9vbCBMZXZlbERCVHJhbnNh
Y3Rpb246OmNvbW1pdCgpCkBAIC0yNTcsNyArMjU5LDcgQEAgTGV2ZWxEQlRyYW5zYWN0aW9uOjpU
cmFuc2FjdGlvbkl0ZXJhdG9yOjpUcmFuc2FjdGlvbkl0ZXJhdG9yKFBhc3NSZWZQdHI8TGV2ZWxE
QlQKICAgICA6IG1fdHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCiAgICAgLCBtX2NvbXBhcmF0b3Io
bV90cmFuc2FjdGlvbi0+bV9jb21wYXJhdG9yKQogICAgICwgbV90cmVlSXRlcmF0b3IoVHJlZUl0
ZXJhdG9yOjpjcmVhdGUobV90cmFuc2FjdGlvbi5nZXQoKSkpCi0gICAgLCBtX2RiSXRlcmF0b3Io
bV90cmFuc2FjdGlvbi0+bV9kYi0+Y3JlYXRlSXRlcmF0b3IoKSkKKyAgICAsIG1fZGJJdGVyYXRv
cihtX3RyYW5zYWN0aW9uLT5tX2RiLT5jcmVhdGVJdGVyYXRvcigmbV90cmFuc2FjdGlvbi0+bV9z
bmFwc2hvdCkpCiAgICAgLCBtX2N1cnJlbnQoMCkKICAgICAsIG1fZGlyZWN0aW9uKGtGb3J3YXJk
KQogICAgICwgbV90cmVlQ2hhbmdlZChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5oCmluZGV4IDg1YjczNGZmMDRjZmNl
YjljYjYzNTJmMjcyOWIyZDU0MzIwYzEwOTIuLjk0MjM2ZmY3NjA1MzUxZWYzYjFmMjFjZGE1YjU1
NGY1YTQ5NTZiYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIv
TGV2ZWxEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxk
Yi9MZXZlbERCVHJhbnNhY3Rpb24uaApAQCAtMzAsNiArMzAsNyBAQAogI2lmIFVTRShMRVZFTERC
KQogCiAjaW5jbHVkZSAiTGV2ZWxEQkNvbXBhcmF0b3IuaCIKKyNpbmNsdWRlICJMZXZlbERCRGF0
YWJhc2UuaCIKICNpbmNsdWRlICJMZXZlbERCSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMZXZlbERC
U2xpY2UuaCIKICNpbmNsdWRlIDx3dGYvQVZMVHJlZS5oPgpAQCAtNDIsNyArNDMsNiBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIExldmVsREJEYXRhYmFzZTsKIGNsYXNzIExldmVs
REJXcml0ZUJhdGNoOwogCiB1c2luZyBXVEY6OkFWTFRyZWU7CkBAIC0xNjQsNiArMTY0LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeUl0ZXJhdG9yc09mVHJlZUNoYW5nZSgpOwogCiAgICAg
TGV2ZWxEQkRhdGFiYXNlKiBtX2RiOworICAgIGNvbnN0IExldmVsREJTbmFwc2hvdCBtX3NuYXBz
aG90OwogICAgIGNvbnN0IExldmVsREJDb21wYXJhdG9yKiBtX2NvbXBhcmF0b3I7CiAgICAgVHJl
ZVR5cGUgbV90cmVlOwogICAgIGJvb2wgbV9maW5pc2hlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvTGV2ZWxEQlRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9MZXZlbERCVGVzdC5jcHAKaW5kZXggMmEwMGFlNjg2MWMwMGU5MDVlNDNmODUw
NGE1MDUxMmM1MzFhZWJhZC4uN2RjMDM1NWRmZTkzNWYzOTMzMTQ1MGVlNjk2NjI5NzcyZWNjMmYy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MZXZlbERCVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MZXZlbERCVGVzdC5jcHAKQEAg
LTMwLDcgKzMwLDkgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiTGV2ZWxE
QkNvbXBhcmF0b3IuaCIKICNpbmNsdWRlICJMZXZlbERCRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJM
ZXZlbERCSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMZXZlbERCU2xpY2UuaCIKKyNpbmNsdWRlICJM
ZXZlbERCVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogI2luY2x1ZGUg
PHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgpAQCAtNTMsNyArNTUsNyBAQCBWZWN0b3I8Y2hhcj4gZW5jb2RlU3RyaW5nKGNvbnN0IHN0ZDo6
c3RyaW5nJiBzKQogewogICAgIFZlY3RvcjxjaGFyPiByZXQocy5zaXplKCkpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcy5zaXplKCk7ICsraSkKLSAgICAgICAgcmV0LmFwcGVuZChzW2ld
KTsKKyAgICAgICAgcmV0W2ldID0gc1tpXTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0xMDAs
NiArMTAyLDk3IEBAIFRFU1QoTGV2ZWxEQkRhdGFiYXNlVGVzdCwgQ29ycnVwdGlvblRlc3QpCiAg
ICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOwogfQogCitURVNUKExldmVsREJEYXRhYmFzZVRlc3Qs
IFRyYW5zYWN0aW9uKQoreworICAgIE93blB0cjx3ZWJraXRfc3VwcG9ydDo6U2NvcGVkVGVtcERp
cmVjdG9yeT4gdGVtcERpcmVjdG9yeSA9IGFkb3B0UHRyKHdlYmtpdF9zdXBwb3J0OjpDcmVhdGVT
Y29wZWRUZW1wRGlyZWN0b3J5KCkpOworICAgIHRlbXBEaXJlY3RvcnktPkNyZWF0ZVVuaXF1ZVRl
bXBEaXIoKTsKKyAgICBjb25zdCBTdHJpbmcgcGF0aCA9IFN0cmluZzo6ZnJvbVVURjgodGVtcERp
cmVjdG9yeS0+cGF0aCgpLmNfc3RyKCkpOworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleSA9
IGVuY29kZVN0cmluZygia2V5Iik7CisgICAgVmVjdG9yPGNoYXI+IGdvdFZhbHVlOworICAgIFNp
bXBsZUNvbXBhcmF0b3IgY29tcGFyYXRvcjsKKworICAgIE93blB0cjxMZXZlbERCRGF0YWJhc2U+
IGxldmVsZGIgPSBMZXZlbERCRGF0YWJhc2U6Om9wZW4ocGF0aCwgJmNvbXBhcmF0b3IpOworICAg
IEVYUEVDVF9UUlVFKGxldmVsZGIpOworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+IG9sZFZhbHVl
ID0gZW5jb2RlU3RyaW5nKCJ2YWx1ZSIpOworICAgIGJvb2wgc3VjY2VzcyA9IGxldmVsZGItPnB1
dChrZXksIG9sZFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKworICAgIFJlZlB0
cjxMZXZlbERCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gTGV2ZWxEQlRyYW5zYWN0aW9uOjpj
cmVhdGUobGV2ZWxkYi5nZXQoKSk7CisKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbmV3VmFsdWUg
PSBlbmNvZGVTdHJpbmcoIm5ldyB2YWx1ZSIpOworICAgIHN1Y2Nlc3MgPSBsZXZlbGRiLT5wdXQo
a2V5LCBuZXdWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisKKyAgICBzdWNjZXNz
ID0gdHJhbnNhY3Rpb24tPmdldChrZXksIGdvdFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNj
ZXNzKTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKGdvdFZhbHVlLCBvbGRWYWx1
ZSksIDApOworCisgICAgc3VjY2VzcyA9IGxldmVsZGItPmdldChrZXksIGdvdFZhbHVlKTsKKyAg
ICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJl
KGdvdFZhbHVlLCBuZXdWYWx1ZSksIDApOworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGFkZGVk
S2V5ID0gZW5jb2RlU3RyaW5nKCJhZGRlZCBrZXkiKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4g
YWRkZWRWYWx1ZSA9IGVuY29kZVN0cmluZygiYWRkZWQgdmFsdWUiKTsKKyAgICBzdWNjZXNzID0g
bGV2ZWxkYi0+cHV0KGFkZGVkS2V5LCBhZGRlZFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzdWNj
ZXNzKTsKKworICAgIHN1Y2Nlc3MgPSBsZXZlbGRiLT5nZXQoYWRkZWRLZXksIGdvdFZhbHVlKTsK
KyAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21w
YXJlKGdvdFZhbHVlLCBhZGRlZFZhbHVlKSwgMCk7CisKKyAgICBzdWNjZXNzID0gdHJhbnNhY3Rp
b24tPmdldChhZGRlZEtleSwgZ290VmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsK
K30KKworVEVTVChMZXZlbERCRGF0YWJhc2VUZXN0LCBUcmFuc2FjdGlvbkl0ZXJhdG9yKQorewor
ICAgIE93blB0cjx3ZWJraXRfc3VwcG9ydDo6U2NvcGVkVGVtcERpcmVjdG9yeT4gdGVtcERpcmVj
dG9yeSA9IGFkb3B0UHRyKHdlYmtpdF9zdXBwb3J0OjpDcmVhdGVTY29wZWRUZW1wRGlyZWN0b3J5
KCkpOworICAgIHRlbXBEaXJlY3RvcnktPkNyZWF0ZVVuaXF1ZVRlbXBEaXIoKTsKKyAgICBjb25z
dCBTdHJpbmcgcGF0aCA9IFN0cmluZzo6ZnJvbVVURjgodGVtcERpcmVjdG9yeS0+cGF0aCgpLmNf
c3RyKCkpOworCisgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0YXJ0ID0gZW5jb2RlU3RyaW5nKCIi
KTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5MSA9IGVuY29kZVN0cmluZygia2V5MSIpOwor
ICAgIGNvbnN0IFZlY3RvcjxjaGFyPiB2YWx1ZTEgPSBlbmNvZGVTdHJpbmcoInZhbHVlMSIpOwor
ICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXkyID0gZW5jb2RlU3RyaW5nKCJrZXkyIik7CisgICAg
Y29uc3QgVmVjdG9yPGNoYXI+IHZhbHVlMiA9IGVuY29kZVN0cmluZygidmFsdWUyIik7CisKKyAg
ICBTaW1wbGVDb21wYXJhdG9yIGNvbXBhcmF0b3I7CisgICAgYm9vbCBzdWNjZXNzOworCisgICAg
T3duUHRyPExldmVsREJEYXRhYmFzZT4gbGV2ZWxkYiA9IExldmVsREJEYXRhYmFzZTo6b3Blbihw
YXRoLCAmY29tcGFyYXRvcik7CisgICAgRVhQRUNUX1RSVUUobGV2ZWxkYik7CisKKyAgICBzdWNj
ZXNzID0gbGV2ZWxkYi0+cHV0KGtleTEsIHZhbHVlMSk7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vz
cyk7CisgICAgc3VjY2VzcyA9IGxldmVsZGItPnB1dChrZXkyLCB2YWx1ZTIpOworICAgIEVYUEVD
VF9UUlVFKHN1Y2Nlc3MpOworCisgICAgUmVmUHRyPExldmVsREJUcmFuc2FjdGlvbj4gdHJhbnNh
Y3Rpb24gPSBMZXZlbERCVHJhbnNhY3Rpb246OmNyZWF0ZShsZXZlbGRiLmdldCgpKTsKKworICAg
IHN1Y2Nlc3MgPSBsZXZlbGRiLT5yZW1vdmUoa2V5Mik7CisgICAgRVhQRUNUX1RSVUUoc3VjY2Vz
cyk7CisKKyAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdCA9IHRyYW5zYWN0aW9uLT5jcmVh
dGVJdGVyYXRvcigpOworCisgICAgaXQtPnNlZWsoc3RhcnQpOworCisgICAgRVhQRUNUX1RSVUUo
aXQtPmlzVmFsaWQoKSk7CisgICAgRVhQRUNUX0VRKGNvbXBhcmF0b3IuY29tcGFyZShpdC0+a2V5
KCksIGtleTEpLCAwKTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKGl0LT52YWx1
ZSgpLCB2YWx1ZTEpLCAwKTsKKworICAgIGl0LT5uZXh0KCk7CisKKyAgICBFWFBFQ1RfVFJVRShp
dC0+aXNWYWxpZCgpKTsKKyAgICBFWFBFQ1RfRVEoY29tcGFyYXRvci5jb21wYXJlKGl0LT5rZXko
KSwga2V5MiksIDApOworICAgIEVYUEVDVF9FUShjb21wYXJhdG9yLmNvbXBhcmUoaXQtPnZhbHVl
KCksIHZhbHVlMiksIDApOworCisgICAgaXQtPm5leHQoKTsKKworICAgIEVYUEVDVF9GQUxTRShp
dC0+aXNWYWxpZCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmIC8vIFVTRShMRVZF
TERCKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>