<?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>225746</bug_id>
          
          <creation_ts>2021-05-13 04:40:21 -0700</creation_ts>
          <short_desc>[LFC] Cleanup FormattingQuirk classes</short_desc>
          <delta_ts>2021-05-16 06:51:18 -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>225731</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1759625</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-05-13 04:40:21 -0700</bug_when>
    <thetext>This is part of bug 225731 activity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759653</commentid>
    <comment_count>1</comment_count>
      <attachid>428493</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-05-13 05:32:37 -0700</bug_when>
    <thetext>Created attachment 428493
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760561</commentid>
    <comment_count>2</comment_count>
      <attachid>428771</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-05-15 21:15:47 -0700</bug_when>
    <thetext>Created attachment 428771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760563</commentid>
    <comment_count>3</comment_count>
      <attachid>428773</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-05-15 21:41:09 -0700</bug_when>
    <thetext>Created attachment 428773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760589</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-16 06:51:00 -0700</bug_when>
    <thetext>Committed r277567 (237795@main): &lt;https://commits.webkit.org/237795@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428773.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760590</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-16 06:51:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/78077656&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428493</attachid>
            <date>2021-05-13 05:32:37 -0700</date>
            <delta_ts>2021-05-15 21:15:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225746-20210513053236.patch</filename>
            <type>text/plain</type>
            <size>46492</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE5ZDEyNDY2NTYyNDFh
