<?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>37178</bug_id>
          
          <creation_ts>2010-04-06 16:40:45 -0700</creation_ts>
          <short_desc>Must enable GL_VERTEX_PROGRAM_POINT_SIZE during initialization</short_desc>
          <delta_ts>2010-04-15 17:44:04 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenneth Russell">kbr</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>kbr</cc>
    
    <cc>oliver</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>209328</commentid>
    <comment_count>0</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-04-06 16:40:45 -0700</bug_when>
    <thetext>In OpenGL ES 2.0, the semantic is that the desktop GL capability GL_VERTEX_PROGRAM_SIZE is enabled all of the time; this enum is not exposed in the OpenGL ES 2.0 headers. In order to comply with this, in the desktop GL implementations of WebGL, this capability must be enabled at initialization time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210918</commentid>
    <comment_count>1</comment_count>
      <attachid>52988</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-04-09 14:09:40 -0700</bug_when>
    <thetext>Created attachment 52988
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>210937</commentid>
    <comment_count>2</comment_count>
      <attachid>52988</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-04-09 14:56:46 -0700</bug_when>
    <thetext>Comment on attachment 52988
patch

&gt; Index: LayoutTests/fast/canvas/webgl/point-size.html
&gt; ===================================================================
&gt; --- LayoutTests/fast/canvas/webgl/point-size.html	(revision 0)
&gt; +++ LayoutTests/fast/canvas/webgl/point-size.html	(revision 0)
&gt; @@ -0,0 +1,113 @@
&gt; +&lt;html&gt;
&gt; +&lt;head&gt;
&gt; +&lt;link rel=&quot;stylesheet&quot; href=&quot;../../js/resources/js-test-style.css&quot;/&gt;
&gt; +&lt;script src=&quot;../../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
&gt; +&lt;script src=&quot;resources/webgl-test.js&quot;&gt;&lt;/script&gt;
&gt; +&lt;script src=&quot;resources/utils3d.js&quot;&gt;&lt;/script&gt;
&gt; +&lt;script id=&quot;vshader&quot; type=&quot;x-shader/x-vertex&quot;&gt;
&gt; +attribute vec3 pos;
&gt; +attribute vec4 colorIn;
&gt; +uniform float pointSize;
&gt; +varying vec4 color;
&gt; +
&gt; +void main()
&gt; +{
&gt; +    gl_PointSize = pointSize;
&gt; +    color = colorIn;
&gt; +    gl_Position = vec4(pos.xyz, 1.0);
&gt; +}
&gt; +&lt;/script&gt;
&gt; +
&gt; +&lt;script id=&quot;fshader&quot; type=&quot;x-shader/x-fragment&quot;&gt;
&gt; +varying vec4 color;
&gt; +
&gt; +void main()
&gt; +{
&gt; +    gl_FragColor = color;
&gt; +}
&gt; +&lt;/script&gt;
&gt; +
&gt; +&lt;script&gt;
&gt; +var successfullyParsed = false;
&gt; +
&gt; +// These two declarations need to be global for &quot;shouldBe&quot; to see them
&gt; +var gl = null;
&gt; +var pixel = [0, 255, 0];
&gt; +
&gt; +function init()
&gt; +{
&gt; +    if (window.layoutTestController) {
&gt; +        layoutTestController.overridePreference(&quot;WebKitWebGLEnabled&quot;, &quot;1&quot;);
&gt; +        layoutTestController.dumpAsText();
&gt; +        layoutTestController.waitUntilDone();
&gt; +    }

This more complex framework (using layoutTestController.waitUntilDone()) isn&apos;t needed for this test. It is only needed when resources, like textures, are being downloaded in the background and the test needs to wait for them to download in order to run to completion. You can use tex-sub-image-2d.html as the basis for this test. We should use the simpler framework so it will be easier to port these to the Khronos site later.

&gt; +
&gt; +    description(&apos;Verify GL_VERTEX_PROGRAM_POINT_SIZE is enabled in WebGL&apos;);
&gt; +    
&gt; +    runTest();
&gt; +}
&gt; +
&gt; +function runTest()
&gt; +{
&gt; +    shouldBeNonNull(&quot;gl = initWebGL(&apos;testbed&apos;, &apos;vshader&apos;, &apos;fshader&apos;, [&apos;pos&apos;, &apos;colorIn&apos;], [0, 0, 0, 1], 1, 0)&quot;);
&gt; +    gl.disable(gl.BLEND);
&gt; +    gl.clear(gl.COLOR_BUFFER_BIT);
&gt; +
&gt; +    var vertices = new WebGLFloatArray([
&gt; +        0.5, 0.5, 0.0]);
&gt; +    var colors = new WebGLUnsignedByteArray([
&gt; +        255, 0, 0, 255]);
&gt; +
&gt; +    var colorOffset = vertices.byteLength;

This test should query gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE) and see whether the range covers [1.0, 2.0]. If it turns out the implementation doesn&apos;t support a size greater than 1.0, the test should report that it passes. While this behavior won&apos;t work with the -expected.txt file, it will be semantically correct and will work within the Khronos conformance test harness.

&gt; +    var vbo = gl.createBuffer();
&gt; +    gl.bindBuffer(gl.ARRAY_BUFFER, vbo);
&gt; +    gl.bufferData(gl.ARRAY_BUFFER, colorOffset + colors.byteLength, gl.STATIC_DRAW);
&gt; +    gl.bufferSubData(gl.ARRAY_BUFFER, 0, vertices);
&gt; +    gl.bufferSubData(gl.ARRAY_BUFFER, colorOffset, colors);
&gt; +
&gt; +    gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 0, 0);
&gt; +    gl.enableVertexAttribArray(0);
&gt; +    gl.vertexAttribPointer(1, 4, gl.UNSIGNED_BYTE, true, 0, colorOffset);
&gt; +    gl.enableVertexAttribArray(1);
&gt; +
&gt; +    var locPointSize = gl.getUniformLocation(gl.program, &apos;pointSize&apos;);

A comment (or debug statement) would be helpful here, like &quot;Draw a point of size 1 and verify it doesn&apos;t touch any other pixels.&quot;

&gt; +    gl.uniform1f(locPointSize, 1.0);
&gt; +    gl.drawArrays(gl.POINTS, 0, vertices.length / 3);
&gt; +    var buf = gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE);
&gt; +    pixel[0] = buf[0];
&gt; +    pixel[1] = buf[1];
&gt; +    pixel[2] = buf[2];
&gt; +    shouldBeTrue(&quot;pixel[0] == 0 &amp;&amp; pixel[1] == 0 &amp;&amp; pixel[2] == 0&quot;);
&gt; +
&gt; +    gl.clear(gl.COLOR_BUFFER_BIT);

A comment (or debug statement) would be helpful here, like &quot;Draw a point of size 2 and verify it fills the appropriate region.&quot;

&gt; +    gl.uniform1f(locPointSize, 2.0);
&gt; +    gl.drawArrays(gl.POINTS, 0, vertices.length / 3);
&gt; +    buf = gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE);

I think you should read the pixel at (0, 1) (or (1, 0)) rather than (0, 0). I believe that one should be guaranteed to be filled with exactly the intended color.

