<?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>75146</bug_id>
          
          <creation_ts>2011-12-22 15:51:44 -0800</creation_ts>
          <short_desc>[chromium] Accelerated 2D canvas is blank on windows</short_desc>
          <delta_ts>2012-01-04 09:18:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vangelis Kokkevis">vangelis</reporter>
          <assigned_to name="Vangelis Kokkevis">vangelis</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>husky</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>pfeldman</cc>
    
    <cc>twiz</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>526595</commentid>
    <comment_count>0</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-12-22 15:51:44 -0800</bug_when>
    <thetext>It stopped working after http://trac.webkit.org/changeset/103264 was checked in.  There are two problems:
1. Now that on Windows we use the glTexStorage2D extension to allocate managed textures, we cannot populate the m_frontTexture via glCopyTexImage2D as the texture is marked immutable.  glCopyTexSubImage2D will work fine.
2. On Windows, accelerated canvas uses a BGRA texture for backing store.  glCopyTex(Sub)Image2D doesn&apos;t support BGRA source textures (even when the BGRA extension is enabled) and therefore the call returns an INVALID_OPERATION.

The short term fix to get accelerated canvas working again on windows is to bypass the texture copy when running the compositor in the main thread (which is the default setting). The copy isn&apos;t necessary anyway. I filed another bug for fixing the threaded case:
https://bugs.webkit.org/show_bug.cgi?id=75142</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526603</commentid>
    <comment_count>1</comment_count>
      <attachid>120400</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-12-22 16:00:55 -0800</bug_when>
    <thetext>Created attachment 120400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526618</commentid>
    <comment_count>2</comment_count>
      <attachid>120400</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-12-22 16:15:14 -0800</bug_when>
    <thetext>Comment on attachment 120400
Patch

Thanks for fixing this!  I&apos;ll leave the final review to James, but could we rename m_useShadowTexture to something else, to avoid confusion wrt actual canvas shadows?  I can&apos;t think of anything clever at the moment.  m_useFrontTexture?  m_copyBackingStore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526682</commentid>
    <comment_count>3</comment_count>
      <attachid>120400</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-22 18:25:32 -0800</bug_when>
    <thetext>Comment on attachment 120400
Patch

I&apos;d say m_useDoubleBuffering. Otherwise, R=me

What&apos;s missing in our test coverage such that this went in without breaking any layout or unit tests but broke the real product?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527299</commentid>
    <comment_count>4</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-12-27 00:25:30 -0800</bug_when>
    <thetext>Committed r103703: &lt;http://trac.webkit.org/changeset/103703&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527319</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-27 02:23:01 -0800</bug_when>
    <thetext>Rolled out as r103706 for breaking Canvas2DLayerChromiumTest.testFullLifecycle:

(see http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Linux/builds/18488/steps/webkit_unit_tests/logs/stdio)

[----------] 1 test from Canvas2DLayerChromiumTest
[ RUN      ] Canvas2DLayerChromiumTest.testFullLifecycle
third_party/WebKit/Source/WebKit/chromium/tests/Canvas2DLayerChromiumTest.cpp:143: Failure
Value of: static_cast&lt;CCCanvasLayerImpl*&gt;(layerImpl.get())-&gt;textureId()
  Actual: 1
Expected: frontTextureId
Which is: 2
third_party/WebKit/Source/WebKit/chromium/tests/Canvas2DLayerChromiumTest.cpp:122: Failure
Actual function call count doesn&apos;t match EXPECT_CALL(allocatorMock, deleteTexture(frontTextureId, size, GraphicsContext3D::RGBA))...
         Expected: to be called once
           Actual: never called - unsatisfied and active
third_party/WebKit/Source/WebKit/chromium/tests/Canvas2DLayerChromiumTest.cpp:110: Failure
Actual function call count doesn&apos;t match EXPECT_CALL(allocatorMock, createTexture(size, GraphicsContext3D::RGBA))...
         Expected: to be called once
           Actual: never called - unsatisfied and active
third_party/WebKit/Source/WebKit/chromium/tests/Canvas2DLayerChromiumTest.cpp:115: Failure
Actual function call count doesn&apos;t match EXPECT_CALL(implMock, copyTexImage2D(GraphicsContext3D::TEXTURE_2D, 0, GraphicsContext3D::RGBA, 0, 0, 300, 150, 0))...
         Expected: to be called once
           Actual: never called - unsatisfied and active
third_party/WebKit/Source/WebKit/chromium/tests/Canvas2DLayerChromiumTest.cpp:112: Failure
Actual function call count doesn&apos;t match EXPECT_CALL(implMock, bindTexture(GraphicsContext3D::TEXTURE_2D, frontTextureId))...
         Expected: to be called once
           Actual: never called - unsatisfied and active
third_party/WebKit/Source/WebKit/chromium/tests/Canvas2DLayerChromiumTest.cpp:114: Failure
Actual function call count doesn&apos;t match EXPECT_CALL(implMock, framebufferTexture2D(GraphicsContext3D::FRAMEBUFFER, GraphicsContext3D::COLOR_ATTACHMENT0, GraphicsContext3D::TEXTURE_2D, backTextureId, 0))...
         Expected: to be called once
           Actual: never called - unsatisfied and active
third_party/WebKit/Source/WebKit/chromium/tests/Canvas2DLayerChromiumTest.cpp:113: Failure
Actual function call count doesn&apos;t match EXPECT_CALL(implMock, bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, fboId))...
         Expected: to be called once
           Actual: never called - unsatisfied and active
third_party/WebKit/Source/WebKit/chromium/tests/Canvas2DLayerChromiumTest.cpp:116: Failure
Actual function call count doesn&apos;t match EXPECT_CALL(implMock, bindFramebuffer(GraphicsContext3D::FRAMEBUFFER, 0))...
         Expected: to be called once
           Actual: never called - unsatisfied and active
third_party/WebKit/Source/WebKit/chromium/tests/Canvas2DLayerChromiumTest.cpp:119: Failure
Actual function call count doesn&apos;t match EXPECT_CALL(mainMock, deleteFramebuffer(fboId))...
         Expected: to be called once
           Actual: never called - unsatisfied and active
third_party/WebKit/Source/WebKit/chromium/tests/Canvas2DLayerChromiumTest.cpp:106: Failure
Actual function call count doesn&apos;t match EXPECT_CALL(mainMock, createFramebuffer())...
         Expected: to be called once
           Actual: never called - unsatisfied and active
[  FAILED  ] Canvas2DLayerChromiumTest.testFullLifecycle (1 ms)
[----------] 1 test from Canvas2DLayerChromiumTest (1 ms total)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529149</commentid>
    <comment_count>6</comment_count>
      <attachid>121016</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2012-01-03 16:35:00 -0800</bug_when>
    <thetext>Created attachment 121016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529150</commentid>
    <comment_count>7</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2012-01-03 16:36:25 -0800</bug_when>
    <thetext>New patch that modifies the unit test to check both threaded and non-threaded canvas paths.
