<?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>76349</bug_id>
          
          <creation_ts>2012-01-15 13:43:57 -0800</creation_ts>
          <short_desc>[chromium] Allow modification of size of partially occluded quads during culling to reduce pixel overdraw.</short_desc>
          <delta_ts>2012-01-26 18:12:22 -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>76658</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="W. James MacLean">wjmaclean</reporter>
          <assigned_to name="W. James MacLean">wjmaclean</assigned_to>
          <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>536286</commentid>
    <comment_count>0</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-15 13:43:57 -0800</bug_when>
    <thetext>[chromium] Allow modification of size of partially occluded quads. [not for review, yet]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536287</commentid>
    <comment_count>1</comment_count>
      <attachid>122573</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-15 13:46:04 -0800</bug_when>
    <thetext>Created attachment 122573
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536289</commentid>
    <comment_count>2</comment_count>
      <attachid>122573</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-15 13:51:35 -0800</bug_when>
    <thetext>Comment on attachment 122573
Patch

This patch is not quite done yet. I would appreciate comments on the approach, specifically w.r.t. to the two issues mentioned below.

1) It seems ugly having to have the special modification for CCTileDrawQuad, yet it fails without it. When we re-size the quad, we need to say where the new quad starts in the texture ...

We can&apos;t just do this via the clip rect, as this is shared with all quads in the layer.

2) The code specific to CCTileDrawQuad in CCQuadCuller seems to invoke some sort of pointer error when running CCQuadCullerTest.verifyCullCenterTileOnly (which is the only CCQuadCuller unit test that will invoke the quad resizing logic). When run, it gives the following (truncated) error dump:

[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from CCQuadCullerTest
[ RUN      ] CCQuadCullerTest.verifyCullCenterTileOnly
*** glibc detected *** out/Debug/webkit_unit_tests: munmap_chunk(): invalid pointer: 0x000000000242c640 ***
======= Backtrace: =========
/lib/libc.so.6(+0x775b6)[0x7f90bc03f5b6]
.
.
.

183:0115/163925:532185838963:ERROR:process_util_posix.cc(138)] Received signal 6
	base::debug::StackTrace::StackTrace() [0x7f90c4675492]
	base::(anonymous namespace)::StackDumpSignalHandler() [0x7f90c46d2cfd]
	0x7f90bbffbaf0
	0x7f90bbffba75
	0x7f90bbfff5c0
	0x7f90bc0354fb
	0x7f90bc03f5b6
	WTF::deleteOwnedPtr&lt;&gt;() [0x7f90c56b9567]
	WTF::OwnPtr&lt;&gt;::~OwnPtr() [0x7f90c56b954d]
	WTF::VectorDestructor&lt;&gt;::destruct() [0x7f90c56b9466]
	WTF::VectorTypeOperations&lt;&gt;::destruct() [0x7f90c56b9360]
	WTF::Vector&lt;&gt;::shrink() [0x7f90c56b90ef]
	WTF::Vector&lt;&gt;::~Vector() [0x7f90c56b8e09]
	(anonymous namespace)::CCQuadCullerTest_verifyCullCenterTileOnly_Test::TestBody() [0x7f90c56b720c]
	testing::internal::HandleSehExceptionsInMethodIfSupported&lt;&gt;() [0x7f90c5a6af05]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536524</commentid>
    <comment_count>3</comment_count>
      <attachid>122624</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-16 06:41:30 -0800</bug_when>
    <thetext>Created attachment 122624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536526</commentid>
    <comment_count>4</comment_count>
      <attachid>122624</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-16 06:44:08 -0800</bug_when>
    <thetext>Comment on attachment 122624
Patch

Fixed logic error in test for bounds = region (was failing for &apos;L&apos;-shaped regions).

Note: this patch should work OK for all quad types except perhaps CustomDrawQuads and RenderSurfaceDraw quads - I haven&apos;t been able to test with those yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536542</commentid>
    <comment_count>5</comment_count>
      <attachid>122624</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-16 07:30:20 -0800</bug_when>
    <thetext>Comment on attachment 122624
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:63
&gt; +    rectRegion.subtract(Region(boundsRect));

You don&apos;t need to Region() as the constructor is not explicit. Another review asked me to just pass the IntRect in this case before.

This is rectRegion.subtract(rectRegion.bounds()). When will this return anything but an empty set?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:65
&gt; +    if (boundsRect.isEmpty() || rectRegion.isEmpty())

