<?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>22122</bug_id>
          
          <creation_ts>2008-11-06 20:50:39 -0800</creation_ts>
          <short_desc>Use a stack-based object to make pushLayoutState() code safer</short_desc>
          <delta_ts>2008-11-07 11:17:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>hyatt</cc>
    
    <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>97904</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-06 20:50:39 -0800</bug_when>
    <thetext>6 different renderer classes have code that does:

view()-&gt;pushLayoutState(this,...)
...
view()-&gt;popLayoutState();

or, in some cases:
if (some condition)
  view()-&gt;pushLayoutState(this,...)
else
  view()-&gt;disableLayoutState();
...

if (some condition which we hope is the same as before)
  view()-&gt;popLayoutState();
else
  view()-&gt;enableLayoutState();

There is only one place where we assert that the push/pops matched, and that&apos;s at the outer level.

This is crying out for a stack-based class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97905</commentid>
    <comment_count>1</comment_count>
      <attachid>24961</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-06 20:57:05 -0800</bug_when>
    <thetext>Created attachment 24961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97906</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-06 20:57:51 -0800</bug_when>
    <thetext>LayoutStateMaintainer could use a better name. LayoutStateStack (but it&apos;s not actually the stack)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97908</commentid>
    <comment_count>3</comment_count>
      <attachid>24961</attachid>
    <who name="">mitz</who>
    <bug_when>2008-11-06 21:14:24 -0800</bug_when>
    <thetext>Comment on attachment 24961
Patch

+    RenderView*     m_view;
+    
+    bool            m_push;
+    bool            m_popped;

There should be a single space between type and variable name.

I like the idea of a stack-based object, but I think it would be better to go all the way and instead of explicit pop (and push) add scope around where you want the state pushed/disabled. I&apos;m interested in Hyatt&apos;s opinion as well :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97911</commentid>
    <comment_count>4</comment_count>
      <attachid>24963</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-06 21:34:09 -0800</bug_when>
    <thetext>Created attachment 24963
Patch with explicit push(), allowing use in RenderTableSection</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97913</commentid>
    <comment_count>5</comment_count>
      <attachid>24964</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-06 21:41:41 -0800</bug_when>
    <thetext>Created attachment 24964
Patch with scope, rather than explicit pop()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97914</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-06 21:42:29 -0800</bug_when>
    <thetext>The second patch gets a bit messy; have to move local variables outside the scope. I prefer the explicit pop() version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97915</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-06 21:43:12 -0800</bug_when>
    <thetext>Note that second patch is with --ignore-whitespace, to avoid showing all the indentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97948</commentid>
    <comment_count>8</comment_count>
      <attachid>24964</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-07 10:20:25 -0800</bug_when>
    <thetext>Comment on attachment 24964
Patch with scope, rather than explicit pop()

hyatt doesn&apos;t like this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97952</commentid>
    <comment_count>9</comment_count>
      <attachid>24963</attachid>
    <who name="">mitz</who>
    <bug_when>2008-11-07 11:13:08 -0800</bug_when>
    <thetext>Comment on attachment 24963
Patch with explicit push(), allowing use in RenderTableSection

&gt; +};
&gt; +
&gt; +
&gt;  } // namespace WebCore
&gt;  
&gt;  #endif // RenderView_h

Extra newline up there. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97953</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-11-07 11:17:40 -0800</bug_when>
    <thetext>Committed r38227
	M	WebCore/rendering/RenderFlexibleBox.cpp
	M	WebCore/rendering/RenderTableRow.cpp
	M	WebCore/rendering/RenderBlock.cpp
	M	WebCore/rendering/RenderTableSection.cpp
	M	WebCore/rendering/RenderContainer.cpp
	M	WebCore/rendering/RenderTable.cpp
	M	WebCore/rendering/RenderView.h
	M	WebCore/ChangeLog
r38227 = feaef2ebff2eea5fc2b9d46149a82e020dc88477 (trunk)
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24961</attachid>
            <date>2008-11-06 20:57:05 -0800</date>
            <delta_ts>2008-11-06 21:34:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>22122_patch.txt</filename>
            <type>text/plain</type>
            <size>8583</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cNaW5kZXgg
