<?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>63640</bug_id>
          
          <creation_ts>2011-06-29 11:42:01 -0700</creation_ts>
          <short_desc>Switch RenderLayer::hitTest* to to new layout types</short_desc>
          <delta_ts>2011-07-06 13:20:22 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>63567</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>eric</cc>
    
    <cc>leviw</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>429747</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-29 11:42:01 -0700</bug_when>
    <thetext>Convert RenderLayer hit testing functions to new layout types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429754</commentid>
    <comment_count>1</comment_count>
      <attachid>99119</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-29 11:54:12 -0700</bug_when>
    <thetext>Created attachment 99119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429765</commentid>
    <comment_count>2</comment_count>
      <attachid>99119</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-29 12:05:55 -0700</bug_when>
    <thetext>Comment on attachment 99119
Patch

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

&gt; Source/WebCore/rendering/LayoutTypes.h:51
&gt; +    return roundedIntPoint(point);

Is this always what we want?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429767</commentid>
    <comment_count>3</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-29 12:07:28 -0700</bug_when>
    <thetext>&gt; Is this always what we want?

No. Perhaps roundedLayoutPoint would be a better name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430653</commentid>
    <comment_count>4</comment_count>
      <attachid>99362</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-30 13:37:07 -0700</bug_when>
    <thetext>Created attachment 99362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430657</commentid>
    <comment_count>5</comment_count>
      <attachid>99362</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-30 13:50:56 -0700</bug_when>
    <thetext>Comment on attachment 99362
Patch

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

&gt; Source/WebCore/rendering/LayoutTypes.h:52
&gt; +inline LayoutPoint roundedLayoutPoint(FloatPoint point)
&gt; +{
&gt; +    return roundedIntPoint(point);
&gt; +}

These methods scare me.  What is this going to do when you move LayoutPoint to float?  Is it going to still round?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430661</commentid>
    <comment_count>6</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-30 13:52:35 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; These methods scare me.  What is this going to do when you move LayoutPoint to float?  Is it going to still round?

No, I tried to explain the rational in the change log. Once we switch to float or fixed those methods will be no-ops. They&apos;re only used in placed where we do rounding today where we won&apos;t have to do rounding in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430663</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-30 13:53:28 -0700</bug_when>
    <thetext>Won&apos;t there also be cases where we want to round in both worlds?  How will we separate those?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430668</commentid>
    <comment_count>8</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-30 13:59:11 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Won&apos;t there also be cases where we want to round in both worlds?  How will we separate those?

There might be. For those we plan to move the rounding into semantically meaningful helper methods on one of the the rendering base classes.

The roundedLayout* methods used in this and my other pending patches are all for cases where we do not want to do rounding going forward. Perhaps we should try to make this clearer by naming them something else? I&apos;m not sure what that name would be though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432812</commentid>
    <comment_count>9</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-07-06 08:57:59 -0700</bug_when>
    <thetext>Eric, any suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432947</commentid>
    <comment_count>10</comment_count>
      <attachid>99362</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-06 12:58:38 -0700</bug_when>
    <thetext>Comment on attachment 99362
Patch

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

&gt;&gt; Source/WebCore/rendering/LayoutTypes.h:52
&gt;&gt; +}
&gt; 
&gt; These methods scare me.  What is this going to do when you move LayoutPoint to float?  Is it going to still round?

I&apos;m OK with this, assuming you all plan to audit all these callsites at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432960</commentid>
    <comment_count>11</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-07-06 13:05:05 -0700</bug_when>
    <thetext>Yay, thanks Eric. Filed bug 64021 to audit all the callsites when we make the switch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432970</commentid>
    <comment_count>12</comment_count>
      <attachid>99362</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 13:20:18 -0700</bug_when>
    <thetext>Comment on attachment 99362
Patch

Clearing flags on attachment: 99362

Committed r90485: &lt;http://trac.webkit.org/changeset/90485&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432971</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-06 13:20:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99119</attachid>
            <date>2011-06-29 11:54:12 -0700</date>
            <delta_ts>2011-06-30 13:37:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63640-20110629115411.patch</filename>
            <type>text/plain</type>
            <size>17791</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwMDI5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDYtMjkgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFN3aXRjaCBSZW5kZXJMYXllcjo6aGl0VGVzdCogdG8gdG8gbmV3
