<?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>118958</bug_id>
          
          <creation_ts>2013-07-21 16:15:20 -0700</creation_ts>
          <short_desc>StickyPositionConstraints should not need to change to account for a RenderLayer&apos;s scrollOffset</short_desc>
          <delta_ts>2013-07-22 14:45:07 -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>CSS</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>jamesr</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>910555</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2013-07-21 16:15:20 -0700</bug_when>
    <thetext>Currently, to get sticky offsets right in overflow areas, the StickyPositionContraints change on every scroll to factor it in. This will be a problem once we can scroll overflow areas on the scrolling thread. The constraints should never have to change to account for the scroll position. 

&lt;rdar://problem/12469203&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910560</commentid>
    <comment_count>1</comment_count>
      <attachid>207219</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2013-07-21 16:26:41 -0700</bug_when>
    <thetext>Created attachment 207219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910764</commentid>
    <comment_count>2</comment_count>
      <attachid>207219</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-07-22 12:31:42 -0700</bug_when>
    <thetext>Comment on attachment 207219
Patch

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

&gt; Source/WebCore/page/scrolling/ScrollingConstraints.h:154
&gt; +    // m_containingBlockRect is in the scrolling ancestor&apos;s coordinate space.

I think this comment belongs next to m_containingBlockRect. You could also leave a comment here like:
// containingBlockRect() is in the scrolling ancestor&apos;s coordinate space.

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:537
&gt; +        containerContentRect = containingBlock-&gt;layoutOverflowRect();

I don&apos;t understand why this is different for oveflow:scroll-sticky?

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:538
&gt; +        LayoutPoint conatinerLocation = containerContentRect.location() + LayoutPoint(containingBlock-&gt;borderLeft() + containingBlock-&gt;paddingLeft(), containingBlock-&gt;borderTop() + containingBlock-&gt;paddingTop());

conatinerLocation!

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:557
&gt; +        FloatPoint containerLocationRelativeToScrollingAncestor = containerRectRelativeToScrollingAncestor.location() - FloatSize(enclosingClippingBox-&gt;borderLeft() + enclosingClippingBox-&gt;paddingLeft(), enclosingClippingBox-&gt;borderTop() + enclosingClippingBox-&gt;paddingTop());

Would be nice to wrap this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910781</commentid>
    <comment_count>3</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2013-07-22 13:06:34 -0700</bug_when>
    <thetext>Simon and I discussed this in person, and I will be uploading a new patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910784</commentid>
    <comment_count>4</comment_count>
      <attachid>207267</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2013-07-22 13:16:42 -0700</bug_when>
    <thetext>Created attachment 207267
New patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910811</commentid>
    <comment_count>5</comment_count>
      <attachid>207267</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-07-22 14:02:43 -0700</bug_when>
    <thetext>Comment on attachment 207267
New patch

r+ but I&apos;d like to see a testcase like the one we made today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910826</commentid>
    <comment_count>6</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2013-07-22 14:31:50 -0700</bug_when>
    <thetext>Committed http://trac.webkit.org/changeset/152998 including a test. Thanks Simon!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207219</attachid>
            <date>2013-07-21 16:26:41 -0700</date>
            <delta_ts>2013-07-22 13:16:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>17027</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Mjk1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTA3LTIxICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBTdGlja3lQb3NpdGlvbkNvbnRyYWlu
