<?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>78511</bug_id>
          
          <creation_ts>2012-02-13 11:44:17 -0800</creation_ts>
          <short_desc>Update usage of LayoutUnits in RenderLayer</short_desc>
          <delta_ts>2012-02-14 13:18:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>60318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>555432</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-02-13 11:44:17 -0800</bug_when>
    <thetext>RenderLayer hosts native controls that must be communicated with via integers, but are also nested and need to carry subpixel positioning data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555554</commentid>
    <comment_count>1</comment_count>
      <attachid>126825</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-02-13 13:56:46 -0800</bug_when>
    <thetext>Created attachment 126825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555592</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-13 14:14:25 -0800</bug_when>
    <thetext>Simon should see this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555862</commentid>
    <comment_count>3</comment_count>
      <attachid>126825</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-02-13 19:03:17 -0800</bug_when>
    <thetext>Comment on attachment 126825
Patch

I&apos;ll take your word for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556437</commentid>
    <comment_count>4</comment_count>
      <attachid>127004</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-02-14 11:24:21 -0800</bug_when>
    <thetext>Created attachment 127004
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556439</commentid>
    <comment_count>5</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2012-02-14 11:27:19 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 126825 [details])
&gt; I&apos;ll take your word for it.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556541</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 13:14:11 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 127004:

