<?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>168838</bug_id>
          
          <creation_ts>2017-02-24 12:15:44 -0800</creation_ts>
          <short_desc>Simple line layout: Re-adjust paginated lines when block height changes.</short_desc>
          <delta_ts>2017-02-24 18:17:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>hyatt</cc>
    
    <cc>koivisto</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>1280821</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-02-24 12:15:44 -0800</bug_when>
    <thetext>In certain cases, when the estimated height is wrong the block re-runs layout on the inline children.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280822</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-02-24 12:16:33 -0800</bug_when>
    <thetext>&lt;rdar://problem/30701233&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280827</commentid>
    <comment_count>2</comment_count>
      <attachid>302679</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-02-24 12:35:09 -0800</bug_when>
    <thetext>Created attachment 302679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280961</commentid>
    <comment_count>3</comment_count>
      <attachid>302679</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-24 18:16:50 -0800</bug_when>
    <thetext>Comment on attachment 302679
Patch

Clearing flags on attachment: 302679

Committed r212986: &lt;http://trac.webkit.org/changeset/212986&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1280962</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-24 18:17:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302679</attachid>
            <date>2017-02-24 12:35:09 -0800</date>
            <delta_ts>2017-02-24 18:16:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168838-20170224123219.patch</filename>
            <type>text/plain</type>
            <size>28819</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2U1MjY3MzkyMmI3OTA4
