<?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>51306</bug_id>
          
          <creation_ts>2010-12-19 13:19:44 -0800</creation_ts>
          <short_desc>[Qt] Refactor EditorClientQt::handleKeyboardEvent</short_desc>
          <delta_ts>2011-01-03 13:16:30 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antonio Gomes">tonikitoo</reporter>
          <assigned_to name="Antonio Gomes">tonikitoo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>max.hong.shen</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>324215</commentid>
    <comment_count>0</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-19 13:19:44 -0800</bug_when>
    <thetext>The method now is a complete mess, although it could be much simpler.

I plan to refactor it in 2 or maybe 3 steps, so it will be a much patch bug.

First one coming ....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324225</commentid>
    <comment_count>1</comment_count>
      <attachid>76959</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-19 13:47:45 -0800</bug_when>
    <thetext>Created attachment 76959
patch 1 - v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324226</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-19 13:50:17 -0800</bug_when>
    <thetext>Attachment 76959 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebKit/qt/ChangeLog&apos;, u&apos;WebKit/qt/WebCoreSupport/EditorClientQt.cpp&apos;]&quot; exit_code: 1
WebKit/qt/WebCoreSupport/EditorClientQt.cpp:498:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324227</commentid>
    <comment_count>3</comment_count>
      <attachid>76960</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-19 13:54:55 -0800</bug_when>
    <thetext>Created attachment 76960
patch 1 - v1.1

Fixed the style issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324256</commentid>
    <comment_count>4</comment_count>
      <attachid>76966</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-19 18:02:53 -0800</bug_when>
    <thetext>Created attachment 76966
patch 2 - v1

Second part of the refactory. Methods is *much* cleaner now.

Not up to review yet, because it depends on the first one to be in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324359</commentid>
    <comment_count>5</comment_count>
      <attachid>76960</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-12-20 06:30:16 -0800</bug_when>
    <thetext>Comment on attachment 76960
patch 1 - v1.1

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

Did you think about this in a WebKit2 sense?

&gt; WebKit/qt/ChangeLog:11
&gt; +        in qwebpage.cpp). However, there are some keyCodes associated to any no QAction,

any no? I dont understand you.

&gt; WebKit/qt/WebCoreSupport/EditorClientQt.cpp:380
&gt; +    // Ctrl+DELETE and Ctrl+BACKSPACE are covered by QWebPagePrivate::editorCommandForWebActions().

why write DELETE with upper case letters?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324370</commentid>
    <comment_count>6</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-20 06:38:22 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 76960 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76960&amp;action=review
&gt; 
&gt; Did you think about this in a WebKit2 sense?

No actually. As I said, it is just a refactor for the current code. All functionality should behavior exactly the same, kenne. Do you have specifc webkit2 issue in your mind?

&gt; &gt; WebKit/qt/ChangeLog:11
&gt; &gt; +        in qwebpage.cpp). However, there are some keyCodes associated to any no QAction,
&gt; 
&gt; any no? I dont understand you.

&quot;However, there are some keyCodes associated to any QAction,&quot; ... consider it fixed locally.

&gt; &gt; WebKit/qt/WebCoreSupport/EditorClientQt.cpp:380
&gt; &gt; +    // Ctrl+DELETE and Ctrl+BACKSPACE are covered by QWebPagePrivate::editorCommandForWebActions().
&gt; 
&gt; why write DELETE with upper case letters?

I can remove the uppercase, but as I said, this comment was already existent, and I kept it as it. Prefer to change it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325002</commentid>
    <comment_count>7</comment_count>
      <attachid>77112</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-21 07:50:36 -0800</bug_when>
    <thetext>Created attachment 77112
patch 3 - comprises patch 1 and 2

I thought doing it in smaller chunks were make reviewing easier, however it failed. I am upload a new patch with both patch 1 and 2 together.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325005</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-21 07:54:38 -0800</bug_when>
    <thetext>Attachment 77112 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebKit/qt/ChangeLog&apos;, u&apos;WebKit/qt/WebCoreSupport/EditorClientQt.cpp&apos;]&quot; exit_code: 1
WebKit/qt/WebCoreSupport/EditorClientQt.cpp:512:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325192</commentid>
    <comment_count>9</comment_count>
      <attachid>77151</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-21 14:10:50 -0800</bug_when>
    <thetext>Created attachment 77151
patch 3 - v2

Fixed the style issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325481</commentid>
    <comment_count>10</comment_count>
      <attachid>77151</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-12-22 06:39:43 -0800</bug_when>
    <thetext>Comment on attachment 77151
patch 3 - v2

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

&gt; WebKit/qt/WebCoreSupport/EditorClientQt.cpp:359
&gt; +// We are not mapping all editor commands here since most of them are being handled in QWebPage.cpp.

There is no file called QWebPage.cpp it is called qwebpage.cpp

&gt; WebKit/qt/WebCoreSupport/EditorClientQt.cpp:388
&gt; +const char* interpretKeyEvent(const KeyboardEvent* event)

from the method name it is not obvious what it returns</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325520</commentid>
    <comment_count>11</comment_count>
      <attachid>77224</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-22 09:28:15 -0800</bug_when>
    <thetext>Created attachment 77224
patch 3 - v3

- Fixed QWebPage.cpp -&gt; qwebpage.cpp
- renamed interpretKeyEvent to editorCommandForKeyCodeAndModifiers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325521</commentid>
    <comment_count>12</comment_count>
      <attachid>77225</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-22 09:31:31 -0800</bug_when>
    <thetext>Created attachment 77225
patch 3 - v4 - right file.

see changes in comment #11.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325993</commentid>
    <comment_count>13</comment_count>
      <attachid>77225</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-12-23 02:02:01 -0800</bug_when>
    <thetext>Comment on attachment 77225
patch 3 - v4 - right file.

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

How is this tested? Maybe the ChangeLog could make that clear

&gt; WebKit/qt/WebCoreSupport/EditorClientQt.cpp:353
&gt; +struct KeyDownEntry {

What about KeyUp?

&gt; WebKit/qt/WebCoreSupport/EditorClientQt.cpp:361
&gt; +// We are not mapping all editor commands here since most of them are being handled in qwebpage.cpp.
&gt; +// The ones we are mapping here are either not being handled in QWebPage, or need special
&gt; +// handling for Spatial Navigation or Caret Browsing features.

This could be simplified.

// Handle key presses here that are needed for spatial navigation and caret browsing. All other key presses are handled directly in QWebPage.

&gt; WebKit/qt/WebCoreSupport/EditorClientQt.cpp:386
&gt; +#define ARRAYSIZE(array) (sizeof(array) / sizeof((array)[0]))

I dont really see the point in this one :-) you use it in one place only. just do something like

int numEntries = sizeof(keyDownEntries) / sizeof ...

That would make the code cleaner

&gt; WebKit/qt/WebCoreSupport/EditorClientQt.cpp:392
&gt; +    static HashMap&lt;int, const char*&gt;* keyDownCommandsMap = 0;

Why is this a pointer?

&gt; WebKit/qt/WebCoreSupport/EditorClientQt.cpp:399
&gt; +    if (!keyDownCommandsMap) {
&gt; +        keyDownCommandsMap = new HashMap&lt;int, const char*&gt;;
&gt; +
&gt; +        for (unsigned i = 0; i &lt; ARRAYSIZE(keyDownEntries); i++)
&gt; +            keyDownCommandsMap-&gt;set(keyDownEntries[i].modifiers &lt;&lt; 16 | keyDownEntries[i].virtualKey, keyDownEntries[i].editorCommand);
&gt; +    }

So you create a static array outside the method, and then here you create a hashmap for it. Can&apos;t that be simplified?

&gt; WebKit/qt/WebCoreSupport/EditorClientQt.cpp:459
&gt; +            if (!commandName.isEmpty()) {

Shouldn&apos;t we assert if something is not handled instead? as that means that we need to add it to EditorClient or QWebPage, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328460</commentid>
    <comment_count>14</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-01-02 17:53:14 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 77225 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77225&amp;action=review
&gt; 
&gt; How is this tested? Maybe the ChangeLog could make that clear

I am testing it by running the layout tests in LayoutTests/editing and seeing no regressions. As it is a refactor only patch, it should just work as it is now.

I can working on improving test coverage (via Qt autotests) for editing, but it can come later maybe (?)


&gt; &gt; WebKit/qt/WebCoreSupport/EditorClientQt.cpp:353
&gt; &gt; +struct KeyDownEntry {
&gt; 
&gt; What about KeyUp?

what matters for editing is keydown and keypress. We bail out earlier in the case of keyup:

402 void EditorClientQt::handleKeyboardEvent(KeyboardEvent* event)
403 {
      ...
407 
408   const PlatformKeyboardEvent* kevent = event-&gt;keyEvent();
409   if (!kevent || kevent-&gt;type() == PlatformKeyboardEvent::KeyUp)
410     return;

&gt; &gt; WebKit/qt/WebCoreSupport/EditorClientQt.cpp:392
&gt; &gt; +    static HashMap&lt;int, const char*&gt;* keyDownCommandsMap = 0;
&gt; 
&gt; Why is this a pointer?

Fixed. Not a pointer anymore.

&gt; &gt; WebKit/qt/WebCoreSupport/EditorClientQt.cpp:459
&gt; &gt; +            if (!commandName.isEmpty()) {
&gt; 
&gt; Shouldn&apos;t we assert if something is not handled instead? as that means that we need to add it to EditorClient or QWebPage, right?

I can add asserts yes, but I would like to do this in follow ups if you agree too. Again, it is mean to just be a refactor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328461</commentid>
    <comment_count>15</comment_count>
      <attachid>77787</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-01-02 17:53:56 -0800</bug_when>
    <thetext>Created attachment 77787
patch 3 - v5 (committed r74891- r=kenneth)

Addressed Kenneth&apos;s requests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328462</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-02 17:55:48 -0800</bug_when>
    <thetext>Attachment 77787 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebKit/qt/ChangeLog&apos;, u&apos;WebKit/qt/WebCoreSupport/EditorClientQt.cpp&apos;]&quot; exit_code: 1
WebKit/qt/WebCoreSupport/EditorClientQt.cpp:504:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328572</commentid>
    <comment_count>17</comment_count>
      <attachid>77787</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-01-03 08:04:36 -0800</bug_when>
    <thetext>Comment on attachment 77787
patch 3 - v5 (committed r74891- r=kenneth)

Clearing flags on attachment: 77787

Committed r74891: &lt;http://trac.webkit.org/changeset/74891&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328644</commentid>
    <comment_count>18</comment_count>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2011-01-03 10:48:05 -0800</bug_when>
    <thetext>Antonio, I saw some crash on my linux. Do you have any idea about it? Thx

Program received signal SIGSEGV, Segmentation fault.
0x01e66fb7 in WebCore::editorCommandForKeyDownEvent (event=0x83f9f18)
    at ../../../WebKit/qt/WebCoreSupport/EditorClientQt.cpp:380
380	    ASSERT(event-&gt;type() == eventNames().keydownEvent);
(gdb) i s
#0  0x01e66fb7 in WebCore::editorCommandForKeyDownEvent (event=0x83f9f18)
    at ../../../WebKit/qt/WebCoreSupport/EditorClientQt.cpp:380
#1  0x01e6745c in WebCore::EditorClientQt::handleKeyboardEvent (
    this=0x823e780, event=0x83f9f18)

(gdb) p event-&gt;type()
$1 = &quot;keypress&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328647</commentid>
    <comment_count>19</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-01-03 10:51:19 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Antonio, I saw some crash on my linux. Do you have any idea about it? Thx
&gt; 
&gt; Program received signal SIGSEGV, Segmentation fault.
&gt; 0x01e66fb7 in WebCore::editorCommandForKeyDownEvent (event=0x83f9f18)
&gt;     at ../../../WebKit/qt/WebCoreSupport/EditorClientQt.cpp:380
&gt; 380        ASSERT(event-&gt;type() == eventNames().keydownEvent);
&gt; (gdb) i s
&gt; #0  0x01e66fb7 in WebCore::editorCommandForKeyDownEvent (event=0x83f9f18)
&gt;     at ../../../WebKit/qt/WebCoreSupport/EditorClientQt.cpp:380
&gt; #1  0x01e6745c in WebCore::EditorClientQt::handleKeyboardEvent (
&gt;     this=0x823e780, event=0x83f9f18)
&gt; 
&gt; (gdb) p event-&gt;type()
&gt; $1 = &quot;keypress&quot;

I can have a look, yi. Steps to reproduce?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328649</commentid>
    <comment_count>20</comment_count>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2011-01-03 10:54:54 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; Antonio, I saw some crash on my linux. Do you have any idea about it? Thx
&gt; &gt; 
&gt; &gt; Program received signal SIGSEGV, Segmentation fault.
&gt; &gt; 0x01e66fb7 in WebCore::editorCommandForKeyDownEvent (event=0x83f9f18)
&gt; &gt;     at ../../../WebKit/qt/WebCoreSupport/EditorClientQt.cpp:380
&gt; &gt; 380        ASSERT(event-&gt;type() == eventNames().keydownEvent);
&gt; &gt; (gdb) i s
&gt; &gt; #0  0x01e66fb7 in WebCore::editorCommandForKeyDownEvent (event=0x83f9f18)
&gt; &gt;     at ../../../WebKit/qt/WebCoreSupport/EditorClientQt.cpp:380
&gt; &gt; #1  0x01e6745c in WebCore::EditorClientQt::handleKeyboardEvent (
&gt; &gt;     this=0x823e780, event=0x83f9f18)
&gt; &gt; 
&gt; &gt; (gdb) p event-&gt;type()
&gt; &gt; $1 = &quot;keypress&quot;
&gt; 
&gt; I can have a look, yi. Steps to reproduce?

I can reproduce it by 
1) launched QtTestBrowser, 
2) then went to google.com, 
3) typed a character in the search field on the page through the keyboard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328653</commentid>
    <comment_count>21</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-01-03 10:59:40 -0800</bug_when>
    <thetext>
&gt; 
&gt; I can reproduce it by 
&gt; 1) launched QtTestBrowser, 
&gt; 2) then went to google.com, 
&gt; 3) typed a character in the search field on the page through the keyboard.

Could you tell me if this:

-    ASSERT(event-&gt;type() == eventNames().keydownEvent);
+    if (event-&gt;type() == eventNames().keydownEvent)
+        return &quot;&quot;;

fixes it? If so, I will commit it and reopen to proper fix. I know that is the right thing ... thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328655</commentid>
    <comment_count>22</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-01-03 11:00:56 -0800</bug_when>
    <thetext> 
&gt; Could you tell me if this:
&gt; 
&gt; -    ASSERT(event-&gt;type() == eventNames().keydownEvent);
&gt; +    if (event-&gt;type() == eventNames().keydownEvent)

err, it should be !=</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328663</commentid>
    <comment_count>23</comment_count>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2011-01-03 11:11:24 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt; Could you tell me if this:
&gt; &gt; 
&gt; &gt; -    ASSERT(event-&gt;type() == eventNames().keydownEvent);
&gt; &gt; +    if (event-&gt;type() == eventNames().keydownEvent)
&gt; 
&gt; err, it should be !=

I will try it and let you know. (Give me 30 minutes to rebuild it :))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328673</commentid>
    <comment_count>24</comment_count>
      <attachid>77829</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-01-03 11:29:24 -0800</bug_when>
    <thetext>Created attachment 77829
patch 4 - v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328674</commentid>
    <comment_count>25</comment_count>
      <attachid>77829</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-01-03 11:29:56 -0800</bug_when>
    <thetext>Comment on attachment 77829
patch 4 - v1

Follow up asserting hit fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328694</commentid>
    <comment_count>26</comment_count>
    <who name="Yi Shen">max.hong.shen</who>
    <bug_when>2011-01-03 11:56:25 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 77829 [details])
&gt; Follow up asserting hit fix.

Hi Antonio, I tested your changes on linux, no crash can be reproduced :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328708</commentid>
    <comment_count>27</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-01-03 12:11:01 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; (From update of attachment 77829 [details] [details])
&gt; &gt; Follow up asserting hit fix.
&gt; 
&gt; Hi Antonio, I tested your changes on linux, no crash can be reproduced :)

Thanks Yi.

Reopen the bug for CQ to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328733</commentid>
    <comment_count>28</comment_count>
      <attachid>77829</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-03 13:16:21 -0800</bug_when>
    <thetext>Comment on attachment 77829
patch 4 - v1

Clearing flags on attachment: 77829

Committed r74932: &lt;http://trac.webkit.org/changeset/74932&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328734</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-03 13:16:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76959</attachid>
            <date>2010-12-19 13:47:45 -0800</date>
            <delta_ts>2010-12-19 13:54:55 -0800</delta_ts>
            <desc>patch 1 - v1</desc>
            <filename>0001-2010-12-19-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>14901</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBiMTA0MjE5YWU3NzM5ZTc5MzU3ZWM1ZWNlMzk5ZjM5ZTBkZTZjZGM0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
