<?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>159598</bug_id>
          
          <creation_ts>2016-07-09 02:07:19 -0700</creation_ts>
          <short_desc>Implement grapheme cluster iterator on StringView</short_desc>
          <delta_ts>2016-07-12 00:23:48 -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>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>159594</dependson>
    
    <dependson>159669</dependson>
          <blocked>159607</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1209426</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-07-09 02:07:19 -0700</bug_when>
    <thetext>Implement grapheme cluster iterator on StringView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209427</commentid>
    <comment_count>1</comment_count>
      <attachid>283253</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-07-09 02:08:29 -0700</bug_when>
    <thetext>Created attachment 283253
Needs tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209428</commentid>
    <comment_count>2</comment_count>
      <attachid>283254</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-07-09 02:13:49 -0700</bug_when>
    <thetext>Created attachment 283254
Needs tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209505</commentid>
    <comment_count>3</comment_count>
      <attachid>283278</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-07-09 19:47:43 -0700</bug_when>
    <thetext>Created attachment 283278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209539</commentid>
    <comment_count>4</comment_count>
      <attachid>283287</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-07-10 10:30:40 -0700</bug_when>
    <thetext>Created attachment 283287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209548</commentid>
    <comment_count>5</comment_count>
      <attachid>283289</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-07-10 12:43:51 -0700</bug_when>
    <thetext>Created attachment 283289
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209755</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-07-11 12:51:26 -0700</bug_when>
    <thetext>Committed r203078: &lt;http://trac.webkit.org/changeset/203078&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283253</attachid>
            <date>2016-07-09 02:08:29 -0700</date>
            <delta_ts>2016-07-09 02:13:47 -0700</delta_ts>
            <desc>Needs tests</desc>
            <filename>bug-159598-20160709020752.patch</filename>
            <type>text/plain</type>
            <size>9709</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmOWZjNzU2YjZkNjkxOGJlMzljZjQw
ZDA4ODRmMjZmNWQzNTc1NmIuLmVhOTk5OGRkN2M5ZDgxNGRkMzZlYjhjOGU2ZjQ2MTBkZWU5YmRk
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMDctMDkgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgZ3JhcGhlbWUgY2x1c3Rl
ciBpdGVyYXRvciBvbiBTdHJpbmdWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTk1OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAgICAoV1RG
OjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SW1wbDo6SW1wbCk6Cisg
ICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBs
OjpvcGVyYXRvcisrKToKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVy
czo6SXRlcmF0b3I6OkltcGw6Om9wZXJhdG9yKik6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6
OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBsOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KFdURjo6U3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6OkltcGw6OmNvbXB1
dGVJbmRleEVuZCk6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6
Okl0ZXJhdG9yOjpJdGVyYXRvcik6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1l
Q2x1c3RlcnM6Okl0ZXJhdG9yOjp+SXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3
OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6b3BlcmF0b3IqKToKKyAgICAgICAgKFdURjo6
U3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6b3BlcmF0
b3IhPSk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RGOjpT
dHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpHcmFwaGVtZUNsdXN0ZXJzKToKKwogMjAxNi0w
Ny0wOCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwMjc5OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMDk0ZTc0YjBj
NDQ0YmE0ODIwYWEyYTNhZTYwMzcxZGRmNTFmZTJhLi4yOTI4ZGExMTkzODYyNmE5OTEzZDA3NjUx
MzQwY2U1MzE1NDUwYTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDctMDkg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgZ3JhcGhlbWUgY2x1c3RlciBpdGVyYXRvciBvbiBTdHJpbmdWaWV3CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk1OTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMh
KS4KKworICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6Tm9uU2hhcmVk
Q2hhcmFjdGVyQnJlYWtJdGVyYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0QnJl
YWtJdGVyYXRvci5oOgorCiAyMDE2LTA3LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgYWRvcHROb2RlKCkgY2hhbmdlcyBjc3MgY2xhc3MgdG8gbG93ZXJjYXNl
IGZvciBkb2N1bWVudCBsb2FkZWQgd2l0aCBYSFIgcmVzcG9uc2VUeXBlID0gImRvY3VtZW50Igpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5kZXggZTIwNjcxN2MwNzEyODljNmQ2MDM3Y2Mz
NDA4M2FjZTNkOWRiMDRiOC4uYmU4MmFjZGY0MDZmODgxMTQwMjRjZmFiZmI1MDA3MWUyMzhiYjNk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0zMSw2ICszMSw3IEBAIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVy
YXRvci5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjguaD4KIAogbmFtZXNwYWNlIFdURiB7
CkBAIC05MSw2ICs5Miw4NyBAQCBzaXplX3QgU3RyaW5nVmlldzo6ZmluZChTdHJpbmdWaWV3IG1h
dGNoU3RyaW5nLCB1bnNpZ25lZCBzdGFydCkgY29uc3QKICAgICByZXR1cm4gZmluZENvbW1vbigq
dGhpcywgbWF0Y2hTdHJpbmcsIHN0YXJ0KTsKIH0KIAorY2xhc3MgU3RyaW5nVmlldzo6R3JhcGhl
bWVDbHVzdGVyczo6SXRlcmF0b3I6OkltcGwgeworcHVibGljOgorICAgIEltcGwoY29uc3QgU3Ry
aW5nVmlldyYgc3RyaW5nVmlldywgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciYmIGl0
ZXJhdG9yLCB1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgaW5kZXhFbmQpCisgICAgICAgIDogbV9z
dHJpbmdWaWV3KHN0cmluZ1ZpZXcpCisgICAgICAgICwgbV9pdGVyYXRvcihXVEZNb3ZlKGl0ZXJh
dG9yKSkKKyAgICAgICAgLCBtX2luZGV4KGluZGV4KQorICAgICAgICAsIG1faW5kZXhFbmQoY29t
cHV0ZUluZGV4RW5kKCkpCisgICAgeworICAgIH0KKworICAgIHZvaWQgb3BlcmF0b3IrKygpCisg
ICAgeworICAgICAgICBBU1NFUlQobV9pbmRleEVuZCA+IG1faW5kZXgpOworICAgICAgICBtX2lu
ZGV4ID0gbV9pbmRleEVuZDsKKyAgICAgICAgbV9pbmRleEVuZCA9IGNvbXB1dGVJbmRleEVuZCgp
OworICAgIH0KKworICAgIFN0cmluZ1ZpZXcgb3BlcmF0b3IqKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmIChtX3N0cmluZ1ZpZXcuaXM4Qml0KCkpCisgICAgICAgICAgICByZXR1cm4gU3RyaW5n
VmlldyhtX3N0cmluZ1ZpZXcuY2hhcmFjdGVyczgoKSArIG1faW5kZXgsIG1faW5kZXhFbmQgLSBt
X2luZGV4KTsKKyAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmdWaWV3LmNoYXJhY3Rl
cnMxNigpICsgbV9pbmRleCwgbV9pbmRleEVuZCAtIG1faW5kZXgpOworICAgIH0KKworICAgIGJv
b2wgb3BlcmF0b3I9PShJbXBsIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCZt
X3N0cmluZ1ZpZXcgPT0gJm90aGVyLm1fc3RyaW5nVmlldyk7CisgICAgICAgIGF1dG8gcmVzdWx0
ID0gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OworICAgICAgICBBU1NFUlQoIXJlc3VsdCB8fCBt
X2luZGV4RW5kID09IG90aGVyLm1faW5kZXhFbmQpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKworICAgIHVuc2lnbmVkIGNvbXB1dGVJbmRleEVuZCgpCisgICAgeworICAgICAgICBp
ZiAobV9pbmRleCA9PSBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4g
bV9pbmRleDsKKyAgICAgICAgcmV0dXJuIHRleHRCcmVha0ZvbGxvd2luZyhtX2l0ZXJhdG9yLCBt
X2luZGV4KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgU3RyaW5nVmlldyYgbV9zdHJp
bmdWaWV3OworICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgbV9pdGVyYXRvcjsK
KyAgICB1bnNpZ25lZCBtX2luZGV4OworICAgIHVuc2lnbmVkIG1faW5kZXhFbmQ7Cit9OworCitT
dHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3IoY29uc3QgU3Ry
aW5nVmlldyYgc3RyaW5nVmlldywgdW5zaWduZWQgaW5kZXgpCisgICAgOiBtX2ltcGwoc3RkOjpt
YWtlX3VuaXF1ZTxJbXBsPihzdHJpbmdWaWV3LCBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yKG1fc3RyaW5nVmlldyksIGluZGV4KSkKK3sKK30KKworU3RyaW5nVmlldzo6R3JhcGhlbWVD
bHVzdGVyczo6SXRlcmF0b3I6On5JdGVyYXRvcigpCit7Cit9CisKK1N0cmluZ1ZpZXc6OkdyYXBo
ZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJdGVyYXRvcihJdGVyYXRvciYmIG90aGVyKQorICAgIDog
bV9pbXBsKFdURk1vdmUob3RoZXIpKQoreworfQorCithdXRvIFN0cmluZ1ZpZXc6OkdyYXBoZW1l
Q2x1c3RlcnM6Okl0ZXJhdG9yOjpvcGVyYXRvcisrKCkgLT4gSXRlcmF0b3ImCit7CisgICAgKyso
Km1faW1wbCk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitTdHJpbmdWaWV3IFN0cmluZ1ZpZXc6
OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpvcGVyYXRvciooKSBjb25zdAoreworICAgIHJl
dHVybiAqKm1faW1wbDsKK30KKworYm9vbCBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJ
dGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0Cit7CisgICAg
cmV0dXJuICptX2ltcGwgPT0gb3RoZXItPm1faW1wbDsKK30KKworYm9vbCBTdHJpbmdWaWV3OjpH
cmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworfQorCiAjaWYgQ0hF
Q0tfU1RSSU5HVklFV19MSUZFVElNRQogCiAvLyBNYW5hZ2UgcmVmZXJlbmNlIGNvdW50IG1hbnVh
bGx5IHNvIFVuZGVybHlpbmdTdHJpbmcgZG9lcyBub3QgbmVlZCB0byBiZSBkZWZpbmVkIGluIHRo
ZSBoZWFkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDNhZWY0ZGJiZjg5NDdmZGFh
MTg1NzQyZjhhOTI3YTc0OTM5ZTA4MmUuLjNiZjBjZWYyYTAwZDQzMzc4YTM1ZjFmNjFkZTVhOTM2
ZmRkNjZkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC04Miw2ICs4Miw5IEBAIHB1
YmxpYzoKICAgICBjbGFzcyBDb2RlUG9pbnRzOwogICAgIENvZGVQb2ludHMgY29kZVBvaW50cygp
IGNvbnN0OwogCisgICAgY2xhc3MgR3JhcGhlbWVDbHVzdGVyczsKKyAgICBHcmFwaGVtZUNsdXN0
ZXJzIGdyYXBoZW1lQ2x1c3RlcnMoKSBjb25zdDsKKwogICAgIGJvb2wgaXM4Qml0KCkgY29uc3Q7
CiAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3Q7CiAgICAgY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMxNigpIGNvbnN0OwpAQCAtNTgwLDYgKzU4MywxOCBAQCBpbmxpbmUgYm9vbCBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgYSwgY29uc3QgY2hhciogYikKICAgICBy
ZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1vbihhLCBiKTsKIH0KIAorY2xhc3MgU3Ry
aW5nVmlldzo6R3JhcGhlbWVDbHVzdGVycyB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgR3JhcGhl
bWVDbHVzdGVycyhjb25zdCBTdHJpbmdWaWV3Jik7CisKKyAgICBjbGFzcyBJdGVyYXRvcjsKKyAg
ICBJdGVyYXRvciBiZWdpbigpIGNvbnN0OworICAgIEl0ZXJhdG9yIGVuZCgpIGNvbnN0OworCitw
cml2YXRlOgorICAgIFN0cmluZ1ZpZXcgbV9zdHJpbmdWaWV3OworfTsKKwogY2xhc3MgU3RyaW5n
Vmlldzo6Q29kZVBvaW50cyB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ29kZVBvaW50cyhjb25z
dCBTdHJpbmdWaWV3Jik7CkBAIC02MDQsNiArNjE5LDI5IEBAIHByaXZhdGU6CiAgICAgU3RyaW5n
VmlldyBtX3N0cmluZ1ZpZXc7CiB9OwogCitjbGFzcyBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0
ZXJzOjpJdGVyYXRvciB7CitwdWJsaWM6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEl0ZXJhdG9y
KCkgPSBkZWxldGU7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEl0ZXJhdG9yKGNvbnN0IFN0cmlu
Z1ZpZXcmLCB1bnNpZ25lZCBpbmRleCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5JdGVyYXRv
cigpOworCisgICAgSXRlcmF0b3IoY29uc3QgSXRlcmF0b3ImKSA9IGRlbGV0ZTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgSXRlcmF0b3IoSXRlcmF0b3ImJik7CisgICAgSXRlcmF0b3ImIG9wZXJh
dG9yPShjb25zdCBJdGVyYXRvciYpID0gZGVsZXRlOworICAgIEl0ZXJhdG9yJiBvcGVyYXRvcj0o
SXRlcmF0b3ImJikgPSBkZWxldGU7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmll
dyBvcGVyYXRvciooKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgSXRlcmF0b3ImIG9w
ZXJhdG9yKysoKTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIG9wZXJhdG9yPT0oY29u
c3QgSXRlcmF0b3ImKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEl0ZXJhdG9yJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgY2xhc3MgSW1wbDsK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbXBsPiBtX2ltcGw7Cit9OworCiBjbGFzcyBTdHJpbmdW
aWV3OjpDb2RlUG9pbnRzOjpJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgSXRlcmF0b3IoY29uc3Qg
U3RyaW5nVmlldyYsIHVuc2lnbmVkIGluZGV4KTsKQEAgLTYzNyw2ICs2NzUsMTEgQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX2luZGV4OwogfTsKIAoraW5saW5lIGF1dG8gU3RyaW5nVmlldzo6
Z3JhcGhlbWVDbHVzdGVycygpIGNvbnN0IC0+IEdyYXBoZW1lQ2x1c3RlcnMKK3sKKyAgICByZXR1
cm4gR3JhcGhlbWVDbHVzdGVycygqdGhpcyk7Cit9CisKIGlubGluZSBhdXRvIFN0cmluZ1ZpZXc6
OmNvZGVQb2ludHMoKSBjb25zdCAtPiBDb2RlUG9pbnRzCiB7CiAgICAgcmV0dXJuIENvZGVQb2lu
dHMoKnRoaXMpOwpAQCAtNjQ3LDYgKzY5MCwyMSBAQCBpbmxpbmUgYXV0byBTdHJpbmdWaWV3Ojpj
b2RlVW5pdHMoKSBjb25zdCAtPiBDb2RlVW5pdHMKICAgICByZXR1cm4gQ29kZVVuaXRzKCp0aGlz
KTsKIH0KIAoraW5saW5lIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6OkdyYXBoZW1lQ2x1
c3RlcnMoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldykKKyAgICA6IG1fc3RyaW5nVmlldyhz
dHJpbmdWaWV3KQoreworfQorCitpbmxpbmUgYXV0byBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0
ZXJzOjpiZWdpbigpIGNvbnN0IC0+IEl0ZXJhdG9yCit7CisgICAgcmV0dXJuIEl0ZXJhdG9yKG1f
c3RyaW5nVmlldywgMCk7Cit9CisKK2lubGluZSBhdXRvIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1
c3RlcnM6OmVuZCgpIGNvbnN0IC0+IEl0ZXJhdG9yCit7CisgICAgcmV0dXJuIEl0ZXJhdG9yKG1f
c3RyaW5nVmlldywgbV9zdHJpbmdWaWV3Lmxlbmd0aCgpKTsKK30KKwogaW5saW5lIFN0cmluZ1Zp
ZXc6OkNvZGVQb2ludHM6OkNvZGVQb2ludHMoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldykK
ICAgICA6IG1fc3RyaW5nVmlldyhzdHJpbmdWaWV3KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcAppbmRleCBhMGE2NmNlMGI3ZWQx
NDdhZTdjNmIzZDdiOTcwOTgyM2U3ZmUzMjVmLi43OTZhZDA4YmJlZmQ3MDE3OWU1Yjc5ZDRmNDlm
MjdlYzc0NmM2ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9yLmNwcApAQCAtODE5LDcgKzgxOSw3IEBAIE5vblNoYXJlZENoYXJhY3Rl
ckJyZWFrSXRlcmF0b3I6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoU3RyaW5nVmll
dyBzdHJpCiB7CiAgICAgbV9pdGVyYXRvciA9IG5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0
b3I7CiAKLSAgICBib29sIGNyZWF0ZWRJdGVyYXRvciA9IG1faXRlcmF0b3IgJiYgY29tcGFyZUFu
ZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKG1faXRlcmF0b3IsIDApOworICAg
IGJvb2wgY3JlYXRlZEl0ZXJhdG9yID0gbV9pdGVyYXRvciAmJiBjb21wYXJlQW5kU3dhcE5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IobV9pdGVyYXRvciwgbnVsbHB0cik7CiAgICAgaWYg
KCFjcmVhdGVkSXRlcmF0b3IpCiAgICAgICAgIG1faXRlcmF0b3IgPSBpbml0aWFsaXplSXRlcmF0
b3IoVUJSS19DSEFSQUNURVIpOwogICAgIGlmICghbV9pdGVyYXRvcikKQEAgLTgzNCw2ICs4MzQs
MTIgQEAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6fk5vblNoYXJlZENoYXJhY3Rl
ckJyZWFrSXRlcmF0b3IoKQogICAgICAgICB1YnJrX2Nsb3NlKHJlaW50ZXJwcmV0X2Nhc3Q8VUJy
ZWFrSXRlcmF0b3IqPihtX2l0ZXJhdG9yKSk7CiB9CiAKK05vblNoYXJlZENoYXJhY3RlckJyZWFr
SXRlcmF0b3I6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoTm9uU2hhcmVkQ2hhcmFj
dGVyQnJlYWtJdGVyYXRvciYmIG90aGVyKQorICAgIDogbV9pdGVyYXRvcihudWxscHRyKQorewor
ICAgIHN0ZDo6c3dhcChtX2l0ZXJhdG9yLCBvdGhlci5tX2l0ZXJhdG9yKTsKK30KKwogCiAvLyBJ
dGVyYXRvciBpbXBsZW1lbmF0aW9uLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKaW5kZXggNmExYzIzNTBiNDc2N2Q2Y2UxYzM0ZGUyYzM0
YzIyZDQzNTIyYzU4ZS4uZWMyZmE2NGI3YmI1ZTlhNDkxODE3YzkxYTFmNWFiMGEzZDY0M2JjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3Iu
aApAQCAtMTk4LDYgKzE5OCw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBOb25TaGFy
ZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcpOwogICAgIFdFQkNPUkVfRVhQT1JU
IH5Ob25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKCk7CiAKKyAgICBOb25TaGFyZWRDaGFy
YWN0ZXJCcmVha0l0ZXJhdG9yKE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3ImJik7CisK
ICAgICBvcGVyYXRvciBUZXh0QnJlYWtJdGVyYXRvciooKSBjb25zdCB7IHJldHVybiBtX2l0ZXJh
dG9yOyB9CiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283254</attachid>
            <date>2016-07-09 02:13:49 -0700</date>
            <delta_ts>2016-07-09 19:47:41 -0700</delta_ts>
            <desc>Needs tests</desc>
            <filename>bug-159598-20160709021312.patch</filename>
            <type>text/plain</type>
            <size>9704</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmOWZjNzU2YjZkNjkxOGJlMzljZjQw
