<?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>122703</bug_id>
          
          <creation_ts>2013-10-12 15:18:26 -0700</creation_ts>
          <short_desc>Move positionForPoint to RenderTextLineBoxes</short_desc>
          <delta_ts>2013-10-12 16:51:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>939132</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-12 15:18:26 -0700</bug_when>
    <thetext>another</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939134</commentid>
    <comment_count>1</comment_count>
      <attachid>214067</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-12 15:22:23 -0700</bug_when>
    <thetext>Created attachment 214067
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939135</commentid>
    <comment_count>2</comment_count>
      <attachid>214067</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-10-12 15:26:30 -0700</bug_when>
    <thetext>Comment on attachment 214067
patch

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

r=me

&gt; Source/WebCore/rendering/RenderObject.cpp:2525
&gt; +    while (const RenderObject* parent = child-&gt;parent()) {

const RenderElement*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939140</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-10-12 16:51:51 -0700</bug_when>
    <thetext>https://trac.webkit.org/r157349</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214067</attachid>
            <date>2013-10-12 15:22:23 -0700</date>
            <delta_ts>2013-10-12 15:26:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>rendertextlineboxes-positionforpoint.patch</filename>
            <type>text/plain</type>
            <size>20803</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NzM0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwIEBACisyMDEzLTEwLTEyICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHBvc2l0aW9uRm9yUG9p
bnQgdG8gUmVuZGVyVGV4dExpbmVCb3hlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNzAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKIDIwMTMtMTAtMTIgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtTb3VwXSBUaGUgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbj4+IHZhcmlhYmxlIGluIGRlZmF1bHRTZXNzaW9uKCkgc2hvdWxk
IGJlIHN0YXRpYwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAJKHJldmlzaW9uIDE1NzMzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDk3LDcgKzI0OTcsNyBAQCBSZW5kZXJCb3hN
b2RlbE9iamVjdCogUmVuZGVyT2JqZWN0OjpvZmZzCiAgICAgcmV0dXJuIGN1cnIgJiYgY3Vyci0+
aXNCb3hNb2RlbE9iamVjdCgpID8gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChjdXJyKSA6IDA7CiB9
CiAKLVZpc2libGVQb3NpdGlvbiBSZW5kZXJPYmplY3Q6OmNyZWF0ZVZpc2libGVQb3NpdGlvbihp
bnQgb2Zmc2V0LCBFQWZmaW5pdHkgYWZmaW5pdHkpCitWaXNpYmxlUG9zaXRpb24gUmVuZGVyT2Jq
ZWN0OjpjcmVhdGVWaXNpYmxlUG9zaXRpb24oaW50IG9mZnNldCwgRUFmZmluaXR5IGFmZmluaXR5
KSBjb25zdAogewogICAgIC8vIElmIHRoaXMgaXMgYSBub24tYW5vbnltb3VzIHJlbmRlcmVyIGlu
IGFuIGVkaXRhYmxlIGFyZWEsIHRoZW4gaXQncyBzaW1wbGUuCiAgICAgaWYgKE5vZGUqIG5vZGUg
PSBub25Qc2V1ZG9Ob2RlKCkpIHsKQEAgLTI1MjEsMTAgKzI1MjEsMTAgQEAgVmlzaWJsZVBvc2l0
aW9uIFJlbmRlck9iamVjdDo6Y3JlYXRlVmlzaQogICAgIC8vIGZpbmQgYSBzaW5nbGUgbm9uLWFu
b255bW91cyByZW5kZXJlci4KIAogICAgIC8vIEZpbmQgYSBuZWFyYnkgbm9uLWFub255bW91cyBy
ZW5kZXJlci4KLSAgICBSZW5kZXJPYmplY3QqIGNoaWxkID0gdGhpczsKLSAgICB3aGlsZSAoUmVu
ZGVyT2JqZWN0KiBwYXJlbnQgPSBjaGlsZC0+cGFyZW50KCkpIHsKKyAgICBjb25zdCBSZW5kZXJP
YmplY3QqIGNoaWxkID0gdGhpczsKKyAgICB3aGlsZSAoY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJl
bnQgPSBjaGlsZC0+cGFyZW50KCkpIHsKICAgICAgICAgLy8gRmluZCBub24tYW5vbnltb3VzIGNv
bnRlbnQgYWZ0ZXIuCi0gICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjaGlsZDsKKyAg
ICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNoaWxkOwogICAgICAgICB3aGls
ZSAoKHJlbmRlcmVyID0gcmVuZGVyZXItPm5leHRJblByZU9yZGVyKHBhcmVudCkpKSB7CiAgICAg
ICAgICAgICBpZiAoTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub25Qc2V1ZG9Ob2RlKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5PckJlZm9y
ZU5vZGUobm9kZSksIERPV05TVFJFQU0pOwpAQCAtMjU1MSw3ICsyNTUxLDcgQEAgVmlzaWJsZVBv
c2l0aW9uIFJlbmRlck9iamVjdDo6Y3JlYXRlVmlzaQogICAgIHJldHVybiBWaXNpYmxlUG9zaXRp
b24oKTsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIFJlbmRlck9iamVjdDo6Y3JlYXRlVmlzaWJsZVBv
c2l0aW9uKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKK1Zpc2libGVQb3NpdGlvbiBSZW5kZXJP
YmplY3Q6OmNyZWF0ZVZpc2libGVQb3NpdGlvbihjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pIGNv
bnN0CiB7CiAgICAgaWYgKHBvc2l0aW9uLmlzTm90TnVsbCgpKQogICAgICAgICByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKHBvc2l0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgJKHJldmlzaW9uIDE1NzMzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjY5LDggKzY2OSw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBI
aXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVy
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pOwog
CiAgICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlv
dXRQb2ludCYpOwotICAgIFZpc2libGVQb3NpdGlvbiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oaW50
IG9mZnNldCwgRUFmZmluaXR5KTsKLSAgICBWaXNpYmxlUG9zaXRpb24gY3JlYXRlVmlzaWJsZVBv
c2l0aW9uKGNvbnN0IFBvc2l0aW9uJik7CisgICAgVmlzaWJsZVBvc2l0aW9uIGNyZWF0ZVZpc2li
bGVQb3NpdGlvbihpbnQgb2Zmc2V0LCBFQWZmaW5pdHkpIGNvbnN0OworICAgIFZpc2libGVQb3Np
dGlvbiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oY29uc3QgUG9zaXRpb24mKSBjb25zdDsKIAogICAg
IC8vIHJldHVybnMgdGhlIGNvbnRhaW5pbmcgYmxvY2sgbGV2ZWwgZWxlbWVudCBmb3IgdGhpcyBl
bGVtZW50LgogICAgIFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2soKSBjb25zdDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHJldmlzaW9uIDE1NzM0NikK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAzLDE2OSArNDAzLDkgQEAgdm9pZCBSZW5kZXJUZXh0OjphYnNvbHV0ZVF1YWRzRm9y
UmFuZ2UoVgogICAgIH0KIH0KIAotZW51bSBTaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSB7IEFs
d2F5c0Rvd25zdHJlYW0sIEFsd2F5c1Vwc3RyZWFtLCBVcHN0cmVhbUlmUG9zaXRpb25Jc05vdEF0
U3RhcnQgfTsKLQotc3RhdGljIGJvb2wgbGluZURpcmVjdGlvblBvaW50Rml0c0luQm94KGludCBw
b2ludExpbmVEaXJlY3Rpb24sIElubGluZVRleHRCb3gqIGJveCwgU2hvdWxkQWZmaW5pdHlCZURv
d25zdHJlYW0mIHNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtKQotewotICAgIHNob3VsZEFmZmlu
aXR5QmVEb3duc3RyZWFtID0gQWx3YXlzRG93bnN0cmVhbTsKLQotICAgIC8vIHRoZSB4IGNvb3Jk
aW5hdGUgaXMgZXF1YWwgdG8gdGhlIGxlZnQgZWRnZSBvZiB0aGlzIGJveAotICAgIC8vIHRoZSBh
ZmZpbml0eSBtdXN0IGJlIGRvd25zdHJlYW0gc28gdGhlIHBvc2l0aW9uIGRvZXNuJ3QganVtcCBi
YWNrIHRvIHRoZSBwcmV2aW91cyBsaW5lCi0gICAgLy8gZXhjZXB0IHdoZW4gYm94IGlzIHRoZSBm
aXJzdCBib3ggaW4gdGhlIGxpbmUKLSAgICBpZiAocG9pbnRMaW5lRGlyZWN0aW9uIDw9IGJveC0+
bG9naWNhbExlZnQoKSkgewotICAgICAgICBzaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSA9ICFi
b3gtPnByZXZMZWFmQ2hpbGQoKSA/IFVwc3RyZWFtSWZQb3NpdGlvbklzTm90QXRTdGFydCA6IEFs
d2F5c0Rvd25zdHJlYW07Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8vIGFu
ZCB0aGUgeCBjb29yZGluYXRlIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByaWdodCBlZGdlIG9mIHRo
aXMgYm94Ci0gICAgLy8gY2hlY2sgdG8gc2VlIGlmIHBvc2l0aW9uIGdvZXMgaW4gdGhpcyBib3gK
LSAgICBpZiAocG9pbnRMaW5lRGlyZWN0aW9uIDwgYm94LT5sb2dpY2FsUmlnaHQoKSkgewotICAg
ICAgICBzaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSA9IFVwc3RyZWFtSWZQb3NpdGlvbklzTm90
QXRTdGFydDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLy8gYm94IGlzIGZp
cnN0IG9uIGxpbmUKLSAgICAvLyBhbmQgdGhlIHggY29vcmRpbmF0ZSBpcyB0byB0aGUgbGVmdCBv
ZiB0aGUgZmlyc3QgdGV4dCBib3ggbGVmdCBlZGdlCi0gICAgaWYgKCFib3gtPnByZXZMZWFmQ2hp
bGRJZ25vcmluZ0xpbmVCcmVhaygpICYmIHBvaW50TGluZURpcmVjdGlvbiA8IGJveC0+bG9naWNh
bExlZnQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpZiAoIWJveC0+bmV4dExlYWZD
aGlsZElnbm9yaW5nTGluZUJyZWFrKCkpIHsKLSAgICAgICAgLy8gYm94IGlzIGxhc3Qgb24gbGlu
ZQotICAgICAgICAvLyBhbmQgdGhlIHggY29vcmRpbmF0ZSBpcyB0byB0aGUgcmlnaHQgb2YgdGhl
IGxhc3QgdGV4dCBib3ggcmlnaHQgZWRnZQotICAgICAgICAvLyBnZW5lcmF0ZSBWaXNpYmxlUG9z
aXRpb24sIHVzZSBVUFNUUkVBTSBhZmZpbml0eSBpZiBwb3NzaWJsZQotICAgICAgICBzaG91bGRB
ZmZpbml0eUJlRG93bnN0cmVhbSA9IFVwc3RyZWFtSWZQb3NpdGlvbklzTm90QXRTdGFydDsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0
aWMgVmlzaWJsZVBvc2l0aW9uIGNyZWF0ZVZpc2libGVQb3NpdGlvbkZvckJveChjb25zdCBJbmxp
bmVCb3gqIGJveCwgaW50IG9mZnNldCwgU2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0gc2hvdWxk
QWZmaW5pdHlCZURvd25zdHJlYW0pCi17Ci0gICAgRUFmZmluaXR5IGFmZmluaXR5ID0gVlBfREVG
QVVMVF9BRkZJTklUWTsKLSAgICBzd2l0Y2ggKHNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtKSB7
Ci0gICAgY2FzZSBBbHdheXNEb3duc3RyZWFtOgotICAgICAgICBhZmZpbml0eSA9IERPV05TVFJF
QU07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQWx3YXlzVXBzdHJlYW06Ci0gICAgICAgIGFm
ZmluaXR5ID0gVlBfVVBTVFJFQU1fSUZfUE9TU0lCTEU7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgVXBzdHJlYW1JZlBvc2l0aW9uSXNOb3RBdFN0YXJ0OgotICAgICAgICBhZmZpbml0eSA9IG9m
ZnNldCA+IGJveC0+Y2FyZXRNaW5PZmZzZXQoKSA/IFZQX1VQU1RSRUFNX0lGX1BPU1NJQkxFIDog
RE9XTlNUUkVBTTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBib3gtPnJlbmRl
cmVyKCkuY3JlYXRlVmlzaWJsZVBvc2l0aW9uKG9mZnNldCwgYWZmaW5pdHkpOwotfQotCi1zdGF0
aWMgVmlzaWJsZVBvc2l0aW9uIGNyZWF0ZVZpc2libGVQb3NpdGlvbkFmdGVyQWRqdXN0aW5nT2Zm
c2V0Rm9yQmlEaShjb25zdCBJbmxpbmVUZXh0Qm94KiBib3gsIGludCBvZmZzZXQsIFNob3VsZEFm
ZmluaXR5QmVEb3duc3RyZWFtIHNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtKQotewotICAgIEFT
U0VSVChib3gpOwotICAgIEFTU0VSVChvZmZzZXQgPj0gMCk7Ci0KLSAgICBpZiAob2Zmc2V0ICYm
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihvZmZzZXQpIDwgYm94LT5sZW4oKSkKLSAgICAgICAgcmV0
dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbkZvckJveChib3gsIGJveC0+c3RhcnQoKSArIG9mZnNl
dCwgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0pOwotCi0gICAgYm9vbCBwb3NpdGlvbklzQXRT
dGFydE9mQm94ID0gIW9mZnNldDsKLSAgICBpZiAocG9zaXRpb25Jc0F0U3RhcnRPZkJveCA9PSBi
b3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgewotICAgICAgICAvLyBvZmZzZXQgaXMgb24g
dGhlIGxlZnQgZWRnZQotCi0gICAgICAgIGNvbnN0IElubGluZUJveCogcHJldkJveCA9IGJveC0+
cHJldkxlYWZDaGlsZElnbm9yaW5nTGluZUJyZWFrKCk7Ci0gICAgICAgIGlmICgocHJldkJveCAm
JiBwcmV2Qm94LT5iaWRpTGV2ZWwoKSA9PSBib3gtPmJpZGlMZXZlbCgpKQotICAgICAgICAgICAg
fHwgYm94LT5yZW5kZXJlcigpLmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLT5kaXJlY3Rpb24o
KSA9PSBib3gtPmRpcmVjdGlvbigpKSAvLyBGSVhNRTogbGVmdCBvbiAxMkNCQQotICAgICAgICAg
ICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbkZvckJveChib3gsIGJveC0+Y2FyZXRMZWZ0
bW9zdE9mZnNldCgpLCBzaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSk7Ci0KLSAgICAgICAgaWYg
KHByZXZCb3ggJiYgcHJldkJveC0+YmlkaUxldmVsKCkgPiBib3gtPmJpZGlMZXZlbCgpKSB7Ci0g
ICAgICAgICAgICAvLyBlLmcuIGxlZnQgb2YgQiBpbiBhREMxMkJBYgotICAgICAgICAgICAgY29u
c3QgSW5saW5lQm94KiBsZWZ0bW9zdEJveDsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAg
ICAgICBsZWZ0bW9zdEJveCA9IHByZXZCb3g7Ci0gICAgICAgICAgICAgICAgcHJldkJveCA9IGxl
ZnRtb3N0Qm94LT5wcmV2TGVhZkNoaWxkSWdub3JpbmdMaW5lQnJlYWsoKTsKLSAgICAgICAgICAg
IH0gd2hpbGUgKHByZXZCb3ggJiYgcHJldkJveC0+YmlkaUxldmVsKCkgPiBib3gtPmJpZGlMZXZl
bCgpKTsKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb25Gb3JCb3gobGVm
dG1vc3RCb3gsIGxlZnRtb3N0Qm94LT5jYXJldFJpZ2h0bW9zdE9mZnNldCgpLCBzaG91bGRBZmZp
bml0eUJlRG93bnN0cmVhbSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXByZXZCb3ggfHwg
cHJldkJveC0+YmlkaUxldmVsKCkgPCBib3gtPmJpZGlMZXZlbCgpKSB7Ci0gICAgICAgICAgICAv
LyBlLmcuIGxlZnQgb2YgRCBpbiBhREMxMkJBYgotICAgICAgICAgICAgY29uc3QgSW5saW5lQm94
KiByaWdodG1vc3RCb3g7Ci0gICAgICAgICAgICBjb25zdCBJbmxpbmVCb3gqIG5leHRCb3ggPSBi
b3g7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgcmlnaHRtb3N0Qm94ID0gbmV4
dEJveDsKLSAgICAgICAgICAgICAgICBuZXh0Qm94ID0gcmlnaHRtb3N0Qm94LT5uZXh0TGVhZkNo
aWxkSWdub3JpbmdMaW5lQnJlYWsoKTsKLSAgICAgICAgICAgIH0gd2hpbGUgKG5leHRCb3ggJiYg
bmV4dEJveC0+YmlkaUxldmVsKCkgPj0gYm94LT5iaWRpTGV2ZWwoKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uRm9yQm94KHJpZ2h0bW9zdEJveCwKLSAgICAgICAg
ICAgICAgICBib3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IHJpZ2h0bW9zdEJveC0+Y2Fy
ZXRNYXhPZmZzZXQoKSA6IHJpZ2h0bW9zdEJveC0+Y2FyZXRNaW5PZmZzZXQoKSwgc2hvdWxkQWZm
aW5pdHlCZURvd25zdHJlYW0pOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGNyZWF0ZVZp
c2libGVQb3NpdGlvbkZvckJveChib3gsIGJveC0+Y2FyZXRSaWdodG1vc3RPZmZzZXQoKSwgc2hv
dWxkQWZmaW5pdHlCZURvd25zdHJlYW0pOwotICAgIH0KLQotICAgIGNvbnN0IElubGluZUJveCog
bmV4dEJveCA9IGJveC0+bmV4dExlYWZDaGlsZElnbm9yaW5nTGluZUJyZWFrKCk7Ci0gICAgaWYg
KChuZXh0Qm94ICYmIG5leHRCb3gtPmJpZGlMZXZlbCgpID09IGJveC0+YmlkaUxldmVsKCkpCi0g
ICAgICAgIHx8IGJveC0+cmVuZGVyZXIoKS5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKS0+ZGly
ZWN0aW9uKCkgPT0gYm94LT5kaXJlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2li
bGVQb3NpdGlvbkZvckJveChib3gsIGJveC0+Y2FyZXRSaWdodG1vc3RPZmZzZXQoKSwgc2hvdWxk
QWZmaW5pdHlCZURvd25zdHJlYW0pOwotCi0gICAgLy8gb2Zmc2V0IGlzIG9uIHRoZSByaWdodCBl
ZGdlCi0gICAgaWYgKG5leHRCb3ggJiYgbmV4dEJveC0+YmlkaUxldmVsKCkgPiBib3gtPmJpZGlM
ZXZlbCgpKSB7Ci0gICAgICAgIC8vIGUuZy4gcmlnaHQgb2YgQyBpbiBhREMxMkJBYgotICAgICAg
ICBjb25zdCBJbmxpbmVCb3gqIHJpZ2h0bW9zdEJveDsKLSAgICAgICAgZG8gewotICAgICAgICAg
ICAgcmlnaHRtb3N0Qm94ID0gbmV4dEJveDsKLSAgICAgICAgICAgIG5leHRCb3ggPSByaWdodG1v
c3RCb3gtPm5leHRMZWFmQ2hpbGRJZ25vcmluZ0xpbmVCcmVhaygpOwotICAgICAgICB9IHdoaWxl
IChuZXh0Qm94ICYmIG5leHRCb3gtPmJpZGlMZXZlbCgpID4gYm94LT5iaWRpTGV2ZWwoKSk7Ci0g
ICAgICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb25Gb3JCb3gocmlnaHRtb3N0Qm94LCBy
aWdodG1vc3RCb3gtPmNhcmV0TGVmdG1vc3RPZmZzZXQoKSwgc2hvdWxkQWZmaW5pdHlCZURvd25z
dHJlYW0pOwotICAgIH0KLQotICAgIGlmICghbmV4dEJveCB8fCBuZXh0Qm94LT5iaWRpTGV2ZWwo
KSA8IGJveC0+YmlkaUxldmVsKCkpIHsKLSAgICAgICAgLy8gZS5nLiByaWdodCBvZiBBIGluIGFE
QzEyQkFiCi0gICAgICAgIGNvbnN0IElubGluZUJveCogbGVmdG1vc3RCb3g7Ci0gICAgICAgIGNv
bnN0IElubGluZUJveCogcHJldkJveCA9IGJveDsKLSAgICAgICAgZG8gewotICAgICAgICAgICAg
bGVmdG1vc3RCb3ggPSBwcmV2Qm94OwotICAgICAgICAgICAgcHJldkJveCA9IGxlZnRtb3N0Qm94
LT5wcmV2TGVhZkNoaWxkSWdub3JpbmdMaW5lQnJlYWsoKTsKLSAgICAgICAgfSB3aGlsZSAocHJl
dkJveCAmJiBwcmV2Qm94LT5iaWRpTGV2ZWwoKSA+PSBib3gtPmJpZGlMZXZlbCgpKTsKLSAgICAg
ICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbkZvckJveChsZWZ0bW9zdEJveCwKLSAgICAg
ICAgICAgIGJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbGVmdG1vc3RCb3gtPmNhcmV0
TWluT2Zmc2V0KCkgOiBsZWZ0bW9zdEJveC0+Y2FyZXRNYXhPZmZzZXQoKSwgc2hvdWxkQWZmaW5p
dHlCZURvd25zdHJlYW0pOwotICAgIH0KLQotICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRp
b25Gb3JCb3goYm94LCBib3gtPmNhcmV0TGVmdG1vc3RPZmZzZXQoKSwgc2hvdWxkQWZmaW5pdHlC
ZURvd25zdHJlYW0pOwotfQotCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4dDo6cG9zaXRpb25G
b3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQpCiB7Ci0gICAgaWYgKCFmaXJzdFRleHRC
b3goKSB8fCB0ZXh0TGVuZ3RoKCkgPT0gMCkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQ
b3NpdGlvbigwLCBET1dOU1RSRUFNKTsKLQotICAgIExheW91dFVuaXQgcG9pbnRMaW5lRGlyZWN0
aW9uID0gZmlyc3RUZXh0Qm94KCktPmlzSG9yaXpvbnRhbCgpID8gcG9pbnQueCgpIDogcG9pbnQu
eSgpOwotICAgIExheW91dFVuaXQgcG9pbnRCbG9ja0RpcmVjdGlvbiA9IGZpcnN0VGV4dEJveCgp
LT5pc0hvcml6b250YWwoKSA/IHBvaW50LnkoKSA6IHBvaW50LngoKTsKLSAgICBib29sIGJsb2Nr
c0FyZUZsaXBwZWQgPSBzdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpOwotCi0g
ICAgSW5saW5lVGV4dEJveCogbGFzdEJveCA9IDA7Ci0gICAgZm9yIChJbmxpbmVUZXh0Qm94KiBi
b3ggPSBmaXJzdFRleHRCb3goKTsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpIHsKLSAg
ICAgICAgaWYgKGJveC0+aXNMaW5lQnJlYWsoKSAmJiAhYm94LT5wcmV2TGVhZkNoaWxkKCkgJiYg
Ym94LT5uZXh0TGVhZkNoaWxkKCkgJiYgIWJveC0+bmV4dExlYWZDaGlsZCgpLT5pc0xpbmVCcmVh
aygpKQotICAgICAgICAgICAgYm94ID0gYm94LT5uZXh0VGV4dEJveCgpOwotCi0gICAgICAgIGNv
bnN0IFJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBib3gtPnJvb3QoKTsKLSAgICAgICAgTGF5b3V0
VW5pdCB0b3AgPSBtaW4ocm9vdEJveC5zZWxlY3Rpb25Ub3AoKSwgcm9vdEJveC5saW5lVG9wKCkp
OwotICAgICAgICBpZiAocG9pbnRCbG9ja0RpcmVjdGlvbiA+IHRvcCB8fCAoIWJsb2Nrc0FyZUZs
aXBwZWQgJiYgcG9pbnRCbG9ja0RpcmVjdGlvbiA9PSB0b3ApKSB7Ci0gICAgICAgICAgICBMYXlv
dXRVbml0IGJvdHRvbSA9IHJvb3RCb3guc2VsZWN0aW9uQm90dG9tKCk7Ci0gICAgICAgICAgICBp
ZiAocm9vdEJveC5uZXh0Um9vdEJveCgpKQotICAgICAgICAgICAgICAgIGJvdHRvbSA9IG1pbihi
b3R0b20sIHJvb3RCb3gubmV4dFJvb3RCb3goKS0+bGluZVRvcCgpKTsKLQotICAgICAgICAgICAg
aWYgKHBvaW50QmxvY2tEaXJlY3Rpb24gPCBib3R0b20gfHwgKGJsb2Nrc0FyZUZsaXBwZWQgJiYg
cG9pbnRCbG9ja0RpcmVjdGlvbiA9PSBib3R0b20pKSB7Ci0gICAgICAgICAgICAgICAgU2hvdWxk
QWZmaW5pdHlCZURvd25zdHJlYW0gc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW07Ci0gICAgICAg
ICAgICAgICAgaWYgKGxpbmVEaXJlY3Rpb25Qb2ludEZpdHNJbkJveChwb2ludExpbmVEaXJlY3Rp
b24sIGJveCwgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0pKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uQWZ0ZXJBZGp1c3RpbmdPZmZzZXRGb3JCaURp
KGJveCwgYm94LT5vZmZzZXRGb3JQb3NpdGlvbihwb2ludExpbmVEaXJlY3Rpb24pLCBzaG91bGRB
ZmZpbml0eUJlRG93bnN0cmVhbSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
bGFzdEJveCA9IGJveDsKLSAgICB9Ci0KLSAgICBpZiAobGFzdEJveCkgewotICAgICAgICBTaG91
bGRBZmZpbml0eUJlRG93bnN0cmVhbSBzaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbTsKLSAgICAg
ICAgbGluZURpcmVjdGlvblBvaW50Rml0c0luQm94KHBvaW50TGluZURpcmVjdGlvbiwgbGFzdEJv
eCwgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0pOwotICAgICAgICByZXR1cm4gY3JlYXRlVmlz
aWJsZVBvc2l0aW9uQWZ0ZXJBZGp1c3RpbmdPZmZzZXRGb3JCaURpKGxhc3RCb3gsIGxhc3RCb3gt
Pm9mZnNldEZvclBvc2l0aW9uKHBvaW50TGluZURpcmVjdGlvbikgKyBsYXN0Qm94LT5zdGFydCgp
LCBzaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSk7Ci0gICAgfQotICAgIHJldHVybiBjcmVhdGVW
aXNpYmxlUG9zaXRpb24oMCwgRE9XTlNUUkVBTSk7CisgICAgcmV0dXJuIG1fbGluZUJveGVzLnBv
c2l0aW9uRm9yUG9pbnQoKnRoaXMsIHBvaW50KTsKIH0KIAogTGF5b3V0UmVjdCBSZW5kZXJUZXh0
Ojpsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqIGlubGluZUJveCwgaW50IGNhcmV0T2Zmc2V0LCBM
YXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRMaW5lQm94ZXMuY3BwCShyZXZpc2lvbiAxNTczNDYp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0TGluZUJv
eGVzLmgiCiAKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCisjaW5jbHVkZSAiUmVuZGVyQmxv
Y2suaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3gu
aCIKIApAQCAtMjI0LDYgKzIyNSwxNzAgQEAgaW50IFJlbmRlclRleHRMaW5lQm94ZXM6OmNhcmV0
TWF4T2Zmc2V0KAogICAgIHJldHVybiBtYXhPZmZzZXQ7CiB9CiAKK2VudW0gU2hvdWxkQWZmaW5p
dHlCZURvd25zdHJlYW0geyBBbHdheXNEb3duc3RyZWFtLCBBbHdheXNVcHN0cmVhbSwgVXBzdHJl
YW1JZlBvc2l0aW9uSXNOb3RBdFN0YXJ0IH07CisKK3N0YXRpYyBib29sIGxpbmVEaXJlY3Rpb25Q
b2ludEZpdHNJbkJveChpbnQgcG9pbnRMaW5lRGlyZWN0aW9uLCBjb25zdCBJbmxpbmVUZXh0Qm94
JiBib3gsIFNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtJiBzaG91bGRBZmZpbml0eUJlRG93bnN0
cmVhbSkKK3sKKyAgICBzaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSA9IEFsd2F5c0Rvd25zdHJl
YW07CisKKyAgICAvLyB0aGUgeCBjb29yZGluYXRlIGlzIGVxdWFsIHRvIHRoZSBsZWZ0IGVkZ2Ug
b2YgdGhpcyBib3gKKyAgICAvLyB0aGUgYWZmaW5pdHkgbXVzdCBiZSBkb3duc3RyZWFtIHNvIHRo
ZSBwb3NpdGlvbiBkb2Vzbid0IGp1bXAgYmFjayB0byB0aGUgcHJldmlvdXMgbGluZQorICAgIC8v
IGV4Y2VwdCB3aGVuIGJveCBpcyB0aGUgZmlyc3QgYm94IGluIHRoZSBsaW5lCisgICAgaWYgKHBv
aW50TGluZURpcmVjdGlvbiA8PSBib3gubG9naWNhbExlZnQoKSkgeworICAgICAgICBzaG91bGRB
ZmZpbml0eUJlRG93bnN0cmVhbSA9ICFib3gucHJldkxlYWZDaGlsZCgpID8gVXBzdHJlYW1JZlBv
c2l0aW9uSXNOb3RBdFN0YXJ0IDogQWx3YXlzRG93bnN0cmVhbTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgLy8gYW5kIHRoZSB4IGNvb3JkaW5hdGUgaXMgdG8gdGhlIGxlZnQg
b2YgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhpcyBib3gKKyAgICAvLyBjaGVjayB0byBzZWUgaWYgcG9z
aXRpb24gZ29lcyBpbiB0aGlzIGJveAorICAgIGlmIChwb2ludExpbmVEaXJlY3Rpb24gPCBib3gu
bG9naWNhbFJpZ2h0KCkpIHsKKyAgICAgICAgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0gPSBV
cHN0cmVhbUlmUG9zaXRpb25Jc05vdEF0U3RhcnQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIC8vIGJveCBpcyBmaXJzdCBvbiBsaW5lCisgICAgLy8gYW5kIHRoZSB4IGNvb3Jk
aW5hdGUgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIGZpcnN0IHRleHQgYm94IGxlZnQgZWRnZQorICAg
IGlmICghYm94LnByZXZMZWFmQ2hpbGRJZ25vcmluZ0xpbmVCcmVhaygpICYmIHBvaW50TGluZURp
cmVjdGlvbiA8IGJveC5sb2dpY2FsTGVmdCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGlmICghYm94Lm5leHRMZWFmQ2hpbGRJZ25vcmluZ0xpbmVCcmVhaygpKSB7CisgICAgICAgIC8v
IGJveCBpcyBsYXN0IG9uIGxpbmUKKyAgICAgICAgLy8gYW5kIHRoZSB4IGNvb3JkaW5hdGUgaXMg
dG8gdGhlIHJpZ2h0IG9mIHRoZSBsYXN0IHRleHQgYm94IHJpZ2h0IGVkZ2UKKyAgICAgICAgLy8g
Z2VuZXJhdGUgVmlzaWJsZVBvc2l0aW9uLCB1c2UgVVBTVFJFQU0gYWZmaW5pdHkgaWYgcG9zc2li
bGUKKyAgICAgICAgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0gPSBVcHN0cmVhbUlmUG9zaXRp
b25Jc05vdEF0U3RhcnQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVy
biBmYWxzZTsKK30KKworc3RhdGljIFZpc2libGVQb3NpdGlvbiBjcmVhdGVWaXNpYmxlUG9zaXRp
b25Gb3JCb3goY29uc3QgSW5saW5lQm94JiBib3gsIGludCBvZmZzZXQsIFNob3VsZEFmZmluaXR5
QmVEb3duc3RyZWFtIHNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtKQoreworICAgIEVBZmZpbml0
eSBhZmZpbml0eSA9IFZQX0RFRkFVTFRfQUZGSU5JVFk7CisgICAgc3dpdGNoIChzaG91bGRBZmZp
bml0eUJlRG93bnN0cmVhbSkgeworICAgIGNhc2UgQWx3YXlzRG93bnN0cmVhbToKKyAgICAgICAg
YWZmaW5pdHkgPSBET1dOU1RSRUFNOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFsd2F5c1Vw
c3RyZWFtOgorICAgICAgICBhZmZpbml0eSA9IFZQX1VQU1RSRUFNX0lGX1BPU1NJQkxFOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFVwc3RyZWFtSWZQb3NpdGlvbklzTm90QXRTdGFydDoKKyAg
ICAgICAgYWZmaW5pdHkgPSBvZmZzZXQgPiBib3guY2FyZXRNaW5PZmZzZXQoKSA/IFZQX1VQU1RS
RUFNX0lGX1BPU1NJQkxFIDogRE9XTlNUUkVBTTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IHJldHVybiBib3gucmVuZGVyZXIoKS5jcmVhdGVWaXNpYmxlUG9zaXRpb24ob2Zmc2V0LCBhZmZp
bml0eSk7Cit9CisKK3N0YXRpYyBWaXNpYmxlUG9zaXRpb24gY3JlYXRlVmlzaWJsZVBvc2l0aW9u
QWZ0ZXJBZGp1c3RpbmdPZmZzZXRGb3JCaURpKGNvbnN0IElubGluZVRleHRCb3gmIGJveCwgaW50
IG9mZnNldCwgU2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0gc2hvdWxkQWZmaW5pdHlCZURvd25z
dHJlYW0pCit7CisgICAgQVNTRVJUKG9mZnNldCA+PSAwKTsKKworICAgIGlmIChvZmZzZXQgJiYg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG9mZnNldCkgPCBib3gubGVuKCkpCisgICAgICAgIHJldHVy
biBjcmVhdGVWaXNpYmxlUG9zaXRpb25Gb3JCb3goYm94LCBib3guc3RhcnQoKSArIG9mZnNldCwg
c2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0pOworCisgICAgYm9vbCBwb3NpdGlvbklzQXRTdGFy
dE9mQm94ID0gIW9mZnNldDsKKyAgICBpZiAocG9zaXRpb25Jc0F0U3RhcnRPZkJveCA9PSBib3gu
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7CisgICAgICAgIC8vIG9mZnNldCBpcyBvbiB0aGUg
bGVmdCBlZGdlCisKKyAgICAgICAgY29uc3QgSW5saW5lQm94KiBwcmV2Qm94ID0gYm94LnByZXZM
ZWFmQ2hpbGRJZ25vcmluZ0xpbmVCcmVhaygpOworICAgICAgICBpZiAoKHByZXZCb3ggJiYgcHJl
dkJveC0+YmlkaUxldmVsKCkgPT0gYm94LmJpZGlMZXZlbCgpKQorICAgICAgICAgICAgfHwgYm94
LnJlbmRlcmVyKCkuY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCktPmRpcmVjdGlvbigpID09IGJv
eC5kaXJlY3Rpb24oKSkgLy8gRklYTUU6IGxlZnQgb24gMTJDQkEKKyAgICAgICAgICAgIHJldHVy
biBjcmVhdGVWaXNpYmxlUG9zaXRpb25Gb3JCb3goYm94LCBib3guY2FyZXRMZWZ0bW9zdE9mZnNl
dCgpLCBzaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSk7CisKKyAgICAgICAgaWYgKHByZXZCb3gg
JiYgcHJldkJveC0+YmlkaUxldmVsKCkgPiBib3guYmlkaUxldmVsKCkpIHsKKyAgICAgICAgICAg
IC8vIGUuZy4gbGVmdCBvZiBCIGluIGFEQzEyQkFiCisgICAgICAgICAgICBjb25zdCBJbmxpbmVC
b3gqIGxlZnRtb3N0Qm94OworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGxlZnRt
b3N0Qm94ID0gcHJldkJveDsKKyAgICAgICAgICAgICAgICBwcmV2Qm94ID0gbGVmdG1vc3RCb3gt
PnByZXZMZWFmQ2hpbGRJZ25vcmluZ0xpbmVCcmVhaygpOworICAgICAgICAgICAgfSB3aGlsZSAo
cHJldkJveCAmJiBwcmV2Qm94LT5iaWRpTGV2ZWwoKSA+IGJveC5iaWRpTGV2ZWwoKSk7CisgICAg
ICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uRm9yQm94KCpsZWZ0bW9zdEJveCwg
bGVmdG1vc3RCb3gtPmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCksIHNob3VsZEFmZmluaXR5QmVEb3du
c3RyZWFtKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghcHJldkJveCB8fCBwcmV2Qm94LT5i
aWRpTGV2ZWwoKSA8IGJveC5iaWRpTGV2ZWwoKSkgeworICAgICAgICAgICAgLy8gZS5nLiBsZWZ0
IG9mIEQgaW4gYURDMTJCQWIKKyAgICAgICAgICAgIGNvbnN0IElubGluZUJveCogcmlnaHRtb3N0
Qm94OworICAgICAgICAgICAgY29uc3QgSW5saW5lQm94KiBuZXh0Qm94ID0gJmJveDsKKyAgICAg
ICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICByaWdodG1vc3RCb3ggPSBuZXh0Qm94OworICAg
ICAgICAgICAgICAgIG5leHRCb3ggPSByaWdodG1vc3RCb3gtPm5leHRMZWFmQ2hpbGRJZ25vcmlu
Z0xpbmVCcmVhaygpOworICAgICAgICAgICAgfSB3aGlsZSAobmV4dEJveCAmJiBuZXh0Qm94LT5i
aWRpTGV2ZWwoKSA+PSBib3guYmlkaUxldmVsKCkpOworICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZVZpc2libGVQb3NpdGlvbkZvckJveCgqcmlnaHRtb3N0Qm94LAorICAgICAgICAgICAgICAgIGJv
eC5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyByaWdodG1vc3RCb3gtPmNhcmV0TWF4T2Zmc2V0
KCkgOiByaWdodG1vc3RCb3gtPmNhcmV0TWluT2Zmc2V0KCksIHNob3VsZEFmZmluaXR5QmVEb3du
c3RyZWFtKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRp
b25Gb3JCb3goYm94LCBib3guY2FyZXRSaWdodG1vc3RPZmZzZXQoKSwgc2hvdWxkQWZmaW5pdHlC
ZURvd25zdHJlYW0pOworICAgIH0KKworICAgIGNvbnN0IElubGluZUJveCogbmV4dEJveCA9IGJv
eC5uZXh0TGVhZkNoaWxkSWdub3JpbmdMaW5lQnJlYWsoKTsKKyAgICBpZiAoKG5leHRCb3ggJiYg
bmV4dEJveC0+YmlkaUxldmVsKCkgPT0gYm94LmJpZGlMZXZlbCgpKQorICAgICAgICB8fCBib3gu
cmVuZGVyZXIoKS5jb250YWluaW5nQmxvY2soKS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gYm94
LmRpcmVjdGlvbigpKQorICAgICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uRm9yQm94
KGJveCwgYm94LmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCksIHNob3VsZEFmZmluaXR5QmVEb3duc3Ry
ZWFtKTsKKworICAgIC8vIG9mZnNldCBpcyBvbiB0aGUgcmlnaHQgZWRnZQorICAgIGlmIChuZXh0
Qm94ICYmIG5leHRCb3gtPmJpZGlMZXZlbCgpID4gYm94LmJpZGlMZXZlbCgpKSB7CisgICAgICAg
IC8vIGUuZy4gcmlnaHQgb2YgQyBpbiBhREMxMkJBYgorICAgICAgICBjb25zdCBJbmxpbmVCb3gq
IHJpZ2h0bW9zdEJveDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgcmlnaHRtb3N0Qm94ID0g
bmV4dEJveDsKKyAgICAgICAgICAgIG5leHRCb3ggPSByaWdodG1vc3RCb3gtPm5leHRMZWFmQ2hp
bGRJZ25vcmluZ0xpbmVCcmVhaygpOworICAgICAgICB9IHdoaWxlIChuZXh0Qm94ICYmIG5leHRC
b3gtPmJpZGlMZXZlbCgpID4gYm94LmJpZGlMZXZlbCgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZVZpc2libGVQb3NpdGlvbkZvckJveCgqcmlnaHRtb3N0Qm94LCByaWdodG1vc3RCb3gtPmNhcmV0
TGVmdG1vc3RPZmZzZXQoKSwgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0pOworICAgIH0KKwor
ICAgIGlmICghbmV4dEJveCB8fCBuZXh0Qm94LT5iaWRpTGV2ZWwoKSA8IGJveC5iaWRpTGV2ZWwo
KSkgeworICAgICAgICAvLyBlLmcuIHJpZ2h0IG9mIEEgaW4gYURDMTJCQWIKKyAgICAgICAgY29u
c3QgSW5saW5lQm94KiBsZWZ0bW9zdEJveDsKKyAgICAgICAgY29uc3QgSW5saW5lQm94KiBwcmV2
Qm94ID0gJmJveDsKKyAgICAgICAgZG8geworICAgICAgICAgICAgbGVmdG1vc3RCb3ggPSBwcmV2
Qm94OworICAgICAgICAgICAgcHJldkJveCA9IGxlZnRtb3N0Qm94LT5wcmV2TGVhZkNoaWxkSWdu
b3JpbmdMaW5lQnJlYWsoKTsKKyAgICAgICAgfSB3aGlsZSAocHJldkJveCAmJiBwcmV2Qm94LT5i
aWRpTGV2ZWwoKSA+PSBib3guYmlkaUxldmVsKCkpOworICAgICAgICByZXR1cm4gY3JlYXRlVmlz
aWJsZVBvc2l0aW9uRm9yQm94KCpsZWZ0bW9zdEJveCwKKyAgICAgICAgICAgIGJveC5pc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKCkgPyBsZWZ0bW9zdEJveC0+Y2FyZXRNaW5PZmZzZXQoKSA6IGxlZnRt
b3N0Qm94LT5jYXJldE1heE9mZnNldCgpLCBzaG91bGRBZmZpbml0eUJlRG93bnN0cmVhbSk7Cisg
ICAgfQorCisgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbkZvckJveChib3gsIGJveC5j
YXJldExlZnRtb3N0T2Zmc2V0KCksIHNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtKTsKK30KKwor
VmlzaWJsZVBvc2l0aW9uIFJlbmRlclRleHRMaW5lQm94ZXM6OnBvc2l0aW9uRm9yUG9pbnQoY29u
c3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGNvbnN0IExheW91dFBvaW50JiBwb2ludCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fZmlyc3QgfHwgIXJlbmRlcmVyLnRleHRMZW5ndGgoKSkKKyAgICAgICAg
cmV0dXJuIHJlbmRlcmVyLmNyZWF0ZVZpc2libGVQb3NpdGlvbigwLCBET1dOU1RSRUFNKTsKKwor
ICAgIExheW91dFVuaXQgcG9pbnRMaW5lRGlyZWN0aW9uID0gbV9maXJzdC0+aXNIb3Jpem9udGFs
KCkgPyBwb2ludC54KCkgOiBwb2ludC55KCk7CisgICAgTGF5b3V0VW5pdCBwb2ludEJsb2NrRGly
ZWN0aW9uID0gbV9maXJzdC0+aXNIb3Jpem9udGFsKCkgPyBwb2ludC55KCkgOiBwb2ludC54KCk7
CisgICAgYm9vbCBibG9ja3NBcmVGbGlwcGVkID0gcmVuZGVyZXIuc3R5bGUoKS0+aXNGbGlwcGVk
QmxvY2tzV3JpdGluZ01vZGUoKTsKKworICAgIElubGluZVRleHRCb3gqIGxhc3RCb3ggPSBudWxs
cHRyOworICAgIGZvciAoYXV0byBib3ggPSBtX2ZpcnN0OyBib3g7IGJveCA9IGJveC0+bmV4dFRl
eHRCb3goKSkgeworICAgICAgICBpZiAoYm94LT5pc0xpbmVCcmVhaygpICYmICFib3gtPnByZXZM
ZWFmQ2hpbGQoKSAmJiBib3gtPm5leHRMZWFmQ2hpbGQoKSAmJiAhYm94LT5uZXh0TGVhZkNoaWxk
KCktPmlzTGluZUJyZWFrKCkpCisgICAgICAgICAgICBib3ggPSBib3gtPm5leHRUZXh0Qm94KCk7
CisKKyAgICAgICAgYXV0byYgcm9vdEJveCA9IGJveC0+cm9vdCgpOworICAgICAgICBMYXlvdXRV
bml0IHRvcCA9IHN0ZDo6bWluKHJvb3RCb3guc2VsZWN0aW9uVG9wKCksIHJvb3RCb3gubGluZVRv
cCgpKTsKKyAgICAgICAgaWYgKHBvaW50QmxvY2tEaXJlY3Rpb24gPiB0b3AgfHwgKCFibG9ja3NB
cmVGbGlwcGVkICYmIHBvaW50QmxvY2tEaXJlY3Rpb24gPT0gdG9wKSkgeworICAgICAgICAgICAg
TGF5b3V0VW5pdCBib3R0b20gPSByb290Qm94LnNlbGVjdGlvbkJvdHRvbSgpOworICAgICAgICAg
ICAgaWYgKHJvb3RCb3gubmV4dFJvb3RCb3goKSkKKyAgICAgICAgICAgICAgICBib3R0b20gPSBz
dGQ6Om1pbihib3R0b20sIHJvb3RCb3gubmV4dFJvb3RCb3goKS0+bGluZVRvcCgpKTsKKworICAg
ICAgICAgICAgaWYgKHBvaW50QmxvY2tEaXJlY3Rpb24gPCBib3R0b20gfHwgKGJsb2Nrc0FyZUZs
aXBwZWQgJiYgcG9pbnRCbG9ja0RpcmVjdGlvbiA9PSBib3R0b20pKSB7CisgICAgICAgICAgICAg
ICAgU2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0gc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW07
CisgICAgICAgICAgICAgICAgaWYgKGxpbmVEaXJlY3Rpb25Qb2ludEZpdHNJbkJveChwb2ludExp
bmVEaXJlY3Rpb24sICpib3gsIHNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbkFmdGVyQWRqdXN0aW5nT2Zm
c2V0Rm9yQmlEaSgqYm94LCBib3gtPm9mZnNldEZvclBvc2l0aW9uKHBvaW50TGluZURpcmVjdGlv
biksIHNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBsYXN0Qm94ID0gYm94OworICAgIH0KKworICAgIGlmIChsYXN0Qm94KSB7Cisg
ICAgICAgIFNob3VsZEFmZmluaXR5QmVEb3duc3RyZWFtIHNob3VsZEFmZmluaXR5QmVEb3duc3Ry
ZWFtOworICAgICAgICBsaW5lRGlyZWN0aW9uUG9pbnRGaXRzSW5Cb3gocG9pbnRMaW5lRGlyZWN0
aW9uLCAqbGFzdEJveCwgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0pOworICAgICAgICByZXR1
cm4gY3JlYXRlVmlzaWJsZVBvc2l0aW9uQWZ0ZXJBZGp1c3RpbmdPZmZzZXRGb3JCaURpKCpsYXN0
Qm94LCBsYXN0Qm94LT5vZmZzZXRGb3JQb3NpdGlvbihwb2ludExpbmVEaXJlY3Rpb24pICsgbGFz
dEJveC0+c3RhcnQoKSwgc2hvdWxkQWZmaW5pdHlCZURvd25zdHJlYW0pOworICAgIH0KKyAgICBy
ZXR1cm4gcmVuZGVyZXIuY3JlYXRlVmlzaWJsZVBvc2l0aW9uKDAsIERPV05TVFJFQU0pOworfQor
CiB2b2lkIFJlbmRlclRleHRMaW5lQm94ZXM6OmRpcnR5QWxsKCkKIHsKICAgICBmb3IgKGF1dG8g
Ym94ID0gbV9maXJzdDsgYm94OyBib3ggPSBib3gtPm5leHRUZXh0Qm94KCkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dExpbmVCb3hlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVzLmgJKHJldmlzaW9u
IDE1NzM0NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0TGluZUJveGVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgUmVuZGVyVGV4dExp
bmVCb3hlc19oCiAKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCisjaW5jbHVkZSAiVmlzaWJsZVBv
c2l0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTYsNiArNTcsOCBAQCBwdWJs
aWM6CiAgICAgaW50IGNhcmV0TWluT2Zmc2V0KCkgY29uc3Q7CiAgICAgaW50IGNhcmV0TWF4T2Zm
c2V0KGNvbnN0IFJlbmRlclRleHQmKSBjb25zdDsKIAorICAgIFZpc2libGVQb3NpdGlvbiBwb3Np
dGlvbkZvclBvaW50KGNvbnN0IFJlbmRlclRleHQmLCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0
OworCiAgICAgSW50UmVjdCBib3VuZGluZ0JveChjb25zdCBSZW5kZXJUZXh0JikgY29uc3Q7CiAg
ICAgTGF5b3V0UmVjdCB2aXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KGNvbnN0IFJlbmRlclRleHQm
KSBjb25zdDsKIApAQCAtNzksNSArODIsNCBAQCBwcml2YXRlOgogCiB9CiAKLQogI2VuZGlmCg==
</data>
<flag name="review"
          id="236559"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>