MTM2ZGYzNzJjYjQxZjMyZGViNWY0MzYwNy4uYzY2YzJjMzU4NTZjYmViNGI1ZjJjNDM4MTlmMTQ4
YjZiYmYzZTYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDIxLTA1LTEzICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXSBDbGVhbnVwIEZvcm1h
dHRpbmdRdWlyayBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjU3NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBRdWlyayBmdW5jdGlvbnMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gaW4g
cXVpcmtzIG1vZGUuCisKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1h
dHRpbmdRdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nUXVp
cmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdodCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdRdWlya3M6OmhlaWdo
dFZhbHVlT2ZOZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZpeGVkSGVpZ2h0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ1F1aXJrczo6bGF5b3V0U3RhdGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nUXVpcmtzOjpsYXlv
dXRTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9i
bG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cXVpcmtzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9y
bWF0dGluZ0dlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nR2VvbWV0cnk6OmluRmxvd0NvbnRlbnRIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAq
IGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nUXVpcmtzOjpCbG9j
a0Zvcm1hdHRpbmdRdWlya3MpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpuZWVkc1N0cmV0
Y2hpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdRdWlya3M6
OnN0cmV0Y2hlZEluRmxvd0hlaWdodElmQXBwbGljYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c2hvdWxkSWdub3JlQ29sbGFwc2Vk
UXVpcmtNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdR
dWlya3M6OnNob3VsZENvbGxhcHNlTWFyZ2luQmVmb3JlV2l0aFBhcmVudE1hcmdpbkJlZm9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c2hvdWxk
Q29sbGFwc2VNYXJnaW5BZnRlcldpdGhQYXJlbnRNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1F1aXJrczo6bmVlZHNTdHJldGNoaW5nIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nUXVp
cmtzOjpzdHJldGNoZWRJbkZsb3dIZWlnaHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZElnbm9yZUNvbGxhcHNlZFF1aXJr
TWFyZ2luIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tG
b3JtYXR0aW5nUXVpcmtzOjpzaG91bGRDb2xsYXBzZU1hcmdpbkJlZm9yZVdpdGhQYXJlbnRNYXJn
aW5CZWZvcmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZENvbGxhcHNlTWFyZ2luQWZ0ZXJXaXRoUGFyZW50TWFy
Z2luQWZ0ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1F1aXJrczo6Zm9ybWF0dGluZ0NvbnRleHQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tN
YXJnaW5Db2xsYXBzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrTWFyZ2lu
Q29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja01hcmdpbkNvbGxhcHNlOjptYXJn
aW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyQ29sbGFwc2Vz
V2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6QmxvY2tNYXJnaW5Db2xsYXBzZTo6cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9y
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrTWFyZ2luQ29sbGFwc2U6
OnF1aXJrcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9ibG9jay9QcmVjb21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja01hcmdpbkNvbGxhcHNlOjpwcmVjb21wdXRl
ZFBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9y
bWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZVdyYXBw
ZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luRm9yVGFibGVC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpxdWlya3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0
dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2Nr
L3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZVdyYXBwZXJRdWlya3M6OlRhYmxlV3JhcHBlclF1
aXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlV3JhcHBlclF1aXJrczo6b3Zl
cnJpZGRlblRhYmxlSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdRdWly
a3MuaDoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnF1aXJrcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVG
b3JtYXR0aW5nR2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nR2VvbWV0cnk6OmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3ggY29uc3QpOgor
ICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdHZW9tZXRyeS5oOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVGb3JtYXR0aW5nUXVpcmtzOjppbml0aWFsTGluZUhlaWdodCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdRdWlya3M6OmlubGluZUxldmVsQm94
QWZmZWN0c0xpbmVCb3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuaDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ1F1aXJrczo6Zm9ybWF0dGluZ0NvbnRleHQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVG
b3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9y
bWF0dGluZ0NvbnRleHQ6OnF1aXJrcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAg
ICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdHZW9t
ZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0dlb21l
dHJ5OjpjZWxsSGVpZ2ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6VGFibGVGb3JtYXR0aW5nUXVpcmtzOjpUYWJsZUZvcm1hdHRpbmdRdWlya3MpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdRdWlya3M6OnNob3VsZElnbm9y
ZUNoaWxkQ29udGVudFZlcnRpY2FsTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
VGFibGVGb3JtYXR0aW5nUXVpcmtzOjpzaG91bGRJZ25vcmVDaGlsZENvbnRlbnRWZXJ0aWNhbE1h
cmdpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdRdWlya3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6VGFibGVGb3JtYXR0aW5nUXVpcmtzOjpmb3JtYXR0aW5nQ29udGV4dCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5l
Q29udGVudEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OklubGluZUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVEaXNwbGF5Tm9uUm9vdElubGluZUJveGVzIGNv
bnN0KToKKwogMjAyMS0wNS0wNSAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFib3lhQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW01TRV1bR1N0cmVhbWVyXSBXZWJLaXRNZWRpYVNyYyByZXdvcmsgdjIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9y
bWF0dGluZ1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwCmluZGV4IDUzMGUyMTIzOTQwMjkwYWY4NWY3MTM2ZDlj
NzZkZGZhYjdkOTA5NDYuLmQ1NjhhZWVjMWY1YTY4MjkzNmQ0NmJiZTUyZmY2OTRlNGIxNjBmNTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9y
bWF0dGluZ1F1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmNwcApAQCAtNDAsNyArNDAsNyBAQCBGb3JtYXR0aW5n
UXVpcmtzOjpGb3JtYXR0aW5nUXVpcmtzKGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0
aW5nQ29udGV4dCkKIHsKIH0KIAotTGF5b3V0VW5pdCBGb3JtYXR0aW5nUXVpcmtzOjpoZWlnaHRW
YWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdodChjb25zdCBCb3gmIGxh
eW91dEJveCkKK0xheW91dFVuaXQgRm9ybWF0dGluZ1F1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJl
c3RDb250YWluaW5nQmxvY2tXaXRoRml4ZWRIZWlnaHQoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNv
bnN0CiB7CiAgICAgLy8gSW4gcXVpcmtzIG1vZGUsIHdlIGdvIGFuZCB0cmF2ZXJzIHRoZSBjb250
YWluaW5nIGJsb2NrIGNoYWluIHRvIGZpbmQgYSBibG9jayBsZXZlbCBib3ggd2l0aCBmaXhlZCBo
ZWlnaHQgdmFsdWUsIGV2ZW4gaWYgaXQgbWVhbnMgbGVhdmluZwogICAgIC8vIHRoZSBjdXJyZW50
IGZvcm1hdHRpbmcgY29udGV4dC4gRklYTUU6IHN1cmVseSB3ZSBuZWVkIHRvIGRvIHNvbWUgdHJp
Y2tzIGhlcmUgd2hlbiBibG9jayBkaXJlY3Rpb24gc3VwcG9ydCBpcyBhZGRlZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1
aXJrcy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0
aW5nUXVpcmtzLmgKaW5kZXggNWExZGM3ZDU4YjNiZDMwZjBmYTAyNGEwNzFlNzg3NmFiNTJhMTRm
YS4uMzNmMGQ4MjQxMmJhNWViOWY5OTRmOGU5NmVjODA3ZjI5MzA2YTA5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0
aW5nUXVpcmtzLmgKQEAgLTM2LDExICszNiwxMCBAQCBjbGFzcyBGb3JtYXR0aW5nUXVpcmtzIHsK
IHB1YmxpYzoKICAgICBGb3JtYXR0aW5nUXVpcmtzKGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0Jik7
CiAKLSAgICBMYXlvdXRVbml0IGhlaWdodFZhbHVlT2ZOZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0
aEZpeGVkSGVpZ2h0KGNvbnN0IEJveCYpOworICAgIExheW91dFVuaXQgaGVpZ2h0VmFsdWVPZk5l
YXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4ZWRIZWlnaHQoY29uc3QgQm94JikgY29uc3Q7CiAK
IHByb3RlY3RlZDoKICAgICBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX2Zvcm1hdHRpbmdDb250ZXh0LmxheW91dFN0YXRlKCk7IH0KLSAgICBMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUoKSB7IHJldHVybiBtX2Zvcm1hdHRpbmdDb250ZXh0LmxheW91dFN0
YXRlKCk7IH0KICAgICBjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdDb250ZXh0OyB9CiAKICAgICBjb25zdCBGb3Jt
YXR0aW5nQ29udGV4dCYgbV9mb3JtYXR0aW5nQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2Nr
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDA3ZDk5MmRiOGNkOWU4MzFmZGNmNmM1
OGY2NDAyMmQ2OWM2Njg5ZjQuLjk1MTc4ODE1MTc3MWQ0ZDVjMGNjZjJjZjc1NWNiM2ZkMjBlZDRl
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
YmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApA
QCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIKICNp
bmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5oIgotI2luY2x1ZGUgIkJsb2NrRm9ybWF0
dGluZ1F1aXJrcy5oIgogI2luY2x1ZGUgIkJsb2NrTWFyZ2luQ29sbGFwc2UuaCIKICNpbmNsdWRl
ICJGbG9hdGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJGbG9hdGluZ1N0YXRlLmgiCkBAIC02MTIs
MTEgKzYxMSw2IEBAIEJsb2NrTWFyZ2luQ29sbGFwc2UgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
bWFyZ2luQ29sbGFwc2UoKSBjb25zdAogICAgIHJldHVybiBCbG9ja01hcmdpbkNvbGxhcHNlKCp0
aGlzKTsKIH0KIAotQmxvY2tGb3JtYXR0aW5nUXVpcmtzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OnF1aXJrcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEJsb2NrRm9ybWF0dGluZ1F1aXJrcygqdGhp
cyk7Ci19Ci0KIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuaAppbmRleCA3ZDg2YjFjNTAxZGI4ODFhNDlhMjFhNjAyZjBmZDBlODk2ZDY5ODQ2Li4zY2E5
MDc1Yjk0MmQwZGE3Nzc4YTI3NjFiMjk2YTg0MzQwNDE4ODkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Js
b2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNDAsNyArNDAsNiBAQCBuYW1lc3BhY2Ug
TGF5b3V0IHsKIAogY2xhc3MgQm94OwogY2xhc3MgQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnk7Ci1j
bGFzcyBCbG9ja0Zvcm1hdHRpbmdRdWlya3M7CiBjbGFzcyBCbG9ja01hcmdpbkNvbGxhcHNlOwog
Y2xhc3MgRmxvYXRpbmdDb250ZXh0OwogCkBAIC04Miw3ICs4MSw2IEBAIHByb3RlY3RlZDoKIAog
ICAgIEJsb2NrRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSB7IHJldHVybiBkb3du
Y2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdT
dGF0ZSgpKTsgfQogICAgIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5IGdlb21ldHJ5KCkgY29uc3Q7
Ci0gICAgQmxvY2tGb3JtYXR0aW5nUXVpcmtzIHF1aXJrcygpIGNvbnN0OwogICAgIEJsb2NrTWFy
Z2luQ29sbGFwc2UgbWFyZ2luQ29sbGFwc2UoKSBjb25zdDsKIAogI2lmIEFTU0VSVF9FTkFCTEVE
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Js
b2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4
IDgyMzYzMDgxYzdjNzMyMjhjOGM5MTRkMzExMDNiYTk2OGMzOWZiOWYuLjdkMGI1NmExZWMzM2Y1
OTY3YjUxMjcwMmJlOWUxYmQ5MWU3YWVlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxv
Y2tGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0yODAsMTEgKzI4MCwxMCBAQCBDb250ZW50SGVp
Z2h0QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5OjppbkZsb3dDb250ZW50SGVpZ2h0
QW5kTWFyZ2luKGNvbgogICAgICAgICBjb250ZW50SGVpZ2h0QW5kTWFyZ2luID0gY29tcGxpY2F0
ZWRDYXNlcyhsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cywgb3ZlcnJpZGRlblZlcnRp
Y2FsVmFsdWVzKTsKICAgICB9CiAKLSAgICBhdXRvIHF1aXJrcyA9IEJsb2NrRm9ybWF0dGluZ1F1
aXJrcyB7IGZvcm1hdHRpbmdDb250ZXh0KCkgfTsKLSAgICBpZiAoIXF1aXJrcy5uZWVkc1N0cmV0
Y2hpbmcobGF5b3V0Qm94KSkKLSAgICAgICAgcmV0dXJuIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW47
Ci0KLSAgICBjb250ZW50SGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRIZWlnaHQgPSBxdWlya3Muc3Ry
ZXRjaGVkSW5GbG93SGVpZ2h0KGxheW91dEJveCwgY29udGVudEhlaWdodEFuZE1hcmdpbik7Cisg
ICAgaWYgKGxheW91dFN0YXRlKCkuaW5RdWlya3NNb2RlKCkpIHsKKyAgICAgICAgaWYgKGF1dG8g
c3RyZXRjaGVkSW5GbG93SGVpZ2h0ID0gQmxvY2tGb3JtYXR0aW5nUXVpcmtzKGZvcm1hdHRpbmdD
b250ZXh0KCkpLnN0cmV0Y2hlZEluRmxvd0hlaWdodElmQXBwbGljYWJsZShsYXlvdXRCb3gsIGNv
bnRlbnRIZWlnaHRBbmRNYXJnaW4pKQorICAgICAgICAgICAgY29udGVudEhlaWdodEFuZE1hcmdp
bi5jb250ZW50SGVpZ2h0ID0gKnN0cmV0Y2hlZEluRmxvd0hlaWdodDsKKyAgICB9CiAKICAgICBM
T0dfV0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0hlaWdo
dF1bTWFyZ2luXSAtPiBpbmZsb3cgbm9uLXJlcGxhY2VkIC0+IHN0cmVjaGVkIHRvIHZpZXdwb3J0
IC0+IGhlaWdodCgiIDw8IGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4uY29udGVudEhlaWdodCA8PCAi
cHgpIG1hcmdpbigiIDw8IGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2lu
LmJlZm9yZSA8PCAicHgsICIgPDwgY29udGVudEhlaWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRN
YXJnaW4uYWZ0ZXIgPDwgInB4KSAtPiBsYXlvdXRCb3goIiA8PCAmbGF5b3V0Qm94IDw8ICIpIik7
CiAgICAgcmV0dXJuIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1
aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2Nr
L0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAKaW5kZXggYjU0ZDUyNzU1YjM4NjQ2ZjFiN2RkMDI3
NGRlNTA0YTNlZGZmYzY1Yy4uYmVkMjk5MDIwMmMzYTVjODk4YTZlNzJlMmVlMjY0MDJlYTI3YjM2
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9i
bG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcApAQCAt
NDcsMjUgKzQ3LDIzIEBAIHN0YXRpYyBib29sIGlzUXVpcmtDb250YWluZXIoY29uc3QgQm94JiBs
YXlvdXRCb3gpCiBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OkJsb2NrRm9ybWF0dGluZ1F1aXJrcyhj
b25zdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0JiBibG9ja0Zvcm1hdHRpbmdDb250ZXh0KQogICAg
IDogRm9ybWF0dGluZ1F1aXJrcyhibG9ja0Zvcm1hdHRpbmdDb250ZXh0KQogeworICAgIEFTU0VS
VChsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpKTsKIH0KIAotYm9vbCBCbG9ja0Zvcm1hdHRp
bmdRdWlya3M6Om5lZWRzU3RyZXRjaGluZyhjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKK3N0
YXRpYyBib29sIG5lZWRzU3RyZXRjaGluZyhjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBB
U1NFUlQobGF5b3V0Qm94LmlzSW5GbG93KCkpOwogICAgIC8vIEluIHF1aXJrcyBtb2RlLCBpbi1m
bG93IGJvZHkgYW5kIGh0bWwgc3RyZXRjaCB0byB0aGUgaW5pdGlhbCBjb250YWluaW5nIGJsb2Nr
IChoZWlnaHQ6IGF1dG8gb25seSkuCi0gICAgaWYgKCFsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9k
ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBpZiAoIWxheW91dEJveC5pc0RvY3Vt
ZW50Qm94KCkgJiYgIWxheW91dEJveC5pc0JvZHlCb3goKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCiAgICAgcmV0dXJuIGxheW91dEJveC5zdHlsZSgpLmxvZ2ljYWxIZWlnaHQoKS5pc0F1dG8o
KTsKIH0KIAotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnN0cmV0Y2hlZEluRmxv
d0hlaWdodChjb25zdCBCb3gmIGxheW91dEJveCwgQ29udGVudEhlaWdodEFuZE1hcmdpbiBjb250
ZW50SGVpZ2h0QW5kTWFyZ2luKQorT3B0aW9uYWw8TGF5b3V0VW5pdD4gQmxvY2tGb3JtYXR0aW5n
UXVpcmtzOjpzdHJldGNoZWRJbkZsb3dIZWlnaHRJZkFwcGxpY2FibGUoY29uc3QgQm94JiBsYXlv
dXRCb3gsIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gY29udGVudEhlaWdodEFuZE1hcmdpbikgY29u
c3QKIHsKLSAgICBBU1NFUlQobmVlZHNTdHJldGNoaW5nKGxheW91dEJveCkpOwotICAgIGF1dG8m
IGZvcm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGluZ0NvbnRleHQoKTsKKyAgICBpZiAo
IW5lZWRzU3RyZXRjaGluZyhsYXlvdXRCb3gpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1
dG8mIGZvcm1hdHRpbmdDb250ZXh0ID0gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nQ29udGV4dD4o
dGhpcy0+Zm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgYXV0byBub25Db2xsYXBzZWRWZXJ0aWNh
bE1hcmdpbiA9IGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luLmJlZm9y
ZSArIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luLmFmdGVyOwogCiAg
ICAgaWYgKGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkpIHsKQEAgLTk5LDE2ICs5NywxNiBAQCBM
YXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c3RyZXRjaGVkSW5GbG93SGVpZ2h0KGNv
bnN0IEJveCYgbGF5b3V0Qm94LCBDbwogICAgIGJvZHlCb3hDb250ZW50SGVpZ2h0IC09IGRvY3Vt
ZW50Qm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGRvY3VtZW50Qm94R2VvbWV0cnkudmVy
dGljYWxQYWRkaW5nKCkudmFsdWVPcigwKTsKICAgICAvLyBIb3dldmVyIHRoZSBub24taW4tZmxv
dyBkb2N1bWVudCBib3gncyB2ZXJ0aWNhbCBtYXJnaW5zIGFyZSBpZ25vcmVkLiBUaGV5IGRvbid0
IGFmZmVjdCB0aGUgYm9keSBib3gncyBjb250ZW50IGhlaWdodC4KICAgICBpZiAoZG9jdW1lbnRC
b3guaXNJbkZsb3coKSkgewotICAgICAgICBhdXRvIGdlb21ldHJ5ID0gQmxvY2tGb3JtYXR0aW5n
R2VvbWV0cnkgeyBmb3JtYXR0aW5nQ29udGV4dCB9OwotICAgICAgICBhdXRvIHByZWNvbXB1dGVE
b2N1bWVudEJveFZlcnRpY2FsTWFyZ2luID0gZ2VvbWV0cnkuY29tcHV0ZWRWZXJ0aWNhbE1hcmdp
bihkb2N1bWVudEJveCwgZ2VvbWV0cnkuY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50KGluaXRp
YWxDb250YWluaW5nQmxvY2ssIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkJvZHlT
dHJldGNoZXNUb1ZpZXdwb3J0UXVpcmspLmhvcml6b250YWwpOworICAgICAgICBhdXRvIGZvcm1h
dHRpbmdHZW9tZXRyeSA9IEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5IHsgZm9ybWF0dGluZ0NvbnRl
eHQgfTsKKyAgICAgICAgYXV0byBwcmVjb21wdXRlRG9jdW1lbnRCb3hWZXJ0aWNhbE1hcmdpbiA9
IGZvcm1hdHRpbmdHZW9tZXRyeS5jb21wdXRlZFZlcnRpY2FsTWFyZ2luKGRvY3VtZW50Qm94LCBm
b3JtYXR0aW5nR2VvbWV0cnkuY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50KGluaXRpYWxDb250
YWluaW5nQmxvY2ssIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkJvZHlTdHJldGNo
ZXNUb1ZpZXdwb3J0UXVpcmspLmhvcml6b250YWwpOwogICAgICAgICBib2R5Qm94Q29udGVudEhl
aWdodCAtPSBwcmVjb21wdXRlRG9jdW1lbnRCb3hWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVP
cigwKSArIHByZWNvbXB1dGVEb2N1bWVudEJveFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3Io
MCk7CiAgICAgfQogICAgIHJldHVybiBzdGQ6Om1heChjb250ZW50SGVpZ2h0QW5kTWFyZ2luLmNv
bnRlbnRIZWlnaHQsICBib2R5Qm94Q29udGVudEhlaWdodCk7CiB9CiAKLWJvb2wgQmxvY2tGb3Jt
YXR0aW5nUXVpcmtzOjpzaG91bGRJZ25vcmVDb2xsYXBzZWRRdWlya01hcmdpbihjb25zdCBCb3gm
IGxheW91dEJveCkgY29uc3QKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nUXVpcmtzOjpzaG91bGRJZ25v
cmVDb2xsYXBzZWRRdWlya01hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCkKIHsKLSAgICByZXR1
cm4gbGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSAmJiBpc1F1aXJrQ29udGFpbmVyKGxheW91
dEJveCk7CisgICAgcmV0dXJuIGlzUXVpcmtDb250YWluZXIobGF5b3V0Qm94KTsKIH0KIAogZW51
bSBjbGFzcyBWZXJ0aWNhbE1hcmdpbiB7IEJlZm9yZSwgQWZ0ZXIgfTsKQEAgLTEyMCwxNCArMTE4
LDE0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNRdWlya01hcmdpblRvQ29sbGFwc2UoY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIFZlcnRpY2FsTWFyZ2luCiAgICAgcmV0dXJuICh2ZXJ0aWNhbE1hcmdp
biA9PSBWZXJ0aWNhbE1hcmdpbjo6QmVmb3JlICYmIHN0eWxlLmhhc01hcmdpbkJlZm9yZVF1aXJr
KCkpIHx8ICh2ZXJ0aWNhbE1hcmdpbiA9PSBWZXJ0aWNhbE1hcmdpbjo6QWZ0ZXIgJiYgc3R5bGUu
aGFzTWFyZ2luQWZ0ZXJRdWlyaygpKTsKIH0KIAotYm9vbCBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6
OnNob3VsZENvbGxhcHNlTWFyZ2luQmVmb3JlV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBC
b3gmIGxheW91dEJveCkgY29uc3QKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nUXVpcmtzOjpzaG91bGRD
b2xsYXBzZU1hcmdpbkJlZm9yZVdpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29uc3QgQm94JiBsYXlv
dXRCb3gpCiB7Ci0gICAgcmV0dXJuIGxheW91dFN0YXRlKCkuaW5RdWlya3NNb2RlKCkgJiYgaGFz
UXVpcmtNYXJnaW5Ub0NvbGxhcHNlKGxheW91dEJveCwgVmVydGljYWxNYXJnaW46OkJlZm9yZSkg
JiYgaXNRdWlya0NvbnRhaW5lcihsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOworICAgIHJl
dHVybiBoYXNRdWlya01hcmdpblRvQ29sbGFwc2UobGF5b3V0Qm94LCBWZXJ0aWNhbE1hcmdpbjo6
QmVmb3JlKSAmJiBpc1F1aXJrQ29udGFpbmVyKGxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7
CiB9CiAKLWJvb2wgQmxvY2tGb3JtYXR0aW5nUXVpcmtzOjpzaG91bGRDb2xsYXBzZU1hcmdpbkFm
dGVyV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAorYm9v
bCBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZENvbGxhcHNlTWFyZ2luQWZ0ZXJXaXRoUGFy
ZW50TWFyZ2luQWZ0ZXIoY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7Ci0gICAgcmV0dXJuIGxheW91
dFN0YXRlKCkuaW5RdWlya3NNb2RlKCkgJiYgaGFzUXVpcmtNYXJnaW5Ub0NvbGxhcHNlKGxheW91
dEJveCwgVmVydGljYWxNYXJnaW46OkFmdGVyKSAmJiBpc1F1aXJrQ29udGFpbmVyKGxheW91dEJv
eC5jb250YWluaW5nQmxvY2soKSk7CisgICAgcmV0dXJuIGhhc1F1aXJrTWFyZ2luVG9Db2xsYXBz
ZShsYXlvdXRCb3gsIFZlcnRpY2FsTWFyZ2luOjpBZnRlcikgJiYgaXNRdWlya0NvbnRhaW5lcihs
YXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1
aXJrcy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9C
bG9ja0Zvcm1hdHRpbmdRdWlya3MuaAppbmRleCA4MDIxYzE0NDIxMjhhZGNmZmI5ZGQ5NTNkMDU2
ZTVhNjAzNWY1MDdmLi5mZWE2Y2YzZGNkZjlmZGEyMTFmMGUyMzRkNzk2NjhhYWRjZDdlNGUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2Nr
L0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmgKQEAgLTM2LDE1ICsz
NiwxMCBAQCBjbGFzcyBCbG9ja0Zvcm1hdHRpbmdRdWlya3MgOiBwdWJsaWMgRm9ybWF0dGluZ1F1
aXJrcyB7CiBwdWJsaWM6CiAgICAgQmxvY2tGb3JtYXR0aW5nUXVpcmtzKGNvbnN0IEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQmKTsKIAotICAgIGJvb2wgbmVlZHNTdHJldGNoaW5nKGNvbnN0IEJveCYp
IGNvbnN0OwotICAgIExheW91dFVuaXQgc3RyZXRjaGVkSW5GbG93SGVpZ2h0KGNvbnN0IEJveCYs
IENvbnRlbnRIZWlnaHRBbmRNYXJnaW4pOwotCi0gICAgYm9vbCBzaG91bGRJZ25vcmVDb2xsYXBz
ZWRRdWlya01hcmdpbihjb25zdCBCb3gmKSBjb25zdDsKLSAgICBib29sIHNob3VsZENvbGxhcHNl
TWFyZ2luQmVmb3JlV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBCb3gmKSBjb25zdDsKLSAg
ICBib29sIHNob3VsZENvbGxhcHNlTWFyZ2luQWZ0ZXJXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29u
c3QgQm94JikgY29uc3Q7Ci0KLXByb3RlY3RlZDoKLSAgICBjb25zdCBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ+KEZvcm1hdHRpbmdRdWlya3M6OmZvcm1hdHRpbmdDb250ZXh0KCkp
OyB9CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gc3RyZXRjaGVkSW5GbG93SGVpZ2h0SWZBcHBs
aWNhYmxlKGNvbnN0IEJveCYsIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4pIGNvbnN0OworICAgIHN0
YXRpYyBib29sIHNob3VsZElnbm9yZUNvbGxhcHNlZFF1aXJrTWFyZ2luKGNvbnN0IEJveCYpOwor
ICAgIHN0YXRpYyBib29sIHNob3VsZENvbGxhcHNlTWFyZ2luQmVmb3JlV2l0aFBhcmVudE1hcmdp
bkJlZm9yZShjb25zdCBCb3gmKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRDb2xsYXBzZU1hcmdp
bkFmdGVyV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IEJveCYpOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9j
a01hcmdpbkNvbGxhcHNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKaW5kZXggMGI3MjBmODg2YjY1Mjll
NWYyNzFlYzg1NGM5OTJmMTI3MjBkNGE4MC4uMTQzYTEzZDcwOGIzNTM4N2M5N2VkNjllZWI2N2Nk
ZTU5MTk2OWUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3Bw
CkBAIC04NywxMSArODcsNiBAQCBCbG9ja01hcmdpbkNvbGxhcHNlOjpCbG9ja01hcmdpbkNvbGxh
cHNlKGNvbnN0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQmIGJsb2NrRm9ybQogewogfQogCi1CbG9j
a0Zvcm1hdHRpbmdRdWlya3MgQmxvY2tNYXJnaW5Db2xsYXBzZTo6cXVpcmtzKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gQmxvY2tGb3JtYXR0aW5nUXVpcmtzIHsgZm9ybWF0dGluZ0NvbnRleHQoKSB9
OyAKLX0KLQogYm9vbCBCbG9ja01hcmdpbkNvbGxhcHNlOjpoYXNDbGVhcmFuY2UoY29uc3QgQm94
JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgaWYgKCFsYXlvdXRCb3guaGFzRmxvYXRDbGVhcigp
KQpAQCAtMTI1LDcgKzEyMCw3IEBAIGJvb2wgQmxvY2tNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVm
b3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBCb3gmCiAgICAgLy8gaHR0
cHM6Ly93d3cudzMub3JnL1RSL0NTUzIxL2JveC5odG1sI2NvbGxhcHNpbmctbWFyZ2lucwogICAg
IEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94KCkpOwogCi0gICAgaWYgKHF1aXJrcygp
LnNob3VsZENvbGxhcHNlTWFyZ2luQmVmb3JlV2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXlvdXRC
b3gpKQorICAgIGlmIChsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpICYmIEJsb2NrRm9ybWF0
dGluZ1F1aXJrczo6c2hvdWxkQ29sbGFwc2VNYXJnaW5CZWZvcmVXaXRoUGFyZW50TWFyZ2luQmVm
b3JlKGxheW91dEJveCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gTWFyZ2lucyBi
ZXR3ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFueSBvdGhlciBib3ggZG8gbm90IGNvbGxhcHNlLgpA
QCAtMjYzLDcgKzI1OCw3IEBAIGJvb2wgQmxvY2tNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJD
b2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgQm94JiBsCiB7CiAgICAgQVNTRVJU
KGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CiAKLSAgICBpZiAocXVpcmtzKCkuc2hvdWxk
Q29sbGFwc2VNYXJnaW5BZnRlcldpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXlvdXRCb3gpKQorICAg
IGlmIChsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpICYmIEJsb2NrRm9ybWF0dGluZ1F1aXJr
czo6c2hvdWxkQ29sbGFwc2VNYXJnaW5BZnRlcldpdGhQYXJlbnRNYXJnaW5BZnRlcihsYXlvdXRC
b3gpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIE1hcmdpbnMgYmV0d2VlbiBhIGZs
b2F0ZWQgYm94IGFuZCBhbnkgb3RoZXIgYm94IGRvIG5vdCBjb2xsYXBzZS4KQEAgLTM1NCw3ICsz
NDksOCBAQCBib29sIEJsb2NrTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0
aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKGNvbgogCiAgICAgLy8gVGhpcyBpcyBhIHF1aXJr
IGJlaGF2aW9yOiBXaGVuIHRoZSBtYXJnaW4gYWZ0ZXIgb2YgdGhlIGxhc3QgaW5mbG93IGNoaWxk
IChvciBhIHByZXZpb3VzIHNpYmxpbmcgd2l0aCBjb2xsYXBzZWQgdGhyb3VnaCBtYXJnaW5zKQog
ICAgIC8vIGNvbGxhcHNlcyB3aXRoIGEgcXVpcmsgcGFyZW50J3MgdGhlIG1hcmdpbiBiZWZvcmUs
IHRoZW4gdGhlIHNhbWUgbWFyZ2luIGFmdGVyIGRvZXMgbm90IGNvbGxhcHNlcyB3aXRoIHRoZSBw
YXJlbnQncyBtYXJnaW4gYWZ0ZXIuCi0gICAgaWYgKHF1aXJrcygpLnNob3VsZElnbm9yZUNvbGxh
cHNlZFF1aXJrTWFyZ2luKGxheW91dEJveCkgJiYgbWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFy
ZW50TWFyZ2luQmVmb3JlKGxhc3RJbkZsb3dDaGlsZCkpCisgICAgYXV0byBzaG91bGRJZ25vcmVD
b2xsYXBzZWRNYXJnaW4gPSBsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpICYmIEJsb2NrRm9y
bWF0dGluZ1F1aXJrczo6c2hvdWxkSWdub3JlQ29sbGFwc2VkUXVpcmtNYXJnaW4obGF5b3V0Qm94
KTsKKyAgICBpZiAoc2hvdWxkSWdub3JlQ29sbGFwc2VkTWFyZ2luICYmIG1hcmdpbkFmdGVyQ29s
bGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXN0SW5GbG93Q2hpbGQpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTUwNyw3ICs1MDMsOCBAQCBVc2Vk
VmVydGljYWxNYXJnaW46OlBvc2l0aXZlQW5kTmVnYXRpdmVQYWlyOjpWYWx1ZXMgQmxvY2tNYXJn
aW5Db2xsYXBzZTo6cG9zaXRpdgogICAgIC8vIDIuIEdhdGhlciBwb3NpdGl2ZSBhbmQgbmVnYXRp
dmUgbWFyZ2luIHZhbHVlcyBmcm9tIHByZXZpb3VzIGluZmxvdyBzaWJsaW5nIGlmIG1hcmdpbnMg
YXJlIGFkam9pbmluZy4KICAgICAvLyAzLiBDb21wdXRlIG1pbi9tYXggcG9zaXRpdmUgYW5kIG5l
Z2F0aXZlIGNvbGxhcHNlZCBtYXJnaW4gdmFsdWVzIHVzaW5nIG5vbi1jb2xscGFzZWQgY29tcHV0
ZWQgbWFyZ2luIGJlZm9yZS4KICAgICBhdXRvIGNvbGxhcHNlZE1hcmdpbkJlZm9yZSA9IGNvbXB1
dGVkUG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbihmaXJzdENoaWxkQ29sbGFwc2VkTWFyZ2luQmVm
b3JlKCksIHByZXZpb3VTaWJsaW5nQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSk7Ci0gICAgaWYgKGNv
bGxhcHNlZE1hcmdpbkJlZm9yZS5pc1F1aXJrICYmIHF1aXJrcygpLnNob3VsZElnbm9yZUNvbGxh
cHNlZFF1aXJrTWFyZ2luKGxheW91dEJveCkpCisgICAgYXV0byBzaG91bGRJZ25vcmVDb2xsYXBz
ZWRNYXJnaW4gPSBjb2xsYXBzZWRNYXJnaW5CZWZvcmUuaXNRdWlyayAmJiBsYXlvdXRTdGF0ZSgp
LmluUXVpcmtzTW9kZSgpICYmIEJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c2hvdWxkSWdub3JlQ29s
bGFwc2VkUXVpcmtNYXJnaW4obGF5b3V0Qm94KTsKKyAgICBpZiAoc2hvdWxkSWdub3JlQ29sbGFw
c2VkTWFyZ2luKQogICAgICAgICBjb2xsYXBzZWRNYXJnaW5CZWZvcmUgPSB7IH07CiAKICAgICBV
c2VkVmVydGljYWxNYXJnaW46OlBvc2l0aXZlQW5kTmVnYXRpdmVQYWlyOjpWYWx1ZXMgbm9uQ29s
bGFwc2VkQmVmb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuaAppbmRl
eCBlZWFhOTE1NmNlY2M5MWIyYWFjNjI5MWE4MjYxYWUyZmNjOTJjYWZjLi5kMjRkZjBlY2ExN2U0
MDM4NzQwYjlmNTU4ODExYTdkMmU1YTIzYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFy
Z2luQ29sbGFwc2UuaApAQCAtNzAsNyArNzAsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBoYXND
bGVhcmFuY2UoY29uc3QgQm94JikgY29uc3Q7CiAKLSAgICBCbG9ja0Zvcm1hdHRpbmdRdWlya3Mg
cXVpcmtzKCkgY29uc3Q7CiAgICAgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgeyByZXR1cm4g
bV9ibG9ja0Zvcm1hdHRpbmdDb250ZXh0LmxheW91dFN0YXRlKCk7IH0KICAgICBjb25zdCBMYXlv
dXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQubGF5b3V0U3RhdGUoKTsgfQogICAgIGNvbnN0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQm
IGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja0Zvcm1hdHRpbmdDb250
ZXh0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2Jsb2NrL1ByZWNvbXB1dGVkQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL1ByZWNvbXB1dGVkQmxvY2tNYXJn
aW5Db2xsYXBzZS5jcHAKaW5kZXggNmZlYjEwZDNjM2ExNWNjZTU0NTY0MWYwNDA1MWYyNjY1MmU2
ODRhOS4uOTA4ZTczZGI3M2E4YjBiNzRiNDk0ZDA5MTZiYmUxODgxN2MyNjNlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9QcmVjb21w
dXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvYmxvY2svUHJlY29tcHV0ZWRCbG9ja01hcmdpbkNvbGxhcHNlLmNw
cApAQCAtNzIsNyArNzIsOCBAQCBVc2VkVmVydGljYWxNYXJnaW46OlBvc2l0aXZlQW5kTmVnYXRp
dmVQYWlyOjpWYWx1ZXMgQmxvY2tNYXJnaW5Db2xsYXBzZTo6cHJlY29tcAogICAgIC8vIDIuIEdh
dGhlciBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgbWFyZ2luIHZhbHVlcyBmcm9tIHByZXZpb3VzIGlu
ZmxvdyBzaWJsaW5nIGlmIG1hcmdpbnMgYXJlIGFkam9pbmluZy4KICAgICAvLyAzLiBDb21wdXRl
IG1pbi9tYXggcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGNvbGxhcHNlZCBtYXJnaW4gdmFsdWVzIHVz
aW5nIG5vbi1jb2xscGFzZWQgY29tcHV0ZWQgbWFyZ2luIGJlZm9yZS4KICAgICBhdXRvIGNvbGxh
cHNlZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkUG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbihmaXJz
dENoaWxkQ29sbGFwc2VkTWFyZ2luQmVmb3JlKCksIHByZXZpb3VTaWJsaW5nQ29sbGFwc2VkTWFy
Z2luQWZ0ZXIoKSk7Ci0gICAgaWYgKGNvbGxhcHNlZE1hcmdpbkJlZm9yZS5pc1F1aXJrICYmIHF1
aXJrcygpLnNob3VsZElnbm9yZUNvbGxhcHNlZFF1aXJrTWFyZ2luKGxheW91dEJveCkpCisgICAg
YXV0byBzaG91bGRJZ25vcmVDb2xsYXBzZWRNYXJnaW4gPSBjb2xsYXBzZWRNYXJnaW5CZWZvcmUu
aXNRdWlyayAmJiBsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpICYmIEJsb2NrRm9ybWF0dGlu
Z1F1aXJrczo6c2hvdWxkSWdub3JlQ29sbGFwc2VkUXVpcmtNYXJnaW4obGF5b3V0Qm94KTsKKyAg
ICBpZiAoc2hvdWxkSWdub3JlQ29sbGFwc2VkTWFyZ2luKQogICAgICAgICBjb2xsYXBzZWRNYXJn
aW5CZWZvcmUgPSB7IH07CiAKICAgICBhdXRvIG5vbkNvbGxhcHNlZEJlZm9yZSA9IFVzZWRWZXJ0
aWNhbE1hcmdpbjo6UG9zaXRpdmVBbmROZWdhdGl2ZVBhaXI6OlZhbHVlcyB7IH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxl
d3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxl
V3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDU1NGM4OTIwZWI0YWQyMmU0
NmEyYTQ1YTE1YjlhNjgyMGVhOTEwMmIuLmFhNzc1NDYzMDJlOGU5ZThkOWRlZjBlMTEzMzBhNjgy
NzY1MThiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxv
Y2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBA
IC0yMTksMTAgKzIxOSwxNiBAQCB2b2lkIFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW5Gb3JUYWJsZUJveChjb25zdAogICAgIEFTU0VSVCh0
YWJsZUJveC5pc1RhYmxlQm94KCkpOwogICAgIC8vIFRhYmxlIGlzIGEgc3BlY2lhbCBCRkMgY29u
dGVudC4gSXRzIGhlaWdodCBpcyBtYWlubHkgZHJpdmVuIGJ5IHRoZSBjb250ZW50LiBDb21wdXRl
ZCBoZWlnaHQsIG1pbi1oZWlnaHQgYW5kIG1heC1oZWlnaHQgYXJlIGFsbAogICAgIC8vIGFscmVh
ZHkgYmVlbiB0YWtlbiBpbnRvIGFjY291bnQgZHVyaW5nIHRoZSBURkMgbGF5b3V0LgotICAgIGF1
dG8gaGVpZ2h0QW5kTWFyZ2luID0gZ2VvbWV0cnkoKS5pbkZsb3dDb250ZW50SGVpZ2h0QW5kTWFy
Z2luKHRhYmxlQm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsLCB7IHF1aXJrcygpLm92ZXJyaWRk
ZW5UYWJsZUhlaWdodCh0YWJsZUJveCkgfSk7Ci0KLSAgICBhdXRvIG1hcmdpbkNvbGxhcHNlID0g
dGhpcy0+bWFyZ2luQ29sbGFwc2UoKTsKLSAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gbWFyZ2lu
Q29sbGFwc2UuY29sbGFwc2VkVmVydGljYWxWYWx1ZXModGFibGVCb3gsIGhlaWdodEFuZE1hcmdp
bi5ub25Db2xsYXBzZWRNYXJnaW4pOworICAgIGF1dG8gb3ZlcnJpZGRlblRhYmxlSGVpZ2h0ID0g
WyZdKCkgLT4gT3B0aW9uYWw8TGF5b3V0VW5pdD4geworICAgICAgICBpZiAobGF5b3V0U3RhdGUo
KS5pblF1aXJrc01vZGUoKSkKKyAgICAgICAgICAgIHJldHVybiBUYWJsZVdyYXBwZXJRdWlya3Mo
KnRoaXMpLm92ZXJyaWRkZW5UYWJsZUhlaWdodCh0YWJsZUJveCk7CisgICAgICAgIGlmICh0YWJs
ZUJveC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKKyAgICAgICAgICAgIHJldHVybiBnZW9t
ZXRyeSgpLmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QodGFibGVCb3gpOwor
ICAgICAgICByZXR1cm4geyB9OworICAgIH0oKTsKKworICAgIGF1dG8gaGVpZ2h0QW5kTWFyZ2lu
ID0gZ2VvbWV0cnkoKS5pbkZsb3dDb250ZW50SGVpZ2h0QW5kTWFyZ2luKHRhYmxlQm94LCBjb25z
dHJhaW50cy5ob3Jpem9udGFsLCB7IG92ZXJyaWRkZW5UYWJsZUhlaWdodCB9KTsKKyAgICBhdXRv
IHZlcnRpY2FsTWFyZ2luID0gbWFyZ2luQ29sbGFwc2UoKS5jb2xsYXBzZWRWZXJ0aWNhbFZhbHVl
cyh0YWJsZUJveCwgaGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbik7CiAgICAgLy8g
Q2FjaGUgdGhlIGNvbXB1dGVkIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBtYXJnaW4gdmFsdWUgcGFp
ci4KICAgICBmb3JtYXR0aW5nU3RhdGUoKS5zZXRVc2VkVmVydGljYWxNYXJnaW4odGFibGVCb3gs
IHZlcnRpY2FsTWFyZ2luKTsKIApAQCAtMjM0LDExICsyNDAsNiBAQCB2b2lkIFRhYmxlV3JhcHBl
ckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW5Gb3JUYWJsZUJv
eChjb25zdAogICAgIHVwZGF0ZU1hcmdpbkFmdGVyRm9yUHJldmlvdXNTaWJsaW5nKHRhYmxlQm94
KTsKIH0KIAotVGFibGVXcmFwcGVyUXVpcmtzIFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQ6OnF1aXJrcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFRhYmxlV3JhcHBlclF1aXJrcygq
dGhpcyk7Ci19Ci0KIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5o
CmluZGV4IDQ5YmFjNDg2YTcyOGYyODcxMWE2MmNhZjgzYTMyNDNlYTFjODQzZjEuLmQ3NjNjYWE5
MzM0Nzk3YzE1Mzc3MTI2NzQ2NThiMzVhZmY2N2RiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3Jh
cHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0LmgKQEAgLTM0LDggKzM0LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IG5hbWVzcGFjZSBMYXlvdXQgewogCi1jbGFzcyBUYWJsZVdyYXBwZXJRdWlya3M7Ci0KIC8vIFRo
aXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgc3BlY2lhbCBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQg
bGF5b3V0IGxvZ2ljIGZvciB0aGUgdGFibGUgd3JhcHBlci4KIC8vIGh0dHBzOi8vd3d3LnczLm9y
Zy9UUi9DU1MyMi90YWJsZXMuaHRtbCNtb2RlbAogY2xhc3MgVGFibGVXcmFwcGVyQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0IHsKQEAg
LTQ4LDggKzQ2LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SG9yaXpvbnRhbENvbnN0cmFpbnRz
SWdub3JpbmdGbG9hdHMoY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29u
c3RyYWludHMpIHsgbV9ob3Jpem9udGFsQ29uc3RyYWludHNJZ25vcmluZ0Zsb2F0cyA9IGhvcml6
b250YWxDb25zdHJhaW50czsgfQogCiBwcml2YXRlOgotICAgIFRhYmxlV3JhcHBlclF1aXJrcyBx
dWlya3MoKSBjb25zdDsKLQogICAgIHZvaWQgbGF5b3V0VGFibGVCb3goY29uc3QgQ29udGFpbmVy
Qm94JiB0YWJsZUJveCwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50Jik7CiAKICAg
ICB2b2lkIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nRm9yVGFibGVCb3goY29uc3QgQ29udGFpbmVy
Qm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJs
ZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tG
b3JtYXR0aW5nUXVpcmtzLmNwcAppbmRleCBiZjU5MzM5NjM5YWI1NmU5MTE0Yzk1MTRlMjY3MjAz
MGU4Y2ZmZTIwLi42NjcwOWM2OTVlNDY3YTg1MzMxMDVmMDhjYjU1NWM5MDNkMGM3ZTQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3Rh
Ymxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVy
L1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAKQEAgLTM3LDE2ICszNywxNCBA
QCBuYW1lc3BhY2UgTGF5b3V0IHsKIFRhYmxlV3JhcHBlclF1aXJrczo6VGFibGVXcmFwcGVyUXVp
cmtzKGNvbnN0IFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdD
b250ZXh0KQogICAgIDogQmxvY2tGb3JtYXR0aW5nUXVpcmtzKGZvcm1hdHRpbmdDb250ZXh0KQog
eworICAgIEFTU0VSVChsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpKTsKIH0KIAotT3B0aW9u
YWw8TGF5b3V0VW5pdD4gVGFibGVXcmFwcGVyUXVpcmtzOjpvdmVycmlkZGVuVGFibGVIZWlnaHQo
Y29uc3QgQ29udGFpbmVyQm94JiB0YWJsZUJveCkgY29uc3QKK0xheW91dFVuaXQgVGFibGVXcmFw
cGVyUXVpcmtzOjpvdmVycmlkZGVuVGFibGVIZWlnaHQoY29uc3QgQ29udGFpbmVyQm94JiB0YWJs
ZUJveCkgY29uc3QKIHsKLSAgICBhdXRvIGdlb21ldHJ5ID0gQmxvY2tGb3JtYXR0aW5nR2VvbWV0
cnkgeyBmb3JtYXR0aW5nQ29udGV4dCgpIH07Ci0gICAgaWYgKGxheW91dFN0YXRlKCkuaW5RdWly
a3NNb2RlKCkpIHsKLSAgICAgICAgLy8gSW4gcXVpcmtzIG1vZGUgYWx3YXlzIHVzZSB0aGUgY29u
dGVudCBoZWlnaHQuIE5vdGUgdGhhdCB0aGUgdGFibGVzIHdpdGggY29udGVudCB0YWtlIGNvbXB1
dGVkIHZhbHVlcyBpbnRvIGFjY291bnQuCi0gICAgICAgIHJldHVybiBnZW9tZXRyeS5jb250ZW50
SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KHRhYmxlQm94KTsKLSAgICB9Ci0gICAgcmV0
dXJuIHRhYmxlQm94Lmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpID8gZ2VvbWV0cnkuY29udGVu
dEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdCh0YWJsZUJveCkgOiBPcHRpb25hbDxMYXlv
dXRVbml0PiB7IH07CisgICAgLy8gSW4gcXVpcmtzIG1vZGUgYWx3YXlzIHVzZSB0aGUgY29udGVu
dCBoZWlnaHQuIE5vdGUgdGhhdCB0aGUgdGFibGVzIHdpdGggY29udGVudCB0YWtlIGNvbXB1dGVk
IHZhbHVlcyBpbnRvIGFjY291bnQuCisgICAgYXV0byYgZm9ybWF0dGluZ0NvbnRleHQgPSBkb3du
Y2FzdDxCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Pih0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgpKTsK
KyAgICByZXR1cm4gQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkoZm9ybWF0dGluZ0NvbnRleHQpLmNv
bnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QodGFibGVCb3gpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2Nr
L3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdRdWlya3MuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1Rh
YmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ1F1aXJrcy5oCmluZGV4IGFjZmQ5YzhmODcyNzlhZGE2
NmRiYzRhMTcyNTAwNzA3ZDkzMWJkMDUuLjhjMmUzMzYyYmMyZTk5YjAwMzg2MGZhYjA1MzgwZDgy
YTllZDFkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ1F1aXJr
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2sv
dGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ1F1aXJrcy5oCkBAIC0zNiw3
ICszNiw3IEBAIGNsYXNzIFRhYmxlV3JhcHBlclF1aXJrcyA6IHB1YmxpYyBCbG9ja0Zvcm1hdHRp
bmdRdWlya3MgewogcHVibGljOgogICAgIFRhYmxlV3JhcHBlclF1aXJrcyhjb25zdCBUYWJsZVdy
YXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Jik7CiAKLSAgICBPcHRpb25hbDxMYXlvdXRVbml0
PiBvdmVycmlkZGVuVGFibGVIZWlnaHQoY29uc3QgQ29udGFpbmVyQm94JiB0YWJsZUJveCkgY29u
c3Q7CisgICAgTGF5b3V0VW5pdCBvdmVycmlkZGVuVGFibGVIZWlnaHQoY29uc3QgQ29udGFpbmVy
Qm94JiB0YWJsZUJveCkgY29uc3Q7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggMzc3NDg5OTE0ODJjZWMxN2RkYjUxZGQ3
YThmOGY5NGE3NWY1MmQ0YS4uZmRlNWJlNWFiNDk4NDMyOTFiYTcwNWVkZmNhZWY1ZDRiODRlYjA4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNw
cApAQCAtMTk1LDcgKzE5NSwxMiBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5l
TGF5b3V0KElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgTGluZUJ1aWxkZXI6OgogICAgICAgICAv
LyAic3BbPC1saW5lIGJyZWFrLT5dbGl0X2NvbnRlbnQiIC0+IG92ZXJmbG93IGxlbmd0aDogMTEg
LT4gbGVhZGluZyBwYXJ0aWFsIGNvbnRlbnQgbGVuZ3RoOiAxMS4KICAgICAgICAgYXV0byBwYXJ0
aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGggPSBwcmV2aW91c0xpbmUgPyBwcmV2aW91c0xpbmUtPm92
ZXJmbG93Q29udGVudExlbmd0aCA6IDA7CiAgICAgICAgIGF1dG8gbGVhZGluZ0xvZ2ljYWxXaWR0
aCA9IHByZXZpb3VzTGluZSA/IHByZXZpb3VzTGluZS0+b3ZlcmZsb3dMb2dpY2FsV2lkdGggOiBX
VEY6Om51bGxvcHQ7Ci0gICAgICAgIGF1dG8gaW5pdGlhbExpbmVDb25zdHJhaW50cyA9IElubGlu
ZVJlY3QgeyBsaW5lTG9naWNhbFRvcCwgY29uc3RyYWludHMuaG9yaXpvbnRhbC5sb2dpY2FsTGVm
dCwgY29uc3RyYWludHMuaG9yaXpvbnRhbC5sb2dpY2FsV2lkdGgsIHF1aXJrcygpLmluaXRpYWxM
aW5lSGVpZ2h0KCkgfTsKKyAgICAgICAgYXV0byBpbml0aWFsTGluZUhlaWdodCA9IFsmXSgpIC0+
IElubGluZUxheW91dFVuaXQgeworICAgICAgICAgICAgaWYgKGxheW91dFN0YXRlKCkuaW5TdGFu
ZGFyZHNNb2RlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3QoKS5zdHlsZSgpLmNvbXB1
dGVkTGluZUhlaWdodCgpOworICAgICAgICAgICAgcmV0dXJuIElubGluZUZvcm1hdHRpbmdRdWly
a3MoKnRoaXMpLmluaXRpYWxMaW5lSGVpZ2h0KCk7CisgICAgICAgIH0oKTsKKyAgICAgICAgYXV0
byBpbml0aWFsTGluZUNvbnN0cmFpbnRzID0gSW5saW5lUmVjdCB7IGxpbmVMb2dpY2FsVG9wLCBj
b25zdHJhaW50cy5ob3Jpem9udGFsLmxvZ2ljYWxMZWZ0LCBjb25zdHJhaW50cy5ob3Jpem9udGFs
LmxvZ2ljYWxXaWR0aCwgaW5pdGlhbExpbmVIZWlnaHQgfTsKICAgICAgICAgYXV0byBsaW5lQ29u
dGVudCA9IGxpbmVCdWlsZGVyLmxheW91dElubGluZUNvbnRlbnQobmVlZHNMYXlvdXRSYW5nZSwg
cGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoLCBsZWFkaW5nTG9naWNhbFdpZHRoLCBpbml0aWFs
TGluZUNvbnN0cmFpbnRzLCBpc0ZpcnN0TGluZSk7CiAgICAgICAgIGF1dG8gbGluZUxvZ2ljYWxS
ZWN0ID0gY29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQobGluZUNvbnRlbnQsIGNvbnN0cmFp
bnRzLmhvcml6b250YWwpOwogCkBAIC02MTIsMTIgKzYxNyw2IEBAIElubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeSBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Z2VvbWV0cnkoKSBjb25zdAogICAgIHJl
dHVybiBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkoKnRoaXMpOwogfQogCi1JbmxpbmVGb3JtYXR0
aW5nUXVpcmtzIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpxdWlya3MoKSBjb25zdAotewotICAg
IHJldHVybiBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzKCp0aGlzKTsKLQotfQotCiB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGY3MzA2
Yjk4NDY2NTQ0ZTc5MWQyMDcwODc2MDBlNGUzYzlkM2Q2MTQuLjBmOTlmOWY5MzRlYzhlZjU5NDRi
ZmFiOTdjNzVjYzc0NDdkYTcyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuaApAQCAtMzYsNyArMzYsNiBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIAog
Y2xhc3MgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OwogY2xhc3MgSW5saW5lRm9ybWF0dGluZ1N0
YXRlOwotY2xhc3MgSW5saW5lRm9ybWF0dGluZ1F1aXJrczsKIGNsYXNzIEludmFsaWRhdGlvblN0
YXRlOwogY2xhc3MgTGluZUJveDsKIApAQCAtNTgsNyArNTcsNiBAQCBwcml2YXRlOgogICAgIElu
dHJpbnNpY1dpZHRoQ29uc3RyYWludHMgY29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRz
KCkgb3ZlcnJpZGU7CiAKICAgICBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkgZ2VvbWV0cnkoKSBj
b25zdDsKLSAgICBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzIHF1aXJrcygpIGNvbnN0OwogCiAgICAg
dm9pZCBsaW5lTGF5b3V0KElubGluZUl0ZW1zJiwgTGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5n
ZSwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50Jik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IGQ1ZTMyMGY1Mjdk
NWVkYjY3ZTUwMTJmNDUxN2UzN2UwNDFjOGVlYzMuLmY4ZjQ3NTFmNTk1NzMwZDJhMjVmZTgwOTc0
YWNlMzRkYjE3YmY4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0dlb21ldHJ5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRmxvYXRpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiRm9ybWF0dGluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbmxp
bmVGb3JtYXR0aW5nUXVpcmtzLmgiCiAjaW5jbHVkZSAiSW5saW5lTGluZUJveC5oIgogI2luY2x1
ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lckJveC5oIgpAQCAtNzI2
LDYgKzcyNywyMSBAQCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIElubGluZUZvcm1hdHRpbmdHZW9t
ZXRyeTo6aW5saW5lQmxvY2tDb250ZW50SGVpZ2h0QW5kTWFyZwogICAgIHJldHVybiBjb21wbGlj
YXRlZENhc2VzKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBvdmVycmlkZGVuVmVy
dGljYWxWYWx1ZXMpOwogfQogCitib29sIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6aW5saW5l
TGV2ZWxCb3hBZmZlY3RzTGluZUJveChjb25zdCBMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYgaW5s
aW5lTGV2ZWxCb3gsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gpIGNvbnN0Cit7CisgICAgaWYgKGlu
bGluZUxldmVsQm94LmlzSW5saW5lQm94KCkgfHwgaW5saW5lTGV2ZWxCb3guaXNMaW5lQnJlYWtC
b3goKSkKKyAgICAgICAgcmV0dXJuIGxheW91dFN0YXRlKCkuaW5TdGFuZGFyZHNNb2RlKCkgPyB0
cnVlIDogSW5saW5lRm9ybWF0dGluZ1F1aXJrcyhmb3JtYXR0aW5nQ29udGV4dCgpKS5pbmxpbmVM
ZXZlbEJveEFmZmVjdHNMaW5lQm94KGlubGluZUxldmVsQm94LCBsaW5lQm94KTsKKyAgICBpZiAo
aW5saW5lTGV2ZWxCb3guaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpKSB7CisgICAgICAgIGlmIChp
bmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAvLyBXaGlsZSBpbiBwcmFjdGljZSB3aGVuIHRoZSBuZWdhdGl2ZSB2
ZXJ0aWNhbCBtYXJnaW4gbWFrZXMgdGhlIGxheW91dCBib3VuZHMgZW1wdHkgKGUuZzogaGVpZ2h0
OiAxMDBweDsgbWFyZ2luLXRvcDogLTEwMHB4OyksIGFuZCB0aGlzIGlubGluZQorICAgICAgICAv
LyBsZXZlbCBib3ggY29udHJpYnV0ZXMgMHB4IHRvIHRoZSBsaW5lIGJveCBoZWlnaHQsIGl0IHN0
aWxsIG5lZWRzIHRvIGJlIHRha2VuIGludG8gYWNjb3VudCB3aGlsZSBjb21wdXRpbmcgbGluZSBi
b3ggZ2VvbWV0cmllcy4KKyAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29u
dGV4dCgpLmdlb21ldHJ5Rm9yQm94KGlubGluZUxldmVsQm94LmxheW91dEJveCgpKTsKKyAgICAg
ICAgcmV0dXJuIGJveEdlb21ldHJ5Lm1hcmdpbkJlZm9yZSgpIHx8IGJveEdlb21ldHJ5Lm1hcmdp
bkFmdGVyKCk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nR2VvbWV0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oCmluZGV4IGVkNDlhZTky
NTAxZTE2NWQwOGI2MzdiMjRjMzU2MTY3Yjc5YWVjNzYuLjgzZmQ4NGNiMDUzZDdkYTRjNmI0YjVi
YzJiZGM1NzdmZTYxMTViMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdHZW9tZXRyeS5oCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICBDb250ZW50SGVp
Z2h0QW5kTWFyZ2luIGlubGluZUJsb2NrQ29udGVudEhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gm
LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZGVuVmVydGljYWxW
YWx1ZXMmKSBjb25zdDsKICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gaW5saW5lQmxvY2tDb250
ZW50V2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRz
JiwgY29uc3QgT3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMmKTsKIAorICAgIGJvb2wgaW5saW5l
TGV2ZWxCb3hBZmZlY3RzTGluZUJveChjb25zdCBMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYsIGNv
bnN0IExpbmVCb3gmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dD4oRm9ybWF0dGluZ0dlb21ldHJ5Ojpmb3JtYXR0aW5nQ29u
dGV4dCgpKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWly
a3MuY3BwCmluZGV4IGZhYmYyZWFlMGU2ZWNhYmUzYmJhMTk4YTdkYTY4ZThhYmYxMzIyOWMuLmE5
NGQ5NWExYjc3ZDU0MTliODhhM2Y2MGFiYTkzMjE2NzI0ODkzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCkBAIC00MCwxOCArNDAsMTYgQEAg
SW5saW5lRm9ybWF0dGluZ1F1aXJrczo6SW5saW5lRm9ybWF0dGluZ1F1aXJrcyhjb25zdCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCYgaW4KIAogSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0
aW5nUXVpcmtzOjppbml0aWFsTGluZUhlaWdodCgpIGNvbnN0CiB7CisgICAgQVNTRVJUKCFsYXlv
dXRTdGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpKTsKICAgICAvLyBOZWdhdGl2ZSBsaW5lSGVpZ2h0
IHZhbHVlIG1lYW5zIHRoZSBsaW5lLWhlaWdodCBpcyBub3Qgc2V0Ci0gICAgYXV0byYgcm9vdCA9
IGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpOwotICAgIGlmIChsYXlvdXRTdGF0ZSgpLmluU3Rh
bmRhcmRzTW9kZSgpIHx8ICFyb290LnN0eWxlKCkubGluZUhlaWdodCgpLmlzTmVnYXRpdmUoKSkK
LSAgICAgICAgcmV0dXJuIHJvb3Quc3R5bGUoKS5jb21wdXRlZExpbmVIZWlnaHQoKTsKLSAgICBy
ZXR1cm4gcm9vdC5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuZmxvYXRIZWlnaHQoKTsKKyAgICBhdXRv
JiByb290U3R5bGUgPSBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKS5zdHlsZSgpOworICAgIHJl
dHVybiByb290U3R5bGUubGluZUhlaWdodCgpLmlzTmVnYXRpdmUoKSA/IHJvb3RTdHlsZS5mb250
TWV0cmljcygpLmZsb2F0SGVpZ2h0KCkgOiByb290U3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCk7
CiB9CiAKIGJvb2wgSW5saW5lRm9ybWF0dGluZ1F1aXJrczo6aW5saW5lTGV2ZWxCb3hBZmZlY3Rz
TGluZUJveChjb25zdCBMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYgaW5saW5lTGV2ZWxCb3gsIGNv
bnN0IExpbmVCb3gmIGxpbmVCb3gpIGNvbnN0CiB7CisgICAgQVNTRVJUKCFsYXlvdXRTdGF0ZSgp
LmluU3RhbmRhcmRzTW9kZSgpKTsKICAgICBpZiAoaW5saW5lTGV2ZWxCb3guaXNMaW5lQnJlYWtC
b3goKSkgewotICAgICAgICBpZiAobGF5b3V0U3RhdGUoKS5pblN0YW5kYXJkc01vZGUoKSkKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAvLyBJbiBxdWlya3MgbW9kZSBsaW5lYnJl
YWsgYm94ZXMgKDxicj4pIHN0b3AgYWZmZWN0aW5nIHRoZSBsaW5lIGJveCB3aGVuIChhc3N1bWUg
PGJyPiBpcyBuZXN0ZWQgZS5nLiA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMDBweCI+PGJyPjwv
c3Bhbj4pCiAgICAgICAgIC8vIDEuIHRoZSByb290IGlubGluZSBib3ggaGFzIGNvbnRlbnQgPGRp
dj5jb250ZW50PGJyPi9kaXY+CiAgICAgICAgIC8vIDIuIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIGF0
b21pYyBpbmxpbmUgbGV2ZWwgYm94IG9uIHRoZSBsaW5lIGUuZyA8ZGl2PjxpbWc+PGJyPjwvZGl2
PiBvciA8ZGl2PjxzcGFuPjxpbWc+PC9zcGFuPjxicj48L2Rpdj4KQEAgLTc0LDggKzcyLDcgQEAg
Ym9vbCBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzOjppbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94
KGNvbnN0IExpbmVCb3g6OklubGluZUwKICAgICB9CiAgICAgaWYgKGlubGluZUxldmVsQm94Lmlz
SW5saW5lQm94KCkpIHsKICAgICAgICAgLy8gSW5saW5lIGJveGVzIChlLmcuIHJvb3QgaW5saW5l
IGJveCBvciA8c3Bhbj4pIGFmZmVjdHMgbGluZSBib3hlcyBlaXRoZXIgdGhyb3VnaCB0aGUgc3Ry
dXQgb3IgYWN0dWFsIGNvbnRlbnQuCi0gICAgICAgIGF1dG8gaW5saW5lQm94SGFzSW1hZ2luYXJ5
U3RydXQgPSBsYXlvdXRTdGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpOwotICAgICAgICBpZiAoaW5s
aW5lTGV2ZWxCb3guaGFzQ29udGVudCgpIHx8IGlubGluZUJveEhhc0ltYWdpbmFyeVN0cnV0KQor
ICAgICAgICBpZiAoaW5saW5lTGV2ZWxCb3guaGFzQ29udGVudCgpKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGlmIChpbmxpbmVMZXZlbEJveC5pc1Jvb3RJbmxpbmVCb3goKSkg
ewogICAgICAgICAgICAgYXV0byBzaG91bGRSb290SW5saW5lQm94V2l0aE5vQ29udGVudFN0cmV0
Y2hMaW5lQm94ID0gWyZdIHsKQEAgLTEwNCwxNCArMTAxLDcgQEAgYm9vbCBJbmxpbmVGb3JtYXR0
aW5nUXVpcmtzOjppbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KGNvbnN0IExpbmVCb3g6Oklu
bGluZUwKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmIChp
bmxpbmVMZXZlbEJveC5pc0F0b21pY0lubGluZUxldmVsQm94KCkpIHsKLSAgICAgICAgaWYgKGlu
bGluZUxldmVsQm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpKQotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIC8vIFdoaWxlIGluIHByYWN0aWNlIHdoZW4gdGhlIG5lZ2F0aXZlIHZl
cnRpY2FsIG1hcmdpbiBtYWtlcyB0aGUgbGF5b3V0IGJvdW5kcyBlbXB0eSAoZS5nOiBoZWlnaHQ6
IDEwMHB4OyBtYXJnaW4tdG9wOiAtMTAwcHg7KSwgYW5kIHRoaXMgaW5saW5lCi0gICAgICAgIC8v
IGxldmVsIGJveCBjb250cmlidXRlcyAwcHggdG8gdGhlIGxpbmUgYm94IGhlaWdodCwgaXQgc3Rp
bGwgbmVlZHMgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50IHdoaWxlIGNvbXB1dGluZyBsaW5lIGJv
eCBnZW9tZXRyaWVzLgotICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250
ZXh0KCkuZ2VvbWV0cnlGb3JCb3goaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm94KCkpOwotICAgICAg
ICByZXR1cm4gYm94R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkgfHwgYm94R2VvbWV0cnkubWFyZ2lu
QWZ0ZXIoKTsKLSAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmgK
aW5kZXggN2JmZjNmYmY1ODBhOTlkZWIwNzg2MDAwNDI4Y2ZmYjc5Yzk1ODliMC4uZDkyN2EwODQ3
NDYwODMwNjY5MWNhZjllZjkxYTU1MzRkNzkwYzA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1F1aXJr
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdRdWlya3MuaApAQCAtMzksMTEgKzM5LDYgQEAgcHVibGljOgogICAg
IElubGluZUxheW91dFVuaXQgaW5pdGlhbExpbmVIZWlnaHQoKSBjb25zdDsKICAgICBib29sIGhh
c1NvZnRXcmFwT3Bwb3J0dW5pdHlBdEltYWdlKCkgY29uc3Q7CiAgICAgYm9vbCBpbmxpbmVMZXZl
bEJveEFmZmVjdHNMaW5lQm94KGNvbnN0IExpbmVCb3g6OklubGluZUxldmVsQm94JiwgY29uc3Qg
TGluZUJveCYpIGNvbnN0OwotCi1wcml2YXRlOgotCi0gICAgY29uc3QgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8SW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ+KEZvcm1hdHRpbmdRdWlya3M6OmZvcm1hdHRpbmdDb250ZXh0
KCkpOyB9Ci0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCmluZGV4IDA1N2E4Yzg0NzI0NmIwNmM0ODcwZjY1NzU2MDU2N2Q0N2FmNGU5NmEu
LjlhMjA1ODUzOTI1N2QzYTkwMWNiM2NhYzE3M2ZkM2FhZTkxZmIwMzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0
aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMzksNyArMzksNiBAQAog
I2luY2x1ZGUgIkxheW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCIKICNpbmNsdWRlICJUYWJs
ZUZvcm1hdHRpbmdHZW9tZXRyeS5oIgogI2luY2x1ZGUgIlRhYmxlRm9ybWF0dGluZ1N0YXRlLmgi
Ci0jaW5jbHVkZSAiVGFibGVGb3JtYXR0aW5nUXVpcmtzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTIxLDEyICs1MjAsNiBA
QCBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeSBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpnZW9tZXRy
eSgpIGNvbnN0CiAgICAgcmV0dXJuIFRhYmxlRm9ybWF0dGluZ0dlb21ldHJ5KCp0aGlzLCBmb3Jt
YXR0aW5nU3RhdGUoKS50YWJsZUdyaWQoKSk7CiB9CiAKLVRhYmxlRm9ybWF0dGluZ1F1aXJrcyBU
YWJsZUZvcm1hdHRpbmdDb250ZXh0OjpxdWlya3MoKSBjb25zdAotewotICAgIHJldHVybiBUYWJs
ZUZvcm1hdHRpbmdRdWlya3MoKnRoaXMpOwotfQotCi0KIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRp
bmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3Rh
YmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCA1OWU4Y2VjOWJiZjg2MDA3YTZmMmFh
MzAxYWYwZWFiZGM0NjQ4ZjEyLi4yYjFmMGFiOTRhMzE0MDJhZjM0YWE4YWNjZGFjMDMyYmNhY2Ey
YTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaApAQCAt
MzgsNyArMzgsNiBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIAogY2xhc3MgSW52YWxpZGF0aW9uU3Rh
dGU7CiBjbGFzcyBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeTsKLWNsYXNzIFRhYmxlRm9ybWF0dGlu
Z1F1aXJrczsKIAogLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBsYXlvdXQgbG9naWMgZm9y
IHRhYmxlIGZvcm1hdHRpbmcgY29udGV4dHMuCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NT
MjIvdGFibGVzLmh0bWwKQEAgLTc5LDcgKzc4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1
dGVBbmREaXN0cmlidXRlRXh0cmFTcGFjZShMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxT
cGFjZSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlVmVydGljYWxTcGFjZSk7CiAKICAg
ICBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeSBnZW9tZXRyeSgpIGNvbnN0OwotICAgIFRhYmxlRm9y
bWF0dGluZ1F1aXJrcyBxdWlya3MoKSBjb25zdDsKICAgICBjb25zdCBUYWJsZUZvcm1hdHRpbmdT
dGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8VGFibGVGb3Jt
YXR0aW5nU3RhdGU+KEZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5nU3RhdGUoKSk7IH0KICAg
ICBUYWJsZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkgeyByZXR1cm4gZG93bmNh
c3Q8VGFibGVGb3JtYXR0aW5nU3RhdGU+KEZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5nU3Rh
dGUoKSk7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0
cnkuY3BwCmluZGV4IDhkNDZhZWM2NjVhZTI5Yzg5NTk0ZmZkMmVmMDJmYWZhZjJhZDdjYWEuLmI5
MTFhMmFmODI1OTUzNDZmMDQ5NTBhYTFhMjdjODg4Nzc3MTZiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5n
R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dERlc2NlbmRhbnRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkxheW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCIKKyNpbmNs
dWRlICJUYWJsZUZvcm1hdHRpbmdRdWlya3MuaCIKICNpbmNsdWRlICJUYWJsZUZvcm1hdHRpbmdT
dGF0ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCw3ICs0OSw3IEBAIExheW91dFVu
aXQgVGFibGVGb3JtYXR0aW5nR2VvbWV0cnk6OmNlbGxIZWlnaChjb25zdCBDb250YWluZXJCb3gm
IGNlbGxCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGNlbGxCb3guaXNJbkZsb3coKSk7CiAgICAg
YXV0byBjb250ZW50SGVpZ2h0ID0gTGF5b3V0VW5pdCB7IH07Ci0gICAgaWYgKFRhYmxlRm9ybWF0
dGluZ1F1aXJrcyhmb3JtYXR0aW5nQ29udGV4dCgpKS5zaG91bGRJZ25vcmVDaGlsZENvbnRlbnRW
ZXJ0aWNhbE1hcmdpbihjZWxsQm94KSkgeworICAgIGlmIChsYXlvdXRTdGF0ZSgpLmluUXVpcmtz
TW9kZSgpICYmIFRhYmxlRm9ybWF0dGluZ1F1aXJrczo6c2hvdWxkSWdub3JlQ2hpbGRDb250ZW50
VmVydGljYWxNYXJnaW4oY2VsbEJveCkpIHsKICAgICAgICAgQVNTRVJUKGNlbGxCb3guZmlyc3RJ
bkZsb3dDaGlsZCgpKTsKICAgICAgICAgYXV0byBmb3JtYXR0aW5nQ29udGV4dCA9IHRoaXMtPmZv
cm1hdHRpbmdDb250ZXh0KCk7CiAgICAgICAgIGF1dG8mIGZpcnN0SW5GbG93Q2hpbGQgPSAqY2Vs
bEJveC5maXJzdEluRmxvd0NoaWxkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1F1aXJrcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0
dGluZ1F1aXJrcy5jcHAKaW5kZXggNzczOWM0MWRkNTUwZWQ5OTQwMzNlODNhMzg3ZTZlOGY5Zjhl
NTU2OS4uNjMwZWI4MThhYzEwZDAzZGQ4ZTM2ZTAyYTk2MzRkMjk2OGQyNWIzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZv
cm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nUXVpcmtzLmNwcApAQCAtMzgsMTcgKzM4LDE2
IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogVGFibGVGb3JtYXR0aW5nUXVpcmtzOjpUYWJsZUZvcm1h
dHRpbmdRdWlya3MoY29uc3QgVGFibGVGb3JtYXR0aW5nQ29udGV4dCYgdGFibGVGb3JtYXR0aW5n
Q29udGV4dCkKICAgICA6IEZvcm1hdHRpbmdRdWlya3ModGFibGVGb3JtYXR0aW5nQ29udGV4dCkK
IHsKKyAgICBBU1NFUlQobGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSk7CiB9CiAKLWJvb2wg
VGFibGVGb3JtYXR0aW5nUXVpcmtzOjpzaG91bGRJZ25vcmVDaGlsZENvbnRlbnRWZXJ0aWNhbE1h
cmdpbihjb25zdCBDb250YWluZXJCb3gmIGNlbGxCb3gpIGNvbnN0Citib29sIFRhYmxlRm9ybWF0
dGluZ1F1aXJrczo6c2hvdWxkSWdub3JlQ2hpbGRDb250ZW50VmVydGljYWxNYXJnaW4oY29uc3Qg
Q29udGFpbmVyQm94JiBjZWxsQm94KQogewogICAgIC8vIE5vcm1hbGx5IEJGQyByb290IGNvbnRl
bnQgaGVpZ2h0IHRha2VzIHRoZSBtYXJnaW4gYm94IG9mIHRoZSBjaGlsZCBjb250ZW50IGFzIHZl
cnRpY2FsIG1hcmdpbnMgZG9uJ3QgY29sbGFwc2Ugd2l0aCBCRkMgcm9vdHMsCiAgICAgLy8gYnV0
IHRhYmxlIGNlbGwgYm94ZXMgZG8gY29sbGFwc2UgdGhlaXIgKG5vbi1leGlzdGluZykgbWFyZ2lu
cyB3aXRoIGNoaWxkIHF1aXJrIG1hcmdpbnMgKHNvIG11Y2ggcXVpcmspLCBzbyBoZXJlIHdlIGNo
ZWNrCiAgICAgLy8gaWYgdGhlIGNvbnRlbnQgaGVpZ2h0IHNob3VsZCBpbmNsdWRlIG1hcmdpbnMg
b3Igbm90LgogICAgIC8vIGUuZyA8dGFibGU+PHRyPjx0ZD48cD50ZXh0IGNvbnRlbnQ8L3RkPjwv
dHI+PC90YWJsZT4gPC0gPHA+J3MgcXVpcmsgbWFyZ2luIGNvbGxhcHNlcyB3aXRoIHRoZSA8dGQ+
IHNvIGl0cyBjb250ZW50CiAgICAgLy8gaGVpZ2h0IHNob3VsZCBub3QgaW5jbHVkZSB2ZXJ0aWNh
bCBtYXJnaW5zLgotICAgIGlmICghbGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChjZWxsQm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghY2VsbEJveC5o
YXNJbkZsb3dDaGlsZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdRdWlya3MuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nUXVpcmtz
LmgKaW5kZXggYjJhODQxMDY1NDU0YjEwODYwYTNmYzg2ZTRiODRmMTIwZDIyNzkyYS4uYmFiM2U0
ZjZiMmQyYmM5MjBlOTRlZGViMzM0YjBiZTY2M2Q1ZTkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdRdWly
a3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxl
L1RhYmxlRm9ybWF0dGluZ1F1aXJrcy5oCkBAIC0zNiwxMCArMzYsNyBAQCBjbGFzcyBUYWJsZUZv
cm1hdHRpbmdRdWlya3MgOiBwdWJsaWMgRm9ybWF0dGluZ1F1aXJrcyB7CiBwdWJsaWM6CiAgICAg
VGFibGVGb3JtYXR0aW5nUXVpcmtzKGNvbnN0IFRhYmxlRm9ybWF0dGluZ0NvbnRleHQmKTsKIAot
ICAgIGJvb2wgc2hvdWxkSWdub3JlQ2hpbGRDb250ZW50VmVydGljYWxNYXJnaW4oY29uc3QgQ29u
dGFpbmVyQm94JikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgVGFibGVGb3JtYXR0aW5n
Q29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxUYWJs
ZUZvcm1hdHRpbmdDb250ZXh0PihGb3JtYXR0aW5nUXVpcmtzOjpmb3JtYXR0aW5nQ29udGV4dCgp
KTsgfQorICAgIHN0YXRpYyBib29sIHNob3VsZElnbm9yZUNoaWxkQ29udGVudFZlcnRpY2FsTWFy
Z2luKGNvbnN0IENvbnRhaW5lckJveCYpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1
aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwCmluZGV4IGRjZjMzZDQ4NDg0NTJmYjNmYWUz
NTFjMDNkNjM0MGFlYjUwZWMwYmMuLmM2NmI0M2M0ZTA0NDE3YjA3MTg5NzM2YWQzN2NlNDllZjNl
ZTc2MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlv
dXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRl
ci5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkJpZGlSZXNvbHZlci5oIgogI2lu
Y2x1ZGUgIklubGluZUZvcm1hdHRpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW5saW5lRm9ybWF0
dGluZ1F1aXJrcy5oIgorI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIgogI2lu
Y2x1ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIkxheW91dEJveEdlb21l
dHJ5LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmgiCkBAIC0zNjcsNyAr
MzY3LDcgQEAgdm9pZCBJbmxpbmVDb250ZW50QnVpbGRlcjo6Y3JlYXRlRGlzcGxheUxpbmVzKGNv
bnN0IExheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXQKIHZvaWQgSW5saW5lQ29udGVudEJ1aWxk
ZXI6OmNyZWF0ZURpc3BsYXlOb25Sb290SW5saW5lQm94ZXMoY29uc3QgTGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIElubGluZUNvbnRlbnQm
IGlubGluZUNvbnRlbnQpIGNvbnN0CiB7CiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRl
ID0gaW5saW5lRm9ybWF0dGluZ0NvbnRleHQuZm9ybWF0dGluZ1N0YXRlKCk7Ci0gICAgYXV0byBp
bmxpbmVRdWlya3MgPSBMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdRdWlya3MgeyBpbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCB9OworICAgIGF1dG8gaW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5ID0gTGF5
b3V0OjpJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkgeyBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCB9
OwogICAgIGZvciAoc2l6ZV90IGxpbmVJbmRleCA9IDA7IGxpbmVJbmRleCA8IGlubGluZUZvcm1h
dHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5zaXplKCk7ICsrbGluZUluZGV4KSB7CiAgICAgICAgIGF1
dG8mIGxpbmVCb3ggPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZUJveGVzKClbbGluZUluZGV4
XTsKICAgICAgICAgaWYgKCFsaW5lQm94Lmhhc0lubGluZUJveCgpKQpAQCAtMzgyLDcgKzM4Miw3
IEBAIHZvaWQgSW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlOb25Sb290SW5saW5l
Qm94ZXMoY29uc3QgTGF5b3V0OjpJbmxpbmVGCiAgICAgICAgICAgICBhdXRvIGlubGluZUJveFJl
Y3QgPSBsaW5lQm94LmxvZ2ljYWxCb3JkZXJCb3hGb3JJbmxpbmVCb3gobGF5b3V0Qm94LCBib3hH
ZW9tZXRyeSk7CiAgICAgICAgICAgICBpbmxpbmVCb3hSZWN0Lm1vdmVCeShsaW5lQm94TG9naWNh
bFJlY3QudG9wTGVmdCgpKTsKIAotICAgICAgICAgICAgaW5saW5lQ29udGVudC5ub25Sb290SW5s
aW5lQm94ZXMuYXBwZW5kKHsgbGluZUluZGV4LCBsYXlvdXRCb3gsIGlubGluZUJveFJlY3QsIGlu
bGluZVF1aXJrcy5pbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KGlubGluZUxldmVsQm94LCBs
aW5lQm94KSB9KTsKKyAgICAgICAgICAgIGlubGluZUNvbnRlbnQubm9uUm9vdElubGluZUJveGVz
LmFwcGVuZCh7IGxpbmVJbmRleCwgbGF5b3V0Qm94LCBpbmxpbmVCb3hSZWN0LCBpbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnkuaW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveChpbmxpbmVMZXZlbEJv
eCwgbGluZUJveCkgfSk7CiAgICAgICAgIH0KICAgICB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428771</attachid>
            <date>2021-05-15 21:15:47 -0700</date>
            <delta_ts>2021-05-15 21:41:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225746-20210515211546.patch</filename>
            <type>text/plain</type>
            <size>46546</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTEzYTU4NzkyMGM5ZjU3
