<?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>214779</bug_id>
          
          <creation_ts>2020-07-24 20:27:57 -0700</creation_ts>
          <short_desc>[LFC][IFC] Use the term &apos;baseline&apos; to indicate alignment baseline</short_desc>
          <delta_ts>2020-08-24 07:50:36 -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>
          
          <blocked>215087</blocked>
    
    <blocked>215752</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>1674981</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-07-24 20:27:57 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1674982</commentid>
    <comment_count>1</comment_count>
      <attachid>405219</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-07-24 20:30:06 -0700</bug_when>
    <thetext>Created attachment 405219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677073</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-31 20:28:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/66411176&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682271</commentid>
    <comment_count>3</comment_count>
      <attachid>407083</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-08-23 17:18:54 -0700</bug_when>
    <thetext>Created attachment 407083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682321</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-24 07:50:35 -0700</bug_when>
    <thetext>Committed r266056: &lt;https://trac.webkit.org/changeset/266056&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407083.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405219</attachid>
            <date>2020-07-24 20:30:06 -0700</date>
            <delta_ts>2020-08-23 17:18:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214779-20200724203005.patch</filename>
            <type>text/plain</type>
            <size>32456</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGE4NmNkZDRlOWQ2MDc1
MjY2YWIzMzY1ZWI2M2JjOTJjOTUyYjc5ZC4uMGE4NDE0YzQwZTQ5MzZiMDA2ZjFhMjJmMjIyY2Fi
M2QxODE3YzBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIwLTA3LTI0ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBVc2UgdGhl
IHRlcm0gJ2Jhc2VsaW5lJyB0byBpbmRpY2F0ZSBhbGlnbm1lbnQgYmFzZWxpbmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc3OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgaW4g
cHJlcGFyYXRpb24gZm9yIGRlY291cGxpbmcgdGhlIGxpbmUgYm94IGFuZCB0aGUgcm9vdCBpbmxp
bmUgYm94IGdlb21ldHJ5LgorCisgICAgICAgICogbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQ
YWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OnBhaW50SW5saW5lQ29udGVu
dCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6c2V0RGlzcGxheUJveGVzRm9yTGluZSk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpsaW5lSGVpZ2h0
Q29uc3RyYWludHMgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmVCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QXNjZW50QW5kRGVzY2Vu
dDo6aGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6YXNj
ZW50QW5kRGVzY2VudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6
OkxpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpJbmxpbmVCb3g6
OklubGluZUJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldEJhc2Vs
aW5lSWZHcmVhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0QXNj
ZW50SWZHcmVhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0RGVz
Y2VudElmR3JlYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmJhc2Vs
aW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6cmVzZXRCYXNl
bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUJveDo6QmFz
ZWxpbmU6OmhlaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkxpbmVCb3g6OnNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6YmFzZWxpbmVPZmZzZXQgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpJbmxpbmVCb3g6OkJhc2VsaW5l
OjpCYXNlbGluZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6
OklubGluZUJveDo6QmFzZWxpbmU6OnNldEFzY2VudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUJveDo6QmFzZWxpbmU6OnNldERlc2NlbnQpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpJbmxpbmVCb3g6OkJh
c2VsaW5lOjpyZXNldCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVC
b3g6OklubGluZUJveDo6QmFzZWxpbmU6OmFzY2VudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUJveDo6QmFzZWxpbmU6OmRlc2NlbnQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUxpbmVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6
OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6YWxp
Z25Db250ZW50VmVydGljYWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWls
ZGVyOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKToKKyAgICAgICAgKiBsYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpMaW5lQnVpbGRlcjo6YmFzZWxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpMaW5lQnVpbGRlcjo6YmFzZWxpbmVPZmZzZXQgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnBhaW50
KToKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0
OjpzZXRVc2VkR2VvbWV0cnlGb3JDZWxscyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRh
YmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvclJvd3MpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlQW5kRGlzdHJp
YnV0ZUV4dHJhU3BhY2UpOgorICAgICAgICAqIGxheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
VGFibGVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnVzZWRCYXNlbGluZUZvckNlbGwpOgor
ICAgICAgICAqIGxheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmg6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OlRhYmxlR3JpZDo6Um93OjpzZXRCYXNlbGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OlRhYmxlR3JpZDo6Um93OjpiYXNlbGluZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlR3JpZDo6Q2VsbDo6c2V0QmFzZWxpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUdyaWQ6OkNlbGw6OmJhc2VsaW5lIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVHcmlkOjpSb3c6OnNldEJhc2VsaW5lT2Zmc2V0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVHcmlkOjpSb3c6OmJh
c2VsaW5lT2Zmc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
VGFibGVHcmlkOjpDZWxsOjpzZXRCYXNlbGluZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OlRhYmxlR3JpZDo6Q2VsbDo6YmFzZWxpbmVPZmZzZXQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGxheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVMYXlvdXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpUYWJs
ZUxheW91dDo6ZGlzdHJpYnV0ZWRWZXJ0aWNhbFNwYWNlKToKKwogMjAyMC0wNy0yNCAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gSW50cm9kdWNl
IExpbmVCb3ggYW5kIHJvb3QgaW5saW5lIGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKaW5kZXggNGJjZmZkMmFiMTRkNTVm
MWQ4NjM4ODdiZTJiYjE4MzU0MjNmZDBhNi4uOTZhZWZkOGIxNWQ4NjdlZTY4NmQyNDBhYTgwYzM5
MWQ0ZGFiNGIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVl
L0Rpc3BsYXlQYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheVBhaW50ZXIuY3BwCkBAIC0xMjksMTEgKzEyOSwxMSBAQCBzdGF0aWMgdm9pZCBw
YWludElubGluZUNvbnRlbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBMYXlvdXRQb2ludCBh
YnNvbHV0ZU9mZgogICAgICAgICAgICAgYXV0byBhYnNvbHV0ZUxlZnQgPSBhYnNvbHV0ZU9mZnNl
dC54KCkgKyBydW4ubGVmdCgpOwogICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBub24tYmFzZWxp
bmUgYWxpZ24gcGFpbnRpbmcKICAgICAgICAgICAgIGF1dG8mIGxpbmVCb3ggPSBkaXNwbGF5SW5s
aW5lQ29udGVudC0+bGluZUJveEZvclJ1bihydW4pOwotICAgICAgICAgICAgYXV0byBiYXNlbGlu
ZU9mZnNldCA9IGFic29sdXRlT2Zmc2V0LnkoKSArIGxpbmVCb3gudG9wKCkgKyBsaW5lQm94LmJh
c2VsaW5lKCk7CisgICAgICAgICAgICBhdXRvIGJhc2VsaW5lID0gYWJzb2x1dGVPZmZzZXQueSgp
ICsgbGluZUJveC50b3AoKSArIGxpbmVCb3guYmFzZWxpbmUoKTsKICAgICAgICAgICAgIGF1dG8g
ZXhwYW5zaW9uID0gcnVuLmV4cGFuc2lvbigpOwogICAgICAgICAgICAgYXV0byB0ZXh0UnVuID0g
VGV4dFJ1biB7IHRleHRDb250ZW50LT5jb250ZW50KCksIHJ1bi5sZWZ0KCkgLSBsaW5lQm94Lmxl
ZnQoKSwgZXhwYW5zaW9uLmhvcml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9
OwogICAgICAgICAgICAgdGV4dFJ1bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3Bh
Y2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsKLSAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoc3R5
bGUuZm9udENhc2NhZGUoKSwgdGV4dFJ1biwgeyBhYnNvbHV0ZUxlZnQsIGJhc2VsaW5lT2Zmc2V0
IH0pOworICAgICAgICAgICAgY29udGV4dC5kcmF3VGV4dChzdHlsZS5mb250Q2FzY2FkZSgpLCB0
ZXh0UnVuLCB7IGFic29sdXRlTGVmdCwgYmFzZWxpbmUgfSk7CiAgICAgICAgIH0gZWxzZSBpZiAo
YXV0byogY2FjaGVkSW1hZ2UgPSBydW4uaW1hZ2UoKSkgewogICAgICAgICAgICAgYXV0byBydW5B
YnNvbHV0ZVJlY3QgPSBGbG9hdFJlY3QgeyBhYnNvbHV0ZU9mZnNldC54KCkgKyBydW4ubGVmdCgp
LCBhYnNvbHV0ZU9mZnNldC55KCkgKyBydW4udG9wKCksIHJ1bi53aWR0aCgpLCBydW4uaGVpZ2h0
KCkgfTsKICAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKCpjYWNoZWRJbWFnZS0+aW1hZ2Uo
KSwgcnVuQWJzb2x1dGVSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApp
bmRleCBlYTU1MmE2MmQ1YWZkNzQ0MTYwYjcyYmM2ZjExN2QzMDlkZDZjMGJkLi43NzlkMzgyMDY3
NWQ5YWNiMTc3OGE3YzNiNmU4YTM0M2YwNmY3N2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6c2V0RGlzcGxheUJveGVzRm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGkK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIC8vIEZJWE1FOiBUaGlz
IGlzIHdoZXJlIHRoZSBsb2dpY2FsIHRvIHBoeXNpY2FsIHRyYW5zbGF0ZSBzaG91bGQgaGFwcGVu
LgotICAgIGlubGluZUNvbnRlbnQubGluZUJveGVzLmFwcGVuZCh7IGxpbmVCb3gubG9naWNhbFJl
Y3QoKSwgbGluZUJveC5zY3JvbGxhYmxlT3ZlcmZsb3coKSwgbGluZUlua092ZXJmbG93LCBsaW5l
Qm94LmJhc2VsaW5lT2Zmc2V0KCkgfSk7CisgICAgaW5saW5lQ29udGVudC5saW5lQm94ZXMuYXBw
ZW5kKHsgbGluZUJveC5sb2dpY2FsUmVjdCgpLCBsaW5lQm94LnNjcm9sbGFibGVPdmVyZmxvdygp
LCBsaW5lSW5rT3ZlcmZsb3csIGxpbmVCb3guYmFzZWxpbmUoKSB9KTsKIH0KIAogdm9pZCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6aW52YWxpZGF0ZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBJbnZh
bGlkYXRpb25TdGF0ZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJr
cy5jcHAKaW5kZXggNTgzMDg3ODgzYjM0ODdiY2Y5YWE5YzRkYjZiMWUzOWJlMjU5N2VlMS4uMTNi
OGQwNzg3NWQ2MTg0Njc4YWE3NDA5OTk2NGY2NTk0MzAzMzM1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRR
dWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBAIG5hbWVz
cGFjZSBMYXlvdXQgewogTGluZUJ1aWxkZXI6OkNvbnN0cmFpbnRzOjpIZWlnaHRBbmRCYXNlbGlu
ZSBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpsaW5lSGVpZ2h0Q29uc3RyYWludHMo
Y29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nUm9vdCkgY29uc3QKIHsKICAgICBJbmxpbmVM
YXlvdXRVbml0IGNvbXB1dGVkTGluZUhlaWdodCA9IGZvcm1hdHRpbmdSb290LnN0eWxlKCkuY29t
cHV0ZWRMaW5lSGVpZ2h0KCk7Ci0gICAgYXV0byBoYWxmTGVhZGluZ0FzY2VudCA9IExpbmVCdWls
ZGVyOjpoYWxmTGVhZGluZ01ldHJpY3MoZm9ybWF0dGluZ1Jvb3Quc3R5bGUoKS5mb250TWV0cmlj
cygpLCBjb21wdXRlZExpbmVIZWlnaHQpLmFzY2VudCgpOworICAgIGF1dG8gaGFsZkxlYWRpbmdB
c2NlbnQgPSBMaW5lQnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKGZvcm1hdHRpbmdSb290LnN0
eWxlKCkuZm9udE1ldHJpY3MoKSwgY29tcHV0ZWRMaW5lSGVpZ2h0KS5hc2NlbnQ7CiAgICAgLy8g
TmVnYXRpdmUgbGluZUhlaWdodCB2YWx1ZSBtZWFucyB0aGUgbGluZS1oZWlnaHQgaXMgbm90IHNl
dAogICAgIGlmIChsYXlvdXRTdGF0ZSgpLmluTm9RdWlya3NNb2RlKCkgfHwgIWZvcm1hdHRpbmdS
b290LnN0eWxlKCkubGluZUhlaWdodCgpLmlzTmVnYXRpdmUoKSkKICAgICAgICAgcmV0dXJuIHsg
Y29tcHV0ZWRMaW5lSGVpZ2h0LCBoYWxmTGVhZGluZ0FzY2VudCB9OwogCiAgICAgYXV0byBxdWly
a0hhbGZMZWFkaW5nID0gTGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmljcyhmb3JtYXR0aW5n
Um9vdC5zdHlsZSgpLmZvbnRNZXRyaWNzKCksIDBfbHUpOwotICAgIHJldHVybiB7IHF1aXJrSGFs
ZkxlYWRpbmcuaGVpZ2h0KCksIHF1aXJrSGFsZkxlYWRpbmcuYXNjZW50KCkgfTsKKyAgICByZXR1
cm4geyBxdWlya0hhbGZMZWFkaW5nLmhlaWdodCgpLCBxdWlya0hhbGZMZWFkaW5nLmFzY2VudCB9
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lQm94LmgKaW5kZXggMmUwZGEzMDQ3MzUyZjc5ZmY1ZWFjOWFiMDNjYThi
NDQ2ZWE3YTRhZS4uZDVkNzUzMjAwNzI2YWExZDExYjZkMjc5MzdlYjIzZDhlOTgzZWQ2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGlu
ZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUxpbmVCb3guaApAQCAtMzMsMzggKzMzLDI0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1l
c3BhY2UgTGF5b3V0IHsKIAorc3RydWN0IEFzY2VudEFuZERlc2NlbnQgeworICAgIElubGluZUxh
eW91dFVuaXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYXNjZW50ICsgZGVzY2VudDsgfQorCisg
ICAgSW5saW5lTGF5b3V0VW5pdCBhc2NlbnQgeyAwIH07CisgICAgSW5saW5lTGF5b3V0VW5pdCBk
ZXNjZW50IHsgMCB9OworfTsKKwogY2xhc3MgTGluZUJveCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RydWN0IElubGluZUJveCB7Ci0gICAgICAgIHN0cnVj
dCBCYXNlbGluZSB7Ci0gICAgICAgICAgICBCYXNlbGluZShJbmxpbmVMYXlvdXRVbml0IGFzY2Vu
dCwgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KTsKLSAgICAgICAgICAgIEJhc2VsaW5lKCkgPSBk
ZWZhdWx0OwotCi0gICAgICAgICAgICB2b2lkIHNldEFzY2VudChJbmxpbmVMYXlvdXRVbml0KTsK
LSAgICAgICAgICAgIHZvaWQgc2V0RGVzY2VudChJbmxpbmVMYXlvdXRVbml0KTsKLQotICAgICAg
ICAgICAgdm9pZCByZXNldCgpOwotCi0gICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGhlaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIGFzY2VudCgpICsgZGVzY2VudCgpOyB9Ci0gICAgICAgICAgICBJ
bmxpbmVMYXlvdXRVbml0IGFzY2VudCgpIGNvbnN0OwotICAgICAgICAgICAgSW5saW5lTGF5b3V0
VW5pdCBkZXNjZW50KCkgY29uc3Q7Ci0KLSAgICAgICAgcHJpdmF0ZToKLSNpZiBBU1NFUlRfRU5B
QkxFRAotICAgICAgICAgICAgYm9vbCBtX2hhc1ZhbGlkQXNjZW50IHsgZmFsc2UgfTsKLSAgICAg
ICAgICAgIGJvb2wgbV9oYXNWYWxpZERlc2NlbnQgeyBmYWxzZSB9OwotI2VuZGlmCi0gICAgICAg
ICAgICBJbmxpbmVMYXlvdXRVbml0IG1fYXNjZW50IHsgMCB9OwotICAgICAgICAgICAgSW5saW5l
TGF5b3V0VW5pdCBtX2Rlc2NlbnQgeyAwIH07Ci0gICAgICAgIH07Ci0gICAgICAgIElubGluZUJv
eChjb25zdCBCYXNlbGluZSYpOworICAgICAgICBJbmxpbmVCb3goY29uc3QgQXNjZW50QW5kRGVz
Y2VudCYpOwogICAgICAgICBJbmxpbmVCb3goKSA9IGRlZmF1bHQ7CiAKLSAgICAgICAgQmFzZWxp
bmUgYmFzZWxpbmU7CisgICAgICAgIEFzY2VudEFuZERlc2NlbnQgYXNjZW50QW5kRGVzY2VudDsK
ICAgICB9OwogCi0gICAgTGluZUJveChjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiwgY29uc3Qg
SW5saW5lQm94OjpCYXNlbGluZSYsIElubGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQpOwor
ICAgIExpbmVCb3goY29uc3QgRGlzcGxheTo6SW5saW5lUmVjdCYsIGNvbnN0IEFzY2VudEFuZERl
c2NlbnQmLCBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lKTsKICAgICBMaW5lQm94KCkgPSBkZWZh
dWx0OwogCiAgICAgY29uc3QgRGlzcGxheTo6SW5saW5lUmVjdCYgbG9naWNhbFJlY3QoKSBjb25z
dCB7IHJldHVybiBtX3JlY3Q7IH0KQEAgLTc4LDcgKzY0LDYgQEAgcHVibGljOgogICAgIElubGlu
ZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LndpZHRoKCk7
IH0KICAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBt
X3JlY3QuaGVpZ2h0KCk7IH0KIAotICAgIGNvbnN0IElubGluZUJveDo6QmFzZWxpbmUmIGJhc2Vs
aW5lKCkgY29uc3Q7CiAgICAgLy8gQmFzZWxpbmUgb2Zmc2V0IGZyb20gbGluZSBsb2dpY2FsIHRv
cC4gTm90ZSB0aGF0IG9mZnNldCBkb2VzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0byBhc2NlbnQu
CiAgICAgLy8KICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tICAgIGxpbmUgbG9naWNhbCB0b3Ag
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0gKHRvcCBhbGlnbikKQEAgLTk0LDggKzc5LDEwIEBAIHB1
YmxpYzoKICAgICAvLyAgIHwgZGVzY2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHYKICAgICAvLyAgIHYKICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tICAgIGxpbmUgbG9n
aWNhbCBib3R0b20gIC0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGJh
c2VsaW5lT2Zmc2V0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRCYXNlbGluZU9mZnNldElmR3JlYXRl
cihJbmxpbmVMYXlvdXRVbml0KTsKKyAgICBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lKCkgY29u
c3Q7CisgICAgY29uc3QgQXNjZW50QW5kRGVzY2VudCYgYXNjZW50QW5kRGVzY2VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fcm9vdElubGluZUJveC5hc2NlbnRBbmREZXNjZW50OyB9CisKKyAgICB2b2lk
IHNldEJhc2VsaW5lSWZHcmVhdGVyKElubGluZUxheW91dFVuaXQpOwogICAgIHZvaWQgc2V0QXNj
ZW50SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQpOwogICAgIHZvaWQgc2V0RGVzY2VudElmR3Jl
YXRlcihJbmxpbmVMYXlvdXRVbml0KTsKIApAQCAtMTI5LDI4ICsxMTYsMjYgQEAgcHVibGljOgog
cHJpdmF0ZToKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgbV9oYXNWYWxpZEJhc2VsaW5l
IHsgZmFsc2UgfTsKLSAgICBib29sIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCB7IGZhbHNlIH07
CiAjZW5kaWYKICAgICBEaXNwbGF5OjpJbmxpbmVSZWN0IG1fcmVjdDsKICAgICBEaXNwbGF5OjpJ
bmxpbmVSZWN0IG1fc2Nyb2xsYWJsZU92ZXJmbG93OwotICAgIElubGluZUxheW91dFVuaXQgbV9i
YXNlbGluZU9mZnNldCB7IDAgfTsKKyAgICBJbmxpbmVMYXlvdXRVbml0IG1fYmFzZWxpbmUgeyAw
IH07CiAgICAgYm9vbCBtX2lzQ29uc2lkZXJlZEVtcHR5IHsgdHJ1ZSB9OwogICAgIElubGluZUJv
eCBtX3Jvb3RJbmxpbmVCb3g7CiB9OwogCi1pbmxpbmUgTGluZUJveDo6TGluZUJveChjb25zdCBE
aXNwbGF5OjpJbmxpbmVSZWN0JiByZWN0LCBjb25zdCBJbmxpbmVCb3g6OkJhc2VsaW5lJiBiYXNl
bGluZSwgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZU9mZnNldCkKK2lubGluZSBMaW5lQm94OjpM
aW5lQm94KGNvbnN0IERpc3BsYXk6OklubGluZVJlY3QmIHJlY3QsIGNvbnN0IEFzY2VudEFuZERl
c2NlbnQmIGFzY2VudEFuZERlc2NlbnQsIElubGluZUxheW91dFVuaXQgYmFzZWxpbmUpCiAgICAg
OiBtX3JlY3QocmVjdCkKLSAgICAsIG1fYmFzZWxpbmVPZmZzZXQoYmFzZWxpbmVPZmZzZXQpCi0g
ICAgLCBtX3Jvb3RJbmxpbmVCb3goYmFzZWxpbmUpCisgICAgLCBtX2Jhc2VsaW5lKGJhc2VsaW5l
KQorICAgICwgbV9yb290SW5saW5lQm94KGFzY2VudEFuZERlc2NlbnQpCiB7CiAjaWYgQVNTRVJU
X0VOQUJMRUQKICAgICBtX2hhc1ZhbGlkQmFzZWxpbmUgPSB0cnVlOwotICAgIG1faGFzVmFsaWRC
YXNlbGluZU9mZnNldCA9IHRydWU7CiAjZW5kaWYKIH0KIAotaW5saW5lIExpbmVCb3g6OklubGlu
ZUJveDo6SW5saW5lQm94KGNvbnN0IExpbmVCb3g6OklubGluZUJveDo6QmFzZWxpbmUmIGJhc2Vs
aW5lKQotICAgIDogYmFzZWxpbmUoYmFzZWxpbmUpCitpbmxpbmUgTGluZUJveDo6SW5saW5lQm94
OjpJbmxpbmVCb3goY29uc3QgQXNjZW50QW5kRGVzY2VudCYgYXNjZW50QW5kRGVzY2VudCkKKyAg
ICA6IGFzY2VudEFuZERlc2NlbnQoYXNjZW50QW5kRGVzY2VudCkKIHsKIH0KIApAQCAtMTYxLDk2
ICsxNDYsNDMgQEAgaW5saW5lIHZvaWQgTGluZUJveDo6c2V0TG9naWNhbEhlaWdodElmR3JlYXRl
cihJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpCiAgICAgbV9yZWN0LnNldEhlaWdodChs
b2dpY2FsSGVpZ2h0KTsKIH0KIAotaW5saW5lIGNvbnN0IExpbmVCb3g6OklubGluZUJveDo6QmFz
ZWxpbmUmIExpbmVCb3g6OmJhc2VsaW5lKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobV9oYXNWYWxp
ZEJhc2VsaW5lKTsKLSAgICByZXR1cm4gbV9yb290SW5saW5lQm94LmJhc2VsaW5lOwotfQotCi1p
bmxpbmUgdm9pZCBMaW5lQm94OjpzZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcihJbmxpbmVMYXlv
dXRVbml0IGJhc2VsaW5lT2Zmc2V0KQoraW5saW5lIHZvaWQgTGluZUJveDo6c2V0QmFzZWxpbmVJ
ZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZSkKIHsKICNpZiBBU1NFUlRfRU5BQkxF
RAotICAgIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCA9IHRydWU7CisgICAgbV9oYXNWYWxpZEJh
c2VsaW5lID0gdHJ1ZTsKICNlbmRpZgotICAgIG1fYmFzZWxpbmVPZmZzZXQgPSBzdGQ6Om1heChi
YXNlbGluZU9mZnNldCwgbV9iYXNlbGluZU9mZnNldCk7CisgICAgbV9iYXNlbGluZSA9IHN0ZDo6
bWF4KGJhc2VsaW5lLCBtX2Jhc2VsaW5lKTsKIH0KIAogaW5saW5lIHZvaWQgTGluZUJveDo6c2V0
QXNjZW50SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQgYXNjZW50KQogewotICAgIGlmIChhc2Nl
bnQgPCBtX3Jvb3RJbmxpbmVCb3guYmFzZWxpbmUuYXNjZW50KCkpCisgICAgaWYgKGFzY2VudCA8
IG1fcm9vdElubGluZUJveC5hc2NlbnRBbmREZXNjZW50LmFzY2VudCkKICAgICAgICAgcmV0dXJu
OwotICAgIHNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKGFzY2VudCk7Ci0gICAgbV9yb290SW5s
aW5lQm94LmJhc2VsaW5lLnNldEFzY2VudChhc2NlbnQpOworICAgIHNldEJhc2VsaW5lSWZHcmVh
dGVyKGFzY2VudCk7CisgICAgbV9yb290SW5saW5lQm94LmFzY2VudEFuZERlc2NlbnQuYXNjZW50
ID0gYXNjZW50OwogfQogCiBpbmxpbmUgdm9pZCBMaW5lQm94OjpzZXREZXNjZW50SWZHcmVhdGVy
KElubGluZUxheW91dFVuaXQgZGVzY2VudCkKIHsKLSAgICBpZiAoZGVzY2VudCA8IG1fcm9vdElu
bGluZUJveC5iYXNlbGluZS5kZXNjZW50KCkpCisgICAgaWYgKGRlc2NlbnQgPCBtX3Jvb3RJbmxp
bmVCb3guYXNjZW50QW5kRGVzY2VudC5kZXNjZW50KQogICAgICAgICByZXR1cm47Ci0gICAgbV9y
b290SW5saW5lQm94LmJhc2VsaW5lLnNldERlc2NlbnQoZGVzY2VudCk7CisgICAgbV9yb290SW5s
aW5lQm94LmFzY2VudEFuZERlc2NlbnQuZGVzY2VudCA9IGRlc2NlbnQ7CiB9CiAKLWlubGluZSBJ
bmxpbmVMYXlvdXRVbml0IExpbmVCb3g6OmJhc2VsaW5lT2Zmc2V0KCkgY29uc3QKK2lubGluZSBJ
bmxpbmVMYXlvdXRVbml0IExpbmVCb3g6OmJhc2VsaW5lKCkgY29uc3QKIHsKLSAgICBBU1NFUlQo
bV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0KTsKLSAgICByZXR1cm4gbV9iYXNlbGluZU9mZnNldDsK
KyAgICBBU1NFUlQobV9oYXNWYWxpZEJhc2VsaW5lKTsKKyAgICByZXR1cm4gbV9iYXNlbGluZTsK
IH0KIAogaW5saW5lIHZvaWQgTGluZUJveDo6cmVzZXRCYXNlbGluZSgpCiB7CiAjaWYgQVNTRVJU
X0VOQUJMRUQKLSAgICBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0cnVlOwotI2VuZGlmCi0g
ICAgbV9iYXNlbGluZU9mZnNldCA9IDBfbHU7Ci0gICAgbV9yb290SW5saW5lQm94LmJhc2VsaW5l
LnJlc2V0KCk7Ci19Ci0KLWlubGluZSBMaW5lQm94OjpJbmxpbmVCb3g6OkJhc2VsaW5lOjpCYXNl
bGluZShJbmxpbmVMYXlvdXRVbml0IGFzY2VudCwgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50KQot
ICAgIDogbV9hc2NlbnQoYXNjZW50KQotICAgICwgbV9kZXNjZW50KGRlc2NlbnQpCi17Ci0jaWYg
QVNTRVJUX0VOQUJMRUQKLSAgICBtX2hhc1ZhbGlkQXNjZW50ID0gdHJ1ZTsKLSAgICBtX2hhc1Zh
bGlkRGVzY2VudCA9IHRydWU7Ci0jZW5kaWYKLX0KLQotaW5saW5lIHZvaWQgTGluZUJveDo6SW5s
aW5lQm94OjpCYXNlbGluZTo6c2V0QXNjZW50KElubGluZUxheW91dFVuaXQgYXNjZW50KQotewot
I2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNWYWxpZEFzY2VudCA9IHRydWU7Ci0jZW5kaWYK
LSAgICBtX2FzY2VudCA9IGFzY2VudDsKLX0KLQotaW5saW5lIHZvaWQgTGluZUJveDo6SW5saW5l
Qm94OjpCYXNlbGluZTo6c2V0RGVzY2VudChJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQpCi17Ci0j
aWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7Ci0jZW5kaWYK
LSAgICBtX2Rlc2NlbnQgPSBkZXNjZW50OwotfQotCi1pbmxpbmUgdm9pZCBMaW5lQm94OjpJbmxp
bmVCb3g6OkJhc2VsaW5lOjpyZXNldCgpCi17Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2hh
c1ZhbGlkQXNjZW50ID0gdHJ1ZTsKLSAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7CisgICAg
bV9oYXNWYWxpZEJhc2VsaW5lID0gdHJ1ZTsKICNlbmRpZgotICAgIG1fYXNjZW50ID0gMF9sdTsK
LSAgICBtX2Rlc2NlbnQgPSAwX2x1OwotfQotCi1pbmxpbmUgSW5saW5lTGF5b3V0VW5pdCBMaW5l
Qm94OjpJbmxpbmVCb3g6OkJhc2VsaW5lOjphc2NlbnQoKSBjb25zdAotewotICAgIEFTU0VSVCht
X2hhc1ZhbGlkQXNjZW50KTsKLSAgICByZXR1cm4gbV9hc2NlbnQ7Ci19Ci0KLWlubGluZSBJbmxp
bmVMYXlvdXRVbml0IExpbmVCb3g6OklubGluZUJveDo6QmFzZWxpbmU6OmRlc2NlbnQoKSBjb25z
dAotewotICAgIEFTU0VSVChtX2hhc1ZhbGlkRGVzY2VudCk7Ci0gICAgcmV0dXJuIG1fZGVzY2Vu
dDsKKyAgICBtX2Jhc2VsaW5lID0gMF9sdTsKKyAgICBtX3Jvb3RJbmxpbmVCb3guYXNjZW50QW5k
RGVzY2VudC5kZXNjZW50ID0geyB9OworICAgIG1fcm9vdElubGluZUJveC5hc2NlbnRBbmREZXNj
ZW50LmFzY2VudCA9IHsgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IGJm
NTdjMTg2MWU5NTE2N2UzNGZjY2RlYWVmMDAyYzk4NTc4ZTJkMDYuLmM1ZWYzOTM4NzU2ZjNmOTEy
NzdmYjdhZjhjNWZjNDA5MTEzNzliZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTgy
LDE1ICs4MiwxNSBAQCB2b2lkIExpbmVCdWlsZGVyOjppbml0aWFsaXplKGNvbnN0IENvbnN0cmFp
bnRzJiBjb25zdHJhaW50cykKICAgICBBU1NFUlQobV9pc0ludHJpbnNpY1NpemluZyB8fCBjb25z
dHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZSk7CiAKICAgICBJbmxpbmVMYXlvdXRVbml0IGluaXRp
YWxMaW5lSGVpZ2h0ID0gMDsKLSAgICBJbmxpbmVMYXlvdXRVbml0IGluaXRpYWxCYXNlbGluZU9m
ZnNldCA9IDA7CisgICAgSW5saW5lTGF5b3V0VW5pdCBpbml0aWFsQmFzZWxpbmUgPSAwOwogICAg
IGlmIChjb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZSkgewogICAgICAgICBpbml0aWFsTGlu
ZUhlaWdodCA9IGNvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLT5oZWlnaHQ7Ci0gICAgICAg
IGluaXRpYWxCYXNlbGluZU9mZnNldCA9IGNvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLT5i
YXNlbGluZTsKKyAgICAgICAgaW5pdGlhbEJhc2VsaW5lID0gY29uc3RyYWludHMuaGVpZ2h0QW5k
QmFzZWxpbmUtPmJhc2VsaW5lOwogICAgIH0KIAogICAgIGF1dG8gbGluZVJlY3QgPSBEaXNwbGF5
OjpJbmxpbmVSZWN0IHsgY29uc3RyYWludHMubG9naWNhbFRvcExlZnQsIDBfbHUsIGluaXRpYWxM
aW5lSGVpZ2h0IH07Ci0gICAgYXV0byBiYXNlbGluZSA9IExpbmVCb3g6OklubGluZUJveDo6QmFz
ZWxpbmUgeyBpbml0aWFsQmFzZWxpbmVPZmZzZXQsIGluaXRpYWxMaW5lSGVpZ2h0IC0gaW5pdGlh
bEJhc2VsaW5lT2Zmc2V0IH07Ci0gICAgbV9saW5lQm94ID0gTGluZUJveCB7IGxpbmVSZWN0LCBi
YXNlbGluZSwgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0IH07CisgICAgYXV0byBhc2NlbnRBbmREZXNj
ZW50ID0gQXNjZW50QW5kRGVzY2VudCB7IGluaXRpYWxCYXNlbGluZSwgaW5pdGlhbExpbmVIZWln
aHQgLSBpbml0aWFsQmFzZWxpbmUgfTsKKyAgICBtX2xpbmVCb3ggPSBMaW5lQm94IHsgbGluZVJl
Y3QsIGFzY2VudEFuZERlc2NlbnQsIGluaXRpYWxCYXNlbGluZSB9OwogICAgIG1fbGluZUxvZ2lj
YWxXaWR0aCA9IGNvbnN0cmFpbnRzLmF2YWlsYWJsZUxvZ2ljYWxXaWR0aDsKICAgICBtX2hhc0lu
dHJ1c2l2ZUZsb2F0ID0gY29uc3RyYWludHMubGluZUlzQ29uc3RyYWluZWRCeUZsb2F0OwogCkBA
IC0xMzksMTAgKzEzOSwxMCBAQCB2b2lkIExpbmVCdWlsZGVyOjphbGlnbkNvbnRlbnRWZXJ0aWNh
bGx5KCkKICAgICAgICAgc3dpdGNoICh2ZXJ0aWNhbEFsaWduKSB7CiAgICAgICAgIGNhc2UgVmVy
dGljYWxBbGlnbjo6QmFzZWxpbmU6CiAgICAgICAgICAgICBpZiAocnVuLmlzTGluZUJyZWFrKCkg
fHwgcnVuLmlzVGV4dCgpKQotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBiYXNlbGluZU9m
ZnNldCgpIC0gYXNjZW50OworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBiYXNlbGluZSgp
IC0gYXNjZW50OwogICAgICAgICAgICAgZWxzZSBpZiAocnVuLmlzQ29udGFpbmVyU3RhcnQoKSkg
ewogICAgICAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQo
KS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3Ag
PSBiYXNlbGluZU9mZnNldCgpIC0gYXNjZW50IC0gYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgLSBi
b3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKKyAgICAgICAgICAgICAgICBsb2dp
Y2FsVG9wID0gYmFzZWxpbmUoKSAtIGFzY2VudCAtIGJveEdlb21ldHJ5LmJvcmRlclRvcCgpIC0g
Ym94R2VvbWV0cnkucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCk7CiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkgJiYgbGF5b3V0Qm94LmVzdGFibGlzaGVz
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGZvcm1h
dHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlKCkuZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3Rh
dGUoZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpKTsKICAgICAgICAgICAgICAgICAv
LyBTcGVjIG1ha2VzIHVzIGdlbmVyYXRlIGF0IGxlYXN0IG9uZSBsaW5lIC1ldmVuIGlmIGl0IGlz
IGVtcHR5LgpAQCAtMTYwLDExICsxNjAsMTEgQEAgdm9pZCBMaW5lQnVpbGRlcjo6YWxpZ25Db250
ZW50VmVydGljYWxseSgpCiAgICAgICAgICAgICAgICAgLy8gICAgIC0tLS0tfC18LXwtLS0tLS0t
LS0tIDwtIGJhc2VsaW5lCiAgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICBhdXRv
JiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0
Qm94KTsKLSAgICAgICAgICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0RnJvbU1hcmdpbkJveCA9
IGJveEdlb21ldHJ5Lm1hcmdpbkJlZm9yZSgpICsgYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBi
b3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKSArIGlubGluZUJsb2NrQmFzZWxpbmU7
Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IGJhc2VsaW5lT2Zmc2V0KCkgLSBiYXNlbGlu
ZU9mZnNldEZyb21NYXJnaW5Cb3g7CisgICAgICAgICAgICAgICAgYXV0byBiYXNlbGluZUZyb21N
YXJnaW5Cb3ggPSBib3hHZW9tZXRyeS5tYXJnaW5CZWZvcmUoKSArIGJveEdlb21ldHJ5LmJvcmRl
clRvcCgpICsgYm94R2VvbWV0cnkucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCkgKyBpbmxpbmVCbG9j
a0Jhc2VsaW5lOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBiYXNlbGluZSgpIC0gYmFz
ZWxpbmVGcm9tTWFyZ2luQm94OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3go
bGF5b3V0Qm94KTsKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gYmFzZWxpbmVPZmZzZXQo
KSAtIChib3hHZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgYm94R2VvbWV0cnkudmVydGljYWxQ
YWRkaW5nKCkudmFsdWVPcigwX2x1KSArIHJ1bi5sb2dpY2FsUmVjdCgpLmhlaWdodCgpICsgYm94
R2VvbWV0cnkubWFyZ2luQWZ0ZXIoKSk7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IGJh
c2VsaW5lKCkgLSAoYm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGJveEdlb21ldHJ5LnZl
cnRpY2FsUGFkZGluZygpLnZhbHVlT3IoMF9sdSkgKyBydW4ubG9naWNhbFJlY3QoKS5oZWlnaHQo
KSArIGJveEdlb21ldHJ5Lm1hcmdpbkFmdGVyKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VG9wOgpAQCAtNTY3LDggKzU2
Nyw4IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodCgpCiAg
ICAgICAgICAgICAvLyBXZSBhcmUgaW4gcXVpcmtzIG1vZGUgd2hlcmUgdGhlIGZvbnQtbWV0cmlj
cyBtaWdodCBjaGFuZ2UgdGhlIGxpbmUgbGluZSBoZWlnaHQvYmFzZWxpbmUgYW5kIHRoaXMgaXMg
dGhlIGZpcnN0IHRleHQgY29udGVudCBvbiB0aGUgbGluZQogICAgICAgICAgICAgLy8gb3V0c2lk
ZSBvZiBhbiBpbmxpbmUgY29udGFpbmVyLgogICAgICAgICAgICAgYXV0byBoYWxmTGVhZGluZyA9
IGhhbGZMZWFkaW5nTWV0cmljcyhzdHlsZS5mb250TWV0cmljcygpLCBzdHlsZS5jb21wdXRlZExp
bmVIZWlnaHQoKSk7Ci0gICAgICAgICAgICBtX2xpbmVCb3guc2V0QXNjZW50SWZHcmVhdGVyKGhh
bGZMZWFkaW5nLmFzY2VudCgpKTsKLSAgICAgICAgICAgIG1fbGluZUJveC5zZXREZXNjZW50SWZH
cmVhdGVyKGhhbGZMZWFkaW5nLmRlc2NlbnQoKSk7CisgICAgICAgICAgICBtX2xpbmVCb3guc2V0
QXNjZW50SWZHcmVhdGVyKGhhbGZMZWFkaW5nLmFzY2VudCk7CisgICAgICAgICAgICBtX2xpbmVC
b3guc2V0RGVzY2VudElmR3JlYXRlcihoYWxmTGVhZGluZy5kZXNjZW50KTsKICAgICAgICAgICAg
IG1fbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKGhhbGZMZWFkaW5nLmhlaWdodCgp
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC01ODEsMTEgKzU4MSwxMSBA
QCB2b2lkIExpbmVCdWlsZGVyOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoKQogICAgICAg
ICAgICAgaWYgKHN0eWxlLnZlcnRpY2FsQWxpZ24oKSA9PSBWZXJ0aWNhbEFsaWduOjpCYXNlbGlu
ZSkgewogICAgICAgICAgICAgICAgIGF1dG8gaGFsZkxlYWRpbmcgPSBoYWxmTGVhZGluZ01ldHJp
Y3MoZm9udE1ldHJpY3MsIHN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpKTsKICAgICAgICAgICAg
ICAgICAvLyBCb3RoIGhhbGZsZWFkaW5nIGFzY2VudCBhbmQgZGVzY2VudCBjb3VsZCBiZSBuZWdh
dGl2ZSAodGFsbCBmb250IHZzLiBzbWFsbCBsaW5lLWhlaWdodCB2YWx1ZSkKLSAgICAgICAgICAg
ICAgICBpZiAoaGFsZkxlYWRpbmcuZGVzY2VudCgpID4gMCkKLSAgICAgICAgICAgICAgICAgICAg
bV9saW5lQm94LnNldERlc2NlbnRJZkdyZWF0ZXIoaGFsZkxlYWRpbmcuZGVzY2VudCgpKTsKLSAg
ICAgICAgICAgICAgICBpZiAoaGFsZkxlYWRpbmcuYXNjZW50KCkgPiAwKQotICAgICAgICAgICAg
ICAgICAgICBtX2xpbmVCb3guc2V0QXNjZW50SWZHcmVhdGVyKGhhbGZMZWFkaW5nLmFzY2VudCgp
KTsKLSAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRlciht
X2xpbmVCb3guYmFzZWxpbmUoKS5oZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgaWYgKGhhbGZM
ZWFkaW5nLmRlc2NlbnQgPiAwKQorICAgICAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0RGVz
Y2VudElmR3JlYXRlcihoYWxmTGVhZGluZy5kZXNjZW50KTsKKyAgICAgICAgICAgICAgICBpZiAo
aGFsZkxlYWRpbmcuYXNjZW50ID4gMCkKKyAgICAgICAgICAgICAgICAgICAgbV9saW5lQm94LnNl
dEFzY2VudElmR3JlYXRlcihoYWxmTGVhZGluZy5hc2NlbnQpOworICAgICAgICAgICAgICAgIG1f
bGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKG1fbGluZUJveC5hc2NlbnRBbmREZXNj
ZW50KCkuaGVpZ2h0KCkpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbV9s
aW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIoZm9udE1ldHJpY3MuaGVpZ2h0KCkpOwog
ICAgICAgICAgICAgY29udGludWU7CkBAIC02MTAsMTMgKzYxMCwxMyBAQCB2b2lkIExpbmVCdWls
ZGVyOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoKQogICAgICAgICAgICAgICAgICAgICAv
LyBUaGVyZSBoYXMgdG8gYmUgYXQgbGVhc3Qgb25lIGxpbmUgLWV2ZW4gaWYgaXQgaXMgZW1wdHku
CiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGxhc3RMaW5lQm94ID0gZm9ybWF0dGluZ1N0YXRl
LmRpc3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVCb3hlcy5sYXN0KCk7CiAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gYmVmb3JlSGVpZ2h0ID0gYm94R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkgKyBi
b3hHZW9tZXRyeS5ib3JkZXJUb3AoKSArIGJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZU9y
KDApOwotICAgICAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0QmFzZWxpbmVPZmZzZXRJZkdy
ZWF0ZXIoYmVmb3JlSGVpZ2h0ICsgbGFzdExpbmVCb3guYmFzZWxpbmUoKSk7CisgICAgICAgICAg
ICAgICAgICAgIG1fbGluZUJveC5zZXRCYXNlbGluZUlmR3JlYXRlcihiZWZvcmVIZWlnaHQgKyBs
YXN0TGluZUJveC5iYXNlbGluZSgpKTsKICAgICAgICAgICAgICAgICAgICAgbV9saW5lQm94LnNl
dExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIobWFyZ2luQm94SGVpZ2h0KTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBOb24gaW5saW5lLWJsb2NrIGJveGVz
IHNpdCBvbiB0aGUgYmFzZWxpbmUgKGluY2x1ZGluZyB0aGVpciBib3R0b20gbWFyZ2luKS4KICAg
ICAgICAgICAgICAgICAgICAgbV9saW5lQm94LnNldEFzY2VudElmR3JlYXRlcihtYXJnaW5Cb3hI
ZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgbmVnYXRpdmUgZGVzY2VudCAo
eWVzLCBuZWdhdGl2ZSBkZXNjZW50IGlzIGEgdGhpbmcpLgotICAgICAgICAgICAgICAgICAgICBt
X2xpbmVCb3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihtYXJnaW5Cb3hIZWlnaHQgKyBzdGQ6
Om1heDxJbmxpbmVMYXlvdXRVbml0PigwLCBtX2xpbmVCb3guYmFzZWxpbmUoKS5kZXNjZW50KCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0
ZXIobWFyZ2luQm94SGVpZ2h0ICsgc3RkOjptYXg8SW5saW5lTGF5b3V0VW5pdD4oMCwgbV9saW5l
Qm94LmFzY2VudEFuZERlc2NlbnQoKS5kZXNjZW50KSk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNjI5LDcgKzYyOSw3IEBAIHZv
aWQgTGluZUJ1aWxkZXI6OmFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodCgpCiAgICAgICAgICAg
ICAgICAgYXV0byBsaW5lTG9naWNhbEhlaWdodCA9IG1fbGluZUJveC5sb2dpY2FsSGVpZ2h0KCk7
CiAgICAgICAgICAgICAgICAgaWYgKG1hcmdpbkJveEhlaWdodCA+IGxpbmVMb2dpY2FsSGVpZ2h0
KSB7CiAgICAgICAgICAgICAgICAgICAgIG1fbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0SWZHcmVh
dGVyKG1hcmdpbkJveEhlaWdodCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fbGluZUJveC5zZXRC
YXNlbGluZU9mZnNldElmR3JlYXRlcihtX2xpbmVCb3guYmFzZWxpbmVPZmZzZXQoKSArIChtYXJn
aW5Cb3hIZWlnaHQgLSBsaW5lTG9naWNhbEhlaWdodCkpOworICAgICAgICAgICAgICAgICAgICBt
X2xpbmVCb3guc2V0QmFzZWxpbmVJZkdyZWF0ZXIobV9saW5lQm94LmJhc2VsaW5lKCkgKyAobWFy
Z2luQm94SGVpZ2h0IC0gbGluZUxvZ2ljYWxIZWlnaHQpKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC02OTUsNyArNjk1LDcgQEAg
Ym9vbCBMaW5lQnVpbGRlcjo6aXNWaXN1YWxseU5vbkVtcHR5KGNvbnN0IFJ1biYgcnVuKSBjb25z
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTGluZUJveDo6SW5saW5lQm94OjpCYXNlbGluZSBM
aW5lQnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0
cmljcywgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbEhlaWdodCkKK0FzY2VudEFuZERlc2Nl
bnQgTGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYgZm9u
dE1ldHJpY3MsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpCiB7CiAgICAgYXV0
byBhc2NlbnQgPSBmb250TWV0cmljcy5hc2NlbnQoKTsKICAgICBhdXRvIGRlc2NlbnQgPSBmb250
TWV0cmljcy5kZXNjZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaAppbmRleCA0ZDUwZjdkM2IzN2U0
NTA4YzliYmEyZThmZmQ2OWRlMDc2ZmM4ODYzLi4yMjU4ZGU3ZmRkN2VjYmQ4NTlmNjA4NDZhNzc2
YmI1M2NmZWE2ODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmgKQEAgLTE0Nyw3ICsxNDcsNyBAQCBw
dWJsaWM6CiAgICAgZW51bSBjbGFzcyBJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQgeyBObywg
WWVzIH07CiAgICAgUnVuTGlzdCBjbG9zZShJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQgPSBJ
c0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQ6Ok5vKTsKIAotICAgIHN0YXRpYyBMaW5lQm94OjpJ
bmxpbmVCb3g6OkJhc2VsaW5lIGhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYs
IElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpOworICAgIHN0YXRpYyBBc2NlbnRB
bmREZXNjZW50IGhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYsIElubGluZUxh
eW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpOwogCiBwcml2YXRlOgogICAgIElubGluZUxheW91
dFVuaXQgbG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveC5sb2dpY2FsVG9wKCk7
IH0KQEAgLTE2MSw3ICsxNjEsNyBAQCBwcml2YXRlOgogCiAgICAgSW5saW5lTGF5b3V0VW5pdCBj
b250ZW50TG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94LmxvZ2ljYWxXaWR0
aCgpOyB9CiAgICAgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFJpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gbV9saW5lQm94LmxvZ2ljYWxSaWdodCgpOyB9Ci0gICAgSW5saW5lTGF5b3V0VW5p
dCBiYXNlbGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveC5iYXNlbGluZU9mZnNl
dCgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bGluZUJveC5iYXNlbGluZSgpOyB9CiAKICAgICBzdHJ1Y3QgSW5saW5lUnVuRGV0YWlscyB7CiAg
ICAgICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoIHsgMCB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxh
eW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCAzZGUyMGI3Yjc1NTE5ZjdiNjRjNGMzYzY1ZDhkOGY3
OGRiYTllNWVlLi42YzAwZDJmZDQ2MTg3MzhkNGVjZWVjMjk3MDczNjc2NjcyMTEyMzYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25MaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQg
TGluZUxheW91dDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCkKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8mIGxpbmVCb3ggPSBpbmxp
bmVDb250ZW50LmxpbmVCb3hGb3JSdW4ocnVuKTsKLSAgICAgICAgYXV0byBiYXNlbGluZU9mZnNl
dCA9IHBhaW50T2Zmc2V0LnkoKSArIGxpbmVCb3gudG9wKCkgKyBsaW5lQm94LmJhc2VsaW5lKCk7
CisgICAgICAgIGF1dG8gYmFzZWxpbmUgPSBwYWludE9mZnNldC55KCkgKyBsaW5lQm94LnRvcCgp
ICsgbGluZUJveC5iYXNlbGluZSgpOwogICAgICAgICBhdXRvIGV4cGFuc2lvbiA9IHJ1bi5leHBh
bnNpb24oKTsKIAogICAgICAgICBTdHJpbmcgdGV4dFdpdGhIeXBoZW47CkBAIC0zMDIsNyArMzAy
LDcgQEAgdm9pZCBMaW5lTGF5b3V0OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
TGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgICAgICAgICAgdGV4dFdpdGhIeXBoZW4gPSBt
YWtlU3RyaW5nKHRleHRDb250ZW50LmNvbnRlbnQoKSwgc3R5bGUuaHlwaGVuU3RyaW5nKCkpOwog
ICAgICAgICBUZXh0UnVuIHRleHRSdW4geyAhdGV4dFdpdGhIeXBoZW4uaXNFbXB0eSgpID8gdGV4
dFdpdGhIeXBoZW4gOiB0ZXh0Q29udGVudC5jb250ZW50KCksIHJ1bi5sZWZ0KCkgLSBsaW5lQm94
LmxlZnQoKSwgZXhwYW5zaW9uLmhvcml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlv
ciB9OwogICAgICAgICB0ZXh0UnVuLnNldFRhYlNpemUoIXN0eWxlLmNvbGxhcHNlV2hpdGVTcGFj
ZSgpLCBzdHlsZS50YWJTaXplKCkpOwotICAgICAgICBGbG9hdFBvaW50IHRleHRPcmlnaW4geyBy
ZWN0LngoKSArIHBhaW50T2Zmc2V0LngoKSwgcm91bmRUb0RldmljZVBpeGVsKGJhc2VsaW5lT2Zm
c2V0LCBkZXZpY2VTY2FsZUZhY3RvcikgfTsKKyAgICAgICAgRmxvYXRQb2ludCB0ZXh0T3JpZ2lu
IHsgcmVjdC54KCkgKyBwYWludE9mZnNldC54KCksIHJvdW5kVG9EZXZpY2VQaXhlbChiYXNlbGlu
ZSwgZGV2aWNlU2NhbGVGYWN0b3IpIH07CiAKICAgICAgICAgVGV4dFBhaW50ZXIgdGV4dFBhaW50
ZXIocGFpbnRJbmZvLmNvbnRleHQoKSk7CiAgICAgICAgIHRleHRQYWludGVyLnNldEZvbnQoc3R5
bGUuZm9udENhc2NhZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFi
bGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA5
YjRiYmQ1YTA2ODA4YmIwY2YzMWIxMmM2MmQwZDE1MmIwOGYyOGZlLi43YmM1ZTkyMmJmM2Q0OTJm
NzcyMWQxOWI0N2UxMTAzNDk4ZTcyYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5j
cHAKQEAgLTEwMyw5ICsxMDMsOSBAQCB2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVz
ZWRHZW9tZXRyeUZvckNlbGxzKExheW91dFVuaXQgYXZhaWxhYmxlSG9yaXpvbgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCYXNlbGlu
ZTogewotICAgICAgICAgICAgYXV0byByb3dCYXNlbGluZU9mZnNldCA9IExheW91dFVuaXQgeyBy
b3dMaXN0W2NlbGwtPnN0YXJ0Um93KCldLmJhc2VsaW5lT2Zmc2V0KCkgfTsKLSAgICAgICAgICAg
IGF1dG8gY2VsbEJhc2VsaW5lT2Zmc2V0ID0gTGF5b3V0VW5pdCB7IGNlbGwtPmJhc2VsaW5lT2Zm
c2V0KCkgfTsKLSAgICAgICAgICAgIGludHJpbnNpY1BhZGRpbmdUb3AgPSBzdGQ6Om1heCgwX2x1
LCByb3dCYXNlbGluZU9mZnNldCAtIGNlbGxCYXNlbGluZU9mZnNldCAtIGNlbGxEaXNwbGF5Qm94
LmJvcmRlclRvcCgpKTsKKyAgICAgICAgICAgIGF1dG8gcm93QmFzZWxpbmUgPSBMYXlvdXRVbml0
IHsgcm93TGlzdFtjZWxsLT5zdGFydFJvdygpXS5iYXNlbGluZSgpIH07CisgICAgICAgICAgICBh
dXRvIGNlbGxCYXNlbGluZSA9IExheW91dFVuaXQgeyBjZWxsLT5iYXNlbGluZSgpIH07CisgICAg
ICAgICAgICBpbnRyaW5zaWNQYWRkaW5nVG9wID0gc3RkOjptYXgoMF9sdSwgcm93QmFzZWxpbmUg
LSBjZWxsQmFzZWxpbmUgLSBjZWxsRGlzcGxheUJveC5ib3JkZXJUb3AoKSk7CiAgICAgICAgICAg
ICBpbnRyaW5zaWNQYWRkaW5nQm90dG9tID0gc3RkOjptYXgoMF9sdSwgYXZhaWxhYmxlVmVydGlj
YWxTcGFjZSAtIGNlbGxEaXNwbGF5Qm94LnZlcnRpY2FsTWFyZ2luQm9yZGVyQW5kUGFkZGluZygp
IC0gaW50cmluc2ljUGFkZGluZ1RvcCAtIGNlbGxEaXNwbGF5Qm94LmNvbnRlbnRCb3hIZWlnaHQo
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjEzLDExICsyMTMsMTEgQEAg
dm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JSb3dzKExheW91
dFVuaXQgYXZhaWxhYmxlSG9yaXpvbnQKICAgICAgICAgICAgIGlmIChzbG90Lmhhc1Jvd1NwYW4o
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGF1dG8mIGNlbGwgPSBz
bG90LmNlbGwoKTsKLSAgICAgICAgICAgIHJvd0Jhc2VsaW5lc1tyb3dJbmRleF0gPSBzdGQ6Om1h
eChyb3dCYXNlbGluZXNbcm93SW5kZXhdLCBjZWxsLmJhc2VsaW5lT2Zmc2V0KCkpOworICAgICAg
ICAgICAgcm93QmFzZWxpbmVzW3Jvd0luZGV4XSA9IHN0ZDo6bWF4KHJvd0Jhc2VsaW5lc1tyb3dJ
bmRleF0sIGNlbGwuYmFzZWxpbmUoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZm9yIChzaXpl
X3Qgcm93SW5kZXggPSAwOyByb3dJbmRleCA8IHJvd3Muc2l6ZSgpOyArK3Jvd0luZGV4KQotICAg
ICAgICByb3dzW3Jvd0luZGV4XS5zZXRCYXNlbGluZU9mZnNldChyb3dCYXNlbGluZXNbcm93SW5k
ZXhdKTsKKyAgICAgICAgcm93c1tyb3dJbmRleF0uc2V0QmFzZWxpbmUocm93QmFzZWxpbmVzW3Jv
d0luZGV4XSk7CiB9CiAKIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0VXNlZEdlb21l
dHJ5Rm9yU2VjdGlvbnMoY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJh
aW50cykKQEAgLTQ4OSw3ICs0ODksNyBAQCB2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVBbmREaXN0cmlidXRlRXh0cmFTcGFjZShMYXlvdXRVbml0IGF2YWlsYWJsZQogICAgICAg
ICAgICAgLy8gVGhlIG1pbmltdW0gaGVpZ2h0IG9mIGEgcm93ICh3aXRob3V0IHNwYW5uaW5nLXJl
bGF0ZWQgaGVpZ2h0IGRpc3RyaWJ1dGlvbikgaXMgZGVmaW5lZCBhcyB0aGUgaGVpZ2h0IG9mIGFu
IGh5cG90aGV0aWNhbAogICAgICAgICAgICAgLy8gbGluZWJveCBjb250YWluaW5nIHRoZSBjZWxs
cyBvcmlnaW5hdGluZyBpbiB0aGUgcm93LgogICAgICAgICAgICAgYXV0byYgY2VsbCA9IHNsb3Qu
Y2VsbCgpOwotICAgICAgICAgICAgY2VsbC5zZXRCYXNlbGluZU9mZnNldChnZW9tZXRyeSgpLnVz
ZWRCYXNlbGluZUZvckNlbGwoY2VsbC5ib3goKSkpOworICAgICAgICAgICAgY2VsbC5zZXRCYXNl
bGluZShnZW9tZXRyeSgpLnVzZWRCYXNlbGluZUZvckNlbGwoY2VsbC5ib3goKSkpOwogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3Jt
YXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHAKaW5kZXggY2ZlY2QxZjFiYmQ2MjNlNWVhOTMyYWZjZTk2OTNiNjM4YWVkYWMxNS4uYmQ5Y2Uz
NDA1NTU0NzhiYWNhZGRlNjlkNWY2Y2ExY2E5MmUwYzJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIElubGluZUxh
eW91dFVuaXQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnVzZWRCYXNlbGluZUZv
ckNlbGwoY29uc3QgQ29uCiAgICAgICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlJbmxpbmVDb250
ZW50LT5saW5lQm94ZXNbMF0uYmFzZWxpbmUoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoY2Vs
bERlc2NlbmRhbnQuZXN0YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0KCkpCi0gICAgICAg
ICAgICByZXR1cm4gbGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hlZFRhYmxlRm9ybWF0dGluZ1N0YXRl
KGNlbGxEZXNjZW5kYW50KS50YWJsZUdyaWQoKS5yb3dzKCkubGlzdCgpWzBdLmJhc2VsaW5lT2Zm
c2V0KCk7CisgICAgICAgICAgICByZXR1cm4gbGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hlZFRhYmxl
Rm9ybWF0dGluZ1N0YXRlKGNlbGxEZXNjZW5kYW50KS50YWJsZUdyaWQoKS5yb3dzKCkubGlzdCgp
WzBdLmJhc2VsaW5lKCk7CiAgICAgfQogICAgIHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLmdl
b21ldHJ5Rm9yQm94KGNlbGxCb3gpLmNvbnRlbnRCb3hCb3R0b20oKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5oCmluZGV4IGQ2MzQ1
OTg4ZWVmZWZhNjJiYTgzOTNlZWYxNmU0OGI4NDAyZDUyMGUuLjAyNWZmNTMwNTgxMTk4MzM3YWI4
MzA3NjkwNjc5NzcxNjEzMWM3OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90
YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3Rh
YmxlZm9ybWF0dGluZy9UYWJsZUdyaWQuaApAQCAtMTIwLDE1ICsxMjAsMTUgQEAgcHVibGljOgog
ICAgICAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KSB7
IG1fbG9naWNhbEhlaWdodCA9IGxvZ2ljYWxIZWlnaHQ7IH0KICAgICAgICAgTGF5b3V0VW5pdCBs
b2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsSGVpZ2h0OyB9CiAKLSAgICAg
ICAgdm9pZCBzZXRCYXNlbGluZU9mZnNldChJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0
KSB7IG1fYmFzZWxpbmVPZmZzZXQgPSBiYXNlbGluZU9mZnNldDsgfQotICAgICAgICBJbmxpbmVM
YXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9iYXNlbGluZU9mZnNl
dDsgfQorICAgICAgICB2b2lkIHNldEJhc2VsaW5lKElubGluZUxheW91dFVuaXQgYmFzZWxpbmUp
IHsgbV9iYXNlbGluZSA9IGJhc2VsaW5lOyB9CisgICAgICAgIElubGluZUxheW91dFVuaXQgYmFz
ZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VsaW5lOyB9CiAKICAgICAgICAgY29uc3QgQ29u
dGFpbmVyQm94JiBib3goKSBjb25zdCB7IHJldHVybiAqbV9sYXlvdXRCb3guZ2V0KCk7IH0KIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIExheW91dFVuaXQgbV9sb2dpY2FsVG9wOwogICAgICAgICBM
YXlvdXRVbml0IG1fbG9naWNhbEhlaWdodDsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2Jh
c2VsaW5lT2Zmc2V0OworICAgICAgICBJbmxpbmVMYXlvdXRVbml0IG1fYmFzZWxpbmU7CiAgICAg
ICAgIFdlYWtQdHI8Y29uc3QgQ29udGFpbmVyQm94PiBtX2xheW91dEJveDsKICAgICB9OwogCkBA
IC0xNjQsOCArMTY0LDggQEAgcHVibGljOgogICAgICAgICBTbG90UG9zaXRpb24gcG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAgICAgICAgIENlbGxTcGFuIHNwYW4oKSBj
b25zdCB7IHJldHVybiBtX3NwYW47IH0KIAotICAgICAgICB2b2lkIHNldEJhc2VsaW5lT2Zmc2V0
KElubGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQpIHsgbV9iYXNlbGluZU9mZnNldCA9IGJh
c2VsaW5lT2Zmc2V0OyB9Ci0gICAgICAgIElubGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX2Jhc2VsaW5lT2Zmc2V0OyB9CisgICAgICAgIHZvaWQgc2V0QmFz
ZWxpbmUoSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZSkgeyBtX2Jhc2VsaW5lID0gYmFzZWxpbmU7
IH0KKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YmFzZWxpbmU7IH0KIAogICAgICAgICBib29sIGlzRml4ZWRXaWR0aCgpIGNvbnN0OwogCkBAIC0x
NzUsNyArMTc1LDcgQEAgcHVibGljOgogICAgICAgICBXZWFrUHRyPGNvbnN0IENvbnRhaW5lckJv
eD4gbV9sYXlvdXRCb3g7CiAgICAgICAgIFNsb3RQb3NpdGlvbiBtX3Bvc2l0aW9uOwogICAgICAg
ICBDZWxsU3BhbiBtX3NwYW47Ci0gICAgICAgIElubGluZUxheW91dFVuaXQgbV9iYXNlbGluZU9m
ZnNldCB7IDAgfTsKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2Jhc2VsaW5lIHsgMCB9Owog
ICAgIH07CiAKICAgICBjbGFzcyBTbG90IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUxheW91dC5jcHAKaW5kZXggMTQ2YWEzOWFkY2Y0OTFj
MjkxN2U1YjVjM2EwNmQ2Nzk3YTkyNTgzYS4uN2YwMjhkY2U4MDhhOWFhMjU3NWYzOTkzZTI3MDcx
MmMyMGNhNDRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0
dGluZy9UYWJsZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9y
bWF0dGluZy9UYWJsZUxheW91dC5jcHAKQEAgLTI4MSw4ICsyODEsOCBAQCBUYWJsZUZvcm1hdHRp
bmdDb250ZXh0OjpUYWJsZUxheW91dDo6RGlzdHJpYnV0ZWRTcGFjZXMgVGFibGVGb3JtYXR0aW5n
Q29udGV4dDo6VAogICAgICAgICAgICAgYXV0byYgY2VsbEJveCA9IGNlbGwuYm94KCk7CiAgICAg
ICAgICAgICBhdXRvIGhlaWdodCA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3go
Y2VsbEJveCkuaGVpZ2h0KCk7CiAgICAgICAgICAgICBpZiAoY2VsbEJveC5zdHlsZSgpLnZlcnRp
Y2FsQWxpZ24oKSA9PSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZSkgewotICAgICAgICAgICAgICAg
IG1heGltdW1Db2x1bW5Bc2NlbnQgPSBzdGQ6Om1heChtYXhpbXVtQ29sdW1uQXNjZW50LCBjZWxs
LmJhc2VsaW5lT2Zmc2V0KCkpOwotICAgICAgICAgICAgICAgIG1heGltdW1Db2x1bW5EZXNjZW50
ID0gc3RkOjptYXgobWF4aW11bUNvbHVtbkRlc2NlbnQsIGhlaWdodCAtIGNlbGwuYmFzZWxpbmVP
ZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgbWF4aW11bUNvbHVtbkFzY2VudCA9IHN0ZDo6bWF4
KG1heGltdW1Db2x1bW5Bc2NlbnQsIGNlbGwuYmFzZWxpbmUoKSk7CisgICAgICAgICAgICAgICAg
bWF4aW11bUNvbHVtbkRlc2NlbnQgPSBzdGQ6Om1heChtYXhpbXVtQ29sdW1uRGVzY2VudCwgaGVp
Z2h0IC0gY2VsbC5iYXNlbGluZSgpKTsKICAgICAgICAgICAgICAgICByb3dIZWlnaHRbcm93SW5k
ZXhdID0gc3RkOjptYXgocm93SGVpZ2h0W3Jvd0luZGV4XSwgTGF5b3V0VW5pdCB7IG1heGltdW1D
b2x1bW5Bc2NlbnQgKyBtYXhpbXVtQ29sdW1uRGVzY2VudCB9KTsKICAgICAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgICAgIHJvd0hlaWdodFtyb3dJbmRleF0gPSBzdGQ6Om1heChyb3dIZWln
aHRbcm93SW5kZXhdLCBoZWlnaHQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407083</attachid>
            <date>2020-08-23 17:18:54 -0700</date>
            <delta_ts>2020-08-24 07:50:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214779-20200823171853.patch</filename>
            <type>text/plain</type>
            <size>35955</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MDQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU4Mzg0MDViMzJhNDI5