U3VuLCAxOSBEZWMgMjAxMCAxNTozMTo0OSAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTAtMTIt
MTkgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCgogICAgICAgIFtRdF0gUmVmYWN0b3IgRWRpdG9yQ2xpZW50UXQ6Omhh
bmRsZUtleWJvYXJkRXZlbnQKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTEzMDYKCiAgICAgICAgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZl
bnQgcmVsaWVzIG9uIFFXZWJQYWdlUHJpdmF0ZTo6ZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQoKQog
ICAgICAgIHRvIGhhbmRsZSBhbGwgZWRpdG9yIGNvbW1hbmRzIHRoYXQgaGF2ZSBhIFFBY3Rpb24g
YXNzb2NpdGVkIHdpdGggaXQuCiAgICAgICAgSW4gcHJhY3RpY2UsIHRoYXQgY292ZXJzIG1vc3Qg
b2YgZWRpdG9yIGNvbW1hbmRzIChhcyBvbmUgY2FuIHNlZSBpbiBlZGl0b3JDb21tYW5kV2ViQWN0
aW9ucywKICAgICAgICBpbiBxd2VicGFnZS5jcHApLCBob3dldmVyLCB0aGVyZSBhcmUgc29tZSBr
ZXlDb2RlcyBhc3NvY2lhdGVkIHRvIGFueSBubyBRQWN0aW9uLgogICAgICAgIHRoYXQgYXJlIGJl
aW5nIGhhbmRsZWQgd2l0aCBhIGJ1bmNoIG9mIGlmL2Vsc2UgYW5kIG5lc3RlZCBzd2l0Y2gncyBz
dGF0ZW1lbnQsCiAgICAgICAgbWFraW5nIHRoZSBjb2RlIGhhcmRseSByZWFkYWJsZS4KCiAgICAg
ICAgQXMgYSBmaXJzdCBzdGVwIHRvIHNpbXBsaWZ5IHRoaXMgbWV0aG9kLCBwYXRjaCBpbnRyb2R1
Y2VzIGEgbWFwcGluZwogICAgICAgIGhhc2ggZm9yIHRob3NlIGV2ZW50cyBub3QgY292ZXJlZCBi
eSBRV2ViUGFnZVByaXZhdGU6OmVkaXRvckFjdGlvbkZvcktleUV2ZW50LAogICAgICAgIG9yIGFy
ZSBuZWVkZWQgYnkgU3BhdGlhbCBOYXZpZ2F0aW9uIG9yIENhcmV0IEJyb3dzaW5nLgoKICAgICAg
ICBUaGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UsIGFuZCBubyByZWdyZXNzaW9uIGRldGVjdGVk
IG9uIExheW91dFRlc3RzCiAgICAgICAgb3IgYXV0b3Rlc3RzLgoKICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKICAgICAgICAoV2ViQ29yZTo6aW50ZXJwcmV0S2V5
RXZlbnQpOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRF
dmVudCk6Ci0tLQogV2ViS2l0L3F0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMjUgKysrCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwIHwg
IDIyNCArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTM0IGlu
c2VydGlvbnMoKyksIDExNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hh
bmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAwNzM4ZjZjLi5mMDM5Njg0IDEwMDY0
NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAxMC0xMi0xOSAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0g
UmVmYWN0b3IgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMzA2CisKKyAgICAgICAgRWRp
dG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQgcmVsaWVzIG9uIFFXZWJQYWdlUHJpdmF0
ZTo6ZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQoKQorICAgICAgICB0byBoYW5kbGUgYWxsIGVkaXRv
ciBjb21tYW5kcyB0aGF0IGhhdmUgYSBRQWN0aW9uIGFzc29jaXRlZCB3aXRoIGl0LgorICAgICAg
ICBJbiBwcmFjdGljZSwgdGhhdCBjb3ZlcnMgbW9zdCBvZiBlZGl0b3IgY29tbWFuZHMgKGFzIG9u
ZSBjYW4gc2VlIGluIGVkaXRvckNvbW1hbmRXZWJBY3Rpb25zLAorICAgICAgICBpbiBxd2VicGFn
ZS5jcHApLiBIb3dldmVyLCB0aGVyZSBhcmUgc29tZSBrZXlDb2RlcyBhc3NvY2lhdGVkIHRvIGFu
eSBubyBRQWN0aW9uLAorICAgICAgICBhbmQgYXJlIGJlaW5nIGhhbmRsZWQgd2l0aCBhIGJ1bmNo
IG9mIGlmL2Vsc2UgYW5kIG5lc3RlZCBzd2l0Y2gncyBzdGF0ZW1lbnQsCisgICAgICAgIG1ha2lu
ZyB0aGUgY29kZSBoYXJkbHkgcmVhZGFibGUuCisKKyAgICAgICAgQXMgYSBmaXJzdCBzdGVwIHRv
IHNpbXBsaWZ5IHRoaXMgbWV0aG9kLCBwYXRjaCBpbnRyb2R1Y2VzIGEgbWFwcGluZworICAgICAg
ICBoYXNoIGZvciB0aG9zZSBldmVudHMgbm90IGNvdmVyZWQgYnkgUVdlYlBhZ2VQcml2YXRlOjpl
ZGl0b3JBY3Rpb25Gb3JLZXlFdmVudCwKKyAgICAgICAgb3IgYXJlIG5lZWRlZCBieSBTcGF0aWFs
IE5hdmlnYXRpb24gb3IgQ2FyZXQgQnJvd3NpbmcuCisKKyAgICAgICAgVGhlcmUgaXMgbm8gYmVo
YXZpb3IgY2hhbmdlLCBhbmQgbm8gcmVncmVzc2lvbiBkZXRlY3RlZCBvbiBMYXlvdXRUZXN0cwor
ICAgICAgICBvciBhdXRvdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnRlcnByZXRLZXlFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisKIDIw
MTAtMTItMTcgIEFyaXlhIEhpZGF5YXQgIDxhcml5YUBzZW5jaGEuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudFF0LmNwcAppbmRleCAzZmJjODNkLi41MmMyMmNjIDEwMDY0NAotLS0gYS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKQEAgLTM0Niw2ICszNDYsNzAgQEAgdm9pZCBF
ZGl0b3JDbGllbnRRdDo6dG9nZ2xlR3JhbW1hckNoZWNraW5nKCkKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCitzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3RybEtleSA9IDEgPDwgMDsKK3N0YXRp
YyBjb25zdCB1bnNpZ25lZCBBbHRLZXkgPSAxIDw8IDE7CitzdGF0aWMgY29uc3QgdW5zaWduZWQg
U2hpZnRLZXkgPSAxIDw8IDI7CisKK3N0cnVjdCBLZXlEb3duRW50cnkgeworICAgIHVuc2lnbmVk
IHZpcnR1YWxLZXk7CisgICAgdW5zaWduZWQgbW9kaWZpZXJzOworICAgIGNvbnN0IGNoYXIqIG5h
bWU7Cit9OworCisvLyBXZSBhcmUgbm90IG1hcHBpbmcgYWxsIGVkaXRvciBjb21tYW5kIGhlcmUg
c2luY2UgbW9zdCBvZiB0aGVtIGFyZSBoYW5kbGVkIGluIFFXZWJQYWdlLmNwcC4KKy8vIFRoZSBv
bmVzIHdlIGFyZSBtYXBwaW5nIGhlcmUgYXJlIGVpdGhlciBub3QgYmVpbmcgaGFuZGxlZCBpbiBR
V2ViUGFnZSwgb3IgbmVlZCBzcGVjaWFsCisvLyBoYW5kbGluZyBmb3IgU3BhdGlhbCBOYXZpZ2F0
aW9uIG9yIENhcmV0IEJyb3dzaW5nIGZlYXR1cmVzLgorc3RhdGljIGNvbnN0IEtleURvd25FbnRy
eSBrZXlEb3duRW50cmllc1tdID0geworICAgIHsgVktfTEVGVCwgICAwLCAgICAgICAgICAgICAg
ICAgICJNb3ZlTGVmdCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAg
IHsgVktfTEVGVCwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlTGVmdEFuZE1vZGlmeVNlbGVj
dGlvbiIgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfTEVGVCwgICBDdHJsS2V5LCAgICAg
ICAgICAgICJNb3ZlV29yZExlZnQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAor
ICAgIHsgVktfTEVGVCwgICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZExlZnRBbmRNb2Rp
ZnlTZWxlY3Rpb24iICAgICAgICAgICAgICB9LAorICAgIHsgVktfUklHSFQsICAwLCAgICAgICAg
ICAgICAgICAgICJNb3ZlUmlnaHQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgIHsgVktfUklHSFQsICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlUmlnaHRBbmRNb2Rp
ZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUklHSFQsICBDdHJsS2V5
LCAgICAgICAgICAgICJNb3ZlV29yZFJpZ2h0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorICAgIHsgVktfUklHSFQsICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZFJpZ2h0
QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICB9LAorICAgIHsgVktfVVAsICAgICAwLCAg
ICAgICAgICAgICAgICAgICJNb3ZlVXAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAorICAgIHsgVktfVVAsICAgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVXBBbmRN
b2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfRE9XTiwgICAw
LCAgICAgICAgICAgICAgICAgICJNb3ZlRG93biIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9LAorICAgIHsgVktfRE9XTiwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlRG93
bkFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUFJJT1Is
ICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZVVwIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAorICAgIHsgVktfUFJJT1IsICBTaGlmdEtleSwgICAgICAgICAgICJNb3Zl
UGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfTkVY
VCwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd24iICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAorICAgIHsgVktfTkVYVCwgICBTaGlmdEtleSwgICAgICAgICAgICJN
b3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICB9LAorCisgICAgLy8g
Q3RybCtERUxFVEUgYW5kIEN0cmwrQkFDS1NQQUNFIGFyZSBjb3ZlcmVkIGJ5IFFXZWJQYWdlUHJp
dmF0ZTo6ZWRpdG9yQ29tbWFuZEZvcldlYkFjdGlvbnMoKS4KKyAgICB7IFZLX0RFTEVURSwgMCwg
ICAgICAgICAgICAgICAgICAiRGVsZXRlRm9yd2FyZCIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICB7IFZLX0JBQ0ssICAgU2hpZnRLZXksICAgICAgICAgICAiRGVsZXRlQmFj
a3dhcmQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0JBQ0ssICAg
MCwgICAgICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQiICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKK307CisKKyNkZWZpbmUgQVJSQVlTSVpFKGFycmF5KSAoc2l6ZW9mKGFycmF5
KSAvIHNpemVvZigoYXJyYXkpWzBdKSkKKworY29uc3QgY2hhciogaW50ZXJwcmV0S2V5RXZlbnQo
Y29uc3QgS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAgQVNTRVJUKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCk7CisKKyAgICBzdGF0aWMgSGFzaE1hcDxpbnQs
IGNvbnN0IGNoYXIqPioga2V5RG93bkNvbW1hbmRzTWFwID0gMDsKKworICAgIGlmICgha2V5RG93
bkNvbW1hbmRzTWFwKSB7CisgICAgICAgIGtleURvd25Db21tYW5kc01hcCA9IG5ldyBIYXNoTWFw
PGludCwgY29uc3QgY2hhcio+OworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBB
UlJBWVNJWkUoa2V5RG93bkVudHJpZXMpOyBpKyspCisgICAgICAgICAgICBrZXlEb3duQ29tbWFu
ZHNNYXAtPnNldChrZXlEb3duRW50cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlEb3duRW50
cmllc1tpXS52aXJ0dWFsS2V5LCBrZXlEb3duRW50cmllc1tpXS5uYW1lKTsKKyAgICB9CisKKyAg
ICB1bnNpZ25lZCBtb2RpZmllcnMgPSAwOworICAgIGlmIChldmVudC0+c2hpZnRLZXkoKSkKKyAg
ICAgICAgbW9kaWZpZXJzIHw9IFNoaWZ0S2V5OworICAgIGlmIChldmVudC0+YWx0S2V5KCkpCisg
ICAgICAgIG1vZGlmaWVycyB8PSBBbHRLZXk7CisgICAgaWYgKGV2ZW50LT5jdHJsS2V5KCkpCisg
ICAgICAgIG1vZGlmaWVycyB8PSBDdHJsS2V5OworCisgICAgaW50IG1hcEtleSA9IG1vZGlmaWVy
cyA8PCAxNiB8IGV2ZW50LT5rZXlDb2RlKCk7CisgICAgcmV0dXJuIG1hcEtleSA/IGtleURvd25D
b21tYW5kc01hcC0+Z2V0KG1hcEtleSkgOiAwOworfQorCiB2b2lkIEVkaXRvckNsaWVudFF0Ojpo
YW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAgIEZyYW1lKiBm
cmFtZSA9IG1fcGFnZS0+ZC0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5G
cmFtZSgpOwpAQCAtMzg3LDEzOCArNDUxLDY4IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRs
ZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgICAgICBtX3BhZ2UtPnRyaWdnZXJBY3Rpb24oYWN0aW9uKTsKLSAgICAg
ICAgfSBlbHNlCisgICAgICAgIH0gZWxzZSB7CiAjZW5kaWYgLy8gUVRfTk9fU0hPUlRDVVQKLSAg
ICAgICAgc3dpdGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7Ci0gICAgICAg
IGNhc2UgVktfQkFDSzoKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERp
cmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwKLSAgICAgICAg
ICAgICAgICAgICAgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZLX0RFTEVURToKLSAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25Gb3J3YXJkLAotICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFs
c2UsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVktfTEVGVDoKLSAg
ICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUo
KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVM
ZWZ0IikuZXhlY3V0ZSgpKQorICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmROYW1lID0gaW50ZXJw
cmV0S2V5RXZlbnQoZXZlbnQpOworICAgICAgICAgICAgaWYgKCFjb21tYW5kTmFtZS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1h
bmROYW1lKS5leGVjdXRlKCkpIC8vIEV2ZW50IGhhbmRsZWQuCisgICAgICAgICAgICAgICAgICAg
IGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZLX1JJR0hUOgotICAgICAgICAgICAgaWYg
KGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoIk1vdmVSaWdodEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVSaWdodCIpLmV4ZWN1
dGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAg
ICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVXBBbmRNb2RpZnlTZWxl
Y3Rpb24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICBlbHNlIGlmICghZnJhbWUtPmVkaXRvcigp
LT5jb21tYW5kKCJNb3ZlVXAiKS5leGVjdXRlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVktfRE9XTjoKLSAgICAgICAgICAgIGlm
IChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKCJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVEb3duIikuZXhlY3V0
ZSgpKQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93
c1ZpcnR1YWxLZXlDb2RlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgVktfVEFCOgorICAgICAgICAg
ICAgICAgIC8vIERvIG5vdCBoYW5kbGUgdGV4dCBpbnNlcnRpb24gaGVyZS4KICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWS19QUklPUjog
Ly8gUGFnZVVwCi0gICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVj
dGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVQYWdlVXAiKS5leGVjdXRlKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBWS19ORVhUOiAvLyBQYWdlRG93bgotICAgICAgICAgICAg
aWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PmNvbW1hbmQoIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQo
Ik1vdmVQYWdlRG93biIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFZLX1RBQjoKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIGlmIChrZXZlbnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURv
d24gJiYgIWtldmVudC0+Y3RybEtleSgpCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIGlmIChrZXZlbnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURv
d24gJiYgIWtldmVudC0+Y3RybEtleSgpCiAjaWZuZGVmIFFfV1NfTUFDCi0gICAgICAgICAgICAg
ICAgLy8gV2UgbmVlZCB0byBleGNsdWRlIGNoZWNraW5nIGZvciBBbHQgYmVjYXVzZSBpdCBpcyBq
dXN0IGEgZGlmZmVyZW50IFNoaWZ0Ci0gICAgICAgICAgICAgICAgJiYgIWtldmVudC0+YWx0S2V5
KCkKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBleGNsdWRlIGNoZWNraW5nIGZv
ciBBbHQgYmVjYXVzZSBpdCBpcyBqdXN0IGEgZGlmZmVyZW50IFNoaWZ0CisgICAgICAgICAgICAg
ICAgICAgICYmICFrZXZlbnQtPmFsdEtleSgpCiAjZW5kaWYKLSAgICAgICAgICAgICAgICAmJiAh
a2V2ZW50LT50ZXh0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5pbnNlcnRUZXh0KGtldmVudC0+dGV4dCgpLCBldmVudCk7Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKGtldmVudC0+Y3RybEtleSgpKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChrZXZl
bnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBWS19B
OgotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlNlbGVjdEFs
bCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBWS19COgotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIGNhc2UgVktfSToKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKCJUb2dnbGVJdGFsaWMiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
ICAgIC8vIGNhdGNoIGNvbWJpbmF0aW9uIEFsdEdyK2tleSBvciBDdHJsK0FsdCtrZXkKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGtldmVudC0+dHlwZSgpICE9IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6S2V5RG93biAmJiBrZXZlbnQtPmFsdEtleSgpICYmICFrZXZlbnQtPnRleHQoKS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4
dChrZXZlbnQtPnRleHQoKSwgZXZlbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgICYmICFrZXZlbnQtPnRleHQoKS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGtldmVudC0+dGV4
dCgpLCBldmVudCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXZlbnQtPmN0cmxLZXko
KSkgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxL
ZXlDb2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNhdGNoIGNvbWJpbmF0aW9uIEFsdEdyK2tleSBvciBDdHJsK0FsdCtrZXkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OktleURvd24gJiYga2V2ZW50LT5hbHRLZXkoKSAmJiAha2V2ZW50LT50ZXh0
KCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5pbnNlcnRUZXh0KGtldmVudC0+dGV4dCgpLCBldmVudCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX3BhZ2UtPmhhbmRs
ZSgpLT5wYWdlLT5zZXR0aW5ncygpLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpKSB7CiAgICAgICAg
ICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKICAgICAgICAg
ICAgIGNhc2UgVktfTEVGVDoKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgp
ICYmIGtldmVudC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoIk1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRl
KCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVMZWZ0QW5kTW9kaWZ5
U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtldmVudC0+
Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQo
Ik1vdmVXb3JkQmFja3dhcmQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVMZWZ0IikuZXhl
Y3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19SSUdI
VDoKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpICYmIGtldmVudC0+Y3Ry
bEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1v
dmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhl
Y3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtldmVudC0+Y3RybEtleSgpKQotICAg
ICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVXb3JkRm9yd2Fy
ZCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVJpZ2h0IikuZXhlY3V0ZSgpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgICAg
ICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
Y29tbWFuZCgiTW92ZVVwIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBWS19ET1dOOgotICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0
S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92
ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVEb3du
IikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBW
S19QUklPUjogLy8gUGFnZVVwCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21t
YW5kKCJNb3ZlUGFnZVVwIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBWS19ORVhUOiAvLyBQYWdlRG93bgotICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VEb3duIikuZXhlY3V0ZSgpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19IT01FOgotICAgICAgICAgICAgICAg
IGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIiku
ZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiKS5leGVjdXRlKCk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZLX0VORDoKLSAgICAg
ICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAgICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlv
biIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvRW5kT2ZMaW5lIikuZXhlY3V0ZSgpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFFX
ZWJQYWdlOjpXZWJBY3Rpb24gYWN0aW9uID0gUVdlYlBhZ2VQcml2YXRlOjplZGl0b3JBY3Rpb25G
b3JLZXlFdmVudChrZXZlbnQtPnF0RXZlbnQoKSk7CisgICAgICAgICAgICAgICAgaWYgKGFjdGlv
biAhPSBRV2ViUGFnZTo6Tm9XZWJBY3Rpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgbV9wYWdl
LT50cmlnZ2VyQWN0aW9uKGFjdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5zZXRE
ZWZhdWx0SGFuZGxlZCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBWS19QUklPUjogLy8gUGFn
ZVVwCisgICAgICAgICAgICBjYXNlIFZLX05FWFQ6IC8vIFBhZ2VEb3duCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmROYW1lID0gaW50ZXJwcmV0S2V5RXZlbnQo
ZXZlbnQpOworICAgICAgICAgICAgICAgIGlmICghY29tbWFuZE5hbWUuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSku
ZXhlY3V0ZSgpOworICAgICAgICAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQo
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9Ci0tIAoxLjcuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76960</attachid>
            <date>2010-12-19 13:54:55 -0800</date>
            <delta_ts>2010-12-21 07:50:36 -0800</delta_ts>
            <desc>patch 1 - v1.1</desc>
            <filename>0001-2010-12-19-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>15056</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAzZDc0YTQ5NzdkNWQyNWQ5NDYwZGI3MmQwZTUzYzIyMGI0YjdmY2MwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
