<?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>41827</bug_id>
          
          <creation_ts>2010-07-07 19:10:59 -0700</creation_ts>
          <short_desc>[Qt] Canvas putImageData() resets painter state</short_desc>
          <delta_ts>2010-07-08 05:38:41 -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>WebCore Misc.</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>HTML5, Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="QtWebKit Unassigned">webkit-qt-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>247939</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-07 19:10:59 -0700</bug_when>
    <thetext>In ImageBufferQt.cpp, putImageData() will call end() and begin() on the ImageBufferData&apos;s QPainter if painting is active (which it always is, at least for a canvas backend.)

This resets the painter state which is supposed to be in sync with the canvas rendering context&apos;s state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247960</commentid>
    <comment_count>1</comment_count>
      <attachid>60828</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-07 19:50:04 -0700</bug_when>
    <thetext>Created attachment 60828
Proposed patch

Patch to use QImage instead of QPixmap as the backing store of ImageBuffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247961</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-07 19:52:43 -0700</bug_when>
    <thetext>Attachment 60828 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/platform/graphics/qt/ImageBufferData.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247962</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-07-07 19:58:36 -0700</bug_when>
    <thetext>Attachment 60828 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3496001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247964</commentid>
    <comment_count>4</comment_count>
      <attachid>60828</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-07 20:18:02 -0700</bug_when>
    <thetext>Comment on attachment 60828
Proposed patch

Oops, used some 4.7+ API here. Leaving r? for visibility. zzz..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248131</commentid>
    <comment_count>5</comment_count>
      <attachid>60828</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-08 04:04:46 -0700</bug_when>
    <thetext>Comment on attachment 60828
Proposed patch

r- after discussion with Simon. There should be a simpler way to fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248136</commentid>
    <comment_count>6</comment_count>
      <attachid>60865</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-08 04:41:27 -0700</bug_when>
    <thetext>Created attachment 60865
Proposed patch v2

Better solution - use QPainter::drawImage() to copy pixel data into the canvas backing store.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248137</commentid>
    <comment_count>7</comment_count>
      <attachid>60865</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-08 04:45:45 -0700</bug_when>
    <thetext>Comment on attachment 60865
Proposed patch v2

r- due to bathroom epiphany. More awesome patch coming shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248140</commentid>
    <comment_count>8</comment_count>
      <attachid>60866</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-08 04:56:29 -0700</bug_when>
    <thetext>Created attachment 60866
Proposed patch v3

Accomplish the same thing without converting the canvas backing store into a QImage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248143</commentid>
    <comment_count>9</comment_count>
      <attachid>60867</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-07-08 05:03:04 -0700</bug_when>
    <thetext>Created attachment 60867
Proposed patch v4

Patch updated to set correct composition mode when painter isn&apos;t active at the time putImageData() is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248153</commentid>
    <comment_count>10</comment_count>
      <attachid>60867</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-08 05:38:31 -0700</bug_when>
    <thetext>Comment on attachment 60867
Proposed patch v4

Clearing flags on attachment: 60867

Committed r62782: &lt;http://trac.webkit.org/changeset/62782&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248154</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-08 05:38:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60828</attachid>
            <date>2010-07-07 19:50:04 -0700</date>
            <delta_ts>2010-07-08 04:41:27 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-41827.diff</filename>
            <type>text/plain</type>
            <size>14424</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjNjEzNWM3Li44NGE2ODU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDct
MDcgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIENhbnZhcyBwdXRJbWFn
ZURhdGEoKSByZXNldHMgcGFpbnRlciBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4MjcKKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gdmVy
aWZ5IHRoYXQgdGhlIHBhaW50aW5nIHN0YXRlIHJlbWFpbnMgaW50YWN0IGFmdGVyIGNhbGxpbmcg
cHV0SW1hZ2VEYXRhKCkuCisgICAgICAgIEFsc28gdW5za2lwcGVkIGFuIGV4aXN0aW5nIHRlc3Qg
dGhhdCBub3cgd29ya3MgZHVlIHRvIHRoZXNlIGNoYW5nZXMuCisKKyAgICAgICAgKiBmYXN0L2Nh
bnZhcy9jYW52YXMtc3RhdGUtaW50YWN0LWFmdGVyLXB1dEltYWdlRGF0YS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL2NhbnZhcy1zdGF0ZS1pbnRhY3QtYWZ0ZXIt
cHV0SW1hZ2VEYXRhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10
ZXN0cy9jYW52YXMtc3RhdGUtaW50YWN0LWFmdGVyLXB1dEltYWdlRGF0YS5qczogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKwogMjAxMC0wNy0wNyAgQ2hyaXMgRmxlaXph
Y2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJldGggRGFr
aW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50
YWN0LWFmdGVyLXB1dEltYWdlRGF0YS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy9jYW52YXMtc3RhdGUtaW50YWN0LWFmdGVyLXB1dEltYWdlRGF0YS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ViMWJmNAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zdGF0ZS1pbnRhY3QtYWZ0ZXIt
cHV0SW1hZ2VEYXRhLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMwIEBACitUZXN0IHRoYXQgdGhl
IHJlbmRlcmluZyBjb250ZXh0IHN0YXRlIGlzIGludGFjdCBhZnRlciBhIGNhbGwgdG8gcHV0SW1h
Z2VEYXRhKCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0NoZWNraW5nIGluaXRp
YWwgc3RhdGUgZm9yIHNhbml0eQorUEFTUyBjdHguZmlsbFN0eWxlIGlzICcjZmYwMDAwJworUEFT
UyBpbWdkYXRhWzBdIGlzIDI1NQorUEFTUyBpbWdkYXRhWzFdIGlzIDAKK1BBU1MgaW1nZGF0YVsy
XSBpcyAwCitQQVNTIGltZ2RhdGFbM10gaXMgMjU1CitQQVNTIGltZ2RhdGFbNF0gaXMgMAorUEFT
UyBpbWdkYXRhWzVdIGlzIDAKK1BBU1MgaW1nZGF0YVs2XSBpcyAwCitQQVNTIGltZ2RhdGFbN10g
aXMgMAorQ2FsbGluZyBwdXRJbWFnZURhdGEoKQorUEFTUyBpbWdkYXRhWzBdIGlzIDI1NQorUEFT
UyBpbWdkYXRhWzFdIGlzIDAKK1BBU1MgaW1nZGF0YVsyXSBpcyAwCitQQVNTIGltZ2RhdGFbM10g
aXMgMjU1CitDaGVja2luZyBpZiBzdGF0ZSBpcyBpbnRhY3QKK1BBU1MgY3R4LmZpbGxTdHlsZSBp
cyAnI2ZmMDAwMCcKK1BBU1MgaW1nZGF0YVswXSBpcyAyNTUKK1BBU1MgaW1nZGF0YVsxXSBpcyAw
CitQQVNTIGltZ2RhdGFbMl0gaXMgMAorUEFTUyBpbWdkYXRhWzNdIGlzIDI1NQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1zdGF0ZS1pbnRhY3QtYWZ0ZXItcHV0SW1hZ2VE
YXRhLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50YWN0LWFm
dGVyLXB1dEltYWdlRGF0YS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmQyNzkzN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtc3RhdGUtaW50YWN0LWFmdGVyLXB1dEltYWdlRGF0YS5odG1sCkBAIC0wLDAgKzEsMTMgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgor
PGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2Fu
dmFzLXN0YXRlLWludGFjdC1hZnRlci1wdXRJbWFnZURhdGEuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRl
c3RzL2NhbnZhcy1zdGF0ZS1pbnRhY3QtYWZ0ZXItcHV0SW1hZ2VEYXRhLmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zdGF0ZS1pbnRhY3QtYWZ0ZXItcHV0
SW1hZ2VEYXRhLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZWMyMjUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMv
Y2FudmFzLXN0YXRlLWludGFjdC1hZnRlci1wdXRJbWFnZURhdGEuanMKQEAgLTAsMCArMSw0MCBA
QAorZGVzY3JpcHRpb24oIlRlc3QgdGhhdCB0aGUgcmVuZGVyaW5nIGNvbnRleHQgc3RhdGUgaXMg
aW50YWN0IGFmdGVyIGEgY2FsbCB0byBwdXRJbWFnZURhdGEoKSIpOwordmFyIGN0eCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpLmdldENvbnRleHQoJzJkJyk7CisKK2N0eC5maWxs
U3R5bGUgPSAncmVkJzsKK2N0eC5maWxsUmVjdCgwLCAwLCAxLCAxKTsKKworZGVidWcoIkNoZWNr
aW5nIGluaXRpYWwgc3RhdGUgZm9yIHNhbml0eSIpOwordmFyIGltYWdlRGF0YSA9IGN0eC5nZXRJ
bWFnZURhdGEoMCwgMCwgMiwgMSk7Cit2YXIgaW1nZGF0YSA9IGltYWdlRGF0YS5kYXRhOworc2hv
dWxkQmUoImN0eC5maWxsU3R5bGUiLCAiJyNmZjAwMDAnIik7CitzaG91bGRCZSgiaW1nZGF0YVsw
XSIsICIyNTUiKTsKK3Nob3VsZEJlKCJpbWdkYXRhWzFdIiwgIjAiKTsKK3Nob3VsZEJlKCJpbWdk
YXRhWzJdIiwgIjAiKTsKK3Nob3VsZEJlKCJpbWdkYXRhWzNdIiwgIjI1NSIpOworc2hvdWxkQmUo
ImltZ2RhdGFbNF0iLCAiMCIpOworc2hvdWxkQmUoImltZ2RhdGFbNV0iLCAiMCIpOworc2hvdWxk
QmUoImltZ2RhdGFbNl0iLCAiMCIpOworc2hvdWxkQmUoImltZ2RhdGFbN10iLCAiMCIpOworCitk
ZWJ1ZygiQ2FsbGluZyBwdXRJbWFnZURhdGEoKSIpOworY3R4LnB1dEltYWdlRGF0YShpbWFnZURh
dGEsIDEsIDEpOworaW1hZ2VEYXRhID0gY3R4LmdldEltYWdlRGF0YSgxLCAxLCAxLCAxKTsKK2lt
Z2RhdGEgPSBpbWFnZURhdGEuZGF0YTsKK3Nob3VsZEJlKCJpbWdkYXRhWzBdIiwgIjI1NSIpOwor
c2hvdWxkQmUoImltZ2RhdGFbMV0iLCAiMCIpOworc2hvdWxkQmUoImltZ2RhdGFbMl0iLCAiMCIp
Oworc2hvdWxkQmUoImltZ2RhdGFbM10iLCAiMjU1Iik7CisKK2RlYnVnKCJDaGVja2luZyBpZiBz
dGF0ZSBpcyBpbnRhY3QiKTsKK3Nob3VsZEJlKCJjdHguZmlsbFN0eWxlIiwgIicjZmYwMDAwJyIp
OworCitjdHguZmlsbFJlY3QoMiwgMiwgMSwgMSk7CitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VE
YXRhKDIsIDIsIDEsIDEpOworaW1nZGF0YSA9IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUoImlt
Z2RhdGFbMF0iLCAiMjU1Iik7CitzaG91bGRCZSgiaW1nZGF0YVsxXSIsICIwIik7CitzaG91bGRC
ZSgiaW1nZGF0YVsyXSIsICIwIik7CitzaG91bGRCZSgiaW1nZGF0YVszXSIsICIyNTUiKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRl
eCBkY2UzOWIyLi45YTk4ODlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9T
a2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTUyODUsNyAr
NTI4NSw2IEBAIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuaW1hZ2VEYXRhLmdldC5zb3VyY2Uub3V0
c2lkZS5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmltYWdlRGF0YS5nZXQudHlwZS5odG1s
CiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmltYWdlRGF0YS5vYmplY3Qucm91bmQuaHRtbAogY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC5pbWFnZURhdGEub2JqZWN0LndyYXAuaHRtbAotY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC5pbWFnZURhdGEucHV0LnVuY2hhbmdlZC5odG1sCiBjYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLmxpbmUuY2FwLmNsb3NlZC5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmxp
bmUuY2FwLm9wZW4uaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5saW5lLmpvaW4ub3Blbi5o
dG1sCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDM3ZmY0ZTkuLjM2NWQ0N2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTAtMDctMDcgIEFuZHJlYXMg
S2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIENhbnZhcyBwdXRJbWFnZURhdGEoKSByZXNl
dHMgcGFpbnRlciBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDE4MjcKKworICAgICAgICBVc2UgUUltYWdlIGluc3RlYWQgb2YgUVBpeG1hcCBh
cyBiYWNraW5nIHN0b3JlIGZvciBJbWFnZUJ1ZmZlci4KKworICAgICAgICBUaGlzIHJldGFpbnMg
Y2FudmFzIHBhaW50aW5nIHN0YXRlIGFjcm9zcyBjYWxscyB0byBwdXRJbWFnZURhdGEoKQorICAg
ICAgICBhbmQgYXZvaWRzIHBpeG1hcC9pbWFnZSBjb252ZXJzaW9uIGluIGdldEltYWdlRGF0YSgp
IGFuZCBwdXRJbWFnZURhdGEoKS4KKworICAgICAgICBJdCBhbHNvIGZpeGVzIGFuIGV4aXN0aW5n
IGxheW91dCB0ZXN0OgorICAgICAgICAtIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuaW1hZ2VEYXRh
LnB1dC51bmNoYW5nZWQuaHRtbAorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL2NhbnZhcy1z
dGF0ZS1pbnRhY3QtYWZ0ZXItcHV0SW1hZ2VEYXRhLmh0bWwKKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJE
YXRhOjpJbWFnZUJ1ZmZlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6Omlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9ybUNv
bG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OnB1dEltYWdlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9E
YXRhVVJMKToKKwogMjAxMC0wNy0wNyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJldGggRGFraW4uCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyRGF0YS5oIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlckRhdGEuaAppbmRleCAyMjJkYWJlLi41YjkwMWRl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyRGF0
YS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJEYXRhLmgK
QEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgSW1hZ2VCdWZmZXJEYXRhX2gKIAogI2luY2x1ZGUg
PFFQYWludGVyPgotI2luY2x1ZGUgPFFQaXhtYXA+CisjaW5jbHVkZSA8UUltYWdlPgogCiAjaW5j
bHVkZSAiT3duUHRyLmgiCiAKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXJEYXRh
IHsKIHB1YmxpYzoKICAgICBJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYpOwogCi0gICAg
UVBpeG1hcCBtX3BpeG1hcDsKKyAgICBRSW1hZ2UgbV9pbWFnZTsKICAgICBPd25QdHI8UVBhaW50
ZXI+IG1fcGFpbnRlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0lt
YWdlQnVmZmVyUXQuY3BwCmluZGV4IGU0NjkxM2MuLjdiZmM2NjggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcApAQCAtMyw2ICszLDcgQEAKICAq
IENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICogQ29weXJp
Z2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogICogQ29weXJpZ2h0
IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYs
MTggKzQ3LDE4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEltYWdlQnVmZmVyRGF0YTo6SW1h
Z2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmIHNpemUpCi0gICAgOiBtX3BpeG1hcChzaXplKQor
ICAgIDogbV9pbWFnZShzaXplLCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVsdGlwbGllZCkK
ICAgICAsIG1fcGFpbnRlcigwKQogewotICAgIGlmIChtX3BpeG1hcC5pc051bGwoKSkKKyAgICBp
ZiAobV9pbWFnZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9waXhtYXAuZmls
bChRQ29sb3IoUXQ6OnRyYW5zcGFyZW50KSk7CisgICAgbV9pbWFnZS5maWxsKDApOwogCiAgICAg
UVBhaW50ZXIqIHBhaW50ZXIgPSBuZXcgUVBhaW50ZXI7CiAgICAgbV9wYWludGVyLnNldChwYWlu
dGVyKTsKIAotICAgIGlmICghcGFpbnRlci0+YmVnaW4oJm1fcGl4bWFwKSkKKyAgICBpZiAoIXBh
aW50ZXItPmJlZ2luKCZtX2ltYWdlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gU2luY2Ug
SW1hZ2VCdWZmZXIgaXMgdXNlZCBtYWlubHkgZm9yIENhbnZhcywgZXhwbGljaXRseSBpbml0aWFs
aXplCkBAIC0xMDQsNyArMTA1LDcgQEAgSW1hZ2UqIEltYWdlQnVmZmVyOjppbWFnZSgpIGNvbnN0
CiAgICAgICAgIC8vIEl0J3MgYXNzdW1lZCB0aGF0IGlmIGltYWdlKCkgaXMgY2FsbGVkLCB0aGUg
YWN0dWFsIHJlbmRlcmluZyB0byB0aGUKICAgICAgICAgLy8gR3JhcGhpY3NDb250ZXh0IG11c3Qg
YmUgZG9uZS4KICAgICAgICAgQVNTRVJUKGNvbnRleHQoKSk7Ci0gICAgICAgIG1faW1hZ2UgPSBT
dGlsbEltYWdlOjpjcmVhdGUobV9kYXRhLm1fcGl4bWFwKTsKKyAgICAgICAgbV9pbWFnZSA9IFN0
aWxsSW1hZ2U6OmNyZWF0ZShRUGl4bWFwOjpmcm9tSW1hZ2UobV9kYXRhLm1faW1hZ2UpKTsKICAg
ICB9CiAKICAgICByZXR1cm4gbV9pbWFnZS5nZXQoKTsKQEAgLTExMiwxMSArMTEzLDcgQEAgSW1h
Z2UqIEltYWdlQnVmZmVyOjppbWFnZSgpIGNvbnN0CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OnBsYXRm
b3JtVHJhbnNmb3JtQ29sb3JTcGFjZShjb25zdCBWZWN0b3I8aW50PiYgbG9va1VwVGFibGUpCiB7
Ci0gICAgYm9vbCBpc1BhaW50aW5nID0gbV9kYXRhLm1fcGFpbnRlci0+aXNBY3RpdmUoKTsKLSAg
ICBpZiAoaXNQYWludGluZykKLSAgICAgICAgbV9kYXRhLm1fcGFpbnRlci0+ZW5kKCk7Ci0KLSAg
ICBRSW1hZ2UgaW1hZ2UgPSBtX2RhdGEubV9waXhtYXAudG9JbWFnZSgpLmNvbnZlcnRUb0Zvcm1h
dChRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAgIFFJbWFnZSYgaW1hZ2UgPSBtX2RhdGEubV9p
bWFnZTsKICAgICBBU1NFUlQoIWltYWdlLmlzTnVsbCgpKTsKIAogICAgIGZvciAoaW50IHkgPSAw
OyB5IDwgbV9zaXplLmhlaWdodCgpOyArK3kpIHsKQEAgLTEyOSwxMSArMTI2LDYgQEAgdm9pZCBJ
bWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNlKGNvbnN0IFZlY3RvcjxpbnQ+
JiBsb29rVXBUYWJsZSkKICAgICAgICAgICAgIGltYWdlLnNldFBpeGVsKHgsIHksIHZhbHVlKTsK
ICAgICAgICAgfQogICAgIH0KLQotICAgIG1fZGF0YS5tX3BpeG1hcCA9IFFQaXhtYXA6OmZyb21J
bWFnZShpbWFnZSk7Ci0KLSAgICBpZiAoaXNQYWludGluZykKLSAgICAgICAgbV9kYXRhLm1fcGFp
bnRlci0+YmVnaW4oJm1fZGF0YS5tX3BpeG1hcCk7CiB9CiAKIHRlbXBsYXRlIDxNdWx0aXBseSBt
dWx0aXBsaWVkPgpAQCAtMTY3LDI2ICsxNTksMjggQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IGdl
dEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbWFnZUJ1ZmZlckRhdGEmIGkK
ICAgICAgICAgZW5keSA9IHNpemUuaGVpZ2h0KCk7CiAgICAgaW50IG51bVJvd3MgPSBlbmR5IC0g
b3JpZ2lueTsKIAotICAgIFFJbWFnZSBpbWFnZSA9IGltYWdlRGF0YS5tX3BpeG1hcC50b0ltYWdl
KCk7Ci0gICAgaWYgKG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkKQotICAgICAgICBpbWFnZSA9
IGltYWdlLmNvbnZlcnRUb0Zvcm1hdChRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOwotICAgIGVsc2UK
LSAgICAgICAgaW1hZ2UgPSBpbWFnZS5jb252ZXJ0VG9Gb3JtYXQoUUltYWdlOjpGb3JtYXRfQVJH
QjMyX1ByZW11bHRpcGxpZWQpOworICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93ID0gNCAqIHNp
emUud2lkdGgoKTsKKyAgICB1bnNpZ25lZCBkZXN0Qnl0ZXNQZXJSb3cgPSA0ICogcmVjdC53aWR0
aCgpOwogCisgICAgY29uc3QgUUltYWdlJiBpbWFnZSA9IGltYWdlRGF0YS5tX2ltYWdlOwogICAg
IEFTU0VSVCghaW1hZ2UuaXNOdWxsKCkpOwogCi0gICAgdW5zaWduZWQgZGVzdEJ5dGVzUGVyUm93
ID0gNCAqIHJlY3Qud2lkdGgoKTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBzcmNSb3dzID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oaW1hZ2UuY29uc3RCaXRzKCkp
ICsgb3JpZ2lueSAqIHNyY0J5dGVzUGVyUm93ICsgb3JpZ2lueCAqIDQ7CiAgICAgdW5zaWduZWQg
Y2hhciogZGVzdFJvd3MgPSBkYXRhICsgZGVzdHkgKiBkZXN0Qnl0ZXNQZXJSb3cgKyBkZXN0eCAq
IDQ7CiAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBudW1Sb3dzOyArK3kpIHsKICAgICAgICAgZm9y
IChpbnQgeCA9IDA7IHggPCBudW1Db2x1bW5zOyB4KyspIHsKLSAgICAgICAgICAgIFFSZ2IgdmFs
dWUgPSBpbWFnZS5waXhlbCh4ICsgb3JpZ2lueCwgeSArIG9yaWdpbnkpOwogICAgICAgICAgICAg
aW50IGJhc2V4ID0geCAqIDQ7Ci0KLSAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9IHFSZWQo
dmFsdWUpOwotICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAxXSA9IHFHcmVlbih2YWx1ZSk7
Ci0gICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDJdID0gcUJsdWUodmFsdWUpOwotICAgICAg
ICAgICAgZGVzdFJvd3NbYmFzZXggKyAzXSA9IHFBbHBoYSh2YWx1ZSk7CisgICAgICAgICAgICBj
b25zdCBRUmdiIHZhbHVlID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBRUmdiKj4oc3JjUm93cylb
eF07CisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGFscGhhID0gcUFscGhhKHZhbHVlKTsKKyAg
ICAgICAgICAgIGlmIChtdWx0aXBsaWVkID09IFVubXVsdGlwbGllZCAmJiBhbHBoYSkgeworICAg
ICAgICAgICAgICAgIGRlc3RSb3dzW2Jhc2V4XSA9IChxUmVkKHZhbHVlKSAqIDI1NSkgLyBhbHBo
YTsKKyAgICAgICAgICAgICAgICBkZXN0Um93c1tiYXNleCArIDFdID0gKHFHcmVlbih2YWx1ZSkg
KiAyNTUpIC8gYWxwaGE7CisgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFzZXggKyAyXSA9IChx
Qmx1ZSh2YWx1ZSkgKiAyNTUpIC8gYWxwaGE7CisgICAgICAgICAgICAgICAgZGVzdFJvd3NbYmFz
ZXggKyAzXSA9IGFscGhhOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmVp
bnRlcnByZXRfY2FzdDxRUmdiKj4oZGVzdFJvd3MpW3hdID0gKCh2YWx1ZSA8PCAxNikgJiAweGZm
MDAwMCkgfCAoKHZhbHVlID4+IDE2KSAmIDB4ZmYpIHwgKHZhbHVlICYgMHhmZjAwZmYwMCk7CiAg
ICAgICAgIH0KKyAgICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1BlclJvdzsKICAgICAgICAgZGVz
dFJvd3MgKz0gZGVzdEJ5dGVzUGVyUm93OwogICAgIH0KIApAQCAtMjA0LDcgKzE5OCw3IEBAIFBh
c3NSZWZQdHI8SW1hZ2VEYXRhPiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0
YShjb25zdCBJbnRSZWN0JiByZWN0CiB9CiAKIHRlbXBsYXRlIDxNdWx0aXBseSBtdWx0aXBsaWVk
Pgotdm9pZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhKiYgc291cmNlLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBJbWFnZUJ1ZmZlckRhdGEmIGRh
dGEsIGNvbnN0IEludFNpemUmIHNpemUpCit2b2lkIHB1dEltYWdlRGF0YShJbWFnZURhdGEqJiBz
b3VyY2UsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JiBkZXN0UG9p
bnQsIEltYWdlQnVmZmVyRGF0YSYgaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQogewog
ICAgIEFTU0VSVChzb3VyY2VSZWN0LndpZHRoKCkgPiAwKTsKICAgICBBU1NFUlQoc291cmNlUmVj
dC5oZWlnaHQoKSA+IDApOwpAQCAtMjMzLDM0ICsyMjcsMjcgQEAgdm9pZCBwdXRJbWFnZURhdGEo
SW1hZ2VEYXRhKiYgc291cmNlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQ
b2ludCYKICAgICBpbnQgbnVtUm93cyA9IGVuZHkgLSBkZXN0eTsKIAogICAgIHVuc2lnbmVkIHNy
Y0J5dGVzUGVyUm93ID0gNCAqIHNvdXJjZS0+d2lkdGgoKTsKLQotICAgIGJvb2wgaXNQYWludGlu
ZyA9IGRhdGEubV9wYWludGVyLT5pc0FjdGl2ZSgpOwotICAgIGlmIChpc1BhaW50aW5nKQotICAg
ICAgICBkYXRhLm1fcGFpbnRlci0+ZW5kKCk7Ci0KLSAgICBRSW1hZ2UgaW1hZ2UgPSBkYXRhLm1f
cGl4bWFwLnRvSW1hZ2UoKTsKLSAgICBpZiAobXVsdGlwbGllZCA9PSBVbm11bHRpcGxpZWQpCi0g
ICAgICAgIGltYWdlID0gaW1hZ2UuY29udmVydFRvRm9ybWF0KFFJbWFnZTo6Rm9ybWF0X0FSR0Iz
Mik7Ci0gICAgZWxzZQotICAgICAgICBpbWFnZSA9IGltYWdlLmNvbnZlcnRUb0Zvcm1hdChRSW1h
Z2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVsdGlwbGllZCk7CisgICAgdW5zaWduZWQgZGVzdEJ5dGVz
UGVyUm93ID0gNCAqIHNpemUud2lkdGgoKTsKIAogICAgIHVuc2lnbmVkIGNoYXIqIHNyY1Jvd3Mg
PSBzb3VyY2UtPmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCkgKyBvcmlnaW55ICogc3JjQnl0ZXNQZXJS
b3cgKyBvcmlnaW54ICogNDsKKyAgICB1bnNpZ25lZCBjaGFyKiBkZXN0Um93cyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGltYWdlRGF0YS5tX2ltYWdlLmJpdHMoKSkgKyBkZXN0
eSAqIGRlc3RCeXRlc1BlclJvdyArIGRlc3R4ICogNDsKICAgICBmb3IgKGludCB5ID0gMDsgeSA8
IG51bVJvd3M7ICsreSkgewotICAgICAgICBxdWludDMyKiBzY2FuTGluZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8cXVpbnQzMio+KGltYWdlLnNjYW5MaW5lKHkgKyBkZXN0eSkpOwogICAgICAgICBmb3Ig
KGludCB4ID0gMDsgeCA8IG51bUNvbHVtbnM7IHgrKykgewotICAgICAgICAgICAgLy8gSW1hZ2VE
YXRhIHN0b3JlcyB0aGUgcGl4ZWxzIGluIFJHQkEgd2hpbGUgUUltYWdlIGlzIEFSR0IKLSAgICAg
ICAgICAgIHF1aW50MzIgcGl4ZWwgPSByZWludGVycHJldF9jYXN0PHF1aW50MzIqPihzcmNSb3dz
ICsgNCAqIHgpWzBdOwotICAgICAgICAgICAgcGl4ZWwgPSAoKHBpeGVsIDw8IDE2KSAmIDB4ZmYw
MDAwKSB8ICgocGl4ZWwgPj4gMTYpICYgMHhmZikgfCAocGl4ZWwgJiAweGZmMDBmZjAwKTsKLSAg
ICAgICAgICAgIHNjYW5MaW5lW3ggKyBkZXN0eF0gPSBwaXhlbDsKKyAgICAgICAgICAgIGludCBi
YXNleCA9IHggKiA0OworICAgICAgICAgICAgdW5zaWduZWQgY2hhciBhbHBoYSA9IHNyY1Jvd3Nb
YmFzZXggKyAzXTsKKyAgICAgICAgICAgIFFSZ2IqIGRlc3RDb2xvciA9ICZyZWludGVycHJldF9j
YXN0PFFSZ2IqPihkZXN0Um93cylbeF07CisgICAgICAgICAgICBpZiAobXVsdGlwbGllZCA9PSBV
bm11bHRpcGxpZWQgJiYgYWxwaGEgIT0gMjU1KSB7CisgICAgICAgICAgICAgICAgKmRlc3RDb2xv
ciA9IHFSZ2JhKAorICAgICAgICAgICAgICAgICAgICAoc3JjUm93c1tiYXNleCArIDBdICogYWxw
aGEgKyAyNTQpIC8gMjU1LAorICAgICAgICAgICAgICAgICAgICAoc3JjUm93c1tiYXNleCArIDFd
ICogYWxwaGEgKyAyNTQpIC8gMjU1LAorICAgICAgICAgICAgICAgICAgICAoc3JjUm93c1tiYXNl
eCArIDJdICogYWxwaGEgKyAyNTQpIC8gMjU1LAorICAgICAgICAgICAgICAgICAgICBhbHBoYSk7
CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAqZGVzdENvbG9yID0gcVJnYmEo
c3JjUm93c1tiYXNleCArIDBdLCBzcmNSb3dzW2Jhc2V4ICsgMV0sIHNyY1Jvd3NbYmFzZXggKyAy
XSwgYWxwaGEpOwogICAgICAgICB9Ci0KKyAgICAgICAgZGVzdFJvd3MgKz0gZGVzdEJ5dGVzUGVy
Um93OwogICAgICAgICBzcmNSb3dzICs9IHNyY0J5dGVzUGVyUm93OwogICAgIH0KLQotICAgIGRh
dGEubV9waXhtYXAgPSBRUGl4bWFwOjpmcm9tSW1hZ2UoaW1hZ2UpOwotCi0gICAgaWYgKGlzUGFp
bnRpbmcpCi0gICAgICAgIGRhdGEubV9wYWludGVyLT5iZWdpbigmZGF0YS5tX3BpeG1hcCk7CiB9
CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGF0YShJbWFnZURhdGEq
IHNvdXJjZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQ
b2ludCkKQEAgLTI4OSwxMiArMjc2LDEyIEBAIFN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJM
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSkgY29uCiAgICAg
YnVmZmVyLm9wZW4oUUJ1ZmZlcjo6V3JpdGVPbmx5KTsKIAogICAgIGlmIChxdWFsaXR5ICYmICpx
dWFsaXR5ID49IDAuMCAmJiAqcXVhbGl0eSA8PSAxLjApIHsKLSAgICAgICAgaWYgKCFtX2RhdGEu
bV9waXhtYXAuc2F2ZSgmYnVmZmVyLCBtaW1lVHlwZS5zdWJzdHJpbmcoc2l6ZW9mICJpbWFnZSIp
LnV0ZjgoKS5kYXRhKCksICpxdWFsaXR5ICogMTAwICsgMC41KSkgeworICAgICAgICBpZiAoIW1f
ZGF0YS5tX2ltYWdlLnNhdmUoJmJ1ZmZlciwgbWltZVR5cGUuc3Vic3RyaW5nKHNpemVvZiAiaW1h
Z2UiKS51dGY4KCkuZGF0YSgpLCAqcXVhbGl0eSAqIDEwMCArIDAuNSkpIHsKICAgICAgICAgICAg
IGJ1ZmZlci5jbG9zZSgpOwogICAgICAgICAgICAgcmV0dXJuICJkYXRhOiwiOwogICAgICAgICB9
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFtX2RhdGEubV9waXhtYXAuc2F2ZSgmYnVmZmVy
LCBtaW1lVHlwZS5zdWJzdHJpbmcoc2l6ZW9mICJpbWFnZSIpLnV0ZjgoKS5kYXRhKCksIDEwMCkp
IHsKKyAgICAgICAgaWYgKCFtX2RhdGEubV9pbWFnZS5zYXZlKCZidWZmZXIsIG1pbWVUeXBlLnN1
YnN0cmluZyhzaXplb2YgImltYWdlIikudXRmOCgpLmRhdGEoKSwgMTAwKSkgewogICAgICAgICAg
ICAgYnVmZmVyLmNsb3NlKCk7CiAgICAgICAgICAgICByZXR1cm4gImRhdGE6LCI7CiAgICAgICAg
IH0K
</data>
<flag name="review"
          id="48612"
          type_id="1"
          status="-"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60865</attachid>
            <date>2010-07-08 04:41:27 -0700</date>
            <delta_ts>2010-07-08 04:56:29 -0700</delta_ts>
            <desc>Proposed patch v2</desc>
            <filename>bug-41827-v2.diff</filename>
            <type>text/plain</type>
            <size>6645</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwOGQ4MWU5Li41M2Y3NjAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDct
MDggIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIENhbnZhcyBwdXRJbWFn
ZURhdGEoKSByZXNldHMgcGFpbnRlciBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4MjcKKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gdmVy
aWZ5IHRoYXQgdGhlIHBhaW50aW5nIHN0YXRlIHJlbWFpbnMgaW50YWN0IGFmdGVyIGNhbGxpbmcg
cHV0SW1hZ2VEYXRhKCkuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50
YWN0LWFmdGVyLXB1dEltYWdlRGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY2FudmFzL2NhbnZhcy1zdGF0ZS1pbnRhY3QtYWZ0ZXItcHV0SW1hZ2VEYXRhLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc3RhdGUtaW50
YWN0LWFmdGVyLXB1dEltYWdlRGF0YS5qczogQWRkZWQuCisKIDIwMTAtMDctMDggIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2Vk
LiBBZGQgbGVvcGFyZCBzcGVjaWZpYyBwaXhlbCB0ZXN0IHJlc3VsdHMgZm9yIHN2Zy9jdXN0b20v
c3ZnLWN1cnZlLXdpdGgtcmVsYXRpdmUtY29yZGluYXRlcy5odG1sLCB0byBtYWtlIHJ1bi13ZWJr
aXQtdGVzdHMgcGFzcyBhZ2FpbiB3aXRoIC0tdG9sZXJhbmNlIDAuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50YWN0LWFmdGVyLXB1dEltYWdlRGF0
YS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50
YWN0LWFmdGVyLXB1dEltYWdlRGF0YS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uY2ViMWJmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy1zdGF0ZS1pbnRhY3QtYWZ0ZXItcHV0SW1hZ2VEYXRhLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDMwIEBACitUZXN0IHRoYXQgdGhlIHJlbmRlcmluZyBjb250ZXh0IHN0
YXRlIGlzIGludGFjdCBhZnRlciBhIGNhbGwgdG8gcHV0SW1hZ2VEYXRhKCkKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK0NoZWNraW5nIGluaXRpYWwgc3RhdGUgZm9yIHNhbml0eQor
UEFTUyBjdHguZmlsbFN0eWxlIGlzICcjZmYwMDAwJworUEFTUyBpbWdkYXRhWzBdIGlzIDI1NQor
UEFTUyBpbWdkYXRhWzFdIGlzIDAKK1BBU1MgaW1nZGF0YVsyXSBpcyAwCitQQVNTIGltZ2RhdGFb
M10gaXMgMjU1CitQQVNTIGltZ2RhdGFbNF0gaXMgMAorUEFTUyBpbWdkYXRhWzVdIGlzIDAKK1BB
U1MgaW1nZGF0YVs2XSBpcyAwCitQQVNTIGltZ2RhdGFbN10gaXMgMAorQ2FsbGluZyBwdXRJbWFn
ZURhdGEoKQorUEFTUyBpbWdkYXRhWzBdIGlzIDI1NQorUEFTUyBpbWdkYXRhWzFdIGlzIDAKK1BB
U1MgaW1nZGF0YVsyXSBpcyAwCitQQVNTIGltZ2RhdGFbM10gaXMgMjU1CitDaGVja2luZyBpZiBz
dGF0ZSBpcyBpbnRhY3QKK1BBU1MgY3R4LmZpbGxTdHlsZSBpcyAnI2ZmMDAwMCcKK1BBU1MgaW1n
ZGF0YVswXSBpcyAyNTUKK1BBU1MgaW1nZGF0YVsxXSBpcyAwCitQQVNTIGltZ2RhdGFbMl0gaXMg
MAorUEFTUyBpbWdkYXRhWzNdIGlzIDI1NQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L2NhbnZhcy1zdGF0ZS1pbnRhY3QtYWZ0ZXItcHV0SW1hZ2VEYXRhLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50YWN0LWFmdGVyLXB1dEltYWdlRGF0YS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNzkzN2YKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50YWN0LWFmdGVy
LXB1dEltYWdlRGF0YS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2FudmFzLXN0YXRlLWludGFjdC1hZnRl
ci1wdXRJbWFnZURhdGEuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zdGF0ZS1pbnRh
Y3QtYWZ0ZXItcHV0SW1hZ2VEYXRhLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0
LXRlc3RzL2NhbnZhcy1zdGF0ZS1pbnRhY3QtYWZ0ZXItcHV0SW1hZ2VEYXRhLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZWMyMjUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXN0YXRlLWludGFjdC1h
ZnRlci1wdXRJbWFnZURhdGEuanMKQEAgLTAsMCArMSw0MCBAQAorZGVzY3JpcHRpb24oIlRlc3Qg
dGhhdCB0aGUgcmVuZGVyaW5nIGNvbnRleHQgc3RhdGUgaXMgaW50YWN0IGFmdGVyIGEgY2FsbCB0
byBwdXRJbWFnZURhdGEoKSIpOwordmFyIGN0eCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Nh
bnZhcycpLmdldENvbnRleHQoJzJkJyk7CisKK2N0eC5maWxsU3R5bGUgPSAncmVkJzsKK2N0eC5m
aWxsUmVjdCgwLCAwLCAxLCAxKTsKKworZGVidWcoIkNoZWNraW5nIGluaXRpYWwgc3RhdGUgZm9y
IHNhbml0eSIpOwordmFyIGltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMiwgMSk7
Cit2YXIgaW1nZGF0YSA9IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUoImN0eC5maWxsU3R5bGUi
LCAiJyNmZjAwMDAnIik7CitzaG91bGRCZSgiaW1nZGF0YVswXSIsICIyNTUiKTsKK3Nob3VsZEJl
KCJpbWdkYXRhWzFdIiwgIjAiKTsKK3Nob3VsZEJlKCJpbWdkYXRhWzJdIiwgIjAiKTsKK3Nob3Vs
ZEJlKCJpbWdkYXRhWzNdIiwgIjI1NSIpOworc2hvdWxkQmUoImltZ2RhdGFbNF0iLCAiMCIpOwor
c2hvdWxkQmUoImltZ2RhdGFbNV0iLCAiMCIpOworc2hvdWxkQmUoImltZ2RhdGFbNl0iLCAiMCIp
Oworc2hvdWxkQmUoImltZ2RhdGFbN10iLCAiMCIpOworCitkZWJ1ZygiQ2FsbGluZyBwdXRJbWFn
ZURhdGEoKSIpOworY3R4LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDEsIDEpOworaW1hZ2VEYXRh
ID0gY3R4LmdldEltYWdlRGF0YSgxLCAxLCAxLCAxKTsKK2ltZ2RhdGEgPSBpbWFnZURhdGEuZGF0
YTsKK3Nob3VsZEJlKCJpbWdkYXRhWzBdIiwgIjI1NSIpOworc2hvdWxkQmUoImltZ2RhdGFbMV0i
LCAiMCIpOworc2hvdWxkQmUoImltZ2RhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImltZ2RhdGFb
M10iLCAiMjU1Iik7CisKK2RlYnVnKCJDaGVja2luZyBpZiBzdGF0ZSBpcyBpbnRhY3QiKTsKK3No
b3VsZEJlKCJjdHguZmlsbFN0eWxlIiwgIicjZmYwMDAwJyIpOworCitjdHguZmlsbFJlY3QoMiwg
MiwgMSwgMSk7CitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDIsIDIsIDEsIDEpOworaW1n
ZGF0YSA9IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUoImltZ2RhdGFbMF0iLCAiMjU1Iik7Citz
aG91bGRCZSgiaW1nZGF0YVsxXSIsICIwIik7CitzaG91bGRCZSgiaW1nZGF0YVsyXSIsICIwIik7
CitzaG91bGRCZSgiaW1nZGF0YVszXSIsICIyNTUiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDhhMDUxZWUuLjkzODZiMjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDctMDggIEFu
ZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIENhbnZhcyBwdXRJbWFnZURhdGEo
KSByZXNldHMgcGFpbnRlciBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDE4MjcKKworICAgICAgICBVc2UgZHJhd0ltYWdlKCkgdG8gY29weSBw
aXhlbHMgaW4gcHV0SW1hZ2VEYXRhKCkgaW5zdGVhZCBvZiBRUGl4bWFwOjpvcGVyYXRvcj0KKwor
ICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50YWN0LWFmdGVyLXB1dElt
YWdlRGF0YS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZl
clF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnB1dEltYWdlRGF0YSk6CisKIDIwMTAtMDctMDcg
IEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9J
bWFnZUJ1ZmZlclF0LmNwcAppbmRleCBlNDY5MTNjLi5hMWQzODRlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAKQEAgLTIzNCwxMCArMjM0LDYg
QEAgdm9pZCBwdXRJbWFnZURhdGEoSW1hZ2VEYXRhKiYgc291cmNlLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYKIAogICAgIHVuc2lnbmVkIHNyY0J5dGVzUGVyUm93
ID0gNCAqIHNvdXJjZS0+d2lkdGgoKTsKIAotICAgIGJvb2wgaXNQYWludGluZyA9IGRhdGEubV9w
YWludGVyLT5pc0FjdGl2ZSgpOwotICAgIGlmIChpc1BhaW50aW5nKQotICAgICAgICBkYXRhLm1f
cGFpbnRlci0+ZW5kKCk7Ci0KICAgICBRSW1hZ2UgaW1hZ2UgPSBkYXRhLm1fcGl4bWFwLnRvSW1h
Z2UoKTsKICAgICBpZiAobXVsdGlwbGllZCA9PSBVbm11bHRpcGxpZWQpCiAgICAgICAgIGltYWdl
ID0gaW1hZ2UuY29udmVydFRvRm9ybWF0KFFJbWFnZTo6Rm9ybWF0X0FSR0IzMik7CkBAIC0yNTcs
MTAgKzI1MywyNiBAQCB2b2lkIHB1dEltYWdlRGF0YShJbWFnZURhdGEqJiBzb3VyY2UsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBvaW50JgogICAgICAgICBzcmNSb3dzICs9
IHNyY0J5dGVzUGVyUm93OwogICAgIH0KIAotICAgIGRhdGEubV9waXhtYXAgPSBRUGl4bWFwOjpm
cm9tSW1hZ2UoaW1hZ2UpOwotCi0gICAgaWYgKGlzUGFpbnRpbmcpCisgICAgYm9vbCBpc1BhaW50
aW5nID0gZGF0YS5tX3BhaW50ZXItPmlzQWN0aXZlKCk7CisgICAgaWYgKCFpc1BhaW50aW5nKQog
ICAgICAgICBkYXRhLm1fcGFpbnRlci0+YmVnaW4oJmRhdGEubV9waXhtYXApOworICAgIGVsc2Ug
eworICAgICAgICBkYXRhLm1fcGFpbnRlci0+c2F2ZSgpOworCisgICAgICAgIC8vIHB1dEltYWdl
RGF0YSgpIHNob3VsZCBiZSB1bmFmZmVjdGVkIGJ5IHBhaW50ZXIgc3RhdGUKKyAgICAgICAgZGF0
YS5tX3BhaW50ZXItPnJlc2V0VHJhbnNmb3JtKCk7CisgICAgICAgIGRhdGEubV9wYWludGVyLT5z
ZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2UpOworICAg
ICAgICBkYXRhLm1fcGFpbnRlci0+c2V0T3BhY2l0eSgxLjApOworICAgICAgICBkYXRhLm1fcGFp
bnRlci0+c2V0Q2xpcHBpbmcoZmFsc2UpOworICAgIH0KKworICAgIFFSZWN0IHRhcmdldChkZXN0
eCwgZGVzdHksIGVuZHggLSBkZXN0eCwgZW5keSAtIGRlc3R5KTsKKyAgICBkYXRhLm1fcGFpbnRl
ci0+ZHJhd0ltYWdlKHRhcmdldCwgaW1hZ2UsIHRhcmdldCk7CisKKyAgICBpZiAoIWlzUGFpbnRp
bmcpCisgICAgICAgIGRhdGEubV9wYWludGVyLT5lbmQoKTsKKyAgICBlbHNlCisgICAgICAgIGRh
dGEubV9wYWludGVyLT5yZXN0b3JlKCk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dFVubXVs
dGlwbGllZEltYWdlRGF0YShJbWFnZURhdGEqIHNvdXJjZSwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCkK
</data>
<flag name="review"
          id="48666"
          type_id="1"
          status="-"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60866</attachid>
            <date>2010-07-08 04:56:29 -0700</date>
            <delta_ts>2010-07-08 05:03:04 -0700</delta_ts>
            <desc>Proposed patch v3</desc>
            <filename>bug-41827-v3.diff</filename>
            <type>text/plain</type>
            <size>7479</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwOGQ4MWU5Li41M2Y3NjAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDct
MDggIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIENhbnZhcyBwdXRJbWFn
ZURhdGEoKSByZXNldHMgcGFpbnRlciBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4MjcKKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gdmVy
aWZ5IHRoYXQgdGhlIHBhaW50aW5nIHN0YXRlIHJlbWFpbnMgaW50YWN0IGFmdGVyIGNhbGxpbmcg
cHV0SW1hZ2VEYXRhKCkuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50
YWN0LWFmdGVyLXB1dEltYWdlRGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY2FudmFzL2NhbnZhcy1zdGF0ZS1pbnRhY3QtYWZ0ZXItcHV0SW1hZ2VEYXRhLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc3RhdGUtaW50
YWN0LWFmdGVyLXB1dEltYWdlRGF0YS5qczogQWRkZWQuCisKIDIwMTAtMDctMDggIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2Vk
LiBBZGQgbGVvcGFyZCBzcGVjaWZpYyBwaXhlbCB0ZXN0IHJlc3VsdHMgZm9yIHN2Zy9jdXN0b20v
c3ZnLWN1cnZlLXdpdGgtcmVsYXRpdmUtY29yZGluYXRlcy5odG1sLCB0byBtYWtlIHJ1bi13ZWJr
aXQtdGVzdHMgcGFzcyBhZ2FpbiB3aXRoIC0tdG9sZXJhbmNlIDAuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50YWN0LWFmdGVyLXB1dEltYWdlRGF0
YS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50
YWN0LWFmdGVyLXB1dEltYWdlRGF0YS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uY2ViMWJmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy1zdGF0ZS1pbnRhY3QtYWZ0ZXItcHV0SW1hZ2VEYXRhLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDMwIEBACitUZXN0IHRoYXQgdGhlIHJlbmRlcmluZyBjb250ZXh0IHN0
YXRlIGlzIGludGFjdCBhZnRlciBhIGNhbGwgdG8gcHV0SW1hZ2VEYXRhKCkKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK0NoZWNraW5nIGluaXRpYWwgc3RhdGUgZm9yIHNhbml0eQor
UEFTUyBjdHguZmlsbFN0eWxlIGlzICcjZmYwMDAwJworUEFTUyBpbWdkYXRhWzBdIGlzIDI1NQor
UEFTUyBpbWdkYXRhWzFdIGlzIDAKK1BBU1MgaW1nZGF0YVsyXSBpcyAwCitQQVNTIGltZ2RhdGFb
M10gaXMgMjU1CitQQVNTIGltZ2RhdGFbNF0gaXMgMAorUEFTUyBpbWdkYXRhWzVdIGlzIDAKK1BB
U1MgaW1nZGF0YVs2XSBpcyAwCitQQVNTIGltZ2RhdGFbN10gaXMgMAorQ2FsbGluZyBwdXRJbWFn
ZURhdGEoKQorUEFTUyBpbWdkYXRhWzBdIGlzIDI1NQorUEFTUyBpbWdkYXRhWzFdIGlzIDAKK1BB
U1MgaW1nZGF0YVsyXSBpcyAwCitQQVNTIGltZ2RhdGFbM10gaXMgMjU1CitDaGVja2luZyBpZiBz
dGF0ZSBpcyBpbnRhY3QKK1BBU1MgY3R4LmZpbGxTdHlsZSBpcyAnI2ZmMDAwMCcKK1BBU1MgaW1n
ZGF0YVswXSBpcyAyNTUKK1BBU1MgaW1nZGF0YVsxXSBpcyAwCitQQVNTIGltZ2RhdGFbMl0gaXMg
MAorUEFTUyBpbWdkYXRhWzNdIGlzIDI1NQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L2NhbnZhcy1zdGF0ZS1pbnRhY3QtYWZ0ZXItcHV0SW1hZ2VEYXRhLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50YWN0LWFmdGVyLXB1dEltYWdlRGF0YS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNzkzN2YKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50YWN0LWFmdGVy
LXB1dEltYWdlRGF0YS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2FudmFzLXN0YXRlLWludGFjdC1hZnRl
ci1wdXRJbWFnZURhdGEuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zdGF0ZS1pbnRh
Y3QtYWZ0ZXItcHV0SW1hZ2VEYXRhLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0
LXRlc3RzL2NhbnZhcy1zdGF0ZS1pbnRhY3QtYWZ0ZXItcHV0SW1hZ2VEYXRhLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZWMyMjUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXN0YXRlLWludGFjdC1h
ZnRlci1wdXRJbWFnZURhdGEuanMKQEAgLTAsMCArMSw0MCBAQAorZGVzY3JpcHRpb24oIlRlc3Qg
dGhhdCB0aGUgcmVuZGVyaW5nIGNvbnRleHQgc3RhdGUgaXMgaW50YWN0IGFmdGVyIGEgY2FsbCB0
byBwdXRJbWFnZURhdGEoKSIpOwordmFyIGN0eCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Nh
bnZhcycpLmdldENvbnRleHQoJzJkJyk7CisKK2N0eC5maWxsU3R5bGUgPSAncmVkJzsKK2N0eC5m
aWxsUmVjdCgwLCAwLCAxLCAxKTsKKworZGVidWcoIkNoZWNraW5nIGluaXRpYWwgc3RhdGUgZm9y
IHNhbml0eSIpOwordmFyIGltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMiwgMSk7
Cit2YXIgaW1nZGF0YSA9IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUoImN0eC5maWxsU3R5bGUi
LCAiJyNmZjAwMDAnIik7CitzaG91bGRCZSgiaW1nZGF0YVswXSIsICIyNTUiKTsKK3Nob3VsZEJl
KCJpbWdkYXRhWzFdIiwgIjAiKTsKK3Nob3VsZEJlKCJpbWdkYXRhWzJdIiwgIjAiKTsKK3Nob3Vs
ZEJlKCJpbWdkYXRhWzNdIiwgIjI1NSIpOworc2hvdWxkQmUoImltZ2RhdGFbNF0iLCAiMCIpOwor
c2hvdWxkQmUoImltZ2RhdGFbNV0iLCAiMCIpOworc2hvdWxkQmUoImltZ2RhdGFbNl0iLCAiMCIp
Oworc2hvdWxkQmUoImltZ2RhdGFbN10iLCAiMCIpOworCitkZWJ1ZygiQ2FsbGluZyBwdXRJbWFn
ZURhdGEoKSIpOworY3R4LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDEsIDEpOworaW1hZ2VEYXRh
ID0gY3R4LmdldEltYWdlRGF0YSgxLCAxLCAxLCAxKTsKK2ltZ2RhdGEgPSBpbWFnZURhdGEuZGF0
YTsKK3Nob3VsZEJlKCJpbWdkYXRhWzBdIiwgIjI1NSIpOworc2hvdWxkQmUoImltZ2RhdGFbMV0i
LCAiMCIpOworc2hvdWxkQmUoImltZ2RhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImltZ2RhdGFb
M10iLCAiMjU1Iik7CisKK2RlYnVnKCJDaGVja2luZyBpZiBzdGF0ZSBpcyBpbnRhY3QiKTsKK3No
b3VsZEJlKCJjdHguZmlsbFN0eWxlIiwgIicjZmYwMDAwJyIpOworCitjdHguZmlsbFJlY3QoMiwg
MiwgMSwgMSk7CitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDIsIDIsIDEsIDEpOworaW1n
ZGF0YSA9IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUoImltZ2RhdGFbMF0iLCAiMjU1Iik7Citz
aG91bGRCZSgiaW1nZGF0YVsxXSIsICIwIik7CitzaG91bGRCZSgiaW1nZGF0YVsyXSIsICIwIik7
CitzaG91bGRCZSgiaW1nZGF0YVszXSIsICIyNTUiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDhhMDUxZWUuLjkzODZiMjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDctMDggIEFu
ZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIENhbnZhcyBwdXRJbWFnZURhdGEo
KSByZXNldHMgcGFpbnRlciBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDE4MjcKKworICAgICAgICBVc2UgZHJhd0ltYWdlKCkgdG8gY29weSBw
aXhlbHMgaW4gcHV0SW1hZ2VEYXRhKCkgaW5zdGVhZCBvZiBRUGl4bWFwOjpvcGVyYXRvcj0KKwor
ICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50YWN0LWFmdGVyLXB1dElt
YWdlRGF0YS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZl
clF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnB1dEltYWdlRGF0YSk6CisKIDIwMTAtMDctMDcg
IEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9J
bWFnZUJ1ZmZlclF0LmNwcAppbmRleCBlNDY5MTNjLi43ZWM5NzYwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAKQEAgLTIzNCwzMyArMjM0LDQz
IEBAIHZvaWQgcHV0SW1hZ2VEYXRhKEltYWdlRGF0YSomIHNvdXJjZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmCiAKICAgICB1bnNpZ25lZCBzcmNCeXRlc1BlclJv
dyA9IDQgKiBzb3VyY2UtPndpZHRoKCk7CiAKLSAgICBib29sIGlzUGFpbnRpbmcgPSBkYXRhLm1f
cGFpbnRlci0+aXNBY3RpdmUoKTsKLSAgICBpZiAoaXNQYWludGluZykKLSAgICAgICAgZGF0YS5t
X3BhaW50ZXItPmVuZCgpOworICAgIFFSZWN0IGRlc3RSZWN0KGRlc3R4LCBkZXN0eSwgZW5keCAt
IGRlc3R4LCBlbmR5IC0gZGVzdHkpOwogCi0gICAgUUltYWdlIGltYWdlID0gZGF0YS5tX3BpeG1h
cC50b0ltYWdlKCk7Ci0gICAgaWYgKG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkKQotICAgICAg
ICBpbWFnZSA9IGltYWdlLmNvbnZlcnRUb0Zvcm1hdChRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOwot
ICAgIGVsc2UKLSAgICAgICAgaW1hZ2UgPSBpbWFnZS5jb252ZXJ0VG9Gb3JtYXQoUUltYWdlOjpG
b3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQpOworICAgIFFJbWFnZTo6Rm9ybWF0IGZvcm1hdCA9
IG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkID8gUUltYWdlOjpGb3JtYXRfQVJHQjMyIDogUUlt
YWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQ7CisgICAgUUltYWdlIGltYWdlKGRlc3RS
ZWN0LnNpemUoKSwgZm9ybWF0KTsKIAogICAgIHVuc2lnbmVkIGNoYXIqIHNyY1Jvd3MgPSBzb3Vy
Y2UtPmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCkgKyBvcmlnaW55ICogc3JjQnl0ZXNQZXJSb3cgKyBv
cmlnaW54ICogNDsKICAgICBmb3IgKGludCB5ID0gMDsgeSA8IG51bVJvd3M7ICsreSkgewotICAg
ICAgICBxdWludDMyKiBzY2FuTGluZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KGltYWdl
LnNjYW5MaW5lKHkgKyBkZXN0eSkpOworICAgICAgICBxdWludDMyKiBzY2FuTGluZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KGltYWdlLnNjYW5MaW5lKHkpKTsKICAgICAgICAgZm9yIChp
bnQgeCA9IDA7IHggPCBudW1Db2x1bW5zOyB4KyspIHsKICAgICAgICAgICAgIC8vIEltYWdlRGF0
YSBzdG9yZXMgdGhlIHBpeGVscyBpbiBSR0JBIHdoaWxlIFFJbWFnZSBpcyBBUkdCCiAgICAgICAg
ICAgICBxdWludDMyIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdDxxdWludDMyKj4oc3JjUm93cyAr
IDQgKiB4KVswXTsKICAgICAgICAgICAgIHBpeGVsID0gKChwaXhlbCA8PCAxNikgJiAweGZmMDAw
MCkgfCAoKHBpeGVsID4+IDE2KSAmIDB4ZmYpIHwgKHBpeGVsICYgMHhmZjAwZmYwMCk7Ci0gICAg
ICAgICAgICBzY2FuTGluZVt4ICsgZGVzdHhdID0gcGl4ZWw7CisgICAgICAgICAgICBzY2FuTGlu
ZVt4XSA9IHBpeGVsOwogICAgICAgICB9CiAKICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1Bl
clJvdzsKICAgICB9CiAKLSAgICBkYXRhLm1fcGl4bWFwID0gUVBpeG1hcDo6ZnJvbUltYWdlKGlt
YWdlKTsKLQotICAgIGlmIChpc1BhaW50aW5nKQorICAgIGJvb2wgaXNQYWludGluZyA9IGRhdGEu
bV9wYWludGVyLT5pc0FjdGl2ZSgpOworICAgIGlmICghaXNQYWludGluZykKICAgICAgICAgZGF0
YS5tX3BhaW50ZXItPmJlZ2luKCZkYXRhLm1fcGl4bWFwKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
ZGF0YS5tX3BhaW50ZXItPnNhdmUoKTsKKworICAgICAgICAvLyBwdXRJbWFnZURhdGEoKSBzaG91
bGQgYmUgdW5hZmZlY3RlZCBieSBwYWludGVyIHN0YXRlCisgICAgICAgIGRhdGEubV9wYWludGVy
LT5yZXNldFRyYW5zZm9ybSgpOworICAgICAgICBkYXRhLm1fcGFpbnRlci0+c2V0Q29tcG9zaXRp
b25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKKyAgICAgICAgZGF0YS5t
X3BhaW50ZXItPnNldE9wYWNpdHkoMS4wKTsKKyAgICAgICAgZGF0YS5tX3BhaW50ZXItPnNldENs
aXBwaW5nKGZhbHNlKTsKKyAgICB9CisKKyAgICBkYXRhLm1fcGFpbnRlci0+ZHJhd0ltYWdlKGRl
c3RSZWN0LCBpbWFnZSk7CisKKyAgICBpZiAoIWlzUGFpbnRpbmcpCisgICAgICAgIGRhdGEubV9w
YWludGVyLT5lbmQoKTsKKyAgICBlbHNlCisgICAgICAgIGRhdGEubV9wYWludGVyLT5yZXN0b3Jl
KCk7CiB9CiAKIHZvaWQgSW1hZ2VCdWZmZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGF0YShJbWFn
ZURhdGEqIHNvdXJjZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQm
IGRlc3RQb2ludCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60867</attachid>
            <date>2010-07-08 05:03:04 -0700</date>
            <delta_ts>2010-07-08 05:38:31 -0700</delta_ts>
            <desc>Proposed patch v4</desc>
            <filename>bug-41827-v4.diff</filename>
            <type>text/plain</type>
            <size>7475</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwOGQ4MWU5Li41M2Y3NjAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDct
MDggIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIENhbnZhcyBwdXRJbWFn
ZURhdGEoKSByZXNldHMgcGFpbnRlciBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4MjcKKworICAgICAgICBBZGRlZCBhIHRlc3QgdG8gdmVy
aWZ5IHRoYXQgdGhlIHBhaW50aW5nIHN0YXRlIHJlbWFpbnMgaW50YWN0IGFmdGVyIGNhbGxpbmcg
cHV0SW1hZ2VEYXRhKCkuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50
YWN0LWFmdGVyLXB1dEltYWdlRGF0YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY2FudmFzL2NhbnZhcy1zdGF0ZS1pbnRhY3QtYWZ0ZXItcHV0SW1hZ2VEYXRhLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtc3RhdGUtaW50
YWN0LWFmdGVyLXB1dEltYWdlRGF0YS5qczogQWRkZWQuCisKIDIwMTAtMDctMDggIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2Vk
LiBBZGQgbGVvcGFyZCBzcGVjaWZpYyBwaXhlbCB0ZXN0IHJlc3VsdHMgZm9yIHN2Zy9jdXN0b20v
c3ZnLWN1cnZlLXdpdGgtcmVsYXRpdmUtY29yZGluYXRlcy5odG1sLCB0byBtYWtlIHJ1bi13ZWJr
aXQtdGVzdHMgcGFzcyBhZ2FpbiB3aXRoIC0tdG9sZXJhbmNlIDAuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50YWN0LWFmdGVyLXB1dEltYWdlRGF0
YS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50
YWN0LWFmdGVyLXB1dEltYWdlRGF0YS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uY2ViMWJmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy1zdGF0ZS1pbnRhY3QtYWZ0ZXItcHV0SW1hZ2VEYXRhLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDMwIEBACitUZXN0IHRoYXQgdGhlIHJlbmRlcmluZyBjb250ZXh0IHN0
YXRlIGlzIGludGFjdCBhZnRlciBhIGNhbGwgdG8gcHV0SW1hZ2VEYXRhKCkKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK0NoZWNraW5nIGluaXRpYWwgc3RhdGUgZm9yIHNhbml0eQor
UEFTUyBjdHguZmlsbFN0eWxlIGlzICcjZmYwMDAwJworUEFTUyBpbWdkYXRhWzBdIGlzIDI1NQor
UEFTUyBpbWdkYXRhWzFdIGlzIDAKK1BBU1MgaW1nZGF0YVsyXSBpcyAwCitQQVNTIGltZ2RhdGFb
M10gaXMgMjU1CitQQVNTIGltZ2RhdGFbNF0gaXMgMAorUEFTUyBpbWdkYXRhWzVdIGlzIDAKK1BB
U1MgaW1nZGF0YVs2XSBpcyAwCitQQVNTIGltZ2RhdGFbN10gaXMgMAorQ2FsbGluZyBwdXRJbWFn
ZURhdGEoKQorUEFTUyBpbWdkYXRhWzBdIGlzIDI1NQorUEFTUyBpbWdkYXRhWzFdIGlzIDAKK1BB
U1MgaW1nZGF0YVsyXSBpcyAwCitQQVNTIGltZ2RhdGFbM10gaXMgMjU1CitDaGVja2luZyBpZiBz
dGF0ZSBpcyBpbnRhY3QKK1BBU1MgY3R4LmZpbGxTdHlsZSBpcyAnI2ZmMDAwMCcKK1BBU1MgaW1n
ZGF0YVswXSBpcyAyNTUKK1BBU1MgaW1nZGF0YVsxXSBpcyAwCitQQVNTIGltZ2RhdGFbMl0gaXMg
MAorUEFTUyBpbWdkYXRhWzNdIGlzIDI1NQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L2NhbnZhcy1zdGF0ZS1pbnRhY3QtYWZ0ZXItcHV0SW1hZ2VEYXRhLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50YWN0LWFmdGVyLXB1dEltYWdlRGF0YS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNzkzN2YKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50YWN0LWFmdGVy
LXB1dEltYWdlRGF0YS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvY2FudmFzLXN0YXRlLWludGFjdC1hZnRl
ci1wdXRJbWFnZURhdGEuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1zdGF0ZS1pbnRh
Y3QtYWZ0ZXItcHV0SW1hZ2VEYXRhLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0
LXRlc3RzL2NhbnZhcy1zdGF0ZS1pbnRhY3QtYWZ0ZXItcHV0SW1hZ2VEYXRhLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZWMyMjUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVzdHMvY2FudmFzLXN0YXRlLWludGFjdC1h
ZnRlci1wdXRJbWFnZURhdGEuanMKQEAgLTAsMCArMSw0MCBAQAorZGVzY3JpcHRpb24oIlRlc3Qg
dGhhdCB0aGUgcmVuZGVyaW5nIGNvbnRleHQgc3RhdGUgaXMgaW50YWN0IGFmdGVyIGEgY2FsbCB0
byBwdXRJbWFnZURhdGEoKSIpOwordmFyIGN0eCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Nh
bnZhcycpLmdldENvbnRleHQoJzJkJyk7CisKK2N0eC5maWxsU3R5bGUgPSAncmVkJzsKK2N0eC5m
aWxsUmVjdCgwLCAwLCAxLCAxKTsKKworZGVidWcoIkNoZWNraW5nIGluaXRpYWwgc3RhdGUgZm9y
IHNhbml0eSIpOwordmFyIGltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgMiwgMSk7
Cit2YXIgaW1nZGF0YSA9IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUoImN0eC5maWxsU3R5bGUi
LCAiJyNmZjAwMDAnIik7CitzaG91bGRCZSgiaW1nZGF0YVswXSIsICIyNTUiKTsKK3Nob3VsZEJl
KCJpbWdkYXRhWzFdIiwgIjAiKTsKK3Nob3VsZEJlKCJpbWdkYXRhWzJdIiwgIjAiKTsKK3Nob3Vs
ZEJlKCJpbWdkYXRhWzNdIiwgIjI1NSIpOworc2hvdWxkQmUoImltZ2RhdGFbNF0iLCAiMCIpOwor
c2hvdWxkQmUoImltZ2RhdGFbNV0iLCAiMCIpOworc2hvdWxkQmUoImltZ2RhdGFbNl0iLCAiMCIp
Oworc2hvdWxkQmUoImltZ2RhdGFbN10iLCAiMCIpOworCitkZWJ1ZygiQ2FsbGluZyBwdXRJbWFn
ZURhdGEoKSIpOworY3R4LnB1dEltYWdlRGF0YShpbWFnZURhdGEsIDEsIDEpOworaW1hZ2VEYXRh
ID0gY3R4LmdldEltYWdlRGF0YSgxLCAxLCAxLCAxKTsKK2ltZ2RhdGEgPSBpbWFnZURhdGEuZGF0
YTsKK3Nob3VsZEJlKCJpbWdkYXRhWzBdIiwgIjI1NSIpOworc2hvdWxkQmUoImltZ2RhdGFbMV0i
LCAiMCIpOworc2hvdWxkQmUoImltZ2RhdGFbMl0iLCAiMCIpOworc2hvdWxkQmUoImltZ2RhdGFb
M10iLCAiMjU1Iik7CisKK2RlYnVnKCJDaGVja2luZyBpZiBzdGF0ZSBpcyBpbnRhY3QiKTsKK3No
b3VsZEJlKCJjdHguZmlsbFN0eWxlIiwgIicjZmYwMDAwJyIpOworCitjdHguZmlsbFJlY3QoMiwg
MiwgMSwgMSk7CitpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDIsIDIsIDEsIDEpOworaW1n
ZGF0YSA9IGltYWdlRGF0YS5kYXRhOworc2hvdWxkQmUoImltZ2RhdGFbMF0iLCAiMjU1Iik7Citz
aG91bGRCZSgiaW1nZGF0YVsxXSIsICIwIik7CitzaG91bGRCZSgiaW1nZGF0YVsyXSIsICIwIik7
CitzaG91bGRCZSgiaW1nZGF0YVszXSIsICIyNTUiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDhhMDUxZWUuLjkzODZiMjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDctMDggIEFu
ZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIENhbnZhcyBwdXRJbWFnZURhdGEo
KSByZXNldHMgcGFpbnRlciBzdGF0ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDE4MjcKKworICAgICAgICBVc2UgZHJhd0ltYWdlKCkgdG8gY29weSBw
aXhlbHMgaW4gcHV0SW1hZ2VEYXRhKCkgaW5zdGVhZCBvZiBRUGl4bWFwOjpvcGVyYXRvcj0KKwor
ICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy9jYW52YXMtc3RhdGUtaW50YWN0LWFmdGVyLXB1dElt
YWdlRGF0YS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZl
clF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnB1dEltYWdlRGF0YSk6CisKIDIwMTAtMDctMDcg
IEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBGaXNoZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9J
bWFnZUJ1ZmZlclF0LmNwcAppbmRleCBlNDY5MTNjLi5hNTQ2ZGVmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlQnVmZmVyUXQuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAKQEAgLTIzNCwzMyArMjM0LDQz
IEBAIHZvaWQgcHV0SW1hZ2VEYXRhKEltYWdlRGF0YSomIHNvdXJjZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UG9pbnQmCiAKICAgICB1bnNpZ25lZCBzcmNCeXRlc1BlclJv
dyA9IDQgKiBzb3VyY2UtPndpZHRoKCk7CiAKLSAgICBib29sIGlzUGFpbnRpbmcgPSBkYXRhLm1f
cGFpbnRlci0+aXNBY3RpdmUoKTsKLSAgICBpZiAoaXNQYWludGluZykKLSAgICAgICAgZGF0YS5t
X3BhaW50ZXItPmVuZCgpOworICAgIFFSZWN0IGRlc3RSZWN0KGRlc3R4LCBkZXN0eSwgZW5keCAt
IGRlc3R4LCBlbmR5IC0gZGVzdHkpOwogCi0gICAgUUltYWdlIGltYWdlID0gZGF0YS5tX3BpeG1h
cC50b0ltYWdlKCk7Ci0gICAgaWYgKG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkKQotICAgICAg
ICBpbWFnZSA9IGltYWdlLmNvbnZlcnRUb0Zvcm1hdChRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOwot
ICAgIGVsc2UKLSAgICAgICAgaW1hZ2UgPSBpbWFnZS5jb252ZXJ0VG9Gb3JtYXQoUUltYWdlOjpG
b3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQpOworICAgIFFJbWFnZTo6Rm9ybWF0IGZvcm1hdCA9
IG11bHRpcGxpZWQgPT0gVW5tdWx0aXBsaWVkID8gUUltYWdlOjpGb3JtYXRfQVJHQjMyIDogUUlt
YWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQ7CisgICAgUUltYWdlIGltYWdlKGRlc3RS
ZWN0LnNpemUoKSwgZm9ybWF0KTsKIAogICAgIHVuc2lnbmVkIGNoYXIqIHNyY1Jvd3MgPSBzb3Vy
Y2UtPmRhdGEoKS0+ZGF0YSgpLT5kYXRhKCkgKyBvcmlnaW55ICogc3JjQnl0ZXNQZXJSb3cgKyBv
cmlnaW54ICogNDsKICAgICBmb3IgKGludCB5ID0gMDsgeSA8IG51bVJvd3M7ICsreSkgewotICAg
ICAgICBxdWludDMyKiBzY2FuTGluZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KGltYWdl
LnNjYW5MaW5lKHkgKyBkZXN0eSkpOworICAgICAgICBxdWludDMyKiBzY2FuTGluZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KGltYWdlLnNjYW5MaW5lKHkpKTsKICAgICAgICAgZm9yIChp
bnQgeCA9IDA7IHggPCBudW1Db2x1bW5zOyB4KyspIHsKICAgICAgICAgICAgIC8vIEltYWdlRGF0
YSBzdG9yZXMgdGhlIHBpeGVscyBpbiBSR0JBIHdoaWxlIFFJbWFnZSBpcyBBUkdCCiAgICAgICAg
ICAgICBxdWludDMyIHBpeGVsID0gcmVpbnRlcnByZXRfY2FzdDxxdWludDMyKj4oc3JjUm93cyAr
IDQgKiB4KVswXTsKICAgICAgICAgICAgIHBpeGVsID0gKChwaXhlbCA8PCAxNikgJiAweGZmMDAw
MCkgfCAoKHBpeGVsID4+IDE2KSAmIDB4ZmYpIHwgKHBpeGVsICYgMHhmZjAwZmYwMCk7Ci0gICAg
ICAgICAgICBzY2FuTGluZVt4ICsgZGVzdHhdID0gcGl4ZWw7CisgICAgICAgICAgICBzY2FuTGlu
ZVt4XSA9IHBpeGVsOwogICAgICAgICB9CiAKICAgICAgICAgc3JjUm93cyArPSBzcmNCeXRlc1Bl
clJvdzsKICAgICB9CiAKLSAgICBkYXRhLm1fcGl4bWFwID0gUVBpeG1hcDo6ZnJvbUltYWdlKGlt
YWdlKTsKLQotICAgIGlmIChpc1BhaW50aW5nKQorICAgIGJvb2wgaXNQYWludGluZyA9IGRhdGEu
bV9wYWludGVyLT5pc0FjdGl2ZSgpOworICAgIGlmICghaXNQYWludGluZykKICAgICAgICAgZGF0
YS5tX3BhaW50ZXItPmJlZ2luKCZkYXRhLm1fcGl4bWFwKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
ZGF0YS5tX3BhaW50ZXItPnNhdmUoKTsKKworICAgICAgICAvLyBwdXRJbWFnZURhdGEoKSBzaG91
bGQgYmUgdW5hZmZlY3RlZCBieSBwYWludGVyIHN0YXRlCisgICAgICAgIGRhdGEubV9wYWludGVy
LT5yZXNldFRyYW5zZm9ybSgpOworICAgICAgICBkYXRhLm1fcGFpbnRlci0+c2V0T3BhY2l0eSgx
LjApOworICAgICAgICBkYXRhLm1fcGFpbnRlci0+c2V0Q2xpcHBpbmcoZmFsc2UpOworICAgIH0K
KworICAgIGRhdGEubV9wYWludGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBv
c2l0aW9uTW9kZV9Tb3VyY2UpOworICAgIGRhdGEubV9wYWludGVyLT5kcmF3SW1hZ2UoZGVzdFJl
Y3QsIGltYWdlKTsKKworICAgIGlmICghaXNQYWludGluZykKKyAgICAgICAgZGF0YS5tX3BhaW50
ZXItPmVuZCgpOworICAgIGVsc2UKKyAgICAgICAgZGF0YS5tX3BhaW50ZXItPnJlc3RvcmUoKTsK
IH0KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6cHV0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEltYWdlRGF0
YSogc291cmNlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVz
dFBvaW50KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>