IGxheW91dCB0eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjM2NDAKKworICAgICAgICBTd2l0Y2ggaGl0IHRlc3RpbmcgYW5kIHN1cHBvcnRpbmcg
bWV0aG9kcyBmb3IgUmVuZGVyTGF5ZXIgb3ZlciB0byB0aGUgbmV3CisgICAgICAgIGxheW91dCB1
bml0IGFic3RyYWN0aW9uLgorICAgICAgICAKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5j
dGlvbmFsaXR5IGNoYW5nZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvTGF5b3V0VHlwZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvTGF5b3V0UG9pbnQpOgorICAgICAgICBBZGQgdG9MYXlvdXRQ
b2ludCBhYnN0cmFjdGlvbiwgY2FsbHMgcm91bmRlZEludFBvaW50IG5vdyBidXQgd2lsbCBiZSBh
CisgICAgICAgIG5vLW9wIChhbmQgZXZlbnR1YWxseSBnbyBhd2F5KSBvbmNlIHdlIHN3aXRjaCB0
byBmbG9hdCBvciBmaXhlZCBwb2ludC4KKyAgICAgICAgCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjcmVhdGVMb2Nh
bFRyYW5zZm9ybVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0UGFnaW5hdGVkQ2hpbGRMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdENoaWxkTGF5ZXJDb2x1bW5z
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjYWxjdWxhdGVSZWN0cyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisKIDIwMTEtMDYtMjkgIEFkcmllbm5lIFdh
bGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2Jp
bnNvbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCShyZXZpc2lv
biA4OTk4MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaWZuZGVmIExheW91dFR5cGVzX2gKICNkZWZp
bmUgTGF5b3V0VHlwZXNfaAogCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIklu
dFJlY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDUsNiArNDYsMTEgQEAgdHlwZWRl
ZiBJbnRQb2ludCBMYXlvdXRQb2ludDsKIHR5cGVkZWYgSW50U2l6ZSBMYXlvdXRTaXplOwogdHlw
ZWRlZiBJbnRSZWN0IExheW91dFJlY3Q7CiAKK2lubGluZSBMYXlvdXRQb2ludCB0b0xheW91dFBv
aW50KEZsb2F0UG9pbnQgcG9pbnQpCit7CisgICAgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChwb2lu
dCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIExheW91dFR5cGVz
X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNp
b24gODk5ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOTAxLDExICsyOTAxLDExIEBAIHN0YXRpYyBkb3VibGUgY29tcHV0
ZVpPZmZzZXQoY29uc3QgSGl0VGUKIH0KIAogUGFzc1JlZlB0cjxIaXRUZXN0aW5nVHJhbnNmb3Jt
U3RhdGU+IFJlbmRlckxheWVyOjpjcmVhdGVMb2NhbFRyYW5zZm9ybVN0YXRlKFJlbmRlckxheWVy
KiByb290TGF5ZXIsIFJlbmRlckxheWVyKiBjb250YWluZXJMYXllciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBoaXRUZXN0UmVjdCwgY29u
c3QgSW50UG9pbnQmIGhpdFRlc3RQb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgTGF5b3V0UG9p
bnQmIGhpdFRlc3RQb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUqIGNvbnRhaW5lclRyYW5zZm9ybVN0YXRl
KSBjb25zdAogewogICAgIFJlZlB0cjxIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGU+IHRyYW5zZm9y
bVN0YXRlOwotICAgIEludFBvaW50IG9mZnNldDsKKyAgICBMYXlvdXRQb2ludCBvZmZzZXQ7CiAg
ICAgaWYgKGNvbnRhaW5lclRyYW5zZm9ybVN0YXRlKSB7CiAgICAgICAgIC8vIElmIHdlJ3JlIGFs
cmVhZHkgY29tcHV0aW5nIHRyYW5zZm9ybSBzdGF0ZSwgdGhlbiBpdCdzIHJlbGF0aXZlIHRvIHRo
ZSBjb250YWluZXIgKHdoaWNoIHdlIGtub3cgaXMgbm9uLW51bGwpLgogICAgICAgICB0cmFuc2Zv
cm1TdGF0ZSA9IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZTo6Y3JlYXRlKCpjb250YWluZXJUcmFu
c2Zvcm1TdGF0ZSk7CkBAIC0yOTYzLDcgKzI5NjMsNyBAQCBzdGF0aWMgYm9vbCBpc0hpdENhbmRp
ZGF0ZShjb25zdCBSZW5kZXJMCiAvLyBJZiB6T2Zmc2V0IGlzIG5vbi1udWxsICh3aGljaCBpbmRp
Y2F0ZXMgdGhhdCB0aGUgY2FsbGVyIHdhbnRzIHogb2Zmc2V0IGluZm9ybWF0aW9uKSwgCiAvLyAg
KnpPZmZzZXQgb24gcmV0dXJuIGlzIHRoZSB6IG9mZnNldCBvZiB0aGUgaGl0IHBvaW50IHJlbGF0
aXZlIHRvIHRoZSBjb250YWluaW5nIGZsYXR0ZW5pbmcgbGF5ZXIuCiBSZW5kZXJMYXllciogUmVu
ZGVyTGF5ZXI6OmhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXll
ciogY29udGFpbmVyTGF5ZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdWx0JiByZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBJbnRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSW50UG9pbnQmIGhpdFRlc3RQb2ludCwg
Ym9vbCBhcHBsaWVkVHJhbnNmb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgTGF5b3V0UmVjdCYgaGl0VGVzdFJlY3QsIGNvbnN0IExheW91dFBvaW50JiBo
aXRUZXN0UG9pbnQsIGJvb2wgYXBwbGllZFRyYW5zZm9ybSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZSogdHJhbnNm
b3JtU3RhdGUsIGRvdWJsZSogek9mZnNldCkKIHsKICAgICAvLyBUaGUgbmF0dXJhbCB0aGluZyB3
b3VsZCBiZSB0byBrZWVwIEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZSBvbiB0aGUgc3RhY2ssIGJ1
dCBpdCdzIGJpZywgc28gd2UgaGVhcC1hbGxvY2F0ZS4KQEAgLTI5NzQsNyArMjk3NCw3IEBAIFJl
bmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKFIKICNlbmRpZgogICAgIHVzZVRl
bXBvcmFyeUNsaXBSZWN0cyB8PSByZW5kZXJlcigpLT52aWV3KCktPmZyYW1lVmlldygpLT5jb250
YWluc1Njcm9sbGFibGVBcmVhV2l0aE92ZXJsYXlTY3JvbGxiYXJzKCk7CiAKLSAgICBJbnRSZWN0
IGhpdFRlc3RBcmVhID0gcmVzdWx0LnJlY3RGb3JQb2ludChoaXRUZXN0UG9pbnQpOworICAgIExh
eW91dFJlY3QgaGl0VGVzdEFyZWEgPSByZXN1bHQucmVjdEZvclBvaW50KGhpdFRlc3RQb2ludCk7
CiAKICAgICAvLyBBcHBseSBhIHRyYW5zZm9ybSBpZiB3ZSBoYXZlIG9uZS4KICAgICBpZiAodHJh
bnNmb3JtKCkgJiYgIWFwcGxpZWRUcmFuc2Zvcm0pIHsKQEAgLTI5OTksOCArMjk5OSw4IEBAIFJl
bmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKFIKICAgICAgICAgLy8KICAgICAg
ICAgLy8gV2UgY2FuJ3QganVzdCBtYXAgaGl0VGVzdFBvaW50IGFuZCBoaXRUZXN0UmVjdCBiZWNh
dXNlIHRoZXkgbWF5IGhhdmUgYmVlbiBmbGF0dGVuZWQgKGxvc2luZyB6KQogICAgICAgICAvLyBi
eSBvdXIgY29udGFpbmVyLgotICAgICAgICBJbnRQb2ludCBsb2NhbFBvaW50ID0gcm91bmRlZElu
dFBvaW50KG5ld1RyYW5zZm9ybVN0YXRlLT5tYXBwZWRQb2ludCgpKTsKLSAgICAgICAgSW50UmVj
dCBsb2NhbEhpdFRlc3RSZWN0OworICAgICAgICBMYXlvdXRQb2ludCBsb2NhbFBvaW50ID0gdG9M
YXlvdXRQb2ludChuZXdUcmFuc2Zvcm1TdGF0ZS0+bWFwcGVkUG9pbnQoKSk7CisgICAgICAgIExh
eW91dFJlY3QgbG9jYWxIaXRUZXN0UmVjdDsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiAgICAgICAgIGlmIChpc0NvbXBvc2l0ZWQoKSkgewogICAgICAgICAgICAgLy8gSXQgZG9l
c24ndCBtYWtlIHNlbnNlIHRvIHByb2plY3QgaGl0VGVzdFJlY3QgaW50byB0aGUgcGxhbmUgb2Yg
dGhpcyBsYXllciwgc28gdXNlIHRoZSBzYW1lIGJvdW5kcyB3ZSB1c2UgZm9yIHBhaW50aW5nLgpA
QCAtMzA0NCwxMCArMzA0NCwxMCBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RM
YXllcihSCiAgICAgfQogICAgIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgY2xpcCByZWN0cyB3ZSBz
aG91bGQgdXNlLgotICAgIEludFJlY3QgbGF5ZXJCb3VuZHM7Ci0gICAgSW50UmVjdCBiZ1JlY3Q7
Ci0gICAgSW50UmVjdCBmZ1JlY3Q7Ci0gICAgSW50UmVjdCBvdXRsaW5lUmVjdDsKKyAgICBMYXlv
dXRSZWN0IGxheWVyQm91bmRzOworICAgIExheW91dFJlY3QgYmdSZWN0OworICAgIExheW91dFJl
Y3QgZmdSZWN0OworICAgIExheW91dFJlY3Qgb3V0bGluZVJlY3Q7CiAgICAgY2FsY3VsYXRlUmVj
dHMocm9vdExheWVyLCBoaXRUZXN0UmVjdCwgbGF5ZXJCb3VuZHMsIGJnUmVjdCwgZmdSZWN0LCBv
dXRsaW5lUmVjdCwgdXNlVGVtcG9yYXJ5Q2xpcFJlY3RzLCBJbmNsdWRlT3ZlcmxheVNjcm9sbGJh
clNpemUpOwogICAgIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlIHVzZWQgZm9yIGtlZXBpbmcg
dHJhY2sgb2YgdGhlIHotZGVwdGggb2YgdGhlIGhpdCBwb2ludCBvZiAzZC10cmFuc2Zvcm1lZApA
QCAtMzE2OSw3ICszMTY5LDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdENvbnRlbnRzKGNv
bnN0IAogCiBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMaXN0KFZlY3RvcjxSZW5k
ZXJMYXllcio+KiBsaXN0LCBSZW5kZXJMYXllciogcm9vdExheWVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3VsdCYgcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBJbnRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSW50UG9pbnQmIGhpdFRlc3RQb2lu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVj
dCYgaGl0VGVzdFJlY3QsIGNvbnN0IExheW91dFBvaW50JiBoaXRUZXN0UG9pbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEhpdFRlc3RpbmdUcmFuc2Zvcm1T
dGF0ZSogdHJhbnNmb3JtU3RhdGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb3VibGUqIHpPZmZzZXRGb3JEZXNjZW5kYW50cywgZG91YmxlKiB6T2Zmc2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBIaXRUZXN0aW5nVHJhbnNm
b3JtU3RhdGUqIHVuZmxhdHRlbmVkVHJhbnNmb3JtU3RhdGUsCkBAIC0zMjA2LDcgKzMyMDYsNyBA
QCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMaXN0KFZlCiB9CiAKIFJlbmRlckxh
eWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdFBhZ2luYXRlZENoaWxkTGF5ZXIoUmVuZGVyTGF5ZXIq
IGNoaWxkTGF5ZXIsIFJlbmRlckxheWVyKiByb290TGF5ZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIGhpdFRlc3RSZWN0
LCBjb25zdCBJbnRQb2ludCYgaGl0VGVzdFBvaW50LCBjb25zdCBIaXRUZXN0aW5nVHJhbnNmb3Jt
U3RhdGUqIHRyYW5zZm9ybVN0YXRlLCBkb3VibGUqIHpPZmZzZXQpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExheW91dFJlY3QmIGhp
dFRlc3RSZWN0LCBjb25zdCBMYXlvdXRQb2ludCYgaGl0VGVzdFBvaW50LCBjb25zdCBIaXRUZXN0
aW5nVHJhbnNmb3JtU3RhdGUqIHRyYW5zZm9ybVN0YXRlLCBkb3VibGUqIHpPZmZzZXQpCiB7CiAg
ICAgVmVjdG9yPFJlbmRlckxheWVyKj4gY29sdW1uTGF5ZXJzOwogICAgIFJlbmRlckxheWVyKiBh
bmNlc3RvckxheWVyID0gaXNOb3JtYWxGbG93T25seSgpID8gcGFyZW50KCkgOiBzdGFja2luZ0Nv
bnRleHQoKTsKQEAgLTMyMjMsNyArMzIyMyw3IEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6
aGl0VGVzdFBhZ2luYXQKIH0KIAogUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0Q2hp
bGRMYXllckNvbHVtbnMoUmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIsIFJlbmRlckxheWVyKiByb290
TGF5ZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1
bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBJbnRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSW50UG9pbnQmIGhpdFRlc3RQb2ludCwg
Y29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiB0cmFuc2Zvcm1TdGF0ZSwgZG91YmxlKiB6
T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgTGF5b3V0UmVjdCYgaGl0VGVzdFJlY3QsIGNvbnN0IExheW91dFBvaW50JiBoaXRU
ZXN0UG9pbnQsIGNvbnN0IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZSogdHJhbnNmb3JtU3RhdGUs
IGRvdWJsZSogek9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxSZW5kZXJMYXllcio+JiBjb2x1bW5MYXllcnMsIHNp
emVfdCBjb2x1bW5JbmRleCkKIHsKICAgICBSZW5kZXJCbG9jayogY29sdW1uQmxvY2sgPSB0b1Jl
bmRlckJsb2NrKGNvbHVtbkxheWVyc1tjb2x1bW5JbmRleF0tPnJlbmRlcmVyKCkpOwpAQCAtMzIz
Miw3ICszMjMyLDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0Q2hpbGRMYQog
ICAgIGlmICghY29sdW1uQmxvY2sgfHwgIWNvbHVtbkJsb2NrLT5oYXNDb2x1bW5zKCkpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgSW50UG9pbnQgbGF5ZXJPZmZzZXQ7CisgICAgTGF5b3V0UG9p
bnQgbGF5ZXJPZmZzZXQ7CiAgICAgY29sdW1uQmxvY2stPmxheWVyKCktPmNvbnZlcnRUb0xheWVy
Q29vcmRzKHJvb3RMYXllciwgbGF5ZXJPZmZzZXQpOwogICAgIAogICAgIENvbHVtbkluZm8qIGNv
bEluZm8gPSBjb2x1bW5CbG9jay0+Y29sdW1uSW5mbygpOwpAQCAtMzI0MCwxMiArMzI0MCwxMiBA
QCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RDaGlsZExhCiAgICAgCiAgICAgLy8g
V2UgaGF2ZSB0byBnbyBiYWNrd2FyZHMgZnJvbSB0aGUgbGFzdCBjb2x1bW4gdG8gdGhlIGZpcnN0
LgogICAgIGJvb2wgaXNIb3Jpem9udGFsID0gY29sdW1uQmxvY2stPnN0eWxlKCktPmlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCk7Ci0gICAgaW50IGxvZ2ljYWxMZWZ0ID0gY29sdW1uQmxvY2stPmxv
Z2ljYWxMZWZ0T2Zmc2V0Rm9yQ29udGVudCgpOwotICAgIGludCBjdXJyTG9naWNhbFRvcE9mZnNl
dCA9IDA7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCA9IGNvbHVtbkJsb2NrLT5sb2dpY2Fs
TGVmdE9mZnNldEZvckNvbnRlbnQoKTsKKyAgICBMYXlvdXRVbml0IGN1cnJMb2dpY2FsVG9wT2Zm
c2V0ID0gMDsKICAgICBpbnQgaTsKICAgICBmb3IgKGkgPSAwOyBpIDwgY29sQ291bnQ7IGkrKykg
ewotICAgICAgICBJbnRSZWN0IGNvbFJlY3QgPSBjb2x1bW5CbG9jay0+Y29sdW1uUmVjdEF0KGNv
bEluZm8sIGkpOwotICAgICAgICBpbnQgYmxvY2tEZWx0YSA9ICAoaXNIb3Jpem9udGFsID8gY29s
UmVjdC5oZWlnaHQoKSA6IGNvbFJlY3Qud2lkdGgoKSk7CisgICAgICAgIExheW91dFJlY3QgY29s
UmVjdCA9IGNvbHVtbkJsb2NrLT5jb2x1bW5SZWN0QXQoY29sSW5mbywgaSk7CisgICAgICAgIExh
eW91dFVuaXQgYmxvY2tEZWx0YSA9ICAoaXNIb3Jpem9udGFsID8gY29sUmVjdC5oZWlnaHQoKSA6
IGNvbFJlY3Qud2lkdGgoKSk7CiAgICAgICAgIGlmIChjb2x1bW5CbG9jay0+c3R5bGUoKS0+aXNG
bGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkKICAgICAgICAgICAgIGN1cnJMb2dpY2FsVG9wT2Zm
c2V0ICs9IGJsb2NrRGVsdGE7CiAgICAgICAgIGVsc2UKQEAgLTMyNTMsMjAgKzMyNTMsMjAgQEAg
UmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0Q2hpbGRMYQogICAgIH0KICAgICBmb3Ig
KGkgPSBjb2xDb3VudCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgIC8vIEZvciBlYWNoIHJl
Y3QsIHdlIGNsaXAgdG8gdGhlIHJlY3QsIGFuZCB0aGVuIHdlIGFkanVzdCBvdXIgY29vcmRzLgot
ICAgICAgICBJbnRSZWN0IGNvbFJlY3QgPSBjb2x1bW5CbG9jay0+Y29sdW1uUmVjdEF0KGNvbElu
Zm8sIGkpOworICAgICAgICBMYXlvdXRSZWN0IGNvbFJlY3QgPSBjb2x1bW5CbG9jay0+Y29sdW1u
UmVjdEF0KGNvbEluZm8sIGkpOwogICAgICAgICBjb2x1bW5CbG9jay0+ZmxpcEZvcldyaXRpbmdN
b2RlKGNvbFJlY3QpOwotICAgICAgICBpbnQgY3VyckxvZ2ljYWxMZWZ0T2Zmc2V0ID0gKGlzSG9y
aXpvbnRhbCA/IGNvbFJlY3QueCgpIDogY29sUmVjdC55KCkpIC0gbG9naWNhbExlZnQ7Ci0gICAg
ICAgIGludCBibG9ja0RlbHRhID0gIChpc0hvcml6b250YWwgPyBjb2xSZWN0LmhlaWdodCgpIDog
Y29sUmVjdC53aWR0aCgpKTsKKyAgICAgICAgTGF5b3V0VW5pdCBjdXJyTG9naWNhbExlZnRPZmZz
ZXQgPSAoaXNIb3Jpem9udGFsID8gY29sUmVjdC54KCkgOiBjb2xSZWN0LnkoKSkgLSBsb2dpY2Fs
TGVmdDsKKyAgICAgICAgTGF5b3V0VW5pdCBibG9ja0RlbHRhID0gIChpc0hvcml6b250YWwgPyBj
b2xSZWN0LmhlaWdodCgpIDogY29sUmVjdC53aWR0aCgpKTsKICAgICAgICAgaWYgKGNvbHVtbkJs
b2NrLT5zdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKQogICAgICAgICAgICAg
Y3VyckxvZ2ljYWxUb3BPZmZzZXQgLT0gYmxvY2tEZWx0YTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgY3VyckxvZ2ljYWxUb3BPZmZzZXQgKz0gYmxvY2tEZWx0YTsKICAgICAgICAgY29sUmVj
dC5tb3ZlQnkobGF5ZXJPZmZzZXQpOwogCi0gICAgICAgIEludFJlY3QgbG9jYWxDbGlwUmVjdCho
aXRUZXN0UmVjdCk7CisgICAgICAgIExheW91dFJlY3QgbG9jYWxDbGlwUmVjdChoaXRUZXN0UmVj
dCk7CiAgICAgICAgIGxvY2FsQ2xpcFJlY3QuaW50ZXJzZWN0KGNvbFJlY3QpOwogICAgICAgICAK
LSAgICAgICAgSW50U2l6ZSBvZmZzZXQgPSBpc0hvcml6b250YWwgPyBJbnRTaXplKGN1cnJMb2dp
Y2FsTGVmdE9mZnNldCwgY3VyckxvZ2ljYWxUb3BPZmZzZXQpIDogSW50U2l6ZShjdXJyTG9naWNh
bFRvcE9mZnNldCwgY3VyckxvZ2ljYWxMZWZ0T2Zmc2V0KTsKKyAgICAgICAgTGF5b3V0U2l6ZSBv
ZmZzZXQgPSBpc0hvcml6b250YWwgPyBMYXlvdXRTaXplKGN1cnJMb2dpY2FsTGVmdE9mZnNldCwg
Y3VyckxvZ2ljYWxUb3BPZmZzZXQpIDogTGF5b3V0U2l6ZShjdXJyTG9naWNhbFRvcE9mZnNldCwg
Y3VyckxvZ2ljYWxMZWZ0T2Zmc2V0KTsKIAogICAgICAgICBpZiAoIWxvY2FsQ2xpcFJlY3QuaXNF
bXB0eSgpICYmIGxvY2FsQ2xpcFJlY3QuaW50ZXJzZWN0cyhyZXN1bHQucmVjdEZvclBvaW50KGhp
dFRlc3RQb2ludCkpKSB7CiAgICAgICAgICAgICBSZW5kZXJMYXllciogaGl0TGF5ZXIgPSAwOwpA
QCAtMzI5MSw4ICszMjkxLDggQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0Q2hp
bGRMYQogICAgICAgICAgICAgICAgIFJlbmRlckxheWVyKiBuZXh0TGF5ZXIgPSBjb2x1bW5MYXll
cnNbY29sdW1uSW5kZXggLSAxXTsKICAgICAgICAgICAgICAgICBSZWZQdHI8SGl0VGVzdGluZ1Ry
YW5zZm9ybVN0YXRlPiBuZXdUcmFuc2Zvcm1TdGF0ZSA9IG5leHRMYXllci0+Y3JlYXRlTG9jYWxU
cmFuc2Zvcm1TdGF0ZShyb290TGF5ZXIsIG5leHRMYXllciwgbG9jYWxDbGlwUmVjdCwgaGl0VGVz
dFBvaW50LCB0cmFuc2Zvcm1TdGF0ZSk7CiAgICAgICAgICAgICAgICAgbmV3VHJhbnNmb3JtU3Rh
dGUtPnRyYW5zbGF0ZShvZmZzZXQud2lkdGgoKSwgb2Zmc2V0LmhlaWdodCgpLCBIaXRUZXN0aW5n
VHJhbnNmb3JtU3RhdGU6OkFjY3VtdWxhdGVUcmFuc2Zvcm0pOwotICAgICAgICAgICAgICAgIElu
dFBvaW50IGxvY2FsUG9pbnQgPSByb3VuZGVkSW50UG9pbnQobmV3VHJhbnNmb3JtU3RhdGUtPm1h
cHBlZFBvaW50KCkpOwotICAgICAgICAgICAgICAgIEludFJlY3QgbG9jYWxIaXRUZXN0UmVjdCA9
IG5ld1RyYW5zZm9ybVN0YXRlLT5tYXBwZWRRdWFkKCkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsK
KyAgICAgICAgICAgICAgICBMYXlvdXRQb2ludCBsb2NhbFBvaW50ID0gdG9MYXlvdXRQb2ludChu
ZXdUcmFuc2Zvcm1TdGF0ZS0+bWFwcGVkUG9pbnQoKSk7CisgICAgICAgICAgICAgICAgTGF5b3V0
UmVjdCBsb2NhbEhpdFRlc3RSZWN0ID0gbmV3VHJhbnNmb3JtU3RhdGUtPm1hcHBlZFF1YWQoKS5l
bmNsb3NpbmdCb3VuZGluZ0JveCgpOwogICAgICAgICAgICAgICAgIG5ld1RyYW5zZm9ybVN0YXRl
LT5mbGF0dGVuKCk7CiAKICAgICAgICAgICAgICAgICBoaXRMYXllciA9IGhpdFRlc3RDaGlsZExh
eWVyQ29sdW1ucyhjaGlsZExheWVyLCBjb2x1bW5MYXllcnNbY29sdW1uSW5kZXggLSAxXSwgcmVx
dWVzdCwgcmVzdWx0LCBsb2NhbEhpdFRlc3RSZWN0LCBsb2NhbFBvaW50LApAQCAtMzQyMiw4ICsz
NDIyLDggQEAgSW50UmVjdCBSZW5kZXJMYXllcjo6YmFja2dyb3VuZENsaXBSZWN0KAogICAgIHJl
dHVybiBiYWNrZ3JvdW5kUmVjdDsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlUmVj
dHMoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0
eVJlY3QsIEludFJlY3QmIGxheWVyQm91bmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSW50UmVjdCYgYmFja2dyb3VuZFJlY3QsIEludFJlY3QmIGZvcmVncm91bmRSZWN0LCBJ
bnRSZWN0JiBvdXRsaW5lUmVjdCwgYm9vbCB0ZW1wb3JhcnlDbGlwUmVjdHMsCit2b2lkIFJlbmRl
ckxheWVyOjpjYWxjdWxhdGVSZWN0cyhjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBjb25z
dCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgTGF5b3V0UmVjdCYgbGF5ZXJCb3VuZHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0JiBiYWNrZ3JvdW5kUmVj
dCwgTGF5b3V0UmVjdCYgZm9yZWdyb3VuZFJlY3QsIExheW91dFJlY3QmIG91dGxpbmVSZWN0LCBi
b29sIHRlbXBvcmFyeUNsaXBSZWN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5IHJlbGV2YW5jeSkgY29uc3QKIHsKICAgICBp
ZiAocm9vdExheWVyICE9IHRoaXMgJiYgcGFyZW50KCkpIHsKQEAgLTM0MzUsOSArMzQzNSw5IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZVJlY3RzKGNvbnN0IFIKICAgICBmb3JlZ3JvdW5k
UmVjdCA9IGJhY2tncm91bmRSZWN0OwogICAgIG91dGxpbmVSZWN0ID0gYmFja2dyb3VuZFJlY3Q7
CiAgICAgCi0gICAgSW50UG9pbnQgb2Zmc2V0OworICAgIExheW91dFBvaW50IG9mZnNldDsKICAg
ICBjb252ZXJ0VG9MYXllckNvb3Jkcyhyb290TGF5ZXIsIG9mZnNldCk7Ci0gICAgbGF5ZXJCb3Vu
ZHMgPSBJbnRSZWN0KG9mZnNldCwgc2l6ZSgpKTsKKyAgICBsYXllckJvdW5kcyA9IExheW91dFJl
Y3Qob2Zmc2V0LCBzaXplKCkpOwogICAgIAogICAgIC8vIFVwZGF0ZSB0aGUgY2xpcCByZWN0cyB0
aGF0IHdpbGwgYmUgcGFzc2VkIHRvIGNoaWxkIGxheWVycy4KICAgICBpZiAocmVuZGVyZXIoKS0+
aGFzT3ZlcmZsb3dDbGlwKCkgfHwgcmVuZGVyZXIoKS0+aGFzQ2xpcCgpKSB7CkBAIC0zNDQ2LDcg
KzM0NDYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjYWxjdWxhdGVSZWN0cyhjb25zdCBSCiAgICAg
ICAgICAgICBmb3JlZ3JvdW5kUmVjdC5pbnRlcnNlY3QodG9SZW5kZXJCb3gocmVuZGVyZXIoKSkt
Pm92ZXJmbG93Q2xpcFJlY3Qob2Zmc2V0LCByZWxldmFuY3kpKTsKICAgICAgICAgaWYgKHJlbmRl
cmVyKCktPmhhc0NsaXAoKSkgewogICAgICAgICAgICAgLy8gQ2xpcCBhcHBsaWVzIHRvICp1cyog
YXMgd2VsbCwgc28gZ28gYWhlYWQgYW5kIHVwZGF0ZSB0aGUgZGFtYWdlUmVjdC4KLSAgICAgICAg
ICAgIEludFJlY3QgbmV3UG9zQ2xpcCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLT5jbGlwUmVj
dChvZmZzZXQpOworICAgICAgICAgICAgTGF5b3V0UmVjdCBuZXdQb3NDbGlwID0gdG9SZW5kZXJC
b3gocmVuZGVyZXIoKSktPmNsaXBSZWN0KG9mZnNldCk7CiAgICAgICAgICAgICBiYWNrZ3JvdW5k
UmVjdC5pbnRlcnNlY3QobmV3UG9zQ2xpcCk7CiAgICAgICAgICAgICBmb3JlZ3JvdW5kUmVjdC5p
bnRlcnNlY3QobmV3UG9zQ2xpcCk7CiAgICAgICAgICAgICBvdXRsaW5lUmVjdC5pbnRlcnNlY3Qo
bmV3UG9zQ2xpcCk7CkBAIC0zNDU3LDcgKzM0NTcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjYWxj
dWxhdGVSZWN0cyhjb25zdCBSCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIGNoYW5n
ZWQgdG8ganVzdCB1c2UgZ2VuZXJpYyB2aXN1YWwgb3ZlcmZsb3cuCiAgICAgICAgIC8vIFNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc0NjcgZm9yIG1vcmUgaW5m
b3JtYXRpb24uCiAgICAgICAgIGlmIChjb25zdCBTaGFkb3dEYXRhKiBib3hTaGFkb3cgPSByZW5k
ZXJlcigpLT5zdHlsZSgpLT5ib3hTaGFkb3coKSkgewotICAgICAgICAgICAgSW50UmVjdCBvdmVy
ZmxvdyA9IGxheWVyQm91bmRzOworICAgICAgICAgICAgTGF5b3V0UmVjdCBvdmVyZmxvdyA9IGxh
eWVyQm91bmRzOwogICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgIGlmIChib3hTaGFk
b3ctPnN0eWxlKCkgPT0gTm9ybWFsKSB7CiAgICAgICAgICAgICAgICAgICAgIEludFJlY3Qgc2hh
ZG93UmVjdCA9IGxheWVyQm91bmRzOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgJKHJldmlzaW9uIDg5OTgzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2Niw4ICszNjYsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gVGhpcyBtZXRob2QgZmlndXJlcyBvdXQgb3VyIGxheWVyQm91bmRzIGluIGNvb3JkaW5h
dGVzIHJlbGF0aXZlIHRvCiAgICAgLy8gfHJvb3RMYXllcn0uICBJdCBhbHNvIGNvbXB1dGVzIG91
ciBiYWNrZ3JvdW5kIGFuZCBmb3JlZ3JvdW5kIGNsaXAgcmVjdHMKICAgICAvLyBmb3IgcGFpbnRp
bmcvZXZlbnQgaGFuZGxpbmcuCi0gICAgdm9pZCBjYWxjdWxhdGVSZWN0cyhjb25zdCBSZW5kZXJM
YXllciogcm9vdExheWVyLCBjb25zdCBJbnRSZWN0JiBwYWludERpcnR5UmVjdCwgSW50UmVjdCYg
bGF5ZXJCb3VuZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnRSZWN0JiBiYWNrZ3JvdW5k
UmVjdCwgSW50UmVjdCYgZm9yZWdyb3VuZFJlY3QsIEludFJlY3QmIG91dGxpbmVSZWN0LCBib29s
IHRlbXBvcmFyeUNsaXBSZWN0cyA9IGZhbHNlLAorICAgIHZvaWQgY2FsY3VsYXRlUmVjdHMoY29u
c3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0eVJl
Y3QsIExheW91dFJlY3QmIGxheWVyQm91bmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgTGF5
b3V0UmVjdCYgYmFja2dyb3VuZFJlY3QsIExheW91dFJlY3QmIGZvcmVncm91bmRSZWN0LCBMYXlv
dXRSZWN0JiBvdXRsaW5lUmVjdCwgYm9vbCB0ZW1wb3JhcnlDbGlwUmVjdHMgPSBmYWxzZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5ID0gSWdu
b3JlT3ZlcmxheVNjcm9sbGJhclNpemUpIGNvbnN0OwogCiAgICAgLy8gQ29tcHV0ZSBhbmQgY2Fj
aGUgY2xpcCByZWN0cyBjb21wdXRlZCB3aXRoIHRoZSBnaXZlbiBsYXllciBhcyB0aGUgcm9vdApA
QCAtNDk4LDIyICs0OTgsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBhaW50TGF5ZXJGbGFncywgY29uc3QgVmVjdG9yPFJlbmRlckxheWVyKj4mIGNv
bHVtbkxheWVycywgc2l6ZV90IGNvbHVtbkluZGV4KTsKIAogICAgIFJlbmRlckxheWVyKiBoaXRU
ZXN0TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnRhaW5lckxh
eWVyLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgaGl0VGVzdFJl
Y3QsIGNvbnN0IEludFBvaW50JiBoaXRUZXN0UG9pbnQsIGJvb2wgYXBwbGllZFRyYW5zZm9ybSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExheW91dFJlY3QmIGhpdFRlc3RS
ZWN0LCBjb25zdCBMYXlvdXRQb2ludCYgaGl0VGVzdFBvaW50LCBib29sIGFwcGxpZWRUcmFuc2Zv
cm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBIaXRUZXN0aW5nVHJhbnNm
b3JtU3RhdGUqIHRyYW5zZm9ybVN0YXRlID0gMCwgZG91YmxlKiB6T2Zmc2V0ID0gMCk7CiAgICAg
UmVuZGVyTGF5ZXIqIGhpdFRlc3RMaXN0KFZlY3RvcjxSZW5kZXJMYXllcio+KiwgUmVuZGVyTGF5
ZXIqIHJvb3RMYXllciwgY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1
bHQmIHJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYg
aGl0VGVzdFJlY3QsIGNvbnN0IEludFBvaW50JiBoaXRUZXN0UG9pbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IExheW91dFJlY3QmIGhpdFRlc3RSZWN0LCBjb25zdCBMYXlv
dXRQb2ludCYgaGl0VGVzdFBvaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUqIHRyYW5zZm9ybVN0YXRlLCBkb3VibGUqIHpPZmZz
ZXRGb3JEZXNjZW5kYW50cywgZG91YmxlKiB6T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUqIHVuZmxhdHRlbmVkVHJhbnNm
b3JtU3RhdGUsIGJvb2wgZGVwdGhTb3J0RGVzY2VuZGFudHMpOwogICAgIFJlbmRlckxheWVyKiBo
aXRUZXN0UGFnaW5hdGVkQ2hpbGRMYXllcihSZW5kZXJMYXllciogY2hpbGRMYXllciwgUmVuZGVy
TGF5ZXIqIHJvb3RMYXllciwgY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RS
ZXN1bHQmIHJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgSW50UmVjdCYgaGl0VGVzdFJlY3QsIGNvbnN0IEludFBvaW50JiBoaXRUZXN0UG9p
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExh
eW91dFJlY3QmIGhpdFRlc3RSZWN0LCBjb25zdCBMYXlvdXRQb2ludCYgaGl0VGVzdFBvaW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBIaXRUZXN0
aW5nVHJhbnNmb3JtU3RhdGUqIHRyYW5zZm9ybVN0YXRlLCBkb3VibGUqIHpPZmZzZXQpOwogICAg
IFJlbmRlckxheWVyKiBoaXRUZXN0Q2hpbGRMYXllckNvbHVtbnMoUmVuZGVyTGF5ZXIqIGNoaWxk
TGF5ZXIsIFJlbmRlckxheWVyKiByb290TGF5ZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1
ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSW50UG9pbnQm
IGhpdFRlc3RQb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IExheW91dFJlY3QmIGhpdFRlc3RSZWN0LCBjb25zdCBMYXlvdXRQb2ludCYgaGl0VGVz
dFBvaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
SGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiB0cmFuc2Zvcm1TdGF0ZSwgZG91YmxlKiB6T2Zmc2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9y
PFJlbmRlckxheWVyKj4mIGNvbHVtbkxheWVycywgc2l6ZV90IGNvbHVtbkluZGV4KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgIFBhc3NSZWZQdHI8SGl0VGVzdGlu
Z1RyYW5zZm9ybVN0YXRlPiBjcmVhdGVMb2NhbFRyYW5zZm9ybVN0YXRlKFJlbmRlckxheWVyKiBy
b290TGF5ZXIsIFJlbmRlckxheWVyKiBjb250YWluZXJMYXllciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSW50UG9pbnQmIGhp
dFRlc3RQb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRSZWN0
JiBoaXRUZXN0UmVjdCwgY29uc3QgTGF5b3V0UG9pbnQmIGhpdFRlc3RQb2ludCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUqIGNvbnRh
aW5lclRyYW5zZm9ybVN0YXRlKSBjb25zdDsKICAgICAKICAgICBib29sIGhpdFRlc3RDb250ZW50
cyhjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBJbnRSZWN0JiBs
YXllckJvdW5kcywgY29uc3QgSW50UG9pbnQmIGhpdFRlc3RQb2ludCwgSGl0VGVzdEZpbHRlcikg
Y29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99362</attachid>
            <date>2011-06-30 13:37:07 -0700</date>
            <delta_ts>2011-07-06 13:20:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63640-20110630133706.patch</filename>
            <type>text/plain</type>
            <size>17855</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwMTU0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDYtMzAgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFN3aXRjaCBSZW5kZXJMYXllcjo6aGl0VGVzdCogdG8gdG8gbmV3