U3VuLCAxOSBEZWMgMjAxMCAxNTozMTo0OSAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTAtMTIt
MTkgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCgogICAgICAgIFtRdF0gUmVmYWN0b3IgRWRpdG9yQ2xpZW50UXQ6Omhh
bmRsZUtleWJvYXJkRXZlbnQKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTEzMDYKCiAgICAgICAgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZl
bnQgcmVsaWVzIG9uIFFXZWJQYWdlUHJpdmF0ZTo6ZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQoKQog
ICAgICAgIHRvIGhhbmRsZSBhbGwgZWRpdG9yIGNvbW1hbmRzIHRoYXQgaGF2ZSBhIFFBY3Rpb24g
YXNzb2NpdGVkIHdpdGggaXQuCiAgICAgICAgSW4gcHJhY3RpY2UsIHRoYXQgY292ZXJzIG1vc3Qg
b2YgZWRpdG9yIGNvbW1hbmRzIChhcyBvbmUgY2FuIHNlZSBpbiBlZGl0b3JDb21tYW5kV2ViQWN0
aW9ucywKICAgICAgICBpbiBxd2VicGFnZS5jcHApLCBob3dldmVyLCB0aGVyZSBhcmUgc29tZSBr
ZXlDb2RlcyBhc3NvY2lhdGVkIHRvIGFueSBubyBRQWN0aW9uLgogICAgICAgIHRoYXQgYXJlIGJl
aW5nIGhhbmRsZWQgd2l0aCBhIGJ1bmNoIG9mIGlmL2Vsc2UgYW5kIG5lc3RlZCBzd2l0Y2gncyBz
dGF0ZW1lbnQsCiAgICAgICAgbWFraW5nIHRoZSBjb2RlIGhhcmRseSByZWFkYWJsZS4KCiAgICAg
ICAgQXMgYSBmaXJzdCBzdGVwIHRvIHNpbXBsaWZ5IHRoaXMgbWV0aG9kLCBwYXRjaCBpbnRyb2R1
Y2VzIGEgbWFwcGluZwogICAgICAgIGhhc2ggZm9yIHRob3NlIGV2ZW50cyBub3QgY292ZXJlZCBi
eSBRV2ViUGFnZVByaXZhdGU6OmVkaXRvckFjdGlvbkZvcktleUV2ZW50LAogICAgICAgIG9yIGFy
ZSBuZWVkZWQgYnkgU3BhdGlhbCBOYXZpZ2F0aW9uIG9yIENhcmV0IEJyb3dzaW5nLgoKICAgICAg
ICBUaGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UsIGFuZCBubyByZWdyZXNzaW9uIGRldGVjdGVk
IG9uIExheW91dFRlc3RzCiAgICAgICAgb3IgYXV0b3Rlc3RzLgoKICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKICAgICAgICAoV2ViQ29yZTo6aW50ZXJwcmV0S2V5
RXZlbnQpOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRF
dmVudCk6Ci0tLQogV2ViS2l0L3F0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMjUgKysrCiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwIHwg
IDIyOCArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTM2IGlu
c2VydGlvbnMoKyksIDExNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hh
bmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAwNzM4ZjZjLi5mMDM5Njg0IDEwMDY0
NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAxMC0xMi0xOSAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0g
UmVmYWN0b3IgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMzA2CisKKyAgICAgICAgRWRp
dG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQgcmVsaWVzIG9uIFFXZWJQYWdlUHJpdmF0
ZTo6ZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQoKQorICAgICAgICB0byBoYW5kbGUgYWxsIGVkaXRv
ciBjb21tYW5kcyB0aGF0IGhhdmUgYSBRQWN0aW9uIGFzc29jaXRlZCB3aXRoIGl0LgorICAgICAg
ICBJbiBwcmFjdGljZSwgdGhhdCBjb3ZlcnMgbW9zdCBvZiBlZGl0b3IgY29tbWFuZHMgKGFzIG9u
ZSBjYW4gc2VlIGluIGVkaXRvckNvbW1hbmRXZWJBY3Rpb25zLAorICAgICAgICBpbiBxd2VicGFn
ZS5jcHApLiBIb3dldmVyLCB0aGVyZSBhcmUgc29tZSBrZXlDb2RlcyBhc3NvY2lhdGVkIHRvIGFu
eSBubyBRQWN0aW9uLAorICAgICAgICBhbmQgYXJlIGJlaW5nIGhhbmRsZWQgd2l0aCBhIGJ1bmNo
IG9mIGlmL2Vsc2UgYW5kIG5lc3RlZCBzd2l0Y2gncyBzdGF0ZW1lbnQsCisgICAgICAgIG1ha2lu
ZyB0aGUgY29kZSBoYXJkbHkgcmVhZGFibGUuCisKKyAgICAgICAgQXMgYSBmaXJzdCBzdGVwIHRv
IHNpbXBsaWZ5IHRoaXMgbWV0aG9kLCBwYXRjaCBpbnRyb2R1Y2VzIGEgbWFwcGluZworICAgICAg
ICBoYXNoIGZvciB0aG9zZSBldmVudHMgbm90IGNvdmVyZWQgYnkgUVdlYlBhZ2VQcml2YXRlOjpl
ZGl0b3JBY3Rpb25Gb3JLZXlFdmVudCwKKyAgICAgICAgb3IgYXJlIG5lZWRlZCBieSBTcGF0aWFs
IE5hdmlnYXRpb24gb3IgQ2FyZXQgQnJvd3NpbmcuCisKKyAgICAgICAgVGhlcmUgaXMgbm8gYmVo
YXZpb3IgY2hhbmdlLCBhbmQgbm8gcmVncmVzc2lvbiBkZXRlY3RlZCBvbiBMYXlvdXRUZXN0cwor
ICAgICAgICBvciBhdXRvdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnRlcnByZXRLZXlFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisKIDIw
MTAtMTItMTcgIEFyaXlhIEhpZGF5YXQgIDxhcml5YUBzZW5jaGEuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudFF0LmNwcAppbmRleCAzZmJjODNkLi5mODYwZDk2IDEwMDY0NAotLS0gYS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKQEAgLTM0Niw2ICszNDYsNzAgQEAgdm9pZCBF
ZGl0b3JDbGllbnRRdDo6dG9nZ2xlR3JhbW1hckNoZWNraW5nKCkKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCitzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3RybEtleSA9IDEgPDwgMDsKK3N0YXRp
YyBjb25zdCB1bnNpZ25lZCBBbHRLZXkgPSAxIDw8IDE7CitzdGF0aWMgY29uc3QgdW5zaWduZWQg
U2hpZnRLZXkgPSAxIDw8IDI7CisKK3N0cnVjdCBLZXlEb3duRW50cnkgeworICAgIHVuc2lnbmVk
IHZpcnR1YWxLZXk7CisgICAgdW5zaWduZWQgbW9kaWZpZXJzOworICAgIGNvbnN0IGNoYXIqIG5h
bWU7Cit9OworCisvLyBXZSBhcmUgbm90IG1hcHBpbmcgYWxsIGVkaXRvciBjb21tYW5kIGhlcmUg
c2luY2UgbW9zdCBvZiB0aGVtIGFyZSBoYW5kbGVkIGluIFFXZWJQYWdlLmNwcC4KKy8vIFRoZSBv
bmVzIHdlIGFyZSBtYXBwaW5nIGhlcmUgYXJlIGVpdGhlciBub3QgYmVpbmcgaGFuZGxlZCBpbiBR
V2ViUGFnZSwgb3IgbmVlZCBzcGVjaWFsCisvLyBoYW5kbGluZyBmb3IgU3BhdGlhbCBOYXZpZ2F0
aW9uIG9yIENhcmV0IEJyb3dzaW5nIGZlYXR1cmVzLgorc3RhdGljIGNvbnN0IEtleURvd25FbnRy
eSBrZXlEb3duRW50cmllc1tdID0geworICAgIHsgVktfTEVGVCwgICAwLCAgICAgICAgICAgICAg
ICAgICJNb3ZlTGVmdCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAg
IHsgVktfTEVGVCwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlTGVmdEFuZE1vZGlmeVNlbGVj
dGlvbiIgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfTEVGVCwgICBDdHJsS2V5LCAgICAg
ICAgICAgICJNb3ZlV29yZExlZnQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAor
ICAgIHsgVktfTEVGVCwgICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZExlZnRBbmRNb2Rp
ZnlTZWxlY3Rpb24iICAgICAgICAgICAgICB9LAorICAgIHsgVktfUklHSFQsICAwLCAgICAgICAg
ICAgICAgICAgICJNb3ZlUmlnaHQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgIHsgVktfUklHSFQsICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlUmlnaHRBbmRNb2Rp
ZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUklHSFQsICBDdHJsS2V5
LCAgICAgICAgICAgICJNb3ZlV29yZFJpZ2h0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorICAgIHsgVktfUklHSFQsICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZFJpZ2h0
QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICB9LAorICAgIHsgVktfVVAsICAgICAwLCAg
ICAgICAgICAgICAgICAgICJNb3ZlVXAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAorICAgIHsgVktfVVAsICAgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVXBBbmRN
b2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfRE9XTiwgICAw
LCAgICAgICAgICAgICAgICAgICJNb3ZlRG93biIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9LAorICAgIHsgVktfRE9XTiwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlRG93
bkFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUFJJT1Is
ICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZVVwIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAorICAgIHsgVktfUFJJT1IsICBTaGlmdEtleSwgICAgICAgICAgICJNb3Zl
UGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfTkVY
VCwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd24iICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAorICAgIHsgVktfTkVYVCwgICBTaGlmdEtleSwgICAgICAgICAgICJN
b3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICB9LAorCisgICAgLy8g
Q3RybCtERUxFVEUgYW5kIEN0cmwrQkFDS1NQQUNFIGFyZSBjb3ZlcmVkIGJ5IFFXZWJQYWdlUHJp
dmF0ZTo6ZWRpdG9yQ29tbWFuZEZvcldlYkFjdGlvbnMoKS4KKyAgICB7IFZLX0RFTEVURSwgMCwg
ICAgICAgICAgICAgICAgICAiRGVsZXRlRm9yd2FyZCIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICB7IFZLX0JBQ0ssICAgU2hpZnRLZXksICAgICAgICAgICAiRGVsZXRlQmFj
a3dhcmQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0JBQ0ssICAg
MCwgICAgICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQiICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKK307CisKKyNkZWZpbmUgQVJSQVlTSVpFKGFycmF5KSAoc2l6ZW9mKGFycmF5
KSAvIHNpemVvZigoYXJyYXkpWzBdKSkKKworY29uc3QgY2hhciogaW50ZXJwcmV0S2V5RXZlbnQo
Y29uc3QgS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAgQVNTRVJUKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCk7CisKKyAgICBzdGF0aWMgSGFzaE1hcDxpbnQs
IGNvbnN0IGNoYXIqPioga2V5RG93bkNvbW1hbmRzTWFwID0gMDsKKworICAgIGlmICgha2V5RG93
bkNvbW1hbmRzTWFwKSB7CisgICAgICAgIGtleURvd25Db21tYW5kc01hcCA9IG5ldyBIYXNoTWFw
PGludCwgY29uc3QgY2hhcio+OworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBB
UlJBWVNJWkUoa2V5RG93bkVudHJpZXMpOyBpKyspCisgICAgICAgICAgICBrZXlEb3duQ29tbWFu
ZHNNYXAtPnNldChrZXlEb3duRW50cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlEb3duRW50
cmllc1tpXS52aXJ0dWFsS2V5LCBrZXlEb3duRW50cmllc1tpXS5uYW1lKTsKKyAgICB9CisKKyAg
ICB1bnNpZ25lZCBtb2RpZmllcnMgPSAwOworICAgIGlmIChldmVudC0+c2hpZnRLZXkoKSkKKyAg
ICAgICAgbW9kaWZpZXJzIHw9IFNoaWZ0S2V5OworICAgIGlmIChldmVudC0+YWx0S2V5KCkpCisg
ICAgICAgIG1vZGlmaWVycyB8PSBBbHRLZXk7CisgICAgaWYgKGV2ZW50LT5jdHJsS2V5KCkpCisg
ICAgICAgIG1vZGlmaWVycyB8PSBDdHJsS2V5OworCisgICAgaW50IG1hcEtleSA9IG1vZGlmaWVy
cyA8PCAxNiB8IGV2ZW50LT5rZXlDb2RlKCk7CisgICAgcmV0dXJuIG1hcEtleSA/IGtleURvd25D
b21tYW5kc01hcC0+Z2V0KG1hcEtleSkgOiAwOworfQorCiB2b2lkIEVkaXRvckNsaWVudFF0Ojpo
YW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewogICAgIEZyYW1lKiBm
cmFtZSA9IG1fcGFnZS0+ZC0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5G
cmFtZSgpOwpAQCAtMzg3LDE0MCArNDUxLDcwIEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRs
ZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgICAgICBtX3BhZ2UtPnRyaWdnZXJBY3Rpb24oYWN0aW9uKTsKLSAgICAg
ICAgfSBlbHNlCisgICAgICAgIH0gZWxzZSB7CiAjZW5kaWYgLy8gUVRfTk9fU0hPUlRDVVQKLSAg
ICAgICAgc3dpdGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7Ci0gICAgICAg
IGNhc2UgVktfQkFDSzoKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERp
cmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwKLSAgICAgICAg
ICAgICAgICAgICAgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZLX0RFTEVURToKLSAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rp
b25Gb3J3YXJkLAotICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFs
c2UsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVktfTEVGVDoKLSAg
ICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUo
KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVM
ZWZ0IikuZXhlY3V0ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIFZLX1JJR0hUOgotICAgICAgICAgICAgaWYgKGtldmVudC0+c2hp
ZnRLZXkoKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVS
aWdodEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KCFmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVSaWdodCIpLmV4ZWN1dGUoKSkKKyAgICAg
ICAgICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGludGVycHJldEtleUV2ZW50KGV2ZW50KTsKKyAg
ICAgICAgICAgIGlmICghY29tbWFuZE5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAg
aWYgKGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSkuZXhlY3V0ZSgpKSAvLyBF
dmVudCBoYW5kbGVkLgorICAgICAgICAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRs
ZWQoKTsKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAg
ICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVXBBbmRNb2RpZnlTZWxl
Y3Rpb24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICBlbHNlIGlmICghZnJhbWUtPmVkaXRvcigp
LT5jb21tYW5kKCJNb3ZlVXAiKS5leGVjdXRlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVktfRE9XTjoKLSAgICAgICAgICAgIGlm
IChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKCJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVEb3duIikuZXhlY3V0
ZSgpKQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93
c1ZpcnR1YWxLZXlDb2RlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgVktfVEFCOgorICAgICAgICAg
ICAgICAgIC8vIERvIG5vdCBoYW5kbGUgdGV4dCBpbnNlcnRpb24gaGVyZS4KICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWS19QUklPUjog
Ly8gUGFnZVVwCi0gICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVj
dGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVQYWdlVXAiKS5leGVjdXRlKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBWS19ORVhUOiAvLyBQYWdlRG93bgotICAgICAgICAgICAg
aWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PmNvbW1hbmQoIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQo
Ik1vdmVQYWdlRG93biIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFZLX1RBQjoKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIGlmIChrZXZlbnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURv
d24gJiYgIWtldmVudC0+Y3RybEtleSgpCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgIGlmIChrZXZlbnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURv
d24gJiYgIWtldmVudC0+Y3RybEtleSgpCiAjaWZuZGVmIFFfV1NfTUFDCi0gICAgICAgICAgICAg
ICAgLy8gV2UgbmVlZCB0byBleGNsdWRlIGNoZWNraW5nIGZvciBBbHQgYmVjYXVzZSBpdCBpcyBq
dXN0IGEgZGlmZmVyZW50IFNoaWZ0Ci0gICAgICAgICAgICAgICAgJiYgIWtldmVudC0+YWx0S2V5
KCkKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBleGNsdWRlIGNoZWNraW5nIGZv
ciBBbHQgYmVjYXVzZSBpdCBpcyBqdXN0IGEgZGlmZmVyZW50IFNoaWZ0CisgICAgICAgICAgICAg
ICAgICAgICYmICFrZXZlbnQtPmFsdEtleSgpCiAjZW5kaWYKLSAgICAgICAgICAgICAgICAmJiAh
a2V2ZW50LT50ZXh0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5pbnNlcnRUZXh0KGtldmVudC0+dGV4dCgpLCBldmVudCk7Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKGtldmVudC0+Y3RybEtleSgpKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChrZXZl
bnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBWS19B
OgotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlNlbGVjdEFs
bCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBWS19COgotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIGNhc2UgVktfSToKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKCJUb2dnbGVJdGFsaWMiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
ICAgIC8vIGNhdGNoIGNvbWJpbmF0aW9uIEFsdEdyK2tleSBvciBDdHJsK0FsdCtrZXkKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGtldmVudC0+dHlwZSgpICE9IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6S2V5RG93biAmJiBrZXZlbnQtPmFsdEtleSgpICYmICFrZXZlbnQtPnRleHQoKS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4
dChrZXZlbnQtPnRleHQoKSwgZXZlbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgICYmICFrZXZlbnQtPnRleHQoKS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGtldmVudC0+dGV4
dCgpLCBldmVudCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXZlbnQtPmN0cmxLZXko
KSkgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxL
ZXlDb2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNhdGNoIGNvbWJpbmF0aW9uIEFsdEdyK2tleSBvciBDdHJsK0FsdCtrZXkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OktleURvd24gJiYga2V2ZW50LT5hbHRLZXkoKSAmJiAha2V2ZW50LT50ZXh0
KCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5pbnNlcnRUZXh0KGtldmVudC0+dGV4dCgpLCBldmVudCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX3BhZ2UtPmhhbmRs
ZSgpLT5wYWdlLT5zZXR0aW5ncygpLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgpKSB7CiAgICAgICAg
ICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKICAgICAgICAg
ICAgIGNhc2UgVktfTEVGVDoKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgp
ICYmIGtldmVudC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoIk1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRl
KCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVMZWZ0QW5kTW9kaWZ5
U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtldmVudC0+
Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQo
Ik1vdmVXb3JkQmFja3dhcmQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVMZWZ0IikuZXhl
Y3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19SSUdI
VDoKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpICYmIGtldmVudC0+Y3Ry
bEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1v
dmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhl
Y3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtldmVudC0+Y3RybEtleSgpKQotICAg
ICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVXb3JkRm9yd2Fy
ZCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVJpZ2h0IikuZXhlY3V0ZSgpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgICAg
ICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
Y29tbWFuZCgiTW92ZVVwIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBWS19ET1dOOgotICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0
S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92
ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVEb3du
IikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBW
S19QUklPUjogLy8gUGFnZVVwCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21t
YW5kKCJNb3ZlUGFnZVVwIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBWS19ORVhUOiAvLyBQYWdlRG93bgotICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VEb3duIikuZXhlY3V0ZSgpOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19IT01FOgotICAgICAgICAgICAgICAg
IGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIiku
ZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiKS5leGVjdXRlKCk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZLX0VORDoKLSAgICAg
ICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAgICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlv
biIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvRW5kT2ZMaW5lIikuZXhlY3V0ZSgpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFFXZWJQ
YWdlOjpXZWJBY3Rpb24gYWN0aW9uID0gUVdlYlBhZ2VQcml2YXRlOjplZGl0b3JBY3Rpb25Gb3JL
ZXlFdmVudChrZXZlbnQtPnF0RXZlbnQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChhY3Rp
b24gIT0gUVdlYlBhZ2U6Ok5vV2ViQWN0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3BhZ2UtPnRyaWdnZXJBY3Rpb24oYWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2
ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgVktfUFJJT1I6IC8vIFBhZ2VVcAorICAg
ICAgICAgICAgY2FzZSBWS19ORVhUOiAvLyBQYWdlRG93bgorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmROYW1lID0gaW50ZXJwcmV0S2V5RXZlbnQo
ZXZlbnQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbW1hbmROYW1lLmlzRW1wdHkoKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1h
bmROYW1lKS5leGVjdXRlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+c2V0RGVm
YXVsdEhhbmRsZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNpZm5kZWYgUVRfTk9fU0hPUlRDVVQKLS0g
CjEuNy4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76966</attachid>
            <date>2010-12-19 18:02:53 -0800</date>
            <delta_ts>2010-12-21 07:50:36 -0800</delta_ts>
            <desc>patch 2 - v1</desc>
            <filename>0001-2010-12-19-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>6617</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAzMGRlYWMwNDk3Y2VkNTU3NTE5ZmE3MjQ3ZWMxMTlkNDY2MWRmY2IxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
U3VuLCAxOSBEZWMgMjAxMCAyMTowMTowNCAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTAtMTIt
MTkgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KCiAgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBbUXRdIFJlZmFjdG9yIEVkaXRvckNsaWVudFF0Ojpo
YW5kbGVLZXlib2FyZEV2ZW50IChQYXJ0IElJKQogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MTMwNgoKICAgICAgICBQYXRjaCBrZWVwcyBzaW1wbGlmeWlu
ZyB0aGUgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoKQogICAgICAgIG1ldGhv
ZC4gSXQgcmVtb3ZlcyBtYW55IGVtcHR5IHN3aXRjaCBzdGF0ZW1lbnRzIGxlZnQgb3ZlciBmcm9t
IHRoZQogICAgICAgIGZpcnN0IHJlZmFjdG9yIHBhdGNoLiBDb2RlIHVzZWQgdG8gYmUgbGlrZToK
CiAgICAgICAgc3dpdGNoKHh4eCkgewogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAu
Li4KICAgICAgICB9CgogICAgICAgIEFsc28gY29kZSBnb3Qgc2ltcGxpZmllZCB3aXRoIGVhcmx5
IHJldHVybnMgcmlnaHQgYWZ0ZXIgYW4gZXZlbnQKICAgICAgICBnZXRzIGNvbnN1bWVkIGJ5IHRo
ZSBFZGl0b3IuCgogICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgog
ICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6Ci0t
LQogV2ViS2l0L3F0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjIgKysr
KysrKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAgfCAgIDcz
ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNlcnRp
b25zKCspLCAzNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9n
IGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBmMDM5Njg0Li5lOGVkOTA2IDEwMDY0NAotLS0g
YS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTIsNiAr
MiwyOCBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAg
IFtRdF0gUmVmYWN0b3IgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQgKFBhcnQg
SUkpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTMw
NgorCisgICAgICAgIFBhdGNoIGtlZXBzIHNpbXBsaWZ5aW5nIHRoZSBFZGl0b3JDbGllbnRRdDo6
aGFuZGxlS2V5Ym9hcmRFdmVudCgpCisgICAgICAgIG1ldGhvZC4gSXQgcmVtb3ZlcyBtYW55IGVt
cHR5IHN3aXRjaCBzdGF0ZW1lbnRzIGxlZnQgb3ZlciBmcm9tIHRoZQorICAgICAgICBmaXJzdCBy
ZWZhY3RvciBwYXRjaC4gQ29kZSB1c2VkIHRvIGJlIGxpa2U6CisKKyAgICAgICAgc3dpdGNoKHh4
eCkgeworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC4uLgorICAgICAgICB9CisK
KyAgICAgICAgQWxzbyBjb2RlIGdvdCBzaW1wbGlmaWVkIHdpdGggZWFybHkgcmV0dXJucyByaWdo
dCBhZnRlciBhbiBldmVudAorICAgICAgICBnZXRzIGNvbnN1bWVkIGJ5IHRoZSBFZGl0b3IuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6CisKKzIwMTAtMTIt
MTkgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBbUXRdIFJlZmFjdG9yIEVkaXRvckNsaWVudFF0
OjpoYW5kbGVLZXlib2FyZEV2ZW50CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MTMwNgogCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudFF0LmNwcAppbmRleCBmODYwZDk2Li42NmEzYjYzIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKQEAgLTQ1MSw2ICs0NTEsOCBAQCB2b2lkIEVkaXRv
ckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgbV9wYWdlLT50cmlnZ2VyQWN0aW9u
KGFjdGlvbik7CisgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfSBlbHNlIHsKICNlbmRpZiAvLyBRVF9OT19TSE9SVENV
VAogICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmROYW1lID0gaW50ZXJwcmV0S2V5RXZlbnQoZXZl
bnQpOwpAQCAtNDYwLDMwICs0NjIsMzEgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5
Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHN3aXRjaCAoa2V2ZW50LT53aW5kb3dzVmly
dHVhbEtleUNvZGUoKSkgewotICAgICAgICAgICAgY2FzZSBWS19UQUI6Ci0gICAgICAgICAgICAg
ICAgLy8gRG8gbm90IGhhbmRsZSB0ZXh0IGluc2VydGlvbiBoZXJlLgorICAgICAgICAgICAgaWYg
KGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkgPT0gVktfVEFCKSB7CisgICAgICAgICAg
ICAgICAgLy8gRG8gbm90IGhhbmRsZSBUQUIgdGV4dCBpbnNlcnRpb24gaGVyZS4KICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGlm
IChrZXZlbnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd24gJiYgIWtl
dmVudC0+Y3RybEtleSgpCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJvb2wgc2hvdWxk
SW5zZXJ0VGV4dCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGtldmVudC0+dHlwZSgpICE9IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93biAmJiAha2V2ZW50LT50ZXh0KCkuaXNFbXB0eSgp
KSB7CisKKyAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGtldmVudC0+YWx0S2V5KCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBzaG91bGRJbnNlcnRUZXh0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgewogI2lm
bmRlZiBRX1dTX01BQwotICAgICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGV4Y2x1ZGUg
Y2hlY2tpbmcgZm9yIEFsdCBiZWNhdXNlIGl0IGlzIGp1c3QgYSBkaWZmZXJlbnQgU2hpZnQKLSAg
ICAgICAgICAgICAgICAgICAgJiYgIWtldmVudC0+YWx0S2V5KCkKKyAgICAgICAgICAgICAgICAv
LyBXZSBuZWVkIHRvIGV4Y2x1ZGUgY2hlY2tpbmcgZm9yIEFsdCBiZWNhdXNlIGl0IGlzIGp1c3Qg
YSBkaWZmZXJlbnQgU2hpZnQKKyAgICAgICAgICAgICAgICBpZiAoIWtldmVudC0+YWx0S2V5KCkp
CiAjZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgJiYgIWtldmVudC0+dGV4dCgpLmlzRW1wdHko
KSkgewotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoa2V2
ZW50LT50ZXh0KCksIGV2ZW50KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtldmVudC0+
Y3RybEtleSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoa2V2ZW50LT53aW5kb3dz
VmlydHVhbEtleUNvZGUoKSkgewotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gY2F0Y2ggY29tYmluYXRpb24gQWx0R3Ira2V5IG9yIEN0cmwr
QWx0K2tleQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtldmVudC0+dHlwZSgpICE9IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93biAmJiBrZXZlbnQtPmFsdEtleSgpICYmICFrZXZl
bnQtPnRleHQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmluc2VydFRleHQoa2V2ZW50LT50ZXh0KCksIGV2ZW50KTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgICAgIHNob3VsZEluc2VydFRleHQgPSB0cnVlOworCisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc2hvdWxkSW5zZXJ0VGV4dCkgewor
ICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChrZXZlbnQtPnRleHQo
KSwgZXZlbnQpOworICAgICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0g
ZWxzZSB7CkBAIC00OTcsMzQgKzUwMCwzMCBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVL
ZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgY2FzZSBWS19F
TkQ6CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBRV2ViUGFnZTo6V2Vi
QWN0aW9uIGFjdGlvbiA9IFFXZWJQYWdlUHJpdmF0ZTo6ZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQo
a2V2ZW50LT5xdEV2ZW50KCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYWN0aW9uICE9IFFX
ZWJQYWdlOjpOb1dlYkFjdGlvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWdlLT50
cmlnZ2VyQWN0aW9uKGFjdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+c2V0
RGVmYXVsdEhhbmRsZWQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGFjdGlvbiAhPSBRV2ViUGFnZTo6Tm9XZWJBY3Rpb24pOworICAgICAg
ICAgICAgICAgICAgICBtX3BhZ2UtPnRyaWdnZXJBY3Rpb24oYWN0aW9uKTsKKyAgICAgICAgICAg
ICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFZLX1BSSU9SOiAv
LyBQYWdlVXAKICAgICAgICAgICAgIGNhc2UgVktfTkVYVDogLy8gUGFnZURvd24KICAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGludGVy
cHJldEtleUV2ZW50KGV2ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFjb21tYW5kTmFt
ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
Y29tbWFuZChjb21tYW5kTmFtZSkuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCAoIWNvbW1hbmROYW1lLmlzRW1wdHkoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZSkuZXhl
Y3V0ZSgpOworICAgICAgICAgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogI2lmbmRlZiBRVF9OT19TSE9SVENVVAotICAgICAgICBpZiAoa2V2
ZW50LT5xdEV2ZW50KCkgPT0gUUtleVNlcXVlbmNlOjpDb3B5KQorICAgICAgICBpZiAoa2V2ZW50
LT5xdEV2ZW50KCkgPT0gUUtleVNlcXVlbmNlOjpDb3B5KSB7CiAgICAgICAgICAgICBtX3BhZ2Ut
PnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6OkNvcHkpOwotICAgICAgICBlbHNlCi0jZW5kaWYgLy8g
UVRfTk9fU0hPUlRDVVQKKyAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwog
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYgLy8gUVRfTk9fU0hPUlRDVVQK
ICAgICB9Ci0gICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CiAKIHZvaWQgRWRpdG9y
Q2xpZW50UXQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihLZXlib2FyZEV2ZW50KikKLS0gCjEu
Ny4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77112</attachid>
            <date>2010-12-21 07:50:36 -0800</date>
            <delta_ts>2010-12-21 14:10:50 -0800</delta_ts>
            <desc>patch 3 - comprises patch 1 and 2</desc>
            <filename>0001-2010-12-19-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>15755</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAwNWViYTcyYmMzOTUyMTJkMmJmMmQyM2M3YjA2MTcyY2JiZWNjMmY3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