boundsRect is the containing bounds of rectRegion. Is not one empty if and only if the other is empty? I feel like maybe there are some tests missing?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:93
&gt; +            if (drawQuad-&gt;material() == CCDrawQuad::TiledContent) {

virtual function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536547</commentid>
    <comment_count>6</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-16 07:36:01 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 122624 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122624&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:63
&gt; &gt; +    rectRegion.subtract(Region(boundsRect));
&gt; 
&gt; You don&apos;t need to Region() as the constructor is not explicit. Another review asked me to just pass the IntRect in this case before.
&gt; 
&gt; This is rectRegion.subtract(rectRegion.bounds()). When will this return anything but an empty set?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:65
&gt; &gt; +    if (boundsRect.isEmpty() || rectRegion.isEmpty())
&gt; 
&gt; boundsRect is the containing bounds of rectRegion. Is not one empty if and only if the other is empty? I feel like maybe there are some tests missing?

rectRegion, at this point, may not be rectangular (we&apos;ve subtracted off the intersection between it and the occluded region). Perhaps needs a new name.

At any rate, I&apos;ve changed the logic (subtracted things in the wrong order), based on the code you quote above.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:93
&gt; &gt; +            if (drawQuad-&gt;material() == CCDrawQuad::TiledContent) {
&gt; 
&gt; virtual function?

I think these were explicitly avoided during the original design of the DrawQuad classes (see LayerRendererChromium::drawQuad()), so I don&apos;t want to introduce them here until Enne has looked at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536568</commentid>
    <comment_count>7</comment_count>
      <attachid>122641</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-16 08:22:50 -0800</bug_when>
    <thetext>Created attachment 122641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536571</commentid>
    <comment_count>8</comment_count>
      <attachid>122641</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-16 08:24:45 -0800</bug_when>
    <thetext>Comment on attachment 122641
Patch


Fixed the unit test - we were deriving from CCDrawQuad, but setting the materials to be TiledContent ... bad idea if you pass it to code that believes what it&apos;s told by material().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537197</commentid>
    <comment_count>9</comment_count>
      <attachid>122641</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-17 10:54:42 -0800</bug_when>
    <thetext>Comment on attachment 122641
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:97
&gt; +            // FIXME: We shouldn&apos;t need to handle special quad cases here. Should
&gt; +            // CCTileDrawQuad somehow do this computation internally and automatically,
&gt; +            // by assuming changes to it&apos;s drawQuad always remap the texture offset?

Another option might be to store the visible rect separately from quad rect on CCDrawQuad, and just have the specialized quad drawing functions handle it, since they&apos;re already special-cased by quad type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537845</commentid>
    <comment_count>10</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-18 07:16:44 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 122641 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122641&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:97
&gt; &gt; +            // FIXME: We shouldn&apos;t need to handle special quad cases here. Should
&gt; &gt; +            // CCTileDrawQuad somehow do this computation internally and automatically,
&gt; &gt; +            // by assuming changes to it&apos;s drawQuad always remap the texture offset?
&gt; 
&gt; Another option might be to store the visible rect separately from quad rect on CCDrawQuad, and just have the specialized quad drawing functions handle it, since they&apos;re already special-cased by quad type.

Excellent idea! Will revise and re-submit shortly ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537954</commentid>
    <comment_count>11</comment_count>
      <attachid>122955</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-18 09:57:24 -0800</bug_when>
    <thetext>Created attachment 122955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538002</commentid>
    <comment_count>12</comment_count>
      <attachid>122955</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 11:02:20 -0800</bug_when>
    <thetext>Comment on attachment 122955
Patch

Attachment 122955 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11283321

New failing tests:
compositing/color-matching/image-color-matching.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538154</commentid>
    <comment_count>13</comment_count>
      <attachid>122955</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-18 14:14:17 -0800</bug_when>
    <thetext>Comment on attachment 122955
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:539
&gt; +    const IntRect&amp; tileRect = quad-&gt;quadVisibleRect();

What about edge AA? Perhaps if the visible rect edge isn&apos;t the same as the quad rect edge, then you need to turn off edge AA for that edge? Or, if there&apos;s any edge AA, then use the quad rect?

I mean, it&apos;s the case that you don&apos;t set a visible rect if the layer isn&apos;t axis aligned, and we also don&apos;t have edge AA either when that happens, but that feels like coincidence (that could change in the future), rather than an explicit decision.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTileDrawQuad.h:42
&gt; +    void setTextureOffset(const IntPoint&amp; newOffset) { m_textureOffset = newOffset; }

nit: This isn&apos;t used anywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538183</commentid>
    <comment_count>14</comment_count>
      <attachid>122955</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-18 14:39:22 -0800</bug_when>
    <thetext>Comment on attachment 122955
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:539
&gt;&gt; +    const IntRect&amp; tileRect = quad-&gt;quadVisibleRect();
&gt; 
&gt; What about edge AA? Perhaps if the visible rect edge isn&apos;t the same as the quad rect edge, then you need to turn off edge AA for that edge? Or, if there&apos;s any edge AA, then use the quad rect?
&gt; 
&gt; I mean, it&apos;s the case that you don&apos;t set a visible rect if the layer isn&apos;t axis aligned, and we also don&apos;t have edge AA either when that happens, but that feels like coincidence (that could change in the future), rather than an explicit decision.

Question: at present we&apos;re always making a vertical or horizontal cut to get the visible rect, so one edge will line up (leave it as-is?), one edge won&apos;t (turn off edgeAA if it used to be on?), but the remaining edges line up, but are *shorter* than the original edge (here leave edgeAA on if it was originally on, I guess, as these shorter edges still line up with where they use to?).

I agree it could change in the future, although we could perhaps guard against that by using an ASSERT. That said, I&apos;m happy to figure out the logic to test each edge if it has edgeAA, and turn it off if the edge has &apos;moved&apos;.

I&apos;d rather not fall back to just using the whole rect if we can avoid it.

Does that seem reasonable?

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCTileDrawQuad.h:42
&gt;&gt; +    void setTextureOffset(const IntPoint&amp; newOffset) { m_textureOffset = newOffset; }
&gt; 
&gt; nit: This isn&apos;t used anywhere.

Thanks, missed removing this.

&gt; Source/WebKit/chromium/tests/CCQuadCullerTest.cpp:29
&gt; +#include &quot;cc/CCTileDrawQuad.h&quot;

This needs to go too ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538223</commentid>
    <comment_count>15</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-18 15:15:12 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 122955 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122955&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:539
&gt; &gt;&gt; +    const IntRect&amp; tileRect = quad-&gt;quadVisibleRect();
&gt; &gt; 
&gt; &gt; What about edge AA? Perhaps if the visible rect edge isn&apos;t the same as the quad rect edge, then you need to turn off edge AA for that edge? Or, if there&apos;s any edge AA, then use the quad rect?
&gt; &gt; 
&gt; &gt; I mean, it&apos;s the case that you don&apos;t set a visible rect if the layer isn&apos;t axis aligned, and we also don&apos;t have edge AA either when that happens, but that feels like coincidence (that could change in the future), rather than an explicit decision.
&gt; 
&gt; Question: at present we&apos;re always making a vertical or horizontal cut to get the visible rect, so one edge will line up (leave it as-is?), one edge won&apos;t (turn off edgeAA if it used to be on?), but the remaining edges line up, but are *shorter* than the original edge (here leave edgeAA on if it was originally on, I guess, as these shorter edges still line up with where they use to?).
&gt;
&gt; I agree it could change in the future, although we could perhaps guard against that by using an ASSERT. That said, I&apos;m happy to figure out the logic to test each edge if it has edgeAA, and turn it off if the edge has &apos;moved&apos;.

Sure, that seems like a reasonable approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538707</commentid>
    <comment_count>16</comment_count>
      <attachid>123128</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-19 07:54:02 -0800</bug_when>
    <thetext>Created attachment 123128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538709</commentid>
    <comment_count>17</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-19 07:55:23 -0800</bug_when>
    <thetext>Added disabling of AA on edges that differ between quadRect and quadVisibleRect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538737</commentid>
    <comment_count>18</comment_count>
      <attachid>123128</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-19 08:39:33 -0800</bug_when>
    <thetext>Comment on attachment 123128
Patch

Attachment 123128 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11253516

New failing tests:
compositing/color-matching/image-color-matching.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538864</commentid>
    <comment_count>19</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-19 11:42:32 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 123128 [details])
&gt; Attachment 123128 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/11253516
&gt; 
&gt; New failing tests:
&gt; compositing/color-matching/image-color-matching.html

Can you fix this? There&apos;s a nice big horizontal ~1px black line across the bottom set of images with your patch applied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538871</commentid>
    <comment_count>20</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-19 11:51:01 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; (From update of attachment 123128 [details] [details])
&gt; &gt; Attachment 123128 [details] [details] did not pass chromium-ews (chromium-xvfb):
&gt; &gt; Output: http://queues.webkit.org/results/11253516
&gt; &gt; 
&gt; &gt; New failing tests:
&gt; &gt; compositing/color-matching/image-color-matching.html
&gt; 
&gt; Can you fix this? There&apos;s a nice big horizontal ~1px black line across the bottom set of images with your patch applied.

Debugging it right now :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538963</commentid>
    <comment_count>21</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-19 13:01:30 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; (In reply to comment #18)
&gt; &gt; &gt; (From update of attachment 123128 [details] [details] [details])
&gt; &gt; &gt; Attachment 123128 [details] [details] [details] did not pass chromium-ews (chromium-xvfb):
&gt; &gt; &gt; Output: http://queues.webkit.org/results/11253516
&gt; &gt; &gt; 
&gt; &gt; &gt; New failing tests:
&gt; &gt; &gt; compositing/color-matching/image-color-matching.html
&gt; &gt; 
&gt; &gt; Can you fix this? There&apos;s a nice big horizontal ~1px black line across the bottom set of images with your patch applied.
&gt; 
&gt; Debugging it right now :-)

Fix found, waiting for 76658 to clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540506</commentid>
    <comment_count>22</comment_count>
      <attachid>123547</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-23 06:30:08 -0800</bug_when>
    <thetext>Created attachment 123547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540508</commentid>
    <comment_count>23</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-23 06:31:18 -0800</bug_when>
    <thetext>This patch should fix the failing layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540641</commentid>
    <comment_count>24</comment_count>
      <attachid>123547</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-01-23 10:20:04 -0800</bug_when>
    <thetext>Comment on attachment 123547
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540695</commentid>
    <comment_count>25</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-23 11:36:39 -0800</bug_when>
    <thetext>I can&apos;t tell from the title, ChangeLog, or bug comments what this patch is actually trying to accomplish. What problem is this solving? What functionality does it enable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540709</commentid>
    <comment_count>26</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-23 11:44:06 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; I can&apos;t tell from the title, ChangeLog, or bug comments what this patch is actually trying to accomplish. What problem is this solving? What functionality does it enable?

At present, the draw-culler either culls a quad because it is completely occluded, or it draws the entire quad (even if it is partially occluded). This patch allows us to draw only the visible part of partially occluded quads. It seems to help quite a bit in reducing overdraw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541307</commentid>
    <comment_count>27</comment_count>
      <attachid>123729</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-24 07:11:41 -0800</bug_when>
    <thetext>Created attachment 123729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541740</commentid>
    <comment_count>28</comment_count>
      <attachid>123729</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-24 15:01:50 -0800</bug_when>
    <thetext>Comment on attachment 123729
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCDrawQuad.h:62
&gt; +        m_quadVisibleRect = quadVisibleRect;
&gt; +        m_quadVisibleRect.intersect(m_quadRect);

this sort of logic belongs in the .cpp, and the behavior should be documented in the header since this isn&apos;t a simple setter

&gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:107
&gt; +        IntRect transformedQuadRect(enclosedIntRect(floatTransformedRect));
&gt; +
&gt; +        IntRect transformedVisibleQuadRect = rectSubtractRegion(opaqueCoverageThusFar, transformedQuadRect);
&gt; +        bool keepQuad = !transformedVisibleQuadRect.isEmpty();

this looks wrong. consider quad A which is opaque and extends from (5, 5) to (10, 10) and quad B which is behind quad A and extends from (4.1, 4.1) to (10.9, 10.9). this logic would calculate (5, 5, 10, 10) for quad B&apos;s transformedQuadRect, since it uses enclosedIntRect(), and keepQuad would be set to false and we wouldn&apos;t draw it, even though we should!. keep in mind that since this is all per render surface the whole thing could be greatly scaled up later on and produce very visible errors.

i think that in order to cull correctly and only deal with integer quads/rects, we need to be conservative. that means to decide if a given quad is culled inflate to integer boundaries with enclosingIntRect() and then when marking a quad as opaque for further culling deflate with enclosedIntRect().

even if my analysis is wrong, please add some test coverage for this.

&gt; Source/WebKit/chromium/tests/CCQuadCullerTest.cpp:41
&gt; +#define MakeTileQuad(s, r)  \
&gt; +    CCTileDrawQuad::create((s), (r), 1, IntPoint(1, 1), IntSize(100, 100), 0, false, false, false, false, false)

why isn&apos;t this a function? we very rarely use macros for things like this, and if we did it would be NAMED_LIKE_THIS()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542484</commentid>
    <comment_count>29</comment_count>
      <attachid>123978</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-25 11:27:55 -0800</bug_when>
    <thetext>Created attachment 123978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542487</commentid>
    <comment_count>30</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-25 11:30:58 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 123729 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123729&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCDrawQuad.h:62
&gt; &gt; +        m_quadVisibleRect = quadVisibleRect;
&gt; &gt; +        m_quadVisibleRect.intersect(m_quadRect);
&gt; 
&gt; this sort of logic belongs in the .cpp, and the behavior should be documented in the header since this isn&apos;t a simple setter

Done.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:107
&gt; &gt; +        IntRect transformedQuadRect(enclosedIntRect(floatTransformedRect));
&gt; &gt; +
&gt; &gt; +        IntRect transformedVisibleQuadRect = rectSubtractRegion(opaqueCoverageThusFar, transformedQuadRect);
&gt; &gt; +        bool keepQuad = !transformedVisibleQuadRect.isEmpty();
&gt; 
&gt; this looks wrong. consider quad A which is opaque and extends from (5, 5) to (10, 10) and quad B which is behind quad A and extends from (4.1, 4.1) to (10.9, 10.9). this logic would calculate (5, 5, 10, 10) for quad B&apos;s transformedQuadRect, since it uses enclosedIntRect(), and keepQuad would be set to false and we wouldn&apos;t draw it, even though we should!. keep in mind that since this is all per render surface the whole thing could be greatly scaled up later on and produce very visible errors.
&gt; 
&gt; i think that in order to cull correctly and only deal with integer quads/rects, we need to be conservative. that means to decide if a given quad is culled inflate to integer boundaries with enclosingIntRect() and then when marking a quad as opaque for further culling deflate with enclosedIntRect().
&gt; 
&gt; even if my analysis is wrong, please add some test coverage for this.

Your analysis is correct. Fixed, and two new tests added.

&gt; &gt; Source/WebKit/chromium/tests/CCQuadCullerTest.cpp:41
&gt; &gt; +#define MakeTileQuad(s, r)  \
&gt; &gt; +    CCTileDrawQuad::create((s), (r), 1, IntPoint(1, 1), IntSize(100, 100), 0, false, false, false, false, false)
&gt; 
&gt; why isn&apos;t this a function? we very rarely use macros for things like this, and if we did it would be NAMED_LIKE_THIS()

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543461</commentid>
    <comment_count>31</comment_count>
      <attachid>123978</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-26 14:05:26 -0800</bug_when>
    <thetext>Comment on attachment 123978
Patch

R=me, thanks for the additional tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543708</commentid>
    <comment_count>32</comment_count>
      <attachid>123978</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-26 18:12:15 -0800</bug_when>
    <thetext>Comment on attachment 123978
Patch

Clearing flags on attachment: 123978

Committed r106076: &lt;http://trac.webkit.org/changeset/106076&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543709</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-26 18:12:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122573</attachid>
            <date>2012-01-15 13:46:04 -0800</date>
            <delta_ts>2012-01-16 06:41:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76349-20120115164602.patch</filename>
            <type>text/plain</type>
            <size>7739</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg3MTAxNTQ1ZDQyNjA5
Mjk5NWFkNWUyMjhlODY4MjM0MmFmYWVhZS4uODRlZGYxOGM2NDYyNTRjZGI1YzhjNzU1OGU3MThm
YzRhZTQ2NTQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAxLTE1ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFsbG93IG1vZGlmaWNhdGlvbiBvZiBzaXplIG9mIHBhcnRpYWxseSBvY2NsdWRlZCBxdWFk
cy4gW25vdCBmb3IgcmV2aWV3LCB5ZXRdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NjM0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZWQgZXhpc3RpbmcgdW5pdCB0ZXN0cy4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDRHJhd1F1YWQ6OnNldFF1YWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVj
dFN1YnRyYWN0UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUXVhZEN1bGxlcjo6Y3VsbE9j
Y2x1ZGVkUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGlsZURyYXdRdWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6c2V0VGV4
dHVyZU9mZnNldCk6CisKIDIwMTEtMDgtMzAgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIDxlbWJlZD4gd2lkdGggYW5kIGhlaWdodCBwcm9wZXJ0aWVzIHByb3Bh
Z2F0ZSB0byBwYXJlbnQgb2JqZWN0IG5vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
M2RkM2VhZjEzZmVkZGMwNGE0YzZlZjQ3MWUwYTY0OGQzMDc4NTNmZS4uZDhjOGMwMDRiMzljMmU3
ZWJmNTFiZmQ2ZDM5Y2JmMWMzNTExMjYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMi0wMS0xNSAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBbGxvdyBtb2RpZmljYXRpb24gb2Yg
c2l6ZSBvZiBwYXJ0aWFsbHkgb2NjbHVkZWQgcXVhZHMuIFtub3QgZm9yIHJldmlldywgeWV0XQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzNDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0ND
UXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTItMDEt
MTQgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEhXbmREQyBz
aG91bGQgYmUgaW4gcGxhdGZvcm0vd2luIGluc3RlYWQgb2Ygd3RmLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5o
CmluZGV4IGI1NjkxM2IzY2U1M2FjMGVkMGVlYmU0ZDc3OTgwNGNjMjVkNGU2YWUuLjY3NTk5Njk0
MTM4NTFkNzhjNzllZDdjZjJiYTc5ZjVmOTM4MTYzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKQEAg
LTQ0LDYgKzQ0LDcgQEAgY2xhc3MgQ0NEcmF3UXVhZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ0NEcmF3UXVhZCk7CiBwdWJsaWM6CiAgICAgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QoKSBj
b25zdCB7IHJldHVybiBtX3F1YWRSZWN0OyB9CisgICAgdm9pZCBzZXRRdWFkUmVjdChjb25zdCBJ
bnRSZWN0JiBuZXdRdWFkUmVjdCkgeyBtX3F1YWRSZWN0ID0gbmV3UXVhZFJlY3Q7IH0KICAgICBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hhcmVkUXVhZFN0YXRlLT5xdWFkVHJhbnNmb3JtKCk7IH0KICAgICBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1
YWRTdGF0ZS0+bGF5ZXJUcmFuc2Zvcm0oKTsgfQogICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5sYXllclJlY3QoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NR
dWFkQ3VsbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUXVhZEN1bGxlci5jcHAKaW5kZXggNGE4Yjg1MTMwZTFlZDRlZWFjMzY2MzVlZmQ3YzAy
OTU4NTBkYjg0My4uZWU5M2NjOWExMjNmMWUzNzFjMWM5YTdhMTk5ODAwM2M1NDhjN2YxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NR
dWFkQ3VsbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiY2Mv
Q0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKICNpbmNsdWRlICJj
Yy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDVGlsZURyYXdRdWFk
LmgiCiAKIG5hbWVzcGFjZSBzdGQgewogCkBAIC00OSwxNiArNTAsMjIgQEAgdm9pZCBzd2FwKE93
blB0cjxXZWJDb3JlOjpDQ0RyYXdRdWFkPiYgYSwgT3duUHRyPFdlYkNvcmU6OkNDRHJhd1F1YWQ+
JiBiKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlZ2lvbkNvbnRhaW5z
UmVjdChjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3N0YXRpYyBJ
bnRSZWN0IHJlY3RTdWJ0cmFjdFJlZ2lvbihjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKICAgICBSZWdpb24gcmVjdFJlZ2lvbihyZWN0KTsKICAgICBSZWdpb24g
aW50ZXJzZWN0UmVnaW9uKGludGVyc2VjdChyZWdpb24sIHJlY3RSZWdpb24pKTsKIAogICAgIGlm
IChpbnRlcnNlY3RSZWdpb24uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiByZWN0OwogCiAgICAgcmVjdFJlZ2lvbi5zdWJ0cmFjdChpbnRlcnNlY3RSZWdp
b24pOwotICAgIHJldHVybiByZWN0UmVnaW9uLmlzRW1wdHkoKTsKKyAgICBJbnRSZWN0IGJvdW5k
c1JlY3QgPSByZWN0UmVnaW9uLmJvdW5kcygpOworICAgIHJlY3RSZWdpb24uc3VidHJhY3QoUmVn
aW9uKGJvdW5kc1JlY3QpKTsKKworICAgIGlmIChib3VuZHNSZWN0LmlzRW1wdHkoKSB8fCByZWN0
UmVnaW9uLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGJvdW5kc1JlY3Q7CisKKyAgICByZXR1
cm4gcmVjdDsKIH0KIAogdm9pZCBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKENDUXVh
ZExpc3QmIHF1YWRMaXN0KQpAQCAtNzQsMTIgKzgxLDI2IEBAIHZvaWQgQ0NRdWFkQ3VsbGVyOjpj
dWxsT2NjbHVkZWRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCkKICAgICBmb3IgKGludCBpID0g
cXVhZExpc3Quc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgQ0NEcmF3UXVhZCog
ZHJhd1F1YWQgPSBxdWFkTGlzdFtpXS5nZXQoKTsKIAotICAgICAgICBJbnRSZWN0IHF1YWRSZWN0
KGRyYXdRdWFkLT5xdWFkVHJhbnNmb3JtKCkubWFwUmVjdChkcmF3UXVhZC0+cXVhZFJlY3QoKSkp
OwotCi0gICAgICAgIGJvb2wga2VlcFF1YWQgPSAhcmVnaW9uQ29udGFpbnNSZWN0KG9wYXF1ZUNv
dmVyYWdlVGh1c0ZhciwgcXVhZFJlY3QpOworICAgICAgICBJbnRSZWN0IHRyYW5zZm9ybWVkUXVh
ZFJlY3QoZHJhd1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5tYXBSZWN0KGRyYXdRdWFkLT5xdWFkUmVj
dCgpKSk7CisKKyAgICAgICAgSW50UmVjdCB0cmFuc2Zvcm1lZFZpc2libGVRdWFkUmVjdCA9IHJl
Y3RTdWJ0cmFjdFJlZ2lvbihvcGFxdWVDb3ZlcmFnZVRodXNGYXIsIHRyYW5zZm9ybWVkUXVhZFJl
Y3QpOworICAgICAgICBib29sIGtlZXBRdWFkID0gIXRyYW5zZm9ybWVkVmlzaWJsZVF1YWRSZWN0
LmlzRW1wdHkoKTsKKyAgICAgICAgaWYgKGtlZXBRdWFkICYmIHRyYW5zZm9ybWVkVmlzaWJsZVF1
YWRSZWN0ICE9IHRyYW5zZm9ybWVkUXVhZFJlY3QpIHsKKyAgICAgICAgICAgIEludFJlY3Qgdmlz
aWJsZVF1YWRSZWN0ID0gZHJhd1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkubWFwUmVj
dCh0cmFuc2Zvcm1lZFZpc2libGVRdWFkUmVjdCk7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkbid0IG5lZWQgdG8gaGFuZGxlIHNwZWNpYWwgcXVhZCBjYXNlcyBoZXJlLiBTaG91bGQK
KyAgICAgICAgICAgIC8vIENDVGlsZURyYXdRdWFkIHNvbWVob3cgZG8gdGhpcyBjb21wdXRhdGlv
biBpbnRlcm5hbGx5IGFuZCBhdXRvbWF0aWNhbGx5LAorICAgICAgICAgICAgLy8gYnkgYXNzdW1p
bmcgY2hhbmdlcyB0byBpdCdzIGRyYXdRdWFkIGFsd2F5cyByZW1hcCB0aGUgdGV4dHVyZSBvZmZz
ZXQ/CisgICAgICAgICAgICBpZiAoZHJhd1F1YWQtPm1hdGVyaWFsKCkgPT0gQ0NEcmF3UXVhZDo6
VGlsZWRDb250ZW50KSB7CisgICAgICAgICAgICAgICAgLy8gSWYgb2NjbHVkaW5nIHRoZSB0aWxl
IHF1YWQgZnJvbSB0b3AvbGVmdCwgbXVzdCBhZGp1c3Qgd2hlcmUKKyAgICAgICAgICAgICAgICAv
LyB0aGUgcXVhZCBzdGFydHMgd2l0aCByZXNwZWN0IHRvIHRoZSB0ZXh0dXJlLgorICAgICAgICAg
ICAgICAgIENDVGlsZURyYXdRdWFkKiB0aWxlUXVhZCA9IHN0YXRpY19jYXN0PENDVGlsZURyYXdR
dWFkKj4oZHJhd1F1YWQpOworICAgICAgICAgICAgICAgIHRpbGVRdWFkLT5zZXRUZXh0dXJlT2Zm
c2V0KHRpbGVRdWFkLT50ZXh0dXJlT2Zmc2V0KCkgKyAodmlzaWJsZVF1YWRSZWN0LmxvY2F0aW9u
KCkgLSB0aWxlUXVhZC0+cXVhZFJlY3QoKS5sb2NhdGlvbigpKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBkcmF3UXVhZC0+c2V0UXVhZFJlY3QodmlzaWJsZVF1YWRSZWN0KTsKKyAgICAg
ICAgfQogCiAgICAgICAgIGlmIChrZWVwUXVhZCAmJiBkcmF3UXVhZC0+ZHJhd3NPcGFxdWUoKSAm
JiBkcmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpKQotICAgICAgICAgICAgb3Bh
cXVlQ292ZXJhZ2VUaHVzRmFyLnVuaXRlKFJlZ2lvbihxdWFkUmVjdCkpOworICAgICAgICAgICAg
b3BhcXVlQ292ZXJhZ2VUaHVzRmFyLnVuaXRlKFJlZ2lvbih0cmFuc2Zvcm1lZFF1YWRSZWN0KSk7
CiAKICAgICAgICAgaWYgKGtlZXBRdWFkKQogICAgICAgICAgICAgY3VsbGVkTGlzdC5hcHBlbmQo
cXVhZExpc3RbaV0ucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oCmluZGV4IDEy
ZTUzZGJkMmE4ZjVkMWZiM2QzMzMxOWIyYzAzMTFlYzUzZjVjYTguLjIyNWVjOThjNDMyMGFiMmJh
N2NiZTBjZjkwZTU3NTE4NWUyMGVkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaApAQCAt
MzksNiArMzksNyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CiAgICAgSW50UG9pbnQgdGV4dHVyZU9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZU9mZnNldDsgfQorICAgIHZvaWQgc2V0VGV4dHVy
ZU9mZnNldChjb25zdCBJbnRQb2ludCYgbmV3T2Zmc2V0KSB7IG1fdGV4dHVyZU9mZnNldCA9IG5l
d09mZnNldDsgfQogICAgIEludFNpemUgdGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHR1cmVTaXplOyB9CiAgICAgR0MzRGludCB0ZXh0dXJlRmlsdGVyKCkgY29uc3QgeyByZXR1cm4g
bV90ZXh0dXJlRmlsdGVyOyB9CiAgICAgYm9vbCBzd2l6emxlQ29udGVudHMoKSBjb25zdCB7IHJl
dHVybiBtX3N3aXp6bGVDb250ZW50czsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggZWQxNWU2YzEwZTFmZTQ2MmM5NDk2ODU2
ZGIzOTM0NTY5ZmFiODgxYy4uMDRkMjRkOTBjNWI0ZWIwZTU3YmVhODNhN2IxNGQyOGYxNmQ0Y2Fm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRl
c3QuY3BwCkBAIC0xMjksNiArMTI5LDIxIEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5
Q3VsbENlbnRlclRpbGVPbmx5KQogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7
CiAgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7CiAgICAgRVhQ
RUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTJ1KTsKKworICAgIEludFJlY3QgcXVhZFJlY3QxID0g
cXVhZExpc3RbMV0uZ2V0KCktPnF1YWRSZWN0KCk7CisgICAgRVhQRUNUX0VRKHF1YWRSZWN0MS5o
ZWlnaHQoKSwgNTApOworCisgICAgSW50UmVjdCBxdWFkUmVjdDMgPSBxdWFkTGlzdFszXS5nZXQo
KS0+cXVhZFJlY3QoKTsKKyAgICBFWFBFQ1RfRVEocXVhZFJlY3QzLndpZHRoKCksIDUwKTsKKwor
ICAgIC8vIE5leHQgaW5kZXggaXMgNCwgbm90IDUsIHNpbmNlIGNlbnRyZSBxdWFkIGN1bGxlZC4K
KyAgICBJbnRSZWN0IHF1YWRSZWN0NCA9IHF1YWRMaXN0WzRdLmdldCgpLT5xdWFkUmVjdCgpOwor
ICAgIEVYUEVDVF9FUShxdWFkUmVjdDQud2lkdGgoKSwgNTApOworICAgIEVYUEVDVF9FUShxdWFk
UmVjdDQueCgpLCAyNTApOworCisgICAgSW50UmVjdCBxdWFkUmVjdDYgPSBxdWFkTGlzdFs2XS5n
ZXQoKS0+cXVhZFJlY3QoKTsKKyAgICBFWFBFQ1RfRVEocXVhZFJlY3Q2LmhlaWdodCgpLCA1MCk7
CisgICAgRVhQRUNUX0VRKHF1YWRSZWN0Ni55KCksIDI1MCk7CiB9CiAKIFRFU1QoQ0NRdWFkQ3Vs
bGVyVGVzdCwgdmVyaWZ5Q3VsbENoaWxkTGluZXNVcEJvdHRvbVJpZ2h0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122624</attachid>
            <date>2012-01-16 06:41:30 -0800</date>
            <delta_ts>2012-01-16 08:22:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76349-20120116094128.patch</filename>
            <type>text/plain</type>
            <size>7739</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg3MTAxNTQ1ZDQyNjA5
Mjk5NWFkNWUyMjhlODY4MjM0MmFmYWVhZS4uODRlZGYxOGM2NDYyNTRjZGI1YzhjNzU1OGU3MThm
YzRhZTQ2NTQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAxLTE1ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFsbG93IG1vZGlmaWNhdGlvbiBvZiBzaXplIG9mIHBhcnRpYWxseSBvY2NsdWRlZCBxdWFk
cy4gW25vdCBmb3IgcmV2aWV3LCB5ZXRdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NjM0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZWQgZXhpc3RpbmcgdW5pdCB0ZXN0cy4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDRHJhd1F1YWQ6OnNldFF1YWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVj
dFN1YnRyYWN0UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUXVhZEN1bGxlcjo6Y3VsbE9j
Y2x1ZGVkUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGlsZURyYXdRdWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6c2V0VGV4
dHVyZU9mZnNldCk6CisKIDIwMTEtMDgtMzAgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIDxlbWJlZD4gd2lkdGggYW5kIGhlaWdodCBwcm9wZXJ0aWVzIHByb3Bh
Z2F0ZSB0byBwYXJlbnQgb2JqZWN0IG5vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
M2RkM2VhZjEzZmVkZGMwNGE0YzZlZjQ3MWUwYTY0OGQzMDc4NTNmZS4uZDhjOGMwMDRiMzljMmU3
ZWJmNTFiZmQ2ZDM5Y2JmMWMzNTExMjYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMi0wMS0xNSAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBbGxvdyBtb2RpZmljYXRpb24gb2Yg
c2l6ZSBvZiBwYXJ0aWFsbHkgb2NjbHVkZWQgcXVhZHMuIFtub3QgZm9yIHJldmlldywgeWV0XQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzNDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0ND
UXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTItMDEt
MTQgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEhXbmREQyBz
aG91bGQgYmUgaW4gcGxhdGZvcm0vd2luIGluc3RlYWQgb2Ygd3RmLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5o
CmluZGV4IGI1NjkxM2IzY2U1M2FjMGVkMGVlYmU0ZDc3OTgwNGNjMjVkNGU2YWUuLjY3NTk5Njk0
MTM4NTFkNzhjNzllZDdjZjJiYTc5ZjVmOTM4MTYzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKQEAg
LTQ0LDYgKzQ0LDcgQEAgY2xhc3MgQ0NEcmF3UXVhZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ0NEcmF3UXVhZCk7CiBwdWJsaWM6CiAgICAgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QoKSBj
b25zdCB7IHJldHVybiBtX3F1YWRSZWN0OyB9CisgICAgdm9pZCBzZXRRdWFkUmVjdChjb25zdCBJ
bnRSZWN0JiBuZXdRdWFkUmVjdCkgeyBtX3F1YWRSZWN0ID0gbmV3UXVhZFJlY3Q7IH0KICAgICBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hhcmVkUXVhZFN0YXRlLT5xdWFkVHJhbnNmb3JtKCk7IH0KICAgICBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1
YWRTdGF0ZS0+bGF5ZXJUcmFuc2Zvcm0oKTsgfQogICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5sYXllclJlY3QoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NR
dWFkQ3VsbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUXVhZEN1bGxlci5jcHAKaW5kZXggNGE4Yjg1MTMwZTFlZDRlZWFjMzY2MzVlZmQ3YzAy
OTU4NTBkYjg0My4uZWU5M2NjOWExMjNmMWUzNzFjMWM5YTdhMTk5ODAwM2M1NDhjN2YxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NR
dWFkQ3VsbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiY2Mv
Q0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKICNpbmNsdWRlICJj
Yy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDVGlsZURyYXdRdWFk
LmgiCiAKIG5hbWVzcGFjZSBzdGQgewogCkBAIC00OSwxNiArNTAsMjIgQEAgdm9pZCBzd2FwKE93
blB0cjxXZWJDb3JlOjpDQ0RyYXdRdWFkPiYgYSwgT3duUHRyPFdlYkNvcmU6OkNDRHJhd1F1YWQ+
JiBiKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlZ2lvbkNvbnRhaW5z
UmVjdChjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3N0YXRpYyBJ
bnRSZWN0IHJlY3RTdWJ0cmFjdFJlZ2lvbihjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKICAgICBSZWdpb24gcmVjdFJlZ2lvbihyZWN0KTsKICAgICBSZWdpb24g
aW50ZXJzZWN0UmVnaW9uKGludGVyc2VjdChyZWdpb24sIHJlY3RSZWdpb24pKTsKIAogICAgIGlm
IChpbnRlcnNlY3RSZWdpb24uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiByZWN0OwogCiAgICAgcmVjdFJlZ2lvbi5zdWJ0cmFjdChpbnRlcnNlY3RSZWdp
b24pOwotICAgIHJldHVybiByZWN0UmVnaW9uLmlzRW1wdHkoKTsKKyAgICBJbnRSZWN0IGJvdW5k
c1JlY3QgPSByZWN0UmVnaW9uLmJvdW5kcygpOworICAgIHJlY3RSZWdpb24uc3VidHJhY3QoUmVn
aW9uKGJvdW5kc1JlY3QpKTsKKworICAgIGlmIChib3VuZHNSZWN0LmlzRW1wdHkoKSB8fCByZWN0
UmVnaW9uLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGJvdW5kc1JlY3Q7CisKKyAgICByZXR1
cm4gcmVjdDsKIH0KIAogdm9pZCBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKENDUXVh
ZExpc3QmIHF1YWRMaXN0KQpAQCAtNzQsMTIgKzgxLDI2IEBAIHZvaWQgQ0NRdWFkQ3VsbGVyOjpj
dWxsT2NjbHVkZWRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCkKICAgICBmb3IgKGludCBpID0g
cXVhZExpc3Quc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgQ0NEcmF3UXVhZCog
ZHJhd1F1YWQgPSBxdWFkTGlzdFtpXS5nZXQoKTsKIAotICAgICAgICBJbnRSZWN0IHF1YWRSZWN0
KGRyYXdRdWFkLT5xdWFkVHJhbnNmb3JtKCkubWFwUmVjdChkcmF3UXVhZC0+cXVhZFJlY3QoKSkp
OwotCi0gICAgICAgIGJvb2wga2VlcFF1YWQgPSAhcmVnaW9uQ29udGFpbnNSZWN0KG9wYXF1ZUNv
dmVyYWdlVGh1c0ZhciwgcXVhZFJlY3QpOworICAgICAgICBJbnRSZWN0IHRyYW5zZm9ybWVkUXVh
ZFJlY3QoZHJhd1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5tYXBSZWN0KGRyYXdRdWFkLT5xdWFkUmVj
dCgpKSk7CisKKyAgICAgICAgSW50UmVjdCB0cmFuc2Zvcm1lZFZpc2libGVRdWFkUmVjdCA9IHJl
Y3RTdWJ0cmFjdFJlZ2lvbihvcGFxdWVDb3ZlcmFnZVRodXNGYXIsIHRyYW5zZm9ybWVkUXVhZFJl
Y3QpOworICAgICAgICBib29sIGtlZXBRdWFkID0gIXRyYW5zZm9ybWVkVmlzaWJsZVF1YWRSZWN0
LmlzRW1wdHkoKTsKKyAgICAgICAgaWYgKGtlZXBRdWFkICYmIHRyYW5zZm9ybWVkVmlzaWJsZVF1
YWRSZWN0ICE9IHRyYW5zZm9ybWVkUXVhZFJlY3QpIHsKKyAgICAgICAgICAgIEludFJlY3Qgdmlz
aWJsZVF1YWRSZWN0ID0gZHJhd1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkubWFwUmVj
dCh0cmFuc2Zvcm1lZFZpc2libGVRdWFkUmVjdCk7CisgICAgICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkbid0IG5lZWQgdG8gaGFuZGxlIHNwZWNpYWwgcXVhZCBjYXNlcyBoZXJlLiBTaG91bGQK
KyAgICAgICAgICAgIC8vIENDVGlsZURyYXdRdWFkIHNvbWVob3cgZG8gdGhpcyBjb21wdXRhdGlv
biBpbnRlcm5hbGx5IGFuZCBhdXRvbWF0aWNhbGx5LAorICAgICAgICAgICAgLy8gYnkgYXNzdW1p
bmcgY2hhbmdlcyB0byBpdCdzIGRyYXdRdWFkIGFsd2F5cyByZW1hcCB0aGUgdGV4dHVyZSBvZmZz
ZXQ/CisgICAgICAgICAgICBpZiAoZHJhd1F1YWQtPm1hdGVyaWFsKCkgPT0gQ0NEcmF3UXVhZDo6
VGlsZWRDb250ZW50KSB7CisgICAgICAgICAgICAgICAgLy8gSWYgb2NjbHVkaW5nIHRoZSB0aWxl
IHF1YWQgZnJvbSB0b3AvbGVmdCwgbXVzdCBhZGp1c3Qgd2hlcmUKKyAgICAgICAgICAgICAgICAv
LyB0aGUgcXVhZCBzdGFydHMgd2l0aCByZXNwZWN0IHRvIHRoZSB0ZXh0dXJlLgorICAgICAgICAg
ICAgICAgIENDVGlsZURyYXdRdWFkKiB0aWxlUXVhZCA9IHN0YXRpY19jYXN0PENDVGlsZURyYXdR
dWFkKj4oZHJhd1F1YWQpOworICAgICAgICAgICAgICAgIHRpbGVRdWFkLT5zZXRUZXh0dXJlT2Zm
c2V0KHRpbGVRdWFkLT50ZXh0dXJlT2Zmc2V0KCkgKyAodmlzaWJsZVF1YWRSZWN0LmxvY2F0aW9u
KCkgLSB0aWxlUXVhZC0+cXVhZFJlY3QoKS5sb2NhdGlvbigpKSk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBkcmF3UXVhZC0+c2V0UXVhZFJlY3QodmlzaWJsZVF1YWRSZWN0KTsKKyAgICAg
ICAgfQogCiAgICAgICAgIGlmIChrZWVwUXVhZCAmJiBkcmF3UXVhZC0+ZHJhd3NPcGFxdWUoKSAm
JiBkcmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpKQotICAgICAgICAgICAgb3Bh
cXVlQ292ZXJhZ2VUaHVzRmFyLnVuaXRlKFJlZ2lvbihxdWFkUmVjdCkpOworICAgICAgICAgICAg
b3BhcXVlQ292ZXJhZ2VUaHVzRmFyLnVuaXRlKFJlZ2lvbih0cmFuc2Zvcm1lZFF1YWRSZWN0KSk7
CiAKICAgICAgICAgaWYgKGtlZXBRdWFkKQogICAgICAgICAgICAgY3VsbGVkTGlzdC5hcHBlbmQo
cXVhZExpc3RbaV0ucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oCmluZGV4IDEy
ZTUzZGJkMmE4ZjVkMWZiM2QzMzMxOWIyYzAzMTFlYzUzZjVjYTguLjIyNWVjOThjNDMyMGFiMmJh
N2NiZTBjZjkwZTU3NTE4NWUyMGVkYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaApAQCAt
MzksNiArMzksNyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmVJZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CiAgICAgSW50UG9pbnQgdGV4dHVyZU9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZU9mZnNldDsgfQorICAgIHZvaWQgc2V0VGV4dHVy
ZU9mZnNldChjb25zdCBJbnRQb2ludCYgbmV3T2Zmc2V0KSB7IG1fdGV4dHVyZU9mZnNldCA9IG5l
d09mZnNldDsgfQogICAgIEludFNpemUgdGV4dHVyZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3Rl
eHR1cmVTaXplOyB9CiAgICAgR0MzRGludCB0ZXh0dXJlRmlsdGVyKCkgY29uc3QgeyByZXR1cm4g
bV90ZXh0dXJlRmlsdGVyOyB9CiAgICAgYm9vbCBzd2l6emxlQ29udGVudHMoKSBjb25zdCB7IHJl
dHVybiBtX3N3aXp6bGVDb250ZW50czsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggZWQxNWU2YzEwZTFmZTQ2MmM5NDk2ODU2
ZGIzOTM0NTY5ZmFiODgxYy4uMDRkMjRkOTBjNWI0ZWIwZTU3YmVhODNhN2IxNGQyOGYxNmQ0Y2Fm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRl
c3QuY3BwCkBAIC0xMjksNiArMTI5LDIxIEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5
Q3VsbENlbnRlclRpbGVPbmx5KQogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7
CiAgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7CiAgICAgRVhQ
RUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTJ1KTsKKworICAgIEludFJlY3QgcXVhZFJlY3QxID0g
cXVhZExpc3RbMV0uZ2V0KCktPnF1YWRSZWN0KCk7CisgICAgRVhQRUNUX0VRKHF1YWRSZWN0MS5o
ZWlnaHQoKSwgNTApOworCisgICAgSW50UmVjdCBxdWFkUmVjdDMgPSBxdWFkTGlzdFszXS5nZXQo
KS0+cXVhZFJlY3QoKTsKKyAgICBFWFBFQ1RfRVEocXVhZFJlY3QzLndpZHRoKCksIDUwKTsKKwor
ICAgIC8vIE5leHQgaW5kZXggaXMgNCwgbm90IDUsIHNpbmNlIGNlbnRyZSBxdWFkIGN1bGxlZC4K
KyAgICBJbnRSZWN0IHF1YWRSZWN0NCA9IHF1YWRMaXN0WzRdLmdldCgpLT5xdWFkUmVjdCgpOwor
ICAgIEVYUEVDVF9FUShxdWFkUmVjdDQud2lkdGgoKSwgNTApOworICAgIEVYUEVDVF9FUShxdWFk
UmVjdDQueCgpLCAyNTApOworCisgICAgSW50UmVjdCBxdWFkUmVjdDYgPSBxdWFkTGlzdFs2XS5n
ZXQoKS0+cXVhZFJlY3QoKTsKKyAgICBFWFBFQ1RfRVEocXVhZFJlY3Q2LmhlaWdodCgpLCA1MCk7
CisgICAgRVhQRUNUX0VRKHF1YWRSZWN0Ni55KCksIDI1MCk7CiB9CiAKIFRFU1QoQ0NRdWFkQ3Vs
bGVyVGVzdCwgdmVyaWZ5Q3VsbENoaWxkTGluZXNVcEJvdHRvbVJpZ2h0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122641</attachid>
            <date>2012-01-16 08:22:50 -0800</date>
            <delta_ts>2012-01-18 09:57:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76349-20120116112249.patch</filename>
            <type>text/plain</type>
            <size>11775</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg3MTAxNTQ1ZDQyNjA5
Mjk5NWFkNWUyMjhlODY4MjM0MmFmYWVhZS4uODRlZGYxOGM2NDYyNTRjZGI1YzhjNzU1OGU3MThm
YzRhZTQ2NTQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAxLTE1ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFsbG93IG1vZGlmaWNhdGlvbiBvZiBzaXplIG9mIHBhcnRpYWxseSBvY2NsdWRlZCBxdWFk
cy4gW25vdCBmb3IgcmV2aWV3LCB5ZXRdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NjM0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZWQgZXhpc3RpbmcgdW5pdCB0ZXN0cy4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDRHJhd1F1YWQ6OnNldFF1YWRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVj
dFN1YnRyYWN0UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUXVhZEN1bGxlcjo6Y3VsbE9j
Y2x1ZGVkUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGlsZURyYXdRdWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1RpbGVEcmF3UXVhZDo6c2V0VGV4
dHVyZU9mZnNldCk6CisKIDIwMTEtMDgtMzAgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIDxlbWJlZD4gd2lkdGggYW5kIGhlaWdodCBwcm9wZXJ0aWVzIHByb3Bh
Z2F0ZSB0byBwYXJlbnQgb2JqZWN0IG5vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
M2RkM2VhZjEzZmVkZGMwNGE0YzZlZjQ3MWUwYTY0OGQzMDc4NTNmZS4uZDhjOGMwMDRiMzljMmU3
ZWJmNTFiZmQ2ZDM5Y2JmMWMzNTExMjYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMi0wMS0xNSAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBbGxvdyBtb2RpZmljYXRpb24gb2Yg
c2l6ZSBvZiBwYXJ0aWFsbHkgb2NjbHVkZWQgcXVhZHMuIFtub3QgZm9yIHJldmlldywgeWV0XQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzNDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0ND
UXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTItMDEt
MTQgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEhXbmREQyBz
aG91bGQgYmUgaW4gcGxhdGZvcm0vd2luIGluc3RlYWQgb2Ygd3RmLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5o
CmluZGV4IGI1NjkxM2IzY2U1M2FjMGVkMGVlYmU0ZDc3OTgwNGNjMjVkNGU2YWUuLjY3NTk5Njk0
MTM4NTFkNzhjNzllZDdjZjJiYTc5ZjVmOTM4MTYzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKQEAg
LTQ0LDYgKzQ0LDcgQEAgY2xhc3MgQ0NEcmF3UXVhZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ0NEcmF3UXVhZCk7CiBwdWJsaWM6CiAgICAgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QoKSBj
b25zdCB7IHJldHVybiBtX3F1YWRSZWN0OyB9CisgICAgdm9pZCBzZXRRdWFkUmVjdChjb25zdCBJ
bnRSZWN0JiBuZXdRdWFkUmVjdCkgeyBtX3F1YWRSZWN0ID0gbmV3UXVhZFJlY3Q7IH0KICAgICBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2hhcmVkUXVhZFN0YXRlLT5xdWFkVHJhbnNmb3JtKCk7IH0KICAgICBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1
YWRTdGF0ZS0+bGF5ZXJUcmFuc2Zvcm0oKTsgfQogICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5sYXllclJlY3QoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NR
dWFkQ3VsbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUXVhZEN1bGxlci5jcHAKaW5kZXggNGE4Yjg1MTMwZTFlZDRlZWFjMzY2MzVlZmQ3YzAy
OTU4NTBkYjg0My4uNGJkMzY4NzE0MTU5OWE3NDM5ZTQ4ZTYxNDExZTcxZTY5ODg3ZDU0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NR
dWFkQ3VsbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiY2Mv
Q0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKICNpbmNsdWRlICJj
Yy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oIgorI2luY2x1ZGUgImNjL0NDVGlsZURyYXdRdWFk
LmgiCiAKIG5hbWVzcGFjZSBzdGQgewogCkBAIC00OSwxNiArNTAsMjcgQEAgdm9pZCBzd2FwKE93
blB0cjxXZWJDb3JlOjpDQ0RyYXdRdWFkPiYgYSwgT3duUHRyPFdlYkNvcmU6OkNDRHJhd1F1YWQ+
JiBiKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBib29sIHJlZ2lvbkNvbnRhaW5z
UmVjdChjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3N0YXRpYyBJ
bnRSZWN0IHJlY3RTdWJ0cmFjdFJlZ2lvbihjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKICAgICBSZWdpb24gcmVjdFJlZ2lvbihyZWN0KTsKICAgICBSZWdpb24g
aW50ZXJzZWN0UmVnaW9uKGludGVyc2VjdChyZWdpb24sIHJlY3RSZWdpb24pKTsKIAogICAgIGlm
IChpbnRlcnNlY3RSZWdpb24uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIHJldHVybiByZWN0OwogCisgICAgLy8gVGVzdCBpZiBpbnRlcnNlY3RSZWdpb24gPSByZWN0
UmVnaW9uLCBpZiBzbyByZXR1cm4gZW1wdHkgcmVjdC4KICAgICByZWN0UmVnaW9uLnN1YnRyYWN0
KGludGVyc2VjdFJlZ2lvbik7Ci0gICAgcmV0dXJuIHJlY3RSZWdpb24uaXNFbXB0eSgpOworICAg
IEludFJlY3QgYm91bmRzUmVjdCA9IHJlY3RSZWdpb24uYm91bmRzKCk7CisgICAgaWYgKGJvdW5k
c1JlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gYm91bmRzUmVjdDsKKworICAgIC8vIFRl
c3QgaWYgcmVjdFJlZ2lvbiBpcyBzdGlsbCBhIHJlY3RhbmdsZS4gSWYgaXQgaXMsIGl0IHdpbGwg
YmUgaWRlbnRpY2FsIHRvIGl0cyBib3VuZHMuCisgICAgUmVnaW9uIGJvdW5kc1JlZ2lvbihib3Vu
ZHNSZWN0KTsKKyAgICBib3VuZHNSZWdpb24uc3VidHJhY3QocmVjdFJlZ2lvbik7CisgICAgaWYg
KGJvdW5kc1JlZ2lvbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBib3VuZHNSZWN0OworCisg
ICAgcmV0dXJuIHJlY3Q7CiB9CiAKIHZvaWQgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFk
cyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCkKQEAgLTc0LDEyICs4NiwyNiBAQCB2b2lkIENDUXVhZEN1
bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QpCiAgICAgZm9yIChp
bnQgaSA9IHF1YWRMaXN0LnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIENDRHJh
d1F1YWQqIGRyYXdRdWFkID0gcXVhZExpc3RbaV0uZ2V0KCk7CiAKLSAgICAgICAgSW50UmVjdCBx
dWFkUmVjdChkcmF3UXVhZC0+cXVhZFRyYW5zZm9ybSgpLm1hcFJlY3QoZHJhd1F1YWQtPnF1YWRS
ZWN0KCkpKTsKLQotICAgICAgICBib29sIGtlZXBRdWFkID0gIXJlZ2lvbkNvbnRhaW5zUmVjdChv
cGFxdWVDb3ZlcmFnZVRodXNGYXIsIHF1YWRSZWN0KTsKKyAgICAgICAgSW50UmVjdCB0cmFuc2Zv
cm1lZFF1YWRSZWN0KGRyYXdRdWFkLT5xdWFkVHJhbnNmb3JtKCkubWFwUmVjdChkcmF3UXVhZC0+
cXVhZFJlY3QoKSkpOworCisgICAgICAgIEludFJlY3QgdHJhbnNmb3JtZWRWaXNpYmxlUXVhZFJl
Y3QgPSByZWN0U3VidHJhY3RSZWdpb24ob3BhcXVlQ292ZXJhZ2VUaHVzRmFyLCB0cmFuc2Zvcm1l
ZFF1YWRSZWN0KTsKKyAgICAgICAgYm9vbCBrZWVwUXVhZCA9ICF0cmFuc2Zvcm1lZFZpc2libGVR
dWFkUmVjdC5pc0VtcHR5KCk7CisgICAgICAgIGlmIChrZWVwUXVhZCAmJiB0cmFuc2Zvcm1lZFZp
c2libGVRdWFkUmVjdCAhPSB0cmFuc2Zvcm1lZFF1YWRSZWN0KSB7CisgICAgICAgICAgICBJbnRS
ZWN0IHZpc2libGVRdWFkUmVjdCA9IGRyYXdRdWFkLT5xdWFkVHJhbnNmb3JtKCkuaW52ZXJzZSgp
Lm1hcFJlY3QodHJhbnNmb3JtZWRWaXNpYmxlUXVhZFJlY3QpOworICAgICAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZG4ndCBuZWVkIHRvIGhhbmRsZSBzcGVjaWFsIHF1YWQgY2FzZXMgaGVyZS4g
U2hvdWxkCisgICAgICAgICAgICAvLyBDQ1RpbGVEcmF3UXVhZCBzb21laG93IGRvIHRoaXMgY29t
cHV0YXRpb24gaW50ZXJuYWxseSBhbmQgYXV0b21hdGljYWxseSwKKyAgICAgICAgICAgIC8vIGJ5
IGFzc3VtaW5nIGNoYW5nZXMgdG8gaXQncyBkcmF3UXVhZCBhbHdheXMgcmVtYXAgdGhlIHRleHR1
cmUgb2Zmc2V0PworICAgICAgICAgICAgaWYgKGRyYXdRdWFkLT5tYXRlcmlhbCgpID09IENDRHJh
d1F1YWQ6OlRpbGVkQ29udGVudCkgeworICAgICAgICAgICAgICAgIC8vIElmIG9jY2x1ZGluZyB0
aGUgdGlsZSBxdWFkIGZyb20gdG9wL2xlZnQsIG11c3QgYWRqdXN0IHdoZXJlCisgICAgICAgICAg
ICAgICAgLy8gdGhlIHF1YWQgc3RhcnRzIHdpdGggcmVzcGVjdCB0byB0aGUgdGV4dHVyZS4KKyAg
ICAgICAgICAgICAgICBDQ1RpbGVEcmF3UXVhZCogdGlsZVF1YWQgPSBzdGF0aWNfY2FzdDxDQ1Rp
bGVEcmF3UXVhZCo+KGRyYXdRdWFkKTsKKyAgICAgICAgICAgICAgICB0aWxlUXVhZC0+c2V0VGV4
dHVyZU9mZnNldCh0aWxlUXVhZC0+dGV4dHVyZU9mZnNldCgpICsgKHZpc2libGVRdWFkUmVjdC5s
b2NhdGlvbigpIC0gdGlsZVF1YWQtPnF1YWRSZWN0KCkubG9jYXRpb24oKSkpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgZHJhd1F1YWQtPnNldFF1YWRSZWN0KHZpc2libGVRdWFkUmVjdCk7
CisgICAgICAgIH0KIAogICAgICAgICBpZiAoa2VlcFF1YWQgJiYgZHJhd1F1YWQtPmRyYXdzT3Bh
cXVlKCkgJiYgZHJhd1F1YWQtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSkKLSAgICAgICAg
ICAgIG9wYXF1ZUNvdmVyYWdlVGh1c0Zhci51bml0ZShSZWdpb24ocXVhZFJlY3QpKTsKKyAgICAg
ICAgICAgIG9wYXF1ZUNvdmVyYWdlVGh1c0Zhci51bml0ZShSZWdpb24odHJhbnNmb3JtZWRRdWFk
UmVjdCkpOwogCiAgICAgICAgIGlmIChrZWVwUXVhZCkKICAgICAgICAgICAgIGN1bGxlZExpc3Qu
YXBwZW5kKHF1YWRMaXN0W2ldLnJlbGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlRHJhd1F1YWQuaApp
bmRleCAxMmU1M2RiZDJhOGY1ZDFmYjNkMzMzMTliMmMwMzExZWM1M2Y1Y2E4Li4yMjVlYzk4YzQz
MjBhYjJiYTdjYmUwY2Y5MGU1NzUxODVlMjBlZGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVEcmF3UXVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFk
LmgKQEAgLTM5LDYgKzM5LDcgQEAgcHVibGljOgogCiAgICAgUGxhdGZvcm0zRE9iamVjdCB0ZXh0
dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJZDsgfQogICAgIEludFBvaW50IHRleHR1
cmVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVPZmZzZXQ7IH0KKyAgICB2b2lkIHNl
dFRleHR1cmVPZmZzZXQoY29uc3QgSW50UG9pbnQmIG5ld09mZnNldCkgeyBtX3RleHR1cmVPZmZz
ZXQgPSBuZXdPZmZzZXQ7IH0KICAgICBJbnRTaXplIHRleHR1cmVTaXplKCkgY29uc3QgeyByZXR1
cm4gbV90ZXh0dXJlU2l6ZTsgfQogICAgIEdDM0RpbnQgdGV4dHVyZUZpbHRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fdGV4dHVyZUZpbHRlcjsgfQogICAgIGJvb2wgc3dpenpsZUNvbnRlbnRzKCkgY29u
c3QgeyByZXR1cm4gbV9zd2l6emxlQ29udGVudHM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCmluZGV4IGVkMTVlNmMxMGUxZmU0NjJj
OTQ5Njg1NmRiMzkzNDU2OWZhYjg4MWMuLmRlYWM4MGZlNjI1ZGU4YjYxZTJhYTE2ZTM3NGFkMTgy
M2NjZGEwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFk
Q3VsbGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRD
dWxsZXJUZXN0LmNwcApAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NRdWFkQ3Vs
bGVyLmgiCiAKKyNpbmNsdWRlICJjYy9DQ1RpbGVEcmF3UXVhZC5oIgogI2luY2x1ZGUgPGdtb2Nr
L2dtb2NrLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIApAQCAtMzYsMzcgKzM3LDI3IEBA
IG5hbWVzcGFjZSB7CiBjbGFzcyBDQ1F1YWRDdWxsZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QgewogfTsKIAotY2xhc3MgVGVzdERyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgewotcHVi
bGljOgotICAgIFRlc3REcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc3RhdGUsIE1h
dGVyaWFsIG0sIGNvbnN0IEludFJlY3QmIHJlY3QpCi0gICAgOiBDQ0RyYXdRdWFkKHN0YXRlLCBt
LCByZWN0KQotICAgIHsKLSAgICB9Ci0KLSAgICBzdGF0aWMgUGFzc093blB0cjxUZXN0RHJhd1F1
YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc3RhdGUsIE1hdGVyaWFsIG0sIGNv
bnN0IEludFJlY3QmIHJlY3QpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRl
c3REcmF3UXVhZChzdGF0ZSwgbSwgcmVjdCkpOwotICAgIH0KLX07CisjZGVmaW5lIE1ha2VUaWxl
UXVhZChzLCByKSAgXAorICAgIENDVGlsZURyYXdRdWFkOjpjcmVhdGUoKHMpLCAociksIDEsIElu
dFBvaW50KDEsIDEpLCBJbnRTaXplKDEwMCwgMTAwKSwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlKQogCiB2b2lkIHNldFF1YWRzKENDU2hhcmVkUXVhZFN0YXRlKiByb290U3Rh
dGUsIENDU2hhcmVkUXVhZFN0YXRlKiBjaGlsZFN0YXRlLCBDQ1F1YWRMaXN0JiBxdWFkTGlzdCkK
IHsKICAgICBxdWFkTGlzdC5jbGVhcigpOwogCi0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3
UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0
KEludFBvaW50KCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChU
ZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwg
SW50UmVjdChJbnRQb2ludCgxMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFk
TGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpU
aWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMjAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkp
KSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwg
Q0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNp
emUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0
ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgx
MDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0
RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50
UmVjdChJbnRQb2ludCgyMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRM
aXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRp
bGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSkp
KTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBD
Q0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAyMDApLCBJbnRT
aXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVh
dGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQo
MjAwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLQotICAgIHF1YWRMaXN0LmFwcGVuZChU
ZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQs
IEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3Qu
YXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVk
Q29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsK
LSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NE
cmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUo
MTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShj
aGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAw
LCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRp
bGVRdWFkKHJvb3RTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSkp
KTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKHJvb3RTdGF0ZSwgSW50UmVjdChJ
bnRQb2ludCgxMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKKyAgICBxdWFkTGlzdC5hcHBl
bmQoTWFrZVRpbGVRdWFkKHJvb3RTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgyMDAsIDApLCBJbnRT
aXplKDEwMCwgMTAwKSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKHJvb3RT
dGF0ZSwgSW50UmVjdChJbnRQb2ludCgwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKKyAg
ICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKHJvb3RTdGF0ZSwgSW50UmVjdChJbnRQb2lu
dCgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChN
YWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDIwMCwgMTAwKSwgSW50U2l6
ZSgxMDAsIDEwMCkpKSk7CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChyb290U3Rh
dGUsIEludFJlY3QoSW50UG9pbnQoMCwgMjAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CisgICAg
cXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChyb290U3RhdGUsIEludFJlY3QoSW50UG9pbnQo
MTAwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoTWFr
ZVRpbGVRdWFkKHJvb3RTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgyMDAsIDIwMCksIEludFNpemUo
MTAwLCAxMDApKSkpOworCisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChjaGlsZFN0
YXRlLCBJbnRSZWN0KEludFBvaW50KCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRM
aXN0LmFwcGVuZChNYWtlVGlsZVF1YWQoY2hpbGRTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgxMDAs
IDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVR
dWFkKGNoaWxkU3RhdGUsIEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEw
MCkpKSk7CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChjaGlsZFN0YXRlLCBJbnRS
ZWN0KEludFBvaW50KDEwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CiB9CiAKICNkZWZp
bmUgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTICAgICAgICAgICAgICAgXApAQCAt
MTI5LDYgKzEyMCwyMSBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxDZW50ZXJU
aWxlT25seSkKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwogICAgIENDUXVh
ZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QpOwogICAgIEVYUEVDVF9FUShxdWFk
TGlzdC5zaXplKCksIDEydSk7CisKKyAgICBJbnRSZWN0IHF1YWRSZWN0MSA9IHF1YWRMaXN0WzFd
LmdldCgpLT5xdWFkUmVjdCgpOworICAgIEVYUEVDVF9FUShxdWFkUmVjdDEuaGVpZ2h0KCksIDUw
KTsKKworICAgIEludFJlY3QgcXVhZFJlY3QzID0gcXVhZExpc3RbM10uZ2V0KCktPnF1YWRSZWN0
KCk7CisgICAgRVhQRUNUX0VRKHF1YWRSZWN0My53aWR0aCgpLCA1MCk7CisKKyAgICAvLyBOZXh0
IGluZGV4IGlzIDQsIG5vdCA1LCBzaW5jZSBjZW50cmUgcXVhZCBjdWxsZWQuCisgICAgSW50UmVj
dCBxdWFkUmVjdDQgPSBxdWFkTGlzdFs0XS5nZXQoKS0+cXVhZFJlY3QoKTsKKyAgICBFWFBFQ1Rf
RVEocXVhZFJlY3Q0LndpZHRoKCksIDUwKTsKKyAgICBFWFBFQ1RfRVEocXVhZFJlY3Q0LngoKSwg
MjUwKTsKKworICAgIEludFJlY3QgcXVhZFJlY3Q2ID0gcXVhZExpc3RbNl0uZ2V0KCktPnF1YWRS
ZWN0KCk7CisgICAgRVhQRUNUX0VRKHF1YWRSZWN0Ni5oZWlnaHQoKSwgNTApOworICAgIEVYUEVD
VF9FUShxdWFkUmVjdDYueSgpLCAyNTApOwogfQogCiBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZl
cmlmeUN1bGxDaGlsZExpbmVzVXBCb3R0b21SaWdodCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122955</attachid>
            <date>2012-01-18 09:57:24 -0800</date>
            <delta_ts>2012-01-19 07:53:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76349-20120118125722.patch</filename>
            <type>text/plain</type>
            <size>13822</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTYxYTQ0MjcwNjhjODQy
MjU4ZWIwYThkMzYyYzI3MTM0NjRiMmRiNS4uZmJhNjc1YzQzM2ZhNTU1MzM1MTYzMWI5NzNkZjNk
MTJlOGMwMGUyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAxLTE4ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFsbG93IG1vZGlmaWNhdGlvbiBvZiBzaXplIG9mIHBhcnRpYWxseSBvY2NsdWRlZCBxdWFk
cy4gW25vdCBmb3IgcmV2aWV3LCB5ZXRdCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NjM0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGVkIG5ldyBjYXNlcyB0byBleGlzdGluZyB1bml0IHRlc3RzLgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1Rp
bGVRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdR
dWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDRHJhd1F1YWQ6OkNDRHJhd1F1YWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDRHJhd1F1YWQ6OnNldFF1YWRWaXNpYmxlUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0RyYXdRdWFkOjpxdWFkVmlzaWJsZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpyZWN0U3VidHJhY3RSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjpj
dWxsT2NjbHVkZWRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaWxlRHJhd1F1YWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZURyYXdRdWFkOjpz
ZXRUZXh0dXJlT2Zmc2V0KToKKwogMjAxMi0wMS0xNyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlr
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBFbmFibGUgc3VwcG9ydCBm
b3IgT3BlbiBTY3JpcHQgZGlhbG9nIGJhc2VkIG9uIEZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxv
Zy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZDlkMzM5NjdlOTNjNDI1OTZmZGQyNGQ0
ZmNhY2ViYWVmN2NiYTQxMy4uOWM5MDg3ZjY3NTRlNTJiM2FlOTBiZGFjMTI3NzAyOWE1MWUyOWY0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wMS0x
OCAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSBBbGxvdyBtb2RpZmljYXRpb24gb2Ygc2l6ZSBvZiBwYXJ0aWFsbHkgb2NjbHVk
ZWQgcXVhZHMuIFtub3QgZm9yIHJldmlldywgeWV0XQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzNDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0UXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIw
MTItMDEtMTcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDUyNDQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA5MzNlNzgyNTNiMThjNTM2MzFkMTNhMzNmMDM4ZWVh
ZmI5NjAyNWVhLi43YTgyMGVjNGIzYjAzZWE0NTYwNjZjYmQzNDEwYWIyYjg1MWE3MjI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTUzNiw3ICs1MzYsNyBAQCBz
dGF0aWMgdm9pZCBmaW5kVGlsZVByb2dyYW1Vbmlmb3JtcyhMYXllclJlbmRlcmVyQ2hyb21pdW0q
IGxheWVyUmVuZGVyZXIsIGNvbnN0CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
VGlsZVF1YWQoY29uc3QgQ0NUaWxlRHJhd1F1YWQqIHF1YWQpCiB7Ci0gICAgY29uc3QgSW50UmVj
dCYgdGlsZVJlY3QgPSBxdWFkLT5xdWFkUmVjdCgpOworICAgIGNvbnN0IEludFJlY3QmIHRpbGVS
ZWN0ID0gcXVhZC0+cXVhZFZpc2libGVSZWN0KCk7CiAKICAgICBGbG9hdFJlY3QgY2xhbXBSZWN0
KHRpbGVSZWN0KTsKICAgICAvLyBDbGFtcCB0ZXh0dXJlIGNvb3JkaW5hdGVzIHRvIGF2b2lkIHNh
bXBsaW5nIG91dHNpZGUgdGhlIGxheWVyCkBAIC01NTIsNyArNTUyLDggQEAgdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZChjb25zdCBDQ1RpbGVEcmF3UXVhZCogcXVhZCkK
ICAgICBjbGFtcFJlY3QuaW5mbGF0ZVkoLWNsYW1wWSk7CiAgICAgRmxvYXRTaXplIGNsYW1wT2Zm
c2V0ID0gY2xhbXBSZWN0Lm1pblhNaW5ZQ29ybmVyKCkgLSBGbG9hdFJlY3QodGlsZVJlY3QpLm1p
blhNaW5ZQ29ybmVyKCk7CiAKLSAgICBGbG9hdFBvaW50IHRleHR1cmVPZmZzZXQgPSBxdWFkLT50
ZXh0dXJlT2Zmc2V0KCkgKyBjbGFtcE9mZnNldDsKKyAgICBGbG9hdFBvaW50IHRleHR1cmVPZmZz
ZXQgPSBxdWFkLT50ZXh0dXJlT2Zmc2V0KCkgKyBjbGFtcE9mZnNldCArCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSW50UG9pbnQocXVhZC0+cXVhZFZpc2libGVSZWN0KCkubG9jYXRp
b24oKSAtIHF1YWQtPnF1YWRSZWN0KCkubG9jYXRpb24oKSk7CiAKICAgICAvLyBNYXAgY2xhbXBp
bmcgcmVjdGFuZ2xlIHRvIHVuaXQgc3F1YXJlLgogICAgIGZsb2F0IHZlcnRleFRleFRyYW5zbGF0
ZVggPSAtY2xhbXBSZWN0LngoKSAvIGNsYW1wUmVjdC53aWR0aCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFk
LmNwcAppbmRleCA4ZmNmNDQ5ZjA0ZjJkNWY1NmJmZjU4OTgyY2E0NDEwMDE4ZGJlMjQyLi4zODQy
MzY3M2E3ZTU3MDg0MTE5MjIxYWQxYzEyZjkxM2NkMDQzYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFk
LmNwcApAQCAtNDAsNiArNDAsNyBAQCBDQ0RyYXdRdWFkOjpDQ0RyYXdRdWFkKGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIE1hdGVyaWFsIG1hdGVyaQogICAgIDogbV9z
aGFyZWRRdWFkU3RhdGUoc2hhcmVkUXVhZFN0YXRlKQogICAgICwgbV9tYXRlcmlhbChtYXRlcmlh
bCkKICAgICAsIG1fcXVhZFJlY3QocXVhZFJlY3QpCisgICAgLCBtX3F1YWRWaXNpYmxlUmVjdChx
dWFkUmVjdCkKICAgICAsIG1fcXVhZE9wYXF1ZSh0cnVlKQogICAgICwgbV9uZWVkc0JsZW5kaW5n
KGZhbHNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCmluZGV4IGI1NjkxM2IzY2U1M2FjMGVkMGVlYmU0
ZDc3OTgwNGNjMjVkNGU2YWUuLjc1OGQ0NmIzM2UxMmZiNjhiNDYxZmU1ZTc0ZTY5MTY5MjUwOWI5
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRHJhd1F1YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKQEAgLTU0LDYgKzU0LDEzIEBAIHB1YmxpYzoKICAgICBi
b29sIG5lZWRzQmxlbmRpbmcoKSBjb25zdCB7IHJldHVybiAhbV9zaGFyZWRRdWFkU3RhdGUtPmlz
T3BhcXVlKCkgfHwgbV9uZWVkc0JsZW5kaW5nIHx8IG9wYWNpdHkoKSAhPSAxOyB9CiAgICAgYm9v
bCBpc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFk
U3RhdGUtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKTsgfQogCisgICAgdm9pZCBzZXRRdWFk
VmlzaWJsZVJlY3QoY29uc3QgSW50UmVjdCYgcXVhZFZpc2libGVSZWN0KQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fcXVhZFJlY3QuY29udGFpbnMocXVhZFZpc2libGVSZWN0KSk7CisgICAgICAg
IG1fcXVhZFZpc2libGVSZWN0ID0gcXVhZFZpc2libGVSZWN0OworICAgIH0KKyAgICBjb25zdCBJ
bnRSZWN0JiBxdWFkVmlzaWJsZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3F1YWRWaXNpYmxlUmVj
dDsgfQorCiAgICAgZW51bSBNYXRlcmlhbCB7CiAgICAgICAgIEludmFsaWQsCiAgICAgICAgIERl
YnVnQm9yZGVyLApAQCAtODAsNiArODcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBNYXRlcmlhbCBt
X21hdGVyaWFsOwogICAgIEludFJlY3QgbV9xdWFkUmVjdDsKKyAgICBJbnRSZWN0IG1fcXVhZFZp
c2libGVSZWN0OwogCiAgICAgLy8gQnkgZGVmYXVsdCwgdGhlIHNoYXJlZCBxdWFkIHN0YXRlIGRl
dGVybWluZXMgd2hldGhlciBvciBub3QgdGhpcyBxdWFkIGlzCiAgICAgLy8gb3BhcXVlIG9yIG5l
ZWRzIGJsZW5kaW5nLiBEZXJpdmVkIGNsYXNzZXMgY2FuIG92ZXJyaWRlIHdpdGggdGhlc2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UXVhZEN1bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCmluZGV4IDRhOGI4NTEzMGUxZWQ0ZWVhYzM2NjM1ZWZkN2Mw
Mjk1ODUwZGI4NDMuLmJhZjk1NTQwYWRkYjZmN2Q4MWIwZjNjOGNkZDljZGVhMTRlMDBkODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UXVhZEN1bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgImNj
L0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ1RpbGVEcmF3UXVh
ZC5oIgogCiBuYW1lc3BhY2Ugc3RkIHsKIApAQCAtNDksMTYgKzUwLDI3IEBAIHZvaWQgc3dhcChP
d25QdHI8V2ViQ29yZTo6Q0NEcmF3UXVhZD4mIGEsIE93blB0cjxXZWJDb3JlOjpDQ0RyYXdRdWFk
PiYgYikKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCByZWdpb25Db250YWlu
c1JlY3QoY29uc3QgUmVnaW9uJiByZWdpb24sIGNvbnN0IEludFJlY3QmIHJlY3QpCitzdGF0aWMg
SW50UmVjdCByZWN0U3VidHJhY3RSZWdpb24oY29uc3QgUmVnaW9uJiByZWdpb24sIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiB7CiAgICAgUmVnaW9uIHJlY3RSZWdpb24ocmVjdCk7CiAgICAgUmVnaW9u
IGludGVyc2VjdFJlZ2lvbihpbnRlcnNlY3QocmVnaW9uLCByZWN0UmVnaW9uKSk7CiAKICAgICBp
ZiAoaW50ZXJzZWN0UmVnaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gcmVjdDsKIAorICAgIC8vIFRlc3QgaWYgaW50ZXJzZWN0UmVnaW9uID0gcmVj
dFJlZ2lvbiwgaWYgc28gcmV0dXJuIGVtcHR5IHJlY3QuCiAgICAgcmVjdFJlZ2lvbi5zdWJ0cmFj
dChpbnRlcnNlY3RSZWdpb24pOwotICAgIHJldHVybiByZWN0UmVnaW9uLmlzRW1wdHkoKTsKKyAg
ICBJbnRSZWN0IGJvdW5kc1JlY3QgPSByZWN0UmVnaW9uLmJvdW5kcygpOworICAgIGlmIChib3Vu
ZHNSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGJvdW5kc1JlY3Q7CisKKyAgICAvLyBU
ZXN0IGlmIHJlY3RSZWdpb24gaXMgc3RpbGwgYSByZWN0YW5nbGUuIElmIGl0IGlzLCBpdCB3aWxs
IGJlIGlkZW50aWNhbCB0byBpdHMgYm91bmRzLgorICAgIFJlZ2lvbiBib3VuZHNSZWdpb24oYm91
bmRzUmVjdCk7CisgICAgYm91bmRzUmVnaW9uLnN1YnRyYWN0KHJlY3RSZWdpb24pOworICAgIGlm
IChib3VuZHNSZWdpb24uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gYm91bmRzUmVjdDsKKwor
ICAgIHJldHVybiByZWN0OwogfQogCiB2b2lkIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVh
ZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QpCkBAIC03NCwxMiArODYsMTUgQEAgdm9pZCBDQ1F1YWRD
dWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0KQogICAgIGZvciAo
aW50IGkgPSBxdWFkTGlzdC5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewogICAgICAgICBDQ0Ry
YXdRdWFkKiBkcmF3UXVhZCA9IHF1YWRMaXN0W2ldLmdldCgpOwogCi0gICAgICAgIEludFJlY3Qg
cXVhZFJlY3QoZHJhd1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5tYXBSZWN0KGRyYXdRdWFkLT5xdWFk
UmVjdCgpKSk7CisgICAgICAgIEludFJlY3QgdHJhbnNmb3JtZWRRdWFkUmVjdChkcmF3UXVhZC0+
cXVhZFRyYW5zZm9ybSgpLm1hcFJlY3QoZHJhd1F1YWQtPnF1YWRSZWN0KCkpKTsKIAotICAgICAg
ICBib29sIGtlZXBRdWFkID0gIXJlZ2lvbkNvbnRhaW5zUmVjdChvcGFxdWVDb3ZlcmFnZVRodXNG
YXIsIHF1YWRSZWN0KTsKKyAgICAgICAgSW50UmVjdCB0cmFuc2Zvcm1lZFZpc2libGVRdWFkUmVj
dCA9IHJlY3RTdWJ0cmFjdFJlZ2lvbihvcGFxdWVDb3ZlcmFnZVRodXNGYXIsIHRyYW5zZm9ybWVk
UXVhZFJlY3QpOworICAgICAgICBib29sIGtlZXBRdWFkID0gIXRyYW5zZm9ybWVkVmlzaWJsZVF1
YWRSZWN0LmlzRW1wdHkoKTsKKyAgICAgICAgaWYgKGtlZXBRdWFkICYmIHRyYW5zZm9ybWVkVmlz
aWJsZVF1YWRSZWN0ICE9IHRyYW5zZm9ybWVkUXVhZFJlY3QgJiYgZHJhd1F1YWQtPmlzTGF5ZXJB
eGlzQWxpZ25lZEludFJlY3QoKSkKKyAgICAgICAgICAgIGRyYXdRdWFkLT5zZXRRdWFkVmlzaWJs
ZVJlY3QoZHJhd1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkubWFwUmVjdCh0cmFuc2Zv
cm1lZFZpc2libGVRdWFkUmVjdCkpOwogCiAgICAgICAgIGlmIChrZWVwUXVhZCAmJiBkcmF3UXVh
ZC0+ZHJhd3NPcGFxdWUoKSAmJiBkcmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgp
KQotICAgICAgICAgICAgb3BhcXVlQ292ZXJhZ2VUaHVzRmFyLnVuaXRlKFJlZ2lvbihxdWFkUmVj
dCkpOworICAgICAgICAgICAgb3BhcXVlQ292ZXJhZ2VUaHVzRmFyLnVuaXRlKFJlZ2lvbih0cmFu
c2Zvcm1lZFF1YWRSZWN0KSk7CiAKICAgICAgICAgaWYgKGtlZXBRdWFkKQogICAgICAgICAgICAg
Y3VsbGVkTGlzdC5hcHBlbmQocXVhZExpc3RbaV0ucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVE
cmF3UXVhZC5oCmluZGV4IDEyZTUzZGJkMmE4ZjVkMWZiM2QzMzMxOWIyYzAzMTFlYzUzZjVjYTgu
LjIyNWVjOThjNDMyMGFiMmJhN2NiZTBjZjkwZTU3NTE4NWUyMGVkYmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZURyYXdRdWFk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aWxlRHJhd1F1YWQuaApAQCAtMzksNiArMzksNyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybTNE
T2JqZWN0IHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CiAgICAgSW50
UG9pbnQgdGV4dHVyZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZU9mZnNldDsgfQor
ICAgIHZvaWQgc2V0VGV4dHVyZU9mZnNldChjb25zdCBJbnRQb2ludCYgbmV3T2Zmc2V0KSB7IG1f
dGV4dHVyZU9mZnNldCA9IG5ld09mZnNldDsgfQogICAgIEludFNpemUgdGV4dHVyZVNpemUoKSBj
b25zdCB7IHJldHVybiBtX3RleHR1cmVTaXplOyB9CiAgICAgR0MzRGludCB0ZXh0dXJlRmlsdGVy
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlRmlsdGVyOyB9CiAgICAgYm9vbCBzd2l6emxlQ29u
dGVudHMoKSBjb25zdCB7IHJldHVybiBtX3N3aXp6bGVDb250ZW50czsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggZWQxNWU2
YzEwZTFmZTQ2MmM5NDk2ODU2ZGIzOTM0NTY5ZmFiODgxYy4uYzdmZGFiNmI5NDQyZTQ3YTUxODk5
YTUxMzg4M2JjZWQwMDFmNGRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJj
Yy9DQ1F1YWRDdWxsZXIuaCIKIAorI2luY2x1ZGUgImNjL0NDVGlsZURyYXdRdWFkLmgiCiAjaW5j
bHVkZSA8Z21vY2svZ21vY2suaD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCkBAIC0zNiwz
NyArMzcsMjcgQEAgbmFtZXNwYWNlIHsKIGNsYXNzIENDUXVhZEN1bGxlclRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7CiB9OwogCi1jbGFzcyBUZXN0RHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3
UXVhZCB7Ci1wdWJsaWM6Ci0gICAgVGVzdERyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiBzdGF0ZSwgTWF0ZXJpYWwgbSwgY29uc3QgSW50UmVjdCYgcmVjdCkKLSAgICA6IENDRHJhd1F1
YWQoc3RhdGUsIG0sIHJlY3QpCi0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyBQYXNzT3duUHRy
PFRlc3REcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0ZSwgTWF0
ZXJpYWwgbSwgY29uc3QgSW50UmVjdCYgcmVjdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgVGVzdERyYXdRdWFkKHN0YXRlLCBtLCByZWN0KSk7Ci0gICAgfQotfTsKKyNkZWZp
bmUgTWFrZVRpbGVRdWFkKHMsIHIpICBcCisgICAgQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZSgocyks
IChyKSwgMSwgSW50UG9pbnQoMSwgMSksIEludFNpemUoMTAwLCAxMDApLCAwLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCiAKIHZvaWQgc2V0UXVhZHMoQ0NTaGFyZWRRdWFkU3Rh
dGUqIHJvb3RTdGF0ZSwgQ0NTaGFyZWRRdWFkU3RhdGUqIGNoaWxkU3RhdGUsIENDUXVhZExpc3Qm
IHF1YWRMaXN0KQogewogICAgIHF1YWRMaXN0LmNsZWFyKCk7CiAKLSAgICBxdWFkTGlzdC5hcHBl
bmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRl
bnQsIEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExp
c3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGls
ZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSkp
OwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIEND
RHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDApLCBJbnRTaXpl
KDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUo
cm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwg
MTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3
UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0
KEludFBvaW50KDEwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3Qu
YXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRD
b250ZW50LCBJbnRSZWN0KEludFBvaW50KDIwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7
Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NE
cmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDIwMCksIEludFNpemUo
MTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShy
b290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAs
IDIwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJh
d1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVj
dChJbnRQb2ludCgyMDAsIDIwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotCi0gICAgcXVhZExp
c3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRp
bGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAg
ICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3
UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMCksIEludFNpemUoMTAw
LCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGls
ZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwgMTAw
KSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVh
ZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJ
bnRQb2ludCgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFw
cGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KCksIEludFNpemUo
MTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRl
LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1
YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDIw
MCwgMCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGls
ZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAx
MDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJbnRS
ZWN0KEludFBvaW50KDEwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CisgICAgcXVhZExp
c3QuYXBwZW5kKE1ha2VUaWxlUXVhZChyb290U3RhdGUsIEludFJlY3QoSW50UG9pbnQoMjAwLCAx
MDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVR
dWFkKHJvb3RTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAw
KSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKHJvb3RTdGF0ZSwgSW50UmVj
dChJbnRQb2ludCgxMDAsIDIwMCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0
LmFwcGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDIwMCwgMjAw
KSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CisKKyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVR
dWFkKGNoaWxkU3RhdGUsIEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7
CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChjaGlsZFN0YXRlLCBJbnRSZWN0KElu
dFBvaW50KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVu
ZChNYWtlVGlsZVF1YWQoY2hpbGRTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgwLCAxMDApLCBJbnRT
aXplKDEwMCwgMTAwKSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKGNoaWxk
U3RhdGUsIEludFJlY3QoSW50UG9pbnQoMTAwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsK
IH0KIAogI2RlZmluZSBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMgICAgICAgICAg
ICAgICBcCkBAIC0xMjksNiArMTIwLDIxIEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5
Q3VsbENlbnRlclRpbGVPbmx5KQogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7
CiAgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7CiAgICAgRVhQ
RUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTJ1KTsKKworICAgIEludFJlY3QgcXVhZFZpc2libGVS
ZWN0MSA9IHF1YWRMaXN0WzFdLmdldCgpLT5xdWFkVmlzaWJsZVJlY3QoKTsKKyAgICBFWFBFQ1Rf
RVEocXVhZFZpc2libGVSZWN0MS5oZWlnaHQoKSwgNTApOworCisgICAgSW50UmVjdCBxdWFkVmlz
aWJsZVJlY3QzID0gcXVhZExpc3RbM10uZ2V0KCktPnF1YWRWaXNpYmxlUmVjdCgpOworICAgIEVY
UEVDVF9FUShxdWFkVmlzaWJsZVJlY3QzLndpZHRoKCksIDUwKTsKKworICAgIC8vIE5leHQgaW5k
ZXggaXMgNCwgbm90IDUsIHNpbmNlIGNlbnRyZSBxdWFkIGN1bGxlZC4KKyAgICBJbnRSZWN0IHF1
YWRWaXNpYmxlUmVjdDQgPSBxdWFkTGlzdFs0XS5nZXQoKS0+cXVhZFZpc2libGVSZWN0KCk7Cisg
ICAgRVhQRUNUX0VRKHF1YWRWaXNpYmxlUmVjdDQud2lkdGgoKSwgNTApOworICAgIEVYUEVDVF9F
UShxdWFkVmlzaWJsZVJlY3Q0LngoKSwgMjUwKTsKKworICAgIEludFJlY3QgcXVhZFZpc2libGVS
ZWN0NiA9IHF1YWRMaXN0WzZdLmdldCgpLT5xdWFkVmlzaWJsZVJlY3QoKTsKKyAgICBFWFBFQ1Rf
RVEocXVhZFZpc2libGVSZWN0Ni5oZWlnaHQoKSwgNTApOworICAgIEVYUEVDVF9FUShxdWFkVmlz
aWJsZVJlY3Q2LnkoKSwgMjUwKTsKIH0KIAogVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlD
dWxsQ2hpbGRMaW5lc1VwQm90dG9tUmlnaHQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123128</attachid>
            <date>2012-01-19 07:54:02 -0800</date>
            <delta_ts>2012-01-23 06:30:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76349-20120119105401.patch</filename>
            <type>text/plain</type>
            <size>13800</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NDA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc1YTY1ZTQ3NmE2MGYx
NWQzNDY1ZjVlM2ExNjBkNWI1MGU0ZjA2Ni4uYzBiN2QyOTk4MmNkY2ZmYWI5OWM4MzEwMDY0ZjIy
NThkZmIxYmUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAxLTE5ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFsbG93IG1vZGlmaWNhdGlvbiBvZiBzaXplIG9mIHBhcnRpYWxseSBvY2NsdWRlZCBxdWFk
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
Y2FzZXMgdG8gZXhpc3RpbmcgdW5pdCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0RyYXdRdWFkOjpDQ0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpz
ZXRRdWFkVmlzaWJsZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6cXVhZFZp
c2libGVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1
YWRDdWxsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVjdFN1YnRyYWN0UmVnaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMpOgorCiAyMDEy
LTAxLTE5ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IEFkZCBpc1NlbGZPckFuc2VjdG9yIGFuZCBpc1NlbGZPckRlc2NlbmRh
bnQgbWV0aG9kcyB0byB1dGlsaXRpZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGYx
MzJkMTdlY2QyMmJlNzA0YmViMjgwZjNmYzI2ZGJlMmNmMGQ1NzIuLjlhMTFiNDAzMzg3MDIyYWVj
NGU3ZDZjYWM2OTM2NjRjNDMwMjg2NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTItMDEtMTkgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWxsb3cgbW9kaWZpY2F0aW9uIG9mIHNp
emUgb2YgcGFydGlhbGx5IG9jY2x1ZGVkIHF1YWRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzNDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2V0UXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIw
MTItMDEtMTggIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IENsZWFudXA6IE1vdmUgY2hyb21lLXNwZWNpZmljIGZpbGVzeXN0ZW0gdHlwZSBoYW5kbGluZyBj
b2RlIChmb3IgRmlsZVN5c3RlbSBBUEkpIHVuZGVyIGNocm9taXVtIGRpcmVjdG9yeQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggZWVjMTc5YjE4NmQzMWUwMzRkYzdh
MmZlM2QwOWUzNmZmNTJkMmQ5NC4uOTU4NTU1NzFjNTE1OWUyYTg4ZTZjYmFmZWIyOGZlODM2ZGU1
NzJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC01NDQsNyAr
NTQ0LDcgQEAgc3RhdGljIHZvaWQgZmluZFRpbGVQcm9ncmFtVW5pZm9ybXMoTGF5ZXJSZW5kZXJl
ckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdAogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZHJhd1RpbGVRdWFkKGNvbnN0IENDVGlsZURyYXdRdWFkKiBxdWFkKQogewotICAgIGNv
bnN0IEludFJlY3QmIHRpbGVSZWN0ID0gcXVhZC0+cXVhZFJlY3QoKTsKKyAgICBjb25zdCBJbnRS
ZWN0JiB0aWxlUmVjdCA9IHF1YWQtPnF1YWRWaXNpYmxlUmVjdCgpOwogCiAgICAgRmxvYXRSZWN0
IGNsYW1wUmVjdCh0aWxlUmVjdCk7CiAgICAgLy8gQ2xhbXAgdGV4dHVyZSBjb29yZGluYXRlcyB0
byBhdm9pZCBzYW1wbGluZyBvdXRzaWRlIHRoZSBsYXllcgpAQCAtNTYwLDcgKzU2MCw4IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQoY29uc3QgQ0NUaWxlRHJhd1F1
YWQqIHF1YWQpCiAgICAgY2xhbXBSZWN0LmluZmxhdGVZKC1jbGFtcFkpOwogICAgIEZsb2F0U2l6
ZSBjbGFtcE9mZnNldCA9IGNsYW1wUmVjdC5taW5YTWluWUNvcm5lcigpIC0gRmxvYXRSZWN0KHRp
bGVSZWN0KS5taW5YTWluWUNvcm5lcigpOwogCi0gICAgRmxvYXRQb2ludCB0ZXh0dXJlT2Zmc2V0
ID0gcXVhZC0+dGV4dHVyZU9mZnNldCgpICsgY2xhbXBPZmZzZXQ7CisgICAgRmxvYXRQb2ludCB0
ZXh0dXJlT2Zmc2V0ID0gcXVhZC0+dGV4dHVyZU9mZnNldCgpICsgY2xhbXBPZmZzZXQgKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KHF1YWQtPnF1YWRWaXNpYmxlUmVj
dCgpLmxvY2F0aW9uKCkgLSBxdWFkLT5xdWFkUmVjdCgpLmxvY2F0aW9uKCkpOwogCiAgICAgLy8g
TWFwIGNsYW1waW5nIHJlY3RhbmdsZSB0byB1bml0IHNxdWFyZS4KICAgICBmbG9hdCB2ZXJ0ZXhU
ZXhUcmFuc2xhdGVYID0gLWNsYW1wUmVjdC54KCkgLyBjbGFtcFJlY3Qud2lkdGgoKTsKQEAgLTYy
MywxMyArNjI0LDE0IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQo
Y29uc3QgQ0NUaWxlRHJhd1F1YWQqIHF1YWQpCiAgICAgICAgIENDTGF5ZXJRdWFkOjpFZGdlIHRv
cEVkZ2UodG9wTGVmdCwgdG9wUmlnaHQpOwogICAgICAgICBDQ0xheWVyUXVhZDo6RWRnZSByaWdo
dEVkZ2UodG9wUmlnaHQsIGJvdHRvbVJpZ2h0KTsKIAotICAgICAgICBpZiAocXVhZC0+dG9wRWRn
ZUFBKCkpCisgICAgICAgIC8vIE9ubHkgYXBwbHkgYW50aS1hbGlhc2luZyB0byBlZGdlcyBub3Qg
Y2xpcHBlZCBkdXJpbmcgY3VsbGluZy4KKyAgICAgICAgaWYgKHF1YWQtPnRvcEVkZ2VBQSgpICYm
IHF1YWQtPnF1YWRWaXNpYmxlUmVjdCgpLnkoKSA9PSBxdWFkLT5xdWFkUmVjdCgpLnkoKSkKICAg
ICAgICAgICAgIHRvcEVkZ2UgPSBkZXZpY2VMYXllckVkZ2VzLnRvcCgpOwotICAgICAgICBpZiAo
cXVhZC0+bGVmdEVkZ2VBQSgpKQorICAgICAgICBpZiAocXVhZC0+bGVmdEVkZ2VBQSgpICYmIHF1
YWQtPnF1YWRWaXNpYmxlUmVjdCgpLngoKSA9PSBxdWFkLT5xdWFkUmVjdCgpLngoKSkKICAgICAg
ICAgICAgIGxlZnRFZGdlID0gZGV2aWNlTGF5ZXJFZGdlcy5sZWZ0KCk7Ci0gICAgICAgIGlmIChx
dWFkLT5yaWdodEVkZ2VBQSgpKQorICAgICAgICBpZiAocXVhZC0+cmlnaHRFZGdlQUEoKSAmJiBx
dWFkLT5xdWFkVmlzaWJsZVJlY3QoKS5tYXhYKCkgPT0gcXVhZC0+cXVhZFJlY3QoKS5tYXhYKCkp
CiAgICAgICAgICAgICByaWdodEVkZ2UgPSBkZXZpY2VMYXllckVkZ2VzLnJpZ2h0KCk7Ci0gICAg
ICAgIGlmIChxdWFkLT5ib3R0b21FZGdlQUEoKSkKKyAgICAgICAgaWYgKHF1YWQtPmJvdHRvbUVk
Z2VBQSgpICYmIHF1YWQtPnF1YWRWaXNpYmxlUmVjdCgpLm1heFkoKSA9PSBxdWFkLT5xdWFkUmVj
dCgpLm1heFkoKSkKICAgICAgICAgICAgIGJvdHRvbUVkZ2UgPSBkZXZpY2VMYXllckVkZ2VzLmJv
dHRvbSgpOwogCiAgICAgICAgIGZsb2F0IHNpZ24gPSBGbG9hdFF1YWQodGlsZVJlY3QpLmlzQ291
bnRlcmNsb2Nrd2lzZSgpID8gLTEgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcAppbmRleCAxYmJm
YmI2ZTQ0NTE0MmUyMjNlZTcwZDc4YTI2NTkzYzE1NzAzMGMxLi5kZDY5YTExZjE4ODAzZjllYzUz
YzhmZTc2NTVmYmI5ZjEyNzYzOWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcApAQCAtNDIsNiAr
NDIsNyBAQCBDQ0RyYXdRdWFkOjpDQ0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBz
aGFyZWRRdWFkU3RhdGUsIE1hdGVyaWFsIG1hdGVyaQogICAgIDogbV9zaGFyZWRRdWFkU3RhdGUo
c2hhcmVkUXVhZFN0YXRlKQogICAgICwgbV9tYXRlcmlhbChtYXRlcmlhbCkKICAgICAsIG1fcXVh
ZFJlY3QocXVhZFJlY3QpCisgICAgLCBtX3F1YWRWaXNpYmxlUmVjdChxdWFkUmVjdCkKICAgICAs
IG1fcXVhZE9wYXF1ZSh0cnVlKQogICAgICwgbV9uZWVkc0JsZW5kaW5nKGZhbHNlKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
cmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NEcmF3UXVhZC5oCmluZGV4IGFjYzdjMDI4NjZjYzg5NTkzMTUxOTZiM2I4MzhkMDg4NmI1MWM2
ZGUuLmYwMjI5ODUwM2E5ZGI1ZWVkNWI5OTExOTI2MGQ0ZWYxZTRjNGNjM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Ry
YXdRdWFkLmgKQEAgLTU2LDYgKzU2LDEzIEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzQmxlbmRp
bmcoKSBjb25zdCB7IHJldHVybiAhbV9zaGFyZWRRdWFkU3RhdGUtPmlzT3BhcXVlKCkgfHwgbV9u
ZWVkc0JsZW5kaW5nIHx8IG9wYWNpdHkoKSAhPSAxOyB9CiAgICAgYm9vbCBpc0xheWVyQXhpc0Fs
aWduZWRJbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmlzTGF5ZXJB
eGlzQWxpZ25lZEludFJlY3QoKTsgfQogCisgICAgdm9pZCBzZXRRdWFkVmlzaWJsZVJlY3QoY29u
c3QgSW50UmVjdCYgcXVhZFZpc2libGVSZWN0KQorICAgIHsKKyAgICAgICAgbV9xdWFkVmlzaWJs
ZVJlY3QgPSBxdWFkVmlzaWJsZVJlY3Q7CisgICAgICAgIG1fcXVhZFZpc2libGVSZWN0LmludGVy
c2VjdChtX3F1YWRSZWN0KTsKKyAgICB9CisgICAgY29uc3QgSW50UmVjdCYgcXVhZFZpc2libGVS
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9xdWFkVmlzaWJsZVJlY3Q7IH0KKwogICAgIGVudW0gTWF0
ZXJpYWwgewogICAgICAgICBJbnZhbGlkLAogICAgICAgICBEZWJ1Z0JvcmRlciwKQEAgLTg0LDYg
KzkxLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgTWF0ZXJpYWwgbV9tYXRlcmlhbDsKICAgICBJbnRS
ZWN0IG1fcXVhZFJlY3Q7CisgICAgSW50UmVjdCBtX3F1YWRWaXNpYmxlUmVjdDsKIAogICAgIC8v
IEJ5IGRlZmF1bHQsIHRoZSBzaGFyZWQgcXVhZCBzdGF0ZSBkZXRlcm1pbmVzIHdoZXRoZXIgb3Ig
bm90IHRoaXMgcXVhZCBpcwogICAgIC8vIG9wYXF1ZSBvciBuZWVkcyBibGVuZGluZy4gRGVyaXZl
ZCBjbGFzc2VzIGNhbiBvdmVycmlkZSB3aXRoIHRoZXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNw
cAppbmRleCAwNzlhYTdmZjZiMzFiMWI0NmYyYzI5ZmE3MWY1Zjc0ODhiNGJiOTA5Li4zMDQwMzAw
YjZiNDVhNjQxMzNhNTVjYjJhMTZlODNjODg0ODkwNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxl
ci5jcHAKQEAgLTQ4LDE2ICs0OCwyNyBAQCB2b2lkIHN3YXAoT3duUHRyPFdlYkNvcmU6OkNDRHJh
d1F1YWQ+JiBhLCBPd25QdHI8V2ViQ29yZTo6Q0NEcmF3UXVhZD4mIGIpCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIGJvb2wgcmVnaW9uQ29udGFpbnNSZWN0KGNvbnN0IFJlZ2lvbiYg
cmVnaW9uLCBjb25zdCBJbnRSZWN0JiByZWN0KQorc3RhdGljIEludFJlY3QgcmVjdFN1YnRyYWN0
UmVnaW9uKGNvbnN0IFJlZ2lvbiYgcmVnaW9uLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAg
IFJlZ2lvbiByZWN0UmVnaW9uKHJlY3QpOwogICAgIFJlZ2lvbiBpbnRlcnNlY3RSZWdpb24oaW50
ZXJzZWN0KHJlZ2lvbiwgcmVjdFJlZ2lvbikpOwogCiAgICAgaWYgKGludGVyc2VjdFJlZ2lvbi5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHJlY3Q7CiAK
KyAgICAvLyBUZXN0IGlmIGludGVyc2VjdFJlZ2lvbiA9IHJlY3RSZWdpb24sIGlmIHNvIHJldHVy
biBlbXB0eSByZWN0LgogICAgIHJlY3RSZWdpb24uc3VidHJhY3QoaW50ZXJzZWN0UmVnaW9uKTsK
LSAgICByZXR1cm4gcmVjdFJlZ2lvbi5pc0VtcHR5KCk7CisgICAgSW50UmVjdCBib3VuZHNSZWN0
ID0gcmVjdFJlZ2lvbi5ib3VuZHMoKTsKKyAgICBpZiAoYm91bmRzUmVjdC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBib3VuZHNSZWN0OworCisgICAgLy8gVGVzdCBpZiByZWN0UmVnaW9uIGlz
IHN0aWxsIGEgcmVjdGFuZ2xlLiBJZiBpdCBpcywgaXQgd2lsbCBiZSBpZGVudGljYWwgdG8gaXRz
IGJvdW5kcy4KKyAgICBSZWdpb24gYm91bmRzUmVnaW9uKGJvdW5kc1JlY3QpOworICAgIGJvdW5k
c1JlZ2lvbi5zdWJ0cmFjdChyZWN0UmVnaW9uKTsKKyAgICBpZiAoYm91bmRzUmVnaW9uLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGJvdW5kc1JlY3Q7CisKKyAgICByZXR1cm4gcmVjdDsKIH0K
IAogdm9pZCBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKENDUXVhZExpc3QmIHF1YWRM
aXN0KQpAQCAtNzMsMTIgKzg0LDE1IEBAIHZvaWQgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRR
dWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCkKICAgICBmb3IgKGludCBpID0gcXVhZExpc3Quc2l6
ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgQ0NEcmF3UXVhZCogZHJhd1F1YWQgPSBx
dWFkTGlzdFtpXS5nZXQoKTsKIAotICAgICAgICBJbnRSZWN0IHF1YWRSZWN0KGRyYXdRdWFkLT5x
dWFkVHJhbnNmb3JtKCkubWFwUmVjdChkcmF3UXVhZC0+cXVhZFJlY3QoKSkpOworICAgICAgICBJ
bnRSZWN0IHRyYW5zZm9ybWVkUXVhZFJlY3QoZHJhd1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5tYXBS
ZWN0KGRyYXdRdWFkLT5xdWFkUmVjdCgpKSk7CiAKLSAgICAgICAgYm9vbCBrZWVwUXVhZCA9ICFy
ZWdpb25Db250YWluc1JlY3Qob3BhcXVlQ292ZXJhZ2VUaHVzRmFyLCBxdWFkUmVjdCk7CisgICAg
ICAgIEludFJlY3QgdHJhbnNmb3JtZWRWaXNpYmxlUXVhZFJlY3QgPSByZWN0U3VidHJhY3RSZWdp
b24ob3BhcXVlQ292ZXJhZ2VUaHVzRmFyLCB0cmFuc2Zvcm1lZFF1YWRSZWN0KTsKKyAgICAgICAg
Ym9vbCBrZWVwUXVhZCA9ICF0cmFuc2Zvcm1lZFZpc2libGVRdWFkUmVjdC5pc0VtcHR5KCk7Cisg
ICAgICAgIGlmIChrZWVwUXVhZCAmJiB0cmFuc2Zvcm1lZFZpc2libGVRdWFkUmVjdCAhPSB0cmFu
c2Zvcm1lZFF1YWRSZWN0ICYmIGRyYXdRdWFkLT5pc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkp
CisgICAgICAgICAgICBkcmF3UXVhZC0+c2V0UXVhZFZpc2libGVSZWN0KGRyYXdRdWFkLT5xdWFk
VHJhbnNmb3JtKCkuaW52ZXJzZSgpLm1hcFJlY3QodHJhbnNmb3JtZWRWaXNpYmxlUXVhZFJlY3Qp
KTsKIAogICAgICAgICBpZiAoa2VlcFF1YWQgJiYgZHJhd1F1YWQtPmRyYXdzT3BhcXVlKCkgJiYg
ZHJhd1F1YWQtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSkKLSAgICAgICAgICAgIG9wYXF1
ZUNvdmVyYWdlVGh1c0Zhci51bml0ZShSZWdpb24ocXVhZFJlY3QpKTsKKyAgICAgICAgICAgIG9w
YXF1ZUNvdmVyYWdlVGh1c0Zhci51bml0ZShSZWdpb24odHJhbnNmb3JtZWRRdWFkUmVjdCkpOwog
CiAgICAgICAgIGlmIChrZWVwUXVhZCkKICAgICAgICAgICAgIGN1bGxlZExpc3QuYXBwZW5kKHF1
YWRMaXN0W2ldLnJlbGVhc2UoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAppbmRleCBlZDE1ZTZjMTBlMWZlNDYyYzk0OTY4NTZkYjM5
MzQ1NjlmYWI4ODFjLi5jN2ZkYWI2Yjk0NDJlNDdhNTE4OTlhNTEzODgzYmNlZDAwMWY0ZGYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5j
cHAKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgogCisj
aW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKICNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgog
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKQEAgLTM2LDM3ICszNywyNyBAQCBuYW1lc3BhY2Ug
ewogY2xhc3MgQ0NRdWFkQ3VsbGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKIH07CiAK
LWNsYXNzIFRlc3REcmF3UXVhZCA6IHB1YmxpYyBDQ0RyYXdRdWFkIHsKLXB1YmxpYzoKLSAgICBU
ZXN0RHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHN0YXRlLCBNYXRlcmlhbCBtLCBj
b25zdCBJbnRSZWN0JiByZWN0KQotICAgIDogQ0NEcmF3UXVhZChzdGF0ZSwgbSwgcmVjdCkKLSAg
ICB7Ci0gICAgfQotCi0gICAgc3RhdGljIFBhc3NPd25QdHI8VGVzdERyYXdRdWFkPiBjcmVhdGUo
Y29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHN0YXRlLCBNYXRlcmlhbCBtLCBjb25zdCBJbnRSZWN0
JiByZWN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXN0RHJhd1F1YWQo
c3RhdGUsIG0sIHJlY3QpKTsKLSAgICB9Ci19OworI2RlZmluZSBNYWtlVGlsZVF1YWQocywgcikg
IFwKKyAgICBDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKChzKSwgKHIpLCAxLCBJbnRQb2ludCgxLCAx
KSwgSW50U2l6ZSgxMDAsIDEwMCksIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSkKIAogdm9pZCBzZXRRdWFkcyhDQ1NoYXJlZFF1YWRTdGF0ZSogcm9vdFN0YXRlLCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogY2hpbGRTdGF0ZSwgQ0NRdWFkTGlzdCYgcXVhZExpc3QpCiB7CiAgICAgcXVh
ZExpc3QuY2xlYXIoKTsKIAotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0
ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgp
LCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFk
OjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50
UG9pbnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5k
KFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50
LCBJbnRSZWN0KEludFBvaW50KDIwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1
YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6
OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAw
KSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRl
LCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMTAwLCAxMDApLCBJ
bnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpj
cmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9p
bnQoMjAwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQo
VGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQs
IEludFJlY3QoSW50UG9pbnQoMCwgMjAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVh
ZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6
VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMjAwKSwgSW50U2l6ZSgxMDAsIDEw
MCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0
ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDIwMCwgMjAwKSwg
SW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0KLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFk
OjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KElu
dFBvaW50KCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0
RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIElu
dFJlY3QoSW50UG9pbnQoMTAwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExp
c3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRp
bGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSkp
KTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwg
Q0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMTAwKSwgSW50
U2l6ZSgxMDAsIDEwMCkpKSk7CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChyb290
U3RhdGUsIEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CisgICAgcXVh
ZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChyb290U3RhdGUsIEludFJlY3QoSW50UG9pbnQoMTAw
LCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxl
UXVhZChyb290U3RhdGUsIEludFJlY3QoSW50UG9pbnQoMjAwLCAwKSwgSW50U2l6ZSgxMDAsIDEw
MCkpKSk7CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChyb290U3RhdGUsIEludFJl
Y3QoSW50UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CisgICAgcXVhZExpc3Qu
YXBwZW5kKE1ha2VUaWxlUXVhZChyb290U3RhdGUsIEludFJlY3QoSW50UG9pbnQoMTAwLCAxMDAp
LCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFk
KHJvb3RTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgyMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDAp
KSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0
KEludFBvaW50KDAsIDIwMCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFw
cGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDEwMCwgMjAwKSwg
SW50U2l6ZSgxMDAsIDEwMCkpKSk7CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChy
b290U3RhdGUsIEludFJlY3QoSW50UG9pbnQoMjAwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSkp
KTsKKworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQoY2hpbGRTdGF0ZSwgSW50UmVj
dChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQo
TWFrZVRpbGVRdWFkKGNoaWxkU3RhdGUsIEludFJlY3QoSW50UG9pbnQoMTAwLCAwKSwgSW50U2l6
ZSgxMDAsIDEwMCkpKSk7CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChjaGlsZFN0
YXRlLCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAg
IHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQoY2hpbGRTdGF0ZSwgSW50UmVjdChJbnRQb2lu
dCgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwogfQogCiAjZGVmaW5lIERFQ0xBUkVf
QU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUyAgICAgICAgICAgICAgIFwKQEAgLTEyOSw2ICsxMjAs
MjEgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2VudGVyVGlsZU9ubHkpCiAg
ICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKICAgICBDQ1F1YWRDdWxsZXI6OmN1
bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgp
LCAxMnUpOworCisgICAgSW50UmVjdCBxdWFkVmlzaWJsZVJlY3QxID0gcXVhZExpc3RbMV0uZ2V0
KCktPnF1YWRWaXNpYmxlUmVjdCgpOworICAgIEVYUEVDVF9FUShxdWFkVmlzaWJsZVJlY3QxLmhl
aWdodCgpLCA1MCk7CisKKyAgICBJbnRSZWN0IHF1YWRWaXNpYmxlUmVjdDMgPSBxdWFkTGlzdFsz
XS5nZXQoKS0+cXVhZFZpc2libGVSZWN0KCk7CisgICAgRVhQRUNUX0VRKHF1YWRWaXNpYmxlUmVj
dDMud2lkdGgoKSwgNTApOworCisgICAgLy8gTmV4dCBpbmRleCBpcyA0LCBub3QgNSwgc2luY2Ug
Y2VudHJlIHF1YWQgY3VsbGVkLgorICAgIEludFJlY3QgcXVhZFZpc2libGVSZWN0NCA9IHF1YWRM
aXN0WzRdLmdldCgpLT5xdWFkVmlzaWJsZVJlY3QoKTsKKyAgICBFWFBFQ1RfRVEocXVhZFZpc2li
bGVSZWN0NC53aWR0aCgpLCA1MCk7CisgICAgRVhQRUNUX0VRKHF1YWRWaXNpYmxlUmVjdDQueCgp
LCAyNTApOworCisgICAgSW50UmVjdCBxdWFkVmlzaWJsZVJlY3Q2ID0gcXVhZExpc3RbNl0uZ2V0
KCktPnF1YWRWaXNpYmxlUmVjdCgpOworICAgIEVYUEVDVF9FUShxdWFkVmlzaWJsZVJlY3Q2Lmhl
aWdodCgpLCA1MCk7CisgICAgRVhQRUNUX0VRKHF1YWRWaXNpYmxlUmVjdDYueSgpLCAyNTApOwog
fQogCiBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxDaGlsZExpbmVzVXBCb3R0b21S
aWdodCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123547</attachid>
            <date>2012-01-23 06:30:08 -0800</date>
            <delta_ts>2012-01-24 07:11:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76349-20120123093007.patch</filename>
            <type>text/plain</type>
            <size>14044</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQ3OGUzMDU3NjgxNTY2
YTQyZWYwYjQ4Nzk3ZTBiNGNmZTU1ZjgzNC4uZTVmNTYxNmNmNmNkYWJiM2JlMzJkODk3ZjU3ZGIy
MzMyNzBmMmJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAxLTIzICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFsbG93IG1vZGlmaWNhdGlvbiBvZiBzaXplIG9mIHBhcnRpYWxseSBvY2NsdWRlZCBxdWFk
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
Y2FzZXMgdG8gZXhpc3RpbmcgdW5pdCB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0RyYXdRdWFkOjpDQ0RyYXdRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpz
ZXRRdWFkVmlzaWJsZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6cXVhZFZp
c2libGVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1
YWRDdWxsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVjdFN1YnRyYWN0UmVnaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMpOgorCiAyMDEy
LTAxLTIzICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAg
ICAgIFNWRyBhbmltYXRpb24gcmVwYWludCBpc3N1ZSB3aXRoIGltYWdlIGFuZCBkeW5hbWljIGNs
aXBQYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGFkY2RlODk2MDZkOTU5ZmE4YjA1
ZmUyZWY2MWVmMTBhNmU2M2I4YTcuLjI5ZDE4ODlkNGZiM2U3NWYwZmJhNDI3MmFkMTU3MTJmMmY0
MGY3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTIt
MDEtMjMgIFcuIEphbWVzIE1hY0xlYW4gIDx3am1hY2xlYW5AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtjaHJvbWl1bV0gQWxsb3cgbW9kaWZpY2F0aW9uIG9mIHNpemUgb2YgcGFydGlhbGx5IG9j
Y2x1ZGVkIHF1YWRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzYzNDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHRlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0
UXVhZHMpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTItMDEtMjAgIFBhdmVsIEZl
bGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFBh
Z2VBZ2VudC5vcGVuKCkgZG9zZW4ndCBiZWxvbmcgdG8gdGhlIHByb3RvY29sLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggYmJkZjg5ZGFmMDE2OGNjODA0MTk2YmQ5
ZjMxM2IzMGE4OWYzMzFjNi4uZjM2N2VmOWU3ODA3MjE0NGUyYjA1YTMxMWEyZjk4OWViNzBjMTE4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC01NDQsNyArNTQ0
LDcgQEAgc3RhdGljIHZvaWQgZmluZFRpbGVQcm9ncmFtVW5pZm9ybXMoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdAogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd1RpbGVRdWFkKGNvbnN0IENDVGlsZURyYXdRdWFkKiBxdWFkKQogewotICAgIGNvbnN0
IEludFJlY3QmIHRpbGVSZWN0ID0gcXVhZC0+cXVhZFJlY3QoKTsKKyAgICBjb25zdCBJbnRSZWN0
JiB0aWxlUmVjdCA9IHF1YWQtPnF1YWRWaXNpYmxlUmVjdCgpOwogCiAgICAgRmxvYXRSZWN0IGNs
YW1wUmVjdCh0aWxlUmVjdCk7CiAgICAgLy8gQ2xhbXAgdGV4dHVyZSBjb29yZGluYXRlcyB0byBh
dm9pZCBzYW1wbGluZyBvdXRzaWRlIHRoZSBsYXllcgpAQCAtNTYwLDcgKzU2MCw4IEBAIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQoY29uc3QgQ0NUaWxlRHJhd1F1YWQq
IHF1YWQpCiAgICAgY2xhbXBSZWN0LmluZmxhdGVZKC1jbGFtcFkpOwogICAgIEZsb2F0U2l6ZSBj
bGFtcE9mZnNldCA9IGNsYW1wUmVjdC5taW5YTWluWUNvcm5lcigpIC0gRmxvYXRSZWN0KHRpbGVS
ZWN0KS5taW5YTWluWUNvcm5lcigpOwogCi0gICAgRmxvYXRQb2ludCB0ZXh0dXJlT2Zmc2V0ID0g
cXVhZC0+dGV4dHVyZU9mZnNldCgpICsgY2xhbXBPZmZzZXQ7CisgICAgRmxvYXRQb2ludCB0ZXh0
dXJlT2Zmc2V0ID0gcXVhZC0+dGV4dHVyZU9mZnNldCgpICsgY2xhbXBPZmZzZXQgKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KHF1YWQtPnF1YWRWaXNpYmxlUmVjdCgp
LmxvY2F0aW9uKCkgLSBxdWFkLT5xdWFkUmVjdCgpLmxvY2F0aW9uKCkpOwogCiAgICAgLy8gTWFw
IGNsYW1waW5nIHJlY3RhbmdsZSB0byB1bml0IHNxdWFyZS4KICAgICBmbG9hdCB2ZXJ0ZXhUZXhU
cmFuc2xhdGVYID0gLWNsYW1wUmVjdC54KCkgLyBjbGFtcFJlY3Qud2lkdGgoKTsKQEAgLTYyMywx
MyArNjI0LDE0IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQoY29u
c3QgQ0NUaWxlRHJhd1F1YWQqIHF1YWQpCiAgICAgICAgIENDTGF5ZXJRdWFkOjpFZGdlIHRvcEVk
Z2UodG9wTGVmdCwgdG9wUmlnaHQpOwogICAgICAgICBDQ0xheWVyUXVhZDo6RWRnZSByaWdodEVk
Z2UodG9wUmlnaHQsIGJvdHRvbVJpZ2h0KTsKIAotICAgICAgICBpZiAocXVhZC0+dG9wRWRnZUFB
KCkpCisgICAgICAgIC8vIE9ubHkgYXBwbHkgYW50aS1hbGlhc2luZyB0byBlZGdlcyBub3QgY2xp
cHBlZCBkdXJpbmcgY3VsbGluZy4KKyAgICAgICAgaWYgKHF1YWQtPnRvcEVkZ2VBQSgpICYmIHF1
YWQtPnF1YWRWaXNpYmxlUmVjdCgpLnkoKSA9PSBxdWFkLT5xdWFkUmVjdCgpLnkoKSkKICAgICAg
ICAgICAgIHRvcEVkZ2UgPSBkZXZpY2VMYXllckVkZ2VzLnRvcCgpOwotICAgICAgICBpZiAocXVh
ZC0+bGVmdEVkZ2VBQSgpKQorICAgICAgICBpZiAocXVhZC0+bGVmdEVkZ2VBQSgpICYmIHF1YWQt
PnF1YWRWaXNpYmxlUmVjdCgpLngoKSA9PSBxdWFkLT5xdWFkUmVjdCgpLngoKSkKICAgICAgICAg
ICAgIGxlZnRFZGdlID0gZGV2aWNlTGF5ZXJFZGdlcy5sZWZ0KCk7Ci0gICAgICAgIGlmIChxdWFk
LT5yaWdodEVkZ2VBQSgpKQorICAgICAgICBpZiAocXVhZC0+cmlnaHRFZGdlQUEoKSAmJiBxdWFk
LT5xdWFkVmlzaWJsZVJlY3QoKS5tYXhYKCkgPT0gcXVhZC0+cXVhZFJlY3QoKS5tYXhYKCkpCiAg
ICAgICAgICAgICByaWdodEVkZ2UgPSBkZXZpY2VMYXllckVkZ2VzLnJpZ2h0KCk7Ci0gICAgICAg
IGlmIChxdWFkLT5ib3R0b21FZGdlQUEoKSkKKyAgICAgICAgaWYgKHF1YWQtPmJvdHRvbUVkZ2VB
QSgpICYmIHF1YWQtPnF1YWRWaXNpYmxlUmVjdCgpLm1heFkoKSA9PSBxdWFkLT5xdWFkUmVjdCgp
Lm1heFkoKSkKICAgICAgICAgICAgIGJvdHRvbUVkZ2UgPSBkZXZpY2VMYXllckVkZ2VzLmJvdHRv
bSgpOwogCiAgICAgICAgIGZsb2F0IHNpZ24gPSBGbG9hdFF1YWQodGlsZVJlY3QpLmlzQ291bnRl
cmNsb2Nrd2lzZSgpID8gLTEgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcAppbmRleCAxYmJmYmI2
ZTQ0NTE0MmUyMjNlZTcwZDc4YTI2NTkzYzE1NzAzMGMxLi5kZDY5YTExZjE4ODAzZjllYzUzYzhm
ZTc2NTVmYmI5ZjEyNzYzOWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcApAQCAtNDIsNiArNDIs
NyBAQCBDQ0RyYXdRdWFkOjpDQ0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIE1hdGVyaWFsIG1hdGVyaQogICAgIDogbV9zaGFyZWRRdWFkU3RhdGUoc2hh
cmVkUXVhZFN0YXRlKQogICAgICwgbV9tYXRlcmlhbChtYXRlcmlhbCkKICAgICAsIG1fcXVhZFJl
Y3QocXVhZFJlY3QpCisgICAgLCBtX3F1YWRWaXNpYmxlUmVjdChxdWFkUmVjdCkKICAgICAsIG1f
cXVhZE9wYXF1ZSh0cnVlKQogICAgICwgbV9uZWVkc0JsZW5kaW5nKGZhbHNlKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3
UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
cmF3UXVhZC5oCmluZGV4IGFjYzdjMDI4NjZjYzg5NTkzMTUxOTZiM2I4MzhkMDg4NmI1MWM2ZGUu
LmYwMjI5ODUwM2E5ZGI1ZWVkNWI5OTExOTI2MGQ0ZWYxZTRjNGNjM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdR
dWFkLmgKQEAgLTU2LDYgKzU2LDEzIEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzQmxlbmRpbmco
KSBjb25zdCB7IHJldHVybiAhbV9zaGFyZWRRdWFkU3RhdGUtPmlzT3BhcXVlKCkgfHwgbV9uZWVk
c0JsZW5kaW5nIHx8IG9wYWNpdHkoKSAhPSAxOyB9CiAgICAgYm9vbCBpc0xheWVyQXhpc0FsaWdu
ZWRJbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmlzTGF5ZXJBeGlz
QWxpZ25lZEludFJlY3QoKTsgfQogCisgICAgdm9pZCBzZXRRdWFkVmlzaWJsZVJlY3QoY29uc3Qg
SW50UmVjdCYgcXVhZFZpc2libGVSZWN0KQorICAgIHsKKyAgICAgICAgbV9xdWFkVmlzaWJsZVJl
Y3QgPSBxdWFkVmlzaWJsZVJlY3Q7CisgICAgICAgIG1fcXVhZFZpc2libGVSZWN0LmludGVyc2Vj
dChtX3F1YWRSZWN0KTsKKyAgICB9CisgICAgY29uc3QgSW50UmVjdCYgcXVhZFZpc2libGVSZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9xdWFkVmlzaWJsZVJlY3Q7IH0KKwogICAgIGVudW0gTWF0ZXJp
YWwgewogICAgICAgICBJbnZhbGlkLAogICAgICAgICBEZWJ1Z0JvcmRlciwKQEAgLTg0LDYgKzkx
LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgTWF0ZXJpYWwgbV9tYXRlcmlhbDsKICAgICBJbnRSZWN0
IG1fcXVhZFJlY3Q7CisgICAgSW50UmVjdCBtX3F1YWRWaXNpYmxlUmVjdDsKIAogICAgIC8vIEJ5
IGRlZmF1bHQsIHRoZSBzaGFyZWQgcXVhZCBzdGF0ZSBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90
IHRoaXMgcXVhZCBpcwogICAgIC8vIG9wYXF1ZSBvciBuZWVkcyBibGVuZGluZy4gRGVyaXZlZCBj
bGFzc2VzIGNhbiBvdmVycmlkZSB3aXRoIHRoZXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcApp
bmRleCBkMzBmZmM4NDBjOTc4OWJmNzQ4MTYxMGY4NjE0OGVmNjVkOTM2NzNmLi42ZmQ0Y2Y0NGRl
MDIzMjg5Y2FkZWUxNmIwMGRhODQzZDQ0MDhlYjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5j
cHAKQEAgLTUwLDE2ICs1MCwyNyBAQCB2b2lkIHN3YXAoT3duUHRyPFdlYkNvcmU6OkNDRHJhd1F1
YWQ+JiBhLCBPd25QdHI8V2ViQ29yZTo6Q0NEcmF3UXVhZD4mIGIpCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIGJvb2wgcmVnaW9uQ29udGFpbnNSZWN0KGNvbnN0IFJlZ2lvbiYgcmVn
aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0KQorc3RhdGljIEludFJlY3QgcmVjdFN1YnRyYWN0UmVn
aW9uKGNvbnN0IFJlZ2lvbiYgcmVnaW9uLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIFJl
Z2lvbiByZWN0UmVnaW9uKHJlY3QpOwogICAgIFJlZ2lvbiBpbnRlcnNlY3RSZWdpb24oaW50ZXJz
ZWN0KHJlZ2lvbiwgcmVjdFJlZ2lvbikpOwogCiAgICAgaWYgKGludGVyc2VjdFJlZ2lvbi5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHJlY3Q7CiAKKyAg
ICAvLyBUZXN0IGlmIGludGVyc2VjdFJlZ2lvbiA9IHJlY3RSZWdpb24sIGlmIHNvIHJldHVybiBl
bXB0eSByZWN0LgogICAgIHJlY3RSZWdpb24uc3VidHJhY3QoaW50ZXJzZWN0UmVnaW9uKTsKLSAg
ICByZXR1cm4gcmVjdFJlZ2lvbi5pc0VtcHR5KCk7CisgICAgSW50UmVjdCBib3VuZHNSZWN0ID0g
cmVjdFJlZ2lvbi5ib3VuZHMoKTsKKyAgICBpZiAoYm91bmRzUmVjdC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBib3VuZHNSZWN0OworCisgICAgLy8gVGVzdCBpZiByZWN0UmVnaW9uIGlzIHN0
aWxsIGEgcmVjdGFuZ2xlLiBJZiBpdCBpcywgaXQgd2lsbCBiZSBpZGVudGljYWwgdG8gaXRzIGJv
dW5kcy4KKyAgICBSZWdpb24gYm91bmRzUmVnaW9uKGJvdW5kc1JlY3QpOworICAgIGJvdW5kc1Jl
Z2lvbi5zdWJ0cmFjdChyZWN0UmVnaW9uKTsKKyAgICBpZiAoYm91bmRzUmVnaW9uLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIGJvdW5kc1JlY3Q7CisKKyAgICByZXR1cm4gcmVjdDsKIH0KIAog
c3RhdGljIEludFJlY3QgZW5jbG9zZWRJbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAg
LTg3LDE0ICs5OCwxNiBAQCB2b2lkIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMoQ0NR
dWFkTGlzdCYgcXVhZExpc3QpCiAgICAgZm9yIChpbnQgaSA9IHF1YWRMaXN0LnNpemUoKSAtIDE7
IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIENDRHJhd1F1YWQqIGRyYXdRdWFkID0gcXVhZExpc3Rb
aV0uZ2V0KCk7CiAKLSAgICAgICAgSW50UmVjdCBxdWFkUmVjdChkcmF3UXVhZC0+cXVhZFRyYW5z
Zm9ybSgpLm1hcFJlY3QoZHJhd1F1YWQtPnF1YWRSZWN0KCkpKTsKKyAgICAgICAgRmxvYXRSZWN0
IGZsb2F0VHJhbnNmb3JtZWRSZWN0ID0gZHJhd1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5tYXBSZWN0
KEZsb2F0UmVjdChkcmF3UXVhZC0+cXVhZFJlY3QoKSkpOworICAgICAgICBJbnRSZWN0IHRyYW5z
Zm9ybWVkUXVhZFJlY3QoZW5jbG9zZWRJbnRSZWN0KGZsb2F0VHJhbnNmb3JtZWRSZWN0KSk7CiAK
LSAgICAgICAgYm9vbCBrZWVwUXVhZCA9ICFyZWdpb25Db250YWluc1JlY3Qob3BhcXVlQ292ZXJh
Z2VUaHVzRmFyLCBxdWFkUmVjdCk7CisgICAgICAgIEludFJlY3QgdHJhbnNmb3JtZWRWaXNpYmxl
UXVhZFJlY3QgPSByZWN0U3VidHJhY3RSZWdpb24ob3BhcXVlQ292ZXJhZ2VUaHVzRmFyLCB0cmFu
c2Zvcm1lZFF1YWRSZWN0KTsKKyAgICAgICAgYm9vbCBrZWVwUXVhZCA9ICF0cmFuc2Zvcm1lZFZp
c2libGVRdWFkUmVjdC5pc0VtcHR5KCk7CisgICAgICAgIGlmIChrZWVwUXVhZCAmJiB0cmFuc2Zv
cm1lZFZpc2libGVRdWFkUmVjdCAhPSB0cmFuc2Zvcm1lZFF1YWRSZWN0ICYmIGRyYXdRdWFkLT5p
c0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkpCisgICAgICAgICAgICBkcmF3UXVhZC0+c2V0UXVh
ZFZpc2libGVSZWN0KGRyYXdRdWFkLT5xdWFkVHJhbnNmb3JtKCkuaW52ZXJzZSgpLm1hcFJlY3Qo
dHJhbnNmb3JtZWRWaXNpYmxlUXVhZFJlY3QpKTsKIAotICAgICAgICBpZiAoa2VlcFF1YWQgJiYg
ZHJhd1F1YWQtPmRyYXdzT3BhcXVlKCkgJiYgZHJhd1F1YWQtPmlzTGF5ZXJBeGlzQWxpZ25lZElu
dFJlY3QoKSkgewotICAgICAgICAgICAgSW50UmVjdCBvcGFxdWVSZWN0ID0gZW5jbG9zZWRJbnRS
ZWN0KGRyYXdRdWFkLT5xdWFkVHJhbnNmb3JtKCkubWFwUmVjdChGbG9hdFJlY3QoZHJhd1F1YWQt
PnF1YWRSZWN0KCkpKSk7Ci0gICAgICAgICAgICBvcGFxdWVDb3ZlcmFnZVRodXNGYXIudW5pdGUo
b3BhcXVlUmVjdCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGtlZXBRdWFkICYmIGRyYXdRdWFk
LT5kcmF3c09wYXF1ZSgpICYmIGRyYXdRdWFkLT5pc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkp
CisgICAgICAgICAgICBvcGFxdWVDb3ZlcmFnZVRodXNGYXIudW5pdGUoUmVnaW9uKHRyYW5zZm9y
bWVkUXVhZFJlY3QpKTsKIAogICAgICAgICBpZiAoa2VlcFF1YWQpCiAgICAgICAgICAgICBjdWxs
ZWRMaXN0LmFwcGVuZChxdWFkTGlzdFtpXS5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggZWQxNWU2YzEwZTFm
ZTQ2MmM5NDk2ODU2ZGIzOTM0NTY5ZmFiODgxYy4uYzdmZGFiNmI5NDQyZTQ3YTUxODk5YTUxMzg4
M2JjZWQwMDFmNGRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1F1YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
UXVhZEN1bGxlclRlc3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJjYy9DQ1F1
YWRDdWxsZXIuaCIKIAorI2luY2x1ZGUgImNjL0NDVGlsZURyYXdRdWFkLmgiCiAjaW5jbHVkZSA8
Z21vY2svZ21vY2suaD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCkBAIC0zNiwzNyArMzcs
MjcgQEAgbmFtZXNwYWNlIHsKIGNsYXNzIENDUXVhZEN1bGxlclRlc3QgOiBwdWJsaWMgdGVzdGlu
Zzo6VGVzdCB7CiB9OwogCi1jbGFzcyBUZXN0RHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7
Ci1wdWJsaWM6Ci0gICAgVGVzdERyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0
ZSwgTWF0ZXJpYWwgbSwgY29uc3QgSW50UmVjdCYgcmVjdCkKLSAgICA6IENDRHJhd1F1YWQoc3Rh
dGUsIG0sIHJlY3QpCi0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyBQYXNzT3duUHRyPFRlc3RE
cmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0ZSwgTWF0ZXJpYWwg
bSwgY29uc3QgSW50UmVjdCYgcmVjdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgVGVzdERyYXdRdWFkKHN0YXRlLCBtLCByZWN0KSk7Ci0gICAgfQotfTsKKyNkZWZpbmUgTWFr
ZVRpbGVRdWFkKHMsIHIpICBcCisgICAgQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZSgocyksIChyKSwg
MSwgSW50UG9pbnQoMSwgMSksIEludFNpemUoMTAwLCAxMDApLCAwLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgZmFsc2UpCiAKIHZvaWQgc2V0UXVhZHMoQ0NTaGFyZWRRdWFkU3RhdGUqIHJv
b3RTdGF0ZSwgQ0NTaGFyZWRRdWFkU3RhdGUqIGNoaWxkU3RhdGUsIENDUXVhZExpc3QmIHF1YWRM
aXN0KQogewogICAgIHF1YWRMaXN0LmNsZWFyKCk7CiAKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVz
dERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIElu
dFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBw
ZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250
ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAg
IHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1
YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDApLCBJbnRTaXplKDEwMCwg
MTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0
YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwg
SW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6
Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBv
aW50KDEwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5k
KFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50
LCBJbnRSZWN0KEludFBvaW50KDIwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAg
cXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVh
ZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDIwMCksIEludFNpemUoMTAwLCAx
MDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3Rh
dGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDIwMCks
IEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6
OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQ
b2ludCgyMDAsIDIwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotCi0gICAgcXVhZExpc3QuYXBw
ZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29u
dGVudCwgSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFk
TGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVhZDo6
VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDAp
KSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRl
LCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50
U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3Jl
YXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2lu
dCgxMDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChN
YWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KCksIEludFNpemUoMTAwLCAx
MDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJbnRS
ZWN0KEludFBvaW50KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0
LmFwcGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDIwMCwgMCks
IEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQo
cm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkp
OworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0KElu
dFBvaW50KDEwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CisgICAgcXVhZExpc3QuYXBw
ZW5kKE1ha2VUaWxlUXVhZChyb290U3RhdGUsIEludFJlY3QoSW50UG9pbnQoMjAwLCAxMDApLCBJ
bnRTaXplKDEwMCwgMTAwKSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKHJv
b3RTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsK
KyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKHJvb3RTdGF0ZSwgSW50UmVjdChJbnRQ
b2ludCgxMDAsIDIwMCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVu
ZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDIwMCwgMjAwKSwgSW50
U2l6ZSgxMDAsIDEwMCkpKSk7CisKKyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKGNo
aWxkU3RhdGUsIEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CisgICAg
cXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChjaGlsZFN0YXRlLCBJbnRSZWN0KEludFBvaW50
KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtl
VGlsZVF1YWQoY2hpbGRTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgwLCAxMDApLCBJbnRTaXplKDEw
MCwgMTAwKSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKGNoaWxkU3RhdGUs
IEludFJlY3QoSW50UG9pbnQoMTAwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKIH0KIAog
I2RlZmluZSBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMgICAgICAgICAgICAgICBc
CkBAIC0xMjksNiArMTIwLDIxIEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENl
bnRlclRpbGVPbmx5KQogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CiAgICAg
Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7CiAgICAgRVhQRUNUX0VR
KHF1YWRMaXN0LnNpemUoKSwgMTJ1KTsKKworICAgIEludFJlY3QgcXVhZFZpc2libGVSZWN0MSA9
IHF1YWRMaXN0WzFdLmdldCgpLT5xdWFkVmlzaWJsZVJlY3QoKTsKKyAgICBFWFBFQ1RfRVEocXVh
ZFZpc2libGVSZWN0MS5oZWlnaHQoKSwgNTApOworCisgICAgSW50UmVjdCBxdWFkVmlzaWJsZVJl
Y3QzID0gcXVhZExpc3RbM10uZ2V0KCktPnF1YWRWaXNpYmxlUmVjdCgpOworICAgIEVYUEVDVF9F
UShxdWFkVmlzaWJsZVJlY3QzLndpZHRoKCksIDUwKTsKKworICAgIC8vIE5leHQgaW5kZXggaXMg
NCwgbm90IDUsIHNpbmNlIGNlbnRyZSBxdWFkIGN1bGxlZC4KKyAgICBJbnRSZWN0IHF1YWRWaXNp
YmxlUmVjdDQgPSBxdWFkTGlzdFs0XS5nZXQoKS0+cXVhZFZpc2libGVSZWN0KCk7CisgICAgRVhQ
RUNUX0VRKHF1YWRWaXNpYmxlUmVjdDQud2lkdGgoKSwgNTApOworICAgIEVYUEVDVF9FUShxdWFk
VmlzaWJsZVJlY3Q0LngoKSwgMjUwKTsKKworICAgIEludFJlY3QgcXVhZFZpc2libGVSZWN0NiA9
IHF1YWRMaXN0WzZdLmdldCgpLT5xdWFkVmlzaWJsZVJlY3QoKTsKKyAgICBFWFBFQ1RfRVEocXVh
ZFZpc2libGVSZWN0Ni5oZWlnaHQoKSwgNTApOworICAgIEVYUEVDVF9FUShxdWFkVmlzaWJsZVJl
Y3Q2LnkoKSwgMjUwKTsKIH0KIAogVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2hp
bGRMaW5lc1VwQm90dG9tUmlnaHQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123729</attachid>
            <date>2012-01-24 07:11:41 -0800</date>
            <delta_ts>2012-01-25 11:27:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76349-20120124101140.patch</filename>
            <type>text/plain</type>
            <size>14830</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2U4YWFiMmJlYTkyOTQz
NzhkNGE0ZWQ2Nzg4NDJkOTViZjUzY2VlMi4uMjljMDNmNDIzMWNkYjcwZTBkYThiN2Y1N2E1MDE3
NDFhYzg2NjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAxLTIzICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFsbG93IG1vZGlmaWNhdGlvbiBvZiBzaXplIG9mIHBhcnRpYWxseSBvY2NsdWRlZCBxdWFk
cyBkdXJpbmcgY3VsbGluZyB0byByZWR1Y2UgcGl4ZWwgb3ZlcmRyYXcuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjM0OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByaW9yIHRvIHRoaXMgcGF0Y2gsIGRy
YXcgY3VsbGluZyBlaXRoZXIgcmVqZWN0cyBhIERyYXdRdWFkIGJlY2F1c2UgaXQgaXMgY29tcGxl
dGVseQorICAgICAgICBvY2NsdWRlZCwgb3IgZHJhd3MgdGhlIGVudGlyZSBxdWFkIChldmVuIGlm
IGl0IGlzIGxhcmdlbHkgb2NjbHVkZWQpLiBUaGlzIHBhdGNoCisgICAgICAgIGF0dGVtcHRzIHRv
IHJlZHVjZSB0aGUgbnVtYmVyIG9mIHBpeGVscyBkcmF3biBieSBkZXRlcm1pbmluZyBpZiBhIHBh
cnRpYWxseQorICAgICAgICBvY2NsdWRlZCBEcmF3UXVhZCBjYW4gYmUgcmVzaXplZCB0byBhIHNt
YWxsZXIgcXVhZCwgYmFzZWQgb24gd2hhdCBwb3J0aW9uIG9mIHRoZQorICAgICAgICBEcmF3UXVh
ZCBpcyBhY3R1YWxseSB2aXNpYmxlLCBhbmQgcGVyZm9ybWluZyB0aGF0IHJlc2l6aW5nIHdoZXJl
IHBvc3NpYmxlLgorCisgICAgICAgIEFkZGVkIGNhc2VzIHRvIGV4aXN0aW5nIHVuaXQgdGVzdHMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
VGlsZVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJh
d1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6Q0NEcmF3UXVhZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6c2V0UXVhZFZpc2libGVSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDRHJhd1F1YWQ6OnF1YWRWaXNpYmxlUmVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlY3RTdWJ0cmFjdFJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRDdWxsZXI6
OmN1bGxPY2NsdWRlZFF1YWRzKToKKwogMjAxMi0wMS0yNCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8
b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtSZWZhY3RvcmluZ10gTWFrZSBmaW5pc2goKSBv
ZiBDb2RlR2VuZXJhdG9ySlMucG0gZW1wdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
YWEyZTQzYWZkNTQwNWZhNjQ3MWEwYmRhN2RiZDc0Mzk2MWI3MzZiMC4uMjU5Yjg1MTc1NTA4ZWQz
NDgyZWE5YzUyMDBlODY2MmZhZWIxZTJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxMi0wMS0yMyAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBbGxvdyBtb2RpZmljYXRpb24gb2Yg
c2l6ZSBvZiBwYXJ0aWFsbHkgb2NjbHVkZWQgcXVhZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjM0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwog
MjAxMi0wMS0yNCAgVmluY2VudCBTY2hlaWIgIDxzY2hlaWJAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtDaHJvbWl1bV0gQWRkIFdlYktpdCBBUEkgZm9yIFBvaW50ZXIgTG9jawpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggYmJkZjg5ZGFmMDE2OGNjODA0MTk2YmQ5
ZjMxM2IzMGE4OWYzMzFjNi4uZjM2N2VmOWU3ODA3MjE0NGUyYjA1YTMxMWEyZjk4OWViNzBjMTE4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC01NDQsNyArNTQ0
LDcgQEAgc3RhdGljIHZvaWQgZmluZFRpbGVQcm9ncmFtVW5pZm9ybXMoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdAogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZHJhd1RpbGVRdWFkKGNvbnN0IENDVGlsZURyYXdRdWFkKiBxdWFkKQogewotICAgIGNvbnN0
IEludFJlY3QmIHRpbGVSZWN0ID0gcXVhZC0+cXVhZFJlY3QoKTsKKyAgICBjb25zdCBJbnRSZWN0
JiB0aWxlUmVjdCA9IHF1YWQtPnF1YWRWaXNpYmxlUmVjdCgpOwogCiAgICAgRmxvYXRSZWN0IGNs
YW1wUmVjdCh0aWxlUmVjdCk7CiAgICAgLy8gQ2xhbXAgdGV4dHVyZSBjb29yZGluYXRlcyB0byBh
dm9pZCBzYW1wbGluZyBvdXRzaWRlIHRoZSBsYXllcgpAQCAtNTYwLDcgKzU2MCw4IEBAIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQoY29uc3QgQ0NUaWxlRHJhd1F1YWQq
IHF1YWQpCiAgICAgY2xhbXBSZWN0LmluZmxhdGVZKC1jbGFtcFkpOwogICAgIEZsb2F0U2l6ZSBj
bGFtcE9mZnNldCA9IGNsYW1wUmVjdC5taW5YTWluWUNvcm5lcigpIC0gRmxvYXRSZWN0KHRpbGVS
ZWN0KS5taW5YTWluWUNvcm5lcigpOwogCi0gICAgRmxvYXRQb2ludCB0ZXh0dXJlT2Zmc2V0ID0g
cXVhZC0+dGV4dHVyZU9mZnNldCgpICsgY2xhbXBPZmZzZXQ7CisgICAgRmxvYXRQb2ludCB0ZXh0
dXJlT2Zmc2V0ID0gcXVhZC0+dGV4dHVyZU9mZnNldCgpICsgY2xhbXBPZmZzZXQgKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KHF1YWQtPnF1YWRWaXNpYmxlUmVjdCgp
LmxvY2F0aW9uKCkgLSBxdWFkLT5xdWFkUmVjdCgpLmxvY2F0aW9uKCkpOwogCiAgICAgLy8gTWFw
IGNsYW1waW5nIHJlY3RhbmdsZSB0byB1bml0IHNxdWFyZS4KICAgICBmbG9hdCB2ZXJ0ZXhUZXhU
cmFuc2xhdGVYID0gLWNsYW1wUmVjdC54KCkgLyBjbGFtcFJlY3Qud2lkdGgoKTsKQEAgLTYyMywx
MyArNjI0LDE0IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQoY29u
c3QgQ0NUaWxlRHJhd1F1YWQqIHF1YWQpCiAgICAgICAgIENDTGF5ZXJRdWFkOjpFZGdlIHRvcEVk
Z2UodG9wTGVmdCwgdG9wUmlnaHQpOwogICAgICAgICBDQ0xheWVyUXVhZDo6RWRnZSByaWdodEVk
Z2UodG9wUmlnaHQsIGJvdHRvbVJpZ2h0KTsKIAotICAgICAgICBpZiAocXVhZC0+dG9wRWRnZUFB
KCkpCisgICAgICAgIC8vIE9ubHkgYXBwbHkgYW50aS1hbGlhc2luZyB0byBlZGdlcyBub3QgY2xp
cHBlZCBkdXJpbmcgY3VsbGluZy4KKyAgICAgICAgaWYgKHF1YWQtPnRvcEVkZ2VBQSgpICYmIHF1
YWQtPnF1YWRWaXNpYmxlUmVjdCgpLnkoKSA9PSBxdWFkLT5xdWFkUmVjdCgpLnkoKSkKICAgICAg
ICAgICAgIHRvcEVkZ2UgPSBkZXZpY2VMYXllckVkZ2VzLnRvcCgpOwotICAgICAgICBpZiAocXVh
ZC0+bGVmdEVkZ2VBQSgpKQorICAgICAgICBpZiAocXVhZC0+bGVmdEVkZ2VBQSgpICYmIHF1YWQt
PnF1YWRWaXNpYmxlUmVjdCgpLngoKSA9PSBxdWFkLT5xdWFkUmVjdCgpLngoKSkKICAgICAgICAg
ICAgIGxlZnRFZGdlID0gZGV2aWNlTGF5ZXJFZGdlcy5sZWZ0KCk7Ci0gICAgICAgIGlmIChxdWFk
LT5yaWdodEVkZ2VBQSgpKQorICAgICAgICBpZiAocXVhZC0+cmlnaHRFZGdlQUEoKSAmJiBxdWFk
LT5xdWFkVmlzaWJsZVJlY3QoKS5tYXhYKCkgPT0gcXVhZC0+cXVhZFJlY3QoKS5tYXhYKCkpCiAg
ICAgICAgICAgICByaWdodEVkZ2UgPSBkZXZpY2VMYXllckVkZ2VzLnJpZ2h0KCk7Ci0gICAgICAg
IGlmIChxdWFkLT5ib3R0b21FZGdlQUEoKSkKKyAgICAgICAgaWYgKHF1YWQtPmJvdHRvbUVkZ2VB
QSgpICYmIHF1YWQtPnF1YWRWaXNpYmxlUmVjdCgpLm1heFkoKSA9PSBxdWFkLT5xdWFkUmVjdCgp
Lm1heFkoKSkKICAgICAgICAgICAgIGJvdHRvbUVkZ2UgPSBkZXZpY2VMYXllckVkZ2VzLmJvdHRv
bSgpOwogCiAgICAgICAgIGZsb2F0IHNpZ24gPSBGbG9hdFF1YWQodGlsZVJlY3QpLmlzQ291bnRl
cmNsb2Nrd2lzZSgpID8gLTEgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcAppbmRleCAxYmJmYmI2
ZTQ0NTE0MmUyMjNlZTcwZDc4YTI2NTkzYzE1NzAzMGMxLi5kZDY5YTExZjE4ODAzZjllYzUzYzhm
ZTc2NTVmYmI5ZjEyNzYzOWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNwcApAQCAtNDIsNiArNDIs
NyBAQCBDQ0RyYXdRdWFkOjpDQ0RyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUsIE1hdGVyaWFsIG1hdGVyaQogICAgIDogbV9zaGFyZWRRdWFkU3RhdGUoc2hh
cmVkUXVhZFN0YXRlKQogICAgICwgbV9tYXRlcmlhbChtYXRlcmlhbCkKICAgICAsIG1fcXVhZFJl
Y3QocXVhZFJlY3QpCisgICAgLCBtX3F1YWRWaXNpYmxlUmVjdChxdWFkUmVjdCkKICAgICAsIG1f
cXVhZE9wYXF1ZSh0cnVlKQogICAgICwgbV9uZWVkc0JsZW5kaW5nKGZhbHNlKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3
UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NE
cmF3UXVhZC5oCmluZGV4IGFjYzdjMDI4NjZjYzg5NTkzMTUxOTZiM2I4MzhkMDg4NmI1MWM2ZGUu
LmYwMjI5ODUwM2E5ZGI1ZWVkNWI5OTExOTI2MGQ0ZWYxZTRjNGNjM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdR
dWFkLmgKQEAgLTU2LDYgKzU2LDEzIEBAIHB1YmxpYzoKICAgICBib29sIG5lZWRzQmxlbmRpbmco
KSBjb25zdCB7IHJldHVybiAhbV9zaGFyZWRRdWFkU3RhdGUtPmlzT3BhcXVlKCkgfHwgbV9uZWVk
c0JsZW5kaW5nIHx8IG9wYWNpdHkoKSAhPSAxOyB9CiAgICAgYm9vbCBpc0xheWVyQXhpc0FsaWdu
ZWRJbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmlzTGF5ZXJBeGlz
QWxpZ25lZEludFJlY3QoKTsgfQogCisgICAgdm9pZCBzZXRRdWFkVmlzaWJsZVJlY3QoY29uc3Qg
SW50UmVjdCYgcXVhZFZpc2libGVSZWN0KQorICAgIHsKKyAgICAgICAgbV9xdWFkVmlzaWJsZVJl
Y3QgPSBxdWFkVmlzaWJsZVJlY3Q7CisgICAgICAgIG1fcXVhZFZpc2libGVSZWN0LmludGVyc2Vj
dChtX3F1YWRSZWN0KTsKKyAgICB9CisgICAgY29uc3QgSW50UmVjdCYgcXVhZFZpc2libGVSZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9xdWFkVmlzaWJsZVJlY3Q7IH0KKwogICAgIGVudW0gTWF0ZXJp
YWwgewogICAgICAgICBJbnZhbGlkLAogICAgICAgICBEZWJ1Z0JvcmRlciwKQEAgLTg0LDYgKzkx
LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgTWF0ZXJpYWwgbV9tYXRlcmlhbDsKICAgICBJbnRSZWN0
IG1fcXVhZFJlY3Q7CisgICAgSW50UmVjdCBtX3F1YWRWaXNpYmxlUmVjdDsKIAogICAgIC8vIEJ5
IGRlZmF1bHQsIHRoZSBzaGFyZWQgcXVhZCBzdGF0ZSBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90
IHRoaXMgcXVhZCBpcwogICAgIC8vIG9wYXF1ZSBvciBuZWVkcyBibGVuZGluZy4gRGVyaXZlZCBj
bGFzc2VzIGNhbiBvdmVycmlkZSB3aXRoIHRoZXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcApp
bmRleCBkMzBmZmM4NDBjOTc4OWJmNzQ4MTYxMGY4NjE0OGVmNjVkOTM2NzNmLi5jY2JhZjEzY2Y3
OWRkZTQyZGU2MTJlMjFmMDYyY2QyNzE0NDNmYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5j
cHAKQEAgLTUwLDE2ICs1MCwyOSBAQCB2b2lkIHN3YXAoT3duUHRyPFdlYkNvcmU6OkNDRHJhd1F1
YWQ+JiBhLCBPd25QdHI8V2ViQ29yZTo6Q0NEcmF3UXVhZD4mIGIpCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIGJvb2wgcmVnaW9uQ29udGFpbnNSZWN0KGNvbnN0IFJlZ2lvbiYgcmVn
aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0KQorLy8gRGV0ZXJtaW5lcyB3aGF0IHBvcnRpb24gb2Yg
cmVjdCwgaWYgYW55LCBpcyB2aXNpYmxlIChub3Qgb2NjbHVkZWQgYnkgcmVnaW9uKS4gSWYKKy8v
IHRoZSByZXN1bHRpbmcgdmlzaWJsZSByZWdpb24gaXMgbm90IHJlY3Rhbmd1bGFyLCB3ZSBqdXN0
IHJldHVybiB0aGUgb3JpZ2luYWwgcmVjdC4KK3N0YXRpYyBJbnRSZWN0IHJlY3RTdWJ0cmFjdFJl
Z2lvbihjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBS
ZWdpb24gcmVjdFJlZ2lvbihyZWN0KTsKICAgICBSZWdpb24gaW50ZXJzZWN0UmVnaW9uKGludGVy
c2VjdChyZWdpb24sIHJlY3RSZWdpb24pKTsKIAogICAgIGlmIChpbnRlcnNlY3RSZWdpb24uaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiByZWN0OwogCisg
ICAgLy8gVGVzdCBpZiBpbnRlcnNlY3RSZWdpb24gPSByZWN0UmVnaW9uLCBpZiBzbyByZXR1cm4g
ZW1wdHkgcmVjdC4KICAgICByZWN0UmVnaW9uLnN1YnRyYWN0KGludGVyc2VjdFJlZ2lvbik7Ci0g
ICAgcmV0dXJuIHJlY3RSZWdpb24uaXNFbXB0eSgpOworICAgIEludFJlY3QgYm91bmRzUmVjdCA9
IHJlY3RSZWdpb24uYm91bmRzKCk7CisgICAgaWYgKGJvdW5kc1JlY3QuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gYm91bmRzUmVjdDsKKworICAgIC8vIFRlc3QgaWYgcmVjdFJlZ2lvbiBpcyBz
dGlsbCBhIHJlY3RhbmdsZS4gSWYgaXQgaXMsIGl0IHdpbGwgYmUgaWRlbnRpY2FsIHRvIGl0cyBi
b3VuZHMuCisgICAgUmVnaW9uIGJvdW5kc1JlZ2lvbihib3VuZHNSZWN0KTsKKyAgICBib3VuZHNS
ZWdpb24uc3VidHJhY3QocmVjdFJlZ2lvbik7CisgICAgaWYgKGJvdW5kc1JlZ2lvbi5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBib3VuZHNSZWN0OworCisgICAgcmV0dXJuIHJlY3Q7CiB9CiAK
IHN0YXRpYyBJbnRSZWN0IGVuY2xvc2VkSW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBA
IC04NywxNCArMTAwLDE5IEBAIHZvaWQgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhD
Q1F1YWRMaXN0JiBxdWFkTGlzdCkKICAgICBmb3IgKGludCBpID0gcXVhZExpc3Quc2l6ZSgpIC0g
MTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgQ0NEcmF3UXVhZCogZHJhd1F1YWQgPSBxdWFkTGlz
dFtpXS5nZXQoKTsKIAotICAgICAgICBJbnRSZWN0IHF1YWRSZWN0KGRyYXdRdWFkLT5xdWFkVHJh
bnNmb3JtKCkubWFwUmVjdChkcmF3UXVhZC0+cXVhZFJlY3QoKSkpOworICAgICAgICBGbG9hdFJl
Y3QgZmxvYXRUcmFuc2Zvcm1lZFJlY3QgPSBkcmF3UXVhZC0+cXVhZFRyYW5zZm9ybSgpLm1hcFJl
Y3QoRmxvYXRSZWN0KGRyYXdRdWFkLT5xdWFkUmVjdCgpKSk7CisgICAgICAgIEludFJlY3QgdHJh
bnNmb3JtZWRRdWFkUmVjdChlbmNsb3NlZEludFJlY3QoZmxvYXRUcmFuc2Zvcm1lZFJlY3QpKTsK
KworICAgICAgICBJbnRSZWN0IHRyYW5zZm9ybWVkVmlzaWJsZVF1YWRSZWN0ID0gcmVjdFN1YnRy
YWN0UmVnaW9uKG9wYXF1ZUNvdmVyYWdlVGh1c0ZhciwgdHJhbnNmb3JtZWRRdWFkUmVjdCk7Cisg
ICAgICAgIGJvb2wga2VlcFF1YWQgPSAhdHJhbnNmb3JtZWRWaXNpYmxlUXVhZFJlY3QuaXNFbXB0
eSgpOwogCi0gICAgICAgIGJvb2wga2VlcFF1YWQgPSAhcmVnaW9uQ29udGFpbnNSZWN0KG9wYXF1
ZUNvdmVyYWdlVGh1c0ZhciwgcXVhZFJlY3QpOworICAgICAgICAvLyBTZWUgaWYgd2UgY2FuIHJl
ZHVjZSB0aGUgbnVtYmVyIG9mIHBpeGVscyB0byBkcmF3IGJ5IHJlZHVjaW5nIHRoZSBzaXplIG9m
IHRoZSBkcmF3CisgICAgICAgIC8vIHF1YWQgLSB3ZSBkbyB0aGlzIGJ5IGNoYW5naW5nIGl0cyB2
aXNpYmxlIHJlY3QuCisgICAgICAgIGlmIChrZWVwUXVhZCAmJiB0cmFuc2Zvcm1lZFZpc2libGVR
dWFkUmVjdCAhPSB0cmFuc2Zvcm1lZFF1YWRSZWN0ICYmIGRyYXdRdWFkLT5pc0xheWVyQXhpc0Fs
aWduZWRJbnRSZWN0KCkpCisgICAgICAgICAgICBkcmF3UXVhZC0+c2V0UXVhZFZpc2libGVSZWN0
KGRyYXdRdWFkLT5xdWFkVHJhbnNmb3JtKCkuaW52ZXJzZSgpLm1hcFJlY3QodHJhbnNmb3JtZWRW
aXNpYmxlUXVhZFJlY3QpKTsKIAotICAgICAgICBpZiAoa2VlcFF1YWQgJiYgZHJhd1F1YWQtPmRy
YXdzT3BhcXVlKCkgJiYgZHJhd1F1YWQtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSkgewot
ICAgICAgICAgICAgSW50UmVjdCBvcGFxdWVSZWN0ID0gZW5jbG9zZWRJbnRSZWN0KGRyYXdRdWFk
LT5xdWFkVHJhbnNmb3JtKCkubWFwUmVjdChGbG9hdFJlY3QoZHJhd1F1YWQtPnF1YWRSZWN0KCkp
KSk7Ci0gICAgICAgICAgICBvcGFxdWVDb3ZlcmFnZVRodXNGYXIudW5pdGUob3BhcXVlUmVjdCk7
Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGtlZXBRdWFkICYmIGRyYXdRdWFkLT5kcmF3c09wYXF1
ZSgpICYmIGRyYXdRdWFkLT5pc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkpCisgICAgICAgICAg
ICBvcGFxdWVDb3ZlcmFnZVRodXNGYXIudW5pdGUoUmVnaW9uKHRyYW5zZm9ybWVkUXVhZFJlY3Qp
KTsKIAogICAgICAgICBpZiAoa2VlcFF1YWQpCiAgICAgICAgICAgICBjdWxsZWRMaXN0LmFwcGVu
ZChxdWFkTGlzdFtpXS5yZWxlYXNlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggZWQxNWU2YzEwZTFmZTQ2MmM5NDk2ODU2
ZGIzOTM0NTY5ZmFiODgxYy4uYzdmZGFiNmI5NDQyZTQ3YTUxODk5YTUxMzg4M2JjZWQwMDFmNGRm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRl
c3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJjYy9DQ1F1YWRDdWxsZXIuaCIK
IAorI2luY2x1ZGUgImNjL0NDVGlsZURyYXdRdWFkLmgiCiAjaW5jbHVkZSA8Z21vY2svZ21vY2su
aD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogCkBAIC0zNiwzNyArMzcsMjcgQEAgbmFtZXNw
YWNlIHsKIGNsYXNzIENDUXVhZEN1bGxlclRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiB9
OwogCi1jbGFzcyBUZXN0RHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVhZCB7Ci1wdWJsaWM6Ci0g
ICAgVGVzdERyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0ZSwgTWF0ZXJpYWwg
bSwgY29uc3QgSW50UmVjdCYgcmVjdCkKLSAgICA6IENDRHJhd1F1YWQoc3RhdGUsIG0sIHJlY3Qp
Ci0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyBQYXNzT3duUHRyPFRlc3REcmF3UXVhZD4gY3Jl
YXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzdGF0ZSwgTWF0ZXJpYWwgbSwgY29uc3QgSW50
UmVjdCYgcmVjdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGVzdERyYXdR
dWFkKHN0YXRlLCBtLCByZWN0KSk7Ci0gICAgfQotfTsKKyNkZWZpbmUgTWFrZVRpbGVRdWFkKHMs
IHIpICBcCisgICAgQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZSgocyksIChyKSwgMSwgSW50UG9pbnQo
MSwgMSksIEludFNpemUoMTAwLCAxMDApLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UpCiAKIHZvaWQgc2V0UXVhZHMoQ0NTaGFyZWRRdWFkU3RhdGUqIHJvb3RTdGF0ZSwgQ0NT
aGFyZWRRdWFkU3RhdGUqIGNoaWxkU3RhdGUsIENDUXVhZExpc3QmIHF1YWRMaXN0KQogewogICAg
IHF1YWRMaXN0LmNsZWFyKCk7CiAKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpj
cmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9p
bnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3
UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0
KEludFBvaW50KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFw
cGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29u
dGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAg
ICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdR
dWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAs
IDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RT
dGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMTAw
KSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVh
ZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KElu
dFBvaW50KDIwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBw
ZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250
ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDIwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAg
IHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1
YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDIwMCksIEludFNpemUoMTAw
LCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290
U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDIw
MCksIEludFNpemUoMTAwLCAxMDApKSkpOwotCi0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3
UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVj
dChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQo
VGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50
LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1
YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFk
OjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEw
MCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3Rh
dGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDEwMCks
IEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQo
cm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAg
IHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50
KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtl
VGlsZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDIwMCwgMCksIEludFNpemUoMTAw
LCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJ
bnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRM
aXN0LmFwcGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDEwMCwg
MTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxl
UXVhZChyb290U3RhdGUsIEludFJlY3QoSW50UG9pbnQoMjAwLCAxMDApLCBJbnRTaXplKDEwMCwg
MTAwKSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKHJvb3RTdGF0ZSwgSW50
UmVjdChJbnRQb2ludCgwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKKyAgICBxdWFkTGlz
dC5hcHBlbmQoTWFrZVRpbGVRdWFkKHJvb3RTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgxMDAsIDIw
MCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1
YWQocm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDIwMCwgMjAwKSwgSW50U2l6ZSgxMDAsIDEw
MCkpKSk7CisKKyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKGNoaWxkU3RhdGUsIElu
dFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CisgICAgcXVhZExpc3QuYXBw
ZW5kKE1ha2VUaWxlUXVhZChjaGlsZFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDEwMCwgMCksIElu
dFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQoY2hp
bGRTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsK
KyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKGNoaWxkU3RhdGUsIEludFJlY3QoSW50
UG9pbnQoMTAwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKIH0KIAogI2RlZmluZSBERUNM
QVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMgICAgICAgICAgICAgICBcCkBAIC0xMjksNiAr
MTIwLDIxIEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENlbnRlclRpbGVPbmx5
KQogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CiAgICAgQ0NRdWFkQ3VsbGVy
OjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNp
emUoKSwgMTJ1KTsKKworICAgIEludFJlY3QgcXVhZFZpc2libGVSZWN0MSA9IHF1YWRMaXN0WzFd
LmdldCgpLT5xdWFkVmlzaWJsZVJlY3QoKTsKKyAgICBFWFBFQ1RfRVEocXVhZFZpc2libGVSZWN0
MS5oZWlnaHQoKSwgNTApOworCisgICAgSW50UmVjdCBxdWFkVmlzaWJsZVJlY3QzID0gcXVhZExp
c3RbM10uZ2V0KCktPnF1YWRWaXNpYmxlUmVjdCgpOworICAgIEVYUEVDVF9FUShxdWFkVmlzaWJs
ZVJlY3QzLndpZHRoKCksIDUwKTsKKworICAgIC8vIE5leHQgaW5kZXggaXMgNCwgbm90IDUsIHNp
bmNlIGNlbnRyZSBxdWFkIGN1bGxlZC4KKyAgICBJbnRSZWN0IHF1YWRWaXNpYmxlUmVjdDQgPSBx
dWFkTGlzdFs0XS5nZXQoKS0+cXVhZFZpc2libGVSZWN0KCk7CisgICAgRVhQRUNUX0VRKHF1YWRW
aXNpYmxlUmVjdDQud2lkdGgoKSwgNTApOworICAgIEVYUEVDVF9FUShxdWFkVmlzaWJsZVJlY3Q0
LngoKSwgMjUwKTsKKworICAgIEludFJlY3QgcXVhZFZpc2libGVSZWN0NiA9IHF1YWRMaXN0WzZd
LmdldCgpLT5xdWFkVmlzaWJsZVJlY3QoKTsKKyAgICBFWFBFQ1RfRVEocXVhZFZpc2libGVSZWN0
Ni5oZWlnaHQoKSwgNTApOworICAgIEVYUEVDVF9FUShxdWFkVmlzaWJsZVJlY3Q2LnkoKSwgMjUw
KTsKIH0KIAogVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2hpbGRMaW5lc1VwQm90
dG9tUmlnaHQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123978</attachid>
            <date>2012-01-25 11:27:55 -0800</date>
            <delta_ts>2012-01-26 18:12:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76349-20120125142754.patch</filename>
            <type>text/plain</type>
            <size>17576</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzZkM2RlYzA0MjMxY2Zh
MjlkZmZlYjI3ZDc3NmQ3MmI0MzVlYTQwNi4uNmIwNDNkYmYxMmUzMGQ2M2FjODAzNzk4NDg5NWU2
NzkzMmZhNGNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAxLTIzICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEFsbG93IG1vZGlmaWNhdGlvbiBvZiBzaXplIG9mIHBhcnRpYWxseSBvY2NsdWRlZCBxdWFk
cyBkdXJpbmcgY3VsbGluZyB0byByZWR1Y2UgcGl4ZWwgb3ZlcmRyYXcuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjM0OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByaW9yIHRvIHRoaXMgcGF0Y2gsIGRy
YXcgY3VsbGluZyBlaXRoZXIgcmVqZWN0cyBhIERyYXdRdWFkIGJlY2F1c2UgaXQgaXMgY29tcGxl
dGVseQorICAgICAgICBvY2NsdWRlZCwgb3IgZHJhd3MgdGhlIGVudGlyZSBxdWFkIChldmVuIGlm
IGl0IGlzIGxhcmdlbHkgb2NjbHVkZWQpLiBUaGlzIHBhdGNoCisgICAgICAgIGF0dGVtcHRzIHRv
IHJlZHVjZSB0aGUgbnVtYmVyIG9mIHBpeGVscyBkcmF3biBieSBkZXRlcm1pbmluZyBpZiBhIHBh
cnRpYWxseQorICAgICAgICBvY2NsdWRlZCBEcmF3UXVhZCBjYW4gYmUgcmVzaXplZCB0byBhIHNt
YWxsZXIgcXVhZCwgYmFzZWQgb24gd2hhdCBwb3J0aW9uIG9mIHRoZQorICAgICAgICBEcmF3UXVh
ZCBpcyBhY3R1YWxseSB2aXNpYmxlLCBhbmQgcGVyZm9ybWluZyB0aGF0IHJlc2l6aW5nIHdoZXJl
IHBvc3NpYmxlLgorCisgICAgICAgIEFkZGVkIGNhc2VzIHRvIGV4aXN0aW5nIHVuaXQgdGVzdHMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
VGlsZVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJh
d1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6Q0NEcmF3UXVhZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6c2V0UXVhZFZpc2libGVSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkNDRHJhd1F1YWQ6OnF1YWRWaXNpYmxlUmVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnJlY3RTdWJ0cmFjdFJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRDdWxsZXI6
OmN1bGxPY2NsdWRlZFF1YWRzKToKKwogMjAxMi0wMS0yNSAgUGFibG8gRmxvdXJldCAgPHBhYmxv
ZkBtb3Rvcm9sYS5jb20+CiAKICAgICAgICAgRml4IGluY29ycmVjdCBiZWhhdmlvciBpbiBIVE1M
Q29sbGVjdGlvbi5wcm90b3R5cGUuaXRlbSgpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCA2ZGMwMGNkOWIzYjM4MDg5ZGM1MTU5M2VmNjU2NzQ5ZTRiY2E4MTQ0Li40ZDcxZWQxNTJjM2Ix
NDUzYzA0Yjk2ZGJkMjNkM2FlYTdjYWIzYjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDEyLTAxLTIzICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEFsbG93IG1vZGlmaWNhdGlvbiBv
ZiBzaXplIG9mIHBhcnRpYWxseSBvY2NsdWRlZCBxdWFkcy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Om1ha2VUaWxlUXVhZHMpCisgICAgICAgIChXZWJDb3JlOjpzZXRR
dWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMi0wMS0yNCAgVnNldm9sb2Qg
Vmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGNocm9t
aXVtIHRlc3QgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXgg
YmJkZjg5ZGFmMDE2OGNjODA0MTk2YmQ5ZjMxM2IzMGE4OWYzMzFjNi4uZjM2N2VmOWU3ODA3MjE0
NGUyYjA1YTMxMWEyZjk4OWViNzBjMTE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hy
b21pdW0uY3BwCkBAIC01NDQsNyArNTQ0LDcgQEAgc3RhdGljIHZvaWQgZmluZFRpbGVQcm9ncmFt
VW5pZm9ybXMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdAogCiB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RpbGVRdWFkKGNvbnN0IENDVGlsZURyYXdR
dWFkKiBxdWFkKQogewotICAgIGNvbnN0IEludFJlY3QmIHRpbGVSZWN0ID0gcXVhZC0+cXVhZFJl
Y3QoKTsKKyAgICBjb25zdCBJbnRSZWN0JiB0aWxlUmVjdCA9IHF1YWQtPnF1YWRWaXNpYmxlUmVj
dCgpOwogCiAgICAgRmxvYXRSZWN0IGNsYW1wUmVjdCh0aWxlUmVjdCk7CiAgICAgLy8gQ2xhbXAg
dGV4dHVyZSBjb29yZGluYXRlcyB0byBhdm9pZCBzYW1wbGluZyBvdXRzaWRlIHRoZSBsYXllcgpA
QCAtNTYwLDcgKzU2MCw4IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1
YWQoY29uc3QgQ0NUaWxlRHJhd1F1YWQqIHF1YWQpCiAgICAgY2xhbXBSZWN0LmluZmxhdGVZKC1j
bGFtcFkpOwogICAgIEZsb2F0U2l6ZSBjbGFtcE9mZnNldCA9IGNsYW1wUmVjdC5taW5YTWluWUNv
cm5lcigpIC0gRmxvYXRSZWN0KHRpbGVSZWN0KS5taW5YTWluWUNvcm5lcigpOwogCi0gICAgRmxv
YXRQb2ludCB0ZXh0dXJlT2Zmc2V0ID0gcXVhZC0+dGV4dHVyZU9mZnNldCgpICsgY2xhbXBPZmZz
ZXQ7CisgICAgRmxvYXRQb2ludCB0ZXh0dXJlT2Zmc2V0ID0gcXVhZC0+dGV4dHVyZU9mZnNldCgp
ICsgY2xhbXBPZmZzZXQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50
KHF1YWQtPnF1YWRWaXNpYmxlUmVjdCgpLmxvY2F0aW9uKCkgLSBxdWFkLT5xdWFkUmVjdCgpLmxv
Y2F0aW9uKCkpOwogCiAgICAgLy8gTWFwIGNsYW1waW5nIHJlY3RhbmdsZSB0byB1bml0IHNxdWFy
ZS4KICAgICBmbG9hdCB2ZXJ0ZXhUZXhUcmFuc2xhdGVYID0gLWNsYW1wUmVjdC54KCkgLyBjbGFt
cFJlY3Qud2lkdGgoKTsKQEAgLTYyMywxMyArNjI0LDE0IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNo
cm9taXVtOjpkcmF3VGlsZVF1YWQoY29uc3QgQ0NUaWxlRHJhd1F1YWQqIHF1YWQpCiAgICAgICAg
IENDTGF5ZXJRdWFkOjpFZGdlIHRvcEVkZ2UodG9wTGVmdCwgdG9wUmlnaHQpOwogICAgICAgICBD
Q0xheWVyUXVhZDo6RWRnZSByaWdodEVkZ2UodG9wUmlnaHQsIGJvdHRvbVJpZ2h0KTsKIAotICAg
ICAgICBpZiAocXVhZC0+dG9wRWRnZUFBKCkpCisgICAgICAgIC8vIE9ubHkgYXBwbHkgYW50aS1h
bGlhc2luZyB0byBlZGdlcyBub3QgY2xpcHBlZCBkdXJpbmcgY3VsbGluZy4KKyAgICAgICAgaWYg
KHF1YWQtPnRvcEVkZ2VBQSgpICYmIHF1YWQtPnF1YWRWaXNpYmxlUmVjdCgpLnkoKSA9PSBxdWFk
LT5xdWFkUmVjdCgpLnkoKSkKICAgICAgICAgICAgIHRvcEVkZ2UgPSBkZXZpY2VMYXllckVkZ2Vz
LnRvcCgpOwotICAgICAgICBpZiAocXVhZC0+bGVmdEVkZ2VBQSgpKQorICAgICAgICBpZiAocXVh
ZC0+bGVmdEVkZ2VBQSgpICYmIHF1YWQtPnF1YWRWaXNpYmxlUmVjdCgpLngoKSA9PSBxdWFkLT5x
dWFkUmVjdCgpLngoKSkKICAgICAgICAgICAgIGxlZnRFZGdlID0gZGV2aWNlTGF5ZXJFZGdlcy5s
ZWZ0KCk7Ci0gICAgICAgIGlmIChxdWFkLT5yaWdodEVkZ2VBQSgpKQorICAgICAgICBpZiAocXVh
ZC0+cmlnaHRFZGdlQUEoKSAmJiBxdWFkLT5xdWFkVmlzaWJsZVJlY3QoKS5tYXhYKCkgPT0gcXVh
ZC0+cXVhZFJlY3QoKS5tYXhYKCkpCiAgICAgICAgICAgICByaWdodEVkZ2UgPSBkZXZpY2VMYXll
ckVkZ2VzLnJpZ2h0KCk7Ci0gICAgICAgIGlmIChxdWFkLT5ib3R0b21FZGdlQUEoKSkKKyAgICAg
ICAgaWYgKHF1YWQtPmJvdHRvbUVkZ2VBQSgpICYmIHF1YWQtPnF1YWRWaXNpYmxlUmVjdCgpLm1h
eFkoKSA9PSBxdWFkLT5xdWFkUmVjdCgpLm1heFkoKSkKICAgICAgICAgICAgIGJvdHRvbUVkZ2Ug
PSBkZXZpY2VMYXllckVkZ2VzLmJvdHRvbSgpOwogCiAgICAgICAgIGZsb2F0IHNpZ24gPSBGbG9h
dFF1YWQodGlsZVJlY3QpLmlzQ291bnRlcmNsb2Nrd2lzZSgpID8gLTEgOiAxOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVh
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Ry
YXdRdWFkLmNwcAppbmRleCAxYmJmYmI2ZTQ0NTE0MmUyMjNlZTcwZDc4YTI2NTkzYzE1NzAzMGMx
Li5lMWYwYTgwOWMxODdkYTdjMWE0MjE0NzMxMGRkMzlmODcyOWNlMjQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Ry
YXdRdWFkLmNwcApAQCAtNDIsNiArNDIsNyBAQCBDQ0RyYXdRdWFkOjpDQ0RyYXdRdWFkKGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIE1hdGVyaWFsIG1hdGVyaQogICAg
IDogbV9zaGFyZWRRdWFkU3RhdGUoc2hhcmVkUXVhZFN0YXRlKQogICAgICwgbV9tYXRlcmlhbCht
YXRlcmlhbCkKICAgICAsIG1fcXVhZFJlY3QocXVhZFJlY3QpCisgICAgLCBtX3F1YWRWaXNpYmxl
UmVjdChxdWFkUmVjdCkKICAgICAsIG1fcXVhZE9wYXF1ZSh0cnVlKQogICAgICwgbV9uZWVkc0Js
ZW5kaW5nKGZhbHNlKQogewpAQCAtNDksNiArNTAsMTIgQEAgQ0NEcmF3UXVhZDo6Q0NEcmF3UXVh
ZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBNYXRlcmlhbCBtYXRl
cmkKICAgICBBU1NFUlQobV9tYXRlcmlhbCAhPSBJbnZhbGlkKTsKIH0KIAordm9pZCBDQ0RyYXdR
dWFkOjpzZXRRdWFkVmlzaWJsZVJlY3QoY29uc3QgSW50UmVjdCYgcXVhZFZpc2libGVSZWN0KQor
eworICAgIG1fcXVhZFZpc2libGVSZWN0ID0gcXVhZFZpc2libGVSZWN0OworICAgIG1fcXVhZFZp
c2libGVSZWN0LmludGVyc2VjdChtX3F1YWRSZWN0KTsKK30KKwogY29uc3QgQ0NEZWJ1Z0JvcmRl
ckRyYXdRdWFkKiBDQ0RyYXdRdWFkOjp0b0RlYnVnQm9yZGVyRHJhd1F1YWQoKSBjb25zdAogewog
ICAgIEFTU0VSVChtX21hdGVyaWFsID09IERlYnVnQm9yZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaApp
bmRleCBhY2M3YzAyODY2Y2M4OTU5MzE1MTk2YjNiODM4ZDA4ODZiNTFjNmRlLi41ODQxZjk5YmMz
ZDE3MWU2ODEwOTNkZTU2NmY3NmFhZjk3YjE5MjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCkBAIC01
Niw2ICs1NiwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZWVkc0JsZW5kaW5nKCkgY29uc3QgeyBy
ZXR1cm4gIW1fc2hhcmVkUXVhZFN0YXRlLT5pc09wYXF1ZSgpIHx8IG1fbmVlZHNCbGVuZGluZyB8
fCBvcGFjaXR5KCkgIT0gMTsgfQogICAgIGJvb2wgaXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5pc0xheWVyQXhpc0FsaWduZWRJbnRS
ZWN0KCk7IH0KIAorICAgIC8vIEFsbG93cyBjaGFuZ2luZyB0aGUgcmVjdCB0aGF0IGdldHMgZHJh
d24gdG8gbWFrZSBpdCBzbWFsbGVyLiBQYXJhbWV0ZXIgcGFzc2VkCisgICAgLy8gaW4gd2lsbCBi
ZSBjbGlwcGVkIHRvIHF1YWRSZWN0KCkuCisgICAgdm9pZCBzZXRRdWFkVmlzaWJsZVJlY3QoY29u
c3QgSW50UmVjdCYpOworICAgIGNvbnN0IEludFJlY3QmIHF1YWRWaXNpYmxlUmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fcXVhZFZpc2libGVSZWN0OyB9CisKICAgICBlbnVtIE1hdGVyaWFsIHsKICAg
ICAgICAgSW52YWxpZCwKICAgICAgICAgRGVidWdCb3JkZXIsCkBAIC04NCw2ICs4OSw3IEBAIHBy
b3RlY3RlZDoKIAogICAgIE1hdGVyaWFsIG1fbWF0ZXJpYWw7CiAgICAgSW50UmVjdCBtX3F1YWRS
ZWN0OworICAgIEludFJlY3QgbV9xdWFkVmlzaWJsZVJlY3Q7CiAKICAgICAvLyBCeSBkZWZhdWx0
LCB0aGUgc2hhcmVkIHF1YWQgc3RhdGUgZGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGlzIHF1
YWQgaXMKICAgICAvLyBvcGFxdWUgb3IgbmVlZHMgYmxlbmRpbmcuIERlcml2ZWQgY2xhc3NlcyBj
YW4gb3ZlcnJpZGUgd2l0aCB0aGVzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKaW5kZXggZDMw
ZmZjODQwYzk3ODliZjc0ODE2MTBmODYxNDhlZjY1ZDkzNjczZi4uMDY3NzBkYTljMjYyYzYwYzAw
YWZiYjg0NjhjMWJlNWQzOTdkMGFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCkBAIC01
MCwxNiArNTAsMjkgQEAgdm9pZCBzd2FwKE93blB0cjxXZWJDb3JlOjpDQ0RyYXdRdWFkPiYgYSwg
T3duUHRyPFdlYkNvcmU6OkNDRHJhd1F1YWQ+JiBiKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyBib29sIHJlZ2lvbkNvbnRhaW5zUmVjdChjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29u
c3QgSW50UmVjdCYgcmVjdCkKKy8vIERldGVybWluZXMgd2hhdCBwb3J0aW9uIG9mIHJlY3QsIGlm
IGFueSwgaXMgdmlzaWJsZSAobm90IG9jY2x1ZGVkIGJ5IHJlZ2lvbikuIElmCisvLyB0aGUgcmVz
dWx0aW5nIHZpc2libGUgcmVnaW9uIGlzIG5vdCByZWN0YW5ndWxhciwgd2UganVzdCByZXR1cm4g
dGhlIG9yaWdpbmFsIHJlY3QuCitzdGF0aWMgSW50UmVjdCByZWN0U3VidHJhY3RSZWdpb24oY29u
c3QgUmVnaW9uJiByZWdpb24sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgUmVnaW9uIHJl
Y3RSZWdpb24ocmVjdCk7CiAgICAgUmVnaW9uIGludGVyc2VjdFJlZ2lvbihpbnRlcnNlY3QocmVn
aW9uLCByZWN0UmVnaW9uKSk7CiAKICAgICBpZiAoaW50ZXJzZWN0UmVnaW9uLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gcmVjdDsKIAorICAgIC8vIFRl
c3QgaWYgaW50ZXJzZWN0UmVnaW9uID0gcmVjdFJlZ2lvbiwgaWYgc28gcmV0dXJuIGVtcHR5IHJl
Y3QuCiAgICAgcmVjdFJlZ2lvbi5zdWJ0cmFjdChpbnRlcnNlY3RSZWdpb24pOwotICAgIHJldHVy
biByZWN0UmVnaW9uLmlzRW1wdHkoKTsKKyAgICBJbnRSZWN0IGJvdW5kc1JlY3QgPSByZWN0UmVn
aW9uLmJvdW5kcygpOworICAgIGlmIChib3VuZHNSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIGJvdW5kc1JlY3Q7CisKKyAgICAvLyBUZXN0IGlmIHJlY3RSZWdpb24gaXMgc3RpbGwgYSBy
ZWN0YW5nbGUuIElmIGl0IGlzLCBpdCB3aWxsIGJlIGlkZW50aWNhbCB0byBpdHMgYm91bmRzLgor
ICAgIFJlZ2lvbiBib3VuZHNSZWdpb24oYm91bmRzUmVjdCk7CisgICAgYm91bmRzUmVnaW9uLnN1
YnRyYWN0KHJlY3RSZWdpb24pOworICAgIGlmIChib3VuZHNSZWdpb24uaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gYm91bmRzUmVjdDsKKworICAgIHJldHVybiByZWN0OwogfQogCiBzdGF0aWMg
SW50UmVjdCBlbmNsb3NlZEludFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtODcsMTQg
KzEwMCwyMSBAQCB2b2lkIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMoQ0NRdWFkTGlz
dCYgcXVhZExpc3QpCiAgICAgZm9yIChpbnQgaSA9IHF1YWRMaXN0LnNpemUoKSAtIDE7IGkgPj0g
MDsgLS1pKSB7CiAgICAgICAgIENDRHJhd1F1YWQqIGRyYXdRdWFkID0gcXVhZExpc3RbaV0uZ2V0
KCk7CiAKLSAgICAgICAgSW50UmVjdCBxdWFkUmVjdChkcmF3UXVhZC0+cXVhZFRyYW5zZm9ybSgp
Lm1hcFJlY3QoZHJhd1F1YWQtPnF1YWRSZWN0KCkpKTsKKyAgICAgICAgRmxvYXRSZWN0IGZsb2F0
VHJhbnNmb3JtZWRSZWN0ID0gZHJhd1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5tYXBSZWN0KEZsb2F0
UmVjdChkcmF3UXVhZC0+cXVhZFJlY3QoKSkpOworICAgICAgICAvLyBJbmZsYXRlIHJlY3QgdG8g
YmUgdGVzdGVkIHRvIHN0YXkgY29uc2VydmF0aXZlLgorICAgICAgICBJbnRSZWN0IHRyYW5zZm9y
bWVkUXVhZFJlY3QoZW5jbG9zaW5nSW50UmVjdChmbG9hdFRyYW5zZm9ybWVkUmVjdCkpOworCisg
ICAgICAgIEludFJlY3QgdHJhbnNmb3JtZWRWaXNpYmxlUXVhZFJlY3QgPSByZWN0U3VidHJhY3RS
ZWdpb24ob3BhcXVlQ292ZXJhZ2VUaHVzRmFyLCB0cmFuc2Zvcm1lZFF1YWRSZWN0KTsKKyAgICAg
ICAgYm9vbCBrZWVwUXVhZCA9ICF0cmFuc2Zvcm1lZFZpc2libGVRdWFkUmVjdC5pc0VtcHR5KCk7
CiAKLSAgICAgICAgYm9vbCBrZWVwUXVhZCA9ICFyZWdpb25Db250YWluc1JlY3Qob3BhcXVlQ292
ZXJhZ2VUaHVzRmFyLCBxdWFkUmVjdCk7CisgICAgICAgIC8vIFNlZSBpZiB3ZSBjYW4gcmVkdWNl
IHRoZSBudW1iZXIgb2YgcGl4ZWxzIHRvIGRyYXcgYnkgcmVkdWNpbmcgdGhlIHNpemUgb2YgdGhl
IGRyYXcKKyAgICAgICAgLy8gcXVhZCAtIHdlIGRvIHRoaXMgYnkgY2hhbmdpbmcgaXRzIHZpc2li
bGUgcmVjdC4KKyAgICAgICAgaWYgKGtlZXBRdWFkICYmIHRyYW5zZm9ybWVkVmlzaWJsZVF1YWRS
ZWN0ICE9IHRyYW5zZm9ybWVkUXVhZFJlY3QgJiYgZHJhd1F1YWQtPmlzTGF5ZXJBeGlzQWxpZ25l
ZEludFJlY3QoKSkKKyAgICAgICAgICAgIGRyYXdRdWFkLT5zZXRRdWFkVmlzaWJsZVJlY3QoZHJh
d1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkubWFwUmVjdCh0cmFuc2Zvcm1lZFZpc2li
bGVRdWFkUmVjdCkpOwogCi0gICAgICAgIGlmIChrZWVwUXVhZCAmJiBkcmF3UXVhZC0+ZHJhd3NP
cGFxdWUoKSAmJiBkcmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpKSB7Ci0gICAg
ICAgICAgICBJbnRSZWN0IG9wYXF1ZVJlY3QgPSBlbmNsb3NlZEludFJlY3QoZHJhd1F1YWQtPnF1
YWRUcmFuc2Zvcm0oKS5tYXBSZWN0KEZsb2F0UmVjdChkcmF3UXVhZC0+cXVhZFJlY3QoKSkpKTsK
LSAgICAgICAgICAgIG9wYXF1ZUNvdmVyYWdlVGh1c0Zhci51bml0ZShvcGFxdWVSZWN0KTsKLSAg
ICAgICAgfQorICAgICAgICAvLyBXaGVuIGFkZGluZyByZWN0IHRvIG9wYXF1ZSByZWdpb24sIGRl
ZmxhdGUgaXQgdG8gc3RheSBjb25zZXJ2YXRpdmUuCisgICAgICAgIGlmIChrZWVwUXVhZCAmJiBk
cmF3UXVhZC0+ZHJhd3NPcGFxdWUoKSAmJiBkcmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50
UmVjdCgpKQorICAgICAgICAgICAgb3BhcXVlQ292ZXJhZ2VUaHVzRmFyLnVuaXRlKFJlZ2lvbihl
bmNsb3NlZEludFJlY3QoZmxvYXRUcmFuc2Zvcm1lZFJlY3QpKSk7CiAKICAgICAgICAgaWYgKGtl
ZXBRdWFkKQogICAgICAgICAgICAgY3VsbGVkTGlzdC5hcHBlbmQocXVhZExpc3RbaV0ucmVsZWFz
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3Vs
bGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRl
c3QuY3BwCmluZGV4IGVkMTVlNmMxMGUxZmU0NjJjOTQ5Njg1NmRiMzkzNDU2OWZhYjg4MWMuLjk3
Mzg0YjBiMmZhYjBjNWVjNDQ0NWE3NThmM2U3MmI5YmMwYzQ0MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcApAQCAtMjYsNiArMjYs
NyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NRdWFkQ3VsbGVyLmgiCiAKKyNpbmNsdWRlICJjYy9DQ1Rp
bGVEcmF3UXVhZC5oIgogI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CiAjaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KIApAQCAtMzYsMzcgKzM3LDI5IEBAIG5hbWVzcGFjZSB7CiBjbGFzcyBDQ1F1YWRD
dWxsZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogfTsKIAotY2xhc3MgVGVzdERyYXdR
dWFkIDogcHVibGljIENDRHJhd1F1YWQgewotcHVibGljOgotICAgIFRlc3REcmF3UXVhZChjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSogc3RhdGUsIE1hdGVyaWFsIG0sIGNvbnN0IEludFJlY3QmIHJl
Y3QpCi0gICAgOiBDQ0RyYXdRdWFkKHN0YXRlLCBtLCByZWN0KQotICAgIHsKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgUGFzc093blB0cjxUZXN0RHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSogc3RhdGUsIE1hdGVyaWFsIG0sIGNvbnN0IEludFJlY3QmIHJlY3QpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRlc3REcmF3UXVhZChzdGF0ZSwgbSwgcmVjdCkp
OwotICAgIH0KLX07CitzdGF0aWMgUGFzc093blB0cjxDQ0RyYXdRdWFkPiBNYWtlVGlsZVF1YWQo
Q0NTaGFyZWRRdWFkU3RhdGUqIHN0YXRlLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIHJl
dHVybiBDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHN0YXRlLCByZWN0LCAxLCBJbnRQb2ludCgxLCAx
KSwgSW50U2l6ZSgxMDAsIDEwMCksIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSk7Cit9CiAKIHZvaWQgc2V0UXVhZHMoQ0NTaGFyZWRRdWFkU3RhdGUqIHJvb3RTdGF0ZSwgQ0NT
aGFyZWRRdWFkU3RhdGUqIGNoaWxkU3RhdGUsIENDUXVhZExpc3QmIHF1YWRMaXN0KQogewogICAg
IHF1YWRMaXN0LmNsZWFyKCk7CiAKLSAgICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpj
cmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdRdWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9p
bnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3
UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0
KEludFBvaW50KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFw
cGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29u
dGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAg
ICBxdWFkTGlzdC5hcHBlbmQoVGVzdERyYXdRdWFkOjpjcmVhdGUocm9vdFN0YXRlLCBDQ0RyYXdR
dWFkOjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAs
IDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RT
dGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMTAw
KSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVh
ZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50LCBJbnRSZWN0KElu
dFBvaW50KDIwMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7Ci0gICAgcXVhZExpc3QuYXBw
ZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKHJvb3RTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250
ZW50LCBJbnRSZWN0KEludFBvaW50KDAsIDIwMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAg
IHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290U3RhdGUsIENDRHJhd1F1
YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDIwMCksIEludFNpemUoMTAw
LCAxMDApKSkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShyb290
U3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgyMDAsIDIw
MCksIEludFNpemUoMTAwLCAxMDApKSkpOwotCi0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3
UXVhZDo6Y3JlYXRlKGNoaWxkU3RhdGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVj
dChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKLSAgICBxdWFkTGlzdC5hcHBlbmQo
VGVzdERyYXdRdWFkOjpjcmVhdGUoY2hpbGRTdGF0ZSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50
LCBJbnRSZWN0KEludFBvaW50KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSkpOwotICAgIHF1
YWRMaXN0LmFwcGVuZChUZXN0RHJhd1F1YWQ6OmNyZWF0ZShjaGlsZFN0YXRlLCBDQ0RyYXdRdWFk
OjpUaWxlZENvbnRlbnQsIEludFJlY3QoSW50UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEw
MCkpKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKFRlc3REcmF3UXVhZDo6Y3JlYXRlKGNoaWxkU3Rh
dGUsIENDRHJhd1F1YWQ6OlRpbGVkQ29udGVudCwgSW50UmVjdChJbnRQb2ludCgxMDAsIDEwMCks
IEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQo
cm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAg
IHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50
KDEwMCwgMCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtl
VGlsZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDIwMCwgMCksIEludFNpemUoMTAw
LCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJ
bnRSZWN0KEludFBvaW50KDAsIDEwMCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRM
aXN0LmFwcGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDEwMCwg
MTAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxl
UXVhZChyb290U3RhdGUsIEludFJlY3QoSW50UG9pbnQoMjAwLCAxMDApLCBJbnRTaXplKDEwMCwg
MTAwKSkpKTsKKyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKHJvb3RTdGF0ZSwgSW50
UmVjdChJbnRQb2ludCgwLCAyMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKKyAgICBxdWFkTGlz
dC5hcHBlbmQoTWFrZVRpbGVRdWFkKHJvb3RTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgxMDAsIDIw
MCksIEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1
YWQocm9vdFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDIwMCwgMjAwKSwgSW50U2l6ZSgxMDAsIDEw
MCkpKSk7CisKKyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKGNoaWxkU3RhdGUsIElu
dFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CisgICAgcXVhZExpc3QuYXBw
ZW5kKE1ha2VUaWxlUXVhZChjaGlsZFN0YXRlLCBJbnRSZWN0KEludFBvaW50KDEwMCwgMCksIElu
dFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQoY2hp
bGRTdGF0ZSwgSW50UmVjdChJbnRQb2ludCgwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsK
KyAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKGNoaWxkU3RhdGUsIEludFJlY3QoSW50
UG9pbnQoMTAwLCAxMDApLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKIH0KIAogI2RlZmluZSBERUNM
QVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMgICAgICAgICAgICAgICBcCkBAIC0xMjksNiAr
MTIyLDY3IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENlbnRlclRpbGVPbmx5
KQogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CiAgICAgQ0NRdWFkQ3VsbGVy
OjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNp
emUoKSwgMTJ1KTsKKworICAgIEludFJlY3QgcXVhZFZpc2libGVSZWN0MSA9IHF1YWRMaXN0WzFd
LmdldCgpLT5xdWFkVmlzaWJsZVJlY3QoKTsKKyAgICBFWFBFQ1RfRVEocXVhZFZpc2libGVSZWN0
MS5oZWlnaHQoKSwgNTApOworCisgICAgSW50UmVjdCBxdWFkVmlzaWJsZVJlY3QzID0gcXVhZExp
c3RbM10uZ2V0KCktPnF1YWRWaXNpYmxlUmVjdCgpOworICAgIEVYUEVDVF9FUShxdWFkVmlzaWJs
ZVJlY3QzLndpZHRoKCksIDUwKTsKKworICAgIC8vIE5leHQgaW5kZXggaXMgNCwgbm90IDUsIHNp
bmNlIGNlbnRyZSBxdWFkIGN1bGxlZC4KKyAgICBJbnRSZWN0IHF1YWRWaXNpYmxlUmVjdDQgPSBx
dWFkTGlzdFs0XS5nZXQoKS0+cXVhZFZpc2libGVSZWN0KCk7CisgICAgRVhQRUNUX0VRKHF1YWRW
aXNpYmxlUmVjdDQud2lkdGgoKSwgNTApOworICAgIEVYUEVDVF9FUShxdWFkVmlzaWJsZVJlY3Q0
LngoKSwgMjUwKTsKKworICAgIEludFJlY3QgcXVhZFZpc2libGVSZWN0NiA9IHF1YWRMaXN0WzZd
LmdldCgpLT5xdWFkVmlzaWJsZVJlY3QoKTsKKyAgICBFWFBFQ1RfRVEocXVhZFZpc2libGVSZWN0
Ni5oZWlnaHQoKSwgNTApOworICAgIEVYUEVDVF9FUShxdWFkVmlzaWJsZVJlY3Q2LnkoKSwgMjUw
KTsKK30KKworVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2VudGVyVGlsZU5vbklu
dGVncmFsU2l6ZTEpCit7CisgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCisK
KyAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMTAwLCAxMDApOworCisgICAgLy8gQ3JlYXRl
IHJvb3QgbGF5ZXIgdGlsZSB3aXRoIGV4dGVudCAoOTkuMSwgOTkuMSkgLT4gKDIwMC45LCAyMDAu
OSkgdG8gbWFrZQorICAgIC8vIHN1cmUgaXQgZG9lc24ndCBnZXQgY3VsbGVkIGR1ZSB0byB0cmFu
c2Zvcm0gcm91bmRpbmcuCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcm9vdFRyYW5zZm9ybTsK
KyAgICByb290VHJhbnNmb3JtLnRyYW5zbGF0ZSg5OS4xLCA5OS4xKTsKKyAgICByb290VHJhbnNm
b3JtLnNjYWxlKDEuMDE4KTsKKworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcm9vdFN0
YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShyb290VHJhbnNmb3JtLCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpLCByb290UmVjdCwgSW50UmVjdCgpLCAxLjAsIHRydWUpOworICAgIE93blB0
cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY2hpbGRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVh
dGUoY2hpbGRUcmFuc2Zvcm0sIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgSW50
UmVjdCgpLCAxLjAsIHRydWUpOworCisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChy
b290U3RhdGUuZ2V0KCksIEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7
CisgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChjaGlsZFN0YXRlLmdldCgpLCBJbnRS
ZWN0KEludFBvaW50KCksIEludFNpemUoMTAwLCAxMDApKSkpOworCisgICAgRVhQRUNUX0VRKHF1
YWRMaXN0LnNpemUoKSwgMnUpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMo
cXVhZExpc3QpOworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDJ1KTsKK30KKworVEVT
VChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2VudGVyVGlsZU5vbkludGVncmFsU2l6ZTIp
Cit7CisgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCisKKyAgICAvLyBNYWtl
IHRoZSBjaGlsZCBxdWFkIHNsaWdodGx5IHNtYWxsZXIgdGhhbiwgYW5kIGNlbnRyZWQgb3Zlciwg
dGhlIHJvb3QgbGF5ZXIgdGlsZS4KKyAgICAvLyBWZXJpZnkgdGhlIGNoaWxkIGRvZXMgbm90IGNh
dXNlIHRoZSBxdWFkIGJlbG93IHRvIGJlIGN1bGxlZCBkdWUgdG8gcm91bmRpbmcuCisgICAgY2hp
bGRUcmFuc2Zvcm0udHJhbnNsYXRlKDEwMC4xLCAxMDAuMSk7CisgICAgY2hpbGRUcmFuc2Zvcm0u
c2NhbGUoMC45ODIpOworCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcm9vdFRyYW5zZm9ybTsK
KyAgICByb290VHJhbnNmb3JtLnRyYW5zbGF0ZSgxMDAsIDEwMCk7CisKKyAgICBPd25QdHI8Q0NT
aGFyZWRRdWFkU3RhdGU+IHJvb3RTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUocm9v
dFRyYW5zZm9ybSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIEludFJlY3QoKSwg
MS4wLCB0cnVlKTsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNoaWxkU3RhdGUgPSBD
Q1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNoaWxkVHJhbnNmb3JtLCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpLCBjaGlsZFJlY3QsIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKKworICAgIHF1YWRMaXN0
LmFwcGVuZChNYWtlVGlsZVF1YWQocm9vdFN0YXRlLmdldCgpLCBJbnRSZWN0KEludFBvaW50KCks
IEludFNpemUoMTAwLCAxMDApKSkpOworICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQo
Y2hpbGRTdGF0ZS5nZXQoKSwgSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSkp
KTsKKworICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDJ1KTsKKyAgICBDQ1F1YWRDdWxs
ZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBFWFBFQ1RfRVEocXVhZExpc3Qu
c2l6ZSgpLCAydSk7CiB9CiAKIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENoaWxk
TGluZXNVcEJvdHRvbVJpZ2h0KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>