YTMzYmQ3Ni4uYzMwOTM2OCAxMDA2NDQNLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cNKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cNQEAgLTEsNSArMSwzMyBAQA0gMjAwOC0xMS0wNiAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4NIA0rICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4NKw0rICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIxMjINKyAgICAgICAgDSsgICAgICAgIFVzZSBhIHN0YWNrLWJhc2VkIG9iamVjdCB0byBz
aW1wbGlmeSB0aGUgcHVzaExheW91dFN0YXRlL3BvcExheW91dFN0YXRlDSsgICAgICAgIGNvZGUu
DSsNKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOg0rICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKToNKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpsYXlvdXRPbmx5UG9zaXRpb25lZE9iamVjdHMpOg0rICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJDb250YWluZXIuY3BwOg0rICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ29udGFpbmVyOjps
YXlvdXQpOg0rICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6DSsgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2spOg0rICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6DSsgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZTo6bGF5b3V0KToNKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwOg0rICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OmxheW91dCk6DSsgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6DSsgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZVNlY3Rpb246OmxheW91dFJvd3MpOg0rICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6
DSsgICAgICAgIChXZWJDb3JlOjpMYXlvdXRTdGF0ZU1haW50YWluZXI6OkxheW91dFN0YXRlTWFp
bnRhaW5lcik6DSsgICAgICAgIChXZWJDb3JlOjpMYXlvdXRTdGF0ZU1haW50YWluZXI6On5MYXlv
dXRTdGF0ZU1haW50YWluZXIpOg0rICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U3RhdGVNYWludGFp
bmVyOjpwb3ApOg0rICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U3RhdGVNYWludGFpbmVyOjpwdXNo
KToNKw0rMjAwOC0xMS0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4N
Kw0gICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0bw0gDSAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY3OA1kaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwDWluZGV4IGU0NjYzODYuLmFlZTY5OGMgMTAwNjQ0DS0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcA0rKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHANQEAgLTU5MiwxMSArNTkyLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9v
bCByZWxheW91dENoaWxkcmVuKQ0gICAgICAgICBvbGRPdXRsaW5lQm94ID0gYWJzb2x1dGVPdXRs
aW5lQm94KCk7DSAgICAgfQ0gDS0gICAgYm9vbCBoYWRDb2x1bW5zID0gbV9oYXNDb2x1bW5zOw0t
ICAgIGlmICghaGFkQ29sdW1ucyAmJiAhaGFzUmVmbGVjdGlvbigpKQ0tICAgICAgICB2aWV3KCkt
PnB1c2hMYXlvdXRTdGF0ZSh0aGlzLCBJbnRTaXplKHhQb3MoKSwgeVBvcygpKSk7DS0gICAgZWxz
ZQ0tICAgICAgICB2aWV3KCktPmRpc2FibGVMYXlvdXRTdGF0ZSgpOw0rICAgIExheW91dFN0YXRl
TWFpbnRhaW5lciBzdGF0ZVB1c2hlcih2aWV3KCksIHRoaXMsIEludFNpemUoeFBvcygpLCB5UG9z
KCkpLCAhbV9oYXNDb2x1bW5zICYmICFoYXNSZWZsZWN0aW9uKCkpOw0gDSAgICAgaW50IG9sZFdp
ZHRoID0gbV93aWR0aDsNICAgICBpbnQgb2xkQ29sdW1uV2lkdGggPSBkZXNpcmVkQ29sdW1uV2lk
dGgoKTsNQEAgLTcyNSwxMCArNzIxLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuKQ0gICAgICAgICB9DSAgICAgfQ0gDS0gICAgaWYgKCFoYWRD
b2x1bW5zICYmICFoYXNSZWZsZWN0aW9uKCkpDS0gICAgICAgIHZpZXcoKS0+cG9wTGF5b3V0U3Rh
dGUoKTsNLSAgICBlbHNlDS0gICAgICAgIHZpZXcoKS0+ZW5hYmxlTGF5b3V0U3RhdGUoKTsNKyAg
ICBzdGF0ZVB1c2hlci5wb3AoKTsNIA0gICAgIC8vIFVwZGF0ZSBvdXIgc2Nyb2xsIGluZm9ybWF0
aW9uIGlmIHdlJ3JlIG92ZXJmbG93OmF1dG8vc2Nyb2xsL2hpZGRlbiBub3cgdGhhdCB3ZSBrbm93
IGlmDSAgICAgLy8gd2Ugb3ZlcmZsb3cgb3Igbm90Lg1AQCAtMTM5NCwxMCArMTM4Nyw3IEBAIGJv
b2wgUmVuZGVyQmxvY2s6OmxheW91dE9ubHlQb3NpdGlvbmVkT2JqZWN0cygpDSAgICAgaWYgKCFw
b3NDaGlsZE5lZWRzTGF5b3V0KCkgfHwgbm9ybWFsQ2hpbGROZWVkc0xheW91dCgpIHx8IHNlbGZO
ZWVkc0xheW91dCgpKQ0gICAgICAgICByZXR1cm4gZmFsc2U7DSANLSAgICBpZiAoIW1faGFzQ29s
dW1ucykNLSAgICAgICAgdmlldygpLT5wdXNoTGF5b3V0U3RhdGUodGhpcywgSW50U2l6ZSh4UG9z
KCksIHlQb3MoKSkpOw0tICAgIGVsc2UNLSAgICAgICAgdmlldygpLT5kaXNhYmxlTGF5b3V0U3Rh
dGUoKTsNKyAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIodmlldygpLCB0aGlz
LCBJbnRTaXplKHhQb3MoKSwgeVBvcygpKSwgIW1faGFzQ29sdW1ucyk7DSANICAgICBpZiAobmVl
ZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQoKSkgew0gICAgICAgICB0cnlMYXlvdXREb2luZ1Bv
c2l0aW9uZWRNb3ZlbWVudE9ubHkoKTsNQEAgLTE0MDgsMTAgKzEzOTgsNyBAQCBib29sIFJlbmRl
ckJsb2NrOjpsYXlvdXRPbmx5UG9zaXRpb25lZE9iamVjdHMoKQ0gICAgIC8vIEFsbCB3ZSBoYXZl
IHRvIGlzIGxheSBvdXQgb3VyIHBvc2l0aW9uZWQgb2JqZWN0cy4NICAgICBsYXlvdXRQb3NpdGlv
bmVkT2JqZWN0cyhmYWxzZSk7DSANLSAgICBpZiAoIW1faGFzQ29sdW1ucykNLSAgICAgICAgdmll
dygpLT5wb3BMYXlvdXRTdGF0ZSgpOw0tICAgIGVsc2UNLSAgICAgICAgdmlldygpLT5lbmFibGVM
YXlvdXRTdGF0ZSgpOw0rICAgIHN0YXRlUHVzaGVyLnBvcCgpOw0gDSAgICAgaWYgKGhhc092ZXJm
bG93Q2xpcCgpKQ0gICAgICAgICBtX2xheWVyLT51cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQo
KTsNZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5lci5jcHAgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwDWluZGV4IDk4MjU2MDEuLjhjM2Ji
Y2EgMTAwNjQ0DS0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5lci5jcHANKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVyLmNwcA1AQCAtNTIwLDcgKzUyMCw3
IEBAIHZvaWQgUmVuZGVyQ29udGFpbmVyOjpsYXlvdXQoKQ0gew0gICAgIEFTU0VSVChuZWVkc0xh
eW91dCgpKTsNIA0tICAgIHZpZXcoKS0+cHVzaExheW91dFN0YXRlKHRoaXMsIEludFNpemUobV94
LCBtX3kpKTsNKyAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIodmlldygpLCB0
aGlzLCBJbnRTaXplKG1feCwgbV95KSk7DSANICAgICBSZW5kZXJPYmplY3QqIGNoaWxkID0gbV9m
aXJzdENoaWxkOw0gICAgIHdoaWxlIChjaGlsZCkgew1AQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQg
UmVuZGVyQ29udGFpbmVyOjpsYXlvdXQoKQ0gICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpOw0gICAgIH0NIA0tICAgIHZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsNKyAgICBzdGF0
ZVB1c2hlci5wb3AoKTsNICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7DSB9DSANZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcA1pbmRleCBhZmY3ZjliLi5lZGQxZTA0IDEwMDY0
NA0tLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHANKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwDUBAIC0yMTksMTAgKzIxOSw3IEBA
IHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJl
bikNICAgICAgICAgb2xkT3V0bGluZUJveCA9IGFic29sdXRlT3V0bGluZUJveCgpOw0gICAgIH0N
IA0tICAgIGlmICghaGFzUmVmbGVjdGlvbigpKQ0tICAgICAgICB2aWV3KCktPnB1c2hMYXlvdXRT
dGF0ZSh0aGlzLCBJbnRTaXplKG1feCwgbV95KSk7DS0gICAgZWxzZQ0tICAgICAgICB2aWV3KCkt
PmRpc2FibGVMYXlvdXRTdGF0ZSgpOw0rICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1
c2hlcih2aWV3KCksIHRoaXMsIEludFNpemUobV94LCBtX3kpLCAhaGFzUmVmbGVjdGlvbigpKTsN
IA0gICAgIGludCBwcmV2aW91c1dpZHRoID0gbV93aWR0aDsNICAgICBpbnQgcHJldmlvdXNIZWln
aHQgPSBtX2hlaWdodDsNQEAgLTMwOCwxMCArMzA1LDcgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJv
eDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuKQ0gICAgICAgICB9DSAgICAgfQ0g
DS0gICAgaWYgKCFoYXNSZWZsZWN0aW9uKCkpDS0gICAgICAgIHZpZXcoKS0+cG9wTGF5b3V0U3Rh
dGUoKTsNLSAgICBlbHNlDS0gICAgICAgIHZpZXcoKS0+ZW5hYmxlTGF5b3V0U3RhdGUoKTsNKyAg
ICBzdGF0ZVB1c2hlci5wb3AoKTsNIA0gICAgIC8vIFVwZGF0ZSBvdXIgc2Nyb2xsYmFycyBpZiB3
ZSdyZSBvdmVyZmxvdzphdXRvL3Njcm9sbC9oaWRkZW4gbm93IHRoYXQgd2Uga25vdyBpZg0gICAg
IC8vIHdlIG92ZXJmbG93IG9yIG5vdC4NZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcA1pbmRleCAw
MWU0MjBlLi5mMTUwOGU0IDEwMDY0NA0tLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHANKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwDUBAIC0yNjUsNyAr
MjY1LDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6bGF5b3V0KCkNICAgICAgICAgb2xkT3V0bGluZUJv
eCA9IGFic29sdXRlT3V0bGluZUJveCgpOw0gICAgIH0NICAgICANLSAgICB2aWV3KCktPnB1c2hM
YXlvdXRTdGF0ZSh0aGlzLCBJbnRTaXplKG1feCwgbV95KSk7DSsgICAgTGF5b3V0U3RhdGVNYWlu
dGFpbmVyIHN0YXRlUHVzaGVyKHZpZXcoKSwgdGhpcywgSW50U2l6ZShtX3gsIG1feSkpOw0gDSAg
ICAgbV9oZWlnaHQgPSAwOw0gICAgIG1fb3ZlcmZsb3dIZWlnaHQgPSAwOw1AQCAtNDI1LDcgKzQy
NSw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OmxheW91dCgpDSAgICAgICAgIH0NICAgICB9DSANLSAg
ICB2aWV3KCktPnBvcExheW91dFN0YXRlKCk7DSsgICAgc3RhdGVQdXNoZXIucG9wKCk7DSANICAg
ICBib29sIGRpZEZ1bGxSZXBhaW50ID0gdHJ1ZTsNICAgICAvLyBSZXBhaW50IHdpdGggb3VyIG5l
dyBib3VuZHMgaWYgdGhleSBhcmUgZGlmZmVyZW50IGZyb20gb3VyIG9sZCBib3VuZHMuDWRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHANaW5kZXggNGU5MzIzZC4uN2ZlODhlYiAxMDA2NDQN
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwDSsrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcA1AQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgUmVu
ZGVyVGFibGVSb3c6OmxheW91dCgpDSAgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOw0gDSAgICAg
Ly8gVGFibGUgcm93cyBkbyBub3QgYWRkIHRyYW5zbGF0aW9uLg0tICAgIHZpZXcoKS0+cHVzaExh
eW91dFN0YXRlKHRoaXMsIEludFNpemUoKSk7DSsgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0
YXRlUHVzaGVyKHZpZXcoKSwgdGhpcywgSW50U2l6ZSgpKTsNIA0gICAgIGZvciAoUmVuZGVyT2Jq
ZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJs
aW5nKCkpIHsNICAgICAgICAgaWYgKGNoaWxkLT5pc1RhYmxlQ2VsbCgpKSB7DUBAIC0xNDgsNyAr
MTQ4LDcgQEAgdm9pZCBSZW5kZXJUYWJsZVJvdzo6bGF5b3V0KCkNICAgICAgICAgfQ0gICAgIH0N
IA0tICAgIHZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsNKyAgICBzdGF0ZVB1c2hlci5wb3AoKTsN
ICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7DSB9DSANZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVNlY3Rpb24uY3BwDWluZGV4IGVhZTU3MTMuLjA1M2IxNGQgMTAwNjQ0DS0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHANKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcA1AQCAtNDU2LDcgKzQ1Niw3IEBAIGludCBSZW5kZXJU
YWJsZVNlY3Rpb246OmxheW91dFJvd3MoaW50IHRvQWRkKQ0gICAgIGludCB2c3BhY2luZyA9IHRh
YmxlKCktPnZCb3JkZXJTcGFjaW5nKCk7DSAgICAgaW50IG5FZmZDb2xzID0gdGFibGUoKS0+bnVt
RWZmQ29scygpOw0gDS0gICAgdmlldygpLT5wdXNoTGF5b3V0U3RhdGUodGhpcywgSW50U2l6ZSht
X3gsIG1feSkpOw0rICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcih2aWV3KCks
IHRoaXMsIEludFNpemUobV94LCBtX3kpKTsNIA0gICAgIGZvciAoaW50IHIgPSAwOyByIDwgdG90
YWxSb3dzOyByKyspIHsNICAgICAgICAgLy8gU2V0IHRoZSByb3cncyB4L3kgcG9zaXRpb24gYW5k
IHdpZHRoL2hlaWdodC4NQEAgLTU3NSw3ICs1NzUsNyBAQCBpbnQgUmVuZGVyVGFibGVTZWN0aW9u
OjpsYXlvdXRSb3dzKGludCB0b0FkZCkNICAgICAgICAgfQ0gICAgIH0NIA0tICAgIHZpZXcoKS0+
cG9wTGF5b3V0U3RhdGUoKTsNKyAgICBzdGF0ZVB1c2hlci5wb3AoKTsNIA0gICAgIG1faGVpZ2h0
ID0gbV9yb3dQb3NbdG90YWxSb3dzXTsNICAgICBtX292ZXJmbG93SGVpZ2h0ID0gbWF4KG1fb3Zl
cmZsb3dIZWlnaHQsIG1faGVpZ2h0KTsNZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaA1pbmRleCA2NTM2OTc5
Li40ZGYxZTE1IDEwMDY0NA0tLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgNKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oDUBAIC0xNTcsNiArMTU3LDUxIEBAIHBy
aXZhdGU6DSAgICAgdW5zaWduZWQgbV9sYXlvdXRTdGF0ZURpc2FibGVDb3VudDsNIH07DSANKy8v
IFN0YWNrLWJhc2VkIGNsYXNzIHRvIGFzc2lzdCB3aXRoIExheW91dFN0YXRlIHB1c2gvcG9wDStj
bGFzcyBMYXlvdXRTdGF0ZU1haW50YWluZXIgOiBOb25jb3B5YWJsZSB7DStwdWJsaWM6DSsNKyAg
ICBMYXlvdXRTdGF0ZU1haW50YWluZXIoUmVuZGVyVmlldyogdmlldywgUmVuZGVyQm94KiByb290
LCBJbnRTaXplIG9mZnNldCwgYm9vbCBzaG91bGRQdXNoID0gdHJ1ZSkNKyAgICAgICAgOiBtX3Zp
ZXcodmlldykNKyAgICAgICAgLCBtX3B1c2goc2hvdWxkUHVzaCkNKyAgICAgICAgLCBtX3BvcHBl
ZChmYWxzZSkNKyAgICB7DSsgICAgICAgIHB1c2gocm9vdCwgb2Zmc2V0KTsNKyAgICB9DSsgICAg
DSsgICAgfkxheW91dFN0YXRlTWFpbnRhaW5lcigpDSsgICAgew0rICAgICAgICBpZiAoIW1fcG9w
cGVkKQ0rICAgICAgICAgICAgcG9wKCk7DSsgICAgfQ0rDSsgICAgdm9pZCBwb3AoKQ0rICAgIHsN
KyAgICAgICAgQVNTRVJUKCFtX3BvcHBlZCk7DSsgICAgICAgIGlmIChtX3B1c2gpDSsgICAgICAg
ICAgICBtX3ZpZXctPnBvcExheW91dFN0YXRlKCk7DSsgICAgICAgIGVsc2UNKyAgICAgICAgICAg
IG1fdmlldy0+ZW5hYmxlTGF5b3V0U3RhdGUoKTsNKyAgICAgICAgbV9wb3BwZWQgPSB0cnVlOw0r
ICAgIH0NKyAgICANK3ByaXZhdGU6DSsNKyAgICB2b2lkIHB1c2goUmVuZGVyQm94KiByb290LCBJ
bnRTaXplIG9mZnNldCkNKyAgICB7DSsgICAgICAgIGlmIChtX3B1c2gpDSsgICAgICAgICAgICBt
X3ZpZXctPnB1c2hMYXlvdXRTdGF0ZShyb290LCBvZmZzZXQpOw0rICAgICAgICBlbHNlDSsgICAg
ICAgICAgICBtX3ZpZXctPmRpc2FibGVMYXlvdXRTdGF0ZSgpOw0rICAgIH0NKyAgICANKyAgICBS
ZW5kZXJWaWV3KiAgICAgbV92aWV3Ow0rICAgIA0rICAgIGJvb2wgICAgICAgICAgICBtX3B1c2g7
DSsgICAgYm9vbCAgICAgICAgICAgIG1fcG9wcGVkOw0rfTsNKw0rDSB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlDSANICNlbmRpZiAvLyBSZW5kZXJWaWV3X2gN
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24963</attachid>
            <date>2008-11-06 21:34:09 -0800</date>
            <delta_ts>2008-11-07 11:13:08 -0800</delta_ts>
            <desc>Patch with explicit push(), allowing use in RenderTableSection</desc>
            <filename>22122_patch_no_scope.txt</filename>
            <type>text/plain</type>
            <size>11923</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTMzYmQ3Ni4uYzMwOTM2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzMyBAQAogMjAwOC0xMS0wNiAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIxMjIKKyAgICAgICAgCisgICAgICAgIFVzZSBhIHN0YWNrLWJhc2VkIG9iamVjdCB0byBz