U3VuLCAxOSBEZWMgMjAxMCAxNTozMTo0OSAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTAtMTIt
MTkgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCgogICAgICAgIFtRdF0gUmVmYWN0b3IgRWRpdG9yQ2xpZW50UXQ6Omhh
bmRsZUtleWJvYXJkRXZlbnQKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTEzMDYKCiAgICAgICAgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZl
bnQgcmVsaWVzIG9uIFFXZWJQYWdlUHJpdmF0ZTo6ZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQoKQog
ICAgICAgIHRvIGhhbmRsZSBhbGwgZWRpdG9yIGNvbW1hbmRzIHRoYXQgaGF2ZSBhIFFBY3Rpb24g
YXNzb2NpdGVkIHdpdGggaXQuCiAgICAgICAgSW4gcHJhY3RpY2UsIHRoYXQgY292ZXJzIG1vc3Qg
b2YgZWRpdG9yIGNvbW1hbmRzIChhcyBvbmUgY2FuIHNlZSBpbiBlZGl0b3JDb21tYW5kV2ViQWN0
aW9ucywKICAgICAgICBpbiBxd2VicGFnZS5jcHApLiBIb3dldmVyLCB0aGVyZSBhcmUgc29tZSBr
ZXlDb2RlcyBhc3NvY2lhdGVkIHRvIGFueSBubyBRQWN0aW9uLgogICAgICAgIHRoYXQgYXJlIGJl
aW5nIGhhbmRsZWQgd2l0aCBhIGJ1bmNoIG9mIGlmL2Vsc2UgYW5kIG5lc3RlZCBzd2l0Y2gncyBz
dGF0ZW1lbnQsCiAgICAgICAgbWFraW5nIHRoZSBjb2RlIGhhcmRseSByZWFkYWJsZS4KCiAgICAg
ICAgUGF0Y2ggaW50cm9kdWNlcyBhIG1hcHBpbmcgaGFzaCBmb3IgdGhvc2UgZXZlbnRzIG5vdCBj
b3ZlcmVkIGJ5CiAgICAgICAgUVdlYlBhZ2VQcml2YXRlOjplZGl0b3JBY3Rpb25Gb3JLZXlFdmVu
dC4gSXQgaW5jbHVkZXMgQkFDSyBhbmQKICAgICAgICBERUxFVEUga2V5IHByZXNzZXMsIGZvciBl
eGFtcGxlLiBBZGRpdGlvbmFsbHksIHRoZSBtYXBwaW5nIGhhc2ggYWxzbwogICAgICAgIGluY2x1
ZGVzIGtleSBjb2RlcyB3aG8gYXJlIGhhbmRsZWQgYnkgUVdlYlBhZ2VQcml2YXRlOjplZGl0b3JB
Y3Rpb25Gb3JLZXlFdmVudAogICAgICAgIGJ1dCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHdo
ZW4gZWl0aGVyIFNwYXRpYWwgTmF2aWdhdGlvbiBvcgogICAgICAgIENhcmV0IEJyb3dzaW5nIGlz
IGVuYWJsZWQuCgogICAgICAgIE5lc3RlZCBzd2l0Y2hlcyBzdGF0ZW1lbnRzIG1peGVkIHdpdGgg
aWYvZWxzZSdzIHdlIGFyZSByZWZhY3RvcmVkLCBhbmQgZWFybHkKICAgICAgICByZXR1cm5zIHdl
cmUgYWRkZWQgcmlnaHQgYWZ0ZXIgYW4gZXZlbnQgZ2V0cyBjb25zdW1lZCBieSB0aGUgRWRpdG9y
LgoKICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKICAgICAgICAo
V2ViQ29yZTo6aW50ZXJwcmV0S2V5RXZlbnQpOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6Ci0tLQogV2ViS2l0L3F0L0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMzAgKysrKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0LmNwcCB8ICAyMzMgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiAy
IGZpbGVzIGNoYW5nZWQsIDE0MyBpbnNlcnRpb25zKCspLCAxMjAgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXgg
NzAxNmQ2Yy4uOTZmZjI4NyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMTItMTkgIEFudG9uaW8g
R29tZXMgIDxhZ29tZXNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbUXRdIFJlZmFjdG9yIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXli
b2FyZEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01MTMwNgorCisgICAgICAgIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50IHJl
bGllcyBvbiBRV2ViUGFnZVByaXZhdGU6OmVkaXRvckFjdGlvbkZvcktleUV2ZW50KCkKKyAgICAg
ICAgdG8gaGFuZGxlIGFsbCBlZGl0b3IgY29tbWFuZHMgdGhhdCBoYXZlIGEgUUFjdGlvbiBhc3Nv
Y2l0ZWQgd2l0aCBpdC4KKyAgICAgICAgSW4gcHJhY3RpY2UsIHRoYXQgY292ZXJzIG1vc3Qgb2Yg
ZWRpdG9yIGNvbW1hbmRzIChhcyBvbmUgY2FuIHNlZSBpbiBlZGl0b3JDb21tYW5kV2ViQWN0aW9u
cywKKyAgICAgICAgaW4gcXdlYnBhZ2UuY3BwKS4gSG93ZXZlciwgdGhlcmUgYXJlIHNvbWUga2V5
Q29kZXMgYXNzb2NpYXRlZCB0byBhbnkgbm8gUUFjdGlvbi4KKyAgICAgICAgdGhhdCBhcmUgYmVp
bmcgaGFuZGxlZCB3aXRoIGEgYnVuY2ggb2YgaWYvZWxzZSBhbmQgbmVzdGVkIHN3aXRjaCdzIHN0
YXRlbWVudCwKKyAgICAgICAgbWFraW5nIHRoZSBjb2RlIGhhcmRseSByZWFkYWJsZS4KKworICAg
ICAgICBQYXRjaCBpbnRyb2R1Y2VzIGEgbWFwcGluZyBoYXNoIGZvciB0aG9zZSBldmVudHMgbm90
IGNvdmVyZWQgYnkKKyAgICAgICAgUVdlYlBhZ2VQcml2YXRlOjplZGl0b3JBY3Rpb25Gb3JLZXlF
dmVudC4gVGhpcyBtYXBwaW5nIGhhbmRsZSBrZXlzCisgICAgICAgIGxpa2UgVktfQkFDSyBhbmQg
VktfREVMRVRFLCBhcyB3ZWxsIGFzIFZLX1BSSU9SIGFuZCBWS19ORVhUIChQYWdlRG93biBhbmQg
UGFnZVVwCisgICAgICAgIHJlc3BlY3RpdmVseSksIGZvciBleGFtcGxlLiBBZGRpdGlvbmFsbHks
IHRoZSBtYXBwaW5nIGhhc2ggYWxzbworICAgICAgICBpbmNsdWRlcyBzdXBwb3J0IGZvciBoYW5k
bGluZyBrZXkgY29kZXMgdGhhdCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcgZm9yCisgICAgICAgIHdo
ZW4gZWl0aGVyIFNwYXRpYWwgTmF2aWdhdGlvbiBvciBDYXJldCBCcm93c2luZyBpcyBlbmFibGVk
LgorICAgICAgICBJbiBzdWNoIGNhc2VzLCBhbHRob3VnaCB0aGVyZSBhcmUgc3VwcG9ydCBmb3Ig
dGhlbSBpbiBRV2ViUGFnZVByaXZhdGU6OmVkaXRvckFjdGlvbkZvcktleUV2ZW50LAorICAgICAg
ICB3ZSBiZXR0ZXIgaGFuZGxlIHRoZW0gZGlmZmVyZW50bHkuCisKKyAgICAgICAgTmVzdGVkIHN3
aXRjaGVzIHN0YXRlbWVudHMgbWl4ZWQgd2l0aCBpZi9lbHNlJ3Mgd2VyZSByZWZhY3RvcmVkLCBh
bmQgZWFybHkKKyAgICAgICAgcmV0dXJucyB3ZXJlIGFkZGVkIHJpZ2h0IGFmdGVyIGFuIGV2ZW50
IGdldHMgY29uc3VtZWQgYnkgdGhlIEVkaXRvci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmludGVycHJldEtleUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50
KToKKwogMjAxMC0xMi0yMCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9r
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYgLS1naXQg
YS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAppbmRleCAzZmJjODNkLi45M2E5MDFh
IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3Bw
CisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKQEAgLTM0
Niw2ICszNDYsNzAgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6dG9nZ2xlR3JhbW1hckNoZWNraW5n
KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3Ry
bEtleSA9IDEgPDwgMDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBBbHRLZXkgPSAxIDw8IDE7Citz
dGF0aWMgY29uc3QgdW5zaWduZWQgU2hpZnRLZXkgPSAxIDw8IDI7CisKK3N0cnVjdCBLZXlEb3du
RW50cnkgeworICAgIHVuc2lnbmVkIHZpcnR1YWxLZXk7CisgICAgdW5zaWduZWQgbW9kaWZpZXJz
OworICAgIGNvbnN0IGNoYXIqIG5hbWU7Cit9OworCisvLyBXZSBhcmUgbm90IG1hcHBpbmcgYWxs
IGVkaXRvciBjb21tYW5kcyBoZXJlIHNpbmNlIG1vc3Qgb2YgdGhlbSBhcmUgYmVpbmcgaGFuZGxl
ZCBpbiBRV2ViUGFnZS5jcHAuCisvLyBUaGUgb25lcyB3ZSBhcmUgbWFwcGluZyBoZXJlIGFyZSBl
aXRoZXIgbm90IGJlaW5nIGhhbmRsZWQgaW4gUVdlYlBhZ2UsIG9yIG5lZWQgc3BlY2lhbAorLy8g
aGFuZGxpbmcgZm9yIFNwYXRpYWwgTmF2aWdhdGlvbiBvciBDYXJldCBCcm93c2luZyBmZWF0dXJl
cy4KK3N0YXRpYyBjb25zdCBLZXlEb3duRW50cnkga2V5RG93bkVudHJpZXNbXSA9IHsKKyAgICB7
IFZLX0xFRlQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZUxlZnQiICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0xFRlQsICAgU2hpZnRLZXksICAgICAg
ICAgICAiTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICAgfSwKKyAg
ICB7IFZLX0xFRlQsICAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVdvcmRMZWZ0IiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0xFRlQsICAgQ3RybEtleSB8IFNo
aWZ0S2V5LCAiTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgfSwK
KyAgICB7IFZLX1JJR0hULCAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVJpZ2h0IiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JJR0hULCAgU2hpZnRLZXks
ICAgICAgICAgICAiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICAg
fSwKKyAgICB7IFZLX1JJR0hULCAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVdvcmRSaWdodCIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JJR0hULCAgQ3RybEtl
eSB8IFNoaWZ0S2V5LCAiTW92ZVdvcmRSaWdodEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAg
ICAgfSwKKyAgICB7IFZLX1VQLCAgICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVVwIiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1VQLCAgICAgU2hp
ZnRLZXksICAgICAgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICB7IFZLX0RPV04sICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZURvd24i
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0RPV04sICAg
U2hpZnRLZXksICAgICAgICAgICAiTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAg
ICAgICAgICAgfSwKKyAgICB7IFZLX1BSSU9SLCAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVBh
Z2VVcCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1BSSU9S
LCAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIgICAg
ICAgICAgICAgICAgfSwKKyAgICB7IFZLX05FWFQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92
ZVBhZ2VEb3duIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX05F
WFQsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9u
IiAgICAgICAgICAgICAgfSwKKworICAgIC8vIEN0cmwrREVMRVRFIGFuZCBDdHJsK0JBQ0tTUEFD
RSBhcmUgY292ZXJlZCBieSBRV2ViUGFnZVByaXZhdGU6OmVkaXRvckNvbW1hbmRGb3JXZWJBY3Rp
b25zKCkuCisgICAgeyBWS19ERUxFVEUsIDAsICAgICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndh
cmQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19CQUNLLCAgIFNo
aWZ0S2V5LCAgICAgICAgICAgIkRlbGV0ZUJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCisgICAgeyBWS19CQUNLLCAgIDAsICAgICAgICAgICAgICAgICAgIkRlbGV0ZUJh
Y2t3YXJkIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCit9OworCisjZGVmaW5lIEFS
UkFZU0laRShhcnJheSkgKHNpemVvZihhcnJheSkgLyBzaXplb2YoKGFycmF5KVswXSkpCisKK2Nv
bnN0IGNoYXIqIGludGVycHJldEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2ZW50KQor
eworICAgIEFTU0VSVChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQp
OworCisgICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtleURvd25Db21tYW5k
c01hcCA9IDA7CisKKyAgICBpZiAoIWtleURvd25Db21tYW5kc01hcCkgeworICAgICAgICBrZXlE
b3duQ29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsKKworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQVJSQVlTSVpFKGtleURvd25FbnRyaWVzKTsgaSsr
KQorICAgICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwLT5zZXQoa2V5RG93bkVudHJpZXNbaV0u
bW9kaWZpZXJzIDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtleSwga2V5RG93bkVu
dHJpZXNbaV0ubmFtZSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbW9kaWZpZXJzID0gMDsKKyAg
ICBpZiAoZXZlbnQtPnNoaWZ0S2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBTaGlmdEtleTsK
KyAgICBpZiAoZXZlbnQtPmFsdEtleSgpKQorICAgICAgICBtb2RpZmllcnMgfD0gQWx0S2V5Owor
ICAgIGlmIChldmVudC0+Y3RybEtleSgpKQorICAgICAgICBtb2RpZmllcnMgfD0gQ3RybEtleTsK
KworICAgIGludCBtYXBLZXkgPSBtb2RpZmllcnMgPDwgMTYgfCBldmVudC0+a2V5Q29kZSgpOwor
ICAgIHJldHVybiBtYXBLZXkgPyBrZXlEb3duQ29tbWFuZHNNYXAtPmdldChtYXBLZXkpIDogMDsK
K30KKwogdm9pZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2
ZW50KiBldmVudCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmQtPnBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKQEAgLTM4NywxNTAgKzQ1MSw3OSBA
QCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQq
IGV2ZW50KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgbV9wYWdlLT50
cmlnZ2VyQWN0aW9uKGFjdGlvbik7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxz
ZSB7CiAjZW5kaWYgLy8gUVRfTk9fU0hPUlRDVVQKLSAgICAgICAgc3dpdGNoIChrZXZlbnQtPndp
bmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7Ci0gICAgICAgIGNhc2UgVktfQkFDSzoKLSAgICAgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9s
bGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwKLSAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFZLX0RFTEVURToKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVj
dGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLAotICAgICAgICAgICAg
ICAgICAgICBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgVktfTEVGVDoKLSAgICAgICAgICAgIGlmIChrZXZlbnQtPnNo
aWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3Zl
TGVmdEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KCFmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVMZWZ0IikuZXhlY3V0ZSgpKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZLX1JJ
R0hUOgotICAgICAgICAgICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVSaWdodEFuZE1vZGlmeVNlbGVjdGlvbiIp
LmV4ZWN1dGUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIk1vdmVSaWdodCIpLmV4ZWN1dGUoKSkKKyAgICAgICAgICAgIFN0cmluZyBjb21tYW5kTmFt
ZSA9IGludGVycHJldEtleUV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgIGlmICghY29tbWFuZE5h
bWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+Y29t
bWFuZChjb21tYW5kTmFtZSkuZXhlY3V0ZSgpKSAvLyBFdmVudCBoYW5kbGVkLgorICAgICAgICAg
ICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAg
ICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5jb21tYW5kKCJNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0gICAg
ICAgICAgICBlbHNlIGlmICghZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVXAiKS5leGVj
dXRlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgVktfRE9XTjoKLSAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0g
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlRG93bkFuZE1vZGlm
eVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoIk1vdmVEb3duIikuZXhlY3V0ZSgpKQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSA9PSBWS19UQUIp
IHsKKyAgICAgICAgICAgICAgICAvLyBEbyBub3QgaGFuZGxlIFRBQiB0ZXh0IGluc2VydGlvbiBo
ZXJlLgogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFZLX1BSSU9SOiAvLyBQYWdlVXAKLSAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0
S2V5KCkpCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFn
ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VVcCIpLmV4ZWN1
dGUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZLX05FWFQ6IC8vIFBhZ2VE
b3duCi0gICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9u
IikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VEb3duIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgVktfVEFCOgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKGtldmVudC0+dHlwZSgpICE9IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6S2V5RG93biAmJiAha2V2ZW50LT5jdHJsS2V5KCkKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgYm9vbCBzaG91bGRJbnNlcnRUZXh0ID0gZmFsc2U7CisgICAgICAgICAg
ICBpZiAoa2V2ZW50LT50eXBlKCkgIT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duICYm
ICFrZXZlbnQtPnRleHQoKS5pc0VtcHR5KCkpIHsKKworICAgICAgICAgICAgICAgIGlmIChrZXZl
bnQtPmN0cmxLZXkoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5hbHRLZXko
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEluc2VydFRleHQgPSB0cnVlOworICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAjaWZuZGVmIFFfV1NfTUFDCiAgICAgICAgICAgICAgICAg
Ly8gV2UgbmVlZCB0byBleGNsdWRlIGNoZWNraW5nIGZvciBBbHQgYmVjYXVzZSBpdCBpcyBqdXN0
IGEgZGlmZmVyZW50IFNoaWZ0Ci0gICAgICAgICAgICAgICAgJiYgIWtldmVudC0+YWx0S2V5KCkK
KyAgICAgICAgICAgICAgICBpZiAoIWtldmVudC0+YWx0S2V5KCkpCiAjZW5kaWYKLSAgICAgICAg
ICAgICAgICAmJiAha2V2ZW50LT50ZXh0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGtldmVudC0+dGV4dCgpLCBldmVudCk7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKGtldmVudC0+Y3RybEtleSgpKSB7Ci0gICAgICAgICAgICAgICAg
c3dpdGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBWS19BOgotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBWS19COgotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoIlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgVktfSToKLSAgICAgICAgICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJUb2dnbGVJdGFsaWMiKS5leGVjdXRlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgICAgIC8vIGNhdGNoIGNvbWJpbmF0aW9uIEFsdEdyK2tleSBvciBDdHJsK0Fs
dCtrZXkKLSAgICAgICAgICAgICAgICAgICAgaWYgKGtldmVudC0+dHlwZSgpICE9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6S2V5RG93biAmJiBrZXZlbnQtPmFsdEtleSgpICYmICFrZXZlbnQtPnRl
eHQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+aW5zZXJ0VGV4dChrZXZlbnQtPnRleHQoKSwgZXZlbnQpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgICAgICBzaG91bGRJbnNlcnRUZXh0ID0gdHJ1ZTsKKwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoc2hvdWxkSW5zZXJ0VGV4dCkgeworICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChrZXZlbnQtPnRleHQoKSwgZXZlbnQpOworICAgICAgICAg
ICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICht
X3BhZ2UtPmhhbmRsZSgpLT5wYWdlLT5zZXR0aW5ncygpLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgp
KSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkp
IHsKICAgICAgICAgICAgIGNhc2UgVktfTEVGVDoKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50
LT5zaGlmdEtleSgpICYmIGtldmVudC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rp
b24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V2ZW50LT5zaGlmdEtl
eSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVM
ZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGtldmVudC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoIk1vdmVXb3JkQmFja3dhcmQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1v
dmVMZWZ0IikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBWS19SSUdIVDoKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpICYm
IGtldmVudC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PmNvbW1hbmQoIk1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsK
LSAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVJpZ2h0QW5kTW9kaWZ5U2Vs
ZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtldmVudC0+Y3Ry
bEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1v
dmVXb3JkRm9yd2FyZCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVJpZ2h0IikuZXhlY3V0
ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19VUDoKLSAg
ICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAgICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4
ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVVwIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19ET1dOOgotICAgICAgICAgICAgICAgIGlmIChr
ZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
Y29tbWFuZCgiTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIk1vdmVEb3duIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBWS19QUklPUjogLy8gUGFnZVVwCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZVVwIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19ORVhUOiAvLyBQYWdlRG93bgotICAgICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VEb3duIikuZXhlY3V0ZSgp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19IT01FOgotICAg
ICAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5
U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUi
KS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZL
X0VORDoKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0VuZE9mTGluZUFuZE1v
ZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvRW5kT2ZMaW5lIiku
ZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIFFXZWJQYWdlOjpXZWJBY3Rpb24gYWN0aW9uID0gUVdlYlBhZ2VQcml2YXRlOjplZGl0
b3JBY3Rpb25Gb3JLZXlFdmVudChrZXZlbnQtPnF0RXZlbnQoKSk7CisgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChhY3Rpb24gIT0gUVdlYlBhZ2U6Ok5vV2ViQWN0aW9uKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9wYWdlLT50cmlnZ2VyQWN0aW9uKGFjdGlvbik7CisgICAgICAgICAgICAgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBWS19QUklPUjogLy8gUGFn
ZVVwCisgICAgICAgICAgICBjYXNlIFZLX05FWFQ6IC8vIFBhZ2VEb3duCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY29tbWFuZE5hbWUgPSBpbnRlcnByZXRL
ZXlFdmVudChldmVudCk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCAoIWNvbW1hbmROYW1l
LmlzRW1wdHkoKSk7CisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFu
ZChjb21tYW5kTmFtZSkuZXhlY3V0ZSgpOworICAgICAgICAgICAgICAgICAgICBldmVudC0+c2V0
RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2lmbmRlZiBRVF9OT19TSE9SVENV
VAotICAgICAgICBpZiAoa2V2ZW50LT5xdEV2ZW50KCkgPT0gUUtleVNlcXVlbmNlOjpDb3B5KQor
ICAgICAgICBpZiAoa2V2ZW50LT5xdEV2ZW50KCkgPT0gUUtleVNlcXVlbmNlOjpDb3B5KSB7CiAg
ICAgICAgICAgICBtX3BhZ2UtPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6OkNvcHkpOwotICAgICAg
ICBlbHNlCi0jZW5kaWYgLy8gUVRfTk9fU0hPUlRDVVQKKyAgICAgICAgICAgIGV2ZW50LT5zZXRE
ZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZW5kaWYg
Ly8gUVRfTk9fU0hPUlRDVVQKICAgICB9Ci0gICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7
CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihLZXli
b2FyZEV2ZW50KikKLS0gCjEuNy4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77151</attachid>
            <date>2010-12-21 14:10:50 -0800</date>
            <delta_ts>2010-12-22 09:28:15 -0800</delta_ts>
            <desc>patch 3 - v2</desc>
            <filename>0001-2010-12-19-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>15754</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA2ZmJkM2UzZTQyMWNiNzAyNjRkMGQ5ZDhhOTBmNzdlNDBlODY1MDIyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
