<?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>78310</bug_id>
          
          <creation_ts>2012-02-09 18:13:55 -0800</creation_ts>
          <short_desc>MathML internals - use LayoutUnit</short_desc>
          <delta_ts>2012-09-29 19:28:16 -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>WONTFIX</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>1</everconfirmed>
          <reporter name="Dave Barton">dbarton</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>fred.wang</cc>
    
    <cc>leviw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>553687</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-02-09 18:13:55 -0800</bug_when>
    <thetext>MathML internals - use LayoutUnit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553697</commentid>
    <comment_count>1</comment_count>
      <attachid>126423</attachid>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-02-09 18:22:39 -0800</bug_when>
    <thetext>Created attachment 126423
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553709</commentid>
    <comment_count>2</comment_count>
      <attachid>126423</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-02-09 18:39:54 -0800</bug_when>
    <thetext>Comment on attachment 126423
Patch

LayoutUnit will not be changing to float. It will be changing to a fixed point fractional type.

The people who need to review this are Levi and Emil, who know the rationale for when to use int and when to use LayoutUnit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553711</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-02-09 18:40:40 -0800</bug_when>
    <thetext>It’s too bad this combines the LayoutUnit with the create change, because I could review+ the create change without a second thought!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553740</commentid>
    <comment_count>4</comment_count>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-02-09 19:18:20 -0800</bug_when>
    <thetext>Wow! I&apos;m glad Darin caught my LayoutUnit mistake. I don&apos;t know where I thought I read that it was changing to float. Is there somewhere I can read about the proposed future LayoutUnit so I&apos;ll get this right? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553839</commentid>
    <comment_count>5</comment_count>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-02-09 22:23:18 -0800</bug_when>
    <thetext>I had been relying on (misinterpreting?) WebCore/rendering/LayoutTypes.h which talked about replacing ints with floats. Obviously I won&apos;t do anything until I hear from Levi or Emil, and I don&apos;t want to conflict with bug 77916 which I&apos;ve just discovered, but in the near future what should I do to program in RenderMathML* files? There&apos;s a lot of code that adds pixels constants to things, or sets them as padding widths or heights, etc. Can I use LayoutTypes.h roundedLayoutUnit(float) and ceiledLayoutUnit(float)? Are they intended to convert from pixel units to LayoutUnit? Will LayoutUnit turn into a class with an operator int() or operator float() or something that converts to pixels? If LayoutUnit becomes a fixed point type, don&apos;t we need to shift or multiply and divide when converting from and to pixel units?? Thanks for any enlightenment!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554180</commentid>
    <comment_count>6</comment_count>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-02-10 10:32:08 -0800</bug_when>
    <thetext>All right, I have found http://svn.webkit.org/repository/webkit/branches/subpixellayout/Source/WebCore/platform/AppUnit.h and it answers a lot of my questions. Sorry if I asked too many, I think I was tired last night.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731264</commentid>
    <comment_count>7</comment_count>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-09-29 19:28:16 -0700</bug_when>
    <thetext>The changes in this patch no longer really apply to the current MathML code. Most of the affected routines have been removed, and also I now understand better the preference for CSS-pixel-aligning most boxes, baselines, fraction bars, square root signs, etc.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126423</attachid>
            <date>2012-02-09 18:22:39 -0800</date>
            <delta_ts>2012-02-10 11:51:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78310-20120209182238.patch</filename>
            <type>text/plain</type>
            <size>21442</size>
            <attacher name="Dave Barton">dbarton</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzMzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEyLTAyLTA5ICBEYXZpZCBC
