<?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>218233</bug_id>
          
          <creation_ts>2020-10-27 07:41:19 -0700</creation_ts>
          <short_desc>[LFC][Integration] Use iterator for next/previousLinePosition</short_desc>
          <delta_ts>2020-10-27 10:43:41 -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>WebKit 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>InRadar</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>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>pnormand</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1701867</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-10-27 07:41:19 -0700</bug_when>
    <thetext>In VisibleUnit.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701869</commentid>
    <comment_count>1</comment_count>
      <attachid>412420</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-10-27 07:45:11 -0700</bug_when>
    <thetext>Created attachment 412420
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701887</commentid>
    <comment_count>2</comment_count>
      <attachid>412420</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-10-27 08:42:57 -0700</bug_when>
    <thetext>Comment on attachment 412420
patch

nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701891</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-27 08:57:20 -0700</bug_when>
    <thetext>Committed r269041: &lt;https://trac.webkit.org/changeset/269041&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412420.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701893</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-27 08:58:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/70723663&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701943</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-27 10:14:44 -0700</bug_when>
    <thetext>This broke the Debian and Ubuntu LTS bots: https://build.webkit.org/builders/GTK-Linux-64-bit-Release-Debian-Stable-Build/builds/38868</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701968</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-10-27 10:38:53 -0700</bug_when>
    <thetext>Seems is an issue with unified builds and includes. Those bots compile with different build options than the defaults so the include order on the unified builds is different. I have a fix for it, will land it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701972</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2020-10-27 10:43:41 -0700</bug_when>
    <thetext>Committed r269053: &lt;https://trac.webkit.org/changeset/269053&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412420</attachid>
            <date>2020-10-27 07:45:11 -0700</date>
            <delta_ts>2020-10-27 08:57:20 -0700</delta_ts>
            <desc>patch</desc>
            <filename>lfc-nextlineposition.patch</filename>
            <type>text/plain</type>
            <size>26733</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiMjYxMDI5MDJmY2UuLmU0MzFkMzA0MzIzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU5IEBACisyMDIwLTEwLTI3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gVXNlIGl0ZXJhdG9yIGZvciBuZXh0L3By