&gt; +    pixel[0] = buf[0];
&gt; +    pixel[1] = buf[1];
&gt; +    pixel[2] = buf[2];
&gt; +    shouldBeTrue(&quot;pixel[0] &gt; 0 &amp;&amp; pixel[0] &lt;= 255 &amp;&amp; pixel[1] == 0 &amp;&amp; pixel[2] == 0&quot;);
&gt; +
&gt; +    successfullyParsed = true;
&gt; +    var epilogue = document.createElement(&quot;script&quot;);
&gt; +    epilogue.onload = finish;
&gt; +    epilogue.src = &quot;../../js/resources/js-test-post.js&quot;;
&gt; +    document.body.appendChild(epilogue);
&gt; +}
&gt; +
&gt; +function finish() {
&gt; +    if (window.layoutTestController) {
&gt; +        layoutTestController.notifyDone();
&gt; +    }
&gt; +}
&gt; +&lt;/script&gt;
&gt; +&lt;/head&gt;
&gt; +&lt;body onload=&quot;init()&quot;&gt;
&gt; +&lt;canvas id=&quot;testbed&quot; width=&quot;2px&quot; height=&quot;2px&quot;&gt;&lt;/canvas&gt;
&gt; +&lt;div id=&quot;description&quot;&gt;&lt;/div&gt;
&gt; +&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
&gt; +&lt;/body&gt;
&gt; +&lt;/html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211043</commentid>
    <comment_count>3</comment_count>
      <attachid>53019</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-04-09 17:27:48 -0700</bug_when>
    <thetext>Created attachment 53019
revised patch : responding to Ken Russell&apos;s review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211047</commentid>
    <comment_count>4</comment_count>
      <attachid>53021</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-04-09 17:34:27 -0700</bug_when>
    <thetext>Created attachment 53021
revised patch: update the expected test output</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211050</commentid>
    <comment_count>5</comment_count>
      <attachid>53022</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-04-09 17:38:12 -0700</bug_when>
    <thetext>Created attachment 53022
revised patch: modified a few comments in the test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211060</commentid>
    <comment_count>6</comment_count>
      <attachid>53022</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-04-09 17:57:46 -0700</bug_when>
    <thetext>Comment on attachment 53022
revised patch: modified a few comments in the test

Looks great. Excellent work on the test case for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211202</commentid>
    <comment_count>7</comment_count>
      <attachid>53022</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-10 15:49:15 -0700</bug_when>
    <thetext>Comment on attachment 53022
revised patch: modified a few comments in the test

I don&apos;t really understand what this does, or &quot;why&quot; we need to enable this.  I believe you both, would just be nice to document &quot;why&quot; in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211214</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-04-10 16:34:08 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 53022 [details])
&gt; I don&apos;t really understand what this does, or &quot;why&quot; we need to enable this.  I
&gt; believe you both, would just be nice to document &quot;why&quot; in the ChangeLog.

The description in the bug report concisely describes why it is needed. Is that sufficient?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212977</commentid>
    <comment_count>9</comment_count>
      <attachid>53022</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-15 12:33:01 -0700</bug_when>
    <thetext>Comment on attachment 53022
revised patch: modified a few comments in the test

rs=me given kbr approves.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213138</commentid>
    <comment_count>10</comment_count>
      <attachid>53022</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-15 17:43:57 -0700</bug_when>
    <thetext>Comment on attachment 53022
revised patch: modified a few comments in the test

Clearing flags on attachment: 53022

Committed r57694: &lt;http://trac.webkit.org/changeset/57694&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213139</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-15 17:44:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52988</attachid>
            <date>2010-04-09 14:09:40 -0700</date>
            <delta_ts>2010-04-09 17:27:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>pointsize.patch</filename>
            <type>text/plain</type>
            <size>7281</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzM2MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQtMDkgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNdXN0IGVu
YWJsZSBHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFIGR1cmluZyBpbml0aWFsaXphdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcxNzgKKwor
ICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9wb2ludC1zaXplLmh0bWwKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHA6IEVuYWJs
ZSBHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFIGR1cmluZyBpbml0aWFsaXphdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisK
IDIwMTAtMDQtMDkgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1NzM0NSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCw3IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpH
cmFwaGljc0NvbnRleHQzRChHcmEKICAgICAgICAgICAgIDo6Z2xHZW5SZW5kZXJidWZmZXJzRVhU
KDEsICZtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKICAgICB9CiAgICAgCisgICAg
OjpnbEVuYWJsZShHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFKTsKICAgICA6OmdsQ2xlYXJD
b2xvcigwLCAwLCAwLCAwKTsKIH0KIApJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzM2MSkK
KysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAxMC0wNC0wOSAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE11c3QgZW5hYmxlIEdMX1ZF
UlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUgZHVyaW5nIGluaXRpYWxpemF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzE3OAorCisgICAgICAgICog
c3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuY3BwOiBFbmFibGUgR0xfVkVSVEVY
X1BST0dSQU1fUE9JTlRfU0laRSBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCisgICAgICAgIChXZWJL
aXQ6OldlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGw6OmluaXRpYWxpemUpOgorCiAyMDEw
LTA0LTA5ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHcmFw
aGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuY3BwCShyZXZpc2lvbiA1NzM0
NSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MSw2ICszODEsNyBAQCBib29sIFdlYkdyYXBoaWNz
Q29udGV4dDNERGVmYXVsdEltcGw6OmluCiAgICAgbV9hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsK
ICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAorICAgIGdsRW5hYmxlKEdMX1ZFUlRFWF9QUk9H
UkFNX1BPSU5UX1NJWkUpOwogICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIHJldHVybiB0
cnVlOwogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTczNjEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNC0wOSAgWmhlbnlhbyBN
byAgPHptb0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE11c3QgZW5hYmxlIEdMX1ZFUlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUgZHVy
aW5nIGluaXRpYWxpemF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNzE3OAorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcG9pbnQtc2l6
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3BvaW50
LXNpemUuaHRtbDogQWRkZWQuCisKIDIwMTAtMDQtMDkgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2Vx
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
cG9pbnQtc2l6ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK1Zl
cmlmeSBHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFIGlzIGVuYWJsZWQgaW4gV2ViR0wKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGdsID0gaW5pdFdlYkdMKCd0ZXN0YmVk
JywgJ3ZzaGFkZXInLCAnZnNoYWRlcicsIFsncG9zJywgJ2NvbG9ySW4nXSwgWzAsIDAsIDAsIDFd
LCAxLCAwKSBpcyBub24tbnVsbC4KK1BBU1MgcGl4ZWxbMF0gPT0gMCAmJiBwaXhlbFsxXSA9PSAw
ICYmIHBpeGVsWzJdID09IDAgaXMgdHJ1ZQorUEFTUyBwaXhlbFswXSA+IDAgJiYgcGl4ZWxbMF0g
PD0gMjU1ICYmIHBpeGVsWzFdID09IDAgJiYgcGl4ZWxbMl0gPT0gMCBpcyB0cnVlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcG9pbnQtc2l6ZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy91dGlsczNkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZzaGFkZXIi
IHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWMzIHBvczsKK2F0dHJpYnV0
ZSB2ZWM0IGNvbG9ySW47Cit1bmlmb3JtIGZsb2F0IHBvaW50U2l6ZTsKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb2ludFNpemUgPSBwb2ludFNpemU7Cisg
ICAgY29sb3IgPSBjb2xvckluOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3MueHl6LCAxLjAp
OworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gt
ZnJhZ21lbnQiPgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4oKQoreworICAgIGds
X0ZyYWdDb2xvciA9IGNvbG9yOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQ+Cit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gZmFsc2U7CisKKy8vIFRoZXNlIHR3byBkZWNsYXJhdGlvbnMgbmVlZCB0
byBiZSBnbG9iYWwgZm9yICJzaG91bGRCZSIgdG8gc2VlIHRoZW0KK3ZhciBnbCA9IG51bGw7Cit2
YXIgcGl4ZWwgPSBbMCwgMjU1LCAwXTsKKworZnVuY3Rpb24gaW5pdCgpCit7CisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkdMRW5hYmxlZCIsICIxIik7CisgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKworICAgIGRlc2NyaXB0aW9uKCdWZXJp
ZnkgR0xfVkVSVEVYX1BST0dSQU1fUE9JTlRfU0laRSBpcyBlbmFibGVkIGluIFdlYkdMJyk7Cisg
ICAgCisgICAgcnVuVGVzdCgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBzaG91
bGRCZU5vbk51bGwoImdsID0gaW5pdFdlYkdMKCd0ZXN0YmVkJywgJ3ZzaGFkZXInLCAnZnNoYWRl
cicsIFsncG9zJywgJ2NvbG9ySW4nXSwgWzAsIDAsIDAsIDFdLCAxLCAwKSIpOworICAgIGdsLmRp
c2FibGUoZ2wuQkxFTkQpOworICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQpOworCisg
ICAgdmFyIHZlcnRpY2VzID0gbmV3IFdlYkdMRmxvYXRBcnJheShbCisgICAgICAgIDAuNSwgMC41
LCAwLjBdKTsKKyAgICB2YXIgY29sb3JzID0gbmV3IFdlYkdMVW5zaWduZWRCeXRlQXJyYXkoWwor
ICAgICAgICAyNTUsIDAsIDAsIDI1NV0pOworCisgICAgdmFyIGNvbG9yT2Zmc2V0ID0gdmVydGlj
ZXMuYnl0ZUxlbmd0aDsKKworICAgIHZhciB2Ym8gPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBn
bC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmJvKTsKKyAgICBnbC5idWZmZXJEYXRhKGds
LkFSUkFZX0JVRkZFUiwgY29sb3JPZmZzZXQgKyBjb2xvcnMuYnl0ZUxlbmd0aCwgZ2wuU1RBVElD
X0RSQVcpOworICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAwLCB2ZXJ0aWNl
cyk7CisgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIGNvbG9yT2Zmc2V0LCBj
b2xvcnMpOworCisgICAgZ2wudmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBnbC5GTE9BVCwgZmFs
c2UsIDAsIDApOworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworICAgIGdsLnZl
cnRleEF0dHJpYlBvaW50ZXIoMSwgNCwgZ2wuVU5TSUdORURfQllURSwgdHJ1ZSwgMCwgY29sb3JP
ZmZzZXQpOworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworCisgICAgdmFyIGxv
Y1BvaW50U2l6ZSA9IGdsLmdldFVuaWZvcm1Mb2NhdGlvbihnbC5wcm9ncmFtLCAncG9pbnRTaXpl
Jyk7CisKKyAgICBnbC51bmlmb3JtMWYobG9jUG9pbnRTaXplLCAxLjApOworICAgIGdsLmRyYXdB
cnJheXMoZ2wuUE9JTlRTLCAwLCB2ZXJ0aWNlcy5sZW5ndGggLyAzKTsKKyAgICB2YXIgYnVmID0g
Z2wucmVhZFBpeGVscygwLCAwLCAxLCAxLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFKTsKKyAg
ICBwaXhlbFswXSA9IGJ1ZlswXTsKKyAgICBwaXhlbFsxXSA9IGJ1ZlsxXTsKKyAgICBwaXhlbFsy
XSA9IGJ1ZlsyXTsKKyAgICBzaG91bGRCZVRydWUoInBpeGVsWzBdID09IDAgJiYgcGl4ZWxbMV0g
PT0gMCAmJiBwaXhlbFsyXSA9PSAwIik7CisKKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJf
QklUKTsKKworICAgIGdsLnVuaWZvcm0xZihsb2NQb2ludFNpemUsIDIuMCk7CisgICAgZ2wuZHJh
d0FycmF5cyhnbC5QT0lOVFMsIDAsIHZlcnRpY2VzLmxlbmd0aCAvIDMpOworICAgIGJ1ZiA9IGds
LnJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSk7CisgICAg
cGl4ZWxbMF0gPSBidWZbMF07CisgICAgcGl4ZWxbMV0gPSBidWZbMV07CisgICAgcGl4ZWxbMl0g
PSBidWZbMl07CisgICAgc2hvdWxkQmVUcnVlKCJwaXhlbFswXSA+IDAgJiYgcGl4ZWxbMF0gPD0g
MjU1ICYmIHBpeGVsWzFdID09IDAgJiYgcGl4ZWxbMl0gPT0gMCIpOworCisgICAgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICB2YXIgZXBpbG9ndWUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzY3JpcHQiKTsKKyAgICBlcGlsb2d1ZS5vbmxvYWQgPSBmaW5pc2g7CisgICAgZXBpbG9n
dWUuc3JjID0gIi4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiOworICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZXBpbG9ndWUpOworfQorCitmdW5jdGlvbiBmaW5pc2goKSB7
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9ImluaXQoKSI+Cis8Y2FudmFzIGlkPSJ0ZXN0YmVkIiB3aWR0aD0iMnB4
IiBoZWlnaHQ9IjJweCI+PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53019</attachid>
            <date>2010-04-09 17:27:48 -0700</date>
            <delta_ts>2010-04-09 17:34:27 -0700</delta_ts>
            <desc>revised patch : responding to Ken Russell&apos;s review</desc>
            <filename>pointsize.patch</filename>
            <type>text/plain</type>
            <size>7901</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzM2MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQtMDkgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNdXN0IGVu
YWJsZSBHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFIGR1cmluZyBpbml0aWFsaXphdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcxNzgKKwor
ICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9wb2ludC1zaXplLmh0bWwKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHA6IEVuYWJs
ZSBHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFIGR1cmluZyBpbml0aWFsaXphdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisK
IDIwMTAtMDQtMDkgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1NzM0NSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCw3IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpH
cmFwaGljc0NvbnRleHQzRChHcmEKICAgICAgICAgICAgIDo6Z2xHZW5SZW5kZXJidWZmZXJzRVhU
KDEsICZtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKICAgICB9CiAgICAgCisgICAg
OjpnbEVuYWJsZShHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFKTsKICAgICA6OmdsQ2xlYXJD
b2xvcigwLCAwLCAwLCAwKTsKIH0KIApJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzM2MSkK
KysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAxMC0wNC0wOSAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE11c3QgZW5hYmxlIEdMX1ZF
UlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUgZHVyaW5nIGluaXRpYWxpemF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzE3OAorCisgICAgICAgICog
c3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuY3BwOiBFbmFibGUgR0xfVkVSVEVY
X1BST0dSQU1fUE9JTlRfU0laRSBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCisgICAgICAgIChXZWJL
aXQ6OldlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGw6OmluaXRpYWxpemUpOgorCiAyMDEw
LTA0LTA5ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHcmFw
aGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuY3BwCShyZXZpc2lvbiA1NzM0
NSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MSw2ICszODEsNyBAQCBib29sIFdlYkdyYXBoaWNz
Q29udGV4dDNERGVmYXVsdEltcGw6OmluCiAgICAgbV9hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsK
ICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAorICAgIGdsRW5hYmxlKEdMX1ZFUlRFWF9QUk9H
UkFNX1BPSU5UX1NJWkUpOwogICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIHJldHVybiB0
cnVlOwogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTczNjEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNC0wOSAgWmhlbnlhbyBN
byAgPHptb0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE11c3QgZW5hYmxlIEdMX1ZFUlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUgZHVy
aW5nIGluaXRpYWxpemF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNzE3OAorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcG9pbnQtc2l6
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3BvaW50
LXNpemUuaHRtbDogQWRkZWQuCisKIDIwMTAtMDQtMDkgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2Vx
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
cG9pbnQtc2l6ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK1Zl
cmlmeSBHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFIGlzIGVuYWJsZWQgaW4gV2ViR0wKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIGdsID0gaW5pdFdlYkdMKCd0ZXN0YmVk
JywgJ3ZzaGFkZXInLCAnZnNoYWRlcicsIFsncG9zJywgJ2NvbG9ySW4nXSwgWzAsIDAsIDAsIDFd
LCAxLCAwKSBpcyBub24tbnVsbC4KK1BBU1MgcGl4ZWxbMF0gPT0gMCAmJiBwaXhlbFsxXSA9PSAw
ICYmIHBpeGVsWzJdID09IDAgaXMgdHJ1ZQorUEFTUyBwaXhlbFswXSA+IDAgJiYgcGl4ZWxbMF0g
PD0gMjU1ICYmIHBpeGVsWzFdID09IDAgJiYgcGl4ZWxbMl0gPT0gMCBpcyB0cnVlCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvcG9pbnQtc2l6ZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMTkgQEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy91dGlsczNkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgaWQ9InZzaGFkZXIi
IHR5cGU9Ingtc2hhZGVyL3gtdmVydGV4Ij4KK2F0dHJpYnV0ZSB2ZWMzIHBvczsKK2F0dHJpYnV0
ZSB2ZWM0IGNvbG9ySW47Cit1bmlmb3JtIGZsb2F0IHBvaW50U2l6ZTsKK3ZhcnlpbmcgdmVjNCBj
b2xvcjsKKwordm9pZCBtYWluKCkKK3sKKyAgICBnbF9Qb2ludFNpemUgPSBwb2ludFNpemU7Cisg
ICAgY29sb3IgPSBjb2xvckluOworICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3MueHl6LCAzLjAp
OworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImZzaGFkZXIiIHR5cGU9Ingtc2hhZGVyL3gt
ZnJhZ21lbnQiPgordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4oKQoreworICAgIGds
X0ZyYWdDb2xvciA9IGNvbG9yOworfQorPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitmdW5jdGlvbiBy
dW5UZXN0KCkKK3sKKyAgICB2YXIgZ2wgPSBpbml0V2ViR0woJ3Rlc3RiZWQnLCAndnNoYWRlcics
ICdmc2hhZGVyJywgWydwb3MnLCAnY29sb3JJbiddLCBbMCwgMCwgMCwgMV0sIDEsIHsgYW50aWFs
aWFzOiBmYWxzZSB9KTsKKyAgICBpZiAoIWdsKSB7CisgICAgICAgIHRlc3RGYWlsZWQoJ2luaXRX
ZWJHTCguLikgZmFpbGVkJyk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgZ2wu
ZGlzYWJsZShnbC5CTEVORCk7CisgICAgZ2wuY2xlYXIoZ2wuQ09MT1JfQlVGRkVSX0JJVCB8IGds
LkRFUFRIX0JVRkZFUl9CSVQpOworCisgICAgdmFyIHZlcnRpY2VzID0gbmV3IFdlYkdMRmxvYXRB
cnJheShbCisgICAgICAgIDAuNCwgMC40LCAwLjBdKTsKKyAgICB2YXIgY29sb3JzID0gbmV3IFdl
YkdMVW5zaWduZWRCeXRlQXJyYXkoWworICAgICAgICAyNTUsIDAsIDAsIDI1NV0pOworCisgICAg
dmFyIGNvbG9yT2Zmc2V0ID0gdmVydGljZXMuYnl0ZUxlbmd0aDsKKworICAgIHZhciB2Ym8gPSBn
bC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFSUkFZX0JVRkZFUiwgdmJv
KTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgY29sb3JPZmZzZXQgKyBjb2xv
cnMuYnl0ZUxlbmd0aCwgZ2wuU1RBVElDX0RSQVcpOworICAgIGdsLmJ1ZmZlclN1YkRhdGEoZ2wu
QVJSQVlfQlVGRkVSLCAwLCB2ZXJ0aWNlcyk7CisgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5BUlJB
WV9CVUZGRVIsIGNvbG9yT2Zmc2V0LCBjb2xvcnMpOworCisgICAgZ2wudmVydGV4QXR0cmliUG9p
bnRlcigwLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICAgIGdsLmVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KDApOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIoMSwgNCwgZ2wuVU5TSUdO
RURfQllURSwgdHJ1ZSwgMCwgY29sb3JPZmZzZXQpOworICAgIGdsLmVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KDEpOworCisgICAgdmFyIGxvY1BvaW50U2l6ZSA9IGdsLmdldFVuaWZvcm1Mb2NhdGlv
bihnbC5wcm9ncmFtLCAncG9pbnRTaXplJyk7CisKKyAgICBkZWJ1ZygnRHJhdyBhIHBvaW50IG9m
IHNpemUgMSBhbmQgdmVyaWZ5IGl0IGRvZXMgbm90IHRvdWNoIGFueSBvdGhlciBwaXhlbHMuJyk7
CisKKyAgICBnbC51bmlmb3JtMWYobG9jUG9pbnRTaXplLCAxLjApOworICAgIGdsLmRyYXdBcnJh
eXMoZ2wuUE9JTlRTLCAwLCB2ZXJ0aWNlcy5sZW5ndGggLyAzKTsKKyAgICB2YXIgYnVmID0gZ2wu
cmVhZFBpeGVscygwLCAwLCAyLCAyLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFKTsKKyAgICB2
YXIgaW5kZXggPSAwOworICAgIGZvciAodmFyIHkgPSAwOyB5IDwgMjsgKyt5KSB7CisgICAgICAg
IGZvciAodmFyIHggPSAwOyB4IDwgMjsgKyt4KSB7CisgICAgICAgICAgICB2YXIgY29ycmVjdENv
bG9yID0gWzAsIDAsIDBdOworICAgICAgICAgICAgaWYgKHggPT0gMSAmJiB5ID09IDEpCisgICAg
ICAgICAgICAgICAgY29ycmVjdENvbG9yWzBdID0gMjU1OworICAgICAgICAgICAgaWYgKGJ1Zltp
bmRleF0gIT0gY29ycmVjdENvbG9yWzBdIHx8IGJ1ZltpbmRleCArIDFdICE9IGNvcnJlY3RDb2xv
clsxXSB8fCBidWZbaW5kZXggKyAyXSAhPSBjb3JyZWN0Q29sb3JbMl0pIHsKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCdEcmF3IGEgcG9pbnQgb2Ygc2l6ZSAxIHRvdWNoZWQgcGl4ZWxzIHRo
YXQgc2hvdWxkIG5vdCBiZSB0b3VjaGVkJyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5kZXggKz0gNDsKKyAgICAgICAgfQorICAg
IH0KKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJ
VCk7CisKKyAgICBkZWJ1ZygnRHJhdyBhIHBvaW50IG9mIHNpemUgMiBhbmQgdmVyaWZ5IGl0IGZp
bGxzIHRoZSBhcHByb3ByaWF0ZSByZWdpb24uJyk7CisKKyAgICB2YXIgcG9pbnRTaXplUmFuZ2Ug
PSBnbC5nZXRQYXJhbWV0ZXIoZ2wuQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFKTsKKyAgICBpZiAo
cG9pbnRTaXplUmFuZ2UgPCAyLjApCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgZ2wudW5p
Zm9ybTFmKGxvY1BvaW50U2l6ZSwgMi4wKTsKKyAgICBnbC5kcmF3QXJyYXlzKGdsLlBPSU5UUywg
MCwgdmVydGljZXMubGVuZ3RoIC8gMyk7CisgICAgYnVmID0gZ2wucmVhZFBpeGVscygwLCAwLCAy
LCAyLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFKTsKKyAgICBpbmRleCA9IDA7CisgICAgZm9y
ICh2YXIgeSA9IDA7IHkgPCAyOyArK3kpIHsKKyAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCAy
OyArK3gpIHsKKyAgICAgICAgICAgIHZhciBjb3JyZWN0Q29sb3IgPSBbMjU1LCAwLCAwXTsKKyAg
ICAgICAgICAgIGlmIChidWZbaW5kZXhdICE9IGNvcnJlY3RDb2xvclswXSB8fCBidWZbaW5kZXgg
KyAxXSAhPSBjb3JyZWN0Q29sb3JbMV0gfHwgYnVmW2luZGV4ICsgMl0gIT0gY29ycmVjdENvbG9y
WzJdKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnRHJhdyBhIHBvaW50IG9mIHNpemUg
MiBmYWlsIHRvIGZpbGwgdGhlIGFwcHJvcHJpYXRlIHJlZ2lvbicpOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluZGV4ICs9IDQ7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8Y2FudmFzIGlkPSJ0ZXN0YmVkIiB3aWR0aD0iMnB4IiBoZWlnaHQ9IjJweCI+
PC9jYW52YXM+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVmVyaWZ5IEdMX1ZFUlRFWF9QUk9HUkFN
X1BPSU5UX1NJWkUgaXMgZW5hYmxlZCBpbiBXZWJHTCcpOworCitkZWJ1ZygnUmVncmVzc2lvbiB0
ZXN0IGZvciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzcxNzgiPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzE3ODwvYT4g
OiA8Y29kZT5NdXN0IGVuYWJsZSBHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFIGR1cmluZyBp
bml0aWFsaXphdGlvbjwvY29kZT4nKTsKKworaWYgKHJ1blRlc3QoKSkKKyAgICB0ZXN0UGFzc2Vk
KCIiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53021</attachid>
            <date>2010-04-09 17:34:27 -0700</date>
            <delta_ts>2010-04-09 17:38:12 -0700</delta_ts>
            <desc>revised patch: update the expected test output</desc>
            <filename>pointsize.patch</filename>
            <type>text/plain</type>
            <size>7879</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzM2MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQtMDkgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNdXN0IGVu
YWJsZSBHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFIGR1cmluZyBpbml0aWFsaXphdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcxNzgKKwor
ICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9wb2ludC1zaXplLmh0bWwKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHA6IEVuYWJs
ZSBHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFIGR1cmluZyBpbml0aWFsaXphdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisK
IDIwMTAtMDQtMDkgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1NzM0NSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCw3IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpH
cmFwaGljc0NvbnRleHQzRChHcmEKICAgICAgICAgICAgIDo6Z2xHZW5SZW5kZXJidWZmZXJzRVhU
KDEsICZtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKICAgICB9CiAgICAgCisgICAg
OjpnbEVuYWJsZShHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFKTsKICAgICA6OmdsQ2xlYXJD
b2xvcigwLCAwLCAwLCAwKTsKIH0KIApJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzM2MSkK
KysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAxMC0wNC0wOSAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE11c3QgZW5hYmxlIEdMX1ZF
UlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUgZHVyaW5nIGluaXRpYWxpemF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzE3OAorCisgICAgICAgICog
c3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuY3BwOiBFbmFibGUgR0xfVkVSVEVY
X1BST0dSQU1fUE9JTlRfU0laRSBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCisgICAgICAgIChXZWJL
aXQ6OldlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGw6OmluaXRpYWxpemUpOgorCiAyMDEw
LTA0LTA5ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHcmFw
aGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuY3BwCShyZXZpc2lvbiA1NzM0
NSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MSw2ICszODEsNyBAQCBib29sIFdlYkdyYXBoaWNz
Q29udGV4dDNERGVmYXVsdEltcGw6OmluCiAgICAgbV9hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsK
ICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAorICAgIGdsRW5hYmxlKEdMX1ZFUlRFWF9QUk9H
UkFNX1BPSU5UX1NJWkUpOwogICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIHJldHVybiB0
cnVlOwogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTczNjEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNC0wOSAgWmhlbnlhbyBN
byAgPHptb0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE11c3QgZW5hYmxlIEdMX1ZFUlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUgZHVy
aW5nIGluaXRpYWxpemF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNzE3OAorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcG9pbnQtc2l6
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3BvaW50
LXNpemUuaHRtbDogQWRkZWQuCisKIDIwMTAtMDQtMDkgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2Vx
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
cG9pbnQtc2l6ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorVmVy
aWZ5IEdMX1ZFUlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUgaXMgZW5hYmxlZCBpbiBXZWJHTAorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1JlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MTc4IDogTXVzdCBlbmFibGUgR0xfVkVS
VEVYX1BST0dSQU1fUE9JTlRfU0laRSBkdXJpbmcgaW5pdGlhbGl6YXRpb24KK0RyYXcgYSBwb2lu
dCBvZiBzaXplIDEgYW5kIHZlcmlmeSBpdCBkb2VzIG5vdCB0b3VjaCBhbnkgb3RoZXIgcGl4ZWxz
LgorRHJhdyBhIHBvaW50IG9mIHNpemUgMiBhbmQgdmVyaWZ5IGl0IGZpbGxzIHRoZSBhcHByb3By
aWF0ZSByZWdpb24uCitQQVNTIAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9wb2ludC1zaXplLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvcG9pbnQtc2l6ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvcG9pbnQtc2l6ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExOSBA
QAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
d2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWxzM2Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0
ZXgiPgorYXR0cmlidXRlIHZlYzMgcG9zOworYXR0cmlidXRlIHZlYzQgY29sb3JJbjsKK3VuaWZv
cm0gZmxvYXQgcG9pbnRTaXplOwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4oKQor
eworICAgIGdsX1BvaW50U2l6ZSA9IHBvaW50U2l6ZTsKKyAgICBjb2xvciA9IGNvbG9ySW47Cisg
ICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvcy54eXosIDMuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNj
cmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+Cit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7Cit9
Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHZhciBn
bCA9IGluaXRXZWJHTCgndGVzdGJlZCcsICd2c2hhZGVyJywgJ2ZzaGFkZXInLCBbJ3BvcycsICdj
b2xvckluJ10sIFswLCAwLCAwLCAxXSwgMSwgeyBhbnRpYWxpYXM6IGZhbHNlIH0pOworICAgIGlm
ICghZ2wpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgnaW5pdFdlYkdMKC4uKSBmYWlsZWQnKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBnbC5kaXNhYmxlKGdsLkJMRU5EKTsKKyAg
ICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisK
KyAgICB2YXIgdmVydGljZXMgPSBuZXcgV2ViR0xGbG9hdEFycmF5KFsKKyAgICAgICAgMC40LCAw
LjQsIDAuMF0pOworICAgIHZhciBjb2xvcnMgPSBuZXcgV2ViR0xVbnNpZ25lZEJ5dGVBcnJheShb
CisgICAgICAgIDI1NSwgMCwgMCwgMjU1XSk7CisKKyAgICB2YXIgY29sb3JPZmZzZXQgPSB2ZXJ0
aWNlcy5ieXRlTGVuZ3RoOworCisgICAgdmFyIHZibyA9IGdsLmNyZWF0ZUJ1ZmZlcigpOworICAg
IGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlfQlVGRkVSLCB2Ym8pOworICAgIGdsLmJ1ZmZlckRhdGEo
Z2wuQVJSQVlfQlVGRkVSLCBjb2xvck9mZnNldCArIGNvbG9ycy5ieXRlTGVuZ3RoLCBnbC5TVEFU
SUNfRFJBVyk7CisgICAgZ2wuYnVmZmVyU3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIDAsIHZlcnRp
Y2VzKTsKKyAgICBnbC5idWZmZXJTdWJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgY29sb3JPZmZzZXQs
IGNvbG9ycyk7CisKKyAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FULCBm
YWxzZSwgMCwgMCk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7CisgICAgZ2wu
dmVydGV4QXR0cmliUG9pbnRlcigxLCA0LCBnbC5VTlNJR05FRF9CWVRFLCB0cnVlLCAwLCBjb2xv
ck9mZnNldCk7CisgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMSk7CisKKyAgICB2YXIg
bG9jUG9pbnRTaXplID0gZ2wuZ2V0VW5pZm9ybUxvY2F0aW9uKGdsLnByb2dyYW0sICdwb2ludFNp
emUnKTsKKworICAgIGRlYnVnKCdEcmF3IGEgcG9pbnQgb2Ygc2l6ZSAxIGFuZCB2ZXJpZnkgaXQg
ZG9lcyBub3QgdG91Y2ggYW55IG90aGVyIHBpeGVscy4nKTsKKworICAgIGdsLnVuaWZvcm0xZihs
b2NQb2ludFNpemUsIDEuMCk7CisgICAgZ2wuZHJhd0FycmF5cyhnbC5QT0lOVFMsIDAsIHZlcnRp
Y2VzLmxlbmd0aCAvIDMpOworICAgIHZhciBidWYgPSBnbC5yZWFkUGl4ZWxzKDAsIDAsIDIsIDIs
IGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUpOworICAgIHZhciBpbmRleCA9IDA7CisgICAgZm9y
ICh2YXIgeSA9IDA7IHkgPCAyOyArK3kpIHsKKyAgICAgICAgZm9yICh2YXIgeCA9IDA7IHggPCAy
OyArK3gpIHsKKyAgICAgICAgICAgIHZhciBjb3JyZWN0Q29sb3IgPSBbMCwgMCwgMF07CisgICAg
ICAgICAgICBpZiAoeCA9PSAxICYmIHkgPT0gMSkKKyAgICAgICAgICAgICAgICBjb3JyZWN0Q29s
b3JbMF0gPSAyNTU7CisgICAgICAgICAgICBpZiAoYnVmW2luZGV4XSAhPSBjb3JyZWN0Q29sb3Jb
MF0gfHwgYnVmW2luZGV4ICsgMV0gIT0gY29ycmVjdENvbG9yWzFdIHx8IGJ1ZltpbmRleCArIDJd
ICE9IGNvcnJlY3RDb2xvclsyXSkgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ0RyYXcg
YSBwb2ludCBvZiBzaXplIDEgdG91Y2hlZCBwaXhlbHMgdGhhdCBzaG91bGQgbm90IGJlIHRvdWNo
ZWQnKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpbmRleCArPSA0OworICAgICAgICB9CisgICAgfQorICAgIGdsLmNsZWFyKGdsLkNP
TE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKworICAgIGRlYnVnKCdEcmF3
IGEgcG9pbnQgb2Ygc2l6ZSAyIGFuZCB2ZXJpZnkgaXQgZmlsbHMgdGhlIGFwcHJvcHJpYXRlIHJl
Z2lvbi4nKTsKKworICAgIHZhciBwb2ludFNpemVSYW5nZSA9IGdsLmdldFBhcmFtZXRlcihnbC5B
TElBU0VEX1BPSU5UX1NJWkVfUkFOR0UpOworICAgIGlmIChwb2ludFNpemVSYW5nZSA8IDIuMCkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBnbC51bmlmb3JtMWYobG9jUG9pbnRTaXplLCAy
LjApOworICAgIGdsLmRyYXdBcnJheXMoZ2wuUE9JTlRTLCAwLCB2ZXJ0aWNlcy5sZW5ndGggLyAz
KTsKKyAgICBidWYgPSBnbC5yZWFkUGl4ZWxzKDAsIDAsIDIsIDIsIGdsLlJHQkEsIGdsLlVOU0lH
TkVEX0JZVEUpOworICAgIGluZGV4ID0gMDsKKyAgICBmb3IgKHZhciB5ID0gMDsgeSA8IDI7ICsr
eSkgeworICAgICAgICBmb3IgKHZhciB4ID0gMDsgeCA8IDI7ICsreCkgeworICAgICAgICAgICAg
dmFyIGNvcnJlY3RDb2xvciA9IFsyNTUsIDAsIDBdOworICAgICAgICAgICAgaWYgKGJ1ZltpbmRl
eF0gIT0gY29ycmVjdENvbG9yWzBdIHx8IGJ1ZltpbmRleCArIDFdICE9IGNvcnJlY3RDb2xvclsx
XSB8fCBidWZbaW5kZXggKyAyXSAhPSBjb3JyZWN0Q29sb3JbMl0pIHsKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCdEcmF3IGEgcG9pbnQgb2Ygc2l6ZSAyIGZhaWwgdG8gZmlsbCB0aGUgYXBw
cm9wcmlhdGUgcmVnaW9uJyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaW5kZXggKz0gNDsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9
InRlc3RiZWQiIHdpZHRoPSIycHgiIGhlaWdodD0iMnB4Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCdWZXJpZnkgR0xfVkVSVEVYX1BST0dSQU1fUE9JTlRfU0laRSBpcyBlbmFibGVk
IGluIFdlYkdMJyk7CisKK2RlYnVnKCdSZWdyZXNzaW9uIHRlc3QgZm9yIDxhIGhyZWY9Imh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzE3OCI+aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MTc4PC9hPiA6IDxjb2RlPk11c3QgZW5hYmxlIEdM
X1ZFUlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUgZHVyaW5nIGluaXRpYWxpemF0aW9uPC9jb2RlPicp
OworCitpZiAocnVuVGVzdCgpKQorICAgIHRlc3RQYXNzZWQoIiIpOworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53022</attachid>
            <date>2010-04-09 17:38:12 -0700</date>
            <delta_ts>2010-04-15 17:43:57 -0700</delta_ts>
            <desc>revised patch: modified a few comments in the test</desc>
            <filename>pointsize.patch</filename>
            <type>text/plain</type>
            <size>8095</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzM2MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQtMDkgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNdXN0IGVu
YWJsZSBHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFIGR1cmluZyBpbml0aWFsaXphdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzcxNzgKKwor
ICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy93ZWJnbC9wb2ludC1zaXplLmh0bWwKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHA6IEVuYWJs
ZSBHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFIGR1cmluZyBpbml0aWFsaXphdGlvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRCk6CisK
IDIwMTAtMDQtMDkgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gUm9iZW4uCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HcmFwaGljc0NvbnRleHQzRE1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMuY3BwCShyZXZpc2lvbiA1NzM0NSkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCw3IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpH
cmFwaGljc0NvbnRleHQzRChHcmEKICAgICAgICAgICAgIDo6Z2xHZW5SZW5kZXJidWZmZXJzRVhU
KDEsICZtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKICAgICB9CiAgICAgCisgICAg
OjpnbEVuYWJsZShHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFKTsKICAgICA6OmdsQ2xlYXJD
b2xvcigwLCAwLCAwLCAwKTsKIH0KIApJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzM2MSkK
KysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAxMC0wNC0wOSAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE11c3QgZW5hYmxlIEdMX1ZF
UlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUgZHVyaW5nIGluaXRpYWxpemF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzE3OAorCisgICAgICAgICog
c3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuY3BwOiBFbmFibGUgR0xfVkVSVEVY
X1BST0dSQU1fUE9JTlRfU0laRSBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCisgICAgICAgIChXZWJL
aXQ6OldlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGw6OmluaXRpYWxpemUpOgorCiAyMDEw
LTA0LTA5ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHcmFw
aGljc0NvbnRleHQzRERlZmF1bHRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNERGVmYXVsdEltcGwuY3BwCShyZXZpc2lvbiA1NzM0
NSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0REZWZhdWx0SW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MSw2ICszODEsNyBAQCBib29sIFdlYkdyYXBoaWNz
Q29udGV4dDNERGVmYXVsdEltcGw6OmluCiAgICAgbV9hdHRyaWJ1dGVzID0gYXR0cmlidXRlczsK
ICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAorICAgIGdsRW5hYmxlKEdMX1ZFUlRFWF9QUk9H
UkFNX1BPSU5UX1NJWkUpOwogICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIHJldHVybiB0
cnVlOwogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTczNjEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNC0wOSAgWmhlbnlhbyBN
byAgPHptb0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE11c3QgZW5hYmxlIEdMX1ZFUlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUgZHVy
aW5nIGluaXRpYWxpemF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zNzE3OAorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wvcG9pbnQtc2l6
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL3BvaW50
LXNpemUuaHRtbDogQWRkZWQuCisKIDIwMTAtMDQtMDkgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2Vx
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
cG9pbnQtc2l6ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorVmVy
aWZ5IEdMX1ZFUlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUgaXMgZW5hYmxlZCBpbiBXZWJHTAorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1JlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MTc4IDogTXVzdCBlbmFibGUgR0xfVkVS
VEVYX1BST0dSQU1fUE9JTlRfU0laRSBkdXJpbmcgaW5pdGlhbGl6YXRpb24KK0RyYXcgYSBwb2lu
dCBvZiBzaXplIDEgYW5kIHZlcmlmeSBpdCBkb2VzIG5vdCB0b3VjaCBhbnkgb3RoZXIgcGl4ZWxz
LgorRHJhdyBhIHBvaW50IG9mIHNpemUgMiBhbmQgdmVyaWZ5IGl0IGZpbGxzIHRoZSBhcHByb3By
aWF0ZSByZWdpb24uCitQQVNTIAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJn
bC9wb2ludC1zaXplLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvcG9pbnQtc2l6ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvd2ViZ2wvcG9pbnQtc2l6ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMiBA
QAorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
d2ViZ2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWxzM2Qu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBpZD0idnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC12ZXJ0
ZXgiPgorYXR0cmlidXRlIHZlYzMgcG9zOworYXR0cmlidXRlIHZlYzQgY29sb3JJbjsKK3VuaWZv
cm0gZmxvYXQgcG9pbnRTaXplOwordmFyeWluZyB2ZWM0IGNvbG9yOworCit2b2lkIG1haW4oKQor
eworICAgIGdsX1BvaW50U2l6ZSA9IHBvaW50U2l6ZTsKKyAgICBjb2xvciA9IGNvbG9ySW47Cisg
ICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvcy54eXosIDMuMCk7Cit9Cis8L3NjcmlwdD4KKworPHNj
cmlwdCBpZD0iZnNoYWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+Cit2YXJ5aW5nIHZl
YzQgY29sb3I7CisKK3ZvaWQgbWFpbigpCit7CisgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7Cit9
Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHZhciBn
bCA9IGluaXRXZWJHTCgndGVzdGJlZCcsICd2c2hhZGVyJywgJ2ZzaGFkZXInLCBbJ3BvcycsICdj
b2xvckluJ10sIFswLCAwLCAwLCAxXSwgMSwgeyBhbnRpYWxpYXM6IGZhbHNlIH0pOworICAgIGlm
ICghZ2wpIHsKKyAgICAgICAgdGVzdEZhaWxlZCgnaW5pdFdlYkdMKC4uKSBmYWlsZWQnKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBnbC5kaXNhYmxlKGdsLkJMRU5EKTsKKyAg
ICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwgZ2wuREVQVEhfQlVGRkVSX0JJVCk7CisK
KyAgICAvLyBUaGUgY2hvaWNlIG9mICgwLjQsIDAuNCkgZW5zdXJlcyB0aGF0IHRoZSBjZW50ZXJz
IG9mIHRoZSBzdXJyb3VuZGluZworICAgIC8vIHBpeGVscyBhcmUgbm90IGNvbnRhaW5lZCB3aXRo
aW4gdGhlIHBvaW50IHdoZW4gaXQgaXMgb2Ygc2l6ZSAxLCBidXQKKyAgICAvLyB0aGF0IHRoZXkg
ZGVmaW5pdGVseSBhcmUgd2hlbiBpdCBpcyBvZiBzaXplIDIuCisgICAgdmFyIHZlcnRpY2VzID0g
bmV3IFdlYkdMRmxvYXRBcnJheShbCisgICAgICAgIDAuNCwgMC40LCAwLjBdKTsKKyAgICB2YXIg
Y29sb3JzID0gbmV3IFdlYkdMVW5zaWduZWRCeXRlQXJyYXkoWworICAgICAgICAyNTUsIDAsIDAs
IDI1NV0pOworCisgICAgdmFyIGNvbG9yT2Zmc2V0ID0gdmVydGljZXMuYnl0ZUxlbmd0aDsKKwor
ICAgIHZhciB2Ym8gPSBnbC5jcmVhdGVCdWZmZXIoKTsKKyAgICBnbC5iaW5kQnVmZmVyKGdsLkFS
UkFZX0JVRkZFUiwgdmJvKTsKKyAgICBnbC5idWZmZXJEYXRhKGdsLkFSUkFZX0JVRkZFUiwgY29s
b3JPZmZzZXQgKyBjb2xvcnMuYnl0ZUxlbmd0aCwgZ2wuU1RBVElDX0RSQVcpOworICAgIGdsLmJ1
ZmZlclN1YkRhdGEoZ2wuQVJSQVlfQlVGRkVSLCAwLCB2ZXJ0aWNlcyk7CisgICAgZ2wuYnVmZmVy
U3ViRGF0YShnbC5BUlJBWV9CVUZGRVIsIGNvbG9yT2Zmc2V0LCBjb2xvcnMpOworCisgICAgZ2wu
dmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBnbC5GTE9BVCwgZmFsc2UsIDAsIDApOworICAgIGds
LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOworICAgIGdsLnZlcnRleEF0dHJpYlBvaW50ZXIo
MSwgNCwgZ2wuVU5TSUdORURfQllURSwgdHJ1ZSwgMCwgY29sb3JPZmZzZXQpOworICAgIGdsLmVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOworCisgICAgdmFyIGxvY1BvaW50U2l6ZSA9IGdsLmdl
dFVuaWZvcm1Mb2NhdGlvbihnbC5wcm9ncmFtLCAncG9pbnRTaXplJyk7CisKKyAgICBkZWJ1Zygn
RHJhdyBhIHBvaW50IG9mIHNpemUgMSBhbmQgdmVyaWZ5IGl0IGRvZXMgbm90IHRvdWNoIGFueSBv
dGhlciBwaXhlbHMuJyk7CisKKyAgICBnbC51bmlmb3JtMWYobG9jUG9pbnRTaXplLCAxLjApOwor
ICAgIGdsLmRyYXdBcnJheXMoZ2wuUE9JTlRTLCAwLCB2ZXJ0aWNlcy5sZW5ndGggLyAzKTsKKyAg
ICB2YXIgYnVmID0gZ2wucmVhZFBpeGVscygwLCAwLCAyLCAyLCBnbC5SR0JBLCBnbC5VTlNJR05F
RF9CWVRFKTsKKyAgICB2YXIgaW5kZXggPSAwOworICAgIGZvciAodmFyIHkgPSAwOyB5IDwgMjsg
Kyt5KSB7CisgICAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgMjsgKyt4KSB7CisgICAgICAgICAg
ICB2YXIgY29ycmVjdENvbG9yID0gWzAsIDAsIDBdOworICAgICAgICAgICAgaWYgKHggPT0gMSAm
JiB5ID09IDEpCisgICAgICAgICAgICAgICAgY29ycmVjdENvbG9yWzBdID0gMjU1OworICAgICAg
ICAgICAgaWYgKGJ1ZltpbmRleF0gIT0gY29ycmVjdENvbG9yWzBdIHx8IGJ1ZltpbmRleCArIDFd
ICE9IGNvcnJlY3RDb2xvclsxXSB8fCBidWZbaW5kZXggKyAyXSAhPSBjb3JyZWN0Q29sb3JbMl0p
IHsKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdEcmF3aW5nIGEgcG9pbnQgb2Ygc2l6ZSAx
IHRvdWNoZWQgcGl4ZWxzIHRoYXQgc2hvdWxkIG5vdCBiZSB0b3VjaGVkJyk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5kZXggKz0g
NDsKKyAgICAgICAgfQorICAgIH0KKyAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwg
Z2wuREVQVEhfQlVGRkVSX0JJVCk7CisKKyAgICBkZWJ1ZygnRHJhdyBhIHBvaW50IG9mIHNpemUg
MiBhbmQgdmVyaWZ5IGl0IGZpbGxzIHRoZSBhcHByb3ByaWF0ZSByZWdpb24uJyk7CisKKyAgICB2
YXIgcG9pbnRTaXplUmFuZ2UgPSBnbC5nZXRQYXJhbWV0ZXIoZ2wuQUxJQVNFRF9QT0lOVF9TSVpF
X1JBTkdFKTsKKyAgICBpZiAocG9pbnRTaXplUmFuZ2UgPCAyLjApCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgZ2wudW5pZm9ybTFmKGxvY1BvaW50U2l6ZSwgMi4wKTsKKyAgICBnbC5kcmF3
QXJyYXlzKGdsLlBPSU5UUywgMCwgdmVydGljZXMubGVuZ3RoIC8gMyk7CisgICAgYnVmID0gZ2wu
cmVhZFBpeGVscygwLCAwLCAyLCAyLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFKTsKKyAgICBp
bmRleCA9IDA7CisgICAgZm9yICh2YXIgeSA9IDA7IHkgPCAyOyArK3kpIHsKKyAgICAgICAgZm9y
ICh2YXIgeCA9IDA7IHggPCAyOyArK3gpIHsKKyAgICAgICAgICAgIHZhciBjb3JyZWN0Q29sb3Ig
PSBbMjU1LCAwLCAwXTsKKyAgICAgICAgICAgIGlmIChidWZbaW5kZXhdICE9IGNvcnJlY3RDb2xv
clswXSB8fCBidWZbaW5kZXggKyAxXSAhPSBjb3JyZWN0Q29sb3JbMV0gfHwgYnVmW2luZGV4ICsg
Ml0gIT0gY29ycmVjdENvbG9yWzJdKSB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnRHJh
d2luZyBhIHBvaW50IG9mIHNpemUgMiBmYWlsZWQgdG8gZmlsbCB0aGUgYXBwcm9wcmlhdGUgcmVn
aW9uJyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaW5kZXggKz0gNDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxjYW52YXMgaWQ9InRlc3RiZWQiIHdp
ZHRoPSIycHgiIGhlaWdodD0iMnB4Ij48L2NhbnZhcz4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdW
ZXJpZnkgR0xfVkVSVEVYX1BST0dSQU1fUE9JTlRfU0laRSBpcyBlbmFibGVkIGluIFdlYkdMJyk7
CisKK2RlYnVnKCdSZWdyZXNzaW9uIHRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzE3OCI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM3MTc4PC9hPiA6IDxjb2RlPk11c3QgZW5hYmxlIEdMX1ZFUlRFWF9QUk9H
UkFNX1BPSU5UX1NJWkUgZHVyaW5nIGluaXRpYWxpemF0aW9uPC9jb2RlPicpOworCitpZiAocnVu
VGVzdCgpKQorICAgIHRlc3RQYXNzZWQoIiIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>