NzE1ODhlZmFjM2ViNDNmMDk4ZTMzYzBkMS4uM2ZlNTMyMjI4MTdiNTRlODBmOGUzMGJhZjA2N2U0
MjE5MjBhYjI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE3LTAyLTI0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiBSZS1hZGp1c3QgcGFnaW5hdGVkIGxpbmVzIHdoZW4gYmxvY2sgaGVpZ2h0IGNoYW5nZXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg4MzgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwNzAxMjMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gdGhlIGVzdGltYXRlZCBibG9jayBoZWlnaHQg
aXMgd3JvbmcsIHdlIGlzc3VlIGFuIGFkZGl0aW9uYWwgbGF5b3V0IG9uIHRoZSBpbmxpbmUgY2hp
bGRyZW4KKyAgICAgICAgc28gdGhhdCB3ZSBnZXQgdGhlIHBhZ2luYXRpb24gcmlnaHQgKHRoaXMg
bGF5b3V0IGlzIHNldENoaWxkTmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKSBvbmx5KS4KKyAgICAg
ICAgU2luY2UgdGhlIGhlaWdodCBjaGFuZ2Ugb25seSBhZmZlY3RzIHRoZSBzdHJ1dHMgYW5kIHBh
Z2UgYnJlYWtzIChhbmQgYWdhaW4sIHRoZSByZWxheW91dENoaWxkcmVuIGZsYWcgaXMgZmFsc2Up
CisgICAgICAgIHdlIGRvbid0IG5lZWQgdG8gcmUtbGF5b3V0IHRoZSBjb250ZW50LCBidXQgaW5z
dGVhZCB3ZSBqdXN0IG5lZWQgdG8gcmUtYWRqdXN0IHRoZSBwYWdpbmF0aW9uIGZvciB0aGUgc2lt
cGxlIGxpbmVzLiAKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIG1vdmVzIHRoZSBwYWdpbmF0aW9u
IGxvZ2ljIHRvIFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmNwcC4KKworICAgICAgICBOb3Qg
ZW5hYmxlZCB5ZXQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91
dFNpbXBsZUxpbmVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3Bw
OgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNhblVzZUZvcldpdGhSZWFzb24pOgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNp
bXBsZUxpbmVMYXlvdXQ6OkxheW91dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBs
ZUxpbmVMYXlvdXQ6OkxheW91dDo6TGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxp
bmVMYXlvdXQ6OmNvbXB1dGVMaW5lVG9wQW5kQm90dG9tV2l0aE92ZXJmbG93KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNvbXB1dGVMaW5lQnJlYWtJbmRl
eCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpjb21wdXRl
T2Zmc2V0QWZ0ZXJMaW5lQnJlYWspOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
TGluZUxheW91dDo6c2V0UGFnZUJyZWFrRm9yTGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojp1cGRhdGVNaW5pbXVtUGFnZUhlaWdodCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjphZGp1c3RMaW5lUG9zaXRpb25z
Rm9yUGFnaW5hdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkxheW91dDo6c2V0
SXNQYWdpbmF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6TGF5b3V0
OjpzZXRMaW5lU3RydXRzKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFBh
Z2luYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6
OmNvbXB1dGVMaW5lVG9wQW5kQm90dG9tV2l0aE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6
OlNpbXBsZUxpbmVMYXlvdXQ6OmNvbXB1dGVMaW5lQnJlYWtJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpjb21wdXRlT2Zmc2V0QWZ0ZXJMaW5lQnJlYWspOgorICAg
ICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6c2V0UGFnZUJyZWFrRm9yTGluZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojp1cGRhdGVNaW5pbXVtUGFnZUhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjphZGp1c3RMaW5lUG9zaXRp
b25zRm9yUGFnaW5hdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRQ
YWdpbmF0aW9uLmg6IEFkZGVkLgorCiAyMDE3LTAyLTIyICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0OiBTZXQgdGhlIHBhZ2luYXRp
b24gc3RydXQgb24gdGhlIGZsb3cgd2hlbiB0aGUgZmlyc3QgbGluZSBkb2VzIG5vdCBmaXQgdGhl
IHBhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGFiZmYxNjRjMjE4ZDNlMmYxZTNiY2Y4Y2Iw
NzhhN2I2NGU2MGNjNDAuLjg5ODUzYzQ5M2NlNDM3NDk4ZThhOTY5Zjc5OTNhMGNkOWZhMDUwZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yNDgxLDYgKzI0ODEsNyBAQCBzZXQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCiAgICAgcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHMuY3BwCiAgICAgcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXRGdW5jdGlvbnMuY3BwCisgICAgcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRQYWdp
bmF0aW9uLmNwcAogICAgIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuY3BwCiAg
ICAgcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAKICAg
ICByZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM5NTUzZjg4M2RhMjdj
ZTM1YjVkNWU1OGU1NjU0MzZhNDM0ZDE5NzkuLmQ0OTJhMDNhZWExZDlhMmRhOGExZGUzMTU0NjNm
YmEyMmEyY2M5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTU2Nyw2ICs1NjcsOCBAQAogCQkwRkZENEQ2MDE4NjUxRkEzMDA1
MTJGNkUgLyogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZENEQ1RTE4NjUxRkEzMDA1MTJGNkUgLyog
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgKi87IH07CiAJCTBGRkQ0RDYxMTg2NTFGQTMw
MDUxMkY2RSAvKiBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZENEQ1RjE4NjUxRkEzMDA1MTJGNkUgLyog
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTEwRkIwODRCMTRFMTVDN0UwMEEzREI5OCAvKiBQdWJsaWNV
UkxNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxMEZCMDg0QTE0RTE1QzdFMDBBM0RCOTggLyogUHVibGljVVJMTWFuYWdlci5oICovOyB9Owor
CQkxMTJCMzREMjFFNjBCOEE3MDBCQjMxMEEgLyogU2ltcGxlTGluZUxheW91dFBhZ2luYXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTEyQjM0
RDAxRTYwQjhBNzAwQkIzMTBBIC8qIFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmNwcCAqLzsg
fTsKKwkJMTEyQjM0RDUxRTYwQjk4MzAwQkIzMTBBIC8qIFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTJC
MzRENDFFNjBCOTgzMDBCQjMxMEEgLyogU2ltcGxlTGluZUxheW91dFBhZ2luYXRpb24uaCAqLzsg
fTsKIAkJMTIwREUzRUQxQzg2Q0EzRTAwQjZENEREIC8qIFdlYkFuaW1hdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMjBERTNFQTFDODAxNjFD
MDBCNkQ0REQgLyogV2ViQW5pbWF0aW9uLmNwcCAqLzsgfTsKIAkJMTIwREUzRjExQzg2Q0NDNjAw
QjZENEREIC8qIEFuaW1hdGlvbkVmZmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxMjBERTNFRTFDODZDQ0JEMDBCNkQ0REQgLyogQW5pbWF0aW9u
RWZmZWN0LmNwcCAqLzsgfTsKIAkJMTIwREUzRjgxQzg3QzVBODAwQjZENEREIC8qIEpTV2ViQW5p
bWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
MjBERTNGNTFDODdDNThFMDBCNkQ0REQgLyogSlNXZWJBbmltYXRpb24uaCAqLzsgfTsKQEAgLTc2
ODQsNiArNzY4Niw4IEBACiAJCTBGRkQ0RDVFMTg2NTFGQTMwMDUxMkY2RSAvKiBBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkZENEQ1RjE4NjUxRkEzMDA1MTJGNkUgLyogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTEwRkIwODRBMTRFMTVDN0Uw
MEEzREI5OCAvKiBQdWJsaWNVUkxNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFB1YmxpY1VSTE1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MTEyQjM0RDAxRTYwQjhBNzAwQkIzMTBBIC8qIFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXRQ
YWdpbmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTEyQjM0RDQxRTYw
Qjk4MzAwQkIzMTBBIC8qIFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTEyMERFM0VBMUM4MDE2MUMwMEI2RDRERCAvKiBXZWJB
bmltYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQW5p
bWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTIwREUzRUIxQzgwMTYx
QzAwQjZENEREIC8qIFdlYkFuaW1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJBbmltYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTIwREUz
RUMxQzgwMTYxQzAwQjZENEREIC8qIFdlYkFuaW1hdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV2ViQW5pbWF0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0
MzM3LDYgKzI0MzQxLDggQEAKIAkJCQk1ODVENkUwMjFBMUE3OTJFMDBGQTRGMTIgLyogU2ltcGxl
TGluZUxheW91dEZsb3dDb250ZW50cy5oICovLAogCQkJCUU0RTlCMTFBMTgxNDU2OTIwMDNBQ0NE
RiAvKiBTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcCAqLywKIAkJCQlFNEU5QjExQzE4MTQ1
NjlDMDAzQUNDREYgLyogU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oICovLAorCQkJCTExMkIz
NEQ0MUU2MEI5ODMwMEJCMzEwQSAvKiBTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlvbi5oICovLAor
CQkJCTExMkIzNEQwMUU2MEI4QTcwMEJCMzEwQSAvKiBTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlv
bi5jcHAgKi8sCiAJCQkJNTg1RDZERkIxQTE1MzU1NjAwRkE0RjEyIC8qIFNpbXBsZUxpbmVMYXlv
dXRSZXNvbHZlci5jcHAgKi8sCiAJCQkJRTRFOUIxMTgxODEwOTE2RjAwM0FDQ0RGIC8qIFNpbXBs
ZUxpbmVMYXlvdXRSZXNvbHZlci5oICovLAogCQkJCTU4MkNCMDU0MUE3OEEyQjIwMEFGRkNDNCAv
KiBTaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwICovLApAQCAtMjgwMTks
NiArMjgwMjUsNyBAQAogCQkJCTkzMUNCRDExMTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdT
dGF0ZVRyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjYyRjI2MTREQUZFQTEwMDQxNTU2QyAv
KiBTY3JvbGxpbmdUaHJlYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUFEREE0MTREQjQwOUYw
MEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkxMTJCMzRENTFF
NjBCOTgzMDBCQjMxMEEgLyogU2ltcGxlTGluZUxheW91dFBhZ2luYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzQzM4QzAzMTY0NDczREQwMDA5MUVCMiAvKiBTY3JvbGxpbmdUcmVlRml4ZWRO
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBM0U4ODE5MUIzQkQ3MDAwRjFCNTUgLyogU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDNEU0
MTExODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1Mu
aCBpbiBIZWFkZXJzICovLApAQCAtMjk1NTksNiArMjk1NjYsNyBAQAogCQkJCTk3NUNBMjhBMTMw
MzY1RjgwMEU5OUFEOSAvKiBDcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE3MkFGNkQx
ODBGMjRDNjAwRkJBREI5IC8qIENyeXB0b0FsZ29yaXRobS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFMTI1Rjg0MTE4MjQyNTNBMDBEODRDRDkgLyogQ3J5cHRvQWxnb3JpdGhtQUVTX0NCQy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkxMTJCMzREMjFFNjBCOEE3MDBCQjMxMEEgLyogU2ltcGxlTGlu
ZUxheW91dFBhZ2luYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyNUY4NDUxODI0MjVD
OTAwRDg0Q0Q5IC8qIENyeXB0b0FsZ29yaXRobUFFU19DQkNNYWMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTFGRTEzN0ExODREMjFCQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobUFFU19LVy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUZFMTM3RTE4NEQyNzAyMDA4OTJGMTMgLyogQ3J5cHRv
QWxnb3JpdGhtQUVTX0tXTWFjLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA1MTRhNTc5ZTI3NzZkMzU3OTM1YWM1
YmMxMmQxZWU1ODU0MmUzMGQ2Li41YWM3YTU0MzNmZThkNGQyMzFmOGJlZWNkOWFiMWYzODRkYzg5
MGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApA
QCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgogI2luY2x1ZGUgIlNpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaCIKKyNpbmNsdWRl
ICJTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlvbi5oIgogI2luY2x1ZGUgIlZlcnRpY2FsUG9zaXRp
b25DYWNoZS5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogCkBAIC0zNjcxLDYgKzM2
NzIsMTAgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dFNpbXBsZUxpbmVzKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcmVwYWkKICAgICAgICAgZGVsZXRlTGluZUJveGVz
QmVmb3JlU2ltcGxlTGluZUxheW91dCgpOwogICAgICAgICBtX3NpbXBsZUxpbmVMYXlvdXQgPSBT
aW1wbGVMaW5lTGF5b3V0OjpjcmVhdGUoKnRoaXMpOwogICAgIH0KKyAgICBpZiAodmlldygpLmxh
eW91dFN0YXRlKCkgJiYgdmlldygpLmxheW91dFN0YXRlKCktPmlzUGFnaW5hdGVkKCkpIHsKKyAg
ICAgICAgbV9zaW1wbGVMaW5lTGF5b3V0LT5zZXRJc1BhZ2luYXRlZCgpOworICAgICAgICBTaW1w
bGVMaW5lTGF5b3V0OjphZGp1c3RMaW5lUG9zaXRpb25zRm9yUGFnaW5hdGlvbigqbV9zaW1wbGVM
aW5lTGF5b3V0LCAqdGhpcyk7CisgICAgfQogICAgIGZvciAoYXV0byYgcmVuZGVyZXIgOiBjaGls
ZHJlbk9mVHlwZTxSZW5kZXJPYmplY3Q+KCp0aGlzKSkKICAgICAgICAgcmVuZGVyZXIuY2xlYXJO
ZWVkc0xheW91dCgpOwogICAgIEFTU0VSVCghbV9saW5lQm94ZXMuZmlyc3RMaW5lQm94KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbEluT25lLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAKaW5kZXgg
MDZhMjYzNWNiZThjZTdiMGJlMjc4MjI4ZTdiZGIxMDkzNzgxMTA4OC4uMjZmZGU1ZWUxMjE1Nzdl
OTE4ZWNjNDJkZDI4ODJiZTE5ZmYzNTdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCkBAIC0xNDQsNiArMTQ0LDcgQEAKICNpbmNsdWRlICJT
aW1wbGVMaW5lTGF5b3V0LmNwcCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRl
bnRzLmNwcCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcCIKKyNpbmNs
dWRlICJTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlvbi5jcHAiCiAjaW5jbHVkZSAiU2ltcGxlTGlu
ZUxheW91dFJlc29sdmVyLmNwcCIKICNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0VGV4dEZyYWdt
ZW50SXRlcmF0b3IuY3BwIgogI2luY2x1ZGUgIlRleHREZWNvcmF0aW9uUGFpbnRlci5jcHAiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKaW5kZXggZjM5
MGIzNzk4ZTIxNDYxZTdhMzQ1YWEyZGRhYmFmY2NkYWQyYjBjZi4uZWE0MjI2MjBjZTdlMWI0MWFj
ZThiYTQyNTRmY2QxMWFkNDBmNzM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0LmNwcApAQCAtOTA3LDEyMSArOTA3LDYgQEAgc3RhdGljIHZvaWQgY2xv
c2VMaW5lRW5kaW5nQW5kQWRqdXN0UnVucyhMaW5lU3RhdGUmIGxpbmUsIExheW91dDo6UnVuVmVj
dG9yJiBydW4KICAgICArK2xpbmVDb3VudDsKIH0KIAotc3RydWN0IFBhZ2luYXRlZExpbmUgewot
ICAgIExheW91dFVuaXQgdG9wOwotICAgIExheW91dFVuaXQgYm90dG9tOwotICAgIExheW91dFVu
aXQgaGVpZ2h0OyAvLyBTYW1lIHZhbHVlIGZvciBlYWNoIGxpbmVzIGF0bS4KLX07Ci11c2luZyBQ
YWdpbmF0ZWRMaW5lcyA9IFZlY3RvcjxQYWdpbmF0ZWRMaW5lLCAyMD47Ci0KLXN0YXRpYyBQYWdp
bmF0ZWRMaW5lIGNvbXB1dGVMaW5lVG9wQW5kQm90dG9tV2l0aE92ZXJmbG93KGNvbnN0IFJlbmRl
ckJsb2NrRmxvdyYgZmxvdywgdW5zaWduZWQgbGluZUluZGV4LCBMYXlvdXQ6OlNpbXBsZUxpbmVT
dHJ1dHMmIHN0cnV0cykKLXsKLSAgICAvLyBGSVhNRTogQWRkIHZpc3VhbE92ZXJmbG93Rm9yRGVj
b3JhdGlvbnMuCi0gICAgYXV0byYgZm9udE1ldHJpY3MgPSBmbG93LnN0eWxlKCkuZm9udENhc2Nh
ZGUoKS5mb250TWV0cmljcygpOwotICAgIGF1dG8gYXNjZW50ID0gZm9udE1ldHJpY3MuZmxvYXRB
c2NlbnQoKTsKLSAgICBhdXRvIGRlc2NlbnQgPSBmb250TWV0cmljcy5mbG9hdERlc2NlbnQoKTsK
LSAgICBhdXRvIGxpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0RnJvbUZsb3coZmxvdyk7Ci0gICAgTGF5
b3V0VW5pdCBvZmZzZXQgPSBmbG93LmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKTsKLSAgICBmb3Ig
KGF1dG8mIHN0cnV0IDogc3RydXRzKSB7Ci0gICAgICAgIGlmIChzdHJ1dC5saW5lQnJlYWsgPiBs
aW5lSW5kZXgpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgb2Zmc2V0ICs9IHN0cnV0Lm9m
ZnNldDsKLSAgICB9Ci0gICAgaWYgKGFzY2VudCArIGRlc2NlbnQgPD0gbGluZUhlaWdodCkgewot
ICAgICAgICBhdXRvIHRvcFBvc2l0aW9uID0gbGluZUluZGV4ICogbGluZUhlaWdodCArIG9mZnNl
dDsKLSAgICAgICAgcmV0dXJuIHsgdG9wUG9zaXRpb24sIHRvcFBvc2l0aW9uICsgbGluZUhlaWdo
dCwgbGluZUhlaWdodCB9OwotICAgIH0KLSAgICBhdXRvIGJhc2VsaW5lID0gYmFzZWxpbmVGcm9t
RmxvdyhmbG93KTsKLSAgICBhdXRvIHRvcFBvc2l0aW9uID0gbGluZUluZGV4ICogbGluZUhlaWdo
dCArIG9mZnNldCArIGJhc2VsaW5lIC0gYXNjZW50OwotICAgIGF1dG8gYm90dG9tUG9zaXRpb24g
PSB0b3BQb3NpdGlvbiArIGFzY2VudCArIGRlc2NlbnQ7Ci0gICAgcmV0dXJuIHsgdG9wUG9zaXRp
b24sIGJvdHRvbVBvc2l0aW9uLCBib3R0b21Qb3NpdGlvbiAtIHRvcFBvc2l0aW9uIH07Ci19Ci0K
LXN0YXRpYyB1bnNpZ25lZCBjb21wdXRlTGluZUJyZWFrSW5kZXgodW5zaWduZWQgYnJlYWtDYW5k
aWRhdGUsIHVuc2lnbmVkIGxpbmVDb3VudCwgdW5zaWduZWQgd2lkb3dzLCBjb25zdCBMYXlvdXQ6
OlNpbXBsZUxpbmVTdHJ1dHMmIHN0cnV0cykKLXsKLSAgICAvLyBGaXJzdCBsaW5lIGRvZXMgbm90
IGZpdCB0aGUgY3VycmVudCBwYWdlLgotICAgIGlmICghYnJlYWtDYW5kaWRhdGUpCi0gICAgICAg
IHJldHVybiBicmVha0NhbmRpZGF0ZTsKLSAgICAKLSAgICBhdXRvIHJlbWFpbmluZ0xpbmVDb3Vu
dCA9IGxpbmVDb3VudCAtIGJyZWFrQ2FuZGlkYXRlOwotICAgIGlmICh3aWRvd3MgPD0gcmVtYWlu
aW5nTGluZUNvdW50KQotICAgICAgICByZXR1cm4gYnJlYWtDYW5kaWRhdGU7Ci0gICAgCi0gICAg
Ly8gT25seSBicmVhayBhZnRlciB0aGUgZmlyc3QgbGluZSB3aXRoIHdpZG93cy4KLSAgICBhdXRv
IGxpbmVCcmVhayA9IHN0ZDo6bWF4PGludD4obGluZUNvdW50IC0gd2lkb3dzLCAxKTsKLSAgICAv
LyBCcmVhayBvbiBjdXJyZW50IHBhZ2Ugb25seS4KLSAgICBpZiAoc3RydXRzLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIGxpbmVCcmVhazsKLSAgICBBU1NFUlQoc3RydXRzLmxhc3QoKS5saW5l
QnJlYWsgKyAxIDwgbGluZUNvdW50KTsKLSAgICByZXR1cm4gc3RkOjptYXg8dW5zaWduZWQ+KHN0
cnV0cy5sYXN0KCkubGluZUJyZWFrICsgMSwgbGluZUJyZWFrKTsKLX0KLQotc3RhdGljIExheW91
dFVuaXQgY29tcHV0ZU9mZnNldEFmdGVyTGluZUJyZWFrKExheW91dFVuaXQgbGluZUJyZWFrUG9z
aXRpb24sIGJvb2wgaXNGaXJzdExpbmUsIGJvb2wgYXRUaGVUb3BPZkNvbHVtbk9yUGFnZSwgY29u
c3QgUmVuZGVyQmxvY2tGbG93JiBmbG93KQotewotICAgIC8vIE5vIG9mZnNldCBmb3IgdG9wIG9m
IHRoZSBwYWdlIGxpbmVzIHVubGVzcyB3aWRvd3MgcHVzaGVkIHRoZSBsaW5lIGJyZWFrLgotICAg
IExheW91dFVuaXQgb2Zmc2V0ID0gaXNGaXJzdExpbmUgPyBmbG93LmJvcmRlckFuZFBhZGRpbmdC
ZWZvcmUoKSA6IExheW91dFVuaXQoKTsKLSAgICBpZiAoYXRUaGVUb3BPZkNvbHVtbk9yUGFnZSkK
LSAgICAgICAgcmV0dXJuIG9mZnNldDsKLSAgICByZXR1cm4gb2Zmc2V0ICsgZmxvdy5wYWdlUmVt
YWluaW5nTG9naWNhbEhlaWdodEZvck9mZnNldChsaW5lQnJlYWtQb3NpdGlvbiwgUmVuZGVyQmxv
Y2tGbG93OjpFeGNsdWRlUGFnZUJvdW5kYXJ5KTsKLX0KLQotc3RhdGljIHZvaWQgc2V0UGFnZUJy
ZWFrRm9yTGluZSh1bnNpZ25lZCBsaW5lQnJlYWtJbmRleCwgUGFnaW5hdGVkTGluZXMmIGxpbmVz
LCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIExheW91dDo6U2ltcGxlTGluZVN0cnV0cyYgc3RydXRz
LAotICAgIGJvb2wgYXRUaGVUb3BPZkNvbHVtbk9yUGFnZSkKLXsKLSAgICBpZiAoIWxpbmVCcmVh
a0luZGV4KSB7Ci0gICAgICAgIC8vIFdoZW4gdGhlIGZpcnN0IGxpbmUgZG9lcyBub3QgZml0IHRo
ZSBjdXJyZW50IHBhZ2UsIGp1c3QgYWRkIGEgcGFnZSBicmVhayBpbiBmcm9udCBhbmQgc2V0IHRo
ZSBzdHJ1dCBvbiB0aGUgYmxvY2suCi0gICAgICAgIGF1dG8gbGluZSA9IGxpbmVzLmZpcnN0KCk7
Ci0gICAgICAgIGF1dG8gcmVtYWluaW5nTG9naWNhbEhlaWdodCA9IGZsb3cucGFnZVJlbWFpbmlu
Z0xvZ2ljYWxIZWlnaHRGb3JPZmZzZXQobGluZS50b3AsIFJlbmRlckJsb2NrRmxvdzo6RXhjbHVk
ZVBhZ2VCb3VuZGFyeSk7Ci0gICAgICAgIGZsb3cuc2V0UGFnZUJyZWFrKGxpbmUudG9wLCBsaW5l
LmhlaWdodCAtIHJlbWFpbmluZ0xvZ2ljYWxIZWlnaHQpOwotICAgICAgICBmbG93LnNldFBhZ2lu
YXRpb25TdHJ1dChyZW1haW5pbmdMb2dpY2FsSGVpZ2h0KTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBhdXRvIGJlZm9yZUxpbmVCcmVhayA9IGxpbmVzLmF0KGxpbmVCcmVha0luZGV4IC0g
MSk7Ci0gICAgYXV0byBzcGFjZVNob3J0YWdlID0gZmxvdy5wYWdlUmVtYWluaW5nTG9naWNhbEhl
aWdodEZvck9mZnNldChiZWZvcmVMaW5lQnJlYWsudG9wLCBSZW5kZXJCbG9ja0Zsb3c6OkV4Y2x1
ZGVQYWdlQm91bmRhcnkpIC0gYmVmb3JlTGluZUJyZWFrLmhlaWdodDsKLSAgICBmbG93LnNldFBh
Z2VCcmVhayhiZWZvcmVMaW5lQnJlYWsuYm90dG9tLCBzcGFjZVNob3J0YWdlKTsKLSAgICBzdHJ1
dHMuYXBwZW5kKHsgbGluZUJyZWFrSW5kZXgsIGNvbXB1dGVPZmZzZXRBZnRlckxpbmVCcmVhayhs
aW5lc1tsaW5lQnJlYWtJbmRleF0udG9wLCAhbGluZUJyZWFrSW5kZXgsIGF0VGhlVG9wT2ZDb2x1
bW5PclBhZ2UsIGZsb3cpIH0pOwotfQotCi1zdGF0aWMgdm9pZCB1cGRhdGVNaW5pbXVtUGFnZUhl
aWdodChSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIHVuc2lnbmVkIGxpbmVDb3VudCkKLXsKLSAgICBh
dXRvJiBzdHlsZSA9IGZsb3cuc3R5bGUoKTsKLSAgICBhdXRvIHdpZG93cyA9IHN0eWxlLmhhc0F1
dG9XaWRvd3MoKSA/IDEgOiBzdGQ6Om1heDxpbnQ+KHN0eWxlLndpZG93cygpLCAxKTsKLSAgICBh
dXRvIG9ycGhhbnMgPSBzdHlsZS5oYXNBdXRvT3JwaGFucygpID8gMSA6IHN0ZDo6bWF4PGludD4o
c3R5bGUub3JwaGFucygpLCAxKTsKLSAgICBhdXRvIG1pbmltdW1MaW5lQ291bnQgPSBzdGQ6Om1p
bjx1bnNpZ25lZD4oc3RkOjptYXgod2lkb3dzLCBvcnBoYW5zKSwgbGluZUNvdW50KTsKLSAgICBm
bG93LnVwZGF0ZU1pbmltdW1QYWdlSGVpZ2h0KDAsIG1pbmltdW1MaW5lQ291bnQgKiBsaW5lSGVp
Z2h0RnJvbUZsb3coZmxvdykpOwotfQotCi1zdGF0aWMgdm9pZCBhZGp1c3RMaW5lUG9zaXRpb25z
Rm9yUGFnaW5hdGlvbihMYXlvdXQ6OlJ1blZlY3RvciYgcnVucywgTGF5b3V0OjpTaW1wbGVMaW5l
U3RydXRzJiBzdHJ1dHMsCi0gICAgUmVuZGVyQmxvY2tGbG93JiBmbG93LCB1bnNpZ25lZCBsaW5l
Q291bnQpCi17Ci0gICAgdXBkYXRlTWluaW11bVBhZ2VIZWlnaHQoZmxvdywgbGluZUNvdW50KTsK
LSAgICAvLyBGaXJzdCBwYXNzIHdpdGggbm8gcGFnaW5hdGlvbiBvZmZzZXQ/Ci0gICAgaWYgKCFm
bG93LnBhZ2VMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KDApKQotICAgICAgICByZXR1cm47Ci0gICAg
dW5zaWduZWQgbGluZUluZGV4ID0gMDsKLSAgICBhdXRvIHdpZG93cyA9IGZsb3cuc3R5bGUoKS5o
YXNBdXRvV2lkb3dzKCkgPyAxIDogc3RkOjptYXg8aW50PihmbG93LnN0eWxlKCkud2lkb3dzKCks
IDEpOwotICAgIFBhZ2luYXRlZExpbmVzIGxpbmVzOwotICAgIGZvciAoYXV0byYgcnVuIDogcnVu
cykgewotICAgICAgICBpZiAoIXJ1bi5pc0VuZE9mTGluZSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgIGF1dG8gbGluZSA9IGNvbXB1dGVMaW5lVG9wQW5kQm90dG9tV2l0aE92ZXJm
bG93KGZsb3csIGxpbmVJbmRleCwgc3RydXRzKTsKLSAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUp
OwotICAgICAgICBhdXRvIHJlbWFpbmluZ0hlaWdodCA9IGZsb3cucGFnZVJlbWFpbmluZ0xvZ2lj
YWxIZWlnaHRGb3JPZmZzZXQobGluZS50b3AsIFJlbmRlckJsb2NrRmxvdzo6RXhjbHVkZVBhZ2VC
b3VuZGFyeSk7Ci0gICAgICAgIGF1dG8gYXRUaGVUb3BPZkNvbHVtbk9yUGFnZSA9IGZsb3cucGFn
ZUxvZ2ljYWxIZWlnaHRGb3JPZmZzZXQobGluZS50b3ApID09IHJlbWFpbmluZ0hlaWdodDsKLSAg
ICAgICAgaWYgKGxpbmUuaGVpZ2h0ID4gcmVtYWluaW5nSGVpZ2h0IHx8IChhdFRoZVRvcE9mQ29s
dW1uT3JQYWdlICYmIGxpbmVJbmRleCkpIHsKLSAgICAgICAgICAgIGF1dG8gbGluZUJyZWFrSW5k
ZXggPSBjb21wdXRlTGluZUJyZWFrSW5kZXgobGluZUluZGV4LCBsaW5lQ291bnQsIHdpZG93cywg
c3RydXRzKTsKLSAgICAgICAgICAgIC8vIEFyZSB3ZSBzdGlsbCBhdCB0aGUgdG9wIG9mIHRoZSBj
b2x1bW4vcGFnZT8KLSAgICAgICAgICAgIGF0VGhlVG9wT2ZDb2x1bW5PclBhZ2UgPSBhdFRoZVRv
cE9mQ29sdW1uT3JQYWdlID8gbGluZUluZGV4ID09IGxpbmVCcmVha0luZGV4IDogZmFsc2U7Ci0g
ICAgICAgICAgICBzZXRQYWdlQnJlYWtGb3JMaW5lKGxpbmVCcmVha0luZGV4LCBsaW5lcywgZmxv
dywgc3RydXRzLCBhdFRoZVRvcE9mQ29sdW1uT3JQYWdlKTsKLSAgICAgICAgICAgIC8vIFJlY29t
cHV0ZSBsaW5lIHBvc2l0aW9ucyB0aGF0IHdlIGFscmVhZHkgdmlzaXRlZCBidXQgd2luZG93IGJy
ZWFrIHB1c2hlZCB0aGVtIHRvIGEgbmV3IHBhZ2UuCi0gICAgICAgICAgICBmb3IgKGF1dG8gaSA9
IGxpbmVCcmVha0luZGV4OyBpIDwgbGluZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAg
bGluZXMuYXQoaSkgPSBjb21wdXRlTGluZVRvcEFuZEJvdHRvbVdpdGhPdmVyZmxvdyhmbG93LCBp
LCBzdHJ1dHMpOwotICAgICAgICB9Ci0gICAgICAgICsrbGluZUluZGV4OwotICAgIH0KLX0KLQog
c3RhdGljIHZvaWQgY3JlYXRlVGV4dFJ1bnMoTGF5b3V0OjpSdW5WZWN0b3ImIHJ1bnMsIFJlbmRl
ckJsb2NrRmxvdyYgZmxvdywgdW5zaWduZWQmIGxpbmVDb3VudCkKIHsKICAgICBMYXlvdXRVbml0
IGJvcmRlckFuZFBhZGRpbmdCZWZvcmUgPSBmbG93LmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKTsK
QEAgLTEwNDcsMjQgKzkzMiwxOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0PiBjcmVhdGUoUmVu
ZGVyQmxvY2tGbG93JiBmbG93KQogICAgIHVuc2lnbmVkIGxpbmVDb3VudCA9IDA7CiAgICAgTGF5
b3V0OjpSdW5WZWN0b3IgcnVuczsKICAgICBjcmVhdGVUZXh0UnVucyhydW5zLCBmbG93LCBsaW5l
Q291bnQpOwotICAgIExheW91dDo6U2ltcGxlTGluZVN0cnV0cyBzdHJ1dHM7Ci0gICAgYXV0byBp
c1BhZ2luYXRlZCA9IGZsb3cudmlldygpLmxheW91dFN0YXRlKCkgJiYgZmxvdy52aWV3KCkubGF5
b3V0U3RhdGUoKS0+aXNQYWdpbmF0ZWQoKTsKLSAgICBpZiAoaXNQYWdpbmF0ZWQpCi0gICAgICAg
IGFkanVzdExpbmVQb3NpdGlvbnNGb3JQYWdpbmF0aW9uKHJ1bnMsIHN0cnV0cywgZmxvdywgbGlu
ZUNvdW50KTsKLSAgICByZXR1cm4gTGF5b3V0OjpjcmVhdGUocnVucywgc3RydXRzLCBsaW5lQ291
bnQsIGlzUGFnaW5hdGVkKTsKKyAgICByZXR1cm4gTGF5b3V0OjpjcmVhdGUocnVucywgbGluZUNv
dW50KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPExheW91dD4gTGF5b3V0OjpjcmVhdGUoY29uc3Qg
UnVuVmVjdG9yJiBydW5WZWN0b3IsIFNpbXBsZUxpbmVTdHJ1dHMmIHN0cnV0cywgdW5zaWduZWQg
bGluZUNvdW50LCBib29sIGlzUGFnaW5hdGVkKQorc3RkOjp1bmlxdWVfcHRyPExheW91dD4gTGF5
b3V0OjpjcmVhdGUoY29uc3QgUnVuVmVjdG9yJiBydW5WZWN0b3IsIHVuc2lnbmVkIGxpbmVDb3Vu
dCkKIHsKICAgICB2b2lkKiBzbG90ID0gV1RGOjpmYXN0TWFsbG9jKHNpemVvZihMYXlvdXQpICsg
c2l6ZW9mKFJ1bikgKiBydW5WZWN0b3Iuc2l6ZSgpKTsKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVf
cHRyPExheW91dD4obmV3IChOb3ROdWxsLCBzbG90KSBMYXlvdXQocnVuVmVjdG9yLCBzdHJ1dHMs
IGxpbmVDb3VudCwgaXNQYWdpbmF0ZWQpKTsKKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPExh
eW91dD4obmV3IChOb3ROdWxsLCBzbG90KSBMYXlvdXQocnVuVmVjdG9yLCBsaW5lQ291bnQpKTsK
IH0KIAotTGF5b3V0OjpMYXlvdXQoY29uc3QgUnVuVmVjdG9yJiBydW5WZWN0b3IsIFNpbXBsZUxp
bmVTdHJ1dHMmIHN0cnV0cywgdW5zaWduZWQgbGluZUNvdW50LCBib29sIGlzUGFnaW5hdGVkKQor
TGF5b3V0OjpMYXlvdXQoY29uc3QgUnVuVmVjdG9yJiBydW5WZWN0b3IsIHVuc2lnbmVkIGxpbmVD
b3VudCkKICAgICA6IG1fbGluZUNvdW50KGxpbmVDb3VudCkKICAgICAsIG1fcnVuQ291bnQocnVu
VmVjdG9yLnNpemUoKSkKLSAgICAsIG1faXNQYWdpbmF0ZWQoaXNQYWdpbmF0ZWQpCi0gICAgLCBt
X2xpbmVTdHJ1dHMoV1RGTW92ZShzdHJ1dHMpKQogewogICAgIG1lbWNweShtX3J1bnMsIHJ1blZl
Y3Rvci5kYXRhKCksIG1fcnVuQ291bnQgKiBzaXplb2YoUnVuKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuaAppbmRleCA1YmQ0MTAyNjVhOWIwOTFhNmVh
ZjYyMzMyZDhkMDZiNjI2N2I3ZmE4Li4zZWIwNDFiMTkyMTFjZGM0MDhmZjlkYjFjNGMyOWU1MWY4
NDQ2NmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmgK
QEAgLTc2LDIyICs3NiwyNCBAQCBjbGFzcyBMYXlvdXQgewogcHVibGljOgogICAgIHVzaW5nIFJ1
blZlY3RvciA9IFZlY3RvcjxSdW4sIDEwPjsKICAgICB1c2luZyBTaW1wbGVMaW5lU3RydXRzID0g
VmVjdG9yPFNpbXBsZUxpbmVTdHJ1dCwgND47Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxM
YXlvdXQ+IGNyZWF0ZShjb25zdCBSdW5WZWN0b3ImLCBTaW1wbGVMaW5lU3RydXRzJiwgdW5zaWdu
ZWQgbGluZUNvdW50LCBib29sIGlzUGFnaW5hdGVkKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPExheW91dD4gY3JlYXRlKGNvbnN0IFJ1blZlY3RvciYsIHVuc2lnbmVkIGxpbmVDb3VudCk7
CiAKICAgICB1bnNpZ25lZCBsaW5lQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2xpbmVDb3VudDsg
fQogCiAgICAgdW5zaWduZWQgcnVuQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3J1bkNvdW50OyB9
CiAgICAgY29uc3QgUnVuJiBydW5BdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX3J1bnNb
aV07IH0KIAorICAgIHZvaWQgc2V0SXNQYWdpbmF0ZWQoKSB7IG1faXNQYWdpbmF0ZWQgPSB0cnVl
OyB9CiAgICAgYm9vbCBpc1BhZ2luYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQYWdpbmF0ZWQ7
IH0KICAgICBib29sIGhhc0xpbmVTdHJ1dHMoKSBjb25zdCB7IHJldHVybiAhbV9saW5lU3RydXRz
LmlzRW1wdHkoKTsgfQorICAgIHZvaWQgc2V0TGluZVN0cnV0cyhTaW1wbGVMaW5lU3RydXRzJiYg
bGluZVN0cnV0cykgeyBtX2xpbmVTdHJ1dHMgPSBsaW5lU3RydXRzOyB9CiAgICAgY29uc3QgU2lt
cGxlTGluZVN0cnV0cyYgc3RydXRzKCkgY29uc3QgeyByZXR1cm4gbV9saW5lU3RydXRzOyB9CiBw
cml2YXRlOgotICAgIExheW91dChjb25zdCBSdW5WZWN0b3ImLCBTaW1wbGVMaW5lU3RydXRzJiwg
dW5zaWduZWQgbGluZUNvdW50LCBib29sIGlzUGFnaW5hdGVkKTsKKyAgICBMYXlvdXQoY29uc3Qg
UnVuVmVjdG9yJiwgdW5zaWduZWQgbGluZUNvdW50KTsKIAogICAgIHVuc2lnbmVkIG1fbGluZUNv
dW50OwogICAgIHVuc2lnbmVkIG1fcnVuQ291bnQ7Ci0gICAgYm9vbCBtX2lzUGFnaW5hdGVkOwor
ICAgIGJvb2wgbV9pc1BhZ2luYXRlZCB7IGZhbHNlIH07CiAgICAgU2ltcGxlTGluZVN0cnV0cyBt
X2xpbmVTdHJ1dHM7CiAgICAgUnVuIG1fcnVuc1swXTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFBhZ2luYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jZjViNjg0YjUwN2E5NmE4ZWM2MzJlYzk5ZWNmODU4MTcwMjE2ODY4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRQYWdpbmF0
aW9uLmNwcApAQCAtMCwwICsxLDE1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJTaW1wbGVMaW5lTGF5b3V0UGFnaW5hdGlvbi5oIgorCisjaW5jbHVkZSAi
UmVuZGVyQmxvY2tGbG93LmgiCisjaW5jbHVkZSAiU2ltcGxlTGluZUxheW91dC5oIgorI2luY2x1
ZGUgIlNpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
bmFtZXNwYWNlIFNpbXBsZUxpbmVMYXlvdXQgeworCitzdHJ1Y3QgUGFnaW5hdGVkTGluZSB7Cisg
ICAgTGF5b3V0VW5pdCB0b3A7CisgICAgTGF5b3V0VW5pdCBib3R0b207CisgICAgTGF5b3V0VW5p
dCBoZWlnaHQ7IC8vIFNhbWUgdmFsdWUgZm9yIGVhY2ggbGluZXMgYXRtLgorfTsKK3VzaW5nIFBh
Z2luYXRlZExpbmVzID0gVmVjdG9yPFBhZ2luYXRlZExpbmUsIDIwPjsKKworc3RhdGljIFBhZ2lu
YXRlZExpbmUgY29tcHV0ZUxpbmVUb3BBbmRCb3R0b21XaXRoT3ZlcmZsb3coY29uc3QgUmVuZGVy
QmxvY2tGbG93JiBmbG93LCB1bnNpZ25lZCBsaW5lSW5kZXgsIExheW91dDo6U2ltcGxlTGluZVN0
cnV0cyYgc3RydXRzKQoreworICAgIC8vIEZJWE1FOiBBZGQgdmlzdWFsT3ZlcmZsb3dGb3JEZWNv
cmF0aW9ucy4KKyAgICBhdXRvJiBmb250TWV0cmljcyA9IGZsb3cuc3R5bGUoKS5mb250Q2FzY2Fk
ZSgpLmZvbnRNZXRyaWNzKCk7CisgICAgYXV0byBhc2NlbnQgPSBmb250TWV0cmljcy5mbG9hdEFz
Y2VudCgpOworICAgIGF1dG8gZGVzY2VudCA9IGZvbnRNZXRyaWNzLmZsb2F0RGVzY2VudCgpOwor
ICAgIGF1dG8gbGluZUhlaWdodCA9IGxpbmVIZWlnaHRGcm9tRmxvdyhmbG93KTsKKyAgICBMYXlv
dXRVbml0IG9mZnNldCA9IGZsb3cuYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpOworICAgIGZvciAo
YXV0byYgc3RydXQgOiBzdHJ1dHMpIHsKKyAgICAgICAgaWYgKHN0cnV0LmxpbmVCcmVhayA+IGxp
bmVJbmRleCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBvZmZzZXQgKz0gc3RydXQub2Zm
c2V0OworICAgIH0KKyAgICBpZiAoYXNjZW50ICsgZGVzY2VudCA8PSBsaW5lSGVpZ2h0KSB7Cisg
ICAgICAgIGF1dG8gdG9wUG9zaXRpb24gPSBsaW5lSW5kZXggKiBsaW5lSGVpZ2h0ICsgb2Zmc2V0
OworICAgICAgICByZXR1cm4geyB0b3BQb3NpdGlvbiwgdG9wUG9zaXRpb24gKyBsaW5lSGVpZ2h0
LCBsaW5lSGVpZ2h0IH07CisgICAgfQorICAgIGF1dG8gYmFzZWxpbmUgPSBiYXNlbGluZUZyb21G
bG93KGZsb3cpOworICAgIGF1dG8gdG9wUG9zaXRpb24gPSBsaW5lSW5kZXggKiBsaW5lSGVpZ2h0
ICsgb2Zmc2V0ICsgYmFzZWxpbmUgLSBhc2NlbnQ7CisgICAgYXV0byBib3R0b21Qb3NpdGlvbiA9
IHRvcFBvc2l0aW9uICsgYXNjZW50ICsgZGVzY2VudDsKKyAgICByZXR1cm4geyB0b3BQb3NpdGlv
biwgYm90dG9tUG9zaXRpb24sIGJvdHRvbVBvc2l0aW9uIC0gdG9wUG9zaXRpb24gfTsKK30KKwor
c3RhdGljIHVuc2lnbmVkIGNvbXB1dGVMaW5lQnJlYWtJbmRleCh1bnNpZ25lZCBicmVha0NhbmRp
ZGF0ZSwgdW5zaWduZWQgbGluZUNvdW50LCB1bnNpZ25lZCB3aWRvd3MsIGNvbnN0IExheW91dDo6
U2ltcGxlTGluZVN0cnV0cyYgc3RydXRzKQoreworICAgIC8vIEZpcnN0IGxpbmUgZG9lcyBub3Qg
Zml0IHRoZSBjdXJyZW50IHBhZ2UuCisgICAgaWYgKCFicmVha0NhbmRpZGF0ZSkKKyAgICAgICAg
cmV0dXJuIGJyZWFrQ2FuZGlkYXRlOworICAgIAorICAgIGF1dG8gcmVtYWluaW5nTGluZUNvdW50
ID0gbGluZUNvdW50IC0gYnJlYWtDYW5kaWRhdGU7CisgICAgaWYgKHdpZG93cyA8PSByZW1haW5p
bmdMaW5lQ291bnQpCisgICAgICAgIHJldHVybiBicmVha0NhbmRpZGF0ZTsKKyAgICAKKyAgICAv
LyBPbmx5IGJyZWFrIGFmdGVyIHRoZSBmaXJzdCBsaW5lIHdpdGggd2lkb3dzLgorICAgIGF1dG8g
bGluZUJyZWFrID0gc3RkOjptYXg8aW50PihsaW5lQ291bnQgLSB3aWRvd3MsIDEpOworICAgIC8v
IEJyZWFrIG9uIGN1cnJlbnQgcGFnZSBvbmx5LgorICAgIGlmIChzdHJ1dHMuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gbGluZUJyZWFrOworICAgIEFTU0VSVChzdHJ1dHMubGFzdCgpLmxpbmVC
cmVhayArIDEgPCBsaW5lQ291bnQpOworICAgIHJldHVybiBzdGQ6Om1heDx1bnNpZ25lZD4oc3Ry
dXRzLmxhc3QoKS5saW5lQnJlYWsgKyAxLCBsaW5lQnJlYWspOworfQorCitzdGF0aWMgTGF5b3V0
VW5pdCBjb21wdXRlT2Zmc2V0QWZ0ZXJMaW5lQnJlYWsoTGF5b3V0VW5pdCBsaW5lQnJlYWtQb3Np
dGlvbiwgYm9vbCBpc0ZpcnN0TGluZSwgYm9vbCBhdFRoZVRvcE9mQ29sdW1uT3JQYWdlLCBjb25z
dCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCit7CisgICAgLy8gTm8gb2Zmc2V0IGZvciB0b3Agb2Yg
dGhlIHBhZ2UgbGluZXMgdW5sZXNzIHdpZG93cyBwdXNoZWQgdGhlIGxpbmUgYnJlYWsuCisgICAg
TGF5b3V0VW5pdCBvZmZzZXQgPSBpc0ZpcnN0TGluZSA/IGZsb3cuYm9yZGVyQW5kUGFkZGluZ0Jl
Zm9yZSgpIDogTGF5b3V0VW5pdCgpOworICAgIGlmIChhdFRoZVRvcE9mQ29sdW1uT3JQYWdlKQor
ICAgICAgICByZXR1cm4gb2Zmc2V0OworICAgIHJldHVybiBvZmZzZXQgKyBmbG93LnBhZ2VSZW1h
aW5pbmdMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KGxpbmVCcmVha1Bvc2l0aW9uLCBSZW5kZXJCbG9j
a0Zsb3c6OkV4Y2x1ZGVQYWdlQm91bmRhcnkpOworfQorCitzdGF0aWMgdm9pZCBzZXRQYWdlQnJl
YWtGb3JMaW5lKHVuc2lnbmVkIGxpbmVCcmVha0luZGV4LCBQYWdpbmF0ZWRMaW5lcyYgbGluZXMs
IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgTGF5b3V0OjpTaW1wbGVMaW5lU3RydXRzJiBzdHJ1dHMs
CisgICAgYm9vbCBhdFRoZVRvcE9mQ29sdW1uT3JQYWdlKQoreworICAgIGlmICghbGluZUJyZWFr
SW5kZXgpIHsKKyAgICAgICAgLy8gV2hlbiB0aGUgZmlyc3QgbGluZSBkb2VzIG5vdCBmaXQgdGhl
IGN1cnJlbnQgcGFnZSwganVzdCBhZGQgYSBwYWdlIGJyZWFrIGluIGZyb250IGFuZCBzZXQgdGhl
IHN0cnV0IG9uIHRoZSBibG9jay4KKyAgICAgICAgYXV0byBsaW5lID0gbGluZXMuZmlyc3QoKTsK
KyAgICAgICAgYXV0byByZW1haW5pbmdMb2dpY2FsSGVpZ2h0ID0gZmxvdy5wYWdlUmVtYWluaW5n
TG9naWNhbEhlaWdodEZvck9mZnNldChsaW5lLnRvcCwgUmVuZGVyQmxvY2tGbG93OjpFeGNsdWRl
UGFnZUJvdW5kYXJ5KTsKKyAgICAgICAgZmxvdy5zZXRQYWdlQnJlYWsobGluZS50b3AsIGxpbmUu
aGVpZ2h0IC0gcmVtYWluaW5nTG9naWNhbEhlaWdodCk7CisgICAgICAgIGZsb3cuc2V0UGFnaW5h
dGlvblN0cnV0KHJlbWFpbmluZ0xvZ2ljYWxIZWlnaHQpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIGF1dG8gYmVmb3JlTGluZUJyZWFrID0gbGluZXMuYXQobGluZUJyZWFrSW5kZXggLSAx
KTsKKyAgICBhdXRvIHNwYWNlU2hvcnRhZ2UgPSBmbG93LnBhZ2VSZW1haW5pbmdMb2dpY2FsSGVp
Z2h0Rm9yT2Zmc2V0KGJlZm9yZUxpbmVCcmVhay50b3AsIFJlbmRlckJsb2NrRmxvdzo6RXhjbHVk
ZVBhZ2VCb3VuZGFyeSkgLSBiZWZvcmVMaW5lQnJlYWsuaGVpZ2h0OworICAgIGZsb3cuc2V0UGFn
ZUJyZWFrKGJlZm9yZUxpbmVCcmVhay5ib3R0b20sIHNwYWNlU2hvcnRhZ2UpOworICAgIHN0cnV0
cy5hcHBlbmQoeyBsaW5lQnJlYWtJbmRleCwgY29tcHV0ZU9mZnNldEFmdGVyTGluZUJyZWFrKGxp
bmVzW2xpbmVCcmVha0luZGV4XS50b3AsICFsaW5lQnJlYWtJbmRleCwgYXRUaGVUb3BPZkNvbHVt
bk9yUGFnZSwgZmxvdykgfSk7Cit9CisKK3N0YXRpYyB2b2lkIHVwZGF0ZU1pbmltdW1QYWdlSGVp
Z2h0KFJlbmRlckJsb2NrRmxvdyYgZmxvdywgdW5zaWduZWQgbGluZUNvdW50KQoreworICAgIGF1
dG8mIHN0eWxlID0gZmxvdy5zdHlsZSgpOworICAgIGF1dG8gd2lkb3dzID0gc3R5bGUuaGFzQXV0
b1dpZG93cygpID8gMSA6IHN0ZDo6bWF4PGludD4oc3R5bGUud2lkb3dzKCksIDEpOworICAgIGF1
dG8gb3JwaGFucyA9IHN0eWxlLmhhc0F1dG9PcnBoYW5zKCkgPyAxIDogc3RkOjptYXg8aW50Pihz
dHlsZS5vcnBoYW5zKCksIDEpOworICAgIGF1dG8gbWluaW11bUxpbmVDb3VudCA9IHN0ZDo6bWlu
PHVuc2lnbmVkPihzdGQ6Om1heCh3aWRvd3MsIG9ycGhhbnMpLCBsaW5lQ291bnQpOworICAgIGZs
b3cudXBkYXRlTWluaW11bVBhZ2VIZWlnaHQoMCwgbWluaW11bUxpbmVDb3VudCAqIGxpbmVIZWln
aHRGcm9tRmxvdyhmbG93KSk7Cit9CisKK3ZvaWQgYWRqdXN0TGluZVBvc2l0aW9uc0ZvclBhZ2lu
YXRpb24oU2ltcGxlTGluZUxheW91dDo6TGF5b3V0JiBzaW1wbGVMaW5lcywgUmVuZGVyQmxvY2tG
bG93JiBmbG93KQoreworICAgIExheW91dDo6U2ltcGxlTGluZVN0cnV0cyBzdHJ1dHM7CisgICAg
YXV0byBsaW5lQ291bnQgPSBzaW1wbGVMaW5lcy5saW5lQ291bnQoKTsKKyAgICB1cGRhdGVNaW5p
bXVtUGFnZUhlaWdodChmbG93LCBsaW5lQ291bnQpOworICAgIC8vIEZpcnN0IHBhc3Mgd2l0aCBu
byBwYWdpbmF0aW9uIG9mZnNldD8KKyAgICBpZiAoIWZsb3cucGFnZUxvZ2ljYWxIZWlnaHRGb3JP
ZmZzZXQoMCkpCisgICAgICAgIHJldHVybjsKKyAgICB1bnNpZ25lZCBsaW5lSW5kZXggPSAwOwor
ICAgIGF1dG8gd2lkb3dzID0gZmxvdy5zdHlsZSgpLmhhc0F1dG9XaWRvd3MoKSA/IDEgOiBzdGQ6
Om1heDxpbnQ+KGZsb3cuc3R5bGUoKS53aWRvd3MoKSwgMSk7CisgICAgUGFnaW5hdGVkTGluZXMg
bGluZXM7CisgICAgZm9yICh1bnNpZ25lZCBydW5JbmRleCA9IDA7IHJ1bkluZGV4IDwgc2ltcGxl
TGluZXMucnVuQ291bnQoKTsgKytydW5JbmRleCkgeworICAgICAgICBhdXRvJiBydW4gPSBzaW1w
bGVMaW5lcy5ydW5BdChydW5JbmRleCk7CisgICAgICAgIGlmICghcnVuLmlzRW5kT2ZMaW5lKQor
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byBsaW5lID0gY29tcHV0ZUxpbmVU
b3BBbmRCb3R0b21XaXRoT3ZlcmZsb3coZmxvdywgbGluZUluZGV4LCBzdHJ1dHMpOworICAgICAg
ICBsaW5lcy5hcHBlbmQobGluZSk7CisgICAgICAgIGF1dG8gcmVtYWluaW5nSGVpZ2h0ID0gZmxv
dy5wYWdlUmVtYWluaW5nTG9naWNhbEhlaWdodEZvck9mZnNldChsaW5lLnRvcCwgUmVuZGVyQmxv
Y2tGbG93OjpFeGNsdWRlUGFnZUJvdW5kYXJ5KTsKKyAgICAgICAgYXV0byBhdFRoZVRvcE9mQ29s
dW1uT3JQYWdlID0gZmxvdy5wYWdlTG9naWNhbEhlaWdodEZvck9mZnNldChsaW5lLnRvcCkgPT0g
cmVtYWluaW5nSGVpZ2h0OworICAgICAgICBpZiAobGluZS5oZWlnaHQgPiByZW1haW5pbmdIZWln
aHQgfHwgKGF0VGhlVG9wT2ZDb2x1bW5PclBhZ2UgJiYgbGluZUluZGV4KSkgeworICAgICAgICAg
ICAgYXV0byBsaW5lQnJlYWtJbmRleCA9IGNvbXB1dGVMaW5lQnJlYWtJbmRleChsaW5lSW5kZXgs
IGxpbmVDb3VudCwgd2lkb3dzLCBzdHJ1dHMpOworICAgICAgICAgICAgLy8gQXJlIHdlIHN0aWxs
IGF0IHRoZSB0b3Agb2YgdGhlIGNvbHVtbi9wYWdlPworICAgICAgICAgICAgYXRUaGVUb3BPZkNv
bHVtbk9yUGFnZSA9IGF0VGhlVG9wT2ZDb2x1bW5PclBhZ2UgPyBsaW5lSW5kZXggPT0gbGluZUJy
ZWFrSW5kZXggOiBmYWxzZTsKKyAgICAgICAgICAgIHNldFBhZ2VCcmVha0ZvckxpbmUobGluZUJy
ZWFrSW5kZXgsIGxpbmVzLCBmbG93LCBzdHJ1dHMsIGF0VGhlVG9wT2ZDb2x1bW5PclBhZ2UpOwor
ICAgICAgICAgICAgLy8gUmVjb21wdXRlIGxpbmUgcG9zaXRpb25zIHRoYXQgd2UgYWxyZWFkeSB2
aXNpdGVkIGJ1dCB3aW5kb3cgYnJlYWsgcHVzaGVkIHRoZW0gdG8gYSBuZXcgcGFnZS4KKyAgICAg
ICAgICAgIGZvciAoYXV0byBpID0gbGluZUJyZWFrSW5kZXg7IGkgPCBsaW5lcy5zaXplKCk7ICsr
aSkKKyAgICAgICAgICAgICAgICBsaW5lcy5hdChpKSA9IGNvbXB1dGVMaW5lVG9wQW5kQm90dG9t
V2l0aE92ZXJmbG93KGZsb3csIGksIHN0cnV0cyk7CisgICAgICAgIH0KKyAgICAgICAgKytsaW5l
SW5kZXg7CisgICAgfQorICAgIHNpbXBsZUxpbmVzLnNldExpbmVTdHJ1dHMoV1RGTW92ZShzdHJ1
dHMpKTsKK30KKworfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dFBhZ2luYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDZhMTdjMGU1YzljN2RmMzU4
ZDMyNmZhMTcxNmUyZGEyMzdhZjBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRQYWdpbmF0aW9uLmgKQEAgLTAsMCArMSwzOSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFJlbmRlckJsb2NrRmxvdzsKKworbmFtZXNwYWNlIFNpbXBsZUxpbmVMYXlvdXQgeworCitjbGFz
cyBMYXlvdXQ7CisgICAgCit2b2lkIGFkanVzdExpbmVQb3NpdGlvbnNGb3JQYWdpbmF0aW9uKExh
eW91dCYsIFJlbmRlckJsb2NrRmxvdyYpOworCit9Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>