<?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>135209</bug_id>
          
          <creation_ts>2014-07-23 13:55:44 -0700</creation_ts>
          <short_desc>REGRESSION(r171455): completely broke selection highlight invalidation (Requested by thorton on #webkit).</short_desc>
          <delta_ts>2014-07-24 02:31:38 -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>New Bugs</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>
          
          <blocked>134303</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>abucur</cc>
    
    <cc>hyatt</cc>
    
    <cc>stavila</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1024311</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-23 13:55:44 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/171455 broke the build:
completely broke selection highlight invalidation (Requested by thorton on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024313</commentid>
    <comment_count>1</comment_count>
      <attachid>235373</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-23 13:56:09 -0700</bug_when>
    <thetext>Created attachment 235373
ROLLOUT of r171455

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024314</commentid>
    <comment_count>2</comment_count>
      <attachid>235373</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-23 14:00:01 -0700</bug_when>
    <thetext>Comment on attachment 235373
ROLLOUT of r171455

Clearing flags on attachment: 235373

Committed r171488: &lt;http://trac.webkit.org/changeset/171488&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024315</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-23 14:00:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024470</commentid>
    <comment_count>4</comment_count>
      <attachid>235417</attachid>
    <who name="Radu Stavila">stavila</who>
    <bug_when>2014-07-24 02:31:38 -0700</bug_when>
    <thetext>Created attachment 235417
EWS test</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235373</attachid>
            <date>2014-07-23 13:56:09 -0700</date>
            <delta_ts>2014-07-23 14:00:01 -0700</delta_ts>
            <desc>ROLLOUT of r171455</desc>
            <filename>bug-135209-20140723135554.patch</filename>
            <type>text/plain</type>
            <size>27266</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxNDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk1ZTg4ZTg5Mjc0Mjk5
MDkyNjFmODg5NmEwMTM4ZTZkMDI1NTg5ZS4uYzA3NDgzYWFjZTNhYmRkYWQ2NzkzNjczN2FkYmU3
NjMzZmJmZGM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTA3LTIzICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTcxNDU1LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM1MjA5CisKKyAgICAgICAgY29tcGxldGVseSBicm9rZSBzZWxlY3Rp
b24gaGlnaGxpZ2h0IGludmFsaWRhdGlvbiAoUmVxdWVzdGVkCisgICAgICAgIGJ5IHRob3J0b24g
b24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJS
RUdSRVNTSU9OIChyMTY5MTA1KTogQ3Jhc2ggaW4gc2VsZWN0aW9uIgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0MzAzCisgICAgICAgIGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE3MTQ1NQorCiAyMDE0LTA3LTIzICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ29tcGlsZSB3aW5k
b3ctaW5hY3RpdmUgYW5kIGZ1bGxzY3JlZW4gcHNldWRvY2xhc3NlcyBpbiBjc3Mgc2VsZWN0b3Jz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDVmNmM5ZmUwY2RiMjA3OTkxYjQyYWMxZDdmMmMwMmU1OGIwNTcyNTguLjE0ZDJlNGQz
NGRjODljNjRkZWI1YjNmZmYzNzI5ZWQzMzQ5ZDVkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ2Niw3ICs0NjYsNyBAQAog
CQkwRjA5MDg3RjE0NDRGREIyMDAwMjg5MTcgLyogU2Nyb2xsYmFyVGhlbWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFNzE0MTUxNDIxODlGQzAw
REIzM0JBIC8qIFNjcm9sbGJhclRoZW1lLmNwcCAqLzsgfTsKIAkJMEYwOTlEMDgxN0I5NjhBMTAw
RkY4NEI5IC8qIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjA5OUQwNjE3Qjk2OEExMDBGRjg0Qjkg
LyogV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJMEYwOTlEMDkxN0I5
NjhBMTAwRkY4NEI5IC8qIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwOTlEMDcxN0I5NjhBMTAwRkY4
NEI5IC8qIFdlYkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGMTFBNTRGMEYzOTIzMzEwMEMzNzg4NCAv
KiBSZW5kZXJTZWxlY3Rpb25JbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjExQTU0RTBGMzkyMzMxMDBDMzc4ODQgLyogUmVuZGVyU2VsZWN0aW9u
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGMTFBNTRGMEYzOTIzMzEwMEMzNzg4NCAvKiBSZW5kZXJTZWxlY3Rpb25JbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjExQTU0RTBGMzkyMzMx
MDBDMzc4ODQgLyogUmVuZGVyU2VsZWN0aW9uSW5mby5oICovOyB9OwogCQkwRjEzMTYzRTE2RUQw
Q0M4MDAzNUNDMDQgLyogUGxhdGZvcm1DQUZpbHRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTMxNjNEMTZFRDBDQzgwMDM1Q0MwNCAvKiBQbGF0
Zm9ybUNBRmlsdGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMTMxNjQwMTZFRDBDREUwMDM1Q0MwNCAvKiBQbGF0Zm9ybUNBRmlsdGVyc01h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTMx
NjNGMTZFRDBDREUwMDM1Q0MwNCAvKiBQbGF0Zm9ybUNBRmlsdGVyc01hYy5tbSAqLzsgfTsKIAkJ
MEYxNURBOEEwRjNBQUVFNzAwMDBDRTQ3IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1REE4OTBG
M0FBRUU3MDAwMENFNDcgLyogQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUuaCAqLzsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDAwMGJkMzkwMjRhYTM4
ZTVhMmM0MjMwODY0NDcxODMwMjhhMjkwZGYuLmJkYWFjZDBiMDQ1OGEyY2E0YWFmMDUwYWIxYjU2
NzU1OTY2ZDg2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApA
QCAtMTgyOCw4ICsxODI4LDggQEAgYm9vbCBSZW5kZXJCbG9jazo6aXNTZWxlY3Rpb25Sb290KCkg
Y29uc3QKICAgICAgICAgfHwgaXNSZW5kZXJGbG93VGhyZWFkKCkgfHwgc3R5bGUoKS5jb2x1bW5T
cGFuKCkgPT0gQ29sdW1uU3BhbkFsbCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCi0gICAg
aWYgKHZpZXcoKS5zZWxlY3Rpb25VbnNwbGl0U3RhcnQoKSkgewotICAgICAgICBOb2RlKiBzdGFy
dEVsZW1lbnQgPSB2aWV3KCkuc2VsZWN0aW9uVW5zcGxpdFN0YXJ0KCktPm5vZGUoKTsKKyAgICBp
ZiAodmlldygpLnNlbGVjdGlvblN0YXJ0KCkpIHsKKyAgICAgICAgTm9kZSogc3RhcnRFbGVtZW50
ID0gdmlldygpLnNlbGVjdGlvblN0YXJ0KCktPm5vZGUoKTsKICAgICAgICAgaWYgKHN0YXJ0RWxl
bWVudCAmJiBzdGFydEVsZW1lbnQtPnJvb3RFZGl0YWJsZUVsZW1lbnQoKSA9PSBlbGVtZW50KCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2VsZWN0aW9uSW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNlbGVjdGlvbkluZm8uaAppbmRleCA5M2FlN2Q5YzUwOGFkMWE5MjdhZTVk
NGUyM2EyMzhkMmNiZjhjODhjLi40NmU4ODZmMDY4ZDkyNGE3Y2RmZTY2MGMzYTJmMjEwYjVjOGVj
ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VsZWN0aW9u
SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZv
LmgKQEAgLTI1LDkgKzI1LDggQEAKICNpZm5kZWYgUmVuZGVyU2VsZWN0aW9uSW5mb19oCiAjZGVm
aW5lIFJlbmRlclNlbGVjdGlvbkluZm9faAogCi0jaW5jbHVkZSAiR2FwUmVjdHMuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKKyNpbmNsdWRlICJSZW5k
ZXJCb3guaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCBjY2QxNWE4NjVmMjM1
ZGQ2MjkyNWY1MjMyOGNkM2JkNGQyYzQwMjI1Li4wNDQ0NGEyN2ZhMjI1ODE5MDk0ZTA2ODQ2NDY0
ZTE5NzY4MDA4ZmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBA
IC05NiwxMCArOTYsMTAgQEAgc3RydWN0IFNlbGVjdGlvbkl0ZXJhdG9yIHsKIFJlbmRlclZpZXc6
OlJlbmRlclZpZXcoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHls
ZSkKICAgICA6IFJlbmRlckJsb2NrRmxvdyhkb2N1bWVudCwgV1RGOjptb3ZlKHN0eWxlKSkKICAg
ICAsIG1fZnJhbWVWaWV3KCpkb2N1bWVudC52aWV3KCkpCi0gICAgLCBtX3Vuc3BsaXRTZWxlY3Rp
b25TdGFydCgwKQotICAgICwgbV91bnNwbGl0U2VsZWN0aW9uRW5kKDApCi0gICAgLCBtX3Vuc3Bs
aXRTZWxlY3Rpb25TdGFydFBvcygtMSkKLSAgICAsIG1fdW5zcGxpdFNlbGVjdGlvbkVuZFBvcygt
MSkKKyAgICAsIG1fc2VsZWN0aW9uU3RhcnQoMCkKKyAgICAsIG1fc2VsZWN0aW9uRW5kKDApCisg
ICAgLCBtX3NlbGVjdGlvblN0YXJ0UG9zKC0xKQorICAgICwgbV9zZWxlY3Rpb25FbmRQb3MoLTEp
CiAgICAgLCBtX3JlbmRlcmVyQ291bnQoMCkKICAgICAsIG1fbWF4aW1hbE91dGxpbmVTaXplKDAp
CiAgICAgLCBtX2xhenlSZXBhaW50VGltZXIodGhpcywgJlJlbmRlclZpZXc6OmxhenlSZXBhaW50
VGltZXJGaXJlZCkKQEAgLTg0MiwzMCArODQyLDE5IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0U2Vs
ZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIGludCBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBl
CiAgICAgYm9vbCBjYXJldENoYW5nZWQgPSBtX3NlbGVjdGlvbldhc0NhcmV0ICE9IGZyYW1lKCku
c2VsZWN0aW9uKCkuaXNDYXJldCgpOwogICAgIG1fc2VsZWN0aW9uV2FzQ2FyZXQgPSBmcmFtZSgp
LnNlbGVjdGlvbigpLmlzQ2FyZXQoKTsKICAgICAvLyBKdXN0IHJldHVybiBpZiB0aGUgc2VsZWN0
aW9uIGhhc24ndCBjaGFuZ2VkLgotICAgIGlmIChtX3Vuc3BsaXRTZWxlY3Rpb25TdGFydCA9PSBz
dGFydCAmJiBtX3Vuc3BsaXRTZWxlY3Rpb25TdGFydFBvcyA9PSBzdGFydFBvcwotICAgICAgICAm
JiBtX3Vuc3BsaXRTZWxlY3Rpb25FbmQgPT0gZW5kICYmIG1fdW5zcGxpdFNlbGVjdGlvbkVuZFBv
cyA9PSBlbmRQb3MgJiYgIWNhcmV0Q2hhbmdlZCkgeworICAgIGlmIChtX3NlbGVjdGlvblN0YXJ0
ID09IHN0YXJ0ICYmIG1fc2VsZWN0aW9uU3RhcnRQb3MgPT0gc3RhcnRQb3MgJiYKKyAgICAgICAg
bV9zZWxlY3Rpb25FbmQgPT0gZW5kICYmIG1fc2VsZWN0aW9uRW5kUG9zID09IGVuZFBvcyAmJiAh
Y2FyZXRDaGFuZ2VkKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgLy8gU2V0IGdsb2Jh
bCBwb3NpdGlvbnMgZm9yIG5ldyBzZWxlY3Rpb24uCi0gICAgbV91bnNwbGl0U2VsZWN0aW9uU3Rh
cnQgPSBzdGFydDsKLSAgICBtX3Vuc3BsaXRTZWxlY3Rpb25TdGFydFBvcyA9IHN0YXJ0UG9zOwot
ICAgIG1fdW5zcGxpdFNlbGVjdGlvbkVuZCA9IGVuZDsKLSAgICBtX3Vuc3BsaXRTZWxlY3Rpb25F
bmRQb3MgPSBlbmRQb3M7CisgICAgbV9zZWxlY3Rpb25TdGFydCA9IHN0YXJ0OworICAgIG1fc2Vs
ZWN0aW9uU3RhcnRQb3MgPSBzdGFydFBvczsKKyAgICBtX3NlbGVjdGlvbkVuZCA9IGVuZDsKKyAg
ICBtX3NlbGVjdGlvbkVuZFBvcyA9IGVuZFBvczsKIAogICAgIC8vIElmIHRoZXJlIGlzIG5vIFJl
bmRlck5hbWVkRmxvd1RocmVhZHMgd2UgZm9sbG93IHRoZSByZWd1bGFyIHNlbGVjdGlvbi4KICAg
ICBpZiAoIWhhc1JlbmRlck5hbWVkRmxvd1RocmVhZHMoKSkgewotICAgICAgICBSZW5kZXJTdWJ0
cmVlc01hcCBzaW5nbGVTdWJ0cmVlTWFwOwotICAgICAgICBzaW5nbGVTdWJ0cmVlTWFwLnNldCh0
aGlzLCBTZWxlY3Rpb25TdWJ0cmVlUm9vdChzdGFydCwgc3RhcnRQb3MsIGVuZCwgZW5kUG9zKSk7
Ci0KLSAgICAgICAgLy8gU2luY2UgdGhlcmUgYXJlIG5vIG5hbWVkIGZsb3cgdGhyZWFkcywgdGhl
c2UgYXJlIHRoZSBmaW5hbCBzZWxlY3Rpb24gcGFyYW1ldGVycwotICAgICAgICAvLyBhbmQgdGhl
eSBtdXN0IGJlIGFwcGxpZWQgdG8gdGhlIFNlbGVjdGlvblN1YnRyZWVSb290IG1lbWJlcnMgd2l0
aGluIFJlbmRlclZpZXcuCi0gICAgICAgIHNldFNlbGVjdGlvblN0YXJ0KHN0YXJ0KTsKLSAgICAg
ICAgc2V0U2VsZWN0aW9uU3RhcnRQb3Moc3RhcnRQb3MpOwotICAgICAgICBzZXRTZWxlY3Rpb25F
bmQoZW5kKTsKLSAgICAgICAgc2V0U2VsZWN0aW9uRW5kUG9zKGVuZFBvcyk7Ci0KLSAgICAgICAg
dXBkYXRlU2VsZWN0aW9uRm9yU3VidHJlZXMoc2luZ2xlU3VidHJlZU1hcCwgYmxvY2tSZXBhaW50
TW9kZSk7CisgICAgICAgIHNldFN1YnRyZWVTZWxlY3Rpb24oKnRoaXMsIHN0YXJ0LCBzdGFydFBv
cywgZW5kLCBlbmRQb3MsIGJsb2NrUmVwYWludE1vZGUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC04NzUsNiArODY0LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24oUmVu
ZGVyT2JqZWN0KiBzdGFydCwgaW50IHN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIGUKIHZvaWQgUmVu
ZGVyVmlldzo6c3BsaXRTZWxlY3Rpb25CZXR3ZWVuU3VidHJlZXMoUmVuZGVyT2JqZWN0KiBzdGFy
dCwgaW50IHN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIGVuZCwgaW50IGVuZFBvcywgU2VsZWN0aW9u
UmVwYWludE1vZGUgYmxvY2tSZXBhaW50TW9kZSkKIHsKICAgICAvLyBDb21wdXRlIHRoZSB2aXNp
YmxlIHNlbGVjdGlvbiBlbmQgcG9pbnRzIGZvciBlYWNoIG9mIHRoZSBzdWJ0cmVlcy4KKyAgICB0
eXBlZGVmIEhhc2hNYXA8U2VsZWN0aW9uU3VidHJlZVJvb3QqLCBTZWxlY3Rpb25TdWJ0cmVlUm9v
dD4gUmVuZGVyU3VidHJlZXNNYXA7CiAgICAgUmVuZGVyU3VidHJlZXNNYXAgcmVuZGVyU3VidHJl
ZXNNYXA7CiAKICAgICBTZWxlY3Rpb25TdWJ0cmVlUm9vdCBpbml0aWFsU2VsZWN0aW9uOwpAQCAt
OTA4LDQ5ICs4OTgsMzMgQEAgdm9pZCBSZW5kZXJWaWV3OjpzcGxpdFNlbGVjdGlvbkJldHdlZW5T
dWJ0cmVlcyhSZW5kZXJPYmplY3QqIHN0YXJ0LCBpbnQgc3RhcnRQb3MKICAgICAgICAgICAgIHJl
bmRlclN1YnRyZWVzTWFwLnNldCgmcm9vdCwgc2VsZWN0aW9uRGF0YSk7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgCi0gICAgdXBkYXRlU2VsZWN0aW9uRm9yU3VidHJlZXMocmVuZGVyU3VidHJlZXNN
YXAsIGJsb2NrUmVwYWludE1vZGUpOwotfQogCi12b2lkIFJlbmRlclZpZXc6OnVwZGF0ZVNlbGVj
dGlvbkZvclN1YnRyZWVzKFJlbmRlclN1YnRyZWVzTWFwJiByZW5kZXJTdWJ0cmVlc01hcCwgU2Vs
ZWN0aW9uUmVwYWludE1vZGUgYmxvY2tSZXBhaW50TW9kZSkKLXsKLSAgICBTdWJ0cmVlT2xkU2Vs
ZWN0aW9uRGF0YU1hcCBvbGRTZWxlY3Rpb25EYXRhTWFwOwotICAgIGZvciAoYXV0byBpdCA9IHJl
bmRlclN1YnRyZWVzTWFwLmJlZ2luKCk7IGl0ICE9IHJlbmRlclN1YnRyZWVzTWFwLmVuZCgpOyAr
K2l0KSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxPbGRTZWxlY3Rpb25EYXRhPiBvbGRTZWxl
Y3Rpb25EYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxPbGRTZWxlY3Rpb25EYXRhPigpOwotICAgICAg
ICBjbGVhclN1YnRyZWVTZWxlY3Rpb24oKml0LT5rZXksIGJsb2NrUmVwYWludE1vZGUsICpvbGRT
ZWxlY3Rpb25EYXRhKTsKLSAgICAgICAgb2xkU2VsZWN0aW9uRGF0YU1hcC5zZXQoaXQtPmtleSwg
V1RGOjptb3ZlKG9sZFNlbGVjdGlvbkRhdGEpKTsKLQotICAgICAgICBTZWxlY3Rpb25TdWJ0cmVl
Um9vdCYgc3VidHJlZVNlbGVjdGlvbkRhdGEgPSBpdC0+dmFsdWU7CisgICAgZm9yIChSZW5kZXJT
dWJ0cmVlc01hcDo6aXRlcmF0b3IgaSA9IHJlbmRlclN1YnRyZWVzTWFwLmJlZ2luKCk7IGkgIT0g
cmVuZGVyU3VidHJlZXNNYXAuZW5kKCk7ICsraSkgeworICAgICAgICBTZWxlY3Rpb25TdWJ0cmVl
Um9vdCBzdWJ0cmVlU2VsZWN0aW9uRGF0YSA9IGktPnZhbHVlOwogICAgICAgICBzdWJ0cmVlU2Vs
ZWN0aW9uRGF0YS5hZGp1c3RGb3JWaXNpYmxlU2VsZWN0aW9uKGRvY3VtZW50KCkpOwotICAgICAg
ICAKLSAgICAgICAgU2VsZWN0aW9uU3VidHJlZVJvb3QmIHJvb3QgPSAqaXQtPmtleTsKLSAgICAg
ICAgcm9vdC5zZXRTZWxlY3Rpb25TdGFydChzdWJ0cmVlU2VsZWN0aW9uRGF0YS5zZWxlY3Rpb25T
dGFydCgpKTsKLSAgICAgICAgcm9vdC5zZXRTZWxlY3Rpb25TdGFydFBvcyhzdWJ0cmVlU2VsZWN0
aW9uRGF0YS5zZWxlY3Rpb25TdGFydFBvcygpKTsKLSAgICAgICAgcm9vdC5zZXRTZWxlY3Rpb25F
bmQoc3VidHJlZVNlbGVjdGlvbkRhdGEuc2VsZWN0aW9uRW5kKCkpOwotICAgICAgICByb290LnNl
dFNlbGVjdGlvbkVuZFBvcyhzdWJ0cmVlU2VsZWN0aW9uRGF0YS5zZWxlY3Rpb25FbmRQb3MoKSk7
Ci0gICAgfQotCi0gICAgLy8gVXBkYXRlIHNlbGVjdGlvbiBzdGF0dXMgZm9yIHRoZSBvYmplY3Rz
IGluc2lkZSB0aGUgc2VsZWN0aW9uIHN1YnRyZWVzLgotICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUg
ZG9uZSBhZnRlciB0aGUgcHJldmlvdXMgbG9vcCB1cGRhdGVkIHRoZSBzZWxlY3Rpb25TdGFydC9F
bmQKLSAgICAvLyBwYXJhbWV0ZXJzIG9mIGFsbCBzdWJ0cmVlcyBiZWNhdXNlIHdlJ3JlIGdvaW5n
IHRvIGJlIGNsaW1iaW5nIHVwIHRoZSBjb250YWluaW5nCi0gICAgLy8gYmxvY2sgY2hhaW4gYW5k
IHdlIG1pZ2h0IGVuZCB1cCBpbiBhIGRpZmZlcmVudCBzZWxlY3Rpb24gc3VidHJlZS4KLSAgICBm
b3IgKGF1dG8gaXQgPSByZW5kZXJTdWJ0cmVlc01hcC5iZWdpbigpOyBpdCAhPSByZW5kZXJTdWJ0
cmVlc01hcC5lbmQoKTsgKytpdCkgewotICAgICAgICBTZWxlY3Rpb25TdWJ0cmVlUm9vdCBzdWJ0
cmVlU2VsZWN0aW9uRGF0YSA9IGl0LT52YWx1ZTsKLSAgICAgICAgT2xkU2VsZWN0aW9uRGF0YSYg
b2xkU2VsZWN0aW9uRGF0YSA9ICpvbGRTZWxlY3Rpb25EYXRhTWFwLmdldChpdC0+a2V5KTsKLSAg
ICAgICAgYXBwbHlTdWJ0cmVlU2VsZWN0aW9uKCppdC0+a2V5LCBzdWJ0cmVlU2VsZWN0aW9uRGF0
YS5zZWxlY3Rpb25TdGFydCgpLCBzdWJ0cmVlU2VsZWN0aW9uRGF0YS5zZWxlY3Rpb25FbmQoKSwg
c3VidHJlZVNlbGVjdGlvbkRhdGEuc2VsZWN0aW9uRW5kUG9zKCksIGJsb2NrUmVwYWludE1vZGUs
IG9sZFNlbGVjdGlvbkRhdGEpOworICAgICAgICBzZXRTdWJ0cmVlU2VsZWN0aW9uKCppLT5rZXks
IHN1YnRyZWVTZWxlY3Rpb25EYXRhLnNlbGVjdGlvblN0YXJ0KCksIHN1YnRyZWVTZWxlY3Rpb25E
YXRhLnNlbGVjdGlvblN0YXJ0UG9zKCksCisgICAgICAgICAgICBzdWJ0cmVlU2VsZWN0aW9uRGF0
YS5zZWxlY3Rpb25FbmQoKSwgc3VidHJlZVNlbGVjdGlvbkRhdGEuc2VsZWN0aW9uRW5kUG9zKCks
IGJsb2NrUmVwYWludE1vZGUpOwogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJWaWV3OjpjbGVhclN1
YnRyZWVTZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmIHJvb3QsIFNlbGVjdGlv
blJlcGFpbnRNb2RlIGJsb2NrUmVwYWludE1vZGUsIE9sZFNlbGVjdGlvbkRhdGEmIG9sZFNlbGVj
dGlvbkRhdGEpCit2b2lkIFJlbmRlclZpZXc6OnNldFN1YnRyZWVTZWxlY3Rpb24oU2VsZWN0aW9u
U3VidHJlZVJvb3QmIHJvb3QsIFJlbmRlck9iamVjdCogc3RhcnQsIGludCBzdGFydFBvcywgUmVu
ZGVyT2JqZWN0KiBlbmQsIGludCBlbmRQb3MsIFNlbGVjdGlvblJlcGFpbnRNb2RlIGJsb2NrUmVw
YWludE1vZGUpCiB7CiAgICAgLy8gUmVjb3JkIHRoZSBvbGQgc2VsZWN0ZWQgb2JqZWN0cy4gIFRo
ZXNlIHdpbGwgYmUgdXNlZCBsYXRlcgogICAgIC8vIHdoZW4gd2UgY29tcGFyZSBhZ2FpbnN0IHRo
ZSBuZXcgc2VsZWN0ZWQgb2JqZWN0cy4KLSAgICBvbGRTZWxlY3Rpb25EYXRhLnNlbGVjdGlvblN0
YXJ0UG9zID0gcm9vdC5zZWxlY3Rpb25TdGFydFBvcygpOwotICAgIG9sZFNlbGVjdGlvbkRhdGEu
c2VsZWN0aW9uRW5kUG9zID0gcm9vdC5zZWxlY3Rpb25FbmRQb3MoKTsKLSAgICAKKyAgICBpbnQg
b2xkU3RhcnRQb3MgPSByb290LnNlbGVjdGlvblN0YXJ0UG9zKCk7CisgICAgaW50IG9sZEVuZFBv
cyA9IHJvb3Quc2VsZWN0aW9uRW5kUG9zKCk7CisKKyAgICAvLyBPYmplY3RzIGVhY2ggaGF2ZSBh
IHNpbmdsZSBzZWxlY3Rpb24gcmVjdCB0byBleGFtaW5lLgorICAgIHR5cGVkZWYgSGFzaE1hcDxS
ZW5kZXJPYmplY3QqLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU2VsZWN0aW9uSW5mbz4+IFNlbGVj
dGVkT2JqZWN0TWFwOworICAgIFNlbGVjdGVkT2JqZWN0TWFwIG9sZFNlbGVjdGVkT2JqZWN0czsK
KyAgICBTZWxlY3RlZE9iamVjdE1hcCBuZXdTZWxlY3RlZE9iamVjdHM7CisKICAgICAvLyBCbG9j
a3MgY29udGFpbiBzZWxlY3RlZCBvYmplY3RzIGFuZCBmaWxsIGdhcHMgYmV0d2VlbiB0aGVtLCBl
aXRoZXIgb24gdGhlIGxlZnQsIHJpZ2h0LCBvciBpbiBiZXR3ZWVuIGxpbmVzIGFuZCBibG9ja3Mu
CiAgICAgLy8gSW4gb3JkZXIgdG8gZ2V0IHRoZSByZXBhaW50IHJlY3QgcmlnaHQsIHdlIGhhdmUg
dG8gZXhhbWluZSBsZWZ0LCBtaWRkbGUsIGFuZCByaWdodCByZWN0cyBpbmRpdmlkdWFsbHksIHNp
bmNlIG90aGVyd2lzZQogICAgIC8vIHRoZSB1bmlvbiBvZiB0aG9zZSByZWN0cyBtaWdodCByZW1h
aW4gdGhlIHNhbWUgZXZlbiB3aGVuIGNoYW5nZXMgaGF2ZSBvY2N1cnJlZC4KKyAgICB0eXBlZGVm
IEhhc2hNYXA8UmVuZGVyQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2tTZWxlY3Rp
b25JbmZvPj4gU2VsZWN0ZWRCbG9ja01hcDsKKyAgICBTZWxlY3RlZEJsb2NrTWFwIG9sZFNlbGVj
dGVkQmxvY2tzOworICAgIFNlbGVjdGVkQmxvY2tNYXAgbmV3U2VsZWN0ZWRCbG9ja3M7CiAKICAg
ICBSZW5kZXJPYmplY3QqIG9zID0gcm9vdC5zZWxlY3Rpb25TdGFydCgpOwogICAgIFJlbmRlck9i
amVjdCogc3RvcCA9IHJlbmRlcmVyQWZ0ZXJQb3NpdGlvbihyb290LnNlbGVjdGlvbkVuZCgpLCBy
b290LnNlbGVjdGlvbkVuZFBvcygpKTsKQEAgLTk1OSwxMSArOTMzLDExIEBAIHZvaWQgUmVuZGVy
Vmlldzo6Y2xlYXJTdWJ0cmVlU2VsZWN0aW9uKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290JiBy
b290LCBTZWxlY3RpCiAgICAgICAgIGlmICgob3MtPmNhbkJlU2VsZWN0aW9uTGVhZigpIHx8IG9z
ID09IHJvb3Quc2VsZWN0aW9uU3RhcnQoKSB8fCBvcyA9PSByb290LnNlbGVjdGlvbkVuZCgpKQog
ICAgICAgICAgICAgJiYgb3MtPnNlbGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgewog
ICAgICAgICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBn
YXBzIGFuZCBtYXJnaW4gZ2Fwcy4gIFRoZXkgbXVzdCBiZSBleGFtaW5lZCBhcyB3ZWxsLgotICAg
ICAgICAgICAgb2xkU2VsZWN0aW9uRGF0YS5zZWxlY3RlZE9iamVjdHMuc2V0KG9zLCBzdGQ6Om1h
a2VfdW5pcXVlPFJlbmRlclNlbGVjdGlvbkluZm8+KG9zLCB0cnVlKSk7CisgICAgICAgICAgICBv
bGRTZWxlY3RlZE9iamVjdHMuc2V0KG9zLCBzdGQ6Om1ha2VfdW5pcXVlPFJlbmRlclNlbGVjdGlv
bkluZm8+KG9zLCB0cnVlKSk7CiAgICAgICAgICAgICBpZiAoYmxvY2tSZXBhaW50TW9kZSA9PSBS
ZXBhaW50TmV3WE9ST2xkKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGNiID0gb3Mt
PmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICAgICAgICAgIHdoaWxlIChjYiAmJiAhY2ItPmlz
UmVuZGVyVmlldygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJCbG9ja1NlbGVjdGlvbkluZm8+JiBibG9ja0luZm8gPSBvbGRTZWxlY3Rpb25EYXRhLnNlbGVj
dGVkQmxvY2tzLmFkZChjYiwgbnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPiYgYmxvY2tJ
bmZvID0gb2xkU2VsZWN0ZWRCbG9ja3MuYWRkKGNiLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja0luZm8pCiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgYmxvY2tJbmZvID0gc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+KGNiKTsKQEAgLTk3NSwxMyArOTQ5LDE3IEBA
IHZvaWQgUmVuZGVyVmlldzo6Y2xlYXJTdWJ0cmVlU2VsZWN0aW9uKGNvbnN0IFNlbGVjdGlvblN1
YnRyZWVSb290JiByb290LCBTZWxlY3RpCiAgICAgICAgIG9zID0gc2VsZWN0aW9uSXRlcmF0b3Iu
bmV4dCgpOwogICAgIH0KIAotICAgIGF1dG8gb2xkT2JqZWN0c0VuZCA9IG9sZFNlbGVjdGlvbkRh
dGEuc2VsZWN0ZWRPYmplY3RzLmVuZCgpOwotICAgIGZvciAoYXV0byBpID0gb2xkU2VsZWN0aW9u
RGF0YS5zZWxlY3RlZE9iamVjdHMuYmVnaW4oKTsgaSAhPSBvbGRPYmplY3RzRW5kOyArK2kpCisg
ICAgLy8gTm93IGNsZWFyIHRoZSBzZWxlY3Rpb24uCisgICAgU2VsZWN0ZWRPYmplY3RNYXA6Oml0
ZXJhdG9yIG9sZE9iamVjdHNFbmQgPSBvbGRTZWxlY3RlZE9iamVjdHMuZW5kKCk7CisgICAgZm9y
IChTZWxlY3RlZE9iamVjdE1hcDo6aXRlcmF0b3IgaSA9IG9sZFNlbGVjdGVkT2JqZWN0cy5iZWdp
bigpOyBpICE9IG9sZE9iamVjdHNFbmQ7ICsraSkKICAgICAgICAgaS0+a2V5LT5zZXRTZWxlY3Rp
b25TdGF0ZUlmTmVlZGVkKFNlbGVjdGlvbk5vbmUpOwotfQogCi12b2lkIFJlbmRlclZpZXc6OmFw
cGx5U3VidHJlZVNlbGVjdGlvbihTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwgUmVuZGVyT2Jq
ZWN0KiBzdGFydCwgUmVuZGVyT2JqZWN0KiBlbmQsIGludCBlbmRQb3MsIFNlbGVjdGlvblJlcGFp
bnRNb2RlIGJsb2NrUmVwYWludE1vZGUsIGNvbnN0IE9sZFNlbGVjdGlvbkRhdGEmIG9sZFNlbGVj
dGlvbkRhdGEpCi17CisgICAgLy8gc2V0IHNlbGVjdGlvbiBzdGFydCBhbmQgZW5kCisgICAgcm9v
dC5zZXRTZWxlY3Rpb25TdGFydChzdGFydCk7CisgICAgcm9vdC5zZXRTZWxlY3Rpb25TdGFydFBv
cyhzdGFydFBvcyk7CisgICAgcm9vdC5zZXRTZWxlY3Rpb25FbmQoZW5kKTsKKyAgICByb290LnNl
dFNlbGVjdGlvbkVuZFBvcyhlbmRQb3MpOworCiAgICAgLy8gVXBkYXRlIHRoZSBzZWxlY3Rpb24g
c3RhdHVzIG9mIGFsbCBvYmplY3RzIGJldHdlZW4gc2VsZWN0aW9uU3RhcnQgYW5kIHNlbGVjdGlv
bkVuZAogICAgIGlmIChzdGFydCAmJiBzdGFydCA9PSBlbmQpCiAgICAgICAgIHN0YXJ0LT5zZXRT
ZWxlY3Rpb25TdGF0ZUlmTmVlZGVkKFNlbGVjdGlvbkJvdGgpOwpAQCAtOTkzLDggKzk3MSw4IEBA
IHZvaWQgUmVuZGVyVmlldzo6YXBwbHlTdWJ0cmVlU2VsZWN0aW9uKFNlbGVjdGlvblN1YnRyZWVS
b290JiByb290LCBSZW5kZXJPYmplY3QqCiAgICAgfQogCiAgICAgUmVuZGVyT2JqZWN0KiBvID0g
c3RhcnQ7Ci0gICAgUmVuZGVyT2JqZWN0KiBzdG9wID0gcmVuZGVyZXJBZnRlclBvc2l0aW9uKGVu
ZCwgZW5kUG9zKTsKLSAgICBTZWxlY3Rpb25JdGVyYXRvciBzZWxlY3Rpb25JdGVyYXRvcihvKTsK
KyAgICBzdG9wID0gcmVuZGVyZXJBZnRlclBvc2l0aW9uKGVuZCwgZW5kUG9zKTsKKyAgICBzZWxl
Y3Rpb25JdGVyYXRvciA9IFNlbGVjdGlvbkl0ZXJhdG9yKG8pOwogICAgIAogICAgIHdoaWxlIChv
ICYmIG8gIT0gc3RvcCkgewogICAgICAgICBpZiAobyAhPSBzdGFydCAmJiBvICE9IGVuZCAmJiBv
LT5jYW5CZVNlbGVjdGlvbkxlYWYoKSkKQEAgLTEwMDcsOCArOTg1LDYgQEAgdm9pZCBSZW5kZXJW
aWV3OjphcHBseVN1YnRyZWVTZWxlY3Rpb24oU2VsZWN0aW9uU3VidHJlZVJvb3QmIHJvb3QsIFJl
bmRlck9iamVjdCoKIAogICAgIC8vIE5vdyB0aGF0IHRoZSBzZWxlY3Rpb24gc3RhdGUgaGFzIGJl
ZW4gdXBkYXRlZCBmb3IgdGhlIG5ldyBvYmplY3RzLCB3YWxrIHRoZW0gYWdhaW4gYW5kCiAgICAg
Ly8gcHV0IHRoZW0gaW4gdGhlIG5ldyBvYmplY3RzIGxpc3QuCi0gICAgU2VsZWN0ZWRPYmplY3RN
YXAgbmV3U2VsZWN0ZWRPYmplY3RzOwotICAgIFNlbGVjdGVkQmxvY2tNYXAgbmV3U2VsZWN0ZWRC
bG9ja3M7CiAgICAgbyA9IHN0YXJ0OwogICAgIHNlbGVjdGlvbkl0ZXJhdG9yID0gU2VsZWN0aW9u
SXRlcmF0b3Iobyk7CiAgICAgd2hpbGUgKG8gJiYgbyAhPSBzdG9wKSB7CkBAIC0xMDQzLDE0ICsx
MDE5LDEzIEBAIHZvaWQgUmVuZGVyVmlldzo6YXBwbHlTdWJ0cmVlU2VsZWN0aW9uKFNlbGVjdGlv
blN1YnRyZWVSb290JiByb290LCBSZW5kZXJPYmplY3QqCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIEhhdmUgYW55IG9mIHRoZSBvbGQgc2VsZWN0ZWQgb2JqZWN0cyBjaGFuZ2VkIGNvbXBhcmVk
IHRvIHRoZSBuZXcgc2VsZWN0aW9uPwotICAgIGF1dG8gb2xkT2JqZWN0c0VuZCA9IG9sZFNlbGVj
dGlvbkRhdGEuc2VsZWN0ZWRPYmplY3RzLmVuZCgpOwotICAgIGZvciAoYXV0byBpdCA9IG9sZFNl
bGVjdGlvbkRhdGEuc2VsZWN0ZWRPYmplY3RzLmJlZ2luKCk7IGl0ICE9IG9sZE9iamVjdHNFbmQ7
ICsraXQpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBvYmogPSBpdC0+a2V5OworICAgIGZvciAo
U2VsZWN0ZWRPYmplY3RNYXA6Oml0ZXJhdG9yIGkgPSBvbGRTZWxlY3RlZE9iamVjdHMuYmVnaW4o
KTsgaSAhPSBvbGRPYmplY3RzRW5kOyArK2kpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBvYmog
PSBpLT5rZXk7CiAgICAgICAgIFJlbmRlclNlbGVjdGlvbkluZm8qIG5ld0luZm8gPSBuZXdTZWxl
Y3RlZE9iamVjdHMuZ2V0KG9iaik7Ci0gICAgICAgIFJlbmRlclNlbGVjdGlvbkluZm8qIG9sZElu
Zm8gPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgICAgIFJlbmRlclNlbGVjdGlvbkluZm8qIG9sZElu
Zm8gPSBpLT52YWx1ZS5nZXQoKTsKICAgICAgICAgaWYgKCFuZXdJbmZvIHx8IG9sZEluZm8tPnJl
Y3QoKSAhPSBuZXdJbmZvLT5yZWN0KCkgfHwgb2xkSW5mby0+c3RhdGUoKSAhPSBuZXdJbmZvLT5z
dGF0ZSgpCi0gICAgICAgICAgICB8fCAocm9vdC5zZWxlY3Rpb25TdGFydCgpID09IG9iaiAmJiBv
bGRTZWxlY3Rpb25EYXRhLnNlbGVjdGlvblN0YXJ0UG9zICE9IHJvb3Quc2VsZWN0aW9uU3RhcnRQ
b3MoKSkKLSAgICAgICAgICAgIHx8IChyb290LnNlbGVjdGlvbkVuZCgpID09IG9iaiAmJiBvbGRT
ZWxlY3Rpb25EYXRhLnNlbGVjdGlvbkVuZFBvcyAhPSByb290LnNlbGVjdGlvbkVuZFBvcygpKSkg
eworICAgICAgICAgICAgfHwgKHJvb3Quc2VsZWN0aW9uU3RhcnQoKSA9PSBvYmogJiYgb2xkU3Rh
cnRQb3MgIT0gcm9vdC5zZWxlY3Rpb25TdGFydFBvcygpKQorICAgICAgICAgICAgfHwgKHJvb3Qu
c2VsZWN0aW9uRW5kKCkgPT0gb2JqICYmIG9sZEVuZFBvcyAhPSByb290LnNlbGVjdGlvbkVuZFBv
cygpKSkgewogICAgICAgICAgICAgb2xkSW5mby0+cmVwYWludCgpOwogICAgICAgICAgICAgaWYg
KG5ld0luZm8pIHsKICAgICAgICAgICAgICAgICBuZXdJbmZvLT5yZXBhaW50KCk7CkBAIC0xMDYw
LDE2ICsxMDM1LDE2IEBAIHZvaWQgUmVuZGVyVmlldzo6YXBwbHlTdWJ0cmVlU2VsZWN0aW9uKFNl
bGVjdGlvblN1YnRyZWVSb290JiByb290LCBSZW5kZXJPYmplY3QqCiAgICAgfQogCiAgICAgLy8g
QW55IG5ldyBvYmplY3RzIHRoYXQgcmVtYWluIHdlcmUgbm90IGZvdW5kIGluIHRoZSBvbGQgb2Jq
ZWN0cyBkaWN0LCBhbmQgc28gdGhleSBuZWVkIHRvIGJlIHVwZGF0ZWQuCi0gICAgYXV0byBuZXdP
YmplY3RzRW5kID0gbmV3U2VsZWN0ZWRPYmplY3RzLmVuZCgpOwotICAgIGZvciAoYXV0byBpdCA9
IG5ld1NlbGVjdGVkT2JqZWN0cy5iZWdpbigpOyBpdCAhPSBuZXdPYmplY3RzRW5kOyArK2l0KQot
ICAgICAgICBpdC0+dmFsdWUtPnJlcGFpbnQoKTsKKyAgICBTZWxlY3RlZE9iamVjdE1hcDo6aXRl
cmF0b3IgbmV3T2JqZWN0c0VuZCA9IG5ld1NlbGVjdGVkT2JqZWN0cy5lbmQoKTsKKyAgICBmb3Ig
KFNlbGVjdGVkT2JqZWN0TWFwOjppdGVyYXRvciBpID0gbmV3U2VsZWN0ZWRPYmplY3RzLmJlZ2lu
KCk7IGkgIT0gbmV3T2JqZWN0c0VuZDsgKytpKQorICAgICAgICBpLT52YWx1ZS0+cmVwYWludCgp
OwogCiAgICAgLy8gSGF2ZSBhbnkgb2YgdGhlIG9sZCBibG9ja3MgY2hhbmdlZD8KLSAgICBhdXRv
IG9sZEJsb2Nrc0VuZCA9IG9sZFNlbGVjdGlvbkRhdGEuc2VsZWN0ZWRCbG9ja3MuZW5kKCk7Ci0g
ICAgZm9yIChhdXRvIGl0ID0gb2xkU2VsZWN0aW9uRGF0YS5zZWxlY3RlZEJsb2Nrcy5iZWdpbigp
OyBpdCAhPSBvbGRCbG9ja3NFbmQ7ICsraXQpIHsKLSAgICAgICAgUmVuZGVyQmxvY2sqIGJsb2Nr
ID0gaXQtPmtleTsKKyAgICBTZWxlY3RlZEJsb2NrTWFwOjppdGVyYXRvciBvbGRCbG9ja3NFbmQg
PSBvbGRTZWxlY3RlZEJsb2Nrcy5lbmQoKTsKKyAgICBmb3IgKFNlbGVjdGVkQmxvY2tNYXA6Oml0
ZXJhdG9yIGkgPSBvbGRTZWxlY3RlZEJsb2Nrcy5iZWdpbigpOyBpICE9IG9sZEJsb2Nrc0VuZDsg
KytpKSB7CisgICAgICAgIFJlbmRlckJsb2NrKiBibG9jayA9IGktPmtleTsKICAgICAgICAgUmVu
ZGVyQmxvY2tTZWxlY3Rpb25JbmZvKiBuZXdJbmZvID0gbmV3U2VsZWN0ZWRCbG9ja3MuZ2V0KGJs
b2NrKTsKLSAgICAgICAgUmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvKiBvbGRJbmZvID0gaXQtPnZh
bHVlLmdldCgpOworICAgICAgICBSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8qIG9sZEluZm8gPSBp
LT52YWx1ZS5nZXQoKTsKICAgICAgICAgaWYgKCFuZXdJbmZvIHx8IG9sZEluZm8tPnJlY3RzKCkg
IT0gbmV3SW5mby0+cmVjdHMoKSB8fCBvbGRJbmZvLT5zdGF0ZSgpICE9IG5ld0luZm8tPnN0YXRl
KCkpIHsKICAgICAgICAgICAgIG9sZEluZm8tPnJlcGFpbnQoKTsKICAgICAgICAgICAgIGlmIChu
ZXdJbmZvKSB7CkBAIC0xMDgwLDE3ICsxMDU1LDE3IEBAIHZvaWQgUmVuZGVyVmlldzo6YXBwbHlT
dWJ0cmVlU2VsZWN0aW9uKFNlbGVjdGlvblN1YnRyZWVSb290JiByb290LCBSZW5kZXJPYmplY3Qq
CiAgICAgfQogCiAgICAgLy8gQW55IG5ldyBibG9ja3MgdGhhdCByZW1haW4gd2VyZSBub3QgZm91
bmQgaW4gdGhlIG9sZCBibG9ja3MgZGljdCwgYW5kIHNvIHRoZXkgbmVlZCB0byBiZSB1cGRhdGVk
LgotICAgIGF1dG8gbmV3QmxvY2tzRW5kID0gbmV3U2VsZWN0ZWRCbG9ja3MuZW5kKCk7Ci0gICAg
Zm9yIChhdXRvIGl0ID0gbmV3U2VsZWN0ZWRCbG9ja3MuYmVnaW4oKTsgaXQgIT0gbmV3QmxvY2tz
RW5kOyArK2l0KQotICAgICAgICBpdC0+dmFsdWUtPnJlcGFpbnQoKTsKKyAgICBTZWxlY3RlZEJs
b2NrTWFwOjppdGVyYXRvciBuZXdCbG9ja3NFbmQgPSBuZXdTZWxlY3RlZEJsb2Nrcy5lbmQoKTsK
KyAgICBmb3IgKFNlbGVjdGVkQmxvY2tNYXA6Oml0ZXJhdG9yIGkgPSBuZXdTZWxlY3RlZEJsb2Nr
cy5iZWdpbigpOyBpICE9IG5ld0Jsb2Nrc0VuZDsgKytpKQorICAgICAgICBpLT52YWx1ZS0+cmVw
YWludCgpOwogfQogCiB2b2lkIFJlbmRlclZpZXc6OmdldFNlbGVjdGlvbihSZW5kZXJPYmplY3Qq
JiBzdGFydFJlbmRlcmVyLCBpbnQmIHN0YXJ0T2Zmc2V0LCBSZW5kZXJPYmplY3QqJiBlbmRSZW5k
ZXJlciwgaW50JiBlbmRPZmZzZXQpIGNvbnN0CiB7Ci0gICAgc3RhcnRSZW5kZXJlciA9IG1fdW5z
cGxpdFNlbGVjdGlvblN0YXJ0OwotICAgIHN0YXJ0T2Zmc2V0ID0gbV91bnNwbGl0U2VsZWN0aW9u
U3RhcnRQb3M7Ci0gICAgZW5kUmVuZGVyZXIgPSBtX3Vuc3BsaXRTZWxlY3Rpb25FbmQ7Ci0gICAg
ZW5kT2Zmc2V0ID0gbV91bnNwbGl0U2VsZWN0aW9uRW5kUG9zOworICAgIHN0YXJ0UmVuZGVyZXIg
PSBtX3NlbGVjdGlvblN0YXJ0OworICAgIHN0YXJ0T2Zmc2V0ID0gbV9zZWxlY3Rpb25TdGFydFBv
czsKKyAgICBlbmRSZW5kZXJlciA9IG1fc2VsZWN0aW9uRW5kOworICAgIGVuZE9mZnNldCA9IG1f
c2VsZWN0aW9uRW5kUG9zOwogfQogCiB2b2lkIFJlbmRlclZpZXc6OmNsZWFyU2VsZWN0aW9uKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IGQ3NzcyYWMxODEyNzZlOWQ0
NGYyYWM2M2U4MWI0OTNkZmE3YWFmODMuLjBjMjZiNjgzNWRjMDY5NDRjNWRjZjVkZmQxYTA0M2E2
OTA2MTZlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtODksOCAr
ODksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0KiBzdGFy
dCwgaW50IHN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIGVuZCwgaW50IGVuZFBvcywgU2VsZWN0aW9u
UmVwYWludE1vZGUgPSBSZXBhaW50TmV3WE9ST2xkKTsKICAgICB2b2lkIGdldFNlbGVjdGlvbihS
ZW5kZXJPYmplY3QqJiBzdGFydFJlbmRlcmVyLCBpbnQmIHN0YXJ0T2Zmc2V0LCBSZW5kZXJPYmpl
Y3QqJiBlbmRSZW5kZXJlciwgaW50JiBlbmRPZmZzZXQpIGNvbnN0OwogICAgIHZvaWQgY2xlYXJT
ZWxlY3Rpb24oKTsKLSAgICBSZW5kZXJPYmplY3QqIHNlbGVjdGlvblVuc3BsaXRTdGFydCgpIGNv
bnN0IHsgcmV0dXJuIG1fdW5zcGxpdFNlbGVjdGlvblN0YXJ0OyB9Ci0gICAgUmVuZGVyT2JqZWN0
KiBzZWxlY3Rpb25VbnNwbGl0RW5kKCkgY29uc3QgeyByZXR1cm4gbV91bnNwbGl0U2VsZWN0aW9u
RW5kOyB9CisgICAgUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25TdGFydCgpIGNvbnN0IHsgcmV0dXJu
IG1fc2VsZWN0aW9uU3RhcnQ7IH0KKyAgICBSZW5kZXJPYmplY3QqIHNlbGVjdGlvbkVuZCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uRW5kOyB9CiAgICAgSW50UmVjdCBzZWxlY3Rpb25Cb3Vu
ZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIGNvbnN0OwogICAgIHZvaWQgcmVw
YWludFNlbGVjdGlvbigpIGNvbnN0OwogCkBAIC0zMDQsMTkgKzMwNCwxNyBAQCBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBMYXlvdXRTdGF0ZURpc2FibGVyOwogCiAgICAgdm9pZCBzcGxpdFNl
bGVjdGlvbkJldHdlZW5TdWJ0cmVlcyhSZW5kZXJPYmplY3QqIHN0YXJ0LCBpbnQgc3RhcnRQb3Ms
IFJlbmRlck9iamVjdCogZW5kLCBpbnQgZW5kUG9zLCBTZWxlY3Rpb25SZXBhaW50TW9kZSBibG9j
a1JlcGFpbnRNb2RlKTsKLSAgICB2b2lkIGNsZWFyU3VidHJlZVNlbGVjdGlvbihjb25zdCBTZWxl
Y3Rpb25TdWJ0cmVlUm9vdCYsIFNlbGVjdGlvblJlcGFpbnRNb2RlLCBPbGRTZWxlY3Rpb25EYXRh
Jik7Ci0gICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25Gb3JTdWJ0cmVlcyhSZW5kZXJTdWJ0cmVlc01h
cCYsIFNlbGVjdGlvblJlcGFpbnRNb2RlKTsKLSAgICB2b2lkIGFwcGx5U3VidHJlZVNlbGVjdGlv
bihTZWxlY3Rpb25TdWJ0cmVlUm9vdCYsIFJlbmRlck9iamVjdCogc3RhcnQsIFJlbmRlck9iamVj
dCogZW5kLCBpbnQgZW5kUG9zLCBTZWxlY3Rpb25SZXBhaW50TW9kZSwgY29uc3QgT2xkU2VsZWN0
aW9uRGF0YSYpOworICAgIHZvaWQgc2V0U3VidHJlZVNlbGVjdGlvbihTZWxlY3Rpb25TdWJ0cmVl
Um9vdCYsIFJlbmRlck9iamVjdCogc3RhcnQsIGludCBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBl
bmQsIGludCBlbmRQb3MsIFNlbGVjdGlvblJlcGFpbnRNb2RlKTsKICAgICBMYXlvdXRSZWN0IHN1
YnRyZWVTZWxlY3Rpb25Cb3VuZHMoY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmLCBib29sIGNs
aXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkgY29uc3Q7CiAgICAgdm9pZCByZXBhaW50U3VidHJl
ZVNlbGVjdGlvbihjb25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIEZyYW1lVmlldyYgbV9mcmFtZVZpZXc7CiAKLSAgICBSZW5kZXJPYmplY3QqIG1fdW5z
cGxpdFNlbGVjdGlvblN0YXJ0OwotICAgIFJlbmRlck9iamVjdCogbV91bnNwbGl0U2VsZWN0aW9u
RW5kOwotICAgIGludCBtX3Vuc3BsaXRTZWxlY3Rpb25TdGFydFBvczsKLSAgICBpbnQgbV91bnNw
bGl0U2VsZWN0aW9uRW5kUG9zOworICAgIFJlbmRlck9iamVjdCogbV9zZWxlY3Rpb25TdGFydDsK
KyAgICBSZW5kZXJPYmplY3QqIG1fc2VsZWN0aW9uRW5kOworICAgIGludCBtX3NlbGVjdGlvblN0
YXJ0UG9zOworICAgIGludCBtX3NlbGVjdGlvbkVuZFBvczsKIAogICAgIHVpbnQ2NF90IG1fcmVu
ZGVyZXJDb3VudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVj
dGlvblN1YnRyZWVSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25T
dWJ0cmVlUm9vdC5jcHAKaW5kZXggZmFmYWVlNjQ0ZmNkNTc3ZjFjZmVhZGYwMWQ0YWRmYzE5ODM5
MjY0Mi4uNWNmZDNmY2IzOWEyZDg3NjY0MmZjMmE2Yjk0Y2YzYTYzY2E2NTM4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uU3VidHJlZVJvb3QuY3BwCkBAIC00
NSwxNCArNDUsNiBAQCBTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6U2VsZWN0aW9uU3VidHJlZVJvb3Qo
KQogewogfQogCi1TZWxlY3Rpb25TdWJ0cmVlUm9vdDo6U2VsZWN0aW9uU3VidHJlZVJvb3QoUmVu
ZGVyT2JqZWN0KiBzZWxlY3Rpb25TdGFydCwgaW50IHNlbGVjdGlvblN0YXJ0UG9zLCBSZW5kZXJP
YmplY3QqIHNlbGVjdGlvbkVuZCwgaW50IHNlbGVjdGlvbkVuZFBvcykKLSAgICA6IG1fc2VsZWN0
aW9uU3RhcnQoc2VsZWN0aW9uU3RhcnQpCi0gICAgLCBtX3NlbGVjdGlvblN0YXJ0UG9zKHNlbGVj
dGlvblN0YXJ0UG9zKQotICAgICwgbV9zZWxlY3Rpb25FbmQoc2VsZWN0aW9uRW5kKQotICAgICwg
bV9zZWxlY3Rpb25FbmRQb3Moc2VsZWN0aW9uRW5kUG9zKQotewotfQotCiB2b2lkIFNlbGVjdGlv
blN1YnRyZWVSb290OjphZGp1c3RGb3JWaXNpYmxlU2VsZWN0aW9uKERvY3VtZW50JiBkb2N1bWVu
dCkKIHsKICAgICBpZiAoc2VsZWN0aW9uQ2xlYXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290LmgKaW5kZXggNDJjNWM5MzQwOThkM2IzY2QxZGMx
YzAzMDJlMjYxYWM3YWJhYWJhYS4uMzVjZWYxMTgyYzc2NzA1ZDBlZTc1ZTVmNDdlNDYyOGFiZjNi
OTcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRy
ZWVSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVS
b290LmgKQEAgLTMxLDcgKzMxLDYgQEAKICNkZWZpbmUgU2VsZWN0aW9uU3VidHJlZVJvb3RfaAog
CiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCi0jaW5jbHVkZSAiUmVuZGVyU2VsZWN0aW9uSW5m
by5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDI4ICszOCw4IEBAIGNsYXNzIERv
Y3VtZW50OwogCiBjbGFzcyBTZWxlY3Rpb25TdWJ0cmVlUm9vdCB7CiBwdWJsaWM6Ci0gICAgCi0g
ICAgdHlwZWRlZiBIYXNoTWFwPFJlbmRlck9iamVjdCosIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
ZWxlY3Rpb25JbmZvPj4gU2VsZWN0ZWRPYmplY3RNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJl
bmRlckJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4+IFNl
bGVjdGVkQmxvY2tNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFNlbGVjdGlvblN1YnRyZWVSb290
KiwgU2VsZWN0aW9uU3VidHJlZVJvb3Q+IFJlbmRlclN1YnRyZWVzTWFwOwotCi0gICAgc3RydWN0
IE9sZFNlbGVjdGlvbkRhdGEgewotICAgICAgICBPbGRTZWxlY3Rpb25EYXRhKCkKLSAgICAgICAg
ICAgIDogc2VsZWN0aW9uU3RhcnRQb3MoLTEpCi0gICAgICAgICAgICAsIHNlbGVjdGlvbkVuZFBv
cygtMSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgaW50IHNlbGVjdGlvblN0YXJ0
UG9zOwotICAgICAgICBpbnQgc2VsZWN0aW9uRW5kUG9zOwotICAgICAgICBTZWxlY3RlZE9iamVj
dE1hcCBzZWxlY3RlZE9iamVjdHM7Ci0gICAgICAgIFNlbGVjdGVkQmxvY2tNYXAgc2VsZWN0ZWRC
bG9ja3M7Ci0gICAgfTsKLSAgICAKLSAgICB0eXBlZGVmIEhhc2hNYXA8U2VsZWN0aW9uU3VidHJl
ZVJvb3QqLCBzdGQ6OnVuaXF1ZV9wdHI8T2xkU2VsZWN0aW9uRGF0YT4+IFN1YnRyZWVPbGRTZWxl
Y3Rpb25EYXRhTWFwOwogCiAgICAgU2VsZWN0aW9uU3VidHJlZVJvb3QoKTsKLSAgICBTZWxlY3Rp
b25TdWJ0cmVlUm9vdChSZW5kZXJPYmplY3QqIHNlbGVjdGlvblN0YXJ0LCBpbnQgc2VsZWN0aW9u
U3RhcnRQb3MsIFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kLCBpbnQgc2VsZWN0aW9uRW5kUG9z
KTsKIAogICAgIFJlbmRlck9iamVjdCogc2VsZWN0aW9uU3RhcnQoKSBjb25zdCB7IHJldHVybiBt
X3NlbGVjdGlvblN0YXJ0OyB9CiAgICAgaW50IHNlbGVjdGlvblN0YXJ0UG9zKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZWxlY3Rpb25TdGFydFBvczsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU1NDNkMTY1MDI1ZDFlMzI0NDM5
YWE2MjZmNWQ5OGJhMTI2NDIyZWMuLjBmODIxMzg2NTliMjFlMzk1MGFmOGZlNDEwN2MxNjEwNmVm
Njg3MzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wNy0yMyAgQ29tbWl0IFF1ZXVlICA8
Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjE3MTQ1NS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNTIwOQorCisgICAgICAgIGNvbXBsZXRlbHkgYnJva2Ugc2VsZWN0aW9uIGhpZ2hsaWdo
dCBpbnZhbGlkYXRpb24gKFJlcXVlc3RlZAorICAgICAgICBieSB0aG9ydG9uIG9uICN3ZWJraXQp
LgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiUkVHUkVTU0lPTiAo
cjE2OTEwNSk6IENyYXNoIGluIHNlbGVjdGlvbiIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDMwMworICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8xNzE0NTUKKwogMjAxNC0wNy0yMyAgQmVtIEpvbmVzLUJleSAgPGJqb25l
c2JlQGFkb2JlLmNvbT4KIAogICAgICAgICBFbnN1cmUgd2UgY29tcHV0ZSB0aGUgbWluIGFuZCBt
YXggaGVpZ2h0IG9mIHJlcGxhY2VkIGVsZW1lbnRzIHRvICdub25lJyBvciAwIHdoZW4gYXBwcm9w
cmlhdGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvc2VsZWN0aW9uL2Ny
YXNoLWRlc2VsZWN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9zZWxl
Y3Rpb24vY3Jhc2gtZGVzZWxlY3QtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0ZjIxZTIxOTU4NGExZGU3OWRhMTc4Y2M2ZjAzMmNmYWFhOTFhY2E3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9zZWxlY3Rpb24vY3Jhc2gtZGVzZWxlY3QtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251
bGwKQEAgLTEsNSArMCwwIEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgNjY6IEhpZXJhcmNoeVJl
cXVlc3RFcnJvcjogRE9NIEV4Y2VwdGlvbiAzOiBBIE5vZGUgd2FzIGluc2VydGVkIHNvbWV3aGVy
ZSBpdCBkb2Vzbid0IGJlbG9uZy4KLQotRXJybG9nIHNlbGVjdGlvblRlc3Q6IEhpZXJhcmNoeVJl
cXVlc3RFcnJvcjogSGllcmFyY2h5UmVxdWVzdEVycm9yOiBET00gRXhjZXB0aW9uIDMgOiBpbmRl
eCAxIAotRXJybG9nIHdlYnRlc3RfZm5fMjQ6IAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvc2VsZWN0aW9uL2NyYXNoLWRlc2VsZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvc2VsZWN0aW9uL2NyYXNoLWRlc2VsZWN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGExYTkyNDhmNTNkNTUzY2VlMzFiNGQwYWEwNzc0MTM4ZWEzNzY3ZDgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL3NlbGVjdGlvbi9jcmFzaC1kZXNlbGVjdC5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsNzIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08aHRtbCBpZD0id2VidGVzdDAi
PgotICAgIDxoZWFkIGlkPSJ3ZWJ0ZXN0MSI+Ci0gICAgICAgIDxzdHlsZSBpZD0id2VidGVzdDIi
Pjwvc3R5bGU+Ci0gICAgICAgIDxzdHlsZT4KLSAgICAgICAgICAgIDpsYXN0LWNoaWxkIHsgLXdl
YmtpdC1mbG93LWludG86IGZvbzsgfQotICAgICAgICA8L3N0eWxlPgotICAgICAgICAKLSAgICA8
L2hlYWQ+Ci0gICAgPGJvZHkgaWQ9IndlYnRlc3QzIj4KLSAgICAgICAgPHNjcmlwdCBpZD0iZXhh
bXBsZSI+PC9zY3JpcHQ+Ci0KLSAgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dChmYWxzZSk7Ci0gICAgICAgIDwvc2NyaXB0PgotCi0gICAgICAg
IDxzY3JpcHQ+Ci0gICAgICAgICAgICB2YXIgbmV3X2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJjYW52YXMiKTsKLSAgICAgICAgICAgIG5ld19lbGVtLnNldEF0dHJpYnV0ZSgiaWQiLCAi
d2VidGVzdDExIik7Ci0gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjd2VidGVz
dDAiKS5hcHBlbmRDaGlsZChuZXdfZWxlbSk7Ci0KLSAgICAgICAgICAgIGRvY3VtZW50LndyaXRl
KCI8YnI+PHN1bW1hcnk+Iik7Ci0gICAgICAgIDwvc2NyaXB0PgotICAgICAgICA8c3VtbWFyeT4K
LSAgICAgICAgICAgIDxtYXRobWwgaWQ9IndlYnRlc3QxMiI+Ci0gICAgICAgICAgICAgICAgPGZl
bWVyZ2U+PC9mZW1lcmdlPgotICAgICAgICAgICAgPC9tYXRobWw+Ci0KLSAgICAgICAgICAgIDxz
Y3JpcHQ+Ci0gICAgICAgICAgICAgICAgZnVuY3Rpb24gc2VsZWN0aW9uVGVzdCgpIHsKLSAgICAg
ICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdmX2kgPSAwOwot
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7IHdmX2k8NDA7IHdmX2krKykgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZS5zZXRTdGFydEJlZm9yZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgid2VidGVzdDMiKSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmFuZ2Uuc2V0RW5kQWZ0ZXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndlYnRlc3Qy
IikpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIG1hcmtFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndlYnRlc3QxIiku
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCIiLCAibWFyayIpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByYW5nZS5zZXRTdGFydEFmdGVyKG1hcmtFbGVtZW50KTsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhcHBsZXRFbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImV4YW1wbGUiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJhcHBsZXQiKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2Uuc2V0
RW5kQWZ0ZXIoYXBwbGV0RWxlbWVudCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
YW5nZS5pbnNlcnROb2RlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJleGFtcGxlIikpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKGUpIHsK
LSAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiRXJybG9nIHNlbGVjdGlvblRl
c3Q6ICIgKyBlLm5hbWUgKyAiOiAiICsgZS5tZXNzYWdlICsgIiA6IGluZGV4ICIgKyB3Zl9pICsg
IiA8YnI+PHRhYmxlLz4iKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBzZWxlY3Rpb25UZXN0KCk7Ci0gICAgICAgICAgICA8L3Njcmlw
dD4KLSAgICAgICAgICAgIDxzdWI+Ci0KLSAgICAgICAgICAgIDxzY3JpcHQ+Ci0gICAgICAgICAg
ICAgICAgZG9jdW1lbnQuZGVzaWduTW9kZSA9ICJvbiI7Ci0gICAgICAgICAgICAgICAgZG9jdW1l
bnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIpOwotICAgICAgICAgICAgICAgIGRvY3VtZW50Lndy
aXRlKCJFcnJsb2cgd2VidGVzdF9mbl8yNDogPGJyPjxub2JyPiIpOwotCi0gICAgICAgICAgICAg
ICAgdmFyIGZlbWVyZ2VFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndlYnRlc3Qx
MiIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZlbWVyZ2UiKSk7Ci0gICAg
ICAgICAgICAgICAgdmFyIGFwcGxldEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
ZXhhbXBsZSIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImFwcGxldCIpKTsK
LSAgICAgICAgICAgICAgICB2YXIgZ3JhZGllbnRFbGVtZW50ID0gZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJncmFkaWVudCIpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3
ZWJ0ZXN0MiIpLmlzRXF1YWxOb2RlKGZlbWVyZ2VFbGVtZW50Lmluc2VydEJlZm9yZShkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQsIGdyYWRpZW50RWxlbWVudCkpOwotICAgICAgICAgICAgPC9zY3Jp
cHQ+Ci0KLSAgICAgICAgICAgIDx0YWJsZT48L3RhYmxlPgotICAgICAgICA8L3N1bW1hcnk+Ci0g
ICAgPC9ib2R5PgotPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235417</attachid>
            <date>2014-07-24 02:31:38 -0700</date>
            <delta_ts>2014-07-24 02:31:38 -0700</delta_ts>
            <desc>EWS test</desc>
            <filename>134303.patch</filename>
            <type>text/plain</type>
            <size>24155</size>
            <attacher name="Radu Stavila">stavila</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkOGMwODQ4Li5mMjVlNTQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMDct
MjQgIFJhZHUgU3RhdmlsYSAgPHN0YXZpbGFAYWRvYmUuY29tPgorCisgICAgICAgIFJFR1JFU1NJ
T04gKHIxNjkxMDUpOiBDcmFzaCBpbiBzZWxlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDMwMworCisgICAgICAgIEFkZGVkIHRlc3QgZm9y
IHRoZSBjcmFzaCB0aGF0IG9jY3VycmVkIGluIHNvbWUgY2FzZXMgd2hlbiBzZWxlY3RpbmcuCisK
KyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvc2VsZWN0aW9uL2NyYXNoLWRlc2VsZWN0LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL3NlbGVjdGlvbi9jcmFzaC1kZXNl
bGVjdC5odG1sOiBBZGRlZC4KKwogMjAxNC0wNy0yMyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mu
d2FzaGluZ3Rvbi5lZHU+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW5zcGVjdG9yQmFja2Vu
ZCdzIHByb21pc2UtYmFzZWQgYWdlbnQgQVBJIGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgcmV0
dXJuIHZhbHVlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3NlbGVjdGlv
bi9jcmFzaC1kZXNlbGVjdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMv
c2VsZWN0aW9uL2NyYXNoLWRlc2VsZWN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi40ZjIxZTIxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL3NlbGVjdGlvbi9jcmFzaC1kZXNlbGVjdC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw1IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjY6IEhpZXJhcmNoeVJlcXVlc3RFcnJv
cjogRE9NIEV4Y2VwdGlvbiAzOiBBIE5vZGUgd2FzIGluc2VydGVkIHNvbWV3aGVyZSBpdCBkb2Vz
bid0IGJlbG9uZy4KKworRXJybG9nIHNlbGVjdGlvblRlc3Q6IEhpZXJhcmNoeVJlcXVlc3RFcnJv
cjogSGllcmFyY2h5UmVxdWVzdEVycm9yOiBET00gRXhjZXB0aW9uIDMgOiBpbmRleCAxIAorRXJy
bG9nIHdlYnRlc3RfZm5fMjQ6IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvc2VsZWN0aW9uL2NyYXNoLWRlc2VsZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvc2VsZWN0aW9uL2NyYXNoLWRlc2VsZWN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYTFhOTI0OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
cmVnaW9ucy9zZWxlY3Rpb24vY3Jhc2gtZGVzZWxlY3QuaHRtbApAQCAtMCwwICsxLDcyIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sIGlkPSJ3ZWJ0ZXN0MCI+CisgICAgPGhlYWQgaWQ9IndlYnRl
c3QxIj4KKyAgICAgICAgPHN0eWxlIGlkPSJ3ZWJ0ZXN0MiI+PC9zdHlsZT4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgOmxhc3QtY2hpbGQgeyAtd2Via2l0LWZsb3ctaW50bzogZm9vOyB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIAorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBpZD0i
d2VidGVzdDMiPgorICAgICAgICA8c2NyaXB0IGlkPSJleGFtcGxlIj48L3NjcmlwdD4KKworICAg
ICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KGZh
bHNlKTsKKyAgICAgICAgPC9zY3JpcHQ+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAg
IHZhciBuZXdfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOworICAgICAg
ICAgICAgbmV3X2VsZW0uc2V0QXR0cmlidXRlKCJpZCIsICJ3ZWJ0ZXN0MTEiKTsKKyAgICAgICAg
ICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN3ZWJ0ZXN0MCIpLmFwcGVuZENoaWxkKG5ld19l
bGVtKTsKKworICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIjxicj48c3VtbWFyeT4iKTsKKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxzdW1tYXJ5PgorICAgICAgICAgICAgPG1hdGhtbCBp
ZD0id2VidGVzdDEyIj4KKyAgICAgICAgICAgICAgICA8ZmVtZXJnZT48L2ZlbWVyZ2U+CisgICAg
ICAgICAgICA8L21hdGhtbD4KKworICAgICAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgICAg
ICBmdW5jdGlvbiBzZWxlY3Rpb25UZXN0KCkgeworICAgICAgICAgICAgICAgICAgICB0cnkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgd2ZfaSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgKDsgd2ZfaTw0MDsgd2ZfaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJhbmdlLnNldFN0YXJ0QmVmb3JlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ3
ZWJ0ZXN0MyIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZS5zZXRFbmRBZnRl
cihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2VidGVzdDIiKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmFuZ2UuZGVsZXRlQ29udGVudHMoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWFya0VsZW1lbnQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2VidGVzdDEiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50TlMoIiIsICJtYXJrIikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJhbmdlLnNldFN0YXJ0QWZ0ZXIobWFya0VsZW1lbnQpOworCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGFwcGxldEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXhh
bXBsZSIpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImFwcGxldCIpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZS5zZXRFbmRBZnRlcihhcHBsZXRFbGVtZW50
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlLmluc2VydE5vZGUoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImV4YW1wbGUiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgICAgICAgICAg
IGRvY3VtZW50LndyaXRlKCJFcnJsb2cgc2VsZWN0aW9uVGVzdDogIiArIGUubmFtZSArICI6ICIg
KyBlLm1lc3NhZ2UgKyAiIDogaW5kZXggIiArIHdmX2kgKyAiIDxicj48dGFibGUvPiIpOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNl
bGVjdGlvblRlc3QoKTsKKyAgICAgICAgICAgIDwvc2NyaXB0PgorICAgICAgICAgICAgPHN1Yj4K
KworICAgICAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgICAgICBkb2N1bWVudC5kZXNpZ25N
b2RlID0gIm9uIjsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0
QWxsIik7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQud3JpdGUoIkVycmxvZyB3ZWJ0ZXN0X2Zu
XzI0OiA8YnI+PG5vYnI+Iik7CisKKyAgICAgICAgICAgICAgICB2YXIgZmVtZXJnZUVsZW1lbnQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgid2VidGVzdDEyIikuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZmVtZXJnZSIpKTsKKyAgICAgICAgICAgICAgICB2YXIgYXBwbGV0
RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJleGFtcGxlIikuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYXBwbGV0IikpOworICAgICAgICAgICAgICAgIHZhciBn
cmFkaWVudEVsZW1lbnQgPSBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImdyYWRpZW50IikpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIndlYnRlc3QyIikuaXNFcXVhbE5vZGUo
ZmVtZXJnZUVsZW1lbnQuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgZ3Jh
ZGllbnRFbGVtZW50KSk7CisgICAgICAgICAgICA8L3NjcmlwdD4KKworICAgICAgICAgICAgPHRh
YmxlPjwvdGFibGU+CisgICAgICAgIDwvc3VtbWFyeT4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggZTdhYmUwMy4uZmY5Y2I1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBA
CisyMDE0LTA3LTI0ICBSYWR1IFN0YXZpbGEgIDxzdGF2aWxhQGFkb2JlLmNvbT4KKworICAgICAg
ICBSRUdSRVNTSU9OIChyMTY5MTA1KTogQ3Jhc2ggaW4gc2VsZWN0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQzMDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHNwbGl0dGluZyB0aGUgc2Vs
ZWN0aW9uIGJldHdlZW4gZGlmZmVyZW50IHN1YnRyZWVzLCBhbGwgc3VidHJlZXMgbXVzdCBoYXZl
IHRoZWlyIHNlbGVjdGlvbiBjbGVhcmVkIGJlZm9yZQorICAgICAgICBzdGFydGluZyB0byBhcHBs
eSB0aGUgbmV3IHNlbGVjdGlvbi4gT3RoZXJ3aXNlLCB3aGVuIHNlbGVjdGluZyBvYmplY3RzIGlu
IGEgbmFtZWQgZmxvdyB0aHJlYWQgYW5kIGdvaW5nIHVwCisgICAgICAgIGl0cyBjb250YWluaW5n
IGJsb2NrIGNoYWluLCB3ZSBjYW4gZW5kIHVwIGluIHRoZSB2aWV3J3Mgc2VsZWN0aW9uIHJvb3Qs
IHdoaWNoIGhhcyBub3QgeWV0IGJlZW4gdXBkYXRlZCBhbmQgc28KKyAgICAgICAgd2UgZ2V0IGlu
Y29uc2lzdGVudCBkYXRhLgorCisgICAgICAgIFRvIGFjaGlldmUgdGhpcyBnb2FsLCB0aGUgc2Vs
ZWN0aW9uIHVwZGF0ZSB3YXMgc3BsaXQgaW50byBhICJjbGVhciIgYW5kIGFuICJhcHBseSIgbWV0
aG9kLiBUaGUgdXBkYXRlU2VsZWN0aW9uRm9yU3VidHJlZXMKKyAgICAgICAgbWV0aG9kIGZpcnN0
IGl0ZXJhdGVzIHRocm91Z2ggYWxsIHN1YnRyZWVzIGFuZCBwZXJmb3JtcyB0aGUgImNsZWFyIiBt
ZXRob2QgYW5kIHRoZW4gc3RhcnRzIGFsbCBvdmVyIGFnYWluCisgICAgICAgIGFuZCBwZXJmb3Jt
cyB0aGUgImFwcGx5IiBtZXRob2QuCisKKyAgICAgICAgQWxzbywgdGhlIHNlbGVjdGlvblN0YXJ0
L0VuZCBtZW1iZXJzIGluIFJlbmRlclZpZXcgaGF2ZSBiZWVuIHJlbmFtZWQgdG8gZml4IHByb2Js
ZW1zIGNhdXNlZCBieSB0aGUgZmFjdCB0aGF0CisgICAgICAgIFJlbmRlclZpZXcgaW5oZXJpdHMg
U2VsZWN0aW9uU3VidHJlZVJvb3QsIHdoaWNoIGFsc28gaGFzIHRoZSBzYW1lIHNlbGVjdGlvblN0
YXJ0L0VuZCBtZW1iZXJzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvcmVnaW9ucy9zZWxlY3Rpb24v
Y3Jhc2gtZGVzZWxlY3QuaHRtbAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWxlY3Rpb25JbmZvLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVmlldzo6c2V0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnNw
bGl0U2VsZWN0aW9uQmV0d2VlblN1YnRyZWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZp
ZXc6OnVwZGF0ZVNlbGVjdGlvbkZvclN1YnRyZWVzKTogQWRkZWQsIGNsZWFycyBhbmQgcmUtYXBw
bGllcyBzZWxlY3Rpb24gZm9yIGFsbCBzZWxlY3Rpb24gc3VidHJlZXMuCisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJWaWV3OjpjbGVhclN1YnRyZWVTZWxlY3Rpb24pOiBBZGRlZCwgY2xlYXJzIHNl
bGVjdGlvbiBhbmQgcmV0dXJucyBwcmV2aW91c2x5IHNlbGVjdGVkIGluZm9ybWF0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6YXBwbHlTdWJ0cmVlU2VsZWN0aW9uKTogQWRkZWQs
IHVwZGF0ZXMgdGhlIHNlbGVjdGlvbiBzdGF0dXMgb2YgYWxsIG9iamVjdHMgaW5zaWRlIHRoZSBz
ZWxlY3Rpb24gdHJlZSwgY29tcGFyZXMgb2xkIGFuZCBuZXcgZGF0YSBhbmQgcmVwYWludHMgYWNj
b3JkaW5nbHkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3OjpzZXRTdWJ0cmVlU2VsZWN0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6U2VsZWN0aW9uU3VidHJlZVJvb3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5oOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0aW9uU3VidHJlZVJvb3Q6Ok9sZFNlbGVjdGlvbkRhdGE6Ok9sZFNlbGVjdGlvbkRhdGEpOgor
CiAyMDE0LTA3LTIzICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KIAogICAgICAg
ICBUcmFuc3BhcmVudCBmdWxsc2NyZWVuIGJhY2tncm91bmQgd2hlbiB2aWRlbyBpcyBub3QgcHJl
c2VudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAxNGQyZTRkLi41ZjZjOWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NjYsNyArNDY2LDcgQEAKIAkJMEYw
OTA4N0YxNDQ0RkRCMjAwMDI4OTE3IC8qIFNjcm9sbGJhclRoZW1lLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTcxNDE1MTQyMTg5RkMwMERCMzNC
QSAvKiBTY3JvbGxiYXJUaGVtZS5jcHAgKi87IH07CiAJCTBGMDk5RDA4MTdCOTY4QTEwMEZGODRC
OSAvKiBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwOTlEMDYxN0I5NjhBMTAwRkY4NEI5IC8qIFdl
YkNvcmVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAgKi87IH07CiAJCTBGMDk5RDA5MTdCOTY4QTEw
MEZGODRCOSAvKiBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMDk5RDA3MTdCOTY4QTEwMEZGODRCOSAv
KiBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwRjExQTU0RjBGMzkyMzMxMDBDMzc4ODQgLyogUmVu
ZGVyU2VsZWN0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYxMUE1NEUwRjM5MjMzMTAwQzM3ODg0IC8qIFJlbmRlclNlbGVjdGlvbkluZm8u
aCAqLzsgfTsKKwkJMEYxMUE1NEYwRjM5MjMzMTAwQzM3ODg0IC8qIFJlbmRlclNlbGVjdGlvbklu
Zm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTFB
NTRFMEYzOTIzMzEwMEMzNzg4NCAvKiBSZW5kZXJTZWxlY3Rpb25JbmZvLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxMzE2M0UxNkVEMENDODAw
MzVDQzA0IC8qIFBsYXRmb3JtQ0FGaWx0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEzMTYzRDE2RUQwQ0M4MDAzNUNDMDQgLyogUGxhdGZvcm1D
QUZpbHRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjEzMTY0MDE2RUQwQ0RFMDAzNUNDMDQgLyogUGxhdGZvcm1DQUZpbHRlcnNNYWMubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEzMTYzRjE2
RUQwQ0RFMDAzNUNDMDQgLyogUGxhdGZvcm1DQUZpbHRlcnNNYWMubW0gKi87IH07CiAJCTBGMTVE
QThBMEYzQUFFRTcwMDAwQ0U0NyAvKiBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNURBODkwRjNBQUVF
NzAwMDBDRTQ3IC8qIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmggKi87IH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VsZWN0aW9uSW5mby5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlbGVjdGlvbkluZm8uaAppbmRleCA0NmU4ODZm
Li45M2FlN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Vs
ZWN0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWxlY3Rp
b25JbmZvLmgKQEAgLTI1LDggKzI1LDkgQEAKICNpZm5kZWYgUmVuZGVyU2VsZWN0aW9uSW5mb19o
CiAjZGVmaW5lIFJlbmRlclNlbGVjdGlvbkluZm9faAogCisjaW5jbHVkZSAiR2FwUmVjdHMuaCIK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiUmVuZGVyQm94LmgiCisjaW5jbHVkZSAi
UmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCAwNDQ0NGEy
Li5kOGVjYjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC04
NTQsNyArODU0LDkgQEAgdm9pZCBSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24oUmVuZGVyT2JqZWN0
KiBzdGFydCwgaW50IHN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIGUKIAogICAgIC8vIElmIHRoZXJl
IGlzIG5vIFJlbmRlck5hbWVkRmxvd1RocmVhZHMgd2UgZm9sbG93IHRoZSByZWd1bGFyIHNlbGVj
dGlvbi4KICAgICBpZiAoIWhhc1JlbmRlck5hbWVkRmxvd1RocmVhZHMoKSkgewotICAgICAgICBz
ZXRTdWJ0cmVlU2VsZWN0aW9uKCp0aGlzLCBzdGFydCwgc3RhcnRQb3MsIGVuZCwgZW5kUG9zLCBi
bG9ja1JlcGFpbnRNb2RlKTsKKyAgICAgICAgUmVuZGVyU3VidHJlZXNNYXAgc2luZ2xlU3VidHJl
ZU1hcDsKKyAgICAgICAgc2luZ2xlU3VidHJlZU1hcC5zZXQodGhpcywgU2VsZWN0aW9uU3VidHJl
ZVJvb3Qoc3RhcnQsIHN0YXJ0UG9zLCBlbmQsIGVuZFBvcykpOworICAgICAgICB1cGRhdGVTZWxl
Y3Rpb25Gb3JTdWJ0cmVlcyhzaW5nbGVTdWJ0cmVlTWFwLCBibG9ja1JlcGFpbnRNb2RlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODY0LDcgKzg2Niw2IEBAIHZvaWQgUmVuZGVyVmll
dzo6c2V0U2VsZWN0aW9uKFJlbmRlck9iamVjdCogc3RhcnQsIGludCBzdGFydFBvcywgUmVuZGVy
T2JqZWN0KiBlCiB2b2lkIFJlbmRlclZpZXc6OnNwbGl0U2VsZWN0aW9uQmV0d2VlblN1YnRyZWVz
KFJlbmRlck9iamVjdCogc3RhcnQsIGludCBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBlbmQsIGlu
dCBlbmRQb3MsIFNlbGVjdGlvblJlcGFpbnRNb2RlIGJsb2NrUmVwYWludE1vZGUpCiB7CiAgICAg
Ly8gQ29tcHV0ZSB0aGUgdmlzaWJsZSBzZWxlY3Rpb24gZW5kIHBvaW50cyBmb3IgZWFjaCBvZiB0
aGUgc3VidHJlZXMuCi0gICAgdHlwZWRlZiBIYXNoTWFwPFNlbGVjdGlvblN1YnRyZWVSb290Kiwg
U2VsZWN0aW9uU3VidHJlZVJvb3Q+IFJlbmRlclN1YnRyZWVzTWFwOwogICAgIFJlbmRlclN1YnRy
ZWVzTWFwIHJlbmRlclN1YnRyZWVzTWFwOwogCiAgICAgU2VsZWN0aW9uU3VidHJlZVJvb3QgaW5p
dGlhbFNlbGVjdGlvbjsKQEAgLTg5OCwzMyArODk5LDQ5IEBAIHZvaWQgUmVuZGVyVmlldzo6c3Bs
aXRTZWxlY3Rpb25CZXR3ZWVuU3VidHJlZXMoUmVuZGVyT2JqZWN0KiBzdGFydCwgaW50IHN0YXJ0
UG9zCiAgICAgICAgICAgICByZW5kZXJTdWJ0cmVlc01hcC5zZXQoJnJvb3QsIHNlbGVjdGlvbkRh
dGEpOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHVwZGF0ZVNlbGVjdGlvbkZvclN1YnRy
ZWVzKHJlbmRlclN1YnRyZWVzTWFwLCBibG9ja1JlcGFpbnRNb2RlKTsKK30KIAotICAgIGZvciAo
UmVuZGVyU3VidHJlZXNNYXA6Oml0ZXJhdG9yIGkgPSByZW5kZXJTdWJ0cmVlc01hcC5iZWdpbigp
OyBpICE9IHJlbmRlclN1YnRyZWVzTWFwLmVuZCgpOyArK2kpIHsKLSAgICAgICAgU2VsZWN0aW9u
U3VidHJlZVJvb3Qgc3VidHJlZVNlbGVjdGlvbkRhdGEgPSBpLT52YWx1ZTsKK3ZvaWQgUmVuZGVy
Vmlldzo6dXBkYXRlU2VsZWN0aW9uRm9yU3VidHJlZXMoUmVuZGVyU3VidHJlZXNNYXAmIHJlbmRl
clN1YnRyZWVzTWFwLCBTZWxlY3Rpb25SZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2RlKQorewor
ICAgIFN1YnRyZWVPbGRTZWxlY3Rpb25EYXRhTWFwIG9sZFNlbGVjdGlvbkRhdGFNYXA7CisgICAg
Zm9yIChhdXRvIGl0ID0gcmVuZGVyU3VidHJlZXNNYXAuYmVnaW4oKTsgaXQgIT0gcmVuZGVyU3Vi
dHJlZXNNYXAuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPE9sZFNlbGVj
dGlvbkRhdGE+IG9sZFNlbGVjdGlvbkRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPE9sZFNlbGVjdGlv
bkRhdGE+KCk7CisgICAgICAgIGNsZWFyU3VidHJlZVNlbGVjdGlvbigqaXQtPmtleSwgYmxvY2tS
ZXBhaW50TW9kZSwgKm9sZFNlbGVjdGlvbkRhdGEpOworICAgICAgICBvbGRTZWxlY3Rpb25EYXRh
TWFwLnNldChpdC0+a2V5LCBXVEY6Om1vdmUob2xkU2VsZWN0aW9uRGF0YSkpOworCisgICAgICAg
IFNlbGVjdGlvblN1YnRyZWVSb290JiBzdWJ0cmVlU2VsZWN0aW9uRGF0YSA9IGl0LT52YWx1ZTsK
ICAgICAgICAgc3VidHJlZVNlbGVjdGlvbkRhdGEuYWRqdXN0Rm9yVmlzaWJsZVNlbGVjdGlvbihk
b2N1bWVudCgpKTsKLSAgICAgICAgc2V0U3VidHJlZVNlbGVjdGlvbigqaS0+a2V5LCBzdWJ0cmVl
U2VsZWN0aW9uRGF0YS5zZWxlY3Rpb25TdGFydCgpLCBzdWJ0cmVlU2VsZWN0aW9uRGF0YS5zZWxl
Y3Rpb25TdGFydFBvcygpLAotICAgICAgICAgICAgc3VidHJlZVNlbGVjdGlvbkRhdGEuc2VsZWN0
aW9uRW5kKCksIHN1YnRyZWVTZWxlY3Rpb25EYXRhLnNlbGVjdGlvbkVuZFBvcygpLCBibG9ja1Jl
cGFpbnRNb2RlKTsKKyAgICAgICAgCisgICAgICAgIFNlbGVjdGlvblN1YnRyZWVSb290JiByb290
ID0gKml0LT5rZXk7CisgICAgICAgIHJvb3Quc2V0U2VsZWN0aW9uU3RhcnQoc3VidHJlZVNlbGVj
dGlvbkRhdGEuc2VsZWN0aW9uU3RhcnQoKSk7CisgICAgICAgIHJvb3Quc2V0U2VsZWN0aW9uU3Rh
cnRQb3Moc3VidHJlZVNlbGVjdGlvbkRhdGEuc2VsZWN0aW9uU3RhcnRQb3MoKSk7CisgICAgICAg
IHJvb3Quc2V0U2VsZWN0aW9uRW5kKHN1YnRyZWVTZWxlY3Rpb25EYXRhLnNlbGVjdGlvbkVuZCgp
KTsKKyAgICAgICAgcm9vdC5zZXRTZWxlY3Rpb25FbmRQb3Moc3VidHJlZVNlbGVjdGlvbkRhdGEu
c2VsZWN0aW9uRW5kUG9zKCkpOworICAgIH0KKworICAgIC8vIFVwZGF0ZSBzZWxlY3Rpb24gc3Rh
dHVzIGZvciB0aGUgb2JqZWN0cyBpbnNpZGUgdGhlIHNlbGVjdGlvbiBzdWJ0cmVlcy4KKyAgICAv
LyBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgYWZ0ZXIgdGhlIHByZXZpb3VzIGxvb3AgdXBkYXRlZCB0
aGUgc2VsZWN0aW9uU3RhcnQvRW5kCisgICAgLy8gcGFyYW1ldGVycyBvZiBhbGwgc3VidHJlZXMg
YmVjYXVzZSB3ZSdyZSBnb2luZyB0byBiZSBjbGltYmluZyB1cCB0aGUgY29udGFpbmluZworICAg
IC8vIGJsb2NrIGNoYWluIGFuZCB3ZSBtaWdodCBlbmQgdXAgaW4gYSBkaWZmZXJlbnQgc2VsZWN0
aW9uIHN1YnRyZWUuCisgICAgZm9yIChhdXRvIGl0ID0gcmVuZGVyU3VidHJlZXNNYXAuYmVnaW4o
KTsgaXQgIT0gcmVuZGVyU3VidHJlZXNNYXAuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgU2VsZWN0
aW9uU3VidHJlZVJvb3Qgc3VidHJlZVNlbGVjdGlvbkRhdGEgPSBpdC0+dmFsdWU7CisgICAgICAg
IE9sZFNlbGVjdGlvbkRhdGEmIG9sZFNlbGVjdGlvbkRhdGEgPSAqb2xkU2VsZWN0aW9uRGF0YU1h
cC5nZXQoaXQtPmtleSk7CisgICAgICAgIGFwcGx5U3VidHJlZVNlbGVjdGlvbigqaXQtPmtleSwg
c3VidHJlZVNlbGVjdGlvbkRhdGEuc2VsZWN0aW9uU3RhcnQoKSwgc3VidHJlZVNlbGVjdGlvbkRh
dGEuc2VsZWN0aW9uRW5kKCksIHN1YnRyZWVTZWxlY3Rpb25EYXRhLnNlbGVjdGlvbkVuZFBvcygp
LCBibG9ja1JlcGFpbnRNb2RlLCBvbGRTZWxlY3Rpb25EYXRhKTsKICAgICB9CiB9CiAKLXZvaWQg
UmVuZGVyVmlldzo6c2V0U3VidHJlZVNlbGVjdGlvbihTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9v
dCwgUmVuZGVyT2JqZWN0KiBzdGFydCwgaW50IHN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIGVuZCwg
aW50IGVuZFBvcywgU2VsZWN0aW9uUmVwYWludE1vZGUgYmxvY2tSZXBhaW50TW9kZSkKK3ZvaWQg
UmVuZGVyVmlldzo6Y2xlYXJTdWJ0cmVlU2VsZWN0aW9uKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVS
b290JiByb290LCBTZWxlY3Rpb25SZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2RlLCBPbGRTZWxl
Y3Rpb25EYXRhJiBvbGRTZWxlY3Rpb25EYXRhKQogewogICAgIC8vIFJlY29yZCB0aGUgb2xkIHNl
bGVjdGVkIG9iamVjdHMuICBUaGVzZSB3aWxsIGJlIHVzZWQgbGF0ZXIKICAgICAvLyB3aGVuIHdl
IGNvbXBhcmUgYWdhaW5zdCB0aGUgbmV3IHNlbGVjdGVkIG9iamVjdHMuCi0gICAgaW50IG9sZFN0
YXJ0UG9zID0gcm9vdC5zZWxlY3Rpb25TdGFydFBvcygpOwotICAgIGludCBvbGRFbmRQb3MgPSBy
b290LnNlbGVjdGlvbkVuZFBvcygpOwotCi0gICAgLy8gT2JqZWN0cyBlYWNoIGhhdmUgYSBzaW5n
bGUgc2VsZWN0aW9uIHJlY3QgdG8gZXhhbWluZS4KLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVuZGVy
T2JqZWN0Kiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclNlbGVjdGlvbkluZm8+PiBTZWxlY3RlZE9i
amVjdE1hcDsKLSAgICBTZWxlY3RlZE9iamVjdE1hcCBvbGRTZWxlY3RlZE9iamVjdHM7Ci0gICAg
U2VsZWN0ZWRPYmplY3RNYXAgbmV3U2VsZWN0ZWRPYmplY3RzOwotCisgICAgb2xkU2VsZWN0aW9u
RGF0YS5zZWxlY3Rpb25TdGFydFBvcyA9IHJvb3Quc2VsZWN0aW9uU3RhcnRQb3MoKTsKKyAgICBv
bGRTZWxlY3Rpb25EYXRhLnNlbGVjdGlvbkVuZFBvcyA9IHJvb3Quc2VsZWN0aW9uRW5kUG9zKCk7
CisgICAgCiAgICAgLy8gQmxvY2tzIGNvbnRhaW4gc2VsZWN0ZWQgb2JqZWN0cyBhbmQgZmlsbCBn
YXBzIGJldHdlZW4gdGhlbSwgZWl0aGVyIG9uIHRoZSBsZWZ0LCByaWdodCwgb3IgaW4gYmV0d2Vl
biBsaW5lcyBhbmQgYmxvY2tzLgogICAgIC8vIEluIG9yZGVyIHRvIGdldCB0aGUgcmVwYWludCBy
ZWN0IHJpZ2h0LCB3ZSBoYXZlIHRvIGV4YW1pbmUgbGVmdCwgbWlkZGxlLCBhbmQgcmlnaHQgcmVj
dHMgaW5kaXZpZHVhbGx5LCBzaW5jZSBvdGhlcndpc2UKICAgICAvLyB0aGUgdW5pb24gb2YgdGhv
c2UgcmVjdHMgbWlnaHQgcmVtYWluIHRoZSBzYW1lIGV2ZW4gd2hlbiBjaGFuZ2VzIGhhdmUgb2Nj
dXJyZWQuCi0gICAgdHlwZWRlZiBIYXNoTWFwPFJlbmRlckJsb2NrKiwgc3RkOjp1bmlxdWVfcHRy
PFJlbmRlckJsb2NrU2VsZWN0aW9uSW5mbz4+IFNlbGVjdGVkQmxvY2tNYXA7Ci0gICAgU2VsZWN0
ZWRCbG9ja01hcCBvbGRTZWxlY3RlZEJsb2NrczsKLSAgICBTZWxlY3RlZEJsb2NrTWFwIG5ld1Nl
bGVjdGVkQmxvY2tzOwogCiAgICAgUmVuZGVyT2JqZWN0KiBvcyA9IHJvb3Quc2VsZWN0aW9uU3Rh
cnQoKTsKICAgICBSZW5kZXJPYmplY3QqIHN0b3AgPSByZW5kZXJlckFmdGVyUG9zaXRpb24ocm9v
dC5zZWxlY3Rpb25FbmQoKSwgcm9vdC5zZWxlY3Rpb25FbmRQb3MoKSk7CkBAIC05MzMsMTEgKzk1
MCwxMSBAQCB2b2lkIFJlbmRlclZpZXc6OnNldFN1YnRyZWVTZWxlY3Rpb24oU2VsZWN0aW9uU3Vi
dHJlZVJvb3QmIHJvb3QsIFJlbmRlck9iamVjdCogcwogICAgICAgICBpZiAoKG9zLT5jYW5CZVNl
bGVjdGlvbkxlYWYoKSB8fCBvcyA9PSByb290LnNlbGVjdGlvblN0YXJ0KCkgfHwgb3MgPT0gcm9v
dC5zZWxlY3Rpb25FbmQoKSkKICAgICAgICAgICAgICYmIG9zLT5zZWxlY3Rpb25TdGF0ZSgpICE9
IFNlbGVjdGlvbk5vbmUpIHsKICAgICAgICAgICAgIC8vIEJsb2NrcyBhcmUgcmVzcG9uc2libGUg
Zm9yIHBhaW50aW5nIGxpbmUgZ2FwcyBhbmQgbWFyZ2luIGdhcHMuICBUaGV5IG11c3QgYmUgZXhh
bWluZWQgYXMgd2VsbC4KLSAgICAgICAgICAgIG9sZFNlbGVjdGVkT2JqZWN0cy5zZXQob3MsIHN0
ZDo6bWFrZV91bmlxdWU8UmVuZGVyU2VsZWN0aW9uSW5mbz4ob3MsIHRydWUpKTsKKyAgICAgICAg
ICAgIG9sZFNlbGVjdGlvbkRhdGEuc2VsZWN0ZWRPYmplY3RzLnNldChvcywgc3RkOjptYWtlX3Vu
aXF1ZTxSZW5kZXJTZWxlY3Rpb25JbmZvPihvcywgdHJ1ZSkpOwogICAgICAgICAgICAgaWYgKGJs
b2NrUmVwYWludE1vZGUgPT0gUmVwYWludE5ld1hPUk9sZCkgewogICAgICAgICAgICAgICAgIFJl
bmRlckJsb2NrKiBjYiA9IG9zLT5jb250YWluaW5nQmxvY2soKTsKICAgICAgICAgICAgICAgICB3
aGlsZSAoY2IgJiYgIWNiLT5pc1JlbmRlclZpZXcoKSkgewotICAgICAgICAgICAgICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPiYgYmxvY2tJbmZvID0gb2xk
U2VsZWN0ZWRCbG9ja3MuYWRkKGNiLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7CisgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJCbG9ja1NlbGVjdGlvbkluZm8+JiBi
bG9ja0luZm8gPSBvbGRTZWxlY3Rpb25EYXRhLnNlbGVjdGVkQmxvY2tzLmFkZChjYiwgbnVsbHB0
cikuaXRlcmF0b3ItPnZhbHVlOwogICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tJbmZvKQog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGJsb2Nr
SW5mbyA9IHN0ZDo6bWFrZV91bmlxdWU8UmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvPihjYik7CkBA
IC05NDksMTcgKzk2NiwxMyBAQCB2b2lkIFJlbmRlclZpZXc6OnNldFN1YnRyZWVTZWxlY3Rpb24o
U2VsZWN0aW9uU3VidHJlZVJvb3QmIHJvb3QsIFJlbmRlck9iamVjdCogcwogICAgICAgICBvcyA9
IHNlbGVjdGlvbkl0ZXJhdG9yLm5leHQoKTsKICAgICB9CiAKLSAgICAvLyBOb3cgY2xlYXIgdGhl
IHNlbGVjdGlvbi4KLSAgICBTZWxlY3RlZE9iamVjdE1hcDo6aXRlcmF0b3Igb2xkT2JqZWN0c0Vu
ZCA9IG9sZFNlbGVjdGVkT2JqZWN0cy5lbmQoKTsKLSAgICBmb3IgKFNlbGVjdGVkT2JqZWN0TWFw
OjppdGVyYXRvciBpID0gb2xkU2VsZWN0ZWRPYmplY3RzLmJlZ2luKCk7IGkgIT0gb2xkT2JqZWN0
c0VuZDsgKytpKQorICAgIGF1dG8gb2xkT2JqZWN0c0VuZCA9IG9sZFNlbGVjdGlvbkRhdGEuc2Vs
ZWN0ZWRPYmplY3RzLmVuZCgpOworICAgIGZvciAoYXV0byBpID0gb2xkU2VsZWN0aW9uRGF0YS5z
ZWxlY3RlZE9iamVjdHMuYmVnaW4oKTsgaSAhPSBvbGRPYmplY3RzRW5kOyArK2kpCiAgICAgICAg
IGktPmtleS0+c2V0U2VsZWN0aW9uU3RhdGVJZk5lZWRlZChTZWxlY3Rpb25Ob25lKTsKK30KIAot
ICAgIC8vIHNldCBzZWxlY3Rpb24gc3RhcnQgYW5kIGVuZAotICAgIHJvb3Quc2V0U2VsZWN0aW9u
U3RhcnQoc3RhcnQpOwotICAgIHJvb3Quc2V0U2VsZWN0aW9uU3RhcnRQb3Moc3RhcnRQb3MpOwot
ICAgIHJvb3Quc2V0U2VsZWN0aW9uRW5kKGVuZCk7Ci0gICAgcm9vdC5zZXRTZWxlY3Rpb25FbmRQ
b3MoZW5kUG9zKTsKLQordm9pZCBSZW5kZXJWaWV3OjphcHBseVN1YnRyZWVTZWxlY3Rpb24oU2Vs
ZWN0aW9uU3VidHJlZVJvb3QmIHJvb3QsIFJlbmRlck9iamVjdCogc3RhcnQsIFJlbmRlck9iamVj
dCogZW5kLCBpbnQgZW5kUG9zLCBTZWxlY3Rpb25SZXBhaW50TW9kZSBibG9ja1JlcGFpbnRNb2Rl
LCBjb25zdCBPbGRTZWxlY3Rpb25EYXRhJiBvbGRTZWxlY3Rpb25EYXRhKQorewogICAgIC8vIFVw
ZGF0ZSB0aGUgc2VsZWN0aW9uIHN0YXR1cyBvZiBhbGwgb2JqZWN0cyBiZXR3ZWVuIHNlbGVjdGlv
blN0YXJ0IGFuZCBzZWxlY3Rpb25FbmQKICAgICBpZiAoc3RhcnQgJiYgc3RhcnQgPT0gZW5kKQog
ICAgICAgICBzdGFydC0+c2V0U2VsZWN0aW9uU3RhdGVJZk5lZWRlZChTZWxlY3Rpb25Cb3RoKTsK
QEAgLTk3MSw4ICs5ODQsOCBAQCB2b2lkIFJlbmRlclZpZXc6OnNldFN1YnRyZWVTZWxlY3Rpb24o
U2VsZWN0aW9uU3VidHJlZVJvb3QmIHJvb3QsIFJlbmRlck9iamVjdCogcwogICAgIH0KIAogICAg
IFJlbmRlck9iamVjdCogbyA9IHN0YXJ0OwotICAgIHN0b3AgPSByZW5kZXJlckFmdGVyUG9zaXRp
b24oZW5kLCBlbmRQb3MpOwotICAgIHNlbGVjdGlvbkl0ZXJhdG9yID0gU2VsZWN0aW9uSXRlcmF0
b3Iobyk7CisgICAgUmVuZGVyT2JqZWN0KiBzdG9wID0gcmVuZGVyZXJBZnRlclBvc2l0aW9uKGVu
ZCwgZW5kUG9zKTsKKyAgICBTZWxlY3Rpb25JdGVyYXRvciBzZWxlY3Rpb25JdGVyYXRvcihvKTsK
ICAgICAKICAgICB3aGlsZSAobyAmJiBvICE9IHN0b3ApIHsKICAgICAgICAgaWYgKG8gIT0gc3Rh
cnQgJiYgbyAhPSBlbmQgJiYgby0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkpCkBAIC05ODUsNiArOTk4
LDggQEAgdm9pZCBSZW5kZXJWaWV3OjpzZXRTdWJ0cmVlU2VsZWN0aW9uKFNlbGVjdGlvblN1YnRy
ZWVSb290JiByb290LCBSZW5kZXJPYmplY3QqIHMKIAogICAgIC8vIE5vdyB0aGF0IHRoZSBzZWxl
Y3Rpb24gc3RhdGUgaGFzIGJlZW4gdXBkYXRlZCBmb3IgdGhlIG5ldyBvYmplY3RzLCB3YWxrIHRo
ZW0gYWdhaW4gYW5kCiAgICAgLy8gcHV0IHRoZW0gaW4gdGhlIG5ldyBvYmplY3RzIGxpc3QuCisg
ICAgU2VsZWN0ZWRPYmplY3RNYXAgbmV3U2VsZWN0ZWRPYmplY3RzOworICAgIFNlbGVjdGVkQmxv
Y2tNYXAgbmV3U2VsZWN0ZWRCbG9ja3M7CiAgICAgbyA9IHN0YXJ0OwogICAgIHNlbGVjdGlvbkl0
ZXJhdG9yID0gU2VsZWN0aW9uSXRlcmF0b3Iobyk7CiAgICAgd2hpbGUgKG8gJiYgbyAhPSBzdG9w
KSB7CkBAIC0xMDE5LDEzICsxMDM0LDE0IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0U3VidHJlZVNl
bGVjdGlvbihTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwgUmVuZGVyT2JqZWN0KiBzCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIEhhdmUgYW55IG9mIHRoZSBvbGQgc2VsZWN0ZWQgb2JqZWN0
cyBjaGFuZ2VkIGNvbXBhcmVkIHRvIHRoZSBuZXcgc2VsZWN0aW9uPwotICAgIGZvciAoU2VsZWN0
ZWRPYmplY3RNYXA6Oml0ZXJhdG9yIGkgPSBvbGRTZWxlY3RlZE9iamVjdHMuYmVnaW4oKTsgaSAh
PSBvbGRPYmplY3RzRW5kOyArK2kpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBvYmogPSBpLT5r
ZXk7CisgICAgYXV0byBvbGRPYmplY3RzRW5kID0gb2xkU2VsZWN0aW9uRGF0YS5zZWxlY3RlZE9i
amVjdHMuZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0gb2xkU2VsZWN0aW9uRGF0YS5zZWxlY3Rl
ZE9iamVjdHMuYmVnaW4oKTsgaXQgIT0gb2xkT2JqZWN0c0VuZDsgKytpdCkgeworICAgICAgICBS
ZW5kZXJPYmplY3QqIG9iaiA9IGl0LT5rZXk7CiAgICAgICAgIFJlbmRlclNlbGVjdGlvbkluZm8q
IG5ld0luZm8gPSBuZXdTZWxlY3RlZE9iamVjdHMuZ2V0KG9iaik7Ci0gICAgICAgIFJlbmRlclNl
bGVjdGlvbkluZm8qIG9sZEluZm8gPSBpLT52YWx1ZS5nZXQoKTsKKyAgICAgICAgUmVuZGVyU2Vs
ZWN0aW9uSW5mbyogb2xkSW5mbyA9IGl0LT52YWx1ZS5nZXQoKTsKICAgICAgICAgaWYgKCFuZXdJ
bmZvIHx8IG9sZEluZm8tPnJlY3QoKSAhPSBuZXdJbmZvLT5yZWN0KCkgfHwgb2xkSW5mby0+c3Rh
dGUoKSAhPSBuZXdJbmZvLT5zdGF0ZSgpCi0gICAgICAgICAgICB8fCAocm9vdC5zZWxlY3Rpb25T
dGFydCgpID09IG9iaiAmJiBvbGRTdGFydFBvcyAhPSByb290LnNlbGVjdGlvblN0YXJ0UG9zKCkp
Ci0gICAgICAgICAgICB8fCAocm9vdC5zZWxlY3Rpb25FbmQoKSA9PSBvYmogJiYgb2xkRW5kUG9z
ICE9IHJvb3Quc2VsZWN0aW9uRW5kUG9zKCkpKSB7CisgICAgICAgICAgICB8fCAocm9vdC5zZWxl
Y3Rpb25TdGFydCgpID09IG9iaiAmJiBvbGRTZWxlY3Rpb25EYXRhLnNlbGVjdGlvblN0YXJ0UG9z
ICE9IHJvb3Quc2VsZWN0aW9uU3RhcnRQb3MoKSkKKyAgICAgICAgICAgIHx8IChyb290LnNlbGVj
dGlvbkVuZCgpID09IG9iaiAmJiBvbGRTZWxlY3Rpb25EYXRhLnNlbGVjdGlvbkVuZFBvcyAhPSBy
b290LnNlbGVjdGlvbkVuZFBvcygpKSkgewogICAgICAgICAgICAgb2xkSW5mby0+cmVwYWludCgp
OwogICAgICAgICAgICAgaWYgKG5ld0luZm8pIHsKICAgICAgICAgICAgICAgICBuZXdJbmZvLT5y
ZXBhaW50KCk7CkBAIC0xMDM1LDE2ICsxMDUxLDE2IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0U3Vi
dHJlZVNlbGVjdGlvbihTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgcm9vdCwgUmVuZGVyT2JqZWN0KiBz
CiAgICAgfQogCiAgICAgLy8gQW55IG5ldyBvYmplY3RzIHRoYXQgcmVtYWluIHdlcmUgbm90IGZv
dW5kIGluIHRoZSBvbGQgb2JqZWN0cyBkaWN0LCBhbmQgc28gdGhleSBuZWVkIHRvIGJlIHVwZGF0
ZWQuCi0gICAgU2VsZWN0ZWRPYmplY3RNYXA6Oml0ZXJhdG9yIG5ld09iamVjdHNFbmQgPSBuZXdT
ZWxlY3RlZE9iamVjdHMuZW5kKCk7Ci0gICAgZm9yIChTZWxlY3RlZE9iamVjdE1hcDo6aXRlcmF0
b3IgaSA9IG5ld1NlbGVjdGVkT2JqZWN0cy5iZWdpbigpOyBpICE9IG5ld09iamVjdHNFbmQ7ICsr
aSkKLSAgICAgICAgaS0+dmFsdWUtPnJlcGFpbnQoKTsKKyAgICBhdXRvIG5ld09iamVjdHNFbmQg
PSBuZXdTZWxlY3RlZE9iamVjdHMuZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0gbmV3U2VsZWN0
ZWRPYmplY3RzLmJlZ2luKCk7IGl0ICE9IG5ld09iamVjdHNFbmQ7ICsraXQpCisgICAgICAgIGl0
LT52YWx1ZS0+cmVwYWludCgpOwogCiAgICAgLy8gSGF2ZSBhbnkgb2YgdGhlIG9sZCBibG9ja3Mg
Y2hhbmdlZD8KLSAgICBTZWxlY3RlZEJsb2NrTWFwOjppdGVyYXRvciBvbGRCbG9ja3NFbmQgPSBv
bGRTZWxlY3RlZEJsb2Nrcy5lbmQoKTsKLSAgICBmb3IgKFNlbGVjdGVkQmxvY2tNYXA6Oml0ZXJh
dG9yIGkgPSBvbGRTZWxlY3RlZEJsb2Nrcy5iZWdpbigpOyBpICE9IG9sZEJsb2Nrc0VuZDsgKytp
KSB7Ci0gICAgICAgIFJlbmRlckJsb2NrKiBibG9jayA9IGktPmtleTsKKyAgICBhdXRvIG9sZEJs
b2Nrc0VuZCA9IG9sZFNlbGVjdGlvbkRhdGEuc2VsZWN0ZWRCbG9ja3MuZW5kKCk7CisgICAgZm9y
IChhdXRvIGl0ID0gb2xkU2VsZWN0aW9uRGF0YS5zZWxlY3RlZEJsb2Nrcy5iZWdpbigpOyBpdCAh
PSBvbGRCbG9ja3NFbmQ7ICsraXQpIHsKKyAgICAgICAgUmVuZGVyQmxvY2sqIGJsb2NrID0gaXQt
PmtleTsKICAgICAgICAgUmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZvKiBuZXdJbmZvID0gbmV3U2Vs
ZWN0ZWRCbG9ja3MuZ2V0KGJsb2NrKTsKLSAgICAgICAgUmVuZGVyQmxvY2tTZWxlY3Rpb25JbmZv
KiBvbGRJbmZvID0gaS0+dmFsdWUuZ2V0KCk7CisgICAgICAgIFJlbmRlckJsb2NrU2VsZWN0aW9u
SW5mbyogb2xkSW5mbyA9IGl0LT52YWx1ZS5nZXQoKTsKICAgICAgICAgaWYgKCFuZXdJbmZvIHx8
IG9sZEluZm8tPnJlY3RzKCkgIT0gbmV3SW5mby0+cmVjdHMoKSB8fCBvbGRJbmZvLT5zdGF0ZSgp
ICE9IG5ld0luZm8tPnN0YXRlKCkpIHsKICAgICAgICAgICAgIG9sZEluZm8tPnJlcGFpbnQoKTsK
ICAgICAgICAgICAgIGlmIChuZXdJbmZvKSB7CkBAIC0xMDU1LDkgKzEwNzEsOSBAQCB2b2lkIFJl
bmRlclZpZXc6OnNldFN1YnRyZWVTZWxlY3Rpb24oU2VsZWN0aW9uU3VidHJlZVJvb3QmIHJvb3Qs
IFJlbmRlck9iamVjdCogcwogICAgIH0KIAogICAgIC8vIEFueSBuZXcgYmxvY2tzIHRoYXQgcmVt
YWluIHdlcmUgbm90IGZvdW5kIGluIHRoZSBvbGQgYmxvY2tzIGRpY3QsIGFuZCBzbyB0aGV5IG5l
ZWQgdG8gYmUgdXBkYXRlZC4KLSAgICBTZWxlY3RlZEJsb2NrTWFwOjppdGVyYXRvciBuZXdCbG9j
a3NFbmQgPSBuZXdTZWxlY3RlZEJsb2Nrcy5lbmQoKTsKLSAgICBmb3IgKFNlbGVjdGVkQmxvY2tN
YXA6Oml0ZXJhdG9yIGkgPSBuZXdTZWxlY3RlZEJsb2Nrcy5iZWdpbigpOyBpICE9IG5ld0Jsb2Nr
c0VuZDsgKytpKQotICAgICAgICBpLT52YWx1ZS0+cmVwYWludCgpOworICAgIGF1dG8gbmV3Qmxv
Y2tzRW5kID0gbmV3U2VsZWN0ZWRCbG9ja3MuZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0gbmV3
U2VsZWN0ZWRCbG9ja3MuYmVnaW4oKTsgaXQgIT0gbmV3QmxvY2tzRW5kOyArK2l0KQorICAgICAg
ICBpdC0+dmFsdWUtPnJlcGFpbnQoKTsKIH0KIAogdm9pZCBSZW5kZXJWaWV3OjpnZXRTZWxlY3Rp
b24oUmVuZGVyT2JqZWN0KiYgc3RhcnRSZW5kZXJlciwgaW50JiBzdGFydE9mZnNldCwgUmVuZGVy
T2JqZWN0KiYgZW5kUmVuZGVyZXIsIGludCYgZW5kT2Zmc2V0KSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmgKaW5kZXggMGMyNmI2OC4uNGVkNjgzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCkBAIC0zMDQsNyArMzA0LDkgQEAgcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgTGF5b3V0U3RhdGVEaXNhYmxlcjsKIAogICAgIHZvaWQgc3BsaXRTZWxl
Y3Rpb25CZXR3ZWVuU3VidHJlZXMoUmVuZGVyT2JqZWN0KiBzdGFydCwgaW50IHN0YXJ0UG9zLCBS
ZW5kZXJPYmplY3QqIGVuZCwgaW50IGVuZFBvcywgU2VsZWN0aW9uUmVwYWludE1vZGUgYmxvY2tS
ZXBhaW50TW9kZSk7Ci0gICAgdm9pZCBzZXRTdWJ0cmVlU2VsZWN0aW9uKFNlbGVjdGlvblN1YnRy
ZWVSb290JiwgUmVuZGVyT2JqZWN0KiBzdGFydCwgaW50IHN0YXJ0UG9zLCBSZW5kZXJPYmplY3Qq
IGVuZCwgaW50IGVuZFBvcywgU2VsZWN0aW9uUmVwYWludE1vZGUpOworICAgIHZvaWQgY2xlYXJT
dWJ0cmVlU2VsZWN0aW9uKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290JiwgU2VsZWN0aW9uUmVw
YWludE1vZGUsIE9sZFNlbGVjdGlvbkRhdGEmKTsKKyAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbkZv
clN1YnRyZWVzKFJlbmRlclN1YnRyZWVzTWFwJiwgU2VsZWN0aW9uUmVwYWludE1vZGUpOworICAg
IHZvaWQgYXBwbHlTdWJ0cmVlU2VsZWN0aW9uKFNlbGVjdGlvblN1YnRyZWVSb290JiwgUmVuZGVy
T2JqZWN0KiBzdGFydCwgUmVuZGVyT2JqZWN0KiBlbmQsIGludCBlbmRQb3MsIFNlbGVjdGlvblJl
cGFpbnRNb2RlLCBjb25zdCBPbGRTZWxlY3Rpb25EYXRhJik7CiAgICAgTGF5b3V0UmVjdCBzdWJ0
cmVlU2VsZWN0aW9uQm91bmRzKGNvbnN0IFNlbGVjdGlvblN1YnRyZWVSb290JiwgYm9vbCBjbGlw
VG9WaXNpYmxlQ29udGVudCA9IHRydWUpIGNvbnN0OwogICAgIHZvaWQgcmVwYWludFN1YnRyZWVT
ZWxlY3Rpb24oY29uc3QgU2VsZWN0aW9uU3VidHJlZVJvb3QmKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5jcHAKaW5kZXggNWNm
ZDNmYy4uZmFmYWVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVj
dGlvblN1YnRyZWVSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0
aW9uU3VidHJlZVJvb3QuY3BwCkBAIC00NSw2ICs0NSwxNCBAQCBTZWxlY3Rpb25TdWJ0cmVlUm9v
dDo6U2VsZWN0aW9uU3VidHJlZVJvb3QoKQogewogfQogCitTZWxlY3Rpb25TdWJ0cmVlUm9vdDo6
U2VsZWN0aW9uU3VidHJlZVJvb3QoUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25TdGFydCwgaW50IHNl
bGVjdGlvblN0YXJ0UG9zLCBSZW5kZXJPYmplY3QqIHNlbGVjdGlvbkVuZCwgaW50IHNlbGVjdGlv
bkVuZFBvcykKKyAgICA6IG1fc2VsZWN0aW9uU3RhcnQoc2VsZWN0aW9uU3RhcnQpCisgICAgLCBt
X3NlbGVjdGlvblN0YXJ0UG9zKHNlbGVjdGlvblN0YXJ0UG9zKQorICAgICwgbV9zZWxlY3Rpb25F
bmQoc2VsZWN0aW9uRW5kKQorICAgICwgbV9zZWxlY3Rpb25FbmRQb3Moc2VsZWN0aW9uRW5kUG9z
KQoreworfQorCiB2b2lkIFNlbGVjdGlvblN1YnRyZWVSb290OjphZGp1c3RGb3JWaXNpYmxlU2Vs
ZWN0aW9uKERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAgICBpZiAoc2VsZWN0aW9uQ2xlYXIoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25TdWJ0cmVlUm9v
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290LmgKaW5k
ZXggMzVjZWYxMS4uNDJjNWM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NlbGVjdGlvblN1YnRyZWVSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Nl
bGVjdGlvblN1YnRyZWVSb290LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgU2VsZWN0aW9u
U3VidHJlZVJvb3RfaAogCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVu
ZGVyU2VsZWN0aW9uSW5mby5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4LDggKzM5
LDI4IEBAIGNsYXNzIERvY3VtZW50OwogCiBjbGFzcyBTZWxlY3Rpb25TdWJ0cmVlUm9vdCB7CiBw
dWJsaWM6CisgICAgCisgICAgdHlwZWRlZiBIYXNoTWFwPFJlbmRlck9iamVjdCosIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTZWxlY3Rpb25JbmZvPj4gU2VsZWN0ZWRPYmplY3RNYXA7CisgICAgdHlw
ZWRlZiBIYXNoTWFwPFJlbmRlckJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPFJlbmRlckJsb2NrU2Vs
ZWN0aW9uSW5mbz4+IFNlbGVjdGVkQmxvY2tNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFNlbGVj
dGlvblN1YnRyZWVSb290KiwgU2VsZWN0aW9uU3VidHJlZVJvb3Q+IFJlbmRlclN1YnRyZWVzTWFw
OworCisgICAgc3RydWN0IE9sZFNlbGVjdGlvbkRhdGEgeworICAgICAgICBPbGRTZWxlY3Rpb25E
YXRhKCkKKyAgICAgICAgICAgIDogc2VsZWN0aW9uU3RhcnRQb3MoLTEpCisgICAgICAgICAgICAs
IHNlbGVjdGlvbkVuZFBvcygtMSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgaW50
IHNlbGVjdGlvblN0YXJ0UG9zOworICAgICAgICBpbnQgc2VsZWN0aW9uRW5kUG9zOworICAgICAg
ICBTZWxlY3RlZE9iamVjdE1hcCBzZWxlY3RlZE9iamVjdHM7CisgICAgICAgIFNlbGVjdGVkQmxv
Y2tNYXAgc2VsZWN0ZWRCbG9ja3M7CisgICAgfTsKKyAgICAKKyAgICB0eXBlZGVmIEhhc2hNYXA8
U2VsZWN0aW9uU3VidHJlZVJvb3QqLCBzdGQ6OnVuaXF1ZV9wdHI8T2xkU2VsZWN0aW9uRGF0YT4+
IFN1YnRyZWVPbGRTZWxlY3Rpb25EYXRhTWFwOwogCiAgICAgU2VsZWN0aW9uU3VidHJlZVJvb3Qo
KTsKKyAgICBTZWxlY3Rpb25TdWJ0cmVlUm9vdChSZW5kZXJPYmplY3QqIHNlbGVjdGlvblN0YXJ0
LCBpbnQgc2VsZWN0aW9uU3RhcnRQb3MsIFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kLCBpbnQg
c2VsZWN0aW9uRW5kUG9zKTsKIAogICAgIFJlbmRlck9iamVjdCogc2VsZWN0aW9uU3RhcnQoKSBj
b25zdCB7IHJldHVybiBtX3NlbGVjdGlvblN0YXJ0OyB9CiAgICAgaW50IHNlbGVjdGlvblN0YXJ0
UG9zKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25TdGFydFBvczsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>