<?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>168355</bug_id>
          
          <creation_ts>2017-02-14 20:44:43 -0800</creation_ts>
          <short_desc>Simple line layout: Add support for pagination.</short_desc>
          <delta_ts>2017-02-16 15:04:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>hyatt</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1277050</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-02-14 20:44:43 -0800</bug_when>
    <thetext>&lt;rdar://problem/30119769&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277051</commentid>
    <comment_count>1</comment_count>
      <attachid>301578</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-02-14 20:46:29 -0800</bug_when>
    <thetext>Created attachment 301578
WIP patch

WIP patch (basic pagination + widow support)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277868</commentid>
    <comment_count>2</comment_count>
      <attachid>301816</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-02-16 13:40:36 -0800</bug_when>
    <thetext>Created attachment 301816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277876</commentid>
    <comment_count>3</comment_count>
      <attachid>301816</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2017-02-16 13:47:41 -0800</bug_when>
    <thetext>Comment on attachment 301816
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277927</commentid>
    <comment_count>4</comment_count>
      <attachid>301816</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-16 15:04:37 -0800</bug_when>
    <thetext>Comment on attachment 301816
Patch

Clearing flags on attachment: 301816

Committed r212468: &lt;http://trac.webkit.org/changeset/212468&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277928</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-16 15:04:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301578</attachid>
            <date>2017-02-14 20:46:29 -0800</date>
            <delta_ts>2017-02-16 13:40:32 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>WIP.patch</filename>
            <type>text/plain</type>
            <size>13395</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggYjc5