aW1wbGlmeSB0aGUgcHVzaExheW91dFN0YXRlL3BvcExheW91dFN0YXRlCisgICAgICAgIGNvZGUu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpsYXlvdXRPbmx5UG9zaXRpb25lZE9iamVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ29udGFpbmVyOjps
YXlvdXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2spOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZTo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OmxheW91dCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZVNlY3Rpb246OmxheW91dFJvd3MpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRTdGF0ZU1haW50YWluZXI6OkxheW91dFN0YXRlTWFp
bnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRTdGF0ZU1haW50YWluZXI6On5MYXlv
dXRTdGF0ZU1haW50YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U3RhdGVNYWludGFp
bmVyOjpwb3ApOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U3RhdGVNYWludGFpbmVyOjpwdXNo
KToKKworMjAwOC0xMS0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
KwogICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0bwogCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY3OApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCmluZGV4IGU0NjYzODYuLmFlZTY5OGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKQEAgLTU5MiwxMSArNTkyLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9v
bCByZWxheW91dENoaWxkcmVuKQogICAgICAgICBvbGRPdXRsaW5lQm94ID0gYWJzb2x1dGVPdXRs
aW5lQm94KCk7CiAgICAgfQogCi0gICAgYm9vbCBoYWRDb2x1bW5zID0gbV9oYXNDb2x1bW5zOwot
ICAgIGlmICghaGFkQ29sdW1ucyAmJiAhaGFzUmVmbGVjdGlvbigpKQotICAgICAgICB2aWV3KCkt
PnB1c2hMYXlvdXRTdGF0ZSh0aGlzLCBJbnRTaXplKHhQb3MoKSwgeVBvcygpKSk7Ci0gICAgZWxz
ZQotICAgICAgICB2aWV3KCktPmRpc2FibGVMYXlvdXRTdGF0ZSgpOworICAgIExheW91dFN0YXRl
TWFpbnRhaW5lciBzdGF0ZVB1c2hlcih2aWV3KCksIHRoaXMsIEludFNpemUoeFBvcygpLCB5UG9z
KCkpLCAhbV9oYXNDb2x1bW5zICYmICFoYXNSZWZsZWN0aW9uKCkpOwogCiAgICAgaW50IG9sZFdp
ZHRoID0gbV93aWR0aDsKICAgICBpbnQgb2xkQ29sdW1uV2lkdGggPSBkZXNpcmVkQ29sdW1uV2lk
dGgoKTsKQEAgLTcyNSwxMCArNzIxLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFoYWRD
b2x1bW5zICYmICFoYXNSZWZsZWN0aW9uKCkpCi0gICAgICAgIHZpZXcoKS0+cG9wTGF5b3V0U3Rh
dGUoKTsKLSAgICBlbHNlCi0gICAgICAgIHZpZXcoKS0+ZW5hYmxlTGF5b3V0U3RhdGUoKTsKKyAg
ICBzdGF0ZVB1c2hlci5wb3AoKTsKIAogICAgIC8vIFVwZGF0ZSBvdXIgc2Nyb2xsIGluZm9ybWF0
aW9uIGlmIHdlJ3JlIG92ZXJmbG93OmF1dG8vc2Nyb2xsL2hpZGRlbiBub3cgdGhhdCB3ZSBrbm93
IGlmCiAgICAgLy8gd2Ugb3ZlcmZsb3cgb3Igbm90LgpAQCAtMTM5NCwxMCArMTM4Nyw3IEBAIGJv
b2wgUmVuZGVyQmxvY2s6OmxheW91dE9ubHlQb3NpdGlvbmVkT2JqZWN0cygpCiAgICAgaWYgKCFw
b3NDaGlsZE5lZWRzTGF5b3V0KCkgfHwgbm9ybWFsQ2hpbGROZWVkc0xheW91dCgpIHx8IHNlbGZO
ZWVkc0xheW91dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIW1faGFzQ29s
dW1ucykKLSAgICAgICAgdmlldygpLT5wdXNoTGF5b3V0U3RhdGUodGhpcywgSW50U2l6ZSh4UG9z
KCksIHlQb3MoKSkpOwotICAgIGVsc2UKLSAgICAgICAgdmlldygpLT5kaXNhYmxlTGF5b3V0U3Rh
dGUoKTsKKyAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIodmlldygpLCB0aGlz
LCBJbnRTaXplKHhQb3MoKSwgeVBvcygpKSwgIW1faGFzQ29sdW1ucyk7CiAKICAgICBpZiAobmVl
ZHNQb3NpdGlvbmVkTW92ZW1lbnRMYXlvdXQoKSkgewogICAgICAgICB0cnlMYXlvdXREb2luZ1Bv
c2l0aW9uZWRNb3ZlbWVudE9ubHkoKTsKQEAgLTE0MDgsMTAgKzEzOTgsNyBAQCBib29sIFJlbmRl
ckJsb2NrOjpsYXlvdXRPbmx5UG9zaXRpb25lZE9iamVjdHMoKQogICAgIC8vIEFsbCB3ZSBoYXZl
IHRvIGlzIGxheSBvdXQgb3VyIHBvc2l0aW9uZWQgb2JqZWN0cy4KICAgICBsYXlvdXRQb3NpdGlv
bmVkT2JqZWN0cyhmYWxzZSk7CiAKLSAgICBpZiAoIW1faGFzQ29sdW1ucykKLSAgICAgICAgdmll
dygpLT5wb3BMYXlvdXRTdGF0ZSgpOwotICAgIGVsc2UKLSAgICAgICAgdmlldygpLT5lbmFibGVM
YXlvdXRTdGF0ZSgpOworICAgIHN0YXRlUHVzaGVyLnBvcCgpOwogCiAgICAgaWYgKGhhc092ZXJm
bG93Q2xpcCgpKQogICAgICAgICBtX2xheWVyLT51cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQo
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5lci5jcHAgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb250YWluZXIuY3BwCmluZGV4IDk4MjU2MDEuLjhjM2Ji
Y2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbnRhaW5lci5jcHAKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVyLmNwcApAQCAtNTIwLDcgKzUyMCw3
IEBAIHZvaWQgUmVuZGVyQ29udGFpbmVyOjpsYXlvdXQoKQogewogICAgIEFTU0VSVChuZWVkc0xh
eW91dCgpKTsKIAotICAgIHZpZXcoKS0+cHVzaExheW91dFN0YXRlKHRoaXMsIEludFNpemUobV94
LCBtX3kpKTsKKyAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIodmlldygpLCB0
aGlzLCBJbnRTaXplKG1feCwgbV95KSk7CiAKICAgICBSZW5kZXJPYmplY3QqIGNoaWxkID0gbV9m
aXJzdENoaWxkOwogICAgIHdoaWxlIChjaGlsZCkgewpAQCAtNTI5LDcgKzUyOSw3IEBAIHZvaWQg
UmVuZGVyQ29udGFpbmVyOjpsYXlvdXQoKQogICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpOwogICAgIH0KIAotICAgIHZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsKKyAgICBzdGF0
ZVB1c2hlci5wb3AoKTsKICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCBhZmY3ZjliLi5lZGQxZTA0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0yMTksMTAgKzIxOSw3IEBA
IHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJl
bikKICAgICAgICAgb2xkT3V0bGluZUJveCA9IGFic29sdXRlT3V0bGluZUJveCgpOwogICAgIH0K
IAotICAgIGlmICghaGFzUmVmbGVjdGlvbigpKQotICAgICAgICB2aWV3KCktPnB1c2hMYXlvdXRT
dGF0ZSh0aGlzLCBJbnRTaXplKG1feCwgbV95KSk7Ci0gICAgZWxzZQotICAgICAgICB2aWV3KCkt
PmRpc2FibGVMYXlvdXRTdGF0ZSgpOworICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1
c2hlcih2aWV3KCksIHRoaXMsIEludFNpemUobV94LCBtX3kpLCAhaGFzUmVmbGVjdGlvbigpKTsK
IAogICAgIGludCBwcmV2aW91c1dpZHRoID0gbV93aWR0aDsKICAgICBpbnQgcHJldmlvdXNIZWln
aHQgPSBtX2hlaWdodDsKQEAgLTMwOCwxMCArMzA1LDcgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJv
eDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKCFoYXNSZWZsZWN0aW9uKCkpCi0gICAgICAgIHZpZXcoKS0+cG9wTGF5b3V0U3Rh
dGUoKTsKLSAgICBlbHNlCi0gICAgICAgIHZpZXcoKS0+ZW5hYmxlTGF5b3V0U3RhdGUoKTsKKyAg
ICBzdGF0ZVB1c2hlci5wb3AoKTsKIAogICAgIC8vIFVwZGF0ZSBvdXIgc2Nyb2xsYmFycyBpZiB3
ZSdyZSBvdmVyZmxvdzphdXRvL3Njcm9sbC9oaWRkZW4gbm93IHRoYXQgd2Uga25vdyBpZgogICAg
IC8vIHdlIG92ZXJmbG93IG9yIG5vdC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCAw
MWU0MjBlLi5mMTUwOGU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0yNjUsNyAr
MjY1LDcgQEAgdm9pZCBSZW5kZXJUYWJsZTo6bGF5b3V0KCkKICAgICAgICAgb2xkT3V0bGluZUJv
eCA9IGFic29sdXRlT3V0bGluZUJveCgpOwogICAgIH0KICAgICAKLSAgICB2aWV3KCktPnB1c2hM
YXlvdXRTdGF0ZSh0aGlzLCBJbnRTaXplKG1feCwgbV95KSk7CisgICAgTGF5b3V0U3RhdGVNYWlu
dGFpbmVyIHN0YXRlUHVzaGVyKHZpZXcoKSwgdGhpcywgSW50U2l6ZShtX3gsIG1feSkpOwogCiAg
ICAgbV9oZWlnaHQgPSAwOwogICAgIG1fb3ZlcmZsb3dIZWlnaHQgPSAwOwpAQCAtNDI1LDcgKzQy
NSw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OmxheW91dCgpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICB2aWV3KCktPnBvcExheW91dFN0YXRlKCk7CisgICAgc3RhdGVQdXNoZXIucG9wKCk7CiAKICAg
ICBib29sIGRpZEZ1bGxSZXBhaW50ID0gdHJ1ZTsKICAgICAvLyBSZXBhaW50IHdpdGggb3VyIG5l
dyBib3VuZHMgaWYgdGhleSBhcmUgZGlmZmVyZW50IGZyb20gb3VyIG9sZCBib3VuZHMuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKaW5kZXggNGU5MzIzZC4uN2ZlODhlYiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgUmVu
ZGVyVGFibGVSb3c6OmxheW91dCgpCiAgICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOwogCiAgICAg
Ly8gVGFibGUgcm93cyBkbyBub3QgYWRkIHRyYW5zbGF0aW9uLgotICAgIHZpZXcoKS0+cHVzaExh
eW91dFN0YXRlKHRoaXMsIEludFNpemUoKSk7CisgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0
YXRlUHVzaGVyKHZpZXcoKSwgdGhpcywgSW50U2l6ZSgpKTsKIAogICAgIGZvciAoUmVuZGVyT2Jq
ZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJs
aW5nKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5pc1RhYmxlQ2VsbCgpKSB7CkBAIC0xNDgsNyAr
MTQ4LDcgQEAgdm9pZCBSZW5kZXJUYWJsZVJvdzo6bGF5b3V0KCkKICAgICAgICAgfQogICAgIH0K
IAotICAgIHZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsKKyAgICBzdGF0ZVB1c2hlci5wb3AoKTsK
ICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVNlY3Rpb24uY3BwCmluZGV4IGVhZTU3MTMuLjAyYTE5MmQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtMjU3LDggKzI1Nyw5IEBAIHZvaWQgUmVuZGVy
VGFibGVTZWN0aW9uOjphZGRDZWxsKFJlbmRlclRhYmxlQ2VsbCogY2VsbCwgUmVuZGVyT2JqZWN0
KiByb3cpCiB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6c2V0Q2VsbFdpZHRocygpCiB7CiAgICAg
VmVjdG9yPGludD4mIGNvbHVtblBvcyA9IHRhYmxlKCktPmNvbHVtblBvc2l0aW9ucygpOwotICAg
IGJvb2wgcHVzaGVkTGF5b3V0U3RhdGUgPSBmYWxzZTsKIAorICAgIExheW91dFN0YXRlTWFpbnRh
aW5lciBzdGF0ZVB1c2hlcih2aWV3KCkpOworICAgIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bV9ncmlkUm93czsgaSsrKSB7CiAgICAgICAgIFJvdyYgcm93ID0gKm1fZ3JpZFtpXS5yb3c7CiAg
ICAgICAgIGludCBjb2xzID0gcm93LnNpemUoKTsKQEAgLTI3OSwxMSArMjgwLDEwIEBAIHZvaWQg
UmVuZGVyVGFibGVTZWN0aW9uOjpzZXRDZWxsV2lkdGhzKCkKICAgICAgICAgICAgIGlmICh3ICE9
IG9sZFdpZHRoKSB7CiAgICAgICAgICAgICAgICAgY2VsbC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7
CiAgICAgICAgICAgICAgICAgaWYgKCF0YWJsZSgpLT5zZWxmTmVlZHNMYXlvdXQoKSAmJiBjZWxs
LT5jaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKSkgewotICAgICAgICAgICAgICAgICAgICBp
ZiAoIXB1c2hlZExheW91dFN0YXRlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghc3RhdGVQ
dXNoZXIuZGlkUHVzaCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUZWNobmljYWxs
eSwgd2Ugc2hvdWxkIGFsc28gcHVzaCBzdGF0ZSBmb3IgdGhlIHJvdywgYnV0IHNpbmNlCiAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyByb3dzIGRvbid0IHB1c2ggYSBjb29yZGluYXRlIHRyYW5z
Zm9ybSwgdGhhdCdzIG5vdCBuZWNlc3NhcnkuCi0gICAgICAgICAgICAgICAgICAgICAgICB2aWV3
KCktPnB1c2hMYXlvdXRTdGF0ZSh0aGlzLCBJbnRTaXplKG1feCwgbV95KSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoZWRMYXlvdXRTdGF0ZSA9IHRydWU7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0ZVB1c2hlci5wdXNoKHRoaXMsIEludFNpemUobV94LCBtX3kpKTsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBjZWxsLT5yZXBhaW50KCk7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtMjkyLDggKzI5Miw3IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0
aW9uOjpzZXRDZWxsV2lkdGhzKCkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBpZiAocHVz
aGVkTGF5b3V0U3RhdGUpCi0gICAgICAgIHZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsKKyAgICBz
dGF0ZVB1c2hlci5wb3AoKTsgIC8vIG9ubHkgcG9wcyBpZiB3ZSBwdXNoZWQKIH0KIAogaW50IFJl
bmRlclRhYmxlU2VjdGlvbjo6Y2FsY1Jvd0hlaWdodCgpCkBAIC0zMDEsNyArMzAwLDggQEAgaW50
IFJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY1Jvd0hlaWdodCgpCiAgICAgUmVuZGVyVGFibGVDZWxs
KiBjZWxsOwogCiAgICAgaW50IHNwYWNpbmcgPSB0YWJsZSgpLT52Qm9yZGVyU3BhY2luZygpOwot
ICAgIGJvb2wgcHVzaGVkTGF5b3V0U3RhdGUgPSBmYWxzZTsKKworICAgIExheW91dFN0YXRlTWFp
bnRhaW5lciBzdGF0ZVB1c2hlcih2aWV3KCkpOwogCiAgICAgbV9yb3dQb3MucmVzaXplKG1fZ3Jp
ZFJvd3MgKyAxKTsKICAgICBtX3Jvd1Bvc1swXSA9IHNwYWNpbmc7CkBAIC0zMzAsMTEgKzMzMCwx
MCBAQCBpbnQgUmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjUm93SGVpZ2h0KCkKICAgICAgICAgICAg
IGludCBpbmR4ID0gbWF4KHIgLSBjZWxsLT5yb3dTcGFuKCkgKyAxLCAwKTsKIAogICAgICAgICAg
ICAgaWYgKGNlbGwtPm92ZXJyaWRlU2l6ZSgpICE9IC0xKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCFwdXNoZWRMYXlvdXRTdGF0ZSkgeworICAgICAgICAgICAgICAgIGlmICghc3RhdGVQdXNoZXIu
ZGlkUHVzaCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRlY2huaWNhbGx5LCB3ZSBzaG91
bGQgYWxzbyBwdXNoIHN0YXRlIGZvciB0aGUgcm93LCBidXQgc2luY2UKICAgICAgICAgICAgICAg
ICAgICAgLy8gcm93cyBkb24ndCBwdXNoIGEgY29vcmRpbmF0ZSB0cmFuc2Zvcm0sIHRoYXQncyBu
b3QgbmVjZXNzYXJ5LgotICAgICAgICAgICAgICAgICAgICB2aWV3KCktPnB1c2hMYXlvdXRTdGF0
ZSh0aGlzLCBJbnRTaXplKG1feCwgbV95KSk7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2hlZExh
eW91dFN0YXRlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVQdXNoZXIucHVzaCh0
aGlzLCBJbnRTaXplKG1feCwgbV95KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGNlbGwtPnNldE92ZXJyaWRlU2l6ZSgtMSk7CiAgICAgICAgICAgICAgICAgY2VsbC0+c2V0
Q2hpbGROZWVkc0xheW91dCh0cnVlLCBmYWxzZSk7CkBAIC0zNzMsOCArMzcyLDcgQEAgaW50IFJl
bmRlclRhYmxlU2VjdGlvbjo6Y2FsY1Jvd0hlaWdodCgpCiAgICAgICAgIG1fcm93UG9zW3IgKyAx
XSA9IG1heChtX3Jvd1Bvc1tyICsgMV0sIG1fcm93UG9zW3JdKTsKICAgICB9CiAKLSAgICBpZiAo
cHVzaGVkTGF5b3V0U3RhdGUpCi0gICAgICAgIHZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsKKyAg
ICBzdGF0ZVB1c2hlci5wb3AoKTsKIAogICAgIHJldHVybiBtX3Jvd1Bvc1ttX2dyaWRSb3dzXTsK
IH0KQEAgLTQ1Niw3ICs0NTQsNyBAQCBpbnQgUmVuZGVyVGFibGVTZWN0aW9uOjpsYXlvdXRSb3dz
KGludCB0b0FkZCkKICAgICBpbnQgdnNwYWNpbmcgPSB0YWJsZSgpLT52Qm9yZGVyU3BhY2luZygp
OwogICAgIGludCBuRWZmQ29scyA9IHRhYmxlKCktPm51bUVmZkNvbHMoKTsKIAotICAgIHZpZXco
KS0+cHVzaExheW91dFN0YXRlKHRoaXMsIEludFNpemUobV94LCBtX3kpKTsKKyAgICBMYXlvdXRT
dGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIodmlldygpLCB0aGlzLCBJbnRTaXplKG1feCwgbV95
KSk7CiAKICAgICBmb3IgKGludCByID0gMDsgciA8IHRvdGFsUm93czsgcisrKSB7CiAgICAgICAg
IC8vIFNldCB0aGUgcm93J3MgeC95IHBvc2l0aW9uIGFuZCB3aWR0aC9oZWlnaHQuCkBAIC01NzUs
NyArNTczLDcgQEAgaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6bGF5b3V0Um93cyhpbnQgdG9BZGQp
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2aWV3KCktPnBvcExheW91dFN0YXRlKCk7CisgICAg
c3RhdGVQdXNoZXIucG9wKCk7CiAKICAgICBtX2hlaWdodCA9IG1fcm93UG9zW3RvdGFsUm93c107
CiAgICAgbV9vdmVyZmxvd0hlaWdodCA9IG1heChtX292ZXJmbG93SGVpZ2h0LCBtX2hlaWdodCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggNjUzNjk3OS4uZmQyZjZlNSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuaApAQCAtMTU3LDYgKzE1Nyw2OSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1f
bGF5b3V0U3RhdGVEaXNhYmxlQ291bnQ7CiB9OwogCisvLyBTdGFjay1iYXNlZCBjbGFzcyB0byBh
c3Npc3Qgd2l0aCBMYXlvdXRTdGF0ZSBwdXNoL3BvcAorY2xhc3MgTGF5b3V0U3RhdGVNYWludGFp
bmVyIDogTm9uY29weWFibGUgeworcHVibGljOgorCisgICAgLy8gY3RvciB0byBwdXNoIG5vdwor
ICAgIExheW91dFN0YXRlTWFpbnRhaW5lcihSZW5kZXJWaWV3KiB2aWV3LCBSZW5kZXJCb3gqIHJv
b3QsIEludFNpemUgb2Zmc2V0LCBib29sIHNob3VsZFB1c2ggPSB0cnVlKQorICAgICAgICA6IG1f
dmlldyh2aWV3KQorICAgICAgICAsIG1fc2hvdWxkUHVzaFBvcChzaG91bGRQdXNoKQorICAgICAg
ICAsIG1fZGlkU3RhcnQoZmFsc2UpCisgICAgICAgICwgbV9kaWRFbmQoZmFsc2UpCisgICAgewor
ICAgICAgICBwdXNoKHJvb3QsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIC8vIGN0b3IgdG8g
bWF5YmUgcHVzaCBsYXRlcgorICAgIExheW91dFN0YXRlTWFpbnRhaW5lcihSZW5kZXJWaWV3KiB2
aWV3KQorICAgICAgICA6IG1fdmlldyh2aWV3KQorICAgICAgICAsIG1fc2hvdWxkUHVzaFBvcCh0
cnVlKQorICAgICAgICAsIG1fZGlkU3RhcnQoZmFsc2UpCisgICAgICAgICwgbV9kaWRFbmQoZmFs
c2UpCisgICAgeworICAgIH0KKyAgICAKKyAgICB+TGF5b3V0U3RhdGVNYWludGFpbmVyKCkKKyAg
ICB7CisgICAgICAgIGlmICghbV9kaWRFbmQpCisgICAgICAgICAgICBwb3AoKTsKKyAgICB9CisK
KyAgICB2b2lkIHBvcCgpCisgICAgeworICAgICAgICBpZiAobV9kaWRTdGFydCkgeworICAgICAg
ICAgICAgQVNTRVJUKCFtX2RpZEVuZCk7CisgICAgICAgICAgICBpZiAobV9zaG91bGRQdXNoUG9w
KQorICAgICAgICAgICAgICAgIG1fdmlldy0+cG9wTGF5b3V0U3RhdGUoKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBtX3ZpZXctPmVuYWJsZUxheW91dFN0YXRlKCk7CisgICAg
ICAgICAgICBtX2RpZEVuZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHB1
c2goUmVuZGVyQm94KiByb290LCBJbnRTaXplIG9mZnNldCkKKyAgICB7CisgICAgICAgIEFTU0VS
VCghbV9kaWRTdGFydCk7CisgICAgICAgIGlmIChtX3Nob3VsZFB1c2hQb3ApCisgICAgICAgICAg
ICBtX3ZpZXctPnB1c2hMYXlvdXRTdGF0ZShyb290LCBvZmZzZXQpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX3ZpZXctPmRpc2FibGVMYXlvdXRTdGF0ZSgpOworICAgICAgICBtX2RpZFN0
YXJ0ID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgYm9vbCBkaWRQdXNoKCkgY29uc3QgeyByZXR1
cm4gbV9kaWRTdGFydDsgfQorCitwcml2YXRlOgorICAgIAorICAgIFJlbmRlclZpZXcqIG1fdmll
dzsKKyAgICAKKyAgICBib29sIG1fc2hvdWxkUHVzaFBvcCA6IDE7ICAgLy8gdHJ1ZSBpZiB3ZSBz
aG91bGQgcHVzaC9wb3AsIHJhdGhlciB0aGFuIGRpc2FibGUvZW5hYmxlCisgICAgYm9vbCBtX2Rp
ZFN0YXJ0IDogMTsgICAgICAgIC8vIHRydWUgaWYgd2UgZGlkIGEgcHVzaCBvciBkaXNhYmxlCisg
ICAgYm9vbCBtX2RpZEVuZCA6IDE7ICAgICAgICAgIC8vIHRydWUgaWYgd2UgcG9wcGVkIG9yIHJl
LWVuYWJsZWQKK307CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUmVu
ZGVyVmlld19oCg==
</data>
<flag name="review"
          id="11459"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24964</attachid>
            <date>2008-11-06 21:41:41 -0800</date>
            <delta_ts>2008-11-07 10:20:25 -0800</delta_ts>
            <desc>Patch with scope, rather than explicit pop()</desc>
            <filename>22122_patch_with_scope.txt</filename>
            <type>text/plain</type>
            <size>13888</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTMzYmQ3Ni4uYzMwOTM2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzMyBAQAogMjAwOC0xMS0wNiAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjIxMjIKKyAgICAgICAgCisgICAgICAgIFVzZSBhIHN0YWNrLWJhc2VkIG9iamVjdCB0byBz