NzU0MGRkMzkxZGIyOTk5YzU1ZWQ4YWVhNC4uOThkMGUxMzc3YzRmYzA1NGMwNTk1YzExZWQ2YTYy
OTM2YzBmZjEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDIxLTA1LTE1ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXSBDbGVhbnVwIEZvcm1h
dHRpbmdRdWlyayBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjU3NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBRdWlyayBmdW5jdGlvbnMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gaW4g
cXVpcmtzIG1vZGUuCisKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1h
dHRpbmdRdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nUXVp
cmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdodCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdRdWlya3M6OmhlaWdo
dFZhbHVlT2ZOZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZpeGVkSGVpZ2h0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ1F1aXJrczo6bGF5b3V0U3RhdGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nUXVpcmtzOjpsYXlv
dXRTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9i
bG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cXVpcmtzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9y
bWF0dGluZ0dlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nR2VvbWV0cnk6OmluRmxvd0NvbnRlbnRIZWlnaHRBbmRNYXJnaW4pOgorICAgICAgICAq
IGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nUXVpcmtzOjpCbG9j
a0Zvcm1hdHRpbmdRdWlya3MpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpuZWVkc1N0cmV0
Y2hpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdRdWlya3M6
OnN0cmV0Y2hlZEluRmxvd0hlaWdodElmQXBwbGljYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c2hvdWxkSWdub3JlQ29sbGFwc2Vk
UXVpcmtNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdR
dWlya3M6OnNob3VsZENvbGxhcHNlTWFyZ2luQmVmb3JlV2l0aFBhcmVudE1hcmdpbkJlZm9yZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c2hvdWxk
Q29sbGFwc2VNYXJnaW5BZnRlcldpdGhQYXJlbnRNYXJnaW5BZnRlcik6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1F1aXJrczo6bmVlZHNTdHJldGNoaW5nIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nUXVp
cmtzOjpzdHJldGNoZWRJbkZsb3dIZWlnaHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZElnbm9yZUNvbGxhcHNlZFF1aXJr
TWFyZ2luIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tG
b3JtYXR0aW5nUXVpcmtzOjpzaG91bGRDb2xsYXBzZU1hcmdpbkJlZm9yZVdpdGhQYXJlbnRNYXJn
aW5CZWZvcmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZENvbGxhcHNlTWFyZ2luQWZ0ZXJXaXRoUGFyZW50TWFy
Z2luQWZ0ZXIgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1F1aXJrczo6Zm9ybWF0dGluZ0NvbnRleHQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tN
YXJnaW5Db2xsYXBzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrTWFyZ2lu
Q29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZvcmUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja01hcmdpbkNvbGxhcHNlOjptYXJn
aW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5BZnRlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyQ29sbGFwc2Vz
V2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6QmxvY2tNYXJnaW5Db2xsYXBzZTo6cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkJlZm9y
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrTWFyZ2luQ29sbGFwc2U6
OnF1aXJrcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9ibG9jay9QcmVjb21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja01hcmdpbkNvbGxhcHNlOjpwcmVjb21wdXRl
ZFBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9y
bWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZVdyYXBw
ZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luRm9yVGFibGVC
b3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpxdWlya3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0
dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2Nr
L3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZVdyYXBwZXJRdWlya3M6OlRhYmxlV3JhcHBlclF1
aXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlV3JhcHBlclF1aXJrczo6b3Zl
cnJpZGRlblRhYmxlSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdRdWly
a3MuaDoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnF1aXJrcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVG
b3JtYXR0aW5nR2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nR2VvbWV0cnk6OmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3ggY29uc3QpOgor
ICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdHZW9tZXRyeS5oOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVGb3JtYXR0aW5nUXVpcmtzOjppbml0aWFsTGluZUhlaWdodCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdRdWlya3M6OmlubGluZUxldmVsQm94
QWZmZWN0c0xpbmVCb3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuaDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ1F1aXJrczo6Zm9ybWF0dGluZ0NvbnRleHQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVG
b3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9y
bWF0dGluZ0NvbnRleHQ6OnF1aXJrcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAg
ICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdHZW9t
ZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0dlb21l
dHJ5OjpjZWxsSGVpZ2ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6VGFibGVGb3JtYXR0aW5nUXVpcmtzOjpUYWJsZUZvcm1hdHRpbmdRdWlya3MpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdRdWlya3M6OnNob3VsZElnbm9y
ZUNoaWxkQ29udGVudFZlcnRpY2FsTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
VGFibGVGb3JtYXR0aW5nUXVpcmtzOjpzaG91bGRJZ25vcmVDaGlsZENvbnRlbnRWZXJ0aWNhbE1h
cmdpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdRdWlya3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6VGFibGVGb3JtYXR0aW5nUXVpcmtzOjpmb3JtYXR0aW5nQ29udGV4dCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5l
Q29udGVudEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OklubGluZUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVEaXNwbGF5Tm9uUm9vdElubGluZUJveGVzIGNv
bnN0KToKKwogMjAyMS0wNS0xNSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0xGQ10gTWFrZSByZWR1bmRhbnQgcHVibGljIGhlbHBlcnMgcHJpdmF0ZSBpbiBGb3Jt
YXR0aW5nQ29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5jcHAKaW5kZXggNTMwZTIxMjM5NDAy
OTBhZjg1ZjcxMzZkOWM3NmRkZmFiN2Q5MDk0Ni4uZDU2OGFlZWMxZjVhNjgyOTM2ZDQ2YmJlNTJm
ZjY5NGU0YjE2MGY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwCkBAIC00MCw3ICs0MCw3
IEBAIEZvcm1hdHRpbmdRdWlya3M6OkZvcm1hdHRpbmdRdWlya3MoY29uc3QgRm9ybWF0dGluZ0Nv
bnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KQogewogfQogCi1MYXlvdXRVbml0IEZvcm1hdHRpbmdR
dWlya3M6OmhlaWdodFZhbHVlT2ZOZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZpeGVkSGVpZ2h0
KGNvbnN0IEJveCYgbGF5b3V0Qm94KQorTGF5b3V0VW5pdCBGb3JtYXR0aW5nUXVpcmtzOjpoZWln
aHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdodChjb25zdCBCb3gm
IGxheW91dEJveCkgY29uc3QKIHsKICAgICAvLyBJbiBxdWlya3MgbW9kZSwgd2UgZ28gYW5kIHRy
YXZlcnMgdGhlIGNvbnRhaW5pbmcgYmxvY2sgY2hhaW4gdG8gZmluZCBhIGJsb2NrIGxldmVsIGJv
eCB3aXRoIGZpeGVkIGhlaWdodCB2YWx1ZSwgZXZlbiBpZiBpdCBtZWFucyBsZWF2aW5nCiAgICAg
Ly8gdGhlIGN1cnJlbnQgZm9ybWF0dGluZyBjb250ZXh0LiBGSVhNRTogc3VyZWx5IHdlIG5lZWQg
dG8gZG8gc29tZSB0cmlja3MgaGVyZSB3aGVuIGJsb2NrIGRpcmVjdGlvbiBzdXBwb3J0IGlzIGFk
ZGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9Gb3JtYXR0aW5nUXVpcmtzLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuaAppbmRleCA1YTFkYzdkNThiM2JkMzBmMGZhMDI0YTA3
MWU3ODc2YWI1MmExNGZhLi4zM2YwZDgyNDEyYmE1ZWI5Zjk5NGY4ZTk2ZWM4MDdmMjkzMDZhMDkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zv
cm1hdHRpbmdRdWlya3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuaApAQCAtMzYsMTEgKzM2LDEwIEBAIGNsYXNzIEZvcm1h
dHRpbmdRdWlya3MgewogcHVibGljOgogICAgIEZvcm1hdHRpbmdRdWlya3MoY29uc3QgRm9ybWF0
dGluZ0NvbnRleHQmKTsKIAotICAgIExheW91dFVuaXQgaGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250
YWluaW5nQmxvY2tXaXRoRml4ZWRIZWlnaHQoY29uc3QgQm94Jik7CisgICAgTGF5b3V0VW5pdCBo
ZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdodChjb25zdCBC
b3gmKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRT
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0dGluZ0NvbnRleHQubGF5b3V0U3RhdGUoKTsg
fQotICAgIExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIHsgcmV0dXJuIG1fZm9ybWF0dGluZ0Nv
bnRleHQubGF5b3V0U3RhdGUoKTsgfQogICAgIGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0JiBmb3Jt
YXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0dGluZ0NvbnRleHQ7IH0KIAog
ICAgIGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0JiBtX2Zvcm1hdHRpbmdDb250ZXh0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNDYwMDM2YTk3
NDJkNDEwODAzZGVjZDk1ODAxNGI4YTM2MzUzYTBhZi4uNzQxOGQwMjkyOTdiYzhhMzIxOWRlNjAx
ZThlODRkNzU5NjgwNjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5oIgotI2lu
Y2x1ZGUgIkJsb2NrRm9ybWF0dGluZ1F1aXJrcy5oIgogI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGlu
Z1N0YXRlLmgiCiAjaW5jbHVkZSAiQmxvY2tNYXJnaW5Db2xsYXBzZS5oIgogI2luY2x1ZGUgIkZs
b2F0aW5nQ29udGV4dC5oIgpAQCAtNjEyLDExICs2MTEsNiBAQCBCbG9ja01hcmdpbkNvbGxhcHNl
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Om1hcmdpbkNvbGxhcHNlKCkgY29uc3QKICAgICByZXR1
cm4gQmxvY2tNYXJnaW5Db2xsYXBzZSgqdGhpcyk7CiB9CiAKLUJsb2NrRm9ybWF0dGluZ1F1aXJr
cyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpxdWlya3MoKSBjb25zdAotewotICAgIHJldHVybiBC
bG9ja0Zvcm1hdHRpbmdRdWlya3MoKnRoaXMpOwotfQotCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9i
bG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggN2Q4NmIxYzUwMWRiODgxYTQ5YTIx
YTYwMmYwZmQwZTg5NmQ2OTg0Ni4uM2NhOTA3NWI5NDJkMGRhNzc3OGEyNzYxYjI5NmE4NDM0MDQx
ODg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAg
LTQwLDcgKzQwLDYgQEAgbmFtZXNwYWNlIExheW91dCB7CiAKIGNsYXNzIEJveDsKIGNsYXNzIEJs
b2NrRm9ybWF0dGluZ0dlb21ldHJ5OwotY2xhc3MgQmxvY2tGb3JtYXR0aW5nUXVpcmtzOwogY2xh
c3MgQmxvY2tNYXJnaW5Db2xsYXBzZTsKIGNsYXNzIEZsb2F0aW5nQ29udGV4dDsKIApAQCAtODIs
NyArODEsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0
dGluZ1N0YXRlKCkgeyByZXR1cm4gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nU3RhdGU+KEZvcm1h
dHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5nU3RhdGUoKSk7IH0KICAgICBCbG9ja0Zvcm1hdHRpbmdH
ZW9tZXRyeSBnZW9tZXRyeSgpIGNvbnN0OwotICAgIEJsb2NrRm9ybWF0dGluZ1F1aXJrcyBxdWly
a3MoKSBjb25zdDsKICAgICBCbG9ja01hcmdpbkNvbGxhcHNlIG1hcmdpbkNvbGxhcHNlKCkgY29u
c3Q7CiAKICNpZiBBU1NFUlRfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9y
bWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCA4MjM2MzA4MWM3YzczMjI4YzhjOTE0ZDMxMTAzYmE5
NjhjMzlmYjlmLi43ZDBiNTZhMWVjMzNmNTk2N2I1MTI3MDJiZTllMWJkOTFlN2FlZWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Js
b2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0dlb21ldHJ5LmNwcApAQCAtMjgw
LDExICsyODAsMTAgQEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBCbG9ja0Zvcm1hdHRpbmdHZW9t
ZXRyeTo6aW5GbG93Q29udGVudEhlaWdodEFuZE1hcmdpbihjb24KICAgICAgICAgY29udGVudEhl
aWdodEFuZE1hcmdpbiA9IGNvbXBsaWNhdGVkQ2FzZXMobGF5b3V0Qm94LCBob3Jpem9udGFsQ29u
c3RyYWludHMsIG92ZXJyaWRkZW5WZXJ0aWNhbFZhbHVlcyk7CiAgICAgfQogCi0gICAgYXV0byBx
dWlya3MgPSBCbG9ja0Zvcm1hdHRpbmdRdWlya3MgeyBmb3JtYXR0aW5nQ29udGV4dCgpIH07Ci0g
ICAgaWYgKCFxdWlya3MubmVlZHNTdHJldGNoaW5nKGxheW91dEJveCkpCi0gICAgICAgIHJldHVy
biBjb250ZW50SGVpZ2h0QW5kTWFyZ2luOwotCi0gICAgY29udGVudEhlaWdodEFuZE1hcmdpbi5j
b250ZW50SGVpZ2h0ID0gcXVpcmtzLnN0cmV0Y2hlZEluRmxvd0hlaWdodChsYXlvdXRCb3gsIGNv
bnRlbnRIZWlnaHRBbmRNYXJnaW4pOworICAgIGlmIChsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9k
ZSgpKSB7CisgICAgICAgIGlmIChhdXRvIHN0cmV0Y2hlZEluRmxvd0hlaWdodCA9IEJsb2NrRm9y
bWF0dGluZ1F1aXJrcyhmb3JtYXR0aW5nQ29udGV4dCgpKS5zdHJldGNoZWRJbkZsb3dIZWlnaHRJ
ZkFwcGxpY2FibGUobGF5b3V0Qm94LCBjb250ZW50SGVpZ2h0QW5kTWFyZ2luKSkKKyAgICAgICAg
ICAgIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4uY29udGVudEhlaWdodCA9ICpzdHJldGNoZWRJbkZs
b3dIZWlnaHQ7CisgICAgfQogCiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0
TGF5b3V0LCBzdHJlYW0gPDwgIltIZWlnaHRdW01hcmdpbl0gLT4gaW5mbG93IG5vbi1yZXBsYWNl
ZCAtPiBzdHJlY2hlZCB0byB2aWV3cG9ydCAtPiBoZWlnaHQoIiA8PCBjb250ZW50SGVpZ2h0QW5k
TWFyZ2luLmNvbnRlbnRIZWlnaHQgPDwgInB4KSBtYXJnaW4oIiA8PCBjb250ZW50SGVpZ2h0QW5k
TWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbi5iZWZvcmUgPDwgInB4LCAiIDw8IGNvbnRlbnRIZWln
aHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luLmFmdGVyIDw8ICJweCkgLT4gbGF5b3V0Qm94
KCIgPDwgJmxheW91dEJveCA8PCAiKSIpOwogICAgIHJldHVybiBjb250ZW50SGVpZ2h0QW5kTWFy
Z2luOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwCmluZGV4
IGI1NGQ1Mjc1NWIzODY0NmYxYjdkZDAyNzRkZTUwNGEzZWRmZmM2NWMuLmJlZDI5OTAyMDJjM2E1
Yzg5OGE2ZTcyZTJlZTI2NDAyZWEyN2IzNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2Nr
Rm9ybWF0dGluZ1F1aXJrcy5jcHAKQEAgLTQ3LDI1ICs0NywyMyBAQCBzdGF0aWMgYm9vbCBpc1F1
aXJrQ29udGFpbmVyKGNvbnN0IEJveCYgbGF5b3V0Qm94KQogQmxvY2tGb3JtYXR0aW5nUXVpcmtz
OjpCbG9ja0Zvcm1hdHRpbmdRdWlya3MoY29uc3QgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCYgYmxv
Y2tGb3JtYXR0aW5nQ29udGV4dCkKICAgICA6IEZvcm1hdHRpbmdRdWlya3MoYmxvY2tGb3JtYXR0
aW5nQ29udGV4dCkKIHsKKyAgICBBU1NFUlQobGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSk7
CiB9CiAKLWJvb2wgQmxvY2tGb3JtYXR0aW5nUXVpcmtzOjpuZWVkc1N0cmV0Y2hpbmcoY29uc3Qg
Qm94JiBsYXlvdXRCb3gpIGNvbnN0CitzdGF0aWMgYm9vbCBuZWVkc1N0cmV0Y2hpbmcoY29uc3Qg
Qm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0luRmxvdygpKTsKICAg
ICAvLyBJbiBxdWlya3MgbW9kZSwgaW4tZmxvdyBib2R5IGFuZCBodG1sIHN0cmV0Y2ggdG8gdGhl
IGluaXRpYWwgY29udGFpbmluZyBibG9jayAoaGVpZ2h0OiBhdXRvIG9ubHkpLgotICAgIGlmICgh
bGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAg
ICAgaWYgKCFsYXlvdXRCb3guaXNEb2N1bWVudEJveCgpICYmICFsYXlvdXRCb3guaXNCb2R5Qm94
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIHJldHVybiBsYXlvdXRCb3guc3R5bGUo
KS5sb2dpY2FsSGVpZ2h0KCkuaXNBdXRvKCk7CiB9CiAKLUxheW91dFVuaXQgQmxvY2tGb3JtYXR0
aW5nUXVpcmtzOjpzdHJldGNoZWRJbkZsb3dIZWlnaHQoY29uc3QgQm94JiBsYXlvdXRCb3gsIENv
bnRlbnRIZWlnaHRBbmRNYXJnaW4gY29udGVudEhlaWdodEFuZE1hcmdpbikKK09wdGlvbmFsPExh
eW91dFVuaXQ+IEJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c3RyZXRjaGVkSW5GbG93SGVpZ2h0SWZB
cHBsaWNhYmxlKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIGNv
bnRlbnRIZWlnaHRBbmRNYXJnaW4pIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG5lZWRzU3RyZXRjaGlu
ZyhsYXlvdXRCb3gpKTsKLSAgICBhdXRvJiBmb3JtYXR0aW5nQ29udGV4dCA9IHRoaXMtPmZvcm1h
dHRpbmdDb250ZXh0KCk7CisgICAgaWYgKCFuZWVkc1N0cmV0Y2hpbmcobGF5b3V0Qm94KSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvJiBmb3JtYXR0aW5nQ29udGV4dCA9IGRvd25jYXN0
PEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ+KHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KCkpOwogICAg
IGF1dG8gbm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW4gPSBjb250ZW50SGVpZ2h0QW5kTWFyZ2lu
Lm5vbkNvbGxhcHNlZE1hcmdpbi5iZWZvcmUgKyBjb250ZW50SGVpZ2h0QW5kTWFyZ2luLm5vbkNv
bGxhcHNlZE1hcmdpbi5hZnRlcjsKIAogICAgIGlmIChsYXlvdXRCb3guaXNEb2N1bWVudEJveCgp
KSB7CkBAIC05OSwxNiArOTcsMTYgQEAgTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6
OnN0cmV0Y2hlZEluRmxvd0hlaWdodChjb25zdCBCb3gmIGxheW91dEJveCwgQ28KICAgICBib2R5
Qm94Q29udGVudEhlaWdodCAtPSBkb2N1bWVudEJveEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVyKCkg
KyBkb2N1bWVudEJveEdlb21ldHJ5LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlT3IoMCk7CiAgICAg
Ly8gSG93ZXZlciB0aGUgbm9uLWluLWZsb3cgZG9jdW1lbnQgYm94J3MgdmVydGljYWwgbWFyZ2lu
cyBhcmUgaWdub3JlZC4gVGhleSBkb24ndCBhZmZlY3QgdGhlIGJvZHkgYm94J3MgY29udGVudCBo
ZWlnaHQuCiAgICAgaWYgKGRvY3VtZW50Qm94LmlzSW5GbG93KCkpIHsKLSAgICAgICAgYXV0byBn
ZW9tZXRyeSA9IEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5IHsgZm9ybWF0dGluZ0NvbnRleHQgfTsK
LSAgICAgICAgYXV0byBwcmVjb21wdXRlRG9jdW1lbnRCb3hWZXJ0aWNhbE1hcmdpbiA9IGdlb21l
dHJ5LmNvbXB1dGVkVmVydGljYWxNYXJnaW4oZG9jdW1lbnRCb3gsIGdlb21ldHJ5LmNvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudChpbml0aWFsQ29udGFpbmluZ0Jsb2NrLCBGb3JtYXR0aW5nQ29u
dGV4dDo6RXNjYXBlUmVhc29uOjpCb2R5U3RyZXRjaGVzVG9WaWV3cG9ydFF1aXJrKS5ob3Jpem9u
dGFsKTsKKyAgICAgICAgYXV0byBmb3JtYXR0aW5nR2VvbWV0cnkgPSBCbG9ja0Zvcm1hdHRpbmdH
ZW9tZXRyeSB7IGZvcm1hdHRpbmdDb250ZXh0IH07CisgICAgICAgIGF1dG8gcHJlY29tcHV0ZURv
Y3VtZW50Qm94VmVydGljYWxNYXJnaW4gPSBmb3JtYXR0aW5nR2VvbWV0cnkuY29tcHV0ZWRWZXJ0
aWNhbE1hcmdpbihkb2N1bWVudEJveCwgZm9ybWF0dGluZ0dlb21ldHJ5LmNvbnN0cmFpbnRzRm9y
SW5GbG93Q29udGVudChpbml0aWFsQ29udGFpbmluZ0Jsb2NrLCBGb3JtYXR0aW5nQ29udGV4dDo6
RXNjYXBlUmVhc29uOjpCb2R5U3RyZXRjaGVzVG9WaWV3cG9ydFF1aXJrKS5ob3Jpem9udGFsKTsK
ICAgICAgICAgYm9keUJveENvbnRlbnRIZWlnaHQgLT0gcHJlY29tcHV0ZURvY3VtZW50Qm94VmVy
dGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlT3IoMCkgKyBwcmVjb21wdXRlRG9jdW1lbnRCb3hWZXJ0
aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApOwogICAgIH0KICAgICByZXR1cm4gc3RkOjptYXgo
Y29udGVudEhlaWdodEFuZE1hcmdpbi5jb250ZW50SGVpZ2h0LCAgYm9keUJveENvbnRlbnRIZWln
aHQpOwogfQogCi1ib29sIEJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c2hvdWxkSWdub3JlQ29sbGFw
c2VkUXVpcmtNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Citib29sIEJsb2NrRm9y
bWF0dGluZ1F1aXJrczo6c2hvdWxkSWdub3JlQ29sbGFwc2VkUXVpcmtNYXJnaW4oY29uc3QgQm94
JiBsYXlvdXRCb3gpCiB7Ci0gICAgcmV0dXJuIGxheW91dFN0YXRlKCkuaW5RdWlya3NNb2RlKCkg
JiYgaXNRdWlya0NvbnRhaW5lcihsYXlvdXRCb3gpOworICAgIHJldHVybiBpc1F1aXJrQ29udGFp
bmVyKGxheW91dEJveCk7CiB9CiAKIGVudW0gY2xhc3MgVmVydGljYWxNYXJnaW4geyBCZWZvcmUs
IEFmdGVyIH07CkBAIC0xMjAsMTQgKzExOCwxNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaGFzUXVp
cmtNYXJnaW5Ub0NvbGxhcHNlKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBWZXJ0aWNhbE1hcmdpbgog
ICAgIHJldHVybiAodmVydGljYWxNYXJnaW4gPT0gVmVydGljYWxNYXJnaW46OkJlZm9yZSAmJiBz
dHlsZS5oYXNNYXJnaW5CZWZvcmVRdWlyaygpKSB8fCAodmVydGljYWxNYXJnaW4gPT0gVmVydGlj
YWxNYXJnaW46OkFmdGVyICYmIHN0eWxlLmhhc01hcmdpbkFmdGVyUXVpcmsoKSk7CiB9CiAKLWJv
b2wgQmxvY2tGb3JtYXR0aW5nUXVpcmtzOjpzaG91bGRDb2xsYXBzZU1hcmdpbkJlZm9yZVdpdGhQ
YXJlbnRNYXJnaW5CZWZvcmUoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Citib29sIEJsb2Nr
Rm9ybWF0dGluZ1F1aXJrczo6c2hvdWxkQ29sbGFwc2VNYXJnaW5CZWZvcmVXaXRoUGFyZW50TWFy
Z2luQmVmb3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewotICAgIHJldHVybiBsYXlvdXRTdGF0
ZSgpLmluUXVpcmtzTW9kZSgpICYmIGhhc1F1aXJrTWFyZ2luVG9Db2xsYXBzZShsYXlvdXRCb3gs
IFZlcnRpY2FsTWFyZ2luOjpCZWZvcmUpICYmIGlzUXVpcmtDb250YWluZXIobGF5b3V0Qm94LmNv
bnRhaW5pbmdCbG9jaygpKTsKKyAgICByZXR1cm4gaGFzUXVpcmtNYXJnaW5Ub0NvbGxhcHNlKGxh
eW91dEJveCwgVmVydGljYWxNYXJnaW46OkJlZm9yZSkgJiYgaXNRdWlya0NvbnRhaW5lcihsYXlv
dXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOwogfQogCi1ib29sIEJsb2NrRm9ybWF0dGluZ1F1aXJr
czo6c2hvdWxkQ29sbGFwc2VNYXJnaW5BZnRlcldpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBC
b3gmIGxheW91dEJveCkgY29uc3QKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nUXVpcmtzOjpzaG91bGRD
b2xsYXBzZU1hcmdpbkFmdGVyV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IEJveCYgbGF5b3V0
Qm94KQogewotICAgIHJldHVybiBsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpICYmIGhhc1F1
aXJrTWFyZ2luVG9Db2xsYXBzZShsYXlvdXRCb3gsIFZlcnRpY2FsTWFyZ2luOjpBZnRlcikgJiYg
aXNRdWlya0NvbnRhaW5lcihsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOworICAgIHJldHVy
biBoYXNRdWlya01hcmdpblRvQ29sbGFwc2UobGF5b3V0Qm94LCBWZXJ0aWNhbE1hcmdpbjo6QWZ0
ZXIpICYmIGlzUXVpcmtDb250YWluZXIobGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmgKaW5kZXggODAy
MWMxNDQyMTI4YWRjZmZiOWRkOTUzZDA1NmU1YTYwMzVmNTA3Zi4uZmVhNmNmM2RjZGY5ZmRhMjEx
ZjBlMjM0ZDc5NjY4YWFkY2Q3ZTRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0
dGluZ1F1aXJrcy5oCkBAIC0zNiwxNSArMzYsMTAgQEAgY2xhc3MgQmxvY2tGb3JtYXR0aW5nUXVp
cmtzIDogcHVibGljIEZvcm1hdHRpbmdRdWlya3MgewogcHVibGljOgogICAgIEJsb2NrRm9ybWF0
dGluZ1F1aXJrcyhjb25zdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Jik7CiAKLSAgICBib29sIG5l
ZWRzU3RyZXRjaGluZyhjb25zdCBCb3gmKSBjb25zdDsKLSAgICBMYXlvdXRVbml0IHN0cmV0Y2hl
ZEluRmxvd0hlaWdodChjb25zdCBCb3gmLCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luKTsKLQotICAg
IGJvb2wgc2hvdWxkSWdub3JlQ29sbGFwc2VkUXVpcmtNYXJnaW4oY29uc3QgQm94JikgY29uc3Q7
Ci0gICAgYm9vbCBzaG91bGRDb2xsYXBzZU1hcmdpbkJlZm9yZVdpdGhQYXJlbnRNYXJnaW5CZWZv
cmUoY29uc3QgQm94JikgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRDb2xsYXBzZU1hcmdpbkFmdGVy
V2l0aFBhcmVudE1hcmdpbkFmdGVyKGNvbnN0IEJveCYpIGNvbnN0OwotCi1wcm90ZWN0ZWQ6Ci0g
ICAgY29uc3QgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBjb25z
dCB7IHJldHVybiBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdDb250ZXh0PihGb3JtYXR0aW5nUXVp
cmtzOjpmb3JtYXR0aW5nQ29udGV4dCgpKTsgfQorICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHN0
cmV0Y2hlZEluRmxvd0hlaWdodElmQXBwbGljYWJsZShjb25zdCBCb3gmLCBDb250ZW50SGVpZ2h0
QW5kTWFyZ2luKSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRJZ25vcmVDb2xsYXBzZWRR
dWlya01hcmdpbihjb25zdCBCb3gmKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRDb2xsYXBzZU1h
cmdpbkJlZm9yZVdpdGhQYXJlbnRNYXJnaW5CZWZvcmUoY29uc3QgQm94Jik7CisgICAgc3RhdGlj
IGJvb2wgc2hvdWxkQ29sbGFwc2VNYXJnaW5BZnRlcldpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25z
dCBCb3gmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2Uu
Y3BwCmluZGV4IGQ3N2NkZmYxNjBhMzg3Y2RjMTZhZGUxMWM1MTQxNzQ5MTk5OTQ4ZmQuLmFkMmIw
ODE5ZjkxOThlNDM0Y2Y4ZWU1MmFjNjMyODc5ODRkMDVlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9j
ay9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcApAQCAtODcsMTEgKzg3LDYgQEAgQmxvY2tNYXJnaW5D
b2xsYXBzZTo6QmxvY2tNYXJnaW5Db2xsYXBzZShjb25zdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
JiBibG9ja0Zvcm0KIHsKIH0KIAotQmxvY2tGb3JtYXR0aW5nUXVpcmtzIEJsb2NrTWFyZ2luQ29s
bGFwc2U6OnF1aXJrcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEJsb2NrRm9ybWF0dGluZ1F1aXJr
cyB7IGZvcm1hdHRpbmdDb250ZXh0KCkgfTsKLX0KLQogYm9vbCBCbG9ja01hcmdpbkNvbGxhcHNl
OjpoYXNDbGVhcmFuY2UoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgaWYgKCFs
YXlvdXRCb3guaGFzRmxvYXRDbGVhcigpKQpAQCAtMTI1LDcgKzEyMCw3IEBAIGJvb2wgQmxvY2tN
YXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3JlQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9y
ZShjb25zdCBCb3gmCiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL0NTUzIxL2JveC5odG1s
I2NvbGxhcHNpbmctbWFyZ2lucwogICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94
KCkpOwogCi0gICAgaWYgKHF1aXJrcygpLnNob3VsZENvbGxhcHNlTWFyZ2luQmVmb3JlV2l0aFBh
cmVudE1hcmdpbkJlZm9yZShsYXlvdXRCb3gpKQorICAgIGlmIChsYXlvdXRTdGF0ZSgpLmluUXVp
cmtzTW9kZSgpICYmIEJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c2hvdWxkQ29sbGFwc2VNYXJnaW5C
ZWZvcmVXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGxheW91dEJveCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgLy8gTWFyZ2lucyBiZXR3ZWVuIGEgZmxvYXRlZCBib3ggYW5kIGFueSBvdGhl
ciBib3ggZG8gbm90IGNvbGxhcHNlLgpAQCAtMjYzLDcgKzI1OCw3IEBAIGJvb2wgQmxvY2tNYXJn
aW5Db2xsYXBzZTo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29u
c3QgQm94JiBsCiB7CiAgICAgQVNTRVJUKGxheW91dEJveC5pc0Jsb2NrTGV2ZWxCb3goKSk7CiAK
LSAgICBpZiAocXVpcmtzKCkuc2hvdWxkQ29sbGFwc2VNYXJnaW5BZnRlcldpdGhQYXJlbnRNYXJn
aW5BZnRlcihsYXlvdXRCb3gpKQorICAgIGlmIChsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgp
ICYmIEJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c2hvdWxkQ29sbGFwc2VNYXJnaW5BZnRlcldpdGhQ
YXJlbnRNYXJnaW5BZnRlcihsYXlvdXRCb3gpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IC8vIE1hcmdpbnMgYmV0d2VlbiBhIGZsb2F0ZWQgYm94IGFuZCBhbnkgb3RoZXIgYm94IGRvIG5v
dCBjb2xsYXBzZS4KQEAgLTM1NCw3ICszNDksOCBAQCBib29sIEJsb2NrTWFyZ2luQ29sbGFwc2U6
Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aExhc3RJbkZsb3dDaGlsZE1hcmdpbkFmdGVyKGNvbgog
CiAgICAgLy8gVGhpcyBpcyBhIHF1aXJrIGJlaGF2aW9yOiBXaGVuIHRoZSBtYXJnaW4gYWZ0ZXIg
b2YgdGhlIGxhc3QgaW5mbG93IGNoaWxkIChvciBhIHByZXZpb3VzIHNpYmxpbmcgd2l0aCBjb2xs
YXBzZWQgdGhyb3VnaCBtYXJnaW5zKQogICAgIC8vIGNvbGxhcHNlcyB3aXRoIGEgcXVpcmsgcGFy
ZW50J3MgdGhlIG1hcmdpbiBiZWZvcmUsIHRoZW4gdGhlIHNhbWUgbWFyZ2luIGFmdGVyIGRvZXMg
bm90IGNvbGxhcHNlcyB3aXRoIHRoZSBwYXJlbnQncyBtYXJnaW4gYWZ0ZXIuCi0gICAgaWYgKHF1
aXJrcygpLnNob3VsZElnbm9yZUNvbGxhcHNlZFF1aXJrTWFyZ2luKGxheW91dEJveCkgJiYgbWFy
Z2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGxhc3RJbkZsb3dDaGlsZCkp
CisgICAgYXV0byBzaG91bGRJZ25vcmVDb2xsYXBzZWRNYXJnaW4gPSBsYXlvdXRTdGF0ZSgpLmlu
UXVpcmtzTW9kZSgpICYmIEJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c2hvdWxkSWdub3JlQ29sbGFw
c2VkUXVpcmtNYXJnaW4obGF5b3V0Qm94KTsKKyAgICBpZiAoc2hvdWxkSWdub3JlQ29sbGFwc2Vk
TWFyZ2luICYmIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXN0
SW5GbG93Q2hpbGQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTUwNyw3ICs1MDMsOCBAQCBVc2VkVmVydGljYWxNYXJnaW46OlBvc2l0aXZlQW5kTmVnYXRp
dmVQYWlyOjpWYWx1ZXMgQmxvY2tNYXJnaW5Db2xsYXBzZTo6cG9zaXRpdgogICAgIC8vIDIuIEdh
dGhlciBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgbWFyZ2luIHZhbHVlcyBmcm9tIHByZXZpb3VzIGlu
ZmxvdyBzaWJsaW5nIGlmIG1hcmdpbnMgYXJlIGFkam9pbmluZy4KICAgICAvLyAzLiBDb21wdXRl
IG1pbi9tYXggcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGNvbGxhcHNlZCBtYXJnaW4gdmFsdWVzIHVz
aW5nIG5vbi1jb2xscGFzZWQgY29tcHV0ZWQgbWFyZ2luIGJlZm9yZS4KICAgICBhdXRvIGNvbGxh
cHNlZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkUG9zaXRpdmVBbmROZWdhdGl2ZU1hcmdpbihmaXJz
dENoaWxkQ29sbGFwc2VkTWFyZ2luQmVmb3JlKCksIHByZXZpb3VTaWJsaW5nQ29sbGFwc2VkTWFy
Z2luQWZ0ZXIoKSk7Ci0gICAgaWYgKGNvbGxhcHNlZE1hcmdpbkJlZm9yZS5pc1F1aXJrICYmIHF1
aXJrcygpLnNob3VsZElnbm9yZUNvbGxhcHNlZFF1aXJrTWFyZ2luKGxheW91dEJveCkpCisgICAg
YXV0byBzaG91bGRJZ25vcmVDb2xsYXBzZWRNYXJnaW4gPSBjb2xsYXBzZWRNYXJnaW5CZWZvcmUu
aXNRdWlyayAmJiBsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpICYmIEJsb2NrRm9ybWF0dGlu
Z1F1aXJrczo6c2hvdWxkSWdub3JlQ29sbGFwc2VkUXVpcmtNYXJnaW4obGF5b3V0Qm94KTsKKyAg
ICBpZiAoc2hvdWxkSWdub3JlQ29sbGFwc2VkTWFyZ2luKQogICAgICAgICBjb2xsYXBzZWRNYXJn
aW5CZWZvcmUgPSB7IH07CiAKICAgICBVc2VkVmVydGljYWxNYXJnaW46OlBvc2l0aXZlQW5kTmVn
YXRpdmVQYWlyOjpWYWx1ZXMgbm9uQ29sbGFwc2VkQmVmb3JlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxh
cHNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Js
b2NrTWFyZ2luQ29sbGFwc2UuaAppbmRleCBlZWFhOTE1NmNlY2M5MWIyYWFjNjI5MWE4MjYxYWUy
ZmNjOTJjYWZjLi5kMjRkZjBlY2ExN2U0MDM4NzQwYjlmNTU4ODExYTdkMmU1YTIzYThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Js
b2NrTWFyZ2luQ29sbGFwc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuaApAQCAtNzAsNyArNzAsNiBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBoYXNDbGVhcmFuY2UoY29uc3QgQm94JikgY29uc3Q7CiAKLSAg
ICBCbG9ja0Zvcm1hdHRpbmdRdWlya3MgcXVpcmtzKCkgY29uc3Q7CiAgICAgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlKCkgeyByZXR1cm4gbV9ibG9ja0Zvcm1hdHRpbmdDb250ZXh0LmxheW91dFN0
YXRlKCk7IH0KICAgICBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX2Jsb2NrRm9ybWF0dGluZ0NvbnRleHQubGF5b3V0U3RhdGUoKTsgfQogICAgIGNvbnN0
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9ibG9ja0Zvcm1hdHRpbmdDb250ZXh0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL1ByZWNvbXB1dGVkQmxvY2tNYXJnaW5D
b2xsYXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Js
b2NrL1ByZWNvbXB1dGVkQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKaW5kZXggNmZlYjEwZDNjM2Ex
NWNjZTU0NTY0MWYwNDA1MWYyNjY1MmU2ODRhOS4uOTA4ZTczZGI3M2E4YjBiNzRiNDk0ZDA5MTZi
YmUxODgxN2MyNjNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9ibG9jay9QcmVjb21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svUHJlY29tcHV0
ZWRCbG9ja01hcmdpbkNvbGxhcHNlLmNwcApAQCAtNzIsNyArNzIsOCBAQCBVc2VkVmVydGljYWxN
YXJnaW46OlBvc2l0aXZlQW5kTmVnYXRpdmVQYWlyOjpWYWx1ZXMgQmxvY2tNYXJnaW5Db2xsYXBz
ZTo6cHJlY29tcAogICAgIC8vIDIuIEdhdGhlciBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgbWFyZ2lu
IHZhbHVlcyBmcm9tIHByZXZpb3VzIGluZmxvdyBzaWJsaW5nIGlmIG1hcmdpbnMgYXJlIGFkam9p
bmluZy4KICAgICAvLyAzLiBDb21wdXRlIG1pbi9tYXggcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGNv
bGxhcHNlZCBtYXJnaW4gdmFsdWVzIHVzaW5nIG5vbi1jb2xscGFzZWQgY29tcHV0ZWQgbWFyZ2lu
IGJlZm9yZS4KICAgICBhdXRvIGNvbGxhcHNlZE1hcmdpbkJlZm9yZSA9IGNvbXB1dGVkUG9zaXRp
dmVBbmROZWdhdGl2ZU1hcmdpbihmaXJzdENoaWxkQ29sbGFwc2VkTWFyZ2luQmVmb3JlKCksIHBy
ZXZpb3VTaWJsaW5nQ29sbGFwc2VkTWFyZ2luQWZ0ZXIoKSk7Ci0gICAgaWYgKGNvbGxhcHNlZE1h
cmdpbkJlZm9yZS5pc1F1aXJrICYmIHF1aXJrcygpLnNob3VsZElnbm9yZUNvbGxhcHNlZFF1aXJr
TWFyZ2luKGxheW91dEJveCkpCisgICAgYXV0byBzaG91bGRJZ25vcmVDb2xsYXBzZWRNYXJnaW4g
PSBjb2xsYXBzZWRNYXJnaW5CZWZvcmUuaXNRdWlyayAmJiBsYXlvdXRTdGF0ZSgpLmluUXVpcmtz
TW9kZSgpICYmIEJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c2hvdWxkSWdub3JlQ29sbGFwc2VkUXVp
cmtNYXJnaW4obGF5b3V0Qm94KTsKKyAgICBpZiAoc2hvdWxkSWdub3JlQ29sbGFwc2VkTWFyZ2lu
KQogICAgICAgICBjb2xsYXBzZWRNYXJnaW5CZWZvcmUgPSB7IH07CiAKICAgICBhdXRvIG5vbkNv
bGxhcHNlZEJlZm9yZSA9IFVzZWRWZXJ0aWNhbE1hcmdpbjo6UG9zaXRpdmVBbmROZWdhdGl2ZVBh
aXI6OlZhbHVlcyB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
YmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CmluZGV4IDU1NGM4OTIwZWI0YWQyMmU0NmEyYTQ1YTE1YjlhNjgyMGVhOTEwMmIuLmFhNzc1NDYz
MDJlOGU5ZThkOWRlZjBlMTEzMzBhNjgyNzY1MThiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3Jh
cHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0yMTksMTAgKzIxOSwxNiBAQCB2b2lkIFRhYmxlV3Jh
cHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVIZWlnaHRBbmRNYXJnaW5Gb3JUYWJs
ZUJveChjb25zdAogICAgIEFTU0VSVCh0YWJsZUJveC5pc1RhYmxlQm94KCkpOwogICAgIC8vIFRh
YmxlIGlzIGEgc3BlY2lhbCBCRkMgY29udGVudC4gSXRzIGhlaWdodCBpcyBtYWlubHkgZHJpdmVu
IGJ5IHRoZSBjb250ZW50LiBDb21wdXRlZCBoZWlnaHQsIG1pbi1oZWlnaHQgYW5kIG1heC1oZWln
aHQgYXJlIGFsbAogICAgIC8vIGFscmVhZHkgYmVlbiB0YWtlbiBpbnRvIGFjY291bnQgZHVyaW5n
IHRoZSBURkMgbGF5b3V0LgotICAgIGF1dG8gaGVpZ2h0QW5kTWFyZ2luID0gZ2VvbWV0cnkoKS5p
bkZsb3dDb250ZW50SGVpZ2h0QW5kTWFyZ2luKHRhYmxlQm94LCBjb25zdHJhaW50cy5ob3Jpem9u
dGFsLCB7IHF1aXJrcygpLm92ZXJyaWRkZW5UYWJsZUhlaWdodCh0YWJsZUJveCkgfSk7Ci0KLSAg
ICBhdXRvIG1hcmdpbkNvbGxhcHNlID0gdGhpcy0+bWFyZ2luQ29sbGFwc2UoKTsKLSAgICBhdXRv
IHZlcnRpY2FsTWFyZ2luID0gbWFyZ2luQ29sbGFwc2UuY29sbGFwc2VkVmVydGljYWxWYWx1ZXMo
dGFibGVCb3gsIGhlaWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW4pOworICAgIGF1dG8g
b3ZlcnJpZGRlblRhYmxlSGVpZ2h0ID0gWyZdKCkgLT4gT3B0aW9uYWw8TGF5b3V0VW5pdD4gewor
ICAgICAgICBpZiAobGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBUYWJsZVdyYXBwZXJRdWlya3MoKnRoaXMpLm92ZXJyaWRkZW5UYWJsZUhlaWdodCh0YWJs
ZUJveCk7CisgICAgICAgIGlmICh0YWJsZUJveC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkK
KyAgICAgICAgICAgIHJldHVybiBnZW9tZXRyeSgpLmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5n
Q29udGV4dFJvb3QodGFibGVCb3gpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0oKTsKKwor
ICAgIGF1dG8gaGVpZ2h0QW5kTWFyZ2luID0gZ2VvbWV0cnkoKS5pbkZsb3dDb250ZW50SGVpZ2h0
QW5kTWFyZ2luKHRhYmxlQm94LCBjb25zdHJhaW50cy5ob3Jpem9udGFsLCB7IG92ZXJyaWRkZW5U
YWJsZUhlaWdodCB9KTsKKyAgICBhdXRvIHZlcnRpY2FsTWFyZ2luID0gbWFyZ2luQ29sbGFwc2Uo
KS5jb2xsYXBzZWRWZXJ0aWNhbFZhbHVlcyh0YWJsZUJveCwgaGVpZ2h0QW5kTWFyZ2luLm5vbkNv
bGxhcHNlZE1hcmdpbik7CiAgICAgLy8gQ2FjaGUgdGhlIGNvbXB1dGVkIHBvc2l0aXZlIGFuZCBu
ZWdhdGl2ZSBtYXJnaW4gdmFsdWUgcGFpci4KICAgICBmb3JtYXR0aW5nU3RhdGUoKS5zZXRVc2Vk
VmVydGljYWxNYXJnaW4odGFibGVCb3gsIHZlcnRpY2FsTWFyZ2luKTsKIApAQCAtMjM0LDExICsy
NDAsNiBAQCB2b2lkIFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVI
ZWlnaHRBbmRNYXJnaW5Gb3JUYWJsZUJveChjb25zdAogICAgIHVwZGF0ZU1hcmdpbkFmdGVyRm9y
UHJldmlvdXNTaWJsaW5nKHRhYmxlQm94KTsKIH0KIAotVGFibGVXcmFwcGVyUXVpcmtzIFRhYmxl
V3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnF1aXJrcygpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIFRhYmxlV3JhcHBlclF1aXJrcygqdGhpcyk7Ci19Ci0KIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBw
ZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVy
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDQ5YmFjNDg2YTcyOGYyODcxMWE2MmNhZjgz
YTMyNDNlYTFjODQzZjEuLmQ3NjNjYWE5MzM0Nzk3YzE1Mzc3MTI2NzQ2NThiMzVhZmY2N2RiYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxv
Y2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3Jh
cHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTM0LDggKzM0LDYg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlvdXQgewogCi1jbGFzcyBUYWJs
ZVdyYXBwZXJRdWlya3M7Ci0KIC8vIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUgc3BlY2lhbCBi
bG9jayBmb3JtYXR0aW5nIGNvbnRleHQgbGF5b3V0IGxvZ2ljIGZvciB0aGUgdGFibGUgd3JhcHBl
ci4KIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMi90YWJsZXMuaHRtbCNtb2RlbAogY2xh
c3MgVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0IHsKQEAgLTQ4LDggKzQ2LDYgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0SG9yaXpvbnRhbENvbnN0cmFpbnRzSWdub3JpbmdGbG9hdHMoY29uc3QgSG9yaXpvbnRhbENv
bnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMpIHsgbV9ob3Jpem9udGFsQ29uc3RyYWlu
dHNJZ25vcmluZ0Zsb2F0cyA9IGhvcml6b250YWxDb25zdHJhaW50czsgfQogCiBwcml2YXRlOgot
ICAgIFRhYmxlV3JhcHBlclF1aXJrcyBxdWlya3MoKSBjb25zdDsKLQogICAgIHZvaWQgbGF5b3V0
VGFibGVCb3goY29uc3QgQ29udGFpbmVyQm94JiB0YWJsZUJveCwgY29uc3QgQ29uc3RyYWludHNG
b3JJbkZsb3dDb250ZW50Jik7CiAKICAgICB2b2lkIGNvbXB1dGVCb3JkZXJBbmRQYWRkaW5nRm9y
VGFibGVCb3goY29uc3QgQ29udGFpbmVyQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRz
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdy
YXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcAppbmRleCBiZjU5MzM5
NjM5YWI1NmU5MTE0Yzk1MTRlMjY3MjAzMGU4Y2ZmZTIwLi42NjcwOWM2OTVlNDY3YTg1MzMxMDVm
MDhjYjU1NWM5MDNkMGM3ZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1h
dHRpbmdRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ1F1aXJr
cy5jcHAKQEAgLTM3LDE2ICszNywxNCBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIFRhYmxlV3JhcHBl
clF1aXJrczo6VGFibGVXcmFwcGVyUXVpcmtzKGNvbnN0IFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0
dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KQogICAgIDogQmxvY2tGb3JtYXR0aW5nUXVp
cmtzKGZvcm1hdHRpbmdDb250ZXh0KQogeworICAgIEFTU0VSVChsYXlvdXRTdGF0ZSgpLmluUXVp
cmtzTW9kZSgpKTsKIH0KIAotT3B0aW9uYWw8TGF5b3V0VW5pdD4gVGFibGVXcmFwcGVyUXVpcmtz
OjpvdmVycmlkZGVuVGFibGVIZWlnaHQoY29uc3QgQ29udGFpbmVyQm94JiB0YWJsZUJveCkgY29u
c3QKK0xheW91dFVuaXQgVGFibGVXcmFwcGVyUXVpcmtzOjpvdmVycmlkZGVuVGFibGVIZWlnaHQo
Y29uc3QgQ29udGFpbmVyQm94JiB0YWJsZUJveCkgY29uc3QKIHsKLSAgICBhdXRvIGdlb21ldHJ5
ID0gQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnkgeyBmb3JtYXR0aW5nQ29udGV4dCgpIH07Ci0gICAg
aWYgKGxheW91dFN0YXRlKCkuaW5RdWlya3NNb2RlKCkpIHsKLSAgICAgICAgLy8gSW4gcXVpcmtz
IG1vZGUgYWx3YXlzIHVzZSB0aGUgY29udGVudCBoZWlnaHQuIE5vdGUgdGhhdCB0aGUgdGFibGVz
IHdpdGggY29udGVudCB0YWtlIGNvbXB1dGVkIHZhbHVlcyBpbnRvIGFjY291bnQuCi0gICAgICAg
IHJldHVybiBnZW9tZXRyeS5jb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KHRh
YmxlQm94KTsKLSAgICB9Ci0gICAgcmV0dXJuIHRhYmxlQm94Lmhhc0luRmxvd09yRmxvYXRpbmdD
aGlsZCgpID8gZ2VvbWV0cnkuY29udGVudEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdCh0
YWJsZUJveCkgOiBPcHRpb25hbDxMYXlvdXRVbml0PiB7IH07CisgICAgLy8gSW4gcXVpcmtzIG1v
ZGUgYWx3YXlzIHVzZSB0aGUgY29udGVudCBoZWlnaHQuIE5vdGUgdGhhdCB0aGUgdGFibGVzIHdp
dGggY29udGVudCB0YWtlIGNvbXB1dGVkIHZhbHVlcyBpbnRvIGFjY291bnQuCisgICAgYXV0byYg
Zm9ybWF0dGluZ0NvbnRleHQgPSBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Pih0aGlz
LT5mb3JtYXR0aW5nQ29udGV4dCgpKTsKKyAgICByZXR1cm4gQmxvY2tGb3JtYXR0aW5nR2VvbWV0
cnkoZm9ybWF0dGluZ0NvbnRleHQpLmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJv
b3QodGFibGVCb3gpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zv
cm1hdHRpbmdRdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ1F1aXJrcy5o
CmluZGV4IGFjZmQ5YzhmODcyNzlhZGE2NmRiYzRhMTcyNTAwNzA3ZDkzMWJkMDUuLjhjMmUzMzYy
YmMyZTk5YjAwMzg2MGZhYjA1MzgwZDgyYTllZDFkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3Jh
cHBlckJsb2NrRm9ybWF0dGluZ1F1aXJrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9y
bWF0dGluZ1F1aXJrcy5oCkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFRhYmxlV3JhcHBlclF1aXJr
cyA6IHB1YmxpYyBCbG9ja0Zvcm1hdHRpbmdRdWlya3MgewogcHVibGljOgogICAgIFRhYmxlV3Jh
cHBlclF1aXJrcyhjb25zdCBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Jik7CiAK
LSAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBvdmVycmlkZGVuVGFibGVIZWlnaHQoY29uc3QgQ29u
dGFpbmVyQm94JiB0YWJsZUJveCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBvdmVycmlkZGVuVGFi
bGVIZWlnaHQoY29uc3QgQ29udGFpbmVyQm94JiB0YWJsZUJveCkgY29uc3Q7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXgg
MTgwNTc4NjcxN2RlZmI1M2ZhMWI5ZDFiNzYyN2E0ZjYwYjU0NjAyMC4uMDQyZDkwZjA4ZTZiMTc2
ODVjZWVkNTYzNmM0N2FiZWIxYjU0OTc0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTk1LDcgKzE5NSwxMiBAQCB2b2lkIElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywg
TGluZUJ1aWxkZXI6OgogICAgICAgICAvLyAic3BbPC1saW5lIGJyZWFrLT5dbGl0X2NvbnRlbnQi
IC0+IG92ZXJmbG93IGxlbmd0aDogMTEgLT4gbGVhZGluZyBwYXJ0aWFsIGNvbnRlbnQgbGVuZ3Ro
OiAxMS4KICAgICAgICAgYXV0byBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGggPSBwcmV2aW91
c0xpbmUgPyBwcmV2aW91c0xpbmUtPm92ZXJmbG93Q29udGVudExlbmd0aCA6IDA7CiAgICAgICAg
IGF1dG8gbGVhZGluZ0xvZ2ljYWxXaWR0aCA9IHByZXZpb3VzTGluZSA/IHByZXZpb3VzTGluZS0+
b3ZlcmZsb3dMb2dpY2FsV2lkdGggOiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIGF1dG8gaW5pdGlh
bExpbmVDb25zdHJhaW50cyA9IElubGluZVJlY3QgeyBsaW5lTG9naWNhbFRvcCwgY29uc3RyYWlu
dHMuaG9yaXpvbnRhbC5sb2dpY2FsTGVmdCwgY29uc3RyYWludHMuaG9yaXpvbnRhbC5sb2dpY2Fs
V2lkdGgsIHF1aXJrcygpLmluaXRpYWxMaW5lSGVpZ2h0KCkgfTsKKyAgICAgICAgYXV0byBpbml0
aWFsTGluZUhlaWdodCA9IFsmXSgpIC0+IElubGluZUxheW91dFVuaXQgeworICAgICAgICAgICAg
aWYgKGxheW91dFN0YXRlKCkuaW5TdGFuZGFyZHNNb2RlKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHJvb3QoKS5zdHlsZSgpLmNvbXB1dGVkTGluZUhlaWdodCgpOworICAgICAgICAgICAgcmV0
dXJuIElubGluZUZvcm1hdHRpbmdRdWlya3MoKnRoaXMpLmluaXRpYWxMaW5lSGVpZ2h0KCk7Cisg
ICAgICAgIH0oKTsKKyAgICAgICAgYXV0byBpbml0aWFsTGluZUNvbnN0cmFpbnRzID0gSW5saW5l
UmVjdCB7IGxpbmVMb2dpY2FsVG9wLCBjb25zdHJhaW50cy5ob3Jpem9udGFsLmxvZ2ljYWxMZWZ0
LCBjb25zdHJhaW50cy5ob3Jpem9udGFsLmxvZ2ljYWxXaWR0aCwgaW5pdGlhbExpbmVIZWlnaHQg
fTsKICAgICAgICAgYXV0byBsaW5lQ29udGVudCA9IGxpbmVCdWlsZGVyLmxheW91dElubGluZUNv
bnRlbnQobmVlZHNMYXlvdXRSYW5nZSwgcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoLCBsZWFk
aW5nTG9naWNhbFdpZHRoLCBpbml0aWFsTGluZUNvbnN0cmFpbnRzLCBpc0ZpcnN0TGluZSk7CiAg
ICAgICAgIGF1dG8gbGluZUxvZ2ljYWxSZWN0ID0gY29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRl
bnQobGluZUNvbnRlbnQsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOwogCkBAIC02MTIsMTIgKzYx
Nyw2IEBAIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeSBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
Z2VvbWV0cnkoKSBjb25zdAogICAgIHJldHVybiBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkoKnRo
aXMpOwogfQogCi1JbmxpbmVGb3JtYXR0aW5nUXVpcmtzIElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpxdWlya3MoKSBjb25zdAotewotICAgIHJldHVybiBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzKCp0
aGlzKTsKLQotfQotCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5oCmluZGV4IGY3MzA2Yjk4NDY2NTQ0ZTc5MWQyMDcwODc2MDBlNGUzYzlkM2Q2
MTQuLjBmOTlmOWY5MzRlYzhlZjU5NDRiZmFiOTdjNzVjYzc0NDdkYTcyZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtMzYsNyArMzYsNiBA
QCBuYW1lc3BhY2UgTGF5b3V0IHsKIAogY2xhc3MgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5Owog
Y2xhc3MgSW5saW5lRm9ybWF0dGluZ1N0YXRlOwotY2xhc3MgSW5saW5lRm9ybWF0dGluZ1F1aXJr
czsKIGNsYXNzIEludmFsaWRhdGlvblN0YXRlOwogY2xhc3MgTGluZUJveDsKIApAQCAtNTgsNyAr
NTcsNiBAQCBwcml2YXRlOgogICAgIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgY29tcHV0ZWRJ
bnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgb3ZlcnJpZGU7CiAKICAgICBJbmxpbmVGb3JtYXR0
aW5nR2VvbWV0cnkgZ2VvbWV0cnkoKSBjb25zdDsKLSAgICBJbmxpbmVGb3JtYXR0aW5nUXVpcmtz
IHF1aXJrcygpIGNvbnN0OwogCiAgICAgdm9pZCBsaW5lTGF5b3V0KElubGluZUl0ZW1zJiwgTGlu
ZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5nZSwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250
ZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0
cnkuY3BwCmluZGV4IGQ1ZTMyMGY1MjdkNWVkYjY3ZTUwMTJmNDUxN2UzN2UwNDFjOGVlYzMuLmY4
ZjQ3NTFmNTk1NzMwZDJhMjVmZTgwOTc0YWNlMzRkYjE3YmY4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcApAQCAtMzAsNiArMzAsNyBA
QAogCiAjaW5jbHVkZSAiRmxvYXRpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRm9ybWF0dGluZ0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmgiCiAjaW5jbHVkZSAi
SW5saW5lTGluZUJveC5oIgogI2luY2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxheW91
dENvbnRhaW5lckJveC5oIgpAQCAtNzI2LDYgKzcyNywyMSBAQCBDb250ZW50SGVpZ2h0QW5kTWFy
Z2luIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lQmxvY2tDb250ZW50SGVpZ2h0QW5k
TWFyZwogICAgIHJldHVybiBjb21wbGljYXRlZENhc2VzKGxheW91dEJveCwgaG9yaXpvbnRhbENv
bnN0cmFpbnRzLCBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMpOwogfQogCitib29sIElubGluZUZv
cm1hdHRpbmdHZW9tZXRyeTo6aW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveChjb25zdCBMaW5l
Qm94OjpJbmxpbmVMZXZlbEJveCYgaW5saW5lTGV2ZWxCb3gsIGNvbnN0IExpbmVCb3gmIGxpbmVC
b3gpIGNvbnN0Cit7CisgICAgaWYgKGlubGluZUxldmVsQm94LmlzSW5saW5lQm94KCkgfHwgaW5s
aW5lTGV2ZWxCb3guaXNMaW5lQnJlYWtCb3goKSkKKyAgICAgICAgcmV0dXJuIGxheW91dFN0YXRl
KCkuaW5TdGFuZGFyZHNNb2RlKCkgPyB0cnVlIDogSW5saW5lRm9ybWF0dGluZ1F1aXJrcyhmb3Jt
YXR0aW5nQ29udGV4dCgpKS5pbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KGlubGluZUxldmVs
Qm94LCBsaW5lQm94KTsKKyAgICBpZiAoaW5saW5lTGV2ZWxCb3guaXNBdG9taWNJbmxpbmVMZXZl
bEJveCgpKSB7CisgICAgICAgIGlmIChpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5oZWln
aHQoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAvLyBXaGlsZSBpbiBwcmFj
dGljZSB3aGVuIHRoZSBuZWdhdGl2ZSB2ZXJ0aWNhbCBtYXJnaW4gbWFrZXMgdGhlIGxheW91dCBi
b3VuZHMgZW1wdHkgKGUuZzogaGVpZ2h0OiAxMDBweDsgbWFyZ2luLXRvcDogLTEwMHB4OyksIGFu
ZCB0aGlzIGlubGluZQorICAgICAgICAvLyBsZXZlbCBib3ggY29udHJpYnV0ZXMgMHB4IHRvIHRo
ZSBsaW5lIGJveCBoZWlnaHQsIGl0IHN0aWxsIG5lZWRzIHRvIGJlIHRha2VuIGludG8gYWNjb3Vu
dCB3aGlsZSBjb21wdXRpbmcgbGluZSBib3ggZ2VvbWV0cmllcy4KKyAgICAgICAgYXV0byYgYm94
R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGlubGluZUxldmVs
Qm94LmxheW91dEJveCgpKTsKKyAgICAgICAgcmV0dXJuIGJveEdlb21ldHJ5Lm1hcmdpbkJlZm9y
ZSgpIHx8IGJveEdlb21ldHJ5Lm1hcmdpbkFmdGVyKCk7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKwogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5oCmluZGV4IGVkNDlhZTkyNTAxZTE2NWQwOGI2MzdiMjRjMzU2MTY3Yjc5YWVjNzYu
LjgzZmQ4NGNiMDUzZDdkYTRjNmI0YjViYzJiZGM1NzdmZTYxMTViMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdHZW9tZXRyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oCkBAIC00Miw2ICs0Miw4IEBA
IHB1YmxpYzoKICAgICBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIGlubGluZUJsb2NrQ29udGVudEhl
aWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBj
b25zdCBPdmVycmlkZGVuVmVydGljYWxWYWx1ZXMmKSBjb25zdDsKICAgICBDb250ZW50V2lkdGhB
bmRNYXJnaW4gaW5saW5lQmxvY2tDb250ZW50V2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29u
c3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGRlbkhvcml6b250YWxWYWx1
ZXMmKTsKIAorICAgIGJvb2wgaW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveChjb25zdCBMaW5l
Qm94OjpJbmxpbmVMZXZlbEJveCYsIGNvbnN0IExpbmVCb3gmKSBjb25zdDsKKwogcHJpdmF0ZToK
ICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBj
b25zdCB7IHJldHVybiBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nQ29udGV4dD4oRm9ybWF0dGlu
Z0dlb21ldHJ5Ojpmb3JtYXR0aW5nQ29udGV4dCgpKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCmluZGV4IGIzODZjMWVmMDYyMzIxYzI2OWM5
MWIxZTQ0NzFhNDQwMTU5Y2FjMWUuLmVjYWE5MWEwMDU1ZWU2NTM4OWZmOGRmNmI5NzEwMDY3NGVm
NDc4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3Mu
Y3BwCkBAIC00MCwxOCArNDAsMTYgQEAgSW5saW5lRm9ybWF0dGluZ1F1aXJrczo6SW5saW5lRm9y
bWF0dGluZ1F1aXJrcyhjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW4KIAogSW5saW5l
TGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzOjppbml0aWFsTGluZUhlaWdodCgpIGNv
bnN0CiB7CisgICAgQVNTRVJUKCFsYXlvdXRTdGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpKTsKICAg
ICAvLyBOZWdhdGl2ZSBsaW5lSGVpZ2h0IHZhbHVlIG1lYW5zIHRoZSBsaW5lLWhlaWdodCBpcyBu
b3Qgc2V0Ci0gICAgYXV0byYgcm9vdCA9IGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpOwotICAg
IGlmIChsYXlvdXRTdGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpIHx8ICFyb290LnN0eWxlKCkubGlu
ZUhlaWdodCgpLmlzTmVnYXRpdmUoKSkKLSAgICAgICAgcmV0dXJuIHJvb3Quc3R5bGUoKS5jb21w
dXRlZExpbmVIZWlnaHQoKTsKLSAgICByZXR1cm4gcm9vdC5zdHlsZSgpLmZvbnRNZXRyaWNzKCku
ZmxvYXRIZWlnaHQoKTsKKyAgICBhdXRvJiByb290U3R5bGUgPSBmb3JtYXR0aW5nQ29udGV4dCgp
LnJvb3QoKS5zdHlsZSgpOworICAgIHJldHVybiByb290U3R5bGUubGluZUhlaWdodCgpLmlzTmVn
YXRpdmUoKSA/IHJvb3RTdHlsZS5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCkgOiByb290U3R5
bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCk7CiB9CiAKIGJvb2wgSW5saW5lRm9ybWF0dGluZ1F1aXJr
czo6aW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveChjb25zdCBMaW5lQm94OjpJbmxpbmVMZXZl
bEJveCYgaW5saW5lTGV2ZWxCb3gsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gpIGNvbnN0CiB7Cisg
ICAgQVNTRVJUKCFsYXlvdXRTdGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpKTsKICAgICBpZiAoaW5s
aW5lTGV2ZWxCb3guaXNMaW5lQnJlYWtCb3goKSkgewotICAgICAgICBpZiAobGF5b3V0U3RhdGUo
KS5pblN0YW5kYXJkc01vZGUoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAv
LyBJbiBxdWlya3MgbW9kZSBsaW5lYnJlYWsgYm94ZXMgKDxicj4pIHN0b3AgYWZmZWN0aW5nIHRo
ZSBsaW5lIGJveCB3aGVuIChhc3N1bWUgPGJyPiBpcyBuZXN0ZWQgZS5nLiA8c3BhbiBzdHlsZT0i
Zm9udC1zaXplOiAxMDBweCI+PGJyPjwvc3Bhbj4pCiAgICAgICAgIC8vIDEuIHRoZSByb290IGlu
bGluZSBib3ggaGFzIGNvbnRlbnQgPGRpdj5jb250ZW50PGJyPi9kaXY+CiAgICAgICAgIC8vIDIu
IHRoZXJlJ3MgYXQgbGVhc3Qgb25lIGF0b21pYyBpbmxpbmUgbGV2ZWwgYm94IG9uIHRoZSBsaW5l
IGUuZyA8ZGl2PjxpbWc+PGJyPjwvZGl2PiBvciA8ZGl2PjxzcGFuPjxpbWc+PC9zcGFuPjxicj48
L2Rpdj4KQEAgLTc0LDggKzcyLDcgQEAgYm9vbCBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzOjppbmxp
bmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KGNvbnN0IExpbmVCb3g6OklubGluZUwKICAgICB9CiAg
ICAgaWYgKGlubGluZUxldmVsQm94LmlzSW5saW5lQm94KCkpIHsKICAgICAgICAgLy8gSW5saW5l
IGJveGVzIChlLmcuIHJvb3QgaW5saW5lIGJveCBvciA8c3Bhbj4pIGFmZmVjdHMgbGluZSBib3hl
cyBlaXRoZXIgdGhyb3VnaCB0aGUgc3RydXQgb3IgYWN0dWFsIGNvbnRlbnQuCi0gICAgICAgIGF1
dG8gaW5saW5lQm94SGFzSW1hZ2luYXJ5U3RydXQgPSBsYXlvdXRTdGF0ZSgpLmluU3RhbmRhcmRz
TW9kZSgpOwotICAgICAgICBpZiAoaW5saW5lTGV2ZWxCb3guaGFzQ29udGVudCgpIHx8IGlubGlu
ZUJveEhhc0ltYWdpbmFyeVN0cnV0KQorICAgICAgICBpZiAoaW5saW5lTGV2ZWxCb3guaGFzQ29u
dGVudCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChpbmxpbmVMZXZl
bEJveC5pc1Jvb3RJbmxpbmVCb3goKSkgewogICAgICAgICAgICAgLy8gVGhpcyByb290IGlubGlu
ZSBib3ggaGFzIG5vIGRpcmVjdCB0ZXh0IGNvbnRlbnQgYW5kIHdlIGFyZSBpbiBub24tc3RhbmRh
cmRzIG1vZGUuCkBAIC05NCwxNCArOTEsNyBAQCBib29sIElubGluZUZvcm1hdHRpbmdRdWlya3M6
OmlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3goY29uc3QgTGluZUJveDo6SW5saW5lTAogICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKGlubGluZUxldmVs
Qm94LmlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSkgewotICAgICAgICBpZiAoaW5saW5lTGV2ZWxC
b3gubGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgLy8gV2hpbGUgaW4gcHJhY3RpY2Ugd2hlbiB0aGUgbmVnYXRpdmUgdmVydGljYWwgbWFy
Z2luIG1ha2VzIHRoZSBsYXlvdXQgYm91bmRzIGVtcHR5IChlLmc6IGhlaWdodDogMTAwcHg7IG1h
cmdpbi10b3A6IC0xMDBweDspLCBhbmQgdGhpcyBpbmxpbmUKLSAgICAgICAgLy8gbGV2ZWwgYm94
IGNvbnRyaWJ1dGVzIDBweCB0byB0aGUgbGluZSBib3ggaGVpZ2h0LCBpdCBzdGlsbCBuZWVkcyB0
byBiZSB0YWtlbiBpbnRvIGFjY291bnQgd2hpbGUgY29tcHV0aW5nIGxpbmUgYm94IGdlb21ldHJp
ZXMuCi0gICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9t
ZXRyeUZvckJveChpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3goKSk7Ci0gICAgICAgIHJldHVybiBi
b3hHZW9tZXRyeS5tYXJnaW5CZWZvcmUoKSB8fCBib3hHZW9tZXRyeS5tYXJnaW5BZnRlcigpOwot
ICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuaAppbmRleCA3YmZm
M2ZiZjU4MGE5OWRlYjA3ODYwMDA0MjhjZmZiNzljOTU4OWIwLi5kOTI3YTA4NDc0NjA4MzA2Njkx
Y2FmOWVmOTFhNTUzNGQ3OTBjMDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9y
bWF0dGluZ1F1aXJrcy5oCkBAIC0zOSwxMSArMzksNiBAQCBwdWJsaWM6CiAgICAgSW5saW5lTGF5
b3V0VW5pdCBpbml0aWFsTGluZUhlaWdodCgpIGNvbnN0OwogICAgIGJvb2wgaGFzU29mdFdyYXBP
cHBvcnR1bml0eUF0SW1hZ2UoKSBjb25zdDsKICAgICBib29sIGlubGluZUxldmVsQm94QWZmZWN0
c0xpbmVCb3goY29uc3QgTGluZUJveDo6SW5saW5lTGV2ZWxCb3gmLCBjb25zdCBMaW5lQm94Jikg
Y29uc3Q7Ci0KLXByaXZhdGU6Ci0KLSAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYg
Zm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dD4oRm9ybWF0dGluZ1F1aXJrczo6Zm9ybWF0dGluZ0NvbnRleHQoKSk7IH0KLQog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAK
aW5kZXggNGYwNmIyOWRjNjQ4YjE3MjNkMjRjNzNmOTg1NjViNzg0MDkzZTY5Yy4uOWEyMDU4NTM5
MjU3ZDNhOTAxY2IzY2FjMTczZmQzYWFlOTFmYjAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxl
L1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAi
TGF5b3V0Q29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dEluaXRpYWxDb250YWluaW5nQmxvY2su
aCIKICNpbmNsdWRlICJUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeS5oIgotI2luY2x1ZGUgIlRhYmxl
Rm9ybWF0dGluZ1F1aXJrcy5oIgogI2luY2x1ZGUgIlRhYmxlRm9ybWF0dGluZ1N0YXRlLmgiCiAj
aW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtNTIxLDEyICs1MjAsNiBAQCBU
YWJsZUZvcm1hdHRpbmdHZW9tZXRyeSBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpnZW9tZXRyeSgp
IGNvbnN0CiAgICAgcmV0dXJuIFRhYmxlRm9ybWF0dGluZ0dlb21ldHJ5KCp0aGlzLCBmb3JtYXR0
aW5nU3RhdGUoKS50YWJsZUdyaWQoKSk7CiB9CiAKLVRhYmxlRm9ybWF0dGluZ1F1aXJrcyBUYWJs
ZUZvcm1hdHRpbmdDb250ZXh0OjpxdWlya3MoKSBjb25zdAotewotICAgIHJldHVybiBUYWJsZUZv
cm1hdHRpbmdRdWlya3MoKnRoaXMpOwotfQotCi0KIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxl
L1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCA1OWU4Y2VjOWJiZjg2MDA3YTZmMmFhMzAx
YWYwZWFiZGM0NjQ4ZjEyLi4yYjFmMGFiOTRhMzE0MDJhZjM0YWE4YWNjZGFjMDMyYmNhY2EyYTMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3Rh
YmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtMzgs
NyArMzgsNiBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIAogY2xhc3MgSW52YWxpZGF0aW9uU3RhdGU7
CiBjbGFzcyBUYWJsZUZvcm1hdHRpbmdHZW9tZXRyeTsKLWNsYXNzIFRhYmxlRm9ybWF0dGluZ1F1
aXJrczsKIAogLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBsYXlvdXQgbG9naWMgZm9yIHRh
YmxlIGZvcm1hdHRpbmcgY29udGV4dHMuCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjIv
dGFibGVzLmh0bWwKQEAgLTc5LDcgKzc4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVB
bmREaXN0cmlidXRlRXh0cmFTcGFjZShMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFj
ZSwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYXZhaWxhYmxlVmVydGljYWxTcGFjZSk7CiAKICAgICBU
YWJsZUZvcm1hdHRpbmdHZW9tZXRyeSBnZW9tZXRyeSgpIGNvbnN0OwotICAgIFRhYmxlRm9ybWF0
dGluZ1F1aXJrcyBxdWlya3MoKSBjb25zdDsKICAgICBjb25zdCBUYWJsZUZvcm1hdHRpbmdTdGF0
ZSYgZm9ybWF0dGluZ1N0YXRlKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8VGFibGVGb3JtYXR0
aW5nU3RhdGU+KEZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5nU3RhdGUoKSk7IH0KICAgICBU
YWJsZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkgeyByZXR1cm4gZG93bmNhc3Q8
VGFibGVGb3JtYXR0aW5nU3RhdGU+KEZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5nU3RhdGUo
KSk7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnku
Y3BwCmluZGV4IDhkNDZhZWM2NjVhZTI5Yzg5NTk0ZmZkMmVmMDJmYWZhZjJhZDdjYWEuLmI5MTFh
MmFmODI1OTUzNDZmMDQ5NTBhYTFhMjdjODg4Nzc3MTZiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2Vv
bWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
dGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiTGF5b3V0Q29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dERlc2NlbmRhbnRJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkxheW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCIKKyNpbmNsdWRl
ICJUYWJsZUZvcm1hdHRpbmdRdWlya3MuaCIKICNpbmNsdWRlICJUYWJsZUZvcm1hdHRpbmdTdGF0
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCw3ICs0OSw3IEBAIExheW91dFVuaXQg
VGFibGVGb3JtYXR0aW5nR2VvbWV0cnk6OmNlbGxIZWlnaChjb25zdCBDb250YWluZXJCb3gmIGNl
bGxCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGNlbGxCb3guaXNJbkZsb3coKSk7CiAgICAgYXV0
byBjb250ZW50SGVpZ2h0ID0gTGF5b3V0VW5pdCB7IH07Ci0gICAgaWYgKFRhYmxlRm9ybWF0dGlu
Z1F1aXJrcyhmb3JtYXR0aW5nQ29udGV4dCgpKS5zaG91bGRJZ25vcmVDaGlsZENvbnRlbnRWZXJ0
aWNhbE1hcmdpbihjZWxsQm94KSkgeworICAgIGlmIChsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9k
ZSgpICYmIFRhYmxlRm9ybWF0dGluZ1F1aXJrczo6c2hvdWxkSWdub3JlQ2hpbGRDb250ZW50VmVy
dGljYWxNYXJnaW4oY2VsbEJveCkpIHsKICAgICAgICAgQVNTRVJUKGNlbGxCb3guZmlyc3RJbkZs
b3dDaGlsZCgpKTsKICAgICAgICAgYXV0byBmb3JtYXR0aW5nQ29udGV4dCA9IHRoaXMtPmZvcm1h
dHRpbmdDb250ZXh0KCk7CiAgICAgICAgIGF1dG8mIGZpcnN0SW5GbG93Q2hpbGQgPSAqY2VsbEJv
eC5maXJzdEluRmxvd0NoaWxkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1F1aXJrcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGlu
Z1F1aXJrcy5jcHAKaW5kZXggNzczOWM0MWRkNTUwZWQ5OTQwMzNlODNhMzg3ZTZlOGY5ZjhlNTU2
OS4uNjMwZWI4MThhYzEwZDAzZGQ4ZTM2ZTAyYTk2MzRkMjk2OGQyNWIzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1h
dHRpbmdRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nUXVpcmtzLmNwcApAQCAtMzgsMTcgKzM4LDE2IEBA
IG5hbWVzcGFjZSBMYXlvdXQgewogVGFibGVGb3JtYXR0aW5nUXVpcmtzOjpUYWJsZUZvcm1hdHRp
bmdRdWlya3MoY29uc3QgVGFibGVGb3JtYXR0aW5nQ29udGV4dCYgdGFibGVGb3JtYXR0aW5nQ29u
dGV4dCkKICAgICA6IEZvcm1hdHRpbmdRdWlya3ModGFibGVGb3JtYXR0aW5nQ29udGV4dCkKIHsK
KyAgICBBU1NFUlQobGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSk7CiB9CiAKLWJvb2wgVGFi
bGVGb3JtYXR0aW5nUXVpcmtzOjpzaG91bGRJZ25vcmVDaGlsZENvbnRlbnRWZXJ0aWNhbE1hcmdp
bihjb25zdCBDb250YWluZXJCb3gmIGNlbGxCb3gpIGNvbnN0Citib29sIFRhYmxlRm9ybWF0dGlu
Z1F1aXJrczo6c2hvdWxkSWdub3JlQ2hpbGRDb250ZW50VmVydGljYWxNYXJnaW4oY29uc3QgQ29u
dGFpbmVyQm94JiBjZWxsQm94KQogewogICAgIC8vIE5vcm1hbGx5IEJGQyByb290IGNvbnRlbnQg
aGVpZ2h0IHRha2VzIHRoZSBtYXJnaW4gYm94IG9mIHRoZSBjaGlsZCBjb250ZW50IGFzIHZlcnRp
Y2FsIG1hcmdpbnMgZG9uJ3QgY29sbGFwc2Ugd2l0aCBCRkMgcm9vdHMsCiAgICAgLy8gYnV0IHRh
YmxlIGNlbGwgYm94ZXMgZG8gY29sbGFwc2UgdGhlaXIgKG5vbi1leGlzdGluZykgbWFyZ2lucyB3
aXRoIGNoaWxkIHF1aXJrIG1hcmdpbnMgKHNvIG11Y2ggcXVpcmspLCBzbyBoZXJlIHdlIGNoZWNr
CiAgICAgLy8gaWYgdGhlIGNvbnRlbnQgaGVpZ2h0IHNob3VsZCBpbmNsdWRlIG1hcmdpbnMgb3Ig
bm90LgogICAgIC8vIGUuZyA8dGFibGU+PHRyPjx0ZD48cD50ZXh0IGNvbnRlbnQ8L3RkPjwvdHI+
PC90YWJsZT4gPC0gPHA+J3MgcXVpcmsgbWFyZ2luIGNvbGxhcHNlcyB3aXRoIHRoZSA8dGQ+IHNv
IGl0cyBjb250ZW50CiAgICAgLy8gaGVpZ2h0IHNob3VsZCBub3QgaW5jbHVkZSB2ZXJ0aWNhbCBt
YXJnaW5zLgotICAgIGlmICghbGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmIChjZWxsQm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghY2VsbEJveC5oYXNJ
bkZsb3dDaGlsZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdRdWlya3MuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nUXVpcmtzLmgK
aW5kZXggYjJhODQxMDY1NDU0YjEwODYwYTNmYzg2ZTRiODRmMTIwZDIyNzkyYS4uYmFiM2U0ZjZi
MmQyYmM5MjBlOTRlZGViMzM0YjBiZTY2M2Q1ZTkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdRdWlya3Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1Rh
YmxlRm9ybWF0dGluZ1F1aXJrcy5oCkBAIC0zNiwxMCArMzYsNyBAQCBjbGFzcyBUYWJsZUZvcm1h
dHRpbmdRdWlya3MgOiBwdWJsaWMgRm9ybWF0dGluZ1F1aXJrcyB7CiBwdWJsaWM6CiAgICAgVGFi
bGVGb3JtYXR0aW5nUXVpcmtzKGNvbnN0IFRhYmxlRm9ybWF0dGluZ0NvbnRleHQmKTsKIAotICAg
IGJvb2wgc2hvdWxkSWdub3JlQ2hpbGRDb250ZW50VmVydGljYWxNYXJnaW4oY29uc3QgQ29udGFp
bmVyQm94JikgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgY29uc3QgVGFibGVGb3JtYXR0aW5nQ29u
dGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxUYWJsZUZv
cm1hdHRpbmdDb250ZXh0PihGb3JtYXR0aW5nUXVpcmtzOjpmb3JtYXR0aW5nQ29udGV4dCgpKTsg
fQorICAgIHN0YXRpYyBib29sIHNob3VsZElnbm9yZUNoaWxkQ29udGVudFZlcnRpY2FsTWFyZ2lu
KGNvbnN0IENvbnRhaW5lckJveCYpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0
aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwCmluZGV4IGRjZjMzZDQ4NDg0NTJmYjNmYWUzNTFj
MDNkNjM0MGFlYjUwZWMwYmMuLmM2NmI0M2M0ZTA0NDE3YjA3MTg5NzM2YWQzN2NlNDllZjNlZTc2
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5j
cHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkJpZGlSZXNvbHZlci5oIgogI2luY2x1
ZGUgIklubGluZUZvcm1hdHRpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW5saW5lRm9ybWF0dGlu
Z1F1aXJrcy5oIgorI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIgogI2luY2x1
ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIkxheW91dEJveEdlb21ldHJ5
LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmgiCkBAIC0zNjcsNyArMzY3
LDcgQEAgdm9pZCBJbmxpbmVDb250ZW50QnVpbGRlcjo6Y3JlYXRlRGlzcGxheUxpbmVzKGNvbnN0
IExheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXQKIHZvaWQgSW5saW5lQ29udGVudEJ1aWxkZXI6
OmNyZWF0ZURpc3BsYXlOb25Sb290SW5saW5lQm94ZXMoY29uc3QgTGF5b3V0OjpJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIElubGluZUNvbnRlbnQmIGlu
bGluZUNvbnRlbnQpIGNvbnN0CiB7CiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0g
aW5saW5lRm9ybWF0dGluZ0NvbnRleHQuZm9ybWF0dGluZ1N0YXRlKCk7Ci0gICAgYXV0byBpbmxp
bmVRdWlya3MgPSBMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdRdWlya3MgeyBpbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCB9OworICAgIGF1dG8gaW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5ID0gTGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkgeyBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCB9Owog
ICAgIGZvciAoc2l6ZV90IGxpbmVJbmRleCA9IDA7IGxpbmVJbmRleCA8IGlubGluZUZvcm1hdHRp
bmdTdGF0ZS5saW5lQm94ZXMoKS5zaXplKCk7ICsrbGluZUluZGV4KSB7CiAgICAgICAgIGF1dG8m
IGxpbmVCb3ggPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZUJveGVzKClbbGluZUluZGV4XTsK
ICAgICAgICAgaWYgKCFsaW5lQm94Lmhhc0lubGluZUJveCgpKQpAQCAtMzgyLDcgKzM4Miw3IEBA
IHZvaWQgSW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlOb25Sb290SW5saW5lQm94
ZXMoY29uc3QgTGF5b3V0OjpJbmxpbmVGCiAgICAgICAgICAgICBhdXRvIGlubGluZUJveFJlY3Qg
PSBsaW5lQm94LmxvZ2ljYWxCb3JkZXJCb3hGb3JJbmxpbmVCb3gobGF5b3V0Qm94LCBib3hHZW9t
ZXRyeSk7CiAgICAgICAgICAgICBpbmxpbmVCb3hSZWN0Lm1vdmVCeShsaW5lQm94TG9naWNhbFJl
Y3QudG9wTGVmdCgpKTsKIAotICAgICAgICAgICAgaW5saW5lQ29udGVudC5ub25Sb290SW5saW5l
Qm94ZXMuYXBwZW5kKHsgbGluZUluZGV4LCBsYXlvdXRCb3gsIGlubGluZUJveFJlY3QsIGlubGlu
ZVF1aXJrcy5pbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KGlubGluZUxldmVsQm94LCBsaW5l
Qm94KSB9KTsKKyAgICAgICAgICAgIGlubGluZUNvbnRlbnQubm9uUm9vdElubGluZUJveGVzLmFw
cGVuZCh7IGxpbmVJbmRleCwgbGF5b3V0Qm94LCBpbmxpbmVCb3hSZWN0LCBpbmxpbmVGb3JtYXR0
aW5nR2VvbWV0cnkuaW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveChpbmxpbmVMZXZlbEJveCwg
bGluZUJveCkgfSk7CiAgICAgICAgIH0KICAgICB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428773</attachid>
            <date>2021-05-15 21:41:09 -0700</date>
            <delta_ts>2021-05-16 06:51:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225746-20210515214108.patch</filename>
            <type>text/plain</type>
            <size>51145</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTEzYTU4NzkyMGM5ZjU3
