<?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>15391</bug_id>
          
          <creation_ts>2007-10-06 00:21:31 -0700</creation_ts>
          <short_desc>SVGRenderContainer forces too many kids to relayout</short_desc>
          <delta_ts>2010-07-06 00:28:58 -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>SVG</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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>
          <dependson>41566</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>hyatt</cc>
    
    <cc>jamesr</cc>
    
    <cc>krit</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>57907</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-06 00:21:31 -0700</bug_when>
    <thetext>SVGRenderContainer forces too many kids to relayout

SVGRenderContainer currently forces all kids to relayout whenever it has selfNeedsLayout() true.  This is set to true when the corresponding &lt;g&gt; element had its transform change OR when the nearest viewport changed bounds or a parent had a transform change.

SVGRenderContainer used to try and be smarter using SVGStyledElement::hasRelativeValues(), but when it became clear that changing the transform would also require forcing kids to relayout,  this &quot;trick&quot; no longer worked (since we can&apos;t differentiate currently between a &quot;transform&quot; inspired relayout or a &quot;bounds&quot; inspired relayout.

This bug is requesting that we make SVG renderers layout() methods smarter to avoid these unnecessary layouts of non-relative value elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57908</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-06 00:23:05 -0700</bug_when>
    <thetext>FYI, the &quot;hasRelativeValues()&quot; (broken) optimization was removed as part of fixing bug 15388.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58254</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-10 14:34:39 -0700</bug_when>
    <thetext>Because all renderers cache their absolute bounds, any time your bounds origin, or transform (or a parent&apos;s bounds origin or transform) changes *all* kids need to relayout.

However, any time just bounds size changes (or parents bounds size changes) only relative-sized kids need to relayout.  (The parent who&apos;s bounds size changed will invalidate the proper region for repaint.)

After fixing our localTransform handling to make the renders pull (soon to land), we now know when the local transform has changed, but that information isn&apos;t actually very useful unless we stash it away in the LayoutState so that our container kids can use it to decide what type of layout to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246267</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-07-03 00:56:03 -0700</bug_when>
    <thetext>Finally working on this issue! First results are very promising, saves a lot of unneeded layouts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246652</commentid>
    <comment_count>4</comment_count>
      <attachid>60535</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-07-05 08:04:29 -0700</bug_when>
    <thetext>Created attachment 60535
Initial patch

Not marked for review yet, missing a changelog so far.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246675</commentid>
    <comment_count>5</comment_count>
      <attachid>60547</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-07-05 09:07:16 -0700</bug_when>
    <thetext>Created attachment 60547
Updated patch

This time including a ChangeLog, have fun! :-) Be sure to try Lively Kernel / animation examples once this lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246682</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-07-05 09:29:59 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=60547) [details]
&gt; Updated patch
&gt; 
&gt; This time including a ChangeLog, have fun! :-) Be sure to try Lively Kernel / animation examples once this lands.

Great Patch Niko. Just a question about the LayoutTest. What causes the change? SVGRoot becomes 15px bigger, but I don&apos;t see the reason?!?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246862</commentid>
    <comment_count>7</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-07-05 22:44:07 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Created an attachment (id=60547) [details] [details]
&gt; &gt; Updated patch
&gt; &gt; 
&gt; &gt; This time including a ChangeLog, have fun! :-) Be sure to try Lively Kernel / animation examples once this lands.
&gt; 
&gt; Great Patch Niko. Just a question about the LayoutTest. What causes the change? SVGRoot becomes 15px bigger, but I don&apos;t see the reason?!?

I don&apos;t know why it had the wrong size before. If you look at the enclosing box, the new width is the right one. Not sure why it was wrong before - must be related to some premature optimizations, that calcViewport() was not called, when selfNeedsLayout was false (when not using relative lengths). Something like that, anyhow it&apos;s a progression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246900</commentid>
    <comment_count>8</comment_count>
      <attachid>60547</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-07-06 00:11:03 -0700</bug_when>
    <thetext>Comment on attachment 60547
Updated patch

Great patch! We discussed the failing test on IRC. Please add the explaination to the changelog as well. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246916</commentid>
    <comment_count>9</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-07-06 00:28:58 -0700</bug_when>
    <thetext>Landed in r62531.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60535</attachid>
            <date>2010-07-05 08:04:29 -0700</date>
            <delta_ts>2010-07-05 09:07:16 -0700</delta_ts>
            <desc>Initial patch</desc>
            <filename>NextPatch.diff</filename>
            <type>text/plain</type>
            <size>13631</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCShyZXZpc2lvbiA2MjQ4OCkKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsMTMgKzEw
MCw3IEBAIHZvaWQgUmVuZGVyUGF0aDo6bGF5b3V0KCkKICAgICBMYXlvdXRSZXBhaW50ZXIgcmVw
YWludGVyKCp0aGlzLCBjaGVja0ZvclJlcGFpbnREdXJpbmdMYXlvdXQoKSAmJiBzZWxmTmVlZHNM
YXlvdXQoKSk7CiAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqIGVsZW1lbnQgPSBz
dGF0aWNfY2FzdDxTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCo+KG5vZGUoKSk7CiAKLSAg
ICAvLyBXZSBuZWVkIHRvIHVwZGF0ZSB0aGUgUGF0aCBvYmplY3Qgd2hlbmV2ZXIgdGhlIHVuZGVy
bHlpbmcgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQgdXNlcyByZWxhdGl2ZSB2YWx1ZXMK
LSAgICAvLyBhcyB0aGUgdmlld3BvcnQgc2l6ZSBtYXkgaGF2ZSBjaGFuZ2VkLiBJdCB3b3VsZCBi
ZSBuaWNlIHRvIG9wdGltaXplIHRoaXMgdG8gZGV0ZWN0IHRoZXNlIGNoYW5nZXMsIGFuZCBvbmx5
Ci0gICAgLy8gdXBkYXRlIHdoZW4gbmVlZGVkLCBldmVuIHdoZW4gdXNpbmcgcmVsYXRpdmUgdmFs
dWVzLgogICAgIGJvb2wgbmVlZHNQYXRoVXBkYXRlID0gbV9uZWVkc1BhdGhVcGRhdGU7Ci0gICAg
aWYgKCFuZWVkc1BhdGhVcGRhdGUgJiYgZWxlbWVudC0+aGFzUmVsYXRpdmVMZW5ndGhzKCkpCi0g
ICAgICAgIG5lZWRzUGF0aFVwZGF0ZSA9IHRydWU7Ci0KICAgICBpZiAobmVlZHNQYXRoVXBkYXRl
KSB7CiAgICAgICAgIG1fcGF0aCA9IGVsZW1lbnQtPnRvUGF0aERhdGEoKTsKICAgICAgICAgbV9u
ZWVkc1BhdGhVcGRhdGUgPSBmYWxzZTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R0NvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZH
Q29udGFpbmVyLmNwcAkocmV2aXNpb24gNjI0ODQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwyOSArNDAsMjQgQEAgUmVu
ZGVyU1ZHQ29udGFpbmVyOjpSZW5kZXJTVkdDb250YWluZXIoUwogewogfQogCi1ib29sIFJlbmRl
clNWR0NvbnRhaW5lcjo6ZHJhd3NDb250ZW50cygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZHJh
d3NDb250ZW50czsKLX0KLQotdm9pZCBSZW5kZXJTVkdDb250YWluZXI6OnNldERyYXdzQ29udGVu
dHMoYm9vbCBkcmF3c0NvbnRlbnRzKQotewotICAgIG1fZHJhd3NDb250ZW50cyA9IGRyYXdzQ29u
dGVudHM7Ci19Ci0KIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpsYXlvdXQoKQogewogICAgIEFT
U0VSVChuZWVkc0xheW91dCgpKTsKLSAgICBBU1NFUlQoIXZpZXcoKS0+bGF5b3V0U3RhdGVFbmFi
bGVkKCkpOyAvLyBSZW5kZXJTVkdSb290IGRpc2FibGVzIGxheW91dFN0YXRlIGZvciB0aGUgU1ZH
IHJlbmRlcmluZyB0cmVlLgogCi0gICAgY2FsY1ZpZXdwb3J0KCk7IC8vIEFsbG93IFJlbmRlclNW
R1ZpZXdwb3J0Q29udGFpbmVyIHRvIHVwZGF0ZSBpdHMgdmlld3BvcnQKKyAgICAvLyBSZW5kZXJT
VkdSb290IGRpc2FibGVzIGxheW91dFN0YXRlIGZvciB0aGUgU1ZHIHJlbmRlcmluZyB0cmVlLgor
ICAgIEFTU0VSVCghdmlldygpLT5sYXlvdXRTdGF0ZUVuYWJsZWQoKSk7CisKKyAgICAvLyBBbGxv
dyBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciB0byB1cGRhdGUgaXRzIHZpZXdwb3J0LgorICAg
IGNhbGNWaWV3cG9ydCgpOwogCiAgICAgTGF5b3V0UmVwYWludGVyIHJlcGFpbnRlcigqdGhpcywg
Y2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkgfHwgc2VsZldpbGxQYWludCgpKTsKLSAgICBj
YWxjdWxhdGVMb2NhbFRyYW5zZm9ybSgpOyAvLyBBbGxvdyBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxl
Q29udGFpbmVyIHRvIHVwZGF0ZSBpdHMgdHJhbnNmb3JtCisKKyAgICAvLyBBbGxvdyBSZW5kZXJT
VkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyIHRvIHVwZGF0ZSBpdHMgdHJhbnNmb3JtLgorICAgIGNh
bGN1bGF0ZUxvY2FsVHJhbnNmb3JtKCk7CiAKICAgICBTVkdSZW5kZXJTdXBwb3J0OjpsYXlvdXRD
aGlsZHJlbih0aGlzLCBzZWxmTmVlZHNMYXlvdXQoKSk7Ci0gICAgcmVwYWludGVyLnJlcGFpbnRB
ZnRlckxheW91dCgpOwogCisgICAgcmVwYWludGVyLnJlcGFpbnRBZnRlckxheW91dCgpOwogICAg
IHNldE5lZWRzTGF5b3V0KGZhbHNlKTsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHQ29udGFpbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U1ZHQ29udGFpbmVyLmgJKHJldmlzaW9uIDYyNDg0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDggQEAgcHVibGlj
OgogICAgIFJlbmRlck9iamVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSB7IHJldHVybiAmbV9jaGls
ZHJlbjsgfQogCiAgICAgLy8gPG1hcmtlcj4gdXNlcyB0aGVzZSBtZXRob2RzIHRvIG9ubHkgYWxs
b3cgZHJhd2luZyBjaGlsZHJlbiBkdXJpbmcgYSBzcGVjaWFsIG1hcmtlciBkcmF3IHRpbWUKLSAg
ICB2b2lkIHNldERyYXdzQ29udGVudHMoYm9vbCk7Ci0gICAgYm9vbCBkcmF3c0NvbnRlbnRzKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXREcmF3c0NvbnRlbnRzKGJvb2wgZHJhd3NDb250ZW50cykgeyBt
X2RyYXdzQ29udGVudHMgPSBkcmF3c0NvbnRlbnRzOyB9CisgICAgYm9vbCBkcmF3c0NvbnRlbnRz
KCkgY29uc3QgeyByZXR1cm4gbV9kcmF3c0NvbnRlbnRzOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoUGFpbnRJbmZvJiwgaW50IHBhcmVudFgsIGludCBwYXJlbnRZKTsKIApAQCAtOTcsNSAr
OTcsMyBAQCB2b2lkIHRvUmVuZGVyU1ZHQ29udGFpbmVyKGNvbnN0IFJlbmRlclNWCiAKICNlbmRp
ZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmIC8vIFJlbmRlclNWR0NvbnRhaW5lcl9oCi0KLS8vIHZp
bTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwCShyZXZpc2lv
biA2MjQ4OCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyU1ZH
Um9vdDo6UmVuZGVyU1ZHUm9vdChTVkdTdHlsZWRFbGVtZW50KiBub2RlKQogICAgIDogUmVuZGVy
Qm94KG5vZGUpCisgICAgLCBtX2lzTGF5b3V0U2l6ZUNoYW5nZWQoZmFsc2UpCiB7CiAgICAgc2V0
UmVwbGFjZWQodHJ1ZSk7CiB9CkBAIC0xMTMsMTMgKzExNCwxNCBAQCB2b2lkIFJlbmRlclNWR1Jv
b3Q6OmxheW91dCgpCiAgICAgSW50U2l6ZSBvbGRTaXplKHdpZHRoKCksIGhlaWdodCgpKTsKICAg
ICBjYWxjV2lkdGgoKTsKICAgICBjYWxjSGVpZ2h0KCk7Ci0KICAgICBjYWxjVmlld3BvcnQoKTsK
IAotICAgIC8vIFJlbmRlclNWR1Jvb3QgbmVlZHMgdG8gdGFrZSBzcGVjaWFsIGNhcmUgdG8gcHJv
cGFnYXRlIHdpbmRvdyBzaXplIGNoYW5nZXMgdG8gdGhlIGNoaWxkcmVuLAotICAgIC8vIGlmIHRo
ZSBvdXRlcm1vc3QgPHN2Zz4gaXMgdXNpbmcgcmVsYXRpdmUgeC95L3dpZHRoL2hlaWdodCB2YWx1
ZXMuIEhlbmNlIHRoZSBhZGRpdG9uYWwgcGFyYW1ldGVycy4KICAgICBTVkdTVkdFbGVtZW50KiBz
dmcgPSBzdGF0aWNfY2FzdDxTVkdTVkdFbGVtZW50Kj4obm9kZSgpKTsKLSAgICBTVkdSZW5kZXJT
dXBwb3J0OjpsYXlvdXRDaGlsZHJlbih0aGlzLCBuZWVkc0xheW91dCB8fCAoc3ZnLT5oYXNSZWxh
dGl2ZUxlbmd0aHMoKSAmJiBvbGRTaXplICE9IHNpemUoKSkpOworICAgIG1faXNMYXlvdXRTaXpl
Q2hhbmdlZCA9IHN2Zy0+aGFzUmVsYXRpdmVMZW5ndGhzKCkgJiYgb2xkU2l6ZSAhPSBzaXplKCk7
CisKKyAgICBTVkdSZW5kZXJTdXBwb3J0OjpsYXlvdXRDaGlsZHJlbih0aGlzLCBuZWVkc0xheW91
dCk7CisgICAgbV9pc0xheW91dFNpemVDaGFuZ2VkID0gZmFsc2U7CisKICAgICByZXBhaW50ZXIu
cmVwYWludEFmdGVyTGF5b3V0KCk7CiAKICAgICB2aWV3KCktPmVuYWJsZUxheW91dFN0YXRlKCk7
CkBAIC0xOTcsOSArMTk5LDYgQEAgdm9pZCBSZW5kZXJTVkdSb290OjpjYWxjVmlld3BvcnQoKQog
ewogICAgIFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRpY19jYXN0PFNWR1NWR0VsZW1lbnQqPihu
b2RlKCkpOwogCi0gICAgaWYgKCFzZWxmTmVlZHNMYXlvdXQoKSAmJiAhc3ZnLT5oYXNSZWxhdGl2
ZUxlbmd0aHMoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKCFzdmctPmhhc1NldENvbnRh
aW5lclNpemUoKSkgewogICAgICAgICAvLyBJbiB0aGUgbm9ybWFsIGNhc2Ugb2YgPHN2Zz4gYmVp
bmcgc3RhbmQtYWxvbmUgb3IgaW4gYSBDU1NCb3hNb2RlbCBvYmplY3Qgd2UgdXNlCiAgICAgICAg
IC8vIFJlbmRlckJveDo6d2lkdGgoKS9oZWlnaHQoKSAod2hpY2ggcHVsbHMgZGF0YSBmcm9tIFJl
bmRlclN0eWxlKQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuaAkocmV2aXNpb24gNjI0
ODQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSb290LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDYgKzQwLDggQEAgcHVibGljOgogICAgIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlz
dCogY2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQogICAgIFJlbmRlck9i
amVjdENoaWxkTGlzdCogY2hpbGRyZW4oKSB7IHJldHVybiAmbV9jaGlsZHJlbjsgfQogCisgICAg
Ym9vbCBpc0xheW91dFNpemVDaGFuZ2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xheW91dFNpemVD
aGFuZ2VkOyB9CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3RDaGlsZExpc3Qq
IHZpcnR1YWxDaGlsZHJlbigpIHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KICAgICB2aXJ0dWFsIGNv
bnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogdmlydHVhbENoaWxkcmVuKCkgY29uc3QgeyByZXR1
cm4gY2hpbGRyZW4oKTsgfQpAQCAtODQsNiArODYsNyBAQCBwcml2YXRlOgogICAgIFJlbmRlck9i
amVjdENoaWxkTGlzdCBtX2NoaWxkcmVuOwogICAgIEZsb2F0U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsK
ICAgICBtdXRhYmxlIEFmZmluZVRyYW5zZm9ybSBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm07Cisg
ICAgYm9vbCBtX2lzTGF5b3V0U2l6ZUNoYW5nZWQgOiAxOwogfTsKIAogaW5saW5lIFJlbmRlclNW
R1Jvb3QqIHRvUmVuZGVyU1ZHUm9vdChSZW5kZXJPYmplY3QqIG9iamVjdCkKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAJKHJldmlz
aW9uIDYyNDg4KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWlu
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxOCArNDUsMTMgQEAgdm9pZCBSZW5kZXJTVkdW
aWV3cG9ydENvbnRhaW5lcjo6YXBwbHlWaQogCiB2b2lkIFJlbmRlclNWR1ZpZXdwb3J0Q29udGFp
bmVyOjpjYWxjVmlld3BvcnQoKQogewotICAgIFNWR0VsZW1lbnQqIHN2Z2VsZW0gPSBzdGF0aWNf
Y2FzdDxTVkdFbGVtZW50Kj4obm9kZSgpKTsKLSAgICBpZiAoc3ZnZWxlbS0+aGFzVGFnTmFtZShT
VkdOYW1lczo6c3ZnVGFnKSkgewotICAgICAgICBTVkdTVkdFbGVtZW50KiBzdmcgPSBzdGF0aWNf
Y2FzdDxTVkdTVkdFbGVtZW50Kj4obm9kZSgpKTsKLQotICAgICAgICBpZiAoIXNlbGZOZWVkc0xh
eW91dCgpICYmICFzdmctPmhhc1JlbGF0aXZlTGVuZ3RocygpKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIGZsb2F0IHggPSBzdmctPngoKS52YWx1ZShzdmcpOwotICAgICAgICBmbG9h
dCB5ID0gc3ZnLT55KCkudmFsdWUoc3ZnKTsKLSAgICAgICAgZmxvYXQgdyA9IHN2Zy0+d2lkdGgo
KS52YWx1ZShzdmcpOwotICAgICAgICBmbG9hdCBoID0gc3ZnLT5oZWlnaHQoKS52YWx1ZShzdmcp
OwotICAgICAgICBtX3ZpZXdwb3J0ID0gRmxvYXRSZWN0KHgsIHksIHcsIGgpOworICAgICBTVkdF
bGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KG5vZGUoKSk7CisgICAg
IGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzdmdUYWcpKSB7CisgICAgICAgICBT
VkdTVkdFbGVtZW50KiBzdmcgPSBzdGF0aWNfY2FzdDxTVkdTVkdFbGVtZW50Kj4oZWxlbWVudCk7
CisgICAgICAgICBtX3ZpZXdwb3J0ID0gRmxvYXRSZWN0KHN2Zy0+eCgpLnZhbHVlKHN2ZykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBzdmctPnkoKS52YWx1ZShzdmcpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgc3ZnLT53aWR0aCgpLnZhbHVlKHN2ZykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBzdmctPmhlaWdodCgpLnZhbHVlKHN2Zykp
OwogICAgIH0KIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJ
KHJldmlzaW9uIDYyNDg4KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEyICszMiwxNCBAQAogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5
ZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJQYXRoLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFp
bmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW5kZXJT
VkdSZXNvdXJjZUNsaXBwZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5o
IgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlTWFya2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHUmVzb3VyY2VNYXNrZXIuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdSb290LmgiCiAjaW5jbHVk
ZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybVN0YXRlLmgiCiAjaW5j
bHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC0yMzAsMjUgKzIzMiw0MiBAQCBGbG9hdFJlY3Qg
U1ZHUmVuZGVyU3VwcG9ydDo6Y29tcHV0ZUNvbnRhCiAgICAgcmV0dXJuIGJvdW5kaW5nQm94Owog
fQogCitzdGF0aWMgaW5saW5lIFJlbmRlclNWR1Jvb3QqIHN2Z1Jvb3RUcmVlT2JqZWN0KFJlbmRl
ck9iamVjdCogc3RhcnQpCit7CisgICAgd2hpbGUgKHN0YXJ0ICYmICFzdGFydC0+aXNTVkdSb290
KCkpCisgICAgICAgIHN0YXJ0ID0gc3RhcnQtPnBhcmVudCgpOworCisgICAgQVNTRVJUKHN0YXJ0
KTsKKyAgICBBU1NFUlQoc3RhcnQtPmlzU1ZHUm9vdCgpKTsKKyAgICByZXR1cm4gdG9SZW5kZXJT
VkdSb290KHN0YXJ0KTsKK30KKwogdm9pZCBTVkdSZW5kZXJTdXBwb3J0OjpsYXlvdXRDaGlsZHJl
bihSZW5kZXJPYmplY3QqIHN0YXJ0LCBib29sIHNlbGZOZWVkc0xheW91dCkKIHsKKyAgICBib29s
IGxheW91dFNpemVDaGFuZ2VkID0gc3ZnUm9vdFRyZWVPYmplY3Qoc3RhcnQpLT5pc0xheW91dFNp
emVDaGFuZ2VkKCk7CisKICAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBzdGFydC0+Zmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAg
ICAvLyBPbmx5IGZvcmNlIG91ciBraWRzIHRvIGxheW91dCBpZiB3ZSdyZSBiZWluZyBhc2tlZCB0
byByZWxheW91dCBhcyBhIHJlc3VsdCBvZiBhIHBhcmVudCBjaGFuZ2luZwotICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gc2tpcCByZWxheW91dCBvZiBub24tcmVsYXRpdmUg
a2lkcyB3aGVuIG9ubHkgYm91bmRzIHNpemUgaGFzIGNoYW5nZWQKLSAgICAgICAgLy8gdGhhdCdz
IGEgcG9zc2libGUgZnV0dXJlIG9wdGltaXphdGlvbiB1c2luZyBMYXlvdXRTdGF0ZQotICAgICAg
ICAvLyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM5MQogICAgICAg
ICBib29sIG5lZWRzTGF5b3V0ID0gc2VsZk5lZWRzTGF5b3V0OwotICAgICAgICBpZiAoIW5lZWRz
TGF5b3V0KSB7CisKKyAgICAgICAgaWYgKGxheW91dFNpemVDaGFuZ2VkKSB7CisgICAgICAgICAg
ICAvLyBXaGVuIHNlbGZOZWVkc0xheW91dCBpcyBmYWxzZSBhbmQgdGhlIGxheW91dCBzaXplIGNo
YW5nZWQsIHdlIGhhdmUgdG8gY2hlY2sgd2hldGhlciB0aGlzIGNoaWxkIHVzZXMgcmVsYXRpdmUg
bGVuZ3RocwogICAgICAgICAgICAgaWYgKFNWR0VsZW1lbnQqIGVsZW1lbnQgPSBjaGlsZC0+bm9k
ZSgpLT5pc1NWR0VsZW1lbnQoKSA/IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihjaGlsZC0+bm9k
ZSgpKSA6IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC0+aXNTdHlsZWQoKSkKLSAg
ICAgICAgICAgICAgICAgICAgbmVlZHNMYXlvdXQgPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVt
ZW50Kj4oZWxlbWVudCktPmhhc1JlbGF0aXZlTGVuZ3RocygpOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50LT5pc1N0eWxlZCgpICYmIHN0YXRpY19jYXN0PFNWR1N0eWxlZEVsZW1lbnQqPihl
bGVtZW50KS0+aGFzUmVsYXRpdmVMZW5ndGhzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
V2hlbiB0aGUgbGF5b3V0IHNpemUgY2hhbmdlZCBhbmQgd2hlbiB1c2luZyByZWxhdGl2ZSB2YWx1
ZXMgdGVsbCB0aGUgUmVuZGVyUGF0aCB0byB1cGRhdGUgaXRzIFBhdGggb2JqZWN0CisgICAgICAg
ICAgICAgICAgICAgIGlmIChjaGlsZC0+aXNSZW5kZXJQYXRoKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICB0b1JlbmRlclBhdGgoY2hpbGQpLT5zZXROZWVkc1BhdGhVcGRhdGUoKTsKKworICAg
ICAgICAgICAgICAgICAgICBuZWVkc0xheW91dCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5lZWRzTGF5b3V0KQorICAg
ICAgICBpZiAobmVlZHNMYXlvdXQpIHsKICAgICAgICAgICAgIGNoaWxkLT5zZXROZWVkc0xheW91
dCh0cnVlLCBmYWxzZSk7CisgICAgICAgICAgICBjaGlsZC0+bGF5b3V0KCk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgY2hpbGQtPmxheW91dElmTmVlZGVkKCk7CiAKLSAgICAgICAgY2hp
bGQtPmxheW91dElmTmVlZGVkKCk7CiAgICAgICAgIEFTU0VSVCghY2hpbGQtPm5lZWRzTGF5b3V0
KCkpOwogICAgIH0KIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2
MjQ4OCkKKysrIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNjYsMTAgKzM2Niw0MyBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHU3R5bGVkRWxlbWVudDo6
bG9jYWxDCiAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9ybSgpOwogfQogCi12b2lkIFNWR1N0eWxl
ZEVsZW1lbnQ6OnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKGJvb2wsIFNWR1N0eWxl
ZEVsZW1lbnQqKQordm9pZCBTVkdTdHlsZWRFbGVtZW50Ojp1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJ
bmZvcm1hdGlvbihib29sIGhhc1JlbGF0aXZlTGVuZ3RocywgU1ZHU3R5bGVkRWxlbWVudCogZWxl
bWVudCkKIHsKLSAgICAvLyBGSVhNRTogVGhlIGFjdHVhbCBjb2RlIHdpbGwgbGFuZCBpbiBhIGZv
bGxvdy11cCBwYXRjaC4KLSAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQxNTY2CisgICAgLy8gSWYgd2UncmUgbm90IHlldCBpbiBhIGRvY3VtZW50LCB0
aGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFnYWluIGZyb20gaW5zZXJ0ZWRJbnRvRG9jdW1l
bnQoKS4gRG8gbm90aGluZyBub3cuCisgICAgaWYgKCFpbkRvY3VtZW50KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIEFuIGVsZW1lbnQgd2FudHMgdG8gbm90aWZ5IHVzIHRoYXQgaXRzIG93
biByZWxhdGl2ZSBsZW5ndGhzIHN0YXRlIGNoYW5nZWQuCisgICAgLy8gUmVnaXN0ZXIgaXQgaW4g
dGhlIHJlbGF0aXZlIGxlbmd0aCBtYXAsIGFuZCByZWdpc3RlciB1cyBpbiB0aGUgcGFyZW50IHJl
bGF0aXZlIGxlbmd0aCBtYXAuCisgICAgLy8gUmVnaXN0ZXIgdGhlIHBhcmVudCBpbiB0aGUgZ3Jh
bmRwYXJlbnRzIG1hcCwgZXRjLiBSZXBlYXQgcHJvY2VkdXJlIHVudGlsIHRoZSByb290IG9mIHRo
ZSBTVkcgdHJlZS4KKworICAgIGlmIChoYXNSZWxhdGl2ZUxlbmd0aHMpCisgICAgICAgIG1fZWxl
bWVudHNXaXRoUmVsYXRpdmVMZW5ndGhzLmFkZChlbGVtZW50KTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgaWYgKCFtX2VsZW1lbnRzV2l0aFJlbGF0aXZlTGVuZ3Rocy5jb250YWlucyhlbGVtZW50KSkg
eworICAgICAgICAgICAgLy8gV2Ugd2VyZSBuZXZlciByZWdpc3RlcmVkLiBEbyBub3RoaW5nLgor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbV9lbGVtZW50c1dpdGhS
ZWxhdGl2ZUxlbmd0aHMucmVtb3ZlKGVsZW1lbnQpOworICAgIH0KKworICAgIC8vIEZpbmQgZmly
c3Qgc3R5bGVkIHBhcmVudCBub2RlLCBhbmQgbm90aWZ5IGl0IHRoYXQgd2UndmUgY2hhbmdlZCBv
dXIgcmVsYXRpdmUgbGVuZ3RoIHN0YXRlLgorICAgIE5vZGUqIG5vZGUgPSBwYXJlbnQoKTsKKyAg
ICB3aGlsZSAobm9kZSkgeworICAgICAgICBpZiAoIW5vZGUtPmlzU1ZHRWxlbWVudCgpKQorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgU1ZHRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19j
YXN0PFNWR0VsZW1lbnQqPihub2RlKTsKKyAgICAgICAgaWYgKCFlbGVtZW50LT5pc1N0eWxlZCgp
KSB7CisgICAgICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50KCk7CisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlZ2lzdGVyIHVzIGluIHRoZSBwYXJlbnQg
ZWxlbWVudCBtYXAuCisgICAgICAgIHN0YXRpY19jYXN0PFNWR1N0eWxlZEVsZW1lbnQqPihlbGVt
ZW50KS0+dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oaGFzUmVsYXRpdmVMZW5ndGhz
LCB0aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdTdHlsZWRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3R5bGVk
RWxlbWVudC5oCShyZXZpc2lvbiA2MjQ4OCkKKysrIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgdmlydHVhbCBTdHJpbmcgdGl0bGUoKSBjb25zdDsKIAotICAgICAgICAvLyBG
SVhNRTogVGhlIGFjdHVhbCBjb2RlIHdpbGwgbGFuZCBpbiBhIGZvbGxvdy11cCBwYXRjaC4KLSAg
ICAgICAgYm9vbCBoYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCB7IHJldHVybiBzZWxmSGFzUmVs
YXRpdmVMZW5ndGhzKCk7IH0KKyAgICAgICAgYm9vbCBoYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25z
dCB7IHJldHVybiAhbV9lbGVtZW50c1dpdGhSZWxhdGl2ZUxlbmd0aHMuaXNFbXB0eSgpOyB9CiAK
ICAgICAgICAgdmlydHVhbCBib29sIGlzU3R5bGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNYXJrZXJzKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KQEAgLTgxLDYgKzgwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICBwcml2YXRlOgorICAgICAgICBIYXNoU2V0PFNWR1N0eWxlZEVsZW1lbnQqPiBtX2Vs
ZW1lbnRzV2l0aFJlbGF0aXZlTGVuZ3RoczsKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUWShTVkdTdHlsZWRFbGVtZW50LCBIVE1MTmFtZXM6OmNsYXNzQXR0ciwgU3RyaW5nLCBDbGFz
c05hbWUsIGNsYXNzTmFtZSkKICAgICB9OwogCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvc3ZnL2hpeGllL2Vycm9yLzAxMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9oaXhpZS9lcnJvci8wMTMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA2MjQ4NCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvaGl4aWUvZXJyb3Iv
MDEzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAgbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4MTAwCiAgIFJlbmRlckJsb2NrIHtodG1sfSBhdCAoMCwwKSBzaXplIDgw
MHgxMDAKICAgICBSZW5kZXJCb2R5IHtib2R5fSBhdCAoOCw4KSBzaXplIDc4NHg3NgogICAgICAg
UmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMCkgc2l6ZSA3ODR4MjQKLSAgICAgICAgUmVu
ZGVyU1ZHUm9vdCB7c3ZnfSBhdCAoOCw4KSBzaXplIDc2OXgyMAorICAgICAgICBSZW5kZXJTVkdS
b290IHtzdmd9IGF0ICg4LDgpIHNpemUgNzg0eDIwCiAgICAgICAgICAgUmVuZGVyU1ZHVGV4dCB7
dGV4dH0gYXQgKDEwLDIwKSBzaXplIDEyNXgxMyBjb250YWlucyAxIGNodW5rKHMpCiAgICAgICAg
ICAgICBSZW5kZXJTVkdJbmxpbmVUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMjV4MTMKICAg
ICAgICAgICAgICAgY2h1bmsgMSB0ZXh0IHJ1biAxIGF0ICgxMC4wMCwzMC4wMCkgc3RhcnRPZmZz
ZXQgMCBlbmRPZmZzZXQgMzAgd2lkdGggMTI1LjAwOiAiRkFJTCAoVGhpcyBzaG91bGQgbm90IHJl
bmRlci4pIgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60547</attachid>
            <date>2010-07-05 09:07:16 -0700</date>
            <delta_ts>2010-07-06 00:11:03 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>NextPatch.diff</filename>
            <type>text/plain</type>
            <size>17526</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjQ5MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMTAtMDctMDUgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU1ZHUmVuZGVyQ29udGFpbmVyIGZvcmNlcyB0b28gbWFueSBraWRzIHRvIHJlbGF5b3V0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM5MQor
