<?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>33808</bug_id>
          
          <creation_ts>2010-01-18 13:10:37 -0800</creation_ts>
          <short_desc>Animated scaling of background-image is too slow</short_desc>
          <delta_ts>2010-04-27 18:01:21 -0700</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>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>krit</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>181964</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-18 13:10:37 -0800</bug_when>
    <thetext>Animated scaling of background-image is too slow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181992</commentid>
    <comment_count>1</comment_count>
      <attachid>46849</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-18 14:13:23 -0800</bug_when>
    <thetext>Created attachment 46849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182032</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-18 16:37:35 -0800</bug_when>
    <thetext>Attachment 46849 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/198242</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182459</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-19 14:26:51 -0800</bug_when>
    <thetext>../../WebCore/rendering/RenderBoxModelObject.cpp: In static member function ‘static bool WebCore::RenderBoxModelScaleObserver::shouldPaintBackgroundAtLowQuality(WebCore::RenderBoxModelObject*, WebCore::Image*, const WebCore::IntSize&amp;)’:
../../WebCore/rendering/RenderBoxModelObject.cpp:147: error: ‘currentTime’ was not declared in this scope
../../WebCore/rendering/RenderBoxModelObject.cpp:156: error: ‘currentTime’ was not declared in this scope

Looks like it&apos;s missing an include?  &lt;wtf/CurrentTime.h&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183560</commentid>
    <comment_count>4</comment_count>
      <attachid>46849</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-01-22 02:09:00 -0800</bug_when>
    <thetext>Comment on attachment 46849
Patch

r=me but please unbreak Chromium before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183637</commentid>
    <comment_count>5</comment_count>
      <attachid>46849</attachid>
    <who name="">mitz</who>
    <bug_when>2010-01-22 07:15:33 -0800</bug_when>
    <thetext>Comment on attachment 46849
Patch