U3VuLCAxOSBEZWMgMjAxMCAxNTozMTo0OSAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTAtMTIt
MTkgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCgogICAgICAgIFtRdF0gUmVmYWN0b3IgRWRpdG9yQ2xpZW50UXQ6Omhh
bmRsZUtleWJvYXJkRXZlbnQKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTEzMDYKCiAgICAgICAgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZl
bnQgcmVsaWVzIG9uIFFXZWJQYWdlUHJpdmF0ZTo6ZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQoKQog
ICAgICAgIHRvIGhhbmRsZSBhbGwgZWRpdG9yIGNvbW1hbmRzIHRoYXQgaGF2ZSBhIFFBY3Rpb24g
YXNzb2NpdGVkIHdpdGggaXQuCiAgICAgICAgSW4gcHJhY3RpY2UsIHRoYXQgY292ZXJzIG1vc3Qg
b2YgZWRpdG9yIGNvbW1hbmRzIChhcyBvbmUgY2FuIHNlZSBpbiBlZGl0b3JDb21tYW5kV2ViQWN0
aW9ucywKICAgICAgICBpbiBxd2VicGFnZS5jcHApLiBIb3dldmVyLCB0aGVyZSBhcmUgc29tZSBr
ZXlDb2RlcyBhc3NvY2lhdGVkIHRvIGFueSBubyBRQWN0aW9uLgogICAgICAgIHRoYXQgYXJlIGJl
aW5nIGhhbmRsZWQgd2l0aCBhIGJ1bmNoIG9mIGlmL2Vsc2UgYW5kIG5lc3RlZCBzd2l0Y2gncyBz
dGF0ZW1lbnQsCiAgICAgICAgbWFraW5nIHRoZSBjb2RlIGhhcmRseSByZWFkYWJsZS4KCiAgICAg
ICAgUGF0Y2ggaW50cm9kdWNlcyBhIG1hcHBpbmcgaGFzaCBmb3IgdGhvc2UgZXZlbnRzIG5vdCBj
b3ZlcmVkIGJ5CiAgICAgICAgUVdlYlBhZ2VQcml2YXRlOjplZGl0b3JBY3Rpb25Gb3JLZXlFdmVu
dC4gSXQgaW5jbHVkZXMgQkFDSyBhbmQKICAgICAgICBERUxFVEUga2V5IHByZXNzZXMsIGZvciBl
eGFtcGxlLiBBZGRpdGlvbmFsbHksIHRoZSBtYXBwaW5nIGhhc2ggYWxzbwogICAgICAgIGluY2x1
ZGVzIGtleSBjb2RlcyB3aG8gYXJlIGhhbmRsZWQgYnkgUVdlYlBhZ2VQcml2YXRlOjplZGl0b3JB
Y3Rpb25Gb3JLZXlFdmVudAogICAgICAgIGJ1dCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHdo
ZW4gZWl0aGVyIFNwYXRpYWwgTmF2aWdhdGlvbiBvcgogICAgICAgIENhcmV0IEJyb3dzaW5nIGlz
IGVuYWJsZWQuCgogICAgICAgIE5lc3RlZCBzd2l0Y2hlcyBzdGF0ZW1lbnRzIG1peGVkIHdpdGgg
aWYvZWxzZSdzIHdlIGFyZSByZWZhY3RvcmVkLCBhbmQgZWFybHkKICAgICAgICByZXR1cm5zIHdl
cmUgYWRkZWQgcmlnaHQgYWZ0ZXIgYW4gZXZlbnQgZ2V0cyBjb25zdW1lZCBieSB0aGUgRWRpdG9y
LgoKICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKICAgICAgICAo
V2ViQ29yZTo6aW50ZXJwcmV0S2V5RXZlbnQpOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6Ci0tLQogV2ViS2l0L3F0L0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMzAgKysrKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0LmNwcCB8ICAyMzMgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiAy
IGZpbGVzIGNoYW5nZWQsIDE0MyBpbnNlcnRpb25zKCspLCAxMjAgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXgg
NzAxNmQ2Yy4uOTZmZjI4NyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMTItMTkgIEFudG9uaW8g
R29tZXMgIDxhZ29tZXNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbUXRdIFJlZmFjdG9yIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXli
b2FyZEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01MTMwNgorCisgICAgICAgIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50IHJl
bGllcyBvbiBRV2ViUGFnZVByaXZhdGU6OmVkaXRvckFjdGlvbkZvcktleUV2ZW50KCkKKyAgICAg
ICAgdG8gaGFuZGxlIGFsbCBlZGl0b3IgY29tbWFuZHMgdGhhdCBoYXZlIGEgUUFjdGlvbiBhc3Nv
Y2l0ZWQgd2l0aCBpdC4KKyAgICAgICAgSW4gcHJhY3RpY2UsIHRoYXQgY292ZXJzIG1vc3Qgb2Yg
ZWRpdG9yIGNvbW1hbmRzIChhcyBvbmUgY2FuIHNlZSBpbiBlZGl0b3JDb21tYW5kV2ViQWN0aW9u
cywKKyAgICAgICAgaW4gcXdlYnBhZ2UuY3BwKS4gSG93ZXZlciwgdGhlcmUgYXJlIHNvbWUga2V5
Q29kZXMgYXNzb2NpYXRlZCB0byBhbnkgbm8gUUFjdGlvbi4KKyAgICAgICAgdGhhdCBhcmUgYmVp
bmcgaGFuZGxlZCB3aXRoIGEgYnVuY2ggb2YgaWYvZWxzZSBhbmQgbmVzdGVkIHN3aXRjaCdzIHN0
YXRlbWVudCwKKyAgICAgICAgbWFraW5nIHRoZSBjb2RlIGhhcmRseSByZWFkYWJsZS4KKworICAg
ICAgICBQYXRjaCBpbnRyb2R1Y2VzIGEgbWFwcGluZyBoYXNoIGZvciB0aG9zZSBldmVudHMgbm90
IGNvdmVyZWQgYnkKKyAgICAgICAgUVdlYlBhZ2VQcml2YXRlOjplZGl0b3JBY3Rpb25Gb3JLZXlF
dmVudC4gVGhpcyBtYXBwaW5nIGhhbmRsZSBrZXlzCisgICAgICAgIGxpa2UgVktfQkFDSyBhbmQg
VktfREVMRVRFLCBhcyB3ZWxsIGFzIFZLX1BSSU9SIGFuZCBWS19ORVhUIChQYWdlRG93biBhbmQg
UGFnZVVwCisgICAgICAgIHJlc3BlY3RpdmVseSksIGZvciBleGFtcGxlLiBBZGRpdGlvbmFsbHks
IHRoZSBtYXBwaW5nIGhhc2ggYWxzbworICAgICAgICBpbmNsdWRlcyBzdXBwb3J0IGZvciBoYW5k
bGluZyBrZXkgY29kZXMgdGhhdCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcgZm9yCisgICAgICAgIHdo
ZW4gZWl0aGVyIFNwYXRpYWwgTmF2aWdhdGlvbiBvciBDYXJldCBCcm93c2luZyBpcyBlbmFibGVk
LgorICAgICAgICBJbiBzdWNoIGNhc2VzLCBhbHRob3VnaCB0aGVyZSBhcmUgc3VwcG9ydCBmb3Ig
dGhlbSBpbiBRV2ViUGFnZVByaXZhdGU6OmVkaXRvckFjdGlvbkZvcktleUV2ZW50LAorICAgICAg
ICB3ZSBiZXR0ZXIgaGFuZGxlIHRoZW0gZGlmZmVyZW50bHkuCisKKyAgICAgICAgTmVzdGVkIHN3
aXRjaGVzIHN0YXRlbWVudHMgbWl4ZWQgd2l0aCBpZi9lbHNlJ3Mgd2VyZSByZWZhY3RvcmVkLCBh
bmQgZWFybHkKKyAgICAgICAgcmV0dXJucyB3ZXJlIGFkZGVkIHJpZ2h0IGFmdGVyIGFuIGV2ZW50
IGdldHMgY29uc3VtZWQgYnkgdGhlIEVkaXRvci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmludGVycHJldEtleUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50
KToKKwogMjAxMC0xMi0yMCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluLnBvdWxhaW5Abm9r
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYgLS1naXQg
YS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAppbmRleCAzZmJjODNkLi42YmNhMWZk
IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3Bw
CisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKQEAgLTM0
Niw2ICszNDYsNzAgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6dG9nZ2xlR3JhbW1hckNoZWNraW5n
KCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3Ry
bEtleSA9IDEgPDwgMDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBBbHRLZXkgPSAxIDw8IDE7Citz
dGF0aWMgY29uc3QgdW5zaWduZWQgU2hpZnRLZXkgPSAxIDw8IDI7CisKK3N0cnVjdCBLZXlEb3du
RW50cnkgeworICAgIHVuc2lnbmVkIHZpcnR1YWxLZXk7CisgICAgdW5zaWduZWQgbW9kaWZpZXJz
OworICAgIGNvbnN0IGNoYXIqIG5hbWU7Cit9OworCisvLyBXZSBhcmUgbm90IG1hcHBpbmcgYWxs
IGVkaXRvciBjb21tYW5kcyBoZXJlIHNpbmNlIG1vc3Qgb2YgdGhlbSBhcmUgYmVpbmcgaGFuZGxl
ZCBpbiBRV2ViUGFnZS5jcHAuCisvLyBUaGUgb25lcyB3ZSBhcmUgbWFwcGluZyBoZXJlIGFyZSBl
aXRoZXIgbm90IGJlaW5nIGhhbmRsZWQgaW4gUVdlYlBhZ2UsIG9yIG5lZWQgc3BlY2lhbAorLy8g
aGFuZGxpbmcgZm9yIFNwYXRpYWwgTmF2aWdhdGlvbiBvciBDYXJldCBCcm93c2luZyBmZWF0dXJl
cy4KK3N0YXRpYyBjb25zdCBLZXlEb3duRW50cnkga2V5RG93bkVudHJpZXNbXSA9IHsKKyAgICB7
IFZLX0xFRlQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZUxlZnQiICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0xFRlQsICAgU2hpZnRLZXksICAgICAg
ICAgICAiTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICAgfSwKKyAg
ICB7IFZLX0xFRlQsICAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVdvcmRMZWZ0IiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0xFRlQsICAgQ3RybEtleSB8IFNo
aWZ0S2V5LCAiTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgfSwK
KyAgICB7IFZLX1JJR0hULCAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVJpZ2h0IiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JJR0hULCAgU2hpZnRLZXks
ICAgICAgICAgICAiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICAg
fSwKKyAgICB7IFZLX1JJR0hULCAgQ3RybEtleSwgICAgICAgICAgICAiTW92ZVdvcmRSaWdodCIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JJR0hULCAgQ3RybEtl
eSB8IFNoaWZ0S2V5LCAiTW92ZVdvcmRSaWdodEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAg
ICAgfSwKKyAgICB7IFZLX1VQLCAgICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVVwIiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1VQLCAgICAgU2hp
ZnRLZXksICAgICAgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAg
ICAgICAgfSwKKyAgICB7IFZLX0RPV04sICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZURvd24i
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0RPV04sICAg
U2hpZnRLZXksICAgICAgICAgICAiTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAg
ICAgICAgICAgfSwKKyAgICB7IFZLX1BSSU9SLCAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVBh
Z2VVcCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1BSSU9S
LCAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIgICAg
ICAgICAgICAgICAgfSwKKyAgICB7IFZLX05FWFQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92
ZVBhZ2VEb3duIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX05F
WFQsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9u
IiAgICAgICAgICAgICAgfSwKKworICAgIC8vIEN0cmwrREVMRVRFIGFuZCBDdHJsK0JBQ0tTUEFD
RSBhcmUgY292ZXJlZCBieSBRV2ViUGFnZVByaXZhdGU6OmVkaXRvckNvbW1hbmRGb3JXZWJBY3Rp
b25zKCkuCisgICAgeyBWS19ERUxFVEUsIDAsICAgICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndh
cmQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19CQUNLLCAgIFNo
aWZ0S2V5LCAgICAgICAgICAgIkRlbGV0ZUJhY2t3YXJkIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCisgICAgeyBWS19CQUNLLCAgIDAsICAgICAgICAgICAgICAgICAgIkRlbGV0ZUJh
Y2t3YXJkIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCit9OworCisjZGVmaW5lIEFS
UkFZU0laRShhcnJheSkgKHNpemVvZihhcnJheSkgLyBzaXplb2YoKGFycmF5KVswXSkpCisKK2Nv
bnN0IGNoYXIqIGludGVycHJldEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQqIGV2ZW50KQor
eworICAgIEFTU0VSVChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQp
OworCisgICAgc3RhdGljIEhhc2hNYXA8aW50LCBjb25zdCBjaGFyKj4qIGtleURvd25Db21tYW5k
c01hcCA9IDA7CisKKyAgICBpZiAoIWtleURvd25Db21tYW5kc01hcCkgeworICAgICAgICBrZXlE
b3duQ29tbWFuZHNNYXAgPSBuZXcgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPjsKKworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQVJSQVlTSVpFKGtleURvd25FbnRyaWVzKTsgaSsr
KQorICAgICAgICAgICAga2V5RG93bkNvbW1hbmRzTWFwLT5zZXQoa2V5RG93bkVudHJpZXNbaV0u
bW9kaWZpZXJzIDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtleSwga2V5RG93bkVu
dHJpZXNbaV0ubmFtZSk7CisgICAgfQorCisgICAgdW5zaWduZWQgbW9kaWZpZXJzID0gMDsKKyAg
ICBpZiAoZXZlbnQtPnNoaWZ0S2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBTaGlmdEtleTsK
KyAgICBpZiAoZXZlbnQtPmFsdEtleSgpKQorICAgICAgICBtb2RpZmllcnMgfD0gQWx0S2V5Owor
ICAgIGlmIChldmVudC0+Y3RybEtleSgpKQorICAgICAgICBtb2RpZmllcnMgfD0gQ3RybEtleTsK
KworICAgIGludCBtYXBLZXkgPSBtb2RpZmllcnMgPDwgMTYgfCBldmVudC0+a2V5Q29kZSgpOwor
ICAgIHJldHVybiBtYXBLZXkgPyBrZXlEb3duQ29tbWFuZHNNYXAtPmdldChtYXBLZXkpIDogMDsK
K30KKwogdm9pZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2
ZW50KiBldmVudCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmQtPnBhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKQEAgLTM4NywxNTAgKzQ1MSw3OSBA
QCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQq
IGV2ZW50KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgbV9wYWdlLT50
cmlnZ2VyQWN0aW9uKGFjdGlvbik7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxz
ZSB7CiAjZW5kaWYgLy8gUVRfTk9fU0hPUlRDVVQKLSAgICAgICAgc3dpdGNoIChrZXZlbnQtPndp
bmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7Ci0gICAgICAgIGNhc2UgVktfQkFDSzoKLSAgICAgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9s
bGVyOjpEaXJlY3Rpb25CYWNrd2FyZCwKLSAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVyR3Jh
bnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IFZLX0RFTEVURToKLSAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVj
dGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpEaXJlY3Rpb25Gb3J3YXJkLAotICAgICAgICAgICAg
ICAgICAgICBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgVktfTEVGVDoKLSAgICAgICAgICAgIGlmIChrZXZlbnQtPnNo
aWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3Zl
TGVmdEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KCFmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVMZWZ0IikuZXhlY3V0ZSgpKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZLX1JJ
R0hUOgotICAgICAgICAgICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVSaWdodEFuZE1vZGlmeVNlbGVjdGlvbiIp
LmV4ZWN1dGUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIk1vdmVSaWdodCIpLmV4ZWN1dGUoKSkKKyAgICAgICAgICAgIFN0cmluZyBjb21tYW5kTmFt
ZSA9IGludGVycHJldEtleUV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgIGlmICghY29tbWFuZE5h
bWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+Y29t
bWFuZChjb21tYW5kTmFtZSkuZXhlY3V0ZSgpKSAvLyBFdmVudCBoYW5kbGVkLgorICAgICAgICAg
ICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAg
ICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5jb21tYW5kKCJNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0gICAg
ICAgICAgICBlbHNlIGlmICghZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVXAiKS5leGVj
dXRlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgVktfRE9XTjoKLSAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0g
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlRG93bkFuZE1vZGlm
eVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoIk1vdmVEb3duIikuZXhlY3V0ZSgpKQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSA9PSBWS19UQUIp
IHsKKyAgICAgICAgICAgICAgICAvLyBEbyBub3QgaGFuZGxlIFRBQiB0ZXh0IGluc2VydGlvbiBo
ZXJlLgogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFZLX1BSSU9SOiAvLyBQYWdlVXAKLSAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0
S2V5KCkpCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFn
ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VVcCIpLmV4ZWN1
dGUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZLX05FWFQ6IC8vIFBhZ2VE
b3duCi0gICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9u
IikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VEb3duIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgVktfVEFCOgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKGtldmVudC0+dHlwZSgpICE9IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6S2V5RG93biAmJiAha2V2ZW50LT5jdHJsS2V5KCkKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgYm9vbCBzaG91bGRJbnNlcnRUZXh0ID0gZmFsc2U7CisgICAgICAgICAg
ICBpZiAoa2V2ZW50LT50eXBlKCkgIT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duICYm
ICFrZXZlbnQtPnRleHQoKS5pc0VtcHR5KCkpIHsKKworICAgICAgICAgICAgICAgIGlmIChrZXZl
bnQtPmN0cmxLZXkoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5hbHRLZXko
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEluc2VydFRleHQgPSB0cnVlOworICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAjaWZuZGVmIFFfV1NfTUFDCiAgICAgICAgICAgICAgICAg
Ly8gV2UgbmVlZCB0byBleGNsdWRlIGNoZWNraW5nIGZvciBBbHQgYmVjYXVzZSBpdCBpcyBqdXN0
IGEgZGlmZmVyZW50IFNoaWZ0Ci0gICAgICAgICAgICAgICAgJiYgIWtldmVudC0+YWx0S2V5KCkK
KyAgICAgICAgICAgICAgICBpZiAoIWtldmVudC0+YWx0S2V5KCkpCiAjZW5kaWYKLSAgICAgICAg
ICAgICAgICAmJiAha2V2ZW50LT50ZXh0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGtldmVudC0+dGV4dCgpLCBldmVudCk7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKGtldmVudC0+Y3RybEtleSgpKSB7Ci0gICAgICAgICAgICAgICAg
c3dpdGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBWS19BOgotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBWS19COgotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoIlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgVktfSToKLSAgICAgICAgICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJUb2dnbGVJdGFsaWMiKS5leGVjdXRlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgICAgIC8vIGNhdGNoIGNvbWJpbmF0aW9uIEFsdEdyK2tleSBvciBDdHJsK0Fs
dCtrZXkKLSAgICAgICAgICAgICAgICAgICAgaWYgKGtldmVudC0+dHlwZSgpICE9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6S2V5RG93biAmJiBrZXZlbnQtPmFsdEtleSgpICYmICFrZXZlbnQtPnRl
eHQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+aW5zZXJ0VGV4dChrZXZlbnQtPnRleHQoKSwgZXZlbnQpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgICAgICBzaG91bGRJbnNlcnRUZXh0ID0gdHJ1ZTsKKwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoc2hvdWxkSW5zZXJ0VGV4dCkgeworICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChrZXZlbnQtPnRleHQoKSwgZXZlbnQpOworICAgICAgICAg
ICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICht
X3BhZ2UtPmhhbmRsZSgpLT5wYWdlLT5zZXR0aW5ncygpLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgp
KSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkp
IHsKICAgICAgICAgICAgIGNhc2UgVktfTEVGVDoKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50
LT5zaGlmdEtleSgpICYmIGtldmVudC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rp
b24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V2ZW50LT5zaGlmdEtl
eSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVM
ZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGtldmVudC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoIk1vdmVXb3JkQmFja3dhcmQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1v
dmVMZWZ0IikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBWS19SSUdIVDoKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpICYm
IGtldmVudC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PmNvbW1hbmQoIk1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsK
LSAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVJpZ2h0QW5kTW9kaWZ5U2Vs
ZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtldmVudC0+Y3Ry
bEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1v
dmVXb3JkRm9yd2FyZCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVJpZ2h0IikuZXhlY3V0
ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19VUDoKLSAg
ICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAgICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4
ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVVwIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19ET1dOOgotICAgICAgICAgICAgICAgIGlmIChr
ZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
Y29tbWFuZCgiTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIk1vdmVEb3duIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBWS19QUklPUjogLy8gUGFnZVVwCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZVVwIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19ORVhUOiAvLyBQYWdlRG93bgotICAgICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VEb3duIikuZXhlY3V0ZSgp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19IT01FOgotICAg
ICAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5
U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUi
KS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZL
X0VORDoKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0VuZE9mTGluZUFuZE1v
ZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvRW5kT2ZMaW5lIiku
ZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIFFXZWJQYWdlOjpXZWJBY3Rpb24gYWN0aW9uID0gUVdlYlBhZ2VQcml2YXRlOjplZGl0
b3JBY3Rpb25Gb3JLZXlFdmVudChrZXZlbnQtPnF0RXZlbnQoKSk7CisgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChhY3Rpb24gIT0gUVdlYlBhZ2U6Ok5vV2ViQWN0aW9uKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9wYWdlLT50cmlnZ2VyQWN0aW9uKGFjdGlvbik7CisgICAgICAgICAgICAgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBWS19QUklPUjogLy8gUGFn
ZVVwCisgICAgICAgICAgICBjYXNlIFZLX05FWFQ6IC8vIFBhZ2VEb3duCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY29tbWFuZE5hbWUgPSBpbnRlcnByZXRL
ZXlFdmVudChldmVudCk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghY29tbWFuZE5hbWUu
aXNFbXB0eSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5k
KGNvbW1hbmROYW1lKS5leGVjdXRlKCk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5zZXRE
ZWZhdWx0SGFuZGxlZCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAjaWZuZGVmIFFUX05PX1NIT1JUQ1VU
Ci0gICAgICAgIGlmIChrZXZlbnQtPnF0RXZlbnQoKSA9PSBRS2V5U2VxdWVuY2U6OkNvcHkpCisg
ICAgICAgIGlmIChrZXZlbnQtPnF0RXZlbnQoKSA9PSBRS2V5U2VxdWVuY2U6OkNvcHkpIHsKICAg
ICAgICAgICAgIG1fcGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6Q29weSk7Ci0gICAgICAg
IGVsc2UKLSNlbmRpZiAvLyBRVF9OT19TSE9SVENVVAorICAgICAgICAgICAgZXZlbnQtPnNldERl
ZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyNlbmRpZiAv
LyBRVF9OT19TSE9SVENVVAogICAgIH0KLSAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
IH0KIAogdm9pZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJv
YXJkRXZlbnQqKQotLSAKMS43LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77224</attachid>
            <date>2010-12-22 09:28:15 -0800</date>
            <delta_ts>2010-12-22 09:31:31 -0800</delta_ts>
            <desc>patch 3 - v3</desc>
            <filename>0001-2010-12-19-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>15906</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAyNDAwYjVhNjFmMjdmMmMzOWRjNGU3OGJmZmZmNTNhYmI5YTBjZjQxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