James, can you please take another look? 

(In reply to comment #6)
&gt; Created an attachment (id=121016) [details]
&gt; Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529204</commentid>
    <comment_count>8</comment_count>
      <attachid>121016</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-03 17:41:09 -0800</bug_when>
    <thetext>Comment on attachment 121016
Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529243</commentid>
    <comment_count>9</comment_count>
      <attachid>121016</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-03 18:57:18 -0800</bug_when>
    <thetext>Comment on attachment 121016
Patch

Rejecting attachment 121016 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
Chromium.h
patching file Source/WebKit/chromium/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebKit/chromium/tests/CCSchedulerTestCommon.h
patching file Source/WebKit/chromium/tests/Canvas2DLayerChromiumTest.cpp
Hunk #4 FAILED at 68.
1 out of 4 hunks FAILED -- saving rejects to file Source/WebKit/chromium/tests/Canvas2DLayerChromiumTest.cpp.rej

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;James Robinson&apos;, u&apos;--f...&quot; exit_code: 1

Full output: http://queues.webkit.org/results/11083269</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529561</commentid>
    <comment_count>10</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2012-01-04 09:18:17 -0800</bug_when>
    <thetext>Committed r104044: &lt;http://trac.webkit.org/changeset/104044&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120400</attachid>
            <date>2011-12-22 16:00:55 -0800</date>
            <delta_ts>2012-01-03 16:34:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75146-20111222155950.patch</filename>
            <type>text/plain</type>
            <size>6001</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDExLTEyLTIyICBWYW5nZWxp
cyBLb2trZXZpcyAgPHZhbmdlbGlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEJ5cGFzcyB0aGUgc2hhZG93IHRleHR1cmUgY29weSBmb3IgYWNjZWxlcmF0ZWQKKyAgICAgICAg
Y2FudmFzIHdoZW4gcnVubmluZyB0aGUgY29tcG9zaXRvciBpbiBzaW5nbGUgdGhyZWFkZWQgbW9k
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MTQ2
CisKKyAgICAgICAgVGhlIHRleHR1cmUgY29weSBmYWlscyBvbiBXaW5kb3dzIGFzIGdsQ29weVRl
eEltYWdlMkQoKSBkb2Vzbid0CisgICAgICAgIHN1cHBvcnQgQkdSQSBzb3VyY2UgdGV4dHVyZXMu
IAorICAgICAgICBUaGlzIGNoYW5nZSBhbHNvIG1vZGlmaWVkIENhbnZhczJETGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcworICAgICAgICB0byBjYWxsIGdsQ29weVRleFN1
YkltYWdlMkQoKSBpbnN0ZWFkIG9mIGdsQ29weVRleEltYWdlMkQoKSBzbyB0aGF0CisgICAgICAg
IHRoZSBjb3B5IGNhbiB3b3JrIHdpdGggdGV4dHVyZSBhbGxvY2F0ZWQgdmlhIHRoZSBnbFRleFN0
b3JhZ2UyRAorICAgICAgICBleHRlbnNpb24uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
czJETGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hy
b21pdW06OkNhbnZhczJETGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMy
RExheWVyQ2hyb21pdW06On5DYW52YXMyRExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnNldFRleHR1cmVNYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnB1c2hQ
cm9wZXJ0aWVzVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjp1
bnJlc2VydmVDb250ZW50c1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXll
ckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaDoKKwogMjAxMS0xMi0yMiAgQ2hyaXMg
Um9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIEZpeCBtYWMgYnVpbGQgYnJl
YWthZ2UgLSBhZGQgU2luY1Jlc2FtcGxlciBmaWxlcyB0byBXZWJDb3JlLnhjb2RlcHJvagpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXll
ckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMDM0NzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxMyArNTgsMTYgQEAgQ2FudmFz
MkRMYXllckNocm9taXVtOjpDYW52YXMyRExheWVyQ2hybwogICAgICwgbV9zaXplKHNpemUpCiAg
ICAgLCBtX2JhY2tUZXh0dXJlSWQoMCkKICAgICAsIG1fZmJvKDApCisgICAgLCBtX3VzZVNoYWRv
d1RleHR1cmUoQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpKQogewotICAgIEdMQyhtX2NvbnRleHQs
IG1fZmJvID0gbV9jb250ZXh0LT5jcmVhdGVGcmFtZWJ1ZmZlcigpKTsKKyAgICBpZiAobV91c2VT
aGFkb3dUZXh0dXJlKQorICAgICAgICBHTEMobV9jb250ZXh0LCBtX2ZibyA9IG1fY29udGV4dC0+
Y3JlYXRlRnJhbWVidWZmZXIoKSk7CiB9CiAKIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6fkNhbnZh
czJETGF5ZXJDaHJvbWl1bSgpCiB7Ci0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxl
dGVGcmFtZWJ1ZmZlcihtX2ZibykpOworICAgIGlmIChtX3VzZVNoYWRvd1RleHR1cmUgJiYgbV9m
Ym8pCisgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlciht
X2ZibykpOwogfQogCiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZUlkKHVu
c2lnbmVkIHRleHR1cmVJZCkKQEAgLTkyLDcgKzk1LDggQEAgdm9pZCBDYW52YXMyRExheWVyQ2hy
b21pdW06OnBhaW50Q29udGVudAogICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fZnJvbnRUZXh0dXJlLT5yZXNlcnZlKG1fc2l6ZSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkEpOworICAgIGlmIChtX3VzZVNoYWRvd1RleHR1cmUpCisgICAgICAgIG1fZnJv
bnRUZXh0dXJlLT5yZXNlcnZlKG1fc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOwogCiAg
ICAgaWYgKCFuZWVkc0Rpc3BsYXkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTIxLDcgKzEyNSw3
IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpzZXRMYXllclRyZWUKIAogdm9pZCBDYW52
YXMyRExheWVyQ2hyb21pdW06OnNldFRleHR1cmVNYW5hZ2VyKFRleHR1cmVNYW5hZ2VyKiB0ZXh0
dXJlTWFuYWdlcikKIHsKLSAgICBpZiAodGV4dHVyZU1hbmFnZXIpCisgICAgaWYgKHRleHR1cmVN
YW5hZ2VyICYmIG1fdXNlU2hhZG93VGV4dHVyZSkKICAgICAgICAgbV9mcm9udFRleHR1cmUgPSBN
YW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyKTsKICAgICBlbHNlCiAgICAgICAg
IG1fZnJvbnRUZXh0dXJlLmNsZWFyKCk7CkBAIC0xMjksMTQgKzEzMywxNiBAQCB2b2lkIENhbnZh
czJETGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZU1hCiAKIHZvaWQgQ2FudmFzMkRMYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQogewotICAgIGlmICghbV9iYWNrVGV4dHVyZUlk
IHx8ICFtX2Zyb250VGV4dHVyZS0+aXNWYWxpZChtX3NpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBKSkKKyAgICBpZiAoIW1fYmFja1RleHR1cmVJZCB8fCAhbV9mcm9udFRleHR1cmUgfHwgIW1f
ZnJvbnRUZXh0dXJlLT5pc1ZhbGlkKG1fc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBtX2Zyb250VGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4
dCwgdXBkYXRlci5hbGxvY2F0b3IoKSk7CiAKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+Ymlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pKTsKICAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAs
IEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2JhY2tUZXh0dXJlSWQsIDApKTsKLSAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCAwLCAwLCBtX3NpemUud2lk
dGgoKSwgbV9zaXplLmhlaWdodCgpLCAwKSk7CisgICAgLy8gRklYTUU6IFRoZSBjb3B5IG9wZXJh
dGlvbiB3aWxsIGZhaWwgaWYgdGhlIG1fYmFja1RleHR1cmUgaXMgYWxsb2NhdGVkIGFzIEJHUkEg
c2luY2UgZ2xDb3B5VGV4KFN1YilJbWFnZTJEIGRvZXNuJ3QKKyAgICAvLyAgICAgICAgc3VwcG9y
dCB0aGUgQkdSQSBmb3JtYXQuIFNlZSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc1MTQyCisgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmNvcHlUZXhTdWJJbWFn
ZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCAwLCAwLCBtX3NpemUu
d2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJp
bmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKICAgICBH
TEMoY29udGV4dCwgY29udGV4dC0+Zmx1c2goKSk7CiB9CkBAIC0xNDYsMTcgKzE1MiwyMiBAQCB2
b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpCiAgICAgQ2FudmFzTGF5ZXJD
aHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhsYXllcik7CiAKICAgICBDQ0NhbnZhc0xheWVySW1w
bCogY2FudmFzTGF5ZXIgPSBzdGF0aWNfY2FzdDxDQ0NhbnZhc0xheWVySW1wbCo+KGxheWVyKTsK
LSAgICBjYW52YXNMYXllci0+c2V0VGV4dHVyZUlkKG1fZnJvbnRUZXh0dXJlLT50ZXh0dXJlSWQo
KSk7CisgICAgaWYgKG1fdXNlU2hhZG93VGV4dHVyZSkKKyAgICAgICAgY2FudmFzTGF5ZXItPnNl
dFRleHR1cmVJZChtX2Zyb250VGV4dHVyZS0+dGV4dHVyZUlkKCkpOworICAgIGVsc2UKKyAgICAg
ICAgY2FudmFzTGF5ZXItPnNldFRleHR1cmVJZChtX2JhY2tUZXh0dXJlSWQpOwogfQogCiB2b2lk
IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCkKIHsKLSAg
ICBtX2Zyb250VGV4dHVyZS0+dW5yZXNlcnZlKCk7CisgICAgaWYgKG1fdXNlU2hhZG93VGV4dHVy
ZSkKKyAgICAgICAgbV9mcm9udFRleHR1cmUtPnVucmVzZXJ2ZSgpOwogfQogCiB2b2lkIENhbnZh
czJETGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiB7Ci0gICAgbV9mcm9udFRleHR1
cmUuY2xlYXIoKTsKKyAgICBpZiAobV91c2VTaGFkb3dUZXh0dXJlKQorICAgICAgICBtX2Zyb250
VGV4dHVyZS5jbGVhcigpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hy
b21pdW0uaAkocmV2aXNpb24gMTAzNDcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTcxLDYgKzcxLDEwIEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgdW5zaWdu
ZWQgbV9iYWNrVGV4dHVyZUlkOwogICAgIFBsYXRmb3JtM0RPYmplY3QgbV9mYm87CisgICAgLy8g
V2hlbiBtX3VzZVNoYWRvd1RleHR1cmUgaXMgdHJ1ZSwgdGhlIGNvbXBvc2l0b3Igd2lsbCBkcmF3
IHVzaW5nIGEgY29weSBvZiB0aGUKKyAgICAvLyBjYW52YXMnIGJhY2tpbmcgdGV4dHVyZS4gVGhp
cyBvcHRpb24gc2hvdWxkIGJlIHVzZWQgd2l0aCB0aGUgY29tcG9zaXRvciBkb2Vzbid0CisgICAg
Ly8gc3luY2hyb25pemUgaXRzIGRyYXdzIHdpdGggdGhlIGNhbnZhcyB1cGRhdGVzLgorICAgIGJv
b2wgbV91c2VTaGFkb3dUZXh0dXJlOwogICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV9mcm9u
dFRleHR1cmU7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121016</attachid>
            <date>2012-01-03 16:35:00 -0800</date>
            <delta_ts>2012-01-03 18:57:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75146-20120103163329.patch</filename>
            <type>text/plain</type>
            <size>17661</size>
            <attacher name="Vangelis Kokkevis">vangelis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzk4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAxLTAzICBWYW5nZWxp
cyBLb2trZXZpcyAgPHZhbmdlbGlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IEJ5cGFzcyB0aGUgc2hhZG93IHRleHR1cmUgY29weSBmb3IgYWNjZWxlcmF0ZWQKKyAgICAgICAg
Y2FudmFzIHdoZW4gcnVubmluZyB0aGUgY29tcG9zaXRvciBpbiBzaW5nbGUgdGhyZWFkZWQgbW9k
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MTQ2
CisKKyAgICAgICAgVGhlIHRleHR1cmUgY29weSBmYWlscyBvbiBXaW5kb3dzIGFzIGdsQ29weVRl
eEltYWdlMkQoKSBkb2Vzbid0CisgICAgICAgIHN1cHBvcnQgQkdSQSBzb3VyY2UgdGV4dHVyZXMu
CisgICAgICAgIFRoaXMgY2hhbmdlIGFsc28gbW9kaWZpZXMgQ2FudmFzMkRMYXllckNocm9taXVt
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzCisgICAgICAgIHRvIGNhbGwgZ2xDb3B5VGV4U3Vi
SW1hZ2UyRCgpIGluc3RlYWQgb2YgZ2xDb3B5VGV4SW1hZ2UyRCgpIHNvIHRoYXQKKyAgICAgICAg
dGhlIGNvcHkgY2FuIHdvcmsgd2l0aCB0ZXh0dXJlIGFsbG9jYXRlZCB2aWEgdGhlIGdsVGV4U3Rv
cmFnZTJECisgICAgICAgIGV4dGVuc2lvbi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0czogQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAK
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OkNhbnZh
czJETGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21p
dW06On5DYW52YXMyRExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRM
YXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXMyRExheWVyQ2hyb21pdW06OnNldFRleHR1cmVNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8p
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjp1bnJlc2VydmVDb250
ZW50c1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpj
bGVhbnVwUmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXMyRExheWVyQ2hyb21pdW0uaDoKKwogMjAxMi0wMS0wMyAgWXV6aHUgU2hlbiAgPHl6c2hl
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgdjggYmluZGluZzogbnBDcmVhdGVWOFNjcmlwdE9i
amVjdCgpIHNob3VsZCBub3QgcmV0dXJuZWQgYW4gZXhpc3RpbmcgVjhOUE9iamVjdCBpZiB0aGUg
cm9vdE9iamVjdCBkb2Vzbid0IG1hdGNoCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJD
aHJvbWl1bS5jcHAJKHJldmlzaW9uIDEwMzk0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU4LDEzICs1OCwxNiBAQCBDYW52YXMyRExheWVyQ2hyb21pdW06OkNhbnZhczJETGF5
ZXJDaHJvCiAgICAgLCBtX3NpemUoc2l6ZSkKICAgICAsIG1fYmFja1RleHR1cmVJZCgwKQogICAg
ICwgbV9mYm8oMCkKKyAgICAsIG1fdXNlRG91YmxlQnVmZmVyaW5nKENDUHJveHk6Omhhc0ltcGxU
aHJlYWQoKSkKIHsKLSAgICBHTEMobV9jb250ZXh0LCBtX2ZibyA9IG1fY29udGV4dC0+Y3JlYXRl
RnJhbWVidWZmZXIoKSk7CisgICAgaWYgKG1fdXNlRG91YmxlQnVmZmVyaW5nKQorICAgICAgICBH
TEMobV9jb250ZXh0LCBtX2ZibyA9IG1fY29udGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKSk7CiB9
CiAKIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6fkNhbnZhczJETGF5ZXJDaHJvbWl1bSgpCiB7Ci0g
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX2ZibykpOwor
ICAgIGlmIChtX3VzZURvdWJsZUJ1ZmZlcmluZyAmJiBtX2ZibykKKyAgICAgICBHTEMobV9jb250
ZXh0LCBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fZmJvKSk7CiB9CiAKIHZvaWQgQ2Fu
dmFzMkRMYXllckNocm9taXVtOjpzZXRUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKQpAQCAt
OTIsNyArOTUsOCBAQCB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50CiAg
ICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9mcm9udFRl
eHR1cmUtPnJlc2VydmUobV9zaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgaWYg
KG1fdXNlRG91YmxlQnVmZmVyaW5nKQorICAgICAgICBtX2Zyb250VGV4dHVyZS0+cmVzZXJ2ZSht
X3NpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKIAogICAgIGlmICghbmVlZHNEaXNwbGF5
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMSw3ICsxMjUsNyBAQCB2b2lkIENhbnZhczJETGF5
ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlCiAKIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpz
ZXRUZXh0dXJlTWFuYWdlcihUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIpCiB7Ci0gICAg
aWYgKHRleHR1cmVNYW5hZ2VyKQorICAgIGlmICh0ZXh0dXJlTWFuYWdlciAmJiBtX3VzZURvdWJs
ZUJ1ZmZlcmluZykKICAgICAgICAgbV9mcm9udFRleHR1cmUgPSBNYW5hZ2VkVGV4dHVyZTo6Y3Jl
YXRlKHRleHR1cmVNYW5hZ2VyKTsKICAgICBlbHNlCiAgICAgICAgIG1fZnJvbnRUZXh0dXJlLmNs
ZWFyKCk7CkBAIC0xMjksMTQgKzEzMywxNiBAQCB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6
c2V0VGV4dHVyZU1hCiAKIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVy
JiB1cGRhdGVyKQogewotICAgIGlmICghbV9iYWNrVGV4dHVyZUlkIHx8ICFtX2Zyb250VGV4dHVy
ZS0+aXNWYWxpZChtX3NpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKSkKKyAgICBpZiAoIW1f
YmFja1RleHR1cmVJZCB8fCAhbV9mcm9udFRleHR1cmUgfHwgIW1fZnJvbnRUZXh0dXJlLT5pc1Zh
bGlkKG1fc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX2Zyb250VGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgdXBkYXRlci5hbGxvY2F0
b3IoKSk7CiAKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pKTsKICAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBtX2JhY2tUZXh0dXJlSWQsIDApKTsKLSAgICBHTEMoY29udGV4dCwgY29u
dGV4dC0+Y29weVRleEltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBLCAwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdo
dCgpLCAwKSk7CisgICAgLy8gRklYTUU6IFRoZSBjb3B5IG9wZXJhdGlvbiB3aWxsIGZhaWwgaWYg
dGhlIG1fYmFja1RleHR1cmUgaXMgYWxsb2NhdGVkIGFzIEJHUkEgc2luY2UgZ2xDb3B5VGV4KFN1
YilJbWFnZTJEIGRvZXNuJ3QKKyAgICAvLyAgICAgICAgc3VwcG9ydCB0aGUgQkdSQSBmb3JtYXQu
IFNlZSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MTQyCisg
ICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmNvcHlUZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCAwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhl
aWdodCgpKSk7CiAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIDApKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+Zmx1c2goKSk7CiB9CkBAIC0xNDYsMTcgKzE1MiwyMiBAQCB2b2lkIENhbnZhczJETGF5ZXJD
aHJvbWl1bTo6cHVzaFByb3BlcnRpCiAgICAgQ2FudmFzTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3Bl
cnRpZXNUbyhsYXllcik7CiAKICAgICBDQ0NhbnZhc0xheWVySW1wbCogY2FudmFzTGF5ZXIgPSBz
dGF0aWNfY2FzdDxDQ0NhbnZhc0xheWVySW1wbCo+KGxheWVyKTsKLSAgICBjYW52YXNMYXllci0+
c2V0VGV4dHVyZUlkKG1fZnJvbnRUZXh0dXJlLT50ZXh0dXJlSWQoKSk7CisgICAgaWYgKG1fdXNl
RG91YmxlQnVmZmVyaW5nKQorICAgICAgICBjYW52YXNMYXllci0+c2V0VGV4dHVyZUlkKG1fZnJv
bnRUZXh0dXJlLT50ZXh0dXJlSWQoKSk7CisgICAgZWxzZQorICAgICAgICBjYW52YXNMYXllci0+
c2V0VGV4dHVyZUlkKG1fYmFja1RleHR1cmVJZCk7CiB9CiAKIHZvaWQgQ2FudmFzMkRMYXllckNo
cm9taXVtOjp1bnJlc2VydmVDb250ZW50c1RleHR1cmUoKQogewotICAgIG1fZnJvbnRUZXh0dXJl
LT51bnJlc2VydmUoKTsKKyAgICBpZiAobV91c2VEb3VibGVCdWZmZXJpbmcpCisgICAgICAgIG1f
ZnJvbnRUZXh0dXJlLT51bnJlc2VydmUoKTsKIH0KIAogdm9pZCBDYW52YXMyRExheWVyQ2hyb21p
dW06OmNsZWFudXBSZXNvdXJjZXMoKQogewotICAgIG1fZnJvbnRUZXh0dXJlLmNsZWFyKCk7Cisg
ICAgaWYgKG1fdXNlRG91YmxlQnVmZmVyaW5nKQorICAgICAgICBtX2Zyb250VGV4dHVyZS5jbGVh
cigpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAkocmV2
aXNpb24gMTAzOTQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDEw
IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgdW5zaWduZWQgbV9iYWNrVGV4
dHVyZUlkOwogICAgIFBsYXRmb3JtM0RPYmplY3QgbV9mYm87CisgICAgLy8gV2hlbiBtX3VzZURv
dWJsZUJ1ZmZlcmluZyBpcyB0cnVlLCB0aGUgY29tcG9zaXRvciB3aWxsIGRyYXcgdXNpbmcgYSBj
b3B5IG9mIHRoZQorICAgIC8vIGNhbnZhcycgYmFja2luZyB0ZXh0dXJlLiBUaGlzIG9wdGlvbiBz
aG91bGQgYmUgdXNlZCB3aXRoIHRoZSBjb21wb3NpdG9yIGRvZXNuJ3QKKyAgICAvLyBzeW5jaHJv
bml6ZSBpdHMgZHJhd3Mgd2l0aCB0aGUgY2FudmFzIHVwZGF0ZXMuCisgICAgYm9vbCBtX3VzZURv
dWJsZUJ1ZmZlcmluZzsKICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fZnJvbnRUZXh0dXJl
OwogfTsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzk4NSkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTItMDEtMDMgIFZhbmdlbGlzIEtva2tldmlzICA8dmFuZ2VsaXNAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQnlwYXNzIHRoZSBzaGFkb3cgdGV4dHVy
ZSBjb3B5IGZvciBhY2NlbGVyYXRlZAorICAgICAgICBjYW52YXMgd2hlbiBydW5uaW5nIHRoZSBj
b21wb3NpdG9yIGluIHNpbmdsZSB0aHJlYWRlZCBtb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUxNDYKKworICAgICAgICBNb2RpZmllZCBDYW52
YXMyRExheWVyQ2hyb21pdW0gdW5pdCB0ZXN0IHRvIHRlc3QgY2FudmFzIHdpdGgKKyAgICAgICAg
Ym90aCB0aHJlYWRlZCBhbmQgbm9uLXRocmVhZGVkIGNvbXBvc2l0aW5nLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NTY2hlZHVsZXJU
ZXN0Q29tbW9uLmg6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZUNDVGhyZWFkOjp0aHJlYWRJ
RCk6CisgICAgICAgICogdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW1UZXN0OjpzZXRUZXh0dXJlTWFuYWdl
cik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW1UZXN0OjpmdWxsTGlm
ZWN5Y2xlVGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpURVNUX0YpOgorCiAyMDEyLTAxLTAzICBU
b255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBGaXgg
Y29tcGlsYXRpb24gd2l0aCBjbGFuZyBhbmQgdGhlIHNoYXJlZCBidWlsZApJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NjaGVkdWxlclRlc3RDb21tb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2NoZWR1bGVyVGVzdENvbW1vbi5o
CShyZXZpc2lvbiAxMDM5NDEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU2No
ZWR1bGVyVGVzdENvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9wZW5kaW5nVGFzayA9IHRhc2s7CiAgICAgICAgIG1fcGVuZGluZ1Rhc2tE
ZWxheSA9IGRlbGF5OwogICAgIH0KLSAgICB2aXJ0dWFsIFdURjo6VGhyZWFkSWRlbnRpZmllciB0
aHJlYWRJRCgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CisgICAg
dmlydHVhbCBXVEY6OlRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQoKSBjb25zdCB7IHJldHVybiAw
OyB9CiAKIHByb3RlY3RlZDoKICAgICBPd25QdHI8VGFzaz4gbV9wZW5kaW5nVGFzazsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExh
eWVyQ2hyb21pdW1UZXN0LmNwcAkocmV2aXNpb24gMTAzOTQxKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiQ2FudmFzMkRMYXllckNocm9taXVtLmgi
CiAKKyNpbmNsdWRlICJDQ1NjaGVkdWxlclRlc3RDb21tb24uaCIKICNpbmNsdWRlICJGYWtlV2Vi
R3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aCIKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgpAQCAtMzksMjMgKzQwLDExIEBACiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5h
bWVzcGFjZSBXZWJLaXRUZXN0czsKIHVzaW5nIHRlc3Rpbmc6OkluU2VxdWVuY2U7CiB1c2luZyB0
ZXN0aW5nOjpSZXR1cm47CiB1c2luZyB0ZXN0aW5nOjpUZXN0OwogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIENhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QgOiBwdWJsaWMgVGVzdCB7Ci1w
cm90ZWN0ZWQ6Ci0gICAgLy8gVGhpcyBpbmRpcmVjdGlvbiBpcyBuZWVkZWQgYmVjYXVzZSBpbmRp
dmlkdWFsIHRlc3RzIGFyZW4ndCBmcmllbmRzIG9mIENhbnZhczJETGF5ZXJDaHJvbWl1bS4KLSAg
ICB2b2lkIHNldFRleHR1cmVNYW5hZ2VyKENhbnZhczJETGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFRl
eHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQotICAgIHsKLSAgICAgICAgbGF5ZXItPnNldFRleHR1cmVN
YW5hZ2VyKG1hbmFnZXIpOwotICAgIH0KLX07Ci0KLX0KLQogbmFtZXNwYWNlIHsKIAogY2xhc3Mg
TW9ja0NhbnZhc0NvbnRleHQgOiBwdWJsaWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEIHsKQEAg
LTY3LDcgKzU2LDcgQEAgcHVibGljOgogICAgIE1PQ0tfTUVUSE9ENShmcmFtZWJ1ZmZlclRleHR1
cmUyRCwgdm9pZChXR0MzRGVudW0sIFdHQzNEZW51bSwgV0dDM0RlbnVtLCBXZWJHTElkLCBXR0Mz
RGludCkpOwogCiAgICAgTU9DS19NRVRIT0QyKGJpbmRUZXh0dXJlLCB2b2lkKFdHQzNEZW51bSwg
V2ViR0xJZCkpOwotICAgIE1PQ0tfTUVUSE9EOChjb3B5VGV4SW1hZ2UyRCwgdm9pZChXR0MzRGVu
dW0sIFdHQzNEaW50LCBXR0MzRGVudW0sIFdHQzNEaW50LCBXR0MzRGludCwgV0dDM0RzaXplaSwg
V0dDM0RzaXplaSwgV0dDM0RpbnQpKTsKKyAgICBNT0NLX01FVEhPRDgoY29weVRleFN1YkltYWdl
MkQsIHZvaWQoV0dDM0RlbnVtLCBXR0MzRGludCwgV0dDM0RpbnQsIFdHQzNEaW50LCBXR0MzRGlu
dCwgV0dDM0RpbnQsIFdHQzNEc2l6ZWksIFdHQzNEc2l6ZWkpKTsKIAogICAgIE1PQ0tfTUVUSE9E
MShkZWxldGVGcmFtZWJ1ZmZlciwgdm9pZChXZWJHTElkKSk7CiAgICAgTU9DS19NRVRIT0QxKGRl
bGV0ZVRleHR1cmUsIHZvaWQoV2ViR0xJZCkpOwpAQCAtNzksNzIgKzY4LDEwNSBAQCBwdWJsaWM6
CiAgICAgTU9DS19NRVRIT0QzKGRlbGV0ZVRleHR1cmUsIHZvaWQodW5zaWduZWQsIGNvbnN0IElu
dFNpemUmLCBHQzNEZW51bSkpOwogfTsKIAotVEVTVF9GKENhbnZhczJETGF5ZXJDaHJvbWl1bVRl
c3QsIHRlc3RGdWxsTGlmZWN5Y2xlKQotewotICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dGVzIGF0dHJzOwotCi0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtYWluQ29udGV4dCA9
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhpY3NDb250ZXh0RnJvbVdlYkNv
bnRleHQoYWRvcHRQdHIobmV3IE1vY2tDYW52YXNDb250ZXh0KCkpLCBhdHRycywgMCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OkZvclVzZU9uVGhpc1RocmVhZCk7Ci0gICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBpbXBsQ29udGV4dCA9IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0RnJvbVdlYkNvbnRleHQoYWRvcHRQdHIobmV3IE1vY2tDYW52YXNDb250ZXh0KCkp
LCBhdHRycywgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93
LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uVGhpc1RocmVhZCk7Ci0KLSAgICBN
b2NrQ2FudmFzQ29udGV4dCYgbWFpbk1vY2sgPSAqc3RhdGljX2Nhc3Q8TW9ja0NhbnZhc0NvbnRl
eHQqPihHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmV4dHJhY3RXZWJHcmFwaGljc0NvbnRleHQz
RChtYWluQ29udGV4dC5nZXQoKSkpOwotICAgIE1vY2tDYW52YXNDb250ZXh0JiBpbXBsTW9jayA9
ICpzdGF0aWNfY2FzdDxNb2NrQ2FudmFzQ29udGV4dCo+KEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKGltcGxDb250ZXh0LmdldCgpKSk7Ci0KLSAg
ICBNb2NrVGV4dHVyZUFsbG9jYXRvciBhbGxvY2F0b3JNb2NrOwotICAgIENDVGV4dHVyZVVwZGF0
ZXIgdXBkYXRlcigmYWxsb2NhdG9yTW9jayk7Cit9IC8vIG5hbWVzcGFjZQogCi0gICAgY29uc3Qg
SW50U2l6ZSBzaXplKDMwMCwgMTUwKTsKLSAgICBjb25zdCBzaXplX3QgbWF4VGV4dHVyZVNpemUg
PSBzaXplLndpZHRoKCkgKiBzaXplLmhlaWdodCgpICogNDsKLSAgICBPd25QdHI8VGV4dHVyZU1h
bmFnZXI+IHRleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShtYXhUZXh0dXJl
U2l6ZSwgbWF4VGV4dHVyZVNpemUsIG1heFRleHR1cmVTaXplKTsKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotICAgIGNvbnN0IFdlYkdMSWQgYmFja1RleHR1cmVJZCA9IDE7Ci0gICAgY29uc3QgV2Vi
R0xJZCBmcm9udFRleHR1cmVJZCA9IDI7Ci0gICAgY29uc3QgV2ViR0xJZCBmYm9JZCA9IDM7Citj
bGFzcyBDYW52YXMyRExheWVyQ2hyb21pdW1UZXN0IDogcHVibGljIFRlc3QgeworcHJvdGVjdGVk
OgorICAgIC8vIFRoaXMgaW5kaXJlY3Rpb24gaXMgbmVlZGVkIGJlY2F1c2UgaW5kaXZpZHVhbCB0
ZXN0cyBhcmVuJ3QgZnJpZW5kcyBvZiBDYW52YXMyRExheWVyQ2hyb21pdW0uCisgICAgdm9pZCBz
ZXRUZXh0dXJlTWFuYWdlcihDYW52YXMyRExheWVyQ2hyb21pdW0qIGxheWVyLCBUZXh0dXJlTWFu
YWdlciogbWFuYWdlcikKICAgICB7Ci0gICAgICAgIEluU2VxdWVuY2Ugc2VxdWVuY2U7Ci0KLSAg
ICAgICAgLy8gU2V0dXAgQ2FudmFzMkRMYXllckNocm9taXVtIChvbiB0aGUgbWFpbiB0aHJlYWQp
LgotICAgICAgICBFWFBFQ1RfQ0FMTChtYWluTW9jaywgY3JlYXRlRnJhbWVidWZmZXIoKSkKLSAg
ICAgICAgICAgIC5XaWxsT25jZShSZXR1cm4oZmJvSWQpKTsKLQotICAgICAgICAvLyBDcmVhdGUg
dGV4dHVyZSBhbmQgZG8gdGhlIGNvcHkgKG9uIHRoZSBpbXBsIHRocmVhZCkuCi0gICAgICAgIEVY
UEVDVF9DQUxMKGFsbG9jYXRvck1vY2ssIGNyZWF0ZVRleHR1cmUoc2l6ZSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkEpKQotICAgICAgICAgICAgLldpbGxPbmNlKFJldHVybihmcm9udFRleHR1cmVJ
ZCkpOwotICAgICAgICBFWFBFQ1RfQ0FMTChpbXBsTW9jaywgYmluZFRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIGZyb250VGV4dHVyZUlkKSk7Ci0gICAgICAgIEVYUEVDVF9D
QUxMKGltcGxNb2NrLCBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBmYm9JZCkpOwotICAgICAgICBFWFBFQ1RfQ0FMTChpbXBsTW9jaywgZnJhbWVidWZmZXJU
ZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQz
RDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBiYWNr
VGV4dHVyZUlkLCAwKSk7Ci0gICAgICAgIEVYUEVDVF9DQUxMKGltcGxNb2NrLCBjb3B5VGV4SW1h
Z2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkEsIDAsIDAsIDMwMCwgMTUwLCAwKSk7Ci0gICAgICAgIEVYUEVDVF9DQUxMKGltcGxNb2Nr
LCBiaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCAwKSk7Ci0K
LSAgICAgICAgLy8gVGVhcmRvd24gQ2FudmFzMkRMYXllckNocm9taXVtLgotICAgICAgICBFWFBF
Q1RfQ0FMTChtYWluTW9jaywgZGVsZXRlRnJhbWVidWZmZXIoZmJvSWQpKTsKLQotICAgICAgICAv
LyBUZWFyZG93biBUZXh0dXJlTWFuYWdlci4KLSAgICAgICAgRVhQRUNUX0NBTEwoYWxsb2NhdG9y
TW9jaywgZGVsZXRlVGV4dHVyZShmcm9udFRleHR1cmVJZCwgc2l6ZSwgR3JhcGhpY3NDb250ZXh0
M0Q6OlJHQkEpKTsKKyAgICAgICAgbGF5ZXItPnNldFRleHR1cmVNYW5hZ2VyKG1hbmFnZXIpOwog
ICAgIH0KIAotICAgIFJlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IGNhbnZhcyA9IENhbnZh
czJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKG1haW5Db250ZXh0LmdldCgpLCBzaXplKTsKLSAgICBz
ZXRUZXh0dXJlTWFuYWdlcihjYW52YXMuZ2V0KCksIHRleHR1cmVNYW5hZ2VyLmdldCgpKTsKLSAg
ICBjYW52YXMtPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgMzAwKSk7Ci0gICAgY2FudmFzLT5zZXRU
ZXh0dXJlSWQoYmFja1RleHR1cmVJZCk7Ci0KLSAgICBjYW52YXMtPmNvbnRlbnRDaGFuZ2VkKCk7
Ci0gICAgRVhQRUNUX1RSVUUoY2FudmFzLT5uZWVkc0Rpc3BsYXkoKSk7Ci0gICAgY2FudmFzLT5w
YWludENvbnRlbnRzSWZEaXJ0eSgpOwotICAgIEVYUEVDVF9GQUxTRShjYW52YXMtPm5lZWRzRGlz
cGxheSgpKTsKKyAgICB2b2lkIGZ1bGxMaWZlY3ljbGVUZXN0KGJvb2wgdGhyZWFkZWQpCiAgICAg
ewotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgc2NvcGVkSW1wbFRocmVhZDsKKyAg
ICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7CiAKLSAgICAgICAgUmVm
UHRyPENDTGF5ZXJJbXBsPiBsYXllckltcGwgPSBjYW52YXMtPmNyZWF0ZUNDTGF5ZXJJbXBsKCk7
Ci0gICAgICAgIEVYUEVDVF9FUSgwdSwgc3RhdGljX2Nhc3Q8Q0NDYW52YXNMYXllckltcGwqPihs
YXllckltcGwuZ2V0KCkpLT50ZXh0dXJlSWQoKSk7CisgICAgICAgIFJlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gbWFpbkNvbnRleHQgPSBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdy
YXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFkb3B0UHRyKG5ldyBNb2NrQ2FudmFzQ29udGV4
dCgpKSwgYXR0cnMsIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRvSG9zdFdp
bmRvdywgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpGb3JVc2VPblRoaXNUaHJlYWQpOworICAg
ICAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGltcGxDb250ZXh0ID0gR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0
cihuZXcgTW9ja0NhbnZhc0NvbnRleHQoKSksIGF0dHJzLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6
UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Rm9y
VXNlT25UaGlzVGhyZWFkKTsKIAotICAgICAgICBjYW52YXMtPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoaW1wbENvbnRleHQuZ2V0KCksIHVwZGF0ZXIpOwotICAgICAgICBjYW52YXMtPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKKyAgICAgICAgTW9ja0NhbnZhc0NvbnRleHQm
IG1haW5Nb2NrID0gKnN0YXRpY19jYXN0PE1vY2tDYW52YXNDb250ZXh0Kj4oR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250ZXh0M0QobWFpbkNvbnRleHQuZ2V0
KCkpKTsKKyAgICAgICAgTW9ja0NhbnZhc0NvbnRleHQmIGltcGxNb2NrID0gKnN0YXRpY19jYXN0
PE1vY2tDYW52YXNDb250ZXh0Kj4oR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2Vi
R3JhcGhpY3NDb250ZXh0M0QoaW1wbENvbnRleHQuZ2V0KCkpKTsKIAotICAgICAgICBFWFBFQ1Rf
RVEoZnJvbnRUZXh0dXJlSWQsIHN0YXRpY19jYXN0PENDQ2FudmFzTGF5ZXJJbXBsKj4obGF5ZXJJ
bXBsLmdldCgpKS0+dGV4dHVyZUlkKCkpOworICAgICAgICBNb2NrVGV4dHVyZUFsbG9jYXRvciBh
bGxvY2F0b3JNb2NrOworICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIoJmFsbG9jYXRv
ck1vY2spOworCisgICAgICAgIGNvbnN0IEludFNpemUgc2l6ZSgzMDAsIDE1MCk7CisgICAgICAg
IGNvbnN0IHNpemVfdCBtYXhUZXh0dXJlU2l6ZSA9IHNpemUud2lkdGgoKSAqIHNpemUuaGVpZ2h0
KCkgKiA0OworICAgICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IHRleHR1cmVNYW5hZ2VyID0g
VGV4dHVyZU1hbmFnZXI6OmNyZWF0ZShtYXhUZXh0dXJlU2l6ZSwgbWF4VGV4dHVyZVNpemUsIG1h
eFRleHR1cmVTaXplKTsKKworICAgICAgICBpZiAodGhyZWFkZWQpCisgICAgICAgICAgICBDQ1By
b3h5OjpzZXRJbXBsVGhyZWFkKG5ldyBGYWtlQ0NUaHJlYWQpOworCisgICAgICAgIGNvbnN0IFdl
YkdMSWQgYmFja1RleHR1cmVJZCA9IDE7CisgICAgICAgIGNvbnN0IFdlYkdMSWQgZnJvbnRUZXh0
dXJlSWQgPSAyOworICAgICAgICBjb25zdCBXZWJHTElkIGZib0lkID0gMzsKKyAgICAgICAgewor
ICAgICAgICAgICAgSW5TZXF1ZW5jZSBzZXF1ZW5jZTsKKworICAgICAgICAgICAgLy8gTm90ZSB0
aGF0IHRoZSBjYW52YXMgYmFja2luZyB0ZXh0dXJlIGlzIGRvdWJsZWJ1ZmZlcmVkIG9ubHkgd2hl
biB1c2luZyB0aGUgdGhyZWFkZWQKKyAgICAgICAgICAgIC8vIGNvbXBvc2l0b3IuCisgICAgICAg
ICAgICBpZiAodGhyZWFkZWQpIHsKKyAgICAgICAgICAgICAgICAvLyBTZXR1cCBDYW52YXMyRExh
eWVyQ2hyb21pdW0gKG9uIHRoZSBtYWluIHRocmVhZCkuCisgICAgICAgICAgICAgICAgRVhQRUNU
X0NBTEwobWFpbk1vY2ssIGNyZWF0ZUZyYW1lYnVmZmVyKCkpCisgICAgICAgICAgICAgICAgICAg
IC5XaWxsT25jZShSZXR1cm4oZmJvSWQpKTsKKworICAgICAgICAgICAgICAgIC8vIENyZWF0ZSB0
ZXh0dXJlIGFuZCBkbyB0aGUgY29weSAob24gdGhlIGltcGwgdGhyZWFkKS4KKyAgICAgICAgICAg
ICAgICBFWFBFQ1RfQ0FMTChhbGxvY2F0b3JNb2NrLCBjcmVhdGVUZXh0dXJlKHNpemUsIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBKSkKKyAgICAgICAgICAgICAgICAgICAgLldpbGxPbmNlKFJldHVy
bihmcm9udFRleHR1cmVJZCkpOworICAgICAgICAgICAgICAgIEVYUEVDVF9DQUxMKGltcGxNb2Nr
LCBiaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgZnJvbnRUZXh0dXJl
SWQpKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfQ0FMTChpbXBsTW9jaywgYmluZEZyYW1lYnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgZmJvSWQpKTsKKyAgICAgICAgICAg
ICAgICBFWFBFQ1RfQ0FMTChpbXBsTW9jaywgZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3ND
b250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVO
VDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBiYWNrVGV4dHVyZUlkLCAwKSk7Cisg
ICAgICAgICAgICAgICAgRVhQRUNUX0NBTEwoaW1wbE1vY2ssIGNvcHlUZXhTdWJJbWFnZTJEKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCAwLCAwLCAzMDAsIDE1MCkpOwor
ICAgICAgICAgICAgICAgIEVYUEVDVF9DQUxMKGltcGxNb2NrLCBiaW5kRnJhbWVidWZmZXIoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCAwKSk7CisKKyAgICAgICAgICAgICAgICAvLyBU
ZWFyZG93biBDYW52YXMyRExheWVyQ2hyb21pdW0uCisgICAgICAgICAgICAgICAgRVhQRUNUX0NB
TEwobWFpbk1vY2ssIGRlbGV0ZUZyYW1lYnVmZmVyKGZib0lkKSk7CisKKyAgICAgICAgICAgICAg
ICAvLyBUZWFyZG93biBUZXh0dXJlTWFuYWdlci4KKyAgICAgICAgICAgICAgICBFWFBFQ1RfQ0FM
TChhbGxvY2F0b3JNb2NrLCBkZWxldGVUZXh0dXJlKGZyb250VGV4dHVyZUlkLCBzaXplLCBHcmFw
aGljc0NvbnRleHQzRDo6UkdCQSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gY2FudmFzID0gQ2FudmFzMkRMYXllckNo
cm9taXVtOjpjcmVhdGUobWFpbkNvbnRleHQuZ2V0KCksIHNpemUpOworICAgICAgICBzZXRUZXh0
dXJlTWFuYWdlcihjYW52YXMuZ2V0KCksIHRleHR1cmVNYW5hZ2VyLmdldCgpKTsKKyAgICAgICAg
Y2FudmFzLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDMwMCkpOworICAgICAgICBjYW52YXMtPnNl
dFRleHR1cmVJZChiYWNrVGV4dHVyZUlkKTsKKworICAgICAgICBjYW52YXMtPmNvbnRlbnRDaGFu
Z2VkKCk7CisgICAgICAgIEVYUEVDVF9UUlVFKGNhbnZhcy0+bmVlZHNEaXNwbGF5KCkpOworICAg
ICAgICBjYW52YXMtPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShjYW52YXMtPm5lZWRzRGlzcGxheSgpKTsKKyAgICAgICAgeworICAgICAgICAgICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIHNjb3BlZEltcGxUaHJlYWQ7CisKKyAgICAgICAgICAgIFJlZlB0
cjxDQ0xheWVySW1wbD4gbGF5ZXJJbXBsID0gY2FudmFzLT5jcmVhdGVDQ0xheWVySW1wbCgpOwor
ICAgICAgICAgICAgRVhQRUNUX0VRKDB1LCBzdGF0aWNfY2FzdDxDQ0NhbnZhc0xheWVySW1wbCo+
KGxheWVySW1wbC5nZXQoKSktPnRleHR1cmVJZCgpKTsKKworICAgICAgICAgICAgY2FudmFzLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGltcGxDb250ZXh0LmdldCgpLCB1cGRhdGVyKTsKKyAg
ICAgICAgICAgIGNhbnZhcy0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOworCisg
ICAgICAgICAgICBpZiAodGhyZWFkZWQpCisgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGZyb250
VGV4dHVyZUlkLCBzdGF0aWNfY2FzdDxDQ0NhbnZhc0xheWVySW1wbCo+KGxheWVySW1wbC5nZXQo
KSktPnRleHR1cmVJZCgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBFWFBF
Q1RfRVEoYmFja1RleHR1cmVJZCwgc3RhdGljX2Nhc3Q8Q0NDYW52YXNMYXllckltcGwqPihsYXll
ckltcGwuZ2V0KCkpLT50ZXh0dXJlSWQoKSk7CisgICAgICAgIH0KKyAgICAgICAgY2FudmFzLmNs
ZWFyKCk7CisgICAgICAgIHRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnlUb0xpbWl0KDApOwor
ICAgICAgICB0ZXh0dXJlTWFuYWdlci0+ZGVsZXRlRXZpY3RlZFRleHR1cmVzKCZhbGxvY2F0b3JN
b2NrKTsKICAgICB9Ci0gICAgY2FudmFzLmNsZWFyKCk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPnJl
ZHVjZU1lbW9yeVRvTGltaXQoMCk7Ci0gICAgdGV4dHVyZU1hbmFnZXItPmRlbGV0ZUV2aWN0ZWRU
ZXh0dXJlcygmYWxsb2NhdG9yTW9jayk7Cit9OworCitURVNUX0YoQ2FudmFzMkRMYXllckNocm9t
aXVtVGVzdCwgdGVzdEZ1bGxMaWZlY3ljbGVTaW5nbGVUaHJlYWQpCit7CisgICAgZnVsbExpZmVj
eWNsZVRlc3QoZmFsc2UpOwogfQogCi19IC8vIG5hbWVzcGFjZQorVEVTVF9GKENhbnZhczJETGF5
ZXJDaHJvbWl1bVRlc3QsIHRlc3RGdWxsTGlmZWN5Y2xlVGhyZWFkZWQpCit7CisgICAgZnVsbExp
ZmVjeWNsZVRlc3QodHJ1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIHdlYmNvcmUK
</data>
<flag name="review"
          id="121392"
          type_id="1"
          status="+"
          setter="jamesr"
    />
    <flag name="commit-queue"
          id="121393"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>