<?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>186474</bug_id>
          
          <creation_ts>2018-06-10 15:30:34 -0700</creation_ts>
          <short_desc>[LFC] Merge left, right, width and horizontal margin computation for out-of-flow non-replaced elements</short_desc>
          <delta_ts>2018-06-11 07:38:19 -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>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</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>1431668</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-06-10 15:30:34 -0700</bug_when>
    <thetext>10.3.7 Absolutely positioned, non-replaced elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1431669</commentid>
    <comment_count>1</comment_count>
      <attachid>342395</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-06-10 15:33:35 -0700</bug_when>
    <thetext>Created attachment 342395
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1431703</commentid>
    <comment_count>2</comment_count>
      <attachid>342406</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-06-10 21:11:10 -0700</bug_when>
    <thetext>Created attachment 342406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1431888</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-06-11 07:37:14 -0700</bug_when>
    <thetext>Committed r232712: &lt;https://trac.webkit.org/changeset/232712&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1431889</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-11 07:38:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/41003741&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342395</attachid>
            <date>2018-06-10 15:33:35 -0700</date>
            <delta_ts>2018-06-10 21:11:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186474-20180610153334.patch</filename>
            <type>text/plain</type>
            <size>21228</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNjYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTc0NGY5YjI3ZThmNjA1
