<?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>100057</bug_id>
          
          <creation_ts>2012-10-22 17:00:41 -0700</creation_ts>
          <short_desc>Replace NodeRareData hash map with a union on m_renderer</short_desc>
          <delta_ts>2012-11-07 16:37:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>101277</dependson>
          <blocked>73853</blocked>
    
    <blocked>87034</blocked>
    
    <blocked>89635</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Elliott Sprehn">esprehn</reporter>
          <assigned_to name="Elliott Sprehn">esprehn</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>esprehn</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>mjs</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>slewis</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>748099</commentid>
    <comment_count>0</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-10-22 17:00:41 -0700</bug_when>
    <thetext>Replace NodeRareData hash map with a union on m_renderer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748112</commentid>
    <comment_count>1</comment_count>
      <attachid>170032</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-10-22 17:16:58 -0700</bug_when>
    <thetext>Created attachment 170032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748119</commentid>
    <comment_count>2</comment_count>
      <attachid>170032</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-22 17:34:05 -0700</bug_when>
    <thetext>Comment on attachment 170032
Patch

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

I think this is interesting.  It&apos;s unclear to me how likely this is to cause perf changes (good or bad).

&gt; Source/WebCore/dom/Node.h:814
&gt; +    union DataUnion {

You should probably add a comment, explaining why, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748129</commentid>
    <comment_count>3</comment_count>
      <attachid>170032</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-22 17:44:02 -0700</bug_when>
    <thetext>Comment on attachment 170032
Patch

Attachment 170032 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14488634</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748146</commentid>
    <comment_count>4</comment_count>
      <attachid>170032</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-22 17:59:57 -0700</bug_when>
    <thetext>Comment on attachment 170032
Patch

Attachment 170032 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14482747</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748164</commentid>
    <comment_count>5</comment_count>
      <attachid>170032</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-22 18:41:20 -0700</bug_when>
    <thetext>Comment on attachment 170032
Patch

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

Looks like a good change, but requires some additional performance testing and tuning, I suspect.

Mac build failed because what was an inline function is now non-inline. You’ll have to update the export file because of that.

Not sure why the GTK and Windows builds failed.

&gt; Source/WebCore/ChangeLog:15
&gt; +        Use a union on Node::m_renderer between NodeRareData* and RenderObject*. This removes
&gt; +        the overhead of accessing rare data and the memory from the map. We now get the 5%
&gt; +        performance increase observed in Bug 90059 but when accessing node lists on any node.
&gt; +        This should be a perf win on node-list-access.html of a similar percentage.
&gt; +
&gt; +        The extra pointer and conditional does not regress performance when accessing node
&gt; +        lists through methods like getElementsByClassName on the document. I also removed
&gt; +        multiple accesses down hot code paths like recalcStyle.

How did you measure performance outside of those DOM benchmarks? Saying “I removed multiple accesses down hot code paths” sounds like optimization by code inspection, but we need to actually test whether this measurably slows performance in code that was heavily accessing the renderer. Did you do some kind of testing?

&gt; Source/WebCore/dom/Node.cpp:483
&gt; +    data-&gt;setRenderer(renderer());

Really should be:

    data-&gt;setRenderer(m_data.m_renderer);

No reason to check HasRareDataFlag an extra time here, and the more verbose version also has the advantage of being slightly clearer about what’s going on.

&gt; Source/WebCore/dom/Node.cpp:502
&gt; +    RenderObject* renderer = this-&gt;renderer();

Really should be:

    RenderObject* renderer = m_data.m_rareData-&gt;renderer();

No reason to check HasRareDataFlag an extra time here, and the more verbose version also has the advantage of being slightly clearer about what’s going on.

&gt; Source/WebCore/dom/Node.cpp:511
&gt; +RenderObject* Node::renderer() const
&gt; +{
&gt; +    return hasRareData() ? m_data.m_rareData-&gt;renderer() : m_data.m_renderer;
&gt; +}

Why isn’t this inlined? It’s really OK to have function overhead every time this is called? I’d expect that we’d at least put the !hasRareData() case in the header and inline it.

&gt; Source/WebCore/dom/Node.cpp:1427
&gt; +    RenderObject* renderer = this-&gt;renderer();
&gt; +    if (renderer)
&gt; +        renderer-&gt;setAnimatableStyle(s);

Our usual style would be to define the variable inside the if statement.

&gt; Source/WebCore/dom/Node.cpp:2842
&gt; +    RenderObject* renderer = this-&gt;renderer();
&gt; +    if (renderer)
&gt; +        info.addMember(renderer-&gt;style());

Our usual style would be to define the variable inside the if statement.

&gt; Source/WebCore/dom/NodeRareData.h:183
&gt; +        : m_renderer(0)

A shame to set m_renderer here since it will always get set again as soon as the createRareData function returns.

&gt; Source/WebCore/dom/NodeRenderStyle.h:39
&gt; -    if (m_renderer) 
&gt; -        return m_renderer-&gt;style();
&gt; +    if (renderer())
&gt; +        return renderer()-&gt;style();

Strange that you changed this, but did not put the renderer into a local variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748268</commentid>
    <comment_count>6</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-10-22 22:04:20 -0700</bug_when>
    <thetext>I&apos;d like to see some data about the performance effects of this change. Specifically:

- What tests does it speed up and how much? Actual data, please, not just guesses.

- Tests that cover rendering (including page loading tests, dom-driven animation tests, and anything else that might be rendering heavy).

Reason for the latter is that this patch makes access to a node&apos;s renderer take a branch always, and dereference an extra pointer in the case where the node has rare data, so prima facie it seems like there is a risk of regressing anything that is hot in renderer access.


Just as for behavior-affecting changes it is the patch submitter&apos;s job to provide evidence that the patch is correct, with performance-affecting patches it is the patch submitter&apos;s job to provide evidence that the patch improves performance as intended and does not regress things that it might be feared to regress.

So I hope it is reasonable to ask for this perf test data up front.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748876</commentid>
    <comment_count>7</comment_count>
      <attachid>170032</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-10-23 12:59:06 -0700</bug_when>
    <thetext>Comment on attachment 170032
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:15
&gt;&gt; +        multiple accesses down hot code paths like recalcStyle.
&gt; 
&gt; How did you measure performance outside of those DOM benchmarks? Saying “I removed multiple accesses down hot code paths” sounds like optimization by code inspection, but we need to actually test whether this measurably slows performance in code that was heavily accessing the renderer. Did you do some kind of testing?

I&apos;ll remove these for now and benchmark more.

&gt;&gt; Source/WebCore/dom/Node.cpp:511
&gt;&gt; +}
&gt; 
&gt; Why isn’t this inlined? It’s really OK to have function overhead every time this is called? I’d expect that we’d at least put the !hasRareData() case in the header and inline it.

There&apos;s header cycles trying to make them inline and knowing the internal layout of a NodeRareData. I&apos;ll make the fast path inline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748902</commentid>
    <comment_count>8</comment_count>
      <attachid>170218</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-10-23 13:25:04 -0700</bug_when>
    <thetext>Created attachment 170218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748907</commentid>
    <comment_count>9</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-10-23 13:26:55 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=170218) [details]
&gt; Patch

I used a base class for NodeRareData that lets me inline the whole impl of setRenderer() and renderer(). The cast in rareData() is a little gross, but this saves you from all the exports and adding the method call.

I&apos;ll run the bencharks now :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751602</commentid>
    <comment_count>10</comment_count>
      <attachid>170218</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-25 23:42:44 -0700</bug_when>
    <thetext>Comment on attachment 170218
Patch

Marking r- to remove from EWS queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756700</commentid>
    <comment_count>11</comment_count>
      <attachid>171948</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-01 16:02:18 -0700</bug_when>
    <thetext>Created attachment 171948
Patch

Did performance testing and removed original speculative optimizations in favor of ones that actually seem needed. There&apos;s no observable slowdown now, and there&apos;s a 15% improvement on Parser/textarea-parsing.html in addition to the 5% improvement for node lists (and treeScope)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756703</commentid>
    <comment_count>12</comment_count>
      <attachid>171948</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-01 16:07:45 -0700</bug_when>
    <thetext>Comment on attachment 171948
Patch

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

This LGTM, but I expect we&apos;re going to have some minor perf fallout from this.  Code has long assumed that renderer() was basically free, and now it&apos;s a branch.

&gt; Source/WebCore/dom/Node.cpp:503
&gt; +    delete m_data.m_rareData;

I assume manual delete is needed because of our use of a union?

&gt; Source/WebCore/dom/Node.h:835
&gt; +    // When a node has rare data we move the renderer into the rare data.

You might also mention somnewhere in this header that this makes renderer() slightly more expensive than before.  Previously renderer() was assumed free. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756752</commentid>
    <comment_count>13</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-01 17:33:01 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 171948 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171948&amp;action=review
&gt; 
&gt; This LGTM, but I expect we&apos;re going to have some minor perf fallout from this.  Code has long assumed that renderer() was basically free, and now it&apos;s a branch.

Yeah I&apos;ll keep an eye on it.

&gt; 
&gt; &gt; Source/WebCore/dom/Node.cpp:503
&gt; &gt; +    delete m_data.m_rareData;
&gt; 
&gt; I assume manual delete is needed because of our use of a union?

Manual delete was always needed because we don&apos;t really use the OwnPtr from createRareData, we instead call leakPtr() and just manage it ourselves. You tried to fix this once: https://bugs.webkit.org/show_bug.cgi?id=17199

With the union approach we definitely can&apos;t use an OwnPtr, so I was going to just make createRareData return a bare ptr in a future patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756760</commentid>
    <comment_count>14</comment_count>
      <attachid>171948</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-01 17:46:35 -0700</bug_when>
    <thetext>Comment on attachment 171948
Patch

Attachment 171948 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14657091

New failing tests:
svg/W3C-SVG-1.1/text-align-04-b.svg
svg/custom/tref-remove-target-crash.svg
svg/custom/text-tref-03-b-referenced-element-removal.svg
svg/custom/text-tref-03-b-tref-removal.svg
svg/custom/tref-own-content-removal.svg
svg/batik/text/textProperties.svg
svg/custom/text-linking.svg
svg/W3C-SVG-1.1-SE/styling-pres-02-f.svg
svg/custom/tref-update.svg
svg/foreignObject/text-tref-02-b.svg
svg/custom/tref-nested-events-crash.svg
svg/text/text-align-04-b.svg
svg/custom/text-tref-03-b-change-href.svg
svg/custom/text-tref-03-b-change-href-dom.svg
svg/W3C-SVG-1.1-SE/text-tref-03-b.svg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756763</commentid>
    <comment_count>15</comment_count>
      <attachid>171961</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-01 17:56:36 -0700</bug_when>
    <thetext>Created attachment 171961
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756768</commentid>
    <comment_count>16</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-01 18:00:53 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 171948 [details])
&gt; Attachment 171948 [details] did not pass mac-ews (mac):
&gt; Output: http://queues.webkit.org/results/14657091
&gt; 
&gt; New failing tests:
&gt; svg/W3C-SVG-1.1/text-align-04-b.svg
&gt; svg/custom/tref-remove-target-crash.svg
&gt; svg/custom/text-tref-03-b-referenced-element-removal.svg
&gt; svg/custom/text-tref-03-b-tref-removal.svg
&gt; svg/custom/tref-own-content-removal.svg
&gt; svg/batik/text/textProperties.svg
&gt; svg/custom/text-linking.svg
&gt; svg/W3C-SVG-1.1-SE/styling-pres-02-f.svg
&gt; svg/custom/tref-update.svg
&gt; svg/foreignObject/text-tref-02-b.svg
&gt; svg/custom/tref-nested-events-crash.svg
&gt; svg/text/text-align-04-b.svg
&gt; svg/custom/text-tref-03-b-change-href.svg
&gt; svg/custom/text-tref-03-b-change-href-dom.svg
&gt; svg/W3C-SVG-1.1-SE/text-tref-03-b.svg

I fixed the crashes. I had assumed in Text::recalcTextStyle that if you have a renderer your parent does too, but this is not the case if your parent is a ShadowRoot.

Incidentally the hack in SVGShadowText::willRecalcTextStyle is concerning, I don&apos;t think we handle Text styles properly in shadows for things outside SVG right now. I can&apos;t figure out where we ever call setStyle() on a Text if it&apos;s an immediate child of a ShadowRoot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756920</commentid>
    <comment_count>17</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-11-01 23:43:07 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created an attachment (id=171948) [details]
&gt; Patch
&gt; 
&gt; Did performance testing and removed original speculative optimizations in favor of ones that actually seem needed. There&apos;s no observable slowdown now, and there&apos;s a 15% improvement on Parser/textarea-parsing.html in addition to the 5% improvement for node lists (and treeScope)

