<?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>201885</bug_id>
          
          <creation_ts>2019-09-17 15:00:57 -0700</creation_ts>
          <short_desc>[LFC][Out-of-flow] Introduce UsedOutOfFlowHorizontalValues/UsedOutOfFlowVerticalValues</short_desc>
          <delta_ts>2019-09-18 13:22:49 -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>INVALID</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>
          
          <blocked>201795</blocked>
          <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>1571706</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-09-17 15:00:57 -0700</bug_when>
    <thetext>To be able to pass in out-of-flow related constraints.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571710</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-17 15:02:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/55455335&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571711</commentid>
    <comment_count>2</comment_count>
      <attachid>378996</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-09-17 15:04:55 -0700</bug_when>
    <thetext>Created attachment 378996
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1571729</commentid>
    <comment_count>3</comment_count>
      <attachid>379004</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-09-17 16:17:33 -0700</bug_when>
    <thetext>Created attachment 379004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572048</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-09-18 13:22:49 -0700</bug_when>
    <thetext>Went with a different approach instead.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378996</attachid>
            <date>2019-09-17 15:04:55 -0700</date>
            <delta_ts>2019-09-17 16:17:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201885-20190917150454.patch</filename>
            <type>text/plain</type>
            <size>29684</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5OTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWY1YmQ1OGI0MGI0NzAy