dHMgc2hvdWxkIG5vdCBuZWVkIHRvIGNoYW5nZSB0byBhY2NvdW50IGZvciBhIFJlbmRlckxheWVy
J3MgCisgICAgICAgIHNjcm9sbE9mZnNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTU4CisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNDY5MjAzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCB0byBnZXQgc3RpY2t5
IG9mZnNldHMgcmlnaHQgaW4gb3ZlcmZsb3cgYXJlYXMsIHRoZSAKKyAgICAgICAgU3RpY2t5UG9z
aXRpb25Db250cmFpbnRzIGNoYW5nZWQgb24gZXZlcnkgc2Nyb2xsIHRvIGZhY3RvciBpdCBpbi4g
VGhpcyB3aWxsIGJlIGEgCisgICAgICAgIHByb2JsZW0gb25jZSB3ZSBjYW4gc2Nyb2xsIG92ZXJm
bG93IGFyZWFzIG9uIHRoZSBzY3JvbGxpbmcgdGhyZWFkLiBUaGUgY29uc3RyYWludHMgCisgICAg
ICAgIHNob3VsZCBuZXZlciBoYXZlIHRvIGNoYW5nZSB0byBhY2NvdW50IGZvciB0aGUgc2Nyb2xs
IHBvc2l0aW9uLiBUaGlzIHBhdGNoIGZpeGVzIAorICAgICAgICB0aGF0IGlzc3VlIGJ5IGNoYW5n
aW5nIHRoZSBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHPigJlzIGNvbnRhaW5lckJs
b2NrUmVjdCAKKyAgICAgICAgYW5kIHN0aWNreUJveFJlY3QgdG8gYmUgaW4gYSBjb29yZGluYXRl
IHNwYWNlIHRoYXQgaXMgcmVsYXRpdmUgdG8gdGhlIHNjcm9sbGluZyAKKyAgICAgICAgYW5jZXN0
b3IgcmF0aGVyIHRoYW4gYmVpbmcgYWJzb2x1dGUuIFRoaXMgcGF0Y2ggYWxzbyByZW1vdmVzIOKA
mGFic29sdXRl4oCZIGZyb20gdGhvc2UgCisgICAgICAgIHZhcmlhYmxlIG5hbWVzIHNpbmNlIHRo
ZXkgYXJlIG5vIGxvbmdlciBhYnNvbHV0ZS4KKworICAgICAgICBtX2Fic29sdXRlU3RpY2t5Qm94
UmVjdCBpcyBub3cgbV9zdGlja3lCb3hSZWN0LCBhbmQgbV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9j
a1JlY3QgCisgICAgICAgIGlzIG5vdyBtX2NvbnRhaW5pbmdCbG9ja1JlY3QuCisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOjpjb21wdXRlU3RpY2t5T2Zmc2V0
KToKKworICAgICAgICBNb3JlIG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb25zdHJhaW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6U3RpY2t5UG9zaXRp
b25WaWV3cG9ydENvbnN0cmFpbnRzOjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMp
OgorICAgICAgICAoV2ViQ29yZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOjpj
b250YWluaW5nQmxvY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0aWNreVBvc2l0aW9uVmll
d3BvcnRDb25zdHJhaW50czo6c2V0Q29udGFpbmluZ0Jsb2NrUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OnN0aWNreUJveFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOjpzZXRT
dGlja3lCb3hSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0aWNreVBvc2l0aW9uVmlld3BvcnRD
b25zdHJhaW50czo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVTdGlja3lOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRl
U3RpY2t5Tm9kZTo6ZHVtcFByb3BlcnRpZXMpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVTdGlja3lOb2RlOjpwYXJlbnRTY3JvbGxQb3NpdGlvbkRpZENoYW5nZSk6CisKKyAgICAg
ICAgQ29tcHV0ZSBhbGwgdmFsdWVzIHJlbGF0aXZlIHRvIHRoZSBzY3JvbGxpbmcgYW5jZXN0b3Iu
IFRoaXMgcmVxdWlyZXMgc29tZSBqdWdnbGluZyAKKyAgICAgICAgaW4gdGhlIG92ZXJmbG93IGNh
c2UgdG8gZmFjdG9yIGJvcmRlciBhbmQgcGFkZGluZyBpbiBvciBvdXQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlU3RpY2t5UG9zaXRpb25Db25zdHJhaW50cyk6CisKKyAg
ICAgICAgVGhpcyBpcyB3aGVyZSB0aGUgc2Nyb2xsT2Zmc2V0IHNob3VsZCBiZSBmYWN0b3JlZCBp
bi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpzdGlja3lQb3NpdGlv
bk9mZnNldCk6CisKIDIwMTMtMDctMjEgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgogCiAgICAgICAgIEtVUkwgY3JlYXRlcyBkdXBsaWNhdGUgc3RyaW5ncyB3aGVuIGNvbXBsZXRp
bmcgZGF0YTogVVJJcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ0NvbnN0cmFpbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb25zdHJhaW50cy5jcHAJKHJldmlzaW9uIDE1MjkxOCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDcsMTIgKzQ3LDEyIEBAIEZsb2F0UG9pbnQgRml4ZWRQb3NpdGlvblZp
ZXdwb3J0Q29uc3RyYWkKIAogRmxvYXRTaXplIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJh
aW50czo6Y29tcHV0ZVN0aWNreU9mZnNldChjb25zdCBGbG9hdFJlY3QmIHZpZXdwb3J0UmVjdCkg
Y29uc3QKIHsKLSAgICBGbG9hdFJlY3QgYm94UmVjdCA9IG1fYWJzb2x1dGVTdGlja3lCb3hSZWN0
OworICAgIEZsb2F0UmVjdCBib3hSZWN0ID0gbV9zdGlja3lCb3hSZWN0OwogICAgIAogICAgIGlm
IChoYXNBbmNob3JFZGdlKEFuY2hvckVkZ2VSaWdodCkpIHsKICAgICAgICAgZmxvYXQgcmlnaHRM
aW1pdCA9IHZpZXdwb3J0UmVjdC5tYXhYKCkgLSBtX3JpZ2h0T2Zmc2V0OwotICAgICAgICBmbG9h
dCByaWdodERlbHRhID0gc3RkOjptaW48ZmxvYXQ+KDAsIHJpZ2h0TGltaXQgLSBtX2Fic29sdXRl
U3RpY2t5Qm94UmVjdC5tYXhYKCkpOwotICAgICAgICBmbG9hdCBhdmFpbGFibGVTcGFjZSA9IHN0
ZDo6bWluPGZsb2F0PigwLCBtX2Fic29sdXRlQ29udGFpbmluZ0Jsb2NrUmVjdC54KCkgLSBtX2Fi
c29sdXRlU3RpY2t5Qm94UmVjdC54KCkpOworICAgICAgICBmbG9hdCByaWdodERlbHRhID0gc3Rk
OjptaW48ZmxvYXQ+KDAsIHJpZ2h0TGltaXQgLSBtX3N0aWNreUJveFJlY3QubWF4WCgpKTsKKyAg
ICAgICAgZmxvYXQgYXZhaWxhYmxlU3BhY2UgPSBzdGQ6Om1pbjxmbG9hdD4oMCwgbV9jb250YWlu
aW5nQmxvY2tSZWN0LngoKSAtIG1fc3RpY2t5Qm94UmVjdC54KCkpOwogICAgICAgICBpZiAocmln
aHREZWx0YSA8IGF2YWlsYWJsZVNwYWNlKQogICAgICAgICAgICAgcmlnaHREZWx0YSA9IGF2YWls
YWJsZVNwYWNlOwogCkBAIC02MSw4ICs2MSw4IEBAIEZsb2F0U2l6ZSBTdGlja3lQb3NpdGlvblZp
ZXdwb3J0Q29uc3RyYWkKIAogICAgIGlmIChoYXNBbmNob3JFZGdlKEFuY2hvckVkZ2VMZWZ0KSkg
ewogICAgICAgICBmbG9hdCBsZWZ0TGltaXQgPSB2aWV3cG9ydFJlY3QueCgpICsgbV9sZWZ0T2Zm
c2V0OwotICAgICAgICBmbG9hdCBsZWZ0RGVsdGEgPSBzdGQ6Om1heDxmbG9hdD4oMCwgbGVmdExp
bWl0IC0gbV9hYnNvbHV0ZVN0aWNreUJveFJlY3QueCgpKTsKLSAgICAgICAgZmxvYXQgYXZhaWxh
YmxlU3BhY2UgPSBzdGQ6Om1heDxmbG9hdD4oMCwgbV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1Jl
Y3QubWF4WCgpIC0gbV9hYnNvbHV0ZVN0aWNreUJveFJlY3QubWF4WCgpKTsKKyAgICAgICAgZmxv
YXQgbGVmdERlbHRhID0gc3RkOjptYXg8ZmxvYXQ+KDAsIGxlZnRMaW1pdCAtIG1fc3RpY2t5Qm94
UmVjdC54KCkpOworICAgICAgICBmbG9hdCBhdmFpbGFibGVTcGFjZSA9IHN0ZDo6bWF4PGZsb2F0
PigwLCBtX2NvbnRhaW5pbmdCbG9ja1JlY3QubWF4WCgpIC0gbV9zdGlja3lCb3hSZWN0Lm1heFgo
KSk7CiAgICAgICAgIGlmIChsZWZ0RGVsdGEgPiBhdmFpbGFibGVTcGFjZSkKICAgICAgICAgICAg
IGxlZnREZWx0YSA9IGF2YWlsYWJsZVNwYWNlOwogCkBAIC03MSw4ICs3MSw4IEBAIEZsb2F0U2l6
ZSBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWkKICAgICAKICAgICBpZiAoaGFzQW5jaG9y
RWRnZShBbmNob3JFZGdlQm90dG9tKSkgewogICAgICAgICBmbG9hdCBib3R0b21MaW1pdCA9IHZp
ZXdwb3J0UmVjdC5tYXhZKCkgLSBtX2JvdHRvbU9mZnNldDsKLSAgICAgICAgZmxvYXQgYm90dG9t
RGVsdGEgPSBzdGQ6Om1pbjxmbG9hdD4oMCwgYm90dG9tTGltaXQgLSBtX2Fic29sdXRlU3RpY2t5
Qm94UmVjdC5tYXhZKCkpOwotICAgICAgICBmbG9hdCBhdmFpbGFibGVTcGFjZSA9IHN0ZDo6bWlu
PGZsb2F0PigwLCBtX2Fic29sdXRlQ29udGFpbmluZ0Jsb2NrUmVjdC55KCkgLSBtX2Fic29sdXRl
U3RpY2t5Qm94UmVjdC55KCkpOworICAgICAgICBmbG9hdCBib3R0b21EZWx0YSA9IHN0ZDo6bWlu
PGZsb2F0PigwLCBib3R0b21MaW1pdCAtIG1fc3RpY2t5Qm94UmVjdC5tYXhZKCkpOworICAgICAg
ICBmbG9hdCBhdmFpbGFibGVTcGFjZSA9IHN0ZDo6bWluPGZsb2F0PigwLCBtX2NvbnRhaW5pbmdC
bG9ja1JlY3QueSgpIC0gbV9zdGlja3lCb3hSZWN0LnkoKSk7CiAgICAgICAgIGlmIChib3R0b21E
ZWx0YSA8IGF2YWlsYWJsZVNwYWNlKQogICAgICAgICAgICAgYm90dG9tRGVsdGEgPSBhdmFpbGFi
bGVTcGFjZTsKIApAQCAtODEsMTUgKzgxLDE1IEBAIEZsb2F0U2l6ZSBTdGlja3lQb3NpdGlvblZp
ZXdwb3J0Q29uc3RyYWkKIAogICAgIGlmIChoYXNBbmNob3JFZGdlKEFuY2hvckVkZ2VUb3ApKSB7
CiAgICAgICAgIGZsb2F0IHRvcExpbWl0ID0gdmlld3BvcnRSZWN0LnkoKSArIG1fdG9wT2Zmc2V0
OwotICAgICAgICBmbG9hdCB0b3BEZWx0YSA9IHN0ZDo6bWF4PGZsb2F0PigwLCB0b3BMaW1pdCAt
IG1fYWJzb2x1dGVTdGlja3lCb3hSZWN0LnkoKSk7Ci0gICAgICAgIGZsb2F0IGF2YWlsYWJsZVNw
YWNlID0gc3RkOjptYXg8ZmxvYXQ+KDAsIG1fYWJzb2x1dGVDb250YWluaW5nQmxvY2tSZWN0Lm1h
eFkoKSAtIG1fYWJzb2x1dGVTdGlja3lCb3hSZWN0Lm1heFkoKSk7CisgICAgICAgIGZsb2F0IHRv
cERlbHRhID0gc3RkOjptYXg8ZmxvYXQ+KDAsIHRvcExpbWl0IC0gbV9zdGlja3lCb3hSZWN0Lnko
KSk7CisgICAgICAgIGZsb2F0IGF2YWlsYWJsZVNwYWNlID0gc3RkOjptYXg8ZmxvYXQ+KDAsIG1f
Y29udGFpbmluZ0Jsb2NrUmVjdC5tYXhZKCkgLSBtX3N0aWNreUJveFJlY3QubWF4WSgpKTsKICAg
ICAgICAgaWYgKHRvcERlbHRhID4gYXZhaWxhYmxlU3BhY2UpCiAgICAgICAgICAgICB0b3BEZWx0
YSA9IGF2YWlsYWJsZVNwYWNlOwogCiAgICAgICAgIGJveFJlY3QubW92ZSgwLCB0b3BEZWx0YSk7
CiAgICAgfQogCi0gICAgcmV0dXJuIGJveFJlY3QubG9jYXRpb24oKSAtIG1fYWJzb2x1dGVTdGlj
a3lCb3hSZWN0LmxvY2F0aW9uKCk7CisgICAgcmV0dXJuIGJveFJlY3QubG9jYXRpb24oKSAtIG1f
c3RpY2t5Qm94UmVjdC5sb2NhdGlvbigpOwogfQogCiBGbG9hdFBvaW50IFN0aWNreVBvc2l0aW9u
Vmlld3BvcnRDb25zdHJhaW50czo6bGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVjdChjb25zdCBG
bG9hdFJlY3QmIHZpZXdwb3J0UmVjdCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuaAkocmV2aXNpb24gMTUy
OTE4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWlu
dHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDggKzEyNSw4IEBAIHB1YmxpYzoKICAgICAgICAg
LCBtX3JpZ2h0T2Zmc2V0KG90aGVyLm1fcmlnaHRPZmZzZXQpCiAgICAgICAgICwgbV90b3BPZmZz
ZXQob3RoZXIubV90b3BPZmZzZXQpCiAgICAgICAgICwgbV9ib3R0b21PZmZzZXQob3RoZXIubV9i
b3R0b21PZmZzZXQpCi0gICAgICAgICwgbV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3Qob3Ro
ZXIubV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3QpCi0gICAgICAgICwgbV9hYnNvbHV0ZVN0
aWNreUJveFJlY3Qob3RoZXIubV9hYnNvbHV0ZVN0aWNreUJveFJlY3QpCisgICAgICAgICwgbV9j
b250YWluaW5nQmxvY2tSZWN0KG90aGVyLm1fY29udGFpbmluZ0Jsb2NrUmVjdCkKKyAgICAgICAg
LCBtX3N0aWNreUJveFJlY3Qob3RoZXIubV9zdGlja3lCb3hSZWN0KQogICAgICAgICAsIG1fc3Rp
Y2t5T2Zmc2V0QXRMYXN0TGF5b3V0KG90aGVyLm1fc3RpY2t5T2Zmc2V0QXRMYXN0TGF5b3V0KQog
ICAgICAgICAsIG1fbGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dChvdGhlci5tX2xheWVyUG9zaXRp
b25BdExhc3RMYXlvdXQpCiAgICAgeyB9CkBAIC0xNTEsMTEgKzE1MSwxMyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRUb3BPZmZzZXQoZmxvYXQgb2Zmc2V0KSB7IG1fdG9wT2Zmc2V0ID0gb2Zmc2V0
OyB9CiAgICAgdm9pZCBzZXRCb3R0b21PZmZzZXQoZmxvYXQgb2Zmc2V0KSB7IG1fYm90dG9tT2Zm
c2V0ID0gb2Zmc2V0OyB9CiAKLSAgICBGbG9hdFJlY3QgYWJzb2x1dGVDb250YWluaW5nQmxvY2tS
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3Q7IH0KLSAg
ICB2b2lkIHNldEFic29sdXRlQ29udGFpbmluZ0Jsb2NrUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpIHsgbV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3QgPSByZWN0OyB9Ci0KLSAgICBGbG9h
dFJlY3QgYWJzb2x1dGVTdGlja3lCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZVN0
aWNreUJveFJlY3Q7IH0KLSAgICB2b2lkIHNldEFic29sdXRlU3RpY2t5Qm94UmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QpIHsgbV9hYnNvbHV0ZVN0aWNreUJveFJlY3QgPSByZWN0OyB9CisgICAg
Ly8gbV9jb250YWluaW5nQmxvY2tSZWN0IGlzIGluIHRoZSBzY3JvbGxpbmcgYW5jZXN0b3IncyBj
b29yZGluYXRlIHNwYWNlLgorICAgIEZsb2F0UmVjdCBjb250YWluaW5nQmxvY2tSZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9jb250YWluaW5nQmxvY2tSZWN0OyB9CisgICAgdm9pZCBzZXRDb250YWlu
aW5nQmxvY2tSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgeyBtX2NvbnRhaW5pbmdCbG9ja1Jl
Y3QgPSByZWN0OyB9CisKKyAgICAvLyBtX3N0aWNreUJveFJlY3QgaXMgaW4gdGhlIHNjcm9sbGlu
ZyBhbmNlc3RvcidzIGNvb3JkaW5hdGUgc3BhY2UuCisgICAgRmxvYXRSZWN0IHN0aWNreUJveFJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX3N0aWNreUJveFJlY3Q7IH0KKyAgICB2b2lkIHNldFN0aWNr
eUJveFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSB7IG1fc3RpY2t5Qm94UmVjdCA9IHJlY3Q7
IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29u
c3RyYWludHMmIG90aGVyKSBjb25zdAogICAgIHsKQEAgLTE2Myw4ICsxNjUsOCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAmJiBtX3JpZ2h0T2Zmc2V0ID09IG90aGVyLm1fcmlnaHRPZmZzZXQKICAg
ICAgICAgICAgICYmIG1fdG9wT2Zmc2V0ID09IG90aGVyLm1fdG9wT2Zmc2V0CiAgICAgICAgICAg
ICAmJiBtX2JvdHRvbU9mZnNldCA9PSBvdGhlci5tX2JvdHRvbU9mZnNldAotICAgICAgICAgICAg
JiYgbV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3QgPT0gb3RoZXIubV9hYnNvbHV0ZUNvbnRh
aW5pbmdCbG9ja1JlY3QKLSAgICAgICAgICAgICYmIG1fYWJzb2x1dGVTdGlja3lCb3hSZWN0ID09
IG90aGVyLm1fYWJzb2x1dGVTdGlja3lCb3hSZWN0CisgICAgICAgICAgICAmJiBtX2NvbnRhaW5p
bmdCbG9ja1JlY3QgPT0gb3RoZXIubV9jb250YWluaW5nQmxvY2tSZWN0CisgICAgICAgICAgICAm
JiBtX3N0aWNreUJveFJlY3QgPT0gb3RoZXIubV9zdGlja3lCb3hSZWN0CiAgICAgICAgICAgICAm
JiBtX3N0aWNreU9mZnNldEF0TGFzdExheW91dCA9PSBvdGhlci5tX3N0aWNreU9mZnNldEF0TGFz
dExheW91dAogICAgICAgICAgICAgJiYgbV9sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0ID09IG90
aGVyLm1fbGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dDsKICAgICB9CkBAIC0xNzgsOCArMTgwLDgg
QEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3JpZ2h0T2Zmc2V0OwogICAgIGZsb2F0IG1fdG9wT2Zm
c2V0OwogICAgIGZsb2F0IG1fYm90dG9tT2Zmc2V0OwotICAgIEZsb2F0UmVjdCBtX2Fic29sdXRl
Q29udGFpbmluZ0Jsb2NrUmVjdDsKLSAgICBGbG9hdFJlY3QgbV9hYnNvbHV0ZVN0aWNreUJveFJl
Y3Q7CisgICAgRmxvYXRSZWN0IG1fY29udGFpbmluZ0Jsb2NrUmVjdDsKKyAgICBGbG9hdFJlY3Qg
bV9zdGlja3lCb3hSZWN0OwogICAgIEZsb2F0U2l6ZSBtX3N0aWNreU9mZnNldEF0TGFzdExheW91
dDsKICAgICBGbG9hdFBvaW50IG1fbGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dDsKIH07CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlU3RpY2t5Tm9kZS5jcHAJKHJldmlzaW9uIDE1MjkxOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMiwxNSArMTEyLDE1IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlOjpk
dW1wUHJvcGUKICAgICB9CiAKICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7Ci0gICAg
RmxvYXRSZWN0IHIgPSBtX2NvbnN0cmFpbnRzLmFic29sdXRlQ29udGFpbmluZ0Jsb2NrUmVjdCgp
OworICAgIEZsb2F0UmVjdCByID0gbV9jb25zdHJhaW50cy5jb250YWluaW5nQmxvY2tSZWN0KCk7
CiAgICAgdHMgPDwgIihjb250YWluaW5nIGJsb2NrIHJlY3QgIiA8PCByLngoKSA8PCAiLCAiIDw8
IHIueSgpIDw8ICIgIiA8PCByLndpZHRoKCkgPDwgIiB4ICIgPDwgci5oZWlnaHQoKSA8PCAiKVxu
IjsKIAogICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKLSAgICByID0gbV9jb25zdHJh
aW50cy5hYnNvbHV0ZVN0aWNreUJveFJlY3QoKTsKKyAgICByID0gbV9jb25zdHJhaW50cy5zdGlj
a3lCb3hSZWN0KCk7CiAgICAgdHMgPDwgIihzdGlja3kgYm94IHJlY3QgIiA8PCByLngoKSA8PCAi
ICIgPDwgci55KCkgPDwgIiAiIDw8IHIud2lkdGgoKSA8PCAiICIgPDwgci5oZWlnaHQoKSA8PCAi
KVxuIjsKIAogICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKLSAgICByID0gbV9jb25z
dHJhaW50cy5hYnNvbHV0ZVN0aWNreUJveFJlY3QoKTsKKyAgICByID0gbV9jb25zdHJhaW50cy5z
dGlja3lCb3hSZWN0KCk7CiAgICAgdHMgPDwgIihzdGlja3kgYm94IHJlY3QgIiA8PCByLngoKSA8
PCAiICIgPDwgci55KCkgPDwgIiAiIDw8IHIud2lkdGgoKSA8PCAiICIgPDwgci5oZWlnaHQoKSA8
PCAiKVxuIjsKIAogICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUubW0JKHJldmlzaW9uIDE1MjkxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQkod29ya2luZyBjb3B5
KQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpwYXJlbnRT
Y3JvCiAgICAgRmxvYXRQb2ludCBsYXllclBvc2l0aW9uID0gbV9jb25zdHJhaW50cy5sYXllclBv
c2l0aW9uRm9yVmlld3BvcnRSZWN0KHZpZXdwb3J0UmVjdCk7CiAKICAgICAvLyBGSVhNRTogU3Vi
dHJhY3RpbmcgdGhlIGN1bXVsYXRpdmVEZWx0YSBpcyBub3QgdG90YWxseSBzdWZmaWNpZW50IHRv
IGdldCB0aGUgbmV3IHBvc2l0aW9uIHJpZ2h0IGZvciBuZXN0ZWQKLSAgICAvLyBzdGlja3kgb2Jq
ZWN0cy4gV2UgcHJvYmFibHkgbmVlZCBhIHdheSB0byBtb2RpZnkgdGhlIGFic29sdXRlQ29udGFp
bmluZ0Jsb2NrUmVjdCBpbiB0aGUgVmlld3BvcnRDb250cmFpbnRzCisgICAgLy8gc3RpY2t5IG9i
amVjdHMuIFdlIHByb2JhYmx5IG5lZWQgYSB3YXkgdG8gbW9kaWZ5IHRoZSBjb250YWluaW5nQmxv
Y2tSZWN0IGluIHRoZSBWaWV3cG9ydENvbnRyYWludHMKICAgICAvLyB0byBnZXQgdGhpcyByaWdo
dCBpbiBhbGwgY2FzZXMuCiAgICAgbGF5ZXJQb3NpdGlvbiAtPSBjdW11bGF0aXZlRGVsdGE7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMTUyOTE4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI3LDggKzUyNywxOCBA
QCBMYXlvdXRQb2ludCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6YWRqdXN0CiB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0Ojpjb21wdXRlU3RpY2t5UG9zaXRpb25Db25zdHJhaW50cyhTdGlja3lQb3Np
dGlvblZpZXdwb3J0Q29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBjb25zdCBGbG9hdFJlY3QmIGNv
bnN0cmFpbmluZ1JlY3QpIGNvbnN0CiB7CiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9j
ayA9IHRoaXMtPmNvbnRhaW5pbmdCbG9jaygpOworICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdD
bGlwcGluZ0xheWVyID0gbGF5ZXIoKS0+ZW5jbG9zaW5nT3ZlcmZsb3dDbGlwTGF5ZXIoRXhjbHVk
ZVNlbGYpOworICAgIFJlbmRlckJveCogZW5jbG9zaW5nQ2xpcHBpbmdCb3ggPSBlbmNsb3NpbmdD
bGlwcGluZ0xheWVyID8gdG9SZW5kZXJCb3goZW5jbG9zaW5nQ2xpcHBpbmdMYXllci0+cmVuZGVy
ZXIoKSkgOiB2aWV3KCk7CisKKyAgICBMYXlvdXRSZWN0IGNvbnRhaW5lckNvbnRlbnRSZWN0Owor
ICAgIGlmICghZW5jbG9zaW5nQ2xpcHBpbmdMYXllcikKKyAgICAgICAgY29udGFpbmVyQ29udGVu
dFJlY3QgPSBjb250YWluaW5nQmxvY2stPmNvbnRlbnRCb3hSZWN0KCk7CisgICAgZWxzZSB7Cisg
ICAgICAgIGNvbnRhaW5lckNvbnRlbnRSZWN0ID0gY29udGFpbmluZ0Jsb2NrLT5sYXlvdXRPdmVy
Zmxvd1JlY3QoKTsKKyAgICAgICAgTGF5b3V0UG9pbnQgY29uYXRpbmVyTG9jYXRpb24gPSBjb250
YWluZXJDb250ZW50UmVjdC5sb2NhdGlvbigpICsgTGF5b3V0UG9pbnQoY29udGFpbmluZ0Jsb2Nr
LT5ib3JkZXJMZWZ0KCkgKyBjb250YWluaW5nQmxvY2stPnBhZGRpbmdMZWZ0KCksIGNvbnRhaW5p
bmdCbG9jay0+Ym9yZGVyVG9wKCkgKyBjb250YWluaW5nQmxvY2stPnBhZGRpbmdUb3AoKSk7Cisg
ICAgICAgIGNvbnRhaW5lckNvbnRlbnRSZWN0LnNldExvY2F0aW9uKGNvbmF0aW5lckxvY2F0aW9u
KTsKKyAgICB9CiAKLSAgICBMYXlvdXRSZWN0IGNvbnRhaW5lckNvbnRlbnRSZWN0ID0gY29udGFp
bmluZ0Jsb2NrLT5jb250ZW50Qm94UmVjdCgpOwogICAgIExheW91dFVuaXQgbWF4V2lkdGggPSBj
b250YWluaW5nQmxvY2stPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpOwogCiAgICAgLy8gU3RpY2t5
IHBvc2l0aW9uZWQgZWxlbWVudCBpZ25vcmUgYW55IG92ZXJyaWRlIGxvZ2ljYWwgd2lkdGggb24g
dGhlIGNvbnRhaW5pbmcgYmxvY2sgKGFzIHRoZXkgZG9uJ3QgY2FsbApAQCAtNTQwLDI2ICs1NTAs
MzQgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZVN0aWNreQogCiAgICAgLy8g
Q29tcHV0ZSB0aGUgY29udGFpbmVyLXJlbGF0aXZlIGFyZWEgd2l0aGluIHdoaWNoIHRoZSBzdGlj
a3kgZWxlbWVudCBpcyBhbGxvd2VkIHRvIG1vdmUuCiAgICAgY29udGFpbmVyQ29udGVudFJlY3Qu
Y29udHJhY3QobWluTWFyZ2luKTsKLSAgICAvLyBNYXAgdG8gdGhlIHZpZXcgdG8gYXZvaWQgaW5j
bHVkaW5nIHBhZ2Ugc2NhbGUgZmFjdG9yLgotICAgIGNvbnN0cmFpbnRzLnNldEFic29sdXRlQ29u
dGFpbmluZ0Jsb2NrUmVjdChjb250YWluaW5nQmxvY2stPmxvY2FsVG9Db250YWluZXJRdWFkKEZs
b2F0UmVjdChjb250YWluZXJDb250ZW50UmVjdCksIHZpZXcoKSkuYm91bmRpbmdCb3goKSk7CiAK
KyAgICAvLyBGaW5hbGx5IGNvbXB1dGUgY29udGFpbmVyIHJlY3QgcmVsYXRpdmUgdG8gdGhlIHNj
cm9sbGluZyBhbmNlc3Rvci4KKyAgICBGbG9hdFJlY3QgY29udGFpbmVyUmVjdFJlbGF0aXZlVG9T
Y3JvbGxpbmdBbmNlc3RvciA9IGNvbnRhaW5pbmdCbG9jay0+bG9jYWxUb0NvbnRhaW5lclF1YWQo
RmxvYXRSZWN0KGNvbnRhaW5lckNvbnRlbnRSZWN0KSwgZW5jbG9zaW5nQ2xpcHBpbmdCb3gpLmJv
dW5kaW5nQm94KCk7CisgICAgaWYgKGVuY2xvc2luZ0NsaXBwaW5nTGF5ZXIpIHsKKyAgICAgICAg
RmxvYXRQb2ludCBjb250YWluZXJMb2NhdGlvblJlbGF0aXZlVG9TY3JvbGxpbmdBbmNlc3RvciA9
IGNvbnRhaW5lclJlY3RSZWxhdGl2ZVRvU2Nyb2xsaW5nQW5jZXN0b3IubG9jYXRpb24oKSAtIEZs
b2F0U2l6ZShlbmNsb3NpbmdDbGlwcGluZ0JveC0+Ym9yZGVyTGVmdCgpICsgZW5jbG9zaW5nQ2xp
cHBpbmdCb3gtPnBhZGRpbmdMZWZ0KCksIGVuY2xvc2luZ0NsaXBwaW5nQm94LT5ib3JkZXJUb3Ao
KSArIGVuY2xvc2luZ0NsaXBwaW5nQm94LT5wYWRkaW5nVG9wKCkpOworICAgICAgICBpZiAoZW5j
bG9zaW5nQ2xpcHBpbmdCb3ggIT0gY29udGFpbmluZ0Jsb2NrKQorICAgICAgICAgICAgY29udGFp
bmVyTG9jYXRpb25SZWxhdGl2ZVRvU2Nyb2xsaW5nQW5jZXN0b3IgKz0gZW5jbG9zaW5nQ2xpcHBp
bmdMYXllci0+c2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgIGNvbnRhaW5lclJlY3RSZWxhdGl2ZVRv
U2Nyb2xsaW5nQW5jZXN0b3Iuc2V0TG9jYXRpb24oY29udGFpbmVyTG9jYXRpb25SZWxhdGl2ZVRv
U2Nyb2xsaW5nQW5jZXN0b3IpOworICAgIH0KKyAgICBjb25zdHJhaW50cy5zZXRDb250YWluaW5n
QmxvY2tSZWN0KGNvbnRhaW5lclJlY3RSZWxhdGl2ZVRvU2Nyb2xsaW5nQW5jZXN0b3IpOworCisg
ICAgLy8gTm93IGNvbXB1dGUgdGhlIHN0aWNreSBib3ggcmVjdCwgYWxzbyByZWxhdGl2ZSB0byB0
aGUgc2Nyb2xsaW5nIGFuY2VzdG9yLgogICAgIExheW91dFJlY3Qgc3RpY2t5Qm94UmVjdCA9IGZy
YW1lUmVjdEZvclN0aWNreVBvc2l0aW9uaW5nKCk7CiAgICAgTGF5b3V0UmVjdCBmbGlwcGVkU3Rp
Y2t5Qm94UmVjdCA9IHN0aWNreUJveFJlY3Q7CiAgICAgY29udGFpbmluZ0Jsb2NrLT5mbGlwRm9y
V3JpdGluZ01vZGUoZmxpcHBlZFN0aWNreUJveFJlY3QpOwotICAgIExheW91dFBvaW50IHN0aWNr
eUxvY2F0aW9uID0gZmxpcHBlZFN0aWNreUJveFJlY3QubG9jYXRpb24oKTsKKyAgICBGbG9hdFJl
Y3Qgc3RpY2t5Qm94UmVsYXRpdmVUb1Njcm9sbGluZ0FuZWNzdG9yID0gZmxpcHBlZFN0aWNreUJv
eFJlY3Q7CiAKLSAgICAvLyBGSVhNRTogc3Vja3MgdG8gY2FsbCBsb2NhbFRvQWJzb2x1dGUgYWdh
aW4sIGJ1dCB3ZSBjYW4ndCBqdXN0IG9mZnNldCBmcm9tIHRoZSBwcmV2aW91c2x5IGNvbXB1dGVk
IHJlY3QgaWYgdGhlcmUgYXJlIHRyYW5zZm9ybXMuCisgICAgLy8gRklYTUU6IHN1Y2tzIHRvIGNh
bGwgbG9jYWxUb0NvbnRhaW5lclF1YWQgYWdhaW4sIGJ1dCB3ZSBjYW4ndCBqdXN0IG9mZnNldCBm
cm9tIHRoZSBwcmV2aW91c2x5IGNvbXB1dGVkIHJlY3QgaWYgdGhlcmUgYXJlIHRyYW5zZm9ybXMu
CiAgICAgLy8gTWFwIHRvIHRoZSB2aWV3IHRvIGF2b2lkIGluY2x1ZGluZyBwYWdlIHNjYWxlIGZh
Y3Rvci4KLSAgICBGbG9hdFJlY3QgYWJzQ29udGFpbmVyRnJhbWUgPSBjb250YWluaW5nQmxvY2st
PmxvY2FsVG9Db250YWluZXJRdWFkKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNvbnRhaW5pbmdC
bG9jay0+c2l6ZSgpKSwgdmlldygpKS5ib3VuZGluZ0JveCgpOwotCi0gICAgaWYgKGNvbnRhaW5p
bmdCbG9jay0+aGFzT3ZlcmZsb3dDbGlwKCkpIHsKLSAgICAgICAgSW50U2l6ZSBzY3JvbGxPZmZz
ZXQgPSBjb250YWluaW5nQmxvY2stPmxheWVyKCktPnNjcm9sbE9mZnNldCgpOwotICAgICAgICBz
dGlja3lMb2NhdGlvbiAtPSBzY3JvbGxPZmZzZXQ7Ci0gICAgfQotCi0gICAgLy8gV2UgY2FuJ3Qg
Y2FsbCBsb2NhbFRvQWJzb2x1dGUgb24gfHRoaXN8IGJlY2F1c2UgdGhhdCB3aWxsIHJlY3VyLiBG
SVhNRTogRm9yIG5vdywgYXNzdW1lIHRoYXQgfHRoaXN8IGlzIG5vdCB0cmFuc2Zvcm1lZC4KLSAg
ICBGbG9hdFJlY3QgYWJzb2x1dGVTdGlja3lCb3hSZWN0KGFic0NvbnRhaW5lckZyYW1lLmxvY2F0
aW9uKCkgKyBzdGlja3lMb2NhdGlvbiwgZmxpcHBlZFN0aWNreUJveFJlY3Quc2l6ZSgpKTsKLSAg
ICBjb25zdHJhaW50cy5zZXRBYnNvbHV0ZVN0aWNreUJveFJlY3QoYWJzb2x1dGVTdGlja3lCb3hS
ZWN0KTsKKyAgICBGbG9hdFBvaW50IHN0aWNreUxvY2F0aW9uUmVsYXRpdmVUb1Njcm9sbGluZ0Fu
Y2VzdG9yID0gZmxpcHBlZFN0aWNreUJveFJlY3QubG9jYXRpb24oKSArIGNvbnRhaW5pbmdCbG9j
ay0+bG9jYWxUb0NvbnRhaW5lclF1YWQoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgY29udGFpbmlu
Z0Jsb2NrLT5zaXplKCkpLCBlbmNsb3NpbmdDbGlwcGluZ0JveCkuYm91bmRpbmdCb3goKS5sb2Nh
dGlvbigpOworICAgIGlmIChlbmNsb3NpbmdDbGlwcGluZ0xheWVyKSB7CisgICAgICAgIHN0aWNr
eUxvY2F0aW9uUmVsYXRpdmVUb1Njcm9sbGluZ0FuY2VzdG9yIC09IEZsb2F0U2l6ZShlbmNsb3Np
bmdDbGlwcGluZ0JveC0+Ym9yZGVyTGVmdCgpICsgZW5jbG9zaW5nQ2xpcHBpbmdCb3gtPnBhZGRp
bmdMZWZ0KCksIGVuY2xvc2luZ0NsaXBwaW5nQm94LT5ib3JkZXJUb3AoKSArIGVuY2xvc2luZ0Ns
aXBwaW5nQm94LT5wYWRkaW5nVG9wKCkpOworICAgICAgICBpZiAoZW5jbG9zaW5nQ2xpcHBpbmdC
b3ggIT0gY29udGFpbmluZ0Jsb2NrKQorICAgICAgICAgICAgc3RpY2t5TG9jYXRpb25SZWxhdGl2
ZVRvU2Nyb2xsaW5nQW5jZXN0b3IgKz0gZW5jbG9zaW5nQ2xpcHBpbmdMYXllci0+c2Nyb2xsT2Zm
c2V0KCk7CisgICAgfQorICAgIC8vIEZJWE1FOiBGb3Igbm93LCBhc3N1bWUgdGhhdCB8dGhpc3wg
aXMgbm90IHRyYW5zZm9ybWVkLgorICAgIHN0aWNreUJveFJlbGF0aXZlVG9TY3JvbGxpbmdBbmVj
c3Rvci5zZXRMb2NhdGlvbihzdGlja3lMb2NhdGlvblJlbGF0aXZlVG9TY3JvbGxpbmdBbmNlc3Rv
cik7CisgICAgY29uc3RyYWludHMuc2V0U3RpY2t5Qm94UmVjdChzdGlja3lCb3hSZWxhdGl2ZVRv
U2Nyb2xsaW5nQW5lY3N0b3IpOwogCiAgICAgaWYgKCFzdHlsZSgpLT5sZWZ0KCkuaXNBdXRvKCkp
IHsKICAgICAgICAgY29uc3RyYWludHMuc2V0TGVmdE9mZnNldCh2YWx1ZUZvckxlbmd0aChzdHls
ZSgpLT5sZWZ0KCksIGNvbnN0cmFpbmluZ1JlY3Qud2lkdGgoKSwgdmlldygpKSk7CkBAIC01OTIs
NiArNjEwLDkgQEAgTGF5b3V0U2l6ZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3RpY2t5UAogICAg
ICAgICBSZW5kZXJCb3gqIGVuY2xvc2luZ0NsaXBwaW5nQm94ID0gdG9SZW5kZXJCb3goZW5jbG9z
aW5nQ2xpcHBpbmdMYXllci0+cmVuZGVyZXIoKSk7CiAgICAgICAgIExheW91dFJlY3QgY2xpcFJl
Y3QgPSBlbmNsb3NpbmdDbGlwcGluZ0JveC0+b3ZlcmZsb3dDbGlwUmVjdChMYXlvdXRQb2ludCgp
LCAwKTsgLy8gRklYTUU6IG1ha2UgdGhpcyB3b3JrIGluIHJlZ2lvbnMuCiAgICAgICAgIGNvbnN0
cmFpbmluZ1JlY3QgPSBlbmNsb3NpbmdDbGlwcGluZ0JveC0+bG9jYWxUb0NvbnRhaW5lclF1YWQo
RmxvYXRSZWN0KGNsaXBSZWN0KSwgdmlldygpKS5ib3VuZGluZ0JveCgpOworCisgICAgICAgIEZs
b2F0UG9pbnQgc2Nyb2xsT2Zmc2V0ID0gRmxvYXRQb2ludCgpICsgZW5jbG9zaW5nQ2xpcHBpbmdM
YXllci0+c2Nyb2xsT2Zmc2V0KCk7CisgICAgICAgIGNvbnN0cmFpbmluZ1JlY3Quc2V0TG9jYXRp
b24oc2Nyb2xsT2Zmc2V0KTsKICAgICB9IGVsc2UgewogICAgICAgICBMYXlvdXRSZWN0IHZpZXdw
b3J0UmVjdCA9IHZpZXcoKS0+ZnJhbWVWaWV3KCktPnZpZXdwb3J0Q29uc3RyYWluZWRWaXNpYmxl
Q29udGVudFJlY3QoKTsKICAgICAgICAgZmxvYXQgc2NhbGUgPSAxOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207267</attachid>
            <date>2013-07-22 13:16:42 -0700</date>
            <delta_ts>2013-07-22 14:02:43 -0700</delta_ts>
            <desc>New patch</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>19756</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Mjk4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDEzLTA3LTIyICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBTdGlja3lQb3NpdGlvbkNvbnRyYWlu
