<?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>43362</bug_id>
          
          <creation_ts>2010-08-02 10:06:33 -0700</creation_ts>
          <short_desc>Accelerated 2d canvases should get compositing layers</short_desc>
          <delta_ts>2010-08-06 16:30:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>43589</dependson>
          <blocked>43210</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>fishd</cc>
    
    <cc>kbr</cc>
    
    <cc>oliver</cc>
    
    <cc>senorblanco</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>vangelis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>258943</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-02 10:06:33 -0700</bug_when>
    <thetext>Accelerated 2d canvases should get compositing layers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258947</commentid>
    <comment_count>1</comment_count>
      <attachid>63227</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-02 10:12:25 -0700</bug_when>
    <thetext>Created attachment 63227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259022</commentid>
    <comment_count>2</comment_count>
      <attachid>63227</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-02 11:56:15 -0700</bug_when>
    <thetext>Comment on attachment 63227
Patch

As I have mentioned in https://bugs.webkit.org/show_bug.cgi?id=43210 I am still disagree with this entire approach. I don&apos;t think there should be a GLES2 specific ifdefs. If for some reason you disagree with my suggestion that you use GraphicsContext3D, you should at least create an equivalent 2D API Object, put that in platform and make CanvasRenderingContext2D use it. More comments inline...

&gt;  void HTMLCanvasElement::makeRenderingResultsAvailable()
&gt;  {
&gt; -#if ENABLE(3D_CANVAS)
&gt; -    if (is3D()) {
&gt; -        WebGLRenderingContext* context3d = reinterpret_cast&lt;WebGLRenderingContext*&gt;(renderingContext());
&gt; -        context3d-&gt;paintRenderingResultsToCanvas();
&gt; -    }
&gt; -#endif
&gt; +    if (m_context)
&gt; +        m_context-&gt;paintRenderingResultsToCanvas();
&gt;  }

This will cause you to always make this call. Isn&apos;t your intent to have it happen only when you have an accelerated 2D or 3D canvas?

&gt; diff --git a/WebCore/html/canvas/CanvasRenderingContext2D.cpp b/WebCore/html/canvas/CanvasRenderingContext2D.cpp
&gt; index 6c3d372e66ccb7e3f6912596b1f0ea6290bf8a3f..f4e207ef2a80045ac0d679bd797b3f30b355b889 100644
&gt; --- a/WebCore/html/canvas/CanvasRenderingContext2D.cpp
&gt; +++ b/WebCore/html/canvas/CanvasRenderingContext2D.cpp
&gt; @@ -58,7 +58,17 @@
&gt;  #include &quot;StrokeStyleApplier.h&quot;
&gt;  #include &quot;TextMetrics.h&quot;
&gt;  
&gt; -#include &lt;stdio.h&gt;
&gt; +#if ENABLE(ACCELERATED_2D_CANVAS) &amp;&amp; USE(GLES2_RENDERING)
&gt; +#include &quot;Chrome.h&quot;
&gt; +#include &quot;ChromeClient.h&quot;
&gt; +#include &quot;GLES2Context.h&quot;
&gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; +#include &quot;RenderLayer.h&quot;
&gt; +#if PLATFORM(CHROMIUM)
&gt; +#include &quot;LayerChromium.h&quot; // FIXME: this is odd, but we need it to initialize a RefPtr&lt;PlatformLayer&gt;
&gt; +#endif
&gt; +#endif
&gt; +#endif

USE(GLES2_RENDERING) infects platform independent code with an ifdef that is specific to a particular rendering library, which I think it a bad idea. The name is poor no matter what since it seems your intent is to have this work on both desktop and mobile platforms. OpenGL ES 2.0 is only available on mobile platforms.