ZDA4ODRmMjZmNWQzNTc1NmIuLmVhOTk5OGRkN2M5ZDgxNGRkMzZlYjhjOGU2ZjQ2MTBkZWU5YmRk
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMDctMDkgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgZ3JhcGhlbWUgY2x1c3Rl
ciBpdGVyYXRvciBvbiBTdHJpbmdWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTk1OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAgICAoV1RG
OjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SW1wbDo6SW1wbCk6Cisg
ICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBs
OjpvcGVyYXRvcisrKToKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVy
czo6SXRlcmF0b3I6OkltcGw6Om9wZXJhdG9yKik6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6
OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBsOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KFdURjo6U3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6OkltcGw6OmNvbXB1
dGVJbmRleEVuZCk6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6
Okl0ZXJhdG9yOjpJdGVyYXRvcik6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1l
Q2x1c3RlcnM6Okl0ZXJhdG9yOjp+SXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3
OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6b3BlcmF0b3IqKToKKyAgICAgICAgKFdURjo6
U3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6b3BlcmF0
b3IhPSk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RGOjpT
dHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpHcmFwaGVtZUNsdXN0ZXJzKToKKwogMjAxNi0w
Ny0wOCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwMjc5OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMDk0ZTc0YjBj
NDQ0YmE0ODIwYWEyYTNhZTYwMzcxZGRmNTFmZTJhLi4yOTI4ZGExMTkzODYyNmE5OTEzZDA3NjUx
MzQwY2U1MzE1NDUwYTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDctMDkg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgZ3JhcGhlbWUgY2x1c3RlciBpdGVyYXRvciBvbiBTdHJpbmdWaWV3CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk1OTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMh
KS4KKworICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6Tm9uU2hhcmVk
Q2hhcmFjdGVyQnJlYWtJdGVyYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0QnJl
YWtJdGVyYXRvci5oOgorCiAyMDE2LTA3LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgYWRvcHROb2RlKCkgY2hhbmdlcyBjc3MgY2xhc3MgdG8gbG93ZXJjYXNl
IGZvciBkb2N1bWVudCBsb2FkZWQgd2l0aCBYSFIgcmVzcG9uc2VUeXBlID0gImRvY3VtZW50Igpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5kZXggZTIwNjcxN2MwNzEyODljNmQ2MDM3Y2Mz
NDA4M2FjZTNkOWRiMDRiOC4uZWZhY2MwYmM4NDZmN2YyM2E4ZDY4NjIwZjU0ZjU4ZTNhNDM0OTZl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0zMSw2ICszMSw3IEBAIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVy
YXRvci5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjguaD4KIAogbmFtZXNwYWNlIFdURiB7
CkBAIC05MSw2ICs5Miw4NyBAQCBzaXplX3QgU3RyaW5nVmlldzo6ZmluZChTdHJpbmdWaWV3IG1h
dGNoU3RyaW5nLCB1bnNpZ25lZCBzdGFydCkgY29uc3QKICAgICByZXR1cm4gZmluZENvbW1vbigq
dGhpcywgbWF0Y2hTdHJpbmcsIHN0YXJ0KTsKIH0KIAorY2xhc3MgU3RyaW5nVmlldzo6R3JhcGhl
bWVDbHVzdGVyczo6SXRlcmF0b3I6OkltcGwgeworcHVibGljOgorICAgIEltcGwoY29uc3QgU3Ry
aW5nVmlldyYgc3RyaW5nVmlldywgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciYmIGl0
ZXJhdG9yLCB1bnNpZ25lZCBpbmRleCkKKyAgICAgICAgOiBtX3N0cmluZ1ZpZXcoc3RyaW5nVmll
dykKKyAgICAgICAgLCBtX2l0ZXJhdG9yKFdURk1vdmUoaXRlcmF0b3IpKQorICAgICAgICAsIG1f
aW5kZXgoaW5kZXgpCisgICAgICAgICwgbV9pbmRleEVuZChjb21wdXRlSW5kZXhFbmQoKSkKKyAg
ICB7CisgICAgfQorCisgICAgdm9pZCBvcGVyYXRvcisrKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChtX2luZGV4RW5kID4gbV9pbmRleCk7CisgICAgICAgIG1faW5kZXggPSBtX2luZGV4RW5kOwor
ICAgICAgICBtX2luZGV4RW5kID0gY29tcHV0ZUluZGV4RW5kKCk7CisgICAgfQorCisgICAgU3Ry
aW5nVmlldyBvcGVyYXRvciooKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fc3RyaW5nVmll
dy5pczhCaXQoKSkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nVmlldy5j
aGFyYWN0ZXJzOCgpICsgbV9pbmRleCwgbV9pbmRleEVuZCAtIG1faW5kZXgpOworICAgICAgICBy
ZXR1cm4gU3RyaW5nVmlldyhtX3N0cmluZ1ZpZXcuY2hhcmFjdGVyczE2KCkgKyBtX2luZGV4LCBt
X2luZGV4RW5kIC0gbV9pbmRleCk7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEltcGwmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCZtX3N0cmluZ1ZpZXcg
PT0gJm90aGVyLm1fc3RyaW5nVmlldyk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9pbmRleCA9
PSBvdGhlci5tX2luZGV4OworICAgICAgICBBU1NFUlQoIXJlc3VsdCB8fCBtX2luZGV4RW5kID09
IG90aGVyLm1faW5kZXhFbmQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAg
IHVuc2lnbmVkIGNvbXB1dGVJbmRleEVuZCgpCisgICAgeworICAgICAgICBpZiAobV9pbmRleCA9
PSBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkpCisgICAgICAgICAgICByZXR1cm4gbV9pbmRleDsKKyAg
ICAgICAgcmV0dXJuIHRleHRCcmVha0ZvbGxvd2luZyhtX2l0ZXJhdG9yLCBtX2luZGV4KTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgU3RyaW5nVmlldyYgbV9zdHJpbmdWaWV3OworICAg
IE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgbV9pdGVyYXRvcjsKKyAgICB1bnNpZ25l
ZCBtX2luZGV4OworICAgIHVuc2lnbmVkIG1faW5kZXhFbmQ7Cit9OworCitTdHJpbmdWaWV3OjpH
cmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3IoY29uc3QgU3RyaW5nVmlldyYgc3Ry
aW5nVmlldywgdW5zaWduZWQgaW5kZXgpCisgICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxJ
bXBsPihzdHJpbmdWaWV3LCBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHN0cmluZ1Zp
ZXcpLCBpbmRleCkpCit7Cit9CisKK1N0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJh
dG9yOjp+SXRlcmF0b3IoKQoreworfQorCitTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJ
dGVyYXRvcjo6SXRlcmF0b3IoSXRlcmF0b3ImJiBvdGhlcikKKyAgICA6IG1faW1wbChXVEZNb3Zl
KG90aGVyLm1faW1wbCkpCit7Cit9CisKK2F1dG8gU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVy
czo6SXRlcmF0b3I6Om9wZXJhdG9yKysoKSAtPiBJdGVyYXRvciYKK3sKKyAgICArKygqbV9pbXBs
KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1N0cmluZ1ZpZXcgU3RyaW5nVmlldzo6R3JhcGhl
bWVDbHVzdGVyczo6SXRlcmF0b3I6Om9wZXJhdG9yKigpIGNvbnN0Cit7CisgICAgcmV0dXJuICoq
bV9pbXBsOworfQorCitib29sIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9y
OjpvcGVyYXRvcj09KGNvbnN0IEl0ZXJhdG9yJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4g
Km1faW1wbCA9PSAqKG90aGVyLm1faW1wbCk7Cit9CisKK2Jvb2wgU3RyaW5nVmlldzo6R3JhcGhl
bWVDbHVzdGVyczo6SXRlcmF0b3I6Om9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSBj
b25zdAoreworICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKK30KKwogI2lmIENIRUNLX1NU
UklOR1ZJRVdfTElGRVRJTUUKIAogLy8gTWFuYWdlIHJlZmVyZW5jZSBjb3VudCBtYW51YWxseSBz
byBVbmRlcmx5aW5nU3RyaW5nIGRvZXMgbm90IG5lZWQgdG8gYmUgZGVmaW5lZCBpbiB0aGUgaGVh
ZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCAzYWVmNGRiYmY4OTQ3ZmRhYTE4NTc0
MmY4YTkyN2E3NDkzOWUwODJlLi4zYmYwY2VmMmEwMGQ0MzM3OGEzNWYxZjYxZGU1YTkzNmZkZDY2
ZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtODIsNiArODIsOSBAQCBwdWJsaWM6
CiAgICAgY2xhc3MgQ29kZVBvaW50czsKICAgICBDb2RlUG9pbnRzIGNvZGVQb2ludHMoKSBjb25z
dDsKIAorICAgIGNsYXNzIEdyYXBoZW1lQ2x1c3RlcnM7CisgICAgR3JhcGhlbWVDbHVzdGVycyBn
cmFwaGVtZUNsdXN0ZXJzKCkgY29uc3Q7CisKICAgICBib29sIGlzOEJpdCgpIGNvbnN0OwogICAg
IGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0OwogICAgIGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzMTYoKSBjb25zdDsKQEAgLTU4MCw2ICs1ODMsMTggQEAgaW5saW5lIGJvb2wgZXF1YWxJ
Z25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdWaWV3IGEsIGNvbnN0IGNoYXIqIGIpCiAgICAgcmV0dXJu
IGVxdWFsSWdub3JpbmdBU0NJSUNhc2VDb21tb24oYSwgYik7CiB9CiAKK2NsYXNzIFN0cmluZ1Zp
ZXc6OkdyYXBoZW1lQ2x1c3RlcnMgeworcHVibGljOgorICAgIGV4cGxpY2l0IEdyYXBoZW1lQ2x1
c3RlcnMoY29uc3QgU3RyaW5nVmlldyYpOworCisgICAgY2xhc3MgSXRlcmF0b3I7CisgICAgSXRl
cmF0b3IgYmVnaW4oKSBjb25zdDsKKyAgICBJdGVyYXRvciBlbmQoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBTdHJpbmdWaWV3IG1fc3RyaW5nVmlldzsKK307CisKIGNsYXNzIFN0cmluZ1ZpZXc6
OkNvZGVQb2ludHMgewogcHVibGljOgogICAgIGV4cGxpY2l0IENvZGVQb2ludHMoY29uc3QgU3Ry
aW5nVmlldyYpOwpAQCAtNjA0LDYgKzYxOSwyOSBAQCBwcml2YXRlOgogICAgIFN0cmluZ1ZpZXcg
bV9zdHJpbmdWaWV3OwogfTsKIAorY2xhc3MgU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6
SXRlcmF0b3IgeworcHVibGljOgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBJdGVyYXRvcigpID0g
ZGVsZXRlOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBJdGVyYXRvcihjb25zdCBTdHJpbmdWaWV3
JiwgdW5zaWduZWQgaW5kZXgpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB+SXRlcmF0b3IoKTsK
KworICAgIEl0ZXJhdG9yKGNvbnN0IEl0ZXJhdG9yJikgPSBkZWxldGU7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIEl0ZXJhdG9yKEl0ZXJhdG9yJiYpOworICAgIEl0ZXJhdG9yJiBvcGVyYXRvcj0o
Y29uc3QgSXRlcmF0b3ImKSA9IGRlbGV0ZTsKKyAgICBJdGVyYXRvciYgb3BlcmF0b3I9KEl0ZXJh
dG9yJiYpID0gZGVsZXRlOworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgb3Bl
cmF0b3IqKCkgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEl0ZXJhdG9yJiBvcGVyYXRv
cisrKCk7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEl0
ZXJhdG9yJikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBJdGVyYXRvciYpIGNvbnN0OworCitwcml2YXRlOgorICAgIGNsYXNzIEltcGw7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW1wbD4gbV9pbXBsOworfTsKKwogY2xhc3MgU3RyaW5nVmlldzo6
Q29kZVBvaW50czo6SXRlcmF0b3IgewogcHVibGljOgogICAgIEl0ZXJhdG9yKGNvbnN0IFN0cmlu
Z1ZpZXcmLCB1bnNpZ25lZCBpbmRleCk7CkBAIC02MzcsNiArNjc1LDExIEBAIHByaXZhdGU6CiAg
ICAgdW5zaWduZWQgbV9pbmRleDsKIH07CiAKK2lubGluZSBhdXRvIFN0cmluZ1ZpZXc6OmdyYXBo
ZW1lQ2x1c3RlcnMoKSBjb25zdCAtPiBHcmFwaGVtZUNsdXN0ZXJzCit7CisgICAgcmV0dXJuIEdy
YXBoZW1lQ2x1c3RlcnMoKnRoaXMpOworfQorCiBpbmxpbmUgYXV0byBTdHJpbmdWaWV3Ojpjb2Rl
UG9pbnRzKCkgY29uc3QgLT4gQ29kZVBvaW50cwogewogICAgIHJldHVybiBDb2RlUG9pbnRzKCp0
aGlzKTsKQEAgLTY0Nyw2ICs2OTAsMjEgQEAgaW5saW5lIGF1dG8gU3RyaW5nVmlldzo6Y29kZVVu
aXRzKCkgY29uc3QgLT4gQ29kZVVuaXRzCiAgICAgcmV0dXJuIENvZGVVbml0cygqdGhpcyk7CiB9
CiAKK2lubGluZSBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpHcmFwaGVtZUNsdXN0ZXJz
KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcpCisgICAgOiBtX3N0cmluZ1ZpZXcoc3RyaW5n
VmlldykKK3sKK30KKworaW5saW5lIGF1dG8gU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6
YmVnaW4oKSBjb25zdCAtPiBJdGVyYXRvcgoreworICAgIHJldHVybiBJdGVyYXRvcihtX3N0cmlu
Z1ZpZXcsIDApOworfQorCitpbmxpbmUgYXV0byBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJz
OjplbmQoKSBjb25zdCAtPiBJdGVyYXRvcgoreworICAgIHJldHVybiBJdGVyYXRvcihtX3N0cmlu
Z1ZpZXcsIG1fc3RyaW5nVmlldy5sZW5ndGgoKSk7Cit9CisKIGlubGluZSBTdHJpbmdWaWV3OjpD
b2RlUG9pbnRzOjpDb2RlUG9pbnRzKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcpCiAgICAg
OiBtX3N0cmluZ1ZpZXcoc3RyaW5nVmlldykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAKaW5kZXggYTBhNjZjZTBiN2VkMTQ3YWU3
YzZiM2Q3Yjk3MDk4MjNlN2ZlMzI1Zi4uNzk2YWQwOGJiZWZkNzAxNzllNWI3OWQ0ZjQ5ZjI3ZWM3
NDZjNmUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJl
YWtJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJl
YWtJdGVyYXRvci5jcHAKQEAgLTgxOSw3ICs4MTksNyBAQCBOb25TaGFyZWRDaGFyYWN0ZXJCcmVh
a0l0ZXJhdG9yOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3Ry
aQogewogICAgIG1faXRlcmF0b3IgPSBub25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOwog
Ci0gICAgYm9vbCBjcmVhdGVkSXRlcmF0b3IgPSBtX2l0ZXJhdG9yICYmIGNvbXBhcmVBbmRTd2Fw
Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihtX2l0ZXJhdG9yLCAwKTsKKyAgICBib29s
IGNyZWF0ZWRJdGVyYXRvciA9IG1faXRlcmF0b3IgJiYgY29tcGFyZUFuZFN3YXBOb25TaGFyZWRD
aGFyYWN0ZXJCcmVha0l0ZXJhdG9yKG1faXRlcmF0b3IsIG51bGxwdHIpOwogICAgIGlmICghY3Jl
YXRlZEl0ZXJhdG9yKQogICAgICAgICBtX2l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVC
UktfQ0hBUkFDVEVSKTsKICAgICBpZiAoIW1faXRlcmF0b3IpCkBAIC04MzQsNiArODM0LDEyIEBA
IE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6On5Ob25TaGFyZWRDaGFyYWN0ZXJCcmVh
a0l0ZXJhdG9yKCkKICAgICAgICAgdWJya19jbG9zZShyZWludGVycHJldF9jYXN0PFVCcmVha0l0
ZXJhdG9yKj4obV9pdGVyYXRvcikpOwogfQogCitOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yOjpOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKE5vblNoYXJlZENoYXJhY3RlckJy
ZWFrSXRlcmF0b3ImJiBvdGhlcikKKyAgICA6IG1faXRlcmF0b3IobnVsbHB0cikKK3sKKyAgICBz
dGQ6OnN3YXAobV9pdGVyYXRvciwgb3RoZXIubV9pdGVyYXRvcik7Cit9CisKIAogLy8gSXRlcmF0
b3IgaW1wbGVtZW5hdGlvbi4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9U
ZXh0QnJlYWtJdGVyYXRvci5oCmluZGV4IDZhMWMyMzUwYjQ3NjdkNmNlMWMzNGRlMmMzNGMyMmQ0
MzUyMmM1OGUuLmVjMmZhNjRiN2JiNWU5YTQ5MTgxN2M5MWExZjVhYjBhM2Q2NDNiYzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKQEAg
LTE5OCw2ICsxOTgsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgTm9uU2hhcmVkQ2hh
cmFjdGVyQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKICAgICBXRUJDT1JFX0VYUE9SVCB+Tm9u
U2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcigpOwogCisgICAgTm9uU2hhcmVkQ2hhcmFjdGVy
QnJlYWtJdGVyYXRvcihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yJiYpOworCiAgICAg
b3BlcmF0b3IgVGV4dEJyZWFrSXRlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvcjsg
fQogCiBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283278</attachid>
            <date>2016-07-09 19:47:43 -0700</date>
            <delta_ts>2016-07-10 10:30:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159598-20160709194705.patch</filename>
            <type>text/plain</type>
            <size>15876</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZmOWZjNzU2YjZkNjkxOGJlMzljZjQw