aW1wbGlmeSB0aGUgcHVzaExheW91dFN0YXRlL3BvcExheW91dFN0YXRlCisgICAgICAgIGNvZGUu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjpsYXlvdXRPbmx5UG9zaXRpb25lZE9iamVjdHMpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ29udGFpbmVyOjps
YXlvdXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2spOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZTo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6OmxheW91dCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZVNlY3Rpb246OmxheW91dFJvd3MpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRTdGF0ZU1haW50YWluZXI6OkxheW91dFN0YXRlTWFp
bnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRTdGF0ZU1haW50YWluZXI6On5MYXlv
dXRTdGF0ZU1haW50YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U3RhdGVNYWludGFp
bmVyOjpwb3ApOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U3RhdGVNYWludGFpbmVyOjpwdXNo
KToKKworMjAwOC0xMS0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
KwogICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0bwogCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTY3OApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCmluZGV4IGU0NjYzODYuLmRkN2NiNzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKQEAgLTU5MiwxMSArNTkyLDExIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKGJv
b2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAgb2xkT3V0bGluZUJveCA9IGFic29sdXRlT3V0
bGluZUJveCgpOwogICAgIH0KIAotICAgIGJvb2wgaGFkQ29sdW1ucyA9IG1faGFzQ29sdW1uczsK
LSAgICBpZiAoIWhhZENvbHVtbnMgJiYgIWhhc1JlZmxlY3Rpb24oKSkKLSAgICAgICAgdmlldygp
LT5wdXNoTGF5b3V0U3RhdGUodGhpcywgSW50U2l6ZSh4UG9zKCksIHlQb3MoKSkpOwotICAgIGVs
c2UKLSAgICAgICAgdmlldygpLT5kaXNhYmxlTGF5b3V0U3RhdGUoKTsKKyAgICBpbnQgcmVwYWlu
dFRvcCA9IDA7CisgICAgaW50IHJlcGFpbnRCb3R0b20gPSAwOworICAgIGludCBtYXhGbG9hdEJv
dHRvbSA9IDA7CisgICAgeworICAgICAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNo
ZXIodmlldygpLCB0aGlzLCBJbnRTaXplKHhQb3MoKSwgeVBvcygpKSwgIW1faGFzQ29sdW1ucyAm
JiAhaGFzUmVmbGVjdGlvbigpKTsKIAogICAgIGludCBvbGRXaWR0aCA9IG1fd2lkdGg7CiAgICAg
aW50IG9sZENvbHVtbldpZHRoID0gZGVzaXJlZENvbHVtbldpZHRoKCk7CkBAIC02NDksOSArNjQ5
LDYgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVu
KQogICAgICAgICAgICAgbV9sYXllci0+c2V0SGFzVmVydGljYWxTY3JvbGxiYXIodHJ1ZSk7CiAg
ICAgfQogCi0gICAgaW50IHJlcGFpbnRUb3AgPSAwOwotICAgIGludCByZXBhaW50Qm90dG9tID0g
MDsKLSAgICBpbnQgbWF4RmxvYXRCb3R0b20gPSAwOwogICAgIGlmIChjaGlsZHJlbklubGluZSgp
KQogICAgICAgICBsYXlvdXRJbmxpbmVDaGlsZHJlbihyZWxheW91dENoaWxkcmVuLCByZXBhaW50
VG9wLCByZXBhaW50Qm90dG9tKTsKICAgICBlbHNlCkBAIC03MjQsMTEgKzcyMSw3IEBAIHZvaWQg
UmVuZGVyQmxvY2s6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikKICAgICAgICAg
ICAgIG1fb3ZlcmZsb3dIZWlnaHQgPSBtYXgobV9vdmVyZmxvd0hlaWdodCwgcmVmbGVjdGlvbkJv
eCgpLmJvdHRvbSgpKTsKICAgICAgICAgfQogICAgIH0KLQotICAgIGlmICghaGFkQ29sdW1ucyAm
JiAhaGFzUmVmbGVjdGlvbigpKQotICAgICAgICB2aWV3KCktPnBvcExheW91dFN0YXRlKCk7Ci0g
ICAgZWxzZQotICAgICAgICB2aWV3KCktPmVuYWJsZUxheW91dFN0YXRlKCk7CisgICAgfSAgIC8v
IHNjb3BlIGZvciBzdGF0ZVB1c2hlcgogCiAgICAgLy8gVXBkYXRlIG91ciBzY3JvbGwgaW5mb3Jt
YXRpb24gaWYgd2UncmUgb3ZlcmZsb3c6YXV0by9zY3JvbGwvaGlkZGVuIG5vdyB0aGF0IHdlIGtu
b3cgaWYKICAgICAvLyB3ZSBvdmVyZmxvdyBvciBub3QuCkBAIC0xMzk0LDEwICsxMzg3LDggQEAg
Ym9vbCBSZW5kZXJCbG9jazo6bGF5b3V0T25seVBvc2l0aW9uZWRPYmplY3RzKCkKICAgICBpZiAo
IXBvc0NoaWxkTmVlZHNMYXlvdXQoKSB8fCBub3JtYWxDaGlsZE5lZWRzTGF5b3V0KCkgfHwgc2Vs
Zk5lZWRzTGF5b3V0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghbV9oYXND
b2x1bW5zKQotICAgICAgICB2aWV3KCktPnB1c2hMYXlvdXRTdGF0ZSh0aGlzLCBJbnRTaXplKHhQ
b3MoKSwgeVBvcygpKSk7Ci0gICAgZWxzZQotICAgICAgICB2aWV3KCktPmRpc2FibGVMYXlvdXRT
dGF0ZSgpOworICAgIHsKKyAgICAgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVy
KHZpZXcoKSwgdGhpcywgSW50U2l6ZSh4UG9zKCksIHlQb3MoKSksICFtX2hhc0NvbHVtbnMpOwog
CiAgICAgaWYgKG5lZWRzUG9zaXRpb25lZE1vdmVtZW50TGF5b3V0KCkpIHsKICAgICAgICAgdHJ5
TGF5b3V0RG9pbmdQb3NpdGlvbmVkTW92ZW1lbnRPbmx5KCk7CkBAIC0xNDA3LDExICsxMzk4LDcg
QEAgYm9vbCBSZW5kZXJCbG9jazo6bGF5b3V0T25seVBvc2l0aW9uZWRPYmplY3RzKCkKIAogICAg
IC8vIEFsbCB3ZSBoYXZlIHRvIGlzIGxheSBvdXQgb3VyIHBvc2l0aW9uZWQgb2JqZWN0cy4KICAg
ICBsYXlvdXRQb3NpdGlvbmVkT2JqZWN0cyhmYWxzZSk7Ci0KLSAgICBpZiAoIW1faGFzQ29sdW1u
cykKLSAgICAgICAgdmlldygpLT5wb3BMYXlvdXRTdGF0ZSgpOwotICAgIGVsc2UKLSAgICAgICAg
dmlldygpLT5lbmFibGVMYXlvdXRTdGF0ZSgpOworICAgIH0gICAvLyBzY29wZSBmb3Igc3RhdGVQ
dXNoZXIKIAogICAgIGlmIChoYXNPdmVyZmxvd0NsaXAoKSkKICAgICAgICAgbV9sYXllci0+dXBk
YXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJDb250YWluZXIuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ29udGFpbmVy
LmNwcAppbmRleCA5ODI1NjAxLi41OWYyOGY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJDb250YWluZXIuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvbnRh
aW5lci5jcHAKQEAgLTUyMCw3ICs1MjAsNyBAQCB2b2lkIFJlbmRlckNvbnRhaW5lcjo6bGF5b3V0
KCkKIHsKICAgICBBU1NFUlQobmVlZHNMYXlvdXQoKSk7CiAKLSAgICB2aWV3KCktPnB1c2hMYXlv
dXRTdGF0ZSh0aGlzLCBJbnRTaXplKG1feCwgbV95KSk7CisgICAgTGF5b3V0U3RhdGVNYWludGFp
bmVyIHN0YXRlUHVzaGVyKHZpZXcoKSwgdGhpcywgSW50U2l6ZShtX3gsIG1feSkpOwogCiAgICAg
UmVuZGVyT2JqZWN0KiBjaGlsZCA9IG1fZmlyc3RDaGlsZDsKICAgICB3aGlsZSAoY2hpbGQpIHsK
QEAgLTUyOSw3ICs1MjksNiBAQCB2b2lkIFJlbmRlckNvbnRhaW5lcjo6bGF5b3V0KCkKICAgICAg
ICAgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKICAgICB9CiAKLSAgICB2aWV3KCktPnBv
cExheW91dFN0YXRlKCk7CiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggYWZmN2Y5Yi4uMGNjOTY1MyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtMjE5LDEwICsyMTksOCBA
QCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRy
ZW4pCiAgICAgICAgIG9sZE91dGxpbmVCb3ggPSBhYnNvbHV0ZU91dGxpbmVCb3goKTsKICAgICB9
CiAKLSAgICBpZiAoIWhhc1JlZmxlY3Rpb24oKSkKLSAgICAgICAgdmlldygpLT5wdXNoTGF5b3V0
U3RhdGUodGhpcywgSW50U2l6ZShtX3gsIG1feSkpOwotICAgIGVsc2UKLSAgICAgICAgdmlldygp
LT5kaXNhYmxlTGF5b3V0U3RhdGUoKTsKKyAgICB7CisgICAgICAgIExheW91dFN0YXRlTWFpbnRh
aW5lciBzdGF0ZVB1c2hlcih2aWV3KCksIHRoaXMsIEludFNpemUobV94LCBtX3kpLCAhaGFzUmVm
bGVjdGlvbigpKTsKIAogICAgIGludCBwcmV2aW91c1dpZHRoID0gbV93aWR0aDsKICAgICBpbnQg
cHJldmlvdXNIZWlnaHQgPSBtX2hlaWdodDsKQEAgLTMwNywxMSArMzA1LDcgQEAgdm9pZCBSZW5k
ZXJGbGV4aWJsZUJveDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuKQogICAgICAg
ICAgICAgbV9vdmVyZmxvd0hlaWdodCA9IG1heChtX292ZXJmbG93V2lkdGgsIHJlZmxlY3Rpb24u
cmlnaHQoKSk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBpZiAoIWhhc1JlZmxlY3Rpb24oKSkK
LSAgICAgICAgdmlldygpLT5wb3BMYXlvdXRTdGF0ZSgpOwotICAgIGVsc2UKLSAgICAgICAgdmll
dygpLT5lbmFibGVMYXlvdXRTdGF0ZSgpOworICAgIH0gICAvLyBzY29wZSBmb3Igc3RhdGVQdXNo
ZXIKIAogICAgIC8vIFVwZGF0ZSBvdXIgc2Nyb2xsYmFycyBpZiB3ZSdyZSBvdmVyZmxvdzphdXRv
L3Njcm9sbC9oaWRkZW4gbm93IHRoYXQgd2Uga25vdyBpZgogICAgIC8vIHdlIG92ZXJmbG93IG9y
IG5vdC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAppbmRleCAwMWU0MjBlLi44YTk2ODNlIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0yNjUsNyArMjY1LDEzIEBAIHZvaWQgUmVu
ZGVyVGFibGU6OmxheW91dCgpCiAgICAgICAgIG9sZE91dGxpbmVCb3ggPSBhYnNvbHV0ZU91dGxp
bmVCb3goKTsKICAgICB9CiAgICAgCi0gICAgdmlldygpLT5wdXNoTGF5b3V0U3RhdGUodGhpcywg
SW50U2l6ZShtX3gsIG1feSkpOworICAgIC8vIElmIGFueSB0YWJsZSBzZWN0aW9uIG1vdmVkIHZl
cnRpY2FsbHksIHdlIHdpbGwganVzdCByZXBhaW50IGV2ZXJ5dGhpbmcgZnJvbSB0aGF0CisgICAg
Ly8gc2VjdGlvbiBkb3duIChpdCBpcyBxdWl0ZSB1bmxpa2VseSB0aGF0IGFueSBvZiB0aGUgZm9s
bG93aW5nIHNlY3Rpb25zCisgICAgLy8gZGlkIG5vdCBzaGlmdCkuCisgICAgYm9vbCBzZWN0aW9u
TW92ZWQgPSBmYWxzZTsKKyAgICBpbnQgbW92ZWRTZWN0aW9uVG9wID0gMDsKKyAgICB7CisgICAg
ICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcih2aWV3KCksIHRoaXMsIEludFNp
emUobV94LCBtX3kpKTsKIAogICAgIG1faGVpZ2h0ID0gMDsKICAgICBtX292ZXJmbG93SGVpZ2h0
ID0gMDsKQEAgLTI4Miw3ICsyODgsNyBAQCB2b2lkIFJlbmRlclRhYmxlOjpsYXlvdXQoKQogICAg
IC8vIGxheW91dCBjb3VsZCBoYXZlIGNoYW5nZWQuICB3ZSBuZWVkIHRvIGFkZCBhIGZsYWcgdG8g
dGhlIHRhYmxlCiAgICAgLy8gbGF5b3V0IHRoYXQgdGVsbHMgdXMgaWYgc29tZXRoaW5nIGhhcyBj
aGFuZ2VkIGluIHRoZSBtaW4gbWF4CiAgICAgLy8gY2FsY3VsYXRpb25zIHRvIGRvIGl0IGNvcnJl
Y3RseS4KLS8vICAgICBpZiAoIG9sZFdpZHRoICE9IG1fd2lkdGggfHwgY29sdW1ucy5zaXplKCkg
KyAxICE9IGNvbHVtblBvcy5zaXplKCkgKQorICAgIC8vICAgICBpZiAoIG9sZFdpZHRoICE9IG1f
d2lkdGggfHwgY29sdW1ucy5zaXplKCkgKyAxICE9IGNvbHVtblBvcy5zaXplKCkgKQogICAgIG1f
dGFibGVMYXlvdXQtPmxheW91dCgpOwogCiAgICAgc2V0Q2VsbFdpZHRocygpOwpAQCAtMzA4LDEy
ICszMTQsNiBAQCB2b2lkIFJlbmRlclRhYmxlOjpsYXlvdXQoKQogICAgIG1fb3ZlcmZsb3dXaWR0
aCA9IG1fd2lkdGggKyAoY29sbGFwc2luZyA/IG91dGVyQm9yZGVyUmlnaHQoKSAtIGJvcmRlclJp
Z2h0KCkgOiAwKTsKICAgICBtX292ZXJmbG93TGVmdCA9IGNvbGxhcHNpbmcgPyBib3JkZXJMZWZ0
KCkgLSBvdXRlckJvcmRlckxlZnQoKSA6IDA7CiAKLSAgICAvLyBJZiBhbnkgdGFibGUgc2VjdGlv
biBtb3ZlZCB2ZXJ0aWNhbGx5LCB3ZSB3aWxsIGp1c3QgcmVwYWludCBldmVyeXRoaW5nIGZyb20g
dGhhdAotICAgIC8vIHNlY3Rpb24gZG93biAoaXQgaXMgcXVpdGUgdW5saWtlbHkgdGhhdCBhbnkg
b2YgdGhlIGZvbGxvd2luZyBzZWN0aW9ucwotICAgIC8vIGRpZCBub3Qgc2hpZnQpLgotICAgIGJv
b2wgc2VjdGlvbk1vdmVkID0gZmFsc2U7Ci0gICAgaW50IG1vdmVkU2VjdGlvblRvcCA9IDA7Ci0K
ICAgICAvLyBGSVhNRTogQ29sbGFwc2UgY2FwdGlvbiBtYXJnaW4uCiAgICAgaWYgKG1fY2FwdGlv
biAmJiBtX2NhcHRpb24tPnN0eWxlKCktPmNhcHRpb25TaWRlKCkgIT0gQ0FQQk9UVE9NKSB7CiAg
ICAgICAgIEludFJlY3QgY2FwdGlvblJlY3QobV9jYXB0aW9uLT54UG9zKCksIG1fY2FwdGlvbi0+
eVBvcygpLCBtX2NhcHRpb24tPndpZHRoKCksIG1fY2FwdGlvbi0+aGVpZ2h0KCkpOwpAQCAtNDI0
LDggKzQyNCw3IEBAIHZvaWQgUmVuZGVyVGFibGU6OmxheW91dCgpCiAgICAgICAgICAgICBtX292
ZXJmbG93SGVpZ2h0ID0gbWF4KG1fb3ZlcmZsb3dXaWR0aCwgcmVmbGVjdGlvbi5yaWdodCgpKTsK
ICAgICAgICAgfQogICAgIH0KLQotICAgIHZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsKKyAgICB9
ICAgLy8gc2NvcGUgZm9yIHN0YXRlUHVzaGVyCiAKICAgICBib29sIGRpZEZ1bGxSZXBhaW50ID0g
dHJ1ZTsKICAgICAvLyBSZXBhaW50IHdpdGggb3VyIG5ldyBib3VuZHMgaWYgdGhleSBhcmUgZGlm
ZmVyZW50IGZyb20gb3VyIG9sZCBib3VuZHMuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVJvdy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5j
cHAKaW5kZXggNGU5MzIzZC4uMTRhMjE1OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVSb3cuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93
LmNwcApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgUmVuZGVyVGFibGVSb3c6OmxheW91dCgpCiAg
ICAgQVNTRVJUKG5lZWRzTGF5b3V0KCkpOwogCiAgICAgLy8gVGFibGUgcm93cyBkbyBub3QgYWRk
IHRyYW5zbGF0aW9uLgotICAgIHZpZXcoKS0+cHVzaExheW91dFN0YXRlKHRoaXMsIEludFNpemUo
KSk7CisgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0YXRlUHVzaGVyKHZpZXcoKSwgdGhpcywg
SW50U2l6ZSgpKTsKIAogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGlsZCA9IGZpcnN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGNo
aWxkLT5pc1RhYmxlQ2VsbCgpKSB7CkBAIC0xNDgsNyArMTQ4LDYgQEAgdm9pZCBSZW5kZXJUYWJs
ZVJvdzo6bGF5b3V0KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIHZpZXcoKS0+cG9wTGF5b3V0
U3RhdGUoKTsKICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IGVhZTU3MTMuLjViNjM4NjQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtMjU3LDcgKzI1Nyw4IEBAIHZv
aWQgUmVuZGVyVGFibGVTZWN0aW9uOjphZGRDZWxsKFJlbmRlclRhYmxlQ2VsbCogY2VsbCwgUmVu
ZGVyT2JqZWN0KiByb3cpCiB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6c2V0Q2VsbFdpZHRocygp
CiB7CiAgICAgVmVjdG9yPGludD4mIGNvbHVtblBvcyA9IHRhYmxlKCktPmNvbHVtblBvc2l0aW9u
cygpOwotICAgIGJvb2wgcHVzaGVkTGF5b3V0U3RhdGUgPSBmYWxzZTsKKworICAgIExheW91dFN0
YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcih2aWV3KCkpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBtX2dyaWRSb3dzOyBpKyspIHsKICAgICAgICAgUm93JiByb3cgPSAqbV9ncmlkW2ldLnJv
dzsKQEAgLTI3OSwxMSArMjgwLDEwIEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpzZXRDZWxs
V2lkdGhzKCkKICAgICAgICAgICAgIGlmICh3ICE9IG9sZFdpZHRoKSB7CiAgICAgICAgICAgICAg
ICAgY2VsbC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF0YWJs
ZSgpLT5zZWxmTmVlZHNMYXlvdXQoKSAmJiBjZWxsLT5jaGVja0ZvclJlcGFpbnREdXJpbmdMYXlv
dXQoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXB1c2hlZExheW91dFN0YXRlKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghc3RhdGVQdXNoZXIuZGlkUHVzaCgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBUZWNobmljYWxseSwgd2Ugc2hvdWxkIGFsc28gcHVzaCBzdGF0
ZSBmb3IgdGhlIHJvdywgYnV0IHNpbmNlCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyByb3dz
IGRvbid0IHB1c2ggYSBjb29yZGluYXRlIHRyYW5zZm9ybSwgdGhhdCdzIG5vdCBuZWNlc3Nhcnku
Ci0gICAgICAgICAgICAgICAgICAgICAgICB2aWV3KCktPnB1c2hMYXlvdXRTdGF0ZSh0aGlzLCBJ
bnRTaXplKG1feCwgbV95KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoZWRMYXlvdXRT
dGF0ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZVB1c2hlci5wdXNoKHRo
aXMsIEludFNpemUobV94LCBtX3kpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICBjZWxsLT5yZXBhaW50KCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjkxLDkg
KzI5MSw2IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpzZXRDZWxsV2lkdGhzKCkKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKLSAgICBpZiAocHVzaGVkTGF5b3V0U3Rh
dGUpCi0gICAgICAgIHZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsKIH0KIAogaW50IFJlbmRlclRh
YmxlU2VjdGlvbjo6Y2FsY1Jvd0hlaWdodCgpCkBAIC0zMDEsNyArMjk4LDggQEAgaW50IFJlbmRl
clRhYmxlU2VjdGlvbjo6Y2FsY1Jvd0hlaWdodCgpCiAgICAgUmVuZGVyVGFibGVDZWxsKiBjZWxs
OwogCiAgICAgaW50IHNwYWNpbmcgPSB0YWJsZSgpLT52Qm9yZGVyU3BhY2luZygpOwotICAgIGJv
b2wgcHVzaGVkTGF5b3V0U3RhdGUgPSBmYWxzZTsKKworICAgIExheW91dFN0YXRlTWFpbnRhaW5l
ciBzdGF0ZVB1c2hlcih2aWV3KCkpOwogCiAgICAgbV9yb3dQb3MucmVzaXplKG1fZ3JpZFJvd3Mg
KyAxKTsKICAgICBtX3Jvd1Bvc1swXSA9IHNwYWNpbmc7CkBAIC0zMzAsMTEgKzMyOCwxMCBAQCBp
bnQgUmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjUm93SGVpZ2h0KCkKICAgICAgICAgICAgIGludCBp
bmR4ID0gbWF4KHIgLSBjZWxsLT5yb3dTcGFuKCkgKyAxLCAwKTsKIAogICAgICAgICAgICAgaWYg
KGNlbGwtPm92ZXJyaWRlU2l6ZSgpICE9IC0xKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFwdXNo
ZWRMYXlvdXRTdGF0ZSkgeworICAgICAgICAgICAgICAgIGlmICghc3RhdGVQdXNoZXIuZGlkUHVz
aCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRlY2huaWNhbGx5LCB3ZSBzaG91bGQgYWxz
byBwdXNoIHN0YXRlIGZvciB0aGUgcm93LCBidXQgc2luY2UKICAgICAgICAgICAgICAgICAgICAg
Ly8gcm93cyBkb24ndCBwdXNoIGEgY29vcmRpbmF0ZSB0cmFuc2Zvcm0sIHRoYXQncyBub3QgbmVj
ZXNzYXJ5LgotICAgICAgICAgICAgICAgICAgICB2aWV3KCktPnB1c2hMYXlvdXRTdGF0ZSh0aGlz
LCBJbnRTaXplKG1feCwgbV95KSk7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2hlZExheW91dFN0
YXRlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVQdXNoZXIucHVzaCh0aGlzLCBJ
bnRTaXplKG1feCwgbV95KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNl
bGwtPnNldE92ZXJyaWRlU2l6ZSgtMSk7CiAgICAgICAgICAgICAgICAgY2VsbC0+c2V0Q2hpbGRO
ZWVkc0xheW91dCh0cnVlLCBmYWxzZSk7CkBAIC0zNzMsOSArMzcwLDYgQEAgaW50IFJlbmRlclRh
YmxlU2VjdGlvbjo6Y2FsY1Jvd0hlaWdodCgpCiAgICAgICAgIG1fcm93UG9zW3IgKyAxXSA9IG1h
eChtX3Jvd1Bvc1tyICsgMV0sIG1fcm93UG9zW3JdKTsKICAgICB9CiAKLSAgICBpZiAocHVzaGVk
TGF5b3V0U3RhdGUpCi0gICAgICAgIHZpZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsKLQogICAgIHJl
dHVybiBtX3Jvd1Bvc1ttX2dyaWRSb3dzXTsKIH0KIApAQCAtNDU2LDcgKzQ1MCw3IEBAIGludCBS
ZW5kZXJUYWJsZVNlY3Rpb246OmxheW91dFJvd3MoaW50IHRvQWRkKQogICAgIGludCB2c3BhY2lu
ZyA9IHRhYmxlKCktPnZCb3JkZXJTcGFjaW5nKCk7CiAgICAgaW50IG5FZmZDb2xzID0gdGFibGUo
KS0+bnVtRWZmQ29scygpOwogCi0gICAgdmlldygpLT5wdXNoTGF5b3V0U3RhdGUodGhpcywgSW50
U2l6ZShtX3gsIG1feSkpOworICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcih2
aWV3KCksIHRoaXMsIEludFNpemUobV94LCBtX3kpKTsKIAogICAgIGZvciAoaW50IHIgPSAwOyBy
IDwgdG90YWxSb3dzOyByKyspIHsKICAgICAgICAgLy8gU2V0IHRoZSByb3cncyB4L3kgcG9zaXRp
b24gYW5kIHdpZHRoL2hlaWdodC4KQEAgLTU3NSw4ICs1NjksNiBAQCBpbnQgUmVuZGVyVGFibGVT
ZWN0aW9uOjpsYXlvdXRSb3dzKGludCB0b0FkZCkKICAgICAgICAgfQogICAgIH0KIAotICAgIHZp
ZXcoKS0+cG9wTGF5b3V0U3RhdGUoKTsKLQogICAgIG1faGVpZ2h0ID0gbV9yb3dQb3NbdG90YWxS
b3dzXTsKICAgICBtX292ZXJmbG93SGVpZ2h0ID0gbWF4KG1fb3ZlcmZsb3dIZWlnaHQsIG1faGVp
Z2h0KTsKICAgICByZXR1cm4gbV9oZWlnaHQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggNjUz
Njk3OS4uZmQyZjZlNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5o
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtMTU3LDYgKzE1Nyw2OSBA
QCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbGF5b3V0U3RhdGVEaXNhYmxlQ291bnQ7CiB9Owog
CisvLyBTdGFjay1iYXNlZCBjbGFzcyB0byBhc3Npc3Qgd2l0aCBMYXlvdXRTdGF0ZSBwdXNoL3Bv
cAorY2xhc3MgTGF5b3V0U3RhdGVNYWludGFpbmVyIDogTm9uY29weWFibGUgeworcHVibGljOgor
CisgICAgLy8gY3RvciB0byBwdXNoIG5vdworICAgIExheW91dFN0YXRlTWFpbnRhaW5lcihSZW5k
ZXJWaWV3KiB2aWV3LCBSZW5kZXJCb3gqIHJvb3QsIEludFNpemUgb2Zmc2V0LCBib29sIHNob3Vs
ZFB1c2ggPSB0cnVlKQorICAgICAgICA6IG1fdmlldyh2aWV3KQorICAgICAgICAsIG1fc2hvdWxk
UHVzaFBvcChzaG91bGRQdXNoKQorICAgICAgICAsIG1fZGlkU3RhcnQoZmFsc2UpCisgICAgICAg
ICwgbV9kaWRFbmQoZmFsc2UpCisgICAgeworICAgICAgICBwdXNoKHJvb3QsIG9mZnNldCk7Cisg
ICAgfQorICAgIAorICAgIC8vIGN0b3IgdG8gbWF5YmUgcHVzaCBsYXRlcgorICAgIExheW91dFN0
YXRlTWFpbnRhaW5lcihSZW5kZXJWaWV3KiB2aWV3KQorICAgICAgICA6IG1fdmlldyh2aWV3KQor
ICAgICAgICAsIG1fc2hvdWxkUHVzaFBvcCh0cnVlKQorICAgICAgICAsIG1fZGlkU3RhcnQoZmFs
c2UpCisgICAgICAgICwgbV9kaWRFbmQoZmFsc2UpCisgICAgeworICAgIH0KKyAgICAKKyAgICB+
TGF5b3V0U3RhdGVNYWludGFpbmVyKCkKKyAgICB7CisgICAgICAgIGlmICghbV9kaWRFbmQpCisg
ICAgICAgICAgICBwb3AoKTsKKyAgICB9CisKKyAgICB2b2lkIHBvcCgpCisgICAgeworICAgICAg
ICBpZiAobV9kaWRTdGFydCkgeworICAgICAgICAgICAgQVNTRVJUKCFtX2RpZEVuZCk7CisgICAg
ICAgICAgICBpZiAobV9zaG91bGRQdXNoUG9wKQorICAgICAgICAgICAgICAgIG1fdmlldy0+cG9w
TGF5b3V0U3RhdGUoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtX3ZpZXct
PmVuYWJsZUxheW91dFN0YXRlKCk7CisgICAgICAgICAgICBtX2RpZEVuZCA9IHRydWU7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHB1c2goUmVuZGVyQm94KiByb290LCBJbnRTaXplIG9m
ZnNldCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9kaWRTdGFydCk7CisgICAgICAgIGlmICht
X3Nob3VsZFB1c2hQb3ApCisgICAgICAgICAgICBtX3ZpZXctPnB1c2hMYXlvdXRTdGF0ZShyb290
LCBvZmZzZXQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3ZpZXctPmRpc2FibGVMYXlv
dXRTdGF0ZSgpOworICAgICAgICBtX2RpZFN0YXJ0ID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBkaWRQdXNoKCkgY29uc3QgeyByZXR1cm4gbV9kaWRTdGFydDsgfQorCitwcml2YXRlOgor
ICAgIAorICAgIFJlbmRlclZpZXcqIG1fdmlldzsKKyAgICAKKyAgICBib29sIG1fc2hvdWxkUHVz
aFBvcCA6IDE7ICAgLy8gdHJ1ZSBpZiB3ZSBzaG91bGQgcHVzaC9wb3AsIHJhdGhlciB0aGFuIGRp
c2FibGUvZW5hYmxlCisgICAgYm9vbCBtX2RpZFN0YXJ0IDogMTsgICAgICAgIC8vIHRydWUgaWYg
d2UgZGlkIGEgcHVzaCBvciBkaXNhYmxlCisgICAgYm9vbCBtX2RpZEVuZCA6IDE7ICAgICAgICAg
IC8vIHRydWUgaWYgd2UgcG9wcGVkIG9yIHJlLWVuYWJsZWQKK307CisKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUmVuZGVyVmlld19oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>