NzU0MGRkMzkxZGIyOTk5YzU1ZWQ4YWVhNC4uY2FkYjk1ZmYwNDJhMzhhZGM1MjEyOTFiMDYxZTVj
NzA5MDYzZGVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDIxLTA1LTE1ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXSBDbGVhbnVwIEZvcm1h
dHRpbmdRdWlyayBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjU3NDYKKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4K
KworICAgICAgICBRdWlyayBmdW5jdGlvbnMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gbm90
IGluIHN0YW5kYXJkcyBtb2RlLgorCisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9Gb3JtYXR0aW5nUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0
dGluZ1F1aXJrczo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4ZWRI
ZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nUXVpcmtz
OjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdodCk6IERl
bGV0ZWQuCisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVp
cmtzLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdRdWlya3M6OmxheW91
dFN0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ1F1aXJr
czo6bGF5b3V0U3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnF1aXJrcyBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9C
bG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJs
b2NrRm9ybWF0dGluZ0dlb21ldHJ5OjppbkZsb3dDb250ZW50SGVpZ2h0QW5kTWFyZ2luKToKKyAg
ICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1
aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ1F1aXJr
czo6QmxvY2tGb3JtYXR0aW5nUXVpcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6bmVl
ZHNTdHJldGNoaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5n
UXVpcmtzOjpzdHJldGNoZWRJbkZsb3dIZWlnaHRJZkFwcGxpY2FibGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZElnbm9yZUNv
bGxhcHNlZFF1aXJrTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nUXVpcmtzOjpzaG91bGRDb2xsYXBzZU1hcmdpbkJlZm9yZVdpdGhQYXJlbnRNYXJnaW5C
ZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdRdWlya3M6
OnNob3VsZENvbGxhcHNlTWFyZ2luQWZ0ZXJXaXRoUGFyZW50TWFyZ2luQWZ0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdRdWlya3M6Om5lZWRzU3RyZXRjaGlu
ZyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0
dGluZ1F1aXJrczo6c3RyZXRjaGVkSW5GbG93SGVpZ2h0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nUXVpcmtzOjpzaG91bGRJZ25vcmVDb2xsYXBz
ZWRRdWlya01hcmdpbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c2hvdWxkQ29sbGFwc2VNYXJnaW5CZWZvcmVXaXRoUGFy
ZW50TWFyZ2luQmVmb3JlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6QmxvY2tGb3JtYXR0aW5nUXVpcmtzOjpzaG91bGRDb2xsYXBzZU1hcmdpbkFmdGVyV2l0aFBh
cmVudE1hcmdpbkFmdGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5oOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OmZvcm1hdHRpbmdDb250ZXh0IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2Nr
L0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a01hcmdpbkNvbGxhcHNlOjptYXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQmVm
b3JlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tNYXJnaW5Db2xsYXBz
ZTo6bWFyZ2luQWZ0ZXJDb2xsYXBzZXNXaXRoUGFyZW50TWFyZ2luQWZ0ZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja01hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNv
bGxhcHNlc1dpdGhMYXN0SW5GbG93Q2hpbGRNYXJnaW5BZnRlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrTWFyZ2luQ29sbGFwc2U6OnBvc2l0aXZlTmVnYXRpdmVNYXJn
aW5CZWZvcmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja01hcmdpbkNv
bGxhcHNlOjpxdWlya3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5oOgorICAgICAgICAqIGxheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svUHJlY29tcHV0ZWRCbG9ja01hcmdpbkNvbGxhcHNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tNYXJnaW5Db2xsYXBzZTo6cHJl
Y29tcHV0ZWRQb3NpdGl2ZU5lZ2F0aXZlTWFyZ2luQmVmb3JlIGNvbnN0KToKKyAgICAgICAgKiBs
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFi
bGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbkZv
clRhYmxlQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVXcmFwcGVyQmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6cXVpcmtzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVXcmFwcGVyUXVpcmtzOjpUYWJsZVdy
YXBwZXJRdWlya3MpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZVdyYXBwZXJRdWly
a3M6Om92ZXJyaWRkZW5UYWJsZUhlaWdodCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0
aW5nUXVpcmtzLmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpxdWlya3MgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjppbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94IGNv
bnN0KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVG
b3JtYXR0aW5nR2VvbWV0cnkuaDoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ1F1aXJrczo6aW5pdGlhbExpbmVIZWlnaHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nUXVpcmtzOjppbmxpbmVM
ZXZlbEJveEFmZmVjdHNMaW5lQm94IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmg6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdRdWlya3M6OmZvcm1hdHRpbmdDb250ZXh0IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxl
L1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpU
YWJsZUZvcm1hdHRpbmdDb250ZXh0OjpxdWlya3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAq
IGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5o
OgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0
aW5nR2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRp
bmdHZW9tZXRyeTo6Y2VsbEhlaWdoIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1F1aXJrcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ1F1aXJrczo6VGFibGVGb3JtYXR0aW5nUXVpcmtz
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVGb3JtYXR0aW5nUXVpcmtzOjpzaG91
bGRJZ25vcmVDaGlsZENvbnRlbnRWZXJ0aWNhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OlRhYmxlRm9ybWF0dGluZ1F1aXJrczo6c2hvdWxkSWdub3JlQ2hpbGRDb250ZW50VmVy
dGljYWxNYXJnaW4gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nUXVpcmtzLmg6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ1F1aXJrczo6Zm9ybWF0dGluZ0NvbnRleHQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bklubGluZUNvbnRlbnRCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVn
cmF0aW9uOjpJbmxpbmVDb250ZW50QnVpbGRlcjo6Y3JlYXRlRGlzcGxheU5vblJvb3RJbmxpbmVC
b3hlcyBjb25zdCk6CisKIDIwMjEtMDUtMTUgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtMRkNdIE1ha2UgcmVkdW5kYW50IHB1YmxpYyBoZWxwZXJzIHByaXZhdGUg
aW4gRm9ybWF0dGluZ0NvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdRdWlya3MuY3BwCmluZGV4IDUzMGUy
MTIzOTQwMjkwYWY4NWY3MTM2ZDljNzZkZGZhYjdkOTA5NDYuLmQ1NjhhZWVjMWY1YTY4MjkzNmQ0
NmJiZTUyZmY2OTRlNGIxNjBmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmNwcApAQCAtNDAs
NyArNDAsNyBAQCBGb3JtYXR0aW5nUXVpcmtzOjpGb3JtYXR0aW5nUXVpcmtzKGNvbnN0IEZvcm1h
dHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCkKIHsKIH0KIAotTGF5b3V0VW5pdCBGb3Jt
YXR0aW5nUXVpcmtzOjpoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhl
ZEhlaWdodChjb25zdCBCb3gmIGxheW91dEJveCkKK0xheW91dFVuaXQgRm9ybWF0dGluZ1F1aXJr
czo6aGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4ZWRIZWlnaHQoY29u
c3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiB7CiAgICAgLy8gSW4gcXVpcmtzIG1vZGUsIHdlIGdv
IGFuZCB0cmF2ZXJzIHRoZSBjb250YWluaW5nIGJsb2NrIGNoYWluIHRvIGZpbmQgYSBibG9jayBs
ZXZlbCBib3ggd2l0aCBmaXhlZCBoZWlnaHQgdmFsdWUsIGV2ZW4gaWYgaXQgbWVhbnMgbGVhdmlu
ZwogICAgIC8vIHRoZSBjdXJyZW50IGZvcm1hdHRpbmcgY29udGV4dC4gRklYTUU6IHN1cmVseSB3
ZSBuZWVkIHRvIGRvIHNvbWUgdHJpY2tzIGhlcmUgd2hlbiBibG9jayBkaXJlY3Rpb24gc3VwcG9y
dCBpcyBhZGRlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvRm9ybWF0dGluZ1F1aXJrcy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmgKaW5kZXggNWExZGM3ZDU4YjNiZDMwZjBm
YTAyNGEwNzFlNzg3NmFiNTJhMTRmYS4uMzNmMGQ4MjQxMmJhNWViOWY5OTRmOGU5NmVjODA3ZjI5
MzA2YTA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nUXVpcmtzLmgKQEAgLTM2LDExICszNiwxMCBAQCBjbGFz
cyBGb3JtYXR0aW5nUXVpcmtzIHsKIHB1YmxpYzoKICAgICBGb3JtYXR0aW5nUXVpcmtzKGNvbnN0
IEZvcm1hdHRpbmdDb250ZXh0Jik7CiAKLSAgICBMYXlvdXRVbml0IGhlaWdodFZhbHVlT2ZOZWFy
ZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZpeGVkSGVpZ2h0KGNvbnN0IEJveCYpOworICAgIExheW91
dFVuaXQgaGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4ZWRIZWlnaHQo
Y29uc3QgQm94JikgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBjb25zdCBMYXlvdXRTdGF0ZSYg
bGF5b3V0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdDb250ZXh0LmxheW91dFN0
YXRlKCk7IH0KLSAgICBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSB7IHJldHVybiBtX2Zvcm1h
dHRpbmdDb250ZXh0LmxheW91dFN0YXRlKCk7IH0KICAgICBjb25zdCBGb3JtYXR0aW5nQ29udGV4
dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdDb250ZXh0
OyB9CiAKICAgICBjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYgbV9mb3JtYXR0aW5nQ29udGV4dDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxv
Y2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDQ2
MDAzNmE5NzQyZDQxMDgwM2RlY2Q5NTgwMTRiOGEzNjM1M2EwYWYuLjc0MThkMDI5Mjk3YmM4YTMy
MTlkZTYwMWU4ZTg0ZDc1OTY4MDY5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zv
cm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShMQVlPVVRf
Rk9STUFUVElOR19DT05URVhUKQogCiAjaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nR2VvbWV0cnku
aCIKLSNpbmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdRdWlya3MuaCIKICNpbmNsdWRlICJCbG9ja0Zv
cm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIkJsb2NrTWFyZ2luQ29sbGFwc2UuaCIKICNpbmNs
dWRlICJGbG9hdGluZ0NvbnRleHQuaCIKQEAgLTYxMiwxMSArNjExLDYgQEAgQmxvY2tNYXJnaW5D
b2xsYXBzZSBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjptYXJnaW5Db2xsYXBzZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIEJsb2NrTWFyZ2luQ29sbGFwc2UoKnRoaXMpOwogfQogCi1CbG9ja0Zvcm1hdHRp
bmdRdWlya3MgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cXVpcmtzKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gQmxvY2tGb3JtYXR0aW5nUXVpcmtzKCp0aGlzKTsKLX0KLQogfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDdkODZiMWM1MDFkYjg4
MWE0OWEyMWE2MDJmMGZkMGU4OTZkNjk4NDYuLjNjYTkwNzViOTQyZDBkYTc3NzhhMjc2MWIyOTZh
ODQzNDA0MTg4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4
dC5oCkBAIC00MCw3ICs0MCw2IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogCiBjbGFzcyBCb3g7CiBj
bGFzcyBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeTsKLWNsYXNzIEJsb2NrRm9ybWF0dGluZ1F1aXJr
czsKIGNsYXNzIEJsb2NrTWFyZ2luQ29sbGFwc2U7CiBjbGFzcyBGbG9hdGluZ0NvbnRleHQ7CiAK
QEAgLTgyLDcgKzgxLDYgQEAgcHJvdGVjdGVkOgogCiAgICAgQmxvY2tGb3JtYXR0aW5nU3RhdGUm
IGZvcm1hdHRpbmdTdGF0ZSgpIHsgcmV0dXJuIGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0YXRl
PihGb3JtYXR0aW5nQ29udGV4dDo6Zm9ybWF0dGluZ1N0YXRlKCkpOyB9CiAgICAgQmxvY2tGb3Jt
YXR0aW5nR2VvbWV0cnkgZ2VvbWV0cnkoKSBjb25zdDsKLSAgICBCbG9ja0Zvcm1hdHRpbmdRdWly
a3MgcXVpcmtzKCkgY29uc3Q7CiAgICAgQmxvY2tNYXJnaW5Db2xsYXBzZSBtYXJnaW5Db2xsYXBz
ZSgpIGNvbnN0OwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nR2VvbWV0
cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9C
bG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKaW5kZXggODIzNjMwODFjN2M3MzIyOGM4YzkxNGQz
MTEwM2JhOTY4YzM5ZmI5Zi4uN2QwYjU2YTFlYzMzZjU5NjdiNTEyNzAyYmU5ZTFiZDkxZTdhZWVm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9i
bG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeS5jcHAK
QEAgLTI4MCwxMSArMjgwLDEwIEBAIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0
aW5nR2VvbWV0cnk6OmluRmxvd0NvbnRlbnRIZWlnaHRBbmRNYXJnaW4oY29uCiAgICAgICAgIGNv
bnRlbnRIZWlnaHRBbmRNYXJnaW4gPSBjb21wbGljYXRlZENhc2VzKGxheW91dEJveCwgaG9yaXpv
bnRhbENvbnN0cmFpbnRzLCBvdmVycmlkZGVuVmVydGljYWxWYWx1ZXMpOwogICAgIH0KIAotICAg
IGF1dG8gcXVpcmtzID0gQmxvY2tGb3JtYXR0aW5nUXVpcmtzIHsgZm9ybWF0dGluZ0NvbnRleHQo
KSB9OwotICAgIGlmICghcXVpcmtzLm5lZWRzU3RyZXRjaGluZyhsYXlvdXRCb3gpKQotICAgICAg
ICByZXR1cm4gY29udGVudEhlaWdodEFuZE1hcmdpbjsKLQotICAgIGNvbnRlbnRIZWlnaHRBbmRN
YXJnaW4uY29udGVudEhlaWdodCA9IHF1aXJrcy5zdHJldGNoZWRJbkZsb3dIZWlnaHQobGF5b3V0
Qm94LCBjb250ZW50SGVpZ2h0QW5kTWFyZ2luKTsKKyAgICBpZiAobGF5b3V0U3RhdGUoKS5pblF1
aXJrc01vZGUoKSkgeworICAgICAgICBpZiAoYXV0byBzdHJldGNoZWRJbkZsb3dIZWlnaHQgPSBC
bG9ja0Zvcm1hdHRpbmdRdWlya3MoZm9ybWF0dGluZ0NvbnRleHQoKSkuc3RyZXRjaGVkSW5GbG93
SGVpZ2h0SWZBcHBsaWNhYmxlKGxheW91dEJveCwgY29udGVudEhlaWdodEFuZE1hcmdpbikpCisg
ICAgICAgICAgICBjb250ZW50SGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRIZWlnaHQgPSAqc3RyZXRj
aGVkSW5GbG93SGVpZ2h0OworICAgIH0KIAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5n
Q29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbSGVpZ2h0XVtNYXJnaW5dIC0+IGluZmxvdyBub24t
cmVwbGFjZWQgLT4gc3RyZWNoZWQgdG8gdmlld3BvcnQgLT4gaGVpZ2h0KCIgPDwgY29udGVudEhl
aWdodEFuZE1hcmdpbi5jb250ZW50SGVpZ2h0IDw8ICJweCkgbWFyZ2luKCIgPDwgY29udGVudEhl
aWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW4uYmVmb3JlIDw8ICJweCwgIiA8PCBjb250
ZW50SGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbi5hZnRlciA8PCAicHgpIC0+IGxh
eW91dEJveCgiIDw8ICZsYXlvdXRCb3ggPDwgIikiKTsKICAgICByZXR1cm4gY29udGVudEhlaWdo
dEFuZE1hcmdpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNw
cAppbmRleCBiNTRkNTI3NTViMzg2NDZmMWI3ZGQwMjc0ZGU1MDRhM2VkZmZjNjVjLi5iZWQyOTkw
MjAyYzNhNWM4OThhNmU3MmUyZWUyNjQwMmVhMjdiMzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJr
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9j
ay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwCkBAIC00NywyNSArNDcsMjMgQEAgc3RhdGljIGJv
b2wgaXNRdWlya0NvbnRhaW5lcihjb25zdCBCb3gmIGxheW91dEJveCkKIEJsb2NrRm9ybWF0dGlu
Z1F1aXJrczo6QmxvY2tGb3JtYXR0aW5nUXVpcmtzKGNvbnN0IEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQmIGJsb2NrRm9ybWF0dGluZ0NvbnRleHQpCiAgICAgOiBGb3JtYXR0aW5nUXVpcmtzKGJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQpCiB7CisgICAgQVNTRVJUKGxheW91dFN0YXRlKCkuaW5RdWlya3NN
b2RlKCkpOwogfQogCi1ib29sIEJsb2NrRm9ybWF0dGluZ1F1aXJrczo6bmVlZHNTdHJldGNoaW5n
KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAorc3RhdGljIGJvb2wgbmVlZHNTdHJldGNoaW5n
KGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNJbkZsb3co
KSk7CiAgICAgLy8gSW4gcXVpcmtzIG1vZGUsIGluLWZsb3cgYm9keSBhbmQgaHRtbCBzdHJldGNo
IHRvIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sgKGhlaWdodDogYXV0byBvbmx5KS4KLSAg
ICBpZiAoIWxheW91dFN0YXRlKCkuaW5RdWlya3NNb2RlKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQogICAgIGlmICghbGF5b3V0Qm94LmlzRG9jdW1lbnRCb3goKSAmJiAhbGF5b3V0Qm94Lmlz
Qm9keUJveCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICByZXR1cm4gbGF5b3V0Qm94
LnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzQXV0bygpOwogfQogCi1MYXlvdXRVbml0IEJsb2Nr
Rm9ybWF0dGluZ1F1aXJrczo6c3RyZXRjaGVkSW5GbG93SGVpZ2h0KGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4pCitPcHRp
b25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnN0cmV0Y2hlZEluRmxvd0hl
aWdodElmQXBwbGljYWJsZShjb25zdCBCb3gmIGxheW91dEJveCwgQ29udGVudEhlaWdodEFuZE1h
cmdpbiBjb250ZW50SGVpZ2h0QW5kTWFyZ2luKSBjb25zdAogewotICAgIEFTU0VSVChuZWVkc1N0
cmV0Y2hpbmcobGF5b3V0Qm94KSk7Ci0gICAgYXV0byYgZm9ybWF0dGluZ0NvbnRleHQgPSB0aGlz
LT5mb3JtYXR0aW5nQ29udGV4dCgpOworICAgIGlmICghbmVlZHNTdHJldGNoaW5nKGxheW91dEJv
eCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byYgZm9ybWF0dGluZ0NvbnRleHQgPSBk
b3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Pih0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgp
KTsKICAgICBhdXRvIG5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luID0gY29udGVudEhlaWdodEFu
ZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW4uYmVmb3JlICsgY29udGVudEhlaWdodEFuZE1hcmdp
bi5ub25Db2xsYXBzZWRNYXJnaW4uYWZ0ZXI7CiAKICAgICBpZiAobGF5b3V0Qm94LmlzRG9jdW1l
bnRCb3goKSkgewpAQCAtOTksMTYgKzk3LDE2IEBAIExheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5n
UXVpcmtzOjpzdHJldGNoZWRJbkZsb3dIZWlnaHQoY29uc3QgQm94JiBsYXlvdXRCb3gsIENvCiAg
ICAgYm9keUJveENvbnRlbnRIZWlnaHQgLT0gZG9jdW1lbnRCb3hHZW9tZXRyeS52ZXJ0aWNhbEJv
cmRlcigpICsgZG9jdW1lbnRCb3hHZW9tZXRyeS52ZXJ0aWNhbFBhZGRpbmcoKS52YWx1ZU9yKDAp
OwogICAgIC8vIEhvd2V2ZXIgdGhlIG5vbi1pbi1mbG93IGRvY3VtZW50IGJveCdzIHZlcnRpY2Fs
IG1hcmdpbnMgYXJlIGlnbm9yZWQuIFRoZXkgZG9uJ3QgYWZmZWN0IHRoZSBib2R5IGJveCdzIGNv
bnRlbnQgaGVpZ2h0LgogICAgIGlmIChkb2N1bWVudEJveC5pc0luRmxvdygpKSB7Ci0gICAgICAg
IGF1dG8gZ2VvbWV0cnkgPSBCbG9ja0Zvcm1hdHRpbmdHZW9tZXRyeSB7IGZvcm1hdHRpbmdDb250
ZXh0IH07Ci0gICAgICAgIGF1dG8gcHJlY29tcHV0ZURvY3VtZW50Qm94VmVydGljYWxNYXJnaW4g
PSBnZW9tZXRyeS5jb21wdXRlZFZlcnRpY2FsTWFyZ2luKGRvY3VtZW50Qm94LCBnZW9tZXRyeS5j
b25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoaW5pdGlhbENvbnRhaW5pbmdCbG9jaywgRm9ybWF0
dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6Qm9keVN0cmV0Y2hlc1RvVmlld3BvcnRRdWlyayku
aG9yaXpvbnRhbCk7CisgICAgICAgIGF1dG8gZm9ybWF0dGluZ0dlb21ldHJ5ID0gQmxvY2tGb3Jt
YXR0aW5nR2VvbWV0cnkgeyBmb3JtYXR0aW5nQ29udGV4dCB9OworICAgICAgICBhdXRvIHByZWNv
bXB1dGVEb2N1bWVudEJveFZlcnRpY2FsTWFyZ2luID0gZm9ybWF0dGluZ0dlb21ldHJ5LmNvbXB1
dGVkVmVydGljYWxNYXJnaW4oZG9jdW1lbnRCb3gsIGZvcm1hdHRpbmdHZW9tZXRyeS5jb25zdHJh
aW50c0ZvckluRmxvd0NvbnRlbnQoaW5pdGlhbENvbnRhaW5pbmdCbG9jaywgRm9ybWF0dGluZ0Nv
bnRleHQ6OkVzY2FwZVJlYXNvbjo6Qm9keVN0cmV0Y2hlc1RvVmlld3BvcnRRdWlyaykuaG9yaXpv
bnRhbCk7CiAgICAgICAgIGJvZHlCb3hDb250ZW50SGVpZ2h0IC09IHByZWNvbXB1dGVEb2N1bWVu
dEJveFZlcnRpY2FsTWFyZ2luLmJlZm9yZS52YWx1ZU9yKDApICsgcHJlY29tcHV0ZURvY3VtZW50
Qm94VmVydGljYWxNYXJnaW4uYWZ0ZXIudmFsdWVPcigwKTsKICAgICB9CiAgICAgcmV0dXJuIHN0
ZDo6bWF4KGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4uY29udGVudEhlaWdodCwgIGJvZHlCb3hDb250
ZW50SGVpZ2h0KTsKIH0KIAotYm9vbCBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZElnbm9y
ZUNvbGxhcHNlZFF1aXJrTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAorYm9vbCBC
bG9ja0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZElnbm9yZUNvbGxhcHNlZFF1aXJrTWFyZ2luKGNv
bnN0IEJveCYgbGF5b3V0Qm94KQogewotICAgIHJldHVybiBsYXlvdXRTdGF0ZSgpLmluUXVpcmtz
TW9kZSgpICYmIGlzUXVpcmtDb250YWluZXIobGF5b3V0Qm94KTsKKyAgICByZXR1cm4gaXNRdWly
a0NvbnRhaW5lcihsYXlvdXRCb3gpOwogfQogCiBlbnVtIGNsYXNzIFZlcnRpY2FsTWFyZ2luIHsg
QmVmb3JlLCBBZnRlciB9OwpAQCAtMTIwLDE0ICsxMTgsMTQgQEAgc3RhdGljIGlubGluZSBib29s
IGhhc1F1aXJrTWFyZ2luVG9Db2xsYXBzZShjb25zdCBCb3gmIGxheW91dEJveCwgVmVydGljYWxN
YXJnaW4KICAgICByZXR1cm4gKHZlcnRpY2FsTWFyZ2luID09IFZlcnRpY2FsTWFyZ2luOjpCZWZv
cmUgJiYgc3R5bGUuaGFzTWFyZ2luQmVmb3JlUXVpcmsoKSkgfHwgKHZlcnRpY2FsTWFyZ2luID09
IFZlcnRpY2FsTWFyZ2luOjpBZnRlciAmJiBzdHlsZS5oYXNNYXJnaW5BZnRlclF1aXJrKCkpOwog
fQogCi1ib29sIEJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c2hvdWxkQ29sbGFwc2VNYXJnaW5CZWZv
cmVXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAorYm9v
bCBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZENvbGxhcHNlTWFyZ2luQmVmb3JlV2l0aFBh
cmVudE1hcmdpbkJlZm9yZShjb25zdCBCb3gmIGxheW91dEJveCkKIHsKLSAgICByZXR1cm4gbGF5
b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSAmJiBoYXNRdWlya01hcmdpblRvQ29sbGFwc2UobGF5
b3V0Qm94LCBWZXJ0aWNhbE1hcmdpbjo6QmVmb3JlKSAmJiBpc1F1aXJrQ29udGFpbmVyKGxheW91
dEJveC5jb250YWluaW5nQmxvY2soKSk7CisgICAgcmV0dXJuIGhhc1F1aXJrTWFyZ2luVG9Db2xs
YXBzZShsYXlvdXRCb3gsIFZlcnRpY2FsTWFyZ2luOjpCZWZvcmUpICYmIGlzUXVpcmtDb250YWlu
ZXIobGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKIH0KIAotYm9vbCBCbG9ja0Zvcm1hdHRp
bmdRdWlya3M6OnNob3VsZENvbGxhcHNlTWFyZ2luQWZ0ZXJXaXRoUGFyZW50TWFyZ2luQWZ0ZXIo
Y29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Citib29sIEJsb2NrRm9ybWF0dGluZ1F1aXJrczo6
c2hvdWxkQ29sbGFwc2VNYXJnaW5BZnRlcldpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBCb3gm
IGxheW91dEJveCkKIHsKLSAgICByZXR1cm4gbGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSAm
JiBoYXNRdWlya01hcmdpblRvQ29sbGFwc2UobGF5b3V0Qm94LCBWZXJ0aWNhbE1hcmdpbjo6QWZ0
ZXIpICYmIGlzUXVpcmtDb250YWluZXIobGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpKTsKKyAg
ICByZXR1cm4gaGFzUXVpcmtNYXJnaW5Ub0NvbGxhcHNlKGxheW91dEJveCwgVmVydGljYWxNYXJn
aW46OkFmdGVyKSAmJiBpc1F1aXJrQ29udGFpbmVyKGxheW91dEJveC5jb250YWluaW5nQmxvY2so
KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5oCmlu
ZGV4IDgwMjFjMTQ0MjEyOGFkY2ZmYjlkZDk1M2QwNTZlNWE2MDM1ZjUwN2YuLmZlYTZjZjNkY2Rm
OWZkYTIxMWYwZTIzNGQ3OTY2OGFhZGNkN2U0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9j
a0Zvcm1hdHRpbmdRdWlya3MuaApAQCAtMzYsMTUgKzM2LDEwIEBAIGNsYXNzIEJsb2NrRm9ybWF0
dGluZ1F1aXJrcyA6IHB1YmxpYyBGb3JtYXR0aW5nUXVpcmtzIHsKIHB1YmxpYzoKICAgICBCbG9j
a0Zvcm1hdHRpbmdRdWlya3MoY29uc3QgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCYpOwogCi0gICAg
Ym9vbCBuZWVkc1N0cmV0Y2hpbmcoY29uc3QgQm94JikgY29uc3Q7Ci0gICAgTGF5b3V0VW5pdCBz
dHJldGNoZWRJbkZsb3dIZWlnaHQoY29uc3QgQm94JiwgQ29udGVudEhlaWdodEFuZE1hcmdpbik7
Ci0KLSAgICBib29sIHNob3VsZElnbm9yZUNvbGxhcHNlZFF1aXJrTWFyZ2luKGNvbnN0IEJveCYp
IGNvbnN0OwotICAgIGJvb2wgc2hvdWxkQ29sbGFwc2VNYXJnaW5CZWZvcmVXaXRoUGFyZW50TWFy
Z2luQmVmb3JlKGNvbnN0IEJveCYpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkQ29sbGFwc2VNYXJn
aW5BZnRlcldpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBCb3gmKSBjb25zdDsKLQotcHJvdGVj
dGVkOgotICAgIGNvbnN0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nQ29udGV4dD4oRm9ybWF0
dGluZ1F1aXJrczo6Zm9ybWF0dGluZ0NvbnRleHQoKSk7IH0KKyAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiBzdHJldGNoZWRJbkZsb3dIZWlnaHRJZkFwcGxpY2FibGUoY29uc3QgQm94JiwgQ29udGVu
dEhlaWdodEFuZE1hcmdpbikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSWdub3JlQ29s
bGFwc2VkUXVpcmtNYXJnaW4oY29uc3QgQm94Jik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkQ29s
bGFwc2VNYXJnaW5CZWZvcmVXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGNvbnN0IEJveCYpOworICAg
IHN0YXRpYyBib29sIHNob3VsZENvbGxhcHNlTWFyZ2luQWZ0ZXJXaXRoUGFyZW50TWFyZ2luQWZ0
ZXIoY29uc3QgQm94Jik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNv
bGxhcHNlLmNwcAppbmRleCBkNzdjZGZmMTYwYTM4N2NkYzE2YWRlMTFjNTE0MTc0OTE5OTk0OGZk
Li5hZDJiMDgxOWY5MTk4ZTQzNGNmOGVlNTJhYzYzMjg3OTg0ZDA1ZWNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2lu
Q29sbGFwc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKQEAgLTg3LDExICs4Nyw2IEBAIEJsb2Nr
TWFyZ2luQ29sbGFwc2U6OkJsb2NrTWFyZ2luQ29sbGFwc2UoY29uc3QgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dCYgYmxvY2tGb3JtCiB7CiB9CiAKLUJsb2NrRm9ybWF0dGluZ1F1aXJrcyBCbG9ja01h
cmdpbkNvbGxhcHNlOjpxdWlya3MoKSBjb25zdAotewotICAgIHJldHVybiBCbG9ja0Zvcm1hdHRp
bmdRdWlya3MgeyBmb3JtYXR0aW5nQ29udGV4dCgpIH07Ci19Ci0KIGJvb2wgQmxvY2tNYXJnaW5D
b2xsYXBzZTo6aGFzQ2xlYXJhbmNlKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAg
IGlmICghbGF5b3V0Qm94Lmhhc0Zsb2F0Q2xlYXIoKSkKQEAgLTEyNSw3ICsxMjAsNyBAQCBib29s
IEJsb2NrTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkJlZm9yZUNvbGxhcHNlc1dpdGhQYXJlbnRNYXJn
aW5CZWZvcmUoY29uc3QgQm94JgogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9i
b3guaHRtbCNjb2xsYXBzaW5nLW1hcmdpbnMKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzQmxvY2tM
ZXZlbEJveCgpKTsKIAotICAgIGlmIChxdWlya3MoKS5zaG91bGRDb2xsYXBzZU1hcmdpbkJlZm9y
ZVdpdGhQYXJlbnRNYXJnaW5CZWZvcmUobGF5b3V0Qm94KSkKKyAgICBpZiAobGF5b3V0U3RhdGUo
KS5pblF1aXJrc01vZGUoKSAmJiBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZENvbGxhcHNl
TWFyZ2luQmVmb3JlV2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXlvdXRCb3gpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIC8vIE1hcmdpbnMgYmV0d2VlbiBhIGZsb2F0ZWQgYm94IGFuZCBh
bnkgb3RoZXIgYm94IGRvIG5vdCBjb2xsYXBzZS4KQEAgLTI2Myw3ICsyNTgsNyBAQCBib29sIEJs
b2NrTWFyZ2luQ29sbGFwc2U6Om1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkFm
dGVyKGNvbnN0IEJveCYgbAogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNCbG9ja0xldmVsQm94
KCkpOwogCi0gICAgaWYgKHF1aXJrcygpLnNob3VsZENvbGxhcHNlTWFyZ2luQWZ0ZXJXaXRoUGFy
ZW50TWFyZ2luQWZ0ZXIobGF5b3V0Qm94KSkKKyAgICBpZiAobGF5b3V0U3RhdGUoKS5pblF1aXJr
c01vZGUoKSAmJiBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZENvbGxhcHNlTWFyZ2luQWZ0
ZXJXaXRoUGFyZW50TWFyZ2luQWZ0ZXIobGF5b3V0Qm94KSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICAvLyBNYXJnaW5zIGJldHdlZW4gYSBmbG9hdGVkIGJveCBhbmQgYW55IG90aGVyIGJv
eCBkbyBub3QgY29sbGFwc2UuCkBAIC0zNTQsNyArMzQ5LDggQEAgYm9vbCBCbG9ja01hcmdpbkNv
bGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhMYXN0SW5GbG93Q2hpbGRNYXJnaW5BZnRl
cihjb24KIAogICAgIC8vIFRoaXMgaXMgYSBxdWlyayBiZWhhdmlvcjogV2hlbiB0aGUgbWFyZ2lu
IGFmdGVyIG9mIHRoZSBsYXN0IGluZmxvdyBjaGlsZCAob3IgYSBwcmV2aW91cyBzaWJsaW5nIHdp
dGggY29sbGFwc2VkIHRocm91Z2ggbWFyZ2lucykKICAgICAvLyBjb2xsYXBzZXMgd2l0aCBhIHF1
aXJrIHBhcmVudCdzIHRoZSBtYXJnaW4gYmVmb3JlLCB0aGVuIHRoZSBzYW1lIG1hcmdpbiBhZnRl
ciBkb2VzIG5vdCBjb2xsYXBzZXMgd2l0aCB0aGUgcGFyZW50J3MgbWFyZ2luIGFmdGVyLgotICAg
IGlmIChxdWlya3MoKS5zaG91bGRJZ25vcmVDb2xsYXBzZWRRdWlya01hcmdpbihsYXlvdXRCb3gp
ICYmIG1hcmdpbkFmdGVyQ29sbGFwc2VzV2l0aFBhcmVudE1hcmdpbkJlZm9yZShsYXN0SW5GbG93
Q2hpbGQpKQorICAgIGF1dG8gc2hvdWxkSWdub3JlQ29sbGFwc2VkTWFyZ2luID0gbGF5b3V0U3Rh
dGUoKS5pblF1aXJrc01vZGUoKSAmJiBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZElnbm9y
ZUNvbGxhcHNlZFF1aXJrTWFyZ2luKGxheW91dEJveCk7CisgICAgaWYgKHNob3VsZElnbm9yZUNv
bGxhcHNlZE1hcmdpbiAmJiBtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhQYXJlbnRNYXJnaW5CZWZv
cmUobGFzdEluRmxvd0NoaWxkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJu
IHRydWU7CkBAIC01MDcsNyArNTAzLDggQEAgVXNlZFZlcnRpY2FsTWFyZ2luOjpQb3NpdGl2ZUFu
ZE5lZ2F0aXZlUGFpcjo6VmFsdWVzIEJsb2NrTWFyZ2luQ29sbGFwc2U6OnBvc2l0aXYKICAgICAv
LyAyLiBHYXRoZXIgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIG1hcmdpbiB2YWx1ZXMgZnJvbSBwcmV2
aW91cyBpbmZsb3cgc2libGluZyBpZiBtYXJnaW5zIGFyZSBhZGpvaW5pbmcuCiAgICAgLy8gMy4g
Q29tcHV0ZSBtaW4vbWF4IHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBjb2xsYXBzZWQgbWFyZ2luIHZh
bHVlcyB1c2luZyBub24tY29sbHBhc2VkIGNvbXB1dGVkIG1hcmdpbiBiZWZvcmUuCiAgICAgYXV0
byBjb2xsYXBzZWRNYXJnaW5CZWZvcmUgPSBjb21wdXRlZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJn
aW4oZmlyc3RDaGlsZENvbGxhcHNlZE1hcmdpbkJlZm9yZSgpLCBwcmV2aW91U2libGluZ0NvbGxh
cHNlZE1hcmdpbkFmdGVyKCkpOwotICAgIGlmIChjb2xsYXBzZWRNYXJnaW5CZWZvcmUuaXNRdWly
ayAmJiBxdWlya3MoKS5zaG91bGRJZ25vcmVDb2xsYXBzZWRRdWlya01hcmdpbihsYXlvdXRCb3gp
KQorICAgIGF1dG8gc2hvdWxkSWdub3JlQ29sbGFwc2VkTWFyZ2luID0gY29sbGFwc2VkTWFyZ2lu
QmVmb3JlLmlzUXVpcmsgJiYgbGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSAmJiBCbG9ja0Zv
cm1hdHRpbmdRdWlya3M6OnNob3VsZElnbm9yZUNvbGxhcHNlZFF1aXJrTWFyZ2luKGxheW91dEJv
eCk7CisgICAgaWYgKHNob3VsZElnbm9yZUNvbGxhcHNlZE1hcmdpbikKICAgICAgICAgY29sbGFw
c2VkTWFyZ2luQmVmb3JlID0geyB9OwogCiAgICAgVXNlZFZlcnRpY2FsTWFyZ2luOjpQb3NpdGl2
ZUFuZE5lZ2F0aXZlUGFpcjo6VmFsdWVzIG5vbkNvbGxhcHNlZEJlZm9yZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tNYXJn
aW5Db2xsYXBzZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9i
bG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmgKaW5kZXggZWVhYTkxNTZjZWNjOTFiMmFhYzYyOTFh
ODI2MWFlMmZjYzkyY2FmYy4uZDI0ZGYwZWNhMTdlNDAzODc0MGI5ZjU1ODgxMWE3ZDJlNWEyM2E4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9i
bG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmgKQEAgLTcwLDcgKzcw
LDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaGFzQ2xlYXJhbmNlKGNvbnN0IEJveCYpIGNvbnN0
OwogCi0gICAgQmxvY2tGb3JtYXR0aW5nUXVpcmtzIHF1aXJrcygpIGNvbnN0OwogICAgIExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIHsgcmV0dXJuIG1fYmxvY2tGb3JtYXR0aW5nQ29udGV4dC5s
YXlvdXRTdGF0ZSgpOyB9CiAgICAgY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9ibG9ja0Zvcm1hdHRpbmdDb250ZXh0LmxheW91dFN0YXRlKCk7IH0KICAg
ICBjb25zdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fYmxvY2tGb3JtYXR0aW5nQ29udGV4dDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9QcmVjb21wdXRlZEJsb2Nr
TWFyZ2luQ29sbGFwc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9ibG9jay9QcmVjb21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCmluZGV4IDZmZWIx
MGQzYzNhMTVjY2U1NDU2NDFmMDQwNTFmMjY2NTJlNjg0YTkuLjkwOGU3M2RiNzNhOGIwYjc0YjQ5
NGQwOTE2YmJlMTg4MTdjMjYzZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvYmxvY2svUHJlY29tcHV0ZWRCbG9ja01hcmdpbkNvbGxhcHNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL1By
ZWNvbXB1dGVkQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKQEAgLTcyLDcgKzcyLDggQEAgVXNlZFZl
cnRpY2FsTWFyZ2luOjpQb3NpdGl2ZUFuZE5lZ2F0aXZlUGFpcjo6VmFsdWVzIEJsb2NrTWFyZ2lu
Q29sbGFwc2U6OnByZWNvbXAKICAgICAvLyAyLiBHYXRoZXIgcG9zaXRpdmUgYW5kIG5lZ2F0aXZl
IG1hcmdpbiB2YWx1ZXMgZnJvbSBwcmV2aW91cyBpbmZsb3cgc2libGluZyBpZiBtYXJnaW5zIGFy
ZSBhZGpvaW5pbmcuCiAgICAgLy8gMy4gQ29tcHV0ZSBtaW4vbWF4IHBvc2l0aXZlIGFuZCBuZWdh
dGl2ZSBjb2xsYXBzZWQgbWFyZ2luIHZhbHVlcyB1c2luZyBub24tY29sbHBhc2VkIGNvbXB1dGVk
IG1hcmdpbiBiZWZvcmUuCiAgICAgYXV0byBjb2xsYXBzZWRNYXJnaW5CZWZvcmUgPSBjb21wdXRl
ZFBvc2l0aXZlQW5kTmVnYXRpdmVNYXJnaW4oZmlyc3RDaGlsZENvbGxhcHNlZE1hcmdpbkJlZm9y
ZSgpLCBwcmV2aW91U2libGluZ0NvbGxhcHNlZE1hcmdpbkFmdGVyKCkpOwotICAgIGlmIChjb2xs
YXBzZWRNYXJnaW5CZWZvcmUuaXNRdWlyayAmJiBxdWlya3MoKS5zaG91bGRJZ25vcmVDb2xsYXBz
ZWRRdWlya01hcmdpbihsYXlvdXRCb3gpKQorICAgIGF1dG8gc2hvdWxkSWdub3JlQ29sbGFwc2Vk
TWFyZ2luID0gY29sbGFwc2VkTWFyZ2luQmVmb3JlLmlzUXVpcmsgJiYgbGF5b3V0U3RhdGUoKS5p
blF1aXJrc01vZGUoKSAmJiBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZElnbm9yZUNvbGxh
cHNlZFF1aXJrTWFyZ2luKGxheW91dEJveCk7CisgICAgaWYgKHNob3VsZElnbm9yZUNvbGxhcHNl
ZE1hcmdpbikKICAgICAgICAgY29sbGFwc2VkTWFyZ2luQmVmb3JlID0geyB9OwogCiAgICAgYXV0
byBub25Db2xsYXBzZWRCZWZvcmUgPSBVc2VkVmVydGljYWxNYXJnaW46OlBvc2l0aXZlQW5kTmVn
YXRpdmVQYWlyOjpWYWx1ZXMgeyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0LmNwcAppbmRleCA1NTRjODkyMGViNGFkMjJlNDZhMmE0NWExNWI5YTY4MjBlYTkxMDJiLi5h
YTc3NTQ2MzAyZThlOWU4ZDlkZWYwZTExMzMwYTY4Mjc2NTE4YjhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9U
YWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBw
ZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjE5LDEwICsyMTksMTYgQEAgdm9pZCBU
YWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2lu
Rm9yVGFibGVCb3goY29uc3QKICAgICBBU1NFUlQodGFibGVCb3guaXNUYWJsZUJveCgpKTsKICAg
ICAvLyBUYWJsZSBpcyBhIHNwZWNpYWwgQkZDIGNvbnRlbnQuIEl0cyBoZWlnaHQgaXMgbWFpbmx5
IGRyaXZlbiBieSB0aGUgY29udGVudC4gQ29tcHV0ZWQgaGVpZ2h0LCBtaW4taGVpZ2h0IGFuZCBt
YXgtaGVpZ2h0IGFyZSBhbGwKICAgICAvLyBhbHJlYWR5IGJlZW4gdGFrZW4gaW50byBhY2NvdW50
IGR1cmluZyB0aGUgVEZDIGxheW91dC4KLSAgICBhdXRvIGhlaWdodEFuZE1hcmdpbiA9IGdlb21l
dHJ5KCkuaW5GbG93Q29udGVudEhlaWdodEFuZE1hcmdpbih0YWJsZUJveCwgY29uc3RyYWludHMu
aG9yaXpvbnRhbCwgeyBxdWlya3MoKS5vdmVycmlkZGVuVGFibGVIZWlnaHQodGFibGVCb3gpIH0p
OwotCi0gICAgYXV0byBtYXJnaW5Db2xsYXBzZSA9IHRoaXMtPm1hcmdpbkNvbGxhcHNlKCk7Ci0g
ICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9IG1hcmdpbkNvbGxhcHNlLmNvbGxhcHNlZFZlcnRpY2Fs
VmFsdWVzKHRhYmxlQm94LCBoZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luKTsKKyAg
ICBhdXRvIG92ZXJyaWRkZW5UYWJsZUhlaWdodCA9IFsmXSgpIC0+IE9wdGlvbmFsPExheW91dFVu
aXQ+IHsKKyAgICAgICAgaWYgKGxheW91dFN0YXRlKCkuaW5RdWlya3NNb2RlKCkpCisgICAgICAg
ICAgICByZXR1cm4gVGFibGVXcmFwcGVyUXVpcmtzKCp0aGlzKS5vdmVycmlkZGVuVGFibGVIZWln
aHQodGFibGVCb3gpOworICAgICAgICBpZiAodGFibGVCb3guaGFzSW5GbG93T3JGbG9hdGluZ0No
aWxkKCkpCisgICAgICAgICAgICByZXR1cm4gZ2VvbWV0cnkoKS5jb250ZW50SGVpZ2h0Rm9yRm9y
bWF0dGluZ0NvbnRleHRSb290KHRhYmxlQm94KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
KCk7CisKKyAgICBhdXRvIGhlaWdodEFuZE1hcmdpbiA9IGdlb21ldHJ5KCkuaW5GbG93Q29udGVu
dEhlaWdodEFuZE1hcmdpbih0YWJsZUJveCwgY29uc3RyYWludHMuaG9yaXpvbnRhbCwgeyBvdmVy
cmlkZGVuVGFibGVIZWlnaHQgfSk7CisgICAgYXV0byB2ZXJ0aWNhbE1hcmdpbiA9IG1hcmdpbkNv
bGxhcHNlKCkuY29sbGFwc2VkVmVydGljYWxWYWx1ZXModGFibGVCb3gsIGhlaWdodEFuZE1hcmdp
bi5ub25Db2xsYXBzZWRNYXJnaW4pOwogICAgIC8vIENhY2hlIHRoZSBjb21wdXRlZCBwb3NpdGl2
ZSBhbmQgbmVnYXRpdmUgbWFyZ2luIHZhbHVlIHBhaXIuCiAgICAgZm9ybWF0dGluZ1N0YXRlKCku
c2V0VXNlZFZlcnRpY2FsTWFyZ2luKHRhYmxlQm94LCB2ZXJ0aWNhbE1hcmdpbik7CiAKQEAgLTIz
NCwxMSArMjQwLDYgQEAgdm9pZCBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpj
b21wdXRlSGVpZ2h0QW5kTWFyZ2luRm9yVGFibGVCb3goY29uc3QKICAgICB1cGRhdGVNYXJnaW5B
ZnRlckZvclByZXZpb3VzU2libGluZyh0YWJsZUJveCk7CiB9CiAKLVRhYmxlV3JhcHBlclF1aXJr
cyBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpxdWlya3MoKSBjb25zdAotewot
ICAgIHJldHVybiBUYWJsZVdyYXBwZXJRdWlya3MoKnRoaXMpOwotfQotCiB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svdGFi
bGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxl
V3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCA0OWJhYzQ4NmE3MjhmMjg3MTFh
NjJjYWY4M2EzMjQzZWExYzg0M2YxLi5kNzYzY2FhOTMzNDc5N2MxNTM3NzEyNjc0NjU4YjM1YWZm
NjdkYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90
YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC0zNCw4
ICszNCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotY2xh
c3MgVGFibGVXcmFwcGVyUXVpcmtzOwotCiAvLyBUaGlzIGNsYXNzIGltcGxlbWVudHMgdGhlIHNw
ZWNpYWwgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IGxheW91dCBsb2dpYyBmb3IgdGhlIHRhYmxl
IHdyYXBwZXIuCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjIvdGFibGVzLmh0bWwjbW9k
ZWwKIGNsYXNzIFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQgZmluYWwgOiBwdWJs
aWMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCB7CkBAIC00OCw4ICs0Niw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEhvcml6b250YWxDb25zdHJhaW50c0lnbm9yaW5nRmxvYXRzKGNvbnN0IEhvcml6
b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKSB7IG1faG9yaXpvbnRhbENv
bnN0cmFpbnRzSWdub3JpbmdGbG9hdHMgPSBob3Jpem9udGFsQ29uc3RyYWludHM7IH0KIAogcHJp
dmF0ZToKLSAgICBUYWJsZVdyYXBwZXJRdWlya3MgcXVpcmtzKCkgY29uc3Q7Ci0KICAgICB2b2lk
IGxheW91dFRhYmxlQm94KGNvbnN0IENvbnRhaW5lckJveCYgdGFibGVCb3gsIGNvbnN0IENvbnN0
cmFpbnRzRm9ySW5GbG93Q29udGVudCYpOwogCiAgICAgdm9pZCBjb21wdXRlQm9yZGVyQW5kUGFk
ZGluZ0ZvclRhYmxlQm94KGNvbnN0IENvbnRhaW5lckJveCYsIGNvbnN0IEhvcml6b250YWxDb25z
dHJhaW50cyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nUXVp
cmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2sv
dGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAKaW5kZXgg
YmY1OTMzOTYzOWFiNTZlOTExNGM5NTE0ZTI2NzIwMzBlOGNmZmUyMC4uNjY3MDljNjk1ZTQ2N2E4
NTMzMTA1ZjA4Y2I1NTVjOTAzZDBjN2U0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxv
Y2tGb3JtYXR0aW5nUXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRp
bmdRdWlya3MuY3BwCkBAIC0zNywxNiArMzcsMTQgQEAgbmFtZXNwYWNlIExheW91dCB7CiBUYWJs
ZVdyYXBwZXJRdWlya3M6OlRhYmxlV3JhcHBlclF1aXJrcyhjb25zdCBUYWJsZVdyYXBwZXJCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCkKICAgICA6IEJsb2NrRm9ybWF0
dGluZ1F1aXJrcyhmb3JtYXR0aW5nQ29udGV4dCkKIHsKKyAgICBBU1NFUlQobGF5b3V0U3RhdGUo
KS5pblF1aXJrc01vZGUoKSk7CiB9CiAKLU9wdGlvbmFsPExheW91dFVuaXQ+IFRhYmxlV3JhcHBl
clF1aXJrczo6b3ZlcnJpZGRlblRhYmxlSGVpZ2h0KGNvbnN0IENvbnRhaW5lckJveCYgdGFibGVC
b3gpIGNvbnN0CitMYXlvdXRVbml0IFRhYmxlV3JhcHBlclF1aXJrczo6b3ZlcnJpZGRlblRhYmxl
SGVpZ2h0KGNvbnN0IENvbnRhaW5lckJveCYgdGFibGVCb3gpIGNvbnN0CiB7Ci0gICAgYXV0byBn
ZW9tZXRyeSA9IEJsb2NrRm9ybWF0dGluZ0dlb21ldHJ5IHsgZm9ybWF0dGluZ0NvbnRleHQoKSB9
OwotICAgIGlmIChsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpKSB7Ci0gICAgICAgIC8vIElu
IHF1aXJrcyBtb2RlIGFsd2F5cyB1c2UgdGhlIGNvbnRlbnQgaGVpZ2h0LiBOb3RlIHRoYXQgdGhl
IHRhYmxlcyB3aXRoIGNvbnRlbnQgdGFrZSBjb21wdXRlZCB2YWx1ZXMgaW50byBhY2NvdW50Lgot
ICAgICAgICByZXR1cm4gZ2VvbWV0cnkuY29udGVudEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0
Um9vdCh0YWJsZUJveCk7Ci0gICAgfQotICAgIHJldHVybiB0YWJsZUJveC5oYXNJbkZsb3dPckZs
b2F0aW5nQ2hpbGQoKSA/IGdlb21ldHJ5LmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4
dFJvb3QodGFibGVCb3gpIDogT3B0aW9uYWw8TGF5b3V0VW5pdD4geyB9OworICAgIC8vIEluIHF1
aXJrcyBtb2RlIGFsd2F5cyB1c2UgdGhlIGNvbnRlbnQgaGVpZ2h0LiBOb3RlIHRoYXQgdGhlIHRh
YmxlcyB3aXRoIGNvbnRlbnQgdGFrZSBjb21wdXRlZCB2YWx1ZXMgaW50byBhY2NvdW50LgorICAg
IGF1dG8mIGZvcm1hdHRpbmdDb250ZXh0ID0gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nQ29udGV4
dD4odGhpcy0+Zm9ybWF0dGluZ0NvbnRleHQoKSk7CisgICAgcmV0dXJuIEJsb2NrRm9ybWF0dGlu
Z0dlb21ldHJ5KGZvcm1hdHRpbmdDb250ZXh0KS5jb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0Nv
bnRleHRSb290KHRhYmxlQm94KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVy
QmxvY2tGb3JtYXR0aW5nUXVpcmtzLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdR
dWlya3MuaAppbmRleCBhY2ZkOWM4Zjg3Mjc5YWRhNjZkYmM0YTE3MjUwMDcwN2Q5MzFiZDA1Li44
YzJlMzM2MmJjMmU5OWIwMDM4NjBmYWIwNTM4MGQ4MmE5ZWQxZGRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9U
YWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdRdWlya3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJC
bG9ja0Zvcm1hdHRpbmdRdWlya3MuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBUYWJsZVdyYXBw
ZXJRdWlya3MgOiBwdWJsaWMgQmxvY2tGb3JtYXR0aW5nUXVpcmtzIHsKIHB1YmxpYzoKICAgICBU
YWJsZVdyYXBwZXJRdWlya3MoY29uc3QgVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4
dCYpOwogCi0gICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gb3ZlcnJpZGRlblRhYmxlSGVpZ2h0KGNv
bnN0IENvbnRhaW5lckJveCYgdGFibGVCb3gpIGNvbnN0OworICAgIExheW91dFVuaXQgb3ZlcnJp
ZGRlblRhYmxlSGVpZ2h0KGNvbnN0IENvbnRhaW5lckJveCYgdGFibGVCb3gpIGNvbnN0OwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CmluZGV4IDE4MDU3ODY3MTdkZWZiNTNmYTFiOWQxYjc2MjdhNGY2MGI1NDYwMjAuLjA0MmQ5MGYw
OGU2YjE3Njg1Y2VlZDU2MzZjNDdhYmViMWI1NDk3NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTE5NSw3ICsxOTUsMTIgQEAgdm9p
ZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChJbmxpbmVJdGVtcyYgaW5saW5l
SXRlbXMsIExpbmVCdWlsZGVyOjoKICAgICAgICAgLy8gInNwWzwtbGluZSBicmVhay0+XWxpdF9j
b250ZW50IiAtPiBvdmVyZmxvdyBsZW5ndGg6IDExIC0+IGxlYWRpbmcgcGFydGlhbCBjb250ZW50
IGxlbmd0aDogMTEuCiAgICAgICAgIGF1dG8gcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoID0g
cHJldmlvdXNMaW5lID8gcHJldmlvdXNMaW5lLT5vdmVyZmxvd0NvbnRlbnRMZW5ndGggOiAwOwog
ICAgICAgICBhdXRvIGxlYWRpbmdMb2dpY2FsV2lkdGggPSBwcmV2aW91c0xpbmUgPyBwcmV2aW91
c0xpbmUtPm92ZXJmbG93TG9naWNhbFdpZHRoIDogV1RGOjpudWxsb3B0OwotICAgICAgICBhdXRv
IGluaXRpYWxMaW5lQ29uc3RyYWludHMgPSBJbmxpbmVSZWN0IHsgbGluZUxvZ2ljYWxUb3AsIGNv
bnN0cmFpbnRzLmhvcml6b250YWwubG9naWNhbExlZnQsIGNvbnN0cmFpbnRzLmhvcml6b250YWwu
bG9naWNhbFdpZHRoLCBxdWlya3MoKS5pbml0aWFsTGluZUhlaWdodCgpIH07CisgICAgICAgIGF1
dG8gaW5pdGlhbExpbmVIZWlnaHQgPSBbJl0oKSAtPiBJbmxpbmVMYXlvdXRVbml0IHsKKyAgICAg
ICAgICAgIGlmIChsYXlvdXRTdGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpKQorICAgICAgICAgICAg
ICAgIHJldHVybiByb290KCkuc3R5bGUoKS5jb21wdXRlZExpbmVIZWlnaHQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzKCp0aGlzKS5pbml0aWFsTGluZUhlaWdo
dCgpOworICAgICAgICB9KCk7CisgICAgICAgIGF1dG8gaW5pdGlhbExpbmVDb25zdHJhaW50cyA9
IElubGluZVJlY3QgeyBsaW5lTG9naWNhbFRvcCwgY29uc3RyYWludHMuaG9yaXpvbnRhbC5sb2dp
Y2FsTGVmdCwgY29uc3RyYWludHMuaG9yaXpvbnRhbC5sb2dpY2FsV2lkdGgsIGluaXRpYWxMaW5l
SGVpZ2h0IH07CiAgICAgICAgIGF1dG8gbGluZUNvbnRlbnQgPSBsaW5lQnVpbGRlci5sYXlvdXRJ
bmxpbmVDb250ZW50KG5lZWRzTGF5b3V0UmFuZ2UsIHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0
aCwgbGVhZGluZ0xvZ2ljYWxXaWR0aCwgaW5pdGlhbExpbmVDb25zdHJhaW50cywgaXNGaXJzdExp
bmUpOwogICAgICAgICBhdXRvIGxpbmVMb2dpY2FsUmVjdCA9IGNvbXB1dGVHZW9tZXRyeUZvckxp
bmVDb250ZW50KGxpbmVDb250ZW50LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKTsKIApAQCAtNjEy
LDEyICs2MTcsNiBAQCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6Omdlb21ldHJ5KCkgY29uc3QKICAgICByZXR1cm4gSW5saW5lRm9ybWF0dGluZ0dlb21l
dHJ5KCp0aGlzKTsKIH0KIAotSW5saW5lRm9ybWF0dGluZ1F1aXJrcyBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6cXVpcmtzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gSW5saW5lRm9ybWF0dGluZ1F1
aXJrcygqdGhpcyk7Ci0KLX0KLQogfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCBmNzMwNmI5ODQ2NjU0NGU3OTFkMjA3MDg3NjAwZTRl
M2M5ZDNkNjE0Li4wZjk5ZjlmOTM0ZWM4ZWY1OTQ0YmZhYjk3Yzc1Y2M3NDQ3ZGE3MmY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTM2LDcg
KzM2LDYgQEAgbmFtZXNwYWNlIExheW91dCB7CiAKIGNsYXNzIElubGluZUZvcm1hdHRpbmdHZW9t
ZXRyeTsKIGNsYXNzIElubGluZUZvcm1hdHRpbmdTdGF0ZTsKLWNsYXNzIElubGluZUZvcm1hdHRp
bmdRdWlya3M7CiBjbGFzcyBJbnZhbGlkYXRpb25TdGF0ZTsKIGNsYXNzIExpbmVCb3g7CiAKQEAg
LTU4LDcgKzU3LDYgQEAgcHJpdmF0ZToKICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNv
bXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpIG92ZXJyaWRlOwogCiAgICAgSW5saW5l
Rm9ybWF0dGluZ0dlb21ldHJ5IGdlb21ldHJ5KCkgY29uc3Q7Ci0gICAgSW5saW5lRm9ybWF0dGlu
Z1F1aXJrcyBxdWlya3MoKSBjb25zdDsKIAogICAgIHZvaWQgbGluZUxheW91dChJbmxpbmVJdGVt
cyYsIExpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUmFuZ2UsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5G
bG93Q29udGVudCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGlu
Z0dlb21ldHJ5LmNwcAppbmRleCBkNWUzMjBmNTI3ZDVlZGI2N2U1MDEyZjQ1MTdlMzdlMDQxYzhl
ZWMzLi5kZjIyOGM2YzgzZmM2NWE1YTc5NDFmNjNiNjBlMDE0NDViNzY4ODQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVG
b3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkZvcm1h
dHRpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1F1aXJrcy5oIgogI2lu
Y2x1ZGUgIklubGluZUxpbmVCb3guaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRl
ICJMYXlvdXRDb250YWluZXJCb3guaCIKQEAgLTM4OSw4ICszOTAsOCBAQCB2b2lkIExpbmVCb3hC
dWlsZGVyOjpjb21wdXRlTGluZUJveEhlaWdodEFuZEFsaWduSW5saW5lTGV2ZWxCb3hlc1ZlcnRp
Y2FsbHkoTGluZQogICAgIC8vIDEuIENvbXB1dGUgdGhlIGxpbmUgYm94IGhlaWdodCB1c2luZyB0
aGUgbGF5b3V0IGJvdW5kcyBnZW9tZXRyeS4gVGhpcyBoZWlnaHQgY29tcHV0YXRpb24gc3RyaWN0
bHkgdXNlcyBsYXlvdXQgYm91bmRzIGFuZCBub3Qgbm9ybWFsIGlubGluZSBsZXZlbCBib3ggZ2Vv
bWV0cmllcy4KICAgICAvLyAyLiBDb21wdXRlIHRoZSBiYXNlbGluZS9sb2dpY2FsIHRvcCBwb3Np
dGlvbiBvZiB0aGUgcm9vdCBpbmxpbmUgYm94LiBBbGlnbmVkIGJveGVzIHB1c2ggdGhlIHJvb3Qg
aW5saW5lIGJveCBhcm91bmQgaW5zaWRlIHRoZSBsaW5lIGJveC4KICAgICAvLyAzLiBGaW5hbGx5
IGFsaWduIHRoZSBpbmxpbmUgbGV2ZWwgYm94ZXMgdXNpbmcgKG1vc3RseSkgbm9ybWFsIGlubGlu
ZSBsZXZlbCBib3ggZ2VvbWV0cmllcy4KLSAgICBhdXRvIHF1aXJrcyA9IElubGluZUZvcm1hdHRp
bmdRdWlya3MgeyBmb3JtYXR0aW5nQ29udGV4dCgpIH07CiAgICAgYXV0byYgcm9vdElubGluZUJv
eCA9IGxpbmVCb3gucm9vdElubGluZUJveCgpOworICAgIGF1dG8gZm9ybWF0dGluZ0dlb21ldHJ5
ID0gSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5IHsgZm9ybWF0dGluZ0NvbnRleHQoKSB9OwogCiAg
ICAgYXV0byBjb21wdXRlTGluZUJveExvZ2ljYWxIZWlnaHQgPSBbJl0gewogICAgICAgICAvLyBM
aW5lIGJveCBoZWlnaHQgY29tcHV0YXRpb24gaXMgYmFzZWQgb24gdGhlIGxheW91dCBib3VuZHMg
b2YgdGhlIGlubGluZSBib3hlcyBhbmQgbm90IHRoZWlyIGxvZ2ljYWwgKGFzY2VudC9kZXNjZW50
KSBkaW1lbnNpb25zLgpAQCAtNDAyLDcgKzQwMyw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNv
bXB1dGVMaW5lQm94SGVpZ2h0QW5kQWxpZ25JbmxpbmVMZXZlbEJveGVzVmVydGljYWxseShMaW5l
CiAKICAgICAgICAgYXV0byBtaW5pbXVtTG9naWNhbFRvcCA9IE9wdGlvbmFsPElubGluZUxheW91
dFVuaXQ+IHsgfTsKICAgICAgICAgYXV0byBtYXhpbXVtTG9naWNhbEJvdHRvbSA9IE9wdGlvbmFs
PElubGluZUxheW91dFVuaXQ+IHsgfTsKLSAgICAgICAgaWYgKHF1aXJrcy5pbmxpbmVMZXZlbEJv
eEFmZmVjdHNMaW5lQm94KHJvb3RJbmxpbmVCb3gsIGxpbmVCb3gpKSB7CisgICAgICAgIGlmIChm
b3JtYXR0aW5nR2VvbWV0cnkuaW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveChyb290SW5saW5l
Qm94LCBsaW5lQm94KSkgewogICAgICAgICAgICAgbWluaW11bUxvZ2ljYWxUb3AgPSBJbmxpbmVM
YXlvdXRVbml0IHsgfTsKICAgICAgICAgICAgIG1heGltdW1Mb2dpY2FsQm90dG9tID0gcm9vdElu
bGluZUJveC5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKTsKICAgICAgICAgICAgIGlubGluZUxldmVs
Qm94QWJzb2x1dGVUb3BBbmRCb3R0b21NYXAuYWRkKCZyb290SW5saW5lQm94LCBBYnNvbHV0ZVRv
cEFuZEJvdHRvbSB7ICptaW5pbXVtTG9naWNhbFRvcCwgKm1heGltdW1Mb2dpY2FsQm90dG9tIH0p
OwpAQCAtNDY0LDcgKzQ2NSw3IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94
SGVpZ2h0QW5kQWxpZ25JbmxpbmVMZXZlbEJveGVzVmVydGljYWxseShMaW5lCiAgICAgICAgICAg
ICBhdXRvIGFic29sdXRlTG9naWNhbEJvdHRvbSA9IGFic29sdXRlTG9naWNhbFRvcCArIGlubGlu
ZUxldmVsQm94LmxheW91dEJvdW5kcygpLmhlaWdodCgpOwogICAgICAgICAgICAgaW5saW5lTGV2
ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbU1hcC5hZGQoJmlubGluZUxldmVsQm94LCBBYnNvbHV0
ZVRvcEFuZEJvdHRvbSB7IGFic29sdXRlTG9naWNhbFRvcCwgYWJzb2x1dGVMb2dpY2FsQm90dG9t
IH0pOwogICAgICAgICAgICAgLy8gU3RyZXRjaCB0aGUgbWluL21heCBhYnNvbHV0ZSB2YWx1ZXMg
aWYgYXBwbGljYWJsZS4KLSAgICAgICAgICAgIGlmIChxdWlya3MuaW5saW5lTGV2ZWxCb3hBZmZl
Y3RzTGluZUJveChpbmxpbmVMZXZlbEJveCwgbGluZUJveCkpIHsKKyAgICAgICAgICAgIGlmIChm
b3JtYXR0aW5nR2VvbWV0cnkuaW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveChpbmxpbmVMZXZl
bEJveCwgbGluZUJveCkpIHsKICAgICAgICAgICAgICAgICBtaW5pbXVtTG9naWNhbFRvcCA9IHN0
ZDo6bWluKG1pbmltdW1Mb2dpY2FsVG9wLnZhbHVlT3IoYWJzb2x1dGVMb2dpY2FsVG9wKSwgYWJz
b2x1dGVMb2dpY2FsVG9wKTsKICAgICAgICAgICAgICAgICBtYXhpbXVtTG9naWNhbEJvdHRvbSA9
IHN0ZDo6bWF4KG1heGltdW1Mb2dpY2FsQm90dG9tLnZhbHVlT3IoYWJzb2x1dGVMb2dpY2FsQm90
dG9tKSwgYWJzb2x1dGVMb2dpY2FsQm90dG9tKTsKICAgICAgICAgICAgIH0KQEAgLTQ3NCw3ICs0
NzUsNyBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjpjb21wdXRlTGluZUJveEhlaWdodEFuZEFsaWdu
SW5saW5lTGV2ZWxCb3hlc1ZlcnRpY2FsbHkoTGluZQogICAgICAgICAvLyAyLiBDaGVjayBpZiB0
aGUgbGluZSBib3ggcmVsYXRpdmUgYWxpZ25lZCBpbmxpbmUgYm94ZXMgKHRvcCwgYm90dG9tIGV0
YykgaGF2ZSBlbm91Z2ggcm9vbSBhbmQgc3RyZXRjaCB0aGUgbGluZSBib3ggZnVydGhlciBpZiBu
ZWVkZWQuCiAgICAgICAgIGF1dG8gbGluZUJveExvZ2ljYWxIZWlnaHQgPSBtYXhpbXVtTG9naWNh
bEJvdHRvbS52YWx1ZU9yKElubGluZUxheW91dFVuaXQoKSkgLSBtaW5pbXVtTG9naWNhbFRvcC52
YWx1ZU9yKElubGluZUxheW91dFVuaXQoKSk7CiAgICAgICAgIGZvciAoYXV0byogbGluZUJveFJl
bGF0aXZlSW5saW5lTGV2ZWxCb3ggOiBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzKSB7
Ci0gICAgICAgICAgICBpZiAoIXF1aXJrcy5pbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KCps
aW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveCwgbGluZUJveCkpCisgICAgICAgICAgICBpZiAo
IWZvcm1hdHRpbmdHZW9tZXRyeS5pbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KCpsaW5lQm94
UmVsYXRpdmVJbmxpbmVMZXZlbEJveCwgbGluZUJveCkpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICBsaW5lQm94TG9naWNhbEhlaWdodCA9IHN0ZDo6bWF4KGxpbmVCb3hM
b2dpY2FsSGVpZ2h0LCBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRz
KCkuaGVpZ2h0KCkpOwogICAgICAgICB9CkBAIC00ODcsNyArNDg4LDcgQEAgdm9pZCBMaW5lQm94
QnVpbGRlcjo6Y29tcHV0ZUxpbmVCb3hIZWlnaHRBbmRBbGlnbklubGluZUxldmVsQm94ZXNWZXJ0
aWNhbGx5KExpbmUKICAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0
TWFwLmFkZCgmcm9vdElubGluZUJveCwgSW5saW5lTGF5b3V0VW5pdCB7IH0pOwogCiAgICAgICAg
IGF1dG8gbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgPSBPcHRpb25h
bDxJbmxpbmVMYXlvdXRVbml0PiB7IH07Ci0gICAgICAgIGlmIChxdWlya3MuaW5saW5lTGV2ZWxC
b3hBZmZlY3RzTGluZUJveChyb290SW5saW5lQm94LCBsaW5lQm94KSkKKyAgICAgICAgaWYgKGZv
cm1hdHRpbmdHZW9tZXRyeS5pbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KHJvb3RJbmxpbmVC
b3gsIGxpbmVCb3gpKQogICAgICAgICAgICAgbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5l
Qm94QmFzZWxpbmUgPSByb290SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudDsKIAogICAg
ICAgICBmb3IgKGF1dG8mIGlubGluZUxldmVsQm94IDogbGluZUJveC5ub25Sb290SW5saW5lTGV2
ZWxCb3hlcygpKSB7CkBAIC01NDUsNyArNTQ2LDcgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6Y29t
cHV0ZUxpbmVCb3hIZWlnaHRBbmRBbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5KExpbmUK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpbmxpbmVMZXZl
bEJveEFic29sdXRlQmFzZWxpbmVPZmZzZXRNYXAuYWRkKCZpbmxpbmVMZXZlbEJveCwgYWJzb2x1
dGVCYXNlbGluZU9mZnNldCk7Ci0gICAgICAgICAgICBhdXRvIGFmZmVjdHNSb290SW5saW5lQm94
VmVydGljYWxQb3NpdGlvbiA9IHF1aXJrcy5pbmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KGlu
bGluZUxldmVsQm94LCBsaW5lQm94KTsKKyAgICAgICAgICAgIGF1dG8gYWZmZWN0c1Jvb3RJbmxp
bmVCb3hWZXJ0aWNhbFBvc2l0aW9uID0gZm9ybWF0dGluZ0dlb21ldHJ5LmlubGluZUxldmVsQm94
QWZmZWN0c0xpbmVCb3goaW5saW5lTGV2ZWxCb3gsIGxpbmVCb3gpOwogICAgICAgICAgICAgaWYg
KGFmZmVjdHNSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbikgewogICAgICAgICAgICAgICAg
IGF1dG8gdG9wT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSA9IGFic29sdXRlQmFzZWxp
bmVPZmZzZXQgKyBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CiAgICAgICAg
ICAgICAgICAgaWYgKG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lKQpA
QCAtNzI2LDYgKzcyNywyMSBAQCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIElubGluZUZvcm1hdHRp
bmdHZW9tZXRyeTo6aW5saW5lQmxvY2tDb250ZW50SGVpZ2h0QW5kTWFyZwogICAgIHJldHVybiBj
b21wbGljYXRlZENhc2VzKGxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLCBvdmVycmlk
ZGVuVmVydGljYWxWYWx1ZXMpOwogfQogCitib29sIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6
aW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveChjb25zdCBMaW5lQm94OjpJbmxpbmVMZXZlbEJv
eCYgaW5saW5lTGV2ZWxCb3gsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gpIGNvbnN0Cit7CisgICAg
aWYgKGlubGluZUxldmVsQm94LmlzSW5saW5lQm94KCkgfHwgaW5saW5lTGV2ZWxCb3guaXNMaW5l
QnJlYWtCb3goKSkKKyAgICAgICAgcmV0dXJuIGxheW91dFN0YXRlKCkuaW5TdGFuZGFyZHNNb2Rl
KCkgPyB0cnVlIDogSW5saW5lRm9ybWF0dGluZ1F1aXJrcyhmb3JtYXR0aW5nQ29udGV4dCgpKS5p
bmxpbmVMZXZlbEJveEFmZmVjdHNMaW5lQm94KGlubGluZUxldmVsQm94LCBsaW5lQm94KTsKKyAg
ICBpZiAoaW5saW5lTGV2ZWxCb3guaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpKSB7CisgICAgICAg
IGlmIChpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAvLyBXaGlsZSBpbiBwcmFjdGljZSB3aGVuIHRoZSBuZWdh
dGl2ZSB2ZXJ0aWNhbCBtYXJnaW4gbWFrZXMgdGhlIGxheW91dCBib3VuZHMgZW1wdHkgKGUuZzog
aGVpZ2h0OiAxMDBweDsgbWFyZ2luLXRvcDogLTEwMHB4OyksIGFuZCB0aGlzIGlubGluZQorICAg
ICAgICAvLyBsZXZlbCBib3ggY29udHJpYnV0ZXMgMHB4IHRvIHRoZSBsaW5lIGJveCBoZWlnaHQs
IGl0IHN0aWxsIG5lZWRzIHRvIGJlIHRha2VuIGludG8gYWNjb3VudCB3aGlsZSBjb21wdXRpbmcg
bGluZSBib3ggZ2VvbWV0cmllcy4KKyAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0
aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGlubGluZUxldmVsQm94LmxheW91dEJveCgpKTsK
KyAgICAgICAgcmV0dXJuIGJveEdlb21ldHJ5Lm1hcmdpbkJlZm9yZSgpIHx8IGJveEdlb21ldHJ5
Lm1hcmdpbkFmdGVyKCk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oCmluZGV4IGVk
NDlhZTkyNTAxZTE2NWQwOGI2MzdiMjRjMzU2MTY3Yjc5YWVjNzYuLjgzZmQ4NGNiMDUzZDdkYTRj
NmI0YjViYzJiZGM1NzdmZTYxMTViMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUZvcm1hdHRpbmdHZW9tZXRyeS5oCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICBDb250
ZW50SGVpZ2h0QW5kTWFyZ2luIGlubGluZUJsb2NrQ29udGVudEhlaWdodEFuZE1hcmdpbihjb25z
dCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBPdmVycmlkZGVuVmVy
dGljYWxWYWx1ZXMmKSBjb25zdDsKICAgICBDb250ZW50V2lkdGhBbmRNYXJnaW4gaW5saW5lQmxv
Y2tDb250ZW50V2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0
cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGRlbkhvcml6b250YWxWYWx1ZXMmKTsKIAorICAgIGJvb2wg
aW5saW5lTGV2ZWxCb3hBZmZlY3RzTGluZUJveChjb25zdCBMaW5lQm94OjpJbmxpbmVMZXZlbEJv
eCYsIGNvbnN0IExpbmVCb3gmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBjb25zdCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBkb3du
Y2FzdDxJbmxpbmVGb3JtYXR0aW5nQ29udGV4dD4oRm9ybWF0dGluZ0dlb21ldHJ5Ojpmb3JtYXR0
aW5nQ29udGV4dCgpKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdRdWlya3MuY3BwCmluZGV4IGIzODZjMWVmMDYyMzIxYzI2OWM5MWIxZTQ0NzFhNDQwMTU5Y2Fj
MWUuLmVjYWE5MWEwMDU1ZWU2NTM4OWZmOGRmNmI5NzEwMDY3NGVmNDc4Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCkBAIC00MCwxOCArNDAs
MTYgQEAgSW5saW5lRm9ybWF0dGluZ1F1aXJrczo6SW5saW5lRm9ybWF0dGluZ1F1aXJrcyhjb25z
dCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW4KIAogSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVG
b3JtYXR0aW5nUXVpcmtzOjppbml0aWFsTGluZUhlaWdodCgpIGNvbnN0CiB7CisgICAgQVNTRVJU
KCFsYXlvdXRTdGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpKTsKICAgICAvLyBOZWdhdGl2ZSBsaW5l
SGVpZ2h0IHZhbHVlIG1lYW5zIHRoZSBsaW5lLWhlaWdodCBpcyBub3Qgc2V0Ci0gICAgYXV0byYg
cm9vdCA9IGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpOwotICAgIGlmIChsYXlvdXRTdGF0ZSgp
LmluU3RhbmRhcmRzTW9kZSgpIHx8ICFyb290LnN0eWxlKCkubGluZUhlaWdodCgpLmlzTmVnYXRp
dmUoKSkKLSAgICAgICAgcmV0dXJuIHJvb3Quc3R5bGUoKS5jb21wdXRlZExpbmVIZWlnaHQoKTsK
LSAgICByZXR1cm4gcm9vdC5zdHlsZSgpLmZvbnRNZXRyaWNzKCkuZmxvYXRIZWlnaHQoKTsKKyAg
ICBhdXRvJiByb290U3R5bGUgPSBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKS5zdHlsZSgpOwor
ICAgIHJldHVybiByb290U3R5bGUubGluZUhlaWdodCgpLmlzTmVnYXRpdmUoKSA/IHJvb3RTdHls
ZS5mb250TWV0cmljcygpLmZsb2F0SGVpZ2h0KCkgOiByb290U3R5bGUuY29tcHV0ZWRMaW5lSGVp
Z2h0KCk7CiB9CiAKIGJvb2wgSW5saW5lRm9ybWF0dGluZ1F1aXJrczo6aW5saW5lTGV2ZWxCb3hB
ZmZlY3RzTGluZUJveChjb25zdCBMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYgaW5saW5lTGV2ZWxC
b3gsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gpIGNvbnN0CiB7CisgICAgQVNTRVJUKCFsYXlvdXRT
dGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpKTsKICAgICBpZiAoaW5saW5lTGV2ZWxCb3guaXNMaW5l
QnJlYWtCb3goKSkgewotICAgICAgICBpZiAobGF5b3V0U3RhdGUoKS5pblN0YW5kYXJkc01vZGUo
KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAvLyBJbiBxdWlya3MgbW9kZSBs
aW5lYnJlYWsgYm94ZXMgKDxicj4pIHN0b3AgYWZmZWN0aW5nIHRoZSBsaW5lIGJveCB3aGVuIChh
c3N1bWUgPGJyPiBpcyBuZXN0ZWQgZS5nLiA8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMDBweCI+
PGJyPjwvc3Bhbj4pCiAgICAgICAgIC8vIDEuIHRoZSByb290IGlubGluZSBib3ggaGFzIGNvbnRl
bnQgPGRpdj5jb250ZW50PGJyPi9kaXY+CiAgICAgICAgIC8vIDIuIHRoZXJlJ3MgYXQgbGVhc3Qg
b25lIGF0b21pYyBpbmxpbmUgbGV2ZWwgYm94IG9uIHRoZSBsaW5lIGUuZyA8ZGl2PjxpbWc+PGJy
PjwvZGl2PiBvciA8ZGl2PjxzcGFuPjxpbWc+PC9zcGFuPjxicj48L2Rpdj4KQEAgLTc0LDggKzcy
LDcgQEAgYm9vbCBJbmxpbmVGb3JtYXR0aW5nUXVpcmtzOjppbmxpbmVMZXZlbEJveEFmZmVjdHNM
aW5lQm94KGNvbnN0IExpbmVCb3g6OklubGluZUwKICAgICB9CiAgICAgaWYgKGlubGluZUxldmVs
Qm94LmlzSW5saW5lQm94KCkpIHsKICAgICAgICAgLy8gSW5saW5lIGJveGVzIChlLmcuIHJvb3Qg
aW5saW5lIGJveCBvciA8c3Bhbj4pIGFmZmVjdHMgbGluZSBib3hlcyBlaXRoZXIgdGhyb3VnaCB0
aGUgc3RydXQgb3IgYWN0dWFsIGNvbnRlbnQuCi0gICAgICAgIGF1dG8gaW5saW5lQm94SGFzSW1h
Z2luYXJ5U3RydXQgPSBsYXlvdXRTdGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpOwotICAgICAgICBp
ZiAoaW5saW5lTGV2ZWxCb3guaGFzQ29udGVudCgpIHx8IGlubGluZUJveEhhc0ltYWdpbmFyeVN0
cnV0KQorICAgICAgICBpZiAoaW5saW5lTGV2ZWxCb3guaGFzQ29udGVudCgpKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChpbmxpbmVMZXZlbEJveC5pc1Jvb3RJbmxpbmVC
b3goKSkgewogICAgICAgICAgICAgLy8gVGhpcyByb290IGlubGluZSBib3ggaGFzIG5vIGRpcmVj
dCB0ZXh0IGNvbnRlbnQgYW5kIHdlIGFyZSBpbiBub24tc3RhbmRhcmRzIG1vZGUuCkBAIC05NCwx
NCArOTEsNyBAQCBib29sIElubGluZUZvcm1hdHRpbmdRdWlya3M6OmlubGluZUxldmVsQm94QWZm
ZWN0c0xpbmVCb3goY29uc3QgTGluZUJveDo6SW5saW5lTAogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9Ci0gICAgaWYgKGlubGluZUxldmVsQm94LmlzQXRvbWljSW5saW5l
TGV2ZWxCb3goKSkgewotICAgICAgICBpZiAoaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm91bmRzKCku
aGVpZ2h0KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgLy8gV2hpbGUgaW4g
cHJhY3RpY2Ugd2hlbiB0aGUgbmVnYXRpdmUgdmVydGljYWwgbWFyZ2luIG1ha2VzIHRoZSBsYXlv
dXQgYm91bmRzIGVtcHR5IChlLmc6IGhlaWdodDogMTAwcHg7IG1hcmdpbi10b3A6IC0xMDBweDsp
LCBhbmQgdGhpcyBpbmxpbmUKLSAgICAgICAgLy8gbGV2ZWwgYm94IGNvbnRyaWJ1dGVzIDBweCB0
byB0aGUgbGluZSBib3ggaGVpZ2h0LCBpdCBzdGlsbCBuZWVkcyB0byBiZSB0YWtlbiBpbnRvIGFj
Y291bnQgd2hpbGUgY29tcHV0aW5nIGxpbmUgYm94IGdlb21ldHJpZXMuCi0gICAgICAgIGF1dG8m
IGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChpbmxpbmVM
ZXZlbEJveC5sYXlvdXRCb3goKSk7Ci0gICAgICAgIHJldHVybiBib3hHZW9tZXRyeS5tYXJnaW5C
ZWZvcmUoKSB8fCBib3hHZW9tZXRyeS5tYXJnaW5BZnRlcigpOwotICAgIH0KKyAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdRdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuaAppbmRleCA3YmZmM2ZiZjU4MGE5OWRlYjA3ODYw
MDA0MjhjZmZiNzljOTU4OWIwLi5kOTI3YTA4NDc0NjA4MzA2NjkxY2FmOWVmOTFhNTUzNGQ3OTBj
MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ1F1aXJrcy5oCkBA
IC0zOSwxMSArMzksNiBAQCBwdWJsaWM6CiAgICAgSW5saW5lTGF5b3V0VW5pdCBpbml0aWFsTGlu
ZUhlaWdodCgpIGNvbnN0OwogICAgIGJvb2wgaGFzU29mdFdyYXBPcHBvcnR1bml0eUF0SW1hZ2Uo
KSBjb25zdDsKICAgICBib29sIGlubGluZUxldmVsQm94QWZmZWN0c0xpbmVCb3goY29uc3QgTGlu
ZUJveDo6SW5saW5lTGV2ZWxCb3gmLCBjb25zdCBMaW5lQm94JikgY29uc3Q7Ci0KLXByaXZhdGU6
Ci0KLSAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQo
KSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nQ29udGV4dD4oRm9ybWF0
dGluZ1F1aXJrczo6Zm9ybWF0dGluZ0NvbnRleHQoKSk7IH0KLQogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZv
cm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNGYwNmIyOWRjNjQ4
YjE3MjNkMjRjNzNmOTg1NjViNzg0MDkzZTY5Yy4uOWEyMDU4NTM5MjU3ZDNhOTAxY2IzY2FjMTcz
ZmQzYWFlOTFmYjAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgog
I2luY2x1ZGUgIkxheW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCIKICNpbmNsdWRlICJUYWJs
ZUZvcm1hdHRpbmdHZW9tZXRyeS5oIgotI2luY2x1ZGUgIlRhYmxlRm9ybWF0dGluZ1F1aXJrcy5o
IgogI2luY2x1ZGUgIlRhYmxlRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KIApAQCAtNTIxLDEyICs1MjAsNiBAQCBUYWJsZUZvcm1hdHRpbmdHZW9t
ZXRyeSBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpnZW9tZXRyeSgpIGNvbnN0CiAgICAgcmV0dXJu
IFRhYmxlRm9ybWF0dGluZ0dlb21ldHJ5KCp0aGlzLCBmb3JtYXR0aW5nU3RhdGUoKS50YWJsZUdy
aWQoKSk7CiB9CiAKLVRhYmxlRm9ybWF0dGluZ1F1aXJrcyBUYWJsZUZvcm1hdHRpbmdDb250ZXh0
OjpxdWlya3MoKSBjb25zdAotewotICAgIHJldHVybiBUYWJsZUZvcm1hdHRpbmdRdWlya3MoKnRo
aXMpOwotfQotCi0KIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0Nv
bnRleHQuaAppbmRleCA1OWU4Y2VjOWJiZjg2MDA3YTZmMmFhMzAxYWYwZWFiZGM0NjQ4ZjEyLi4y
YjFmMGFiOTRhMzE0MDJhZjM0YWE4YWNjZGFjMDMyYmNhY2EyYTMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGlu
Z0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtMzgsNyArMzgsNiBAQCBuYW1lc3Bh
Y2UgTGF5b3V0IHsKIAogY2xhc3MgSW52YWxpZGF0aW9uU3RhdGU7CiBjbGFzcyBUYWJsZUZvcm1h
dHRpbmdHZW9tZXRyeTsKLWNsYXNzIFRhYmxlRm9ybWF0dGluZ1F1aXJrczsKIAogLy8gVGhpcyBj
bGFzcyBpbXBsZW1lbnRzIHRoZSBsYXlvdXQgbG9naWMgZm9yIHRhYmxlIGZvcm1hdHRpbmcgY29u
dGV4dHMuCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjIvdGFibGVzLmh0bWwKQEAgLTc5
LDcgKzc4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVBbmREaXN0cmlidXRlRXh0cmFT
cGFjZShMYXlvdXRVbml0IGF2YWlsYWJsZUhvcml6b250YWxTcGFjZSwgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gYXZhaWxhYmxlVmVydGljYWxTcGFjZSk7CiAKICAgICBUYWJsZUZvcm1hdHRpbmdHZW9t
ZXRyeSBnZW9tZXRyeSgpIGNvbnN0OwotICAgIFRhYmxlRm9ybWF0dGluZ1F1aXJrcyBxdWlya3Mo
KSBjb25zdDsKICAgICBjb25zdCBUYWJsZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRl
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8VGFibGVGb3JtYXR0aW5nU3RhdGU+KEZvcm1hdHRp
bmdDb250ZXh0Ojpmb3JtYXR0aW5nU3RhdGUoKSk7IH0KICAgICBUYWJsZUZvcm1hdHRpbmdTdGF0
ZSYgZm9ybWF0dGluZ1N0YXRlKCkgeyByZXR1cm4gZG93bmNhc3Q8VGFibGVGb3JtYXR0aW5nU3Rh
dGU+KEZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5nU3RhdGUoKSk7IH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxl
Rm9ybWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCmluZGV4IDhkNDZhZWM2
NjVhZTI5Yzg5NTk0ZmZkMmVmMDJmYWZhZjJhZDdjYWEuLmI5MTFhMmFmODI1OTUzNDZmMDQ5NTBh
YTFhMjdjODg4Nzc3MTZiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0
aW5nR2VvbWV0cnkuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTGF5b3V0Q29udGV4
dC5oIgogI2luY2x1ZGUgIkxheW91dERlc2NlbmRhbnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkxh
eW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCIKKyNpbmNsdWRlICJUYWJsZUZvcm1hdHRpbmdR
dWlya3MuaCIKICNpbmNsdWRlICJUYWJsZUZvcm1hdHRpbmdTdGF0ZS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00OCw3ICs0OSw3IEBAIExheW91dFVuaXQgVGFibGVGb3JtYXR0aW5nR2Vv
bWV0cnk6OmNlbGxIZWlnaChjb25zdCBDb250YWluZXJCb3gmIGNlbGxCb3gpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGNlbGxCb3guaXNJbkZsb3coKSk7CiAgICAgYXV0byBjb250ZW50SGVpZ2h0ID0g
TGF5b3V0VW5pdCB7IH07Ci0gICAgaWYgKFRhYmxlRm9ybWF0dGluZ1F1aXJrcyhmb3JtYXR0aW5n
Q29udGV4dCgpKS5zaG91bGRJZ25vcmVDaGlsZENvbnRlbnRWZXJ0aWNhbE1hcmdpbihjZWxsQm94
KSkgeworICAgIGlmIChsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpICYmIFRhYmxlRm9ybWF0
dGluZ1F1aXJrczo6c2hvdWxkSWdub3JlQ2hpbGRDb250ZW50VmVydGljYWxNYXJnaW4oY2VsbEJv
eCkpIHsKICAgICAgICAgQVNTRVJUKGNlbGxCb3guZmlyc3RJbkZsb3dDaGlsZCgpKTsKICAgICAg
ICAgYXV0byBmb3JtYXR0aW5nQ29udGV4dCA9IHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KCk7CiAg
ICAgICAgIGF1dG8mIGZpcnN0SW5GbG93Q2hpbGQgPSAqY2VsbEJveC5maXJzdEluRmxvd0NoaWxk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L3RhYmxlL1RhYmxlRm9ybWF0dGluZ1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1F1aXJrcy5jcHAKaW5kZXgg
NzczOWM0MWRkNTUwZWQ5OTQwMzNlODNhMzg3ZTZlOGY5ZjhlNTU2OS4uNjMwZWI4MThhYzEwZDAz
ZGQ4ZTM2ZTAyYTk2MzRkMjk2OGQyNWIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdRdWlya3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFibGVG
b3JtYXR0aW5nUXVpcmtzLmNwcApAQCAtMzgsMTcgKzM4LDE2IEBAIG5hbWVzcGFjZSBMYXlvdXQg
ewogVGFibGVGb3JtYXR0aW5nUXVpcmtzOjpUYWJsZUZvcm1hdHRpbmdRdWlya3MoY29uc3QgVGFi
bGVGb3JtYXR0aW5nQ29udGV4dCYgdGFibGVGb3JtYXR0aW5nQ29udGV4dCkKICAgICA6IEZvcm1h
dHRpbmdRdWlya3ModGFibGVGb3JtYXR0aW5nQ29udGV4dCkKIHsKKyAgICBBU1NFUlQobGF5b3V0
U3RhdGUoKS5pblF1aXJrc01vZGUoKSk7CiB9CiAKLWJvb2wgVGFibGVGb3JtYXR0aW5nUXVpcmtz
OjpzaG91bGRJZ25vcmVDaGlsZENvbnRlbnRWZXJ0aWNhbE1hcmdpbihjb25zdCBDb250YWluZXJC
b3gmIGNlbGxCb3gpIGNvbnN0Citib29sIFRhYmxlRm9ybWF0dGluZ1F1aXJrczo6c2hvdWxkSWdu
b3JlQ2hpbGRDb250ZW50VmVydGljYWxNYXJnaW4oY29uc3QgQ29udGFpbmVyQm94JiBjZWxsQm94
KQogewogICAgIC8vIE5vcm1hbGx5IEJGQyByb290IGNvbnRlbnQgaGVpZ2h0IHRha2VzIHRoZSBt
YXJnaW4gYm94IG9mIHRoZSBjaGlsZCBjb250ZW50IGFzIHZlcnRpY2FsIG1hcmdpbnMgZG9uJ3Qg
Y29sbGFwc2Ugd2l0aCBCRkMgcm9vdHMsCiAgICAgLy8gYnV0IHRhYmxlIGNlbGwgYm94ZXMgZG8g
Y29sbGFwc2UgdGhlaXIgKG5vbi1leGlzdGluZykgbWFyZ2lucyB3aXRoIGNoaWxkIHF1aXJrIG1h
cmdpbnMgKHNvIG11Y2ggcXVpcmspLCBzbyBoZXJlIHdlIGNoZWNrCiAgICAgLy8gaWYgdGhlIGNv
bnRlbnQgaGVpZ2h0IHNob3VsZCBpbmNsdWRlIG1hcmdpbnMgb3Igbm90LgogICAgIC8vIGUuZyA8
dGFibGU+PHRyPjx0ZD48cD50ZXh0IGNvbnRlbnQ8L3RkPjwvdHI+PC90YWJsZT4gPC0gPHA+J3Mg
cXVpcmsgbWFyZ2luIGNvbGxhcHNlcyB3aXRoIHRoZSA8dGQ+IHNvIGl0cyBjb250ZW50CiAgICAg
Ly8gaGVpZ2h0IHNob3VsZCBub3QgaW5jbHVkZSB2ZXJ0aWNhbCBtYXJnaW5zLgotICAgIGlmICgh
bGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmIChjZWxsQm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghY2VsbEJveC5oYXNJbkZsb3dDaGlsZCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9U
YWJsZUZvcm1hdHRpbmdRdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nUXVpcmtzLmgKaW5kZXggYjJhODQxMDY1NDU0
YjEwODYwYTNmYzg2ZTRiODRmMTIwZDIyNzkyYS4uYmFiM2U0ZjZiMmQyYmM5MjBlOTRlZGViMzM0
YjBiZTY2M2Q1ZTkwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdRdWlya3MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ1F1aXJr
cy5oCkBAIC0zNiwxMCArMzYsNyBAQCBjbGFzcyBUYWJsZUZvcm1hdHRpbmdRdWlya3MgOiBwdWJs
aWMgRm9ybWF0dGluZ1F1aXJrcyB7CiBwdWJsaWM6CiAgICAgVGFibGVGb3JtYXR0aW5nUXVpcmtz
KGNvbnN0IFRhYmxlRm9ybWF0dGluZ0NvbnRleHQmKTsKIAotICAgIGJvb2wgc2hvdWxkSWdub3Jl
Q2hpbGRDb250ZW50VmVydGljYWxNYXJnaW4oY29uc3QgQ29udGFpbmVyQm94JikgY29uc3Q7Ci0K
LXByaXZhdGU6Ci0gICAgY29uc3QgVGFibGVGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0Nv
bnRleHQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxUYWJsZUZvcm1hdHRpbmdDb250ZXh0PihG
b3JtYXR0aW5nUXVpcmtzOjpmb3JtYXR0aW5nQ29udGV4dCgpKTsgfQorICAgIHN0YXRpYyBib29s
IHNob3VsZElnbm9yZUNoaWxkQ29udGVudFZlcnRpY2FsTWFyZ2luKGNvbnN0IENvbnRhaW5lckJv
eCYpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1
aWxkZXIuY3BwCmluZGV4IGRjZjMzZDQ4NDg0NTJmYjNmYWUzNTFjMDNkNjM0MGFlYjUwZWMwYmMu
LmM2NmI0M2M0ZTA0NDE3YjA3MTg5NzM2YWQzN2NlNDllZjNlZTc2MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNv
bnRlbnRCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5jcHAKQEAgLTMwLDcgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkJpZGlSZXNvbHZlci5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRp
bmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1F1aXJrcy5oIgorI2luY2x1
ZGUgIklubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRp
bmdTdGF0ZS5oIgogI2luY2x1ZGUgIkxheW91dEJveEdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiTGF5
b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmgiCkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBJbmxpbmVD
b250ZW50QnVpbGRlcjo6Y3JlYXRlRGlzcGxheUxpbmVzKGNvbnN0IExheW91dDo6SW5saW5lRm9y
bWF0dGluZ1N0YXQKIHZvaWQgSW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlOb25S
b290SW5saW5lQm94ZXMoY29uc3QgTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQsIElubGluZUNvbnRlbnQmIGlubGluZUNvbnRlbnQpIGNvbnN0
CiB7CiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gaW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuZm9ybWF0dGluZ1N0YXRlKCk7Ci0gICAgYXV0byBpbmxpbmVRdWlya3MgPSBMYXlvdXQ6
OklubGluZUZvcm1hdHRpbmdRdWlya3MgeyBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCB9OworICAg
IGF1dG8gaW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5ID0gTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5n
R2VvbWV0cnkgeyBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCB9OwogICAgIGZvciAoc2l6ZV90IGxp
bmVJbmRleCA9IDA7IGxpbmVJbmRleCA8IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMo
KS5zaXplKCk7ICsrbGluZUluZGV4KSB7CiAgICAgICAgIGF1dG8mIGxpbmVCb3ggPSBpbmxpbmVG
b3JtYXR0aW5nU3RhdGUubGluZUJveGVzKClbbGluZUluZGV4XTsKICAgICAgICAgaWYgKCFsaW5l
Qm94Lmhhc0lubGluZUJveCgpKQpAQCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQgSW5saW5lQ29udGVu
dEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlOb25Sb290SW5saW5lQm94ZXMoY29uc3QgTGF5b3V0OjpJ
bmxpbmVGCiAgICAgICAgICAgICBhdXRvIGlubGluZUJveFJlY3QgPSBsaW5lQm94LmxvZ2ljYWxC
b3JkZXJCb3hGb3JJbmxpbmVCb3gobGF5b3V0Qm94LCBib3hHZW9tZXRyeSk7CiAgICAgICAgICAg
ICBpbmxpbmVCb3hSZWN0Lm1vdmVCeShsaW5lQm94TG9naWNhbFJlY3QudG9wTGVmdCgpKTsKIAot
ICAgICAgICAgICAgaW5saW5lQ29udGVudC5ub25Sb290SW5saW5lQm94ZXMuYXBwZW5kKHsgbGlu
ZUluZGV4LCBsYXlvdXRCb3gsIGlubGluZUJveFJlY3QsIGlubGluZVF1aXJrcy5pbmxpbmVMZXZl
bEJveEFmZmVjdHNMaW5lQm94KGlubGluZUxldmVsQm94LCBsaW5lQm94KSB9KTsKKyAgICAgICAg
ICAgIGlubGluZUNvbnRlbnQubm9uUm9vdElubGluZUJveGVzLmFwcGVuZCh7IGxpbmVJbmRleCwg
bGF5b3V0Qm94LCBpbmxpbmVCb3hSZWN0LCBpbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaW5saW5l
TGV2ZWxCb3hBZmZlY3RzTGluZUJveChpbmxpbmVMZXZlbEJveCwgbGluZUJveCkgfSk7CiAgICAg
ICAgIH0KICAgICB9CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>