ZDA4ODRmMjZmNWQzNTc1NmIuLjYxY2Q3ODAyYzQ2ZmJiYjFkNWI3Y2ZkOGZiNjYxYzE2ZWRlMDNj
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTYtMDctMDkgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgZ3JhcGhlbWUgY2x1c3Rl
ciBpdGVyYXRvciBvbiBTdHJpbmdWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTk1OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvciBob25vcmluZyB0aGUg
c2Vjb25kIGFyZ3VtZW50IHRvIEZvbnRGYWNlU2V0LmxvYWQoKS4KKworICAgICAgICAqIHd0Zi90
ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNs
dXN0ZXJzOjpJdGVyYXRvcjo6SW1wbDo6SW1wbCk6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6
OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBsOjpvcGVyYXRvcisrKToKKyAgICAgICAg
KFdURjo6U3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6OkltcGw6Om9wZXJh
dG9yKik6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJh
dG9yOjpJbXBsOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6R3JhcGhl
bWVDbHVzdGVyczo6SXRlcmF0b3I6OkltcGw6OmNvbXB1dGVJbmRleEVuZCk6CisgICAgICAgIChX
VEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJdGVyYXRvcik6Cisg
ICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjp+SXRl
cmF0b3IpOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVy
YXRvcjo6b3BlcmF0b3IqKToKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6R3JhcGhlbWVDbHVz
dGVyczo6SXRlcmF0b3I6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpH
cmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6b3BlcmF0b3IhPSk6CisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0
ZXJzOjpHcmFwaGVtZUNsdXN0ZXJzKToKKwogMjAxNi0wNy0wOCAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjIwMjc5OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMDk0ZTc0YjBjNDQ0YmE0ODIwYWEyYTNhZTYwMzcxZGRm
NTFmZTJhLi43ZDAwZjAyM2JlNDVkOTJmMTg1ZGI1YTZhNzQ2NWI1NDZlOGIxNmU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDctMDkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1h
eGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgZ3JhcGhlbWUgY2x1c3RlciBp
dGVyYXRvciBvbiBTdHJpbmdWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTk1OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvciBob25vcmluZyB0aGUgc2Vj
b25kIGFyZ3VtZW50IHRvIEZvbnRGYWNlU2V0LmxvYWQoKS4KKworICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9uU2hhcmVk
Q2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcik6
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oOgorCiAyMDE2LTA3
LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgYWRvcHROb2Rl
KCkgY2hhbmdlcyBjc3MgY2xhc3MgdG8gbG93ZXJjYXNlIGZvciBkb2N1bWVudCBsb2FkZWQgd2l0
aCBYSFIgcmVzcG9uc2VUeXBlID0gImRvY3VtZW50IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5j
cHAKaW5kZXggZTIwNjcxN2MwNzEyODljNmQ2MDM3Y2MzNDA4M2FjZTNkOWRiMDRiOC4uZWZhY2Mw
YmM4NDZmN2YyM2E4ZDY4NjIwZjU0ZjU4ZTNhNDM0OTZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuY3BwCkBAIC0zMSw2ICszMSw3IEBAIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oPgogI2luY2x1ZGUgPHd0Zi91
bmljb2RlL1VURjguaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC05MSw2ICs5Miw4NyBAQCBzaXpl
X3QgU3RyaW5nVmlldzo6ZmluZChTdHJpbmdWaWV3IG1hdGNoU3RyaW5nLCB1bnNpZ25lZCBzdGFy
dCkgY29uc3QKICAgICByZXR1cm4gZmluZENvbW1vbigqdGhpcywgbWF0Y2hTdHJpbmcsIHN0YXJ0
KTsKIH0KIAorY2xhc3MgU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Oklt
cGwgeworcHVibGljOgorICAgIEltcGwoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldywgTm9u
U2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciYmIGl0ZXJhdG9yLCB1bnNpZ25lZCBpbmRleCkK
KyAgICAgICAgOiBtX3N0cmluZ1ZpZXcoc3RyaW5nVmlldykKKyAgICAgICAgLCBtX2l0ZXJhdG9y
KFdURk1vdmUoaXRlcmF0b3IpKQorICAgICAgICAsIG1faW5kZXgoaW5kZXgpCisgICAgICAgICwg
bV9pbmRleEVuZChjb21wdXRlSW5kZXhFbmQoKSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBv
cGVyYXRvcisrKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2luZGV4RW5kID4gbV9pbmRleCk7
CisgICAgICAgIG1faW5kZXggPSBtX2luZGV4RW5kOworICAgICAgICBtX2luZGV4RW5kID0gY29t
cHV0ZUluZGV4RW5kKCk7CisgICAgfQorCisgICAgU3RyaW5nVmlldyBvcGVyYXRvciooKSBjb25z
dAorICAgIHsKKyAgICAgICAgaWYgKG1fc3RyaW5nVmlldy5pczhCaXQoKSkKKyAgICAgICAgICAg
IHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nVmlldy5jaGFyYWN0ZXJzOCgpICsgbV9pbmRleCwg
bV9pbmRleEVuZCAtIG1faW5kZXgpOworICAgICAgICByZXR1cm4gU3RyaW5nVmlldyhtX3N0cmlu
Z1ZpZXcuY2hhcmFjdGVyczE2KCkgKyBtX2luZGV4LCBtX2luZGV4RW5kIC0gbV9pbmRleCk7Cisg
ICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEltcGwmIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgQVNTRVJUKCZtX3N0cmluZ1ZpZXcgPT0gJm90aGVyLm1fc3RyaW5nVmlldyk7
CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OworICAgICAg
ICBBU1NFUlQoIXJlc3VsdCB8fCBtX2luZGV4RW5kID09IG90aGVyLm1faW5kZXhFbmQpOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHVuc2lnbmVkIGNvbXB1dGVJbmRleEVu
ZCgpCisgICAgeworICAgICAgICBpZiAobV9pbmRleCA9PSBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkp
CisgICAgICAgICAgICByZXR1cm4gbV9pbmRleDsKKyAgICAgICAgcmV0dXJuIHRleHRCcmVha0Zv
bGxvd2luZyhtX2l0ZXJhdG9yLCBtX2luZGV4KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29u
c3QgU3RyaW5nVmlldyYgbV9zdHJpbmdWaWV3OworICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFr
SXRlcmF0b3IgbV9pdGVyYXRvcjsKKyAgICB1bnNpZ25lZCBtX2luZGV4OworICAgIHVuc2lnbmVk
IG1faW5kZXhFbmQ7Cit9OworCitTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRv
cjo6SXRlcmF0b3IoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldywgdW5zaWduZWQgaW5kZXgp
CisgICAgOiBtX2ltcGwoc3RkOjptYWtlX3VuaXF1ZTxJbXBsPihzdHJpbmdWaWV3LCBOb25TaGFy
ZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKHN0cmluZ1ZpZXcpLCBpbmRleCkpCit7Cit9CisKK1N0
cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjp+SXRlcmF0b3IoKQoreworfQor
CitTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SXRlcmF0b3IoSXRlcmF0
b3ImJiBvdGhlcikKKyAgICA6IG1faW1wbChXVEZNb3ZlKG90aGVyLm1faW1wbCkpCit7Cit9CisK
K2F1dG8gU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Om9wZXJhdG9yKyso
KSAtPiBJdGVyYXRvciYKK3sKKyAgICArKygqbV9pbXBsKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9
CisKK1N0cmluZ1ZpZXcgU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Om9w
ZXJhdG9yKigpIGNvbnN0Cit7CisgICAgcmV0dXJuICoqbV9pbXBsOworfQorCitib29sIFN0cmlu
Z1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpvcGVyYXRvcj09KGNvbnN0IEl0ZXJh
dG9yJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gKm1faW1wbCA9PSAqKG90aGVyLm1faW1w
bCk7Cit9CisKK2Jvb2wgU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6Om9w
ZXJhdG9yIT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSBjb25zdAoreworICAgIHJldHVybiAhKCp0
aGlzID09IG90aGVyKTsKK30KKwogI2lmIENIRUNLX1NUUklOR1ZJRVdfTElGRVRJTUUKIAogLy8g
TWFuYWdlIHJlZmVyZW5jZSBjb3VudCBtYW51YWxseSBzbyBVbmRlcmx5aW5nU3RyaW5nIGRvZXMg
bm90IG5lZWQgdG8gYmUgZGVmaW5lZCBpbiB0aGUgaGVhZGVyLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1Zp
ZXcuaAppbmRleCAzYWVmNGRiYmY4OTQ3ZmRhYTE4NTc0MmY4YTkyN2E3NDkzOWUwODJlLi4zYmYw
Y2VmMmEwMGQ0MzM3OGEzNWYxZjYxZGU1YTkzNmZkZDY2ZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaApAQCAtODIsNiArODIsOSBAQCBwdWJsaWM6CiAgICAgY2xhc3MgQ29kZVBvaW50czsK
ICAgICBDb2RlUG9pbnRzIGNvZGVQb2ludHMoKSBjb25zdDsKIAorICAgIGNsYXNzIEdyYXBoZW1l
Q2x1c3RlcnM7CisgICAgR3JhcGhlbWVDbHVzdGVycyBncmFwaGVtZUNsdXN0ZXJzKCkgY29uc3Q7
CisKICAgICBib29sIGlzOEJpdCgpIGNvbnN0OwogICAgIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJz
OCgpIGNvbnN0OwogICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzMTYoKSBjb25zdDsKQEAgLTU4
MCw2ICs1ODMsMTggQEAgaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdW
aWV3IGEsIGNvbnN0IGNoYXIqIGIpCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2VD
b21tb24oYSwgYik7CiB9CiAKK2NsYXNzIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnMgewor
cHVibGljOgorICAgIGV4cGxpY2l0IEdyYXBoZW1lQ2x1c3RlcnMoY29uc3QgU3RyaW5nVmlldyYp
OworCisgICAgY2xhc3MgSXRlcmF0b3I7CisgICAgSXRlcmF0b3IgYmVnaW4oKSBjb25zdDsKKyAg
ICBJdGVyYXRvciBlbmQoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBTdHJpbmdWaWV3IG1fc3Ry
aW5nVmlldzsKK307CisKIGNsYXNzIFN0cmluZ1ZpZXc6OkNvZGVQb2ludHMgewogcHVibGljOgog
ICAgIGV4cGxpY2l0IENvZGVQb2ludHMoY29uc3QgU3RyaW5nVmlldyYpOwpAQCAtNjA0LDYgKzYx
OSwyOSBAQCBwcml2YXRlOgogICAgIFN0cmluZ1ZpZXcgbV9zdHJpbmdWaWV3OwogfTsKIAorY2xh
c3MgU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3IgeworcHVibGljOgorICAg
IFdURl9FWFBPUlRfUFJJVkFURSBJdGVyYXRvcigpID0gZGVsZXRlOworICAgIFdURl9FWFBPUlRf
UFJJVkFURSBJdGVyYXRvcihjb25zdCBTdHJpbmdWaWV3JiwgdW5zaWduZWQgaW5kZXgpOworICAg
IFdURl9FWFBPUlRfUFJJVkFURSB+SXRlcmF0b3IoKTsKKworICAgIEl0ZXJhdG9yKGNvbnN0IEl0
ZXJhdG9yJikgPSBkZWxldGU7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEl0ZXJhdG9yKEl0ZXJh
dG9yJiYpOworICAgIEl0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgSXRlcmF0b3ImKSA9IGRlbGV0
ZTsKKyAgICBJdGVyYXRvciYgb3BlcmF0b3I9KEl0ZXJhdG9yJiYpID0gZGVsZXRlOworCisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZ1ZpZXcgb3BlcmF0b3IqKCkgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIEl0ZXJhdG9yJiBvcGVyYXRvcisrKCk7CisKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEl0ZXJhdG9yJikgY29uc3Q7CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYpIGNvbnN0Owor
Citwcml2YXRlOgorICAgIGNsYXNzIEltcGw7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1wbD4g
bV9pbXBsOworfTsKKwogY2xhc3MgU3RyaW5nVmlldzo6Q29kZVBvaW50czo6SXRlcmF0b3Igewog
cHVibGljOgogICAgIEl0ZXJhdG9yKGNvbnN0IFN0cmluZ1ZpZXcmLCB1bnNpZ25lZCBpbmRleCk7
CkBAIC02MzcsNiArNjc1LDExIEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9pbmRleDsKIH07
CiAKK2lubGluZSBhdXRvIFN0cmluZ1ZpZXc6OmdyYXBoZW1lQ2x1c3RlcnMoKSBjb25zdCAtPiBH
cmFwaGVtZUNsdXN0ZXJzCit7CisgICAgcmV0dXJuIEdyYXBoZW1lQ2x1c3RlcnMoKnRoaXMpOwor
fQorCiBpbmxpbmUgYXV0byBTdHJpbmdWaWV3Ojpjb2RlUG9pbnRzKCkgY29uc3QgLT4gQ29kZVBv
aW50cwogewogICAgIHJldHVybiBDb2RlUG9pbnRzKCp0aGlzKTsKQEAgLTY0Nyw2ICs2OTAsMjEg
QEAgaW5saW5lIGF1dG8gU3RyaW5nVmlldzo6Y29kZVVuaXRzKCkgY29uc3QgLT4gQ29kZVVuaXRz
CiAgICAgcmV0dXJuIENvZGVVbml0cygqdGhpcyk7CiB9CiAKK2lubGluZSBTdHJpbmdWaWV3OjpH
cmFwaGVtZUNsdXN0ZXJzOjpHcmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmlu
Z1ZpZXcpCisgICAgOiBtX3N0cmluZ1ZpZXcoc3RyaW5nVmlldykKK3sKK30KKworaW5saW5lIGF1
dG8gU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6YmVnaW4oKSBjb25zdCAtPiBJdGVyYXRv
cgoreworICAgIHJldHVybiBJdGVyYXRvcihtX3N0cmluZ1ZpZXcsIDApOworfQorCitpbmxpbmUg
YXV0byBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjplbmQoKSBjb25zdCAtPiBJdGVyYXRv
cgoreworICAgIHJldHVybiBJdGVyYXRvcihtX3N0cmluZ1ZpZXcsIG1fc3RyaW5nVmlldy5sZW5n
dGgoKSk7Cit9CisKIGlubGluZSBTdHJpbmdWaWV3OjpDb2RlUG9pbnRzOjpDb2RlUG9pbnRzKGNv
bnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcpCiAgICAgOiBtX3N0cmluZ1ZpZXcoc3RyaW5nVmll
dykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEJyZWFr
SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVy
YXRvci5jcHAKaW5kZXggYTBhNjZjZTBiN2VkMTQ3YWU3YzZiM2Q3Yjk3MDk4MjNlN2ZlMzI1Zi4u
Nzk2YWQwOGJiZWZkNzAxNzllNWI3OWQ0ZjQ5ZjI3ZWM3NDZjNmUzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAKQEAgLTgxOSw3
ICs4MTksNyBAQCBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpOb25TaGFyZWRDaGFy
YWN0ZXJCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaQogewogICAgIG1faXRlcmF0b3IgPSBu
b25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOwogCi0gICAgYm9vbCBjcmVhdGVkSXRlcmF0
b3IgPSBtX2l0ZXJhdG9yICYmIGNvbXBhcmVBbmRTd2FwTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJ
dGVyYXRvcihtX2l0ZXJhdG9yLCAwKTsKKyAgICBib29sIGNyZWF0ZWRJdGVyYXRvciA9IG1faXRl
cmF0b3IgJiYgY29tcGFyZUFuZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKG1f
aXRlcmF0b3IsIG51bGxwdHIpOwogICAgIGlmICghY3JlYXRlZEl0ZXJhdG9yKQogICAgICAgICBt
X2l0ZXJhdG9yID0gaW5pdGlhbGl6ZUl0ZXJhdG9yKFVCUktfQ0hBUkFDVEVSKTsKICAgICBpZiAo
IW1faXRlcmF0b3IpCkBAIC04MzQsNiArODM0LDEyIEBAIE5vblNoYXJlZENoYXJhY3RlckJyZWFr
SXRlcmF0b3I6On5Ob25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yKCkKICAgICAgICAgdWJy
a19jbG9zZShyZWludGVycHJldF9jYXN0PFVCcmVha0l0ZXJhdG9yKj4obV9pdGVyYXRvcikpOwog
fQogCitOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yOjpOb25TaGFyZWRDaGFyYWN0ZXJC
cmVha0l0ZXJhdG9yKE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3ImJiBvdGhlcikKKyAg
ICA6IG1faXRlcmF0b3IobnVsbHB0cikKK3sKKyAgICBzdGQ6OnN3YXAobV9pdGVyYXRvciwgb3Ro
ZXIubV9pdGVyYXRvcik7Cit9CisKIAogLy8gSXRlcmF0b3IgaW1wbGVtZW5hdGlvbi4KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCmluZGV4
IDZhMWMyMzUwYjQ3NjdkNmNlMWMzNGRlMmMzNGMyMmQ0MzUyMmM1OGUuLmVjMmZhNjRiN2JiNWU5
YTQ5MTgxN2M5MWExZjVhYjBhM2Q2NDNiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKQEAgLTE5OCw2ICsxOTgsOCBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihTdHJp
bmdWaWV3KTsKICAgICBXRUJDT1JFX0VYUE9SVCB+Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVy
YXRvcigpOwogCisgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcihOb25TaGFyZWRD
aGFyYWN0ZXJCcmVha0l0ZXJhdG9yJiYpOworCiAgICAgb3BlcmF0b3IgVGV4dEJyZWFrSXRlcmF0
b3IqKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDNhYzMwNmNiM2NiYmRm
Yzc4NDUyM2U4MzlmNzY0NDRjYjYwZGQ2ODEuLjVjNWZjYjc1ZDBkMzdhZmMzMDUxNzg2M2MwOGMx
ZWZmY2E5MDAzMzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNi0wNy0wOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBncmFwaGVtZSBjbHVzdGVy
IGl0ZXJhdG9yIG9uIFN0cmluZ1ZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1OTU5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIGhvbm9yaW5nIHRoZSBz
ZWNvbmQgYXJndW1lbnQgdG8gRm9udEZhY2VTZXQubG9hZCgpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
Ojpjb21wYXJlTG9vcEl0ZXJhdGlvbnMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisKIDIwMTYtMDctMDggIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IFtDb250ZW50IEZpbHRlcmluZ10gTG9hZCBibG9ja2VkIHBhZ2VzIG1vcmUgbGlrZSBvdGhlciBl
cnJvciBwYWdlcyBhcmUgbG9hZGVkCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9TdHJpbmdWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0
cmluZ1ZpZXcuY3BwCmluZGV4IDQwOGNjNjQyZWI3NjE3OTgwYWI0NmY4MGY1NDU2ZTMyOGVmNjAy
ZjAuLjk5ODhkZGNkNGNmNWI5MDI0NDc3ODM1NjYyMjlkNmIzNDkxYjhlMGMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCkBAIC03OCw2ICs3OCwxNCBA
QCBURVNUKFdURiwgU3RyaW5nVmlld0VtcHR5VnNOdWxsKQogICAgICAgICBTVUNDRUVEKCk7CiB9
CiAKK2Jvb2wgY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3Rl
cnMgZ3JhcGhlbWVDbHVzdGVycywgc3RkOjp2ZWN0b3I8U3RyaW5nVmlldz4gZXhwZWN0ZWQpCit7
CisgICAgc3RkOjp2ZWN0b3I8U3RyaW5nVmlldz4gYWN0dWFsOworICAgIGZvciAoYXV0byBncmFw
aGVtZUNsdXN0ZXIgOiBncmFwaGVtZUNsdXN0ZXJzKQorICAgICAgICBhY3R1YWwucHVzaF9iYWNr
KGdyYXBoZW1lQ2x1c3Rlcik7CisgICAgcmV0dXJuIGFjdHVhbCA9PSBleHBlY3RlZDsKK30KKwog
Ym9vbCBjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldzo6Q29kZVBvaW50cyBjb2RlUG9p
bnRzLCBzdGQ6OnZlY3RvcjxVQ2hhcjMyPiBleHBlY3RlZCkKIHsKICAgICBzdGQ6OnZlY3RvcjxV
Q2hhcjMyPiBhY3R1YWw7CkBAIC0xMTYsMzAgKzEyNCw2MyBAQCBURVNUKFdURiwgU3RyaW5nVmll
d0l0ZXJhdG9ycykKICAgICBidWlsZChiLCB7MHhEODAwLCAweERENTV9KTsgLy8gU3Vycm9nYXRl
cyBmb3IgdW5pY29kZSBjb2RlIHBvaW50IFUrMTAxNTUKICAgICBFWFBFQ1RfVFJVRShjb21wYXJl
TG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmNvZGVQb2ludHMoKSwgezB4
MTAxNTV9KSk7CiAgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1Zp
ZXcoYi50b1N0cmluZygpKS5jb2RlVW5pdHMoKSwgezB4RDgwMCwgMHhERDU1fSkpOworICAgIEVY
UEVDVF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSku
Z3JhcGhlbWVDbHVzdGVycygpLCB7U3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpfSkpOwogCiAgICAg
YnVpbGQoYiwgezB4RDgwMH0pOyAvLyBMZWFkaW5nIHN1cnJvZ2F0ZSBvbmx5CiAgICAgRVhQRUNU
X1RSVUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0cmluZygpKS5jb2Rl
UG9pbnRzKCksIHsweEQ4MDB9KSk7CiAgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVyYXRp
b25zKFN0cmluZ1ZpZXcoYi50b1N0cmluZygpKS5jb2RlVW5pdHMoKSwgezB4RDgwMH0pKTsKKyAg
ICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5n
KCkpLmdyYXBoZW1lQ2x1c3RlcnMoKSwge1N0cmluZ1ZpZXcoYi50b1N0cmluZygpKX0pKTsKIAog
ICAgIGJ1aWxkKGIsIHsweEQ4MDAsIDB4RDgwMX0pOyAvLyBUd28gbGVhZGluZyBzdXJyb2dhdGVz
CiAgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0
cmluZygpKS5jb2RlUG9pbnRzKCksIHsweEQ4MDAsIDB4RDgwMX0pKTsKICAgICBFWFBFQ1RfVFJV
RShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmNvZGVVbml0
cygpLCB7MHhEODAwLCAweEQ4MDF9KSk7CisgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVy
YXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0cmluZygpKS5ncmFwaGVtZUNsdXN0ZXJzKCksIHtTdHJp
bmdWaWV3KGIuY2hhcmFjdGVyczE2KCksIDEpLCBTdHJpbmdWaWV3KGIuY2hhcmFjdGVyczE2KCkg
KyAxLCAxKX0pKTsKIAogICAgIGJ1aWxkKGIsIHsweERENTV9KTsgLy8gVHJhaWxpbmcgc3Vycm9n
YXRlIG9ubHkKICAgICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmll
dyhiLnRvU3RyaW5nKCkpLmNvZGVQb2ludHMoKSwgezB4REQ1NX0pKTsKICAgICBFWFBFQ1RfVFJV
RShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmNvZGVVbml0
cygpLCB7MHhERDU1fSkpOworICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9ucyhT
dHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuZ3JhcGhlbWVDbHVzdGVycygpLCB7U3RyaW5nVmlldyhi
LnRvU3RyaW5nKCkpfSkpOwogCiAgICAgYnVpbGQoYiwgezB4RDgwMCwgJ2gnfSk7IC8vIExlYWRp
bmcgc3Vycm9nYXRlIGZvbGxvd2VkIGJ5IG5vbi1zdXJyb2dhdGUKICAgICBFWFBFQ1RfVFJVRShj
b21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmNvZGVQb2ludHMo
KSwgezB4RDgwMCwgJ2gnfSkpOwogICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9u
cyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuY29kZVVuaXRzKCksIHsweEQ4MDAsICdoJ30pKTsK
KyAgICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3Ry
aW5nKCkpLmdyYXBoZW1lQ2x1c3RlcnMoKSwge1N0cmluZ1ZpZXcoYi5jaGFyYWN0ZXJzMTYoKSwg
MSksIFN0cmluZ1ZpZXcoYi5jaGFyYWN0ZXJzMTYoKSArIDEsIDEpfSkpOwogCiAgICAgYnVpbGQo
YiwgezB4MDMwNn0pOyAvLyAiQ09NQklOSU5HIEJSRVZFIgogICAgIEVYUEVDVF9UUlVFKGNvbXBh
cmVMb29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuY29kZVBvaW50cygpLCB7
MHgwMzA2fSkpOwogICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9ucyhTdHJpbmdW
aWV3KGIudG9TdHJpbmcoKSkuY29kZVVuaXRzKCksIHsweDAzMDZ9KSk7CisgICAgRVhQRUNUX1RS
VUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0cmluZygpKS5ncmFwaGVt
ZUNsdXN0ZXJzKCksIHtTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSl9KSk7CiAKICAgICBidWlsZChi
LCB7MHgwMzA2LCAweEQ4MDAsIDB4REQ1NSwgJ2gnLCAnZScsICdsJywgJ28nfSk7IC8vIE1peCBv
ZiBzaW5nbGUgY29kZSB1bml0IGFuZCBtdWx0aSBjb2RlIHVuaXQgY29kZSBwb2ludHMKICAgICBF
WFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5nKCkp
LmNvZGVQb2ludHMoKSwgezB4MDMwNiwgMHgxMDE1NSwgJ2gnLCAnZScsICdsJywgJ28nfSkpOwog
ICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3KGIudG9TdHJp
bmcoKSkuY29kZVVuaXRzKCksIHsweDAzMDYsIDB4RDgwMCwgMHhERDU1LCAnaCcsICdlJywgJ2wn
LCAnbyd9KSk7CisgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1Zp
ZXcoYi50b1N0cmluZygpKS5ncmFwaGVtZUNsdXN0ZXJzKCksIHsKKyAgICAgICAgU3RyaW5nVmll
dyhiLmNoYXJhY3RlcnMxNigpLCAxKSwKKyAgICAgICAgU3RyaW5nVmlldyhiLmNoYXJhY3RlcnMx
NigpICsgMSwgMiksCisgICAgICAgIFN0cmluZ1ZpZXcoYi5jaGFyYWN0ZXJzMTYoKSArIDMsIDEp
LAorICAgICAgICBTdHJpbmdWaWV3KGIuY2hhcmFjdGVyczE2KCkgKyA0LCAxKSwKKyAgICAgICAg
U3RyaW5nVmlldyhiLmNoYXJhY3RlcnMxNigpICsgNSwgMSksCisgICAgICAgIFN0cmluZ1ZpZXco
Yi5jaGFyYWN0ZXJzMTYoKSArIDYsIDEpfSkpOworCisgICAgYnVpbGQoYiwgeydlJywgMHgwMzAx
fSk7IC8vICJDT01CSU5JTkcgQUNVVEUiCisgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVy
YXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0cmluZygpKS5jb2RlUG9pbnRzKCksIHsnZScsIDB4MDMw
MX0pKTsKKyAgICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhi
LnRvU3RyaW5nKCkpLmNvZGVVbml0cygpLCB7J2UnLCAweDAzMDF9KSk7CisgICAgRVhQRUNUX1RS
VUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0cmluZygpKS5ncmFwaGVt
ZUNsdXN0ZXJzKCksIHtTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSl9KSk7CisKKyAgICBidWlsZChi
LCB7J2UnLCAweDAzMDEsIDB4MDMwNiwgJ2EnfSk7IC8vICJDT01CSU5JTkcgQUNVVEUiICJDT01C
SU5JTkcgQlJFVkUiCisgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmlu
Z1ZpZXcoYi50b1N0cmluZygpKS5jb2RlUG9pbnRzKCksIHsnZScsIDB4MDMwMSwgMHgwMzA2LCAn
YSd9KSk7CisgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1ZpZXco
Yi50b1N0cmluZygpKS5jb2RlVW5pdHMoKSwgeydlJywgMHgwMzAxLCAweDAzMDYsICdhJ30pKTsK
KyAgICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3Ry
aW5nKCkpLmdyYXBoZW1lQ2x1c3RlcnMoKSwgeworICAgICAgICBTdHJpbmdWaWV3KGIuY2hhcmFj
dGVyczE2KCksIDMpLAorICAgICAgICBTdHJpbmdWaWV3KGIuY2hhcmFjdGVyczE2KCkgKyAzLCAx
KSwKKyAgICAgICAgfSkpOworCisgICAgYnVpbGQoYiwgezB4MTExMiwgMHgxMTZmLCAweDExYjYs
IDB4MTEwNywgMHgxMTYxLCAweDExQjh9KTsgLy8gS29yZWFuIGNvbWJpbmluZyBKYW1vCisgICAg
RVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0cmluZygp
KS5jb2RlUG9pbnRzKCksIHsweDExMTIsIDB4MTE2ZiwgMHgxMWI2LCAweDExMDcsIDB4MTE2MSwg
MHgxMUI4fSkpOworICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9ucyhTdHJpbmdW
aWV3KGIudG9TdHJpbmcoKSkuY29kZVVuaXRzKCksIHsweDExMTIsIDB4MTE2ZiwgMHgxMWI2LCAw
eDExMDcsIDB4MTE2MSwgMHgxMUI4fSkpOworICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVMb29wSXRl
cmF0aW9ucyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuZ3JhcGhlbWVDbHVzdGVycygpLCB7Cisg
ICAgICAgIFN0cmluZ1ZpZXcoYi5jaGFyYWN0ZXJzMTYoKSwgMyksCisgICAgICAgIFN0cmluZ1Zp
ZXcoYi5jaGFyYWN0ZXJzMTYoKSArIDMsIDMpfSkpOwogfQogCiBURVNUKFdURiwgU3RyaW5nVmll
d0VxdWFsSWdub3JpbmdBU0NJSUNhc2VCYXNpYykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283287</attachid>
            <date>2016-07-10 10:30:40 -0700</date>
            <delta_ts>2016-07-10 12:43:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159598-20160710102959.patch</filename>
            <type>text/plain</type>
            <size>15167</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAyZDAwNmI0YWNmZWM5OTZlMjcxNDQy