U3VuLCAxOSBEZWMgMjAxMCAxNTozMTo0OSAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTAtMTIt
MTkgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCgogICAgICAgIFtRdF0gUmVmYWN0b3IgRWRpdG9yQ2xpZW50UXQ6Omhh
bmRsZUtleWJvYXJkRXZlbnQKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTEzMDYKCiAgICAgICAgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZl
bnQgcmVsaWVzIG9uIFFXZWJQYWdlUHJpdmF0ZTo6ZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQoKQog
ICAgICAgIHRvIGhhbmRsZSBhbGwgZWRpdG9yIGNvbW1hbmRzIHRoYXQgaGF2ZSBhIFFBY3Rpb24g
YXNzb2NpdGVkIHdpdGggaXQuCiAgICAgICAgSW4gcHJhY3RpY2UsIHRoYXQgY292ZXJzIG1vc3Qg
b2YgZWRpdG9yIGNvbW1hbmRzIChhcyBvbmUgY2FuIHNlZSBpbiBlZGl0b3JDb21tYW5kV2ViQWN0
aW9ucywKICAgICAgICBpbiBxd2VicGFnZS5jcHApLiBIb3dldmVyLCB0aGVyZSBhcmUgc29tZSBr
ZXlDb2RlcyBhc3NvY2lhdGVkIHRvIGFueSBubyBRQWN0aW9uLgogICAgICAgIHRoYXQgYXJlIGJl
aW5nIGhhbmRsZWQgd2l0aCBhIGJ1bmNoIG9mIGlmL2Vsc2UgYW5kIG5lc3RlZCBzd2l0Y2gncyBz
dGF0ZW1lbnQsCiAgICAgICAgbWFraW5nIHRoZSBjb2RlIGhhcmRseSByZWFkYWJsZS4KCiAgICAg
ICAgUGF0Y2ggaW50cm9kdWNlcyBhIG1hcHBpbmcgaGFzaCBmb3IgdGhvc2UgZXZlbnRzIG5vdCBj
b3ZlcmVkIGJ5CiAgICAgICAgUVdlYlBhZ2VQcml2YXRlOjplZGl0b3JBY3Rpb25Gb3JLZXlFdmVu
dC4gSXQgaW5jbHVkZXMgQkFDSyBhbmQKICAgICAgICBERUxFVEUga2V5IHByZXNzZXMsIGZvciBl
eGFtcGxlLiBBZGRpdGlvbmFsbHksIHRoZSBtYXBwaW5nIGhhc2ggYWxzbwogICAgICAgIGluY2x1
ZGVzIGtleSBjb2RlcyB3aG8gYXJlIGhhbmRsZWQgYnkgUVdlYlBhZ2VQcml2YXRlOjplZGl0b3JB
Y3Rpb25Gb3JLZXlFdmVudAogICAgICAgIGJ1dCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHdo
ZW4gZWl0aGVyIFNwYXRpYWwgTmF2aWdhdGlvbiBvcgogICAgICAgIENhcmV0IEJyb3dzaW5nIGlz
IGVuYWJsZWQuCgogICAgICAgIE5lc3RlZCBzd2l0Y2hlcyBzdGF0ZW1lbnRzIG1peGVkIHdpdGgg
aWYvZWxzZSdzIHdlIGFyZSByZWZhY3RvcmVkLCBhbmQgZWFybHkKICAgICAgICByZXR1cm5zIHdl
cmUgYWRkZWQgcmlnaHQgYWZ0ZXIgYW4gZXZlbnQgZ2V0cyBjb25zdW1lZCBieSB0aGUgRWRpdG9y
LgoKICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKICAgICAgICAo
V2ViQ29yZTo6aW50ZXJwcmV0S2V5RXZlbnQpOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGll
bnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6Ci0tLQogV2ViS2l0L3F0L0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMzAgKysrKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudFF0LmNwcCB8ICAyMzMgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiAy
IGZpbGVzIGNoYW5nZWQsIDE0MyBpbnNlcnRpb25zKCspLCAxMjAgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXgg
NzAxNmQ2Yy4uZWNkN2QzNCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMTItMTkgIEFudG9uaW8g
R29tZXMgIDxhZ29tZXNAcmltLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbUXRdIFJlZmFjdG9yIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXli
b2FyZEV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01MTMwNgorCisgICAgICAgIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50IHJl
bGllcyBvbiBRV2ViUGFnZVByaXZhdGU6OmVkaXRvckFjdGlvbkZvcktleUV2ZW50KCkKKyAgICAg
ICAgdG8gaGFuZGxlIGFsbCBlZGl0b3IgY29tbWFuZHMgdGhhdCBoYXZlIGEgUUFjdGlvbiBhc3Nv
Y2l0ZWQgd2l0aCBpdC4KKyAgICAgICAgSW4gcHJhY3RpY2UsIHRoYXQgY292ZXJzIG1vc3Qgb2Yg
ZWRpdG9yIGNvbW1hbmRzIChhcyBvbmUgY2FuIHNlZSBpbiBlZGl0b3JDb21tYW5kV2ViQWN0aW9u
cywKKyAgICAgICAgaW4gcXdlYnBhZ2UuY3BwKS4gSG93ZXZlciwgdGhlcmUgYXJlIHNvbWUga2V5
Q29kZXMgYXNzb2NpYXRlZCB0byBhbnkgbm8gUUFjdGlvbgorICAgICAgICB0aGF0IGFyZSBiZWlu
ZyBoYW5kbGVkIHdpdGggYSBidW5jaCBvZiBpZi9lbHNlIGFuZCBuZXN0ZWQgc3dpdGNoJ3Mgc3Rh
dGVtZW50cworICAgICAgICBpbiBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCgp
LCBtYWtpbmcgdGhlIGNvZGUgaGFyZGx5IHJlYWRhYmxlLgorCisgICAgICAgIFRvIGltcHJvdmUg
dGhlIGN1cnJlbnQgc2l0dWF0aW9uLCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIG1hcHBpbmcgaGFz
aAorICAgICAgICBmb3IgdGhvc2UgZXZlbnRzIG5vdCBjb3ZlcmVkIGJ5IFFXZWJQYWdlUHJpdmF0
ZTo6ZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQuCisgICAgICAgIFRoaXMgbWFwcGluZyBoYW5kbGUs
IGZvciBleGFtcGxlLCBrZXlzIGxpa2UgVktfQkFDSyBhbmQgVktfREVMRVRFLCBhcyB3ZWxsIGFz
CisgICAgICAgIFZLX1BSSU9SIGFuZCBWS19ORVhUIChQYWdlRG93biBhbmQgUGFnZVVwIHJlc3Bl
Y3RpdmVseSkuIEFkZGl0aW9uYWxseSwgdGhlIG1hcHBpbmcKKyAgICAgICAgaGFzaCBhbHNvIGlu
Y2x1ZGVzIHN1cHBvcnQgZm9yIGhhbmRsaW5nIGtleSBjb2RlcyB0aGF0IG5lZWQgc3BlY2lhbCBo
YW5kbGluZyBmb3IKKyAgICAgICAgd2hlbiBlaXRoZXIgU3BhdGlhbCBOYXZpZ2F0aW9uIG9yIENh
cmV0IEJyb3dzaW5nIGlzIGVuYWJsZWQuCisgICAgICAgIEluIHN1Y2ggY2FzZXMsIGFsdGhvdWdo
IHRoZXJlIGFyZSBzdXBwb3J0IGZvciB0aGVtIGluIFFXZWJQYWdlUHJpdmF0ZTo6ZWRpdG9yQWN0
aW9uRm9yS2V5RXZlbnQsCisgICAgICAgIHdlIGJldHRlciBoYW5kbGUgdGhlbSBkaWZmZXJlbnRs
eS4KKworICAgICAgICBOZXN0ZWQgc3dpdGNoZXMgc3RhdGVtZW50cyBtaXhlZCB3aXRoIGlmL2Vs
c2UncyB3ZXJlIHJlZmFjdG9yZWQsIGFuZCBlYXJseQorICAgICAgICByZXR1cm5zIHdlcmUgYWRk
ZWQgcmlnaHQgYWZ0ZXIgYW4gZXZlbnQgZ2V0cyBjb25zdW1lZCBieSB0aGUgRWRpdG9yLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aW50ZXJwcmV0S2V5RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorCiAyMDEwLTEyLTIwICBCZW5qYW1pbiBQb3VsYWlu
ICA8YmVuamFtaW4ucG91bGFpbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
cmVhcyBLbGluZy4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3Bw
CmluZGV4IDNmYmM4M2QuLmFkZTgzNGIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0LmNwcApAQCAtMzQ2LDYgKzM0Niw3MCBAQCB2b2lkIEVkaXRvckNsaWVudFF0
Ojp0b2dnbGVHcmFtbWFyQ2hlY2tpbmcoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3N0
YXRpYyBjb25zdCB1bnNpZ25lZCBDdHJsS2V5ID0gMSA8PCAwOworc3RhdGljIGNvbnN0IHVuc2ln
bmVkIEFsdEtleSA9IDEgPDwgMTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBTaGlmdEtleSA9IDEg
PDwgMjsKKworc3RydWN0IEtleURvd25FbnRyeSB7CisgICAgdW5zaWduZWQgdmlydHVhbEtleTsK
KyAgICB1bnNpZ25lZCBtb2RpZmllcnM7CisgICAgY29uc3QgY2hhciogZWRpdG9yQ29tbWFuZDsK
K307CisKKy8vIFdlIGFyZSBub3QgbWFwcGluZyBhbGwgZWRpdG9yIGNvbW1hbmRzIGhlcmUgc2lu
Y2UgbW9zdCBvZiB0aGVtIGFyZSBiZWluZyBoYW5kbGVkIGluIHF3ZWJwYWdlLmNwcC4KKy8vIFRo
ZSBvbmVzIHdlIGFyZSBtYXBwaW5nIGhlcmUgYXJlIGVpdGhlciBub3QgYmVpbmcgaGFuZGxlZCBp
biBRV2ViUGFnZSwgb3IgbmVlZCBzcGVjaWFsCisvLyBoYW5kbGluZyBmb3IgU3BhdGlhbCBOYXZp
Z2F0aW9uIG9yIENhcmV0IEJyb3dzaW5nIGZlYXR1cmVzLgorc3RhdGljIGNvbnN0IEtleURvd25F
bnRyeSBrZXlEb3duRW50cmllc1tdID0geworICAgIHsgVktfTEVGVCwgICAwLCAgICAgICAgICAg
ICAgICAgICJNb3ZlTGVmdCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAor
ICAgIHsgVktfTEVGVCwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlTGVmdEFuZE1vZGlmeVNl
bGVjdGlvbiIgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfTEVGVCwgICBDdHJsS2V5LCAg
ICAgICAgICAgICJNb3ZlV29yZExlZnQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgIHsgVktfTEVGVCwgICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZExlZnRBbmRN
b2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICB9LAorICAgIHsgVktfUklHSFQsICAwLCAgICAg
ICAgICAgICAgICAgICJNb3ZlUmlnaHQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorICAgIHsgVktfUklHSFQsICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlUmlnaHRBbmRN
b2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUklHSFQsICBDdHJs
S2V5LCAgICAgICAgICAgICJNb3ZlV29yZFJpZ2h0IiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9LAorICAgIHsgVktfUklHSFQsICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZFJp
Z2h0QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICB9LAorICAgIHsgVktfVVAsICAgICAw
LCAgICAgICAgICAgICAgICAgICJNb3ZlVXAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9LAorICAgIHsgVktfVVAsICAgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVXBB
bmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfRE9XTiwg
ICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlRG93biIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9LAorICAgIHsgVktfRE9XTiwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3Zl
RG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUFJJ
T1IsICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZVVwIiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAorICAgIHsgVktfUFJJT1IsICBTaGlmdEtleSwgICAgICAgICAgICJN
b3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICB9LAorICAgIHsgVktf
TkVYVCwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd24iICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfTkVYVCwgICBTaGlmdEtleSwgICAgICAgICAg
ICJNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICB9LAorCisgICAg
Ly8gQ3RybCtERUxFVEUgYW5kIEN0cmwrQkFDS1NQQUNFIGFyZSBjb3ZlcmVkIGJ5IFFXZWJQYWdl
UHJpdmF0ZTo6ZWRpdG9yQ29tbWFuZEZvcldlYkFjdGlvbnMoKS4KKyAgICB7IFZLX0RFTEVURSwg
MCwgICAgICAgICAgICAgICAgICAiRGVsZXRlRm9yd2FyZCIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKKyAgICB7IFZLX0JBQ0ssICAgU2hpZnRLZXksICAgICAgICAgICAiRGVsZXRl
QmFja3dhcmQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0JBQ0ss
ICAgMCwgICAgICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQiICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKK307CisKKyNkZWZpbmUgQVJSQVlTSVpFKGFycmF5KSAoc2l6ZW9mKGFy
cmF5KSAvIHNpemVvZigoYXJyYXkpWzBdKSkKKworY29uc3QgY2hhciogZWRpdG9yQ29tbWFuZEZv
cktleUNvZGVBbmRNb2RpZmllcnMoY29uc3QgS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAg
QVNTRVJUKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCk7CisKKyAg
ICBzdGF0aWMgSGFzaE1hcDxpbnQsIGNvbnN0IGNoYXIqPioga2V5RG93bkNvbW1hbmRzTWFwID0g
MDsKKworICAgIGlmICgha2V5RG93bkNvbW1hbmRzTWFwKSB7CisgICAgICAgIGtleURvd25Db21t
YW5kc01hcCA9IG5ldyBIYXNoTWFwPGludCwgY29uc3QgY2hhcio+OworCisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBBUlJBWVNJWkUoa2V5RG93bkVudHJpZXMpOyBpKyspCisgICAg
ICAgICAgICBrZXlEb3duQ29tbWFuZHNNYXAtPnNldChrZXlEb3duRW50cmllc1tpXS5tb2RpZmll
cnMgPDwgMTYgfCBrZXlEb3duRW50cmllc1tpXS52aXJ0dWFsS2V5LCBrZXlEb3duRW50cmllc1tp
XS5lZGl0b3JDb21tYW5kKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtb2RpZmllcnMgPSAwOwor
ICAgIGlmIChldmVudC0+c2hpZnRLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IFNoaWZ0S2V5
OworICAgIGlmIChldmVudC0+YWx0S2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBBbHRLZXk7
CisgICAgaWYgKGV2ZW50LT5jdHJsS2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBDdHJsS2V5
OworCisgICAgaW50IG1hcEtleSA9IG1vZGlmaWVycyA8PCAxNiB8IGV2ZW50LT5rZXlDb2RlKCk7
CisgICAgcmV0dXJuIG1hcEtleSA/IGtleURvd25Db21tYW5kc01hcC0+Z2V0KG1hcEtleSkgOiAw
OworfQorCiB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJk
RXZlbnQqIGV2ZW50KQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+ZC0+cGFnZS0+Zm9j
dXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwpAQCAtMzg3LDE1MCArNDUxLDc5
IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVu
dCogZXZlbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBtX3BhZ2Ut
PnRyaWdnZXJBY3Rpb24oYWN0aW9uKTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBldmVu
dC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBl
bHNlIHsKICNlbmRpZiAvLyBRVF9OT19TSE9SVENVVAotICAgICAgICBzd2l0Y2ggKGtldmVudC0+
d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKLSAgICAgICAgY2FzZSBWS19CQUNLOgotICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkRpcmVjdGlvbkJhY2t3YXJkLAotICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJH
cmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgVktfREVMRVRFOgotICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGly
ZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsCi0gICAgICAgICAg
ICAgICAgICAgIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBWS19MRUZUOgotICAgICAgICAgICAgaWYgKGtldmVudC0+
c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1v
dmVMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgZWxzZSBp
ZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZUxlZnQiKS5leGVjdXRlKCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVktf
UklHSFQ6Ci0gICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9u
IikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgZWxzZSBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y29t
bWFuZCgiTW92ZVJpZ2h0IikuZXhlY3V0ZSgpKQorICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmRO
YW1lID0gZWRpdG9yQ29tbWFuZEZvcktleUNvZGVBbmRNb2RpZmllcnMoZXZlbnQpOworICAgICAg
ICAgICAgaWYgKCFjb21tYW5kTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
ZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKCkpIC8vIEV2ZW50
IGhhbmRsZWQuCisgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFZLX1VQOgotICAgICAgICAgICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAg
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlv
biIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoIk1vdmVVcCIpLmV4ZWN1dGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWS19ET1dOOgotICAgICAgICAgICAgaWYgKGtl
dmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIk1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAg
ZWxzZSBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZURvd24iKS5leGVjdXRlKCkp
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFs
S2V5Q29kZSgpID09IFZLX1RBQikgeworICAgICAgICAgICAgICAgIC8vIERvIG5vdCBoYW5kbGUg
VEFCIHRleHQgaW5zZXJ0aW9uIGhlcmUuCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVktfUFJJT1I6IC8vIFBhZ2VVcAotICAgICAgICAg
ICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5k
KCJNb3ZlUGFnZVVwIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgVktfTkVYVDogLy8gUGFnZURvd24KLSAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5
KCkpCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZURv
d25BbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZURvd24iKS5leGVj
dXRlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWS19UQUI6Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBpZiAoa2V2ZW50LT50
eXBlKCkgIT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duICYmICFrZXZlbnQtPmN0cmxL
ZXkoKQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBib29sIHNob3VsZEluc2VydFRleHQg
PSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChrZXZlbnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OktleURvd24gJiYgIWtldmVudC0+dGV4dCgpLmlzRW1wdHkoKSkgeworCisgICAg
ICAgICAgICAgICAgaWYgKGtldmVudC0+Y3RybEtleSgpKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChrZXZlbnQtPmFsdEtleSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkSW5z
ZXJ0VGV4dCA9IHRydWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKICNpZm5kZWYgUV9XU19N
QUMKICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGV4Y2x1ZGUgY2hlY2tpbmcgZm9yIEFs
dCBiZWNhdXNlIGl0IGlzIGp1c3QgYSBkaWZmZXJlbnQgU2hpZnQKLSAgICAgICAgICAgICAgICAm
JiAha2V2ZW50LT5hbHRLZXkoKQorICAgICAgICAgICAgICAgIGlmICgha2V2ZW50LT5hbHRLZXko
KSkKICNlbmRpZgotICAgICAgICAgICAgICAgICYmICFrZXZlbnQtPnRleHQoKS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoa2V2ZW50LT50
ZXh0KCksIGV2ZW50KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V2ZW50LT5jdHJsS2V5KCkp
IHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2Rl
KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFZLX0E6Ci0gICAgICAgICAgICAgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIFZLX0I6Ci0gICAgICAgICAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiVG9nZ2xlQm9sZCIpLmV4ZWN1dGUo
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBWS19J
OgotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlRvZ2dsZUl0
YWxpYyIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgLy8gY2F0Y2ggY29tYmluYXRpb24g
QWx0R3Ira2V5IG9yIEN0cmwrQWx0K2tleQotICAgICAgICAgICAgICAgICAgICBpZiAoa2V2ZW50
LT50eXBlKCkgIT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duICYmIGtldmVudC0+YWx0
S2V5KCkgJiYgIWtldmVudC0+dGV4dCgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGtldmVudC0+dGV4dCgpLCBldmVudCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIHNob3VsZElu
c2VydFRleHQgPSB0cnVlOworCiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzaG91bGRJbnNlcnRUZXh0KSB7Cisg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGtldmVudC0+dGV4dCgp
LCBldmVudCk7CisgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKICAgICAgICAgaWYgKG1fcGFnZS0+aGFuZGxlKCktPnBhZ2UtPnNldHRpbmdzKCktPmNh
cmV0QnJvd3NpbmdFbmFibGVkKCkpIHsKICAgICAgICAgICAgIHN3aXRjaCAoa2V2ZW50LT53aW5k
b3dzVmlydHVhbEtleUNvZGUoKSkgewogICAgICAgICAgICAgY2FzZSBWS19MRUZUOgotICAgICAg
ICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkgJiYga2V2ZW50LT5jdHJsS2V5KCkpCi0g
ICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVdvcmRCYWNr
d2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNl
IGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZCgiTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpCi0gICAgICAgICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVdvcmRCYWNrd2FyZCIpLmV4ZWN1
dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZCgiTW92ZUxlZnQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZLX1JJR0hUOgotICAgICAgICAgICAgICAgIGlmIChr
ZXZlbnQtPnNoaWZ0S2V5KCkgJiYga2V2ZW50LT5jdHJsS2V5KCkpCi0gICAgICAgICAgICAgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2Vs
ZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtldmVudC0+c2hp
ZnRLZXkoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJN
b3ZlUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAg
ZWxzZSBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVdvcmRGb3J3YXJkIikuZXhlY3V0ZSgpOwotICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5k
KCJNb3ZlUmlnaHQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIFZLX1VQOgotICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkp
Ci0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVVwQW5k
TW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVXAiKS5leGVjdXRl
KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZLX0RPV046Ci0g
ICAgICAgICAgICAgICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIp
LmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZURvd24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZLX1BSSU9SOiAvLyBQYWdlVXAKLSAgICAg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVQYWdlVXAiKS5leGVjdXRl
KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZLX05FWFQ6IC8v
IFBhZ2VEb3duCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3Zl
UGFnZURvd24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICAgICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkK
LSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVG9CZWdp
bm5pbmdPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1v
dmVUb0JlZ2lubmluZ09mTGluZSIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgVktfRU5EOgotICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPnNo
aWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
TW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5k
KCJNb3ZlVG9FbmRPZkxpbmUiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgUVdlYlBhZ2U6OldlYkFjdGlvbiBhY3Rpb24gPSBR
V2ViUGFnZVByaXZhdGU6OmVkaXRvckFjdGlvbkZvcktleUV2ZW50KGtldmVudC0+cXRFdmVudCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGFjdGlvbiAhPSBRV2ViUGFnZTo6Tm9XZWJB
Y3Rpb24pOworICAgICAgICAgICAgICAgICAgICBtX3BhZ2UtPnRyaWdnZXJBY3Rpb24oYWN0aW9u
KTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBj
YXNlIFZLX1BSSU9SOiAvLyBQYWdlVXAKKyAgICAgICAgICAgIGNhc2UgVktfTkVYVDogLy8gUGFn
ZURvd24KKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBjb21t
YW5kTmFtZSA9IGVkaXRvckNvbW1hbmRGb3JLZXlDb2RlQW5kTW9kaWZpZXJzKGV2ZW50KTsKKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKCFjb21tYW5kTmFtZS5pc0VtcHR5KCkpOworICAgICAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1
dGUoKTsKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICNpZm5kZWYgUVRfTk9fU0hPUlRDVVQKLSAgICAgICAgaWYgKGtldmVu
dC0+cXRFdmVudCgpID09IFFLZXlTZXF1ZW5jZTo6Q29weSkKKyAgICAgICAgaWYgKGtldmVudC0+
cXRFdmVudCgpID09IFFLZXlTZXF1ZW5jZTo6Q29weSkgewogICAgICAgICAgICAgbV9wYWdlLT50
cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpDb3B5KTsKLSAgICAgICAgZWxzZQotI2VuZGlmIC8vIFFU
X05PX1NIT1JUQ1VUCisgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmIC8vIFFUX05PX1NIT1JUQ1VUCiAg
ICAgfQotICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCiB2b2lkIEVkaXRvckNs
aWVudFF0OjpoYW5kbGVJbnB1dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCopCi0tIAoxLjcu
MQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77225</attachid>
            <date>2010-12-22 09:31:31 -0800</date>
            <delta_ts>2011-01-02 17:53:56 -0800</delta_ts>
            <desc>patch 3 - v4 - right file.</desc>
            <filename>0001-2010-12-19-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>16173</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAxYzY5MzM5NmQyZmY0NzNhODhiNDEwMDhkY2I1YWI4OGM4ZDg3YmZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