MDk2ZjQ2ZjEuLjZiZDU3ODE0YTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmNwcApAQCAtMzY5Niw3ICszNjk2LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zs
b3c6OmVuc3VyZUxpbmVCb3hlcygpCiAgICAgbV9zaW1wbGVMaW5lTGF5b3V0ID0gbnVsbHB0cjsK
IAogI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBMYXlvdXRVbml0IG9sZEhlaWdodCA9IGxvZ2lj
YWxIZWlnaHQoKTsKKy8vICAgIExheW91dFVuaXQgb2xkSGVpZ2h0ID0gbG9naWNhbEhlaWdodCgp
OwogI2VuZGlmCiAgICAgYm9vbCBkaWROZWVkTGF5b3V0ID0gbmVlZHNMYXlvdXQoKTsKIApAQCAt
MzcwNiw3ICszNzA2LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OmVuc3VyZUxpbmVCb3hlcygp
CiAgICAgbGF5b3V0TGluZUJveGVzKHJlbGF5b3V0Q2hpbGRyZW4sIHJlcGFpbnRMb2dpY2FsVG9w
LCByZXBhaW50TG9naWNhbEJvdHRvbSk7CiAKICAgICB1cGRhdGVMb2dpY2FsSGVpZ2h0KCk7Ci0g
ICAgQVNTRVJUKGRpZE5lZWRMYXlvdXQgfHwgbG9naWNhbEhlaWdodCgpID09IG9sZEhlaWdodCk7
CisvLyAgICBBU1NFUlQoZGlkTmVlZExheW91dCB8fCBsb2dpY2FsSGVpZ2h0KCkgPT0gb2xkSGVp
Z2h0KTsKIAogICAgIGlmICghZGlkTmVlZExheW91dCkKICAgICAgICAgY2xlYXJOZWVkc0xheW91
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCmluZGV4IDQx
Yjg1OTE3YmUyLi4xZmQ2YzBlMWQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuaApAQCAtMzk1LDEyICszOTUsMTIgQEAgcHVibGljOgogICAgIGJvb2wgbmVl
ZHNMYXlvdXRBZnRlclJlZ2lvblJhbmdlQ2hhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VC
Q09SRV9FWFBPUlQgUmVuZGVyVGV4dCogZmluZENsb3Nlc3RUZXh0QXRBYnNvbHV0ZVBvaW50KGNv
bnN0IEZsb2F0UG9pbnQmKTsKIAotcHJvdGVjdGVkOgotICAgIHZvaWQgY29tcHV0ZUludHJpbnNp
Y0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBt
YXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOwotICAgIAogICAgIC8vIEEgcGFnZSBicmVh
ayBpcyByZXF1aXJlZCBhdCBzb21lIG9mZnNldCBkdWUgdG8gc3BhY2Ugc2hvcnRhZ2UgaW4gdGhl
IGN1cnJlbnQgZnJhZ21lbnRhaW5lci4KICAgICB2b2lkIHNldFBhZ2VCcmVhayhMYXlvdXRVbml0
IG9mZnNldCwgTGF5b3V0VW5pdCBzcGFjZVNob3J0YWdlKTsKIAorcHJvdGVjdGVkOgorICAgIHZv
aWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdp
ZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOworICAgIAog
ICAgIC8vIFVwZGF0ZSBtaW5pbXVtIHBhZ2UgaGVpZ2h0IHJlcXVpcmVkIHRvIGF2b2lkIGZyYWdt
ZW50YXRpb24gd2hlcmUgaXQgc2hvdWxkbid0IG9jY3VyIChpbnNpZGUKICAgICAvLyB1bmJyZWFr
YWJsZSBjb250ZW50LCBiZXR3ZWVuIG9ycGhhbnMgYW5kIHdpZG93cywgZXRjLikuIFRoaXMgd2ls
bCBiZSB1c2VkIGFzIGEgaGludCB0byB0aGUKICAgICAvLyBjb2x1bW4gYmFsYW5jZXIgdG8gaGVs
cCBzZXQgYSBnb29kIG1pbmltdW0gY29sdW1uIGhlaWdodC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAppbmRleCBlN2YxNjQwODVjNi4uNzY2MjY1YmMy
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAK
QEAgLTMxNSw4ICszMTUsOCBAQCBzdGF0aWMgQXZvaWRhbmNlUmVhc29uRmxhZ3MgY2FuVXNlRm9y
V2l0aFJlYXNvbihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIEluYwogICAgICAgICBTRVRf
UkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNOb1BhcmVudCwgcmVhc29ucywgaW5j
bHVkZVJlYXNvbnMpOwogICAgIGlmICghZmxvdy5maXJzdENoaWxkKCkpCiAgICAgICAgIFNFVF9S
RUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc05vQ2hpbGQsIHJlYXNvbnMsIGluY2x1
ZGVSZWFzb25zKTsKLSAgICBpZiAoZmxvdy5mbG93VGhyZWFkU3RhdGUoKSAhPSBSZW5kZXJPYmpl
Y3Q6Ok5vdEluc2lkZUZsb3dUaHJlYWQpCi0gICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9J
Rl9ORUVERUQoRmxvd0lzSW5zaWRlUmVnaW9uLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7Cisg
ICAgLy9pZiAoZmxvdy5mbG93VGhyZWFkU3RhdGUoKSAhPSBSZW5kZXJPYmplY3Q6Ok5vdEluc2lk
ZUZsb3dUaHJlYWQgfHwgKCFmbG93LnZpZXcoKS5sYXlvdXRTdGF0ZSgpIHx8ICFmbG93LnZpZXco
KS5sYXlvdXRTdGF0ZSgpLT5pc1BhZ2luYXRlZCgpKQorICAgIC8vICAgIFNFVF9SRUFTT05fQU5E
X1JFVFVSTl9JRl9ORUVERUQoRmxvd0lzSW5zaWRlUmVnaW9uLCByZWFzb25zLCBpbmNsdWRlUmVh
c29ucyk7CiAgICAgaWYgKCFmbG93LmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAg
IFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc0hvcml6b25hbFdyaXRpbmdN
b2RlLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAgICAgaWYgKGZsb3cuaGFzT3V0bGluZSgp
KQpAQCAtOTA3LDYgKzkwNyw4MSBAQCBzdGF0aWMgdm9pZCBjbG9zZUxpbmVFbmRpbmdBbmRBZGp1
c3RSdW5zKExpbmVTdGF0ZSYgbGluZSwgTGF5b3V0OjpSdW5WZWN0b3ImIHJ1bgogICAgICsrbGlu
ZUNvdW50OwogfQogCitzdHJ1Y3QgTGluZVBvc2l0aW9uIHsKKyAgICBMYXlvdXRVbml0IHRvcDsK
KyAgICBMYXlvdXRVbml0IGJvdHRvbTsKKyAgICBMYXlvdXRVbml0IHJlbWFpbmluZ0hlaWdodDsK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTGluZVBvc2l0aW9uJiBvdGhlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiB0b3AgPT0gb3RoZXIudG9wCisgICAgICAgICYmIGJvdHRvbSA9
PSBvdGhlci5ib3R0b20KKyAgICAgICAgJiYgcmVtYWluaW5nSGVpZ2h0ID09IG90aGVyLnJlbWFp
bmluZ0hlaWdodDsKKyAgICB9Cit9OworCitzdGF0aWMgTGluZVBvc2l0aW9uIGNvbXB1dGVMaW5l
VG9wQW5kQm90dG9tV2l0aE92ZXJmbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgdW5z
aWduZWQgbGluZUluZGV4LCBMYXlvdXQ6OlNpbXBsZVBhZ2luYXRpb25TdHJ1dHMmIHN0cnV0cykK
K3sKKyAgICAvLyBUT0RPOiB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGZsb3cuc3R5bGUo
KSwgbnVsbHB0cikKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IGZsb3cuc3R5bGUoKS5mb250Q2Fz
Y2FkZSgpLmZvbnRNZXRyaWNzKCk7CisgICAgCisgICAgYXV0byBhc2NlbnQgPSBmb250TWV0cmlj
cy5mbG9hdEFzY2VudCgpOworICAgIGF1dG8gZGVzY2VudCA9IGZvbnRNZXRyaWNzLmZsb2F0RGVz
Y2VudCgpOworICAgIGF1dG8gbGluZUhlaWdodCA9IGxpbmVIZWlnaHRGcm9tRmxvdyhmbG93KTsK
KyAgICBMYXlvdXRVbml0IG9mZnNldCA9IDA7CisgICAgZm9yIChhdXRvJiBzdHJ1dCA6IHN0cnV0
cykgeworICAgICAgICBpZiAoc3RydXQubGluZUluZGV4ID49IGxpbmVJbmRleCkKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBvZmZzZXQgKz0gc3RydXQub2Zmc2V0OworICAgIH0KKyAgICAK
KyAgICBpZiAoYXNjZW50ICsgZGVzY2VudCA8PSBsaW5lSGVpZ2h0KSB7CisgICAgICAgIGF1dG8g
dG9wUG9zaXRpb24gPSBsaW5lSW5kZXggKiBsaW5lSGVpZ2h0ICsgb2Zmc2V0OworICAgICAgICBy
ZXR1cm4geyB0b3BQb3NpdGlvbiwgdG9wUG9zaXRpb24gKyBsaW5lSGVpZ2h0LCBmbG93LnBhZ2VS
ZW1haW5pbmdMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KHRvcFBvc2l0aW9uLCBSZW5kZXJCbG9ja0Zs
b3c6OkV4Y2x1ZGVQYWdlQm91bmRhcnkpIH07CisgICAgfQorCisgICAgYXV0byBiYXNlbGluZSA9
IGJhc2VsaW5lRnJvbUZsb3coZmxvdyk7CisgICAgYXV0byB0b3BQb3NpdGlvbiA9IGxpbmVJbmRl
eCAqIGxpbmVIZWlnaHQgKyBvZmZzZXQgKyBiYXNlbGluZSAtIGFzY2VudDsKKyAgICBhdXRvIGJv
dHRvbVBvc2l0aW9uID0gdG9wUG9zaXRpb24gKyBhc2NlbnQgKyBkZXNjZW50OworICAgIHJldHVy
biB7IHRvcFBvc2l0aW9uLCBib3R0b21Qb3NpdGlvbiwgZmxvdy5wYWdlUmVtYWluaW5nTG9naWNh
bEhlaWdodEZvck9mZnNldCh0b3BQb3NpdGlvbiwgUmVuZGVyQmxvY2tGbG93OjpFeGNsdWRlUGFn
ZUJvdW5kYXJ5KSB9OworfQorCitzdGF0aWMgdm9pZCBhZGp1c3RMaW5lUG9zaXRpb25zRm9yUGFn
aW5hdGlvbihMYXlvdXQ6OlJ1blZlY3RvciYgcnVucywgTGF5b3V0OjpTaW1wbGVQYWdpbmF0aW9u
U3RydXRzJiBzdHJ1dHMsIFJlbmRlckJsb2NrRmxvdyYgZmxvdywgdW5zaWduZWQgbGluZUNvdW50
KQoreworICAgIGF1dG8gd2lkb3dzID0gZmxvdy5zdHlsZSgpLmhhc0F1dG9XaWRvd3MoKSA/IDEg
OiBzdGQ6Om1heDx1bnNpZ25lZD4oZmxvdy5zdHlsZSgpLndpZG93cygpLCAwKTsKKyAgICBBU1NF
UlQod2lkb3dzKTsKKyAgICB1bnNpZ25lZCBsaW5lSW5kZXggPSAwOworICAgIFZlY3RvcjxMaW5l
UG9zaXRpb24sIDIwPiBsaW5lczsKKyAgICBmb3IgKGF1dG8mIHJ1biA6IHJ1bnMpIHsKKyAgICAg
ICAgaWYgKCFydW4uaXNFbmRPZkxpbmUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
YXV0byBsaW5lID0gY29tcHV0ZUxpbmVUb3BBbmRCb3R0b21XaXRoT3ZlcmZsb3coZmxvdywgbGlu
ZUluZGV4LCBzdHJ1dHMpOworICAgICAgICBsaW5lcy5hcHBlbmQobGluZSk7CisgICAgICAgIGF1
dG8gbGluZUhlaWdodCA9IGxpbmUuYm90dG9tIC0gbGluZS50b3A7CisgICAgICAgIGF1dG8gYXRU
aGVUb3BPZkNvbHVtbk9yUGFnZSA9IGZsb3cucGFnZUxvZ2ljYWxIZWlnaHRGb3JPZmZzZXQobGlu
ZS50b3ApID09IGxpbmUucmVtYWluaW5nSGVpZ2h0OworICAgICAgICBpZiAoKGxpbmVIZWlnaHQg
PiBsaW5lLnJlbWFpbmluZ0hlaWdodCB8fCBhdFRoZVRvcE9mQ29sdW1uT3JQYWdlKSAmJiBsaW5l
SW5kZXgpIHsKKyAgICAgICAgICAgIC8vIE5ldyBwYWdlLgorICAgICAgICAgICAgQVNTRVJUKCFs
aW5lcy5pc0VtcHR5KCkpOworICAgICAgICAgICAgYXV0byBiZWZvcmVMaW5lQnJlYWtJbmRleCA9
IGxpbmVJbmRleCAtIDE7CisgICAgICAgICAgICBhdXRvIHJlbWFpbmluZ0xpbmVDb3VudCA9IGxp
bmVDb3VudCAtIGxpbmVJbmRleDsKKyAgICAgICAgICAgIGlmICh3aWRvd3MgPiByZW1haW5pbmdM
aW5lQ291bnQpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGJlZm9yZUxpbmVCcmVha1dpdGhXaWRv
d3NDYW5kaWRhdGUgPSAodW5zaWduZWQpc3RkOjptYXg8aW50PihsaW5lQ291bnQgLSB3aWRvd3Mg
LSAxLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAoIXN0cnV0cy5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgICAgIGJlZm9yZUxpbmVCcmVha1dpdGhXaWRvd3NDYW5kaWRhdGUgPSBzdGQ6Om1h
eChzdHJ1dHMubGFzdCgpLmxpbmVJbmRleCArIDEsIGJlZm9yZUxpbmVCcmVha1dpdGhXaWRvd3ND
YW5kaWRhdGUpOworICAgICAgICAgICAgICAgIGJlZm9yZUxpbmVCcmVha0luZGV4ID0gYmVmb3Jl
TGluZUJyZWFrV2l0aFdpZG93c0NhbmRpZGF0ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGF1dG8gc3BhY2VTaG9ydGFnZSA9IGZsb3cucGFnZVJlbWFpbmluZ0xvZ2ljYWxIZWlnaHRGb3JP
ZmZzZXQobGluZXMuYXQoYmVmb3JlTGluZUJyZWFrSW5kZXgpLnRvcCwgUmVuZGVyQmxvY2tGbG93
OjpFeGNsdWRlUGFnZUJvdW5kYXJ5KSAtIGxpbmVIZWlnaHQ7CisgICAgICAgICAgICBmbG93LnNl
dFBhZ2VCcmVhayhsaW5lcy5hdChiZWZvcmVMaW5lQnJlYWtJbmRleCkuYm90dG9tLCBzcGFjZVNo
b3J0YWdlKTsKKyAgICAgICAgICAgIGF1dG8gYWZ0ZXJXaWRvd0xpbmVCcmVhayA9IGxpbmVzLmF0
KGJlZm9yZUxpbmVCcmVha0luZGV4ICsgMSk7CisgICAgICAgICAgICBhdXRvIG9mZnNldCA9IGF0
VGhlVG9wT2ZDb2x1bW5PclBhZ2UgJiYgYWZ0ZXJXaWRvd0xpbmVCcmVhayA9PSBsaW5lID8gTGF5
b3V0VW5pdCgpIDogYWZ0ZXJXaWRvd0xpbmVCcmVhay5yZW1haW5pbmdIZWlnaHQ7CisgICAgICAg
ICAgICBzdHJ1dHMuYXBwZW5kKHsgYmVmb3JlTGluZUJyZWFrSW5kZXgsIG9mZnNldCB9KTsKKyAg
ICAgICAgICAgIC8vIFJlY29tcHV0ZSB3aWRvdyBwdXNoCisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBiZWZvcmVMaW5lQnJlYWtJbmRleCArIDE7IGkgPCBsaW5lcy5zaXplKCk7ICsraSkK
KyAgICAgICAgICAgICAgICBsaW5lcy5hdChpKSA9IGNvbXB1dGVMaW5lVG9wQW5kQm90dG9tV2l0
aE92ZXJmbG93KGZsb3csIGksIHN0cnV0cyk7CisgICAgICAgIH0KKyAgICAgICAgKytsaW5lSW5k
ZXg7CisgICAgfQorfQorCiBzdGF0aWMgdm9pZCBjcmVhdGVUZXh0UnVucyhMYXlvdXQ6OlJ1blZl
Y3RvciYgcnVucywgUmVuZGVyQmxvY2tGbG93JiBmbG93LCB1bnNpZ25lZCYgbGluZUNvdW50KQog
ewogICAgIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSA9IGZsb3cuYm9yZGVyQW5k
UGFkZGluZ0JlZm9yZSgpOwpAQCAtOTMxLDIwICsxMDA2LDI1IEBAIHN0ZDo6dW5pcXVlX3B0cjxM
YXlvdXQ+IGNyZWF0ZShSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCiB7CiAgICAgdW5zaWduZWQgbGlu
ZUNvdW50ID0gMDsKICAgICBMYXlvdXQ6OlJ1blZlY3RvciBydW5zOwotCiAgICAgY3JlYXRlVGV4
dFJ1bnMocnVucywgZmxvdywgbGluZUNvdW50KTsKLSAgICByZXR1cm4gTGF5b3V0OjpjcmVhdGUo
cnVucywgbGluZUNvdW50KTsKKyAgICBMYXlvdXQ6OlNpbXBsZVBhZ2luYXRpb25TdHJ1dHMgc3Ry
dXRzOworICAgIGlmIChmbG93LnZpZXcoKS5sYXlvdXRTdGF0ZSgpICYmIGZsb3cudmlldygpLmxh
eW91dFN0YXRlKCktPmlzUGFnaW5hdGVkKCkpCisgICAgICAgIGFkanVzdExpbmVQb3NpdGlvbnNG
b3JQYWdpbmF0aW9uKHJ1bnMsIHN0cnV0cywgZmxvdywgbGluZUNvdW50KTsKKyAgICBmb3IgKGF1
dG8mIHN0cnV0IDogc3RydXRzKQorICAgICAgZnByaW50ZihzdGRlcnIsICJzdHJ1dDogbGluZTog
JWQgb2Zmc2V0OiAlZlxuIiwgc3RydXQubGluZUluZGV4LCBzdHJ1dC5vZmZzZXQpOworICAgIHJl
dHVybiBMYXlvdXQ6OmNyZWF0ZShydW5zLCBzdHJ1dHMsIGxpbmVDb3VudCk7CiB9CiAKLXN0ZDo6
dW5pcXVlX3B0cjxMYXlvdXQ+IExheW91dDo6Y3JlYXRlKGNvbnN0IFJ1blZlY3RvciYgcnVuVmVj
dG9yLCB1bnNpZ25lZCBsaW5lQ291bnQpCitzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0PiBMYXlvdXQ6
OmNyZWF0ZShjb25zdCBSdW5WZWN0b3ImIHJ1blZlY3RvciwgU2ltcGxlUGFnaW5hdGlvblN0cnV0
cyYgc3RydXRzLCB1bnNpZ25lZCBsaW5lQ291bnQpCiB7CiAgICAgdm9pZCogc2xvdCA9IFdURjo6
ZmFzdE1hbGxvYyhzaXplb2YoTGF5b3V0KSArIHNpemVvZihSdW4pICogcnVuVmVjdG9yLnNpemUo
KSk7Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxMYXlvdXQ+KG5ldyAoTm90TnVsbCwgc2xv
dCkgTGF5b3V0KHJ1blZlY3RvciwgbGluZUNvdW50KSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVl
X3B0cjxMYXlvdXQ+KG5ldyAoTm90TnVsbCwgc2xvdCkgTGF5b3V0KHJ1blZlY3Rvciwgc3RydXRz
LCBsaW5lQ291bnQpKTsKIH0KIAotTGF5b3V0OjpMYXlvdXQoY29uc3QgUnVuVmVjdG9yJiBydW5W
ZWN0b3IsIHVuc2lnbmVkIGxpbmVDb3VudCkKK0xheW91dDo6TGF5b3V0KGNvbnN0IFJ1blZlY3Rv
ciYgcnVuVmVjdG9yLCBTaW1wbGVQYWdpbmF0aW9uU3RydXRzJiBzdHJ1dHMsIHVuc2lnbmVkIGxp
bmVDb3VudCkKICAgICA6IG1fbGluZUNvdW50KGxpbmVDb3VudCkKICAgICAsIG1fcnVuQ291bnQo
cnVuVmVjdG9yLnNpemUoKSkKKyAgICAsIG1fcGFnaW5hdGlvblN0cnV0cyhXVEZNb3ZlKHN0cnV0
cykpCiB7CiAgICAgbWVtY3B5KG1fcnVucywgcnVuVmVjdG9yLmRhdGEoKSwgbV9ydW5Db3VudCAq
IHNpemVvZihSdW4pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
aW1wbGVMaW5lTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dC5oCmluZGV4IGIyODhlMDQ4Yjk2Li5lZTEwYjg2N2U0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oCkBAIC02NiwyMiArNjYsMzEgQEAgc3RydWN0
IFJ1biB7CiAgICAgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgeyBGb3JiaWRM
ZWFkaW5nRXhwYW5zaW9uIHwgRm9yYmlkVHJhaWxpbmdFeHBhbnNpb24gfTsKIH07CiAKK3N0cnVj
dCBTaW1wbGVQYWdpbmF0aW9uU3RydXQgeworICAgIHVuc2lnbmVkIGxpbmVJbmRleDsKKyAgICBm
bG9hdCBvZmZzZXQ7Cit9OworCiBjbGFzcyBMYXlvdXQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIHR5cGVkZWYgVmVjdG9yPFJ1biwgMTA+IFJ1blZlY3RvcjsK
LSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExheW91dD4gY3JlYXRlKGNvbnN0IFJ1blZlY3Rv
ciYsIHVuc2lnbmVkIGxpbmVDb3VudCk7CisgICAgdXNpbmcgUnVuVmVjdG9yID0gVmVjdG9yPFJ1
biwgMTA+OworICAgIHVzaW5nIFNpbXBsZVBhZ2luYXRpb25TdHJ1dHMgPSBWZWN0b3I8U2ltcGxl
UGFnaW5hdGlvblN0cnV0LCA0PjsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExheW91dD4g
Y3JlYXRlKGNvbnN0IFJ1blZlY3RvciYsIFNpbXBsZVBhZ2luYXRpb25TdHJ1dHMmLCB1bnNpZ25l
ZCBsaW5lQ291bnQpOwogCiAgICAgdW5zaWduZWQgbGluZUNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9saW5lQ291bnQ7IH0KIAogICAgIHVuc2lnbmVkIHJ1bkNvdW50KCkgY29uc3QgeyByZXR1cm4g
bV9ydW5Db3VudDsgfQogICAgIGNvbnN0IFJ1biYgcnVuQXQodW5zaWduZWQgaSkgY29uc3QgeyBy
ZXR1cm4gbV9ydW5zW2ldOyB9CiAKKyAgICBib29sIGlzUGFnaW5hdGVkKCkgY29uc3QgeyByZXR1
cm4gIW1fcGFnaW5hdGlvblN0cnV0cy5pc0VtcHR5KCk7IH0KKyAgICBjb25zdCBTaW1wbGVQYWdp
bmF0aW9uU3RydXRzJiBzdHJ1dHMoKSBjb25zdCB7IHJldHVybiBtX3BhZ2luYXRpb25TdHJ1dHM7
IH0KIHByaXZhdGU6Ci0gICAgTGF5b3V0KGNvbnN0IFJ1blZlY3RvciYsIHVuc2lnbmVkIGxpbmVD
b3VudCk7CisgICAgTGF5b3V0KGNvbnN0IFJ1blZlY3RvciYsIFNpbXBsZVBhZ2luYXRpb25TdHJ1
dHMmLCB1bnNpZ25lZCBsaW5lQ291bnQpOwogCiAgICAgdW5zaWduZWQgbV9saW5lQ291bnQ7CiAg
ICAgdW5zaWduZWQgbV9ydW5Db3VudDsKKyAgICBTaW1wbGVQYWdpbmF0aW9uU3RydXRzIG1fcGFn
aW5hdGlvblN0cnV0czsKICAgICBSdW4gbV9ydW5zWzBdOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4
IGY5NGM4ODJhZWYzLi5mODE4ZjQ2YTBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcApAQCAtMTA2LDYgKzEwNiw3
IEBAIHZvaWQgcGFpbnRGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5
b3V0JiBsYXlvdXQsIFBhaW50SW5mbyYgcGFpCiAKICAgICBMYXlvdXRSZWN0IHBhaW50UmVjdCA9
IHBhaW50SW5mby5yZWN0OwogICAgIHBhaW50UmVjdC5tb3ZlQnkoLXBhaW50T2Zmc2V0KTsKKyAg
ICBwYWludFJlY3QgPSBMYXlvdXRSZWN0OjppbmZpbml0ZVJlY3QoKTsKIAogICAgIGF1dG8gcmVz
b2x2ZXIgPSBydW5SZXNvbHZlcihmbG93LCBsYXlvdXQpOwogICAgIGZsb2F0IGRldmljZVNjYWxl
RmFjdG9yID0gZmxvdy5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CkBAIC0xMTQsOSAr
MTE1LDE0IEBAIHZvaWQgcGFpbnRGbG93KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29u
c3QgTGF5b3V0JiBsYXlvdXQsIFBhaW50SW5mbyYgcGFpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICBGbG9hdFJlY3QgcmVjdCA9IHJ1bi5yZWN0KCk7Ci0gICAgICAgIEZsb2F0UmVj
dCB2aXN1YWxPdmVyZmxvd1JlY3QgPSBjb21wdXRlT3ZlcmZsb3coZmxvdywgcmVjdCk7Ci0gICAg
ICAgIGlmIChwYWludFJlY3QueSgpID4gdmlzdWFsT3ZlcmZsb3dSZWN0Lm1heFkoKSB8fCBwYWlu
dFJlY3QubWF4WSgpIDwgdmlzdWFsT3ZlcmZsb3dSZWN0LnkoKSkKKyAgICAgICAgLypGbG9hdFJl
Y3QgdmlzdWFsT3ZlcmZsb3dSZWN0ID0gY29tcHV0ZU92ZXJmbG93KGZsb3csIHJlY3QpOworICAg
ICAgICAKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJwYWludEZsb3cgLT4gcnVuOiAlcyBib3g6
ICVmICVmICVmICVmIHBhaW50IHJlY3Q6ICVmICVmICVmICVmXG4iLCBydW4udGV4dCgpLmNoYXJh
Y3RlcnM4KCksIHZpc3VhbE92ZXJmbG93UmVjdC54KCksIHZpc3VhbE92ZXJmbG93UmVjdC55KCks
IHZpc3VhbE92ZXJmbG93UmVjdC53aWR0aCgpLCB2aXN1YWxPdmVyZmxvd1JlY3QuaGVpZ2h0KCks
IHBhaW50UmVjdC54KCkudG9GbG9hdCgpLCBwYWludFJlY3QueSgpLnRvRmxvYXQoKSwgcGFpbnRS
ZWN0LndpZHRoKCkudG9GbG9hdCgpLCBwYWludFJlY3QuaGVpZ2h0KCkudG9GbG9hdCgpKTsKKwor
ICAgICAgICBpZiAocGFpbnRSZWN0LnkoKSA+IHZpc3VhbE92ZXJmbG93UmVjdC5tYXhZKCkgfHwg
cGFpbnRSZWN0Lm1heFkoKSA8IHZpc3VhbE92ZXJmbG93UmVjdC55KCkpIHsKKyAgICAgICAgICAg
IGZwcmludGYoc3RkZXJyLCAibm8gcGFpbnQgZm9yIHlvdSFcbiIpOwogICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0qLwogCiAgICAgICAgIFN0cmluZyB0ZXh0V2l0aEh5cGhlbjsKICAg
ICAgICAgaWYgKHJ1bi5oYXNIeXBoZW4oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oCmluZGV4IGZmMmVjNmY3YzRlLi5iNWZk
ZjY4ODJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXRGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dEZ1bmN0aW9ucy5oCkBAIC03MSw3ICs3MSwxMiBAQCBuYW1lc3BhY2UgU2ltcGxlTGlu
ZUxheW91dCB7CiAKIGlubGluZSBMYXlvdXRVbml0IGNvbXB1dGVGbG93SGVpZ2h0KGNvbnN0IFJl
bmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQpCiB7Ci0gICAgcmV0dXJu
IGxpbmVIZWlnaHRGcm9tRmxvdyhmbG93KSAqIGxheW91dC5saW5lQ291bnQoKTsKKyAgICBhdXRv
IGZsb3dIZWlnaHQgPSBsaW5lSGVpZ2h0RnJvbUZsb3coZmxvdykgKiBsYXlvdXQubGluZUNvdW50
KCk7CisgICAgaWYgKCFsYXlvdXQuaXNQYWdpbmF0ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZsb3dI
ZWlnaHQ7CisgICAgZm9yIChhdXRvJiBzdHJ1dEVudHJ5IDogbGF5b3V0LnN0cnV0cygpKQorICAg
ICAgICBmbG93SGVpZ2h0ICs9IHN0cnV0RW50cnkub2Zmc2V0OworICAgIHJldHVybiBmbG93SGVp
Z2h0OwogfQogCiBpbmxpbmUgTGF5b3V0VW5pdCBjb21wdXRlRmxvd0ZpcnN0TGluZUJhc2VsaW5l
KGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgY29uc3QgTGF5b3V0JiBsYXlvdXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmgK
aW5kZXggM2NjM2ZiOTM0NWYuLmU5MzNjODZlZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oCkBAIC0yMDYsNyArMjA2LDE1
IEBAIGlubGluZSBSdW5SZXNvbHZlcjo6SXRlcmF0b3ImIFJ1blJlc29sdmVyOjpJdGVyYXRvcjo6
b3BlcmF0b3IrKygpCiBpbmxpbmUgZmxvYXQgUnVuUmVzb2x2ZXI6OlJ1bjo6Y29tcHV0ZUJhc2Vs
aW5lUG9zaXRpb24oKSBjb25zdAogewogICAgIGF1dG8mIHJlc29sdmVyID0gbV9pdGVyYXRvci5y
ZXNvbHZlcigpOwotICAgIHJldHVybiByZXNvbHZlci5tX2xpbmVIZWlnaHQgKiBsaW5lSW5kZXgo
KSArIHJlc29sdmVyLm1fYmFzZWxpbmUgKyByZXNvbHZlci5tX2JvcmRlckFuZFBhZGRpbmdCZWZv
cmU7CisgICAgZmxvYXQgb2Zmc2V0ID0gcmVzb2x2ZXIubV9saW5lSGVpZ2h0ICogbGluZUluZGV4
KCk7CisgICAgaWYgKHJlc29sdmVyLm1fbGF5b3V0LmlzUGFnaW5hdGVkKCkpIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBzdHJ1dEVudHJ5IDogcmVzb2x2ZXIubV9sYXlvdXQuc3RydXRzKCkpIHsKKyAg
ICAgICAgICAgIGlmIChzdHJ1dEVudHJ5LmxpbmVJbmRleCA+PSBsaW5lSW5kZXgoKSkKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG9mZnNldCArPSBzdHJ1dEVudHJ5Lm9mZnNl
dDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gb2Zmc2V0ICsgcmVzb2x2ZXIubV9iYXNl
bGluZSArIHJlc29sdmVyLm1fYm9yZGVyQW5kUGFkZGluZ0JlZm9yZTsKIH0KIAogaW5saW5lIFJ1
blJlc29sdmVyOjpJdGVyYXRvciYgUnVuUmVzb2x2ZXI6Okl0ZXJhdG9yOjpvcGVyYXRvci0tKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301816</attachid>
            <date>2017-02-16 13:40:36 -0800</date>
            <delta_ts>2017-02-16 15:04:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168355-20170216133759.patch</filename>
            <type>text/plain</type>
            <size>14317</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJjMGM2M2Q0YTE1MDdj