MWVhZWI3OWVlNDJjMGQyZDAuLjdmMDY5YTJjMmQzNmE0OWQyOTZkMDU1MWE2NWIzNDc0MDhjMTFj
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzEgQEAKIDIwMTYtMDctMTAgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAorICAgICAgICBJbXBsZW1lbnQgZ3JhcGhlbWUgY2x1c3Rl
ciBpdGVyYXRvciBvbiBTdHJpbmdWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTk1OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvciBob25vcmluZyB0aGUg
c2Vjb25kIGFyZ3VtZW50IHRvIEZvbnRGYWNlU2V0LmxvYWQoKS4KKworICAgICAgICAqIHd0Zi90
ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNs
dXN0ZXJzOjpJdGVyYXRvcjo6SW1wbDo6SW1wbCk6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6
OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBsOjpvcGVyYXRvcisrKToKKyAgICAgICAg
KFdURjo6U3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6OkltcGw6Om9wZXJh
dG9yKik6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJh
dG9yOjpJbXBsOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6R3JhcGhl
bWVDbHVzdGVyczo6SXRlcmF0b3I6OkltcGw6OmNvbXB1dGVJbmRleEVuZCk6CisgICAgICAgIChX
VEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJdGVyYXRvcik6Cisg
ICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjp+SXRl
cmF0b3IpOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVy
YXRvcjo6b3BlcmF0b3IqKToKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6R3JhcGhlbWVDbHVz
dGVyczo6SXRlcmF0b3I6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpH
cmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6b3BlcmF0b3IhPSk6CisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0
ZXJzOjpHcmFwaGVtZUNsdXN0ZXJzKToKKyAgICAgICAgKiB0ZXh0L1RleHRCcmVha0l0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6
Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAqIHRleHQvVGV4dEJy
ZWFrSXRlcmF0b3IuaDoKKworMjAxNi0wNy0xMCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgorCiAgICAgICAgIE1vdmUgYnJlYWtpbmcgaXRlcmF0b3IgY29kZSB0byBX
VEYKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU5
NAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCBlMjA2NzE3YzA3MTI4OWM2ZDYw
MzdjYzM0MDgzYWNlM2Q5ZGIwNGI4Li5lZmFjYzBiYzg0NmY3ZjIzYThkNjg2MjBmNTRmNThlM2E0
MzQ5NmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTMxLDYgKzMxLDcgQEAg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVh
a0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOC5oPgogCiBuYW1lc3BhY2Ug
V1RGIHsKQEAgLTkxLDYgKzkyLDg3IEBAIHNpemVfdCBTdHJpbmdWaWV3OjpmaW5kKFN0cmluZ1Zp
ZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0KSBjb25zdAogICAgIHJldHVybiBmaW5kQ29t
bW9uKCp0aGlzLCBtYXRjaFN0cmluZywgc3RhcnQpOwogfQogCitjbGFzcyBTdHJpbmdWaWV3OjpH
cmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SW1wbCB7CitwdWJsaWM6CisgICAgSW1wbChjb25z
dCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9y
JiYgaXRlcmF0b3IsIHVuc2lnbmVkIGluZGV4KQorICAgICAgICA6IG1fc3RyaW5nVmlldyhzdHJp
bmdWaWV3KQorICAgICAgICAsIG1faXRlcmF0b3IoV1RGTW92ZShpdGVyYXRvcikpCisgICAgICAg
ICwgbV9pbmRleChpbmRleCkKKyAgICAgICAgLCBtX2luZGV4RW5kKGNvbXB1dGVJbmRleEVuZCgp
KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIG9wZXJhdG9yKysoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKG1faW5kZXhFbmQgPiBtX2luZGV4KTsKKyAgICAgICAgbV9pbmRleCA9IG1faW5kZXhF
bmQ7CisgICAgICAgIG1faW5kZXhFbmQgPSBjb21wdXRlSW5kZXhFbmQoKTsKKyAgICB9CisKKyAg
ICBTdHJpbmdWaWV3IG9wZXJhdG9yKigpIGNvbnN0CisgICAgeworICAgICAgICBpZiAobV9zdHJp
bmdWaWV3LmlzOEJpdCgpKQorICAgICAgICAgICAgcmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmdW
aWV3LmNoYXJhY3RlcnM4KCkgKyBtX2luZGV4LCBtX2luZGV4RW5kIC0gbV9pbmRleCk7CisgICAg
ICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nVmlldy5jaGFyYWN0ZXJzMTYoKSArIG1faW5k
ZXgsIG1faW5kZXhFbmQgLSBtX2luZGV4KTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgSW1wbCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoJm1fc3RyaW5n
VmlldyA9PSAmb3RoZXIubV9zdHJpbmdWaWV3KTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX2lu
ZGV4ID09IG90aGVyLm1faW5kZXg7CisgICAgICAgIEFTU0VSVCghcmVzdWx0IHx8IG1faW5kZXhF
bmQgPT0gb3RoZXIubV9pbmRleEVuZCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
CisgICAgdW5zaWduZWQgY29tcHV0ZUluZGV4RW5kKCkKKyAgICB7CisgICAgICAgIGlmIChtX2lu
ZGV4ID09IG1fc3RyaW5nVmlldy5sZW5ndGgoKSkKKyAgICAgICAgICAgIHJldHVybiBtX2luZGV4
OworICAgICAgICByZXR1cm4gdGV4dEJyZWFrRm9sbG93aW5nKG1faXRlcmF0b3IsIG1faW5kZXgp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBTdHJpbmdWaWV3JiBtX3N0cmluZ1ZpZXc7
CisgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciBtX2l0ZXJhdG9yOworICAgIHVu
c2lnbmVkIG1faW5kZXg7CisgICAgdW5zaWduZWQgbV9pbmRleEVuZDsKK307CisKK1N0cmluZ1Zp
ZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBTdHJpbmdWaWV3
JiBzdHJpbmdWaWV3LCB1bnNpZ25lZCBpbmRleCkKKyAgICA6IG1faW1wbChzdGQ6Om1ha2VfdW5p
cXVlPEltcGw+KHN0cmluZ1ZpZXcsIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3Ioc3Ry
aW5nVmlldyksIGluZGV4KSkKK3sKK30KKworU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6
SXRlcmF0b3I6On5JdGVyYXRvcigpCit7Cit9CisKK1N0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3Rl
cnM6Okl0ZXJhdG9yOjpJdGVyYXRvcihJdGVyYXRvciYmIG90aGVyKQorICAgIDogbV9pbXBsKFdU
Rk1vdmUob3RoZXIubV9pbXBsKSkKK3sKK30KKworYXV0byBTdHJpbmdWaWV3OjpHcmFwaGVtZUNs
dXN0ZXJzOjpJdGVyYXRvcjo6b3BlcmF0b3IrKygpIC0+IEl0ZXJhdG9yJgoreworICAgICsrKCpt
X2ltcGwpOworICAgIHJldHVybiAqdGhpczsKK30KKworU3RyaW5nVmlldyBTdHJpbmdWaWV3OjpH
cmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6b3BlcmF0b3IqKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gKiptX2ltcGw7Cit9CisKK2Jvb2wgU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRl
cmF0b3I6Om9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3ImIG90aGVyKSBjb25zdAoreworICAgIHJl
dHVybiAqbV9pbXBsID09ICoob3RoZXIubV9pbXBsKTsKK30KKworYm9vbCBTdHJpbmdWaWV3OjpH
cmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6b3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworfQorCiAjaWYgQ0hF
Q0tfU1RSSU5HVklFV19MSUZFVElNRQogCiAvLyBNYW5hZ2UgcmVmZXJlbmNlIGNvdW50IG1hbnVh
bGx5IHNvIFVuZGVybHlpbmdTdHJpbmcgZG9lcyBub3QgbmVlZCB0byBiZSBkZWZpbmVkIGluIHRo
ZSBoZWFkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDNhZWY0ZGJiZjg5NDdmZGFh
MTg1NzQyZjhhOTI3YTc0OTM5ZTA4MmUuLjNiZjBjZWYyYTAwZDQzMzc4YTM1ZjFmNjFkZTVhOTM2
ZmRkNjZkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC04Miw2ICs4Miw5IEBAIHB1
YmxpYzoKICAgICBjbGFzcyBDb2RlUG9pbnRzOwogICAgIENvZGVQb2ludHMgY29kZVBvaW50cygp
IGNvbnN0OwogCisgICAgY2xhc3MgR3JhcGhlbWVDbHVzdGVyczsKKyAgICBHcmFwaGVtZUNsdXN0
ZXJzIGdyYXBoZW1lQ2x1c3RlcnMoKSBjb25zdDsKKwogICAgIGJvb2wgaXM4Qml0KCkgY29uc3Q7
CiAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3Q7CiAgICAgY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMxNigpIGNvbnN0OwpAQCAtNTgwLDYgKzU4MywxOCBAQCBpbmxpbmUgYm9vbCBl
cXVhbElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ1ZpZXcgYSwgY29uc3QgY2hhciogYikKICAgICBy
ZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZUNvbW1vbihhLCBiKTsKIH0KIAorY2xhc3MgU3Ry
aW5nVmlldzo6R3JhcGhlbWVDbHVzdGVycyB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgR3JhcGhl
bWVDbHVzdGVycyhjb25zdCBTdHJpbmdWaWV3Jik7CisKKyAgICBjbGFzcyBJdGVyYXRvcjsKKyAg
ICBJdGVyYXRvciBiZWdpbigpIGNvbnN0OworICAgIEl0ZXJhdG9yIGVuZCgpIGNvbnN0OworCitw
cml2YXRlOgorICAgIFN0cmluZ1ZpZXcgbV9zdHJpbmdWaWV3OworfTsKKwogY2xhc3MgU3RyaW5n
Vmlldzo6Q29kZVBvaW50cyB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ29kZVBvaW50cyhjb25z
dCBTdHJpbmdWaWV3Jik7CkBAIC02MDQsNiArNjE5LDI5IEBAIHByaXZhdGU6CiAgICAgU3RyaW5n
VmlldyBtX3N0cmluZ1ZpZXc7CiB9OwogCitjbGFzcyBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0
ZXJzOjpJdGVyYXRvciB7CitwdWJsaWM6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEl0ZXJhdG9y
KCkgPSBkZWxldGU7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIEl0ZXJhdG9yKGNvbnN0IFN0cmlu
Z1ZpZXcmLCB1bnNpZ25lZCBpbmRleCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5JdGVyYXRv
cigpOworCisgICAgSXRlcmF0b3IoY29uc3QgSXRlcmF0b3ImKSA9IGRlbGV0ZTsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgSXRlcmF0b3IoSXRlcmF0b3ImJik7CisgICAgSXRlcmF0b3ImIG9wZXJh
dG9yPShjb25zdCBJdGVyYXRvciYpID0gZGVsZXRlOworICAgIEl0ZXJhdG9yJiBvcGVyYXRvcj0o
SXRlcmF0b3ImJikgPSBkZWxldGU7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nVmll
dyBvcGVyYXRvciooKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgSXRlcmF0b3ImIG9w
ZXJhdG9yKysoKTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIG9wZXJhdG9yPT0oY29u
c3QgSXRlcmF0b3ImKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEl0ZXJhdG9yJikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgY2xhc3MgSW1wbDsK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbXBsPiBtX2ltcGw7Cit9OworCiBjbGFzcyBTdHJpbmdW
aWV3OjpDb2RlUG9pbnRzOjpJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgSXRlcmF0b3IoY29uc3Qg
U3RyaW5nVmlldyYsIHVuc2lnbmVkIGluZGV4KTsKQEAgLTYzNyw2ICs2NzUsMTEgQEAgcHJpdmF0
ZToKICAgICB1bnNpZ25lZCBtX2luZGV4OwogfTsKIAoraW5saW5lIGF1dG8gU3RyaW5nVmlldzo6
Z3JhcGhlbWVDbHVzdGVycygpIGNvbnN0IC0+IEdyYXBoZW1lQ2x1c3RlcnMKK3sKKyAgICByZXR1
cm4gR3JhcGhlbWVDbHVzdGVycygqdGhpcyk7Cit9CisKIGlubGluZSBhdXRvIFN0cmluZ1ZpZXc6
OmNvZGVQb2ludHMoKSBjb25zdCAtPiBDb2RlUG9pbnRzCiB7CiAgICAgcmV0dXJuIENvZGVQb2lu
dHMoKnRoaXMpOwpAQCAtNjQ3LDYgKzY5MCwyMSBAQCBpbmxpbmUgYXV0byBTdHJpbmdWaWV3Ojpj
b2RlVW5pdHMoKSBjb25zdCAtPiBDb2RlVW5pdHMKICAgICByZXR1cm4gQ29kZVVuaXRzKCp0aGlz
KTsKIH0KIAoraW5saW5lIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6OkdyYXBoZW1lQ2x1
c3RlcnMoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldykKKyAgICA6IG1fc3RyaW5nVmlldyhz
dHJpbmdWaWV3KQoreworfQorCitpbmxpbmUgYXV0byBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0
ZXJzOjpiZWdpbigpIGNvbnN0IC0+IEl0ZXJhdG9yCit7CisgICAgcmV0dXJuIEl0ZXJhdG9yKG1f
c3RyaW5nVmlldywgMCk7Cit9CisKK2lubGluZSBhdXRvIFN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1
c3RlcnM6OmVuZCgpIGNvbnN0IC0+IEl0ZXJhdG9yCit7CisgICAgcmV0dXJuIEl0ZXJhdG9yKG1f
c3RyaW5nVmlldywgbV9zdHJpbmdWaWV3Lmxlbmd0aCgpKTsKK30KKwogaW5saW5lIFN0cmluZ1Zp
ZXc6OkNvZGVQb2ludHM6OkNvZGVQb2ludHMoY29uc3QgU3RyaW5nVmlldyYgc3RyaW5nVmlldykK
ICAgICA6IG1fc3RyaW5nVmlldyhzdHJpbmdWaWV3KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1Rl
eHRCcmVha0l0ZXJhdG9yLmNwcAppbmRleCA4NzgyNGU2NDE4ZjQyODJiM2Y5ZDM1MWU1NTIwYzVk
ZmNjMmJhMjFjLi43M2RiMWM4ZTMwMmNiNWE0ZTFjMzBiNWNkNTMwNTI4YWRlOGNkODAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcApAQCAtODE5LDcgKzgxOSw3
IEBAIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6Ok5vblNoYXJlZENoYXJhY3RlckJy
ZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpCiB7CiAgICAgbV9pdGVyYXRvciA9IG5vblNoYXJl
ZENoYXJhY3RlckJyZWFrSXRlcmF0b3I7CiAKLSAgICBib29sIGNyZWF0ZWRJdGVyYXRvciA9IG1f
aXRlcmF0b3IgJiYgY29tcGFyZUFuZFN3YXBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9y
KG1faXRlcmF0b3IsIDApOworICAgIGJvb2wgY3JlYXRlZEl0ZXJhdG9yID0gbV9pdGVyYXRvciAm
JiBjb21wYXJlQW5kU3dhcE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IobV9pdGVyYXRv
ciwgbnVsbHB0cik7CiAgICAgaWYgKCFjcmVhdGVkSXRlcmF0b3IpCiAgICAgICAgIG1faXRlcmF0
b3IgPSBpbml0aWFsaXplSXRlcmF0b3IoVUJSS19DSEFSQUNURVIpOwogICAgIGlmICghbV9pdGVy
YXRvcikKQEAgLTgzNCw2ICs4MzQsMTIgQEAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRv
cjo6fk5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoKQogICAgICAgICB1YnJrX2Nsb3Nl
KHJlaW50ZXJwcmV0X2Nhc3Q8VUJyZWFrSXRlcmF0b3IqPihtX2l0ZXJhdG9yKSk7CiB9CiAKK05v
blNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRl
cmF0b3IoTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciYmIG90aGVyKQorICAgIDogbV9p
dGVyYXRvcihudWxscHRyKQoreworICAgIHN0ZDo6c3dhcChtX2l0ZXJhdG9yLCBvdGhlci5tX2l0
ZXJhdG9yKTsKK30KKwogCiAvLyBJdGVyYXRvciBpbXBsZW1lbmF0aW9uLgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmggYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmgKaW5kZXggZGU0NTM0NjhmYjhjYzIzZDYzZmEyYzNh
MzQ4NTE2MDRiNjZiNTgwMS4uZDkwMzIxNWFlNDEzN2U0YzNhOWVhMzViM2QwMjViZjUyZTQ1MThl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaApAQCAtMTk4LDYgKzE5
OCw4IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTm9uU2hhcmVkQ2hhcmFjdGVy
QnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgfk5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IoKTsKIAorICAgIE5vblNoYXJlZENoYXJhY3RlckJy
ZWFrSXRlcmF0b3IoTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciYmKTsKKwogICAgIG9w
ZXJhdG9yIFRleHRCcmVha0l0ZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3I7IH0K
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA3NWY3ZWYyN2JiYTFkNzBmMWYwOTIzNTZiYjFkYzI4YWVjYzkyYjAyLi5iZThjNzUw
ZjU1YmM1MmMzZTg0ZWI5YjdkNDA0MTA0MjA2N2M4MmY4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDctMTAg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgZ3JhcGhlbWUgY2x1c3RlciBpdGVyYXRvciBvbiBTdHJpbmdWaWV3CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk1OTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0
aW9uIGZvciBob25vcmluZyB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIEZvbnRGYWNlU2V0LmxvYWQo
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y29tcGFyZUxvb3BJdGVyYXRpb25zKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE2LTA3LTA5ICBEYW4gQmVybnN0ZWluICA8bWl0
ekBhcHBsZS5jb20+CiAKICAgICAgICAgR2l2ZSBnaXQtYWRkLXJldmlld2VyIGFuIG9wdGlvbiB0
byBzYXkg4oCcUnViYmVyLXN0YW1wZWQgYnnigJ0gaW4gbm9uLWludGVyYWN0aXZlIG1vZGUKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5jcHAKaW5kZXggNDA4Y2M2
NDJlYjc2MTc5ODBhYjQ2ZjgwZjU0NTZlMzI4ZWY2MDJmMC4uOTk4OGRkY2Q0Y2Y1YjkwMjQ0Nzc4
MzU2NjIyOWQ2YjM0OTFiOGUwYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvU3RyaW5nVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
U3RyaW5nVmlldy5jcHAKQEAgLTc4LDYgKzc4LDE0IEBAIFRFU1QoV1RGLCBTdHJpbmdWaWV3RW1w
dHlWc051bGwpCiAgICAgICAgIFNVQ0NFRUQoKTsKIH0KIAorYm9vbCBjb21wYXJlTG9vcEl0ZXJh
dGlvbnMoU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVycyBncmFwaGVtZUNsdXN0ZXJzLCBzdGQ6
OnZlY3RvcjxTdHJpbmdWaWV3PiBleHBlY3RlZCkKK3sKKyAgICBzdGQ6OnZlY3RvcjxTdHJpbmdW
aWV3PiBhY3R1YWw7CisgICAgZm9yIChhdXRvIGdyYXBoZW1lQ2x1c3RlciA6IGdyYXBoZW1lQ2x1
c3RlcnMpCisgICAgICAgIGFjdHVhbC5wdXNoX2JhY2soZ3JhcGhlbWVDbHVzdGVyKTsKKyAgICBy
ZXR1cm4gYWN0dWFsID09IGV4cGVjdGVkOworfQorCiBib29sIGNvbXBhcmVMb29wSXRlcmF0aW9u
cyhTdHJpbmdWaWV3OjpDb2RlUG9pbnRzIGNvZGVQb2ludHMsIHN0ZDo6dmVjdG9yPFVDaGFyMzI+
IGV4cGVjdGVkKQogewogICAgIHN0ZDo6dmVjdG9yPFVDaGFyMzI+IGFjdHVhbDsKQEAgLTExNiwz
MCArMTI0LDYzIEBAIFRFU1QoV1RGLCBTdHJpbmdWaWV3SXRlcmF0b3JzKQogICAgIGJ1aWxkKGIs
IHsweEQ4MDAsIDB4REQ1NX0pOyAvLyBTdXJyb2dhdGVzIGZvciB1bmljb2RlIGNvZGUgcG9pbnQg
VSsxMDE1NQogICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3
KGIudG9TdHJpbmcoKSkuY29kZVBvaW50cygpLCB7MHgxMDE1NX0pKTsKICAgICBFWFBFQ1RfVFJV
RShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmNvZGVVbml0
cygpLCB7MHhEODAwLCAweERENTV9KSk7CisgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVy
YXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0cmluZygpKS5ncmFwaGVtZUNsdXN0ZXJzKCksIHtTdHJp
bmdWaWV3KGIudG9TdHJpbmcoKSl9KSk7CiAKICAgICBidWlsZChiLCB7MHhEODAwfSk7IC8vIExl
YWRpbmcgc3Vycm9nYXRlIG9ubHkKICAgICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlv
bnMoU3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmNvZGVQb2ludHMoKSwgezB4RDgwMH0pKTsKICAg
ICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5n
KCkpLmNvZGVVbml0cygpLCB7MHhEODAwfSkpOworICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVMb29w
SXRlcmF0aW9ucyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuZ3JhcGhlbWVDbHVzdGVycygpLCB7
U3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpfSkpOwogCiAgICAgYnVpbGQoYiwgezB4RDgwMCwgMHhE
ODAxfSk7IC8vIFR3byBsZWFkaW5nIHN1cnJvZ2F0ZXMKICAgICBFWFBFQ1RfVFJVRShjb21wYXJl
TG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmNvZGVQb2ludHMoKSwgezB4
RDgwMCwgMHhEODAxfSkpOwogICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9ucyhT
dHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuY29kZVVuaXRzKCksIHsweEQ4MDAsIDB4RDgwMX0pKTsK
KyAgICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3Ry
aW5nKCkpLmdyYXBoZW1lQ2x1c3RlcnMoKSwge1N0cmluZ1ZpZXcoYi5jaGFyYWN0ZXJzMTYoKSwg
MSksIFN0cmluZ1ZpZXcoYi5jaGFyYWN0ZXJzMTYoKSArIDEsIDEpfSkpOwogCiAgICAgYnVpbGQo
YiwgezB4REQ1NX0pOyAvLyBUcmFpbGluZyBzdXJyb2dhdGUgb25seQogICAgIEVYUEVDVF9UUlVF
KGNvbXBhcmVMb29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuY29kZVBvaW50
cygpLCB7MHhERDU1fSkpOwogICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9ucyhT
dHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuY29kZVVuaXRzKCksIHsweERENTV9KSk7CisgICAgRVhQ
RUNUX1RSVUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0cmluZygpKS5n
cmFwaGVtZUNsdXN0ZXJzKCksIHtTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSl9KSk7CiAKICAgICBi
dWlsZChiLCB7MHhEODAwLCAnaCd9KTsgLy8gTGVhZGluZyBzdXJyb2dhdGUgZm9sbG93ZWQgYnkg
bm9uLXN1cnJvZ2F0ZQogICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9ucyhTdHJp
bmdWaWV3KGIudG9TdHJpbmcoKSkuY29kZVBvaW50cygpLCB7MHhEODAwLCAnaCd9KSk7CiAgICAg
RVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0cmluZygp
KS5jb2RlVW5pdHMoKSwgezB4RDgwMCwgJ2gnfSkpOworICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVM
b29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuZ3JhcGhlbWVDbHVzdGVycygp
LCB7U3RyaW5nVmlldyhiLmNoYXJhY3RlcnMxNigpLCAxKSwgU3RyaW5nVmlldyhiLmNoYXJhY3Rl
cnMxNigpICsgMSwgMSl9KSk7CiAKICAgICBidWlsZChiLCB7MHgwMzA2fSk7IC8vICJDT01CSU5J
TkcgQlJFVkUiCiAgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1Zp
ZXcoYi50b1N0cmluZygpKS5jb2RlUG9pbnRzKCksIHsweDAzMDZ9KSk7CiAgICAgRVhQRUNUX1RS
VUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0cmluZygpKS5jb2RlVW5p
dHMoKSwgezB4MDMwNn0pKTsKKyAgICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMo
U3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmdyYXBoZW1lQ2x1c3RlcnMoKSwge1N0cmluZ1ZpZXco
Yi50b1N0cmluZygpKX0pKTsKIAogICAgIGJ1aWxkKGIsIHsweDAzMDYsIDB4RDgwMCwgMHhERDU1
LCAnaCcsICdlJywgJ2wnLCAnbyd9KTsgLy8gTWl4IG9mIHNpbmdsZSBjb2RlIHVuaXQgYW5kIG11
bHRpIGNvZGUgdW5pdCBjb2RlIHBvaW50cwogICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVMb29wSXRl
cmF0aW9ucyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuY29kZVBvaW50cygpLCB7MHgwMzA2LCAw
eDEwMTU1LCAnaCcsICdlJywgJ2wnLCAnbyd9KSk7CiAgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxv
b3BJdGVyYXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0cmluZygpKS5jb2RlVW5pdHMoKSwgezB4MDMw
NiwgMHhEODAwLCAweERENTUsICdoJywgJ2UnLCAnbCcsICdvJ30pKTsKKyAgICBFWFBFQ1RfVFJV
RShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmdyYXBoZW1l
Q2x1c3RlcnMoKSwgeworICAgICAgICBTdHJpbmdWaWV3KGIuY2hhcmFjdGVyczE2KCksIDEpLAor
ICAgICAgICBTdHJpbmdWaWV3KGIuY2hhcmFjdGVyczE2KCkgKyAxLCAyKSwKKyAgICAgICAgU3Ry
aW5nVmlldyhiLmNoYXJhY3RlcnMxNigpICsgMywgMSksCisgICAgICAgIFN0cmluZ1ZpZXcoYi5j
aGFyYWN0ZXJzMTYoKSArIDQsIDEpLAorICAgICAgICBTdHJpbmdWaWV3KGIuY2hhcmFjdGVyczE2
KCkgKyA1LCAxKSwKKyAgICAgICAgU3RyaW5nVmlldyhiLmNoYXJhY3RlcnMxNigpICsgNiwgMSl9
KSk7CisKKyAgICBidWlsZChiLCB7J2UnLCAweDAzMDF9KTsgLy8gIkNPTUJJTklORyBBQ1VURSIK
KyAgICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3Ry
aW5nKCkpLmNvZGVQb2ludHMoKSwgeydlJywgMHgwMzAxfSkpOworICAgIEVYUEVDVF9UUlVFKGNv
bXBhcmVMb29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuY29kZVVuaXRzKCks
IHsnZScsIDB4MDMwMX0pKTsKKyAgICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMo
U3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmdyYXBoZW1lQ2x1c3RlcnMoKSwge1N0cmluZ1ZpZXco
Yi50b1N0cmluZygpKX0pKTsKKworICAgIGJ1aWxkKGIsIHsnZScsIDB4MDMwMSwgMHgwMzA2LCAn
YSd9KTsgLy8gIkNPTUJJTklORyBBQ1VURSIgIkNPTUJJTklORyBCUkVWRSIKKyAgICBFWFBFQ1Rf
VFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmNvZGVQ
b2ludHMoKSwgeydlJywgMHgwMzAxLCAweDAzMDYsICdhJ30pKTsKKyAgICBFWFBFQ1RfVFJVRShj
b21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmNvZGVVbml0cygp
LCB7J2UnLCAweDAzMDEsIDB4MDMwNiwgJ2EnfSkpOworICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVM
b29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuZ3JhcGhlbWVDbHVzdGVycygp
LCB7CisgICAgICAgIFN0cmluZ1ZpZXcoYi5jaGFyYWN0ZXJzMTYoKSwgMyksCisgICAgICAgIFN0
cmluZ1ZpZXcoYi5jaGFyYWN0ZXJzMTYoKSArIDMsIDEpLAorICAgICAgICB9KSk7CisKKyAgICBi
dWlsZChiLCB7MHgxMTEyLCAweDExNmYsIDB4MTFiNiwgMHgxMTA3LCAweDExNjEsIDB4MTFCOH0p
OyAvLyBLb3JlYW4gY29tYmluaW5nIEphbW8KKyAgICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0
ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmNvZGVQb2ludHMoKSwgezB4MTExMiwg
MHgxMTZmLCAweDExYjYsIDB4MTEwNywgMHgxMTYxLCAweDExQjh9KSk7CisgICAgRVhQRUNUX1RS
VUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0cmluZygpKS5jb2RlVW5p
dHMoKSwgezB4MTExMiwgMHgxMTZmLCAweDExYjYsIDB4MTEwNywgMHgxMTYxLCAweDExQjh9KSk7
CisgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0
cmluZygpKS5ncmFwaGVtZUNsdXN0ZXJzKCksIHsKKyAgICAgICAgU3RyaW5nVmlldyhiLmNoYXJh
Y3RlcnMxNigpLCAzKSwKKyAgICAgICAgU3RyaW5nVmlldyhiLmNoYXJhY3RlcnMxNigpICsgMywg
Myl9KSk7CiB9CiAKIFRFU1QoV1RGLCBTdHJpbmdWaWV3RXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZUJh
c2ljKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283289</attachid>
            <date>2016-07-10 12:43:51 -0700</date>
            <delta_ts>2016-07-11 12:48:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159598-20160710124312.patch</filename>
            <type>text/plain</type>
            <size>16870</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAyZDAwNmI0YWNmZWM5OTZlMjcxNDQy