&gt;  
&gt;  #include &lt;wtf/ByteArray.h&gt;
&gt;  #include &lt;wtf/MathExtras.h&gt;
&gt; @@ -100,6 +110,12 @@ CanvasRenderingContext2D::CanvasRenderingContext2D(HTMLCanvasElement* canvas, bo
&gt;  #if ENABLE(DASHBOARD_SUPPORT)
&gt;      , m_usesDashboardCompatibilityMode(usesDashboardCompatibilityMode)
&gt;  #endif
&gt; +#if ENABLE(ACCELERATED_2D_CANVAS) &amp;&amp; USE(GLES2_RENDERING)
&gt; +    , m_gles2Context(0)
&gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; +    , m_platformLayer(0)
&gt; +#endif
&gt; +#endif
&gt;  {
&gt;  #if !ENABLE(DASHBOARD_SUPPORT)
&gt;      ASSERT_UNUSED(usesDashboardCompatibilityMode, !usesDashboardCompatibilityMode);
&gt; @@ -108,6 +124,20 @@ CanvasRenderingContext2D::CanvasRenderingContext2D(HTMLCanvasElement* canvas, bo
&gt;      // Make sure that even if the drawingContext() has a different default
&gt;      // thickness, it is in sync with the canvas thickness.
&gt;      setLineWidth(lineWidth());
&gt; +
&gt; +#if ENABLE(ACCELERATED_2D_CANVAS) &amp;&amp; USE(GLES2_RENDERING)
&gt; +    if (Page* p = canvas-&gt;document()-&gt;page()) {
&gt; +        if (p-&gt;settings()-&gt;accelerated2dCanvasEnabled()) {
&gt; +            // Set up our context and layer
&gt; +            m_gles2Context = p-&gt;chrome()-&gt;client()-&gt;getOffscreenGLES2Context();
&gt; +
&gt; +            if (m_gles2Context) {
&gt; +                if (GraphicsContext* c = drawingContext())
&gt; +                    c-&gt;platformContext()-&gt;setGLES2Context(m_gles2Context.get(), IntSize(canvas-&gt;width(), canvas-&gt;height()));
&gt; +            }
&gt; +        }
&gt; +    }
&gt; +#endif

Again, having a member variable name that is specific to a particular rendering library seems like a bad idea in this platform independent code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259119</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-02 14:24:17 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 63227 [details])
&gt; As I have mentioned in https://bugs.webkit.org/show_bug.cgi?id=43210 I am still disagree with this entire approach. I don&apos;t think there should be a GLES2 specific ifdefs. If for some reason you disagree with my suggestion that you use GraphicsContext3D, you should at least create an equivalent 2D API Object, put that in platform and make CanvasRenderingContext2D use it. More comments inline...

Thank you for looking at this patch.

I agree 100% that we should converge on a common abstraction.  The current stack for WebGL looks something like this:

WebGLRenderingContext -&gt; GraphicsContext3D -&gt; (platform layer that talks to some flavor of OpenGL)
Ideally the canvas 2d stack would just be:
CanvasRenderingContext2D -&gt; GraphicsContext3D -&gt; (platform layer that talks to some flavor of OpenGL)

However, GraphicsContext3D is currently too tightly coupled with WebGL to make this practical in the short term.  I&apos;ve filed https://bugs.webkit.org/show_bug.cgi?id=43221 to fix this so that the canvas 2d work can use GC3D directly, but I don&apos;t think this should block canvas 2d work.  There is a large amount of basic functionality work needed to make accelerated 2d canvas work that is orthogonal to this part of the stack.  Refactoring GC3D risks destabilizing WebGL as well (see https://bugs.webkit.org/show_bug.cgi?id=43210#c13).

As a practical matter, it doesn&apos;t make too much of a difference whether one uses the GraphicsContext3D APIs or OpenGL ES 2 since GraphicsContext3D exposes the WebGL API, which is intentionally designed to match OpenGL ES 2.0.  After 43221 is fixed GC3D will be a wrapper for Open GL ES and it will be a mechanical matter to switch the calls over.

&gt; 
&gt; &gt;  void HTMLCanvasElement::makeRenderingResultsAvailable()
&gt; &gt;  {
&gt; &gt; -#if ENABLE(3D_CANVAS)
&gt; &gt; -    if (is3D()) {
&gt; &gt; -        WebGLRenderingContext* context3d = reinterpret_cast&lt;WebGLRenderingContext*&gt;(renderingContext());
&gt; &gt; -        context3d-&gt;paintRenderingResultsToCanvas();
&gt; &gt; -    }
&gt; &gt; -#endif
&gt; &gt; +    if (m_context)
&gt; &gt; +        m_context-&gt;paintRenderingResultsToCanvas();
&gt; &gt;  }
&gt; 
&gt; This will cause you to always make this call. Isn&apos;t your intent to have it happen only when you have an accelerated 2D or 3D canvas?

The behavior is the same as before, the logic is just moved into CanvasRenderingContext rather than being on HTMLCanvasElement.  I&apos;ve declared paintRenderingResultsToCanvas() virtual and made it do nothing by default.  WebGLRenderingContext overrides it to actually make the rendering results available always.  CanvasRenderingContext2D overrides it to make the rendering results available only when accelerated.

The practical difference is trading a downcast for a virtual function call.  I&apos;m happy to put the call behind #ifdefs if performance is a concern.

&gt; 
&gt; &gt; diff --git a/WebCore/html/canvas/CanvasRenderingContext2D.cpp b/WebCore/html/canvas/CanvasRenderingContext2D.cpp
&gt; &gt; index 6c3d372e66ccb7e3f6912596b1f0ea6290bf8a3f..f4e207ef2a80045ac0d679bd797b3f30b355b889 100644
&gt; &gt; --- a/WebCore/html/canvas/CanvasRenderingContext2D.cpp
&gt; &gt; +++ b/WebCore/html/canvas/CanvasRenderingContext2D.cpp
&gt; &gt; @@ -58,7 +58,17 @@
&gt; &gt;  #include &quot;StrokeStyleApplier.h&quot;
&gt; &gt;  #include &quot;TextMetrics.h&quot;
&gt; &gt;  
&gt; &gt; -#include &lt;stdio.h&gt;
&gt; &gt; +#if ENABLE(ACCELERATED_2D_CANVAS) &amp;&amp; USE(GLES2_RENDERING)
&gt; &gt; +#include &quot;Chrome.h&quot;
&gt; &gt; +#include &quot;ChromeClient.h&quot;
&gt; &gt; +#include &quot;GLES2Context.h&quot;
&gt; &gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; &gt; +#include &quot;RenderLayer.h&quot;
&gt; &gt; +#if PLATFORM(CHROMIUM)
&gt; &gt; +#include &quot;LayerChromium.h&quot; // FIXME: this is odd, but we need it to initialize a RefPtr&lt;PlatformLayer&gt;
&gt; &gt; +#endif
&gt; &gt; +#endif
&gt; &gt; +#endif
&gt; 
&gt; USE(GLES2_RENDERING) infects platform independent code with an ifdef that is specific to a particular rendering library, which I think it a bad idea.
&gt; The name is poor no matter what since it seems your intent is to have this work on both desktop and mobile platforms. OpenGL ES 2.0 is only available on mobile platforms.

The reason for using OpenGL ES 2.0 is that it is a subset of what is available across a wide set of desktop and mobile platforms (as opposed to using desktop GL features that may not be available on some mobile platforms).  ANGLE and chromium&apos;s command buffer implementation both accept direct OpenGL ES 2.0 calls as input and produce the appropriate calls to the native system (D3D 9 for ANGLE, OpenGL ES 2.0 or desktop OpenGL for the command buffer).  GraphicsContext3D is another translation layer in the same vein - it takes WebGL calls (which are really OpenGL ES 2.0 calls) as input and produces the appropriate calls for the platform.  As I mentioned above I want to use GC3D as the translation layer everywhere eventually, but this requires some refactoring work.

&gt; 
&gt; &gt;  
&gt; &gt;  #include &lt;wtf/ByteArray.h&gt;
&gt; &gt;  #include &lt;wtf/MathExtras.h&gt;
&gt; &gt; @@ -100,6 +110,12 @@ CanvasRenderingContext2D::CanvasRenderingContext2D(HTMLCanvasElement* canvas, bo
&gt; &gt;  #if ENABLE(DASHBOARD_SUPPORT)
&gt; &gt;      , m_usesDashboardCompatibilityMode(usesDashboardCompatibilityMode)
&gt; &gt;  #endif
&gt; &gt; +#if ENABLE(ACCELERATED_2D_CANVAS) &amp;&amp; USE(GLES2_RENDERING)
&gt; &gt; +    , m_gles2Context(0)
&gt; &gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; &gt; +    , m_platformLayer(0)
&gt; &gt; +#endif
&gt; &gt; +#endif
&gt; &gt;  {
&gt; &gt;  #if !ENABLE(DASHBOARD_SUPPORT)
&gt; &gt;      ASSERT_UNUSED(usesDashboardCompatibilityMode, !usesDashboardCompatibilityMode);
&gt; &gt; @@ -108,6 +124,20 @@ CanvasRenderingContext2D::CanvasRenderingContext2D(HTMLCanvasElement* canvas, bo
&gt; &gt;      // Make sure that even if the drawingContext() has a different default
&gt; &gt;      // thickness, it is in sync with the canvas thickness.
&gt; &gt;      setLineWidth(lineWidth());
&gt; &gt; +
&gt; &gt; +#if ENABLE(ACCELERATED_2D_CANVAS) &amp;&amp; USE(GLES2_RENDERING)
&gt; &gt; +    if (Page* p = canvas-&gt;document()-&gt;page()) {
&gt; &gt; +        if (p-&gt;settings()-&gt;accelerated2dCanvasEnabled()) {
&gt; &gt; +            // Set up our context and layer
&gt; &gt; +            m_gles2Context = p-&gt;chrome()-&gt;client()-&gt;getOffscreenGLES2Context();
&gt; &gt; +
&gt; &gt; +            if (m_gles2Context) {
&gt; &gt; +                if (GraphicsContext* c = drawingContext())
&gt; &gt; +                    c-&gt;platformContext()-&gt;setGLES2Context(m_gles2Context.get(), IntSize(canvas-&gt;width(), canvas-&gt;height()));
&gt; &gt; +            }
&gt; &gt; +        }
&gt; &gt; +    }
&gt; &gt; +#endif
&gt; 
&gt; Again, having a member variable name that is specific to a particular rendering library seems like a bad idea in this platform independent code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259139</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-02 15:09:19 -0700</bug_when>
    <thetext>Please see https://bugs.webkit.org/show_bug.cgi?id=43210#c14, which I believe is a better approach to this implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259140</commentid>
    <comment_count>5</comment_count>
      <attachid>63227</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-08-02 15:09:50 -0700</bug_when>
    <thetext>Comment on attachment 63227
Patch

WebCore/html/HTMLCanvasElement.cpp:309
 +  }
I&apos;m unsure why this is necessary, given you should never have a canvas that is both 2d and 3d at the same time, it would seem that a better approach would be to have a (names for discussion only, not necessarily actually good...):
enum CanvasType { Canvas2D, Canvas3D };

CanvasType type() { return m_type; }

...
CanvasType m_type;
...

WebCore/html/HTMLCanvasElement.h:114
 +  
As above

WebCore/html/canvas/CanvasRenderingContext2D.cpp:71
 +  #endif
These changes to GraphicsContext seem awful, ifdef&apos;s are icky and new code should try not to add them.

WebCore/html/canvas/CanvasRenderingContext2D.cpp:128
 +  #if ENABLE(ACCELERATED_2D_CANVAS) &amp;&amp; USE(GLES2_RENDERING)
I don&apos;t like this ifdefing, especially the ifdeffing on GLES2 (in addition to the ACCELERATED_2D_CANVAS check).  It seems much better to extend GraphicsContext3D to include the necessary APIs, and then the GLES2 ifdef&apos;s should go away, and on platforms that use full GL or D3D can &quot;Just Work&quot;

In all honesty I don&apos;t believe these changes should go forward as is -- I strongly believe that GraphicsContext3D should be the interface used for all hardware rendering, especially given the current apparent plan to use GLES as the acceleration model.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259159</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-08-02 15:46:29 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; In all honesty I don&apos;t believe these changes should go forward as is -- I strongly believe that GraphicsContext3D should be the interface used for all hardware rendering, especially given the current apparent plan to use GLES as the acceleration model.

Please, please, don&apos;t require this work to use GraphicsContext3D in order to proceed at the present time. We have a lot of work still remaining to do on WebGL before finalizing the first version of the specification, and large scale refactorings on the GraphicsContext3D class will severely impact our ability to complete this work in the planned time frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259162</commentid>
    <comment_count>7</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-08-02 15:50:41 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; In all honesty I don&apos;t believe these changes should go forward as is -- I strongly believe that GraphicsContext3D should be the interface used for all hardware rendering, especially given the current apparent plan to use GLES as the acceleration model.
&gt; 
&gt; Please, please, don&apos;t require this work to use GraphicsContext3D in order to proceed at the present time. We have a lot of work still remaining to do on WebGL before finalizing the first version of the specification, and large scale refactorings on the GraphicsContext3D class will severely impact our ability to complete this work in the planned time frame.

This basically involves duplicating a whole heap of work, and i don&apos;t believe is a good design in the first place, landing bad code now on the assumption that &quot;we&apos;ll fix it later&quot; has almost always resulted in bunches of bad crufty code living in the tree for large amounts of time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259166</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-02 15:56:06 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; ...
&gt; 
&gt; I agree 100% that we should converge on a common abstraction.  The current stack for WebGL looks something like this:
&gt; 
&gt; WebGLRenderingContext -&gt; GraphicsContext3D -&gt; (platform layer that talks to some flavor of OpenGL)
&gt; Ideally the canvas 2d stack would just be:
&gt; CanvasRenderingContext2D -&gt; GraphicsContext3D -&gt; (platform layer that talks to some flavor of OpenGL)
&gt; 
&gt; However, GraphicsContext3D is currently too tightly coupled with WebGL to make this practical in the short term.  I&apos;ve filed https://bugs.webkit.org/show_bug.cgi?id=43221 to fix this so that the canvas 2d work can use GC3D directly, but I don&apos;t think this should block canvas 2d work.  There is a large amount of basic functionality work needed to make accelerated 2d canvas work that is orthogonal to this part of the stack.  Refactoring GC3D risks destabilizing WebGL as well (see https://bugs.webkit.org/show_bug.cgi?id=43210#c13).

Can you post (here and/or in https://bugs.webkit.org/show_bug.cgi?id=43221) what you believe are the problems with GraphicsContext3D that make it WebGL specific and unusable as the API for Canvas 2D? If it&apos;s just a performance concern because GraphicsContext3D does extra checks needed by WebGL then it would be better to use GraphicsContext3D now and improve performance later. If not, maybe we can make small changes that will not destabilize WebGL.

&gt; 
&gt; As a practical matter, it doesn&apos;t make too much of a difference whether one uses the GraphicsContext3D APIs or OpenGL ES 2 since GraphicsContext3D exposes the WebGL API, which is intentionally designed to match OpenGL ES 2.0.  After 43221 is fixed GC3D will be a wrapper for Open GL ES and it will be a mechanical matter to switch the calls over.

The difference is that you&apos;ll be doing the work twice. Once to put it on top of OpenGL, which is a C API and once to put it on top of GraphicsContext3D, which is a C++ API and has a different way of dealing with GL objects. So switching it is more than a mechanical operation.

&gt; 
&gt; &gt; 
&gt; &gt; &gt;  void HTMLCanvasElement::makeRenderingResultsAvailable()
&gt; &gt; &gt;  {
&gt; &gt; &gt; -#if ENABLE(3D_CANVAS)
&gt; &gt; &gt; -    if (is3D()) {
&gt; &gt; &gt; -        WebGLRenderingContext* context3d = reinterpret_cast&lt;WebGLRenderingContext*&gt;(renderingContext());
&gt; &gt; &gt; -        context3d-&gt;paintRenderingResultsToCanvas();
&gt; &gt; &gt; -    }
&gt; &gt; &gt; -#endif
&gt; &gt; &gt; +    if (m_context)
&gt; &gt; &gt; +        m_context-&gt;paintRenderingResultsToCanvas();
&gt; &gt; &gt;  }
&gt; &gt; 
&gt; &gt; This will cause you to always make this call. Isn&apos;t your intent to have it happen only when you have an accelerated 2D or 3D canvas?
&gt; 
&gt; The behavior is the same as before, the logic is just moved into CanvasRenderingContext rather than being on HTMLCanvasElement.  I&apos;ve declared paintRenderingResultsToCanvas() virtual and made it do nothing by default.  WebGLRenderingContext overrides it to actually make the rendering results available always.  CanvasRenderingContext2D overrides it to make the rendering results available only when accelerated.
&gt; 
&gt; The practical difference is trading a downcast for a virtual function call.  I&apos;m happy to put the call behind #ifdefs if performance is a concern.

No, I see what you&apos;re doing now. It&apos;s fine the way you have it.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; diff --git a/WebCore/html/canvas/CanvasRenderingContext2D.cpp b/WebCore/html/canvas/CanvasRenderingContext2D.cpp
&gt; &gt; &gt; index 6c3d372e66ccb7e3f6912596b1f0ea6290bf8a3f..f4e207ef2a80045ac0d679bd797b3f30b355b889 100644
&gt; &gt; &gt; --- a/WebCore/html/canvas/CanvasRenderingContext2D.cpp
&gt; &gt; &gt; +++ b/WebCore/html/canvas/CanvasRenderingContext2D.cpp
&gt; &gt; &gt; @@ -58,7 +58,17 @@
&gt; &gt; &gt;  #include &quot;StrokeStyleApplier.h&quot;
&gt; &gt; &gt;  #include &quot;TextMetrics.h&quot;
&gt; &gt; &gt;  
&gt; &gt; &gt; -#include &lt;stdio.h&gt;
&gt; &gt; &gt; +#if ENABLE(ACCELERATED_2D_CANVAS) &amp;&amp; USE(GLES2_RENDERING)
&gt; &gt; &gt; +#include &quot;Chrome.h&quot;
&gt; &gt; &gt; +#include &quot;ChromeClient.h&quot;
&gt; &gt; &gt; +#include &quot;GLES2Context.h&quot;
&gt; &gt; &gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; &gt; &gt; +#include &quot;RenderLayer.h&quot;
&gt; &gt; &gt; +#if PLATFORM(CHROMIUM)
&gt; &gt; &gt; +#include &quot;LayerChromium.h&quot; // FIXME: this is odd, but we need it to initialize a RefPtr&lt;PlatformLayer&gt;
&gt; &gt; &gt; +#endif
&gt; &gt; &gt; +#endif
&gt; &gt; &gt; +#endif
&gt; &gt; 
&gt; &gt; USE(GLES2_RENDERING) infects platform independent code with an ifdef that is specific to a particular rendering library, which I think it a bad idea.
&gt; &gt; The name is poor no matter what since it seems your intent is to have this work on both desktop and mobile platforms. OpenGL ES 2.0 is only available on mobile platforms.
&gt; 
&gt; The reason for using OpenGL ES 2.0 is that it is a subset of what is available across a wide set of desktop and mobile platforms (as opposed to using desktop GL features that may not be available on some mobile platforms).  ANGLE and chromium&apos;s command buffer implementation both accept direct OpenGL ES 2.0 calls as input and produce the appropriate calls to the native system (D3D 9 for ANGLE, OpenGL ES 2.0 or desktop OpenGL for the command buffer).  GraphicsContext3D is another translation layer in the same vein - it takes WebGL calls (which are really OpenGL ES 2.0 calls) as input and produces the appropriate calls for the platform.  As I mentioned above I want to use GC3D as the translation layer everywhere eventually, but this requires some refactoring work.

But we&apos;re not talking about a subset. It would be nice if GL ES 2.0 were a subset of desktop OpenGL, but it&apos;s not. There are differences in GLSL and some things that are standard in GL ES 2.0 are extensions in desktop OpenGL. That means some hardware will either not have the required support or will have to have wrappers to make it behave like you expect. These are all things we have been wrestling with in WebGL which you would have to do over if you use your own shim.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259171</commentid>
    <comment_count>9</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-08-02 16:04:18 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; This basically involves duplicating a whole heap of work, and i don&apos;t believe is a good design in the first place, landing bad code now on the assumption that &quot;we&apos;ll fix it later&quot; has almost always resulted in bunches of bad crufty code living in the tree for large amounts of time.

It really doesn&apos;t involve code duplication. GraphicsContext3D attempts to abstract over the OpenGL API. The changes in this work focus on providing an OpenGL ES 2.0 context abstraction to WebCore without replicating all of the OpenGL ES 2.0 entry points. I think we may want to reconsider how GraphicsContext3D is supported in the future based on the results of this work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259174</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-02 16:16:14 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; &gt; This basically involves duplicating a whole heap of work, and i don&apos;t believe is a good design in the first place, landing bad code now on the assumption that &quot;we&apos;ll fix it later&quot; has almost always resulted in bunches of bad crufty code living in the tree for large amounts of time.
&gt; 
&gt; It really doesn&apos;t involve code duplication. GraphicsContext3D attempts to abstract over the OpenGL API. The changes in this work focus on providing an OpenGL ES 2.0 context abstraction to WebCore without replicating all of the OpenGL ES 2.0 entry points. I think we may want to reconsider how GraphicsContext3D is supported in the future based on the results of this work.

I&apos;m not sure what you mean by this. GraphicsContext3D provides an OpenGL ES 2.0 context abstraction. It happens to support most if not all OpenGL ES 2.0 calls one way or another, but the fact that the use in Context 2D doesn&apos;t use that full API should not be an issues. 

I also don&apos;t know what you mean when you say we should reconsider how GraphicsContext3D is supported. It seems clear that GraphicsContext3D is the 3D wrapper around OpenGL ES 2.0, much as GraphicsContext is a wrapper around Core Graphics. GraphicsContext has interfaces to other 2D libraries, just like GraphicsContext3D has interfaces to other 3D libraries. I agree that there may be logic in GraphicsContext3D that is needed to protect JavaScript authors from misusing the API which add overhead. These additions can be removed to a higher level wrapper specifically for WebGL. But I don&apos;t that separation should block this work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259175</commentid>
    <comment_count>11</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-02 16:18:24 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #3)
&gt; &gt; ...
&gt; &gt; 
&gt; &gt; I agree 100% that we should converge on a common abstraction.  The current stack for WebGL looks something like this:
&gt; &gt; 
&gt; &gt; WebGLRenderingContext -&gt; GraphicsContext3D -&gt; (platform layer that talks to some flavor of OpenGL)
&gt; &gt; Ideally the canvas 2d stack would just be:
&gt; &gt; CanvasRenderingContext2D -&gt; GraphicsContext3D -&gt; (platform layer that talks to some flavor of OpenGL)
&gt; &gt; 
&gt; &gt; However, GraphicsContext3D is currently too tightly coupled with WebGL to make this practical in the short term.  I&apos;ve filed https://bugs.webkit.org/show_bug.cgi?id=43221 to fix this so that the canvas 2d work can use GC3D directly, but I don&apos;t think this should block canvas 2d work.  There is a large amount of basic functionality work needed to make accelerated 2d canvas work that is orthogonal to this part of the stack.  Refactoring GC3D risks destabilizing WebGL as well (see https://bugs.webkit.org/show_bug.cgi?id=43210#c13).
&gt; 
&gt; Can you post (here and/or in https://bugs.webkit.org/show_bug.cgi?id=43221) what you believe are the problems with GraphicsContext3D that make it WebGL specific and unusable as the API for Canvas 2D? If it&apos;s just a performance concern because GraphicsContext3D does extra checks needed by WebGL then it would be better to use GraphicsContext3D now and improve performance later. If not, maybe we can make small changes that will not destabilize WebGL.

It&apos;s mostly around layering - GraphicsContext3D is currently aware of WebGL types and WebGLRenderingContext.  All of those back pointers will have to be abstracted in some way.  This may not actually be too much work - I will investigate and see precisely what is missing.

&gt; 
&gt; &gt; 
&gt; &gt; As a practical matter, it doesn&apos;t make too much of a difference whether one uses the GraphicsContext3D APIs or OpenGL ES 2 since GraphicsContext3D exposes the WebGL API, which is intentionally designed to match OpenGL ES 2.0.  After 43221 is fixed GC3D will be a wrapper for Open GL ES and it will be a mechanical matter to switch the calls over.
&gt; 
&gt; The difference is that you&apos;ll be doing the work twice. Once to put it on top of OpenGL, which is a C API and once to put it on top of GraphicsContext3D, which is a C++ API and has a different way of dealing with GL objects. So switching it is more than a mechanical operation.

Good point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259186</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-02 16:34:37 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #8)
&gt; ...
&gt; &gt; 
&gt; &gt; Can you post (here and/or in https://bugs.webkit.org/show_bug.cgi?id=43221) what you believe are the problems with GraphicsContext3D that make it WebGL specific and unusable as the API for Canvas 2D? If it&apos;s just a performance concern because GraphicsContext3D does extra checks needed by WebGL then it would be better to use GraphicsContext3D now and improve performance later. If not, maybe we can make small changes that will not destabilize WebGL.
&gt; 
&gt; It&apos;s mostly around layering - GraphicsContext3D is currently aware of WebGL types and WebGLRenderingContext.  All of those back pointers will have to be abstracted in some way.  This may not actually be too much work - I will investigate and see precisely what is missing.

Right, that&apos;s the layering violations that Ken refers to. But that work doesn&apos;t have to block this work, does it?

OBTW, I set the component in https://bugs.webkit.org/show_bug.cgi?id=43221 to WebGL (mostly so I can find it :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259187</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-02 16:38:32 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #8)
&gt; &gt; ...
&gt; &gt; &gt; 
&gt; &gt; &gt; Can you post (here and/or in https://bugs.webkit.org/show_bug.cgi?id=43221) what you believe are the problems with GraphicsContext3D that make it WebGL specific and unusable as the API for Canvas 2D? If it&apos;s just a performance concern because GraphicsContext3D does extra checks needed by WebGL then it would be better to use GraphicsContext3D now and improve performance later. If not, maybe we can make small changes that will not destabilize WebGL.
&gt; &gt; 
&gt; &gt; It&apos;s mostly around layering - GraphicsContext3D is currently aware of WebGL types and WebGLRenderingContext.  All of those back pointers will have to be abstracted in some way.  This may not actually be too much work - I will investigate and see precisely what is missing.
&gt; 
&gt; Right, that&apos;s the layering violations that Ken refers to. But that work doesn&apos;t have to block this work, does it?

I&apos;ll go find out and update the bug.  I hope not!
&gt; 
&gt; OBTW, I set the component in https://bugs.webkit.org/show_bug.cgi?id=43221 to WebGL (mostly so I can find it :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259221</commentid>
    <comment_count>14</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-08-02 17:47:35 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #3)
&gt; &gt; ...
&gt; &gt; 
&gt; &gt; I agree 100% that we should converge on a common abstraction.  The current stack for WebGL looks something like this:
&gt; &gt; 
&gt; &gt; WebGLRenderingContext -&gt; GraphicsContext3D -&gt; (platform layer that talks to some flavor of OpenGL)
&gt; &gt; Ideally the canvas 2d stack would just be:
&gt; &gt; CanvasRenderingContext2D -&gt; GraphicsContext3D -&gt; (platform layer that talks to some flavor of OpenGL)
&gt; &gt; 
&gt; &gt; However, GraphicsContext3D is currently too tightly coupled with WebGL to make this practical in the short term.  I&apos;ve filed https://bugs.webkit.org/show_bug.cgi?id=43221 to fix this so that the canvas 2d work can use GC3D directly, but I don&apos;t think this should block canvas 2d work.  There is a large amount of basic functionality work needed to make accelerated 2d canvas work that is orthogonal to this part of the stack.  Refactoring GC3D risks destabilizing WebGL as well (see https://bugs.webkit.org/show_bug.cgi?id=43210#c13).
&gt; 
&gt; Can you post (here and/or in https://bugs.webkit.org/show_bug.cgi?id=43221) what you believe are the problems with GraphicsContext3D that make it WebGL specific and unusable as the API for Canvas 2D? If it&apos;s just a performance concern because GraphicsContext3D does extra checks needed by WebGL then it would be better to use GraphicsContext3D now and improve performance later. If not, maybe we can make small changes that will not destabilize WebGL.
&gt; 
&gt; &gt; 
&gt; &gt; As a practical matter, it doesn&apos;t make too much of a difference whether one uses the GraphicsContext3D APIs or OpenGL ES 2 since GraphicsContext3D exposes the WebGL API, which is intentionally designed to match OpenGL ES 2.0.  After 43221 is fixed GC3D will be a wrapper for Open GL ES and it will be a mechanical matter to switch the calls over.
&gt; 
&gt; The difference is that you&apos;ll be doing the work twice. Once to put it on top of OpenGL, which is a C API and once to put it on top of GraphicsContext3D, which is a C++ API and has a different way of dealing with GL objects. So switching it is more than a mechanical operation.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;  void HTMLCanvasElement::makeRenderingResultsAvailable()
&gt; &gt; &gt; &gt;  {
&gt; &gt; &gt; &gt; -#if ENABLE(3D_CANVAS)
&gt; &gt; &gt; &gt; -    if (is3D()) {
&gt; &gt; &gt; &gt; -        WebGLRenderingContext* context3d = reinterpret_cast&lt;WebGLRenderingContext*&gt;(renderingContext());
&gt; &gt; &gt; &gt; -        context3d-&gt;paintRenderingResultsToCanvas();
&gt; &gt; &gt; &gt; -    }
&gt; &gt; &gt; &gt; -#endif
&gt; &gt; &gt; &gt; +    if (m_context)
&gt; &gt; &gt; &gt; +        m_context-&gt;paintRenderingResultsToCanvas();
&gt; &gt; &gt; &gt;  }
&gt; &gt; &gt; 
&gt; &gt; &gt; This will cause you to always make this call. Isn&apos;t your intent to have it happen only when you have an accelerated 2D or 3D canvas?
&gt; &gt; 
&gt; &gt; The behavior is the same as before, the logic is just moved into CanvasRenderingContext rather than being on HTMLCanvasElement.  I&apos;ve declared paintRenderingResultsToCanvas() virtual and made it do nothing by default.  WebGLRenderingContext overrides it to actually make the rendering results available always.  CanvasRenderingContext2D overrides it to make the rendering results available only when accelerated.
&gt; &gt; 
&gt; &gt; The practical difference is trading a downcast for a virtual function call.  I&apos;m happy to put the call behind #ifdefs if performance is a concern.
&gt; 
&gt; No, I see what you&apos;re doing now. It&apos;s fine the way you have it.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; diff --git a/WebCore/html/canvas/CanvasRenderingContext2D.cpp b/WebCore/html/canvas/CanvasRenderingContext2D.cpp
&gt; &gt; &gt; &gt; index 6c3d372e66ccb7e3f6912596b1f0ea6290bf8a3f..f4e207ef2a80045ac0d679bd797b3f30b355b889 100644
&gt; &gt; &gt; &gt; --- a/WebCore/html/canvas/CanvasRenderingContext2D.cpp
&gt; &gt; &gt; &gt; +++ b/WebCore/html/canvas/CanvasRenderingContext2D.cpp
&gt; &gt; &gt; &gt; @@ -58,7 +58,17 @@
&gt; &gt; &gt; &gt;  #include &quot;StrokeStyleApplier.h&quot;
&gt; &gt; &gt; &gt;  #include &quot;TextMetrics.h&quot;
&gt; &gt; &gt; &gt;  
&gt; &gt; &gt; &gt; -#include &lt;stdio.h&gt;
&gt; &gt; &gt; &gt; +#if ENABLE(ACCELERATED_2D_CANVAS) &amp;&amp; USE(GLES2_RENDERING)
&gt; &gt; &gt; &gt; +#include &quot;Chrome.h&quot;
&gt; &gt; &gt; &gt; +#include &quot;ChromeClient.h&quot;
&gt; &gt; &gt; &gt; +#include &quot;GLES2Context.h&quot;
&gt; &gt; &gt; &gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; &gt; &gt; &gt; +#include &quot;RenderLayer.h&quot;
&gt; &gt; &gt; &gt; +#if PLATFORM(CHROMIUM)
&gt; &gt; &gt; &gt; +#include &quot;LayerChromium.h&quot; // FIXME: this is odd, but we need it to initialize a RefPtr&lt;PlatformLayer&gt;
&gt; &gt; &gt; &gt; +#endif
&gt; &gt; &gt; &gt; +#endif
&gt; &gt; &gt; &gt; +#endif
&gt; &gt; &gt; 
&gt; &gt; &gt; USE(GLES2_RENDERING) infects platform independent code with an ifdef that is specific to a particular rendering library, which I think it a bad idea.
&gt; &gt; &gt; The name is poor no matter what since it seems your intent is to have this work on both desktop and mobile platforms. OpenGL ES 2.0 is only available on mobile platforms.
&gt; &gt; 
&gt; &gt; The reason for using OpenGL ES 2.0 is that it is a subset of what is available across a wide set of desktop and mobile platforms (as opposed to using desktop GL features that may not be available on some mobile platforms).  ANGLE and chromium&apos;s command buffer implementation both accept direct OpenGL ES 2.0 calls as input and produce the appropriate calls to the native system (D3D 9 for ANGLE, OpenGL ES 2.0 or desktop OpenGL for the command buffer).  GraphicsContext3D is another translation layer in the same vein - it takes WebGL calls (which are really OpenGL ES 2.0 calls) as input and produces the appropriate calls for the platform.  As I mentioned above I want to use GC3D as the translation layer everywhere eventually, but this requires some refactoring work.
&gt; 
&gt; But we&apos;re not talking about a subset. It would be nice if GL ES 2.0 were a subset of desktop OpenGL, but it&apos;s not. There are differences in GLSL and some things that are standard in GL ES 2.0 are extensions in desktop OpenGL. That means some hardware will either not have the required support or will have to have wrappers to make it behave like you expect. These are all things we have been wrestling with in WebGL which you would have to do over if you use your own shim.

As I mentioned on the master bug, we had to do that duplication of work anyway (and the work is already done).  We can only make D3D/GL calls from within the GPU process, whose interface is GLES 2.0.  So the only GraphicsContext3D backend that Chrome can use is the one that marshalls to the GPU process via the GLES2 stubs.  From the Chrome point of view, GraphicsContext3D is a extra layer of abstraction we don&apos;t need.

Note that GLES2Context is probably badly-named.  It&apos;s a simple interface that has no more dependencies on GLES2 than GraphicsContext3D does on 3D.  It provides things such as SwapBuffers, MakeCurrent, etc that any glX or wgl implementation would have to abstract.  (Note that GLES2Context and the marshalled GLES2 calls are also used by Chrome&apos;s implementation of accelerated compositing and CSS 3D transforms.)

If the goal is to clean up the #ifdef GLES2_RENDERING (which I agree are ugly -- I tried to hide them in the platform layer at first but failed), we could easily provide a stubbed-out implementation of GLES2Context for the other platforms, and then the #ifdefs could be removed.  The code would still be protected by the ENABLE and the runtime flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259525</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-03 10:25:13 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; ...
&gt; &gt; &gt; The reason for using OpenGL ES 2.0 is that it is a subset of what is available across a wide set of desktop and mobile platforms (as opposed to using desktop GL features that may not be available on some mobile platforms).  ANGLE and chromium&apos;s command buffer implementation both accept direct OpenGL ES 2.0 calls as input and produce the appropriate calls to the native system (D3D 9 for ANGLE, OpenGL ES 2.0 or desktop OpenGL for the command buffer).  GraphicsContext3D is another translation layer in the same vein - it takes WebGL calls (which are really OpenGL ES 2.0 calls) as input and produces the appropriate calls for the platform.  As I mentioned above I want to use GC3D as the translation layer everywhere eventually, but this requires some refactoring work.
&gt; &gt; 
&gt; &gt; But we&apos;re not talking about a subset. It would be nice if GL ES 2.0 were a subset of desktop OpenGL, but it&apos;s not. There are differences in GLSL and some things that are standard in GL ES 2.0 are extensions in desktop OpenGL. That means some hardware will either not have the required support or will have to have wrappers to make it behave like you expect. These are all things we have been wrestling with in WebGL which you would have to do over if you use your own shim.
&gt; 
&gt; As I mentioned on the master bug, we had to do that duplication of work anyway (and the work is already done).  We can only make D3D/GL calls from within the GPU process, whose interface is GLES 2.0.  So the only GraphicsContext3D backend that Chrome can use is the one that marshalls to the GPU process via the GLES2 stubs.  From the Chrome point of view, GraphicsContext3D is a extra layer of abstraction we don&apos;t need.

But you&apos;re replacing the abstraction with a bunch of ifdefs in CanvasRenderingContext2D, which is a mistake. Currently CanvasRenderingContext2D uses GraphicsContext as its renderer, and it should stay that way. Any of your work should be at the level of GraphicsContext. If that means making a version of GraphicsContext that uses your GLES2Context then that&apos;s fine. But you shouldn&apos;t be making changes directly to CanvasRenderingContext2D.

But my main point is that I think you would be doing a lot less work if you made a version of GraphicsContext that used GraphicsContext3D as its renderer. We can get the WebGL specifics out of GraphicsContext3D to make it more appropriate for this task. Doing that, you could reasonably argue, is an extra layer that might affect performance, making a direct GLES2Context implementation on GraphicsContext more desirable. I don&apos;t think the overhead would be that significant, but it&apos;s arguable.

&gt; 
&gt; Note that GLES2Context is probably badly-named.  It&apos;s a simple interface that has no more dependencies on GLES2 than GraphicsContext3D does on 3D.  It provides things such as SwapBuffers, MakeCurrent, etc that any glX or wgl implementation would have to abstract.  (Note that GLES2Context and the marshalled GLES2 calls are also used by Chrome&apos;s implementation of accelerated compositing and CSS 3D transforms.)

Yes, I understand your point now. But doesn&apos;t WebGL use this same API? If so, since WebGL has to go through GraphicsContext3D (eventually getting to your GLES2Context API) shouldn&apos;t we try to use GraphicsContext3D as the API for Canvas 2D, as long as it can be done without significant overhead?

&gt; 
&gt; If the goal is to clean up the #ifdef GLES2_RENDERING (which I agree are ugly -- I tried to hide them in the platform layer at first but failed), we could easily provide a stubbed-out implementation of GLES2Context for the other platforms, and then the #ifdefs could be removed.  The code would still be protected by the ENABLE and the runtime flag.

I think the goal has to be to make accelerated 2D rendering possible on all platforms as long as they implement the proper platform-specific classes. So ifdefs having to do with accelerated vs. non-accelerated implementations are fine, but not those having to do with a specific rendering API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259688</commentid>
    <comment_count>16</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-08-03 14:23:53 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; As I mentioned on the master bug, we had to do that duplication of work anyway (and the work is already done).  We can only make D3D/GL calls from within the GPU process, whose interface is GLES 2.0.  So the only GraphicsContext3D backend that Chrome can use is the one that marshalls to the GPU process via the GLES2 stubs.  From the Chrome point of view, GraphicsContext3D is a extra layer of abstraction we don&apos;t need.
&gt; 
&gt; But you&apos;re replacing the abstraction with a bunch of ifdefs in CanvasRenderingContext2D, which is a mistake. Currently CanvasRenderingContext2D uses GraphicsContext as its renderer, and it should stay that way. Any of your work should be at the level of GraphicsContext. If that means making a version of GraphicsContext that uses your GLES2Context then that&apos;s fine. But you shouldn&apos;t be making changes directly to CanvasRenderingContext2D.

There are two things that CanvasRenderingContext2D does with GLES2Context inside those #ifdefs:  create it, and tell the GraphicsContext inside the canvas&apos;s ImageBuffer to use it.  I tried to push the creation and ownership down into GraphicsContext, but unfortunately it currently needs access to the ChromeClient in order to share resources with the compositor attached to that Page, and passing a Page* or ChromeClient* down into the platform/graphics level felt like a layering violation to me.

The other problem with putting ownership of the GLES2Context (or GraphicsContext3D) inside ImageBuffer&apos;s GraphicsContext is that 2D canvas likes to recreate that ImageBuffer a lot -- in particular, when the canvas is reset by doing canvas.width = width.  This is fine for GraphicsContext, but doing so for GLES2Context is expensive (as it is for GraphicsContext3D, I imagine), so we needed a way to keep the GLES2Context alive over those resets.  This might be fixable by having 2D canvas behave a little more like WebGL, and not recreate its ImageBuffer, or to move ownership of the GraphicsContext out of the ImageBuffer.

&gt; But my main point is that I think you would be doing a lot less work if you made a version of GraphicsContext that used GraphicsContext3D as its renderer. We can get the WebGL specifics out of GraphicsContext3D to make it more appropriate for this task. Doing that, you could reasonably argue, is an extra layer that might affect performance, making a direct GLES2Context implementation on GraphicsContext more desirable. I don&apos;t think the overhead would be that significant, but it&apos;s arguable.

Performance is not worth arguing about:  the only real answer is to try it out and benchmark it.  That&apos;s what James is currently doing, if it doesn&apos;t take too long.

As to doing a lot less work, maybe I&apos;m being dense, but I still don&apos;t see what GraphicsContext3D offers over straight GLES2 (for Chrome; I can see what it offers for other ports).  Using GraphicsContext3D instead would mostly just mean (e.g.) calling ctx-&gt;drawElements() instead of glDrawElements(), no?  We&apos;d still have to write the shaders, make the calls to compile them, create the vert buffers, bind them, etc.

You&apos;ll notice that GLES2Canvas (not context) actually does bear a striking resemblance to GraphicsContext.  This is not a coincidence -- in fact, I hope that it will one day become a full implementation.   One of the reasons it is not today is that none of the functions on GraphicsContext are virtual, so having two implementations in the same binary is rather difficult.  Making them all virtual I thought might be objectionable to other ports, so for now GLES2Canvas is essentially &quot;bolted onto&quot; GraphicsContextSkia.  We also need it to be switchable on the fly with the software path, in order to support older machines and for those functions we haven&apos;t implemented yet.

&gt; &gt; Note that GLES2Context is probably badly-named.  It&apos;s a simple interface that has no more dependencies on GLES2 than GraphicsContext3D does on 3D.  It provides things such as SwapBuffers, MakeCurrent, etc that any glX or wgl implementation would have to abstract.  (Note that GLES2Context and the marshalled GLES2 calls are also used by Chrome&apos;s implementation of accelerated compositing and CSS 3D transforms.)
&gt; 
&gt; Yes, I understand your point now. But doesn&apos;t WebGL use this same API? If so, since WebGL has to go through GraphicsContext3D (eventually getting to your GLES2Context API) shouldn&apos;t we try to use GraphicsContext3D as the API for Canvas 2D, as long as it can be done without significant overhead?

It&apos;s worth trying, which is what James is doing.  Aside from performance, there&apos;s always the risk of bugs that having more code involved brings.  Finally, we have a pretty good infrastructure for surfacing GLES2 extensions from the GPU process, which we planned to start using.  If we use GraphicsContext3D, we&apos;ll have to start plumbing those through.

&gt; 
&gt; &gt; 
&gt; &gt; If the goal is to clean up the #ifdef GLES2_RENDERING (which I agree are ugly -- I tried to hide them in the platform layer at first but failed), we could easily provide a stubbed-out implementation of GLES2Context for the other platforms, and then the #ifdefs could be removed.  The code would still be protected by the ENABLE and the runtime flag.
&gt; 
&gt; I think the goal has to be to make accelerated 2D rendering possible on all platforms as long as they implement the proper platform-specific classes. So ifdefs having to do with accelerated vs. non-accelerated implementations are fine, but not those having to do with a specific rendering API.

Here&apos;s another possible solution to that problem (that would require less change from our current implementation):

in GraphicsContext.h (or elsewhere in platform/graphics/*.h):

#if PLATFORM(CHROMIUM)
typedef GLES2Context AcceleratedGraphicsContext
#else
typedef GraphicsContext3D AcceleratedGraphicsContext
#endif

in CanvasRenderingContext2D.h:

OwnPtr&lt;GLES2Context&gt; m_gles2Context
becomes
OwnPtr&lt;AcceleratedGraphicsContext&gt; m_acceleratedGraphicsContext;

This would allow us to remove the #ifdefs, and to allow other ports to do a GraphicsContext3D implementation without requiring us to do one today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259720</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-03 15:05:18 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; ...
&gt; &gt; But you&apos;re replacing the abstraction with a bunch of ifdefs in CanvasRenderingContext2D, which is a mistake. Currently CanvasRenderingContext2D uses GraphicsContext as its renderer, and it should stay that way. Any of your work should be at the level of GraphicsContext. If that means making a version of GraphicsContext that uses your GLES2Context then that&apos;s fine. But you shouldn&apos;t be making changes directly to CanvasRenderingContext2D.
&gt; 
&gt; There are two things that CanvasRenderingContext2D does with GLES2Context inside those #ifdefs:  create it, and tell the GraphicsContext inside the canvas&apos;s ImageBuffer to use it.  I tried to push the creation and ownership down into GraphicsContext, but unfortunately it currently needs access to the ChromeClient in order to share resources with the compositor attached to that Page, and passing a Page* or ChromeClient* down into the platform/graphics level felt like a layering violation to me.
&gt; 
&gt; The other problem with putting ownership of the GLES2Context (or GraphicsContext3D) inside ImageBuffer&apos;s GraphicsContext is that 2D canvas likes to recreate that ImageBuffer a lot -- in particular, when the canvas is reset by doing canvas.width = width.  This is fine for GraphicsContext, but doing so for GLES2Context is expensive (as it is for GraphicsContext3D, I imagine), so we needed a way to keep the GLES2Context alive over those resets.  This might be fixable by having 2D canvas behave a little more like WebGL, and not recreate its ImageBuffer, or to move ownership of the GraphicsContext out of the ImageBuffer.

First of all let me say that I think the source of the problem here is ImageBuffer and the fact that it &quot;owns&quot; the GraphicsContext. This is compounded by the fact that the ImageBuffer is owned by the HTMLCanvasElement rather than the CanvasRenderingContext2D (I think, I don&apos;t have access to the code at the moment). So I see why you&apos;re having such difficulty!

You&apos;ll notice that we don&apos;t even use the ImageBuffer in HTMLCanvasElement in WebGLRenderingContext. So maybe we can just make GraphicsContext behave more like GraphicsContext3D to solve this problem. It would just be a matter of initializing GraphicsContext to have its own ImageBuffer (conceptually) which gets composited with some sort of paint call(s). Today WebGLRenderingContext works with both accelerated and non-accelerated compositing models, so it should be possible to do the same with the 2D Canvas.

I think if you first focused on duplicating the WebGLRenderingContext compositing model in CanvasRenderingContext2D, I think it will be easier to make a GraphicsContext implementation on top of GLES2Context (whether directly or on top of GraphicsContext3D).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260046</commentid>
    <comment_count>18</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-08-04 09:06:22 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; ...
&gt; &gt; &gt; But you&apos;re replacing the abstraction with a bunch of ifdefs in CanvasRenderingContext2D, which is a mistake. Currently CanvasRenderingContext2D uses GraphicsContext as its renderer, and it should stay that way. Any of your work should be at the level of GraphicsContext. If that means making a version of GraphicsContext that uses your GLES2Context then that&apos;s fine. But you shouldn&apos;t be making changes directly to CanvasRenderingContext2D.
&gt; &gt; 
&gt; &gt; There are two things that CanvasRenderingContext2D does with GLES2Context inside those #ifdefs:  create it, and tell the GraphicsContext inside the canvas&apos;s ImageBuffer to use it.  I tried to push the creation and ownership down into GraphicsContext, but unfortunately it currently needs access to the ChromeClient in order to share resources with the compositor attached to that Page, and passing a Page* or ChromeClient* down into the platform/graphics level felt like a layering violation to me.
&gt; &gt; 
&gt; &gt; The other problem with putting ownership of the GLES2Context (or GraphicsContext3D) inside ImageBuffer&apos;s GraphicsContext is that 2D canvas likes to recreate that ImageBuffer a lot -- in particular, when the canvas is reset by doing canvas.width = width.  This is fine for GraphicsContext, but doing so for GLES2Context is expensive (as it is for GraphicsContext3D, I imagine), so we needed a way to keep the GLES2Context alive over those resets.  This might be fixable by having 2D canvas behave a little more like WebGL, and not recreate its ImageBuffer, or to move ownership of the GraphicsContext out of the ImageBuffer.
&gt; 
&gt; First of all let me say that I think the source of the problem here is ImageBuffer and the fact that it &quot;owns&quot; the GraphicsContext. This is compounded by the fact that the ImageBuffer is owned by the HTMLCanvasElement rather than the CanvasRenderingContext2D (I think, I don&apos;t have access to the code at the moment). So I see why you&apos;re having such difficulty!
&gt; 
&gt; You&apos;ll notice that we don&apos;t even use the ImageBuffer in HTMLCanvasElement in WebGLRenderingContext. So maybe we can just make GraphicsContext behave more like GraphicsContext3D to solve this problem. It would just be a matter of initializing GraphicsContext to have its own ImageBuffer (conceptually) which gets composited with some sort of paint call(s). Today WebGLRenderingContext works with both accelerated and non-accelerated compositing models, so it should be possible to do the same with the 2D Canvas.
&gt; 
&gt; I think if you first focused on duplicating the WebGLRenderingContext compositing model in CanvasRenderingContext2D, I think it will be easier to make a GraphicsContext implementation on top of GLES2Context (whether directly or on top of GraphicsContext3D).

It would be nice to do so, but changing this ownership risks destabilizing the canvas implementation other ports, and (as you indicated) is orthogonal to the choice of rendering backend.  So I&apos;d prefer to deal with those two issues separately, if possible.

James is having some trouble getting the GraphicsContext3D implementation to work, so I&apos;m uploading another patch for your consideration.  This one removes the use of #if USE(GLES2_RENDERING)s by using an  AcceleratedGraphicsContext typedef in GraphicsContext.h, as I suggested.  It&apos;s typedef&apos;ed to an int for non-Chromium builds.  (I needed something that could be stored as an OwnPtr.  I originally made it a GraphicsContext3D, but I wasn&apos;t certain that every port has that class compiled in).

This does allow a GraphicsContext3D implementation for other ports while allowing us to move forward with what we have. Let me know what you think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260047</commentid>
    <comment_count>19</comment_count>
      <attachid>63456</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-08-04 09:09:19 -0700</bug_when>
    <thetext>Created attachment 63456
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260076</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-04 10:08:06 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt;...
&gt; &gt; I think if you first focused on duplicating the WebGLRenderingContext compositing model in CanvasRenderingContext2D, I think it will be easier to make a GraphicsContext implementation on top of GLES2Context (whether directly or on top of GraphicsContext3D).
&gt; 
&gt; It would be nice to do so, but changing this ownership risks destabilizing the canvas implementation other ports, and (as you indicated) is orthogonal to the choice of rendering backend.  So I&apos;d prefer to deal with those two issues separately, if possible.

Yes, I see your point. I like the approach of your latest patch. But I wonder if we could go one step further. Maybe we should be using GraphicsContext directly at all. Instead of an AcceleratedGraphicsContext, what if you made it a GraphicsContext2D (I know that naming is confusing, but you know what I mean). One implementation can use GraphicsContext like today and another can use your GLES2Context. Then you can put all the stuff in ifdefs down in that platform specific class. That would avoid destablilizing GraphicsContext but would keep ifdefs out of CanvasRenderingContext2D.

&gt; 
&gt; James is having some trouble getting the GraphicsContext3D implementation to work, so I&apos;m uploading another patch for your consideration.  This one removes the use of #if USE(GLES2_RENDERING)s by using an  AcceleratedGraphicsContext typedef in GraphicsContext.h, as I suggested.  It&apos;s typedef&apos;ed to an int for non-Chromium builds.  (I needed something that could be stored as an OwnPtr.  I originally made it a GraphicsContext3D, but I wasn&apos;t certain that every port has that class compiled in).
&gt; 
&gt; This does allow a GraphicsContext3D implementation for other ports while allowing us to move forward with what we have. Let me know what you think.

Yes, I think we are close. Let me know what you think about a new GraphicsContext2D class.

As far as naming goes, I think we could name it GraphicsRenderer2D, and later rename GraphicsContext3D to GraphicsRenderer3D, or something like that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260077</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-04 10:08:55 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; ...
&gt; Yes, I see your point. I like the approach of your latest patch. But I wonder if we could go one step further. Maybe we should be using GraphicsContext directly at all. ...

I mean, maybe we should NOT be using GraphicsContext directly!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260104</commentid>
    <comment_count>22</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-08-04 11:06:03 -0700</bug_when>
    <thetext>(In reply to comment #20)

&gt; Yes, I see your point. I like the approach of your latest patch. But I wonder if we could go one step further. Maybe we should be using GraphicsContext directly at all. Instead of an AcceleratedGraphicsContext, what if you made it a GraphicsContext2D (I know that naming is confusing, but you know what I mean). One implementation can use GraphicsContext like today and another can use your GLES2Context. Then you can put all the stuff in ifdefs down in that platform specific class. That would avoid destablilizing GraphicsContext but would keep ifdefs out of CanvasRenderingContext2D.

I&apos;m not sure I understand.  If you get a sec, could you come on #webkit and explain further?

One problem with changing the name specifically for 2D canvas is that longer term, I was hoping to reuse my switchable GraphicsContext elswhere in WebKit, where replacing it in many places with GraphicsContext2D would seem to be somewhat intrusive to the other ports.

&gt; &gt; This does allow a GraphicsContext3D implementation for other ports while allowing us to move forward with what we have. Let me know what you think.
&gt; 
&gt; Yes, I think we are close. Let me know what you think about a new GraphicsContext2D class.
&gt; 
&gt; As far as naming goes, I think we could name it GraphicsRenderer2D, and later rename GraphicsContext3D to GraphicsRenderer3D, or something like that?

Long-term, I was thinking that GraphicsContext would remain the interface for 2D operations, to be most compatible and familiar with the rest of WebKit, and GraphicsContext3D could remain the interface for accelerated renderering.  If it were renamed, perhaps *it* should be called AcceleratedGraphicsContext (to reflect its dimension-neutral status) and my new type named something else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260402</commentid>
    <comment_count>23</comment_count>
      <attachid>63552</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-04 22:29:43 -0700</bug_when>
    <thetext>Created attachment 63552
Current canvas class hierarchy

You can view this diagram here: http://www.diagrammr.com/edit?key=dUgOmTbViyZ (note that editing this edits the live diagram, I dunno how to copy using this tool)

This is a diagram of the class hierarchy and draw paths that currently exist, so it&apos;s easier to tell what proposals are changing.  The draw path for 2d calls is:

JavaScript -&gt; CanvasRenderingContext2D -&gt; GraphicsContext (owned by the HTMLCanvasElement&apos;s ImageBuffer) -&gt; CoreGraphics, Skia, Qt, what have you

The WebGL rendering path is pretty much completely orthogonal to the 2d path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260407</commentid>
    <comment_count>24</comment_count>
      <attachid>63554</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-04 22:41:20 -0700</bug_when>
    <thetext>Created attachment 63554
Chris&apos; proposal

This is (I believe) what Chris Marrin&apos;s proposal looks like.  Please correct me if I&apos;ve got something wrong.  You can view (and edit) the diagram here: http://www.diagrammr.com/edit?key=dNxSHIjTGvL.

The idea here is that a new rendering API called (tentatively) GraphicsPainter.  The 2d and 3d canvas rendering contexts issue draw commands at the 2d and 3d versions of GraphicsPainter, respectively.  GraphicsPainter2D exposes the set of draw calls needed by CanvasRenderingContext2D and is capable of using either a software GraphicsContext or an accelerated API as needed.  The GraphicsPainter2D owns the ImageBuffer in this scenario, in contrast to the current situation where the ImageBuffer is owned by the HTMLCanvasElement and can get reset many times during the life of a CanvasRenderingContext2D.

One thing I left out of this diagram is exactly how GraphicsPainter2D makes calls to the platform&apos;s GPU, but this would happen either by using GraphicsPainter3D or some piece of common infrastructure.

The call path for 2d draw calls in this scenario would be:

JavaScript -&gt; CanvasRenderingContext2D -&gt; GraphicsPainter2D
at this point it can go either:
GraphicsPainter2D -&gt; GraphicsContext -&gt; CoreGraphics, Skia, Qt, etc
or
GraphicsPainter2D -&gt; &lt;some GPU abstraction layer&gt; -&gt; OpenGL

I&apos;ll talk about the pros and cons of this approach in my opinion in a moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260416</commentid>
    <comment_count>25</comment_count>
      <attachid>63557</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-04 23:10:38 -0700</bug_when>
    <thetext>Created attachment 63557
another proposal, switching at platform layer

Here&apos;s another possibility that switches at the platform context layer, just below GraphicsContext.  This is roughly how Stephen and I have been building out prototypes.

The key difference is that the decision about whether to accelerate or not is made at the platform context layer.  CanvasRenderingContext2D still issues draws calls to GraphicsContext:

JavaScript -&gt; CanvasRenderingContext2D -&gt; GraphicsContext -&gt; platform context
and then either:
platform context -&gt; GraphicsContext3D -&gt; OpenGL flavor, etc
or:
platform context -&gt; CoreGraphics, Skia, Qt, etc

The CanvasRenderingContext2D holds the GraphicsContext3D alive and passes it down to the platform context layer whenever the ImageBuffer is reset.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260422</commentid>
    <comment_count>26</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-04 23:27:45 -0700</bug_when>
    <thetext>There&apos;s an issue with each of the previous two diagrams that I think is pretty basic.  If the switching is done above the GraphicsContext layer (as in Chris&apos; proposal), then the work can&apos;t be reused by any other rendering paths that expect a GraphicsContext interface.  However, if the switching is done below the GraphicsContext layer (as in the latter proposal) then the work becomes inherently platform specific.

I personally feel that while we&apos;re working on bringing something up that works at all it&apos;s better to push the added complexity into a subset of platforms and then once we have some code that is getting more useful and stable expanding it out to all platforms.  This seems to be the pattern followed by similar features in the past, for example accelerated compositing.

In both cases, however, we end up with a bit of code that accepts a set of platform-agnostic 2d drawing commands (like fillRect) and outputs a series of calls to some cross-platform accelerated calls.  It&apos;d be great if we could just use this piece of software for canvas 2d and have the option of using it everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260427</commentid>
    <comment_count>27</comment_count>
      <attachid>63559</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-04 23:47:42 -0700</bug_when>
    <thetext>Created attachment 63559
virtual GraphicsContext proposal

This one&apos;s perhaps a bit out there but it is one way that we could have a cross-platform interface usable everywhere.  If GraphicContext calls were virtual then we could write a GraphicsContextAccelerated class that could implement draw commands via GraphicsContext3D or by deferring to the GraphicsContextCG / GraphicsContextSkia / GraphicsContextQt software implementation.  This could be used anywhere that GraphicsContext is expected now.

This way is more intrusive than the other proposals but IMHO the cleanest overall.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260630</commentid>
    <comment_count>28</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-05 08:40:10 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; There&apos;s an issue with each of the previous two diagrams that I think is pretty basic.  If the switching is done above the GraphicsContext layer (as in Chris&apos; proposal), then the work can&apos;t be reused by any other rendering paths that expect a GraphicsContext interface.  However, if the switching is done below the GraphicsContext layer (as in the latter proposal) then the work becomes inherently platform specific.

All of your diagrams still have ImageBuffer owned by HTMLCanvasElement, which I what we have today. I think this is the biggest problem. ImageBuffer is never used by WebGLRenderingContext. It is an artifact of the software rendering orientation of the current system. 

&gt; 
&gt; I personally feel that while we&apos;re working on bringing something up that works at all it&apos;s better to push the added complexity into a subset of platforms and then once we have some code that is getting more useful and stable expanding it out to all platforms.  This seems to be the pattern followed by similar features in the past, for example accelerated compositing.

Right. That&apos;s my reason for the whole GraphicsPainter hierarchy. HTMLCanvasElement and CanvasRenderingContext2D would no longer use GraphicsContext or ImageBuffer. Those would be buried behind  the GraphicsPainter2D, which is a platform specific interface which has the same API as GraphicsContext. But it does the switching between HW and SW rendering and HW and SW compositing. Actually all those decisions are in the base class, GraphicsPainter.

&gt; 
&gt; In both cases, however, we end up with a bit of code that accepts a set of platform-agnostic 2d drawing commands (like fillRect) and outputs a series of calls to some cross-platform accelerated calls.  It&apos;d be great if we could just use this piece of software for canvas 2d and have the option of using it everywhere.

Right. If we make the new classes, they can take the place of GraphicsContext in Canvas 2D and later in other places in the system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260632</commentid>
    <comment_count>29</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-05 08:43:05 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Created an attachment (id=63554) [details]
&gt; Chris&apos; proposal
&gt; 
&gt; This is (I believe) what Chris Marrin&apos;s proposal looks like.  Please correct me if I&apos;ve got something wrong.  You can view (and edit) the diagram here: http://www.diagrammr.com/edit?key=dNxSHIjTGvL.

This is close. In my proposal the PlatformLayer is owned by the base class GraphicsPainter since it is (optionally) needed for both 2D and 3D rendering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260633</commentid>
    <comment_count>30</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-05 08:44:27 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (In reply to comment #24)
&gt; &gt; Created an attachment (id=63554) [details] [details]
&gt; &gt; Chris&apos; proposal
&gt; &gt; 
&gt; &gt; This is (I believe) what Chris Marrin&apos;s proposal looks like.  Please correct me if I&apos;ve got something wrong.  You can view (and edit) the diagram here: http://www.diagrammr.com/edit?key=dNxSHIjTGvL.
&gt; 
&gt; This is close. In my proposal the PlatformLayer is owned by the base class GraphicsPainter since it is (optionally) needed for both 2D and 3D rendering.

And when I say &quot;owned by&quot; I mean it is exposed to the outside (e.g., RenderLayerBacking) through GraphicsPainter. It may be (and probably would be) created by the specific subclasses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260716</commentid>
    <comment_count>31</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-05 11:24:24 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #26)
&gt; &gt; There&apos;s an issue with each of the previous two diagrams that I think is pretty basic.  If the switching is done above the GraphicsContext layer (as in Chris&apos; proposal), then the work can&apos;t be reused by any other rendering paths that expect a GraphicsContext interface.  However, if the switching is done below the GraphicsContext layer (as in the latter proposal) then the work becomes inherently platform specific.
&gt; 
&gt; All of your diagrams still have ImageBuffer owned by HTMLCanvasElement, which I what we have today. I think this is the biggest problem. ImageBuffer is never used by WebGLRenderingContext. It is an artifact of the software rendering orientation of the current system. 

This isn&apos;t quite true - the canvas&apos; ImageBuffer is used by all types of canvas (2d, WebGL, and canvas elements that don&apos;t yet have a rendering context) to support drawImage(HTMLCanvasElement, ...).  We could write special-case code for each type of canvas 

&gt; 
&gt; &gt; 
&gt; &gt; I personally feel that while we&apos;re working on bringing something up that works at all it&apos;s better to push the added complexity into a subset of platforms and then once we have some code that is getting more useful and stable expanding it out to all platforms.  This seems to be the pattern followed by similar features in the past, for example accelerated compositing.
&gt; 
&gt; Right. That&apos;s my reason for the whole GraphicsPainter hierarchy. HTMLCanvasElement and CanvasRenderingContext2D would no longer use GraphicsContext or ImageBuffer. Those would be buried behind  the GraphicsPainter2D, which is a platform specific interface which has the same API as GraphicsContext. But it does the switching between HW and SW rendering and HW and SW compositing. Actually all those decisions are in the base class, GraphicsPainter.
&gt; 
&gt; &gt; 
&gt; &gt; In both cases, however, we end up with a bit of code that accepts a set of platform-agnostic 2d drawing commands (like fillRect) and outputs a series of calls to some cross-platform accelerated calls.  It&apos;d be great if we could just use this piece of software for canvas 2d and have the option of using it everywhere.
&gt; 
&gt; Right. If we make the new classes, they can take the place of GraphicsContext in Canvas 2D and later in other places in the system.

I&apos;m not sure how to reuse this code easily if it doesn&apos;t actually implement the GraphicsContext interface (either directly or indirectly).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260725</commentid>
    <comment_count>32</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-05 11:31:13 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; ...
&gt; &gt; All of your diagrams still have ImageBuffer owned by HTMLCanvasElement, which I what we have today. I think this is the biggest problem. ImageBuffer is never used by WebGLRenderingContext. It is an artifact of the software rendering orientation of the current system. 
&gt; 
&gt; This isn&apos;t quite true - the canvas&apos; ImageBuffer is used by all types of canvas (2d, WebGL, and canvas elements that don&apos;t yet have a rendering context) to support drawImage(HTMLCanvasElement, ...).  We could write special-case code for each type of canvas 

And this is why trying to use a WebGL canvas as a source for drawImage doesn&apos;t work. The assumptions made by the system  that ImageBuffer always contains the correct bits is wrong. The better model would be to have the bits owned by the GraphicsPainter subclasses and made available as the result of a function call. 

&gt; 
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; I personally feel that while we&apos;re working on bringing something up that works at all it&apos;s better to push the added complexity into a subset of platforms and then once we have some code that is getting more useful and stable expanding it out to all platforms.  This seems to be the pattern followed by similar features in the past, for example accelerated compositing.
&gt; &gt; 
&gt; &gt; Right. That&apos;s my reason for the whole GraphicsPainter hierarchy. HTMLCanvasElement and CanvasRenderingContext2D would no longer use GraphicsContext or ImageBuffer. Those would be buried behind  the GraphicsPainter2D, which is a platform specific interface which has the same API as GraphicsContext. But it does the switching between HW and SW rendering and HW and SW compositing. Actually all those decisions are in the base class, GraphicsPainter.
&gt; &gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; In both cases, however, we end up with a bit of code that accepts a set of platform-agnostic 2d drawing commands (like fillRect) and outputs a series of calls to some cross-platform accelerated calls.  It&apos;d be great if we could just use this piece of software for canvas 2d and have the option of using it everywhere.
&gt; &gt; 
&gt; &gt; Right. If we make the new classes, they can take the place of GraphicsContext in Canvas 2D and later in other places in the system.
&gt; 
&gt; I&apos;m not sure how to reuse this code easily if it doesn&apos;t actually implement the GraphicsContext interface (either directly or indirectly).

Right. I stated above that GraphicsPainter2D would have the same API (as far as drawing calls go) as GraphicsContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260731</commentid>
    <comment_count>33</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-05 11:39:31 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #31)
&gt; &gt; ...
&gt; &gt; &gt; All of your diagrams still have ImageBuffer owned by HTMLCanvasElement, which I what we have today. I think this is the biggest problem. ImageBuffer is never used by WebGLRenderingContext. It is an artifact of the software rendering orientation of the current system. 
&gt; &gt; 
&gt; &gt; This isn&apos;t quite true - the canvas&apos; ImageBuffer is used by all types of canvas (2d, WebGL, and canvas elements that don&apos;t yet have a rendering context) to support drawImage(HTMLCanvasElement, ...).  We could write special-case code for each type of canvas 
&gt; 
&gt; And this is why trying to use a WebGL canvas as a source for drawImage doesn&apos;t work. The assumptions made by the system  that ImageBuffer always contains the correct bits is wrong. The better model would be to have the bits owned by the GraphicsPainter subclasses and made available as the result of a function call. 

Using a WebGL canvas as the source for drawImage() has worked properly for a few weeks now (since http://trac.webkit.org/changeset/63502).    The design of how this works could be changed but I think that&apos;s getting a little bit away from the current topic.

&gt; &gt; &gt; &gt; In both cases, however, we end up with a bit of code that accepts a set of platform-agnostic 2d drawing commands (like fillRect) and outputs a series of calls to some cross-platform accelerated calls.  It&apos;d be great if we could just use this piece of software for canvas 2d and have the option of using it everywhere.
&gt; &gt; &gt; 
&gt; &gt; &gt; Right. If we make the new classes, they can take the place of GraphicsContext in Canvas 2D and later in other places in the system.
&gt; &gt; 
&gt; &gt; I&apos;m not sure how to reuse this code easily if it doesn&apos;t actually implement the GraphicsContext interface (either directly or indirectly).
&gt; 
&gt; Right. I stated above that GraphicsPainter2D would have the same API (as far as drawing calls go) as GraphicsContext.

Sure, but we couldn&apos;t actually pass a GraphicsPainter2D object to code that expects a GraphicsContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260751</commentid>
    <comment_count>34</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2010-08-05 11:59:55 -0700</bug_when>
    <thetext>IMHO, restructuring canvas2D, including the software path, is out-of-scope for this work, due in part to the risk of destabilizing other ports.

Since James has made great strides in re-implementing our stuff on top of GraphicsContext3D, which was the source of your original objection, could we consider that work on its own merits (patch to be uploaded soon, I believe), and look at the restructuring as a separate issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260806</commentid>
    <comment_count>35</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-05 13:30:13 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; IMHO, restructuring canvas2D, including the software path, is out-of-scope for this work, due in part to the risk of destabilizing other ports.
&gt; 
&gt; Since James has made great strides in re-implementing our stuff on top of GraphicsContext3D, which was the source of your original objection, could we consider that work on its own merits (patch to be uploaded soon, I believe), and look at the restructuring as a separate issue?

Sure. I look forward to seeing the patch. But now that you&apos;ve opened this can of worms (something you&apos;ll come to regret, I&apos;m sure :-) I now feel compelled to do the restructuring to make 2D canvas work like 3D. I&apos;ll open a bug to this effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261092</commentid>
    <comment_count>36</comment_count>
      <attachid>63692</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-05 22:16:46 -0700</bug_when>
    <thetext>Created attachment 63692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261093</commentid>
    <comment_count>37</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-05 22:20:45 -0700</bug_when>
    <thetext>New patch attached using GraphicsContext3D as the base rendering primitive.  It follows the approach described in comment #25.

It sounds like we agree we want to change around how canvas works, but aren&apos;t entirely sure of how.  I think this patch includes many good properties that we definitely agree on (common interactions with the compositor, no dependency on specific OpenGL, and no risk of destabilizing how software canvases work).  I&apos;m excited about cleaning up the canvas software path as well but would also really like to land this patch so that folks can work on making the accelerated path fast in parallel to the software restructuring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261276</commentid>
    <comment_count>38</comment_count>
      <attachid>63692</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-06 09:00:05 -0700</bug_when>
    <thetext>Comment on attachment 63692
Patch

&gt; diff --git a/WebCore/html/canvas/CanvasRenderingContext2D.cpp b/WebCore/html/canvas/CanvasRenderingContext2D.cpp

&gt; @@ -100,6 +106,9 @@ CanvasRenderingContext2D::CanvasRenderingContext2D(HTMLCanvasElement* canvas, bo
&gt;  #if ENABLE(DASHBOARD_SUPPORT)
&gt;      , m_usesDashboardCompatibilityMode(usesDashboardCompatibilityMode)
&gt;  #endif
&gt; +#if ENABLE(ACCELERATED_2D_CANVAS)
&gt; +    , m_context3D(0)
&gt; +#endif
&gt;  {
&gt;  #if !ENABLE(DASHBOARD_SUPPORT)
&gt;      ASSERT_UNUSED(usesDashboardCompatibilityMode, !usesDashboardCompatibilityMode);
&gt; @@ -108,6 +117,21 @@ CanvasRenderingContext2D::CanvasRenderingContext2D(HTMLCanvasElement* canvas, bo
&gt;      // Make sure that even if the drawingContext() has a different default
&gt;      // thickness, it is in sync with the canvas thickness.
&gt;      setLineWidth(lineWidth());
&gt; +
&gt; +#if ENABLE(ACCELERATED_2D_CANVAS)
&gt; +    if (Page* p = canvas-&gt;document()-&gt;page()) {
&gt; +        if (p-&gt;settings()-&gt;accelerated2dCanvasEnabled()) {
&gt; +            GraphicsContext3D::Attributes attr;
&gt; +            attr.stencil = true;
&gt; +            HostWindow* hostWindow = canvas-&gt;document()-&gt;view()-&gt;root()-&gt;hostWindow();
&gt; +            // Set up our context
&gt; +            m_context3D = GraphicsContext3D::create(attr, hostWindow);
&gt; +            if (m_context3D)
&gt; +                if (GraphicsContext* c = drawingContext())
&gt; +                    c-&gt;platformContext()-&gt;setGraphicsContext3D(m_context3D.get(), IntSize(canvas-&gt;width(), canvas-&gt;height()));
&gt; +        }
&gt; +    }
&gt; +#endif

Wow, so you access page() and hostWindow() in this method. Are you sure that you don&apos;t need any null checking for canvas-&gt;document()-&gt;view()-&gt;root() ?
Does this work for CSS canvases?

It would be nice to find a cleaner way to do this, that doesn&apos;t require access to hostWindow.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261330</commentid>
    <comment_count>39</comment_count>
      <attachid>63692</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-06 10:22:20 -0700</bug_when>
    <thetext>Comment on attachment 63692
Patch

WebCore/html/canvas/CanvasRenderingContext2D.cpp:134
 +  #endif


Having a setGraphicsContext3D method on the platformContext seems wrong. PlatformGraphicsContext is a platform specific class which often isn&apos;t even a C++ class. I think it would be better to just add setGraphicsContext3D() to GraphicsContext itself and have the platform specific code do what it needs to do. This will also allow the default implementation of setGraphicsContext3D to have a compile-time failure so builders will get an indication that in addition to enabling ACCELERATED_2D_CANVAS you need to implement for it in GraphicsContext.



WebCore/html/canvas/CanvasRenderingContext2D.cpp:151
 +  #endif


Why aren&apos;t you doing the accelerated2dCanvasEnabled() test here like above?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261354</commentid>
    <comment_count>40</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-06 11:00:45 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; (From update of attachment 63692 [details])
&gt; &gt; diff --git a/WebCore/html/canvas/CanvasRenderingContext2D.cpp b/WebCore/html/canvas/CanvasRenderingContext2D.cpp
&gt; 
&gt; 
&gt; Wow, so you access page() and hostWindow() in this method. Are you sure that you don&apos;t need any null checking for canvas-&gt;document()-&gt;view()-&gt;root() ?

I&apos;ll check if I need null checks.  Unfortunately this is the way you create GraphicsContext3Ds today.

&gt; Does this work for CSS canvases?

I don&apos;t think so, probably for the same reason as WebGL.

&gt; 
&gt; It would be nice to find a cleaner way to do this, that doesn&apos;t require access to hostWindow.

Agreed.

&gt; 
&gt; r=me

(In reply to comment #39)
&gt; (From update of attachment 63692 [details])
&gt; WebCore/html/canvas/CanvasRenderingContext2D.cpp:134
&gt;  +  #endif
&gt; 
&gt; 
&gt; Having a setGraphicsContext3D method on the platformContext seems wrong. PlatformGraphicsContext is a platform specific class which often isn&apos;t even a C++ class. I think it would be better to just add setGraphicsContext3D() to GraphicsContext itself and have the platform specific code do what it needs to do. This will also allow the default implementation of setGraphicsContext3D to have a compile-time failure so builders will get an indication that in addition to enabling ACCELERATED_2D_CANVAS you need to implement for it in GraphicsContext.

I can move it down - I agree it makes more sense on GraphicsContext.

&gt; 
&gt; 
&gt; 
&gt; WebCore/html/canvas/CanvasRenderingContext2D.cpp:151
&gt;  +  #endif
&gt; 
&gt; 
&gt; Why aren&apos;t you doing the accelerated2dCanvasEnabled() test here like above?

Do you mean in reset()?  The invariant I&apos;m using is that m_context3D will always be 0 if accelerated 2d canvas is not enabled, so outside of the constructor I don&apos;t have to walk back up to the Page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261362</commentid>
    <comment_count>41</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-06 11:10:00 -0700</bug_when>
    <thetext>&gt; 
&gt; &gt; Does this work for CSS canvases?
&gt; 
&gt; I don&apos;t think so, probably for the same reason as WebGL.
&gt; 

Looking more closely I think this should work fine for CSS canvases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261373</commentid>
    <comment_count>42</comment_count>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2010-08-06 11:40:50 -0700</bug_when>
    <thetext>&gt; (In reply to comment #39)
&gt; ...
&gt; &gt; Why aren&apos;t you doing the accelerated2dCanvasEnabled() test here like above?
&gt; 
&gt; Do you mean in reset()?  The invariant I&apos;m using is that m_context3D will always be 0 if accelerated 2d canvas is not enabled, so outside of the constructor I don&apos;t have to walk back up to the Page.

Yes, of course, that makes sense. Never mind. And sorry about having insufficient context in my comments...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261538</commentid>
    <comment_count>43</comment_count>
      <attachid>63776</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-06 15:59:34 -0700</bug_when>
    <thetext>Created attachment 63776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261543</commentid>
    <comment_count>44</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-06 16:06:00 -0700</bug_when>
    <thetext>I added extra NULL checks in the GraphicsContext3D initialization path.  Looking at WebGL it seems that they don&apos;t have these checks (http://trac.webkit.org/browser/trunk/WebCore/html/canvas/WebGLRenderingContext.cpp#L84) but that seems wrong.  I want to clean up the GraphicsContext3D initialization a bit (using HostWindow* seems odd) but that feels like another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261544</commentid>
    <comment_count>45</comment_count>
      <attachid>63778</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-06 16:07:55 -0700</bug_when>
    <thetext>Created attachment 63778
add missing UNUSED_PARAM()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261548</commentid>
    <comment_count>46</comment_count>
      <attachid>63778</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-06 16:11:32 -0700</bug_when>
    <thetext>Comment on attachment 63778
add missing UNUSED_PARAM()


&gt; +#if ENABLE(ACCELERATED_2D_CANVAS)
&gt; +    if (Page* p = canvas-&gt;document()-&gt;page()) {
&gt; +        if (p-&gt;settings()-&gt;accelerated2dCanvasEnabled()) {
&gt; +            if (FrameView* view = canvas-&gt;document()-&gt;view()) {
&gt; +                if (ScrollView* rootView = view-&gt;root()) {
&gt; +                    if (HostWindow* hostWindow = view-&gt;root()-&gt;hostWindow()) {
&gt; +                        // Set up our context
&gt; +                        GraphicsContext3D::Attributes attr;
&gt; +                        attr.stencil = true;
&gt; +                        m_context3D = GraphicsContext3D::create(attr, hostWindow);
&gt; +                        if (m_context3D)
&gt; +                            if (GraphicsContext* c = drawingContext())
&gt; +                                c-&gt;setGraphicsContext3D(m_context3D.get(), IntSize(canvas-&gt;width(), canvas-&gt;height()));
&gt; +                    }
&gt; +                }
&gt; +            }
&gt; +        }
&gt; +    }

Some early returns would help with readability here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261556</commentid>
    <comment_count>47</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-06 16:28:43 -0700</bug_when>
    <thetext>Thanks for the review.  I added some early returns, I&apos;ll shorten this up in a follow-up (GraphicsContext3D::create() could take a Page* instead of a HostWindow*).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261560</commentid>
    <comment_count>48</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-08-06 16:30:27 -0700</bug_when>
    <thetext>Committed r64881: &lt;http://trac.webkit.org/changeset/64881&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63227</attachid>
            <date>2010-08-02 10:12:25 -0700</date>
            <delta_ts>2010-08-04 09:09:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43362-20100802101224.patch</filename>
            <type>text/plain</type>
            <size>15962</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmM3NWQxOGQ4OTdiMDY1OGJjMTQwZmMwNmI1MzQyYWI2NTM2OWYxMS4uNWZjY2E4OGM3NTFkNmU3
MmVkZTZlOTY0MWI5YzY0MDgzYmY5YWYyYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMC0wOC0wMiAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY2VsZXJhdGVkIDJkIGNhbnZhc2VzIHNob3Vs
ZCBnZXQgY29tcG9zaXRpbmcgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MzM2MgorCisgICAgICAgIEdpdmVzIDJkIGNhbnZhc2VzIHRoYXQg
YXJlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGxheWVycyBhbmQgdW5pZmllcworICAgICAgICBz
b21lIG9mIHRoZSByZXBhaW50aW5nIGxvZ2ljIGJldHdlZW4gV2ViR0wgYW5kIDJkIGNhbnZhc2Vz
LiAgQnkgaXRzZWxmLAorICAgICAgICB0aGlzIHBhdGNoIGlzIG9ubHkgaW5mcmFzdHJ1Y3R1cmUg
LSBpdCBkb2VzIG5vdCBhY3R1YWxseSBjcmVhdGUgYQorICAgICAgICBQbGF0Zm9ybUxheWVyIGZv
ciAyZCBjYW52YXNlcy4gIFRoYXQgd2lsbCBiZSBkb25lIGluIHBvcnQtc3BlY2lmaWMgcGF0Y2hl
cy4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28gdGllcyAyZCBhY2NlbGVyYXRlZCBjYW52YXMg
ZGlyZWN0bHkgdG8gT3BlbkdMIEVTIDIuMC4gIFRoaXMKKyAgICAgICAgaXMgdGVtcG9yYXJ5LCBh
ZnRlciBidWcgNDMyMjEgaXMgYWRkcmVzc2VkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB3aWxs
IHVzZQorICAgICAgICBHcmFwaGljc0NvbnRleHQzRCBhcyB0aGUgQVBJIHRvIHRoZSBncmFwaGlj
cyBjYXJkLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBiZWhhdmlvciwgbm8gbmV3IHRlc3RzLiAg
V2ViR0wgY2hhbmdlcyB2ZXJpZmllZCB3aXRoIGV4aXN0aW5nIFdlYkdMIHRlc3RzLgorCisgICAg
ICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFz
RWxlbWVudDo6d2lsbERyYXcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6
OmlzMkQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6Om1ha2VSZW5kZXJp
bmdSZXN1bHRzQXZhaWxhYmxlKToKKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9DYW52YXMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6aXNBY2NlbGVyYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OndpbGxEcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpnbGVzMkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyk6CisgICAg
ICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6c2V0Q29udGVudHNUb0FjY2VsZXJhdGVkMkRDYW52YXMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXMyRENh
bnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBo
aWNzTGF5ZXJDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFj
a2luZzo6Y29udGFpbnNQYWludGVkQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OnJlbmRlcmVyQ29udGVudENoYW5nZWQpOgorCiAyMDEwLTA3LTMwICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBL
aWx6ZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcAppbmRleCA2YjVhM2EzYzVmOTM0ODJh
YjdiMmEwYzE2MWQ5MWFlYjM0MTNlZWE5Li4xNjc1MjAzMTk2NjY2Y2U1NzIwZTg2YTcwMGU2NWY0
ZTU5ODI2NDE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTE2OSw2ICsxNjks
MTIgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogSFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRl
eHQoY29uc3QgU3RyaW5nJiB0eXBlLCBDYW52YXMKICAgICAgICAgICAgICAgICB1c2VzRGFzaGJh
cmRDb21wYXRpYmlsaXR5TW9kZSA9IHNldHRpbmdzLT51c2VzRGFzaGJvYXJkQmFja3dhcmRDb21w
YXRpYmlsaXR5TW9kZSgpOwogI2VuZGlmCiAgICAgICAgICAgICBtX2NvbnRleHQgPSBuZXcgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEKHRoaXMsIGRvY3VtZW50KCktPmluQ29tcGF0TW9kZSgpLCB1
c2VzRGFzaGJhcmRDb21wYXRpYmlsaXR5TW9kZSk7CisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJE
X0NBTlZBUykgJiYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICAgICAgICAgaWYg
KG1fY29udGV4dCkgeworICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gbWFrZSBzdXJlIGEgUmVu
ZGVyTGF5ZXIgYW5kIGNvbXBvc2l0aW5nIGxheWVyIGdldCBjcmVhdGVkIGZvciB0aGUgQ2FudmFz
CisgICAgICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5n
ZSk7CisgICAgICAgICAgICB9CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbV9j
b250ZXh0LmdldCgpOwogICAgIH0KQEAgLTIxNiw3ICsyMjIsNyBAQCB2b2lkIEhUTUxDYW52YXNF
bGVtZW50Ojp3aWxsRHJhdyhjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIG1fZGlydHlS
ZWN0LnVuaXRlKHIpOwogICAgICAgICByby0+cmVwYWludFJlY3RhbmdsZShlbmNsb3NpbmdJbnRS
ZWN0KG1fZGlydHlSZWN0KSk7CiAgICAgfQotICAgIAorCiAgICAgaWYgKG1fb2JzZXJ2ZXIpCiAg
ICAgICAgIG1fb2JzZXJ2ZXItPmNhbnZhc0NoYW5nZWQodGhpcywgcmVjdCk7CiB9CkBAIC0yOTcs
MTQgKzMwMywxNSBAQCBib29sIEhUTUxDYW52YXNFbGVtZW50OjppczNEKCkgY29uc3QKIH0KICNl
bmRpZgogCitib29sIEhUTUxDYW52YXNFbGVtZW50OjppczJEKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jb250ZXh0ICYmIG1fY29udGV4dC0+aXMyZCgpOworfQorCiB2b2lkIEhUTUxDYW52YXNF
bGVtZW50OjptYWtlUmVuZGVyaW5nUmVzdWx0c0F2YWlsYWJsZSgpCiB7Ci0jaWYgRU5BQkxFKDNE
X0NBTlZBUykKLSAgICBpZiAoaXMzRCgpKSB7Ci0gICAgICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4
dCogY29udGV4dDNkID0gcmVpbnRlcnByZXRfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihy
ZW5kZXJpbmdDb250ZXh0KCkpOwotICAgICAgICBjb250ZXh0M2QtPnBhaW50UmVuZGVyaW5nUmVz
dWx0c1RvQ2FudmFzKCk7Ci0gICAgfQotI2VuZGlmCisgICAgaWYgKG1fY29udGV4dCkKKyAgICAg
ICAgbV9jb250ZXh0LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpOwogfQogCiB2b2lk
IEhUTUxDYW52YXNFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2UpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5oCmluZGV4IGIyMjIwMDc2N2YxZDc3OTYyZWEwZTAzMGY1NDExOWQ1
MThmYzEyYTAuLjliNmRkM2U5Y2UzOWU2ZTg2M2Q0MzRkODJlYWY1MjIzNDY3ZGRhODUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5oCkBAIC0xMTAsNiArMTEwLDggQEAgcHVibGljOgogICAgIGJv
b2wgaXMzRCgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICBib29sIGlzMkQoKSBjb25zdDsKKwogICAg
IHZvaWQgbWFrZVJlbmRlcmluZ1Jlc3VsdHNBdmFpbGFibGUoKTsKIAogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggMmVlMTY5Mzhm
NzgyOGM5Nzc3OGU0ZTRjYjQxODcwOTAxZjNhOTlkOC4uMzA5MTJmMTViZjllMTI1NWVjYThkMzE2
YTRhZjFkOWQwMTNkNjNmNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0LmgKQEAgLTQ4LDYgKzQ4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXMzZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAg
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKSB7fQorCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgSFRNTENhbnZhc0VsZW1lbnQqIG1fY2FudmFzOwogICAgIH07
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAK
aW5kZXggNmMzZDM3MmU2NmNjYjdlM2Y2OTEyNTk2YjFmMGVhNjI5MGJmOGEzZi4uZjRlMjA3ZWYy
YTgwMDQ1YWMwZDY3OWJkNzk3YjNmMzBiMzU1Yjg4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtNTgsNyArNTgsMTcgQEAKICNp
bmNsdWRlICJTdHJva2VTdHlsZUFwcGxpZXIuaCIKICNpbmNsdWRlICJUZXh0TWV0cmljcy5oIgog
Ci0jaW5jbHVkZSA8c3RkaW8uaD4KKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAm
JiBVU0UoR0xFUzJfUkVOREVSSU5HKQorI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkNo
cm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkdMRVMyQ29udGV4dC5oIgorI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQorI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIgLy8gRklYTUU6IHRoaXMgaXMg
b2RkLCBidXQgd2UgbmVlZCBpdCB0byBpbml0aWFsaXplIGEgUmVmUHRyPFBsYXRmb3JtTGF5ZXI+
CisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvQnl0ZUFycmF5Lmg+CiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTEwMCw2ICsxMTAsMTIgQEAgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQoSFRNTENhbnZhc0VsZW1l
bnQqIGNhbnZhcywgYm8KICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgLCBtX3Vz
ZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSh1c2VzRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1v
ZGUpCiAjZW5kaWYKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiBVU0UoR0xF
UzJfUkVOREVSSU5HKQorICAgICwgbV9nbGVzMkNvbnRleHQoMCkKKyNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCisgICAgLCBtX3BsYXRmb3JtTGF5ZXIoMCkKKyNlbmRpZgorI2VuZGlm
CiB7CiAjaWYgIUVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBBU1NFUlRfVU5VU0VEKHVz
ZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSwgIXVzZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5
TW9kZSk7CkBAIC0xMDgsNiArMTI0LDIwIEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMsIGJvCiAgICAg
Ly8gTWFrZSBzdXJlIHRoYXQgZXZlbiBpZiB0aGUgZHJhd2luZ0NvbnRleHQoKSBoYXMgYSBkaWZm
ZXJlbnQgZGVmYXVsdAogICAgIC8vIHRoaWNrbmVzcywgaXQgaXMgaW4gc3luYyB3aXRoIHRoZSBj
YW52YXMgdGhpY2tuZXNzLgogICAgIHNldExpbmVXaWR0aChsaW5lV2lkdGgoKSk7CisKKyNpZiBF
TkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiBVU0UoR0xFUzJfUkVOREVSSU5HKQorICAg
IGlmIChQYWdlKiBwID0gY2FudmFzLT5kb2N1bWVudCgpLT5wYWdlKCkpIHsKKyAgICAgICAgaWYg
KHAtPnNldHRpbmdzKCktPmFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKCkpIHsKKyAgICAgICAg
ICAgIC8vIFNldCB1cCBvdXIgY29udGV4dCBhbmQgbGF5ZXIKKyAgICAgICAgICAgIG1fZ2xlczJD
b250ZXh0ID0gcC0+Y2hyb21lKCktPmNsaWVudCgpLT5nZXRPZmZzY3JlZW5HTEVTMkNvbnRleHQo
KTsKKworICAgICAgICAgICAgaWYgKG1fZ2xlczJDb250ZXh0KSB7CisgICAgICAgICAgICAgICAg
aWYgKEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdDb250ZXh0KCkpCisgICAgICAgICAgICAg
ICAgICAgIGMtPnBsYXRmb3JtQ29udGV4dCgpLT5zZXRHTEVTMkNvbnRleHQobV9nbGVzMkNvbnRl
eHQuZ2V0KCksIEludFNpemUoY2FudmFzLT53aWR0aCgpLCBjYW52YXMtPmhlaWdodCgpKSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKIH0KIAogQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjp+Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKCkKQEAgLTExOSw2ICsxNDks
MjEgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnJlc2V0KCkKICAgICBtX3N0YXRl
U3RhY2sucmVzaXplKDEpOwogICAgIG1fc3RhdGVTdGFjay5maXJzdCgpID0gU3RhdGUoKTsKICAg
ICBtX3BhdGguY2xlYXIoKTsKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiBV
U0UoR0xFUzJfUkVOREVSSU5HKSAmJiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAg
aWYgKG1fZ2xlczJDb250ZXh0KSB7CisgICAgICAgIGlmIChHcmFwaGljc0NvbnRleHQqIGMgPSBk
cmF3aW5nQ29udGV4dCgpKQorICAgICAgICAgICAgYy0+cGxhdGZvcm1Db250ZXh0KCktPnNldEdM
RVMyQ29udGV4dChtX2dsZXMyQ29udGV4dC5nZXQoKSwgSW50U2l6ZShjYW52YXMoKS0+d2lkdGgo
KSwgY2FudmFzKCktPmhlaWdodCgpKSk7CisgICAgfQorI2VuZGlmCit9CisKK2Jvb2wgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjppc0FjY2VsZXJhdGVkKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUo
QUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisg
ICAgcmV0dXJuIG1fcGxhdGZvcm1MYXllcjsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCiB9CiAKIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6U3RhdGU6OlN0YXRlKCkKQEAgLTE0
MTMsNyArMTQ1OCwxMyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6d2lsbERyYXco
Y29uc3QgRmxvYXRSZWN0JiByLCB1bnNpZ25lZCBvcHRpb25zKQogICAgICAgICAvLyB3ZSdkIGhh
dmUgdG8ga2VlcCB0aGUgY2xpcCBwYXRoIGFyb3VuZC4KICAgICB9CiAKLSAgICBjYW52YXMoKS0+
d2lsbERyYXcoZGlydHlSZWN0KTsKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAm
JiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgUmVuZGVyQm94KiByZW5kZXJCb3gg
PSBjYW52YXMoKS0+cmVuZGVyQm94KCk7CisgICAgaWYgKGlzQWNjZWxlcmF0ZWQoKSAmJiByZW5k
ZXJCb3ggJiYgcmVuZGVyQm94LT5oYXNMYXllcigpICYmIHJlbmRlckJveC0+bGF5ZXIoKS0+aGFz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKQorICAgICAgICByZW5kZXJCb3gtPmxheWVyKCktPnJl
bmRlcmVyQ29udGVudENoYW5nZWQoKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgY2FudmFz
KCktPndpbGxEcmF3KGRpcnR5UmVjdCk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dCogQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CkBAIC0xNzUxLDQgKzE4MDIs
MTEgQEAgY29uc3QgRm9udCYgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphY2Nlc3NGb250KCkK
ICAgICByZXR1cm4gc3RhdGUoKS5tX2ZvbnQ7CiB9CiAKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpCit7CisjaWYgRU5BQkxFKEFD
Q0VMRVJBVEVEXzJEX0NBTlZBUykKKyAgICBkcmF3aW5nQ29udGV4dCgpLT5wbGF0Zm9ybUNvbnRl
eHQoKS0+c3luY1NvZnR3YXJlQ2FudmFzKCk7CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaCBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
LmgKaW5kZXggZmI1ZjI3YTZhZjI1NDhhMzJjMGQzZTA4MjMzMmFiMTRjN2Y3ZjYxNC4uNWYwOTI0
NDViOGE2YWRhNDZmNjNjNDFiMWYwMjcxYzY2ODI1M2I3OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC00Miw2ICs0MiwxMCBAQAogI2lu
Y2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgogI2VuZGlm
CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjaW5jbHVkZSAiR3JhcGhpY3NM
YXllci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FudmFzR3Jh
ZGllbnQ7CkBAIC01Niw2ICs2MCwxMCBAQCBjbGFzcyBJbWFnZURhdGE7CiBjbGFzcyBLVVJMOwog
Y2xhc3MgVGV4dE1ldHJpY3M7CiAKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAm
JiBVU0UoR0xFUzJfUkVOREVSSU5HKQorY2xhc3MgR0xFUzJDb250ZXh0OworI2VuZGlmCisKIHR5
cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RCA6IHB1YmxpYyBDYW52YXNSZW5kZXJpbmdDb250ZXh0IHsKQEAgLTY1LDYgKzczLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCgpOwogCiAgICAgdmly
dHVhbCBib29sIGlzMmQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29s
IGlzQWNjZWxlcmF0ZWQoKSBjb25zdDsKIAogICAgIENhbnZhc1N0eWxlKiBzdHJva2VTdHlsZSgp
IGNvbnN0OwogICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoUGFzc1JlZlB0cjxDYW52YXNTdHlsZT4p
OwpAQCAtMjExLDYgKzIyMCwxNSBAQCBwdWJsaWM6CiAgICAgTGluZUNhcCBnZXRMaW5lQ2FwKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGUoKS5tX2xpbmVDYXA7IH0KICAgICBMaW5lSm9pbiBnZXRMaW5l
Sm9pbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRlKCkubV9saW5lSm9pbjsgfQogCisgICAgdmlydHVh
bCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCk7CisKKyNpZiBFTkFCTEUoQUND
RUxFUkFURURfMkRfQ0FOVkFTKSAmJiBVU0UoR0xFUzJfUkVOREVSSU5HKQorICAgIEdMRVMyQ29u
dGV4dCogZ2xlczJDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9nbGVzMkNvbnRleHQuZ2V0KCk7
IH0KKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsgfQor
I2VuZGlmCisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBzdHJ1Y3QgU3RhdGUgewogICAgICAgICBT
dGF0ZSgpOwpAQCAtMjgwLDYgKzI5OCwxMyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShEQVNIQk9B
UkRfU1VQUE9SVCkKICAgICBib29sIG1fdXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlOwog
I2VuZGlmCisKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiBVU0UoR0xFUzJf
UkVOREVSSU5HKQorICAgIE93blB0cjxHTEVTMkNvbnRleHQ+IG1fZ2xlczJDb250ZXh0OworI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBSZWZQdHI8UGxhdGZvcm1MYXllcj4g
bV9wbGF0Zm9ybUxheWVyOworI2VuZGlmCisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmNwcCBiL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApp
bmRleCBmYjE3ZGI5MjQ2MTExYTc2YTIxNGU0MjQ2ODRlNzU2YjNiMDM3YWFhLi5iYmM4YjZhMmIw
YWZkMWY2ZTFlZmY0Y2QyZmIwOWRkZDg2Y2RmOGQ2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6Om1hcmtDb250ZXh0Q2hhbmdlZCgpCiAgICAgbV9tYXJrZWRDYW52
YXNEaXJ0eSA9IHRydWU7CiB9CiAKLWJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpCit2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQogewogICAgIGlmIChtX21hcmtlZENhbnZhc0Rp
cnR5KSB7CiAgICAgICAgIC8vIEZJWE1FOiBJdCBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSB0byBj
bGVhciB0aGUgaW1hZ2UgYmVmb3JlIGRvaW5nIGEgcmVhZGJhY2suCkBAIC0xNTksOSArMTU5LDcg
QEAgYm9vbCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2Fu
dmFzKCkKICAgICAgICAgY2FudmFzKCktPmJ1ZmZlcigpLT5jbGVhckltYWdlKCk7CiAgICAgICAg
IG1fbWFya2VkQ2FudmFzRGlydHkgPSBmYWxzZTsKICAgICAgICAgbV9jb250ZXh0LT5wYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyh0aGlzKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQotICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJl
Z2luUGFpbnQoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuaCBiL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgK
aW5kZXggMDE3NTcwYmVkNDIwMjNkYmM1NGQ0Yjk3ZmY0ZTI2MDlhNjgyNGI1Yy4uOTkxMGQ1OGQx
ZjU5NTkwYzJmMzE5ODhlNzE5ZWZiOTQ0MTUzYTU0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0zMDcsOSArMzA3LDcgQEAgY2xhc3MgV2ViS2l0
Q1NTTWF0cml4OwogICAgIAogICAgICAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KTsKIAotICAgICAgICAvLyBSZXR1cm4gdmFsdWUgdHJ1ZSBpbmRpY2F0ZXMgY2FudmFzIGlz
IHVwZGF0ZWQgZHVyaW5nIHRoZSBjYWxsLAotICAgICAgICAvLyBmYWxzZSBpbmRpY2F0ZXMgbm8g
dXBkYXRlcy4KLSAgICAgICAgYm9vbCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKIAog
ICAgICAgICAvLyBIZWxwZXJzIGZvciBub3RpZmljYXRpb24gYWJvdXQgcGFpbnQgZXZlbnRzLgog
ICAgICAgICB2b2lkIGJlZ2luUGFpbnQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyLmgKaW5kZXggYTU4MTlmNDlkOWFiYjYxNThkYTFkOTEzZDM2OTFlNGIwZjJjZWIw
Zi4uMDI5YWM0ZjhmM2NiMjI5OTFlODZiNWY4ZWZiMjAyZTAyNTc3YWNiYSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTMwMiw2ICszMDIsOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9XZWJHTChQbGF0Zm9ybUxheWVyKikg
eyB9CiAjZW5kaWYKICAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udGVudHNMYXllcigpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb0FjY2VsZXJhdGVkMkRDYW52YXMoUGxhdGZvcm1MYXll
ciopIHsgfQorI2VuZGlmCiAKICAgICAvLyBDYWxsYmFjayBmcm9tIHRoZSB1bmRlcmx5aW5nIGdy
YXBoaWNzIHN5c3RlbSB0byBkcmF3IGxheWVyIGNvbnRlbnRzLgogICAgIHZvaWQgcGFpbnRHcmFw
aGljc0xheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY2xpcCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCAwZTU5MzNlNDVh
ODM5NjUxYjEzOGM1MDY4ZjU0ZTRkYzhmYTljZmU3Li41MjdlMjg4NTgwNDc5ODVkMjUzZjBhNzhm
N2FjN2Q5NDUwMzQ5MTFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpZiBFTkFCTEUoM0RfQ0FOVkFTKSAgICAKICNpbmNsdWRl
ICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKICNlbmRpZgorI2luY2x1ZGUgIkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRl
ICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCkBAIC03Nyw2ICs3
OCwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXMzRENhbnZhcyhSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGlzMkRDYW52
YXMoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3sKKyAgICBpZiAocmVuZGVyZXItPmlzQ2FudmFz
KCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MQ2FudmFzRWxlbWVudCo+KHJlbmRl
cmVyLT5ub2RlKCkpLT5pczJEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBSZW5kZXJMYXll
ckJhY2tpbmc6OlJlbmRlckxheWVyQmFja2luZyhSZW5kZXJMYXllciogbGF5ZXIpCiAgICAgOiBt
X293bmluZ0xheWVyKGxheWVyKQogICAgICwgbV9hcnRpZmljaWFsbHlJbmZsYXRlZEJvdW5kcyhm
YWxzZSkKQEAgLTI2MCw2ICsyNjgsMTQgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0
ZUdyYXBoaWNzTGF5ZXJDb25maWd1cmF0aW9uKCkKICAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXll
ci0+c2V0Q29udGVudHNUb1dlYkdMKGNvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCktPnBsYXRm
b3JtTGF5ZXIoKSk7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NB
TlZBUykKKyAgICBlbHNlIGlmIChpczJEQ2FudmFzKHJlbmRlcmVyKCkpKSB7CisgICAgICAgIEhU
TUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBzdGF0aWNfY2FzdDxIVE1MQ2FudmFzRWxlbWVudCo+
KHJlbmRlcmVyKCktPm5vZGUoKSk7CisgICAgICAgIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCog
Y29udGV4dCA9IHN0YXRpY19jYXN0PENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCo+KGNhbnZhcy0+
cmVuZGVyaW5nQ29udGV4dCgpKTsKKyAgICAgICAgaWYgKFBsYXRmb3JtTGF5ZXIqIHBsID0gY29u
dGV4dC0+cGxhdGZvcm1MYXllcigpKQorICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRD
b250ZW50c1RvQWNjZWxlcmF0ZWQyRENhbnZhcyhwbCk7CisgICAgfQorI2VuZGlmCiAKICAgICBp
ZiAocmVuZGVyZXIoKS0+aXNSZW5kZXJJRnJhbWUoKSkKICAgICAgICAgbGF5ZXJDb25maWdDaGFu
Z2VkID0gUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpwYXJlbnRJRnJhbWVDb250ZW50TGF5ZXJzKHRv
UmVuZGVySUZyYW1lKHJlbmRlcmVyKCkpKTsKQEAgLTc1OCw2ICs3NzQsMTAgQEAgYm9vbCBSZW5k
ZXJMYXllckJhY2tpbmc6OmNvbnRhaW5zUGFpbnRlZENvbnRlbnQoKSBjb25zdAogICAgIC8vIGFu
ZCBzZXQgYmFja2dyb3VuZCBjb2xvciBvbiB0aGUgbGF5ZXIgaW4gdGhhdCBjYXNlLCBpbnN0ZWFk
IG9mIGFsbG9jYXRpbmcgYmFja2luZyBzdG9yZSBhbmQgcGFpbnRpbmcuCiAgICAgaWYgKHJlbmRl
cmVyKCktPmlzVmlkZW8oKSB8fCBpczNEQ2FudmFzKHJlbmRlcmVyKCkpKQogICAgICAgICByZXR1
cm4gaGFzQm94RGVjb3JhdGlvbnNPckJhY2tncm91bmQocmVuZGVyZXIoKSk7CisjaWYgRU5BQkxF
KEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyAgICBpZiAocmVuZGVyZXIoKS0+aXNDYW52YXMoKSkK
KyAgICAgICAgcmV0dXJuIGhhc0JveERlY29yYXRpb25zT3JCYWNrZ3JvdW5kKHJlbmRlcmVyKCkp
OworI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTc4Myw2ICs4MDMsMTIgQEAgdm9p
ZCBSZW5kZXJMYXllckJhY2tpbmc6OnJlbmRlcmVyQ29udGVudENoYW5nZWQoKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykK
KyAgICBpZiAocmVuZGVyZXIoKS0+aXNDYW52YXMoKSkgeworICAgICAgICBtX2dyYXBoaWNzTGF5
ZXItPnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYKIH0KIAogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMo
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63456</attachid>
            <date>2010-08-04 09:09:19 -0700</date>
            <delta_ts>2010-08-05 22:16:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43362-20100804120917.patch</filename>
            <type>text/plain</type>
            <size>23305</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDY1MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTIgQEAKKzIwMTAtMDgtMDQgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWNjZWxlcmF0ZWQgMmQgY2FudmFzZXMgc2hvdWxkIGdldCBjb21wb3NpdGluZyBsYXll
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMzYy
CisKKyAgICAgICAgR2l2ZXMgMmQgY2FudmFzZXMgdGhhdCBhcmUgYWNjZWxlcmF0ZWQgY29tcG9z
aXRpbmcgbGF5ZXJzIGFuZCB1bmlmaWVzCisgICAgICAgIHNvbWUgb2YgdGhlIHJlcGFpbnRpbmcg
bG9naWMgYmV0d2VlbiBXZWJHTCBhbmQgMmQgY2FudmFzZXMuICBCeSBpdHNlbGYsCisgICAgICAg
IHRoaXMgcGF0Y2ggaXMgb25seSBpbmZyYXN0cnVjdHVyZSAtIGl0IGRvZXMgbm90IGFjdHVhbGx5
IGNyZWF0ZSBhCisgICAgICAgIFBsYXRmb3JtTGF5ZXIgZm9yIDJkIGNhbnZhc2VzLiAgVGhhdCB3
aWxsIGJlIGRvbmUgaW4gcG9ydC1zcGVjaWZpYyBwYXRjaGVzLgorCisgICAgICAgIE5vIGNoYW5n
ZSBpbiBiZWhhdmlvciwgbm8gbmV3IHRlc3RzLiAgV2ViR0wgY2hhbmdlcyB2ZXJpZmllZCB3aXRo
IGV4aXN0aW5nIFdlYkdMIHRlc3RzLgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OndpbGxEcmF3KToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjppczJEKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDYW52YXNFbGVtZW50OjptYWtlUmVuZGVyaW5nUmVzdWx0c0F2YWlsYWJsZSk6CisgICAgICAg
ICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKiBodG1sL2Nh
bnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZXNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzQWNjZWxlcmF0ZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp3aWxsRHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvQ2FudmFzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YWNjZWxl
cmF0ZWRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6cGxhdGZvcm1MYXllcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmdldE9uc2NyZWVuQWNjZWxlcmF0ZWRDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6Z2V0T2Zmc2NyZWVuQWNjZWxlcmF0
ZWRDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRBY2NlbGVyYXRlZENv
bnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9BY2NlbGVyYXRlZDJEQ2FudmFzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRBY2NlbGVyYXRlZENvbnRl
eHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aXMyRENhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJh
Y2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29udGFpbnNQYWludGVkQ29udGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnJlbmRlcmVyQ29udGVudENoYW5nZWQpOgor
CiAyMDEwLTA4LTA0ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQ2FudmFz
RWxlbWVudC5jcHAJKHJldmlzaW9uIDY0NjQ5KQorKysgV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDYgKzE2OSwxMiBAQCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVuCiAgICAgICAgICAgICAgICAgdXNlc0Rhc2hi
YXJkQ29tcGF0aWJpbGl0eU1vZGUgPSBzZXR0aW5ncy0+dXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29t
cGF0aWJpbGl0eU1vZGUoKTsKICNlbmRpZgogICAgICAgICAgICAgbV9jb250ZXh0ID0gbmV3IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRCh0aGlzLCBkb2N1bWVudCgpLT5pbkNvbXBhdE1vZGUoKSwg
dXNlc0Rhc2hiYXJkQ29tcGF0aWJpbGl0eU1vZGUpOworI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8y
RF9DQU5WQVMpICYmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICAgICAgICAgIGlm
IChtX2NvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIG1ha2Ugc3VyZSBhIFJl
bmRlckxheWVyIGFuZCBjb21wb3NpdGluZyBsYXllciBnZXQgY3JlYXRlZCBmb3IgdGhlIENhbnZh
cworICAgICAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFu
Z2UpOworICAgICAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG1f
Y29udGV4dC5nZXQoKTsKICAgICB9CkBAIC0yMTYsNyArMjIyLDcgQEAgdm9pZCBIVE1MQ2FudmFz
RWxlbWVudDo6d2lsbERyYXcoY29uc3QgRgogICAgICAgICBtX2RpcnR5UmVjdC51bml0ZShyKTsK
ICAgICAgICAgcm8tPnJlcGFpbnRSZWN0YW5nbGUoZW5jbG9zaW5nSW50UmVjdChtX2RpcnR5UmVj
dCkpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChtX29ic2VydmVyKQogICAgICAgICBtX29ic2Vy
dmVyLT5jYW52YXNDaGFuZ2VkKHRoaXMsIHJlY3QpOwogfQpAQCAtMjk3LDE0ICszMDMsMTUgQEAg
Ym9vbCBIVE1MQ2FudmFzRWxlbWVudDo6aXMzRCgpIGNvbnN0CiB9CiAjZW5kaWYKIAorYm9vbCBI
VE1MQ2FudmFzRWxlbWVudDo6aXMyRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dCAm
JiBtX2NvbnRleHQtPmlzMmQoKTsKK30KKwogdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6bWFrZVJl
bmRlcmluZ1Jlc3VsdHNBdmFpbGFibGUoKQogewotI2lmIEVOQUJMRSgzRF9DQU5WQVMpCi0gICAg
aWYgKGlzM0QoKSkgewotICAgICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQzZCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4ocmVuZGVyaW5nQ29udGV4
dCgpKTsKLSAgICAgICAgY29udGV4dDNkLT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygp
OwotICAgIH0KLSNlbmRpZgorICAgIGlmIChtX2NvbnRleHQpCisgICAgICAgIG1fY29udGV4dC0+
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKIH0KIAogdm9pZCBIVE1MQ2FudmFzRWxl
bWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxDYW52YXNFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxDYW52
YXNFbGVtZW50LmgJKHJldmlzaW9uIDY0NjQ5KQorKysgV2ViQ29yZS9odG1sL0hUTUxDYW52YXNF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpczNEKCkgY29uc3Q7CiAjZW5kaWYKIAorICAgIGJvb2wgaXMyRCgpIGNvbnN0OworCiAg
ICAgdm9pZCBtYWtlUmVuZGVyaW5nUmVzdWx0c0F2YWlsYWJsZSgpOwogCiBwcml2YXRlOgpJbmRl
eDogV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cAkocmV2aXNpb24gNjQ2NDkpCisrKyBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDE3IEBACiAjaW5jbHVk
ZSAiU3Ryb2tlU3R5bGVBcHBsaWVyLmgiCiAjaW5jbHVkZSAiVGV4dE1ldHJpY3MuaCIKIAotI2lu
Y2x1ZGUgPHN0ZGlvLmg+CisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyNpbmNs
dWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKKyNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKKyNpZiBQTEFURk9S
TShDSFJPTUlVTSkKKyNpbmNsdWRlICJDYW52YXMyRExheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRl
ICJMYXllckNocm9taXVtLmgiCisjZW5kaWYKKyNlbmRpZgorI2VuZGlmCiAKICNpbmNsdWRlIDx3
dGYvQnl0ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTEwMCw2ICsx
MTAsMTIgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpDYW52YXNSZW5kZXJpbgogI2lmIEVO
QUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICAsIG1fdXNlc0Rhc2hib2FyZENvbXBhdGliaWxp
dHlNb2RlKHVzZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSkKICNlbmRpZgorI2lmIEVOQUJM
RShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisgICAgLCBtX2FjY2VsZXJhdGVkQ29udGV4dCgwKQor
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICAsIG1fcGxhdGZvcm1MYXllcigw
KQorI2VuZGlmCisjZW5kaWYKIHsKICNpZiAhRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAg
IEFTU0VSVF9VTlVTRUQodXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlLCAhdXNlc0Rhc2hi
b2FyZENvbXBhdGliaWxpdHlNb2RlKTsKQEAgLTEwOCw2ICsxMjQsMjMgQEAgQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEOjpDYW52YXNSZW5kZXJpbgogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGV2ZW4g
aWYgdGhlIGRyYXdpbmdDb250ZXh0KCkgaGFzIGEgZGlmZmVyZW50IGRlZmF1bHQKICAgICAvLyB0
aGlja25lc3MsIGl0IGlzIGluIHN5bmMgd2l0aCB0aGUgY2FudmFzIHRoaWNrbmVzcy4KICAgICBz
ZXRMaW5lV2lkdGgobGluZVdpZHRoKCkpOworCisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NB
TlZBUykKKyAgICBpZiAoUGFnZSogcCA9IGNhbnZhcy0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7Cisg
ICAgICAgIGlmIChwLT5zZXR0aW5ncygpLT5hY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZCgpKSB7
CisgICAgICAgICAgICAvLyBTZXQgdXAgb3VyIGNvbnRleHQgYW5kIGxheWVyCisgICAgICAgICAg
ICBtX2FjY2VsZXJhdGVkQ29udGV4dCA9IHAtPmNocm9tZSgpLT5jbGllbnQoKS0+Z2V0T2Zmc2Ny
ZWVuQWNjZWxlcmF0ZWRDb250ZXh0KCk7CisKKyAgICAgICAgICAgIGlmIChtX2FjY2VsZXJhdGVk
Q29udGV4dCkgeworICAgICAgICAgICAgICAgIGlmIChHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3
aW5nQ29udGV4dCgpKQorICAgICAgICAgICAgICAgICAgICBjLT5zZXRBY2NlbGVyYXRlZENvbnRl
eHQobV9hY2NlbGVyYXRlZENvbnRleHQuZ2V0KCksIEludFNpemUoY2FudmFzLT53aWR0aCgpLCBj
YW52YXMtPmhlaWdodCgpKSk7CisjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgICAgICAgICAg
ICAgbV9wbGF0Zm9ybUxheWVyID0gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUodGhpcyk7
CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgogfQogCiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6On5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQoKQpAQCAt
MTE5LDYgKzE1MiwyMSBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cmVzZXQoKQog
ICAgIG1fc3RhdGVTdGFjay5yZXNpemUoMSk7CiAgICAgbV9zdGF0ZVN0YWNrLmZpcnN0KCkgPSBT
dGF0ZSgpOwogICAgIG1fcGF0aC5jbGVhcigpOworI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9D
QU5WQVMpICYmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBpZiAobV9hY2NlbGVy
YXRlZENvbnRleHQpIHsKKyAgICAgICAgaWYgKEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdD
b250ZXh0KCkpCisgICAgICAgICAgICBjLT5zZXRBY2NlbGVyYXRlZENvbnRleHQobV9hY2NlbGVy
YXRlZENvbnRleHQuZ2V0KCksIEludFNpemUoY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5o
ZWlnaHQoKSkpOworICAgIH0KKyNlbmRpZgorfQorCitib29sIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6aXNBY2NlbGVyYXRlZCgpIGNvbnN0Cit7CisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJE
X0NBTlZBUykgJiYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIHJldHVybiBtX3Bs
YXRmb3JtTGF5ZXI7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OlN0YXRlOjpTdGF0ZSgpCkBAIC0xNDM0LDcgKzE0ODIsMTMg
QEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OndpbGxEcmF3KAogICAgICAgICAvLyB3
ZSdkIGhhdmUgdG8ga2VlcCB0aGUgY2xpcCBwYXRoIGFyb3VuZC4KICAgICB9CiAKLSAgICBjYW52
YXMoKS0+d2lsbERyYXcoZGlydHlSZWN0KTsKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FO
VkFTKSAmJiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgUmVuZGVyQm94KiByZW5k
ZXJCb3ggPSBjYW52YXMoKS0+cmVuZGVyQm94KCk7CisgICAgaWYgKHJlbmRlckJveCAmJiByZW5k
ZXJCb3gtPmhhc0xheWVyKCkgJiYgcmVuZGVyQm94LT5sYXllcigpLT5oYXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKCkgJiYgaXNBY2NlbGVyYXRlZCgpKQorICAgICAgICByZW5kZXJCb3gtPmxheWVy
KCktPnJlbmRlcmVyQ29udGVudENoYW5nZWQoKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAg
Y2FudmFzKCktPndpbGxEcmF3KGRpcnR5UmVjdCk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dCogQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3aW5nQ29udGV4dCgpIGNvbnN0CkBAIC0xNzcyLDQg
KzE4MjYsMTEgQEAgY29uc3QgRm9udCYgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphYwogICAg
IHJldHVybiBzdGF0ZSgpLm1fZm9udDsKIH0KIAordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKK3sKKyNpZiBFTkFCTEUoQUNDRUxF
UkFURURfMkRfQ0FOVkFTKQorICAgIGRyYXdpbmdDb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgp
LT5zeW5jU29mdHdhcmVDYW52YXMoKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmgJKHJldmlzaW9uIDY0NjQ5KQorKysgV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsMTEgQEAKICNpbmNs
dWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KICNlbmRpZgog
CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENhbnZhc0dyYWRpZW50OwpAQCAtNjUsNiArNzAsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKCk7CiAKICAgICB2aXJ0
dWFsIGJvb2wgaXMyZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aXNBY2NlbGVyYXRlZCgpIGNvbnN0OwogCiAgICAgQ2FudmFzU3R5bGUqIHN0cm9rZVN0eWxlKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRTdHJva2VTdHlsZShQYXNzUmVmUHRyPENhbnZhc1N0eWxlPik7
CkBAIC0yMTIsNiArMjE4LDE1IEBAIHB1YmxpYzoKICAgICBMaW5lQ2FwIGdldExpbmVDYXAoKSBj
b25zdCB7IHJldHVybiBzdGF0ZSgpLm1fbGluZUNhcDsgfQogICAgIExpbmVKb2luIGdldExpbmVK
b2luKCkgY29uc3QgeyByZXR1cm4gc3RhdGUoKS5tX2xpbmVKb2luOyB9CiAKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKKworI2lmIEVOQUJMRShBQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpCisgICAgQWNjZWxlcmF0ZWRHcmFwaGljc0NvbnRleHQqIGFjY2Vs
ZXJhdGVkQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZWxlcmF0ZWRDb250ZXh0LmdldCgp
OyB9CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIFBsYXRmb3JtTGF5ZXIq
IHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtTGF5ZXIuZ2V0KCk7IH0K
KyNlbmRpZgorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgc3RydWN0IFN0YXRlIHsKICAgICAgICAg
U3RhdGUoKTsKQEAgLTI4MSw2ICsyOTYsMTMgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoREFTSEJP
QVJEX1NVUFBPUlQpCiAgICAgYm9vbCBtX3VzZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZTsK
ICNlbmRpZgorCisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyAgICBPd25QdHI8
QWNjZWxlcmF0ZWRHcmFwaGljc0NvbnRleHQ+IG1fYWNjZWxlcmF0ZWRDb250ZXh0OworI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBSZWZQdHI8UGxhdGZvcm1MYXllcj4gbV9w
bGF0Zm9ybUxheWVyOworI2VuZGlmCisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5o
CShyZXZpc2lvbiA2NDY0OSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgLy8gRm9yIG5vbiBhY2NlbGVyYXRlZCBjYW52YXNlcyByZXR1cm5zIDAu
CiAgICAgICAgIHZpcnR1YWwgR3JhcGhpY3NDb250ZXh0M0QqIGdyYXBoaWNzQ29udGV4dDNEKCkg
Y29uc3QgeyByZXR1cm4gMDsgfQogCisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFJlbmRlcmlu
Z1Jlc3VsdHNUb0NhbnZhcygpIHt9CisKICAgICBwcml2YXRlOgogICAgICAgICBIVE1MQ2FudmFz
RWxlbWVudCogbV9jYW52YXM7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDY0NjQ5KQorKysgV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTEsNyArMTUxLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Om1hcmtDb250ZXh0Qwog
ICAgIG1fbWFya2VkQ2FudmFzRGlydHkgPSB0cnVlOwogfQogCi1ib29sIFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQordm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKIHsKICAgICBpZiAo
bV9tYXJrZWRDYW52YXNEaXJ0eSkgewogICAgICAgICAvLyBGSVhNRTogSXQgc2hvdWxkIG5vdCBi
ZSBuZWNlc3NhcnkgdG8gY2xlYXIgdGhlIGltYWdlIGJlZm9yZSBkb2luZyBhIHJlYWRiYWNrLgpA
QCAtMTU5LDkgKzE1OSw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpwYWludFJlbmRl
cmkKICAgICAgICAgY2FudmFzKCktPmJ1ZmZlcigpLT5jbGVhckltYWdlKCk7CiAgICAgICAgIG1f
bWFya2VkQ2FudmFzRGlydHkgPSBmYWxzZTsKICAgICAgICAgbV9jb250ZXh0LT5wYWludFJlbmRl
cmluZ1Jlc3VsdHNUb0NhbnZhcyh0aGlzKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQot
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmJlZ2lu
UGFpbnQoKQpJbmRleDogV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5oCShyZXZpc2lvbiA2NDY0OSkKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw5ICszMDcsNyBAQCBjbGFzcyBXZWJL
aXRDU1NNYXRyaXg7CiAgICAgCiAgICAgICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBo
ZWlnaHQpOwogCi0gICAgICAgIC8vIFJldHVybiB2YWx1ZSB0cnVlIGluZGljYXRlcyBjYW52YXMg
aXMgdXBkYXRlZCBkdXJpbmcgdGhlIGNhbGwsCi0gICAgICAgIC8vIGZhbHNlIGluZGljYXRlcyBu
byB1cGRhdGVzLgotICAgICAgICBib29sIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpOwog
CiAgICAgICAgIC8vIEhlbHBlcnMgZm9yIG5vdGlmaWNhdGlvbiBhYm91dCBwYWludCBldmVudHMu
CiAgICAgICAgIHZvaWQgYmVnaW5QYWludCgpOwpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNp
b24gNjQ2NDkpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDYgKzM1LDEwIEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyNpbmNsdWRlICJHTEVT
MkNvbnRleHQuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIldlYkNv
cmVLZXlib2FyZFVJTW9kZS5oIgogI2VuZGlmCkBAIC0yMzYsMTEgKzI0MCw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGFsbG93c0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmcoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAotI2lmIFVTRShHTEVTMl9S
RU5ERVJJTkcpCi0gICAgICAgIC8vIFJlcXVlc3QgYSBHTCBFUyAyIGNvbnRleHQgdG8gdXNlIGZv
ciBjb21wb3NpdGluZyB0aGlzIHBhZ2UncyBjb250ZW50LgotICAgICAgICB2aXJ0dWFsIFBhc3NP
d25QdHI8R0xFUzJDb250ZXh0PiBnZXRPbnNjcmVlbkdMRVMyQ29udGV4dCgpID0gMDsKLSAgICAg
ICAgdmlydHVhbCBQYXNzT3duUHRyPEdMRVMyQ29udGV4dD4gZ2V0T2Zmc2NyZWVuR0xFUzJDb250
ZXh0KCkgPSAwOwotI2VuZGlmCisgICAgICAgIC8vIFJlcXVlc3QgYW4gYWNjZWxlcmF0ZWQgZ3Jh
cGhpY3MgY29udGV4dCB0byB1c2UgZm9yIGNvbXBvc2l0aW5nIHRoaXMgcGFnZSdzIGNvbnRlbnQu
CisgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxBY2NlbGVyYXRlZEdyYXBoaWNzQ29udGV4dD4g
Z2V0T25zY3JlZW5BY2NlbGVyYXRlZENvbnRleHQoKSB7IHJldHVybiAwOyB9CisgICAgICAgIHZp
cnR1YWwgUGFzc093blB0cjxBY2NlbGVyYXRlZEdyYXBoaWNzQ29udGV4dD4gZ2V0T2Zmc2NyZWVu
QWNjZWxlcmF0ZWRDb250ZXh0KCkgeyByZXR1cm4gMDsgfQogCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqKSB7IHJldHVybiBmYWxzZTsg
fQogICAgICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKikgeyB9
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
CShyZXZpc2lvbiA2NDY0OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQxLDQgKzU0MSwxMCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6YWRqdXN0TGluZVRvUGl4ZWxCCiAgICAgfQogfQogCisjaWYgIVBMQVRGT1JN
KENIUk9NSVVNKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEFjY2VsZXJhdGVkQ29udGV4dChB
Y2NlbGVyYXRlZEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFNpemUmKQoreworfQorI2VuZGlm
CisKIH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAkocmV2aXNpb24gNjQ2NDkpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBHbHlwaEJ1ZmZlcjsKICNlbmRpZgogCisjaWYgUExBVEZPUk0o
Q0hST01JVU0pCisgICAgY2xhc3MgR0xFUzJDb250ZXh0OworICAgIHR5cGVkZWYgR0xFUzJDb250
ZXh0IEFjY2VsZXJhdGVkR3JhcGhpY3NDb250ZXh0OworI2Vsc2UKKyAgICB0eXBlZGVmIGludCBB
Y2NlbGVyYXRlZEdyYXBoaWNzQ29udGV4dDsKKyNlbmRpZgorCiAgICAgY29uc3QgaW50IGNNaXNz
cGVsbGluZ0xpbmVUaGlja25lc3MgPSAzOwogICAgIGNvbnN0IGludCBjTWlzc3BlbGxpbmdMaW5l
UGF0dGVybldpZHRoID0gNDsKICAgICBjb25zdCBpbnQgY01pc3NwZWxsaW5nTGluZVBhdHRlcm5H
YXBXaWR0aCA9IDE7CkBAIC0zOTMsNiArNDAwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBwYXR0ZXJuIGdldEhhaWt1U3Ryb2tlU3R5bGUoKTsKICNlbmRpZgogCisgICAgICAgIHZv
aWQgc2V0QWNjZWxlcmF0ZWRDb250ZXh0KEFjY2VsZXJhdGVkR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgSW50U2l6ZSYpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBzYXZlUGxhdGZvcm1T
dGF0ZSgpOwogICAgICAgICB2b2lkIHJlc3RvcmVQbGF0Zm9ybVN0YXRlKCk7CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAkocmV2aXNpb24gNjQ2NDkpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAyLDYgKzMwMiw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVu
dHNUb1dlYkdMKFBsYXRmb3JtTGF5ZXIqKSB7IH0KICNlbmRpZgogICAgIHZpcnR1YWwgYm9vbCBo
YXNDb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNpZiBFTkFCTEUoQUND
RUxFUkFURURfMkRfQ0FOVkFTKQorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvQWNjZWxl
cmF0ZWQyRENhbnZhcyhQbGF0Zm9ybUxheWVyKikgeyB9CisjZW5kaWYKIAogICAgIC8vIENhbGxi
YWNrIGZyb20gdGhlIHVuZGVybHlpbmcgZ3JhcGhpY3Mgc3lzdGVtIHRvIGRyYXcgbGF5ZXIgY29u
dGVudHMuCiAgICAgdm9pZCBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiBjbGlwKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAJKHJldmlzaW9uIDY0
NjQ5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNr
aWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjc2LDQgKzEyNzYsOSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6dHJhbnNsYXRlKGZsb2F0IHcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViQ29yZUZsb2F0VG9Ta1NjYWxhcihoKSk7CiB9CiAKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRBY2NlbGVyYXRlZENvbnRleHQoQWNjZWxlcmF0ZWRHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgcGxhdGZvcm1Db250
ZXh0KCktPnNldEdMRVMyQ29udGV4dChjb250ZXh0LCBzaXplKTsKK30KKwogfSAgLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAkocmV2aXNpb24gNjQ2NDkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaWYgRU5BQkxFKDNEX0NB
TlZBUykgICAgCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCiAjZW5kaWYKKyNp
bmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0
eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgpAQCAtNzcsNiArNzgsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGlzM0RDYW52YXMo
UmVuZGVyT2JqZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGlz
MkRDYW52YXMoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3sKKyAgICBpZiAocmVuZGVyZXItPmlz
Q2FudmFzKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MQ2FudmFzRWxlbWVudCo+
KHJlbmRlcmVyLT5ub2RlKCkpLT5pczJEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBSZW5k
ZXJMYXllckJhY2tpbmc6OlJlbmRlckxheWVyQmFja2luZyhSZW5kZXJMYXllciogbGF5ZXIpCiAg
ICAgOiBtX293bmluZ0xheWVyKGxheWVyKQogICAgICwgbV9hcnRpZmljaWFsbHlJbmZsYXRlZEJv
dW5kcyhmYWxzZSkKQEAgLTI2MCw2ICsyNjgsMTQgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6
OnVwZGF0ZUdyYXBoaWNzTAogICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50
c1RvV2ViR0woY29udGV4dC0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+cGxhdGZvcm1MYXllcigpKTsK
ICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorICAgIGVs
c2UgaWYgKGlzMkRDYW52YXMocmVuZGVyZXIoKSkpIHsKKyAgICAgICAgSFRNTENhbnZhc0VsZW1l
bnQqIGNhbnZhcyA9IHN0YXRpY19jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4ocmVuZGVyZXIoKS0+
bm9kZSgpKTsKKyAgICAgICAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKiBjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKj4oY2FudmFzLT5yZW5kZXJpbmdDb250
ZXh0KCkpOworICAgICAgICBpZiAoUGxhdGZvcm1MYXllciogcGwgPSBjb250ZXh0LT5wbGF0Zm9y
bUxheWVyKCkpCisgICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9BY2Nl
bGVyYXRlZDJEQ2FudmFzKHBsKTsKKyAgICB9CisjZW5kaWYKIAogICAgIGlmIChyZW5kZXJlcigp
LT5pc1JlbmRlcklGcmFtZSgpKQogICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnBhcmVudElGcmFtZUNvbnRlbnRMYXllcnModG9SZW5kZXJJRnJhbWUo
cmVuZGVyZXIoKSkpOwpAQCAtNzU4LDYgKzc3NCwxMCBAQCBib29sIFJlbmRlckxheWVyQmFja2lu
Zzo6Y29udGFpbnNQYWludGVkCiAgICAgLy8gYW5kIHNldCBiYWNrZ3JvdW5kIGNvbG9yIG9uIHRo
ZSBsYXllciBpbiB0aGF0IGNhc2UsIGluc3RlYWQgb2YgYWxsb2NhdGluZyBiYWNraW5nIHN0b3Jl
IGFuZCBwYWludGluZy4KICAgICBpZiAocmVuZGVyZXIoKS0+aXNWaWRlbygpIHx8IGlzM0RDYW52
YXMocmVuZGVyZXIoKSkpCiAgICAgICAgIHJldHVybiBoYXNCb3hEZWNvcmF0aW9uc09yQmFja2dy
b3VuZChyZW5kZXJlcigpKTsKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorICAg
IGlmIChyZW5kZXJlcigpLT5pc0NhbnZhcygpKQorICAgICAgICByZXR1cm4gaGFzQm94RGVjb3Jh
dGlvbnNPckJhY2tncm91bmQocmVuZGVyZXIoKSk7CisjZW5kaWYKIAogICAgIHJldHVybiB0cnVl
OwogfQpAQCAtNzgzLDYgKzgwMywxMiBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cmVuZGVy
ZXJDb250ZW50CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoQUND
RUxFUkFURURfMkRfQ0FOVkFTKQorICAgIGlmIChyZW5kZXJlcigpLT5pc0NhbnZhcygpKSB7Cisg
ICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6
dXBkYXRlSW1hZ2VDb250ZW50cygpCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0NjUzKQor
KysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIz
IEBACisyMDEwLTA4LTA0ICBTdGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY2Vs
ZXJhdGVkIDJkIGNhbnZhc2VzIHNob3VsZCBnZXQgY29tcG9zaXRpbmcgbGF5ZXJzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzM2MgorCisgICAgICAg
IFJlbmFtZSBnZXRPbnNjcmVlbkdMRVMyQ29udGV4dCB0byBnZXRPbnNjcmVlbkFjY2VsZXJhdGVk
Q29udGV4dCAmYy4KKworICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6Z2V0T25zY3JlZW5BY2NlbGVyYXRlZENvbnRl
eHQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpnZXRPZmZzY3JlZW5BY2Nl
bGVyYXRlZENvbnRleHQpOgorCisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmdldE9uc2NyZWVuQWNjZWxlcmF0ZWRDb250ZXh0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OmdldE9mZnNjcmVlbkFjY2VsZXJhdGVkQ29udGV4dCk6CisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTAtMDgtMDQgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hh
dHNreS4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkocmV2
aXNpb24gNjQ2NDkpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NDQsMTcgKzc0NCwxNSBAQCB2b2lkIENocm9tZUNsaWVudElt
cGw6OnNjaGVkdWxlQ29tcG9zaXRpCiB9CiAjZW5kaWYKIAotI2lmIFVTRShHTEVTMl9SRU5ERVJJ
TkcpCi1QYXNzT3duUHRyPEdMRVMyQ29udGV4dD4gQ2hyb21lQ2xpZW50SW1wbDo6Z2V0T25zY3Jl
ZW5HTEVTMkNvbnRleHQoKQorUGFzc093blB0cjxBY2NlbGVyYXRlZEdyYXBoaWNzQ29udGV4dD4g
Q2hyb21lQ2xpZW50SW1wbDo6Z2V0T25zY3JlZW5BY2NlbGVyYXRlZENvbnRleHQoKQogewotICAg
IHJldHVybiBtX3dlYlZpZXctPmdldE9uc2NyZWVuR0xFUzJDb250ZXh0KCk7CisgICAgcmV0dXJu
IG1fd2ViVmlldy0+Z2V0T25zY3JlZW5BY2NlbGVyYXRlZENvbnRleHQoKTsKIH0KIAotUGFzc093
blB0cjxHTEVTMkNvbnRleHQ+IENocm9tZUNsaWVudEltcGw6OmdldE9mZnNjcmVlbkdMRVMyQ29u
dGV4dCgpCitQYXNzT3duUHRyPEFjY2VsZXJhdGVkR3JhcGhpY3NDb250ZXh0PiBDaHJvbWVDbGll
bnRJbXBsOjpnZXRPZmZzY3JlZW5BY2NlbGVyYXRlZENvbnRleHQoKQogewotICAgIHJldHVybiBt
X3dlYlZpZXctPmdldE9mZnNjcmVlbkdMRVMyQ29udGV4dCgpOworICAgIHJldHVybiBtX3dlYlZp
ZXctPmdldE9mZnNjcmVlbkFjY2VsZXJhdGVkQ29udGV4dCgpOwogfQotI2VuZGlmCiAKIGJvb2wg
Q2hyb21lQ2xpZW50SW1wbDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBXZWJDb3Jl
OjpOb2RlKiBub2RlKQogewpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBs
LmgJKHJldmlzaW9uIDY0NjQ5KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MiwxMCArMTUyLDggQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKCk7CiAjZW5kaWYKIAotI2lm
IFVTRShHTEVTMl9SRU5ERVJJTkcpCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkdM
RVMyQ29udGV4dD4gZ2V0T25zY3JlZW5HTEVTMkNvbnRleHQoKTsKLSAgICB2aXJ0dWFsIFBhc3NP
d25QdHI8V2ViQ29yZTo6R0xFUzJDb250ZXh0PiBnZXRPZmZzY3JlZW5HTEVTMkNvbnRleHQoKTsK
LSNlbmRpZgorICAgIHZpcnR1YWwgUGFzc093blB0cjxXZWJDb3JlOjpBY2NlbGVyYXRlZEdyYXBo
aWNzQ29udGV4dD4gZ2V0T25zY3JlZW5BY2NlbGVyYXRlZENvbnRleHQoKTsKKyAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8V2ViQ29yZTo6QWNjZWxlcmF0ZWRHcmFwaGljc0NvbnRleHQ+IGdldE9mZnNj
cmVlbkFjY2VsZXJhdGVkQ29udGV4dCgpOwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVs
bHNjcmVlbkZvck5vZGUoY29uc3QgV2ViQ29yZTo6Tm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBl
bnRlckZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5vZGUqKTsKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiA2NDY0OSkKKysrIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTAxLDcgKzIxMDEsNyBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChhY3RpdmUpIHsKLSAgICAgICAgbV9sYXllclJlbmRlcmVyID0gTGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpjcmVhdGUoZ2V0T25zY3JlZW5HTEVTMkNvbnRleHQoKSk7CisgICAgICAg
IG1fbGF5ZXJSZW5kZXJlciA9IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlKGdldE9uc2Ny
ZWVuQWNjZWxlcmF0ZWRDb250ZXh0KCkpOwogICAgICAgICBpZiAobV9sYXllclJlbmRlcmVyLT5o
YXJkd2FyZUNvbXBvc2l0aW5nKCkpCiAgICAgICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0FjdGl2ZSA9IHRydWU7CiAgICAgICAgIGVsc2UgewpAQCAtMjE3NSwxMiArMjE3NSwxMiBA
QCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290TGF5ZXJOZWVkc0Rpc3BsCiB9CiAjZW5kaWYgLy8g
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCi1QYXNzT3duUHRyPEdMRVMyQ29udGV4dD4g
V2ViVmlld0ltcGw6OmdldE9uc2NyZWVuR0xFUzJDb250ZXh0KCkKK1Bhc3NPd25QdHI8QWNjZWxl
cmF0ZWRHcmFwaGljc0NvbnRleHQ+IFdlYlZpZXdJbXBsOjpnZXRPbnNjcmVlbkFjY2VsZXJhdGVk
Q29udGV4dCgpCiB7CiAgICAgcmV0dXJuIEdMRVMyQ29udGV4dDo6Y3JlYXRlKEdMRVMyQ29udGV4
dEludGVybmFsOjpjcmVhdGUoZ2xlczJDb250ZXh0KCksIGZhbHNlKSk7CiB9CiAKLVBhc3NPd25Q
dHI8R0xFUzJDb250ZXh0PiBXZWJWaWV3SW1wbDo6Z2V0T2Zmc2NyZWVuR0xFUzJDb250ZXh0KCkK
K1Bhc3NPd25QdHI8QWNjZWxlcmF0ZWRHcmFwaGljc0NvbnRleHQ+IFdlYlZpZXdJbXBsOjpnZXRP
ZmZzY3JlZW5BY2NlbGVyYXRlZENvbnRleHQoKQogewogICAgIFdlYkdMRVMyQ29udGV4dCogY29u
dGV4dCA9IHdlYktpdENsaWVudCgpLT5jcmVhdGVHTEVTMkNvbnRleHQoKTsKICAgICBpZiAoIWNv
bnRleHQpCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCShyZXZpc2lvbiA2NDY0OSkK
KysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAt
MzI3LDggKzMyNyw4IEBAIHB1YmxpYzoKICAgICAvLyBPbnNjcmVlbiBjb250ZXh0cyBkaXNwbGF5
IHRvIHRoZSBzY3JlZW4gYXNzb2NpYXRlZCB3aXRoIHRoaXMgdmlldy4KICAgICAvLyBPZmZzY3Jl
ZW4gY29udGV4dHMgcmVuZGVyIG9mZnNjcmVlbiBidXQgY2FuIHNoYXJlIHJlc291cmNlcyB3aXRo
IHRoZQogICAgIC8vIG9uc2NyZWVuIGNvbnRleHQgYW5kIHRodXMgY2FuIGJlIGNvbXBvc2l0ZWQu
Ci0gICAgUGFzc093blB0cjxXZWJDb3JlOjpHTEVTMkNvbnRleHQ+IGdldE9uc2NyZWVuR0xFUzJD
b250ZXh0KCk7Ci0gICAgUGFzc093blB0cjxXZWJDb3JlOjpHTEVTMkNvbnRleHQ+IGdldE9mZnNj
cmVlbkdMRVMyQ29udGV4dCgpOworICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6QWNjZWxlcmF0ZWRH
cmFwaGljc0NvbnRleHQ+IGdldE9uc2NyZWVuQWNjZWxlcmF0ZWRDb250ZXh0KCk7CisgICAgUGFz
c093blB0cjxXZWJDb3JlOjpBY2NlbGVyYXRlZEdyYXBoaWNzQ29udGV4dD4gZ2V0T2Zmc2NyZWVu
QWNjZWxlcmF0ZWRDb250ZXh0KCk7CiAKICAgICAvLyBSZXR1cm5zIGFuIG9uc2NyZWVuIGNvbnRl
eHQKICAgICB2aXJ0dWFsIFdlYkdMRVMyQ29udGV4dCogZ2xlczJDb250ZXh0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>63552</attachid>
            <date>2010-08-04 22:29:43 -0700</date>
            <delta_ts>2010-08-04 22:29:43 -0700</delta_ts>
            <desc>Current canvas class hierarchy</desc>
            <filename>current_hierarchy.png</filename>
            <type>image/png</type>
            <size>17990</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAyAAAAMgCAIAAABUEpE/AABGDUlEQVR42u3df2hW92I/8N6bpdYb
c0261BvkWZZJnIr2qugkk3CRElBRUVEhuCChZKLUUaVeKiK1m6JCKFJCCc67WqrUUiciQUIJ1KCl
LXVDJEgQKREVFSNKCRIkSL8ferbzfZbnR2J8NE+S1+uPcHLynF+fX+d9znPyPK/8AgBATr2iCAAA
BCwAAAELAEDAAgBAwAIAELAAAAQsAAAELAAAAQsAQMACAEDAAgAQsAAABCwAAAELAAABCwBAwAIA
ELAAABCwAAAELAAAAQsAAAELAEDAAgAQsAAAELAAAAQsAAABCwBAwAIAQMACABCwAAAELAAABCwA
AAELAEDAAgBAwAIAELAAAAQsAAAELAAAAQsAQMACABCwAAAQsAAABCwAAAELAAABCwBAwAIAELAA
ABCwAAAELAAAAQsAAAELAEDAAgAQsAAABCwAAAQsAAABCwBAwAIAQMACABCwAAAELAAABCwAAAEL
AEDAAgAQsAAAELAAAAQsAAABCwAAAQsAQMACABCwAAAQsAAABCwAAAELAAABCwBAwAIAELAAAAQs
AAAELAAAAQsAQMACAEDAAgAQsAAABCwAAAQsAAABCwBAwAIAQMACABCwAAAELAAAAQsAAAELAEDA
AgAQsAAAELAAAAQsAAABCwAAAQsAQMACABCwAAAQsAAABCwAAAELAEDAAgBAwAIAELAAAAQsAAAE
LAAAAQsAQMACAEDAAgAQsAAABCwAAAELAAABCwBAwAIAELAAABCwAAAELAAAAQsAAAELAEDAAgAQ
sAAAELAAAAQsAAABCwBAwAIAQMACABCwAAAELAAABCwAAAELAEDAAgBAwAIAELAAAAQsAAAELAAA
AQsAQMACABCwAAAQsAAABCwAAAELAAABCwBAwAIAELAAABCwAAAELAAAAQsAAAELAEDAAgAQsAAA
BCwAAAQsAAABCwBAwAIAQMACABCwAAAELAAABCwAAAELAEDAAgAQsAAAELAAAAQsAAABCwAAAQsA
QMACABCwAAAQsAAABCwAAAELAAABCwBAwAIAELAAAAQsAAAELAAAAQsAQMACAEDAAgAQsAAABCwA
AAQsAAABCwBAwAIAQMACABCwAAAELAAAAQsAAAELAEDAAgAQsAAAELAAAAQsAAABC4D/M5jC/9Id
ELAAchawFAJaAgIWgNMqWgICFoDTKloCAhaA0ypaAgIWAE6raAkIWABOq2gJCFgATqtoCQhYADit
oiUgYAE4raIlIGABOK2iJSBgAeC0ipaAgAXgtIqWgIAF4LSaaeXRnCzfNBwmPvnkk/j1R44cSV5J
2r1tbW2dO3duYWHhS/7G4rSHMHpjioCFgAUwugNW9hf86U9/in9dtWpV9oD13XffTZky5dtvv82T
ontpMWXixIkCFgIWgIA11IBVX1//008/henHjx+vW7cue8BavXr1Z599lrrps2fPLlq0qLCwMJFI
nDhxIl68o6Nj2rRpRUVFn376aZhTU1Nz5cqVeKkffvghzEm77OnTp8OvBQUFyTfbshxyX19fOJCw
ofnz59+5cyf+65kzZ8J6iouLw1auX78+e/bsysrKMJ19qQG7PeC2n4CFgAUgYA3ygra2tn/7t38L
01988cWXX36ZPWCFpBJCSeqmN27cePXq1TBx4cKFyZMnx4uHxHb79u1r165NmTIlzDl37lx4ZbzU
hg0bQtZJu2zY0I0bNwYtunjm+++//9FHH4WJlpaWhoaG+K8hJ3V1dYUdCLkqpMNourS0NPtSA3b7
RVScgIWABTBqAlamZ62yBKynT5/W1NREIenJkyfZA9ZQ9j/5nlNvb++AmbNmzbp582aYCPlpxowZ
mZYNfzp06FBymMv0DFk0UV5efv/+/TARDic54UXRLXU6+1Kpuy1gIWABjN+AlX1Ophe8++67P/zw
Q11d3YDXpL6+qKgo7R2skJY2bdpUXFyc6U29ePqTTz7585//HCbCz+bm5kzLdnV1LV68OASgtra2
LEWXvK1YWE+WHRjeUgIWAhaAgPVsAevHH3+cPn36V199NWjAWrFixZEjR1I3PXv27KampsePH2cK
JfH0kydPpk2bdu/evYqKiiirpV02cu7cuZCxhhKw4rVlOt6000NfSsBCwAIQsJ4tYAVvvvlmiD6D
BqyOjo6ysrL4rlKsqKjoypUrT58+bW1tDUuF/JRlVR9++OHcuXP37NmTZdlIZ2fnEAPWgQMHWlpa
njVgDX2psJPxU/ACFgIWgID1DC9IjRepjz2dPn161qxZ0dt58cwTJ06U/mr//v07duyIng3PlG/u
378/YcKEOK9kWjaoqKhIfosw++dg7d69O7x+0Pcoh7fUuXPniouLBSwELIBxF7DQEhCwAJxW0RIQ
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
CwBAwAIAQMACABCwAAAELAAABCwAAAELAEDAAgBAwAIAELAAAAQsAAABCwAAAQsAQMACABCwAAAQ
sAAABCwAAAELAAABCwBAwAIAELAAABCwAAAELAAAAQsAQMACAEDAAgAQsAAABCwAAAQsAAABCwBA
wAIAQMACABCwAAAELAAABCwAAAELAEDAAgAQsAAAELAAAAQsAAABCwAAAQsAQMACABCwAAAQsAAA
BCwAAAELAAABCwBAwAIAELAAAAQsAAAELAAAAQsAQMACAEDAAgAQsAAABCwAAAQsAAABCwBAwAIA
ELAAABCwAAAELAAAAQsAAAELAEDAAgAQsAAAELAAAAQsAAABCwAAAQsAQMACABCwAAAELAAABCwA
AAELAEDAAgBAwAIAELAAAAQsAAAELAAAAQsAQMACAEDAAgAQsAAABCwAAAELAAABCwBAwAIAELAA
ABCwAAAELAAAAQsAAAELAEDAAgAQsAAAELAAAAQsAAABCwBAwAIAQMACABCwAAAELAAABCwAAAEL
AEDAAgBAwAIAELAAAAQsAAABCwAAAQsAQMACABCwAAAQsAAABCwAAAELAAABCwBAwAIAELAAABCw
AAAELAAAAQsAQMACAEDAAgAQsAAABCwAAAQsAAABCwBAwAIAQMACABCwAAAELAAABCwAAAELAEDA
AgAQsAAAELAAAAQsAAABCwAAAQsAQMACABCwAAAQsAAABCwAAAELAAABCwBAwAIAELAAAAQsAAAE
LAAAAQsAQMACAEDAAgAQsAAABCwAAAQsAAABCwBAwAIAELAAABCwAAAELAAAAQsAAAELAEDAAgAQ
sAAAELAAAAQsAIDR7v8BghhuQDnoIlUAAAAASUVORK5CYII=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>63554</attachid>
            <date>2010-08-04 22:41:20 -0700</date>
            <delta_ts>2010-08-04 22:41:20 -0700</delta_ts>
            <desc>Chris&apos; proposal</desc>
            <filename>cmarrin_prop.png</filename>
            <type>image/png</type>
            <size>18727</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>63557</attachid>
            <date>2010-08-04 23:10:38 -0700</date>
            <delta_ts>2010-08-04 23:10:38 -0700</delta_ts>
            <desc>another proposal, switching at platform layer</desc>
            <filename>platform_proposal.png</filename>
            <type>image/png</type>
            <size>71380</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">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
gk1V7AAAAABJRU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>63559</attachid>
            <date>2010-08-04 23:47:42 -0700</date>
            <delta_ts>2010-08-04 23:47:42 -0700</delta_ts>
            <desc>virtual GraphicsContext proposal</desc>
            <filename>virtual_gc_prop.png</filename>
            <type>image/png</type>
            <size>75731</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAtUAAAJRCAYAAACKkkulAAAPQWlDQ1BJQ0MgUHJvZmlsZQAAeAGt
WHVYVM33ny1y6ZBm6W5p6VBCYkkBqV1SyiUEFEFClJAUUZAGUVIBRVCkRPRVEEFFDEQQDEQEFaT2
Owv6vr943uf3z2+e5+585jPnnJk7595z9lwAWPi8wsKCkACA4JAIEn6vIc75gAuOegIgABqwAmnA
40UIDzOwsbGEIv/Sfj6D0rCNylFs/YvQv9GMJLggAAhZKMDut4P1Kdh7B9tT8JGIsAgo40/BBH8v
IsTHIJYl2eONIK6FmNFvB7dTsPcOHqTgKIIfRXccACrWEGJACADU8xDrEn3CCXCasi6RGE4Ihjgb
AKRucHAotM/8GPKShDAS1GVehViUci6wh80TXqr90I70P1xoDgAt0B7X0j+chDEAnMuQp/2HW8Zv
nxWCczjcV0WZYg0gsIYAYN6Qycvi0GYuAJs5ZPJ6BZm8WQkA6hUA3UGESFLUtiyURjwC4P8a79zz
bw0UdA7FwVIgG4FDdCCjUDZoE4wXVT71a1oDug6sJkMPkxPzB9Yoti2OGM5ZLnPuIp4ZPg5+NQEX
wRhcoVC78AsRspiwuKlEoGS2VKf0e1lmOSN5kkK14ktlJhWz3Smq/epAw0QzSeuO9mcdFl0tPRf9
owZlhneNZk3oTOX32u47bJZrft1i3HLdis9ay+aAbRy+2K7TfsJhzYnf2fhAqEuF69hBjPtuD6Jn
jleP9xJR2MfBN8uv338zUPtQfFBXCCbUOuzi4YVwo4izkYtH9KO9Y4JiSUdjjiXFnTyeHp+WkHEi
NTEuKTrZP8XhpGGq1CmGU/On76WVp0dmmGfyZM6daclKyHbMkctF577Mu5Z/6qx7gfI56nOvC1vO
n77gVaRRzFQ8d7GnpLg0usyhfHcFe8WPyqdV7dUZNY6XRC4t1XZfzrziVidTt1p/r6Gw0b9Jq5mu
eeJq/bW4FqtWXOtS293r+TcI7So3UTcfd2R37r9Fc6v/dmKXfhf5Tlf3sR6dXtDb25fSb3mX7e7L
gep7hwd17tPff/mg4a+Eh3aPxB59H+oaPvXYdoR75N2TxtEjY3pP6Z4+fVb2PGhc8wX1i6cTVS8j
Xhm/5nj98U3HZNZbwpTaO4Z3n6Z7Z86+95lVml2fu/8h/yPhk9pnhs8f5ke+DCwMfB1fJC8ZLp//
QfezatVtzXTDZyuXTIb+NwAziMPIXchR1A10M+Ye1QqNDu1ZeipsJMN3pjgWwJoI/R/COcwlzR3N
c4N3lp9KQFJwH44odEK4XOSu6Iw4lYSkpKlUqHSeTLvstDyjgroiUemMcpfKoqqomp16msYtzc/a
NHv4dVR19+k564cYJBkWGF0xvm0ybDq1d8mMypzLQspSa7+ZlZN1oM0R22R8rl25/VWHAcd3zsgD
Ii5Grl5uJw6Wund5THqSvYUI5sRQn3O+fX7fA4QDHQ5lBg2EoEKNwo4f7idtRHBE8kUJHhGJloiR
jJU8KnFMPE74OE88WwJtwsaJhcQ3SY+S21NKT6alBp+yO62WtittJX00oy4z5Yxrlko2Nns2pzv3
Qh4p3+asXAG2YP7cw8LG81kXIotci40uypRwliJLF8omygcqKiqDq3Sqmauna9ouZdR6Xla9wnDl
fV1X/YUGUqNFk1gTufnF1eZraS2EVo02bNvb6603TrW731TpoOoY76y/FX/brkusa+XOg+6LPSG9
+n3sfXP9N+9mDnjdUx2kG5y83/Yg8y/iQ71HokNsw6jhpcevRwaftI4WjyU9DXyGf645Lgi9/3Vi
/GXvq6bXRW/SJ+Pehk75vHOdxs9YvDedNZ4z+KD30eiT+Wf8vNuXwIXYr1mLtd+6lyaWV37w/Nyz
4rGa9Ktu7cn6yqbAlh7ZYNv/vMAd9CHUEI1IXeQM6gKagNGlkqbmo+Gm5aETphfFyjLIMIoysTKt
M0+wNMJooMH2i72Ng8SpyPl1VxNXCLc89yJPC28UnzY/gv+hQIGgF04Bty70ULhUhCRqIiYgtize
I5EsqSu5JtUqHSIjI/NBtkbOV15cfk6hVjFQSUnph3KHSsJuU1V61TG1InUvDUmNRc12rXht0z3M
eyZ0qnRD9NT1EfoPDc4ZEowUjYHxkMlF09C9xvvY930wu22eb3HI0ng/7/7vVvetz9q42YrYzuOv
2yXa2zoIOCw69joVOIceMHURciG7Trp1Hyx3T/II8LT0UvXmJSAIH4gPfGp9T/p5+esHCAaQA98e
6gkqDz4ZcgjGFfXDAiQq0kL484jeyPqowiPJ0YdjPGLNjiodQxzrj0s6bhKPiu9OiD+hcWIpsT7J
L1k4+XVK4Um7VKbUR6cyTpun0acNpWdn4DN3Zb46U57lks2W/VdOcq5BHsjryU8+a1bAWjB5rrEw
/vyBCypFzEWLxWMXO0oqS7PK4spDK7wqraqU4RP2qebupfLa45c9rujV4epR9R8bhhpbmkqaU6+G
XXNtMWlVbOO9TnV98car9rs3GztKOrtvzXQh7nB3q/TY9cb01fa/G5C+Fz84/yDsIfWjO8NVI62j
K89iXri8Knmb997qc9UPc4r/d3IfJSdQqQFwHmYER5gfHdAA5DQDIAHzF4cnADYMANhrAiSdDkCs
TQGEuC/4kz/YgCwwAR4gGuSAOnAXTIJfCHaEIsISEYhIRdQgBhBzSDqkPNIeeQx5CUYZFEoVFYiq
Rs2gRdF+6Hr0MkYbk4IZpuKjCqTqoMZSH6RupsHQuNI009LQetF20LHTHaZ7RC9Nn0o/i92LrWGg
ZQhieMpozNjGJM5UzMzOnM6CZoln2WSNZV1jO8pGZk/hoOPI4eTlrN6lvKuXy47rHXcUDz1PBa8W
7yhfED+av1hASeCeoKfgGu6c0G6hMeEIEXaR66IuoptiF8UNxeck0iXlJYelIqW5pTtl3GWBbIWc
sdysfLqCrMKQYqySsTK/8i+V57tbVAvVjqr7adhqGmnpaKvsUdPR0zXX84QZrsLwoTHSRNP0+N5B
M1ZzW4tsyzErbmtvmwbbLTtr+3KHFSdz58oDm64Obg3uVB4enje8mQhBxD5fdb+eAMPAwSC74InQ
gLBVUgqMZ9VH9kSPxAYeQ8WVxWsnTCWeTlZOeZt69XRWengmPkslhz13PX+i4HZhyYXoYqcSxTKa
8snK1uqTlxwvS9VR1y81TjePX3vS2n+9t/1Ox81b7V1t3dd6m/obBq4MXn5Q/rByqPhxyZOLY2nP
UsdzJ+pfPXnzdYp7WuW94dzej4qfyPOdC65fp75ZLNUsL/6Q+mm+4r0a8st/zWldbYN5481m1da5
7fiBBSJgD7AHISAVlINO8Ax8Q2ARUghTBBGRiKhA9CHeI2mh/x2Q8cg65AsULUoHFYFqRi2ildAR
6A4MEmOBOYt5S6VAdZxqmFqEOpL6AY0wTQzNCK0MbSrtNJ0hXTk9oPei78VKYNOwiwzODH2MGozN
TJJMVcwizOUsQixVrJKsjWxqbN3sluwTHP4cvzgzdgntugl9/5n7NI8kz33eQ3yMfFf58fzfBLIF
lQTHcDFCgkL3hMNEeGAGI8EYNSgeJSEq8UQyTkpaakI6VUZF5q1shpym3Hv5AgUDhUXFBqUTyu4q
ursFVRGqH9VG1Ls06jTLtAq1s/fk6OTpFulV67cZDBnOGGNMRE0t9x7ZV2M2bSFg6b2/0mrWRsb2
MP62PcLB3DHHaeKAsEuIa6vbhruxR4bnqDc3wYdY78vqdz6APTA7iCU4I5Qx7AwJG54RSRuVFc0e
U3RU5Fjrcf340RNhSczJ1046pK6cLku3ztg405DtmcuTN3I245zVeeyFh8V5JY5lfOUzlfXVEZe0
LmOu9NYTGpFNl67iW5CtTdcD2sVuTnWW3ibeEe3+0HulP2RA5t7X+7V/ER7xDz15nP5Ef3Tlac1z
pxfYiZuvPN9gJhumrN99mUmbxc1d+2j+aXI+7Mv611PfOJeqvyv+aF/Zu/psjbi+uXlm2//8wBgE
wne/HUwiaBDKCHdEOuIWYgEpinRHliDfoWRR8ahXaF10DYYVcwKzDN/yaWoP6jc0njRTtH60C3Qx
9Cj6LCwO28RgxDDFmMtkwrTF3M4SwarC+p3tBvtxDiNOBs7xXbVcsdyWPGI8ZN6XfB38pQKJgv44
WyFdYTkRflEWMYzYqvg3iY+Sk1KvpZ/LjMmOyA3LP1EYVZxRRqtI7N6nekgtXb1JY0hzSZtxj4LO
ft0AvRT9CoNew9dGWyY8pjp7PfelmLWbf7GU2u9ldcH6qS0z3tYuw/6+I62TsXPKgQFXGjezgxnu
jz05vFy8ywgLPoa+I/6kQKZDt4J9QwXDXpDyI/BR7EdexBQfdYP/Od4klCcSk0VTZlPvnW5OL8o8
muWco5hHlT9UcLbQ8QJ1UcdFv1LGsmsV+Mqv1acuCdS2XjlQz9Hwpqn2akSLThu4fr89q8PmFuvt
8Tv5PU59XP0TAyWDPg8k//r+qHM4fcR9VHgs/xnt89Mv2CZKXom+rpzkfZs+9W3acubi++k5rg/6
H70/Hf2cNJ/yhbRw8Kv6ItPi82+lS07LjMud352///yR/nPXz8oVyZXiVabVpNVvv/C/Wtc416LX
HqyzrbutV68vbKhvRG3UbDzdxGzu3iRu5m32bS5vCW9Zb8VuVW893lonS5Dx5DhyLXmM4v+deomS
PwCdUWhQKAlnaQQLnP/XFhwUCWuo7cYKf7Eh3lbWsKfgD2ERNpRakBNea+FRdiawZ4blELNvgKnZ
b4wjehlbQMwHecVYfyMriLEQW/qSTPEQQzsI50AvcxuIGSEO9AlxsPvNR4cFbde4FJm0sAhDijwX
xMU+4SZ/ZFpj/e2dfusOkCLxDhCLQpmxQ6EWFHnKWqtEH+Pfe0OiQ4KsLCEP94xkD4gwo+yfHWJp
YAq8AAn4AR8gByyBEXyzdn5xkMfBcSic9QHhUG5mW+6PlOP2OOB/aMkB3217Uds6h8As1An2CEgk
QVs7du8DAuS8YOz+zSjWKX5U3Pgz2l4xaHvVPxoWcPTfmT87pOxuZyYAECH+wxP+8JSVg6/5RhWG
xmg5+qPF0cpoVbQhWgfGBk2AQ3OieYAcejdaA22A1kNrwznNofkb83/vZedsvP++Rwu4mg+I3D6R
kL/Z/7UqCIDfMLZrd3jKgAo+G8UnKKjnNjmB0v/XFuETDet6AIxCw2JIAX7+ETgD+OXCRxZnFkKQ
l8UpKyopgv8Afu1gcQUvWNQAAAAJcEhZcwAACxMAAAsTAQCanBgAACAASURBVHgB7L0LfBXVvfb/
pCaQYBMIGKykCshFvLCjRAUV0ASkoi3JsaKtElu0DRx7Kkn7Vk7oETXY8ifH90j4tJ6AbUMrYJWo
BO0bTo8hGqwGMVF2qIkaJChJNZFEspEEEzv/9Zu9184k5LJz27c8K5/JzKxZ1+9a85tn1l4zA9CR
AAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQ
AAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQ
AAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQ
AAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQ
AAmQAAl4j0CIt7IyDON6ldcN3sqP+ZAACZAACZAACZAACZCAtwiEeisjlc8NanlYLXQkQAIkQAIk
QAIkQAIkEFQEvhZUtWFlSIAESIAESIAESIAESMAHBCiqfQCdWZIACZAACZAACZAACQQXAYrq4GpP
1oYESIAESIAESIAESMAHBCiqfQCdWZIACZAACZAACZAACQQXAYrq4GpP1oYESIAESIAESIAESMAH
BCiqfQCdWZIACZAACZAACZAACQQXAYrq4GpP1oYESIAESIAESIAESMAHBCiqfQCdWZIACZAACZAA
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
0OmrSbXUiD4jnM2QBCOeVVibYOLMPtejE1CuzuAU0RpvuA9P58zDbRIgARIgARIggcknQFE9+X0Q
UhYYkadGO8WziuzhcXYE/1yXwGiCebT46xbIBCRAAiRAAiRAAhNOgKJ6wpGHT4X+RJ+/uPBpMVtC
AiRAAiRAAiRAAv4JcG4u/1wYSwIkQAIkQAIkQAIkQAIBE6CoDhgVE5IACZAACZAACZAACZCAfwIU
1f65MJYESIAESIAESIAESIAEAiZAUR0wKiYkARIgARIgARIgARIgAf8EKKr9c2EsCZAACZAACZAA
CZAACQRMgKI6YFRMSAIkQAIkQAIkQAIkQAL+CVBU++fCWBIgARIgARIgARIgARIImABFdcComJAE
SIAESIAESIAESIAE/BOgqPbPhbEkQAIkQAIkQAIkQAIkEDABiuqAUTEhCZAACZAACZAACZAACfgn
QFHtnwtjSYAESIAESIAESIAESCBgAhTVAaNiQhIgARIgARIgARIgARLwT4Ci2j8XxpIACZAACZAA
CZAACZBAwAQoqgNGxYQkQAIkQAIkQAIkQAIk4J8ARbV/LowlARIgARIgARIgARIggYAJUFQHjIoJ
SYAESIAESIAESIAESMA/AYpq/1wYSwIkQAIkQAIkQAIkQAIBE6CoDhgVE5IACZAACZAACZAACZCA
fwIU1f65MJYESIAESIAESIAESIAEAiZAUR0wKiYkARIgARIgARIgARIgAf8EKKr9c2EsCZAACZAA
CZAACZAACQRMgKI6YFRMSAIkQAIkQAIkQAIkQAL+CVBU++fCWBIgARIgARIgARIgARIImABFdcCo
mJAESIAESIAESIAESIAE/BOgqPbPhbEkQAIkQAIkQAIkQAIkEDABiuqAUTEhCZAACZAACZAACZAA
CfgnQFHtnwtjSYAESIAESIAESIAESCBgAhTVAaNiQhIgARIgARIgARIgARLwT4Ci2j8XxpIACZAA
CZAACZAACZBAwAQoqgNGxYQkQAIkQAIkQAIkQAIk4J8ARbV/LowlARIgARIgARIgARIggYAJUFQH
jIoJSYAESIAESIAESIAESMA/AYpq/1wYSwIkQAIkQAIkQAIkQAIBE6CoDhgVE5IACZAACZAACZAA
CZCAfwIU1f65MJYESIAESIAESIAESIAEAiZAUR0wKiYkARIgARIgARIgARIgAf8EKKr9c2EsCZAA
CZAACZAACZAACQRM4P8HvuNd/p45Ue4AAAAASUVORK5CYII=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63692</attachid>
            <date>2010-08-05 22:16:46 -0700</date>
            <delta_ts>2010-08-06 15:59:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43362-20100805221645.patch</filename>
            <type>text/plain</type>
            <size>8756</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAgYi9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IDZiNWEzYTNjNWY5MzQ4MmFiN2IyYTBj
MTYxZDkxYWViMzQxM2VlYTkuLmVmNTU3NGE1ODA3NTJhMGExZmNhNjI5MmE1NzkzOWUyZDI3MmYy
YmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcApAQCAtMTY5LDYgKzE2OSwxMiBAQCBD
YW52YXNSZW5kZXJpbmdDb250ZXh0KiBIVE1MQ2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChjb25z
dCBTdHJpbmcmIHR5cGUsIENhbnZhcwogICAgICAgICAgICAgICAgIHVzZXNEYXNoYmFyZENvbXBh
dGliaWxpdHlNb2RlID0gc2V0dGluZ3MtPnVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxp
dHlNb2RlKCk7CiAjZW5kaWYKICAgICAgICAgICAgIG1fY29udGV4dCA9IG5ldyBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQodGhpcywgZG9jdW1lbnQoKS0+aW5Db21wYXRNb2RlKCksIHVzZXNEYXNo
YmFyZENvbXBhdGliaWxpdHlNb2RlKTsKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFT
KSAmJiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgICAgICAgICBpZiAobV9jb250
ZXh0KSB7CisgICAgICAgICAgICAgICAgLy8gTmVlZCB0byBtYWtlIHN1cmUgYSBSZW5kZXJMYXll
ciBhbmQgY29tcG9zaXRpbmcgbGF5ZXIgZ2V0IGNyZWF0ZWQgZm9yIHRoZSBDYW52YXMKKyAgICAg
ICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKKyAg
ICAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVybiBtX2NvbnRleHQu
Z2V0KCk7CiAgICAgfQpAQCAtMjE2LDcgKzIyMiw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6
OndpbGxEcmF3KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICAgICAgbV9kaXJ0eVJlY3QudW5p
dGUocik7CiAgICAgICAgIHJvLT5yZXBhaW50UmVjdGFuZ2xlKGVuY2xvc2luZ0ludFJlY3QobV9k
aXJ0eVJlY3QpKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAobV9vYnNlcnZlcikKICAgICAgICAg
bV9vYnNlcnZlci0+Y2FudmFzQ2hhbmdlZCh0aGlzLCByZWN0KTsKIH0KQEAgLTI5OSwxMiArMzA1
LDggQEAgYm9vbCBIVE1MQ2FudmFzRWxlbWVudDo6aXMzRCgpIGNvbnN0CiAKIHZvaWQgSFRNTENh
bnZhc0VsZW1lbnQ6Om1ha2VSZW5kZXJpbmdSZXN1bHRzQXZhaWxhYmxlKCkKIHsKLSNpZiBFTkFC
TEUoM0RfQ0FOVkFTKQotICAgIGlmIChpczNEKCkpIHsKLSAgICAgICAgV2ViR0xSZW5kZXJpbmdD
b250ZXh0KiBjb250ZXh0M2QgPSByZWludGVycHJldF9jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4
dCo+KHJlbmRlcmluZ0NvbnRleHQoKSk7Ci0gICAgICAgIGNvbnRleHQzZC0+cGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9DYW52YXMoKTsKLSAgICB9Ci0jZW5kaWYKKyAgICBpZiAobV9jb250ZXh0KQor
ICAgICAgICBtX2NvbnRleHQtPnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCk7CiB9CiAK
IHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5o
IGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggYjhh
N2NhMjAzZjZhOTQ2YWFiMzE0ZDBhN2MyNjJkMzFhNGMwNjkxMi4uY2IyNjM2M2FiYjY1MGM4YThj
NTNiNDlmNjQ3MjI4ZjNjOGVkZWYzOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0LmgKQEAgLTUzLDYgKzUzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAvLyBGb3Igbm9uIGFjY2VsZXJhdGVkIGNhbnZhc2VzIHJldHVybnMgMC4KICAgICAg
ICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQzRCogZ3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7
IHJldHVybiAwOyB9CiAKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvQ2FudmFzKCkge30KKwogICAgIHByaXZhdGU6CiAgICAgICAgIEhUTUxDYW52YXNFbGVtZW50
KiBtX2NhbnZhczsKICAgICB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDNiMDUzNDhjOWUyYTUxYzU5YTZlYmZlNTljNDZkNWZi
NWM5ZmUzNTUuLjhkYzVlMzU4YTM2ZmFhMTdlYmRiMTVkZWQ0MWEzZWQyZmNkNTIzZjQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAg
LTU4LDcgKzU4LDEzIEBACiAjaW5jbHVkZSAiU3Ryb2tlU3R5bGVBcHBsaWVyLmgiCiAjaW5jbHVk
ZSAiVGV4dE1ldHJpY3MuaCIKIAotI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgRU5BQkxFKEFDQ0VM
RVJBVEVEXzJEX0NBTlZBUykKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpbmNs
dWRlICJSZW5kZXJMYXllci5oIgorI2VuZGlmCisjZW5kaWYKIAogI2luY2x1ZGUgPHd0Zi9CeXRl
QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtMTAwLDYgKzEwNiw5IEBA
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKEhUTUxD
YW52YXNFbGVtZW50KiBjYW52YXMsIGJvCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQog
ICAgICwgbV91c2VzRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUodXNlc0Rhc2hib2FyZENvbXBh
dGliaWxpdHlNb2RlKQogI2VuZGlmCisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykK
KyAgICAsIG1fY29udGV4dDNEKDApCisjZW5kaWYKIHsKICNpZiAhRU5BQkxFKERBU0hCT0FSRF9T
VVBQT1JUKQogICAgIEFTU0VSVF9VTlVTRUQodXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2Rl
LCAhdXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlKTsKQEAgLTEwOCw2ICsxMTcsMjEgQEAg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQoSFRNTENh
bnZhc0VsZW1lbnQqIGNhbnZhcywgYm8KICAgICAvLyBNYWtlIHN1cmUgdGhhdCBldmVuIGlmIHRo
ZSBkcmF3aW5nQ29udGV4dCgpIGhhcyBhIGRpZmZlcmVudCBkZWZhdWx0CiAgICAgLy8gdGhpY2tu
ZXNzLCBpdCBpcyBpbiBzeW5jIHdpdGggdGhlIGNhbnZhcyB0aGlja25lc3MuCiAgICAgc2V0TGlu
ZVdpZHRoKGxpbmVXaWR0aCgpKTsKKworI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
CisgICAgaWYgKFBhZ2UqIHAgPSBjYW52YXMtPmRvY3VtZW50KCktPnBhZ2UoKSkgeworICAgICAg
ICBpZiAocC0+c2V0dGluZ3MoKS0+YWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQoKSkgeworICAg
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cjsKKyAgICAgICAgICAg
IGF0dHIuc3RlbmNpbCA9IHRydWU7CisgICAgICAgICAgICBIb3N0V2luZG93KiBob3N0V2luZG93
ID0gY2FudmFzLT5kb2N1bWVudCgpLT52aWV3KCktPnJvb3QoKS0+aG9zdFdpbmRvdygpOworICAg
ICAgICAgICAgLy8gU2V0IHVwIG91ciBjb250ZXh0CisgICAgICAgICAgICBtX2NvbnRleHQzRCA9
IEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0ciwgaG9zdFdpbmRvdyk7CisgICAgICAgICAg
ICBpZiAobV9jb250ZXh0M0QpCisgICAgICAgICAgICAgICAgaWYgKEdyYXBoaWNzQ29udGV4dCog
YyA9IGRyYXdpbmdDb250ZXh0KCkpCisgICAgICAgICAgICAgICAgICAgIGMtPnBsYXRmb3JtQ29u
dGV4dCgpLT5zZXRHcmFwaGljc0NvbnRleHQzRChtX2NvbnRleHQzRC5nZXQoKSwgSW50U2l6ZShj
YW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCkpKTsKKyAgICAgICAgfQorICAgIH0KKyNl
bmRpZgogfQogCiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6On5DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQoKQpAQCAtMTE5LDYgKzE0MywxMiBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6cmVzZXQoKQogICAgIG1fc3RhdGVTdGFjay5yZXNpemUoMSk7CiAgICAgbV9zdGF0ZVN0YWNr
LmZpcnN0KCkgPSBTdGF0ZSgpOwogICAgIG1fcGF0aC5jbGVhcigpOworI2lmIEVOQUJMRShBQ0NF
TEVSQVRFRF8yRF9DQU5WQVMpCisgICAgaWYgKG1fY29udGV4dDNEKSB7CisgICAgICAgIGlmIChH
cmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpKQorICAgICAgICAgICAgYy0+cGxh
dGZvcm1Db250ZXh0KCktPnNldEdyYXBoaWNzQ29udGV4dDNEKG1fY29udGV4dDNELmdldCgpLCBJ
bnRTaXplKGNhbnZhcygpLT53aWR0aCgpLCBjYW52YXMoKS0+aGVpZ2h0KCkpKTsKKyAgICB9Cisj
ZW5kaWYKIH0KIAogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpTdGF0ZTo6U3RhdGUoKQpAQCAt
MTQzNCw3ICsxNDY0LDE0IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp3aWxsRHJh
dyhjb25zdCBGbG9hdFJlY3QmIHIsIHVuc2lnbmVkIG9wdGlvbnMpCiAgICAgICAgIC8vIHdlJ2Qg
aGF2ZSB0byBrZWVwIHRoZSBjbGlwIHBhdGggYXJvdW5kLgogICAgIH0KIAotICAgIGNhbnZhcygp
LT53aWxsRHJhdyhkaXJ0eVJlY3QpOworI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
ICYmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICAvLyBJZiB3ZSBhcmUgZHJhd2lu
ZyB0byBoYXJkd2FyZSBhbmQgd2UgaGF2ZSBhIGNvbXBvc2l0ZWQgbGF5ZXIsIGp1c3QgY2FsbCBy
ZW5kZXJlckNvbnRlbnRDaGFuZ2VkKCkuCisgICAgUmVuZGVyQm94KiByZW5kZXJCb3ggPSBjYW52
YXMoKS0+cmVuZGVyQm94KCk7CisgICAgaWYgKG1fY29udGV4dDNEICYmIHJlbmRlckJveCAmJiBy
ZW5kZXJCb3gtPmhhc0xheWVyKCkgJiYgcmVuZGVyQm94LT5sYXllcigpLT5oYXNBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nKCkpCisgICAgICAgIHJlbmRlckJveC0+bGF5ZXIoKS0+cmVuZGVyZXJDb250
ZW50Q2hhbmdlZCgpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBjYW52YXMoKS0+d2lsbERy
YXcoZGlydHlSZWN0KTsKIH0KIAogR3JhcGhpY3NDb250ZXh0KiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmRyYXdpbmdDb250ZXh0KCkgY29uc3QKQEAgLTE3NzIsNCArMTgwOSwxMSBAQCBjb25z
dCBGb250JiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmFjY2Vzc0ZvbnQoKQogICAgIHJldHVy
biBzdGF0ZSgpLm1fZm9udDsKIH0KIAordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKK3sKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURf
MkRfQ0FOVkFTKQorICAgIGRyYXdpbmdDb250ZXh0KCktPnBsYXRmb3JtQ29udGV4dCgpLT5zeW5j
U29mdHdhcmVDYW52YXMoKTsKKyNlbmRpZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5o
IGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAppbmRleCAy
MmVkN2ZjMzA3MmZiMjY1MWRhY2JkYWQ5MDUwYzc1ODIyOWZkOTE4Li5kZDcyZGRlMjU5NmU2YjZk
YzYwMDEwYzQ5OTE1YzFkZDczZDQxYWViIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmgKQEAgLTQyLDYgKzQyLDEwIEBACiAjaW5jbHVkZSA8QXBw
bGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2VzLmg+CiAjZW5kaWYKIAorI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYW52YXNHcmFkaWVudDsKQEAg
LTU2LDYgKzYwLDEwIEBAIGNsYXNzIEltYWdlRGF0YTsKIGNsYXNzIEtVUkw7CiBjbGFzcyBUZXh0
TWV0cmljczsKIAorI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCitjbGFzcyBHcmFw
aGljc0NvbnRleHQzRDsKKyNlbmRpZgorCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBj
bGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgOiBwdWJsaWMgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCB7CkBAIC0yMTIsNiArMjIwLDEyIEBAIHB1YmxpYzoKICAgICBMaW5lQ2FwIGdldExpbmVD
YXAoKSBjb25zdCB7IHJldHVybiBzdGF0ZSgpLm1fbGluZUNhcDsgfQogICAgIExpbmVKb2luIGdl
dExpbmVKb2luKCkgY29uc3QgeyByZXR1cm4gc3RhdGUoKS5tX2xpbmVKb2luOyB9CiAKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKKworI2lmIEVOQUJM
RShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQzRCog
Z3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQzRC5nZXQoKTsgfQor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgc3RydWN0IFN0YXRlIHsKICAgICAgICAgU3RhdGUoKTsK
QEAgLTI4MSw2ICsyOTUsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBP
UlQpCiAgICAgYm9vbCBtX3VzZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZTsKICNlbmRpZgor
CisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyAgICBPd25QdHI8R3JhcGhpY3ND
b250ZXh0M0Q+IG1fY29udGV4dDNEOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggNWY5YWQ5MWU4MzcwNWU1NDU3MTdmZThiMzQwN2E3Y2I1YWE2M2I0MS4uZmZlMTdiNjFjOTAz
MzYxMWMzMzI0OGQ4MWM2ZGRmNGUwNjBkOWMxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjptYXJrQ29udGV4dENoYW5nZWQoKQogICAgIG1fbWFya2VkQ2FudmFz
RGlydHkgPSB0cnVlOwogfQogCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXMoKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnBhaW50
UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKIHsKICAgICBpZiAobV9tYXJrZWRDYW52YXNEaXJ0
eSkgewogICAgICAgICAvLyBGSVhNRTogSXQgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgdG8gY2xl
YXIgdGhlIGltYWdlIGJlZm9yZSBkb2luZyBhIHJlYWRiYWNrLgpAQCAtMTY0LDkgKzE2NCw3IEBA
IGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZh
cygpCiAgICAgICAgIGNhbnZhcygpLT5idWZmZXIoKS0+Y2xlYXJJbWFnZSgpOwogICAgICAgICBt
X21hcmtlZENhbnZhc0RpcnR5ID0gZmFsc2U7CiAgICAgICAgIG1fY29udGV4dC0+cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXModGhpcyk7Ci0gICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpiZWdp
blBhaW50KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0LmggYi9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCmlu
ZGV4IGI1YTYzNDM1Y2QyM2Y2Y2E2ZWUyMzBkZmNhMGJmYzNhM2E3YjQ2MWQuLjUzNzEzMDVjMzg4
NjEwYTI1YWYwYTUyZGI1NzY2NWM2NjE4NWQ4YTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaApAQCAtMzA3LDkgKzMwNyw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogCi0gICAgLy8gUmV0dXJuIHZh
bHVlIHRydWUgaW5kaWNhdGVzIGNhbnZhcyBpcyB1cGRhdGVkIGR1cmluZyB0aGUgY2FsbCwKLSAg
ICAvLyBmYWxzZSBpbmRpY2F0ZXMgbm8gdXBkYXRlcy4KLSAgICBib29sIHBhaW50UmVuZGVyaW5n
UmVzdWx0c1RvQ2FudmFzKCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvQ2FudmFzKCk7CiAKICAgICAvLyBIZWxwZXJzIGZvciBub3RpZmljYXRpb24gYWJvdXQgcGFp
bnQgZXZlbnRzLgogICAgIHZvaWQgYmVnaW5QYWludCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63776</attachid>
            <date>2010-08-06 15:59:34 -0700</date>
            <delta_ts>2010-08-06 16:07:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43362-20100806155933.patch</filename>
            <type>text/plain</type>
            <size>13343</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWVhNmE4YzBiYTkwMzgyNDI3ZTdmMWE4ZWJlN2JlYWY0OGE5MTE5Ni4uMDhlYjY1NTQ5MTBhYjdl
NjEyYmE1ZGU2NDJhNTg2YzdjZTgwMzBkZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMC0wOC0wNSAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY2VsZXJhdGVkIDJkIGNhbnZhc2VzIHNob3Vs
ZCBnZXQgY29tcG9zaXRpbmcgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MzM2MgorCisgICAgICAgIEFsbG93cyBmb3IgMmQgY2FudmFzIHJl
bmRlcmluZyBjb250ZXh0cyB0byB1c2UgYSBHcmFwaGljc0NvbnRleHQzRCBmb3IKKyAgICAgICAg
YWNjZWxlcmF0ZWQgcmVuZGVyaW5nLiAgVGhlIHJlbmRlcmluZyBjb250ZXh0IGhvbGRzIHRoZSBH
cmFwaGljc0NvbnRleHQzRAorICAgICAgICBhbGl2ZSBhbmQgZXhwb3NlcyBpdCB0byB0aGUgY29t
cG9zaXRvci4gIFRoZSAzZCBjb250ZXh0IGl0c2VsZiBpcyBwYXNzZWQKKyAgICAgICAgZG93biB0
aHJvdWdoIHRoZSBHcmFwaGljc0NvbnRleHQgdG8gdXNlIGZvciBhY3R1YWwgcmVuZGVyaW5nOgor
ICAgICAgICBodHRwczovL2J1Zy00MzM2Mi1hdHRhY2htZW50cy53ZWJraXQub3JnL2F0dGFjaG1l
bnQuY2dpP2lkPTYzNTU3CisKKyAgICAgICAgVGhpcyBhcHByb2FjaCB3aWxsIGxldCB1cyBzaW11
bHRhbmVvdXNseSBwcm90b3R5cGUgYWNjZWxlcmF0ZWQgdGVjaG5pcXVlcworICAgICAgICBmb3Ig
Y2FudmFzIDJkIGFuZCByZXZpc2UgdGhlIGRlc2lnbiBvZiBjYW52YXMgZWxlbWVudHMgd2l0aG91
dCBkZXN0YWJpbGl6aW5nCisgICAgICAgIGFsbCBwb3J0cy4KKworICAgICAgICAqIGh0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6
OmdldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OndpbGxE
cmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjptYWtlUmVuZGVyaW5n
UmVzdWx0c0F2YWlsYWJsZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzQWNjZWxlcmF0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZXNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OndpbGxEcmF3KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpncmFwaGljc0NvbnRleHQz
RCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN5bmNTb2Z0d2FyZUNhbnZhcyk6CisK
IDIwMTAtMDgtMDYgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
CmluZGV4IDZiNWEzYTNjNWY5MzQ4MmFiN2IyYTBjMTYxZDkxYWViMzQxM2VlYTkuLmVmNTU3NGE1
ODA3NTJhMGExZmNhNjI5MmE1NzkzOWUyZDI3MmYyYmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcApAQCAtMTY5LDYgKzE2OSwxMiBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBIVE1M
Q2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChjb25zdCBTdHJpbmcmIHR5cGUsIENhbnZhcwogICAg
ICAgICAgICAgICAgIHVzZXNEYXNoYmFyZENvbXBhdGliaWxpdHlNb2RlID0gc2V0dGluZ3MtPnVz
ZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCk7CiAjZW5kaWYKICAgICAgICAg
ICAgIG1fY29udGV4dCA9IG5ldyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQodGhpcywgZG9jdW1l
bnQoKS0+aW5Db21wYXRNb2RlKCksIHVzZXNEYXNoYmFyZENvbXBhdGliaWxpdHlNb2RlKTsKKyNp
ZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCisgICAgICAgICAgICBpZiAobV9jb250ZXh0KSB7CisgICAgICAgICAgICAgICAgLy8g
TmVlZCB0byBtYWtlIHN1cmUgYSBSZW5kZXJMYXllciBhbmQgY29tcG9zaXRpbmcgbGF5ZXIgZ2V0
IGNyZWF0ZWQgZm9yIHRoZSBDYW52YXMKKyAgICAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVj
YWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKKyAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CiAgICAgfQpAQCAtMjE2LDcgKzIy
Miw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OndpbGxEcmF3KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkKICAgICAgICAgbV9kaXJ0eVJlY3QudW5pdGUocik7CiAgICAgICAgIHJvLT5yZXBhaW50
UmVjdGFuZ2xlKGVuY2xvc2luZ0ludFJlY3QobV9kaXJ0eVJlY3QpKTsKICAgICB9Ci0gICAgCisK
ICAgICBpZiAobV9vYnNlcnZlcikKICAgICAgICAgbV9vYnNlcnZlci0+Y2FudmFzQ2hhbmdlZCh0
aGlzLCByZWN0KTsKIH0KQEAgLTI5OSwxMiArMzA1LDggQEAgYm9vbCBIVE1MQ2FudmFzRWxlbWVu
dDo6aXMzRCgpIGNvbnN0CiAKIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6Om1ha2VSZW5kZXJpbmdS
ZXN1bHRzQXZhaWxhYmxlKCkKIHsKLSNpZiBFTkFCTEUoM0RfQ0FOVkFTKQotICAgIGlmIChpczNE
KCkpIHsKLSAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0M2QgPSByZWludGVy
cHJldF9jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KHJlbmRlcmluZ0NvbnRleHQoKSk7Ci0g
ICAgICAgIGNvbnRleHQzZC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKLSAgICB9
Ci0jZW5kaWYKKyAgICBpZiAobV9jb250ZXh0KQorICAgICAgICBtX2NvbnRleHQtPnBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCk7CiB9CiAKIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnJl
Y2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggYjhhN2NhMjAzZjZhOTQ2YWFiMzE0ZDBhN2MyNjJk
MzFhNGMwNjkxMi4uY2IyNjM2M2FiYjY1MGM4YThjNTNiNDlmNjQ3MjI4ZjNjOGVkZWYzOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysr
IGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTUzLDYg
KzUzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBGb3Igbm9uIGFjY2VsZXJh
dGVkIGNhbnZhc2VzIHJldHVybnMgMC4KICAgICAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQz
RCogZ3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKKyAgICAgICAgdmly
dHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkge30KKwogICAgIHByaXZh
dGU6CiAgICAgICAgIEhUTUxDYW52YXNFbGVtZW50KiBtX2NhbnZhczsKICAgICB9OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDNi
MDUzNDhjOWUyYTUxYzU5YTZlYmZlNTljNDZkNWZiNWM5ZmUzNTUuLmQyNzllMmRhY2Q4ZmJjMTEy
MmI1MjhjZGY2YzBkYzI2Yjk5YWQ5ZWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTU4LDcgKzU4LDEzIEBACiAjaW5jbHVkZSAi
U3Ryb2tlU3R5bGVBcHBsaWVyLmgiCiAjaW5jbHVkZSAiVGV4dE1ldHJpY3MuaCIKIAotI2luY2x1
ZGUgPHN0ZGlvLmg+CisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyNpbmNsdWRl
ICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2VuZGlm
CisjZW5kaWYKIAogI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgpAQCAtMTAwLDYgKzEwNiw5IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMsIGJvCiAj
aWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICwgbV91c2VzRGFzaGJvYXJkQ29tcGF0
aWJpbGl0eU1vZGUodXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlKQogI2VuZGlmCisjaWYg
RU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyAgICAsIG1fY29udGV4dDNEKDApCisjZW5k
aWYKIHsKICNpZiAhRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIEFTU0VSVF9VTlVTRUQo
dXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlLCAhdXNlc0Rhc2hib2FyZENvbXBhdGliaWxp
dHlNb2RlKTsKQEAgLTEwOCwxNyArMTE3LDUyIEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMsIGJvCiAg
ICAgLy8gTWFrZSBzdXJlIHRoYXQgZXZlbiBpZiB0aGUgZHJhd2luZ0NvbnRleHQoKSBoYXMgYSBk
aWZmZXJlbnQgZGVmYXVsdAogICAgIC8vIHRoaWNrbmVzcywgaXQgaXMgaW4gc3luYyB3aXRoIHRo
ZSBjYW52YXMgdGhpY2tuZXNzLgogICAgIHNldExpbmVXaWR0aChsaW5lV2lkdGgoKSk7CisKKyNp
ZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorICAgIGlmIChQYWdlKiBwID0gY2FudmFz
LT5kb2N1bWVudCgpLT5wYWdlKCkpIHsKKyAgICAgICAgaWYgKHAtPnNldHRpbmdzKCktPmFjY2Vs
ZXJhdGVkMmRDYW52YXNFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZp
ZXcgPSBjYW52YXMtPmRvY3VtZW50KCktPnZpZXcoKSkgeworICAgICAgICAgICAgICAgIGlmIChT
Y3JvbGxWaWV3KiByb290VmlldyA9IHZpZXctPnJvb3QoKSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoSG9zdFdpbmRvdyogaG9zdFdpbmRvdyA9IHZpZXctPnJvb3QoKS0+aG9zdFdpbmRvdygp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXQgdXAgb3VyIGNvbnRleHQKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBhdHRyLnN0ZW5jaWwgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9jb250ZXh0M0QgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHIs
IGhvc3RXaW5kb3cpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fY29udGV4dDNEKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3
aW5nQ29udGV4dCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLT5zZXRHcmFw
aGljc0NvbnRleHQzRChtX2NvbnRleHQzRC5nZXQoKSwgSW50U2l6ZShjYW52YXMtPndpZHRoKCks
IGNhbnZhcy0+aGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgogfQogCiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6On5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQoKQogewogfQog
Citib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNBY2NlbGVyYXRlZCgpIGNvbnN0Cit7
CisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyAgICByZXR1cm4gbV9jb250ZXh0
M0Q7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6cmVzZXQoKQogewogICAgIG1fc3RhdGVTdGFjay5yZXNpemUoMSk7
CiAgICAgbV9zdGF0ZVN0YWNrLmZpcnN0KCkgPSBTdGF0ZSgpOwogICAgIG1fcGF0aC5jbGVhcigp
OworI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisgICAgaWYgKG1fY29udGV4dDNE
KSB7CisgICAgICAgIGlmIChHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpKQor
ICAgICAgICAgICAgYy0+c2V0R3JhcGhpY3NDb250ZXh0M0QobV9jb250ZXh0M0QuZ2V0KCksIElu
dFNpemUoY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSkpOworICAgIH0KKyNl
bmRpZgogfQogCiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OlN0YXRlOjpTdGF0ZSgpCkBAIC0x
NDM0LDcgKzE0NzgsMTQgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OndpbGxEcmF3
KGNvbnN0IEZsb2F0UmVjdCYgciwgdW5zaWduZWQgb3B0aW9ucykKICAgICAgICAgLy8gd2UnZCBo
YXZlIHRvIGtlZXAgdGhlIGNsaXAgcGF0aCBhcm91bmQuCiAgICAgfQogCi0gICAgY2FudmFzKCkt
PndpbGxEcmF3KGRpcnR5UmVjdCk7CisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykg
JiYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIC8vIElmIHdlIGFyZSBkcmF3aW5n
IHRvIGhhcmR3YXJlIGFuZCB3ZSBoYXZlIGEgY29tcG9zaXRlZCBsYXllciwganVzdCBjYWxsIHJl
bmRlcmVyQ29udGVudENoYW5nZWQoKS4KKyAgICBSZW5kZXJCb3gqIHJlbmRlckJveCA9IGNhbnZh
cygpLT5yZW5kZXJCb3goKTsKKyAgICBpZiAobV9jb250ZXh0M0QgJiYgcmVuZGVyQm94ICYmIHJl
bmRlckJveC0+aGFzTGF5ZXIoKSAmJiByZW5kZXJCb3gtPmxheWVyKCktPmhhc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmcoKSkKKyAgICAgICAgcmVuZGVyQm94LT5sYXllcigpLT5yZW5kZXJlckNvbnRl
bnRDaGFuZ2VkKCk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGNhbnZhcygpLT53aWxsRHJh
dyhkaXJ0eVJlY3QpOwogfQogCiBHcmFwaGljc0NvbnRleHQqIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZHJhd2luZ0NvbnRleHQoKSBjb25zdApAQCAtMTc3Miw0ICsxODIzLDExIEBAIGNvbnN0
IEZvbnQmIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YWNjZXNzRm9udCgpCiAgICAgcmV0dXJu
IHN0YXRlKCkubV9mb250OwogfQogCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQoreworI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8y
RF9DQU5WQVMpCisgICAgZHJhd2luZ0NvbnRleHQoKS0+c3luY1NvZnR3YXJlQ2FudmFzKCk7Cisj
ZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggMjJlZDdmYzMwNzJmYjI2NTFkYWNi
ZGFkOTA1MGM3NTgyMjlmZDkxOC4uZjYxMDI1MGJjODgwZDMzYzdjNjAyOWQ5ODQ3YmFkNDZjMWQ4
NmVlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaAorKysgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oCkBAIC00Miw2ICs0MiwxMCBAQAogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBw
bGljYXRpb25TZXJ2aWNlcy5oPgogI2VuZGlmCiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ2FudmFzR3JhZGllbnQ7CkBAIC01Niw2ICs2MCwxMCBAQCBjbGFz
cyBJbWFnZURhdGE7CiBjbGFzcyBLVVJMOwogY2xhc3MgVGV4dE1ldHJpY3M7CiAKKyNpZiBFTkFC
TEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CisjZW5k
aWYKKwogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEIDogcHVibGljIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgewpAQCAtNjUsNiArNzMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKCk7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXMyZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0OwogCiAgICAgQ2FudmFzU3R5bGUqIHN0cm9r
ZVN0eWxlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTdHJva2VTdHlsZShQYXNzUmVmUHRyPENhbnZh
c1N0eWxlPik7CkBAIC0yMTIsNiArMjIxLDEyIEBAIHB1YmxpYzoKICAgICBMaW5lQ2FwIGdldExp
bmVDYXAoKSBjb25zdCB7IHJldHVybiBzdGF0ZSgpLm1fbGluZUNhcDsgfQogICAgIExpbmVKb2lu
IGdldExpbmVKb2luKCkgY29uc3QgeyByZXR1cm4gc3RhdGUoKS5tX2xpbmVKb2luOyB9CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKKworI2lmIEVO
QUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQz
RCogZ3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQzRC5nZXQoKTsg
fQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgc3RydWN0IFN0YXRlIHsKICAgICAgICAgU3RhdGUo
KTsKQEAgLTI4MSw2ICsyOTYsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NV
UFBPUlQpCiAgICAgYm9vbCBtX3VzZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZTsKICNlbmRp
ZgorCisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyAgICBPd25QdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IG1fY29udGV4dDNEOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggNWY5YWQ5MWU4MzcwNWU1NDU3MTdmZThiMzQwN2E3Y2I1YWE2M2I0MS4uZmZlMTdiNjFj
OTAzMzYxMWMzMzI0OGQ4MWM2ZGRmNGUwNjBkOWMxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjptYXJrQ29udGV4dENoYW5nZWQoKQogICAgIG1fbWFya2VkQ2Fu
dmFzRGlydHkgPSB0cnVlOwogfQogCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKIHsKICAgICBpZiAobV9tYXJrZWRDYW52YXNE
aXJ0eSkgewogICAgICAgICAvLyBGSVhNRTogSXQgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgdG8g
Y2xlYXIgdGhlIGltYWdlIGJlZm9yZSBkb2luZyBhIHJlYWRiYWNrLgpAQCAtMTY0LDkgKzE2NCw3
IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0Nh
bnZhcygpCiAgICAgICAgIGNhbnZhcygpLT5idWZmZXIoKS0+Y2xlYXJJbWFnZSgpOwogICAgICAg
ICBtX21hcmtlZENhbnZhc0RpcnR5ID0gZmFsc2U7CiAgICAgICAgIG1fY29udGV4dC0+cGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9DYW52YXModGhpcyk7Ci0gICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KLSAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpi
ZWdpblBhaW50KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmggYi9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5o
CmluZGV4IGI1YTYzNDM1Y2QyM2Y2Y2E2ZWUyMzBkZmNhMGJmYzNhM2E3YjQ2MWQuLjUzNzEzMDVj
Mzg4NjEwYTI1YWYwYTUyZGI1NzY2NWM2NjE4NWQ4YTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaApAQCAtMzA3LDkgKzMwNyw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogCi0gICAgLy8gUmV0dXJu
IHZhbHVlIHRydWUgaW5kaWNhdGVzIGNhbnZhcyBpcyB1cGRhdGVkIGR1cmluZyB0aGUgY2FsbCwK
LSAgICAvLyBmYWxzZSBpbmRpY2F0ZXMgbm8gdXBkYXRlcy4KLSAgICBib29sIHBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVz
dWx0c1RvQ2FudmFzKCk7CiAKICAgICAvLyBIZWxwZXJzIGZvciBub3RpZmljYXRpb24gYWJvdXQg
cGFpbnQgZXZlbnRzLgogICAgIHZvaWQgYmVnaW5QYWludCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZDM1MzViNDM0YmZiNGI4ZTcyMjE2NjMy
NmUwM2I5Yjg4NzVkMzdlMy4uYTJlMDE4YWRjYWI0MmQ1MWQzM2QzOGJkNTM5N2Y3ZTM4ZDA2NTAx
MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0x
MTYsNiArMTE2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZvbnQ7CiAgICAg
Y2xhc3MgR2VuZXJhdG9yOwogICAgIGNsYXNzIEdyYWRpZW50OworICAgIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDNEOwogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKICAg
ICBjbGFzcyBHcmFwaGljc0NvbnRleHRQcml2YXRlOwogICAgIGNsYXNzIEltYWdlQnVmZmVyOwpA
QCAtMzkzLDYgKzM5NCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHBhdHRlcm4g
Z2V0SGFpa3VTdHJva2VTdHlsZSgpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShTS0lBKQorICAg
ICAgICB2b2lkIHNldEdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3Qg
SW50U2l6ZSYpOworICAgICAgICB2b2lkIHN5bmNTb2Z0d2FyZUNhbnZhcygpOworI2VuZGlmCisK
ICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHNhdmVQbGF0Zm9ybVN0YXRlKCk7CiAgICAgICAg
IHZvaWQgcmVzdG9yZVBsYXRmb3JtU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAppbmRleCBhZTA4OGI2ZjRl
MjcyNzllMjg3NWNmMjEwYzBkNWI1YmNlYTA4Yzk2Li5lYzAwMGNhYWZiZjRiNjJhNDliYmFjY2Iy
NjNlOGRhZWE4MDI3OTQ1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCkBAIC0xMjc2LDQgKzEyNzYsMjAgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnRyYW5zbGF0ZShmbG9hdCB3LCBmbG9hdCBoKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmVGbG9hdFRvU2tTY2FsYXIo
aCkpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0R3JhcGhpY3NDb250ZXh0M0QoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyNpZiBV
U0UoR0xFUzJfUkVOREVSSU5HKQorICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXRHcmFwaGljc0Nv
bnRleHQzRChjb250ZXh0M0QsIHNpemUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udGV4
dDNEKTsKKyNlbmRpZgorfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3luY1NvZnR3YXJlQ2Fu
dmFzKCkKK3sKKyNpZiBVU0UoR0xFUzJfUkVOREVSSU5HKQorICAgIHBsYXRmb3JtQ29udGV4dCgp
LT5zeW5jU29mdHdhcmVDYW52YXMoKTsKKyNlbmRpZgorfQorCiB9ICAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63778</attachid>
            <date>2010-08-06 16:07:55 -0700</date>
            <delta_ts>2010-08-06 16:11:31 -0700</delta_ts>
            <desc>add missing UNUSED_PARAM()</desc>
            <filename>bug-43362-20100806160753.patch</filename>
            <type>text/plain</type>
            <size>13368</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWVhNmE4YzBiYTkwMzgyNDI3ZTdmMWE4ZWJlN2JlYWY0OGE5MTE5Ni4uMDhlYjY1NTQ5MTBhYjdl
NjEyYmE1ZGU2NDJhNTg2YzdjZTgwMzBkZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAxMC0wOC0wNSAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY2VsZXJhdGVkIDJkIGNhbnZhc2VzIHNob3Vs
ZCBnZXQgY29tcG9zaXRpbmcgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00MzM2MgorCisgICAgICAgIEFsbG93cyBmb3IgMmQgY2FudmFzIHJl
bmRlcmluZyBjb250ZXh0cyB0byB1c2UgYSBHcmFwaGljc0NvbnRleHQzRCBmb3IKKyAgICAgICAg
YWNjZWxlcmF0ZWQgcmVuZGVyaW5nLiAgVGhlIHJlbmRlcmluZyBjb250ZXh0IGhvbGRzIHRoZSBH
cmFwaGljc0NvbnRleHQzRAorICAgICAgICBhbGl2ZSBhbmQgZXhwb3NlcyBpdCB0byB0aGUgY29t
cG9zaXRvci4gIFRoZSAzZCBjb250ZXh0IGl0c2VsZiBpcyBwYXNzZWQKKyAgICAgICAgZG93biB0
aHJvdWdoIHRoZSBHcmFwaGljc0NvbnRleHQgdG8gdXNlIGZvciBhY3R1YWwgcmVuZGVyaW5nOgor
ICAgICAgICBodHRwczovL2J1Zy00MzM2Mi1hdHRhY2htZW50cy53ZWJraXQub3JnL2F0dGFjaG1l
bnQuY2dpP2lkPTYzNTU3CisKKyAgICAgICAgVGhpcyBhcHByb2FjaCB3aWxsIGxldCB1cyBzaW11
bHRhbmVvdXNseSBwcm90b3R5cGUgYWNjZWxlcmF0ZWQgdGVjaG5pcXVlcworICAgICAgICBmb3Ig
Y2FudmFzIDJkIGFuZCByZXZpc2UgdGhlIGRlc2lnbiBvZiBjYW52YXMgZWxlbWVudHMgd2l0aG91
dCBkZXN0YWJpbGl6aW5nCisgICAgICAgIGFsbCBwb3J0cy4KKworICAgICAgICAqIGh0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6
OmdldENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OndpbGxE
cmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjptYWtlUmVuZGVyaW5n
UmVzdWx0c0F2YWlsYWJsZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQ6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmlzQWNjZWxlcmF0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpyZXNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OndpbGxEcmF3KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMp
OgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpncmFwaGljc0NvbnRleHQz
RCk6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN5bmNTb2Z0d2FyZUNhbnZhcyk6CisK
IDIwMTAtMDgtMDYgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MQ2FudmFzRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3Bw
CmluZGV4IDZiNWEzYTNjNWY5MzQ4MmFiN2IyYTBjMTYxZDkxYWViMzQxM2VlYTkuLmVmNTU3NGE1
ODA3NTJhMGExZmNhNjI5MmE1NzkzOWUyZDI3MmYyYmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVt
ZW50LmNwcApAQCAtMTY5LDYgKzE2OSwxMiBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBIVE1M
Q2FudmFzRWxlbWVudDo6Z2V0Q29udGV4dChjb25zdCBTdHJpbmcmIHR5cGUsIENhbnZhcwogICAg
ICAgICAgICAgICAgIHVzZXNEYXNoYmFyZENvbXBhdGliaWxpdHlNb2RlID0gc2V0dGluZ3MtPnVz
ZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKCk7CiAjZW5kaWYKICAgICAgICAg
ICAgIG1fY29udGV4dCA9IG5ldyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQodGhpcywgZG9jdW1l
bnQoKS0+aW5Db21wYXRNb2RlKCksIHVzZXNEYXNoYmFyZENvbXBhdGliaWxpdHlNb2RlKTsKKyNp
ZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCisgICAgICAgICAgICBpZiAobV9jb250ZXh0KSB7CisgICAgICAgICAgICAgICAgLy8g
TmVlZCB0byBtYWtlIHN1cmUgYSBSZW5kZXJMYXllciBhbmQgY29tcG9zaXRpbmcgbGF5ZXIgZ2V0
IGNyZWF0ZWQgZm9yIHRoZSBDYW52YXMKKyAgICAgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVj
YWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKKyAgICAgICAgICAgIH0KKyNlbmRpZgogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7CiAgICAgfQpAQCAtMjE2LDcgKzIy
Miw3IEBAIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OndpbGxEcmF3KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkKICAgICAgICAgbV9kaXJ0eVJlY3QudW5pdGUocik7CiAgICAgICAgIHJvLT5yZXBhaW50
UmVjdGFuZ2xlKGVuY2xvc2luZ0ludFJlY3QobV9kaXJ0eVJlY3QpKTsKICAgICB9Ci0gICAgCisK
ICAgICBpZiAobV9vYnNlcnZlcikKICAgICAgICAgbV9vYnNlcnZlci0+Y2FudmFzQ2hhbmdlZCh0
aGlzLCByZWN0KTsKIH0KQEAgLTI5OSwxMiArMzA1LDggQEAgYm9vbCBIVE1MQ2FudmFzRWxlbWVu
dDo6aXMzRCgpIGNvbnN0CiAKIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6Om1ha2VSZW5kZXJpbmdS
ZXN1bHRzQXZhaWxhYmxlKCkKIHsKLSNpZiBFTkFCTEUoM0RfQ0FOVkFTKQotICAgIGlmIChpczNE
KCkpIHsKLSAgICAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0M2QgPSByZWludGVy
cHJldF9jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KHJlbmRlcmluZ0NvbnRleHQoKSk7Ci0g
ICAgICAgIGNvbnRleHQzZC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKLSAgICB9
Ci0jZW5kaWYKKyAgICBpZiAobV9jb250ZXh0KQorICAgICAgICBtX2NvbnRleHQtPnBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCk7CiB9CiAKIHZvaWQgSFRNTENhbnZhc0VsZW1lbnQ6OnJl
Y2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggYjhhN2NhMjAzZjZhOTQ2YWFiMzE0ZDBhN2MyNjJk
MzFhNGMwNjkxMi4uY2IyNjM2M2FiYjY1MGM4YThjNTNiNDlmNjQ3MjI4ZjNjOGVkZWYzOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysr
IGIvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTUzLDYg
KzUzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBGb3Igbm9uIGFjY2VsZXJh
dGVkIGNhbnZhc2VzIHJldHVybnMgMC4KICAgICAgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQz
RCogZ3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKKyAgICAgICAgdmly
dHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkge30KKwogICAgIHByaXZh
dGU6CiAgICAgICAgIEhUTUxDYW52YXNFbGVtZW50KiBtX2NhbnZhczsKICAgICB9OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4IDNi
MDUzNDhjOWUyYTUxYzU5YTZlYmZlNTljNDZkNWZiNWM5ZmUzNTUuLmQyNzllMmRhY2Q4ZmJjMTEy
MmI1MjhjZGY2YzBkYzI2Yjk5YWQ5ZWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTU4LDcgKzU4LDEzIEBACiAjaW5jbHVkZSAi
U3Ryb2tlU3R5bGVBcHBsaWVyLmgiCiAjaW5jbHVkZSAiVGV4dE1ldHJpY3MuaCIKIAotI2luY2x1
ZGUgPHN0ZGlvLmg+CisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyNpbmNsdWRl
ICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgorI2VuZGlm
CisjZW5kaWYKIAogI2luY2x1ZGUgPHd0Zi9CeXRlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgpAQCAtMTAwLDYgKzEwNiw5IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMsIGJvCiAj
aWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICwgbV91c2VzRGFzaGJvYXJkQ29tcGF0
aWJpbGl0eU1vZGUodXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlKQogI2VuZGlmCisjaWYg
RU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyAgICAsIG1fY29udGV4dDNEKDApCisjZW5k
aWYKIHsKICNpZiAhRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIEFTU0VSVF9VTlVTRUQo
dXNlc0Rhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlLCAhdXNlc0Rhc2hib2FyZENvbXBhdGliaWxp
dHlNb2RlKTsKQEAgLTEwOCwxNyArMTE3LDUyIEBAIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMsIGJvCiAg
ICAgLy8gTWFrZSBzdXJlIHRoYXQgZXZlbiBpZiB0aGUgZHJhd2luZ0NvbnRleHQoKSBoYXMgYSBk
aWZmZXJlbnQgZGVmYXVsdAogICAgIC8vIHRoaWNrbmVzcywgaXQgaXMgaW4gc3luYyB3aXRoIHRo
ZSBjYW52YXMgdGhpY2tuZXNzLgogICAgIHNldExpbmVXaWR0aChsaW5lV2lkdGgoKSk7CisKKyNp
ZiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorICAgIGlmIChQYWdlKiBwID0gY2FudmFz
LT5kb2N1bWVudCgpLT5wYWdlKCkpIHsKKyAgICAgICAgaWYgKHAtPnNldHRpbmdzKCktPmFjY2Vs
ZXJhdGVkMmRDYW52YXNFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIGlmIChGcmFtZVZpZXcqIHZp
ZXcgPSBjYW52YXMtPmRvY3VtZW50KCktPnZpZXcoKSkgeworICAgICAgICAgICAgICAgIGlmIChT
Y3JvbGxWaWV3KiByb290VmlldyA9IHZpZXctPnJvb3QoKSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoSG9zdFdpbmRvdyogaG9zdFdpbmRvdyA9IHZpZXctPnJvb3QoKS0+aG9zdFdpbmRvdygp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXQgdXAgb3VyIGNvbnRleHQKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHI7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBhdHRyLnN0ZW5jaWwgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9jb250ZXh0M0QgPSBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKGF0dHIs
IGhvc3RXaW5kb3cpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fY29udGV4dDNEKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3
aW5nQ29udGV4dCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLT5zZXRHcmFw
aGljc0NvbnRleHQzRChtX2NvbnRleHQzRC5nZXQoKSwgSW50U2l6ZShjYW52YXMtPndpZHRoKCks
IGNhbnZhcy0+aGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgogfQogCiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6On5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQoKQogewogfQog
Citib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6aXNBY2NlbGVyYXRlZCgpIGNvbnN0Cit7
CisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyAgICByZXR1cm4gbV9jb250ZXh0
M0Q7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6cmVzZXQoKQogewogICAgIG1fc3RhdGVTdGFjay5yZXNpemUoMSk7
CiAgICAgbV9zdGF0ZVN0YWNrLmZpcnN0KCkgPSBTdGF0ZSgpOwogICAgIG1fcGF0aC5jbGVhcigp
OworI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisgICAgaWYgKG1fY29udGV4dDNE
KSB7CisgICAgICAgIGlmIChHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpKQor
ICAgICAgICAgICAgYy0+c2V0R3JhcGhpY3NDb250ZXh0M0QobV9jb250ZXh0M0QuZ2V0KCksIElu
dFNpemUoY2FudmFzKCktPndpZHRoKCksIGNhbnZhcygpLT5oZWlnaHQoKSkpOworICAgIH0KKyNl
bmRpZgogfQogCiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OlN0YXRlOjpTdGF0ZSgpCkBAIC0x
NDM0LDcgKzE0NzgsMTQgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OndpbGxEcmF3
KGNvbnN0IEZsb2F0UmVjdCYgciwgdW5zaWduZWQgb3B0aW9ucykKICAgICAgICAgLy8gd2UnZCBo
YXZlIHRvIGtlZXAgdGhlIGNsaXAgcGF0aCBhcm91bmQuCiAgICAgfQogCi0gICAgY2FudmFzKCkt
PndpbGxEcmF3KGRpcnR5UmVjdCk7CisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykg
JiYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIC8vIElmIHdlIGFyZSBkcmF3aW5n
IHRvIGhhcmR3YXJlIGFuZCB3ZSBoYXZlIGEgY29tcG9zaXRlZCBsYXllciwganVzdCBjYWxsIHJl
bmRlcmVyQ29udGVudENoYW5nZWQoKS4KKyAgICBSZW5kZXJCb3gqIHJlbmRlckJveCA9IGNhbnZh
cygpLT5yZW5kZXJCb3goKTsKKyAgICBpZiAobV9jb250ZXh0M0QgJiYgcmVuZGVyQm94ICYmIHJl
bmRlckJveC0+aGFzTGF5ZXIoKSAmJiByZW5kZXJCb3gtPmxheWVyKCktPmhhc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmcoKSkKKyAgICAgICAgcmVuZGVyQm94LT5sYXllcigpLT5yZW5kZXJlckNvbnRl
bnRDaGFuZ2VkKCk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGNhbnZhcygpLT53aWxsRHJh
dyhkaXJ0eVJlY3QpOwogfQogCiBHcmFwaGljc0NvbnRleHQqIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZHJhd2luZ0NvbnRleHQoKSBjb25zdApAQCAtMTc3Miw0ICsxODIzLDExIEBAIGNvbnN0
IEZvbnQmIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6YWNjZXNzRm9udCgpCiAgICAgcmV0dXJu
IHN0YXRlKCkubV9mb250OwogfQogCit2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6cGFp
bnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQoreworI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF8y
RF9DQU5WQVMpCisgICAgZHJhd2luZ0NvbnRleHQoKS0+c3luY1NvZnR3YXJlQ2FudmFzKCk7Cisj
ZW5kaWYKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggMjJlZDdmYzMwNzJmYjI2NTFkYWNi
ZGFkOTA1MGM3NTgyMjlmZDkxOC4uZjYxMDI1MGJjODgwZDMzYzdjNjAyOWQ5ODQ3YmFkNDZjMWQ4
NmVlZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQuaAorKysgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5oCkBAIC00Miw2ICs0MiwxMCBAQAogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBw
bGljYXRpb25TZXJ2aWNlcy5oPgogI2VuZGlmCiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ2FudmFzR3JhZGllbnQ7CkBAIC01Niw2ICs2MCwxMCBAQCBjbGFz
cyBJbWFnZURhdGE7CiBjbGFzcyBLVVJMOwogY2xhc3MgVGV4dE1ldHJpY3M7CiAKKyNpZiBFTkFC
TEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQorY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CisjZW5k
aWYKKwogdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEIDogcHVibGljIENhbnZhc1JlbmRlcmluZ0NvbnRleHQgewpAQCAtNjUsNiArNzMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEKCk7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXMyZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0OwogCiAgICAgQ2FudmFzU3R5bGUqIHN0cm9r
ZVN0eWxlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTdHJva2VTdHlsZShQYXNzUmVmUHRyPENhbnZh
c1N0eWxlPik7CkBAIC0yMTIsNiArMjIxLDEyIEBAIHB1YmxpYzoKICAgICBMaW5lQ2FwIGdldExp
bmVDYXAoKSBjb25zdCB7IHJldHVybiBzdGF0ZSgpLm1fbGluZUNhcDsgfQogICAgIExpbmVKb2lu
IGdldExpbmVKb2luKCkgY29uc3QgeyByZXR1cm4gc3RhdGUoKS5tX2xpbmVKb2luOyB9CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKKworI2lmIEVO
QUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCisgICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQz
RCogZ3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQzRC5nZXQoKTsg
fQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgc3RydWN0IFN0YXRlIHsKICAgICAgICAgU3RhdGUo
KTsKQEAgLTI4MSw2ICsyOTYsMTAgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NV
UFBPUlQpCiAgICAgYm9vbCBtX3VzZXNEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZTsKICNlbmRp
ZgorCisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKKyAgICBPd25QdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IG1fY29udGV4dDNEOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggNWY5YWQ5MWU4MzcwNWU1NDU3MTdmZThiMzQwN2E3Y2I1YWE2M2I0MS4uZmZlMTdiNjFj
OTAzMzYxMWMzMzI0OGQ4MWM2ZGRmNGUwNjBkOWMxNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjptYXJrQ29udGV4dENoYW5nZWQoKQogICAgIG1fbWFya2VkQ2Fu
dmFzRGlydHkgPSB0cnVlOwogfQogCi1ib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6cGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKQordm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnBh
aW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkKIHsKICAgICBpZiAobV9tYXJrZWRDYW52YXNE
aXJ0eSkgewogICAgICAgICAvLyBGSVhNRTogSXQgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgdG8g
Y2xlYXIgdGhlIGltYWdlIGJlZm9yZSBkb2luZyBhIHJlYWRiYWNrLgpAQCAtMTY0LDkgKzE2NCw3
IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0Nh
bnZhcygpCiAgICAgICAgIGNhbnZhcygpLT5idWZmZXIoKS0+Y2xlYXJJbWFnZSgpOwogICAgICAg
ICBtX21hcmtlZENhbnZhc0RpcnR5ID0gZmFsc2U7CiAgICAgICAgIG1fY29udGV4dC0+cGFpbnRS
ZW5kZXJpbmdSZXN1bHRzVG9DYW52YXModGhpcyk7Ci0gICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KLSAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpi
ZWdpblBhaW50KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmggYi9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5o
CmluZGV4IGI1YTYzNDM1Y2QyM2Y2Y2E2ZWUyMzBkZmNhMGJmYzNhM2E3YjQ2MWQuLjUzNzEzMDVj
Mzg4NjEwYTI1YWYwYTUyZGI1NzY2NWM2NjE4NWQ4YTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaApAQCAtMzA3LDkgKzMwNyw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgcmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogCi0gICAgLy8gUmV0dXJu
IHZhbHVlIHRydWUgaW5kaWNhdGVzIGNhbnZhcyBpcyB1cGRhdGVkIGR1cmluZyB0aGUgY2FsbCwK
LSAgICAvLyBmYWxzZSBpbmRpY2F0ZXMgbm8gdXBkYXRlcy4KLSAgICBib29sIHBhaW50UmVuZGVy
aW5nUmVzdWx0c1RvQ2FudmFzKCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVz
dWx0c1RvQ2FudmFzKCk7CiAKICAgICAvLyBIZWxwZXJzIGZvciBub3RpZmljYXRpb24gYWJvdXQg
cGFpbnQgZXZlbnRzLgogICAgIHZvaWQgYmVnaW5QYWludCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggZDM1MzViNDM0YmZiNGI4ZTcyMjE2NjMy
NmUwM2I5Yjg4NzVkMzdlMy4uYTJlMDE4YWRjYWI0MmQ1MWQzM2QzOGJkNTM5N2Y3ZTM4ZDA2NTAx
MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0x
MTYsNiArMTE2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZvbnQ7CiAgICAg
Y2xhc3MgR2VuZXJhdG9yOwogICAgIGNsYXNzIEdyYWRpZW50OworICAgIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDNEOwogICAgIGNsYXNzIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKICAg
ICBjbGFzcyBHcmFwaGljc0NvbnRleHRQcml2YXRlOwogICAgIGNsYXNzIEltYWdlQnVmZmVyOwpA
QCAtMzkzLDYgKzM5NCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHBhdHRlcm4g
Z2V0SGFpa3VTdHJva2VTdHlsZSgpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShTS0lBKQorICAg
ICAgICB2b2lkIHNldEdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3Qg
SW50U2l6ZSYpOworICAgICAgICB2b2lkIHN5bmNTb2Z0d2FyZUNhbnZhcygpOworI2VuZGlmCisK
ICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHNhdmVQbGF0Zm9ybVN0YXRlKCk7CiAgICAgICAg
IHZvaWQgcmVzdG9yZVBsYXRmb3JtU3RhdGUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAppbmRleCBhZTA4OGI2ZjRl
MjcyNzllMjg3NWNmMjEwYzBkNWI1YmNlYTA4Yzk2Li43YmNkODRiZDY2YzlhMGI5M2Q1ZmEwOTg4
YWNmOTc5M2Q4YTAxYzc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCkBAIC0xMjc2LDQgKzEyNzYsMjEgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnRyYW5zbGF0ZShmbG9hdCB3LCBmbG9hdCBoKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmVGbG9hdFRvU2tTY2FsYXIo
aCkpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0R3JhcGhpY3NDb250ZXh0M0QoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQzRCwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyNpZiBV
U0UoR0xFUzJfUkVOREVSSU5HKQorICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXRHcmFwaGljc0Nv
bnRleHQzRChjb250ZXh0M0QsIHNpemUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY29udGV4
dDNEKTsKKyAgICBVTlVTRURfUEFSQU0oc2l6ZSk7CisjZW5kaWYKK30KKwordm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnN5bmNTb2Z0d2FyZUNhbnZhcygpCit7CisjaWYgVVNFKEdMRVMyX1JFTkRFUklO
RykKKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c3luY1NvZnR3YXJlQ2FudmFzKCk7CisjZW5kaWYK
K30KKwogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="52194"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>