YXJ0b24gIDxkYmFydG9uQG1hdGhzY3JpYmUuY29tPgorCisgICAgICAgIE1hdGhNTCBpbnRlcm5h
bHMgLSB1c2UgTGF5b3V0VW5pdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzgzMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQZXIgRGFyaW4gQWRsZXIsIEkgYW0gYnJlYWtpbmcgdXAgdGhlIHBhdGNoIGZp
eGluZyBidWcgNTI0NDQgaW50byBzbWFsbGVyIHBpZWNlcy4KKyAgICAgICAgSGVyZSB3ZSBwcmVm
ZXIgTGF5b3V0VW5pdCB0byBpbnQsIGluIGNhc2UgTGF5b3V0VW5pdCBjaGFuZ2VzIHRvIGZsb2F0
LgorICAgICAgICBXZSBhbHNvIGNoYW5nZSB0byBzdGFuZGFyZCBSZWZQdHIgZnVuY3Rpb24gbmFt
aW5nOiAiY3JlYXRlLi4uIiBpbnN0ZWFkIG9mICJtYWtlLi4uIi4KKworICAgICAgICBObyBuZXcg
dGVzdHMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEJsb2NrOjpjcmVhdGVCbG9ja1N0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEJsb2NrOjpub25PcGVyYXRvckhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6c3RyZXRjaFRvSGVpZ2h0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEJsb2NrOjpwYWludCk6CisgICAgICAg
ICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAgICAgICAoUmVuZGVy
TWF0aE1MQmxvY2spOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVu
Y2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTEZlbmNlZDo6Y3JlYXRlT3Bl
cmF0b3JTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGZW5jZWQ6Om1ha2VG
ZW5jZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MRmVuY2VkOjphZGRDaGlsZCk6
CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaDoKKyAgICAg
ICAgKFJlbmRlck1hdGhNTEZlbmNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxGcmFj
dGlvbjo6dXBkYXRlRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
RnJhY3Rpb246OmFkZENoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9y
OjpzdHJldGNoVG9IZWlnaHQpOgorICAgICAgICAgICAgLSBEb24ndCBjb21wYXJlIGFuIHVuZXhw
YW5kZWQgaGVpZ2h0IHRvIGFuIGV4cGFuZGVkIG9uZS4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgIChSZW5kZXJNYXRoTUxPcGVyYXRv
cik6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvb3Q6OmFkZENoaWxkKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxSb3c6Om5vbk9wZXJhdG9ySGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oOgorICAgICAgICAoUmVuZGVyTWF0aE1MUm93KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFJvdzo6c3RyZXRjaFRvSGVpZ2h0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFN1YlN1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxTdWJTdXA6OnN0cmV0Y2hUb0hlaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxTdWJTdXA6Om5vbk9wZXJhdG9ySGVpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTFN1YlN1cDo6YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAg
ICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTdWJTdXAuaDoKKyAgICAgICAgKFJlbmRl
ck1hdGhNTFN1YlN1cCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxV
bmRlck92ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyOjph
ZGRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRPZmZzZXRIZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpzdHJldGNoVG9IZWlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpub25PcGVyYXRvckhlaWdodCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaDoKKyAgICAg
ICAgKFJlbmRlck1hdGhNTFVuZGVyT3Zlcik6CisKIDIwMTItMDItMDkgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgdGhlIHNjcm9sbCBsYXll
ciBwb3NpdGlvbiBvbiB0aGUgbWFpbiB0aHJlYWQgd2hlbiB3ZSBoYXZlIHNsb3cgcmVwYWludCBv
YmplY3RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEJsb2NrLmNwcAkocmV2aXNpb24gMTA3MjY5KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDcgKzQ5LDcgQEAgYm9vbCBSZW5kZXJNYXRoTUxCbG9jazo6aXNDaGlsZEFsbG93ZWQo
UgogICAgIHJldHVybiBjaGlsZC0+bm9kZSgpICYmIGNoaWxkLT5ub2RlKCktPm5vZGVUeXBlKCkg
PT0gTm9kZTo6RUxFTUVOVF9OT0RFOwogfQogCi1QYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5k
ZXJNYXRoTUxCbG9jazo6bWFrZUJsb2NrU3R5bGUoKQorUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
UmVuZGVyTWF0aE1MQmxvY2s6OmNyZWF0ZUJsb2NrU3R5bGUoKQogewogICAgIFJlZlB0cjxSZW5k
ZXJTdHlsZT4gbmV3U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CiAgICAgbmV3U3R5bGUt
PmluaGVyaXRGcm9tKHN0eWxlKCkpOwpAQCAtNTcsNyArNTcsNyBAQCBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBSZW5kZXJNYXRoTUxCbG9jCiAgICAgcmV0dXJuIG5ld1N0eWxlOwogfQogCi1pbnQg
UmVuZGVyTWF0aE1MQmxvY2s6Om5vbk9wZXJhdG9ySGVpZ2h0KCkgY29uc3QKK0xheW91dFVuaXQg
UmVuZGVyTWF0aE1MQmxvY2s6Om5vbk9wZXJhdG9ySGVpZ2h0KCkgY29uc3QKIHsKICAgICBpZiAo
IWlzUmVuZGVyTWF0aE1MT3BlcmF0b3IoKSkKICAgICAgICAgcmV0dXJuIG9mZnNldEhlaWdodCgp
OwpAQCAtNjUsNyArNjUsNyBAQCBpbnQgUmVuZGVyTWF0aE1MQmxvY2s6Om5vbk9wZXJhdG9ySGVp
Z2h0CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgUmVuZGVyTWF0aE1MQmxvY2s6OnN0cmV0Y2hU
b0hlaWdodChpbnQgaGVpZ2h0KSAKK3ZvaWQgUmVuZGVyTWF0aE1MQmxvY2s6OnN0cmV0Y2hUb0hl
aWdodChMYXlvdXRVbml0IGhlaWdodCkgCiB7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnJl
bnQgPSBmaXJzdENoaWxkKCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0U2libGlu
ZygpKQogICAgICAgIGlmIChjdXJyZW50LT5pc1JlbmRlck1hdGhNTEJsb2NrKCkpIHsKQEAgLTk1
LDEzICs5NSwxMyBAQCB2b2lkIFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChQYWludEluZm8mCiAg
ICAgaW5mby5jb250ZXh0LT5kcmF3TGluZShMYXlvdXRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0
LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBvZmZzZXRIZWlnaHQoKSksIExheW91dFBv
aW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgb2Zmc2V0V2lkdGgoKSwgYWRqdXN0ZWRQYWlu
dE9mZnNldC55KCkgKyBvZmZzZXRIZWlnaHQoKSkpOwogICAgIGluZm8uY29udGV4dC0+ZHJhd0xp
bmUoYWRqdXN0ZWRQYWludE9mZnNldCwgTGF5b3V0UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54
KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgb2Zmc2V0SGVpZ2h0KCkpKTsKICAgICAKLSAg
ICBpbnQgdG9wU3RhcnQgPSBwYWRkaW5nVG9wKCk7CisgICAgTGF5b3V0VW5pdCB0b3BTdGFydCA9
IHBhZGRpbmdUb3AoKTsKICAgICAKICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENv
bG9yKDAsIDI1NSwgMCksIENvbG9yU3BhY2VTUkdCKTsKICAgICAKICAgICBpbmZvLmNvbnRleHQt
PmRyYXdMaW5lKExheW91dFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpLCBhZGp1c3RlZFBh
aW50T2Zmc2V0LnkoKSArIHRvcFN0YXJ0KSwgTGF5b3V0UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNl
dC54KCkgKyBvZmZzZXRXaWR0aCgpLCBhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSArIHRvcFN0YXJ0
KSk7CiAgICAgCi0gICAgaW50IGJhc2VsaW5lID0gYmFzZWxpbmVQb3NpdGlvbihBbHBoYWJldGlj
QmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxMaW5lKTsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5l
ID0gYmFzZWxpbmVQb3NpdGlvbihBbHBoYWJldGljQmFzZWxpbmUsIHRydWUsIEhvcml6b250YWxM
aW5lKTsKICAgICAKICAgICBpbmZvLmNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDI1NSwg
MCwgMCksIENvbG9yU3BhY2VTUkdCKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgJKHJldmlzaW9uIDEwNzI2
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGlzUmVuZGVyTWF0aE1MUm93KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxNYXRoKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaGFzQmFzZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBpbnQgbm9uT3BlcmF0b3JIZWlnaHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZXRjaFRvSGVpZ2h0KGludCBoZWlnaHQpOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBub25PcGVy
YXRvckhlaWdodCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzdHJldGNoVG9IZWlnaHQoTGF5
b3V0VW5pdCBoZWlnaHQpOwogCiAjaWYgRU5BQkxFKERFQlVHX01BVEhfTEFZT1VUKQogICAgIHZp
cnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwpAQCAtNzAs
NyArNzAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIAogICAgICAgICByZXR1cm4gMDsKICAgICB9
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBtYWtlQmxvY2tTdHlsZSgpOwor
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3JlYXRlQmxvY2tTdHlsZSgpOwog
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IHsg
cmV0dXJuIGlzQW5vbnltb3VzKCkgPyAiUmVuZGVyTWF0aE1MQmxvY2sgKGFub255bW91cykiIDog
IlJlbmRlck1hdGhNTEJsb2NrIjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAkocmV2aXNpb24gMTA3MjY5
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwyMiArODAsMjIgQEAgdm9pZCBSZW5kZXJNYXRoTUxG
ZW5jZWQ6OnVwZGF0ZUZyb21FbGVtZQogICAgICAgICBtYWtlRmVuY2VzKCk7CiB9CiAKLVBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlck1hdGhNTEZlbmNlZDo6bWFrZU9wZXJhdG9yU3R5bGUo
KQorUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gUmVuZGVyTWF0aE1MRmVuY2VkOjpjcmVhdGVPcGVy
YXRvclN0eWxlKCkKIHsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVy
U3R5bGU6OmNyZWF0ZSgpOwogICAgIG5ld1N0eWxlLT5pbmhlcml0RnJvbShzdHlsZSgpKTsKICAg
ICBuZXdTdHlsZS0+c2V0RGlzcGxheShJTkxJTkVfQkxPQ0spOwotICAgIG5ld1N0eWxlLT5zZXRQ
YWRkaW5nUmlnaHQoTGVuZ3RoKHN0YXRpY19jYXN0PGludD4oZ09wZXJhdG9yUGFkZGluZyAqIHN0
eWxlKCktPmZvbnRTaXplKCkpLCBGaXhlZCkpOworICAgIG5ld1N0eWxlLT5zZXRQYWRkaW5nUmln
aHQoTGVuZ3RoKHN0YXRpY19jYXN0PExheW91dFVuaXQ+KGdPcGVyYXRvclBhZGRpbmcgKiBzdHls
ZSgpLT5mb250U2l6ZSgpKSwgRml4ZWQpKTsKICAgICByZXR1cm4gbmV3U3R5bGUucmVsZWFzZSgp
OwogfQogCiB2b2lkIFJlbmRlck1hdGhNTEZlbmNlZDo6bWFrZUZlbmNlcygpCiB7CiAgICAgUmVu
ZGVyT2JqZWN0KiBvcGVuRmVuY2UgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTE9w
ZXJhdG9yKG5vZGUoKSwgbV9vcGVuKTsKLSAgICBvcGVuRmVuY2UtPnNldFN0eWxlKG1ha2VPcGVy
YXRvclN0eWxlKCkpOworICAgIG9wZW5GZW5jZS0+c2V0U3R5bGUoY3JlYXRlT3BlcmF0b3JTdHls
ZSgpKTsKICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQob3BlbkZlbmNlLCBmaXJzdENoaWxkKCkp
OwogICAgIFJlbmRlck9iamVjdCogY2xvc2VGZW5jZSA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVu
ZGVyTWF0aE1MT3BlcmF0b3Iobm9kZSgpLCBtX2Nsb3NlKTsKLSAgICBjbG9zZUZlbmNlLT5zZXRT
dHlsZShtYWtlT3BlcmF0b3JTdHlsZSgpKTsKKyAgICBjbG9zZUZlbmNlLT5zZXRTdHlsZShjcmVh
dGVPcGVyYXRvclN0eWxlKCkpOwogICAgIFJlbmRlckJsb2NrOjphZGRDaGlsZChjbG9zZUZlbmNl
KTsKIH0KIApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MRmVuY2VkOjphZGRD
aGlsZChSZW5kZXIKICAgICAgICAgICAgICAgICBzZXBhcmF0b3IgPSAoKm1fc2VwYXJhdG9ycy5n
ZXQoKSlbY291bnQgLSAyXTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIFJlbmRlck9i
amVjdCogc2VwYXJhdG9yT2JqID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJNYXRoTUxPcGVy
YXRvcihub2RlKCksIHNlcGFyYXRvcik7Ci0gICAgICAgICAgICBzZXBhcmF0b3JPYmotPnNldFN0
eWxlKG1ha2VPcGVyYXRvclN0eWxlKCkpOworICAgICAgICAgICAgc2VwYXJhdG9yT2JqLT5zZXRT
dHlsZShjcmVhdGVPcGVyYXRvclN0eWxlKCkpOwogICAgICAgICAgICAgUmVuZGVyQmxvY2s6OmFk
ZENoaWxkKHNlcGFyYXRvck9iaiwgbGFzdENoaWxkKCkpOwogICAgICAgICB9CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEZlbmNlZC5oCShyZXZpc2lvbiAxMDcyNjkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3QgeyByZXR1cm4gIlJlbmRlck1hdGhNTEZlbmNlZCI7IH0KIAotICAgIFBhc3NSZWZQ
dHI8UmVuZGVyU3R5bGU+IG1ha2VPcGVyYXRvclN0eWxlKCk7CisgICAgUGFzc1JlZlB0cjxSZW5k
ZXJTdHlsZT4gY3JlYXRlT3BlcmF0b3JTdHlsZSgpOwogICAgIHZvaWQgbWFrZUZlbmNlcygpOwog
ICAgIAogICAgIFVDaGFyIG1fb3BlbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCShyZXZpc2lvbiAx
MDcyNjkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZy
YWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsMTYgKzk1LDE2IEBAIHZvaWQgUmVuZGVy
TWF0aE1MRnJhY3Rpb246OnVwZGF0ZUZyb21FbGUKICAgICAgICAgbV9saW5lVGhpY2tuZXNzID0g
MDsKIAogICAgIC8vIFVwZGF0ZSB0aGUgc3R5bGUgZm9yIHRoZSBwYWRkaW5nIG9mIHRoZSBkZW5v
bWluYXRvciBmb3IgdGhlIGxpbmUgdGhpY2tuZXNzCi0gICAgbGFzdENoaWxkKCktPnN0eWxlKCkt
PnNldFBhZGRpbmdUb3AoTGVuZ3RoKHN0YXRpY19jYXN0PGludD4obV9saW5lVGhpY2tuZXNzICsg
c3R5bGUoKS0+Zm9udFNpemUoKSAqIGdEZW5vbWluYXRvclBhZCksIEZpeGVkKSk7CisgICAgbGFz
dENoaWxkKCktPnN0eWxlKCktPnNldFBhZGRpbmdUb3AoTGVuZ3RoKHN0YXRpY19jYXN0PExheW91
dFVuaXQ+KG1fbGluZVRoaWNrbmVzcyArIHN0eWxlKCktPmZvbnRTaXplKCkgKiBnRGVub21pbmF0
b3JQYWQpLCBGaXhlZCkpOwogfQogCiB2b2lkIFJlbmRlck1hdGhNTEZyYWN0aW9uOjphZGRDaGls
ZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKQogewogICAg
IFJlbmRlckJsb2NrKiByb3cgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRlck1hdGhNTEJsb2Nr
KG5vZGUoKSk7Ci0gICAgUmVmUHRyPFJlbmRlclN0eWxlPiByb3dTdHlsZSA9IG1ha2VCbG9ja1N0
eWxlKCk7CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiByb3dTdHlsZSA9IGNyZWF0ZUJsb2NrU3R5
bGUoKTsKICAgICAKICAgICByb3dTdHlsZS0+c2V0VGV4dEFsaWduKENFTlRFUik7Ci0gICAgTGVu
Z3RoIHBhZChzdGF0aWNfY2FzdDxpbnQ+KHJvd1N0eWxlLT5mb250U2l6ZSgpICogZ0hvcml6b250
YWxQYWQpLCBGaXhlZCk7CisgICAgTGVuZ3RoIHBhZChzdGF0aWNfY2FzdDxMYXlvdXRVbml0Pihy
b3dTdHlsZS0+Zm9udFNpemUoKSAqIGdIb3Jpem9udGFsUGFkKSwgRml4ZWQpOwogICAgIHJvd1N0
eWxlLT5zZXRQYWRkaW5nTGVmdChwYWQpOwogICAgIHJvd1N0eWxlLT5zZXRQYWRkaW5nUmlnaHQo
cGFkKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MT3BlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCShyZXZpc2lvbiAxMDcyNjkpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjAsOSArNjAsOSBAQCBib29sIFJlbmRlck1hdGhNTE9wZXJhdG9y
Ojppc0NoaWxkQWxsb3dlCiBzdGF0aWMgY29uc3QgZmxvYXQgZ09wZXJhdG9yU3BhY2VyID0gMC4x
ZjsKIHN0YXRpYyBjb25zdCBmbG9hdCBnT3BlcmF0b3JFeHBhbnNpb24gPSAxLjJmOwogCi12b2lk
IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpzdHJldGNoVG9IZWlnaHQoaW50IGhlaWdodCkKK3ZvaWQg
UmVuZGVyTWF0aE1MT3BlcmF0b3I6OnN0cmV0Y2hUb0hlaWdodChMYXlvdXRVbml0IGhlaWdodCkK
IHsKLSAgICBpZiAoaGVpZ2h0ID09IG1fc3RyZXRjaEhlaWdodCkKKyAgICBpZiAoc3RhdGljX2Nh
c3Q8aW50PihoZWlnaHQgKiBnT3BlcmF0b3JFeHBhbnNpb24pID09IG1fc3RyZXRjaEhlaWdodCkK
ICAgICAgICAgcmV0dXJuOwogICAgIG1fc3RyZXRjaEhlaWdodCA9IHN0YXRpY19jYXN0PGludD4o
aGVpZ2h0ICogZ09wZXJhdG9yRXhwYW5zaW9uKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgJKHJl
dmlzaW9uIDEwNzI2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MT3BlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6
CiAgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IoRWxlbWVudCopOwogICAgIFJlbmRlck1hdGhNTE9w
ZXJhdG9yKE5vZGUqLCBVQ2hhciBvcGVyYXRvckNoYXIpOwogICAgIHZpcnR1YWwgYm9vbCBpc1Jl
bmRlck1hdGhNTE9wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBzdHJldGNoVG9IZWlnaHQoaW50IHBpeGVsSGVpZ2h0KTsKKyAgICB2aXJ0dWFsIHZvaWQg
c3RyZXRjaFRvSGVpZ2h0KExheW91dFVuaXQgcGl4ZWxIZWlnaHQpOwogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVGcm9tRWxlbWVudCgpOyAKICAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQo
UmVuZGVyT2JqZWN0KiwgUmVuZGVyU3R5bGUqKSBjb25zdDsKICAgICB2aXJ0dWFsIExheW91dFVu
aXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkg
Y29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFJvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUm9vdC5jcHAJKHJldmlzaW9uIDEwNzI2OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc0LDcgKzc0LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxSb290OjphZGRDaGlsZChSZW5kZXJPYgog
ICAgIGlmIChpc0VtcHR5KCkpIHsKICAgICAgICAgLy8gQWRkIGEgYmxvY2sgZm9yIHRoZSBpbmRl
eAogICAgICAgICBSZW5kZXJCbG9jayogYmxvY2sgPSBuZXcgKHJlbmRlckFyZW5hKCkpIFJlbmRl
ckJsb2NrKG5vZGUoKSk7Ci0gICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gaW5kZXhTdHlsZSA9
IG1ha2VCbG9ja1N0eWxlKCk7CisgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gaW5kZXhTdHls
ZSA9IGNyZWF0ZUJsb2NrU3R5bGUoKTsKICAgICAgICAgaW5kZXhTdHlsZS0+c2V0RGlzcGxheShJ
TkxJTkVfQkxPQ0spOwogICAgICAgICBibG9jay0+c2V0U3R5bGUoaW5kZXhTdHlsZS5yZWxlYXNl
KCkpOwogICAgICAgICBSZW5kZXJCbG9jazo6YWRkQ2hpbGQoYmxvY2spOwpAQCAtODIsNyArODIs
NyBAQCB2b2lkIFJlbmRlck1hdGhNTFJvb3Q6OmFkZENoaWxkKFJlbmRlck9iCiAgICAgICAgIC8v
IEZJWE1FOiB0aGUgd3JhcHBpbmcgZG9lcyBub3Qgc2VlbSB0byBiZSBuZWVkZWQgYW55bW9yZS4K
ICAgICAgICAgLy8gdGhpcyBpcyB0aGUgYmFzZSwgc28gd3JhcCBpdCBzbyB3ZSBjYW4gcGFkIGl0
CiAgICAgICAgIGJsb2NrID0gbmV3IChyZW5kZXJBcmVuYSgpKSBSZW5kZXJCbG9jayhub2RlKCkp
OwotICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGJhc2VTdHlsZSA9IG1ha2VCbG9ja1N0eWxl
KCk7CisgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gYmFzZVN0eWxlID0gY3JlYXRlQmxvY2tT
dHlsZSgpOwogICAgICAgICBiYXNlU3R5bGUtPnNldERpc3BsYXkoSU5MSU5FX0JMT0NLKTsKICAg
ICAgICAgYmFzZVN0eWxlLT5zZXRQYWRkaW5nTGVmdChMZW5ndGgoNSAqIGdSYWRpY2FsV2lkdGgg
LCBQZXJjZW50KSk7CiAgICAgICAgIGJsb2NrLT5zZXRTdHlsZShiYXNlU3R5bGUucmVsZWFzZSgp
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFJvdy5jcHAJKHJldmlzaW9uIDEwNzI2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTMg
KzQxLDEzIEBAIFJlbmRlck1hdGhNTFJvdzo6UmVuZGVyTWF0aE1MUm93KEVsZW1lbnQKIHsKIH0K
IAotaW50IFJlbmRlck1hdGhNTFJvdzo6bm9uT3BlcmF0b3JIZWlnaHQoKSBjb25zdAorTGF5b3V0
VW5pdCBSZW5kZXJNYXRoTUxSb3c6Om5vbk9wZXJhdG9ySGVpZ2h0KCkgY29uc3QKIHsKLSAgICBp
bnQgbWF4SGVpZ2h0ID0gMDsKKyAgICBMYXlvdXRVbml0IG1heEhlaWdodCA9IDA7CiAgICAgZm9y
IChSZW5kZXJPYmplY3QqIGN1cnJlbnQgPSBmaXJzdENoaWxkKCk7IGN1cnJlbnQ7IGN1cnJlbnQg
PSBjdXJyZW50LT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmIChjdXJyZW50LT5pc1JlbmRl
ck1hdGhNTEJsb2NrKCkpIHsKICAgICAgICAgICAgIFJlbmRlck1hdGhNTEJsb2NrKiBibG9jayA9
IHRvUmVuZGVyTWF0aE1MQmxvY2soY3VycmVudCk7Ci0gICAgICAgICAgICBpbnQgYmxvY2tIZWln
aHQgPSBibG9jay0+bm9uT3BlcmF0b3JIZWlnaHQoKTsKKyAgICAgICAgICAgIExheW91dFVuaXQg
YmxvY2tIZWlnaHQgPSBibG9jay0+bm9uT3BlcmF0b3JIZWlnaHQoKTsKICAgICAgICAgICAgIC8v
IENoZWNrIHRvIHNlZSBpZiB0aGlzIGJveCBoYXMgYSBsYXJnZXIgaGVpZ2h0CiAgICAgICAgICAg
ICBpZiAoYmxvY2tIZWlnaHQgPiBtYXhIZWlnaHQpCiAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0
ID0gYmxvY2tIZWlnaHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFJvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm93LmgJKHJldmlzaW9uIDEwNzI2OSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM2LDkgKzM2LDkgQEAgY2xhc3MgUmVuZGVyTWF0aE1MUm93IDogcHVibGljIFJlbmRlck1hdAog
cHVibGljOgogICAgIFJlbmRlck1hdGhNTFJvdyhFbGVtZW50Kik7CiAgICAgdmlydHVhbCBib29s
IGlzUmVuZGVyTWF0aE1MUm93KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwg
aW50IG5vbk9wZXJhdG9ySGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG5v
bk9wZXJhdG9ySGVpZ2h0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGJhc2VsaW5l
UG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUs
IExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0OyAgICAK
LSAgICB2aXJ0dWFsIHZvaWQgc3RyZXRjaFRvSGVpZ2h0KGludCkge30KKyAgICB2aXJ0dWFsIHZv
aWQgc3RyZXRjaFRvSGVpZ2h0KExheW91dFVuaXQpIHsgfQogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgdm9pZCBsYXlvdXQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxTdWJTdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3ViU3VwLmNwcAkocmV2aXNpb24gMTA3MjY5KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTdWJTdXAuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxTdWJT
dXA6OmFkZENoaWxkKFJlbmRlcgogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJNYXRoTUxTdWJTdXA6
OnN0cmV0Y2hUb0hlaWdodChpbnQgaGVpZ2h0KQordm9pZCBSZW5kZXJNYXRoTUxTdWJTdXA6OnN0
cmV0Y2hUb0hlaWdodChMYXlvdXRVbml0IGhlaWdodCkKIHsKICAgICBSZW5kZXJPYmplY3QqIGJh
c2UgPSBmaXJzdENoaWxkKCk7CiAgICAgaWYgKCFiYXNlIHx8ICFiYXNlLT5maXJzdENoaWxkKCkp
CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxTdWJTdXA6OnN0cmV0Y2hUb0hl
aWdodAogICAgIAogICAgIGlmIChiYXNlLT5maXJzdENoaWxkKCkgJiYgYmFzZS0+Zmlyc3RDaGls
ZCgpLT5pc1JlbmRlck1hdGhNTEJsb2NrKCkpIHsKICAgICAgICAgUmVuZGVyTWF0aE1MQmxvY2sq
IGJsb2NrID0gdG9SZW5kZXJNYXRoTUxCbG9jayhiYXNlLT5maXJzdENoaWxkKCkpOwotICAgICAg
ICBibG9jay0+c3RyZXRjaFRvSGVpZ2h0KHN0YXRpY19jYXN0PGludD4oZ1N1YlN1cFN0cmV0Y2gg
KiBoZWlnaHQpKTsKKyAgICAgICAgYmxvY2stPnN0cmV0Y2hUb0hlaWdodChzdGF0aWNfY2FzdDxM
YXlvdXRVbml0PihnU3ViU3VwU3RyZXRjaCAqIGhlaWdodCkpOwogICAgICAgICAKICAgICAgICAg
Ly8gQWRqdXN0IHRoZSBzY3JpcHQgcGxhY2VtZW50IGFmdGVyIHdlIHN0cmV0Y2gKICAgICAgICAg
aWYgKGhlaWdodCA+IDAgJiYgbV9raW5kID09IFN1YlN1cCAmJiBtX3NjcmlwdHMpIHsKQEAgLTEy
MCw4ICsxMjAsOCBAQCB2b2lkIFJlbmRlck1hdGhNTFN1YlN1cDo6c3RyZXRjaFRvSGVpZ2h0CiAg
ICAgICAgICAgICBpZiAoc2NyaXB0KSB7CiAgICAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRo
ZSBzY3JpcHQgaGVpZ2h0IHdpdGhvdXQgdGhlIGNvbnRhaW5lciBtYXJnaW5zLgogICAgICAgICAg
ICAgICAgIFJlbmRlck9iamVjdCogdG9wID0gc2NyaXB0OwotICAgICAgICAgICAgICAgIGludCB0
b3BIZWlnaHQgPSBnZXRCb3hNb2RlbE9iamVjdEhlaWdodCh0b3AtPmZpcnN0Q2hpbGQoKSk7Ci0g
ICAgICAgICAgICAgICAgaW50IHRvcEFkanVzdCA9IHRvcEhlaWdodCAvIGdUb3BBZGp1c3REaXZp
c29yOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgdG9wSGVpZ2h0ID0gZ2V0Qm94TW9kZWxP
YmplY3RIZWlnaHQodG9wLT5maXJzdENoaWxkKCkpOworICAgICAgICAgICAgICAgIExheW91dFVu
aXQgdG9wQWRqdXN0ID0gdG9wSGVpZ2h0IC8gZ1RvcEFkanVzdERpdmlzb3I7CiAgICAgICAgICAg
ICAgICAgdG9wLT5zdHlsZSgpLT5zZXRNYXJnaW5Ub3AoTGVuZ3RoKC10b3BBZGp1c3QsIEZpeGVk
KSk7CiAgICAgICAgICAgICAgICAgdG9wLT5zdHlsZSgpLT5zZXRNYXJnaW5Cb3R0b20oTGVuZ3Ro
KGhlaWdodCAtIHRvcEhlaWdodCArIHRvcEFkanVzdCwgRml4ZWQpKTsKICAgICAgICAgICAgICAg
ICBpZiAodG9wLT5pc0JveE1vZGVsT2JqZWN0KCkpIHsKQEAgLTEzNiwxMSArMTM2LDExIEBAIHZv
aWQgUmVuZGVyTWF0aE1MU3ViU3VwOjpzdHJldGNoVG9IZWlnaHQKICAgICB9CiB9CiAKLWludCBS
ZW5kZXJNYXRoTUxTdWJTdXA6Om5vbk9wZXJhdG9ySGVpZ2h0KCkgY29uc3QgCitMYXlvdXRVbml0
IFJlbmRlck1hdGhNTFN1YlN1cDo6bm9uT3BlcmF0b3JIZWlnaHQoKSBjb25zdCAKIHsKICAgICBp
ZiAobV9raW5kID09IFN1YlN1cCkgCi0gICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc3R5
bGUoKS0+Zm9udFNpemUoKSpnU3ViU3VwU3RyZXRjaCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4oc3R5bGUoKS0+Zm9udFNpemUoKSk7CisgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PExh
eW91dFVuaXQ+KHN0eWxlKCktPmZvbnRTaXplKCkqZ1N1YlN1cFN0cmV0Y2gpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxMYXlvdXRVbml0PihzdHlsZSgpLT5mb250U2l6ZSgpKTsKIH0KIAogdm9p
ZCBSZW5kZXJNYXRoTUxTdWJTdXA6OmxheW91dCgpIApAQCAtMTg5LDEyICsxODksMTIgQEAgTGF5
b3V0VW5pdCBSZW5kZXJNYXRoTUxTdWJTdXA6OmJhc2VsaW5lUAogICAgICAgICBpZiAobV9zY3Jp
cHRzICYmIGJhc2UgJiYgYmFzZS0+aXNCb3hNb2RlbE9iamVjdCgpKSB7CiAgICAgICAgICAgICBS
ZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChiYXNlKTsK
ICAgICAgICAgICAgIAotICAgICAgICAgICAgaW50IHRvcEFkanVzdCA9IChtX3NjcmlwdHMtPm9m
ZnNldEhlaWdodCgpIC0gYm94LT5vZmZzZXRIZWlnaHQoKSkgLyAyOworICAgICAgICAgICAgTGF5
b3V0VW5pdCB0b3BBZGp1c3QgPSAobV9zY3JpcHRzLT5vZmZzZXRIZWlnaHQoKSAtIGJveC0+b2Zm
c2V0SGVpZ2h0KCkpIC8gMjsKICAgICAgICAgCiAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIGxh
c3QgYml0IG9mIHRoaXMgY2FsY3VsYXRpb24gc2hvdWxkIGJlIG1vcmUgZXhhY3QuIFdoeSBpcyB0
aGUgMi0zcHggc2NhbGVkIGZvciB6b29tIG5lY2Vzc2FyeT8KICAgICAgICAgICAgIC8vIFRoZSBi
YXNlbGluZSBpcyB0b3Agc3BhY2luZyBvZiB0aGUgYmFzZSArIHRoZSBiYXNlbGluZSBvZiB0aGUg
YmFzZSArIGFkanVzdGVkIHNwYWNlIGZvciB6b29tCiAgICAgICAgICAgICBmbG9hdCB6b29tRmFj
dG9yID0gc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpOwotICAgICAgICAgICAgcmV0dXJuIHRvcEFk
anVzdCArIGJveC0+YmFzZWxpbmVQb3NpdGlvbihBbHBoYWJldGljQmFzZWxpbmUsIGZpcnN0TGlu
ZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSArIHN0YXRpY19jYXN0PGludD4oKHpvb21G
YWN0b3IgPiAxLjI1ID8gMiA6IDMpICogem9vbUZhY3Rvcik7CisgICAgICAgICAgICByZXR1cm4g
dG9wQWRqdXN0ICsgYm94LT5iYXNlbGluZVBvc2l0aW9uKEFscGhhYmV0aWNCYXNlbGluZSwgZmly
c3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpICsgc3RhdGljX2Nhc3Q8TGF5b3V0
VW5pdD4oKHpvb21GYWN0b3IgPiAxLjI1ID8gMiA6IDMpICogem9vbUZhY3Rvcik7CiAgICAgICAg
IH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdXA6IApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTdWJTdXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFN1YlN1cC5oCShyZXZpc2lv
biAxMDcyNjkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFN1YlN1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw4IEBAIHB1YmxpYzoKICAgICBS
ZW5kZXJNYXRoTUxTdWJTdXAoRWxlbWVudCopOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChS
ZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCk7CiAgICAg
dmlydHVhbCBib29sIGhhc0Jhc2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVh
bCBpbnQgbm9uT3BlcmF0b3JIZWlnaHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZXRj
aFRvSGVpZ2h0KGludCBwaXhlbEhlaWdodCk7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG5vbk9w
ZXJhdG9ySGVpZ2h0KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHN0cmV0Y2hUb0hlaWdodChM
YXlvdXRVbml0IHBpeGVsSGVpZ2h0KTsKICAgICB2aXJ0dWFsIExheW91dFVuaXQgYmFzZWxpbmVQ
b3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwg
TGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Q7CiAKIHBy
b3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVW5kZXJPdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAJKHJldmlzaW9uIDEwNzI2OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTcsNyArNTcsNyBAQCBSZW5kZXJNYXRoTUxVbmRlck92ZXI6OlJl
bmRlck1hdGhNTFVuZGVyCiB2b2lkIFJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6YWRkQ2hpbGQoUmVu
ZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkKIHsgICAgCiAgICAg
UmVuZGVyTWF0aE1MQmxvY2sqIHJvdyA9IG5ldyAocmVuZGVyQXJlbmEoKSkgUmVuZGVyTWF0aE1M
QmxvY2sobm9kZSgpKTsKLSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJvd1N0eWxlID0gbWFrZUJs
b2NrU3R5bGUoKTsKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJvd1N0eWxlID0gY3JlYXRlQmxv
Y2tTdHlsZSgpOwogICAgIHJvdy0+c2V0U3R5bGUocm93U3R5bGUucmVsZWFzZSgpKTsKICAgICBy
b3ctPnNldElzQW5vbnltb3VzKHRydWUpOwogICAgIApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQg
UmVuZGVyTWF0aE1MVW5kZXJPdmVyOjphZGRDaGlsZChSZW4KICAgICByb3ctPmFkZENoaWxkKGNo
aWxkKTsgICAgCiB9CiAKLWlubGluZSBpbnQgZ2V0T2Zmc2V0SGVpZ2h0KFJlbmRlck9iamVjdCog
b2JqKSAKK2lubGluZSBMYXlvdXRVbml0IGdldE9mZnNldEhlaWdodChSZW5kZXJPYmplY3QqIG9i
aikgCiB7CiAgICAgaWYgKG9iai0+aXNCb3hNb2RlbE9iamVjdCgpKSB7CiAgICAgICAgIFJlbmRl
ckJveE1vZGVsT2JqZWN0KiBib3ggPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KG9iaik7CkBAIC0x
MTgsNyArMTE4LDcgQEAgaW5saW5lIGludCBnZXRPZmZzZXRIZWlnaHQoUmVuZGVyT2JqZWN0Kgog
ICAgIHJldHVybiAwOwogfQogCi12b2lkIFJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6c3RyZXRjaFRv
SGVpZ2h0KGludCBoZWlnaHQpCit2b2lkIFJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6c3RyZXRjaFRv
SGVpZ2h0KExheW91dFVuaXQgaGVpZ2h0KQogewogCiAgICAgUmVuZGVyT2JqZWN0KiBiYXNlID0g
Zmlyc3RDaGlsZCgpOwpAQCAtMjc1LDkgKzI3NSw5IEBAIExheW91dFVuaXQgUmVuZGVyTWF0aE1M
VW5kZXJPdmVyOjpiYXNlbGkKIH0KIAogCi1pbnQgUmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpub25P
cGVyYXRvckhlaWdodCgpIGNvbnN0IAorTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxVbmRlck92ZXI6
Om5vbk9wZXJhdG9ySGVpZ2h0KCkgY29uc3QgCiB7Ci0gICAgaW50IG5vbk9wZXJhdG9ycyA9IDA7
CisgICAgTGF5b3V0VW5pdCBub25PcGVyYXRvcnMgPSAwOwogICAgIGZvciAoUmVuZGVyT2JqZWN0
KiBjdXJyZW50ID0gZmlyc3RDaGlsZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4
dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoY3VycmVudC0+Zmlyc3RDaGlsZCgpICYmIGN1cnJl
bnQtPmZpcnN0Q2hpbGQoKS0+aXNSZW5kZXJNYXRoTUxCbG9jaygpKSB7CiAgICAgICAgICAgICBS
ZW5kZXJNYXRoTUxCbG9jayogYmxvY2sgPSB0b1JlbmRlck1hdGhNTEJsb2NrKGN1cnJlbnQtPmZp
cnN0Q2hpbGQoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFVuZGVyT3Zlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgJKHJldmlzaW9uIDEwNzI2OSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDkgKzM4LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBh
ZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0g
MCk7CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwogICAgIHZpcnR1YWwgYm9vbCBoYXNCYXNl
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgaW50IG5vbk9wZXJhdG9ySGVp
Z2h0KCkgY29uc3Q7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IG5vbk9wZXJhdG9ySGVpZ2h0KCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2Vs
aW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUg
PSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzdHJl
dGNoVG9IZWlnaHQoaW50IHBpeGVsSGVpZ2h0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RyZXRjaFRv
SGVpZ2h0KExheW91dFVuaXQgcGl4ZWxIZWlnaHQpOwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyTWF0aE1MVW5kZXJP
dmVyIjsgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>