CisgICAgICAgIEZpeGluZyBhIGxvbmctc3RhbmRpbmcgcGVyZm9ybWFuY2UgaXNzdWUuIFdlIHNo
b3VsZCBvbmx5IGV2ZXIgbmVlZCB0byByZWxheW91dCBjb250YWluZXIgY2hpbGRyZW4gd2hlbiB0
aGUgcGFyZW50IGJvdW5kcyBjaGFuZ2UuCisgICAgICAgIFRoZSBib3VuZHMgb2YgYSBjb250YWlu
ZXIgY2FuIG9ubHkgY2hhbmdlLCBpZiB0aGUgb3V0ZXJtb3N0IFJlbmRlclNWR1Jvb3QgY29udGFp
bmVyIHVzZXMgcmVsYXRpdmUgbGVuZ3RoIHZhbHVlcyBhbmQgaXRzIHNpemUgY2hhbmdlcy4KKyAg
ICAgICAgVGhpcyBjYW4gZWl0aGVyIGhhcHBlbiB3aGVuIHRoZSB3aW5kb3cgcmVzaXplcyBmb3Ig
c3RhbmRhbG9uZSBTVkcgZG9jdW1lbnRzLCBvciBpZiBhbiBlbmNsb3NpbmcgUmVuZGVyQm94IGNo
YW5nZXMgd2lkdGgvaGVpZ2h0IHZhbHVlcy4KKworICAgICAgICBPbmx5IHJlbGF5b3V0IGNvbnRh
aW5lciBjaGlsZHJlbiBpZiB0aGUgY29udGFpbmVyIGhhcyBzZWxmTmVlZHNMYXlvdXQoKSB0cnVl
LCBvciBpZiB0aGUgcGFyZW50IGJvdW5kcyBjaGFuZ2UuCisgICAgICAgIExpdmVseSBLZXJuZWwg
ZG9lc24ndCBkbyBhbnkgcmVsYXlvdXRzIGFueW1vcmUsIGV4Y2VwdCBpZiB5b3UgY2hhbmdlIHRo
ZSBTYWZhcmkgd2luZG93IHNpemUsIHRoaXMgaXMgYSBncmVhdCBwcm9ncmVzc2lvbi4KKworICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clBhdGg6OmxheW91dCk6IE5vIG5lZWQgdG8gc3BlY2lhbCBjYXNlIFBhdGggdXBkYXRlcywgaWYg
dGhlIGVsZW1lbnQgdXNlcyByZWxhdGl2ZSBsZW5ndGhzLiBTVkdSZW5kZXJTdXBwb3J0IG5vdyBo
YW5kbGVzIHRoaXMgY2FzZS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0KTogRml4
IHNvbWUgc3R5bGUgaXNzdWVzLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdDb250YWlu
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6c2V0RHJhd3NDb250
ZW50cyk6IElubGluZWQgZm9yIHNwZWVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29u
dGFpbmVyOjpkcmF3c0NvbnRlbnRzKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6UmVuZGVyU1ZH
Um9vdCk6IEluaXRpYWxpemUgbV9pc0xheW91dFNpemVDaGFuZ2VkIHRvIGZhbHNlLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6bGF5b3V0KTogU2V0IG1faXNMYXlvdXRTaXplQ2hh
bmdlZD10cnVlIHdoZW4gdGhlIFJlbmRlclNWR1Jvb3Qgc2l6ZSBjaGFuZ2VzIGR1cmluZyBsYXlv
dXQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290OjpjYWxjVmlld3BvcnQpOiBSZW1v
dmUgaGFzUmVsYXRpdmVMZW5ndGhzKCkgc3BlY2lhbCBjYXNlLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJTVkdSb290Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290Ojppc0xh
eW91dFNpemVDaGFuZ2VkKTogTmV3IGZ1bmN0aW9uLCB3aGljaCByZXR1cm5zIHRydWUgZHVyaW5n
IGxheW91dCgpIGlmIHRoZSBvdXRlcm1vc3QgPHN2Zz4gc2l6ZSBjaGFuZ2VzLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6Y2FsY1ZpZXdwb3J0KTogQ2xlYW51cCBj
b2RlLCBhbmQgcmVtb3ZlIG9ic29sZXRlIGhhc1JlbGF0aXZlTGVuZ3RocygpIHNwZWNpYWwgY2Fz
ZS4KKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzdmdSb290VHJlZU9iamVjdCk6IEFkZGVkIGhlbHBlciBmdW5jdGlvbiwgdGhhdCBy
ZXR1cm5zIHRoZSBSZW5kZXJTVkdSb290IGZvciBhIGdpdmVuIFJlbmRlck9iamVjdC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6OmxheW91dENoaWxkcmVuKTogUmVtb3ZlIEZJ
WE1FLCBvbmx5IHJlbGF5b3V0IGNvbnRhaW5lciBjaGlsZHJlbiwgaWYgdGhlIHBhcmVudCBib3Vu
ZHMgY2hhbmdlIGFuZCB0aGUgY2hpbGQgdXNlcyByZWxhdGl2ZSBsZW5ndGhzLgorICAgICAgICAq
IHN2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVs
ZW1lbnQ6OnVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKTogSW1wbGVtZW50ZWQgdGhp
cyBmdW5jdGlvbi4gS2VlcHMgdHJhY2sgb2YgcmVsYXRpdmUgbGVuZ3RocyBlbGVtZW50cywgc28g
dGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGFzUmVsYXRpdmVMZW5ndGhzKCkgaW5mb3JtYXRpb24g
aXMgYWx3YXlzIHVwMmRhdGUuCisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6Omhhc1JlbGF0aXZlTGVuZ3Rocyk6IERv
bid0IGNhbGwgdGhlIHZpcnR1YWwgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGluZm9ybWF0aW9u
LCBqdXN0IHJldHVybiB3aGV0ZXIgbV9lbGVtZW50c1dpdGhSZWxhdGl2ZUxlbmd0aHMgaXMgbm90
IGVtcHR5LgorCiAyMDEwLTA3LTA1ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJQYXRoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJQYXRoLmNwcAkocmV2aXNpb24gNjI0ODgpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJQYXRoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDEzICsxMDAsNyBAQCB2b2lk
IFJlbmRlclBhdGg6OmxheW91dCgpCiAgICAgTGF5b3V0UmVwYWludGVyIHJlcGFpbnRlcigqdGhp
cywgY2hlY2tGb3JSZXBhaW50RHVyaW5nTGF5b3V0KCkgJiYgc2VsZk5lZWRzTGF5b3V0KCkpOwog
ICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQqPihub2RlKCkpOwogCi0gICAgLy8gV2UgbmVl
ZCB0byB1cGRhdGUgdGhlIFBhdGggb2JqZWN0IHdoZW5ldmVyIHRoZSB1bmRlcmx5aW5nIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50IHVzZXMgcmVsYXRpdmUgdmFsdWVzCi0gICAgLy8gYXMg
dGhlIHZpZXdwb3J0IHNpemUgbWF5IGhhdmUgY2hhbmdlZC4gSXQgd291bGQgYmUgbmljZSB0byBv
cHRpbWl6ZSB0aGlzIHRvIGRldGVjdCB0aGVzZSBjaGFuZ2VzLCBhbmQgb25seQotICAgIC8vIHVw
ZGF0ZSB3aGVuIG5lZWRlZCwgZXZlbiB3aGVuIHVzaW5nIHJlbGF0aXZlIHZhbHVlcy4KICAgICBi
b29sIG5lZWRzUGF0aFVwZGF0ZSA9IG1fbmVlZHNQYXRoVXBkYXRlOwotICAgIGlmICghbmVlZHNQ
YXRoVXBkYXRlICYmIGVsZW1lbnQtPmhhc1JlbGF0aXZlTGVuZ3RocygpKQotICAgICAgICBuZWVk
c1BhdGhVcGRhdGUgPSB0cnVlOwotCiAgICAgaWYgKG5lZWRzUGF0aFVwZGF0ZSkgewogICAgICAg
ICBtX3BhdGggPSBlbGVtZW50LT50b1BhdGhEYXRhKCk7CiAgICAgICAgIG1fbmVlZHNQYXRoVXBk
YXRlID0gZmFsc2U7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5j
cHAJKHJldmlzaW9uIDYyNDg0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjkgKzQwLDI0IEBAIFJlbmRlclNWR0NvbnRh
aW5lcjo6UmVuZGVyU1ZHQ29udGFpbmVyKFMKIHsKIH0KIAotYm9vbCBSZW5kZXJTVkdDb250YWlu
ZXI6OmRyYXdzQ29udGVudHMoKSBjb25zdAotewotICAgIHJldHVybiBtX2RyYXdzQ29udGVudHM7
Ci19Ci0KLXZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpzZXREcmF3c0NvbnRlbnRzKGJvb2wgZHJh
d3NDb250ZW50cykKLXsKLSAgICBtX2RyYXdzQ29udGVudHMgPSBkcmF3c0NvbnRlbnRzOwotfQot
CiB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0KCkKIHsKICAgICBBU1NFUlQobmVlZHNM
YXlvdXQoKSk7Ci0gICAgQVNTRVJUKCF2aWV3KCktPmxheW91dFN0YXRlRW5hYmxlZCgpKTsgLy8g
UmVuZGVyU1ZHUm9vdCBkaXNhYmxlcyBsYXlvdXRTdGF0ZSBmb3IgdGhlIFNWRyByZW5kZXJpbmcg
dHJlZS4KIAotICAgIGNhbGNWaWV3cG9ydCgpOyAvLyBBbGxvdyBSZW5kZXJTVkdWaWV3cG9ydENv
bnRhaW5lciB0byB1cGRhdGUgaXRzIHZpZXdwb3J0CisgICAgLy8gUmVuZGVyU1ZHUm9vdCBkaXNh
YmxlcyBsYXlvdXRTdGF0ZSBmb3IgdGhlIFNWRyByZW5kZXJpbmcgdHJlZS4KKyAgICBBU1NFUlQo
IXZpZXcoKS0+bGF5b3V0U3RhdGVFbmFibGVkKCkpOworCisgICAgLy8gQWxsb3cgUmVuZGVyU1ZH
Vmlld3BvcnRDb250YWluZXIgdG8gdXBkYXRlIGl0cyB2aWV3cG9ydC4KKyAgICBjYWxjVmlld3Bv
cnQoKTsKIAogICAgIExheW91dFJlcGFpbnRlciByZXBhaW50ZXIoKnRoaXMsIGNoZWNrRm9yUmVw
YWludER1cmluZ0xheW91dCgpIHx8IHNlbGZXaWxsUGFpbnQoKSk7Ci0gICAgY2FsY3VsYXRlTG9j
YWxUcmFuc2Zvcm0oKTsgLy8gQWxsb3cgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lciB0
byB1cGRhdGUgaXRzIHRyYW5zZm9ybQorCisgICAgLy8gQWxsb3cgUmVuZGVyU1ZHVHJhbnNmb3Jt
YWJsZUNvbnRhaW5lciB0byB1cGRhdGUgaXRzIHRyYW5zZm9ybS4KKyAgICBjYWxjdWxhdGVMb2Nh
bFRyYW5zZm9ybSgpOwogCiAgICAgU1ZHUmVuZGVyU3VwcG9ydDo6bGF5b3V0Q2hpbGRyZW4odGhp
cywgc2VsZk5lZWRzTGF5b3V0KCkpOwotICAgIHJlcGFpbnRlci5yZXBhaW50QWZ0ZXJMYXlvdXQo
KTsKIAorICAgIHJlcGFpbnRlci5yZXBhaW50QWZ0ZXJMYXlvdXQoKTsKICAgICBzZXROZWVkc0xh
eW91dChmYWxzZSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRh
aW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5l
ci5oCShyZXZpc2lvbiA2MjQ4NCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRh
aW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKICAgICBSZW5k
ZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVuKCkgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KIAog
ICAgIC8vIDxtYXJrZXI+IHVzZXMgdGhlc2UgbWV0aG9kcyB0byBvbmx5IGFsbG93IGRyYXdpbmcg
Y2hpbGRyZW4gZHVyaW5nIGEgc3BlY2lhbCBtYXJrZXIgZHJhdyB0aW1lCi0gICAgdm9pZCBzZXRE
cmF3c0NvbnRlbnRzKGJvb2wpOwotICAgIGJvb2wgZHJhd3NDb250ZW50cygpIGNvbnN0OworICAg
IHZvaWQgc2V0RHJhd3NDb250ZW50cyhib29sIGRyYXdzQ29udGVudHMpIHsgbV9kcmF3c0NvbnRl
bnRzID0gZHJhd3NDb250ZW50czsgfQorICAgIGJvb2wgZHJhd3NDb250ZW50cygpIGNvbnN0IHsg
cmV0dXJuIG1fZHJhd3NDb250ZW50czsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50
SW5mbyYsIGludCBwYXJlbnRYLCBpbnQgcGFyZW50WSk7CiAKQEAgLTk3LDUgKzk3LDMgQEAgdm9p
ZCB0b1JlbmRlclNWR0NvbnRhaW5lcihjb25zdCBSZW5kZXJTVgogCiAjZW5kaWYgLy8gRU5BQkxF
KFNWRykKICNlbmRpZiAvLyBSZW5kZXJTVkdDb250YWluZXJfaAotCi0vLyB2aW06dHM9NDpub2V0
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSb290LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSb290LmNwcAkocmV2aXNpb24gNjI0ODgpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSb290LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlbmRlclNWR1Jvb3Q6OlJlbmRl
clNWR1Jvb3QoU1ZHU3R5bGVkRWxlbWVudCogbm9kZSkKICAgICA6IFJlbmRlckJveChub2RlKQor
ICAgICwgbV9pc0xheW91dFNpemVDaGFuZ2VkKGZhbHNlKQogewogICAgIHNldFJlcGxhY2VkKHRy
dWUpOwogfQpAQCAtMTEzLDEzICsxMTQsMTQgQEAgdm9pZCBSZW5kZXJTVkdSb290OjpsYXlvdXQo
KQogICAgIEludFNpemUgb2xkU2l6ZSh3aWR0aCgpLCBoZWlnaHQoKSk7CiAgICAgY2FsY1dpZHRo
KCk7CiAgICAgY2FsY0hlaWdodCgpOwotCiAgICAgY2FsY1ZpZXdwb3J0KCk7CiAKLSAgICAvLyBS
ZW5kZXJTVkdSb290IG5lZWRzIHRvIHRha2Ugc3BlY2lhbCBjYXJlIHRvIHByb3BhZ2F0ZSB3aW5k
b3cgc2l6ZSBjaGFuZ2VzIHRvIHRoZSBjaGlsZHJlbiwKLSAgICAvLyBpZiB0aGUgb3V0ZXJtb3N0
IDxzdmc+IGlzIHVzaW5nIHJlbGF0aXZlIHgveS93aWR0aC9oZWlnaHQgdmFsdWVzLiBIZW5jZSB0
aGUgYWRkaXRvbmFsIHBhcmFtZXRlcnMuCiAgICAgU1ZHU1ZHRWxlbWVudCogc3ZnID0gc3RhdGlj
X2Nhc3Q8U1ZHU1ZHRWxlbWVudCo+KG5vZGUoKSk7Ci0gICAgU1ZHUmVuZGVyU3VwcG9ydDo6bGF5
b3V0Q2hpbGRyZW4odGhpcywgbmVlZHNMYXlvdXQgfHwgKHN2Zy0+aGFzUmVsYXRpdmVMZW5ndGhz
KCkgJiYgb2xkU2l6ZSAhPSBzaXplKCkpKTsKKyAgICBtX2lzTGF5b3V0U2l6ZUNoYW5nZWQgPSBz
dmctPmhhc1JlbGF0aXZlTGVuZ3RocygpICYmIG9sZFNpemUgIT0gc2l6ZSgpOworCisgICAgU1ZH
UmVuZGVyU3VwcG9ydDo6bGF5b3V0Q2hpbGRyZW4odGhpcywgbmVlZHNMYXlvdXQpOworICAgIG1f
aXNMYXlvdXRTaXplQ2hhbmdlZCA9IGZhbHNlOworCiAgICAgcmVwYWludGVyLnJlcGFpbnRBZnRl
ckxheW91dCgpOwogCiAgICAgdmlldygpLT5lbmFibGVMYXlvdXRTdGF0ZSgpOwpAQCAtMTk3LDkg
KzE5OSw2IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6Y2FsY1ZpZXdwb3J0KCkKIHsKICAgICBTVkdT
VkdFbGVtZW50KiBzdmcgPSBzdGF0aWNfY2FzdDxTVkdTVkdFbGVtZW50Kj4obm9kZSgpKTsKIAot
ICAgIGlmICghc2VsZk5lZWRzTGF5b3V0KCkgJiYgIXN2Zy0+aGFzUmVsYXRpdmVMZW5ndGhzKCkp
Ci0gICAgICAgIHJldHVybjsKLQogICAgIGlmICghc3ZnLT5oYXNTZXRDb250YWluZXJTaXplKCkp
IHsKICAgICAgICAgLy8gSW4gdGhlIG5vcm1hbCBjYXNlIG9mIDxzdmc+IGJlaW5nIHN0YW5kLWFs
b25lIG9yIGluIGEgQ1NTQm94TW9kZWwgb2JqZWN0IHdlIHVzZQogICAgICAgICAvLyBSZW5kZXJC
b3g6OndpZHRoKCkvaGVpZ2h0KCkgKHdoaWNoIHB1bGxzIGRhdGEgZnJvbSBSZW5kZXJTdHlsZSkK
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSb290LmgJKHJldmlzaW9uIDYyNDg0KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0
MCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIGNoaWxkcmVu
KCkgY29uc3QgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KICAgICBSZW5kZXJPYmplY3RDaGlsZExp
c3QqIGNoaWxkcmVuKCkgeyByZXR1cm4gJm1fY2hpbGRyZW47IH0KIAorICAgIGJvb2wgaXNMYXlv
dXRTaXplQ2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNMYXlvdXRTaXplQ2hhbmdlZDsgfQor
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hp
bGRyZW4oKSB7IHJldHVybiBjaGlsZHJlbigpOyB9CiAgICAgdmlydHVhbCBjb25zdCBSZW5kZXJP
YmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGNoaWxkcmVu
KCk7IH0KQEAgLTg0LDYgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJPYmplY3RDaGlsZExp
c3QgbV9jaGlsZHJlbjsKICAgICBGbG9hdFNpemUgbV92aWV3cG9ydFNpemU7CiAgICAgbXV0YWJs
ZSBBZmZpbmVUcmFuc2Zvcm0gbV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtOworICAgIGJvb2wgbV9p
c0xheW91dFNpemVDaGFuZ2VkIDogMTsKIH07CiAKIGlubGluZSBSZW5kZXJTVkdSb290KiB0b1Jl
bmRlclNWR1Jvb3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwCShyZXZpc2lvbiA2MjQ4OCkK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDUsMTggKzQ1LDEzIEBAIHZvaWQgUmVuZGVyU1ZHVmlld3BvcnRDb250
YWluZXI6OmFwcGx5VmkKIAogdm9pZCBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lcjo6Y2FsY1Zp
ZXdwb3J0KCkKIHsKLSAgICBTVkdFbGVtZW50KiBzdmdlbGVtID0gc3RhdGljX2Nhc3Q8U1ZHRWxl
bWVudCo+KG5vZGUoKSk7Ci0gICAgaWYgKHN2Z2VsZW0tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN2
Z1RhZykpIHsKLSAgICAgICAgU1ZHU1ZHRWxlbWVudCogc3ZnID0gc3RhdGljX2Nhc3Q8U1ZHU1ZH
RWxlbWVudCo+KG5vZGUoKSk7Ci0KLSAgICAgICAgaWYgKCFzZWxmTmVlZHNMYXlvdXQoKSAmJiAh
c3ZnLT5oYXNSZWxhdGl2ZUxlbmd0aHMoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBmbG9hdCB4ID0gc3ZnLT54KCkudmFsdWUoc3ZnKTsKLSAgICAgICAgZmxvYXQgeSA9IHN2Zy0+
eSgpLnZhbHVlKHN2Zyk7Ci0gICAgICAgIGZsb2F0IHcgPSBzdmctPndpZHRoKCkudmFsdWUoc3Zn
KTsKLSAgICAgICAgZmxvYXQgaCA9IHN2Zy0+aGVpZ2h0KCkudmFsdWUoc3ZnKTsKLSAgICAgICAg
bV92aWV3cG9ydCA9IEZsb2F0UmVjdCh4LCB5LCB3LCBoKTsKKyAgICAgU1ZHRWxlbWVudCogZWxl
bWVudCA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihub2RlKCkpOworICAgICBpZiAoZWxlbWVu
dC0+aGFzVGFnTmFtZShTVkdOYW1lczo6c3ZnVGFnKSkgeworICAgICAgICAgU1ZHU1ZHRWxlbWVu
dCogc3ZnID0gc3RhdGljX2Nhc3Q8U1ZHU1ZHRWxlbWVudCo+KGVsZW1lbnQpOworICAgICAgICAg
bV92aWV3cG9ydCA9IEZsb2F0UmVjdChzdmctPngoKS52YWx1ZShzdmcpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICwgc3ZnLT55KCkudmFsdWUoc3ZnKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAsIHN2Zy0+d2lkdGgoKS52YWx1ZShzdmcpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICwgc3ZnLT5oZWlnaHQoKS52YWx1ZShzdmcpKTsKICAgICB9CiB9
CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCShyZXZpc2lvbiA2
MjQ4OCkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiwxMiArMzIsMTQgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCisjaW5j
bHVkZSAiUmVuZGVyUGF0aC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0NvbnRhaW5lci5oIgogI2lu
Y2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKICNpbmNsdWRl
ICJSZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNl
TWFza2VyLmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5oIgogI2luY2x1ZGUgIlNWR1N0eWxl
ZEVsZW1lbnQuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9V
bnVzZWRQYXJhbS5oPgpAQCAtMjMwLDI1ICsyMzIsNDIgQEAgRmxvYXRSZWN0IFNWR1JlbmRlclN1
cHBvcnQ6OmNvbXB1dGVDb250YQogICAgIHJldHVybiBib3VuZGluZ0JveDsKIH0KIAorc3RhdGlj
IGlubGluZSBSZW5kZXJTVkdSb290KiBzdmdSb290VHJlZU9iamVjdChSZW5kZXJPYmplY3QqIHN0
YXJ0KQoreworICAgIHdoaWxlIChzdGFydCAmJiAhc3RhcnQtPmlzU1ZHUm9vdCgpKQorICAgICAg
ICBzdGFydCA9IHN0YXJ0LT5wYXJlbnQoKTsKKworICAgIEFTU0VSVChzdGFydCk7CisgICAgQVNT
RVJUKHN0YXJ0LT5pc1NWR1Jvb3QoKSk7CisgICAgcmV0dXJuIHRvUmVuZGVyU1ZHUm9vdChzdGFy
dCk7Cit9CisKIHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6bGF5b3V0Q2hpbGRyZW4oUmVuZGVyT2Jq
ZWN0KiBzdGFydCwgYm9vbCBzZWxmTmVlZHNMYXlvdXQpCiB7CisgICAgYm9vbCBsYXlvdXRTaXpl
Q2hhbmdlZCA9IHN2Z1Jvb3RUcmVlT2JqZWN0KHN0YXJ0KS0+aXNMYXlvdXRTaXplQ2hhbmdlZCgp
OworCiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gc3RhcnQtPmZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgLy8gT25seSBm
b3JjZSBvdXIga2lkcyB0byBsYXlvdXQgaWYgd2UncmUgYmVpbmcgYXNrZWQgdG8gcmVsYXlvdXQg
YXMgYSByZXN1bHQgb2YgYSBwYXJlbnQgY2hhbmdpbmcKLSAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBiZSBhYmxlIHRvIHNraXAgcmVsYXlvdXQgb2Ygbm9uLXJlbGF0aXZlIGtpZHMgd2hlbiBv
bmx5IGJvdW5kcyBzaXplIGhhcyBjaGFuZ2VkCi0gICAgICAgIC8vIHRoYXQncyBhIHBvc3NpYmxl
IGZ1dHVyZSBvcHRpbWl6YXRpb24gdXNpbmcgTGF5b3V0U3RhdGUKLSAgICAgICAgLy8gaHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzOTEKICAgICAgICAgYm9vbCBuZWVk
c0xheW91dCA9IHNlbGZOZWVkc0xheW91dDsKLSAgICAgICAgaWYgKCFuZWVkc0xheW91dCkgewor
CisgICAgICAgIGlmIChsYXlvdXRTaXplQ2hhbmdlZCkgeworICAgICAgICAgICAgLy8gV2hlbiBz
ZWxmTmVlZHNMYXlvdXQgaXMgZmFsc2UgYW5kIHRoZSBsYXlvdXQgc2l6ZSBjaGFuZ2VkLCB3ZSBo
YXZlIHRvIGNoZWNrIHdoZXRoZXIgdGhpcyBjaGlsZCB1c2VzIHJlbGF0aXZlIGxlbmd0aHMKICAg
ICAgICAgICAgIGlmIChTVkdFbGVtZW50KiBlbGVtZW50ID0gY2hpbGQtPm5vZGUoKS0+aXNTVkdF
bGVtZW50KCkgPyBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4oY2hpbGQtPm5vZGUoKSkgOiAwKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmlzU3R5bGVkKCkpCi0gICAgICAgICAgICAg
ICAgICAgIG5lZWRzTGF5b3V0ID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCo+KGVsZW1l
bnQpLT5oYXNSZWxhdGl2ZUxlbmd0aHMoKTsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC0+
aXNTdHlsZWQoKSAmJiBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCktPmhh
c1JlbGF0aXZlTGVuZ3RocygpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGxh
eW91dCBzaXplIGNoYW5nZWQgYW5kIHdoZW4gdXNpbmcgcmVsYXRpdmUgdmFsdWVzIHRlbGwgdGhl
IFJlbmRlclBhdGggdG8gdXBkYXRlIGl0cyBQYXRoIG9iamVjdAorICAgICAgICAgICAgICAgICAg
ICBpZiAoY2hpbGQtPmlzUmVuZGVyUGF0aCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgdG9S
ZW5kZXJQYXRoKGNoaWxkKS0+c2V0TmVlZHNQYXRoVXBkYXRlKCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgbmVlZHNMYXlvdXQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCi0gICAgICAgIGlmIChuZWVkc0xheW91dCkKKyAgICAgICAgaWYgKG5l
ZWRzTGF5b3V0KSB7CiAgICAgICAgICAgICBjaGlsZC0+c2V0TmVlZHNMYXlvdXQodHJ1ZSwgZmFs
c2UpOworICAgICAgICAgICAgY2hpbGQtPmxheW91dCgpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOwogCi0gICAgICAgIGNoaWxkLT5sYXlvdXRJ
Zk5lZWRlZCgpOwogICAgICAgICBBU1NFUlQoIWNoaWxkLT5uZWVkc0xheW91dCgpKTsKICAgICB9
CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gNjI0ODgpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY2LDEw
ICszNjYsNDMgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR1N0eWxlZEVsZW1lbnQ6OmxvY2FsQwogICAg
IHJldHVybiBBZmZpbmVUcmFuc2Zvcm0oKTsKIH0KIAotdm9pZCBTVkdTdHlsZWRFbGVtZW50Ojp1
cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihib29sLCBTVkdTdHlsZWRFbGVtZW50KikK
K3ZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24o
Ym9vbCBoYXNSZWxhdGl2ZUxlbmd0aHMsIFNWR1N0eWxlZEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0g
ICAgLy8gRklYTUU6IFRoZSBhY3R1YWwgY29kZSB3aWxsIGxhbmQgaW4gYSBmb2xsb3ctdXAgcGF0
Y2guCi0gICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MTU2NgorICAgIC8vIElmIHdlJ3JlIG5vdCB5ZXQgaW4gYSBkb2N1bWVudCwgdGhpcyBmdW5jdGlv
biB3aWxsIGJlIGNhbGxlZCBhZ2FpbiBmcm9tIGluc2VydGVkSW50b0RvY3VtZW50KCkuIERvIG5v
dGhpbmcgbm93LgorICAgIGlmICghaW5Eb2N1bWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBBbiBlbGVtZW50IHdhbnRzIHRvIG5vdGlmeSB1cyB0aGF0IGl0cyBvd24gcmVsYXRpdmUg
bGVuZ3RocyBzdGF0ZSBjaGFuZ2VkLgorICAgIC8vIFJlZ2lzdGVyIGl0IGluIHRoZSByZWxhdGl2
ZSBsZW5ndGggbWFwLCBhbmQgcmVnaXN0ZXIgdXMgaW4gdGhlIHBhcmVudCByZWxhdGl2ZSBsZW5n
dGggbWFwLgorICAgIC8vIFJlZ2lzdGVyIHRoZSBwYXJlbnQgaW4gdGhlIGdyYW5kcGFyZW50cyBt
YXAsIGV0Yy4gUmVwZWF0IHByb2NlZHVyZSB1bnRpbCB0aGUgcm9vdCBvZiB0aGUgU1ZHIHRyZWUu
CisKKyAgICBpZiAoaGFzUmVsYXRpdmVMZW5ndGhzKQorICAgICAgICBtX2VsZW1lbnRzV2l0aFJl
bGF0aXZlTGVuZ3Rocy5hZGQoZWxlbWVudCk7CisgICAgZWxzZSB7CisgICAgICAgIGlmICghbV9l
bGVtZW50c1dpdGhSZWxhdGl2ZUxlbmd0aHMuY29udGFpbnMoZWxlbWVudCkpIHsKKyAgICAgICAg
ICAgIC8vIFdlIHdlcmUgbmV2ZXIgcmVnaXN0ZXJlZC4gRG8gbm90aGluZy4KKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fZWxlbWVudHNXaXRoUmVsYXRpdmVMZW5n
dGhzLnJlbW92ZShlbGVtZW50KTsKKyAgICB9CisKKyAgICAvLyBGaW5kIGZpcnN0IHN0eWxlZCBw
YXJlbnQgbm9kZSwgYW5kIG5vdGlmeSBpdCB0aGF0IHdlJ3ZlIGNoYW5nZWQgb3VyIHJlbGF0aXZl
IGxlbmd0aCBzdGF0ZS4KKyAgICBOb2RlKiBub2RlID0gcGFyZW50KCk7CisgICAgd2hpbGUgKG5v
ZGUpIHsKKyAgICAgICAgaWYgKCFub2RlLT5pc1NWR0VsZW1lbnQoKSkKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIFNWR0VsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVt
ZW50Kj4obm9kZSk7CisgICAgICAgIGlmICghZWxlbWVudC0+aXNTdHlsZWQoKSkgeworICAgICAg
ICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBSZWdpc3RlciB1cyBpbiB0aGUgcGFyZW50IGVsZW1lbnQgbWFw
LgorICAgICAgICBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCktPnVwZGF0
ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKGhhc1JlbGF0aXZlTGVuZ3RocywgdGhpcyk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KIH0KIAogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3R5bGVk
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAko
cmV2aXNpb24gNjI0ODgpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQwLDggKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3Q7CiAKLSAgICAgICAgLy8gRklYTUU6IFRoZSBh
Y3R1YWwgY29kZSB3aWxsIGxhbmQgaW4gYSBmb2xsb3ctdXAgcGF0Y2guCi0gICAgICAgIGJvb2wg
aGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QgeyByZXR1cm4gc2VsZkhhc1JlbGF0aXZlTGVuZ3Ro
cygpOyB9CisgICAgICAgIGJvb2wgaGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QgeyByZXR1cm4g
IW1fZWxlbWVudHNXaXRoUmVsYXRpdmVMZW5ndGhzLmlzRW1wdHkoKTsgfQogCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc1N0eWxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzTWFya2VycygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC04
MSw2ICs4MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIHNl
bGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgcHJp
dmF0ZToKKyAgICAgICAgSGFzaFNldDxTVkdTdHlsZWRFbGVtZW50Kj4gbV9lbGVtZW50c1dpdGhS
ZWxhdGl2ZUxlbmd0aHM7CiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHU3R5
bGVkRWxlbWVudCwgSFRNTE5hbWVzOjpjbGFzc0F0dHIsIFN0cmluZywgQ2xhc3NOYW1lLCBjbGFz
c05hbWUpCiAgICAgfTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjI0OTApCisrKyBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wNy0wNSAg
Tmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTVkdSZW5kZXJDb250YWluZXIgZm9y
Y2VzIHRvbyBtYW55IGtpZHMgdG8gcmVsYXlvdXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzkxCisKKyAgICAgICAgVXBkYXRlIHJlc3VsdHMsIHN2
Zy9oaXhpZS9lcnJvci8wMTMueG1sLiBNYXJnaW5hbCBzaXplIGNoYW5nZSwgYnV0IGEgcHJvZ3Jl
c3Npb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvc3ZnL2hpeGllL2Vycm9yLzAxMy1leHBl
Y3RlZC50eHQ6CisKIDIwMTAtMDctMDUgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5u
QHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGlyayBTY2h1bHplLgpJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9oaXhpZS9lcnJvci8wMTMtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvaGl4aWUvZXJyb3IvMDEz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNjI0ODQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvc3ZnL2hpeGllL2Vycm9yLzAxMy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUs
NyArNSw3IEBAIGxheWVyIGF0ICgwLDApIHNpemUgODAweDEwMAogICBSZW5kZXJCbG9jayB7aHRt
bH0gYXQgKDAsMCkgc2l6ZSA4MDB4MTAwCiAgICAgUmVuZGVyQm9keSB7Ym9keX0gYXQgKDgsOCkg
c2l6ZSA3ODR4NzYKICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUg
Nzg0eDI0Ci0gICAgICAgIFJlbmRlclNWR1Jvb3Qge3N2Z30gYXQgKDgsOCkgc2l6ZSA3Njl4MjAK
KyAgICAgICAgUmVuZGVyU1ZHUm9vdCB7c3ZnfSBhdCAoOCw4KSBzaXplIDc4NHgyMAogICAgICAg
ICAgIFJlbmRlclNWR1RleHQge3RleHR9IGF0ICgxMCwyMCkgc2l6ZSAxMjV4MTMgY29udGFpbnMg
MSBjaHVuayhzKQogICAgICAgICAgICAgUmVuZGVyU1ZHSW5saW5lVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgMTI1eDEzCiAgICAgICAgICAgICAgIGNodW5rIDEgdGV4dCBydW4gMSBhdCAoMTAu
MDAsMzAuMDApIHN0YXJ0T2Zmc2V0IDAgZW5kT2Zmc2V0IDMwIHdpZHRoIDEyNS4wMDogIkZBSUwg
KFRoaXMgc2hvdWxkIG5vdCByZW5kZXIuKSIK
</data>
<flag name="review"
          id="48105"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>