perf/array-reverse.html bug 78593 (author: ojan@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556545</commentid>
    <comment_count>7</comment_count>
      <attachid>127004</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 13:17:51 -0800</bug_when>
    <thetext>Comment on attachment 127004
Patch for landing

Clearing flags on attachment: 127004

Committed r107731: &lt;http://trac.webkit.org/changeset/107731&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556546</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-14 13:18:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126825</attachid>
            <date>2012-02-13 13:56:46 -0800</date>
            <delta_ts>2012-02-14 11:24:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78511-20120213135645.patch</filename>
            <type>text/plain</type>
            <size>20118</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzU5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDEyLTAyLTEzICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBVcGRhdGUgdXNhZ2Ugb2Yg
TGF5b3V0VW5pdHMgaW4gUmVuZGVyTGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc4NTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRpbmcgUmVuZGVyTGF5ZXIgdG8gcHJvcGVybHkgdXNlIExh
eW91dFVuaXRzLiBTZWUgZGVzY3JpcHRpb25zIGJlbG93IGZvciB0aGUgcmF0aW9uYWxlIGJlaGlu
ZCBhbGwKKyAgICAgICAgdGhlIGNoYW5nZXMuIEFsc28gYWRkaW5nIGEgcm91bmRlZEludFNpemUg
bWV0aG9kIHRoYXQgdGFrZXMgYSBMYXlvdXRTaXplLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4g
Tm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogcmVuZGVyaW5nL0xheW91dFR5cGVz
Lmg6CisgICAgICAgIChXZWJDb3JlOjpyb3VuZGVkSW50U2l6ZSk6IElubGluZSBtZXRob2QgdGhh
dCBjdXJyZW50bHkgZG9lcyBub3RoaW5nLCBidXQgd2lsbCByb3VuZCBhIExheW91dFNpemUKKyAg
ICAgICAgdG8gYW4gSW50U2l6ZS4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKTog
U3dpdGNoaW5nIHJlcGFpbnQgYW5kIG91dGxpbmUgYm94ZXMgdG8gTGF5b3V0UmVjdHMsIGFzCisg
ICAgICAgIGl0J3MgaW1wb3J0YW50IHRvIGtlZXAgdGhlIHByZWNpc2lvbiBvZiB0aGVzZSByZWN0
cyB1bnRpbCBoYW5kaW5nIG9mZiB0byB0aGUgZW1iZWRkZXIgKGluIEZyYW1lVmlldykuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29tcHV0ZVJlcGFpbnRSZWN0cyk6IFJlcGFpbnQg
cmVjdHMgc2hvdWxkIGJlIHByZXNlcnZlZCBpbiBzdWJwaXhlbCB1bml0cyB1bnRpbAorICAgICAg
ICBiZWluZyBwYXNzZWQgdG8gdGhlIGVtYmVkZGluZyBsYXllci4gVGhpcyBwcmV2ZW50cyBuZWVk
bGVzcyByZXBhaW50cy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb252ZXJ0VG9Q
aXhlbFNuYXBwZWRMYXllckNvb3Jkcyk6IENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHJldHVybiBw
aXhlbCBzbmFwcGVkIHJlY3RzCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpjb252ZXJ0VG9MYXllckNvb3Jkcyk6IEZpeGluZyBhIHN0eWxlIGZsYXcu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZSk6IFBp
eGVsIHNuYXBwaW5nIHRoZSByZWN0IHdoZW4gaGFuZGluZyBvZmYgdG8gdGhlIGVtYmVkZGVyLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Om1heGltdW1TY3JvbGxQb3NpdGlvbik6IFNj
cm9sbCBvZmZzZXRzIGFyZSByb3VuZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnNjcm9sbENvcm5lclJlY3QpOiBTY3JvbGxiYXJzIGFyZSBkcmF3biBuYXRpdmVseSBhbmQgc2hv
dWxkIGJlIHBvc2l0aW9uZWQgb24gcGl4ZWwKKyAgICAgICAgYm91bmRhcmllcy4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxDb3JuZXJBbmRSZXNpemVyUmVjdCk6IFJlc2l6
ZSBjb3JuZXIgZG9lc24ndCBpbmZsdWVuY2UgdGhlIHNpemUvcG9zaXRpb24gb2YKKyAgICAgICAg
cmVuZGVyIG9iamVjdHMuIEl0IGlzIG9ubHkgcGFpbnRlZCBhbmQgaGl0IHRlc3RlZC4gVGhlcmVm
b3IgaXQgc2hvdWxkIHVzZSBpbnRlZ2Vycy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpvZmZzZXRGcm9tUmVzaXplQ29ybmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6cG9zaXRpb25PdmVyZmxvd0NvbnRyb2xzKTogT3ZlcmZsb3cgY29udHJvbHMgYXJl
IGRyYXduIG5hdGl2ZWx5IGFuZCBzaG91bGQgYmUKKyAgICAgICAgcG9zaXRpb25lZCBvbiBpbnRl
Z2VyIGJvdW5kYXJpZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRPdmVy
Zmxvd0NvbnRyb2xzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFp
bnRTY3JvbGxDb3JuZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpk
cmF3UGxhdGZvcm1SZXNpemVySW1hZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpwYWludFJlc2l6ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9scyk6IEhpdCB0ZXN0aW5nICYgb3ZlcmZsb3cgY29u
dHJvbHMgYm90aCB1c2UgaW50ZWdlcnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
Y2xpcFRvUmVjdCk6IENsaXBwaW5nIHRvIGFjdHVhbCBwYWludGVkIChwaXhlbCBzbmFwcGVkKSBs
YXllciBib3VuZHMgaW4gdGhlCisgICAgICAgIGdyYXBoaWNzIGNvbnRleHQuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKTogQ2FsbGluZyBwYWludE92
ZXJmbG93Q29udHJvbHMgYXQgcGl4ZWwgYm91bmRzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OmhpdFRlc3QpOiBJbnRlcnNlY3RpbmcgdGhlIGhpdCB0ZXN0IGFyZWEgd2l0aCBwaXhl
bCBzbmFwcGVkIGJvdW5kYXJpZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0
QmFja2luZ05lZWRzUmVwYWludEluUmVjdCk6IFNlbmRpbmcgcGl4ZWxTbmFwcGVkIHJlY3RzIHRv
IHRoZSBiYWNraW5nCisgICAgICAgIHN0b3JlLCB3aGljaCBvbmx5IGNhcmVzIGFib3V0IHBpeGVs
cywgYW5kIGhlbmNlIGludGVnZXJzLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbGVkQ29udGVudE9mZnNldCk6
IFJlbmRlckxheWVyJ3Mgc2Nyb2xsIG9mZnNldHMgYXJlIHVzZWQgaW4gcGxhdGZvcm0KKyAgICAg
ICAgY29kZSwgc28gd2UgbmVlZCB0byByZXR1cm4gdGhlbSBhcyBpbnRlZ2Vycy4gUm91bmRpbmcg
dGhlIHNjcm9sbCBvdmVyZmxvdyBiZWZvcmUgYWRkaW5nIGl0IHRvIHRoZQorICAgICAgICBzY3Jv
bGwgb2Zmc2V0LCB3aGljaCB3YXMgYWxyZWFkeSBzdG9yZWQgaW4gaW50ZWdlcnMuCisgICAgICAg
IChSZW5kZXJMYXllcik6CisKIDIwMTItMDItMTMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dh
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dJTl0gRGVmaW5lIEhXTkRfTUVTU0FHRSBpZiBub3Qg
ZG9uZSBhbHJlYWR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0VHlwZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0VHlwZXMuaAko
cmV2aXNpb24gMTA3NDM3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFR5cGVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDExIEBAIGlubGluZSBJbnRSZWN0IHBpeGVs
U25hcHBlZEludFJlY3QoY29uc3QKICAgICByZXR1cm4gcmVjdDsKIH0KIAoraW5saW5lIEludFNp
emUgcm91bmRlZEludFNpemUoY29uc3QgTGF5b3V0U2l6ZSYgcykKK3sKKyAgICByZXR1cm4gczsK
K30KKwogaW5saW5lIExheW91dFNpemUgcm91bmRlZExheW91dFNpemUoY29uc3QgRmxvYXRTaXpl
JiBzKQogewogICAgIHJldHVybiByb3VuZGVkSW50U2l6ZShzKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNpb24gMTA3NDM3KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU3
LDcgKzM1Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKEwKICAg
ICAgICAgLy8gYXMgY2FuVXNlQ29udmVydFRvTGF5ZXJDb29yZHMgbWF5IGJlIHRydWUgZm9yIGFu
IGFuY2VzdG9yIGxheWVyLgogICAgICAgICBjb252ZXJ0VG9MYXllckNvb3Jkcyhyb290KCksIG9m
ZnNldCk7CiAgICAgfQotICAgIHBvc2l0aW9uT3ZlcmZsb3dDb250cm9scyh0b1NpemUob2Zmc2V0
KSk7CisgICAgcG9zaXRpb25PdmVyZmxvd0NvbnRyb2xzKHRvU2l6ZShyb3VuZGVkSW50UG9pbnQo
b2Zmc2V0KSkpOwogCiAgICAgdXBkYXRlVmlzaWJpbGl0eVN0YXR1cygpOwogCkBAIC0zNzUsOCAr
Mzc1LDggQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMoTAogICAgICAg
ICBBU1NFUlQoIXZpZXctPmxheW91dFN0YXRlRW5hYmxlZCgpKTsKIAogICAgICAgICBSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciA9IHJlbmRlcmVyKCktPmNvbnRhaW5lckZv
clJlcGFpbnQoKTsKLSAgICAgICAgSW50UmVjdCBvbGRSZXBhaW50UmVjdCA9IG1fcmVwYWludFJl
Y3Q7Ci0gICAgICAgIEludFJlY3Qgb2xkT3V0bGluZUJveCA9IG1fb3V0bGluZUJveDsKKyAgICAg
ICAgTGF5b3V0UmVjdCBvbGRSZXBhaW50UmVjdCA9IG1fcmVwYWludFJlY3Q7CisgICAgICAgIExh
eW91dFJlY3Qgb2xkT3V0bGluZUJveCA9IG1fb3V0bGluZUJveDsKICAgICAgICAgY29tcHV0ZVJl
cGFpbnRSZWN0cyhvZmZzZXRGcm9tUm9vdCk7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgQVNT
RVJUIHRoYXQgdmFsdWUgY2FsY3VsYXRlZCBmb3IgbV9vdXRsaW5lQm94IHVzaW5nIHRoZSBjYWNo
ZWQgb2Zmc2V0IGlzIHRoZSBzYW1lCiAgICAgICAgIC8vIGFzIHRoZSB2YWx1ZSBub3QgdXNpbmcg
dGhlIGNhY2hlZCBvZmZzZXQsIGJ1dCB3ZSBjYW4ndCBkdWUgdG8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MDQ4CkBAIC00MzMsNyArNDMzLDcgQEAgTGF5b3V0UmVj
dCBSZW5kZXJMYXllcjo6cmVwYWludFJlY3RJbmNsdQogICAgIHJldHVybiByZXBhaW50UmVjdDsK
IH0KIAotdm9pZCBSZW5kZXJMYXllcjo6Y29tcHV0ZVJlcGFpbnRSZWN0cyhJbnRQb2ludCogb2Zm
c2V0RnJvbVJvb3QpCit2b2lkIFJlbmRlckxheWVyOjpjb21wdXRlUmVwYWludFJlY3RzKExheW91
dFBvaW50KiBvZmZzZXRGcm9tUm9vdCkKIHsKICAgICBBU1NFUlQoIW1fdmlzaWJsZUNvbnRlbnRT
dGF0dXNEaXJ0eSk7CiAKQEAgLTEyMzcsOCArMTIzNywyMSBAQCB2b2lkIFJlbmRlckxheWVyOjpp
bnNlcnRPbmx5VGhpc0xheWVyKCkKICAgICBjbGVhckNsaXBSZWN0c0luY2x1ZGluZ0Rlc2NlbmRh
bnRzKCk7CiB9CiAKLXZvaWQgCi1SZW5kZXJMYXllcjo6Y29udmVydFRvTGF5ZXJDb29yZHMoY29u
c3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIExheW91dFBvaW50JiBsb2NhdGlvbikgY29u
c3QKK3ZvaWQgUmVuZGVyTGF5ZXI6OmNvbnZlcnRUb1BpeGVsU25hcHBlZExheWVyQ29vcmRzKGNv
bnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBJbnRQb2ludCYgcm91bmRlZExvY2F0aW9u
KSBjb25zdAoreworICAgIExheW91dFBvaW50IGxvY2F0aW9uID0gcm91bmRlZExvY2F0aW9uOwor
ICAgIGNvbnZlcnRUb0xheWVyQ29vcmRzKGFuY2VzdG9yTGF5ZXIsIGxvY2F0aW9uKTsKKyAgICBy
b3VuZGVkTG9jYXRpb24gPSByb3VuZGVkSW50UG9pbnQobG9jYXRpb24pOworfQorCit2b2lkIFJl
bmRlckxheWVyOjpjb252ZXJ0VG9QaXhlbFNuYXBwZWRMYXllckNvb3Jkcyhjb25zdCBSZW5kZXJM
YXllciogYW5jZXN0b3JMYXllciwgSW50UmVjdCYgcm91bmRlZFJlY3QpIGNvbnN0Cit7CisgICAg
TGF5b3V0UmVjdCByZWN0ID0gcm91bmRlZFJlY3Q7CisgICAgY29udmVydFRvTGF5ZXJDb29yZHMo
YW5jZXN0b3JMYXllciwgcmVjdCk7CisgICAgcm91bmRlZFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRS
ZWN0KHJlY3QpOworfQorCit2b2lkIFJlbmRlckxheWVyOjpjb252ZXJ0VG9MYXllckNvb3Jkcyhj
b25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciwgTGF5b3V0UG9pbnQmIGxvY2F0aW9uKSBj
b25zdAogewogICAgIGlmIChhbmNlc3RvckxheWVyID09IHRoaXMpCiAgICAgICAgIHJldHVybjsK
QEAgLTEzMjUsOCArMTMzOCw3IEBAIFJlbmRlckxheWVyOjpjb252ZXJ0VG9MYXllckNvb3Jkcyhj
b25zdCAKICAgICBsb2NhdGlvbiArPSB0b1NpemUobV90b3BMZWZ0KTsKIH0KIAotdm9pZAotUmVu
ZGVyTGF5ZXI6OmNvbnZlcnRUb0xheWVyQ29vcmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3Rv
ckxheWVyLCBMYXlvdXRSZWN0JiByZWN0KSBjb25zdAordm9pZCBSZW5kZXJMYXllcjo6Y29udmVy
dFRvTGF5ZXJDb29yZHMoY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIExheW91dFJl
Y3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgTGF5b3V0UG9pbnQgZGVsdGE7CiAgICAgY29udmVydFRv
TGF5ZXJDb29yZHMoYW5jZXN0b3JMYXllciwgZGVsdGEpOwpAQCAtMTU4Nyw3ICsxNTk5LDcgQEAg
dm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZShjbwogICAgICAgICAgICAgICAg
IC8vIFRoZSBjYW5BdXRvc2Nyb2xsIGZ1bmN0aW9uIGluIEV2ZW50SGFuZGxlciBhbHNvIGtub3dz
IGFib3V0IHRoaXMuCiAgICAgICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGZyYW1lVmll
dy0+ZnJhbWUoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1l
LT5wYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+c2Nyb2xs
UmVjdEludG9WaWV3KHJlY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21l
KCktPnNjcm9sbFJlY3RJbnRvVmlldyhwaXhlbFNuYXBwZWRJbnRSZWN0KHJlY3QpKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE3ODgsNyArMTgwMCw3
IEBAIEludFBvaW50IFJlbmRlckxheWVyOjptaW5pbXVtU2Nyb2xsUG9zaXQKIEludFBvaW50IFJl
bmRlckxheWVyOjptYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdAogewogICAgIC8vIEZJWE1F
OiBtX3Njcm9sbFNpemUgbWF5IG5vdCBiZSB1cC10by1kYXRlIGlmIG1fc2Nyb2xsRGltZW5zaW9u
c0RpcnR5IGlzIHRydWUuCi0gICAgcmV0dXJuIHNjcm9sbE9yaWdpbigpICsgbV9zY3JvbGxTaXpl
IC0gdmlzaWJsZUNvbnRlbnRSZWN0KHRydWUpLnNpemUoKTsKKyAgICByZXR1cm4gc2Nyb2xsT3Jp
Z2luKCkgKyByb3VuZGVkSW50U2l6ZShtX3Njcm9sbFNpemUpIC0gdmlzaWJsZUNvbnRlbnRSZWN0
KHRydWUpLnNpemUoKTsKIH0KIAogSW50UmVjdCBSZW5kZXJMYXllcjo6dmlzaWJsZUNvbnRlbnRS
ZWN0KGJvb2wgaW5jbHVkZVNjcm9sbGJhcnMpIGNvbnN0CkBAIC0xODUwLDcgKzE4NjIsNyBAQCBJ
bnRSZWN0IFJlbmRlckxheWVyOjpzY3JvbGxDb3JuZXJSZWN0KCkgCiAgICAgYm9vbCBoYXNWZXJ0
aWNhbEJhciA9IHZlcnRpY2FsU2Nyb2xsYmFyKCk7CiAgICAgYm9vbCBoYXNSZXNpemVyID0gcmVu
ZGVyZXIoKS0+c3R5bGUoKS0+cmVzaXplKCkgIT0gUkVTSVpFX05PTkU7CiAgICAgaWYgKChoYXNI
b3Jpem9udGFsQmFyICYmIGhhc1ZlcnRpY2FsQmFyKSB8fCAoaGFzUmVzaXplciAmJiAoaGFzSG9y
aXpvbnRhbEJhciB8fCBoYXNWZXJ0aWNhbEJhcikpKQotICAgICAgICByZXR1cm4gY29ybmVyUmVj
dCh0aGlzLCByZW5kZXJCb3goKS0+Ym9yZGVyQm94UmVjdCgpKTsKKyAgICAgICAgcmV0dXJuIGNv
cm5lclJlY3QodGhpcywgcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJCb3goKS0+Ym9yZGVyQm94
UmVjdCgpKSk7CiAgICAgcmV0dXJuIEludFJlY3QoKTsKIH0KIApAQCAtMTg2OSw3ICsxODgxLDcg
QEAgSW50UmVjdCBSZW5kZXJMYXllcjo6c2Nyb2xsQ29ybmVyQW5kUmVzaQogICAgICAgICByZXR1
cm4gSW50UmVjdCgpOwogICAgIEludFJlY3Qgc2Nyb2xsQ29ybmVyQW5kUmVzaXplciA9IHNjcm9s
bENvcm5lclJlY3QoKTsKICAgICBpZiAoc2Nyb2xsQ29ybmVyQW5kUmVzaXplci5pc0VtcHR5KCkp
Ci0gICAgICAgIHNjcm9sbENvcm5lckFuZFJlc2l6ZXIgPSByZXNpemVyQ29ybmVyUmVjdCh0aGlz
LCBib3gtPmJvcmRlckJveFJlY3QoKSk7CisgICAgICAgIHNjcm9sbENvcm5lckFuZFJlc2l6ZXIg
PSByZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBwaXhlbFNuYXBwZWRJbnRSZWN0KGJveC0+Ym9yZGVy
Qm94UmVjdCgpKSk7CiAgICAgcmV0dXJuIHNjcm9sbENvcm5lckFuZFJlc2l6ZXI7CiB9CiAKQEAg
LTIxMzEsNyArMjE0Myw3IEBAIGludCBSZW5kZXJMYXllcjo6aG9yaXpvbnRhbFNjcm9sbGJhckhl
aWcKICAgICByZXR1cm4gbV9oQmFyLT5oZWlnaHQoKTsKIH0KIAotTGF5b3V0U2l6ZSBSZW5kZXJM
YXllcjo6b2Zmc2V0RnJvbVJlc2l6ZUNvcm5lcihjb25zdCBMYXlvdXRQb2ludCYgYWJzb2x1dGVQ
b2ludCkgY29uc3QKK0ludFNpemUgUmVuZGVyTGF5ZXI6Om9mZnNldEZyb21SZXNpemVDb3JuZXIo
Y29uc3QgSW50UG9pbnQmIGFic29sdXRlUG9pbnQpIGNvbnN0CiB7CiAgICAgLy8gQ3VycmVudGx5
IHRoZSByZXNpemUgY29ybmVyIGlzIGFsd2F5cyB0aGUgYm90dG9tIHJpZ2h0IGNvcm5lcgogICAg
IC8vIEZJWE1FOiBUaGlzIGFzc3VtZXMgdGhlIGxvY2F0aW9uIGlzIDAsIDAuIElzIHRoaXMgZ3Vh
cmFudGVlZCB0byBhbHdheXMgYmUgdGhlIGNhc2U/CkBAIC0yMTQ1LDcgKzIxNTcsNyBAQCBib29s
IFJlbmRlckxheWVyOjpoYXNPdmVyZmxvd0NvbnRyb2xzKCkgCiAgICAgcmV0dXJuIG1faEJhciB8
fCBtX3ZCYXIgfHwgbV9zY3JvbGxDb3JuZXIgfHwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+cmVzaXpl
KCkgIT0gUkVTSVpFX05PTkU7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBvc2l0aW9uT3ZlcmZs
b3dDb250cm9scyhjb25zdCBMYXlvdXRTaXplJiBvZmZzZXRGcm9tTGF5ZXIpCit2b2lkIFJlbmRl
ckxheWVyOjpwb3NpdGlvbk92ZXJmbG93Q29udHJvbHMoY29uc3QgSW50U2l6ZSYgb2Zmc2V0RnJv
bUxheWVyKQogewogICAgIGlmICghbV9oQmFyICYmICFtX3ZCYXIgJiYgKCFyZW5kZXJlcigpLT5o
YXNPdmVyZmxvd0NsaXAoKSB8fCByZW5kZXJlcigpLT5zdHlsZSgpLT5yZXNpemUoKSA9PSBSRVNJ
WkVfTk9ORSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIxNTQsNyArMjE2Niw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnBvc2l0aW9uT3ZlcmZsb3dDb250cm8KICAgICBpZiAoIWJveCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgY29uc3QgSW50UmVjdCBib3JkZXJCb3ggPSBib3gtPmJvcmRlckJveFJl
Y3QoKTsKKyAgICBjb25zdCBJbnRSZWN0IGJvcmRlckJveCA9IHBpeGVsU25hcHBlZEludFJlY3Qo
Ym94LT5ib3JkZXJCb3hSZWN0KCkpOwogICAgIGNvbnN0IEludFJlY3QmIHNjcm9sbENvcm5lciA9
IHNjcm9sbENvcm5lclJlY3QoKTsKICAgICBJbnRSZWN0IGFic0JvdW5kcyhib3JkZXJCb3gubG9j
YXRpb24oKSArIG9mZnNldEZyb21MYXllciwgYm9yZGVyQm94LnNpemUoKSk7CiAgICAgaWYgKG1f
dkJhcikKQEAgLTIzOTcsNyArMjQwOSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9s
bEluZm9BZnRlckwKICAgICAgICAgdXBkYXRlT3ZlcmZsb3dTdGF0dXMoaG9yaXpvbnRhbE92ZXJm
bG93LCB2ZXJ0aWNhbE92ZXJmbG93KTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVy
Zmxvd0NvbnRyb2xzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBib29sIHBhaW50aW5n
T3ZlcmxheUNvbnRyb2xzKQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRPdmVyZmxvd0NvbnRyb2xz
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0LCBj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0LCBib29sIHBhaW50aW5nT3ZlcmxheUNvbnRyb2xzKQog
ewogICAgIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIHdlIGhhdmUgbm8gb3ZlcmZsb3cuCiAgICAg
aWYgKCFyZW5kZXJlcigpLT5oYXNPdmVyZmxvd0NsaXAoKSkKQEAgLTI0MjEsNyArMjQzMyw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmZsb3dDb250cm9scygKICAgICBpZiAocGFpbnRp
bmdPdmVybGF5Q29udHJvbHMgJiYgIWhhc092ZXJsYXlTY3JvbGxiYXJzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIExheW91dFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBwYWludE9mZnNl
dDsKKyAgICBJbnRQb2ludCBhZGp1c3RlZFBhaW50T2Zmc2V0ID0gcGFpbnRPZmZzZXQ7CiAgICAg
aWYgKHBhaW50aW5nT3ZlcmxheUNvbnRyb2xzKQogICAgICAgICBhZGp1c3RlZFBhaW50T2Zmc2V0
ID0gbV9jYWNoZWRPdmVybGF5U2Nyb2xsYmFyT2Zmc2V0OwogCkBAIC0yNDU3LDEyICsyNDY5LDEy
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmZsb3dDb250cm9scygKICAgICBwYWludFJl
c2l6ZXIoY29udGV4dCwgYWRqdXN0ZWRQYWludE9mZnNldCwgZGFtYWdlUmVjdCk7CiB9CiAKLXZv
aWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBMYXlvdXRSZWN0JiBkYW1h
Z2VSZWN0KQordm9pZCBSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QpCiB7CiAgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKICAgICBB
U1NFUlQoYm94KTsKIAotICAgIExheW91dFJlY3QgYWJzUmVjdCA9IHNjcm9sbENvcm5lclJlY3Qo
KTsKKyAgICBJbnRSZWN0IGFic1JlY3QgPSBzY3JvbGxDb3JuZXJSZWN0KCk7CiAgICAgYWJzUmVj
dC5tb3ZlQnkocGFpbnRPZmZzZXQpOwogICAgIGlmICghYWJzUmVjdC5pbnRlcnNlY3RzKGRhbWFn
ZVJlY3QpKQogICAgICAgICByZXR1cm47CkBAIC0yNDgzLDcgKzI0OTUsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjpwYWludFNjcm9sbENvcm5lcihHcmFwCiAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0
KGFic1JlY3QsIENvbG9yOjp3aGl0ZSwgYm94LT5zdHlsZSgpLT5jb2xvclNwYWNlKCkpOwogfQog
Ci12b2lkIFJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVySW1hZ2UoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBMYXlvdXRSZWN0IHJlc2l6ZXJDb3JuZXJSZWN0KQordm9pZCBSZW5kZXJM
YXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
SW50UmVjdCByZXNpemVyQ29ybmVyUmVjdCkKIHsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
ciA9IFdlYkNvcmU6OmRldmljZVNjYWxlRmFjdG9yKHJlbmRlcmVyKCktPmZyYW1lKCkpOwogCkBA
IC0yNTA0LDcgKzI1MTYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpkcmF3UGxhdGZvcm1SZXNpemVy
SW1hCiAgICAgY29udGV4dC0+ZHJhd0ltYWdlKHJlc2l6ZUNvcm5lckltYWdlLmdldCgpLCByZW5k
ZXJlcigpLT5zdHlsZSgpLT5jb2xvclNwYWNlKCksIGltYWdlUmVjdCk7CiB9CiAKLXZvaWQgUmVu
ZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCkKK3Zv
aWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEludFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsK
ICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS0+cmVzaXplKCkgPT0gUkVTSVpFX05PTkUpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI1MTIsNyArMjUyNCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50UmVzaXplcihHcmFwaGljc0MKICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwog
ICAgIEFTU0VSVChib3gpOwogCi0gICAgTGF5b3V0UmVjdCBhYnNSZWN0ID0gcmVzaXplckNvcm5l
clJlY3QodGhpcywgYm94LT5ib3JkZXJCb3hSZWN0KCkpOworICAgIEludFJlY3QgYWJzUmVjdCA9
IHJlc2l6ZXJDb3JuZXJSZWN0KHRoaXMsIHBpeGVsU25hcHBlZEludFJlY3QoYm94LT5ib3JkZXJC
b3hSZWN0KCkpKTsKICAgICBhYnNSZWN0Lm1vdmVCeShwYWludE9mZnNldCk7CiAgICAgaWYgKCFh
YnNSZWN0LmludGVyc2VjdHMoZGFtYWdlUmVjdCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI1MzQs
OCArMjU0Niw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UmVzaXplcihHcmFwaGljc0MKICAg
ICBpZiAoIWhhc092ZXJsYXlTY3JvbGxiYXJzKCkgJiYgKG1fdkJhciB8fCBtX2hCYXIpKSB7CiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CiAg
ICAgICAgIGNvbnRleHQtPmNsaXAoYWJzUmVjdCk7Ci0gICAgICAgIExheW91dFJlY3QgbGFyZ2Vy
Q29ybmVyID0gYWJzUmVjdDsKLSAgICAgICAgbGFyZ2VyQ29ybmVyLnNldFNpemUoTGF5b3V0U2l6
ZShsYXJnZXJDb3JuZXIud2lkdGgoKSArIDEsIGxhcmdlckNvcm5lci5oZWlnaHQoKSArIDEpKTsK
KyAgICAgICAgSW50UmVjdCBsYXJnZXJDb3JuZXIgPSBhYnNSZWN0OworICAgICAgICBsYXJnZXJD
b3JuZXIuc2V0U2l6ZShJbnRTaXplKGxhcmdlckNvcm5lci53aWR0aCgpICsgMSwgbGFyZ2VyQ29y
bmVyLmhlaWdodCgpICsgMSkpOwogICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xv
cihtYWtlUkdCKDIxNywgMjE3LCAyMTcpKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAg
IGNvbnRleHQtPnNldFN0cm9rZVRoaWNrbmVzcygxLjBmKTsKICAgICAgICAgY29udGV4dC0+c2V0
RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgQ29sb3JTcGFjZURldmljZVJHQik7CkBAIC0y
NTU3LDcgKzI1NjksNyBAQCBib29sIFJlbmRlckxheWVyOjppc1BvaW50SW5SZXNpemVDb250cm9s
CiAgICAgcmV0dXJuIHJlc2l6ZXJDb3JuZXJSZWN0KHRoaXMsIGxvY2FsQm91bmRzKS5jb250YWlu
cyhsb2NhbFBvaW50KTsKIH0KICAgICAKLWJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRlc3RPdmVyZmxv
d0NvbnRyb2xzKEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgTGF5b3V0UG9pbnQmIGxvY2Fs
UG9pbnQpCitib29sIFJlbmRlckxheWVyOjpoaXRUZXN0T3ZlcmZsb3dDb250cm9scyhIaXRUZXN0
UmVzdWx0JiByZXN1bHQsIGNvbnN0IEludFBvaW50JiBsb2NhbFBvaW50KQogewogICAgIGlmICgh
bV9oQmFyICYmICFtX3ZCYXIgJiYgKCFyZW5kZXJlcigpLT5oYXNPdmVyZmxvd0NsaXAoKSB8fCBy
ZW5kZXJlcigpLT5zdHlsZSgpLT5yZXNpemUoKSA9PSBSRVNJWkVfTk9ORSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI1NjcsNyArMjU3OSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmhpdFRl
c3RPdmVyZmxvd0NvbnRyb2wKICAgICAKICAgICBJbnRSZWN0IHJlc2l6ZUNvbnRyb2xSZWN0Owog
ICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT5yZXNpemUoKSAhPSBSRVNJWkVfTk9ORSkgewot
ICAgICAgICByZXNpemVDb250cm9sUmVjdCA9IHJlc2l6ZXJDb3JuZXJSZWN0KHRoaXMsIGJveC0+
Ym9yZGVyQm94UmVjdCgpKTsKKyAgICAgICAgcmVzaXplQ29udHJvbFJlY3QgPSByZXNpemVyQ29y
bmVyUmVjdCh0aGlzLCBwaXhlbFNuYXBwZWRJbnRSZWN0KGJveC0+Ym9yZGVyQm94UmVjdCgpKSk7
CiAgICAgICAgIGlmIChyZXNpemVDb250cm9sUmVjdC5jb250YWlucyhsb2NhbFBvaW50KSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI2NDUsNyArMjY1Nyw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OmNsaXBUb1JlY3QoUmVuZGVyTGF5ZXIKICAgICBpZiAoY2xpcFJlY3QucmVj
dCgpID09IHBhaW50RGlydHlSZWN0KQogICAgICAgICByZXR1cm47CiAgICAgY29udGV4dC0+c2F2
ZSgpOwotICAgIGNvbnRleHQtPmNsaXAoY2xpcFJlY3QucmVjdCgpKTsKKyAgICBjb250ZXh0LT5j
bGlwKHBpeGVsU25hcHBlZEludFJlY3QoY2xpcFJlY3QucmVjdCgpKSk7CiAgICAgCiAgICAgaWYg
KCFjbGlwUmVjdC5oYXNSYWRpdXMoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjk0Niw3ICsyOTU4
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKFJlbgogCiAgICAgaWYg
KGlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycykgewogICAgICAgICBjbGlwVG9SZWN0KHJvb3RM
YXllciwgY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIGRhbWFnZVJlY3QpOwotICAgICAgICBwYWlu
dE92ZXJmbG93Q29udHJvbHMoY29udGV4dCwgcm91bmRlZEludFBvaW50KHBhaW50T2Zmc2V0KSwg
ZGFtYWdlUmVjdC5yZWN0KCksIHRydWUpOworICAgICAgICBwYWludE92ZXJmbG93Q29udHJvbHMo
Y29udGV4dCwgcm91bmRlZEludFBvaW50KHBhaW50T2Zmc2V0KSwgcGl4ZWxTbmFwcGVkSW50UmVj
dChkYW1hZ2VSZWN0LnJlY3QoKSksIHRydWUpOwogICAgICAgICByZXN0b3JlQ2xpcChjb250ZXh0
LCBwYWludERpcnR5UmVjdCwgZGFtYWdlUmVjdCk7CiAgICAgfQogCkBAIC0zMTEwLDkgKzMxMjIs
OSBAQCBib29sIFJlbmRlckxheWVyOjpoaXRUZXN0KGNvbnN0IEhpdFRlc3RSCiB7CiAgICAgcmVu
ZGVyZXIoKS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAgICAgCi0gICAgTGF5b3V0UmVj
dCBoaXRUZXN0QXJlYSA9IHJlbmRlcmVyKCktPnZpZXcoKS0+ZG9jdW1lbnRSZWN0KCk7CisgICAg
SW50UmVjdCBoaXRUZXN0QXJlYSA9IHJlbmRlcmVyKCktPnZpZXcoKS0+ZG9jdW1lbnRSZWN0KCk7
CiAgICAgaWYgKCFyZXF1ZXN0Lmlnbm9yZUNsaXBwaW5nKCkpCi0gICAgICAgIGhpdFRlc3RBcmVh
LmludGVyc2VjdChmcmFtZVZpc2libGVSZWN0KHJlbmRlcmVyKCkpKTsKKyAgICAgICAgaGl0VGVz
dEFyZWEuaW50ZXJzZWN0KHBpeGVsU25hcHBlZEludFJlY3QoZnJhbWVWaXNpYmxlUmVjdChyZW5k
ZXJlcigpKSkpOwogCiAgICAgUmVuZGVyTGF5ZXIqIGluc2lkZUxheWVyID0gaGl0VGVzdExheWVy
KHRoaXMsIDAsIHJlcXVlc3QsIHJlc3VsdCwgaGl0VGVzdEFyZWEsIHJlc3VsdC5wb2ludCgpLCBm
YWxzZSk7CiAgICAgaWYgKCFpbnNpZGVMYXllcikgewpAQCAtNDI2OSw3ICs0MjgxLDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6c2V0QmFja2luZ05lZWRzUmVwYWludAogICAgICAgICBpZiAodmlldykK
ICAgICAgICAgICAgIHZpZXctPnJlcGFpbnRWaWV3UmVjdGFuZ2xlKGFic1JlY3QpOwogICAgIH0g
ZWxzZQotICAgICAgICBiYWNraW5nKCktPnNldENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3Qocik7
CisgICAgICAgIGJhY2tpbmcoKS0+c2V0Q29udGVudHNOZWVkRGlzcGxheUluUmVjdChwaXhlbFNu
YXBwZWRJbnRSZWN0KHIpKTsKIH0KIAogLy8gU2luY2Ugd2UncmUgb25seSBwYWludGluZyBub24t
Y29tcG9zaXRlZCBsYXllcnMsIHdlIGtub3cgdGhhdCB0aGV5IGFsbCBzaGFyZSB0aGUgc2FtZSBy
ZXBhaW50Q29udGFpbmVyLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmgJKHJldmlzaW9uIDEwNzQzNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsNyArMjk1LDcgQEAgcHVibGljOgogICAgIC8v
IFNjcm9sbGluZyBtZXRob2RzIGZvciBsYXllcnMgdGhhdCBjYW4gc2Nyb2xsIHRoZWlyIG92ZXJm
bG93LgogICAgIHZvaWQgc2Nyb2xsQnlSZWN1cnNpdmVseShMYXlvdXRVbml0IHhEZWx0YSwgTGF5
b3V0VW5pdCB5RGVsdGEsIFNjcm9sbE9mZnNldENsYW1waW5nID0gU2Nyb2xsT2Zmc2V0VW5jbGFt
cGVkKTsKIAotICAgIExheW91dFNpemUgc2Nyb2xsZWRDb250ZW50T2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gc2Nyb2xsT2Zmc2V0KCkgKyBtX3Njcm9sbE92ZXJmbG93OyB9CisgICAgSW50U2l6ZSBz
Y3JvbGxlZENvbnRlbnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBzY3JvbGxPZmZzZXQoKSArIHJv
dW5kZWRJbnRTaXplKG1fc2Nyb2xsT3ZlcmZsb3cpOyB9CiAKICAgICBpbnQgc2Nyb2xsWE9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsT2Zmc2V0LndpZHRoKCkgKyBzY3JvbGxPcmlnaW4o
KS54KCk7IH0KICAgICBpbnQgc2Nyb2xsWU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xs
T2Zmc2V0LmhlaWdodCgpICsgc2Nyb2xsT3JpZ2luKCkueSgpOyB9CkBAIC0zMjcsMTMgKzMyNywx
MyBAQCBwdWJsaWM6CiAgICAgaW50IGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQoT3ZlcmxheVNj
cm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSkgY29uc3Q7
CiAKICAgICBib29sIGhhc092ZXJmbG93Q29udHJvbHMoKSBjb25zdDsKLSAgICBib29sIGlzUG9p
bnRJblJlc2l6ZUNvbnRyb2woY29uc3QgTGF5b3V0UG9pbnQmIGFic29sdXRlUG9pbnQpIGNvbnN0
OwotICAgIGJvb2wgaGl0VGVzdE92ZXJmbG93Q29udHJvbHMoSGl0VGVzdFJlc3VsdCYsIGNvbnN0
IExheW91dFBvaW50JiBsb2NhbFBvaW50KTsKLSAgICBMYXlvdXRTaXplIG9mZnNldEZyb21SZXNp
emVDb3JuZXIoY29uc3QgTGF5b3V0UG9pbnQmIGFic29sdXRlUG9pbnQpIGNvbnN0OwotCi0gICAg
dm9pZCBwYWludE92ZXJmbG93Q29udHJvbHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0
UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBib29sIHBhaW50aW5nT3Zlcmxh
eUNvbnRyb2xzID0gZmFsc2UpOwotICAgIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0
KTsKLSAgICB2b2lkIHBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRQ
b2ludCYsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QpOworICAgIGJvb2wgaXNQb2ludElu
UmVzaXplQ29udHJvbChjb25zdCBJbnRQb2ludCYgYWJzb2x1dGVQb2ludCkgY29uc3Q7CisgICAg
Ym9vbCBoaXRUZXN0T3ZlcmZsb3dDb250cm9scyhIaXRUZXN0UmVzdWx0JiwgY29uc3QgSW50UG9p
bnQmIGxvY2FsUG9pbnQpOworICAgIEludFNpemUgb2Zmc2V0RnJvbVJlc2l6ZUNvcm5lcihjb25z
dCBJbnRQb2ludCYgYWJzb2x1dGVQb2ludCkgY29uc3Q7CisKKyAgICB2b2lkIHBhaW50T3ZlcmZs
b3dDb250cm9scyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QsIGJvb2wgcGFpbnRpbmdPdmVybGF5Q29udHJvbHMgPSBmYWxzZSk7Cisg
ICAgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRQb2lu
dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZvaWQgcGFpbnRSZXNpemVyKEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVj
dCk7CiAKICAgICB2b2lkIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOwogCkBAIC00MjUs
NiArNDI1LDggQEAgcHVibGljOgogICAgIFJlbmRlckxheWVyKiBhbmNlc3RvckNvbXBvc2l0aW5n
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBlbmNsb3NpbmdDb21wb3NpdGluZ0xheWVyKGZhbHNlKTsg
fQogI2VuZGlmCiAKKyAgICB2b2lkIGNvbnZlcnRUb1BpeGVsU25hcHBlZExheWVyQ29vcmRzKGNv
bnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBJbnRQb2ludCYgbG9jYXRpb24pIGNvbnN0
OworICAgIHZvaWQgY29udmVydFRvUGl4ZWxTbmFwcGVkTGF5ZXJDb29yZHMoY29uc3QgUmVuZGVy
TGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIEludFJlY3QmKSBjb25zdDsKICAgICB2b2lkIGNvbnZlcnRU
b0xheWVyQ29vcmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBMYXlvdXRQb2lu
dCYgbG9jYXRpb24pIGNvbnN0OwogICAgIHZvaWQgY29udmVydFRvTGF5ZXJDb29yZHMoY29uc3Qg
UmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIExheW91dFJlY3QmKSBjb25zdDsKIApAQCAtNTY4
LDcgKzU3MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVaT3JkZXJMaXN0
c1Nsb3dDYXNlKCk7CiAKLSAgICB2b2lkIGNvbXB1dGVSZXBhaW50UmVjdHMoSW50UG9pbnQqIG9m
ZnNldEZyb21Sb290ID0gMCk7CisgICAgdm9pZCBjb21wdXRlUmVwYWludFJlY3RzKExheW91dFBv
aW50KiBvZmZzZXRGcm9tUm9vdCA9IDApOwogICAgIHZvaWQgY2xlYXJSZXBhaW50UmVjdHMoKTsK
IAogICAgIHZvaWQgY2xpcFRvUmVjdChSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgY29uc3QgQ2xpcFJlY3Qm
LApAQCAtNzEzLDExICs3MTUsMTEgQEAgcHJpdmF0ZToKICAgICAvLyBDb252ZXJ0IGEgcG9pbnQg
aW4gYWJzb2x1dGUgY29vcmRzIGludG8gbGF5ZXIgY29vcmRzLCB0YWtpbmcgdHJhbnNmb3JtcyBp
bnRvIGFjY291bnQKICAgICBMYXlvdXRQb2ludCBhYnNvbHV0ZVRvQ29udGVudHMoY29uc3QgTGF5
b3V0UG9pbnQmKSBjb25zdDsKIAotICAgIHZvaWQgcG9zaXRpb25PdmVyZmxvd0NvbnRyb2xzKGNv
bnN0IExheW91dFNpemUmKTsKKyAgICB2b2lkIHBvc2l0aW9uT3ZlcmZsb3dDb250cm9scyhjb25z
dCBJbnRTaXplJik7CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxDb3JuZXJTdHlsZSgpOwogICAgIHZv
aWQgdXBkYXRlUmVzaXplclN0eWxlKCk7CiAKLSAgICB2b2lkIGRyYXdQbGF0Zm9ybVJlc2l6ZXJJ
bWFnZShHcmFwaGljc0NvbnRleHQqLCBMYXlvdXRSZWN0IHJlc2l6ZXJDb3JuZXJSZWN0KTsKKyAg
ICB2b2lkIGRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQqLCBJbnRSZWN0
IHJlc2l6ZXJDb3JuZXJSZWN0KTsKIAogICAgIHZvaWQgdXBkYXRlUGFnaW5hdGlvbigpOwogICAg
IGJvb2wgaXNQYWdpbmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUGFnaW5hdGVkOyB9CkBAIC04
MjEsNyArODIzLDcgQEAgcHJvdGVjdGVkOgogICAgIExheW91dFNpemUgbV9zY3JvbGxPdmVyZmxv
dzsKICAgICAKICAgICAvLyBUaGUgd2lkdGgvaGVpZ2h0IG9mIG91ciBzY3JvbGxlZCBhcmVhLgot
ICAgIEludFNpemUgbV9zY3JvbGxTaXplOworICAgIExheW91dFNpemUgbV9zY3JvbGxTaXplOwog
CiAgICAgLy8gRm9yIGxheWVycyB3aXRoIG92ZXJmbG93LCB3ZSBoYXZlIGEgcGFpciBvZiBzY3Jv
bGxiYXJzLgogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faEJhcjsKQEAgLTg0Myw3ICs4NDUsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgUmVuZGVyTGF5ZXIqIG1fY2xpcFJlY3RzUm9vdDsgICAv
LyBSb290IGxheWVyIHVzZWQgdG8gY29tcHV0ZSBjbGlwIHJlY3RzLgogI2VuZGlmCiAKLSAgICBM
YXlvdXRQb2ludCBtX2NhY2hlZE92ZXJsYXlTY3JvbGxiYXJPZmZzZXQ7CisgICAgSW50UG9pbnQg
bV9jYWNoZWRPdmVybGF5U2Nyb2xsYmFyT2Zmc2V0OwogCiAgICAgUmVuZGVyTWFycXVlZSogbV9t
YXJxdWVlOyAvLyBVc2VkIGJ5IGxheWVycyB3aXRoIG92ZXJmbG93Om1hcnF1ZWUKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127004</attachid>
            <date>2012-02-14 11:24:21 -0800</date>
            <delta_ts>2012-02-14 13:17:50 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-78511-20120214112420.patch</filename>
            <type>text/plain</type>
            <size>19497</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzcxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBACisyMDEyLTAyLTE0ICBMZXZpIFdl
aW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KKworICAgICAgICBVcGRhdGUgdXNhZ2Ugb2Yg
TGF5b3V0VW5pdHMgaW4gUmVuZGVyTGF5ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc4NTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJh
c2VyLgorCisgICAgICAgIFVwZGF0aW5nIFJlbmRlckxheWVyIHRvIHByb3Blcmx5IHVzZSBMYXlv
dXRVbml0cy4gU2VlIGRlc2NyaXB0aW9ucyBiZWxvdyBmb3IgdGhlIHJhdGlvbmFsZSBiZWhpbmQg
YWxsCisgICAgICAgIHRoZSBjaGFuZ2VzLiBBbHNvIGFkZGluZyBhIHJvdW5kZWRJbnRTaXplIG1l
dGhvZCB0aGF0IHRha2VzIGEgTGF5b3V0U2l6ZS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5v
IGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIHJlbmRlcmluZy9MYXlvdXRUeXBlcy5o
OgorICAgICAgICAoV2ViQ29yZTo6cm91bmRlZEludFNpemUpOiBJbmxpbmUgbWV0aG9kIHRoYXQg
Y3VycmVudGx5IGRvZXMgbm90aGluZywgYnV0IHdpbGwgcm91bmQgYSBMYXlvdXRTaXplCisgICAg
ICAgIHRvIGFuIEludFNpemUuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyk6IFN3
aXRjaGluZyByZXBhaW50IGFuZCBvdXRsaW5lIGJveGVzIHRvIExheW91dFJlY3RzLCBhcworICAg
ICAgICBpdCdzIGltcG9ydGFudCB0byBrZWVwIHRoZSBwcmVjaXNpb24gb2YgdGhlc2UgcmVjdHMg
dW50aWwgaGFuZGluZyBvZmYgdG8gdGhlIGVtYmVkZGVyIChpbiBGcmFtZVZpZXcpLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbXB1dGVSZXBhaW50UmVjdHMpOiBSZXBhaW50IHJl
Y3RzIHNob3VsZCBiZSBwcmVzZXJ2ZWQgaW4gc3VicGl4ZWwgdW5pdHMgdW50aWwKKyAgICAgICAg
YmVpbmcgcGFzc2VkIHRvIHRoZSBlbWJlZGRpbmcgbGF5ZXIuIFRoaXMgcHJldmVudHMgbmVlZGxl
c3MgcmVwYWludHMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29udmVydFRvUGl4
ZWxTbmFwcGVkTGF5ZXJDb29yZHMpOiBDb252ZW5pZW5jZSBmdW5jdGlvbiB0byByZXR1cm4gcGl4
ZWwgc25hcHBlZCByZWN0cworICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6Y29udmVydFRvTGF5ZXJDb29yZHMpOiBGaXhpbmcgYSBzdHlsZSBmbGF3Lgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUpOiBQaXhl
bCBzbmFwcGluZyB0aGUgcmVjdCB3aGVuIGhhbmRpbmcgb2ZmIHRvIHRoZSBlbWJlZGRlci4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjptYXhpbXVtU2Nyb2xsUG9zaXRpb24pOiBTY3Jv
bGwgb2Zmc2V0cyBhcmUgcm91bmRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpz
Y3JvbGxDb3JuZXJSZWN0KTogU2Nyb2xsYmFycyBhcmUgZHJhd24gbmF0aXZlbHkgYW5kIHNob3Vs
ZCBiZSBwb3NpdGlvbmVkIG9uIHBpeGVsCisgICAgICAgIGJvdW5kYXJpZXMuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsQ29ybmVyQW5kUmVzaXplclJlY3QpOiBSZXNpemUg
Y29ybmVyIGRvZXNuJ3QgaW5mbHVlbmNlIHRoZSBzaXplL3Bvc2l0aW9uIG9mCisgICAgICAgIHJl
bmRlciBvYmplY3RzLiBJdCBpcyBvbmx5IHBhaW50ZWQgYW5kIGhpdCB0ZXN0ZWQuIFRoZXJlZm9y
IGl0IHNob3VsZCB1c2UgaW50ZWdlcnMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
b2Zmc2V0RnJvbVJlc2l6ZUNvcm5lcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnBvc2l0aW9uT3ZlcmZsb3dDb250cm9scyk6IE92ZXJmbG93IGNvbnRyb2xzIGFyZSBk
cmF3biBuYXRpdmVseSBhbmQgc2hvdWxkIGJlCisgICAgICAgIHBvc2l0aW9uZWQgb24gaW50ZWdl
ciBib3VuZGFyaWVzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmZs
b3dDb250cm9scyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50
U2Nyb2xsQ29ybmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZHJh
d1BsYXRmb3JtUmVzaXplckltYWdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6cGFpbnRSZXNpemVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbHMpOiBIaXQgdGVzdGluZyAmIG92ZXJmbG93IGNvbnRy
b2xzIGJvdGggdXNlIGludGVnZXJzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNs
aXBUb1JlY3QpOiBDbGlwcGluZyB0byBhY3R1YWwgcGFpbnRlZCAocGl4ZWwgc25hcHBlZCkgbGF5
ZXIgYm91bmRzIGluIHRoZQorICAgICAgICBncmFwaGljcyBjb250ZXh0LgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyk6IENhbGxpbmcgcGFpbnRPdmVy
Zmxvd0NvbnRyb2xzIGF0IHBpeGVsIGJvdW5kcy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpoaXRUZXN0KTogSW50ZXJzZWN0aW5nIHRoZSBoaXQgdGVzdCBhcmVhIHdpdGggcGl4ZWwg
c25hcHBlZCBib3VuZGFyaWVzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNldEJh
Y2tpbmdOZWVkc1JlcGFpbnRJblJlY3QpOiBTZW5kaW5nIHBpeGVsU25hcHBlZCByZWN0cyB0byB0
aGUgYmFja2luZworICAgICAgICBzdG9yZSwgd2hpY2ggb25seSBjYXJlcyBhYm91dCBwaXhlbHMs
IGFuZCBoZW5jZSBpbnRlZ2Vycy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxlZENvbnRlbnRPZmZzZXQpOiBS
ZW5kZXJMYXllcidzIHNjcm9sbCBvZmZzZXRzIGFyZSB1c2VkIGluIHBsYXRmb3JtCisgICAgICAg
IGNvZGUsIHNvIHdlIG5lZWQgdG8gcmV0dXJuIHRoZW0gYXMgaW50ZWdlcnMuIFJvdW5kaW5nIHRo
ZSBzY3JvbGwgb3ZlcmZsb3cgYmVmb3JlIGFkZGluZyBpdCB0byB0aGUKKyAgICAgICAgc2Nyb2xs
IG9mZnNldCwgd2hpY2ggd2FzIGFscmVhZHkgc3RvcmVkIGluIGludGVnZXJzLgorICAgICAgICAo
UmVuZGVyTGF5ZXIpOgorCiAyMDEyLTAyLTEyICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFw
cGxlLmNvbT4KIAogICAgICAgICBEb24ndCBpbmNsdWRlIENhY2hlZFJlc291cmNlcyB0aGF0IGhh
dmVuJ3QgZG93bmxvYWRlZCB3aGVuIHBvcHVsYXRpbmcgdGhlIFdlYiBJbnNwZWN0b3Igb24gbG9h
ZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRUeXBlcy5oCShyZXZpc2lvbiAx
MDc3MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0VHlwZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsNiArNTYsMTEgQEAgaW5saW5lIEludFJlY3QgcGl4ZWxTbmFwcGVkSW50
UmVjdChjb25zdAogICAgIHJldHVybiByZWN0OwogfQogCitpbmxpbmUgSW50U2l6ZSByb3VuZGVk
SW50U2l6ZShjb25zdCBMYXlvdXRTaXplJiBzKQoreworICAgIHJldHVybiBzOworfQorCiBpbmxp
bmUgTGF5b3V0U2l6ZSByb3VuZGVkTGF5b3V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHMpCiB7CiAg
ICAgcmV0dXJuIHJvdW5kZWRJbnRTaXplKHMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAxMDc3MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTgsNyArMzU4LDcg
QEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMoTAogICAgICAgICAvLyBh
cyBjYW5Vc2VDb252ZXJ0VG9MYXllckNvb3JkcyBtYXkgYmUgdHJ1ZSBmb3IgYW4gYW5jZXN0b3Ig
bGF5ZXIuCiAgICAgICAgIGNvbnZlcnRUb0xheWVyQ29vcmRzKHJvb3QoKSwgb2Zmc2V0KTsKICAg
ICB9Ci0gICAgcG9zaXRpb25PdmVyZmxvd0NvbnRyb2xzKHRvU2l6ZShvZmZzZXQpKTsKKyAgICBw
b3NpdGlvbk92ZXJmbG93Q29udHJvbHModG9TaXplKHJvdW5kZWRJbnRQb2ludChvZmZzZXQpKSk7
CiAKICAgICB1cGRhdGVWaXNpYmlsaXR5U3RhdHVzKCk7CiAKQEAgLTM3Niw4ICszNzYsOCBAQCB2
b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllclBvc2l0aW9ucyhMCiAgICAgICAgIEFTU0VSVCgh
dmlldy0+bGF5b3V0U3RhdGVFbmFibGVkKCkpOwogCiAgICAgICAgIFJlbmRlckJveE1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyID0gcmVuZGVyZXIoKS0+Y29udGFpbmVyRm9yUmVwYWludCgp
OwotICAgICAgICBJbnRSZWN0IG9sZFJlcGFpbnRSZWN0ID0gbV9yZXBhaW50UmVjdDsKLSAgICAg
ICAgSW50UmVjdCBvbGRPdXRsaW5lQm94ID0gbV9vdXRsaW5lQm94OworICAgICAgICBMYXlvdXRS
ZWN0IG9sZFJlcGFpbnRSZWN0ID0gbV9yZXBhaW50UmVjdDsKKyAgICAgICAgTGF5b3V0UmVjdCBv
bGRPdXRsaW5lQm94ID0gbV9vdXRsaW5lQm94OwogICAgICAgICBjb21wdXRlUmVwYWludFJlY3Rz
KG9mZnNldEZyb21Sb290KTsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBBU1NFUlQgdGhhdCB2
YWx1ZSBjYWxjdWxhdGVkIGZvciBtX291dGxpbmVCb3ggdXNpbmcgdGhlIGNhY2hlZCBvZmZzZXQg
aXMgdGhlIHNhbWUKICAgICAgICAgLy8gYXMgdGhlIHZhbHVlIG5vdCB1c2luZyB0aGUgY2FjaGVk
IG9mZnNldCwgYnV0IHdlIGNhbid0IGR1ZSB0byBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzcwNDgKQEAgLTQzNCw3ICs0MzQsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxh
eWVyOjpyZXBhaW50UmVjdEluY2x1CiAgICAgcmV0dXJuIHJlcGFpbnRSZWN0OwogfQogCi12b2lk
IFJlbmRlckxheWVyOjpjb21wdXRlUmVwYWludFJlY3RzKEludFBvaW50KiBvZmZzZXRGcm9tUm9v
dCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OmNvbXB1dGVSZXBhaW50UmVjdHMoTGF5b3V0UG9pbnQqIG9m
ZnNldEZyb21Sb290KQogewogICAgIEFTU0VSVCghbV92aXNpYmxlQ29udGVudFN0YXR1c0RpcnR5
KTsKIApAQCAtMTIzOCw4ICsxMjM4LDIxIEBAIHZvaWQgUmVuZGVyTGF5ZXI6Omluc2VydE9ubHlU
aGlzTGF5ZXIoKQogICAgIGNsZWFyQ2xpcFJlY3RzSW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKIH0K
IAotdm9pZCAKLVJlbmRlckxheWVyOjpjb252ZXJ0VG9MYXllckNvb3Jkcyhjb25zdCBSZW5kZXJM
YXllciogYW5jZXN0b3JMYXllciwgTGF5b3V0UG9pbnQmIGxvY2F0aW9uKSBjb25zdAordm9pZCBS
ZW5kZXJMYXllcjo6Y29udmVydFRvUGl4ZWxTbmFwcGVkTGF5ZXJDb29yZHMoY29uc3QgUmVuZGVy
TGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIEludFBvaW50JiByb3VuZGVkTG9jYXRpb24pIGNvbnN0Cit7
CisgICAgTGF5b3V0UG9pbnQgbG9jYXRpb24gPSByb3VuZGVkTG9jYXRpb247CisgICAgY29udmVy
dFRvTGF5ZXJDb29yZHMoYW5jZXN0b3JMYXllciwgbG9jYXRpb24pOworICAgIHJvdW5kZWRMb2Nh
dGlvbiA9IHJvdW5kZWRJbnRQb2ludChsb2NhdGlvbik7Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6
OmNvbnZlcnRUb1BpeGVsU25hcHBlZExheWVyQ29vcmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNl
c3RvckxheWVyLCBJbnRSZWN0JiByb3VuZGVkUmVjdCkgY29uc3QKK3sKKyAgICBMYXlvdXRSZWN0
IHJlY3QgPSByb3VuZGVkUmVjdDsKKyAgICBjb252ZXJ0VG9MYXllckNvb3JkcyhhbmNlc3Rvckxh
eWVyLCByZWN0KTsKKyAgICByb3VuZGVkUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVjdCk7
Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6OmNvbnZlcnRUb0xheWVyQ29vcmRzKGNvbnN0IFJlbmRl
ckxheWVyKiBhbmNlc3RvckxheWVyLCBMYXlvdXRQb2ludCYgbG9jYXRpb24pIGNvbnN0CiB7CiAg
ICAgaWYgKGFuY2VzdG9yTGF5ZXIgPT0gdGhpcykKICAgICAgICAgcmV0dXJuOwpAQCAtMTMyNiw4
ICsxMzM5LDcgQEAgUmVuZGVyTGF5ZXI6OmNvbnZlcnRUb0xheWVyQ29vcmRzKGNvbnN0IAogICAg
IGxvY2F0aW9uICs9IHRvU2l6ZShtX3RvcExlZnQpOwogfQogCi12b2lkCi1SZW5kZXJMYXllcjo6
Y29udmVydFRvTGF5ZXJDb29yZHMoY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIExh
eW91dFJlY3QmIHJlY3QpIGNvbnN0Cit2b2lkIFJlbmRlckxheWVyOjpjb252ZXJ0VG9MYXllckNv
b3Jkcyhjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciwgTGF5b3V0UmVjdCYgcmVjdCkg
Y29uc3QKIHsKICAgICBMYXlvdXRQb2ludCBkZWx0YTsKICAgICBjb252ZXJ0VG9MYXllckNvb3Jk
cyhhbmNlc3RvckxheWVyLCBkZWx0YSk7CkBAIC0xNzg5LDcgKzE4MDEsNyBAQCBJbnRQb2ludCBS
ZW5kZXJMYXllcjo6bWluaW11bVNjcm9sbFBvc2l0CiBJbnRQb2ludCBSZW5kZXJMYXllcjo6bWF4
aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogbV9zY3JvbGxTaXpl
IG1heSBub3QgYmUgdXAtdG8tZGF0ZSBpZiBtX3Njcm9sbERpbWVuc2lvbnNEaXJ0eSBpcyB0cnVl
LgotICAgIHJldHVybiBzY3JvbGxPcmlnaW4oKSArIG1fc2Nyb2xsU2l6ZSAtIHZpc2libGVDb250
ZW50UmVjdCh0cnVlKS5zaXplKCk7CisgICAgcmV0dXJuIHNjcm9sbE9yaWdpbigpICsgcm91bmRl
ZEludFNpemUobV9zY3JvbGxTaXplKSAtIHZpc2libGVDb250ZW50UmVjdCh0cnVlKS5zaXplKCk7
CiB9CiAKIEludFJlY3QgUmVuZGVyTGF5ZXI6OnZpc2libGVDb250ZW50UmVjdChib29sIGluY2x1
ZGVTY3JvbGxiYXJzKSBjb25zdApAQCAtMTg1MSw3ICsxODYzLDcgQEAgSW50UmVjdCBSZW5kZXJM
YXllcjo6c2Nyb2xsQ29ybmVyUmVjdCgpIAogICAgIGJvb2wgaGFzVmVydGljYWxCYXIgPSB2ZXJ0
aWNhbFNjcm9sbGJhcigpOwogICAgIGJvb2wgaGFzUmVzaXplciA9IHJlbmRlcmVyKCktPnN0eWxl
KCktPnJlc2l6ZSgpICE9IFJFU0laRV9OT05FOwogICAgIGlmICgoaGFzSG9yaXpvbnRhbEJhciAm
JiBoYXNWZXJ0aWNhbEJhcikgfHwgKGhhc1Jlc2l6ZXIgJiYgKGhhc0hvcml6b250YWxCYXIgfHwg
aGFzVmVydGljYWxCYXIpKSkKLSAgICAgICAgcmV0dXJuIGNvcm5lclJlY3QodGhpcywgcmVuZGVy
Qm94KCktPmJvcmRlckJveFJlY3QoKSk7CisgICAgICAgIHJldHVybiBjb3JuZXJSZWN0KHRoaXMs
IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVyQm94KCktPmJvcmRlckJveFJlY3QoKSkpOwogICAg
IHJldHVybiBJbnRSZWN0KCk7CiB9CiAKQEAgLTE4NzAsNyArMTg4Miw3IEBAIEludFJlY3QgUmVu
ZGVyTGF5ZXI6OnNjcm9sbENvcm5lckFuZFJlc2kKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsK
ICAgICBJbnRSZWN0IHNjcm9sbENvcm5lckFuZFJlc2l6ZXIgPSBzY3JvbGxDb3JuZXJSZWN0KCk7
CiAgICAgaWYgKHNjcm9sbENvcm5lckFuZFJlc2l6ZXIuaXNFbXB0eSgpKQotICAgICAgICBzY3Jv
bGxDb3JuZXJBbmRSZXNpemVyID0gcmVzaXplckNvcm5lclJlY3QodGhpcywgYm94LT5ib3JkZXJC
b3hSZWN0KCkpOworICAgICAgICBzY3JvbGxDb3JuZXJBbmRSZXNpemVyID0gcmVzaXplckNvcm5l
clJlY3QodGhpcywgcGl4ZWxTbmFwcGVkSW50UmVjdChib3gtPmJvcmRlckJveFJlY3QoKSkpOwog
ICAgIHJldHVybiBzY3JvbGxDb3JuZXJBbmRSZXNpemVyOwogfQogCkBAIC0yMTMyLDcgKzIxNDQs
NyBAQCBpbnQgUmVuZGVyTGF5ZXI6Omhvcml6b250YWxTY3JvbGxiYXJIZWlnCiAgICAgcmV0dXJu
IG1faEJhci0+aGVpZ2h0KCk7CiB9CiAKLUxheW91dFNpemUgUmVuZGVyTGF5ZXI6Om9mZnNldEZy
b21SZXNpemVDb3JuZXIoY29uc3QgTGF5b3V0UG9pbnQmIGFic29sdXRlUG9pbnQpIGNvbnN0CitJ
bnRTaXplIFJlbmRlckxheWVyOjpvZmZzZXRGcm9tUmVzaXplQ29ybmVyKGNvbnN0IEludFBvaW50
JiBhYnNvbHV0ZVBvaW50KSBjb25zdAogewogICAgIC8vIEN1cnJlbnRseSB0aGUgcmVzaXplIGNv
cm5lciBpcyBhbHdheXMgdGhlIGJvdHRvbSByaWdodCBjb3JuZXIKICAgICAvLyBGSVhNRTogVGhp
cyBhc3N1bWVzIHRoZSBsb2NhdGlvbiBpcyAwLCAwLiBJcyB0aGlzIGd1YXJhbnRlZWQgdG8gYWx3
YXlzIGJlIHRoZSBjYXNlPwpAQCAtMjE0Niw3ICsyMTU4LDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6
aGFzT3ZlcmZsb3dDb250cm9scygpIAogICAgIHJldHVybiBtX2hCYXIgfHwgbV92QmFyIHx8IG1f
c2Nyb2xsQ29ybmVyIHx8IHJlbmRlcmVyKCktPnN0eWxlKCktPnJlc2l6ZSgpICE9IFJFU0laRV9O
T05FOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpwb3NpdGlvbk92ZXJmbG93Q29udHJvbHMoY29u
c3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbUxheWVyKQordm9pZCBSZW5kZXJMYXllcjo6cG9zaXRp
b25PdmVyZmxvd0NvbnRyb2xzKGNvbnN0IEludFNpemUmIG9mZnNldEZyb21MYXllcikKIHsKICAg
ICBpZiAoIW1faEJhciAmJiAhbV92QmFyICYmICghcmVuZGVyZXIoKS0+aGFzT3ZlcmZsb3dDbGlw
KCkgfHwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+cmVzaXplKCkgPT0gUkVTSVpFX05PTkUpKQogICAg
ICAgICByZXR1cm47CkBAIC0yMzk4LDcgKzI0MTAsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRh
dGVTY3JvbGxJbmZvQWZ0ZXJMCiAgICAgICAgIHVwZGF0ZU92ZXJmbG93U3RhdHVzKGhvcml6b250
YWxPdmVyZmxvdywgdmVydGljYWxPdmVyZmxvdyk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnBh
aW50T3ZlcmZsb3dDb250cm9scyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91
dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgTGF5b3V0UmVjdCYgZGFtYWdlUmVjdCwgYm9vbCBw
YWludGluZ092ZXJsYXlDb250cm9scykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50T3ZlcmZsb3dD
b250cm9scyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBwYWludE9m
ZnNldCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCwgYm9vbCBwYWludGluZ092ZXJsYXlDb250
cm9scykKIHsKICAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiB3ZSBoYXZlIG5vIG92ZXJmbG93
LgogICAgIGlmICghcmVuZGVyZXIoKS0+aGFzT3ZlcmZsb3dDbGlwKCkpCkBAIC0yNDIyLDcgKzI0
MzQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHMoCiAgICAgaWYg
KHBhaW50aW5nT3ZlcmxheUNvbnRyb2xzICYmICFoYXNPdmVybGF5U2Nyb2xsYmFycygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBMYXlvdXRQb2ludCBhZGp1c3RlZFBhaW50T2Zmc2V0ID0gcGFp
bnRPZmZzZXQ7CisgICAgSW50UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHBhaW50T2Zmc2V0
OwogICAgIGlmIChwYWludGluZ092ZXJsYXlDb250cm9scykKICAgICAgICAgYWRqdXN0ZWRQYWlu
dE9mZnNldCA9IG1fY2FjaGVkT3ZlcmxheVNjcm9sbGJhck9mZnNldDsKIApAQCAtMjQ1OCwxMiAr
MjQ3MCwxMiBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludE92ZXJmbG93Q29udHJvbHMoCiAgICAg
cGFpbnRSZXNpemVyKGNvbnRleHQsIGFkanVzdGVkUGFpbnRPZmZzZXQsIGRhbWFnZVJlY3QpOwog
fQogCi12b2lkIFJlbmRlckxheWVyOjpwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgTGF5b3V0UmVj
dCYgZGFtYWdlUmVjdCkKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50U2Nyb2xsQ29ybmVyKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBJ
bnRSZWN0JiBkYW1hZ2VSZWN0KQogewogICAgIFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7
CiAgICAgQVNTRVJUKGJveCk7CiAKLSAgICBMYXlvdXRSZWN0IGFic1JlY3QgPSBzY3JvbGxDb3Ju
ZXJSZWN0KCk7CisgICAgSW50UmVjdCBhYnNSZWN0ID0gc2Nyb2xsQ29ybmVyUmVjdCgpOwogICAg
IGFic1JlY3QubW92ZUJ5KHBhaW50T2Zmc2V0KTsKICAgICBpZiAoIWFic1JlY3QuaW50ZXJzZWN0
cyhkYW1hZ2VSZWN0KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ4NCw3ICsyNDk2LDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6cGFpbnRTY3JvbGxDb3JuZXIoR3JhcAogICAgICAgICBjb250ZXh0LT5m
aWxsUmVjdChhYnNSZWN0LCBDb2xvcjo6d2hpdGUsIGJveC0+c3R5bGUoKS0+Y29sb3JTcGFjZSgp
KTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3JtUmVzaXplckltYWdlKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgTGF5b3V0UmVjdCByZXNpemVyQ29ybmVyUmVjdCkKK3ZvaWQg
UmVuZGVyTGF5ZXI6OmRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIEludFJlY3QgcmVzaXplckNvcm5lclJlY3QpCiB7CiAgICAgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IgPSBXZWJDb3JlOjpkZXZpY2VTY2FsZUZhY3RvcihyZW5kZXJlcigpLT5mcmFtZSgp
KTsKIApAQCAtMjUwNSw3ICsyNTE3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6ZHJhd1BsYXRmb3Jt
UmVzaXplckltYQogICAgIGNvbnRleHQtPmRyYXdJbWFnZShyZXNpemVDb3JuZXJJbWFnZS5nZXQo
KSwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBpbWFnZVJlY3QpOwogfQogCi12
b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJl
Y3QpCit2b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRQb2ludCYgcGFpbnRPZmZzZXQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJl
Y3QpCiB7CiAgICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPnJlc2l6ZSgpID09IFJFU0laRV9O
T05FKQogICAgICAgICByZXR1cm47CkBAIC0yNTEzLDcgKzI1MjUsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpwYWludFJlc2l6ZXIoR3JhcGhpY3NDCiAgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJC
b3goKTsKICAgICBBU1NFUlQoYm94KTsKIAotICAgIExheW91dFJlY3QgYWJzUmVjdCA9IHJlc2l6
ZXJDb3JuZXJSZWN0KHRoaXMsIGJveC0+Ym9yZGVyQm94UmVjdCgpKTsKKyAgICBJbnRSZWN0IGFi
c1JlY3QgPSByZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBwaXhlbFNuYXBwZWRJbnRSZWN0KGJveC0+
Ym9yZGVyQm94UmVjdCgpKSk7CiAgICAgYWJzUmVjdC5tb3ZlQnkocGFpbnRPZmZzZXQpOwogICAg
IGlmICghYWJzUmVjdC5pbnRlcnNlY3RzKGRhbWFnZVJlY3QpKQogICAgICAgICByZXR1cm47CkBA
IC0yNTM1LDggKzI1NDcsOCBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludFJlc2l6ZXIoR3JhcGhp
Y3NDCiAgICAgaWYgKCFoYXNPdmVybGF5U2Nyb2xsYmFycygpICYmIChtX3ZCYXIgfHwgbV9oQmFy
KSkgewogICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRl
eHQpOwogICAgICAgICBjb250ZXh0LT5jbGlwKGFic1JlY3QpOwotICAgICAgICBMYXlvdXRSZWN0
IGxhcmdlckNvcm5lciA9IGFic1JlY3Q7Ci0gICAgICAgIGxhcmdlckNvcm5lci5zZXRTaXplKExh
eW91dFNpemUobGFyZ2VyQ29ybmVyLndpZHRoKCkgKyAxLCBsYXJnZXJDb3JuZXIuaGVpZ2h0KCkg
KyAxKSk7CisgICAgICAgIEludFJlY3QgbGFyZ2VyQ29ybmVyID0gYWJzUmVjdDsKKyAgICAgICAg
bGFyZ2VyQ29ybmVyLnNldFNpemUoSW50U2l6ZShsYXJnZXJDb3JuZXIud2lkdGgoKSArIDEsIGxh
cmdlckNvcm5lci5oZWlnaHQoKSArIDEpKTsKICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29s
b3IoQ29sb3IobWFrZVJHQigyMTcsIDIxNywgMjE3KSksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwog
ICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoMS4wZik7CiAgICAgICAgIGNvbnRl
eHQtPnNldEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwpAQCAtMjU1OCw3ICsyNTcwLDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6aXNQb2ludEluUmVzaXpl
Q29udHJvbAogICAgIHJldHVybiByZXNpemVyQ29ybmVyUmVjdCh0aGlzLCBsb2NhbEJvdW5kcyku
Y29udGFpbnMobG9jYWxQb2ludCk7CiB9CiAgICAgCi1ib29sIFJlbmRlckxheWVyOjpoaXRUZXN0
T3ZlcmZsb3dDb250cm9scyhIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGNvbnN0IExheW91dFBvaW50
JiBsb2NhbFBvaW50KQorYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdE92ZXJmbG93Q29udHJvbHMo
SGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBJbnRQb2ludCYgbG9jYWxQb2ludCkKIHsKICAg
ICBpZiAoIW1faEJhciAmJiAhbV92QmFyICYmICghcmVuZGVyZXIoKS0+aGFzT3ZlcmZsb3dDbGlw
KCkgfHwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+cmVzaXplKCkgPT0gUkVTSVpFX05PTkUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNTY4LDcgKzI1ODAsNyBAQCBib29sIFJlbmRlckxheWVy
OjpoaXRUZXN0T3ZlcmZsb3dDb250cm9sCiAgICAgCiAgICAgSW50UmVjdCByZXNpemVDb250cm9s
UmVjdDsKICAgICBpZiAocmVuZGVyZXIoKS0+c3R5bGUoKS0+cmVzaXplKCkgIT0gUkVTSVpFX05P
TkUpIHsKLSAgICAgICAgcmVzaXplQ29udHJvbFJlY3QgPSByZXNpemVyQ29ybmVyUmVjdCh0aGlz
LCBib3gtPmJvcmRlckJveFJlY3QoKSk7CisgICAgICAgIHJlc2l6ZUNvbnRyb2xSZWN0ID0gcmVz
aXplckNvcm5lclJlY3QodGhpcywgcGl4ZWxTbmFwcGVkSW50UmVjdChib3gtPmJvcmRlckJveFJl
Y3QoKSkpOwogICAgICAgICBpZiAocmVzaXplQ29udHJvbFJlY3QuY29udGFpbnMobG9jYWxQb2lu
dCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yNjQ2LDcgKzI2NTgsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpjbGlwVG9SZWN0KFJlbmRlckxheWVyCiAgICAgaWYgKGNsaXBS
ZWN0LnJlY3QoKSA9PSBwYWludERpcnR5UmVjdCkKICAgICAgICAgcmV0dXJuOwogICAgIGNvbnRl
eHQtPnNhdmUoKTsKLSAgICBjb250ZXh0LT5jbGlwKGNsaXBSZWN0LnJlY3QoKSk7CisgICAgY29u
dGV4dC0+Y2xpcChwaXhlbFNuYXBwZWRJbnRSZWN0KGNsaXBSZWN0LnJlY3QoKSkpOwogICAgIAog
ICAgIGlmICghY2xpcFJlY3QuaGFzUmFkaXVzKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTI5NDcs
NyArMjk1OSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhSZW4KIAog
ICAgIGlmIChpc1BhaW50aW5nT3ZlcmxheVNjcm9sbGJhcnMpIHsKICAgICAgICAgY2xpcFRvUmVj
dChyb290TGF5ZXIsIGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBkYW1hZ2VSZWN0KTsKLSAgICAg
ICAgcGFpbnRPdmVyZmxvd0NvbnRyb2xzKGNvbnRleHQsIHJvdW5kZWRJbnRQb2ludChwYWludE9m
ZnNldCksIGRhbWFnZVJlY3QucmVjdCgpLCB0cnVlKTsKKyAgICAgICAgcGFpbnRPdmVyZmxvd0Nv
bnRyb2xzKGNvbnRleHQsIHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCksIHBpeGVsU25hcHBl
ZEludFJlY3QoZGFtYWdlUmVjdC5yZWN0KCkpLCB0cnVlKTsKICAgICAgICAgcmVzdG9yZUNsaXAo
Y29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIGRhbWFnZVJlY3QpOwogICAgIH0KIApAQCAtMzExMSw5
ICszMTIzLDkgQEAgYm9vbCBSZW5kZXJMYXllcjo6aGl0VGVzdChjb25zdCBIaXRUZXN0Ugogewog
ICAgIHJlbmRlcmVyKCktPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOwogICAgIAotICAgIExh
eW91dFJlY3QgaGl0VGVzdEFyZWEgPSByZW5kZXJlcigpLT5pc1JlbmRlckZsb3dUaHJlYWQoKSA/
IHRvUmVuZGVyRmxvd1RocmVhZChyZW5kZXJlcigpKS0+Ym9yZGVyQm94UmVjdCgpIDogcmVuZGVy
ZXIoKS0+dmlldygpLT5kb2N1bWVudFJlY3QoKTsKKyAgICBJbnRSZWN0IGhpdFRlc3RBcmVhID0g
cmVuZGVyZXIoKS0+aXNSZW5kZXJGbG93VGhyZWFkKCkgPyB0b1JlbmRlckZsb3dUaHJlYWQocmVu
ZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKSA6IHJlbmRlcmVyKCktPnZpZXcoKS0+ZG9jdW1lbnRS
ZWN0KCk7CiAgICAgaWYgKCFyZXF1ZXN0Lmlnbm9yZUNsaXBwaW5nKCkpCi0gICAgICAgIGhpdFRl
c3RBcmVhLmludGVyc2VjdChmcmFtZVZpc2libGVSZWN0KHJlbmRlcmVyKCkpKTsKKyAgICAgICAg
aGl0VGVzdEFyZWEuaW50ZXJzZWN0KHBpeGVsU25hcHBlZEludFJlY3QoZnJhbWVWaXNpYmxlUmVj
dChyZW5kZXJlcigpKSkpOwogCiAgICAgUmVuZGVyTGF5ZXIqIGluc2lkZUxheWVyID0gaGl0VGVz
dExheWVyKHRoaXMsIDAsIHJlcXVlc3QsIHJlc3VsdCwgaGl0VGVzdEFyZWEsIHJlc3VsdC5wb2lu
dCgpLCBmYWxzZSk7CiAgICAgaWYgKCFpbnNpZGVMYXllcikgewpAQCAtNDI3MCw3ICs0MjgyLDcg
QEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0QmFja2luZ05lZWRzUmVwYWludAogICAgICAgICBpZiAo
dmlldykKICAgICAgICAgICAgIHZpZXctPnJlcGFpbnRWaWV3UmVjdGFuZ2xlKGFic1JlY3QpOwog
ICAgIH0gZWxzZQotICAgICAgICBiYWNraW5nKCktPnNldENvbnRlbnRzTmVlZERpc3BsYXlJblJl
Y3Qocik7CisgICAgICAgIGJhY2tpbmcoKS0+c2V0Q29udGVudHNOZWVkRGlzcGxheUluUmVjdChw
aXhlbFNuYXBwZWRJbnRSZWN0KHIpKTsKIH0KIAogLy8gU2luY2Ugd2UncmUgb25seSBwYWludGlu
ZyBub24tY29tcG9zaXRlZCBsYXllcnMsIHdlIGtub3cgdGhhdCB0aGV5IGFsbCBzaGFyZSB0aGUg
c2FtZSByZXBhaW50Q29udGFpbmVyLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgJKHJldmlzaW9uIDEwNzcxNSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsNyArMjk1LDcgQEAgcHVibGljOgog
ICAgIC8vIFNjcm9sbGluZyBtZXRob2RzIGZvciBsYXllcnMgdGhhdCBjYW4gc2Nyb2xsIHRoZWly
IG92ZXJmbG93LgogICAgIHZvaWQgc2Nyb2xsQnlSZWN1cnNpdmVseShMYXlvdXRVbml0IHhEZWx0
YSwgTGF5b3V0VW5pdCB5RGVsdGEsIFNjcm9sbE9mZnNldENsYW1waW5nID0gU2Nyb2xsT2Zmc2V0
VW5jbGFtcGVkKTsKIAotICAgIExheW91dFNpemUgc2Nyb2xsZWRDb250ZW50T2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gc2Nyb2xsT2Zmc2V0KCkgKyBtX3Njcm9sbE92ZXJmbG93OyB9CisgICAgSW50
U2l6ZSBzY3JvbGxlZENvbnRlbnRPZmZzZXQoKSBjb25zdCB7IHJldHVybiBzY3JvbGxPZmZzZXQo
KSArIHJvdW5kZWRJbnRTaXplKG1fc2Nyb2xsT3ZlcmZsb3cpOyB9CiAKICAgICBpbnQgc2Nyb2xs
WE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsT2Zmc2V0LndpZHRoKCkgKyBzY3JvbGxP
cmlnaW4oKS54KCk7IH0KICAgICBpbnQgc2Nyb2xsWU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Nyb2xsT2Zmc2V0LmhlaWdodCgpICsgc2Nyb2xsT3JpZ2luKCkueSgpOyB9CkBAIC0zMjcsMTMg
KzMyNywxMyBAQCBwdWJsaWM6CiAgICAgaW50IGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQoT3Zl
cmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSkg
Y29uc3Q7CiAKICAgICBib29sIGhhc092ZXJmbG93Q29udHJvbHMoKSBjb25zdDsKLSAgICBib29s
IGlzUG9pbnRJblJlc2l6ZUNvbnRyb2woY29uc3QgTGF5b3V0UG9pbnQmIGFic29sdXRlUG9pbnQp
IGNvbnN0OwotICAgIGJvb2wgaGl0VGVzdE92ZXJmbG93Q29udHJvbHMoSGl0VGVzdFJlc3VsdCYs
IGNvbnN0IExheW91dFBvaW50JiBsb2NhbFBvaW50KTsKLSAgICBMYXlvdXRTaXplIG9mZnNldEZy
b21SZXNpemVDb3JuZXIoY29uc3QgTGF5b3V0UG9pbnQmIGFic29sdXRlUG9pbnQpIGNvbnN0Owot
Ci0gICAgdm9pZCBwYWludE92ZXJmbG93Q29udHJvbHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
TGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1hZ2VSZWN0LCBib29sIHBhaW50aW5n
T3ZlcmxheUNvbnRyb2xzID0gZmFsc2UpOwotICAgIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBkYW1h
Z2VSZWN0KTsKLSAgICB2b2lkIHBhaW50UmVzaXplcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBM
YXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGRhbWFnZVJlY3QpOworICAgIGJvb2wgaXNQ
b2ludEluUmVzaXplQ29udHJvbChjb25zdCBJbnRQb2ludCYgYWJzb2x1dGVQb2ludCkgY29uc3Q7
CisgICAgYm9vbCBoaXRUZXN0T3ZlcmZsb3dDb250cm9scyhIaXRUZXN0UmVzdWx0JiwgY29uc3Qg
SW50UG9pbnQmIGxvY2FsUG9pbnQpOworICAgIEludFNpemUgb2Zmc2V0RnJvbVJlc2l6ZUNvcm5l
cihjb25zdCBJbnRQb2ludCYgYWJzb2x1dGVQb2ludCkgY29uc3Q7CisKKyAgICB2b2lkIHBhaW50
T3ZlcmZsb3dDb250cm9scyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0
IEludFJlY3QmIGRhbWFnZVJlY3QsIGJvb2wgcGFpbnRpbmdPdmVybGF5Q29udHJvbHMgPSBmYWxz
ZSk7CisgICAgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJ
bnRQb2ludCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZvaWQgcGFpbnRSZXNp
emVyKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UmVjdCYgZGFt
YWdlUmVjdCk7CiAKICAgICB2b2lkIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOwogCkBA
IC00MjUsNiArNDI1LDggQEAgcHVibGljOgogICAgIFJlbmRlckxheWVyKiBhbmNlc3RvckNvbXBv
c2l0aW5nTGF5ZXIoKSBjb25zdCB7IHJldHVybiBlbmNsb3NpbmdDb21wb3NpdGluZ0xheWVyKGZh
bHNlKTsgfQogI2VuZGlmCiAKKyAgICB2b2lkIGNvbnZlcnRUb1BpeGVsU25hcHBlZExheWVyQ29v
cmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBJbnRQb2ludCYgbG9jYXRpb24p
IGNvbnN0OworICAgIHZvaWQgY29udmVydFRvUGl4ZWxTbmFwcGVkTGF5ZXJDb29yZHMoY29uc3Qg
UmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIEludFJlY3QmKSBjb25zdDsKICAgICB2b2lkIGNv
bnZlcnRUb0xheWVyQ29vcmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBMYXlv
dXRQb2ludCYgbG9jYXRpb24pIGNvbnN0OwogICAgIHZvaWQgY29udmVydFRvTGF5ZXJDb29yZHMo
Y29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIExheW91dFJlY3QmKSBjb25zdDsKIApA
QCAtNTY4LDcgKzU3MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVaT3Jk
ZXJMaXN0c1Nsb3dDYXNlKCk7CiAKLSAgICB2b2lkIGNvbXB1dGVSZXBhaW50UmVjdHMoSW50UG9p
bnQqIG9mZnNldEZyb21Sb290ID0gMCk7CisgICAgdm9pZCBjb21wdXRlUmVwYWludFJlY3RzKExh
eW91dFBvaW50KiBvZmZzZXRGcm9tUm9vdCA9IDApOwogICAgIHZvaWQgY2xlYXJSZXBhaW50UmVj
dHMoKTsKIAogICAgIHZvaWQgY2xpcFRvUmVjdChSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludERpcnR5UmVjdCwgY29uc3QgQ2xp
cFJlY3QmLApAQCAtNzEzLDExICs3MTUsMTEgQEAgcHJpdmF0ZToKICAgICAvLyBDb252ZXJ0IGEg
cG9pbnQgaW4gYWJzb2x1dGUgY29vcmRzIGludG8gbGF5ZXIgY29vcmRzLCB0YWtpbmcgdHJhbnNm
b3JtcyBpbnRvIGFjY291bnQKICAgICBMYXlvdXRQb2ludCBhYnNvbHV0ZVRvQ29udGVudHMoY29u
c3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKIAotICAgIHZvaWQgcG9zaXRpb25PdmVyZmxvd0NvbnRy
b2xzKGNvbnN0IExheW91dFNpemUmKTsKKyAgICB2b2lkIHBvc2l0aW9uT3ZlcmZsb3dDb250cm9s
cyhjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxDb3JuZXJTdHlsZSgpOwog
ICAgIHZvaWQgdXBkYXRlUmVzaXplclN0eWxlKCk7CiAKLSAgICB2b2lkIGRyYXdQbGF0Zm9ybVJl
c2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQqLCBMYXlvdXRSZWN0IHJlc2l6ZXJDb3JuZXJSZWN0
KTsKKyAgICB2b2lkIGRyYXdQbGF0Zm9ybVJlc2l6ZXJJbWFnZShHcmFwaGljc0NvbnRleHQqLCBJ
bnRSZWN0IHJlc2l6ZXJDb3JuZXJSZWN0KTsKIAogICAgIHZvaWQgdXBkYXRlUGFnaW5hdGlvbigp
OwogICAgIGJvb2wgaXNQYWdpbmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUGFnaW5hdGVkOyB9
CkBAIC04MjEsNyArODIzLDcgQEAgcHJvdGVjdGVkOgogICAgIExheW91dFNpemUgbV9zY3JvbGxP
dmVyZmxvdzsKICAgICAKICAgICAvLyBUaGUgd2lkdGgvaGVpZ2h0IG9mIG91ciBzY3JvbGxlZCBh
cmVhLgotICAgIEludFNpemUgbV9zY3JvbGxTaXplOworICAgIExheW91dFNpemUgbV9zY3JvbGxT
aXplOwogCiAgICAgLy8gRm9yIGxheWVycyB3aXRoIG92ZXJmbG93LCB3ZSBoYXZlIGEgcGFpciBv
ZiBzY3JvbGxiYXJzLgogICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1faEJhcjsKQEAgLTg0Myw3ICs4
NDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgUmVuZGVyTGF5ZXIqIG1fY2xpcFJlY3RzUm9v
dDsgICAvLyBSb290IGxheWVyIHVzZWQgdG8gY29tcHV0ZSBjbGlwIHJlY3RzLgogI2VuZGlmCiAK
LSAgICBMYXlvdXRQb2ludCBtX2NhY2hlZE92ZXJsYXlTY3JvbGxiYXJPZmZzZXQ7CisgICAgSW50
UG9pbnQgbV9jYWNoZWRPdmVybGF5U2Nyb2xsYmFyT2Zmc2V0OwogCiAgICAgUmVuZGVyTWFycXVl
ZSogbV9tYXJxdWVlOyAvLyBVc2VkIGJ5IGxheWVycyB3aXRoIG92ZXJmbG93Om1hcnF1ZWUKICAg
ICAK
</data>

          </attachment>
      

    </bug>

</bugzilla>