<?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>40793</bug_id>
          
          <creation_ts>2010-06-17 11:53:06 -0700</creation_ts>
          <short_desc>[Cairo] The size of the shadow image uses the standard deviation size instead of the blur radius</short_desc>
          <delta_ts>2010-08-19 04:01:00 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>41605</dependson>
          <blocked>39582</blocked>
    
    <blocked>42081</blocked>
    
    <blocked>43962</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alejandro G. Castro">alex</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>krit</cc>
    
    <cc>mihnea</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>239509</commentid>
    <comment_count>0</comment_count>
      <attachid>59024</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-06-17 11:53:06 -0700</bug_when>
    <thetext>Created attachment 59024
Test example

I&apos;ve attached an html file where it is easy to check the problem that it causes, it clips the shadows. It is also a problem for the bug where we are trying to do tiling in order to create the shadow because we need the size of the kernel in order to get the minimum size of a rectangle (bug 39582)
39582
After talking to krit an hixie I have also uploaded a bug to the HTML5 standard to avoid misinterpretations of the sentence describing the shadowBlur: http://www.w3.org/Bugs/Public/show_bug.cgi?id=9942</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239512</commentid>
    <comment_count>1</comment_count>
      <attachid>59026</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-06-17 11:56:27 -0700</bug_when>
    <thetext>Created attachment 59026
Initial patch proposal

This is an initial example of what we can do, the other option would be to create the filters in before calling the GraphicContext functions. Open to comments :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245515</commentid>
    <comment_count>2</comment_count>
      <attachid>60279</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-07-01 13:23:41 -0700</bug_when>
    <thetext>Created attachment 60279
Proposed patch

This is a first final proposal, I checked the visual result of other browsers.


            The kernelSize variable was renamed to radius and recalculated
            considering the CSS3 specification
            http://www.w3.org/TR/css3-background/#the-box-shadow, and the
            visual result of other browsers. The HTML5 canvas shadow standard
            deviation calculation that was used, was not appropiate for the
            blur distance specified in the CSS3.

            Added also the recomendations of SVG regarding the kernel size
            calculation for the approximation of the gaussian
            blur. http://www.w3.org/TR/SVG/filters.html#feGaussianBlurElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245516</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-01 13:25:25 -0700</bug_when>
    <thetext>Attachment 60279 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/platform/graphics/filters/FEGaussianBlur.cpp:101:  Should have a space between // and comment  [whitespace/comments] [4]
WebCore/platform/graphics/filters/FEGaussianBlur.cpp:104:  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/filters/FEGaussianBlur.cpp:113:  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/filters/FEGaussianBlur.cpp:119:  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/filters/FEGaussianBlur.cpp:121:  One line control clauses should not use braces.  [whitespace/braces] [4]
WebCore/platform/graphics/filters/FEGaussianBlur.cpp:126:  GAUSSIAN_KERNEL_FACTOR is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
WebCore/platform/graphics/filters/FEGaussianBlur.cpp:182:  Missing spaces around /  [whitespace/operators] [3]
WebCore/platform/graphics/filters/FEGaussianBlur.cpp:183:  Missing spaces around /  [whitespace/operators] [3]
Total errors found: 8 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245593</commentid>
    <comment_count>4</comment_count>
      <attachid>60298</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-07-01 15:31:06 -0700</bug_when>
    <thetext>Created attachment 60298
Proposed patch

Fixed style issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245778</commentid>
    <comment_count>5</comment_count>
      <attachid>60298</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-07-01 23:33:09 -0700</bug_when>
    <thetext>Comment on attachment 60298
Proposed patch

WebCore/platform/graphics/cairo/FontCairo.cpp:97
 +          float radius = 0.f;
Please use jut 0 without the .f at the end (according to the change in the style guide)

WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:180
 +      float radius = 0.f;
dito

WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:580
 +      float radius = 0.f;
dito

WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:871
 +      radius = std::min(1000.f, radius);
dito

WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:873
 +      FloatSize resolution = FloatSize(1.0f, 1.0f);
...(1, 1) Also, the resolution doesn&apos;t change here, add it to the funtion call directly

WebCore/platform/graphics/cairo/ImageCairo.cpp:143
 +          float radius = 0.f;
no .f

WebCore/platform/graphics/filters/FEGaussianBlur.cpp:99
 +  static void kernelPosition(int boxBlur, unsigned std, int&amp; dLeft, int&amp; dRight)
Either you use inline, or you add the function to the header. I bet that is the reason why Mac-build fails.

WebCore/platform/graphics/filters/FEGaussianBlur.cpp:125
 +  static const float gaussianKernelFactor = (3.f * sqrt(2 * M_PI) / 4.f);
Please add this line right after the includes. Name it gGaussianKernelFactor to make sure that this is a constant. No .f. I think M_PI is wrong here (problems on Mac builds). please use piDouble again.

WebCore/platform/graphics/filters/FEGaussianBlur.cpp:141
 +      unsigned sdx = static_cast&lt;unsigned&gt;(floor(std::max(m_x, 2.f) * filter-&gt;filterResolution().width() * gaussianKernelFactor + 0.5f));
no .f

WebCore/platform/graphics/filters/FEGaussianBlur.cpp:142
 +      unsigned sdy = static_cast&lt;unsigned&gt;(floor(std::max(m_y, 2.f) * filter-&gt;filterResolution().height() * gaussianKernelFactor + 0.5f));
dito

WebCore/platform/graphics/filters/FEGaussianBlur.cpp:181
 +      sdx = std::max((radius.x() * 2 / 3 - 0.5f) / (resolution.width() * gaussianKernelFactor), 0.f);
Please use: using namespace std; Saw this multiple times before, please fix it there as well.
no .f

WebCore/platform/graphics/filters/FEGaussianBlur.cpp:182
 +      sdy = std::max((radius.y() * 2 / 3 - 0.5f) / (resolution.height() * gaussianKernelFactor), 0.f);
dito

I&apos;m quite sure, that this need updates of pixel tests. Can you run layout tests with a tolerance of zero please? I&apos;m also not sure about kernelPosition. The spec for feGaussianBlur changed recently and a blurring radius of 0 is allowed now. If a stdDeviation for any direction is zero, the image is just not blurred for this direction. At the moment we break and don&apos;t draw the blurring at all. Now that you try to fix the SVG filter as well, and I&apos;m realy glad about this :-), can you take about this fact as well? It might also be possible to move the feGaussianBlur fixes to another patch,if you think this is not the right place.

Great patch! Please fix the style problems and think about the last comment about kernelPosition. r- for now, also for breaking Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245790</commentid>
    <comment_count>6</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-07-02 00:35:01 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt;
&gt; [...]
&gt;
&gt; I&apos;m quite sure, that this need updates of pixel tests. Can you run layout tests with a tolerance of zero please?

Yep, the visual result is different, I was wondering if other platforms with pixel tests for this filter could have problems because I could not test it in webkitgtk+. I&apos;ll review what we need.

&gt; I&apos;m also not sure about kernelPosition. The spec for feGaussianBlur changed recently and a blurring radius of 0 is allowed now. If a stdDeviation for any direction is zero, the image is just not blurred for this direction. At the moment we break and don&apos;t draw the blurring at all.

I understand, we can change also this condition that controls the standard deviation parameter:

    if (m_x == 0 || m_y == 0)
        return;

with

    if (m_x == 0 &amp;&amp; m_y == 0)
        return;

And add ifs to the calculations to avoid calculating sdx or sdy and avoid the blox blur in that direction.

Probably the name of the parameters/variables are still confusing, I could change m_x and m_y with mStdx and mStdy, and sdx/sdy with kernelSizex/kernelSizey.

&gt; Now that you try to fix the SVG filter as well, and I&apos;m realy glad about this :-), can you take about this fact as well? It might also be possible to move the feGaussianBlur fixes to another patch,if you think this is not the right place.

Yep, actually it was my my initial intention to do it separately, but finally checking the visual result of reviewing the kernel_size I&apos;ve checked the position of the shadow was not correct without all the modifications, and I was not sure if it was due to the change I did, my fault, I&apos;ll check it and try to separate both patches adding the kernelPosition. In case we have pixel tests we will have to do two modifications also.

&gt; Great patch! Please fix the style problems and think about the last comment about kernelPosition. r- for now, also for breaking Mac.

I&apos;ll do, thanks very much for the review Dirk :).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246298</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-07-03 05:47:44 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt;
&gt; &gt; [...]
&gt; &gt;
&gt; &gt; I&apos;m quite sure, that this need updates of pixel tests. Can you run layout tests with a tolerance of zero please?
&gt; 
&gt; Yep, the visual result is different, I was wondering if other platforms with pixel tests for this filter could have problems because I could not test it in webkitgtk+. I&apos;ll review what we need.
&gt; 
&gt; &gt; I&apos;m also not sure about kernelPosition. The spec for feGaussianBlur changed recently and a blurring radius of 0 is allowed now. If a stdDeviation for any direction is zero, the image is just not blurred for this direction. At the moment we break and don&apos;t draw the blurring at all.
&gt; 
&gt; I understand, we can change also this condition that controls the standard deviation parameter:
&gt; 
&gt;     if (m_x == 0 || m_y == 0)
&gt;         return;
&gt; 
&gt; with
&gt; 
&gt;     if (m_x == 0 &amp;&amp; m_y == 0)
&gt;         return;
The result of the filter, if stdDeviation is 0 for all sizes, is as if no filter was applied at all. that means input = output. With if (m_x == 0 &amp;&amp; m_y == 0) the output is transparent black, independent of the input. The spec changed lately and noone removed this check up to now.

&gt; 
&gt; And add ifs to the calculations to avoid calculating sdx or sdy and avoid the blox blur in that direction.
&gt; 
&gt; Probably the name of the parameters/variables are still confusing, I could change m_x and m_y with mStdx and mStdy, and sdx/sdy with kernelSizex/kernelSizey.
For private variables of a class we use m_... as prefix. But of course you can rename it to something like m_stdX and m_stdY.

&gt; I&apos;ll do, thanks very much for the review Dirk :).
Thank you for working on this problem :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250681</commentid>
    <comment_count>8</comment_count>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2010-07-13 12:39:49 -0700</bug_when>
    <thetext>Hi,

I was wondering why are we limiting the radius to 1000? It is true that CG is doing this. However, skia in *http://code.google.com/p/skia/source/browse/trunk/src/effects/SkBlurMaskFilter.cpp* (MAX_RADIUS) is limiting it to 128? For performance reasons, wouldn&apos;t it be better to follow skia model here and limit the radius values even more? It seems to me that values greater than 128 are both computational intensive and unlikely to be used in practice.

Regards,
Mihnea Ovidenie</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251062</commentid>
    <comment_count>9</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-07-14 02:27:10 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Hi,
&gt; 
&gt; I was wondering why are we limiting the radius to 1000? It is true that CG is doing this. However, skia in *http://code.google.com/p/skia/source/browse/trunk/src/effects/SkBlurMaskFilter.cpp* (MAX_RADIUS) is limiting it to 128? For performance reasons, wouldn&apos;t it be better to follow skia model here and limit the radius values even more? It seems to me that values greater than 128 are both computational intensive and unlikely to be used in practice.
&gt;

I agree, I think we can use deviation instead of radius and do it inside the FEGaussianBlur object that way, we can use 50 for instance which is a radius of 94.5 aprox. I think mozilla is using 25, at leas in the canvas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251282</commentid>
    <comment_count>10</comment_count>
      <attachid>61538</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-07-14 10:51:32 -0700</bug_when>
    <thetext>Created attachment 61538
Proposed patch

After trying to add all the comments I&apos;ve disagreed with myself and agreed with Mihnea about the limit :), adding it to the deviation was not as natural as using the radius.

This patch depends on the patch in the bug 41605. I&apos;m not adding it for review until we land the other patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263128</commentid>
    <comment_count>11</comment_count>
      <attachid>64088</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-11 02:19:19 -0700</bug_when>
    <thetext>Created attachment 64088
Proposed patch

The patch that blocked this one has landed so we can add this one for review, not sure if any of the pixel tests have to be modified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263170</commentid>
    <comment_count>12</comment_count>
      <attachid>64093</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-11 04:19:30 -0700</bug_when>
    <thetext>Created attachment 64093
Proposed patch

Not much information about the fail, added the .f in the max function parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263188</commentid>
    <comment_count>13</comment_count>
      <attachid>64099</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-11 05:05:11 -0700</bug_when>
    <thetext>Created attachment 64099
Proposed patch

And a new one trying to make both parameters float.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263199</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-11 05:31:16 -0700</bug_when>
    <thetext>Attachment 64093 did not build on gtk:
Build output: http://queues.webkit.org/results/3759061</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>263201</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-11 05:36:01 -0700</bug_when>
    <thetext>Attachment 64093 did not build on chromium:
Build output: http://queues.webkit.org/results/3754044</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264383</commentid>
    <comment_count>16</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2010-08-13 08:38:21 -0700</bug_when>
    <thetext>This bug affects all Cairo variants, not just GTK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266301</commentid>
    <comment_count>17</comment_count>
      <attachid>64751</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-18 12:11:21 -0700</bug_when>
    <thetext>Created attachment 64751
Proposed patch

Rebased patch to current trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266325</commentid>
    <comment_count>18</comment_count>
      <attachid>64751</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-18 12:53:37 -0700</bug_when>
    <thetext>Comment on attachment 64751
Proposed patch

WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:933
 +      FEGaussianBlur::calculateStdDeviation(blurRadius, FloatSize(1, 1), sdx, sdy);
See next comment.

WebCore/platform/graphics/filters/FEGaussianBlur.cpp:203
 +  void FEGaussianBlur::calculateStdDeviation(const FloatPoint&amp; radius, const FloatSize&amp; resolution, float&amp; sdx, float&amp; sdy)
Why did you add this? IIRC we just need the code for CSS shadows. We don&apos;t have different radii for width or height. The resolution is always FloatSize(1,1). So why not just add the following line once directly to the Shadow code in GC?

WebCore/platform/graphics/filters/FEGaussianBlur.cpp:207
 +      sdy = max((radius.y() * 2 / 3 - 0.5) / (resolution.height() * gGaussianKernelFactor), 0.0);
should be
2 / 3.f
and
, 0.f);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266576</commentid>
    <comment_count>19</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-19 00:41:47 -0700</bug_when>
    <thetext>(In reply to comment #18)
¡&gt; WebCore/platform/graphics/filters/FEGaussianBlur.cpp:203
&gt;  +  void FEGaussianBlur::calculateStdDeviation(const FloatPoint&amp; radius, const FloatSize&amp; resolution, float&amp; sdx, float&amp; sdy)
&gt; Why did you add this? IIRC we just need the code for CSS shadows. We don&apos;t have different radii for width or height. The resolution is always FloatSize(1,1). So why not just add the following line once directly to the Shadow code in GC?
&gt; 

The main point to add the function is keep all the gaussian calculation in the same file, it allow us to reuse calculations like the gGaussianKernelFactor for this and to get the kernel size in the apply method.

The reason to leave all the width, height even though they are the same for css is to keep the API like a general way to get the standard deviation from the radius. I could make the function more specific for this case if that fits better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266601</commentid>
    <comment_count>20</comment_count>
      <attachid>64819</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-19 01:39:16 -0700</bug_when>
    <thetext>Created attachment 64819
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266602</commentid>
    <comment_count>21</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-19 02:01:03 -0700</bug_when>
    <thetext>Hm, FEGaussianBlur::calculateStdDeviation is a void but it&apos;s only task is to calculate a float, can&apos;t you just give back a float?
float sd = FEGaussianBlur::calculateStdDeviation(...)
Also please use: float FEGaussianBlur::calculateStdDeviation(float radius) const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266605</commentid>
    <comment_count>22</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-19 02:15:24 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Hm, FEGaussianBlur::calculateStdDeviation is a void but it&apos;s only task is to calculate a float, can&apos;t you just give back a float?
&gt; float sd = FEGaussianBlur::calculateStdDeviation(...)
&gt; Also please use: float FEGaussianBlur::calculateStdDeviation(float radius) const

Yep, I agree, makes more sense now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266611</commentid>
    <comment_count>23</comment_count>
      <attachid>64823</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-19 02:35:27 -0700</bug_when>
    <thetext>Created attachment 64823
Proposed patch

Modified the API of the calculateStdDeviation function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266615</commentid>
    <comment_count>24</comment_count>
      <attachid>64823</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-08-19 03:15:17 -0700</bug_when>
    <thetext>Comment on attachment 64823
Proposed patch

WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:931
 +      sd = FEGaussianBlur::calculateStdDeviation(radius);
avoid the new line, just:
float sd = FEGaussianBlur::calculateStdDeviation(radius);

WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp:934
 +      if (!radius || (!sd)) {
avoid the braces arround !sd

WebCore/platform/graphics/filters/FEGaussianBlur.cpp:203
 +  float FEGaussianBlur::calculateStdDeviation(const float&amp; radius)
No need for const float&amp; . We usally just use float for normal floats.

WebCore/platform/graphics/filters/FEGaussianBlur.h:46
 +      static float calculateStdDeviation(const float&amp; radius);
make it const please.

Small changes. But please fix them before landing. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266619</commentid>
    <comment_count>25</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-19 03:47:46 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 64823 [details])
&gt; WebCore/platform/graphics/filters/FEGaussianBlur.h:46
&gt;  +      static float calculateStdDeviation(const float&amp; radius);
&gt; make it const please.
&gt; 

I&apos;ve just checked this function is already static so it can no be const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266622</commentid>
    <comment_count>26</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-19 04:01:00 -0700</bug_when>
    <thetext>landed r65661</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>59024</attachid>
            <date>2010-06-17 11:53:06 -0700</date>
            <delta_ts>2010-06-17 11:53:06 -0700</delta_ts>
            <desc>Test example</desc>
            <filename>borders.html</filename>
            <type>text/html</type>
            <size>406</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgoKPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KYm9keSB7YmFj
a2dyb3VuZDp3aGl0ZX0KLmJveCB7d2lkdGg6MzAwcHg7aGVpZ2h0OjMwMHB4OwogICAgICAtd2Vi
a2l0LWJvcmRlci1yYWRpdXM6MTAwcHg7CiAgICAgIC1tb3otYm9yZGVyLXJhZGl1czoxMDBweDsK
ICAgICAgbWFyZ2luOjEwMHB4OwogICAgICAtbW96LWJveC1zaGFkb3c6IzAwMCAwcHggMHB4IDQw
MHB4OwogICAgICAtd2Via2l0LWJveC1zaGFkb3c6IzAwMCAwcHggMHB4IDEwMDBweDt9Ci50ZXN0
MSB7Ym9yZGVyOjJweCBzb2xpZCBoc2xhKDIyMCwgMTAlLCAxMCUsIDAuNSk7fQo8L3N0eWxlPgoK
CjwvaGVhZD4KCjxib2R5Pgo8ZGl2IGNsYXNzPSJib3ggdGVzdDEiPjwvZGl2Pgo8L2JvZHk+Cgo8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59026</attachid>
            <date>2010-06-17 11:56:27 -0700</date>
            <delta_ts>2010-07-01 13:23:41 -0700</delta_ts>
            <desc>Initial patch proposal</desc>
            <filename>shadowSize.patch</filename>
            <type>text/plain</type>
            <size>10221</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDA4ODkx
NDguLjY3YmQ0ZGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaApAQCAtMjc5LDcgKzI3OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQTEFURk9S
TShDQUlSTykKICAgICAgICAgZmxvYXQgZ2V0QWxwaGEoKTsKICAgICAgICAgdm9pZCBjcmVhdGVQ
bGF0Zm9ybVNoYWRvdyhQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIsIGNvbnN0IENvbG9y
JiBzaGFkb3dDb2xvciwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCBrZXJuZWxT
aXplKTsKLSAgICAgICAgc3RhdGljIHZvaWQgY2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9u
cyhJbnRTaXplJiBzaGFkb3dCdWZmZXJTaXplLCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0
JiBrZXJuZWxTaXplLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEZsb2F0U2l6
ZSYgc2hhZG93U2l6ZSwgZmxvYXQgc2hhZG93Qmx1cik7CisgICAgICAgIHZvaWQgY2FsY3VsYXRl
U2hhZG93QnVmZmVyRGltZW5zaW9ucyhJbnRTaXplJiBzaGFkb3dCdWZmZXJTaXplLCBGbG9hdFJl
Y3QmIHNoYWRvd1JlY3QsIGZsb2F0JiBrZXJuZWxTaXplLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93U2l6ZSwgZmxvYXQgc2hhZG93Qmx1cik7CiAj
ZW5kaWYKIAogICAgICAgICB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVy
YXRvcik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRD
YWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAK
aW5kZXggOTMwNTFjYi4uNmY1M2RiMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vRm9udENhaXJvLmNwcApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlw
aHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwg
Y29ucwogICAgICAgICBJbnRTaXplIHNoYWRvd0J1ZmZlclNpemU7CiAgICAgICAgIEZsb2F0UmVj
dCBzaGFkb3dSZWN0OwogICAgICAgICBmbG9hdCBrZXJuZWxTaXplID0gMC5mOwotICAgICAgICBH
cmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVm
ZmVyU2l6ZSwgc2hhZG93UmVjdCwga2VybmVsU2l6ZSwgcmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93
Qmx1cik7CisgICAgICAgIGNvbnRleHQtPmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMo
c2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwga2VybmVsU2l6ZSwgcmVjdCwgc2hhZG93U2l6
ZSwgc2hhZG93Qmx1cik7CiAKICAgICAgICAgLy8gRHJhdyBzaGFkb3cgaW50byBhIG5ldyBJbWFn
ZUJ1ZmZlcgogICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IHNoYWRvd0J1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoc2hhZG93QnVmZmVyU2l6ZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDUw
NTY0YzUuLmIxMzU0M2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xNDYsMTUgKzE0NiwyOSBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgY29weUNvbnRleHRQcm9wZXJ0aWVzKGNhaXJvX3QqIHNyY0NyLCBj
YWlyb190KiBkc3RDcikKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZm
ZXJEaW1lbnNpb25zKEludFNpemUmIHNoYWRvd0J1ZmZlclNpemUsIEZsb2F0UmVjdCYgc2hhZG93
UmVjdCwgZmxvYXQmIGtlcm5lbFNpemUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgRmxvYXRTaXplJiBzaGFkb3dTaXplLCBmbG9hdCBzaGFkb3dCbHVyKQogewogI2lmIEVOQUJM
RShGSUxURVJTKQotICAgIC8vIGNhbGN1bGF0ZSB0aGUga2VybmVsIHNpemUgYWNjb3JkaW5nIHRv
IHRoZSBIVE1MNSBjYW52YXMgc2hhZG93IHNwZWNpZmljYXRpb24KLSAgICBrZXJuZWxTaXplID0g
KHNoYWRvd0JsdXIgPCA4ID8gc2hhZG93Qmx1ciAvIDIuZiA6IHNxcnQoc2hhZG93Qmx1ciAqIDIu
ZikpOwotICAgIGludCBibHVyUmFkaXVzID0gY2VpbChrZXJuZWxTaXplKTsKKyAgICAvLyBjcmVh
dGUgZmlsdGVyCisgICAgbV9kYXRhLT5maWx0ZXIgPSBJbWFnZUJ1ZmZlckZpbHRlcjo6Y3JlYXRl
KCk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gc291cmNlID0gU291cmNlR3JhcGhpYzo6Y3Jl
YXRlKCk7CisgICAgbV9kYXRhLT5ibHVyID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShzb3VyY2Uu
Z2V0KCksIDEuMGYsIDEuMGYpOworCisgICAgLy8gY2FsY3VsYXRlIHRoZSBzdGFuZGFyZCBkZXZp
YXRpb24gYWNjb3JkaW5nIHRvIHRoZSBIVE1MNSBjYW52YXMgc2hhZG93IHNwZWNpZmljYXRpb24K
KyAgICBmbG9hdCBzaWdtYSA9IChzaGFkb3dCbHVyIDwgOCA/IHNoYWRvd0JsdXIgLyAyLmYgOiBz
cXJ0KHNoYWRvd0JsdXIgKiAyLmYpKTsKKyAgICBtX2RhdGEtPmJsdXItPnNldFN0ZERldmlhdGlv
blgoc2lnbWEpOworICAgIG1fZGF0YS0+Ymx1ci0+c2V0U3RkRGV2aWF0aW9uWShzaWdtYSk7Cisg
ICAgdW5zaWduZWQgc2R4LCBzZHk7CisgICAgbV9kYXRhLT5ibHVyLT5jYWxjdWxhdGVCbHVyUmFk
aXVzKG1fZGF0YS0+ZmlsdGVyLmdldCgpLCBzZHgsIHNkeSk7CisgICAgLy8gYm90aCBzZHggYW5k
IHNkeSBhcmUgc2ltaWxhciBiZWNhdXNlIHdlIHVzZWQgdGhlIHNhbWUgc2lnbWEKKyAgICBrZXJu
ZWxTaXplID0gc2R4OworICAgIGludCBibHVyUmFkaXVzID0gc2R4OwogCiAgICAgc2hhZG93QnVm
ZmVyU2l6ZSA9IEludFNpemUoc291cmNlUmVjdC53aWR0aCgpICsgYmx1clJhZGl1cyAqIDIsIHNv
dXJjZVJlY3QuaGVpZ2h0KCkgKyBibHVyUmFkaXVzICogMik7CiAKICAgICAvLyBkZXRlcm1pbmUg
ZGltZW5zaW9ucyBvZiBzaGFkb3cgcmVjdAogICAgIHNoYWRvd1JlY3QgPSBGbG9hdFJlY3Qoc291
cmNlUmVjdC5sb2NhdGlvbigpLCBzaGFkb3dCdWZmZXJTaXplKTsKICAgICBzaGFkb3dSZWN0Lm1v
dmUoc2hhZG93U2l6ZS53aWR0aCgpIC0ga2VybmVsU2l6ZSwgc2hhZG93U2l6ZS5oZWlnaHQoKSAt
IGtlcm5lbFNpemUpOworCisgICAgc291cmNlLT5zZXRTY2FsZWRTdWJSZWdpb24oRmxvYXRSZWN0
KEZsb2F0UG9pbnQoKSwgc2hhZG93UmVjdC5zaXplKCkpKTsKKyAgICBzb3VyY2UtPnNldElzQWxw
aGFJbWFnZSh0cnVlKTsKICNlbmRpZgogfQogCkBAIC0xODAsNyArMTk0LDcgQEAgc3RhdGljIGlu
bGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgR3JhcGhp
Y3NDb250ZXh0UHJpdmEKICAgICBJbnRTaXplIHNoYWRvd0J1ZmZlclNpemU7CiAgICAgRmxvYXRS
ZWN0IHNoYWRvd1JlY3Q7CiAgICAgZmxvYXQga2VybmVsU2l6ZSA9IDA7Ci0gICAgR3JhcGhpY3ND
b250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKHNoYWRvd0J1ZmZlclNpemUs
IHNoYWRvd1JlY3QsIGtlcm5lbFNpemUsIHJlY3QsIHNoYWRvd1NpemUsIHNoYWRvd0JsdXIpOwor
ICAgIGNvbnRleHQtPmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVy
U2l6ZSwgc2hhZG93UmVjdCwga2VybmVsU2l6ZSwgcmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1
cik7CiAKICAgICAvLyBDcmVhdGUgc3VpdGFibHktc2l6ZWQgSW1hZ2VCdWZmZXIgdG8gaG9sZCB0
aGUgc2hhZG93LgogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc2hhZG93QnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShzaGFkb3dCdWZmZXJTaXplKTsKQEAgLTIwNyw2ICsyMjEsOCBAQCBHcmFw
aGljc0NvbnRleHQ6OkdyYXBoaWNzQ29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogY3Ip
CiB7CiAgICAgbV9kYXRhLT5jciA9IGNhaXJvX3JlZmVyZW5jZShjcik7CiAgICAgbV9kYXRhLT5z
eW5jQ29udGV4dChjcik7CisgICAgbV9kYXRhLT5maWx0ZXIgPSAwOworICAgIG1fZGF0YS0+Ymx1
ciA9IDA7CiAgICAgc2V0UGFpbnRpbmdEaXNhYmxlZCghY3IpOwogfQogCkBAIC01NjksNyArNTg1
LDcgQEAgc3RhdGljIHZvaWQgZHJhd0JvcmRlcmxlc3NSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JgogICAgIEludFNpemUgc2hhZG93QnVmZmVyU2l6
ZTsKICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdDsKICAgICBmbG9hdCBrZXJuZWxTaXplID0gMDsK
LSAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hh
ZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwga2VybmVsU2l6ZSwgcmVjdCwgc2hhZG93U2l6ZSwg
c2hhZG93Qmx1cik7CisgICAgY29udGV4dC0+Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9u
cyhzaGFkb3dCdWZmZXJTaXplLCBzaGFkb3dSZWN0LCBrZXJuZWxTaXplLCByZWN0LCBzaGFkb3dT
aXplLCBzaGFkb3dCbHVyKTsKIAogICAgIC8vIERyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VC
dWZmZXIKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IHNoYWRvd0J1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoc2hhZG93QnVmZmVyU2l6ZSk7CkBAIC04NjgsMjAgKzg4NCwxNSBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1TaGFkb3coUGFzc093blB0cjxJbWFnZUJ1ZmZl
cj4gYnVmZmVyLCBjb25zdAogICAgIC8vIGxpbWl0IGtlcm5lbCBzaXplIHRvIDEwMDAsIHRoaXMg
aXMgd2hhdCBDRyBpcyBkb2luZy4KICAgICBrZXJuZWxTaXplID0gc3RkOjptaW4oMTAwMC5mLCBr
ZXJuZWxTaXplKTsKIAotICAgIC8vIGNyZWF0ZSBmaWx0ZXIKLSAgICBSZWZQdHI8RmlsdGVyPiBm
aWx0ZXIgPSBJbWFnZUJ1ZmZlckZpbHRlcjo6Y3JlYXRlKCk7Ci0gICAgZmlsdGVyLT5zZXRTb3Vy
Y2VJbWFnZShidWZmZXIucmVsZWFzZSgpKTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBzb3Vy
Y2UgPSBTb3VyY2VHcmFwaGljOjpjcmVhdGUoKTsKLSAgICBzb3VyY2UtPnNldFNjYWxlZFN1YlJl
Z2lvbihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaGFkb3dSZWN0LnNpemUoKSkpOwotICAgIHNv
dXJjZS0+c2V0SXNBbHBoYUltYWdlKHRydWUpOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJs
dXIgPSBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKHNvdXJjZS5nZXQoKSwga2VybmVsU2l6ZSwga2Vy
bmVsU2l6ZSk7Ci0gICAgYmx1ci0+c2V0U2NhbGVkU3ViUmVnaW9uKEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIHNoYWRvd1JlY3Quc2l6ZSgpKSk7Ci0gICAgYmx1ci0+YXBwbHkoZmlsdGVyLmdldCgp
KTsKKyAgICAvLyBjb25maWd1cmUgZmlsdGVyCisgICAgbV9kYXRhLT5maWx0ZXItPnNldFNvdXJj
ZUltYWdlKGJ1ZmZlci5yZWxlYXNlKCkpOworICAgIG1fZGF0YS0+Ymx1ci0+c2V0U2NhbGVkU3Vi
UmVnaW9uKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNoYWRvd1JlY3Quc2l6ZSgpKSk7CisgICAg
bV9kYXRhLT5ibHVyLT5hcHBseShtX2RhdGEtPmZpbHRlci5nZXQoKSk7CiAKICAgICAvLyBNYXNr
IHRoZSBmaWx0ZXIgd2l0aCB0aGUgc2hhZG93IGNvbG9yIGFuZCBkcmF3IGl0IHRvIHRoZSBjb250
ZXh0LgogICAgIC8vIE1hc2tpbmcgbWFrZXMgaXQgcG9zc2libGUgdG8ganVzdCBibHVyIHRoZSBh
bHBoYSBjaGFubmVsLgogICAgIHNldENvbG9yKGNyLCBzaGFkb3dDb2xvcik7Ci0gICAgY2Fpcm9f
bWFza19zdXJmYWNlKGNyLCBibHVyLT5yZXN1bHRJbWFnZSgpLT5pbWFnZSgpLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpLCBzaGFkb3dSZWN0LngoKSwgc2hhZG93UmVjdC55KCkpOworICAg
IGNhaXJvX21hc2tfc3VyZmFjZShjciwgbV9kYXRhLT5ibHVyLT5yZXN1bHRJbWFnZSgpLT5pbWFn
ZSgpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpLCBzaGFkb3dSZWN0LngoKSwgc2hhZG93
UmVjdC55KCkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRl
Q2Fpcm8uaAppbmRleCA1ZTM4ODMyLi44YmJlNDc3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRQbGF0
Zm9ybVByaXZhdGVDYWlyby5oCkBAIC05NSw2ICs5NSw4IEBAIHB1YmxpYzoKIAogICAgIGNhaXJv
X3QqIGNyOwogICAgIFZlY3RvcjxmbG9hdD4gbGF5ZXJzOworICAgIFJlZlB0cjxGaWx0ZXI+IGZp
bHRlcjsKKyAgICBSZWZQdHI8RkVHYXVzc2lhbkJsdXI+IGJsdXI7CiAKICNpZiBQTEFURk9STShH
VEspCiAgICAgR2RrRXZlbnRFeHBvc2UqIGV4cG9zZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDY0ZmJlZGYuLmFiZWM4ZmMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcApAQCAtMTQx
LDcgKzE0MSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvCiAgICAgICAgIEludFNpemUgc2hh
ZG93QnVmZmVyU2l6ZTsKICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3Q7CiAgICAgICAgIGZs
b2F0IGtlcm5lbFNpemUgKDAuMCk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDo6Y2FsY3VsYXRl
U2hhZG93QnVmZmVyRGltZW5zaW9ucyhzaGFkb3dCdWZmZXJTaXplLCBzaGFkb3dSZWN0LCBrZXJu
ZWxTaXplLCBkc3RSZWN0LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVyKTsKKyAgICAgICAgY29udGV4
dC0+Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhzaGFkb3dCdWZmZXJTaXplLCBzaGFk
b3dSZWN0LCBrZXJuZWxTaXplLCBkc3RSZWN0LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVyKTsKICAg
ICAgICAgc2hhZG93Q29sb3IgPSBjb2xvcldpdGhPdmVycmlkZUFscGhhKHNoYWRvd0NvbG9yLnJn
YigpLCAoc2hhZG93Q29sb3IuYWxwaGEoKSAqICBjb250ZXh0LT5nZXRBbHBoYSgpKSAvIDI1NS5m
KTsKIAogICAgICAgICAvL2RyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VCdWZmZXIKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3Bw
CmluZGV4IDYxYWVhOTAuLjYyZDhkYWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcApAQCAtOTksNiArOTksOCBAQCBzdGF0
aWMgdm9pZCBib3hCbHVyKENhbnZhc1BpeGVsQXJyYXkqJiBzcmNQaXhlbEFycmF5LCBDYW52YXNQ
aXhlbEFycmF5KiYgZHN0UGl4ZQogICAgIH0KIH0KIAorc3RhdGljIGNvbnN0IGZsb2F0IEdBVVNT
SUFOX0tFUk5FTF9GQUNUT1IgPSAoMy5mICogc3FydCgyICogTV9QSSkgLyA0LmYpOworCiB2b2lk
IEZFR2F1c3NpYW5CbHVyOjphcHBseShGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBtX2luLT5hcHBs
eShmaWx0ZXIpOwpAQCAtMTEzLDggKzExNSw4IEBAIHZvaWQgRkVHYXVzc2lhbkJsdXI6OmFwcGx5
KEZpbHRlciogZmlsdGVyKQogICAgIGlmIChtX3ggPT0gMCB8fCBtX3kgPT0gMCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgdW5zaWduZWQgc2R4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZsb29y
KG1feCAqIGZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCkgKiAzICogc3FydCgyICog
cGlEb3VibGUpIC8gNC5mICsgMC41ZikpOwotICAgIHVuc2lnbmVkIHNkeSA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihmbG9vcihtX3kgKiBmaWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQo
KSAqIDMgKiBzcXJ0KDIgKiBwaURvdWJsZSkgLyA0LmYgKyAwLjVmKSk7CisgICAgdW5zaWduZWQg
c2R4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZsb29yKG1feCAqIGZpbHRlci0+ZmlsdGVyUmVz
b2x1dGlvbigpLndpZHRoKCkgKiBHQVVTU0lBTl9LRVJORUxfRkFDVE9SICsgMC41ZikpOworICAg
IHVuc2lnbmVkIHNkeSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihmbG9vcihtX3kgKiBmaWx0ZXIt
PmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSAqIEdBVVNTSUFOX0tFUk5FTF9GQUNUT1IgKyAw
LjVmKSk7CiAgICAgc2R4ID0gbWF4KHNkeCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDEpKTsKICAg
ICBzZHkgPSBtYXgoc2R5LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkpOwogCkBAIC0xNDksNiAr
MTUxLDEzIEBAIFRleHRTdHJlYW0mIEZFR2F1c3NpYW5CbHVyOjpleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjCiAgICAgcmV0dXJuIHRzOwogfQogCit2
b2lkIEZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVCbHVyUmFkaXVzKEZpbHRlciogZmlsdGVyLCB1
bnNpZ25lZCYgc2R4LCB1bnNpZ25lZCYgc2R5KSBjb25zdAoreworICAgIC8vIEJsdXIgcmFkaXVz
IG5lZWRzIGFwcHJveGltYXRlbHkgMiB0aW1lcyB0aGUga2VybmVsIHNpemUgYmVjYXVzZSB3ZSBh
cmUgZG9pbmcgdGhlIGJveCBibHVyIHRocmljZQorICAgIHNkeCA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihmbG9vcihtX3ggKiBmaWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS53aWR0aCgpICogIEdB
VVNTSUFOX0tFUk5FTF9GQUNUT1IgKiAyLjBmICsgMC41ZikpOworICAgIHNkeSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihmbG9vcihtX3kgKiBmaWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS5oZWln
aHQoKSAqIEdBVVNTSUFOX0tFUk5FTF9GQUNUT1IgKiAyLjBmICsgMC41ZikpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRklMVEVSUykKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKaW5kZXgg
YmNjMDMwZS4uNjQwMTg3MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKQEAgLTQzLDYgKzQzLDggQEAgcHVibGljOgogICAgIHZv
aWQgZHVtcCgpOwogICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0
cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0OwogCisgICAgdm9pZCBjYWxjdWxhdGVCbHVyUmFkaXVz
KEZpbHRlciogZmlsdGVyLCB1bnNpZ25lZCYgc2R4LCB1bnNpZ25lZCYgc2R5KSBjb25zdDsKKwog
cHJpdmF0ZToKICAgICBGRUdhdXNzaWFuQmx1cihGaWx0ZXJFZmZlY3QqLCBjb25zdCBmbG9hdCYs
IGNvbnN0IGZsb2F0Jik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60279</attachid>
            <date>2010-07-01 13:23:41 -0700</date>
            <delta_ts>2010-07-01 15:31:06 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>blur_radius.patch</filename>
            <type>text/plain</type>
            <size>20153</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IDBkYjNmOTc3ZTUzODY1YTEwZDgwY2NkMGNjN2U3ZmIwZDJiODFjZDAKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgVGh1IEp1bCAxIDIy
OjE5OjI0IDIwMTAgKzAyMDAKCiAgICAyMDEwLTA3LTAxICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8
YWxleEBpZ2FsaWEuY29tPgogICAgCiAgICAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgogICAgCiAgICAgICAgICAgIFtHVEtdIFRoZSBzaXplIG9mIHRoZSBzaGFkb3cgaW1hZ2Ug
dXNlcyB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uCiAgICAgICAgICAgIHNpemUgaW5zdGVhZCBvZiB0
aGUgYmx1ciByYWRpdXMKICAgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQwNzkzCiAgICAKICAgICAgICAgICAgVGhlIGtlcm5lbFNpemUgdmFyaWFibGUg
d2FzIHJlbmFtZWQgdG8gcmFkaXVzIGFuZCByZWNhbGN1bGF0ZWQKICAgICAgICAgICAgY29uc2lk
ZXJpbmcgdGhlIENTUzMgc3BlY2lmaWNhdGlvbgogICAgICAgICAgICBodHRwOi8vd3d3LnczLm9y
Zy9UUi9jc3MzLWJhY2tncm91bmQvI3RoZS1ib3gtc2hhZG93LCBhbmQgdGhlCiAgICAgICAgICAg
IHZpc3VhbCByZXN1bHQgb2Ygb3RoZXIgYnJvd3NlcnMuIFRoZSBIVE1MNSBjYW52YXMgc2hhZG93
IHN0YW5kYXJkCiAgICAgICAgICAgIGRldmlhdGlvbiBjYWxjdWxhdGlvbiB0aGF0IHdhcyB1c2Vk
LCB3YXMgbm90IGFwcHJvcGlhdGUgZm9yIHRoZQogICAgICAgICAgICBibHVyIGRpc3RhbmNlIHNw
ZWNpZmllZCBpbiB0aGUgQ1NTMy4KICAgIAogICAgICAgICAgICBBZGRlZCBhbHNvIHRoZSByZWNv
bWVuZGF0aW9ucyBvZiBTVkcgcmVnYXJkaW5nIHRoZSBrZXJuZWwgc2l6ZQogICAgICAgICAgICBj
YWxjdWxhdGlvbiBmb3IgdGhlIGFwcHJveGltYXRpb24gb2YgdGhlIGdhdXNzaWFuCiAgICAgICAg
ICAgIGJsdXIuIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9maWx0ZXJzLmh0bWwjZmVHYXVzc2lh
bkJsdXJFbGVtZW50CiAgICAKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaDoKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fp
cm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6CiAgICAgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgog
ICAgICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZm
ZXJEaW1lbnNpb25zKToKICAgICAgICAgICAgQ2hhbmdlZCB0aGUgY2FsY3VsYXRpb24sIG5vdyB3
ZSB1c2UgdGhlIHBhcmFtZXRlciBpbiB0aGUgc3R5bGUKICAgICAgICAgICAgZGlyZWN0bHkgYXMg
cmVjb21lbmRlZCBpbiB0aGUgQ1NTMyBzdGFuZGFyZC4KICAgICAgICAgICAgKFdlYkNvcmU6OmRy
YXdQYXRoU2hhZG93KToKICAgICAgICAgICAgKFdlYkNvcmU6OmRyYXdCb3JkZXJsZXNzUmVjdFNo
YWRvdyk6CiAgICAgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZVBsYXRm
b3JtU2hhZG93KTogV2UgZ2V0IHRoZQogICAgICAgICAgICBzdGFuZGFyZCBkZXZpYXRpb24gZnJv
bSB0aGUgcmFkaXVzIHVzaW5nIHRoZSBuZXcgZnVuY3Rpb24gYW5kIHdlCiAgICAgICAgICAgIGNy
ZWF0ZSB0aGUgZmlsdGVyIHdpdGggdGhhdCBkZXZpYXRpb24uCiAgICAgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhdyk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpib3hCbHVyKToKICAg
ICAgICAgICAgKFdlYkNvcmU6Omtlcm5lbFBvc2l0aW9uKTogQWRkZWQgdGhlIFNWRyBrZXJuZWwg
cG9zaXRpb24KICAgICAgICAgICAgcmVjb21lbmRhdGlvbi4KICAgICAgICAgICAgKFdlYkNvcmU6
OkZFR2F1c3NpYW5CbHVyOjphcHBseSk6CiAgICAgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFu
Qmx1cjo6Y2FsY3VsYXRlU3RkRGV2aWF0aW9uKTogQWRkZWQgdGhpcwogICAgICAgICAgICBmdW5j
dGlvbiB0aGF0IGdldHMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBmcm9tIHRoZSBibHVyCiAgICAg
ICAgICAgIHJhZGl1cy4gUmVxdWlyZWQgaW4gdGhlIENTUzMgY2FzZSB3aGVyZSB3ZSBoYXZlIHRo
aXMgcmFkaW8gYW5kIHdlCiAgICAgICAgICAgIG5lZWQgdGhlIGRldmlhdGlvbiB0byBpbml0aWFs
aXplIHRoZSBhbGdvcml0aG0uCiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5oOgogICAgCiAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVHYXVzc2lhbkJsdXIuaDoKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGY3YjI3NzYuLmRiNzVjMWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTAt
MDctMDEgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gVGhlIHNpemUgb2Yg
dGhlIHNoYWRvdyBpbWFnZSB1c2VzIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24KKyAgICAgICAgc2l6
ZSBpbnN0ZWFkIG9mIHRoZSBibHVyIHJhZGl1cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA3OTMKKworICAgICAgICBUaGUga2VybmVsU2l6ZSB2YXJp
YWJsZSB3YXMgcmVuYW1lZCB0byByYWRpdXMgYW5kIHJlY2FsY3VsYXRlZAorICAgICAgICBjb25z
aWRlcmluZyB0aGUgQ1NTMyBzcGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHA6Ly93d3cudzMub3Jn
L1RSL2NzczMtYmFja2dyb3VuZC8jdGhlLWJveC1zaGFkb3csIGFuZCB0aGUKKyAgICAgICAgdmlz
dWFsIHJlc3VsdCBvZiBvdGhlciBicm93c2Vycy4gVGhlIEhUTUw1IGNhbnZhcyBzaGFkb3cgc3Rh
bmRhcmQKKyAgICAgICAgZGV2aWF0aW9uIGNhbGN1bGF0aW9uIHRoYXQgd2FzIHVzZWQsIHdhcyBu
b3QgYXBwcm9waWF0ZSBmb3IgdGhlCisgICAgICAgIGJsdXIgZGlzdGFuY2Ugc3BlY2lmaWVkIGlu
IHRoZSBDU1MzLgorCisgICAgICAgIEFkZGVkIGFsc28gdGhlIHJlY29tZW5kYXRpb25zIG9mIFNW
RyByZWdhcmRpbmcgdGhlIGtlcm5lbCBzaXplCisgICAgICAgIGNhbGN1bGF0aW9uIGZvciB0aGUg
YXBwcm94aW1hdGlvbiBvZiB0aGUgZ2F1c3NpYW4KKyAgICAgICAgYmx1ci4gaHR0cDovL3d3dy53
My5vcmcvVFIvU1ZHL2ZpbHRlcnMuaHRtbCNmZUdhdXNzaWFuQmx1ckVsZW1lbnQKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNh
bGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMpOgorICAgICAgICBDaGFuZ2VkIHRoZSBjYWxj
dWxhdGlvbiwgbm93IHdlIHVzZSB0aGUgcGFyYW1ldGVyIGluIHRoZSBzdHlsZQorICAgICAgICBk
aXJlY3RseSBhcyByZWNvbWVuZGVkIGluIHRoZSBDU1MzIHN0YW5kYXJkLgorICAgICAgICAoV2Vi
Q29yZTo6ZHJhd1BhdGhTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0JvcmRlcmxlc3NS
ZWN0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlUGxh
dGZvcm1TaGFkb3cpOiBXZSBnZXQgdGhlCisgICAgICAgIHN0YW5kYXJkIGRldmlhdGlvbiBmcm9t
IHRoZSByYWRpdXMgdXNpbmcgdGhlIG5ldyBmdW5jdGlvbiBhbmQgd2UKKyAgICAgICAgY3JlYXRl
IHRoZSBmaWx0ZXIgd2l0aCB0aGF0IGRldmlhdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5C
bHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJveEJsdXIpOgorICAgICAgICAoV2ViQ29yZTo6
a2VybmVsUG9zaXRpb24pOiBBZGRlZCB0aGUgU1ZHIGtlcm5lbCBwb3NpdGlvbgorICAgICAgICBy
ZWNvbWVuZGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmFwcGx5KToK
KyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVTdGREZXZpYXRpb24p
OiBBZGRlZCB0aGlzCisgICAgICAgIGZ1bmN0aW9uIHRoYXQgZ2V0cyB0aGUgc3RhbmRhcmQgZGV2
aWF0aW9uIGZyb20gdGhlIGJsdXIKKyAgICAgICAgcmFkaXVzLiBSZXF1aXJlZCBpbiB0aGUgQ1NT
MyBjYXNlIHdoZXJlIHdlIGhhdmUgdGhpcyByYWRpbyBhbmQgd2UKKyAgICAgICAgbmVlZCB0aGUg
ZGV2aWF0aW9uIHRvIGluaXRpYWxpemUgdGhlIGFsZ29yaXRobS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6CisKIDIwMTAtMDctMDEgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFN0ZXZlIEZh
bGtlbmJ1cmcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApp
bmRleCA4NmJhYjdjLi4xMjM3NzZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKQEAgLTI3Nyw4ICsyNzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQpOwogI2lmIFBMQVRGT1JNKENBSVJPKQogICAgICAg
ICBmbG9hdCBnZXRBbHBoYSgpOwotICAgICAgICB2b2lkIGNyZWF0ZVBsYXRmb3JtU2hhZG93KFBh
c3NPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBj
b25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0IGtlcm5lbFNpemUpOwotICAgICAgICBz
dGF0aWMgdm9pZCBjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKEludFNpemUmIHNoYWRv
d0J1ZmZlclNpemUsIEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQmIGtlcm5lbFNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgc291cmNlUmVjdCwgY29uc3QgRmxvYXRTaXplJiBzaGFkb3dTaXplLCBm
bG9hdCBzaGFkb3dCbHVyKTsKKyAgICAgICAgdm9pZCBjcmVhdGVQbGF0Zm9ybVNoYWRvdyhQYXNz
T3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgY29u
c3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCByYWRpdXMpOworICAgICAgICBzdGF0aWMg
dm9pZCBjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKEludFNpemUmIHNoYWRvd0J1ZmZl
clNpemUsIEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQmIHJhZGl1cywgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBGbG9hdFNpemUmIHNoYWRvd1NpemUsIGZsb2F0IHNoYWRv
d0JsdXIpOwogI2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29t
cG9zaXRlT3BlcmF0b3IpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q2Fpcm8uY3BwCmluZGV4IDkzMDUxY2IuLjQ2NGYyZjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAgLTk0LDE1ICs5NCwxNSBAQCB2b2lkIEZv
bnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTaW1wbGVGb250
RGF0YSogZm9udCwgY29ucwogICAgICAgICBGbG9hdFJlY3QgcmVjdChGbG9hdFBvaW50KCksIEZs
b2F0U2l6ZShleHRlbnRzLndpZHRoLCBleHRlbnRzLmhlaWdodCkpOwogICAgICAgICBJbnRTaXpl
IHNoYWRvd0J1ZmZlclNpemU7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0OwotICAgICAg
ICBmbG9hdCBrZXJuZWxTaXplID0gMC5mOwotICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1
bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwg
a2VybmVsU2l6ZSwgcmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CisgICAgICAgIGZsb2F0
IHJhZGl1cyA9IDAuZjsKKyAgICAgICAgY29udGV4dC0+Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGlt
ZW5zaW9ucyhzaGFkb3dCdWZmZXJTaXplLCBzaGFkb3dSZWN0LCByYWRpdXMsIHJlY3QsIHNoYWRv
d1NpemUsIHNoYWRvd0JsdXIpOwogCiAgICAgICAgIC8vIERyYXcgc2hhZG93IGludG8gYSBuZXcg
SW1hZ2VCdWZmZXIKICAgICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBzaGFkb3dCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNoYWRvd0J1ZmZlclNpemUpOwogICAgICAgICBHcmFwaGljc0Nv
bnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3dCdWZmZXItPmNvbnRleHQoKTsKICAgICAgICAg
Y2Fpcm9fdCogc2hhZG93Q3IgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKIAot
ICAgICAgICBjYWlyb190cmFuc2xhdGUoc2hhZG93Q3IsIGtlcm5lbFNpemUsIGV4dGVudHMuaGVp
Z2h0ICsga2VybmVsU2l6ZSk7CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShzaGFkb3dDciwgcmFk
aXVzLCBleHRlbnRzLmhlaWdodCArIHJhZGl1cyk7CiAKICAgICAgICAgY2Fpcm9fc2V0X3NjYWxl
ZF9mb250KHNoYWRvd0NyLCBmb250LT5wbGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpOwogICAg
ICAgICBjYWlyb19zaG93X2dseXBocyhzaGFkb3dDciwgZ2x5cGhzLCBudW1HbHlwaHMpOwpAQCAt
MTEzLDcgKzExMyw3IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBjb25zCiAgICAgICAgICAgICBjYWly
b19yZXN0b3JlKHNoYWRvd0NyKTsKICAgICAgICAgfQogICAgICAgICBjYWlyb190cmFuc2xhdGUo
Y3IsIDAuMCwgLWV4dGVudHMuaGVpZ2h0KTsKLSAgICAgICAgY29udGV4dC0+Y3JlYXRlUGxhdGZv
cm1TaGFkb3coc2hhZG93QnVmZmVyLnJlbGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRvd1JlY3Qs
IGtlcm5lbFNpemUpOworICAgICAgICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhzaGFk
b3dCdWZmZXIucmVsZWFzZSgpLCBzaGFkb3dDb2xvciwgc2hhZG93UmVjdCwgcmFkaXVzKTsKICNl
bHNlCiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgc2hhZG93U2l6ZS53aWR0aCgpLCBzaGFk
b3dTaXplLmhlaWdodCgpKTsKICAgICAgICAgY2Fpcm9fc2hvd19nbHlwaHMoY3IsIGdseXBocywg
bnVtR2x5cGhzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggZGMzMjMxNy4uODUwYjNjOCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWly
by5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRDYWlyby5jcHAKQEAgLTE0MywxOCArMTQzLDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5
Q29udGV4dFByb3BlcnRpZXMoY2Fpcm9fdCogc3JjQ3IsIGNhaXJvX3QqIGRzdENyKQogICAgIGNh
aXJvX3NldF9maWxsX3J1bGUoZHN0Q3IsIGNhaXJvX2dldF9maWxsX3J1bGUoc3JjQ3IpKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMo
SW50U2l6ZSYgc2hhZG93QnVmZmVyU2l6ZSwgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCYg
a2VybmVsU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBGbG9hdFNpemUm
IHNoYWRvd1NpemUsIGZsb2F0IHNoYWRvd0JsdXIpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2Fs
Y3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhJbnRTaXplJiBzaGFkb3dCdWZmZXJTaXplLCBG
bG9hdFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0JiByYWRpdXMsIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgRmxvYXRTaXplJiBzaGFkb3dTaXplLCBmbG9hdCBzaGFkb3dCbHVyKQog
ewogI2lmIEVOQUJMRShGSUxURVJTKQotICAgIC8vIGNhbGN1bGF0ZSB0aGUga2VybmVsIHNpemUg
YWNjb3JkaW5nIHRvIHRoZSBIVE1MNSBjYW52YXMgc2hhZG93IHNwZWNpZmljYXRpb24KLSAgICBr
ZXJuZWxTaXplID0gKHNoYWRvd0JsdXIgPCA4ID8gc2hhZG93Qmx1ciAvIDIuZiA6IHNxcnQoc2hh
ZG93Qmx1ciAqIDIuZikpOwotICAgIGludCBibHVyUmFkaXVzID0gY2VpbChrZXJuZWxTaXplKTsK
KyAgICByYWRpdXMgPSBzaGFkb3dCbHVyOwogCi0gICAgc2hhZG93QnVmZmVyU2l6ZSA9IEludFNp
emUoc291cmNlUmVjdC53aWR0aCgpICsgYmx1clJhZGl1cyAqIDIsIHNvdXJjZVJlY3QuaGVpZ2h0
KCkgKyBibHVyUmFkaXVzICogMik7CisgICAgc2hhZG93QnVmZmVyU2l6ZSA9IEludFNpemUoc291
cmNlUmVjdC53aWR0aCgpICsgcmFkaXVzICogMiwgc291cmNlUmVjdC5oZWlnaHQoKSArIHJhZGl1
cyAqIDIpOwogCiAgICAgLy8gZGV0ZXJtaW5lIGRpbWVuc2lvbnMgb2Ygc2hhZG93IHJlY3QKICAg
ICBzaGFkb3dSZWN0ID0gRmxvYXRSZWN0KHNvdXJjZVJlY3QubG9jYXRpb24oKSwgc2hhZG93QnVm
ZmVyU2l6ZSk7Ci0gICAgc2hhZG93UmVjdC5tb3ZlKHNoYWRvd1NpemUud2lkdGgoKSAtIGtlcm5l
bFNpemUsIHNoYWRvd1NpemUuaGVpZ2h0KCkgLSBrZXJuZWxTaXplKTsKKyAgICBzaGFkb3dSZWN0
Lm1vdmUoc2hhZG93U2l6ZS53aWR0aCgpIC0gcmFkaXVzLCBzaGFkb3dTaXplLmhlaWdodCgpIC0g
cmFkaXVzKTsKICNlbmRpZgogfQogCkBAIC0xNzksOCArMTc3LDggQEAgc3RhdGljIGlubGluZSB2
b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgR3JhcGhpY3NDb250
ZXh0UHJpdmEKIAogICAgIEludFNpemUgc2hhZG93QnVmZmVyU2l6ZTsKICAgICBGbG9hdFJlY3Qg
c2hhZG93UmVjdDsKLSAgICBmbG9hdCBrZXJuZWxTaXplID0gMDsKLSAgICBHcmFwaGljc0NvbnRl
eHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hh
ZG93UmVjdCwga2VybmVsU2l6ZSwgcmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CisgICAg
ZmxvYXQgcmFkaXVzID0gMC5mOworICAgIEdyYXBoaWNzQ29udGV4dDo6Y2FsY3VsYXRlU2hhZG93
QnVmZmVyRGltZW5zaW9ucyhzaGFkb3dCdWZmZXJTaXplLCBzaGFkb3dSZWN0LCByYWRpdXMsIHJl
Y3QsIHNoYWRvd1NpemUsIHNoYWRvd0JsdXIpOwogCiAgICAgLy8gQ3JlYXRlIHN1aXRhYmx5LXNp
emVkIEltYWdlQnVmZmVyIHRvIGhvbGQgdGhlIHNoYWRvdy4KICAgICBPd25QdHI8SW1hZ2VCdWZm
ZXI+IHNoYWRvd0J1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2hhZG93QnVmZmVyU2l6ZSk7
CkBAIC0xODgsNyArMTg2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgR3JhcGhpY3NDb250ZXh0UHJpdmEKICAgICAvLyBEcmF3
IHNoYWRvdyBpbnRvIGEgbmV3IEltYWdlQnVmZmVyLgogICAgIGNhaXJvX3QqIHNoYWRvd0NvbnRl
eHQgPSBzaGFkb3dCdWZmZXItPmNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgY29w
eUNvbnRleHRQcm9wZXJ0aWVzKGNyLCBzaGFkb3dDb250ZXh0KTsKLSAgICBjYWlyb190cmFuc2xh
dGUoc2hhZG93Q29udGV4dCwgLXJlY3QueCgpICsga2VybmVsU2l6ZSwgLXJlY3QueSgpICsga2Vy
bmVsU2l6ZSk7CisgICAgY2Fpcm9fdHJhbnNsYXRlKHNoYWRvd0NvbnRleHQsIC1yZWN0LngoKSAr
IHJhZGl1cywgLXJlY3QueSgpICsgcmFkaXVzKTsKICAgICBjYWlyb19uZXdfcGF0aChzaGFkb3dD
b250ZXh0KTsKICAgICBjYWlyb19hcHBlbmRfcGF0aChzaGFkb3dDb250ZXh0LCBwYXRoKTsKIApA
QCAtMTk3LDcgKzE5NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFByaXZhCiAgICAgaWYgKHN0cm9r
ZVNoYWRvdykKICAgICAgICAgc2V0UGxhdGZvcm1TdHJva2UoY29udGV4dCwgc2hhZG93Q29udGV4
dCwgZ2NwKTsKIAotICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3JtU2hhZG93KHNoYWRvd0J1ZmZl
ci5yZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCBrZXJuZWxTaXplKTsKKyAgICBj
b250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhzaGFkb3dCdWZmZXIucmVsZWFzZSgpLCBzaGFk
b3dDb2xvciwgc2hhZG93UmVjdCwgcmFkaXVzKTsKICNlbmRpZgogfQogCkBAIC01NzksMTUgKzU3
NywxNSBAQCBzdGF0aWMgdm9pZCBkcmF3Qm9yZGVybGVzc1JlY3RTaGFkb3coR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmCiAKICAgICBJbnRTaXplIHNoYWRvd0J1ZmZl
clNpemU7CiAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3Q7Ci0gICAgZmxvYXQga2VybmVsU2l6ZSA9
IDA7Ci0gICAgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25z
KHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIGtlcm5lbFNpemUsIHJlY3QsIHNoYWRvd1Np
emUsIHNoYWRvd0JsdXIpOworICAgIGZsb2F0IHJhZGl1cyA9IDAuZjsKKyAgICBHcmFwaGljc0Nv
bnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwg
c2hhZG93UmVjdCwgcmFkaXVzLCByZWN0LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVyKTsKIAogICAg
IC8vIERyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VCdWZmZXIKICAgICBPd25QdHI8SW1hZ2VC
dWZmZXI+IHNoYWRvd0J1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2hhZG93QnVmZmVyU2l6
ZSk7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93QnVmZmVyLT5j
b250ZXh0KCk7Ci0gICAgc2hhZG93Q29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9p
bnQoa2VybmVsU2l6ZSwga2VybmVsU2l6ZSksIHJlY3Quc2l6ZSgpKSwgcmVjdENvbG9yLCBEZXZp
Y2VDb2xvclNwYWNlKTsKKyAgICBzaGFkb3dDb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoRmxv
YXRQb2ludChyYWRpdXMsIHJhZGl1cyksIHJlY3Quc2l6ZSgpKSwgcmVjdENvbG9yLCBEZXZpY2VD
b2xvclNwYWNlKTsKIAotICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3JtU2hhZG93KHNoYWRvd0J1
ZmZlci5yZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCBrZXJuZWxTaXplKTsKKyAg
ICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhzaGFkb3dCdWZmZXIucmVsZWFzZSgpLCBz
aGFkb3dDb2xvciwgc2hhZG93UmVjdCwgcmFkaXVzKTsKICNlbmRpZgogfQogCkBAIC04NjQsMjgg
Kzg2MiwzNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coRmxvYXRT
aXplIGNvbnN0JiBzaXplLCBmbG9hdCwgQ29sb3IgY29ucwogICAgIH0KIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmNyZWF0ZVBsYXRmb3JtU2hhZG93KFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+
IGJ1ZmZlciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRv
d1JlY3QsIGZsb2F0IGtlcm5lbFNpemUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlUGxh
dGZvcm1TaGFkb3coUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyLCBjb25zdCBDb2xvciYg
c2hhZG93Q29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQgcmFkaXVzKQog
ewogI2lmIEVOQUJMRShGSUxURVJTKQogICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKIAot
ICAgIC8vIGRyYXcgdGhlIHNoYWRvdyB3aXRob3V0IGJsdXJyaW5nLCBpZiBrZXJuZWxTaXplIGlz
IHplcm8KLSAgICBpZiAoIWtlcm5lbFNpemUpIHsKKyAgICAvLyBsaW1pdCByYWRpdXMgdG8gMTAw
MCwgdGhpcyBpcyB3aGF0IENHIGlzIGRvaW5nLgorICAgIHJhZGl1cyA9IHN0ZDo6bWluKDEwMDAu
ZiwgcmFkaXVzKTsKKworICAgIEZsb2F0U2l6ZSByZXNvbHV0aW9uID0gRmxvYXRTaXplKDEuMGYs
IDEuMGYpOworICAgIEZsb2F0UG9pbnQgYmx1clJhZGl1cyA9IEZsb2F0UG9pbnQocmFkaXVzLCBy
YWRpdXMpOworCisgICAgLy8gY2FsY3VsYXRlIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24KKyAgICBm
bG9hdCBzZHgsIHNkeTsKKyAgICBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlU3RkRGV2aWF0aW9u
KGJsdXJSYWRpdXMsIHJlc29sdXRpb24sIHNkeCwgc2R5KTsKKworICAgIC8vIGRyYXcgdGhlIHNo
YWRvdyB3aXRob3V0IGJsdXJyaW5nLCBpZiByYWRpdXMgaXMgemVybworICAgIGlmICghcmFkaXVz
IHx8ICghc2R4ICYmICFzZHkpKSB7CiAgICAgICAgIHNldENvbG9yKGNyLCBzaGFkb3dDb2xvcik7
CiAgICAgICAgIGNhaXJvX21hc2tfc3VyZmFjZShjciwgYnVmZmVyLT5pbWFnZSgpLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpLCBzaGFkb3dSZWN0LngoKSwgc2hhZG93UmVjdC55KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gbGltaXQga2VybmVsIHNpemUgdG8gMTAw
MCwgdGhpcyBpcyB3aGF0IENHIGlzIGRvaW5nLgotICAgIGtlcm5lbFNpemUgPSBzdGQ6Om1pbigx
MDAwLmYsIGtlcm5lbFNpemUpOwotCiAgICAgLy8gY3JlYXRlIGZpbHRlcgogICAgIFJlZlB0cjxG
aWx0ZXI+IGZpbHRlciA9IEltYWdlQnVmZmVyRmlsdGVyOjpjcmVhdGUoKTsKICAgICBmaWx0ZXIt
PnNldFNvdXJjZUltYWdlKGJ1ZmZlci5yZWxlYXNlKCkpOwogICAgIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IHNvdXJjZSA9IFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSgpOwogICAgIHNvdXJjZS0+c2V0U2Nh
bGVkU3ViUmVnaW9uKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNoYWRvd1JlY3Quc2l6ZSgpKSk7
CiAgICAgc291cmNlLT5zZXRJc0FscGhhSW1hZ2UodHJ1ZSk7Ci0gICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gYmx1ciA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoc291cmNlLmdldCgpLCBrZXJuZWxT
aXplLCBrZXJuZWxTaXplKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBibHVyID0gRkVHYXVz
c2lhbkJsdXI6OmNyZWF0ZShzb3VyY2UuZ2V0KCksIHNkeCwgc2R5KTsKICAgICBibHVyLT5zZXRT
Y2FsZWRTdWJSZWdpb24oRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2hhZG93UmVjdC5zaXplKCkp
KTsKICAgICBibHVyLT5hcHBseShmaWx0ZXIuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAppbmRleCA2NGZiZWRmLi5iOTUyZTJkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKQEAg
LTE0MCw4ICsxNDAsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogICAgIGlmIChjb250ZXh0
LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7CiAgICAg
ICAgIEludFNpemUgc2hhZG93QnVmZmVyU2l6ZTsKICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd1Jl
Y3Q7Ci0gICAgICAgIGZsb2F0IGtlcm5lbFNpemUgKDAuMCk7Ci0gICAgICAgIEdyYXBoaWNzQ29u
dGV4dDo6Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhzaGFkb3dCdWZmZXJTaXplLCBz
aGFkb3dSZWN0LCBrZXJuZWxTaXplLCBkc3RSZWN0LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVyKTsK
KyAgICAgICAgZmxvYXQgcmFkaXVzID0gMC5mOworICAgICAgICBjb250ZXh0LT5jYWxjdWxhdGVT
aGFkb3dCdWZmZXJEaW1lbnNpb25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIHJhZGl1
cywgZHN0UmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CiAgICAgICAgIHNoYWRvd0NvbG9y
ID0gY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShzaGFkb3dDb2xvci5yZ2IoKSwgKHNoYWRvd0NvbG9y
LmFscGhhKCkgKiAgY29udGV4dC0+Z2V0QWxwaGEoKSkgLyAyNTUuZik7CiAKICAgICAgICAgLy9k
cmF3IHNoYWRvdyBpbnRvIGEgbmV3IEltYWdlQnVmZmVyCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9p
ZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0LCBjb25zdCBGbG8KICAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKHNoYWRvd0NvbnRl
eHQsIDAsIDAsIGRzdFJlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQoKSk7CiAgICAgICAgIGNh
aXJvX2ZpbGwoc2hhZG93Q29udGV4dCk7CiAKLSAgICAgICAgY29udGV4dC0+Y3JlYXRlUGxhdGZv
cm1TaGFkb3coc2hhZG93QnVmZmVyLnJlbGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRvd1JlY3Qs
IGtlcm5lbFNpemUpOworICAgICAgICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhzaGFk
b3dCdWZmZXIucmVsZWFzZSgpLCBzaGFkb3dDb2xvciwgc2hhZG93UmVjdCwgcmFkaXVzKTsKICAg
ICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggNjFhZWE5MC4uNTdhNjQ3MiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCkBA
IC03MCwxMSArNzAsOCBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25ZKGZs
b2F0IHkpCiB9CiAKIHN0YXRpYyB2b2lkIGJveEJsdXIoQ2FudmFzUGl4ZWxBcnJheSomIHNyY1Bp
eGVsQXJyYXksIENhbnZhc1BpeGVsQXJyYXkqJiBkc3RQaXhlbEFycmF5LAotICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBkeCwgaW50IHN0cmlkZSwgaW50IHN0cmlkZUxpbmUsIGludCBlZmZlY3RX
aWR0aCwgaW50IGVmZmVjdEhlaWdodCwgYm9vbCBhbHBoYUltYWdlKQorICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBkeCwgaW50IGR4TGVmdCwgaW50IGR4UmlnaHQsIGludCBzdHJpZGUsIGlu
dCBzdHJpZGVMaW5lLCBpbnQgZWZmZWN0V2lkdGgsIGludCBlZmZlY3RIZWlnaHQsIGJvb2wgYWxw
aGFJbWFnZSkKIHsKLSAgICBpbnQgZHhMZWZ0ID0gZHggLyAyOwotICAgIGludCBkeFJpZ2h0ID0g
ZHggLSBkeExlZnQ7Ci0KICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGVmZmVjdEhlaWdodDsgKyt5
KSB7CiAgICAgICAgIGludCBsaW5lID0geSAqIHN0cmlkZUxpbmU7CiAgICAgICAgIGZvciAoaW50
IGNoYW5uZWwgPSAzOyBjaGFubmVsID49IDA7IC0tY2hhbm5lbCkgewpAQCAtOTksNiArOTYsMzUg
QEAgc3RhdGljIHZvaWQgYm94Qmx1cihDYW52YXNQaXhlbEFycmF5KiYgc3JjUGl4ZWxBcnJheSwg
Q2FudmFzUGl4ZWxBcnJheSomIGRzdFBpeGUKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIGtlcm5l
bFBvc2l0aW9uKGludCBib3hCbHVyLCB1bnNpZ25lZCBzdGQsIGludCYgZExlZnQsIGludCYgZFJp
Z2h0KQoreworICAgIC8vY2hlY2sgaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2ZpbHRlcnMuaHRt
bCNmZUdhdXNzaWFuQmx1ckVsZW1lbnQgZm9yIGRldGFpbHMKKyAgICBzd2l0Y2ggKGJveEJsdXIp
IHsKKyAgICBjYXNlIDA6CisgICAgICAgIGlmIChzdGQgJSAyID09IDApIHsKKyAgICAgICAgICAg
IGRMZWZ0ID0gc3RkIC8gMiAtIDE7CisgICAgICAgICAgICBkUmlnaHQgPSBzdGQgLSBkTGVmdDsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRMZWZ0ID0gc3RkIC8gMjsKKyAgICAgICAg
ICAgIGRSaWdodCA9IHN0ZCAtIGRMZWZ0OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgMToKKyAgICAgICAgaWYgKHN0ZCAlIDIgPT0gMCkgeworICAgICAgICAgICAgZExlZnQr
KzsKKyAgICAgICAgICAgIGRSaWdodC0tOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgMjoKKyAgICAgICAgaWYgKHN0ZCAlIDIgPT0gMCkgeworICAgICAgICAgICAgZFJpZ2h0
Kys7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgY29uc3Qg
ZmxvYXQgR0FVU1NJQU5fS0VSTkVMX0ZBQ1RPUiA9ICgzLmYgKiBzcXJ0KDIgKiBNX1BJKSAvIDQu
Zik7CisKIHZvaWQgRkVHYXVzc2lhbkJsdXI6OmFwcGx5KEZpbHRlciogZmlsdGVyKQogewogICAg
IG1faW4tPmFwcGx5KGZpbHRlcik7CkBAIC0xMTMsMTAgKzEzOSw4IEBAIHZvaWQgRkVHYXVzc2lh
bkJsdXI6OmFwcGx5KEZpbHRlciogZmlsdGVyKQogICAgIGlmIChtX3ggPT0gMCB8fCBtX3kgPT0g
MCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5zaWduZWQgc2R4ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGZsb29yKG1feCAqIGZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCkgKiAz
ICogc3FydCgyICogcGlEb3VibGUpIC8gNC5mICsgMC41ZikpOwotICAgIHVuc2lnbmVkIHNkeSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihmbG9vcihtX3kgKiBmaWx0ZXItPmZpbHRlclJlc29sdXRp
b24oKS5oZWlnaHQoKSAqIDMgKiBzcXJ0KDIgKiBwaURvdWJsZSkgLyA0LmYgKyAwLjVmKSk7Ci0g
ICAgc2R4ID0gbWF4KHNkeCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDEpKTsKLSAgICBzZHkgPSBt
YXgoc2R5LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMSkpOworICAgIHVuc2lnbmVkIHNkeCA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihmbG9vcihzdGQ6Om1heChtX3gsIDIuZikgKiBmaWx0ZXItPmZp
bHRlclJlc29sdXRpb24oKS53aWR0aCgpICogR0FVU1NJQU5fS0VSTkVMX0ZBQ1RPUiArIDAuNWYp
KTsKKyAgICB1bnNpZ25lZCBzZHkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZmxvb3Ioc3RkOjpt
YXgobV95LCAyLmYpICogZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0KCkgKiBHQVVT
U0lBTl9LRVJORUxfRkFDVE9SICsgMC41ZikpOwogCiAgICAgSW50UmVjdCBlZmZlY3REcmF3aW5n
UmVjdCA9IGNhbGN1bGF0ZURyYXdpbmdJbnRSZWN0KG1faW4tPnNjYWxlZFN1YlJlZ2lvbigpKTsK
ICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBzcmNJbWFnZURhdGEobV9pbi0+cmVzdWx0SW1hZ2UoKS0+
Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0YShlZmZlY3REcmF3aW5nUmVjdCkpOwpAQCAtMTI3LDkg
KzE1MSwxMiBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjphcHBseShGaWx0ZXIqIGZpbHRlcikKICAg
ICBDYW52YXNQaXhlbEFycmF5KiB0bXBQaXhlbEFycmF5KHRtcEltYWdlRGF0YS0+ZGF0YSgpKTsK
IAogICAgIGludCBzdHJpZGUgPSA0ICogaW1hZ2VSZWN0LndpZHRoKCk7CisgICAgaW50IGR4TGVm
dCwgZHhSaWdodCwgZHlMZWZ0LCBkeVJpZ2h0OwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsg
KytpKSB7Ci0gICAgICAgIGJveEJsdXIoc3JjUGl4ZWxBcnJheSwgdG1wUGl4ZWxBcnJheSwgc2R4
LCA0LCBzdHJpZGUsIGltYWdlUmVjdC53aWR0aCgpLCBpbWFnZVJlY3QuaGVpZ2h0KCksIGlzQWxw
aGFJbWFnZSgpKTsKLSAgICAgICAgYm94Qmx1cih0bXBQaXhlbEFycmF5LCBzcmNQaXhlbEFycmF5
LCBzZHksIHN0cmlkZSwgNCwgaW1hZ2VSZWN0LmhlaWdodCgpLCBpbWFnZVJlY3Qud2lkdGgoKSwg
aXNBbHBoYUltYWdlKCkpOworICAgICAgICBrZXJuZWxQb3NpdGlvbihpLCBzZHgsIGR4TGVmdCwg
ZHhSaWdodCk7CisgICAgICAgIGtlcm5lbFBvc2l0aW9uKGksIHNkeSwgZHlMZWZ0LCBkeVJpZ2h0
KTsKKyAgICAgICAgYm94Qmx1cihzcmNQaXhlbEFycmF5LCB0bXBQaXhlbEFycmF5LCBzZHgsIGR4
TGVmdCwgZHhSaWdodCwgNCwgc3RyaWRlLCBpbWFnZVJlY3Qud2lkdGgoKSwgaW1hZ2VSZWN0Lmhl
aWdodCgpLCBpc0FscGhhSW1hZ2UoKSk7CisgICAgICAgIGJveEJsdXIodG1wUGl4ZWxBcnJheSwg
c3JjUGl4ZWxBcnJheSwgc2R5LCBkeUxlZnQsIGR5UmlnaHQsIHN0cmlkZSwgNCwgaW1hZ2VSZWN0
LmhlaWdodCgpLCBpbWFnZVJlY3Qud2lkdGgoKSwgaXNBbHBoYUltYWdlKCkpOwogICAgIH0KIAog
ICAgIHJlc3VsdEltYWdlKCktPnB1dFByZW11bHRpcGxpZWRJbWFnZURhdGEoc3JjSW1hZ2VEYXRh
LmdldCgpLCBpbWFnZVJlY3QsIEludFBvaW50KCkpOwpAQCAtMTQ5LDYgKzE3NiwxMyBAQCBUZXh0
U3RyZWFtJiBGRUdhdXNzaWFuQmx1cjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFt
JiB0cywgaW50IGluZGVudCkgYwogICAgIHJldHVybiB0czsKIH0KIAordm9pZCBGRUdhdXNzaWFu
Qmx1cjo6Y2FsY3VsYXRlU3RkRGV2aWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHJhZGl1cywgY29u
c3QgRmxvYXRTaXplJiByZXNvbHV0aW9uLCBmbG9hdCYgc2R4LCBmbG9hdCYgc2R5KQoreworICAg
IC8vIEJsdXIgcmFkaXVzIHJlcHJlc2VudHMgMi8zIHRpbWVzIHRoZSBrZXJuZWwgc2l6ZSwgdGhl
IGRlc3QgcGl4ZWwgaXMgaGFsZiBvZiB0aGUgcmFkaXVzIGFwcGxpZWQgMyB0aW1lcworICAgIHNk
eCA9IHN0ZDo6bWF4KChyYWRpdXMueCgpICogMi8zIC0gMC41ZikgLyAocmVzb2x1dGlvbi53aWR0
aCgpICogR0FVU1NJQU5fS0VSTkVMX0ZBQ1RPUiksIDAuZik7CisgICAgc2R5ID0gc3RkOjptYXgo
KHJhZGl1cy55KCkgKiAyLzMgLSAwLjVmKSAvIChyZXNvbHV0aW9uLmhlaWdodCgpICogR0FVU1NJ
QU5fS0VSTkVMX0ZBQ1RPUiksIDAuZik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShGSUxURVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAppbmRleCBiY2MwMzBlLi4wYzk0ZTBjIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIu
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIu
aApAQCAtNDMsNiArNDMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wKCk7CiAgICAgVGV4dFN0
cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29u
c3Q7CiAKKyAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVTdGREZXZpYXRpb24oY29uc3QgRmxvYXRQ
b2ludCYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIHJlc29sdXRpb24sIGZsb2F0JiBzZHgsIGZs
b2F0JiBzZHkpOworCiBwcml2YXRlOgogICAgIEZFR2F1c3NpYW5CbHVyKEZpbHRlckVmZmVjdCos
IGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60298</attachid>
            <date>2010-07-01 15:31:06 -0700</date>
            <delta_ts>2010-07-14 10:51:32 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>blur_radius.patch</filename>
            <type>text/plain</type>
            <size>20129</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IGQ4NzA5Y2JmMGJhZmYzOGZkYTc5YWMxNmE1OTBmMGVlYmEzOTQzMDEKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgVGh1IEp1bCAxIDIy
OjE5OjI0IDIwMTAgKzAyMDAKCiAgICAyMDEwLTA3LTAxICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8
YWxleEBpZ2FsaWEuY29tPgogICAgCiAgICAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgogICAgCiAgICAgICAgICAgIFtHVEtdIFRoZSBzaXplIG9mIHRoZSBzaGFkb3cgaW1hZ2Ug
dXNlcyB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uCiAgICAgICAgICAgIHNpemUgaW5zdGVhZCBvZiB0
aGUgYmx1ciByYWRpdXMKICAgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQwNzkzCiAgICAKICAgICAgICAgICAgVGhlIGtlcm5lbFNpemUgdmFyaWFibGUg
d2FzIHJlbmFtZWQgdG8gcmFkaXVzIGFuZCByZWNhbGN1bGF0ZWQKICAgICAgICAgICAgY29uc2lk
ZXJpbmcgdGhlIENTUzMgc3BlY2lmaWNhdGlvbgogICAgICAgICAgICBodHRwOi8vd3d3LnczLm9y
Zy9UUi9jc3MzLWJhY2tncm91bmQvI3RoZS1ib3gtc2hhZG93LCBhbmQgdGhlCiAgICAgICAgICAg
IHZpc3VhbCByZXN1bHQgb2Ygb3RoZXIgYnJvd3NlcnMuIFRoZSBIVE1MNSBjYW52YXMgc2hhZG93
IHN0YW5kYXJkCiAgICAgICAgICAgIGRldmlhdGlvbiBjYWxjdWxhdGlvbiB0aGF0IHdhcyB1c2Vk
LCB3YXMgbm90IGFwcHJvcGlhdGUgZm9yIHRoZQogICAgICAgICAgICBibHVyIGRpc3RhbmNlIHNw
ZWNpZmllZCBpbiB0aGUgQ1NTMy4KICAgIAogICAgICAgICAgICBBZGRlZCBhbHNvIHRoZSByZWNv
bWVuZGF0aW9ucyBvZiBTVkcgcmVnYXJkaW5nIHRoZSBrZXJuZWwgc2l6ZQogICAgICAgICAgICBj
YWxjdWxhdGlvbiBmb3IgdGhlIGFwcHJveGltYXRpb24gb2YgdGhlIGdhdXNzaWFuCiAgICAgICAg
ICAgIGJsdXIuIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9maWx0ZXJzLmh0bWwjZmVHYXVzc2lh
bkJsdXJFbGVtZW50CiAgICAKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaDoKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fp
cm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6CiAgICAgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgog
ICAgICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZm
ZXJEaW1lbnNpb25zKToKICAgICAgICAgICAgQ2hhbmdlZCB0aGUgY2FsY3VsYXRpb24sIG5vdyB3
ZSB1c2UgdGhlIHBhcmFtZXRlciBpbiB0aGUgc3R5bGUKICAgICAgICAgICAgZGlyZWN0bHkgYXMg
cmVjb21lbmRlZCBpbiB0aGUgQ1NTMyBzdGFuZGFyZC4KICAgICAgICAgICAgKFdlYkNvcmU6OmRy
YXdQYXRoU2hhZG93KToKICAgICAgICAgICAgKFdlYkNvcmU6OmRyYXdCb3JkZXJsZXNzUmVjdFNo
YWRvdyk6CiAgICAgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZVBsYXRm
b3JtU2hhZG93KTogV2UgZ2V0IHRoZQogICAgICAgICAgICBzdGFuZGFyZCBkZXZpYXRpb24gZnJv
bSB0aGUgcmFkaXVzIHVzaW5nIHRoZSBuZXcgZnVuY3Rpb24gYW5kIHdlCiAgICAgICAgICAgIGNy
ZWF0ZSB0aGUgZmlsdGVyIHdpdGggdGhhdCBkZXZpYXRpb24uCiAgICAgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6ZHJhdyk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpib3hCbHVyKToKICAg
ICAgICAgICAgKFdlYkNvcmU6Omtlcm5lbFBvc2l0aW9uKTogQWRkZWQgdGhlIFNWRyBrZXJuZWwg
cG9zaXRpb24KICAgICAgICAgICAgcmVjb21lbmRhdGlvbi4KICAgICAgICAgICAgKFdlYkNvcmU6
OkZFR2F1c3NpYW5CbHVyOjphcHBseSk6CiAgICAgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFu
Qmx1cjo6Y2FsY3VsYXRlU3RkRGV2aWF0aW9uKTogQWRkZWQgdGhpcwogICAgICAgICAgICBmdW5j
dGlvbiB0aGF0IGdldHMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBmcm9tIHRoZSBibHVyCiAgICAg
ICAgICAgIHJhZGl1cy4gUmVxdWlyZWQgaW4gdGhlIENTUzMgY2FzZSB3aGVyZSB3ZSBoYXZlIHRo
aXMgcmFkaW8gYW5kIHdlCiAgICAgICAgICAgIG5lZWQgdGhlIGRldmlhdGlvbiB0byBpbml0aWFs
aXplIHRoZSBhbGdvcml0aG0uCiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5oOgogICAgCiAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVHYXVzc2lhbkJsdXIuaDoKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGY3YjI3NzYuLmRiNzVjMWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTAt
MDctMDEgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gVGhlIHNpemUgb2Yg
dGhlIHNoYWRvdyBpbWFnZSB1c2VzIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24KKyAgICAgICAgc2l6
ZSBpbnN0ZWFkIG9mIHRoZSBibHVyIHJhZGl1cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA3OTMKKworICAgICAgICBUaGUga2VybmVsU2l6ZSB2YXJp
YWJsZSB3YXMgcmVuYW1lZCB0byByYWRpdXMgYW5kIHJlY2FsY3VsYXRlZAorICAgICAgICBjb25z
aWRlcmluZyB0aGUgQ1NTMyBzcGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHA6Ly93d3cudzMub3Jn
L1RSL2NzczMtYmFja2dyb3VuZC8jdGhlLWJveC1zaGFkb3csIGFuZCB0aGUKKyAgICAgICAgdmlz
dWFsIHJlc3VsdCBvZiBvdGhlciBicm93c2Vycy4gVGhlIEhUTUw1IGNhbnZhcyBzaGFkb3cgc3Rh
bmRhcmQKKyAgICAgICAgZGV2aWF0aW9uIGNhbGN1bGF0aW9uIHRoYXQgd2FzIHVzZWQsIHdhcyBu
b3QgYXBwcm9waWF0ZSBmb3IgdGhlCisgICAgICAgIGJsdXIgZGlzdGFuY2Ugc3BlY2lmaWVkIGlu
IHRoZSBDU1MzLgorCisgICAgICAgIEFkZGVkIGFsc28gdGhlIHJlY29tZW5kYXRpb25zIG9mIFNW
RyByZWdhcmRpbmcgdGhlIGtlcm5lbCBzaXplCisgICAgICAgIGNhbGN1bGF0aW9uIGZvciB0aGUg
YXBwcm94aW1hdGlvbiBvZiB0aGUgZ2F1c3NpYW4KKyAgICAgICAgYmx1ci4gaHR0cDovL3d3dy53
My5vcmcvVFIvU1ZHL2ZpbHRlcnMuaHRtbCNmZUdhdXNzaWFuQmx1ckVsZW1lbnQKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNh
bGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMpOgorICAgICAgICBDaGFuZ2VkIHRoZSBjYWxj
dWxhdGlvbiwgbm93IHdlIHVzZSB0aGUgcGFyYW1ldGVyIGluIHRoZSBzdHlsZQorICAgICAgICBk
aXJlY3RseSBhcyByZWNvbWVuZGVkIGluIHRoZSBDU1MzIHN0YW5kYXJkLgorICAgICAgICAoV2Vi
Q29yZTo6ZHJhd1BhdGhTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0JvcmRlcmxlc3NS
ZWN0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlUGxh
dGZvcm1TaGFkb3cpOiBXZSBnZXQgdGhlCisgICAgICAgIHN0YW5kYXJkIGRldmlhdGlvbiBmcm9t
IHRoZSByYWRpdXMgdXNpbmcgdGhlIG5ldyBmdW5jdGlvbiBhbmQgd2UKKyAgICAgICAgY3JlYXRl
IHRoZSBmaWx0ZXIgd2l0aCB0aGF0IGRldmlhdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5C
bHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJveEJsdXIpOgorICAgICAgICAoV2ViQ29yZTo6
a2VybmVsUG9zaXRpb24pOiBBZGRlZCB0aGUgU1ZHIGtlcm5lbCBwb3NpdGlvbgorICAgICAgICBy
ZWNvbWVuZGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmFwcGx5KToK
KyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVTdGREZXZpYXRpb24p
OiBBZGRlZCB0aGlzCisgICAgICAgIGZ1bmN0aW9uIHRoYXQgZ2V0cyB0aGUgc3RhbmRhcmQgZGV2
aWF0aW9uIGZyb20gdGhlIGJsdXIKKyAgICAgICAgcmFkaXVzLiBSZXF1aXJlZCBpbiB0aGUgQ1NT
MyBjYXNlIHdoZXJlIHdlIGhhdmUgdGhpcyByYWRpbyBhbmQgd2UKKyAgICAgICAgbmVlZCB0aGUg
ZGV2aWF0aW9uIHRvIGluaXRpYWxpemUgdGhlIGFsZ29yaXRobS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6CisKIDIwMTAtMDctMDEgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFN0ZXZlIEZh
bGtlbmJ1cmcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApp
bmRleCA4NmJhYjdjLi4xMjM3NzZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKQEAgLTI3Nyw4ICsyNzcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQpOwogI2lmIFBMQVRGT1JNKENBSVJPKQogICAgICAg
ICBmbG9hdCBnZXRBbHBoYSgpOwotICAgICAgICB2b2lkIGNyZWF0ZVBsYXRmb3JtU2hhZG93KFBh
c3NPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBj
b25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0IGtlcm5lbFNpemUpOwotICAgICAgICBz
dGF0aWMgdm9pZCBjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKEludFNpemUmIHNoYWRv
d0J1ZmZlclNpemUsIEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQmIGtlcm5lbFNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgc291cmNlUmVjdCwgY29uc3QgRmxvYXRTaXplJiBzaGFkb3dTaXplLCBm
bG9hdCBzaGFkb3dCbHVyKTsKKyAgICAgICAgdm9pZCBjcmVhdGVQbGF0Zm9ybVNoYWRvdyhQYXNz
T3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgY29u
c3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCByYWRpdXMpOworICAgICAgICBzdGF0aWMg
dm9pZCBjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKEludFNpemUmIHNoYWRvd0J1ZmZl
clNpemUsIEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQmIHJhZGl1cywgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBGbG9hdFNpemUmIHNoYWRvd1NpemUsIGZsb2F0IHNoYWRv
d0JsdXIpOwogI2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29t
cG9zaXRlT3BlcmF0b3IpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q2Fpcm8uY3BwCmluZGV4IDkzMDUxY2IuLjQ2NGYyZjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAgLTk0LDE1ICs5NCwxNSBAQCB2b2lkIEZv
bnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTaW1wbGVGb250
RGF0YSogZm9udCwgY29ucwogICAgICAgICBGbG9hdFJlY3QgcmVjdChGbG9hdFBvaW50KCksIEZs
b2F0U2l6ZShleHRlbnRzLndpZHRoLCBleHRlbnRzLmhlaWdodCkpOwogICAgICAgICBJbnRTaXpl
IHNoYWRvd0J1ZmZlclNpemU7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0OwotICAgICAg
ICBmbG9hdCBrZXJuZWxTaXplID0gMC5mOwotICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1
bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwg
a2VybmVsU2l6ZSwgcmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CisgICAgICAgIGZsb2F0
IHJhZGl1cyA9IDAuZjsKKyAgICAgICAgY29udGV4dC0+Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGlt
ZW5zaW9ucyhzaGFkb3dCdWZmZXJTaXplLCBzaGFkb3dSZWN0LCByYWRpdXMsIHJlY3QsIHNoYWRv
d1NpemUsIHNoYWRvd0JsdXIpOwogCiAgICAgICAgIC8vIERyYXcgc2hhZG93IGludG8gYSBuZXcg
SW1hZ2VCdWZmZXIKICAgICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBzaGFkb3dCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNoYWRvd0J1ZmZlclNpemUpOwogICAgICAgICBHcmFwaGljc0Nv
bnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3dCdWZmZXItPmNvbnRleHQoKTsKICAgICAgICAg
Y2Fpcm9fdCogc2hhZG93Q3IgPSBzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKIAot
ICAgICAgICBjYWlyb190cmFuc2xhdGUoc2hhZG93Q3IsIGtlcm5lbFNpemUsIGV4dGVudHMuaGVp
Z2h0ICsga2VybmVsU2l6ZSk7CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShzaGFkb3dDciwgcmFk
aXVzLCBleHRlbnRzLmhlaWdodCArIHJhZGl1cyk7CiAKICAgICAgICAgY2Fpcm9fc2V0X3NjYWxl
ZF9mb250KHNoYWRvd0NyLCBmb250LT5wbGF0Zm9ybURhdGEoKS5zY2FsZWRGb250KCkpOwogICAg
ICAgICBjYWlyb19zaG93X2dseXBocyhzaGFkb3dDciwgZ2x5cGhzLCBudW1HbHlwaHMpOwpAQCAt
MTEzLDcgKzExMyw3IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBjb25zCiAgICAgICAgICAgICBjYWly
b19yZXN0b3JlKHNoYWRvd0NyKTsKICAgICAgICAgfQogICAgICAgICBjYWlyb190cmFuc2xhdGUo
Y3IsIDAuMCwgLWV4dGVudHMuaGVpZ2h0KTsKLSAgICAgICAgY29udGV4dC0+Y3JlYXRlUGxhdGZv
cm1TaGFkb3coc2hhZG93QnVmZmVyLnJlbGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRvd1JlY3Qs
IGtlcm5lbFNpemUpOworICAgICAgICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhzaGFk
b3dCdWZmZXIucmVsZWFzZSgpLCBzaGFkb3dDb2xvciwgc2hhZG93UmVjdCwgcmFkaXVzKTsKICNl
bHNlCiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgc2hhZG93U2l6ZS53aWR0aCgpLCBzaGFk
b3dTaXplLmhlaWdodCgpKTsKICAgICAgICAgY2Fpcm9fc2hvd19nbHlwaHMoY3IsIGdseXBocywg
bnVtR2x5cGhzKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggZGMzMjMxNy4uODUwYjNjOCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWly
by5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRl
eHRDYWlyby5jcHAKQEAgLTE0MywxOCArMTQzLDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5
Q29udGV4dFByb3BlcnRpZXMoY2Fpcm9fdCogc3JjQ3IsIGNhaXJvX3QqIGRzdENyKQogICAgIGNh
aXJvX3NldF9maWxsX3J1bGUoZHN0Q3IsIGNhaXJvX2dldF9maWxsX3J1bGUoc3JjQ3IpKTsKIH0K
IAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMo
SW50U2l6ZSYgc2hhZG93QnVmZmVyU2l6ZSwgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCYg
a2VybmVsU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBGbG9hdFNpemUm
IHNoYWRvd1NpemUsIGZsb2F0IHNoYWRvd0JsdXIpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2Fs
Y3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhJbnRTaXplJiBzaGFkb3dCdWZmZXJTaXplLCBG
bG9hdFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0JiByYWRpdXMsIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgRmxvYXRTaXplJiBzaGFkb3dTaXplLCBmbG9hdCBzaGFkb3dCbHVyKQog
ewogI2lmIEVOQUJMRShGSUxURVJTKQotICAgIC8vIGNhbGN1bGF0ZSB0aGUga2VybmVsIHNpemUg
YWNjb3JkaW5nIHRvIHRoZSBIVE1MNSBjYW52YXMgc2hhZG93IHNwZWNpZmljYXRpb24KLSAgICBr
ZXJuZWxTaXplID0gKHNoYWRvd0JsdXIgPCA4ID8gc2hhZG93Qmx1ciAvIDIuZiA6IHNxcnQoc2hh
ZG93Qmx1ciAqIDIuZikpOwotICAgIGludCBibHVyUmFkaXVzID0gY2VpbChrZXJuZWxTaXplKTsK
KyAgICByYWRpdXMgPSBzaGFkb3dCbHVyOwogCi0gICAgc2hhZG93QnVmZmVyU2l6ZSA9IEludFNp
emUoc291cmNlUmVjdC53aWR0aCgpICsgYmx1clJhZGl1cyAqIDIsIHNvdXJjZVJlY3QuaGVpZ2h0
KCkgKyBibHVyUmFkaXVzICogMik7CisgICAgc2hhZG93QnVmZmVyU2l6ZSA9IEludFNpemUoc291
cmNlUmVjdC53aWR0aCgpICsgcmFkaXVzICogMiwgc291cmNlUmVjdC5oZWlnaHQoKSArIHJhZGl1
cyAqIDIpOwogCiAgICAgLy8gZGV0ZXJtaW5lIGRpbWVuc2lvbnMgb2Ygc2hhZG93IHJlY3QKICAg
ICBzaGFkb3dSZWN0ID0gRmxvYXRSZWN0KHNvdXJjZVJlY3QubG9jYXRpb24oKSwgc2hhZG93QnVm
ZmVyU2l6ZSk7Ci0gICAgc2hhZG93UmVjdC5tb3ZlKHNoYWRvd1NpemUud2lkdGgoKSAtIGtlcm5l
bFNpemUsIHNoYWRvd1NpemUuaGVpZ2h0KCkgLSBrZXJuZWxTaXplKTsKKyAgICBzaGFkb3dSZWN0
Lm1vdmUoc2hhZG93U2l6ZS53aWR0aCgpIC0gcmFkaXVzLCBzaGFkb3dTaXplLmhlaWdodCgpIC0g
cmFkaXVzKTsKICNlbmRpZgogfQogCkBAIC0xNzksOCArMTc3LDggQEAgc3RhdGljIGlubGluZSB2
b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgR3JhcGhpY3NDb250
ZXh0UHJpdmEKIAogICAgIEludFNpemUgc2hhZG93QnVmZmVyU2l6ZTsKICAgICBGbG9hdFJlY3Qg
c2hhZG93UmVjdDsKLSAgICBmbG9hdCBrZXJuZWxTaXplID0gMDsKLSAgICBHcmFwaGljc0NvbnRl
eHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hh
ZG93UmVjdCwga2VybmVsU2l6ZSwgcmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CisgICAg
ZmxvYXQgcmFkaXVzID0gMC5mOworICAgIEdyYXBoaWNzQ29udGV4dDo6Y2FsY3VsYXRlU2hhZG93
QnVmZmVyRGltZW5zaW9ucyhzaGFkb3dCdWZmZXJTaXplLCBzaGFkb3dSZWN0LCByYWRpdXMsIHJl
Y3QsIHNoYWRvd1NpemUsIHNoYWRvd0JsdXIpOwogCiAgICAgLy8gQ3JlYXRlIHN1aXRhYmx5LXNp
emVkIEltYWdlQnVmZmVyIHRvIGhvbGQgdGhlIHNoYWRvdy4KICAgICBPd25QdHI8SW1hZ2VCdWZm
ZXI+IHNoYWRvd0J1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2hhZG93QnVmZmVyU2l6ZSk7
CkBAIC0xODgsNyArMTg2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgR3JhcGhpY3NDb250ZXh0UHJpdmEKICAgICAvLyBEcmF3
IHNoYWRvdyBpbnRvIGEgbmV3IEltYWdlQnVmZmVyLgogICAgIGNhaXJvX3QqIHNoYWRvd0NvbnRl
eHQgPSBzaGFkb3dCdWZmZXItPmNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgY29w
eUNvbnRleHRQcm9wZXJ0aWVzKGNyLCBzaGFkb3dDb250ZXh0KTsKLSAgICBjYWlyb190cmFuc2xh
dGUoc2hhZG93Q29udGV4dCwgLXJlY3QueCgpICsga2VybmVsU2l6ZSwgLXJlY3QueSgpICsga2Vy
bmVsU2l6ZSk7CisgICAgY2Fpcm9fdHJhbnNsYXRlKHNoYWRvd0NvbnRleHQsIC1yZWN0LngoKSAr
IHJhZGl1cywgLXJlY3QueSgpICsgcmFkaXVzKTsKICAgICBjYWlyb19uZXdfcGF0aChzaGFkb3dD
b250ZXh0KTsKICAgICBjYWlyb19hcHBlbmRfcGF0aChzaGFkb3dDb250ZXh0LCBwYXRoKTsKIApA
QCAtMTk3LDcgKzE5NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFByaXZhCiAgICAgaWYgKHN0cm9r
ZVNoYWRvdykKICAgICAgICAgc2V0UGxhdGZvcm1TdHJva2UoY29udGV4dCwgc2hhZG93Q29udGV4
dCwgZ2NwKTsKIAotICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3JtU2hhZG93KHNoYWRvd0J1ZmZl
ci5yZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCBrZXJuZWxTaXplKTsKKyAgICBj
b250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhzaGFkb3dCdWZmZXIucmVsZWFzZSgpLCBzaGFk
b3dDb2xvciwgc2hhZG93UmVjdCwgcmFkaXVzKTsKICNlbmRpZgogfQogCkBAIC01NzksMTUgKzU3
NywxNSBAQCBzdGF0aWMgdm9pZCBkcmF3Qm9yZGVybGVzc1JlY3RTaGFkb3coR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmCiAKICAgICBJbnRTaXplIHNoYWRvd0J1ZmZl
clNpemU7CiAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3Q7Ci0gICAgZmxvYXQga2VybmVsU2l6ZSA9
IDA7Ci0gICAgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25z
KHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIGtlcm5lbFNpemUsIHJlY3QsIHNoYWRvd1Np
emUsIHNoYWRvd0JsdXIpOworICAgIGZsb2F0IHJhZGl1cyA9IDAuZjsKKyAgICBHcmFwaGljc0Nv
bnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwg
c2hhZG93UmVjdCwgcmFkaXVzLCByZWN0LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVyKTsKIAogICAg
IC8vIERyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VCdWZmZXIKICAgICBPd25QdHI8SW1hZ2VC
dWZmZXI+IHNoYWRvd0J1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2hhZG93QnVmZmVyU2l6
ZSk7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93QnVmZmVyLT5j
b250ZXh0KCk7Ci0gICAgc2hhZG93Q29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9p
bnQoa2VybmVsU2l6ZSwga2VybmVsU2l6ZSksIHJlY3Quc2l6ZSgpKSwgcmVjdENvbG9yLCBEZXZp
Y2VDb2xvclNwYWNlKTsKKyAgICBzaGFkb3dDb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoRmxv
YXRQb2ludChyYWRpdXMsIHJhZGl1cyksIHJlY3Quc2l6ZSgpKSwgcmVjdENvbG9yLCBEZXZpY2VD
b2xvclNwYWNlKTsKIAotICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3JtU2hhZG93KHNoYWRvd0J1
ZmZlci5yZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCBrZXJuZWxTaXplKTsKKyAg
ICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhzaGFkb3dCdWZmZXIucmVsZWFzZSgpLCBz
aGFkb3dDb2xvciwgc2hhZG93UmVjdCwgcmFkaXVzKTsKICNlbmRpZgogfQogCkBAIC04NjQsMjgg
Kzg2MiwzNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coRmxvYXRT
aXplIGNvbnN0JiBzaXplLCBmbG9hdCwgQ29sb3IgY29ucwogICAgIH0KIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmNyZWF0ZVBsYXRmb3JtU2hhZG93KFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+
IGJ1ZmZlciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRv
d1JlY3QsIGZsb2F0IGtlcm5lbFNpemUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlUGxh
dGZvcm1TaGFkb3coUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyLCBjb25zdCBDb2xvciYg
c2hhZG93Q29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQgcmFkaXVzKQog
ewogI2lmIEVOQUJMRShGSUxURVJTKQogICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKIAot
ICAgIC8vIGRyYXcgdGhlIHNoYWRvdyB3aXRob3V0IGJsdXJyaW5nLCBpZiBrZXJuZWxTaXplIGlz
IHplcm8KLSAgICBpZiAoIWtlcm5lbFNpemUpIHsKKyAgICAvLyBsaW1pdCByYWRpdXMgdG8gMTAw
MCwgdGhpcyBpcyB3aGF0IENHIGlzIGRvaW5nLgorICAgIHJhZGl1cyA9IHN0ZDo6bWluKDEwMDAu
ZiwgcmFkaXVzKTsKKworICAgIEZsb2F0U2l6ZSByZXNvbHV0aW9uID0gRmxvYXRTaXplKDEuMGYs
IDEuMGYpOworICAgIEZsb2F0UG9pbnQgYmx1clJhZGl1cyA9IEZsb2F0UG9pbnQocmFkaXVzLCBy
YWRpdXMpOworCisgICAgLy8gY2FsY3VsYXRlIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24KKyAgICBm
bG9hdCBzZHgsIHNkeTsKKyAgICBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlU3RkRGV2aWF0aW9u
KGJsdXJSYWRpdXMsIHJlc29sdXRpb24sIHNkeCwgc2R5KTsKKworICAgIC8vIGRyYXcgdGhlIHNo
YWRvdyB3aXRob3V0IGJsdXJyaW5nLCBpZiByYWRpdXMgaXMgemVybworICAgIGlmICghcmFkaXVz
IHx8ICghc2R4ICYmICFzZHkpKSB7CiAgICAgICAgIHNldENvbG9yKGNyLCBzaGFkb3dDb2xvcik7
CiAgICAgICAgIGNhaXJvX21hc2tfc3VyZmFjZShjciwgYnVmZmVyLT5pbWFnZSgpLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpLCBzaGFkb3dSZWN0LngoKSwgc2hhZG93UmVjdC55KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gbGltaXQga2VybmVsIHNpemUgdG8gMTAw
MCwgdGhpcyBpcyB3aGF0IENHIGlzIGRvaW5nLgotICAgIGtlcm5lbFNpemUgPSBzdGQ6Om1pbigx
MDAwLmYsIGtlcm5lbFNpemUpOwotCiAgICAgLy8gY3JlYXRlIGZpbHRlcgogICAgIFJlZlB0cjxG
aWx0ZXI+IGZpbHRlciA9IEltYWdlQnVmZmVyRmlsdGVyOjpjcmVhdGUoKTsKICAgICBmaWx0ZXIt
PnNldFNvdXJjZUltYWdlKGJ1ZmZlci5yZWxlYXNlKCkpOwogICAgIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IHNvdXJjZSA9IFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSgpOwogICAgIHNvdXJjZS0+c2V0U2Nh
bGVkU3ViUmVnaW9uKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNoYWRvd1JlY3Quc2l6ZSgpKSk7
CiAgICAgc291cmNlLT5zZXRJc0FscGhhSW1hZ2UodHJ1ZSk7Ci0gICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gYmx1ciA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoc291cmNlLmdldCgpLCBrZXJuZWxT
aXplLCBrZXJuZWxTaXplKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBibHVyID0gRkVHYXVz
c2lhbkJsdXI6OmNyZWF0ZShzb3VyY2UuZ2V0KCksIHNkeCwgc2R5KTsKICAgICBibHVyLT5zZXRT
Y2FsZWRTdWJSZWdpb24oRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2hhZG93UmVjdC5zaXplKCkp
KTsKICAgICBibHVyLT5hcHBseShmaWx0ZXIuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAppbmRleCA2NGZiZWRmLi5iOTUyZTJkIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3Bw
CisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKQEAg
LTE0MCw4ICsxNDAsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogICAgIGlmIChjb250ZXh0
LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7CiAgICAg
ICAgIEludFNpemUgc2hhZG93QnVmZmVyU2l6ZTsKICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd1Jl
Y3Q7Ci0gICAgICAgIGZsb2F0IGtlcm5lbFNpemUgKDAuMCk7Ci0gICAgICAgIEdyYXBoaWNzQ29u
dGV4dDo6Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhzaGFkb3dCdWZmZXJTaXplLCBz
aGFkb3dSZWN0LCBrZXJuZWxTaXplLCBkc3RSZWN0LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVyKTsK
KyAgICAgICAgZmxvYXQgcmFkaXVzID0gMC5mOworICAgICAgICBjb250ZXh0LT5jYWxjdWxhdGVT
aGFkb3dCdWZmZXJEaW1lbnNpb25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIHJhZGl1
cywgZHN0UmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CiAgICAgICAgIHNoYWRvd0NvbG9y
ID0gY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShzaGFkb3dDb2xvci5yZ2IoKSwgKHNoYWRvd0NvbG9y
LmFscGhhKCkgKiAgY29udGV4dC0+Z2V0QWxwaGEoKSkgLyAyNTUuZik7CiAKICAgICAgICAgLy9k
cmF3IHNoYWRvdyBpbnRvIGEgbmV3IEltYWdlQnVmZmVyCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9p
ZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0LCBjb25zdCBGbG8KICAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKHNoYWRvd0NvbnRl
eHQsIDAsIDAsIGRzdFJlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQoKSk7CiAgICAgICAgIGNh
aXJvX2ZpbGwoc2hhZG93Q29udGV4dCk7CiAKLSAgICAgICAgY29udGV4dC0+Y3JlYXRlUGxhdGZv
cm1TaGFkb3coc2hhZG93QnVmZmVyLnJlbGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRvd1JlY3Qs
IGtlcm5lbFNpemUpOworICAgICAgICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhzaGFk
b3dCdWZmZXIucmVsZWFzZSgpLCBzaGFkb3dDb2xvciwgc2hhZG93UmVjdCwgcmFkaXVzKTsKICAg
ICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggNjFhZWE5MC4uZmI1N2Q3MSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCkBA
IC03MCwxMSArNzAsOCBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25ZKGZs
b2F0IHkpCiB9CiAKIHN0YXRpYyB2b2lkIGJveEJsdXIoQ2FudmFzUGl4ZWxBcnJheSomIHNyY1Bp
eGVsQXJyYXksIENhbnZhc1BpeGVsQXJyYXkqJiBkc3RQaXhlbEFycmF5LAotICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBkeCwgaW50IHN0cmlkZSwgaW50IHN0cmlkZUxpbmUsIGludCBlZmZlY3RX
aWR0aCwgaW50IGVmZmVjdEhlaWdodCwgYm9vbCBhbHBoYUltYWdlKQorICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBkeCwgaW50IGR4TGVmdCwgaW50IGR4UmlnaHQsIGludCBzdHJpZGUsIGlu
dCBzdHJpZGVMaW5lLCBpbnQgZWZmZWN0V2lkdGgsIGludCBlZmZlY3RIZWlnaHQsIGJvb2wgYWxw
aGFJbWFnZSkKIHsKLSAgICBpbnQgZHhMZWZ0ID0gZHggLyAyOwotICAgIGludCBkeFJpZ2h0ID0g
ZHggLSBkeExlZnQ7Ci0KICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGVmZmVjdEhlaWdodDsgKyt5
KSB7CiAgICAgICAgIGludCBsaW5lID0geSAqIHN0cmlkZUxpbmU7CiAgICAgICAgIGZvciAoaW50
IGNoYW5uZWwgPSAzOyBjaGFubmVsID49IDA7IC0tY2hhbm5lbCkgewpAQCAtOTksNiArOTYsMzQg
QEAgc3RhdGljIHZvaWQgYm94Qmx1cihDYW52YXNQaXhlbEFycmF5KiYgc3JjUGl4ZWxBcnJheSwg
Q2FudmFzUGl4ZWxBcnJheSomIGRzdFBpeGUKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIGtlcm5l
bFBvc2l0aW9uKGludCBib3hCbHVyLCB1bnNpZ25lZCBzdGQsIGludCYgZExlZnQsIGludCYgZFJp
Z2h0KQoreworICAgIC8vIGNoZWNrIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9maWx0ZXJzLmh0
bWwjZmVHYXVzc2lhbkJsdXJFbGVtZW50IGZvciBkZXRhaWxzCisgICAgc3dpdGNoIChib3hCbHVy
KSB7CisgICAgY2FzZSAwOgorICAgICAgICBpZiAoIShzdGQgJSAyKSkgeworICAgICAgICAgICAg
ZExlZnQgPSBzdGQgLyAyIC0gMTsKKyAgICAgICAgICAgIGRSaWdodCA9IHN0ZCAtIGRMZWZ0Owor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZExlZnQgPSBzdGQgLyAyOworICAgICAgICAg
ICAgZFJpZ2h0ID0gc3RkIC0gZExlZnQ7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSAxOgorICAgICAgICBpZiAoIShzdGQgJSAyKSkgeworICAgICAgICAgICAgZExlZnQrKzsK
KyAgICAgICAgICAgIGRSaWdodC0tOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgMjoKKyAgICAgICAgaWYgKCEoc3RkICUgMikpCisgICAgICAgICAgICBkUmlnaHQrKzsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMgY29uc3QgZmxvYXQgZ2F1c3NpYW5LZXJu
ZWxGYWN0b3IgPSAoMy5mICogc3FydCgyICogTV9QSSkgLyA0LmYpOworCiB2b2lkIEZFR2F1c3Np
YW5CbHVyOjphcHBseShGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBtX2luLT5hcHBseShmaWx0ZXIp
OwpAQCAtMTEzLDEwICsxMzgsOCBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjphcHBseShGaWx0ZXIq
IGZpbHRlcikKICAgICBpZiAobV94ID09IDAgfHwgbV95ID09IDApCiAgICAgICAgIHJldHVybjsK
IAotICAgIHVuc2lnbmVkIHNkeCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihmbG9vcihtX3ggKiBm
aWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS53aWR0aCgpICogMyAqIHNxcnQoMiAqIHBpRG91Ymxl
KSAvIDQuZiArIDAuNWYpKTsKLSAgICB1bnNpZ25lZCBzZHkgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZmxvb3IobV95ICogZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0KCkgKiAzICog
c3FydCgyICogcGlEb3VibGUpIC8gNC5mICsgMC41ZikpOwotICAgIHNkeCA9IG1heChzZHgsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPigxKSk7Ci0gICAgc2R5ID0gbWF4KHNkeSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KDEpKTsKKyAgICB1bnNpZ25lZCBzZHggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
Zmxvb3Ioc3RkOjptYXgobV94LCAyLmYpICogZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCkud2lk
dGgoKSAqIGdhdXNzaWFuS2VybmVsRmFjdG9yICsgMC41ZikpOworICAgIHVuc2lnbmVkIHNkeSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihmbG9vcihzdGQ6Om1heChtX3ksIDIuZikgKiBmaWx0ZXIt
PmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSAqIGdhdXNzaWFuS2VybmVsRmFjdG9yICsgMC41
ZikpOwogCiAgICAgSW50UmVjdCBlZmZlY3REcmF3aW5nUmVjdCA9IGNhbGN1bGF0ZURyYXdpbmdJ
bnRSZWN0KG1faW4tPnNjYWxlZFN1YlJlZ2lvbigpKTsKICAgICBSZWZQdHI8SW1hZ2VEYXRhPiBz
cmNJbWFnZURhdGEobV9pbi0+cmVzdWx0SW1hZ2UoKS0+Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0
YShlZmZlY3REcmF3aW5nUmVjdCkpOwpAQCAtMTI3LDkgKzE1MCwxMiBAQCB2b2lkIEZFR2F1c3Np
YW5CbHVyOjphcHBseShGaWx0ZXIqIGZpbHRlcikKICAgICBDYW52YXNQaXhlbEFycmF5KiB0bXBQ
aXhlbEFycmF5KHRtcEltYWdlRGF0YS0+ZGF0YSgpKTsKIAogICAgIGludCBzdHJpZGUgPSA0ICog
aW1hZ2VSZWN0LndpZHRoKCk7CisgICAgaW50IGR4TGVmdCwgZHhSaWdodCwgZHlMZWZ0LCBkeVJp
Z2h0OwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKSB7Ci0gICAgICAgIGJveEJsdXIo
c3JjUGl4ZWxBcnJheSwgdG1wUGl4ZWxBcnJheSwgc2R4LCA0LCBzdHJpZGUsIGltYWdlUmVjdC53
aWR0aCgpLCBpbWFnZVJlY3QuaGVpZ2h0KCksIGlzQWxwaGFJbWFnZSgpKTsKLSAgICAgICAgYm94
Qmx1cih0bXBQaXhlbEFycmF5LCBzcmNQaXhlbEFycmF5LCBzZHksIHN0cmlkZSwgNCwgaW1hZ2VS
ZWN0LmhlaWdodCgpLCBpbWFnZVJlY3Qud2lkdGgoKSwgaXNBbHBoYUltYWdlKCkpOworICAgICAg
ICBrZXJuZWxQb3NpdGlvbihpLCBzZHgsIGR4TGVmdCwgZHhSaWdodCk7CisgICAgICAgIGtlcm5l
bFBvc2l0aW9uKGksIHNkeSwgZHlMZWZ0LCBkeVJpZ2h0KTsKKyAgICAgICAgYm94Qmx1cihzcmNQ
aXhlbEFycmF5LCB0bXBQaXhlbEFycmF5LCBzZHgsIGR4TGVmdCwgZHhSaWdodCwgNCwgc3RyaWRl
LCBpbWFnZVJlY3Qud2lkdGgoKSwgaW1hZ2VSZWN0LmhlaWdodCgpLCBpc0FscGhhSW1hZ2UoKSk7
CisgICAgICAgIGJveEJsdXIodG1wUGl4ZWxBcnJheSwgc3JjUGl4ZWxBcnJheSwgc2R5LCBkeUxl
ZnQsIGR5UmlnaHQsIHN0cmlkZSwgNCwgaW1hZ2VSZWN0LmhlaWdodCgpLCBpbWFnZVJlY3Qud2lk
dGgoKSwgaXNBbHBoYUltYWdlKCkpOwogICAgIH0KIAogICAgIHJlc3VsdEltYWdlKCktPnB1dFBy
ZW11bHRpcGxpZWRJbWFnZURhdGEoc3JjSW1hZ2VEYXRhLmdldCgpLCBpbWFnZVJlY3QsIEludFBv
aW50KCkpOwpAQCAtMTQ5LDYgKzE3NSwxMyBAQCBUZXh0U3RyZWFtJiBGRUdhdXNzaWFuQmx1cjo6
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgYwogICAg
IHJldHVybiB0czsKIH0KIAordm9pZCBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlU3RkRGV2aWF0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHJhZGl1cywgY29uc3QgRmxvYXRTaXplJiByZXNvbHV0aW9u
LCBmbG9hdCYgc2R4LCBmbG9hdCYgc2R5KQoreworICAgIC8vIEJsdXIgcmFkaXVzIHJlcHJlc2Vu
dHMgMi8zIHRpbWVzIHRoZSBrZXJuZWwgc2l6ZSwgdGhlIGRlc3QgcGl4ZWwgaXMgaGFsZiBvZiB0
aGUgcmFkaXVzIGFwcGxpZWQgMyB0aW1lcworICAgIHNkeCA9IHN0ZDo6bWF4KChyYWRpdXMueCgp
ICogMiAvIDMgLSAwLjVmKSAvIChyZXNvbHV0aW9uLndpZHRoKCkgKiBnYXVzc2lhbktlcm5lbEZh
Y3RvciksIDAuZik7CisgICAgc2R5ID0gc3RkOjptYXgoKHJhZGl1cy55KCkgKiAyIC8gMyAtIDAu
NWYpIC8gKHJlc29sdXRpb24uaGVpZ2h0KCkgKiBnYXVzc2lhbktlcm5lbEZhY3RvciksIDAuZik7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShGSUxURVJT
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3Np
YW5CbHVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJs
dXIuaAppbmRleCBiY2MwMzBlLi4wYzk0ZTBjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaApAQCAtNDMsNiArNDMsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkdW1wKCk7CiAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Q7CiAKKyAgICBzdGF0aWMgdm9pZCBj
YWxjdWxhdGVTdGREZXZpYXRpb24oY29uc3QgRmxvYXRQb2ludCYgcmFkaXVzLCBjb25zdCBGbG9h
dFNpemUmIHJlc29sdXRpb24sIGZsb2F0JiBzZHgsIGZsb2F0JiBzZHkpOworCiBwcml2YXRlOgog
ICAgIEZFR2F1c3NpYW5CbHVyKEZpbHRlckVmZmVjdCosIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxv
YXQmKTsKIAo=
</data>
<flag name="review"
          id="47704"
          type_id="1"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61538</attachid>
            <date>2010-07-14 10:51:32 -0700</date>
            <delta_ts>2010-08-11 02:19:19 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>kernel_size.patch</filename>
            <type>text/plain</type>
            <size>16929</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">RnJvbSAxOWYyZWEwYzhlNDhkZjkyNjZmN2I2ZDVjYzA4MzVlMmQzMGIwYmY2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+
CkRhdGU6IFdlZCwgMTQgSnVsIDIwMTAgMTk6NDI6NDkgKzAyMDAKU3ViamVjdDogW1BBVENIXSAy
MDEwLTA3LTE1ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgoKICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0dUS10gVGhlIHNpemUgb2Yg
dGhlIHNoYWRvdyBpbWFnZSB1c2VzIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24KICAgICAgICBzaXpl
IGluc3RlYWQgb2YgdGhlIGJsdXIgcmFkaXVzCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwNzkzCgogICAgICAgIFRoZSBrZXJuZWxTaXplIHZhcmlhYmxl
IHdhcyByZW5hbWVkIHRvIHJhZGl1cyBhbmQgcmVjYWxjdWxhdGVkCiAgICAgICAgY29uc2lkZXJp
bmcgdGhlIENTUzMgc3BlY2lmaWNhdGlvbgogICAgICAgIGh0dHA6Ly93d3cudzMub3JnL1RSL2Nz
czMtYmFja2dyb3VuZC8jdGhlLWJveC1zaGFkb3csIGFuZCB0aGUKICAgICAgICB2aXN1YWwgcmVz
dWx0IG9mIG90aGVyIGJyb3dzZXJzLiBUaGUgSFRNTDUgY2FudmFzIHNoYWRvdyBzdGFuZGFyZAog
ICAgICAgIGRldmlhdGlvbiBjYWxjdWxhdGlvbiB0aGF0IHdhcyB1c2VkLCB3YXMgbm90IGFwcHJv
cGlhdGUgZm9yIHRoZQogICAgICAgIGJsdXIgZGlzdGFuY2Ugc3BlY2lmaWVkIGluIHRoZSBDU1Mz
LgoKICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgogICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcDoKICAgICAgICAoV2ViQ29y
ZTo6Rm9udDo6ZHJhd0dseXBocyk6CiAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRDYWlyby5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyk6CiAgICAgICAgQ2hhbmdlZCB0aGUg
Y2FsY3VsYXRpb24sIG5vdyB3ZSB1c2UgdGhlIHBhcmFtZXRlciBpbiB0aGUgc3R5bGUKICAgICAg
ICBkaXJlY3RseSBhcyByZWNvbWVuZGVkIGluIHRoZSBDU1MzIHN0YW5kYXJkLgogICAgICAgIChX
ZWJDb3JlOjpkcmF3UGF0aFNoYWRvdyk6CiAgICAgICAgKFdlYkNvcmU6OmRyYXdCb3JkZXJsZXNz
UmVjdFNoYWRvdyk6CiAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlUGxh
dGZvcm1TaGFkb3cpOiBXZSBnZXQgdGhlCiAgICAgICAgc3RhbmRhcmQgZGV2aWF0aW9uIGZyb20g
dGhlIHJhZGl1cyB1c2luZyB0aGUgbmV3IGZ1bmN0aW9uIGFuZCB3ZQogICAgICAgIGNyZWF0ZSB0
aGUgZmlsdGVyIHdpdGggdGhhdCBkZXZpYXRpb24uCiAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUNhaXJvLmNwcDoKICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRy
YXcpOgogICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5j
cHA6CiAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVTdGREZXZpYXRp
b24pOiAgQWRkZWQgdGhpcwogICAgICAgIGZ1bmN0aW9uIHRoYXQgZ2V0cyB0aGUgc3RhbmRhcmQg
ZGV2aWF0aW9uIGZyb20gdGhlIGJsdXIKICAgICAgICByYWRpdXMuIFJlcXVpcmVkIGluIHRoZSBD
U1MzIGNhc2Ugd2hlcmUgd2UgaGF2ZSB0aGlzIHJhZGlvIGFuZCB3ZQogICAgICAgIG5lZWQgdGhl
IGRldmlhdGlvbiB0byBpbml0aWFsaXplIHRoZSBhbGdvcml0aG0uCiAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6CgoqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaDoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzYgKysrKysrKysrKysrKysrCiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oICAgICAgICB8ICAgIDQgKy0KIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcCAgICAgIHwgICAgOCAr
Ky0tCiAuLi4vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwICAgICAgICB8
ICAgNDcgKysrKysrKysrKystLS0tLS0tLS0KIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VDYWlyby5jcHAgICAgIHwgICAgNiArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwICAgfCAgICA3ICsrKwogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmggfCAgICAyICsKIDcgZmlsZXMgY2hhbmdl
ZCwgODAgaW5zZXJ0aW9ucygrKSwgMzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA1YTdjZmFlLi4xZGE3ZmE3IDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM5IEBACisyMDEwLTA3LTE1ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtHVEtdIFRoZSBzaXplIG9mIHRoZSBzaGFkb3cgaW1hZ2UgdXNlcyB0aGUgc3RhbmRhcmQgZGV2
aWF0aW9uCisgICAgICAgIHNpemUgaW5zdGVhZCBvZiB0aGUgYmx1ciByYWRpdXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNzkzCisKKyAgICAgICAg
VGhlIGtlcm5lbFNpemUgdmFyaWFibGUgd2FzIHJlbmFtZWQgdG8gcmFkaXVzIGFuZCByZWNhbGN1
bGF0ZWQKKyAgICAgICAgY29uc2lkZXJpbmcgdGhlIENTUzMgc3BlY2lmaWNhdGlvbgorICAgICAg
ICBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWJhY2tncm91bmQvI3RoZS1ib3gtc2hhZG93LCBh
bmQgdGhlCisgICAgICAgIHZpc3VhbCByZXN1bHQgb2Ygb3RoZXIgYnJvd3NlcnMuIFRoZSBIVE1M
NSBjYW52YXMgc2hhZG93IHN0YW5kYXJkCisgICAgICAgIGRldmlhdGlvbiBjYWxjdWxhdGlvbiB0
aGF0IHdhcyB1c2VkLCB3YXMgbm90IGFwcHJvcGlhdGUgZm9yIHRoZQorICAgICAgICBibHVyIGRp
c3RhbmNlIHNwZWNpZmllZCBpbiB0aGUgQ1NTMy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3R2x5cGhzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZl
ckRpbWVuc2lvbnMpOgorICAgICAgICBDaGFuZ2VkIHRoZSBjYWxjdWxhdGlvbiwgbm93IHdlIHVz
ZSB0aGUgcGFyYW1ldGVyIGluIHRoZSBzdHlsZQorICAgICAgICBkaXJlY3RseSBhcyByZWNvbWVu
ZGVkIGluIHRoZSBDU1MzIHN0YW5kYXJkLgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFk
b3cpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0JvcmRlcmxlc3NSZWN0U2hhZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1TaGFkb3cpOiBXZSBn
ZXQgdGhlCisgICAgICAgIHN0YW5kYXJkIGRldmlhdGlvbiBmcm9tIHRoZSByYWRpdXMgdXNpbmcg
dGhlIG5ldyBmdW5jdGlvbiBhbmQgd2UKKyAgICAgICAgY3JlYXRlIHRoZSBmaWx0ZXIgd2l0aCB0
aGF0IGRldmlhdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNh
aXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVTdGREZXZpYXRpb24pOiAgQWRkZWQg
dGhpcworICAgICAgICBmdW5jdGlvbiB0aGF0IGdldHMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBm
cm9tIHRoZSBibHVyCisgICAgICAgIHJhZGl1cy4gUmVxdWlyZWQgaW4gdGhlIENTUzMgY2FzZSB3
aGVyZSB3ZSBoYXZlIHRoaXMgcmFkaW8gYW5kIHdlCisgICAgICAgIG5lZWQgdGhlIGRldmlhdGlv
biB0byBpbml0aWFsaXplIHRoZSBhbGdvcml0aG0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oOgorCiAyMDEwLTA3LTE0ICBBbGVqYW5kcm8gRy4g
Q2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5k
ZXggODZiYWI3Yy4uMTIzNzc2YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5oCkBAIC0yNzcsOCArMjc3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHNldEFscGhhKGZsb2F0KTsKICNpZiBQTEFURk9STShDQUlSTykKICAgICAgICAg
ZmxvYXQgZ2V0QWxwaGEoKTsKLSAgICAgICAgdm9pZCBjcmVhdGVQbGF0Zm9ybVNoYWRvdyhQYXNz
T3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgY29u
c3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCBrZXJuZWxTaXplKTsKLSAgICAgICAgc3Rh
dGljIHZvaWQgY2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhJbnRTaXplJiBzaGFkb3dC
dWZmZXJTaXplLCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0JiBrZXJuZWxTaXplLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93U2l6ZSwgZmxv
YXQgc2hhZG93Qmx1cik7CisgICAgICAgIHZvaWQgY3JlYXRlUGxhdGZvcm1TaGFkb3coUGFzc093
blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGNvbnN0
IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQgcmFkaXVzKTsKKyAgICAgICAgc3RhdGljIHZv
aWQgY2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhJbnRTaXplJiBzaGFkb3dCdWZmZXJT
aXplLCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0JiByYWRpdXMsIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgRmxvYXRTaXplJiBzaGFkb3dTaXplLCBmbG9hdCBzaGFkb3dC
bHVyKTsKICNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBv
c2l0ZU9wZXJhdG9yKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udENhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENh
aXJvLmNwcAppbmRleCA5MjE3YTgxLi5mNmQ4ZjNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCkBAIC05NCwxNSArOTQsMTUgQEAgdm9pZCBGb250
OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgU2ltcGxlRm9udERh
dGEqIGZvbnQsIGNvbnMKICAgICAgICAgRmxvYXRSZWN0IHJlY3QoRmxvYXRQb2ludCgpLCBGbG9h
dFNpemUoZXh0ZW50cy53aWR0aCwgZXh0ZW50cy5oZWlnaHQpKTsKICAgICAgICAgSW50U2l6ZSBz
aGFkb3dCdWZmZXJTaXplOwogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdDsKLSAgICAgICAg
ZmxvYXQga2VybmVsU2l6ZSA9IDAuZjsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxh
dGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIGtl
cm5lbFNpemUsIHJlY3QsIHNoYWRvd1NpemUsIHNoYWRvd0JsdXIpOworICAgICAgICBmbG9hdCBy
YWRpdXMgPSAwOworICAgICAgICBjb250ZXh0LT5jYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNp
b25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIHJhZGl1cywgcmVjdCwgc2hhZG93U2l6
ZSwgc2hhZG93Qmx1cik7CiAKICAgICAgICAgLy8gRHJhdyBzaGFkb3cgaW50byBhIG5ldyBJbWFn
ZUJ1ZmZlcgogICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IHNoYWRvd0J1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGUoc2hhZG93QnVmZmVyU2l6ZSk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4
dCogc2hhZG93Q29udGV4dCA9IHNoYWRvd0J1ZmZlci0+Y29udGV4dCgpOwogICAgICAgICBjYWly
b190KiBzaGFkb3dDciA9IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogCi0gICAg
ICAgIGNhaXJvX3RyYW5zbGF0ZShzaGFkb3dDciwga2VybmVsU2l6ZSwgZXh0ZW50cy5oZWlnaHQg
KyBrZXJuZWxTaXplKTsKKyAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKHNoYWRvd0NyLCByYWRpdXMs
IGV4dGVudHMuaGVpZ2h0ICsgcmFkaXVzKTsKIAogICAgICAgICBjYWlyb19zZXRfc2NhbGVkX2Zv
bnQoc2hhZG93Q3IsIGZvbnQtPnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSk7CiAgICAgICAg
IGNhaXJvX3Nob3dfZ2x5cGhzKHNoYWRvd0NyLCBnbHlwaHMsIG51bUdseXBocyk7CkBAIC0xMTMs
NyArMTEzLDcgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQsIGNvbnMKICAgICAgICAgICAgIGNhaXJvX3Jl
c3RvcmUoc2hhZG93Q3IpOwogICAgICAgICB9CiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjciwg
MC4wLCAtZXh0ZW50cy5oZWlnaHQpOwotICAgICAgICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNo
YWRvdyhzaGFkb3dCdWZmZXIucmVsZWFzZSgpLCBzaGFkb3dDb2xvciwgc2hhZG93UmVjdCwga2Vy
bmVsU2l6ZSk7CisgICAgICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3JtU2hhZG93KHNoYWRvd0J1
ZmZlci5yZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCByYWRpdXMpOwogI2Vsc2UK
ICAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCBzaGFkb3dTaXplLndpZHRoKCksIHNoYWRvd1Np
emUuaGVpZ2h0KCkpOwogICAgICAgICBjYWlyb19zaG93X2dseXBocyhjciwgZ2x5cGhzLCBudW1H
bHlwaHMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCA2ZWQ4OTA1Li4yZWJlMWI4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcApAQCAtNCw2ICs0LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBEaXJr
IFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkg
THRkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEJyZW50IEZ1bGdoYW0gPGJmdWxnaGFtQHdlYmtp
dC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhLCBTLkwuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTYwLDYgKzYxLDggQEAKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHRQbGF0Zm9ybVByaXZhdGVDYWlyby5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBy
aXZhdGUuaCIKIAordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKwogI2lmbmRlZiBNX1BJCiAjZGVmaW5l
IE1fUEkgMy4xNDE1OTI2NTM1ODk3OTMyMzg0NgogI2VuZGlmCkBAIC0xNDMsMTggKzE0NiwxNyBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgY29weUNvbnRleHRQcm9wZXJ0aWVzKGNhaXJvX3QqIHNyY0Ny
LCBjYWlyb190KiBkc3RDcikKICAgICBjYWlyb19zZXRfZmlsbF9ydWxlKGRzdENyLCBjYWlyb19n
ZXRfZmlsbF9ydWxlKHNyY0NyKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxh
dGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKEludFNpemUmIHNoYWRvd0J1ZmZlclNpemUsIEZsb2F0
UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQmIGtlcm5lbFNpemUsIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgRmxvYXRTaXplJiBzaGFkb3dTaXplLCBmbG9hdCBzaGFkb3dCbHVyKQor
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoSW50
U2l6ZSYgc2hhZG93QnVmZmVyU2l6ZSwgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCYgcmFk
aXVzLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93
U2l6ZSwgZmxvYXQgc2hhZG93Qmx1cikKIHsKICNpZiBFTkFCTEUoRklMVEVSUykKLSAgICAvLyBj
YWxjdWxhdGUgdGhlIGtlcm5lbCBzaXplIGFjY29yZGluZyB0byB0aGUgSFRNTDUgY2FudmFzIHNo
YWRvdyBzcGVjaWZpY2F0aW9uCi0gICAga2VybmVsU2l6ZSA9IChzaGFkb3dCbHVyIDwgOCA/IHNo
YWRvd0JsdXIgLyAyLmYgOiBzcXJ0KHNoYWRvd0JsdXIgKiAyLmYpKTsKLSAgICBpbnQgYmx1clJh
ZGl1cyA9IGNlaWwoa2VybmVsU2l6ZSk7CisgICAgLy8gbGltaXQgcmFkaXVzIHRvIDEyOAorICAg
IHJhZGl1cyA9IG1pbigxMjguZiwgbWF4KHNoYWRvd0JsdXIsIDAuZikpOwogCi0gICAgc2hhZG93
QnVmZmVyU2l6ZSA9IEludFNpemUoc291cmNlUmVjdC53aWR0aCgpICsgYmx1clJhZGl1cyAqIDIs
IHNvdXJjZVJlY3QuaGVpZ2h0KCkgKyBibHVyUmFkaXVzICogMik7CisgICAgc2hhZG93QnVmZmVy
U2l6ZSA9IEludFNpemUoc291cmNlUmVjdC53aWR0aCgpICsgcmFkaXVzICogMiwgc291cmNlUmVj
dC5oZWlnaHQoKSArIHJhZGl1cyAqIDIpOwogCiAgICAgLy8gZGV0ZXJtaW5lIGRpbWVuc2lvbnMg
b2Ygc2hhZG93IHJlY3QKICAgICBzaGFkb3dSZWN0ID0gRmxvYXRSZWN0KHNvdXJjZVJlY3QubG9j
YXRpb24oKSwgc2hhZG93QnVmZmVyU2l6ZSk7Ci0gICAgc2hhZG93UmVjdC5tb3ZlKHNoYWRvd1Np
emUud2lkdGgoKSAtIGtlcm5lbFNpemUsIHNoYWRvd1NpemUuaGVpZ2h0KCkgLSBrZXJuZWxTaXpl
KTsKKyAgICBzaGFkb3dSZWN0Lm1vdmUoc2hhZG93U2l6ZS53aWR0aCgpIC0gcmFkaXVzLCBzaGFk
b3dTaXplLmhlaWdodCgpIC0gcmFkaXVzKTsKICNlbmRpZgogfQogCkBAIC0xNzksOCArMTgxLDgg
QEAgc3RhdGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgR3JhcGhpY3NDb250ZXh0UHJpdmEKIAogICAgIEludFNpemUgc2hhZG93QnVmZmVyU2l6
ZTsKICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdDsKLSAgICBmbG9hdCBrZXJuZWxTaXplID0gMDsK
LSAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hh
ZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwga2VybmVsU2l6ZSwgcmVjdCwgc2hhZG93U2l6ZSwg
c2hhZG93Qmx1cik7CisgICAgZmxvYXQgcmFkaXVzID0gMDsKKyAgICBHcmFwaGljc0NvbnRleHQ6
OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93
UmVjdCwgcmFkaXVzLCByZWN0LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVyKTsKIAogICAgIC8vIENy
ZWF0ZSBzdWl0YWJseS1zaXplZCBJbWFnZUJ1ZmZlciB0byBob2xkIHRoZSBzaGFkb3cuCiAgICAg
T3duUHRyPEltYWdlQnVmZmVyPiBzaGFkb3dCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNo
YWRvd0J1ZmZlclNpemUpOwpAQCAtMTg4LDcgKzE5MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBk
cmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFBy
aXZhCiAgICAgLy8gRHJhdyBzaGFkb3cgaW50byBhIG5ldyBJbWFnZUJ1ZmZlci4KICAgICBjYWly
b190KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93QnVmZmVyLT5jb250ZXh0KCktPnBsYXRmb3JtQ29u
dGV4dCgpOwogICAgIGNvcHlDb250ZXh0UHJvcGVydGllcyhjciwgc2hhZG93Q29udGV4dCk7Ci0g
ICAgY2Fpcm9fdHJhbnNsYXRlKHNoYWRvd0NvbnRleHQsIC1yZWN0LngoKSArIGtlcm5lbFNpemUs
IC1yZWN0LnkoKSArIGtlcm5lbFNpemUpOworICAgIGNhaXJvX3RyYW5zbGF0ZShzaGFkb3dDb250
ZXh0LCAtcmVjdC54KCkgKyByYWRpdXMsIC1yZWN0LnkoKSArIHJhZGl1cyk7CiAgICAgY2Fpcm9f
bmV3X3BhdGgoc2hhZG93Q29udGV4dCk7CiAgICAgY2Fpcm9fYXBwZW5kX3BhdGgoc2hhZG93Q29u
dGV4dCwgcGF0aCk7CiAKQEAgLTE5Nyw3ICsxOTksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJh
d1BhdGhTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHRQcml2
YQogICAgIGlmIChzdHJva2VTaGFkb3cpCiAgICAgICAgIHNldFBsYXRmb3JtU3Ryb2tlKGNvbnRl
eHQsIHNoYWRvd0NvbnRleHQsIGdjcCk7CiAKLSAgICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNo
YWRvdyhzaGFkb3dCdWZmZXIucmVsZWFzZSgpLCBzaGFkb3dDb2xvciwgc2hhZG93UmVjdCwga2Vy
bmVsU2l6ZSk7CisgICAgY29udGV4dC0+Y3JlYXRlUGxhdGZvcm1TaGFkb3coc2hhZG93QnVmZmVy
LnJlbGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRvd1JlY3QsIHJhZGl1cyk7CiAjZW5kaWYKIH0K
IApAQCAtNTgxLDE1ICs1ODMsMTUgQEAgc3RhdGljIHZvaWQgZHJhd0JvcmRlcmxlc3NSZWN0U2hh
ZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JgogCiAgICAgSW50
U2l6ZSBzaGFkb3dCdWZmZXJTaXplOwogICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0OwotICAgIGZs
b2F0IGtlcm5lbFNpemUgPSAwOwotICAgIEdyYXBoaWNzQ29udGV4dDo6Y2FsY3VsYXRlU2hhZG93
QnVmZmVyRGltZW5zaW9ucyhzaGFkb3dCdWZmZXJTaXplLCBzaGFkb3dSZWN0LCBrZXJuZWxTaXpl
LCByZWN0LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVyKTsKKyAgICBmbG9hdCByYWRpdXMgPSAwOwor
ICAgIEdyYXBoaWNzQ29udGV4dDo6Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhzaGFk
b3dCdWZmZXJTaXplLCBzaGFkb3dSZWN0LCByYWRpdXMsIHJlY3QsIHNoYWRvd1NpemUsIHNoYWRv
d0JsdXIpOwogCiAgICAgLy8gRHJhdyBzaGFkb3cgaW50byBhIG5ldyBJbWFnZUJ1ZmZlcgogICAg
IE93blB0cjxJbWFnZUJ1ZmZlcj4gc2hhZG93QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShz
aGFkb3dCdWZmZXJTaXplKTsKICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBz
aGFkb3dCdWZmZXItPmNvbnRleHQoKTsKLSAgICBzaGFkb3dDb250ZXh0LT5maWxsUmVjdChGbG9h
dFJlY3QoRmxvYXRQb2ludChrZXJuZWxTaXplLCBrZXJuZWxTaXplKSwgcmVjdC5zaXplKCkpLCBy
ZWN0Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0
KEZsb2F0UmVjdChGbG9hdFBvaW50KHJhZGl1cywgcmFkaXVzKSwgcmVjdC5zaXplKCkpLCByZWN0
Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogCi0gICAgY29udGV4dC0+Y3JlYXRlUGxhdGZvcm1T
aGFkb3coc2hhZG93QnVmZmVyLnJlbGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRvd1JlY3QsIGtl
cm5lbFNpemUpOworICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3JtU2hhZG93KHNoYWRvd0J1ZmZl
ci5yZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCByYWRpdXMpOwogI2VuZGlmCiB9
CiAKQEAgLTg4NCwyOCArODg2LDMxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9y
bVNoYWRvdyhGbG9hdFNpemUgY29uc3QmIHNpemUsIGZsb2F0LCBDb2xvciBjb25zCiAgICAgfQog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1TaGFkb3coUGFzc093blB0
cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGNvbnN0IEZs
b2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQga2VybmVsU2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0OjpjcmVhdGVQbGF0Zm9ybVNoYWRvdyhQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIs
IGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBm
bG9hdCByYWRpdXMpCiB7CiAjaWYgRU5BQkxFKEZJTFRFUlMpCiAgICAgY2Fpcm9fdCogY3IgPSBt
X2RhdGEtPmNyOwogCi0gICAgLy8gZHJhdyB0aGUgc2hhZG93IHdpdGhvdXQgYmx1cnJpbmcsIGlm
IGtlcm5lbFNpemUgaXMgemVybwotICAgIGlmICgha2VybmVsU2l6ZSkgeworICAgIEZsb2F0UG9p
bnQgYmx1clJhZGl1cyA9IEZsb2F0UG9pbnQocmFkaXVzLCByYWRpdXMpOworCisgICAgLy8gY2Fs
Y3VsYXRlIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24KKyAgICBmbG9hdCBzZHgsIHNkeTsKKyAgICBG
RUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlU3RkRGV2aWF0aW9uKGJsdXJSYWRpdXMsIEZsb2F0U2l6
ZSgxLCAxKSwgc2R4LCBzZHkpOworCisgICAgLy8gZHJhdyB0aGUgc2hhZG93IHdpdGhvdXQgYmx1
cnJpbmcsIGlmIHJhZGl1cyBpcyB6ZXJvCisgICAgaWYgKCFyYWRpdXMgfHwgKCFzZHggJiYgIXNk
eSkpIHsKICAgICAgICAgc2V0Q29sb3IoY3IsIHNoYWRvd0NvbG9yKTsKICAgICAgICAgY2Fpcm9f
bWFza19zdXJmYWNlKGNyLCBidWZmZXItPmltYWdlKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZy
YW1lKCksIHNoYWRvd1JlY3QueCgpLCBzaGFkb3dSZWN0LnkoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICAvLyBsaW1pdCBrZXJuZWwgc2l6ZSB0byAxMDAwLCB0aGlzIGlzIHdoYXQg
Q0cgaXMgZG9pbmcuCi0gICAga2VybmVsU2l6ZSA9IHN0ZDo6bWluKDEwMDAuZiwga2VybmVsU2l6
ZSk7Ci0KICAgICAvLyBjcmVhdGUgZmlsdGVyCiAgICAgUmVmUHRyPEZpbHRlcj4gZmlsdGVyID0g
SW1hZ2VCdWZmZXJGaWx0ZXI6OmNyZWF0ZSgpOwogICAgIGZpbHRlci0+c2V0U291cmNlSW1hZ2Uo
YnVmZmVyKTsKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBzb3VyY2UgPSBTb3VyY2VHcmFwaGlj
OjpjcmVhdGUoKTsKICAgICBzb3VyY2UtPnNldFNjYWxlZFN1YlJlZ2lvbihGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBzaGFkb3dSZWN0LnNpemUoKSkpOwogICAgIHNvdXJjZS0+c2V0SXNBbHBoYUlt
YWdlKHRydWUpOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJsdXIgPSBGRUdhdXNzaWFuQmx1
cjo6Y3JlYXRlKHNvdXJjZS5nZXQoKSwga2VybmVsU2l6ZSwga2VybmVsU2l6ZSk7CisgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gYmx1ciA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoc291cmNlLmdl
dCgpLCBzZHgsIHNkeSk7CiAgICAgYmx1ci0+c2V0U2NhbGVkU3ViUmVnaW9uKEZsb2F0UmVjdChG
bG9hdFBvaW50KCksIHNoYWRvd1JlY3Quc2l6ZSgpKSk7CiAgICAgYmx1ci0+YXBwbHkoZmlsdGVy
LmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUNhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWly
by5jcHAKaW5kZXggNjRmYmVkZi4uZTNkYjEwMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCkBAIC0xNDAsOCArMTQwLDggQEAgdm9pZCBCaXRt
YXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0LCBjb25zdCBGbG8KICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNo
YWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkgewogICAgICAgICBJbnRTaXplIHNoYWRvd0J1ZmZlclNp
emU7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0OwotICAgICAgICBmbG9hdCBrZXJuZWxT
aXplICgwLjApOwotICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZl
ckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwga2VybmVsU2l6ZSwgZHN0
UmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CisgICAgICAgIGZsb2F0IHJhZGl1cyA9IDA7
CisgICAgICAgIGNvbnRleHQtPmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93
QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwgcmFkaXVzLCBkc3RSZWN0LCBzaGFkb3dTaXplLCBzaGFk
b3dCbHVyKTsKICAgICAgICAgc2hhZG93Q29sb3IgPSBjb2xvcldpdGhPdmVycmlkZUFscGhhKHNo
YWRvd0NvbG9yLnJnYigpLCAoc2hhZG93Q29sb3IuYWxwaGEoKSAqICBjb250ZXh0LT5nZXRBbHBo
YSgpKSAvIDI1NS5mKTsKIAogICAgICAgICAvL2RyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VC
dWZmZXIKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogICAgICAg
ICBjYWlyb19yZWN0YW5nbGUoc2hhZG93Q29udGV4dCwgMCwgMCwgZHN0UmVjdC53aWR0aCgpLCBk
c3RSZWN0LmhlaWdodCgpKTsKICAgICAgICAgY2Fpcm9fZmlsbChzaGFkb3dDb250ZXh0KTsKIAot
ICAgICAgICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhzaGFkb3dCdWZmZXIucmVsZWFz
ZSgpLCBzaGFkb3dDb2xvciwgc2hhZG93UmVjdCwga2VybmVsU2l6ZSk7CisgICAgICAgIGNvbnRl
eHQtPmNyZWF0ZVBsYXRmb3JtU2hhZG93KHNoYWRvd0J1ZmZlci5yZWxlYXNlKCksIHNoYWRvd0Nv
bG9yLCBzaGFkb3dSZWN0LCByYWRpdXMpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAppbmRleCBl
MGMyOWU2Li5lNDA5ZWFmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKQEAgLTE5Nyw2ICsxOTcsMTMgQEAgVGV4dFN0cmVh
bSYgRkVHYXVzc2lhbkJsdXI6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMs
IGludCBpbmRlbnQpIGMKICAgICByZXR1cm4gdHM7CiB9CiAKK3ZvaWQgRkVHYXVzc2lhbkJsdXI6
OmNhbGN1bGF0ZVN0ZERldmlhdGlvbihjb25zdCBGbG9hdFBvaW50JiByYWRpdXMsIGNvbnN0IEZs
b2F0U2l6ZSYgcmVzb2x1dGlvbiwgZmxvYXQmIHNkeCwgZmxvYXQmIHNkeSkKK3sKKyAgICAvLyBC
bHVyIHJhZGl1cyByZXByZXNlbnRzIDIvMyB0aW1lcyB0aGUga2VybmVsIHNpemUsIHRoZSBkZXN0
IHBpeGVsIGlzIGhhbGYgb2YgdGhlIHJhZGl1cyBhcHBsaWVkIDMgdGltZXMKKyAgICBzZHggPSBt
YXgoKHJhZGl1cy54KCkgKiAyIC8gMyAtIDAuNSkgLyAocmVzb2x1dGlvbi53aWR0aCgpICogZ0dh
dXNzaWFuS2VybmVsRmFjdG9yKSwgMC4wKTsKKyAgICBzZHkgPSBtYXgoKHJhZGl1cy55KCkgKiAy
IC8gMyAtIDAuNSkgLyAocmVzb2x1dGlvbi5oZWlnaHQoKSAqIGdHYXVzc2lhbktlcm5lbEZhY3Rv
ciksIDAuMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShGSUxURVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFR2F1c3NpYW5CbHVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVH
YXVzc2lhbkJsdXIuaAppbmRleCA0YzdjNDNjLi43ZjBmOThhIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaApAQCAtNDMsNiArNDMs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wKCk7CiAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Q7CiAKKyAgICBzdGF0
aWMgdm9pZCBjYWxjdWxhdGVTdGREZXZpYXRpb24oY29uc3QgRmxvYXRQb2ludCYgcmFkaXVzLCBj
b25zdCBGbG9hdFNpemUmIHJlc29sdXRpb24sIGZsb2F0JiBzZHgsIGZsb2F0JiBzZHkpOworCiBw
cml2YXRlOgogICAgIEZFR2F1c3NpYW5CbHVyKEZpbHRlckVmZmVjdCosIGNvbnN0IGZsb2F0Jiwg
Y29uc3QgZmxvYXQmKTsKICAgICBzdGF0aWMgdm9pZCBrZXJuZWxQb3NpdGlvbihpbnQgYm94Qmx1
ciwgdW5zaWduZWQmIHN0ZCwgaW50JiBkTGVmdCwgaW50JiBkUmlnaHQpOwotLSAKMS43LjEuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64088</attachid>
            <date>2010-08-11 02:19:19 -0700</date>
            <delta_ts>2010-08-11 04:19:30 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>blur_radius.patch</filename>
            <type>text/plain</type>
            <size>16152</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IDEyNGEyYjRjOWQ4Mjg4YmZjMzBiNzA2ZTkwODE5MTBlZGE0MzVmNzkKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgV2VkIEp1bCAxNCAx
OTo0Mjo0OSAyMDEwICswMjAwCgogICAgMjAxMC0wNy0xNSAgQWxlamFuZHJvIEcuIENhc3RybyAg
PGFsZXhAaWdhbGlhLmNvbT4KICAgIAogICAgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KICAgIAogICAgICAgICAgICBbR1RLXSBUaGUgc2l6ZSBvZiB0aGUgc2hhZG93IGltYWdl
IHVzZXMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbgogICAgICAgICAgICBzaXplIGluc3RlYWQgb2Yg
dGhlIGJsdXIgcmFkaXVzCiAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDc5MwogICAgCiAgICAgICAgICAgIFRoZSBrZXJuZWxTaXplIHZhcmlhYmxl
IHdhcyByZW5hbWVkIHRvIHJhZGl1cyBhbmQgcmVjYWxjdWxhdGVkCiAgICAgICAgICAgIGNvbnNp
ZGVyaW5nIHRoZSBDU1MzIHNwZWNpZmljYXRpb24KICAgICAgICAgICAgaHR0cDovL3d3dy53My5v
cmcvVFIvY3NzMy1iYWNrZ3JvdW5kLyN0aGUtYm94LXNoYWRvdywgYW5kIHRoZQogICAgICAgICAg
ICB2aXN1YWwgcmVzdWx0IG9mIG90aGVyIGJyb3dzZXJzLiBUaGUgSFRNTDUgY2FudmFzIHNoYWRv
dyBzdGFuZGFyZAogICAgICAgICAgICBkZXZpYXRpb24gY2FsY3VsYXRpb24gdGhhdCB3YXMgdXNl
ZCwgd2FzIG5vdCBhcHByb3BpYXRlIGZvciB0aGUKICAgICAgICAgICAgYmx1ciBkaXN0YW5jZSBz
cGVjaWZpZWQgaW4gdGhlIENTUzMuCiAgICAKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaDoKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6
CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVT
aGFkb3dCdWZmZXJEaW1lbnNpb25zKToKICAgICAgICAgICAgQ2hhbmdlZCB0aGUgY2FsY3VsYXRp
b24sIG5vdyB3ZSB1c2UgdGhlIHBhcmFtZXRlciBpbiB0aGUgc3R5bGUKICAgICAgICAgICAgZGly
ZWN0bHkgYXMgcmVjb21lbmRlZCBpbiB0aGUgQ1NTMyBzdGFuZGFyZC4KICAgICAgICAgICAgKFdl
YkNvcmU6OmRyYXdQYXRoU2hhZG93KToKICAgICAgICAgICAgKFdlYkNvcmU6OmRyYXdCb3JkZXJs
ZXNzUmVjdFNoYWRvdyk6CiAgICAgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNy
ZWF0ZVBsYXRmb3JtU2hhZG93KTogV2UgZ2V0IHRoZQogICAgICAgICAgICBzdGFuZGFyZCBkZXZp
YXRpb24gZnJvbSB0aGUgcmFkaXVzIHVzaW5nIHRoZSBuZXcgZnVuY3Rpb24gYW5kIHdlCiAgICAg
ICAgICAgIGNyZWF0ZSB0aGUgZmlsdGVyIHdpdGggdGhhdCBkZXZpYXRpb24uCiAgICAgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6CiAgICAgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpGRUdh
dXNzaWFuQmx1cjo6Y2FsY3VsYXRlU3RkRGV2aWF0aW9uKTogIEFkZGVkIHRoaXMKICAgICAgICAg
ICAgZnVuY3Rpb24gdGhhdCBnZXRzIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gZnJvbSB0aGUgYmx1
cgogICAgICAgICAgICByYWRpdXMuIFJlcXVpcmVkIGluIHRoZSBDU1MzIGNhc2Ugd2hlcmUgd2Ug
aGF2ZSB0aGlzIHJhZGlvIGFuZCB3ZQogICAgICAgICAgICBuZWVkIHRoZSBkZXZpYXRpb24gdG8g
aW5pdGlhbGl6ZSB0aGUgYWxnb3JpdGhtLgogICAgICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaDoKICAgIAogICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6CgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxY2YyNzgwLi43MzJlYTg0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBA
CisyMDEwLTA3LTE1ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFRoZSBz
aXplIG9mIHRoZSBzaGFkb3cgaW1hZ2UgdXNlcyB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uCisgICAg
ICAgIHNpemUgaW5zdGVhZCBvZiB0aGUgYmx1ciByYWRpdXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNzkzCisKKyAgICAgICAgVGhlIGtlcm5lbFNp
emUgdmFyaWFibGUgd2FzIHJlbmFtZWQgdG8gcmFkaXVzIGFuZCByZWNhbGN1bGF0ZWQKKyAgICAg
ICAgY29uc2lkZXJpbmcgdGhlIENTUzMgc3BlY2lmaWNhdGlvbgorICAgICAgICBodHRwOi8vd3d3
LnczLm9yZy9UUi9jc3MzLWJhY2tncm91bmQvI3RoZS1ib3gtc2hhZG93LCBhbmQgdGhlCisgICAg
ICAgIHZpc3VhbCByZXN1bHQgb2Ygb3RoZXIgYnJvd3NlcnMuIFRoZSBIVE1MNSBjYW52YXMgc2hh
ZG93IHN0YW5kYXJkCisgICAgICAgIGRldmlhdGlvbiBjYWxjdWxhdGlvbiB0aGF0IHdhcyB1c2Vk
LCB3YXMgbm90IGFwcHJvcGlhdGUgZm9yIHRoZQorICAgICAgICBibHVyIGRpc3RhbmNlIHNwZWNp
ZmllZCBpbiB0aGUgQ1NTMy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMp
OgorICAgICAgICBDaGFuZ2VkIHRoZSBjYWxjdWxhdGlvbiwgbm93IHdlIHVzZSB0aGUgcGFyYW1l
dGVyIGluIHRoZSBzdHlsZQorICAgICAgICBkaXJlY3RseSBhcyByZWNvbWVuZGVkIGluIHRoZSBD
U1MzIHN0YW5kYXJkLgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6ZHJhd0JvcmRlcmxlc3NSZWN0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1TaGFkb3cpOiBXZSBnZXQgdGhlCisgICAg
ICAgIHN0YW5kYXJkIGRldmlhdGlvbiBmcm9tIHRoZSByYWRpdXMgdXNpbmcgdGhlIG5ldyBmdW5j
dGlvbiBhbmQgd2UKKyAgICAgICAgY3JlYXRlIHRoZSBmaWx0ZXIgd2l0aCB0aGF0IGRldmlhdGlv
bi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
R2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVTdGREZXZpYXRpb24pOiAgQWRkZWQgdGhpcworICAgICAg
ICBmdW5jdGlvbiB0aGF0IGdldHMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBmcm9tIHRoZSBibHVy
CisgICAgICAgIHJhZGl1cy4gUmVxdWlyZWQgaW4gdGhlIENTUzMgY2FzZSB3aGVyZSB3ZSBoYXZl
IHRoaXMgcmFkaW8gYW5kIHdlCisgICAgICAgIG5lZWQgdGhlIGRldmlhdGlvbiB0byBpbml0aWFs
aXplIHRoZSBhbGdvcml0aG0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5oOgorCiAyMDEwLTA4LTExICBGdW1pdG9zaGkgVWthaSAgPHVrYWlAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IG9mIExlb3BhcmQgSW50
ZWwgRGVidWcgKEJ1aWxkKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmgKaW5kZXggYzkwM2VkNy4uOGQ4Njk5MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0yODcsOCArMjg3LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIHNldEFscGhhKGZsb2F0KTsKICNpZiBQTEFURk9STShDQUlSTykK
ICAgICAgICAgZmxvYXQgZ2V0QWxwaGEoKTsKLSAgICAgICAgdm9pZCBjcmVhdGVQbGF0Zm9ybVNo
YWRvdyhQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIsIGNvbnN0IENvbG9yJiBzaGFkb3dD
b2xvciwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCBrZXJuZWxTaXplKTsKLSAg
ICAgICAgc3RhdGljIHZvaWQgY2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhJbnRTaXpl
JiBzaGFkb3dCdWZmZXJTaXplLCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0JiBrZXJuZWxT
aXplLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93
U2l6ZSwgZmxvYXQgc2hhZG93Qmx1cik7CisgICAgICAgIHZvaWQgY3JlYXRlUGxhdGZvcm1TaGFk
b3coUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29s
b3IsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQgcmFkaXVzKTsKKyAgICAgICAg
c3RhdGljIHZvaWQgY2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhJbnRTaXplJiBzaGFk
b3dCdWZmZXJTaXplLCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0JiByYWRpdXMsIGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlUmVjdCwgY29uc3QgRmxvYXRTaXplJiBzaGFkb3dTaXplLCBmbG9h
dCBzaGFkb3dCbHVyKTsKICNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0
aW9uKENvbXBvc2l0ZU9wZXJhdG9yKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vRm9udENhaXJvLmNwcAppbmRleCA5MjE3YTgxLi5mNmQ4ZjNkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCkBAIC05NCwxNSArOTQsMTUgQEAg
dm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgU2lt
cGxlRm9udERhdGEqIGZvbnQsIGNvbnMKICAgICAgICAgRmxvYXRSZWN0IHJlY3QoRmxvYXRQb2lu
dCgpLCBGbG9hdFNpemUoZXh0ZW50cy53aWR0aCwgZXh0ZW50cy5oZWlnaHQpKTsKICAgICAgICAg
SW50U2l6ZSBzaGFkb3dCdWZmZXJTaXplOwogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdDsK
LSAgICAgICAgZmxvYXQga2VybmVsU2l6ZSA9IDAuZjsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0
OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRv
d1JlY3QsIGtlcm5lbFNpemUsIHJlY3QsIHNoYWRvd1NpemUsIHNoYWRvd0JsdXIpOworICAgICAg
ICBmbG9hdCByYWRpdXMgPSAwOworICAgICAgICBjb250ZXh0LT5jYWxjdWxhdGVTaGFkb3dCdWZm
ZXJEaW1lbnNpb25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIHJhZGl1cywgcmVjdCwg
c2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CiAKICAgICAgICAgLy8gRHJhdyBzaGFkb3cgaW50byBh
IG5ldyBJbWFnZUJ1ZmZlcgogICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IHNoYWRvd0J1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2hhZG93QnVmZmVyU2l6ZSk7CiAgICAgICAgIEdyYXBo
aWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvd0J1ZmZlci0+Y29udGV4dCgpOwogICAg
ICAgICBjYWlyb190KiBzaGFkb3dDciA9IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
OwogCi0gICAgICAgIGNhaXJvX3RyYW5zbGF0ZShzaGFkb3dDciwga2VybmVsU2l6ZSwgZXh0ZW50
cy5oZWlnaHQgKyBrZXJuZWxTaXplKTsKKyAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKHNoYWRvd0Ny
LCByYWRpdXMsIGV4dGVudHMuaGVpZ2h0ICsgcmFkaXVzKTsKIAogICAgICAgICBjYWlyb19zZXRf
c2NhbGVkX2ZvbnQoc2hhZG93Q3IsIGZvbnQtPnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSk7
CiAgICAgICAgIGNhaXJvX3Nob3dfZ2x5cGhzKHNoYWRvd0NyLCBnbHlwaHMsIG51bUdseXBocyk7
CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQsIGNvbnMKICAgICAgICAgICAg
IGNhaXJvX3Jlc3RvcmUoc2hhZG93Q3IpOwogICAgICAgICB9CiAgICAgICAgIGNhaXJvX3RyYW5z
bGF0ZShjciwgMC4wLCAtZXh0ZW50cy5oZWlnaHQpOwotICAgICAgICBjb250ZXh0LT5jcmVhdGVQ
bGF0Zm9ybVNoYWRvdyhzaGFkb3dCdWZmZXIucmVsZWFzZSgpLCBzaGFkb3dDb2xvciwgc2hhZG93
UmVjdCwga2VybmVsU2l6ZSk7CisgICAgICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3JtU2hhZG93
KHNoYWRvd0J1ZmZlci5yZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCByYWRpdXMp
OwogI2Vsc2UKICAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCBzaGFkb3dTaXplLndpZHRoKCks
IHNoYWRvd1NpemUuaGVpZ2h0KCkpOwogICAgICAgICBjYWlyb19zaG93X2dseXBocyhjciwgZ2x5
cGhzLCBudW1HbHlwaHMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCBmM2ZjOTQzLi4yZWRiY2IzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dENhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dENhaXJvLmNwcApAQCAtNjEsNiArNjEsOCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJvLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UHJp
dmF0ZS5oIgogCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCiAjaWZuZGVmIE1fUEkKICNkZWZpbmUg
TV9QSSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2CiAjZW5kaWYKQEAgLTE3MywxOCArMTc1LDE3IEBA
IHN0YXRpYyB2b2lkIGFkZENvbnZleFBvbHlnb25Ub0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwg
c2l6ZV90IG51bVBvaW50cywgY29uc3QKICAgICBjYWlyb19jbG9zZV9wYXRoKGNvbnRleHQpOwog
fQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9u
cyhJbnRTaXplJiBzaGFkb3dCdWZmZXJTaXplLCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0
JiBrZXJuZWxTaXplLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEZsb2F0U2l6
ZSYgc2hhZG93U2l6ZSwgZmxvYXQgc2hhZG93Qmx1cikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpj
YWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKEludFNpemUmIHNoYWRvd0J1ZmZlclNpemUs
IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQmIHJhZGl1cywgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBGbG9hdFNpemUmIHNoYWRvd1NpemUsIGZsb2F0IHNoYWRvd0JsdXIp
CiB7CiAjaWYgRU5BQkxFKEZJTFRFUlMpCi0gICAgLy8gY2FsY3VsYXRlIHRoZSBrZXJuZWwgc2l6
ZSBhY2NvcmRpbmcgdG8gdGhlIEhUTUw1IGNhbnZhcyBzaGFkb3cgc3BlY2lmaWNhdGlvbgotICAg
IGtlcm5lbFNpemUgPSAoc2hhZG93Qmx1ciA8IDggPyBzaGFkb3dCbHVyIC8gMi5mIDogc3FydChz
aGFkb3dCbHVyICogMi5mKSk7Ci0gICAgaW50IGJsdXJSYWRpdXMgPSBjZWlsKGtlcm5lbFNpemUp
OworICAgIC8vIGxpbWl0IHJhZGl1cyB0byAxMjgKKyAgICByYWRpdXMgPSBtaW4oMTI4LmYsIG1h
eChzaGFkb3dCbHVyLCAwLmYpKTsKIAotICAgIHNoYWRvd0J1ZmZlclNpemUgPSBJbnRTaXplKHNv
dXJjZVJlY3Qud2lkdGgoKSArIGJsdXJSYWRpdXMgKiAyLCBzb3VyY2VSZWN0LmhlaWdodCgpICsg
Ymx1clJhZGl1cyAqIDIpOworICAgIHNoYWRvd0J1ZmZlclNpemUgPSBJbnRTaXplKHNvdXJjZVJl
Y3Qud2lkdGgoKSArIHJhZGl1cyAqIDIsIHNvdXJjZVJlY3QuaGVpZ2h0KCkgKyByYWRpdXMgKiAy
KTsKIAogICAgIC8vIGRldGVybWluZSBkaW1lbnNpb25zIG9mIHNoYWRvdyByZWN0CiAgICAgc2hh
ZG93UmVjdCA9IEZsb2F0UmVjdChzb3VyY2VSZWN0LmxvY2F0aW9uKCksIHNoYWRvd0J1ZmZlclNp
emUpOwotICAgIHNoYWRvd1JlY3QubW92ZShzaGFkb3dTaXplLndpZHRoKCkgLSBrZXJuZWxTaXpl
LCBzaGFkb3dTaXplLmhlaWdodCgpIC0ga2VybmVsU2l6ZSk7CisgICAgc2hhZG93UmVjdC5tb3Zl
KHNoYWRvd1NpemUud2lkdGgoKSAtIHJhZGl1cywgc2hhZG93U2l6ZS5oZWlnaHQoKSAtIHJhZGl1
cyk7CiAjZW5kaWYKIH0KIApAQCAtMjA5LDggKzIxMCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBk
cmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFBy
aXZhCiAKICAgICBJbnRTaXplIHNoYWRvd0J1ZmZlclNpemU7CiAgICAgRmxvYXRSZWN0IHNoYWRv
d1JlY3Q7Ci0gICAgZmxvYXQga2VybmVsU2l6ZSA9IDA7Ci0gICAgR3JhcGhpY3NDb250ZXh0Ojpj
YWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1Jl
Y3QsIGtlcm5lbFNpemUsIHJlY3QsIHNoYWRvd1NpemUsIHNoYWRvd0JsdXIpOworICAgIGZsb2F0
IHJhZGl1cyA9IDA7CisgICAgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJE
aW1lbnNpb25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIHJhZGl1cywgcmVjdCwgc2hh
ZG93U2l6ZSwgc2hhZG93Qmx1cik7CiAKICAgICAvLyBDcmVhdGUgc3VpdGFibHktc2l6ZWQgSW1h
Z2VCdWZmZXIgdG8gaG9sZCB0aGUgc2hhZG93LgogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc2hh
ZG93QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaGFkb3dCdWZmZXJTaXplKTsKQEAgLTIx
OCw3ICsyMTksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJhd1BhdGhTaGFkb3coR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHRQcml2YQogICAgIC8vIERyYXcgc2hhZG93
IGludG8gYSBuZXcgSW1hZ2VCdWZmZXIuCiAgICAgY2Fpcm9fdCogc2hhZG93Q29udGV4dCA9IHNo
YWRvd0J1ZmZlci0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKICAgICBjb3B5Q29udGV4
dFByb3BlcnRpZXMoY3IsIHNoYWRvd0NvbnRleHQpOwotICAgIGNhaXJvX3RyYW5zbGF0ZShzaGFk
b3dDb250ZXh0LCAtcmVjdC54KCkgKyBrZXJuZWxTaXplLCAtcmVjdC55KCkgKyBrZXJuZWxTaXpl
KTsKKyAgICBjYWlyb190cmFuc2xhdGUoc2hhZG93Q29udGV4dCwgLXJlY3QueCgpICsgcmFkaXVz
LCAtcmVjdC55KCkgKyByYWRpdXMpOwogICAgIGNhaXJvX25ld19wYXRoKHNoYWRvd0NvbnRleHQp
OwogICAgIGNhaXJvX2FwcGVuZF9wYXRoKHNoYWRvd0NvbnRleHQsIHBhdGgpOwogCkBAIC0yMjcs
NyArMjI4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgR3JhcGhpY3NDb250ZXh0UHJpdmEKICAgICBpZiAoc3Ryb2tlU2hhZG93
KQogICAgICAgICBzZXRQbGF0Zm9ybVN0cm9rZShjb250ZXh0LCBzaGFkb3dDb250ZXh0LCBnY3Ap
OwogCi0gICAgY29udGV4dC0+Y3JlYXRlUGxhdGZvcm1TaGFkb3coc2hhZG93QnVmZmVyLnJlbGVh
c2UoKSwgc2hhZG93Q29sb3IsIHNoYWRvd1JlY3QsIGtlcm5lbFNpemUpOworICAgIGNvbnRleHQt
PmNyZWF0ZVBsYXRmb3JtU2hhZG93KHNoYWRvd0J1ZmZlci5yZWxlYXNlKCksIHNoYWRvd0NvbG9y
LCBzaGFkb3dSZWN0LCByYWRpdXMpOwogI2VuZGlmCiB9CiAKQEAgLTYzMSwxNSArNjMyLDE1IEBA
IHN0YXRpYyB2b2lkIGRyYXdCb3JkZXJsZXNzUmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYKIAogICAgIEludFNpemUgc2hhZG93QnVmZmVyU2l6ZTsK
ICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdDsKLSAgICBmbG9hdCBrZXJuZWxTaXplID0gMDsKLSAg
ICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93
QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwga2VybmVsU2l6ZSwgcmVjdCwgc2hhZG93U2l6ZSwgc2hh
ZG93Qmx1cik7CisgICAgZmxvYXQgcmFkaXVzID0gMDsKKyAgICBHcmFwaGljc0NvbnRleHQ6OmNh
bGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVj
dCwgcmFkaXVzLCByZWN0LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVyKTsKIAogICAgIC8vIERyYXcg
c2hhZG93IGludG8gYSBuZXcgSW1hZ2VCdWZmZXIKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IHNo
YWRvd0J1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2hhZG93QnVmZmVyU2l6ZSk7CiAgICAg
R3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93QnVmZmVyLT5jb250ZXh0KCk7
Ci0gICAgc2hhZG93Q29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoa2VybmVs
U2l6ZSwga2VybmVsU2l6ZSksIHJlY3Quc2l6ZSgpKSwgcmVjdENvbG9yLCBEZXZpY2VDb2xvclNw
YWNlKTsKKyAgICBzaGFkb3dDb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludChy
YWRpdXMsIHJhZGl1cyksIHJlY3Quc2l6ZSgpKSwgcmVjdENvbG9yLCBEZXZpY2VDb2xvclNwYWNl
KTsKIAotICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3JtU2hhZG93KHNoYWRvd0J1ZmZlci5yZWxl
YXNlKCksIHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCBrZXJuZWxTaXplKTsKKyAgICBjb250ZXh0
LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhzaGFkb3dCdWZmZXIucmVsZWFzZSgpLCBzaGFkb3dDb2xv
ciwgc2hhZG93UmVjdCwgcmFkaXVzKTsKICNlbmRpZgogfQogCkBAIC05MjgsMjggKzkyOSwzMSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coRmxvYXRTaXplIGNvbnN0
JiBzaXplLCBmbG9hdCwgQ29sb3IgY29ucwogICAgIH0KIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmNyZWF0ZVBsYXRmb3JtU2hhZG93KFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciwg
Y29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGZs
b2F0IGtlcm5lbFNpemUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1TaGFk
b3coUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29s
b3IsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQgcmFkaXVzKQogewogI2lmIEVO
QUJMRShGSUxURVJTKQogICAgIGNhaXJvX3QqIGNyID0gbV9kYXRhLT5jcjsKIAotICAgIC8vIGRy
YXcgdGhlIHNoYWRvdyB3aXRob3V0IGJsdXJyaW5nLCBpZiBrZXJuZWxTaXplIGlzIHplcm8KLSAg
ICBpZiAoIWtlcm5lbFNpemUpIHsKKyAgICBGbG9hdFBvaW50IGJsdXJSYWRpdXMgPSBGbG9hdFBv
aW50KHJhZGl1cywgcmFkaXVzKTsKKworICAgIC8vIGNhbGN1bGF0ZSB0aGUgc3RhbmRhcmQgZGV2
aWF0aW9uCisgICAgZmxvYXQgc2R4LCBzZHk7CisgICAgRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0
ZVN0ZERldmlhdGlvbihibHVyUmFkaXVzLCBGbG9hdFNpemUoMSwgMSksIHNkeCwgc2R5KTsKKwor
ICAgIC8vIGRyYXcgdGhlIHNoYWRvdyB3aXRob3V0IGJsdXJyaW5nLCBpZiByYWRpdXMgaXMgemVy
bworICAgIGlmICghcmFkaXVzIHx8ICghc2R4ICYmICFzZHkpKSB7CiAgICAgICAgIHNldENvbG9y
KGNyLCBzaGFkb3dDb2xvcik7CiAgICAgICAgIGNhaXJvX21hc2tfc3VyZmFjZShjciwgYnVmZmVy
LT5pbWFnZSgpLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpLCBzaGFkb3dSZWN0LngoKSwg
c2hhZG93UmVjdC55KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gbGltaXQg
a2VybmVsIHNpemUgdG8gMTAwMCwgdGhpcyBpcyB3aGF0IENHIGlzIGRvaW5nLgotICAgIGtlcm5l
bFNpemUgPSBzdGQ6Om1pbigxMDAwLmYsIGtlcm5lbFNpemUpOwotCiAgICAgLy8gY3JlYXRlIGZp
bHRlcgogICAgIFJlZlB0cjxGaWx0ZXI+IGZpbHRlciA9IEltYWdlQnVmZmVyRmlsdGVyOjpjcmVh
dGUoKTsKICAgICBmaWx0ZXItPnNldFNvdXJjZUltYWdlKGJ1ZmZlcik7CiAgICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gc291cmNlID0gU291cmNlR3JhcGhpYzo6Y3JlYXRlKCk7CiAgICAgc291cmNl
LT5zZXRTY2FsZWRTdWJSZWdpb24oRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2hhZG93UmVjdC5z
aXplKCkpKTsKICAgICBzb3VyY2UtPnNldElzQWxwaGFJbWFnZSh0cnVlKTsKLSAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBibHVyID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShzb3VyY2UuZ2V0KCks
IGtlcm5lbFNpemUsIGtlcm5lbFNpemUpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJsdXIg
PSBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKHNvdXJjZS5nZXQoKSwgc2R4LCBzZHkpOwogICAgIGJs
dXItPnNldFNjYWxlZFN1YlJlZ2lvbihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaGFkb3dSZWN0
LnNpemUoKSkpOwogICAgIGJsdXItPmFwcGx5KGZpbHRlci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDY0ZmJlZGYuLmUz
ZGIxMDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VD
YWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJv
LmNwcApAQCAtMTQwLDggKzE0MCw4IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvCiAgICAgaWYg
KGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikp
IHsKICAgICAgICAgSW50U2l6ZSBzaGFkb3dCdWZmZXJTaXplOwogICAgICAgICBGbG9hdFJlY3Qg
c2hhZG93UmVjdDsKLSAgICAgICAgZmxvYXQga2VybmVsU2l6ZSAoMC4wKTsKLSAgICAgICAgR3Jh
cGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKHNoYWRvd0J1ZmZl
clNpemUsIHNoYWRvd1JlY3QsIGtlcm5lbFNpemUsIGRzdFJlY3QsIHNoYWRvd1NpemUsIHNoYWRv
d0JsdXIpOworICAgICAgICBmbG9hdCByYWRpdXMgPSAwOworICAgICAgICBjb250ZXh0LT5jYWxj
dWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3Qs
IHJhZGl1cywgZHN0UmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CiAgICAgICAgIHNoYWRv
d0NvbG9yID0gY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShzaGFkb3dDb2xvci5yZ2IoKSwgKHNoYWRv
d0NvbG9yLmFscGhhKCkgKiAgY29udGV4dC0+Z2V0QWxwaGEoKSkgLyAyNTUuZik7CiAKICAgICAg
ICAgLy9kcmF3IHNoYWRvdyBpbnRvIGEgbmV3IEltYWdlQnVmZmVyCkBAIC0xNTIsNyArMTUyLDcg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG8KICAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKHNoYWRv
d0NvbnRleHQsIDAsIDAsIGRzdFJlY3Qud2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQoKSk7CiAgICAg
ICAgIGNhaXJvX2ZpbGwoc2hhZG93Q29udGV4dCk7CiAKLSAgICAgICAgY29udGV4dC0+Y3JlYXRl
UGxhdGZvcm1TaGFkb3coc2hhZG93QnVmZmVyLnJlbGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRv
d1JlY3QsIGtlcm5lbFNpemUpOworICAgICAgICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRv
dyhzaGFkb3dCdWZmZXIucmVsZWFzZSgpLCBzaGFkb3dDb2xvciwgc2hhZG93UmVjdCwgcmFkaXVz
KTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggZTBjMjllNi4uZTQwOWVhZiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIu
Y3BwCkBAIC0xOTcsNiArMTk3LDEzIEBAIFRleHRTdHJlYW0mIEZFR2F1c3NpYW5CbHVyOjpleHRl
cm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjCiAgICAgcmV0
dXJuIHRzOwogfQogCit2b2lkIEZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVTdGREZXZpYXRpb24o
Y29uc3QgRmxvYXRQb2ludCYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIHJlc29sdXRpb24sIGZs
b2F0JiBzZHgsIGZsb2F0JiBzZHkpCit7CisgICAgLy8gQmx1ciByYWRpdXMgcmVwcmVzZW50cyAy
LzMgdGltZXMgdGhlIGtlcm5lbCBzaXplLCB0aGUgZGVzdCBwaXhlbCBpcyBoYWxmIG9mIHRoZSBy
YWRpdXMgYXBwbGllZCAzIHRpbWVzCisgICAgc2R4ID0gbWF4KChyYWRpdXMueCgpICogMiAvIDMg
LSAwLjUpIC8gKHJlc29sdXRpb24ud2lkdGgoKSAqIGdHYXVzc2lhbktlcm5lbEZhY3RvciksIDAu
MCk7CisgICAgc2R5ID0gbWF4KChyYWRpdXMueSgpICogMiAvIDMgLSAwLjUpIC8gKHJlc29sdXRp
b24uaGVpZ2h0KCkgKiBnR2F1c3NpYW5LZXJuZWxGYWN0b3IpLCAwLjApOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoRklMVEVSUykKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKaW5kZXggNGM3
YzQzYy4uN2YwZjk4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKQEAgLTQzLDYgKzQzLDggQEAgcHVibGljOgogICAgIHZvaWQg
ZHVtcCgpOwogICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYsIGludCBpbmRlbnQpIGNvbnN0OwogCisgICAgc3RhdGljIHZvaWQgY2FsY3VsYXRlU3RkRGV2
aWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHJhZGl1cywgY29uc3QgRmxvYXRTaXplJiByZXNvbHV0
aW9uLCBmbG9hdCYgc2R4LCBmbG9hdCYgc2R5KTsKKwogcHJpdmF0ZToKICAgICBGRUdhdXNzaWFu
Qmx1cihGaWx0ZXJFZmZlY3QqLCBjb25zdCBmbG9hdCYsIGNvbnN0IGZsb2F0Jik7CiAgICAgc3Rh
dGljIHZvaWQga2VybmVsUG9zaXRpb24oaW50IGJveEJsdXIsIHVuc2lnbmVkJiBzdGQsIGludCYg
ZExlZnQsIGludCYgZFJpZ2h0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64093</attachid>
            <date>2010-08-11 04:19:30 -0700</date>
            <delta_ts>2010-08-11 05:05:11 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>blur_radius.patch</filename>
            <type>text/plain</type>
            <size>16128</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IDk3NDE1MDRjMDM3Y2IxNWQ1OTBhMjdkNzA3YzM1MzQ1YTM3OGZhYTIKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgV2VkIEp1bCAxNCAx
OTo0Mjo0OSAyMDEwICswMjAwCgogICAgMjAxMC0wNy0xNSAgQWxlamFuZHJvIEcuIENhc3RybyAg
PGFsZXhAaWdhbGlhLmNvbT4KICAgIAogICAgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KICAgIAogICAgICAgICAgICBbR1RLXSBUaGUgc2l6ZSBvZiB0aGUgc2hhZG93IGltYWdl
IHVzZXMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbgogICAgICAgICAgICBzaXplIGluc3RlYWQgb2Yg
dGhlIGJsdXIgcmFkaXVzCiAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDc5MwogICAgCiAgICAgICAgICAgIFRoZSBrZXJuZWxTaXplIHZhcmlhYmxl
IHdhcyByZW5hbWVkIHRvIHJhZGl1cyBhbmQgcmVjYWxjdWxhdGVkCiAgICAgICAgICAgIGNvbnNp
ZGVyaW5nIHRoZSBDU1MzIHNwZWNpZmljYXRpb24KICAgICAgICAgICAgaHR0cDovL3d3dy53My5v
cmcvVFIvY3NzMy1iYWNrZ3JvdW5kLyN0aGUtYm94LXNoYWRvdywgYW5kIHRoZQogICAgICAgICAg
ICB2aXN1YWwgcmVzdWx0IG9mIG90aGVyIGJyb3dzZXJzLiBUaGUgSFRNTDUgY2FudmFzIHNoYWRv
dyBzdGFuZGFyZAogICAgICAgICAgICBkZXZpYXRpb24gY2FsY3VsYXRpb24gdGhhdCB3YXMgdXNl
ZCwgd2FzIG5vdCBhcHByb3BpYXRlIGZvciB0aGUKICAgICAgICAgICAgYmx1ciBkaXN0YW5jZSBz
cGVjaWZpZWQgaW4gdGhlIENTUzMuCiAgICAKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaDoKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6
CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVT
aGFkb3dCdWZmZXJEaW1lbnNpb25zKToKICAgICAgICAgICAgQ2hhbmdlZCB0aGUgY2FsY3VsYXRp
b24sIG5vdyB3ZSB1c2UgdGhlIHBhcmFtZXRlciBpbiB0aGUgc3R5bGUKICAgICAgICAgICAgZGly
ZWN0bHkgYXMgcmVjb21lbmRlZCBpbiB0aGUgQ1NTMyBzdGFuZGFyZC4KICAgICAgICAgICAgKFdl
YkNvcmU6OmRyYXdQYXRoU2hhZG93KToKICAgICAgICAgICAgKFdlYkNvcmU6OmRyYXdCb3JkZXJs
ZXNzUmVjdFNoYWRvdyk6CiAgICAgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNy
ZWF0ZVBsYXRmb3JtU2hhZG93KTogV2UgZ2V0IHRoZQogICAgICAgICAgICBzdGFuZGFyZCBkZXZp
YXRpb24gZnJvbSB0aGUgcmFkaXVzIHVzaW5nIHRoZSBuZXcgZnVuY3Rpb24gYW5kIHdlCiAgICAg
ICAgICAgIGNyZWF0ZSB0aGUgZmlsdGVyIHdpdGggdGhhdCBkZXZpYXRpb24uCiAgICAgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6CiAgICAgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpGRUdh
dXNzaWFuQmx1cjo6Y2FsY3VsYXRlU3RkRGV2aWF0aW9uKTogIEFkZGVkIHRoaXMKICAgICAgICAg
ICAgZnVuY3Rpb24gdGhhdCBnZXRzIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gZnJvbSB0aGUgYmx1
cgogICAgICAgICAgICByYWRpdXMuIFJlcXVpcmVkIGluIHRoZSBDU1MzIGNhc2Ugd2hlcmUgd2Ug
aGF2ZSB0aGlzIHJhZGlvIGFuZCB3ZQogICAgICAgICAgICBuZWVkIHRoZSBkZXZpYXRpb24gdG8g
aW5pdGlhbGl6ZSB0aGUgYWxnb3JpdGhtLgogICAgICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaDoKICAgIAogICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6CgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZWJmYzM1Li5jMjg2YzA1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBA
CisyMDEwLTA3LTE1ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFRoZSBz
aXplIG9mIHRoZSBzaGFkb3cgaW1hZ2UgdXNlcyB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uCisgICAg
ICAgIHNpemUgaW5zdGVhZCBvZiB0aGUgYmx1ciByYWRpdXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNzkzCisKKyAgICAgICAgVGhlIGtlcm5lbFNp
emUgdmFyaWFibGUgd2FzIHJlbmFtZWQgdG8gcmFkaXVzIGFuZCByZWNhbGN1bGF0ZWQKKyAgICAg
ICAgY29uc2lkZXJpbmcgdGhlIENTUzMgc3BlY2lmaWNhdGlvbgorICAgICAgICBodHRwOi8vd3d3
LnczLm9yZy9UUi9jc3MzLWJhY2tncm91bmQvI3RoZS1ib3gtc2hhZG93LCBhbmQgdGhlCisgICAg
ICAgIHZpc3VhbCByZXN1bHQgb2Ygb3RoZXIgYnJvd3NlcnMuIFRoZSBIVE1MNSBjYW52YXMgc2hh
ZG93IHN0YW5kYXJkCisgICAgICAgIGRldmlhdGlvbiBjYWxjdWxhdGlvbiB0aGF0IHdhcyB1c2Vk
LCB3YXMgbm90IGFwcHJvcGlhdGUgZm9yIHRoZQorICAgICAgICBibHVyIGRpc3RhbmNlIHNwZWNp
ZmllZCBpbiB0aGUgQ1NTMy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMp
OgorICAgICAgICBDaGFuZ2VkIHRoZSBjYWxjdWxhdGlvbiwgbm93IHdlIHVzZSB0aGUgcGFyYW1l
dGVyIGluIHRoZSBzdHlsZQorICAgICAgICBkaXJlY3RseSBhcyByZWNvbWVuZGVkIGluIHRoZSBD
U1MzIHN0YW5kYXJkLgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6ZHJhd0JvcmRlcmxlc3NSZWN0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1TaGFkb3cpOiBXZSBnZXQgdGhlCisgICAg
ICAgIHN0YW5kYXJkIGRldmlhdGlvbiBmcm9tIHRoZSByYWRpdXMgdXNpbmcgdGhlIG5ldyBmdW5j
dGlvbiBhbmQgd2UKKyAgICAgICAgY3JlYXRlIHRoZSBmaWx0ZXIgd2l0aCB0aGF0IGRldmlhdGlv
bi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
R2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVTdGREZXZpYXRpb24pOiAgQWRkZWQgdGhpcworICAgICAg
ICBmdW5jdGlvbiB0aGF0IGdldHMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBmcm9tIHRoZSBibHVy
CisgICAgICAgIHJhZGl1cy4gUmVxdWlyZWQgaW4gdGhlIENTUzMgY2FzZSB3aGVyZSB3ZSBoYXZl
IHRoaXMgcmFkaW8gYW5kIHdlCisgICAgICAgIG5lZWQgdGhlIGRldmlhdGlvbiB0byBpbml0aWFs
aXplIHRoZSBhbGdvcml0aG0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5oOgorCiAyMDEwLTA4LTExICBKdWxpZSBQYXJlbnQgIDxqcGFyZW50QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKdXN0aW4gR2FyY2lhLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggYzkwM2VkNy4uOGQ4
Njk5MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC0yODcsOCArMjg3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEFs
cGhhKGZsb2F0KTsKICNpZiBQTEFURk9STShDQUlSTykKICAgICAgICAgZmxvYXQgZ2V0QWxwaGEo
KTsKLSAgICAgICAgdm9pZCBjcmVhdGVQbGF0Zm9ybVNoYWRvdyhQYXNzT3duUHRyPEltYWdlQnVm
ZmVyPiBidWZmZXIsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgY29uc3QgRmxvYXRSZWN0JiBz
aGFkb3dSZWN0LCBmbG9hdCBrZXJuZWxTaXplKTsKLSAgICAgICAgc3RhdGljIHZvaWQgY2FsY3Vs
YXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhJbnRTaXplJiBzaGFkb3dCdWZmZXJTaXplLCBGbG9h
dFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0JiBrZXJuZWxTaXplLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93U2l6ZSwgZmxvYXQgc2hhZG93Qmx1cik7
CisgICAgICAgIHZvaWQgY3JlYXRlUGxhdGZvcm1TaGFkb3coUGFzc093blB0cjxJbWFnZUJ1ZmZl
cj4gYnVmZmVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgc2hh
ZG93UmVjdCwgZmxvYXQgcmFkaXVzKTsKKyAgICAgICAgc3RhdGljIHZvaWQgY2FsY3VsYXRlU2hh
ZG93QnVmZmVyRGltZW5zaW9ucyhJbnRTaXplJiBzaGFkb3dCdWZmZXJTaXplLCBGbG9hdFJlY3Qm
IHNoYWRvd1JlY3QsIGZsb2F0JiByYWRpdXMsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgRmxvYXRTaXplJiBzaGFkb3dTaXplLCBmbG9hdCBzaGFkb3dCbHVyKTsKICNlbmRpZgog
CiAgICAgICAgIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCA5
MjE3YTgxLi5mNmQ4ZjNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ZvbnRDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwCkBAIC05NCwxNSArOTQsMTUgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQsIGNvbnMK
ICAgICAgICAgRmxvYXRSZWN0IHJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoZXh0ZW50cy53
aWR0aCwgZXh0ZW50cy5oZWlnaHQpKTsKICAgICAgICAgSW50U2l6ZSBzaGFkb3dCdWZmZXJTaXpl
OwogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdDsKLSAgICAgICAgZmxvYXQga2VybmVsU2l6
ZSA9IDAuZjsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJE
aW1lbnNpb25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIGtlcm5lbFNpemUsIHJlY3Qs
IHNoYWRvd1NpemUsIHNoYWRvd0JsdXIpOworICAgICAgICBmbG9hdCByYWRpdXMgPSAwOworICAg
ICAgICBjb250ZXh0LT5jYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKHNoYWRvd0J1ZmZl
clNpemUsIHNoYWRvd1JlY3QsIHJhZGl1cywgcmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7
CiAKICAgICAgICAgLy8gRHJhdyBzaGFkb3cgaW50byBhIG5ldyBJbWFnZUJ1ZmZlcgogICAgICAg
ICBPd25QdHI8SW1hZ2VCdWZmZXI+IHNoYWRvd0J1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2hhZG93QnVmZmVyU2l6ZSk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4
dCA9IHNoYWRvd0J1ZmZlci0+Y29udGV4dCgpOwogICAgICAgICBjYWlyb190KiBzaGFkb3dDciA9
IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogCi0gICAgICAgIGNhaXJvX3RyYW5z
bGF0ZShzaGFkb3dDciwga2VybmVsU2l6ZSwgZXh0ZW50cy5oZWlnaHQgKyBrZXJuZWxTaXplKTsK
KyAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKHNoYWRvd0NyLCByYWRpdXMsIGV4dGVudHMuaGVpZ2h0
ICsgcmFkaXVzKTsKIAogICAgICAgICBjYWlyb19zZXRfc2NhbGVkX2ZvbnQoc2hhZG93Q3IsIGZv
bnQtPnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSk7CiAgICAgICAgIGNhaXJvX3Nob3dfZ2x5
cGhzKHNoYWRvd0NyLCBnbHlwaHMsIG51bUdseXBocyk7CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9p
ZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgU2ltcGxl
Rm9udERhdGEqIGZvbnQsIGNvbnMKICAgICAgICAgICAgIGNhaXJvX3Jlc3RvcmUoc2hhZG93Q3Ip
OwogICAgICAgICB9CiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgMC4wLCAtZXh0ZW50cy5o
ZWlnaHQpOwotICAgICAgICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhzaGFkb3dCdWZm
ZXIucmVsZWFzZSgpLCBzaGFkb3dDb2xvciwgc2hhZG93UmVjdCwga2VybmVsU2l6ZSk7CisgICAg
ICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3JtU2hhZG93KHNoYWRvd0J1ZmZlci5yZWxlYXNlKCks
IHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCByYWRpdXMpOwogI2Vsc2UKICAgICAgICAgY2Fpcm9f
dHJhbnNsYXRlKGNyLCBzaGFkb3dTaXplLndpZHRoKCksIHNoYWRvd1NpemUuaGVpZ2h0KCkpOwog
ICAgICAgICBjYWlyb19zaG93X2dseXBocyhjciwgZ2x5cGhzLCBudW1HbHlwaHMpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWly
by5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcAppbmRleCBmM2ZjOTQzLi4yZWRiY2IzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtNjEs
NiArNjEsOCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJv
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oIgogCit1c2luZyBuYW1lc3Bh
Y2Ugc3RkOworCiAjaWZuZGVmIE1fUEkKICNkZWZpbmUgTV9QSSAzLjE0MTU5MjY1MzU4OTc5MzIz
ODQ2CiAjZW5kaWYKQEAgLTE3MywxOCArMTc1LDE3IEBAIHN0YXRpYyB2b2lkIGFkZENvbnZleFBv
bHlnb25Ub0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgc2l6ZV90IG51bVBvaW50cywgY29uc3QK
ICAgICBjYWlyb19jbG9zZV9wYXRoKGNvbnRleHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhJbnRTaXplJiBzaGFkb3dCdWZmZXJT
aXplLCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0JiBrZXJuZWxTaXplLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93U2l6ZSwgZmxvYXQgc2hh
ZG93Qmx1cikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1l
bnNpb25zKEludFNpemUmIHNoYWRvd0J1ZmZlclNpemUsIEZsb2F0UmVjdCYgc2hhZG93UmVjdCwg
ZmxvYXQmIHJhZGl1cywgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBGbG9hdFNp
emUmIHNoYWRvd1NpemUsIGZsb2F0IHNoYWRvd0JsdXIpCiB7CiAjaWYgRU5BQkxFKEZJTFRFUlMp
Ci0gICAgLy8gY2FsY3VsYXRlIHRoZSBrZXJuZWwgc2l6ZSBhY2NvcmRpbmcgdG8gdGhlIEhUTUw1
IGNhbnZhcyBzaGFkb3cgc3BlY2lmaWNhdGlvbgotICAgIGtlcm5lbFNpemUgPSAoc2hhZG93Qmx1
ciA8IDggPyBzaGFkb3dCbHVyIC8gMi5mIDogc3FydChzaGFkb3dCbHVyICogMi5mKSk7Ci0gICAg
aW50IGJsdXJSYWRpdXMgPSBjZWlsKGtlcm5lbFNpemUpOworICAgIC8vIGxpbWl0IHJhZGl1cyB0
byAxMjgKKyAgICByYWRpdXMgPSBtaW4oMTI4LmYsIG1heChzaGFkb3dCbHVyLCAwLmYpKTsKIAot
ICAgIHNoYWRvd0J1ZmZlclNpemUgPSBJbnRTaXplKHNvdXJjZVJlY3Qud2lkdGgoKSArIGJsdXJS
YWRpdXMgKiAyLCBzb3VyY2VSZWN0LmhlaWdodCgpICsgYmx1clJhZGl1cyAqIDIpOworICAgIHNo
YWRvd0J1ZmZlclNpemUgPSBJbnRTaXplKHNvdXJjZVJlY3Qud2lkdGgoKSArIHJhZGl1cyAqIDIs
IHNvdXJjZVJlY3QuaGVpZ2h0KCkgKyByYWRpdXMgKiAyKTsKIAogICAgIC8vIGRldGVybWluZSBk
aW1lbnNpb25zIG9mIHNoYWRvdyByZWN0CiAgICAgc2hhZG93UmVjdCA9IEZsb2F0UmVjdChzb3Vy
Y2VSZWN0LmxvY2F0aW9uKCksIHNoYWRvd0J1ZmZlclNpemUpOwotICAgIHNoYWRvd1JlY3QubW92
ZShzaGFkb3dTaXplLndpZHRoKCkgLSBrZXJuZWxTaXplLCBzaGFkb3dTaXplLmhlaWdodCgpIC0g
a2VybmVsU2l6ZSk7CisgICAgc2hhZG93UmVjdC5tb3ZlKHNoYWRvd1NpemUud2lkdGgoKSAtIHJh
ZGl1cywgc2hhZG93U2l6ZS5oZWlnaHQoKSAtIHJhZGl1cyk7CiAjZW5kaWYKIH0KIApAQCAtMjA5
LDggKzIxMCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFByaXZhCiAKICAgICBJbnRTaXplIHNoYWRv
d0J1ZmZlclNpemU7CiAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3Q7Ci0gICAgZmxvYXQga2VybmVs
U2l6ZSA9IDA7Ci0gICAgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1l
bnNpb25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIGtlcm5lbFNpemUsIHJlY3QsIHNo
YWRvd1NpemUsIHNoYWRvd0JsdXIpOworICAgIGZsb2F0IHJhZGl1cyA9IDA7CisgICAgR3JhcGhp
Y3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKHNoYWRvd0J1ZmZlclNp
emUsIHNoYWRvd1JlY3QsIHJhZGl1cywgcmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CiAK
ICAgICAvLyBDcmVhdGUgc3VpdGFibHktc2l6ZWQgSW1hZ2VCdWZmZXIgdG8gaG9sZCB0aGUgc2hh
ZG93LgogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc2hhZG93QnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShzaGFkb3dCdWZmZXJTaXplKTsKQEAgLTIxOCw3ICsyMTksNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgZHJhd1BhdGhTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHcmFwaGlj
c0NvbnRleHRQcml2YQogICAgIC8vIERyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VCdWZmZXIu
CiAgICAgY2Fpcm9fdCogc2hhZG93Q29udGV4dCA9IHNoYWRvd0J1ZmZlci0+Y29udGV4dCgpLT5w
bGF0Zm9ybUNvbnRleHQoKTsKICAgICBjb3B5Q29udGV4dFByb3BlcnRpZXMoY3IsIHNoYWRvd0Nv
bnRleHQpOwotICAgIGNhaXJvX3RyYW5zbGF0ZShzaGFkb3dDb250ZXh0LCAtcmVjdC54KCkgKyBr
ZXJuZWxTaXplLCAtcmVjdC55KCkgKyBrZXJuZWxTaXplKTsKKyAgICBjYWlyb190cmFuc2xhdGUo
c2hhZG93Q29udGV4dCwgLXJlY3QueCgpICsgcmFkaXVzLCAtcmVjdC55KCkgKyByYWRpdXMpOwog
ICAgIGNhaXJvX25ld19wYXRoKHNoYWRvd0NvbnRleHQpOwogICAgIGNhaXJvX2FwcGVuZF9wYXRo
KHNoYWRvd0NvbnRleHQsIHBhdGgpOwogCkBAIC0yMjcsNyArMjI4LDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgR3JhcGhpY3ND
b250ZXh0UHJpdmEKICAgICBpZiAoc3Ryb2tlU2hhZG93KQogICAgICAgICBzZXRQbGF0Zm9ybVN0
cm9rZShjb250ZXh0LCBzaGFkb3dDb250ZXh0LCBnY3ApOwogCi0gICAgY29udGV4dC0+Y3JlYXRl
UGxhdGZvcm1TaGFkb3coc2hhZG93QnVmZmVyLnJlbGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRv
d1JlY3QsIGtlcm5lbFNpemUpOworICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3JtU2hhZG93KHNo
YWRvd0J1ZmZlci5yZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCByYWRpdXMpOwog
I2VuZGlmCiB9CiAKQEAgLTYzMSwxNSArNjMyLDE1IEBAIHN0YXRpYyB2b2lkIGRyYXdCb3JkZXJs
ZXNzUmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYK
IAogICAgIEludFNpemUgc2hhZG93QnVmZmVyU2l6ZTsKICAgICBGbG9hdFJlY3Qgc2hhZG93UmVj
dDsKLSAgICBmbG9hdCBrZXJuZWxTaXplID0gMDsKLSAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1
bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwg
a2VybmVsU2l6ZSwgcmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CisgICAgZmxvYXQgcmFk
aXVzID0gMDsKKyAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVu
c2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwgcmFkaXVzLCByZWN0LCBzaGFkb3dT
aXplLCBzaGFkb3dCbHVyKTsKIAogICAgIC8vIERyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VC
dWZmZXIKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IHNoYWRvd0J1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoc2hhZG93QnVmZmVyU2l6ZSk7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dD
b250ZXh0ID0gc2hhZG93QnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgc2hhZG93Q29udGV4dC0+Zmls
bFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoa2VybmVsU2l6ZSwga2VybmVsU2l6ZSksIHJlY3Qu
c2l6ZSgpKSwgcmVjdENvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBzaGFkb3dDb250ZXh0
LT5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludChyYWRpdXMsIHJhZGl1cyksIHJlY3Quc2l6
ZSgpKSwgcmVjdENvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKIAotICAgIGNvbnRleHQtPmNyZWF0
ZVBsYXRmb3JtU2hhZG93KHNoYWRvd0J1ZmZlci5yZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFk
b3dSZWN0LCBrZXJuZWxTaXplKTsKKyAgICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhz
aGFkb3dCdWZmZXIucmVsZWFzZSgpLCBzaGFkb3dDb2xvciwgc2hhZG93UmVjdCwgcmFkaXVzKTsK
ICNlbmRpZgogfQogCkBAIC05MjgsMjggKzkyOSwzMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0UGxhdGZvcm1TaGFkb3coRmxvYXRTaXplIGNvbnN0JiBzaXplLCBmbG9hdCwgQ29sb3IgY29u
cwogICAgIH0KIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZVBsYXRmb3JtU2hhZG93
KFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9y
LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0IGtlcm5lbFNpemUpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1TaGFkb3coUGFzc093blB0cjxJbWFnZUJ1ZmZl
cj4gYnVmZmVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgc2hh
ZG93UmVjdCwgZmxvYXQgcmFkaXVzKQogewogI2lmIEVOQUJMRShGSUxURVJTKQogICAgIGNhaXJv
X3QqIGNyID0gbV9kYXRhLT5jcjsKIAotICAgIC8vIGRyYXcgdGhlIHNoYWRvdyB3aXRob3V0IGJs
dXJyaW5nLCBpZiBrZXJuZWxTaXplIGlzIHplcm8KLSAgICBpZiAoIWtlcm5lbFNpemUpIHsKKyAg
ICBGbG9hdFBvaW50IGJsdXJSYWRpdXMgPSBGbG9hdFBvaW50KHJhZGl1cywgcmFkaXVzKTsKKwor
ICAgIC8vIGNhbGN1bGF0ZSB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uCisgICAgZmxvYXQgc2R4LCBz
ZHk7CisgICAgRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZVN0ZERldmlhdGlvbihibHVyUmFkaXVz
LCBGbG9hdFNpemUoMSwgMSksIHNkeCwgc2R5KTsKKworICAgIC8vIGRyYXcgdGhlIHNoYWRvdyB3
aXRob3V0IGJsdXJyaW5nLCBpZiByYWRpdXMgaXMgemVybworICAgIGlmICghcmFkaXVzIHx8ICgh
c2R4ICYmICFzZHkpKSB7CiAgICAgICAgIHNldENvbG9yKGNyLCBzaGFkb3dDb2xvcik7CiAgICAg
ICAgIGNhaXJvX21hc2tfc3VyZmFjZShjciwgYnVmZmVyLT5pbWFnZSgpLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpLCBzaGFkb3dSZWN0LngoKSwgc2hhZG93UmVjdC55KCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gbGltaXQga2VybmVsIHNpemUgdG8gMTAwMCwgdGhp
cyBpcyB3aGF0IENHIGlzIGRvaW5nLgotICAgIGtlcm5lbFNpemUgPSBzdGQ6Om1pbigxMDAwLmYs
IGtlcm5lbFNpemUpOwotCiAgICAgLy8gY3JlYXRlIGZpbHRlcgogICAgIFJlZlB0cjxGaWx0ZXI+
IGZpbHRlciA9IEltYWdlQnVmZmVyRmlsdGVyOjpjcmVhdGUoKTsKICAgICBmaWx0ZXItPnNldFNv
dXJjZUltYWdlKGJ1ZmZlcik7CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gc291cmNlID0gU291
cmNlR3JhcGhpYzo6Y3JlYXRlKCk7CiAgICAgc291cmNlLT5zZXRTY2FsZWRTdWJSZWdpb24oRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2hhZG93UmVjdC5zaXplKCkpKTsKICAgICBzb3VyY2UtPnNl
dElzQWxwaGFJbWFnZSh0cnVlKTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBibHVyID0gRkVH
YXVzc2lhbkJsdXI6OmNyZWF0ZShzb3VyY2UuZ2V0KCksIGtlcm5lbFNpemUsIGtlcm5lbFNpemUp
OworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJsdXIgPSBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRl
KHNvdXJjZS5nZXQoKSwgc2R4LCBzZHkpOwogICAgIGJsdXItPnNldFNjYWxlZFN1YlJlZ2lvbihG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaGFkb3dSZWN0LnNpemUoKSkpOwogICAgIGJsdXItPmFw
cGx5KGZpbHRlci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDY0ZmJlZGYuLmUzZGIxMDIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcApAQCAtMTQwLDggKzE0MCw4IEBA
IHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvCiAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRvdyhzaGFk
b3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpIHsKICAgICAgICAgSW50U2l6ZSBzaGFk
b3dCdWZmZXJTaXplOwogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdDsKLSAgICAgICAgZmxv
YXQga2VybmVsU2l6ZSAoMC4wKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVT
aGFkb3dCdWZmZXJEaW1lbnNpb25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIGtlcm5l
bFNpemUsIGRzdFJlY3QsIHNoYWRvd1NpemUsIHNoYWRvd0JsdXIpOworICAgICAgICBmbG9hdCBy
YWRpdXMgPSAwOworICAgICAgICBjb250ZXh0LT5jYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNp
b25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIHJhZGl1cywgZHN0UmVjdCwgc2hhZG93
U2l6ZSwgc2hhZG93Qmx1cik7CiAgICAgICAgIHNoYWRvd0NvbG9yID0gY29sb3JXaXRoT3ZlcnJp
ZGVBbHBoYShzaGFkb3dDb2xvci5yZ2IoKSwgKHNoYWRvd0NvbG9yLmFscGhhKCkgKiAgY29udGV4
dC0+Z2V0QWxwaGEoKSkgLyAyNTUuZik7CiAKICAgICAgICAgLy9kcmF3IHNoYWRvdyBpbnRvIGEg
bmV3IEltYWdlQnVmZmVyCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJh
dyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBG
bG8KICAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKHNoYWRvd0NvbnRleHQsIDAsIDAsIGRzdFJlY3Qu
d2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQoKSk7CiAgICAgICAgIGNhaXJvX2ZpbGwoc2hhZG93Q29u
dGV4dCk7CiAKLSAgICAgICAgY29udGV4dC0+Y3JlYXRlUGxhdGZvcm1TaGFkb3coc2hhZG93QnVm
ZmVyLnJlbGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRvd1JlY3QsIGtlcm5lbFNpemUpOworICAg
ICAgICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhzaGFkb3dCdWZmZXIucmVsZWFzZSgp
LCBzaGFkb3dDb2xvciwgc2hhZG93UmVjdCwgcmFkaXVzKTsKICAgICB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVy
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5j
cHAKaW5kZXggZTBjMjllNi4uZTczZjc1MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCkBAIC0xOTcsNiArMTk3LDEzIEBA
IFRleHRTdHJlYW0mIEZFR2F1c3NpYW5CbHVyOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjCiAgICAgcmV0dXJuIHRzOwogfQogCit2b2lkIEZFR2F1
c3NpYW5CbHVyOjpjYWxjdWxhdGVTdGREZXZpYXRpb24oY29uc3QgRmxvYXRQb2ludCYgcmFkaXVz
LCBjb25zdCBGbG9hdFNpemUmIHJlc29sdXRpb24sIGZsb2F0JiBzZHgsIGZsb2F0JiBzZHkpCit7
CisgICAgLy8gQmx1ciByYWRpdXMgcmVwcmVzZW50cyAyLzMgdGltZXMgdGhlIGtlcm5lbCBzaXpl
LCB0aGUgZGVzdCBwaXhlbCBpcyBoYWxmIG9mIHRoZSByYWRpdXMgYXBwbGllZCAzIHRpbWVzCisg
ICAgc2R4ID0gbWF4KChyYWRpdXMueCgpICogMiAvIDMgLSAwLjUpIC8gKHJlc29sdXRpb24ud2lk
dGgoKSAqIGdHYXVzc2lhbktlcm5lbEZhY3RvciksIDAuZik7CisgICAgc2R5ID0gbWF4KChyYWRp
dXMueSgpICogMiAvIDMgLSAwLjUpIC8gKHJlc29sdXRpb24uaGVpZ2h0KCkgKiBnR2F1c3NpYW5L
ZXJuZWxGYWN0b3IpLCAwLmYpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoRklMVEVSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKaW5kZXggNGM3YzQzYy4uN2YwZjk4YSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKQEAg
LTQzLDYgKzQzLDggQEAgcHVibGljOgogICAgIHZvaWQgZHVtcCgpOwogICAgIFRleHRTdHJlYW0m
IGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0Owog
CisgICAgc3RhdGljIHZvaWQgY2FsY3VsYXRlU3RkRGV2aWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQm
IHJhZGl1cywgY29uc3QgRmxvYXRTaXplJiByZXNvbHV0aW9uLCBmbG9hdCYgc2R4LCBmbG9hdCYg
c2R5KTsKKwogcHJpdmF0ZToKICAgICBGRUdhdXNzaWFuQmx1cihGaWx0ZXJFZmZlY3QqLCBjb25z
dCBmbG9hdCYsIGNvbnN0IGZsb2F0Jik7CiAgICAgc3RhdGljIHZvaWQga2VybmVsUG9zaXRpb24o
aW50IGJveEJsdXIsIHVuc2lnbmVkJiBzdGQsIGludCYgZExlZnQsIGludCYgZFJpZ2h0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64099</attachid>
            <date>2010-08-11 05:05:11 -0700</date>
            <delta_ts>2010-08-18 12:11:21 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>blur_radius.patch</filename>
            <type>text/plain</type>
            <size>16130</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IDhhNTkxMGExYmQ4MWMwMjIzMWVkYWI3NmY1ZmEwNzZiZmRlMmRmOGYKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgV2VkIEp1bCAxNCAx
OTo0Mjo0OSAyMDEwICswMjAwCgogICAgMjAxMC0wNy0xNSAgQWxlamFuZHJvIEcuIENhc3RybyAg
PGFsZXhAaWdhbGlhLmNvbT4KICAgIAogICAgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KICAgIAogICAgICAgICAgICBbR1RLXSBUaGUgc2l6ZSBvZiB0aGUgc2hhZG93IGltYWdl
IHVzZXMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbgogICAgICAgICAgICBzaXplIGluc3RlYWQgb2Yg
dGhlIGJsdXIgcmFkaXVzCiAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDc5MwogICAgCiAgICAgICAgICAgIFRoZSBrZXJuZWxTaXplIHZhcmlhYmxl
IHdhcyByZW5hbWVkIHRvIHJhZGl1cyBhbmQgcmVjYWxjdWxhdGVkCiAgICAgICAgICAgIGNvbnNp
ZGVyaW5nIHRoZSBDU1MzIHNwZWNpZmljYXRpb24KICAgICAgICAgICAgaHR0cDovL3d3dy53My5v
cmcvVFIvY3NzMy1iYWNrZ3JvdW5kLyN0aGUtYm94LXNoYWRvdywgYW5kIHRoZQogICAgICAgICAg
ICB2aXN1YWwgcmVzdWx0IG9mIG90aGVyIGJyb3dzZXJzLiBUaGUgSFRNTDUgY2FudmFzIHNoYWRv
dyBzdGFuZGFyZAogICAgICAgICAgICBkZXZpYXRpb24gY2FsY3VsYXRpb24gdGhhdCB3YXMgdXNl
ZCwgd2FzIG5vdCBhcHByb3BpYXRlIGZvciB0aGUKICAgICAgICAgICAgYmx1ciBkaXN0YW5jZSBz
cGVjaWZpZWQgaW4gdGhlIENTUzMuCiAgICAKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaDoKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6
CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVT
aGFkb3dCdWZmZXJEaW1lbnNpb25zKToKICAgICAgICAgICAgQ2hhbmdlZCB0aGUgY2FsY3VsYXRp
b24sIG5vdyB3ZSB1c2UgdGhlIHBhcmFtZXRlciBpbiB0aGUgc3R5bGUKICAgICAgICAgICAgZGly
ZWN0bHkgYXMgcmVjb21lbmRlZCBpbiB0aGUgQ1NTMyBzdGFuZGFyZC4KICAgICAgICAgICAgKFdl
YkNvcmU6OmRyYXdQYXRoU2hhZG93KToKICAgICAgICAgICAgKFdlYkNvcmU6OmRyYXdCb3JkZXJs
ZXNzUmVjdFNoYWRvdyk6CiAgICAgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNy
ZWF0ZVBsYXRmb3JtU2hhZG93KTogV2UgZ2V0IHRoZQogICAgICAgICAgICBzdGFuZGFyZCBkZXZp
YXRpb24gZnJvbSB0aGUgcmFkaXVzIHVzaW5nIHRoZSBuZXcgZnVuY3Rpb24gYW5kIHdlCiAgICAg
ICAgICAgIGNyZWF0ZSB0aGUgZmlsdGVyIHdpdGggdGhhdCBkZXZpYXRpb24uCiAgICAgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6CiAgICAgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpGRUdh
dXNzaWFuQmx1cjo6Y2FsY3VsYXRlU3RkRGV2aWF0aW9uKTogIEFkZGVkIHRoaXMKICAgICAgICAg
ICAgZnVuY3Rpb24gdGhhdCBnZXRzIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gZnJvbSB0aGUgYmx1
cgogICAgICAgICAgICByYWRpdXMuIFJlcXVpcmVkIGluIHRoZSBDU1MzIGNhc2Ugd2hlcmUgd2Ug
aGF2ZSB0aGlzIHJhZGlvIGFuZCB3ZQogICAgICAgICAgICBuZWVkIHRoZSBkZXZpYXRpb24gdG8g
aW5pdGlhbGl6ZSB0aGUgYWxnb3JpdGhtLgogICAgICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaDoKICAgIAogICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6CgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4ZWJmYzM1Li5jMjg2YzA1IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBA
CisyMDEwLTA3LTE1ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFRoZSBz
aXplIG9mIHRoZSBzaGFkb3cgaW1hZ2UgdXNlcyB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uCisgICAg
ICAgIHNpemUgaW5zdGVhZCBvZiB0aGUgYmx1ciByYWRpdXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNzkzCisKKyAgICAgICAgVGhlIGtlcm5lbFNp
emUgdmFyaWFibGUgd2FzIHJlbmFtZWQgdG8gcmFkaXVzIGFuZCByZWNhbGN1bGF0ZWQKKyAgICAg
ICAgY29uc2lkZXJpbmcgdGhlIENTUzMgc3BlY2lmaWNhdGlvbgorICAgICAgICBodHRwOi8vd3d3
LnczLm9yZy9UUi9jc3MzLWJhY2tncm91bmQvI3RoZS1ib3gtc2hhZG93LCBhbmQgdGhlCisgICAg
ICAgIHZpc3VhbCByZXN1bHQgb2Ygb3RoZXIgYnJvd3NlcnMuIFRoZSBIVE1MNSBjYW52YXMgc2hh
ZG93IHN0YW5kYXJkCisgICAgICAgIGRldmlhdGlvbiBjYWxjdWxhdGlvbiB0aGF0IHdhcyB1c2Vk
LCB3YXMgbm90IGFwcHJvcGlhdGUgZm9yIHRoZQorICAgICAgICBibHVyIGRpc3RhbmNlIHNwZWNp
ZmllZCBpbiB0aGUgQ1NTMy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMp
OgorICAgICAgICBDaGFuZ2VkIHRoZSBjYWxjdWxhdGlvbiwgbm93IHdlIHVzZSB0aGUgcGFyYW1l
dGVyIGluIHRoZSBzdHlsZQorICAgICAgICBkaXJlY3RseSBhcyByZWNvbWVuZGVkIGluIHRoZSBD
U1MzIHN0YW5kYXJkLgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6ZHJhd0JvcmRlcmxlc3NSZWN0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1TaGFkb3cpOiBXZSBnZXQgdGhlCisgICAg
ICAgIHN0YW5kYXJkIGRldmlhdGlvbiBmcm9tIHRoZSByYWRpdXMgdXNpbmcgdGhlIG5ldyBmdW5j
dGlvbiBhbmQgd2UKKyAgICAgICAgY3JlYXRlIHRoZSBmaWx0ZXIgd2l0aCB0aGF0IGRldmlhdGlv
bi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
R2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVTdGREZXZpYXRpb24pOiAgQWRkZWQgdGhpcworICAgICAg
ICBmdW5jdGlvbiB0aGF0IGdldHMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBmcm9tIHRoZSBibHVy
CisgICAgICAgIHJhZGl1cy4gUmVxdWlyZWQgaW4gdGhlIENTUzMgY2FzZSB3aGVyZSB3ZSBoYXZl
IHRoaXMgcmFkaW8gYW5kIHdlCisgICAgICAgIG5lZWQgdGhlIGRldmlhdGlvbiB0byBpbml0aWFs
aXplIHRoZSBhbGdvcml0aG0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5oOgorCiAyMDEwLTA4LTExICBKdWxpZSBQYXJlbnQgIDxqcGFyZW50QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKdXN0aW4gR2FyY2lhLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggYzkwM2VkNy4uOGQ4
Njk5MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC0yODcsOCArMjg3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEFs
cGhhKGZsb2F0KTsKICNpZiBQTEFURk9STShDQUlSTykKICAgICAgICAgZmxvYXQgZ2V0QWxwaGEo
KTsKLSAgICAgICAgdm9pZCBjcmVhdGVQbGF0Zm9ybVNoYWRvdyhQYXNzT3duUHRyPEltYWdlQnVm
ZmVyPiBidWZmZXIsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgY29uc3QgRmxvYXRSZWN0JiBz
aGFkb3dSZWN0LCBmbG9hdCBrZXJuZWxTaXplKTsKLSAgICAgICAgc3RhdGljIHZvaWQgY2FsY3Vs
YXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhJbnRTaXplJiBzaGFkb3dCdWZmZXJTaXplLCBGbG9h
dFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0JiBrZXJuZWxTaXplLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93U2l6ZSwgZmxvYXQgc2hhZG93Qmx1cik7
CisgICAgICAgIHZvaWQgY3JlYXRlUGxhdGZvcm1TaGFkb3coUGFzc093blB0cjxJbWFnZUJ1ZmZl
cj4gYnVmZmVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgc2hh
ZG93UmVjdCwgZmxvYXQgcmFkaXVzKTsKKyAgICAgICAgc3RhdGljIHZvaWQgY2FsY3VsYXRlU2hh
ZG93QnVmZmVyRGltZW5zaW9ucyhJbnRTaXplJiBzaGFkb3dCdWZmZXJTaXplLCBGbG9hdFJlY3Qm
IHNoYWRvd1JlY3QsIGZsb2F0JiByYWRpdXMsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgRmxvYXRTaXplJiBzaGFkb3dTaXplLCBmbG9hdCBzaGFkb3dCbHVyKTsKICNlbmRpZgog
CiAgICAgICAgIHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAppbmRleCA5
MjE3YTgxLi5mNmQ4ZjNkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0ZvbnRDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9G
b250Q2Fpcm8uY3BwCkBAIC05NCwxNSArOTQsMTUgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQsIGNvbnMK
ICAgICAgICAgRmxvYXRSZWN0IHJlY3QoRmxvYXRQb2ludCgpLCBGbG9hdFNpemUoZXh0ZW50cy53
aWR0aCwgZXh0ZW50cy5oZWlnaHQpKTsKICAgICAgICAgSW50U2l6ZSBzaGFkb3dCdWZmZXJTaXpl
OwogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdDsKLSAgICAgICAgZmxvYXQga2VybmVsU2l6
ZSA9IDAuZjsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJE
aW1lbnNpb25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIGtlcm5lbFNpemUsIHJlY3Qs
IHNoYWRvd1NpemUsIHNoYWRvd0JsdXIpOworICAgICAgICBmbG9hdCByYWRpdXMgPSAwOworICAg
ICAgICBjb250ZXh0LT5jYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKHNoYWRvd0J1ZmZl
clNpemUsIHNoYWRvd1JlY3QsIHJhZGl1cywgcmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7
CiAKICAgICAgICAgLy8gRHJhdyBzaGFkb3cgaW50byBhIG5ldyBJbWFnZUJ1ZmZlcgogICAgICAg
ICBPd25QdHI8SW1hZ2VCdWZmZXI+IHNoYWRvd0J1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2hhZG93QnVmZmVyU2l6ZSk7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4
dCA9IHNoYWRvd0J1ZmZlci0+Y29udGV4dCgpOwogICAgICAgICBjYWlyb190KiBzaGFkb3dDciA9
IHNoYWRvd0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogCi0gICAgICAgIGNhaXJvX3RyYW5z
bGF0ZShzaGFkb3dDciwga2VybmVsU2l6ZSwgZXh0ZW50cy5oZWlnaHQgKyBrZXJuZWxTaXplKTsK
KyAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKHNoYWRvd0NyLCByYWRpdXMsIGV4dGVudHMuaGVpZ2h0
ICsgcmFkaXVzKTsKIAogICAgICAgICBjYWlyb19zZXRfc2NhbGVkX2ZvbnQoc2hhZG93Q3IsIGZv
bnQtPnBsYXRmb3JtRGF0YSgpLnNjYWxlZEZvbnQoKSk7CiAgICAgICAgIGNhaXJvX3Nob3dfZ2x5
cGhzKHNoYWRvd0NyLCBnbHlwaHMsIG51bUdseXBocyk7CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9p
ZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgU2ltcGxl
Rm9udERhdGEqIGZvbnQsIGNvbnMKICAgICAgICAgICAgIGNhaXJvX3Jlc3RvcmUoc2hhZG93Q3Ip
OwogICAgICAgICB9CiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgMC4wLCAtZXh0ZW50cy5o
ZWlnaHQpOwotICAgICAgICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhzaGFkb3dCdWZm
ZXIucmVsZWFzZSgpLCBzaGFkb3dDb2xvciwgc2hhZG93UmVjdCwga2VybmVsU2l6ZSk7CisgICAg
ICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3JtU2hhZG93KHNoYWRvd0J1ZmZlci5yZWxlYXNlKCks
IHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCByYWRpdXMpOwogI2Vsc2UKICAgICAgICAgY2Fpcm9f
dHJhbnNsYXRlKGNyLCBzaGFkb3dTaXplLndpZHRoKCksIHNoYWRvd1NpemUuaGVpZ2h0KCkpOwog
ICAgICAgICBjYWlyb19zaG93X2dseXBocyhjciwgZ2x5cGhzLCBudW1HbHlwaHMpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWly
by5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcAppbmRleCBmM2ZjOTQzLi4yZWRiY2IzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtNjEs
NiArNjEsOCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNhaXJv
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oIgogCit1c2luZyBuYW1lc3Bh
Y2Ugc3RkOworCiAjaWZuZGVmIE1fUEkKICNkZWZpbmUgTV9QSSAzLjE0MTU5MjY1MzU4OTc5MzIz
ODQ2CiAjZW5kaWYKQEAgLTE3MywxOCArMTc1LDE3IEBAIHN0YXRpYyB2b2lkIGFkZENvbnZleFBv
bHlnb25Ub0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgc2l6ZV90IG51bVBvaW50cywgY29uc3QK
ICAgICBjYWlyb19jbG9zZV9wYXRoKGNvbnRleHQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dDo6Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhJbnRTaXplJiBzaGFkb3dCdWZmZXJT
aXplLCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0JiBrZXJuZWxTaXplLCBjb25zdCBGbG9h
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93U2l6ZSwgZmxvYXQgc2hh
ZG93Qmx1cikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1l
bnNpb25zKEludFNpemUmIHNoYWRvd0J1ZmZlclNpemUsIEZsb2F0UmVjdCYgc2hhZG93UmVjdCwg
ZmxvYXQmIHJhZGl1cywgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBGbG9hdFNp
emUmIHNoYWRvd1NpemUsIGZsb2F0IHNoYWRvd0JsdXIpCiB7CiAjaWYgRU5BQkxFKEZJTFRFUlMp
Ci0gICAgLy8gY2FsY3VsYXRlIHRoZSBrZXJuZWwgc2l6ZSBhY2NvcmRpbmcgdG8gdGhlIEhUTUw1
IGNhbnZhcyBzaGFkb3cgc3BlY2lmaWNhdGlvbgotICAgIGtlcm5lbFNpemUgPSAoc2hhZG93Qmx1
ciA8IDggPyBzaGFkb3dCbHVyIC8gMi5mIDogc3FydChzaGFkb3dCbHVyICogMi5mKSk7Ci0gICAg
aW50IGJsdXJSYWRpdXMgPSBjZWlsKGtlcm5lbFNpemUpOworICAgIC8vIGxpbWl0IHJhZGl1cyB0
byAxMjgKKyAgICByYWRpdXMgPSBtaW4oMTI4LmYsIG1heChzaGFkb3dCbHVyLCAwLmYpKTsKIAot
ICAgIHNoYWRvd0J1ZmZlclNpemUgPSBJbnRTaXplKHNvdXJjZVJlY3Qud2lkdGgoKSArIGJsdXJS
YWRpdXMgKiAyLCBzb3VyY2VSZWN0LmhlaWdodCgpICsgYmx1clJhZGl1cyAqIDIpOworICAgIHNo
YWRvd0J1ZmZlclNpemUgPSBJbnRTaXplKHNvdXJjZVJlY3Qud2lkdGgoKSArIHJhZGl1cyAqIDIs
IHNvdXJjZVJlY3QuaGVpZ2h0KCkgKyByYWRpdXMgKiAyKTsKIAogICAgIC8vIGRldGVybWluZSBk
aW1lbnNpb25zIG9mIHNoYWRvdyByZWN0CiAgICAgc2hhZG93UmVjdCA9IEZsb2F0UmVjdChzb3Vy
Y2VSZWN0LmxvY2F0aW9uKCksIHNoYWRvd0J1ZmZlclNpemUpOwotICAgIHNoYWRvd1JlY3QubW92
ZShzaGFkb3dTaXplLndpZHRoKCkgLSBrZXJuZWxTaXplLCBzaGFkb3dTaXplLmhlaWdodCgpIC0g
a2VybmVsU2l6ZSk7CisgICAgc2hhZG93UmVjdC5tb3ZlKHNoYWRvd1NpemUud2lkdGgoKSAtIHJh
ZGl1cywgc2hhZG93U2l6ZS5oZWlnaHQoKSAtIHJhZGl1cyk7CiAjZW5kaWYKIH0KIApAQCAtMjA5
LDggKzIxMCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFByaXZhCiAKICAgICBJbnRTaXplIHNoYWRv
d0J1ZmZlclNpemU7CiAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3Q7Ci0gICAgZmxvYXQga2VybmVs
U2l6ZSA9IDA7Ci0gICAgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1l
bnNpb25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIGtlcm5lbFNpemUsIHJlY3QsIHNo
YWRvd1NpemUsIHNoYWRvd0JsdXIpOworICAgIGZsb2F0IHJhZGl1cyA9IDA7CisgICAgR3JhcGhp
Y3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKHNoYWRvd0J1ZmZlclNp
emUsIHNoYWRvd1JlY3QsIHJhZGl1cywgcmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CiAK
ICAgICAvLyBDcmVhdGUgc3VpdGFibHktc2l6ZWQgSW1hZ2VCdWZmZXIgdG8gaG9sZCB0aGUgc2hh
ZG93LgogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc2hhZG93QnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZShzaGFkb3dCdWZmZXJTaXplKTsKQEAgLTIxOCw3ICsyMTksNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgZHJhd1BhdGhTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHcmFwaGlj
c0NvbnRleHRQcml2YQogICAgIC8vIERyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VCdWZmZXIu
CiAgICAgY2Fpcm9fdCogc2hhZG93Q29udGV4dCA9IHNoYWRvd0J1ZmZlci0+Y29udGV4dCgpLT5w
bGF0Zm9ybUNvbnRleHQoKTsKICAgICBjb3B5Q29udGV4dFByb3BlcnRpZXMoY3IsIHNoYWRvd0Nv
bnRleHQpOwotICAgIGNhaXJvX3RyYW5zbGF0ZShzaGFkb3dDb250ZXh0LCAtcmVjdC54KCkgKyBr
ZXJuZWxTaXplLCAtcmVjdC55KCkgKyBrZXJuZWxTaXplKTsKKyAgICBjYWlyb190cmFuc2xhdGUo
c2hhZG93Q29udGV4dCwgLXJlY3QueCgpICsgcmFkaXVzLCAtcmVjdC55KCkgKyByYWRpdXMpOwog
ICAgIGNhaXJvX25ld19wYXRoKHNoYWRvd0NvbnRleHQpOwogICAgIGNhaXJvX2FwcGVuZF9wYXRo
KHNoYWRvd0NvbnRleHQsIHBhdGgpOwogCkBAIC0yMjcsNyArMjI4LDcgQEAgc3RhdGljIGlubGlu
ZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgR3JhcGhpY3ND
b250ZXh0UHJpdmEKICAgICBpZiAoc3Ryb2tlU2hhZG93KQogICAgICAgICBzZXRQbGF0Zm9ybVN0
cm9rZShjb250ZXh0LCBzaGFkb3dDb250ZXh0LCBnY3ApOwogCi0gICAgY29udGV4dC0+Y3JlYXRl
UGxhdGZvcm1TaGFkb3coc2hhZG93QnVmZmVyLnJlbGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRv
d1JlY3QsIGtlcm5lbFNpemUpOworICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3JtU2hhZG93KHNo
YWRvd0J1ZmZlci5yZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCByYWRpdXMpOwog
I2VuZGlmCiB9CiAKQEAgLTYzMSwxNSArNjMyLDE1IEBAIHN0YXRpYyB2b2lkIGRyYXdCb3JkZXJs
ZXNzUmVjdFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYK
IAogICAgIEludFNpemUgc2hhZG93QnVmZmVyU2l6ZTsKICAgICBGbG9hdFJlY3Qgc2hhZG93UmVj
dDsKLSAgICBmbG9hdCBrZXJuZWxTaXplID0gMDsKLSAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1
bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwg
a2VybmVsU2l6ZSwgcmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CisgICAgZmxvYXQgcmFk
aXVzID0gMDsKKyAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVu
c2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwgcmFkaXVzLCByZWN0LCBzaGFkb3dT
aXplLCBzaGFkb3dCbHVyKTsKIAogICAgIC8vIERyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VC
dWZmZXIKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IHNoYWRvd0J1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGUoc2hhZG93QnVmZmVyU2l6ZSk7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dD
b250ZXh0ID0gc2hhZG93QnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgc2hhZG93Q29udGV4dC0+Zmls
bFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoa2VybmVsU2l6ZSwga2VybmVsU2l6ZSksIHJlY3Qu
c2l6ZSgpKSwgcmVjdENvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICBzaGFkb3dDb250ZXh0
LT5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludChyYWRpdXMsIHJhZGl1cyksIHJlY3Quc2l6
ZSgpKSwgcmVjdENvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKIAotICAgIGNvbnRleHQtPmNyZWF0
ZVBsYXRmb3JtU2hhZG93KHNoYWRvd0J1ZmZlci5yZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFk
b3dSZWN0LCBrZXJuZWxTaXplKTsKKyAgICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhz
aGFkb3dCdWZmZXIucmVsZWFzZSgpLCBzaGFkb3dDb2xvciwgc2hhZG93UmVjdCwgcmFkaXVzKTsK
ICNlbmRpZgogfQogCkBAIC05MjgsMjggKzkyOSwzMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0UGxhdGZvcm1TaGFkb3coRmxvYXRTaXplIGNvbnN0JiBzaXplLCBmbG9hdCwgQ29sb3IgY29u
cwogICAgIH0KIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZVBsYXRmb3JtU2hhZG93
KFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9y
LCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0IGtlcm5lbFNpemUpCit2b2lkIEdy
YXBoaWNzQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1TaGFkb3coUGFzc093blB0cjxJbWFnZUJ1ZmZl
cj4gYnVmZmVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgc2hh
ZG93UmVjdCwgZmxvYXQgcmFkaXVzKQogewogI2lmIEVOQUJMRShGSUxURVJTKQogICAgIGNhaXJv
X3QqIGNyID0gbV9kYXRhLT5jcjsKIAotICAgIC8vIGRyYXcgdGhlIHNoYWRvdyB3aXRob3V0IGJs
dXJyaW5nLCBpZiBrZXJuZWxTaXplIGlzIHplcm8KLSAgICBpZiAoIWtlcm5lbFNpemUpIHsKKyAg
ICBGbG9hdFBvaW50IGJsdXJSYWRpdXMgPSBGbG9hdFBvaW50KHJhZGl1cywgcmFkaXVzKTsKKwor
ICAgIC8vIGNhbGN1bGF0ZSB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uCisgICAgZmxvYXQgc2R4LCBz
ZHk7CisgICAgRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZVN0ZERldmlhdGlvbihibHVyUmFkaXVz
LCBGbG9hdFNpemUoMSwgMSksIHNkeCwgc2R5KTsKKworICAgIC8vIGRyYXcgdGhlIHNoYWRvdyB3
aXRob3V0IGJsdXJyaW5nLCBpZiByYWRpdXMgaXMgemVybworICAgIGlmICghcmFkaXVzIHx8ICgh
c2R4ICYmICFzZHkpKSB7CiAgICAgICAgIHNldENvbG9yKGNyLCBzaGFkb3dDb2xvcik7CiAgICAg
ICAgIGNhaXJvX21hc2tfc3VyZmFjZShjciwgYnVmZmVyLT5pbWFnZSgpLT5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpLCBzaGFkb3dSZWN0LngoKSwgc2hhZG93UmVjdC55KCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gbGltaXQga2VybmVsIHNpemUgdG8gMTAwMCwgdGhp
cyBpcyB3aGF0IENHIGlzIGRvaW5nLgotICAgIGtlcm5lbFNpemUgPSBzdGQ6Om1pbigxMDAwLmYs
IGtlcm5lbFNpemUpOwotCiAgICAgLy8gY3JlYXRlIGZpbHRlcgogICAgIFJlZlB0cjxGaWx0ZXI+
IGZpbHRlciA9IEltYWdlQnVmZmVyRmlsdGVyOjpjcmVhdGUoKTsKICAgICBmaWx0ZXItPnNldFNv
dXJjZUltYWdlKGJ1ZmZlcik7CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gc291cmNlID0gU291
cmNlR3JhcGhpYzo6Y3JlYXRlKCk7CiAgICAgc291cmNlLT5zZXRTY2FsZWRTdWJSZWdpb24oRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgc2hhZG93UmVjdC5zaXplKCkpKTsKICAgICBzb3VyY2UtPnNl
dElzQWxwaGFJbWFnZSh0cnVlKTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBibHVyID0gRkVH
YXVzc2lhbkJsdXI6OmNyZWF0ZShzb3VyY2UuZ2V0KCksIGtlcm5lbFNpemUsIGtlcm5lbFNpemUp
OworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJsdXIgPSBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRl
KHNvdXJjZS5nZXQoKSwgc2R4LCBzZHkpOwogICAgIGJsdXItPnNldFNjYWxlZFN1YlJlZ2lvbihG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaGFkb3dSZWN0LnNpemUoKSkpOwogICAgIGJsdXItPmFw
cGx5KGZpbHRlci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDY0ZmJlZGYuLmUzZGIxMDIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcApAQCAtMTQwLDggKzE0MCw4IEBA
IHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIGRzdCwgY29uc3QgRmxvCiAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRvdyhzaGFk
b3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpIHsKICAgICAgICAgSW50U2l6ZSBzaGFk
b3dCdWZmZXJTaXplOwogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdDsKLSAgICAgICAgZmxv
YXQga2VybmVsU2l6ZSAoMC4wKTsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVT
aGFkb3dCdWZmZXJEaW1lbnNpb25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIGtlcm5l
bFNpemUsIGRzdFJlY3QsIHNoYWRvd1NpemUsIHNoYWRvd0JsdXIpOworICAgICAgICBmbG9hdCBy
YWRpdXMgPSAwOworICAgICAgICBjb250ZXh0LT5jYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNp
b25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIHJhZGl1cywgZHN0UmVjdCwgc2hhZG93
U2l6ZSwgc2hhZG93Qmx1cik7CiAgICAgICAgIHNoYWRvd0NvbG9yID0gY29sb3JXaXRoT3ZlcnJp
ZGVBbHBoYShzaGFkb3dDb2xvci5yZ2IoKSwgKHNoYWRvd0NvbG9yLmFscGhhKCkgKiAgY29udGV4
dC0+Z2V0QWxwaGEoKSkgLyAyNTUuZik7CiAKICAgICAgICAgLy9kcmF3IHNoYWRvdyBpbnRvIGEg
bmV3IEltYWdlQnVmZmVyCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJh
dyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBG
bG8KICAgICAgICAgY2Fpcm9fcmVjdGFuZ2xlKHNoYWRvd0NvbnRleHQsIDAsIDAsIGRzdFJlY3Qu
d2lkdGgoKSwgZHN0UmVjdC5oZWlnaHQoKSk7CiAgICAgICAgIGNhaXJvX2ZpbGwoc2hhZG93Q29u
dGV4dCk7CiAKLSAgICAgICAgY29udGV4dC0+Y3JlYXRlUGxhdGZvcm1TaGFkb3coc2hhZG93QnVm
ZmVyLnJlbGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRvd1JlY3QsIGtlcm5lbFNpemUpOworICAg
ICAgICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhzaGFkb3dCdWZmZXIucmVsZWFzZSgp
LCBzaGFkb3dDb2xvciwgc2hhZG93UmVjdCwgcmFkaXVzKTsKICAgICB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVy
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5j
cHAKaW5kZXggZTBjMjllNi4uNmY0NWUzNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCkBAIC0xOTcsNiArMTk3LDEzIEBA
IFRleHRTdHJlYW0mIEZFR2F1c3NpYW5CbHVyOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjCiAgICAgcmV0dXJuIHRzOwogfQogCit2b2lkIEZFR2F1
c3NpYW5CbHVyOjpjYWxjdWxhdGVTdGREZXZpYXRpb24oY29uc3QgRmxvYXRQb2ludCYgcmFkaXVz
LCBjb25zdCBGbG9hdFNpemUmIHJlc29sdXRpb24sIGZsb2F0JiBzZHgsIGZsb2F0JiBzZHkpCit7
CisgICAgLy8gQmx1ciByYWRpdXMgcmVwcmVzZW50cyAyLzMgdGltZXMgdGhlIGtlcm5lbCBzaXpl
LCB0aGUgZGVzdCBwaXhlbCBpcyBoYWxmIG9mIHRoZSByYWRpdXMgYXBwbGllZCAzIHRpbWVzCisg
ICAgc2R4ID0gbWF4KChyYWRpdXMueCgpICogMiAvIDMgLSAwLjVmKSAvIChyZXNvbHV0aW9uLndp
ZHRoKCkgKiBnR2F1c3NpYW5LZXJuZWxGYWN0b3IpLCAwLmYpOworICAgIHNkeSA9IG1heCgocmFk
aXVzLnkoKSAqIDIgLyAzIC0gMC41ZikgLyAocmVzb2x1dGlvbi5oZWlnaHQoKSAqIGdHYXVzc2lh
bktlcm5lbEZhY3RvciksIDAuZik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShGSUxURVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAppbmRleCA0YzdjNDNjLi43ZjBmOThhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaApA
QCAtNDMsNiArNDMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wKCk7CiAgICAgVGV4dFN0cmVh
bSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Q7
CiAKKyAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVTdGREZXZpYXRpb24oY29uc3QgRmxvYXRQb2lu
dCYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIHJlc29sdXRpb24sIGZsb2F0JiBzZHgsIGZsb2F0
JiBzZHkpOworCiBwcml2YXRlOgogICAgIEZFR2F1c3NpYW5CbHVyKEZpbHRlckVmZmVjdCosIGNv
bnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmKTsKICAgICBzdGF0aWMgdm9pZCBrZXJuZWxQb3NpdGlv
bihpbnQgYm94Qmx1ciwgdW5zaWduZWQmIHN0ZCwgaW50JiBkTGVmdCwgaW50JiBkUmlnaHQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64751</attachid>
            <date>2010-08-18 12:11:21 -0700</date>
            <delta_ts>2010-08-19 01:39:16 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>blur_radius.patch</filename>
            <type>text/plain</type>
            <size>16100</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IDBkYjc0YjI0ZGViZWNjNDgwMjEwNGI0N2E0ZjkwNTVkZDIxMmZiNzYKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgV2VkIEp1bCAxNCAx
OTo0Mjo0OSAyMDEwICswMjAwCgogICAgMjAxMC0wNy0xNSAgQWxlamFuZHJvIEcuIENhc3RybyAg
PGFsZXhAaWdhbGlhLmNvbT4KICAgIAogICAgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KICAgIAogICAgICAgICAgICBbR1RLXSBUaGUgc2l6ZSBvZiB0aGUgc2hhZG93IGltYWdl
IHVzZXMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbgogICAgICAgICAgICBzaXplIGluc3RlYWQgb2Yg
dGhlIGJsdXIgcmFkaXVzCiAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDc5MwogICAgCiAgICAgICAgICAgIFRoZSBrZXJuZWxTaXplIHZhcmlhYmxl
IHdhcyByZW5hbWVkIHRvIHJhZGl1cyBhbmQgcmVjYWxjdWxhdGVkCiAgICAgICAgICAgIGNvbnNp
ZGVyaW5nIHRoZSBDU1MzIHNwZWNpZmljYXRpb24KICAgICAgICAgICAgaHR0cDovL3d3dy53My5v
cmcvVFIvY3NzMy1iYWNrZ3JvdW5kLyN0aGUtYm94LXNoYWRvdywgYW5kIHRoZQogICAgICAgICAg
ICB2aXN1YWwgcmVzdWx0IG9mIG90aGVyIGJyb3dzZXJzLiBUaGUgSFRNTDUgY2FudmFzIHNoYWRv
dyBzdGFuZGFyZAogICAgICAgICAgICBkZXZpYXRpb24gY2FsY3VsYXRpb24gdGhhdCB3YXMgdXNl
ZCwgd2FzIG5vdCBhcHByb3BpYXRlIGZvciB0aGUKICAgICAgICAgICAgYmx1ciBkaXN0YW5jZSBz
cGVjaWZpZWQgaW4gdGhlIENTUzMuCiAgICAKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaDoKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6
CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVT
aGFkb3dCdWZmZXJEaW1lbnNpb25zKToKICAgICAgICAgICAgQ2hhbmdlZCB0aGUgY2FsY3VsYXRp
b24sIG5vdyB3ZSB1c2UgdGhlIHBhcmFtZXRlciBpbiB0aGUgc3R5bGUKICAgICAgICAgICAgZGly
ZWN0bHkgYXMgcmVjb21lbmRlZCBpbiB0aGUgQ1NTMyBzdGFuZGFyZC4KICAgICAgICAgICAgKFdl
YkNvcmU6OmRyYXdQYXRoU2hhZG93KToKICAgICAgICAgICAgKFdlYkNvcmU6OmRyYXdCb3JkZXJs
ZXNzUmVjdFNoYWRvdyk6CiAgICAgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNy
ZWF0ZVBsYXRmb3JtU2hhZG93KTogV2UgZ2V0IHRoZQogICAgICAgICAgICBzdGFuZGFyZCBkZXZp
YXRpb24gZnJvbSB0aGUgcmFkaXVzIHVzaW5nIHRoZSBuZXcgZnVuY3Rpb24gYW5kIHdlCiAgICAg
ICAgICAgIGNyZWF0ZSB0aGUgZmlsdGVyIHdpdGggdGhhdCBkZXZpYXRpb24uCiAgICAgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6CiAgICAgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpGRUdh
dXNzaWFuQmx1cjo6Y2FsY3VsYXRlU3RkRGV2aWF0aW9uKTogIEFkZGVkIHRoaXMKICAgICAgICAg
ICAgZnVuY3Rpb24gdGhhdCBnZXRzIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gZnJvbSB0aGUgYmx1
cgogICAgICAgICAgICByYWRpdXMuIFJlcXVpcmVkIGluIHRoZSBDU1MzIGNhc2Ugd2hlcmUgd2Ug
aGF2ZSB0aGlzIHJhZGlvIGFuZCB3ZQogICAgICAgICAgICBuZWVkIHRoZSBkZXZpYXRpb24gdG8g
aW5pdGlhbGl6ZSB0aGUgYWxnb3JpdGhtLgogICAgICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaDoKICAgIAogICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6CgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiOTkwYWM2Li42MWM4YmFlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBA
CisyMDEwLTA3LTE1ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFRoZSBz
aXplIG9mIHRoZSBzaGFkb3cgaW1hZ2UgdXNlcyB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uCisgICAg
ICAgIHNpemUgaW5zdGVhZCBvZiB0aGUgYmx1ciByYWRpdXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNzkzCisKKyAgICAgICAgVGhlIGtlcm5lbFNp
emUgdmFyaWFibGUgd2FzIHJlbmFtZWQgdG8gcmFkaXVzIGFuZCByZWNhbGN1bGF0ZWQKKyAgICAg
ICAgY29uc2lkZXJpbmcgdGhlIENTUzMgc3BlY2lmaWNhdGlvbgorICAgICAgICBodHRwOi8vd3d3
LnczLm9yZy9UUi9jc3MzLWJhY2tncm91bmQvI3RoZS1ib3gtc2hhZG93LCBhbmQgdGhlCisgICAg
ICAgIHZpc3VhbCByZXN1bHQgb2Ygb3RoZXIgYnJvd3NlcnMuIFRoZSBIVE1MNSBjYW52YXMgc2hh
ZG93IHN0YW5kYXJkCisgICAgICAgIGRldmlhdGlvbiBjYWxjdWxhdGlvbiB0aGF0IHdhcyB1c2Vk
LCB3YXMgbm90IGFwcHJvcGlhdGUgZm9yIHRoZQorICAgICAgICBibHVyIGRpc3RhbmNlIHNwZWNp
ZmllZCBpbiB0aGUgQ1NTMy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMp
OgorICAgICAgICBDaGFuZ2VkIHRoZSBjYWxjdWxhdGlvbiwgbm93IHdlIHVzZSB0aGUgcGFyYW1l
dGVyIGluIHRoZSBzdHlsZQorICAgICAgICBkaXJlY3RseSBhcyByZWNvbWVuZGVkIGluIHRoZSBD
U1MzIHN0YW5kYXJkLgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6ZHJhd0JvcmRlcmxlc3NSZWN0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1TaGFkb3cpOiBXZSBnZXQgdGhlCisgICAg
ICAgIHN0YW5kYXJkIGRldmlhdGlvbiBmcm9tIHRoZSByYWRpdXMgdXNpbmcgdGhlIG5ldyBmdW5j
dGlvbiBhbmQgd2UKKyAgICAgICAgY3JlYXRlIHRoZSBmaWx0ZXIgd2l0aCB0aGF0IGRldmlhdGlv
bi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
R2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVTdGREZXZpYXRpb24pOiAgQWRkZWQgdGhpcworICAgICAg
ICBmdW5jdGlvbiB0aGF0IGdldHMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBmcm9tIHRoZSBibHVy
CisgICAgICAgIHJhZGl1cy4gUmVxdWlyZWQgaW4gdGhlIENTUzMgY2FzZSB3aGVyZSB3ZSBoYXZl
IHRoaXMgcmFkaW8gYW5kIHdlCisgICAgICAgIG5lZWQgdGhlIGRldmlhdGlvbiB0byBpbml0aWFs
aXplIHRoZSBhbGdvcml0aG0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5oOgorCiAyMDEwLTA4LTE4ICBKaWFuIExpICA8amlhbmxpQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBkNTE0YjExLi5iMDA3OWU4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTI5NCw4
ICsyOTQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0QWxwaGEoZmxv
YXQpOwogI2lmIFBMQVRGT1JNKENBSVJPKQogICAgICAgICBmbG9hdCBnZXRBbHBoYSgpOwotICAg
ICAgICB2b2lkIGNyZWF0ZVBsYXRmb3JtU2hhZG93KFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1
ZmZlciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHNoYWRvd1Jl
Y3QsIGZsb2F0IGtlcm5lbFNpemUpOwotICAgICAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVTaGFk
b3dCdWZmZXJEaW1lbnNpb25zKEludFNpemUmIHNoYWRvd0J1ZmZlclNpemUsIEZsb2F0UmVjdCYg
c2hhZG93UmVjdCwgZmxvYXQmIGtlcm5lbFNpemUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgRmxvYXRTaXplJiBzaGFkb3dTaXplLCBmbG9hdCBzaGFkb3dCbHVyKTsKKyAgICAg
ICAgdm9pZCBjcmVhdGVQbGF0Zm9ybVNoYWRvdyhQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBidWZm
ZXIsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0
LCBmbG9hdCByYWRpdXMpOworICAgICAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVTaGFkb3dCdWZm
ZXJEaW1lbnNpb25zKEludFNpemUmIHNoYWRvd0J1ZmZlclNpemUsIEZsb2F0UmVjdCYgc2hhZG93
UmVjdCwgZmxvYXQmIHJhZGl1cywgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBG
bG9hdFNpemUmIHNoYWRvd1NpemUsIGZsb2F0IHNoYWRvd0JsdXIpOwogI2VuZGlmCiAKICAgICAg
ICAgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCmluZGV4IDkyMTdhODEu
LmY2ZDhmM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9u
dENhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWly
by5jcHAKQEAgLTk0LDE1ICs5NCwxNSBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29ucwogICAgICAg
ICBGbG9hdFJlY3QgcmVjdChGbG9hdFBvaW50KCksIEZsb2F0U2l6ZShleHRlbnRzLndpZHRoLCBl
eHRlbnRzLmhlaWdodCkpOwogICAgICAgICBJbnRTaXplIHNoYWRvd0J1ZmZlclNpemU7CiAgICAg
ICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0OwotICAgICAgICBmbG9hdCBrZXJuZWxTaXplID0gMC5m
OwotICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lv
bnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwga2VybmVsU2l6ZSwgcmVjdCwgc2hhZG93
U2l6ZSwgc2hhZG93Qmx1cik7CisgICAgICAgIGZsb2F0IHJhZGl1cyA9IDA7CisgICAgICAgIGNv
bnRleHQtPmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwg
c2hhZG93UmVjdCwgcmFkaXVzLCByZWN0LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVyKTsKIAogICAg
ICAgICAvLyBEcmF3IHNoYWRvdyBpbnRvIGEgbmV3IEltYWdlQnVmZmVyCiAgICAgICAgIE93blB0
cjxJbWFnZUJ1ZmZlcj4gc2hhZG93QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaGFkb3dC
dWZmZXJTaXplKTsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hh
ZG93QnVmZmVyLT5jb250ZXh0KCk7CiAgICAgICAgIGNhaXJvX3QqIHNoYWRvd0NyID0gc2hhZG93
Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAKLSAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKHNo
YWRvd0NyLCBrZXJuZWxTaXplLCBleHRlbnRzLmhlaWdodCArIGtlcm5lbFNpemUpOworICAgICAg
ICBjYWlyb190cmFuc2xhdGUoc2hhZG93Q3IsIHJhZGl1cywgZXh0ZW50cy5oZWlnaHQgKyByYWRp
dXMpOwogCiAgICAgICAgIGNhaXJvX3NldF9zY2FsZWRfZm9udChzaGFkb3dDciwgZm9udC0+cGxh
dGZvcm1EYXRhKCkuc2NhbGVkRm9udCgpKTsKICAgICAgICAgY2Fpcm9fc2hvd19nbHlwaHMoc2hh
ZG93Q3IsIGdseXBocywgbnVtR2x5cGhzKTsKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIEZvbnQ6
OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0
YSogZm9udCwgY29ucwogICAgICAgICAgICAgY2Fpcm9fcmVzdG9yZShzaGFkb3dDcik7CiAgICAg
ICAgIH0KICAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCAwLjAsIC1leHRlbnRzLmhlaWdodCk7
Ci0gICAgICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3JtU2hhZG93KHNoYWRvd0J1ZmZlci5yZWxl
YXNlKCksIHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCBrZXJuZWxTaXplKTsKKyAgICAgICAgY29u
dGV4dC0+Y3JlYXRlUGxhdGZvcm1TaGFkb3coc2hhZG93QnVmZmVyLnJlbGVhc2UoKSwgc2hhZG93
Q29sb3IsIHNoYWRvd1JlY3QsIHJhZGl1cyk7CiAjZWxzZQogICAgICAgICBjYWlyb190cmFuc2xh
dGUoY3IsIHNoYWRvd1NpemUud2lkdGgoKSwgc2hhZG93U2l6ZS5oZWlnaHQoKSk7CiAgICAgICAg
IGNhaXJvX3Nob3dfZ2x5cGhzKGNyLCBnbHlwaHMsIG51bUdseXBocyk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
CmluZGV4IDliMzA5NmUuLjFkZWNhNzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC02MSw2ICs2MSw4
IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ2Fpcm8uaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHRQcml2YXRlLmgiCiAKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7
CisKICNpZm5kZWYgTV9QSQogI2RlZmluZSBNX1BJIDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYKICNl
bmRpZgpAQCAtMTczLDE4ICsxNzUsMTcgQEAgc3RhdGljIHZvaWQgYWRkQ29udmV4UG9seWdvblRv
Q29udGV4dChjYWlyb190KiBjb250ZXh0LCBzaXplX3QgbnVtUG9pbnRzLCBjb25zdAogICAgIGNh
aXJvX2Nsb3NlX3BhdGgoY29udGV4dCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjYWxj
dWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKEludFNpemUmIHNoYWRvd0J1ZmZlclNpemUsIEZs
b2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQmIGtlcm5lbFNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgRmxvYXRTaXplJiBzaGFkb3dTaXplLCBmbG9hdCBzaGFkb3dCbHVy
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMo
SW50U2l6ZSYgc2hhZG93QnVmZmVyU2l6ZSwgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCYg
cmFkaXVzLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2hh
ZG93U2l6ZSwgZmxvYXQgc2hhZG93Qmx1cikKIHsKICNpZiBFTkFCTEUoRklMVEVSUykKLSAgICAv
LyBjYWxjdWxhdGUgdGhlIGtlcm5lbCBzaXplIGFjY29yZGluZyB0byB0aGUgSFRNTDUgY2FudmFz
IHNoYWRvdyBzcGVjaWZpY2F0aW9uCi0gICAga2VybmVsU2l6ZSA9IChzaGFkb3dCbHVyIDwgOCA/
IHNoYWRvd0JsdXIgLyAyLmYgOiBzcXJ0KHNoYWRvd0JsdXIgKiAyLmYpKTsKLSAgICBpbnQgYmx1
clJhZGl1cyA9IGNlaWwoa2VybmVsU2l6ZSk7CisgICAgLy8gbGltaXQgcmFkaXVzIHRvIDEyOAor
ICAgIHJhZGl1cyA9IG1pbigxMjguZiwgbWF4KHNoYWRvd0JsdXIsIDAuZikpOwogCi0gICAgc2hh
ZG93QnVmZmVyU2l6ZSA9IEludFNpemUoc291cmNlUmVjdC53aWR0aCgpICsgYmx1clJhZGl1cyAq
IDIsIHNvdXJjZVJlY3QuaGVpZ2h0KCkgKyBibHVyUmFkaXVzICogMik7CisgICAgc2hhZG93QnVm
ZmVyU2l6ZSA9IEludFNpemUoc291cmNlUmVjdC53aWR0aCgpICsgcmFkaXVzICogMiwgc291cmNl
UmVjdC5oZWlnaHQoKSArIHJhZGl1cyAqIDIpOwogCiAgICAgLy8gZGV0ZXJtaW5lIGRpbWVuc2lv
bnMgb2Ygc2hhZG93IHJlY3QKICAgICBzaGFkb3dSZWN0ID0gRmxvYXRSZWN0KHNvdXJjZVJlY3Qu
bG9jYXRpb24oKSwgc2hhZG93QnVmZmVyU2l6ZSk7Ci0gICAgc2hhZG93UmVjdC5tb3ZlKHNoYWRv
d1NpemUud2lkdGgoKSAtIGtlcm5lbFNpemUsIHNoYWRvd1NpemUuaGVpZ2h0KCkgLSBrZXJuZWxT
aXplKTsKKyAgICBzaGFkb3dSZWN0Lm1vdmUoc2hhZG93U2l6ZS53aWR0aCgpIC0gcmFkaXVzLCBz
aGFkb3dTaXplLmhlaWdodCgpIC0gcmFkaXVzKTsKICNlbmRpZgogfQogCkBAIC0yMDksOCArMjEw
LDggQEAgc3RhdGljIGlubGluZSB2b2lkIGRyYXdQYXRoU2hhZG93KEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgR3JhcGhpY3NDb250ZXh0UHJpdmEKIAogICAgIEludFNpemUgc2hhZG93QnVmZmVy
U2l6ZTsKICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdDsKLSAgICBmbG9hdCBrZXJuZWxTaXplID0g
MDsKLSAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMo
c2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwga2VybmVsU2l6ZSwgcmVjdCwgc2hhZG93U2l6
ZSwgc2hhZG93Qmx1cik7CisgICAgZmxvYXQgcmFkaXVzID0gMDsKKyAgICBHcmFwaGljc0NvbnRl
eHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hh
ZG93UmVjdCwgcmFkaXVzLCByZWN0LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVyKTsKIAogICAgIC8v
IENyZWF0ZSBzdWl0YWJseS1zaXplZCBJbWFnZUJ1ZmZlciB0byBob2xkIHRoZSBzaGFkb3cuCiAg
ICAgT3duUHRyPEltYWdlQnVmZmVyPiBzaGFkb3dCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KHNoYWRvd0J1ZmZlclNpemUpOwpAQCAtMjE4LDcgKzIxOSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9p
ZCBkcmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4
dFByaXZhCiAgICAgLy8gRHJhdyBzaGFkb3cgaW50byBhIG5ldyBJbWFnZUJ1ZmZlci4KICAgICBj
YWlyb190KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93QnVmZmVyLT5jb250ZXh0KCktPnBsYXRmb3Jt
Q29udGV4dCgpOwogICAgIGNvcHlDb250ZXh0UHJvcGVydGllcyhjciwgc2hhZG93Q29udGV4dCk7
Ci0gICAgY2Fpcm9fdHJhbnNsYXRlKHNoYWRvd0NvbnRleHQsIC1yZWN0LngoKSArIGtlcm5lbFNp
emUsIC1yZWN0LnkoKSArIGtlcm5lbFNpemUpOworICAgIGNhaXJvX3RyYW5zbGF0ZShzaGFkb3dD
b250ZXh0LCAtcmVjdC54KCkgKyByYWRpdXMsIC1yZWN0LnkoKSArIHJhZGl1cyk7CiAgICAgY2Fp
cm9fbmV3X3BhdGgoc2hhZG93Q29udGV4dCk7CiAgICAgY2Fpcm9fYXBwZW5kX3BhdGgoc2hhZG93
Q29udGV4dCwgcGF0aCk7CiAKQEAgLTIyNyw3ICsyMjgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
ZHJhd1BhdGhTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHcmFwaGljc0NvbnRleHRQ
cml2YQogICAgIGlmIChzdHJva2VTaGFkb3cpCiAgICAgICAgIHNldFBsYXRmb3JtU3Ryb2tlKGNv
bnRleHQsIHNoYWRvd0NvbnRleHQsIGdjcCk7CiAKLSAgICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9y
bVNoYWRvdyhzaGFkb3dCdWZmZXIucmVsZWFzZSgpLCBzaGFkb3dDb2xvciwgc2hhZG93UmVjdCwg
a2VybmVsU2l6ZSk7CisgICAgY29udGV4dC0+Y3JlYXRlUGxhdGZvcm1TaGFkb3coc2hhZG93QnVm
ZmVyLnJlbGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRvd1JlY3QsIHJhZGl1cyk7CiAjZW5kaWYK
IH0KIApAQCAtNjMxLDE1ICs2MzIsMTUgQEAgc3RhdGljIHZvaWQgZHJhd0JvcmRlcmxlc3NSZWN0
U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JgogCiAgICAg
SW50U2l6ZSBzaGFkb3dCdWZmZXJTaXplOwogICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0OwotICAg
IGZsb2F0IGtlcm5lbFNpemUgPSAwOwotICAgIEdyYXBoaWNzQ29udGV4dDo6Y2FsY3VsYXRlU2hh
ZG93QnVmZmVyRGltZW5zaW9ucyhzaGFkb3dCdWZmZXJTaXplLCBzaGFkb3dSZWN0LCBrZXJuZWxT
aXplLCByZWN0LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVyKTsKKyAgICBmbG9hdCByYWRpdXMgPSAw
OworICAgIEdyYXBoaWNzQ29udGV4dDo6Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhz
aGFkb3dCdWZmZXJTaXplLCBzaGFkb3dSZWN0LCByYWRpdXMsIHJlY3QsIHNoYWRvd1NpemUsIHNo
YWRvd0JsdXIpOwogCiAgICAgLy8gRHJhdyBzaGFkb3cgaW50byBhIG5ldyBJbWFnZUJ1ZmZlcgog
ICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc2hhZG93QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZShzaGFkb3dCdWZmZXJTaXplKTsKICAgICBHcmFwaGljc0NvbnRleHQqIHNoYWRvd0NvbnRleHQg
PSBzaGFkb3dCdWZmZXItPmNvbnRleHQoKTsKLSAgICBzaGFkb3dDb250ZXh0LT5maWxsUmVjdChG
bG9hdFJlY3QoRmxvYXRQb2ludChrZXJuZWxTaXplLCBrZXJuZWxTaXplKSwgcmVjdC5zaXplKCkp
LCByZWN0Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOworICAgIHNoYWRvd0NvbnRleHQtPmZpbGxS
ZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KHJhZGl1cywgcmFkaXVzKSwgcmVjdC5zaXplKCkpLCBy
ZWN0Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogCi0gICAgY29udGV4dC0+Y3JlYXRlUGxhdGZv
cm1TaGFkb3coc2hhZG93QnVmZmVyLnJlbGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRvd1JlY3Qs
IGtlcm5lbFNpemUpOworICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3JtU2hhZG93KHNoYWRvd0J1
ZmZlci5yZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCByYWRpdXMpOwogI2VuZGlm
CiB9CiAKQEAgLTkyMCwyOCArOTIxLDMxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0
Zm9ybVNoYWRvdyhGbG9hdFNpemUgY29uc3QmIHNpemUsIGZsb2F0LCBDb2xvciBjb25zCiAgICAg
fQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1TaGFkb3coUGFzc093
blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyLCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIGNvbnN0
IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQga2VybmVsU2l6ZSkKK3ZvaWQgR3JhcGhpY3ND
b250ZXh0OjpjcmVhdGVQbGF0Zm9ybVNoYWRvdyhQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBidWZm
ZXIsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0
LCBmbG9hdCByYWRpdXMpCiB7CiAjaWYgRU5BQkxFKEZJTFRFUlMpCiAgICAgY2Fpcm9fdCogY3Ig
PSBtX2RhdGEtPmNyOwogCi0gICAgLy8gZHJhdyB0aGUgc2hhZG93IHdpdGhvdXQgYmx1cnJpbmcs
IGlmIGtlcm5lbFNpemUgaXMgemVybwotICAgIGlmICgha2VybmVsU2l6ZSkgeworICAgIEZsb2F0
UG9pbnQgYmx1clJhZGl1cyA9IEZsb2F0UG9pbnQocmFkaXVzLCByYWRpdXMpOworCisgICAgLy8g
Y2FsY3VsYXRlIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24KKyAgICBmbG9hdCBzZHgsIHNkeTsKKyAg
ICBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlU3RkRGV2aWF0aW9uKGJsdXJSYWRpdXMsIEZsb2F0
U2l6ZSgxLCAxKSwgc2R4LCBzZHkpOworCisgICAgLy8gZHJhdyB0aGUgc2hhZG93IHdpdGhvdXQg
Ymx1cnJpbmcsIGlmIHJhZGl1cyBpcyB6ZXJvCisgICAgaWYgKCFyYWRpdXMgfHwgKCFzZHggJiYg
IXNkeSkpIHsKICAgICAgICAgc2V0Q29sb3IoY3IsIHNoYWRvd0NvbG9yKTsKICAgICAgICAgY2Fp
cm9fbWFza19zdXJmYWNlKGNyLCBidWZmZXItPm1fZGF0YS5tX3N1cmZhY2UsIHNoYWRvd1JlY3Qu
eCgpLCBzaGFkb3dSZWN0LnkoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBs
aW1pdCBrZXJuZWwgc2l6ZSB0byAxMDAwLCB0aGlzIGlzIHdoYXQgQ0cgaXMgZG9pbmcuCi0gICAg
a2VybmVsU2l6ZSA9IHN0ZDo6bWluKDEwMDAuZiwga2VybmVsU2l6ZSk7Ci0KICAgICAvLyBjcmVh
dGUgZmlsdGVyCiAgICAgUmVmUHRyPEZpbHRlcj4gZmlsdGVyID0gSW1hZ2VCdWZmZXJGaWx0ZXI6
OmNyZWF0ZSgpOwogICAgIGZpbHRlci0+c2V0U291cmNlSW1hZ2UoYnVmZmVyKTsKICAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBzb3VyY2UgPSBTb3VyY2VHcmFwaGljOjpjcmVhdGUoKTsKICAgICBz
b3VyY2UtPnNldFNjYWxlZFN1YlJlZ2lvbihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaGFkb3dS
ZWN0LnNpemUoKSkpOwogICAgIHNvdXJjZS0+c2V0SXNBbHBoYUltYWdlKHRydWUpOwotICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGJsdXIgPSBGRUdhdXNzaWFuQmx1cjo6Y3JlYXRlKHNvdXJjZS5n
ZXQoKSwga2VybmVsU2l6ZSwga2VybmVsU2l6ZSk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
Ymx1ciA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoc291cmNlLmdldCgpLCBzZHgsIHNkeSk7CiAg
ICAgYmx1ci0+c2V0U2NhbGVkU3ViUmVnaW9uKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNoYWRv
d1JlY3Quc2l6ZSgpKSk7CiAgICAgYmx1ci0+YXBwbHkoZmlsdGVyLmdldCgpKTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKaW5kZXggMTU4MjY3
MS4uZDVlYjBlNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9J
bWFnZUNhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
Q2Fpcm8uY3BwCkBAIC0xNDEsOCArMTQxLDggQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG8KICAg
ICBpZiAoY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0Nv
bG9yKSkgewogICAgICAgICBJbnRTaXplIHNoYWRvd0J1ZmZlclNpemU7CiAgICAgICAgIEZsb2F0
UmVjdCBzaGFkb3dSZWN0OwotICAgICAgICBmbG9hdCBrZXJuZWxTaXplICgwLjApOwotICAgICAg
ICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93
QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwga2VybmVsU2l6ZSwgZHN0UmVjdCwgc2hhZG93U2l6ZSwg
c2hhZG93Qmx1cik7CisgICAgICAgIGZsb2F0IHJhZGl1cyA9IDA7CisgICAgICAgIGNvbnRleHQt
PmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93
UmVjdCwgcmFkaXVzLCBkc3RSZWN0LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVyKTsKICAgICAgICAg
c2hhZG93Q29sb3IgPSBjb2xvcldpdGhPdmVycmlkZUFscGhhKHNoYWRvd0NvbG9yLnJnYigpLCAo
c2hhZG93Q29sb3IuYWxwaGEoKSAqICBjb250ZXh0LT5nZXRBbHBoYSgpKSAvIDI1NS5mKTsKIAog
ICAgICAgICAvL2RyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VCdWZmZXIKQEAgLTE1Myw3ICsx
NTMsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogICAgICAgICBjYWlyb19yZWN0YW5nbGUo
c2hhZG93Q29udGV4dCwgMCwgMCwgZHN0UmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpKTsK
ICAgICAgICAgY2Fpcm9fZmlsbChzaGFkb3dDb250ZXh0KTsKIAotICAgICAgICBjb250ZXh0LT5j
cmVhdGVQbGF0Zm9ybVNoYWRvdyhzaGFkb3dCdWZmZXIucmVsZWFzZSgpLCBzaGFkb3dDb2xvciwg
c2hhZG93UmVjdCwga2VybmVsU2l6ZSk7CisgICAgICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3Jt
U2hhZG93KHNoYWRvd0J1ZmZlci5yZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCBy
YWRpdXMpOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAppbmRleCA3MDQ2NWEwLi4xZjRlNDE1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJs
dXIuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFu
Qmx1ci5jcHAKQEAgLTIwMCw2ICsyMDAsMTMgQEAgVGV4dFN0cmVhbSYgRkVHYXVzc2lhbkJsdXI6
OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGMKICAg
ICByZXR1cm4gdHM7CiB9CiAKK3ZvaWQgRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZVN0ZERldmlh
dGlvbihjb25zdCBGbG9hdFBvaW50JiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYgcmVzb2x1dGlv
biwgZmxvYXQmIHNkeCwgZmxvYXQmIHNkeSkKK3sKKyAgICAvLyBCbHVyIHJhZGl1cyByZXByZXNl
bnRzIDIvMyB0aW1lcyB0aGUga2VybmVsIHNpemUsIHRoZSBkZXN0IHBpeGVsIGlzIGhhbGYgb2Yg
dGhlIHJhZGl1cyBhcHBsaWVkIDMgdGltZXMKKyAgICBzZHggPSBtYXgoKHJhZGl1cy54KCkgKiAy
IC8gMyAtIDAuNSkgLyAocmVzb2x1dGlvbi53aWR0aCgpICogZ0dhdXNzaWFuS2VybmVsRmFjdG9y
KSwgMC4wKTsKKyAgICBzZHkgPSBtYXgoKHJhZGl1cy55KCkgKiAyIC8gMyAtIDAuNSkgLyAocmVz
b2x1dGlvbi5oZWlnaHQoKSAqIGdHYXVzc2lhbktlcm5lbEZhY3RvciksIDAuMCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShGSUxURVJTKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAppbmRl
eCA0YzdjNDNjLi43ZjBmOThhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaApAQCAtNDMsNiArNDMsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkdW1wKCk7CiAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Q7CiAKKyAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVT
dGREZXZpYXRpb24oY29uc3QgRmxvYXRQb2ludCYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIHJl
c29sdXRpb24sIGZsb2F0JiBzZHgsIGZsb2F0JiBzZHkpOworCiBwcml2YXRlOgogICAgIEZFR2F1
c3NpYW5CbHVyKEZpbHRlckVmZmVjdCosIGNvbnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmKTsKICAg
ICBzdGF0aWMgdm9pZCBrZXJuZWxQb3NpdGlvbihpbnQgYm94Qmx1ciwgdW5zaWduZWQmIHN0ZCwg
aW50JiBkTGVmdCwgaW50JiBkUmlnaHQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64819</attachid>
            <date>2010-08-19 01:39:16 -0700</date>
            <delta_ts>2010-08-19 02:35:27 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>blur_radius.patch</filename>
            <type>text/plain</type>
            <size>15805</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IDUxMDc2Y2Y0MTMyNmE5M2IzODcxOTNkYjY3MjEyNDU4YjhmNjJiMDcKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgV2VkIEp1bCAxNCAx
OTo0Mjo0OSAyMDEwICswMjAwCgogICAgMjAxMC0wNy0xNSAgQWxlamFuZHJvIEcuIENhc3RybyAg
PGFsZXhAaWdhbGlhLmNvbT4KICAgIAogICAgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KICAgIAogICAgICAgICAgICBbR1RLXSBUaGUgc2l6ZSBvZiB0aGUgc2hhZG93IGltYWdl
IHVzZXMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbgogICAgICAgICAgICBzaXplIGluc3RlYWQgb2Yg
dGhlIGJsdXIgcmFkaXVzCiAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDc5MwogICAgCiAgICAgICAgICAgIFRoZSBrZXJuZWxTaXplIHZhcmlhYmxl
IHdhcyByZW5hbWVkIHRvIHJhZGl1cyBhbmQgcmVjYWxjdWxhdGVkCiAgICAgICAgICAgIGNvbnNp
ZGVyaW5nIHRoZSBDU1MzIHNwZWNpZmljYXRpb24KICAgICAgICAgICAgaHR0cDovL3d3dy53My5v
cmcvVFIvY3NzMy1iYWNrZ3JvdW5kLyN0aGUtYm94LXNoYWRvdywgYW5kIHRoZQogICAgICAgICAg
ICB2aXN1YWwgcmVzdWx0IG9mIG90aGVyIGJyb3dzZXJzLiBUaGUgSFRNTDUgY2FudmFzIHNoYWRv
dyBzdGFuZGFyZAogICAgICAgICAgICBkZXZpYXRpb24gY2FsY3VsYXRpb24gdGhhdCB3YXMgdXNl
ZCwgd2FzIG5vdCBhcHByb3BpYXRlIGZvciB0aGUKICAgICAgICAgICAgYmx1ciBkaXN0YW5jZSBz
cGVjaWZpZWQgaW4gdGhlIENTUzMuCiAgICAKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaDoKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6
CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVT
aGFkb3dCdWZmZXJEaW1lbnNpb25zKToKICAgICAgICAgICAgQ2hhbmdlZCB0aGUgY2FsY3VsYXRp
b24sIG5vdyB3ZSB1c2UgdGhlIHBhcmFtZXRlciBpbiB0aGUgc3R5bGUKICAgICAgICAgICAgZGly
ZWN0bHkgYXMgcmVjb21lbmRlZCBpbiB0aGUgQ1NTMyBzdGFuZGFyZC4KICAgICAgICAgICAgKFdl
YkNvcmU6OmRyYXdQYXRoU2hhZG93KToKICAgICAgICAgICAgKFdlYkNvcmU6OmRyYXdCb3JkZXJs
ZXNzUmVjdFNoYWRvdyk6CiAgICAgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNy
ZWF0ZVBsYXRmb3JtU2hhZG93KTogV2UgZ2V0IHRoZQogICAgICAgICAgICBzdGFuZGFyZCBkZXZp
YXRpb24gZnJvbSB0aGUgcmFkaXVzIHVzaW5nIHRoZSBuZXcgZnVuY3Rpb24gYW5kIHdlCiAgICAg
ICAgICAgIGNyZWF0ZSB0aGUgZmlsdGVyIHdpdGggdGhhdCBkZXZpYXRpb24uCiAgICAgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6CiAgICAgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpGRUdh
dXNzaWFuQmx1cjo6Y2FsY3VsYXRlU3RkRGV2aWF0aW9uKTogIEFkZGVkIHRoaXMKICAgICAgICAg
ICAgZnVuY3Rpb24gdGhhdCBnZXRzIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gZnJvbSB0aGUgYmx1
cgogICAgICAgICAgICByYWRpdXMuIFJlcXVpcmVkIGluIHRoZSBDU1MzIGNhc2Ugd2hlcmUgd2Ug
aGF2ZSB0aGlzIHJhZGlvIGFuZCB3ZQogICAgICAgICAgICBuZWVkIHRoZSBkZXZpYXRpb24gdG8g
aW5pdGlhbGl6ZSB0aGUgYWxnb3JpdGhtLgogICAgICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaDoKICAgIAogICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6CgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5OTM0ZmJmLi5iYTMyNmEwIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBA
CisyMDEwLTA3LTE1ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFRoZSBz
aXplIG9mIHRoZSBzaGFkb3cgaW1hZ2UgdXNlcyB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uCisgICAg
ICAgIHNpemUgaW5zdGVhZCBvZiB0aGUgYmx1ciByYWRpdXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNzkzCisKKyAgICAgICAgVGhlIGtlcm5lbFNp
emUgdmFyaWFibGUgd2FzIHJlbmFtZWQgdG8gcmFkaXVzIGFuZCByZWNhbGN1bGF0ZWQKKyAgICAg
ICAgY29uc2lkZXJpbmcgdGhlIENTUzMgc3BlY2lmaWNhdGlvbgorICAgICAgICBodHRwOi8vd3d3
LnczLm9yZy9UUi9jc3MzLWJhY2tncm91bmQvI3RoZS1ib3gtc2hhZG93LCBhbmQgdGhlCisgICAg
ICAgIHZpc3VhbCByZXN1bHQgb2Ygb3RoZXIgYnJvd3NlcnMuIFRoZSBIVE1MNSBjYW52YXMgc2hh
ZG93IHN0YW5kYXJkCisgICAgICAgIGRldmlhdGlvbiBjYWxjdWxhdGlvbiB0aGF0IHdhcyB1c2Vk
LCB3YXMgbm90IGFwcHJvcGlhdGUgZm9yIHRoZQorICAgICAgICBibHVyIGRpc3RhbmNlIHNwZWNp
ZmllZCBpbiB0aGUgQ1NTMy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMp
OgorICAgICAgICBDaGFuZ2VkIHRoZSBjYWxjdWxhdGlvbiwgbm93IHdlIHVzZSB0aGUgcGFyYW1l
dGVyIGluIHRoZSBzdHlsZQorICAgICAgICBkaXJlY3RseSBhcyByZWNvbWVuZGVkIGluIHRoZSBD
U1MzIHN0YW5kYXJkLgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6ZHJhd0JvcmRlcmxlc3NSZWN0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1TaGFkb3cpOiBXZSBnZXQgdGhlCisgICAg
ICAgIHN0YW5kYXJkIGRldmlhdGlvbiBmcm9tIHRoZSByYWRpdXMgdXNpbmcgdGhlIG5ldyBmdW5j
dGlvbiBhbmQgd2UKKyAgICAgICAgY3JlYXRlIHRoZSBmaWx0ZXIgd2l0aCB0aGF0IGRldmlhdGlv
bi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
R2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVTdGREZXZpYXRpb24pOiAgQWRkZWQgdGhpcworICAgICAg
ICBmdW5jdGlvbiB0aGF0IGdldHMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBmcm9tIHRoZSBibHVy
CisgICAgICAgIHJhZGl1cy4gUmVxdWlyZWQgaW4gdGhlIENTUzMgY2FzZSB3aGVyZSB3ZSBoYXZl
IHRoaXMgcmFkaW8gYW5kIHdlCisgICAgICAgIG5lZWQgdGhlIGRldmlhdGlvbiB0byBpbml0aWFs
aXplIHRoZSBhbGdvcml0aG0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5oOgorCiAyMDEwLTA4LTE5ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5r
bGluZ0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApp
bmRleCBkNTE0YjExLi5iMDA3OWU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKQEAgLTI5NCw4ICsyOTQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQpOwogI2lmIFBMQVRGT1JNKENBSVJPKQogICAgICAg
ICBmbG9hdCBnZXRBbHBoYSgpOwotICAgICAgICB2b2lkIGNyZWF0ZVBsYXRmb3JtU2hhZG93KFBh
c3NPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBj
b25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0IGtlcm5lbFNpemUpOwotICAgICAgICBz
dGF0aWMgdm9pZCBjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKEludFNpemUmIHNoYWRv
d0J1ZmZlclNpemUsIEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQmIGtlcm5lbFNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgc291cmNlUmVjdCwgY29uc3QgRmxvYXRTaXplJiBzaGFkb3dTaXplLCBm
bG9hdCBzaGFkb3dCbHVyKTsKKyAgICAgICAgdm9pZCBjcmVhdGVQbGF0Zm9ybVNoYWRvdyhQYXNz
T3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgY29u
c3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCByYWRpdXMpOworICAgICAgICBzdGF0aWMg
dm9pZCBjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKEludFNpemUmIHNoYWRvd0J1ZmZl
clNpemUsIEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQmIHJhZGl1cywgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBGbG9hdFNpemUmIHNoYWRvd1NpemUsIGZsb2F0IHNoYWRv
d0JsdXIpOwogI2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29t
cG9zaXRlT3BlcmF0b3IpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q2Fpcm8uY3BwCmluZGV4IDkyMTdhODEuLmY2ZDhmM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAgLTk0LDE1ICs5NCwxNSBAQCB2b2lkIEZv
bnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTaW1wbGVGb250
RGF0YSogZm9udCwgY29ucwogICAgICAgICBGbG9hdFJlY3QgcmVjdChGbG9hdFBvaW50KCksIEZs
b2F0U2l6ZShleHRlbnRzLndpZHRoLCBleHRlbnRzLmhlaWdodCkpOwogICAgICAgICBJbnRTaXpl
IHNoYWRvd0J1ZmZlclNpemU7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0OwotICAgICAg
ICBmbG9hdCBrZXJuZWxTaXplID0gMC5mOwotICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1
bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwg
a2VybmVsU2l6ZSwgcmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CisgICAgICAgIGZsb2F0
IHJhZGl1cyA9IDA7CisgICAgICAgIGNvbnRleHQtPmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVu
c2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwgcmFkaXVzLCByZWN0LCBzaGFkb3dT
aXplLCBzaGFkb3dCbHVyKTsKIAogICAgICAgICAvLyBEcmF3IHNoYWRvdyBpbnRvIGEgbmV3IElt
YWdlQnVmZmVyCiAgICAgICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc2hhZG93QnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaGFkb3dCdWZmZXJTaXplKTsKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93QnVmZmVyLT5jb250ZXh0KCk7CiAgICAgICAgIGNh
aXJvX3QqIHNoYWRvd0NyID0gc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAKLSAg
ICAgICAgY2Fpcm9fdHJhbnNsYXRlKHNoYWRvd0NyLCBrZXJuZWxTaXplLCBleHRlbnRzLmhlaWdo
dCArIGtlcm5lbFNpemUpOworICAgICAgICBjYWlyb190cmFuc2xhdGUoc2hhZG93Q3IsIHJhZGl1
cywgZXh0ZW50cy5oZWlnaHQgKyByYWRpdXMpOwogCiAgICAgICAgIGNhaXJvX3NldF9zY2FsZWRf
Zm9udChzaGFkb3dDciwgZm9udC0+cGxhdGZvcm1EYXRhKCkuc2NhbGVkRm9udCgpKTsKICAgICAg
ICAgY2Fpcm9fc2hvd19nbHlwaHMoc2hhZG93Q3IsIGdseXBocywgbnVtR2x5cGhzKTsKQEAgLTEx
Myw3ICsxMTMsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29ucwogICAgICAgICAgICAgY2Fpcm9f
cmVzdG9yZShzaGFkb3dDcik7CiAgICAgICAgIH0KICAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNy
LCAwLjAsIC1leHRlbnRzLmhlaWdodCk7Ci0gICAgICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3Jt
U2hhZG93KHNoYWRvd0J1ZmZlci5yZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCBr
ZXJuZWxTaXplKTsKKyAgICAgICAgY29udGV4dC0+Y3JlYXRlUGxhdGZvcm1TaGFkb3coc2hhZG93
QnVmZmVyLnJlbGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRvd1JlY3QsIHJhZGl1cyk7CiAjZWxz
ZQogICAgICAgICBjYWlyb190cmFuc2xhdGUoY3IsIHNoYWRvd1NpemUud2lkdGgoKSwgc2hhZG93
U2l6ZS5oZWlnaHQoKSk7CiAgICAgICAgIGNhaXJvX3Nob3dfZ2x5cGhzKGNyLCBnbHlwaHMsIG51
bUdseXBocyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDliMzA5NmUuLjY2OTM1YWYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCkBAIC02MSw2ICs2MSw4IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlQ2Fpcm8uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQcml2YXRlLmgi
CiAKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKICNpZm5kZWYgTV9QSQogI2RlZmluZSBNX1BJIDMu
MTQxNTkyNjUzNTg5NzkzMjM4NDYKICNlbmRpZgpAQCAtMTczLDE4ICsxNzUsMTcgQEAgc3RhdGlj
IHZvaWQgYWRkQ29udmV4UG9seWdvblRvQ29udGV4dChjYWlyb190KiBjb250ZXh0LCBzaXplX3Qg
bnVtUG9pbnRzLCBjb25zdAogICAgIGNhaXJvX2Nsb3NlX3BhdGgoY29udGV4dCk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKEludFNp
emUmIHNoYWRvd0J1ZmZlclNpemUsIEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQmIGtlcm5l
bFNpemUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlUmVjdCwgY29uc3QgRmxvYXRTaXplJiBzaGFk
b3dTaXplLCBmbG9hdCBzaGFkb3dCbHVyKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0
ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoSW50U2l6ZSYgc2hhZG93QnVmZmVyU2l6ZSwgRmxvYXRS
ZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCYgcmFkaXVzLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93U2l6ZSwgZmxvYXQgc2hhZG93Qmx1cikKIHsKICNp
ZiBFTkFCTEUoRklMVEVSUykKLSAgICAvLyBjYWxjdWxhdGUgdGhlIGtlcm5lbCBzaXplIGFjY29y
ZGluZyB0byB0aGUgSFRNTDUgY2FudmFzIHNoYWRvdyBzcGVjaWZpY2F0aW9uCi0gICAga2VybmVs
U2l6ZSA9IChzaGFkb3dCbHVyIDwgOCA/IHNoYWRvd0JsdXIgLyAyLmYgOiBzcXJ0KHNoYWRvd0Js
dXIgKiAyLmYpKTsKLSAgICBpbnQgYmx1clJhZGl1cyA9IGNlaWwoa2VybmVsU2l6ZSk7CisgICAg
Ly8gbGltaXQgcmFkaXVzIHRvIDEyOAorICAgIHJhZGl1cyA9IG1pbigxMjguZiwgbWF4KHNoYWRv
d0JsdXIsIDAuZikpOwogCi0gICAgc2hhZG93QnVmZmVyU2l6ZSA9IEludFNpemUoc291cmNlUmVj
dC53aWR0aCgpICsgYmx1clJhZGl1cyAqIDIsIHNvdXJjZVJlY3QuaGVpZ2h0KCkgKyBibHVyUmFk
aXVzICogMik7CisgICAgc2hhZG93QnVmZmVyU2l6ZSA9IEludFNpemUoc291cmNlUmVjdC53aWR0
aCgpICsgcmFkaXVzICogMiwgc291cmNlUmVjdC5oZWlnaHQoKSArIHJhZGl1cyAqIDIpOwogCiAg
ICAgLy8gZGV0ZXJtaW5lIGRpbWVuc2lvbnMgb2Ygc2hhZG93IHJlY3QKICAgICBzaGFkb3dSZWN0
ID0gRmxvYXRSZWN0KHNvdXJjZVJlY3QubG9jYXRpb24oKSwgc2hhZG93QnVmZmVyU2l6ZSk7Ci0g
ICAgc2hhZG93UmVjdC5tb3ZlKHNoYWRvd1NpemUud2lkdGgoKSAtIGtlcm5lbFNpemUsIHNoYWRv
d1NpemUuaGVpZ2h0KCkgLSBrZXJuZWxTaXplKTsKKyAgICBzaGFkb3dSZWN0Lm1vdmUoc2hhZG93
U2l6ZS53aWR0aCgpIC0gcmFkaXVzLCBzaGFkb3dTaXplLmhlaWdodCgpIC0gcmFkaXVzKTsKICNl
bmRpZgogfQogCkBAIC0yMDksOCArMjEwLDggQEAgc3RhdGljIGlubGluZSB2b2lkIGRyYXdQYXRo
U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgR3JhcGhpY3NDb250ZXh0UHJpdmEKIAog
ICAgIEludFNpemUgc2hhZG93QnVmZmVyU2l6ZTsKICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdDsK
LSAgICBmbG9hdCBrZXJuZWxTaXplID0gMDsKLSAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0
ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwga2Vy
bmVsU2l6ZSwgcmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CisgICAgZmxvYXQgcmFkaXVz
ID0gMDsKKyAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lv
bnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwgcmFkaXVzLCByZWN0LCBzaGFkb3dTaXpl
LCBzaGFkb3dCbHVyKTsKIAogICAgIC8vIENyZWF0ZSBzdWl0YWJseS1zaXplZCBJbWFnZUJ1ZmZl
ciB0byBob2xkIHRoZSBzaGFkb3cuCiAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBzaGFkb3dCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNoYWRvd0J1ZmZlclNpemUpOwpAQCAtMjE4LDcgKzIx
OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFByaXZhCiAgICAgLy8gRHJhdyBzaGFkb3cgaW50byBh
IG5ldyBJbWFnZUJ1ZmZlci4KICAgICBjYWlyb190KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93QnVm
ZmVyLT5jb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGNvcHlDb250ZXh0UHJvcGVy
dGllcyhjciwgc2hhZG93Q29udGV4dCk7Ci0gICAgY2Fpcm9fdHJhbnNsYXRlKHNoYWRvd0NvbnRl
eHQsIC1yZWN0LngoKSArIGtlcm5lbFNpemUsIC1yZWN0LnkoKSArIGtlcm5lbFNpemUpOworICAg
IGNhaXJvX3RyYW5zbGF0ZShzaGFkb3dDb250ZXh0LCAtcmVjdC54KCkgKyByYWRpdXMsIC1yZWN0
LnkoKSArIHJhZGl1cyk7CiAgICAgY2Fpcm9fbmV3X3BhdGgoc2hhZG93Q29udGV4dCk7CiAgICAg
Y2Fpcm9fYXBwZW5kX3BhdGgoc2hhZG93Q29udGV4dCwgcGF0aCk7CiAKQEAgLTIyNyw3ICsyMjgs
NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJhd1BhdGhTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBHcmFwaGljc0NvbnRleHRQcml2YQogICAgIGlmIChzdHJva2VTaGFkb3cpCiAgICAg
ICAgIHNldFBsYXRmb3JtU3Ryb2tlKGNvbnRleHQsIHNoYWRvd0NvbnRleHQsIGdjcCk7CiAKLSAg
ICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhzaGFkb3dCdWZmZXIucmVsZWFzZSgpLCBz
aGFkb3dDb2xvciwgc2hhZG93UmVjdCwga2VybmVsU2l6ZSk7CisgICAgY29udGV4dC0+Y3JlYXRl
UGxhdGZvcm1TaGFkb3coc2hhZG93QnVmZmVyLnJlbGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRv
d1JlY3QsIHJhZGl1cyk7CiAjZW5kaWYKIH0KIApAQCAtNjMxLDE1ICs2MzIsMTUgQEAgc3RhdGlj
IHZvaWQgZHJhd0JvcmRlcmxlc3NSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JgogCiAgICAgSW50U2l6ZSBzaGFkb3dCdWZmZXJTaXplOwogICAgIEZs
b2F0UmVjdCBzaGFkb3dSZWN0OwotICAgIGZsb2F0IGtlcm5lbFNpemUgPSAwOwotICAgIEdyYXBo
aWNzQ29udGV4dDo6Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhzaGFkb3dCdWZmZXJT
aXplLCBzaGFkb3dSZWN0LCBrZXJuZWxTaXplLCByZWN0LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVy
KTsKKyAgICBmbG9hdCByYWRpdXMgPSAwOworICAgIEdyYXBoaWNzQ29udGV4dDo6Y2FsY3VsYXRl
U2hhZG93QnVmZmVyRGltZW5zaW9ucyhzaGFkb3dCdWZmZXJTaXplLCBzaGFkb3dSZWN0LCByYWRp
dXMsIHJlY3QsIHNoYWRvd1NpemUsIHNoYWRvd0JsdXIpOwogCiAgICAgLy8gRHJhdyBzaGFkb3cg
aW50byBhIG5ldyBJbWFnZUJ1ZmZlcgogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc2hhZG93QnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaGFkb3dCdWZmZXJTaXplKTsKICAgICBHcmFwaGlj
c0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3dCdWZmZXItPmNvbnRleHQoKTsKLSAgICBz
aGFkb3dDb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludChrZXJuZWxTaXplLCBr
ZXJuZWxTaXplKSwgcmVjdC5zaXplKCkpLCByZWN0Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwor
ICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KHJhZGl1cywg
cmFkaXVzKSwgcmVjdC5zaXplKCkpLCByZWN0Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogCi0g
ICAgY29udGV4dC0+Y3JlYXRlUGxhdGZvcm1TaGFkb3coc2hhZG93QnVmZmVyLnJlbGVhc2UoKSwg
c2hhZG93Q29sb3IsIHNoYWRvd1JlY3QsIGtlcm5lbFNpemUpOworICAgIGNvbnRleHQtPmNyZWF0
ZVBsYXRmb3JtU2hhZG93KHNoYWRvd0J1ZmZlci5yZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFk
b3dSZWN0LCByYWRpdXMpOwogI2VuZGlmCiB9CiAKQEAgLTkyMCwyOCArOTIxLDI5IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhGbG9hdFNpemUgY29uc3QmIHNpemUs
IGZsb2F0LCBDb2xvciBjb25zCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y3Jl
YXRlUGxhdGZvcm1TaGFkb3coUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyLCBjb25zdCBD
b2xvciYgc2hhZG93Q29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQga2Vy
bmVsU2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVQbGF0Zm9ybVNoYWRvdyhQYXNz
T3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgY29u
c3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCByYWRpdXMpCiB7CiAjaWYgRU5BQkxFKEZJ
TFRFUlMpCiAgICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOwogCi0gICAgLy8gZHJhdyB0aGUg
c2hhZG93IHdpdGhvdXQgYmx1cnJpbmcsIGlmIGtlcm5lbFNpemUgaXMgemVybwotICAgIGlmICgh
a2VybmVsU2l6ZSkgeworICAgIC8vIGNhbGN1bGF0ZSB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uCisg
ICAgZmxvYXQgc2Q7CisgICAgRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZVN0ZERldmlhdGlvbihy
YWRpdXMsIHNkKTsKKworICAgIC8vIGRyYXcgdGhlIHNoYWRvdyB3aXRob3V0IGJsdXJyaW5nLCBp
ZiByYWRpdXMgaXMgemVybworICAgIGlmICghcmFkaXVzIHx8ICghc2QpKSB7CiAgICAgICAgIHNl
dENvbG9yKGNyLCBzaGFkb3dDb2xvcik7CiAgICAgICAgIGNhaXJvX21hc2tfc3VyZmFjZShjciwg
YnVmZmVyLT5tX2RhdGEubV9zdXJmYWNlLCBzaGFkb3dSZWN0LngoKSwgc2hhZG93UmVjdC55KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gbGltaXQga2VybmVsIHNpemUgdG8g
MTAwMCwgdGhpcyBpcyB3aGF0IENHIGlzIGRvaW5nLgotICAgIGtlcm5lbFNpemUgPSBzdGQ6Om1p
bigxMDAwLmYsIGtlcm5lbFNpemUpOwotCiAgICAgLy8gY3JlYXRlIGZpbHRlcgogICAgIFJlZlB0
cjxGaWx0ZXI+IGZpbHRlciA9IEltYWdlQnVmZmVyRmlsdGVyOjpjcmVhdGUoKTsKICAgICBmaWx0
ZXItPnNldFNvdXJjZUltYWdlKGJ1ZmZlcik7CiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gc291
cmNlID0gU291cmNlR3JhcGhpYzo6Y3JlYXRlKCk7CiAgICAgc291cmNlLT5zZXRTY2FsZWRTdWJS
ZWdpb24oRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2hhZG93UmVjdC5zaXplKCkpKTsKICAgICBz
b3VyY2UtPnNldElzQWxwaGFJbWFnZSh0cnVlKTsKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBi
bHVyID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShzb3VyY2UuZ2V0KCksIGtlcm5lbFNpemUsIGtl
cm5lbFNpemUpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJsdXIgPSBGRUdhdXNzaWFuQmx1
cjo6Y3JlYXRlKHNvdXJjZS5nZXQoKSwgc2QsIHNkKTsKICAgICBibHVyLT5zZXRTY2FsZWRTdWJS
ZWdpb24oRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2hhZG93UmVjdC5zaXplKCkpKTsKICAgICBi
bHVyLT5hcHBseShmaWx0ZXIuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUNhaXJvLmNwcAppbmRleCAxNTgyNjcxLi5kNWViMGU3IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKQEAgLTE0MSw4ICsx
NDEsOCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogICAgIGlmIChjb250ZXh0LT5nZXRTaGFk
b3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7CiAgICAgICAgIEludFNp
emUgc2hhZG93QnVmZmVyU2l6ZTsKICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3Q7Ci0gICAg
ICAgIGZsb2F0IGtlcm5lbFNpemUgKDAuMCk7Ci0gICAgICAgIEdyYXBoaWNzQ29udGV4dDo6Y2Fs
Y3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhzaGFkb3dCdWZmZXJTaXplLCBzaGFkb3dSZWN0
LCBrZXJuZWxTaXplLCBkc3RSZWN0LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVyKTsKKyAgICAgICAg
ZmxvYXQgcmFkaXVzID0gMDsKKyAgICAgICAgY29udGV4dC0+Y2FsY3VsYXRlU2hhZG93QnVmZmVy
RGltZW5zaW9ucyhzaGFkb3dCdWZmZXJTaXplLCBzaGFkb3dSZWN0LCByYWRpdXMsIGRzdFJlY3Qs
IHNoYWRvd1NpemUsIHNoYWRvd0JsdXIpOwogICAgICAgICBzaGFkb3dDb2xvciA9IGNvbG9yV2l0
aE92ZXJyaWRlQWxwaGEoc2hhZG93Q29sb3IucmdiKCksIChzaGFkb3dDb2xvci5hbHBoYSgpICog
IGNvbnRleHQtPmdldEFscGhhKCkpIC8gMjU1LmYpOwogCiAgICAgICAgIC8vZHJhdyBzaGFkb3cg
aW50byBhIG5ldyBJbWFnZUJ1ZmZlcgpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgQml0bWFwSW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwg
Y29uc3QgRmxvCiAgICAgICAgIGNhaXJvX3JlY3RhbmdsZShzaGFkb3dDb250ZXh0LCAwLCAwLCBk
c3RSZWN0LndpZHRoKCksIGRzdFJlY3QuaGVpZ2h0KCkpOwogICAgICAgICBjYWlyb19maWxsKHNo
YWRvd0NvbnRleHQpOwogCi0gICAgICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3JtU2hhZG93KHNo
YWRvd0J1ZmZlci5yZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCBrZXJuZWxTaXpl
KTsKKyAgICAgICAgY29udGV4dC0+Y3JlYXRlUGxhdGZvcm1TaGFkb3coc2hhZG93QnVmZmVyLnJl
bGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRvd1JlY3QsIHJhZGl1cyk7CiAgICAgfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNz
aWFuQmx1ci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lh
bkJsdXIuY3BwCmluZGV4IDcwNDY1YTAuLjNmNTYyNzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcApAQCAtMjAwLDYgKzIw
MCwxMiBAQCBUZXh0U3RyZWFtJiBGRUdhdXNzaWFuQmx1cjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgYwogICAgIHJldHVybiB0czsKIH0KIAordm9p
ZCBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlU3RkRGV2aWF0aW9uKGNvbnN0IGZsb2F0JiByYWRp
dXMsIGZsb2F0JiBzZCkKK3sKKyAgICAvLyBCbHVyIHJhZGl1cyByZXByZXNlbnRzIDIvMyB0aW1l
cyB0aGUga2VybmVsIHNpemUsIHRoZSBkZXN0IHBpeGVsIGlzIGhhbGYgb2YgdGhlIHJhZGl1cyBh
cHBsaWVkIDMgdGltZXMKKyAgICBzZCA9IG1heCgocmFkaXVzICogMiAvIDMuZiAtIDAuNWYpIC8g
Z0dhdXNzaWFuS2VybmVsRmFjdG9yLCAwLmYpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFTkFCTEUoRklMVEVSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKaW5kZXggNGM3YzQzYy4uM2M0ZTFjOSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5C
bHVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5C
bHVyLmgKQEAgLTQzLDYgKzQzLDggQEAgcHVibGljOgogICAgIHZvaWQgZHVtcCgpOwogICAgIFRl
eHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYsIGludCBpbmRlbnQp
IGNvbnN0OwogCisgICAgc3RhdGljIHZvaWQgY2FsY3VsYXRlU3RkRGV2aWF0aW9uKGNvbnN0IGZs
b2F0JiByYWRpdXMsIGZsb2F0JiBzZCk7CisKIHByaXZhdGU6CiAgICAgRkVHYXVzc2lhbkJsdXIo
RmlsdGVyRWZmZWN0KiwgY29uc3QgZmxvYXQmLCBjb25zdCBmbG9hdCYpOwogICAgIHN0YXRpYyB2
b2lkIGtlcm5lbFBvc2l0aW9uKGludCBib3hCbHVyLCB1bnNpZ25lZCYgc3RkLCBpbnQmIGRMZWZ0
LCBpbnQmIGRSaWdodCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64823</attachid>
            <date>2010-08-19 02:35:27 -0700</date>
            <delta_ts>2010-08-19 03:15:16 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>blur_radius.patch</filename>
            <type>text/plain</type>
            <size>15788</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IDU0ZmY2NWQ4OWFjYTEwYTE4YTk3YTBjYzA5YTkwZTI1ZDNjNmY5NDQKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgV2VkIEp1bCAxNCAx
OTo0Mjo0OSAyMDEwICswMjAwCgogICAgMjAxMC0wNy0xNSAgQWxlamFuZHJvIEcuIENhc3RybyAg
PGFsZXhAaWdhbGlhLmNvbT4KICAgIAogICAgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KICAgIAogICAgICAgICAgICBbR1RLXSBUaGUgc2l6ZSBvZiB0aGUgc2hhZG93IGltYWdl
IHVzZXMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbgogICAgICAgICAgICBzaXplIGluc3RlYWQgb2Yg
dGhlIGJsdXIgcmFkaXVzCiAgICAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDc5MwogICAgCiAgICAgICAgICAgIFRoZSBrZXJuZWxTaXplIHZhcmlhYmxl
IHdhcyByZW5hbWVkIHRvIHJhZGl1cyBhbmQgcmVjYWxjdWxhdGVkCiAgICAgICAgICAgIGNvbnNp
ZGVyaW5nIHRoZSBDU1MzIHNwZWNpZmljYXRpb24KICAgICAgICAgICAgaHR0cDovL3d3dy53My5v
cmcvVFIvY3NzMy1iYWNrZ3JvdW5kLyN0aGUtYm94LXNoYWRvdywgYW5kIHRoZQogICAgICAgICAg
ICB2aXN1YWwgcmVzdWx0IG9mIG90aGVyIGJyb3dzZXJzLiBUaGUgSFRNTDUgY2FudmFzIHNoYWRv
dyBzdGFuZGFyZAogICAgICAgICAgICBkZXZpYXRpb24gY2FsY3VsYXRpb24gdGhhdCB3YXMgdXNl
ZCwgd2FzIG5vdCBhcHByb3BpYXRlIGZvciB0aGUKICAgICAgICAgICAgYmx1ciBkaXN0YW5jZSBz
cGVjaWZpZWQgaW4gdGhlIENTUzMuCiAgICAKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaDoKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6
CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fp
cm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVT
aGFkb3dCdWZmZXJEaW1lbnNpb25zKToKICAgICAgICAgICAgQ2hhbmdlZCB0aGUgY2FsY3VsYXRp
b24sIG5vdyB3ZSB1c2UgdGhlIHBhcmFtZXRlciBpbiB0aGUgc3R5bGUKICAgICAgICAgICAgZGly
ZWN0bHkgYXMgcmVjb21lbmRlZCBpbiB0aGUgQ1NTMyBzdGFuZGFyZC4KICAgICAgICAgICAgKFdl
YkNvcmU6OmRyYXdQYXRoU2hhZG93KToKICAgICAgICAgICAgKFdlYkNvcmU6OmRyYXdCb3JkZXJs
ZXNzUmVjdFNoYWRvdyk6CiAgICAgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNy
ZWF0ZVBsYXRmb3JtU2hhZG93KTogV2UgZ2V0IHRoZQogICAgICAgICAgICBzdGFuZGFyZCBkZXZp
YXRpb24gZnJvbSB0aGUgcmFkaXVzIHVzaW5nIHRoZSBuZXcgZnVuY3Rpb24gYW5kIHdlCiAgICAg
ICAgICAgIGNyZWF0ZSB0aGUgZmlsdGVyIHdpdGggdGhhdCBkZXZpYXRpb24uCiAgICAgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHA6CiAgICAgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpGRUdh
dXNzaWFuQmx1cjo6Y2FsY3VsYXRlU3RkRGV2aWF0aW9uKTogIEFkZGVkIHRoaXMKICAgICAgICAg
ICAgZnVuY3Rpb24gdGhhdCBnZXRzIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24gZnJvbSB0aGUgYmx1
cgogICAgICAgICAgICByYWRpdXMuIFJlcXVpcmVkIGluIHRoZSBDU1MzIGNhc2Ugd2hlcmUgd2Ug
aGF2ZSB0aGlzIHJhZGlvIGFuZCB3ZQogICAgICAgICAgICBuZWVkIHRoZSBkZXZpYXRpb24gdG8g
aW5pdGlhbGl6ZSB0aGUgYWxnb3JpdGhtLgogICAgICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaDoKICAgIAogICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmg6CgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5OTM0ZmJmLi5iYTMyNmEwIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBA
CisyMDEwLTA3LTE1ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFRoZSBz
aXplIG9mIHRoZSBzaGFkb3cgaW1hZ2UgdXNlcyB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uCisgICAg
ICAgIHNpemUgaW5zdGVhZCBvZiB0aGUgYmx1ciByYWRpdXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwNzkzCisKKyAgICAgICAgVGhlIGtlcm5lbFNp
emUgdmFyaWFibGUgd2FzIHJlbmFtZWQgdG8gcmFkaXVzIGFuZCByZWNhbGN1bGF0ZWQKKyAgICAg
ICAgY29uc2lkZXJpbmcgdGhlIENTUzMgc3BlY2lmaWNhdGlvbgorICAgICAgICBodHRwOi8vd3d3
LnczLm9yZy9UUi9jc3MzLWJhY2tncm91bmQvI3RoZS1ib3gtc2hhZG93LCBhbmQgdGhlCisgICAg
ICAgIHZpc3VhbCByZXN1bHQgb2Ygb3RoZXIgYnJvd3NlcnMuIFRoZSBIVE1MNSBjYW52YXMgc2hh
ZG93IHN0YW5kYXJkCisgICAgICAgIGRldmlhdGlvbiBjYWxjdWxhdGlvbiB0aGF0IHdhcyB1c2Vk
LCB3YXMgbm90IGFwcHJvcGlhdGUgZm9yIHRoZQorICAgICAgICBibHVyIGRpc3RhbmNlIHNwZWNp
ZmllZCBpbiB0aGUgQ1NTMy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMp
OgorICAgICAgICBDaGFuZ2VkIHRoZSBjYWxjdWxhdGlvbiwgbm93IHdlIHVzZSB0aGUgcGFyYW1l
dGVyIGluIHRoZSBzdHlsZQorICAgICAgICBkaXJlY3RseSBhcyByZWNvbWVuZGVkIGluIHRoZSBD
U1MzIHN0YW5kYXJkLgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6ZHJhd0JvcmRlcmxlc3NSZWN0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlUGxhdGZvcm1TaGFkb3cpOiBXZSBnZXQgdGhlCisgICAg
ICAgIHN0YW5kYXJkIGRldmlhdGlvbiBmcm9tIHRoZSByYWRpdXMgdXNpbmcgdGhlIG5ldyBmdW5j
dGlvbiBhbmQgd2UKKyAgICAgICAgY3JlYXRlIHRoZSBmaWx0ZXIgd2l0aCB0aGF0IGRldmlhdGlv
bi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
R2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVTdGREZXZpYXRpb24pOiAgQWRkZWQgdGhpcworICAgICAg
ICBmdW5jdGlvbiB0aGF0IGdldHMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbiBmcm9tIHRoZSBibHVy
CisgICAgICAgIHJhZGl1cy4gUmVxdWlyZWQgaW4gdGhlIENTUzMgY2FzZSB3aGVyZSB3ZSBoYXZl
IHRoaXMgcmFkaW8gYW5kIHdlCisgICAgICAgIG5lZWQgdGhlIGRldmlhdGlvbiB0byBpbml0aWFs
aXplIHRoZSBhbGdvcml0aG0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5oOgorCiAyMDEwLTA4LTE5ICBBbmRyZWFzIEtsaW5nICA8YW5kcmVhcy5r
bGluZ0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJp
c3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApp
bmRleCBkNTE0YjExLi5iMDA3OWU4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKQEAgLTI5NCw4ICsyOTQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQpOwogI2lmIFBMQVRGT1JNKENBSVJPKQogICAgICAg
ICBmbG9hdCBnZXRBbHBoYSgpOwotICAgICAgICB2b2lkIGNyZWF0ZVBsYXRmb3JtU2hhZG93KFBh
c3NPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBj
b25zdCBGbG9hdFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0IGtlcm5lbFNpemUpOwotICAgICAgICBz
dGF0aWMgdm9pZCBjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKEludFNpemUmIHNoYWRv
d0J1ZmZlclNpemUsIEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQmIGtlcm5lbFNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgc291cmNlUmVjdCwgY29uc3QgRmxvYXRTaXplJiBzaGFkb3dTaXplLCBm
bG9hdCBzaGFkb3dCbHVyKTsKKyAgICAgICAgdm9pZCBjcmVhdGVQbGF0Zm9ybVNoYWRvdyhQYXNz
T3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgY29u
c3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCByYWRpdXMpOworICAgICAgICBzdGF0aWMg
dm9pZCBjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKEludFNpemUmIHNoYWRvd0J1ZmZl
clNpemUsIEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQmIHJhZGl1cywgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBGbG9hdFNpemUmIHNoYWRvd1NpemUsIGZsb2F0IHNoYWRv
d0JsdXIpOwogI2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXRDb21wb3NpdGVPcGVyYXRpb24oQ29t
cG9zaXRlT3BlcmF0b3IpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9Gb250Q2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250
Q2Fpcm8uY3BwCmluZGV4IDkyMTdhODEuLmY2ZDhmM2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAgLTk0LDE1ICs5NCwxNSBAQCB2b2lkIEZv
bnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTaW1wbGVGb250
RGF0YSogZm9udCwgY29ucwogICAgICAgICBGbG9hdFJlY3QgcmVjdChGbG9hdFBvaW50KCksIEZs
b2F0U2l6ZShleHRlbnRzLndpZHRoLCBleHRlbnRzLmhlaWdodCkpOwogICAgICAgICBJbnRTaXpl
IHNoYWRvd0J1ZmZlclNpemU7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0OwotICAgICAg
ICBmbG9hdCBrZXJuZWxTaXplID0gMC5mOwotICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1
bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwg
a2VybmVsU2l6ZSwgcmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CisgICAgICAgIGZsb2F0
IHJhZGl1cyA9IDA7CisgICAgICAgIGNvbnRleHQtPmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVu
c2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwgcmFkaXVzLCByZWN0LCBzaGFkb3dT
aXplLCBzaGFkb3dCbHVyKTsKIAogICAgICAgICAvLyBEcmF3IHNoYWRvdyBpbnRvIGEgbmV3IElt
YWdlQnVmZmVyCiAgICAgICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc2hhZG93QnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaGFkb3dCdWZmZXJTaXplKTsKICAgICAgICAgR3JhcGhpY3NDb250
ZXh0KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93QnVmZmVyLT5jb250ZXh0KCk7CiAgICAgICAgIGNh
aXJvX3QqIHNoYWRvd0NyID0gc2hhZG93Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAKLSAg
ICAgICAgY2Fpcm9fdHJhbnNsYXRlKHNoYWRvd0NyLCBrZXJuZWxTaXplLCBleHRlbnRzLmhlaWdo
dCArIGtlcm5lbFNpemUpOworICAgICAgICBjYWlyb190cmFuc2xhdGUoc2hhZG93Q3IsIHJhZGl1
cywgZXh0ZW50cy5oZWlnaHQgKyByYWRpdXMpOwogCiAgICAgICAgIGNhaXJvX3NldF9zY2FsZWRf
Zm9udChzaGFkb3dDciwgZm9udC0+cGxhdGZvcm1EYXRhKCkuc2NhbGVkRm9udCgpKTsKICAgICAg
ICAgY2Fpcm9fc2hvd19nbHlwaHMoc2hhZG93Q3IsIGdseXBocywgbnVtR2x5cGhzKTsKQEAgLTEx
Myw3ICsxMTMsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29ucwogICAgICAgICAgICAgY2Fpcm9f
cmVzdG9yZShzaGFkb3dDcik7CiAgICAgICAgIH0KICAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNy
LCAwLjAsIC1leHRlbnRzLmhlaWdodCk7Ci0gICAgICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3Jt
U2hhZG93KHNoYWRvd0J1ZmZlci5yZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCBr
ZXJuZWxTaXplKTsKKyAgICAgICAgY29udGV4dC0+Y3JlYXRlUGxhdGZvcm1TaGFkb3coc2hhZG93
QnVmZmVyLnJlbGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRvd1JlY3QsIHJhZGl1cyk7CiAjZWxz
ZQogICAgICAgICBjYWlyb190cmFuc2xhdGUoY3IsIHNoYWRvd1NpemUud2lkdGgoKSwgc2hhZG93
U2l6ZS5oZWlnaHQoKSk7CiAgICAgICAgIGNhaXJvX3Nob3dfZ2x5cGhzKGNyLCBnbHlwaHMsIG51
bUdseXBocyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dy
YXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4IDliMzA5NmUuLjRjZWIxNDggMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8u
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
Q2Fpcm8uY3BwCkBAIC02MSw2ICs2MSw4IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlQ2Fpcm8uaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRQcml2YXRlLmgi
CiAKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKICNpZm5kZWYgTV9QSQogI2RlZmluZSBNX1BJIDMu
MTQxNTkyNjUzNTg5NzkzMjM4NDYKICNlbmRpZgpAQCAtMTczLDE4ICsxNzUsMTcgQEAgc3RhdGlj
IHZvaWQgYWRkQ29udmV4UG9seWdvblRvQ29udGV4dChjYWlyb190KiBjb250ZXh0LCBzaXplX3Qg
bnVtUG9pbnRzLCBjb25zdAogICAgIGNhaXJvX2Nsb3NlX3BhdGgoY29udGV4dCk7CiB9CiAKLXZv
aWQgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKEludFNp
emUmIHNoYWRvd0J1ZmZlclNpemUsIEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQmIGtlcm5l
bFNpemUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlUmVjdCwgY29uc3QgRmxvYXRTaXplJiBzaGFk
b3dTaXplLCBmbG9hdCBzaGFkb3dCbHVyKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0
ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoSW50U2l6ZSYgc2hhZG93QnVmZmVyU2l6ZSwgRmxvYXRS
ZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCYgcmFkaXVzLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93U2l6ZSwgZmxvYXQgc2hhZG93Qmx1cikKIHsKICNp
ZiBFTkFCTEUoRklMVEVSUykKLSAgICAvLyBjYWxjdWxhdGUgdGhlIGtlcm5lbCBzaXplIGFjY29y
ZGluZyB0byB0aGUgSFRNTDUgY2FudmFzIHNoYWRvdyBzcGVjaWZpY2F0aW9uCi0gICAga2VybmVs
U2l6ZSA9IChzaGFkb3dCbHVyIDwgOCA/IHNoYWRvd0JsdXIgLyAyLmYgOiBzcXJ0KHNoYWRvd0Js
dXIgKiAyLmYpKTsKLSAgICBpbnQgYmx1clJhZGl1cyA9IGNlaWwoa2VybmVsU2l6ZSk7CisgICAg
Ly8gbGltaXQgcmFkaXVzIHRvIDEyOAorICAgIHJhZGl1cyA9IG1pbigxMjguZiwgbWF4KHNoYWRv
d0JsdXIsIDAuZikpOwogCi0gICAgc2hhZG93QnVmZmVyU2l6ZSA9IEludFNpemUoc291cmNlUmVj
dC53aWR0aCgpICsgYmx1clJhZGl1cyAqIDIsIHNvdXJjZVJlY3QuaGVpZ2h0KCkgKyBibHVyUmFk
aXVzICogMik7CisgICAgc2hhZG93QnVmZmVyU2l6ZSA9IEludFNpemUoc291cmNlUmVjdC53aWR0
aCgpICsgcmFkaXVzICogMiwgc291cmNlUmVjdC5oZWlnaHQoKSArIHJhZGl1cyAqIDIpOwogCiAg
ICAgLy8gZGV0ZXJtaW5lIGRpbWVuc2lvbnMgb2Ygc2hhZG93IHJlY3QKICAgICBzaGFkb3dSZWN0
ID0gRmxvYXRSZWN0KHNvdXJjZVJlY3QubG9jYXRpb24oKSwgc2hhZG93QnVmZmVyU2l6ZSk7Ci0g
ICAgc2hhZG93UmVjdC5tb3ZlKHNoYWRvd1NpemUud2lkdGgoKSAtIGtlcm5lbFNpemUsIHNoYWRv
d1NpemUuaGVpZ2h0KCkgLSBrZXJuZWxTaXplKTsKKyAgICBzaGFkb3dSZWN0Lm1vdmUoc2hhZG93
U2l6ZS53aWR0aCgpIC0gcmFkaXVzLCBzaGFkb3dTaXplLmhlaWdodCgpIC0gcmFkaXVzKTsKICNl
bmRpZgogfQogCkBAIC0yMDksOCArMjEwLDggQEAgc3RhdGljIGlubGluZSB2b2lkIGRyYXdQYXRo
U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgR3JhcGhpY3NDb250ZXh0UHJpdmEKIAog
ICAgIEludFNpemUgc2hhZG93QnVmZmVyU2l6ZTsKICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdDsK
LSAgICBmbG9hdCBrZXJuZWxTaXplID0gMDsKLSAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0
ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwga2Vy
bmVsU2l6ZSwgcmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CisgICAgZmxvYXQgcmFkaXVz
ID0gMDsKKyAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lv
bnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwgcmFkaXVzLCByZWN0LCBzaGFkb3dTaXpl
LCBzaGFkb3dCbHVyKTsKIAogICAgIC8vIENyZWF0ZSBzdWl0YWJseS1zaXplZCBJbWFnZUJ1ZmZl
ciB0byBob2xkIHRoZSBzaGFkb3cuCiAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBzaGFkb3dCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNoYWRvd0J1ZmZlclNpemUpOwpAQCAtMjE4LDcgKzIx
OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFByaXZhCiAgICAgLy8gRHJhdyBzaGFkb3cgaW50byBh
IG5ldyBJbWFnZUJ1ZmZlci4KICAgICBjYWlyb190KiBzaGFkb3dDb250ZXh0ID0gc2hhZG93QnVm
ZmVyLT5jb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGNvcHlDb250ZXh0UHJvcGVy
dGllcyhjciwgc2hhZG93Q29udGV4dCk7Ci0gICAgY2Fpcm9fdHJhbnNsYXRlKHNoYWRvd0NvbnRl
eHQsIC1yZWN0LngoKSArIGtlcm5lbFNpemUsIC1yZWN0LnkoKSArIGtlcm5lbFNpemUpOworICAg
IGNhaXJvX3RyYW5zbGF0ZShzaGFkb3dDb250ZXh0LCAtcmVjdC54KCkgKyByYWRpdXMsIC1yZWN0
LnkoKSArIHJhZGl1cyk7CiAgICAgY2Fpcm9fbmV3X3BhdGgoc2hhZG93Q29udGV4dCk7CiAgICAg
Y2Fpcm9fYXBwZW5kX3BhdGgoc2hhZG93Q29udGV4dCwgcGF0aCk7CiAKQEAgLTIyNyw3ICsyMjgs
NyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJhd1BhdGhTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBHcmFwaGljc0NvbnRleHRQcml2YQogICAgIGlmIChzdHJva2VTaGFkb3cpCiAgICAg
ICAgIHNldFBsYXRmb3JtU3Ryb2tlKGNvbnRleHQsIHNoYWRvd0NvbnRleHQsIGdjcCk7CiAKLSAg
ICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhzaGFkb3dCdWZmZXIucmVsZWFzZSgpLCBz
aGFkb3dDb2xvciwgc2hhZG93UmVjdCwga2VybmVsU2l6ZSk7CisgICAgY29udGV4dC0+Y3JlYXRl
UGxhdGZvcm1TaGFkb3coc2hhZG93QnVmZmVyLnJlbGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRv
d1JlY3QsIHJhZGl1cyk7CiAjZW5kaWYKIH0KIApAQCAtNjMxLDE1ICs2MzIsMTUgQEAgc3RhdGlj
IHZvaWQgZHJhd0JvcmRlcmxlc3NSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JgogCiAgICAgSW50U2l6ZSBzaGFkb3dCdWZmZXJTaXplOwogICAgIEZs
b2F0UmVjdCBzaGFkb3dSZWN0OwotICAgIGZsb2F0IGtlcm5lbFNpemUgPSAwOwotICAgIEdyYXBo
aWNzQ29udGV4dDo6Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhzaGFkb3dCdWZmZXJT
aXplLCBzaGFkb3dSZWN0LCBrZXJuZWxTaXplLCByZWN0LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVy
KTsKKyAgICBmbG9hdCByYWRpdXMgPSAwOworICAgIEdyYXBoaWNzQ29udGV4dDo6Y2FsY3VsYXRl
U2hhZG93QnVmZmVyRGltZW5zaW9ucyhzaGFkb3dCdWZmZXJTaXplLCBzaGFkb3dSZWN0LCByYWRp
dXMsIHJlY3QsIHNoYWRvd1NpemUsIHNoYWRvd0JsdXIpOwogCiAgICAgLy8gRHJhdyBzaGFkb3cg
aW50byBhIG5ldyBJbWFnZUJ1ZmZlcgogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc2hhZG93QnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaGFkb3dCdWZmZXJTaXplKTsKICAgICBHcmFwaGlj
c0NvbnRleHQqIHNoYWRvd0NvbnRleHQgPSBzaGFkb3dCdWZmZXItPmNvbnRleHQoKTsKLSAgICBz
aGFkb3dDb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludChrZXJuZWxTaXplLCBr
ZXJuZWxTaXplKSwgcmVjdC5zaXplKCkpLCByZWN0Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwor
ICAgIHNoYWRvd0NvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KHJhZGl1cywg
cmFkaXVzKSwgcmVjdC5zaXplKCkpLCByZWN0Q29sb3IsIERldmljZUNvbG9yU3BhY2UpOwogCi0g
ICAgY29udGV4dC0+Y3JlYXRlUGxhdGZvcm1TaGFkb3coc2hhZG93QnVmZmVyLnJlbGVhc2UoKSwg
c2hhZG93Q29sb3IsIHNoYWRvd1JlY3QsIGtlcm5lbFNpemUpOworICAgIGNvbnRleHQtPmNyZWF0
ZVBsYXRmb3JtU2hhZG93KHNoYWRvd0J1ZmZlci5yZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFk
b3dSZWN0LCByYWRpdXMpOwogI2VuZGlmCiB9CiAKQEAgLTkyMCwyOCArOTIxLDI5IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhGbG9hdFNpemUgY29uc3QmIHNpemUs
IGZsb2F0LCBDb2xvciBjb25zCiAgICAgfQogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6Y3Jl
YXRlUGxhdGZvcm1TaGFkb3coUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gYnVmZmVyLCBjb25zdCBD
b2xvciYgc2hhZG93Q29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQga2Vy
bmVsU2l6ZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVQbGF0Zm9ybVNoYWRvdyhQYXNz
T3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgY29u
c3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCByYWRpdXMpCiB7CiAjaWYgRU5BQkxFKEZJ
TFRFUlMpCiAgICAgY2Fpcm9fdCogY3IgPSBtX2RhdGEtPmNyOwogCi0gICAgLy8gZHJhdyB0aGUg
c2hhZG93IHdpdGhvdXQgYmx1cnJpbmcsIGlmIGtlcm5lbFNpemUgaXMgemVybwotICAgIGlmICgh
a2VybmVsU2l6ZSkgeworICAgIC8vIGNhbGN1bGF0ZSB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uCisg
ICAgZmxvYXQgc2Q7CisgICAgc2QgPSBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlU3RkRGV2aWF0
aW9uKHJhZGl1cyk7CisKKyAgICAvLyBkcmF3IHRoZSBzaGFkb3cgd2l0aG91dCBibHVycmluZywg
aWYgcmFkaXVzIGlzIHplcm8KKyAgICBpZiAoIXJhZGl1cyB8fCAoIXNkKSkgewogICAgICAgICBz
ZXRDb2xvcihjciwgc2hhZG93Q29sb3IpOwogICAgICAgICBjYWlyb19tYXNrX3N1cmZhY2UoY3Is
IGJ1ZmZlci0+bV9kYXRhLm1fc3VyZmFjZSwgc2hhZG93UmVjdC54KCksIHNoYWRvd1JlY3QueSgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIGxpbWl0IGtlcm5lbCBzaXplIHRv
IDEwMDAsIHRoaXMgaXMgd2hhdCBDRyBpcyBkb2luZy4KLSAgICBrZXJuZWxTaXplID0gc3RkOjpt
aW4oMTAwMC5mLCBrZXJuZWxTaXplKTsKLQogICAgIC8vIGNyZWF0ZSBmaWx0ZXIKICAgICBSZWZQ
dHI8RmlsdGVyPiBmaWx0ZXIgPSBJbWFnZUJ1ZmZlckZpbHRlcjo6Y3JlYXRlKCk7CiAgICAgZmls
dGVyLT5zZXRTb3VyY2VJbWFnZShidWZmZXIpOwogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IHNv
dXJjZSA9IFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSgpOwogICAgIHNvdXJjZS0+c2V0U2NhbGVkU3Vi
UmVnaW9uKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNoYWRvd1JlY3Quc2l6ZSgpKSk7CiAgICAg
c291cmNlLT5zZXRJc0FscGhhSW1hZ2UodHJ1ZSk7Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
Ymx1ciA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoc291cmNlLmdldCgpLCBrZXJuZWxTaXplLCBr
ZXJuZWxTaXplKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBibHVyID0gRkVHYXVzc2lhbkJs
dXI6OmNyZWF0ZShzb3VyY2UuZ2V0KCksIHNkLCBzZCk7CiAgICAgYmx1ci0+c2V0U2NhbGVkU3Vi
UmVnaW9uKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHNoYWRvd1JlY3Quc2l6ZSgpKSk7CiAgICAg
Ymx1ci0+YXBwbHkoZmlsdGVyLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKaW5kZXggMTU4MjY3MS4uZDVlYjBlNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCkBAIC0xNDEsOCAr
MTQxLDggQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdCYgZHN0LCBjb25zdCBGbG8KICAgICBpZiAoY29udGV4dC0+Z2V0U2hh
ZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkgewogICAgICAgICBJbnRT
aXplIHNoYWRvd0J1ZmZlclNpemU7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0OwotICAg
ICAgICBmbG9hdCBrZXJuZWxTaXplICgwLjApOwotICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmNh
bGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVj
dCwga2VybmVsU2l6ZSwgZHN0UmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CisgICAgICAg
IGZsb2F0IHJhZGl1cyA9IDA7CisgICAgICAgIGNvbnRleHQtPmNhbGN1bGF0ZVNoYWRvd0J1ZmZl
ckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwgcmFkaXVzLCBkc3RSZWN0
LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVyKTsKICAgICAgICAgc2hhZG93Q29sb3IgPSBjb2xvcldp
dGhPdmVycmlkZUFscGhhKHNoYWRvd0NvbG9yLnJnYigpLCAoc2hhZG93Q29sb3IuYWxwaGEoKSAq
ICBjb250ZXh0LT5nZXRBbHBoYSgpKSAvIDI1NS5mKTsKIAogICAgICAgICAvL2RyYXcgc2hhZG93
IGludG8gYSBuZXcgSW1hZ2VCdWZmZXIKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIEJpdG1hcElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3Qs
IGNvbnN0IEZsbwogICAgICAgICBjYWlyb19yZWN0YW5nbGUoc2hhZG93Q29udGV4dCwgMCwgMCwg
ZHN0UmVjdC53aWR0aCgpLCBkc3RSZWN0LmhlaWdodCgpKTsKICAgICAgICAgY2Fpcm9fZmlsbChz
aGFkb3dDb250ZXh0KTsKIAotICAgICAgICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhz
aGFkb3dCdWZmZXIucmVsZWFzZSgpLCBzaGFkb3dDb2xvciwgc2hhZG93UmVjdCwga2VybmVsU2l6
ZSk7CisgICAgICAgIGNvbnRleHQtPmNyZWF0ZVBsYXRmb3JtU2hhZG93KHNoYWRvd0J1ZmZlci5y
ZWxlYXNlKCksIHNoYWRvd0NvbG9yLCBzaGFkb3dSZWN0LCByYWRpdXMpOwogICAgIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3Np
YW5CbHVyLmNwcAppbmRleCA3MDQ2NWEwLi5kOTIwOGE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHAKQEAgLTIwMCw2ICsy
MDAsMTIgQEAgVGV4dFN0cmVhbSYgRkVHYXVzc2lhbkJsdXI6OmV4dGVybmFsUmVwcmVzZW50YXRp
b24oVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGMKICAgICByZXR1cm4gdHM7CiB9CiAKK2Zs
b2F0IEZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVTdGREZXZpYXRpb24oY29uc3QgZmxvYXQmIHJh
ZGl1cykKK3sKKyAgICAvLyBCbHVyIHJhZGl1cyByZXByZXNlbnRzIDIvMyB0aW1lcyB0aGUga2Vy
bmVsIHNpemUsIHRoZSBkZXN0IHBpeGVsIGlzIGhhbGYgb2YgdGhlIHJhZGl1cyBhcHBsaWVkIDMg
dGltZXMKKyAgICByZXR1cm4gbWF4KChyYWRpdXMgKiAyIC8gMy5mIC0gMC41ZikgLyBnR2F1c3Np
YW5LZXJuZWxGYWN0b3IsIDAuZik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShGSUxURVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAppbmRleCA0YzdjNDNjLi5mOTRhNWVjIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaApA
QCAtNDMsNiArNDMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wKCk7CiAgICAgVGV4dFN0cmVh
bSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Q7
CiAKKyAgICBzdGF0aWMgZmxvYXQgY2FsY3VsYXRlU3RkRGV2aWF0aW9uKGNvbnN0IGZsb2F0JiBy
YWRpdXMpOworCiBwcml2YXRlOgogICAgIEZFR2F1c3NpYW5CbHVyKEZpbHRlckVmZmVjdCosIGNv
bnN0IGZsb2F0JiwgY29uc3QgZmxvYXQmKTsKICAgICBzdGF0aWMgdm9pZCBrZXJuZWxQb3NpdGlv
bihpbnQgYm94Qmx1ciwgdW5zaWduZWQmIHN0ZCwgaW50JiBkTGVmdCwgaW50JiBkUmlnaHQpOwo=
</data>
<flag name="review"
          id="53464"
          type_id="1"
          status="+"
          setter="krit"
    />
    <flag name="commit-queue"
          id="53466"
          type_id="3"
          status="-"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>