<?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>74757</bug_id>
          
          <creation_ts>2011-12-16 15:01:46 -0800</creation_ts>
          <short_desc>XSLT-created HTML documents do not inherit first party for cookies from originally loaded XML.</short_desc>
          <delta_ts>2011-12-22 02:40:03 -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>XML</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Thomas Sepez">tsepez</reporter>
          <assigned_to name="Thomas Sepez">tsepez</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>523071</commentid>
    <comment_count>0</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-12-16 15:01:46 -0800</bug_when>
    <thetext>This is causing problems downstream along the lines of: http://code.google.com/p/chromium/issues/detail?id=104715

I think the correct thing to do is to copy the original document&apos;s first party for cookies in WebCore/xml/XSLTProcessor.cpp&apos;s 
PassRefPtr&lt;Document&gt; XSLTProcessor::createDocumentFromSource():

       if (Document* oldDocument = frame-&gt;document()) {
            result-&gt;setTransformSourceDocument(oldDocument);
            result-&gt;setSecurityOrigin(oldDocument-&gt;securityOrigin());
            result-&gt;setCookieURL(oldDocument-&gt;cookieURL());
+           result-&gt;setFirstPartyForCookies(oldDocument-&gt;firstPartyForCookies());
        }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524073</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-19 11:45:34 -0800</bug_when>
    <thetext>Yep</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524074</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-19 11:46:12 -0800</bug_when>
    <thetext>We should move cookieURL and firstPartyForCookies into SecurityContext and copy over the whole SecurityContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524094</commentid>
    <comment_count>3</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-12-19 12:04:40 -0800</bug_when>
    <thetext>I&apos;ll take a shot at this if its not too disruptive.  I would feel a lot better if there weren&apos;t all these dangling parts outside the context which could fall off at any point in time ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524815</commentid>
    <comment_count>4</comment_count>
      <attachid>120080</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-12-20 14:10:39 -0800</bug_when>
    <thetext>Created attachment 120080
Patch + tests

Note: confirmed third-party-cookie-blocking-xslt.xml flunks prior to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524819</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-20 14:16:14 -0800</bug_when>
    <thetext>Attachment 120080 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1

Source/WebCore/dom/SecurityContext.h:75:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebCore/dom/SecurityContext.h:84:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
LayoutTests/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
LayoutTests/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:10:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 7 in 12 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>524825</commentid>
    <comment_count>6</comment_count>
      <attachid>120085</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-12-20 14:19:07 -0800</bug_when>
    <thetext>Created attachment 120085
Patch, test, whitespace cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524846</commentid>
    <comment_count>7</comment_count>
      <attachid>120085</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-20 14:53:02 -0800</bug_when>
    <thetext>Comment on attachment 120085
Patch, test, whitespace cleanup.

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

&gt; Source/WebCore/dom/Document.cpp:4577
&gt; -    SecurityContext::setSecurityOrigin(origin);
&gt; +    *static_cast&lt;SecurityContext*&gt;(this) = that;

I wonder if this is exactly right.  For example, this will end up having the two documents pointing to the same ContentSecurityPolicy object.  Is that the right thing?

&gt; Source/WebCore/dom/Document.h:997
&gt; +    void updateSecurityContextFromDocument(const Document&amp;);

Should we keep the warning about how this function is dangerous?

&gt; Source/WebCore/dom/SecurityContext.h:64
&gt; +    // Explicitly override the security origin for this security context.
&gt; +    // Note: It is dangerous to change the security origin of a context that already contains content.
&gt; +    void setSecurityOrigin(PassRefPtr&lt;SecurityOrigin&gt;);

Can we make this private?

&gt; Source/WebCore/dom/SecurityContext.h:67
&gt; +    void setContentSecurityPolicy(PassRefPtr&lt;ContentSecurityPolicy&gt;);

Can we make this private?

&gt; Source/WebCore/dom/SecurityContext.h:80
&gt; +    void setCookieURL(const KURL&amp; url) { m_cookieURL = url; }

Can we make this protected?

&gt; Source/WebCore/dom/SecurityContext.h:93
&gt; +    void setFirstPartyForCookies(const KURL&amp; url) { m_firstPartyForCookies = url; }

Can we make this private?

&gt; Source/WebCore/xml/XSLTProcessor.cpp:91
&gt; +            result-&gt;updateSecurityContextFromDocument(*oldDocument);

Maybe this function should take a Document* ?  Generally we pass around document as pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524876</commentid>
    <comment_count>8</comment_count>
      <attachid>120085</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-12-20 15:26:26 -0800</bug_when>
    <thetext>Comment on attachment 120085
Patch, test, whitespace cleanup.

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

&gt;&gt; Source/WebCore/dom/Document.cpp:4577
&gt;&gt; +    *static_cast&lt;SecurityContext*&gt;(this) = that;
&gt; 
&gt; I wonder if this is exactly right.  For example, this will end up having the two documents pointing to the same ContentSecurityPolicy object.  Is that the right thing?

I think this is ok.  The shared objects are refptr&apos;d, and I suspect that the original document is going away shortly. It strkikes me that there is probably a bug here that the CSP headers from the original XML document response don&apos;t apply to the transformed document because we lost the original  CSP object.  I&apos;ll need to add a test for that.

If you&apos;d feel better about copying the CSP ans securityorigin objects, then I think this method belongs in securitycontext, not document, so that it&apos;s &quot;close by&quot; when addl fields get added to securitycontext.

&gt;&gt; Source/WebCore/dom/Document.h:997
&gt;&gt; +    void updateSecurityContextFromDocument(const Document&amp;);
&gt; 
&gt; Should we keep the warning about how this function is dangerous?

Sure.

&gt;&gt; Source/WebCore/dom/SecurityContext.h:64
&gt;&gt; +    void setSecurityOrigin(PassRefPtr&lt;SecurityOrigin&gt;);
&gt; 
&gt; Can we make this private?

ok.

&gt;&gt; Source/WebCore/dom/SecurityContext.h:67
&gt;&gt; +    void setContentSecurityPolicy(PassRefPtr&lt;ContentSecurityPolicy&gt;);
&gt; 
&gt; Can we make this private?

ok.

&gt;&gt; Source/WebCore/dom/SecurityContext.h:80
&gt;&gt; +    void setCookieURL(const KURL&amp; url) { m_cookieURL = url; }
&gt; 
&gt; Can we make this protected?

ok

&gt;&gt; Source/WebCore/dom/SecurityContext.h:93
&gt;&gt; +    void setFirstPartyForCookies(const KURL&amp; url) { m_firstPartyForCookies = url; }
&gt; 
&gt; Can we make this private?

ok.

&gt;&gt; Source/WebCore/xml/XSLTProcessor.cpp:91
&gt;&gt; +            result-&gt;updateSecurityContextFromDocument(*oldDocument);
&gt; 
&gt; Maybe this function should take a Document* ?  Generally we pass around document as pointers.

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524886</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-20 15:35:12 -0800</bug_when>
    <thetext>testing++</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524888</commentid>
    <comment_count>10</comment_count>
      <attachid>120085</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-20 15:37:46 -0800</bug_when>
    <thetext>Comment on attachment 120085
Patch, test, whitespace cleanup.

One important thing about &quot;firstPartyForCookies&quot; related names in Document is that they are a result of misunderstanding. They are used for more than cookies. An example that I recently discovered is that the same data is used when setting quarantine metadata on downloaded files.

The original name was &quot;mainDocumentURL&quot;, which matches the behavior much better. Conceptually, it&apos;s what the user thinks the URL they are viewing is (and users cannot see subframe URLs and such). In fact, that was the original name in WebCore.

The refactoring here seems harmless. However, I would suggest to fix the names and comments before doing any refactoring - that would make the intentions much clearer.

I&apos;m marking this r- for procedural reasons, although the patch itself appears quite good. There has been much confusion over this before, so ideally, there should be three patches, one to fix the bug, one to rename firstPartyForCookies, and one to do the refactoring that Adam suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524913</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-20 15:56:26 -0800</bug_when>
    <thetext>&gt; One important thing about &quot;firstPartyForCookies&quot; related names in Document is that they are a result of misunderstanding. They are used for more than cookies. An example that I recently discovered is that the same data is used when setting quarantine metadata on downloaded files.

firstPartyForCookies should not be used for anything besides cookies.  It&apos;s a quirky value that&apos;s specific to the needs of cookies.

&gt; The original name was &quot;mainDocumentURL&quot;, which matches the behavior much better.

I&apos;m not sure that&apos;a accurate.  When I studied this code previously, state was called policyURL and policyBaseURL (which were the same thing).  mainDocumentURL is a name from NSURLRequest, which is a CFNetwork specific concept (and a layering violation).

&gt; The refactoring here seems harmless. However, I would suggest to fix the names and comments before doing any refactoring - that would make the intentions much clearer.

Let&apos;s consider changing the names in a separate patch.  I don&apos;t think we should change the names, but I don&apos;t want that discussion to block this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524921</commentid>
    <comment_count>12</comment_count>
      <attachid>120085</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-12-20 16:03:07 -0800</bug_when>
    <thetext>Comment on attachment 120085
Patch, test, whitespace cleanup.

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

&gt;&gt;&gt; Source/WebCore/dom/SecurityContext.h:64
&gt;&gt;&gt; +    void setSecurityOrigin(PassRefPtr&lt;SecurityOrigin&gt;);
&gt;&gt; 
&gt;&gt; Can we make this private?
&gt; 
&gt; ok.

Nope.  We can&apos;t even make it protected, since it&apos;s called by DocumentWriter.  This was public in when it used to live in document, now that this goes directly to the superclass its needs to be public, too.  I&apos;d hate to add a public method to document just to call the protected method on SecurityContext.

&gt;&gt;&gt; Source/WebCore/dom/SecurityContext.h:67
&gt;&gt;&gt; +    void setContentSecurityPolicy(PassRefPtr&lt;ContentSecurityPolicy&gt;);
&gt;&gt; 
&gt;&gt; Can we make this private?
&gt; 
&gt; ok.

Nope.  We can make it protected, since its called by Document.cpp in a few places, though.

&gt;&gt;&gt; Source/WebCore/dom/SecurityContext.h:80
&gt;&gt;&gt; +    void setCookieURL(const KURL&amp; url) { m_cookieURL = url; }
&gt;&gt; 
&gt;&gt; Can we make this protected?
&gt; 
&gt; ok

Nope.  There was a Document::setCookieURL that was public; now that this goes directly to the superclass its needs to be public, too.  I&apos;d hate to add a public method to document just to call the protected method on SecurityContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524924</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-20 16:06:55 -0800</bug_when>
    <thetext>Should the callers of these functions actually be calling a different function (such as one that deals with all the information on SecurityContext) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525099</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-20 22:05:13 -0800</bug_when>
    <thetext>Let&apos;s fix the bug as Thomas originally suggested, but I want refactoring to be blocked until we are on the same page WRT firstPartyForCookies. It makes no sense to refactor something that we don&apos;t agree what it means.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525100</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-20 22:06:40 -0800</bug_when>
    <thetext>&gt; When I studied this code previously, state was called policyURL and policyBaseURL (which were the same thing).

Yes, I could be wrong about the original name. As you agree, it was not about cookies though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525128</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-20 23:28:46 -0800</bug_when>
    <thetext>I agree that we should fix this bug, but I&apos;m not sure i subscribe to your point of view about what other changes should be blocked on what.  In any case, lets make progress here and we can discuss what comes next in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525134</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-20 23:46:23 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt; When I studied this code previously, state was called policyURL and policyBaseURL (which were the same thing).
&gt; 
&gt; Yes, I could be wrong about the original name. As you agree, it was not about cookies though.

This sounds like a topic for webkit-dev rather than a bug thread.  I&apos;m pretty against changing the name and using the state for things other than cookies, but I&apos;m happy to discuss the issue with you on webkit-dev.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525136</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-20 23:58:04 -0800</bug_when>
    <thetext>Sounds great to me, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525303</commentid>
    <comment_count>19</comment_count>
      <attachid>120085</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-12-21 10:00:00 -0800</bug_when>
    <thetext>Comment on attachment 120085
Patch, test, whitespace cleanup.

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

&gt;&gt;&gt; Source/WebCore/dom/SecurityContext.h:93
&gt;&gt;&gt; +    void setFirstPartyForCookies(const KURL&amp; url) { m_firstPartyForCookies = url; }
&gt;&gt; 
&gt;&gt; Can we make this private?
&gt; 
&gt; ok.

Nope.  Needs to be called from FrameLoader.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525309</commentid>
    <comment_count>20</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-12-21 10:12:00 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Should the callers of these functions actually be calling a different function (such as one that deals with all the information on SecurityContext) ?

I think this is the heart of the matter which is still unaddressed irrespective of what we do with naming down the road.  When you&apos;ve got an object like SecurityContext with a no-arg constructor and a bunch of individual setters/getters, it&apos;s a often red flag that the invariants about what makes a validd object aren&apos;t well understood.  The resulting usage where groups of these calls are used together to accomplish some larger operation also implies that the larger transformations on the object aren&apos;t understood either.  Studying the implementation may well reveal the what the design should have been.

But ... I didn&apos;t address these to get the refactoring in place without breaking stuff.   I think this ought to be folded in with the renaming in another CL.

My intent in that the next patch will keep the same overall structure as the current one, but include a test for XSLT and CSP which I expect to be broken because of the lack of a setCSP call in XSLTProcessor which would be fixed by copying over the whole context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525516</commentid>
    <comment_count>21</comment_count>
      <attachid>120085</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-12-21 13:26:27 -0800</bug_when>
    <thetext>Comment on attachment 120085