U3VuLCAxOSBEZWMgMjAxMCAxNTozMTo0OSAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTAtMTIt
MTkgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCgogICAgICAgIFtRdF0gUmVmYWN0b3IgRWRpdG9yQ2xpZW50UXQ6Omhh
bmRsZUtleWJvYXJkRXZlbnQKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTEzMDYKCiAgICAgICAgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZl
bnQgcmVsaWVzIG9uIFFXZWJQYWdlUHJpdmF0ZTo6ZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQoKQog
ICAgICAgIHRvIGhhbmRsZSBhbGwgZWRpdG9yIGNvbW1hbmRzIHRoYXQgaGF2ZSBhIFFBY3Rpb24g
YXNzb2NpdGVkIHdpdGggaXQuCiAgICAgICAgSW4gcHJhY3RpY2UsIHRoYXQgY292ZXJzIG1vc3Qg
b2YgZWRpdG9yIGNvbW1hbmRzIChhcyBvbmUgY2FuIHNlZSBpbiBlZGl0b3JDb21tYW5kV2ViQWN0
aW9ucywKICAgICAgICBpbiBxd2VicGFnZS5jcHApLiBIb3dldmVyLCB0aGVyZSBhcmUgc29tZSBr
ZXlDb2RlcyBhc3NvY2lhdGVkIHRvIGFueSBubyBRQWN0aW9uCiAgICAgICAgdGhhdCBhcmUgYmVp
bmcgaGFuZGxlZCB3aXRoIGEgYnVuY2ggb2YgaWYvZWxzZSBhbmQgbmVzdGVkIHN3aXRjaCdzIHN0
YXRlbWVudHMKICAgICAgICBpbiBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCgp
LCBtYWtpbmcgdGhlIGNvZGUgaGFyZGx5IHJlYWRhYmxlLgoKICAgICAgICBUbyBpbXByb3ZlIHRo
ZSBjdXJyZW50IHNpdHVhdGlvbiwgdGhlIHBhdGNoIGludHJvZHVjZXMgYSBtYXBwaW5nIGhhc2gK
ICAgICAgICBmb3IgdGhvc2UgZXZlbnRzIG5vdCBjb3ZlcmVkIGJ5IFFXZWJQYWdlUHJpdmF0ZTo6
ZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQuCiAgICAgICAgVGhpcyBtYXBwaW5nIGhhbmRsZSwgZm9y
IGV4YW1wbGUsIGtleXMgbGlrZSBWS19CQUNLIGFuZCBWS19ERUxFVEUsIGFzIHdlbGwgYXMKICAg
ICAgICBWS19QUklPUiBhbmQgVktfTkVYVCAoUGFnZURvd24gYW5kIFBhZ2VVcCByZXNwZWN0aXZl
bHkpLiBBZGRpdGlvbmFsbHksIHRoZSBtYXBwaW5nCiAgICAgICAgaGFzaCBhbHNvIGluY2x1ZGVz
IHN1cHBvcnQgZm9yIGhhbmRsaW5nIGtleSBjb2RlcyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGlu
ZyBmb3IKICAgICAgICB3aGVuIGVpdGhlciBTcGF0aWFsIE5hdmlnYXRpb24gb3IgQ2FyZXQgQnJv
d3NpbmcgaXMgZW5hYmxlZC4KICAgICAgICBJbiBzdWNoIGNhc2VzLCBhbHRob3VnaCB0aGVyZSBh
cmUgc3VwcG9ydCBmb3IgdGhlbSBpbiBRV2ViUGFnZVByaXZhdGU6OmVkaXRvckFjdGlvbkZvcktl
eUV2ZW50LAogICAgICAgIHdlIGJldHRlciBoYW5kbGUgdGhlbSBkaWZmZXJlbnRseS4KCiAgICAg
ICAgTmVzdGVkIHN3aXRjaGVzIHN0YXRlbWVudHMgbWl4ZWQgd2l0aCBpZi9lbHNlJ3Mgd2VyZSBy
ZWZhY3RvcmVkLCBhbmQgZWFybHkKICAgICAgICByZXR1cm5zIHdlcmUgYWRkZWQgcmlnaHQgYWZ0
ZXIgYW4gZXZlbnQgZ2V0cyBjb25zdW1lZCBieSB0aGUgRWRpdG9yLgoKICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcDoKICAgICAgICAoV2ViQ29yZTo6aW50ZXJwcmV0
S2V5RXZlbnQpOgogICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9h
cmRFdmVudCk6Ci0tLQogV2ViS2l0L3F0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgMzAgKysrKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNw
cCB8ICAyMzMgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDE0
MyBpbnNlcnRpb25zKCspLCAxMjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggNzAxNmQ2Yy4uZWNkN2QzNCAx
MDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzMgQEAKKzIwMTAtMTItMTkgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmlt
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
UXRdIFJlZmFjdG9yIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTMwNgorCisgICAgICAg
IEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50IHJlbGllcyBvbiBRV2ViUGFnZVBy
aXZhdGU6OmVkaXRvckFjdGlvbkZvcktleUV2ZW50KCkKKyAgICAgICAgdG8gaGFuZGxlIGFsbCBl
ZGl0b3IgY29tbWFuZHMgdGhhdCBoYXZlIGEgUUFjdGlvbiBhc3NvY2l0ZWQgd2l0aCBpdC4KKyAg
ICAgICAgSW4gcHJhY3RpY2UsIHRoYXQgY292ZXJzIG1vc3Qgb2YgZWRpdG9yIGNvbW1hbmRzIChh
cyBvbmUgY2FuIHNlZSBpbiBlZGl0b3JDb21tYW5kV2ViQWN0aW9ucywKKyAgICAgICAgaW4gcXdl
YnBhZ2UuY3BwKS4gSG93ZXZlciwgdGhlcmUgYXJlIHNvbWUga2V5Q29kZXMgYXNzb2NpYXRlZCB0
byBhbnkgbm8gUUFjdGlvbgorICAgICAgICB0aGF0IGFyZSBiZWluZyBoYW5kbGVkIHdpdGggYSBi
dW5jaCBvZiBpZi9lbHNlIGFuZCBuZXN0ZWQgc3dpdGNoJ3Mgc3RhdGVtZW50cworICAgICAgICBp
biBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCgpLCBtYWtpbmcgdGhlIGNvZGUg
aGFyZGx5IHJlYWRhYmxlLgorCisgICAgICAgIFRvIGltcHJvdmUgdGhlIGN1cnJlbnQgc2l0dWF0
aW9uLCB0aGUgcGF0Y2ggaW50cm9kdWNlcyBhIG1hcHBpbmcgaGFzaAorICAgICAgICBmb3IgdGhv
c2UgZXZlbnRzIG5vdCBjb3ZlcmVkIGJ5IFFXZWJQYWdlUHJpdmF0ZTo6ZWRpdG9yQWN0aW9uRm9y
S2V5RXZlbnQuCisgICAgICAgIFRoaXMgbWFwcGluZyBoYW5kbGUsIGZvciBleGFtcGxlLCBrZXlz
IGxpa2UgVktfQkFDSyBhbmQgVktfREVMRVRFLCBhcyB3ZWxsIGFzCisgICAgICAgIFZLX1BSSU9S
IGFuZCBWS19ORVhUIChQYWdlRG93biBhbmQgUGFnZVVwIHJlc3BlY3RpdmVseSkuIEFkZGl0aW9u
YWxseSwgdGhlIG1hcHBpbmcKKyAgICAgICAgaGFzaCBhbHNvIGluY2x1ZGVzIHN1cHBvcnQgZm9y
IGhhbmRsaW5nIGtleSBjb2RlcyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZyBmb3IKKyAgICAg
ICAgd2hlbiBlaXRoZXIgU3BhdGlhbCBOYXZpZ2F0aW9uIG9yIENhcmV0IEJyb3dzaW5nIGlzIGVu
YWJsZWQuCisgICAgICAgIEluIHN1Y2ggY2FzZXMsIGFsdGhvdWdoIHRoZXJlIGFyZSBzdXBwb3J0
IGZvciB0aGVtIGluIFFXZWJQYWdlUHJpdmF0ZTo6ZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQsCisg
ICAgICAgIHdlIGJldHRlciBoYW5kbGUgdGhlbSBkaWZmZXJlbnRseS4KKworICAgICAgICBOZXN0
ZWQgc3dpdGNoZXMgc3RhdGVtZW50cyBtaXhlZCB3aXRoIGlmL2Vsc2UncyB3ZXJlIHJlZmFjdG9y
ZWQsIGFuZCBlYXJseQorICAgICAgICByZXR1cm5zIHdlcmUgYWRkZWQgcmlnaHQgYWZ0ZXIgYW4g
ZXZlbnQgZ2V0cyBjb25zdW1lZCBieSB0aGUgRWRpdG9yLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW50ZXJwcmV0S2V5
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJk
RXZlbnQpOgorCiAyMDEwLTEyLTIwICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW4ucG91bGFp
bkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KZGlmZiAt
LWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAgYi9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCmluZGV4IDNmYmM4M2QuLmFk
ZTgzNGIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRR
dC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcApA
QCAtMzQ2LDYgKzM0Niw3MCBAQCB2b2lkIEVkaXRvckNsaWVudFF0Ojp0b2dnbGVHcmFtbWFyQ2hl
Y2tpbmcoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3N0YXRpYyBjb25zdCB1bnNpZ25l
ZCBDdHJsS2V5ID0gMSA8PCAwOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIEFsdEtleSA9IDEgPDwg
MTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBTaGlmdEtleSA9IDEgPDwgMjsKKworc3RydWN0IEtl
eURvd25FbnRyeSB7CisgICAgdW5zaWduZWQgdmlydHVhbEtleTsKKyAgICB1bnNpZ25lZCBtb2Rp
ZmllcnM7CisgICAgY29uc3QgY2hhciogZWRpdG9yQ29tbWFuZDsKK307CisKKy8vIFdlIGFyZSBu
b3QgbWFwcGluZyBhbGwgZWRpdG9yIGNvbW1hbmRzIGhlcmUgc2luY2UgbW9zdCBvZiB0aGVtIGFy
ZSBiZWluZyBoYW5kbGVkIGluIHF3ZWJwYWdlLmNwcC4KKy8vIFRoZSBvbmVzIHdlIGFyZSBtYXBw
aW5nIGhlcmUgYXJlIGVpdGhlciBub3QgYmVpbmcgaGFuZGxlZCBpbiBRV2ViUGFnZSwgb3IgbmVl
ZCBzcGVjaWFsCisvLyBoYW5kbGluZyBmb3IgU3BhdGlhbCBOYXZpZ2F0aW9uIG9yIENhcmV0IEJy
b3dzaW5nIGZlYXR1cmVzLgorc3RhdGljIGNvbnN0IEtleURvd25FbnRyeSBrZXlEb3duRW50cmll
c1tdID0geworICAgIHsgVktfTEVGVCwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlTGVmdCIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfTEVGVCwgICBT
aGlmdEtleSwgICAgICAgICAgICJNb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlvbiIgICAgICAgICAg
ICAgICAgICB9LAorICAgIHsgVktfTEVGVCwgICBDdHJsS2V5LCAgICAgICAgICAgICJNb3ZlV29y
ZExlZnQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfTEVGVCwg
ICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZExlZnRBbmRNb2RpZnlTZWxlY3Rpb24iICAg
ICAgICAgICAgICB9LAorICAgIHsgVktfUklHSFQsICAwLCAgICAgICAgICAgICAgICAgICJNb3Zl
UmlnaHQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUklH
SFQsICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24iICAg
ICAgICAgICAgICAgICB9LAorICAgIHsgVktfUklHSFQsICBDdHJsS2V5LCAgICAgICAgICAgICJN
b3ZlV29yZFJpZ2h0IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktf
UklHSFQsICBDdHJsS2V5IHwgU2hpZnRLZXksICJNb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0
aW9uIiAgICAgICAgICAgICB9LAorICAgIHsgVktfVVAsICAgICAwLCAgICAgICAgICAgICAgICAg
ICJNb3ZlVXAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsg
VktfVVAsICAgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24i
ICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfRE9XTiwgICAwLCAgICAgICAgICAgICAg
ICAgICJNb3ZlRG93biIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAg
IHsgVktfRE9XTiwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVj
dGlvbiIgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfUFJJT1IsICAwLCAgICAgICAgICAg
ICAgICAgICJNb3ZlUGFnZVVwIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAor
ICAgIHsgVktfUFJJT1IsICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlUGFnZVVwQW5kTW9kaWZ5
U2VsZWN0aW9uIiAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfTkVYVCwgICAwLCAgICAgICAg
ICAgICAgICAgICJNb3ZlUGFnZURvd24iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgIHsgVktfTkVYVCwgICBTaGlmdEtleSwgICAgICAgICAgICJNb3ZlUGFnZURvd25BbmRN
b2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICB9LAorCisgICAgLy8gQ3RybCtERUxFVEUgYW5k
IEN0cmwrQkFDS1NQQUNFIGFyZSBjb3ZlcmVkIGJ5IFFXZWJQYWdlUHJpdmF0ZTo6ZWRpdG9yQ29t
bWFuZEZvcldlYkFjdGlvbnMoKS4KKyAgICB7IFZLX0RFTEVURSwgMCwgICAgICAgICAgICAgICAg
ICAiRGVsZXRlRm9yd2FyZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7
IFZLX0JBQ0ssICAgU2hpZnRLZXksICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQiICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0JBQ0ssICAgMCwgICAgICAgICAgICAg
ICAgICAiRGVsZXRlQmFja3dhcmQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKK307
CisKKyNkZWZpbmUgQVJSQVlTSVpFKGFycmF5KSAoc2l6ZW9mKGFycmF5KSAvIHNpemVvZigoYXJy
YXkpWzBdKSkKKworY29uc3QgY2hhciogZWRpdG9yQ29tbWFuZEZvcktleUNvZGVBbmRNb2RpZmll
cnMoY29uc3QgS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAgQVNTRVJUKGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCk7CisKKyAgICBzdGF0aWMgSGFzaE1hcDxp
bnQsIGNvbnN0IGNoYXIqPioga2V5RG93bkNvbW1hbmRzTWFwID0gMDsKKworICAgIGlmICgha2V5
RG93bkNvbW1hbmRzTWFwKSB7CisgICAgICAgIGtleURvd25Db21tYW5kc01hcCA9IG5ldyBIYXNo
TWFwPGludCwgY29uc3QgY2hhcio+OworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBBUlJBWVNJWkUoa2V5RG93bkVudHJpZXMpOyBpKyspCisgICAgICAgICAgICBrZXlEb3duQ29t
bWFuZHNNYXAtPnNldChrZXlEb3duRW50cmllc1tpXS5tb2RpZmllcnMgPDwgMTYgfCBrZXlEb3du
RW50cmllc1tpXS52aXJ0dWFsS2V5LCBrZXlEb3duRW50cmllc1tpXS5lZGl0b3JDb21tYW5kKTsK
KyAgICB9CisKKyAgICB1bnNpZ25lZCBtb2RpZmllcnMgPSAwOworICAgIGlmIChldmVudC0+c2hp
ZnRLZXkoKSkKKyAgICAgICAgbW9kaWZpZXJzIHw9IFNoaWZ0S2V5OworICAgIGlmIChldmVudC0+
YWx0S2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBBbHRLZXk7CisgICAgaWYgKGV2ZW50LT5j
dHJsS2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBDdHJsS2V5OworCisgICAgaW50IG1hcEtl
eSA9IG1vZGlmaWVycyA8PCAxNiB8IGV2ZW50LT5rZXlDb2RlKCk7CisgICAgcmV0dXJuIG1hcEtl
eSA/IGtleURvd25Db21tYW5kc01hcC0+Z2V0KG1hcEtleSkgOiAwOworfQorCiB2b2lkIEVkaXRv
ckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQqIGV2ZW50KQogewog
ICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+ZC0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOwpAQCAtMzg3LDE1MCArNDUxLDc5IEBAIHZvaWQgRWRpdG9yQ2xp
ZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZlbnQpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBtX3BhZ2UtPnRyaWdnZXJBY3Rpb24oYWN0
aW9uKTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRs
ZWQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKICNlbmRpZiAvLyBR
VF9OT19TSE9SVENVVAotICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlD
b2RlKCkpIHsKLSAgICAgICAgY2FzZSBWS19CQUNLOgotICAgICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkRpcmVjdGlvbkJh
Y2t3YXJkLAotICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2Us
IHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVktfREVMRVRFOgotICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkRpcmVjdGlvbkZvcndhcmQsCi0gICAgICAgICAgICAgICAgICAgIENoYXJhY3Rl
ckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBWS19MRUZUOgotICAgICAgICAgICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVMZWZ0QW5kTW9kaWZ5U2Vs
ZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgZWxzZSBpZiAoIWZyYW1lLT5lZGl0b3Io
KS0+Y29tbWFuZCgiTW92ZUxlZnQiKS5leGVjdXRlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVktfUklHSFQ6Ci0gICAgICAgICAg
ICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+Y29tbWFuZCgiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAg
ICAgICAgICAgZWxzZSBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVJpZ2h0Iiku
ZXhlY3V0ZSgpKQorICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmROYW1lID0gZWRpdG9yQ29tbWFu
ZEZvcktleUNvZGVBbmRNb2RpZmllcnMoZXZlbnQpOworICAgICAgICAgICAgaWYgKCFjb21tYW5k
TmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKCkpIC8vIEV2ZW50IGhhbmRsZWQuCisgICAgICAg
ICAgICAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZLX1VQOgotICAgICAg
ICAgICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVVcCIpLmV4
ZWN1dGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBWS19ET1dOOgotICAgICAgICAgICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkK
LSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVEb3duQW5kTW9k
aWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgZWxzZSBpZiAoIWZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZCgiTW92ZURvd24iKS5leGVjdXRlKCkpCisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpID09IFZLX1RB
QikgeworICAgICAgICAgICAgICAgIC8vIERvIG5vdCBoYW5kbGUgVEFCIHRleHQgaW5zZXJ0aW9u
IGhlcmUuCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgVktfUFJJT1I6IC8vIFBhZ2VVcAotICAgICAgICAgICAgaWYgKGtldmVudC0+c2hp
ZnRLZXkoKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVQ
YWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZVVwIikuZXhl
Y3V0ZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVktfTkVYVDogLy8gUGFn
ZURvd24KLSAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rp
b24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZURvd24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBWS19UQUI6Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBpZiAoa2V2ZW50LT50eXBlKCkgIT0gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpLZXlEb3duICYmICFrZXZlbnQtPmN0cmxLZXkoKQorICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBib29sIHNob3VsZEluc2VydFRleHQgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGlmIChrZXZlbnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd24g
JiYgIWtldmVudC0+dGV4dCgpLmlzRW1wdHkoKSkgeworCisgICAgICAgICAgICAgICAgaWYgKGtl
dmVudC0+Y3RybEtleSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPmFsdEtl
eSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkSW5zZXJ0VGV4dCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICNpZm5kZWYgUV9XU19NQUMKICAgICAgICAgICAgICAg
ICAvLyBXZSBuZWVkIHRvIGV4Y2x1ZGUgY2hlY2tpbmcgZm9yIEFsdCBiZWNhdXNlIGl0IGlzIGp1
c3QgYSBkaWZmZXJlbnQgU2hpZnQKLSAgICAgICAgICAgICAgICAmJiAha2V2ZW50LT5hbHRLZXko
KQorICAgICAgICAgICAgICAgIGlmICgha2V2ZW50LT5hbHRLZXkoKSkKICNlbmRpZgotICAgICAg
ICAgICAgICAgICYmICFrZXZlbnQtPnRleHQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmluc2VydFRleHQoa2V2ZW50LT50ZXh0KCksIGV2ZW50KTsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpIHsKLSAgICAgICAgICAgICAg
ICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKLSAgICAgICAgICAg
ICAgICBjYXNlIFZLX0E6Ci0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29t
bWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIFZLX0I6Ci0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZCgiVG9nZ2xlQm9sZCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBWS19JOgotICAgICAgICAgICAgICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlRvZ2dsZUl0YWxpYyIpLmV4ZWN1dGUoKTsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICAgICAgLy8gY2F0Y2ggY29tYmluYXRpb24gQWx0R3Ira2V5IG9yIEN0cmwr
QWx0K2tleQotICAgICAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT50eXBlKCkgIT0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpLZXlEb3duICYmIGtldmVudC0+YWx0S2V5KCkgJiYgIWtldmVudC0+
dGV4dCgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5pbnNlcnRUZXh0KGtldmVudC0+dGV4dCgpLCBldmVudCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEluc2VydFRleHQgPSB0cnVlOwor
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChzaG91bGRJbnNlcnRUZXh0KSB7CisgICAgICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGtldmVudC0+dGV4dCgpLCBldmVudCk7CisgICAgICAg
ICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYg
KG1fcGFnZS0+aGFuZGxlKCktPnBhZ2UtPnNldHRpbmdzKCktPmNhcmV0QnJvd3NpbmdFbmFibGVk
KCkpIHsKICAgICAgICAgICAgIHN3aXRjaCAoa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUo
KSkgewogICAgICAgICAgICAgY2FzZSBWS19MRUZUOgotICAgICAgICAgICAgICAgIGlmIChrZXZl
bnQtPnNoaWZ0S2V5KCkgJiYga2V2ZW50LT5jdHJsS2V5KCkpCi0gICAgICAgICAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVj
dGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXZlbnQtPnNoaWZ0
S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92
ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgZWxz
ZSBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZCgiTW92ZVdvcmRCYWNrd2FyZCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
TW92ZUxlZnQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFZLX1JJR0hUOgotICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkg
JiYga2V2ZW50LT5jdHJsS2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+Y29tbWFuZCgiTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgp
OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAg
ICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUmlnaHRBbmRNb2RpZnlT
ZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V2ZW50LT5j
dHJsS2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
TW92ZVdvcmRGb3J3YXJkIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUmlnaHQiKS5leGVj
dXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZLX1VQOgot
ICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiku
ZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVXAiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICAgICAgaWYg
KGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5jb21tYW5kKCJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29t
bWFuZCgiTW92ZURvd24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIFZLX1BSSU9SOiAvLyBQYWdlVXAKLSAgICAgICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVQYWdlVXAiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZLX05FWFQ6IC8vIFBhZ2VEb3duCi0gICAgICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZURvd24iKS5leGVjdXRl
KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZLX0hPTUU6Ci0g
ICAgICAgICAgICAgICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRNb2Rp
ZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0JlZ2lubmluZ09mTGlu
ZSIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
VktfRU5EOgotICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvRW5kT2ZMaW5lQW5k
TW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVG9FbmRPZkxpbmUi
KS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgUVdlYlBhZ2U6OldlYkFjdGlvbiBhY3Rpb24gPSBRV2ViUGFnZVByaXZhdGU6OmVk
aXRvckFjdGlvbkZvcktleUV2ZW50KGtldmVudC0+cXRFdmVudCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGFjdGlvbiAhPSBRV2ViUGFnZTo6Tm9XZWJBY3Rpb24pOworICAgICAgICAg
ICAgICAgICAgICBtX3BhZ2UtPnRyaWdnZXJBY3Rpb24oYWN0aW9uKTsKKyAgICAgICAgICAgICAg
ICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFZLX1BSSU9SOiAvLyBQ
YWdlVXAKKyAgICAgICAgICAgIGNhc2UgVktfTkVYVDogLy8gUGFnZURvd24KKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGVkaXRvckNv
bW1hbmRGb3JLZXlDb2RlQW5kTW9kaWZpZXJzKGV2ZW50KTsKKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKCFjb21tYW5kTmFtZS5pc0VtcHR5KCkpOworICAgICAgICAgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNp
Zm5kZWYgUVRfTk9fU0hPUlRDVVQKLSAgICAgICAgaWYgKGtldmVudC0+cXRFdmVudCgpID09IFFL
ZXlTZXF1ZW5jZTo6Q29weSkKKyAgICAgICAgaWYgKGtldmVudC0+cXRFdmVudCgpID09IFFLZXlT
ZXF1ZW5jZTo6Q29weSkgewogICAgICAgICAgICAgbV9wYWdlLT50cmlnZ2VyQWN0aW9uKFFXZWJQ
YWdlOjpDb3B5KTsKLSAgICAgICAgZWxzZQotI2VuZGlmIC8vIFFUX05PX1NIT1JUQ1VUCisgICAg
ICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorI2VuZGlmIC8vIFFUX05PX1NIT1JUQ1VUCiAgICAgfQotICAgIGV2ZW50LT5z
ZXREZWZhdWx0SGFuZGxlZCgpOwogfQogCiB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVJbnB1
dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCopCi0tIAoxLjcuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77787</attachid>
            <date>2011-01-02 17:53:56 -0800</date>
            <delta_ts>2011-01-03 08:04:36 -0800</delta_ts>
            <desc>patch 3 - v5 (committed r74891- r=kenneth)</desc>
            <filename>0001-2011-01-02-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>15007</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBhMDYyYzBkZWNhZmZkZTIwZmFlYTVkMTZjZmVlMDQwNDg5ZDU4MWY4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