MWVhZWI3OWVlNDJjMGQyZDAuLjdmMDY5YTJjMmQzNmE0OWQyOTZkMDU1MWE2NWIzNDc0MDhjMTFj
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzEgQEAKIDIwMTYtMDctMTAgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAorICAgICAgICBJbXBsZW1lbnQgZ3JhcGhlbWUgY2x1c3Rl
ciBpdGVyYXRvciBvbiBTdHJpbmdWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTk1OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvciBob25vcmluZyB0aGUg
c2Vjb25kIGFyZ3VtZW50IHRvIEZvbnRGYWNlU2V0LmxvYWQoKS4KKworICAgICAgICAqIHd0Zi90
ZXh0L1N0cmluZ1ZpZXcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNs
dXN0ZXJzOjpJdGVyYXRvcjo6SW1wbDo6SW1wbCk6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6
OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJbXBsOjpvcGVyYXRvcisrKToKKyAgICAgICAg
KFdURjo6U3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6SXRlcmF0b3I6OkltcGw6Om9wZXJh
dG9yKik6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJh
dG9yOjpJbXBsOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6R3JhcGhl
bWVDbHVzdGVyczo6SXRlcmF0b3I6OkltcGw6OmNvbXB1dGVJbmRleEVuZCk6CisgICAgICAgIChX
VEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpJdGVyYXRvcik6Cisg
ICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjp+SXRl
cmF0b3IpOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVy
YXRvcjo6b3BlcmF0b3IqKToKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6R3JhcGhlbWVDbHVz
dGVyczo6SXRlcmF0b3I6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpH
cmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6b3BlcmF0b3IhPSk6CisgICAgICAgICogd3RmL3Rl
eHQvU3RyaW5nVmlldy5oOgorICAgICAgICAoV1RGOjpTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0
ZXJzOjpHcmFwaGVtZUNsdXN0ZXJzKToKKyAgICAgICAgKiB0ZXh0L1RleHRCcmVha0l0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I6
Ok5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IpOgorICAgICAgICAqIHRleHQvVGV4dEJy
ZWFrSXRlcmF0b3IuaDoKKworMjAxNi0wNy0xMCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgorCiAgICAgICAgIE1vdmUgYnJlYWtpbmcgaXRlcmF0b3IgY29kZSB0byBX
VEYKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU5
NAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCBlMjA2NzE3YzA3MTI4OWM2ZDYw
MzdjYzM0MDgzYWNlM2Q5ZGIwNGI4Li4xMDYxYWJhMTg5YmIyMmQ5OGY0NjRhMDVkNGIzMTkyOWY2
Y2VlOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTMxLDYgKzMxLDggQEAg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Vu
aWNvZGUvVVRGOC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTkxLDYgKzkzLDg5IEBAIHNpemVf
dCBTdHJpbmdWaWV3OjpmaW5kKFN0cmluZ1ZpZXcgbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIHN0YXJ0
KSBjb25zdAogICAgIHJldHVybiBmaW5kQ29tbW9uKCp0aGlzLCBtYXRjaFN0cmluZywgc3RhcnQp
OwogfQogCitjbGFzcyBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzOjpJdGVyYXRvcjo6SW1w
bCB7CitwdWJsaWM6CisgICAgSW1wbChjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3LCBPcHRp
b25hbDxOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPiYmIGl0ZXJhdG9yLCB1bnNpZ25l
ZCBpbmRleCkKKyAgICAgICAgOiBtX3N0cmluZ1ZpZXcoc3RyaW5nVmlldykKKyAgICAgICAgLCBt
X2l0ZXJhdG9yKFdURk1vdmUoaXRlcmF0b3IpKQorICAgICAgICAsIG1faW5kZXgoaW5kZXgpCisg
ICAgICAgICwgbV9pbmRleEVuZChjb21wdXRlSW5kZXhFbmQoKSkKKyAgICB7CisgICAgfQorCisg
ICAgdm9pZCBvcGVyYXRvcisrKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2luZGV4RW5kID4g
bV9pbmRleCk7CisgICAgICAgIG1faW5kZXggPSBtX2luZGV4RW5kOworICAgICAgICBtX2luZGV4
RW5kID0gY29tcHV0ZUluZGV4RW5kKCk7CisgICAgfQorCisgICAgU3RyaW5nVmlldyBvcGVyYXRv
ciooKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fc3RyaW5nVmlldy5pczhCaXQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nVmlldy5jaGFyYWN0ZXJzOCgpICsg
bV9pbmRleCwgbV9pbmRleEVuZCAtIG1faW5kZXgpOworICAgICAgICByZXR1cm4gU3RyaW5nVmll
dyhtX3N0cmluZ1ZpZXcuY2hhcmFjdGVyczE2KCkgKyBtX2luZGV4LCBtX2luZGV4RW5kIC0gbV9p
bmRleCk7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEltcGwmIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCZtX3N0cmluZ1ZpZXcgPT0gJm90aGVyLm1fc3Ry
aW5nVmlldyk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4
OworICAgICAgICBBU1NFUlQoIXJlc3VsdCB8fCBtX2luZGV4RW5kID09IG90aGVyLm1faW5kZXhF
bmQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHVuc2lnbmVkIGNvbXB1
dGVJbmRleEVuZCgpCisgICAgeworICAgICAgICBpZiAoIW1faXRlcmF0b3IpCisgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgaWYgKG1faW5kZXggPT0gbV9zdHJpbmdWaWV3Lmxlbmd0aCgp
KQorICAgICAgICAgICAgcmV0dXJuIG1faW5kZXg7CisgICAgICAgIHJldHVybiB0ZXh0QnJlYWtG
b2xsb3dpbmcobV9pdGVyYXRvci52YWx1ZSgpLCBtX2luZGV4KTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgY29uc3QgU3RyaW5nVmlldyYgbV9zdHJpbmdWaWV3OworICAgIE9wdGlvbmFsPE5vblNo
YXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3I+IG1faXRlcmF0b3I7CisgICAgdW5zaWduZWQgbV9p
bmRleDsKKyAgICB1bnNpZ25lZCBtX2luZGV4RW5kOworfTsKKworU3RyaW5nVmlldzo6R3JhcGhl
bWVDbHVzdGVyczo6SXRlcmF0b3I6Okl0ZXJhdG9yKGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1Zp
ZXcsIHVuc2lnbmVkIGluZGV4KQorICAgIDogbV9pbXBsKHN0ZDo6bWFrZV91bmlxdWU8SW1wbD4o
c3RyaW5nVmlldywgc3RyaW5nVmlldy5pc051bGwoKSA/IE51bGxvcHQgOiBPcHRpb25hbDxOb25T
aGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yPihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJh
dG9yKHN0cmluZ1ZpZXcpKSwgaW5kZXgpKQoreworfQorCitTdHJpbmdWaWV3OjpHcmFwaGVtZUNs
dXN0ZXJzOjpJdGVyYXRvcjo6fkl0ZXJhdG9yKCkKK3sKK30KKworU3RyaW5nVmlldzo6R3JhcGhl
bWVDbHVzdGVyczo6SXRlcmF0b3I6Okl0ZXJhdG9yKEl0ZXJhdG9yJiYgb3RoZXIpCisgICAgOiBt
X2ltcGwoV1RGTW92ZShvdGhlci5tX2ltcGwpKQoreworfQorCithdXRvIFN0cmluZ1ZpZXc6Okdy
YXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpvcGVyYXRvcisrKCkgLT4gSXRlcmF0b3ImCit7Cisg
ICAgKysoKm1faW1wbCk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitTdHJpbmdWaWV3IFN0cmlu
Z1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpvcGVyYXRvciooKSBjb25zdAorewor
ICAgIHJldHVybiAqKm1faW1wbDsKK30KKworYm9vbCBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0
ZXJzOjpJdGVyYXRvcjo6b3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciYgb3RoZXIpIGNvbnN0Cit7
CisgICAgcmV0dXJuICptX2ltcGwgPT0gKihvdGhlci5tX2ltcGwpOworfQorCitib29sIFN0cmlu
Z1ZpZXc6OkdyYXBoZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yOjpvcGVyYXRvciE9KGNvbnN0IEl0ZXJh
dG9yJiBvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Cit9CisK
ICNpZiBDSEVDS19TVFJJTkdWSUVXX0xJRkVUSU1FCiAKIC8vIE1hbmFnZSByZWZlcmVuY2UgY291
bnQgbWFudWFsbHkgc28gVW5kZXJseWluZ1N0cmluZyBkb2VzIG5vdCBuZWVkIHRvIGJlIGRlZmlu
ZWQgaW4gdGhlIGhlYWRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggM2FlZjRkYmJm
ODk0N2ZkYWExODU3NDJmOGE5MjdhNzQ5MzllMDgyZS4uM2JmMGNlZjJhMDBkNDMzNzhhMzVmMWY2
MWRlNWE5MzZmZGQ2NmRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTgyLDYgKzgy
LDkgQEAgcHVibGljOgogICAgIGNsYXNzIENvZGVQb2ludHM7CiAgICAgQ29kZVBvaW50cyBjb2Rl
UG9pbnRzKCkgY29uc3Q7CiAKKyAgICBjbGFzcyBHcmFwaGVtZUNsdXN0ZXJzOworICAgIEdyYXBo
ZW1lQ2x1c3RlcnMgZ3JhcGhlbWVDbHVzdGVycygpIGNvbnN0OworCiAgICAgYm9vbCBpczhCaXQo
KSBjb25zdDsKICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSBjb25zdDsKICAgICBjb25z
dCBVQ2hhciogY2hhcmFjdGVyczE2KCkgY29uc3Q7CkBAIC01ODAsNiArNTgzLDE4IEBAIGlubGlu
ZSBib29sIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nVmlldyBhLCBjb25zdCBjaGFyKiBi
KQogICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlQ29tbW9uKGEsIGIpOwogfQogCitj
bGFzcyBTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzIHsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBHcmFwaGVtZUNsdXN0ZXJzKGNvbnN0IFN0cmluZ1ZpZXcmKTsKKworICAgIGNsYXNzIEl0ZXJh
dG9yOworICAgIEl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CisgICAgSXRlcmF0b3IgZW5kKCkgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgU3RyaW5nVmlldyBtX3N0cmluZ1ZpZXc7Cit9OworCiBjbGFz
cyBTdHJpbmdWaWV3OjpDb2RlUG9pbnRzIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDb2RlUG9p
bnRzKGNvbnN0IFN0cmluZ1ZpZXcmKTsKQEAgLTYwNCw2ICs2MTksMjkgQEAgcHJpdmF0ZToKICAg
ICBTdHJpbmdWaWV3IG1fc3RyaW5nVmlldzsKIH07CiAKK2NsYXNzIFN0cmluZ1ZpZXc6OkdyYXBo
ZW1lQ2x1c3RlcnM6Okl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
SXRlcmF0b3IoKSA9IGRlbGV0ZTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgSXRlcmF0b3IoY29u
c3QgU3RyaW5nVmlldyYsIHVuc2lnbmVkIGluZGV4KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
fkl0ZXJhdG9yKCk7CisKKyAgICBJdGVyYXRvcihjb25zdCBJdGVyYXRvciYpID0gZGVsZXRlOwor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBJdGVyYXRvcihJdGVyYXRvciYmKTsKKyAgICBJdGVyYXRv
ciYgb3BlcmF0b3I9KGNvbnN0IEl0ZXJhdG9yJikgPSBkZWxldGU7CisgICAgSXRlcmF0b3ImIG9w
ZXJhdG9yPShJdGVyYXRvciYmKSA9IGRlbGV0ZTsKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBT
dHJpbmdWaWV3IG9wZXJhdG9yKigpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBJdGVy
YXRvciYgb3BlcmF0b3IrKygpOworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBJdGVyYXRvciYpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29s
IG9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3ImKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBjbGFz
cyBJbXBsOworCisgICAgc3RkOjp1bmlxdWVfcHRyPEltcGw+IG1faW1wbDsKK307CisKIGNsYXNz
IFN0cmluZ1ZpZXc6OkNvZGVQb2ludHM6Okl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBJdGVyYXRv
cihjb25zdCBTdHJpbmdWaWV3JiwgdW5zaWduZWQgaW5kZXgpOwpAQCAtNjM3LDYgKzY3NSwxMSBA
QCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1faW5kZXg7CiB9OwogCitpbmxpbmUgYXV0byBTdHJp
bmdWaWV3OjpncmFwaGVtZUNsdXN0ZXJzKCkgY29uc3QgLT4gR3JhcGhlbWVDbHVzdGVycworewor
ICAgIHJldHVybiBHcmFwaGVtZUNsdXN0ZXJzKCp0aGlzKTsKK30KKwogaW5saW5lIGF1dG8gU3Ry
aW5nVmlldzo6Y29kZVBvaW50cygpIGNvbnN0IC0+IENvZGVQb2ludHMKIHsKICAgICByZXR1cm4g
Q29kZVBvaW50cygqdGhpcyk7CkBAIC02NDcsNiArNjkwLDIxIEBAIGlubGluZSBhdXRvIFN0cmlu
Z1ZpZXc6OmNvZGVVbml0cygpIGNvbnN0IC0+IENvZGVVbml0cwogICAgIHJldHVybiBDb2RlVW5p
dHMoKnRoaXMpOwogfQogCitpbmxpbmUgU3RyaW5nVmlldzo6R3JhcGhlbWVDbHVzdGVyczo6R3Jh
cGhlbWVDbHVzdGVycyhjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3KQorICAgIDogbV9zdHJp
bmdWaWV3KHN0cmluZ1ZpZXcpCit7Cit9CisKK2lubGluZSBhdXRvIFN0cmluZ1ZpZXc6OkdyYXBo
ZW1lQ2x1c3RlcnM6OmJlZ2luKCkgY29uc3QgLT4gSXRlcmF0b3IKK3sKKyAgICByZXR1cm4gSXRl
cmF0b3IobV9zdHJpbmdWaWV3LCAwKTsKK30KKworaW5saW5lIGF1dG8gU3RyaW5nVmlldzo6R3Jh
cGhlbWVDbHVzdGVyczo6ZW5kKCkgY29uc3QgLT4gSXRlcmF0b3IKK3sKKyAgICByZXR1cm4gSXRl
cmF0b3IobV9zdHJpbmdWaWV3LCBtX3N0cmluZ1ZpZXcubGVuZ3RoKCkpOworfQorCiBpbmxpbmUg
U3RyaW5nVmlldzo6Q29kZVBvaW50czo6Q29kZVBvaW50cyhjb25zdCBTdHJpbmdWaWV3JiBzdHJp
bmdWaWV3KQogICAgIDogbV9zdHJpbmdWaWV3KHN0cmluZ1ZpZXcpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCmluZGV4IDg3ODI0ZTY0MThmNDI4MmIzZjlkMzUx
ZTU1MjBjNWRmY2MyYmEyMWMuLjczZGIxYzhlMzAyY2I1YTRlMWMzMGI1Y2Q1MzA1MjhhZGU4Y2Q4
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuY3BwCkBAIC04MTks
NyArODE5LDcgQEAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6Tm9uU2hhcmVkQ2hh
cmFjdGVyQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3IHN0cmkKIHsKICAgICBtX2l0ZXJhdG9yID0g
bm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjsKIAotICAgIGJvb2wgY3JlYXRlZEl0ZXJh
dG9yID0gbV9pdGVyYXRvciAmJiBjb21wYXJlQW5kU3dhcE5vblNoYXJlZENoYXJhY3RlckJyZWFr
SXRlcmF0b3IobV9pdGVyYXRvciwgMCk7CisgICAgYm9vbCBjcmVhdGVkSXRlcmF0b3IgPSBtX2l0
ZXJhdG9yICYmIGNvbXBhcmVBbmRTd2FwTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciht
X2l0ZXJhdG9yLCBudWxscHRyKTsKICAgICBpZiAoIWNyZWF0ZWRJdGVyYXRvcikKICAgICAgICAg
bV9pdGVyYXRvciA9IGluaXRpYWxpemVJdGVyYXRvcihVQlJLX0NIQVJBQ1RFUik7CiAgICAgaWYg
KCFtX2l0ZXJhdG9yKQpAQCAtODM0LDYgKzgzNCwxMiBAQCBOb25TaGFyZWRDaGFyYWN0ZXJCcmVh
a0l0ZXJhdG9yOjp+Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcigpCiAgICAgICAgIHVi
cmtfY2xvc2UocmVpbnRlcnByZXRfY2FzdDxVQnJlYWtJdGVyYXRvcio+KG1faXRlcmF0b3IpKTsK
IH0KIAorTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcjo6Tm9uU2hhcmVkQ2hhcmFjdGVy
QnJlYWtJdGVyYXRvcihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yJiYgb3RoZXIpCisg
ICAgOiBtX2l0ZXJhdG9yKG51bGxwdHIpCit7CisgICAgc3RkOjpzd2FwKG1faXRlcmF0b3IsIG90
aGVyLm1faXRlcmF0b3IpOworfQorCiAKIC8vIEl0ZXJhdG9yIGltcGxlbWVuYXRpb24uCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvVGV4dEJyZWFrSXRlcmF0b3IuaAppbmRleCBkZTQ1MzQ2OGZiOGNjMjNk
NjNmYTJjM2EzNDg1MTYwNGI2NmI1ODAxLi5kOTAzMjE1YWU0MTM3ZTRjM2E5ZWEzNWIzZDAyNWJm
NTJlNDUxOGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1RleHRCcmVha0l0ZXJh
dG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oCkBAIC0x
OTgsNiArMTk4LDggQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBOb25TaGFyZWRD
aGFyYWN0ZXJCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcpOwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB+Tm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvcigpOwogCisgICAgTm9uU2hhcmVkQ2hh
cmFjdGVyQnJlYWtJdGVyYXRvcihOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yJiYpOwor
CiAgICAgb3BlcmF0b3IgVGV4dEJyZWFrSXRlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gbV9pdGVy
YXRvcjsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDc1ZjdlZjI3YmJhMWQ3MGYxZjA5MjM1NmJiMWRjMjhhZWNjOTJiMDIu
LmJlOGM3NTBmNTViYzUyYzNlODRlYjliN2Q0MDQxMDQyMDY3YzgyZjggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAx
Ni0wNy0xMCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAg
ICAgIEltcGxlbWVudCBncmFwaGVtZSBjbHVzdGVyIGl0ZXJhdG9yIG9uIFN0cmluZ1ZpZXcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTU5OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgaW4g
cHJlcGFyYXRpb24gZm9yIGhvbm9yaW5nIHRoZSBzZWNvbmQgYXJndW1lbnQgdG8gRm9udEZhY2VT
ZXQubG9hZCgpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmll
dy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjb21wYXJlTG9vcEl0ZXJhdGlvbnMpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTYtMDctMDkgIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBHaXZlIGdpdC1hZGQtcmV2aWV3ZXIgYW4g
b3B0aW9uIHRvIHNheSDigJxSdWJiZXItc3RhbXBlZCBieeKAnSBpbiBub24taW50ZXJhY3RpdmUg
bW9kZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmll
dy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcAppbmRl
eCA0MDhjYzY0MmViNzYxNzk4MGFiNDZmODBmNTQ1NmUzMjhlZjYwMmYwLi5jZmFjMGI3ZDJmMDNk
NGUwMjBjMGQzMmU3ZjMwMmUxMmQ4NWM2Y2JmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9TdHJpbmdWaWV3LmNwcApAQCAtNzgsNiArNzgsMTQgQEAgVEVTVChXVEYsIFN0cmlu
Z1ZpZXdFbXB0eVZzTnVsbCkKICAgICAgICAgU1VDQ0VFRCgpOwogfQogCitib29sIGNvbXBhcmVM
b29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3OjpHcmFwaGVtZUNsdXN0ZXJzIGdyYXBoZW1lQ2x1c3Rl
cnMsIHN0ZDo6dmVjdG9yPFN0cmluZ1ZpZXc+IGV4cGVjdGVkKQoreworICAgIHN0ZDo6dmVjdG9y
PFN0cmluZ1ZpZXc+IGFjdHVhbDsKKyAgICBmb3IgKGF1dG8gZ3JhcGhlbWVDbHVzdGVyIDogZ3Jh
cGhlbWVDbHVzdGVycykKKyAgICAgICAgYWN0dWFsLnB1c2hfYmFjayhncmFwaGVtZUNsdXN0ZXIp
OworICAgIHJldHVybiBhY3R1YWwgPT0gZXhwZWN0ZWQ7Cit9CisKIGJvb2wgY29tcGFyZUxvb3BJ
dGVyYXRpb25zKFN0cmluZ1ZpZXc6OkNvZGVQb2ludHMgY29kZVBvaW50cywgc3RkOjp2ZWN0b3I8
VUNoYXIzMj4gZXhwZWN0ZWQpCiB7CiAgICAgc3RkOjp2ZWN0b3I8VUNoYXIzMj4gYWN0dWFsOwpA
QCAtMTAzLDQzICsxMTEsODYgQEAgc3RhdGljIHZvaWQgYnVpbGQoU3RyaW5nQnVpbGRlciYgYnVp
bGRlciwgc3RkOjp2ZWN0b3I8VUNoYXI+IGlucHV0KQogCiBURVNUKFdURiwgU3RyaW5nVmlld0l0
ZXJhdG9ycykKIHsKLSAgICBjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldygpLmNvZGVQ
b2ludHMoKSwgeyB9KTsKLSAgICBjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldygpLmNv
ZGVVbml0cygpLCB7IH0pOworICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9ucyhT
dHJpbmdWaWV3KCkuY29kZVBvaW50cygpLCB7IH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjb21wYXJl
TG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldygpLmNvZGVVbml0cygpLCB7IH0pKTsKKyAgICBFWFBF
Q1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldygpLmdyYXBoZW1lQ2x1c3Rl
cnMoKSwgeyB9KSk7CisKKyAgICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3Ry
aW5nVmlldzo6ZW1wdHkoKS5jb2RlUG9pbnRzKCksIHsgfSkpOworICAgIEVYUEVDVF9UUlVFKGNv
bXBhcmVMb29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3OjplbXB0eSgpLmNvZGVVbml0cygpLCB7IH0p
KTsKKyAgICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldzo6ZW1w
dHkoKS5ncmFwaGVtZUNsdXN0ZXJzKCksIHsgfSkpOwogCi0gICAgY29tcGFyZUxvb3BJdGVyYXRp
b25zKFN0cmluZ1ZpZXc6OmVtcHR5KCkuY29kZVBvaW50cygpLCB7IH0pOwotICAgIGNvbXBhcmVM
b29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3OjplbXB0eSgpLmNvZGVVbml0cygpLCB7IH0pOworICAg
IFN0cmluZyBoZWxvKCJoZWxvIik7CisgICAgU3RyaW5nVmlldyBoZWxvVmlldyhoZWxvKTsKIAot
ICAgIGNvbXBhcmVMb29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3KFN0cmluZygiaGVsbG8iKSkuY29k
ZVBvaW50cygpLCB7J2gnLCAnZScsICdsJywgJ2wnLCAnbyd9KTsKLSAgICBjb21wYXJlTG9vcEl0
ZXJhdGlvbnMoU3RyaW5nVmlldyhTdHJpbmcoImhlbGxvIikpLmNvZGVVbml0cygpLCB7J2gnLCAn
ZScsICdsJywgJ2wnLCAnbyd9KTsKKyAgICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlv
bnMoaGVsb1ZpZXcuY29kZVBvaW50cygpLCB7J2gnLCAnZScsICdsJywgJ28nfSkpOworICAgIEVY
UEVDVF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9ucyhoZWxvVmlldy5jb2RlVW5pdHMoKSwgeydo
JywgJ2UnLCAnbCcsICdvJ30pKTsKKyAgICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlv
bnMoaGVsb1ZpZXcuZ3JhcGhlbWVDbHVzdGVycygpLCB7CisgICAgICAgIFN0cmluZ1ZpZXcoaGVs
b1ZpZXcuY2hhcmFjdGVyczgoKSwgMSksCisgICAgICAgIFN0cmluZ1ZpZXcoaGVsb1ZpZXcuY2hh
cmFjdGVyczgoKSArIDEsIDEpLAorICAgICAgICBTdHJpbmdWaWV3KGhlbG9WaWV3LmNoYXJhY3Rl
cnM4KCkgKyAyLCAxKSwKKyAgICAgICAgU3RyaW5nVmlldyhoZWxvVmlldy5jaGFyYWN0ZXJzOCgp
ICsgMywgMSl9KSk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGI7CiAgICAgYnVpbGQoYiwgezB4RDgw
MCwgMHhERDU1fSk7IC8vIFN1cnJvZ2F0ZXMgZm9yIHVuaWNvZGUgY29kZSBwb2ludCBVKzEwMTU1
CiAgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0
cmluZygpKS5jb2RlUG9pbnRzKCksIHsweDEwMTU1fSkpOwogICAgIEVYUEVDVF9UUlVFKGNvbXBh
cmVMb29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuY29kZVVuaXRzKCksIHsw
eEQ4MDAsIDB4REQ1NX0pKTsKKyAgICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMo
U3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmdyYXBoZW1lQ2x1c3RlcnMoKSwge1N0cmluZ1ZpZXco
Yi50b1N0cmluZygpKX0pKTsKIAogICAgIGJ1aWxkKGIsIHsweEQ4MDB9KTsgLy8gTGVhZGluZyBz
dXJyb2dhdGUgb25seQogICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9ucyhTdHJp
bmdWaWV3KGIudG9TdHJpbmcoKSkuY29kZVBvaW50cygpLCB7MHhEODAwfSkpOwogICAgIEVYUEVD
VF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuY29k
ZVVuaXRzKCksIHsweEQ4MDB9KSk7CisgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVyYXRp
b25zKFN0cmluZ1ZpZXcoYi50b1N0cmluZygpKS5ncmFwaGVtZUNsdXN0ZXJzKCksIHtTdHJpbmdW
aWV3KGIudG9TdHJpbmcoKSl9KSk7CiAKICAgICBidWlsZChiLCB7MHhEODAwLCAweEQ4MDF9KTsg
Ly8gVHdvIGxlYWRpbmcgc3Vycm9nYXRlcwogICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVMb29wSXRl
cmF0aW9ucyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuY29kZVBvaW50cygpLCB7MHhEODAwLCAw
eEQ4MDF9KSk7CiAgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1Zp
ZXcoYi50b1N0cmluZygpKS5jb2RlVW5pdHMoKSwgezB4RDgwMCwgMHhEODAxfSkpOworICAgIEVY
UEVDVF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSku
Z3JhcGhlbWVDbHVzdGVycygpLCB7U3RyaW5nVmlldyhiLmNoYXJhY3RlcnMxNigpLCAxKSwgU3Ry
aW5nVmlldyhiLmNoYXJhY3RlcnMxNigpICsgMSwgMSl9KSk7CiAKICAgICBidWlsZChiLCB7MHhE
RDU1fSk7IC8vIFRyYWlsaW5nIHN1cnJvZ2F0ZSBvbmx5CiAgICAgRVhQRUNUX1RSVUUoY29tcGFy
ZUxvb3BJdGVyYXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0cmluZygpKS5jb2RlUG9pbnRzKCksIHsw
eERENTV9KSk7CiAgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1Zp
ZXcoYi50b1N0cmluZygpKS5jb2RlVW5pdHMoKSwgezB4REQ1NX0pKTsKKyAgICBFWFBFQ1RfVFJV
RShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmdyYXBoZW1l
Q2x1c3RlcnMoKSwge1N0cmluZ1ZpZXcoYi50b1N0cmluZygpKX0pKTsKIAogICAgIGJ1aWxkKGIs
IHsweEQ4MDAsICdoJ30pOyAvLyBMZWFkaW5nIHN1cnJvZ2F0ZSBmb2xsb3dlZCBieSBub24tc3Vy
cm9nYXRlCiAgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVyYXRpb25zKFN0cmluZ1ZpZXco
Yi50b1N0cmluZygpKS5jb2RlUG9pbnRzKCksIHsweEQ4MDAsICdoJ30pKTsKICAgICBFWFBFQ1Rf
VFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmNvZGVV
bml0cygpLCB7MHhEODAwLCAnaCd9KSk7CisgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVy
YXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0cmluZygpKS5ncmFwaGVtZUNsdXN0ZXJzKCksIHtTdHJp
bmdWaWV3KGIuY2hhcmFjdGVyczE2KCksIDEpLCBTdHJpbmdWaWV3KGIuY2hhcmFjdGVyczE2KCkg
KyAxLCAxKX0pKTsKIAogICAgIGJ1aWxkKGIsIHsweDAzMDZ9KTsgLy8gIkNPTUJJTklORyBCUkVW
RSIKICAgICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRv
U3RyaW5nKCkpLmNvZGVQb2ludHMoKSwgezB4MDMwNn0pKTsKICAgICBFWFBFQ1RfVFJVRShjb21w
YXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmNvZGVVbml0cygpLCB7
MHgwMzA2fSkpOworICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9ucyhTdHJpbmdW
aWV3KGIudG9TdHJpbmcoKSkuZ3JhcGhlbWVDbHVzdGVycygpLCB7U3RyaW5nVmlldyhiLnRvU3Ry
aW5nKCkpfSkpOwogCiAgICAgYnVpbGQoYiwgezB4MDMwNiwgMHhEODAwLCAweERENTUsICdoJywg
J2UnLCAnbCcsICdvJ30pOyAvLyBNaXggb2Ygc2luZ2xlIGNvZGUgdW5pdCBhbmQgbXVsdGkgY29k
ZSB1bml0IGNvZGUgcG9pbnRzCiAgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVyYXRpb25z
KFN0cmluZ1ZpZXcoYi50b1N0cmluZygpKS5jb2RlUG9pbnRzKCksIHsweDAzMDYsIDB4MTAxNTUs
ICdoJywgJ2UnLCAnbCcsICdvJ30pKTsKICAgICBFWFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJh
dGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmNvZGVVbml0cygpLCB7MHgwMzA2LCAweEQ4
MDAsIDB4REQ1NSwgJ2gnLCAnZScsICdsJywgJ28nfSkpOworICAgIEVYUEVDVF9UUlVFKGNvbXBh
cmVMb29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuZ3JhcGhlbWVDbHVzdGVy
cygpLCB7CisgICAgICAgIFN0cmluZ1ZpZXcoYi5jaGFyYWN0ZXJzMTYoKSwgMSksCisgICAgICAg
IFN0cmluZ1ZpZXcoYi5jaGFyYWN0ZXJzMTYoKSArIDEsIDIpLAorICAgICAgICBTdHJpbmdWaWV3
KGIuY2hhcmFjdGVyczE2KCkgKyAzLCAxKSwKKyAgICAgICAgU3RyaW5nVmlldyhiLmNoYXJhY3Rl
cnMxNigpICsgNCwgMSksCisgICAgICAgIFN0cmluZ1ZpZXcoYi5jaGFyYWN0ZXJzMTYoKSArIDUs
IDEpLAorICAgICAgICBTdHJpbmdWaWV3KGIuY2hhcmFjdGVyczE2KCkgKyA2LCAxKX0pKTsKKwor
ICAgIGJ1aWxkKGIsIHsnZScsIDB4MDMwMX0pOyAvLyAiQ09NQklOSU5HIEFDVVRFIgorICAgIEVY
UEVDVF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSku
Y29kZVBvaW50cygpLCB7J2UnLCAweDAzMDF9KSk7CisgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxv
b3BJdGVyYXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0cmluZygpKS5jb2RlVW5pdHMoKSwgeydlJywg
MHgwMzAxfSkpOworICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9ucyhTdHJpbmdW
aWV3KGIudG9TdHJpbmcoKSkuZ3JhcGhlbWVDbHVzdGVycygpLCB7U3RyaW5nVmlldyhiLnRvU3Ry
aW5nKCkpfSkpOworCisgICAgYnVpbGQoYiwgeydlJywgMHgwMzAxLCAweDAzMDYsICdhJ30pOyAv
LyAiQ09NQklOSU5HIEFDVVRFIiAiQ09NQklOSU5HIEJSRVZFIgorICAgIEVYUEVDVF9UUlVFKGNv
bXBhcmVMb29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuY29kZVBvaW50cygp
LCB7J2UnLCAweDAzMDEsIDB4MDMwNiwgJ2EnfSkpOworICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVM
b29wSXRlcmF0aW9ucyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuY29kZVVuaXRzKCksIHsnZScs
IDB4MDMwMSwgMHgwMzA2LCAnYSd9KSk7CisgICAgRVhQRUNUX1RSVUUoY29tcGFyZUxvb3BJdGVy
YXRpb25zKFN0cmluZ1ZpZXcoYi50b1N0cmluZygpKS5ncmFwaGVtZUNsdXN0ZXJzKCksIHsKKyAg
ICAgICAgU3RyaW5nVmlldyhiLmNoYXJhY3RlcnMxNigpLCAzKSwKKyAgICAgICAgU3RyaW5nVmll
dyhiLmNoYXJhY3RlcnMxNigpICsgMywgMSksCisgICAgICAgIH0pKTsKKworICAgIGJ1aWxkKGIs
IHsweDExMTIsIDB4MTE2ZiwgMHgxMWI2LCAweDExMDcsIDB4MTE2MSwgMHgxMUI4fSk7IC8vIEtv
cmVhbiBjb21iaW5pbmcgSmFtbworICAgIEVYUEVDVF9UUlVFKGNvbXBhcmVMb29wSXRlcmF0aW9u
cyhTdHJpbmdWaWV3KGIudG9TdHJpbmcoKSkuY29kZVBvaW50cygpLCB7MHgxMTEyLCAweDExNmYs
IDB4MTFiNiwgMHgxMTA3LCAweDExNjEsIDB4MTFCOH0pKTsKKyAgICBFWFBFQ1RfVFJVRShjb21w
YXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5nKCkpLmNvZGVVbml0cygpLCB7
MHgxMTEyLCAweDExNmYsIDB4MTFiNiwgMHgxMTA3LCAweDExNjEsIDB4MTFCOH0pKTsKKyAgICBF
WFBFQ1RfVFJVRShjb21wYXJlTG9vcEl0ZXJhdGlvbnMoU3RyaW5nVmlldyhiLnRvU3RyaW5nKCkp
LmdyYXBoZW1lQ2x1c3RlcnMoKSwgeworICAgICAgICBTdHJpbmdWaWV3KGIuY2hhcmFjdGVyczE2
KCksIDMpLAorICAgICAgICBTdHJpbmdWaWV3KGIuY2hhcmFjdGVyczE2KCkgKyAzLCAzKX0pKTsK
IH0KIAogVEVTVChXVEYsIFN0cmluZ1ZpZXdFcXVhbElnbm9yaW5nQVNDSUlDYXNlQmFzaWMpCg==
</data>
<flag name="review"
          id="306992"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>