Patch, test, whitespace cleanup.

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

&gt;&gt;&gt; Source/WebCore/dom/Document.cpp:4577
&gt;&gt;&gt; +    *static_cast&lt;SecurityContext*&gt;(this) = that;
&gt;&gt; 
&gt;&gt; I wonder if this is exactly right.  For example, this will end up having the two documents pointing to the same ContentSecurityPolicy object.  Is that the right thing?
&gt; 
&gt; I think this is ok.  The shared objects are refptr&apos;d, and I suspect that the original document is going away shortly. It strkikes me that there is probably a bug here that the CSP headers from the original XML document response don&apos;t apply to the transformed document because we lost the original  CSP object.  I&apos;ll need to add a test for that.
&gt; 
&gt; If you&apos;d feel better about copying the CSP ans securityorigin objects, then I think this method belongs in securitycontext, not document, so that it&apos;s &quot;close by&quot; when addl fields get added to securitycontext.

Nope.  This is wrong.  The CSP stashes a ponter back to its script execution context, so using the same CSP is only ok so long as the parent doc outlives a subordinate doc, which is not the case here.  So CSP needs a deep-copy  function.  On the bright side, there&apos;s a FIXME in WorkerContext.cpp that has also wanting this functionality to allow a fix ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525524</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-21 13:31:58 -0800</bug_when>
    <thetext>We should probably keep around the original text of the CSP policy, so the deep copy can just be to take the string representation of the policy and re-parse it for the new object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525534</commentid>
    <comment_count>23</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-12-21 13:40:34 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; We should probably keep around the original text of the CSP policy, so the deep copy can just be to take the string representation of the policy and re-parse it for the new object.

Perhaps.  Seems clumsy when you need to account for multiple headers of different types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525546</commentid>
    <comment_count>24</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-21 13:54:37 -0800</bug_when>
    <thetext>Thomas, is your plan at this point to land the fix suggested in bug description, and do the rest separately? I think that this is by far the preferable course of action. Am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525569</commentid>
    <comment_count>25</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-12-21 14:11:34 -0800</bug_when>
    <thetext>Ok.  I&apos;ll minimize this, leaving the refactoring out ... and file another bug for the lack of CSP inheritence ... and leave the naming/refactoring to somebody else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525625</commentid>
    <comment_count>26</comment_count>
      <attachid>120220</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-12-21 14:36:30 -0800</bug_when>
    <thetext>Created attachment 120220
Patch, test, no refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525629</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-21 14:39:23 -0800</bug_when>
    <thetext>Attachment 120220 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Inform the scrolling coordinator when scrollbar layers come and go
Using index info to reconstruct a base tree...
&lt;stdin&gt;:474806: trailing whitespace.
        [Chromium] DatabaseTrackerChromium: iterating DatabaseSet races with Database disposal on worker thread 
&lt;stdin&gt;:474827: trailing whitespace.
        Nothing to test, just removing redundant code. Correct behavior tested by 
&lt;stdin&gt;:475346: trailing whitespace.
    
warning: 3 lines add whitespace errors.
Falling back to patching base and 3-way merge...
warning: too many files (created: 167249 deleted: 3), skipping inexact rename detection
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/chromium/test_expectations.txt
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Auto-merging Source/WebKit2/ChangeLog
CONFLICT (content): Merge conflict in Source/WebKit2/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Inform the scrolling coordinator when scrollbar layers come and go

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 158.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525645</commentid>
    <comment_count>28</comment_count>
      <attachid>120222</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-12-21 14:50:37 -0800</bug_when>
    <thetext>Created attachment 120222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525646</commentid>
    <comment_count>29</comment_count>
      <attachid>120222</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-21 14:51:32 -0800</bug_when>
    <thetext>Comment on attachment 120222
Patch

Looks good to me. Giving Adam a chance to comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525677</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-21 15:04:12 -0800</bug_when>
    <thetext>Attachment 120222 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
From git://git.webkit.org/WebKit
   eac27da..eda9e81  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 103461 = eac27daf25de1abb134b31a11fba2a7be9e63e0c
r103462 = eda9e816dab424eb6ebcc44ebe350e35b490e2eb
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Applying: Inform the scrolling coordinator when scrollbar layers come and go
Using index info to reconstruct a base tree...
&lt;stdin&gt;:474806: trailing whitespace.
        [Chromium] DatabaseTrackerChromium: iterating DatabaseSet races with Database disposal on worker thread 
&lt;stdin&gt;:474827: trailing whitespace.
        Nothing to test, just removing redundant code. Correct behavior tested by 
&lt;stdin&gt;:475346: trailing whitespace.
    
warning: 3 lines add whitespace errors.
Falling back to patching base and 3-way merge...
warning: too many files (created: 167249 deleted: 3), skipping inexact rename detection
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/chromium/test_expectations.txt
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Auto-merging Source/WebCore/page/ScrollingCoordinator.h
CONFLICT (content): Merge conflict in Source/WebCore/page/ScrollingCoordinator.h
Auto-merging Source/WebCore/page/mac/ScrollingCoordinatorMac.mm
CONFLICT (content): Merge conflict in Source/WebCore/page/mac/ScrollingCoordinatorMac.mm
Auto-merging Source/WebCore/platform/ScrollView.cpp
Auto-merging Source/WebCore/rendering/RenderLayerCompositor.cpp
CONFLICT (content): Merge conflict in Source/WebCore/rendering/RenderLayerCompositor.cpp
Auto-merging Source/WebKit2/ChangeLog
CONFLICT (content): Merge conflict in Source/WebKit2/ChangeLog
Auto-merging Tools/ChangeLog
CONFLICT (content): Merge conflict in Tools/ChangeLog
Auto-merging Tools/Scripts/build-webkit
Auto-merging Tools/Scripts/webkitdirs.pm
CONFLICT (content): Merge conflict in Tools/Scripts/webkitdirs.pm
Failed to merge in the changes.
Patch failed at 0001 Inform the scrolling coordinator when scrollbar layers come and go

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 158.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526120</commentid>
    <comment_count>31</comment_count>
      <attachid>120222</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-22 02:39:58 -0800</bug_when>
    <thetext>Comment on attachment 120222
Patch

Clearing flags on attachment: 120222

Committed r103511: &lt;http://trac.webkit.org/changeset/103511&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526121</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-22 02:40:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120080</attachid>
            <date>2011-12-20 14:10:39 -0800</date>
            <delta_ts>2011-12-20 14:19:07 -0800</delta_ts>
            <desc>Patch + tests</desc>
            <filename>patch_74757.txt</filename>
            <type>text/plain</type>
            <size>17349</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDExLTEyLTIwICBUb20gU2Vw
ZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFhTTFQtY3JlYXRlZCBIVE1MIGRv
Y3VtZW50cyBkbyBub3QgaW5oZXJpdCBmaXJzdCBwYXJ0eSBmb3IgY29va2llcyBmcm9tIG9yaWdp
bmFsbHkgbG9hZGVkIFhNTC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc0NzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KwlNb3ZlIERvY3VtZW50J3MgY29va2llVVJMIGFuZCBmaXJzdFBhcnR5Rm9yQ29va2llcyBpbnRv
IFNlY3VyaXR5Q29udGV4dCBhbmQgY29weSBvdmVyCisJdGhlIHdob2xlIFNlY3VyaXR5Q29udGV4
dCB3aGVuIGNyZWF0aW5nIGRvY3VtZW50IGluIFhTTFQgcHJvY2Vzc29yIGNvZGVwYXRoLgorCQor
ICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL2ZpcnN0LXBhcnR5LWNv
b2tpZS1hbGxvdy14c2x0LnhtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9j
b29raWVzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy14c2x0LnhtbAorCisgICAgICAgICog
ZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpvcGVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVTZWN1cml0eUNvbnRleHRGcm9tRG9jdW1lbnQpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9TZWN1cml0eUNvbnRleHQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5Q29udGV4dDo6c2FuZGJveEZsYWdzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5Q29udGV4dDo6c2VjdXJpdHlPcmlnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlDb250ZXh0Ojpjb250ZW50U2VjdXJpdHlQb2xpY3kpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VjdXJpdHlDb250ZXh0Ojpjb29raWVVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VjdXJpdHlDb250ZXh0OjpzZXRDb29raWVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
U2VjdXJpdHlDb250ZXh0OjpmaXJzdFBhcnR5Rm9yQ29va2llcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eUNvbnRleHQ6OnNldEZpcnN0UGFydHlGb3JDb29raWVzKToKKyAgICAgICAgKiB4
bWwvWFNMVFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpj
cmVhdGVEb2N1bWVudEZyb21Tb3VyY2UpOgorCiAyMDExLTEyLTIwICBUb255IENoYW5nICA8dG9u
eUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBlbmFibGUgV1BPIGZvciBXZWJD
b3JlIGxpYnMgaW4gb2ZmaWNpYWwgYnVpbGRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHJldmlzaW9uIDEwMzMzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIwMTQsNyArMjAxNCw3IEBAIHZvaWQgRG9jdW1lbnQ6Om9wZW4oRG9j
dW1lbnQqIG93bmVyRG9jdW0KIHsKICAgICBpZiAob3duZXJEb2N1bWVudCkgewogICAgICAgICBz
ZXRVUkwob3duZXJEb2N1bWVudC0+dXJsKCkpOwotICAgICAgICBtX2Nvb2tpZVVSTCA9IG93bmVy
RG9jdW1lbnQtPmNvb2tpZVVSTCgpOworICAgICAgICBzZXRDb29raWVVUkwob3duZXJEb2N1bWVu
dC0+Y29va2llVVJMKCkpOwogICAgICAgICBzZXRTZWN1cml0eU9yaWdpbihvd25lckRvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpKTsKICAgICB9CiAKQEAgLTQ1MDgsNyArNDUwOCw3IEBAIHZvaWQg
RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAgIGlmICghbV9mcmFtZSkgewogICAg
ICAgICAvLyBObyBzb3VyY2UgZm9yIGEgc2VjdXJpdHkgY29udGV4dC4KICAgICAgICAgLy8gVGhp
cyBjYW4gb2NjdXIgdmlhIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCku
Ci0gICAgICAgIG1fY29va2llVVJMID0gS1VSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5n
KCkpOworICAgICAgICBzZXRDb29raWVVUkwoS1VSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3Ry
aW5nKCkpKTsKICAgICAgICAgc2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZVVuaXF1ZSgpKTsKICAgICAgICAgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KENvbnRlbnRTZWN1
cml0eVBvbGljeTo6Y3JlYXRlKHRoaXMpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDUxNiw3ICs0
NTE2LDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAKICAgICAvLyBJ
biB0aGUgY29tbW9uIGNhc2UsIGNyZWF0ZSB0aGUgc2VjdXJpdHkgY29udGV4dCBmcm9tIHRoZSBj
dXJyZW50bHkKICAgICAvLyBsb2FkaW5nIFVSTCB3aXRoIGEgZnJlc2ggY29udGVudCBzZWN1cml0
eSBwb2xpY3kuCi0gICAgbV9jb29raWVVUkwgPSBtX3VybDsKKyAgICBzZXRDb29raWVVUkwobV91
cmwpOwogICAgIGVuZm9yY2VTYW5kYm94RmxhZ3MobV9mcmFtZS0+bG9hZGVyKCktPmVmZmVjdGl2
ZVNhbmRib3hGbGFncygpKTsKICAgICBzZXRTZWN1cml0eU9yaWdpbihpc1NhbmRib3hlZChTYW5k
Ym94T3JpZ2luKSA/IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSA6IFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUobV91cmwpKTsKICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koQ29udGVu
dFNlY3VyaXR5UG9saWN5OjpjcmVhdGUodGhpcykpOwpAQCAtNDU2NSwxNiArNDU2NSwxNiBAQCB2
b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1fY29va2llVVJMID0gb3duZXJGcmFtZS0+ZG9jdW1lbnQoKS0+Y29va2llVVJM
KCk7CisgICAgc2V0Q29va2llVVJMKG93bmVyRnJhbWUtPmRvY3VtZW50KCktPmNvb2tpZVVSTCgp
KTsKICAgICAvLyBXZSBhbGlhcyB0aGUgU2VjdXJpdHlPcmlnaW5zIHRvIG1hdGNoIEZpcmVmb3gs
IHNlZSBCdWcgMTUzMTMKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUzMTMKICAgICBzZXRTZWN1cml0eU9yaWdpbihvd25lckZyYW1lLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpKTsKICAgICBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3kob3duZXJG
cmFtZS0+ZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkpOwogfQogCi12b2lkIERv
Y3VtZW50OjpzZXRTZWN1cml0eU9yaWdpbihQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmln
aW4pCit2b2lkIERvY3VtZW50Ojp1cGRhdGVTZWN1cml0eUNvbnRleHRGcm9tRG9jdW1lbnQoY29u
c3QgRG9jdW1lbnQmIHRoYXQpCiB7Ci0gICAgU2VjdXJpdHlDb250ZXh0OjpzZXRTZWN1cml0eU9y
aWdpbihvcmlnaW4pOworICAgICpzdGF0aWNfY2FzdDxTZWN1cml0eUNvbnRleHQqPih0aGlzKSA9
IHRoYXQ7CiB9CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgJKHJldmlzaW9uIDEwMzMzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDYgQEAgY2xhc3MgUmVuZGVyRnVsbFNjcmVl
bjsKIGNsYXNzIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcjsKIGNsYXNzIFNjcmlwdEVsZW1lbnRE
YXRhOwogY2xhc3MgU2NyaXB0UnVubmVyOwotY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBTZWdtZW50ZWRTdHJpbmc7CiBjbGFzcyBTZXR0
aW5nczsKQEAgLTgzNCwzMiArODMzLDYgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGxhc3RNb2Rp
ZmllZCgpIGNvbnN0OwogCi0gICAgLy8gVGhlIGNvb2tpZVVSTCBpcyB1c2VkIHRvIHF1ZXJ5IHRo
ZSBjb29raWUgZGF0YWJhc2UgZm9yIHRoaXMgZG9jdW1lbnQncwotICAgIC8vIGNvb2tpZXMuIEZv
ciBleGFtcGxlLCBpZiB0aGUgY29va2llIFVSTCBpcyBodHRwOi8vZXhhbXBsZS5jb20sIHdlJ2xs
Ci0gICAgLy8gdXNlIHRoZSBub24tU2VjdXJlIGNvb2tpZXMgZm9yIGV4YW1wbGUuY29tIHdoZW4g
Y29tcHV0aW5nCi0gICAgLy8gZG9jdW1lbnQuY29va2llLgotICAgIC8vCi0gICAgLy8gUTogSG93
IGlzIHRoZSBjb29raWVVUkwgZGlmZmVyZW50IGZyb20gdGhlIGRvY3VtZW50J3MgVVJMPwotICAg
IC8vIEE6IFRoZSB0d28gVVJMcyBhcmUgdGhlIHNhbWUgYWxtb3N0IGFsbCB0aGUgdGltZS4gIEhv
d2V2ZXIsIGlmIG9uZQotICAgIC8vICAgIGRvY3VtZW50IGluaGVyaXRzIHRoZSBzZWN1cml0eSBj
b250ZXh0IG9mIGFub3RoZXIgZG9jdW1lbnQsIGl0Ci0gICAgLy8gICAgaW5oZXJpdHMgaXRzIGNv
b2tpZVVSTCBidXQgbm90IGl0cyBVUkwuCi0gICAgLy8KLSAgICBjb25zdCBLVVJMJiBjb29raWVV
UkwoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZVVSTDsgfQotICAgIHZvaWQgc2V0Q29va2llVVJM
KGNvbnN0IEtVUkwmIHVybCkgeyBtX2Nvb2tpZVVSTCA9IHVybDsgfQotCi0gICAgLy8gVGhlIGZp
cnN0UGFydHlGb3JDb29raWVzIGlzIHVzZWQgdG8gY29tcHV0ZSB3aGV0aGVyIHRoaXMgZG9jdW1l
bnQKLSAgICAvLyBhcHBlYXJzIGluIGEgInRoaXJkLXBhcnR5IiBjb250ZXh0IGZvciB0aGUgcHVy
cG9zZSBvZiB0aGlyZC1wYXJ0eQotICAgIC8vIGNvb2tpZSBibG9ja2luZy4gIFRoZSBkb2N1bWVu
dCBpcyBpbiBhIHRoaXJkLXBhcnR5IGNvbnRleHQgaWYgdGhlCi0gICAgLy8gY29va2llVVJMIGFu
ZCB0aGUgZmlyc3RQYXJ0eUZvckNvb2tpZXMgYXJlIGZyb20gZGlmZmVyZW50IGhvc3RzLgotICAg
IC8vCi0gICAgLy8gTm90ZTogU29tZSBwb3J0cyAoaW5jbHVkaW5nIHBvc3NpYmx5IEFwcGxlJ3Mp
IG9ubHkgY29uc2lkZXIgdGhlCi0gICAgLy8gICAgICAgZG9jdW1lbnQgaW4gYSB0aGlyZC1wYXJ0
eSBjb250ZXh0IGlmIHRoZSBjb29raWVVUkwgYW5kIHRoZQotICAgIC8vICAgICAgIGZpcnN0UGFy
dHlGb3JDb29raWVzIGhhdmUgYSBkaWZmZXJlbnQgcmVnaXN0cnktY29udHJvbGxlZAotICAgIC8v
ICAgICAgIGRvbWFpbi4KLSAgICAvLwotICAgIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29r
aWVzKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFBhcnR5Rm9yQ29va2llczsgfQotICAgIHZvaWQg
c2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgS1VSTCYgdXJsKSB7IG1fZmlyc3RQYXJ0eUZv
ckNvb2tpZXMgPSB1cmw7IH0KLSAgICAKICAgICAvLyBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMg
dGhlIHJ1bGUgZnJvbSBIVE1MIDQgZm9yIHdoYXQgdmFsaWQgbmFtZXMgYXJlLgogICAgIC8vIFRv
IGdldCB0aGlzIHJpZ2h0IGZvciBhbGwgdGhlIFhNTCBjYXNlcywgd2UgcHJvYmFibHkgaGF2ZSB0
byBpbXByb3ZlIHRoaXMgb3IgbW92ZSBpdAogICAgIC8vIGFuZCBtYWtlIGl0IHNlbnNpdGl2ZSB0
byB0aGUgdHlwZSBvZiBkb2N1bWVudC4KQEAgLTEwMjEsMTEgKzk5NCw3IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAgICAgdm9pZCBpbml0U2VjdXJpdHlDb250ZXh0KCk7Ci0KLSAgICAvLyBFeHBsaWNp
dGx5IG92ZXJyaWRlIHRoZSBzZWN1cml0eSBvcmlnaW4gZm9yIHRoaXMgZG9jdW1lbnQuCi0gICAg
Ly8gTm90ZTogSXQgaXMgZGFuZ2Vyb3VzIHRvIGNoYW5nZSB0aGUgc2VjdXJpdHkgb3JpZ2luIG9m
IGEgZG9jdW1lbnQKLSAgICAvLyAgICAgICB0aGF0IGFscmVhZHkgY29udGFpbnMgY29udGVudC4K
LSAgICB2b2lkIHNldFNlY3VyaXR5T3JpZ2luKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+KTsK
KyAgICB2b2lkIHVwZGF0ZVNlY3VyaXR5Q29udGV4dEZyb21Eb2N1bWVudChjb25zdCBEb2N1bWVu
dCYpOwogCiAgICAgdm9pZCB1cGRhdGVVUkxGb3JQdXNoT3JSZXBsYWNlU3RhdGUoY29uc3QgS1VS
TCYpOwogICAgIHZvaWQgc3RhdGVQb3BwZWQoU2VyaWFsaXplZFNjcmlwdFZhbHVlKik7CkBAIC0x
MjA4LDggKzExNzcsNiBAQCBwcml2YXRlOgogICAgIEtVUkwgbV9iYXNlVVJMOyAvLyBOb2RlLmJh
c2VVUkk6IFRoZSBVUkwgdG8gdXNlIHdoZW4gcmVzb2x2aW5nIHJlbGF0aXZlIFVSTHMuCiAgICAg
S1VSTCBtX2Jhc2VVUkxPdmVycmlkZTsgLy8gQW4gYWx0ZXJuYXRpdmUgYmFzZSBVUkwgdGhhdCB0
YWtlcyBwcmVjZWRlbmNlIG92ZSBtX2Jhc2VVUkwgKGJ1dCBub3QgbV9iYXNlRWxlbWVudFVSTCku
CiAgICAgS1VSTCBtX2Jhc2VFbGVtZW50VVJMOyAvLyBUaGUgVVJMIHNldCBieSB0aGUgPGJhc2U+
IGVsZW1lbnQuCi0gICAgS1VSTCBtX2Nvb2tpZVVSTDsgLy8gVGhlIFVSTCB0byB1c2UgZm9yIGNv
b2tpZSBhY2Nlc3MuCi0gICAgS1VSTCBtX2ZpcnN0UGFydHlGb3JDb29raWVzOyAvLyBUaGUgcG9s
aWN5IFVSTCBmb3IgdGhpcmQtcGFydHkgY29va2llIGJsb2NraW5nLgogCiAgICAgLy8gRG9jdW1l
bnQuZG9jdW1lbnRVUkk6CiAgICAgLy8gQWx0aG91Z2ggVVJMLWxpa2UsIERvY3VtZW50LmRvY3Vt
ZW50VVJJIGNhbiBhY3R1YWxseSBiZSBzZXQgdG8gYW55CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vU2VjdXJpdHlDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Nl
Y3VyaXR5Q29udGV4dC5oCShyZXZpc2lvbiAxMDMzMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
U2VjdXJpdHlDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5k
ZWYgU2VjdXJpdHlDb250ZXh0X2gKICNkZWZpbmUgU2VjdXJpdHlDb250ZXh0X2gKIAorI2luY2x1
ZGUgIktVUkwuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM1LDcgKzM2LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIENv
bnRlbnRTZWN1cml0eVBvbGljeTsKLWNsYXNzIEtVUkw7CiAKIGVudW0gU2FuZGJveEZsYWcgewog
ICAgIFNhbmRib3hOb25lID0gMCwKQEAgLTUzLDI3ICs1Myw1MyBAQCB0eXBlZGVmIGludCBTYW5k
Ym94RmxhZ3M7CiAKIGNsYXNzIFNlY3VyaXR5Q29udGV4dCB7CiBwdWJsaWM6Ci0gICAgU2VjdXJp
dHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdp
bi5nZXQoKTsgfQogICAgIFNhbmRib3hGbGFncyBzYW5kYm94RmxhZ3MoKSBjb25zdCB7IHJldHVy
biBtX3NhbmRib3hGbGFnczsgfQotICAgIENvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNl
Y3VyaXR5UG9saWN5KCkgeyByZXR1cm4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3kuZ2V0KCk7IH0K
LQotICAgIGJvb2wgaXNTZWN1cmVUcmFuc2l0aW9uVG8oY29uc3QgS1VSTCYpIGNvbnN0OwotCiAg
ICAgdm9pZCBlbmZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyBtYXNrKSB7IG1fc2FuZGJv
eEZsYWdzIHw9IG1hc2s7IH0KICAgICBib29sIGlzU2FuZGJveGVkKFNhbmRib3hGbGFncyBtYXNr
KSBjb25zdCB7IHJldHVybiBtX3NhbmRib3hGbGFncyAmIG1hc2s7IH0KIAorICAgIFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VjdXJpdHlPcmlnaW4u
Z2V0KCk7IH0KKworICAgIC8vIEV4cGxpY2l0bHkgb3ZlcnJpZGUgdGhlIHNlY3VyaXR5IG9yaWdp
biBmb3IgdGhpcyBzZWN1cml0eSBjb250ZXh0LgorICAgIC8vIE5vdGU6IEl0IGlzIGRhbmdlcm91
cyB0byBjaGFuZ2UgdGhlIHNlY3VyaXR5IG9yaWdpbiBvZiBhIGNvbnRleHQgdGhhdCBhbHJlYWR5
IGNvbnRhaW5zIGNvbnRlbnQuCisgICAgdm9pZCBzZXRTZWN1cml0eU9yaWdpbihQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPik7CisKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNvbnRlbnRT
ZWN1cml0eVBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFNlY3VyaXR5UG9saWN5Lmdl
dCgpOyB9CisgICAgdm9pZCBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koUGFzc1JlZlB0cjxDb250
ZW50U2VjdXJpdHlQb2xpY3k+KTsKKworICAgIC8vIFRoZSBjb29raWVVUkwgaXMgdXNlZCB0byBx
dWVyeSB0aGUgY29va2llIGRhdGFiYXNlIGZvciBjb29raWVzLgorICAgIC8vIEZvciBleGFtcGxl
LCBpZiB0aGUgY29va2llIFVSTCBpcyBodHRwOi8vZXhhbXBsZS5jb20sIHdlJ2xsCisgICAgLy8g
dXNlIHRoZSBub24tU2VjdXJlIGNvb2tpZXMgZm9yIGV4YW1wbGUuY29tIHdoZW4gY29tcHV0aW5n
CisgICAgLy8gZG9jdW1lbnQuY29va2llLgorICAgIC8vCisgICAgLy8gUTogSG93IGlzIHRoZSBj
b29raWVVUkwgZGlmZmVyZW50IGZyb20gYSBkb2N1bWVudCdzIFVSTD8KKyAgICAvLyBBOiBUaGUg
dHdvIFVSTHMgYXJlIHRoZSBzYW1lIGFsbW9zdCBhbGwgdGhlIHRpbWUuICBIb3dldmVyLCBpZiBv
bmUKKyAgICAvLyAgICBkb2N1bWVudCBpbmhlcml0cyB0aGUgc2VjdXJpdHkgY29udGV4dCBvZiBh
bm90aGVyIGRvY3VtZW50LCBpdAorICAgIC8vICAgIGluaGVyaXRzIGl0cyBjb29raWVVUkwgYnV0
IG5vdCBpdHMgVVJMLgorICAgIC8vCisgICAgY29uc3QgS1VSTCYgY29va2llVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9jb29raWVVUkw7IH0KKyAgICB2b2lkIHNldENvb2tpZVVSTChjb25zdCBLVVJM
JiB1cmwpIHsgbV9jb29raWVVUkwgPSB1cmw7IH0KKworICAgIC8vIFRoZSBmaXJzdFBhcnR5Rm9y
Q29va2llcyBpcyB1c2VkIHRvIGNvbXB1dGUgd2hldGhlciBhIGRvY3VtZW50CisgICAgLy8gYXBw
ZWFycyBpbiBhICJ0aGlyZC1wYXJ0eSIgY29udGV4dCBmb3IgdGhlIHB1cnBvc2Ugb2YgdGhpcmQt
cGFydHkKKyAgICAvLyBjb29raWUgYmxvY2tpbmcuICBUaGUgZG9jdW1lbnQgaXMgaW4gYSB0aGly
ZC1wYXJ0eSBjb250ZXh0IGlmIHRoZQorICAgIC8vIGNvb2tpZVVSTCBhbmQgdGhlIGZpcnN0UGFy
dHlGb3JDb29raWVzIGFyZSBmcm9tIGRpZmZlcmVudCBob3N0cy4KKyAgICAvLworICAgIC8vIE5v
dGU6IFNvbWUgcG9ydHMgKGluY2x1ZGluZyBwb3NzaWJseSBBcHBsZSdzKSBvbmx5IGNvbnNpZGVy
IHRoZQorICAgIC8vICAgICAgIGRvY3VtZW50IGluIGEgdGhpcmQtcGFydHkgY29udGV4dCBpZiB0
aGUgY29va2llVVJMIGFuZCB0aGUKKyAgICAvLyAgICAgICBmaXJzdFBhcnR5Rm9yQ29va2llcyBo
YXZlIGEgZGlmZmVyZW50IHJlZ2lzdHJ5LWNvbnRyb2xsZWQKKyAgICAvLyAgICAgICBkb21haW4u
CisgICAgLy8KKyAgICBjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcygpIGNvbnN0IHsg
cmV0dXJuIG1fZmlyc3RQYXJ0eUZvckNvb2tpZXM7IH0KKyAgICB2b2lkIHNldEZpcnN0UGFydHlG
b3JDb29raWVzKGNvbnN0IEtVUkwmIHVybCkgeyBtX2ZpcnN0UGFydHlGb3JDb29raWVzID0gdXJs
OyB9CisKKyAgICBib29sIGlzU2VjdXJlVHJhbnNpdGlvblRvKGNvbnN0IEtVUkwmKSBjb25zdDsK
KwogICAgIHN0YXRpYyBTYW5kYm94RmxhZ3MgcGFyc2VTYW5kYm94UG9saWN5KGNvbnN0IFN0cmlu
ZyYgcG9saWN5KTsKIAogcHJvdGVjdGVkOgogICAgIFNlY3VyaXR5Q29udGV4dCgpOwogICAgIH5T
ZWN1cml0eUNvbnRleHQoKTsKIAotICAgIC8vIEV4cGxpY2l0bHkgb3ZlcnJpZGUgdGhlIHNlY3Vy
aXR5IG9yaWdpbiBmb3IgdGhpcyBzZWN1cml0eSBjb250ZXh0LgotICAgIC8vIE5vdGU6IEl0IGlz
IGRhbmdlcm91cyB0byBjaGFuZ2UgdGhlIHNlY3VyaXR5IG9yaWdpbiBvZiBhIHNjcmlwdCBjb250
ZXh0Ci0gICAgLy8gICAgICAgdGhhdCBhbHJlYWR5IGNvbnRhaW5zIGNvbnRlbnQuCi0gICAgdm9p
ZCBzZXRTZWN1cml0eU9yaWdpbihQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPik7Ci0gICAgdm9p
ZCBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3koUGFzc1JlZlB0cjxDb250ZW50U2VjdXJpdHlQb2xp
Y3k+KTsKLQogICAgIHZvaWQgZGlkRmFpbFRvSW5pdGlhbGl6ZVNlY3VyaXR5T3JpZ2luKCkgeyBt
X2hhdmVJbml0aWFsaXplZFNlY3VyaXR5T3JpZ2luID0gZmFsc2U7IH0KICAgICBib29sIGhhdmVJ
bml0aWFsaXplZFNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9oYXZlSW5pdGlhbGl6
ZWRTZWN1cml0eU9yaWdpbjsgfQogCkBAIC04Miw2ICsxMDgsOCBAQCBwcml2YXRlOgogICAgIFNh
bmRib3hGbGFncyBtX3NhbmRib3hGbGFnczsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1f
c2VjdXJpdHlPcmlnaW47CiAgICAgUmVmUHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250
ZW50U2VjdXJpdHlQb2xpY3k7CisgICAgS1VSTCBtX2Nvb2tpZVVSTDsKKyAgICBLVVJMIG1fZmly
c3RQYXJ0eUZvckNvb2tpZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCShyZXZpc2lvbiAxMDMzMzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDgg
Kzg4LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudD4gWFNMVFByb2Nlc3Nvcjo6Y3JlYQogCiAgICAg
ICAgIGlmIChEb2N1bWVudCogb2xkRG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKSkgewogICAg
ICAgICAgICAgcmVzdWx0LT5zZXRUcmFuc2Zvcm1Tb3VyY2VEb2N1bWVudChvbGREb2N1bWVudCk7
Ci0gICAgICAgICAgICByZXN1bHQtPnNldFNlY3VyaXR5T3JpZ2luKG9sZERvY3VtZW50LT5zZWN1
cml0eU9yaWdpbigpKTsKLSAgICAgICAgICAgIHJlc3VsdC0+c2V0Q29va2llVVJMKG9sZERvY3Vt
ZW50LT5jb29raWVVUkwoKSk7CisgICAgICAgICAgICByZXN1bHQtPnVwZGF0ZVNlY3VyaXR5Q29u
dGV4dEZyb21Eb2N1bWVudCgqb2xkRG9jdW1lbnQpOwogICAgICAgICB9CiAKICAgICAgICAgZnJh
bWUtPnNldERvY3VtZW50KHJlc3VsdCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDMzNDgpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAx
MS0xMi0yMCAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KKworICAgICAgICBYU0xU
LWNyZWF0ZWQgSFRNTCBkb2N1bWVudHMgZG8gbm90IGluaGVyaXQgZmlyc3QgcGFydHkgZm9yIGNv
b2tpZXMgZnJvbSBvcmlnaW5hbGx5IGxvYWRlZCBYTUwuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDc1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisJVGVzdHMgc2hvdyB0aGF0IEhUTUwgZG9jcyBjcmVhdGVkIGZyb20g
WE1MIHZpYSBYU0xUIGZvbGxvdyBjb29raWUgcnVsZXMuCisJCisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS9jb29raWVzL2ZpcnN0LXBhcnR5LWNvb2tpZS1hbGxvdy14c2x0LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL2ZpcnN0
LXBhcnR5LWNvb2tpZS1hbGxvdy14c2x0LnhtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS9jb29raWVzL3Jlc291cmNlcy9maXJzdC1wYXJ0eS1jb29raWUtYWxsb3cueHNs
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMvcmVzb3VyY2Vz
L3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy54c2w6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvY29va2llcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcteHNsdC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29va2ll
cy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcteHNsdC54bWw6IEFkZGVkLgorCiAyMDExLTEy
LTIwICBLZW4gQnVjaGFuYW4gIDxrZW5yYkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2hlbiA8
YmRpPiBjb250ZW50IGlzIHdyYXBwZWQsIGFsbCBoZWxsIGJyZWFrcyBsb29zZQpJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL2ZpcnN0LXBhcnR5LWNvb2tpZS1h
bGxvdy14c2x0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2Nvb2tpZXMvZmlyc3QtcGFydHktY29va2llLWFsbG93LXhzbHQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9j
b29raWVzL2ZpcnN0LXBhcnR5LWNvb2tpZS1hbGxvdy14c2x0LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2IEBACisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0
aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorQ29va2llIGlzIHNldApJbmRleDogTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL2ZpcnN0LXBhcnR5LWNvb2tpZS1h
bGxvdy14c2x0LnhtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L2Nvb2tpZXMvZmlyc3QtcGFydHktY29va2llLWFsbG93LXhzbHQueG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL2ZpcnN0LXBhcnR5
LWNvb2tpZS1hbGxvdy14c2x0LnhtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACis8P3ht
bCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPD94bWwtc3R5bGVzaGVldCB0eXBl
PSJ0ZXh0L3hzbCIgaHJlZj0icmVzb3VyY2VzL2ZpcnN0LXBhcnR5LWNvb2tpZS1hbGxvdy54c2wi
Pz4KKzxib2R5Lz4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29va2ll
cy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcteHNsdC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL3RoaXJkLXBhcnR5
LWNvb2tpZS1ibG9ja2luZy14c2x0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy90aGlyZC1wYXJ0eS1jb29raWUtYmxv
Y2tpbmcteHNsdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorCisK
Ky0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0t
LS0tLS0KK0Nvb2tpZSBpcyBOT1Qgc2V0CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L2Nvb2tpZXMvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLXhzbHQueG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy90aGlyZC1w
YXJ0eS1jb29raWUtYmxvY2tpbmcteHNsdC54bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5n
LXhzbHQueG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEu
MCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8P3htbC1zdHlsZXNoZWV0IHR5cGU9InRleHQveHNsIiBo
cmVmPSJyZXNvdXJjZXMvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLnhzbCI/PgorPGJvZHkv
PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL3Jlc291cmNl
cy9maXJzdC1wYXJ0eS1jb29raWUtYWxsb3cueHNsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy9yZXNvdXJjZXMvZmlyc3QtcGFydHktY29va2ll
LWFsbG93LnhzbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvY29va2llcy9yZXNvdXJjZXMvZmlyc3QtcGFydHktY29va2llLWFsbG93LnhzbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNP
LTg4NTktMSI/PgorPHhzbDpzdHlsZXNoZWV0IHZlcnNpb249IjEuMCIgeG1sbnM6eHNsPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iPgorICA8eHNsOnRlbXBsYXRlIG1hdGNo
PSIvIj4KKyAgICA8aHRtbD4KKyAgICAgIDx0aXRsZT5DaGVja3MgdGhhdCBhbiBYU0xULWdlbmVy
YXRlZCBIVE1MIGRvYyBhbGxvd3MgZmlyc3QtcGFydHkgY29va2llczwvdGl0bGU+CisgICAgICA8
c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNU
ZXh0KCk7CisKKyAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc3RhdGUsIGFzIG90aGVyd2lzZSBh
biBleHBpcmVkIGNvb2tpZSBmb3IgdGhpcyBkb21haW4gY291bGQgYWZmZWN0IGJlaGF2aW9yIHdp
dGggQ0ZOZXR3b3JrLgorICAgIC8vIENhbiBiZSByZW1vdmVkIG9uY2UgcmRhcjovL3Byb2JsZW0v
MTAwODAxMzAgaXMgZml4ZWQuCisgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLnNldFByaXZh
dGVCcm93c2luZ0VuYWJsZWQpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFByaXZh
dGVCcm93c2luZ0VuYWJsZWQodHJ1ZSk7CisKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRB
bHdheXNBY2NlcHRDb29raWVzKGZhbHNlKTsKK30KKyAgICAgIDwvc2NyaXB0PgorICAgICAgPGJv
ZHk+CisgICAgICAgIDxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
Y29va2llcy9yZXNvdXJjZXMvc2V0LWEtY29va2llLnBocCI+PC9pZnJhbWU+CisgICAgICA8L2Jv
ZHk+CisgICAgPC9odG1sPgorICA8L3hzbDp0ZW1wbGF0ZT4KKzwveHNsOnN0eWxlc2hlZXQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMvcmVzb3VyY2VzL3Ro
aXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy54c2wKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL3Jlc291cmNlcy90aGlyZC1wYXJ0eS1jb29raWUt
YmxvY2tpbmcueHNsCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jb29raWVzL3Jlc291cmNlcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcueHNsCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJJU08tODg1OS0xIj8+Cis8eHNsOnN0eWxlc2hlZXQgdmVyc2lvbj0iMS4wIiB4bWxuczp4c2w9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSI+CisgIDx4c2w6dGVtcGxhdGUg
bWF0Y2g9Ii8iPgorICAgIDxodG1sPgorICAgICAgPHRpdGxlPkNoZWNrcyB0aGF0IGFuIFhTTFQt
Z2VuZXJhdGVkIEhUTUwgZG9jIGRvZXMgbm90IGNpcmN1bXZlbnQgdGhpcmQtcGFydHkgY29va2ll
IHJ1bGVzPC90aXRsZT4KKyAgICAgIDxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKworICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVh
biBzdGF0ZSwgYXMgb3RoZXJ3aXNlIGFuIGV4cGlyZWQgY29va2llIGZvciB0aGlzIGRvbWFpbiBj
b3VsZCBhZmZlY3QgYmVoYXZpb3Igd2l0aCBDRk5ldHdvcmsuCisgICAgLy8gQ2FuIGJlIHJlbW92
ZWQgb25jZSByZGFyOi8vcHJvYmxlbS8xMDA4MDEzMCBpcyBmaXhlZC4KKyAgICBpZiAobGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCh0cnVlKTsKKworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnNldEFsd2F5c0FjY2VwdENvb2tpZXMoZmFsc2UpOworfQorICAg
ICAgPC9zY3JpcHQ+CisgICAgICA8Ym9keT4KKyAgICAgICAgPGlmcmFtZSBzcmM9Imh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9jb29raWVzL3Jlc291cmNlcy9zZXQtYS1jb29raWUucGhw
Ij48L2lmcmFtZT4KKyAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+CisgIDwveHNsOnRlbXBsYXRl
PgorPC94c2w6c3R5bGVzaGVldD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120085</attachid>
            <date>2011-12-20 14:19:07 -0800</date>
            <delta_ts>2011-12-21 14:36:30 -0800</delta_ts>
            <desc>Patch, test, whitespace cleanup.</desc>
            <filename>patch_74757.txt</filename>
            <type>text/plain</type>
            <size>17382</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzM0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDExLTEyLTIwICBUb20gU2Vw
ZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFhTTFQtY3JlYXRlZCBIVE1MIGRv
Y3VtZW50cyBkbyBub3QgaW5oZXJpdCBmaXJzdCBwYXJ0eSBmb3IgY29va2llcyBmcm9tIG9yaWdp
bmFsbHkgbG9hZGVkIFhNTC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc0NzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTW92ZSBEb2N1bWVudCdzIGNvb2tpZVVSTCBhbmQgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMgaW50byBTZWN1cml0eUNvbnRleHQgYW5kIGNvcHkgb3ZlcgorICAgICAgICB0aGUgd2hvbGUg
U2VjdXJpdHlDb250ZXh0IHdoZW4gY3JlYXRpbmcgZG9jdW1lbnQgaW4gWFNMVCBwcm9jZXNzb3Ig
Y29kZXBhdGguCisgICAgICAgIAorICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9zZWN1cml0eS9j
b29raWVzL2ZpcnN0LXBhcnR5LWNvb2tpZS1hbGxvdy14c2x0LnhtbAorICAgICAgICAgICAgICAg
aHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy14
c2x0LnhtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJp
dHlDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVTZWN1cml0eUNv
bnRleHRGcm9tRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAq
IGRvbS9TZWN1cml0eUNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5Q29udGV4
dDo6c2FuZGJveEZsYWdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5Q29udGV4dDo6c2Vj
dXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlDb250ZXh0Ojpjb250ZW50
U2VjdXJpdHlQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlDb250ZXh0Ojpjb29r
aWVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlDb250ZXh0OjpzZXRDb29raWVVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlDb250ZXh0OjpmaXJzdFBhcnR5Rm9yQ29va2ll
cyk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eUNvbnRleHQ6OnNldEZpcnN0UGFydHlGb3JD
b29raWVzKToKKyAgICAgICAgKiB4bWwvWFNMVFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYU0xUUHJvY2Vzc29yOjpjcmVhdGVEb2N1bWVudEZyb21Tb3VyY2UpOgorCiAyMDExLTEy
LTIwICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVt
XSBlbmFibGUgV1BPIGZvciBXZWJDb3JlIGxpYnMgaW4gb2ZmaWNpYWwgYnVpbGRzCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDEwMzMzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMTQsNyArMjAxNCw3IEBAIHZv
aWQgRG9jdW1lbnQ6Om9wZW4oRG9jdW1lbnQqIG93bmVyRG9jdW0KIHsKICAgICBpZiAob3duZXJE
b2N1bWVudCkgewogICAgICAgICBzZXRVUkwob3duZXJEb2N1bWVudC0+dXJsKCkpOwotICAgICAg
ICBtX2Nvb2tpZVVSTCA9IG93bmVyRG9jdW1lbnQtPmNvb2tpZVVSTCgpOworICAgICAgICBzZXRD
b29raWVVUkwob3duZXJEb2N1bWVudC0+Y29va2llVVJMKCkpOwogICAgICAgICBzZXRTZWN1cml0
eU9yaWdpbihvd25lckRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpKTsKICAgICB9CiAKQEAgLTQ1
MDgsNyArNDUwOCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAg
IGlmICghbV9mcmFtZSkgewogICAgICAgICAvLyBObyBzb3VyY2UgZm9yIGEgc2VjdXJpdHkgY29u
dGV4dC4KICAgICAgICAgLy8gVGhpcyBjYW4gb2NjdXIgdmlhIGRvY3VtZW50LmltcGxlbWVudGF0
aW9uLmNyZWF0ZURvY3VtZW50KCkuCi0gICAgICAgIG1fY29va2llVVJMID0gS1VSTChQYXJzZWRV
UkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpOworICAgICAgICBzZXRDb29raWVVUkwoS1VSTChQYXJz
ZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpKTsKICAgICAgICAgc2V0U2VjdXJpdHlPcmlnaW4o
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKTsKICAgICAgICAgc2V0Q29udGVudFNlY3Vy
aXR5UG9saWN5KENvbnRlbnRTZWN1cml0eVBvbGljeTo6Y3JlYXRlKHRoaXMpKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtNDUxNiw3ICs0NTE2LDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5
Q29udGV4dCgpCiAKICAgICAvLyBJbiB0aGUgY29tbW9uIGNhc2UsIGNyZWF0ZSB0aGUgc2VjdXJp
dHkgY29udGV4dCBmcm9tIHRoZSBjdXJyZW50bHkKICAgICAvLyBsb2FkaW5nIFVSTCB3aXRoIGEg
ZnJlc2ggY29udGVudCBzZWN1cml0eSBwb2xpY3kuCi0gICAgbV9jb29raWVVUkwgPSBtX3VybDsK
KyAgICBzZXRDb29raWVVUkwobV91cmwpOwogICAgIGVuZm9yY2VTYW5kYm94RmxhZ3MobV9mcmFt
ZS0+bG9hZGVyKCktPmVmZmVjdGl2ZVNhbmRib3hGbGFncygpKTsKICAgICBzZXRTZWN1cml0eU9y
aWdpbihpc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSA/IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVV
bmlxdWUoKSA6IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpKTsKICAgICBzZXRDb250ZW50
U2VjdXJpdHlQb2xpY3koQ29udGVudFNlY3VyaXR5UG9saWN5OjpjcmVhdGUodGhpcykpOwpAQCAt
NDU2NSwxNiArNDU2NSwxNiBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29va2llVVJMID0gb3duZXJGcmFtZS0+
ZG9jdW1lbnQoKS0+Y29va2llVVJMKCk7CisgICAgc2V0Q29va2llVVJMKG93bmVyRnJhbWUtPmRv
Y3VtZW50KCktPmNvb2tpZVVSTCgpKTsKICAgICAvLyBXZSBhbGlhcyB0aGUgU2VjdXJpdHlPcmln
aW5zIHRvIG1hdGNoIEZpcmVmb3gsIHNlZSBCdWcgMTUzMTMKICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTMKICAgICBzZXRTZWN1cml0eU9yaWdpbihv
d25lckZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKICAgICBzZXRDb250ZW50
U2VjdXJpdHlQb2xpY3kob3duZXJGcmFtZS0+ZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9s
aWN5KCkpOwogfQogCi12b2lkIERvY3VtZW50OjpzZXRTZWN1cml0eU9yaWdpbihQYXNzUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4pCit2b2lkIERvY3VtZW50Ojp1cGRhdGVTZWN1cml0eUNv
bnRleHRGcm9tRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmIHRoYXQpCiB7Ci0gICAgU2VjdXJpdHlD
b250ZXh0OjpzZXRTZWN1cml0eU9yaWdpbihvcmlnaW4pOworICAgICpzdGF0aWNfY2FzdDxTZWN1
cml0eUNvbnRleHQqPih0aGlzKSA9IHRoYXQ7CiB9CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDEwMzMzOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIwLDYgQEAg
Y2xhc3MgUmVuZGVyRnVsbFNjcmVlbjsKIGNsYXNzIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcjsK
IGNsYXNzIFNjcmlwdEVsZW1lbnREYXRhOwogY2xhc3MgU2NyaXB0UnVubmVyOwotY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBTZWdtZW50
ZWRTdHJpbmc7CiBjbGFzcyBTZXR0aW5nczsKQEAgLTgzNCwzMiArODMzLDYgQEAgcHVibGljOgog
CiAgICAgU3RyaW5nIGxhc3RNb2RpZmllZCgpIGNvbnN0OwogCi0gICAgLy8gVGhlIGNvb2tpZVVS
TCBpcyB1c2VkIHRvIHF1ZXJ5IHRoZSBjb29raWUgZGF0YWJhc2UgZm9yIHRoaXMgZG9jdW1lbnQn
cwotICAgIC8vIGNvb2tpZXMuIEZvciBleGFtcGxlLCBpZiB0aGUgY29va2llIFVSTCBpcyBodHRw
Oi8vZXhhbXBsZS5jb20sIHdlJ2xsCi0gICAgLy8gdXNlIHRoZSBub24tU2VjdXJlIGNvb2tpZXMg
Zm9yIGV4YW1wbGUuY29tIHdoZW4gY29tcHV0aW5nCi0gICAgLy8gZG9jdW1lbnQuY29va2llLgot
ICAgIC8vCi0gICAgLy8gUTogSG93IGlzIHRoZSBjb29raWVVUkwgZGlmZmVyZW50IGZyb20gdGhl
IGRvY3VtZW50J3MgVVJMPwotICAgIC8vIEE6IFRoZSB0d28gVVJMcyBhcmUgdGhlIHNhbWUgYWxt
b3N0IGFsbCB0aGUgdGltZS4gIEhvd2V2ZXIsIGlmIG9uZQotICAgIC8vICAgIGRvY3VtZW50IGlu
aGVyaXRzIHRoZSBzZWN1cml0eSBjb250ZXh0IG9mIGFub3RoZXIgZG9jdW1lbnQsIGl0Ci0gICAg
Ly8gICAgaW5oZXJpdHMgaXRzIGNvb2tpZVVSTCBidXQgbm90IGl0cyBVUkwuCi0gICAgLy8KLSAg
ICBjb25zdCBLVVJMJiBjb29raWVVUkwoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZVVSTDsgfQot
ICAgIHZvaWQgc2V0Q29va2llVVJMKGNvbnN0IEtVUkwmIHVybCkgeyBtX2Nvb2tpZVVSTCA9IHVy
bDsgfQotCi0gICAgLy8gVGhlIGZpcnN0UGFydHlGb3JDb29raWVzIGlzIHVzZWQgdG8gY29tcHV0
ZSB3aGV0aGVyIHRoaXMgZG9jdW1lbnQKLSAgICAvLyBhcHBlYXJzIGluIGEgInRoaXJkLXBhcnR5
IiBjb250ZXh0IGZvciB0aGUgcHVycG9zZSBvZiB0aGlyZC1wYXJ0eQotICAgIC8vIGNvb2tpZSBi
bG9ja2luZy4gIFRoZSBkb2N1bWVudCBpcyBpbiBhIHRoaXJkLXBhcnR5IGNvbnRleHQgaWYgdGhl
Ci0gICAgLy8gY29va2llVVJMIGFuZCB0aGUgZmlyc3RQYXJ0eUZvckNvb2tpZXMgYXJlIGZyb20g
ZGlmZmVyZW50IGhvc3RzLgotICAgIC8vCi0gICAgLy8gTm90ZTogU29tZSBwb3J0cyAoaW5jbHVk
aW5nIHBvc3NpYmx5IEFwcGxlJ3MpIG9ubHkgY29uc2lkZXIgdGhlCi0gICAgLy8gICAgICAgZG9j
dW1lbnQgaW4gYSB0aGlyZC1wYXJ0eSBjb250ZXh0IGlmIHRoZSBjb29raWVVUkwgYW5kIHRoZQot
ICAgIC8vICAgICAgIGZpcnN0UGFydHlGb3JDb29raWVzIGhhdmUgYSBkaWZmZXJlbnQgcmVnaXN0
cnktY29udHJvbGxlZAotICAgIC8vICAgICAgIGRvbWFpbi4KLSAgICAvLwotICAgIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHlGb3JDb29raWVzKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFBhcnR5Rm9y
Q29va2llczsgfQotICAgIHZvaWQgc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoY29uc3QgS1VSTCYg
dXJsKSB7IG1fZmlyc3RQYXJ0eUZvckNvb2tpZXMgPSB1cmw7IH0KLSAgICAKICAgICAvLyBUaGUg
Zm9sbG93aW5nIGltcGxlbWVudHMgdGhlIHJ1bGUgZnJvbSBIVE1MIDQgZm9yIHdoYXQgdmFsaWQg
bmFtZXMgYXJlLgogICAgIC8vIFRvIGdldCB0aGlzIHJpZ2h0IGZvciBhbGwgdGhlIFhNTCBjYXNl
cywgd2UgcHJvYmFibHkgaGF2ZSB0byBpbXByb3ZlIHRoaXMgb3IgbW92ZSBpdAogICAgIC8vIGFu
ZCBtYWtlIGl0IHNlbnNpdGl2ZSB0byB0aGUgdHlwZSBvZiBkb2N1bWVudC4KQEAgLTEwMjEsMTEg
Kzk5NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBpbml0U2VjdXJpdHlDb250ZXh0
KCk7Ci0KLSAgICAvLyBFeHBsaWNpdGx5IG92ZXJyaWRlIHRoZSBzZWN1cml0eSBvcmlnaW4gZm9y
IHRoaXMgZG9jdW1lbnQuCi0gICAgLy8gTm90ZTogSXQgaXMgZGFuZ2Vyb3VzIHRvIGNoYW5nZSB0
aGUgc2VjdXJpdHkgb3JpZ2luIG9mIGEgZG9jdW1lbnQKLSAgICAvLyAgICAgICB0aGF0IGFscmVh
ZHkgY29udGFpbnMgY29udGVudC4KLSAgICB2b2lkIHNldFNlY3VyaXR5T3JpZ2luKFBhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+KTsKKyAgICB2b2lkIHVwZGF0ZVNlY3VyaXR5Q29udGV4dEZyb21E
b2N1bWVudChjb25zdCBEb2N1bWVudCYpOwogCiAgICAgdm9pZCB1cGRhdGVVUkxGb3JQdXNoT3JS
ZXBsYWNlU3RhdGUoY29uc3QgS1VSTCYpOwogICAgIHZvaWQgc3RhdGVQb3BwZWQoU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKik7CkBAIC0xMjA4LDggKzExNzcsNiBAQCBwcml2YXRlOgogICAgIEtVUkwg
bV9iYXNlVVJMOyAvLyBOb2RlLmJhc2VVUkk6IFRoZSBVUkwgdG8gdXNlIHdoZW4gcmVzb2x2aW5n
IHJlbGF0aXZlIFVSTHMuCiAgICAgS1VSTCBtX2Jhc2VVUkxPdmVycmlkZTsgLy8gQW4gYWx0ZXJu
YXRpdmUgYmFzZSBVUkwgdGhhdCB0YWtlcyBwcmVjZWRlbmNlIG92ZSBtX2Jhc2VVUkwgKGJ1dCBu
b3QgbV9iYXNlRWxlbWVudFVSTCkuCiAgICAgS1VSTCBtX2Jhc2VFbGVtZW50VVJMOyAvLyBUaGUg
VVJMIHNldCBieSB0aGUgPGJhc2U+IGVsZW1lbnQuCi0gICAgS1VSTCBtX2Nvb2tpZVVSTDsgLy8g
VGhlIFVSTCB0byB1c2UgZm9yIGNvb2tpZSBhY2Nlc3MuCi0gICAgS1VSTCBtX2ZpcnN0UGFydHlG
b3JDb29raWVzOyAvLyBUaGUgcG9saWN5IFVSTCBmb3IgdGhpcmQtcGFydHkgY29va2llIGJsb2Nr
aW5nLgogCiAgICAgLy8gRG9jdW1lbnQuZG9jdW1lbnRVUkk6CiAgICAgLy8gQWx0aG91Z2ggVVJM
LWxpa2UsIERvY3VtZW50LmRvY3VtZW50VVJJIGNhbiBhY3R1YWxseSBiZSBzZXQgdG8gYW55Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCShyZXZpc2lvbiAxMDMzMzkpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgU2VjdXJpdHlDb250ZXh0X2gKICNkZWZpbmUgU2VjdXJp
dHlDb250ZXh0X2gKIAorI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KQEAgLTM1LDcgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZWN1
cml0eU9yaWdpbjsKIGNsYXNzIENvbnRlbnRTZWN1cml0eVBvbGljeTsKLWNsYXNzIEtVUkw7CiAK
IGVudW0gU2FuZGJveEZsYWcgewogICAgIFNhbmRib3hOb25lID0gMCwKQEAgLTUzLDI3ICs1Myw1
MyBAQCB0eXBlZGVmIGludCBTYW5kYm94RmxhZ3M7CiAKIGNsYXNzIFNlY3VyaXR5Q29udGV4dCB7
CiBwdWJsaWM6Ci0gICAgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZWN1cml0eU9yaWdpbi5nZXQoKTsgfQogICAgIFNhbmRib3hGbGFncyBzYW5kYm94
RmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX3NhbmRib3hGbGFnczsgfQotICAgIENvbnRlbnRTZWN1
cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5KCkgeyByZXR1cm4gbV9jb250ZW50U2Vj
dXJpdHlQb2xpY3kuZ2V0KCk7IH0KLQotICAgIGJvb2wgaXNTZWN1cmVUcmFuc2l0aW9uVG8oY29u
c3QgS1VSTCYpIGNvbnN0OwotCiAgICAgdm9pZCBlbmZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hG
bGFncyBtYXNrKSB7IG1fc2FuZGJveEZsYWdzIHw9IG1hc2s7IH0KICAgICBib29sIGlzU2FuZGJv
eGVkKFNhbmRib3hGbGFncyBtYXNrKSBjb25zdCB7IHJldHVybiBtX3NhbmRib3hGbGFncyAmIG1h
c2s7IH0KIAorICAgIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1fc2VjdXJpdHlPcmlnaW4uZ2V0KCk7IH0KKworICAgIC8vIEV4cGxpY2l0bHkgb3ZlcnJp
ZGUgdGhlIHNlY3VyaXR5IG9yaWdpbiBmb3IgdGhpcyBzZWN1cml0eSBjb250ZXh0LgorICAgIC8v
IE5vdGU6IEl0IGlzIGRhbmdlcm91cyB0byBjaGFuZ2UgdGhlIHNlY3VyaXR5IG9yaWdpbiBvZiBh
IGNvbnRleHQgdGhhdCBhbHJlYWR5IGNvbnRhaW5zIGNvbnRlbnQuCisgICAgdm9pZCBzZXRTZWN1
cml0eU9yaWdpbihQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPik7CisKKyAgICBDb250ZW50U2Vj
dXJpdHlQb2xpY3kqIGNvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGVudFNlY3VyaXR5UG9saWN5LmdldCgpOyB9CisgICAgdm9pZCBzZXRDb250ZW50U2VjdXJpdHlQ
b2xpY3koUGFzc1JlZlB0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+KTsKKworICAgIC8vIFRoZSBj
b29raWVVUkwgaXMgdXNlZCB0byBxdWVyeSB0aGUgY29va2llIGRhdGFiYXNlIGZvciBjb29raWVz
LgorICAgIC8vIEZvciBleGFtcGxlLCBpZiB0aGUgY29va2llIFVSTCBpcyBodHRwOi8vZXhhbXBs
ZS5jb20sIHdlJ2xsCisgICAgLy8gdXNlIHRoZSBub24tU2VjdXJlIGNvb2tpZXMgZm9yIGV4YW1w
bGUuY29tIHdoZW4gY29tcHV0aW5nCisgICAgLy8gZG9jdW1lbnQuY29va2llLgorICAgIC8vCisg
ICAgLy8gUTogSG93IGlzIHRoZSBjb29raWVVUkwgZGlmZmVyZW50IGZyb20gYSBkb2N1bWVudCdz
IFVSTD8KKyAgICAvLyBBOiBUaGUgdHdvIFVSTHMgYXJlIHRoZSBzYW1lIGFsbW9zdCBhbGwgdGhl
IHRpbWUuIEhvd2V2ZXIsIGlmIG9uZQorICAgIC8vICAgIGRvY3VtZW50IGluaGVyaXRzIHRoZSBz
ZWN1cml0eSBjb250ZXh0IG9mIGFub3RoZXIgZG9jdW1lbnQsIGl0CisgICAgLy8gICAgaW5oZXJp
dHMgaXRzIGNvb2tpZVVSTCBidXQgbm90IGl0cyBVUkwuCisgICAgLy8KKyAgICBjb25zdCBLVVJM
JiBjb29raWVVUkwoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZVVSTDsgfQorICAgIHZvaWQgc2V0
Q29va2llVVJMKGNvbnN0IEtVUkwmIHVybCkgeyBtX2Nvb2tpZVVSTCA9IHVybDsgfQorCisgICAg
Ly8gVGhlIGZpcnN0UGFydHlGb3JDb29raWVzIGlzIHVzZWQgdG8gY29tcHV0ZSB3aGV0aGVyIGEg
ZG9jdW1lbnQKKyAgICAvLyBhcHBlYXJzIGluIGEgInRoaXJkLXBhcnR5IiBjb250ZXh0IGZvciB0
aGUgcHVycG9zZSBvZiB0aGlyZC1wYXJ0eQorICAgIC8vIGNvb2tpZSBibG9ja2luZy4gVGhlIGRv
Y3VtZW50IGlzIGluIGEgdGhpcmQtcGFydHkgY29udGV4dCBpZiB0aGUKKyAgICAvLyBjb29raWVV
UkwgYW5kIHRoZSBmaXJzdFBhcnR5Rm9yQ29va2llcyBhcmUgZnJvbSBkaWZmZXJlbnQgaG9zdHMu
CisgICAgLy8KKyAgICAvLyBOb3RlOiBTb21lIHBvcnRzIChpbmNsdWRpbmcgcG9zc2libHkgQXBw
bGUncykgb25seSBjb25zaWRlciB0aGUKKyAgICAvLyAgICAgICBkb2N1bWVudCBpbiBhIHRoaXJk
LXBhcnR5IGNvbnRleHQgaWYgdGhlIGNvb2tpZVVSTCBhbmQgdGhlCisgICAgLy8gICAgICAgZmly
c3RQYXJ0eUZvckNvb2tpZXMgaGF2ZSBhIGRpZmZlcmVudCByZWdpc3RyeS1jb250cm9sbGVkCisg
ICAgLy8gICAgICAgZG9tYWluLgorICAgIC8vCisgICAgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UGFydHlGb3JDb29raWVzOyB9CisgICAg
dm9pZCBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBLVVJMJiB1cmwpIHsgbV9maXJzdFBh
cnR5Rm9yQ29va2llcyA9IHVybDsgfQorCisgICAgYm9vbCBpc1NlY3VyZVRyYW5zaXRpb25Ubyhj
b25zdCBLVVJMJikgY29uc3Q7CisKICAgICBzdGF0aWMgU2FuZGJveEZsYWdzIHBhcnNlU2FuZGJv
eFBvbGljeShjb25zdCBTdHJpbmcmIHBvbGljeSk7CiAKIHByb3RlY3RlZDoKICAgICBTZWN1cml0
eUNvbnRleHQoKTsKICAgICB+U2VjdXJpdHlDb250ZXh0KCk7CiAKLSAgICAvLyBFeHBsaWNpdGx5
IG92ZXJyaWRlIHRoZSBzZWN1cml0eSBvcmlnaW4gZm9yIHRoaXMgc2VjdXJpdHkgY29udGV4dC4K
LSAgICAvLyBOb3RlOiBJdCBpcyBkYW5nZXJvdXMgdG8gY2hhbmdlIHRoZSBzZWN1cml0eSBvcmln
aW4gb2YgYSBzY3JpcHQgY29udGV4dAotICAgIC8vICAgICAgIHRoYXQgYWxyZWFkeSBjb250YWlu
cyBjb250ZW50LgotICAgIHZvaWQgc2V0U2VjdXJpdHlPcmlnaW4oUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4pOwotICAgIHZvaWQgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KFBhc3NSZWZQdHI8
Q29udGVudFNlY3VyaXR5UG9saWN5Pik7Ci0KICAgICB2b2lkIGRpZEZhaWxUb0luaXRpYWxpemVT
ZWN1cml0eU9yaWdpbigpIHsgbV9oYXZlSW5pdGlhbGl6ZWRTZWN1cml0eU9yaWdpbiA9IGZhbHNl
OyB9CiAgICAgYm9vbCBoYXZlSW5pdGlhbGl6ZWRTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0
dXJuIG1faGF2ZUluaXRpYWxpemVkU2VjdXJpdHlPcmlnaW47IH0KIApAQCAtODIsNiArMTA4LDgg
QEAgcHJpdmF0ZToKICAgICBTYW5kYm94RmxhZ3MgbV9zYW5kYm94RmxhZ3M7CiAgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOwogICAgIFJlZlB0cjxDb250ZW50U2Vj
dXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OworICAgIEtVUkwgbV9jb29raWVV
Ukw7CisgICAgS1VSTCBtX2ZpcnN0UGFydHlGb3JDb29raWVzOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAkocmV2aXNp
b24gMTAzMzM5KQorKysgU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OCw4ICs4OCw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IFhTTFRQcm9j
ZXNzb3I6OmNyZWEKIAogICAgICAgICBpZiAoRG9jdW1lbnQqIG9sZERvY3VtZW50ID0gZnJhbWUt
PmRvY3VtZW50KCkpIHsKICAgICAgICAgICAgIHJlc3VsdC0+c2V0VHJhbnNmb3JtU291cmNlRG9j
dW1lbnQob2xkRG9jdW1lbnQpOwotICAgICAgICAgICAgcmVzdWx0LT5zZXRTZWN1cml0eU9yaWdp
bihvbGREb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSk7Ci0gICAgICAgICAgICByZXN1bHQtPnNl
dENvb2tpZVVSTChvbGREb2N1bWVudC0+Y29va2llVVJMKCkpOworICAgICAgICAgICAgcmVzdWx0
LT51cGRhdGVTZWN1cml0eUNvbnRleHRGcm9tRG9jdW1lbnQoKm9sZERvY3VtZW50KTsKICAgICAg
ICAgfQogCiAgICAgICAgIGZyYW1lLT5zZXREb2N1bWVudChyZXN1bHQpOwpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMTAzMzQ4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTEtMTItMjAgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgWFNMVC1jcmVhdGVkIEhUTUwgZG9jdW1lbnRzIGRvIG5vdCBpbmhlcml0
IGZpcnN0IHBhcnR5IGZvciBjb29raWVzIGZyb20gb3JpZ2luYWxseSBsb2FkZWQgWE1MLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3NTcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0cyBzaG93IHRo
YXQgSFRNTCBkb2NzIGNyZWF0ZWQgZnJvbSBYTUwgdmlhIFhTTFQgZm9sbG93IGNvb2tpZSBydWxl
cy4KKyAgICAgICAgCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL2ZpcnN0
LXBhcnR5LWNvb2tpZS1hbGxvdy14c2x0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL2ZpcnN0LXBhcnR5LWNvb2tpZS1hbGxvdy14c2x0
LnhtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL3Jlc291
cmNlcy9maXJzdC1wYXJ0eS1jb29raWUtYWxsb3cueHNsOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMvcmVzb3VyY2VzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9j
a2luZy54c2w6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy90
aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcteHNsdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy90aGlyZC1wYXJ0eS1jb29raWUtYmxv
Y2tpbmcteHNsdC54bWw6IEFkZGVkLgorCiAyMDExLTEyLTIwICBLZW4gQnVjaGFuYW4gIDxrZW5y
YkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2hlbiA8YmRpPiBjb250ZW50IGlzIHdyYXBwZWQs
IGFsbCBoZWxsIGJyZWFrcyBsb29zZQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jb29raWVzL2ZpcnN0LXBhcnR5LWNvb2tpZS1hbGxvdy14c2x0LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMvZmly
c3QtcGFydHktY29va2llLWFsbG93LXhzbHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL2ZpcnN0LXBhcnR5LWNvb2tp
ZS1hbGxvdy14c2x0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACisK
KworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCist
LS0tLS0tLQorQ29va2llIGlzIHNldApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jb29raWVzL2ZpcnN0LXBhcnR5LWNvb2tpZS1hbGxvdy14c2x0LnhtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMvZmlyc3QtcGFydHkt
Y29va2llLWFsbG93LXhzbHQueG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9jb29raWVzL2ZpcnN0LXBhcnR5LWNvb2tpZS1hbGxvdy14c2x0LnhtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5n
PSJ1dGYtOCI/PgorPD94bWwtc3R5bGVzaGVldCB0eXBlPSJ0ZXh0L3hzbCIgaHJlZj0icmVzb3Vy
Y2VzL2ZpcnN0LXBhcnR5LWNvb2tpZS1hbGxvdy54c2wiPz4KKzxib2R5Lz4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy90aGlyZC1wYXJ0eS1jb29raWUtYmxv
Y2tpbmcteHNsdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9jb29raWVzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy14c2x0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvY29va2llcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcteHNsdC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1m
cmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK0Nvb2tpZSBpcyBOT1Qgc2V0
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMvdGhpcmQtcGFy
dHktY29va2llLWJsb2NraW5nLXhzbHQueG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcteHNs
dC54bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
b2tpZXMvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLXhzbHQueG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8
P3htbC1zdHlsZXNoZWV0IHR5cGU9InRleHQveHNsIiBocmVmPSJyZXNvdXJjZXMvdGhpcmQtcGFy
dHktY29va2llLWJsb2NraW5nLnhzbCI/PgorPGJvZHkvPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL3Jlc291cmNlcy9maXJzdC1wYXJ0eS1jb29raWUtYWxs
b3cueHNsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29v
a2llcy9yZXNvdXJjZXMvZmlyc3QtcGFydHktY29va2llLWFsbG93LnhzbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy9yZXNvdXJjZXMvZmly
c3QtcGFydHktY29va2llLWFsbG93LnhzbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNSBAQAor
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/PgorPHhzbDpzdHlsZXNo
ZWV0IHZlcnNpb249IjEuMCIgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9U
cmFuc2Zvcm0iPgorICA8eHNsOnRlbXBsYXRlIG1hdGNoPSIvIj4KKyAgICA8aHRtbD4KKyAgICAg
IDx0aXRsZT5DaGVja3MgdGhhdCBhbiBYU0xULWdlbmVyYXRlZCBIVE1MIGRvYyBhbGxvd3MgZmly
c3QtcGFydHkgY29va2llczwvdGl0bGU+CisgICAgICA8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisKKyAgICAvLyBTdGFydCB3
aXRoIGEgY2xlYW4gc3RhdGUsIGFzIG90aGVyd2lzZSBhbiBleHBpcmVkIGNvb2tpZSBmb3IgdGhp
cyBkb21haW4gY291bGQgYWZmZWN0IGJlaGF2aW9yIHdpdGggQ0ZOZXR3b3JrLgorICAgIC8vIENh
biBiZSByZW1vdmVkIG9uY2UgcmRhcjovL3Byb2JsZW0vMTAwODAxMzAgaXMgZml4ZWQuCisgICAg
aWYgKGxheW91dFRlc3RDb250cm9sbGVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpCisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQodHJ1ZSk7
CisKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBbHdheXNBY2NlcHRDb29raWVzKGZhbHNl
KTsKK30KKyAgICAgIDwvc2NyaXB0PgorICAgICAgPGJvZHk+CisgICAgICAgIDxpZnJhbWUgc3Jj
PSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29va2llcy9yZXNvdXJjZXMvc2V0LWEt
Y29va2llLnBocCI+PC9pZnJhbWU+CisgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorICA8L3hz
bDp0ZW1wbGF0ZT4KKzwveHNsOnN0eWxlc2hlZXQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L2Nvb2tpZXMvcmVzb3VyY2VzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2lu
Zy54c2wKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb29r
aWVzL3Jlc291cmNlcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcueHNsCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL3Jlc291cmNlcy90
aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcueHNsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJJU08tODg1OS0xIj8+Cis8eHNsOnN0
eWxlc2hlZXQgdmVyc2lvbj0iMS4wIiB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
WFNML1RyYW5zZm9ybSI+CisgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii8iPgorICAgIDxodG1sPgor
ICAgICAgPHRpdGxlPkNoZWNrcyB0aGF0IGFuIFhTTFQtZ2VuZXJhdGVkIEhUTUwgZG9jIGRvZXMg
bm90IGNpcmN1bXZlbnQgdGhpcmQtcGFydHkgY29va2llIHJ1bGVzPC90aXRsZT4KKyAgICAgIDxz
Y3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNBc1Rl
eHQoKTsKKworICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVhbiBzdGF0ZSwgYXMgb3RoZXJ3aXNlIGFu
IGV4cGlyZWQgY29va2llIGZvciB0aGlzIGRvbWFpbiBjb3VsZCBhZmZlY3QgYmVoYXZpb3Igd2l0
aCBDRk5ldHdvcmsuCisgICAgLy8gQ2FuIGJlIHJlbW92ZWQgb25jZSByZGFyOi8vcHJvYmxlbS8x
MDA4MDEzMCBpcyBmaXhlZC4KKyAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCkKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCh0cnVlKTsKKworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEFs
d2F5c0FjY2VwdENvb2tpZXMoZmFsc2UpOworfQorICAgICAgPC9zY3JpcHQ+CisgICAgICA8Ym9k
eT4KKyAgICAgICAgPGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9j
b29raWVzL3Jlc291cmNlcy9zZXQtYS1jb29raWUucGhwIj48L2lmcmFtZT4KKyAgICAgIDwvYm9k
eT4KKyAgICA8L2h0bWw+CisgIDwveHNsOnRlbXBsYXRlPgorPC94c2w6c3R5bGVzaGVldD4K
</data>
<flag name="review"
          id="120252"
          type_id="1"
          status="-"
          setter="ap"
    />
    <flag name="commit-queue"
          id="120253"
          type_id="3"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120220</attachid>
            <date>2011-12-21 14:36:30 -0800</date>
            <delta_ts>2011-12-21 14:50:37 -0800</delta_ts>
            <desc>Patch, test, no refactoring</desc>
            <filename>patch_74757.txt</filename>
            <type>text/plain</type>
            <size>7182</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzQ1MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTEyLTIxICBUb20gU2Vw
ZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFhTTFQtY3JlYXRlZCBIVE1MIGRv
Y3VtZW50cyBkbyBub3QgaW5oZXJpdCBmaXJzdCBwYXJ0eSBmb3IgY29va2llcyBmcm9tIG9yaWdp
bmFsbHkgbG9hZGVkIFhNTC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc0NzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy9maXJzdC1wYXJ0eS1j
b29raWUtYWxsb3cteHNsdC54bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29va2llcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcteHNsdC54bWwKKworICAgICAgICAq
IHhtbC9YU0xUUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNzb3I6
OmNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZSk6CisKIDIwMTEtMTItMjAgIEFkYW0gS2xlaW4gIDxh
ZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTWFrZSBjYWxscyB0byB3aWxsTW9kaWZ5QXR0
cmlidXRlIGFuZCBhdHRyaWJ1dGVDaGFuZ2VkIHN5bW1ldHJpY2FsCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
eG1sL1hTTFRQcm9jZXNzb3IuY3BwCShyZXZpc2lvbiAxMDMzMzkpCisrKyBTb3VyY2UvV2ViQ29y
ZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAg
UGFzc1JlZlB0cjxEb2N1bWVudD4gWFNMVFByb2Nlc3Nvcjo6Y3JlYQogICAgICAgICAgICAgcmVz
dWx0LT5zZXRUcmFuc2Zvcm1Tb3VyY2VEb2N1bWVudChvbGREb2N1bWVudCk7CiAgICAgICAgICAg
ICByZXN1bHQtPnNldFNlY3VyaXR5T3JpZ2luKG9sZERvY3VtZW50LT5zZWN1cml0eU9yaWdpbigp
KTsKICAgICAgICAgICAgIHJlc3VsdC0+c2V0Q29va2llVVJMKG9sZERvY3VtZW50LT5jb29raWVV
UkwoKSk7CisgICAgICAgICAgICByZXN1bHQtPnNldEZpcnN0UGFydHlGb3JDb29raWVzKG9sZERv
Y3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKICAgICAgICAgfQogCiAgICAgICAgIGZy
YW1lLT5zZXREb2N1bWVudChyZXN1bHQpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzNDUyKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTEtMTItMjEgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWFNM
VC1jcmVhdGVkIEhUTUwgZG9jdW1lbnRzIGRvIG5vdCBpbmhlcml0IGZpcnN0IHBhcnR5IGZvciBj
b29raWVzIGZyb20gb3JpZ2luYWxseSBsb2FkZWQgWE1MLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3NTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy9m
aXJzdC1wYXJ0eS1jb29raWUtYWxsb3cteHNsdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy9maXJzdC1wYXJ0eS1jb29raWUtYWxsb3ct
eHNsdC54bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy9y
ZXNvdXJjZXMvZmlyc3QtcGFydHktY29va2llLWFsbG93LnhzbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL3Jlc291cmNlcy90aGlyZC1wYXJ0eS1jb29raWUt
YmxvY2tpbmcueHNsOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nvb2tp
ZXMvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLXhzbHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMvdGhpcmQtcGFydHktY29va2ll
LWJsb2NraW5nLXhzbHQueG1sOiBBZGRlZC4KKwogMjAxMS0xMi0yMSAgQWRyaWVubmUgV2Fsa2Vy
ICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWFyayBtb3JlIE1hYyBj
b21wb3NpdGluZyB0ZXN0cyBhcyBmbGFreQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb29raWVzL2ZpcnN0LXBhcnR5LWNvb2tpZS1hbGxvdy14c2x0LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMv
Zmlyc3QtcGFydHktY29va2llLWFsbG93LXhzbHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL2ZpcnN0LXBhcnR5LWNv
b2tpZS1hbGxvdy14c2x0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBA
CisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4n
CistLS0tLS0tLQorQ29va2llIGlzIHNldApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9jb29raWVzL2ZpcnN0LXBhcnR5LWNvb2tpZS1hbGxvdy14c2x0LnhtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMvZmlyc3QtcGFy
dHktY29va2llLWFsbG93LXhzbHQueG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL2ZpcnN0LXBhcnR5LWNvb2tpZS1hbGxvdy14c2x0Lnht
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29k
aW5nPSJ1dGYtOCI/PgorPD94bWwtc3R5bGVzaGVldCB0eXBlPSJ0ZXh0L3hzbCIgaHJlZj0icmVz
b3VyY2VzL2ZpcnN0LXBhcnR5LWNvb2tpZS1hbGxvdy54c2wiPz4KKzxib2R5Lz4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy90aGlyZC1wYXJ0eS1jb29raWUt
YmxvY2tpbmcteHNsdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy14c2x0
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvY29va2llcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcteHNsdC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorCisKKy0tLS0tLS0tCitGcmFtZTogJzwh
LS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK0Nvb2tpZSBpcyBOT1Qg
c2V0CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMvdGhpcmQt
cGFydHktY29va2llLWJsb2NraW5nLXhzbHQueG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmct
eHNsdC54bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2Nvb2tpZXMvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLXhzbHQueG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+
Cis8P3htbC1zdHlsZXNoZWV0IHR5cGU9InRleHQveHNsIiBocmVmPSJyZXNvdXJjZXMvdGhpcmQt
cGFydHktY29va2llLWJsb2NraW5nLnhzbCI/PgorPGJvZHkvPgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL3Jlc291cmNlcy9maXJzdC1wYXJ0eS1jb29raWUt
YWxsb3cueHNsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
Y29va2llcy9yZXNvdXJjZXMvZmlyc3QtcGFydHktY29va2llLWFsbG93LnhzbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy9yZXNvdXJjZXMv
Zmlyc3QtcGFydHktY29va2llLWFsbG93LnhzbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNSBA
QAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/PgorPHhzbDpzdHls
ZXNoZWV0IHZlcnNpb249IjEuMCIgeG1sbnM6eHNsPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L1hT
TC9UcmFuc2Zvcm0iPgorICA8eHNsOnRlbXBsYXRlIG1hdGNoPSIvIj4KKyAgICA8aHRtbD4KKyAg
ICAgIDx0aXRsZT5DaGVja3MgdGhhdCBhbiBYU0xULWdlbmVyYXRlZCBIVE1MIGRvYyBhbGxvd3Mg
Zmlyc3QtcGFydHkgY29va2llczwvdGl0bGU+CisgICAgICA8c2NyaXB0PgoraWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisKKyAgICAvLyBTdGFy
dCB3aXRoIGEgY2xlYW4gc3RhdGUsIGFzIG90aGVyd2lzZSBhbiBleHBpcmVkIGNvb2tpZSBmb3Ig
dGhpcyBkb21haW4gY291bGQgYWZmZWN0IGJlaGF2aW9yIHdpdGggQ0ZOZXR3b3JrLgorICAgIC8v
IENhbiBiZSByZW1vdmVkIG9uY2UgcmRhcjovL3Byb2JsZW0vMTAwODAxMzAgaXMgZml4ZWQuCisg
ICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQodHJ1
ZSk7CisKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBbHdheXNBY2NlcHRDb29raWVzKGZh
bHNlKTsKK30KKyAgICAgIDwvc2NyaXB0PgorICAgICAgPGJvZHk+CisgICAgICAgIDxpZnJhbWUg
c3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvY29va2llcy9yZXNvdXJjZXMvc2V0
LWEtY29va2llLnBocCI+PC9pZnJhbWU+CisgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorICA8
L3hzbDp0ZW1wbGF0ZT4KKzwveHNsOnN0eWxlc2hlZXQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMvcmVzb3VyY2VzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9j
a2luZy54c2wKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9j
b29raWVzL3Jlc291cmNlcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcueHNsCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL3Jlc291cmNl
cy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcueHNsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDI1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJJU08tODg1OS0xIj8+Cis8eHNs
OnN0eWxlc2hlZXQgdmVyc2lvbj0iMS4wIiB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5
OTkvWFNML1RyYW5zZm9ybSI+CisgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii8iPgorICAgIDxodG1s
PgorICAgICAgPHRpdGxlPkNoZWNrcyB0aGF0IGFuIFhTTFQtZ2VuZXJhdGVkIEhUTUwgZG9jIGRv
ZXMgbm90IGNpcmN1bXZlbnQgdGhpcmQtcGFydHkgY29va2llIHJ1bGVzPC90aXRsZT4KKyAgICAg
IDxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQ2hpbGRGcmFtZXNB
c1RleHQoKTsKKworICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVhbiBzdGF0ZSwgYXMgb3RoZXJ3aXNl
IGFuIGV4cGlyZWQgY29va2llIGZvciB0aGlzIGRvbWFpbiBjb3VsZCBhZmZlY3QgYmVoYXZpb3Ig
d2l0aCBDRk5ldHdvcmsuCisgICAgLy8gQ2FuIGJlIHJlbW92ZWQgb25jZSByZGFyOi8vcHJvYmxl
bS8xMDA4MDEzMCBpcyBmaXhlZC4KKyAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCkKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0UHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCh0cnVlKTsKKworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNl
dEFsd2F5c0FjY2VwdENvb2tpZXMoZmFsc2UpOworfQorICAgICAgPC9zY3JpcHQ+CisgICAgICA8
Ym9keT4KKyAgICAgICAgPGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0
eS9jb29raWVzL3Jlc291cmNlcy9zZXQtYS1jb29raWUucGhwIj48L2lmcmFtZT4KKyAgICAgIDwv
Ym9keT4KKyAgICA8L2h0bWw+CisgIDwveHNsOnRlbXBsYXRlPgorPC94c2w6c3R5bGVzaGVldD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120222</attachid>
            <date>2011-12-21 14:50:37 -0800</date>
            <delta_ts>2011-12-22 02:39:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch_74757.txt</filename>
            <type>text/plain</type>
            <size>7201</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzQ1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTEyLTIxICBUb20gU2Vw
ZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFhTTFQtY3JlYXRlZCBIVE1MIGRv
Y3VtZW50cyBkbyBub3QgaW5oZXJpdCBmaXJzdCBwYXJ0eSBmb3IgY29va2llcyBmcm9tIG9yaWdp
bmFsbHkgbG9hZGVkIFhNTC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc0NzU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy9maXJzdC1wYXJ0eS1j
b29raWUtYWxsb3cteHNsdC54bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29va2llcy90aGlyZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcteHNsdC54bWwKKworICAgICAgICAq
IHhtbC9YU0xUUHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNzb3I6
OmNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZSk6CisKIDIwMTEtMTItMjEgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBBbHdheXMgcmVwb3NpdGlvbiB0aGUg
c2Nyb2xsYmFyIGxheWVycyB3aGVuIHRoZSBmcmFtZSB2aWV3IHNpemUgY2hhbmdlcwpJbmRleDog
U291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAkocmV2aXNpb24gMTAzNDU0KQorKysgU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2
ICs5MCw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IFhTTFRQcm9jZXNzb3I6OmNyZWEKICAgICAg
ICAgICAgIHJlc3VsdC0+c2V0VHJhbnNmb3JtU291cmNlRG9jdW1lbnQob2xkRG9jdW1lbnQpOwog
ICAgICAgICAgICAgcmVzdWx0LT5zZXRTZWN1cml0eU9yaWdpbihvbGREb2N1bWVudC0+c2VjdXJp
dHlPcmlnaW4oKSk7CiAgICAgICAgICAgICByZXN1bHQtPnNldENvb2tpZVVSTChvbGREb2N1bWVu
dC0+Y29va2llVVJMKCkpOworICAgICAgICAgICAgcmVzdWx0LT5zZXRGaXJzdFBhcnR5Rm9yQ29v
a2llcyhvbGREb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBmcmFtZS0+c2V0RG9jdW1lbnQocmVzdWx0KTsKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEw
MzQ1OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE3IEBACisyMDExLTEyLTIxICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFhTTFQtY3JlYXRlZCBIVE1MIGRvY3VtZW50cyBkbyBub3QgaW5oZXJpdCBmaXJzdCBw
YXJ0eSBmb3IgY29va2llcyBmcm9tIG9yaWdpbmFsbHkgbG9hZGVkIFhNTC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NzU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L2Nvb2tpZXMvZmlyc3QtcGFydHktY29va2llLWFsbG93LXhzbHQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMvZmlyc3QtcGFydHktY29v
a2llLWFsbG93LXhzbHQueG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L2Nvb2tpZXMvcmVzb3VyY2VzL2ZpcnN0LXBhcnR5LWNvb2tpZS1hbGxvdy54c2w6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy9yZXNvdXJjZXMvdGhpcmQtcGFy
dHktY29va2llLWJsb2NraW5nLnhzbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9jb29raWVzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy14c2x0LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL3RoaXJkLXBh
cnR5LWNvb2tpZS1ibG9ja2luZy14c2x0LnhtbDogQWRkZWQuCisKIDIwMTEtMTItMjEgIEFkcmll
bm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIE1hcmsg
Y29sb3ItcHJvcC0wNS10LnN2ZyBhcyBmYWlsaW5nIGFmdGVyIHIxMDM0MjcKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy9maXJzdC1wYXJ0eS1jb29raWUtYWxs
b3cteHNsdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jb29raWVzL2ZpcnN0LXBhcnR5LWNvb2tpZS1hbGxvdy14c2x0LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29v
a2llcy9maXJzdC1wYXJ0eS1jb29raWUtYWxsb3cteHNsdC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNiBAQAorCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGgg
Ly88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK0Nvb2tpZSBpcyBzZXQKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy9maXJzdC1wYXJ0eS1jb29raWUtYWxs
b3cteHNsdC54bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9jb29raWVzL2ZpcnN0LXBhcnR5LWNvb2tpZS1hbGxvdy14c2x0LnhtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy9maXJzdC1wYXJ0eS1j
b29raWUtYWxsb3cteHNsdC54bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorPD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzw/eG1sLXN0eWxlc2hlZXQgdHlwZT0i
dGV4dC94c2wiIGhyZWY9InJlc291cmNlcy9maXJzdC1wYXJ0eS1jb29raWUtYWxsb3cueHNsIj8+
Cis8Ym9keS8+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMv
dGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLXhzbHQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy90aGlyZC1wYXJ0eS1j
b29raWUtYmxvY2tpbmcteHNsdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMvdGhpcmQtcGFydHktY29va2llLWJsb2Nr
aW5nLXhzbHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKKworCist
LS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0t
LS0tCitDb29raWUgaXMgTk9UIHNldApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9jb29raWVzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy14c2x0LnhtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMvdGhpcmQtcGFy
dHktY29va2llLWJsb2NraW5nLXhzbHQueG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy14
c2x0LnhtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAi
IGVuY29kaW5nPSJ1dGYtOCI/PgorPD94bWwtc3R5bGVzaGVldCB0eXBlPSJ0ZXh0L3hzbCIgaHJl
Zj0icmVzb3VyY2VzL3RoaXJkLXBhcnR5LWNvb2tpZS1ibG9ja2luZy54c2wiPz4KKzxib2R5Lz4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy9yZXNvdXJjZXMv
Zmlyc3QtcGFydHktY29va2llLWFsbG93LnhzbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2Nvb2tpZXMvcmVzb3VyY2VzL2ZpcnN0LXBhcnR5LWNvb2tpZS1h
bGxvdy54c2wJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L2Nvb2tpZXMvcmVzb3VyY2VzL2ZpcnN0LXBhcnR5LWNvb2tpZS1hbGxvdy54c2wJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IklTTy04
ODU5LTEiPz4KKzx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiIHhtbG5zOnhzbD0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj4KKyAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0i
LyI+CisgICAgPGh0bWw+CisgICAgICA8dGl0bGU+Q2hlY2tzIHRoYXQgYW4gWFNMVC1nZW5lcmF0
ZWQgSFRNTCBkb2MgYWxsb3dzIGZpcnN0LXBhcnR5IGNvb2tpZXM8L3RpdGxlPgorICAgICAgPHNj
cmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4
dCgpOworCisgICAgLy8gU3RhcnQgd2l0aCBhIGNsZWFuIHN0YXRlLCBhcyBvdGhlcndpc2UgYW4g
ZXhwaXJlZCBjb29raWUgZm9yIHRoaXMgZG9tYWluIGNvdWxkIGFmZmVjdCBiZWhhdmlvciB3aXRo
IENGTmV0d29yay4KKyAgICAvLyBDYW4gYmUgcmVtb3ZlZCBvbmNlIHJkYXI6Ly9wcm9ibGVtLzEw
MDgwMTMwIGlzIGZpeGVkLgorICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRQcml2YXRl
QnJvd3NpbmdFbmFibGVkKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRQcml2YXRl
QnJvd3NpbmdFbmFibGVkKHRydWUpOworCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QWx3
YXlzQWNjZXB0Q29va2llcyhmYWxzZSk7Cit9CisgICAgICA8L3NjcmlwdD4KKyAgICAgIDxib2R5
PgorICAgICAgICA8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L2Nv
b2tpZXMvcmVzb3VyY2VzL3NldC1hLWNvb2tpZS5waHAiPjwvaWZyYW1lPgorICAgICAgPC9ib2R5
PgorICAgIDwvaHRtbD4KKyAgPC94c2w6dGVtcGxhdGU+Cis8L3hzbDpzdHlsZXNoZWV0PgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jb29raWVzL3Jlc291cmNlcy90aGly
ZC1wYXJ0eS1jb29raWUtYmxvY2tpbmcueHNsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY29va2llcy9yZXNvdXJjZXMvdGhpcmQtcGFydHktY29va2llLWJs
b2NraW5nLnhzbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvY29va2llcy9yZXNvdXJjZXMvdGhpcmQtcGFydHktY29va2llLWJsb2NraW5nLnhzbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0i
SVNPLTg4NTktMSI/PgorPHhzbDpzdHlsZXNoZWV0IHZlcnNpb249IjEuMCIgeG1sbnM6eHNsPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L1hTTC9UcmFuc2Zvcm0iPgorICA8eHNsOnRlbXBsYXRlIG1h
dGNoPSIvIj4KKyAgICA8aHRtbD4KKyAgICAgIDx0aXRsZT5DaGVja3MgdGhhdCBhbiBYU0xULWdl
bmVyYXRlZCBIVE1MIGRvYyBkb2VzIG5vdCBjaXJjdW12ZW50IHRoaXJkLXBhcnR5IGNvb2tpZSBy
dWxlczwvdGl0bGU+CisgICAgICA8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisKKyAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4g
c3RhdGUsIGFzIG90aGVyd2lzZSBhbiBleHBpcmVkIGNvb2tpZSBmb3IgdGhpcyBkb21haW4gY291
bGQgYWZmZWN0IGJlaGF2aW9yIHdpdGggQ0ZOZXR3b3JrLgorICAgIC8vIENhbiBiZSByZW1vdmVk
IG9uY2UgcmRhcjovL3Byb2JsZW0vMTAwODAxMzAgaXMgZml4ZWQuCisgICAgaWYgKGxheW91dFRl
c3RDb250cm9sbGVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQodHJ1ZSk7CisKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRBbHdheXNBY2NlcHRDb29raWVzKGZhbHNlKTsKK30KKyAgICAg
IDwvc2NyaXB0PgorICAgICAgPGJvZHk+CisgICAgICAgIDxpZnJhbWUgc3JjPSJodHRwOi8vbG9j
YWxob3N0OjgwMDAvc2VjdXJpdHkvY29va2llcy9yZXNvdXJjZXMvc2V0LWEtY29va2llLnBocCI+
PC9pZnJhbWU+CisgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorICA8L3hzbDp0ZW1wbGF0ZT4K
KzwveHNsOnN0eWxlc2hlZXQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>