ZXZpb3VzTGluZVBvc2l0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTgyMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgdGhlIHJlcXVpcmVkIGNhcGFiaWxpdGllcyB0byB0aGUgbGluZSBpdGVy
YXRvciBhbmQgYWxzbyB1c2UgdGhlbSBpbiBhIGZldyBvdGhlciBwbGFjZXMuCisKKyAgICAgICAg
KiBlZGl0aW5nL1Zpc2libGVVbml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjphYnNvbHV0ZUxp
bmVEaXJlY3Rpb25Qb2ludFRvTG9jYWxQb2ludEluQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6
cHJldmlvdXNMaW5lUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6bmV4dExpbmVQb3NpdGlv
bik6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5l
Q29udGVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5l
Q29udGVudDo6Y29udGFpbmluZ0Jsb2NrIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50Lmg6CisgICAgICAgICogbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpmaXJzdExpbmVGb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246Omxhc3RMaW5lRm9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3I6OmNsb3Nlc3RSdW5Gb3JQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yOjpjbG9zZXN0
UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6UGF0aExpbmU6OmJsb2NrRGlyZWN0aW9uUG9pbnRJbkxpbmUgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5o
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvcjo6TGlu
ZUl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpQYXRoTGlu
ZTo6eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UGF0aExp
bmU6OmxvZ2ljYWxIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OlBhdGhMaW5lOjppc0hvcml6b250YWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0SW50ZWdyYXRpb246OlBhdGhMaW5lOjpjb250YWluaW5nQmxvY2sgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvckxl
Z2FjeVBhdGguaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRl
cmF0b3JMZWdhY3lQYXRoOjp5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRoOjpsb2dpY2FsSGVpZ2h0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3JMZWdhY3lQYXRo
Ojppc0hvcml6b250YWwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OkxpbmVJdGVyYXRvckxlZ2FjeVBhdGg6OmNvbnRhaW5pbmdCbG9jayBjb25zdCk6CisgICAg
ICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9k
ZXJuUGF0aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVy
YXRvck1vZGVyblBhdGg6OnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6OmxvZ2ljYWxIZWlnaHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvck1vZGVyblBhdGg6
OmlzSG9yaXpvbnRhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlv
bjo6TGluZUl0ZXJhdG9yTW9kZXJuUGF0aDo6Y29udGFpbmluZ0Jsb2NrIGNvbnN0KToKKyAgICAg
ICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpmaXJzdExp
bmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlv
dXQ6Omxhc3RMaW5lIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25MaW5lTGF5b3V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6TGluZUxheW91dDo6ZmxvdyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJ
bnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Zmxvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmZpbmRD
bG9zZXN0VGV4dEF0QWJzb2x1dGVQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
a0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4pOgorICAgICAgICAqIHJl
bmRlcmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRWRpdGFibGVM
ZWFmKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmNsb3Nlc3RM
ZWFmQ2hpbGRGb3JQb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5l
Qm94OjpjbG9zZXN0TGVhZkNoaWxkRm9yTG9naWNhbExlZnRQb3NpdGlvbik6IERlbGV0ZWQuCisK
KyAgICAgICAgVGhpcyBmdW5jdGlvbmFsaXR5IG1vdmVzIHRvIHRoZSBsaW5lIGl0ZXJhdG9yLgor
CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaDoKKwogMjAyMC0xMC0yNiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUg
UHJvY2Vzc106IEludHJvZHVjZSBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgdG8gbWFuYWdlIHRo
ZSByZW1vdGUgcmVzb3VyY2VzIGluIFdlYiBQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVVbml0cy5jcHAKaW5kZXggYWU3NTUwNjk1ZDZjLi42NjUxZWMzNTA2OGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKQEAgLTk4MSwxNSArOTgxLDE1IEBAIGJv
b2wgaXNMb2dpY2FsRW5kT2ZMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcCkKICAgICByZXR1
cm4gcC5pc05vdE51bGwoKSAmJiBwID09IGxvZ2ljYWxFbmRPZkxpbmUocCk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSW50UG9pbnQgYWJzb2x1dGVMaW5lRGlyZWN0aW9uUG9pbnRUb0xvY2FsUG9pbnRJ
bkJsb2NrKFJvb3RJbmxpbmVCb3gmIHJvb3QsIGludCBsaW5lRGlyZWN0aW9uUG9pbnQpCitzdGF0
aWMgaW5saW5lIEludFBvaW50IGFic29sdXRlTGluZURpcmVjdGlvblBvaW50VG9Mb2NhbFBvaW50
SW5CbG9jayhMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yJiBsaW5lLCBpbnQgbGluZURp
cmVjdGlvblBvaW50KQogewotICAgIFJlbmRlckJsb2NrRmxvdyYgY29udGFpbmluZ0Jsb2NrID0g
cm9vdC5ibG9ja0Zsb3coKTsKKyAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSBsaW5lLT5jb250
YWluaW5nQmxvY2soKTsKICAgICBGbG9hdFBvaW50IGFic29sdXRlQmxvY2tQb2ludCA9IGNvbnRh
aW5pbmdCbG9jay5sb2NhbFRvQWJzb2x1dGUoRmxvYXRQb2ludCgpKSAtIHRvRmxvYXRTaXplKGNv
bnRhaW5pbmdCbG9jay5zY3JvbGxQb3NpdGlvbigpKTsKIAogICAgIGlmIChjb250YWluaW5nQmxv
Y2suaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKLSAgICAgICAgcmV0dXJuIEludFBvaW50KGxp
bmVEaXJlY3Rpb25Qb2ludCAtIGFic29sdXRlQmxvY2tQb2ludC54KCksIHJvb3QuYmxvY2tEaXJl
Y3Rpb25Qb2ludEluTGluZSgpKTsKKyAgICAgICAgcmV0dXJuIEludFBvaW50KGxpbmVEaXJlY3Rp
b25Qb2ludCAtIGFic29sdXRlQmxvY2tQb2ludC54KCksIGxpbmUtPmJsb2NrRGlyZWN0aW9uUG9p
bnRJbkxpbmUoKSk7CiAKLSAgICByZXR1cm4gSW50UG9pbnQocm9vdC5ibG9ja0RpcmVjdGlvblBv
aW50SW5MaW5lKCksIGxpbmVEaXJlY3Rpb25Qb2ludCAtIGFic29sdXRlQmxvY2tQb2ludC55KCkp
OworICAgIHJldHVybiBJbnRQb2ludChsaW5lLT5ibG9ja0RpcmVjdGlvblBvaW50SW5MaW5lKCks
IGxpbmVEaXJlY3Rpb25Qb2ludCAtIGFic29sdXRlQmxvY2tQb2ludC55KCkpOwogfQogCiBzdGF0
aWMgRWxlbWVudCogcm9vdEVkaXRhYmxlT3JEb2N1bWVudEVsZW1lbnQoTm9kZSYgbm9kZSwgRWRp
dGFibGVUeXBlIGVkaXRhYmxlVHlwZSkKQEAgLTEwMTMsMzMgKzEwMTMsMzMgQEAgVmlzaWJsZVBv
c2l0aW9uIHByZXZpb3VzTGluZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJs
ZVBvc2l0aW9uLCBpbnQKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKCk7CiAKLSAgICBSb290SW5saW5lQm94KiByb290ID0gbnVsbHB0cjsKLSAgICBp
ZiAoYXV0byBib3ggPSB2aXNpYmxlUG9zaXRpb24uaW5saW5lQm94QW5kT2Zmc2V0KCkuYm94KSB7
Ci0gICAgICAgIHJvb3QgPSBib3gtPnJvb3QoKS5wcmV2Um9vdEJveCgpOworICAgIExheW91dElu
dGVncmF0aW9uOjpMaW5lSXRlcmF0b3IgbGluZTsKKyAgICBpZiAoYXV0byBydW4gPSB2aXNpYmxl
UG9zaXRpb24uaW5saW5lUnVuQW5kT2Zmc2V0KCkucnVuKSB7CisgICAgICAgIGxpbmUgPSBydW4u
bGluZSgpLnByZXZpb3VzKCk7CiAgICAgICAgIC8vIFdlIHdhbnQgdG8gc2tpcCB6ZXJvIGhlaWdo
dCBib3hlcy4KICAgICAgICAgLy8gVGhpcyBjb3VsZCBoYXBwZW4gaW4gY2FzZSBpdCBpcyBhIFRy
YWlsaW5nRmxvYXRzUm9vdElubGluZUJveC4KLSAgICAgICAgaWYgKCFyb290IHx8ICFyb290LT5s
b2dpY2FsSGVpZ2h0KCkgfHwgIXJvb3QtPmZpcnN0TGVhZkRlc2NlbmRhbnQoKSkKLSAgICAgICAg
ICAgIHJvb3QgPSBudWxscHRyOworICAgICAgICBpZiAoIWxpbmUgfHwgIWxpbmUtPmxvZ2ljYWxI
ZWlnaHQoKSB8fCAhbGluZS5maXJzdFJ1bigpKQorICAgICAgICAgICAgbGluZSA9IHsgfTsKICAg
ICB9CiAKLSAgICBpZiAoIXJvb3QpIHsKKyAgICBpZiAoIWxpbmUpIHsKICAgICAgICAgUG9zaXRp
b24gcG9zaXRpb24gPSBwcmV2aW91c1Jvb3RJbmxpbmVCb3hDYW5kaWRhdGVQb3NpdGlvbihub2Rl
LCB2aXNpYmxlUG9zaXRpb24sIGVkaXRhYmxlVHlwZSk7CiAgICAgICAgIGlmIChwb3NpdGlvbi5p
c05vdE51bGwoKSkgewogICAgICAgICAgICAgUmVuZGVyZWRQb3NpdGlvbiByZW5kZXJlZFBvc2l0
aW9uKHBvc2l0aW9uKTsKLSAgICAgICAgICAgIHJvb3QgPSByZW5kZXJlZFBvc2l0aW9uLnJvb3RC
b3goKTsKLSAgICAgICAgICAgIGlmICghcm9vdCkKKyAgICAgICAgICAgIGxpbmUgPSByZW5kZXJl
ZFBvc2l0aW9uLmxpbmUoKTsKKyAgICAgICAgICAgIGlmICghbGluZSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgaWYgKHJvb3Qp
IHsKKyAgICBpZiAobGluZSkgewogICAgICAgICAvLyBGSVhNRTogQ2FuIGJlIHdyb25nIGZvciBt
dWx0aS1jb2x1bW4gbGF5b3V0IGFuZCB3aXRoIHRyYW5zZm9ybXMuCi0gICAgICAgIEludFBvaW50
IHBvaW50SW5MaW5lID0gYWJzb2x1dGVMaW5lRGlyZWN0aW9uUG9pbnRUb0xvY2FsUG9pbnRJbkJs
b2NrKCpyb290LCBsaW5lRGlyZWN0aW9uUG9pbnQpOwotICAgICAgICBSZW5kZXJPYmplY3QmIHJl
bmRlcmVyID0gcm9vdC0+Y2xvc2VzdExlYWZDaGlsZEZvclBvaW50KHBvaW50SW5MaW5lLCBpc0Vk
aXRhYmxlUG9zaXRpb24ocCkpLT5yZW5kZXJlcigpOworICAgICAgICBhdXRvIHBvaW50SW5MaW5l
ID0gYWJzb2x1dGVMaW5lRGlyZWN0aW9uUG9pbnRUb0xvY2FsUG9pbnRJbkJsb2NrKGxpbmUsIGxp
bmVEaXJlY3Rpb25Qb2ludCk7CisgICAgICAgIGF1dG8mIHJlbmRlcmVyID0gbGluZS5jbG9zZXN0
UnVuRm9yUG9pbnQocG9pbnRJbkxpbmUsIGlzRWRpdGFibGVQb3NpdGlvbihwKSktPnJlbmRlcmVy
KCk7CiAgICAgICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci5ub2RlKCk7CiAgICAgICAgIGlmIChu
b2RlICYmIGVkaXRpbmdJZ25vcmVzQ29udGVudCgqbm9kZSkpCiAgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobm9kZSk7Ci0gICAgICAgIHJldHVybiByZW5kZXJl
ci5wb3NpdGlvbkZvclBvaW50KHBvaW50SW5MaW5lLCBudWxscHRyKTsKKyAgICAgICAgcmV0dXJu
IGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Jj4ocmVuZGVyZXIpLnBvc2l0aW9uRm9yUG9pbnQocG9p
bnRJbkxpbmUsIG51bGxwdHIpOwogICAgIH0KICAgICAKICAgICAvLyBDb3VsZCBub3QgZmluZCBh
IHByZXZpb3VzIGxpbmUuIFRoaXMgbWVhbnMgd2UgbXVzdCBhbHJlYWR5IGJlIG9uIHRoZSBmaXJz
dCBsaW5lLgpAQCAtMTA2MywzNiArMTA2MywzNiBAQCBWaXNpYmxlUG9zaXRpb24gbmV4dExpbmVQ
b3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbiwgaW50IGxpbgog
ICAgIGlmICghbm9kZS0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlv
bigpOwogCi0gICAgUm9vdElubGluZUJveCogcm9vdCA9IG51bGxwdHI7Ci0gICAgaWYgKGF1dG8g
Ym94ID0gdmlzaWJsZVBvc2l0aW9uLmlubGluZUJveEFuZE9mZnNldCgpLmJveCkgewotICAgICAg
ICByb290ID0gYm94LT5yb290KCkubmV4dFJvb3RCb3goKTsKKyAgICBMYXlvdXRJbnRlZ3JhdGlv
bjo6TGluZUl0ZXJhdG9yIGxpbmU7CisgICAgaWYgKGF1dG8gcnVuID0gdmlzaWJsZVBvc2l0aW9u
LmlubGluZVJ1bkFuZE9mZnNldCgpLnJ1bikgeworICAgICAgICBsaW5lID0gcnVuLmxpbmUoKS5u
ZXh0KCk7CiAgICAgICAgIC8vIFdlIHdhbnQgdG8gc2tpcCB6ZXJvIGhlaWdodCBib3hlcy4KICAg
ICAgICAgLy8gVGhpcyBjb3VsZCBoYXBwZW4gaW4gY2FzZSBpdCBpcyBhIFRyYWlsaW5nRmxvYXRz
Um9vdElubGluZUJveC4KLSAgICAgICAgaWYgKCFyb290IHx8ICFyb290LT5sb2dpY2FsSGVpZ2h0
KCkgfHwgIXJvb3QtPmZpcnN0TGVhZkRlc2NlbmRhbnQoKSkKLSAgICAgICAgICAgIHJvb3QgPSBu
dWxscHRyOworICAgICAgICBpZiAoIWxpbmUgfHwgIWxpbmUtPmxvZ2ljYWxIZWlnaHQoKSB8fCAh
bGluZS5maXJzdFJ1bigpKQorICAgICAgICAgICAgbGluZSA9IHsgfTsKICAgICB9CiAKLSAgICBp
ZiAoIXJvb3QpIHsKKyAgICBpZiAoIWxpbmUpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQg
ZG8gdGhlIHNhbWUgaW4gcHJldmlvdXNMaW5lUG9zaXRpb24uCiAgICAgICAgIE5vZGUqIGNoaWxk
ID0gbm9kZS0+dHJhdmVyc2VUb0NoaWxkQXQocC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsK
ICAgICAgICAgbm9kZSA9IGNoaWxkID8gY2hpbGQgOiBub2RlLT5sYXN0RGVzY2VuZGFudCgpOwog
ICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbiA9IG5leHRSb290SW5saW5lQm94Q2FuZGlkYXRlUG9z
aXRpb24obm9kZSwgdmlzaWJsZVBvc2l0aW9uLCBlZGl0YWJsZVR5cGUpOwogICAgICAgICBpZiAo
cG9zaXRpb24uaXNOb3ROdWxsKCkpIHsKICAgICAgICAgICAgIFJlbmRlcmVkUG9zaXRpb24gcmVu
ZGVyZWRQb3NpdGlvbihwb3NpdGlvbik7Ci0gICAgICAgICAgICByb290ID0gcmVuZGVyZWRQb3Np
dGlvbi5yb290Qm94KCk7Ci0gICAgICAgICAgICBpZiAoIXJvb3QpCisgICAgICAgICAgICBsaW5l
ID0gcmVuZGVyZWRQb3NpdGlvbi5saW5lKCk7CisgICAgICAgICAgICBpZiAoIWxpbmUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwogICAgICAgICB9CiAgICAgfQogICAgIAotICAg
IGlmIChyb290KSB7CisgICAgaWYgKGxpbmUpIHsKICAgICAgICAgLy8gRklYTUU6IENhbiBiZSB3
cm9uZyBmb3IgbXVsdGktY29sdW1uIGxheW91dCBhbmQgd2l0aCB0cmFuc2Zvcm1zLgotICAgICAg
ICBJbnRQb2ludCBwb2ludEluTGluZSA9IGFic29sdXRlTGluZURpcmVjdGlvblBvaW50VG9Mb2Nh
bFBvaW50SW5CbG9jaygqcm9vdCwgbGluZURpcmVjdGlvblBvaW50KTsKLSAgICAgICAgUmVuZGVy
T2JqZWN0JiByZW5kZXJlciA9IHJvb3QtPmNsb3Nlc3RMZWFmQ2hpbGRGb3JQb2ludChwb2ludElu
TGluZSwgaXNFZGl0YWJsZVBvc2l0aW9uKHApKS0+cmVuZGVyZXIoKTsKKyAgICAgICAgYXV0byBw
b2ludEluTGluZSA9IGFic29sdXRlTGluZURpcmVjdGlvblBvaW50VG9Mb2NhbFBvaW50SW5CbG9j
ayhsaW5lLCBsaW5lRGlyZWN0aW9uUG9pbnQpOworICAgICAgICBhdXRvJiByZW5kZXJlciA9IGxp
bmUuY2xvc2VzdFJ1bkZvclBvaW50KHBvaW50SW5MaW5lLCBpc0VkaXRhYmxlUG9zaXRpb24ocCkp
LT5yZW5kZXJlcigpOwogICAgICAgICBOb2RlKiBub2RlID0gcmVuZGVyZXIubm9kZSgpOwogICAg
ICAgICBpZiAobm9kZSAmJiBlZGl0aW5nSWdub3Jlc0NvbnRlbnQoKm5vZGUpKQogICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGUpOwotICAgICAgICByZXR1
cm4gcmVuZGVyZXIucG9zaXRpb25Gb3JQb2ludChwb2ludEluTGluZSwgbnVsbHB0cik7CisgICAg
ICAgIHJldHVybiBjb25zdF9jYXN0PFJlbmRlck9iamVjdCY+KHJlbmRlcmVyKS5wb3NpdGlvbkZv
clBvaW50KHBvaW50SW5MaW5lLCBudWxscHRyKTsKICAgICB9CiAKICAgICAvLyBDb3VsZCBub3Qg
ZmluZCBhIG5leHQgbGluZS4gVGhpcyBtZWFucyB3ZSBtdXN0IGFscmVhZHkgYmUgb24gdGhlIGxh
c3QgbGluZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5jcHAKaW5kZXggZThi
OTlmMjhiMmVhLi4wMDlkYjliNjFkMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNv
bnRlbnQuY3BwCkBAIC02Niw2ICs2NiwxMCBAQCBjb25zdCBSZW5kZXJPYmplY3QmIElubGluZUNv
bnRlbnQ6OnJlbmRlcmVyRm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiBsYXlvdQogICAg
IHJldHVybiBtX2xpbmVMYXlvdXQtPnJlbmRlcmVyRm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiB9
CiAKK2NvbnN0IFJlbmRlckJsb2NrRmxvdyYgSW5saW5lQ29udGVudDo6Y29udGFpbmluZ0Jsb2Nr
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9saW5lTGF5b3V0LT5mbG93KCk7Cit9CiAKIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbklubGluZUNvbnRlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaAppbmRleCA4NDdjY2U0NmI1ZTIuLjYw
MmZlNGVkYzkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuaApAQCAtMzUs
NiArMzUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJlbmRlckJsb2NrRmxv
dzsKIGNsYXNzIFJlbmRlck9iamVjdDsKIAogbmFtZXNwYWNlIExheW91dCB7CkBAIC02Miw2ICs2
Myw3IEBAIHN0cnVjdCBJbmxpbmVDb250ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8SW5saW5lQ29u
dGVudD4gewogCiAgICAgY29uc3QgTGluZUxheW91dCYgbGluZUxheW91dCgpIGNvbnN0OwogICAg
IGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXJGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpC
b3gmKSBjb25zdDsKKyAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGNvbnRhaW5pbmdCbG9jaygp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIElubGluZUNvbnRlbnQoY29uc3QgTGluZUxheW91dCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5jcHAKaW5kZXggODJkMjExMjUzODBm
Li4wMjQ5ZjMwYzM3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmNwcApA
QCAtMTA4LDYgKzEwOCw3NSBAQCBMaW5lUnVuSXRlcmF0b3IgTGluZUl0ZXJhdG9yOjpsb2dpY2Fs
RW5kUnVuV2l0aE5vZGUoKSBjb25zdAogICAgIH0pOwogfQogCitMaW5lSXRlcmF0b3IgZmlyc3RM
aW5lRm9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdykKK3sKKyNpZiBFTkFCTEUoTEFZT1VU
X0ZPUk1BVFRJTkdfQ09OVEVYVCkKKyAgICBpZiAoYXV0byogbGluZUxheW91dCA9IGZsb3cubW9k
ZXJuTGluZUxheW91dCgpKQorICAgICAgICByZXR1cm4gbGluZUxheW91dC0+Zmlyc3RMaW5lKCk7
CisjZW5kaWYKKworICAgIHJldHVybiB7IExpbmVJdGVyYXRvckxlZ2FjeVBhdGggeyBmbG93LmZp
cnN0Um9vdEJveCgpIH0gfTsKK30KKworTGluZUl0ZXJhdG9yIGxhc3RMaW5lRm9yKGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYgZmxvdykKK3sKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09O
VEVYVCkKKyAgICBpZiAoYXV0byogbGluZUxheW91dCA9IGZsb3cubW9kZXJuTGluZUxheW91dCgp
KQorICAgICAgICByZXR1cm4gbGluZUxheW91dC0+bGFzdExpbmUoKTsKKyNlbmRpZgorCisgICAg
cmV0dXJuIHsgTGluZUl0ZXJhdG9yTGVnYWN5UGF0aCB7IGZsb3cubGFzdFJvb3RCb3goKSB9IH07
Cit9CisKK0xpbmVSdW5JdGVyYXRvciBMaW5lSXRlcmF0b3I6OmNsb3Nlc3RSdW5Gb3JQb2ludChj
b25zdCBJbnRQb2ludCYgcG9pbnRJbkNvbnRlbnRzLCBib29sIGVkaXRhYmxlT25seSkKK3sKKyAg
ICBpZiAoYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gY2xvc2VzdFJ1
bkZvckxvZ2ljYWxMZWZ0UG9zaXRpb24obV9saW5lLmlzSG9yaXpvbnRhbCgpID8gcG9pbnRJbkNv
bnRlbnRzLngoKSA6IHBvaW50SW5Db250ZW50cy55KCksIGVkaXRhYmxlT25seSk7Cit9CisKK0xp
bmVSdW5JdGVyYXRvciBMaW5lSXRlcmF0b3I6OmNsb3Nlc3RSdW5Gb3JMb2dpY2FsTGVmdFBvc2l0
aW9uKGludCBsZWZ0UG9zaXRpb24sIGJvb2wgZWRpdGFibGVPbmx5KQoreworICAgIGF1dG8gaXNF
ZGl0YWJsZSA9IFsmXShhdXRvIHJ1bikKKyAgICB7CisgICAgICAgIHJldHVybiBydW4gJiYgcnVu
LT5yZW5kZXJlcigpLm5vZGUoKSAmJiBydW4tPnJlbmRlcmVyKCkubm9kZSgpLT5oYXNFZGl0YWJs
ZVN0eWxlKCk7CisgICAgfTsKKworICAgIGF1dG8gZmlyc3RSdW4gPSB0aGlzLT5maXJzdFJ1bigp
OworICAgIGF1dG8gbGFzdFJ1biA9IHRoaXMtPmxhc3RSdW4oKTsKKworICAgIGlmIChmaXJzdFJ1
biAhPSBsYXN0UnVuKSB7CisgICAgICAgIGlmIChmaXJzdFJ1bi0+aXNMaW5lQnJlYWsoKSkKKyAg
ICAgICAgICAgIGZpcnN0UnVuID0gZmlyc3RSdW4ubmV4dE9uTGluZUlnbm9yaW5nTGluZUJyZWFr
KCk7CisgICAgICAgIGVsc2UgaWYgKGxhc3RSdW4tPmlzTGluZUJyZWFrKCkpCisgICAgICAgICAg
ICBsYXN0UnVuID0gbGFzdFJ1bi5wcmV2aW91c09uTGluZUlnbm9yaW5nTGluZUJyZWFrKCk7Cisg
ICAgfQorCisgICAgaWYgKGZpcnN0UnVuID09IGxhc3RSdW4gJiYgKCFlZGl0YWJsZU9ubHkgfHwg
aXNFZGl0YWJsZShmaXJzdFJ1bikpKQorICAgICAgICByZXR1cm4gZmlyc3RSdW47CisKKyAgICBp
ZiAoZmlyc3RSdW4gJiYgbGVmdFBvc2l0aW9uIDw9IGZpcnN0UnVuLT5sb2dpY2FsTGVmdCgpICYm
ICFmaXJzdFJ1bi0+cmVuZGVyZXIoKS5pc0xpc3RNYXJrZXIoKSAmJiAoIWVkaXRhYmxlT25seSB8
fCBpc0VkaXRhYmxlKGZpcnN0UnVuKSkpCisgICAgICAgIHJldHVybiBmaXJzdFJ1bjsKKworICAg
IGlmIChsYXN0UnVuICYmIGxlZnRQb3NpdGlvbiA+PSBsYXN0UnVuLT5sb2dpY2FsUmlnaHQoKSAm
JiAhbGFzdFJ1bi0+cmVuZGVyZXIoKS5pc0xpc3RNYXJrZXIoKSAmJiAoIWVkaXRhYmxlT25seSB8
fCBpc0VkaXRhYmxlKGxhc3RSdW4pKSkKKyAgICAgICAgcmV0dXJuIGxhc3RSdW47CisKKyAgICBh
dXRvIGNsb3Nlc3RSdW4gPSBsYXN0UnVuOworICAgIGZvciAoYXV0byBydW4gPSBmaXJzdFJ1bjsg
cnVuOyBydW4gPSBydW4udHJhdmVyc2VOZXh0T25MaW5lSWdub3JpbmdMaW5lQnJlYWsoKSkgewor
ICAgICAgICBpZiAoIXJ1bi0+cmVuZGVyZXIoKS5pc0xpc3RNYXJrZXIoKSAmJiAoIWVkaXRhYmxl
T25seSB8fCBpc0VkaXRhYmxlKHJ1bikpKSB7CisgICAgICAgICAgICBpZiAobGVmdFBvc2l0aW9u
IDwgcnVuLT5sb2dpY2FsUmlnaHQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcnVuOworICAg
ICAgICAgICAgY2xvc2VzdFJ1biA9IHJ1bjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biBjbG9zZXN0UnVuOworfQorCitpbnQgUGF0aExpbmU6OmJsb2NrRGlyZWN0aW9uUG9pbnRJbkxp
bmUoKSBjb25zdAoreworICAgIHJldHVybiAhY29udGFpbmluZ0Jsb2NrKCkuc3R5bGUoKS5pc0Zs
aXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpID8gc3RkOjptYXgodG9wKCksIHNlbGVjdGlvblRvcCgp
KSA6IHN0ZDo6bWluKGJvdHRvbSgpLCBzZWxlY3Rpb25Cb3R0b20oKSk7Cit9CiAKIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkxpbmVJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yLmgKaW5kZXggNzhlNjVkZDdlMjlkLi4yNDIxNmUx
NmE5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVJdGVyYXRvci5oCkBAIC01Niw2ICs1Niwx
NSBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25Ub3BGb3JIaXRUZXN0aW5nKCkg
Y29uc3Q7CiAgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25Cb3R0b20oKSBjb25zdDsKIAorICAgIGZs
b2F0IHkoKSBjb25zdDsKKyAgICBmbG9hdCBsb2dpY2FsSGVpZ2h0KCkgY29uc3Q7CisKKyAgICBp
bnQgYmxvY2tEaXJlY3Rpb25Qb2ludEluTGluZSgpIGNvbnN0OworCisgICAgYm9vbCBpc0hvcml6
b250YWwoKSBjb25zdDsKKworICAgIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgY29udGFpbmluZ0Js
b2NrKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBmcmllbmQgY2xhc3MgTGluZUl0ZXJhdG9y
OwogCkBAIC02NSw2ICs3NCw3IEBAIHByb3RlY3RlZDoKIGNsYXNzIExpbmVJdGVyYXRvciB7CiBw
dWJsaWM6CiAgICAgTGluZUl0ZXJhdG9yKCkgOiBtX2xpbmUoTGluZUl0ZXJhdG9yTGVnYWN5UGF0
aCB7IG51bGxwdHIgfSkgeyB9OworICAgIExpbmVJdGVyYXRvcihjb25zdCBSb290SW5saW5lQm94
KiByb290SW5saW5lQm94KSA6IG1fbGluZShMaW5lSXRlcmF0b3JMZWdhY3lQYXRoIHsgcm9vdElu
bGluZUJveCB9KSB7IH07CiAgICAgTGluZUl0ZXJhdG9yKFBhdGhMaW5lOjpQYXRoVmFyaWFudCYm
KTsKIAogICAgIExpbmVJdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgcmV0dXJuIHRyYXZlcnNlTmV4
dCgpOyB9CkBAIC05MSwxMiArMTAxLDE1IEBAIHB1YmxpYzoKICAgICBMaW5lUnVuSXRlcmF0b3Ig
bGFzdFJ1bigpIGNvbnN0OwogICAgIExpbmVSdW5JdGVyYXRvciBsb2dpY2FsU3RhcnRSdW5XaXRo
Tm9kZSgpIGNvbnN0OwogICAgIExpbmVSdW5JdGVyYXRvciBsb2dpY2FsRW5kUnVuV2l0aE5vZGUo
KSBjb25zdDsKKyAgICBMaW5lUnVuSXRlcmF0b3IgY2xvc2VzdFJ1bkZvclBvaW50KGNvbnN0IElu
dFBvaW50JiBwb2ludEluQ29udGVudHMsIGJvb2wgZWRpdGFibGVPbmx5KTsKKyAgICBMaW5lUnVu
SXRlcmF0b3IgY2xvc2VzdFJ1bkZvckxvZ2ljYWxMZWZ0UG9zaXRpb24oaW50IHBvc2l0aW9uLCBi
b29sIGVkaXRhYmxlT25seSA9IGZhbHNlKTsKIAogcHJpdmF0ZToKICAgICBQYXRoTGluZSBtX2xp
bmU7CiB9OwogCi1MaW5lSXRlcmF0b3IgbGluZUZvcihjb25zdCBQYXRoSXRlcmF0b3ImKTsKK0xp
bmVJdGVyYXRvciBmaXJzdExpbmVGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7CitMaW5lSXRl
cmF0b3IgbGFzdExpbmVGb3IoY29uc3QgUmVuZGVyQmxvY2tGbG93Jik7CiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTE0MCw2ICsxNTMs
MzQgQEAgaW5saW5lIExheW91dFVuaXQgUGF0aExpbmU6OnNlbGVjdGlvbkJvdHRvbSgpIGNvbnN0
CiAgICAgfSk7CiB9CiAKK2lubGluZSBmbG9hdCBQYXRoTGluZTo6eSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24obV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0aCkg
eworICAgICAgICByZXR1cm4gcGF0aC55KCk7CisgICAgfSk7Cit9CisKK2lubGluZSBmbG9hdCBQ
YXRoTGluZTo6bG9naWNhbEhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24obV9wYXRoVmFyaWFudCwgW10oY29uc3QgYXV0byYgcGF0aCkgeworICAgICAgICByZXR1cm4g
cGF0aC5sb2dpY2FsSGVpZ2h0KCk7CisgICAgfSk7Cit9CisKK2lubGluZSBib29sIFBhdGhMaW5l
Ojppc0hvcml6b250YWwoKSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKG1fcGF0
aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgpIHsKKyAgICAgICAgcmV0dXJuIHBhdGguaXNI
b3Jpem9udGFsKCk7CisgICAgfSk7Cit9CisKK2lubGluZSBjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
IFBhdGhMaW5lOjpjb250YWluaW5nQmxvY2soKSBjb25zdAoreworICAgIHJldHVybiBXVEY6OnN3
aXRjaE9uKG1fcGF0aFZhcmlhbnQsIFtdKGNvbnN0IGF1dG8mIHBhdGgpIC0+IGNvbnN0IFJlbmRl
ckJsb2NrRmxvdyYgeworICAgICAgICByZXR1cm4gcGF0aC5jb250YWluaW5nQmxvY2soKTsKKyAg
ICB9KTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JMZWdhY3lQYXRoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0
b3JMZWdhY3lQYXRoLmgKaW5kZXggYjBmMTZlM2YzMTA5Li41MDgxZjljYzcwMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxp
bmVJdGVyYXRvckxlZ2FjeVBhdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JMZWdhY3lQYXRoLmgKQEAgLTUwLDYg
KzUwLDEyIEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IHNlbGVjdGlvblRvcEZvckhpdFRlc3Rp
bmcoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPnNlbGVjdGlvblRvcChSb290SW5s
aW5lQm94OjpGb3JIaXRUZXN0aW5nOjpZZXMpOyB9CiAgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25C
b3R0b20oKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gtPnNlbGVjdGlvbkJvdHRvbSgp
OyB9CiAKKyAgICBmbG9hdCB5KCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LT55KCk7
IH0KKyAgICBmbG9hdCBsb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5saW5l
Qm94LT5sb2dpY2FsSGVpZ2h0KCk7IH0KKyAgICBib29sIGlzSG9yaXpvbnRhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fcm9vdElubGluZUJveC0+aXNIb3Jpem9udGFsKCk7IH0KKworICAgIGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYgY29udGFpbmluZ0Jsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9yb290SW5s
aW5lQm94LT5ibG9ja0Zsb3coKTsgfQorCiAgICAgdm9pZCB0cmF2ZXJzZU5leHQoKQogICAgIHsK
ICAgICAgICAgbV9yb290SW5saW5lQm94ID0gbV9yb290SW5saW5lQm94LT5uZXh0Um9vdEJveCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oCmlu
ZGV4IDJiZGRmNzZhOWExOC4uMDhlNzQ4ODQ5YTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lSXRlcmF0b3JNb2Rlcm5Q
YXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uTGluZUl0ZXJhdG9yTW9kZXJuUGF0aC5oCkBAIC01NSw2ICs1NSwxMiBAQCBwdWJsaWM6
CiAgICAgTGF5b3V0VW5pdCBzZWxlY3Rpb25Ub3BGb3JIaXRUZXN0aW5nKCkgY29uc3QgeyByZXR1
cm4gdG9wKCk7IH0KICAgICBMYXlvdXRVbml0IHNlbGVjdGlvbkJvdHRvbSgpIGNvbnN0IHsgcmV0
dXJuIGJvdHRvbSgpOyB9CiAKKyAgICBmbG9hdCB5KCkgY29uc3QgeyByZXR1cm4gdG9wKCk7IH0K
KyAgICBmbG9hdCBsb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbGluZSgpLnJlY3QoKS5o
ZWlnaHQoKTsgfQorICAgIGJvb2wgaXNIb3Jpem9udGFsKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQorCisgICAgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBjb250YWluaW5nQmxvY2soKSBjb25zdCB7
IHJldHVybiBtX2lubGluZUNvbnRlbnQtPmNvbnRhaW5pbmdCbG9jaygpOyB9CisKICAgICB2b2lk
IHRyYXZlcnNlTmV4dCgpCiAgICAgewogICAgICAgICBBU1NFUlQoIWF0RW5kKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCBkMTdjNjg1M2UxZjkuLmQwMDRlOWUxMjA1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTQwMyw2ICs0MDMsMjIg
QEAgUnVuSXRlcmF0b3IgTGluZUxheW91dDo6cnVuRm9yKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJl
bmRlckVsZW1lbnQpIGNvbnN0CiAgICAgcmV0dXJuIHsgfTsKIH0KIAorTGluZUl0ZXJhdG9yIExp
bmVMYXlvdXQ6OmZpcnN0TGluZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lubGluZUNvbnRlbnQp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4geyBMaW5lSXRlcmF0b3JNb2Rlcm5Q
YXRoKCptX2lubGluZUNvbnRlbnQsIDApIH07Cit9CisKK0xpbmVJdGVyYXRvciBMaW5lTGF5b3V0
OjpsYXN0TGluZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2lubGluZUNvbnRlbnQpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICByZXR1cm4geyBMaW5lSXRlcmF0b3JNb2Rlcm5QYXRoKCptX2lu
bGluZUNvbnRlbnQsIG1faW5saW5lQ29udGVudC0+bGluZXMuaXNFbXB0eSgpID8gMCA6IG1faW5s
aW5lQ29udGVudC0+bGluZXMuc2l6ZSgpIC0gMSkgfTsKK30KKwogY29uc3QgUmVuZGVyT2JqZWN0
JiBMaW5lTGF5b3V0OjpyZW5kZXJlckZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYgbGF5
b3V0Qm94KSBjb25zdAogewogICAgIHJldHVybiBtX2JveFRyZWUucmVuZGVyZXJGb3JMYXlvdXRC
b3gobGF5b3V0Qm94KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaAppbmRleCA3ODkyYTU5
OGY3OWQuLmNlYTgwMjMwZDg2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaApAQCAt
MjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAj
aW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmgiCisjaW5jbHVkZSAiTGF5b3V0SW50
ZWdyYXRpb25MaW5lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlvdXRJbnRlZ3JhdGlvblJ1bkl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIKICNpbmNsdWRlICJMYXlvdXRTdGF0
ZS5oIgpAQCAtODMsOCArODQsMTEgQEAgcHVibGljOgogCiAgICAgVGV4dFJ1bkl0ZXJhdG9yIHRl
eHRSdW5zRm9yKGNvbnN0IFJlbmRlclRleHQmKSBjb25zdDsKICAgICBSdW5JdGVyYXRvciBydW5G
b3IoY29uc3QgUmVuZGVyRWxlbWVudCYpIGNvbnN0OworICAgIExpbmVJdGVyYXRvciBmaXJzdExp
bmUoKSBjb25zdDsKKyAgICBMaW5lSXRlcmF0b3IgbGFzdExpbmUoKSBjb25zdDsKIAogICAgIGNv
bnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXJGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gm
KSBjb25zdDsKKyAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3coKSBjb25zdCB7IHJldHVy
biBtX2JveFRyZWUuZmxvdygpOyB9CiAKICAgICBzdGF0aWMgdm9pZCByZWxlYXNlQ2FjaGVzKFJl
bmRlclZpZXcmKTsKIApAQCAtOTUsNyArOTksNiBAQCBwcml2YXRlOgogICAgIElubGluZUNvbnRl
bnQmIGVuc3VyZUlubGluZUNvbnRlbnQoKTsKIAogICAgIFJlbmRlckJsb2NrRmxvdyYgZmxvdygp
IHsgcmV0dXJuIG1fYm94VHJlZS5mbG93KCk7IH0KLSAgICBjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
IGZsb3coKSBjb25zdCB7IHJldHVybiBtX2JveFRyZWUuZmxvdygpOyB9CiAKICAgICBjb25zdCBM
YXlvdXQ6OkNvbnRhaW5lckJveCYgcm9vdExheW91dEJveCgpIGNvbnN0OwogICAgIExheW91dDo6
Q29udGFpbmVyQm94JiByb290TGF5b3V0Qm94KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwCmluZGV4IGU1ZDhlNzg1MWRlNC4uNmU2YzQzMWViYmQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzM2
OSwxNyArMzM2OSwxNyBAQCBSZW5kZXJUZXh0KiBSZW5kZXJCbG9ja0Zsb3c6OmZpbmRDbG9zZXN0
VGV4dEF0QWJzb2x1dGVQb2ludChjb25zdCBGbG9hdFBvaW50JiBwbwogICAgIC8vIE9ubHkgY2hl
Y2sgdGhlIGdhcHMgYmV0d2VlbiB0aGUgcm9vdCBsaW5lIGJveGVzLiBXZSBkZWxpYmVyYXRlbHkg
aWdub3JlIG92ZXJmbG93IGJlY2F1c2UKICAgICAvLyBleHBlcmllbmNlIGhhcyBzaG93biB0aGF0
IGhpdCB0ZXN0cyBvbiBhbiBleHBsb2RlZCB0ZXh0IG5vZGUgY2FuIGZhaWwgd2hlbiB3aXRoaW4g
dGhlCiAgICAgLy8gb3ZlcmZsb3cgZnJhZ21lbnQuCi0gICAgZm9yIChSb290SW5saW5lQm94KiBj
dXJyZW50ID0gYmxvY2tGbG93LmZpcnN0Um9vdEJveCgpOyBjdXJyZW50ICYmIGN1cnJlbnQgIT0g
YmxvY2tGbG93Lmxhc3RSb290Qm94KCk7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0Um9vdEJveCgp
KSB7CisgICAgZm9yIChhdXRvIGN1cnJlbnQgPSBMYXlvdXRJbnRlZ3JhdGlvbjo6Zmlyc3RMaW5l
Rm9yKGJsb2NrRmxvdyksIGxhc3QgPSBMYXlvdXRJbnRlZ3JhdGlvbjo6bGFzdExpbmVGb3IoYmxv
Y2tGbG93KTsgY3VycmVudCAmJiBjdXJyZW50ICE9IGxhc3Q7IGN1cnJlbnQudHJhdmVyc2VOZXh0
KCkpIHsKICAgICAgICAgZmxvYXQgY3VycmVudEJvdHRvbSA9IGN1cnJlbnQtPnkoKSArIGN1cnJl
bnQtPmxvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgaWYgKGxvY2FsUG9pbnQueSgpIDwgY3VycmVu
dEJvdHRvbSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAKLSAgICAgICAg
Um9vdElubGluZUJveCogbmV4dCA9IGN1cnJlbnQtPm5leHRSb290Qm94KCk7CisgICAgICAgIGF1
dG8gbmV4dCA9IGN1cnJlbnQubmV4dCgpOwogICAgICAgICBmbG9hdCBuZXh0VG9wID0gbmV4dC0+
eSgpOwogICAgICAgICBpZiAobG9jYWxQb2ludC55KCkgPCBuZXh0VG9wKSB7Ci0gICAgICAgICAg
ICBJbmxpbmVCb3gqIGlubGluZUJveCA9IGN1cnJlbnQtPmNsb3Nlc3RMZWFmQ2hpbGRGb3JMb2dp
Y2FsTGVmdFBvc2l0aW9uKGxvY2FsUG9pbnQueCgpKTsKLSAgICAgICAgICAgIGlmIChpbmxpbmVC
b3ggJiYgaW5saW5lQm94LT5iZWhhdmVzTGlrZVRleHQoKSAmJiBpczxSZW5kZXJUZXh0Pihpbmxp
bmVCb3gtPnJlbmRlcmVyKCkpKQotICAgICAgICAgICAgICAgIHJldHVybiAmZG93bmNhc3Q8UmVu
ZGVyVGV4dD4oaW5saW5lQm94LT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgIGF1dG8gcnVuID0g
Y3VycmVudC5jbG9zZXN0UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihsb2NhbFBvaW50LngoKSk7
CisgICAgICAgICAgICBpZiAocnVuICYmIGlzPFJlbmRlclRleHQ+KHJ1bi0+cmVuZGVyZXIoKSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyVGV4dCo+KCZkb3duY2Fz
dDxSZW5kZXJUZXh0PihydW4tPnJlbmRlcmVyKCkpKTsKICAgICAgICAgfQogICAgIH0KICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTM0MjcsNyArMzQyNyw4IEBAIFZpc2libGVQb3NpdGlvbiBSZW5k
ZXJCbG9ja0Zsb3c6OnBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5
b3V0CiAgICAgICAgICAgICAgICAgICAgIHx8ICghYmxvY2tzQXJlRmxpcHBlZCAmJiBwb2ludElu
TG9naWNhbENvbnRlbnRzLnkoKSA9PSBuZXh0Um9vdEJveFdpdGhDaGlsZHJlbi0+bGluZVRvcFdp
dGhMZWFkaW5nKCkpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBjbG9zZXN0Qm94ID0gcm9vdC0+Y2xvc2VzdExlYWZDaGlsZEZvckxv
Z2ljYWxMZWZ0UG9zaXRpb24ocG9pbnRJbkxvZ2ljYWxDb250ZW50cy54KCkpOworICAgICAgICAg
ICAgaWYgKGF1dG8gY2xvc2VzdFJ1biA9IExheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3Io
cm9vdCkuY2xvc2VzdFJ1bkZvckxvZ2ljYWxMZWZ0UG9zaXRpb24ocG9pbnRJbkxvZ2ljYWxDb250
ZW50cy54KCkpKQorICAgICAgICAgICAgICAgIGNsb3Nlc3RCb3ggPSBjbG9zZXN0UnVuLT5sZWdh
Y3lJbmxpbmVCb3goKTsKICAgICAgICAgICAgIGlmIChjbG9zZXN0Qm94KQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zNDM3LDcgKzM0MzgsOCBAQCBWaXNpYmxlUG9zaXRp
b24gUmVuZGVyQmxvY2tGbG93Ojpwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNv
bnN0IExheW91dAogCiAgICAgaWYgKCFtb3ZlQ2FyZXRUb0JvdW5kYXJ5ICYmICFjbG9zZXN0Qm94
ICYmIGxhc3RSb290Qm94V2l0aENoaWxkcmVuKSB7CiAgICAgICAgIC8vIHkgY29vcmRpbmF0ZSBp
cyBiZWxvdyBsYXN0IHJvb3QgbGluZSBib3gsIHByZXRlbmQgd2UgaGl0IGl0Ci0gICAgICAgIGNs
b3Nlc3RCb3ggPSBsYXN0Um9vdEJveFdpdGhDaGlsZHJlbi0+Y2xvc2VzdExlYWZDaGlsZEZvckxv
Z2ljYWxMZWZ0UG9zaXRpb24ocG9pbnRJbkxvZ2ljYWxDb250ZW50cy54KCkpOworICAgICAgICBh
dXRvIGNsb3Nlc3RSdW4gPSBMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUl0ZXJhdG9yKGxhc3RSb290
Qm94V2l0aENoaWxkcmVuKS5jbG9zZXN0UnVuRm9yTG9naWNhbExlZnRQb3NpdGlvbihwb2ludElu
TG9naWNhbENvbnRlbnRzLngoKSk7CisgICAgICAgIGNsb3Nlc3RCb3ggPSBjbG9zZXN0UnVuID8g
Y2xvc2VzdFJ1bi0+bGVnYWN5SW5saW5lQm94KCkgOiBudWxscHRyOwogICAgIH0KIAogICAgIGlm
IChjbG9zZXN0Qm94KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9v
dElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5j
cHAKaW5kZXggMjk3ZjI0MmI4Yjg3Li4wYWZkZDFkNWRmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKQEAgLTc2MCw1NiArNzYwLDYgQEAgUmVuZGVyQmxv
Y2tGbG93JiBSb290SW5saW5lQm94OjpibG9ja0Zsb3coKSBjb25zdAogICAgIHJldHVybiBkb3du
Y2FzdDxSZW5kZXJCbG9ja0Zsb3c+KHJlbmRlcmVyKCkpOwogfQogCi1zdGF0aWMgYm9vbCBpc0Vk
aXRhYmxlTGVhZihJbmxpbmVCb3gqIGxlYWYpCi17Ci0gICAgcmV0dXJuIGxlYWYgJiYgbGVhZi0+
cmVuZGVyZXIoKS5ub2RlKCkgJiYgbGVhZi0+cmVuZGVyZXIoKS5ub2RlKCktPmhhc0VkaXRhYmxl
U3R5bGUoKTsKLX0KLQotSW5saW5lQm94KiBSb290SW5saW5lQm94OjpjbG9zZXN0TGVhZkNoaWxk
Rm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50SW5Db250ZW50cywgYm9vbCBvbmx5RWRpdGFi
bGVMZWF2ZXMpCi17Ci0gICAgcmV0dXJuIGNsb3Nlc3RMZWFmQ2hpbGRGb3JMb2dpY2FsTGVmdFBv
c2l0aW9uKGJsb2NrRmxvdygpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBwb2ludEluQ29u
dGVudHMueCgpIDogcG9pbnRJbkNvbnRlbnRzLnkoKSwgb25seUVkaXRhYmxlTGVhdmVzKTsKLX0K
LQotSW5saW5lQm94KiBSb290SW5saW5lQm94OjpjbG9zZXN0TGVhZkNoaWxkRm9yTG9naWNhbExl
ZnRQb3NpdGlvbihpbnQgbGVmdFBvc2l0aW9uLCBib29sIG9ubHlFZGl0YWJsZUxlYXZlcykKLXsK
LSAgICBJbmxpbmVCb3gqIGZpcnN0TGVhZiA9IGZpcnN0TGVhZkRlc2NlbmRhbnQoKTsKLSAgICBJ
bmxpbmVCb3gqIGxhc3RMZWFmID0gbGFzdExlYWZEZXNjZW5kYW50KCk7Ci0KLSAgICBpZiAoZmly
c3RMZWFmICE9IGxhc3RMZWFmKSB7Ci0gICAgICAgIGlmIChmaXJzdExlYWYtPmlzTGluZUJyZWFr
KCkpCi0gICAgICAgICAgICBmaXJzdExlYWYgPSBmaXJzdExlYWYtPm5leHRMZWFmT25MaW5lSWdu
b3JpbmdMaW5lQnJlYWsoKTsKLSAgICAgICAgZWxzZSBpZiAobGFzdExlYWYtPmlzTGluZUJyZWFr
KCkpCi0gICAgICAgICAgICBsYXN0TGVhZiA9IGxhc3RMZWFmLT5wcmV2aW91c0xlYWZPbkxpbmVJ
Z25vcmluZ0xpbmVCcmVhaygpOwotICAgIH0KLQotICAgIGlmIChmaXJzdExlYWYgPT0gbGFzdExl
YWYgJiYgKCFvbmx5RWRpdGFibGVMZWF2ZXMgfHwgaXNFZGl0YWJsZUxlYWYoZmlyc3RMZWFmKSkp
Ci0gICAgICAgIHJldHVybiBmaXJzdExlYWY7Ci0KLSAgICAvLyBBdm9pZCByZXR1cm5pbmcgYSBs
aXN0IG1hcmtlciB3aGVuIHBvc3NpYmxlLgotICAgIGlmIChmaXJzdExlYWYgJiYgbGVmdFBvc2l0
aW9uIDw9IGZpcnN0TGVhZi0+bG9naWNhbExlZnQoKSAmJiAhZmlyc3RMZWFmLT5yZW5kZXJlcigp
LmlzTGlzdE1hcmtlcigpICYmICghb25seUVkaXRhYmxlTGVhdmVzIHx8IGlzRWRpdGFibGVMZWFm
KGZpcnN0TGVhZikpKQotICAgICAgICAvLyBUaGUgbGVmdFBvc2l0aW9uIGNvb3JkaW5hdGUgaXMg
bGVzcyBvciBlcXVhbCB0byBsZWZ0IGVkZ2Ugb2YgdGhlIGZpcnN0TGVhZi4KLSAgICAgICAgLy8g
UmV0dXJuIGl0LgotICAgICAgICByZXR1cm4gZmlyc3RMZWFmOwotCi0gICAgaWYgKGxhc3RMZWFm
ICYmIGxlZnRQb3NpdGlvbiA+PSBsYXN0TGVhZi0+bG9naWNhbFJpZ2h0KCkgJiYgIWxhc3RMZWFm
LT5yZW5kZXJlcigpLmlzTGlzdE1hcmtlcigpICYmICghb25seUVkaXRhYmxlTGVhdmVzIHx8IGlz
RWRpdGFibGVMZWFmKGxhc3RMZWFmKSkpCi0gICAgICAgIC8vIFRoZSBsZWZ0UG9zaXRpb24gY29v
cmRpbmF0ZSBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHJpZ2h0IGVkZ2Ugb2YgdGhlIGxhc3RMZWFm
LgotICAgICAgICAvLyBSZXR1cm4gaXQuCi0gICAgICAgIHJldHVybiBsYXN0TGVhZjsKLQotICAg
IElubGluZUJveCogY2xvc2VzdExlYWYgPSBudWxscHRyOwotICAgIGZvciAoSW5saW5lQm94KiBs
ZWFmID0gZmlyc3RMZWFmOyBsZWFmOyBsZWFmID0gbGVhZi0+bmV4dExlYWZPbkxpbmVJZ25vcmlu
Z0xpbmVCcmVhaygpKSB7Ci0gICAgICAgIGlmICghbGVhZi0+cmVuZGVyZXIoKS5pc0xpc3RNYXJr
ZXIoKSAmJiAoIW9ubHlFZGl0YWJsZUxlYXZlcyB8fCBpc0VkaXRhYmxlTGVhZihsZWFmKSkpIHsK
LSAgICAgICAgICAgIGNsb3Nlc3RMZWFmID0gbGVhZjsKLSAgICAgICAgICAgIGlmIChsZWZ0UG9z
aXRpb24gPCBsZWFmLT5sb2dpY2FsUmlnaHQoKSkKLSAgICAgICAgICAgICAgICAvLyBUaGUgeCBj
b29yZGluYXRlIGlzIGxlc3MgdGhhbiB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgYm94LgotICAgICAg
ICAgICAgICAgIC8vIFJldHVybiBpdC4KLSAgICAgICAgICAgICAgICByZXR1cm4gbGVhZjsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBjbG9zZXN0TGVhZiA/IGNsb3Nlc3RMZWFmIDog
bGFzdExlYWY7Ci19Ci0KIEJpZGlTdGF0dXMgUm9vdElubGluZUJveDo6bGluZUJyZWFrQmlkaVN0
YXR1cygpIGNvbnN0CiB7IAogICAgIHJldHVybiB7IHN0YXRpY19jYXN0PFVDaGFyRGlyZWN0aW9u
PihtX2xpbmVCcmVha0JpZGlTdGF0dXNFb3IpLCBzdGF0aWNfY2FzdDxVQ2hhckRpcmVjdGlvbj4o
bV9saW5lQnJlYWtCaWRpU3RhdHVzTGFzdFN0cm9uZyksIHN0YXRpY19jYXN0PFVDaGFyRGlyZWN0
aW9uPihtX2xpbmVCcmVha0JpZGlTdGF0dXNMYXN0KSwgbV9saW5lQnJlYWtDb250ZXh0LmNvcHlS
ZWYoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKaW5kZXggMDIw
MWRjZTdlYzI3Li40MWY4ZDQwOWUyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Sb290SW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJ
bmxpbmVCb3guaApAQCAtMTM2LDkgKzEzNiw2IEBAIHB1YmxpYzoKIAogICAgIEludFJlY3QgY29t
cHV0ZUNhcmV0UmVjdChmbG9hdCBsb2dpY2FsTGVmdFBvc2l0aW9uLCB1bnNpZ25lZCBjYXJldFdp
ZHRoLCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUpIGNvbnN0OwogCi0gICAgSW5s
aW5lQm94KiBjbG9zZXN0TGVhZkNoaWxkRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmLCBib29sIG9u
bHlFZGl0YWJsZUxlYXZlcyk7Ci0gICAgSW5saW5lQm94KiBjbG9zZXN0TGVhZkNoaWxkRm9yTG9n
aWNhbExlZnRQb3NpdGlvbihpbnQsIGJvb2wgb25seUVkaXRhYmxlTGVhdmVzID0gZmFsc2UpOwot
CiAgICAgdXNpbmcgQ2xlYW5MaW5lRmxvYXRMaXN0ID0gVmVjdG9yPFdlYWtQdHI8UmVuZGVyQm94
Pj47CiAgICAgdm9pZCBhcHBlbmRGbG9hdChSZW5kZXJCb3gmIGZsb2F0aW5nQm94KQogICAgIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>