<?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>190779</bug_id>
          
          <creation_ts>2018-10-21 10:19:53 -0700</creation_ts>
          <short_desc>[LFC][IFC] Add justify text-align support.</short_desc>
          <delta_ts>2018-10-22 09:28:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1471152</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-10-21 10:19:53 -0700</bug_when>
    <thetext>ssia.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471156</commentid>
    <comment_count>1</comment_count>
      <attachid>352875</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-10-21 12:24:59 -0700</bug_when>
    <thetext>Created attachment 352875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471230</commentid>
    <comment_count>2</comment_count>
      <attachid>352892</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-10-22 09:05:01 -0700</bug_when>
    <thetext>Created attachment 352892
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471236</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-10-22 09:27:38 -0700</bug_when>
    <thetext>Committed r237324: &lt;https://trac.webkit.org/changeset/237324&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471237</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-22 09:28:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/45455162&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352875</attachid>
            <date>2018-10-21 12:24:59 -0700</date>
            <delta_ts>2018-10-22 09:05:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>16473</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4YzBhZDZkZTQwMS4uYTc1NjAzY2M4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxOC0xMC0yMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgor
CisgICAgICAgIFtMRkNdW0lGQ10gQWRkIGp1c3RpZnkgdGV4dC1hbGlnbiBzdXBwb3J0LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzc5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29sbGVjdCBleHBh
bnNpb24gb3Bwb3J0dW5pdGllcyBhbmQgYWRqdXN0IHJ1bnMgYWNjb3JkaW5nbHkuCisKKyAgICAg
ICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlv
dXRJbmxpbmVDb250ZW50IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZVJ1bi5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVSdW46
OmV4cGFuc2lvbk9wcG9ydHVuaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
UnVuOjpUZXh0Q29udGV4dDo6c2V0U3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVSdW46OlRleHRDb250ZXh0OjpzZXRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpJbmxpbmVSdW46OnNldFRleHRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lUnVuOjpjcmVhdGVSdW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpJbmxpbmVSdW46OmNyZWF0ZVRleHRSdW4pOiBEZWxldGVkLgorICAgICAgICAqIGxheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6TGluZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lOjppbml0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmU6OmNvbXB1dGVFeHBh
bnNpb25PcHBvcnR1bml0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OkxpbmU6OmFwcGVuZENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6anVzdGlmeVJ1bnMpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6Y2xv
c2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0Ojppc05vbkNvbGxhcHNlZFRleHQpOiBEZWxl
dGVkLgorCiAyMDE4LTEwLTE5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0xGQ11bSUZDXSBBZGQgKHJpZ2h0LCBjZW50ZXIpdGV4dC1hbGlnbiBzdXBwb3J0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDgxNDM2ZDk4Y2I4Li42MWI3
YTYyNTQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTQzLDcg
KzE0Myw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dElubGluZUNvbnRl
bnQoY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29uCiAgICAgICAgIC8vIFRoaXMgbWF5IG9y
IG1heSBub3QgYmUgdGhlIGxhc3QgcnVuIG9uIGxpbmUgLWJ1dCBkZWZpbml0ZWx5IG5vdCB0aGUg
Zmlyc3Qgb25lLgogICAgICAgICBsaW5lLmFwcGVuZENvbnRlbnQoKnJ1bik7CiAgICAgfQotICAg
IGxpbmUuY2xvc2UoKTsKKyAgICBsaW5lLmNsb3NlKExpbmU6Okxhc3RMaW5lOjpZZXMpOwogfQog
CiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlV2lkdGhBbmRIZWlnaHQoY29u
c3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCAyZDlmY2Y0OWI0Ny4uMDY4
M2YxYzJjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNTMsMTkgKzUz
LDI0IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBpbml0KExheW91dFVuaXQgbGluZUxvZ2lj
YWxMZWZ0LCBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKTsKICAgICAgICAgdm9pZCBhcHBlbmRD
b250ZW50KGNvbnN0IElubGluZUxpbmVCcmVha2VyOjpSdW4mKTsKLSAgICAgICAgdm9pZCBjbG9z
ZSgpOworICAgICAgICBlbnVtIGNsYXNzIExhc3RMaW5lIHsgTm8sIFllcyB9OworICAgICAgICB2
b2lkIGNsb3NlKExhc3RMaW5lID0gTGFzdExpbmU6Ok5vKTsKIAogICAgICAgICBib29sIGhhc0Nv
bnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UnVuSW5kZXguaGFzX3ZhbHVlKCk7IH0KICAg
ICAgICAgTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFJpZ2h0KCk7CiAgICAgICAgIExheW91dFVu
aXQgYXZhaWxhYmxlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2F2YWlsYWJsZVdpZHRoOyB9CiAK
ICAgICBwcml2YXRlOgorICAgICAgICB2b2lkIGp1c3RpZnlSdW5zKCk7CisgICAgICAgIHZvaWQg
Y29tcHV0ZUV4cGFuc2lvbk9wcG9ydHVuaXRpZXMoY29uc3QgSW5saW5lTGluZUJyZWFrZXI6OlJ1
biYpOworCiAgICAgICAgIHN0cnVjdCBUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQgewogICAgICAg
ICAgICAgTGF5b3V0VW5pdCB3aWR0aDsKICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aDsKICAg
ICAgICAgfTsKICAgICAgICAgc3RkOjpvcHRpb25hbDxUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQ+
IG1fdHJhaWxpbmdUcmltbWFibGVDb250ZW50OwotICAgICAgICBib29sIG1fbGFzdFJ1bklzTm90
Q29sbGFwc2VkVGV4dCB7IHRydWUgfTsKKyAgICAgICAgYm9vbCBtX2xhc3RSdW5Jc1doaXRlc3Bh
Y2UgeyBmYWxzZSB9OworICAgICAgICBib29sIG1fbGFzdFJ1bkNhbkV4cGFuZCB7IGZhbHNlIH07
CiAKICAgICAgICAgSW5saW5lRm9ybWF0dGluZ1N0YXRlJiBtX2Zvcm1hdHRpbmdTdGF0ZTsKICAg
ICAgICAgY29uc3QgQm94JiBtX2Zvcm1hdHRpbmdSb290OwpAQCAtNzUsNiArODAsNyBAQCBwcml2
YXRlOgogICAgICAgICBMYXlvdXRVbml0IG1fbGluZVdpZHRoOwogCiAgICAgICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IG1fZmlyc3RSdW5JbmRleDsKKyAgICAgICAgYm9vbCBtX2FsaWdubWVu
dElzSnVzdGlmeSB7IGZhbHNlIH07CiAgICAgfTsKIAogICAgIHZvaWQgbGF5b3V0SW5saW5lQ29u
dGVudChjb25zdCBMYXlvdXRDb250ZXh0JiwgSW5saW5lRm9ybWF0dGluZ1N0YXRlJiwgY29uc3Qg
SW5saW5lUnVuUHJvdmlkZXImKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUnVuLmgKaW5kZXggMjgwZTY4YmRlZmIuLjRhYmE0Mjc1
Y2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVSdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVSdW4uaApAQCAtMzQsOCArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3Bh
Y2UgTGF5b3V0IHsKIAogc3RydWN0IElubGluZVJ1biB7Ci0gICAgc3RhdGljIElubGluZVJ1biBj
cmVhdGVSdW4oTGF5b3V0VW5pdCBsb2djaWFsTGVmdCwgTGF5b3V0VW5pdCB3aWR0aCwgY29uc3Qg
SW5saW5lSXRlbSYpOwotICAgIHN0YXRpYyBJbmxpbmVSdW4gY3JlYXRlVGV4dFJ1bihMYXlvdXRV
bml0IGxvZ2NpYWxMZWZ0LCBMYXlvdXRVbml0IHdpZHRoLCBJdGVtUG9zaXRpb24sIHVuc2lnbmVk
IGxlbmd0aCwgY29uc3QgSW5saW5lSXRlbSYpOworICAgIElubGluZVJ1bihMYXlvdXRVbml0IGxv
Z2NpYWxMZWZ0LCBMYXlvdXRVbml0IHdpZHRoLCBjb25zdCBJbmxpbmVJdGVtJik7CiAKICAgICBM
YXlvdXRVbml0IGxvZ2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsTGVmdDsgfQog
ICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbG9naWNhbExlZnQo
KSArIHdpZHRoKCk7IH0KQEAgLTQ1LDI4ICs0NCwzNiBAQCBzdHJ1Y3QgSW5saW5lUnVuIHsKICAg
ICB2b2lkIHNldExvZ2ljYWxMZWZ0KExheW91dFVuaXQgbG9naWNhbExlZnQpIHsgbV9sb2dpY2Fs
TGVmdCA9IGxvZ2ljYWxMZWZ0OyB9CiAgICAgdm9pZCBzZXRMb2dpY2FsUmlnaHQoTGF5b3V0VW5p
dCBsb2dpY2FsUmlnaHQpIHsgbV93aWR0aCAtPSAodGhpcy0+bG9naWNhbFJpZ2h0KCkgLSBsb2dp
Y2FsUmlnaHQpOyB9CiAKKyAgICBzdHJ1Y3QgRXhwYW5zaW9uT3Bwb3J0dW5pdHkgeworICAgICAg
ICB1bnNpZ25lZCBjb3VudCB7IDAgfTsKKyAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgYmVoYXZp
b3IgeyBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uIHwgRm9yYmlkVHJhaWxpbmdFeHBhbnNpb24gfTsK
KyAgICAgICAgTGF5b3V0VW5pdCBleHBhbnNpb247CisgICAgfTsKKyAgICBFeHBhbnNpb25PcHBv
cnR1bml0eSYgZXhwYW5zaW9uT3Bwb3J0dW5pdHkoKSB7IHJldHVybiBtX2V4cGFuc2lvbk9wcG9y
dHVuaXR5OyB9CisKICAgICBzdHJ1Y3QgVGV4dENvbnRleHQgewogICAgIHB1YmxpYzoKICAgICAg
ICAgVGV4dENvbnRleHQoSXRlbVBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOwogCisgICAgICAg
IHZvaWQgc2V0U3RhcnQoSXRlbVBvc2l0aW9uIHN0YXJ0KSB7IG1fc3RhcnQgPSBzdGFydDsgfQor
ICAgICAgICB2b2lkIHNldExlbmd0aCh1bnNpZ25lZCBsZW5ndGgpIHsgbV9sZW5ndGggPSBsZW5n
dGg7IH0KKwogICAgICAgICBJdGVtUG9zaXRpb24gc3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N0
YXJ0OyB9CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3Ro
OyB9CiAKLSAgICAgICAgdm9pZCBzZXRMZW5ndGgodW5zaWduZWQgbGVuZ3RoKSB7IG1fbGVuZ3Ro
ID0gbGVuZ3RoOyB9Ci0KICAgICBwcml2YXRlOgogICAgICAgICBJdGVtUG9zaXRpb24gbV9zdGFy
dDsKICAgICAgICAgdW5zaWduZWQgbV9sZW5ndGg7CiAgICAgfTsKKyAgICB2b2lkIHNldFRleHRD
b250ZXh0KFRleHRDb250ZXh0IHRleHRDb250ZXh0KSB7IG1fdGV4dENvbnRleHQuZW1wbGFjZSh0
ZXh0Q29udGV4dCk7IH0KICAgICBzdGQ6Om9wdGlvbmFsPFRleHRDb250ZXh0PiYgdGV4dENvbnRl
eHQoKSB7IHJldHVybiBtX3RleHRDb250ZXh0OyB9CisKICAgICBjb25zdCBJbmxpbmVJdGVtJiBp
bmxpbmVJdGVtKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVJdGVtOyB9CiAKIHByaXZhdGU6Ci0g
ICAgSW5saW5lUnVuKExheW91dFVuaXQgbG9nY2lhbExlZnQsIExheW91dFVuaXQgd2lkdGgsIGNv
bnN0IElubGluZUl0ZW0mKTsKLSAgICBJbmxpbmVSdW4oTGF5b3V0VW5pdCBsb2djaWFsTGVmdCwg
TGF5b3V0VW5pdCB3aWR0aCwgSXRlbVBvc2l0aW9uLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IElu
bGluZUl0ZW0mKTsKLQogICAgIExheW91dFVuaXQgbV9sb2dpY2FsTGVmdDsKICAgICBMYXlvdXRV
bml0IG1fd2lkdGg7CisgICAgRXhwYW5zaW9uT3Bwb3J0dW5pdHkgbV9leHBhbnNpb25PcHBvcnR1
bml0eTsKIAogICAgIGNvbnN0IElubGluZUl0ZW0mIG1faW5saW5lSXRlbTsKICAgICBzdGQ6Om9w
dGlvbmFsPFRleHRDb250ZXh0PiBtX3RleHRDb250ZXh0OwpAQCAtNzQsMTYgKzgxLDYgQEAgcHJp
dmF0ZToKIAogdXNpbmcgSW5saW5lUnVucyA9IFZlY3RvcjxJbmxpbmVSdW4+OwogCi1pbmxpbmUg
SW5saW5lUnVuIElubGluZVJ1bjo6Y3JlYXRlUnVuKExheW91dFVuaXQgbG9naWNhbExlZnQsIExh
eW91dFVuaXQgd2lkdGgsIGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0pCi17Ci0gICAgcmV0
dXJuIHsgbG9naWNhbExlZnQsIHdpZHRoLCBpbmxpbmVJdGVtIH07Ci19Ci0KLWlubGluZSBJbmxp
bmVSdW4gSW5saW5lUnVuOjpjcmVhdGVUZXh0UnVuKExheW91dFVuaXQgbG9naWNhbExlZnQsIExh
eW91dFVuaXQgd2lkdGgsIEl0ZW1Qb3NpdGlvbiBzdGFydCwgdW5zaWduZWQgbGVuZ3RoLCBjb25z
dCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKQotewotICAgIHJldHVybiB7IGxvZ2ljYWxMZWZ0LCB3
aWR0aCwgc3RhcnQsIGxlbmd0aCwgaW5saW5lSXRlbSB9OwotfQotCiBpbmxpbmUgSW5saW5lUnVu
OjpJbmxpbmVSdW4oTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCB3aWR0aCwgY29u
c3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSkKICAgICA6IG1fbG9naWNhbExlZnQobG9naWNhbExl
ZnQpCiAgICAgLCBtX3dpZHRoKHdpZHRoKQpAQCAtOTEsMTQgKzg4LDYgQEAgaW5saW5lIElubGlu
ZVJ1bjo6SW5saW5lUnVuKExheW91dFVuaXQgbG9naWNhbExlZnQsIExheW91dFVuaXQgd2lkdGgs
IGNvbnN0IElubGkKIHsKIH0KIAotaW5saW5lIElubGluZVJ1bjo6SW5saW5lUnVuKExheW91dFVu
aXQgbG9naWNhbExlZnQsIExheW91dFVuaXQgd2lkdGgsIEl0ZW1Qb3NpdGlvbiBzdGFydCwgdW5z
aWduZWQgbGVuZ3RoLCBjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKQotICAgIDogbV9sb2dp
Y2FsTGVmdChsb2dpY2FsTGVmdCkKLSAgICAsIG1fd2lkdGgod2lkdGgpCi0gICAgLCBtX2lubGlu
ZUl0ZW0oaW5saW5lSXRlbSkKLSAgICAsIG1fdGV4dENvbnRleHQoVGV4dENvbnRleHQgeyBzdGFy
dCwgbGVuZ3RoIH0pCi17Ci19Ci0KIGlubGluZSBJbmxpbmVSdW46OlRleHRDb250ZXh0OjpUZXh0
Q29udGV4dChJdGVtUG9zaXRpb24gc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICA6IG1fc3Rh
cnQoc3RhcnQpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmUuY3BwCmluZGV4IDExYzg5YWIzZjZhLi43MGMxOWY4
YTFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
TGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGlu
ZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIExheW91dCB7CiBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6TGluZTo6TGluZShJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdT
dGF0ZSwgY29uc3QgQm94JiBmb3JtYXR0aW5nUm9vdCkKICAgICA6IG1fZm9ybWF0dGluZ1N0YXRl
KGZvcm1hdHRpbmdTdGF0ZSkKICAgICAsIG1fZm9ybWF0dGluZ1Jvb3QoZm9ybWF0dGluZ1Jvb3Qp
CisgICAgLCBtX2FsaWdubWVudElzSnVzdGlmeShtX2Zvcm1hdHRpbmdSb290LnN0eWxlKCkudGV4
dEFsaWduKCkgPT0gVGV4dEFsaWduTW9kZTo6SnVzdGlmeSkKIHsKIH0KIApAQCAtNDQsNyArNDUs
MTEgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6aW5pdChMYXlvdXRVbml0
IGxpbmVMb2dpY2FsTGVmdCwgTGF5b3V0VW5pdAogICAgIG1fbGluZUxvZ2ljYWxMZWZ0ID0gbGlu
ZUxvZ2ljYWxMZWZ0OwogICAgIG1fbGluZVdpZHRoID0gYXZhaWxhYmxlV2lkdGg7CiAgICAgbV9h
dmFpbGFibGVXaWR0aCA9IGF2YWlsYWJsZVdpZHRoOworCiAgICAgbV9maXJzdFJ1bkluZGV4ID0g
eyB9OworICAgIG1fbGFzdFJ1bklzV2hpdGVzcGFjZSA9IGZhbHNlOworICAgIG1fbGFzdFJ1bkNh
bkV4cGFuZCA9IGZhbHNlOworICAgIG1fdHJhaWxpbmdUcmltbWFibGVDb250ZW50ID0geyB9Owog
fQogCiBzdGF0aWMgTGF5b3V0VW5pdCBhZGp1c3RlZExpbmVMb2dpY2FsTGVmdChUZXh0QWxpZ25N
b2RlIGFsaWduLCBMYXlvdXRVbml0IGxpbmVMb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCByZW1haW5p
bmdXaWR0aCkKQEAgLTY5LDExICs3NCw2IEBAIHN0YXRpYyBMYXlvdXRVbml0IGFkanVzdGVkTGlu
ZUxvZ2ljYWxMZWZ0KFRleHRBbGlnbk1vZGUgYWxpZ24sIExheW91dFVuaXQgbGluZUxvCiAgICAg
cmV0dXJuIGxpbmVMb2dpY2FsTGVmdDsKIH0KIAotc3RhdGljIGJvb2wgaXNOb25Db2xsYXBzZWRU
ZXh0KGNvbnN0IElubGluZVJ1blByb3ZpZGVyOjpSdW4mIGlubGluZVJ1bikKLXsKLSAgICByZXR1
cm4gaW5saW5lUnVuLmlzVGV4dCgpICYmICFpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+aXNDb2xs
YXBzZWQoKTsKLX0KLQogc3RhdGljIGJvb2wgaXNUcmltbWFibGVDb250ZW50KGNvbnN0IElubGlu
ZVJ1blByb3ZpZGVyOjpSdW4mIGlubGluZVJ1bikKIHsKICAgICByZXR1cm4gaW5saW5lUnVuLmlz
V2hpdGVzcGFjZSgpICYmIGlubGluZVJ1bi5zdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpOwpA
QCAtODcsNDEgKzg3LDEwOSBAQCBMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpM
aW5lOjpjb250ZW50TG9naWNhbFJpZ2h0KCkKICAgICByZXR1cm4gbV9mb3JtYXR0aW5nU3RhdGUu
aW5saW5lUnVucygpLmxhc3QoKS5sb2dpY2FsUmlnaHQoKTsKIH0KIAotdm9pZCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6TGluZTo6YXBwZW5kQ29udGVudChjb25zdCBJbmxpbmVMaW5lQnJlYWtl
cjo6UnVuJiBydW4pCit2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lOjpjb21wdXRl
RXhwYW5zaW9uT3Bwb3J0dW5pdGllcyhjb25zdCBJbmxpbmVMaW5lQnJlYWtlcjo6UnVuJiBydW4p
CiB7Ci0gICAgYXV0byBsYXN0UnVuV2FzTm90Q29sbGFwc2VkVGV4dCA9IG1fbGFzdFJ1bklzTm90
Q29sbGFwc2VkVGV4dDsKLSAgICBtX3RyYWlsaW5nVHJpbW1hYmxlQ29udGVudCA9IHsgfTsKLSAg
ICBtX2F2YWlsYWJsZVdpZHRoIC09IHJ1bi53aWR0aDsKKyAgICBpZiAoIW1fYWxpZ25tZW50SXNK
dXN0aWZ5KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGlzRXhwYW5zaW9uT3Bwb3J0dW5p
dHkgPSBbXShhdXRvIGN1cnJlbnRSdW5Jc1doaXRlc3BhY2UsIGF1dG8gbGFzdFJ1bklzV2hpdGVz
cGFjZSkgeworICAgICAgICByZXR1cm4gY3VycmVudFJ1bklzV2hpdGVzcGFjZSB8fCAoIWN1cnJl
bnRSdW5Jc1doaXRlc3BhY2UgJiYgIWxhc3RSdW5Jc1doaXRlc3BhY2UpOworICAgIH07CisKKyAg
ICBhdXRvIGV4cGFuc2lvbkJlaGF2aW9yID0gW10oYXV0byBpc0F0RXhwYW5zaW9uT3Bwb3J0dW5p
dHkpIHsKKyAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxv
d1RyYWlsaW5nRXhwYW5zaW9uOworICAgICAgICBleHBhbnNpb25CZWhhdmlvciB8PSBpc0F0RXhw
YW5zaW9uT3Bwb3J0dW5pdHkgPyBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uIDogQWxsb3dMZWFkaW5n
RXhwYW5zaW9uOworICAgICAgICByZXR1cm4gZXhwYW5zaW9uQmVoYXZpb3I7CisgICAgfTsKIAor
ICAgIGF1dG8gaXNBdEV4cGFuc2lvbk9wcG9ydHVuaXR5ID0gaXNFeHBhbnNpb25PcHBvcnR1bml0
eShydW4uY29udGVudC5pc1doaXRlc3BhY2UoKSwgbV9sYXN0UnVuSXNXaGl0ZXNwYWNlKTsKKwor
ICAgIGF1dG8mIGN1cnJlbnRJbmxpbmVSdW4gPSBtX2Zvcm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5z
KCkubGFzdCgpOworICAgIGF1dG8mIGV4cGFuc2lvbk9wcG9ydHVuaXR5ID0gY3VycmVudElubGlu
ZVJ1bi5leHBhbnNpb25PcHBvcnR1bml0eSgpOworICAgIGlmIChpc0F0RXhwYW5zaW9uT3Bwb3J0
dW5pdHkpCisgICAgICAgICsrZXhwYW5zaW9uT3Bwb3J0dW5pdHkuY291bnQ7CisKKyAgICBleHBh
bnNpb25PcHBvcnR1bml0eS5iZWhhdmlvciA9IGV4cGFuc2lvbkJlaGF2aW9yKGlzQXRFeHBhbnNp
b25PcHBvcnR1bml0eSk7Cit9CisKK3ZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmU6
OmFwcGVuZENvbnRlbnQoY29uc3QgSW5saW5lTGluZUJyZWFrZXI6OlJ1biYgcnVuKQorewogICAg
IGF1dG8mIGNvbnRlbnQgPSBydW4uY29udGVudDsKLSAgICBtX2xhc3RSdW5Jc05vdENvbGxhcHNl
ZFRleHQgPSBpc05vbkNvbGxhcHNlZFRleHQoY29udGVudCk7CiAKICAgICAvLyBBcHBlbmQgdGhp
cyB0ZXh0IHJ1biB0byB0aGUgZW5kIG9mIHRoZSBsYXN0IHRleHQgcnVuLCBpZiB0aGUgbGFzdCBy
dW4gaXMgY29udGludW91cy4KICAgICBzdGQ6Om9wdGlvbmFsPElubGluZVJ1bjo6VGV4dENvbnRl
eHQ+IHRleHRSdW47CiAgICAgaWYgKGNvbnRlbnQuaXNUZXh0KCkpIHsKICAgICAgICAgYXV0byB0
ZXh0Q29udGV4dCA9IGNvbnRlbnQudGV4dENvbnRleHQoKTsKICAgICAgICAgYXV0byBydW5MZW5n
dGggPSB0ZXh0Q29udGV4dC0+aXNDb2xsYXBzZWQoKSA/IDEgOiB0ZXh0Q29udGV4dC0+bGVuZ3Ro
KCk7Ci0KLSAgICAgICAgaWYgKGlzVHJpbW1hYmxlQ29udGVudChjb250ZW50KSkKLSAgICAgICAg
ICAgIG1fdHJhaWxpbmdUcmltbWFibGVDb250ZW50ID0gVHJhaWxpbmdUcmltbWFibGVDb250ZW50
IHsgcnVuLndpZHRoLCBydW5MZW5ndGggfTsKLQotICAgICAgICBpZiAoaGFzQ29udGVudCgpICYm
IGxhc3RSdW5XYXNOb3RDb2xsYXBzZWRUZXh0KSB7Ci0gICAgICAgICAgICBhdXRvJiBpbmxpbmVS
dW4gPSBtX2Zvcm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5zKCkubGFzdCgpOwotICAgICAgICAgICAg
aW5saW5lUnVuLnNldFdpZHRoKGlubGluZVJ1bi53aWR0aCgpICsgcnVuLndpZHRoKTsKLSAgICAg
ICAgICAgIGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5zZXRMZW5ndGgoaW5saW5lUnVuLnRleHRD
b250ZXh0KCktPmxlbmd0aCgpICsgcnVuTGVuZ3RoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQogICAgICAgICB0ZXh0UnVuID0gSW5saW5lUnVuOjpUZXh0Q29udGV4dCB7IHRleHRD
b250ZXh0LT5zdGFydCgpLCBydW5MZW5ndGggfTsKICAgICB9CiAKLSAgICBpZiAodGV4dFJ1bikK
LSAgICAgICAgbV9mb3JtYXR0aW5nU3RhdGUuYXBwZW5kSW5saW5lUnVuKElubGluZVJ1bjo6Y3Jl
YXRlVGV4dFJ1bihjb250ZW50TG9naWNhbFJpZ2h0KCksIHJ1bi53aWR0aCwgdGV4dFJ1bi0+c3Rh
cnQoKSwgdGV4dFJ1bi0+bGVuZ3RoKCksIGNvbnRlbnQuaW5saW5lSXRlbSgpKSk7Ci0gICAgZWxz
ZQotICAgICAgICBtX2Zvcm1hdHRpbmdTdGF0ZS5hcHBlbmRJbmxpbmVSdW4oSW5saW5lUnVuOjpj
cmVhdGVSdW4oY29udGVudExvZ2ljYWxSaWdodCgpLCBydW4ud2lkdGgsIGNvbnRlbnQuaW5saW5l
SXRlbSgpKSk7CisgICAgYXV0byByZXF1aXJlc05ld0lubGluZVJ1biA9ICFoYXNDb250ZW50KCkg
fHwgIWNvbnRlbnQuaXNUZXh0KCkgfHwgIW1fbGFzdFJ1bkNhbkV4cGFuZDsKKyAgICBpZiAocmVx
dWlyZXNOZXdJbmxpbmVSdW4pIHsKKyAgICAgICAgYXV0byBpbmxpbmVSdW4gPSBJbmxpbmVSdW4g
eyBjb250ZW50TG9naWNhbFJpZ2h0KCksIHJ1bi53aWR0aCwgY29udGVudC5pbmxpbmVJdGVtKCkg
fTsKKyAgICAgICAgaWYgKHRleHRSdW4pCisgICAgICAgICAgICBpbmxpbmVSdW4uc2V0VGV4dENv
bnRleHQoeyB0ZXh0UnVuLT5zdGFydCgpLCB0ZXh0UnVuLT5sZW5ndGgoKSB9KTsKKyAgICAgICAg
bV9mb3JtYXR0aW5nU3RhdGUuYXBwZW5kSW5saW5lUnVuKGlubGluZVJ1bik7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgLy8gTm9uLXRleHQgcnVucyBhbHdheXMgcmVxdWlyZSBuZXcgaW5saW5lIHJ1
bi4KKyAgICAgICAgQVNTRVJUKHRleHRSdW4pOworICAgICAgICBhdXRvJiBpbmxpbmVSdW4gPSBt
X2Zvcm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5zKCkubGFzdCgpOworICAgICAgICBpbmxpbmVSdW4u
c2V0V2lkdGgoaW5saW5lUnVuLndpZHRoKCkgKyBydW4ud2lkdGgpOworICAgICAgICBpbmxpbmVS
dW4udGV4dENvbnRleHQoKS0+c2V0TGVuZ3RoKGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5sZW5n
dGgoKSArIHRleHRSdW4tPmxlbmd0aCgpKTsKKyAgICB9CisKKyAgICBjb21wdXRlRXhwYW5zaW9u
T3Bwb3J0dW5pdGllcyhydW4pOworCisgICAgbV9hdmFpbGFibGVXaWR0aCAtPSBydW4ud2lkdGg7
CisgICAgbV9sYXN0UnVuSXNXaGl0ZXNwYWNlID0gY29udGVudC5pc1doaXRlc3BhY2UoKTsKKyAg
ICBtX2xhc3RSdW5DYW5FeHBhbmQgPSBjb250ZW50LmlzVGV4dCgpICYmICFjb250ZW50LnRleHRD
b250ZXh0KCktPmlzQ29sbGFwc2VkKCk7CiAgICAgbV9maXJzdFJ1bkluZGV4ID0gbV9maXJzdFJ1
bkluZGV4LnZhbHVlX29yKG1fZm9ybWF0dGluZ1N0YXRlLmlubGluZVJ1bnMoKS5zaXplKCkgLSAx
KTsKKyAgICBtX3RyYWlsaW5nVHJpbW1hYmxlQ29udGVudCA9IHsgfTsKKyAgICBpZiAoaXNUcmlt
bWFibGVDb250ZW50KGNvbnRlbnQpKQorICAgICAgICBtX3RyYWlsaW5nVHJpbW1hYmxlQ29udGVu
dCA9IFRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCB7IHJ1bi53aWR0aCwgdGV4dFJ1bi0+bGVuZ3Ro
KCkgfTsKK30KKwordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6anVzdGlmeVJ1
bnMoKQoreworICAgIGlmICghaGFzQ29udGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvJiBpbmxpbmVSdW5zID0gbV9mb3JtYXR0aW5nU3RhdGUuaW5saW5lUnVucygpOworICAgIGF1
dG8mIGxhc3RJbmxpbmVSdW4gPSBpbmxpbmVSdW5zLmxhc3QoKTsKKworICAgIC8vIEFkanVzdCAo
Zm9yYmlkKSB0cmFpbGluZyBleHBhbnNpb24gZm9yIHRoZSBsYXN0IHRleHQgcnVuIG9uIGxpbmUu
CisgICAgYXV0byBleHBhbnNpb25CZWhhdmlvciA9IGxhc3RJbmxpbmVSdW4uZXhwYW5zaW9uT3Bw
b3J0dW5pdHkoKS5iZWhhdmlvcjsKKyAgICAvLyBSZW1vdmUgYWxsb3cgYW5kIGFkZCBmb3JiaWQu
CisgICAgZXhwYW5zaW9uQmVoYXZpb3IgXj0gQWxsb3dUcmFpbGluZ0V4cGFuc2lvbjsKKyAgICBl
eHBhbnNpb25CZWhhdmlvciB8PSBGb3JiaWRUcmFpbGluZ0V4cGFuc2lvbjsKKyAgICBsYXN0SW5s
aW5lUnVuLmV4cGFuc2lvbk9wcG9ydHVuaXR5KCkuYmVoYXZpb3IgPSBleHBhbnNpb25CZWhhdmlv
cjsKKworICAgIC8vIENvbGxlY3QgZXhwYW5zaW9uIG9wcG9ydHVuaXRpZXMgYW5kIGp1c3RpZnkg
dGhlIHJ1bnMuCisgICAgYXV0byB3aWR0aFRvRGlzdHJpYnV0ZSA9IGF2YWlsYWJsZVdpZHRoKCk7
CisgICAgaWYgKHdpZHRoVG9EaXN0cmlidXRlIDw9IDApCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gZXhwYW5zaW9uT3Bwb3J0dW5pdGllcyA9IDA7CisgICAgZm9yIChhdXRvIHJ1bkluZGV4
ID0gKm1fZmlyc3RSdW5JbmRleDsgcnVuSW5kZXggPCBpbmxpbmVSdW5zLnNpemUoKTsgKytydW5J
bmRleCkKKyAgICAgICAgZXhwYW5zaW9uT3Bwb3J0dW5pdGllcyArPSBpbmxpbmVSdW5zW3J1bklu
ZGV4XS5leHBhbnNpb25PcHBvcnR1bml0eSgpLmNvdW50OworCisgICAgaWYgKCFleHBhbnNpb25P
cHBvcnR1bml0aWVzKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCBleHBhbnNpb24gPSB3
aWR0aFRvRGlzdHJpYnV0ZS50b0Zsb2F0KCkgLyBleHBhbnNpb25PcHBvcnR1bml0aWVzOworICAg
IExheW91dFVuaXQgYWNjdW11bGF0ZWRFeHBhbnNpb24gPSAwOworICAgIGZvciAoYXV0byBydW5J
bmRleCA9ICptX2ZpcnN0UnVuSW5kZXg7IHJ1bkluZGV4IDwgaW5saW5lUnVucy5zaXplKCk7ICsr
cnVuSW5kZXgpIHsKKyAgICAgICAgYXV0byYgaW5saW5lUnVuID0gaW5saW5lUnVuc1tydW5JbmRl
eF07CisgICAgICAgIGF1dG8gZXhwYW5zaW9uRm9yUnVuID0gaW5saW5lUnVuLmV4cGFuc2lvbk9w
cG9ydHVuaXR5KCkuY291bnQgKiBleHBhbnNpb247CisKKyAgICAgICAgaW5saW5lUnVuLmV4cGFu
c2lvbk9wcG9ydHVuaXR5KCkuZXhwYW5zaW9uID0gZXhwYW5zaW9uRm9yUnVuOworICAgICAgICBp
bmxpbmVSdW4uc2V0TG9naWNhbExlZnQoaW5saW5lUnVuLmxvZ2ljYWxMZWZ0KCkgKyBhY2N1bXVs
YXRlZEV4cGFuc2lvbik7CisgICAgICAgIGlubGluZVJ1bi5zZXRXaWR0aChpbmxpbmVSdW4ud2lk
dGgoKSArIGV4cGFuc2lvbkZvclJ1bik7CisgICAgICAgIGFjY3VtdWxhdGVkRXhwYW5zaW9uICs9
IGV4cGFuc2lvbkZvclJ1bjsKKyAgICB9CiB9CiAKLXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OkxpbmU6OmNsb3NlKCkKK3ZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmU6OmNs
b3NlKExhc3RMaW5lIGlzTGFzdExpbmUpCiB7CiAgICAgYXV0byB0cmltVHJhaWxpbmdDb250ZW50
ID0gWyZdKCkgewogCkBAIC0xMzMsMjIgKzIwMSwyMCBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdD
b250ZXh0OjpMaW5lOjpjbG9zZSgpCiAgICAgICAgIGxhc3RJbmxpbmVSdW4udGV4dENvbnRleHQo
KS0+c2V0TGVuZ3RoKGxhc3RJbmxpbmVSdW4udGV4dENvbnRleHQoKS0+bGVuZ3RoKCkgLSBtX3Ry
YWlsaW5nVHJpbW1hYmxlQ29udGVudC0+bGVuZ3RoKTsKIAogICAgICAgICBpZiAoIWxhc3RJbmxp
bmVSdW4udGV4dENvbnRleHQoKS0+bGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIG1fZm9ybWF0dGlu
Z1N0YXRlLmlubGluZVJ1bnMoKS5yZW1vdmVMYXN0KCk7Ci0gICAgICAgICAgICBpZiAobV9maXJz
dFJ1bkluZGV4LnZhbHVlKCkpCi0gICAgICAgICAgICAgICAgLS0qbV9maXJzdFJ1bkluZGV4Owot
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKCptX2ZpcnN0UnVuSW5kZXggPT0gbV9m
b3JtYXR0aW5nU3RhdGUuaW5saW5lUnVucygpLnNpemUoKSAtIDEpCiAgICAgICAgICAgICAgICAg
bV9maXJzdFJ1bkluZGV4ID0geyB9OworICAgICAgICAgICAgbV9mb3JtYXR0aW5nU3RhdGUuaW5s
aW5lUnVucygpLnJlbW92ZUxhc3QoKTsKICAgICAgICAgfQogICAgICAgICBtX2F2YWlsYWJsZVdp
ZHRoICs9IG1fdHJhaWxpbmdUcmltbWFibGVDb250ZW50LT53aWR0aDsKICAgICAgICAgbV90cmFp
bGluZ1RyaW1tYWJsZUNvbnRlbnQgPSB7IH07CiAgICAgfTsKIAotICAgIGF1dG8gYWxpZ25SdW5z
ID0gWyZdKCkgeworICAgIGF1dG8gYWxpZ25SdW5zID0gWyZdKGF1dG8gYWxpZ25tZW50KSB7CiAK
ICAgICAgICAgaWYgKCFoYXNDb250ZW50KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgYXV0byBhZGp1c3RlZExvZ2ljYWxMZWZ0ID0gYWRqdXN0ZWRMaW5lTG9naWNhbExlZnQobV9m
b3JtYXR0aW5nUm9vdC5zdHlsZSgpLnRleHRBbGlnbigpLCBtX2xpbmVMb2dpY2FsTGVmdCwgbV9h
dmFpbGFibGVXaWR0aCk7CisgICAgICAgIGF1dG8gYWRqdXN0ZWRMb2dpY2FsTGVmdCA9IGFkanVz
dGVkTGluZUxvZ2ljYWxMZWZ0KGFsaWdubWVudCwgbV9saW5lTG9naWNhbExlZnQsIG1fYXZhaWxh
YmxlV2lkdGgpOwogICAgICAgICBpZiAobV9saW5lTG9naWNhbExlZnQgPT0gYWRqdXN0ZWRMb2dp
Y2FsTGVmdCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTYyLDcgKzIyOCwxNiBAQCB2b2lk
IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lOjpjbG9zZSgpCiAgICAgICAgIHJldHVybjsK
IAogICAgIHRyaW1UcmFpbGluZ0NvbnRlbnQoKTsKLSAgICBhbGlnblJ1bnMoKTsKKworICAgIGF1
dG8gdGV4dEFsaWdubWVudCA9IG1fZm9ybWF0dGluZ1Jvb3Quc3R5bGUoKS50ZXh0QWxpZ24oKTsK
KyAgICBpZiAobV9hbGlnbm1lbnRJc0p1c3RpZnkpIHsKKyAgICAgICAgaWYgKGlzTGFzdExpbmUg
PT0gTGFzdExpbmU6Ok5vKSB7CisgICAgICAgICAgICBqdXN0aWZ5UnVucygpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRleHRBbGlnbm1lbnQgPSBUZXh0QWxpZ25N
b2RlOjpMZWZ0OworICAgIH0KKyAgICBhbGlnblJ1bnModGV4dEFsaWdubWVudCk7CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352892</attachid>
            <date>2018-10-22 09:05:01 -0700</date>
            <delta_ts>2018-10-22 09:23:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190779-20181022090455.patch</filename>
            <type>text/plain</type>
            <size>16791</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDllZGQyNmYyNmQzMDU3
NzRhOTg0MmZhMWFmMjE5MzE1ZGRmNWVlZi4uMzE3NDM0N2U1MDM5ZDg4ZTFhNDVhNjg5MDI0OGUx
ZDI5N2I4MTBjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE4LTEwLTIyICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBBZGQganVz
dGlmeSB0ZXh0LWFsaWduIHN1cHBvcnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTA3NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDb2xsZWN0IGV4cGFuc2lvbiBvcHBvcnR1bml0aWVzIGFuZCBhZGp1
c3QgcnVucyBhY2NvcmRpbmdseS4KKworICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dElubGluZUNvbnRlbnQgY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0Lmg6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lUnVuLmg6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVJ1bjo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVSdW46OlRleHRDb250ZXh0OjpzZXRTdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVJ1bjo6VGV4dENvbnRleHQ6OnNldExl
bmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVJ1bjo6c2V0VGV4dENvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVSdW46OmNyZWF0ZVJ1bik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZVJ1bjo6Y3JlYXRlVGV4dFJ1
bik6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5l
OjpMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OkxpbmU6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6TGluZTo6Y29tcHV0ZUV4cGFuc2lvbk9wcG9ydHVuaXRpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6YXBwZW5k
Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250
ZXh0OjpMaW5lOjpqdXN0aWZ5UnVucyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lOjpjbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OmlzTm9uQ29sbGFwc2VkVGV4dCk6IERlbGV0ZWQuCisKIDIwMTgtMTAtMjIgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIEFkZCAocmlnaHQs
IGNlbnRlcil0ZXh0LWFsaWduIHN1cHBvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5jcHAKaW5kZXggODE0MzZkOThjYjgzNzYzMzRlN2FiNDA2YzMwZGZiZjBhYzZjYjk1My4uNjFi
N2E2MjU0Njk2YmU2MjRlMmQ5YWM0MWUyMDM4YjAzYWU5ZmM1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OmxheW91dElubGluZUNvbnRlbnQoY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5
b3V0Q29uCiAgICAgICAgIC8vIFRoaXMgbWF5IG9yIG1heSBub3QgYmUgdGhlIGxhc3QgcnVuIG9u
IGxpbmUgLWJ1dCBkZWZpbml0ZWx5IG5vdCB0aGUgZmlyc3Qgb25lLgogICAgICAgICBsaW5lLmFw
cGVuZENvbnRlbnQoKnJ1bik7CiAgICAgfQotICAgIGxpbmUuY2xvc2UoKTsKKyAgICBsaW5lLmNs
b3NlKExpbmU6Okxhc3RMaW5lOjpZZXMpOwogfQogCiB2b2lkIElubGluZUZvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlV2lkdGhBbmRIZWlnaHQoY29uc3QgTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29u
dGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuaAppbmRleCAyZDlmY2Y0OWI0NzQxNTEwNTllNDA5ZjdmZjczZDJkMjdhZmQ1ZDg5Li4w
NjgzZjFjMmNlNDRmYjE0YTZiMmZkZmQzNmEyM2RkZDMwZWRhZjBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmgKQEAgLTUzLDE5ICs1MywyNCBAQCBwcml2YXRlOgogCiAgICAgICAg
IHZvaWQgaW5pdChMYXlvdXRVbml0IGxpbmVMb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCBhdmFpbGFi
bGVXaWR0aCk7CiAgICAgICAgIHZvaWQgYXBwZW5kQ29udGVudChjb25zdCBJbmxpbmVMaW5lQnJl
YWtlcjo6UnVuJik7Ci0gICAgICAgIHZvaWQgY2xvc2UoKTsKKyAgICAgICAgZW51bSBjbGFzcyBM
YXN0TGluZSB7IE5vLCBZZXMgfTsKKyAgICAgICAgdm9pZCBjbG9zZShMYXN0TGluZSA9IExhc3RM
aW5lOjpObyk7CiAKICAgICAgICAgYm9vbCBoYXNDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9m
aXJzdFJ1bkluZGV4Lmhhc192YWx1ZSgpOyB9CiAgICAgICAgIExheW91dFVuaXQgY29udGVudExv
Z2ljYWxSaWdodCgpOwogICAgICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gbV9hdmFpbGFibGVXaWR0aDsgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgdm9p
ZCBqdXN0aWZ5UnVucygpOworICAgICAgICB2b2lkIGNvbXB1dGVFeHBhbnNpb25PcHBvcnR1bml0
aWVzKGNvbnN0IElubGluZUxpbmVCcmVha2VyOjpSdW4mKTsKKwogICAgICAgICBzdHJ1Y3QgVHJh
aWxpbmdUcmltbWFibGVDb250ZW50IHsKICAgICAgICAgICAgIExheW91dFVuaXQgd2lkdGg7CiAg
ICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGg7CiAgICAgICAgIH07CiAgICAgICAgIHN0ZDo6b3B0
aW9uYWw8VHJhaWxpbmdUcmltbWFibGVDb250ZW50PiBtX3RyYWlsaW5nVHJpbW1hYmxlQ29udGVu
dDsKLSAgICAgICAgYm9vbCBtX2xhc3RSdW5Jc05vdENvbGxhcHNlZFRleHQgeyB0cnVlIH07Cisg
ICAgICAgIGJvb2wgbV9sYXN0UnVuSXNXaGl0ZXNwYWNlIHsgZmFsc2UgfTsKKyAgICAgICAgYm9v
bCBtX2xhc3RSdW5DYW5FeHBhbmQgeyBmYWxzZSB9OwogCiAgICAgICAgIElubGluZUZvcm1hdHRp
bmdTdGF0ZSYgbV9mb3JtYXR0aW5nU3RhdGU7CiAgICAgICAgIGNvbnN0IEJveCYgbV9mb3JtYXR0
aW5nUm9vdDsKQEAgLTc1LDYgKzgwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgTGF5b3V0VW5pdCBt
X2xpbmVXaWR0aDsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBtX2ZpcnN0UnVu
SW5kZXg7CisgICAgICAgIGJvb2wgbV9hbGlnbm1lbnRJc0p1c3RpZnkgeyBmYWxzZSB9OwogICAg
IH07CiAKICAgICB2b2lkIGxheW91dElubGluZUNvbnRlbnQoY29uc3QgTGF5b3V0Q29udGV4dCYs
IElubGluZUZvcm1hdHRpbmdTdGF0ZSYsIGNvbnN0IElubGluZVJ1blByb3ZpZGVyJikgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVJ1
bi5oCmluZGV4IDI4MGU2OGJkZWZiOWE3Y2QwYmI5ZjAxN2FlNjBhODBiYzQxNjVjZmMuLjRhYmE0
Mjc1Y2UwZmUwNTQ4NWEyMjhlYWI2OWJlZmM4ODc0NjM3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVJ1bi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZVJ1bi5oCkBAIC0zNCw4ICszNCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCiBzdHJ1Y3QgSW5s
aW5lUnVuIHsKLSAgICBzdGF0aWMgSW5saW5lUnVuIGNyZWF0ZVJ1bihMYXlvdXRVbml0IGxvZ2Np
YWxMZWZ0LCBMYXlvdXRVbml0IHdpZHRoLCBjb25zdCBJbmxpbmVJdGVtJik7Ci0gICAgc3RhdGlj
IElubGluZVJ1biBjcmVhdGVUZXh0UnVuKExheW91dFVuaXQgbG9nY2lhbExlZnQsIExheW91dFVu
aXQgd2lkdGgsIEl0ZW1Qb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBJbmxpbmVJdGVt
Jik7CisgICAgSW5saW5lUnVuKExheW91dFVuaXQgbG9nY2lhbExlZnQsIExheW91dFVuaXQgd2lk
dGgsIGNvbnN0IElubGluZUl0ZW0mKTsKIAogICAgIExheW91dFVuaXQgbG9naWNhbExlZnQoKSBj
b25zdCB7IHJldHVybiBtX2xvZ2ljYWxMZWZ0OyB9CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmln
aHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsTGVmdCgpICsgd2lkdGgoKTsgfQpAQCAtNDUsMjgg
KzQ0LDM2IEBAIHN0cnVjdCBJbmxpbmVSdW4gewogICAgIHZvaWQgc2V0TG9naWNhbExlZnQoTGF5
b3V0VW5pdCBsb2dpY2FsTGVmdCkgeyBtX2xvZ2ljYWxMZWZ0ID0gbG9naWNhbExlZnQ7IH0KICAg
ICB2b2lkIHNldExvZ2ljYWxSaWdodChMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCkgeyBtX3dpZHRo
IC09ICh0aGlzLT5sb2dpY2FsUmlnaHQoKSAtIGxvZ2ljYWxSaWdodCk7IH0KIAorICAgIHN0cnVj
dCBFeHBhbnNpb25PcHBvcnR1bml0eSB7CisgICAgICAgIHVuc2lnbmVkIGNvdW50IHsgMCB9Owor
ICAgICAgICBFeHBhbnNpb25CZWhhdmlvciBiZWhhdmlvciB7IEZvcmJpZExlYWRpbmdFeHBhbnNp
b24gfCBGb3JiaWRUcmFpbGluZ0V4cGFuc2lvbiB9OworICAgICAgICBMYXlvdXRVbml0IGV4cGFu
c2lvbjsKKyAgICB9OworICAgIEV4cGFuc2lvbk9wcG9ydHVuaXR5JiBleHBhbnNpb25PcHBvcnR1
bml0eSgpIHsgcmV0dXJuIG1fZXhwYW5zaW9uT3Bwb3J0dW5pdHk7IH0KKwogICAgIHN0cnVjdCBU
ZXh0Q29udGV4dCB7CiAgICAgcHVibGljOgogICAgICAgICBUZXh0Q29udGV4dChJdGVtUG9zaXRp
b24sIHVuc2lnbmVkIGxlbmd0aCk7CiAKKyAgICAgICAgdm9pZCBzZXRTdGFydChJdGVtUG9zaXRp
b24gc3RhcnQpIHsgbV9zdGFydCA9IHN0YXJ0OyB9CisgICAgICAgIHZvaWQgc2V0TGVuZ3RoKHVu
c2lnbmVkIGxlbmd0aCkgeyBtX2xlbmd0aCA9IGxlbmd0aDsgfQorCiAgICAgICAgIEl0ZW1Qb3Np
dGlvbiBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQ7IH0KICAgICAgICAgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KIAotICAgICAgICB2b2lkIHNldExl
bmd0aCh1bnNpZ25lZCBsZW5ndGgpIHsgbV9sZW5ndGggPSBsZW5ndGg7IH0KLQogICAgIHByaXZh
dGU6CiAgICAgICAgIEl0ZW1Qb3NpdGlvbiBtX3N0YXJ0OwogICAgICAgICB1bnNpZ25lZCBtX2xl
bmd0aDsKICAgICB9OworICAgIHZvaWQgc2V0VGV4dENvbnRleHQoVGV4dENvbnRleHQgdGV4dENv
bnRleHQpIHsgbV90ZXh0Q29udGV4dC5lbXBsYWNlKHRleHRDb250ZXh0KTsgfQogICAgIHN0ZDo6
b3B0aW9uYWw8VGV4dENvbnRleHQ+JiB0ZXh0Q29udGV4dCgpIHsgcmV0dXJuIG1fdGV4dENvbnRl
eHQ7IH0KKwogICAgIGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0oKSBjb25zdCB7IHJldHVy
biBtX2lubGluZUl0ZW07IH0KIAogcHJpdmF0ZToKLSAgICBJbmxpbmVSdW4oTGF5b3V0VW5pdCBs
b2djaWFsTGVmdCwgTGF5b3V0VW5pdCB3aWR0aCwgY29uc3QgSW5saW5lSXRlbSYpOwotICAgIElu
bGluZVJ1bihMYXlvdXRVbml0IGxvZ2NpYWxMZWZ0LCBMYXlvdXRVbml0IHdpZHRoLCBJdGVtUG9z
aXRpb24sIHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgSW5saW5lSXRlbSYpOwotCiAgICAgTGF5b3V0
VW5pdCBtX2xvZ2ljYWxMZWZ0OwogICAgIExheW91dFVuaXQgbV93aWR0aDsKKyAgICBFeHBhbnNp
b25PcHBvcnR1bml0eSBtX2V4cGFuc2lvbk9wcG9ydHVuaXR5OwogCiAgICAgY29uc3QgSW5saW5l
SXRlbSYgbV9pbmxpbmVJdGVtOwogICAgIHN0ZDo6b3B0aW9uYWw8VGV4dENvbnRleHQ+IG1fdGV4
dENvbnRleHQ7CkBAIC03NCwxNiArODEsNiBAQCBwcml2YXRlOgogCiB1c2luZyBJbmxpbmVSdW5z
ID0gVmVjdG9yPElubGluZVJ1bj47CiAKLWlubGluZSBJbmxpbmVSdW4gSW5saW5lUnVuOjpjcmVh
dGVSdW4oTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCB3aWR0aCwgY29uc3QgSW5s
aW5lSXRlbSYgaW5saW5lSXRlbSkKLXsKLSAgICByZXR1cm4geyBsb2dpY2FsTGVmdCwgd2lkdGgs
IGlubGluZUl0ZW0gfTsKLX0KLQotaW5saW5lIElubGluZVJ1biBJbmxpbmVSdW46OmNyZWF0ZVRl
eHRSdW4oTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCB3aWR0aCwgSXRlbVBvc2l0
aW9uIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0p
Ci17Ci0gICAgcmV0dXJuIHsgbG9naWNhbExlZnQsIHdpZHRoLCBzdGFydCwgbGVuZ3RoLCBpbmxp
bmVJdGVtIH07Ci19Ci0KIGlubGluZSBJbmxpbmVSdW46OklubGluZVJ1bihMYXlvdXRVbml0IGxv
Z2ljYWxMZWZ0LCBMYXlvdXRVbml0IHdpZHRoLCBjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVt
KQogICAgIDogbV9sb2dpY2FsTGVmdChsb2dpY2FsTGVmdCkKICAgICAsIG1fd2lkdGgod2lkdGgp
CkBAIC05MSwxNCArODgsNiBAQCBpbmxpbmUgSW5saW5lUnVuOjpJbmxpbmVSdW4oTGF5b3V0VW5p
dCBsb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCB3aWR0aCwgY29uc3QgSW5saQogewogfQogCi1pbmxp
bmUgSW5saW5lUnVuOjpJbmxpbmVSdW4oTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgTGF5b3V0VW5p
dCB3aWR0aCwgSXRlbVBvc2l0aW9uIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IElubGlu
ZUl0ZW0mIGlubGluZUl0ZW0pCi0gICAgOiBtX2xvZ2ljYWxMZWZ0KGxvZ2ljYWxMZWZ0KQotICAg
ICwgbV93aWR0aCh3aWR0aCkKLSAgICAsIG1faW5saW5lSXRlbShpbmxpbmVJdGVtKQotICAgICwg
bV90ZXh0Q29udGV4dChUZXh0Q29udGV4dCB7IHN0YXJ0LCBsZW5ndGggfSkKLXsKLX0KLQogaW5s
aW5lIElubGluZVJ1bjo6VGV4dENvbnRleHQ6OlRleHRDb250ZXh0KEl0ZW1Qb3NpdGlvbiBzdGFy
dCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIDogbV9zdGFydChzdGFydCkKICAgICAsIG1fbGVuZ3Ro
KGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0xpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGlu
ZS5jcHAKaW5kZXggMTFjODlhYjNmNmFiOTc5MGY5YjNkN2NlZDVjMDU0Y2E0NDliOTQ5YS4uNzBj
MTlmOGExYmY4NjVhNzQ5MDhiN2YwZjJhZTYyMzc1Yjg3ZWU4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAg
bmFtZXNwYWNlIExheW91dCB7CiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6TGluZShJ
bmxpbmVGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSwgY29uc3QgQm94JiBmb3JtYXR0
aW5nUm9vdCkKICAgICA6IG1fZm9ybWF0dGluZ1N0YXRlKGZvcm1hdHRpbmdTdGF0ZSkKICAgICAs
IG1fZm9ybWF0dGluZ1Jvb3QoZm9ybWF0dGluZ1Jvb3QpCisgICAgLCBtX2FsaWdubWVudElzSnVz
dGlmeShtX2Zvcm1hdHRpbmdSb290LnN0eWxlKCkudGV4dEFsaWduKCkgPT0gVGV4dEFsaWduTW9k
ZTo6SnVzdGlmeSkKIHsKIH0KIApAQCAtNDQsNyArNDUsMTEgQEAgdm9pZCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6TGluZTo6aW5pdChMYXlvdXRVbml0IGxpbmVMb2dpY2FsTGVmdCwgTGF5b3V0
VW5pdAogICAgIG1fbGluZUxvZ2ljYWxMZWZ0ID0gbGluZUxvZ2ljYWxMZWZ0OwogICAgIG1fbGlu
ZVdpZHRoID0gYXZhaWxhYmxlV2lkdGg7CiAgICAgbV9hdmFpbGFibGVXaWR0aCA9IGF2YWlsYWJs
ZVdpZHRoOworCiAgICAgbV9maXJzdFJ1bkluZGV4ID0geyB9OworICAgIG1fbGFzdFJ1bklzV2hp
dGVzcGFjZSA9IGZhbHNlOworICAgIG1fbGFzdFJ1bkNhbkV4cGFuZCA9IGZhbHNlOworICAgIG1f
dHJhaWxpbmdUcmltbWFibGVDb250ZW50ID0geyB9OwogfQogCiBzdGF0aWMgTGF5b3V0VW5pdCBh
ZGp1c3RlZExpbmVMb2dpY2FsTGVmdChUZXh0QWxpZ25Nb2RlIGFsaWduLCBMYXlvdXRVbml0IGxp
bmVMb2dpY2FsTGVmdCwgTGF5b3V0VW5pdCByZW1haW5pbmdXaWR0aCkKQEAgLTY5LDExICs3NCw2
IEBAIHN0YXRpYyBMYXlvdXRVbml0IGFkanVzdGVkTGluZUxvZ2ljYWxMZWZ0KFRleHRBbGlnbk1v
ZGUgYWxpZ24sIExheW91dFVuaXQgbGluZUxvCiAgICAgcmV0dXJuIGxpbmVMb2dpY2FsTGVmdDsK
IH0KIAotc3RhdGljIGJvb2wgaXNOb25Db2xsYXBzZWRUZXh0KGNvbnN0IElubGluZVJ1blByb3Zp
ZGVyOjpSdW4mIGlubGluZVJ1bikKLXsKLSAgICByZXR1cm4gaW5saW5lUnVuLmlzVGV4dCgpICYm
ICFpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+aXNDb2xsYXBzZWQoKTsKLX0KLQogc3RhdGljIGJv
b2wgaXNUcmltbWFibGVDb250ZW50KGNvbnN0IElubGluZVJ1blByb3ZpZGVyOjpSdW4mIGlubGlu
ZVJ1bikKIHsKICAgICByZXR1cm4gaW5saW5lUnVuLmlzV2hpdGVzcGFjZSgpICYmIGlubGluZVJ1
bi5zdHlsZSgpLmNvbGxhcHNlV2hpdGVTcGFjZSgpOwpAQCAtODcsNDEgKzg3LDEwOSBAQCBMYXlv
dXRVbml0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lOjpjb250ZW50TG9naWNhbFJpZ2h0
KCkKICAgICByZXR1cm4gbV9mb3JtYXR0aW5nU3RhdGUuaW5saW5lUnVucygpLmxhc3QoKS5sb2dp
Y2FsUmlnaHQoKTsKIH0KIAotdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZTo6YXBw
ZW5kQ29udGVudChjb25zdCBJbmxpbmVMaW5lQnJlYWtlcjo6UnVuJiBydW4pCit2b2lkIElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lOjpjb21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdGllcyhj
b25zdCBJbmxpbmVMaW5lQnJlYWtlcjo6UnVuJiBydW4pCiB7Ci0gICAgYXV0byBsYXN0UnVuV2Fz
Tm90Q29sbGFwc2VkVGV4dCA9IG1fbGFzdFJ1bklzTm90Q29sbGFwc2VkVGV4dDsKLSAgICBtX3Ry
YWlsaW5nVHJpbW1hYmxlQ29udGVudCA9IHsgfTsKLSAgICBtX2F2YWlsYWJsZVdpZHRoIC09IHJ1
bi53aWR0aDsKKyAgICBpZiAoIW1fYWxpZ25tZW50SXNKdXN0aWZ5KQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGlzRXhwYW5zaW9uT3Bwb3J0dW5pdHkgPSBbXShhdXRvIGN1cnJlbnRSdW5J
c1doaXRlc3BhY2UsIGF1dG8gbGFzdFJ1bklzV2hpdGVzcGFjZSkgeworICAgICAgICByZXR1cm4g
Y3VycmVudFJ1bklzV2hpdGVzcGFjZSB8fCAoIWN1cnJlbnRSdW5Jc1doaXRlc3BhY2UgJiYgIWxh
c3RSdW5Jc1doaXRlc3BhY2UpOworICAgIH07CisKKyAgICBhdXRvIGV4cGFuc2lvbkJlaGF2aW9y
ID0gW10oYXV0byBpc0F0RXhwYW5zaW9uT3Bwb3J0dW5pdHkpIHsKKyAgICAgICAgRXhwYW5zaW9u
QmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBBbGxvd1RyYWlsaW5nRXhwYW5zaW9uOworICAg
ICAgICBleHBhbnNpb25CZWhhdmlvciB8PSBpc0F0RXhwYW5zaW9uT3Bwb3J0dW5pdHkgPyBGb3Ji
aWRMZWFkaW5nRXhwYW5zaW9uIDogQWxsb3dMZWFkaW5nRXhwYW5zaW9uOworICAgICAgICByZXR1
cm4gZXhwYW5zaW9uQmVoYXZpb3I7CisgICAgfTsKIAorICAgIGF1dG8gaXNBdEV4cGFuc2lvbk9w
cG9ydHVuaXR5ID0gaXNFeHBhbnNpb25PcHBvcnR1bml0eShydW4uY29udGVudC5pc1doaXRlc3Bh
Y2UoKSwgbV9sYXN0UnVuSXNXaGl0ZXNwYWNlKTsKKworICAgIGF1dG8mIGN1cnJlbnRJbmxpbmVS
dW4gPSBtX2Zvcm1hdHRpbmdTdGF0ZS5pbmxpbmVSdW5zKCkubGFzdCgpOworICAgIGF1dG8mIGV4
cGFuc2lvbk9wcG9ydHVuaXR5ID0gY3VycmVudElubGluZVJ1bi5leHBhbnNpb25PcHBvcnR1bml0
eSgpOworICAgIGlmIChpc0F0RXhwYW5zaW9uT3Bwb3J0dW5pdHkpCisgICAgICAgICsrZXhwYW5z
aW9uT3Bwb3J0dW5pdHkuY291bnQ7CisKKyAgICBleHBhbnNpb25PcHBvcnR1bml0eS5iZWhhdmlv
ciA9IGV4cGFuc2lvbkJlaGF2aW9yKGlzQXRFeHBhbnNpb25PcHBvcnR1bml0eSk7Cit9CisKK3Zv
aWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmU6OmFwcGVuZENvbnRlbnQoY29uc3QgSW5s
aW5lTGluZUJyZWFrZXI6OlJ1biYgcnVuKQorewogICAgIGF1dG8mIGNvbnRlbnQgPSBydW4uY29u
dGVudDsKLSAgICBtX2xhc3RSdW5Jc05vdENvbGxhcHNlZFRleHQgPSBpc05vbkNvbGxhcHNlZFRl
eHQoY29udGVudCk7CiAKICAgICAvLyBBcHBlbmQgdGhpcyB0ZXh0IHJ1biB0byB0aGUgZW5kIG9m
IHRoZSBsYXN0IHRleHQgcnVuLCBpZiB0aGUgbGFzdCBydW4gaXMgY29udGludW91cy4KICAgICBz
dGQ6Om9wdGlvbmFsPElubGluZVJ1bjo6VGV4dENvbnRleHQ+IHRleHRSdW47CiAgICAgaWYgKGNv
bnRlbnQuaXNUZXh0KCkpIHsKICAgICAgICAgYXV0byB0ZXh0Q29udGV4dCA9IGNvbnRlbnQudGV4
dENvbnRleHQoKTsKICAgICAgICAgYXV0byBydW5MZW5ndGggPSB0ZXh0Q29udGV4dC0+aXNDb2xs
YXBzZWQoKSA/IDEgOiB0ZXh0Q29udGV4dC0+bGVuZ3RoKCk7Ci0KLSAgICAgICAgaWYgKGlzVHJp
bW1hYmxlQ29udGVudChjb250ZW50KSkKLSAgICAgICAgICAgIG1fdHJhaWxpbmdUcmltbWFibGVD
b250ZW50ID0gVHJhaWxpbmdUcmltbWFibGVDb250ZW50IHsgcnVuLndpZHRoLCBydW5MZW5ndGgg
fTsKLQotICAgICAgICBpZiAoaGFzQ29udGVudCgpICYmIGxhc3RSdW5XYXNOb3RDb2xsYXBzZWRU
ZXh0KSB7Ci0gICAgICAgICAgICBhdXRvJiBpbmxpbmVSdW4gPSBtX2Zvcm1hdHRpbmdTdGF0ZS5p
bmxpbmVSdW5zKCkubGFzdCgpOwotICAgICAgICAgICAgaW5saW5lUnVuLnNldFdpZHRoKGlubGlu
ZVJ1bi53aWR0aCgpICsgcnVuLndpZHRoKTsKLSAgICAgICAgICAgIGlubGluZVJ1bi50ZXh0Q29u
dGV4dCgpLT5zZXRMZW5ndGgoaW5saW5lUnVuLnRleHRDb250ZXh0KCktPmxlbmd0aCgpICsgcnVu
TGVuZ3RoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogICAgICAgICB0ZXh0UnVu
ID0gSW5saW5lUnVuOjpUZXh0Q29udGV4dCB7IHRleHRDb250ZXh0LT5zdGFydCgpLCBydW5MZW5n
dGggfTsKICAgICB9CiAKLSAgICBpZiAodGV4dFJ1bikKLSAgICAgICAgbV9mb3JtYXR0aW5nU3Rh
dGUuYXBwZW5kSW5saW5lUnVuKElubGluZVJ1bjo6Y3JlYXRlVGV4dFJ1bihjb250ZW50TG9naWNh
bFJpZ2h0KCksIHJ1bi53aWR0aCwgdGV4dFJ1bi0+c3RhcnQoKSwgdGV4dFJ1bi0+bGVuZ3RoKCks
IGNvbnRlbnQuaW5saW5lSXRlbSgpKSk7Ci0gICAgZWxzZQotICAgICAgICBtX2Zvcm1hdHRpbmdT
dGF0ZS5hcHBlbmRJbmxpbmVSdW4oSW5saW5lUnVuOjpjcmVhdGVSdW4oY29udGVudExvZ2ljYWxS
aWdodCgpLCBydW4ud2lkdGgsIGNvbnRlbnQuaW5saW5lSXRlbSgpKSk7CisgICAgYXV0byByZXF1
aXJlc05ld0lubGluZVJ1biA9ICFoYXNDb250ZW50KCkgfHwgIWNvbnRlbnQuaXNUZXh0KCkgfHwg
IW1fbGFzdFJ1bkNhbkV4cGFuZDsKKyAgICBpZiAocmVxdWlyZXNOZXdJbmxpbmVSdW4pIHsKKyAg
ICAgICAgYXV0byBpbmxpbmVSdW4gPSBJbmxpbmVSdW4geyBjb250ZW50TG9naWNhbFJpZ2h0KCks
IHJ1bi53aWR0aCwgY29udGVudC5pbmxpbmVJdGVtKCkgfTsKKyAgICAgICAgaWYgKHRleHRSdW4p
CisgICAgICAgICAgICBpbmxpbmVSdW4uc2V0VGV4dENvbnRleHQoeyB0ZXh0UnVuLT5zdGFydCgp
LCB0ZXh0UnVuLT5sZW5ndGgoKSB9KTsKKyAgICAgICAgbV9mb3JtYXR0aW5nU3RhdGUuYXBwZW5k
SW5saW5lUnVuKGlubGluZVJ1bik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gTm9uLXRleHQg
cnVucyBhbHdheXMgcmVxdWlyZSBuZXcgaW5saW5lIHJ1bi4KKyAgICAgICAgQVNTRVJUKHRleHRS
dW4pOworICAgICAgICBhdXRvJiBpbmxpbmVSdW4gPSBtX2Zvcm1hdHRpbmdTdGF0ZS5pbmxpbmVS
dW5zKCkubGFzdCgpOworICAgICAgICBpbmxpbmVSdW4uc2V0V2lkdGgoaW5saW5lUnVuLndpZHRo
KCkgKyBydW4ud2lkdGgpOworICAgICAgICBpbmxpbmVSdW4udGV4dENvbnRleHQoKS0+c2V0TGVu
Z3RoKGlubGluZVJ1bi50ZXh0Q29udGV4dCgpLT5sZW5ndGgoKSArIHRleHRSdW4tPmxlbmd0aCgp
KTsKKyAgICB9CisKKyAgICBjb21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdGllcyhydW4pOworCisg
ICAgbV9hdmFpbGFibGVXaWR0aCAtPSBydW4ud2lkdGg7CisgICAgbV9sYXN0UnVuSXNXaGl0ZXNw
YWNlID0gY29udGVudC5pc1doaXRlc3BhY2UoKTsKKyAgICBtX2xhc3RSdW5DYW5FeHBhbmQgPSBj
b250ZW50LmlzVGV4dCgpICYmICFjb250ZW50LnRleHRDb250ZXh0KCktPmlzQ29sbGFwc2VkKCk7
CiAgICAgbV9maXJzdFJ1bkluZGV4ID0gbV9maXJzdFJ1bkluZGV4LnZhbHVlX29yKG1fZm9ybWF0
dGluZ1N0YXRlLmlubGluZVJ1bnMoKS5zaXplKCkgLSAxKTsKKyAgICBtX3RyYWlsaW5nVHJpbW1h
YmxlQ29udGVudCA9IHsgfTsKKyAgICBpZiAoaXNUcmltbWFibGVDb250ZW50KGNvbnRlbnQpKQor
ICAgICAgICBtX3RyYWlsaW5nVHJpbW1hYmxlQ29udGVudCA9IFRyYWlsaW5nVHJpbW1hYmxlQ29u
dGVudCB7IHJ1bi53aWR0aCwgdGV4dFJ1bi0+bGVuZ3RoKCkgfTsKK30KKwordm9pZCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6TGluZTo6anVzdGlmeVJ1bnMoKQoreworICAgIGlmICghaGFzQ29u
dGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBpbmxpbmVSdW5zID0gbV9mb3Jt
YXR0aW5nU3RhdGUuaW5saW5lUnVucygpOworICAgIGF1dG8mIGxhc3RJbmxpbmVSdW4gPSBpbmxp
bmVSdW5zLmxhc3QoKTsKKworICAgIC8vIEFkanVzdCAoZm9yYmlkKSB0cmFpbGluZyBleHBhbnNp
b24gZm9yIHRoZSBsYXN0IHRleHQgcnVuIG9uIGxpbmUuCisgICAgYXV0byBleHBhbnNpb25CZWhh
dmlvciA9IGxhc3RJbmxpbmVSdW4uZXhwYW5zaW9uT3Bwb3J0dW5pdHkoKS5iZWhhdmlvcjsKKyAg
ICAvLyBSZW1vdmUgYWxsb3cgYW5kIGFkZCBmb3JiaWQuCisgICAgZXhwYW5zaW9uQmVoYXZpb3Ig
Xj0gQWxsb3dUcmFpbGluZ0V4cGFuc2lvbjsKKyAgICBleHBhbnNpb25CZWhhdmlvciB8PSBGb3Ji
aWRUcmFpbGluZ0V4cGFuc2lvbjsKKyAgICBsYXN0SW5saW5lUnVuLmV4cGFuc2lvbk9wcG9ydHVu
aXR5KCkuYmVoYXZpb3IgPSBleHBhbnNpb25CZWhhdmlvcjsKKworICAgIC8vIENvbGxlY3QgZXhw
YW5zaW9uIG9wcG9ydHVuaXRpZXMgYW5kIGp1c3RpZnkgdGhlIHJ1bnMuCisgICAgYXV0byB3aWR0
aFRvRGlzdHJpYnV0ZSA9IGF2YWlsYWJsZVdpZHRoKCk7CisgICAgaWYgKHdpZHRoVG9EaXN0cmli
dXRlIDw9IDApCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZXhwYW5zaW9uT3Bwb3J0dW5p
dGllcyA9IDA7CisgICAgZm9yIChhdXRvIHJ1bkluZGV4ID0gKm1fZmlyc3RSdW5JbmRleDsgcnVu
SW5kZXggPCBpbmxpbmVSdW5zLnNpemUoKTsgKytydW5JbmRleCkKKyAgICAgICAgZXhwYW5zaW9u
T3Bwb3J0dW5pdGllcyArPSBpbmxpbmVSdW5zW3J1bkluZGV4XS5leHBhbnNpb25PcHBvcnR1bml0
eSgpLmNvdW50OworCisgICAgaWYgKCFleHBhbnNpb25PcHBvcnR1bml0aWVzKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBmbG9hdCBleHBhbnNpb24gPSB3aWR0aFRvRGlzdHJpYnV0ZS50b0Zsb2F0
KCkgLyBleHBhbnNpb25PcHBvcnR1bml0aWVzOworICAgIExheW91dFVuaXQgYWNjdW11bGF0ZWRF
eHBhbnNpb24gPSAwOworICAgIGZvciAoYXV0byBydW5JbmRleCA9ICptX2ZpcnN0UnVuSW5kZXg7
IHJ1bkluZGV4IDwgaW5saW5lUnVucy5zaXplKCk7ICsrcnVuSW5kZXgpIHsKKyAgICAgICAgYXV0
byYgaW5saW5lUnVuID0gaW5saW5lUnVuc1tydW5JbmRleF07CisgICAgICAgIGF1dG8gZXhwYW5z
aW9uRm9yUnVuID0gaW5saW5lUnVuLmV4cGFuc2lvbk9wcG9ydHVuaXR5KCkuY291bnQgKiBleHBh
bnNpb247CisKKyAgICAgICAgaW5saW5lUnVuLmV4cGFuc2lvbk9wcG9ydHVuaXR5KCkuZXhwYW5z
aW9uID0gZXhwYW5zaW9uRm9yUnVuOworICAgICAgICBpbmxpbmVSdW4uc2V0TG9naWNhbExlZnQo
aW5saW5lUnVuLmxvZ2ljYWxMZWZ0KCkgKyBhY2N1bXVsYXRlZEV4cGFuc2lvbik7CisgICAgICAg
IGlubGluZVJ1bi5zZXRXaWR0aChpbmxpbmVSdW4ud2lkdGgoKSArIGV4cGFuc2lvbkZvclJ1bik7
CisgICAgICAgIGFjY3VtdWxhdGVkRXhwYW5zaW9uICs9IGV4cGFuc2lvbkZvclJ1bjsKKyAgICB9
CiB9CiAKLXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmU6OmNsb3NlKCkKK3ZvaWQg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OkxpbmU6OmNsb3NlKExhc3RMaW5lIGlzTGFzdExpbmUp
CiB7CiAgICAgYXV0byB0cmltVHJhaWxpbmdDb250ZW50ID0gWyZdKCkgewogCkBAIC0xMzMsMjIg
KzIwMSwyMCBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpMaW5lOjpjbG9zZSgpCiAg
ICAgICAgIGxhc3RJbmxpbmVSdW4udGV4dENvbnRleHQoKS0+c2V0TGVuZ3RoKGxhc3RJbmxpbmVS
dW4udGV4dENvbnRleHQoKS0+bGVuZ3RoKCkgLSBtX3RyYWlsaW5nVHJpbW1hYmxlQ29udGVudC0+
bGVuZ3RoKTsKIAogICAgICAgICBpZiAoIWxhc3RJbmxpbmVSdW4udGV4dENvbnRleHQoKS0+bGVu
Z3RoKCkpIHsKLSAgICAgICAgICAgIG1fZm9ybWF0dGluZ1N0YXRlLmlubGluZVJ1bnMoKS5yZW1v
dmVMYXN0KCk7Ci0gICAgICAgICAgICBpZiAobV9maXJzdFJ1bkluZGV4LnZhbHVlKCkpCi0gICAg
ICAgICAgICAgICAgLS0qbV9maXJzdFJ1bkluZGV4OwotICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgaWYgKCptX2ZpcnN0UnVuSW5kZXggPT0gbV9mb3JtYXR0aW5nU3RhdGUuaW5saW5lUnVu
cygpLnNpemUoKSAtIDEpCiAgICAgICAgICAgICAgICAgbV9maXJzdFJ1bkluZGV4ID0geyB9Owor
ICAgICAgICAgICAgbV9mb3JtYXR0aW5nU3RhdGUuaW5saW5lUnVucygpLnJlbW92ZUxhc3QoKTsK
ICAgICAgICAgfQogICAgICAgICBtX2F2YWlsYWJsZVdpZHRoICs9IG1fdHJhaWxpbmdUcmltbWFi
bGVDb250ZW50LT53aWR0aDsKICAgICAgICAgbV90cmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQgPSB7
IH07CiAgICAgfTsKIAotICAgIGF1dG8gYWxpZ25SdW5zID0gWyZdKCkgeworICAgIGF1dG8gYWxp
Z25SdW5zID0gWyZdKGF1dG8gYWxpZ25tZW50KSB7CiAKICAgICAgICAgaWYgKCFoYXNDb250ZW50
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBhZGp1c3RlZExvZ2ljYWxM
ZWZ0ID0gYWRqdXN0ZWRMaW5lTG9naWNhbExlZnQobV9mb3JtYXR0aW5nUm9vdC5zdHlsZSgpLnRl
eHRBbGlnbigpLCBtX2xpbmVMb2dpY2FsTGVmdCwgbV9hdmFpbGFibGVXaWR0aCk7CisgICAgICAg
IGF1dG8gYWRqdXN0ZWRMb2dpY2FsTGVmdCA9IGFkanVzdGVkTGluZUxvZ2ljYWxMZWZ0KGFsaWdu
bWVudCwgbV9saW5lTG9naWNhbExlZnQsIG1fYXZhaWxhYmxlV2lkdGgpOwogICAgICAgICBpZiAo
bV9saW5lTG9naWNhbExlZnQgPT0gYWRqdXN0ZWRMb2dpY2FsTGVmdCkKICAgICAgICAgICAgIHJl
dHVybjsKIApAQCAtMTYyLDcgKzIyOCwxNiBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpMaW5lOjpjbG9zZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIHRyaW1UcmFpbGluZ0NvbnRl
bnQoKTsKLSAgICBhbGlnblJ1bnMoKTsKKworICAgIGF1dG8gdGV4dEFsaWdubWVudCA9IG1fZm9y
bWF0dGluZ1Jvb3Quc3R5bGUoKS50ZXh0QWxpZ24oKTsKKyAgICBpZiAobV9hbGlnbm1lbnRJc0p1
c3RpZnkpIHsKKyAgICAgICAgaWYgKGlzTGFzdExpbmUgPT0gTGFzdExpbmU6Ok5vKSB7CisgICAg
ICAgICAgICBqdXN0aWZ5UnVucygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIHRleHRBbGlnbm1lbnQgPSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OworICAgIH0KKyAgICBh
bGlnblJ1bnModGV4dEFsaWdubWVudCk7CiB9CiAKIH0K
</data>
<flag name="review"
          id="370117"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>