MmFiYzY5YjhiOThkYzBiYWMyNjRlMmI5Yi4uNjZiNWNhMGY4NDM4MTk5Mzc4MmYyOTc3ZDc1MDAx
Nzc1ZmMxYzkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTA5LTE3ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bT3V0LW9mLWZsb3dd
IEludHJvZHVjZSBVc2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcy9Vc2VkT3V0T2ZGbG93VmVy
dGljYWxWYWx1ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMTg4NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU0NTUzMzU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFVzZWRPdXRPZkZsb3dI
b3Jpem9udGFsVmFsdWVzIGFuZCBVc2VkT3V0T2ZGbG93VmVydGljYWxWYWx1ZXMgdG8gcGFzcyBp
biBzdGF0aWMgcG9zaXRpb24gY29uc3RyYWludHMgdG8gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpvdXRPZkZsb3cqIGZ1bmN0aW9ucy4KKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlv
biBmb3IgdXNpbmcgY29uc3RyYWludCB2YWx1ZXMgaW5zdGVhZCBvZiBxdWVyeWluZyB0aGUgZGlz
cGxheSB0cmVlIGZvciBjb250YWluaW5nIGJsb2NrIGdlb21ldHJ5IGluZm9ybWF0aW9uLgorICAg
ICAgICBTZWUgd2Via2l0Lm9yZy9iLzIwMTc5NQorCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2Vv
bWV0cnkpOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAq
IGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNl
ZFZlcnRpY2FsR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdl
b21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxv
d1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dWZXJ0aWNhbEdlb21l
dHJ5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpvdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkpOgorICAgICAgICAqIGxheW91
dC9MYXlvdXRVbml0cy5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpVc2VkSG9yaXpvbnRh
bFZhbHVlczo6VXNlZEhvcml6b250YWxWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpVc2VkVmVydGljYWxWYWx1ZXM6OlVzZWRWZXJ0aWNhbFZhbHVlcyk6CisgICAgICAgICogbGF5
b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVByZWZlcnJl
ZFdpZHRoRm9yQ29sdW1ucyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxheW91dFVzaW5nRm9ybWF0dGluZ0NvbnRleHQpOgor
CiAyMDE5LTA5LTE3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W0xGQ10gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZEhlaWdodCogZnVuY3Rp
b25zIG5lZWQgY29udGFpbmluZ0Jsb2NrSGVpZ2h0IG9ubHkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBjZWM4MzRlOTRjZTRmNDA1NzNjYmY5OGM1
NTdkMmI4OTQ2MzkwMmE0Li5lZGNkNTA5MjVlOWI0ZDllOTRlZTZmYjIzZTUxZTMxYmVhYmE5OGQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTY2
LDE2ICs2NiwxNyBAQCBMYXlvdXRTdGF0ZSYgRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dFN0YXRl
KCkgY29uc3QKIAogdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd0hvcml6
b250YWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCkKIHsKLSAgICBhdXRvIGNvbnRhaW5p
bmdCbG9ja1dpZHRoID0gZ2VvbWV0cnlGb3JCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2so
KSkucGFkZGluZ0JveFdpZHRoKCk7Ci0gICAgYXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBn
ZW9tZXRyeUZvckJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5wYWRkaW5nQm94SGVp
Z2h0KCk7CisgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkgPSBnZW9tZXRyeUZvckJv
eCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9j
a1dpZHRoID0gY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveFdpZHRoKCk7CisgICAg
YXV0byB1c2VkVmVydGljYWxWYWx1ZXMgPSBVc2VkT3V0T2ZGbG93VmVydGljYWxWYWx1ZXMgeyBj
b250YWluaW5nQmxvY2tHZW9tZXRyeS5wYWRkaW5nQm94VG9wKCksIGNvbnRhaW5pbmdCbG9ja0dl
b21ldHJ5LnBhZGRpbmdCb3hIZWlnaHQoKSwgeyB9IH07CiAKLSAgICBhdXRvIGNvbXB1dGUgPSBb
Jl0oT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZFdpZHRoKSB7Ci0gICAgICAgIGF1dG8gdXNlZEhv
cml6b250YWxWYWx1ZXMgPSBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IGNvbnRhaW5pbmdCbG9ja1dp
ZHRoLCB1c2VkV2lkdGgsIHsgfSB9OwotICAgICAgICBhdXRvIHVzZWRWZXJ0aWNhbFZhbHVlcyA9
IFVzZWRWZXJ0aWNhbFZhbHVlcyB7IGNvbnRhaW5pbmdCbG9ja0hlaWdodCwgeyB9IH07CisgICAg
YXV0byBjb21wdXRlID0gWyZdKGF1dG8gdXNlZFdpZHRoKSB7CisgICAgICAgIGF1dG8gdXNlZEhv
cml6b250YWxWYWx1ZXMgPSBVc2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcyB7IGNvbnRhaW5p
bmdCbG9ja0dlb21ldHJ5LnBhZGRpbmdCb3hMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoLCB1
c2VkV2lkdGggfTsKICAgICAgICAgcmV0dXJuIGdlb21ldHJ5KCkub3V0T2ZGbG93SG9yaXpvbnRh
bEdlb21ldHJ5KGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVzZWRWZXJ0aWNhbFZh
bHVlcyk7CiAgICAgfTsKIAotICAgIGF1dG8gaG9yaXpvbnRhbEdlb21ldHJ5ID0gY29tcHV0ZSh7
IH0pOworICAgIGF1dG8gaG9yaXpvbnRhbEdlb21ldHJ5ID0gY29tcHV0ZShPcHRpb25hbDxMYXlv
dXRVbml0PiB7IH0pOworCiAgICAgaWYgKGF1dG8gbWF4V2lkdGggPSBnZW9tZXRyeSgpLmNvbXB1
dGVkVmFsdWVJZk5vdEF1dG8obGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbE1heFdpZHRoKCksIGNv
bnRhaW5pbmdCbG9ja1dpZHRoKSkgewogICAgICAgICBhdXRvIG1heEhvcml6b250YWxHZW9tZXRy
eSA9IGNvbXB1dGUobWF4V2lkdGgpOwogICAgICAgICBpZiAoaG9yaXpvbnRhbEdlb21ldHJ5Lndp
ZHRoQW5kTWFyZ2luLndpZHRoID4gbWF4SG9yaXpvbnRhbEdlb21ldHJ5LndpZHRoQW5kTWFyZ2lu
LndpZHRoKQpAQCAtOTcsMjcgKzk4LDI1IEBAIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gpCiAKIHZv
aWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNv
bnN0IEJveCYgbGF5b3V0Qm94KQogewotICAgIGF1dG8gY29tcHV0ZSA9IFsmXShhdXRvIHVzZWRI
b3Jpem9udGFsVmFsdWVzLCBhdXRvIHVzZWRWZXJ0aWNhbFZhbHVlcykgewotICAgICAgICByZXR1
cm4gZ2VvbWV0cnkoKS5vdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGxheW91dEJveCwgdXNlZEhv
cml6b250YWxWYWx1ZXMsIHVzZWRWZXJ0aWNhbFZhbHVlcyk7Ci0gICAgfTsKICAgICBhdXRvJiBj
b250YWluaW5nQmxvY2tHZW9tZXRyeSA9IGdlb21ldHJ5Rm9yQm94KCpsYXlvdXRCb3guY29udGFp
bmluZ0Jsb2NrKCkpOwogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gY29udGFpbmlu
Z0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveEhlaWdodCgpOwotICAgIGF1dG8gY29udGFpbmluZ0Js
b2NrV2lkdGggPSBjb250YWluaW5nQmxvY2tHZW9tZXRyeS5wYWRkaW5nQm94SGVpZ2h0KCk7Cisg
ICAgYXV0byB1c2VkSG9yaXpvbnRhbFZhbHVlcyA9IFVzZWRPdXRPZkZsb3dIb3Jpem9udGFsVmFs
dWVzIHsgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveExlZnQoKSwgY29udGFpbmlu
Z0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveFdpZHRoKCksIHsgfSB9OworCisgICAgYXV0byBjb21w
dXRlID0gWyZdKGF1dG8gdXNlZEhlaWdodCkgeworICAgICAgICBhdXRvIHVzZWRWZXJ0aWNhbFZh
bHVlcyA9IFVzZWRPdXRPZkZsb3dWZXJ0aWNhbFZhbHVlcyB7IGNvbnRhaW5pbmdCbG9ja0dlb21l
dHJ5LnBhZGRpbmdCb3hUb3AoKSwgY29udGFpbmluZ0Jsb2NrSGVpZ2h0LCB1c2VkSGVpZ2h0IH07
CisgICAgICAgIHJldHVybiBnZW9tZXRyeSgpLm91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkobGF5
b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZlcnRpY2FsVmFsdWVzKTsKKyAgICB9
OwogCi0gICAgYXV0byB1c2VkVmVydGljYWxWYWx1ZXNGb3JIZWlnaHQgPSBVc2VkVmVydGljYWxW
YWx1ZXMgeyBjb250YWluaW5nQmxvY2tIZWlnaHQsIHsgfSB9OwotICAgIGF1dG8gdXNlZEhvcml6
b250YWxWYWx1ZXMgPSBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IGNvbnRhaW5pbmdCbG9ja1dpZHRo
IH07CisgICAgYXV0byB2ZXJ0aWNhbEdlb21ldHJ5ID0gY29tcHV0ZShPcHRpb25hbDxMYXlvdXRV
bml0PiB7IH0pOwogCi0gICAgYXV0byB2ZXJ0aWNhbEdlb21ldHJ5ID0gY29tcHV0ZSh1c2VkSG9y
aXpvbnRhbFZhbHVlcywgdXNlZFZlcnRpY2FsVmFsdWVzRm9ySGVpZ2h0KTsKICAgICBpZiAoYXV0
byBtYXhIZWlnaHQgPSBnZW9tZXRyeSgpLmNvbXB1dGVkTWF4SGVpZ2h0KGxheW91dEJveCwgY29u
dGFpbmluZ0Jsb2NrSGVpZ2h0KSkgewotICAgICAgICBhdXRvIHVzZWRWYWx1ZXNGb3JNYXhIZWln
aHQgPSBVc2VkVmVydGljYWxWYWx1ZXMgeyBjb250YWluaW5nQmxvY2tIZWlnaHQsIG1heEhlaWdo
dCB9OwotICAgICAgICBhdXRvIG1heFZlcnRpY2FsR2VvbWV0cnkgPSBjb21wdXRlKHVzZWRIb3Jp
em9udGFsVmFsdWVzLCB1c2VkVmFsdWVzRm9yTWF4SGVpZ2h0KTsKKyAgICAgICAgYXV0byBtYXhW
ZXJ0aWNhbEdlb21ldHJ5ID0gY29tcHV0ZShtYXhIZWlnaHQpOwogICAgICAgICBpZiAodmVydGlj
YWxHZW9tZXRyeS5oZWlnaHRBbmRNYXJnaW4uaGVpZ2h0ID4gbWF4VmVydGljYWxHZW9tZXRyeS5o
ZWlnaHRBbmRNYXJnaW4uaGVpZ2h0KQogICAgICAgICAgICAgdmVydGljYWxHZW9tZXRyeSA9IG1h
eFZlcnRpY2FsR2VvbWV0cnk7CiAgICAgfQogCiAgICAgaWYgKGF1dG8gbWluSGVpZ2h0ID0gZ2Vv
bWV0cnkoKS5jb21wdXRlZE1pbkhlaWdodChsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9ja0hlaWdo
dCkpIHsKLSAgICAgICAgYXV0byB1c2VkVmFsdWVzRm9yTWluSGVpZ2h0ID0gVXNlZFZlcnRpY2Fs
VmFsdWVzIHsgY29udGFpbmluZ0Jsb2NrSGVpZ2h0LCBtaW5IZWlnaHQgfTsKLSAgICAgICAgYXV0
byBtaW5WZXJ0aWNhbEdlb21ldHJ5ID0gY29tcHV0ZSh1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNl
ZFZhbHVlc0Zvck1pbkhlaWdodCk7CisgICAgICAgIGF1dG8gbWluVmVydGljYWxHZW9tZXRyeSA9
IGNvbXB1dGUobWluSGVpZ2h0KTsKICAgICAgICAgaWYgKHZlcnRpY2FsR2VvbWV0cnkuaGVpZ2h0
QW5kTWFyZ2luLmhlaWdodCA8IG1pblZlcnRpY2FsR2VvbWV0cnkuaGVpZ2h0QW5kTWFyZ2luLmhl
aWdodCkKICAgICAgICAgICAgIHZlcnRpY2FsR2VvbWV0cnkgPSBtaW5WZXJ0aWNhbEdlb21ldHJ5
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXgg
ZGZlYWZhYTc0ZjNjZTA5OGEyZmFkZWI5ZjIwNmU5OTBmYTI0ODQwMi4uNTlhN2JjMTI0ZGI4YzFh
NTUyYTAzODgxZThiODBhYzJmNDA5M2E2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1h
dHRpbmdDb250ZXh0LmgKQEAgLTkzLDggKzkzLDggQEAgcHJvdGVjdGVkOgogICAgIC8vIFRoaXMg
Y2xhc3MgaW1wbGVtZW50cyBnZW5lcmljIHBvc2l0aW9uaW5nIGFuZCBzaXppbmcuCiAgICAgY2xh
c3MgR2VvbWV0cnkgewogICAgIHB1YmxpYzoKLSAgICAgICAgVmVydGljYWxHZW9tZXRyeSBvdXRP
ZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFsdWVzLCBV
c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0OwotICAgICAgICBIb3Jpem9udGFsR2VvbWV0cnkgb3V0
T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFsdWVz
LCBVc2VkVmVydGljYWxWYWx1ZXMpOworICAgICAgICBWZXJ0aWNhbEdlb21ldHJ5IG91dE9mRmxv
d1ZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiwgVXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1
ZXMsIFVzZWRPdXRPZkZsb3dWZXJ0aWNhbFZhbHVlcykgY29uc3Q7CisgICAgICAgIEhvcml6b250
YWxHZW9tZXRyeSBvdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQm94JiwgVXNlZE91
dE9mRmxvd0hvcml6b250YWxWYWx1ZXMsIFVzZWRPdXRPZkZsb3dWZXJ0aWNhbFZhbHVlcyk7CiAK
ICAgICAgICAgSGVpZ2h0QW5kTWFyZ2luIGZsb2F0aW5nSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJv
eCYsIFVzZWRIb3Jpem9udGFsVmFsdWVzLCBVc2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0OwogICAg
ICAgICBXaWR0aEFuZE1hcmdpbiBmbG9hdGluZ1dpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIFVz
ZWRIb3Jpem9udGFsVmFsdWVzKTsKQEAgLTEzNSwxMSArMTM1LDExIEBAIHByb3RlY3RlZDoKICAg
ICAgICAgY29uc3QgRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9mb3JtYXR0aW5nQ29udGV4dDsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
VmVydGljYWxHZW9tZXRyeSBvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3Qg
Qm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcykgY29uc3Q7Ci0g
ICAgICAgIEhvcml6b250YWxHZW9tZXRyeSBvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9t
ZXRyeShjb25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVz
KSBjb25zdDsKKyAgICAgICAgVmVydGljYWxHZW9tZXRyeSBvdXRPZkZsb3dSZXBsYWNlZFZlcnRp
Y2FsR2VvbWV0cnkoY29uc3QgQm94JiwgVXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMsIFVz
ZWRPdXRPZkZsb3dWZXJ0aWNhbFZhbHVlcykgY29uc3Q7CisgICAgICAgIEhvcml6b250YWxHZW9t
ZXRyeSBvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmLCBVc2Vk
T3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcywgVXNlZE91dE9mRmxvd1ZlcnRpY2FsVmFsdWVzKSBj
b25zdDsKIAotICAgICAgICBWZXJ0aWNhbEdlb21ldHJ5IG91dE9mRmxvd05vblJlcGxhY2VkVmVy
dGljYWxHZW9tZXRyeShjb25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRp
Y2FsVmFsdWVzKSBjb25zdDsKLSAgICAgICAgSG9yaXpvbnRhbEdlb21ldHJ5IG91dE9mRmxvd05v
blJlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFs
dWVzKTsKKyAgICAgICAgVmVydGljYWxHZW9tZXRyeSBvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRp
Y2FsR2VvbWV0cnkoY29uc3QgQm94JiwgVXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMsIFVz
ZWRPdXRPZkZsb3dWZXJ0aWNhbFZhbHVlcykgY29uc3Q7CisgICAgICAgIEhvcml6b250YWxHZW9t
ZXRyeSBvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmLCBV
c2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcyk7CiAKICAgICAgICAgSGVpZ2h0QW5kTWFyZ2lu
IGZsb2F0aW5nUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiwgVXNlZEhvcml6b250
YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcykgY29uc3Q7CiAgICAgICAgIFdpZHRoQW5kTWFy
Z2luIGZsb2F0aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBVc2VkSG9yaXpv
bnRhbFZhbHVlcykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggODk4ODRkNmEzNmU1ZjNiNTIzNzRlM2U4OTg0
ODZlMWM0YTIzZTQ3Zi4uYWU2YWZkYTc0OTEzM2FlODAxOTM3YzMwYmY3YTM0ZTJjN2MzNjRjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcApAQCAtMjY4LDEwICsyNjgsOSBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6c2hyaW5rVG9GaXRXaWR0aChjb25zdCBCb3gmIGZvcm1hdHRpbmdSbwogICAg
IHJldHVybiBzdGQ6Om1pbihzdGQ6Om1heChpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzLm1pbmlt
dW0sIGF2YWlsYWJsZVdpZHRoKSwgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cy5tYXhpbXVtKTsK
IH0KIAotVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9m
Rmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgVXNl
ZEhvcml6b250YWxWYWx1ZXMgdXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVl
cyB1c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0CitWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNv
bnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcyB1c2VkT3V0
T2ZGbG93SG9yaXpvbnRhbFZhbHVlcywgVXNlZE91dE9mRmxvd1ZlcnRpY2FsVmFsdWVzIHVzZWRP
dXRPZkZsb3dWZXJ0aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94Lmlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3gucmVwbGFjZWQoKSk7Ci0gICAgQVNT
RVJUKHVzZWRWZXJ0aWNhbFZhbHVlcy5jb250YWluaW5nQmxvY2tIZWlnaHQpOwogCiAgICAgLy8g
MTAuNi40IEFic29sdXRlbHkgcG9zaXRpb25lZCwgbm9uLXJlcGxhY2VkIGVsZW1lbnRzCiAgICAg
Ly8KQEAgLTMwMCwxMyArMjk5LDEzIEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0CiAgICAgYXV0
byYgZm9ybWF0dGluZ0NvbnRleHQgPSB0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgpOwogICAgIGF1
dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBm
b3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwotICAgIGF1dG8gY29u
dGFpbmluZ0Jsb2NrSGVpZ2h0ID0gKnVzZWRWZXJ0aWNhbFZhbHVlcy5jb250YWluaW5nQmxvY2tI
ZWlnaHQ7Ci0gICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IHVzZWRIb3Jpem9udGFsVmFs
dWVzLmNvbnRhaW5pbmdCbG9ja1dpZHRoOworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0
ID0gdXNlZE91dE9mRmxvd1ZlcnRpY2FsVmFsdWVzLmNvbnRhaW5pbmdCbG9ja0hlaWdodDsKKyAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gdXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1
ZXMuY29udGFpbmluZ0Jsb2NrV2lkdGg7CiAKICAgICBhdXRvIHRvcCA9IGNvbXB1dGVkVmFsdWVJ
Zk5vdEF1dG8oc3R5bGUubG9naWNhbFRvcCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAg
YXV0byBib3R0b20gPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxCb3R0b20o
KSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgIGF1dG8gaGVpZ2h0ID0gdXNlZFZlcnRpY2Fs
VmFsdWVzLmhlaWdodCA/IHVzZWRWZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1
dGVkSGVpZ2h0VmFsdWUobGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpOb3JtYWwsIGNvbnRhaW5pbmdC
bG9ja0hlaWdodCk7Ci0gICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gR2VvbWV0cnk6
OmNvbXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcyk7
CisgICAgYXV0byBoZWlnaHQgPSB1c2VkT3V0T2ZGbG93VmVydGljYWxWYWx1ZXMuaGVpZ2h0ID8g
dXNlZE91dE9mRmxvd1ZlcnRpY2FsVmFsdWVzLmhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRIZWln
aHRWYWx1ZShsYXlvdXRCb3gsIEhlaWdodFR5cGU6Ok5vcm1hbCwgY29udGFpbmluZ0Jsb2NrSGVp
Z2h0KTsKKyAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgdXNlZE91
dE9mRmxvd0hvcml6b250YWxWYWx1ZXMuY29udGFpbmluZ0Jsb2NrV2lkdGggfSk7CiAgICAgVXNl
ZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgdXNlZFZlcnRpY2FsTWFyZ2luOyAK
ICAgICBhdXRvIHBhZGRpbmdUb3AgPSBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigw
KTsKICAgICBhdXRvIHBhZGRpbmdCb3R0b20gPSBib3hHZW9tZXRyeS5wYWRkaW5nQm90dG9tKCku
dmFsdWVPcigwKTsKQEAgLTM4Myw3ICszODIsNyBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldAog
CiAgICAgLy8gRm9yIG91dC1vZi1mbG93IGVsZW1lbnRzIHRoZSBjb250YWluaW5nIGJsb2NrIGlz
IGZvcm1lZCBieSB0aGUgcGFkZGluZyBlZGdlIG9mIHRoZSBhbmNlc3Rvci4KICAgICAvLyBBdCB0
aGlzIHBvaW50IHRoZSBwb3NpdGlvbmVkIHZhbHVlIGlzIGluIHRoZSBjb29yZGluYXRlIHN5c3Rl
bSBvZiB0aGUgcGFkZGluZyBib3guIExldCdzIGNvbnZlcnQgaXQgdG8gYm9yZGVyIGJveCBjb29y
ZGluYXRlIHN5c3RlbS4KLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVk
Z2UgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveCgqbGF5b3V0Qm94LmNvbnRhaW5p
bmdCbG9jaygpKS5wYWRkaW5nQm94VG9wKCk7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tQYWRk
aW5nVmVydGljYWxFZGdlID0gdXNlZE91dE9mRmxvd1ZlcnRpY2FsVmFsdWVzLnN0YXRpY1RvcFBv
c2l0aW9uOwogICAgICp0b3AgKz0gY29udGFpbmluZ0Jsb2NrUGFkZGluZ1ZlcnRpY2FsRWRnZTsK
ICAgICAqYm90dG9tICs9IGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2U7CiAKQEAg
LTM5MSw3ICszOTAsNyBAQCBWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldAogICAgIHJldHVybiB7ICp0
b3AsICpib3R0b20sIHsgY29udGVudEhlaWdodCgpLCB1c2VkVmVydGljYWxNYXJnaW4gfSB9Owog
fQogCi1Ib3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRP
ZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwg
VXNlZEhvcml6b250YWxWYWx1ZXMgdXNlZEhvcml6b250YWxWYWx1ZXMpCitIb3Jpem9udGFsR2Vv
bWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhv
cml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZE91dE9mRmxvd0hvcml6
b250YWxWYWx1ZXMgdXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMpCiB7CiAgICAgQVNTRVJU
KGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiAhbGF5b3V0Qm94LnJlcGxhY2Vk
KCkpOwogICAgIApAQCAtNDIxLDE2ICs0MjAsMTUgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2UK
ICAgICAvLyA1LiAnd2lkdGgnIGlzICdhdXRvJywgJ2xlZnQnIGFuZCAncmlnaHQnIGFyZSBub3Qg
J2F1dG8nLCB0aGVuIHNvbHZlIGZvciAnd2lkdGgnCiAgICAgLy8gNi4gJ3JpZ2h0JyBpcyAnYXV0
bycsICdsZWZ0JyBhbmQgJ3dpZHRoJyBhcmUgbm90ICdhdXRvJywgdGhlbiBzb2x2ZSBmb3IgJ3Jp
Z2h0JwogCi0gICAgYXV0byYgZm9ybWF0dGluZ0NvbnRleHQgPSB0aGlzLT5mb3JtYXR0aW5nQ29u
dGV4dCgpOwogICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7Ci0gICAgYXV0byYg
Ym94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gp
OwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5j
b250YWluaW5nQmxvY2tXaWR0aDsKKyAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdD
b250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKKyAgICBhdXRvIGNvbnRhaW5pbmdC
bG9ja1dpZHRoID0gdXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMuY29udGFpbmluZ0Jsb2Nr
V2lkdGg7CiAgICAgYXV0byBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID0gbGF5b3V0Qm94LmNvbnRh
aW5pbmdCbG9jaygpLT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKICAgICAKICAg
ICBhdXRvIGxlZnQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxMZWZ0KCks
IGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIHJpZ2h0ID0gY29tcHV0ZWRWYWx1ZUlm
Tm90QXV0byhzdHlsZS5sb2dpY2FsUmlnaHQoKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAg
IGF1dG8gd2lkdGggPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHVzZWRIb3Jpem9udGFsVmFsdWVz
LndpZHRoID8gTGVuZ3RoIHsgdXNlZEhvcml6b250YWxWYWx1ZXMud2lkdGgudmFsdWUoKSwgRml4
ZWQgfSA6IHN0eWxlLmxvZ2ljYWxXaWR0aCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAg
YXV0byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9u
dGFsTWFyZ2luKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMpOworICAgIGF1dG8gd2lk
dGggPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHVzZWRPdXRPZkZsb3dIb3Jpem9udGFsVmFsdWVz
LndpZHRoID8gTGVuZ3RoIHsgdXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMud2lkdGgudmFs
dWUoKSwgRml4ZWQgfSA6IHN0eWxlLmxvZ2ljYWxXaWR0aCgpLCBjb250YWluaW5nQmxvY2tXaWR0
aCk7CisgICAgYXV0byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0
ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgeyB1c2Vk
T3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcy5jb250YWluaW5nQmxvY2tXaWR0aCB9KTsKICAgICBV
c2VkSG9yaXpvbnRhbE1hcmdpbiB1c2VkSG9yaXpvbnRhbE1hcmdpbjsKICAgICBhdXRvIHBhZGRp
bmdMZWZ0ID0gYm94R2VvbWV0cnkucGFkZGluZ0xlZnQoKS52YWx1ZU9yKDApOwogICAgIGF1dG8g
cGFkZGluZ1JpZ2h0ID0gYm94R2VvbWV0cnkucGFkZGluZ1JpZ2h0KCkudmFsdWVPcigwKTsKQEAg
LTQ5NSw3ICs0OTMsNyBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZQogICAgICAgICAvLyBDYWxj
dWxhdGUgdGhlIGF2YWlsYWJsZSB3aWR0aCBieSBzb2x2aW5nIGZvciAnd2lkdGgnIGFmdGVyIHNl
dHRpbmcgJ2xlZnQnIChpbiBjYXNlIDEpIHRvIDAKICAgICAgICAgbGVmdCA9IExheW91dFVuaXQg
eyAwIH07CiAgICAgICAgIGF1dG8gYXZhaWxhYmxlV2lkdGggPSBjb250YWluaW5nQmxvY2tXaWR0
aCAtICgqbGVmdCArIHVzZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0ICsgYm9yZGVyTGVmdCArIHBh
ZGRpbmdMZWZ0ICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyB1c2VkSG9yaXpvbnRhbE1h
cmdpbi5lbmQgKyAqcmlnaHQpOwotICAgICAgICB3aWR0aCA9IHNocmlua1RvRml0V2lkdGgobGF5
b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IGF2YWlsYWJsZVdpZHRoLCB1c2VkSG9yaXpv
bnRhbFZhbHVlcy53aWR0aCwgdXNlZEhvcml6b250YWxWYWx1ZXMubWFyZ2luIH0pOworICAgICAg
ICB3aWR0aCA9IHNocmlua1RvRml0V2lkdGgobGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVl
cyB7IGF2YWlsYWJsZVdpZHRoLCB1c2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcy53aWR0aCwg
eyB9IH0pOwogICAgICAgICBsZWZ0ID0gY29udGFpbmluZ0Jsb2NrV2lkdGggLSAodXNlZEhvcml6
b250YWxNYXJnaW4uc3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBw
YWRkaW5nUmlnaHQgICsgYm9yZGVyUmlnaHQgKyB1c2VkSG9yaXpvbnRhbE1hcmdpbi5lbmQgKyAq
cmlnaHQpOwogICAgIH0gZWxzZSBpZiAoIWxlZnQgJiYgIXJpZ2h0ICYmIHdpZHRoKSB7CiAgICAg
ICAgIC8vICMyCkBAIC01MTIsNyArNTEwLDcgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2UKICAg
ICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBhdmFpbGFibGUgd2lkdGggYnkgc29sdmluZyBmb3IgJ3dp
ZHRoJyBhZnRlciBzZXR0aW5nICdyaWdodCcgKGluIGNhc2UgMykgdG8gMAogICAgICAgICByaWdo
dCA9IExheW91dFVuaXQgeyAwIH07CiAgICAgICAgIGF1dG8gYXZhaWxhYmxlV2lkdGggPSBjb250
YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArIHVzZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0ICsg
Ym9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmlnaHQgKyB1
c2VkSG9yaXpvbnRhbE1hcmdpbi5lbmQgKyAqcmlnaHQpOwotICAgICAgICB3aWR0aCA9IHNocmlu
a1RvRml0V2lkdGgobGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IGF2YWlsYWJsZVdp
ZHRoLCB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCwgdXNlZEhvcml6b250YWxWYWx1ZXMubWFy
Z2luIH0pOworICAgICAgICB3aWR0aCA9IHNocmlua1RvRml0V2lkdGgobGF5b3V0Qm94LCBVc2Vk
SG9yaXpvbnRhbFZhbHVlcyB7IGF2YWlsYWJsZVdpZHRoLCB1c2VkT3V0T2ZGbG93SG9yaXpvbnRh
bFZhbHVlcy53aWR0aCwgeyB9IH0pOwogICAgICAgICByaWdodCA9IGNvbnRhaW5pbmdCbG9ja1dp
ZHRoIC0gKCpsZWZ0ICsgdXNlZEhvcml6b250YWxNYXJnaW4uc3RhcnQgKyBib3JkZXJMZWZ0ICsg
cGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgKyBib3JkZXJSaWdodCArIHVzZWRI
b3Jpem9udGFsTWFyZ2luLmVuZCk7CiAgICAgfSBlbHNlIGlmICghbGVmdCAmJiB3aWR0aCAmJiBy
aWdodCkgewogICAgICAgICAvLyAjNApAQCAtNTMxLDcgKzUyOSw3IEBAIEhvcml6b250YWxHZW9t
ZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9y
aXpvbnRhbEdlCiAKICAgICAvLyBGb3Igb3V0LW9mLWZsb3cgZWxlbWVudHMgdGhlIGNvbnRhaW5p
bmcgYmxvY2sgaXMgZm9ybWVkIGJ5IHRoZSBwYWRkaW5nIGVkZ2Ugb2YgdGhlIGFuY2VzdG9yLgog
ICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHBvc2l0aW9uZWQgdmFsdWUgaXMgaW4gdGhlIGNvb3Jk
aW5hdGUgc3lzdGVtIG9mIHRoZSBwYWRkaW5nIGJveC4gTGV0J3MgY29udmVydCBpdCB0byBib3Jk
ZXIgYm94IGNvb3JkaW5hdGUgc3lzdGVtLgotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrUGFkZGlu
Z1ZlcnRpY2FsRWRnZSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KCpsYXlvdXRC
b3guY29udGFpbmluZ0Jsb2NrKCkpLnBhZGRpbmdCb3hMZWZ0KCk7CisgICAgYXV0byBjb250YWlu
aW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdlID0gdXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1
ZXMuc3RhdGljTGVmdFBvc2l0aW9uOwogICAgICpsZWZ0ICs9IGNvbnRhaW5pbmdCbG9ja1BhZGRp
bmdWZXJ0aWNhbEVkZ2U7CiAgICAgKnJpZ2h0ICs9IGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0
aWNhbEVkZ2U7CiAKQEAgLTUzOSwxMCArNTM3LDkgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2UK
ICAgICByZXR1cm4geyAqbGVmdCwgKnJpZ2h0LCB7IGNvbnRlbnRXaWR0aCgpLCB1c2VkSG9yaXpv
bnRhbE1hcmdpbiwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luIH0gfTsKIH0KIAotVmVydGljYWxH
ZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkVmVy
dGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMg
dXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcyB1c2VkVmVydGljYWxWYWx1
ZXMpIGNvbnN0CitWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBV
c2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcyB1c2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVl
cywgVXNlZE91dE9mRmxvd1ZlcnRpY2FsVmFsdWVzIHVzZWRPdXRPZkZsb3dWZXJ0aWNhbFZhbHVl
cykgY29uc3QKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
ICYmIGxheW91dEJveC5yZXBsYWNlZCgpKTsKLSAgICBBU1NFUlQodXNlZFZlcnRpY2FsVmFsdWVz
LmNvbnRhaW5pbmdCbG9ja0hlaWdodCk7CiAKICAgICAvLyAxMC42LjUgQWJzb2x1dGVseSBwb3Np
dGlvbmVkLCByZXBsYWNlZCBlbGVtZW50cwogICAgIC8vCkBAIC01NTQsMTggKzU1MSwxNyBAQCBW
ZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVw
bGFjZWRWZXJ0aWNhbEdlb21ldHJ5KAogICAgIC8vIDQuIElmIGF0IHRoaXMgcG9pbnQgdGhlcmUg
aXMgb25seSBvbmUgJ2F1dG8nIGxlZnQsIHNvbHZlIHRoZSBlcXVhdGlvbiBmb3IgdGhhdCB2YWx1
ZS4KICAgICAvLyA1LiBJZiBhdCB0aGlzIHBvaW50IHRoZSB2YWx1ZXMgYXJlIG92ZXItY29uc3Ry
YWluZWQsIGlnbm9yZSB0aGUgdmFsdWUgZm9yICdib3R0b20nIGFuZCBzb2x2ZSBmb3IgdGhhdCB2
YWx1ZS4KIAotICAgIGF1dG8mIGZvcm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGluZ0Nv
bnRleHQoKTsKICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwotICAgIGF1dG8m
IGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94
KTsKLSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9ICp1c2VkVmVydGljYWxWYWx1ZXMu
Y29udGFpbmluZ0Jsb2NrSGVpZ2h0OwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSB1
c2VkSG9yaXpvbnRhbFZhbHVlcy5jb250YWluaW5nQmxvY2tXaWR0aDsKKyAgICBhdXRvJiBib3hH
ZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsK
KyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja0hlaWdodCA9IHVzZWRPdXRPZkZsb3dWZXJ0aWNhbFZh
bHVlcy5jb250YWluaW5nQmxvY2tIZWlnaHQ7CisgICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0
aCA9IHVzZWRPdXRPZkZsb3dIb3Jpem9udGFsVmFsdWVzLmNvbnRhaW5pbmdCbG9ja1dpZHRoOwog
CiAgICAgYXV0byB0b3AgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxUb3Ao
KSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwogICAgIGF1dG8gYm90dG9tID0gY29tcHV0ZWRWYWx1
ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsQm90dG9tKCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsK
LSAgICBhdXRvIGhlaWdodCA9IGlubGluZVJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2luKGxheW91dEJv
eCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVzZWRWZXJ0aWNhbFZhbHVlcykuaGVpZ2h0OwotICAg
IGF1dG8gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRlZFZlcnRpY2Fs
TWFyZ2luKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMpOwotICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IHVzZWRNYXJnaW5CZWZvcmUgPSBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmJlZm9y
ZTsKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkTWFyZ2luQWZ0ZXIgPSBjb21wdXRlZFZl
cnRpY2FsTWFyZ2luLmFmdGVyOworICAgIGF1dG8gaGVpZ2h0ID0gaW5saW5lUmVwbGFjZWRIZWln
aHRBbmRNYXJnaW4obGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IHVzZWRPdXRPZkZs
b3dIb3Jpem9udGFsVmFsdWVzIH0sIFVzZWRWZXJ0aWNhbFZhbHVlcyB7IHVzZWRPdXRPZkZsb3dW
ZXJ0aWNhbFZhbHVlcyB9KS5oZWlnaHQ7CisgICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2lu
ID0gR2VvbWV0cnk6OmNvbXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0Qm94LCBVc2VkSG9yaXpv
bnRhbFZhbHVlcyB7IHVzZWRPdXRPZkZsb3dIb3Jpem9udGFsVmFsdWVzIH0pOworICAgIGF1dG8g
dXNlZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlOworICAgIGF1
dG8gdXNlZE1hcmdpbkFmdGVyID0gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5hZnRlcjsKICAgICBh
dXRvIHBhZGRpbmdUb3AgPSBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKICAg
ICBhdXRvIHBhZGRpbmdCb3R0b20gPSBib3hHZW9tZXRyeS5wYWRkaW5nQm90dG9tKCkudmFsdWVP
cigwKTsKICAgICBhdXRvIGJvcmRlclRvcCA9IGJveEdlb21ldHJ5LmJvcmRlclRvcCgpOwpAQCAt
NjA5LDcgKzYwNSw3IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoCiAKICAgICAvLyBGb3Igb3V0
LW9mLWZsb3cgZWxlbWVudHMgdGhlIGNvbnRhaW5pbmcgYmxvY2sgaXMgZm9ybWVkIGJ5IHRoZSBw
YWRkaW5nIGVkZ2Ugb2YgdGhlIGFuY2VzdG9yLgogICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHBv
c2l0aW9uZWQgdmFsdWUgaXMgaW4gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIG9mIHRoZSBwYWRkaW5n
IGJveC4gTGV0J3MgY29udmVydCBpdCB0byBib3JkZXIgYm94IGNvb3JkaW5hdGUgc3lzdGVtLgot
ICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrUGFkZGluZ1ZlcnRpY2FsRWRnZSA9IGZvcm1hdHRpbmdD
b250ZXh0Lmdlb21ldHJ5Rm9yQm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLnBhZGRp
bmdCb3hUb3AoKTsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2Ug
PSB1c2VkT3V0T2ZGbG93VmVydGljYWxWYWx1ZXMuc3RhdGljVG9wUG9zaXRpb247CiAgICAgKnRv
cCArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdlOwogICAgICpib3R0b20gKz0g
Y29udGFpbmluZ0Jsb2NrUGFkZGluZ1ZlcnRpY2FsRWRnZTsKIApAQCAtNjIxLDcgKzYxNyw3IEBA
IFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dS
ZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoCiAgICAgcmV0dXJuIHsgKnRvcCwgKmJvdHRvbSwgeyBo
ZWlnaHQsIHsgKnVzZWRNYXJnaW5CZWZvcmUsICp1c2VkTWFyZ2luQWZ0ZXIgfSB9IH07CiB9CiAK
LUhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxv
d1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkSG9y
aXpvbnRhbFZhbHVlcyB1c2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVzIHVz
ZWRWZXJ0aWNhbFZhbHVlcykgY29uc3QKK0hvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBVc2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcyB1c2VkT3V0T2ZG
bG93SG9yaXpvbnRhbFZhbHVlcywgVXNlZE91dE9mRmxvd1ZlcnRpY2FsVmFsdWVzIHVzZWRPdXRP
ZkZsb3dWZXJ0aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzT3V0
T2ZGbG93UG9zaXRpb25lZCgpICYmIGxheW91dEJveC5yZXBsYWNlZCgpKTsKIApAQCAtNjM5LDE4
ICs2MzUsMTcgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6b3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2VvbWUKICAgICAvLyA1LiBJZiBhdCB0aGlz
IHBvaW50IHRoZSB2YWx1ZXMgYXJlIG92ZXItY29uc3RyYWluZWQsIGlnbm9yZSB0aGUgdmFsdWUg
Zm9yIGVpdGhlciAnbGVmdCcgKGluIGNhc2UgdGhlICdkaXJlY3Rpb24nIHByb3BlcnR5IG9mIHRo
ZSBjb250YWluaW5nIGJsb2NrIGlzICdydGwnKSBvcgogICAgIC8vICAgJ3JpZ2h0JyAoaW4gY2Fz
ZSAnZGlyZWN0aW9uJyBpcyAnbHRyJykgYW5kIHNvbHZlIGZvciB0aGF0IHZhbHVlLgogCi0gICAg
YXV0byYgZm9ybWF0dGluZ0NvbnRleHQgPSB0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgpOwogICAg
IGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7Ci0gICAgYXV0byYgYm94R2VvbWV0cnkg
PSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwotICAgIGF1dG8g
Y29udGFpbmluZ0Jsb2NrV2lkdGggPSB1c2VkSG9yaXpvbnRhbFZhbHVlcy5jb250YWluaW5nQmxv
Y2tXaWR0aDsKKyAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2Vv
bWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0g
dXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMuY29udGFpbmluZ0Jsb2NrV2lkdGg7CiAgICAg
YXV0byBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygp
LT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKIAogICAgIGF1dG8gbGVmdCA9IGNv
bXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbExlZnQoKSwgY29udGFpbmluZ0Jsb2Nr
V2lkdGgpOwogICAgIGF1dG8gcmlnaHQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxv
Z2ljYWxSaWdodCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBjb21wdXRlZEhv
cml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91
dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMpOworICAgIGF1dG8gY29tcHV0ZWRIb3Jpem9udGFs
TWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbihsYXlvdXRCb3gsIFVz
ZWRIb3Jpem9udGFsVmFsdWVzIHsgdXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMgfSk7CiAg
ICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZE1hcmdpblN0YXJ0ID0gY29tcHV0ZWRIb3Jpem9u
dGFsTWFyZ2luLnN0YXJ0OwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRNYXJnaW5FbmQg
PSBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uZW5kOwotICAgIGF1dG8gd2lkdGggPSBpbmxpbmVS
ZXBsYWNlZFdpZHRoQW5kTWFyZ2luKGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVz
ZWRWZXJ0aWNhbFZhbHVlcykud2lkdGg7CisgICAgYXV0byB3aWR0aCA9IGlubGluZVJlcGxhY2Vk
V2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IHVzZWRPdXRP
ZkZsb3dIb3Jpem9udGFsVmFsdWVzIH0sIFVzZWRWZXJ0aWNhbFZhbHVlcyB7IHVzZWRPdXRPZkZs
b3dWZXJ0aWNhbFZhbHVlcyB9KS53aWR0aDsKICAgICBhdXRvIHBhZGRpbmdMZWZ0ID0gYm94R2Vv
bWV0cnkucGFkZGluZ0xlZnQoKS52YWx1ZU9yKDApOwogICAgIGF1dG8gcGFkZGluZ1JpZ2h0ID0g
Ym94R2VvbWV0cnkucGFkZGluZ1JpZ2h0KCkudmFsdWVPcigwKTsKICAgICBhdXRvIGJvcmRlckxl
ZnQgPSBib3hHZW9tZXRyeS5ib3JkZXJMZWZ0KCk7CkBAIC03MTcsNyArNzEyLDcgQEAgSG9yaXpv
bnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFj
ZWRIb3Jpem9udGFsR2VvbWUKIAogICAgIC8vIEZvciBvdXQtb2YtZmxvdyBlbGVtZW50cyB0aGUg
Y29udGFpbmluZyBibG9jayBpcyBmb3JtZWQgYnkgdGhlIHBhZGRpbmcgZWRnZSBvZiB0aGUgYW5j
ZXN0b3IuCiAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgcG9zaXRpb25lZCB2YWx1ZSBpcyBpbiB0
aGUgY29vcmRpbmF0ZSBzeXN0ZW0gb2YgdGhlIHBhZGRpbmcgYm94LiBMZXQncyBjb252ZXJ0IGl0
IHRvIGJvcmRlciBib3ggY29vcmRpbmF0ZSBzeXN0ZW0uCi0gICAgYXV0byBjb250YWluaW5nQmxv
Y2tQYWRkaW5nVmVydGljYWxFZGdlID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3go
KmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkucGFkZGluZ0JveExlZnQoKTsKKyAgICBhdXRv
IGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2UgPSB1c2VkT3V0T2ZGbG93SG9yaXpv
bnRhbFZhbHVlcy5zdGF0aWNMZWZ0UG9zaXRpb247CiAgICAgKmxlZnQgKz0gY29udGFpbmluZ0Js
b2NrUGFkZGluZ1ZlcnRpY2FsRWRnZTsKICAgICAqcmlnaHQgKz0gY29udGFpbmluZ0Jsb2NrUGFk
ZGluZ1ZlcnRpY2FsRWRnZTsKIApAQCAtODAzLDIyICs3OTgsMjIgQEAgV2lkdGhBbmRNYXJnaW4g
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ1JlcGxhY2VkV2lkdGhBbmRNYXJn
aW4oY29uc3QKICAgICAgICAgdXNlZEhvcml6b250YWxWYWx1ZXMud2lkdGgsIFVzZWRIb3Jpem9u
dGFsTWFyZ2luIHsgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0LnZhbHVlT3IoMCksIGNv
bXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQudmFsdWVPcigwKSB9IH0pOwogfQogCi1WZXJ0aWNh
bEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93VmVydGljYWxH
ZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgdXNlZEhv
cml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcyB1c2VkVmVydGljYWxWYWx1ZXMpIGNv
bnN0CitWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZG
bG93VmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZE91dE9mRmxvd0hv
cml6b250YWxWYWx1ZXMgdXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMsIFVzZWRPdXRPZkZs
b3dWZXJ0aWNhbFZhbHVlcyB1c2VkT3V0T2ZGbG93VmVydGljYWxWYWx1ZXMpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSk7CiAKICAgICBpZiAo
IWxheW91dEJveC5yZXBsYWNlZCgpKQotICAgICAgICByZXR1cm4gb3V0T2ZGbG93Tm9uUmVwbGFj
ZWRWZXJ0aWNhbEdlb21ldHJ5KGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVzZWRW
ZXJ0aWNhbFZhbHVlcyk7Ci0gICAgcmV0dXJuIG91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9t
ZXRyeShsYXlvdXRCb3gsIHVzZWRIb3Jpem9udGFsVmFsdWVzLCB1c2VkVmVydGljYWxWYWx1ZXMp
OworICAgICAgICByZXR1cm4gb3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGxh
eW91dEJveCwgdXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMsIHVzZWRPdXRPZkZsb3dWZXJ0
aWNhbFZhbHVlcyk7CisgICAgcmV0dXJuIG91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRy
eShsYXlvdXRCb3gsIHVzZWRPdXRPZkZsb3dIb3Jpem9udGFsVmFsdWVzLCB1c2VkT3V0T2ZGbG93
VmVydGljYWxWYWx1ZXMpOwogfQogCi1Ib3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlv
dXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHVzZWRIb3Jpem9udGFsVmFsdWVzLCBVc2VkVmVy
dGljYWxWYWx1ZXMgdXNlZFZlcnRpY2FsVmFsdWVzKQorSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBVc2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcyB1c2VkT3V0T2ZG
bG93SG9yaXpvbnRhbFZhbHVlcywgVXNlZE91dE9mRmxvd1ZlcnRpY2FsVmFsdWVzIHVzZWRPdXRP
ZkZsb3dWZXJ0aWNhbFZhbHVlcykKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzT3V0T2ZGbG93
UG9zaXRpb25lZCgpKTsKIAogICAgIGlmICghbGF5b3V0Qm94LnJlcGxhY2VkKCkpCi0gICAgICAg
IHJldHVybiBvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShsYXlvdXRCb3gs
IHVzZWRIb3Jpem9udGFsVmFsdWVzKTsKLSAgICByZXR1cm4gb3V0T2ZGbG93UmVwbGFjZWRIb3Jp
em9udGFsR2VvbWV0cnkobGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZlcnRp
Y2FsVmFsdWVzKTsKKyAgICAgICAgcmV0dXJuIG91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRh
bEdlb21ldHJ5KGxheW91dEJveCwgdXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMpOworICAg
IHJldHVybiBvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShsYXlvdXRCb3gsIHVz
ZWRPdXRPZkZsb3dIb3Jpem9udGFsVmFsdWVzLCB1c2VkT3V0T2ZGbG93VmVydGljYWxWYWx1ZXMp
OwogfQogCiBIZWlnaHRBbmRNYXJnaW4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9h
dGluZ0hlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxW
YWx1ZXMgdXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcyB1c2VkVmVydGlj
YWxWYWx1ZXMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0
VW5pdHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCmluZGV4IGI1YzUz
YTJmM2IwYWQ5Y2I4NWY2NDRlYTQ3OTM4MzJjNDI4ZDA2MDguLmNkMjQ3NjJmOWI5NTRhNjIyYWZj
OTQzYWVhNDE0ZWQ3Y2E0MzcwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9M
YXlvdXRVbml0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRVbml0cy5oCkBA
IC0xMzcsMTggKzEzNywzNyBAQCBzdHJ1Y3QgVmVydGljYWxHZW9tZXRyeSB7CiAgICAgSGVpZ2h0
QW5kTWFyZ2luIGhlaWdodEFuZE1hcmdpbjsKIH07CiAKK3N0cnVjdCBVc2VkT3V0T2ZGbG93SG9y
aXpvbnRhbFZhbHVlcyB7CisgICAgTGF5b3V0VW5pdCBzdGF0aWNMZWZ0UG9zaXRpb247CisgICAg
TGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0
PiB3aWR0aDsKK307CisKK3N0cnVjdCBVc2VkT3V0T2ZGbG93VmVydGljYWxWYWx1ZXMgeworICAg
IExheW91dFVuaXQgc3RhdGljVG9wUG9zaXRpb247CisgICAgTGF5b3V0VW5pdCBjb250YWluaW5n
QmxvY2tIZWlnaHQ7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0OworfTsKKwogc3Ry
dWN0IFVzZWRIb3Jpem9udGFsVmFsdWVzIHsKKwogICAgIGV4cGxpY2l0IFVzZWRIb3Jpem9udGFs
VmFsdWVzKExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrV2lkdGgpCiAgICAgICAgIDogY29udGFp
bmluZ0Jsb2NrV2lkdGgoY29udGFpbmluZ0Jsb2NrV2lkdGgpCi0gICAgICAgIHsKLSAgICAgICAg
fQorICAgIHsKKyAgICB9CiAKICAgICBleHBsaWNpdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyhMYXlv
dXRVbml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoLCBPcHRpb25hbDxMYXlvdXRVbml0PiB3aWR0aCwg
T3B0aW9uYWw8VXNlZEhvcml6b250YWxNYXJnaW4+IG1hcmdpbikKICAgICAgICAgOiBjb250YWlu
aW5nQmxvY2tXaWR0aChjb250YWluaW5nQmxvY2tXaWR0aCkKICAgICAgICAgLCB3aWR0aCh3aWR0
aCkKICAgICAgICAgLCBtYXJnaW4obWFyZ2luKQotICAgICAgICB7Ci0gICAgICAgIH0KKyAgICB7
CisgICAgfQorCisgICAgZXhwbGljaXQgVXNlZEhvcml6b250YWxWYWx1ZXMoVXNlZE91dE9mRmxv
d0hvcml6b250YWxWYWx1ZXMgdXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMpCisgICAgICAg
IDogY29udGFpbmluZ0Jsb2NrV2lkdGgodXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMuY29u
dGFpbmluZ0Jsb2NrV2lkdGgpCisgICAgICAgICwgd2lkdGgodXNlZE91dE9mRmxvd0hvcml6b250
YWxWYWx1ZXMud2lkdGgpCisgICAgeworICAgIH0KIAogICAgIExheW91dFVuaXQgY29udGFpbmlu
Z0Jsb2NrV2lkdGg7CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gd2lkdGg7CkBAIC0xNTYsNiAr
MTc1LDIxIEBAIHN0cnVjdCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7CiB9OwogCiBzdHJ1Y3QgVXNl
ZFZlcnRpY2FsVmFsdWVzIHsKKworICAgIFVzZWRWZXJ0aWNhbFZhbHVlcygpID0gZGVmYXVsdDsK
KworICAgIGV4cGxpY2l0IFVzZWRWZXJ0aWNhbFZhbHVlcyhPcHRpb25hbDxMYXlvdXRVbml0PiBj
b250YWluaW5nQmxvY2tIZWlnaHQsIE9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCkKKyAgICAg
ICAgOiBjb250YWluaW5nQmxvY2tIZWlnaHQoY29udGFpbmluZ0Jsb2NrSGVpZ2h0KQorICAgICAg
ICAsIGhlaWdodChoZWlnaHQpCisgICAgeworICAgIH0KKworICAgIGV4cGxpY2l0IFVzZWRWZXJ0
aWNhbFZhbHVlcyhVc2VkT3V0T2ZGbG93VmVydGljYWxWYWx1ZXMgdXNlZE91dE9mRmxvd1ZlcnRp
Y2FsVmFsdWVzKQorICAgICAgICA6IGNvbnRhaW5pbmdCbG9ja0hlaWdodCh1c2VkT3V0T2ZGbG93
VmVydGljYWxWYWx1ZXMuY29udGFpbmluZ0Jsb2NrSGVpZ2h0KQorICAgICAgICAsIGhlaWdodCh1
c2VkT3V0T2ZGbG93VmVydGljYWxWYWx1ZXMuaGVpZ2h0KQorICAgIHsKKyAgICB9CisKICAgICBP
cHRpb25hbDxMYXlvdXRVbml0PiBjb250YWluaW5nQmxvY2tIZWlnaHQ7CiAgICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gaGVpZ2h0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCmlu
ZGV4IDcxZjVjMmRhZjBkOTlkZmUyNmJmNmZlY2FkYWRhMDY5ZmE2ZTVlNjcuLjk3YjdhODdhNzcw
ODhlNDk0ZGQyOWYyODEyZTU2NDA1NzIyOTM0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250
ZXh0LmNwcApAQCAtMTk5LDcgKzE5OSw4IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZVByZWZlcnJlZFdpZHRoRm9yQ29sdW1ucygpCiAgICAgICAgICAgICAgICAgaW50cmlu
c2ljV2lkdGggPSBsYXlvdXRTdGF0ZSgpLmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGRvd25jYXN0
PENvbnRhaW5lcj4odGFibGVDZWxsQm94KSktPmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJh
aW50cygpOwogICAgICAgICAgICAgaW50cmluc2ljV2lkdGggPSBnZW9tZXRyeSgpLmNvbnN0cmFp
bkJ5TWluTWF4V2lkdGgodGFibGVDZWxsQm94LCAqaW50cmluc2ljV2lkdGgpOwogICAgICAgICAg
ICAgYXV0byBib3JkZXIgPSBnZW9tZXRyeSgpLmNvbXB1dGVkQm9yZGVyKHRhYmxlQ2VsbEJveCk7
Ci0gICAgICAgICAgICBhdXRvIHBhZGRpbmcgPSAqZ2VvbWV0cnkoKS5jb21wdXRlZFBhZGRpbmco
dGFibGVDZWxsQm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyh7IH0pKTsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBVc2UgYXZhaWxhYmxlIHdpZHRoLgorICAgICAgICAgICAgYXV0byBwYWRkaW5nID0g
Kmdlb21ldHJ5KCkuY29tcHV0ZWRQYWRkaW5nKHRhYmxlQ2VsbEJveCwgVXNlZEhvcml6b250YWxW
YWx1ZXMoTGF5b3V0VW5pdCB7IH0pKTsKIAogICAgICAgICAgICAgaW50cmluc2ljV2lkdGgtPmV4
cGFuZChib3JkZXIuaG9yaXpvbnRhbC53aWR0aCgpICsgcGFkZGluZy5ob3Jpem9udGFsLndpZHRo
KCkpOwogICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLnNldEludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHNGb3JCb3godGFibGVDZWxsQm94LCAqaW50cmluc2ljV2lkdGgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379004</attachid>
            <date>2019-09-17 16:17:33 -0700</date>
            <delta_ts>2019-09-17 20:26:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201885-20190917161728.patch</filename>
            <type>text/plain</type>
            <size>31087</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5OTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q1MjNmMWZkNGQwZWUw