dHMgc2hvdWxkIG5vdCBuZWVkIHRvIGNoYW5nZSB0byBhY2NvdW50IGZvciBhIFJlbmRlckxheWVy
J3MgCisgICAgICAgIHNjcm9sbE9mZnNldAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE4OTU4CisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyNDY5MjAzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCB0byBnZXQgc3RpY2t5
IG9mZnNldHMgcmlnaHQgaW4gb3ZlcmZsb3cgYXJlYXMsIHRoZSAKKyAgICAgICAgU3RpY2t5UG9z
aXRpb25Db25zdHJhaW50cyBjaGFuZ2VkIG9uIGV2ZXJ5IHNjcm9sbCB0byBmYWN0b3IgaXQgaW4u
IFRoaXMgd2lsbCBiZSBhIAorICAgICAgICBwcm9ibGVtIG9uY2Ugd2UgY2FuIHNjcm9sbCBvdmVy
ZmxvdyBhcmVhcyBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZC4gVGhlIGNvbnN0cmFpbnRzIAorICAg
ICAgICBzaG91bGQgbmV2ZXIgaGF2ZSB0byBjaGFuZ2UgdG8gYWNjb3VudCBmb3IgdGhlIHNjcm9s
bCBwb3NpdGlvbi4gVGhpcyBwYXRjaCBmaXhlcyAKKyAgICAgICAgdGhhdCBpc3N1ZSBieSBjaGFu
Z2luZyB0aGUgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRz4oCZcyBjb250YWluZXJC
bG9ja1JlY3QgCisgICAgICAgIGFuZCBzdGlja3lCb3hSZWN0IHRvIGJlIGluIGEgY29vcmRpbmF0
ZSBzcGFjZSB0aGF0IGlzIHJlbGF0aXZlIHRvIHRoZSBzY3JvbGxpbmcgCisgICAgICAgIGFuY2Vz
dG9yIHJhdGhlciB0aGFuIGJlaW5nIGFic29sdXRlLiBUaGlzIHBhdGNoIGFsc28gcmVtb3ZlcyDi
gJhhYnNvbHV0ZeKAmSBmcm9tIHRob3NlIAorICAgICAgICB2YXJpYWJsZSBuYW1lcyBzaW5jZSB0
aGV5IGFyZSBubyBsb25nZXIgYWJzb2x1dGUuCisKKyAgICAgICAgQSBmZXcgcmUtbmFtZXMgaW4g
dGhlIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyBjbGFzcy4gVGhlIHBhcmFtZXRl
ciB0byAKKyAgICAgICAgY29tcHV0ZVN0aWNreU9mZnNldCgpIHVzZWQgdG8gYmUgY2FsbGVkIHZp
ZXdwb3J0UmVjdCwgYW5kIGlzIG5vdyBjYWxsZWQgCisgICAgICAgIGNvbnN0cmFpbmluZ1JlY3Qu
IG1fYWJzb2x1dGVTdGlja3lCb3hSZWN0IGlzIG5vdyBtX3N0aWNreUJveFJlY3QsIGFuZCAKKyAg
ICAgICAgbV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3QgaXMgbm93IG1fY29udGFpbmluZ0Js
b2NrUmVjdC4gQW5kIGZpbmFsbHksIAorICAgICAgICBsYXllclBvc2l0aW9uRm9yVmlld3BvcnRS
ZWN0KCkgaXMgbm93IGxheWVyUG9zaXRpb25Gb3JDb25zdHJhaW5pbmdSZWN0KCkKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25zdHJhaW50cy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OmNvbXB1dGVTdGlja3lPZmZz
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRz
OjpsYXllclBvc2l0aW9uRm9yQ29uc3RyYWluaW5nUmVjdCk6CisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0aWNreVBv
c2l0aW9uVmlld3BvcnRDb25zdHJhaW50czo6U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFp
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50
czo6Y29udGFpbmluZ0Jsb2NrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTdGlja3lQb3NpdGlv
blZpZXdwb3J0Q29uc3RyYWludHM6OnNldENvbnRhaW5pbmdCbG9ja1JlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOjpzdGlja3lCb3hSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czo6
c2V0U3RpY2t5Qm94UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTdGlja3lQb3NpdGlvblZpZXdw
b3J0Q29uc3RyYWludHM6Om9wZXJhdG9yPT0pOgorCisgICAgICAgIEFjY291bnRpbmcgZm9yIHRo
ZSByZS1uYW1lcy4gCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTdGlj
a3lOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZTo6
c3luY0xheWVyUG9zaXRpb25Gb3JWaWV3cG9ydFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nU3RhdGVTdGlja3lOb2RlOjpkdW1wUHJvcGVydGllcyk6CisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnBhcmVudFNjcm9sbFBvc2l0aW9uRGlkQ2hhbmdl
KToKKworICAgICAgICBDb21wdXRlIGFsbCB2YWx1ZXMgcmVsYXRpdmUgdG8gdGhlIHNjcm9sbGlu
ZyBhbmNlc3Rvci4gVGhpcyByZXF1aXJlcyBzb21lIGp1Z2dsaW5nIAorICAgICAgICBpbiB0aGUg
b3ZlcmZsb3cgY2FzZSB0byBmYWN0b3IgYm9yZGVyIGFuZCBwYWRkaW5nIGluIG9yIG91dC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVTdGlja3lQb3NpdGlvbkNvbnN0cmFp
bnRzKToKKworICAgICAgICBUaGlzIGlzIHdoZXJlIHRoZSBzY3JvbGxPZmZzZXQgc2hvdWxkIGJl
IGZhY3RvcmVkIGluLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnN0
aWNreVBvc2l0aW9uT2Zmc2V0KToKKwogMjAxMy0wNy0yMiAgWmFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE1MjIyNykgSW1hZ2VzIHdpdGggY29t
cG9zaXRpbmcgbGF5ZXIgZG9uJ3Qgc2hvdyB1cCB1bmxlc3MgdGhlIGNvbnRhaW5pbmcgd2luZG93
IGlzIHJlc2l6ZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb25zdHJhaW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25zdHJhaW50cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDE0ICs0NSwxNCBAQCBGbG9hdFBvaW50IEZpeGVkUG9zaXRpb25WaWV3
cG9ydENvbnN0cmFpCiAgICAgcmV0dXJuIG1fbGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCArIG9m
ZnNldDsKIH0KIAotRmxvYXRTaXplIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czo6
Y29tcHV0ZVN0aWNreU9mZnNldChjb25zdCBGbG9hdFJlY3QmIHZpZXdwb3J0UmVjdCkgY29uc3QK
K0Zsb2F0U2l6ZSBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OmNvbXB1dGVTdGlj
a3lPZmZzZXQoY29uc3QgRmxvYXRSZWN0JiBjb25zdHJhaW5pbmdSZWN0KSBjb25zdAogewotICAg
IEZsb2F0UmVjdCBib3hSZWN0ID0gbV9hYnNvbHV0ZVN0aWNreUJveFJlY3Q7CisgICAgRmxvYXRS
ZWN0IGJveFJlY3QgPSBtX3N0aWNreUJveFJlY3Q7CiAgICAgCiAgICAgaWYgKGhhc0FuY2hvckVk
Z2UoQW5jaG9yRWRnZVJpZ2h0KSkgewotICAgICAgICBmbG9hdCByaWdodExpbWl0ID0gdmlld3Bv
cnRSZWN0Lm1heFgoKSAtIG1fcmlnaHRPZmZzZXQ7Ci0gICAgICAgIGZsb2F0IHJpZ2h0RGVsdGEg
PSBzdGQ6Om1pbjxmbG9hdD4oMCwgcmlnaHRMaW1pdCAtIG1fYWJzb2x1dGVTdGlja3lCb3hSZWN0
Lm1heFgoKSk7Ci0gICAgICAgIGZsb2F0IGF2YWlsYWJsZVNwYWNlID0gc3RkOjptaW48ZmxvYXQ+
KDAsIG1fYWJzb2x1dGVDb250YWluaW5nQmxvY2tSZWN0LngoKSAtIG1fYWJzb2x1dGVTdGlja3lC
b3hSZWN0LngoKSk7CisgICAgICAgIGZsb2F0IHJpZ2h0TGltaXQgPSBjb25zdHJhaW5pbmdSZWN0
Lm1heFgoKSAtIG1fcmlnaHRPZmZzZXQ7CisgICAgICAgIGZsb2F0IHJpZ2h0RGVsdGEgPSBzdGQ6
Om1pbjxmbG9hdD4oMCwgcmlnaHRMaW1pdCAtIG1fc3RpY2t5Qm94UmVjdC5tYXhYKCkpOworICAg
ICAgICBmbG9hdCBhdmFpbGFibGVTcGFjZSA9IHN0ZDo6bWluPGZsb2F0PigwLCBtX2NvbnRhaW5p
bmdCbG9ja1JlY3QueCgpIC0gbV9zdGlja3lCb3hSZWN0LngoKSk7CiAgICAgICAgIGlmIChyaWdo
dERlbHRhIDwgYXZhaWxhYmxlU3BhY2UpCiAgICAgICAgICAgICByaWdodERlbHRhID0gYXZhaWxh
YmxlU3BhY2U7CiAKQEAgLTYwLDkgKzYwLDkgQEAgRmxvYXRTaXplIFN0aWNreVBvc2l0aW9uVmll
d3BvcnRDb25zdHJhaQogICAgIH0KIAogICAgIGlmIChoYXNBbmNob3JFZGdlKEFuY2hvckVkZ2VM
ZWZ0KSkgewotICAgICAgICBmbG9hdCBsZWZ0TGltaXQgPSB2aWV3cG9ydFJlY3QueCgpICsgbV9s
ZWZ0T2Zmc2V0OwotICAgICAgICBmbG9hdCBsZWZ0RGVsdGEgPSBzdGQ6Om1heDxmbG9hdD4oMCwg
bGVmdExpbWl0IC0gbV9hYnNvbHV0ZVN0aWNreUJveFJlY3QueCgpKTsKLSAgICAgICAgZmxvYXQg
YXZhaWxhYmxlU3BhY2UgPSBzdGQ6Om1heDxmbG9hdD4oMCwgbV9hYnNvbHV0ZUNvbnRhaW5pbmdC
bG9ja1JlY3QubWF4WCgpIC0gbV9hYnNvbHV0ZVN0aWNreUJveFJlY3QubWF4WCgpKTsKKyAgICAg
ICAgZmxvYXQgbGVmdExpbWl0ID0gY29uc3RyYWluaW5nUmVjdC54KCkgKyBtX2xlZnRPZmZzZXQ7
CisgICAgICAgIGZsb2F0IGxlZnREZWx0YSA9IHN0ZDo6bWF4PGZsb2F0PigwLCBsZWZ0TGltaXQg
LSBtX3N0aWNreUJveFJlY3QueCgpKTsKKyAgICAgICAgZmxvYXQgYXZhaWxhYmxlU3BhY2UgPSBz
dGQ6Om1heDxmbG9hdD4oMCwgbV9jb250YWluaW5nQmxvY2tSZWN0Lm1heFgoKSAtIG1fc3RpY2t5
Qm94UmVjdC5tYXhYKCkpOwogICAgICAgICBpZiAobGVmdERlbHRhID4gYXZhaWxhYmxlU3BhY2Up
CiAgICAgICAgICAgICBsZWZ0RGVsdGEgPSBhdmFpbGFibGVTcGFjZTsKIApAQCAtNzAsOSArNzAs
OSBAQCBGbG9hdFNpemUgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpCiAgICAgfQogICAg
IAogICAgIGlmIChoYXNBbmNob3JFZGdlKEFuY2hvckVkZ2VCb3R0b20pKSB7Ci0gICAgICAgIGZs
b2F0IGJvdHRvbUxpbWl0ID0gdmlld3BvcnRSZWN0Lm1heFkoKSAtIG1fYm90dG9tT2Zmc2V0Owot
ICAgICAgICBmbG9hdCBib3R0b21EZWx0YSA9IHN0ZDo6bWluPGZsb2F0PigwLCBib3R0b21MaW1p
dCAtIG1fYWJzb2x1dGVTdGlja3lCb3hSZWN0Lm1heFkoKSk7Ci0gICAgICAgIGZsb2F0IGF2YWls
YWJsZVNwYWNlID0gc3RkOjptaW48ZmxvYXQ+KDAsIG1fYWJzb2x1dGVDb250YWluaW5nQmxvY2tS
ZWN0LnkoKSAtIG1fYWJzb2x1dGVTdGlja3lCb3hSZWN0LnkoKSk7CisgICAgICAgIGZsb2F0IGJv
dHRvbUxpbWl0ID0gY29uc3RyYWluaW5nUmVjdC5tYXhZKCkgLSBtX2JvdHRvbU9mZnNldDsKKyAg
ICAgICAgZmxvYXQgYm90dG9tRGVsdGEgPSBzdGQ6Om1pbjxmbG9hdD4oMCwgYm90dG9tTGltaXQg
LSBtX3N0aWNreUJveFJlY3QubWF4WSgpKTsKKyAgICAgICAgZmxvYXQgYXZhaWxhYmxlU3BhY2Ug
PSBzdGQ6Om1pbjxmbG9hdD4oMCwgbV9jb250YWluaW5nQmxvY2tSZWN0LnkoKSAtIG1fc3RpY2t5
Qm94UmVjdC55KCkpOwogICAgICAgICBpZiAoYm90dG9tRGVsdGEgPCBhdmFpbGFibGVTcGFjZSkK
ICAgICAgICAgICAgIGJvdHRvbURlbHRhID0gYXZhaWxhYmxlU3BhY2U7CiAKQEAgLTgwLDIxICs4
MCwyMSBAQCBGbG9hdFNpemUgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpCiAgICAgfQog
CiAgICAgaWYgKGhhc0FuY2hvckVkZ2UoQW5jaG9yRWRnZVRvcCkpIHsKLSAgICAgICAgZmxvYXQg
dG9wTGltaXQgPSB2aWV3cG9ydFJlY3QueSgpICsgbV90b3BPZmZzZXQ7Ci0gICAgICAgIGZsb2F0
IHRvcERlbHRhID0gc3RkOjptYXg8ZmxvYXQ+KDAsIHRvcExpbWl0IC0gbV9hYnNvbHV0ZVN0aWNr
eUJveFJlY3QueSgpKTsKLSAgICAgICAgZmxvYXQgYXZhaWxhYmxlU3BhY2UgPSBzdGQ6Om1heDxm
bG9hdD4oMCwgbV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3QubWF4WSgpIC0gbV9hYnNvbHV0
ZVN0aWNreUJveFJlY3QubWF4WSgpKTsKKyAgICAgICAgZmxvYXQgdG9wTGltaXQgPSBjb25zdHJh
aW5pbmdSZWN0LnkoKSArIG1fdG9wT2Zmc2V0OworICAgICAgICBmbG9hdCB0b3BEZWx0YSA9IHN0
ZDo6bWF4PGZsb2F0PigwLCB0b3BMaW1pdCAtIG1fc3RpY2t5Qm94UmVjdC55KCkpOworICAgICAg
ICBmbG9hdCBhdmFpbGFibGVTcGFjZSA9IHN0ZDo6bWF4PGZsb2F0PigwLCBtX2NvbnRhaW5pbmdC
bG9ja1JlY3QubWF4WSgpIC0gbV9zdGlja3lCb3hSZWN0Lm1heFkoKSk7CiAgICAgICAgIGlmICh0
b3BEZWx0YSA+IGF2YWlsYWJsZVNwYWNlKQogICAgICAgICAgICAgdG9wRGVsdGEgPSBhdmFpbGFi
bGVTcGFjZTsKIAogICAgICAgICBib3hSZWN0Lm1vdmUoMCwgdG9wRGVsdGEpOwogICAgIH0KIAot
ICAgIHJldHVybiBib3hSZWN0LmxvY2F0aW9uKCkgLSBtX2Fic29sdXRlU3RpY2t5Qm94UmVjdC5s
b2NhdGlvbigpOworICAgIHJldHVybiBib3hSZWN0LmxvY2F0aW9uKCkgLSBtX3N0aWNreUJveFJl
Y3QubG9jYXRpb24oKTsKIH0KIAotRmxvYXRQb2ludCBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29u
c3RyYWludHM6OmxheWVyUG9zaXRpb25Gb3JWaWV3cG9ydFJlY3QoY29uc3QgRmxvYXRSZWN0JiB2
aWV3cG9ydFJlY3QpIGNvbnN0CitGbG9hdFBvaW50IFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25z
dHJhaW50czo6bGF5ZXJQb3NpdGlvbkZvckNvbnN0cmFpbmluZ1JlY3QoY29uc3QgRmxvYXRSZWN0
JiBjb25zdHJhaW5pbmdSZWN0KSBjb25zdAogewotICAgIEZsb2F0U2l6ZSBvZmZzZXQgPSBjb21w
dXRlU3RpY2t5T2Zmc2V0KHZpZXdwb3J0UmVjdCk7CisgICAgRmxvYXRTaXplIG9mZnNldCA9IGNv
bXB1dGVTdGlja3lPZmZzZXQoY29uc3RyYWluaW5nUmVjdCk7CiAgICAgcmV0dXJuIG1fbGF5ZXJQ
b3NpdGlvbkF0TGFzdExheW91dCArIG9mZnNldCAtIG1fc3RpY2t5T2Zmc2V0QXRMYXN0TGF5b3V0
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25z
dHJhaW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ0NvbnN0cmFpbnRzLmgJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyNSwxOCArMTI1LDE4IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3JpZ2h0T2Zmc2V0KG90aGVy
Lm1fcmlnaHRPZmZzZXQpCiAgICAgICAgICwgbV90b3BPZmZzZXQob3RoZXIubV90b3BPZmZzZXQp
CiAgICAgICAgICwgbV9ib3R0b21PZmZzZXQob3RoZXIubV9ib3R0b21PZmZzZXQpCi0gICAgICAg
ICwgbV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3Qob3RoZXIubV9hYnNvbHV0ZUNvbnRhaW5p
bmdCbG9ja1JlY3QpCi0gICAgICAgICwgbV9hYnNvbHV0ZVN0aWNreUJveFJlY3Qob3RoZXIubV9h
YnNvbHV0ZVN0aWNreUJveFJlY3QpCisgICAgICAgICwgbV9jb250YWluaW5nQmxvY2tSZWN0KG90
aGVyLm1fY29udGFpbmluZ0Jsb2NrUmVjdCkKKyAgICAgICAgLCBtX3N0aWNreUJveFJlY3Qob3Ro
ZXIubV9zdGlja3lCb3hSZWN0KQogICAgICAgICAsIG1fc3RpY2t5T2Zmc2V0QXRMYXN0TGF5b3V0
KG90aGVyLm1fc3RpY2t5T2Zmc2V0QXRMYXN0TGF5b3V0KQogICAgICAgICAsIG1fbGF5ZXJQb3Np
dGlvbkF0TGFzdExheW91dChvdGhlci5tX2xheWVyUG9zaXRpb25BdExhc3RMYXlvdXQpCiAgICAg
eyB9CiAKLSAgICBGbG9hdFNpemUgY29tcHV0ZVN0aWNreU9mZnNldChjb25zdCBGbG9hdFJlY3Qm
IHZpZXdwb3J0UmVjdCkgY29uc3Q7CisgICAgRmxvYXRTaXplIGNvbXB1dGVTdGlja3lPZmZzZXQo
Y29uc3QgRmxvYXRSZWN0JiBjb25zdHJhaW5pbmdSZWN0KSBjb25zdDsKIAogICAgIGNvbnN0IEZs
b2F0U2l6ZSBzdGlja3lPZmZzZXRBdExhc3RMYXlvdXQoKSBjb25zdCB7IHJldHVybiBtX3N0aWNr
eU9mZnNldEF0TGFzdExheW91dDsgfQogICAgIHZvaWQgc2V0U3RpY2t5T2Zmc2V0QXRMYXN0TGF5
b3V0KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KSB7IG1fc3RpY2t5T2Zmc2V0QXRMYXN0TGF5b3V0
ID0gb2Zmc2V0OyB9CiAKLSAgICBGbG9hdFBvaW50IGxheWVyUG9zaXRpb25Gb3JWaWV3cG9ydFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiB2aWV3cG9ydFJlY3QpIGNvbnN0OworICAgIEZsb2F0UG9pbnQg
bGF5ZXJQb3NpdGlvbkZvckNvbnN0cmFpbmluZ1JlY3QoY29uc3QgRmxvYXRSZWN0JiBjb25zdHJh
aW5pbmdSZWN0KSBjb25zdDsKIAogICAgIGNvbnN0IEZsb2F0UG9pbnQmIGxheWVyUG9zaXRpb25B
dExhc3RMYXlvdXQoKSBjb25zdCB7IHJldHVybiBtX2xheWVyUG9zaXRpb25BdExhc3RMYXlvdXQ7
IH0KICAgICB2b2lkIHNldExheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQpIHsgbV9sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0ID0gcG9pbnQ7IH0KQEAgLTE1
MSwxMSArMTUxLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRvcE9mZnNldChmbG9hdCBvZmZz
ZXQpIHsgbV90b3BPZmZzZXQgPSBvZmZzZXQ7IH0KICAgICB2b2lkIHNldEJvdHRvbU9mZnNldChm
bG9hdCBvZmZzZXQpIHsgbV9ib3R0b21PZmZzZXQgPSBvZmZzZXQ7IH0KIAotICAgIEZsb2F0UmVj
dCBhYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3QoKSBjb25zdCB7IHJldHVybiBtX2Fic29sdXRl
Q29udGFpbmluZ0Jsb2NrUmVjdDsgfQotICAgIHZvaWQgc2V0QWJzb2x1dGVDb250YWluaW5nQmxv
Y2tSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgeyBtX2Fic29sdXRlQ29udGFpbmluZ0Jsb2Nr
UmVjdCA9IHJlY3Q7IH0KLQotICAgIEZsb2F0UmVjdCBhYnNvbHV0ZVN0aWNreUJveFJlY3QoKSBj
b25zdCB7IHJldHVybiBtX2Fic29sdXRlU3RpY2t5Qm94UmVjdDsgfQotICAgIHZvaWQgc2V0QWJz
b2x1dGVTdGlja3lCb3hSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgeyBtX2Fic29sdXRlU3Rp
Y2t5Qm94UmVjdCA9IHJlY3Q7IH0KKyAgICAvLyBjb250YWluaW5nQmxvY2tSZWN0KCkgaXMgaW4g
dGhlIHNjcm9sbGluZyBhbmNlc3RvcidzIGNvb3JkaW5hdGUgc3BhY2UuCisgICAgRmxvYXRSZWN0
IGNvbnRhaW5pbmdCbG9ja1JlY3QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRhaW5pbmdCbG9ja1Jl
Y3Q7IH0KKyAgICB2b2lkIHNldENvbnRhaW5pbmdCbG9ja1JlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KSB7IG1fY29udGFpbmluZ0Jsb2NrUmVjdCA9IHJlY3Q7IH0KKworICAgIC8vIHN0aWNreUJv
eFJlY3QoKSBpcyBpbiB0aGUgc2Nyb2xsaW5nIGFuY2VzdG9yJ3MgY29vcmRpbmF0ZSBzcGFjZS4K
KyAgICBGbG9hdFJlY3Qgc3RpY2t5Qm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RpY2t5Qm94
UmVjdDsgfQorICAgIHZvaWQgc2V0U3RpY2t5Qm94UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
IHsgbV9zdGlja3lCb3hSZWN0ID0gcmVjdDsgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyYgb3RoZXIpIGNvbnN0CiAgICAgewpA
QCAtMTYzLDggKzE2NSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICYmIG1fcmlnaHRPZmZzZXQg
PT0gb3RoZXIubV9yaWdodE9mZnNldAogICAgICAgICAgICAgJiYgbV90b3BPZmZzZXQgPT0gb3Ro
ZXIubV90b3BPZmZzZXQKICAgICAgICAgICAgICYmIG1fYm90dG9tT2Zmc2V0ID09IG90aGVyLm1f
Ym90dG9tT2Zmc2V0Ci0gICAgICAgICAgICAmJiBtX2Fic29sdXRlQ29udGFpbmluZ0Jsb2NrUmVj
dCA9PSBvdGhlci5tX2Fic29sdXRlQ29udGFpbmluZ0Jsb2NrUmVjdAotICAgICAgICAgICAgJiYg
bV9hYnNvbHV0ZVN0aWNreUJveFJlY3QgPT0gb3RoZXIubV9hYnNvbHV0ZVN0aWNreUJveFJlY3QK
KyAgICAgICAgICAgICYmIG1fY29udGFpbmluZ0Jsb2NrUmVjdCA9PSBvdGhlci5tX2NvbnRhaW5p
bmdCbG9ja1JlY3QKKyAgICAgICAgICAgICYmIG1fc3RpY2t5Qm94UmVjdCA9PSBvdGhlci5tX3N0
aWNreUJveFJlY3QKICAgICAgICAgICAgICYmIG1fc3RpY2t5T2Zmc2V0QXRMYXN0TGF5b3V0ID09
IG90aGVyLm1fc3RpY2t5T2Zmc2V0QXRMYXN0TGF5b3V0CiAgICAgICAgICAgICAmJiBtX2xheWVy
UG9zaXRpb25BdExhc3RMYXlvdXQgPT0gb3RoZXIubV9sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0
OwogICAgIH0KQEAgLTE3OCw4ICsxODAsOCBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fcmlnaHRP
ZmZzZXQ7CiAgICAgZmxvYXQgbV90b3BPZmZzZXQ7CiAgICAgZmxvYXQgbV9ib3R0b21PZmZzZXQ7
Ci0gICAgRmxvYXRSZWN0IG1fYWJzb2x1dGVDb250YWluaW5nQmxvY2tSZWN0OwotICAgIEZsb2F0
UmVjdCBtX2Fic29sdXRlU3RpY2t5Qm94UmVjdDsKKyAgICBGbG9hdFJlY3QgbV9jb250YWluaW5n
QmxvY2tSZWN0OworICAgIEZsb2F0UmVjdCBtX3N0aWNreUJveFJlY3Q7CiAgICAgRmxvYXRTaXpl
IG1fc3RpY2t5T2Zmc2V0QXRMYXN0TGF5b3V0OwogICAgIEZsb2F0UG9pbnQgbV9sYXllclBvc2l0
aW9uQXRMYXN0TGF5b3V0OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmNwcAkocmV2aXNpb24g
MTUyOTc5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVT
dGlja3lOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFNjcm9s
bGluZ1N0YXRlU3RpY2t5Tm9kZTo6dXBkYXRlQ29uCiAKIHZvaWQgU2Nyb2xsaW5nU3RhdGVTdGlj
a3lOb2RlOjpzeW5jTGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVjdChjb25zdCBMYXlvdXRSZWN0
JiB2aWV3cG9ydFJlY3QpCiB7Ci0gICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IG1fY29uc3RyYWlu
dHMubGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVjdCh2aWV3cG9ydFJlY3QpOworICAgIEZsb2F0
UG9pbnQgcG9zaXRpb24gPSBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25Gb3JDb25zdHJhaW5p
bmdSZWN0KHZpZXdwb3J0UmVjdCk7CiAgICAgZ3JhcGhpY3NMYXllcigpLT5zeW5jUG9zaXRpb24o
cG9zaXRpb24pOwogfQogCkBAIC0xMTIsMTUgKzExMiwxNSBAQCB2b2lkIFNjcm9sbGluZ1N0YXRl
U3RpY2t5Tm9kZTo6ZHVtcFByb3BlCiAgICAgfQogCiAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVu
dCArIDEpOwotICAgIEZsb2F0UmVjdCByID0gbV9jb25zdHJhaW50cy5hYnNvbHV0ZUNvbnRhaW5p
bmdCbG9ja1JlY3QoKTsKKyAgICBGbG9hdFJlY3QgciA9IG1fY29uc3RyYWludHMuY29udGFpbmlu
Z0Jsb2NrUmVjdCgpOwogICAgIHRzIDw8ICIoY29udGFpbmluZyBibG9jayByZWN0ICIgPDwgci54
KCkgPDwgIiwgIiA8PCByLnkoKSA8PCAiICIgPDwgci53aWR0aCgpIDw8ICIgeCAiIDw8IHIuaGVp
Z2h0KCkgPDwgIilcbiI7CiAKICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7Ci0gICAg
ciA9IG1fY29uc3RyYWludHMuYWJzb2x1dGVTdGlja3lCb3hSZWN0KCk7CisgICAgciA9IG1fY29u
c3RyYWludHMuc3RpY2t5Qm94UmVjdCgpOwogICAgIHRzIDw8ICIoc3RpY2t5IGJveCByZWN0ICIg
PDwgci54KCkgPDwgIiAiIDw8IHIueSgpIDw8ICIgIiA8PCByLndpZHRoKCkgPDwgIiAiIDw8IHIu
aGVpZ2h0KCkgPDwgIilcbiI7CiAKICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7Ci0g
ICAgciA9IG1fY29uc3RyYWludHMuYWJzb2x1dGVTdGlja3lCb3hSZWN0KCk7CisgICAgciA9IG1f
Y29uc3RyYWludHMuc3RpY2t5Qm94UmVjdCgpOwogICAgIHRzIDw8ICIoc3RpY2t5IGJveCByZWN0
ICIgPDwgci54KCkgPDwgIiAiIDw8IHIueSgpIDw8ICIgIiA8PCByLndpZHRoKCkgPDwgIiAiIDw8
IHIuaGVpZ2h0KCkgPDwgIilcbiI7CiAKICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tCShyZXZpc2lvbiAxNTI5NzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0J
KHdvcmtpbmcgY29weSkKQEAgLTY1LDEwICs2NSwxMCBAQCBzdGF0aWMgaW5saW5lIENHUG9pbnQg
b3BlcmF0b3IqKENHUG9pbnQmCiAKIHZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnBhcmVu
dFNjcm9sbFBvc2l0aW9uRGlkQ2hhbmdlKGNvbnN0IEludFJlY3QmIHZpZXdwb3J0UmVjdCwgY29u
c3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpCiB7Ci0gICAgRmxvYXRQb2ludCBsYXllclBv
c2l0aW9uID0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uRm9yVmlld3BvcnRSZWN0KHZpZXdw
b3J0UmVjdCk7CisgICAgRmxvYXRQb2ludCBsYXllclBvc2l0aW9uID0gbV9jb25zdHJhaW50cy5s
YXllclBvc2l0aW9uRm9yQ29uc3RyYWluaW5nUmVjdCh2aWV3cG9ydFJlY3QpOwogCiAgICAgLy8g
RklYTUU6IFN1YnRyYWN0aW5nIHRoZSBjdW11bGF0aXZlRGVsdGEgaXMgbm90IHRvdGFsbHkgc3Vm
ZmljaWVudCB0byBnZXQgdGhlIG5ldyBwb3NpdGlvbiByaWdodCBmb3IgbmVzdGVkCi0gICAgLy8g
c3RpY2t5IG9iamVjdHMuIFdlIHByb2JhYmx5IG5lZWQgYSB3YXkgdG8gbW9kaWZ5IHRoZSBhYnNv
bHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3QgaW4gdGhlIFZpZXdwb3J0Q29udHJhaW50cworICAgIC8v
IHN0aWNreSBvYmplY3RzLiBXZSBwcm9iYWJseSBuZWVkIGEgd2F5IHRvIG1vZGlmeSB0aGUgY29u
dGFpbmluZ0Jsb2NrUmVjdCBpbiB0aGUgVmlld3BvcnRDb250cmFpbnRzCiAgICAgLy8gdG8gZ2V0
IHRoaXMgcmlnaHQgaW4gYWxsIGNhc2VzLgogICAgIGxheWVyUG9zaXRpb24gLT0gY3VtdWxhdGl2
ZURlbHRhOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDE1Mjk3OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNyw4
ICs1MjcsMTkgQEAgTGF5b3V0UG9pbnQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmFkanVzdAogdm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZVN0aWNreVBvc2l0aW9uQ29uc3RyYWludHMo
U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgY29uc3QgRmxv
YXRSZWN0JiBjb25zdHJhaW5pbmdSZWN0KSBjb25zdAogewogICAgIFJlbmRlckJsb2NrKiBjb250
YWluaW5nQmxvY2sgPSB0aGlzLT5jb250YWluaW5nQmxvY2soKTsKKyAgICBSZW5kZXJMYXllciog
ZW5jbG9zaW5nQ2xpcHBpbmdMYXllciA9IGxheWVyKCktPmVuY2xvc2luZ092ZXJmbG93Q2xpcExh
eWVyKEV4Y2x1ZGVTZWxmKTsKKyAgICBSZW5kZXJCb3gqIGVuY2xvc2luZ0NsaXBwaW5nQm94ID0g
ZW5jbG9zaW5nQ2xpcHBpbmdMYXllciA/IHRvUmVuZGVyQm94KGVuY2xvc2luZ0NsaXBwaW5nTGF5
ZXItPnJlbmRlcmVyKCkpIDogdmlldygpOworCisgICAgTGF5b3V0UmVjdCBjb250YWluZXJDb250
ZW50UmVjdDsKKyAgICBpZiAoIWVuY2xvc2luZ0NsaXBwaW5nTGF5ZXIgfHwgKGNvbnRhaW5pbmdC
bG9jayAhPSBlbmNsb3NpbmdDbGlwcGluZ0JveCkpCisgICAgICAgIGNvbnRhaW5lckNvbnRlbnRS
ZWN0ID0gY29udGFpbmluZ0Jsb2NrLT5jb250ZW50Qm94UmVjdCgpOworICAgIGVsc2UgeworICAg
ICAgICBjb250YWluZXJDb250ZW50UmVjdCA9IGNvbnRhaW5pbmdCbG9jay0+bGF5b3V0T3ZlcmZs
b3dSZWN0KCk7CisgICAgICAgIExheW91dFBvaW50IGNvbnRhaW5lckxvY2F0aW9uID0gY29udGFp
bmVyQ29udGVudFJlY3QubG9jYXRpb24oKSArIExheW91dFBvaW50KGNvbnRhaW5pbmdCbG9jay0+
Ym9yZGVyTGVmdCgpICsgY29udGFpbmluZ0Jsb2NrLT5wYWRkaW5nTGVmdCgpLAorICAgICAgICAg
ICAgY29udGFpbmluZ0Jsb2NrLT5ib3JkZXJUb3AoKSArIGNvbnRhaW5pbmdCbG9jay0+cGFkZGlu
Z1RvcCgpKTsKKyAgICAgICAgY29udGFpbmVyQ29udGVudFJlY3Quc2V0TG9jYXRpb24oY29udGFp
bmVyTG9jYXRpb24pOworICAgIH0KIAotICAgIExheW91dFJlY3QgY29udGFpbmVyQ29udGVudFJl
Y3QgPSBjb250YWluaW5nQmxvY2stPmNvbnRlbnRCb3hSZWN0KCk7CiAgICAgTGF5b3V0VW5pdCBt
YXhXaWR0aCA9IGNvbnRhaW5pbmdCbG9jay0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCk7CiAKICAg
ICAvLyBTdGlja3kgcG9zaXRpb25lZCBlbGVtZW50IGlnbm9yZSBhbnkgb3ZlcnJpZGUgbG9naWNh
bCB3aWR0aCBvbiB0aGUgY29udGFpbmluZyBibG9jayAoYXMgdGhleSBkb24ndCBjYWxsCkBAIC01
NDAsMjYgKzU1MSwzNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlU3RpY2t5
CiAKICAgICAvLyBDb21wdXRlIHRoZSBjb250YWluZXItcmVsYXRpdmUgYXJlYSB3aXRoaW4gd2hp
Y2ggdGhlIHN0aWNreSBlbGVtZW50IGlzIGFsbG93ZWQgdG8gbW92ZS4KICAgICBjb250YWluZXJD
b250ZW50UmVjdC5jb250cmFjdChtaW5NYXJnaW4pOwotICAgIC8vIE1hcCB0byB0aGUgdmlldyB0
byBhdm9pZCBpbmNsdWRpbmcgcGFnZSBzY2FsZSBmYWN0b3IuCi0gICAgY29uc3RyYWludHMuc2V0
QWJzb2x1dGVDb250YWluaW5nQmxvY2tSZWN0KGNvbnRhaW5pbmdCbG9jay0+bG9jYWxUb0NvbnRh
aW5lclF1YWQoRmxvYXRSZWN0KGNvbnRhaW5lckNvbnRlbnRSZWN0KSwgdmlldygpKS5ib3VuZGlu
Z0JveCgpKTsKIAorICAgIC8vIEZpbmFsbHkgY29tcHV0ZSBjb250YWluZXIgcmVjdCByZWxhdGl2
ZSB0byB0aGUgc2Nyb2xsaW5nIGFuY2VzdG9yLgorICAgIEZsb2F0UmVjdCBjb250YWluZXJSZWN0
UmVsYXRpdmVUb1Njcm9sbGluZ0FuY2VzdG9yID0gY29udGFpbmluZ0Jsb2NrLT5sb2NhbFRvQ29u
dGFpbmVyUXVhZChGbG9hdFJlY3QoY29udGFpbmVyQ29udGVudFJlY3QpLCBlbmNsb3NpbmdDbGlw
cGluZ0JveCkuYm91bmRpbmdCb3goKTsKKyAgICBpZiAoZW5jbG9zaW5nQ2xpcHBpbmdMYXllcikg
eworICAgICAgICBGbG9hdFBvaW50IGNvbnRhaW5lckxvY2F0aW9uUmVsYXRpdmVUb1Njcm9sbGlu
Z0FuY2VzdG9yID0gY29udGFpbmVyUmVjdFJlbGF0aXZlVG9TY3JvbGxpbmdBbmNlc3Rvci5sb2Nh
dGlvbigpIC0KKyAgICAgICAgICAgIEZsb2F0U2l6ZShlbmNsb3NpbmdDbGlwcGluZ0JveC0+Ym9y
ZGVyTGVmdCgpICsgZW5jbG9zaW5nQ2xpcHBpbmdCb3gtPnBhZGRpbmdMZWZ0KCksCisgICAgICAg
ICAgICBlbmNsb3NpbmdDbGlwcGluZ0JveC0+Ym9yZGVyVG9wKCkgKyBlbmNsb3NpbmdDbGlwcGlu
Z0JveC0+cGFkZGluZ1RvcCgpKTsKKyAgICAgICAgaWYgKGVuY2xvc2luZ0NsaXBwaW5nQm94ICE9
IGNvbnRhaW5pbmdCbG9jaykKKyAgICAgICAgICAgIGNvbnRhaW5lckxvY2F0aW9uUmVsYXRpdmVU
b1Njcm9sbGluZ0FuY2VzdG9yICs9IGVuY2xvc2luZ0NsaXBwaW5nTGF5ZXItPnNjcm9sbE9mZnNl
dCgpOworICAgICAgICBjb250YWluZXJSZWN0UmVsYXRpdmVUb1Njcm9sbGluZ0FuY2VzdG9yLnNl
dExvY2F0aW9uKGNvbnRhaW5lckxvY2F0aW9uUmVsYXRpdmVUb1Njcm9sbGluZ0FuY2VzdG9yKTsK
KyAgICB9CisgICAgY29uc3RyYWludHMuc2V0Q29udGFpbmluZ0Jsb2NrUmVjdChjb250YWluZXJS
ZWN0UmVsYXRpdmVUb1Njcm9sbGluZ0FuY2VzdG9yKTsKKworICAgIC8vIE5vdyBjb21wdXRlIHRo
ZSBzdGlja3kgYm94IHJlY3QsIGFsc28gcmVsYXRpdmUgdG8gdGhlIHNjcm9sbGluZyBhbmNlc3Rv
ci4KICAgICBMYXlvdXRSZWN0IHN0aWNreUJveFJlY3QgPSBmcmFtZVJlY3RGb3JTdGlja3lQb3Np
dGlvbmluZygpOwogICAgIExheW91dFJlY3QgZmxpcHBlZFN0aWNreUJveFJlY3QgPSBzdGlja3lC
b3hSZWN0OwogICAgIGNvbnRhaW5pbmdCbG9jay0+ZmxpcEZvcldyaXRpbmdNb2RlKGZsaXBwZWRT
dGlja3lCb3hSZWN0KTsKLSAgICBMYXlvdXRQb2ludCBzdGlja3lMb2NhdGlvbiA9IGZsaXBwZWRT
dGlja3lCb3hSZWN0LmxvY2F0aW9uKCk7CisgICAgRmxvYXRSZWN0IHN0aWNreUJveFJlbGF0aXZl
VG9TY3JvbGxpbmdBbmVjc3RvciA9IGZsaXBwZWRTdGlja3lCb3hSZWN0OwogCi0gICAgLy8gRklY
TUU6IHN1Y2tzIHRvIGNhbGwgbG9jYWxUb0Fic29sdXRlIGFnYWluLCBidXQgd2UgY2FuJ3QganVz
dCBvZmZzZXQgZnJvbSB0aGUgcHJldmlvdXNseSBjb21wdXRlZCByZWN0IGlmIHRoZXJlIGFyZSB0
cmFuc2Zvcm1zLgorICAgIC8vIEZJWE1FOiBzdWNrcyB0byBjYWxsIGxvY2FsVG9Db250YWluZXJR
dWFkIGFnYWluLCBidXQgd2UgY2FuJ3QganVzdCBvZmZzZXQgZnJvbSB0aGUgcHJldmlvdXNseSBj
b21wdXRlZCByZWN0IGlmIHRoZXJlIGFyZSB0cmFuc2Zvcm1zLgogICAgIC8vIE1hcCB0byB0aGUg
dmlldyB0byBhdm9pZCBpbmNsdWRpbmcgcGFnZSBzY2FsZSBmYWN0b3IuCi0gICAgRmxvYXRSZWN0
IGFic0NvbnRhaW5lckZyYW1lID0gY29udGFpbmluZ0Jsb2NrLT5sb2NhbFRvQ29udGFpbmVyUXVh
ZChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBjb250YWluaW5nQmxvY2stPnNpemUoKSksIHZpZXco
KSkuYm91bmRpbmdCb3goKTsKLQotICAgIGlmIChjb250YWluaW5nQmxvY2stPmhhc092ZXJmbG93
Q2xpcCgpKSB7Ci0gICAgICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0ID0gY29udGFpbmluZ0Jsb2Nr
LT5sYXllcigpLT5zY3JvbGxPZmZzZXQoKTsKLSAgICAgICAgc3RpY2t5TG9jYXRpb24gLT0gc2Ny
b2xsT2Zmc2V0OwotICAgIH0KLQotICAgIC8vIFdlIGNhbid0IGNhbGwgbG9jYWxUb0Fic29sdXRl
IG9uIHx0aGlzfCBiZWNhdXNlIHRoYXQgd2lsbCByZWN1ci4gRklYTUU6IEZvciBub3csIGFzc3Vt
ZSB0aGF0IHx0aGlzfCBpcyBub3QgdHJhbnNmb3JtZWQuCi0gICAgRmxvYXRSZWN0IGFic29sdXRl
U3RpY2t5Qm94UmVjdChhYnNDb250YWluZXJGcmFtZS5sb2NhdGlvbigpICsgc3RpY2t5TG9jYXRp
b24sIGZsaXBwZWRTdGlja3lCb3hSZWN0LnNpemUoKSk7Ci0gICAgY29uc3RyYWludHMuc2V0QWJz
b2x1dGVTdGlja3lCb3hSZWN0KGFic29sdXRlU3RpY2t5Qm94UmVjdCk7CisgICAgRmxvYXRQb2lu
dCBzdGlja3lMb2NhdGlvblJlbGF0aXZlVG9TY3JvbGxpbmdBbmNlc3RvciA9IGZsaXBwZWRTdGlj
a3lCb3hSZWN0LmxvY2F0aW9uKCkgKyBjb250YWluaW5nQmxvY2stPmxvY2FsVG9Db250YWluZXJR
dWFkKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGNvbnRhaW5pbmdCbG9jay0+c2l6ZSgpKSwgZW5j
bG9zaW5nQ2xpcHBpbmdCb3gpLmJvdW5kaW5nQm94KCkubG9jYXRpb24oKTsKKyAgICBpZiAoZW5j
bG9zaW5nQ2xpcHBpbmdMYXllcikgeworICAgICAgICBzdGlja3lMb2NhdGlvblJlbGF0aXZlVG9T
Y3JvbGxpbmdBbmNlc3RvciAtPSBGbG9hdFNpemUoZW5jbG9zaW5nQ2xpcHBpbmdCb3gtPmJvcmRl
ckxlZnQoKSArIGVuY2xvc2luZ0NsaXBwaW5nQm94LT5wYWRkaW5nTGVmdCgpLAorICAgICAgICAg
ICAgZW5jbG9zaW5nQ2xpcHBpbmdCb3gtPmJvcmRlclRvcCgpICsgZW5jbG9zaW5nQ2xpcHBpbmdC
b3gtPnBhZGRpbmdUb3AoKSk7CisgICAgICAgIGlmIChlbmNsb3NpbmdDbGlwcGluZ0JveCAhPSBj
b250YWluaW5nQmxvY2spCisgICAgICAgICAgICBzdGlja3lMb2NhdGlvblJlbGF0aXZlVG9TY3Jv
bGxpbmdBbmNlc3RvciArPSBlbmNsb3NpbmdDbGlwcGluZ0xheWVyLT5zY3JvbGxPZmZzZXQoKTsK
KyAgICB9CisgICAgLy8gRklYTUU6IEZvciBub3csIGFzc3VtZSB0aGF0IHx0aGlzfCBpcyBub3Qg
dHJhbnNmb3JtZWQuCisgICAgc3RpY2t5Qm94UmVsYXRpdmVUb1Njcm9sbGluZ0FuZWNzdG9yLnNl
dExvY2F0aW9uKHN0aWNreUxvY2F0aW9uUmVsYXRpdmVUb1Njcm9sbGluZ0FuY2VzdG9yKTsKKyAg
ICBjb25zdHJhaW50cy5zZXRTdGlja3lCb3hSZWN0KHN0aWNreUJveFJlbGF0aXZlVG9TY3JvbGxp
bmdBbmVjc3Rvcik7CiAKICAgICBpZiAoIXN0eWxlKCktPmxlZnQoKS5pc0F1dG8oKSkgewogICAg
ICAgICBjb25zdHJhaW50cy5zZXRMZWZ0T2Zmc2V0KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmxl
ZnQoKSwgY29uc3RyYWluaW5nUmVjdC53aWR0aCgpLCB2aWV3KCkpKTsKQEAgLTU5Miw2ICs2MTQs
OSBAQCBMYXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzdGlja3lQCiAgICAgICAgIFJl
bmRlckJveCogZW5jbG9zaW5nQ2xpcHBpbmdCb3ggPSB0b1JlbmRlckJveChlbmNsb3NpbmdDbGlw
cGluZ0xheWVyLT5yZW5kZXJlcigpKTsKICAgICAgICAgTGF5b3V0UmVjdCBjbGlwUmVjdCA9IGVu
Y2xvc2luZ0NsaXBwaW5nQm94LT5vdmVyZmxvd0NsaXBSZWN0KExheW91dFBvaW50KCksIDApOyAv
LyBGSVhNRTogbWFrZSB0aGlzIHdvcmsgaW4gcmVnaW9ucy4KICAgICAgICAgY29uc3RyYWluaW5n
UmVjdCA9IGVuY2xvc2luZ0NsaXBwaW5nQm94LT5sb2NhbFRvQ29udGFpbmVyUXVhZChGbG9hdFJl
Y3QoY2xpcFJlY3QpLCB2aWV3KCkpLmJvdW5kaW5nQm94KCk7CisKKyAgICAgICAgRmxvYXRQb2lu
dCBzY3JvbGxPZmZzZXQgPSBGbG9hdFBvaW50KCkgKyBlbmNsb3NpbmdDbGlwcGluZ0xheWVyLT5z
Y3JvbGxPZmZzZXQoKTsKKyAgICAgICAgY29uc3RyYWluaW5nUmVjdC5zZXRMb2NhdGlvbihzY3Jv
bGxPZmZzZXQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIExheW91dFJlY3Qgdmlld3BvcnRSZWN0
ID0gdmlldygpLT5mcmFtZVZpZXcoKS0+dmlld3BvcnRDb25zdHJhaW5lZFZpc2libGVDb250ZW50
UmVjdCgpOwogICAgICAgICBmbG9hdCBzY2FsZSA9IDE7Cg==
</data>
<flag name="review"
          id="229042"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>