U3VuLCAxOSBEZWMgMjAxMCAxNTozMTo0OSAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTEtMDEt
MDIgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCgogICAgICAgIFtRdF0gUmVmYWN0b3IgRWRpdG9yQ2xpZW50UXQ6Omhh
bmRsZUtleWJvYXJkRXZlbnQKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTEzMDYKCiAgICAgICAgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZl
bnQgcmVsaWVzIG9uIFFXZWJQYWdlUHJpdmF0ZTo6ZWRpdG9yQWN0aW9uRm9yS2V5RXZlbnQoKQog
ICAgICAgIHRvIGhhbmRsZSBhbGwgZWRpdG9yIGNvbW1hbmRzIHRoYXQgaGF2ZSBhIFFBY3Rpb24g
YXNzb2NpdGVkIHdpdGggaXQuCiAgICAgICAgSW4gcHJhY3RpY2UsIHRoYXQgY292ZXJzIG1vc3Qg
b2YgZWRpdG9yIGNvbW1hbmRzIChhcyBvbmUgY2FuIHNlZSBpbiBlZGl0b3JDb21tYW5kV2ViQWN0
aW9ucywKICAgICAgICBpbiBxd2VicGFnZS5jcHApLiBIb3dldmVyLCB0aGVyZSBhcmUgc29tZSBr
ZXkgZG93biBldmVudHMgdGhhdCBhcmUgYXNzb2NpYXRlZCB0byBubyBRQWN0aW9uCiAgICAgICAg
b3IgbmVlZCBzcGVjaWFsIGhhbmRsaW5nIHdoZW4gZmVhdHVyZXMgbGlrZSBzcGF0aWFsIG5hdmln
YXRpb24gb3IKICAgICAgICBjYXJldCBicm93c2luZyBhcmUgZW5hYmxlZC4gQ3VycmVudGx5LCB0
aGVzZSBjYXNlcyBhcmUgYmVpbmcgaGFuZGxlZCB3aXRoIGNvbmZ1c2luZwogICAgICAgIGFuZCBu
ZXN0ZWQgaWYvZWxzZSBzd2l0Y2gncyBzdGF0ZW1lbnRzIGluIEVkaXRvckNsaWVudFF0OjpoYW5k
bGVLZXlib2FyZEV2ZW50KCksCiAgICAgICAgYW5kIHRoZSBjb2RlIGlzIGhhcmRseSByZWFkYWJs
ZS4KCiAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbWFwcGluZyBoYXNoIGZvciB0aG9z
ZSBjYXNlcywgc2ltcGxpZnlpbmcgbXVjaAogICAgICAgIHRoZSBjb2RlLiBCYXNpY2FsbHksIG5l
c3RlZCBzd2l0Y2hlcyBzdGF0ZW1lbnRzIG1peGVkIHdpdGggaWYvZWxzZSdzIHdlcmUKICAgICAg
ICByZWZhY3RvcmVkLCBhbmQgZWFybHkgcmV0dXJucyB3ZXJlIGFkZGVkIHJpZ2h0IGFmdGVyIGFu
IGV2ZW50IGdldHMgY29uc3VtZWQKICAgICAgICBieSB0aGUgRWRpdG9yLgoKICAgICAgICBTaW5j
ZSBpdCBpcyBhIHJlZmFjdG9yIG9ubHkgcGF0Y2gsIHRoZXJlIGlzIG5vIGZ1bmNpb25hbGl0eSBj
aGFuZ2UgYXQKICAgICAgICBhbGwsIGFuZCB0aGVuIG5vIG5ldyB0ZXN0cyBhcmUgYmVpbmcgYWRk
ZWQuCgogICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgogICAgICAg
IChXZWJDb3JlOjppbnRlcnByZXRLZXlFdmVudCk6CiAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNs
aWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKLS0tCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAyOCArKysKIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRRdC5jcHAgfCAgMjUwICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQog
MiBmaWxlcyBjaGFuZ2VkLCAxNDcgaW5zZXJ0aW9ucygrKSwgMTMxIGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4
IGFiNzhlMGMuLjg2NGQwNjYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDExLTAxLTAyICBBbnRvbmlv
IEdvbWVzICA8YWdvbWVzQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgW1F0XSBSZWZhY3RvciBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5
Ym9hcmRFdmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTEzMDYKKworICAgICAgICBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCBy
ZWxpZXMgb24gUVdlYlBhZ2VQcml2YXRlOjplZGl0b3JBY3Rpb25Gb3JLZXlFdmVudCgpCisgICAg
ICAgIHRvIGhhbmRsZSBhbGwgZWRpdG9yIGNvbW1hbmRzIHRoYXQgaGF2ZSBhIFFBY3Rpb24gYXNz
b2NpdGVkIHdpdGggaXQuCisgICAgICAgIEluIHByYWN0aWNlLCB0aGF0IGNvdmVycyBtb3N0IG9m
IGVkaXRvciBjb21tYW5kcyAoYXMgb25lIGNhbiBzZWUgaW4gZWRpdG9yQ29tbWFuZFdlYkFjdGlv
bnMsCisgICAgICAgIGluIHF3ZWJwYWdlLmNwcCkuIEhvd2V2ZXIsIHRoZXJlIGFyZSBzb21lIGtl
eSBkb3duIGV2ZW50cyB0aGF0IGFyZSBhc3NvY2lhdGVkIHRvIG5vIFFBY3Rpb24KKyAgICAgICAg
b3IgbmVlZCBzcGVjaWFsIGhhbmRsaW5nIHdoZW4gZmVhdHVyZXMgbGlrZSBzcGF0aWFsIG5hdmln
YXRpb24gb3IKKyAgICAgICAgY2FyZXQgYnJvd3NpbmcgYXJlIGVuYWJsZWQuIEN1cnJlbnRseSwg
dGhlc2UgY2FzZXMgYXJlIGJlaW5nIGhhbmRsZWQgd2l0aCBjb25mdXNpbmcKKyAgICAgICAgYW5k
IG5lc3RlZCBpZi9lbHNlIHN3aXRjaCdzIHN0YXRlbWVudHMgaW4gRWRpdG9yQ2xpZW50UXQ6Omhh
bmRsZUtleWJvYXJkRXZlbnQoKSwKKyAgICAgICAgYW5kIHRoZSBjb2RlIGlzIGhhcmRseSByZWFk
YWJsZS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBtYXBwaW5nIGhhc2ggZm9y
IHRob3NlIGNhc2VzLCBzaW1wbGlmeWluZyBtdWNoCisgICAgICAgIHRoZSBjb2RlLiBCYXNpY2Fs
bHksIG5lc3RlZCBzd2l0Y2hlcyBzdGF0ZW1lbnRzIG1peGVkIHdpdGggaWYvZWxzZSdzIHdlcmUK
KyAgICAgICAgcmVmYWN0b3JlZCwgYW5kIGVhcmx5IHJldHVybnMgd2VyZSBhZGRlZCByaWdodCBh
ZnRlciBhbiBldmVudCBnZXRzIGNvbnN1bWVkCisgICAgICAgIGJ5IHRoZSBFZGl0b3IuCisKKyAg
ICAgICAgU2luY2UgaXQgaXMgYSByZWZhY3RvciBvbmx5IHBhdGNoLCB0aGVyZSBpcyBubyBmdW5j
aW9uYWxpdHkgY2hhbmdlIGF0CisgICAgICAgIGFsbCwgYW5kIHRoZW4gbm8gbmV3IHRlc3RzIGFy
ZSBiZWluZyBhZGRlZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmludGVycHJldEtleUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KToKKwogMjAxMC0xMi0y
OSAgS2VudCBIYW5zZW4gIDxrZW50LmhhbnNlbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudFF0LmNwcAppbmRleCA5YzIwMjdiLi5iZmY1MjY3IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKQEAgLTM0Niw2ICszNDYsNTkgQEAgdm9pZCBFZGl0
b3JDbGllbnRRdDo6dG9nZ2xlR3JhbW1hckNoZWNraW5nKCkKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCitzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3RybEtleSA9IDEgPDwgMDsKK3N0YXRpYyBj
b25zdCB1bnNpZ25lZCBBbHRLZXkgPSAxIDw8IDE7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgU2hp
ZnRLZXkgPSAxIDw8IDI7CisKK3N0cnVjdCBLZXlEb3duRW50cnkgeworICAgIHVuc2lnbmVkIHZp
cnR1YWxLZXk7CisgICAgdW5zaWduZWQgbW9kaWZpZXJzOworICAgIGNvbnN0IGNoYXIqIGVkaXRv
ckNvbW1hbmQ7Cit9OworCisvLyBIYW5kbGUgaGVyZSBrZXkgZG93biBldmVudHMgdGhhdCBhcmUg
bmVlZGVkIGZvciBzcGF0aWFsIG5hdmlnYXRpb24gYW5kIGNhcmV0IGJyb3dzaW5nLCBvcgorLy8g
YXJlIG5vdCBoYW5kbGVkIGJ5IFFXZWJQYWdlLgorc3RhdGljIGNvbnN0IEtleURvd25FbnRyeSBr
ZXlEb3duRW50cmllc1tdID0geworICAgIC8vIE9uZXMgdGhhdCBkbyBub3QgaGF2ZSBhbiBhc3Nv
Y2lhdGVkIFFBY3Rpb246CisgICAgeyBWS19ERUxFVEUsIDAsICAgICAgICAgICAgICAgICAgIkRl
bGV0ZUZvcndhcmQiICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX0JBQ0ssICAgU2hp
ZnRLZXksICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQiICAgICAgICAgICAgICAgICAgICB9LAor
ICAgIHsgVktfQkFDSywgICAwLCAgICAgICAgICAgICAgICAgICJEZWxldGVCYWNrd2FyZCIgICAg
ICAgICAgICAgICAgICAgIH0sCisgICAgLy8gT25lcyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGlu
ZyBmb3IgY2FyZXQgYnJvd3Npbmc6CisgICAgeyBWS19QUklPUiwgIDAsICAgICAgICAgICAgICAg
ICAgIk1vdmVQYWdlVXAiICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1BSSU9S
LCAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIgICAg
ICB9LAorICAgIHsgVktfTkVYVCwgICAwLCAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd24i
ICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19ORVhULCAgIFNoaWZ0S2V5LCAgICAg
ICAgICAgIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgICAgfSwKKyAgICAvLyBPbmVz
IHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nIGZvciBzcGF0aWFsIG5hdmlnYXRpb246CisgICAg
eyBWS19MRUZULCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0IiAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKKyAgICB7IFZLX1JJR0hULCAgMCwgICAgICAgICAgICAgICAgICAiTW92
ZVJpZ2h0IiAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgIHsgVktfVVAsICAgICAwLCAg
ICAgICAgICAgICAgICAgICJNb3ZlVXAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisg
ICAgeyBWS19ET1dOLCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVEb3duIiAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKK307CisKK2NvbnN0IGNoYXIqIGVkaXRvckNvbW1hbmRGb3JLZXlE
b3duRXZlbnQoY29uc3QgS2V5Ym9hcmRFdmVudCogZXZlbnQpCit7CisgICAgQVNTRVJUKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCk7CisKKyAgICBzdGF0aWMgSGFz
aE1hcDxpbnQsIGNvbnN0IGNoYXIqPiBrZXlEb3duQ29tbWFuZHNNYXA7CisgICAgaWYgKGtleURv
d25Db21tYW5kc01hcC5pc0VtcHR5KCkpIHsKKworICAgICAgICB1bnNpZ25lZCBudW1FbnRyaWVz
ID0gc2l6ZW9mKGtleURvd25FbnRyaWVzKSAvIHNpemVvZigoa2V5RG93bkVudHJpZXMpWzBdKTsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUVudHJpZXM7IGkrKykKKyAgICAg
ICAgICAgIGtleURvd25Db21tYW5kc01hcC5zZXQoa2V5RG93bkVudHJpZXNbaV0ubW9kaWZpZXJz
IDw8IDE2IHwga2V5RG93bkVudHJpZXNbaV0udmlydHVhbEtleSwga2V5RG93bkVudHJpZXNbaV0u
ZWRpdG9yQ29tbWFuZCk7CisgICAgfQorCisgICAgdW5zaWduZWQgbW9kaWZpZXJzID0gMDsKKyAg
ICBpZiAoZXZlbnQtPnNoaWZ0S2V5KCkpCisgICAgICAgIG1vZGlmaWVycyB8PSBTaGlmdEtleTsK
KyAgICBpZiAoZXZlbnQtPmFsdEtleSgpKQorICAgICAgICBtb2RpZmllcnMgfD0gQWx0S2V5Owor
ICAgIGlmIChldmVudC0+Y3RybEtleSgpKQorICAgICAgICBtb2RpZmllcnMgfD0gQ3RybEtleTsK
KworICAgIGludCBtYXBLZXkgPSBtb2RpZmllcnMgPDwgMTYgfCBldmVudC0+a2V5Q29kZSgpOwor
ICAgIHJldHVybiBtYXBLZXkgPyBrZXlEb3duQ29tbWFuZHNNYXAuZ2V0KG1hcEtleSkgOiAwOwor
fQorCiB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZl
bnQqIGV2ZW50KQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+ZC0+cGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwpAQCAtMzg3LDE1MCArNDQwLDg1IEBA
IHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCog
ZXZlbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBtX3BhZ2UtPnRy
aWdnZXJBY3Rpb24oYWN0aW9uKTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBldmVudC0+
c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNl
IHsKICNlbmRpZiAvLyBRVF9OT19TSE9SVENVVAotICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2lu
ZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKLSAgICAgICAgY2FzZSBWS19CQUNLOgotICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkJhY2t3YXJk
LAotICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVktfREVMRVRFOgotICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKERpcmVjdGlvbkZvcndhcmQs
Ci0gICAgICAgICAgICAgICAgICAgIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWS19MRUZUOgotICAgICAgICAgICAg
aWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PmNvbW1hbmQoIk1vdmVMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAg
ICAgICAgZWxzZSBpZiAoIWZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZUxlZnQiKS5leGVj
dXRlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgVktfUklHSFQ6Ci0gICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQot
ICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVJpZ2h0QW5kTW9k
aWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgZWxzZSBpZiAoIWZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVJpZ2h0IikuZXhlY3V0ZSgpKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZLX1VQOgotICAgICAg
ICAgICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKCFmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVVcCIpLmV4
ZWN1dGUoKSkKKyAgICAgICAgICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGVkaXRvckNvbW1hbmRG
b3JLZXlEb3duRXZlbnQoZXZlbnQpOworICAgICAgICAgICAgaWYgKCFjb21tYW5kTmFtZS5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKGNv
bW1hbmROYW1lKS5leGVjdXRlKCkpIC8vIEV2ZW50IGhhbmRsZWQuCisgICAgICAgICAgICAgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICBp
ZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
Y29tbWFuZCgiTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0gICAgICAg
ICAgICBlbHNlIGlmICghZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlRG93biIpLmV4ZWN1
dGUoKSkKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGtldmVudC0+d2luZG93c1Zp
cnR1YWxLZXlDb2RlKCkgPT0gVktfVEFCKSB7CisgICAgICAgICAgICAgICAgLy8gRG8gbm90IGhh
bmRsZSBUQUIgdGV4dCBpbnNlcnRpb24gaGVyZS4KICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWS19QUklPUjogLy8gUGFnZVVwCi0gICAg
ICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUo
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNv
bW1hbmQoIk1vdmVQYWdlVXAiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBWS19ORVhUOiAvLyBQYWdlRG93bgotICAgICAgICAgICAgaWYgKGtldmVudC0+c2hp
ZnRLZXkoKSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVQ
YWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVQYWdlRG93biIp
LmV4ZWN1dGUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFZLX1RBQjoKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChrZXZl
bnQtPnR5cGUoKSAhPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd24gJiYgIWtldmVudC0+
Y3RybEtleSgpCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRleHQgaW5zZXJ0aW9u
LgorICAgICAgICAgICAgYm9vbCBzaG91bGRJbnNlcnRUZXh0ID0gZmFsc2U7CisgICAgICAgICAg
ICBpZiAoa2V2ZW50LT50eXBlKCkgIT0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duICYm
ICFrZXZlbnQtPnRleHQoKS5pc0VtcHR5KCkpIHsKKworICAgICAgICAgICAgICAgIGlmIChrZXZl
bnQtPmN0cmxLZXkoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5hbHRLZXko
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEluc2VydFRleHQgPSB0cnVlOworICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAjaWZuZGVmIFFfV1NfTUFDCiAgICAgICAgICAgICAgICAg
Ly8gV2UgbmVlZCB0byBleGNsdWRlIGNoZWNraW5nIGZvciBBbHQgYmVjYXVzZSBpdCBpcyBqdXN0
IGEgZGlmZmVyZW50IFNoaWZ0Ci0gICAgICAgICAgICAgICAgJiYgIWtldmVudC0+YWx0S2V5KCkK
KyAgICAgICAgICAgICAgICBpZiAoIWtldmVudC0+YWx0S2V5KCkpCiAjZW5kaWYKLSAgICAgICAg
ICAgICAgICAmJiAha2V2ZW50LT50ZXh0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5pbnNlcnRUZXh0KGtldmVudC0+dGV4dCgpLCBldmVudCk7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKGtldmVudC0+Y3RybEtleSgpKSB7Ci0gICAgICAgICAgICAgICAg
c3dpdGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBWS19BOgotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBWS19COgotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoIlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgVktfSToKLSAgICAgICAgICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJUb2dnbGVJdGFsaWMiKS5leGVjdXRlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgICAgIC8vIGNhdGNoIGNvbWJpbmF0aW9uIEFsdEdyK2tleSBvciBDdHJsK0Fs
dCtrZXkKLSAgICAgICAgICAgICAgICAgICAgaWYgKGtldmVudC0+dHlwZSgpICE9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6S2V5RG93biAmJiBrZXZlbnQtPmFsdEtleSgpICYmICFrZXZlbnQtPnRl
eHQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3Io
KS0+aW5zZXJ0VGV4dChrZXZlbnQtPnRleHQoKSwgZXZlbnQpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgICAgICBzaG91bGRJbnNlcnRUZXh0ID0gdHJ1ZTsKKwog
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoc2hvdWxkSW5zZXJ0VGV4dCkgeworICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+aW5zZXJ0VGV4dChrZXZlbnQtPnRleHQoKSwgZXZlbnQpOworICAgICAgICAg
ICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICht
X3BhZ2UtPmhhbmRsZSgpLT5wYWdlLT5zZXR0aW5ncygpLT5jYXJldEJyb3dzaW5nRW5hYmxlZCgp
KSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkp
IHsKLSAgICAgICAgICAgIGNhc2UgVktfTEVGVDoKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50
LT5zaGlmdEtleSgpICYmIGtldmVudC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rp
b24iKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V2ZW50LT5zaGlmdEtl
eSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVM
ZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGtldmVudC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoIk1vdmVXb3JkQmFja3dhcmQiKS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1v
dmVMZWZ0IikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBWS19SSUdIVDoKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpICYm
IGtldmVudC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCkt
PmNvbW1hbmQoIk1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsK
LSAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVJpZ2h0QW5kTW9kaWZ5U2Vs
ZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtldmVudC0+Y3Ry
bEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1v
dmVXb3JkRm9yd2FyZCIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVJpZ2h0IikuZXhlY3V0
ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19VUDoKLSAg
ICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAgICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4
ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVVwIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19ET1dOOgotICAgICAgICAgICAgICAgIGlmIChr
ZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
Y29tbWFuZCgiTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIk1vdmVEb3duIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBWS19QUklPUjogLy8gUGFnZVVwCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZVVwIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19ORVhUOiAvLyBQYWdlRG93bgotICAgICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VEb3duIikuZXhlY3V0ZSgp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBWS19IT01FOgotICAg
ICAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5
U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUi
KS5leGVjdXRlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFZL
X0VORDoKLSAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5zaGlmdEtleSgpKQotICAgICAgICAg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0VuZE9mTGluZUFuZE1v
ZGlmeVNlbGVjdGlvbiIpLmV4ZWN1dGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvRW5kT2ZMaW5lIiku
ZXhlY3V0ZSgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvLyBFdmVudCBub3QgaGFuZGxlZC4K
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIE5vbiBlZGl0YWJsZSBjb250ZW50Lgor
ICAgIGlmIChtX3BhZ2UtPmhhbmRsZSgpLT5wYWdlLT5zZXR0aW5ncygpLT5jYXJldEJyb3dzaW5n
RW5hYmxlZCgpKSB7CisgICAgICAgIHN3aXRjaCAoa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNv
ZGUoKSkgeworICAgICAgICBjYXNlIFZLX0xFRlQ6CisgICAgICAgIGNhc2UgVktfUklHSFQ6Cisg
ICAgICAgIGNhc2UgVktfVVA6CisgICAgICAgIGNhc2UgVktfRE9XTjoKKyAgICAgICAgY2FzZSBW
S19IT01FOgorICAgICAgICBjYXNlIFZLX0VORDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBRV2ViUGFnZTo6V2ViQWN0aW9uIGFjdGlvbiA9IFFXZWJQYWdlUHJpdmF0ZTo6ZWRpdG9y
QWN0aW9uRm9yS2V5RXZlbnQoa2V2ZW50LT5xdEV2ZW50KCkpOworICAgICAgICAgICAgICAgIEFT
U0VSVChhY3Rpb24gIT0gUVdlYlBhZ2U6Ok5vV2ViQWN0aW9uKTsKKyAgICAgICAgICAgICAgICBt
X3BhZ2UtPnRyaWdnZXJBY3Rpb24oYWN0aW9uKTsKKyAgICAgICAgICAgICAgICBldmVudC0+c2V0
RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgIGNhc2UgVktfUFJJT1I6IC8vIFBhZ2VVcAorICAgICAgICBjYXNlIFZLX05FWFQ6
ICAvLyBQYWdlRG93bgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFN0cmluZyBjb21t
YW5kTmFtZSA9IGVkaXRvckNvbW1hbmRGb3JLZXlEb3duRXZlbnQoZXZlbnQpOworICAgICAgICAg
ICAgICAgIEFTU0VSVCghY29tbWFuZE5hbWUuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1dGUoKTsKKyAgICAgICAg
ICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICB9CisKICNpZm5kZWYgUVRfTk9fU0hP
UlRDVVQKLSAgICAgICAgaWYgKGtldmVudC0+cXRFdmVudCgpID09IFFLZXlTZXF1ZW5jZTo6Q29w
eSkKLSAgICAgICAgICAgIG1fcGFnZS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6Q29weSk7Ci0g
ICAgICAgIGVsc2UKLSNlbmRpZiAvLyBRVF9OT19TSE9SVENVVAotICAgICAgICAgICAgcmV0dXJu
OworICAgIGlmIChrZXZlbnQtPnF0RXZlbnQoKSA9PSBRS2V5U2VxdWVuY2U6OkNvcHkpIHsKKyAg
ICAgICAgbV9wYWdlLT50cmlnZ2VyQWN0aW9uKFFXZWJQYWdlOjpDb3B5KTsKKyAgICAgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisjZW5kaWYgLy8gUVRfTk9fU0hPUlRDVVQKIH0KIAog
dm9pZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJvYXJkRXZl
bnQqKQotLSAKMS43LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77829</attachid>
            <date>2011-01-03 11:29:24 -0800</date>
            <delta_ts>2011-01-03 13:16:21 -0800</delta_ts>
            <desc>patch 4 - v1</desc>
            <filename>0001-2011-01-03-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>1689</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAwOTY0Yzg4MmJiYjkyYjQ0MmExNjRmNDE0NjVjNjhkY2U4YzMxNDZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
TW9uLCAzIEphbiAyMDExIDE0OjA4OjM3IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMS0wMS0w
MyAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgoKICAgICAgICBVbnJldmlld2VkIGNy
YXNoIGZpeC4KCiAgICAgICAgRm9sbG93IHVwIG9mIHI3NDg5MTogcG90ZW50aWFsIGNyYXNoIGZp
eCAoYm9ndXMgYXNzZXJ0aW9uKS4KCiAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRRdC5jcHA6CiAgICAgICAgKFdlYkNvcmU6OmVkaXRvckNvbW1hbmRGb3JLZXlEb3duRXZlbnQp
OgotLS0KIFdlYktpdC9xdC9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5
ICsrKysrKysrKwogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcCB8
ICAgIDMgKystCiAyIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VM
b2cKaW5kZXggMjVkNTYyYS4uZWNkNjQ0MiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDEtMDMg
IEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KKworICAgICAgICBVbnJldmlld2VkIGNy
YXNoIGZpeC4KKworICAgICAgICBGb2xsb3cgdXAgb2Ygcjc0ODkxOiBwb3RlbnRpYWwgY3Jhc2gg
Zml4IChib2d1cyBhc3NlcnRpb24pLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWRpdG9yQ29tbWFuZEZvcktleURvd25F
dmVudCk6CisKIDIwMTEtMDEtMDMgIE5vYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9r
aWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYgLS1naXQg
YS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAppbmRleCBiZmY1MjY3Li41MzRlMzM0
IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3Bw
CisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKQEAgLTM3
Nyw3ICszNzcsOCBAQCBzdGF0aWMgY29uc3QgS2V5RG93bkVudHJ5IGtleURvd25FbnRyaWVzW10g
PSB7CiAKIGNvbnN0IGNoYXIqIGVkaXRvckNvbW1hbmRGb3JLZXlEb3duRXZlbnQoY29uc3QgS2V5
Ym9hcmRFdmVudCogZXZlbnQpCiB7Ci0gICAgQVNTRVJUKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmtleWRvd25FdmVudCk7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1l
cygpLmtleWRvd25FdmVudCkKKyAgICAgICAgcmV0dXJuICIiOwogCiAgICAgc3RhdGljIEhhc2hN
YXA8aW50LCBjb25zdCBjaGFyKj4ga2V5RG93bkNvbW1hbmRzTWFwOwogICAgIGlmIChrZXlEb3du
Q29tbWFuZHNNYXAuaXNFbXB0eSgpKSB7Ci0tIAoxLjcuMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>