<?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>81850</bug_id>
          
          <creation_ts>2012-03-21 17:30:13 -0700</creation_ts>
          <short_desc>MathML internals - improve naming in RenderMathMLSquareRoot.cpp and RenderMathMLRoot.cpp</short_desc>
          <delta_ts>2012-03-21 18:33:55 -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>MathML</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dave Barton">dbarton</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>584810</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-03-21 17:30:13 -0700</bug_when>
    <thetext>MathML internals - improve naming in RenderMathMLSquareRoot.cpp and RenderMathMLRoot.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584818</commentid>
    <comment_count>1</comment_count>
      <attachid>133155</attachid>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-03-21 17:39:00 -0700</bug_when>
    <thetext>Created attachment 133155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584832</commentid>
    <comment_count>2</comment_count>
      <attachid>133155</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-21 17:51:19 -0700</bug_when>
    <thetext>Comment on attachment 133155
Patch

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

LGTM.

&gt; Source/WebCore/rendering/mathml/RenderMathMLRoot.cpp:82
&gt; +        baseWrapper-&gt;style()-&gt;setPaddingLeft(Length(5 * gFrontWidthEms, Percent));

Thank you for documenting the type of the unit in name of the variable, very helpful!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584872</commentid>
    <comment_count>3</comment_count>
      <attachid>133155</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 18:33:50 -0700</bug_when>
    <thetext>Comment on attachment 133155
Patch

Clearing flags on attachment: 133155

Committed r111636: &lt;http://trac.webkit.org/changeset/111636&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584874</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 18:33:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133155</attachid>
            <date>2012-03-21 17:39:00 -0700</date>
            <delta_ts>2012-03-21 18:33:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81850-20120321173858.patch</filename>
            <type>text/plain</type>
            <size>26313</size>
            <attacher name="Dave Barton">dbarton</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTYyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAzLTIxICBEYXZpZCBC
YXJ0b24gIDxkYmFydG9uQG1hdGhzY3JpYmUuY29tPgorCisgICAgICAgIE1hdGhNTCBpbnRlcm5h
bHMgLSBpbXByb3ZlIG5hbWluZyBpbiBSZW5kZXJNYXRoTUxTcXVhcmVSb290LmNwcCBhbmQgUmVu
ZGVyTWF0aE1MUm9vdC5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgxODUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwcmVwYXJlcyB0aGVzZSBmaWxlcyBmb3IgYnVnIGZpeGVzLCBhbmQgZXZl
bnR1YWxseSBjb21iaW5pbmcgdGhlaXIgY29tbW9uIGNvZGUuIFRvCisgICAgICAgIHVuZGVyc3Rh
bmQgdGhpcyBwYXRjaCwgSSBzdWdnZXN0IHlvdSBzdGFydCB3aXRoIFJlbmRlck1hdGhNTFNxdWFy
ZVJvb3QuY3BwLCBhcyBpdCdzCisgICAgICAgIHNpbXBsZXIgdGhhbiBSZW5kZXJNYXRoTUxSb290
LmNwcC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIExheW91dFRlc3RzL21hdGhtbC9wcmVzZW50
YXRpb24vcm9vdHMueGh0bWwgaXMgdGhvcm91Z2ggZW5vdWdoIGZvciB0aGlzLgorCisgICAgICAg
ICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6YWRkQ2hpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MUm9vdDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MUm9vdDo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFJvb3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUmVuZGVy
TWF0aE1MUm9vdCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVh
cmVSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWF0aE1MU3F1YXJlUm9vdDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
U3F1YXJlUm9vdDo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNxdWFyZVJvb3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUmVuZGVyTWF0
aE1MU3F1YXJlUm9vdCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxT
dWJTdXAuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTAzLTIxICBQYXRyaWNrIEdhbnN0
ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAgIEJ1aWxkIGZpeCBmb3IgIUVOQUJM
RShJTlNQRUNUT1IpIGFmdGVyIHIxMDQ4MzEuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAJKHJldmlzaW9uIDExMTA4
MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDMxICszOCwzMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgCiB1c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAKLS8vIExlZnQgbWFyZ2luIG9m
IHRoZSByYWRpY2FsIChweCkKLWNvbnN0IGludCBnUmFkaWNhbExlZnRNYXJnaW4gPSAzOwotLy8g
Qm90dG9tIHBhZGRpbmcgb2YgdGhlIHJhZGljYWwgKHB4KQotY29uc3QgaW50IGdSYWRpY2FsQmFz
ZVBhZCA9IDM7Ci0vLyBUaHJlc2hvbGQgYWJvdmUgd2hpY2ggdGhlIHJhZGljYWwgc2hhcGUgaXMg
bW9kaWZpZWQgdG8gbG9vayBuaWNlIHdpdGggYmlnIGJhc2VzICglKQotY29uc3QgZmxvYXQgZ1Ro
cmVzaG9sZEJhc2VIZWlnaHQgPSAxLjVmOwotLy8gUmFkaWNhbCB3aWR0aCAoJSkKLWNvbnN0IGZs
b2F0IGdSYWRpY2FsV2lkdGggPSAwLjc1ZjsKLS8vIEhvcml6b250YWwgcG9zaXRpb24gb2YgdGhl
IGJvdHRvbSBwb2ludCBvZiB0aGUgcmFkaWNhbCAoJSkKLWNvbnN0IGZsb2F0IGdSYWRpY2FsQm90
dG9tUG9pbnRYUG9zPSAwLjVmOwotLy8gSG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgdG9wIGxl
ZnQgcG9pbnQgb2YgdGhlIHJhZGljYWwgKCUpCi1jb25zdCBmbG9hdCBnUmFkaWNhbFRvcExlZnRQ
b2ludFhQb3MgPSAwLjhmOwotLy8gVmVydGljYWwgcG9zaXRpb24gb2YgdGhlIHRvcCBsZWZ0IHBv
aW50IG9mIHRoZSByYWRpY2FsICglKQotY29uc3QgZmxvYXQgZ1JhZGljYWxUb3BMZWZ0UG9pbnRZ
UG9zID0gMC42MjVmOyAKLS8vIFZlcnRpY2FsIHNoaWZ0IG9mIHRoZSBsZWZ0IGVuZCBwb2ludCBv
ZiB0aGUgcmFkaWNhbCAoJSkKLWNvbnN0IGZsb2F0IGdSYWRpY2FsTGVmdEVuZFlTaGlmdCA9IDAu
MDVmOwotLy8gUm9vdCBwYWRkaW5nIGFyb3VuZCB0aGUgYmFzZSAoJSkKLWNvbnN0IGZsb2F0IGdS
b290UGFkZGluZyA9IDAuMmY7Ci0vLyBBZGRpdGlvbmFsIGJvdHRvbSByb290IHBhZGRpbmcgKCUp
Ci1jb25zdCBmbG9hdCBnUm9vdEJvdHRvbVBhZGRpbmcgPSAwLjJmOwotICAgIAotLy8gUmFkaWNh
bCBsaW5lIHRoaWNrbmVzcyAoJSkKLWNvbnN0IGZsb2F0IGdSYWRpY2FsTGluZVRoaWNrbmVzcyA9
IDAuMDJmOwotLy8gUmFkaWNhbCB0aGljayBsaW5lIHRoaWNrbmVzcyAoJSkKLWNvbnN0IGZsb2F0
IGdSYWRpY2FsVGhpY2tMaW5lVGhpY2tuZXNzID0gMC4xZjsKKy8vIEV4dHJhIHNwYWNlIG9uIHRo
ZSBsZWZ0IGZvciB0aGUgcmFkaWNhbCBzaWduIChweCkKK2NvbnN0IGludCBnUmFkaWNhbExlZnRF
eHRyYSA9IDM7CisvLyBMb3dlciB0aGUgcmFkaWNhbCBzaWduJ3MgYm90dG9tIHBvaW50IChweCkK
K2NvbnN0IGludCBnUmFkaWNhbEJvdHRvbVBvaW50TG93ZXIgPSAzOworLy8gVGhyZXNob2xkIGFi
b3ZlIHdoaWNoIHRoZSByYWRpY2FsIHNoYXBlIGlzIG1vZGlmaWVkIHRvIGxvb2sgbmljZSB3aXRo
IGJpZyBiYXNlcyAoZW0pCitjb25zdCBmbG9hdCBnVGhyZXNob2xkQmFzZUhlaWdodEVtcyA9IDEu
NWY7CisvLyBGcm9udCB3aWR0aCAoZW0pCitjb25zdCBmbG9hdCBnRnJvbnRXaWR0aEVtcyA9IDAu
NzVmOworLy8gSG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgYm90dG9tIHBvaW50IG9mIHRoZSBy
YWRpY2FsICgqIGZyb250V2lkdGgpCitjb25zdCBmbG9hdCBnUmFkaWNhbEJvdHRvbVBvaW50WEZy
b250ID0gMC41ZjsKKy8vIEhvcml6b250YWwgcG9zaXRpb24gb2YgdGhlIHRvcCBsZWZ0IHBvaW50
IG9mIHRoZSByYWRpY2FsICJkaXAiICgqIGZyb250V2lkdGgpCitjb25zdCBmbG9hdCBnUmFkaWNh
bERpcExlZnRQb2ludFhGcm9udCA9IDAuOGY7CisvLyBWZXJ0aWNhbCBwb3NpdGlvbiBvZiB0aGUg
dG9wIGxlZnQgcG9pbnQgb2YgdGhlIHJhZGljYWwgImRpcCIgKCogYmFzZUhlaWdodCkKK2NvbnN0
IGZsb2F0IGdSYWRpY2FsRGlwTGVmdFBvaW50WVBvcyA9IDAuNjI1ZjsgCisvLyBWZXJ0aWNhbCBz
aGlmdCBvZiB0aGUgbGVmdCBlbmQgcG9pbnQgb2YgdGhlIHJhZGljYWwgKGVtKQorY29uc3QgZmxv
YXQgZ1JhZGljYWxMZWZ0RW5kWVNoaWZ0RW1zID0gMC4wNWY7CisvLyBSb290IHBhZGRpbmcgYXJv
dW5kIHRoZSBiYXNlIChlbSkgKG1yb290IHBhZGRpbmctdG9wL2xlZnQgZnJvbSBtYXRobWwuY3Nz
KQorY29uc3QgZmxvYXQgZ1Jvb3RQYWRkaW5nRW1zID0gMC4yZjsKKy8vIEFkZGl0aW9uYWwgYm90
dG9tIHJvb3QgcGFkZGluZyBpZiBiYXNlSGVpZ2h0ID4gdGhyZXNob2xkIChlbSkKK2NvbnN0IGZs
b2F0IGdCaWdSb290Qm90dG9tUGFkZGluZ0VtcyA9IDAuMmY7CisKKy8vIFJhZGljYWwgbGluZSB0
aGlja25lc3MgKGVtKQorY29uc3QgZmxvYXQgZ1JhZGljYWxMaW5lVGhpY2tuZXNzRW1zID0gMC4w
MmY7CisvLyBSYWRpY2FsIHRoaWNrIGxpbmUgdGhpY2tuZXNzIChlbSkKK2NvbnN0IGZsb2F0IGdS
YWRpY2FsVGhpY2tMaW5lVGhpY2tuZXNzRW1zID0gMC4xZjsKICAgICAKIFJlbmRlck1hdGhNTFJv
b3Q6OlJlbmRlck1hdGhNTFJvb3QoRWxlbWVudCogZWxlbWVudCkKICAgICA6IFJlbmRlck1hdGhN
TEJsb2NrKGVsZW1lbnQpCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MUm9vdDo6
YWRkQ2hpbGQoUmVuZGVyT2IKICAgICAgICAgLy8gRklYTUU6IHRoZSB3cmFwcGluZyBkb2VzIG5v
dCBzZWVtIHRvIGJlIG5lZWRlZCBhbnltb3JlLgogICAgICAgICAvLyB0aGlzIGlzIHRoZSBiYXNl
LCBzbyB3cmFwIGl0IHNvIHdlIGNhbiBwYWQgaXQKICAgICAgICAgUmVuZGVyQmxvY2sqIGJhc2VX
cmFwcGVyID0gY3JlYXRlQWxtb3N0QW5vbnltb3VzQmxvY2soSU5MSU5FX0JMT0NLKTsKLSAgICAg
ICAgYmFzZVdyYXBwZXItPnN0eWxlKCktPnNldFBhZGRpbmdMZWZ0KExlbmd0aCg1ICogZ1JhZGlj
YWxXaWR0aCwgUGVyY2VudCkpOworICAgICAgICBiYXNlV3JhcHBlci0+c3R5bGUoKS0+c2V0UGFk
ZGluZ0xlZnQoTGVuZ3RoKDUgKiBnRnJvbnRXaWR0aEVtcywgUGVyY2VudCkpOwogICAgICAgICBS
ZW5kZXJCbG9jazo6YWRkQ2hpbGQoYmFzZVdyYXBwZXIpOwogICAgICAgICBiYXNlV3JhcHBlci0+
YWRkQ2hpbGQoY2hpbGQpOwogICAgIH0gZWxzZSB7CkBAIC05NCwxOSArOTQsMTkgQEAgdm9pZCBS
ZW5kZXJNYXRoTUxSb290OjpwYWludChQYWludEluZm8mIAogICAgIAogICAgIGlmIChpbmZvLmNv
bnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwotCisgICAgCiAgICAg
aWYgKCFmaXJzdENoaWxkKCkgfHwgIWxhc3RDaGlsZCgpKQogICAgICAgICByZXR1cm47Ci0KKyAg
ICAKICAgICBJbnRQb2ludCBhZGp1c3RlZFBhaW50T2Zmc2V0ID0gcm91bmRlZEludFBvaW50KHBh
aW50T2Zmc2V0ICsgbG9jYXRpb24oKSk7CiAgICAgCi0gICAgUmVuZGVyQm94TW9kZWxPYmplY3Qq
IGluZGV4Qm94ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChsYXN0Q2hpbGQoKSk7CisgICAgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIGJhc2VXcmFwcGVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChs
YXN0Q2hpbGQoKSk7CiAgICAgCi0gICAgaW50IG1heEhlaWdodCA9IGluZGV4Qm94LT5waXhlbFNu
YXBwZWRPZmZzZXRIZWlnaHQoKTsKKyAgICBpbnQgYmFzZUhlaWdodCA9IGJhc2VXcmFwcGVyLT5w
aXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKTsKICAgICAvLyBkZWZhdWx0IHRvIHRoZSBmb250IHNp
emUgaW4gcGl4ZWxzIGlmIHdlJ3JlIGVtcHR5Ci0gICAgaWYgKCFtYXhIZWlnaHQpCi0gICAgICAg
IG1heEhlaWdodCA9IHN0eWxlKCktPmZvbnRTaXplKCk7Ci0gICAgaW50IHdpZHRoID0gaW5kZXhC
b3gtPnBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCk7CisgICAgaWYgKCFiYXNlSGVpZ2h0KQorICAg
ICAgICBiYXNlSGVpZ2h0ID0gc3R5bGUoKS0+Zm9udFNpemUoKTsKKyAgICBpbnQgb3ZlcmJhcldp
ZHRoID0gYmFzZVdyYXBwZXItPnBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCk7CiAgICAgCiAgICAg
aW50IGluZGV4V2lkdGggPSAwOwogICAgIFJlbmRlck9iamVjdCogY3VycmVudCA9IGZpcnN0Q2hp
bGQoKTsKQEAgLTExOCwzMiArMTE4LDMyIEBAIHZvaWQgUmVuZGVyTWF0aE1MUm9vdDo6cGFpbnQo
UGFpbnRJbmZvJiAKICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCk7CiAg
ICAgfQogICAgIAotICAgIGludCBmcm9udFdpZHRoID0gc3RhdGljX2Nhc3Q8aW50PihzdHlsZSgp
LT5mb250U2l6ZSgpICogZ1JhZGljYWxXaWR0aCk7Ci0gICAgaW50IHRvcFN0YXJ0U2hpZnQgPSAw
OworICAgIGludCBmcm9udFdpZHRoID0gc3RhdGljX2Nhc3Q8aW50PihzdHlsZSgpLT5mb250U2l6
ZSgpICogZ0Zyb250V2lkdGhFbXMpOworICAgIGludCBvdmVyYmFyTGVmdFBvaW50U2hpZnQgPSAw
OwogICAgIC8vIEJhc2UgaGVpZ2h0IGFib3ZlIHdoaWNoIHRoZSBzaGFwZSBvZiB0aGUgcm9vdCBj
aGFuZ2VzCi0gICAgaW50IHRocmVzaG9sZEhlaWdodCA9IHN0YXRpY19jYXN0PGludD4oZ1RocmVz
aG9sZEJhc2VIZWlnaHQgKiBzdHlsZSgpLT5mb250U2l6ZSgpKTsKKyAgICBpbnQgdGhyZXNob2xk
SGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihnVGhyZXNob2xkQmFzZUhlaWdodEVtcyAqIHN0eWxl
KCktPmZvbnRTaXplKCkpOwogICAgIAotICAgIGlmIChtYXhIZWlnaHQgPiB0aHJlc2hvbGRIZWln
aHQgJiYgdGhyZXNob2xkSGVpZ2h0KSB7Ci0gICAgICAgIGZsb2F0IHNoaWZ0ID0gKG1heEhlaWdo
dCAtIHRocmVzaG9sZEhlaWdodCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4odGhyZXNob2xkSGVpZ2h0
KTsKKyAgICBpZiAoYmFzZUhlaWdodCA+IHRocmVzaG9sZEhlaWdodCAmJiB0aHJlc2hvbGRIZWln
aHQpIHsKKyAgICAgICAgZmxvYXQgc2hpZnQgPSAoYmFzZUhlaWdodCAtIHRocmVzaG9sZEhlaWdo
dCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4odGhyZXNob2xkSGVpZ2h0KTsKICAgICAgICAgaWYgKHNo
aWZ0ID4gMS4pCiAgICAgICAgICAgICBzaGlmdCA9IDEuMGY7Ci0gICAgICAgIHRvcFN0YXJ0U2hp
ZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGdSYWRpY2FsQm90dG9tUG9pbnRYUG9zICogZnJvbnRXaWR0
aCAqIHNoaWZ0KTsKKyAgICAgICAgb3ZlcmJhckxlZnRQb2ludFNoaWZ0ID0gc3RhdGljX2Nhc3Q8
aW50PihnUmFkaWNhbEJvdHRvbVBvaW50WEZyb250ICogZnJvbnRXaWR0aCAqIHNoaWZ0KTsKICAg
ICB9CiAgICAgCi0gICAgd2lkdGggKz0gdG9wU3RhcnRTaGlmdDsKKyAgICBvdmVyYmFyV2lkdGgg
Kz0gb3ZlcmJhckxlZnRQb2ludFNoaWZ0OwogICAgIAotICAgIGludCByb290UGFkID0gc3RhdGlj
X2Nhc3Q8aW50PihnUm9vdFBhZGRpbmcgKiBzdHlsZSgpLT5mb250U2l6ZSgpKTsKLSAgICBpbnQg
c3RhcnQgPSBhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGluZGV4V2lkdGggKyBnUmFkaWNhbExl
ZnRNYXJnaW4gKyBzdHlsZSgpLT5wYWRkaW5nTGVmdCgpLnZhbHVlKCkgLSByb290UGFkOworICAg
IGludCByb290UGFkID0gc3RhdGljX2Nhc3Q8aW50PihnUm9vdFBhZGRpbmdFbXMgKiBzdHlsZSgp
LT5mb250U2l6ZSgpKTsKKyAgICBpbnQgc3RhcnRYID0gYWRqdXN0ZWRQYWludE9mZnNldC54KCkg
KyBpbmRleFdpZHRoICsgZ1JhZGljYWxMZWZ0RXh0cmEgKyBzdHlsZSgpLT5wYWRkaW5nTGVmdCgp
LnZhbHVlKCkgLSByb290UGFkOwogICAgIGFkanVzdGVkUGFpbnRPZmZzZXQuc2V0WShhZGp1c3Rl
ZFBhaW50T2Zmc2V0LnkoKSArIHN0eWxlKCktPnBhZGRpbmdUb3AoKS52YWx1ZSgpIC0gcm9vdFBh
ZCk7CiAgICAgCi0gICAgRmxvYXRQb2ludCB0b3BTdGFydChzdGFydCAtIHRvcFN0YXJ0U2hpZnQs
IGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKTsKLSAgICBGbG9hdFBvaW50IGJvdHRvbUxlZnQoc3Rh
cnQgLSBnUmFkaWNhbEJvdHRvbVBvaW50WFBvcyAqIGZyb250V2lkdGggLCBhZGp1c3RlZFBhaW50
T2Zmc2V0LnkoKSArIG1heEhlaWdodCArIGdSYWRpY2FsQmFzZVBhZCk7Ci0gICAgRmxvYXRQb2lu
dCB0b3BMZWZ0KHN0YXJ0IC0gZ1JhZGljYWxUb3BMZWZ0UG9pbnRYUG9zICogZnJvbnRXaWR0aCAs
IGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgZ1JhZGljYWxUb3BMZWZ0UG9pbnRZUG9zICogbWF4
SGVpZ2h0KTsKLSAgICBGbG9hdFBvaW50IGxlZnRFbmQoc3RhcnQgLSBmcm9udFdpZHRoICwgdG9w
TGVmdC55KCkgKyBnUmFkaWNhbExlZnRFbmRZU2hpZnQgKiBzdHlsZSgpLT5mb250U2l6ZSgpKTsK
KyAgICBGbG9hdFBvaW50IG92ZXJiYXJMZWZ0UG9pbnQoc3RhcnRYIC0gb3ZlcmJhckxlZnRQb2lu
dFNoaWZ0LCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSk7CisgICAgRmxvYXRQb2ludCBib3R0b21Q
b2ludChzdGFydFggLSBnUmFkaWNhbEJvdHRvbVBvaW50WEZyb250ICogZnJvbnRXaWR0aCwgYWRq
dXN0ZWRQYWludE9mZnNldC55KCkgKyBiYXNlSGVpZ2h0ICsgZ1JhZGljYWxCb3R0b21Qb2ludExv
d2VyKTsKKyAgICBGbG9hdFBvaW50IGRpcExlZnRQb2ludChzdGFydFggLSBnUmFkaWNhbERpcExl
ZnRQb2ludFhGcm9udCAqIGZyb250V2lkdGgsIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgZ1Jh
ZGljYWxEaXBMZWZ0UG9pbnRZUG9zICogYmFzZUhlaWdodCk7CisgICAgRmxvYXRQb2ludCBsZWZ0
RW5kKHN0YXJ0WCAtIGZyb250V2lkdGgsIGRpcExlZnRQb2ludC55KCkgKyBnUmFkaWNhbExlZnRF
bmRZU2hpZnRFbXMgKiBzdHlsZSgpLT5mb250U2l6ZSgpKTsKICAgICAKICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmluZm8uY29udGV4dCk7CiAgICAgCi0gICAgaW5m
by5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoZ1JhZGljYWxMaW5lVGhpY2tuZXNzICogc3R5
bGUoKS0+Zm9udFNpemUoKSk7CisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3Mo
Z1JhZGljYWxMaW5lVGhpY2tuZXNzRW1zICogc3R5bGUoKS0+Zm9udFNpemUoKSk7CiAgICAgaW5m
by5jb250ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CiAgICAgaW5mby5jb250ZXh0
LT5zZXRTdHJva2VDb2xvcihzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlDb2xvciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGluZm8uY29udGV4dC0+c2V0TGlu
ZUpvaW4oTWl0ZXJKb2luKTsKQEAgLTE1MSwxMyArMTUxLDEzIEBAIHZvaWQgUmVuZGVyTWF0aE1M
Um9vdDo6cGFpbnQoUGFpbnRJbmZvJiAKICAgICAKICAgICBQYXRoIHJvb3Q7CiAgICAgCi0gICAg
cm9vdC5tb3ZlVG8oRmxvYXRQb2ludCh0b3BTdGFydC54KCkgKyB3aWR0aCwgYWRqdXN0ZWRQYWlu
dE9mZnNldC55KCkpKTsKKyAgICByb290Lm1vdmVUbyhGbG9hdFBvaW50KG92ZXJiYXJMZWZ0UG9p
bnQueCgpICsgb3ZlcmJhcldpZHRoLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpOwogICAgIC8v
IGRyYXcgdG9wCi0gICAgcm9vdC5hZGRMaW5lVG8odG9wU3RhcnQpOworICAgIHJvb3QuYWRkTGlu
ZVRvKG92ZXJiYXJMZWZ0UG9pbnQpOwogICAgIC8vIGRyYXcgZnJvbSB0b3AgbGVmdCBjb3JuZXIg
dG8gYm90dG9tIHBvaW50IG9mIHJhZGljYWwKLSAgICByb290LmFkZExpbmVUbyhib3R0b21MZWZ0
KTsKLSAgICAvLyBkcmF3IGZyb20gYm90dG9tIHBvaW50IHRvIHRvcCBvZiBsZWZ0IHBhcnQgb2Yg
cmFkaWNhbCBiYXNlICJwb2NrZXQiCi0gICAgcm9vdC5hZGRMaW5lVG8odG9wTGVmdCk7CisgICAg
cm9vdC5hZGRMaW5lVG8oYm90dG9tUG9pbnQpOworICAgIC8vIGRyYXcgZnJvbSBib3R0b20gcG9p
bnQgdG8gdG9wIG9mIGxlZnQgcGFydCBvZiByYWRpY2FsIGJhc2UgImRpcCIKKyAgICByb290LmFk
ZExpbmVUbyhkaXBMZWZ0UG9pbnQpOwogICAgIC8vIGRyYXcgdG8gZW5kCiAgICAgcm9vdC5hZGRM
aW5lVG8obGVmdEVuZCk7CiAgICAgCkBAIC0xNjgsMjEgKzE2OCwyMSBAQCB2b2lkIFJlbmRlck1h
dGhNTFJvb3Q6OnBhaW50KFBhaW50SW5mbyYgCiAgICAgLy8gQnVpbGQgYSBtYXNrIHRvIGRyYXcg
dGhlIHRoaWNrIHBhcnQgb2YgdGhlIHJvb3QuCiAgICAgUGF0aCBtYXNrOwogICAgIAotICAgIG1h
c2subW92ZVRvKHRvcFN0YXJ0KTsKLSAgICBtYXNrLmFkZExpbmVUbyhib3R0b21MZWZ0KTsKLSAg
ICBtYXNrLmFkZExpbmVUbyh0b3BMZWZ0KTsKLSAgICBtYXNrLmFkZExpbmVUbyhGbG9hdFBvaW50
KDIgKiB0b3BMZWZ0LngoKSAtIGxlZnRFbmQueCgpLCAyICogdG9wTGVmdC55KCkgLSBsZWZ0RW5k
LnkoKSkpOworICAgIG1hc2subW92ZVRvKG92ZXJiYXJMZWZ0UG9pbnQpOworICAgIG1hc2suYWRk
TGluZVRvKGJvdHRvbVBvaW50KTsKKyAgICBtYXNrLmFkZExpbmVUbyhkaXBMZWZ0UG9pbnQpOwor
ICAgIG1hc2suYWRkTGluZVRvKEZsb2F0UG9pbnQoMiAqIGRpcExlZnRQb2ludC54KCkgLSBsZWZ0
RW5kLngoKSwgMiAqIGRpcExlZnRQb2ludC55KCkgLSBsZWZ0RW5kLnkoKSkpOwogICAgIAogICAg
IGluZm8uY29udGV4dC0+Y2xpcChtYXNrKTsKICAgICAKICAgICAvLyBEcmF3IHRoZSB0aGljayBw
YXJ0IG9mIHRoZSByb290LgotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGdS
YWRpY2FsVGhpY2tMaW5lVGhpY2tuZXNzICogc3R5bGUoKS0+Zm9udFNpemUoKSk7CisgICAgaW5m
by5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoZ1JhZGljYWxUaGlja0xpbmVUaGlja25lc3NF
bXMgKiBzdHlsZSgpLT5mb250U2l6ZSgpKTsKICAgICBpbmZvLmNvbnRleHQtPnNldExpbmVDYXAo
U3F1YXJlQ2FwKTsKICAgICAKICAgICBQYXRoIGxpbmU7Ci0gICAgbGluZS5tb3ZlVG8oYm90dG9t
TGVmdCk7Ci0gICAgbGluZS5hZGRMaW5lVG8odG9wTGVmdCk7Ci0KKyAgICBsaW5lLm1vdmVUbyhi
b3R0b21Qb2ludCk7CisgICAgbGluZS5hZGRMaW5lVG8oZGlwTGVmdFBvaW50KTsKKyAgICAKICAg
ICBpbmZvLmNvbnRleHQtPnN0cm9rZVBhdGgobGluZSk7CiB9CiAKQEAgLTE5MywyNyArMTkzLDI3
IEBAIHZvaWQgUmVuZGVyTWF0aE1MUm9vdDo6bGF5b3V0KCkKICAgICBpZiAoIWZpcnN0Q2hpbGQo
KSB8fCAhbGFzdENoaWxkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCBtYXhIZWlnaHQg
PSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGxhc3RDaGlsZCgpKS0+cGl4ZWxTbmFwcGVkT2Zmc2V0
SGVpZ2h0KCk7Ci0gICAgCi0gICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gbGFzdENoaWxkKCkt
PmZpcnN0Q2hpbGQoKTsKLSAgICBpZiAoY3VycmVudCkKLSAgICAgICAgY3VycmVudC0+c3R5bGUo
KS0+c2V0VmVydGljYWxBbGlnbihCQVNFTElORSk7Ci0gICAgCi0gICAgaWYgKCFtYXhIZWlnaHQp
Ci0gICAgICAgIG1heEhlaWdodCA9IHN0eWxlKCktPmZvbnRTaXplKCk7CisgICAgaW50IGJhc2VI
ZWlnaHQgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KGxhc3RDaGlsZCgpKS0+cGl4ZWxTbmFwcGVk
T2Zmc2V0SGVpZ2h0KCk7CisgICAgaWYgKCFiYXNlSGVpZ2h0KQorICAgICAgICBiYXNlSGVpZ2h0
ID0gc3R5bGUoKS0+Zm9udFNpemUoKTsKKyAgICAKKyAgICBSZW5kZXJPYmplY3QqIGJhc2UgPSBs
YXN0Q2hpbGQoKS0+Zmlyc3RDaGlsZCgpOworICAgIGlmIChiYXNlKQorICAgICAgICBiYXNlLT5z
dHlsZSgpLT5zZXRWZXJ0aWNhbEFsaWduKEJBU0VMSU5FKTsgLy8gRklYTUU6IENhbiB0aGlzIHN0
eWxlIGJlIG1vZGlmaWVkPwogICAgIAogICAgIC8vIEJhc2UgaGVpZ2h0IGFib3ZlIHdoaWNoIHRo
ZSBzaGFwZSBvZiB0aGUgcm9vdCBjaGFuZ2VzCi0gICAgaW50IHRocmVzaG9sZEhlaWdodCA9IHN0
YXRpY19jYXN0PGludD4oZ1RocmVzaG9sZEJhc2VIZWlnaHQgKiBzdHlsZSgpLT5mb250U2l6ZSgp
KTsKLSAgICBpbnQgdG9wU3RhcnRTaGlmdCA9IDA7CisgICAgaW50IHRocmVzaG9sZEhlaWdodCA9
IHN0YXRpY19jYXN0PGludD4oZ1RocmVzaG9sZEJhc2VIZWlnaHRFbXMgKiBzdHlsZSgpLT5mb250
U2l6ZSgpKTsKKyAgICBpbnQgb3ZlcmJhckxlZnRQb2ludFNoaWZ0ID0gMDsKICAgICAKLSAgICBp
ZiAobWF4SGVpZ2h0ID4gdGhyZXNob2xkSGVpZ2h0ICYmIHRocmVzaG9sZEhlaWdodCkgewotICAg
ICAgICBmbG9hdCBzaGlmdCA9IChtYXhIZWlnaHQgLSB0aHJlc2hvbGRIZWlnaHQpIC8gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHRocmVzaG9sZEhlaWdodCk7CisgICAgLy8gRklYTUU6IENhbiBzdHlsZSgp
IGFuZCBpbmRleEJveC0+c3R5bGUoKSBiZSBtb2RpZmllZCAoNCB0aW1lcyBiZWxvdyk/CisgICAg
aWYgKGJhc2VIZWlnaHQgPiB0aHJlc2hvbGRIZWlnaHQgJiYgdGhyZXNob2xkSGVpZ2h0KSB7Cisg
ICAgICAgIGZsb2F0IHNoaWZ0ID0gKGJhc2VIZWlnaHQgLSB0aHJlc2hvbGRIZWlnaHQpIC8gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHRocmVzaG9sZEhlaWdodCk7CiAgICAgICAgIGlmIChzaGlmdCA+IDEu
KQogICAgICAgICAgICAgc2hpZnQgPSAxLjBmOwotICAgICAgICBpbnQgZnJvbnRXaWR0aCA9IHN0
YXRpY19jYXN0PGludD4oc3R5bGUoKS0+Zm9udFNpemUoKSAqIGdSYWRpY2FsV2lkdGgpOwotICAg
ICAgICB0b3BTdGFydFNoaWZ0ID0gc3RhdGljX2Nhc3Q8aW50PihnUmFkaWNhbEJvdHRvbVBvaW50
WFBvcyAqIGZyb250V2lkdGggKiBzaGlmdCk7CisgICAgICAgIGludCBmcm9udFdpZHRoID0gc3Rh
dGljX2Nhc3Q8aW50PihzdHlsZSgpLT5mb250U2l6ZSgpICogZ0Zyb250V2lkdGhFbXMpOworICAg
ICAgICBvdmVyYmFyTGVmdFBvaW50U2hpZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGdSYWRpY2FsQm90
dG9tUG9pbnRYRnJvbnQgKiBmcm9udFdpZHRoICogc2hpZnQpOwogICAgICAgICAKLSAgICAgICAg
c3R5bGUoKS0+c2V0UGFkZGluZ0JvdHRvbShMZW5ndGgoc3RhdGljX2Nhc3Q8aW50PihnUm9vdEJv
dHRvbVBhZGRpbmcgKiBzdHlsZSgpLT5mb250U2l6ZSgpKSwgRml4ZWQpKTsKKyAgICAgICAgc3R5
bGUoKS0+c2V0UGFkZGluZ0JvdHRvbShMZW5ndGgoc3RhdGljX2Nhc3Q8aW50PihnQmlnUm9vdEJv
dHRvbVBhZGRpbmdFbXMgKiBzdHlsZSgpLT5mb250U2l6ZSgpKSwgRml4ZWQpKTsKICAgICB9CiAg
ICAgCiAgICAgLy8gUG9zaXRpb25pbmcgb2YgdGhlIGluZGV4CkBAIC0yMjQsMjAgKzIyNCwyMCBA
QCB2b2lkIFJlbmRlck1hdGhNTFJvb3Q6OmxheW91dCgpCiAgICAgaWYgKCFpbmRleEJveCkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIGludCBpbmRleFNoaWZ0ID0gaW5kZXhCb3gtPnBpeGVs
U25hcHBlZE9mZnNldFdpZHRoKCkgKyB0b3BTdGFydFNoaWZ0OwotICAgIGludCByYWRpY2FsSGVp
Z2h0ID0gc3RhdGljX2Nhc3Q8aW50PigoMSAtIGdSYWRpY2FsVG9wTGVmdFBvaW50WVBvcykgKiBt
YXhIZWlnaHQpOwotICAgIGludCByb290TWFyZ2luVG9wID0gcmFkaWNhbEhlaWdodCArIHN0eWxl
KCktPnBhZGRpbmdCb3R0b20oKS52YWx1ZSgpICsgaW5kZXhCb3gtPnBpeGVsU25hcHBlZE9mZnNl
dEhlaWdodCgpCi0gICAgICAgIC0gKG1heEhlaWdodCArIHN0YXRpY19jYXN0PGludD4oZ1Jvb3RQ
YWRkaW5nICogc3R5bGUoKS0+Zm9udFNpemUoKSkpOwotICAgIAotICAgIHN0eWxlKCktPnNldFBh
ZGRpbmdMZWZ0KExlbmd0aChpbmRleFNoaWZ0LCBGaXhlZCkpOwotICAgIGlmIChyb290TWFyZ2lu
VG9wID4gMCkKLSAgICAgICAgc3R5bGUoKS0+c2V0UGFkZGluZ1RvcChMZW5ndGgocm9vdE1hcmdp
blRvcCArIHN0YXRpY19jYXN0PGludD4oZ1Jvb3RQYWRkaW5nICogc3R5bGUoKS0+Zm9udFNpemUo
KSksIEZpeGVkKSk7CisgICAgaW50IHNoaWZ0Rm9ySW5kZXggPSBpbmRleEJveC0+cGl4ZWxTbmFw
cGVkT2Zmc2V0V2lkdGgoKSArIG92ZXJiYXJMZWZ0UG9pbnRTaGlmdDsKKyAgICBpbnQgcGFydERp
cEhlaWdodCA9IHN0YXRpY19jYXN0PGludD4oKDEgLSBnUmFkaWNhbERpcExlZnRQb2ludFlQb3Mp
ICogYmFzZUhlaWdodCk7CisgICAgaW50IHJvb3RFeHRyYVRvcCA9IHBhcnREaXBIZWlnaHQgKyBz
dHlsZSgpLT5wYWRkaW5nQm90dG9tKCkudmFsdWUoKSArIGluZGV4Qm94LT5waXhlbFNuYXBwZWRP
ZmZzZXRIZWlnaHQoKQorICAgICAgICAtIChiYXNlSGVpZ2h0ICsgc3RhdGljX2Nhc3Q8aW50Pihn
Um9vdFBhZGRpbmdFbXMgKiBzdHlsZSgpLT5mb250U2l6ZSgpKSk7CisgICAgCisgICAgc3R5bGUo
KS0+c2V0UGFkZGluZ0xlZnQoTGVuZ3RoKHNoaWZ0Rm9ySW5kZXgsIEZpeGVkKSk7CisgICAgaWYg
KHJvb3RFeHRyYVRvcCA+IDApCisgICAgICAgIHN0eWxlKCktPnNldFBhZGRpbmdUb3AoTGVuZ3Ro
KHJvb3RFeHRyYVRvcCArIHN0YXRpY19jYXN0PGludD4oZ1Jvb3RQYWRkaW5nRW1zICogc3R5bGUo
KS0+Zm9udFNpemUoKSksIEZpeGVkKSk7CiAgICAgCiAgICAgc2V0TmVlZHNMYXlvdXQodHJ1ZSk7
Ci0gICAgc2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0RpcnR5KHRydWUsIGZhbHNlKTsKKyAgICBz
ZXRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzRGlydHkodHJ1ZSwgZmFsc2UpOyAvLyBGSVhNRTogQ2Fu
IHRoaXMgcmVhbGx5IGJlIHJpZ2h0PwogICAgIFJlbmRlckJsb2NrOjpsYXlvdXQoKTsKIAotICAg
IGluZGV4Qm94LT5zdHlsZSgpLT5zZXRCb3R0b20oTGVuZ3RoKHJhZGljYWxIZWlnaHQgKyBzdHls
ZSgpLT5wYWRkaW5nQm90dG9tKCkudmFsdWUoKSwgRml4ZWQpKTsKKyAgICBpbmRleEJveC0+c3R5
bGUoKS0+c2V0Qm90dG9tKExlbmd0aChwYXJ0RGlwSGVpZ2h0ICsgc3R5bGUoKS0+cGFkZGluZ0Jv
dHRvbSgpLnZhbHVlKCksIEZpeGVkKSk7CiAKICAgICAvLyBOb3cgdGhhdCB3ZSd2ZSBwb3RlbnRp
YWxseSBjaGFuZ2VkIGl0cyBwb3NpdGlvbiwgd2UgbmVlZCBsYXlvdXQgdGhlIGluZGV4IGFnYWlu
LgogICAgIGluZGV4Qm94LT5zZXROZWVkc0xheW91dCh0cnVlKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oCShyZXZpc2lv
biAxMTEwODMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvb3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTEgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAKKy8vIFJlbmRlciBiYXNlXigxL2luZGV4KSwgdXNpbmcgcmFkaWNhbCBu
b3RhdGlvbi4KIGNsYXNzIFJlbmRlck1hdGhNTFJvb3QgOiBwdWJsaWMgUmVuZGVyTWF0aE1MQmxv
Y2sgewogcHVibGljOgogICAgIFJlbmRlck1hdGhNTFJvb3QoRWxlbWVudCopOwogICAgIHZpcnR1
YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9y
ZUNoaWxkID0gMCk7CisgICAgCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50Jik7CisgICAgCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGxh
eW91dCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNxdWFyZVJvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHAJKHJldmlzaW9uIDExMTA4MykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDMzICszMywzMiBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZv
LmgiCi0jaW5jbHVkZSAiUGF0aC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiB1c2lu
ZyBuYW1lc3BhY2UgTWF0aE1MTmFtZXM7CiAKLS8vIEJvdHRvbSBwYWRkaW5nIG9mIHRoZSByYWRp
Y2FsIChweCkKLWNvbnN0IGludCBnUmFkaWNhbEJhc2VQYWQgPSAzOwotLy8gVGhyZXNob2xkIGFi
b3ZlIHdoaWNoIHRoZSByYWRpY2FsIHNoYXBlIGlzIG1vZGlmaWVkIHRvIGxvb2sgbmljZSB3aXRo
IGJpZyBiYXNlcyAoJSkKLWNvbnN0IGZsb2F0IGdUaHJlc2hvbGRCYXNlSGVpZ2h0ID0gMS41ZjsK
LS8vIFJhZGljYWwgd2lkdGggKCUpCi1jb25zdCBmbG9hdCBnUmFkaWNhbFdpZHRoID0gMC43NWY7
Ci0vLyBIb3Jpem9udGFsIHBvc2l0aW9uIG9mIHRoZSBib3R0b20gcG9pbnQgb2YgdGhlIHJhZGlj
YWwgKCUpCi1jb25zdCBmbG9hdCBnUmFkaWNhbEJvdHRvbVBvaW50WFBvcz0gMC41ZjsKLS8vIEhv
cml6b250YWwgcG9zaXRpb24gb2YgdGhlIHRvcCBsZWZ0IHBvaW50IG9mIHRoZSByYWRpY2FsICgl
KQotY29uc3QgZmxvYXQgZ1JhZGljYWxUb3BMZWZ0UG9pbnRYUG9zID0gMC4yZjsKLS8vIFZlcnRp
Y2FsIHBvc2l0aW9uIG9mIHRoZSB0b3AgbGVmdCBwb2ludCBvZiB0aGUgcmFkaWNhbCAoJSkKLWNv
bnN0IGZsb2F0IGdSYWRpY2FsVG9wTGVmdFBvaW50WVBvcyA9IDAuNWY7IAotLy8gVmVydGljYWwg
c2hpZnQgb2YgdGhlIGxlZnQgZW5kIHBvaW50IG9mIHRoZSByYWRpY2FsICglKQotY29uc3QgZmxv
YXQgZ1JhZGljYWxMZWZ0RW5kWVNoaWZ0ID0gMC4wNWY7Ci0vLyBBZGRpdGlvbmFsIGJvdHRvbSBy
b290IHBhZGRpbmcgKCUpCi1jb25zdCBmbG9hdCBnUm9vdEJvdHRvbVBhZGRpbmcgPSAwLjJmOwot
Ci0vLyBSYWRpY2FsIGxpbmUgdGhpY2tuZXNzICglKQotY29uc3QgZmxvYXQgZ1JhZGljYWxMaW5l
VGhpY2tuZXNzID0gMC4wMmY7Ci0vLyBSYWRpY2FsIHRoaWNrIGxpbmUgdGhpY2tuZXNzICglKQot
Y29uc3QgZmxvYXQgZ1JhZGljYWxUaGlja0xpbmVUaGlja25lc3MgPSAwLjFmOworLy8gTG93ZXIg
dGhlIHJhZGljYWwgc2lnbidzIGJvdHRvbSBwb2ludCAocHgpCitjb25zdCBpbnQgZ1JhZGljYWxC
b3R0b21Qb2ludExvd2VyID0gMzsKKy8vIFRocmVzaG9sZCBhYm92ZSB3aGljaCB0aGUgcmFkaWNh
bCBzaGFwZSBpcyBtb2RpZmllZCB0byBsb29rIG5pY2Ugd2l0aCBiaWcgYmFzZXMgKGVtKQorY29u
c3QgZmxvYXQgZ1RocmVzaG9sZEJhc2VIZWlnaHRFbXMgPSAxLjVmOworLy8gRnJvbnQgd2lkdGgg
KGVtKQorY29uc3QgZmxvYXQgZ0Zyb250V2lkdGhFbXMgPSAwLjc1ZjsKKy8vIEhvcml6b250YWwg
cG9zaXRpb24gb2YgdGhlIGJvdHRvbSBwb2ludCBvZiB0aGUgcmFkaWNhbCAoKiBmcm9udFdpZHRo
KQorY29uc3QgZmxvYXQgZ1JhZGljYWxCb3R0b21Qb2ludFhGcm9udCA9IDAuNWY7CisvLyBIb3Jp
em9udGFsIHBvc2l0aW9uIG9mIHRoZSB0b3AgbGVmdCBwb2ludCBvZiB0aGUgcmFkaWNhbCAiZGlw
IiAoKiBmcm9udFdpZHRoKQorY29uc3QgZmxvYXQgZ1JhZGljYWxEaXBMZWZ0UG9pbnRYRnJvbnQg
PSAwLjJmOworLy8gVmVydGljYWwgcG9zaXRpb24gb2YgdGhlIHRvcCBsZWZ0IHBvaW50IG9mIHRo
ZSByYWRpY2FsICJkaXAiICgqIGJhc2VIZWlnaHQpCitjb25zdCBmbG9hdCBnUmFkaWNhbERpcExl
ZnRQb2ludFlQb3MgPSAwLjVmOyAKKy8vIFZlcnRpY2FsIHNoaWZ0IG9mIHRoZSBsZWZ0IGVuZCBw
b2ludCBvZiB0aGUgcmFkaWNhbCAoZW0pCitjb25zdCBmbG9hdCBnUmFkaWNhbExlZnRFbmRZU2hp
ZnRFbXMgPSAwLjA1ZjsKKy8vIEFkZGl0aW9uYWwgYm90dG9tIHJvb3QgcGFkZGluZyBpZiBiYXNl
SGVpZ2h0ID4gdGhyZXNob2xkIChlbSkKK2NvbnN0IGZsb2F0IGdCaWdSb290Qm90dG9tUGFkZGlu
Z0VtcyA9IDAuMmY7CisKKy8vIFJhZGljYWwgbGluZSB0aGlja25lc3MgKGVtKQorY29uc3QgZmxv
YXQgZ1JhZGljYWxMaW5lVGhpY2tuZXNzRW1zID0gMC4wMmY7CisvLyBSYWRpY2FsIHRoaWNrIGxp
bmUgdGhpY2tuZXNzIChlbSkKK2NvbnN0IGZsb2F0IGdSYWRpY2FsVGhpY2tMaW5lVGhpY2tuZXNz
RW1zID0gMC4xZjsKICAgICAKIFJlbmRlck1hdGhNTFNxdWFyZVJvb3Q6OlJlbmRlck1hdGhNTFNx
dWFyZVJvb3QoRWxlbWVudCogZWxlbWVudCkKICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVsZW1l
bnQpCkBAIC02OSw1MyArNjgsNTQgQEAgUmVuZGVyTWF0aE1MU3F1YXJlUm9vdDo6UmVuZGVyTWF0
aE1MU3F1YQogdm9pZCBSZW5kZXJNYXRoTUxTcXVhcmVSb290OjpwYWludChQYWludEluZm8mIGlu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBSZW5kZXJNYXRoTUxC
bG9jazo6cGFpbnQoaW5mbywgcGFpbnRPZmZzZXQpOwotICAgCisgICAgCiAgICAgaWYgKGluZm8u
Y29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAg
SW50UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNldCA9IHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNl
dCArIGxvY2F0aW9uKCkpOwotCi0gICAgaW50IG1heEhlaWdodCA9IDA7Ci0gICAgaW50IHdpZHRo
ID0gMDsKKyAgICAKKyAgICBpbnQgYmFzZUhlaWdodCA9IDA7CisgICAgaW50IG92ZXJiYXJXaWR0
aCA9IDA7CiAgICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gZmlyc3RDaGlsZCgpOwogICAgIHdo
aWxlIChjdXJyZW50KSB7CiAgICAgICAgIGlmIChjdXJyZW50LT5pc0JveE1vZGVsT2JqZWN0KCkp
IHsKLSAgICAgICAgICAgIAogICAgICAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJveCA9
IHRvUmVuZGVyQm94TW9kZWxPYmplY3QoY3VycmVudCk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGlzIGJveCBoYXMgYSBsYXJnZXIgaGVpZ2h0Ci0gICAg
ICAgICAgICBpZiAoYm94LT5waXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKSA+IG1heEhlaWdodCkK
LSAgICAgICAgICAgICAgICBtYXhIZWlnaHQgPSBib3gtPnBpeGVsU25hcHBlZE9mZnNldEhlaWdo
dCgpOwotICAgICAgICAgICAgd2lkdGggKz0gYm94LT5waXhlbFNuYXBwZWRPZmZzZXRXaWR0aCgp
OworICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciB0aGUgaGVpZ2h0IGFi
b3ZlICYgYmVsb3cgdGhlIGJhc2VsaW5lIHNlcGFyYXRlbHkuIFRoaXMgd2lsbCBiZQorICAgICAg
ICAgICAgLy8gZml4ZWQgYnkgYW4gPG1yb3c+IGJhc2Ugd3JhcHBlciwgd2hpY2ggaXMgcmVxdWly
ZWQgYW55d2F5IGJ5IHRoZSBNYXRoTUwgc3BlYy4KKyAgICAgICAgICAgIGlmIChib3gtPnBpeGVs
U25hcHBlZE9mZnNldEhlaWdodCgpID4gYmFzZUhlaWdodCkKKyAgICAgICAgICAgICAgICBiYXNl
SGVpZ2h0ID0gYm94LT5waXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKTsKKyAgICAgICAgICAgIG92
ZXJiYXJXaWR0aCArPSBib3gtPnBpeGVsU25hcHBlZE9mZnNldFdpZHRoKCk7CiAgICAgICAgIH0K
ICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQogICAgIC8v
IGRlZmF1bHQgdG8gdGhlIGZvbnQgc2l6ZSBpbiBwaXhlbHMgaWYgd2UncmUgZW1wdHkKLSAgICBp
ZiAoIW1heEhlaWdodCkKLSAgICAgICAgbWF4SGVpZ2h0ID0gc3R5bGUoKS0+Zm9udFNpemUoKTsK
KyAgICBpZiAoIWJhc2VIZWlnaHQpCisgICAgICAgIGJhc2VIZWlnaHQgPSBzdHlsZSgpLT5mb250
U2l6ZSgpOwogICAgIAotICAgIGludCBmcm9udFdpZHRoID0gc3RhdGljX2Nhc3Q8aW50PihzdHls
ZSgpLT5mb250U2l6ZSgpICogZ1JhZGljYWxXaWR0aCk7Ci0gICAgaW50IHRvcFN0YXJ0U2hpZnQg
PSAwOworICAgIGludCBmcm9udFdpZHRoID0gc3RhdGljX2Nhc3Q8aW50PihzdHlsZSgpLT5mb250
U2l6ZSgpICogZ0Zyb250V2lkdGhFbXMpOworICAgIGludCBvdmVyYmFyTGVmdFBvaW50U2hpZnQg
PSAwOwogICAgIC8vIEJhc2UgaGVpZ2h0IGFib3ZlIHdoaWNoIHRoZSBzaGFwZSBvZiB0aGUgcm9v
dCBjaGFuZ2VzCi0gICAgaW50IHRocmVzaG9sZEhlaWdodCA9IHN0YXRpY19jYXN0PGludD4oZ1Ro
cmVzaG9sZEJhc2VIZWlnaHQgKiBzdHlsZSgpLT5mb250U2l6ZSgpKTsKKyAgICBpbnQgdGhyZXNo
b2xkSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihnVGhyZXNob2xkQmFzZUhlaWdodEVtcyAqIHN0
eWxlKCktPmZvbnRTaXplKCkpOwogICAgIAotICAgIGlmIChtYXhIZWlnaHQgPiB0aHJlc2hvbGRI
ZWlnaHQgJiYgdGhyZXNob2xkSGVpZ2h0KSB7Ci0gICAgICAgIGZsb2F0IHNoaWZ0ID0gKG1heEhl
aWdodCAtIHRocmVzaG9sZEhlaWdodCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4odGhyZXNob2xkSGVp
Z2h0KTsKKyAgICBpZiAoYmFzZUhlaWdodCA+IHRocmVzaG9sZEhlaWdodCAmJiB0aHJlc2hvbGRI
ZWlnaHQpIHsKKyAgICAgICAgZmxvYXQgc2hpZnQgPSAoYmFzZUhlaWdodCAtIHRocmVzaG9sZEhl
aWdodCkgLyBzdGF0aWNfY2FzdDxmbG9hdD4odGhyZXNob2xkSGVpZ2h0KTsKICAgICAgICAgaWYg
KHNoaWZ0ID4gMS4pCiAgICAgICAgICAgICBzaGlmdCA9IDEuMGY7Ci0gICAgICAgIHRvcFN0YXJ0
U2hpZnQgPSBzdGF0aWNfY2FzdDxpbnQ+KGdSYWRpY2FsQm90dG9tUG9pbnRYUG9zICogZnJvbnRX
aWR0aCAqIHNoaWZ0KTsKKyAgICAgICAgb3ZlcmJhckxlZnRQb2ludFNoaWZ0ID0gc3RhdGljX2Nh
c3Q8aW50PihnUmFkaWNhbEJvdHRvbVBvaW50WEZyb250ICogZnJvbnRXaWR0aCAqIHNoaWZ0KTsK
ICAgICB9CiAgICAgCi0gICAgd2lkdGggKz0gdG9wU3RhcnRTaGlmdDsKKyAgICBvdmVyYmFyV2lk
dGggKz0gb3ZlcmJhckxlZnRQb2ludFNoaWZ0OwogICAgIAotICAgIEZsb2F0UG9pbnQgdG9wU3Rh
cnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBmcm9udFdpZHRoIC0gdG9wU3RhcnRTaGlmdCwg
YWRqdXN0ZWRQYWludE9mZnNldC55KCkpOwotICAgIEZsb2F0UG9pbnQgYm90dG9tTGVmdChhZGp1
c3RlZFBhaW50T2Zmc2V0LngoKSArIGZyb250V2lkdGggKiBnUmFkaWNhbEJvdHRvbVBvaW50WFBv
cyAsIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgbWF4SGVpZ2h0ICsgZ1JhZGljYWxCYXNlUGFk
KTsKLSAgICBGbG9hdFBvaW50IHRvcExlZnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBmcm9u
dFdpZHRoICogZ1JhZGljYWxUb3BMZWZ0UG9pbnRYUG9zICwgYWRqdXN0ZWRQYWludE9mZnNldC55
KCkgKyBnUmFkaWNhbFRvcExlZnRQb2ludFlQb3MgKiBtYXhIZWlnaHQpOwotICAgIEZsb2F0UG9p
bnQgbGVmdEVuZChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSAsIHRvcExlZnQueSgpICsgZ1JhZGlj
YWxMZWZ0RW5kWVNoaWZ0ICogc3R5bGUoKS0+Zm9udFNpemUoKSk7CisgICAgRmxvYXRQb2ludCBv
dmVyYmFyTGVmdFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgZnJvbnRXaWR0aCAtIG92
ZXJiYXJMZWZ0UG9pbnRTaGlmdCwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkpOworICAgIEZsb2F0
UG9pbnQgYm90dG9tUG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBmcm9udFdpZHRoICog
Z1JhZGljYWxCb3R0b21Qb2ludFhGcm9udCwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBiYXNl
SGVpZ2h0ICsgZ1JhZGljYWxCb3R0b21Qb2ludExvd2VyKTsKKyAgICBGbG9hdFBvaW50IGRpcExl
ZnRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGZyb250V2lkdGggKiBnUmFkaWNhbERp
cExlZnRQb2ludFhGcm9udCwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBnUmFkaWNhbERpcExl
ZnRQb2ludFlQb3MgKiBiYXNlSGVpZ2h0KTsKKyAgICBGbG9hdFBvaW50IGxlZnRFbmQoYWRqdXN0
ZWRQYWludE9mZnNldC54KCksIGRpcExlZnRQb2ludC55KCkgKyBnUmFkaWNhbExlZnRFbmRZU2hp
ZnRFbXMgKiBzdHlsZSgpLT5mb250U2l6ZSgpKTsKICAgICAKICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmluZm8uY29udGV4dCk7CiAgICAgCi0gICAgaW5mby5jb250
ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoZ1JhZGljYWxMaW5lVGhpY2tuZXNzICogc3R5bGUoKS0+
Zm9udFNpemUoKSk7CisgICAgaW5mby5jb250ZXh0LT5zZXRTdHJva2VUaGlja25lc3MoZ1JhZGlj
YWxMaW5lVGhpY2tuZXNzRW1zICogc3R5bGUoKS0+Zm9udFNpemUoKSk7CiAgICAgaW5mby5jb250
ZXh0LT5zZXRTdHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CiAgICAgaW5mby5jb250ZXh0LT5zZXRT
dHJva2VDb2xvcihzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xv
ciksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGluZm8uY29udGV4dC0+c2V0TGluZUpvaW4o
TWl0ZXJKb2luKTsKQEAgLTEyMywxNiArMTIzLDE2IEBAIHZvaWQgUmVuZGVyTWF0aE1MU3F1YXJl
Um9vdDo6cGFpbnQoUGFpbnQKICAgICAKICAgICBQYXRoIHJvb3Q7CiAgICAgCi0gICAgcm9vdC5t
b3ZlVG8oRmxvYXRQb2ludCh0b3BTdGFydC54KCkgKyB3aWR0aCAsIGFkanVzdGVkUGFpbnRPZmZz
ZXQueSgpKSk7CisgICAgcm9vdC5tb3ZlVG8oRmxvYXRQb2ludChvdmVyYmFyTGVmdFBvaW50Lngo
KSArIG92ZXJiYXJXaWR0aCwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkpKTsKICAgICAvLyBkcmF3
IHRvcAotICAgIHJvb3QuYWRkTGluZVRvKHRvcFN0YXJ0KTsKKyAgICByb290LmFkZExpbmVUbyhv
dmVyYmFyTGVmdFBvaW50KTsKICAgICAvLyBkcmF3IGZyb20gdG9wIGxlZnQgY29ybmVyIHRvIGJv
dHRvbSBwb2ludCBvZiByYWRpY2FsCi0gICAgcm9vdC5hZGRMaW5lVG8oYm90dG9tTGVmdCk7Ci0g
ICAgLy8gZHJhdyBmcm9tIGJvdHRvbSBwb2ludCB0byB0b3Agb2YgbGVmdCBwYXJ0IG9mIHJhZGlj
YWwgYmFzZSAicG9ja2V0IgotICAgIHJvb3QuYWRkTGluZVRvKHRvcExlZnQpOworICAgIHJvb3Qu
YWRkTGluZVRvKGJvdHRvbVBvaW50KTsKKyAgICAvLyBkcmF3IGZyb20gYm90dG9tIHBvaW50IHRv
IHRvcCBvZiBsZWZ0IHBhcnQgb2YgcmFkaWNhbCBiYXNlICJkaXAiCisgICAgcm9vdC5hZGRMaW5l
VG8oZGlwTGVmdFBvaW50KTsKICAgICAvLyBkcmF3IHRvIGVuZAogICAgIHJvb3QuYWRkTGluZVRv
KGxlZnRFbmQpOwotCisgICAgCiAgICAgaW5mby5jb250ZXh0LT5zdHJva2VQYXRoKHJvb3QpOwog
ICAgIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgbWFza1N0YXRlU2F2ZXIoKmluZm8u
Y29udGV4dCk7CkBAIC0xNDAsNDggKzE0MCw0OCBAQCB2b2lkIFJlbmRlck1hdGhNTFNxdWFyZVJv
b3Q6OnBhaW50KFBhaW50CiAgICAgLy8gQnVpbGQgYSBtYXNrIHRvIGRyYXcgdGhlIHRoaWNrIHBh
cnQgb2YgdGhlIHJvb3QuCiAgICAgUGF0aCBtYXNrOwogICAgIAotICAgIG1hc2subW92ZVRvKHRv
cFN0YXJ0KTsKLSAgICBtYXNrLmFkZExpbmVUbyhib3R0b21MZWZ0KTsKLSAgICBtYXNrLmFkZExp
bmVUbyh0b3BMZWZ0KTsKLSAgICBtYXNrLmFkZExpbmVUbyhGbG9hdFBvaW50KDIgKiB0b3BMZWZ0
LngoKSAtIGxlZnRFbmQueCgpLCAyICogdG9wTGVmdC55KCkgLSBsZWZ0RW5kLnkoKSkpOworICAg
IG1hc2subW92ZVRvKG92ZXJiYXJMZWZ0UG9pbnQpOworICAgIG1hc2suYWRkTGluZVRvKGJvdHRv
bVBvaW50KTsKKyAgICBtYXNrLmFkZExpbmVUbyhkaXBMZWZ0UG9pbnQpOworICAgIG1hc2suYWRk
TGluZVRvKEZsb2F0UG9pbnQoMiAqIGRpcExlZnRQb2ludC54KCkgLSBsZWZ0RW5kLngoKSwgMiAq
IGRpcExlZnRQb2ludC55KCkgLSBsZWZ0RW5kLnkoKSkpOwogICAgIAogICAgIGluZm8uY29udGV4
dC0+Y2xpcChtYXNrKTsKICAgICAKICAgICAvLyBEcmF3IHRoZSB0aGljayBwYXJ0IG9mIHRoZSBy
b290LgotICAgIGluZm8uY29udGV4dC0+c2V0U3Ryb2tlVGhpY2tuZXNzKGdSYWRpY2FsVGhpY2tM
aW5lVGhpY2tuZXNzICogc3R5bGUoKS0+Zm9udFNpemUoKSk7CisgICAgaW5mby5jb250ZXh0LT5z
ZXRTdHJva2VUaGlja25lc3MoZ1JhZGljYWxUaGlja0xpbmVUaGlja25lc3NFbXMgKiBzdHlsZSgp
LT5mb250U2l6ZSgpKTsKICAgICBpbmZvLmNvbnRleHQtPnNldExpbmVDYXAoU3F1YXJlQ2FwKTsK
ICAgICAKICAgICBQYXRoIGxpbmU7Ci0gICAgbGluZS5tb3ZlVG8oYm90dG9tTGVmdCk7Ci0gICAg
bGluZS5hZGRMaW5lVG8odG9wTGVmdCk7CisgICAgbGluZS5tb3ZlVG8oYm90dG9tUG9pbnQpOwor
ICAgIGxpbmUuYWRkTGluZVRvKGRpcExlZnRQb2ludCk7CiAgICAgCiAgICAgaW5mby5jb250ZXh0
LT5zdHJva2VQYXRoKGxpbmUpOwogfQogCiB2b2lkIFJlbmRlck1hdGhNTFNxdWFyZVJvb3Q6Omxh
eW91dCgpCiB7Ci0gICAgaW50IG1heEhlaWdodCA9IDA7CisgICAgaW50IGJhc2VIZWlnaHQgPSAw
OwogICAgIAogICAgIFJlbmRlck9iamVjdCogY3VycmVudCA9IGZpcnN0Q2hpbGQoKTsKICAgICB3
aGlsZSAoY3VycmVudCkgewogICAgICAgICBpZiAoY3VycmVudC0+aXNCb3hNb2RlbE9iamVjdCgp
KSB7CiAgICAgICAgICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0gdG9SZW5kZXJCb3hN
b2RlbE9iamVjdChjdXJyZW50KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGJveC0+
cGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkgPiBtYXhIZWlnaHQpCi0gICAgICAgICAgICAgICAg
bWF4SGVpZ2h0ID0gYm94LT5waXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKTsKKyAgICAgICAgICAg
IGlmIChib3gtPnBpeGVsU25hcHBlZE9mZnNldEhlaWdodCgpID4gYmFzZUhlaWdodCkKKyAgICAg
ICAgICAgICAgICBiYXNlSGVpZ2h0ID0gYm94LT5waXhlbFNuYXBwZWRPZmZzZXRIZWlnaHQoKTsK
ICAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gRklYTUU6IENhbiBib3gtPnN0eWxlKCkgYmUg
bW9kaWZpZWQ/CiAgICAgICAgICAgICBib3gtPnN0eWxlKCktPnNldFZlcnRpY2FsQWxpZ24oQkFT
RUxJTkUpOwogICAgICAgICB9CiAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2libGlu
ZygpOwogICAgIH0KICAgICAKLSAgICBpZiAoIW1heEhlaWdodCkKLSAgICAgICAgbWF4SGVpZ2h0
ID0gc3R5bGUoKS0+Zm9udFNpemUoKTsKLQorICAgIGlmICghYmFzZUhlaWdodCkKKyAgICAgICAg
YmFzZUhlaWdodCA9IHN0eWxlKCktPmZvbnRTaXplKCk7CiAgICAgCi0gICAgaWYgKG1heEhlaWdo
dCA+IHN0YXRpY19jYXN0PGludD4oZ1RocmVzaG9sZEJhc2VIZWlnaHQgKiBzdHlsZSgpLT5mb250
U2l6ZSgpKSkKLSAgICAgICAgc3R5bGUoKS0+c2V0UGFkZGluZ0JvdHRvbShMZW5ndGgoc3RhdGlj
X2Nhc3Q8aW50PihnUm9vdEJvdHRvbVBhZGRpbmcgKiBzdHlsZSgpLT5mb250U2l6ZSgpKSwgRml4
ZWQpKTsKLQorICAgIC8vIEZJWE1FOiBDYW4gc3R5bGUoKSBiZSBtb2RpZmllZD8gQW5kIGRvbid0
IHdlIG5lZWQgc3R5bGVEaWRDaGFuZ2UoKT8KKyAgICBpZiAoYmFzZUhlaWdodCA+IHN0YXRpY19j
YXN0PGludD4oZ1RocmVzaG9sZEJhc2VIZWlnaHRFbXMgKiBzdHlsZSgpLT5mb250U2l6ZSgpKSkK
KyAgICAgICAgc3R5bGUoKS0+c2V0UGFkZGluZ0JvdHRvbShMZW5ndGgoc3RhdGljX2Nhc3Q8aW50
PihnQmlnUm9vdEJvdHRvbVBhZGRpbmdFbXMgKiBzdHlsZSgpLT5mb250U2l6ZSgpKSwgRml4ZWQp
KTsKICAgICAKICAgICBSZW5kZXJCbG9jazo6bGF5b3V0KCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJv
b3QuaAkocmV2aXNpb24gMTExMDgzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEwICszMiwx
MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCisvLyBSZW5kZXIgc3FydChiYXNlKSwg
dXNpbmcgcmFkaWNhbCBub3RhdGlvbi4KIGNsYXNzIFJlbmRlck1hdGhNTFNxdWFyZVJvb3QgOiBw
dWJsaWMgUmVuZGVyTWF0aE1MQmxvY2sgewogcHVibGljOgogICAgIFJlbmRlck1hdGhNTFNxdWFy
ZVJvb3QoRWxlbWVudCopOworICAgIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8m
LCBjb25zdCBMYXlvdXRQb2ludCYpOworICAgIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxTdWJTdXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFN1YlN1cC5oCShyZXZpc2lvbiAxMTEwODMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFN1YlN1cC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKKy8vIFJl
bmRlciBhIGJhc2Ugd2l0aCBhIHN1YnNjcmlwdCBhbmQvb3IgYSBzdXBlcnNjcmlwdC4KIGNsYXNz
IFJlbmRlck1hdGhNTFN1YlN1cCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxCbG9jayB7CiBwdWJsaWM6
CiAgICAgUmVuZGVyTWF0aE1MU3ViU3VwKEVsZW1lbnQqKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>