Could you please give some more detail on what tests you ran and what the actual raw results were (as per request in comment #6)?

Did you run any benchmarks that test page loading speed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757271</commentid>
    <comment_count>18</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-02 09:42:43 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #11)
&gt; &gt; Created an attachment (id=171948) [details] [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Did performance testing and removed original speculative optimizations in favor of ones that actually seem needed. There&apos;s no observable slowdown now, and there&apos;s a 15% improvement on Parser/textarea-parsing.html in addition to the 5% improvement for node lists (and treeScope)
&gt; 
&gt; Could you please give some more detail on what tests you ran and what the actual raw results were (as per request in comment #6)?
&gt; 

I used run-perf-tests on a Mac Pro with yes &gt; /dev/null in a background terminal to ensure no CPU throttling (I tested many times, and brining one core to a constant 100% CPU made all run-perf-tests results have less run-to-run delta).

Results from run-perf-tests (exactly copied):

Parser/html5-full-render    ms  
Parser/textarea-parsing runs/s  

Baseline (with new RareData patch)

4590.78 ± 0.55% 
55.42   ± 0.29%

4596.38 ± 0.23%     
57.45   ± 0.19%

4565.54 ± 0.43% 3.66% Better    
56.00   ± 0.11% 1.04% Better    

r133226 by comparison:

4584.45 ± 0.53%     
48.22   ± 0.27% 13.00% Worse    

4592.59 ± 0.85%     
48.03   ± 0.62% 13.34% Worse

4531.03 ± 0.59% 1.30% Better    
46.98   ± 0.24% 15.22% Worse 

I also ran the Bindings/* tests to ensure there were no changes and there weren&apos;t. The existing tests for getElementsByTagName and other node list getters showed no regression meaning this patch is indeed the same +5% Better as observed in 90059. Unfortunately the Bindings/get-elements-by* benchmarks only test document.* versions so this doesn&apos;t show that by not regressing performance on those tests with this patch I&apos;ve also generalized the performance win.

&gt; Did you run any benchmarks that test page loading speed?

I used html5-full-render as a micro benchark for that. It loads the HTML5 spec which is huge and hammers on recalcStyle, setRenderer and other page loading centric things. That&apos;s how I decided to change Text::recalcTextStyle. This was in response to Darin&apos;s comment on figuring out which places we should really care about accessing renderer() being slower. More detail of this optimization step is in the ChangeLog.

Once this lands the Chromium bots can give us a clearer picture of page loading speed. As this patch is quite small it would be easy to just roll it out if there&apos;s a major issue just as was done the last time someone attempted to move m_document into the rare data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757556</commentid>
    <comment_count>19</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-02 14:04:59 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; Created an attachment (id=171948) [details] [details] [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; Did performance testing and removed original speculative optimizations in favor of ones that actually seem needed. There&apos;s no observable slowdown now, and there&apos;s a 15% improvement on Parser/textarea-parsing.html in addition to the 5% improvement for node lists (and treeScope)
&gt; &gt; 
&gt; &gt; Could you please give some more detail on what tests you ran and what the actual raw results were (as per request in comment #6)?
&gt; &gt; 
&gt; 
&gt; I used run-perf-tests on a Mac Pro with yes &gt; /dev/null in a background terminal to ensure no CPU throttling (I tested many times, and brining one core to a constant 100% CPU made all run-perf-tests results have less run-to-run delta).
&gt; 
&gt; Results from run-perf-tests (exactly copied):
&gt; 
&gt; Parser/html5-full-render    ms  
&gt; Parser/textarea-parsing runs/s  
&gt; 
&gt; Baseline (with new RareData patch)
&gt; 
&gt; 4590.78 ± 0.55% 
&gt; 55.42   ± 0.29%
&gt; 
&gt; 4596.38 ± 0.23%     
&gt; 57.45   ± 0.19%
&gt; 
&gt; 4565.54 ± 0.43% 3.66% Better    
&gt; 56.00   ± 0.11% 1.04% Better    
&gt; 
&gt; r133226 by comparison:
&gt; 
&gt; 4584.45 ± 0.53%     
&gt; 48.22   ± 0.27% 13.00% Worse    
&gt; 
&gt; 4592.59 ± 0.85%     
&gt; 48.03   ± 0.62% 13.34% Worse
&gt; 
&gt; 4531.03 ± 0.59% 1.30% Better    
&gt; 46.98   ± 0.24% 15.22% Worse 
&gt; 

Eric wanted me to clarify these numbers. The numbers show that for the Parser/html5-full-render.html test the patch has effectively no effect. The last one that&apos;s 1.3% better without my patch is just normal variation as the two previous runs don&apos;t show enough difference for run-perf-tests to even show the delta. Before I tuned the Text::recalcTextStyle method I saw consistent &quot;2% Better&quot; without my patch on html5-full-render which is why I made changes to that method to remove the overhead.

The second test for Parser/textarea-parsing.html shows a consistent improvement of 13-15% with my patch.

The other test I ran was Bindings/get-elements-by-tag-name.html which originally showed no difference on the first iteration of this patch, but I just reran with the current iteration of the patch and it does actually show some improvement:

run-perf-tests --release --chromium Bindings/get-elements-by-tag-name.html

Baseline of r133226:
224.28	± 1.49%	2.52% Worse
227.44	± 1.91%
230.08	± 0.48%

With my patch:
249.95	± 1.27%	8.64% Better
249.27	± 1.49%	8.34% Better
243.02	± 2.21%	5.63% Better

Which makes it look like removing the branch from inside Node::rareData() and the special casing for document rare data improved that benchmark by +5% as well.

So in terms of these benchmarks this looks like all win, but of course the change that was needed in Text::recalcTextStyle highlights that there&apos;s possibly minor regressions in places where we call renderer() repeatedly. In a follow up patch we can fix those to cache the renderer in a local variable if needed just like I did in Text::recalcTextStyle and renderStyle().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757557</commentid>
    <comment_count>20</comment_count>
      <attachid>171961</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-02 14:07:01 -0700</bug_when>
    <thetext>Comment on attachment 171961
Patch for landing

Thank you for clarifying.  As we discussed, it&apos;s likely there may be some minor regressions due to repeated renderer() calls which can easily be avoided by using a local to store the renderer() result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757562</commentid>
    <comment_count>21</comment_count>
      <attachid>171961</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 14:09:22 -0700</bug_when>
    <thetext>Comment on attachment 171961
Patch for landing

Rejecting attachment 171961 from commit-queue.

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

Last 500 characters of output:
atching file Source/WebCore/dom/Node.h
Hunk #2 succeeded at 510 (offset -4 lines).
Hunk #3 succeeded at 827 with fuzz 2 (offset -6 lines).
patching file Source/WebCore/dom/NodeRareData.h
Hunk #1 succeeded at 178 (offset 2 lines).
Hunk #2 succeeded at 200 (offset 2 lines).
patching file Source/WebCore/dom/NodeRenderStyle.h
patching file Source/WebCore/dom/Text.cpp

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

Full output: http://queues.webkit.org/results/14670960</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757566</commentid>
    <comment_count>22</comment_count>
      <attachid>172133</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-02 14:16:59 -0700</bug_when>
    <thetext>Created attachment 172133
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757578</commentid>
    <comment_count>23</comment_count>
      <attachid>172133</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-02 14:23:38 -0700</bug_when>
    <thetext>Comment on attachment 172133
Patch for landing

Engage!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757582</commentid>
    <comment_count>24</comment_count>
      <attachid>172136</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-02 14:26:40 -0700</bug_when>
    <thetext>Created attachment 172136
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757584</commentid>
    <comment_count>25</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-02 14:27:46 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 172133 [details])
&gt; Engage!

Sorry, want to cq+ one more time? I fixed the changelog to have more details from the perf tests I just ran since it turns out this is an unexpected 8% win :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757587</commentid>
    <comment_count>26</comment_count>
      <attachid>172136</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-02 14:28:32 -0700</bug_when>
    <thetext>Comment on attachment 172136
Patch for landing

Re-engage!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757606</commentid>
    <comment_count>27</comment_count>
      <attachid>172136</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-02 14:38:31 -0700</bug_when>
    <thetext>Comment on attachment 172136
Patch for landing

Attachment 172136 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14670967</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757607</commentid>
    <comment_count>28</comment_count>
      <attachid>172136</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-02 14:39:02 -0700</bug_when>
    <thetext>Comment on attachment 172136
Patch for landing

Attachment 172136 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14718016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757631</commentid>
    <comment_count>29</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-02 14:56:38 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 172136 [details])
&gt; Attachment 172136 [details] did not pass qt-wk2-ews (qt):
&gt; Output: http://queues.webkit.org/results/14718016

Woops, it looks like new code went in this morning to track the memory usage of the map itself:

https://trac.webkit.org/changeset/133298

which means that removing the map in this patch also reduces the memory usage on nytimes.com by 250k.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757634</commentid>
    <comment_count>30</comment_count>
      <attachid>172136</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 14:58:22 -0700</bug_when>
    <thetext>Comment on attachment 172136
Patch for landing

Attachment 172136 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14687988</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757663</commentid>
    <comment_count>31</comment_count>
      <attachid>172136</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-02 15:17:56 -0700</bug_when>
    <thetext>Comment on attachment 172136
Patch for landing

Attachment 172136 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14677940</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757665</commentid>
    <comment_count>32</comment_count>
      <attachid>172136</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-02 15:18:45 -0700</bug_when>
    <thetext>Comment on attachment 172136
Patch for landing

Attachment 172136 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14713101</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757668</commentid>
    <comment_count>33</comment_count>
      <attachid>172156</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-02 15:23:39 -0700</bug_when>
    <thetext>Created attachment 172156
Patch

Fix bug and update changelog to note the memory savings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757725</commentid>
    <comment_count>34</comment_count>
      <attachid>172156</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-02 16:15:14 -0700</bug_when>
    <thetext>Comment on attachment 172156
Patch

By our powers combined!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757747</commentid>
    <comment_count>35</comment_count>
      <attachid>172156</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 16:40:07 -0700</bug_when>
    <thetext>Comment on attachment 172156
Patch

Clearing flags on attachment: 172156

Committed r133372: &lt;http://trac.webkit.org/changeset/133372&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757748</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-02 16:40:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757750</commentid>
    <comment_count>37</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-02 16:47:36 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; All reviewed patches have been landed.  Closing bug.

By the power of Grayskull!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758125</commentid>
    <comment_count>38</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2012-11-04 07:42:12 -0800</bug_when>
    <thetext>Thanks for the performance data! I&apos;ve asked Apple folks to run this through our internal page load speed benchmark as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761135</commentid>
    <comment_count>39</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-11-07 16:08:43 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; Thanks for the performance data! I&apos;ve asked Apple folks to run this through our internal page load speed benchmark as well.

The Chromium page cyclers showed no regression so the change looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761159</commentid>
    <comment_count>40</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-07 16:24:41 -0800</bug_when>
    <thetext>*** Bug 89635 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761171</commentid>
    <comment_count>41</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2012-11-07 16:37:58 -0800</bug_when>
    <thetext>Ran it through our performance tests and there were no regressions.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170032</attachid>
            <date>2012-10-22 17:16:58 -0700</date>
            <delta_ts>2012-10-23 13:25:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100057-20121022171536.patch</filename>
            <type>text/plain</type>
            <size>16439</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjZhOTBlOWNmZWEyZmZk
MDYwNWViMzY4MWNhNGViZGI3NTg5YTljYi4uMDRlZmZiNzlmNzUzZWI4MWU1NTE3ZWZiZjAwYjk5
NGYzNGI1MDc2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTEwLTIyICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AZ21haWwuY29tPgorCisgICAgICAgIFJlcGxhY2UgTm9kZVJh
cmVEYXRhIGhhc2ggbWFwIHdpdGggYSB1bmlvbiBvbiBtX3JlbmRlcmVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAwNTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYSB1bmlvbiBvbiBOb2RlOjpt
X3JlbmRlcmVyIGJldHdlZW4gTm9kZVJhcmVEYXRhKiBhbmQgUmVuZGVyT2JqZWN0Ki4gVGhpcyBy
ZW1vdmVzCisgICAgICAgIHRoZSBvdmVyaGVhZCBvZiBhY2Nlc3NpbmcgcmFyZSBkYXRhIGFuZCB0
aGUgbWVtb3J5IGZyb20gdGhlIG1hcC4gV2Ugbm93IGdldCB0aGUgNSUKKyAgICAgICAgcGVyZm9y
bWFuY2UgaW5jcmVhc2Ugb2JzZXJ2ZWQgaW4gQnVnIDkwMDU5IGJ1dCB3aGVuIGFjY2Vzc2luZyBu
b2RlIGxpc3RzIG9uIGFueSBub2RlLgorICAgICAgICBUaGlzIHNob3VsZCBiZSBhIHBlcmYgd2lu
IG9uIG5vZGUtbGlzdC1hY2Nlc3MuaHRtbCBvZiBhIHNpbWlsYXIgcGVyY2VudGFnZS4KKworICAg
ICAgICBUaGUgZXh0cmEgcG9pbnRlciBhbmQgY29uZGl0aW9uYWwgZG9lcyBub3QgcmVncmVzcyBw
ZXJmb3JtYW5jZSB3aGVuIGFjY2Vzc2luZyBub2RlCisgICAgICAgIGxpc3RzIHRocm91Z2ggbWV0
aG9kcyBsaWtlIGdldEVsZW1lbnRzQnlDbGFzc05hbWUgb24gdGhlIGRvY3VtZW50LiBJIGFsc28g
cmVtb3ZlZAorICAgICAgICBtdWx0aXBsZSBhY2Nlc3NlcyBkb3duIGhvdCBjb2RlIHBhdGhzIGxp
a2UgcmVjYWxjU3R5bGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOiBSZW1vdmUgc3BlY2lhbCBjYXNlIGZvciBEb2N1bWVudCBy
YXJlIGRhdGEuIAorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Tm9kZSk6CisgICAgICAgICogZG9tL0VsZW1l
bnQuY3BwOiAKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVsZW1lbnRSYXJlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRCb3VuZGluZ0NsaWVudFJlY3QpOiBBdm9pZCBt
dWx0aXBsZSBhY2Nlc3NlcyB0byByZW5kZXJlcigpCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
Ojpwc2V1ZG9TdHlsZUNhY2hlSXNJbnZhbGlkKTogU2FtZS4KKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnJlY2FsY1N0eWxlKTogU2FtZS4KKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpyYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpl
bnN1cmVSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjbGVhclJhcmVEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6cmVuZGVyQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbmRlckJveE1vZGVs
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldFJlbmRlclN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vTm9k
ZS5oOgorICAgICAgICAoTm9kZSk6CisgICAgICAgICogZG9tL05vZGVSYXJlRGF0YS5oOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZVJhcmVEYXRhOjpOb2RlUmFyZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZVJhcmVEYXRhOjpyZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFy
ZURhdGE6OnNldFJlbmRlcmVyKToKKyAgICAgICAgKE5vZGVSYXJlRGF0YSk6CisgICAgICAgICog
ZG9tL05vZGVSZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVuZGVyU3R5
bGUpOgorCiAyMDEyLTEwLTIyICBWYXJ1biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBDb250ZXh0IG1lbnUgZ2VuZXJhdGVkIGZyb20gdG91Y2ggZ2VzdHVyZXMgb24g
dGV4dGFyZWFzIGhhcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZTg1YzhmMWMwNzNmZmUx
MGRhMDdjZmI0YmNlM2JjZWI5NDQ0NzNhNi4uNzMxMzE0ZWYxODA4ZTM0ZDcyYTM1MmYwZGQ2NWM2
N2Y3MzE5ZTJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00NzgsNyArNDc4LDYgQEAg
RG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlz
WEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV9pc1ZpZXdTb3VyY2UoZmFsc2UpCiAgICAgLCBt
X3Nhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFjZXMoZmFsc2UpCiAgICAgLCBtX2lzU3JjZG9jRG9j
dW1lbnQoZmFsc2UpCi0gICAgLCBtX2RvY3VtZW50UmFyZURhdGEoMCkKICAgICAsIG1fZXZlbnRR
dWV1ZShEb2N1bWVudEV2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fd2Vha1JlZmVy
ZW5jZShEb2N1bWVudFdlYWtSZWZlcmVuY2U6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1faWRBdHRy
aWJ1dGVOYW1lKGlkQXR0cikKQEAgLTIwMjksMTEgKzIwMjgsNiBAQCB2b2lkIERvY3VtZW50Ojpw
YWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6
ZSwgaW50JgogICAgIG1hcmdpbkxlZnQgPSBzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpID8g
bWFyZ2luTGVmdCA6IGludFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5MZWZ0KCksIHdpZHRo
LCB2aWV3KTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2V0RG9jdW1lbnRSYXJlRGF0YShOb2RlUmFy
ZURhdGEqIHJhcmVEYXRhKQotewotICAgIG1fZG9jdW1lbnRSYXJlRGF0YSA9IHJhcmVEYXRhOwot
fQotCiB2b2lkIERvY3VtZW50OjpzZXRJc1ZpZXdTb3VyY2UoYm9vbCBpc1ZpZXdTb3VyY2UpCiB7
CiAgICAgbV9pc1ZpZXdTb3VyY2UgPSBpc1ZpZXdTb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IDNlZWEwZjBkZGE4MThkMzYxZDBhZTFiZjgwZjE4ODVmMzBlYTUyNzQuLjZkMDA0ZTgzNjcz
MWJiZGU5ZGY0YzFiZjA5MWY2OTk3ZWM5NmU4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0x
MTYsNyArMTE2LDYgQEAgY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKIGNsYXNz
IE5hbWVkRmxvd0NvbGxlY3Rpb247CiBjbGFzcyBOb2RlRmlsdGVyOwogY2xhc3MgTm9kZUl0ZXJh
dG9yOwotY2xhc3MgTm9kZVJhcmVEYXRhOwogY2xhc3MgUGFnZTsKIGNsYXNzIFBsYXRmb3JtTW91
c2VFdmVudDsKIGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjsKQEAgLTQ2Nyw5ICs0NjYsNiBA
QCBwdWJsaWM6CiAKICAgICBib29sIGlzU3JjZG9jRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X2lzU3JjZG9jRG9jdW1lbnQ7IH0KIAotICAgIE5vZGVSYXJlRGF0YSogZG9jdW1lbnRSYXJlRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRSYXJlRGF0YTsgfTsKLSAgICB2b2lkIHNldERv
Y3VtZW50UmFyZURhdGEoTm9kZVJhcmVEYXRhKik7Ci0KICAgICBTdHlsZVJlc29sdmVyKiBzdHls
ZVJlc29sdmVySWZFeGlzdHMoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlUmVzb2x2ZXIuZ2V0KCk7
IH0KIAogICAgIGJvb2wgaXNWaWV3U291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZpZXdTb3Vy
Y2U7IH0KQEAgLTE0MzQsOCArMTQzMCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nhd0VsZW1l
bnRzSW5Lbm93bk5hbWVzcGFjZXM7CiAgICAgYm9vbCBtX2lzU3JjZG9jRG9jdW1lbnQ7CiAKLSAg
ICBOb2RlUmFyZURhdGEqIG1fZG9jdW1lbnRSYXJlRGF0YTsKLQogICAgIFJlZlB0cjxEb2N1bWVu
dEV2ZW50UXVldWU+IG1fZXZlbnRRdWV1ZTsKIAogICAgIFJlZlB0cjxEb2N1bWVudFdlYWtSZWZl
cmVuY2U+IG1fd2Vha1JlZmVyZW5jZTsKQEAgLTE1MzUsNyArMTUyOSw2IEBAIGlubGluZSBOb2Rl
OjpOb2RlKERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQogICAgICwg
bV9kb2N1bWVudChkb2N1bWVudCkKICAgICAsIG1fcHJldmlvdXMoMCkKICAgICAsIG1fbmV4dCgw
KQotICAgICwgbV9yZW5kZXJlcigwKQogewogICAgIGlmIChkb2N1bWVudCkKICAgICAgICAgZG9j
dW1lbnQtPmd1YXJkUmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOTdkYzljOWY2NTA2
MGRlYzc0MmE3NmIzMDc1YTA3ODRhMGRiYTc4My4uOTgzMjNhNTYzZWEzMGNmYjdjMDlkOTFjZTg5
Y2ExM2ZhYzlkNzUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTUzLDcgKzE1Myw3IEBA
IEVsZW1lbnQ6On5FbGVtZW50KCkKIGlubGluZSBFbGVtZW50UmFyZURhdGEqIEVsZW1lbnQ6OmVs
ZW1lbnRSYXJlRGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50UmFyZURhdGEqPihOb2RlUmFyZURhdGE6OnJhcmVE
YXRhRnJvbU1hcCh0aGlzKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRSYXJlRGF0
YSo+KHJhcmVEYXRhKCkpOwogfQogICAgIAogaW5saW5lIEVsZW1lbnRSYXJlRGF0YSogRWxlbWVu
dDo6ZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkKQEAgLTU3MywxMyArNTczLDE0IEBAIFBhc3NSZWZQ
dHI8Q2xpZW50UmVjdD4gRWxlbWVudDo6Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkKICAgICBkb2N1
bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAogICAgIFZl
Y3RvcjxGbG9hdFF1YWQ+IHF1YWRzOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpOwogI2lmIEVOQUJMRShTVkcpCi0gICAgaWYgKGlzU1ZHRWxlbWVudCgpICYm
IHJlbmRlcmVyKCkgJiYgIXJlbmRlcmVyKCktPmlzU1ZHUm9vdCgpKSB7CisgICAgaWYgKGlzU1ZH
RWxlbWVudCgpICYmIHJlbmRlcmVyICYmICFyZW5kZXJlci0+aXNTVkdSb290KCkpIHsKICAgICAg
ICAgLy8gR2V0IHRoZSBib3VuZGluZyByZWN0YW5nbGUgZnJvbSB0aGUgU1ZHIG1vZGVsLgogICAg
ICAgICBTVkdFbGVtZW50KiBzdmdFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KHRo
aXMpOwogICAgICAgICBGbG9hdFJlY3QgbG9jYWxSZWN0OwogICAgICAgICBpZiAoc3ZnRWxlbWVu
dC0+Z2V0Qm91bmRpbmdCb3gobG9jYWxSZWN0KSkKLSAgICAgICAgICAgIHF1YWRzLmFwcGVuZChy
ZW5kZXJlcigpLT5sb2NhbFRvQWJzb2x1dGVRdWFkKGxvY2FsUmVjdCkpOworICAgICAgICAgICAg
cXVhZHMuYXBwZW5kKHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKGxvY2FsUmVjdCkpOwog
ICAgIH0gZWxzZQogI2VuZGlmCiAgICAgewpAQCAtNTk1LDcgKzU5Niw3IEBAIFBhc3NSZWZQdHI8
Q2xpZW50UmVjdD4gRWxlbWVudDo6Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkKICAgICBmb3IgKHNp
emVfdCBpID0gMTsgaSA8IHF1YWRzLnNpemUoKTsgKytpKQogICAgICAgICByZXN1bHQudW5pdGUo
cXVhZHNbaV0uYm91bmRpbmdCb3goKSk7CiAKLSAgICBkb2N1bWVudCgpLT5hZGp1c3RGbG9hdFJl
Y3RGb3JTY3JvbGxBbmRBYnNvbHV0ZVpvb21BbmRGcmFtZVNjYWxlKHJlc3VsdCwgcmVuZGVyZXIo
KSk7CisgICAgZG9jdW1lbnQoKS0+YWRqdXN0RmxvYXRSZWN0Rm9yU2Nyb2xsQW5kQWJzb2x1dGVa
b29tQW5kRnJhbWVTY2FsZShyZXN1bHQsIHJlbmRlcmVyKTsKICAgICByZXR1cm4gQ2xpZW50UmVj
dDo6Y3JlYXRlKHJlc3VsdCk7CiB9CiAgICAgCkBAIC0xMDY2LDcgKzEwNjcsOCBAQCBib29sIEVs
ZW1lbnQ6OnBzZXVkb1N0eWxlQ2FjaGVJc0ludmFsaWQoY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJl
bnRTdHlsZSwgUmVuZGVyUwogewogICAgIEFTU0VSVChjdXJyZW50U3R5bGUgPT0gcmVuZGVyU3R5
bGUoKSk7CiAKLSAgICBpZiAoIXJlbmRlcmVyKCkgfHwgIWN1cnJlbnRTdHlsZSkKKyAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIWN1cnJlbnRT
dHlsZSB8fCAhcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNvbnN0IFBz
ZXVkb1N0eWxlQ2FjaGUqIHBzZXVkb1N0eWxlQ2FjaGUgPSBjdXJyZW50U3R5bGUtPmNhY2hlZFBz
ZXVkb1N0eWxlcygpOwpAQCAtMTA3OCw5ICsxMDgwLDkgQEAgYm9vbCBFbGVtZW50Ojpwc2V1ZG9T
dHlsZUNhY2hlSXNJbnZhbGlkKGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRl
clMKICAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBuZXdQc2V1ZG9TdHlsZTsKICAgICAgICAg
UHNldWRvSWQgcHNldWRvSWQgPSBwc2V1ZG9TdHlsZUNhY2hlLT5hdChpKS0+c3R5bGVUeXBlKCk7
CiAgICAgICAgIGlmIChwc2V1ZG9JZCA9PSBGSVJTVF9MSU5FIHx8IHBzZXVkb0lkID09IEZJUlNU
X0xJTkVfSU5IRVJJVEVEKQotICAgICAgICAgICAgbmV3UHNldWRvU3R5bGUgPSByZW5kZXJlcigp
LT51bmNhY2hlZEZpcnN0TGluZVN0eWxlKG5ld1N0eWxlKTsKKyAgICAgICAgICAgIG5ld1BzZXVk
b1N0eWxlID0gcmVuZGVyZXItPnVuY2FjaGVkRmlyc3RMaW5lU3R5bGUobmV3U3R5bGUpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBuZXdQc2V1ZG9TdHlsZSA9IHJlbmRlcmVyKCktPmdldFVu
Y2FjaGVkUHNldWRvU3R5bGUocHNldWRvSWQsIG5ld1N0eWxlLCBuZXdTdHlsZSk7CisgICAgICAg
ICAgICBuZXdQc2V1ZG9TdHlsZSA9IHJlbmRlcmVyLT5nZXRVbmNhY2hlZFBzZXVkb1N0eWxlKHBz
ZXVkb0lkLCBuZXdTdHlsZSwgbmV3U3R5bGUpOwogICAgICAgICBpZiAoIW5ld1BzZXVkb1N0eWxl
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmICgqbmV3UHNldWRvU3R5bGUg
IT0gKnBzZXVkb1N0eWxlQ2FjaGUtPmF0KGkpKSB7CkBAIC0xMDkxLDcgKzEwOTMsNyBAQCBib29s
IEVsZW1lbnQ6OnBzZXVkb1N0eWxlQ2FjaGVJc0ludmFsaWQoY29uc3QgUmVuZGVyU3R5bGUqIGN1
cnJlbnRTdHlsZSwgUmVuZGVyUwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
ZG8gYW4gYWN0dWFsIGRpZmYgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSByZXBhaW50IHZzLiBsYXlv
dXQKICAgICAgICAgICAgICAgICAvLyBpcyBuZWVkZWQsIGJ1dCBmb3Igbm93IGp1c3QgYXNzdW1l
IGEgbGF5b3V0IHdpbGwgYmUgcmVxdWlyZWQuICBUaGUgZGlmZiBjb2RlCiAgICAgICAgICAgICAg
ICAgLy8gaW4gUmVuZGVyT2JqZWN0OjpzZXRTdHlsZSB3b3VsZCBuZWVkIHRvIGJlIGZhY3RvcmVk
IG91dCBzbyB0aGF0IGl0IGNvdWxkIGJlIHJldXNlZC4KLSAgICAgICAgICAgICAgICByZW5kZXJl
cigpLT5zZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKKyAgICAgICAgICAgICAg
ICByZW5kZXJlci0+c2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTE2NSwxMyAr
MTE2NywxNCBAQCB2b2lkIEVsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkK
ICAgICAgICAgICAgICAgICBuZXdTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRq
YWNlbnRSdWxlcygpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGNoICE9IE5vQ2hhbmdlIHx8
IHBzZXVkb1N0eWxlQ2FjaGVJc0ludmFsaWQoY3VycmVudFN0eWxlLmdldCgpLCBuZXdTdHlsZS5n
ZXQoKSkgfHwgKGNoYW5nZSA9PSBGb3JjZSAmJiByZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnJl
cXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpKSkgeworICAgICAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICAgICAgaWYgKGNoICE9IE5v
Q2hhbmdlIHx8IHBzZXVkb1N0eWxlQ2FjaGVJc0ludmFsaWQoY3VycmVudFN0eWxlLmdldCgpLCBu
ZXdTdHlsZS5nZXQoKSkgfHwgKGNoYW5nZSA9PSBGb3JjZSAmJiByZW5kZXJlciAmJiByZW5kZXJl
ci0+cmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uKCkpKSB7CiAgICAgICAgICAg
ICBzZXRSZW5kZXJTdHlsZShuZXdTdHlsZSk7CiAgICAgICAgIH0gZWxzZSBpZiAobmVlZHNTdHls
ZVJlY2FsYygpICYmIHN0eWxlQ2hhbmdlVHlwZSgpICE9IFN5bnRoZXRpY1N0eWxlQ2hhbmdlKSB7
CiAgICAgICAgICAgICAvLyBBbHRob3VnaCBubyBjaGFuZ2Ugb2NjdXJyZWQsIHdlIHVzZSB0aGUg
bmV3IHN0eWxlIHNvIHRoYXQgdGhlIGNvdXNpbiBzdHlsZSBzaGFyaW5nIGNvZGUgd29uJ3QgZ2V0
CiAgICAgICAgICAgICAvLyBmb29sZWQgaW50byBiZWxpZXZpbmcgdGhpcyBzdHlsZSBpcyB0aGUg
c2FtZS4KLSAgICAgICAgICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICAgICAgICAgIHJlbmRl
cmVyKCktPnNldFN0eWxlSW50ZXJuYWwobmV3U3R5bGUuZ2V0KCkpOworICAgICAgICAgICAgaWYg
KHJlbmRlcmVyKQorICAgICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXRTdHlsZUludGVybmFsKG5l
d1N0eWxlLmdldCgpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzZXRSZW5k
ZXJTdHlsZShuZXdTdHlsZSk7CiAgICAgICAgIH0gZWxzZSBpZiAoc3R5bGVDaGFuZ2VUeXBlKCkg
PT0gU3ludGhldGljU3R5bGVDaGFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggOGQ5OTFhMTMwNWU4
M2RkZmIxMzJlZWFjY2U3ODlhMTFjYzRmOGYxNy4uNDVmYTE1NDdlYTg0Mzk3ODUwNTIwNWM1MDRj
OTgzMTgxOGYxZGY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNDY5LDcgKzQ2OSw3IEBAIFRyZWVT
Y29wZSogTm9kZTo6dHJlZVNjb3BlKCkgY29uc3QKIE5vZGVSYXJlRGF0YSogTm9kZTo6cmFyZURh
dGEoKSBjb25zdAogewogICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKLSAgICBOb2RlUmFyZURh
dGEqIGRhdGEgPSBpc0RvY3VtZW50Tm9kZSgpID8gc3RhdGljX2Nhc3Q8Y29uc3QgRG9jdW1lbnQq
Pih0aGlzKS0+ZG9jdW1lbnRSYXJlRGF0YSgpIDogTm9kZVJhcmVEYXRhOjpyYXJlRGF0YUZyb21N
YXAodGhpcyk7CisgICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gbV9kYXRhLm1fcmFyZURhdGE7CiAg
ICAgQVNTRVJUKGRhdGEpOwogICAgIHJldHVybiBkYXRhOwogfQpAQCAtNDgwLDE0ICs0ODAsOCBA
QCBOb2RlUmFyZURhdGEqIE5vZGU6OmVuc3VyZVJhcmVEYXRhKCkKICAgICAgICAgcmV0dXJuIHJh
cmVEYXRhKCk7CiAKICAgICBOb2RlUmFyZURhdGEqIGRhdGEgPSBjcmVhdGVSYXJlRGF0YSgpLmxl
YWtQdHIoKTsKLSAgICBpZiAoaXNEb2N1bWVudE5vZGUoKSkgewotICAgICAgICAvLyBGYXN0IHBh
dGggZm9yIGEgRG9jdW1lbnQuIEEgRG9jdW1lbnQga25vd3MgYSBwb2ludGVyIHRvIE5vZGVSYXJl
RGF0YS4KLSAgICAgICAgQVNTRVJUKCFzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHRoaXMpLT5kb2N1
bWVudFJhcmVEYXRhKCkpOwotICAgICAgICBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHRoaXMpLT5z
ZXREb2N1bWVudFJhcmVEYXRhKGRhdGEpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVCgh
Tm9kZVJhcmVEYXRhOjpyYXJlRGF0YU1hcCgpLmNvbnRhaW5zKHRoaXMpKTsKLSAgICAgICAgTm9k
ZVJhcmVEYXRhOjpyYXJlRGF0YU1hcCgpLnNldCh0aGlzLCBkYXRhKTsKLSAgICB9CisgICAgZGF0
YS0+c2V0UmVuZGVyZXIocmVuZGVyZXIoKSk7CisgICAgbV9kYXRhLm1fcmFyZURhdGEgPSBkYXRh
OwogICAgIHNldEZsYWcoSGFzUmFyZURhdGFGbGFnKTsKICAgICByZXR1cm4gZGF0YTsKIH0KQEAg
LTUwNSwyMiArNDk5LDI1IEBAIHZvaWQgTm9kZTo6Y2xlYXJSYXJlRGF0YSgpCiAgICAgQVNTRVJU
KCF0cmFuc2llbnRNdXRhdGlvbk9ic2VydmVyUmVnaXN0cnkoKSB8fCB0cmFuc2llbnRNdXRhdGlv
bk9ic2VydmVyUmVnaXN0cnkoKS0+aXNFbXB0eSgpKTsKICNlbmRpZgogCi0gICAgaWYgKGlzRG9j
dW1lbnROb2RlKCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPih0aGlzKTsKLSAgICAgICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gZG9jdW1lbnQt
PmRvY3VtZW50UmFyZURhdGEoKTsKLSAgICAgICAgQVNTRVJUKGRhdGEpOwotICAgICAgICBkZWxl
dGUgZGF0YTsKLSAgICAgICAgZG9jdW1lbnQtPnNldERvY3VtZW50UmFyZURhdGEoMCk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgTm9kZVJhcmVEYXRhOjpOb2RlUmFyZURhdGFNYXAmIGRhdGFNYXAg
PSBOb2RlUmFyZURhdGE6OnJhcmVEYXRhTWFwKCk7Ci0gICAgICAgIE5vZGVSYXJlRGF0YTo6Tm9k
ZVJhcmVEYXRhTWFwOjppdGVyYXRvciBpdCA9IGRhdGFNYXAuZmluZCh0aGlzKTsKLSAgICAgICAg
QVNTRVJUKGl0ICE9IGRhdGFNYXAuZW5kKCkpOwotICAgICAgICBkZWxldGUgaXQtPnZhbHVlOwot
ICAgICAgICBkYXRhTWFwLnJlbW92ZShpdCk7Ci0gICAgfQorICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOworICAgIGRlbGV0ZSBtX2RhdGEubV9yYXJlRGF0YTsK
KyAgICBtX2RhdGEubV9yZW5kZXJlciA9IHJlbmRlcmVyOwogICAgIGNsZWFyRmxhZyhIYXNSYXJl
RGF0YUZsYWcpOwogfQogCitSZW5kZXJPYmplY3QqIE5vZGU6OnJlbmRlcmVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IG1fZGF0YS5tX3JhcmVEYXRhLT5yZW5kZXJlcigp
IDogbV9kYXRhLm1fcmVuZGVyZXI7Cit9CisKK3ZvaWQgTm9kZTo6c2V0UmVuZGVyZXIoUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikKK3sKKyAgICBpZiAoaGFzUmFyZURhdGEoKSkKKyAgICAgICAgbV9k
YXRhLm1fcmFyZURhdGEtPnNldFJlbmRlcmVyKHJlbmRlcmVyKTsKKyAgICBlbHNlCisgICAgICAg
IG1fZGF0YS5tX3JlbmRlcmVyID0gcmVuZGVyZXI7Cit9CisKIE5vZGUqIE5vZGU6OnRvTm9kZSgp
CiB7CiAgICAgcmV0dXJuIHRoaXM7CkBAIC03ODksMTIgKzc4NiwxNCBAQCBib29sIE5vZGU6OnNo
b3VsZFVzZUlucHV0TWV0aG9kKCkKIAogUmVuZGVyQm94KiBOb2RlOjpyZW5kZXJCb3goKSBjb25z
dAogewotICAgIHJldHVybiBtX3JlbmRlcmVyICYmIG1fcmVuZGVyZXItPmlzQm94KCkgPyB0b1Jl
bmRlckJveChtX3JlbmRlcmVyKSA6IDA7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRo
aXMtPnJlbmRlcmVyKCk7CisgICAgcmV0dXJuIHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0JveCgp
ID8gdG9SZW5kZXJCb3gocmVuZGVyZXIpIDogMDsKIH0KIAogUmVuZGVyQm94TW9kZWxPYmplY3Qq
IE5vZGU6OnJlbmRlckJveE1vZGVsT2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9yZW5k
ZXJlciAmJiBtX3JlbmRlcmVyLT5pc0JveE1vZGVsT2JqZWN0KCkgPyB0b1JlbmRlckJveE1vZGVs
T2JqZWN0KG1fcmVuZGVyZXIpIDogMDsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhp
cy0+cmVuZGVyZXIoKTsKKyAgICByZXR1cm4gcmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94TW9k
ZWxPYmplY3QoKSA/IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIpIDogMDsKIH0KIAog
TGF5b3V0UmVjdCBOb2RlOjpib3VuZGluZ0JveCgpIGNvbnN0CkBAIC0xNDIzLDggKzE0MjIsOSBA
QCBSZW5kZXJTdHlsZSogTm9kZTo6bm9uUmVuZGVyZXJSZW5kZXJTdHlsZSgpIGNvbnN0CiAKIHZv
aWQgTm9kZTo6c2V0UmVuZGVyU3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gcykKIHsKLSAg
ICBpZiAobV9yZW5kZXJlcikKLSAgICAgICAgbV9yZW5kZXJlci0+c2V0QW5pbWF0YWJsZVN0eWxl
KHMpOyAKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAg
ICBpZiAocmVuZGVyZXIpCisgICAgICAgIHJlbmRlcmVyLT5zZXRBbmltYXRhYmxlU3R5bGUocyk7
CiB9CiAKIFJlbmRlclN0eWxlKiBOb2RlOjp2aXJ0dWFsQ29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBw
c2V1ZG9FbGVtZW50U3BlY2lmaWVyKQpAQCAtMjgzNyw4ICsyODM3LDkgQEAgdm9pZCBOb2RlOjpy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAogICAgIGluZm8uYWRkTWVtYmVyKG1fZG9jdW1lbnQpOwogICAgIGluZm8uYWRkTWVtYmVyKG1f
bmV4dCk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9wcmV2aW91cyk7Ci0gICAgaWYgKG1fcmVuZGVy
ZXIpCi0gICAgICAgIGluZm8uYWRkTWVtYmVyKG1fcmVuZGVyZXItPnN0eWxlKCkpOworICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOworICAgIGlmIChyZW5kZXJl
cikKKyAgICAgICAgaW5mby5hZGRNZW1iZXIocmVuZGVyZXItPnN0eWxlKCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA1ZDg2NDBjYmU1NzU2N2JjYWI2NTMw
Njk2YjFlNmVmMzRkMGFmMjQ5Li4yNDI2MGZkZTk2YmM1Mzc4MmVkZDkxYmNiM2Y3OTY2MGJkZjc2
YjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUwMCw5ICs1MDAsOSBAQCBwdWJsaWM6CiAgICAgLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBJbnRlZ3JhdGlvbiB3aXRoIHJlbmRlcmluZyB0cmVl
CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJl
cjsgfQotICAgIHZvaWQgc2V0UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgeyBtX3Jl
bmRlcmVyID0gcmVuZGVyZXI7IH0KLSAgICAKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRSZW5kZXJlcihSZW5kZXJPYmplY3QqKTsKKwogICAgIC8vIFVz
ZSB0aGVzZSB0d28gbWV0aG9kcyB3aXRoIGNhdXRpb24uCiAgICAgUmVuZGVyQm94KiByZW5kZXJC
b3goKSBjb25zdDsKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyQm94TW9kZWxPYmpl
Y3QoKSBjb25zdDsKQEAgLTgxMSw3ICs4MTEsMTEgQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudCog
bV9kb2N1bWVudDsKICAgICBOb2RlKiBtX3ByZXZpb3VzOwogICAgIE5vZGUqIG1fbmV4dDsKLSAg
ICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CisgICAgdW5pb24gRGF0YVVuaW9uIHsKKyAgICAg
ICAgRGF0YVVuaW9uKCkgOiBtX3JlbmRlcmVyKDApIHsgfQorICAgICAgICBSZW5kZXJPYmplY3Qq
IG1fcmVuZGVyZXI7CisgICAgICAgIE5vZGVSYXJlRGF0YSogbV9yYXJlRGF0YTsKKyAgICB9IG1f
ZGF0YTsKIAogcHVibGljOgogICAgIGJvb2wgaXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCkgY29uc3Qg
eyByZXR1cm4gZ2V0RmxhZyhJc1N0eWxlQXR0cmlidXRlVmFsaWRGbGFnKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGVSYXJlRGF0YS5oCmluZGV4IDViM2E1ODNiMGQyMjllOGRiZWJlZTIxY2Q2NDJkYzJjNzcw
ZjM0NDIuLjQwNDk4OGIxNjhiNTQ1NzU0MTIzZmQ0Yzk5NzU2NDg1OTEwMGQyMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTE4MCw3ICsxODAsOCBAQCBjbGFzcyBOb2RlUmFyZURh
dGEgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5vZGVSYXJlRGF0YSk7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOiAgICAKICAgICBOb2RlUmFyZURhdGEoKQotICAgICAgICA6
IG1fdHJlZVNjb3BlKDApCisgICAgICAgIDogbV9yZW5kZXJlcigwKQorICAgICAgICAsIG1fdHJl
ZVNjb3BlKDApCiAgICAgICAgICwgbV9jaGlsZE5vZGVMaXN0KDApCiAgICAgICAgICwgbV90YWJJ
bmRleCgwKQogICAgICAgICAsIG1fdGFiSW5kZXhXYXNTZXRFeHBsaWNpdGx5KGZhbHNlKQpAQCAt
MTk4LDE4ICsxOTksOCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHR5cGVkZWYgSGFz
aE1hcDxjb25zdCBOb2RlKiwgTm9kZVJhcmVEYXRhKj4gTm9kZVJhcmVEYXRhTWFwOwotICAgIAot
ICAgIHN0YXRpYyBOb2RlUmFyZURhdGFNYXAmIHJhcmVEYXRhTWFwKCkKLSAgICB7Ci0gICAgICAg
IHN0YXRpYyBOb2RlUmFyZURhdGFNYXAqIGRhdGFNYXAgPSBuZXcgTm9kZVJhcmVEYXRhTWFwOwot
ICAgICAgICByZXR1cm4gKmRhdGFNYXA7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBOb2RlUmFy
ZURhdGEqIHJhcmVEYXRhRnJvbU1hcChjb25zdCBOb2RlKiBub2RlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHJhcmVEYXRhTWFwKCkuZ2V0KG5vZGUpOwotICAgIH0KKyAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJlcjsgfQorICAgIHZvaWQgc2V0UmVu
ZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgeyBtX3JlbmRlcmVyID0gcmVuZGVyZXI7IH0K
IAogICAgIFRyZWVTY29wZSogdHJlZVNjb3BlKCkgY29uc3QgeyByZXR1cm4gbV90cmVlU2NvcGU7
IH0KICAgICB2b2lkIHNldFRyZWVTY29wZShUcmVlU2NvcGUqIHRyZWVTY29wZSkgeyBtX3RyZWVT
Y29wZSA9IHRyZWVTY29wZTsgfQpAQCAtMzIyLDYgKzMxMyw3IEBAIHByb3RlY3RlZDoKICNlbmRp
ZgogCiBwcml2YXRlOgorICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKICAgICBUcmVlU2Nv
cGUqIG1fdHJlZVNjb3BlOwogICAgIE93blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4gbV9ub2RlTGlz
dHM7CiAgICAgQ2hpbGROb2RlTGlzdCogbV9jaGlsZE5vZGVMaXN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSZW5kZXJTdHlsZS5oCmluZGV4IDFhMmQyYzM0YTE5MTlkYTYxOTI3NmFiYzFjNjkzMzMxYzE5
ZGNmMmIuLjFhNDQ1ZTViNzA2Y2EyZTRiMjk3YTg5M2FkYzVkMGNmYzhhOTNkM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJlbmRlclN0eWxlLmgKQEAgLTM1LDggKzM1LDggQEAgaW5saW5lIFJlbmRl
clN0eWxlKiBOb2RlOjpyZW5kZXJTdHlsZSgpIGNvbnN0CiB7CiAgICAgLy8gVXNpbmcgYSB0ZXJu
YXJ5IGhlcmUgY29uZnVzZXMgdGhlIFNvbGFyaXMgU3R1ZGlvIDEyLzEyLjEvMTIuMiBjb21waWxl
cnM6CiAgICAgLy8gQnVnIGlzIENSIDY1NjkxOTQsICJQcm9ibGVtIHdpdGggcXVlc3Rpb24gb3Bl
cmF0b3IgYmluZGluZyBpbiBpbmxpbmUgZnVuY3Rpb24iCi0gICAgaWYgKG1fcmVuZGVyZXIpIAot
ICAgICAgICByZXR1cm4gbV9yZW5kZXJlci0+c3R5bGUoKTsKKyAgICBpZiAocmVuZGVyZXIoKSkK
KyAgICAgICAgcmV0dXJuIHJlbmRlcmVyKCktPnN0eWxlKCk7CiAgICAgcmV0dXJuIG5vblJlbmRl
cmVyUmVuZGVyU3R5bGUoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170218</attachid>
            <date>2012-10-23 13:25:04 -0700</date>
            <delta_ts>2012-11-01 16:02:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100057-20121023132340.patch</filename>
            <type>text/plain</type>
            <size>12021</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjZhOTBlOWNmZWEyZmZk
MDYwNWViMzY4MWNhNGViZGI3NTg5YTljYi4uYjY1Mjk4ZmU3MDgyYjYxNTdlYTBhNGZmZTMxYWI4
Zjk5MDc2MDQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEwLTIzICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AZ21haWwuY29tPgorCisgICAgICAgIFJlcGxhY2UgTm9kZVJh
cmVEYXRhIGhhc2ggbWFwIHdpdGggYSB1bmlvbiBvbiBtX3JlbmRlcmVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAwNTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUT0RPOiBVcGRhdGUgdGhlIENoYW5n
ZUxvZyBhZnRlciBydW5uaW5nIGJlbmNobWFya3MuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChP
T1BTISkuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
Tm9kZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6ZWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRv
bS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJhcmVEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2xlYXJSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpyZW5kZXJCb3gpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVuZGVyQm94TW9kZWxP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0UmVuZGVyU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9Ob2Rl
Lmg6CisgICAgICAgIChOb2RlUmFyZURhdGFCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVS
YXJlRGF0YUJhc2U6OnJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YUJh
c2U6OnNldFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YUJhc2U6Ok5v
ZGVSYXJlRGF0YUJhc2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpyZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRSZW5kZXJlcik6Cisg
ICAgICAgIChOb2RlKToKKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAgICog
ZG9tL05vZGVSZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVuZGVyU3R5
bGUpOgorCiAyMDEyLTEwLTIyICBWYXJ1biBKYWluICA8dmFydW5qYWluQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBDb250ZXh0IG1lbnUgZ2VuZXJhdGVkIGZyb20gdG91Y2ggZ2VzdHVyZXMgb24g
dGV4dGFyZWFzIGhhcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZTg1YzhmMWMwNzNmZmUx
MGRhMDdjZmI0YmNlM2JjZWI5NDQ0NzNhNi4uNzMxMzE0ZWYxODA4ZTM0ZDcyYTM1MmYwZGQ2NWM2
N2Y3MzE5ZTJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00NzgsNyArNDc4LDYgQEAg
RG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlz
WEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV9pc1ZpZXdTb3VyY2UoZmFsc2UpCiAgICAgLCBt
X3Nhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFjZXMoZmFsc2UpCiAgICAgLCBtX2lzU3JjZG9jRG9j
dW1lbnQoZmFsc2UpCi0gICAgLCBtX2RvY3VtZW50UmFyZURhdGEoMCkKICAgICAsIG1fZXZlbnRR
dWV1ZShEb2N1bWVudEV2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fd2Vha1JlZmVy
ZW5jZShEb2N1bWVudFdlYWtSZWZlcmVuY2U6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1faWRBdHRy
aWJ1dGVOYW1lKGlkQXR0cikKQEAgLTIwMjksMTEgKzIwMjgsNiBAQCB2b2lkIERvY3VtZW50Ojpw
YWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6
ZSwgaW50JgogICAgIG1hcmdpbkxlZnQgPSBzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpID8g
bWFyZ2luTGVmdCA6IGludFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5MZWZ0KCksIHdpZHRo
LCB2aWV3KTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2V0RG9jdW1lbnRSYXJlRGF0YShOb2RlUmFy
ZURhdGEqIHJhcmVEYXRhKQotewotICAgIG1fZG9jdW1lbnRSYXJlRGF0YSA9IHJhcmVEYXRhOwot
fQotCiB2b2lkIERvY3VtZW50OjpzZXRJc1ZpZXdTb3VyY2UoYm9vbCBpc1ZpZXdTb3VyY2UpCiB7
CiAgICAgbV9pc1ZpZXdTb3VyY2UgPSBpc1ZpZXdTb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IDNlZWEwZjBkZGE4MThkMzYxZDBhZTFiZjgwZjE4ODVmMzBlYTUyNzQuLjZkMDA0ZTgzNjcz
MWJiZGU5ZGY0YzFiZjA5MWY2OTk3ZWM5NmU4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0x
MTYsNyArMTE2LDYgQEAgY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKIGNsYXNz
IE5hbWVkRmxvd0NvbGxlY3Rpb247CiBjbGFzcyBOb2RlRmlsdGVyOwogY2xhc3MgTm9kZUl0ZXJh
dG9yOwotY2xhc3MgTm9kZVJhcmVEYXRhOwogY2xhc3MgUGFnZTsKIGNsYXNzIFBsYXRmb3JtTW91
c2VFdmVudDsKIGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjsKQEAgLTQ2Nyw5ICs0NjYsNiBA
QCBwdWJsaWM6CiAKICAgICBib29sIGlzU3JjZG9jRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X2lzU3JjZG9jRG9jdW1lbnQ7IH0KIAotICAgIE5vZGVSYXJlRGF0YSogZG9jdW1lbnRSYXJlRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRSYXJlRGF0YTsgfTsKLSAgICB2b2lkIHNldERv
Y3VtZW50UmFyZURhdGEoTm9kZVJhcmVEYXRhKik7Ci0KICAgICBTdHlsZVJlc29sdmVyKiBzdHls
ZVJlc29sdmVySWZFeGlzdHMoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlUmVzb2x2ZXIuZ2V0KCk7
IH0KIAogICAgIGJvb2wgaXNWaWV3U291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZpZXdTb3Vy
Y2U7IH0KQEAgLTE0MzQsOCArMTQzMCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nhd0VsZW1l
bnRzSW5Lbm93bk5hbWVzcGFjZXM7CiAgICAgYm9vbCBtX2lzU3JjZG9jRG9jdW1lbnQ7CiAKLSAg
ICBOb2RlUmFyZURhdGEqIG1fZG9jdW1lbnRSYXJlRGF0YTsKLQogICAgIFJlZlB0cjxEb2N1bWVu
dEV2ZW50UXVldWU+IG1fZXZlbnRRdWV1ZTsKIAogICAgIFJlZlB0cjxEb2N1bWVudFdlYWtSZWZl
cmVuY2U+IG1fd2Vha1JlZmVyZW5jZTsKQEAgLTE1MzUsNyArMTUyOSw2IEBAIGlubGluZSBOb2Rl
OjpOb2RlKERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQogICAgICwg
bV9kb2N1bWVudChkb2N1bWVudCkKICAgICAsIG1fcHJldmlvdXMoMCkKICAgICAsIG1fbmV4dCgw
KQotICAgICwgbV9yZW5kZXJlcigwKQogewogICAgIGlmIChkb2N1bWVudCkKICAgICAgICAgZG9j
dW1lbnQtPmd1YXJkUmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggOTdkYzljOWY2NTA2
MGRlYzc0MmE3NmIzMDc1YTA3ODRhMGRiYTc4My4uZTM2ZWE4Njg1ZDk3YmI5NzcwODJmYmE5MTRh
NGExZjJhNDgyMGQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTUzLDkgKzE1Myw5IEBA
IEVsZW1lbnQ6On5FbGVtZW50KCkKIGlubGluZSBFbGVtZW50UmFyZURhdGEqIEVsZW1lbnQ6OmVs
ZW1lbnRSYXJlRGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50UmFyZURhdGEqPihOb2RlUmFyZURhdGE6OnJhcmVE
YXRhRnJvbU1hcCh0aGlzKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRSYXJlRGF0
YSo+KHJhcmVEYXRhKCkpOwogfQotICAgIAorCiBpbmxpbmUgRWxlbWVudFJhcmVEYXRhKiBFbGVt
ZW50OjplbnN1cmVFbGVtZW50UmFyZURhdGEoKQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxF
bGVtZW50UmFyZURhdGEqPihlbnN1cmVSYXJlRGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA4
ZDk5MWExMzA1ZTgzZGRmYjEzMmVlYWNjZTc4OWExMWNjNGY4ZjE3Li41OTJmNTA0MDI1MTJjNjYx
MTM2OWQ3ZDM2ODdiNjNiNDQzOWY0OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00NjksOSArNDY5
LDggQEAgVHJlZVNjb3BlKiBOb2RlOjp0cmVlU2NvcGUoKSBjb25zdAogTm9kZVJhcmVEYXRhKiBO
b2RlOjpyYXJlRGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwotICAg
IE5vZGVSYXJlRGF0YSogZGF0YSA9IGlzRG9jdW1lbnROb2RlKCkgPyBzdGF0aWNfY2FzdDxjb25z
dCBEb2N1bWVudCo+KHRoaXMpLT5kb2N1bWVudFJhcmVEYXRhKCkgOiBOb2RlUmFyZURhdGE6OnJh
cmVEYXRhRnJvbU1hcCh0aGlzKTsKLSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7
CisgICAgQVNTRVJUKG1fZGF0YS5tX3JhcmVEYXRhKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Tm9kZVJhcmVEYXRhKj4obV9kYXRhLm1fcmFyZURhdGEpOwogfQogCiBOb2RlUmFyZURhdGEqIE5v
ZGU6OmVuc3VyZVJhcmVEYXRhKCkKQEAgLTQ4MCwxOCArNDc5LDEyIEBAIE5vZGVSYXJlRGF0YSog
Tm9kZTo6ZW5zdXJlUmFyZURhdGEoKQogICAgICAgICByZXR1cm4gcmFyZURhdGEoKTsKIAogICAg
IE5vZGVSYXJlRGF0YSogZGF0YSA9IGNyZWF0ZVJhcmVEYXRhKCkubGVha1B0cigpOwotICAgIGlm
IChpc0RvY3VtZW50Tm9kZSgpKSB7Ci0gICAgICAgIC8vIEZhc3QgcGF0aCBmb3IgYSBEb2N1bWVu
dC4gQSBEb2N1bWVudCBrbm93cyBhIHBvaW50ZXIgdG8gTm9kZVJhcmVEYXRhLgotICAgICAgICBB
U1NFUlQoIXN0YXRpY19jYXN0PERvY3VtZW50Kj4odGhpcyktPmRvY3VtZW50UmFyZURhdGEoKSk7
Ci0gICAgICAgIHN0YXRpY19jYXN0PERvY3VtZW50Kj4odGhpcyktPnNldERvY3VtZW50UmFyZURh
dGEoZGF0YSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKCFOb2RlUmFyZURhdGE6OnJh
cmVEYXRhTWFwKCkuY29udGFpbnModGhpcykpOwotICAgICAgICBOb2RlUmFyZURhdGE6OnJhcmVE
YXRhTWFwKCkuc2V0KHRoaXMsIGRhdGEpOwotICAgIH0KKyAgICBkYXRhLT5zZXRSZW5kZXJlciht
X2RhdGEubV9yZW5kZXJlcik7CisgICAgbV9kYXRhLm1fcmFyZURhdGEgPSBkYXRhOwogICAgIHNl
dEZsYWcoSGFzUmFyZURhdGFGbGFnKTsKICAgICByZXR1cm4gZGF0YTsKIH0KLSAgICAKKwogT3du
UHRyPE5vZGVSYXJlRGF0YT4gTm9kZTo6Y3JlYXRlUmFyZURhdGEoKQogewogICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgTm9kZVJhcmVEYXRhKTsKQEAgLTUwNSwxOSArNDk4LDkgQEAgdm9pZCBOb2Rl
OjpjbGVhclJhcmVEYXRhKCkKICAgICBBU1NFUlQoIXRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJS
ZWdpc3RyeSgpIHx8IHRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpLT5pc0VtcHR5
KCkpOwogI2VuZGlmCiAKLSAgICBpZiAoaXNEb2N1bWVudE5vZGUoKSkgewotICAgICAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHRoaXMpOwotICAgICAgICBO
b2RlUmFyZURhdGEqIGRhdGEgPSBkb2N1bWVudC0+ZG9jdW1lbnRSYXJlRGF0YSgpOwotICAgICAg
ICBBU1NFUlQoZGF0YSk7Ci0gICAgICAgIGRlbGV0ZSBkYXRhOwotICAgICAgICBkb2N1bWVudC0+
c2V0RG9jdW1lbnRSYXJlRGF0YSgwKTsKLSAgICB9IGVsc2UgewotICAgICAgICBOb2RlUmFyZURh
dGE6Ok5vZGVSYXJlRGF0YU1hcCYgZGF0YU1hcCA9IE5vZGVSYXJlRGF0YTo6cmFyZURhdGFNYXAo
KTsKLSAgICAgICAgTm9kZVJhcmVEYXRhOjpOb2RlUmFyZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0g
ZGF0YU1hcC5maW5kKHRoaXMpOwotICAgICAgICBBU1NFUlQoaXQgIT0gZGF0YU1hcC5lbmQoKSk7
Ci0gICAgICAgIGRlbGV0ZSBpdC0+dmFsdWU7Ci0gICAgICAgIGRhdGFNYXAucmVtb3ZlKGl0KTsK
LSAgICB9CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZGF0YS5tX3JhcmVEYXRhLT5y
ZW5kZXJlcigpOworICAgIGRlbGV0ZSBtX2RhdGEubV9yYXJlRGF0YTsKKyAgICBtX2RhdGEubV9y
ZW5kZXJlciA9IHJlbmRlcmVyOwogICAgIGNsZWFyRmxhZyhIYXNSYXJlRGF0YUZsYWcpOwogfQog
CkBAIC03ODksMTIgKzc3MiwxNCBAQCBib29sIE5vZGU6OnNob3VsZFVzZUlucHV0TWV0aG9kKCkK
IAogUmVuZGVyQm94KiBOb2RlOjpyZW5kZXJCb3goKSBjb25zdAogewotICAgIHJldHVybiBtX3Jl
bmRlcmVyICYmIG1fcmVuZGVyZXItPmlzQm94KCkgPyB0b1JlbmRlckJveChtX3JlbmRlcmVyKSA6
IDA7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAg
cmV0dXJuIHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0JveCgpID8gdG9SZW5kZXJCb3gocmVuZGVy
ZXIpIDogMDsKIH0KIAogUmVuZGVyQm94TW9kZWxPYmplY3QqIE5vZGU6OnJlbmRlckJveE1vZGVs
T2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9yZW5kZXJlciAmJiBtX3JlbmRlcmVyLT5p
c0JveE1vZGVsT2JqZWN0KCkgPyB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG1fcmVuZGVyZXIpIDog
MDsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBy
ZXR1cm4gcmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94TW9kZWxPYmplY3QoKSA/IHRvUmVuZGVy
Qm94TW9kZWxPYmplY3QocmVuZGVyZXIpIDogMDsKIH0KIAogTGF5b3V0UmVjdCBOb2RlOjpib3Vu
ZGluZ0JveCgpIGNvbnN0CkBAIC0xNDIzLDggKzE0MDgsOCBAQCBSZW5kZXJTdHlsZSogTm9kZTo6
bm9uUmVuZGVyZXJSZW5kZXJTdHlsZSgpIGNvbnN0CiAKIHZvaWQgTm9kZTo6c2V0UmVuZGVyU3R5
bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gcykKIHsKLSAgICBpZiAobV9yZW5kZXJlcikKLSAg
ICAgICAgbV9yZW5kZXJlci0+c2V0QW5pbWF0YWJsZVN0eWxlKHMpOyAKKyAgICBpZiAoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAgIHJlbmRlcmVyLT5z
ZXRBbmltYXRhYmxlU3R5bGUocyk7CiB9CiAKIFJlbmRlclN0eWxlKiBOb2RlOjp2aXJ0dWFsQ29t
cHV0ZWRTdHlsZShQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKQpAQCAtMjgzNyw4ICsy
ODIyLDggQEAgdm9pZCBOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIGluZm8uYWRkTWVtYmVyKG1fZG9jdW1lbnQpOwog
ICAgIGluZm8uYWRkTWVtYmVyKG1fbmV4dCk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9wcmV2aW91
cyk7Ci0gICAgaWYgKG1fcmVuZGVyZXIpCi0gICAgICAgIGluZm8uYWRkTWVtYmVyKG1fcmVuZGVy
ZXItPnN0eWxlKCkpOworICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVu
ZGVyZXIoKSkKKyAgICAgICAgaW5mby5hZGRNZW1iZXIocmVuZGVyZXItPnN0eWxlKCkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA1ZDg2NDBjYmU1NzU2N2Jj
YWI2NTMwNjk2YjFlNmVmMzRkMGFmMjQ5Li4wMWNhMzU1NzEwNzJiYmQ0ZTYzNTRjM2RlN2JhZjg5
YjVhZTc0ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTExMSw2ICsxMTEsMTYgQEAgZW51bSBTdHlsZUNo
YW5nZVR5cGUgewogICAgIFN5bnRoZXRpY1N0eWxlQ2hhbmdlID0gMyA8PCBub2RlU3R5bGVDaGFu
Z2VTaGlmdAogfTsKIAorY2xhc3MgTm9kZVJhcmVEYXRhQmFzZSB7CitwdWJsaWM6CisgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KKyAgICB2
b2lkIHNldFJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJl
bmRlcmVyOyB9Citwcm90ZWN0ZWQ6CisgICAgTm9kZVJhcmVEYXRhQmFzZSgpIHsgfQorcHJpdmF0
ZToKKyAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7Cit9OworCiBjbGFzcyBOb2RlIDogcHVi
bGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgVHJlZVNoYXJl
ZDxOb2RlLCBDb250YWluZXJOb2RlPiB7CiAgICAgZnJpZW5kIGNsYXNzIERvY3VtZW50OwogICAg
IGZyaWVuZCBjbGFzcyBUcmVlU2NvcGU7CkBAIC01MDAsOSArNTEwLDE1IEBAIHB1YmxpYzoKICAg
ICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIC8vIEludGVncmF0aW9uIHdpdGggcmVuZGVy
aW5nIHRyZWUKIAotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBt
X3JlbmRlcmVyOyB9Ci0gICAgdm9pZCBzZXRSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KSB7IG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgfQotICAgIAorICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0YSgpID8gbV9kYXRhLm1fcmFyZURhdGEt
PnJlbmRlcmVyKCkgOiBtX2RhdGEubV9yZW5kZXJlcjsgfTsKKyAgICB2b2lkIHNldFJlbmRlcmVy
KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCisgICAgeworICAgICAgICBpZiAoaGFzUmFyZURhdGEo
KSkKKyAgICAgICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5zZXRSZW5kZXJlcihyZW5kZXJlcik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZGF0YS5tX3JlbmRlcmVyID0gcmVuZGVyZXI7
CisgICAgfQorCiAgICAgLy8gVXNlIHRoZXNlIHR3byBtZXRob2RzIHdpdGggY2F1dGlvbi4KICAg
ICBSZW5kZXJCb3gqIHJlbmRlckJveCgpIGNvbnN0OwogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0
KiByZW5kZXJCb3hNb2RlbE9iamVjdCgpIGNvbnN0OwpAQCAtODExLDcgKzgyNywxMiBAQCBwcml2
YXRlOgogICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwogICAgIE5vZGUqIG1fcHJldmlvdXM7CiAg
ICAgTm9kZSogbV9uZXh0OwotICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKKyAgICAvLyBX
aGVuIGEgbm9kZSBoYXMgcmFyZSBkYXRhIHdlIG1vdmUgdGhlIHJlbmRlcmVyIGludG8gdGhlIHJh
cmUgZGF0YS4KKyAgICB1bmlvbiBEYXRhVW5pb24geworICAgICAgICBEYXRhVW5pb24oKSA6IG1f
cmVuZGVyZXIoMCkgeyB9CisgICAgICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKKyAgICAg
ICAgTm9kZVJhcmVEYXRhQmFzZSogbV9yYXJlRGF0YTsKKyAgICB9IG1fZGF0YTsKIAogcHVibGlj
OgogICAgIGJvb2wgaXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCkgY29uc3QgeyByZXR1cm4gZ2V0Rmxh
ZyhJc1N0eWxlQXR0cmlidXRlVmFsaWRGbGFnKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5o
CmluZGV4IDViM2E1ODNiMGQyMjllOGRiZWJlZTIxY2Q2NDJkYzJjNzcwZjM0NDIuLjQ0Y2Y4ZWZk
NjBmMTVjZDVmODdlNmM1NjBlZTJiYjI4ZTg4ODYzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVE
YXRhLmgKQEAgLTE3Niw3ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIFRhZ05vZGVMaXN0Q2FjaGVO
UyBtX3RhZ05vZGVMaXN0Q2FjaGVOUzsKIH07CiAKLWNsYXNzIE5vZGVSYXJlRGF0YSB7CitjbGFz
cyBOb2RlUmFyZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhQmFzZSB7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoTm9kZVJhcmVEYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6ICAgIAogICAgIE5vZGVSYXJlRGF0YSgpCkBAIC0xOTgsMTkgKzE5OCw2IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgfQogCi0gICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IE5vZGUqLCBOb2RlUmFy
ZURhdGEqPiBOb2RlUmFyZURhdGFNYXA7Ci0gICAgCi0gICAgc3RhdGljIE5vZGVSYXJlRGF0YU1h
cCYgcmFyZURhdGFNYXAoKQotICAgIHsKLSAgICAgICAgc3RhdGljIE5vZGVSYXJlRGF0YU1hcCog
ZGF0YU1hcCA9IG5ldyBOb2RlUmFyZURhdGFNYXA7Ci0gICAgICAgIHJldHVybiAqZGF0YU1hcDsK
LSAgICB9Ci0gICAgCi0gICAgc3RhdGljIE5vZGVSYXJlRGF0YSogcmFyZURhdGFGcm9tTWFwKGNv
bnN0IE5vZGUqIG5vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gcmFyZURhdGFNYXAoKS5nZXQo
bm9kZSk7Ci0gICAgfQotCiAgICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBjb25zdCB7IHJldHVy
biBtX3RyZWVTY29wZTsgfQogICAgIHZvaWQgc2V0VHJlZVNjb3BlKFRyZWVTY29wZSogdHJlZVNj
b3BlKSB7IG1fdHJlZVNjb3BlID0gdHJlZVNjb3BlOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZVJlbmRlclN0eWxlLmgKaW5kZXggMWEyZDJjMzRhMTkxOWRhNjE5Mjc2YWJjMWM2OTMzMzFjMTlk
Y2YyYi4uNTVkNTAzMDY4YTEzNmVkZmM1OTVjODQwODJiODlhZTBhZjUxZTU2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlUmVuZGVyU3R5bGUuaApAQCAtMzUsOCArMzUsOCBAQCBpbmxpbmUgUmVuZGVy
U3R5bGUqIE5vZGU6OnJlbmRlclN0eWxlKCkgY29uc3QKIHsKICAgICAvLyBVc2luZyBhIHRlcm5h
cnkgaGVyZSBjb25mdXNlcyB0aGUgU29sYXJpcyBTdHVkaW8gMTIvMTIuMS8xMi4yIGNvbXBpbGVy
czoKICAgICAvLyBCdWcgaXMgQ1IgNjU2OTE5NCwgIlByb2JsZW0gd2l0aCBxdWVzdGlvbiBvcGVy
YXRvciBiaW5kaW5nIGluIGlubGluZSBmdW5jdGlvbiIKLSAgICBpZiAobV9yZW5kZXJlcikgCi0g
ICAgICAgIHJldHVybiBtX3JlbmRlcmVyLT5zdHlsZSgpOworICAgIGlmIChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVyLT5z
dHlsZSgpOwogICAgIHJldHVybiBub25SZW5kZXJlclJlbmRlclN0eWxlKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171948</attachid>
            <date>2012-11-01 16:02:18 -0700</date>
            <delta_ts>2012-11-01 17:56:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100057-20121101160039.patch</filename>
            <type>text/plain</type>
            <size>13741</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzhmN2U0MDM2YjFmYWZl
ZGE5N2RjNmM2NTk2MDUxMzIwOWI5OWQwOC4uYTRiOWI1NmM0YTQ1MWRlMDg4ODMyZWVhOWNiMzM1
OGRlOGFmNGE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTExLTAxICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlcGxhY2UgTm9k
ZVJhcmVEYXRhIGhhc2ggbWFwIHdpdGggYSB1bmlvbiBvbiBtX3JlbmRlcmVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAwNTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYSB1bmlvbiBvbiBOb2Rl
OjptX3JlbmRlcmVyIGJldHdlZW4gTm9kZVJhcmVEYXRhKiBhbmQgUmVuZGVyT2JqZWN0Ki4gVGhp
cyByZW1vdmVzCisgICAgICAgIHRoZSBvdmVyaGVhZCBvZiBhY2Nlc3NpbmcgcmFyZSBkYXRhIGFu
ZCB0aGUgbWVtb3J5IGZyb20gdGhlIG1hcC4gV2Ugbm93IGdldCB0aGUgNSUKKyAgICAgICAgcGVy
Zm9ybWFuY2UgaW5jcmVhc2Ugb2JzZXJ2ZWQgaW4gQnVnIDkwMDU5IGJ1dCB3aGVuIGFjY2Vzc2lu
ZyBub2RlIGxpc3RzIG9uIGFueSBub2RlLgorCisgICAgICAgIEJ5IHJlbW92aW5nIHRoZSBvdmVy
aGVhZCBvZiByYXJlRGF0YSgpIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIHRoZSBwZXJmb3JtYW5jZSBp
c3N1ZXMKKyAgICAgICAgcmFpc2VkIGluIEJ1Z3MgNzM4NTMsIDg3MDM0IGFuZCA4OTYzNS4KKwor
ICAgICAgICBUaGlzIGlzIGFsc28gYSAxNSUgaW1wcm92ZW1lbnQgb24gUGFyc2VyL3RleHRhcmVh
LXBhcnNpbmcuaHRtbAorCisgICAgICAgIEkgcmFuIFBhcnNlci9odG1sNS1mdWxsLXJlbmRlci5o
dG1sIGFuZCB0aGVyZSB3YXMgbm8gcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBhZnRlcgorICAgICAg
ICB0dW5pbmcgVGV4dDo6cmVjYWxjVGV4dFN0eWxlIGFuZCB0aGUgcmVmYWN0b3IgdGhhdCB3YXMg
ZG9uZSBpbiByMTMyNjg0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBqdXN0IGEg
cmVmYWN0b3IuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6Ok5vZGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmFyZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6ZW5zdXJlUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
Y2xlYXJSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZW5kZXJCb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVuZGVyQm94TW9kZWxPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6Cisg
ICAgICAgIChOb2RlUmFyZURhdGFCYXNlKToKKyAgICAgICAgICBCYXNlIGNsYXNzIGZvciBOb2Rl
UmFyZURhdGEgdGhhdCBrbm93cyBhYm91dCB0aGUgcmVuZGVyZXIgc28gd2UgY2FuCisgICAgICAg
ICAgaW5saW5lIHRoZSBhY2Nlc3NlcyBpbiBOb2RlLmgKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVS
YXJlRGF0YUJhc2U6OnJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YUJh
c2U6OnNldFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YUJhc2U6On5O
b2RlUmFyZURhdGFCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YUJhc2U6Ok5v
ZGVSYXJlRGF0YUJhc2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpyZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRSZW5kZXJlcik6Cisg
ICAgICAgIChOb2RlKToKKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAgICog
ZG9tL05vZGVSZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVuZGVyU3R5
bGUpOgorICAgICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHQ6OnJl
Y2FsY1RleHRTdHlsZSk6CisgICAgICAgICAgVGhpcyBtZXRob2QgYXBwZWFycyB2ZXJ5IGhvdCBp
biBodG1sNS1mdWxsLXJlbmRlci5odG1sIGFuZCBhY2Nlc3NpbmcgdGhlCisgICAgICAgICAgcmVu
ZGVyZXIgNCB0aW1lcyBjYXVzZWQgYSAyJSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIHdpdGggdGhp
cyBwYXRjaC4gSQorICAgICAgICAgIHJlZHVjZWQgaXQgdG8gMSBhY2Nlc3MgYW5kIHRoZXJlJ3Mg
bm8gbG9uZ2VyIGFueSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uLgorCiAyMDEyLTExLTAxICBBbGV4
YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIFNoYWRl
cnNdIE1vdmUgTWVzaEJveFR5cGUgb3V0IG9mIEN1c3RvbUZpbHRlck9wZXJhdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggMmI0YzY3MTZlZmI5YjE4ZTlhMDhjYWJmOTQzMDZlMTg1Y2Vi
YjJhNy4uYTQ3YzVhY2JkNjI2ZDU2ZDJkMzE4MjhkZjRmYmZmZWUxMDM0ZGNhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC00NzksNyArNDc5LDYgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZy
YW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQog
ICAgICwgbV9pc1ZpZXdTb3VyY2UoZmFsc2UpCiAgICAgLCBtX3Nhd0VsZW1lbnRzSW5Lbm93bk5h
bWVzcGFjZXMoZmFsc2UpCiAgICAgLCBtX2lzU3JjZG9jRG9jdW1lbnQoZmFsc2UpCi0gICAgLCBt
X2RvY3VtZW50UmFyZURhdGEoMCkKICAgICAsIG1fZXZlbnRRdWV1ZShEb2N1bWVudEV2ZW50UXVl
dWU6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fd2Vha1JlZmVyZW5jZShEb2N1bWVudFdlYWtSZWZl
cmVuY2U6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1faWRBdHRyaWJ1dGVOYW1lKGlkQXR0cikKQEAg
LTIwMzAsMTEgKzIwMjksNiBAQCB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBp
eGVscyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JgogICAgIG1hcmdpbkxl
ZnQgPSBzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpID8gbWFyZ2luTGVmdCA6IGludFZhbHVl
Rm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5MZWZ0KCksIHdpZHRoLCB2aWV3KTsKIH0KIAotdm9pZCBE
b2N1bWVudDo6c2V0RG9jdW1lbnRSYXJlRGF0YShOb2RlUmFyZURhdGEqIHJhcmVEYXRhKQotewot
ICAgIG1fZG9jdW1lbnRSYXJlRGF0YSA9IHJhcmVEYXRhOwotfQotCiB2b2lkIERvY3VtZW50Ojpz
ZXRJc1ZpZXdTb3VyY2UoYm9vbCBpc1ZpZXdTb3VyY2UpCiB7CiAgICAgbV9pc1ZpZXdTb3VyY2Ug
PSBpc1ZpZXdTb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGM5YzNjN2M4ZWM0MDYxOWIz
YzBjYTU4MDJhN2Q1MzdhNjg1NDkyMDAuLjg1Y2NkNzE0NDlkY2Y4MTU3MzYzZmQyNThhNTU4OTVm
YWUwNzQ2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTYsNyArMTE2LDYgQEAgY2xhc3Mg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKIGNsYXNzIE5hbWVkRmxvd0NvbGxlY3Rpb247
CiBjbGFzcyBOb2RlRmlsdGVyOwogY2xhc3MgTm9kZUl0ZXJhdG9yOwotY2xhc3MgTm9kZVJhcmVE
YXRhOwogY2xhc3MgUGFnZTsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFByb2Nl
c3NpbmdJbnN0cnVjdGlvbjsKQEAgLTQ2Nyw5ICs0NjYsNiBAQCBwdWJsaWM6CiAKICAgICBib29s
IGlzU3JjZG9jRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lzU3JjZG9jRG9jdW1lbnQ7IH0K
IAotICAgIE5vZGVSYXJlRGF0YSogZG9jdW1lbnRSYXJlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZG9jdW1lbnRSYXJlRGF0YTsgfTsKLSAgICB2b2lkIHNldERvY3VtZW50UmFyZURhdGEoTm9kZVJh
cmVEYXRhKik7Ci0KICAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVySWZFeGlzdHMoKSBj
b25zdCB7IHJldHVybiBtX3N0eWxlUmVzb2x2ZXIuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNWaWV3
U291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZpZXdTb3VyY2U7IH0KQEAgLTE0MzQsOCArMTQz
MCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFjZXM7
CiAgICAgYm9vbCBtX2lzU3JjZG9jRG9jdW1lbnQ7CiAKLSAgICBOb2RlUmFyZURhdGEqIG1fZG9j
dW1lbnRSYXJlRGF0YTsKLQogICAgIFJlZlB0cjxEb2N1bWVudEV2ZW50UXVldWU+IG1fZXZlbnRR
dWV1ZTsKIAogICAgIFJlZlB0cjxEb2N1bWVudFdlYWtSZWZlcmVuY2U+IG1fd2Vha1JlZmVyZW5j
ZTsKQEAgLTE1MzUsNyArMTUyOSw2IEBAIGlubGluZSBOb2RlOjpOb2RlKERvY3VtZW50KiBkb2N1
bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQogICAgICwgbV9kb2N1bWVudChkb2N1bWVudCkK
ICAgICAsIG1fcHJldmlvdXMoMCkKICAgICAsIG1fbmV4dCgwKQotICAgICwgbV9yZW5kZXJlcigw
KQogewogICAgIGlmIChkb2N1bWVudCkKICAgICAgICAgZG9jdW1lbnQtPmd1YXJkUmVmKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZWIxMjMwODcyNDE3ODljYjk0MDZlMjNmNTk2MTg3ZTdi
YTdiMDY0ZC4uMmZkZDY3YjZmNzExNjMwNDhkYzU2MmQ2ZGY0YmZlOTJmNzNhZTQxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcApAQCAtMTU0LDkgKzE1NCw5IEBAIEVsZW1lbnQ6On5FbGVtZW50KCkK
IGlubGluZSBFbGVtZW50UmFyZURhdGEqIEVsZW1lbnQ6OmVsZW1lbnRSYXJlRGF0YSgpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxF
bGVtZW50UmFyZURhdGEqPihOb2RlUmFyZURhdGE6OnJhcmVEYXRhRnJvbU1hcCh0aGlzKSk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRSYXJlRGF0YSo+KHJhcmVEYXRhKCkpOwogfQot
ICAgIAorCiBpbmxpbmUgRWxlbWVudFJhcmVEYXRhKiBFbGVtZW50OjplbnN1cmVFbGVtZW50UmFy
ZURhdGEoKQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50UmFyZURhdGEqPihlbnN1
cmVSYXJlRGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAxZDcxYWIwZDIxMWI4ZDVjMWMwNTBh
YmMwYzc3YzNmYmJmYjI5NWVhLi45ZjYwMjljNTdhNTY3OGIzMzU2ZTFkNzI2MjQ5YWYzODgyM2Y0
ZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC00NzAsOSArNDcwLDcgQEAgVHJlZVNjb3BlKiBOb2Rl
Ojp0cmVlU2NvcGUoKSBjb25zdAogTm9kZVJhcmVEYXRhKiBOb2RlOjpyYXJlRGF0YSgpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwotICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9
IGlzRG9jdW1lbnROb2RlKCkgPyBzdGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudCo+KHRoaXMpLT5k
b2N1bWVudFJhcmVEYXRhKCkgOiBOb2RlUmFyZURhdGE6OnJhcmVEYXRhRnJvbU1hcCh0aGlzKTsK
LSAgICBBU1NFUlQoZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PE5vZGVSYXJlRGF0YSo+KG1fZGF0YS5tX3JhcmVEYXRhKTsKIH0KIAogTm9kZVJhcmVEYXRh
KiBOb2RlOjplbnN1cmVSYXJlRGF0YSgpCkBAIC00ODEsMTggKzQ3OSwxMyBAQCBOb2RlUmFyZURh
dGEqIE5vZGU6OmVuc3VyZVJhcmVEYXRhKCkKICAgICAgICAgcmV0dXJuIHJhcmVEYXRhKCk7CiAK
ICAgICBOb2RlUmFyZURhdGEqIGRhdGEgPSBjcmVhdGVSYXJlRGF0YSgpLmxlYWtQdHIoKTsKLSAg
ICBpZiAoaXNEb2N1bWVudE5vZGUoKSkgewotICAgICAgICAvLyBGYXN0IHBhdGggZm9yIGEgRG9j
dW1lbnQuIEEgRG9jdW1lbnQga25vd3MgYSBwb2ludGVyIHRvIE5vZGVSYXJlRGF0YS4KLSAgICAg
ICAgQVNTRVJUKCFzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHRoaXMpLT5kb2N1bWVudFJhcmVEYXRh
KCkpOwotICAgICAgICBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHRoaXMpLT5zZXREb2N1bWVudFJh
cmVEYXRhKGRhdGEpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVCghTm9kZVJhcmVEYXRh
OjpyYXJlRGF0YU1hcCgpLmNvbnRhaW5zKHRoaXMpKTsKLSAgICAgICAgTm9kZVJhcmVEYXRhOjpy
YXJlRGF0YU1hcCgpLnNldCh0aGlzLCBkYXRhKTsKLSAgICB9CisgICAgQVNTRVJUKGRhdGEpOwor
ICAgIGRhdGEtPnNldFJlbmRlcmVyKG1fZGF0YS5tX3JlbmRlcmVyKTsKKyAgICBtX2RhdGEubV9y
YXJlRGF0YSA9IGRhdGE7CiAgICAgc2V0RmxhZyhIYXNSYXJlRGF0YUZsYWcpOwogICAgIHJldHVy
biBkYXRhOwogfQotICAgIAorCiBPd25QdHI8Tm9kZVJhcmVEYXRhPiBOb2RlOjpjcmVhdGVSYXJl
RGF0YSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBOb2RlUmFyZURhdGEpOwpAQCAtNTA2
LDE5ICs0OTksOSBAQCB2b2lkIE5vZGU6OmNsZWFyUmFyZURhdGEoKQogICAgIEFTU0VSVCghdHJh
bnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkgfHwgdHJhbnNpZW50TXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJ5KCktPmlzRW1wdHkoKSk7CiAjZW5kaWYKIAotICAgIGlmIChpc0RvY3VtZW50
Tm9kZSgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3Vt
ZW50Kj4odGhpcyk7Ci0gICAgICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IGRvY3VtZW50LT5kb2N1
bWVudFJhcmVEYXRhKCk7Ci0gICAgICAgIEFTU0VSVChkYXRhKTsKLSAgICAgICAgZGVsZXRlIGRh
dGE7Ci0gICAgICAgIGRvY3VtZW50LT5zZXREb2N1bWVudFJhcmVEYXRhKDApOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIE5vZGVSYXJlRGF0YTo6Tm9kZVJhcmVEYXRhTWFwJiBkYXRhTWFwID0gTm9k
ZVJhcmVEYXRhOjpyYXJlRGF0YU1hcCgpOwotICAgICAgICBOb2RlUmFyZURhdGE6Ok5vZGVSYXJl
RGF0YU1hcDo6aXRlcmF0b3IgaXQgPSBkYXRhTWFwLmZpbmQodGhpcyk7Ci0gICAgICAgIEFTU0VS
VChpdCAhPSBkYXRhTWFwLmVuZCgpKTsKLSAgICAgICAgZGVsZXRlIGl0LT52YWx1ZTsKLSAgICAg
ICAgZGF0YU1hcC5yZW1vdmUoaXQpOwotICAgIH0KKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gbV9kYXRhLm1fcmFyZURhdGEtPnJlbmRlcmVyKCk7CisgICAgZGVsZXRlIG1fZGF0YS5tX3Jh
cmVEYXRhOworICAgIG1fZGF0YS5tX3JlbmRlcmVyID0gcmVuZGVyZXI7CiAgICAgY2xlYXJGbGFn
KEhhc1JhcmVEYXRhRmxhZyk7CiB9CiAKQEAgLTc5NiwxMiArNzc5LDE0IEBAIGJvb2wgTm9kZTo6
c2hvdWxkVXNlSW5wdXRNZXRob2QoKQogCiBSZW5kZXJCb3gqIE5vZGU6OnJlbmRlckJveCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fcmVuZGVyZXIgJiYgbV9yZW5kZXJlci0+aXNCb3goKSA/IHRv
UmVuZGVyQm94KG1fcmVuZGVyZXIpIDogMDsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
dGhpcy0+cmVuZGVyZXIoKTsKKyAgICByZXR1cm4gcmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94
KCkgPyB0b1JlbmRlckJveChyZW5kZXJlcikgOiAwOwogfQogCiBSZW5kZXJCb3hNb2RlbE9iamVj
dCogTm9kZTo6cmVuZGVyQm94TW9kZWxPYmplY3QoKSBjb25zdAogewotICAgIHJldHVybiBtX3Jl
bmRlcmVyICYmIG1fcmVuZGVyZXItPmlzQm94TW9kZWxPYmplY3QoKSA/IHRvUmVuZGVyQm94TW9k
ZWxPYmplY3QobV9yZW5kZXJlcikgOiAwOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0
aGlzLT5yZW5kZXJlcigpOworICAgIHJldHVybiByZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3hN
b2RlbE9iamVjdCgpID8gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlcikgOiAwOwogfQog
CiBMYXlvdXRSZWN0IE5vZGU6OmJvdW5kaW5nQm94KCkgY29uc3QKQEAgLTI4MjgsOCArMjgxMyw4
IEBAIHZvaWQgTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKICAgICBpbmZvLmFkZE1lbWJlcihtX2RvY3VtZW50KTsKICAgICBp
bmZvLmFkZE1lbWJlcihtX25leHQpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcHJldmlvdXMpOwot
ICAgIGlmIChtX3JlbmRlcmVyKQotICAgICAgICBpbmZvLmFkZE1lbWJlcihtX3JlbmRlcmVyLT5z
dHlsZSgpKTsKKyAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCkpCisgICAgICAgIGluZm8uYWRkTWVtYmVyKHJlbmRlcmVyLT5zdHlsZSgpKTsKIH0KIAogdm9p
ZCBOb2RlOjp0ZXh0UmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cykgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
CmluZGV4IDE2OWMxYzFhNTAyNGNiN2VjYzI5NDgwYzk5ZjQ0OTIyYTllMjhjNjguLmQ5ODk2NjQz
NmNjZmMzMWM2MjkwNWQ0ODU3ZGNmODA4NzFjMGNkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMTExLDYg
KzExMSwxNyBAQCBlbnVtIFN0eWxlQ2hhbmdlVHlwZSB7CiAgICAgU3ludGhldGljU3R5bGVDaGFu
Z2UgPSAzIDw8IG5vZGVTdHlsZUNoYW5nZVNoaWZ0CiB9OwogCitjbGFzcyBOb2RlUmFyZURhdGFC
YXNlIHsKK3B1YmxpYzoKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1
cm4gbV9yZW5kZXJlcjsgfQorICAgIHZvaWQgc2V0UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlcikgeyBtX3JlbmRlcmVyID0gcmVuZGVyZXI7IH0KKyAgICB2aXJ0dWFsIH5Ob2RlUmFyZURh
dGFCYXNlKCkgeyB9Citwcm90ZWN0ZWQ6CisgICAgTm9kZVJhcmVEYXRhQmFzZSgpIHsgfQorcHJp
dmF0ZToKKyAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7Cit9OworCiBjbGFzcyBOb2RlIDog
cHVibGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgVHJlZVNo
YXJlZDxOb2RlLCBDb250YWluZXJOb2RlPiB7CiAgICAgZnJpZW5kIGNsYXNzIERvY3VtZW50Owog
ICAgIGZyaWVuZCBjbGFzcyBUcmVlU2NvcGU7CkBAIC01MDMsOSArNTE0LDE1IEBAIHB1YmxpYzoK
ICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIC8vIEludGVncmF0aW9uIHdpdGggcmVu
ZGVyaW5nIHRyZWUKIAotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVy
biBtX3JlbmRlcmVyOyB9Ci0gICAgdm9pZCBzZXRSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKSB7IG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgfQotICAgIAorICAgIFJlbmRlck9iamVjdCog
cmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlRGF0YSgpID8gbV9kYXRhLm1fcmFyZURh
dGEtPnJlbmRlcmVyKCkgOiBtX2RhdGEubV9yZW5kZXJlcjsgfTsKKyAgICB2b2lkIHNldFJlbmRl
cmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCisgICAgeworICAgICAgICBpZiAoaGFzUmFyZURh
dGEoKSkKKyAgICAgICAgICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5zZXRSZW5kZXJlcihyZW5kZXJl
cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZGF0YS5tX3JlbmRlcmVyID0gcmVuZGVy
ZXI7CisgICAgfQorCiAgICAgLy8gVXNlIHRoZXNlIHR3byBtZXRob2RzIHdpdGggY2F1dGlvbi4K
ICAgICBSZW5kZXJCb3gqIHJlbmRlckJveCgpIGNvbnN0OwogICAgIFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZW5kZXJCb3hNb2RlbE9iamVjdCgpIGNvbnN0OwpAQCAtODE1LDcgKzgzMiwxMiBAQCBw
cml2YXRlOgogICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwogICAgIE5vZGUqIG1fcHJldmlvdXM7
CiAgICAgTm9kZSogbV9uZXh0OwotICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKKyAgICAv
LyBXaGVuIGEgbm9kZSBoYXMgcmFyZSBkYXRhIHdlIG1vdmUgdGhlIHJlbmRlcmVyIGludG8gdGhl
IHJhcmUgZGF0YS4KKyAgICB1bmlvbiBEYXRhVW5pb24geworICAgICAgICBEYXRhVW5pb24oKSA6
IG1fcmVuZGVyZXIoMCkgeyB9CisgICAgICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKKyAg
ICAgICAgTm9kZVJhcmVEYXRhQmFzZSogbV9yYXJlRGF0YTsKKyAgICB9IG1fZGF0YTsKIAogcHVi
bGljOgogICAgIGJvb2wgaXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCkgY29uc3QgeyByZXR1cm4gZ2V0
RmxhZyhJc1N0eWxlQXR0cmlidXRlVmFsaWRGbGFnKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0
YS5oCmluZGV4IDViM2E1ODNiMGQyMjllOGRiZWJlZTIxY2Q2NDJkYzJjNzcwZjM0NDIuLjQ0Y2Y4
ZWZkNjBmMTVjZDVmODdlNmM1NjBlZTJiYjI4ZTg4ODYzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmgKQEAgLTE3Niw3ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIFRhZ05vZGVMaXN0Q2Fj
aGVOUyBtX3RhZ05vZGVMaXN0Q2FjaGVOUzsKIH07CiAKLWNsYXNzIE5vZGVSYXJlRGF0YSB7Citj
bGFzcyBOb2RlUmFyZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhQmFzZSB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoTm9kZVJhcmVEYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6ICAgIAogICAgIE5vZGVSYXJlRGF0YSgpCkBAIC0xOTgsMTkgKzE5OCw2IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCi0gICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IE5vZGUqLCBOb2Rl
UmFyZURhdGEqPiBOb2RlUmFyZURhdGFNYXA7Ci0gICAgCi0gICAgc3RhdGljIE5vZGVSYXJlRGF0
YU1hcCYgcmFyZURhdGFNYXAoKQotICAgIHsKLSAgICAgICAgc3RhdGljIE5vZGVSYXJlRGF0YU1h
cCogZGF0YU1hcCA9IG5ldyBOb2RlUmFyZURhdGFNYXA7Ci0gICAgICAgIHJldHVybiAqZGF0YU1h
cDsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIE5vZGVSYXJlRGF0YSogcmFyZURhdGFGcm9tTWFw
KGNvbnN0IE5vZGUqIG5vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gcmFyZURhdGFNYXAoKS5n
ZXQobm9kZSk7Ci0gICAgfQotCiAgICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBjb25zdCB7IHJl
dHVybiBtX3RyZWVTY29wZTsgfQogICAgIHZvaWQgc2V0VHJlZVNjb3BlKFRyZWVTY29wZSogdHJl
ZVNjb3BlKSB7IG1fdHJlZVNjb3BlID0gdHJlZVNjb3BlOyB9CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJlbmRlclN0eWxlLmgKaW5kZXggMDc0ZTIxMTRiMTg5NmQ1YjMyODY5ZDIwNGU4ZGIyYjYy
MWZjMzcxMy4uY2Y2YTU4YjFmYTQ0ZjUzM2U0MzcwZWQ1N2M1ZjVhZThmNjZlZjEyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmVuZGVyU3R5bGUuaApAQCAtMzUsOCArMzUsOCBAQCBpbmxpbmUgUmVu
ZGVyU3R5bGUqIE5vZGU6OnJlbmRlclN0eWxlKCkgY29uc3QKIHsKICAgICAvLyBVc2luZyBhIHRl
cm5hcnkgaGVyZSBjb25mdXNlcyB0aGUgU29sYXJpcyBTdHVkaW8gMTIvMTIuMS8xMi4yIGNvbXBp
bGVyczoKICAgICAvLyBCdWcgaXMgQ1IgNjU2OTE5NCwgIlByb2JsZW0gd2l0aCBxdWVzdGlvbiBv
cGVyYXRvciBiaW5kaW5nIGluIGlubGluZSBmdW5jdGlvbiIKLSAgICBpZiAobV9yZW5kZXJlcikK
LSAgICAgICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCk7CisgICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gcmVuZGVyZXIt
PnN0eWxlKCk7CiAgICAgcmV0dXJuIG5vblJlbmRlcmVyU3R5bGUoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQu
Y3BwCmluZGV4IDc1MjU1NDJmNjUzZTMxNzRjOTgyM2JjMWU2M2JlYjM0NjQyNDVhMDkuLjVmZDc4
YjMwOWY3MmRiYmZhYTNjNjYyMGYzYTczZDA0NTYzYjczMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAg
LTI1NiwxNCArMjU2LDE0IEBAIHZvaWQgVGV4dDo6cmVjYWxjVGV4dFN0eWxlKFN0eWxlQ2hhbmdl
IGNoYW5nZSkKICAgICBpZiAoaGFzQ3VzdG9tQ2FsbGJhY2tzKCkpCiAgICAgICAgIHdpbGxSZWNh
bGNUZXh0U3R5bGUoY2hhbmdlKTsKIAotICAgIGlmIChjaGFuZ2UgIT0gTm9DaGFuZ2UgJiYgcGFy
ZW50Tm9kZSgpICYmIHBhcmVudE5vZGUoKS0+cmVuZGVyZXIoKSkgewotICAgICAgICBpZiAocmVu
ZGVyZXIoKSkKLSAgICAgICAgICAgIHJlbmRlcmVyKCktPnNldFN0eWxlKHBhcmVudE5vZGUoKS0+
cmVuZGVyZXIoKS0+c3R5bGUoKSk7Ci0gICAgfQorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpOworICAgIGlmIChjaGFuZ2UgIT0gTm9DaGFuZ2UgJiYgcmVuZGVy
ZXIpCisgICAgICAgIHJlbmRlcmVyLT5zZXRTdHlsZShwYXJlbnROb2RlKCktPnJlbmRlcmVyKCkt
PnN0eWxlKCkpOworCiAgICAgaWYgKG5lZWRzU3R5bGVSZWNhbGMoKSkgewotICAgICAgICBpZiAo
cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCktPmlzVGV4dCgpKQotICAg
ICAgICAgICAgICAgIHRvUmVuZGVyVGV4dChyZW5kZXJlcigpKS0+c2V0VGV4dChkYXRhSW1wbCgp
KTsKKyAgICAgICAgaWYgKHJlbmRlcmVyKSB7CisgICAgICAgICAgICBpZiAocmVuZGVyZXItPmlz
VGV4dCgpKQorICAgICAgICAgICAgICAgIHRvUmVuZGVyVGV4dChyZW5kZXJlciktPnNldFRleHQo
ZGF0YUltcGwoKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmVhdHRhY2goKTsKICAg
ICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171961</attachid>
            <date>2012-11-01 17:56:36 -0700</date>
            <delta_ts>2012-11-02 14:16:55 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-100057-20121101175457.patch</filename>
            <type>text/plain</type>
            <size>13978</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzhmN2U0MDM2YjFmYWZl
ZGE5N2RjNmM2NTk2MDUxMzIwOWI5OWQwOC4uYzY0MThhOGYyN2NmODM2OGY2MjFhNGEzNTY2NGI2
NmI1Zjk3ZGZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTExLTAxICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlcGxhY2UgTm9k
ZVJhcmVEYXRhIGhhc2ggbWFwIHdpdGggYSB1bmlvbiBvbiBtX3JlbmRlcmVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAwNTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBVc2UgYSB1bmlvbiBvbiBOb2RlOjpt
X3JlbmRlcmVyIGJldHdlZW4gTm9kZVJhcmVEYXRhKiBhbmQgUmVuZGVyT2JqZWN0Ki4gVGhpcyBy
ZW1vdmVzCisgICAgICAgIHRoZSBvdmVyaGVhZCBvZiBhY2Nlc3NpbmcgcmFyZSBkYXRhIGFuZCB0
aGUgbWVtb3J5IGZyb20gdGhlIG1hcC4gV2Ugbm93IGdldCB0aGUgNSUKKyAgICAgICAgcGVyZm9y
bWFuY2UgaW5jcmVhc2Ugb2JzZXJ2ZWQgaW4gQnVnIDkwMDU5IGJ1dCB3aGVuIGFjY2Vzc2luZyBu
b2RlIGxpc3RzIG9uIGFueSBub2RlLgorCisgICAgICAgIEJ5IHJlbW92aW5nIHRoZSBvdmVyaGVh
ZCBvZiByYXJlRGF0YSgpIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIHRoZSBwZXJmb3JtYW5jZSBpc3N1
ZXMKKyAgICAgICAgcmFpc2VkIGluIEJ1Z3MgNzM4NTMsIDg3MDM0IGFuZCA4OTYzNS4KKworICAg
ICAgICBUaGlzIGlzIGFsc28gYSAxNSUgaW1wcm92ZW1lbnQgb24gUGFyc2VyL3RleHRhcmVhLXBh
cnNpbmcuaHRtbAorCisgICAgICAgIEkgcmFuIFBhcnNlci9odG1sNS1mdWxsLXJlbmRlci5odG1s
IGFuZCB0aGVyZSB3YXMgbm8gcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBhZnRlcgorICAgICAgICB0
dW5pbmcgVGV4dDo6cmVjYWxjVGV4dFN0eWxlIGFuZCB0aGUgcmVmYWN0b3IgdGhhdCB3YXMgZG9u
ZSBpbiByMTMyNjg0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBqdXN0IGEgcmVm
YWN0b3IuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6Ok5vZGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmFyZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6ZW5zdXJlUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2xl
YXJSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZW5kZXJCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6cmVuZGVyQm94TW9kZWxPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAg
ICAgIChOb2RlUmFyZURhdGFCYXNlKToKKyAgICAgICAgICBCYXNlIGNsYXNzIGZvciBOb2RlUmFy
ZURhdGEgdGhhdCBrbm93cyBhYm91dCB0aGUgcmVuZGVyZXIgc28gd2UgY2FuCisgICAgICAgICAg
aW5saW5lIHRoZSBhY2Nlc3NlcyBpbiBOb2RlLmgKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJl
RGF0YUJhc2U6OnJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YUJhc2U6
OnNldFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YUJhc2U6On5Ob2Rl
UmFyZURhdGFCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YUJhc2U6Ok5vZGVS
YXJlRGF0YUJhc2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpyZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRSZW5kZXJlcik6CisgICAg
ICAgIChOb2RlKToKKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAgICogZG9t
L05vZGVSZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVuZGVyU3R5bGUp
OgorICAgICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHQ6OnJlY2Fs
Y1RleHRTdHlsZSk6CisgICAgICAgICAgVGhpcyBtZXRob2QgYXBwZWFycyB2ZXJ5IGhvdCBpbiBo
dG1sNS1mdWxsLXJlbmRlci5odG1sIGFuZCBhY2Nlc3NpbmcgdGhlCisgICAgICAgICAgcmVuZGVy
ZXIgNCB0aW1lcyBjYXVzZWQgYSAyJSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIHdpdGggdGhpcyBw
YXRjaC4gSQorICAgICAgICAgIHJlZHVjZWQgaXQgdG8gMSBhY2Nlc3MgYW5kIHRoZXJlJ3Mgbm8g
bG9uZ2VyIGFueSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uLgorCiAyMDEyLTExLTAxICBBbGV4YW5k
cnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIFNoYWRlcnNd
IE1vdmUgTWVzaEJveFR5cGUgb3V0IG9mIEN1c3RvbUZpbHRlck9wZXJhdGlvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggMmI0YzY3MTZlZmI5YjE4ZTlhMDhjYWJmOTQzMDZlMTg1Y2ViYjJh
Ny4uYTQ3YzVhY2JkNjI2ZDU2ZDJkMzE4MjhkZjRmYmZmZWUxMDM0ZGNhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC00NzksNyArNDc5LDYgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1l
KiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAg
ICwgbV9pc1ZpZXdTb3VyY2UoZmFsc2UpCiAgICAgLCBtX3Nhd0VsZW1lbnRzSW5Lbm93bk5hbWVz
cGFjZXMoZmFsc2UpCiAgICAgLCBtX2lzU3JjZG9jRG9jdW1lbnQoZmFsc2UpCi0gICAgLCBtX2Rv
Y3VtZW50UmFyZURhdGEoMCkKICAgICAsIG1fZXZlbnRRdWV1ZShEb2N1bWVudEV2ZW50UXVldWU6
OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fd2Vha1JlZmVyZW5jZShEb2N1bWVudFdlYWtSZWZlcmVu
Y2U6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1faWRBdHRyaWJ1dGVOYW1lKGlkQXR0cikKQEAgLTIw
MzAsMTEgKzIwMjksNiBAQCB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVs
cyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JgogICAgIG1hcmdpbkxlZnQg
PSBzdHlsZS0+bWFyZ2luTGVmdCgpLmlzQXV0bygpID8gbWFyZ2luTGVmdCA6IGludFZhbHVlRm9y
TGVuZ3RoKHN0eWxlLT5tYXJnaW5MZWZ0KCksIHdpZHRoLCB2aWV3KTsKIH0KIAotdm9pZCBEb2N1
bWVudDo6c2V0RG9jdW1lbnRSYXJlRGF0YShOb2RlUmFyZURhdGEqIHJhcmVEYXRhKQotewotICAg
IG1fZG9jdW1lbnRSYXJlRGF0YSA9IHJhcmVEYXRhOwotfQotCiB2b2lkIERvY3VtZW50OjpzZXRJ
c1ZpZXdTb3VyY2UoYm9vbCBpc1ZpZXdTb3VyY2UpCiB7CiAgICAgbV9pc1ZpZXdTb3VyY2UgPSBp
c1ZpZXdTb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGM5YzNjN2M4ZWM0MDYxOWIzYzBj
YTU4MDJhN2Q1MzdhNjg1NDkyMDAuLjg1Y2NkNzE0NDlkY2Y4MTU3MzYzZmQyNThhNTU4OTVmYWUw
NzQ2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMTYsNyArMTE2LDYgQEAgY2xhc3MgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKIGNsYXNzIE5hbWVkRmxvd0NvbGxlY3Rpb247CiBj
bGFzcyBOb2RlRmlsdGVyOwogY2xhc3MgTm9kZUl0ZXJhdG9yOwotY2xhc3MgTm9kZVJhcmVEYXRh
OwogY2xhc3MgUGFnZTsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFByb2Nlc3Np
bmdJbnN0cnVjdGlvbjsKQEAgLTQ2Nyw5ICs0NjYsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlz
U3JjZG9jRG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2lzU3JjZG9jRG9jdW1lbnQ7IH0KIAot
ICAgIE5vZGVSYXJlRGF0YSogZG9jdW1lbnRSYXJlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9j
dW1lbnRSYXJlRGF0YTsgfTsKLSAgICB2b2lkIHNldERvY3VtZW50UmFyZURhdGEoTm9kZVJhcmVE
YXRhKik7Ci0KICAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVySWZFeGlzdHMoKSBjb25z
dCB7IHJldHVybiBtX3N0eWxlUmVzb2x2ZXIuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNWaWV3U291
cmNlKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZpZXdTb3VyY2U7IH0KQEAgLTE0MzQsOCArMTQzMCw2
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFjZXM7CiAg
ICAgYm9vbCBtX2lzU3JjZG9jRG9jdW1lbnQ7CiAKLSAgICBOb2RlUmFyZURhdGEqIG1fZG9jdW1l
bnRSYXJlRGF0YTsKLQogICAgIFJlZlB0cjxEb2N1bWVudEV2ZW50UXVldWU+IG1fZXZlbnRRdWV1
ZTsKIAogICAgIFJlZlB0cjxEb2N1bWVudFdlYWtSZWZlcmVuY2U+IG1fd2Vha1JlZmVyZW5jZTsK
QEAgLTE1MzUsNyArMTUyOSw2IEBAIGlubGluZSBOb2RlOjpOb2RlKERvY3VtZW50KiBkb2N1bWVu
dCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQogICAgICwgbV9kb2N1bWVudChkb2N1bWVudCkKICAg
ICAsIG1fcHJldmlvdXMoMCkKICAgICAsIG1fbmV4dCgwKQotICAgICwgbV9yZW5kZXJlcigwKQog
ewogICAgIGlmIChkb2N1bWVudCkKICAgICAgICAgZG9jdW1lbnQtPmd1YXJkUmVmKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKaW5kZXggZWIxMjMwODcyNDE3ODljYjk0MDZlMjNmNTk2MTg3ZTdiYTdi
MDY0ZC4uMmZkZDY3YjZmNzExNjMwNDhkYzU2MmQ2ZGY0YmZlOTJmNzNhZTQxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcApAQCAtMTU0LDkgKzE1NCw5IEBAIEVsZW1lbnQ6On5FbGVtZW50KCkKIGlu
bGluZSBFbGVtZW50UmFyZURhdGEqIEVsZW1lbnQ6OmVsZW1lbnRSYXJlRGF0YSgpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVt
ZW50UmFyZURhdGEqPihOb2RlUmFyZURhdGE6OnJhcmVEYXRhRnJvbU1hcCh0aGlzKSk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRSYXJlRGF0YSo+KHJhcmVEYXRhKCkpOwogfQotICAg
IAorCiBpbmxpbmUgRWxlbWVudFJhcmVEYXRhKiBFbGVtZW50OjplbnN1cmVFbGVtZW50UmFyZURh
dGEoKQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50UmFyZURhdGEqPihlbnN1cmVS
YXJlRGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAxZDcxYWIwZDIxMWI4ZDVjMWMwNTBhYmMw
Yzc3YzNmYmJmYjI5NWVhLi45ZjYwMjljNTdhNTY3OGIzMzU2ZTFkNzI2MjQ5YWYzODgyM2Y0ZTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCkBAIC00NzAsOSArNDcwLDcgQEAgVHJlZVNjb3BlKiBOb2RlOjp0
cmVlU2NvcGUoKSBjb25zdAogTm9kZVJhcmVEYXRhKiBOb2RlOjpyYXJlRGF0YSgpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwotICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IGlz
RG9jdW1lbnROb2RlKCkgPyBzdGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudCo+KHRoaXMpLT5kb2N1
bWVudFJhcmVEYXRhKCkgOiBOb2RlUmFyZURhdGE6OnJhcmVEYXRhRnJvbU1hcCh0aGlzKTsKLSAg
ICBBU1NFUlQoZGF0YSk7Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PE5vZGVSYXJlRGF0YSo+KG1fZGF0YS5tX3JhcmVEYXRhKTsKIH0KIAogTm9kZVJhcmVEYXRhKiBO
b2RlOjplbnN1cmVSYXJlRGF0YSgpCkBAIC00ODEsMTggKzQ3OSwxMyBAQCBOb2RlUmFyZURhdGEq
IE5vZGU6OmVuc3VyZVJhcmVEYXRhKCkKICAgICAgICAgcmV0dXJuIHJhcmVEYXRhKCk7CiAKICAg
ICBOb2RlUmFyZURhdGEqIGRhdGEgPSBjcmVhdGVSYXJlRGF0YSgpLmxlYWtQdHIoKTsKLSAgICBp
ZiAoaXNEb2N1bWVudE5vZGUoKSkgewotICAgICAgICAvLyBGYXN0IHBhdGggZm9yIGEgRG9jdW1l
bnQuIEEgRG9jdW1lbnQga25vd3MgYSBwb2ludGVyIHRvIE5vZGVSYXJlRGF0YS4KLSAgICAgICAg
QVNTRVJUKCFzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHRoaXMpLT5kb2N1bWVudFJhcmVEYXRhKCkp
OwotICAgICAgICBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHRoaXMpLT5zZXREb2N1bWVudFJhcmVE
YXRhKGRhdGEpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVCghTm9kZVJhcmVEYXRhOjpy
YXJlRGF0YU1hcCgpLmNvbnRhaW5zKHRoaXMpKTsKLSAgICAgICAgTm9kZVJhcmVEYXRhOjpyYXJl
RGF0YU1hcCgpLnNldCh0aGlzLCBkYXRhKTsKLSAgICB9CisgICAgQVNTRVJUKGRhdGEpOworICAg
IGRhdGEtPnNldFJlbmRlcmVyKG1fZGF0YS5tX3JlbmRlcmVyKTsKKyAgICBtX2RhdGEubV9yYXJl
RGF0YSA9IGRhdGE7CiAgICAgc2V0RmxhZyhIYXNSYXJlRGF0YUZsYWcpOwogICAgIHJldHVybiBk
YXRhOwogfQotICAgIAorCiBPd25QdHI8Tm9kZVJhcmVEYXRhPiBOb2RlOjpjcmVhdGVSYXJlRGF0
YSgpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBOb2RlUmFyZURhdGEpOwpAQCAtNTA2LDE5
ICs0OTksOSBAQCB2b2lkIE5vZGU6OmNsZWFyUmFyZURhdGEoKQogICAgIEFTU0VSVCghdHJhbnNp
ZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCkgfHwgdHJhbnNpZW50TXV0YXRpb25PYnNlcnZl
clJlZ2lzdHJ5KCktPmlzRW1wdHkoKSk7CiAjZW5kaWYKIAotICAgIGlmIChpc0RvY3VtZW50Tm9k
ZSgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50
Kj4odGhpcyk7Ci0gICAgICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IGRvY3VtZW50LT5kb2N1bWVu
dFJhcmVEYXRhKCk7Ci0gICAgICAgIEFTU0VSVChkYXRhKTsKLSAgICAgICAgZGVsZXRlIGRhdGE7
Ci0gICAgICAgIGRvY3VtZW50LT5zZXREb2N1bWVudFJhcmVEYXRhKDApOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIE5vZGVSYXJlRGF0YTo6Tm9kZVJhcmVEYXRhTWFwJiBkYXRhTWFwID0gTm9kZVJh
cmVEYXRhOjpyYXJlRGF0YU1hcCgpOwotICAgICAgICBOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0
YU1hcDo6aXRlcmF0b3IgaXQgPSBkYXRhTWFwLmZpbmQodGhpcyk7Ci0gICAgICAgIEFTU0VSVChp
dCAhPSBkYXRhTWFwLmVuZCgpKTsKLSAgICAgICAgZGVsZXRlIGl0LT52YWx1ZTsKLSAgICAgICAg
ZGF0YU1hcC5yZW1vdmUoaXQpOwotICAgIH0KKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
bV9kYXRhLm1fcmFyZURhdGEtPnJlbmRlcmVyKCk7CisgICAgZGVsZXRlIG1fZGF0YS5tX3JhcmVE
YXRhOworICAgIG1fZGF0YS5tX3JlbmRlcmVyID0gcmVuZGVyZXI7CiAgICAgY2xlYXJGbGFnKEhh
c1JhcmVEYXRhRmxhZyk7CiB9CiAKQEAgLTc5NiwxMiArNzc5LDE0IEBAIGJvb2wgTm9kZTo6c2hv
dWxkVXNlSW5wdXRNZXRob2QoKQogCiBSZW5kZXJCb3gqIE5vZGU6OnJlbmRlckJveCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fcmVuZGVyZXIgJiYgbV9yZW5kZXJlci0+aXNCb3goKSA/IHRvUmVu
ZGVyQm94KG1fcmVuZGVyZXIpIDogMDsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhp
cy0+cmVuZGVyZXIoKTsKKyAgICByZXR1cm4gcmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94KCkg
PyB0b1JlbmRlckJveChyZW5kZXJlcikgOiAwOwogfQogCiBSZW5kZXJCb3hNb2RlbE9iamVjdCog
Tm9kZTo6cmVuZGVyQm94TW9kZWxPYmplY3QoKSBjb25zdAogewotICAgIHJldHVybiBtX3JlbmRl
cmVyICYmIG1fcmVuZGVyZXItPmlzQm94TW9kZWxPYmplY3QoKSA/IHRvUmVuZGVyQm94TW9kZWxP
YmplY3QobV9yZW5kZXJlcikgOiAwOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpOworICAgIHJldHVybiByZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3hNb2Rl
bE9iamVjdCgpID8gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlcikgOiAwOwogfQogCiBM
YXlvdXRSZWN0IE5vZGU6OmJvdW5kaW5nQm94KCkgY29uc3QKQEAgLTI4MjgsOCArMjgxMyw4IEBA
IHZvaWQgTm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2Jq
ZWN0SW5mbykgY29uc3QKICAgICBpbmZvLmFkZE1lbWJlcihtX2RvY3VtZW50KTsKICAgICBpbmZv
LmFkZE1lbWJlcihtX25leHQpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcHJldmlvdXMpOwotICAg
IGlmIChtX3JlbmRlcmVyKQotICAgICAgICBpbmZvLmFkZE1lbWJlcihtX3JlbmRlcmVyLT5zdHls
ZSgpKTsKKyAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkp
CisgICAgICAgIGluZm8uYWRkTWVtYmVyKHJlbmRlcmVyLT5zdHlsZSgpKTsKIH0KIAogdm9pZCBO
b2RlOjp0ZXh0UmVjdHMoVmVjdG9yPEludFJlY3Q+JiByZWN0cykgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmlu
ZGV4IDE2OWMxYzFhNTAyNGNiN2VjYzI5NDgwYzk5ZjQ0OTIyYTllMjhjNjguLmQxOWM3MjVmM2Jk
Mjc0NjJlM2I2ZDM0ODc4YTFlZDU4Mjc0MGRjMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtMTExLDYgKzEx
MSwxNyBAQCBlbnVtIFN0eWxlQ2hhbmdlVHlwZSB7CiAgICAgU3ludGhldGljU3R5bGVDaGFuZ2Ug
PSAzIDw8IG5vZGVTdHlsZUNoYW5nZVNoaWZ0CiB9OwogCitjbGFzcyBOb2RlUmFyZURhdGFCYXNl
IHsKK3B1YmxpYzoKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4g
bV9yZW5kZXJlcjsgfQorICAgIHZvaWQgc2V0UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikgeyBtX3JlbmRlcmVyID0gcmVuZGVyZXI7IH0KKyAgICB2aXJ0dWFsIH5Ob2RlUmFyZURhdGFC
YXNlKCkgeyB9Citwcm90ZWN0ZWQ6CisgICAgTm9kZVJhcmVEYXRhQmFzZSgpIHsgfQorcHJpdmF0
ZToKKyAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7Cit9OworCiBjbGFzcyBOb2RlIDogcHVi
bGljIEV2ZW50VGFyZ2V0LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgVHJlZVNoYXJl
ZDxOb2RlLCBDb250YWluZXJOb2RlPiB7CiAgICAgZnJpZW5kIGNsYXNzIERvY3VtZW50OwogICAg
IGZyaWVuZCBjbGFzcyBUcmVlU2NvcGU7CkBAIC01MDMsOSArNTE0LDE2IEBAIHB1YmxpYzoKICAg
ICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIC8vIEludGVncmF0aW9uIHdpdGggcmVuZGVy
aW5nIHRyZWUKIAotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBt
X3JlbmRlcmVyOyB9Ci0gICAgdm9pZCBzZXRSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KSB7IG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgfQotICAgIAorICAgIC8vIEFzIHJlbmRlcmVyKCkg
aW5jbHVkZXMgYSBicmFuY2ggeW91IHNob3VsZCBhdm9pZCBjYWxsaW5nIGl0IHJlcGVhdGVkbHkg
aW4gaG90IGNvZGUgcGF0aHMuCisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsg
cmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBtX2RhdGEubV9yYXJlRGF0YS0+cmVuZGVyZXIoKSA6IG1f
ZGF0YS5tX3JlbmRlcmVyOyB9OworICAgIHZvaWQgc2V0UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikKKyAgICB7CisgICAgICAgIGlmIChoYXNSYXJlRGF0YSgpKQorICAgICAgICAgICAg
bV9kYXRhLm1fcmFyZURhdGEtPnNldFJlbmRlcmVyKHJlbmRlcmVyKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbV9kYXRhLm1fcmVuZGVyZXIgPSByZW5kZXJlcjsKKyAgICB9CisKICAgICAv
LyBVc2UgdGhlc2UgdHdvIG1ldGhvZHMgd2l0aCBjYXV0aW9uLgogICAgIFJlbmRlckJveCogcmVu
ZGVyQm94KCkgY29uc3Q7CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlckJveE1vZGVs
T2JqZWN0KCkgY29uc3Q7CkBAIC04MTUsNyArODMzLDEyIEBAIHByaXZhdGU6CiAgICAgRG9jdW1l
bnQqIG1fZG9jdW1lbnQ7CiAgICAgTm9kZSogbV9wcmV2aW91czsKICAgICBOb2RlKiBtX25leHQ7
Ci0gICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyOworICAgIC8vIFdoZW4gYSBub2RlIGhhcyBy
YXJlIGRhdGEgd2UgbW92ZSB0aGUgcmVuZGVyZXIgaW50byB0aGUgcmFyZSBkYXRhLgorICAgIHVu
aW9uIERhdGFVbmlvbiB7CisgICAgICAgIERhdGFVbmlvbigpIDogbV9yZW5kZXJlcigwKSB7IH0K
KyAgICAgICAgUmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyOworICAgICAgICBOb2RlUmFyZURhdGFC
YXNlKiBtX3JhcmVEYXRhOworICAgIH0gbV9kYXRhOwogCiBwdWJsaWM6CiAgICAgYm9vbCBpc1N0
eWxlQXR0cmlidXRlVmFsaWQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzU3R5bGVBdHRyaWJ1
dGVWYWxpZEZsYWcpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5kZXggNWIzYTU4M2Iw
ZDIyOWU4ZGJlYmVlMjFjZDY0MmRjMmM3NzBmMzQ0Mi4uNDRjZjhlZmQ2MGYxNWNkNWY4N2U2YzU2
MGVlMmJiMjhlODg4NjM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJl
RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtMTc2LDcg
KzE3Niw3IEBAIHByaXZhdGU6CiAgICAgVGFnTm9kZUxpc3RDYWNoZU5TIG1fdGFnTm9kZUxpc3RD
YWNoZU5TOwogfTsKIAotY2xhc3MgTm9kZVJhcmVEYXRhIHsKK2NsYXNzIE5vZGVSYXJlRGF0YSA6
IHB1YmxpYyBOb2RlUmFyZURhdGFCYXNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOb2Rl
UmFyZURhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAgCiAgICAgTm9k
ZVJhcmVEYXRhKCkKQEAgLTE5OCwxOSArMTk4LDYgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAK
LSAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgTm9kZSosIE5vZGVSYXJlRGF0YSo+IE5vZGVSYXJl
RGF0YU1hcDsKLSAgICAKLSAgICBzdGF0aWMgTm9kZVJhcmVEYXRhTWFwJiByYXJlRGF0YU1hcCgp
Ci0gICAgewotICAgICAgICBzdGF0aWMgTm9kZVJhcmVEYXRhTWFwKiBkYXRhTWFwID0gbmV3IE5v
ZGVSYXJlRGF0YU1hcDsKLSAgICAgICAgcmV0dXJuICpkYXRhTWFwOwotICAgIH0KLSAgICAKLSAg
ICBzdGF0aWMgTm9kZVJhcmVEYXRhKiByYXJlRGF0YUZyb21NYXAoY29uc3QgTm9kZSogbm9kZSkK
LSAgICB7Ci0gICAgICAgIHJldHVybiByYXJlRGF0YU1hcCgpLmdldChub2RlKTsKLSAgICB9Ci0K
ICAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJlZVNjb3BlOyB9
CiAgICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiB0cmVlU2NvcGUpIHsgbV90cmVlU2Nv
cGUgPSB0cmVlU2NvcGU7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyU3R5bGUuaApp
bmRleCAwNzRlMjExNGIxODk2ZDViMzI4NjlkMjA0ZThkYjJiNjIxZmMzNzEzLi5jZjZhNThiMWZh
NDRmNTMzZTQzNzBlZDU3YzVmNWFlOGY2NmVmMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5k
ZXJTdHlsZS5oCkBAIC0zNSw4ICszNSw4IEBAIGlubGluZSBSZW5kZXJTdHlsZSogTm9kZTo6cmVu
ZGVyU3R5bGUoKSBjb25zdAogewogICAgIC8vIFVzaW5nIGEgdGVybmFyeSBoZXJlIGNvbmZ1c2Vz
IHRoZSBTb2xhcmlzIFN0dWRpbyAxMi8xMi4xLzEyLjIgY29tcGlsZXJzOgogICAgIC8vIEJ1ZyBp
cyBDUiA2NTY5MTk0LCAiUHJvYmxlbSB3aXRoIHF1ZXN0aW9uIG9wZXJhdG9yIGJpbmRpbmcgaW4g
aW5saW5lIGZ1bmN0aW9uIgotICAgIGlmIChtX3JlbmRlcmVyKQotICAgICAgICByZXR1cm4gbV9y
ZW5kZXJlci0+c3R5bGUoKTsKKyAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMt
PnJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybiByZW5kZXJlci0+c3R5bGUoKTsKICAgICByZXR1
cm4gbm9uUmVuZGVyZXJTdHlsZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKaW5kZXggNzUyNTU0MmY2
NTNlMzE3NGM5ODIzYmMxZTYzYmViMzQ2NDI0NWEwOS4uM2ZkMGYxNWVhMGYyMTkxN2Q5N2FkNGFj
OGFiNDYyNDk2NTliYTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcApAQCAtMjU2LDE0ICsyNTYsMTcgQEAg
dm9pZCBUZXh0OjpyZWNhbGNUZXh0U3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgIGlmICho
YXNDdXN0b21DYWxsYmFja3MoKSkKICAgICAgICAgd2lsbFJlY2FsY1RleHRTdHlsZShjaGFuZ2Up
OwogCi0gICAgaWYgKGNoYW5nZSAhPSBOb0NoYW5nZSAmJiBwYXJlbnROb2RlKCkgJiYgcGFyZW50
Tm9kZSgpLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICAg
ICAgcmVuZGVyZXIoKS0+c2V0U3R5bGUocGFyZW50Tm9kZSgpLT5yZW5kZXJlcigpLT5zdHlsZSgp
KTsKLSAgICB9CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7
CisKKyAgICAvLyBUaGUgb25seSB0aW1lIHdlIGhhdmUgYSByZW5kZXJlciBhbmQgb3VyIHBhcmVu
dCBkb2Vzbid0IGlzIGlmIG91ciBwYXJlbnQKKyAgICAvLyBpcyBhIHNoYWRvdyByb290LgorICAg
IGlmIChjaGFuZ2UgIT0gTm9DaGFuZ2UgJiYgcmVuZGVyZXIgJiYgIXBhcmVudE5vZGUoKS0+aXNT
aGFkb3dSb290KCkpCisgICAgICAgIHJlbmRlcmVyLT5zZXRTdHlsZShwYXJlbnROb2RlKCktPnJl
bmRlcmVyKCktPnN0eWxlKCkpOworCiAgICAgaWYgKG5lZWRzU3R5bGVSZWNhbGMoKSkgewotICAg
ICAgICBpZiAocmVuZGVyZXIoKSkgewotICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCktPmlzVGV4
dCgpKQotICAgICAgICAgICAgICAgIHRvUmVuZGVyVGV4dChyZW5kZXJlcigpKS0+c2V0VGV4dChk
YXRhSW1wbCgpKTsKKyAgICAgICAgaWYgKHJlbmRlcmVyKSB7CisgICAgICAgICAgICBpZiAocmVu
ZGVyZXItPmlzVGV4dCgpKQorICAgICAgICAgICAgICAgIHRvUmVuZGVyVGV4dChyZW5kZXJlcikt
PnNldFRleHQoZGF0YUltcGwoKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmVhdHRh
Y2goKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172133</attachid>
            <date>2012-11-02 14:16:59 -0700</date>
            <delta_ts>2012-11-02 14:26:36 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-100057-20121102141518.patch</filename>
            <type>text/plain</type>
            <size>14021</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWUyMzU5MjZmMDk4YWE5
OWVmZTY4MWY4Yzc1MDFiNDM0MjA3ZmZkYS4uMjVmMjliMWVkNTIwOTY1YTg4NDIzYmI0MTBiN2I0
OTQzZDk0MzJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTExLTAyICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlcGxhY2UgTm9k
ZVJhcmVEYXRhIGhhc2ggbWFwIHdpdGggYSB1bmlvbiBvbiBtX3JlbmRlcmVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAwNTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBVc2UgYSB1bmlvbiBvbiBOb2RlOjpt
X3JlbmRlcmVyIGJldHdlZW4gTm9kZVJhcmVEYXRhKiBhbmQgUmVuZGVyT2JqZWN0Ki4gVGhpcyBy
ZW1vdmVzCisgICAgICAgIHRoZSBvdmVyaGVhZCBvZiBhY2Nlc3NpbmcgcmFyZSBkYXRhIGFuZCB0
aGUgbWVtb3J5IGZyb20gdGhlIG1hcC4gV2Ugbm93IGdldCB0aGUgNSUKKyAgICAgICAgcGVyZm9y
bWFuY2UgaW5jcmVhc2Ugb2JzZXJ2ZWQgaW4gQnVnIDkwMDU5IGJ1dCB3aGVuIGFjY2Vzc2luZyBu
b2RlIGxpc3RzIG9uIGFueSBub2RlLgorCisgICAgICAgIEJ5IHJlbW92aW5nIHRoZSBvdmVyaGVh
ZCBvZiByYXJlRGF0YSgpIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIHRoZSBwZXJmb3JtYW5jZSBpc3N1
ZXMKKyAgICAgICAgcmFpc2VkIGluIEJ1Z3MgNzM4NTMsIDg3MDM0IGFuZCA4OTYzNS4KKworICAg
ICAgICBUaGlzIGlzIGFsc28gYSAxNSUgaW1wcm92ZW1lbnQgb24gUGFyc2VyL3RleHRhcmVhLXBh
cnNpbmcuaHRtbAorCisgICAgICAgIEkgcmFuIFBhcnNlci9odG1sNS1mdWxsLXJlbmRlci5odG1s
IGFuZCB0aGVyZSB3YXMgbm8gcGVyZm9ybWFuY2UgcmVncmVzc2lvbiBhZnRlcgorICAgICAgICB0
dW5pbmcgVGV4dDo6cmVjYWxjVGV4dFN0eWxlIGFuZCB0aGUgcmVmYWN0b3IgdGhhdCB3YXMgZG9u
ZSBpbiByMTMyNjg0LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBqdXN0IGEgcmVm
YWN0b3IuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6Ok5vZGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVsZW1lbnRSYXJlRGF0YSk6CisgICAgICAgICogZG9tL05v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmFyZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6ZW5zdXJlUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2xl
YXJSYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZW5kZXJCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6cmVuZGVyQm94TW9kZWxPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAg
ICAgIChOb2RlUmFyZURhdGFCYXNlKToKKyAgICAgICAgICBCYXNlIGNsYXNzIGZvciBOb2RlUmFy
ZURhdGEgdGhhdCBrbm93cyBhYm91dCB0aGUgcmVuZGVyZXIgc28gd2UgY2FuCisgICAgICAgICAg
aW5saW5lIHRoZSBhY2Nlc3NlcyBpbiBOb2RlLmgKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJl
RGF0YUJhc2U6OnJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YUJhc2U6
OnNldFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YUJhc2U6On5Ob2Rl
UmFyZURhdGFCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSYXJlRGF0YUJhc2U6Ok5vZGVS
YXJlRGF0YUJhc2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpyZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRSZW5kZXJlcik6CisgICAg
ICAgIChOb2RlKToKKyAgICAgICAgKiBkb20vTm9kZVJhcmVEYXRhLmg6CisgICAgICAgICogZG9t
L05vZGVSZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVuZGVyU3R5bGUp
OgorICAgICAgICAqIGRvbS9UZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHQ6OnJlY2Fs
Y1RleHRTdHlsZSk6CisgICAgICAgICAgVGhpcyBtZXRob2QgYXBwZWFycyB2ZXJ5IGhvdCBpbiBo
dG1sNS1mdWxsLXJlbmRlci5odG1sIGFuZCBhY2Nlc3NpbmcgdGhlCisgICAgICAgICAgcmVuZGVy
ZXIgNCB0aW1lcyBjYXVzZWQgYSAyJSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIHdpdGggdGhpcyBw
YXRjaC4gSQorICAgICAgICAgIHJlZHVjZWQgaXQgdG8gMSBhY2Nlc3MgYW5kIHRoZXJlJ3Mgbm8g
bG9uZ2VyIGFueSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uLgorCiAyMDEyLTExLTAyICBMaWFuZ2h1
aSBDaGVuICA8bGlhY2hlbkByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBSZXNvdXJj
ZUhhbmRsZTo6Y2FuY2VsKCkgaW4gUmVzb3VyY2VIYW5kbGVCbGFja0JlcnJ5IHNob3VsZCBzZXRD
bGllbnQgdG8gbnVsbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGY1ODEyM2NiZGFiMGYz
Mjg1YjliZjIxMWJjMTFlNTVhNWE0MTkxNzguLjYzODg1OTQwMWUwZTAzY2QwZGZjMzJlYzQ0MmRm
M2U3MjQxMjdiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDc4LDcgKzQ3OCw2IEBA
IERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBp
c1hIVE1MLCBib29sIGlzSFRNTCkKICAgICAsIG1faXNWaWV3U291cmNlKGZhbHNlKQogICAgICwg
bV9zYXdFbGVtZW50c0luS25vd25OYW1lc3BhY2VzKGZhbHNlKQogICAgICwgbV9pc1NyY2RvY0Rv
Y3VtZW50KGZhbHNlKQotICAgICwgbV9kb2N1bWVudFJhcmVEYXRhKDApCiAgICAgLCBtX2V2ZW50
UXVldWUoRG9jdW1lbnRFdmVudFF1ZXVlOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3dlYWtSZWZl
cmVuY2UoRG9jdW1lbnRXZWFrUmVmZXJlbmNlOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2lkQXR0
cmlidXRlTmFtZShpZEF0dHIpCkBAIC0yMDI2LDExICsyMDI1LDYgQEAgdm9pZCBEb2N1bWVudDo6
cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNp
emUsIGludCYKICAgICBtYXJnaW5MZWZ0ID0gc3R5bGUtPm1hcmdpbkxlZnQoKS5pc0F1dG8oKSA/
IG1hcmdpbkxlZnQgOiBpbnRWYWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luTGVmdCgpLCB3aWR0
aCwgdmlldyk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNldERvY3VtZW50UmFyZURhdGEoTm9kZVJh
cmVEYXRhKiByYXJlRGF0YSkKLXsKLSAgICBtX2RvY3VtZW50UmFyZURhdGEgPSByYXJlRGF0YTsK
LX0KLQogdm9pZCBEb2N1bWVudDo6c2V0SXNWaWV3U291cmNlKGJvb2wgaXNWaWV3U291cmNlKQog
ewogICAgIG1faXNWaWV3U291cmNlID0gaXNWaWV3U291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCA5NWY2MDE3NDYwZDUxYmY2NmRhNGRkZWYzOTRiZmJkNjM2NWVhN2YyLi5hYTVkM2Q4NDFi
MjIzODU2MzI0ZTJlOGFlNTQ0ZTcyMDIyN2I3MTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
MTE2LDcgKzExNiw2IEBAIGNsYXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHM7CiBjbGFz
cyBOYW1lZEZsb3dDb2xsZWN0aW9uOwogY2xhc3MgTm9kZUZpbHRlcjsKIGNsYXNzIE5vZGVJdGVy
YXRvcjsKLWNsYXNzIE5vZGVSYXJlRGF0YTsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBQbGF0Zm9ybU1v
dXNlRXZlbnQ7CiBjbGFzcyBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb247CkBAIC00NjYsOSArNDY1LDYg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc1NyY2RvY0RvY3VtZW50KCkgY29uc3QgeyByZXR1cm4g
bV9pc1NyY2RvY0RvY3VtZW50OyB9CiAKLSAgICBOb2RlUmFyZURhdGEqIGRvY3VtZW50UmFyZURh
dGEoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50UmFyZURhdGE7IH07Ci0gICAgdm9pZCBzZXRE
b2N1bWVudFJhcmVEYXRhKE5vZGVSYXJlRGF0YSopOwotCiAgICAgU3R5bGVSZXNvbHZlciogc3R5
bGVSZXNvbHZlcklmRXhpc3RzKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZVJlc29sdmVyLmdldCgp
OyB9CiAKICAgICBib29sIGlzVmlld1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaWV3U291
cmNlOyB9CkBAIC0xNDI5LDggKzE0MjUsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zYXdFbGVt
ZW50c0luS25vd25OYW1lc3BhY2VzOwogICAgIGJvb2wgbV9pc1NyY2RvY0RvY3VtZW50OwogCi0g
ICAgTm9kZVJhcmVEYXRhKiBtX2RvY3VtZW50UmFyZURhdGE7Ci0KICAgICBSZWZQdHI8RG9jdW1l
bnRFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7CiAKICAgICBSZWZQdHI8RG9jdW1lbnRXZWFrUmVm
ZXJlbmNlPiBtX3dlYWtSZWZlcmVuY2U7CkBAIC0xNTI2LDcgKzE1MjAsNiBAQCBpbmxpbmUgTm9k
ZTo6Tm9kZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICAs
IG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBtX3ByZXZpb3VzKDApCiAgICAgLCBtX25leHQo
MCkKLSAgICAsIG1fcmVuZGVyZXIoMCkKIHsKICAgICBpZiAoZG9jdW1lbnQpCiAgICAgICAgIGRv
Y3VtZW50LT5ndWFyZFJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGFjMWZkMDZlZjQ4
MzM2MWZkNTVlMzk3NTg5YjIzNDdlY2U2N2I0MGIuLjAyZTYwZGE3YWFmMDc1MDIzN2Q3Yzg3NzQw
YjgzNzBhMDE4ZTFiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTE1NCw5ICsxNTQsOSBA
QCBFbGVtZW50Ojp+RWxlbWVudCgpCiBpbmxpbmUgRWxlbWVudFJhcmVEYXRhKiBFbGVtZW50Ojpl
bGVtZW50UmFyZURhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFJhcmVEYXRhKj4oTm9kZVJhcmVEYXRhOjpyYXJl
RGF0YUZyb21NYXAodGhpcykpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50UmFyZURh
dGEqPihyYXJlRGF0YSgpKTsKIH0KLSAgICAKKwogaW5saW5lIEVsZW1lbnRSYXJlRGF0YSogRWxl
bWVudDo6ZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RWxlbWVudFJhcmVEYXRhKj4oZW5zdXJlUmFyZURhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXgg
YWVjNmQwNGFkOWI3MDFiZDU1MmY3YTRlNTU0ODFkNjUxYzQxOWRmZS4uMDllYjk2NWNlM2FiYzU1
YzRhOGY5MzZmMGU0ZWVmODNiOGE5YTQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtNDcwLDkgKzQ3
MCw3IEBAIFRyZWVTY29wZSogTm9kZTo6dHJlZVNjb3BlKCkgY29uc3QKIE5vZGVSYXJlRGF0YSog
Tm9kZTo6cmFyZURhdGEoKSBjb25zdAogewogICAgIEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKLSAg
ICBOb2RlUmFyZURhdGEqIGRhdGEgPSBpc0RvY3VtZW50Tm9kZSgpID8gc3RhdGljX2Nhc3Q8Y29u
c3QgRG9jdW1lbnQqPih0aGlzKS0+ZG9jdW1lbnRSYXJlRGF0YSgpIDogTm9kZVJhcmVEYXRhOjpy
YXJlRGF0YUZyb21NYXAodGhpcyk7Ci0gICAgQVNTRVJUKGRhdGEpOwotICAgIHJldHVybiBkYXRh
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxOb2RlUmFyZURhdGEqPihtX2RhdGEubV9yYXJlRGF0
YSk7CiB9CiAKIE5vZGVSYXJlRGF0YSogTm9kZTo6ZW5zdXJlUmFyZURhdGEoKQpAQCAtNDgxLDE4
ICs0NzksMTMgQEAgTm9kZVJhcmVEYXRhKiBOb2RlOjplbnN1cmVSYXJlRGF0YSgpCiAgICAgICAg
IHJldHVybiByYXJlRGF0YSgpOwogCiAgICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gY3JlYXRlUmFy
ZURhdGEoKS5sZWFrUHRyKCk7Ci0gICAgaWYgKGlzRG9jdW1lbnROb2RlKCkpIHsKLSAgICAgICAg
Ly8gRmFzdCBwYXRoIGZvciBhIERvY3VtZW50LiBBIERvY3VtZW50IGtub3dzIGEgcG9pbnRlciB0
byBOb2RlUmFyZURhdGEuCi0gICAgICAgIEFTU0VSVCghc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPih0
aGlzKS0+ZG9jdW1lbnRSYXJlRGF0YSgpKTsKLSAgICAgICAgc3RhdGljX2Nhc3Q8RG9jdW1lbnQq
Pih0aGlzKS0+c2V0RG9jdW1lbnRSYXJlRGF0YShkYXRhKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBBU1NFUlQoIU5vZGVSYXJlRGF0YTo6cmFyZURhdGFNYXAoKS5jb250YWlucyh0aGlzKSk7Ci0g
ICAgICAgIE5vZGVSYXJlRGF0YTo6cmFyZURhdGFNYXAoKS5zZXQodGhpcywgZGF0YSk7Ci0gICAg
fQorICAgIEFTU0VSVChkYXRhKTsKKyAgICBkYXRhLT5zZXRSZW5kZXJlcihtX2RhdGEubV9yZW5k
ZXJlcik7CisgICAgbV9kYXRhLm1fcmFyZURhdGEgPSBkYXRhOwogICAgIHNldEZsYWcoSGFzUmFy
ZURhdGFGbGFnKTsKICAgICByZXR1cm4gZGF0YTsKIH0KLSAgICAKKwogT3duUHRyPE5vZGVSYXJl
RGF0YT4gTm9kZTo6Y3JlYXRlUmFyZURhdGEoKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcg
Tm9kZVJhcmVEYXRhKTsKQEAgLTUwNiwxOSArNDk5LDkgQEAgdm9pZCBOb2RlOjpjbGVhclJhcmVE
YXRhKCkKICAgICBBU1NFUlQoIXRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpIHx8
IHRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpLT5pc0VtcHR5KCkpOwogI2VuZGlm
CiAKLSAgICBpZiAoaXNEb2N1bWVudE5vZGUoKSkgewotICAgICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHRoaXMpOwotICAgICAgICBOb2RlUmFyZURhdGEq
IGRhdGEgPSBkb2N1bWVudC0+ZG9jdW1lbnRSYXJlRGF0YSgpOwotICAgICAgICBBU1NFUlQoZGF0
YSk7Ci0gICAgICAgIGRlbGV0ZSBkYXRhOwotICAgICAgICBkb2N1bWVudC0+c2V0RG9jdW1lbnRS
YXJlRGF0YSgwKTsKLSAgICB9IGVsc2UgewotICAgICAgICBOb2RlUmFyZURhdGE6Ok5vZGVSYXJl
RGF0YU1hcCYgZGF0YU1hcCA9IE5vZGVSYXJlRGF0YTo6cmFyZURhdGFNYXAoKTsKLSAgICAgICAg
Tm9kZVJhcmVEYXRhOjpOb2RlUmFyZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0gZGF0YU1hcC5maW5k
KHRoaXMpOwotICAgICAgICBBU1NFUlQoaXQgIT0gZGF0YU1hcC5lbmQoKSk7Ci0gICAgICAgIGRl
bGV0ZSBpdC0+dmFsdWU7Ci0gICAgICAgIGRhdGFNYXAucmVtb3ZlKGl0KTsKLSAgICB9CisgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZGF0YS5tX3JhcmVEYXRhLT5yZW5kZXJlcigpOwor
ICAgIGRlbGV0ZSBtX2RhdGEubV9yYXJlRGF0YTsKKyAgICBtX2RhdGEubV9yZW5kZXJlciA9IHJl
bmRlcmVyOwogICAgIGNsZWFyRmxhZyhIYXNSYXJlRGF0YUZsYWcpOwogfQogCkBAIC03OTgsMTIg
Kzc4MSwxNCBAQCBib29sIE5vZGU6OnNob3VsZFVzZUlucHV0TWV0aG9kKCkKIAogUmVuZGVyQm94
KiBOb2RlOjpyZW5kZXJCb3goKSBjb25zdAogewotICAgIHJldHVybiBtX3JlbmRlcmVyICYmIG1f
cmVuZGVyZXItPmlzQm94KCkgPyB0b1JlbmRlckJveChtX3JlbmRlcmVyKSA6IDA7CisgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgcmV0dXJuIHJlbmRl
cmVyICYmIHJlbmRlcmVyLT5pc0JveCgpID8gdG9SZW5kZXJCb3gocmVuZGVyZXIpIDogMDsKIH0K
IAogUmVuZGVyQm94TW9kZWxPYmplY3QqIE5vZGU6OnJlbmRlckJveE1vZGVsT2JqZWN0KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9yZW5kZXJlciAmJiBtX3JlbmRlcmVyLT5pc0JveE1vZGVsT2Jq
ZWN0KCkgPyB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG1fcmVuZGVyZXIpIDogMDsKKyAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICByZXR1cm4gcmVuZGVy
ZXIgJiYgcmVuZGVyZXItPmlzQm94TW9kZWxPYmplY3QoKSA/IHRvUmVuZGVyQm94TW9kZWxPYmpl
Y3QocmVuZGVyZXIpIDogMDsKIH0KIAogTGF5b3V0UmVjdCBOb2RlOjpib3VuZGluZ0JveCgpIGNv
bnN0CkBAIC0yODMwLDggKzI4MTUsOCBAQCB2b2lkIE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgaW5mby5hZGRNZW1i
ZXIobV9kb2N1bWVudCk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9uZXh0KTsKICAgICBpbmZvLmFk
ZE1lbWJlcihtX3ByZXZpb3VzKTsKLSAgICBpZiAobV9yZW5kZXJlcikKLSAgICAgICAgaW5mby5h
ZGRNZW1iZXIobV9yZW5kZXJlci0+c3R5bGUoKSk7CisgICAgaWYgKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICBpbmZvLmFkZE1lbWJlcihyZW5kZXJl
ci0+c3R5bGUoKSk7CiAgICAgaWYgKGhhc1JhcmVEYXRhKCkpCiAgICAgICAgIGluZm8uYWRkTWVt
YmVyKHJhcmVEYXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggMjg1YjRhNjA4ZTk4MWVjYmM3NjIz
Y2IwMGQzNTFjNjM5ZjZmOTE4Mi4uNjg4MjJmYmM4MDJmYTNmZWU3YzhmMDRmMGE0YzIwYjU3Yzg4
YzZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCkBAIC0xMTEsNiArMTExLDE3IEBAIGVudW0gU3R5bGVDaGFuZ2VU
eXBlIHsKICAgICBTeW50aGV0aWNTdHlsZUNoYW5nZSA9IDMgPDwgbm9kZVN0eWxlQ2hhbmdlU2hp
ZnQKIH07CiAKK2NsYXNzIE5vZGVSYXJlRGF0YUJhc2UgeworcHVibGljOgorICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyOyB9CisgICAgdm9pZCBz
ZXRSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSB7IG1fcmVuZGVyZXIgPSByZW5kZXJl
cjsgfQorICAgIHZpcnR1YWwgfk5vZGVSYXJlRGF0YUJhc2UoKSB7IH0KK3Byb3RlY3RlZDoKKyAg
ICBOb2RlUmFyZURhdGFCYXNlKCkgeyB9Citwcml2YXRlOgorICAgIFJlbmRlck9iamVjdCogbV9y
ZW5kZXJlcjsKK307CisKIGNsYXNzIE5vZGUgOiBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBT
Y3JpcHRXcmFwcGFibGUsIHB1YmxpYyBUcmVlU2hhcmVkPE5vZGUsIENvbnRhaW5lck5vZGU+IHsK
ICAgICBmcmllbmQgY2xhc3MgRG9jdW1lbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTY29wZTsK
QEAgLTQ5OSw5ICs1MTAsMTYgQEAgcHVibGljOgogICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAgICAgLy8gSW50ZWdyYXRpb24gd2l0aCByZW5kZXJpbmcgdHJlZQogCi0gICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyZXI7IH0KLSAgICB2b2lkIHNl
dFJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJlbmRlcmVy
OyB9Ci0gICAgCisgICAgLy8gQXMgcmVuZGVyZXIoKSBpbmNsdWRlcyBhIGJyYW5jaCB5b3Ugc2hv
dWxkIGF2b2lkIGNhbGxpbmcgaXQgcmVwZWF0ZWRseSBpbiBob3QgY29kZSBwYXRocy4KKyAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZURhdGEoKSA/IG1f
ZGF0YS5tX3JhcmVEYXRhLT5yZW5kZXJlcigpIDogbV9kYXRhLm1fcmVuZGVyZXI7IH07CisgICAg
dm9pZCBzZXRSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorICAgIHsKKyAgICAgICAg
aWYgKGhhc1JhcmVEYXRhKCkpCisgICAgICAgICAgICBtX2RhdGEubV9yYXJlRGF0YS0+c2V0UmVu
ZGVyZXIocmVuZGVyZXIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2RhdGEubV9yZW5k
ZXJlciA9IHJlbmRlcmVyOworICAgIH0KKwogICAgIC8vIFVzZSB0aGVzZSB0d28gbWV0aG9kcyB3
aXRoIGNhdXRpb24uCiAgICAgUmVuZGVyQm94KiByZW5kZXJCb3goKSBjb25zdDsKICAgICBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyQm94TW9kZWxPYmplY3QoKSBjb25zdDsKQEAgLTgwOSw3
ICs4MjcsMTIgQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgICBOb2Rl
KiBtX3ByZXZpb3VzOwogICAgIE5vZGUqIG1fbmV4dDsKLSAgICBSZW5kZXJPYmplY3QqIG1fcmVu
ZGVyZXI7CisgICAgLy8gV2hlbiBhIG5vZGUgaGFzIHJhcmUgZGF0YSB3ZSBtb3ZlIHRoZSByZW5k
ZXJlciBpbnRvIHRoZSByYXJlIGRhdGEuCisgICAgdW5pb24gRGF0YVVuaW9uIHsKKyAgICAgICAg
RGF0YVVuaW9uKCkgOiBtX3JlbmRlcmVyKDApIHsgfQorICAgICAgICBSZW5kZXJPYmplY3QqIG1f
cmVuZGVyZXI7CisgICAgICAgIE5vZGVSYXJlRGF0YUJhc2UqIG1fcmFyZURhdGE7CisgICAgfSBt
X2RhdGE7CiAKIHByb3RlY3RlZDoKICAgICBib29sIGlzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQo
KSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRGbGFnKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmluZGV4IDVlNWY1YTdkMmI4OWE0OWQxNGMxNTYy
OTJiYmUwMTllYzVjMGI5NTguLmM1NmQwNmY4YThiMDg2N2RhY2Q4Y2NkM2Y3OTZkNzE4NjRjNTYy
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKQEAgLTE3OCw3ICsxNzgsNyBAQCBwcml2
YXRlOgogICAgIFRhZ05vZGVMaXN0Q2FjaGVOUyBtX3RhZ05vZGVMaXN0Q2FjaGVOUzsKIH07CiAK
LWNsYXNzIE5vZGVSYXJlRGF0YSB7CitjbGFzcyBOb2RlUmFyZURhdGEgOiBwdWJsaWMgTm9kZVJh
cmVEYXRhQmFzZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9kZVJhcmVEYXRhKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6ICAgIAogICAgIE5vZGVSYXJlRGF0YSgpCkBA
IC0yMDAsMTkgKzIwMCw2IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdHlwZWRlZiBI
YXNoTWFwPGNvbnN0IE5vZGUqLCBOb2RlUmFyZURhdGEqPiBOb2RlUmFyZURhdGFNYXA7Ci0gICAg
Ci0gICAgc3RhdGljIE5vZGVSYXJlRGF0YU1hcCYgcmFyZURhdGFNYXAoKQotICAgIHsKLSAgICAg
ICAgc3RhdGljIE5vZGVSYXJlRGF0YU1hcCogZGF0YU1hcCA9IG5ldyBOb2RlUmFyZURhdGFNYXA7
Ci0gICAgICAgIHJldHVybiAqZGF0YU1hcDsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIE5vZGVS
YXJlRGF0YSogcmFyZURhdGFGcm9tTWFwKGNvbnN0IE5vZGUqIG5vZGUpCi0gICAgewotICAgICAg
ICByZXR1cm4gcmFyZURhdGFNYXAoKS5nZXQobm9kZSk7Ci0gICAgfQotCiAgICAgVHJlZVNjb3Bl
KiB0cmVlU2NvcGUoKSBjb25zdCB7IHJldHVybiBtX3RyZWVTY29wZTsgfQogICAgIHZvaWQgc2V0
VHJlZVNjb3BlKFRyZWVTY29wZSogdHJlZVNjb3BlKSB7IG1fdHJlZVNjb3BlID0gdHJlZVNjb3Bl
OyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlclN0eWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlclN0eWxlLmgKaW5kZXggMDc0ZTIxMTRi
MTg5NmQ1YjMyODY5ZDIwNGU4ZGIyYjYyMWZjMzcxMy4uY2Y2YTU4YjFmYTQ0ZjUzM2U0MzcwZWQ1
N2M1ZjVhZThmNjZlZjEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5k
ZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyU3R5bGUuaApAQCAt
MzUsOCArMzUsOCBAQCBpbmxpbmUgUmVuZGVyU3R5bGUqIE5vZGU6OnJlbmRlclN0eWxlKCkgY29u
c3QKIHsKICAgICAvLyBVc2luZyBhIHRlcm5hcnkgaGVyZSBjb25mdXNlcyB0aGUgU29sYXJpcyBT
dHVkaW8gMTIvMTIuMS8xMi4yIGNvbXBpbGVyczoKICAgICAvLyBCdWcgaXMgQ1IgNjU2OTE5NCwg
IlByb2JsZW0gd2l0aCBxdWVzdGlvbiBvcGVyYXRvciBiaW5kaW5nIGluIGlubGluZSBmdW5jdGlv
biIKLSAgICBpZiAobV9yZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxl
KCk7CisgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQor
ICAgICAgICByZXR1cm4gcmVuZGVyZXItPnN0eWxlKCk7CiAgICAgcmV0dXJuIG5vblJlbmRlcmVy
U3R5bGUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IDc1MjU1NDJmNjUzZTMxNzRjOTgyM2Jj
MWU2M2JlYjM0NjQyNDVhMDkuLjNmZDBmMTVlYTBmMjE5MTdkOTdhZDRhYzhhYjQ2MjQ5NjU5YmEy
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTI1NiwxNCArMjU2LDE3IEBAIHZvaWQgVGV4dDo6cmVj
YWxjVGV4dFN0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICBpZiAoaGFzQ3VzdG9tQ2FsbGJh
Y2tzKCkpCiAgICAgICAgIHdpbGxSZWNhbGNUZXh0U3R5bGUoY2hhbmdlKTsKIAotICAgIGlmIChj
aGFuZ2UgIT0gTm9DaGFuZ2UgJiYgcGFyZW50Tm9kZSgpICYmIHBhcmVudE5vZGUoKS0+cmVuZGVy
ZXIoKSkgewotICAgICAgICBpZiAocmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHJlbmRlcmVyKCkt
PnNldFN0eWxlKHBhcmVudE5vZGUoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKSk7Ci0gICAgfQorICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOworCisgICAgLy8gVGhl
IG9ubHkgdGltZSB3ZSBoYXZlIGEgcmVuZGVyZXIgYW5kIG91ciBwYXJlbnQgZG9lc24ndCBpcyBp
ZiBvdXIgcGFyZW50CisgICAgLy8gaXMgYSBzaGFkb3cgcm9vdC4KKyAgICBpZiAoY2hhbmdlICE9
IE5vQ2hhbmdlICYmIHJlbmRlcmVyICYmICFwYXJlbnROb2RlKCktPmlzU2hhZG93Um9vdCgpKQor
ICAgICAgICByZW5kZXJlci0+c2V0U3R5bGUocGFyZW50Tm9kZSgpLT5yZW5kZXJlcigpLT5zdHls
ZSgpKTsKKwogICAgIGlmIChuZWVkc1N0eWxlUmVjYWxjKCkpIHsKLSAgICAgICAgaWYgKHJlbmRl
cmVyKCkpIHsKLSAgICAgICAgICAgIGlmIChyZW5kZXJlcigpLT5pc1RleHQoKSkKLSAgICAgICAg
ICAgICAgICB0b1JlbmRlclRleHQocmVuZGVyZXIoKSktPnNldFRleHQoZGF0YUltcGwoKSk7Cisg
ICAgICAgIGlmIChyZW5kZXJlcikgeworICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc1RleHQo
KSkKKyAgICAgICAgICAgICAgICB0b1JlbmRlclRleHQocmVuZGVyZXIpLT5zZXRUZXh0KGRhdGFJ
bXBsKCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHJlYXR0YWNoKCk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172136</attachid>
            <date>2012-11-02 14:26:40 -0700</date>
            <delta_ts>2012-11-02 15:23:36 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-100057-20121102142500.patch</filename>
            <type>text/plain</type>
            <size>14266</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWUyMzU5MjZmMDk4YWE5
OWVmZTY4MWY4Yzc1MDFiNDM0MjA3ZmZkYS4uMDhlYjg3MDA5ZTVkNjY2Mzk3NzE0NjFhODI4NmQ5
MjE0ZDFmNmMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTExLTAyICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlcGxhY2UgTm9k
ZVJhcmVEYXRhIGhhc2ggbWFwIHdpdGggYSB1bmlvbiBvbiBtX3JlbmRlcmVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAwNTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBVc2UgYSB1bmlvbiBvbiBOb2RlOjpt
X3JlbmRlcmVyIGJldHdlZW4gTm9kZVJhcmVEYXRhKiBhbmQgUmVuZGVyT2JqZWN0Ki4gVGhpcyBy
ZW1vdmVzCisgICAgICAgIHRoZSBvdmVyaGVhZCBvZiBhY2Nlc3NpbmcgcmFyZSBkYXRhIGFuZCB0
aGUgbWVtb3J5IGZyb20gdGhlIG1hcC4KKworICAgICAgICBUaGlzIGlzIGFuIDglIGltcHJvdmVt
ZW50IG9uIEJpbmRpbmdzL2dldC1lbGVtZW50cy1ieS10YWctbmFtZS5odG1sIHdoaWNoIHRlc3Rl
ZAorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSBhbmQgd2FzIHByZXZpb3Vz
bHkgb3B0aW1pemVkIGluIEJ1ZyA5MDA1OSBmb3IgYSA1JSAKKyAgICAgICAgaW1wcm92ZW1lbnQu
IEFzIHRoaXMgaXMgYmV0dGVyIHRoYW4gZXZlbiB0aGUgc3BlY2lhbCBjYXNpbmcgZm9yIGRvY3Vt
ZW50IHRoYXQgd2FzCisgICAgICAgIGRvbmUgaW4gdGhhdCBidWcsIGdlbmVyYWwgbm9kZSBsaXN0
IGFjY2VzcyBzaG91bGQgc2VlIGFuIGV2ZW4gZ3JlYXRlciB3aW4uCisKKyAgICAgICAgVGhpcyBp
cyBhbHNvIGEgMTUlIGltcHJvdmVtZW50IG9uIFBhcnNlci90ZXh0YXJlYS1wYXJzaW5nLmh0bWwK
KworICAgICAgICBCeSByZW1vdmluZyB0aGUgb3ZlcmhlYWQgb2YgcmFyZURhdGEoKSB0aGlzIHBh
dGNoIGFkZHJlc3NlcyB0aGUgcGVyZm9ybWFuY2UgaXNzdWVzCisgICAgICAgIHJhaXNlZCBpbiBC
dWdzIDczODUzLCA4NzAzNCBhbmQgODk2MzUuCisKKyAgICAgICAgSSByYW4gUGFyc2VyL2h0bWw1
LWZ1bGwtcmVuZGVyLmh0bWwgYW5kIHRoZXJlIHdhcyBubyBwZXJmb3JtYW5jZSByZWdyZXNzaW9u
IGFmdGVyCisgICAgICAgIHR1bmluZyBUZXh0OjpyZWNhbGNUZXh0U3R5bGUgYW5kIHRoZSByZWZh
Y3RvciB0aGF0IHdhcyBkb25lIGluIHIxMzI2ODQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0
aGlzIGlzIGp1c3QgYSByZWZhY3Rvci4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Tm9kZSk6CisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZWxlbWVudFJhcmVEYXRhKToK
KyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyYXJlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjplbnN1cmVSYXJlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpjbGVhclJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJl
bmRlckJveCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZW5kZXJCb3hNb2RlbE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICog
ZG9tL05vZGUuaDoKKyAgICAgICAgKE5vZGVSYXJlRGF0YUJhc2UpOgorICAgICAgICAgIEJhc2Ug
Y2xhc3MgZm9yIE5vZGVSYXJlRGF0YSB0aGF0IGtub3dzIGFib3V0IHRoZSByZW5kZXJlciBzbyB3
ZSBjYW4KKyAgICAgICAgICBpbmxpbmUgdGhlIGFjY2Vzc2VzIGluIE5vZGUuaAorICAgICAgICAo
V2ViQ29yZTo6Tm9kZVJhcmVEYXRhQmFzZTo6cmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZVJhcmVEYXRhQmFzZTo6c2V0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJh
cmVEYXRhQmFzZTo6fk5vZGVSYXJlRGF0YUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJh
cmVEYXRhQmFzZTo6Tm9kZVJhcmVEYXRhQmFzZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNl
dFJlbmRlcmVyKToKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEu
aDoKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpyZW5kZXJTdHlsZSk6CisgICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dDo6cmVjYWxjVGV4dFN0eWxlKToKKyAgICAgICAgICBUaGlzIG1ldGhvZCBhcHBl
YXJzIHZlcnkgaG90IGluIGh0bWw1LWZ1bGwtcmVuZGVyLmh0bWwgYW5kIGFjY2Vzc2luZyB0aGUK
KyAgICAgICAgICByZW5kZXJlciA0IHRpbWVzIGNhdXNlZCBhIDIlIHBlcmZvcm1hbmNlIHJlZ3Jl
c3Npb24gd2l0aCB0aGlzIHBhdGNoLiBJCisgICAgICAgICAgcmVkdWNlZCBpdCB0byAxIGFjY2Vz
cyBhbmQgdGhlcmUncyBubyBsb25nZXIgYW55IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24uCisKIDIw
MTItMTEtMDIgIExpYW5naHVpIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CiAKICAgICAgICAgW0Js
YWNrQmVycnldIFJlc291cmNlSGFuZGxlOjpjYW5jZWwoKSBpbiBSZXNvdXJjZUhhbmRsZUJsYWNr
QmVycnkgc2hvdWxkIHNldENsaWVudCB0byBudWxsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggZjU4MTIzY2JkYWIwZjMyODViOWJmMjExYmMxMWU1NWE1YTQxOTE3OC4uNjM4ODU5NDAxZTBl
MDNjZDBkZmMzMmVjNDQyZGYzZTcyNDEyN2I0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC00NzgsNyArNDc4LDYgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3Qg
S1VSTCYgdXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQogICAgICwgbV9pc1ZpZXdTb3Vy
Y2UoZmFsc2UpCiAgICAgLCBtX3Nhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFjZXMoZmFsc2UpCiAg
ICAgLCBtX2lzU3JjZG9jRG9jdW1lbnQoZmFsc2UpCi0gICAgLCBtX2RvY3VtZW50UmFyZURhdGEo
MCkKICAgICAsIG1fZXZlbnRRdWV1ZShEb2N1bWVudEV2ZW50UXVldWU6OmNyZWF0ZSh0aGlzKSkK
ICAgICAsIG1fd2Vha1JlZmVyZW5jZShEb2N1bWVudFdlYWtSZWZlcmVuY2U6OmNyZWF0ZSh0aGlz
KSkKICAgICAsIG1faWRBdHRyaWJ1dGVOYW1lKGlkQXR0cikKQEAgLTIwMjYsMTEgKzIwMjUsNiBA
QCB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4
LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JgogICAgIG1hcmdpbkxlZnQgPSBzdHlsZS0+bWFyZ2lu
TGVmdCgpLmlzQXV0bygpID8gbWFyZ2luTGVmdCA6IGludFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5t
YXJnaW5MZWZ0KCksIHdpZHRoLCB2aWV3KTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2V0RG9jdW1l
bnRSYXJlRGF0YShOb2RlUmFyZURhdGEqIHJhcmVEYXRhKQotewotICAgIG1fZG9jdW1lbnRSYXJl
RGF0YSA9IHJhcmVEYXRhOwotfQotCiB2b2lkIERvY3VtZW50OjpzZXRJc1ZpZXdTb3VyY2UoYm9v
bCBpc1ZpZXdTb3VyY2UpCiB7CiAgICAgbV9pc1ZpZXdTb3VyY2UgPSBpc1ZpZXdTb3VyY2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IDk1ZjYwMTc0NjBkNTFiZjY2ZGE0ZGRlZjM5NGJmYmQ2MzY1
ZWE3ZjIuLmFhNWQzZDg0MWIyMjM4NTYzMjRlMmU4YWU1NDRlNzIwMjI3YjcxNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC0xMTYsNyArMTE2LDYgQEAgY2xhc3MgTW91c2VFdmVudFdpdGhIaXRU
ZXN0UmVzdWx0czsKIGNsYXNzIE5hbWVkRmxvd0NvbGxlY3Rpb247CiBjbGFzcyBOb2RlRmlsdGVy
OwogY2xhc3MgTm9kZUl0ZXJhdG9yOwotY2xhc3MgTm9kZVJhcmVEYXRhOwogY2xhc3MgUGFnZTsK
IGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVjdGlvbjsK
QEAgLTQ2Niw5ICs0NjUsNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzU3JjZG9jRG9jdW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX2lzU3JjZG9jRG9jdW1lbnQ7IH0KIAotICAgIE5vZGVSYXJlRGF0
YSogZG9jdW1lbnRSYXJlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnRSYXJlRGF0YTsg
fTsKLSAgICB2b2lkIHNldERvY3VtZW50UmFyZURhdGEoTm9kZVJhcmVEYXRhKik7Ci0KICAgICBT
dHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVySWZFeGlzdHMoKSBjb25zdCB7IHJldHVybiBtX3N0
eWxlUmVzb2x2ZXIuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNWaWV3U291cmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1ZpZXdTb3VyY2U7IH0KQEAgLTE0MjksOCArMTQyNSw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX3Nhd0VsZW1lbnRzSW5Lbm93bk5hbWVzcGFjZXM7CiAgICAgYm9vbCBtX2lzU3Jj
ZG9jRG9jdW1lbnQ7CiAKLSAgICBOb2RlUmFyZURhdGEqIG1fZG9jdW1lbnRSYXJlRGF0YTsKLQog
ICAgIFJlZlB0cjxEb2N1bWVudEV2ZW50UXVldWU+IG1fZXZlbnRRdWV1ZTsKIAogICAgIFJlZlB0
cjxEb2N1bWVudFdlYWtSZWZlcmVuY2U+IG1fd2Vha1JlZmVyZW5jZTsKQEAgLTE1MjYsNyArMTUy
MCw2IEBAIGlubGluZSBOb2RlOjpOb2RlKERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9u
VHlwZSB0eXBlKQogICAgICwgbV9kb2N1bWVudChkb2N1bWVudCkKICAgICAsIG1fcHJldmlvdXMo
MCkKICAgICAsIG1fbmV4dCgwKQotICAgICwgbV9yZW5kZXJlcigwKQogewogICAgIGlmIChkb2N1
bWVudCkKICAgICAgICAgZG9jdW1lbnQtPmd1YXJkUmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
aW5kZXggYWMxZmQwNmVmNDgzMzYxZmQ1NWUzOTc1ODliMjM0N2VjZTY3YjQwYi4uMDJlNjBkYTdh
YWYwNzUwMjM3ZDdjODc3NDBiODM3MGEwMThlMWJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApA
QCAtMTU0LDkgKzE1NCw5IEBAIEVsZW1lbnQ6On5FbGVtZW50KCkKIGlubGluZSBFbGVtZW50UmFy
ZURhdGEqIEVsZW1lbnQ6OmVsZW1lbnRSYXJlRGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhh
c1JhcmVEYXRhKCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50UmFyZURhdGEqPihO
b2RlUmFyZURhdGE6OnJhcmVEYXRhRnJvbU1hcCh0aGlzKSk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEVsZW1lbnRSYXJlRGF0YSo+KHJhcmVEYXRhKCkpOwogfQotICAgIAorCiBpbmxpbmUgRWxl
bWVudFJhcmVEYXRhKiBFbGVtZW50OjplbnN1cmVFbGVtZW50UmFyZURhdGEoKQogewogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxFbGVtZW50UmFyZURhdGEqPihlbnN1cmVSYXJlRGF0YSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAppbmRleCBhZWM2ZDA0YWQ5YjcwMWJkNTUyZjdhNGU1NTQ4MWQ2NTFjNDE5ZGZl
Li4wOWViOTY1Y2UzYWJjNTVjNGE4ZjkzNmYwZTRlZWY4M2I4YTlhNDM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUu
Y3BwCkBAIC00NzAsOSArNDcwLDcgQEAgVHJlZVNjb3BlKiBOb2RlOjp0cmVlU2NvcGUoKSBjb25z
dAogTm9kZVJhcmVEYXRhKiBOb2RlOjpyYXJlRGF0YSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhh
c1JhcmVEYXRhKCkpOwotICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IGlzRG9jdW1lbnROb2RlKCkg
PyBzdGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudCo+KHRoaXMpLT5kb2N1bWVudFJhcmVEYXRhKCkg
OiBOb2RlUmFyZURhdGE6OnJhcmVEYXRhRnJvbU1hcCh0aGlzKTsKLSAgICBBU1NFUlQoZGF0YSk7
Ci0gICAgcmV0dXJuIGRhdGE7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5vZGVSYXJlRGF0YSo+
KG1fZGF0YS5tX3JhcmVEYXRhKTsKIH0KIAogTm9kZVJhcmVEYXRhKiBOb2RlOjplbnN1cmVSYXJl
RGF0YSgpCkBAIC00ODEsMTggKzQ3OSwxMyBAQCBOb2RlUmFyZURhdGEqIE5vZGU6OmVuc3VyZVJh
cmVEYXRhKCkKICAgICAgICAgcmV0dXJuIHJhcmVEYXRhKCk7CiAKICAgICBOb2RlUmFyZURhdGEq
IGRhdGEgPSBjcmVhdGVSYXJlRGF0YSgpLmxlYWtQdHIoKTsKLSAgICBpZiAoaXNEb2N1bWVudE5v
ZGUoKSkgewotICAgICAgICAvLyBGYXN0IHBhdGggZm9yIGEgRG9jdW1lbnQuIEEgRG9jdW1lbnQg
a25vd3MgYSBwb2ludGVyIHRvIE5vZGVSYXJlRGF0YS4KLSAgICAgICAgQVNTRVJUKCFzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KHRoaXMpLT5kb2N1bWVudFJhcmVEYXRhKCkpOwotICAgICAgICBzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KHRoaXMpLT5zZXREb2N1bWVudFJhcmVEYXRhKGRhdGEpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVCghTm9kZVJhcmVEYXRhOjpyYXJlRGF0YU1hcCgpLmNv
bnRhaW5zKHRoaXMpKTsKLSAgICAgICAgTm9kZVJhcmVEYXRhOjpyYXJlRGF0YU1hcCgpLnNldCh0
aGlzLCBkYXRhKTsKLSAgICB9CisgICAgQVNTRVJUKGRhdGEpOworICAgIGRhdGEtPnNldFJlbmRl
cmVyKG1fZGF0YS5tX3JlbmRlcmVyKTsKKyAgICBtX2RhdGEubV9yYXJlRGF0YSA9IGRhdGE7CiAg
ICAgc2V0RmxhZyhIYXNSYXJlRGF0YUZsYWcpOwogICAgIHJldHVybiBkYXRhOwogfQotICAgIAor
CiBPd25QdHI8Tm9kZVJhcmVEYXRhPiBOb2RlOjpjcmVhdGVSYXJlRGF0YSgpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBOb2RlUmFyZURhdGEpOwpAQCAtNTA2LDE5ICs0OTksOSBAQCB2b2lk
IE5vZGU6OmNsZWFyUmFyZURhdGEoKQogICAgIEFTU0VSVCghdHJhbnNpZW50TXV0YXRpb25PYnNl
cnZlclJlZ2lzdHJ5KCkgfHwgdHJhbnNpZW50TXV0YXRpb25PYnNlcnZlclJlZ2lzdHJ5KCktPmlz
RW1wdHkoKSk7CiAjZW5kaWYKIAotICAgIGlmIChpc0RvY3VtZW50Tm9kZSgpKSB7Ci0gICAgICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4odGhpcyk7Ci0gICAg
ICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IGRvY3VtZW50LT5kb2N1bWVudFJhcmVEYXRhKCk7Ci0g
ICAgICAgIEFTU0VSVChkYXRhKTsKLSAgICAgICAgZGVsZXRlIGRhdGE7Ci0gICAgICAgIGRvY3Vt
ZW50LT5zZXREb2N1bWVudFJhcmVEYXRhKDApOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIE5vZGVS
YXJlRGF0YTo6Tm9kZVJhcmVEYXRhTWFwJiBkYXRhTWFwID0gTm9kZVJhcmVEYXRhOjpyYXJlRGF0
YU1hcCgpOwotICAgICAgICBOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0YU1hcDo6aXRlcmF0b3Ig
aXQgPSBkYXRhTWFwLmZpbmQodGhpcyk7Ci0gICAgICAgIEFTU0VSVChpdCAhPSBkYXRhTWFwLmVu
ZCgpKTsKLSAgICAgICAgZGVsZXRlIGl0LT52YWx1ZTsKLSAgICAgICAgZGF0YU1hcC5yZW1vdmUo
aXQpOwotICAgIH0KKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9kYXRhLm1fcmFyZURh
dGEtPnJlbmRlcmVyKCk7CisgICAgZGVsZXRlIG1fZGF0YS5tX3JhcmVEYXRhOworICAgIG1fZGF0
YS5tX3JlbmRlcmVyID0gcmVuZGVyZXI7CiAgICAgY2xlYXJGbGFnKEhhc1JhcmVEYXRhRmxhZyk7
CiB9CiAKQEAgLTc5OCwxMiArNzgxLDE0IEBAIGJvb2wgTm9kZTo6c2hvdWxkVXNlSW5wdXRNZXRo
b2QoKQogCiBSZW5kZXJCb3gqIE5vZGU6OnJlbmRlckJveCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fcmVuZGVyZXIgJiYgbV9yZW5kZXJlci0+aXNCb3goKSA/IHRvUmVuZGVyQm94KG1fcmVuZGVy
ZXIpIDogMDsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsK
KyAgICByZXR1cm4gcmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94KCkgPyB0b1JlbmRlckJveChy
ZW5kZXJlcikgOiAwOwogfQogCiBSZW5kZXJCb3hNb2RlbE9iamVjdCogTm9kZTo6cmVuZGVyQm94
TW9kZWxPYmplY3QoKSBjb25zdAogewotICAgIHJldHVybiBtX3JlbmRlcmVyICYmIG1fcmVuZGVy
ZXItPmlzQm94TW9kZWxPYmplY3QoKSA/IHRvUmVuZGVyQm94TW9kZWxPYmplY3QobV9yZW5kZXJl
cikgOiAwOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwor
ICAgIHJldHVybiByZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3hNb2RlbE9iamVjdCgpID8gdG9S
ZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlcikgOiAwOwogfQogCiBMYXlvdXRSZWN0IE5vZGU6
OmJvdW5kaW5nQm94KCkgY29uc3QKQEAgLTI4MzAsOCArMjgxNSw4IEBAIHZvaWQgTm9kZTo6cmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QK
ICAgICBpbmZvLmFkZE1lbWJlcihtX2RvY3VtZW50KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX25l
eHQpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcHJldmlvdXMpOwotICAgIGlmIChtX3JlbmRlcmVy
KQotICAgICAgICBpbmZvLmFkZE1lbWJlcihtX3JlbmRlcmVyLT5zdHlsZSgpKTsKKyAgICBpZiAo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAgIGluZm8u
YWRkTWVtYmVyKHJlbmRlcmVyLT5zdHlsZSgpKTsKICAgICBpZiAoaGFzUmFyZURhdGEoKSkKICAg
ICAgICAgaW5mby5hZGRNZW1iZXIocmFyZURhdGEoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAyODVi
NGE2MDhlOTgxZWNiYzc2MjNjYjAwZDM1MWM2MzlmNmY5MTgyLi42ODgyMmZiYzgwMmZhM2ZlZTdj
OGYwNGYwYTRjMjBiNTdjODhjNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTExMSw2ICsxMTEsMTcgQEAg
ZW51bSBTdHlsZUNoYW5nZVR5cGUgewogICAgIFN5bnRoZXRpY1N0eWxlQ2hhbmdlID0gMyA8PCBu
b2RlU3R5bGVDaGFuZ2VTaGlmdAogfTsKIAorY2xhc3MgTm9kZVJhcmVEYXRhQmFzZSB7CitwdWJs
aWM6CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVy
ZXI7IH0KKyAgICB2b2lkIHNldFJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgbV9y
ZW5kZXJlciA9IHJlbmRlcmVyOyB9CisgICAgdmlydHVhbCB+Tm9kZVJhcmVEYXRhQmFzZSgpIHsg
fQorcHJvdGVjdGVkOgorICAgIE5vZGVSYXJlRGF0YUJhc2UoKSB7IH0KK3ByaXZhdGU6CisgICAg
UmVuZGVyT2JqZWN0KiBtX3JlbmRlcmVyOworfTsKKwogY2xhc3MgTm9kZSA6IHB1YmxpYyBFdmVu
dFRhcmdldCwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFRyZWVTaGFyZWQ8Tm9kZSwg
Q29udGFpbmVyTm9kZT4gewogICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVudDsKICAgICBmcmllbmQg
Y2xhc3MgVHJlZVNjb3BlOwpAQCAtNDk5LDkgKzUxMCwxNiBAQCBwdWJsaWM6CiAgICAgLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBJbnRlZ3JhdGlvbiB3aXRoIHJlbmRlcmluZyB0cmVl
CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJl
cjsgfQotICAgIHZvaWQgc2V0UmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgeyBtX3Jl
bmRlcmVyID0gcmVuZGVyZXI7IH0KLSAgICAKKyAgICAvLyBBcyByZW5kZXJlcigpIGluY2x1ZGVz
IGEgYnJhbmNoIHlvdSBzaG91bGQgYXZvaWQgY2FsbGluZyBpdCByZXBlYXRlZGx5IGluIGhvdCBj
b2RlIHBhdGhzLgorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBo
YXNSYXJlRGF0YSgpID8gbV9kYXRhLm1fcmFyZURhdGEtPnJlbmRlcmVyKCkgOiBtX2RhdGEubV9y
ZW5kZXJlcjsgfTsKKyAgICB2b2lkIHNldFJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIp
CisgICAgeworICAgICAgICBpZiAoaGFzUmFyZURhdGEoKSkKKyAgICAgICAgICAgIG1fZGF0YS5t
X3JhcmVEYXRhLT5zZXRSZW5kZXJlcihyZW5kZXJlcik7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG1fZGF0YS5tX3JlbmRlcmVyID0gcmVuZGVyZXI7CisgICAgfQorCiAgICAgLy8gVXNlIHRo
ZXNlIHR3byBtZXRob2RzIHdpdGggY2F1dGlvbi4KICAgICBSZW5kZXJCb3gqIHJlbmRlckJveCgp
IGNvbnN0OwogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJCb3hNb2RlbE9iamVjdCgp
IGNvbnN0OwpAQCAtODA5LDcgKzgyNywxMiBAQCBwcml2YXRlOgogICAgIERvY3VtZW50KiBtX2Rv
Y3VtZW50OwogICAgIE5vZGUqIG1fcHJldmlvdXM7CiAgICAgTm9kZSogbV9uZXh0OwotICAgIFJl
bmRlck9iamVjdCogbV9yZW5kZXJlcjsKKyAgICAvLyBXaGVuIGEgbm9kZSBoYXMgcmFyZSBkYXRh
IHdlIG1vdmUgdGhlIHJlbmRlcmVyIGludG8gdGhlIHJhcmUgZGF0YS4KKyAgICB1bmlvbiBEYXRh
VW5pb24geworICAgICAgICBEYXRhVW5pb24oKSA6IG1fcmVuZGVyZXIoMCkgeyB9CisgICAgICAg
IFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKKyAgICAgICAgTm9kZVJhcmVEYXRhQmFzZSogbV9y
YXJlRGF0YTsKKyAgICB9IG1fZGF0YTsKIAogcHJvdGVjdGVkOgogICAgIGJvb2wgaXNQYXJzaW5n
Q2hpbGRyZW5GaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNQYXJzaW5nQ2hpbGRy
ZW5GaW5pc2hlZEZsYWcpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJh
cmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5kZXggNWU1ZjVh
N2QyYjg5YTQ5ZDE0YzE1NjI5MmJiZTAxOWVjNWMwYjk1OC4uYzU2ZDA2ZjhhOGIwODY3ZGFjZDhj
Y2QzZjc5NmQ3MTg2NGM1NjI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtMTc4
LDcgKzE3OCw3IEBAIHByaXZhdGU6CiAgICAgVGFnTm9kZUxpc3RDYWNoZU5TIG1fdGFnTm9kZUxp
c3RDYWNoZU5TOwogfTsKIAotY2xhc3MgTm9kZVJhcmVEYXRhIHsKK2NsYXNzIE5vZGVSYXJlRGF0
YSA6IHB1YmxpYyBOb2RlUmFyZURhdGFCYXNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShO
b2RlUmFyZURhdGEpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzogICAgCiAgICAg
Tm9kZVJhcmVEYXRhKCkKQEAgLTIwMCwxOSArMjAwLDYgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAKLSAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgTm9kZSosIE5vZGVSYXJlRGF0YSo+IE5vZGVS
YXJlRGF0YU1hcDsKLSAgICAKLSAgICBzdGF0aWMgTm9kZVJhcmVEYXRhTWFwJiByYXJlRGF0YU1h
cCgpCi0gICAgewotICAgICAgICBzdGF0aWMgTm9kZVJhcmVEYXRhTWFwKiBkYXRhTWFwID0gbmV3
IE5vZGVSYXJlRGF0YU1hcDsKLSAgICAgICAgcmV0dXJuICpkYXRhTWFwOwotICAgIH0KLSAgICAK
LSAgICBzdGF0aWMgTm9kZVJhcmVEYXRhKiByYXJlRGF0YUZyb21NYXAoY29uc3QgTm9kZSogbm9k
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiByYXJlRGF0YU1hcCgpLmdldChub2RlKTsKLSAgICB9
Ci0KICAgICBUcmVlU2NvcGUqIHRyZWVTY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJlZVNjb3Bl
OyB9CiAgICAgdm9pZCBzZXRUcmVlU2NvcGUoVHJlZVNjb3BlKiB0cmVlU2NvcGUpIHsgbV90cmVl
U2NvcGUgPSB0cmVlU2NvcGU7IH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyU3R5bGUu
aAppbmRleCAwNzRlMjExNGIxODk2ZDViMzI4NjlkMjA0ZThkYjJiNjIxZmMzNzEzLi5jZjZhNThi
MWZhNDRmNTMzZTQzNzBlZDU3YzVmNWFlOGY2NmVmMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
ZW5kZXJTdHlsZS5oCkBAIC0zNSw4ICszNSw4IEBAIGlubGluZSBSZW5kZXJTdHlsZSogTm9kZTo6
cmVuZGVyU3R5bGUoKSBjb25zdAogewogICAgIC8vIFVzaW5nIGEgdGVybmFyeSBoZXJlIGNvbmZ1
c2VzIHRoZSBTb2xhcmlzIFN0dWRpbyAxMi8xMi4xLzEyLjIgY29tcGlsZXJzOgogICAgIC8vIEJ1
ZyBpcyBDUiA2NTY5MTk0LCAiUHJvYmxlbSB3aXRoIHF1ZXN0aW9uIG9wZXJhdG9yIGJpbmRpbmcg
aW4gaW5saW5lIGZ1bmN0aW9uIgotICAgIGlmIChtX3JlbmRlcmVyKQotICAgICAgICByZXR1cm4g
bV9yZW5kZXJlci0+c3R5bGUoKTsKKyAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRo
aXMtPnJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybiByZW5kZXJlci0+c3R5bGUoKTsKICAgICBy
ZXR1cm4gbm9uUmVuZGVyZXJTdHlsZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKaW5kZXggNzUyNTU0
MmY2NTNlMzE3NGM5ODIzYmMxZTYzYmViMzQ2NDI0NWEwOS4uM2ZkMGYxNWVhMGYyMTkxN2Q5N2Fk
NGFjOGFiNDYyNDk2NTliYTIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcApAQCAtMjU2LDE0ICsyNTYsMTcg
QEAgdm9pZCBUZXh0OjpyZWNhbGNUZXh0U3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgIGlm
IChoYXNDdXN0b21DYWxsYmFja3MoKSkKICAgICAgICAgd2lsbFJlY2FsY1RleHRTdHlsZShjaGFu
Z2UpOwogCi0gICAgaWYgKGNoYW5nZSAhPSBOb0NoYW5nZSAmJiBwYXJlbnROb2RlKCkgJiYgcGFy
ZW50Tm9kZSgpLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpKQotICAgICAg
ICAgICAgcmVuZGVyZXIoKS0+c2V0U3R5bGUocGFyZW50Tm9kZSgpLT5yZW5kZXJlcigpLT5zdHls
ZSgpKTsKLSAgICB9CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCk7CisKKyAgICAvLyBUaGUgb25seSB0aW1lIHdlIGhhdmUgYSByZW5kZXJlciBhbmQgb3VyIHBh
cmVudCBkb2Vzbid0IGlzIGlmIG91ciBwYXJlbnQKKyAgICAvLyBpcyBhIHNoYWRvdyByb290Lgor
ICAgIGlmIChjaGFuZ2UgIT0gTm9DaGFuZ2UgJiYgcmVuZGVyZXIgJiYgIXBhcmVudE5vZGUoKS0+
aXNTaGFkb3dSb290KCkpCisgICAgICAgIHJlbmRlcmVyLT5zZXRTdHlsZShwYXJlbnROb2RlKCkt
PnJlbmRlcmVyKCktPnN0eWxlKCkpOworCiAgICAgaWYgKG5lZWRzU3R5bGVSZWNhbGMoKSkgewot
ICAgICAgICBpZiAocmVuZGVyZXIoKSkgewotICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCktPmlz
VGV4dCgpKQotICAgICAgICAgICAgICAgIHRvUmVuZGVyVGV4dChyZW5kZXJlcigpKS0+c2V0VGV4
dChkYXRhSW1wbCgpKTsKKyAgICAgICAgaWYgKHJlbmRlcmVyKSB7CisgICAgICAgICAgICBpZiAo
cmVuZGVyZXItPmlzVGV4dCgpKQorICAgICAgICAgICAgICAgIHRvUmVuZGVyVGV4dChyZW5kZXJl
ciktPnNldFRleHQoZGF0YUltcGwoKSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmVh
dHRhY2goKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172156</attachid>
            <date>2012-11-02 15:23:39 -0700</date>
            <delta_ts>2012-11-02 16:40:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100057-20121102152159.patch</filename>
            <type>text/plain</type>
            <size>17070</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWUyMzU5MjZmMDk4YWE5
OWVmZTY4MWY4Yzc1MDFiNDM0MjA3ZmZkYS4uYWNiZmM2NWY2ZTg2ZmM5YzRjY2Y2NjEyMzRkZDI1
ZDQyYjE4ZWQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTExLTAyICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlcGxhY2UgTm9k
ZVJhcmVEYXRhIGhhc2ggbWFwIHdpdGggYSB1bmlvbiBvbiBtX3JlbmRlcmVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAwNTcKKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KKworICAgICAgICBVc2UgYSB1bmlvbiBvbiBOb2RlOjpt
X3JlbmRlcmVyIGJldHdlZW4gTm9kZVJhcmVEYXRhKiBhbmQgUmVuZGVyT2JqZWN0Ki4gVGhpcyBy
ZW1vdmVzCisgICAgICAgIHRoZSBvdmVyaGVhZCBvZiBhY2Nlc3NpbmcgcmFyZSBkYXRhIGFuZCB0
aGUgbWVtb3J5IGZyb20gdGhlIG1hcC4KKworICAgICAgICBUaGlzIGlzIGFuIDglIGltcHJvdmVt
ZW50IG9uIEJpbmRpbmdzL2dldC1lbGVtZW50cy1ieS10YWctbmFtZS5odG1sIHdoaWNoIHRlc3Rl
ZAorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSBhbmQgd2FzIHByZXZpb3Vz
bHkgb3B0aW1pemVkIGluIEJ1ZyA5MDA1OSBmb3IgYSA1JSAKKyAgICAgICAgaW1wcm92ZW1lbnQu
IEFzIHRoaXMgaXMgYmV0dGVyIHRoYW4gZXZlbiB0aGUgc3BlY2lhbCBjYXNpbmcgZm9yIGRvY3Vt
ZW50IHRoYXQgd2FzCisgICAgICAgIGRvbmUgaW4gdGhhdCBidWcsIGdlbmVyYWwgbm9kZSBsaXN0
IGFjY2VzcyBzaG91bGQgc2VlIGFuIGV2ZW4gZ3JlYXRlciB3aW4uCisKKyAgICAgICAgVGhpcyBy
ZWR1Y2VzIHRoZSBtZW1vcnkgdXNhZ2Ugb24gbnl0aW1lcy5jb20gYnkgMjUwayBwZXIgQnVnIDEw
MTA1MiBieQorICAgICAgICByZW1vdmluZyB0aGUgcmFyZSBkYXRhIG1hcCBvdmVyaGVhZC4KKwor
ICAgICAgICBUaGlzIGlzIGFsc28gYSAxNSUgaW1wcm92ZW1lbnQgb24gUGFyc2VyL3RleHRhcmVh
LXBhcnNpbmcuaHRtbAorCisgICAgICAgIEJ5IHJlbW92aW5nIHRoZSBwZXJmb3JtYW5jZSBvdmVy
aGVhZCBvZiByYXJlRGF0YSgpIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIHRoZSBwZXJmb3JtYW5jZQor
ICAgICAgICBpc3N1ZXMgcmFpc2VkIGluIEJ1Z3MgNzM4NTMsIDg3MDM0IGFuZCA4OTYzNS4KKwor
ICAgICAgICBJIHJhbiBQYXJzZXIvaHRtbDUtZnVsbC1yZW5kZXIuaHRtbCBhbmQgdGhlcmUgd2Fz
IG5vIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gYWZ0ZXIKKyAgICAgICAgdHVuaW5nIFRleHQ6OnJl
Y2FsY1RleHRTdHlsZSBhbmQgdGhlIHJlZmFjdG9yIHRoYXQgd2FzIGRvbmUgaW4gcjEzMjY4NC4K
KworICAgICAgICBObyBuZXcgdGVzdHMsIHRoaXMgaXMganVzdCBhIHJlZmFjdG9yLgorCisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1
bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpOb2RlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjplbGVtZW50UmFyZURhdGEpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmVu
c3VyZVJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNsZWFyUmFyZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVuZGVyQm94KToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OnJlbmRlckJveE1vZGVsT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlcG9y
dE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoTm9kZVJhcmVE
YXRhQmFzZSk6CisgICAgICAgICAgQmFzZSBjbGFzcyBmb3IgTm9kZVJhcmVEYXRhIHRoYXQga25v
d3MgYWJvdXQgdGhlIHJlbmRlcmVyIHNvIHdlIGNhbgorICAgICAgICAgIGlubGluZSB0aGUgYWNj
ZXNzZXMgaW4gTm9kZS5oCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGFCYXNlOjpyZW5k
ZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGFCYXNlOjpzZXRSZW5kZXJlcik6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGFCYXNlOjp+Tm9kZVJhcmVEYXRhQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGFCYXNlOjpOb2RlUmFyZURhdGFCYXNlKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVuZGVyZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0UmVuZGVyZXIpOgorICAgICAgICAoTm9kZSk6Cisg
ICAgICAgICogZG9tL05vZGVSYXJlRGF0YS5oOgorICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyU3R5
bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnJlbmRlclN0eWxlKToKKyAgICAgICAgKiBk
b20vVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0OjpyZWNhbGNUZXh0U3R5bGUpOgor
ICAgICAgICAgIFRoaXMgbWV0aG9kIGFwcGVhcnMgdmVyeSBob3QgaW4gaHRtbDUtZnVsbC1yZW5k
ZXIuaHRtbCBhbmQgYWNjZXNzaW5nIHRoZQorICAgICAgICAgIHJlbmRlcmVyIDQgdGltZXMgY2F1
c2VkIGEgMiUgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiB3aXRoIHRoaXMgcGF0Y2guIEkKKyAgICAg
ICAgICByZWR1Y2VkIGl0IHRvIDEgYWNjZXNzIGFuZCB0aGVyZSdzIG5vIGxvbmdlciBhbnkgcGVy
Zm9ybWFuY2UgcmVncmVzc2lvbi4KKyAgICAgICAgKiBkb20vV2ViQ29yZU1lbW9yeUluc3RydW1l
bnRhdGlvbi5jcHA6CisgICAgICAgICAgUmVtb3ZlZCB0cmFja2luZyBvZiB0aGUgcmFyZSBkYXRh
IG1hcCBtZW1vcnkgdXNhZ2UgYXMgdGhlcmUgaXMgbm8gbG9uZ2VyCisgICAgICAgICAgYSBtYXAg
dG8gdHJhY2suCisgICAgICAgICogZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yTWVtb3J5QWdlbnQ6OmdldFByb2Nlc3NNZW1vcnlEaXN0cmlidXRp
b24pOgorCiAyMDEyLTExLTAyICBMaWFuZ2h1aSBDaGVuICA8bGlhY2hlbkByaW0uY29tPgogCiAg
ICAgICAgIFtCbGFja0JlcnJ5XSBSZXNvdXJjZUhhbmRsZTo6Y2FuY2VsKCkgaW4gUmVzb3VyY2VI
YW5kbGVCbGFja0JlcnJ5IHNob3VsZCBzZXRDbGllbnQgdG8gbnVsbC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IGY1ODEyM2NiZGFiMGYzMjg1YjliZjIxMWJjMTFlNTVhNWE0MTkxNzguLjYz
ODg1OTQwMWUwZTAzY2QwZGZjMzJlYzQ0MmRmM2U3MjQxMjdiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtNDc4LDcgKzQ3OCw2IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJh
bWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkKICAgICAsIG1f
aXNWaWV3U291cmNlKGZhbHNlKQogICAgICwgbV9zYXdFbGVtZW50c0luS25vd25OYW1lc3BhY2Vz
KGZhbHNlKQogICAgICwgbV9pc1NyY2RvY0RvY3VtZW50KGZhbHNlKQotICAgICwgbV9kb2N1bWVu
dFJhcmVEYXRhKDApCiAgICAgLCBtX2V2ZW50UXVldWUoRG9jdW1lbnRFdmVudFF1ZXVlOjpjcmVh
dGUodGhpcykpCiAgICAgLCBtX3dlYWtSZWZlcmVuY2UoRG9jdW1lbnRXZWFrUmVmZXJlbmNlOjpj
cmVhdGUodGhpcykpCiAgICAgLCBtX2lkQXR0cmlidXRlTmFtZShpZEF0dHIpCkBAIC0yMDI2LDEx
ICsyMDI1LDYgQEAgdm9pZCBEb2N1bWVudDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50
IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNpemUsIGludCYKICAgICBtYXJnaW5MZWZ0ID0gc3R5
bGUtPm1hcmdpbkxlZnQoKS5pc0F1dG8oKSA/IG1hcmdpbkxlZnQgOiBpbnRWYWx1ZUZvckxlbmd0
aChzdHlsZS0+bWFyZ2luTGVmdCgpLCB3aWR0aCwgdmlldyk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6
OnNldERvY3VtZW50UmFyZURhdGEoTm9kZVJhcmVEYXRhKiByYXJlRGF0YSkKLXsKLSAgICBtX2Rv
Y3VtZW50UmFyZURhdGEgPSByYXJlRGF0YTsKLX0KLQogdm9pZCBEb2N1bWVudDo6c2V0SXNWaWV3
U291cmNlKGJvb2wgaXNWaWV3U291cmNlKQogewogICAgIG1faXNWaWV3U291cmNlID0gaXNWaWV3
U291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA5NWY2MDE3NDYwZDUxYmY2NmRhNGRkZWYz
OTRiZmJkNjM2NWVhN2YyLi5hYTVkM2Q4NDFiMjIzODU2MzI0ZTJlOGFlNTQ0ZTcyMDIyN2I3MTc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTE2LDcgKzExNiw2IEBAIGNsYXNzIE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHM7CiBjbGFzcyBOYW1lZEZsb3dDb2xsZWN0aW9uOwogY2xhc3Mg
Tm9kZUZpbHRlcjsKIGNsYXNzIE5vZGVJdGVyYXRvcjsKLWNsYXNzIE5vZGVSYXJlRGF0YTsKIGNs
YXNzIFBhZ2U7CiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiBjbGFzcyBQcm9jZXNzaW5nSW5z
dHJ1Y3Rpb247CkBAIC00NjYsOSArNDY1LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1NyY2Rv
Y0RvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1NyY2RvY0RvY3VtZW50OyB9CiAKLSAgICBO
b2RlUmFyZURhdGEqIGRvY3VtZW50UmFyZURhdGEoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50
UmFyZURhdGE7IH07Ci0gICAgdm9pZCBzZXREb2N1bWVudFJhcmVEYXRhKE5vZGVSYXJlRGF0YSop
OwotCiAgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcklmRXhpc3RzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHlsZVJlc29sdmVyLmdldCgpOyB9CiAKICAgICBib29sIGlzVmlld1NvdXJjZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNWaWV3U291cmNlOyB9CkBAIC0xNDI5LDggKzE0MjUsNiBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9zYXdFbGVtZW50c0luS25vd25OYW1lc3BhY2VzOwogICAgIGJv
b2wgbV9pc1NyY2RvY0RvY3VtZW50OwogCi0gICAgTm9kZVJhcmVEYXRhKiBtX2RvY3VtZW50UmFy
ZURhdGE7Ci0KICAgICBSZWZQdHI8RG9jdW1lbnRFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7CiAK
ICAgICBSZWZQdHI8RG9jdW1lbnRXZWFrUmVmZXJlbmNlPiBtX3dlYWtSZWZlcmVuY2U7CkBAIC0x
NTI2LDcgKzE1MjAsNiBAQCBpbmxpbmUgTm9kZTo6Tm9kZShEb2N1bWVudCogZG9jdW1lbnQsIENv
bnN0cnVjdGlvblR5cGUgdHlwZSkKICAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCiAgICAgLCBt
X3ByZXZpb3VzKDApCiAgICAgLCBtX25leHQoMCkKLSAgICAsIG1fcmVuZGVyZXIoMCkKIHsKICAg
ICBpZiAoZG9jdW1lbnQpCiAgICAgICAgIGRvY3VtZW50LT5ndWFyZFJlZigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCmluZGV4IGFjMWZkMDZlZjQ4MzM2MWZkNTVlMzk3NTg5YjIzNDdlY2U2N2I0MGIu
LjAyZTYwZGE3YWFmMDc1MDIzN2Q3Yzg3NzQwYjgzNzBhMDE4ZTFiZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKQEAgLTE1NCw5ICsxNTQsOSBAQCBFbGVtZW50Ojp+RWxlbWVudCgpCiBpbmxpbmUg
RWxlbWVudFJhcmVEYXRhKiBFbGVtZW50OjplbGVtZW50UmFyZURhdGEoKSBjb25zdAogewogICAg
IEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFJh
cmVEYXRhKj4oTm9kZVJhcmVEYXRhOjpyYXJlRGF0YUZyb21NYXAodGhpcykpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxFbGVtZW50UmFyZURhdGEqPihyYXJlRGF0YSgpKTsKIH0KLSAgICAKKwog
aW5saW5lIEVsZW1lbnRSYXJlRGF0YSogRWxlbWVudDo6ZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkK
IHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFJhcmVEYXRhKj4oZW5zdXJlUmFyZURh
dGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYWVjNmQwNGFkOWI3MDFiZDU1MmY3YTRlNTU0ODFk
NjUxYzQxOWRmZS4uMDllYjk2NWNlM2FiYzU1YzRhOGY5MzZmMGU0ZWVmODNiOGE5YTQzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcApAQCAtNDcwLDkgKzQ3MCw3IEBAIFRyZWVTY29wZSogTm9kZTo6dHJlZVNj
b3BlKCkgY29uc3QKIE5vZGVSYXJlRGF0YSogTm9kZTo6cmFyZURhdGEoKSBjb25zdAogewogICAg
IEFTU0VSVChoYXNSYXJlRGF0YSgpKTsKLSAgICBOb2RlUmFyZURhdGEqIGRhdGEgPSBpc0RvY3Vt
ZW50Tm9kZSgpID8gc3RhdGljX2Nhc3Q8Y29uc3QgRG9jdW1lbnQqPih0aGlzKS0+ZG9jdW1lbnRS
YXJlRGF0YSgpIDogTm9kZVJhcmVEYXRhOjpyYXJlRGF0YUZyb21NYXAodGhpcyk7Ci0gICAgQVNT
RVJUKGRhdGEpOwotICAgIHJldHVybiBkYXRhOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxOb2Rl
UmFyZURhdGEqPihtX2RhdGEubV9yYXJlRGF0YSk7CiB9CiAKIE5vZGVSYXJlRGF0YSogTm9kZTo6
ZW5zdXJlUmFyZURhdGEoKQpAQCAtNDgxLDE4ICs0NzksMTMgQEAgTm9kZVJhcmVEYXRhKiBOb2Rl
OjplbnN1cmVSYXJlRGF0YSgpCiAgICAgICAgIHJldHVybiByYXJlRGF0YSgpOwogCiAgICAgTm9k
ZVJhcmVEYXRhKiBkYXRhID0gY3JlYXRlUmFyZURhdGEoKS5sZWFrUHRyKCk7Ci0gICAgaWYgKGlz
RG9jdW1lbnROb2RlKCkpIHsKLSAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBhIERvY3VtZW50LiBB
IERvY3VtZW50IGtub3dzIGEgcG9pbnRlciB0byBOb2RlUmFyZURhdGEuCi0gICAgICAgIEFTU0VS
VCghc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPih0aGlzKS0+ZG9jdW1lbnRSYXJlRGF0YSgpKTsKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPih0aGlzKS0+c2V0RG9jdW1lbnRSYXJlRGF0YShk
YXRhKTsKLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoIU5vZGVSYXJlRGF0YTo6cmFyZURh
dGFNYXAoKS5jb250YWlucyh0aGlzKSk7Ci0gICAgICAgIE5vZGVSYXJlRGF0YTo6cmFyZURhdGFN
YXAoKS5zZXQodGhpcywgZGF0YSk7Ci0gICAgfQorICAgIEFTU0VSVChkYXRhKTsKKyAgICBkYXRh
LT5zZXRSZW5kZXJlcihtX2RhdGEubV9yZW5kZXJlcik7CisgICAgbV9kYXRhLm1fcmFyZURhdGEg
PSBkYXRhOwogICAgIHNldEZsYWcoSGFzUmFyZURhdGFGbGFnKTsKICAgICByZXR1cm4gZGF0YTsK
IH0KLSAgICAKKwogT3duUHRyPE5vZGVSYXJlRGF0YT4gTm9kZTo6Y3JlYXRlUmFyZURhdGEoKQog
ewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgTm9kZVJhcmVEYXRhKTsKQEAgLTUwNiwxOSArNDk5
LDkgQEAgdm9pZCBOb2RlOjpjbGVhclJhcmVEYXRhKCkKICAgICBBU1NFUlQoIXRyYW5zaWVudE11
dGF0aW9uT2JzZXJ2ZXJSZWdpc3RyeSgpIHx8IHRyYW5zaWVudE11dGF0aW9uT2JzZXJ2ZXJSZWdp
c3RyeSgpLT5pc0VtcHR5KCkpOwogI2VuZGlmCiAKLSAgICBpZiAoaXNEb2N1bWVudE5vZGUoKSkg
ewotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KHRo
aXMpOwotICAgICAgICBOb2RlUmFyZURhdGEqIGRhdGEgPSBkb2N1bWVudC0+ZG9jdW1lbnRSYXJl
RGF0YSgpOwotICAgICAgICBBU1NFUlQoZGF0YSk7Ci0gICAgICAgIGRlbGV0ZSBkYXRhOwotICAg
ICAgICBkb2N1bWVudC0+c2V0RG9jdW1lbnRSYXJlRGF0YSgwKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICBOb2RlUmFyZURhdGE6Ok5vZGVSYXJlRGF0YU1hcCYgZGF0YU1hcCA9IE5vZGVSYXJlRGF0
YTo6cmFyZURhdGFNYXAoKTsKLSAgICAgICAgTm9kZVJhcmVEYXRhOjpOb2RlUmFyZURhdGFNYXA6
Oml0ZXJhdG9yIGl0ID0gZGF0YU1hcC5maW5kKHRoaXMpOwotICAgICAgICBBU1NFUlQoaXQgIT0g
ZGF0YU1hcC5lbmQoKSk7Ci0gICAgICAgIGRlbGV0ZSBpdC0+dmFsdWU7Ci0gICAgICAgIGRhdGFN
YXAucmVtb3ZlKGl0KTsKLSAgICB9CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fZGF0
YS5tX3JhcmVEYXRhLT5yZW5kZXJlcigpOworICAgIGRlbGV0ZSBtX2RhdGEubV9yYXJlRGF0YTsK
KyAgICBtX2RhdGEubV9yZW5kZXJlciA9IHJlbmRlcmVyOwogICAgIGNsZWFyRmxhZyhIYXNSYXJl
RGF0YUZsYWcpOwogfQogCkBAIC03OTgsMTIgKzc4MSwxNCBAQCBib29sIE5vZGU6OnNob3VsZFVz
ZUlucHV0TWV0aG9kKCkKIAogUmVuZGVyQm94KiBOb2RlOjpyZW5kZXJCb3goKSBjb25zdAogewot
ICAgIHJldHVybiBtX3JlbmRlcmVyICYmIG1fcmVuZGVyZXItPmlzQm94KCkgPyB0b1JlbmRlckJv
eChtX3JlbmRlcmVyKSA6IDA7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJl
bmRlcmVyKCk7CisgICAgcmV0dXJuIHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0JveCgpID8gdG9S
ZW5kZXJCb3gocmVuZGVyZXIpIDogMDsKIH0KIAogUmVuZGVyQm94TW9kZWxPYmplY3QqIE5vZGU6
OnJlbmRlckJveE1vZGVsT2JqZWN0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9yZW5kZXJlciAm
JiBtX3JlbmRlcmVyLT5pc0JveE1vZGVsT2JqZWN0KCkgPyB0b1JlbmRlckJveE1vZGVsT2JqZWN0
KG1fcmVuZGVyZXIpIDogMDsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVu
ZGVyZXIoKTsKKyAgICByZXR1cm4gcmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzQm94TW9kZWxPYmpl
Y3QoKSA/IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIpIDogMDsKIH0KIAogTGF5b3V0
UmVjdCBOb2RlOjpib3VuZGluZ0JveCgpIGNvbnN0CkBAIC0yODMwLDggKzI4MTUsOCBAQCB2b2lk
IE5vZGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0CiAgICAgaW5mby5hZGRNZW1iZXIobV9kb2N1bWVudCk7CiAgICAgaW5mby5hZGRN
ZW1iZXIobV9uZXh0KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3ByZXZpb3VzKTsKLSAgICBpZiAo
bV9yZW5kZXJlcikKLSAgICAgICAgaW5mby5hZGRNZW1iZXIobV9yZW5kZXJlci0+c3R5bGUoKSk7
CisgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAg
ICAgICBpbmZvLmFkZE1lbWJlcihyZW5kZXJlci0+c3R5bGUoKSk7CiAgICAgaWYgKGhhc1JhcmVE
YXRhKCkpCiAgICAgICAgIGluZm8uYWRkTWVtYmVyKHJhcmVEYXRhKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgK
aW5kZXggMjg1YjRhNjA4ZTk4MWVjYmM3NjIzY2IwMGQzNTFjNjM5ZjZmOTE4Mi4uNjg4MjJmYmM4
MDJmYTNmZWU3YzhmMDRmMGE0YzIwYjU3Yzg4YzZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0xMTEsNiAr
MTExLDE3IEBAIGVudW0gU3R5bGVDaGFuZ2VUeXBlIHsKICAgICBTeW50aGV0aWNTdHlsZUNoYW5n
ZSA9IDMgPDwgbm9kZVN0eWxlQ2hhbmdlU2hpZnQKIH07CiAKK2NsYXNzIE5vZGVSYXJlRGF0YUJh
c2UgeworcHVibGljOgorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVy
biBtX3JlbmRlcmVyOyB9CisgICAgdm9pZCBzZXRSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKSB7IG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgfQorICAgIHZpcnR1YWwgfk5vZGVSYXJlRGF0
YUJhc2UoKSB7IH0KK3Byb3RlY3RlZDoKKyAgICBOb2RlUmFyZURhdGFCYXNlKCkgeyB9Citwcml2
YXRlOgorICAgIFJlbmRlck9iamVjdCogbV9yZW5kZXJlcjsKK307CisKIGNsYXNzIE5vZGUgOiBw
dWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBUcmVlU2hh
cmVkPE5vZGUsIENvbnRhaW5lck5vZGU+IHsKICAgICBmcmllbmQgY2xhc3MgRG9jdW1lbnQ7CiAg
ICAgZnJpZW5kIGNsYXNzIFRyZWVTY29wZTsKQEAgLTQ5OSw5ICs1MTAsMTYgQEAgcHVibGljOgog
ICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgLy8gSW50ZWdyYXRpb24gd2l0aCByZW5k
ZXJpbmcgdHJlZQogCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVuZGVyZXI7IH0KLSAgICB2b2lkIHNldFJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIpIHsgbV9yZW5kZXJlciA9IHJlbmRlcmVyOyB9Ci0gICAgCisgICAgLy8gQXMgcmVuZGVyZXIo
KSBpbmNsdWRlcyBhIGJyYW5jaCB5b3Ugc2hvdWxkIGF2b2lkIGNhbGxpbmcgaXQgcmVwZWF0ZWRs
eSBpbiBob3QgY29kZSBwYXRocy4KKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3Qg
eyByZXR1cm4gaGFzUmFyZURhdGEoKSA/IG1fZGF0YS5tX3JhcmVEYXRhLT5yZW5kZXJlcigpIDog
bV9kYXRhLm1fcmVuZGVyZXI7IH07CisgICAgdm9pZCBzZXRSZW5kZXJlcihSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKQorICAgIHsKKyAgICAgICAgaWYgKGhhc1JhcmVEYXRhKCkpCisgICAgICAgICAg
ICBtX2RhdGEubV9yYXJlRGF0YS0+c2V0UmVuZGVyZXIocmVuZGVyZXIpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX2RhdGEubV9yZW5kZXJlciA9IHJlbmRlcmVyOworICAgIH0KKwogICAg
IC8vIFVzZSB0aGVzZSB0d28gbWV0aG9kcyB3aXRoIGNhdXRpb24uCiAgICAgUmVuZGVyQm94KiBy
ZW5kZXJCb3goKSBjb25zdDsKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyQm94TW9k
ZWxPYmplY3QoKSBjb25zdDsKQEAgLTgwOSw3ICs4MjcsMTIgQEAgcHJpdmF0ZToKICAgICBEb2N1
bWVudCogbV9kb2N1bWVudDsKICAgICBOb2RlKiBtX3ByZXZpb3VzOwogICAgIE5vZGUqIG1fbmV4
dDsKLSAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CisgICAgLy8gV2hlbiBhIG5vZGUgaGFz
IHJhcmUgZGF0YSB3ZSBtb3ZlIHRoZSByZW5kZXJlciBpbnRvIHRoZSByYXJlIGRhdGEuCisgICAg
dW5pb24gRGF0YVVuaW9uIHsKKyAgICAgICAgRGF0YVVuaW9uKCkgOiBtX3JlbmRlcmVyKDApIHsg
fQorICAgICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CisgICAgICAgIE5vZGVSYXJlRGF0
YUJhc2UqIG1fcmFyZURhdGE7CisgICAgfSBtX2RhdGE7CiAKIHByb3RlY3RlZDoKICAgICBib29s
IGlzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzUGFy
c2luZ0NoaWxkcmVuRmluaXNoZWRGbGFnKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCmlu
ZGV4IDVlNWY1YTdkMmI4OWE0OWQxNGMxNTYyOTJiYmUwMTllYzVjMGI5NTguLmM1NmQwNmY4YThi
MDg2N2RhY2Q4Y2NkM2Y3OTZkNzE4NjRjNTYyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRh
LmgKQEAgLTE3OCw3ICsxNzgsNyBAQCBwcml2YXRlOgogICAgIFRhZ05vZGVMaXN0Q2FjaGVOUyBt
X3RhZ05vZGVMaXN0Q2FjaGVOUzsKIH07CiAKLWNsYXNzIE5vZGVSYXJlRGF0YSB7CitjbGFzcyBO
b2RlUmFyZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhQmFzZSB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoTm9kZVJhcmVEYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
ICAgIAogICAgIE5vZGVSYXJlRGF0YSgpCkBAIC0yMDAsMTkgKzIwMCw2IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogCi0gICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IE5vZGUqLCBOb2RlUmFyZURh
dGEqPiBOb2RlUmFyZURhdGFNYXA7Ci0gICAgCi0gICAgc3RhdGljIE5vZGVSYXJlRGF0YU1hcCYg
cmFyZURhdGFNYXAoKQotICAgIHsKLSAgICAgICAgc3RhdGljIE5vZGVSYXJlRGF0YU1hcCogZGF0
YU1hcCA9IG5ldyBOb2RlUmFyZURhdGFNYXA7Ci0gICAgICAgIHJldHVybiAqZGF0YU1hcDsKLSAg
ICB9Ci0gICAgCi0gICAgc3RhdGljIE5vZGVSYXJlRGF0YSogcmFyZURhdGFGcm9tTWFwKGNvbnN0
IE5vZGUqIG5vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gcmFyZURhdGFNYXAoKS5nZXQobm9k
ZSk7Ci0gICAgfQotCiAgICAgVHJlZVNjb3BlKiB0cmVlU2NvcGUoKSBjb25zdCB7IHJldHVybiBt
X3RyZWVTY29wZTsgfQogICAgIHZvaWQgc2V0VHJlZVNjb3BlKFRyZWVTY29wZSogdHJlZVNjb3Bl
KSB7IG1fdHJlZVNjb3BlID0gdHJlZVNjb3BlOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlclN0eWxlLmgKaW5kZXggMDc0ZTIxMTRiMTg5NmQ1YjMyODY5ZDIwNGU4ZGIyYjYyMWZjMzcx
My4uY2Y2YTU4YjFmYTQ0ZjUzM2U0MzcwZWQ1N2M1ZjVhZThmNjZlZjEyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmVuZGVyU3R5bGUuaApAQCAtMzUsOCArMzUsOCBAQCBpbmxpbmUgUmVuZGVyU3R5
bGUqIE5vZGU6OnJlbmRlclN0eWxlKCkgY29uc3QKIHsKICAgICAvLyBVc2luZyBhIHRlcm5hcnkg
aGVyZSBjb25mdXNlcyB0aGUgU29sYXJpcyBTdHVkaW8gMTIvMTIuMS8xMi4yIGNvbXBpbGVyczoK
ICAgICAvLyBCdWcgaXMgQ1IgNjU2OTE5NCwgIlByb2JsZW0gd2l0aCBxdWVzdGlvbiBvcGVyYXRv
ciBiaW5kaW5nIGluIGlubGluZSBmdW5jdGlvbiIKLSAgICBpZiAobV9yZW5kZXJlcikKLSAgICAg
ICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCk7CisgICAgaWYgKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gcmVuZGVyZXItPnN0eWxl
KCk7CiAgICAgcmV0dXJuIG5vblJlbmRlcmVyU3R5bGUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCmlu
ZGV4IDc1MjU1NDJmNjUzZTMxNzRjOTgyM2JjMWU2M2JlYjM0NjQyNDVhMDkuLjNmZDBmMTVlYTBm
MjE5MTdkOTdhZDRhYzhhYjQ2MjQ5NjU5YmEyM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKQEAgLTI1Niwx
NCArMjU2LDE3IEBAIHZvaWQgVGV4dDo6cmVjYWxjVGV4dFN0eWxlKFN0eWxlQ2hhbmdlIGNoYW5n
ZSkKICAgICBpZiAoaGFzQ3VzdG9tQ2FsbGJhY2tzKCkpCiAgICAgICAgIHdpbGxSZWNhbGNUZXh0
U3R5bGUoY2hhbmdlKTsKIAotICAgIGlmIChjaGFuZ2UgIT0gTm9DaGFuZ2UgJiYgcGFyZW50Tm9k
ZSgpICYmIHBhcmVudE5vZGUoKS0+cmVuZGVyZXIoKSkgewotICAgICAgICBpZiAocmVuZGVyZXIo
KSkKLSAgICAgICAgICAgIHJlbmRlcmVyKCktPnNldFN0eWxlKHBhcmVudE5vZGUoKS0+cmVuZGVy
ZXIoKS0+c3R5bGUoKSk7Ci0gICAgfQorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpOworCisgICAgLy8gVGhlIG9ubHkgdGltZSB3ZSBoYXZlIGEgcmVuZGVyZXIg
YW5kIG91ciBwYXJlbnQgZG9lc24ndCBpcyBpZiBvdXIgcGFyZW50CisgICAgLy8gaXMgYSBzaGFk
b3cgcm9vdC4KKyAgICBpZiAoY2hhbmdlICE9IE5vQ2hhbmdlICYmIHJlbmRlcmVyICYmICFwYXJl
bnROb2RlKCktPmlzU2hhZG93Um9vdCgpKQorICAgICAgICByZW5kZXJlci0+c2V0U3R5bGUocGFy
ZW50Tm9kZSgpLT5yZW5kZXJlcigpLT5zdHlsZSgpKTsKKwogICAgIGlmIChuZWVkc1N0eWxlUmVj
YWxjKCkpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIGlmIChyZW5k
ZXJlcigpLT5pc1RleHQoKSkKLSAgICAgICAgICAgICAgICB0b1JlbmRlclRleHQocmVuZGVyZXIo
KSktPnNldFRleHQoZGF0YUltcGwoKSk7CisgICAgICAgIGlmIChyZW5kZXJlcikgeworICAgICAg
ICAgICAgaWYgKHJlbmRlcmVyLT5pc1RleHQoKSkKKyAgICAgICAgICAgICAgICB0b1JlbmRlclRl
eHQocmVuZGVyZXIpLT5zZXRUZXh0KGRhdGFJbXBsKCkpOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIHJlYXR0YWNoKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1dl
YkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDliZjBlNmQ5YjI3Y2I0ZWU2YjUx
ZDVmNTdjZjcxNDYyNjAwM2IxNzYuLjcxNDEwYTE0ZWZlODZjMTExNTJmMmM3NjkxNmU5OWM3MTcz
ODExYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViQ29yZU1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5jcHAKQEAgLTMxLDEwICszMSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogCi0jaW5jbHVkZSAiTm9k
ZS5oIgotI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgotI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0
cnVtZW50YXRpb25IYXNoTWFwLmg+Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTWVtb3J5T2Jq
ZWN0VHlwZSBXZWJDb3JlTWVtb3J5VHlwZXM6OlBhZ2UgPSAiUGFnZSI7CkBAIC03Niw5ICs3Miw0
IEBAIE1lbW9yeU9iamVjdFR5cGUgV2ViQ29yZU1lbW9yeVR5cGVzOjpSZW5kZXJUcmVlVW51c2Vk
ID0gIlJlbmRlclRyZWUuVW51c2VkIjsKIAogTWVtb3J5T2JqZWN0VHlwZSBXZWJDb3JlTWVtb3J5
VHlwZXM6OlByb2Nlc3NQcml2YXRlTWVtb3J5ID0gIlByb2Nlc3NQcml2YXRlTWVtb3J5IjsKIAot
dm9pZCBXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlJbnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3RydW1lbnRhdGlvbikKLXsKLSAgICBtZW1vcnlJ
bnN0cnVtZW50YXRpb24tPmFkZFJvb3RPYmplY3QoTm9kZVJhcmVEYXRhOjpyYXJlRGF0YU1hcCgp
LCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5o
CmluZGV4IGU5Y2JjMWFlZmZhNzM0NTQ1YTYwZDlhNmRlMGUwN2QzMGE4OWEzOGMuLjc0NzllMDUz
NDE3ZDBlZDA2ZGEzZWZhYTJkMmFkM2Y3NWRhMzkxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaApAQCAtODEsMTEgKzgxLDYgQEAg
cHVibGljOgogICAgIHN0YXRpYyBNZW1vcnlPYmplY3RUeXBlIFByb2Nlc3NQcml2YXRlTWVtb3J5
OwogfTsKIAotY2xhc3MgV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbiB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKik7
Ci19OwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyAhZGVmaW5lZChXZWJD
b3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCAwNTQxNzVhNGUyMjg1YzRmN2E2M2Uw
ZWQ5ZGMyOGIwYTY4NThjYTI4Li43NWMyOTEzZDViMWRmMmFlNWUxNDY4YTJjODNlNTAzYTBjZTli
Nzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlB
Z2VudC5jcHAKQEAgLTUzNiw3ICs1MzYsNiBAQCB2b2lkIEluc3BlY3Rvck1lbW9yeUFnZW50Ojpn
ZXRQcm9jZXNzTWVtb3J5RGlzdHJpYnV0aW9uKEVycm9yU3RyaW5nKiwgUmVmUHRyPElucwogCiAg
ICAgUmVmUHRyPEluc3BlY3Rvck1lbW9yeUJsb2Nrcz4gY2hpbGRyZW4gPSBJbnNwZWN0b3JNZW1v
cnlCbG9ja3M6OmNyZWF0ZSgpOwogICAgIGFkZFBsYXRmb3JtQ29tcG9uZW50c0luZm8oY2hpbGRy
ZW4pOwotICAgIFdlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb246OnJlcG9ydE1lbW9yeVVzYWdl
KCZtZW1vcnlJbnN0cnVtZW50YXRpb24pOwogCiAgICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9uLmFk
ZFJvb3RPYmplY3QodGhpcyk7CiAgICAgbWVtb3J5SW5zdHJ1bWVudGF0aW9uLmFkZFJvb3RPYmpl
Y3QobWVtb3J5SW5zdHJ1bWVudGF0aW9uKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>