YjBkMzQyNjU3NDdjZDE1MWZiY2I5NjgxMy4uMTU1N2M3MDgxOTU2OTBkMTFhNmY3NTEwOGE0OTZj
MGJjZjdkMzc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDIwLTA4LTIzICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBVc2UgdGhl
IHRlcm0gJ2Jhc2VsaW5lJyB0byBpbmRpY2F0ZSBhbGlnbm1lbnQgYmFzZWxpbmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc3OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgaW4g
cHJlcGFyYXRpb24gZm9yIGRlY291cGxpbmcgdGhlIGxpbmUgYm94IGFuZCB0aGUgcm9vdCBpbmxp
bmUgYm94IGdlb21ldHJ5LgorICAgICAgICBJbmxpbmUgYm94ZXMgaGF2ZSBhc2NlbnQvZGVzY2Vu
dCBwYWlycywgd2hpbGUgbGluZSBib3hlcyBoYXZlIGlubGluZSBib3hlcyBhbmQgYSBiYXNlbGlu
ZS4gCisKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6cGFpbnRJbmxpbmVDb250ZW50KToKKyAgICAgICAg
KiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpzZXREaXNw
bGF5Qm94ZXNGb3JMaW5lKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OmxpbmVIZWlnaHRDb25zdHJhaW50cyBj
b25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5o
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpBc2NlbnRBbmREZXNjZW50OjpoZWlnaHQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94Ojphc2NlbnRBbmREZXNjZW50
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6TGluZUJveCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUJveDo6SW5saW5lQm94KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0QmFzZWxpbmVJZkdyZWF0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRBc2NlbnRJZkdyZWF0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXREZXNjZW50SWZHcmVhdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6YmFzZWxpbmUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpyZXNldEJhc2VsaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6SW5saW5lQm94OjpCYXNlbGluZTo6aGVpZ2h0
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0
QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQm94OjpiYXNlbGluZU9mZnNldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUJveDo6QmFzZWxpbmU6OkJhc2VsaW5lKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6SW5saW5lQm94OjpC
YXNlbGluZTo6c2V0QXNjZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZUJveDo6SW5saW5lQm94OjpCYXNlbGluZTo6c2V0RGVzY2VudCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUJveDo6QmFzZWxpbmU6OnJlc2V0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6SW5saW5lQm94
OjpCYXNlbGluZTo6YXNjZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGluZUJveDo6SW5saW5lQm94OjpCYXNlbGluZTo6ZGVzY2VudCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphbGlnbkNvbnRlbnRWZXJ0
aWNhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmFkanVzdEJh
c2VsaW5lQW5kTGluZUhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWls
ZGVyOjpoYWxmTGVhZGluZ01ldHJpY3MpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUxpbmVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVC
dWlsZGVyOjpiYXNlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVC
dWlsZGVyOjpiYXNlbGluZU9mZnNldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6cGFpbnQpOgorICAgICAgICAq
IGxheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9t
ZXRyeUZvckNlbGxzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5n
Q29udGV4dDo6c2V0VXNlZEdlb21ldHJ5Rm9yUm93cyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVBbmREaXN0cmlidXRlRXh0cmFTcGFj
ZSk6CisgICAgICAgICogbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250
ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6dXNlZEJhc2VsaW5lRm9yQ2VsbCk6CisgICAgICAgICogbGF5
b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUdyaWQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6VGFibGVHcmlkOjpSb3c6OnNldEJhc2VsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6VGFibGVHcmlkOjpSb3c6OmJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6VGFibGVHcmlkOjpDZWxsOjpzZXRCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OlRhYmxlR3JpZDo6Q2VsbDo6YmFzZWxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpUYWJsZUdyaWQ6OlJvdzo6c2V0QmFzZWxpbmVPZmZzZXQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUdyaWQ6OlJvdzo6YmFzZWxpbmVPZmZzZXQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUdyaWQ6OkNl
bGw6OnNldEJhc2VsaW5lT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6VGFibGVHcmlkOjpDZWxsOjpiYXNlbGluZU9mZnNldCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgICogbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUxheW91dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlTGF5b3V0OjpkaXN0
cmlidXRlZFZlcnRpY2FsU3BhY2UpOgorCiAyMDIwLTA4LTIzICBaYWxhbiBCdWp0YXMgIDx6YWxh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBJbnRyb2R1Y2UgdGhlIHJvb3QgaW5s
aW5lIGJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rp
c3BsYXlQYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNw
bGF5UGFpbnRlci5jcHAKaW5kZXggZGQyNjQxYmJlMDI3YTQxZWEwMWJiMmEyMzA1OWU3Yjc1ZDZk
MzY2MC4uNDI3ZDY4ZDlhYzI5OTQzNzM5MDAxODY5Yzk1MDhjZDgzNzRiZTQ2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3Bw
CkBAIC0xMjksMTEgKzEyOSwxMSBAQCBzdGF0aWMgdm9pZCBwYWludElubGluZUNvbnRlbnQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBMYXlvdXRQb2ludCBhYnNvbHV0ZU9mZgogICAgICAgICAg
ICAgYXV0byBhYnNvbHV0ZUxlZnQgPSBhYnNvbHV0ZU9mZnNldC54KCkgKyBydW4ubGVmdCgpOwog
ICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBub24tYmFzZWxpbmUgYWxpZ24gcGFpbnRpbmcKICAg
ICAgICAgICAgIGF1dG8mIGxpbmVCb3ggPSBkaXNwbGF5SW5saW5lQ29udGVudC0+bGluZUJveEZv
clJ1bihydW4pOwotICAgICAgICAgICAgYXV0byBiYXNlbGluZU9mZnNldCA9IGFic29sdXRlT2Zm
c2V0LnkoKSArIGxpbmVCb3gudG9wKCkgKyBsaW5lQm94LmJhc2VsaW5lKCk7CisgICAgICAgICAg
ICBhdXRvIGJhc2VsaW5lID0gYWJzb2x1dGVPZmZzZXQueSgpICsgbGluZUJveC50b3AoKSArIGxp
bmVCb3guYmFzZWxpbmUoKTsKICAgICAgICAgICAgIGF1dG8gZXhwYW5zaW9uID0gcnVuLmV4cGFu
c2lvbigpOwogICAgICAgICAgICAgYXV0byB0ZXh0UnVuID0gVGV4dFJ1biB7IHRleHRDb250ZW50
LT5jb250ZW50KCksIHJ1bi5sZWZ0KCkgLSBsaW5lQm94LmxlZnQoKSwgZXhwYW5zaW9uLmhvcml6
b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9OwogICAgICAgICAgICAgdGV4dFJ1
bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgp
KTsKLSAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoc3R5bGUuZm9udENhc2NhZGUoKSwgdGV4
dFJ1biwgeyBhYnNvbHV0ZUxlZnQsIGJhc2VsaW5lT2Zmc2V0IH0pOworICAgICAgICAgICAgY29u
dGV4dC5kcmF3VGV4dChzdHlsZS5mb250Q2FzY2FkZSgpLCB0ZXh0UnVuLCB7IGFic29sdXRlTGVm
dCwgYmFzZWxpbmUgfSk7CiAgICAgICAgIH0gZWxzZSBpZiAoYXV0byogY2FjaGVkSW1hZ2UgPSBy
dW4uaW1hZ2UoKSkgewogICAgICAgICAgICAgYXV0byBydW5BYnNvbHV0ZVJlY3QgPSBGbG9hdFJl
Y3QgeyBhYnNvbHV0ZU9mZnNldC54KCkgKyBydW4ubGVmdCgpLCBhYnNvbHV0ZU9mZnNldC55KCkg
KyBydW4udG9wKCksIHJ1bi53aWR0aCgpLCBydW4uaGVpZ2h0KCkgfTsKICAgICAgICAgICAgIGNv
bnRleHQuZHJhd0ltYWdlKCpjYWNoZWRJbWFnZS0+aW1hZ2UoKSwgcnVuQWJzb2x1dGVSZWN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBjY2M0YjQyMjFkNTgzNmFk
ZWFmNmI5ZGY3YTgyNjk4OTMxZGE1MGUwLi5jZjFjZWY0ZmI2MjIzNjNkMjg0OTJhNTkwOTUyZjgx
OTkxNmUzNWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC01Njks
NyArNTY5LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6c2V0RGlzcGxheUJveGVz
Rm9yTGluZShjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGkKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfQogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHdoZXJlIHRoZSBsb2dpY2Fs
IHRvIHBoeXNpY2FsIHRyYW5zbGF0ZSBzaG91bGQgaGFwcGVuLgotICAgIGlubGluZUNvbnRlbnQu
bGluZUJveGVzLmFwcGVuZCh7IGxpbmVCb3gubG9naWNhbFJlY3QoKSwgbGluZUJveC5zY3JvbGxh
YmxlT3ZlcmZsb3coKSwgbGluZUlua092ZXJmbG93LCBsaW5lQm94LmJhc2VsaW5lT2Zmc2V0KCkg
fSk7CisgICAgaW5saW5lQ29udGVudC5saW5lQm94ZXMuYXBwZW5kKHsgbGluZUJveC5sb2dpY2Fs
UmVjdCgpLCBsaW5lQm94LnNjcm9sbGFibGVPdmVyZmxvdygpLCBsaW5lSW5rT3ZlcmZsb3csIGxp
bmVCb3guYmFzZWxpbmUoKSB9KTsKIH0KIAogdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
aW52YWxpZGF0ZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBJbnZhbGlkYXRpb25TdGF0ZSYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dFF1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKaW5kZXggZmVhM2JjY2Zh
M2EwMjc2NjgwODgwMzhiNzlhMTUzNmZhNWUzYWJiMS4uZTZlMTU1MTEyMTIyYjkyZDE5Nzg2NWIy
NmQ0M2UzYTZlMjEyNGE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
UXVpcmtzLmNwcApAQCAtNzYsMTkgKzc2LDE5IEBAIExpbmVCdWlsZGVyOjpDb25zdHJhaW50czo6
SGVpZ2h0QW5kQmFzZWxpbmUgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6bGluCiAg
ICAgLy8gY29tcHV0ZWRMaW5lSGVpZ2h0IHRha2VzIGZvbnQtc2l6ZSBpbnRvIGFjY291bnQgd2hl
biBsaW5lLWhlaWdodCBpcyBub3Qgc2V0LgogICAgIC8vIFN0cnV0IGlzIHRoZSBpbWFnaW5hcnkg
Ym94IHRoYXQgd2UgcHV0IG9uIGV2ZXJ5IGxpbmUuIEl0IHNldHMgdGhlIGluaXRpYWwgdmVydGlj
YWwgY29uc3RyYWludHMgZm9yIGVhY2ggbmV3IGxpbmUuCiAgICAgSW5saW5lTGF5b3V0VW5pdCBz
dHJ1dEhlaWdodCA9IGZvcm1hdHRpbmdSb290LnN0eWxlKCkuY29tcHV0ZWRMaW5lSGVpZ2h0KCk7
Ci0gICAgYXV0byBzdHJ1dEJhc2VsaW5lT2Zmc2V0ID0gTGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5n
TWV0cmljcyhmb3JtYXR0aW5nUm9vdC5zdHlsZSgpLmZvbnRNZXRyaWNzKCksIHN0cnV0SGVpZ2h0
KS5hc2NlbnQoKTsKKyAgICBhdXRvIHN0cnV0QmFzZWxpbmUgPSBMaW5lQnVpbGRlcjo6aGFsZkxl
YWRpbmdNZXRyaWNzKGZvcm1hdHRpbmdSb290LnN0eWxlKCkuZm9udE1ldHJpY3MoKSwgc3RydXRI
ZWlnaHQpLmFzY2VudDsKICAgICBpZiAobGF5b3V0U3RhdGUoKS5pbk5vUXVpcmtzTW9kZSgpKQot
ICAgICAgICByZXR1cm4geyBzdHJ1dEhlaWdodCwgc3RydXRCYXNlbGluZU9mZnNldCwgeyB9IH07
CisgICAgICAgIHJldHVybiB7IHN0cnV0SGVpZ2h0LCBzdHJ1dEJhc2VsaW5lLCB7IH0gfTsKIAog
ICAgIGF1dG8gbGluZUhlaWdodCA9IGZvcm1hdHRpbmdSb290LnN0eWxlKCkubGluZUhlaWdodCgp
OwogICAgIGlmIChsaW5lSGVpZ2h0LmlzUGVyY2VudE9yQ2FsY3VsYXRlZCgpKSB7Ci0gICAgICAg
IGF1dG8gaW5pdGlhbEJhc2VsaW5lT2Zmc2V0ID0gTGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0
cmljcyhmb3JtYXR0aW5nUm9vdC5zdHlsZSgpLmZvbnRNZXRyaWNzKCksIDBfbHUpLmFzY2VudCgp
OwotICAgICAgICByZXR1cm4geyBpbml0aWFsQmFzZWxpbmVPZmZzZXQsIGluaXRpYWxCYXNlbGlu
ZU9mZnNldCwgTGluZUJveDo6SW5saW5lQm94OjpCYXNlbGluZSB7IHN0cnV0QmFzZWxpbmVPZmZz
ZXQsIHN0cnV0SGVpZ2h0IC0gc3RydXRCYXNlbGluZU9mZnNldCB9IH07CisgICAgICAgIGF1dG8g
aW5pdGlhbEJhc2VsaW5lID0gTGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmljcyhmb3JtYXR0
aW5nUm9vdC5zdHlsZSgpLmZvbnRNZXRyaWNzKCksIDBfbHUpLmFzY2VudDsKKyAgICAgICAgcmV0
dXJuIHsgaW5pdGlhbEJhc2VsaW5lLCBpbml0aWFsQmFzZWxpbmUsIEFzY2VudEFuZERlc2NlbnQg
eyBzdHJ1dEJhc2VsaW5lLCBzdHJ1dEhlaWdodCAtIHN0cnV0QmFzZWxpbmUgfSB9OwogICAgIH0K
ICAgICAvLyBGSVhNRTogVGhlIG9ubHkgcmVhc29uIHdoeSB3ZSB1c2UgaW50VmFsdWUoKSBoZXJl
IGlzIHRvIG1hdGNoIGN1cnJlbnQgaW5saW5lIHRyZWUgKGludGVncmFsKWJlaGF2aW9yLgogICAg
IElubGluZUxheW91dFVuaXQgaW5pdGlhbExpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0LmludFZhbHVl
KCk7Ci0gICAgYXV0byBpbml0aWFsQmFzZWxpbmVPZmZzZXQgPSBMaW5lQnVpbGRlcjo6aGFsZkxl
YWRpbmdNZXRyaWNzKGZvcm1hdHRpbmdSb290LnN0eWxlKCkuZm9udE1ldHJpY3MoKSwgaW5pdGlh
bExpbmVIZWlnaHQpLmFzY2VudCgpOwotICAgIHJldHVybiB7IGluaXRpYWxMaW5lSGVpZ2h0LCBp
bml0aWFsQmFzZWxpbmVPZmZzZXQsIExpbmVCb3g6OklubGluZUJveDo6QmFzZWxpbmUgeyBzdHJ1
dEJhc2VsaW5lT2Zmc2V0LCBzdHJ1dEhlaWdodCAtIHN0cnV0QmFzZWxpbmVPZmZzZXQgfSB9Owor
ICAgIGF1dG8gaW5pdGlhbEJhc2VsaW5lID0gTGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmlj
cyhmb3JtYXR0aW5nUm9vdC5zdHlsZSgpLmZvbnRNZXRyaWNzKCksIGluaXRpYWxMaW5lSGVpZ2h0
KS5hc2NlbnQ7CisgICAgcmV0dXJuIHsgaW5pdGlhbExpbmVIZWlnaHQsIGluaXRpYWxCYXNlbGlu
ZSwgQXNjZW50QW5kRGVzY2VudCB7IHN0cnV0QmFzZWxpbmUsIHN0cnV0SGVpZ2h0IC0gc3RydXRC
YXNlbGluZSB9IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaAppbmRleCAzNGEyMWMwZjhlOTY2YjhjNDUy
NjczZWI4ZmYwMDEzMjY0Njg5MTU5Li43ZmNlZDYyZWUzM2ZhMzI3ZDI1YWE0NjY4MTk4NmI5ZDYw
YzE1Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZUJveC5oCkBAIC0zMywzOCArMzMsMjQgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCitzdHJ1Y3QgQXNjZW50QW5kRGVzY2VudCB7Cisg
ICAgSW5saW5lTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBhc2NlbnQgKyBkZXNj
ZW50OyB9CisKKyAgICBJbmxpbmVMYXlvdXRVbml0IGFzY2VudCB7IDAgfTsKKyAgICBJbmxpbmVM
YXlvdXRVbml0IGRlc2NlbnQgeyAwIH07Cit9OworCiBjbGFzcyBMaW5lQm94IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgSW5saW5lQm94IHsKLSAg
ICAgICAgc3RydWN0IEJhc2VsaW5lIHsKLSAgICAgICAgICAgIEJhc2VsaW5lKElubGluZUxheW91
dFVuaXQgYXNjZW50LCBJbmxpbmVMYXlvdXRVbml0IGRlc2NlbnQpOwotICAgICAgICAgICAgQmFz
ZWxpbmUoKSA9IGRlZmF1bHQ7Ci0KLSAgICAgICAgICAgIHZvaWQgc2V0QXNjZW50KElubGluZUxh
eW91dFVuaXQpOwotICAgICAgICAgICAgdm9pZCBzZXREZXNjZW50KElubGluZUxheW91dFVuaXQp
OwotCi0gICAgICAgICAgICB2b2lkIHJlc2V0KCk7Ci0KLSAgICAgICAgICAgIElubGluZUxheW91
dFVuaXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYXNjZW50KCkgKyBkZXNjZW50KCk7IH0KLSAg
ICAgICAgICAgIElubGluZUxheW91dFVuaXQgYXNjZW50KCkgY29uc3Q7Ci0gICAgICAgICAgICBJ
bmxpbmVMYXlvdXRVbml0IGRlc2NlbnQoKSBjb25zdDsKLQotICAgICAgICBwcml2YXRlOgotI2lm
IEFTU0VSVF9FTkFCTEVECi0gICAgICAgICAgICBib29sIG1faGFzVmFsaWRBc2NlbnQgeyBmYWxz
ZSB9OwotICAgICAgICAgICAgYm9vbCBtX2hhc1ZhbGlkRGVzY2VudCB7IGZhbHNlIH07Ci0jZW5k
aWYKLSAgICAgICAgICAgIElubGluZUxheW91dFVuaXQgbV9hc2NlbnQgeyAwIH07Ci0gICAgICAg
ICAgICBJbmxpbmVMYXlvdXRVbml0IG1fZGVzY2VudCB7IDAgfTsKLSAgICAgICAgfTsKLSAgICAg
ICAgSW5saW5lQm94KGNvbnN0IEJhc2VsaW5lJik7CisgICAgICAgIElubGluZUJveChjb25zdCBB
c2NlbnRBbmREZXNjZW50Jik7CiAgICAgICAgIElubGluZUJveCgpID0gZGVmYXVsdDsKIAotICAg
ICAgICBCYXNlbGluZSBiYXNlbGluZTsKKyAgICAgICAgQXNjZW50QW5kRGVzY2VudCBhc2NlbnRB
bmREZXNjZW50OwogICAgIH07CiAKLSAgICBMaW5lQm94KGNvbnN0IERpc3BsYXk6OklubGluZVJl
Y3QmLCBjb25zdCBJbmxpbmVCb3g6OkJhc2VsaW5lJiwgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGlu
ZU9mZnNldCk7CisgICAgTGluZUJveChjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiwgY29uc3Qg
QXNjZW50QW5kRGVzY2VudCYsIElubGluZUxheW91dFVuaXQgYmFzZWxpbmUpOwogICAgIExpbmVC
b3goKSA9IGRlZmF1bHQ7CiAKICAgICBjb25zdCBEaXNwbGF5OjpJbmxpbmVSZWN0JiBsb2dpY2Fs
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQpAQCAtNzgsMTMgKzY0LDEyIEBAIHB1Ymxp
YzoKICAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVjdC53aWR0aCgpOyB9CiAgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gbV9yZWN0LmhlaWdodCgpOyB9CiAKLSAgICBjb25zdCBJbmxpbmVCb3g6OkJh
c2VsaW5lJiBiYXNlbGluZSgpIGNvbnN0OwotICAgIC8vIEJhc2VsaW5lIG9mZnNldCBmcm9tIGxp
bmUgbG9naWNhbCB0b3AuIE5vdGUgdGhhdCBvZmZzZXQgZG9lcyBub3QgbmVjZXNzYXJpbHkgZXF1
YWwgdG8gYXNjZW50LgorICAgIC8vIEJhc2VsaW5lIGZyb20gbGluZSBsb2dpY2FsIHRvcC4gTm90
ZSB0aGF0IHRoZSBiYXNlbGluZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0byBhc2NlbnQu
CiAgICAgLy8KICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tICAgIGxpbmUgbG9naWNhbCB0b3Ag
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0gKHRvcCBhbGlnbikKICAgICAvLyAgICAgICAgICAgICBe
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KICAgICAvLyAg
ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAg
IHwKLSAgICAvLyAgIF4gICAgICAgICB8IGJhc2VsaW5lIG9mZnNldCAgICAgICAgICAgICAgICAg
IHwgICAgICAgICAgIHwgYmFzZWxpbmUgb2Zmc2V0CisgICAgLy8gICBeICAgICAgICAgfCBiYXNl
bGluZSAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IGJhc2VsaW5lCiAgICAg
Ly8gICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICB8CiAgICAgLy8gICB8IGFzY2VudCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IGFzY2VudCAgICB8CiAgICAgLy8gICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2ICAgICAgICAgICB2CkBAIC05NCwxMyArNzksMTUgQEAgcHVibGlj
OgogICAgIC8vICAgfCBkZXNjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dgogICAgIC8vICAgdgogICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgbGluZSBsb2dpY2Fs
IGJvdHRvbSAgLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIElubGluZUxheW91dFVuaXQgYmFzZWxp
bmVPZmZzZXQoKSBjb25zdDsKLSAgICB2b2lkIHNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKElu
bGluZUxheW91dFVuaXQpOworICAgIElubGluZUxheW91dFVuaXQgYmFzZWxpbmUoKSBjb25zdDsK
KyAgICBjb25zdCBBc2NlbnRBbmREZXNjZW50JiBhc2NlbnRBbmREZXNjZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9yb290SW5saW5lQm94LmFzY2VudEFuZERlc2NlbnQ7IH0KKworICAgIHZvaWQgc2V0
QmFzZWxpbmVJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCk7CiAgICAgdm9pZCBzZXRBc2NlbnRJ
ZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCk7CiAgICAgdm9pZCBzZXREZXNjZW50SWZHcmVhdGVy
KElubGluZUxheW91dFVuaXQpOwogCiAgICAgdm9pZCByZXNldEJhc2VsaW5lKCk7Ci0gICAgdm9p
ZCByZXNldERlc2NlbnQoKSB7IG1fcm9vdElubGluZUJveC5iYXNlbGluZS5zZXREZXNjZW50KDBf
bHUpOyB9CisgICAgdm9pZCByZXNldERlc2NlbnQoKSB7IG1fcm9vdElubGluZUJveC5hc2NlbnRB
bmREZXNjZW50LmRlc2NlbnQgPSB7IH07IH0KIAogICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodChJ
bmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIHsgbV9yZWN0LnNldEhlaWdodChsb2dpY2Fs
SGVpZ2h0KTsgfQogCkBAIC0xMzAsMjggKzExNywyNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogI2lm
IEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2hhc1ZhbGlkQmFzZWxpbmUgeyBmYWxzZSB9Owot
ICAgIGJvb2wgbV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0IHsgZmFsc2UgfTsKICNlbmRpZgogICAg
IERpc3BsYXk6OklubGluZVJlY3QgbV9yZWN0OwogICAgIERpc3BsYXk6OklubGluZVJlY3QgbV9z
Y3JvbGxhYmxlT3ZlcmZsb3c7Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBtX2Jhc2VsaW5lT2Zmc2V0
IHsgMCB9OworICAgIElubGluZUxheW91dFVuaXQgbV9iYXNlbGluZSB7IDAgfTsKICAgICBib29s
IG1faXNDb25zaWRlcmVkRW1wdHkgeyB0cnVlIH07CiAgICAgSW5saW5lQm94IG1fcm9vdElubGlu
ZUJveDsKIH07CiAKLWlubGluZSBMaW5lQm94OjpMaW5lQm94KGNvbnN0IERpc3BsYXk6OklubGlu
ZVJlY3QmIHJlY3QsIGNvbnN0IElubGluZUJveDo6QmFzZWxpbmUmIGJhc2VsaW5lLCBJbmxpbmVM
YXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KQoraW5saW5lIExpbmVCb3g6OkxpbmVCb3goY29uc3Qg
RGlzcGxheTo6SW5saW5lUmVjdCYgcmVjdCwgY29uc3QgQXNjZW50QW5kRGVzY2VudCYgYXNjZW50
QW5kRGVzY2VudCwgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZSkKICAgICA6IG1fcmVjdChyZWN0
KQotICAgICwgbV9iYXNlbGluZU9mZnNldChiYXNlbGluZU9mZnNldCkKLSAgICAsIG1fcm9vdElu
bGluZUJveChiYXNlbGluZSkKKyAgICAsIG1fYmFzZWxpbmUoYmFzZWxpbmUpCisgICAgLCBtX3Jv
b3RJbmxpbmVCb3goYXNjZW50QW5kRGVzY2VudCkKIHsKICNpZiBBU1NFUlRfRU5BQkxFRAogICAg
IG1faGFzVmFsaWRCYXNlbGluZSA9IHRydWU7Ci0gICAgbV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0
ID0gdHJ1ZTsKICNlbmRpZgogfQogCi1pbmxpbmUgTGluZUJveDo6SW5saW5lQm94OjpJbmxpbmVC
b3goY29uc3QgQmFzZWxpbmUmIGJhc2VsaW5lKQotICAgIDogYmFzZWxpbmUoYmFzZWxpbmUpCitp
bmxpbmUgTGluZUJveDo6SW5saW5lQm94OjpJbmxpbmVCb3goY29uc3QgQXNjZW50QW5kRGVzY2Vu
dCYgYXNjZW50QW5kRGVzY2VudCkKKyAgICA6IGFzY2VudEFuZERlc2NlbnQoYXNjZW50QW5kRGVz
Y2VudCkKIHsKIH0KIApAQCAtMTYyLDk2ICsxNDcsNDMgQEAgaW5saW5lIHZvaWQgTGluZUJveDo6
c2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQp
CiAgICAgbV9yZWN0LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKIH0KIAotaW5saW5lIGNvbnN0
IExpbmVCb3g6OklubGluZUJveDo6QmFzZWxpbmUmIExpbmVCb3g6OmJhc2VsaW5lKCkgY29uc3QK
LXsKLSAgICBBU1NFUlQobV9oYXNWYWxpZEJhc2VsaW5lKTsKLSAgICByZXR1cm4gbV9yb290SW5s
aW5lQm94LmJhc2VsaW5lOwotfQotCi1pbmxpbmUgdm9pZCBMaW5lQm94OjpzZXRCYXNlbGluZU9m
ZnNldElmR3JlYXRlcihJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KQoraW5saW5lIHZv
aWQgTGluZUJveDo6c2V0QmFzZWxpbmVJZkdyZWF0ZXIoSW5saW5lTGF5b3V0VW5pdCBiYXNlbGlu
ZSkKIHsKICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIG1faGFzVmFsaWRCYXNlbGluZU9mZnNldCA9
IHRydWU7CisgICAgbV9oYXNWYWxpZEJhc2VsaW5lID0gdHJ1ZTsKICNlbmRpZgotICAgIG1fYmFz
ZWxpbmVPZmZzZXQgPSBzdGQ6Om1heChiYXNlbGluZU9mZnNldCwgbV9iYXNlbGluZU9mZnNldCk7
CisgICAgbV9iYXNlbGluZSA9IHN0ZDo6bWF4KGJhc2VsaW5lLCBtX2Jhc2VsaW5lKTsKIH0KIAog
aW5saW5lIHZvaWQgTGluZUJveDo6c2V0QXNjZW50SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQg
YXNjZW50KQogewotICAgIGlmIChhc2NlbnQgPCBtX3Jvb3RJbmxpbmVCb3guYmFzZWxpbmUuYXNj
ZW50KCkpCisgICAgaWYgKGFzY2VudCA8IG1fcm9vdElubGluZUJveC5hc2NlbnRBbmREZXNjZW50
LmFzY2VudCkKICAgICAgICAgcmV0dXJuOwotICAgIHNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVy
KGFzY2VudCk7Ci0gICAgbV9yb290SW5saW5lQm94LmJhc2VsaW5lLnNldEFzY2VudChhc2NlbnQp
OworICAgIHNldEJhc2VsaW5lSWZHcmVhdGVyKGFzY2VudCk7CisgICAgbV9yb290SW5saW5lQm94
LmFzY2VudEFuZERlc2NlbnQuYXNjZW50ID0gYXNjZW50OwogfQogCiBpbmxpbmUgdm9pZCBMaW5l
Qm94OjpzZXREZXNjZW50SWZHcmVhdGVyKElubGluZUxheW91dFVuaXQgZGVzY2VudCkKIHsKLSAg
ICBpZiAoZGVzY2VudCA8IG1fcm9vdElubGluZUJveC5iYXNlbGluZS5kZXNjZW50KCkpCisgICAg
aWYgKGRlc2NlbnQgPCBtX3Jvb3RJbmxpbmVCb3guYXNjZW50QW5kRGVzY2VudC5kZXNjZW50KQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9yb290SW5saW5lQm94LmJhc2VsaW5lLnNldERlc2NlbnQo
ZGVzY2VudCk7CisgICAgbV9yb290SW5saW5lQm94LmFzY2VudEFuZERlc2NlbnQuZGVzY2VudCA9
IGRlc2NlbnQ7CiB9CiAKLWlubGluZSBJbmxpbmVMYXlvdXRVbml0IExpbmVCb3g6OmJhc2VsaW5l
T2Zmc2V0KCkgY29uc3QKK2lubGluZSBJbmxpbmVMYXlvdXRVbml0IExpbmVCb3g6OmJhc2VsaW5l
KCkgY29uc3QKIHsKLSAgICBBU1NFUlQobV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0KTsKLSAgICBy
ZXR1cm4gbV9iYXNlbGluZU9mZnNldDsKKyAgICBBU1NFUlQobV9oYXNWYWxpZEJhc2VsaW5lKTsK
KyAgICByZXR1cm4gbV9iYXNlbGluZTsKIH0KIAogaW5saW5lIHZvaWQgTGluZUJveDo6cmVzZXRC
YXNlbGluZSgpCiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2hhc1ZhbGlkQmFzZWxpbmVP
ZmZzZXQgPSB0cnVlOwotI2VuZGlmCi0gICAgbV9iYXNlbGluZU9mZnNldCA9IDBfbHU7Ci0gICAg
bV9yb290SW5saW5lQm94LmJhc2VsaW5lLnJlc2V0KCk7Ci19Ci0KLWlubGluZSBMaW5lQm94OjpJ
bmxpbmVCb3g6OkJhc2VsaW5lOjpCYXNlbGluZShJbmxpbmVMYXlvdXRVbml0IGFzY2VudCwgSW5s
aW5lTGF5b3V0VW5pdCBkZXNjZW50KQotICAgIDogbV9hc2NlbnQoYXNjZW50KQotICAgICwgbV9k
ZXNjZW50KGRlc2NlbnQpCi17Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2hhc1ZhbGlkQXNj
ZW50ID0gdHJ1ZTsKLSAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7Ci0jZW5kaWYKLX0KLQot
aW5saW5lIHZvaWQgTGluZUJveDo6SW5saW5lQm94OjpCYXNlbGluZTo6c2V0QXNjZW50KElubGlu
ZUxheW91dFVuaXQgYXNjZW50KQotewotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgbV9oYXNWYWxp
ZEFzY2VudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBtX2FzY2VudCA9IGFzY2VudDsKLX0KLQotaW5s
aW5lIHZvaWQgTGluZUJveDo6SW5saW5lQm94OjpCYXNlbGluZTo6c2V0RGVzY2VudChJbmxpbmVM
YXlvdXRVbml0IGRlc2NlbnQpCi17Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBtX2hhc1ZhbGlk
RGVzY2VudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBtX2Rlc2NlbnQgPSBkZXNjZW50OwotfQotCi1p
bmxpbmUgdm9pZCBMaW5lQm94OjpJbmxpbmVCb3g6OkJhc2VsaW5lOjpyZXNldCgpCi17Ci0jaWYg
QVNTRVJUX0VOQUJMRUQKLSAgICBtX2hhc1ZhbGlkQXNjZW50ID0gdHJ1ZTsKLSAgICBtX2hhc1Zh
bGlkRGVzY2VudCA9IHRydWU7CisgICAgbV9oYXNWYWxpZEJhc2VsaW5lID0gdHJ1ZTsKICNlbmRp
ZgotICAgIG1fYXNjZW50ID0gMF9sdTsKLSAgICBtX2Rlc2NlbnQgPSAwX2x1OwotfQotCi1pbmxp
bmUgSW5saW5lTGF5b3V0VW5pdCBMaW5lQm94OjpJbmxpbmVCb3g6OkJhc2VsaW5lOjphc2NlbnQo
KSBjb25zdAotewotICAgIEFTU0VSVChtX2hhc1ZhbGlkQXNjZW50KTsKLSAgICByZXR1cm4gbV9h
c2NlbnQ7Ci19Ci0KLWlubGluZSBJbmxpbmVMYXlvdXRVbml0IExpbmVCb3g6OklubGluZUJveDo6
QmFzZWxpbmU6OmRlc2NlbnQoKSBjb25zdAotewotICAgIEFTU0VSVChtX2hhc1ZhbGlkRGVzY2Vu
dCk7Ci0gICAgcmV0dXJuIG1fZGVzY2VudDsKKyAgICBtX2Jhc2VsaW5lID0gMF9sdTsKKyAgICBt
X3Jvb3RJbmxpbmVCb3guYXNjZW50QW5kRGVzY2VudC5kZXNjZW50ID0geyB9OworICAgIG1fcm9v
dElubGluZUJveC5hc2NlbnRBbmREZXNjZW50LmFzY2VudCA9IHsgfTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1
aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5l
TGluZUJ1aWxkZXIuY3BwCmluZGV4IGJmNmI4YmZkNzViN2U3MmQ0YTNlYjNkZTg1ZjBmM2FjMTRj
ODhlYmUuLjdkYzhmYzIzNzlkMTY0N2JmNTY1MWZiMmYwODMxMzNlYmJhYjI5NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWls
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lQnVpbGRlci5jcHAKQEAgLTgyLDE3ICs4MiwxNyBAQCB2b2lkIExpbmVCdWlsZGVyOjpp
bml0aWFsaXplKGNvbnN0IENvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKICAgICBBU1NFUlQobV9p
c0ludHJpbnNpY1NpemluZyB8fCBjb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZSk7CiAKICAg
ICBJbmxpbmVMYXlvdXRVbml0IGluaXRpYWxMaW5lSGVpZ2h0ID0gMDsKLSAgICBJbmxpbmVMYXlv
dXRVbml0IGluaXRpYWxCYXNlbGluZU9mZnNldCA9IDA7CisgICAgSW5saW5lTGF5b3V0VW5pdCBp
bml0aWFsQmFzZWxpbmUgPSAwOwogICAgIGlmIChjb25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGlu
ZSkgewogICAgICAgICBtX2luaXRpYWxTdHJ1dCA9IGNvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2Vs
aW5lLT5zdHJ1dDsKICAgICAgICAgaW5pdGlhbExpbmVIZWlnaHQgPSBjb25zdHJhaW50cy5oZWln
aHRBbmRCYXNlbGluZS0+aGVpZ2h0OwotICAgICAgICBpbml0aWFsQmFzZWxpbmVPZmZzZXQgPSBj
b25zdHJhaW50cy5oZWlnaHRBbmRCYXNlbGluZS0+YmFzZWxpbmVPZmZzZXQ7CisgICAgICAgIGlu
aXRpYWxCYXNlbGluZSA9IGNvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lLT5iYXNlbGluZTsK
ICAgICB9IGVsc2UKICAgICAgICAgbV9pbml0aWFsU3RydXQgPSB7IH07CiAKICAgICBhdXRvIGxp
bmVSZWN0ID0gRGlzcGxheTo6SW5saW5lUmVjdCB7IGNvbnN0cmFpbnRzLmxvZ2ljYWxUb3BMZWZ0
LCAwX2x1LCBpbml0aWFsTGluZUhlaWdodCB9OwotICAgIGF1dG8gYmFzZWxpbmUgPSBMaW5lQm94
OjpJbmxpbmVCb3g6OkJhc2VsaW5lIHsgaW5pdGlhbEJhc2VsaW5lT2Zmc2V0LCBpbml0aWFsTGlu
ZUhlaWdodCAtIGluaXRpYWxCYXNlbGluZU9mZnNldCB9OwotICAgIG1fbGluZUJveCA9IExpbmVC
b3ggeyBsaW5lUmVjdCwgYmFzZWxpbmUsIGluaXRpYWxCYXNlbGluZU9mZnNldCB9OworICAgIGF1
dG8gYXNjZW50QW5kRGVzY2VudCA9IEFzY2VudEFuZERlc2NlbnQgeyBpbml0aWFsQmFzZWxpbmUs
IGluaXRpYWxMaW5lSGVpZ2h0IC0gaW5pdGlhbEJhc2VsaW5lIH07CisgICAgbV9saW5lQm94ID0g
TGluZUJveCB7IGxpbmVSZWN0LCBhc2NlbnRBbmREZXNjZW50LCBpbml0aWFsQmFzZWxpbmUgfTsK
ICAgICBtX2xpbmVMb2dpY2FsV2lkdGggPSBjb25zdHJhaW50cy5hdmFpbGFibGVMb2dpY2FsV2lk
dGg7CiAgICAgbV9oYXNJbnRydXNpdmVGbG9hdCA9IGNvbnN0cmFpbnRzLmxpbmVJc0NvbnN0cmFp
bmVkQnlGbG9hdDsKIApAQCAtMTI1LDcgKzEyNSw3IEBAIExpbmVCdWlsZGVyOjpSdW5MaXN0IExp
bmVCdWlsZGVyOjpjbG9zZShJc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQgaXNMYXN0TGluZVdp
CiAgICAgfQogICAgIC8vIFJlbW92ZSBkZXNjZW50IHdoZW4gYWxsIGNvbnRlbnQgaXMgYmFzZWxp
bmUgYWxpZ25lZCBidXQgbm9uZSBvZiB0aGVtIGhhdmUgZGVzY2VudC4KICAgICBpZiAoZm9ybWF0
dGluZ0NvbnRleHQoKS5xdWlya3MoKS5saW5lRGVzY2VudE5lZWRzQ29sbGFwc2luZyhtX3J1bnMp
KSB7Ci0gICAgICAgIG1fbGluZUJveC5zaHJpbmtWZXJ0aWNhbGx5KG1fbGluZUJveC5iYXNlbGlu
ZSgpLmRlc2NlbnQoKSk7CisgICAgICAgIG1fbGluZUJveC5zaHJpbmtWZXJ0aWNhbGx5KG1fbGlu
ZUJveC5hc2NlbnRBbmREZXNjZW50KCkuZGVzY2VudCk7CiAgICAgICAgIG1fbGluZUJveC5yZXNl
dERlc2NlbnQoKTsKICAgICB9CiAgICAgYWxpZ25Db250ZW50VmVydGljYWxseSgpOwpAQCAtMTQ2
LDEwICsxNDYsMTAgQEAgdm9pZCBMaW5lQnVpbGRlcjo6YWxpZ25Db250ZW50VmVydGljYWxseSgp
CiAgICAgICAgIHN3aXRjaCAodmVydGljYWxBbGlnbikgewogICAgICAgICBjYXNlIFZlcnRpY2Fs
QWxpZ246OkJhc2VsaW5lOgogICAgICAgICAgICAgaWYgKHJ1bi5pc0xpbmVCcmVhaygpIHx8IHJ1
bi5pc1RleHQoKSkKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gYmFzZWxpbmVPZmZzZXQo
KSAtIGFzY2VudDsKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gYmFzZWxpbmUoKSAtIGFz
Y2VudDsKICAgICAgICAgICAgIGVsc2UgaWYgKHJ1bi5pc0NvbnRhaW5lclN0YXJ0KCkpIHsKICAg
ICAgICAgICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2Vv
bWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gYmFz
ZWxpbmVPZmZzZXQoKSAtIGFzY2VudCAtIGJveEdlb21ldHJ5LmJvcmRlclRvcCgpIC0gYm94R2Vv
bWV0cnkucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCk7CisgICAgICAgICAgICAgICAgbG9naWNhbFRv
cCA9IGJhc2VsaW5lKCkgLSBhc2NlbnQgLSBib3hHZW9tZXRyeS5ib3JkZXJUb3AoKSAtIGJveEdl
b21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApOwogICAgICAgICAgICAgfSBlbHNlIGlmIChs
YXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgpICYmIGxheW91dEJveC5lc3RhYmxpc2hlc0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5n
U3RhdGUgPSBsYXlvdXRTdGF0ZSgpLmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGRv
d25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KSk7CiAgICAgICAgICAgICAgICAgLy8gU3Bl
YyBtYWtlcyB1cyBnZW5lcmF0ZSBhdCBsZWFzdCBvbmUgbGluZSAtZXZlbiBpZiBpdCBpcyBlbXB0
eS4KQEAgLTE2NywxMSArMTY3LDExIEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFsaWduQ29udGVudFZl
cnRpY2FsbHkoKQogICAgICAgICAgICAgICAgIC8vICAgICAtLS0tLXwtfC18LS0tLS0tLS0tLSA8
LSBiYXNlbGluZQogICAgICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgYXV0byYgYm94
R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7
Ci0gICAgICAgICAgICAgICAgYXV0byBiYXNlbGluZU9mZnNldEZyb21NYXJnaW5Cb3ggPSBib3hH
ZW9tZXRyeS5tYXJnaW5CZWZvcmUoKSArIGJveEdlb21ldHJ5LmJvcmRlclRvcCgpICsgYm94R2Vv
bWV0cnkucGFkZGluZ1RvcCgpLnZhbHVlT3IoMCkgKyBpbmxpbmVCbG9ja0Jhc2VsaW5lOwotICAg
ICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBiYXNlbGluZU9mZnNldCgpIC0gYmFzZWxpbmVPZmZz
ZXRGcm9tTWFyZ2luQm94OworICAgICAgICAgICAgICAgIGF1dG8gYmFzZWxpbmVGcm9tTWFyZ2lu
Qm94ID0gYm94R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkgKyBib3hHZW9tZXRyeS5ib3JkZXJUb3Ao
KSArIGJveEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApICsgaW5saW5lQmxvY2tCYXNl
bGluZTsKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gYmFzZWxpbmUoKSAtIGJhc2VsaW5l
RnJvbU1hcmdpbkJveDsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYXV0
byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91
dEJveCk7Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IGJhc2VsaW5lT2Zmc2V0KCkgLSAo
Ym94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGJveEdlb21ldHJ5LnZlcnRpY2FsUGFkZGlu
ZygpLnZhbHVlT3IoMF9sdSkgKyBydW4ubG9naWNhbFJlY3QoKS5oZWlnaHQoKSArIGJveEdlb21l
dHJ5Lm1hcmdpbkFmdGVyKCkpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBiYXNlbGlu
ZSgpIC0gKGJveEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBib3hHZW9tZXRyeS52ZXJ0aWNh
bFBhZGRpbmcoKS52YWx1ZU9yKDBfbHUpICsgcnVuLmxvZ2ljYWxSZWN0KCkuaGVpZ2h0KCkgKyBi
b3hHZW9tZXRyeS5tYXJnaW5BZnRlcigpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDoKQEAgLTU3Nyw4ICs1NzcsOCBA
QCB2b2lkIExpbmVCdWlsZGVyOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoKQogICAgICAg
ICAgICAgaGFzU2VlbkRpcmVjdFRleHRPckxpbmVCcmVhayA9IHRydWU7CiAgICAgICAgICAgICAv
LyBXZSBhcmUgaW4gcXVpcmtzIG1vZGUgd2hlcmUgdGhlIGZvbnQtbWV0cmljcyBtaWdodCBjaGFu
Z2UgdGhlIGxpbmUgbGluZSBoZWlnaHQvYmFzZWxpbmUgYW5kIHRoaXMgaXMgdGhlIGZpcnN0IHRl
eHQgY29udGVudCBvbiB0aGUgbGluZQogICAgICAgICAgICAgLy8gb3V0c2lkZSBvZiBhbiBpbmxp
bmUgY29udGFpbmVyLgotICAgICAgICAgICAgbV9saW5lQm94LnNldEFzY2VudElmR3JlYXRlciht
X2luaXRpYWxTdHJ1dC0+YXNjZW50KCkpOwotICAgICAgICAgICAgbV9saW5lQm94LnNldERlc2Nl
bnRJZkdyZWF0ZXIobV9pbml0aWFsU3RydXQtPmRlc2NlbnQoKSk7CisgICAgICAgICAgICBtX2xp
bmVCb3guc2V0QXNjZW50SWZHcmVhdGVyKG1faW5pdGlhbFN0cnV0LT5hc2NlbnQpOworICAgICAg
ICAgICAgbV9saW5lQm94LnNldERlc2NlbnRJZkdyZWF0ZXIobV9pbml0aWFsU3RydXQtPmRlc2Nl
bnQpOwogICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIobV9p
bml0aWFsU3RydXQtPmhlaWdodCgpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CkBAIC01OTEsMTEgKzU5MSwxMSBAQCB2b2lkIExpbmVCdWlsZGVyOjphZGp1c3RCYXNlbGluZUFu
ZExpbmVIZWlnaHQoKQogICAgICAgICAgICAgaWYgKHN0eWxlLnZlcnRpY2FsQWxpZ24oKSA9PSBW
ZXJ0aWNhbEFsaWduOjpCYXNlbGluZSkgewogICAgICAgICAgICAgICAgIGF1dG8gaGFsZkxlYWRp
bmcgPSBoYWxmTGVhZGluZ01ldHJpY3MoZm9udE1ldHJpY3MsIHN0eWxlLmNvbXB1dGVkTGluZUhl
aWdodCgpKTsKICAgICAgICAgICAgICAgICAvLyBCb3RoIGhhbGZsZWFkaW5nIGFzY2VudCBhbmQg
ZGVzY2VudCBjb3VsZCBiZSBuZWdhdGl2ZSAodGFsbCBmb250IHZzLiBzbWFsbCBsaW5lLWhlaWdo
dCB2YWx1ZSkKLSAgICAgICAgICAgICAgICBpZiAoaGFsZkxlYWRpbmcuZGVzY2VudCgpID4gMCkK
LSAgICAgICAgICAgICAgICAgICAgbV9saW5lQm94LnNldERlc2NlbnRJZkdyZWF0ZXIoaGFsZkxl
YWRpbmcuZGVzY2VudCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoaGFsZkxlYWRpbmcuYXNjZW50
KCkgPiAwKQotICAgICAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0QXNjZW50SWZHcmVhdGVy
KGhhbGZMZWFkaW5nLmFzY2VudCgpKTsKLSAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0TG9n
aWNhbEhlaWdodElmR3JlYXRlcihtX2xpbmVCb3guYmFzZWxpbmUoKS5oZWlnaHQoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKGhhbGZMZWFkaW5nLmRlc2NlbnQgPiAwKQorICAgICAgICAgICAgICAg
ICAgICBtX2xpbmVCb3guc2V0RGVzY2VudElmR3JlYXRlcihoYWxmTGVhZGluZy5kZXNjZW50KTsK
KyAgICAgICAgICAgICAgICBpZiAoaGFsZkxlYWRpbmcuYXNjZW50ID4gMCkKKyAgICAgICAgICAg
ICAgICAgICAgbV9saW5lQm94LnNldEFzY2VudElmR3JlYXRlcihoYWxmTGVhZGluZy5hc2NlbnQp
OworICAgICAgICAgICAgICAgIG1fbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKG1f
bGluZUJveC5hc2NlbnRBbmREZXNjZW50KCkuaGVpZ2h0KCkpOwogICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIoZm9u
dE1ldHJpY3MuaGVpZ2h0KCkpOwogICAgICAgICAgICAgY29udGludWU7CkBAIC02MjAsMTMgKzYy
MCwxMyBAQCB2b2lkIExpbmVCdWlsZGVyOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoKQog
ICAgICAgICAgICAgICAgICAgICAvLyBUaGVyZSBoYXMgdG8gYmUgYXQgbGVhc3Qgb25lIGxpbmUg
LWV2ZW4gaWYgaXQgaXMgZW1wdHkuCiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGxhc3RMaW5l
Qm94ID0gZm9ybWF0dGluZ1N0YXRlLmRpc3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVCb3hlcy5s
YXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gYmVmb3JlSGVpZ2h0ID0gYm94R2VvbWV0
cnkubWFyZ2luQmVmb3JlKCkgKyBib3hHZW9tZXRyeS5ib3JkZXJUb3AoKSArIGJveEdlb21ldHJ5
LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApOwotICAgICAgICAgICAgICAgICAgICBtX2xpbmVCb3gu
c2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIoYmVmb3JlSGVpZ2h0ICsgbGFzdExpbmVCb3guYmFz
ZWxpbmUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fbGluZUJveC5zZXRCYXNlbGluZUlmR3Jl
YXRlcihiZWZvcmVIZWlnaHQgKyBsYXN0TGluZUJveC5iYXNlbGluZSgpKTsKICAgICAgICAgICAg
ICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIobWFyZ2luQm94SGVp
Z2h0KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAvLyBO
b24gaW5saW5lLWJsb2NrIGJveGVzIHNpdCBvbiB0aGUgYmFzZWxpbmUgKGluY2x1ZGluZyB0aGVp
ciBib3R0b20gbWFyZ2luKS4KICAgICAgICAgICAgICAgICAgICAgbV9saW5lQm94LnNldEFzY2Vu
dElmR3JlYXRlcihtYXJnaW5Cb3hIZWlnaHQpOwogICAgICAgICAgICAgICAgICAgICAvLyBJZ25v
cmUgbmVnYXRpdmUgZGVzY2VudCAoeWVzLCBuZWdhdGl2ZSBkZXNjZW50IGlzIGEgdGhpbmcpLgot
ICAgICAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRlciht
YXJnaW5Cb3hIZWlnaHQgKyBzdGQ6Om1heDxJbmxpbmVMYXlvdXRVbml0PigwLCBtX2xpbmVCb3gu
YmFzZWxpbmUoKS5kZXNjZW50KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9saW5lQm94LnNl
dExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIobWFyZ2luQm94SGVpZ2h0ICsgc3RkOjptYXg8SW5saW5l
TGF5b3V0VW5pdD4oMCwgbV9saW5lQm94LmFzY2VudEFuZERlc2NlbnQoKS5kZXNjZW50KSk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpA
QCAtNjM5LDcgKzYzOSw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFkanVzdEJhc2VsaW5lQW5kTGlu
ZUhlaWdodCgpCiAgICAgICAgICAgICAgICAgYXV0byBsaW5lTG9naWNhbEhlaWdodCA9IG1fbGlu
ZUJveC5sb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgICAgICAgICAgaWYgKG1hcmdpbkJveEhlaWdo
dCA+IGxpbmVMb2dpY2FsSGVpZ2h0KSB7CiAgICAgICAgICAgICAgICAgICAgIG1fbGluZUJveC5z
ZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKG1hcmdpbkJveEhlaWdodCk7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fbGluZUJveC5zZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcihtX2xpbmVCb3guYmFz
ZWxpbmVPZmZzZXQoKSArIChtYXJnaW5Cb3hIZWlnaHQgLSBsaW5lTG9naWNhbEhlaWdodCkpOwor
ICAgICAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0QmFzZWxpbmVJZkdyZWF0ZXIobV9saW5l
Qm94LmJhc2VsaW5lKCkgKyAobWFyZ2luQm94SGVpZ2h0IC0gbGluZUxvZ2ljYWxIZWlnaHQpKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CkBAIC03MDUsNyArNzA1LDcgQEAgYm9vbCBMaW5lQnVpbGRlcjo6aXNWaXN1YWxseU5vbkVtcHR5
KGNvbnN0IFJ1biYgcnVuKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotTGluZUJveDo6
SW5saW5lQm94OjpCYXNlbGluZSBMaW5lQnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKGNvbnN0
IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcywgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbEhl
aWdodCkKK0FzY2VudEFuZERlc2NlbnQgTGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmljcyhj
b25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2lj
YWxIZWlnaHQpCiB7CiAgICAgYXV0byBhc2NlbnQgPSBmb250TWV0cmljcy5hc2NlbnQoKTsKICAg
ICBhdXRvIGRlc2NlbnQgPSBmb250TWV0cmljcy5kZXNjZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIu
aAppbmRleCAxNjY3NWYyYWFmN2MyNDZiZGM4OTkzODZlODZkMjNkNjdlYzU2Mjg4Li5hZjg4ZWYz
NWU4OWNkZmNlYTQyNDdiM2EwMmRlZGMwMzRhNDdjNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmgK
QEAgLTQ5LDggKzQ5LDggQEAgcHVibGljOgogICAgICAgICBib29sIGxpbmVJc0NvbnN0cmFpbmVk
QnlGbG9hdCB7IGZhbHNlIH07CiAgICAgICAgIHN0cnVjdCBIZWlnaHRBbmRCYXNlbGluZSB7CiAg
ICAgICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGhlaWdodCB7IDAgfTsKLSAgICAgICAgICAgIElu
bGluZUxheW91dFVuaXQgYmFzZWxpbmVPZmZzZXQgeyAwIH07Ci0gICAgICAgICAgICBPcHRpb25h
bDxMaW5lQm94OjpJbmxpbmVCb3g6OkJhc2VsaW5lPiBzdHJ1dDsKKyAgICAgICAgICAgIElubGlu
ZUxheW91dFVuaXQgYmFzZWxpbmUgeyAwIH07CisgICAgICAgICAgICBPcHRpb25hbDxBc2NlbnRB
bmREZXNjZW50PiBzdHJ1dDsKICAgICAgICAgfTsKICAgICAgICAgT3B0aW9uYWw8SGVpZ2h0QW5k
QmFzZWxpbmU+IGhlaWdodEFuZEJhc2VsaW5lOwogICAgIH07CkBAIC0xNDgsNyArMTQ4LDcgQEAg
cHVibGljOgogICAgIGVudW0gY2xhc3MgSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50IHsgTm8s
IFllcyB9OwogICAgIFJ1bkxpc3QgY2xvc2UoSXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50ID0g
SXNMYXN0TGluZVdpdGhJbmxpbmVDb250ZW50OjpObyk7CiAKLSAgICBzdGF0aWMgTGluZUJveDo6
SW5saW5lQm94OjpCYXNlbGluZSBoYWxmTGVhZGluZ01ldHJpY3MoY29uc3QgRm9udE1ldHJpY3Mm
LCBJbmxpbmVMYXlvdXRVbml0IGxpbmVMb2dpY2FsSGVpZ2h0KTsKKyAgICBzdGF0aWMgQXNjZW50
QW5kRGVzY2VudCBoYWxmTGVhZGluZ01ldHJpY3MoY29uc3QgRm9udE1ldHJpY3MmLCBJbmxpbmVM
YXlvdXRVbml0IGxpbmVMb2dpY2FsSGVpZ2h0KTsKIAogcHJpdmF0ZToKICAgICBJbmxpbmVMYXlv
dXRVbml0IGxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3gubG9naWNhbFRvcCgp
OyB9CkBAIC0xNjIsNyArMTYyLDcgQEAgcHJpdmF0ZToKIAogICAgIElubGluZUxheW91dFVuaXQg
Y29udGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveC5sb2dpY2FsV2lk
dGgoKTsgfQogICAgIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxSaWdodCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGluZUJveC5sb2dpY2FsUmlnaHQoKTsgfQotICAgIElubGluZUxheW91dFVu
aXQgYmFzZWxpbmVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3guYmFzZWxpbmVPZmZz
ZXQoKTsgfQorICAgIElubGluZUxheW91dFVuaXQgYmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiBt
X2xpbmVCb3guYmFzZWxpbmUoKTsgfQogCiAgICAgc3RydWN0IElubGluZVJ1bkRldGFpbHMgewog
ICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCB7IDAgfTsKQEAgLTIxOSw3ICsy
MTksNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBtX2lu
bGluZUZvcm1hdHRpbmdDb250ZXh0OwogICAgIFJ1bkxpc3QgbV9ydW5zOwogICAgIFRyaW1tYWJs
ZVRyYWlsaW5nQ29udGVudCBtX3RyaW1tYWJsZVRyYWlsaW5nQ29udGVudDsKLSAgICBPcHRpb25h
bDxMaW5lQm94OjpJbmxpbmVCb3g6OkJhc2VsaW5lPiBtX2luaXRpYWxTdHJ1dDsKKyAgICBPcHRp
b25hbDxBc2NlbnRBbmREZXNjZW50PiBtX2luaXRpYWxTdHJ1dDsKICAgICBJbmxpbmVMYXlvdXRV
bml0IG1fbGluZUxvZ2ljYWxXaWR0aCB7IDAgfTsKICAgICBPcHRpb25hbDxUZXh0QWxpZ25Nb2Rl
PiBtX2hvcml6b250YWxBbGlnbm1lbnQ7CiAgICAgYm9vbCBtX2lzSW50cmluc2ljU2l6aW5nIHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggN2YyMzY1OWZi
NWMwYWIzNDY0YzNjMzYwMzk1Y2VmNGE2NzEyZjZjNC4uMWU3ZjY0OWJlYWM3OTY1Y2MwMGYyYjdj
NGFjNjI5MzJkMWViYTVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAg
LTI5NCw3ICsyOTQsNyBAQCB2b2lkIExpbmVMYXlvdXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAgIH0KIAogICAgICAg
ICBhdXRvJiBsaW5lQm94ID0gaW5saW5lQ29udGVudC5saW5lQm94Rm9yUnVuKHJ1bik7Ci0gICAg
ICAgIGF1dG8gYmFzZWxpbmVPZmZzZXQgPSBwYWludE9mZnNldC55KCkgKyBsaW5lQm94LnRvcCgp
ICsgbGluZUJveC5iYXNlbGluZSgpOworICAgICAgICBhdXRvIGJhc2VsaW5lID0gcGFpbnRPZmZz
ZXQueSgpICsgbGluZUJveC50b3AoKSArIGxpbmVCb3guYmFzZWxpbmUoKTsKICAgICAgICAgYXV0
byBleHBhbnNpb24gPSBydW4uZXhwYW5zaW9uKCk7CiAKICAgICAgICAgU3RyaW5nIHRleHRXaXRo
SHlwaGVuOwpAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnQoUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAg
ICAgIHRleHRXaXRoSHlwaGVuID0gbWFrZVN0cmluZyh0ZXh0Q29udGVudC5jb250ZW50KCksIHN0
eWxlLmh5cGhlblN0cmluZygpKTsKICAgICAgICAgVGV4dFJ1biB0ZXh0UnVuIHsgIXRleHRXaXRo
SHlwaGVuLmlzRW1wdHkoKSA/IHRleHRXaXRoSHlwaGVuIDogdGV4dENvbnRlbnQuY29udGVudCgp
LCBydW4ubGVmdCgpIC0gbGluZUJveC5sZWZ0KCksIGV4cGFuc2lvbi5ob3Jpem9udGFsRXhwYW5z
aW9uLCBleHBhbnNpb24uYmVoYXZpb3IgfTsKICAgICAgICAgdGV4dFJ1bi5zZXRUYWJTaXplKCFz
dHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6ZSgpKTsKLSAgICAgICAgRmxv
YXRQb2ludCB0ZXh0T3JpZ2luIHsgcmVjdC54KCkgKyBwYWludE9mZnNldC54KCksIHJvdW5kVG9E
ZXZpY2VQaXhlbChiYXNlbGluZU9mZnNldCwgZGV2aWNlU2NhbGVGYWN0b3IpIH07CisgICAgICAg
IEZsb2F0UG9pbnQgdGV4dE9yaWdpbiB7IHJlY3QueCgpICsgcGFpbnRPZmZzZXQueCgpLCByb3Vu
ZFRvRGV2aWNlUGl4ZWwoYmFzZWxpbmUsIGRldmljZVNjYWxlRmFjdG9yKSB9OwogCiAgICAgICAg
IFRleHRQYWludGVyIHRleHRQYWludGVyKHBhaW50SW5mby5jb250ZXh0KCkpOwogICAgICAgICB0
ZXh0UGFpbnRlci5zZXRGb250KHN0eWxlLmZvbnRDYXNjYWRlKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0
aW5nQ29udGV4dC5jcHAKaW5kZXggOWQxMDFmYmMzZTM3ZjRmYzNjMzVhZjVjYjM0OTEwZmM5NjBj
NTk4NC4uZTMwYWJhNjIwMmViM2E2NGI2NmU0YmQzODY1MTRjNGQ3OGVlYjI1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1Rh
YmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xMDQsOSArMTA0LDkgQEAgdm9pZCBUYWJsZUZv
cm1hdHRpbmdDb250ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JDZWxscyhMYXlvdXRVbml0IGF2YWls
YWJsZUhvcml6b24KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
VmVydGljYWxBbGlnbjo6QmFzZWxpbmU6IHsKLSAgICAgICAgICAgIGF1dG8gcm93QmFzZWxpbmVP
ZmZzZXQgPSBMYXlvdXRVbml0IHsgcm93TGlzdFtjZWxsLT5zdGFydFJvdygpXS5iYXNlbGluZU9m
ZnNldCgpIH07Ci0gICAgICAgICAgICBhdXRvIGNlbGxCYXNlbGluZU9mZnNldCA9IExheW91dFVu
aXQgeyBjZWxsLT5iYXNlbGluZU9mZnNldCgpIH07Ci0gICAgICAgICAgICBpbnRyaW5zaWNQYWRk
aW5nVG9wID0gc3RkOjptYXgoMF9sdSwgcm93QmFzZWxpbmVPZmZzZXQgLSBjZWxsQmFzZWxpbmVP
ZmZzZXQgLSBjZWxsRGlzcGxheUJveC5ib3JkZXJUb3AoKSk7CisgICAgICAgICAgICBhdXRvIHJv
d0Jhc2VsaW5lID0gTGF5b3V0VW5pdCB7IHJvd0xpc3RbY2VsbC0+c3RhcnRSb3coKV0uYmFzZWxp
bmUoKSB9OworICAgICAgICAgICAgYXV0byBjZWxsQmFzZWxpbmUgPSBMYXlvdXRVbml0IHsgY2Vs
bC0+YmFzZWxpbmUoKSB9OworICAgICAgICAgICAgaW50cmluc2ljUGFkZGluZ1RvcCA9IHN0ZDo6
bWF4KDBfbHUsIHJvd0Jhc2VsaW5lIC0gY2VsbEJhc2VsaW5lIC0gY2VsbERpc3BsYXlCb3guYm9y
ZGVyVG9wKCkpOwogICAgICAgICAgICAgaW50cmluc2ljUGFkZGluZ0JvdHRvbSA9IHN0ZDo6bWF4
KDBfbHUsIGF2YWlsYWJsZVZlcnRpY2FsU3BhY2UgLSBjZWxsRGlzcGxheUJveC52ZXJ0aWNhbE1h
cmdpbkJvcmRlckFuZFBhZGRpbmcoKSAtIGludHJpbnNpY1BhZGRpbmdUb3AgLSBjZWxsRGlzcGxh
eUJveC5jb250ZW50Qm94SGVpZ2h0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTIxNCwxMSArMjE0LDExIEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6c2V0VXNl
ZEdlb21ldHJ5Rm9yUm93cyhMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250CiAgICAgICAgICAg
ICBpZiAoc2xvdC5oYXNSb3dTcGFuKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICBhdXRvJiBjZWxsID0gc2xvdC5jZWxsKCk7Ci0gICAgICAgICAgICByb3dCYXNlbGlu
ZXNbcm93SW5kZXhdID0gc3RkOjptYXgocm93QmFzZWxpbmVzW3Jvd0luZGV4XSwgY2VsbC5iYXNl
bGluZU9mZnNldCgpKTsKKyAgICAgICAgICAgIHJvd0Jhc2VsaW5lc1tyb3dJbmRleF0gPSBzdGQ6
Om1heChyb3dCYXNlbGluZXNbcm93SW5kZXhdLCBjZWxsLmJhc2VsaW5lKCkpOwogICAgICAgICB9
CiAgICAgfQogICAgIGZvciAoc2l6ZV90IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCByb3dzLnNp
emUoKTsgKytyb3dJbmRleCkKLSAgICAgICAgcm93c1tyb3dJbmRleF0uc2V0QmFzZWxpbmVPZmZz
ZXQocm93QmFzZWxpbmVzW3Jvd0luZGV4XSk7CisgICAgICAgIHJvd3Nbcm93SW5kZXhdLnNldEJh
c2VsaW5lKHJvd0Jhc2VsaW5lc1tyb3dJbmRleF0pOwogfQogCiB2b2lkIFRhYmxlRm9ybWF0dGlu
Z0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvclNlY3Rpb25zKGNvbnN0IENvbnN0cmFpbnRzRm9y
SW5GbG93Q29udGVudCYgY29uc3RyYWludHMpCkBAIC00OTAsNyArNDkwLDcgQEAgdm9pZCBUYWJs
ZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlQW5kRGlzdHJpYnV0ZUV4dHJhU3BhY2UoTGF5b3V0
VW5pdCBhdmFpbGFibGUKICAgICAgICAgICAgIC8vIFRoZSBtaW5pbXVtIGhlaWdodCBvZiBhIHJv
dyAod2l0aG91dCBzcGFubmluZy1yZWxhdGVkIGhlaWdodCBkaXN0cmlidXRpb24pIGlzIGRlZmlu
ZWQgYXMgdGhlIGhlaWdodCBvZiBhbiBoeXBvdGhldGljYWwKICAgICAgICAgICAgIC8vIGxpbmVi
b3ggY29udGFpbmluZyB0aGUgY2VsbHMgb3JpZ2luYXRpbmcgaW4gdGhlIHJvdy4KICAgICAgICAg
ICAgIGF1dG8mIGNlbGwgPSBzbG90LmNlbGwoKTsKLSAgICAgICAgICAgIGNlbGwuc2V0QmFzZWxp
bmVPZmZzZXQoZ2VvbWV0cnkoKS51c2VkQmFzZWxpbmVGb3JDZWxsKGNlbGwuYm94KCkpKTsKKyAg
ICAgICAgICAgIGNlbGwuc2V0QmFzZWxpbmUoZ2VvbWV0cnkoKS51c2VkQmFzZWxpbmVGb3JDZWxs
KGNlbGwuYm94KCkpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IGMzMWJlNTMzZjIzY2RkZDA1YWU5ZmJmOGVj
OGE1Y2Q2N2JiMmMwZGMuLjBkMmE2NmMxZWQ2YmJjNzZlNThkZWJhNjk5ZmQ5OTEwOWFmOTJmZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
dGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTE1
NCw3ICsxNTQsNyBAQCBJbmxpbmVMYXlvdXRVbml0IFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5Ojp1c2VkQmFzZWxpbmVGb3JDZWxsKGNvbnN0IENvbgogICAgICAgICAgICAgICAgIHJl
dHVybiBkaXNwbGF5SW5saW5lQ29udGVudC0+bGluZUJveGVzWzBdLmJhc2VsaW5lKCk7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKGNlbGxEZXNjZW5kYW50LmVzdGFibGlzaGVzVGFibGVGb3JtYXR0
aW5nQ29udGV4dCgpKQotICAgICAgICAgICAgcmV0dXJuIGxheW91dFN0YXRlKCkuZXN0YWJsaXNo
ZWRUYWJsZUZvcm1hdHRpbmdTdGF0ZShjZWxsRGVzY2VuZGFudCkudGFibGVHcmlkKCkucm93cygp
Lmxpc3QoKVswXS5iYXNlbGluZU9mZnNldCgpOworICAgICAgICAgICAgcmV0dXJuIGxheW91dFN0
YXRlKCkuZXN0YWJsaXNoZWRUYWJsZUZvcm1hdHRpbmdTdGF0ZShjZWxsRGVzY2VuZGFudCkudGFi
bGVHcmlkKCkucm93cygpLmxpc3QoKVswXS5iYXNlbGluZSgpOwogICAgIH0KICAgICByZXR1cm4g
Zm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChjZWxsQm94KS5jb250ZW50Qm94Qm90
dG9tKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0
aW5nL1RhYmxlR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9U
YWJsZUdyaWQuaAppbmRleCBkNjM0NTk4OGVlZmVmYTYyYmE4MzkzZWVmMTZlNDhiODQwMmQ1MjBl
Li4wMjVmZjUzMDU4MTE5ODMzN2FiODMwNzY5MDY3OTc3MTYxMzFjNzk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlR3JpZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVHcmlkLmgKQEAgLTEyMCwx
NSArMTIwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0KExheW91
dFVuaXQgbG9naWNhbEhlaWdodCkgeyBtX2xvZ2ljYWxIZWlnaHQgPSBsb2dpY2FsSGVpZ2h0OyB9
CiAgICAgICAgIExheW91dFVuaXQgbG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9n
aWNhbEhlaWdodDsgfQogCi0gICAgICAgIHZvaWQgc2V0QmFzZWxpbmVPZmZzZXQoSW5saW5lTGF5
b3V0VW5pdCBiYXNlbGluZU9mZnNldCkgeyBtX2Jhc2VsaW5lT2Zmc2V0ID0gYmFzZWxpbmVPZmZz
ZXQ7IH0KLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZU9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fYmFzZWxpbmVPZmZzZXQ7IH0KKyAgICAgICAgdm9pZCBzZXRCYXNlbGluZShJbmxp
bmVMYXlvdXRVbml0IGJhc2VsaW5lKSB7IG1fYmFzZWxpbmUgPSBiYXNlbGluZTsgfQorICAgICAg
ICBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlbGluZTsg
fQogCiAgICAgICAgIGNvbnN0IENvbnRhaW5lckJveCYgYm94KCkgY29uc3QgeyByZXR1cm4gKm1f
bGF5b3V0Qm94LmdldCgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBMYXlvdXRVbml0IG1f
bG9naWNhbFRvcDsKICAgICAgICAgTGF5b3V0VW5pdCBtX2xvZ2ljYWxIZWlnaHQ7Ci0gICAgICAg
IElubGluZUxheW91dFVuaXQgbV9iYXNlbGluZU9mZnNldDsKKyAgICAgICAgSW5saW5lTGF5b3V0
VW5pdCBtX2Jhc2VsaW5lOwogICAgICAgICBXZWFrUHRyPGNvbnN0IENvbnRhaW5lckJveD4gbV9s
YXlvdXRCb3g7CiAgICAgfTsKIApAQCAtMTY0LDggKzE2NCw4IEBAIHB1YmxpYzoKICAgICAgICAg
U2xvdFBvc2l0aW9uIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogICAg
ICAgICBDZWxsU3BhbiBzcGFuKCkgY29uc3QgeyByZXR1cm4gbV9zcGFuOyB9CiAKLSAgICAgICAg
dm9pZCBzZXRCYXNlbGluZU9mZnNldChJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KSB7
IG1fYmFzZWxpbmVPZmZzZXQgPSBiYXNlbGluZU9mZnNldDsgfQotICAgICAgICBJbmxpbmVMYXlv
dXRVbml0IGJhc2VsaW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9iYXNlbGluZU9mZnNldDsg
fQorICAgICAgICB2b2lkIHNldEJhc2VsaW5lKElubGluZUxheW91dFVuaXQgYmFzZWxpbmUpIHsg
bV9iYXNlbGluZSA9IGJhc2VsaW5lOyB9CisgICAgICAgIElubGluZUxheW91dFVuaXQgYmFzZWxp
bmUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VsaW5lOyB9CiAKICAgICAgICAgYm9vbCBpc0ZpeGVk
V2lkdGgoKSBjb25zdDsKIApAQCAtMTc1LDcgKzE3NSw3IEBAIHB1YmxpYzoKICAgICAgICAgV2Vh
a1B0cjxjb25zdCBDb250YWluZXJCb3g+IG1fbGF5b3V0Qm94OwogICAgICAgICBTbG90UG9zaXRp
b24gbV9wb3NpdGlvbjsKICAgICAgICAgQ2VsbFNwYW4gbV9zcGFuOwotICAgICAgICBJbmxpbmVM
YXlvdXRVbml0IG1fYmFzZWxpbmVPZmZzZXQgeyAwIH07CisgICAgICAgIElubGluZUxheW91dFVu
aXQgbV9iYXNlbGluZSB7IDAgfTsKICAgICB9OwogCiAgICAgY2xhc3MgU2xvdCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlTGF5b3V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVMYXlvdXQuY3Bw
CmluZGV4IDE0NmFhMzlhZGNmNDkxYzI5MTdlNWI1YzNhMDZkNjc5N2E5MjU4M2EuLjdmMDI4ZGNl
ODA4YTlhYTI1NzVmMzk5M2UyNzA3MTJjMjBjYTQ0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVMYXlvdXQuY3BwCkBAIC0yODEsOCAr
MjgxLDggQEAgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6VGFibGVMYXlvdXQ6OkRpc3RyaWJ1dGVk
U3BhY2VzIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OlQKICAgICAgICAgICAgIGF1dG8mIGNlbGxC
b3ggPSBjZWxsLmJveCgpOwogICAgICAgICAgICAgYXV0byBoZWlnaHQgPSBmb3JtYXR0aW5nQ29u
dGV4dCgpLmdlb21ldHJ5Rm9yQm94KGNlbGxCb3gpLmhlaWdodCgpOwogICAgICAgICAgICAgaWYg
KGNlbGxCb3guc3R5bGUoKS52ZXJ0aWNhbEFsaWduKCkgPT0gVmVydGljYWxBbGlnbjo6QmFzZWxp
bmUpIHsKLSAgICAgICAgICAgICAgICBtYXhpbXVtQ29sdW1uQXNjZW50ID0gc3RkOjptYXgobWF4
aW11bUNvbHVtbkFzY2VudCwgY2VsbC5iYXNlbGluZU9mZnNldCgpKTsKLSAgICAgICAgICAgICAg
ICBtYXhpbXVtQ29sdW1uRGVzY2VudCA9IHN0ZDo6bWF4KG1heGltdW1Db2x1bW5EZXNjZW50LCBo
ZWlnaHQgLSBjZWxsLmJhc2VsaW5lT2Zmc2V0KCkpOworICAgICAgICAgICAgICAgIG1heGltdW1D
b2x1bW5Bc2NlbnQgPSBzdGQ6Om1heChtYXhpbXVtQ29sdW1uQXNjZW50LCBjZWxsLmJhc2VsaW5l
KCkpOworICAgICAgICAgICAgICAgIG1heGltdW1Db2x1bW5EZXNjZW50ID0gc3RkOjptYXgobWF4
aW11bUNvbHVtbkRlc2NlbnQsIGhlaWdodCAtIGNlbGwuYmFzZWxpbmUoKSk7CiAgICAgICAgICAg
ICAgICAgcm93SGVpZ2h0W3Jvd0luZGV4XSA9IHN0ZDo6bWF4KHJvd0hlaWdodFtyb3dJbmRleF0s
IExheW91dFVuaXQgeyBtYXhpbXVtQ29sdW1uQXNjZW50ICsgbWF4aW11bUNvbHVtbkRlc2NlbnQg
fSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICByb3dIZWlnaHRbcm93SW5k
ZXhdID0gc3RkOjptYXgocm93SGVpZ2h0W3Jvd0luZGV4XSwgaGVpZ2h0KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>