&gt; +    if (false &amp;&amp; imageSize == size) {

Please don’t check in this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183711</commentid>
    <comment_count>6</comment_count>
      <attachid>46849</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-22 11:11:42 -0800</bug_when>
    <thetext>Comment on attachment 46849
Patch

sorry, this shouldn&apos;t have been r? -- hyatt and i had been discussing a sensible fix and aren&apos;t convinced that this approach is right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185144</commentid>
    <comment_count>7</comment_count>
      <attachid>47549</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-27 10:45:28 -0800</bug_when>
    <thetext>Created attachment 47549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185145</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-27 10:47:15 -0800</bug_when>
    <thetext>Attachment 47549 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/graphics/transforms/TransformationMatrix.h:324:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/platform/graphics/transforms/TransformationMatrix.h:324:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/platform/graphics/transforms/TransformationMatrix.h:325:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/platform/graphics/transforms/TransformationMatrix.h:325:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/platform/graphics/transforms/TransformationMatrix.h:326:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/platform/graphics/transforms/TransformationMatrix.h:326:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 6


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185147</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-27 10:56:49 -0800</bug_when>
    <thetext>Attachment 47549 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/216134</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185148</commentid>
    <comment_count>10</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-27 10:57:17 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Attachment 47549 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
&gt; WebCore/platform/graphics/transforms/TransformationMatrix.h:324:  Boolean
&gt; expressions that span multiple lines should have their operators on the left
&gt; side of the line instead of the right side.  [whitespace/operators] [4]
&gt; WebCore/platform/graphics/transforms/TransformationMatrix.h:324:  Tests for
&gt; true/false, null/non-null, and zero/non-zero should all be done without
&gt; equality comparisons.  [readability/comparison_to_zero] [5]
&gt; WebCore/platform/graphics/transforms/TransformationMatrix.h:325:  Boolean
&gt; expressions that span multiple lines should have their operators on the left
&gt; side of the line instead of the right side.  [whitespace/operators] [4]
&gt; WebCore/platform/graphics/transforms/TransformationMatrix.h:325:  Tests for
&gt; true/false, null/non-null, and zero/non-zero should all be done without
&gt; equality comparisons.  [readability/comparison_to_zero] [5]
&gt; WebCore/platform/graphics/transforms/TransformationMatrix.h:326:  Boolean
&gt; expressions that span multiple lines should have their operators on the left
&gt; side of the line instead of the right side.  [whitespace/operators] [4]
&gt; WebCore/platform/graphics/transforms/TransformationMatrix.h:326:  Tests for
&gt; true/false, null/non-null, and zero/non-zero should all be done without
&gt; equality comparisons.  [readability/comparison_to_zero] [5]
&gt; Total errors found: 6
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.
This is just moved code, i&apos;m hesitant to reformat it for this reason, but can if necessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185166</commentid>
    <comment_count>11</comment_count>
      <attachid>47549</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-01-27 11:50:47 -0800</bug_when>
    <thetext>Comment on attachment 47549
Patch


&gt; +    bool isIdentityOrTranslation() const
&gt; +    {
&gt; +        return m_matrix[0][0] == 1 &amp;&amp; m_matrix[0][1] == 0 &amp;&amp; m_matrix[0][2] == 0 &amp;&amp; m_matrix[0][3] == 0 &amp;&amp;
&gt; +        m_matrix[1][0] == 0 &amp;&amp; m_matrix[1][1] == 1 &amp;&amp; m_matrix[1][2] == 0 &amp;&amp; m_matrix[1][3] == 0 &amp;&amp;
&gt; +        m_matrix[2][0] == 0 &amp;&amp; m_matrix[2][1] == 0 &amp;&amp; m_matrix[2][2] == 1 &amp;&amp; m_matrix[2][3] == 0 &amp;&amp;
&gt; +        m_matrix[3][3] == 1;

Since you moved this you should fix the style (indentation on the following lines, and &amp;&amp; at the stat of the line).

&gt; diff --git a/WebCore/rendering/RenderBoxModelObject.cpp b/WebCore/rendering/RenderBoxModelObject.cpp

&gt; +    const IntSize&amp; size() const { return m_size; }
&gt; +    double time() const { return m_time; }

What is &quot;time&quot;? Would be good to rename to make it more understandable. Yes, you&apos;re just moving this but I think it&apos;s a good opportunity to improve it.

I prefer getters and setters next to eachother.

&gt; +    static void highQualityRepaintTimerFired(RenderBoxModelObject* object)
&gt; +    {
&gt; +        RenderBoxModelScaleObserver::boxModelObjectDestroyed(object);
&gt; +        object-&gt;repaint();

Can this repaint be optimized to only repaint the part of the box covered by the image?

r=me with those changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185168</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-27 11:51:40 -0800</bug_when>
    <thetext>Yeah, the style doesn&apos;t matter, but the bots seem to think this will break Chromium due to a missing wtf/CurrentTime.h include.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185194</commentid>
    <comment_count>13</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-27 13:14:15 -0800</bug_when>
    <thetext>Committed r53949: &lt;http://trac.webkit.org/changeset/53949&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185198</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-01-27 13:29:01 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Yeah, the style doesn&apos;t matter, but the bots seem to think this will break
&gt; Chromium due to a missing wtf/CurrentTime.h include.

And indeed the bots did break.  I&apos;m working on a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185202</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-27 13:33:07 -0800</bug_when>
    <thetext>Thank you Darin!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185204</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-01-27 13:36:59 -0800</bug_when>
    <thetext>Chromium bustage fix is here:
http://trac.webkit.org/changeset/53951</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185546</commentid>
    <comment_count>17</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-01-28 10:51:22 -0800</bug_when>
    <thetext>This patch also changed the output of fast/backgrounds/size/backgroundSize16.html. I can&apos;t tell if it&apos;s a regression or not. Do you want me to just update the baseline?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185556</commentid>
    <comment_count>18</comment_count>
      <attachid>47638</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-01-28 11:16:47 -0800</bug_when>
    <thetext>Created attachment 47638
Pixel output diff after this patch.

Here&apos;s the pixel diff. So what say you? Rebaseline? Real regression?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185559</commentid>
    <comment_count>19</comment_count>
      <attachid>47639</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-01-28 11:29:04 -0800</bug_when>
    <thetext>Created attachment 47639
fast/backgrounds/backgroundSize16 pixel diff after the patch.

Actual png this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185594</commentid>
    <comment_count>20</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-01-28 13:26:15 -0800</bug_when>
    <thetext>Rebaseline landed as http://trac.webkit.org/changeset/54013.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185924</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-01-29 12:11:21 -0800</bug_when>
    <thetext>Unfortunately, this change causes an endless repaint loop on Chromium&apos;s new tab page.  That in turn disrupts a number of Chromium tests and automation associated with the new tab page.  This is keeping the Chromium tree closed, so I am inclined to back out this change since many developers are blocked from doing work.  I will be posting a reduced test case that demonstrates the problem.  Oliver OK&apos;d the backout in #webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185931</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-01-29 12:22:28 -0800</bug_when>
    <thetext>Rolled out in http://trac.webkit.org/changeset/54075</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186240</commentid>
    <comment_count>23</comment_count>
      <attachid>47800</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-31 14:51:43 -0800</bug_when>
    <thetext>Created attachment 47800
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186242</commentid>
    <comment_count>24</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-31 14:56:24 -0800</bug_when>
    <thetext>Only change to this updated version of the patch is that we now only update the animation time if the transform is changing.  Otherwise what could happen is that the high quality repaint timer would trigger a return to low quality mode if there was still a scaling transform applied to the ctm.  This would then re-register the high quality timeout, and so result in endless repainting.  This effected chromium but i was never able to reproduce it locally so couldn&apos;t ever create a test.  Confirmed the issue was fixed via dglazkov with his chrome build.

The functional change from the earlier patch is that this check
if (!contextIsScaled &amp;&amp; data-&gt;size() == size)
becomes
if ((!contextIsScaled || data-&gt;transform() == currentTransform) &amp;&amp; data-&gt;size() == size)

--Oliver</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186243</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-31 14:59:45 -0800</bug_when>
    <thetext>Attachment 47800 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/graphics/transforms/TransformationMatrix.h:328:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/platform/graphics/transforms/TransformationMatrix.h:329:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/platform/graphics/transforms/TransformationMatrix.h:330:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 3


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186244</commentid>
    <comment_count>26</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-31 15:01:13 -0800</bug_when>
    <thetext>Committed r54113: &lt;http://trac.webkit.org/changeset/54113&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186245</commentid>
    <comment_count>27</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-01-31 15:08:19 -0800</bug_when>
    <thetext>I don&apos;t like that this patch clutters RenderBoxModelObject even more, it&apos;s the wrong direction.
Can you please split up the code into a new RenderBoxModelObjectScaleData.h header?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186356</commentid>
    <comment_count>28</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-02-01 04:17:16 -0800</bug_when>
    <thetext>Still no comments? Oliver? Simon?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187225</commentid>
    <comment_count>29</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-02-02 18:31:56 -0800</bug_when>
    <thetext>This breaks http://www.bing.com/reference/semhtml/Navagio.  Reduction here:

&lt;!DOCTYPE html&gt; 
&lt;div style=&quot;border-bottom:1px solid; background:-webkit-gradient(linear,0% 100%, 0% 100%, from(red),to(blue))&quot;&gt; 
&lt;/div&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218105</commentid>
    <comment_count>30</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-04-27 18:01:21 -0700</bug_when>
    <thetext>The issue I referred to in the previous comment was filed as bug https://bugs.webkit.org/show_bug.cgi?id=34510 and fixed at http://trac.webkit.org/changeset/54272.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46849</attachid>
            <date>2010-01-18 14:13:23 -0800</date>
            <delta_ts>2010-01-27 10:45:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-33808-20100118141321.patch</filename>
            <type>text/plain</type>
            <size>12489</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTRlMjkxMi4uN2RkMzAxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0wMS0xOCAgT2xpdmVyIEh1bnQg
IDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFuaW1hdGVkIHNjYWxpbmcgb2YgYmFja2dyb3VuZC1pbWFnZSBpcyB0b28g
c2xvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4
MDgKKworICAgICAgICBNYWtlIFJlbmRlckJveE1vZGVsT2JqZWN0IHVzZSBhIGxvd2VyIHF1YWxp
dHkgc2NhbGluZyBtb2RlIHdoZW4KKyAgICAgICAgYW5pbWF0aW5nIGJhY2tncm91bmQtaW1hZ2Uu
ICBUaGlzIGxvZ2ljIGlzIHNpbWlsYXIgdG9vIHdoYXQgd2UKKyAgICAgICAgZG8gZm9yIFJlbmRl
ckltYWdlCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsU2NhbGVEYXRhOjpSZW5kZXJCb3hNb2RlbFNjYWxlRGF0YSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbFNjYWxlRGF0YTo6flJlbmRlckJveE1vZGVsU2NhbGVEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsU2NhbGVEYXRhOjpzaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsU2NhbGVEYXRhOjp0aW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsU2NhbGVEYXRhOjp1c2VMb3dRdWFsaXR5U2NhbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxTY2FsZURhdGE6OmhpcWhRdWFsaXR5UmVwYWludFRp
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsU2NhbGVEYXRhOjpzZXRTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsU2NhbGVEYXRhOjpzZXRUaW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsU2NhbGVEYXRhOjpzZXRVc2VMb3dRdWFs
aXR5U2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxTY2FsZU9ic2VydmVy
Ojpib3hNb2RlbE9iamVjdERlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbFNjYWxlT2JzZXJ2ZXI6OmhpZ2hRdWFsaXR5UmVwYWludFRpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxTY2FsZU9ic2VydmVyOjpzaG91bGRQYWludEJhY2tn
cm91bmRBdExvd1F1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OmhpZ2hRdWFsaXR5UmVwYWludFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94TW9kZWxPYmplY3Q6On5SZW5kZXJCb3hNb2RlbE9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisKIDIwMTAtMDEtMTggIEdh
dmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoYnVpbGQgZml4KS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA2NTJjMWNiLi44YjQxMmQ2IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC00MTEsMjQgKzQxMSwz
NSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0CiAgICAgICAgIHJlc3RvcmUoKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFj
ZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFBvaW50JiBz
cmNQb2ludCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFBvaW50
JiBzcmNQb2ludCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9yIG9w
LCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
IHx8ICFpbWFnZSkKICAgICAgICAgcmV0dXJuOwotCisgICAgaWYgKHVzZUxvd1F1YWxpdHlTY2Fs
ZSkgeworICAgICAgICBzYXZlKCk7CisgICAgICAgIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxp
dHkoSW50ZXJwb2xhdGlvbkxvdyk7CisgICAgfQogICAgIGltYWdlLT5kcmF3VGlsZWQodGhpcywg
cmVjdCwgc3JjUG9pbnQsIHRpbGVTaXplLCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKKyAgICBpZiAo
dXNlTG93UXVhbGl0eVNjYWxlKQorICAgICAgICByZXN0b3JlKCk7CiB9CiAKLXZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpkcmF3VGlsZWRJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBJ
bWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgQ29tcG9zaXRlT3Bl
cmF0b3Igb3ApCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGlt
YWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdCwgY29u
c3QgSW50UmVjdCYgc3JjUmVjdCwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1
bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkK
IHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgaWYgKHVzZUxvd1F1YWxpdHlTY2FsZSkgeworICAgICAgICBzYXZlKCk7CisgICAg
ICAgIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7CisgICAg
fQogICAgIGlmIChoUnVsZSA9PSBJbWFnZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6
OlN0cmV0Y2hUaWxlKQogICAgICAgICAvLyBKdXN0IGRvIGEgc2NhbGUuCi0gICAgICAgIHJldHVy
biBkcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjUmVjdCwgb3ApOwot
Ci0gICAgaW1hZ2UtPmRyYXdUaWxlZCh0aGlzLCBkZXN0LCBzcmNSZWN0LCBoUnVsZSwgdlJ1bGUs
IHN0eWxlQ29sb3JTcGFjZSwgb3ApOworICAgICAgICBkcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlQ29s
b3JTcGFjZSwgZGVzdCwgc3JjUmVjdCwgb3ApOworICAgIGVsc2UKKyAgICAgICAgaW1hZ2UtPmRy
YXdUaWxlZCh0aGlzLCBkZXN0LCBzcmNSZWN0LCBoUnVsZSwgdlJ1bGUsIHN0eWxlQ29sb3JTcGFj
ZSwgb3ApOworICAgIGlmICh1c2VMb3dRdWFsaXR5U2NhbGUpCisgICAgICAgIHJlc3RvcmUoKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFkZFJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRS
ZWN0JiByZWN0LCBjb25zdCBJbnRTaXplJiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdo
dCwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDg4
ZTQxZTYuLjg3YjNlMGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaApAQCAtMjIwLDEwICsyMjAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2b2lkIGRyYXdJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJl
Y3QoMCwgMCwgLTEsIC0xKSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0
b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNl
KTsKICAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVD
b2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNyY1Bv
aW50LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgQ29t
cG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxv
d1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFn
ZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgSW50UmVjdCYgc3JjUmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFn
ZTo6VGlsZVJ1bGUgaFJ1bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUsIEltYWdlOjpUaWxlUnVsZSB2
UnVsZSA9IEltYWdlOjpTdHJldGNoVGlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
b21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgYm9v
bCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CiAKICAgICAgICAgdm9pZCBzZXRJbWFnZUlu
dGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5KTsKICAgICAgICAgSW50ZXJw
b2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IGFkNTJhYTYuLjEzNDE5
YTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNw
cAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTQ0
LDYgKzQ0LDEyOSBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzX3dhc0Zsb2F0aW5nID0g
ZmFsc2U7CiBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzX2hhZExheWVyID0gZmFsc2U7CiBi
b29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzX2xheWVyV2FzU2VsZlBhaW50aW5nID0gZmFsc2U7
CiAKK3N0YXRpYyBjb25zdCBkb3VibGUgY0ludGVycG9sYXRpb25DdXRvZmYgPSA4MDAuICogODAw
LjsKK3N0YXRpYyBjb25zdCBkb3VibGUgY0xvd1F1YWxpdHlUaW1lVGhyZXNob2xkID0gMC41MDA7
IC8vIDUwIG1zCisKK2NsYXNzIFJlbmRlckJveE1vZGVsU2NhbGVEYXRhIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKK3B1YmxpYzoKKyAgICBSZW5kZXJCb3hNb2RlbFNjYWxlRGF0YShSZW5kZXJCb3hN
b2RlbE9iamVjdCogb2JqZWN0LCBjb25zdCBJbnRTaXplJiBzaXplLCBkb3VibGUgdGltZSwgYm9v
bCBsb3dRdWFsaXR5U2NhbGUpCisgICAgICAgIDogbV9zaXplKHNpemUpCisgICAgICAgICwgbV90
aW1lKHRpbWUpCisgICAgICAgICwgbV9sb3dRdWFsaXR5U2NhbGUobG93UXVhbGl0eVNjYWxlKQor
ICAgICAgICAsIG1faGlnaFF1YWxpdHlSZXBhaW50VGltZXIob2JqZWN0LCAmUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmhpZ2hRdWFsaXR5UmVwYWludFRpbWVyRmlyZWQpCisgICAgeworICAgIH0KKyAg
ICAKKyAgICB+UmVuZGVyQm94TW9kZWxTY2FsZURhdGEoKQorICAgIHsKKyAgICAgICAgbV9oaWdo
UXVhbGl0eVJlcGFpbnRUaW1lci5zdG9wKCk7CisgICAgfQorICAgIAorICAgIGNvbnN0IEludFNp
emUmIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KKyAgICBkb3VibGUgdGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGltZTsgfQorICAgIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlKCkgY29u
c3QgeyByZXR1cm4gbV9sb3dRdWFsaXR5U2NhbGU7IH0KKyAgICBUaW1lcjxSZW5kZXJCb3hNb2Rl
bE9iamVjdD4mIGhpcWhRdWFsaXR5UmVwYWludFRpbWVyKCkgeyByZXR1cm4gbV9oaWdoUXVhbGl0
eVJlcGFpbnRUaW1lcjsgfQorICAgIAorICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJiBz
KSB7IG1fc2l6ZSA9IHM7IH0KKyAgICB2b2lkIHNldFRpbWUoZG91YmxlIHQpIHsgbV90aW1lID0g
dDsgfQorICAgIHZvaWQgc2V0VXNlTG93UXVhbGl0eVNjYWxlKGJvb2wgYikKKyAgICB7CisgICAg
ICAgIG1faGlnaFF1YWxpdHlSZXBhaW50VGltZXIuc3RvcCgpOworICAgICAgICBtX2xvd1F1YWxp
dHlTY2FsZSA9IGI7CisgICAgICAgIGlmIChiKQorICAgICAgICAgICAgbV9oaWdoUXVhbGl0eVJl
cGFpbnRUaW1lci5zdGFydE9uZVNob3QoY0xvd1F1YWxpdHlUaW1lVGhyZXNob2xkKTsKKyAgICB9
CisgICAgCitwcml2YXRlOgorICAgIEludFNpemUgbV9zaXplOworICAgIGRvdWJsZSBtX3RpbWU7
CisgICAgYm9vbCBtX2xvd1F1YWxpdHlTY2FsZTsKKyAgICBUaW1lcjxSZW5kZXJCb3hNb2RlbE9i
amVjdD4gbV9oaWdoUXVhbGl0eVJlcGFpbnRUaW1lcjsKK307CisKK2NsYXNzIFJlbmRlckJveE1v
ZGVsU2NhbGVPYnNlcnZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkUGFpbnRC
YWNrZ3JvdW5kQXRMb3dRdWFsaXR5KFJlbmRlckJveE1vZGVsT2JqZWN0KiwgSW1hZ2UqLCBjb25z
dCBJbnRTaXplJik7CisgICAgCisgICAgc3RhdGljIHZvaWQgYm94TW9kZWxPYmplY3REZXN0cm95
ZWQoUmVuZGVyQm94TW9kZWxPYmplY3QqIG9iamVjdCkKKyAgICB7CisgICAgICAgIGlmIChnQm94
TW9kZWxPYmplY3RzKSB7CisgICAgICAgICAgICBSZW5kZXJCb3hNb2RlbFNjYWxlRGF0YSogZGF0
YSA9IGdCb3hNb2RlbE9iamVjdHMtPnRha2Uob2JqZWN0KTsKKyAgICAgICAgICAgIGRlbGV0ZSBk
YXRhOworICAgICAgICAgICAgaWYgKCFnQm94TW9kZWxPYmplY3RzLT5zaXplKCkpIHsKKyAgICAg
ICAgICAgICAgICBkZWxldGUgZ0JveE1vZGVsT2JqZWN0czsKKyAgICAgICAgICAgICAgICBnQm94
TW9kZWxPYmplY3RzID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAK
KyAgICBzdGF0aWMgdm9pZCBoaWdoUXVhbGl0eVJlcGFpbnRUaW1lckZpcmVkKFJlbmRlckJveE1v
ZGVsT2JqZWN0KiBvYmplY3QpCisgICAgeworICAgICAgICBSZW5kZXJCb3hNb2RlbFNjYWxlT2Jz
ZXJ2ZXI6OmJveE1vZGVsT2JqZWN0RGVzdHJveWVkKG9iamVjdCk7CisgICAgICAgIG9iamVjdC0+
cmVwYWludCgpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgSGFzaE1hcDxSZW5kZXJCb3hNb2Rl
bE9iamVjdCosIFJlbmRlckJveE1vZGVsU2NhbGVEYXRhKj4qIGdCb3hNb2RlbE9iamVjdHM7Cit9
OworCitib29sIFJlbmRlckJveE1vZGVsU2NhbGVPYnNlcnZlcjo6c2hvdWxkUGFpbnRCYWNrZ3Jv
dW5kQXRMb3dRdWFsaXR5KFJlbmRlckJveE1vZGVsT2JqZWN0KiBvYmplY3QsIEltYWdlKiBpbWFn
ZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICAvLyBJZiB0aGUgaW1hZ2UgaXMgbm90IGEg
Yml0bWFwIGltYWdlLCB0aGVuIG5vbmUgb2YgdGhpcyBpcyByZWxldmFudCBhbmQgd2UganVzdCBw
YWludCBhdCBoaWdoCisgICAgLy8gcXVhbGl0eS4KKyAgICBpZiAoIWltYWdlLT5pc0JpdG1hcElt
YWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICAvLyBNYWtlIHN1cmUgdG8g
dXNlIHRoZSB1bnpvb21lZCBpbWFnZSBzaXplLCBzaW5jZSBpZiBhIGZ1bGwgcGFnZSB6b29tIGlz
IGluIGVmZmVjdCwgdGhlIGltYWdlCisgICAgLy8gaXMgYWN0dWFsbHkgYmVpbmcgc2NhbGVkLgor
ICAgIEludFNpemUgaW1hZ2VTaXplKGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOwor
ICAgIAorICAgIC8vIExvb2sgb3Vyc2VsdmVzIHVwIGluIHRoZSBoYXNodGFibGUuCisgICAgUmVu
ZGVyQm94TW9kZWxTY2FsZURhdGEqIGRhdGEgPSAwOworICAgIGlmIChnQm94TW9kZWxPYmplY3Rz
KQorICAgICAgICBkYXRhID0gZ0JveE1vZGVsT2JqZWN0cy0+Z2V0KG9iamVjdCk7CisgICAgCisg
ICAgaWYgKGZhbHNlICYmIGltYWdlU2l6ZSA9PSBzaXplKSB7CisgICAgICAgIC8vIFRoZXJlIGlz
IG5vIHNjYWxlIGluIGVmZmVjdC4gIElmIHdlIGhhZCBhIHNjYWxlIGluIGVmZmVjdCBiZWZvcmUs
IHdlIGNhbiBqdXN0IGRlbGV0ZSB0aGlzIGRhdGEuCisgICAgICAgIGlmIChkYXRhKSB7CisgICAg
ICAgICAgICBnQm94TW9kZWxPYmplY3RzLT5yZW1vdmUob2JqZWN0KTsKKyAgICAgICAgICAgIGRl
bGV0ZSBkYXRhOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAg
CisgICAgLy8gVGhlcmUgaXMgbm8gbmVlZCB0byBoYXNoIHNjYWxlZCBpbWFnZXMgdGhhdCBhbHdh
eXMgdXNlIGxvdyBxdWFsaXR5IG1vZGUgd2hlbiB0aGUgcGFnZSBkZW1hbmRzIGl0LiAgVGhpcyBp
cyB0aGUgaUNoYXQgY2FzZS4KKyAgICBpZiAob2JqZWN0LT5kb2N1bWVudCgpLT5wYWdlKCktPmlu
TG93UXVhbGl0eUltYWdlSW50ZXJwb2xhdGlvbk1vZGUoKSkgeworICAgICAgICBkb3VibGUgdG90
YWxQaXhlbHMgPSBzdGF0aWNfY2FzdDxkb3VibGU+KGltYWdlLT53aWR0aCgpKSAqIHN0YXRpY19j
YXN0PGRvdWJsZT4oaW1hZ2UtPmhlaWdodCgpKTsKKyAgICAgICAgaWYgKHRvdGFsUGl4ZWxzID4g
Y0ludGVycG9sYXRpb25DdXRvZmYpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisg
ICAgCisgICAgLy8gSWYgdGhlcmUgaXMgbm8gZGF0YSB5ZXQsIHdlIHdpbGwgcGFpbnQgdGhlIGZp
cnN0IHNjYWxlIGF0IGhpZ2ggcXVhbGl0eSBhbmQgcmVjb3JkIHRoZSBwYWludCB0aW1lIGluIGNh
c2UgYSBzZWNvbmQgc2NhbGUgaGFwcGVucworICAgIC8vIHZlcnkgc29vbi4KKyAgICBpZiAoIWRh
dGEpIHsKKyAgICAgICAgZGF0YSA9IG5ldyBSZW5kZXJCb3hNb2RlbFNjYWxlRGF0YShvYmplY3Qs
IHNpemUsIGN1cnJlbnRUaW1lKCksIGZhbHNlKTsKKyAgICAgICAgaWYgKCFnQm94TW9kZWxPYmpl
Y3RzKQorICAgICAgICAgICAgZ0JveE1vZGVsT2JqZWN0cyA9IG5ldyBIYXNoTWFwPFJlbmRlckJv
eE1vZGVsT2JqZWN0KiwgUmVuZGVyQm94TW9kZWxTY2FsZURhdGEqPjsKKyAgICAgICAgZ0JveE1v
ZGVsT2JqZWN0cy0+c2V0KG9iamVjdCwgZGF0YSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICAvLyBXZSBoYXZlIGRhdGEgYW5kIG91ciBzaXplIGp1c3QgY2hhbmdlZC4gIElm
IHRoaXMgY2hhbmdlIGhhcHBlbmVkIHF1aWNrbHksIGdvIGludG8gbG93IHF1YWxpdHkgbW9kZSBh
bmQgdGhlbiBzZXQgYSByZXBhaW50CisgICAgLy8gdGltZXIgdG8gcGFpbnQgaW4gaGlnaCBxdWFs
aXR5IG1vZGUuICBPdGhlcndpc2UgaXQgaXMgb2sgdG8ganVzdCBwYWludCBpbiBoaWdoIHF1YWxp
dHkgbW9kZS4KKyAgICBkb3VibGUgbmV3VGltZSA9IGN1cnJlbnRUaW1lKCk7CisgICAgZGF0YS0+
c2V0VXNlTG93UXVhbGl0eVNjYWxlKG5ld1RpbWUgLSBkYXRhLT50aW1lKCkgPCBjTG93UXVhbGl0
eVRpbWVUaHJlc2hvbGQpOworICAgIGRhdGEtPnNldFRpbWUobmV3VGltZSk7CisgICAgZGF0YS0+
c2V0U2l6ZShzaXplKTsKKyAgICByZXR1cm4gZGF0YS0+dXNlTG93UXVhbGl0eVNjYWxlKCk7Cit9
CisKK0hhc2hNYXA8UmVuZGVyQm94TW9kZWxPYmplY3QqLCBSZW5kZXJCb3hNb2RlbFNjYWxlRGF0
YSo+KiBSZW5kZXJCb3hNb2RlbFNjYWxlT2JzZXJ2ZXI6OmdCb3hNb2RlbE9iamVjdHMgPSAwOwor
Cit2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpoaWdoUXVhbGl0eVJlcGFpbnRUaW1lckZpcmVk
KFRpbWVyPFJlbmRlckJveE1vZGVsT2JqZWN0PiopCit7CisgICAgUmVuZGVyQm94TW9kZWxTY2Fs
ZU9ic2VydmVyOjpoaWdoUXVhbGl0eVJlcGFpbnRUaW1lckZpcmVkKHRoaXMpOworfQorCiBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6UmVuZGVyQm94TW9kZWxPYmplY3QoTm9kZSogbm9kZSkKICAgICA6
IFJlbmRlck9iamVjdChub2RlKQogICAgICwgbV9sYXllcigwKQpAQCAtNTUsNiArMTc4LDcgQEAg
UmVuZGVyQm94TW9kZWxPYmplY3Q6On5SZW5kZXJCb3hNb2RlbE9iamVjdCgpCiAgICAgLy8gT3Vy
IGxheWVyIHNob3VsZCBoYXZlIGJlZW4gZGVzdHJveWVkIGFuZCBjbGVhcmVkIGJ5IG5vdwogICAg
IEFTU0VSVCghaGFzTGF5ZXIoKSk7CiAgICAgQVNTRVJUKCFtX2xheWVyKTsKKyAgICBSZW5kZXJC
b3hNb2RlbFNjYWxlT2JzZXJ2ZXI6OmJveE1vZGVsT2JqZWN0RGVzdHJveWVkKHRoaXMpOwogfQog
CiB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpkZXN0cm95TGF5ZXIoKQpAQCAtNDY0LDcgKzU4
OCw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQo
Y29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgICAgICBwaGFzZSArPSBkZXN0
UmVjdC5sb2NhdGlvbigpIC0gZGVzdE9yaWdpbjsKICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJh
dG9yIGNvbXBvc2l0ZU9wID0gb3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciA/IGJnTGF5ZXItPmNv
bXBvc2l0ZSgpIDogb3A7CiAgICAgICAgICAgICBSZW5kZXJPYmplY3QqIGNsaWVudEZvckJhY2tn
cm91bmRJbWFnZSA9IGJhY2tncm91bmRPYmplY3QgPyBiYWNrZ3JvdW5kT2JqZWN0IDogdGhpczsK
LSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdUaWxlZEltYWdlKGJnLT5pbWFnZShjbGllbnRGb3JC
YWNrZ3JvdW5kSW1hZ2UsIHRpbGVTaXplKSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBkZXN0UmVj
dCwgcGhhc2UsIHRpbGVTaXplLCBjb21wb3NpdGVPcCk7CisgICAgICAgICAgICBJbWFnZSogaW1h
Z2UgPSBiZy0+aW1hZ2UoY2xpZW50Rm9yQmFja2dyb3VuZEltYWdlLCB0aWxlU2l6ZSk7CisgICAg
ICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gUmVuZGVyQm94TW9kZWxTY2FsZU9i
c2VydmVyOjpzaG91bGRQYWludEJhY2tncm91bmRBdExvd1F1YWxpdHkodGhpcywgaW1hZ2UsIGRl
c3RSZWN0LnNpemUoKSk7CisgICAgICAgICAgICBjb250ZXh0LT5kcmF3VGlsZWRJbWFnZShpbWFn
ZSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBkZXN0UmVjdCwgcGhhc2UsIHRpbGVTaXplLCBjb21w
b3NpdGVPcCwgdXNlTG93UXVhbGl0eVNjYWxpbmcpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAppbmRleCBmYWU4NjZjLi4wMWY2MTZm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTk3LDcgKzk3
LDggQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbGVkIGJ5IFJlbmRlck9iamVjdDo6ZGVzdHJveSgp
IChhbmQgUmVuZGVyV2lkZ2V0OjpkZXN0cm95KCkpIGFuZCBpcyB0aGUgb25seSB3YXkgbGF5ZXJz
IHNob3VsZCBldmVyIGJlIGRlc3Ryb3llZAogICAgIHZvaWQgZGVzdHJveUxheWVyKCk7Ci0KKyAg
ICAKKyAgICB2b2lkIGhpZ2hRdWFsaXR5UmVwYWludFRpbWVyRmlyZWQoVGltZXI8UmVuZGVyQm94
TW9kZWxPYmplY3Q+Kik7CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjYWxjdWxhdGVCYWNrZ3JvdW5k
SW1hZ2VHZW9tZXRyeShjb25zdCBGaWxsTGF5ZXIqLCBpbnQgdHgsIGludCB0eSwgaW50IHcsIGlu
dCBoLCBJbnRSZWN0JiBkZXN0UmVjdCwgSW50UG9pbnQmIHBoYXNlLCBJbnRTaXplJiB0aWxlU2l6
ZSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47549</attachid>
            <date>2010-01-27 10:45:28 -0800</date>
            <delta_ts>2010-01-31 14:51:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-33808-20100127104522.patch</filename>
            <type>text/plain</type>
            <size>15246</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWQ2ZDY2NS4uNzc4YWEwYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMC0wMS0yNyAgT2xpdmVyIEh1bnQg
IDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFuaW1hdGVkIHNjYWxpbmcgb2YgYmFja2dyb3VuZC1pbWFnZSBpcyB0b28g
c2xvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4
MDgKKworICAgICAgICBJbXBsZW1lbnQgYSB2ZXJzaW9uIG9mIHRoZSBSZW5kZXJJbWFnZSBhbmlt
YXRlZCBzY2FsaW5nIG9wdGltaXNhdGlvbgorICAgICAgICBmb3IgYmFja2dyb3VuZCBpbWFnZXMu
ICBEdWUgdG8gdGhlIHBvc3NpYmlsaXR5IG9mIGFyYml0cmFyeSB0cmFuc2Zvcm1zCisgICAgICAg
IGJlaW5nIGFwcGxpZWQgdG8gY29udGFpbmluZyBlbGVtZW50cyB3ZSBleHBsaWNpdGx5IGNoZWNr
IHRoZSBjdXJyZW50CisgICAgICAgIENUTSBvZiB0aGUgY29udGV4dCBmb3Igc2NhbGluZyBvciBy
b3RhdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNJZGVudGl0eU9yVHJhbnNs
YXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbFNjYWxlRGF0YTo6UmVuZGVyQm94TW9kZWxT
Y2FsZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxTY2FsZURhdGE6On5S
ZW5kZXJCb3hNb2RlbFNjYWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bFNjYWxlRGF0YTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbFNjYWxl
RGF0YTo6dGltZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbFNjYWxlRGF0YTo6
dXNlTG93UXVhbGl0eVNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsU2Nh
bGVEYXRhOjpoaXFoUXVhbGl0eVJlcGFpbnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3hNb2RlbFNjYWxlRGF0YTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3hNb2RlbFNjYWxlRGF0YTo6c2V0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbFNjYWxlRGF0YTo6c2V0VXNlTG93UXVhbGl0eVNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsU2NhbGVPYnNlcnZlcjo6Ym94TW9kZWxPYmplY3REZXN0cm95ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxTY2FsZU9ic2VydmVyOjpoaWdoUXVhbGl0
eVJlcGFpbnRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsU2Nh
bGVPYnNlcnZlcjo6c2hvdWxkUGFpbnRCYWNrZ3JvdW5kQXRMb3dRdWFsaXR5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpoaWdoUXVhbGl0eVJlcGFpbnRUaW1lckZp
cmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojp+UmVuZGVyQm94
TW9kZWxPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oOgorCiAyMDEwLTAxLTI2ICBEbWl0cnkgVGl0b3YgIDxkaW1pY2hAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIE5vdCByZXZpZXdlZCwgYXR0ZW1wdCB0byBmaXggVGlnZXIgYnVpbGQu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXgg
NjUyYzFjYi4uOGI0MTJkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcApAQCAtNDExLDI0ICs0MTEsMzUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25z
dAogICAgICAgICByZXN0b3JlKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGls
ZWRJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBJbnRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3
VGlsZWRJbWFnZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25z
dCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRQb2ludCYgc3JjUG9pbnQsIGNvbnN0IEludFNpemUm
IHRpbGVTaXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUp
CiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhaW1hZ2UpCiAgICAgICAgIHJldHVy
bjsKLQorICAgIGlmICh1c2VMb3dRdWFsaXR5U2NhbGUpIHsKKyAgICAgICAgc2F2ZSgpOworICAg
ICAgICBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25Mb3cpOworICAg
IH0KICAgICBpbWFnZS0+ZHJhd1RpbGVkKHRoaXMsIHJlY3QsIHNyY1BvaW50LCB0aWxlU2l6ZSwg
c3R5bGVDb2xvclNwYWNlLCBvcCk7CisgICAgaWYgKHVzZUxvd1F1YWxpdHlTY2FsZSkKKyAgICAg
ICAgcmVzdG9yZSgpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RpbGVkSW1hZ2Uo
SW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYg
ZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFn
ZTo6VGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9y
U3BhY2UsIGNvbnN0IEludFJlY3QmIGRlc3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsIEltYWdl
OjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBDb21wb3NpdGVPcGVyYXRv
ciBvcCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSB8fCAhaW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmICh1c2VMb3dRdWFsaXR5
U2NhbGUpIHsKKyAgICAgICAgc2F2ZSgpOworICAgICAgICBzZXRJbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KEludGVycG9sYXRpb25Mb3cpOworICAgIH0KICAgICBpZiAoaFJ1bGUgPT0gSW1hZ2U6
OlN0cmV0Y2hUaWxlICYmIHZSdWxlID09IEltYWdlOjpTdHJldGNoVGlsZSkKICAgICAgICAgLy8g
SnVzdCBkbyBhIHNjYWxlLgotICAgICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNv
bG9yU3BhY2UsIGRlc3QsIHNyY1JlY3QsIG9wKTsKLQotICAgIGltYWdlLT5kcmF3VGlsZWQodGhp
cywgZGVzdCwgc3JjUmVjdCwgaFJ1bGUsIHZSdWxlLCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKKyAg
ICAgICAgZHJhd0ltYWdlKGltYWdlLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3QsIHNyY1JlY3QsIG9w
KTsKKyAgICBlbHNlCisgICAgICAgIGltYWdlLT5kcmF3VGlsZWQodGhpcywgZGVzdCwgc3JjUmVj
dCwgaFJ1bGUsIHZSdWxlLCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKKyAgICBpZiAodXNlTG93UXVh
bGl0eVNjYWxlKQorICAgICAgICByZXN0b3JlKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjphZGRSb3VuZGVkUmVjdENsaXAoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50U2l6ZSYg
dG9wTGVmdCwgY29uc3QgSW50U2l6ZSYgdG9wUmlnaHQsCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAxOTQ2Yjk3Li40NDNhZjNjIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTIyMCwxMCArMjIwLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UqLCBD
b2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksCiAgICAgICAg
ICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlciwg
Ym9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CiAgICAgICAgIHZvaWQgZHJhd1RpbGVk
SW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEludFBvaW50JiBzcmNQb2ludCwgY29uc3QgSW50U2l6ZSYgdGlsZVNp
emUsCi0gICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3Zlcik7CisgICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yID0g
Q29tcG9zaXRlU291cmNlT3ZlciwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBmYWxzZSk7CiAg
ICAgICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqLCBDb2xvclNwYWNlIHN0eWxlQ29sb3JT
cGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEludFJlY3QmIHNyY1JlY3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlID0gSW1hZ2U6
OlN0cmV0Y2hUaWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUgPSBJbWFnZTo6U3RyZXRjaFRpbGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3Np
dGVTb3VyY2VPdmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVy
YXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIGJvb2wgdXNlTG93UXVhbGl0eVNjYWxlID0gZmFs
c2UpOwogCiAgICAgICAgIHZvaWQgc2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJbnRlcnBv
bGF0aW9uUXVhbGl0eSk7CiAgICAgICAgIEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggNzg3YjNh
Yi4uN2UyMzRlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTMxOSwyNyArMzE5LDI3IEBA
IHB1YmxpYzoKICAgICBvcGVyYXRvciBYRk9STSgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICBib29s
IGlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X21hdHJpeFswXVswXSA9PSAxICYmIG1fbWF0cml4WzBdWzFdID09IDAgJiYgbV9tYXRyaXhbMF1b
Ml0gPT0gMCAmJiBtX21hdHJpeFswXVszXSA9PSAwICYmCisgICAgICAgIG1fbWF0cml4WzFdWzBd
ID09IDAgJiYgbV9tYXRyaXhbMV1bMV0gPT0gMSAmJiBtX21hdHJpeFsxXVsyXSA9PSAwICYmIG1f
bWF0cml4WzFdWzNdID09IDAgJiYKKyAgICAgICAgbV9tYXRyaXhbMl1bMF0gPT0gMCAmJiBtX21h
dHJpeFsyXVsxXSA9PSAwICYmIG1fbWF0cml4WzJdWzJdID09IDEgJiYgbV9tYXRyaXhbMl1bM10g
PT0gMCAmJgorICAgICAgICBtX21hdHJpeFszXVszXSA9PSAxOworICAgIH0KKwogcHJpdmF0ZToK
ICAgICAvLyBtdWx0aXBseSBwYXNzZWQgMkQgcG9pbnQgYnkgbWF0cml4IChhc3N1bWUgej0wKQog
ICAgIHZvaWQgbXVsdFZlY01hdHJpeChkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSYgZHN0WCwg
ZG91YmxlJiBkc3RZKSBjb25zdDsKLSAgICAKKwogICAgIC8vIG11bHRpcGx5IHBhc3NlZCAzRCBw
b2ludCBieSBtYXRyaXgKICAgICB2b2lkIG11bHRWZWNNYXRyaXgoZG91YmxlIHgsIGRvdWJsZSB5
LCBkb3VibGUgeiwgZG91YmxlJiBkc3RYLCBkb3VibGUmIGRzdFksIGRvdWJsZSYgZHN0WikgY29u
c3Q7Ci0gICAgCisKICAgICB2b2lkIHNldE1hdHJpeChjb25zdCBNYXRyaXg0IG0pCiAgICAgewog
ICAgICAgICBpZiAobSAmJiBtICE9IG1fbWF0cml4KQogICAgICAgICAgICAgbWVtY3B5KG1fbWF0
cml4LCBtLCBzaXplb2YoTWF0cml4NCkpOwogICAgIH0KLSAgICAKLSAgICBib29sIGlzSWRlbnRp
dHlPclRyYW5zbGF0aW9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX21hdHJpeFsw
XVswXSA9PSAxICYmIG1fbWF0cml4WzBdWzFdID09IDAgJiYgbV9tYXRyaXhbMF1bMl0gPT0gMCAm
JiBtX21hdHJpeFswXVszXSA9PSAwICYmCi0gICAgICAgICAgICAgICBtX21hdHJpeFsxXVswXSA9
PSAwICYmIG1fbWF0cml4WzFdWzFdID09IDEgJiYgbV9tYXRyaXhbMV1bMl0gPT0gMCAmJiBtX21h
dHJpeFsxXVszXSA9PSAwICYmCi0gICAgICAgICAgICAgICBtX21hdHJpeFsyXVswXSA9PSAwICYm
IG1fbWF0cml4WzJdWzFdID09IDAgJiYgbV9tYXRyaXhbMl1bMl0gPT0gMSAmJiBtX21hdHJpeFsy
XVszXSA9PSAwICYmCi0gICAgICAgICAgICAgICBtX21hdHJpeFszXVszXSA9PSAxOwotICAgIH0K
LSAgICAKKwogICAgIE1hdHJpeDQgbV9tYXRyaXg7CiB9OwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggYWY5NDUyNC4uZmMyODRkMiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtNDQsNiArNDQsMTM0IEBA
IGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnNfd2FzRmxvYXRpbmcgPSBmYWxzZTsKIGJvb2wg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnNfaGFkTGF5ZXIgPSBmYWxzZTsKIGJvb2wgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnNfbGF5ZXJXYXNTZWxmUGFpbnRpbmcgPSBmYWxzZTsKIAorc3RhdGljIGNv
bnN0IGRvdWJsZSBjSW50ZXJwb2xhdGlvbkN1dG9mZiA9IDgwMC4gKiA4MDAuOworc3RhdGljIGNv
bnN0IGRvdWJsZSBjTG93UXVhbGl0eVRpbWVUaHJlc2hvbGQgPSAwLjUwMDsgLy8gNTAwIG1zCisK
K2NsYXNzIFJlbmRlckJveE1vZGVsU2NhbGVEYXRhIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1
YmxpYzoKKyAgICBSZW5kZXJCb3hNb2RlbFNjYWxlRGF0YShSZW5kZXJCb3hNb2RlbE9iamVjdCog
b2JqZWN0LCBjb25zdCBJbnRTaXplJiBzaXplLCBkb3VibGUgdGltZSwgYm9vbCBsb3dRdWFsaXR5
U2NhbGUpCisgICAgICAgIDogbV9zaXplKHNpemUpCisgICAgICAgICwgbV90aW1lKHRpbWUpCisg
ICAgICAgICwgbV9sb3dRdWFsaXR5U2NhbGUobG93UXVhbGl0eVNjYWxlKQorICAgICAgICAsIG1f
aGlnaFF1YWxpdHlSZXBhaW50VGltZXIob2JqZWN0LCAmUmVuZGVyQm94TW9kZWxPYmplY3Q6Omhp
Z2hRdWFsaXR5UmVwYWludFRpbWVyRmlyZWQpCisgICAgeworICAgIH0KKworICAgIH5SZW5kZXJC
b3hNb2RlbFNjYWxlRGF0YSgpCisgICAgeworICAgICAgICBtX2hpZ2hRdWFsaXR5UmVwYWludFRp
bWVyLnN0b3AoKTsKKyAgICB9CisKKyAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaXplOyB9CisgICAgZG91YmxlIHRpbWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWU7
IH0KKyAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG93UXVh
bGl0eVNjYWxlOyB9CisgICAgVGltZXI8UmVuZGVyQm94TW9kZWxPYmplY3Q+JiBoaXFoUXVhbGl0
eVJlcGFpbnRUaW1lcigpIHsgcmV0dXJuIG1faGlnaFF1YWxpdHlSZXBhaW50VGltZXI7IH0KKwor
ICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJiBzKSB7IG1fc2l6ZSA9IHM7IH0KKyAgICB2
b2lkIHNldFRpbWUoZG91YmxlIHQpIHsgbV90aW1lID0gdDsgfQorICAgIHZvaWQgc2V0VXNlTG93
UXVhbGl0eVNjYWxlKGJvb2wgYikKKyAgICB7CisgICAgICAgIG1faGlnaFF1YWxpdHlSZXBhaW50
VGltZXIuc3RvcCgpOworICAgICAgICBtX2xvd1F1YWxpdHlTY2FsZSA9IGI7CisgICAgICAgIGlm
IChiKQorICAgICAgICAgICAgbV9oaWdoUXVhbGl0eVJlcGFpbnRUaW1lci5zdGFydE9uZVNob3Qo
Y0xvd1F1YWxpdHlUaW1lVGhyZXNob2xkKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSW50U2l6
ZSBtX3NpemU7CisgICAgZG91YmxlIG1fdGltZTsKKyAgICBib29sIG1fbG93UXVhbGl0eVNjYWxl
OworICAgIFRpbWVyPFJlbmRlckJveE1vZGVsT2JqZWN0PiBtX2hpZ2hRdWFsaXR5UmVwYWludFRp
bWVyOworfTsKKworY2xhc3MgUmVuZGVyQm94TW9kZWxTY2FsZU9ic2VydmVyIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgYm9vbCBzaG91bGRQYWludEJhY2tncm91bmRBdExvd1F1YWxpdHkoR3JhcGhp
Y3NDb250ZXh0KiwgUmVuZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IEludFNpemUm
KTsKKworICAgIHN0YXRpYyB2b2lkIGJveE1vZGVsT2JqZWN0RGVzdHJveWVkKFJlbmRlckJveE1v
ZGVsT2JqZWN0KiBvYmplY3QpCisgICAgeworICAgICAgICBpZiAoZ0JveE1vZGVsT2JqZWN0cykg
eworICAgICAgICAgICAgUmVuZGVyQm94TW9kZWxTY2FsZURhdGEqIGRhdGEgPSBnQm94TW9kZWxP
YmplY3RzLT50YWtlKG9iamVjdCk7CisgICAgICAgICAgICBkZWxldGUgZGF0YTsKKyAgICAgICAg
ICAgIGlmICghZ0JveE1vZGVsT2JqZWN0cy0+c2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgZGVs
ZXRlIGdCb3hNb2RlbE9iamVjdHM7CisgICAgICAgICAgICAgICAgZ0JveE1vZGVsT2JqZWN0cyA9
IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBo
aWdoUXVhbGl0eVJlcGFpbnRUaW1lckZpcmVkKFJlbmRlckJveE1vZGVsT2JqZWN0KiBvYmplY3Qp
CisgICAgeworICAgICAgICBSZW5kZXJCb3hNb2RlbFNjYWxlT2JzZXJ2ZXI6OmJveE1vZGVsT2Jq
ZWN0RGVzdHJveWVkKG9iamVjdCk7CisgICAgICAgIG9iamVjdC0+cmVwYWludCgpOworICAgIH0K
KworICAgIHN0YXRpYyBIYXNoTWFwPFJlbmRlckJveE1vZGVsT2JqZWN0KiwgUmVuZGVyQm94TW9k
ZWxTY2FsZURhdGEqPiogZ0JveE1vZGVsT2JqZWN0czsKK307CisKK2Jvb2wgUmVuZGVyQm94TW9k
ZWxTY2FsZU9ic2VydmVyOjpzaG91bGRQYWludEJhY2tncm91bmRBdExvd1F1YWxpdHkoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0LCBJbWFnZSog
aW1hZ2UsIGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgLy8gSWYgdGhlIGltYWdlIGlzIG5v
dCBhIGJpdG1hcCBpbWFnZSwgdGhlbiBub25lIG9mIHRoaXMgaXMgcmVsZXZhbnQgYW5kIHdlIGp1
c3QgcGFpbnQgYXQgaGlnaAorICAgIC8vIHF1YWxpdHkuCisgICAgaWYgKCFpbWFnZS0+aXNCaXRt
YXBJbWFnZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYWtlIHN1cmUgdG8g
dXNlIHRoZSB1bnpvb21lZCBpbWFnZSBzaXplLCBzaW5jZSBpZiBhIGZ1bGwgcGFnZSB6b29tIGlz
IGluIGVmZmVjdCwgdGhlIGltYWdlCisgICAgLy8gaXMgYWN0dWFsbHkgYmVpbmcgc2NhbGVkLgor
ICAgIEludFNpemUgaW1hZ2VTaXplKGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOwor
CisgICAgLy8gTG9vayBvdXJzZWx2ZXMgdXAgaW4gdGhlIGhhc2h0YWJsZS4KKyAgICBSZW5kZXJC
b3hNb2RlbFNjYWxlRGF0YSogZGF0YSA9IDA7CisgICAgaWYgKGdCb3hNb2RlbE9iamVjdHMpCisg
ICAgICAgIGRhdGEgPSBnQm94TW9kZWxPYmplY3RzLT5nZXQob2JqZWN0KTsKKworICAgIGJvb2wg
Y29udGV4dElzU2NhbGVkID0gIWNvbnRleHQtPmdldENUTSgpLmlzSWRlbnRpdHlPclRyYW5zbGF0
aW9uKCk7CisgICAgaWYgKCFjb250ZXh0SXNTY2FsZWQgJiYgaW1hZ2VTaXplID09IHNpemUpIHsK
KyAgICAgICAgLy8gVGhlcmUgaXMgbm8gc2NhbGUgaW4gZWZmZWN0LiAgSWYgd2UgaGFkIGEgc2Nh
bGUgaW4gZWZmZWN0IGJlZm9yZSwgd2UgY2FuIGp1c3QgZGVsZXRlIHRoaXMgZGF0YS4KKyAgICAg
ICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIGdCb3hNb2RlbE9iamVjdHMtPnJlbW92ZShvYmpl
Y3QpOworICAgICAgICAgICAgZGVsZXRlIGRhdGE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIC8vIFRoZXJlIGlzIG5vIG5lZWQgdG8gaGFzaCBzY2FsZWQg
aW1hZ2VzIHRoYXQgYWx3YXlzIHVzZSBsb3cgcXVhbGl0eSBtb2RlIHdoZW4gdGhlIHBhZ2UgZGVt
YW5kcyBpdC4gIFRoaXMgaXMgdGhlIGlDaGF0IGNhc2UuCisgICAgaWYgKG9iamVjdC0+ZG9jdW1l
bnQoKS0+cGFnZSgpLT5pbkxvd1F1YWxpdHlJbWFnZUludGVycG9sYXRpb25Nb2RlKCkpIHsKKyAg
ICAgICAgZG91YmxlIHRvdGFsUGl4ZWxzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihpbWFnZS0+d2lk
dGgoKSkgKiBzdGF0aWNfY2FzdDxkb3VibGU+KGltYWdlLT5oZWlnaHQoKSk7CisgICAgICAgIGlm
ICh0b3RhbFBpeGVscyA+IGNJbnRlcnBvbGF0aW9uQ3V0b2ZmKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgLy8gSWYgdGhlcmUgaXMgbm8gZGF0YSB5ZXQsIHdlIHdpbGwg
cGFpbnQgdGhlIGZpcnN0IHNjYWxlIGF0IGhpZ2ggcXVhbGl0eSBhbmQgcmVjb3JkIHRoZSBwYWlu
dCB0aW1lIGluIGNhc2UgYSBzZWNvbmQgc2NhbGUgaGFwcGVucworICAgIC8vIHZlcnkgc29vbi4K
KyAgICBpZiAoIWRhdGEpIHsKKyAgICAgICAgZGF0YSA9IG5ldyBSZW5kZXJCb3hNb2RlbFNjYWxl
RGF0YShvYmplY3QsIHNpemUsIGN1cnJlbnRUaW1lKCksIGZhbHNlKTsKKyAgICAgICAgaWYgKCFn
Qm94TW9kZWxPYmplY3RzKQorICAgICAgICAgICAgZ0JveE1vZGVsT2JqZWN0cyA9IG5ldyBIYXNo
TWFwPFJlbmRlckJveE1vZGVsT2JqZWN0KiwgUmVuZGVyQm94TW9kZWxTY2FsZURhdGEqPjsKKyAg
ICAgICAgZ0JveE1vZGVsT2JqZWN0cy0+c2V0KG9iamVjdCwgZGF0YSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBXZSBhcmUgc2NhbGVkLCBidXQgd2UgcGFpbnRlZCBh
bHJlYWR5IGF0IHRoaXMgc2l6ZSwgc28ganVzdCBrZWVwIHVzaW5nIHdoYXRldmVyIG1vZGUgd2Ug
bGFzdCBwYWludGVkIHdpdGguCisgICAgaWYgKCFjb250ZXh0SXNTY2FsZWQgJiYgZGF0YS0+c2l6
ZSgpID09IHNpemUpCisgICAgICAgIHJldHVybiBkYXRhLT51c2VMb3dRdWFsaXR5U2NhbGUoKTsK
KworICAgIC8vIFdlIGhhdmUgZGF0YSBhbmQgb3VyIHNpemUganVzdCBjaGFuZ2VkLiAgSWYgdGhp
cyBjaGFuZ2UgaGFwcGVuZWQgcXVpY2tseSwgZ28gaW50byBsb3cgcXVhbGl0eSBtb2RlIGFuZCB0
aGVuIHNldCBhIHJlcGFpbnQKKyAgICAvLyB0aW1lciB0byBwYWludCBpbiBoaWdoIHF1YWxpdHkg
bW9kZS4gIE90aGVyd2lzZSBpdCBpcyBvayB0byBqdXN0IHBhaW50IGluIGhpZ2ggcXVhbGl0eSBt
b2RlLgorICAgIGRvdWJsZSBuZXdUaW1lID0gY3VycmVudFRpbWUoKTsKKyAgICBkYXRhLT5zZXRV
c2VMb3dRdWFsaXR5U2NhbGUobmV3VGltZSAtIGRhdGEtPnRpbWUoKSA8IGNMb3dRdWFsaXR5VGlt
ZVRocmVzaG9sZCk7CisgICAgZGF0YS0+c2V0VGltZShuZXdUaW1lKTsKKyAgICBkYXRhLT5zZXRT
aXplKHNpemUpOworICAgIHJldHVybiBkYXRhLT51c2VMb3dRdWFsaXR5U2NhbGUoKTsKK30KKwor
SGFzaE1hcDxSZW5kZXJCb3hNb2RlbE9iamVjdCosIFJlbmRlckJveE1vZGVsU2NhbGVEYXRhKj4q
IFJlbmRlckJveE1vZGVsU2NhbGVPYnNlcnZlcjo6Z0JveE1vZGVsT2JqZWN0cyA9IDA7CisKK3Zv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmhpZ2hRdWFsaXR5UmVwYWludFRpbWVyRmlyZWQoVGlt
ZXI8UmVuZGVyQm94TW9kZWxPYmplY3Q+KikKK3sKKyAgICBSZW5kZXJCb3hNb2RlbFNjYWxlT2Jz
ZXJ2ZXI6OmhpZ2hRdWFsaXR5UmVwYWludFRpbWVyRmlyZWQodGhpcyk7Cit9CisKIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpSZW5kZXJCb3hNb2RlbE9iamVjdChOb2RlKiBub2RlKQogICAgIDogUmVu
ZGVyT2JqZWN0KG5vZGUpCiAgICAgLCBtX2xheWVyKDApCkBAIC01NSw2ICsxODMsNyBAQCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6flJlbmRlckJveE1vZGVsT2JqZWN0KCkKICAgICAvLyBPdXIgbGF5
ZXIgc2hvdWxkIGhhdmUgYmVlbiBkZXN0cm95ZWQgYW5kIGNsZWFyZWQgYnkgbm93CiAgICAgQVNT
RVJUKCFoYXNMYXllcigpKTsKICAgICBBU1NFUlQoIW1fbGF5ZXIpOworICAgIFJlbmRlckJveE1v
ZGVsU2NhbGVPYnNlcnZlcjo6Ym94TW9kZWxPYmplY3REZXN0cm95ZWQodGhpcyk7CiB9CiAKIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcigpCkBAIC0zMDcsNiArNDM2LDkg
QEAgaW50IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nUmlnaHQoYm9vbCkgY29uc3QKIHZv
aWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGJnTGF5
ZXIsIGludCB0eCwgaW50IHR5LCBpbnQgdywgaW50IGgsIElubGluZUZsb3dCb3gqIGJveCwgQ29t
cG9zaXRlT3BlcmF0b3Igb3AsIFJlbmRlck9iamVjdCogYmFja2dyb3VuZE9iamVjdCkKIHsKICAg
ICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAgICBpZiAo
Y29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKICAgICBib29s
IGluY2x1ZGVMZWZ0RWRnZSA9IGJveCA/IGJveC0+aW5jbHVkZUxlZnRFZGdlKCkgOiB0cnVlOwog
ICAgIGJvb2wgaW5jbHVkZVJpZ2h0RWRnZSA9IGJveCA/IGJveC0+aW5jbHVkZVJpZ2h0RWRnZSgp
IDogdHJ1ZTsKICAgICBpbnQgYkxlZnQgPSBpbmNsdWRlTGVmdEVkZ2UgPyBib3JkZXJMZWZ0KCkg
OiAwOwpAQCAtNDY0LDcgKzU5Niw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50
RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAg
ICAgICBwaGFzZSArPSBkZXN0UmVjdC5sb2NhdGlvbigpIC0gZGVzdE9yaWdpbjsKICAgICAgICAg
ICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wID0gb3AgPT0gQ29tcG9zaXRlU291cmNl
T3ZlciA/IGJnTGF5ZXItPmNvbXBvc2l0ZSgpIDogb3A7CiAgICAgICAgICAgICBSZW5kZXJPYmpl
Y3QqIGNsaWVudEZvckJhY2tncm91bmRJbWFnZSA9IGJhY2tncm91bmRPYmplY3QgPyBiYWNrZ3Jv
dW5kT2JqZWN0IDogdGhpczsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdUaWxlZEltYWdlKGJn
LT5pbWFnZShjbGllbnRGb3JCYWNrZ3JvdW5kSW1hZ2UsIHRpbGVTaXplKSwgc3R5bGUoKS0+Y29s
b3JTcGFjZSgpLCBkZXN0UmVjdCwgcGhhc2UsIHRpbGVTaXplLCBjb21wb3NpdGVPcCk7CisgICAg
ICAgICAgICBJbWFnZSogaW1hZ2UgPSBiZy0+aW1hZ2UoY2xpZW50Rm9yQmFja2dyb3VuZEltYWdl
LCB0aWxlU2l6ZSk7CisgICAgICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gUmVu
ZGVyQm94TW9kZWxTY2FsZU9ic2VydmVyOjpzaG91bGRQYWludEJhY2tncm91bmRBdExvd1F1YWxp
dHkoY29udGV4dCwgdGhpcywgaW1hZ2UsIGRlc3RSZWN0LnNpemUoKSk7CisgICAgICAgICAgICBj
b250ZXh0LT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBkZXN0
UmVjdCwgcGhhc2UsIHRpbGVTaXplLCBjb21wb3NpdGVPcCwgdXNlTG93UXVhbGl0eVNjYWxpbmcp
OwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuaAppbmRleCBmYWU4NjZjLi5kYjc1MzhkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmgKQEAgLTk4LDYgKzk4LDggQEAgcHVibGljOgogICAgIC8vIENhbGxlZCBi
eSBSZW5kZXJPYmplY3Q6OmRlc3Ryb3koKSAoYW5kIFJlbmRlcldpZGdldDo6ZGVzdHJveSgpKSBh
bmQgaXMgdGhlIG9ubHkgd2F5IGxheWVycyBzaG91bGQgZXZlciBiZSBkZXN0cm95ZWQKICAgICB2
b2lkIGRlc3Ryb3lMYXllcigpOwogCisgICAgdm9pZCBoaWdoUXVhbGl0eVJlcGFpbnRUaW1lckZp
cmVkKFRpbWVyPFJlbmRlckJveE1vZGVsT2JqZWN0PiopOworCiBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShjb25zdCBGaWxsTGF5ZXIqLCBpbnQg
dHgsIGludCB0eSwgaW50IHcsIGludCBoLCBJbnRSZWN0JiBkZXN0UmVjdCwgSW50UG9pbnQmIHBo
YXNlLCBJbnRTaXplJiB0aWxlU2l6ZSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>47638</attachid>
            <date>2010-01-28 11:16:47 -0800</date>
            <delta_ts>2010-01-28 11:24:55 -0800</delta_ts>
            <desc>Pixel output diff after this patch.</desc>
            <filename>backgroundSize16-diffs.png 800×600 pixels.fileloc</filename>
            <type>application/octet-stream</type>
            <size>133</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">YnBsaXN0MDDRAQJTVVJMXxBQZmlsZTovLy90bXAvbGF5b3V0LXRlc3QtcmVzdWx0cy9mYXN0L2Jh
Y2tncm91bmRzL3NpemUvYmFja2dyb3VuZFNpemUxNi1kaWZmcy5wbmcICw8AAAAAAAABAQAAAAAA
AAADAAAAAAAAAAAAAAAAAAAAYg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>47639</attachid>
            <date>2010-01-28 11:29:04 -0800</date>
            <delta_ts>2010-01-28 11:29:04 -0800</delta_ts>
            <desc>fast/backgrounds/backgroundSize16 pixel diff after the patch.</desc>
            <filename>backgroundSize16-diffs.png</filename>
            <type>image/png</type>
            <size>26443</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">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
l8wULzvzqXjqSJ/lK3f+8JfOfKpjJqcyU0PWRK+3F01OnlrHuKXlXPWem6cOZCtD8/WI5autK5+Z
Yho3kvw5mCnuYV4xDKHqQL9X+maU/4ebOSWzTNKvp3Nf3lM/d+rXSab2Jl7/Fs1Tlk3t5KN8Nl/U
caeJ45AoNDhvepkrWHM/V+YvgAn7TeyfTj0s5CFZw3Hn886rQ/aP8jXcxyFM5Op45+ngLMJcXvVD
BtdVnnP68PpL4p5oSz99WvodbOXZ3w7b7rMZDr5y2HzjngcHe/Psb+Pu37MtyCuigCggCogCooAo
IAqIAqKAKCAKiAKigCggCogCosDnQYFxM17jZu7GnW/c9RrLQPjub+KevY9p608WiRu914Tqkt1i
94/HU60M12I99boydwv4KiaAGYva5HV3wttyTP4+i152K9gH8FD5Qli134YEsdf3MGMR/awk6kC9
kR95suxbzQc4YM3J1xCDFdxPD9RTv5t321hXNO9ZWIQ/smyef3yzOrR33HSlgDYrXv1CmcrD5KN5
+pQMI37NExLo1cUuPRnx18+8ZKK7YCoqBPKxm14lLtRjRkUZMh+7AMYw86djQYND5gObx62QomxY
SvoAK+79PoBmlVjEEFbSMnKPsuTu/8/YN+33W4RfIGBi/w6yWsSyz7KXDUW9YUwl2sXSMP+4wa8D
O68/zrbrZyqxGDE4H42bW+Hsncw3svzIe4B5KpHrDKJVuvmRVutfYrgFm6rQeAPuJXadylOpD/xK
PnaZ7yHfw6EPoGdPPmy+K+7Fn/1+Xml3web5fQCJRfSzkrYOmN69wJeLcwKxbyb9ErdygnqoG+up
iRrwnjug6zO/mMZ/SxDX8DGQsIwkhs9XL+oA9R55/QzhfbCAVfyKYfOyrgYylaH5rM5Ynv2CZ3yx
k5v7Sq2/4D2FPKWoawe5ZOZ+gAFZjSN+5OJq9S8hzJqaYY/R5hJ87LAkey5OWcbQsoNg0NZi/prj
cPkCWDXyUSQ2z8cOWhbRz0pmdSivz6PK2LduqTDH62fmqt8knQuKN42Go8YPVMvM+Xz74pct6+et
Fwzf93WSfM/D8KFecw3jpkyBI9+IIQ1jKgPzDXXOY5kgsyEOPpRdvVbgryUwQ5ks+96KbuGiKfMB
LO97+ekfdaVI7Bb5v63y7Bv52BUBAdUqnriMudP1t7n14GD4DpOvz6q5j73IB18X62fIsm+WHaTV
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
MWv4yK/+fP19hXzuLzC0qqyw8NYWAAAG7klEQVSb2s00udhOuHztl9Huwvwd5EtNwdksEJvSulq+
+Y5Kmk0Ns3anTiV19cSS+fP16zH6564jVYto9y21ZeuAh6ljS8ql/Kmqukj14kkr7nah31x38WLa
wGfwhEHWFv4KOSrr6fs4WLmzOXojLx9eAc8O0r7aiuPCV3Bt0NSAe535k6vEovWZNY6py/+glT8H
9g6snCq3nfn6TCK+a+iWOeaP2LuWATvW1RWOReszcMTeVUzZzba1k7jQxX5rNB5GxNSh4mto95vE
TFKcc6qmW92kVQCrSWzgkvsSsA391Or7xMCVorPX3bpc/a4yZ64jHxi92rozTt4YlwJDotCV8JCs
nJfN+vXJ1yWzyn/7ersmDWTgXEMqr49VgcEnc+cHx35rv2lxA5H/rXUJbXcQJ/+KAqKAKCAKiAKi
gCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKA
KCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAo
IAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCgg
CogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAK
iAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqI
AqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogC
ooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKi
gCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKA
KCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAo
IAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCgg
CogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAK
iAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqI
AqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogC
ooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKi
gCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCogCooAoIAqIAqKA
KCAKiAKigCggCogCooAoIAqIAqKAKCAKiAKigCggCvx/7dCxAAAAAMAgf+udkyiEDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw
YMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMG
DBgwYMCAAQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgw8EAz69CHnD7ZAQAAAABJRU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47800</attachid>
            <date>2010-01-31 14:51:43 -0800</date>
            <delta_ts>2010-01-31 14:58:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-33808-20100131145142.patch</filename>
            <type>text/plain</type>
            <size>17133</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNGEyOWM2Li41ZDlmN2ZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDEt
MzEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbmltYXRlZCBzY2FsaW5nIG9mIGJhY2tncm91
bmQtaW1hZ2UgaXMgdG9vIHNsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMzODA4CisKKyAgICAgICAgVXBkYXRlIGNoZWNrc3VtLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2Zhc3QvYmFja2dyb3VuZHMvc2l6ZS9iYWNrZ3JvdW5kU2l6ZTE2LWV4
cGVjdGVkLmNoZWNrc3VtOgorCiAyMDEwLTAxLTMwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmFja2dyb3VuZHMvc2l6ZS9i
YWNrZ3JvdW5kU2l6ZTE2LWV4cGVjdGVkLmNoZWNrc3VtIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvYmFja2dyb3VuZHMvc2l6ZS9iYWNrZ3JvdW5kU2l6ZTE2LWV4cGVjdGVkLmNoZWNr
c3VtCmluZGV4IDQ4ODM0OWUuLjIzZjQyY2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2JhY2tncm91bmRzL3NpemUvYmFja2dyb3VuZFNpemUxNi1leHBlY3RlZC5j
aGVja3N1bQorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9iYWNrZ3JvdW5kcy9z
aXplL2JhY2tncm91bmRTaXplMTYtZXhwZWN0ZWQuY2hlY2tzdW0KQEAgLTEgKzEgQEAKLTIyZjBk
ODE4YWEyNzdlOWIxZjQ0OWE0ZGFmYWNhMzVmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor
ZjUxNWY5OGUxZmJjYWZmNzQ0ZjY5NzMzODM2YjJiMGIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDUyYWM2OTIuLjg1MTc5ZjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTAtMDEtMzEgIE9saXZlciBI
dW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBbmltYXRlZCBzY2FsaW5nIG9mIGJhY2tncm91bmQtaW1hZ2UgaXMg
dG9vIHNsb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMzODA4CisKKyAgICAgICAgSW1wbGVtZW50IGEgdmVyc2lvbiBvZiB0aGUgUmVuZGVySW1hZ2Ug
YW5pbWF0ZWQgc2NhbGluZyBvcHRpbWlzYXRpb24KKyAgICAgICAgZm9yIGJhY2tncm91bmQgaW1h
Z2VzLiBEdWUgdG8gdGhlIHBvc3NpYmlsaXR5IG9mIGFyYml0cmFyeSB0cmFuc2Zvcm1zCisgICAg
ICAgIGJlaW5nIGFwcGxpZWQgdG8gY29udGFpbmluZyBlbGVtZW50cyB3ZSBleHBsaWNpdGx5IGNo
ZWNrIHRoZSBjdXJyZW50CisgICAgICAgIENUTSBvZiB0aGUgY29udGV4dCBmb3Igc2NhbGluZyBv
ciByb3RhdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6
CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNJZGVudGl0eU9yVHJh
bnNsYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbFNjYWxlRGF0YTo6UmVuZGVyQm94TW9k
ZWxTY2FsZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxTY2FsZURhdGE6
On5SZW5kZXJCb3hNb2RlbFNjYWxlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbFNjYWxlRGF0YTo6aGlxaFF1YWxpdHlSZXBhaW50VGltZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxTY2FsZURhdGE6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94TW9kZWxTY2FsZURhdGE6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94TW9kZWxTY2FsZURhdGE6Omxhc3RQYWludFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94TW9kZWxTY2FsZURhdGE6OnNldExhc3RQYWludFRpbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxTY2FsZURhdGE6OnVzZUxvd1F1YWxpdHlTY2FsZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbFNjYWxlRGF0YTo6dHJhbnNmb3JtKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsU2NhbGVEYXRhOjpzZXRUcmFuc2Zvcm0pOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxTY2FsZURhdGE6OnNldFVzZUxvd1F1YWxpdHlTY2Fs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbFNjYWxlT2JzZXJ2ZXI6OmJveE1v
ZGVsT2JqZWN0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsU2Nh
bGVPYnNlcnZlcjo6aGlnaFF1YWxpdHlSZXBhaW50VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3hNb2RlbFNjYWxlT2JzZXJ2ZXI6OnNob3VsZFBhaW50QmFja2dyb3VuZEF0
TG93UXVhbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6aGln
aFF1YWxpdHlSZXBhaW50VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6flJlbmRlckJveE1vZGVsT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKwogMjAxMC0wMS0zMSAgRGlyayBTY2h1
bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNl
ci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRl
eCA3ZTlmZmQ5Li4xNzYzOTExIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCkBAIC00MTEsMjQgKzQxMSwzNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0ltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNv
bnN0CiAgICAgICAgIHJlc3RvcmUoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdU
aWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFBvaW50JiBzcmNQb2ludCwgY29uc3QgSW50U2l6ZSYg
dGlsZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdUaWxlZEltYWdlKEltYWdlKiBpbWFnZSwgQ29sb3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IEludFBvaW50JiBzcmNQb2ludCwgY29uc3QgSW50U2l6
ZSYgdGlsZVNpemUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2Fs
ZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8ICFpbWFnZSkKICAgICAgICAgcmV0
dXJuOwotCisgICAgaWYgKHVzZUxvd1F1YWxpdHlTY2FsZSkgeworICAgICAgICBzYXZlKCk7Cisg
ICAgICAgIHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7Cisg
ICAgfQogICAgIGltYWdlLT5kcmF3VGlsZWQodGhpcywgcmVjdCwgc3JjUG9pbnQsIHRpbGVTaXpl
LCBzdHlsZUNvbG9yU3BhY2UsIG9wKTsKKyAgICBpZiAodXNlTG93UXVhbGl0eVNjYWxlKQorICAg
ICAgICByZXN0b3JlKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGlsZWRJbWFn
ZShJbWFnZSogaW1hZ2UsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0
JiBkZXN0LCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUsIElt
YWdlOjpUaWxlUnVsZSB2UnVsZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3ApCit2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UqIGltYWdlLCBDb2xvclNwYWNlIHN0eWxlQ29s
b3JTcGFjZSwgY29uc3QgSW50UmVjdCYgZGVzdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgSW1h
Z2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIENvbXBvc2l0ZU9wZXJh
dG9yIG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpIHx8ICFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKHVzZUxvd1F1YWxp
dHlTY2FsZSkgeworICAgICAgICBzYXZlKCk7CisgICAgICAgIHNldEltYWdlSW50ZXJwb2xhdGlv
blF1YWxpdHkoSW50ZXJwb2xhdGlvbkxvdyk7CisgICAgfQogICAgIGlmIChoUnVsZSA9PSBJbWFn
ZTo6U3RyZXRjaFRpbGUgJiYgdlJ1bGUgPT0gSW1hZ2U6OlN0cmV0Y2hUaWxlKQogICAgICAgICAv
LyBKdXN0IGRvIGEgc2NhbGUuCi0gICAgICAgIHJldHVybiBkcmF3SW1hZ2UoaW1hZ2UsIHN0eWxl
Q29sb3JTcGFjZSwgZGVzdCwgc3JjUmVjdCwgb3ApOwotCi0gICAgaW1hZ2UtPmRyYXdUaWxlZCh0
aGlzLCBkZXN0LCBzcmNSZWN0LCBoUnVsZSwgdlJ1bGUsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOwor
ICAgICAgICBkcmF3SW1hZ2UoaW1hZ2UsIHN0eWxlQ29sb3JTcGFjZSwgZGVzdCwgc3JjUmVjdCwg
b3ApOworICAgIGVsc2UKKyAgICAgICAgaW1hZ2UtPmRyYXdUaWxlZCh0aGlzLCBkZXN0LCBzcmNS
ZWN0LCBoUnVsZSwgdlJ1bGUsIHN0eWxlQ29sb3JTcGFjZSwgb3ApOworICAgIGlmICh1c2VMb3dR
dWFsaXR5U2NhbGUpCisgICAgICAgIHJlc3RvcmUoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmFkZFJvdW5kZWRSZWN0Q2xpcChjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRTaXpl
JiB0b3BMZWZ0LCBjb25zdCBJbnRTaXplJiB0b3BSaWdodCwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGVlOTYwMmYuLjAzYzcwNmUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtMjI2LDEwICsyMjYs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRyYXdJbWFnZShJbWFnZSos
IENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVy
LCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsKICAgICAgICAgdm9pZCBkcmF3VGls
ZWRJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgSW50UG9pbnQmIHNyY1BvaW50LCBjb25zdCBJbnRTaXplJiB0aWxl
U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3Np
dGVTb3VyY2VPdmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IGZhbHNlKTsK
ICAgICAgICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSosIENvbG9yU3BhY2Ugc3R5bGVDb2xv
clNwYWNlLCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZTo6VGlsZVJ1bGUgaFJ1bGUgPSBJbWFn
ZTo6U3RyZXRjaFRpbGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSA9IEltYWdlOjpTdHJldGNoVGls
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBv
c2l0ZVNvdXJjZU92ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2l0ZU9w
ZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUgPSBm
YWxzZSk7CiAKICAgICAgICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVy
cG9sYXRpb25RdWFsaXR5KTsKICAgICAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1hZ2VJbnRl
cnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmggYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAppbmRleCA5ZGQ1
MzhhLi45ZTcyNGQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtMzIzLDI3ICszMjMsMjcg
QEAgcHVibGljOgogICAgIG9wZXJhdG9yIFhGT1JNKCkgY29uc3Q7CiAjZW5kaWYKIAorICAgIGJv
b2wgaXNJZGVudGl0eU9yVHJhbnNsYXRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fbWF0cml4WzBdWzBdID09IDEgJiYgbV9tYXRyaXhbMF1bMV0gPT0gMCAmJiBtX21hdHJpeFsw
XVsyXSA9PSAwICYmIG1fbWF0cml4WzBdWzNdID09IDAKKyAgICAgICAgICAgICYmIG1fbWF0cml4
WzFdWzBdID09IDAgJiYgbV9tYXRyaXhbMV1bMV0gPT0gMSAmJiBtX21hdHJpeFsxXVsyXSA9PSAw
ICYmIG1fbWF0cml4WzFdWzNdID09IDAKKyAgICAgICAgICAgICYmIG1fbWF0cml4WzJdWzBdID09
IDAgJiYgbV9tYXRyaXhbMl1bMV0gPT0gMCAmJiBtX21hdHJpeFsyXVsyXSA9PSAxICYmIG1fbWF0
cml4WzJdWzNdID09IDAKKyAgICAgICAgICAgICYmIG1fbWF0cml4WzNdWzNdID09IDE7CisgICAg
fQorCiBwcml2YXRlOgogICAgIC8vIG11bHRpcGx5IHBhc3NlZCAyRCBwb2ludCBieSBtYXRyaXgg
KGFzc3VtZSB6PTApCiAgICAgdm9pZCBtdWx0VmVjTWF0cml4KGRvdWJsZSB4LCBkb3VibGUgeSwg
ZG91YmxlJiBkc3RYLCBkb3VibGUmIGRzdFkpIGNvbnN0OwotICAgIAorCiAgICAgLy8gbXVsdGlw
bHkgcGFzc2VkIDNEIHBvaW50IGJ5IG1hdHJpeAogICAgIHZvaWQgbXVsdFZlY01hdHJpeChkb3Vi
bGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUmIGRzdFgsIGRvdWJsZSYgZHN0WSwgZG91
YmxlJiBkc3RaKSBjb25zdDsKLSAgICAKKwogICAgIHZvaWQgc2V0TWF0cml4KGNvbnN0IE1hdHJp
eDQgbSkKICAgICB7CiAgICAgICAgIGlmIChtICYmIG0gIT0gbV9tYXRyaXgpCiAgICAgICAgICAg
ICBtZW1jcHkobV9tYXRyaXgsIG0sIHNpemVvZihNYXRyaXg0KSk7CiAgICAgfQotICAgIAotICAg
IGJvb2wgaXNJZGVudGl0eU9yVHJhbnNsYXRpb24oKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fbWF0cml4WzBdWzBdID09IDEgJiYgbV9tYXRyaXhbMF1bMV0gPT0gMCAmJiBtX21hdHJp
eFswXVsyXSA9PSAwICYmIG1fbWF0cml4WzBdWzNdID09IDAgJiYKLSAgICAgICAgICAgICAgIG1f
bWF0cml4WzFdWzBdID09IDAgJiYgbV9tYXRyaXhbMV1bMV0gPT0gMSAmJiBtX21hdHJpeFsxXVsy
XSA9PSAwICYmIG1fbWF0cml4WzFdWzNdID09IDAgJiYKLSAgICAgICAgICAgICAgIG1fbWF0cml4
WzJdWzBdID09IDAgJiYgbV9tYXRyaXhbMl1bMV0gPT0gMCAmJiBtX21hdHJpeFsyXVsyXSA9PSAx
ICYmIG1fbWF0cml4WzJdWzNdID09IDAgJiYKLSAgICAgICAgICAgICAgIG1fbWF0cml4WzNdWzNd
ID09IDE7Ci0gICAgfQotICAgIAorCiAgICAgTWF0cml4NCBtX21hdHJpeDsKIH07CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBhZjk0NTI0Li5mMmNk
OWJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVy
TGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTQ0LDYgKzQ1LDE0MCBAQCBib29s
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpzX3dhc0Zsb2F0aW5nID0gZmFsc2U7CiBib29sIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpzX2hhZExheWVyID0gZmFsc2U7CiBib29sIFJlbmRlckJveE1vZGVs
T2JqZWN0OjpzX2xheWVyV2FzU2VsZlBhaW50aW5nID0gZmFsc2U7CiAKK3N0YXRpYyBjb25zdCBk
b3VibGUgY0ludGVycG9sYXRpb25DdXRvZmYgPSA4MDAuICogODAwLjsKK3N0YXRpYyBjb25zdCBk
b3VibGUgY0xvd1F1YWxpdHlUaW1lVGhyZXNob2xkID0gMC41MDA7IC8vIDUwMCBtcworCitjbGFz
cyBSZW5kZXJCb3hNb2RlbFNjYWxlRGF0YSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6
CisgICAgUmVuZGVyQm94TW9kZWxTY2FsZURhdGEoUmVuZGVyQm94TW9kZWxPYmplY3QqIG9iamVj
dCwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSwgZG91YmxlIHRpbWUsIGJvb2wgbG93UXVhbGl0eVNjYWxlKQorICAgICAgICA6IG1fc2l6
ZShzaXplKQorICAgICAgICAsIG1fdHJhbnNmb3JtKHRyYW5zZm9ybSkKKyAgICAgICAgLCBtX2xh
c3RQYWludFRpbWUodGltZSkKKyAgICAgICAgLCBtX2xvd1F1YWxpdHlTY2FsZShsb3dRdWFsaXR5
U2NhbGUpCisgICAgICAgICwgbV9oaWdoUXVhbGl0eVJlcGFpbnRUaW1lcihvYmplY3QsICZSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6aGlnaFF1YWxpdHlSZXBhaW50VGltZXJGaXJlZCkKKyAgICB7Cisg
ICAgfQorCisgICAgflJlbmRlckJveE1vZGVsU2NhbGVEYXRhKCkKKyAgICB7CisgICAgICAgIG1f
aGlnaFF1YWxpdHlSZXBhaW50VGltZXIuc3RvcCgpOworICAgIH0KKworICAgIFRpbWVyPFJlbmRl
ckJveE1vZGVsT2JqZWN0PiYgaGlxaFF1YWxpdHlSZXBhaW50VGltZXIoKSB7IHJldHVybiBtX2hp
Z2hRdWFsaXR5UmVwYWludFRpbWVyOyB9CisKKyAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9CisgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmIHMp
IHsgbV9zaXplID0gczsgfQorICAgIGRvdWJsZSBsYXN0UGFpbnRUaW1lKCkgY29uc3QgeyByZXR1
cm4gbV9sYXN0UGFpbnRUaW1lOyB9CisgICAgdm9pZCBzZXRMYXN0UGFpbnRUaW1lKGRvdWJsZSB0
KSB7IG1fbGFzdFBhaW50VGltZSA9IHQ7IH0KKyAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbG93UXVhbGl0eVNjYWxlOyB9CisgICAgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9Cisg
ICAgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSkgeyBtX3RyYW5zZm9ybSA9IHRyYW5zZm9ybTsgfQorICAgIHZvaWQgc2V0VXNlTG93UXVhbGl0
eVNjYWxlKGJvb2wgYikKKyAgICB7CisgICAgICAgIG1faGlnaFF1YWxpdHlSZXBhaW50VGltZXIu
c3RvcCgpOworICAgICAgICBtX2xvd1F1YWxpdHlTY2FsZSA9IGI7CisgICAgICAgIGlmIChiKQor
ICAgICAgICAgICAgbV9oaWdoUXVhbGl0eVJlcGFpbnRUaW1lci5zdGFydE9uZVNob3QoY0xvd1F1
YWxpdHlUaW1lVGhyZXNob2xkKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSW50U2l6ZSBtX3Np
emU7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV90cmFuc2Zvcm07CisgICAgZG91YmxlIG1f
bGFzdFBhaW50VGltZTsKKyAgICBib29sIG1fbG93UXVhbGl0eVNjYWxlOworICAgIFRpbWVyPFJl
bmRlckJveE1vZGVsT2JqZWN0PiBtX2hpZ2hRdWFsaXR5UmVwYWludFRpbWVyOworfTsKKworY2xh
c3MgUmVuZGVyQm94TW9kZWxTY2FsZU9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9v
bCBzaG91bGRQYWludEJhY2tncm91bmRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiwgUmVu
ZGVyQm94TW9kZWxPYmplY3QqLCBJbWFnZSosIGNvbnN0IEludFNpemUmKTsKKworICAgIHN0YXRp
YyB2b2lkIGJveE1vZGVsT2JqZWN0RGVzdHJveWVkKFJlbmRlckJveE1vZGVsT2JqZWN0KiBvYmpl
Y3QpCisgICAgeworICAgICAgICBpZiAoZ0JveE1vZGVsT2JqZWN0cykgeworICAgICAgICAgICAg
UmVuZGVyQm94TW9kZWxTY2FsZURhdGEqIGRhdGEgPSBnQm94TW9kZWxPYmplY3RzLT50YWtlKG9i
amVjdCk7CisgICAgICAgICAgICBkZWxldGUgZGF0YTsKKyAgICAgICAgICAgIGlmICghZ0JveE1v
ZGVsT2JqZWN0cy0+c2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgZGVsZXRlIGdCb3hNb2RlbE9i
amVjdHM7CisgICAgICAgICAgICAgICAgZ0JveE1vZGVsT2JqZWN0cyA9IDA7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBoaWdoUXVhbGl0eVJlcGFp
bnRUaW1lckZpcmVkKFJlbmRlckJveE1vZGVsT2JqZWN0KiBvYmplY3QpCisgICAgeworICAgICAg
ICBSZW5kZXJCb3hNb2RlbFNjYWxlT2JzZXJ2ZXI6OmJveE1vZGVsT2JqZWN0RGVzdHJveWVkKG9i
amVjdCk7CisgICAgICAgIG9iamVjdC0+cmVwYWludCgpOworICAgIH0KKworICAgIHN0YXRpYyBI
YXNoTWFwPFJlbmRlckJveE1vZGVsT2JqZWN0KiwgUmVuZGVyQm94TW9kZWxTY2FsZURhdGEqPiog
Z0JveE1vZGVsT2JqZWN0czsKK307CisKK2Jvb2wgUmVuZGVyQm94TW9kZWxTY2FsZU9ic2VydmVy
OjpzaG91bGRQYWludEJhY2tncm91bmRBdExvd1F1YWxpdHkoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogb2JqZWN0LCBJbWFnZSogaW1hZ2UsIGNvbnN0IElu
dFNpemUmIHNpemUpCit7CisgICAgLy8gSWYgdGhlIGltYWdlIGlzIG5vdCBhIGJpdG1hcCBpbWFn
ZSwgdGhlbiBub25lIG9mIHRoaXMgaXMgcmVsZXZhbnQgYW5kIHdlIGp1c3QgcGFpbnQgYXQgaGln
aAorICAgIC8vIHF1YWxpdHkuCisgICAgaWYgKCFpbWFnZS0+aXNCaXRtYXBJbWFnZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBNYWtlIHN1cmUgdG8gdXNlIHRoZSB1bnpvb21l
ZCBpbWFnZSBzaXplLCBzaW5jZSBpZiBhIGZ1bGwgcGFnZSB6b29tIGlzIGluIGVmZmVjdCwgdGhl
IGltYWdlCisgICAgLy8gaXMgYWN0dWFsbHkgYmVpbmcgc2NhbGVkLgorICAgIEludFNpemUgaW1h
Z2VTaXplKGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCkpOworCisgICAgLy8gTG9vayBv
dXJzZWx2ZXMgdXAgaW4gdGhlIGhhc2h0YWJsZS4KKyAgICBSZW5kZXJCb3hNb2RlbFNjYWxlRGF0
YSogZGF0YSA9IDA7CisgICAgaWYgKGdCb3hNb2RlbE9iamVjdHMpCisgICAgICAgIGRhdGEgPSBn
Qm94TW9kZWxPYmplY3RzLT5nZXQob2JqZWN0KTsKKworICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBjdXJyZW50VHJhbnNmb3JtID0gY29udGV4dC0+Z2V0Q1RNKCk7CisgICAgYm9vbCBj
b250ZXh0SXNTY2FsZWQgPSAhY3VycmVudFRyYW5zZm9ybS5pc0lkZW50aXR5T3JUcmFuc2xhdGlv
bigpOworICAgIGlmICghY29udGV4dElzU2NhbGVkICYmIGltYWdlU2l6ZSA9PSBzaXplKSB7Cisg
ICAgICAgIC8vIFRoZXJlIGlzIG5vIHNjYWxlIGluIGVmZmVjdC4gIElmIHdlIGhhZCBhIHNjYWxl
IGluIGVmZmVjdCBiZWZvcmUsIHdlIGNhbiBqdXN0IGRlbGV0ZSB0aGlzIGRhdGEuCisgICAgICAg
IGlmIChkYXRhKSB7CisgICAgICAgICAgICBnQm94TW9kZWxPYmplY3RzLT5yZW1vdmUob2JqZWN0
KTsKKyAgICAgICAgICAgIGRlbGV0ZSBkYXRhOworICAgICAgICB9CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICAvLyBUaGVyZSBpcyBubyBuZWVkIHRvIGhhc2ggc2NhbGVkIGlt
YWdlcyB0aGF0IGFsd2F5cyB1c2UgbG93IHF1YWxpdHkgbW9kZSB3aGVuIHRoZSBwYWdlIGRlbWFu
ZHMgaXQuICBUaGlzIGlzIHRoZSBpQ2hhdCBjYXNlLgorICAgIGlmIChvYmplY3QtPmRvY3VtZW50
KCktPnBhZ2UoKS0+aW5Mb3dRdWFsaXR5SW1hZ2VJbnRlcnBvbGF0aW9uTW9kZSgpKSB7CisgICAg
ICAgIGRvdWJsZSB0b3RhbFBpeGVscyA9IHN0YXRpY19jYXN0PGRvdWJsZT4oaW1hZ2UtPndpZHRo
KCkpICogc3RhdGljX2Nhc3Q8ZG91YmxlPihpbWFnZS0+aGVpZ2h0KCkpOworICAgICAgICBpZiAo
dG90YWxQaXhlbHMgPiBjSW50ZXJwb2xhdGlvbkN1dG9mZikKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIC8vIElmIHRoZXJlIGlzIG5vIGRhdGEgeWV0LCB3ZSB3aWxsIHBh
aW50IHRoZSBmaXJzdCBzY2FsZSBhdCBoaWdoIHF1YWxpdHkgYW5kIHJlY29yZCB0aGUgcGFpbnQg
dGltZSBpbiBjYXNlIGEgc2Vjb25kIHNjYWxlIGhhcHBlbnMKKyAgICAvLyB2ZXJ5IHNvb24uCisg
ICAgaWYgKCFkYXRhKSB7CisgICAgICAgIGRhdGEgPSBuZXcgUmVuZGVyQm94TW9kZWxTY2FsZURh
dGEob2JqZWN0LCBzaXplLCBjdXJyZW50VHJhbnNmb3JtLCBjdXJyZW50VGltZSgpLCBmYWxzZSk7
CisgICAgICAgIGlmICghZ0JveE1vZGVsT2JqZWN0cykKKyAgICAgICAgICAgIGdCb3hNb2RlbE9i
amVjdHMgPSBuZXcgSGFzaE1hcDxSZW5kZXJCb3hNb2RlbE9iamVjdCosIFJlbmRlckJveE1vZGVs
U2NhbGVEYXRhKj47CisgICAgICAgIGdCb3hNb2RlbE9iamVjdHMtPnNldChvYmplY3QsIGRhdGEp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gV2UgYXJlIHNjYWxlZCwg
YnV0IHdlIHBhaW50ZWQgYWxyZWFkeSBhdCB0aGlzIHNpemUsIHNvIGp1c3Qga2VlcCB1c2luZyB3
aGF0ZXZlciBtb2RlIHdlIGxhc3QgcGFpbnRlZCB3aXRoLgorICAgIGlmICgoIWNvbnRleHRJc1Nj
YWxlZCB8fCBkYXRhLT50cmFuc2Zvcm0oKSA9PSBjdXJyZW50VHJhbnNmb3JtKSAmJiBkYXRhLT5z
aXplKCkgPT0gc2l6ZSkKKyAgICAgICAgcmV0dXJuIGRhdGEtPnVzZUxvd1F1YWxpdHlTY2FsZSgp
OworCisgICAgLy8gV2UgaGF2ZSBkYXRhIGFuZCBvdXIgc2l6ZSBqdXN0IGNoYW5nZWQuICBJZiB0
aGlzIGNoYW5nZSBoYXBwZW5lZCBxdWlja2x5LCBnbyBpbnRvIGxvdyBxdWFsaXR5IG1vZGUgYW5k
IHRoZW4gc2V0IGEgcmVwYWludAorICAgIC8vIHRpbWVyIHRvIHBhaW50IGluIGhpZ2ggcXVhbGl0
eSBtb2RlLiAgT3RoZXJ3aXNlIGl0IGlzIG9rIHRvIGp1c3QgcGFpbnQgaW4gaGlnaCBxdWFsaXR5
IG1vZGUuCisgICAgZG91YmxlIG5ld1RpbWUgPSBjdXJyZW50VGltZSgpOworICAgIGRhdGEtPnNl
dFVzZUxvd1F1YWxpdHlTY2FsZShuZXdUaW1lIC0gZGF0YS0+bGFzdFBhaW50VGltZSgpIDwgY0xv
d1F1YWxpdHlUaW1lVGhyZXNob2xkKTsKKyAgICBkYXRhLT5zZXRMYXN0UGFpbnRUaW1lKG5ld1Rp
bWUpOworICAgIGRhdGEtPnNldFRyYW5zZm9ybShjdXJyZW50VHJhbnNmb3JtKTsKKyAgICBkYXRh
LT5zZXRTaXplKHNpemUpOworICAgIHJldHVybiBkYXRhLT51c2VMb3dRdWFsaXR5U2NhbGUoKTsK
K30KKworSGFzaE1hcDxSZW5kZXJCb3hNb2RlbE9iamVjdCosIFJlbmRlckJveE1vZGVsU2NhbGVE
YXRhKj4qIFJlbmRlckJveE1vZGVsU2NhbGVPYnNlcnZlcjo6Z0JveE1vZGVsT2JqZWN0cyA9IDA7
CisKK3ZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmhpZ2hRdWFsaXR5UmVwYWludFRpbWVyRmly
ZWQoVGltZXI8UmVuZGVyQm94TW9kZWxPYmplY3Q+KikKK3sKKyAgICBSZW5kZXJCb3hNb2RlbFNj
YWxlT2JzZXJ2ZXI6OmhpZ2hRdWFsaXR5UmVwYWludFRpbWVyRmlyZWQodGhpcyk7Cit9CisKIFJl
bmRlckJveE1vZGVsT2JqZWN0OjpSZW5kZXJCb3hNb2RlbE9iamVjdChOb2RlKiBub2RlKQogICAg
IDogUmVuZGVyT2JqZWN0KG5vZGUpCiAgICAgLCBtX2xheWVyKDApCkBAIC01NSw2ICsxOTAsNyBA
QCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6flJlbmRlckJveE1vZGVsT2JqZWN0KCkKICAgICAvLyBP
dXIgbGF5ZXIgc2hvdWxkIGhhdmUgYmVlbiBkZXN0cm95ZWQgYW5kIGNsZWFyZWQgYnkgbm93CiAg
ICAgQVNTRVJUKCFoYXNMYXllcigpKTsKICAgICBBU1NFUlQoIW1fbGF5ZXIpOworICAgIFJlbmRl
ckJveE1vZGVsU2NhbGVPYnNlcnZlcjo6Ym94TW9kZWxPYmplY3REZXN0cm95ZWQodGhpcyk7CiB9
CiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmRlc3Ryb3lMYXllcigpCkBAIC0zMDcsNiAr
NDQzLDkgQEAgaW50IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nUmlnaHQoYm9vbCkgY29u
c3QKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29u
c3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIq
IGJnTGF5ZXIsIGludCB0eCwgaW50IHR5LCBpbnQgdywgaW50IGgsIElubGluZUZsb3dCb3gqIGJv
eCwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFJlbmRlck9iamVjdCogYmFja2dyb3VuZE9iamVjdCkK
IHsKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsKKyAg
ICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKICAg
ICBib29sIGluY2x1ZGVMZWZ0RWRnZSA9IGJveCA/IGJveC0+aW5jbHVkZUxlZnRFZGdlKCkgOiB0
cnVlOwogICAgIGJvb2wgaW5jbHVkZVJpZ2h0RWRnZSA9IGJveCA/IGJveC0+aW5jbHVkZVJpZ2h0
RWRnZSgpIDogdHJ1ZTsKICAgICBpbnQgYkxlZnQgPSBpbmNsdWRlTGVmdEVkZ2UgPyBib3JkZXJM
ZWZ0KCkgOiAwOwpAQCAtNDY0LDcgKzYwMyw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAg
ICAgICAgICAgICBwaGFzZSArPSBkZXN0UmVjdC5sb2NhdGlvbigpIC0gZGVzdE9yaWdpbjsKICAg
ICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wID0gb3AgPT0gQ29tcG9zaXRl
U291cmNlT3ZlciA/IGJnTGF5ZXItPmNvbXBvc2l0ZSgpIDogb3A7CiAgICAgICAgICAgICBSZW5k
ZXJPYmplY3QqIGNsaWVudEZvckJhY2tncm91bmRJbWFnZSA9IGJhY2tncm91bmRPYmplY3QgPyBi
YWNrZ3JvdW5kT2JqZWN0IDogdGhpczsKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdUaWxlZElt
YWdlKGJnLT5pbWFnZShjbGllbnRGb3JCYWNrZ3JvdW5kSW1hZ2UsIHRpbGVTaXplKSwgc3R5bGUo
KS0+Y29sb3JTcGFjZSgpLCBkZXN0UmVjdCwgcGhhc2UsIHRpbGVTaXplLCBjb21wb3NpdGVPcCk7
CisgICAgICAgICAgICBJbWFnZSogaW1hZ2UgPSBiZy0+aW1hZ2UoY2xpZW50Rm9yQmFja2dyb3Vu
ZEltYWdlLCB0aWxlU2l6ZSk7CisgICAgICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5n
ID0gUmVuZGVyQm94TW9kZWxTY2FsZU9ic2VydmVyOjpzaG91bGRQYWludEJhY2tncm91bmRBdExv
d1F1YWxpdHkoY29udGV4dCwgdGhpcywgaW1hZ2UsIGRlc3RSZWN0LnNpemUoKSk7CisgICAgICAg
ICAgICBjb250ZXh0LT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgp
LCBkZXN0UmVjdCwgcGhhc2UsIHRpbGVTaXplLCBjb21wb3NpdGVPcCwgdXNlTG93UXVhbGl0eVNj
YWxpbmcpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuaAppbmRleCBmYWU4NjZjLi5kYjc1MzhkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTk4LDYgKzk4LDggQEAgcHVibGljOgogICAgIC8vIENh
bGxlZCBieSBSZW5kZXJPYmplY3Q6OmRlc3Ryb3koKSAoYW5kIFJlbmRlcldpZGdldDo6ZGVzdHJv
eSgpKSBhbmQgaXMgdGhlIG9ubHkgd2F5IGxheWVycyBzaG91bGQgZXZlciBiZSBkZXN0cm95ZWQK
ICAgICB2b2lkIGRlc3Ryb3lMYXllcigpOwogCisgICAgdm9pZCBoaWdoUXVhbGl0eVJlcGFpbnRU
aW1lckZpcmVkKFRpbWVyPFJlbmRlckJveE1vZGVsT2JqZWN0PiopOworCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShjb25zdCBGaWxsTGF5ZXIq
LCBpbnQgdHgsIGludCB0eSwgaW50IHcsIGludCBoLCBJbnRSZWN0JiBkZXN0UmVjdCwgSW50UG9p
bnQmIHBoYXNlLCBJbnRTaXplJiB0aWxlU2l6ZSk7CiAK
</data>
<flag name="review"
          id="30337"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>