MWQwZWI1YTI1NGUwODg5YzJjMzYzMjlkYi4uYWQ4M2VjYmUxNTU4YzIwNmY0MmRkNWFjNjM0MDJl
MzUwYjA1ZjE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE3LTAyLTE2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiBBZGQgc3VwcG9ydCBmb3IgcGFnaW5hdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODM1NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAx
MTk3Njk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhZGRzIGJhc2ljIHN1cHBvcnQgZm9yIHBhZ2luYXRlZCBjb250ZW50IGluY2x1
ZGluZyB3aWRvd3MgYW5kIG9ycGhhbnMuCisKKyAgICAgICAgVGhpcyBpcyBiYXNlZCBvbiB0aGUg
bm9ybWFsIGxpbmUgbGF5b3V0IHBhZ2luYXRpb24gbG9naWMuIEhvd2V2ZXIgdGhlcmUgYXJlIDIg
bWFqb3IKKyAgICAgICAgYWR2YW50YWdlcyBoZXJlIChhbmQgdGhleSBhbGxvdyB1cyB0byBoYXZl
IGEgbXVjaCBzaW1wbGVyIGxvZ2ljKToKKyAgICAgICAgMS4gYWxsIHRoZSBsaW5lcyBhcmUgcG9z
aXRpb25lZCBieSB0aGUgdGltZSB3ZSBzdGFydCBwYWdpbmF0aW5nIHRoZW0gYW5kCisgICAgICAg
IDIuIGxpbmVzIGFsd2F5cyBoYXZlIHVuaWZvcm0gaGVpZ2h0cy4gCisKKyAgICAgICAgVGhpcyBp
cyBub3QgZW5hYmxlZCB5ZXQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y29tcHV0ZUxpbmVUb3BBbmRCb3R0b21XaXRoT3Zl
cmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y29tcHV0ZUxpbmVC
cmVha0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OnNldFBhZ2VC
cmVha0ZvckxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Y29tcHV0
ZU9mZnNldEFmdGVyTGluZUJyZWFrKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlv
dXQ6OnVwZGF0ZU1pbmltdW1QYWdlSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxp
bmVMYXlvdXQ6OmFkanVzdExpbmVQb3NpdGlvbnNGb3JQYWdpbmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1w
bGVMaW5lTGF5b3V0OjpMYXlvdXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpMYXlvdXQ6OkxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkxheW91dDo6
aXNQYWdpbmF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6TGF5b3V0
OjpzdHJ1dHMpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25z
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0Ojpjb21wdXRlRmxvd0hlaWdo
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6UnVuUmVzb2x2ZXI6OlJ1bjo6Y29tcHV0
ZUJhc2VsaW5lUG9zaXRpb24pOgorCiAyMDE3LTAyLTEwICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJz
ZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbRU1FXSBJbXBsZW1lbnQgTWVkaWFLZXlTZXNzaW9u
Ojpsb2FkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRl
eCA0MWI4NTkxN2JlMmIwZjE4MTc2ZWY1NDEzMzQ1NDFiM2QxMTNiNjEwLi40YmVkYjU1YTNmODhk
YjU4YzE2YmQwOGNlYjE5MDUzNWRhODA3YTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5oCkBAIC0zOTUsMTYgKzM5NSwxNiBAQCBwdWJsaWM6CiAgICAgYm9v
bCBuZWVkc0xheW91dEFmdGVyUmVnaW9uUmFuZ2VDaGFuZ2UoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBSZW5kZXJUZXh0KiBmaW5kQ2xvc2VzdFRleHRBdEFic29sdXRlUG9p
bnQoY29uc3QgRmxvYXRQb2ludCYpOwogCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBjb21wdXRlSW50
cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVu
aXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgCiAgICAgLy8gQSBwYWdl
IGJyZWFrIGlzIHJlcXVpcmVkIGF0IHNvbWUgb2Zmc2V0IGR1ZSB0byBzcGFjZSBzaG9ydGFnZSBp
biB0aGUgY3VycmVudCBmcmFnbWVudGFpbmVyLgogICAgIHZvaWQgc2V0UGFnZUJyZWFrKExheW91
dFVuaXQgb2Zmc2V0LCBMYXlvdXRVbml0IHNwYWNlU2hvcnRhZ2UpOwotCiAgICAgLy8gVXBkYXRl
IG1pbmltdW0gcGFnZSBoZWlnaHQgcmVxdWlyZWQgdG8gYXZvaWQgZnJhZ21lbnRhdGlvbiB3aGVy
ZSBpdCBzaG91bGRuJ3Qgb2NjdXIgKGluc2lkZQogICAgIC8vIHVuYnJlYWthYmxlIGNvbnRlbnQs
IGJldHdlZW4gb3JwaGFucyBhbmQgd2lkb3dzLCBldGMuKS4gVGhpcyB3aWxsIGJlIHVzZWQgYXMg
YSBoaW50IHRvIHRoZQogICAgIC8vIGNvbHVtbiBiYWxhbmNlciB0byBoZWxwIHNldCBhIGdvb2Qg
bWluaW11bSBjb2x1bW4gaGVpZ2h0LgogICAgIHZvaWQgdXBkYXRlTWluaW11bVBhZ2VIZWlnaHQo
TGF5b3V0VW5pdCBvZmZzZXQsIExheW91dFVuaXQgbWluSGVpZ2h0KTsKKworcHJvdGVjdGVkOgor
ICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9n
aWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIAogICAgIGJvb2wgcHVzaFRvTmV4dFBhZ2VXaXRoTWluaW11bUxvZ2ljYWxIZWlnaHQoTGF5
b3V0VW5pdCYgYWRqdXN0bWVudCwgTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0LCBMYXlvdXRVbml0
IG1pbmltdW1Mb2dpY2FsSGVpZ2h0KSBjb25zdDsKIAogICAgIC8vIElmIHRoZSBjaGlsZCBpcyB1
bnNwbGl0dGFibGUgYW5kIGNhbid0IGZpdCBvbiB0aGUgY3VycmVudCBwYWdlLCByZXR1cm4gdGhl
IHRvcCBvZiB0aGUgbmV4dCBwYWdlL2NvbHVtbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TaW1wbGVMaW5lTGF5b3V0LmNwcAppbmRleCBlN2YxNjQwODVjNjcxMDk4MGJmYmUzZGZiYmEz
NDQ1ZjE2NTMxMjkzLi4wODU3MGVlNzk0MWFmZDRiMmY0YjMyMjMwNWM0NjRkOTAyMzJkMzQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCkBAIC05
MDcsNiArOTA3LDExOCBAQCBzdGF0aWMgdm9pZCBjbG9zZUxpbmVFbmRpbmdBbmRBZGp1c3RSdW5z
KExpbmVTdGF0ZSYgbGluZSwgTGF5b3V0OjpSdW5WZWN0b3ImIHJ1bgogICAgICsrbGluZUNvdW50
OwogfQogCitzdHJ1Y3QgUGFnaW5hdGVkTGluZSB7CisgICAgTGF5b3V0VW5pdCB0b3A7CisgICAg
TGF5b3V0VW5pdCBib3R0b207CisgICAgTGF5b3V0VW5pdCBoZWlnaHQ7IC8vIFNhbWUgdmFsdWUg
Zm9yIGVhY2ggbGluZXMgYXRtLgorfTsKK3VzaW5nIFBhZ2luYXRlZExpbmVzID0gVmVjdG9yPFBh
Z2luYXRlZExpbmUsIDIwPjsKKworc3RhdGljIFBhZ2luYXRlZExpbmUgY29tcHV0ZUxpbmVUb3BB
bmRCb3R0b21XaXRoT3ZlcmZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCB1bnNpZ25l
ZCBsaW5lSW5kZXgsIExheW91dDo6U2ltcGxlUGFnaW5hdGlvblN0cnV0cyYgc3RydXRzKQorewor
ICAgIC8vIEZJWE1FOiBBZGQgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucy4KKyAgICBhdXRv
JiBmb250TWV0cmljcyA9IGZsb3cuc3R5bGUoKS5mb250Q2FzY2FkZSgpLmZvbnRNZXRyaWNzKCk7
CisgICAgYXV0byBhc2NlbnQgPSBmb250TWV0cmljcy5mbG9hdEFzY2VudCgpOworICAgIGF1dG8g
ZGVzY2VudCA9IGZvbnRNZXRyaWNzLmZsb2F0RGVzY2VudCgpOworICAgIGF1dG8gbGluZUhlaWdo
dCA9IGxpbmVIZWlnaHRGcm9tRmxvdyhmbG93KTsKKyAgICBMYXlvdXRVbml0IG9mZnNldCA9IGZs
b3cuYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpOworICAgIGZvciAoYXV0byYgc3RydXQgOiBzdHJ1
dHMpIHsKKyAgICAgICAgaWYgKHN0cnV0LmxpbmVCcmVhayA+IGxpbmVJbmRleCkKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBvZmZzZXQgKz0gc3RydXQub2Zmc2V0OworICAgIH0KKyAgICBp
ZiAoYXNjZW50ICsgZGVzY2VudCA8PSBsaW5lSGVpZ2h0KSB7CisgICAgICAgIGF1dG8gdG9wUG9z
aXRpb24gPSBsaW5lSW5kZXggKiBsaW5lSGVpZ2h0ICsgb2Zmc2V0OworICAgICAgICByZXR1cm4g
eyB0b3BQb3NpdGlvbiwgdG9wUG9zaXRpb24gKyBsaW5lSGVpZ2h0LCBsaW5lSGVpZ2h0IH07Cisg
ICAgfQorICAgIGF1dG8gYmFzZWxpbmUgPSBiYXNlbGluZUZyb21GbG93KGZsb3cpOworICAgIGF1
dG8gdG9wUG9zaXRpb24gPSBsaW5lSW5kZXggKiBsaW5lSGVpZ2h0ICsgb2Zmc2V0ICsgYmFzZWxp
bmUgLSBhc2NlbnQ7CisgICAgYXV0byBib3R0b21Qb3NpdGlvbiA9IHRvcFBvc2l0aW9uICsgYXNj
ZW50ICsgZGVzY2VudDsKKyAgICByZXR1cm4geyB0b3BQb3NpdGlvbiwgYm90dG9tUG9zaXRpb24s
IGJvdHRvbVBvc2l0aW9uIC0gdG9wUG9zaXRpb24gfTsKK30KKworc3RhdGljIHVuc2lnbmVkIGNv
bXB1dGVMaW5lQnJlYWtJbmRleCh1bnNpZ25lZCBicmVha0NhbmRpZGF0ZSwgdW5zaWduZWQgbGlu
ZUNvdW50LCB1bnNpZ25lZCB3aWRvd3MsIGNvbnN0IExheW91dDo6U2ltcGxlUGFnaW5hdGlvblN0
cnV0cyYgc3RydXRzKQoreworICAgIC8vIEZpcnN0IGxpbmUgZG9lcyBub3QgZml0IHRoZSBjdXJy
ZW50IHBhZ2UuCisgICAgaWYgKCFicmVha0NhbmRpZGF0ZSkKKyAgICAgICAgcmV0dXJuIGJyZWFr
Q2FuZGlkYXRlOworICAgIAorICAgIGF1dG8gcmVtYWluaW5nTGluZUNvdW50ID0gbGluZUNvdW50
IC0gYnJlYWtDYW5kaWRhdGU7CisgICAgaWYgKHdpZG93cyA8PSByZW1haW5pbmdMaW5lQ291bnQp
CisgICAgICAgIHJldHVybiBicmVha0NhbmRpZGF0ZTsKKyAgICAKKyAgICAvLyBPbmx5IGJyZWFr
IGFmdGVyIHRoZSBmaXJzdCBsaW5lIHdpdGggd2lkb3dzLgorICAgIGF1dG8gbGluZUJyZWFrID0g
c3RkOjptYXg8aW50PihsaW5lQ291bnQgLSB3aWRvd3MsIDEpOworICAgIC8vIEJyZWFrIG9uIGN1
cnJlbnQgcGFnZSBvbmx5LgorICAgIGlmIChzdHJ1dHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gbGluZUJyZWFrOworICAgIEFTU0VSVChzdHJ1dHMubGFzdCgpLmxpbmVCcmVhayArIDEgPCBs
aW5lQ291bnQpOworICAgIHJldHVybiBzdGQ6Om1heDx1bnNpZ25lZD4oc3RydXRzLmxhc3QoKS5s
aW5lQnJlYWsgKyAxLCBsaW5lQnJlYWspOworfQorCitzdGF0aWMgdm9pZCBzZXRQYWdlQnJlYWtG
b3JMaW5lKHVuc2lnbmVkIGxpbmVCcmVhaywgUGFnaW5hdGVkTGluZXMmIGxpbmVzLCBSZW5kZXJC
bG9ja0Zsb3cmIGZsb3cpCit7CisgICAgaWYgKCFsaW5lQnJlYWspIHsKKyAgICAgICAgLy8gV2hl
biB0aGUgbGluZSBkb2VzIG5vdCBmaXQgdGhlIGN1cnJlbnQgcGFnZSwganVzdCBhZGQgYSBwYWdl
IGJyZWFrIGluIGZyb250LgorICAgICAgICBhdXRvIGxpbmUgPSBsaW5lcy5maXJzdCgpOworICAg
ICAgICBmbG93LnNldFBhZ2VCcmVhayhsaW5lLnRvcCwgZmxvdy5wYWdlUmVtYWluaW5nTG9naWNh
bEhlaWdodEZvck9mZnNldChsaW5lLnRvcCwgUmVuZGVyQmxvY2tGbG93OjpFeGNsdWRlUGFnZUJv
dW5kYXJ5KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byBiZWZvcmVMaW5lQnJl
YWsgPSBsaW5lcy5hdChsaW5lQnJlYWsgLSAxKTsKKyAgICBhdXRvIHNwYWNlU2hvcnRhZ2UgPSBm
bG93LnBhZ2VSZW1haW5pbmdMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KGJlZm9yZUxpbmVCcmVhay50
b3AsIFJlbmRlckJsb2NrRmxvdzo6RXhjbHVkZVBhZ2VCb3VuZGFyeSkgLSBiZWZvcmVMaW5lQnJl
YWsuaGVpZ2h0OworICAgIGZsb3cuc2V0UGFnZUJyZWFrKGJlZm9yZUxpbmVCcmVhay5ib3R0b20s
IHNwYWNlU2hvcnRhZ2UpOworfQorCitzdGF0aWMgTGF5b3V0VW5pdCBjb21wdXRlT2Zmc2V0QWZ0
ZXJMaW5lQnJlYWsoTGF5b3V0VW5pdCBsaW5lQnJlYWtQb3NpdGlvbiwgYm9vbCBpc0ZpcnN0TGlu
ZSwgYm9vbCBhdFRoZVRvcE9mQ29sdW1uT3JQYWdlLCBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZs
b3cpCit7CisgICAgLy8gTm8gb2Zmc2V0IGZvciB0b3Agb2YgdGhlIHBhZ2UgbGluZXMgdW5sZXNz
IHdpZG93cyBwdXNoZWQgdGhlIGxpbmUgYnJlYWsuCisgICAgTGF5b3V0VW5pdCBvZmZzZXQgPSBp
c0ZpcnN0TGluZSA/IGZsb3cuYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpIDogTGF5b3V0VW5pdCgp
OworICAgIGlmIChhdFRoZVRvcE9mQ29sdW1uT3JQYWdlKQorICAgICAgICByZXR1cm4gb2Zmc2V0
OworICAgIHJldHVybiBvZmZzZXQgKyBmbG93LnBhZ2VSZW1haW5pbmdMb2dpY2FsSGVpZ2h0Rm9y
T2Zmc2V0KGxpbmVCcmVha1Bvc2l0aW9uLCBSZW5kZXJCbG9ja0Zsb3c6OkV4Y2x1ZGVQYWdlQm91
bmRhcnkpOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVNaW5pbXVtUGFnZUhlaWdodChSZW5kZXJC
bG9ja0Zsb3cmIGZsb3csIHVuc2lnbmVkIGxpbmVDb3VudCkKK3sKKyAgICBhdXRvJiBzdHlsZSA9
IGZsb3cuc3R5bGUoKTsKKyAgICBhdXRvIHdpZG93cyA9IHN0eWxlLmhhc0F1dG9XaWRvd3MoKSA/
IDEgOiBzdGQ6Om1heDxpbnQ+KHN0eWxlLndpZG93cygpLCAxKTsKKyAgICBhdXRvIG9ycGhhbnMg
PSBzdHlsZS5oYXNBdXRvT3JwaGFucygpID8gMSA6IHN0ZDo6bWF4PGludD4oc3R5bGUub3JwaGFu
cygpLCAxKTsKKyAgICBhdXRvIG1pbmltdW1MaW5lQ291bnQgPSBzdGQ6Om1pbjx1bnNpZ25lZD4o
c3RkOjptYXgod2lkb3dzLCBvcnBoYW5zKSwgbGluZUNvdW50KTsKKyAgICBmbG93LnVwZGF0ZU1p
bmltdW1QYWdlSGVpZ2h0KDAsIG1pbmltdW1MaW5lQ291bnQgKiBsaW5lSGVpZ2h0RnJvbUZsb3co
ZmxvdykpOworfQorCitzdGF0aWMgdm9pZCBhZGp1c3RMaW5lUG9zaXRpb25zRm9yUGFnaW5hdGlv
bihMYXlvdXQ6OlJ1blZlY3RvciYgcnVucywgTGF5b3V0OjpTaW1wbGVQYWdpbmF0aW9uU3RydXRz
JiBzdHJ1dHMsCisgICAgUmVuZGVyQmxvY2tGbG93JiBmbG93LCB1bnNpZ25lZCBsaW5lQ291bnQp
Cit7CisgICAgdXBkYXRlTWluaW11bVBhZ2VIZWlnaHQoZmxvdywgbGluZUNvdW50KTsKKyAgICAv
LyBGaXJzdCBwYXNzIHdpdGggbm8gcGFnaW5hdGlvbiBvZmZzZXQ/CisgICAgaWYgKCFmbG93LnBh
Z2VMb2dpY2FsSGVpZ2h0Rm9yT2Zmc2V0KDApKQorICAgICAgICByZXR1cm47CisgICAgdW5zaWdu
ZWQgbGluZUluZGV4ID0gMDsKKyAgICBhdXRvIHdpZG93cyA9IGZsb3cuc3R5bGUoKS5oYXNBdXRv
V2lkb3dzKCkgPyAxIDogc3RkOjptYXg8aW50PihmbG93LnN0eWxlKCkud2lkb3dzKCksIDEpOwor
ICAgIFBhZ2luYXRlZExpbmVzIGxpbmVzOworICAgIGZvciAoYXV0byYgcnVuIDogcnVucykgewor
ICAgICAgICBpZiAoIXJ1bi5pc0VuZE9mTGluZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIGF1dG8gbGluZSA9IGNvbXB1dGVMaW5lVG9wQW5kQm90dG9tV2l0aE92ZXJmbG93KGZs
b3csIGxpbmVJbmRleCwgc3RydXRzKTsKKyAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpOworICAg
ICAgICBhdXRvIHJlbWFpbmluZ0hlaWdodCA9IGZsb3cucGFnZVJlbWFpbmluZ0xvZ2ljYWxIZWln
aHRGb3JPZmZzZXQobGluZS50b3AsIFJlbmRlckJsb2NrRmxvdzo6RXhjbHVkZVBhZ2VCb3VuZGFy
eSk7CisgICAgICAgIGF1dG8gYXRUaGVUb3BPZkNvbHVtbk9yUGFnZSA9IGZsb3cucGFnZUxvZ2lj
YWxIZWlnaHRGb3JPZmZzZXQobGluZS50b3ApID09IHJlbWFpbmluZ0hlaWdodDsKKyAgICAgICAg
aWYgKGxpbmUuaGVpZ2h0ID4gcmVtYWluaW5nSGVpZ2h0IHx8IChhdFRoZVRvcE9mQ29sdW1uT3JQ
YWdlICYmIGxpbmVJbmRleCkpIHsKKyAgICAgICAgICAgIGF1dG8gbGluZUJyZWFrSW5kZXggPSBj
b21wdXRlTGluZUJyZWFrSW5kZXgobGluZUluZGV4LCBsaW5lQ291bnQsIHdpZG93cywgc3RydXRz
KTsKKyAgICAgICAgICAgIC8vIEFyZSB3ZSBzdGlsbCBhdCB0aGUgdG9wIG9mIHRoZSBjb2x1bW4v
cGFnZT8KKyAgICAgICAgICAgIGF0VGhlVG9wT2ZDb2x1bW5PclBhZ2UgPSBhdFRoZVRvcE9mQ29s
dW1uT3JQYWdlID8gbGluZUluZGV4ID09IGxpbmVCcmVha0luZGV4IDogZmFsc2U7CisgICAgICAg
ICAgICBzZXRQYWdlQnJlYWtGb3JMaW5lKGxpbmVCcmVha0luZGV4LCBsaW5lcywgZmxvdyk7Cisg
ICAgICAgICAgICBzdHJ1dHMuYXBwZW5kKHsgbGluZUJyZWFrSW5kZXgsIGNvbXB1dGVPZmZzZXRB
ZnRlckxpbmVCcmVhayhsaW5lc1tsaW5lQnJlYWtJbmRleF0udG9wLCAhbGluZUJyZWFrSW5kZXgs
IGF0VGhlVG9wT2ZDb2x1bW5PclBhZ2UsIGZsb3cpIH0pOworICAgICAgICAgICAgLy8gUmVjb21w
dXRlIGxpbmUgcG9zaXRpb25zIHRoYXQgd2UgYWxyZWFkeSB2aXNpdGVkIGJ1dCB3aW5kb3cgYnJl
YWsgcHVzaGVkIHRoZW0gdG8gYSBuZXcgcGFnZS4KKyAgICAgICAgICAgIGZvciAoYXV0byBpID0g
bGluZUJyZWFrSW5kZXg7IGkgPCBsaW5lcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICBs
aW5lcy5hdChpKSA9IGNvbXB1dGVMaW5lVG9wQW5kQm90dG9tV2l0aE92ZXJmbG93KGZsb3csIGks
IHN0cnV0cyk7CisgICAgICAgIH0KKyAgICAgICAgKytsaW5lSW5kZXg7CisgICAgfQorfQorCiBz
dGF0aWMgdm9pZCBjcmVhdGVUZXh0UnVucyhMYXlvdXQ6OlJ1blZlY3RvciYgcnVucywgUmVuZGVy
QmxvY2tGbG93JiBmbG93LCB1bnNpZ25lZCYgbGluZUNvdW50KQogewogICAgIExheW91dFVuaXQg
Ym9yZGVyQW5kUGFkZGluZ0JlZm9yZSA9IGZsb3cuYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpOwpA
QCAtOTMxLDIwICsxMDQzLDIzIEBAIHN0ZDo6dW5pcXVlX3B0cjxMYXlvdXQ+IGNyZWF0ZShSZW5k
ZXJCbG9ja0Zsb3cmIGZsb3cpCiB7CiAgICAgdW5zaWduZWQgbGluZUNvdW50ID0gMDsKICAgICBM
YXlvdXQ6OlJ1blZlY3RvciBydW5zOwotCiAgICAgY3JlYXRlVGV4dFJ1bnMocnVucywgZmxvdywg
bGluZUNvdW50KTsKLSAgICByZXR1cm4gTGF5b3V0OjpjcmVhdGUocnVucywgbGluZUNvdW50KTsK
KyAgICBMYXlvdXQ6OlNpbXBsZVBhZ2luYXRpb25TdHJ1dHMgc3RydXRzOworICAgIGlmIChmbG93
LnZpZXcoKS5sYXlvdXRTdGF0ZSgpICYmIGZsb3cudmlldygpLmxheW91dFN0YXRlKCktPmlzUGFn
aW5hdGVkKCkpCisgICAgICAgIGFkanVzdExpbmVQb3NpdGlvbnNGb3JQYWdpbmF0aW9uKHJ1bnMs
IHN0cnV0cywgZmxvdywgbGluZUNvdW50KTsKKyAgICByZXR1cm4gTGF5b3V0OjpjcmVhdGUocnVu
cywgc3RydXRzLCBsaW5lQ291bnQpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0PiBMYXlv
dXQ6OmNyZWF0ZShjb25zdCBSdW5WZWN0b3ImIHJ1blZlY3RvciwgdW5zaWduZWQgbGluZUNvdW50
KQorc3RkOjp1bmlxdWVfcHRyPExheW91dD4gTGF5b3V0OjpjcmVhdGUoY29uc3QgUnVuVmVjdG9y
JiBydW5WZWN0b3IsIFNpbXBsZVBhZ2luYXRpb25TdHJ1dHMmIHN0cnV0cywgdW5zaWduZWQgbGlu
ZUNvdW50KQogewogICAgIHZvaWQqIHNsb3QgPSBXVEY6OmZhc3RNYWxsb2Moc2l6ZW9mKExheW91
dCkgKyBzaXplb2YoUnVuKSAqIHJ1blZlY3Rvci5zaXplKCkpOwotICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8TGF5b3V0PihuZXcgKE5vdE51bGwsIHNsb3QpIExheW91dChydW5WZWN0b3IsIGxp
bmVDb3VudCkpOworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0PihuZXcgKE5vdE51
bGwsIHNsb3QpIExheW91dChydW5WZWN0b3IsIHN0cnV0cywgbGluZUNvdW50KSk7CiB9CiAKLUxh
eW91dDo6TGF5b3V0KGNvbnN0IFJ1blZlY3RvciYgcnVuVmVjdG9yLCB1bnNpZ25lZCBsaW5lQ291
bnQpCitMYXlvdXQ6OkxheW91dChjb25zdCBSdW5WZWN0b3ImIHJ1blZlY3RvciwgU2ltcGxlUGFn
aW5hdGlvblN0cnV0cyYgc3RydXRzLCB1bnNpZ25lZCBsaW5lQ291bnQpCiAgICAgOiBtX2xpbmVD
b3VudChsaW5lQ291bnQpCiAgICAgLCBtX3J1bkNvdW50KHJ1blZlY3Rvci5zaXplKCkpCisgICAg
LCBtX3BhZ2luYXRpb25TdHJ1dHMoV1RGTW92ZShzdHJ1dHMpKQogewogICAgIG1lbWNweShtX3J1
bnMsIHJ1blZlY3Rvci5kYXRhKCksIG1fcnVuQ291bnQgKiBzaXplb2YoUnVuKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuaAppbmRleCBiMjg4ZTA0OGI5
NjFkNDRiNTMwNTZiYTMyZTU4MjkxN2U2Y2VlYTQ2Li40ZDNhYjI0YjhiMmNjNDBiMmYyMDBjOWQ0
NWE4YTM3MTRmOTMxYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2lt
cGxlTGluZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5l
TGF5b3V0LmgKQEAgLTY2LDIyICs2NiwzMSBAQCBzdHJ1Y3QgUnVuIHsKICAgICBFeHBhbnNpb25C
ZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciB7IEZvcmJpZExlYWRpbmdFeHBhbnNpb24gfCBGb3Ji
aWRUcmFpbGluZ0V4cGFuc2lvbiB9OwogfTsKIAorc3RydWN0IFNpbXBsZVBhZ2luYXRpb25TdHJ1
dCB7CisgICAgdW5zaWduZWQgbGluZUJyZWFrOworICAgIGZsb2F0IG9mZnNldDsKK307CisKIGNs
YXNzIExheW91dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
dHlwZWRlZiBWZWN0b3I8UnVuLCAxMD4gUnVuVmVjdG9yOwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8TGF5b3V0PiBjcmVhdGUoY29uc3QgUnVuVmVjdG9yJiwgdW5zaWduZWQgbGluZUNvdW50
KTsKKyAgICB1c2luZyBSdW5WZWN0b3IgPSBWZWN0b3I8UnVuLCAxMD47CisgICAgdXNpbmcgU2lt
cGxlUGFnaW5hdGlvblN0cnV0cyA9IFZlY3RvcjxTaW1wbGVQYWdpbmF0aW9uU3RydXQsIDQ+Owor
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0PiBjcmVhdGUoY29uc3QgUnVuVmVjdG9y
JiwgU2ltcGxlUGFnaW5hdGlvblN0cnV0cyYsIHVuc2lnbmVkIGxpbmVDb3VudCk7CiAKICAgICB1
bnNpZ25lZCBsaW5lQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2xpbmVDb3VudDsgfQogCiAgICAg
dW5zaWduZWQgcnVuQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3J1bkNvdW50OyB9CiAgICAgY29u
c3QgUnVuJiBydW5BdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX3J1bnNbaV07IH0KIAor
ICAgIGJvb2wgaXNQYWdpbmF0ZWQoKSBjb25zdCB7IHJldHVybiAhbV9wYWdpbmF0aW9uU3RydXRz
LmlzRW1wdHkoKTsgfQorICAgIGNvbnN0IFNpbXBsZVBhZ2luYXRpb25TdHJ1dHMmIHN0cnV0cygp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnaW5hdGlvblN0cnV0czsgfQogcHJpdmF0ZToKLSAgICBMYXlv
dXQoY29uc3QgUnVuVmVjdG9yJiwgdW5zaWduZWQgbGluZUNvdW50KTsKKyAgICBMYXlvdXQoY29u
c3QgUnVuVmVjdG9yJiwgU2ltcGxlUGFnaW5hdGlvblN0cnV0cyYsIHVuc2lnbmVkIGxpbmVDb3Vu
dCk7CiAKICAgICB1bnNpZ25lZCBtX2xpbmVDb3VudDsKICAgICB1bnNpZ25lZCBtX3J1bkNvdW50
OworICAgIFNpbXBsZVBhZ2luYXRpb25TdHJ1dHMgbV9wYWdpbmF0aW9uU3RydXRzOwogICAgIFJ1
biBtX3J1bnNbMF07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuaAppbmRleCBmZjJlYzZmN2M0ZTkyOGEwZmEzZTA0YzA4
Y2JjZGQ4NTA5YTliZjRjLi5iNWZkZjY4ODJkZjMzMTA5YzI3NGQ5YzJmNzhlN2RiOGUwOWM1ODRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1
bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
RnVuY3Rpb25zLmgKQEAgLTcxLDcgKzcxLDEyIEBAIG5hbWVzcGFjZSBTaW1wbGVMaW5lTGF5b3V0
IHsKIAogaW5saW5lIExheW91dFVuaXQgY29tcHV0ZUZsb3dIZWlnaHQoY29uc3QgUmVuZGVyQmxv
Y2tGbG93JiBmbG93LCBjb25zdCBMYXlvdXQmIGxheW91dCkKIHsKLSAgICByZXR1cm4gbGluZUhl
aWdodEZyb21GbG93KGZsb3cpICogbGF5b3V0LmxpbmVDb3VudCgpOworICAgIGF1dG8gZmxvd0hl
aWdodCA9IGxpbmVIZWlnaHRGcm9tRmxvdyhmbG93KSAqIGxheW91dC5saW5lQ291bnQoKTsKKyAg
ICBpZiAoIWxheW91dC5pc1BhZ2luYXRlZCgpKQorICAgICAgICByZXR1cm4gZmxvd0hlaWdodDsK
KyAgICBmb3IgKGF1dG8mIHN0cnV0RW50cnkgOiBsYXlvdXQuc3RydXRzKCkpCisgICAgICAgIGZs
b3dIZWlnaHQgKz0gc3RydXRFbnRyeS5vZmZzZXQ7CisgICAgcmV0dXJuIGZsb3dIZWlnaHQ7CiB9
CiAKIGlubGluZSBMYXlvdXRVbml0IGNvbXB1dGVGbG93Rmlyc3RMaW5lQmFzZWxpbmUoY29uc3Qg
UmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBMYXlvdXQmIGxheW91dCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0UmVzb2x2ZXIuaAppbmRleCAz
Y2MzZmI5MzQ1ZmIwYzJiODJiZjVlMWE4MjQzZThhZjUwNTkyZjBkLi43MzM0NWI2NTAzNGIxODdi
NTBlZDRlNWIyZTRiNGM3Njg4OWI5YzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2ltcGxlTGluZUxheW91dFJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRSZXNvbHZlci5oCkBAIC0yMDYsNyArMjA2LDE1IEBAIGlu
bGluZSBSdW5SZXNvbHZlcjo6SXRlcmF0b3ImIFJ1blJlc29sdmVyOjpJdGVyYXRvcjo6b3BlcmF0
b3IrKygpCiBpbmxpbmUgZmxvYXQgUnVuUmVzb2x2ZXI6OlJ1bjo6Y29tcHV0ZUJhc2VsaW5lUG9z
aXRpb24oKSBjb25zdAogewogICAgIGF1dG8mIHJlc29sdmVyID0gbV9pdGVyYXRvci5yZXNvbHZl
cigpOwotICAgIHJldHVybiByZXNvbHZlci5tX2xpbmVIZWlnaHQgKiBsaW5lSW5kZXgoKSArIHJl
c29sdmVyLm1fYmFzZWxpbmUgKyByZXNvbHZlci5tX2JvcmRlckFuZFBhZGRpbmdCZWZvcmU7Cisg
ICAgYXV0byBvZmZzZXQgPSByZXNvbHZlci5tX2JvcmRlckFuZFBhZGRpbmdCZWZvcmUgKyByZXNv
bHZlci5tX2xpbmVIZWlnaHQgKiBsaW5lSW5kZXgoKTsKKyAgICBpZiAoIXJlc29sdmVyLm1fbGF5
b3V0LmlzUGFnaW5hdGVkKCkpCisgICAgICAgIHJldHVybiBvZmZzZXQgKyByZXNvbHZlci5tX2Jh
c2VsaW5lOworICAgIGZvciAoYXV0byYgc3RydXRFbnRyeSA6IHJlc29sdmVyLm1fbGF5b3V0LnN0
cnV0cygpKSB7CisgICAgICAgIGlmIChzdHJ1dEVudHJ5LmxpbmVCcmVhayA+IGxpbmVJbmRleCgp
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG9mZnNldCArPSBzdHJ1dEVudHJ5Lm9mZnNl
dDsKKyAgICB9CisgICAgcmV0dXJuIG9mZnNldCArIHJlc29sdmVyLm1fYmFzZWxpbmU7CiB9CiAK
IGlubGluZSBSdW5SZXNvbHZlcjo6SXRlcmF0b3ImIFJ1blJlc29sdmVyOjpJdGVyYXRvcjo6b3Bl
cmF0b3ItLSgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>