IGxheW91dCB0eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjM2NDAKKworICAgICAgICBTd2l0Y2ggaGl0IHRlc3RpbmcgYW5kIHN1cHBvcnRpbmcg
bWV0aG9kcyBmb3IgUmVuZGVyTGF5ZXIgb3ZlciB0byB0aGUgbmV3CisgICAgICAgIGxheW91dCB1
bml0IGFic3RyYWN0aW9uLgorICAgICAgICAKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5j
dGlvbmFsaXR5IGNoYW5nZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvTGF5b3V0VHlwZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OnJvdW5kZWRMYXlvdXRQb2ludCk6CisgICAgICAgIEFkZCByb3Vu
ZGVkTGF5b3V0UG9pbnQgYWJzdHJhY3Rpb24sIGNhbGxzIHJvdW5kZWRJbnRQb2ludCBub3cgYnV0
IHdpbGwgYmUgYQorICAgICAgICBuby1vcCAoYW5kIGV2ZW50dWFsbHkgZ28gYXdheSkgb25jZSB3
ZSBzd2l0Y2ggdG8gZmxvYXQgb3IgZml4ZWQgcG9pbnQuCisgICAgICAgIAorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
Y3JlYXRlTG9jYWxUcmFuc2Zvcm1TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6aGl0VGVzdExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0
TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdFBhZ2luYXRlZENo
aWxkTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RDaGlsZExh
eWVyQ29sdW1ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2FsY3VsYXRlUmVj
dHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorCiAyMDExLTA2LTMwICBQ
YXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQgYnVpbGQgZml4IGZvciAhRU5BQkxFKERBVEFCQVNFKSBhZnRlciByODQ3ODkuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0VHlwZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0VHlwZXMuaAkocmV2aXNpb24gOTAxNTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0VHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNiArMzYsNyBAQAogI2lmbmRlZiBMYXlvdXRUeXBlc19oCiAjZGVmaW5lIExheW91dFR5cGVz
X2gKIAorI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ1LDYgKzQ2LDExIEBAIHR5cGVkZWYgSW50UG9pbnQgTGF5
b3V0UG9pbnQ7CiB0eXBlZGVmIEludFNpemUgTGF5b3V0U2l6ZTsKIHR5cGVkZWYgSW50UmVjdCBM
YXlvdXRSZWN0OwogCitpbmxpbmUgTGF5b3V0UG9pbnQgcm91bmRlZExheW91dFBvaW50KEZsb2F0
UG9pbnQgcG9pbnQpCit7CisgICAgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChwb2ludCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIExheW91dFR5cGVzX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gOTAxNTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOTEyLDExICsyOTEyLDExIEBAIHN0YXRpYyBkb3VibGUgY29tcHV0ZVpPZmZzZXQo
Y29uc3QgSGl0VGUKIH0KIAogUGFzc1JlZlB0cjxIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGU+IFJl
bmRlckxheWVyOjpjcmVhdGVMb2NhbFRyYW5zZm9ybVN0YXRlKFJlbmRlckxheWVyKiByb290TGF5
ZXIsIFJlbmRlckxheWVyKiBjb250YWluZXJMYXllciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBJbnRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSW50UG9p
bnQmIGhpdFRlc3RQb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBMYXlvdXRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgTGF5b3V0UG9pbnQmIGhpdFRl
c3RQb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBI
aXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUqIGNvbnRhaW5lclRyYW5zZm9ybVN0YXRlKSBjb25zdAog
ewogICAgIFJlZlB0cjxIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGU+IHRyYW5zZm9ybVN0YXRlOwot
ICAgIEludFBvaW50IG9mZnNldDsKKyAgICBMYXlvdXRQb2ludCBvZmZzZXQ7CiAgICAgaWYgKGNv
bnRhaW5lclRyYW5zZm9ybVN0YXRlKSB7CiAgICAgICAgIC8vIElmIHdlJ3JlIGFscmVhZHkgY29t
cHV0aW5nIHRyYW5zZm9ybSBzdGF0ZSwgdGhlbiBpdCdzIHJlbGF0aXZlIHRvIHRoZSBjb250YWlu
ZXIgKHdoaWNoIHdlIGtub3cgaXMgbm9uLW51bGwpLgogICAgICAgICB0cmFuc2Zvcm1TdGF0ZSA9
IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZTo6Y3JlYXRlKCpjb250YWluZXJUcmFuc2Zvcm1TdGF0
ZSk7CkBAIC0yOTc0LDcgKzI5NzQsNyBAQCBzdGF0aWMgYm9vbCBpc0hpdENhbmRpZGF0ZShjb25z
dCBSZW5kZXJMCiAvLyBJZiB6T2Zmc2V0IGlzIG5vbi1udWxsICh3aGljaCBpbmRpY2F0ZXMgdGhh
dCB0aGUgY2FsbGVyIHdhbnRzIHogb2Zmc2V0IGluZm9ybWF0aW9uKSwgCiAvLyAgKnpPZmZzZXQg
b24gcmV0dXJuIGlzIHRoZSB6IG9mZnNldCBvZiB0aGUgaGl0IHBvaW50IHJlbGF0aXZlIHRvIHRo
ZSBjb250YWluaW5nIGZsYXR0ZW5pbmcgbGF5ZXIuCiBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6
OmhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllciogY29udGFp
bmVyTGF5ZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiBy
ZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRS
ZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSW50UG9pbnQmIGhpdFRlc3RQb2ludCwgYm9vbCBhcHBs
aWVkVHJhbnNmb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgTGF5b3V0UmVjdCYgaGl0VGVzdFJlY3QsIGNvbnN0IExheW91dFBvaW50JiBoaXRUZXN0UG9p
bnQsIGJvb2wgYXBwbGllZFRyYW5zZm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZSogdHJhbnNmb3JtU3RhdGUs
IGRvdWJsZSogek9mZnNldCkKIHsKICAgICAvLyBUaGUgbmF0dXJhbCB0aGluZyB3b3VsZCBiZSB0
byBrZWVwIEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZSBvbiB0aGUgc3RhY2ssIGJ1dCBpdCdzIGJp
Zywgc28gd2UgaGVhcC1hbGxvY2F0ZS4KQEAgLTI5ODUsNyArMjk4NSw3IEBAIFJlbmRlckxheWVy
KiBSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKFIKICNlbmRpZgogICAgIHVzZVRlbXBvcmFyeUNs
aXBSZWN0cyB8PSByZW5kZXJlcigpLT52aWV3KCktPmZyYW1lVmlldygpLT5jb250YWluc1Njcm9s
bGFibGVBcmVhV2l0aE92ZXJsYXlTY3JvbGxiYXJzKCk7CiAKLSAgICBJbnRSZWN0IGhpdFRlc3RB
cmVhID0gcmVzdWx0LnJlY3RGb3JQb2ludChoaXRUZXN0UG9pbnQpOworICAgIExheW91dFJlY3Qg
aGl0VGVzdEFyZWEgPSByZXN1bHQucmVjdEZvclBvaW50KGhpdFRlc3RQb2ludCk7CiAKICAgICAv
LyBBcHBseSBhIHRyYW5zZm9ybSBpZiB3ZSBoYXZlIG9uZS4KICAgICBpZiAodHJhbnNmb3JtKCkg
JiYgIWFwcGxpZWRUcmFuc2Zvcm0pIHsKQEAgLTMwMTAsOCArMzAxMCw4IEBAIFJlbmRlckxheWVy
KiBSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKFIKICAgICAgICAgLy8KICAgICAgICAgLy8gV2Ug
Y2FuJ3QganVzdCBtYXAgaGl0VGVzdFBvaW50IGFuZCBoaXRUZXN0UmVjdCBiZWNhdXNlIHRoZXkg
bWF5IGhhdmUgYmVlbiBmbGF0dGVuZWQgKGxvc2luZyB6KQogICAgICAgICAvLyBieSBvdXIgY29u
dGFpbmVyLgotICAgICAgICBJbnRQb2ludCBsb2NhbFBvaW50ID0gcm91bmRlZEludFBvaW50KG5l
d1RyYW5zZm9ybVN0YXRlLT5tYXBwZWRQb2ludCgpKTsKLSAgICAgICAgSW50UmVjdCBsb2NhbEhp
dFRlc3RSZWN0OworICAgICAgICBMYXlvdXRQb2ludCBsb2NhbFBvaW50ID0gcm91bmRlZExheW91
dFBvaW50KG5ld1RyYW5zZm9ybVN0YXRlLT5tYXBwZWRQb2ludCgpKTsKKyAgICAgICAgTGF5b3V0
UmVjdCBsb2NhbEhpdFRlc3RSZWN0OwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
ICAgICAgICAgaWYgKGlzQ29tcG9zaXRlZCgpKSB7CiAgICAgICAgICAgICAvLyBJdCBkb2Vzbid0
IG1ha2Ugc2Vuc2UgdG8gcHJvamVjdCBoaXRUZXN0UmVjdCBpbnRvIHRoZSBwbGFuZSBvZiB0aGlz
IGxheWVyLCBzbyB1c2UgdGhlIHNhbWUgYm91bmRzIHdlIHVzZSBmb3IgcGFpbnRpbmcuCkBAIC0z
MDU1LDEwICszMDU1LDEwIEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdExheWVy
KFIKICAgICB9CiAgICAgCiAgICAgLy8gQ2FsY3VsYXRlIHRoZSBjbGlwIHJlY3RzIHdlIHNob3Vs
ZCB1c2UuCi0gICAgSW50UmVjdCBsYXllckJvdW5kczsKLSAgICBJbnRSZWN0IGJnUmVjdDsKLSAg
ICBJbnRSZWN0IGZnUmVjdDsKLSAgICBJbnRSZWN0IG91dGxpbmVSZWN0OworICAgIExheW91dFJl
Y3QgbGF5ZXJCb3VuZHM7CisgICAgTGF5b3V0UmVjdCBiZ1JlY3Q7CisgICAgTGF5b3V0UmVjdCBm
Z1JlY3Q7CisgICAgTGF5b3V0UmVjdCBvdXRsaW5lUmVjdDsKICAgICBjYWxjdWxhdGVSZWN0cyhy
b290TGF5ZXIsIGhpdFRlc3RSZWN0LCBsYXllckJvdW5kcywgYmdSZWN0LCBmZ1JlY3QsIG91dGxp
bmVSZWN0LCB1c2VUZW1wb3JhcnlDbGlwUmVjdHMsIEluY2x1ZGVPdmVybGF5U2Nyb2xsYmFyU2l6
ZSk7CiAgICAgCiAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgdXNlZCBmb3Iga2VlcGluZyB0cmFj
ayBvZiB0aGUgei1kZXB0aCBvZiB0aGUgaGl0IHBvaW50IG9mIDNkLXRyYW5zZm9ybWVkCkBAIC0z
MTgwLDcgKzMxODAsNyBAQCBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0Q29udGVudHMoY29uc3Qg
CiAKIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdExpc3QoVmVjdG9yPFJlbmRlckxh
eWVyKj4qIGxpc3QsIFJlbmRlckxheWVyKiByb290TGF5ZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdWx0JiByZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEludFJlY3QmIGhpdFRlc3RSZWN0LCBjb25zdCBJbnRQb2ludCYgaGl0VGVzdFBvaW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBo
aXRUZXN0UmVjdCwgY29uc3QgTGF5b3V0UG9pbnQmIGhpdFRlc3RQb2ludCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRl
KiB0cmFuc2Zvcm1TdGF0ZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRvdWJsZSogek9mZnNldEZvckRlc2NlbmRhbnRzLCBkb3VibGUqIHpPZmZzZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEhpdFRlc3RpbmdUcmFuc2Zvcm1T
dGF0ZSogdW5mbGF0dGVuZWRUcmFuc2Zvcm1TdGF0ZSwKQEAgLTMyMTcsNyArMzIxNyw3IEBAIFJl
bmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdExpc3QoVmUKIH0KIAogUmVuZGVyTGF5ZXIq
IFJlbmRlckxheWVyOjpoaXRUZXN0UGFnaW5hdGVkQ2hpbGRMYXllcihSZW5kZXJMYXllciogY2hp
bGRMYXllciwgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJl
cXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgaGl0VGVzdFJlY3QsIGNv
bnN0IEludFBvaW50JiBoaXRUZXN0UG9pbnQsIGNvbnN0IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0
ZSogdHJhbnNmb3JtU3RhdGUsIGRvdWJsZSogek9mZnNldCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYgaGl0VGVz
dFJlY3QsIGNvbnN0IExheW91dFBvaW50JiBoaXRUZXN0UG9pbnQsIGNvbnN0IEhpdFRlc3RpbmdU
cmFuc2Zvcm1TdGF0ZSogdHJhbnNmb3JtU3RhdGUsIGRvdWJsZSogek9mZnNldCkKIHsKICAgICBW
ZWN0b3I8UmVuZGVyTGF5ZXIqPiBjb2x1bW5MYXllcnM7CiAgICAgUmVuZGVyTGF5ZXIqIGFuY2Vz
dG9yTGF5ZXIgPSBpc05vcm1hbEZsb3dPbmx5KCkgPyBwYXJlbnQoKSA6IHN0YWNraW5nQ29udGV4
dCgpOwpAQCAtMzIzNCw3ICszMjM0LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRU
ZXN0UGFnaW5hdAogfQogCiBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RDaGlsZExh
eWVyQ29sdW1ucyhSZW5kZXJMYXllciogY2hpbGRMYXllciwgUmVuZGVyTGF5ZXIqIHJvb3RMYXll
ciwgY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEludFJlY3QmIGhpdFRlc3RSZWN0LCBjb25zdCBJbnRQb2ludCYgaGl0VGVzdFBvaW50LCBjb25z
dCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUqIHRyYW5zZm9ybVN0YXRlLCBkb3VibGUqIHpPZmZz
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBMYXlvdXRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgTGF5b3V0UG9pbnQmIGhpdFRlc3RQ
b2ludCwgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiB0cmFuc2Zvcm1TdGF0ZSwgZG91
YmxlKiB6T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVmVjdG9yPFJlbmRlckxheWVyKj4mIGNvbHVtbkxheWVycywgc2l6ZV90
IGNvbHVtbkluZGV4KQogewogICAgIFJlbmRlckJsb2NrKiBjb2x1bW5CbG9jayA9IHRvUmVuZGVy
QmxvY2soY29sdW1uTGF5ZXJzW2NvbHVtbkluZGV4XS0+cmVuZGVyZXIoKSk7CkBAIC0zMjQzLDcg
KzMyNDMsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RDaGlsZExhCiAgICAg
aWYgKCFjb2x1bW5CbG9jayB8fCAhY29sdW1uQmxvY2stPmhhc0NvbHVtbnMoKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBJbnRQb2ludCBsYXllck9mZnNldDsKKyAgICBMYXlvdXRQb2ludCBs
YXllck9mZnNldDsKICAgICBjb2x1bW5CbG9jay0+bGF5ZXIoKS0+Y29udmVydFRvTGF5ZXJDb29y
ZHMocm9vdExheWVyLCBsYXllck9mZnNldCk7CiAgICAgCiAgICAgQ29sdW1uSW5mbyogY29sSW5m
byA9IGNvbHVtbkJsb2NrLT5jb2x1bW5JbmZvKCk7CkBAIC0zMjUxLDEyICszMjUxLDEyIEBAIFJl
bmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdENoaWxkTGEKICAgICAKICAgICAvLyBXZSBo
YXZlIHRvIGdvIGJhY2t3YXJkcyBmcm9tIHRoZSBsYXN0IGNvbHVtbiB0byB0aGUgZmlyc3QuCiAg
ICAgYm9vbCBpc0hvcml6b250YWwgPSBjb2x1bW5CbG9jay0+c3R5bGUoKS0+aXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKTsKLSAgICBpbnQgbG9naWNhbExlZnQgPSBjb2x1bW5CbG9jay0+bG9naWNh
bExlZnRPZmZzZXRGb3JDb250ZW50KCk7Ci0gICAgaW50IGN1cnJMb2dpY2FsVG9wT2Zmc2V0ID0g
MDsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0ID0gY29sdW1uQmxvY2stPmxvZ2ljYWxMZWZ0
T2Zmc2V0Rm9yQ29udGVudCgpOworICAgIExheW91dFVuaXQgY3VyckxvZ2ljYWxUb3BPZmZzZXQg
PSAwOwogICAgIGludCBpOwogICAgIGZvciAoaSA9IDA7IGkgPCBjb2xDb3VudDsgaSsrKSB7Ci0g
ICAgICAgIEludFJlY3QgY29sUmVjdCA9IGNvbHVtbkJsb2NrLT5jb2x1bW5SZWN0QXQoY29sSW5m
bywgaSk7Ci0gICAgICAgIGludCBibG9ja0RlbHRhID0gIChpc0hvcml6b250YWwgPyBjb2xSZWN0
LmhlaWdodCgpIDogY29sUmVjdC53aWR0aCgpKTsKKyAgICAgICAgTGF5b3V0UmVjdCBjb2xSZWN0
ID0gY29sdW1uQmxvY2stPmNvbHVtblJlY3RBdChjb2xJbmZvLCBpKTsKKyAgICAgICAgTGF5b3V0
VW5pdCBibG9ja0RlbHRhID0gIChpc0hvcml6b250YWwgPyBjb2xSZWN0LmhlaWdodCgpIDogY29s
UmVjdC53aWR0aCgpKTsKICAgICAgICAgaWYgKGNvbHVtbkJsb2NrLT5zdHlsZSgpLT5pc0ZsaXBw
ZWRCbG9ja3NXcml0aW5nTW9kZSgpKQogICAgICAgICAgICAgY3VyckxvZ2ljYWxUb3BPZmZzZXQg
Kz0gYmxvY2tEZWx0YTsKICAgICAgICAgZWxzZQpAQCAtMzI2NCwyMCArMzI2NCwyMCBAQCBSZW5k
ZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RDaGlsZExhCiAgICAgfQogICAgIGZvciAoaSA9
IGNvbENvdW50IC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgLy8gRm9yIGVhY2ggcmVjdCwg
d2UgY2xpcCB0byB0aGUgcmVjdCwgYW5kIHRoZW4gd2UgYWRqdXN0IG91ciBjb29yZHMuCi0gICAg
ICAgIEludFJlY3QgY29sUmVjdCA9IGNvbHVtbkJsb2NrLT5jb2x1bW5SZWN0QXQoY29sSW5mbywg
aSk7CisgICAgICAgIExheW91dFJlY3QgY29sUmVjdCA9IGNvbHVtbkJsb2NrLT5jb2x1bW5SZWN0
QXQoY29sSW5mbywgaSk7CiAgICAgICAgIGNvbHVtbkJsb2NrLT5mbGlwRm9yV3JpdGluZ01vZGUo
Y29sUmVjdCk7Ci0gICAgICAgIGludCBjdXJyTG9naWNhbExlZnRPZmZzZXQgPSAoaXNIb3Jpem9u
dGFsID8gY29sUmVjdC54KCkgOiBjb2xSZWN0LnkoKSkgLSBsb2dpY2FsTGVmdDsKLSAgICAgICAg
aW50IGJsb2NrRGVsdGEgPSAgKGlzSG9yaXpvbnRhbCA/IGNvbFJlY3QuaGVpZ2h0KCkgOiBjb2xS
ZWN0LndpZHRoKCkpOworICAgICAgICBMYXlvdXRVbml0IGN1cnJMb2dpY2FsTGVmdE9mZnNldCA9
IChpc0hvcml6b250YWwgPyBjb2xSZWN0LngoKSA6IGNvbFJlY3QueSgpKSAtIGxvZ2ljYWxMZWZ0
OworICAgICAgICBMYXlvdXRVbml0IGJsb2NrRGVsdGEgPSAgKGlzSG9yaXpvbnRhbCA/IGNvbFJl
Y3QuaGVpZ2h0KCkgOiBjb2xSZWN0LndpZHRoKCkpOwogICAgICAgICBpZiAoY29sdW1uQmxvY2st
PnN0eWxlKCktPmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpCiAgICAgICAgICAgICBjdXJy
TG9naWNhbFRvcE9mZnNldCAtPSBibG9ja0RlbHRhOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBjdXJyTG9naWNhbFRvcE9mZnNldCArPSBibG9ja0RlbHRhOwogICAgICAgICBjb2xSZWN0Lm1v
dmVCeShsYXllck9mZnNldCk7CiAKLSAgICAgICAgSW50UmVjdCBsb2NhbENsaXBSZWN0KGhpdFRl
c3RSZWN0KTsKKyAgICAgICAgTGF5b3V0UmVjdCBsb2NhbENsaXBSZWN0KGhpdFRlc3RSZWN0KTsK
ICAgICAgICAgbG9jYWxDbGlwUmVjdC5pbnRlcnNlY3QoY29sUmVjdCk7CiAgICAgICAgIAotICAg
ICAgICBJbnRTaXplIG9mZnNldCA9IGlzSG9yaXpvbnRhbCA/IEludFNpemUoY3VyckxvZ2ljYWxM
ZWZ0T2Zmc2V0LCBjdXJyTG9naWNhbFRvcE9mZnNldCkgOiBJbnRTaXplKGN1cnJMb2dpY2FsVG9w
T2Zmc2V0LCBjdXJyTG9naWNhbExlZnRPZmZzZXQpOworICAgICAgICBMYXlvdXRTaXplIG9mZnNl
dCA9IGlzSG9yaXpvbnRhbCA/IExheW91dFNpemUoY3VyckxvZ2ljYWxMZWZ0T2Zmc2V0LCBjdXJy
TG9naWNhbFRvcE9mZnNldCkgOiBMYXlvdXRTaXplKGN1cnJMb2dpY2FsVG9wT2Zmc2V0LCBjdXJy
TG9naWNhbExlZnRPZmZzZXQpOwogCiAgICAgICAgIGlmICghbG9jYWxDbGlwUmVjdC5pc0VtcHR5
KCkgJiYgbG9jYWxDbGlwUmVjdC5pbnRlcnNlY3RzKHJlc3VsdC5yZWN0Rm9yUG9pbnQoaGl0VGVz
dFBvaW50KSkpIHsKICAgICAgICAgICAgIFJlbmRlckxheWVyKiBoaXRMYXllciA9IDA7CkBAIC0z
MzAyLDggKzMzMDIsOCBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RDaGlsZExh
CiAgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIG5leHRMYXllciA9IGNvbHVtbkxheWVyc1tj
b2x1bW5JbmRleCAtIDFdOwogICAgICAgICAgICAgICAgIFJlZlB0cjxIaXRUZXN0aW5nVHJhbnNm
b3JtU3RhdGU+IG5ld1RyYW5zZm9ybVN0YXRlID0gbmV4dExheWVyLT5jcmVhdGVMb2NhbFRyYW5z
Zm9ybVN0YXRlKHJvb3RMYXllciwgbmV4dExheWVyLCBsb2NhbENsaXBSZWN0LCBoaXRUZXN0UG9p
bnQsIHRyYW5zZm9ybVN0YXRlKTsKICAgICAgICAgICAgICAgICBuZXdUcmFuc2Zvcm1TdGF0ZS0+
dHJhbnNsYXRlKG9mZnNldC53aWR0aCgpLCBvZmZzZXQuaGVpZ2h0KCksIEhpdFRlc3RpbmdUcmFu
c2Zvcm1TdGF0ZTo6QWNjdW11bGF0ZVRyYW5zZm9ybSk7Ci0gICAgICAgICAgICAgICAgSW50UG9p
bnQgbG9jYWxQb2ludCA9IHJvdW5kZWRJbnRQb2ludChuZXdUcmFuc2Zvcm1TdGF0ZS0+bWFwcGVk
UG9pbnQoKSk7Ci0gICAgICAgICAgICAgICAgSW50UmVjdCBsb2NhbEhpdFRlc3RSZWN0ID0gbmV3
VHJhbnNmb3JtU3RhdGUtPm1hcHBlZFF1YWQoKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOworICAg
ICAgICAgICAgICAgIExheW91dFBvaW50IGxvY2FsUG9pbnQgPSByb3VuZGVkTGF5b3V0UG9pbnQo
bmV3VHJhbnNmb3JtU3RhdGUtPm1hcHBlZFBvaW50KCkpOworICAgICAgICAgICAgICAgIExheW91
dFJlY3QgbG9jYWxIaXRUZXN0UmVjdCA9IG5ld1RyYW5zZm9ybVN0YXRlLT5tYXBwZWRRdWFkKCku
ZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKICAgICAgICAgICAgICAgICBuZXdUcmFuc2Zvcm1TdGF0
ZS0+ZmxhdHRlbigpOwogCiAgICAgICAgICAgICAgICAgaGl0TGF5ZXIgPSBoaXRUZXN0Q2hpbGRM
YXllckNvbHVtbnMoY2hpbGRMYXllciwgY29sdW1uTGF5ZXJzW2NvbHVtbkluZGV4IC0gMV0sIHJl
cXVlc3QsIHJlc3VsdCwgbG9jYWxIaXRUZXN0UmVjdCwgbG9jYWxQb2ludCwKQEAgLTM0MzMsOCAr
MzQzMyw4IEBAIEludFJlY3QgUmVuZGVyTGF5ZXI6OmJhY2tncm91bmRDbGlwUmVjdCgKICAgICBy
ZXR1cm4gYmFja2dyb3VuZFJlY3Q7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZVJl
Y3RzKGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIGNvbnN0IEludFJlY3QmIHBhaW50RGly
dHlSZWN0LCBJbnRSZWN0JiBsYXllckJvdW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEludFJlY3QmIGJhY2tncm91bmRSZWN0LCBJbnRSZWN0JiBmb3JlZ3JvdW5kUmVjdCwg
SW50UmVjdCYgb3V0bGluZVJlY3QsIGJvb2wgdGVtcG9yYXJ5Q2xpcFJlY3RzLAordm9pZCBSZW5k
ZXJMYXllcjo6Y2FsY3VsYXRlUmVjdHMoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29u
c3QgTGF5b3V0UmVjdCYgcGFpbnREaXJ0eVJlY3QsIExheW91dFJlY3QmIGxheWVyQm91bmRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCYgYmFja2dyb3VuZFJl
Y3QsIExheW91dFJlY3QmIGZvcmVncm91bmRSZWN0LCBMYXlvdXRSZWN0JiBvdXRsaW5lUmVjdCwg
Ym9vbCB0ZW1wb3JhcnlDbGlwUmVjdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSByZWxldmFuY3kpIGNvbnN0CiB7CiAgICAg
aWYgKHJvb3RMYXllciAhPSB0aGlzICYmIHBhcmVudCgpKSB7CkBAIC0zNDQ2LDkgKzM0NDYsOSBA
QCB2b2lkIFJlbmRlckxheWVyOjpjYWxjdWxhdGVSZWN0cyhjb25zdCBSCiAgICAgZm9yZWdyb3Vu
ZFJlY3QgPSBiYWNrZ3JvdW5kUmVjdDsKICAgICBvdXRsaW5lUmVjdCA9IGJhY2tncm91bmRSZWN0
OwogICAgIAotICAgIEludFBvaW50IG9mZnNldDsKKyAgICBMYXlvdXRQb2ludCBvZmZzZXQ7CiAg
ICAgY29udmVydFRvTGF5ZXJDb29yZHMocm9vdExheWVyLCBvZmZzZXQpOwotICAgIGxheWVyQm91
bmRzID0gSW50UmVjdChvZmZzZXQsIHNpemUoKSk7CisgICAgbGF5ZXJCb3VuZHMgPSBMYXlvdXRS
ZWN0KG9mZnNldCwgc2l6ZSgpKTsKICAgICAKICAgICAvLyBVcGRhdGUgdGhlIGNsaXAgcmVjdHMg
dGhhdCB3aWxsIGJlIHBhc3NlZCB0byBjaGlsZCBsYXllcnMuCiAgICAgaWYgKHJlbmRlcmVyKCkt
Pmhhc092ZXJmbG93Q2xpcCgpIHx8IHJlbmRlcmVyKCktPmhhc0NsaXAoKSkgewpAQCAtMzQ1Nyw3
ICszNDU3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlUmVjdHMoY29uc3QgUgogICAg
ICAgICAgICAgZm9yZWdyb3VuZFJlY3QuaW50ZXJzZWN0KHRvUmVuZGVyQm94KHJlbmRlcmVyKCkp
LT5vdmVyZmxvd0NsaXBSZWN0KG9mZnNldCwgcmVsZXZhbmN5KSk7CiAgICAgICAgIGlmIChyZW5k
ZXJlcigpLT5oYXNDbGlwKCkpIHsKICAgICAgICAgICAgIC8vIENsaXAgYXBwbGllcyB0byAqdXMq
IGFzIHdlbGwsIHNvIGdvIGFoZWFkIGFuZCB1cGRhdGUgdGhlIGRhbWFnZVJlY3QuCi0gICAgICAg
ICAgICBJbnRSZWN0IG5ld1Bvc0NsaXAgPSB0b1JlbmRlckJveChyZW5kZXJlcigpKS0+Y2xpcFJl
Y3Qob2Zmc2V0KTsKKyAgICAgICAgICAgIExheW91dFJlY3QgbmV3UG9zQ2xpcCA9IHRvUmVuZGVy
Qm94KHJlbmRlcmVyKCkpLT5jbGlwUmVjdChvZmZzZXQpOwogICAgICAgICAgICAgYmFja2dyb3Vu
ZFJlY3QuaW50ZXJzZWN0KG5ld1Bvc0NsaXApOwogICAgICAgICAgICAgZm9yZWdyb3VuZFJlY3Qu
aW50ZXJzZWN0KG5ld1Bvc0NsaXApOwogICAgICAgICAgICAgb3V0bGluZVJlY3QuaW50ZXJzZWN0
KG5ld1Bvc0NsaXApOwpAQCAtMzQ2OCw3ICszNDY4LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y2Fs
Y3VsYXRlUmVjdHMoY29uc3QgUgogICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBjaGFu
Z2VkIHRvIGp1c3QgdXNlIGdlbmVyaWMgdmlzdWFsIG92ZXJmbG93LgogICAgICAgICAvLyBTZWUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NDY3IGZvciBtb3JlIGlu
Zm9ybWF0aW9uLgogICAgICAgICBpZiAoY29uc3QgU2hhZG93RGF0YSogYm94U2hhZG93ID0gcmVu
ZGVyZXIoKS0+c3R5bGUoKS0+Ym94U2hhZG93KCkpIHsKLSAgICAgICAgICAgIEludFJlY3Qgb3Zl
cmZsb3cgPSBsYXllckJvdW5kczsKKyAgICAgICAgICAgIExheW91dFJlY3Qgb3ZlcmZsb3cgPSBs
YXllckJvdW5kczsKICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBpZiAoYm94U2hh
ZG93LT5zdHlsZSgpID09IE5vcm1hbCkgewogICAgICAgICAgICAgICAgICAgICBJbnRSZWN0IHNo
YWRvd1JlY3QgPSBsYXllckJvdW5kczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oCShyZXZpc2lvbiA5MDE1NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNzUsOCArMzc1LDggQEAgcHVibGljOgog
ICAgIC8vIFRoaXMgbWV0aG9kIGZpZ3VyZXMgb3V0IG91ciBsYXllckJvdW5kcyBpbiBjb29yZGlu
YXRlcyByZWxhdGl2ZSB0bwogICAgIC8vIHxyb290TGF5ZXJ9LiAgSXQgYWxzbyBjb21wdXRlcyBv
dXIgYmFja2dyb3VuZCBhbmQgZm9yZWdyb3VuZCBjbGlwIHJlY3RzCiAgICAgLy8gZm9yIHBhaW50
aW5nL2V2ZW50IGhhbmRsaW5nLgotICAgIHZvaWQgY2FsY3VsYXRlUmVjdHMoY29uc3QgUmVuZGVy
TGF5ZXIqIHJvb3RMYXllciwgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3QsIEludFJlY3Qm
IGxheWVyQm91bmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCYgYmFja2dyb3Vu
ZFJlY3QsIEludFJlY3QmIGZvcmVncm91bmRSZWN0LCBJbnRSZWN0JiBvdXRsaW5lUmVjdCwgYm9v
bCB0ZW1wb3JhcnlDbGlwUmVjdHMgPSBmYWxzZSwKKyAgICB2b2lkIGNhbGN1bGF0ZVJlY3RzKGNv
bnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHBhaW50RGlydHlS
ZWN0LCBMYXlvdXRSZWN0JiBsYXllckJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgIExh
eW91dFJlY3QmIGJhY2tncm91bmRSZWN0LCBMYXlvdXRSZWN0JiBmb3JlZ3JvdW5kUmVjdCwgTGF5
b3V0UmVjdCYgb3V0bGluZVJlY3QsIGJvb2wgdGVtcG9yYXJ5Q2xpcFJlY3RzID0gZmFsc2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgICBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSA9IEln
bm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplKSBjb25zdDsKIAogICAgIC8vIENvbXB1dGUgYW5kIGNh
Y2hlIGNsaXAgcmVjdHMgY29tcHV0ZWQgd2l0aCB0aGUgZ2l2ZW4gbGF5ZXIgYXMgdGhlIHJvb3QK
QEAgLTUwNywyMiArNTA3LDIyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQYWludExheWVyRmxhZ3MsIGNvbnN0IFZlY3RvcjxSZW5kZXJMYXllcio+JiBj
b2x1bW5MYXllcnMsIHNpemVfdCBjb2x1bW5JbmRleCk7CiAKICAgICBSZW5kZXJMYXllciogaGl0
VGVzdExheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxheWVyKiBjb250YWluZXJM
YXllciwgY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3Vs
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIGhpdFRlc3RS
ZWN0LCBjb25zdCBJbnRQb2ludCYgaGl0VGVzdFBvaW50LCBib29sIGFwcGxpZWRUcmFuc2Zvcm0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBoaXRUZXN0
UmVjdCwgY29uc3QgTGF5b3V0UG9pbnQmIGhpdFRlc3RQb2ludCwgYm9vbCBhcHBsaWVkVHJhbnNm
b3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSGl0VGVzdGluZ1RyYW5z
Zm9ybVN0YXRlKiB0cmFuc2Zvcm1TdGF0ZSA9IDAsIGRvdWJsZSogek9mZnNldCA9IDApOwogICAg
IFJlbmRlckxheWVyKiBoaXRUZXN0TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiosIFJlbmRlckxh
eWVyKiByb290TGF5ZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVz
dWx0JiByZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3Qm
IGhpdFRlc3RSZWN0LCBjb25zdCBJbnRQb2ludCYgaGl0VGVzdFBvaW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBMYXlvdXRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgTGF5
b3V0UG9pbnQmIGhpdFRlc3RQb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiB0cmFuc2Zvcm1TdGF0ZSwgZG91YmxlKiB6T2Zm
c2V0Rm9yRGVzY2VuZGFudHMsIGRvdWJsZSogek9mZnNldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiB1bmZsYXR0ZW5lZFRyYW5z
Zm9ybVN0YXRlLCBib29sIGRlcHRoU29ydERlc2NlbmRhbnRzKTsKICAgICBSZW5kZXJMYXllciog
aGl0VGVzdFBhZ2luYXRlZENoaWxkTGF5ZXIoUmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIsIFJlbmRl
ckxheWVyKiByb290TGF5ZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdWx0JiByZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEludFJlY3QmIGhpdFRlc3RSZWN0LCBjb25zdCBJbnRQb2ludCYgaGl0VGVzdFBv
aW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBM
YXlvdXRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgTGF5b3V0UG9pbnQmIGhpdFRlc3RQb2ludCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSGl0VGVz
dGluZ1RyYW5zZm9ybVN0YXRlKiB0cmFuc2Zvcm1TdGF0ZSwgZG91YmxlKiB6T2Zmc2V0KTsKICAg
ICBSZW5kZXJMYXllciogaGl0VGVzdENoaWxkTGF5ZXJDb2x1bW5zKFJlbmRlckxheWVyKiBjaGls
ZExheWVyLCBSZW5kZXJMYXllciogcm9vdExheWVyLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVx
dWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgaGl0VGVzdFJlY3QsIGNvbnN0IEludFBvaW50
JiBoaXRUZXN0UG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBMYXlvdXRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgTGF5b3V0UG9pbnQmIGhpdFRl
c3RQb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZSogdHJhbnNmb3JtU3RhdGUsIGRvdWJsZSogek9mZnNl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlY3Rv
cjxSZW5kZXJMYXllcio+JiBjb2x1bW5MYXllcnMsIHNpemVfdCBjb2x1bW5JbmRleCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICBQYXNzUmVmUHRyPEhpdFRlc3Rp
bmdUcmFuc2Zvcm1TdGF0ZT4gY3JlYXRlTG9jYWxUcmFuc2Zvcm1TdGF0ZShSZW5kZXJMYXllciog
cm9vdExheWVyLCBSZW5kZXJMYXllciogY29udGFpbmVyTGF5ZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSW50UmVjdCYgaGl0VGVzdFJlY3QsIGNvbnN0IEludFBvaW50JiBo
aXRUZXN0UG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVj
dCYgaGl0VGVzdFJlY3QsIGNvbnN0IExheW91dFBvaW50JiBoaXRUZXN0UG9pbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiBjb250
YWluZXJUcmFuc2Zvcm1TdGF0ZSkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBoaXRUZXN0Q29udGVu
dHMoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgTGF5b3V0UmVj
dCYgbGF5ZXJCb3VuZHMsIGNvbnN0IExheW91dFBvaW50JiBoaXRUZXN0UG9pbnQsIEhpdFRlc3RG
aWx0ZXIpIGNvbnN0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>