MTA3OGMxNTdjZWY4MjNjNWI4YmZlMjNmYS4uNzRhMDVhYmU1NWIwMzM2MzM4MmNhOWQ4NDdkZDI4
ZDMwN2RhMWU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE4LTA2LTEwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gTWVyZ2UgbGVmdCwg
cmlnaHQsIHdpZHRoIGFuZCBob3Jpem9udGFsIG1hcmdpbiBjb21wdXRhdGlvbiBmb3Igb3V0LW9m
LWZsb3cgbm9uLXJlcGxhY2VkIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODY0NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIy
L3Zpc3VkZXQuaHRtbCNhYnMtbm9uLXJlcGxhY2VkLXdpZHRoIAorICAgICAgICAoMTAuMy43IEFi
c29sdXRlbHkgcG9zaXRpb25lZCwgbm9uLXJlcGxhY2VkIGVsZW1lbnRzKQorCisgICAgICAgICog
bGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0
T3V0T2ZGbG93RGVzY2VuZGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1dpZHRoQW5kTWFyZ2luIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAg
KiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFj
ZWRIb3Jpem9udGFsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkV2lkdGhB
bmRNYXJnaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Om91dE9mRmxvd1dpZHRoQW5kTWFyZ2luKTogRGVsZXRlZC4KKwogMjAxOC0wNi0wOSAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdIE1hcmdpbkNvbGxh
cHNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgYWJsZSB0byByZXNvbHZlIG5vbi1maXhlZCBtYXJnaW4g
dmFsdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRl
eCA1MWMyNjIzYjNjNmM5MzBmN2M1YzZmNTg4MDU5NzBlYWZiNDAzOTYwLi5iOTQ2ZGNkNGFmYmRj
ZmQ1YzQxOWNhZTIyYTJlYWUyZDZiZGNiNmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTY4LDExICs2OCwxMyBAQCB2b2lkIEZvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlRmxvYXRpbmdXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlv
dXRDb250ZQogICAgIGRpc3BsYXlCb3guc2V0SG9yaXpvbnRhbE1hcmdpbih3aWR0aEFuZE1hcmdp
bi5tYXJnaW4pOwogfQogCi12b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93
V2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBs
YXlvdXRCb3gsIERpc3BsYXk6OkJveCYgZGlzcGxheUJveCkgY29uc3QKK3ZvaWQgRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkoTGF5b3V0Q29udGV4
dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gsIERpc3BsYXk6OkJveCYgZGlz
cGxheUJveCkgY29uc3QKIHsKLSAgICBhdXRvIHdpZHRoQW5kTWFyZ2luID0gR2VvbWV0cnk6Om91
dE9mRmxvd1dpZHRoQW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91dEJveCk7Ci0gICAgZGlz
cGxheUJveC5zZXRXaWR0aCh3aWR0aEFuZE1hcmdpbi53aWR0aCk7Ci0gICAgZGlzcGxheUJveC5z
ZXRIb3Jpem9udGFsTWFyZ2luKHdpZHRoQW5kTWFyZ2luLm1hcmdpbik7CisgICAgYXV0byBob3Jp
em9udGFsR2VvbWV0cnkgPSBHZW9tZXRyeTo6b3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KGxh
eW91dENvbnRleHQsIGxheW91dEJveCk7CisgICAgZGlzcGxheUJveC5zZXRMZWZ0KGhvcml6b250
YWxHZW9tZXRyeS5sZWZ0KTsKKyAgICBkaXNwbGF5Qm94LnNldFdpZHRoKGhvcml6b250YWxHZW9t
ZXRyeS53aWR0aCk7CisgICAgQVNTRVJUKGhvcml6b250YWxHZW9tZXRyeS5sZWZ0ICsgaG9yaXpv
bnRhbEdlb21ldHJ5LndpZHRoID09IGhvcml6b250YWxHZW9tZXRyeS5yaWdodCk7CisgICAgZGlz
cGxheUJveC5zZXRIb3Jpem9udGFsTWFyZ2luKGhvcml6b250YWxHZW9tZXRyeS5tYXJnaW4pOwog
fQogCiB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93SGVpZ2h0KExheW91
dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBEaXNwbGF5OjpC
b3gmIGRpc3BsYXlCb3gpIGNvbnN0CkBAIC0xMTUsNyArMTE3LDcgQEAgdm9pZCBGb3JtYXR0aW5n
Q29udGV4dDo6bGF5b3V0T3V0T2ZGbG93RGVzY2VuZGFudHMoTGF5b3V0Q29udGV4dCYgbGF5b3V0
Q29udGV4dCkKICAgICAgICAgLy8gb2YgYSBoeXBvdGhldGljYWwgYm94IHRoYXQgd291bGQgaGF2
ZSBiZWVuIHRoZSBmaXJzdCBib3ggb2YgdGhlIGVsZW1lbnQgaWYgaXRzIHNwZWNpZmllZCAncG9z
aXRpb24nIHZhbHVlIGhhZCBiZWVuICdzdGF0aWMnIGFuZAogICAgICAgICAvLyBpdHMgc3BlY2lm
aWVkICdmbG9hdCcgaGFkIGJlZW4gJ25vbmUnIGFuZCBpdHMgc3BlY2lmaWVkICdjbGVhcicgaGFk
IGJlZW4gJ25vbmUnLgogICAgICAgICBjb21wdXRlU3RhdGljUG9zaXRpb24obGF5b3V0Q29udGV4
dCwgbGF5b3V0Qm94LCBkaXNwbGF5Qm94KTsKLSAgICAgICAgY29tcHV0ZU91dE9mRmxvd1dpZHRo
QW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91dEJveCwgZGlzcGxheUJveCk7CisgICAgICAg
IGNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkobGF5b3V0Q29udGV4dCwgbGF5b3V0
Qm94LCBkaXNwbGF5Qm94KTsKIAogICAgICAgICBBU1NFUlQobGF5b3V0Qm94LmVzdGFibGlzaGVz
Rm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgICAgIGF1dG8gZm9ybWF0dGluZ0NvbnRleHQgPSBs
YXlvdXRDb250ZXh0LmZvcm1hdHRpbmdDb250ZXh0KGxheW91dEJveCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDlkMjMwZjIxODg4ZDBiNjVhYTQ1MjBl
M2VhMWY2YzdhM2RhNWUwM2IuLjFjMDYwNDVlNjM5YzRhOThkNTcxMGY5YTIwODViNmI5OTA2YWIy
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCkBAIC05MSw4
ICs5MSwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBEaXNwbGF5OjpCb3g6OlZlcnRpY2Fs
RWRnZXMgbWFyZ2luOwogICAgICAgICB9OwogCisgICAgICAgIHN0cnVjdCBIb3Jpem9udGFsR2Vv
bWV0cnkgeworICAgICAgICAgICAgTGF5b3V0VW5pdCBsZWZ0OworICAgICAgICAgICAgTGF5b3V0
VW5pdCByaWdodDsKKyAgICAgICAgICAgIExheW91dFVuaXQgd2lkdGg7CisgICAgICAgICAgICBE
aXNwbGF5OjpCb3g6Okhvcml6b250YWxFZGdlcyBtYXJnaW47CisgICAgICAgIH07CisKICAgICAg
ICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBvdXRPZkZsb3dIZWlnaHRBbmRNYXJnaW4oTGF5b3V0
Q29udGV4dCYsIGNvbnN0IEJveCYpOwotICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gb3V0
T2ZGbG93V2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOworICAgICAg
ICBzdGF0aWMgSG9yaXpvbnRhbEdlb21ldHJ5IG91dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShM
YXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CiAKICAgICAgICAgc3RhdGljIEhlaWdodEFuZE1h
cmdpbiBmbG9hdGluZ0hlaWdodEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7
CiAgICAgICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBmbG9hdGluZ1dpZHRoQW5kTWFyZ2luKExh
eW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKQEAgLTExMSwxMCArMTE4LDEwIEBAIHByb3RlY3Rl
ZDoKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXRpYyBIZWlnaHRBbmRNYXJnaW4gb3V0T2ZG
bG93UmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwot
ICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gb3V0T2ZGbG93UmVwbGFjZWRXaWR0aEFuZE1h
cmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBIb3Jpem9u
dGFsR2VvbWV0cnkgb3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoTGF5b3V0Q29u
dGV4dCYsIGNvbnN0IEJveCYpOwogCiAgICAgICAgIHN0YXRpYyBIZWlnaHRBbmRNYXJnaW4gb3V0
T2ZGbG93Tm9uUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJv
eCYpOwotICAgICAgICBzdGF0aWMgV2lkdGhBbmRNYXJnaW4gb3V0T2ZGbG93Tm9uUmVwbGFjZWRX
aWR0aEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRp
YyBIb3Jpem9udGFsR2VvbWV0cnkgb3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0
cnkoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwogCiAgICAgICAgIHN0YXRpYyBIZWlnaHRB
bmRNYXJnaW4gZmxvYXRpbmdSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihMYXlvdXRDb250ZXh0Jiwg
Y29uc3QgQm94Jik7CiAgICAgICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBmbG9hdGluZ1JlcGxh
Y2VkV2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwpAQCAtMTI2LDcg
KzEzMyw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlT3V0T2ZGbG93
UG9zaXRpb24oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYsIERpc3BsYXk6OkJveCYpIGNvbnN0
OwogICAgIHZvaWQgY29tcHV0ZU91dE9mRmxvd0hlaWdodChMYXlvdXRDb250ZXh0JiwgY29uc3Qg
Qm94JiwgRGlzcGxheTo6Qm94JikgY29uc3Q7Ci0gICAgdm9pZCBjb21wdXRlT3V0T2ZGbG93V2lk
dGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYsIERpc3BsYXk6OkJveCYpIGNv
bnN0OworICAgIHZvaWQgY29tcHV0ZU91dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShMYXlvdXRD
b250ZXh0JiwgY29uc3QgQm94JiwgRGlzcGxheTo6Qm94JikgY29uc3Q7CiAKICAgICBXZWFrUHRy
PEJveD4gbV9yb290OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCBhNDBjNDNkMDdiMjNhZWFkZDc1NTA3OWZjMWFj
MDIyYzJmNjNlZmQwLi5iZTc3MDQ1MmIxZjkxNjg1YzAyM2JjMzhkN2VmMmE5YjIyOGZlMzlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpI
ZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkYKICAgICBy
ZXR1cm4geyBjb21wdXRlZEhlaWdodFZhbHVlLCB7IH0gfTsKIH0KIAotRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
Om91dE9mRmxvd05vblJlcGxhY2VkV2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0
Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Okhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9m
Rmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KExheW91dENvbnRleHQmIGxheW91dENv
bnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNP
dXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5yZXBsYWNlZCgpKTsKICAgICAKQEAg
LTE0MCw3ICsxNDAsMTUgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1h
cmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmwKICAgICAvLyBJZiBhbGwg
dGhyZWUgb2YgJ2xlZnQnLCAnd2lkdGgnLCBhbmQgJ3JpZ2h0JyBhcmUgJ2F1dG8nOiBGaXJzdCBz
ZXQgYW55ICdhdXRvJyB2YWx1ZXMgZm9yICdtYXJnaW4tbGVmdCcgYW5kICdtYXJnaW4tcmlnaHQn
IHRvIDAuCiAgICAgLy8gVGhlbiwgaWYgdGhlICdkaXJlY3Rpb24nIHByb3BlcnR5IG9mIHRoZSBl
bGVtZW50IGVzdGFibGlzaGluZyB0aGUgc3RhdGljLXBvc2l0aW9uIGNvbnRhaW5pbmcgYmxvY2sg
aXMgJ2x0cicgc2V0ICdsZWZ0JyB0byB0aGUgc3RhdGljCiAgICAgLy8gcG9zaXRpb24gYW5kIGFw
cGx5IHJ1bGUgbnVtYmVyIHRocmVlIGJlbG93OyBvdGhlcndpc2UsIHNldCAncmlnaHQnIHRvIHRo
ZSBzdGF0aWMgcG9zaXRpb24gYW5kIGFwcGx5IHJ1bGUgbnVtYmVyIG9uZSBiZWxvdy4KLQorICAg
IC8vCisgICAgLy8gSWYgbm9uZSBvZiB0aGUgdGhyZWUgaXMgJ2F1dG8nOiBJZiBib3RoICdtYXJn
aW4tbGVmdCcgYW5kICdtYXJnaW4tcmlnaHQnIGFyZSAnYXV0bycsIHNvbHZlIHRoZSBlcXVhdGlv
biB1bmRlciB0aGUgZXh0cmEgY29uc3RyYWludCB0aGF0IHRoZSB0d28gbWFyZ2lucyBnZXQgZXF1
YWwgdmFsdWVzLAorICAgIC8vIHVubGVzcyB0aGlzIHdvdWxkIG1ha2UgdGhlbSBuZWdhdGl2ZSwg
aW4gd2hpY2ggY2FzZSB3aGVuIGRpcmVjdGlvbiBvZiB0aGUgY29udGFpbmluZyBibG9jayBpcyAn
bHRyJyAoJ3J0bCcpLCBzZXQgJ21hcmdpbi1sZWZ0JyAoJ21hcmdpbi1yaWdodCcpIHRvIHplcm8g
YW5kCisgICAgLy8gc29sdmUgZm9yICdtYXJnaW4tcmlnaHQnICgnbWFyZ2luLWxlZnQnKS4gSWYg
b25lIG9mICdtYXJnaW4tbGVmdCcgb3IgJ21hcmdpbi1yaWdodCcgaXMgJ2F1dG8nLCBzb2x2ZSB0
aGUgZXF1YXRpb24gZm9yIHRoYXQgdmFsdWUuCisgICAgLy8gSWYgdGhlIHZhbHVlcyBhcmUgb3Zl
ci1jb25zdHJhaW5lZCwgaWdub3JlIHRoZSB2YWx1ZSBmb3IgJ2xlZnQnIChpbiBjYXNlIHRoZSAn
ZGlyZWN0aW9uJyBwcm9wZXJ0eSBvZiB0aGUgY29udGFpbmluZyBibG9jayBpcyAncnRsJykgb3Ig
J3JpZ2h0JworICAgIC8vIChpbiBjYXNlICdkaXJlY3Rpb24nIGlzICdsdHInKSBhbmQgc29sdmUg
Zm9yIHRoYXQgdmFsdWUuCisgICAgLy8KKyAgICAvLyBPdGhlcndpc2UsIHNldCAnYXV0bycgdmFs
dWVzIGZvciAnbWFyZ2luLWxlZnQnIGFuZCAnbWFyZ2luLXJpZ2h0JyB0byAwLCBhbmQgcGljayB0
aGUgb25lIG9mIHRoZSBmb2xsb3dpbmcgc2l4IHJ1bGVzIHRoYXQgYXBwbGllcy4KKyAgICAvLwog
ICAgIC8vIDEuICdsZWZ0JyBhbmQgJ3dpZHRoJyBhcmUgJ2F1dG8nIGFuZCAncmlnaHQnIGlzIG5v
dCAnYXV0bycsIHRoZW4gdGhlIHdpZHRoIGlzIHNocmluay10by1maXQuIFRoZW4gc29sdmUgZm9y
ICdsZWZ0JwogICAgIC8vIDIuICdsZWZ0JyBhbmQgJ3JpZ2h0JyBhcmUgJ2F1dG8nIGFuZCAnd2lk
dGgnIGlzIG5vdCAnYXV0bycsIHRoZW4gaWYgdGhlICdkaXJlY3Rpb24nIHByb3BlcnR5IG9mIHRo
ZSBlbGVtZW50IGVzdGFibGlzaGluZyB0aGUgc3RhdGljLXBvc2l0aW9uIAogICAgIC8vICAgIGNv
bnRhaW5pbmcgYmxvY2sgaXMgJ2x0cicgc2V0ICdsZWZ0JyB0byB0aGUgc3RhdGljIHBvc2l0aW9u
LCBvdGhlcndpc2Ugc2V0ICdyaWdodCcgdG8gdGhlIHN0YXRpYyBwb3NpdGlvbi4KQEAgLTE0OSw0
MSArMTU3LDE0NCBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OldpZHRoQW5kTWFyZ2lu
IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbAogICAgIC8vIDQuICdsZWZ0JyBp
cyAnYXV0bycsICd3aWR0aCcgYW5kICdyaWdodCcgYXJlIG5vdCAnYXV0bycsIHRoZW4gc29sdmUg
Zm9yICdsZWZ0JwogICAgIC8vIDUuICd3aWR0aCcgaXMgJ2F1dG8nLCAnbGVmdCcgYW5kICdyaWdo
dCcgYXJlIG5vdCAnYXV0bycsIHRoZW4gc29sdmUgZm9yICd3aWR0aCcKICAgICAvLyA2LiAncmln
aHQnIGlzICdhdXRvJywgJ2xlZnQnIGFuZCAnd2lkdGgnIGFyZSBub3QgJ2F1dG8nLCB0aGVuIHNv
bHZlIGZvciAncmlnaHQnCi0gICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKLSAg
ICBhdXRvIGxlZnQgPSBzdHlsZS5sb2dpY2FsTGVmdCgpOwotICAgIGF1dG8gcmlnaHQgPSBzdHls
ZS5sb2dpY2FsUmlnaHQoKTsKLSAgICBhdXRvIHdpZHRoID0gc3R5bGUubG9naWNhbFdpZHRoKCk7
Ci0KLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5
Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLT53aWR0aCgpOwot
ICAgIExheW91dFVuaXQgY29tcHV0ZWRXaWR0aFZhbHVlOwotCi0gICAgaWYgKCF3aWR0aC5pc0F1
dG8oKSkKLSAgICAgICAgY29tcHV0ZWRXaWR0aFZhbHVlID0gdmFsdWVGb3JMZW5ndGgod2lkdGgs
IGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICBlbHNlIGlmICgobGVmdC5pc0F1dG8oKSAmJiBy
aWdodC5pc0F1dG8oKSkKLSAgICAgICAgfHwgKGxlZnQuaXNBdXRvKCkgJiYgIXJpZ2h0LmlzQXV0
bygpKQotICAgICAgICB8fCAoIWxlZnQuaXNBdXRvKCkgJiYgcmlnaHQuaXNBdXRvKCkpKSB7Ci0g
ICAgICAgIC8vIEFsbCBhdXRvICgjMSksICMxIGFuZCAjMwotICAgICAgICBjb21wdXRlZFdpZHRo
VmFsdWUgPSBzaHJpbmtUb0ZpdFdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCk7Ci0gICAg
fSBlbHNlIGlmICghbGVmdC5pc0F1dG8oKSAmJiAhcmlnaHQuaXNBdXRvKCkpIHsKLSAgICAgICAg
Ly8gIzUKLSAgICAgICAgYXV0byYgZGlzcGxheUJveCA9ICpsYXlvdXRDb250ZXh0LmRpc3BsYXlC
b3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKIAotICAgICAgICBhdXRvIG1hcmdpbkxlZnQgPSBk
aXNwbGF5Qm94Lm1hcmdpbkxlZnQoKTsKLSAgICAgICAgYXV0byBtYXJnaW5SaWdodCA9IGRpc3Bs
YXlCb3gubWFyZ2luUmlnaHQoKTsKKyAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgp
OworICAgIGF1dG8gbGVmdExlbmd0aCA9IHN0eWxlLmxvZ2ljYWxMZWZ0KCk7CisgICAgYXV0byBy
aWdodExlbmd0aCA9IHN0eWxlLmxvZ2ljYWxSaWdodCgpOworICAgIGF1dG8gd2lkdGhMZW5ndGgg
PSBzdHlsZS5sb2dpY2FsV2lkdGgoKTsKKyAgICBhdXRvIG1hcmdpbkxlZnRMZW5ndGggPSBzdHls
ZS5tYXJnaW5MZWZ0KCk7CisgICAgYXV0byBtYXJnaW5SaWdodExlbmd0aCA9IHN0eWxlLm1hcmdp
blJpZ2h0KCk7CisgICAgYXV0byBob3Jpem9udGFsTm9uQ29sbGFwc2VkTWFyZ2luVmFsdWUgPSBj
b21wdXRlZE5vbkNvbGxhcHNlZEhvcml6b250YWxNYXJnaW5WYWx1ZShsYXlvdXRDb250ZXh0LCBs
YXlvdXRCb3gpOworCisgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrID0gKmxheW91dEJveC5jb250
YWluaW5nQmxvY2soKTsKKyAgICBhdXRvIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPSBjb250YWlu
aW5nQmxvY2suc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CisgICAgYXV0byBjb250
YWluaW5nQmxvY2tXaWR0aCA9IGxheW91dENvbnRleHQuZGlzcGxheUJveEZvckxheW91dEJveChj
b250YWluaW5nQmxvY2spLT53aWR0aCgpOwogICAgIAotICAgICAgICBhdXRvIHBhZGRpbmdMZWZ0
ID0gZGlzcGxheUJveC5wYWRkaW5nTGVmdCgpOwotICAgICAgICBhdXRvIHBhZGRpbmdSaWdodCA9
IGRpc3BsYXlCb3gucGFkZGluZ1JpZ2h0KCk7CisgICAgYXV0byYgZGlzcGxheUJveCA9ICpsYXlv
dXRDb250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKKyAgICBhdXRvIHBh
ZGRpbmdMZWZ0ID0gZGlzcGxheUJveC5wYWRkaW5nTGVmdCgpOworICAgIGF1dG8gcGFkZGluZ1Jp
Z2h0ID0gZGlzcGxheUJveC5wYWRkaW5nUmlnaHQoKTsKKyAgICBhdXRvIGJvcmRlckxlZnQgPSBk
aXNwbGF5Qm94LmJvcmRlckxlZnQoKTsKKyAgICBhdXRvIGJvcmRlclJpZ2h0ID0gZGlzcGxheUJv
eC5ib3JkZXJSaWdodCgpOworCisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBsZWZ0Owor
ICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gcmlnaHQ7CisgICAgc3RkOjpvcHRpb25hbDxM
YXlvdXRVbml0PiB3aWR0aDsKKyAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1hcmdpbkxl
ZnQ7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBtYXJnaW5SaWdodDsKKworICAgIGlm
IChsZWZ0TGVuZ3RoLmlzQXV0bygpICYmIHdpZHRoTGVuZ3RoLmlzQXV0bygpICYmIHJpZ2h0TGVu
Z3RoLmlzQXV0bygpKSB7CisgICAgICAgIC8vIElmIGFsbCB0aHJlZSBvZiAnbGVmdCcsICd3aWR0
aCcsIGFuZCAncmlnaHQnIGFyZSAnYXV0byc6IEZpcnN0IHNldCBhbnkgJ2F1dG8nIHZhbHVlcyBm
b3IgJ21hcmdpbi1sZWZ0JyBhbmQgJ21hcmdpbi1yaWdodCcgdG8gMC4KKyAgICAgICAgLy8gVGhl
biwgaWYgdGhlICdkaXJlY3Rpb24nIHByb3BlcnR5IG9mIHRoZSBlbGVtZW50IGVzdGFibGlzaGlu
ZyB0aGUgc3RhdGljLXBvc2l0aW9uIGNvbnRhaW5pbmcgYmxvY2sgaXMgJ2x0cicgc2V0ICdsZWZ0
JyB0byB0aGUgc3RhdGljCisgICAgICAgIC8vIHBvc2l0aW9uIGFuZCBhcHBseSBydWxlIG51bWJl
ciB0aHJlZSBiZWxvdzsgb3RoZXJ3aXNlLCBzZXQgJ3JpZ2h0JyB0byB0aGUgc3RhdGljIHBvc2l0
aW9uIGFuZCBhcHBseSBydWxlIG51bWJlciBvbmUgYmVsb3cuCisgICAgICAgIG1hcmdpbkxlZnQg
PSBob3Jpem9udGFsTm9uQ29sbGFwc2VkTWFyZ2luVmFsdWUubGVmdDsKKyAgICAgICAgbWFyZ2lu
UmlnaHQgPSBob3Jpem9udGFsTm9uQ29sbGFwc2VkTWFyZ2luVmFsdWUucmlnaHQ7CisKKyAgICAg
ICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24pCisgICAgICAgICAgICBsZWZ0ID0gZGlzcGxh
eUJveC5sZWZ0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJpZ2h0ID0gZGlzcGxheUJv
eC5yaWdodCgpOworICAgIH0gZWxzZSBpZiAoIWxlZnRMZW5ndGguaXNBdXRvKCkgJiYgIXdpZHRo
TGVuZ3RoLmlzQXV0bygpICYmICFyaWdodExlbmd0aC5pc0F1dG8oKSkgeworICAgICAgICAvLyBJ
ZiBub25lIG9mIHRoZSB0aHJlZSBpcyAnYXV0byc6IElmIGJvdGggJ21hcmdpbi1sZWZ0JyBhbmQg
J21hcmdpbi1yaWdodCcgYXJlICdhdXRvJywgc29sdmUgdGhlIGVxdWF0aW9uIHVuZGVyIHRoZSBl
eHRyYSBjb25zdHJhaW50IHRoYXQgdGhlIHR3byBtYXJnaW5zIGdldCBlcXVhbCB2YWx1ZXMsCisg
ICAgICAgIC8vIHVubGVzcyB0aGlzIHdvdWxkIG1ha2UgdGhlbSBuZWdhdGl2ZSwgaW4gd2hpY2gg
Y2FzZSB3aGVuIGRpcmVjdGlvbiBvZiB0aGUgY29udGFpbmluZyBibG9jayBpcyAnbHRyJyAoJ3J0
bCcpLCBzZXQgJ21hcmdpbi1sZWZ0JyAoJ21hcmdpbi1yaWdodCcpIHRvIHplcm8gYW5kCisgICAg
ICAgIC8vIHNvbHZlIGZvciAnbWFyZ2luLXJpZ2h0JyAoJ21hcmdpbi1sZWZ0JykuIElmIG9uZSBv
ZiAnbWFyZ2luLWxlZnQnIG9yICdtYXJnaW4tcmlnaHQnIGlzICdhdXRvJywgc29sdmUgdGhlIGVx
dWF0aW9uIGZvciB0aGF0IHZhbHVlLgorICAgICAgICAvLyBJZiB0aGUgdmFsdWVzIGFyZSBvdmVy
LWNvbnN0cmFpbmVkLCBpZ25vcmUgdGhlIHZhbHVlIGZvciAnbGVmdCcgKGluIGNhc2UgdGhlICdk
aXJlY3Rpb24nIHByb3BlcnR5IG9mIHRoZSBjb250YWluaW5nIGJsb2NrIGlzICdydGwnKSBvciAn
cmlnaHQnCisgICAgICAgIC8vIChpbiBjYXNlICdkaXJlY3Rpb24nIGlzICdsdHInKSBhbmQgc29s
dmUgZm9yIHRoYXQgdmFsdWUuCisgICAgICAgIGxlZnQgPSBMYXlvdXRVbml0IHsgbGVmdExlbmd0
aC52YWx1ZSgpIH07CisgICAgICAgIHJpZ2h0ID0gTGF5b3V0VW5pdCB7IHJpZ2h0TGVuZ3RoLnZh
bHVlKCkgfTsKKyAgICAgICAgd2lkdGggPSBMYXlvdXRVbml0IHsgd2lkdGhMZW5ndGgudmFsdWUo
KSB9OworCisgICAgICAgIGlmIChtYXJnaW5MZWZ0TGVuZ3RoLmlzQXV0bygpICYmIG1hcmdpblJp
Z2h0TGVuZ3RoLmlzQXV0bygpKSB7CisgICAgICAgICAgICBhdXRvIG1hcmdpbkxlZnRBbmRSaWdo
dCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdM
ZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqcmlnaHQpOworICAg
ICAgICAgICAgaWYgKG1hcmdpbkxlZnRBbmRSaWdodCA+PSAwKQorICAgICAgICAgICAgICAgIG1h
cmdpbkxlZnQgPSBtYXJnaW5SaWdodCA9IG1hcmdpbkxlZnRBbmRSaWdodCAvIDI7ICAKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KSB7CisgICAgICAgICAgICAgICAgICAgIG1hcmdpbkxlZnQgPSBMYXlvdXRVbml0IHsgMCB9Owor
ICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0g
KCpsZWZ0ICsgKm1hcmdpbkxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGgg
KyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICpyaWdodCk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQgPSBMYXlvdXRVbml0IHsg
MCB9OworICAgICAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0ID0gY29udGFpbmluZ0Jsb2NrV2lk
dGggLSAoKmxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5n
UmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5SaWdodCArICpyaWdodCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKG1hcmdpbkxlZnRMZW5n
dGguaXNBdXRvKCkpIHsKKyAgICAgICAgICAgIG1hcmdpblJpZ2h0ID0gaG9yaXpvbnRhbE5vbkNv
bGxhcHNlZE1hcmdpblZhbHVlLnJpZ2h0OworICAgICAgICAgICAgbWFyZ2luTGVmdCA9IGNvbnRh
aW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndp
ZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luUmlnaHQgKyAqcmlnaHQp
OworICAgICAgICAgICAgLy8gT3ZlcmNvbnN0cmFpbmVkPyBJZ25vcmUgcmlnaHQgKGxlZnQpLgor
ICAgICAgICAgICAgaWYgKCptYXJnaW5MZWZ0IDwgMCkgeworICAgICAgICAgICAgICAgIGlmIChp
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKQorICAgICAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0ID0g
Y29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQg
KyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5SaWdodCk7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0ID0gY29u
dGFpbmluZ0Jsb2NrV2lkdGggLSAoYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsg
cGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luUmlnaHQgKyAqcmlnaHQpOworICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKG1hcmdpblJpZ2h0TGVuZ3RoLmlzQXV0bygp
KSB7CisgICAgICAgICAgICBtYXJnaW5MZWZ0ID0gaG9yaXpvbnRhbE5vbkNvbGxhcHNlZE1hcmdp
blZhbHVlLmxlZnQ7CisgICAgICAgICAgICBtYXJnaW5SaWdodCA9IGNvbnRhaW5pbmdCbG9ja1dp
ZHRoIC0gKCpsZWZ0ICsgKm1hcmdpbkxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAq
d2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICpyaWdodCk7CisgICAgICAgICAg
ICAvLyBPdmVyY29uc3RyYWluZWQ/IElnbm9yZSByaWdodCAobGVmdCkuCisgICAgICAgICAgICBp
ZiAoKm1hcmdpblJpZ2h0IDwgMCkgeworICAgICAgICAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0
RGlyZWN0aW9uKQorICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodCA9IGNvbnRhaW5pbmdC
bG9ja1dpZHRoIC0gKCpsZWZ0ICsgKm1hcmdpbkxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xl
ZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCk7CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodCA9IGNvbnRhaW5pbmdCbG9j
a1dpZHRoIC0gKCptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRo
ICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqcmlnaHQpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gT3RoZXJ3aXNlLCBzZXQgJ2F1dG8n
IHZhbHVlcyBmb3IgJ21hcmdpbi1sZWZ0JyBhbmQgJ21hcmdpbi1yaWdodCcgdG8gMCwgYW5kIHBp
Y2sgdGhlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHNpeCBydWxlcyB0aGF0IGFwcGxpZXMuCisgICAg
ICAgIG1hcmdpbkxlZnQgPSBob3Jpem9udGFsTm9uQ29sbGFwc2VkTWFyZ2luVmFsdWUubGVmdDsK
KyAgICAgICAgbWFyZ2luUmlnaHQgPSBob3Jpem9udGFsTm9uQ29sbGFwc2VkTWFyZ2luVmFsdWUu
cmlnaHQ7CisgICAgfQogCi0gICAgICAgIGF1dG8gYm9yZGVyTGVmdCA9IGRpc3BsYXlCb3guYm9y
ZGVyTGVmdCgpOwotICAgICAgICBhdXRvIGJvcmRlclJpZ2h0ID0gZGlzcGxheUJveC5ib3JkZXJS
aWdodCgpOworICAgIEFTU0VSVChtYXJnaW5MZWZ0KTsKKyAgICBBU1NFUlQobWFyZ2luUmlnaHQp
OwogCi0gICAgICAgIGNvbXB1dGVkV2lkdGhWYWx1ZSA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0g
KGxlZnQudmFsdWUoKSArIG1hcmdpbkxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyBw
YWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArIG1hcmdpblJpZ2h0ICsgcmlnaHQudmFsdWUoKSk7
Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gIzIgIzQgIzYgaGF2ZSB3aWR0aCAhPSBhdXRvCi0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGlmIChsZWZ0TGVuZ3RoLmlzQXV0bygp
ICYmIHdpZHRoTGVuZ3RoLmlzQXV0bygpICYmICghcmlnaHRMZW5ndGguaXNBdXRvKCkgfHwgcmln
aHQpKSB7CisgICAgICAgIC8vICMxCisgICAgICAgIGlmICghcmlnaHRMZW5ndGguaXNBdXRvKCkp
IHsKKyAgICAgICAgICAgIEFTU0VSVCghcmlnaHQpOyAKKyAgICAgICAgICAgIHJpZ2h0ID0gTGF5
b3V0VW5pdCB7IHJpZ2h0TGVuZ3RoLnZhbHVlKCkgfTsKKyAgICAgICAgfQorICAgICAgICB3aWR0
aCA9IHNocmlua1RvRml0V2lkdGgobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKKyAgICAgICAg
bGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCAr
IHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICArIGJvcmRlclJpZ2h0ICsgKm1h
cmdpblJpZ2h0ICsgKnJpZ2h0KTsKKyAgICB9IGVsc2UgaWYgKGxlZnRMZW5ndGguaXNBdXRvKCkg
JiYgcmlnaHRMZW5ndGguaXNBdXRvKCkgJiYgIXdpZHRoTGVuZ3RoLmlzQXV0bygpKSB7CisgICAg
ICAgIC8vICMyCisgICAgICAgIHdpZHRoID0gTGF5b3V0VW5pdCB7IHdpZHRoTGVuZ3RoLnZhbHVl
KCkgfTsKKyAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24pIHsKKyAgICAgICAgICAg
IGxlZnQgPSBkaXNwbGF5Qm94LmxlZnQoKTsKKyAgICAgICAgICAgIHJpZ2h0ID0gY29udGFpbmlu
Z0Jsb2NrV2lkdGggLSAoKmxlZnQgKyAqbWFyZ2luTGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5n
TGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpblJpZ2h0
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJpZ2h0ID0gZGlzcGxheUJveC5yaWdo
dCgpOworICAgICAgICAgICAgbGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCptYXJnaW5M
ZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsg
Ym9yZGVyUmlnaHQgKyAqbWFyZ2luUmlnaHQgKyAqcmlnaHQpOworICAgICAgICB9CisgICAgfSBl
bHNlIGlmICh3aWR0aExlbmd0aC5pc0F1dG8oKSAmJiByaWdodExlbmd0aC5pc0F1dG8oKSAmJiAo
IWxlZnRMZW5ndGguaXNBdXRvKCkgfHwgbGVmdCkpIHsKKyAgICAgICAgLy8gIzMKKyAgICAgICAg
aWYgKCFsZWZ0TGVuZ3RoLmlzQXV0bygpKSB7CisgICAgICAgICAgICBBU1NFUlQoIWxlZnQpOyAK
KyAgICAgICAgICAgIGxlZnQgPSBMYXlvdXRVbml0IHsgbGVmdExlbmd0aC52YWx1ZSgpIH07Cisg
ICAgICAgIH0KKyAgICAgICAgd2lkdGggPSBzaHJpbmtUb0ZpdFdpZHRoKGxheW91dENvbnRleHQs
IGxheW91dEJveCk7CisgICAgICAgIHJpZ2h0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxl
ZnQgKyAqbWFyZ2luTGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBh
ZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKm1hcmdpblJpZ2h0KTsKKyAgICB9IGVsc2UgaWYg
KGxlZnRMZW5ndGguaXNBdXRvKCkgJiYgIXdpZHRoTGVuZ3RoLmlzQXV0bygpICYmICFyaWdodExl
bmd0aC5pc0F1dG8oKSkgeworICAgICAgICAvLyAjNAorICAgICAgICByaWdodCA9IExheW91dFVu
aXQgeyByaWdodExlbmd0aC52YWx1ZSgpIH07CisgICAgICAgIHdpZHRoID0gTGF5b3V0VW5pdCB7
IHdpZHRoTGVuZ3RoLnZhbHVlKCkgfTsKKyAgICAgICAgbGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dp
ZHRoIC0gKCptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsg
cGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luUmlnaHQgKyAqcmlnaHQpOworICAg
IH0gZWxzZSBpZiAod2lkdGhMZW5ndGguaXNBdXRvKCkgJiYgIWxlZnRMZW5ndGguaXNBdXRvKCkg
JiYgIXJpZ2h0TGVuZ3RoLmlzQXV0bygpKSB7CisgICAgICAgIC8vICM1CisgICAgICAgIGxlZnQg
PSBMYXlvdXRVbml0IHsgbGVmdExlbmd0aC52YWx1ZSgpIH07CisgICAgICAgIHJpZ2h0ID0gTGF5
b3V0VW5pdCB7IHJpZ2h0TGVuZ3RoLnZhbHVlKCkgfTsKKyAgICAgICAgd2lkdGggPSBjb250YWlu
aW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRp
bmdMZWZ0ICsgcGFkZGluZ1JpZ2h0ICArIGJvcmRlclJpZ2h0ICsgKm1hcmdpblJpZ2h0ICsgKnJp
Z2h0KTsKKyAgICB9IGVsc2UgaWYgKHJpZ2h0TGVuZ3RoLmlzQXV0bygpICYmICFsZWZ0TGVuZ3Ro
LmlzQXV0bygpICYmICF3aWR0aExlbmd0aC5pc0F1dG8oKSkgeworICAgICAgICAvLyAjNgorICAg
ICAgICBsZWZ0ID0gTGF5b3V0VW5pdCB7IGxlZnRMZW5ndGgudmFsdWUoKSB9OworICAgICAgICB3
aWR0aCA9IExheW91dFVuaXQgeyB3aWR0aExlbmd0aC52YWx1ZSgpIH07CisgICAgICAgIHJpZ2h0
ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyAqbWFyZ2luTGVmdCArIGJvcmRlckxl
ZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsg
Km1hcmdpblJpZ2h0KTsKICAgICB9CiAKLSAgICByZXR1cm4gV2lkdGhBbmRNYXJnaW4geyBjb21w
dXRlZFdpZHRoVmFsdWUsIHsgfSB9OworICAgIEFTU0VSVChsZWZ0KTsKKyAgICBBU1NFUlQocmln
aHQpOworICAgIEFTU0VSVCh3aWR0aCk7CisgICAgQVNTRVJUKG1hcmdpbkxlZnQpOworICAgIEFT
U0VSVChtYXJnaW5SaWdodCk7CisgICAgcmV0dXJuIEhvcml6b250YWxHZW9tZXRyeSB7ICpsZWZ0
LCAqcmlnaHQsICp3aWR0aCwgeyAqbWFyZ2luTGVmdCwgKm1hcmdpblJpZ2h0IH0gfTsKIH0KIAog
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhlaWdodEFuZE1hcmdpbihMYXlvdXRD
b250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKQEAgLTE5NSwxMyAr
MzA2LDE0IEBAIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6SGVpZ2h0QW5kTWFyZ2luIEZv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGCiAgICAgcmV0dXJuIGlubGluZVJlcGxh
Y2VkSGVpZ2h0QW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CiB9CiAKLUZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6V2lkdGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQm
IGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShMYXlvdXRDb250ZXh0JiBsYXlv
dXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94
LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIGxheW91dEJveC5yZXBsYWNlZCgpKTsKICAgICAv
LyAxMC4zLjggQWJzb2x1dGVseSBwb3NpdGlvbmVkLCByZXBsYWNlZCBlbGVtZW50cwogICAgIC8v
CiAgICAgLy8gVGhlIHVzZWQgdmFsdWUgb2YgJ3dpZHRoJyBpcyBkZXRlcm1pbmVkIGFzIGZvciBp
bmxpbmUgcmVwbGFjZWQgZWxlbWVudHMuCi0gICAgcmV0dXJuIGlubGluZVJlcGxhY2VkV2lkdGhB
bmRNYXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKKyAgICBhdXRvIHdpZHRoQW5kTWFy
Z2luID0gaW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRDb250ZXh0LCBsYXlvdXRC
b3gpOworICAgIHJldHVybiB7IHsgfSwgeyB9LCB3aWR0aEFuZE1hcmdpbi53aWR0aCwgd2lkdGhB
bmRNYXJnaW4ubWFyZ2luIH07CiB9CiAKIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6SGVp
Z2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdOb25SZXBs
YWNlZEhlaWdodEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBC
b3gmIGxheW91dEJveCkKQEAgLTQ0OSwxMyArNTYxLDEzIEBAIEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6SGVpZ2h0QW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0
T2ZGCiAgICAgcmV0dXJuIG91dE9mRmxvd1JlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGxheW91dENv
bnRleHQsIGxheW91dEJveCk7CiB9CiAKLUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6V2lk
dGhBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dXaWR0aEFu
ZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJv
eCkKK0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6SG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KExheW91
dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFT
U0VSVChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpOwogCiAgICAgaWYgKCFsYXlv
dXRCb3gucmVwbGFjZWQoKSkKLSAgICAgICAgcmV0dXJuIG91dE9mRmxvd05vblJlcGxhY2VkV2lk
dGhBbmRNYXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKLSAgICByZXR1cm4gb3V0T2ZG
bG93UmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOworICAg
ICAgICByZXR1cm4gb3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkobGF5b3V0
Q29udGV4dCwgbGF5b3V0Qm94KTsKKyAgICByZXR1cm4gb3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9u
dGFsR2VvbWV0cnkobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKIH0KIAogRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpmbG9hdGluZ0hlaWdodEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0
LCBjb25zdCBCb3gmIGxheW91dEJveCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>342406</attachid>
            <date>2018-06-10 21:11:10 -0700</date>
            <delta_ts>2018-06-11 07:24:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186474-20180610211109.patch</filename>
            <type>text/plain</type>
            <size>19925</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyNjY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNjOWNkYjRhOTU4MWVl
YjQ1ZDY1MjRiMGM4M2E5MWIyYjZmYjViMi4uYTRhOGE5MDZjYWY4YWM5MTk1NmNlNDU1NjMzZWQx
ZjkwMjM2OGZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE4LTA2LTEwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gTWVyZ2UgbGVmdCwg
cmlnaHQsIHdpZHRoIGFuZCBob3Jpem9udGFsIG1hcmdpbiBjb21wdXRhdGlvbiBmb3Igb3V0LW9m
LWZsb3cgbm9uLXJlcGxhY2VkIGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODY0NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIy
L3Zpc3VkZXQuaHRtbCNhYnMtbm9uLXJlcGxhY2VkLXdpZHRoIAorICAgICAgICAoMTAuMy43IEFi
c29sdXRlbHkgcG9zaXRpb25lZCwgbm9uLXJlcGxhY2VkIGVsZW1lbnRzKQorCisgICAgICAgICog
bGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0
T3V0T2ZGbG93RGVzY2VuZGFudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1dpZHRoQW5kTWFyZ2luIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAg
KiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFj
ZWRIb3Jpem9udGFsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkV2lkdGhB
bmRNYXJnaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Om91dE9mRmxvd1dpZHRoQW5kTWFyZ2luKTogRGVsZXRlZC4KKwogMjAxOC0wNi0xMCAgTWlj
aGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1b
R1RLXSBwYXlwYWwuY29tIHJlcXVpcmVzIHVzZXIgYWdlbnQgcXVpcmsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDUxYzI2MjNiM2M2YzkzMGY3YzVj
NmY1ODgwNTk3MGVhZmI0MDM5NjAuLmI5NDZkY2Q0YWZiZGNmZDVjNDE5Y2FlMjJhMmVhZTJkNmJk
Y2I2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcApA
QCAtNjgsMTEgKzY4LDEzIEBAIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVGbG9hdGlu
Z1dpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmIGxheW91dENvbnRlCiAgICAgZGlzcGxheUJv
eC5zZXRIb3Jpem9udGFsTWFyZ2luKHdpZHRoQW5kTWFyZ2luLm1hcmdpbik7CiB9CiAKLXZvaWQg
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dXaWR0aEFuZE1hcmdpbihMYXlvdXRD
b250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCwgRGlzcGxheTo6Qm94
JiBkaXNwbGF5Qm94KSBjb25zdAordm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9m
Rmxvd0hvcml6b250YWxHZW9tZXRyeShMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25z
dCBCb3gmIGxheW91dEJveCwgRGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94KSBjb25zdAogewotICAg
IGF1dG8gd2lkdGhBbmRNYXJnaW4gPSBHZW9tZXRyeTo6b3V0T2ZGbG93V2lkdGhBbmRNYXJnaW4o
bGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKLSAgICBkaXNwbGF5Qm94LnNldFdpZHRoKHdpZHRo
QW5kTWFyZ2luLndpZHRoKTsKLSAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxNYXJnaW4od2lk
dGhBbmRNYXJnaW4ubWFyZ2luKTsKKyAgICBhdXRvIGhvcml6b250YWxHZW9tZXRyeSA9IEdlb21l
dHJ5OjpvdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94
KTsKKyAgICBkaXNwbGF5Qm94LnNldExlZnQoaG9yaXpvbnRhbEdlb21ldHJ5LmxlZnQpOworICAg
IGRpc3BsYXlCb3guc2V0V2lkdGgoaG9yaXpvbnRhbEdlb21ldHJ5LndpZHRoKTsKKyAgICBBU1NF
UlQoaG9yaXpvbnRhbEdlb21ldHJ5LmxlZnQgKyBob3Jpem9udGFsR2VvbWV0cnkud2lkdGggPT0g
aG9yaXpvbnRhbEdlb21ldHJ5LnJpZ2h0KTsKKyAgICBkaXNwbGF5Qm94LnNldEhvcml6b250YWxN
YXJnaW4oaG9yaXpvbnRhbEdlb21ldHJ5Lm1hcmdpbik7CiB9CiAKIHZvaWQgRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dIZWlnaHQoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4
dCwgY29uc3QgQm94JiBsYXlvdXRCb3gsIERpc3BsYXk6OkJveCYgZGlzcGxheUJveCkgY29uc3QK
QEAgLTExNSw3ICsxMTcsNyBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRPZkZs
b3dEZXNjZW5kYW50cyhMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0KQogICAgICAgICAvLyBv
ZiBhIGh5cG90aGV0aWNhbCBib3ggdGhhdCB3b3VsZCBoYXZlIGJlZW4gdGhlIGZpcnN0IGJveCBv
ZiB0aGUgZWxlbWVudCBpZiBpdHMgc3BlY2lmaWVkICdwb3NpdGlvbicgdmFsdWUgaGFkIGJlZW4g
J3N0YXRpYycgYW5kCiAgICAgICAgIC8vIGl0cyBzcGVjaWZpZWQgJ2Zsb2F0JyBoYWQgYmVlbiAn
bm9uZScgYW5kIGl0cyBzcGVjaWZpZWQgJ2NsZWFyJyBoYWQgYmVlbiAnbm9uZScuCiAgICAgICAg
IGNvbXB1dGVTdGF0aWNQb3NpdGlvbihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gsIGRpc3BsYXlC
b3gpOwotICAgICAgICBjb21wdXRlT3V0T2ZGbG93V2lkdGhBbmRNYXJnaW4obGF5b3V0Q29udGV4
dCwgbGF5b3V0Qm94LCBkaXNwbGF5Qm94KTsKKyAgICAgICAgY29tcHV0ZU91dE9mRmxvd0hvcml6
b250YWxHZW9tZXRyeShsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gsIGRpc3BsYXlCb3gpOwogCiAg
ICAgICAgIEFTU0VSVChsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsK
ICAgICAgICAgYXV0byBmb3JtYXR0aW5nQ29udGV4dCA9IGxheW91dENvbnRleHQuZm9ybWF0dGlu
Z0NvbnRleHQobGF5b3V0Qm94KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0LmgKaW5kZXggOWQyMzBmMjE4ODhkMGI2NWFhNDUyMGUzZWExZjZjN2EzZGE1ZTAzYi4uMWMw
NjA0NWU2MzljNGE5OGQ1NzEwZjlhMjA4NWI2Yjk5MDZhYjJmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTkxLDggKzkxLDE1IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgICAgIERpc3BsYXk6OkJveDo6VmVydGljYWxFZGdlcyBtYXJnaW47CiAgICAgICAg
IH07CiAKKyAgICAgICAgc3RydWN0IEhvcml6b250YWxHZW9tZXRyeSB7CisgICAgICAgICAgICBM
YXlvdXRVbml0IGxlZnQ7CisgICAgICAgICAgICBMYXlvdXRVbml0IHJpZ2h0OworICAgICAgICAg
ICAgTGF5b3V0VW5pdCB3aWR0aDsKKyAgICAgICAgICAgIERpc3BsYXk6OkJveDo6SG9yaXpvbnRh
bEVkZ2VzIG1hcmdpbjsKKyAgICAgICAgfTsKKwogICAgICAgICBzdGF0aWMgSGVpZ2h0QW5kTWFy
Z2luIG91dE9mRmxvd0hlaWdodEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7
Ci0gICAgICAgIHN0YXRpYyBXaWR0aEFuZE1hcmdpbiBvdXRPZkZsb3dXaWR0aEFuZE1hcmdpbihM
YXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBIb3Jpem9udGFsR2Vv
bWV0cnkgb3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KExheW91dENvbnRleHQmLCBjb25zdCBC
b3gmKTsKIAogICAgICAgICBzdGF0aWMgSGVpZ2h0QW5kTWFyZ2luIGZsb2F0aW5nSGVpZ2h0QW5k
TWFyZ2luKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKICAgICAgICAgc3RhdGljIFdpZHRo
QW5kTWFyZ2luIGZsb2F0aW5nV2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJv
eCYpOwpAQCAtMTExLDEwICsxMTgsMTAgQEAgcHJvdGVjdGVkOgogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBvdXRPZkZsb3dSZXBsYWNlZEhlaWdodEFuZE1h
cmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0YXRpYyBXaWR0aEFu
ZE1hcmdpbiBvdXRPZkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmLCBj
b25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIEhvcml6b250YWxHZW9tZXRyeSBvdXRPZkZsb3dS
ZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CiAK
ICAgICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBvdXRPZkZsb3dOb25SZXBsYWNlZEhlaWdo
dEFuZE1hcmdpbihMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0YXRpYyBX
aWR0aEFuZE1hcmdpbiBvdXRPZkZsb3dOb25SZXBsYWNlZFdpZHRoQW5kTWFyZ2luKExheW91dENv
bnRleHQmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIEhvcml6b250YWxHZW9tZXRyeSBv
dXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShMYXlvdXRDb250ZXh0JiwgY29u
c3QgQm94Jik7CiAKICAgICAgICAgc3RhdGljIEhlaWdodEFuZE1hcmdpbiBmbG9hdGluZ1JlcGxh
Y2VkSGVpZ2h0QW5kTWFyZ2luKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKICAgICAgICAg
c3RhdGljIFdpZHRoQW5kTWFyZ2luIGZsb2F0aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihMYXlv
dXRDb250ZXh0JiwgY29uc3QgQm94Jik7CkBAIC0xMjYsNyArMTMzLDcgQEAgcHJvdGVjdGVkOgog
cHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVPdXRPZkZsb3dQb3NpdGlvbihMYXlvdXRDb250ZXh0
JiwgY29uc3QgQm94JiwgRGlzcGxheTo6Qm94JikgY29uc3Q7CiAgICAgdm9pZCBjb21wdXRlT3V0
T2ZGbG93SGVpZ2h0KExheW91dENvbnRleHQmLCBjb25zdCBCb3gmLCBEaXNwbGF5OjpCb3gmKSBj
b25zdDsKLSAgICB2b2lkIGNvbXB1dGVPdXRPZkZsb3dXaWR0aEFuZE1hcmdpbihMYXlvdXRDb250
ZXh0JiwgY29uc3QgQm94JiwgRGlzcGxheTo6Qm94JikgY29uc3Q7CisgICAgdm9pZCBjb21wdXRl
T3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KExheW91dENvbnRleHQmLCBjb25zdCBCb3gmLCBE
aXNwbGF5OjpCb3gmKSBjb25zdDsKIAogICAgIFdlYWtQdHI8Qm94PiBtX3Jvb3Q7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnku
Y3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3Bw
CmluZGV4IGE0MGM0M2QwN2IyM2FlYWRkNzU1MDc5ZmMxYWMwMjJjMmY2M2VmZDAuLjk0NWZhMjJk
NGQyYzY2MmJiMmM0MWQ4MTdlZDdiMWE2Y2FjYzhjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTEyOCw3ICsxMjgs
MTQgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRBbmRNYXJnaW4gRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkYKICAgICByZXR1cm4geyBjb21wdXRlZEhlaWdo
dFZhbHVlLCB7IH0gfTsKIH0KIAotRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0aEFu
ZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2Vk
V2lkdGhBbmRNYXJnaW4oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBs
YXlvdXRCb3gpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBjb21wdXRlZFZhbHVl
SWZOb3RBdXRvKGNvbnN0IExlbmd0aCYgZ2VvbWV0cnlQcm9wZXJ0eSwgTGF5b3V0VW5pdCBjb250
YWluaW5nQmxvY2tXaWR0aCkKK3sKKyAgICBpZiAoZ2VvbWV0cnlQcm9wZXJ0eS5pc0F1dG8oKSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgo
Z2VvbWV0cnlQcm9wZXJ0eSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOworfQorCitGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Okhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KExheW91dENv
bnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VS
VChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91dEJveC5yZXBsYWNl
ZCgpKTsKICAgICAKQEAgLTE0MCw3ICsxNDcsMTUgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmwK
ICAgICAvLyBJZiBhbGwgdGhyZWUgb2YgJ2xlZnQnLCAnd2lkdGgnLCBhbmQgJ3JpZ2h0JyBhcmUg
J2F1dG8nOiBGaXJzdCBzZXQgYW55ICdhdXRvJyB2YWx1ZXMgZm9yICdtYXJnaW4tbGVmdCcgYW5k
ICdtYXJnaW4tcmlnaHQnIHRvIDAuCiAgICAgLy8gVGhlbiwgaWYgdGhlICdkaXJlY3Rpb24nIHBy
b3BlcnR5IG9mIHRoZSBlbGVtZW50IGVzdGFibGlzaGluZyB0aGUgc3RhdGljLXBvc2l0aW9uIGNv
bnRhaW5pbmcgYmxvY2sgaXMgJ2x0cicgc2V0ICdsZWZ0JyB0byB0aGUgc3RhdGljCiAgICAgLy8g
cG9zaXRpb24gYW5kIGFwcGx5IHJ1bGUgbnVtYmVyIHRocmVlIGJlbG93OyBvdGhlcndpc2UsIHNl
dCAncmlnaHQnIHRvIHRoZSBzdGF0aWMgcG9zaXRpb24gYW5kIGFwcGx5IHJ1bGUgbnVtYmVyIG9u
ZSBiZWxvdy4KLQorICAgIC8vCisgICAgLy8gSWYgbm9uZSBvZiB0aGUgdGhyZWUgaXMgJ2F1dG8n
OiBJZiBib3RoICdtYXJnaW4tbGVmdCcgYW5kICdtYXJnaW4tcmlnaHQnIGFyZSAnYXV0bycsIHNv
bHZlIHRoZSBlcXVhdGlvbiB1bmRlciB0aGUgZXh0cmEgY29uc3RyYWludCB0aGF0IHRoZSB0d28g
bWFyZ2lucyBnZXQgZXF1YWwgdmFsdWVzLAorICAgIC8vIHVubGVzcyB0aGlzIHdvdWxkIG1ha2Ug
dGhlbSBuZWdhdGl2ZSwgaW4gd2hpY2ggY2FzZSB3aGVuIGRpcmVjdGlvbiBvZiB0aGUgY29udGFp
bmluZyBibG9jayBpcyAnbHRyJyAoJ3J0bCcpLCBzZXQgJ21hcmdpbi1sZWZ0JyAoJ21hcmdpbi1y
aWdodCcpIHRvIHplcm8gYW5kCisgICAgLy8gc29sdmUgZm9yICdtYXJnaW4tcmlnaHQnICgnbWFy
Z2luLWxlZnQnKS4gSWYgb25lIG9mICdtYXJnaW4tbGVmdCcgb3IgJ21hcmdpbi1yaWdodCcgaXMg
J2F1dG8nLCBzb2x2ZSB0aGUgZXF1YXRpb24gZm9yIHRoYXQgdmFsdWUuCisgICAgLy8gSWYgdGhl
IHZhbHVlcyBhcmUgb3Zlci1jb25zdHJhaW5lZCwgaWdub3JlIHRoZSB2YWx1ZSBmb3IgJ2xlZnQn
IChpbiBjYXNlIHRoZSAnZGlyZWN0aW9uJyBwcm9wZXJ0eSBvZiB0aGUgY29udGFpbmluZyBibG9j
ayBpcyAncnRsJykgb3IgJ3JpZ2h0JworICAgIC8vIChpbiBjYXNlICdkaXJlY3Rpb24nIGlzICds
dHInKSBhbmQgc29sdmUgZm9yIHRoYXQgdmFsdWUuCisgICAgLy8KKyAgICAvLyBPdGhlcndpc2Us
IHNldCAnYXV0bycgdmFsdWVzIGZvciAnbWFyZ2luLWxlZnQnIGFuZCAnbWFyZ2luLXJpZ2h0JyB0
byAwLCBhbmQgcGljayB0aGUgb25lIG9mIHRoZSBmb2xsb3dpbmcgc2l4IHJ1bGVzIHRoYXQgYXBw
bGllcy4KKyAgICAvLwogICAgIC8vIDEuICdsZWZ0JyBhbmQgJ3dpZHRoJyBhcmUgJ2F1dG8nIGFu
ZCAncmlnaHQnIGlzIG5vdCAnYXV0bycsIHRoZW4gdGhlIHdpZHRoIGlzIHNocmluay10by1maXQu
IFRoZW4gc29sdmUgZm9yICdsZWZ0JwogICAgIC8vIDIuICdsZWZ0JyBhbmQgJ3JpZ2h0JyBhcmUg
J2F1dG8nIGFuZCAnd2lkdGgnIGlzIG5vdCAnYXV0bycsIHRoZW4gaWYgdGhlICdkaXJlY3Rpb24n
IHByb3BlcnR5IG9mIHRoZSBlbGVtZW50IGVzdGFibGlzaGluZyB0aGUgc3RhdGljLXBvc2l0aW9u
IAogICAgIC8vICAgIGNvbnRhaW5pbmcgYmxvY2sgaXMgJ2x0cicgc2V0ICdsZWZ0JyB0byB0aGUg
c3RhdGljIHBvc2l0aW9uLCBvdGhlcndpc2Ugc2V0ICdyaWdodCcgdG8gdGhlIHN0YXRpYyBwb3Np
dGlvbi4KQEAgLTE0OSw0MSArMTY0LDExNiBAQCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OldpZHRoQW5kTWFyZ2luIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbAogICAg
IC8vIDQuICdsZWZ0JyBpcyAnYXV0bycsICd3aWR0aCcgYW5kICdyaWdodCcgYXJlIG5vdCAnYXV0
bycsIHRoZW4gc29sdmUgZm9yICdsZWZ0JwogICAgIC8vIDUuICd3aWR0aCcgaXMgJ2F1dG8nLCAn
bGVmdCcgYW5kICdyaWdodCcgYXJlIG5vdCAnYXV0bycsIHRoZW4gc29sdmUgZm9yICd3aWR0aCcK
ICAgICAvLyA2LiAncmlnaHQnIGlzICdhdXRvJywgJ2xlZnQnIGFuZCAnd2lkdGgnIGFyZSBub3Qg
J2F1dG8nLCB0aGVuIHNvbHZlIGZvciAncmlnaHQnCi0gICAgYXV0byYgc3R5bGUgPSBsYXlvdXRC
b3guc3R5bGUoKTsKLSAgICBhdXRvIGxlZnQgPSBzdHlsZS5sb2dpY2FsTGVmdCgpOwotICAgIGF1
dG8gcmlnaHQgPSBzdHlsZS5sb2dpY2FsUmlnaHQoKTsKLSAgICBhdXRvIHdpZHRoID0gc3R5bGUu
bG9naWNhbFdpZHRoKCk7Ci0KLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gbGF5b3V0
Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2Nr
KCkpLT53aWR0aCgpOwotICAgIExheW91dFVuaXQgY29tcHV0ZWRXaWR0aFZhbHVlOwogCi0gICAg
aWYgKCF3aWR0aC5pc0F1dG8oKSkKLSAgICAgICAgY29tcHV0ZWRXaWR0aFZhbHVlID0gdmFsdWVG
b3JMZW5ndGgod2lkdGgsIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKLSAgICBlbHNlIGlmICgobGVm
dC5pc0F1dG8oKSAmJiByaWdodC5pc0F1dG8oKSkKLSAgICAgICAgfHwgKGxlZnQuaXNBdXRvKCkg
JiYgIXJpZ2h0LmlzQXV0bygpKQotICAgICAgICB8fCAoIWxlZnQuaXNBdXRvKCkgJiYgcmlnaHQu
aXNBdXRvKCkpKSB7Ci0gICAgICAgIC8vIEFsbCBhdXRvICgjMSksICMxIGFuZCAjMwotICAgICAg
ICBjb21wdXRlZFdpZHRoVmFsdWUgPSBzaHJpbmtUb0ZpdFdpZHRoKGxheW91dENvbnRleHQsIGxh
eW91dEJveCk7Ci0gICAgfSBlbHNlIGlmICghbGVmdC5pc0F1dG8oKSAmJiAhcmlnaHQuaXNBdXRv
KCkpIHsKLSAgICAgICAgLy8gIzUKLSAgICAgICAgYXV0byYgZGlzcGxheUJveCA9ICpsYXlvdXRD
b250ZXh0LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKLQotICAgICAgICBhdXRv
IG1hcmdpbkxlZnQgPSBkaXNwbGF5Qm94Lm1hcmdpbkxlZnQoKTsKLSAgICAgICAgYXV0byBtYXJn
aW5SaWdodCA9IGRpc3BsYXlCb3gubWFyZ2luUmlnaHQoKTsKKyAgICBhdXRvJiBzdHlsZSA9IGxh
eW91dEJveC5zdHlsZSgpOworICAgIGF1dG8mIGRpc3BsYXlCb3ggPSAqbGF5b3V0Q29udGV4dC5k
aXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CisgICAgYXV0byYgY29udGFpbmluZ0Js
b2NrID0gKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsKKyAgICBhdXRvIGNvbnRhaW5pbmdC
bG9ja1dpZHRoID0gbGF5b3V0Q29udGV4dC5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnRhaW5p
bmdCbG9jayktPndpZHRoKCk7CisgICAgYXV0byBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID0gY29u
dGFpbmluZ0Jsb2NrLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpOwogICAgIAotICAg
ICAgICBhdXRvIHBhZGRpbmdMZWZ0ID0gZGlzcGxheUJveC5wYWRkaW5nTGVmdCgpOwotICAgICAg
ICBhdXRvIHBhZGRpbmdSaWdodCA9IGRpc3BsYXlCb3gucGFkZGluZ1JpZ2h0KCk7CisgICAgYXV0
byBsZWZ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsTGVmdCgpLCBjb250
YWluaW5nQmxvY2tXaWR0aCk7CisgICAgYXV0byByaWdodCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1
dG8oc3R5bGUubG9naWNhbFJpZ2h0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKKyAgICBhdXRv
IHdpZHRoID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsV2lkdGgoKSwgY29u
dGFpbmluZ0Jsb2NrV2lkdGgpOworICAgIGF1dG8gbWFyZ2luTGVmdCA9IGNvbXB1dGVkVmFsdWVJ
Zk5vdEF1dG8oc3R5bGUubWFyZ2luTGVmdCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAg
YXV0byBtYXJnaW5SaWdodCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubWFyZ2luUmln
aHQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOworICAgIGF1dG8gcGFkZGluZ0xlZnQgPSBkaXNw
bGF5Qm94LnBhZGRpbmdMZWZ0KCk7CisgICAgYXV0byBwYWRkaW5nUmlnaHQgPSBkaXNwbGF5Qm94
LnBhZGRpbmdSaWdodCgpOworICAgIGF1dG8gYm9yZGVyTGVmdCA9IGRpc3BsYXlCb3guYm9yZGVy
TGVmdCgpOworICAgIGF1dG8gYm9yZGVyUmlnaHQgPSBkaXNwbGF5Qm94LmJvcmRlclJpZ2h0KCk7
CisKKyAgICBpZiAoIWxlZnQgJiYgIXdpZHRoICYmICFyaWdodCkgeworICAgICAgICAvLyBJZiBh
bGwgdGhyZWUgb2YgJ2xlZnQnLCAnd2lkdGgnLCBhbmQgJ3JpZ2h0JyBhcmUgJ2F1dG8nOiBGaXJz
dCBzZXQgYW55ICdhdXRvJyB2YWx1ZXMgZm9yICdtYXJnaW4tbGVmdCcgYW5kICdtYXJnaW4tcmln
aHQnIHRvIDAuCisgICAgICAgIC8vIFRoZW4sIGlmIHRoZSAnZGlyZWN0aW9uJyBwcm9wZXJ0eSBv
ZiB0aGUgZWxlbWVudCBlc3RhYmxpc2hpbmcgdGhlIHN0YXRpYy1wb3NpdGlvbiBjb250YWluaW5n
IGJsb2NrIGlzICdsdHInIHNldCAnbGVmdCcgdG8gdGhlIHN0YXRpYworICAgICAgICAvLyBwb3Np
dGlvbiBhbmQgYXBwbHkgcnVsZSBudW1iZXIgdGhyZWUgYmVsb3c7IG90aGVyd2lzZSwgc2V0ICdy
aWdodCcgdG8gdGhlIHN0YXRpYyBwb3NpdGlvbiBhbmQgYXBwbHkgcnVsZSBudW1iZXIgb25lIGJl
bG93LgorICAgICAgICBtYXJnaW5MZWZ0ID0gbWFyZ2luTGVmdC52YWx1ZV9vcigwKTsKKyAgICAg
ICAgbWFyZ2luUmlnaHQgPSBtYXJnaW5SaWdodC52YWx1ZV9vcigwKTsKKworICAgICAgICBpZiAo
aXNMZWZ0VG9SaWdodERpcmVjdGlvbikKKyAgICAgICAgICAgIGxlZnQgPSBkaXNwbGF5Qm94Lmxl
ZnQoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmlnaHQgPSBkaXNwbGF5Qm94LnJpZ2h0
KCk7CisgICAgfSBlbHNlIGlmIChsZWZ0ICYmIHdpZHRoICYmIHJpZ2h0KSB7CisgICAgICAgIC8v
IElmIG5vbmUgb2YgdGhlIHRocmVlIGlzICdhdXRvJzogSWYgYm90aCAnbWFyZ2luLWxlZnQnIGFu
ZCAnbWFyZ2luLXJpZ2h0JyBhcmUgJ2F1dG8nLCBzb2x2ZSB0aGUgZXF1YXRpb24gdW5kZXIgdGhl
IGV4dHJhIGNvbnN0cmFpbnQgdGhhdCB0aGUgdHdvIG1hcmdpbnMgZ2V0IGVxdWFsIHZhbHVlcywK
KyAgICAgICAgLy8gdW5sZXNzIHRoaXMgd291bGQgbWFrZSB0aGVtIG5lZ2F0aXZlLCBpbiB3aGlj
aCBjYXNlIHdoZW4gZGlyZWN0aW9uIG9mIHRoZSBjb250YWluaW5nIGJsb2NrIGlzICdsdHInICgn
cnRsJyksIHNldCAnbWFyZ2luLWxlZnQnICgnbWFyZ2luLXJpZ2h0JykgdG8gemVybyBhbmQKKyAg
ICAgICAgLy8gc29sdmUgZm9yICdtYXJnaW4tcmlnaHQnICgnbWFyZ2luLWxlZnQnKS4gSWYgb25l
IG9mICdtYXJnaW4tbGVmdCcgb3IgJ21hcmdpbi1yaWdodCcgaXMgJ2F1dG8nLCBzb2x2ZSB0aGUg
ZXF1YXRpb24gZm9yIHRoYXQgdmFsdWUuCisgICAgICAgIC8vIElmIHRoZSB2YWx1ZXMgYXJlIG92
ZXItY29uc3RyYWluZWQsIGlnbm9yZSB0aGUgdmFsdWUgZm9yICdsZWZ0JyAoaW4gY2FzZSB0aGUg
J2RpcmVjdGlvbicgcHJvcGVydHkgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sgaXMgJ3J0bCcpIG9y
ICdyaWdodCcKKyAgICAgICAgLy8gKGluIGNhc2UgJ2RpcmVjdGlvbicgaXMgJ2x0cicpIGFuZCBz
b2x2ZSBmb3IgdGhhdCB2YWx1ZS4KKyAgICAgICAgaWYgKCFtYXJnaW5MZWZ0ICYmICFtYXJnaW5S
aWdodCkgeworICAgICAgICAgICAgYXV0byBtYXJnaW5MZWZ0QW5kUmlnaHQgPSBjb250YWluaW5n
QmxvY2tXaWR0aCAtICgqbGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCAr
IHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKKyAgICAgICAgICAgIGlmICht
YXJnaW5MZWZ0QW5kUmlnaHQgPj0gMCkKKyAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0ID0gbWFy
Z2luUmlnaHQgPSBtYXJnaW5MZWZ0QW5kUmlnaHQgLyAyOyAgCisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbikgeworICAgICAgICAg
ICAgICAgICAgICBtYXJnaW5MZWZ0ID0gTGF5b3V0VW5pdCB7IDAgfTsKKyAgICAgICAgICAgICAg
ICAgICAgbWFyZ2luUmlnaHQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICptYXJn
aW5MZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0
ICsgYm9yZGVyUmlnaHQgKyAqcmlnaHQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0ID0gTGF5b3V0VW5pdCB7IDAgfTsKKyAgICAgICAg
ICAgICAgICAgICAgbWFyZ2luTGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsg
Ym9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVy
UmlnaHQgKyAqbWFyZ2luUmlnaHQgKyAqcmlnaHQpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICghbWFyZ2luTGVmdCkgeworICAgICAgICAgICAg
bWFyZ2luTGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgYm9yZGVyTGVmdCAr
IHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFy
Z2luUmlnaHQgKyAqcmlnaHQpOworICAgICAgICAgICAgLy8gT3ZlcmNvbnN0cmFpbmVkPyBJZ25v
cmUgcmlnaHQgKGxlZnQpLgorICAgICAgICAgICAgaWYgKCptYXJnaW5MZWZ0IDwgMCkgeworICAg
ICAgICAgICAgICAgIGlmIChpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKQorICAgICAgICAgICAgICAg
ICAgICBtYXJnaW5MZWZ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyBib3JkZXJM
ZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCAr
ICptYXJnaW5SaWdodCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBtYXJnaW5MZWZ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoYm9yZGVyTGVmdCArIHBhZGRp
bmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luUmln
aHQgKyAqcmlnaHQpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKCFtYXJnaW5S
aWdodCkgeworICAgICAgICAgICAgbWFyZ2luUmlnaHQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAt
ICgqbGVmdCArICptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRo
ICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqcmlnaHQpOworICAgICAgICAgICAgLy8g
T3ZlcmNvbnN0cmFpbmVkPyBJZ25vcmUgcmlnaHQgKGxlZnQpLgorICAgICAgICAgICAgaWYgKCpt
YXJnaW5SaWdodCA8IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVj
dGlvbikKKyAgICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQgPSBjb250YWluaW5nQmxvY2tX
aWR0aCAtICgqbGVmdCArICptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsg
KndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQgPSBjb250YWluaW5nQmxvY2tXaWR0
aCAtICgqbWFyZ2luTGVmdCArIGJvcmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBh
ZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgKnJpZ2h0KTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE90aGVyd2lzZSwgc2V0ICdhdXRvJyB2YWx1
ZXMgZm9yICdtYXJnaW4tbGVmdCcgYW5kICdtYXJnaW4tcmlnaHQnIHRvIDAsIGFuZCBwaWNrIHRo
ZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBzaXggcnVsZXMgdGhhdCBhcHBsaWVzLgorICAgICAgICBt
YXJnaW5MZWZ0ID0gbWFyZ2luTGVmdC52YWx1ZV9vcigwKTsKKyAgICAgICAgbWFyZ2luUmlnaHQg
PSBtYXJnaW5SaWdodC52YWx1ZV9vcigwKTsKKyAgICB9CiAKLSAgICAgICAgYXV0byBib3JkZXJM
ZWZ0ID0gZGlzcGxheUJveC5ib3JkZXJMZWZ0KCk7Ci0gICAgICAgIGF1dG8gYm9yZGVyUmlnaHQg
PSBkaXNwbGF5Qm94LmJvcmRlclJpZ2h0KCk7CisgICAgQVNTRVJUKG1hcmdpbkxlZnQpOworICAg
IEFTU0VSVChtYXJnaW5SaWdodCk7CiAKLSAgICAgICAgY29tcHV0ZWRXaWR0aFZhbHVlID0gY29u
dGFpbmluZ0Jsb2NrV2lkdGggLSAobGVmdC52YWx1ZSgpICsgbWFyZ2luTGVmdCArIGJvcmRlckxl
ZnQgKyBwYWRkaW5nTGVmdCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJpZ2h0ICsgbWFyZ2luUmln
aHQgKyByaWdodC52YWx1ZSgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyAjMiAjNCAjNiBo
YXZlIHdpZHRoICE9IGF1dG8KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgaWYg
KCFsZWZ0ICYmICF3aWR0aCAmJiByaWdodCkgeworICAgICAgICAvLyAjMQorICAgICAgICB3aWR0
aCA9IHNocmlua1RvRml0V2lkdGgobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKKyAgICAgICAg
bGVmdCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCAr
IHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICArIGJvcmRlclJpZ2h0ICsgKm1h
cmdpblJpZ2h0ICsgKnJpZ2h0KTsKKyAgICB9IGVsc2UgaWYgKCFsZWZ0ICYmICFyaWdodCAmJiB3
aWR0aCkgeworICAgICAgICAvLyAjMgorICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlv
bikgeworICAgICAgICAgICAgbGVmdCA9IGRpc3BsYXlCb3gubGVmdCgpOworICAgICAgICAgICAg
cmlnaHQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArICptYXJnaW5MZWZ0ICsgYm9y
ZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmln
aHQgKyAqbWFyZ2luUmlnaHQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmlnaHQg
PSBkaXNwbGF5Qm94LnJpZ2h0KCk7CisgICAgICAgICAgICBsZWZ0ID0gY29udGFpbmluZ0Jsb2Nr
V2lkdGggLSAoKm1hcmdpbkxlZnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGgg
KyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArICptYXJnaW5SaWdodCArICpyaWdodCk7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKCF3aWR0aCAmJiAhcmlnaHQgJiYgbGVmdCkgeworICAg
ICAgICAvLyAjMworICAgICAgICB3aWR0aCA9IHNocmlua1RvRml0V2lkdGgobGF5b3V0Q29udGV4
dCwgbGF5b3V0Qm94KTsKKyAgICAgICAgcmlnaHQgPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgq
bGVmdCArICptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgKndpZHRoICsg
cGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2luUmlnaHQpOworICAgIH0gZWxzZSBp
ZiAoIWxlZnQgJiYgd2lkdGggJiYgcmlnaHQpIHsKKyAgICAgICAgLy8gIzQKKyAgICAgICAgbGVm
dCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCArIHBh
ZGRpbmdMZWZ0ICsgKndpZHRoICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyAqbWFyZ2lu
UmlnaHQgKyAqcmlnaHQpOworICAgIH0gZWxzZSBpZiAoIXdpZHRoICYmIGxlZnQgJiYgcmlnaHQp
IHsKKyAgICAgICAgLy8gIzUKKyAgICAgICAgd2lkdGggPSBjb250YWluaW5nQmxvY2tXaWR0aCAt
ICgqbGVmdCArICptYXJnaW5MZWZ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgcGFkZGlu
Z1JpZ2h0ICArIGJvcmRlclJpZ2h0ICsgKm1hcmdpblJpZ2h0ICsgKnJpZ2h0KTsKKyAgICB9IGVs
c2UgaWYgKCFyaWdodCAmJiBsZWZ0ICYmIHdpZHRoKSB7CisgICAgICAgIC8vICM2CisgICAgICAg
IHJpZ2h0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAoKmxlZnQgKyAqbWFyZ2luTGVmdCArIGJv
cmRlckxlZnQgKyBwYWRkaW5nTGVmdCArICp3aWR0aCArIHBhZGRpbmdSaWdodCArIGJvcmRlclJp
Z2h0ICsgKm1hcmdpblJpZ2h0KTsKICAgICB9CiAKLSAgICByZXR1cm4gV2lkdGhBbmRNYXJnaW4g
eyBjb21wdXRlZFdpZHRoVmFsdWUsIHsgfSB9OworICAgIEFTU0VSVChsZWZ0KTsKKyAgICBBU1NF
UlQocmlnaHQpOworICAgIEFTU0VSVCh3aWR0aCk7CisgICAgQVNTRVJUKG1hcmdpbkxlZnQpOwor
ICAgIEFTU0VSVChtYXJnaW5SaWdodCk7CisKKyAgICByZXR1cm4gSG9yaXpvbnRhbEdlb21ldHJ5
IHsgKmxlZnQsICpyaWdodCwgKndpZHRoLCB7ICptYXJnaW5MZWZ0LCAqbWFyZ2luUmlnaHQgfSB9
OwogfQogCiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OkhlaWdodEFuZE1hcmdpbiBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSGVpZ2h0QW5kTWFyZ2lu
KExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQpAQCAt
MTk1LDEzICsyODUsMTQgQEAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRBbmRN
YXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkYKICAgICByZXR1cm4gaW5s
aW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKIH0K
IAotRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkV2lkdGhBbmRNYXJnaW4oTGF5b3V0
Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6Okhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KExheW91dENvbnRl
eHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChs
YXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgbGF5b3V0Qm94LnJlcGxhY2VkKCkp
OwogICAgIC8vIDEwLjMuOCBBYnNvbHV0ZWx5IHBvc2l0aW9uZWQsIHJlcGxhY2VkIGVsZW1lbnRz
CiAgICAgLy8KICAgICAvLyBUaGUgdXNlZCB2YWx1ZSBvZiAnd2lkdGgnIGlzIGRldGVybWluZWQg
YXMgZm9yIGlubGluZSByZXBsYWNlZCBlbGVtZW50cy4KLSAgICByZXR1cm4gaW5saW5lUmVwbGFj
ZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOworICAgIGF1dG8gd2lk
dGhBbmRNYXJnaW4gPSBpbmxpbmVSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dENvbnRleHQs
IGxheW91dEJveCk7CisgICAgcmV0dXJuIHsgeyB9LCB7IH0sIHdpZHRoQW5kTWFyZ2luLndpZHRo
LCB3aWR0aEFuZE1hcmdpbi5tYXJnaW4gfTsKIH0KIAogRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGlu
Z05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQs
IGNvbnN0IEJveCYgbGF5b3V0Qm94KQpAQCAtNDQ5LDEzICs1NDAsMTMgQEAgRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpvdXRPZkYKICAgICByZXR1cm4gb3V0T2ZGbG93UmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4o
bGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKIH0KIAotRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpXaWR0aEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxv
d1dpZHRoQW5kTWFyZ2luKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYg
bGF5b3V0Qm94KQorRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpIb3Jpem9udGFsR2VvbWV0
cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0
cnkoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7
CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7CiAKICAgICBp
ZiAoIWxheW91dEJveC5yZXBsYWNlZCgpKQotICAgICAgICByZXR1cm4gb3V0T2ZGbG93Tm9uUmVw
bGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwotICAgIHJldHVy
biBvdXRPZkZsb3dSZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dENvbnRleHQsIGxheW91dEJv
eCk7CisgICAgICAgIHJldHVybiBvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRy
eShsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOworICAgIHJldHVybiBvdXRPZkZsb3dSZXBsYWNl
ZEhvcml6b250YWxHZW9tZXRyeShsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwogfQogCiBGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OkhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmZsb2F0aW5nSGVpZ2h0QW5kTWFyZ2luKExheW91dENvbnRleHQmIGxheW91
dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQo=
</data>
<flag name="review"
          id="360507"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>