<?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>81593</bug_id>
          
          <creation_ts>2012-03-19 16:50:01 -0700</creation_ts>
          <short_desc>Merge nextRootInlineBox with nextLinePosition</short_desc>
          <delta_ts>2012-05-19 02:42:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          
          <blocked>81490</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cshu</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xji</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>582456</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-19 16:50:01 -0700</bug_when>
    <thetext>Merge nextRootInlineBox with nextLinePosition</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582467</commentid>
    <comment_count>1</comment_count>
      <attachid>132721</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-19 16:55:02 -0700</bug_when>
    <thetext>Created attachment 132721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582497</commentid>
    <comment_count>2</comment_count>
      <attachid>132721</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-19 17:19:02 -0700</bug_when>
    <thetext>Comment on attachment 132721
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=132721&amp;action=review

&gt; Source/WebCore/ChangeLog:9
&gt; +        Refactroed nextLinePosition and previousLinePosition to use nextRootInlineBox and previousRootInlineBox.
&gt; +

Can you give me a bit more high-level overview of what&apos;s going on here? What did these fucntions used to do?  Why are we merging them, etc...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582503</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-19 17:25:03 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 132721 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132721&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        Refactroed nextLinePosition and previousLinePosition to use nextRootInlineBox and previousRootInlineBox.
&gt; &gt; +
&gt; 
&gt; Can you give me a bit more high-level overview of what&apos;s going on here? What did these fucntions used to do?  Why are we merging them, etc...

nextRootInlineBox and previousRootInlineBox look for previous or next root inline boxes across renderers, and nextLinePosition and previousLinePosition had duplicated code in them.

I had asked xji (who recently added nextRootInlineBox and previousRootInlineBox) to refactor them later but it turned out that I needed this refactoring in order to fix the bug 81490.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582732</commentid>
    <comment_count>4</comment_count>
      <attachid>132721</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-19 21:35:01 -0700</bug_when>
    <thetext>Comment on attachment 132721
Patch

Attachment 132721 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12000071

New failing tests:
editing/selection/3690703-2.html
editing/selection/3690703.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583433</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-20 14:08:26 -0700</bug_when>
    <thetext>Odd. This failure doesn&apos;t reproduce on Windows port either :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583449</commentid>
    <comment_count>6</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-20 14:23:56 -0700</bug_when>
    <thetext>Diffs from chromium-linux:

--- /src/chrome/src/webkit/Release/layout-test-results/editing/selection/3690703-2-expected.txt 
+++ /src/chrome/src/webkit/Release/layout-test-results/editing/selection/3690703-2-actual.txt 
@@ -147,5 +147,5 @@
           RenderInline {FONT} at (0,0) size 60x12
             RenderText {#text} at (362,0) size 60x12
               text run at (362,0) width 60: &quot;\x{A9}2005 Google&quot;
-selection start: position 0 of child 3 {INPUT} of child 1 {TD} of child 0 {TR} of child 0 {TBODY} of child 2 {TABLE} of child 4 {DIV} of child 0 {CENTER} of body
-selection end:   position 1 of child 2 {BR} of child 0 {FONT} of child 2 {TD} of child 0 {TR} of child 0 {TBODY} of child 2 {TABLE} of child 4 {DIV} of child 0 {CENTER} of body
+selection start: position 0 of child 0 {#text} of child 0 {FONT} of child 2 {TD} of child 0 {TR} of child 0 {TBODY} of child 2 {TABLE} of child 4 {DIV} of child 0 {CENTER} of body
+selection end:   position 1 of child 5 {BR} of child 0 {FONT} of child 2 {TD} of child 0 {TR} of child 0 {TBODY} of child 2 {TABLE} of child 4 {DIV} of child 0 {CENTER} of body

--- /src/chrome/src/webkit/Release/layout-test-results/editing/selection/3690703-expected.txt 
+++ /src/chrome/src/webkit/Release/layout-test-results/editing/selection/3690703-actual.txt 
@@ -1,6 +1,5 @@
 EDITING DELEGATE: shouldBeginEditingInDOMRange:range from 0 of DIV &gt; CENTER &gt; BODY &gt; HTML &gt; #document to 6 of DIV &gt; CENTER &gt; BODY &gt; HTML &gt; #document
 EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification
-EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification
 EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583468</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-20 14:37:07 -0700</bug_when>
    <thetext>I don&apos;t quite understand what&apos;s causing the failure. As far as I know, there should be no difference between Mac and Chromium Linux when moving or extending selection via Selection.modify.

Unfortunately, it seems intractable to debug this regression without access to cr-linux, so I&apos;ll give up on this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623757</commentid>
    <comment_count>8</comment_count>
      <attachid>141880</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-15 00:46:54 -0700</bug_when>
    <thetext>Created attachment 141880
Less intrusive patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623759</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-15 00:47:28 -0700</bug_when>
    <thetext>Xiaomei must have cleaned up the code there since this patch was much easier to write.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623789</commentid>
    <comment_count>10</comment_count>
      <attachid>141880</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-15 01:24:17 -0700</bug_when>
    <thetext>Comment on attachment 141880
Less intrusive patch

Ugh... that&apos;s because I didn&apos;t complete the second half.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623839</commentid>
    <comment_count>11</comment_count>
      <attachid>141901</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-15 02:38:22 -0700</bug_when>
    <thetext>Created attachment 141901
Deleted more code but considerably more complicated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625841</commentid>
    <comment_count>12</comment_count>
      <attachid>141901</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2012-05-16 14:02:35 -0700</bug_when>
    <thetext>Comment on attachment 141901
Deleted more code but considerably more complicated patch

View in context: https://bugs.webkit.org/attachment.cgi?id=141901&amp;action=review

The change looks good.

&gt; Source/WebCore/ChangeLog:9
&gt; +        to share the code. Moved out the nullity check of startBox and extraction of the renderer&apos;s node from

should be: &quot;and extracted the renderer&apos;s node...&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>625981</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-05-16 16:23:39 -0700</bug_when>
    <thetext>Committed r117359: &lt;http://trac.webkit.org/changeset/117359&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132721</attachid>
            <date>2012-03-19 16:55:02 -0700</date>
            <delta_ts>2012-04-19 16:36:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81593-20120319165501.patch</filename>
            <type>text/plain</type>
            <size>14635</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTI3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAzLTE5ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1lcmdlIG5leHRSb290SW5saW5l
Qm94IHdpdGggbmV4dExpbmVQb3NpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODE1OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZWZhY3Ryb2VkIG5leHRMaW5lUG9zaXRpb24gYW5kIHByZXZpb3Vz
TGluZVBvc2l0aW9uIHRvIHVzZSBuZXh0Um9vdElubGluZUJveCBhbmQgcHJldmlvdXNSb290SW5s
aW5lQm94LgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGVkaXRpbmcvdmlzaWJsZV91bml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OnByZXZpb3VzUm9vdElubGluZUJveCk6CisgICAgICAgIChXZWJD
b3JlOjpuZXh0Um9vdElubGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpsb2dpY2FsbHlQcmV2
aW91c0JveCk6CisgICAgICAgIChXZWJDb3JlOjpsb2dpY2FsbHlOZXh0Qm94KToKKyAgICAgICAg
KFdlYkNvcmU6OmFic29sdXRlTGluZURpcmVjdGlvblBvaW50VG9Mb2NhbFBvaW50SW5CbG9jayk6
CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c0xpbmVQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpuZXh0TGluZVBvc2l0aW9uKToKKwogMjAxMi0wMy0xOSAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBXaW5kb3dzIGJ1aWxkLgpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCShyZXZpc2lvbiAxMTExOTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MCwyMCArNzAsNiBAQCBzdGF0aWMgTm9kZSogZW5jbG9zaW5nTm9kZVdpdGhOb25J
bmxpbmVSCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBOb2RlKiBuZXh0TGVhZldpdGhTYW1l
RWRpdGFiaWxpdHkoTm9kZSogbm9kZSwgaW50IG9mZnNldCkKLXsKLSAgICBib29sIGVkaXRhYmxl
ID0gbm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKCk7Ci0gICAgQVNTRVJUKG9mZnNldCA+PSAwKTsK
LSAgICBOb2RlKiBjaGlsZCA9IG5vZGUtPmNoaWxkTm9kZShvZmZzZXQpOwotICAgIG5vZGUgPSBj
aGlsZCA/IGNoaWxkLT5uZXh0TGVhZk5vZGUoKSA6IG5vZGUtPmxhc3REZXNjZW5kYW50KCktPm5l
eHRMZWFmTm9kZSgpOwotICAgIHdoaWxlIChub2RlKSB7Ci0gICAgICAgIGlmIChlZGl0YWJsZSA9
PSBub2RlLT5yZW5kZXJlcklzRWRpdGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybiBub2RlOwot
ICAgICAgICBub2RlID0gbm9kZS0+bmV4dExlYWZOb2RlKCk7Ci0gICAgfQotICAgIHJldHVybiAw
OwotfQotCiBzdGF0aWMgTm9kZSogbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KE5vZGUqIG5v
ZGUsIEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUgPSBDb250ZW50SXNFZGl0YWJsZSkKIHsKICAg
ICBpZiAoIW5vZGUpCkBAIC05OSwxOSArODUsMTggQEAgc3RhdGljIE5vZGUqIG5leHRMZWFmV2l0
aFNhbWVFZGl0YWJpbGl0eQogICAgIHJldHVybiAwOwogfQogCi0vLyBGSVhNRTogY29uc29saWRh
dGUgd2l0aCBjb2RlIGluIHByZXZpb3VzTGluZVBvc2l0aW9uLgotc3RhdGljIGNvbnN0IFJvb3RJ
bmxpbmVCb3gqIHByZXZpb3VzUm9vdElubGluZUJveChjb25zdCBJbmxpbmVCb3gqIGJveCwgY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCitzdGF0aWMgY29uc3QgUm9vdElu
bGluZUJveCogcHJldmlvdXNSb290SW5saW5lQm94KE5vZGUqIG5vZGUsIGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLAorICAgIEVkaXRhYmxlVHlwZSBlZGl0YWJsZVR5cGUs
IFBvc2l0aW9uJiBwb3NpdGlvbkluTmV4dExpbmVXaXRob3V0Um9vdEJveCkKIHsKICAgICBOb2Rl
KiBoaWdoZXN0Um9vdCA9IGhpZ2hlc3RFZGl0YWJsZVJvb3QodmlzaWJsZVBvc2l0aW9uLmRlZXBF
cXVpdmFsZW50KCksIENvbnRlbnRJc0VkaXRhYmxlKTsKLSAgICBOb2RlKiBub2RlID0gYm94LT5y
ZW5kZXJlcigpLT5ub2RlKCk7Ci0gICAgTm9kZSogZW5jbG9zaW5nQmxvY2tOb2RlID0gZW5jbG9z
aW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihub2RlKTsKLSAgICBOb2RlKiBwcmV2aW91c05v
ZGUgPSBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5vZGUsIENvbnRlbnRJc0VkaXRh
YmxlKTsKIAorICAgIE5vZGUqIGVuY2xvc2luZ0Jsb2NrTm9kZSA9IGVuY2xvc2luZ05vZGVXaXRo
Tm9uSW5saW5lUmVuZGVyZXIobm9kZSk7CisgICAgTm9kZSogcHJldmlvdXNOb2RlID0gcHJldmlv
dXNMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShub2RlLCBlZGl0YWJsZVR5cGUpOwogICAgIHdoaWxl
IChwcmV2aW91c05vZGUgJiYgZW5jbG9zaW5nQmxvY2tOb2RlID09IGVuY2xvc2luZ05vZGVXaXRo
Tm9uSW5saW5lUmVuZGVyZXIocHJldmlvdXNOb2RlKSkKLSAgICAgICAgcHJldmlvdXNOb2RlID0g
cHJldmlvdXNMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShwcmV2aW91c05vZGUsIENvbnRlbnRJc0Vk
aXRhYmxlKTsKKyAgICAgICAgcHJldmlvdXNOb2RlID0gcHJldmlvdXNMZWFmV2l0aFNhbWVFZGl0
YWJpbGl0eShwcmV2aW91c05vZGUsIGVkaXRhYmxlVHlwZSk7CiAgIAogICAgIHdoaWxlIChwcmV2
aW91c05vZGUgJiYgIXByZXZpb3VzTm9kZS0+aXNTaGFkb3dSb290KCkpIHsKLSAgICAgICAgaWYg
KGhpZ2hlc3RFZGl0YWJsZVJvb3QoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHByZXZpb3Vz
Tm9kZSksIENvbnRlbnRJc0VkaXRhYmxlKSAhPSBoaWdoZXN0Um9vdCkKKyAgICAgICAgaWYgKGhp
Z2hlc3RFZGl0YWJsZVJvb3QoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHByZXZpb3VzTm9k
ZSksIGVkaXRhYmxlVHlwZSkgIT0gaGlnaGVzdFJvb3QpCiAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICBQb3NpdGlvbiBwb3MgPSBwcmV2aW91c05vZGUtPmhhc1RhZ05hbWUoYnJUYWcpID8g
cG9zaXRpb25CZWZvcmVOb2RlKHByZXZpb3VzTm9kZSkgOgpAQCAtMTIyLDI0ICsxMDcsMjcgQEAg
c3RhdGljIGNvbnN0IFJvb3RJbmxpbmVCb3gqIHByZXZpb3VzUm9vdAogICAgICAgICAgICAgUm9v
dElubGluZUJveCogcm9vdCA9IHJlbmRlcmVkUG9zLnJvb3RCb3goKTsKICAgICAgICAgICAgIGlm
IChyb290KQogICAgICAgICAgICAgICAgIHJldHVybiByb290OworICAgICAgICAgICAgcG9zaXRp
b25Jbk5leHRMaW5lV2l0aG91dFJvb3RCb3ggPSBwb3M7CisgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICAgICAgfQogCi0gICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTGVhZldpdGhTYW1l
RWRpdGFiaWxpdHkocHJldmlvdXNOb2RlLCBDb250ZW50SXNFZGl0YWJsZSk7CisgICAgICAgIHBy
ZXZpb3VzTm9kZSA9IHByZXZpb3VzTGVhZldpdGhTYW1lRWRpdGFiaWxpdHkocHJldmlvdXNOb2Rl
LCBlZGl0YWJsZVR5cGUpOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGNvbnN0
IFJvb3RJbmxpbmVCb3gqIG5leHRSb290SW5saW5lQm94KGNvbnN0IElubGluZUJveCogYm94LCBj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikKK3N0YXRpYyBjb25zdCBSb290
SW5saW5lQm94KiBuZXh0Um9vdElubGluZUJveChOb2RlKiBub2RlLCBjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHZpc2libGVQb3NpdGlvbiwKKyAgICBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlLCBQ
b3NpdGlvbiYgcG9zaXRpb25Jbk5leHRMaW5lV2l0aG91dFJvb3RCb3gpCiB7Ci0gICAgTm9kZSog
aGlnaGVzdFJvb3QgPSBoaWdoZXN0RWRpdGFibGVSb290KHZpc2libGVQb3NpdGlvbi5kZWVwRXF1
aXZhbGVudCgpLCBDb250ZW50SXNFZGl0YWJsZSk7Ci0gICAgTm9kZSogbm9kZSA9IGJveC0+cmVu
ZGVyZXIoKS0+bm9kZSgpOworICAgIE5vZGUqIGhpZ2hlc3RSb290ID0gaGlnaGVzdEVkaXRhYmxl
Um9vdCh2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSwgZWRpdGFibGVUeXBlKTsKKwog
ICAgIE5vZGUqIGVuY2xvc2luZ0Jsb2NrTm9kZSA9IGVuY2xvc2luZ05vZGVXaXRoTm9uSW5saW5l
UmVuZGVyZXIobm9kZSk7Ci0gICAgTm9kZSogbmV4dE5vZGUgPSBuZXh0TGVhZldpdGhTYW1lRWRp
dGFiaWxpdHkobm9kZSwgQ29udGVudElzRWRpdGFibGUpOworICAgIE5vZGUqIG5leHROb2RlID0g
bmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5vZGUsIGVkaXRhYmxlVHlwZSk7CiAgICAgd2hp
bGUgKG5leHROb2RlICYmIGVuY2xvc2luZ0Jsb2NrTm9kZSA9PSBlbmNsb3NpbmdOb2RlV2l0aE5v
bklubGluZVJlbmRlcmVyKG5leHROb2RlKSkKLSAgICAgICAgbmV4dE5vZGUgPSBuZXh0TGVhZldp
dGhTYW1lRWRpdGFiaWxpdHkobmV4dE5vZGUsIENvbnRlbnRJc0VkaXRhYmxlKTsKKyAgICAgICAg
bmV4dE5vZGUgPSBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkobmV4dE5vZGUsIGVkaXRhYmxl
VHlwZSk7CiAgIAogICAgIHdoaWxlIChuZXh0Tm9kZSAmJiAhbmV4dE5vZGUtPmlzU2hhZG93Um9v
dCgpKSB7Ci0gICAgICAgIGlmIChoaWdoZXN0RWRpdGFibGVSb290KGZpcnN0UG9zaXRpb25Jbk9y
QmVmb3JlTm9kZShuZXh0Tm9kZSksIENvbnRlbnRJc0VkaXRhYmxlKSAhPSBoaWdoZXN0Um9vdCkK
KyAgICAgICAgaWYgKGhpZ2hlc3RFZGl0YWJsZVJvb3QoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVO
b2RlKG5leHROb2RlKSwgZWRpdGFibGVUeXBlKSAhPSBoaWdoZXN0Um9vdCkKICAgICAgICAgICAg
IGJyZWFrOwogCiAgICAgICAgIFBvc2l0aW9uIHBvczsKQEAgLTE1MCw5ICsxMzgsMTEgQEAgc3Rh
dGljIGNvbnN0IFJvb3RJbmxpbmVCb3gqIG5leHRSb290SW5saQogICAgICAgICAgICAgUm9vdElu
bGluZUJveCogcm9vdCA9IHJlbmRlcmVkUG9zLnJvb3RCb3goKTsKICAgICAgICAgICAgIGlmIChy
b290KQogICAgICAgICAgICAgICAgIHJldHVybiByb290OworICAgICAgICAgICAgcG9zaXRpb25J
bk5leHRMaW5lV2l0aG91dFJvb3RCb3ggPSBwb3M7CisgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgfQogCi0gICAgICAgIG5leHROb2RlID0gbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5
KG5leHROb2RlLCBDb250ZW50SXNFZGl0YWJsZSk7CisgICAgICAgIG5leHROb2RlID0gbmV4dExl
YWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5leHROb2RlLCBlZGl0YWJsZVR5cGUpOwogICAgIH0KICAg
ICByZXR1cm4gMDsKIH0KQEAgLTIwMCw4ICsxOTAsOSBAQCBzdGF0aWMgY29uc3QgSW5saW5lVGV4
dEJveCogbG9naWNhbGx5UHJlCiAgICAgaWYgKHByZXZpb3VzQm94KQogICAgICAgICByZXR1cm4g
cHJldmlvdXNCb3g7CiAKLSAgICB3aGlsZSAoMSkgeyAKLSAgICAgICAgY29uc3QgUm9vdElubGlu
ZUJveCogcHJldmlvdXNSb290ID0gcHJldmlvdXNSb290SW5saW5lQm94KHN0YXJ0Qm94LCB2aXNp
YmxlUG9zaXRpb24pOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIFBvc2l0aW9uIHVudXNlZDsK
KyAgICAgICAgY29uc3QgUm9vdElubGluZUJveCogcHJldmlvdXNSb290ID0gcHJldmlvdXNSb290
SW5saW5lQm94KHN0YXJ0Qm94LT5yZW5kZXJlcigpLT5ub2RlKCksIHZpc2libGVQb3NpdGlvbiwg
Q29udGVudElzRWRpdGFibGUsIHVudXNlZCk7CiAgICAgICAgIGlmICghcHJldmlvdXNSb290KQog
ICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTI1Myw4ICsyNDQsOSBAQCBzdGF0aWMgY29uc3QgSW5s
aW5lVGV4dEJveCogbG9naWNhbGx5TmV4CiAgICAgaWYgKG5leHRCb3gpCiAgICAgICAgIHJldHVy
biBuZXh0Qm94OwogCi0gICAgd2hpbGUgKDEpIHsgCi0gICAgICAgIGNvbnN0IFJvb3RJbmxpbmVC
b3gqIG5leHRSb290ID0gbmV4dFJvb3RJbmxpbmVCb3goc3RhcnRCb3gsIHZpc2libGVQb3NpdGlv
bik7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgUG9zaXRpb24gdW51c2VkOworICAgICAgICBj
b25zdCBSb290SW5saW5lQm94KiBuZXh0Um9vdCA9IG5leHRSb290SW5saW5lQm94KHN0YXJ0Qm94
LT5yZW5kZXJlcigpLT5ub2RlKCksIHZpc2libGVQb3NpdGlvbiwgQ29udGVudElzRWRpdGFibGUs
IHVudXNlZCk7CiAgICAgICAgIGlmICghbmV4dFJvb3QpCiAgICAgICAgICAgICBicmVhazsKIApA
QCAtODg2LDcgKzg3OCw3IEBAIGJvb2wgaXNFbmRPZkxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9u
ICYKICAgICByZXR1cm4gcC5pc05vdE51bGwoKSAmJiBwID09IGVuZE9mTGluZShwKTsKIH0KIAot
c3RhdGljIGlubGluZSBJbnRQb2ludCBhYnNvbHV0ZUxpbmVEaXJlY3Rpb25Qb2ludFRvTG9jYWxQ
b2ludEluQmxvY2soUm9vdElubGluZUJveCogcm9vdCwgaW50IGxpbmVEaXJlY3Rpb25Qb2ludCkK
K3N0YXRpYyBpbmxpbmUgSW50UG9pbnQgYWJzb2x1dGVMaW5lRGlyZWN0aW9uUG9pbnRUb0xvY2Fs
UG9pbnRJbkJsb2NrKGNvbnN0IFJvb3RJbmxpbmVCb3gqIHJvb3QsIGludCBsaW5lRGlyZWN0aW9u
UG9pbnQpCiB7CiAgICAgQVNTRVJUKHJvb3QpOwogICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5n
QmxvY2sgPSByb290LT5ibG9jaygpOwpAQCAtOTAzLDE5ICs4OTUsMTIgQEAgc3RhdGljIGlubGlu
ZSBJbnRQb2ludCBhYnNvbHV0ZUxpbmVEaXJlYwogVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzTGlu
ZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmdmlzaWJsZVBvc2l0aW9uLCBpbnQgbGlu
ZURpcmVjdGlvblBvaW50LCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlKQogewogICAgIFBvc2l0
aW9uIHAgPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKLSAgICBOb2RlKiBub2Rl
ID0gcC5kZXByZWNhdGVkTm9kZSgpOwotICAgIE5vZGUqIGhpZ2hlc3RSb290ID0gaGlnaGVzdEVk
aXRhYmxlUm9vdChwLCBlZGl0YWJsZVR5cGUpOwotCi0gICAgaWYgKCFub2RlKQorICAgIGlmIChw
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiAgICAgCi0gICAg
bm9kZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7
Ci0gICAgCi0gICAgUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0g
ICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOworICAg
IHAuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAK
LSAgICBSb290SW5saW5lQm94ICpyb290ID0gMDsKKyAgICBjb25zdCBSb290SW5saW5lQm94KiBy
b290ID0gMDsKICAgICBJbmxpbmVCb3gqIGJveDsKICAgICBpbnQgaWdub3JlZENhcmV0T2Zmc2V0
OwogICAgIHZpc2libGVQb3NpdGlvbi5nZXRJbmxpbmVCb3hBbmRPZmZzZXQoYm94LCBpZ25vcmVk
Q2FyZXRPZmZzZXQpOwpAQCAtOTI4LDM1ICs5MTMsMTkgQEAgVmlzaWJsZVBvc2l0aW9uIHByZXZp
b3VzTGluZVBvc2l0aW9uKGNvbgogICAgIH0KIAogICAgIGlmICghcm9vdCkgewotICAgICAgICAv
LyBUaGlzIGNvbnRhaW5pbmcgZWRpdGFibGUgYmxvY2sgZG9lcyBub3QgaGF2ZSBhIHByZXZpb3Vz
IGxpbmUuCi0gICAgICAgIC8vIE5lZWQgdG8gbW92ZSBiYWNrIHRvIHByZXZpb3VzIGNvbnRhaW5p
bmcgZWRpdGFibGUgYmxvY2sgaW4gdGhpcyByb290IGVkaXRhYmxlCi0gICAgICAgIC8vIGJsb2Nr
IGFuZCBmaW5kIHRoZSBsYXN0IHJvb3QgbGluZSBib3ggaW4gdGhhdCBibG9jay4KLSAgICAgICAg
Tm9kZSogc3RhcnRCbG9jayA9IGVuY2xvc2luZ05vZGVXaXRoTm9uSW5saW5lUmVuZGVyZXIobm9k
ZSk7Ci0gICAgICAgIE5vZGUqIG4gPSBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5v
ZGUsIGVkaXRhYmxlVHlwZSk7Ci0gICAgICAgIHdoaWxlIChuICYmIHN0YXJ0QmxvY2sgPT0gZW5j
bG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihuKSkKLSAgICAgICAgICAgIG4gPSBwcmV2
aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG4sIGVkaXRhYmxlVHlwZSk7Ci0gICAgICAgIHdo
aWxlIChuKSB7Ci0gICAgICAgICAgICBpZiAoaGlnaGVzdEVkaXRhYmxlUm9vdChmaXJzdFBvc2l0
aW9uSW5PckJlZm9yZU5vZGUobiksIGVkaXRhYmxlVHlwZSkgIT0gaGlnaGVzdFJvb3QpCi0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBQb3NpdGlvbiBwb3MgPSBuLT5oYXNUYWdO
YW1lKGJyVGFnKSA/IHBvc2l0aW9uQmVmb3JlTm9kZShuKSA6IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihuLCBjYXJldE1heE9mZnNldChuKSk7Ci0gICAgICAgICAgICBpZiAocG9zLmlzQ2Fu
ZGlkYXRlKCkpIHsKLSAgICAgICAgICAgICAgICBwb3MuZ2V0SW5saW5lQm94QW5kT2Zmc2V0KERP
V05TVFJFQU0sIGJveCwgaWdub3JlZENhcmV0T2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBpZiAo
Ym94KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzIHJvb3QgbGluZSBib3ggZm91
bmQKLSAgICAgICAgICAgICAgICAgICAgcm9vdCA9IGJveC0+cm9vdCgpOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKHBvcywgRE9XTlNUUkVBTSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBuID0gcHJldmlvdXNMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShuLCBlZGl0YWJsZVR5
cGUpOwotICAgICAgICB9CisgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uV2l0aG91dFJvb3RCb3g7
CisgICAgICAgIE5vZGUqIG5vZGUgPSBwLmRlcHJlY2F0ZWROb2RlKCk7CisgICAgICAgIGlmICgh
aXNBdG9taWNOb2RlKG5vZGUpKQorICAgICAgICAgICAgbm9kZSA9IG5vZGUtPnByZXZpb3VzTGVh
Zk5vZGUoKTsKKyAgICAgICAgcm9vdCA9IHByZXZpb3VzUm9vdElubGluZUJveChub2RlLCB2aXNp
YmxlUG9zaXRpb24sIGVkaXRhYmxlVHlwZSwgcG9zaXRpb25XaXRob3V0Um9vdEJveCk7CisgICAg
ICAgIGlmICghcm9vdCAmJiBwb3NpdGlvbldpdGhvdXRSb290Qm94LmlzTm90TnVsbCgpKQorICAg
ICAgICAgICAgcmV0dXJuIHBvc2l0aW9uV2l0aG91dFJvb3RCb3g7CiAgICAgfQotICAgIAorCiAg
ICAgaWYgKHJvb3QpIHsKICAgICAgICAgLy8gRklYTUU6IENhbiBiZSB3cm9uZyBmb3IgbXVsdGkt
Y29sdW1uIGxheW91dCBhbmQgd2l0aCB0cmFuc2Zvcm1zLgogICAgICAgICBJbnRQb2ludCBwb2lu
dEluTGluZSA9IGFic29sdXRlTGluZURpcmVjdGlvblBvaW50VG9Mb2NhbFBvaW50SW5CbG9jayhy
b290LCBsaW5lRGlyZWN0aW9uUG9pbnQpOwotICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gcm9vdC0+Y2xvc2VzdExlYWZDaGlsZEZvclBvaW50KHBvaW50SW5MaW5lLCBpc0VkaXRhYmxl
UG9zaXRpb24ocCkpLT5yZW5kZXJlcigpOworICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gY29uc3RfY2FzdDxSb290SW5saW5lQm94Kj4ocm9vdCktPmNsb3Nlc3RMZWFmQ2hpbGRGb3JQ
b2ludChwb2ludEluTGluZSwgaXNFZGl0YWJsZVBvc2l0aW9uKHApKS0+cmVuZGVyZXIoKTsKICAg
ICAgICAgTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub2RlKCk7CiAgICAgICAgIGlmIChub2RlICYm
IGVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKSkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bkluUGFyZW50QmVmb3JlTm9kZShub2RlKTsKQEAgLTk2NiwyOSArOTM1LDIyIEBAIFZpc2libGVQ
b3NpdGlvbiBwcmV2aW91c0xpbmVQb3NpdGlvbihjb24KICAgICAvLyBDb3VsZCBub3QgZmluZCBh
IHByZXZpb3VzIGxpbmUuIFRoaXMgbWVhbnMgd2UgbXVzdCBhbHJlYWR5IGJlIG9uIHRoZSBmaXJz
dCBsaW5lLgogICAgIC8vIE1vdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb250ZW50IGluIHRoaXMg
YmxvY2ssIHdoaWNoIGVmZmVjdGl2ZWx5IG1vdmVzIHVzCiAgICAgLy8gdG8gdGhlIHN0YXJ0IG9m
IHRoZSBsaW5lIHdlJ3JlIG9uLgotICAgIEVsZW1lbnQqIHJvb3RFbGVtZW50ID0gbm9kZS0+cmVu
ZGVyZXJJc0VkaXRhYmxlKGVkaXRhYmxlVHlwZSkgPyBub2RlLT5yb290RWRpdGFibGVFbGVtZW50
KGVkaXRhYmxlVHlwZSkgOiBub2RlLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKKyAg
ICBFbGVtZW50KiByb290RWxlbWVudCA9IHAuY29udGFpbmVyTm9kZSgpLT5yZW5kZXJlcklzRWRp
dGFibGUoZWRpdGFibGVUeXBlKSA/CisgICAgICAgIHAuY29udGFpbmVyTm9kZSgpLT5yb290RWRp
dGFibGVFbGVtZW50KGVkaXRhYmxlVHlwZSkgOiBwLmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVu
dCgpOwogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRp
b24oKTsKICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk5vZGUocm9v
dEVsZW1lbnQpLCBET1dOU1RSRUFNKTsKIH0KIAotCiBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVQ
b3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24gJnZpc2libGVQb3NpdGlvbiwgaW50IGxpbmVE
aXJlY3Rpb25Qb2ludCwgRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSkKIHsKICAgICBQb3NpdGlv
biBwID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgTm9kZSogbm9kZSA9
IHAuZGVwcmVjYXRlZE5vZGUoKTsKLSAgICBOb2RlKiBoaWdoZXN0Um9vdCA9IGhpZ2hlc3RFZGl0
YWJsZVJvb3QocCwgZWRpdGFibGVUeXBlKTsKLQotICAgIGlmICghbm9kZSkKKyAgICBpZiAocC5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotICAgIAotICAgIG5v
ZGUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwog
Ci0gICAgUmVuZGVyT2JqZWN0ICpyZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYg
KCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOworICAgIHAuZG9j
dW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKLSAgICBS
b290SW5saW5lQm94ICpyb290ID0gMDsKKyAgICBjb25zdCBSb290SW5saW5lQm94KiByb290ID0g
MDsKICAgICBJbmxpbmVCb3gqIGJveDsKICAgICBpbnQgaWdub3JlZENhcmV0T2Zmc2V0OwogICAg
IHZpc2libGVQb3NpdGlvbi5nZXRJbmxpbmVCb3hBbmRPZmZzZXQoYm94LCBpZ25vcmVkQ2FyZXRP
ZmZzZXQpOwpAQCAtMTAwMSwzNiArOTYzLDE5IEBAIFZpc2libGVQb3NpdGlvbiBuZXh0TGluZVBv
c2l0aW9uKGNvbnN0IFYKICAgICB9CiAKICAgICBpZiAoIXJvb3QpIHsKLSAgICAgICAgLy8gVGhp
cyBjb250YWluaW5nIGVkaXRhYmxlIGJsb2NrIGRvZXMgbm90IGhhdmUgYSBuZXh0IGxpbmUuCi0g
ICAgICAgIC8vIE5lZWQgdG8gbW92ZSBmb3J3YXJkIHRvIG5leHQgY29udGFpbmluZyBlZGl0YWJs
ZSBibG9jayBpbiB0aGlzIHJvb3QgZWRpdGFibGUKLSAgICAgICAgLy8gYmxvY2sgYW5kIGZpbmQg
dGhlIGZpcnN0IHJvb3QgbGluZSBib3ggaW4gdGhhdCBibG9jay4KLSAgICAgICAgTm9kZSogc3Rh
cnRCbG9jayA9IGVuY2xvc2luZ05vZGVXaXRoTm9uSW5saW5lUmVuZGVyZXIobm9kZSk7Ci0gICAg
ICAgIE5vZGUqIG4gPSBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkobm9kZSwgcC5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpKTsKLSAgICAgICAgd2hpbGUgKG4gJiYgc3RhcnRCbG9jayA9PSBl
bmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKG4pKQotICAgICAgICAgICAgbiA9IG5l
eHRMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShuLCBlZGl0YWJsZVR5cGUpOwotICAgICAgICB3aGls
ZSAobikgewotICAgICAgICAgICAgaWYgKGhpZ2hlc3RFZGl0YWJsZVJvb3QoZmlyc3RQb3NpdGlv
bkluT3JCZWZvcmVOb2RlKG4pLCBlZGl0YWJsZVR5cGUpICE9IGhpZ2hlc3RSb290KQotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgUG9zaXRpb24gcG9zID0gY3JlYXRlTGVnYWN5
RWRpdGluZ1Bvc2l0aW9uKG4sIGNhcmV0TWluT2Zmc2V0KG4pKTsKLSAgICAgICAgICAgIGlmIChw
b3MuaXNDYW5kaWRhdGUoKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVChuLT5yZW5kZXJlcigp
KTsKLSAgICAgICAgICAgICAgICBwb3MuZ2V0SW5saW5lQm94QW5kT2Zmc2V0KERPV05TVFJFQU0s
IGJveCwgaWdub3JlZENhcmV0T2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBpZiAoYm94KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIC8vIG5leHQgcm9vdCBsaW5lIGJveCBmb3VuZAotICAgICAgICAg
ICAgICAgICAgICByb290ID0gYm94LT5yb290KCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9z
aXRpb24ocG9zLCBET1dOU1RSRUFNKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG4gPSBu
ZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkobiwgZWRpdGFibGVUeXBlKTsKLSAgICAgICAgfQor
ICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbldpdGhvdXRSb290Qm94OworICAgICAgICBOb2RlKiBu
b2RlID0gcC5kZXByZWNhdGVkTm9kZSgpOworICAgICAgICBpZiAoIWlzQXRvbWljTm9kZShub2Rl
KSkKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLT5uZXh0TGVhZk5vZGUoKTsKKyAgICAgICAgcm9v
dCA9IG5leHRSb290SW5saW5lQm94KG5vZGUsIHZpc2libGVQb3NpdGlvbiwgZWRpdGFibGVUeXBl
LCBwb3NpdGlvbldpdGhvdXRSb290Qm94KTsKKyAgICAgICAgaWYgKCFyb290ICYmIHBvc2l0aW9u
V2l0aG91dFJvb3RCb3guaXNOb3ROdWxsKCkpCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb25X
aXRob3V0Um9vdEJveDsKICAgICB9CiAgICAgCiAgICAgaWYgKHJvb3QpIHsKICAgICAgICAgLy8g
RklYTUU6IENhbiBiZSB3cm9uZyBmb3IgbXVsdGktY29sdW1uIGxheW91dCBhbmQgd2l0aCB0cmFu
c2Zvcm1zLgogICAgICAgICBJbnRQb2ludCBwb2ludEluTGluZSA9IGFic29sdXRlTGluZURpcmVj
dGlvblBvaW50VG9Mb2NhbFBvaW50SW5CbG9jayhyb290LCBsaW5lRGlyZWN0aW9uUG9pbnQpOwot
ICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gcm9vdC0+Y2xvc2VzdExlYWZDaGlsZEZv
clBvaW50KHBvaW50SW5MaW5lLCBpc0VkaXRhYmxlUG9zaXRpb24ocCkpLT5yZW5kZXJlcigpOwor
ICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29uc3RfY2FzdDxSb290SW5saW5lQm94
Kj4ocm9vdCktPmNsb3Nlc3RMZWFmQ2hpbGRGb3JQb2ludChwb2ludEluTGluZSwgaXNFZGl0YWJs
ZVBvc2l0aW9uKHApKS0+cmVuZGVyZXIoKTsKICAgICAgICAgTm9kZSogbm9kZSA9IHJlbmRlcmVy
LT5ub2RlKCk7CiAgICAgICAgIGlmIChub2RlICYmIGVkaXRpbmdJZ25vcmVzQ29udGVudChub2Rl
KSkKICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShub2RlKTsK
QEAgLTEwNDAsNyArOTg1LDggQEAgVmlzaWJsZVBvc2l0aW9uIG5leHRMaW5lUG9zaXRpb24oY29u
c3QgVgogICAgIC8vIENvdWxkIG5vdCBmaW5kIGEgbmV4dCBsaW5lLiBUaGlzIG1lYW5zIHdlIG11
c3QgYWxyZWFkeSBiZSBvbiB0aGUgbGFzdCBsaW5lLgogICAgIC8vIE1vdmUgdG8gdGhlIGVuZCBv
ZiB0aGUgY29udGVudCBpbiB0aGlzIGJsb2NrLCB3aGljaCBlZmZlY3RpdmVseSBtb3ZlcyB1cwog
ICAgIC8vIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUgd2UncmUgb24uCi0gICAgRWxlbWVudCogcm9v
dEVsZW1lbnQgPSBub2RlLT5yZW5kZXJlcklzRWRpdGFibGUoZWRpdGFibGVUeXBlKSA/IG5vZGUt
PnJvb3RFZGl0YWJsZUVsZW1lbnQoZWRpdGFibGVUeXBlKSA6IG5vZGUtPmRvY3VtZW50KCktPmRv
Y3VtZW50RWxlbWVudCgpOworICAgIEVsZW1lbnQqIHJvb3RFbGVtZW50ID0gcC5jb250YWluZXJO
b2RlKCktPnJlbmRlcmVySXNFZGl0YWJsZShlZGl0YWJsZVR5cGUpID8KKyAgICAgICAgcC5jb250
YWluZXJOb2RlKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoZWRpdGFibGVUeXBlKSA6IHAuZG9jdW1l
bnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgaWYgKCFyb290RWxlbWVudCkKICAgICAgICAg
cmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24obGFz
dFBvc2l0aW9uSW5Ob2RlKHJvb3RFbGVtZW50KSwgRE9XTlNUUkVBTSk7Cg==
</data>
<flag name="commit-queue"
          id="136498"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141880</attachid>
            <date>2012-05-15 00:46:54 -0700</date>
            <delta_ts>2012-05-15 01:24:17 -0700</delta_ts>
            <desc>Less intrusive patch</desc>
            <filename>bug-81593-20120515004653.patch</filename>
            <type>text/plain</type>
            <size>7742</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNzAzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA1LTE1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1lcmdlIG5leHRSb290SW5saW5l
Qm94IHdpdGggbmV4dExpbmVQb3NpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODE1OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDYWxsIHByZXZpb3VzUm9vdElubGluZUJveCBhbmQgbmV4dFJvb3RJ
bmxpbmVCb3ggaW4gcHJldmlvdXNMaW5lUG9zaXRpb24gYW5kIG5leHRMaW5lUG9zaXRpb24gcmVz
cGVjdGl2ZWx5CisgICAgICAgIHRvIHNoYXJlIHRoZSBjb2RlLiBNb3ZlZCBvdXQgdGhlIG51bGxp
dHkgY2hlY2sgb2Ygc3RhcnRCb3ggYW5kIGV4dHJhY3Rpb24gb2YgdGhlIHJlbmRlcmVyJ3Mgbm9k
ZSBmcm9tCisgICAgICAgIHRoZSBmb3JtZXIgdHdvLCBhbmQgYWRkZWQgZWRpdGFibGVUeXBlIHRv
IHRoZWlyIGFyZ3VtZW50IGxpc3RzIHRvIG1hdGNoIHRoZSBpbnRlcmZhY2UgaW4gYm90aCB1c2Ug
Y2FzZXMuCisKKyAgICAgICAgVGhpcyByZWZhY3RvcmluZyB3aXRoIG5vIGJlaGF2aW9yYWwgY2hh
bmdlIHdvdWxkIGhlbHAgdXMgcmVzb2x2aW5nIHRoZSBidWcgODE0OTAuCisKKyAgICAgICAgKiBl
ZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNSb290
SW5saW5lQm94KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRSb290SW5saW5lQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OmxvZ2ljYWxseVByZXZpb3VzQm94KToKKyAgICAgICAgKFdlYkNvcmU6Omxv
Z2ljYWxseU5leHRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNMaW5lUG9zaXRpb24p
OgorCiAyMDEyLTA1LTE0ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBOb2RlOjpzaGFkb3dUcmVlUm9vdE5vZGUoKSBzaG91bGQgcmV0dXJuIFNoYWRv
d1Jvb3QgaW5zdGVhZCBvZiBOb2RlLgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNp
YmxlX3VuaXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2li
bGVfdW5pdHMuY3BwCShyZXZpc2lvbiAxMTY4MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L3Zpc2libGVfdW5pdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSwyMiArOTksMTcgQEAgc3Rh
dGljIE5vZGUqIG5leHRMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eQogfQogCiAvLyBGSVhNRTogY29u
c29saWRhdGUgd2l0aCBjb2RlIGluIHByZXZpb3VzTGluZVBvc2l0aW9uLgotc3RhdGljIGNvbnN0
IFJvb3RJbmxpbmVCb3gqIHByZXZpb3VzUm9vdElubGluZUJveChjb25zdCBJbmxpbmVCb3gqIGJv
eCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCitzdGF0aWMgUm9vdElu
bGluZUJveCogcHJldmlvdXNSb290SW5saW5lQm94KE5vZGUqIG5vZGUsIGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlKQogewot
ICAgIE5vZGUqIGhpZ2hlc3RSb290ID0gaGlnaGVzdEVkaXRhYmxlUm9vdCh2aXNpYmxlUG9zaXRp
b24uZGVlcEVxdWl2YWxlbnQoKSwgQ29udGVudElzRWRpdGFibGUpOwotCi0gICAgaWYgKCFib3gt
PnJlbmRlcmVyKCkgfHwgIWJveC0+cmVuZGVyZXIoKS0+bm9kZSgpKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIE5vZGUqIG5vZGUgPSBib3gtPnJlbmRlcmVyKCktPm5vZGUoKTsKKyAgICBOb2Rl
KiBoaWdoZXN0Um9vdCA9IGhpZ2hlc3RFZGl0YWJsZVJvb3QodmlzaWJsZVBvc2l0aW9uLmRlZXBF
cXVpdmFsZW50KCksIGVkaXRhYmxlVHlwZSk7CiAgICAgTm9kZSogZW5jbG9zaW5nQmxvY2tOb2Rl
ID0gZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihub2RlKTsKLSAgICBOb2RlKiBw
cmV2aW91c05vZGUgPSBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5vZGUsIENvbnRl
bnRJc0VkaXRhYmxlKTsKKyAgICBOb2RlKiBwcmV2aW91c05vZGUgPSBwcmV2aW91c0xlYWZXaXRo
U2FtZUVkaXRhYmlsaXR5KG5vZGUsIGVkaXRhYmxlVHlwZSk7CiAKICAgICB3aGlsZSAocHJldmlv
dXNOb2RlICYmIGVuY2xvc2luZ0Jsb2NrTm9kZSA9PSBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGlu
ZVJlbmRlcmVyKHByZXZpb3VzTm9kZSkpCi0gICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3Vz
TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkocHJldmlvdXNOb2RlLCBDb250ZW50SXNFZGl0YWJsZSk7
CisgICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTGVhZldpdGhTYW1lRWRpdGFiaWxpdHko
cHJldmlvdXNOb2RlLCBlZGl0YWJsZVR5cGUpOwogICAKICAgICB3aGlsZSAocHJldmlvdXNOb2Rl
ICYmICFwcmV2aW91c05vZGUtPmlzU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIGlmIChoaWdoZXN0
RWRpdGFibGVSb290KGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwcmV2aW91c05vZGUpLCBD
b250ZW50SXNFZGl0YWJsZSkgIT0gaGlnaGVzdFJvb3QpCisgICAgICAgIGlmIChoaWdoZXN0RWRp
dGFibGVSb290KGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwcmV2aW91c05vZGUpLCBlZGl0
YWJsZVR5cGUpICE9IGhpZ2hlc3RSb290KQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
UG9zaXRpb24gcG9zID0gcHJldmlvdXNOb2RlLT5oYXNUYWdOYW1lKGJyVGFnKSA/IHBvc2l0aW9u
QmVmb3JlTm9kZShwcmV2aW91c05vZGUpIDoKQEAgLTEyNywyNiArMTIyLDIxIEBAIHN0YXRpYyBj
b25zdCBSb290SW5saW5lQm94KiBwcmV2aW91c1Jvb3QKICAgICAgICAgICAgICAgICByZXR1cm4g
cm9vdDsKICAgICAgICAgfQogCi0gICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTGVhZldp
dGhTYW1lRWRpdGFiaWxpdHkocHJldmlvdXNOb2RlLCBDb250ZW50SXNFZGl0YWJsZSk7CisgICAg
ICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTGVhZldpdGhTYW1lRWRpdGFiaWxpdHkocHJldmlv
dXNOb2RlLCBlZGl0YWJsZVR5cGUpOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGlj
IGNvbnN0IFJvb3RJbmxpbmVCb3gqIG5leHRSb290SW5saW5lQm94KGNvbnN0IElubGluZUJveCog
Ym94LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikKK3N0YXRpYyBSb290
SW5saW5lQm94KiBuZXh0Um9vdElubGluZUJveChOb2RlKiBub2RlLCBjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHZpc2libGVQb3NpdGlvbiwgRWRpdGFibGVUeXBlIGVkaXRhYmxlVHlwZSkKIHsKLSAg
ICBOb2RlKiBoaWdoZXN0Um9vdCA9IGhpZ2hlc3RFZGl0YWJsZVJvb3QodmlzaWJsZVBvc2l0aW9u
LmRlZXBFcXVpdmFsZW50KCksIENvbnRlbnRJc0VkaXRhYmxlKTsKLQotICAgIGlmICghYm94LT5y
ZW5kZXJlcigpIHx8ICFib3gtPnJlbmRlcmVyKCktPm5vZGUoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICBOb2RlKiBub2RlID0gYm94LT5yZW5kZXJlcigpLT5ub2RlKCk7CisgICAgTm9kZSog
aGlnaGVzdFJvb3QgPSBoaWdoZXN0RWRpdGFibGVSb290KHZpc2libGVQb3NpdGlvbi5kZWVwRXF1
aXZhbGVudCgpLCBlZGl0YWJsZVR5cGUpOwogICAgIE5vZGUqIGVuY2xvc2luZ0Jsb2NrTm9kZSA9
IGVuY2xvc2luZ05vZGVXaXRoTm9uSW5saW5lUmVuZGVyZXIobm9kZSk7Ci0gICAgTm9kZSogbmV4
dE5vZGUgPSBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkobm9kZSwgQ29udGVudElzRWRpdGFi
bGUpOworICAgIE5vZGUqIG5leHROb2RlID0gbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5v
ZGUsIGVkaXRhYmxlVHlwZSk7CiAgICAgd2hpbGUgKG5leHROb2RlICYmIGVuY2xvc2luZ0Jsb2Nr
Tm9kZSA9PSBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRlcmVyKG5leHROb2RlKSkKICAg
ICAgICAgbmV4dE5vZGUgPSBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkobmV4dE5vZGUsIENv
bnRlbnRJc0VkaXRhYmxlKTsKICAgCiAgICAgd2hpbGUgKG5leHROb2RlICYmICFuZXh0Tm9kZS0+
aXNTaGFkb3dSb290KCkpIHsKLSAgICAgICAgaWYgKGhpZ2hlc3RFZGl0YWJsZVJvb3QoZmlyc3RQ
b3NpdGlvbkluT3JCZWZvcmVOb2RlKG5leHROb2RlKSwgQ29udGVudElzRWRpdGFibGUpICE9IGhp
Z2hlc3RSb290KQorICAgICAgICBpZiAoaGlnaGVzdEVkaXRhYmxlUm9vdChmaXJzdFBvc2l0aW9u
SW5PckJlZm9yZU5vZGUobmV4dE5vZGUpLCBlZGl0YWJsZVR5cGUpICE9IGhpZ2hlc3RSb290KQog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgUG9zaXRpb24gcG9zOwpAQCAtMTU5LDcgKzE0
OSw3IEBAIHN0YXRpYyBjb25zdCBSb290SW5saW5lQm94KiBuZXh0Um9vdElubGkKICAgICAgICAg
ICAgICAgICByZXR1cm4gcm9vdDsKICAgICAgICAgfQogCi0gICAgICAgIG5leHROb2RlID0gbmV4
dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5leHROb2RlLCBDb250ZW50SXNFZGl0YWJsZSk7Cisg
ICAgICAgIG5leHROb2RlID0gbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5leHROb2RlLCBl
ZGl0YWJsZVR5cGUpOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTI1Nyw4ICsyNDcsMTIg
QEAgc3RhdGljIGNvbnN0IElubGluZVRleHRCb3gqIGxvZ2ljYWxseVByZQogICAgIGlmIChwcmV2
aW91c0JveCkKICAgICAgICAgcmV0dXJuIHByZXZpb3VzQm94OwogCi0gICAgd2hpbGUgKDEpIHsg
Ci0gICAgICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIHByZXZpb3VzUm9vdCA9IHByZXZpb3VzUm9v
dElubGluZUJveChzdGFydEJveCwgdmlzaWJsZVBvc2l0aW9uKTsKKyAgICB3aGlsZSAoMSkgewor
ICAgICAgICBOb2RlKiBzdGFydE5vZGUgPSBzdGFydEJveC0+cmVuZGVyZXIoKSA/IHN0YXJ0Qm94
LT5yZW5kZXJlcigpLT5ub2RlKCkgOiAwOworICAgICAgICBpZiAoIXN0YXJ0Tm9kZSkKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gqIHByZXZpb3VzUm9v
dCA9IHByZXZpb3VzUm9vdElubGluZUJveChzdGFydE5vZGUsIHZpc2libGVQb3NpdGlvbiwgQ29u
dGVudElzRWRpdGFibGUpOwogICAgICAgICBpZiAoIXByZXZpb3VzUm9vdCkKICAgICAgICAgICAg
IGJyZWFrOwogCkBAIC0yODksOCArMjgzLDEyIEBAIHN0YXRpYyBjb25zdCBJbmxpbmVUZXh0Qm94
KiBsb2dpY2FsbHlOZXgKICAgICBpZiAobmV4dEJveCkKICAgICAgICAgcmV0dXJuIG5leHRCb3g7
CiAKLSAgICB3aGlsZSAoMSkgeyAKLSAgICAgICAgY29uc3QgUm9vdElubGluZUJveCogbmV4dFJv
b3QgPSBuZXh0Um9vdElubGluZUJveChzdGFydEJveCwgdmlzaWJsZVBvc2l0aW9uKTsKKyAgICB3
aGlsZSAoMSkgeworICAgICAgICBOb2RlKiBzdGFydE5vZGUgPSBzdGFydEJveC0+cmVuZGVyZXIo
KSA/IHN0YXJ0Qm94LT5yZW5kZXJlcigpLT5ub2RlKCkgOiAwOworICAgICAgICBpZiAoIXN0YXJ0
Tm9kZSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gq
IG5leHRSb290ID0gbmV4dFJvb3RJbmxpbmVCb3goc3RhcnROb2RlLCB2aXNpYmxlUG9zaXRpb24s
IENvbnRlbnRJc0VkaXRhYmxlKTsKICAgICAgICAgaWYgKCFuZXh0Um9vdCkKICAgICAgICAgICAg
IGJyZWFrOwogCkBAIC05NTEsNyArOTQ5LDYgQEAgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzTGlu
ZVBvc2l0aW9uKGNvbgogewogICAgIFBvc2l0aW9uIHAgPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVx
dWl2YWxlbnQoKTsKICAgICBOb2RlKiBub2RlID0gcC5kZXByZWNhdGVkTm9kZSgpOwotICAgIE5v
ZGUqIGhpZ2hlc3RSb290ID0gaGlnaGVzdEVkaXRhYmxlUm9vdChwLCBlZGl0YWJsZVR5cGUpOwog
CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CkBAIC05
NzQsMzEgKzk3MSw4IEBAIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c0xpbmVQb3NpdGlvbihjb24K
ICAgICAgICAgICAgIHJvb3QgPSAwOwogICAgIH0KIAotICAgIGlmICghcm9vdCkgewotICAgICAg
ICAvLyBUaGlzIGNvbnRhaW5pbmcgZWRpdGFibGUgYmxvY2sgZG9lcyBub3QgaGF2ZSBhIHByZXZp
b3VzIGxpbmUuCi0gICAgICAgIC8vIE5lZWQgdG8gbW92ZSBiYWNrIHRvIHByZXZpb3VzIGNvbnRh
aW5pbmcgZWRpdGFibGUgYmxvY2sgaW4gdGhpcyByb290IGVkaXRhYmxlCi0gICAgICAgIC8vIGJs
b2NrIGFuZCBmaW5kIHRoZSBsYXN0IHJvb3QgbGluZSBib3ggaW4gdGhhdCBibG9jay4KLSAgICAg
ICAgTm9kZSogc3RhcnRCbG9jayA9IGVuY2xvc2luZ05vZGVXaXRoTm9uSW5saW5lUmVuZGVyZXIo
bm9kZSk7Ci0gICAgICAgIE5vZGUqIG4gPSBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5
KG5vZGUsIGVkaXRhYmxlVHlwZSk7Ci0gICAgICAgIHdoaWxlIChuICYmIHN0YXJ0QmxvY2sgPT0g
ZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihuKSkKLSAgICAgICAgICAgIG4gPSBw
cmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG4sIGVkaXRhYmxlVHlwZSk7Ci0gICAgICAg
IHdoaWxlIChuKSB7Ci0gICAgICAgICAgICBpZiAoaGlnaGVzdEVkaXRhYmxlUm9vdChmaXJzdFBv
c2l0aW9uSW5PckJlZm9yZU5vZGUobiksIGVkaXRhYmxlVHlwZSkgIT0gaGlnaGVzdFJvb3QpCi0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBQb3NpdGlvbiBwb3MgPSBuLT5oYXNU
YWdOYW1lKGJyVGFnKSA/IHBvc2l0aW9uQmVmb3JlTm9kZShuKSA6IGNyZWF0ZUxlZ2FjeUVkaXRp
bmdQb3NpdGlvbihuLCBjYXJldE1heE9mZnNldChuKSk7Ci0gICAgICAgICAgICBpZiAocG9zLmlz
Q2FuZGlkYXRlKCkpIHsKLSAgICAgICAgICAgICAgICBwb3MuZ2V0SW5saW5lQm94QW5kT2Zmc2V0
KERPV05TVFJFQU0sIGJveCwgaWdub3JlZENhcmV0T2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBp
ZiAoYm94KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzIHJvb3QgbGluZSBib3gg
Zm91bmQKLSAgICAgICAgICAgICAgICAgICAgcm9vdCA9IGJveC0+cm9vdCgpOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uKHBvcywgRE9XTlNUUkVBTSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBuID0gcHJldmlvdXNMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShuLCBlZGl0YWJs
ZVR5cGUpOwotICAgICAgICB9Ci0gICAgfQorICAgIGlmICghcm9vdCkKKyAgICAgICAgcm9vdCA9
IHByZXZpb3VzUm9vdElubGluZUJveChub2RlLCB2aXNpYmxlUG9zaXRpb24sIGVkaXRhYmxlVHlw
ZSk7CiAgICAgCiAgICAgaWYgKHJvb3QpIHsKICAgICAgICAgLy8gRklYTUU6IENhbiBiZSB3cm9u
ZyBmb3IgbXVsdGktY29sdW1uIGxheW91dCBhbmQgd2l0aCB0cmFuc2Zvcm1zLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141901</attachid>
            <date>2012-05-15 02:38:22 -0700</date>
            <delta_ts>2012-05-19 02:42:29 -0700</delta_ts>
            <desc>Deleted more code but considerably more complicated patch</desc>
            <filename>bug-81593-20120515023821.patch</filename>
            <type>text/plain</type>
            <size>13359</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNzAzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA1LTE1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1lcmdlIG5leHRSb290SW5saW5l
Qm94IHdpdGggbmV4dExpbmVQb3NpdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODE1OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDYWxsIHByZXZpb3VzUm9vdElubGluZUJveCBhbmQgbmV4dFJvb3RJ
bmxpbmVCb3ggaW4gcHJldmlvdXNMaW5lUG9zaXRpb24gYW5kIG5leHRMaW5lUG9zaXRpb24gcmVz
cGVjdGl2ZWx5CisgICAgICAgIHRvIHNoYXJlIHRoZSBjb2RlLiBNb3ZlZCBvdXQgdGhlIG51bGxp
dHkgY2hlY2sgb2Ygc3RhcnRCb3ggYW5kIGV4dHJhY3Rpb24gb2YgdGhlIHJlbmRlcmVyJ3Mgbm9k
ZSBmcm9tCisgICAgICAgIHRoZSBmb3JtZXIgdHdvLCBhbmQgYWRkZWQgZWRpdGFibGVUeXBlIHRv
IHRoZWlyIGFyZ3VtZW50IGxpc3RzIHRvIG1hdGNoIHRoZSBpbnRlcmZhY2UgaW4gYm90aCB1c2Ug
Y2FzZXMuCisKKyAgICAgICAgQWxzbyBtb3ZlZCBvdXQgdGhlIGNvZGUgdG8gZXh0cmFjdCByb290
IGlubGluZSBib3ggdXNpbmcgUmVuZGVyZWRQb3NpdGlvbiBmcm9tIHRob3NlIHR3byBmdW5jdGlv
bnMgYW5kCisgICAgICAgIGV4cGFuZGVkIGluIGNhbGwgc2l0ZXMgc2luY2UgcHJldmlvdXNMaW5l
UG9zaXRpb24gYW5kIG5leHRMaW5lUG9zaXRpb24gbmVlZCB0byByZXR1cm4gdGhlIGNhbmRpZGF0
ZSBwb3NpdGlvbgorICAgICAgICBldmVuIHdoZW4gdGhlIHJvb3QgaW5saW5lIGJveCBkb2Vzbid0
IGV4aXN0LiBUbyB0aGlzIGVuZCwgcmVuYW1lZCBwcmV2aW91c1Jvb3RJbmxpbmVCb3ggYW5kIG5l
eHRSb290SW5saW5lQm94CisgICAgICAgIHRvIHByZXZpb3VzUm9vdElubGluZUJveENhbmRpZGF0
ZVBvc2l0aW9uIGFuZCBuZXh0Um9vdElubGluZUJveENhbmRpZGF0ZVBvc2l0aW9uIHJlc3BlY3Rp
dmVseS4KKworICAgICAgICBJbiBhZGRpdGlvbiwgZ290IHJpZCBvZiBvbmUgdmVyc2lvbiBvZiBu
ZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkgdGhhdCBhZGp1c3RlZCBub2RlIHdpdGggcmVzcGVj
dCB0byBvZmZzZXQKKyAgICAgICAgVGhpcyB2YXJpYW50IGRpZDoKKworICAgICAgICBOb2RlKiBj
aGlsZCA9IG5vZGUtPmNoaWxkTm9kZShvZmZzZXQpOworICAgICAgICBub2RlID0gY2hpbGQgPyBj
aGlsZC0+bmV4dExlYWZOb2RlKCkgOiBub2RlLT5sYXN0RGVzY2VuZGFudCgpLT5uZXh0TGVhZk5v
ZGUoKTsKKworICAgICAgICBpbnN0ZWFkIG9mOgorCisgICAgICAgIG5vZGUgPSBub2RlLT5uZXh0
TGVhZk5vZGUoKTsKKworICAgICAgICBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmdW5jdGlvbi4g
T2JzZXJ2ZSB0aGF0IHRoZSBmb3JtZXIgY29kZSBpcyBsb2dpY2FsbHkgZXF1aXZhbGVudCB0bzoK
KworICAgICAgICBOb2RlKiBjaGlsZCA9IG5vZGUtPmNoaWxkTm9kZShvZmZzZXQpOworICAgICAg
ICBub2RlID0gY2hpbGQgPyBjaGlsZCA6IG5vZGUtPmxhc3REZXNjZW5kYW50KCk7CisgICAgICAg
IG5vZGUgPSBub2RlLT5uZXh0TGVhZk5vZGUoKTsKKworICAgICAgICBUaHVzLCB0aGUgZmlyc3Qg
dHdvIGxpbmVzIG9mIHRoaXMgbG9naWNhbGx5IGVxdWl2YWxlbnQgY29kZSBpcyBhZGRlZCBpbiBu
ZXh0TGluZVBvc2l0aW9uIHdoZXJlaW4gd2UgdXNlZCB0bworICAgICAgICBjYWxsIHRoZSByZW1v
dmVkIHZhcmlhbnQuCisKKyAgICAgICAgVGhpcyByZWZhY3RvcmluZyB3aXRoIG5vIGJlaGF2aW9y
YWwgY2hhbmdlIHdvdWxkIGhlbHAgdXMgcmVzb2x2aW5nIHRoZSBidWcgODE0OTAuCisKKyAgICAg
ICAgKiBlZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlv
dXNSb290SW5saW5lQm94Q2FuZGlkYXRlUG9zaXRpb24pOiBSZW5hbWVkIGZyb20gcHJldmlvdXNS
b290SW5saW5lQm94LgorICAgICAgICAoV2ViQ29yZTo6bmV4dFJvb3RJbmxpbmVCb3hDYW5kaWRh
dGVQb3NpdGlvbik6IFJlbmFtZWQgZnJvbSBuZXh0Um9vdElubGluZUJveC4KKyAgICAgICAgKFdl
YkNvcmU6OmxvZ2ljYWxseVByZXZpb3VzQm94KTogQ2hlY2tzIHRoZSBudWxsaXR5IG9mIHN0YXJ0
Qm94J3MgcmVuZGVyZXIgYW5kIG5vZGUuIEFsc28gZXh0cmFjdHMgdGhlIHJvb3QKKyAgICAgICAg
aW5saW5lIGJveCBvdXQgb2YgdGhlIHBvc2l0aW9uIHBlciB0aGUgaW50ZXJmYWNlIGNoYW5nZS4K
KyAgICAgICAgKFdlYkNvcmU6OmxvZ2ljYWxseU5leHRCb3gpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OnByZXZpb3VzTGluZVBvc2l0aW9uKTogQ2FsbHMgcHJldmlvdXNSb290SW5saW5lQm94
Q2FuZGlkYXRlUG9zaXRpb24uCisgICAgICAgIChXZWJDb3JlOjpuZXh0TGluZVBvc2l0aW9uKTog
Q2FsbHMgbmV4dFJvb3RJbmxpbmVCb3hDYW5kaWRhdGVQb3NpdGlvbi4KKwogMjAxMi0wNS0xNCAg
U2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTm9kZTo6
c2hhZG93VHJlZVJvb3ROb2RlKCkgc2hvdWxkIHJldHVybiBTaGFkb3dSb290IGluc3RlYWQgb2Yg
Tm9kZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkocmV2
aXNpb24gMTE2ODIxKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjksMjAgKzY5LDYgQEAgc3RhdGljIE5vZGUqIGVuY2xvc2lu
Z05vZGVXaXRoTm9uSW5saW5lUgogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgTm9kZSogbmV4
dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KE5vZGUqIG5vZGUsIGludCBvZmZzZXQpCi17Ci0gICAg
Ym9vbCBlZGl0YWJsZSA9IG5vZGUtPnJlbmRlcmVySXNFZGl0YWJsZSgpOwotICAgIEFTU0VSVChv
ZmZzZXQgPj0gMCk7Ci0gICAgTm9kZSogY2hpbGQgPSBub2RlLT5jaGlsZE5vZGUob2Zmc2V0KTsK
LSAgICBub2RlID0gY2hpbGQgPyBjaGlsZC0+bmV4dExlYWZOb2RlKCkgOiBub2RlLT5sYXN0RGVz
Y2VuZGFudCgpLT5uZXh0TGVhZk5vZGUoKTsKLSAgICB3aGlsZSAobm9kZSkgewotICAgICAgICBp
ZiAoZWRpdGFibGUgPT0gbm9kZS0+cmVuZGVyZXJJc0VkaXRhYmxlKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gbm9kZTsKLSAgICAgICAgbm9kZSA9IG5vZGUtPm5leHRMZWFmTm9kZSgpOwotICAgIH0K
LSAgICByZXR1cm4gMDsKLX0KLQogc3RhdGljIE5vZGUqIG5leHRMZWFmV2l0aFNhbWVFZGl0YWJp
bGl0eShOb2RlKiBub2RlLCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlID0gQ29udGVudElzRWRp
dGFibGUpCiB7CiAgICAgaWYgKCFub2RlKQpAQCAtOTksNjkgKzg1LDUxIEBAIHN0YXRpYyBOb2Rl
KiBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkKIH0KIAogLy8gRklYTUU6IGNvbnNvbGlkYXRl
IHdpdGggY29kZSBpbiBwcmV2aW91c0xpbmVQb3NpdGlvbi4KLXN0YXRpYyBjb25zdCBSb290SW5s
aW5lQm94KiBwcmV2aW91c1Jvb3RJbmxpbmVCb3goY29uc3QgSW5saW5lQm94KiBib3gsIGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uKQorc3RhdGljIFBvc2l0aW9uIHByZXZp
b3VzUm9vdElubGluZUJveENhbmRpZGF0ZVBvc2l0aW9uKE5vZGUqIG5vZGUsIGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlKQog
ewotICAgIE5vZGUqIGhpZ2hlc3RSb290ID0gaGlnaGVzdEVkaXRhYmxlUm9vdCh2aXNpYmxlUG9z
aXRpb24uZGVlcEVxdWl2YWxlbnQoKSwgQ29udGVudElzRWRpdGFibGUpOwotCi0gICAgaWYgKCFi
b3gtPnJlbmRlcmVyKCkgfHwgIWJveC0+cmVuZGVyZXIoKS0+bm9kZSgpKQotICAgICAgICByZXR1
cm4gMDsKLQotICAgIE5vZGUqIG5vZGUgPSBib3gtPnJlbmRlcmVyKCktPm5vZGUoKTsKKyAgICBO
b2RlKiBoaWdoZXN0Um9vdCA9IGhpZ2hlc3RFZGl0YWJsZVJvb3QodmlzaWJsZVBvc2l0aW9uLmRl
ZXBFcXVpdmFsZW50KCksIGVkaXRhYmxlVHlwZSk7CiAgICAgTm9kZSogZW5jbG9zaW5nQmxvY2tO
b2RlID0gZW5jbG9zaW5nTm9kZVdpdGhOb25JbmxpbmVSZW5kZXJlcihub2RlKTsKLSAgICBOb2Rl
KiBwcmV2aW91c05vZGUgPSBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5vZGUsIENv
bnRlbnRJc0VkaXRhYmxlKTsKKyAgICBOb2RlKiBwcmV2aW91c05vZGUgPSBwcmV2aW91c0xlYWZX
aXRoU2FtZUVkaXRhYmlsaXR5KG5vZGUsIGVkaXRhYmxlVHlwZSk7CiAKICAgICB3aGlsZSAocHJl
dmlvdXNOb2RlICYmIGVuY2xvc2luZ0Jsb2NrTm9kZSA9PSBlbmNsb3NpbmdOb2RlV2l0aE5vbklu
bGluZVJlbmRlcmVyKHByZXZpb3VzTm9kZSkpCi0gICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZp
b3VzTGVhZldpdGhTYW1lRWRpdGFiaWxpdHkocHJldmlvdXNOb2RlLCBDb250ZW50SXNFZGl0YWJs
ZSk7CisgICAgICAgIHByZXZpb3VzTm9kZSA9IHByZXZpb3VzTGVhZldpdGhTYW1lRWRpdGFiaWxp
dHkocHJldmlvdXNOb2RlLCBlZGl0YWJsZVR5cGUpOwogICAKICAgICB3aGlsZSAocHJldmlvdXNO
b2RlICYmICFwcmV2aW91c05vZGUtPmlzU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIGlmIChoaWdo
ZXN0RWRpdGFibGVSb290KGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwcmV2aW91c05vZGUp
LCBDb250ZW50SXNFZGl0YWJsZSkgIT0gaGlnaGVzdFJvb3QpCisgICAgICAgIGlmIChoaWdoZXN0
RWRpdGFibGVSb290KGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShwcmV2aW91c05vZGUpLCBl
ZGl0YWJsZVR5cGUpICE9IGhpZ2hlc3RSb290KQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgUG9zaXRpb24gcG9zID0gcHJldmlvdXNOb2RlLT5oYXNUYWdOYW1lKGJyVGFnKSA/IHBvc2l0
aW9uQmVmb3JlTm9kZShwcmV2aW91c05vZGUpIDoKICAgICAgICAgICAgIGNyZWF0ZUxlZ2FjeUVk
aXRpbmdQb3NpdGlvbihwcmV2aW91c05vZGUsIGNhcmV0TWF4T2Zmc2V0KHByZXZpb3VzTm9kZSkp
OwogICAgICAgICAKLSAgICAgICAgaWYgKHBvcy5pc0NhbmRpZGF0ZSgpKSB7Ci0gICAgICAgICAg
ICBSZW5kZXJlZFBvc2l0aW9uIHJlbmRlcmVkUG9zKHBvcywgRE9XTlNUUkVBTSk7Ci0gICAgICAg
ICAgICBSb290SW5saW5lQm94KiByb290ID0gcmVuZGVyZWRQb3Mucm9vdEJveCgpOwotICAgICAg
ICAgICAgaWYgKHJvb3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJvb3Q7Ci0gICAgICAgIH0K
KyAgICAgICAgaWYgKHBvcy5pc0NhbmRpZGF0ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHBvczsK
IAotICAgICAgICBwcmV2aW91c05vZGUgPSBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5
KHByZXZpb3VzTm9kZSwgQ29udGVudElzRWRpdGFibGUpOworICAgICAgICBwcmV2aW91c05vZGUg
PSBwcmV2aW91c0xlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KHByZXZpb3VzTm9kZSwgZWRpdGFibGVU
eXBlKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIFBvc2l0aW9uKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBSb290SW5saW5lQm94KiBuZXh0Um9vdElubGluZUJveChjb25zdCBJbmxp
bmVCb3gqIGJveCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCitzdGF0
aWMgUG9zaXRpb24gbmV4dFJvb3RJbmxpbmVCb3hDYW5kaWRhdGVQb3NpdGlvbihOb2RlKiBub2Rl
LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgRWRpdGFibGVUeXBlIGVk
aXRhYmxlVHlwZSkKIHsKLSAgICBOb2RlKiBoaWdoZXN0Um9vdCA9IGhpZ2hlc3RFZGl0YWJsZVJv
b3QodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCksIENvbnRlbnRJc0VkaXRhYmxlKTsK
LQotICAgIGlmICghYm94LT5yZW5kZXJlcigpIHx8ICFib3gtPnJlbmRlcmVyKCktPm5vZGUoKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBOb2RlKiBub2RlID0gYm94LT5yZW5kZXJlcigpLT5u
b2RlKCk7CisgICAgTm9kZSogaGlnaGVzdFJvb3QgPSBoaWdoZXN0RWRpdGFibGVSb290KHZpc2li
bGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLCBlZGl0YWJsZVR5cGUpOwogICAgIE5vZGUqIGVu
Y2xvc2luZ0Jsb2NrTm9kZSA9IGVuY2xvc2luZ05vZGVXaXRoTm9uSW5saW5lUmVuZGVyZXIobm9k
ZSk7Ci0gICAgTm9kZSogbmV4dE5vZGUgPSBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHkobm9k
ZSwgQ29udGVudElzRWRpdGFibGUpOworICAgIE5vZGUqIG5leHROb2RlID0gbmV4dExlYWZXaXRo
U2FtZUVkaXRhYmlsaXR5KG5vZGUsIGVkaXRhYmxlVHlwZSk7CiAgICAgd2hpbGUgKG5leHROb2Rl
ICYmIGVuY2xvc2luZ0Jsb2NrTm9kZSA9PSBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJlbmRl
cmVyKG5leHROb2RlKSkKICAgICAgICAgbmV4dE5vZGUgPSBuZXh0TGVhZldpdGhTYW1lRWRpdGFi
aWxpdHkobmV4dE5vZGUsIENvbnRlbnRJc0VkaXRhYmxlKTsKICAgCiAgICAgd2hpbGUgKG5leHRO
b2RlICYmICFuZXh0Tm9kZS0+aXNTaGFkb3dSb290KCkpIHsKLSAgICAgICAgaWYgKGhpZ2hlc3RF
ZGl0YWJsZVJvb3QoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5leHROb2RlKSwgQ29udGVu
dElzRWRpdGFibGUpICE9IGhpZ2hlc3RSb290KQorICAgICAgICBpZiAoaGlnaGVzdEVkaXRhYmxl
Um9vdChmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobmV4dE5vZGUpLCBlZGl0YWJsZVR5cGUp
ICE9IGhpZ2hlc3RSb290KQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgUG9zaXRpb24g
cG9zOwogICAgICAgICBwb3MgPSBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obmV4dE5vZGUs
IGNhcmV0TWluT2Zmc2V0KG5leHROb2RlKSk7CiAgICAgICAgIAotICAgICAgICBpZiAocG9zLmlz
Q2FuZGlkYXRlKCkpIHsKLSAgICAgICAgICAgIFJlbmRlcmVkUG9zaXRpb24gcmVuZGVyZWRQb3Mo
cG9zLCBET1dOU1RSRUFNKTsKLSAgICAgICAgICAgIFJvb3RJbmxpbmVCb3gqIHJvb3QgPSByZW5k
ZXJlZFBvcy5yb290Qm94KCk7Ci0gICAgICAgICAgICBpZiAocm9vdCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gcm9vdDsKLSAgICAgICAgfQorICAgICAgICBpZiAocG9zLmlzQ2FuZGlkYXRlKCkp
CisgICAgICAgICAgICByZXR1cm4gcG9zOwogCi0gICAgICAgIG5leHROb2RlID0gbmV4dExlYWZX
aXRoU2FtZUVkaXRhYmlsaXR5KG5leHROb2RlLCBDb250ZW50SXNFZGl0YWJsZSk7CisgICAgICAg
IG5leHROb2RlID0gbmV4dExlYWZXaXRoU2FtZUVkaXRhYmlsaXR5KG5leHROb2RlLCBlZGl0YWJs
ZVR5cGUpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gUG9zaXRpb24oKTsKIH0K
IAogY2xhc3MgQ2FjaGVkTG9naWNhbGx5T3JkZXJlZExlYWZCb3hlcyB7CkBAIC0yNTcsOCArMjI1
LDE3IEBAIHN0YXRpYyBjb25zdCBJbmxpbmVUZXh0Qm94KiBsb2dpY2FsbHlQcmUKICAgICBpZiAo
cHJldmlvdXNCb3gpCiAgICAgICAgIHJldHVybiBwcmV2aW91c0JveDsKIAotICAgIHdoaWxlICgx
KSB7IAotICAgICAgICBjb25zdCBSb290SW5saW5lQm94KiBwcmV2aW91c1Jvb3QgPSBwcmV2aW91
c1Jvb3RJbmxpbmVCb3goc3RhcnRCb3gsIHZpc2libGVQb3NpdGlvbik7CisgICAgd2hpbGUgKDEp
IHsKKyAgICAgICAgTm9kZSogc3RhcnROb2RlID0gc3RhcnRCb3gtPnJlbmRlcmVyKCkgPyBzdGFy
dEJveC0+cmVuZGVyZXIoKS0+bm9kZSgpIDogMDsKKyAgICAgICAgaWYgKCFzdGFydE5vZGUpCisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbiA9IHByZXZpb3Vz
Um9vdElubGluZUJveENhbmRpZGF0ZVBvc2l0aW9uKHN0YXJ0Tm9kZSwgdmlzaWJsZVBvc2l0aW9u
LCBDb250ZW50SXNFZGl0YWJsZSk7CisgICAgICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIFJlbmRlcmVkUG9zaXRpb24gcmVuZGVyZWRQb3Np
dGlvbihwb3NpdGlvbiwgRE9XTlNUUkVBTSk7CisgICAgICAgIFJvb3RJbmxpbmVCb3gqIHByZXZp
b3VzUm9vdCA9IHJlbmRlcmVkUG9zaXRpb24ucm9vdEJveCgpOwogICAgICAgICBpZiAoIXByZXZp
b3VzUm9vdCkKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0yODksOCArMjY2LDE3IEBAIHN0YXRp
YyBjb25zdCBJbmxpbmVUZXh0Qm94KiBsb2dpY2FsbHlOZXgKICAgICBpZiAobmV4dEJveCkKICAg
ICAgICAgcmV0dXJuIG5leHRCb3g7CiAKLSAgICB3aGlsZSAoMSkgeyAKLSAgICAgICAgY29uc3Qg
Um9vdElubGluZUJveCogbmV4dFJvb3QgPSBuZXh0Um9vdElubGluZUJveChzdGFydEJveCwgdmlz
aWJsZVBvc2l0aW9uKTsKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBOb2RlKiBzdGFydE5vZGUg
PSBzdGFydEJveC0+cmVuZGVyZXIoKSA/IHN0YXJ0Qm94LT5yZW5kZXJlcigpLT5ub2RlKCkgOiAw
OworICAgICAgICBpZiAoIXN0YXJ0Tm9kZSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IFBvc2l0aW9uIHBvc2l0aW9uID0gbmV4dFJvb3RJbmxpbmVCb3hDYW5kaWRhdGVQb3NpdGlvbihz
dGFydE5vZGUsIHZpc2libGVQb3NpdGlvbiwgQ29udGVudElzRWRpdGFibGUpOworICAgICAgICBp
ZiAocG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBSZW5k
ZXJlZFBvc2l0aW9uIHJlbmRlcmVkUG9zaXRpb24ocG9zaXRpb24sIERPV05TVFJFQU0pOworICAg
ICAgICBSb290SW5saW5lQm94KiBuZXh0Um9vdCA9IHJlbmRlcmVkUG9zaXRpb24ucm9vdEJveCgp
OwogICAgICAgICBpZiAoIW5leHRSb290KQogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTk1MSw3
ICs5MzcsNiBAQCBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNMaW5lUG9zaXRpb24oY29uCiB7CiAg
ICAgUG9zaXRpb24gcCA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwogICAgIE5v
ZGUqIG5vZGUgPSBwLmRlcHJlY2F0ZWROb2RlKCk7Ci0gICAgTm9kZSogaGlnaGVzdFJvb3QgPSBo
aWdoZXN0RWRpdGFibGVSb290KHAsIGVkaXRhYmxlVHlwZSk7CiAKICAgICBpZiAoIW5vZGUpCiAg
ICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKQEAgLTk3NSwyOCArOTYwLDEyIEBAIFZp
c2libGVQb3NpdGlvbiBwcmV2aW91c0xpbmVQb3NpdGlvbihjb24KICAgICB9CiAKICAgICBpZiAo
IXJvb3QpIHsKLSAgICAgICAgLy8gVGhpcyBjb250YWluaW5nIGVkaXRhYmxlIGJsb2NrIGRvZXMg
bm90IGhhdmUgYSBwcmV2aW91cyBsaW5lLgotICAgICAgICAvLyBOZWVkIHRvIG1vdmUgYmFjayB0
byBwcmV2aW91cyBjb250YWluaW5nIGVkaXRhYmxlIGJsb2NrIGluIHRoaXMgcm9vdCBlZGl0YWJs
ZQotICAgICAgICAvLyBibG9jayBhbmQgZmluZCB0aGUgbGFzdCByb290IGxpbmUgYm94IGluIHRo
YXQgYmxvY2suCi0gICAgICAgIE5vZGUqIHN0YXJ0QmxvY2sgPSBlbmNsb3NpbmdOb2RlV2l0aE5v
bklubGluZVJlbmRlcmVyKG5vZGUpOwotICAgICAgICBOb2RlKiBuID0gcHJldmlvdXNMZWFmV2l0
aFNhbWVFZGl0YWJpbGl0eShub2RlLCBlZGl0YWJsZVR5cGUpOwotICAgICAgICB3aGlsZSAobiAm
JiBzdGFydEJsb2NrID09IGVuY2xvc2luZ05vZGVXaXRoTm9uSW5saW5lUmVuZGVyZXIobikpCi0g
ICAgICAgICAgICBuID0gcHJldmlvdXNMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShuLCBlZGl0YWJs
ZVR5cGUpOwotICAgICAgICB3aGlsZSAobikgewotICAgICAgICAgICAgaWYgKGhpZ2hlc3RFZGl0
YWJsZVJvb3QoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG4pLCBlZGl0YWJsZVR5cGUpICE9
IGhpZ2hlc3RSb290KQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgUG9zaXRp
b24gcG9zID0gbi0+aGFzVGFnTmFtZShiclRhZykgPyBwb3NpdGlvbkJlZm9yZU5vZGUobikgOiBj
cmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obiwgY2FyZXRNYXhPZmZzZXQobikpOwotICAgICAg
ICAgICAgaWYgKHBvcy5pc0NhbmRpZGF0ZSgpKSB7Ci0gICAgICAgICAgICAgICAgcG9zLmdldElu
bGluZUJveEFuZE9mZnNldChET1dOU1RSRUFNLCBib3gsIGlnbm9yZWRDYXJldE9mZnNldCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKGJveCkgewotICAgICAgICAgICAgICAgICAgICAvLyBwcmV2aW91
cyByb290IGxpbmUgYm94IGZvdW5kCi0gICAgICAgICAgICAgICAgICAgIHJvb3QgPSBib3gtPnJv
b3QoKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihwb3MsIERPV05TVFJFQU0pOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgbiA9IHByZXZpb3VzTGVhZldpdGhTYW1lRWRpdGFi
aWxpdHkobiwgZWRpdGFibGVUeXBlKTsKKyAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBwcmV2
aW91c1Jvb3RJbmxpbmVCb3hDYW5kaWRhdGVQb3NpdGlvbihub2RlLCB2aXNpYmxlUG9zaXRpb24s
IGVkaXRhYmxlVHlwZSk7CisgICAgICAgIGlmIChwb3NpdGlvbi5pc05vdE51bGwoKSkgeworICAg
ICAgICAgICAgUmVuZGVyZWRQb3NpdGlvbiByZW5kZXJlZFBvc2l0aW9uKHBvc2l0aW9uKTsKKyAg
ICAgICAgICAgIHJvb3QgPSByZW5kZXJlZFBvc2l0aW9uLnJvb3RCb3goKTsKKyAgICAgICAgICAg
IGlmICghcm9vdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CiAgICAgICAgIH0K
ICAgICB9CiAgICAgCkBAIC0xMDE5LDEyICs5ODgsMTAgQEAgVmlzaWJsZVBvc2l0aW9uIHByZXZp
b3VzTGluZVBvc2l0aW9uKGNvbgogICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3Np
dGlvbkluTm9kZShyb290RWxlbWVudCksIERPV05TVFJFQU0pOwogfQogCi0KIFZpc2libGVQb3Np
dGlvbiBuZXh0TGluZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmdmlzaWJsZVBvc2l0
aW9uLCBpbnQgbGluZURpcmVjdGlvblBvaW50LCBFZGl0YWJsZVR5cGUgZWRpdGFibGVUeXBlKQog
ewogICAgIFBvc2l0aW9uIHAgPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKICAg
ICBOb2RlKiBub2RlID0gcC5kZXByZWNhdGVkTm9kZSgpOwotICAgIE5vZGUqIGhpZ2hlc3RSb290
ID0gaGlnaGVzdEVkaXRhYmxlUm9vdChwLCBlZGl0YWJsZVR5cGUpOwogCiAgICAgaWYgKCFub2Rl
KQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CkBAIC0xMDQ4LDI5ICsxMDE1LDE1
IEBAIFZpc2libGVQb3NpdGlvbiBuZXh0TGluZVBvc2l0aW9uKGNvbnN0IFYKICAgICB9CiAKICAg
ICBpZiAoIXJvb3QpIHsKLSAgICAgICAgLy8gVGhpcyBjb250YWluaW5nIGVkaXRhYmxlIGJsb2Nr
IGRvZXMgbm90IGhhdmUgYSBuZXh0IGxpbmUuCi0gICAgICAgIC8vIE5lZWQgdG8gbW92ZSBmb3J3
YXJkIHRvIG5leHQgY29udGFpbmluZyBlZGl0YWJsZSBibG9jayBpbiB0aGlzIHJvb3QgZWRpdGFi
bGUKLSAgICAgICAgLy8gYmxvY2sgYW5kIGZpbmQgdGhlIGZpcnN0IHJvb3QgbGluZSBib3ggaW4g
dGhhdCBibG9jay4KLSAgICAgICAgTm9kZSogc3RhcnRCbG9jayA9IGVuY2xvc2luZ05vZGVXaXRo
Tm9uSW5saW5lUmVuZGVyZXIobm9kZSk7Ci0gICAgICAgIE5vZGUqIG4gPSBuZXh0TGVhZldpdGhT
YW1lRWRpdGFiaWxpdHkobm9kZSwgcC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKLSAgICAg
ICAgd2hpbGUgKG4gJiYgc3RhcnRCbG9jayA9PSBlbmNsb3NpbmdOb2RlV2l0aE5vbklubGluZVJl
bmRlcmVyKG4pKQotICAgICAgICAgICAgbiA9IG5leHRMZWFmV2l0aFNhbWVFZGl0YWJpbGl0eShu
LCBlZGl0YWJsZVR5cGUpOwotICAgICAgICB3aGlsZSAobikgewotICAgICAgICAgICAgaWYgKGhp
Z2hlc3RFZGl0YWJsZVJvb3QoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG4pLCBlZGl0YWJs
ZVR5cGUpICE9IGhpZ2hlc3RSb290KQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgUG9zaXRpb24gcG9zID0gY3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG4sIGNhcmV0TWlu
T2Zmc2V0KG4pKTsKLSAgICAgICAgICAgIGlmIChwb3MuaXNDYW5kaWRhdGUoKSkgewotICAgICAg
ICAgICAgICAgIEFTU0VSVChuLT5yZW5kZXJlcigpKTsKLSAgICAgICAgICAgICAgICBwb3MuZ2V0
SW5saW5lQm94QW5kT2Zmc2V0KERPV05TVFJFQU0sIGJveCwgaWdub3JlZENhcmV0T2Zmc2V0KTsK
LSAgICAgICAgICAgICAgICBpZiAoYm94KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIG5leHQg
cm9vdCBsaW5lIGJveCBmb3VuZAotICAgICAgICAgICAgICAgICAgICByb290ID0gYm94LT5yb290
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24ocG9zLCBET1dOU1RSRUFNKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIG4gPSBuZXh0TGVhZldpdGhTYW1lRWRpdGFiaWxpdHko
biwgZWRpdGFibGVUeXBlKTsKKyAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgZG8gdGhlIHNhbWUg
aW4gcHJldmlvdXNMaW5lUG9zaXRpb24uCisgICAgICAgIE5vZGUqIGNoaWxkID0gbm9kZS0+Y2hp
bGROb2RlKHAuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CisgICAgICAgIG5vZGUgPSBjaGls
ZCA/IGNoaWxkIDogbm9kZS0+bGFzdERlc2NlbmRhbnQoKTsKKyAgICAgICAgUG9zaXRpb24gcG9z
aXRpb24gPSBuZXh0Um9vdElubGluZUJveENhbmRpZGF0ZVBvc2l0aW9uKG5vZGUsIHZpc2libGVQ
b3NpdGlvbiwgZWRpdGFibGVUeXBlKTsKKyAgICAgICAgaWYgKHBvc2l0aW9uLmlzTm90TnVsbCgp
KSB7CisgICAgICAgICAgICBSZW5kZXJlZFBvc2l0aW9uIHJlbmRlcmVkUG9zaXRpb24ocG9zaXRp
b24pOworICAgICAgICAgICAgcm9vdCA9IHJlbmRlcmVkUG9zaXRpb24ucm9vdEJveCgpOworICAg
ICAgICAgICAgaWYgKCFyb290KQorICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKICAg
ICAgICAgfQogICAgIH0KICAgICAK
</data>
<flag name="review"
          id="148112"
          type_id="1"
          status="+"
          setter="enrica"
    />
          </attachment>
      

    </bug>

</bugzilla>