ZGZhODZkNWU0M2I3MDU0OTBhMDRiOGFlNC4uYjAwYjBjNDliMGM1MWNmMjkxNTk3NGJjNmU4ZDdi
NTU4MGM1YjQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTA5LTE3ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bT3V0LW9mLWZsb3dd
IEludHJvZHVjZSBVc2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcy9Vc2VkT3V0T2ZGbG93VmVy
dGljYWxWYWx1ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMTg4NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU0NTUzMzU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIFVzZWRPdXRPZkZsb3dI
b3Jpem9udGFsVmFsdWVzIGFuZCBVc2VkT3V0T2ZGbG93VmVydGljYWxWYWx1ZXMgdG8gcGFzcyBp
biBzdGF0aWMgcG9zaXRpb24gY29uc3RyYWludHMgdG8gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpvdXRPZkZsb3cqIGZ1bmN0aW9ucy4KKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlv
biBmb3IgdXNpbmcgY29uc3RyYWludCB2YWx1ZXMgaW5zdGVhZCBvZiBxdWVyeWluZyB0aGUgZGlz
cGxheSB0cmVlIGZvciBjb250YWluaW5nIGJsb2NrIGdlb21ldHJ5IGluZm9ybWF0aW9uLgorICAg
ICAgICBTZWUgd2Via2l0Lm9yZy9iLzIwMTc5NQorCisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2Vv
bWV0cnkpOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAq
IGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNl
ZFZlcnRpY2FsR2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdl
b21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxv
d1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dWZXJ0aWNhbEdlb21l
dHJ5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpvdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkpOgorICAgICAgICAqIGxheW91
dC9MYXlvdXRVbml0cy5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpVc2VkSG9yaXpvbnRh
bFZhbHVlczo6VXNlZEhvcml6b250YWxWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpVc2VkVmVydGljYWxWYWx1ZXM6OlVzZWRWZXJ0aWNhbFZhbHVlcyk6CisgICAgICAgICogbGF5
b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVByZWZlcnJl
ZFdpZHRoRm9yQ29sdW1ucyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxheW91dFVzaW5nRm9ybWF0dGluZ0NvbnRleHQpOgor
CiAyMDE5LTA5LTE3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
W0xGQ10gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZEhlaWdodCogZnVuY3Rp
b25zIG5lZWQgY29udGFpbmluZ0Jsb2NrSGVpZ2h0IG9ubHkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBjZWM4MzRlOTRjZTRmNDA1NzNjYmY5OGM1
NTdkMmI4OTQ2MzkwMmE0Li5lZGNkNTA5MjVlOWI0ZDllOTRlZTZmYjIzZTUxZTMxYmVhYmE5OGQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTY2
LDE2ICs2NiwxNyBAQCBMYXlvdXRTdGF0ZSYgRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dFN0YXRl
KCkgY29uc3QKIAogdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd0hvcml6
b250YWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCkKIHsKLSAgICBhdXRvIGNvbnRhaW5p
bmdCbG9ja1dpZHRoID0gZ2VvbWV0cnlGb3JCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2so
KSkucGFkZGluZ0JveFdpZHRoKCk7Ci0gICAgYXV0byBjb250YWluaW5nQmxvY2tIZWlnaHQgPSBn
ZW9tZXRyeUZvckJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5wYWRkaW5nQm94SGVp
Z2h0KCk7CisgICAgYXV0byYgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkgPSBnZW9tZXRyeUZvckJv
eCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9j
a1dpZHRoID0gY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveFdpZHRoKCk7CisgICAg
YXV0byB1c2VkVmVydGljYWxWYWx1ZXMgPSBVc2VkT3V0T2ZGbG93VmVydGljYWxWYWx1ZXMgeyBj
b250YWluaW5nQmxvY2tHZW9tZXRyeS5wYWRkaW5nQm94VG9wKCksIGNvbnRhaW5pbmdCbG9ja0dl
b21ldHJ5LnBhZGRpbmdCb3hIZWlnaHQoKSwgeyB9IH07CiAKLSAgICBhdXRvIGNvbXB1dGUgPSBb
Jl0oT3B0aW9uYWw8TGF5b3V0VW5pdD4gdXNlZFdpZHRoKSB7Ci0gICAgICAgIGF1dG8gdXNlZEhv
cml6b250YWxWYWx1ZXMgPSBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IGNvbnRhaW5pbmdCbG9ja1dp
ZHRoLCB1c2VkV2lkdGgsIHsgfSB9OwotICAgICAgICBhdXRvIHVzZWRWZXJ0aWNhbFZhbHVlcyA9
IFVzZWRWZXJ0aWNhbFZhbHVlcyB7IGNvbnRhaW5pbmdCbG9ja0hlaWdodCwgeyB9IH07CisgICAg
YXV0byBjb21wdXRlID0gWyZdKGF1dG8gdXNlZFdpZHRoKSB7CisgICAgICAgIGF1dG8gdXNlZEhv
cml6b250YWxWYWx1ZXMgPSBVc2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcyB7IGNvbnRhaW5p
bmdCbG9ja0dlb21ldHJ5LnBhZGRpbmdCb3hMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoLCB1
c2VkV2lkdGggfTsKICAgICAgICAgcmV0dXJuIGdlb21ldHJ5KCkub3V0T2ZGbG93SG9yaXpvbnRh
bEdlb21ldHJ5KGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVzZWRWZXJ0aWNhbFZh
bHVlcyk7CiAgICAgfTsKIAotICAgIGF1dG8gaG9yaXpvbnRhbEdlb21ldHJ5ID0gY29tcHV0ZSh7
IH0pOworICAgIGF1dG8gaG9yaXpvbnRhbEdlb21ldHJ5ID0gY29tcHV0ZShPcHRpb25hbDxMYXlv
dXRVbml0PiB7IH0pOworCiAgICAgaWYgKGF1dG8gbWF4V2lkdGggPSBnZW9tZXRyeSgpLmNvbXB1
dGVkVmFsdWVJZk5vdEF1dG8obGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbE1heFdpZHRoKCksIGNv
bnRhaW5pbmdCbG9ja1dpZHRoKSkgewogICAgICAgICBhdXRvIG1heEhvcml6b250YWxHZW9tZXRy
eSA9IGNvbXB1dGUobWF4V2lkdGgpOwogICAgICAgICBpZiAoaG9yaXpvbnRhbEdlb21ldHJ5Lndp
ZHRoQW5kTWFyZ2luLndpZHRoID4gbWF4SG9yaXpvbnRhbEdlb21ldHJ5LndpZHRoQW5kTWFyZ2lu
LndpZHRoKQpAQCAtOTcsMjcgKzk4LDI1IEBAIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVPdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gpCiAKIHZv
aWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNv
bnN0IEJveCYgbGF5b3V0Qm94KQogewotICAgIGF1dG8gY29tcHV0ZSA9IFsmXShhdXRvIHVzZWRI
b3Jpem9udGFsVmFsdWVzLCBhdXRvIHVzZWRWZXJ0aWNhbFZhbHVlcykgewotICAgICAgICByZXR1
cm4gZ2VvbWV0cnkoKS5vdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGxheW91dEJveCwgdXNlZEhv
cml6b250YWxWYWx1ZXMsIHVzZWRWZXJ0aWNhbFZhbHVlcyk7Ci0gICAgfTsKICAgICBhdXRvJiBj
b250YWluaW5nQmxvY2tHZW9tZXRyeSA9IGdlb21ldHJ5Rm9yQm94KCpsYXlvdXRCb3guY29udGFp
bmluZ0Jsb2NrKCkpOwogICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gY29udGFpbmlu
Z0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveEhlaWdodCgpOwotICAgIGF1dG8gY29udGFpbmluZ0Js
b2NrV2lkdGggPSBjb250YWluaW5nQmxvY2tHZW9tZXRyeS5wYWRkaW5nQm94SGVpZ2h0KCk7Cisg
ICAgYXV0byB1c2VkSG9yaXpvbnRhbFZhbHVlcyA9IFVzZWRPdXRPZkZsb3dIb3Jpem9udGFsVmFs
dWVzIHsgY29udGFpbmluZ0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveExlZnQoKSwgY29udGFpbmlu
Z0Jsb2NrR2VvbWV0cnkucGFkZGluZ0JveFdpZHRoKCksIHsgfSB9OworCisgICAgYXV0byBjb21w
dXRlID0gWyZdKGF1dG8gdXNlZEhlaWdodCkgeworICAgICAgICBhdXRvIHVzZWRWZXJ0aWNhbFZh
bHVlcyA9IFVzZWRPdXRPZkZsb3dWZXJ0aWNhbFZhbHVlcyB7IGNvbnRhaW5pbmdCbG9ja0dlb21l
dHJ5LnBhZGRpbmdCb3hUb3AoKSwgY29udGFpbmluZ0Jsb2NrSGVpZ2h0LCB1c2VkSGVpZ2h0IH07
CisgICAgICAgIHJldHVybiBnZW9tZXRyeSgpLm91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkobGF5
b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZlcnRpY2FsVmFsdWVzKTsKKyAgICB9
OwogCi0gICAgYXV0byB1c2VkVmVydGljYWxWYWx1ZXNGb3JIZWlnaHQgPSBVc2VkVmVydGljYWxW
YWx1ZXMgeyBjb250YWluaW5nQmxvY2tIZWlnaHQsIHsgfSB9OwotICAgIGF1dG8gdXNlZEhvcml6
b250YWxWYWx1ZXMgPSBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IGNvbnRhaW5pbmdCbG9ja1dpZHRo
IH07CisgICAgYXV0byB2ZXJ0aWNhbEdlb21ldHJ5ID0gY29tcHV0ZShPcHRpb25hbDxMYXlvdXRV
bml0PiB7IH0pOwogCi0gICAgYXV0byB2ZXJ0aWNhbEdlb21ldHJ5ID0gY29tcHV0ZSh1c2VkSG9y
aXpvbnRhbFZhbHVlcywgdXNlZFZlcnRpY2FsVmFsdWVzRm9ySGVpZ2h0KTsKICAgICBpZiAoYXV0
byBtYXhIZWlnaHQgPSBnZW9tZXRyeSgpLmNvbXB1dGVkTWF4SGVpZ2h0KGxheW91dEJveCwgY29u
dGFpbmluZ0Jsb2NrSGVpZ2h0KSkgewotICAgICAgICBhdXRvIHVzZWRWYWx1ZXNGb3JNYXhIZWln
aHQgPSBVc2VkVmVydGljYWxWYWx1ZXMgeyBjb250YWluaW5nQmxvY2tIZWlnaHQsIG1heEhlaWdo
dCB9OwotICAgICAgICBhdXRvIG1heFZlcnRpY2FsR2VvbWV0cnkgPSBjb21wdXRlKHVzZWRIb3Jp
em9udGFsVmFsdWVzLCB1c2VkVmFsdWVzRm9yTWF4SGVpZ2h0KTsKKyAgICAgICAgYXV0byBtYXhW
ZXJ0aWNhbEdlb21ldHJ5ID0gY29tcHV0ZShtYXhIZWlnaHQpOwogICAgICAgICBpZiAodmVydGlj
YWxHZW9tZXRyeS5oZWlnaHRBbmRNYXJnaW4uaGVpZ2h0ID4gbWF4VmVydGljYWxHZW9tZXRyeS5o
ZWlnaHRBbmRNYXJnaW4uaGVpZ2h0KQogICAgICAgICAgICAgdmVydGljYWxHZW9tZXRyeSA9IG1h
eFZlcnRpY2FsR2VvbWV0cnk7CiAgICAgfQogCiAgICAgaWYgKGF1dG8gbWluSGVpZ2h0ID0gZ2Vv
bWV0cnkoKS5jb21wdXRlZE1pbkhlaWdodChsYXlvdXRCb3gsIGNvbnRhaW5pbmdCbG9ja0hlaWdo
dCkpIHsKLSAgICAgICAgYXV0byB1c2VkVmFsdWVzRm9yTWluSGVpZ2h0ID0gVXNlZFZlcnRpY2Fs
VmFsdWVzIHsgY29udGFpbmluZ0Jsb2NrSGVpZ2h0LCBtaW5IZWlnaHQgfTsKLSAgICAgICAgYXV0
byBtaW5WZXJ0aWNhbEdlb21ldHJ5ID0gY29tcHV0ZSh1c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNl
ZFZhbHVlc0Zvck1pbkhlaWdodCk7CisgICAgICAgIGF1dG8gbWluVmVydGljYWxHZW9tZXRyeSA9
IGNvbXB1dGUobWluSGVpZ2h0KTsKICAgICAgICAgaWYgKHZlcnRpY2FsR2VvbWV0cnkuaGVpZ2h0
QW5kTWFyZ2luLmhlaWdodCA8IG1pblZlcnRpY2FsR2VvbWV0cnkuaGVpZ2h0QW5kTWFyZ2luLmhl
aWdodCkKICAgICAgICAgICAgIHZlcnRpY2FsR2VvbWV0cnkgPSBtaW5WZXJ0aWNhbEdlb21ldHJ5
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXgg
ZGZlYWZhYTc0ZjNjZTA5OGEyZmFkZWI5ZjIwNmU5OTBmYTI0ODQwMi4uNTlhN2JjMTI0ZGI4YzFh
NTUyYTAzODgxZThiODBhYzJmNDA5M2E2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1h
dHRpbmdDb250ZXh0LmgKQEAgLTkzLDggKzkzLDggQEAgcHJvdGVjdGVkOgogICAgIC8vIFRoaXMg
Y2xhc3MgaW1wbGVtZW50cyBnZW5lcmljIHBvc2l0aW9uaW5nIGFuZCBzaXppbmcuCiAgICAgY2xh
c3MgR2VvbWV0cnkgewogICAgIHB1YmxpYzoKLSAgICAgICAgVmVydGljYWxHZW9tZXRyeSBvdXRP
ZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFsdWVzLCBV
c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0OwotICAgICAgICBIb3Jpem9udGFsR2VvbWV0cnkgb3V0
T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFsdWVz
LCBVc2VkVmVydGljYWxWYWx1ZXMpOworICAgICAgICBWZXJ0aWNhbEdlb21ldHJ5IG91dE9mRmxv
d1ZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiwgVXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1
ZXMsIFVzZWRPdXRPZkZsb3dWZXJ0aWNhbFZhbHVlcykgY29uc3Q7CisgICAgICAgIEhvcml6b250
YWxHZW9tZXRyeSBvdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQm94JiwgVXNlZE91
dE9mRmxvd0hvcml6b250YWxWYWx1ZXMsIFVzZWRPdXRPZkZsb3dWZXJ0aWNhbFZhbHVlcyk7CiAK
ICAgICAgICAgSGVpZ2h0QW5kTWFyZ2luIGZsb2F0aW5nSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJv
eCYsIFVzZWRIb3Jpem9udGFsVmFsdWVzLCBVc2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0OwogICAg
ICAgICBXaWR0aEFuZE1hcmdpbiBmbG9hdGluZ1dpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIFVz
ZWRIb3Jpem9udGFsVmFsdWVzKTsKQEAgLTEzNSwxMSArMTM1LDExIEBAIHByb3RlY3RlZDoKICAg
ICAgICAgY29uc3QgRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9mb3JtYXR0aW5nQ29udGV4dDsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
VmVydGljYWxHZW9tZXRyeSBvdXRPZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3Qg
Qm94JiwgVXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcykgY29uc3Q7Ci0g
ICAgICAgIEhvcml6b250YWxHZW9tZXRyeSBvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9t
ZXRyeShjb25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVz
KSBjb25zdDsKKyAgICAgICAgVmVydGljYWxHZW9tZXRyeSBvdXRPZkZsb3dSZXBsYWNlZFZlcnRp
Y2FsR2VvbWV0cnkoY29uc3QgQm94JiwgVXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMsIFVz
ZWRPdXRPZkZsb3dWZXJ0aWNhbFZhbHVlcykgY29uc3Q7CisgICAgICAgIEhvcml6b250YWxHZW9t
ZXRyeSBvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmLCBVc2Vk
T3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcywgVXNlZE91dE9mRmxvd1ZlcnRpY2FsVmFsdWVzKSBj
b25zdDsKIAotICAgICAgICBWZXJ0aWNhbEdlb21ldHJ5IG91dE9mRmxvd05vblJlcGxhY2VkVmVy
dGljYWxHZW9tZXRyeShjb25zdCBCb3gmLCBVc2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRp
Y2FsVmFsdWVzKSBjb25zdDsKLSAgICAgICAgSG9yaXpvbnRhbEdlb21ldHJ5IG91dE9mRmxvd05v
blJlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGNvbnN0IEJveCYsIFVzZWRIb3Jpem9udGFsVmFs
dWVzKTsKKyAgICAgICAgVmVydGljYWxHZW9tZXRyeSBvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRp
Y2FsR2VvbWV0cnkoY29uc3QgQm94JiwgVXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMsIFVz
ZWRPdXRPZkZsb3dWZXJ0aWNhbFZhbHVlcykgY29uc3Q7CisgICAgICAgIEhvcml6b250YWxHZW9t
ZXRyeSBvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmLCBV
c2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcyk7CiAKICAgICAgICAgSGVpZ2h0QW5kTWFyZ2lu
IGZsb2F0aW5nUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4oY29uc3QgQm94JiwgVXNlZEhvcml6b250
YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVlcykgY29uc3Q7CiAgICAgICAgIFdpZHRoQW5kTWFy
Z2luIGZsb2F0aW5nUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBVc2VkSG9yaXpv
bnRhbFZhbHVlcykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggODk4ODRkNmEzNmU1ZjNiNTIzNzRlM2U4OTg0
ODZlMWM0YTIzZTQ3Zi4uNjRhNTU1MmRjYTE2YjJkY2IwMDk3OWJhZjNlNjllMzY4YzE3NDg3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcApAQCAtMjY4LDEwICsyNjgsOSBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6c2hyaW5rVG9GaXRXaWR0aChjb25zdCBCb3gmIGZvcm1hdHRpbmdSbwogICAg
IHJldHVybiBzdGQ6Om1pbihzdGQ6Om1heChpbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzLm1pbmlt
dW0sIGF2YWlsYWJsZVdpZHRoKSwgaW50cmluc2ljV2lkdGhDb25zdHJhaW50cy5tYXhpbXVtKTsK
IH0KIAotVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9m
Rmxvd05vblJlcGxhY2VkVmVydGljYWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJveCwgVXNl
ZEhvcml6b250YWxWYWx1ZXMgdXNlZEhvcml6b250YWxWYWx1ZXMsIFVzZWRWZXJ0aWNhbFZhbHVl
cyB1c2VkVmVydGljYWxWYWx1ZXMpIGNvbnN0CitWZXJ0aWNhbEdlb21ldHJ5IEZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRWZXJ0aWNhbEdlb21ldHJ5KGNv
bnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcyB1c2VkT3V0
T2ZGbG93SG9yaXpvbnRhbFZhbHVlcywgVXNlZE91dE9mRmxvd1ZlcnRpY2FsVmFsdWVzIHVzZWRP
dXRPZkZsb3dWZXJ0aWNhbFZhbHVlcykgY29uc3QKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94Lmlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3gucmVwbGFjZWQoKSk7Ci0gICAgQVNT
RVJUKHVzZWRWZXJ0aWNhbFZhbHVlcy5jb250YWluaW5nQmxvY2tIZWlnaHQpOwogCiAgICAgLy8g
MTAuNi40IEFic29sdXRlbHkgcG9zaXRpb25lZCwgbm9uLXJlcGxhY2VkIGVsZW1lbnRzCiAgICAg
Ly8KQEAgLTMwMCwxMyArMjk5LDEzIEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0CiAgICAgYXV0
byYgZm9ybWF0dGluZ0NvbnRleHQgPSB0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgpOwogICAgIGF1
dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBm
b3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwotICAgIGF1dG8gY29u
dGFpbmluZ0Jsb2NrSGVpZ2h0ID0gKnVzZWRWZXJ0aWNhbFZhbHVlcy5jb250YWluaW5nQmxvY2tI
ZWlnaHQ7Ci0gICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IHVzZWRIb3Jpem9udGFsVmFs
dWVzLmNvbnRhaW5pbmdCbG9ja1dpZHRoOworICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0
ID0gdXNlZE91dE9mRmxvd1ZlcnRpY2FsVmFsdWVzLmNvbnRhaW5pbmdCbG9ja0hlaWdodDsKKyAg
ICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gdXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1
ZXMuY29udGFpbmluZ0Jsb2NrV2lkdGg7CiAKICAgICBhdXRvIHRvcCA9IGNvbXB1dGVkVmFsdWVJ
Zk5vdEF1dG8oc3R5bGUubG9naWNhbFRvcCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAg
YXV0byBib3R0b20gPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHN0eWxlLmxvZ2ljYWxCb3R0b20o
KSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAgIGF1dG8gaGVpZ2h0ID0gdXNlZFZlcnRpY2Fs
VmFsdWVzLmhlaWdodCA/IHVzZWRWZXJ0aWNhbFZhbHVlcy5oZWlnaHQudmFsdWUoKSA6IGNvbXB1
dGVkSGVpZ2h0VmFsdWUobGF5b3V0Qm94LCBIZWlnaHRUeXBlOjpOb3JtYWwsIGNvbnRhaW5pbmdC
bG9ja0hlaWdodCk7Ci0gICAgYXV0byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gR2VvbWV0cnk6
OmNvbXB1dGVkVmVydGljYWxNYXJnaW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcyk7
CisgICAgYXV0byBoZWlnaHQgPSB1c2VkT3V0T2ZGbG93VmVydGljYWxWYWx1ZXMuaGVpZ2h0ID8g
dXNlZE91dE9mRmxvd1ZlcnRpY2FsVmFsdWVzLmhlaWdodC52YWx1ZSgpIDogY29tcHV0ZWRIZWln
aHRWYWx1ZShsYXlvdXRCb3gsIEhlaWdodFR5cGU6Ok5vcm1hbCwgY29udGFpbmluZ0Jsb2NrSGVp
Z2h0KTsKKyAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0
ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgdXNlZE91
dE9mRmxvd0hvcml6b250YWxWYWx1ZXMuY29udGFpbmluZ0Jsb2NrV2lkdGggfSk7CiAgICAgVXNl
ZFZlcnRpY2FsTWFyZ2luOjpOb25Db2xsYXBzZWRWYWx1ZXMgdXNlZFZlcnRpY2FsTWFyZ2luOyAK
ICAgICBhdXRvIHBhZGRpbmdUb3AgPSBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigw
KTsKICAgICBhdXRvIHBhZGRpbmdCb3R0b20gPSBib3hHZW9tZXRyeS5wYWRkaW5nQm90dG9tKCku
dmFsdWVPcigwKTsKQEAgLTM4MiwxNiArMzgxLDE1IEBAIFZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0
CiAgICAgQVNTRVJUKGhlaWdodCk7CiAKICAgICAvLyBGb3Igb3V0LW9mLWZsb3cgZWxlbWVudHMg
dGhlIGNvbnRhaW5pbmcgYmxvY2sgaXMgZm9ybWVkIGJ5IHRoZSBwYWRkaW5nIGVkZ2Ugb2YgdGhl
IGFuY2VzdG9yLgotICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHBvc2l0aW9uZWQgdmFsdWUgaXMg
aW4gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIG9mIHRoZSBwYWRkaW5nIGJveC4gTGV0J3MgY29udmVy
dCBpdCB0byBib3JkZXIgYm94IGNvb3JkaW5hdGUgc3lzdGVtLgotICAgIGF1dG8gY29udGFpbmlu
Z0Jsb2NrUGFkZGluZ1ZlcnRpY2FsRWRnZSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9y
Qm94KCpsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLnBhZGRpbmdCb3hUb3AoKTsKLSAgICAq
dG9wICs9IGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2U7Ci0gICAgKmJvdHRvbSAr
PSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdlOworICAgIC8vIEF0IHRoaXMgcG9p
bnQgdGhlIHBvc2l0aW9uIHZhbHVlIGlzIGluIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUg
cGFkZGluZyBib3guIExldCdzIGNvbnZlcnQgaXQgdG8gYm9yZGVyIGJveCBjb29yZGluYXRlIHN5
c3RlbS4KKyAgICAqdG9wICs9IHVzZWRPdXRPZkZsb3dWZXJ0aWNhbFZhbHVlcy5jb250YWluaW5n
QmxvY2tQYWRkaW5nVG9wOworICAgICpib3R0b20gKz0gdXNlZE91dE9mRmxvd1ZlcnRpY2FsVmFs
dWVzLmNvbnRhaW5pbmdCbG9ja1BhZGRpbmdUb3A7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9y
bWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW1Bvc2l0aW9uXVtIZWlnaHRdW01hcmdp
bl0gLT4gb3V0LW9mLWZsb3cgbm9uLXJlcGxhY2VkIC0+IHRvcCgiIDw8ICp0b3AgPDwgInB4KSBi
b3R0b20oIiAgPDwgKmJvdHRvbSA8PCAicHgpIGhlaWdodCgiIDw8ICpoZWlnaHQgPDwgInB4KSBt
YXJnaW4oIiA8PCB1c2VkVmVydGljYWxNYXJnaW4uYmVmb3JlIDw8ICJweCwgIiAgPDwgdXNlZFZl
cnRpY2FsTWFyZ2luLmFmdGVyIDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAi
KSIpOwogICAgIHJldHVybiB7ICp0b3AsICpib3R0b20sIHsgY29udGVudEhlaWdodCgpLCB1c2Vk
VmVydGljYWxNYXJnaW4gfSB9OwogfQogCi1Ib3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShj
b25zdCBCb3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgdXNlZEhvcml6b250YWxW
YWx1ZXMpCitIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpv
dXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmIGxheW91dEJv
eCwgVXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMgdXNlZE91dE9mRmxvd0hvcml6b250YWxW
YWx1ZXMpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSAm
JiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogICAgIApAQCAtNDIxLDE2ICs0MTksMTUgQEAgSG9y
aXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9u
UmVwbGFjZWRIb3Jpem9udGFsR2UKICAgICAvLyA1LiAnd2lkdGgnIGlzICdhdXRvJywgJ2xlZnQn
IGFuZCAncmlnaHQnIGFyZSBub3QgJ2F1dG8nLCB0aGVuIHNvbHZlIGZvciAnd2lkdGgnCiAgICAg
Ly8gNi4gJ3JpZ2h0JyBpcyAnYXV0bycsICdsZWZ0JyBhbmQgJ3dpZHRoJyBhcmUgbm90ICdhdXRv
JywgdGhlbiBzb2x2ZSBmb3IgJ3JpZ2h0JwogCi0gICAgYXV0byYgZm9ybWF0dGluZ0NvbnRleHQg
PSB0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgpOwogICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94
LnN0eWxlKCk7Ci0gICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9t
ZXRyeUZvckJveChsYXlvdXRCb3gpOwotICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSB1
c2VkSG9yaXpvbnRhbFZhbHVlcy5jb250YWluaW5nQmxvY2tXaWR0aDsKKyAgICBhdXRvJiBib3hH
ZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsK
KyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0gdXNlZE91dE9mRmxvd0hvcml6b250YWxW
YWx1ZXMuY29udGFpbmluZ0Jsb2NrV2lkdGg7CiAgICAgYXV0byBpc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpLT5zdHlsZSgpLmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKTsKICAgICAKICAgICBhdXRvIGxlZnQgPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRv
KHN0eWxlLmxvZ2ljYWxMZWZ0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRoKTsKICAgICBhdXRvIHJp
Z2h0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2FsUmlnaHQoKSwgY29udGFp
bmluZ0Jsb2NrV2lkdGgpOwotICAgIGF1dG8gd2lkdGggPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRv
KHVzZWRIb3Jpem9udGFsVmFsdWVzLndpZHRoID8gTGVuZ3RoIHsgdXNlZEhvcml6b250YWxWYWx1
ZXMud2lkdGgudmFsdWUoKSwgRml4ZWQgfSA6IHN0eWxlLmxvZ2ljYWxXaWR0aCgpLCBjb250YWlu
aW5nQmxvY2tXaWR0aCk7Ci0gICAgYXV0byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBHZW9t
ZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dEJveCwgdXNlZEhvcml6b250YWxW
YWx1ZXMpOworICAgIGF1dG8gd2lkdGggPSBjb21wdXRlZFZhbHVlSWZOb3RBdXRvKHVzZWRPdXRP
ZkZsb3dIb3Jpem9udGFsVmFsdWVzLndpZHRoID8gTGVuZ3RoIHsgdXNlZE91dE9mRmxvd0hvcml6
b250YWxWYWx1ZXMud2lkdGgudmFsdWUoKSwgRml4ZWQgfSA6IHN0eWxlLmxvZ2ljYWxXaWR0aCgp
LCBjb250YWluaW5nQmxvY2tXaWR0aCk7CisgICAgYXV0byBjb21wdXRlZEhvcml6b250YWxNYXJn
aW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luKGxheW91dEJveCwgVXNlZEhv
cml6b250YWxWYWx1ZXMgeyB1c2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcy5jb250YWluaW5n
QmxvY2tXaWR0aCB9KTsKICAgICBVc2VkSG9yaXpvbnRhbE1hcmdpbiB1c2VkSG9yaXpvbnRhbE1h
cmdpbjsKICAgICBhdXRvIHBhZGRpbmdMZWZ0ID0gYm94R2VvbWV0cnkucGFkZGluZ0xlZnQoKS52
YWx1ZU9yKDApOwogICAgIGF1dG8gcGFkZGluZ1JpZ2h0ID0gYm94R2VvbWV0cnkucGFkZGluZ1Jp
Z2h0KCkudmFsdWVPcigwKTsKQEAgLTQ5NSw3ICs0OTIsNyBAQCBIb3Jpem9udGFsR2VvbWV0cnkg
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhvcml6b250
YWxHZQogICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGF2YWlsYWJsZSB3aWR0aCBieSBzb2x2aW5n
IGZvciAnd2lkdGgnIGFmdGVyIHNldHRpbmcgJ2xlZnQnIChpbiBjYXNlIDEpIHRvIDAKICAgICAg
ICAgbGVmdCA9IExheW91dFVuaXQgeyAwIH07CiAgICAgICAgIGF1dG8gYXZhaWxhYmxlV2lkdGgg
PSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArIHVzZWRIb3Jpem9udGFsTWFyZ2luLnN0
YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgcGFkZGluZ1JpZ2h0ICsgYm9yZGVyUmln
aHQgKyB1c2VkSG9yaXpvbnRhbE1hcmdpbi5lbmQgKyAqcmlnaHQpOwotICAgICAgICB3aWR0aCA9
IHNocmlua1RvRml0V2lkdGgobGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IGF2YWls
YWJsZVdpZHRoLCB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCwgdXNlZEhvcml6b250YWxWYWx1
ZXMubWFyZ2luIH0pOworICAgICAgICB3aWR0aCA9IHNocmlua1RvRml0V2lkdGgobGF5b3V0Qm94
LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IGF2YWlsYWJsZVdpZHRoLCB1c2VkT3V0T2ZGbG93SG9y
aXpvbnRhbFZhbHVlcy53aWR0aCwgeyB9IH0pOwogICAgICAgICBsZWZ0ID0gY29udGFpbmluZ0Js
b2NrV2lkdGggLSAodXNlZEhvcml6b250YWxNYXJnaW4uc3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFk
ZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQgICsgYm9yZGVyUmlnaHQgKyB1c2VkSG9y
aXpvbnRhbE1hcmdpbi5lbmQgKyAqcmlnaHQpOwogICAgIH0gZWxzZSBpZiAoIWxlZnQgJiYgIXJp
Z2h0ICYmIHdpZHRoKSB7CiAgICAgICAgIC8vICMyCkBAIC01MTIsNyArNTA5LDcgQEAgSG9yaXpv
bnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVw
bGFjZWRIb3Jpem9udGFsR2UKICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBhdmFpbGFibGUgd2lk
dGggYnkgc29sdmluZyBmb3IgJ3dpZHRoJyBhZnRlciBzZXR0aW5nICdyaWdodCcgKGluIGNhc2Ug
MykgdG8gMAogICAgICAgICByaWdodCA9IExheW91dFVuaXQgeyAwIH07CiAgICAgICAgIGF1dG8g
YXZhaWxhYmxlV2lkdGggPSBjb250YWluaW5nQmxvY2tXaWR0aCAtICgqbGVmdCArIHVzZWRIb3Jp
em9udGFsTWFyZ2luLnN0YXJ0ICsgYm9yZGVyTGVmdCArIHBhZGRpbmdMZWZ0ICsgcGFkZGluZ1Jp
Z2h0ICsgYm9yZGVyUmlnaHQgKyB1c2VkSG9yaXpvbnRhbE1hcmdpbi5lbmQgKyAqcmlnaHQpOwot
ICAgICAgICB3aWR0aCA9IHNocmlua1RvRml0V2lkdGgobGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRh
bFZhbHVlcyB7IGF2YWlsYWJsZVdpZHRoLCB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCwgdXNl
ZEhvcml6b250YWxWYWx1ZXMubWFyZ2luIH0pOworICAgICAgICB3aWR0aCA9IHNocmlua1RvRml0
V2lkdGgobGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB7IGF2YWlsYWJsZVdpZHRoLCB1
c2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcy53aWR0aCwgeyB9IH0pOwogICAgICAgICByaWdo
dCA9IGNvbnRhaW5pbmdCbG9ja1dpZHRoIC0gKCpsZWZ0ICsgdXNlZEhvcml6b250YWxNYXJnaW4u
c3RhcnQgKyBib3JkZXJMZWZ0ICsgcGFkZGluZ0xlZnQgKyAqd2lkdGggKyBwYWRkaW5nUmlnaHQg
KyBib3JkZXJSaWdodCArIHVzZWRIb3Jpem9udGFsTWFyZ2luLmVuZCk7CiAgICAgfSBlbHNlIGlm
ICghbGVmdCAmJiB3aWR0aCAmJiByaWdodCkgewogICAgICAgICAvLyAjNApAQCAtNTMxLDE4ICs1
MjgsMTYgQEAgSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
b3V0T2ZGbG93Tm9uUmVwbGFjZWRIb3Jpem9udGFsR2UKIAogICAgIC8vIEZvciBvdXQtb2YtZmxv
dyBlbGVtZW50cyB0aGUgY29udGFpbmluZyBibG9jayBpcyBmb3JtZWQgYnkgdGhlIHBhZGRpbmcg
ZWRnZSBvZiB0aGUgYW5jZXN0b3IuCiAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgcG9zaXRpb25l
ZCB2YWx1ZSBpcyBpbiB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gb2YgdGhlIHBhZGRpbmcgYm94LiBM
ZXQncyBjb252ZXJ0IGl0IHRvIGJvcmRlciBib3ggY29vcmRpbmF0ZSBzeXN0ZW0uCi0gICAgYXV0
byBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdlID0gZm9ybWF0dGluZ0NvbnRleHQu
Z2VvbWV0cnlGb3JCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkucGFkZGluZ0JveExl
ZnQoKTsKLSAgICAqbGVmdCArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdlOwot
ICAgICpyaWdodCArPSBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdlOworICAgICps
ZWZ0ICs9IHVzZWRPdXRPZkZsb3dIb3Jpem9udGFsVmFsdWVzLmNvbnRhaW5pbmdCbG9ja1BhZGRp
bmdMZWZ0OworICAgICpyaWdodCArPSB1c2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcy5jb250
YWluaW5nQmxvY2tQYWRkaW5nTGVmdDsKIAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5n
Q29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbUG9zaXRpb25dW1dpZHRoXVtNYXJnaW5dIC0+IG91
dC1vZi1mbG93IG5vbi1yZXBsYWNlZCAtPiBsZWZ0KCIgPDwgKmxlZnQgPDwgInB4KSByaWdodCgi
ICA8PCAqcmlnaHQgPDwgInB4KSB3aWR0aCgiIDw8ICp3aWR0aCA8PCAicHgpIG1hcmdpbigiIDw8
IHVzZWRIb3Jpem9udGFsTWFyZ2luLnN0YXJ0IDw8ICJweCwgIiAgPDwgdXNlZEhvcml6b250YWxN
YXJnaW4uZW5kIDw8ICJweCkgbGF5b3V0Qm94KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAg
IHJldHVybiB7ICpsZWZ0LCAqcmlnaHQsIHsgY29udGVudFdpZHRoKCksIHVzZWRIb3Jpem9udGFs
TWFyZ2luLCBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gfSB9OwogfQogCi1WZXJ0aWNhbEdlb21l
dHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNh
bEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyB1c2Vk
SG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVzIHVzZWRWZXJ0aWNhbFZhbHVlcykg
Y29uc3QKK1ZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRP
ZkZsb3dSZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRP
dXRPZkZsb3dIb3Jpem9udGFsVmFsdWVzIHVzZWRPdXRPZkZsb3dIb3Jpem9udGFsVmFsdWVzLCBV
c2VkT3V0T2ZGbG93VmVydGljYWxWYWx1ZXMgdXNlZE91dE9mRmxvd1ZlcnRpY2FsVmFsdWVzKSBj
b25zdAogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYg
bGF5b3V0Qm94LnJlcGxhY2VkKCkpOwotICAgIEFTU0VSVCh1c2VkVmVydGljYWxWYWx1ZXMuY29u
dGFpbmluZ0Jsb2NrSGVpZ2h0KTsKIAogICAgIC8vIDEwLjYuNSBBYnNvbHV0ZWx5IHBvc2l0aW9u
ZWQsIHJlcGxhY2VkIGVsZW1lbnRzCiAgICAgLy8KQEAgLTU1NCwxOCArNTQ5LDE3IEBAIFZlcnRp
Y2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNl
ZFZlcnRpY2FsR2VvbWV0cnkoCiAgICAgLy8gNC4gSWYgYXQgdGhpcyBwb2ludCB0aGVyZSBpcyBv
bmx5IG9uZSAnYXV0bycgbGVmdCwgc29sdmUgdGhlIGVxdWF0aW9uIGZvciB0aGF0IHZhbHVlLgog
ICAgIC8vIDUuIElmIGF0IHRoaXMgcG9pbnQgdGhlIHZhbHVlcyBhcmUgb3Zlci1jb25zdHJhaW5l
ZCwgaWdub3JlIHRoZSB2YWx1ZSBmb3IgJ2JvdHRvbScgYW5kIHNvbHZlIGZvciB0aGF0IHZhbHVl
LgogCi0gICAgYXV0byYgZm9ybWF0dGluZ0NvbnRleHQgPSB0aGlzLT5mb3JtYXR0aW5nQ29udGV4
dCgpOwogICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7Ci0gICAgYXV0byYgYm94
R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwot
ICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gKnVzZWRWZXJ0aWNhbFZhbHVlcy5jb250
YWluaW5nQmxvY2tIZWlnaHQ7Ci0gICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IHVzZWRI
b3Jpem9udGFsVmFsdWVzLmNvbnRhaW5pbmdCbG9ja1dpZHRoOworICAgIGF1dG8mIGJveEdlb21l
dHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOworICAg
IGF1dG8gY29udGFpbmluZ0Jsb2NrSGVpZ2h0ID0gdXNlZE91dE9mRmxvd1ZlcnRpY2FsVmFsdWVz
LmNvbnRhaW5pbmdCbG9ja0hlaWdodDsKKyAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1dpZHRoID0g
dXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMuY29udGFpbmluZ0Jsb2NrV2lkdGg7CiAKICAg
ICBhdXRvIHRvcCA9IGNvbXB1dGVkVmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbFRvcCgpLCBj
b250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byBib3R0b20gPSBjb21wdXRlZFZhbHVlSWZO
b3RBdXRvKHN0eWxlLmxvZ2ljYWxCb3R0b20oKSwgY29udGFpbmluZ0Jsb2NrV2lkdGgpOwotICAg
IGF1dG8gaGVpZ2h0ID0gaW5saW5lUmVwbGFjZWRIZWlnaHRBbmRNYXJnaW4obGF5b3V0Qm94LCB1
c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZlcnRpY2FsVmFsdWVzKS5oZWlnaHQ7Ci0gICAgYXV0
byBjb21wdXRlZFZlcnRpY2FsTWFyZ2luID0gR2VvbWV0cnk6OmNvbXB1dGVkVmVydGljYWxNYXJn
aW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcyk7Ci0gICAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gdXNlZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkVmVydGljYWxNYXJnaW4uYmVmb3JlOwot
ICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRNYXJnaW5BZnRlciA9IGNvbXB1dGVkVmVydGlj
YWxNYXJnaW4uYWZ0ZXI7CisgICAgYXV0byBoZWlnaHQgPSBpbmxpbmVSZXBsYWNlZEhlaWdodEFu
ZE1hcmdpbihsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHsgdXNlZE91dE9mRmxvd0hv
cml6b250YWxWYWx1ZXMgfSwgVXNlZFZlcnRpY2FsVmFsdWVzIHsgdXNlZE91dE9mRmxvd1ZlcnRp
Y2FsVmFsdWVzIH0pLmhlaWdodDsKKyAgICBhdXRvIGNvbXB1dGVkVmVydGljYWxNYXJnaW4gPSBH
ZW9tZXRyeTo6Y29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFs
VmFsdWVzIHsgdXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMgfSk7CisgICAgYXV0byB1c2Vk
TWFyZ2luQmVmb3JlID0gY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbi5iZWZvcmU7CisgICAgYXV0byB1
c2VkTWFyZ2luQWZ0ZXIgPSBjb21wdXRlZFZlcnRpY2FsTWFyZ2luLmFmdGVyOwogICAgIGF1dG8g
cGFkZGluZ1RvcCA9IGJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApOwogICAgIGF1
dG8gcGFkZGluZ0JvdHRvbSA9IGJveEdlb21ldHJ5LnBhZGRpbmdCb3R0b20oKS52YWx1ZU9yKDAp
OwogICAgIGF1dG8gYm9yZGVyVG9wID0gYm94R2VvbWV0cnkuYm9yZGVyVG9wKCk7CkBAIC02MDks
OSArNjAzLDggQEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
Om91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeSgKIAogICAgIC8vIEZvciBvdXQtb2Yt
ZmxvdyBlbGVtZW50cyB0aGUgY29udGFpbmluZyBibG9jayBpcyBmb3JtZWQgYnkgdGhlIHBhZGRp
bmcgZWRnZSBvZiB0aGUgYW5jZXN0b3IuCiAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgcG9zaXRp
b25lZCB2YWx1ZSBpcyBpbiB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gb2YgdGhlIHBhZGRpbmcgYm94
LiBMZXQncyBjb252ZXJ0IGl0IHRvIGJvcmRlciBib3ggY29vcmRpbmF0ZSBzeXN0ZW0uCi0gICAg
YXV0byBjb250YWluaW5nQmxvY2tQYWRkaW5nVmVydGljYWxFZGdlID0gZm9ybWF0dGluZ0NvbnRl
eHQuZ2VvbWV0cnlGb3JCb3goKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkucGFkZGluZ0Jv
eFRvcCgpOwotICAgICp0b3AgKz0gY29udGFpbmluZ0Jsb2NrUGFkZGluZ1ZlcnRpY2FsRWRnZTsK
LSAgICAqYm90dG9tICs9IGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2U7CisgICAg
KnRvcCArPSB1c2VkT3V0T2ZGbG93VmVydGljYWxWYWx1ZXMuY29udGFpbmluZ0Jsb2NrUGFkZGlu
Z1RvcDsKKyAgICAqYm90dG9tICs9IHVzZWRPdXRPZkZsb3dWZXJ0aWNhbFZhbHVlcy5jb250YWlu
aW5nQmxvY2tQYWRkaW5nVG9wOwogCiAgICAgQVNTRVJUKHRvcCk7CiAgICAgQVNTRVJUKGJvdHRv
bSk7CkBAIC02MjEsNyArNjE0LDcgQEAgVmVydGljYWxHZW9tZXRyeSBGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkVmVydGljYWxHZW9tZXRyeSgKICAgICByZXR1
cm4geyAqdG9wLCAqYm90dG9tLCB7IGhlaWdodCwgeyAqdXNlZE1hcmdpbkJlZm9yZSwgKnVzZWRN
YXJnaW5BZnRlciB9IH0gfTsKIH0KIAotSG9yaXpvbnRhbEdlb21ldHJ5IEZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRIb3Jpem9udGFsR2VvbWV0cnkoY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIFVzZWRIb3Jpem9udGFsVmFsdWVzIHVzZWRIb3Jpem9udGFsVmFsdWVz
LCBVc2VkVmVydGljYWxWYWx1ZXMgdXNlZFZlcnRpY2FsVmFsdWVzKSBjb25zdAorSG9yaXpvbnRh
bEdlb21ldHJ5IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRI
b3Jpem9udGFsR2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRPdXRPZkZsb3dIb3Jp
em9udGFsVmFsdWVzIHVzZWRPdXRPZkZsb3dIb3Jpem9udGFsVmFsdWVzLCBVc2VkT3V0T2ZGbG93
VmVydGljYWxWYWx1ZXMgdXNlZE91dE9mRmxvd1ZlcnRpY2FsVmFsdWVzKSBjb25zdAogewogICAg
IEFTU0VSVChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgbGF5b3V0Qm94LnJl
cGxhY2VkKCkpOwogCkBAIC02MzksMTggKzYzMiwxNyBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9t
ZQogICAgIC8vIDUuIElmIGF0IHRoaXMgcG9pbnQgdGhlIHZhbHVlcyBhcmUgb3Zlci1jb25zdHJh
aW5lZCwgaWdub3JlIHRoZSB2YWx1ZSBmb3IgZWl0aGVyICdsZWZ0JyAoaW4gY2FzZSB0aGUgJ2Rp
cmVjdGlvbicgcHJvcGVydHkgb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sgaXMgJ3J0bCcpIG9yCiAg
ICAgLy8gICAncmlnaHQnIChpbiBjYXNlICdkaXJlY3Rpb24nIGlzICdsdHInKSBhbmQgc29sdmUg
Zm9yIHRoYXQgdmFsdWUuCiAKLSAgICBhdXRvJiBmb3JtYXR0aW5nQ29udGV4dCA9IHRoaXMtPmZv
cm1hdHRpbmdDb250ZXh0KCk7CiAgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsK
LSAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94
KGxheW91dEJveCk7Ci0gICAgYXV0byBjb250YWluaW5nQmxvY2tXaWR0aCA9IHVzZWRIb3Jpem9u
dGFsVmFsdWVzLmNvbnRhaW5pbmdCbG9ja1dpZHRoOworICAgIGF1dG8mIGJveEdlb21ldHJ5ID0g
Zm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOworICAgIGF1dG8g
Y29udGFpbmluZ0Jsb2NrV2lkdGggPSB1c2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcy5jb250
YWluaW5nQmxvY2tXaWR0aDsKICAgICBhdXRvIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24gPSBsYXlv
dXRCb3guY29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
OwogCiAgICAgYXV0byBsZWZ0ID0gY29tcHV0ZWRWYWx1ZUlmTm90QXV0byhzdHlsZS5sb2dpY2Fs
TGVmdCgpLCBjb250YWluaW5nQmxvY2tXaWR0aCk7CiAgICAgYXV0byByaWdodCA9IGNvbXB1dGVk
VmFsdWVJZk5vdEF1dG8oc3R5bGUubG9naWNhbFJpZ2h0KCksIGNvbnRhaW5pbmdCbG9ja1dpZHRo
KTsKLSAgICBhdXRvIGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbiA9IEdlb21ldHJ5Ojpjb21wdXRl
ZEhvcml6b250YWxNYXJnaW4obGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVlcyk7CisgICAg
YXV0byBjb21wdXRlZEhvcml6b250YWxNYXJnaW4gPSBHZW9tZXRyeTo6Y29tcHV0ZWRIb3Jpem9u
dGFsTWFyZ2luKGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgeyB1c2VkT3V0T2ZGbG93
SG9yaXpvbnRhbFZhbHVlcyB9KTsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB1c2VkTWFyZ2lu
U3RhcnQgPSBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQ7CiAgICAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gdXNlZE1hcmdpbkVuZCA9IGNvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbi5lbmQ7Ci0g
ICAgYXV0byB3aWR0aCA9IGlubGluZVJlcGxhY2VkV2lkdGhBbmRNYXJnaW4obGF5b3V0Qm94LCB1
c2VkSG9yaXpvbnRhbFZhbHVlcywgdXNlZFZlcnRpY2FsVmFsdWVzKS53aWR0aDsKKyAgICBhdXRv
IHdpZHRoID0gaW5saW5lUmVwbGFjZWRXaWR0aEFuZE1hcmdpbihsYXlvdXRCb3gsIFVzZWRIb3Jp
em9udGFsVmFsdWVzIHsgdXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMgfSwgVXNlZFZlcnRp
Y2FsVmFsdWVzIHsgdXNlZE91dE9mRmxvd1ZlcnRpY2FsVmFsdWVzIH0pLndpZHRoOwogICAgIGF1
dG8gcGFkZGluZ0xlZnQgPSBib3hHZW9tZXRyeS5wYWRkaW5nTGVmdCgpLnZhbHVlT3IoMCk7CiAg
ICAgYXV0byBwYWRkaW5nUmlnaHQgPSBib3hHZW9tZXRyeS5wYWRkaW5nUmlnaHQoKS52YWx1ZU9y
KDApOwogICAgIGF1dG8gYm9yZGVyTGVmdCA9IGJveEdlb21ldHJ5LmJvcmRlckxlZnQoKTsKQEAg
LTcxNyw5ICs3MDksOCBAQCBIb3Jpem9udGFsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZEhvcml6b250YWxHZW9tZQogCiAgICAgLy8gRm9yIG91
dC1vZi1mbG93IGVsZW1lbnRzIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIGZvcm1lZCBieSB0aGUg
cGFkZGluZyBlZGdlIG9mIHRoZSBhbmNlc3Rvci4KICAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBw
b3NpdGlvbmVkIHZhbHVlIGlzIGluIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUgcGFkZGlu
ZyBib3guIExldCdzIGNvbnZlcnQgaXQgdG8gYm9yZGVyIGJveCBjb29yZGluYXRlIHN5c3RlbS4K
LSAgICBhdXRvIGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2UgPSBmb3JtYXR0aW5n
Q29udGV4dC5nZW9tZXRyeUZvckJveCgqbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKS5wYWRk
aW5nQm94TGVmdCgpOwotICAgICpsZWZ0ICs9IGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNh
bEVkZ2U7Ci0gICAgKnJpZ2h0ICs9IGNvbnRhaW5pbmdCbG9ja1BhZGRpbmdWZXJ0aWNhbEVkZ2U7
CisgICAgKmxlZnQgKz0gdXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMuY29udGFpbmluZ0Js
b2NrUGFkZGluZ0xlZnQ7CisgICAgKnJpZ2h0ICs9IHVzZWRPdXRPZkZsb3dIb3Jpem9udGFsVmFs
dWVzLmNvbnRhaW5pbmdCbG9ja1BhZGRpbmdMZWZ0OwogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZv
cm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIltQb3NpdGlvbl1bV2lkdGhdW01hcmdp
bl0gLT4gb3V0LW9mLWZsb3cgcmVwbGFjZWQgLT4gbGVmdCgiIDw8ICpsZWZ0IDw8ICJweCkgcmln
aHQoIiAgPDwgKnJpZ2h0IDw8ICJweCkgd2lkdGgoIiA8PCB3aWR0aCA8PCAicHgpIG1hcmdpbigi
IDw8ICp1c2VkTWFyZ2luU3RhcnQgPDwgInB4LCAiICA8PCAqdXNlZE1hcmdpbkVuZCA8PCAicHgp
IGxheW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4geyAqbGVmdCwg
KnJpZ2h0LCB7IHdpZHRoLCB7ICp1c2VkTWFyZ2luU3RhcnQsICp1c2VkTWFyZ2luRW5kIH0sIGNv
bXB1dGVkSG9yaXpvbnRhbE1hcmdpbiB9IH07CkBAIC04MDMsMjIgKzc5NCwyMiBAQCBXaWR0aEFu
ZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRXaWR0
aEFuZE1hcmdpbihjb25zdAogICAgICAgICB1c2VkSG9yaXpvbnRhbFZhbHVlcy53aWR0aCwgVXNl
ZEhvcml6b250YWxNYXJnaW4geyBjb21wdXRlZEhvcml6b250YWxNYXJnaW4uc3RhcnQudmFsdWVP
cigwKSwgY29tcHV0ZWRIb3Jpem9udGFsTWFyZ2luLmVuZC52YWx1ZU9yKDApIH0gfSk7CiB9CiAK
LVZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dW
ZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkSG9yaXpvbnRhbFZhbHVl
cyB1c2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVzIHVzZWRWZXJ0aWNhbFZh
bHVlcykgY29uc3QKK1ZlcnRpY2FsR2VvbWV0cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpvdXRPZkZsb3dWZXJ0aWNhbEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkT3V0
T2ZGbG93SG9yaXpvbnRhbFZhbHVlcyB1c2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcywgVXNl
ZE91dE9mRmxvd1ZlcnRpY2FsVmFsdWVzIHVzZWRPdXRPZkZsb3dWZXJ0aWNhbFZhbHVlcykgY29u
c3QKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKTsKIAog
ICAgIGlmICghbGF5b3V0Qm94LnJlcGxhY2VkKCkpCi0gICAgICAgIHJldHVybiBvdXRPZkZsb3dO
b25SZXBsYWNlZFZlcnRpY2FsR2VvbWV0cnkobGF5b3V0Qm94LCB1c2VkSG9yaXpvbnRhbFZhbHVl
cywgdXNlZFZlcnRpY2FsVmFsdWVzKTsKLSAgICByZXR1cm4gb3V0T2ZGbG93UmVwbGFjZWRWZXJ0
aWNhbEdlb21ldHJ5KGxheW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMsIHVzZWRWZXJ0aWNh
bFZhbHVlcyk7CisgICAgICAgIHJldHVybiBvdXRPZkZsb3dOb25SZXBsYWNlZFZlcnRpY2FsR2Vv
bWV0cnkobGF5b3V0Qm94LCB1c2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcywgdXNlZE91dE9m
Rmxvd1ZlcnRpY2FsVmFsdWVzKTsKKyAgICByZXR1cm4gb3V0T2ZGbG93UmVwbGFjZWRWZXJ0aWNh
bEdlb21ldHJ5KGxheW91dEJveCwgdXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMsIHVzZWRP
dXRPZkZsb3dWZXJ0aWNhbFZhbHVlcyk7CiB9CiAKLUhvcml6b250YWxHZW9tZXRyeSBGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd0hvcml6b250YWxHZW9tZXRyeShjb25zdCBC
b3gmIGxheW91dEJveCwgVXNlZEhvcml6b250YWxWYWx1ZXMgdXNlZEhvcml6b250YWxWYWx1ZXMs
IFVzZWRWZXJ0aWNhbFZhbHVlcyB1c2VkVmVydGljYWxWYWx1ZXMpCitIb3Jpem9udGFsR2VvbWV0
cnkgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dIb3Jpem9udGFsR2VvbWV0
cnkoY29uc3QgQm94JiBsYXlvdXRCb3gsIFVzZWRPdXRPZkZsb3dIb3Jpem9udGFsVmFsdWVzIHVz
ZWRPdXRPZkZsb3dIb3Jpem9udGFsVmFsdWVzLCBVc2VkT3V0T2ZGbG93VmVydGljYWxWYWx1ZXMg
dXNlZE91dE9mRmxvd1ZlcnRpY2FsVmFsdWVzKQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNP
dXRPZkZsb3dQb3NpdGlvbmVkKCkpOwogCiAgICAgaWYgKCFsYXlvdXRCb3gucmVwbGFjZWQoKSkK
LSAgICAgICAgcmV0dXJuIG91dE9mRmxvd05vblJlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGxh
eW91dEJveCwgdXNlZEhvcml6b250YWxWYWx1ZXMpOwotICAgIHJldHVybiBvdXRPZkZsb3dSZXBs
YWNlZEhvcml6b250YWxHZW9tZXRyeShsYXlvdXRCb3gsIHVzZWRIb3Jpem9udGFsVmFsdWVzLCB1
c2VkVmVydGljYWxWYWx1ZXMpOworICAgICAgICByZXR1cm4gb3V0T2ZGbG93Tm9uUmVwbGFjZWRI
b3Jpem9udGFsR2VvbWV0cnkobGF5b3V0Qm94LCB1c2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVl
cyk7CisgICAgcmV0dXJuIG91dE9mRmxvd1JlcGxhY2VkSG9yaXpvbnRhbEdlb21ldHJ5KGxheW91
dEJveCwgdXNlZE91dE9mRmxvd0hvcml6b250YWxWYWx1ZXMsIHVzZWRPdXRPZkZsb3dWZXJ0aWNh
bFZhbHVlcyk7CiB9CiAKIEhlaWdodEFuZE1hcmdpbiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmZsb2F0aW5nSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBVc2VkSG9y
aXpvbnRhbFZhbHVlcyB1c2VkSG9yaXpvbnRhbFZhbHVlcywgVXNlZFZlcnRpY2FsVmFsdWVzIHVz
ZWRWZXJ0aWNhbFZhbHVlcykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9MYXlvdXRVbml0cy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgKaW5k
ZXggYjVjNTNhMmYzYjBhZDljYjg1ZjY0NGVhNDc5MzgzMmM0MjhkMDYwOC4uYjMzNTA5MGQ5YWQ3
ZGQ0ZGVmMGRmZmE1Mzc4M2M1ODNhOTk5M2I5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0xheW91dFVuaXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVu
aXRzLmgKQEAgLTEzNywxOCArMTM3LDM5IEBAIHN0cnVjdCBWZXJ0aWNhbEdlb21ldHJ5IHsKICAg
ICBIZWlnaHRBbmRNYXJnaW4gaGVpZ2h0QW5kTWFyZ2luOwogfTsKIAorc3RydWN0IFVzZWRPdXRP
ZkZsb3dIb3Jpem9udGFsVmFsdWVzIHsKKyAgICAvLyBGb3Igb3V0LW9mLWZsb3cgZWxlbWVudHMg
dGhlIGNvbnRlbnQgb3JpZ2luIGlzIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgcGFkZGluZyBib3gu
CisgICAgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tQYWRkaW5nTGVmdDsKKyAgICBMYXlvdXRV
bml0IGNvbnRhaW5pbmdCbG9ja1dpZHRoOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHdpZHRo
OworfTsKKworc3RydWN0IFVzZWRPdXRPZkZsb3dWZXJ0aWNhbFZhbHVlcyB7CisgICAgLy8gRm9y
IG91dC1vZi1mbG93IGVsZW1lbnRzIHRoZSBjb250ZW50IG9yaWdpbiBpcyB0aGUgY29udGFpbmlu
ZyBibG9jaydzIHBhZGRpbmcgYm94LgorICAgIExheW91dFVuaXQgY29udGFpbmluZ0Jsb2NrUGFk
ZGluZ1RvcDsKKyAgICBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja0hlaWdodDsKKyAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiBoZWlnaHQ7Cit9OworCiBzdHJ1Y3QgVXNlZEhvcml6b250YWxWYWx1
ZXMgeworCiAgICAgZXhwbGljaXQgVXNlZEhvcml6b250YWxWYWx1ZXMoTGF5b3V0VW5pdCBjb250
YWluaW5nQmxvY2tXaWR0aCkKICAgICAgICAgOiBjb250YWluaW5nQmxvY2tXaWR0aChjb250YWlu
aW5nQmxvY2tXaWR0aCkKLSAgICAgICAgewotICAgICAgICB9CisgICAgeworICAgIH0KIAogICAg
IGV4cGxpY2l0IFVzZWRIb3Jpem9udGFsVmFsdWVzKExheW91dFVuaXQgY29udGFpbmluZ0Jsb2Nr
V2lkdGgsIE9wdGlvbmFsPExheW91dFVuaXQ+IHdpZHRoLCBPcHRpb25hbDxVc2VkSG9yaXpvbnRh
bE1hcmdpbj4gbWFyZ2luKQogICAgICAgICA6IGNvbnRhaW5pbmdCbG9ja1dpZHRoKGNvbnRhaW5p
bmdCbG9ja1dpZHRoKQogICAgICAgICAsIHdpZHRoKHdpZHRoKQogICAgICAgICAsIG1hcmdpbiht
YXJnaW4pCi0gICAgICAgIHsKLSAgICAgICAgfQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNp
dCBVc2VkSG9yaXpvbnRhbFZhbHVlcyhVc2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcyB1c2Vk
T3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcykKKyAgICAgICAgOiBjb250YWluaW5nQmxvY2tXaWR0
aCh1c2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcy5jb250YWluaW5nQmxvY2tXaWR0aCkKKyAg
ICAgICAgLCB3aWR0aCh1c2VkT3V0T2ZGbG93SG9yaXpvbnRhbFZhbHVlcy53aWR0aCkKKyAgICB7
CisgICAgfQogCiAgICAgTGF5b3V0VW5pdCBjb250YWluaW5nQmxvY2tXaWR0aDsKICAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiB3aWR0aDsKQEAgLTE1Niw2ICsxNzcsMjEgQEAgc3RydWN0IFVzZWRI
b3Jpem9udGFsVmFsdWVzIHsKIH07CiAKIHN0cnVjdCBVc2VkVmVydGljYWxWYWx1ZXMgeworCisg
ICAgVXNlZFZlcnRpY2FsVmFsdWVzKCkgPSBkZWZhdWx0OworCisgICAgZXhwbGljaXQgVXNlZFZl
cnRpY2FsVmFsdWVzKE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbnRhaW5pbmdCbG9ja0hlaWdodCwg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gaGVpZ2h0KQorICAgICAgICA6IGNvbnRhaW5pbmdCbG9ja0hl
aWdodChjb250YWluaW5nQmxvY2tIZWlnaHQpCisgICAgICAgICwgaGVpZ2h0KGhlaWdodCkKKyAg
ICB7CisgICAgfQorCisgICAgZXhwbGljaXQgVXNlZFZlcnRpY2FsVmFsdWVzKFVzZWRPdXRPZkZs
b3dWZXJ0aWNhbFZhbHVlcyB1c2VkT3V0T2ZGbG93VmVydGljYWxWYWx1ZXMpCisgICAgICAgIDog
Y29udGFpbmluZ0Jsb2NrSGVpZ2h0KHVzZWRPdXRPZkZsb3dWZXJ0aWNhbFZhbHVlcy5jb250YWlu
aW5nQmxvY2tIZWlnaHQpCisgICAgICAgICwgaGVpZ2h0KHVzZWRPdXRPZkZsb3dWZXJ0aWNhbFZh
bHVlcy5oZWlnaHQpCisgICAgeworICAgIH0KKwogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNv
bnRhaW5pbmdCbG9ja0hlaWdodDsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBoZWlnaHQ7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJs
ZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1h
dHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNzFmNWMyZGFmMGQ5OWRmZTI2
YmY2ZmVjYWRhZGEwNjlmYTZlNWU2Ny4uOTdiN2E4N2E3NzA4OGU0OTRkZDI5ZjI4MTJlNTY0MDU3
MjI5MzRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGlu
Zy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
dGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xOTksNyArMTk5
LDggQEAgdm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlUHJlZmVycmVkV2lkdGhG
b3JDb2x1bW5zKCkKICAgICAgICAgICAgICAgICBpbnRyaW5zaWNXaWR0aCA9IGxheW91dFN0YXRl
KCkuY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoZG93bmNhc3Q8Q29udGFpbmVyPih0YWJsZUNlbGxC
b3gpKS0+Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCk7CiAgICAgICAgICAgICBp
bnRyaW5zaWNXaWR0aCA9IGdlb21ldHJ5KCkuY29uc3RyYWluQnlNaW5NYXhXaWR0aCh0YWJsZUNl
bGxCb3gsICppbnRyaW5zaWNXaWR0aCk7CiAgICAgICAgICAgICBhdXRvIGJvcmRlciA9IGdlb21l
dHJ5KCkuY29tcHV0ZWRCb3JkZXIodGFibGVDZWxsQm94KTsKLSAgICAgICAgICAgIGF1dG8gcGFk
ZGluZyA9ICpnZW9tZXRyeSgpLmNvbXB1dGVkUGFkZGluZyh0YWJsZUNlbGxCb3gsIFVzZWRIb3Jp
em9udGFsVmFsdWVzKHsgfSkpOworICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBhdmFpbGFibGUg
d2lkdGguCisgICAgICAgICAgICBhdXRvIHBhZGRpbmcgPSAqZ2VvbWV0cnkoKS5jb21wdXRlZFBh
ZGRpbmcodGFibGVDZWxsQm94LCBVc2VkSG9yaXpvbnRhbFZhbHVlcyhMYXlvdXRVbml0IHsgfSkp
OwogCiAgICAgICAgICAgICBpbnRyaW5zaWNXaWR0aC0+ZXhwYW5kKGJvcmRlci5ob3Jpem9udGFs
LndpZHRoKCkgKyBwYWRkaW5nLmhvcml6b250YWwud2lkdGgoKSk7CiAgICAgICAgICAgICBmb3Jt
YXR0aW5nU3RhdGUuc2V0SW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveCh0YWJsZUNlbGxC
b3gsICppbnRyaW5zaWNXaWR0aCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>