<?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>260776</bug_id>
          
          <creation_ts>2023-08-27 09:52:13 -0700</creation_ts>
          <short_desc>[IFC] Use opaque InlineItem to compute out-of-flow static position</short_desc>
          <delta_ts>2023-08-30 09:30:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1973826</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2023-08-27 09:52:13 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1973827</commentid>
    <comment_count>1</comment_count>
      <attachid>467454</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-08-27 09:57:32 -0700</bug_when>
    <thetext>Created attachment 467454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1973842</commentid>
    <comment_count>2</comment_count>
      <attachid>467455</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-08-27 19:25:29 -0700</bug_when>
    <thetext>Created attachment 467455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1973998</commentid>
    <comment_count>3</comment_count>
      <attachid>467468</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-08-28 12:37:39 -0700</bug_when>
    <thetext>Created attachment 467468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1974039</commentid>
    <comment_count>4</comment_count>
      <attachid>467470</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-08-28 15:14:34 -0700</bug_when>
    <thetext>Created attachment 467470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1974060</commentid>
    <comment_count>5</comment_count>
      <attachid>467472</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-08-28 15:49:23 -0700</bug_when>
    <thetext>Created attachment 467472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1974112</commentid>
    <comment_count>6</comment_count>
      <attachid>467476</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-08-28 19:36:25 -0700</bug_when>
    <thetext>Created attachment 467476
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1974120</commentid>
    <comment_count>7</comment_count>
      <attachid>467478</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-08-28 20:34:26 -0700</bug_when>
    <thetext>Created attachment 467478
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1974143</commentid>
    <comment_count>8</comment_count>
      <attachid>467478</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2023-08-28 22:54:27 -0700</bug_when>
    <thetext>Comment on attachment 467478
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=467478&amp;action=review

&gt; COMMIT_MESSAGE:6
&gt; +Let&apos;s replace existing out-of-flow handling with using opaque inline items instead.

Nice!

&gt; Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp:884
&gt; +    auto formattingContext = this-&gt;formattingContext();

Does this purposefully create a copy of the formatting context?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1974207</commentid>
    <comment_count>9</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2023-08-29 07:14:26 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #8)
&gt; Comment on attachment 467478 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=467478&amp;action=review
&gt; 
&gt; &gt; COMMIT_MESSAGE:6
&gt; &gt; +Let&apos;s replace existing out-of-flow handling with using opaque inline items instead.
&gt; 
&gt; Nice!
&gt; 
&gt; &gt; Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayContentBuilder.cpp:884
&gt; &gt; +    auto formattingContext = this-&gt;formattingContext();
&gt; 
&gt; Does this purposefully create a copy of the formatting context?
certainly not! good catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1974211</commentid>
    <comment_count>10</comment_count>
      <attachid>467481</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-08-29 07:20:33 -0700</bug_when>
    <thetext>Created attachment 467481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1974447</commentid>
    <comment_count>11</comment_count>
      <attachid>467491</attachid>
    <who name="alan">zalan</who>
    <bug_when>2023-08-30 07:31:05 -0700</bug_when>
    <thetext>Created attachment 467491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1974468</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-08-30 09:29:17 -0700</bug_when>
    <thetext>Committed 267456@main (bac664c02d19): &lt;https://commits.webkit.org/267456@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 467491.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1974469</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-08-30 09:30:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/114705938&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467454</attachid>
            <date>2023-08-27 09:57:32 -0700</date>
            <delta_ts>2023-08-27 19:25:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-260776-20230827095731.patch</filename>
            <type>text/plain</type>
            <size>46584</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA2Y2RlYWRmOTA5ZTQ5MWY3MTU0ZmZiYTJhZjIxNzE2YTRjOTVmZDg4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFN1biwgMjcgQXVnIDIwMjMgMDk6NTI6MjMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBV
c2Ugb3BhcXVlIElubGluZUl0ZW0gdG8gY29tcHV0ZSBvdXQtb2YtZmxvdyBzdGF0aWMKIHBvc2l0
aW9uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjA3NzYKClJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL291dC1vZi1m
bG93LWJlY29tZXMtZmxvYXQtY3Jhc2guaHRtbDoKKiBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL3Bv
c2l0aW9uaW5nL3RyYWlsaW5nLXNwYWNlLXRlc3QuaHRtbDoKKiBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6
CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dB
bmRGbG9hdENvbnRlbnQpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6bGF5b3V0RmxvYXRDb250ZW50T25seSk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1h
dHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZvckxpbmUpOgooV2ViQ29yZTo6TGF5
b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudCk6IERl
bGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
U3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KTogRGVsZXRlZC4KKiBTb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OmZpcnN0RGlz
cGxheUJveEluZGV4Rm9yTGF5b3V0Qm94KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6bGFz
dERpc3BsYXlCb3hJbmRleEZvckxheW91dEJveCk6IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6
OnByZXZpb3VzRGlzcGxheUJveEluZGV4KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6bmV4
dERpc3BsYXlCb3hJbmRleCk6IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1h
dHRpbmdHZW9tZXRyeTo6Y29udGVudExlZnRBZnRlckxhc3RMaW5lIGNvbnN0KTogRGVsZXRlZC4K
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlv
bkZvck91dE9mRmxvd0lubGluZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxv
d0Jsb2NrTGV2ZWxCb3ggY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oOgoqIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1z
QnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0ZW1zQnVpbGRlcjo6YnVpbGQp
OgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVJdGVtc0J1aWxkZXI6OmNvbGxlY3RJbmxpbmVJdGVt
cyk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lSXRlbXNCdWlsZGVyLmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OnJlbW92
ZU92ZXJmbG93aW5nT3VyT2ZGbG93Q29udGVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFw
cGVuZCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZFJlcGxhY2VkSW5saW5lTGV2ZWxC
b3gpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmUuaDoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6TGluZUJv
eDo6bG9naWNhbFJlY3RGb3JPcGFxdWVCb3ggY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaDoKKiBTb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5j
cHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpwbGFjZUlubGluZUFuZEZsb2F0Q29u
dGVudCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRl
cik6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vz
c05vbkJpZGlDb250ZW50KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyOjpwcm9jZXNzQmlkaUNvbnRlbnQpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
Lmg6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y29uc3Ry
YWludHMgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIp
OgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmJ1aWxkIGNvbnN0
KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNw
bGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5oOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVE
aXNwbGF5TGluZUJ1aWxkZXI6OmNvbnN0cmFpbnRzIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHA6
CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6bGF5b3V0KToKKiBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRFbGVtZW50Qm94LmNwcDoKKFdlYkNv
cmU6OkxheW91dDo6RWxlbWVudEJveDo6aGFzT3V0T2ZGbG93Q2hpbGQgY29uc3QpOgoqIFNvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEVsZW1lbnRCb3guaDoKLS0tCiAuLi4v
aW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCAgICAgICAgfCAgMzkgKy0tLQogLi4u
L2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oICAgICAgICAgIHwgICAyIC0KIC4uLi9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCAgICAgICB8IDE2OCAtLS0tLS0tLS0t
LS0tLS0tLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmggICAgICAgICB8
ICAgMyAtCiAuLi4vaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHAgICAgICAgICAgICAgfCAg
MTIgKy0KIC4uLi9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmggICAgICAgICAgICAgICB8ICAg
MiArLQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAgIHwgIDMz
ICsrLS0KIC4uLi9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaCAgICB8ICAg
MiArLQogLi4uL2lubGluZS9JbmxpbmVMaW5lQm94LmNwcCAgICAgICAgICAgICAgICAgIHwgICA3
ICsKIC4uLi9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaCB8ICAgMSAr
CiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcCAgICAgICAgICAgICAgfCAgMTYgKysK
IC4uLi9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAgICB8ICAyOSArKy0K
IC4uLi9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oICAgICB8ICAgNCArLQog
Li4uL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcCAgICAgIHwgICA4ICstCiAu
Li4vaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmggfCAgIDYgKy0KIC4u
Li9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCAgICB8ICAgMSAtCiAuLi4v
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0RWxlbWVudEJveC5jcHAgICAgfCAgIDkgKwogLi4uL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dEVsZW1lbnRCb3guaCAgICAgIHwgICAxICsKIDE4IGZpbGVz
IGNoYW5nZWQsIDEwMiBpbnNlcnRpb25zKCspLCAyNDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDM0ZGE2NjUy
NjFiMi4uYmNhZjE4ZjhlYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuY3BwCkBAIC03MCw3ICs3MCw3IEBAIElubGluZUZvcm1hdHRpbmdDb250
ZXh0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBFbGVtZW50Qm94JiBmb3JtYXR0aW5n
Q29uCiBJbmxpbmVMYXlvdXRSZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dElu
Rmxvd0FuZEZsb2F0Q29udGVudChjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNv
bnN0cmFpbnRzLCBJbmxpbmVMYXlvdXRTdGF0ZSYgaW5saW5lTGF5b3V0U3RhdGUsIGNvbnN0IElu
bGluZURhbWFnZSogbGluZURhbWFnZSkKIHsKICAgICBhdXRvJiBmbG9hdGluZ1N0YXRlID0gaW5s
aW5lTGF5b3V0U3RhdGUucGFyZW50QmxvY2tMYXlvdXRTdGF0ZSgpLmZsb2F0aW5nU3RhdGUoKTsK
LSAgICBpZiAoIXJvb3QoKS5oYXNJbkZsb3dDaGlsZCgpKSB7CisgICAgaWYgKCFyb290KCkuaGFz
SW5GbG93Q2hpbGQoKSAmJiAhcm9vdCgpLmhhc091dE9mRmxvd0NoaWxkKCkpIHsKICAgICAgICAg
Ly8gRmxvYXQgYW5kL29yIG91dC1vZi1mbG93IG9ubHkgY29udGVudCBkb2VzIG5vdCBzdXBwb3J0
IHBhcnRpYWwgbGF5b3V0LgogICAgICAgICBBU1NFUlQoIWxpbmVEYW1hZ2UpOwogICAgICAgICBs
YXlvdXRGbG9hdENvbnRlbnRPbmx5KGNvbnN0cmFpbnRzLCBmbG9hdGluZ1N0YXRlKTsKQEAgLTEx
NCwxMiArMTE0LDYgQEAgSW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXRJbkZsb3dBbmRGbG9hdENvbnRlbnQoY29uc3QgQ28KICAgICByZXR1cm4gbGluZUxh
eW91dChsaW5lQnVpbGRlciwgaW5saW5lSXRlbXMsIG5lZWRzTGF5b3V0UmFuZ2UsIHByZXZpb3Vz
TGluZSgpLCBjb25zdHJhaW50cywgaW5saW5lTGF5b3V0U3RhdGUsIGxpbmVEYW1hZ2UpOwogfQog
Ci12b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRPZkZsb3dDb250ZW50KGNv
bnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYgY29uc3RyYWludHMsIElubGluZUxheW91
dFN0YXRlJiBpbmxpbmVMYXlvdXRTdGF0ZSwgY29uc3QgSW5saW5lRGlzcGxheTo6Q29udGVudCYg
aW5saW5lRGlzcGxheUNvbnRlbnQpCi17Ci0gICAgLy8gQ29sbGVjdGluZyBvdXQtb2YtZmxvdyBi
b3hlcyBoYXBwZW5zIGR1cmluZyB0aGUgaW4tZmxvdyBwaGFzZS4KLSAgICBjb21wdXRlU3RhdGlj
UG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGZvcm1hdHRpbmdTdGF0ZSgpLm91dE9mRmxvd0Jv
eGVzKCksIGNvbnN0cmFpbnRzLCBpbmxpbmVEaXNwbGF5Q29udGVudCwgaW5saW5lTGF5b3V0U3Rh
dGUucGFyZW50QmxvY2tMYXlvdXRTdGF0ZSgpLmZsb2F0aW5nU3RhdGUoKSk7Ci19Ci0KIEludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50
cmluc2ljU2l6ZXMoY29uc3QgSW5saW5lRGFtYWdlKiBsaW5lRGFtYWdlKQogewogICAgIGF1dG8m
IGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGZvcm1hdHRpbmdTdGF0ZSgpOwpAQCAtMjM5LDM3ICsy
MzMsMTAgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0RmxvYXRDb250ZW50
T25seShjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUMKICAgICAgICAgICAgIGZsb2F0aW5nU3Rh
dGUuYXBwZW5kKGZsb2F0aW5nQ29udGV4dC50b0Zsb2F0SXRlbShmbG9hdEJveCwgZmxvYXRCb3hH
ZW9tZXRyeSkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KGlubGluZUl0ZW0uaXNPcGFxdWUoKSkgewotICAgICAgICAgICAgYXV0byYgb3BhcXVlQm94ID0g
aW5saW5lSXRlbS5sYXlvdXRCb3goKTsKLSAgICAgICAgICAgIGlmIChvcGFxdWVCb3guaXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogc2V0IHRoZSBz
dGF0aWMgcG9zaXRpb24uCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogfQogCi12
b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRP
ZkZsb3dDb250ZW50KGNvbnN0IEZvcm1hdHRpbmdTdGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCYgb3V0
T2ZGbG93Qm94ZXMsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3RyYWlu
dHMsIGNvbnN0IElubGluZURpc3BsYXk6OkNvbnRlbnQmIGRpc3BsYXlDb250ZW50LCBjb25zdCBG
bG9hdGluZ1N0YXRlJiBmbG9hdGluZ1N0YXRlKQotewotICAgIC8vIFRoaXMgZnVuY3Rpb24gY29t
cHV0ZXMgdGhlIHN0YXRpYyBwb3NpdGlvbiBmb3Igb3V0LW9mLWZsb3cgY29udGVudCBpbnNpZGUg
dGhlIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQuCi0gICAgLy8gQXMgcGVyIHNwZWMsIHRoZSBz
dGF0aWMgcG9zaXRpb24gb2YgYW4gb3V0LW9mLWZsb3cgYm94IGlzIGNvbXB1dGVkIGFzIGlmIHRo
ZSBwb3NpdGlvbiB3YXMgc2V0IHRvIHN0YXRpYy4KLSAgICAvLyBIb3dldmVyIGl0IGRvZXMgbm90
IG1lYW4gdGhhdCB0aGUgb3V0LW9mLWZsb3cgYm94IHNob3VsZCBiZSBpbnZvbHZlZCBpbiB0aGUg
aW5saW5lIGxheW91dCBwcm9jZXNzLgotICAgIC8vIEluc3RlYWQgd2UgZmlndXJlIG91dCB0aGlz
IHN0YXRpYyBwb3NpdGlvbiBhZnRlciB0aGUgaW5saW5lIGxheW91dCBieSBsb29raW5nIGF0IHRo
ZSBwcmV2aW91cy9uZXh0IHNpYmxpbmcgKG9yIHBhcmVudCkgYm94J3MgZ2VvbWV0cnkgYW5kCi0g
ICAgLy8gcGxhY2UgdGhlIG91dC1vZi1mbG93IGJveCBhdCB0aGUgbG9naWNhbCByaWdodCBwb3Np
dGlvbi4KLSAgICBhdXRvJiBmb3JtYXR0aW5nR2VvbWV0cnkgPSB0aGlzLT5mb3JtYXR0aW5nR2Vv
bWV0cnkoKTsKLSAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3Rh
dGUoKTsKLSAgICBhdXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29udGV4dCB7ICp0aGlz
LCBmbG9hdGluZ1N0YXRlIH07Ci0KLSAgICBmb3IgKGF1dG8mIG91dE9mRmxvd0JveCA6IG91dE9m
Rmxvd0JveGVzKSB7Ci0gICAgICAgIGlmIChvdXRPZkZsb3dCb3gtPnN0eWxlKCkuaXNPcmlnaW5h
bERpc3BsYXlJbmxpbmVUeXBlKCkpIHsKLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5ib3hH
ZW9tZXRyeShvdXRPZkZsb3dCb3gpLnNldExvZ2ljYWxUb3BMZWZ0KGZvcm1hdHRpbmdHZW9tZXRy
eS5zdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0lubGluZUxldmVsQm94KG91dE9mRmxvd0JveCwg
Y29uc3RyYWludHMsIGRpc3BsYXlDb250ZW50LCBmbG9hdGluZ0NvbnRleHQpKTsKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5ib3hHZW9t
ZXRyeShvdXRPZkZsb3dCb3gpLnNldExvZ2ljYWxUb3BMZWZ0KGZvcm1hdHRpbmdHZW9tZXRyeS5z
dGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0Jsb2NrTGV2ZWxCb3gob3V0T2ZGbG93Qm94LCBjb25z
dHJhaW50cywgZGlzcGxheUNvbnRlbnQpKTsKLSAgICB9Ci19Ci0KIHN0YXRpYyBMaW5lRW5kaW5n
RWxsaXBzaXNQb2xpY3kgbGluZUVuZGluZ0VsbGlwc2lzUG9saWN5KGNvbnN0IFJlbmRlclN0eWxl
JiByb290U3R5bGUsIHNpemVfdCBudW1iZXJPZkxpbmVzLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4g
bnVtYmVyT2ZWaXNpYmxlTGluZXNBbGxvd2VkKQogewogICAgIC8vIFdlIG1heSBoYXZlIHBhc3Nl
ZCB0aGUgbGluZS1jbGFtcCBsaW5lIHdpdGggb3ZlcmZsb3cgdmlzaWJsZS4KQEAgLTI5Niw4ICsy
NjMsOCBAQCBJbmxpbmVSZWN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5
Q29udGVudEZvckxpbmUoc2l6ZV90IGxpbmVJbmRleAogICAgIGF1dG8gZWxsaXBzaXNQb2xpY3kg
PSBsaW5lRW5kaW5nRWxsaXBzaXNQb2xpY3kocm9vdCgpLnN0eWxlKCksIGxpbmVJbmRleCwgbnVt
YmVyT2ZWaXNpYmxlTGluZXNBbGxvd2VkKTsKICAgICBhdXRvIGxpbmVJc0Z1bGx5VHJ1bmNhdGVk
SW5CbG9ja0RpcmVjdGlvbiA9IG51bWJlck9mVmlzaWJsZUxpbmVzQWxsb3dlZCAmJiBsaW5lSW5k
ZXggKyAxID4gKm51bWJlck9mVmlzaWJsZUxpbmVzQWxsb3dlZDsKICAgICBhdXRvIGxpbmVCb3gg
PSBMaW5lQm94QnVpbGRlciB7ICp0aGlzLCBpbmxpbmVMYXlvdXRTdGF0ZSwgbGluZUxheW91dFJl
c3VsdCB9LmJ1aWxkKGxpbmVJbmRleCk7Ci0gICAgYXV0byBkaXNwbGF5TGluZSA9IElubGluZURp
c3BsYXlMaW5lQnVpbGRlciB7ICp0aGlzIH0uYnVpbGQobGluZUxheW91dFJlc3VsdCwgbGluZUJv
eCwgY29uc3RyYWludHMsIGxpbmVJc0Z1bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbik7Ci0g
ICAgYXV0byBib3hlcyA9IElubGluZURpc3BsYXlDb250ZW50QnVpbGRlciB7ICp0aGlzLCBmb3Jt
YXR0aW5nU3RhdGUoKSwgZGlzcGxheUxpbmUsIGxpbmVJbmRleCB9LmJ1aWxkKGxpbmVMYXlvdXRS
ZXN1bHQsIGxpbmVCb3gpOworICAgIGF1dG8gZGlzcGxheUxpbmUgPSBJbmxpbmVEaXNwbGF5TGlu
ZUJ1aWxkZXIgeyBjb25zdHJhaW50cywgKnRoaXMgfS5idWlsZChsaW5lTGF5b3V0UmVzdWx0LCBs
aW5lQm94LCBsaW5lSXNGdWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24pOworICAgIGF1dG8g
Ym94ZXMgPSBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIgeyBjb25zdHJhaW50cywgKnRoaXMs
IGZvcm1hdHRpbmdTdGF0ZSgpLCBkaXNwbGF5TGluZSwgbGluZUluZGV4IH0uYnVpbGQobGluZUxh
eW91dFJlc3VsdCwgbGluZUJveCk7CiAgICAgaWYgKGF1dG8gZWxsaXBzaXNSZWN0ID0gSW5saW5l
RGlzcGxheUxpbmVCdWlsZGVyOjp0cmFpbGluZ0VsbGlwc2lzVmlzdWFsUmVjdEFmdGVyVHJ1bmNh
dGlvbihlbGxpcHNpc1BvbGljeSwgZGlzcGxheUxpbmUsIGJveGVzLCBsaW5lTGF5b3V0UmVzdWx0
LmlzRmlyc3RMYXN0LmlzTGFzdExpbmVXaXRoSW5saW5lQ29udGVudCkpCiAgICAgICAgIGRpc3Bs
YXlMaW5lLnNldEVsbGlwc2lzVmlzdWFsUmVjdCgqZWxsaXBzaXNSZWN0KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggMTE0MDY4ZjFhNzUy
Li5mMTAxMWRmYmQ2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuaApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiAgICAgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBJbmxpbmVG
b3JtYXR0aW5nU3RhdGUmKTsKIAogICAgIElubGluZUxheW91dFJlc3VsdCBsYXlvdXRJbkZsb3dB
bmRGbG9hdENvbnRlbnQoY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgSW5saW5l
TGF5b3V0U3RhdGUmLCBjb25zdCBJbmxpbmVEYW1hZ2UqID0gbnVsbHB0cik7Ci0gICAgdm9pZCBs
YXlvdXRPdXRPZkZsb3dDb250ZW50KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYs
IElubGluZUxheW91dFN0YXRlJiwgY29uc3QgSW5saW5lRGlzcGxheTo6Q29udGVudCYpOwogICAg
IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgY29tcHV0ZWRJbnRyaW5zaWNTaXplcyhjb25zdCBJ
bmxpbmVEYW1hZ2UqKTsKICAgICBMYXlvdXRVbml0IG1heGltdW1Db250ZW50U2l6ZSgpOwogCkBA
IC03MSw3ICs3MCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5saW5lTGF5b3V0UmVzdWx0
IGxpbmVMYXlvdXQoQWJzdHJhY3RMaW5lQnVpbGRlciYsIGNvbnN0IElubGluZUl0ZW1zJiwgSW5s
aW5lSXRlbVJhbmdlLCBzdGQ6Om9wdGlvbmFsPFByZXZpb3VzTGluZT4sIGNvbnN0IENvbnN0cmFp
bnRzRm9ySW5saW5lQ29udGVudCYsIElubGluZUxheW91dFN0YXRlJiwgY29uc3QgSW5saW5lRGFt
YWdlKiA9IG51bGxwdHIpOwogICAgIHZvaWQgbGF5b3V0RmxvYXRDb250ZW50T25seShjb25zdCBD
b25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmLCBGbG9hdGluZ1N0YXRlJik7Ci0gICAgdm9pZCBj
b21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGNvbnN0IEZvcm1hdHRpbmdT
dGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVu
dCYsIGNvbnN0IElubGluZURpc3BsYXk6OkNvbnRlbnQmLCBjb25zdCBGbG9hdGluZ1N0YXRlJik7
CiAKICAgICB2b2lkIGNvbGxlY3RDb250ZW50SWZOZWVkZWQoKTsKICAgICBJbmxpbmVSZWN0IGNy
ZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShzaXplX3QgbGluZUluZGV4LCBjb25zdCBMaW5lTGF5
b3V0UmVzdWx0JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgY29uc3QgSW5s
aW5lTGF5b3V0U3RhdGUmLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCAzZWNhYzNjYzc1
MmIuLjA5YWI2OTQxMjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0yMDksMTc0ICsyMDksNiBAQCBJbmxpbmVMYXlvdXRVbml0
IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRUZXh0SW5kZW50KElzSW50cmluc2lj
V2lkdGhNbwogICAgIHJldHVybiB7IG1pbmltdW1WYWx1ZUZvckxlbmd0aCh0ZXh0SW5kZW50LCBh
dmFpbGFibGVXaWR0aCkgfTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaXJz
dERpc3BsYXlCb3hJbmRleEZvckxheW91dEJveChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3Qg
SW5saW5lRGlzcGxheTo6Qm94ZXMmIGRpc3BsYXlCb3hlcykKLXsKLSAgICAvLyBGSVhNRTogQnVp
bGQgYSBmaXJzdC9sYXN0IGhhc2htYXAgZm9yIHRoZXNlIGJveGVzLgotICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBkaXNwbGF5Qm94ZXMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAg
ICAgIGlmIChkaXNwbGF5Qm94ZXNbaW5kZXhdLmlzUm9vdElubGluZUJveCgpKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGlmICgmZGlzcGxheUJveGVzW2luZGV4XS5sYXlvdXRCb3go
KSA9PSAmbGF5b3V0Qm94KQotICAgICAgICAgICAgcmV0dXJuIGluZGV4OwotICAgIH0KLSAgICBy
ZXR1cm4geyB9OwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxhc3REaXNwbGF5
Qm94SW5kZXhGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IElubGluZURp
c3BsYXk6OkJveGVzJiBkaXNwbGF5Qm94ZXMpCi17Ci0gICAgLy8gRklYTUU6IEJ1aWxkIGEgZmly
c3QvbGFzdCBoYXNobWFwIGZvciB0aGVzZSBib3hlcy4KLSAgICBmb3IgKGF1dG8gaW5kZXggPSBk
aXNwbGF5Qm94ZXMuc2l6ZSgpOyBpbmRleC0tOykgewotICAgICAgICBpZiAoZGlzcGxheUJveGVz
W2luZGV4XS5pc1Jvb3RJbmxpbmVCb3goKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBpZiAoJmRpc3BsYXlCb3hlc1tpbmRleF0ubGF5b3V0Qm94KCkgPT0gJmxheW91dEJveCkKLSAg
ICAgICAgICAgIHJldHVybiBpbmRleDsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwcmV2aW91c0Rpc3BsYXlCb3hJbmRleChjb25zdCBC
b3gmIG91dE9mRmxvd0JveCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGRpc3BsYXlCb3hl
cykKLXsKLSAgICBhdXRvIHByZXZpb3VzRGlzcGxheUJveEluZGV4T2YgPSBbJl0gKGF1dG8mIGxh
eW91dEJveCkgLT4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IHsKLSAgICAgICAgZm9yIChhdXRvKiBi
b3ggPSAmbGF5b3V0Qm94OyBib3g7IGJveCA9IGJveC0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCkp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvIGRpc3BsYXlCb3hJbmRleCA9IGxhc3REaXNwbGF5Qm94
SW5kZXhGb3JMYXlvdXRCb3goKmJveCwgZGlzcGxheUJveGVzKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZGlzcGxheUJveEluZGV4OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB7IH07Ci0g
ICAgfTsKLQotICAgIGF1dG8qIGNhbmRpZGF0ZUJveCA9IG91dE9mRmxvd0JveC5wcmV2aW91c0lu
Rmxvd1NpYmxpbmcoKTsKLSAgICBpZiAoIWNhbmRpZGF0ZUJveCkKLSAgICAgICAgY2FuZGlkYXRl
Qm94ID0gb3V0T2ZGbG93Qm94LnBhcmVudCgpLmlzSW5saW5lQm94KCkgPyAmb3V0T2ZGbG93Qm94
LnBhcmVudCgpIDogbnVsbHB0cjsKLSAgICB3aGlsZSAoY2FuZGlkYXRlQm94KSB7Ci0gICAgICAg
IGlmIChhdXRvIGRpc3BsYXlCb3hJbmRleCA9IHByZXZpb3VzRGlzcGxheUJveEluZGV4T2YoKmNh
bmRpZGF0ZUJveCkpCi0gICAgICAgICAgICByZXR1cm4gZGlzcGxheUJveEluZGV4OwotICAgICAg
ICBjYW5kaWRhdGVCb3ggPSBjYW5kaWRhdGVCb3gtPnBhcmVudCgpLmlzSW5saW5lQm94KCkgPyAm
Y2FuZGlkYXRlQm94LT5wYXJlbnQoKSA6IG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiB7IH07
Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV4dERpc3BsYXlCb3hJbmRleChj
b25zdCBCb3gmIG91dE9mRmxvd0JveCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGRpc3Bs
YXlCb3hlcykKLXsKLSAgICBhdXRvIG5leHREaXNwbGF5Qm94SW5kZXhPZiA9IFsmXSAoYXV0byYg
bGF5b3V0Qm94KSAtPiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gewotICAgICAgICBmb3IgKGF1dG8q
IGJveCA9ICZsYXlvdXRCb3g7IGJveDsgYm94ID0gYm94LT5uZXh0SW5GbG93U2libGluZygpKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byBkaXNwbGF5Qm94SW5kZXggPSBmaXJzdERpc3BsYXlCb3hJ
bmRleEZvckxheW91dEJveCgqYm94LCBkaXNwbGF5Qm94ZXMpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBkaXNwbGF5Qm94SW5kZXg7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICB9OwotCi0gICAgYXV0byogY2FuZGlkYXRlQm94ID0gb3V0T2ZGbG93Qm94Lm5leHRJbkZsb3dT
aWJsaW5nKCk7Ci0gICAgaWYgKCFjYW5kaWRhdGVCb3gpCi0gICAgICAgIGNhbmRpZGF0ZUJveCA9
IG91dE9mRmxvd0JveC5wYXJlbnQoKS5pc0lubGluZUJveCgpID8gb3V0T2ZGbG93Qm94LnBhcmVu
dCgpLm5leHRJbkZsb3dTaWJsaW5nKCkgOiBudWxscHRyOwotICAgIHdoaWxlIChjYW5kaWRhdGVC
b3gpIHsKLSAgICAgICAgaWYgKGF1dG8gZGlzcGxheUJveEluZGV4ID0gbmV4dERpc3BsYXlCb3hJ
bmRleE9mKCpjYW5kaWRhdGVCb3gpKQotICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlCb3hJbmRl
eDsKLSAgICAgICAgY2FuZGlkYXRlQm94ID0gY2FuZGlkYXRlQm94LT5wYXJlbnQoKS5pc0lubGlu
ZUJveCgpID8gY2FuZGlkYXRlQm94LT5wYXJlbnQoKS5uZXh0SW5GbG93U2libGluZygpIDogbnVs
bHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotSW5saW5lTGF5b3V0VW5pdCBJbmxp
bmVGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnRlbnRMZWZ0QWZ0ZXJMYXN0TGluZShjb25zdCBDb25z
dHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBzdGQ6Om9wdGlvbmFsPElubGlu
ZUxheW91dFVuaXQ+IGxhc3RMaW5lTG9naWNhbEJvdHRvbSwgY29uc3QgRmxvYXRpbmdDb250ZXh0
JiBmbG9hdGluZ0NvbnRleHQpIGNvbnN0Ci17Ci0gICAgYXV0byBjb250ZW50SGFzUHJldmlvdXNM
aW5lID0gbGFzdExpbmVMb2dpY2FsQm90dG9tID8gc3RkOjptYWtlX29wdGlvbmFsKHRydWUpIDog
c3RkOjpudWxsb3B0OwotICAgIGF1dG8gdGV4dEluZGVudCA9IGNvbXB1dGVkVGV4dEluZGVudChJ
c0ludHJpbnNpY1dpZHRoTW9kZTo6Tm8sIGNvbnRlbnRIYXNQcmV2aW91c0xpbmUsIGNvbnN0cmFp
bnRzLmhvcml6b250YWwoKS5sb2dpY2FsV2lkdGgpOwotICAgIGF1dG8gZmxvYXRDb25zdHJhaW50
cyA9IGZsb2F0Q29uc3RyYWludHNGb3JMaW5lKGxhc3RMaW5lTG9naWNhbEJvdHRvbS52YWx1ZV9v
cihjb25zdHJhaW50cy5sb2dpY2FsVG9wKCkpLCAwLCBmbG9hdGluZ0NvbnRleHQpOwotICAgIGF1
dG8gbGluZUJveExlZnQgPSBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQ7Ci0g
ICAgYXV0byBsaW5lQm94V2lkdGggPSBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbFdp
ZHRoOwotICAgIC8vIEZJWE1FOiBBZGQgbWlzc2luZyBSVEwgc3VwcG9ydC4KLSAgICBpZiAoZmxv
YXRDb25zdHJhaW50cy5sZWZ0KSB7Ci0gICAgICAgIGF1dG8gZmxvYXRPZmZzZXQgPSBzdGQ6Om1h
eCgwX2x1LCBmbG9hdENvbnN0cmFpbnRzLmxlZnQtPnggLSBjb25zdHJhaW50cy5ob3Jpem9udGFs
KCkubG9naWNhbExlZnQpOwotICAgICAgICBsaW5lQm94TGVmdCArPSBmbG9hdE9mZnNldDsKLSAg
ICAgICAgbGluZUJveFdpZHRoIC09IGZsb2F0T2Zmc2V0OwotICAgIH0KLSAgICBpZiAoZmxvYXRD
b25zdHJhaW50cy5yaWdodCkgewotICAgICAgICBhdXRvIGxpbmVCb3hSaWdodCA9IChjb25zdHJh
aW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQgKyBjb25zdHJhaW50cy5ob3Jpem9udGFsKCku
bG9naWNhbFdpZHRoKTsKLSAgICAgICAgYXV0byBmbG9hdE9mZnNldCA9IHN0ZDo6bWF4KDBfbHUs
IGxpbmVCb3hSaWdodCAtIGZsb2F0Q29uc3RyYWludHMucmlnaHQtPngpOwotICAgICAgICBsaW5l
Qm94V2lkdGggLT0gZmxvYXRPZmZzZXQ7Ci0gICAgfQotICAgIGxpbmVCb3hMZWZ0ICs9IHRleHRJ
bmRlbnQ7Ci0gICAgYXV0byByb290SW5saW5lQm94TGVmdCA9IGhvcml6b250YWxBbGlnbm1lbnRP
ZmZzZXQoZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCkuc3R5bGUoKSwgeyB9LCBsaW5lQm94V2lk
dGgsIHsgfSwgeyB9LCB0cnVlKTsKLSAgICByZXR1cm4gbGluZUJveExlZnQgKyByb290SW5saW5l
Qm94TGVmdDsKLX0KLQotTGF5b3V0UG9pbnQgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0
aWNQb3NpdGlvbkZvck91dE9mRmxvd0lubGluZUxldmVsQm94KGNvbnN0IEJveCYgb3V0T2ZGbG93
Qm94LCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBjb25z
dCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCwgY29uc3QgRmxvYXRpbmdD
b250ZXh0JiBmbG9hdGluZ0NvbnRleHQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG91dE9mRmxvd0Jv
eC5zdHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5SW5saW5lVHlwZSgpKTsKLSAgICBhdXRvJiBsaW5l
cyA9IGRpc3BsYXlDb250ZW50LmxpbmVzOwotICAgIGF1dG8mIGJveGVzID0gZGlzcGxheUNvbnRl
bnQuYm94ZXM7Ci0KLSAgICBpZiAobGluZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVChi
b3hlcy5pc0VtcHR5KCkpOwotICAgICAgICByZXR1cm4geyBjb250ZW50TGVmdEFmdGVyTGFzdExp
bmUoY29uc3RyYWludHMsIHsgfSwgZmxvYXRpbmdDb250ZXh0KSwgY29uc3RyYWludHMubG9naWNh
bFRvcCgpIH07Ci0gICAgfQotCi0gICAgYXV0byBpc0hvcml6b250YWxXcml0aW5nTW9kZSA9IGZv
cm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLnN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KTsKLSAgICBhdXRvIGxlZnRTaWRlVG9Mb2dpY2FsVG9wTGVmdCA9IFsmXSAoYXV0byYgZGlzcGxh
eUJveCwgYXV0byYgbGluZSwgYm9vbCBtYXlOZWVkTWFyZ2luQWRqdXN0bWVudCA9IHRydWUpIHsK
LSAgICAgICAgYXV0byBtYXJnaW5TdGFydCA9IExheW91dFVuaXQgeyB9OwotICAgICAgICBpZiAo
bWF5TmVlZE1hcmdpbkFkanVzdG1lbnQgJiYgZGlzcGxheUJveC5pc05vblJvb3RJbmxpbmVMZXZl
bEJveCgpKQotICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdl
b21ldHJ5Rm9yQm94KGRpc3BsYXlCb3gubGF5b3V0Qm94KCkpLm1hcmdpblN0YXJ0KCk7Ci0gICAg
ICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IExheW91dFBvaW50KGRpc3BsYXlC
b3gubGVmdCgpIC0gbWFyZ2luU3RhcnQsIGxpbmUudG9wKCkpIDogTGF5b3V0UG9pbnQoZGlzcGxh
eUJveC50b3AoKSAtIG1hcmdpblN0YXJ0LCBsaW5lLmxlZnQoKSk7Ci0gICAgfTsKLSAgICBhdXRv
IHJpZ2h0U2lkZVRvTG9naWNhbFRvcExlZnQgPSBbJl0gKGF1dG8mIGRpc3BsYXlCb3gsIGF1dG8m
IGxpbmUpIHsKLSAgICAgICAgYXV0byBtYXJnaW5FbmQgPSBMYXlvdXRVbml0IHsgfTsKLSAgICAg
ICAgaWYgKGRpc3BsYXlCb3guaXNOb25Sb290SW5saW5lTGV2ZWxCb3goKSkKLSAgICAgICAgICAg
IG1hcmdpbkVuZCA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goZGlzcGxheUJv
eC5sYXlvdXRCb3goKSkubWFyZ2luRW5kKCk7Ci0gICAgICAgIHJldHVybiBpc0hvcml6b250YWxX
cml0aW5nTW9kZSA/IExheW91dFBvaW50KGRpc3BsYXlCb3gucmlnaHQoKSArIG1hcmdpbkVuZCwg
bGluZS50b3AoKSkgOiBMYXlvdXRQb2ludChkaXNwbGF5Qm94LmJvdHRvbSgpICsgbWFyZ2luRW5k
LCBsaW5lLmxlZnQoKSk7Ci0gICAgfTsKLQotICAgIGF1dG8gcHJldmlvdXNEaXNwbGF5Qm94SW5k
ZXhCZWZvcmVPdXRPZkZsb3dCb3ggPSBwcmV2aW91c0Rpc3BsYXlCb3hJbmRleChvdXRPZkZsb3dC
b3gsIGJveGVzKTsKLSAgICBpZiAoIXByZXZpb3VzRGlzcGxheUJveEluZGV4QmVmb3JlT3V0T2ZG
bG93Qm94KQotICAgICAgICByZXR1cm4gbGVmdFNpZGVUb0xvZ2ljYWxUb3BMZWZ0KGJveGVzWzBd
LCBsaW5lc1swXSk7Ci0KLSAgICBhdXRvJiBwcmV2aW91c0Rpc3BsYXlCb3ggPSBib3hlc1sqcHJl
dmlvdXNEaXNwbGF5Qm94SW5kZXhCZWZvcmVPdXRPZkZsb3dCb3hdOwotICAgIGF1dG8mIGN1cnJl
bnRMaW5lID0gbGluZXNbcHJldmlvdXNEaXNwbGF5Qm94LmxpbmVJbmRleCgpXTsKLSAgICBpZiAo
cHJldmlvdXNEaXNwbGF5Qm94LmlzSW5saW5lQm94KCkgJiYgJm91dE9mRmxvd0JveC5wYXJlbnQo
KSA9PSAmcHJldmlvdXNEaXNwbGF5Qm94LmxheW91dEJveCgpKSB7Ci0gICAgICAgIC8vIFNwZWNp
YWwgaGFuZGxpbmcgZm9yIGNhc2VzIHdoZW4gdGhpcyBpcyB0aGUgZmlyc3QgYm94IGluc2lkZSBh
biBpbmxpbmUgYm94OgotICAgICAgICAvLyA8ZGl2PnRleHQ8c3Bhbj48aW1nIHN0eWxlPSJwb3Np
dGlvbjogYWJzb2x1dGUiPmNvbnRlbnQ8L3NwYW4+PC9kaXY+Ci0gICAgICAgIGF1dG8mIGlubGlu
ZUJveCA9IHByZXZpb3VzRGlzcGxheUJveC5sYXlvdXRCb3goKTsKLSAgICAgICAgYXV0byBpbmxp
bmVCb3hEaXNwbGF5Qm94ID0gYm94ZXNbKmZpcnN0RGlzcGxheUJveEluZGV4Rm9yTGF5b3V0Qm94
KGlubGluZUJveCwgYm94ZXMpXTsKLSAgICAgICAgYXV0byBpbmxpbmVDb250ZW50Qm94T2Zmc2V0
ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChpbmxpbmVCb3gpLmJvcmRlckFu
ZFBhZGRpbmdTdGFydCgpOwotICAgICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUpCi0g
ICAgICAgICAgICBpbmxpbmVCb3hEaXNwbGF5Qm94Lm1vdmVIb3Jpem9udGFsbHkoaW5saW5lQ29u
dGVudEJveE9mZnNldCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlubGluZUJveERpc3Bs
YXlCb3gubW92ZVZlcnRpY2FsbHkoaW5saW5lQ29udGVudEJveE9mZnNldCk7Ci0gICAgICAgIHJl
dHVybiBsZWZ0U2lkZVRvTG9naWNhbFRvcExlZnQoaW5saW5lQm94RGlzcGxheUJveCwgbGluZXNb
aW5saW5lQm94RGlzcGxheUJveC5saW5lSW5kZXgoKV0sIGZhbHNlKTsKLSAgICB9Ci0KLSAgICBh
dXRvIHByZXZpb3VzQm94T3ZlcmZsb3dzID0gKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gcHJl
dmlvdXNEaXNwbGF5Qm94LnJpZ2h0KCkgPiBjdXJyZW50TGluZS5yaWdodCgpIDogcHJldmlvdXNE
aXNwbGF5Qm94LmJvdHRvbSgpID4gY3VycmVudExpbmUuYm90dG9tKCkpIHx8IHByZXZpb3VzRGlz
cGxheUJveC5pc0xpbmVCcmVha0JveCgpOwotICAgIGlmICghcHJldmlvdXNCb3hPdmVyZmxvd3Mp
Ci0gICAgICAgIHJldHVybiByaWdodFNpZGVUb0xvZ2ljYWxUb3BMZWZ0KHByZXZpb3VzRGlzcGxh
eUJveCwgY3VycmVudExpbmUpOwotCi0gICAgYXV0byBuZXh0RGlzcGxheUJveEluZGV4QWZ0ZXJP
dXRPZkZsb3cgPSBuZXh0RGlzcGxheUJveEluZGV4KG91dE9mRmxvd0JveCwgYm94ZXMpOwotICAg
IGlmICghbmV4dERpc3BsYXlCb3hJbmRleEFmdGVyT3V0T2ZGbG93KSB7Ci0gICAgICAgIC8vIFRo
aXMgaXMgdGhlIGxhc3QgY29udGVudCBvbiB0aGUgYmxvY2sgYW5kIGl0IGRvZXMgbm90IGZpdCB0
aGUgbGFzdCBsaW5lLgotICAgICAgICByZXR1cm4geyBjb250ZW50TGVmdEFmdGVyTGFzdExpbmUo
Y29uc3RyYWludHMsIGN1cnJlbnRMaW5lLmJvdHRvbSgpLCBmbG9hdGluZ0NvbnRleHQpLCBpc0hv
cml6b250YWxXcml0aW5nTW9kZSA/IGN1cnJlbnRMaW5lLmJvdHRvbSgpIDogY3VycmVudExpbmUu
cmlnaHQoKSB9OwotICAgIH0KLSAgICBhdXRvJiBuZXh0RGlzcGxheUJveCA9IGJveGVzWypuZXh0
RGlzcGxheUJveEluZGV4QWZ0ZXJPdXRPZkZsb3ddOwotICAgIHJldHVybiBsZWZ0U2lkZVRvTG9n
aWNhbFRvcExlZnQobmV4dERpc3BsYXlCb3gsIGxpbmVzW25leHREaXNwbGF5Qm94LmxpbmVJbmRl
eCgpXSk7Ci19Ci0KLUxheW91dFBvaW50IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6c3RhdGlj
UG9zaXRpb25Gb3JPdXRPZkZsb3dCbG9ja0xldmVsQm94KGNvbnN0IEJveCYgb3V0T2ZGbG93Qm94
LCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBjb25zdCBJ
bmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCkgY29uc3QKLXsKLSAgICBBU1NF
UlQob3V0T2ZGbG93Qm94LnN0eWxlKCkuaXNEaXNwbGF5QmxvY2tMZXZlbCgpKTsKLQotICAgIGF1
dG8gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPSBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKS5z
dHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7Ci0gICAgYXV0byYgbGluZXMgPSBkaXNw
bGF5Q29udGVudC5saW5lczsKLSAgICBhdXRvJiBib3hlcyA9IGRpc3BsYXlDb250ZW50LmJveGVz
OwotICAgIGF1dG8gY29udGVudEJveFRvcExlZnQgPSBMYXlvdXRQb2ludCB7IGNvbnN0cmFpbnRz
Lmhvcml6b250YWwoKS5sb2dpY2FsTGVmdCwgY29uc3RyYWludHMubG9naWNhbFRvcCgpIH07Ci0K
LSAgICBpZiAobGluZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVChib3hlcy5pc0VtcHR5
KCkpOwotICAgICAgICByZXR1cm4gY29udGVudEJveFRvcExlZnQ7Ci0gICAgfQotCi0gICAgLy8g
QmxvY2sgbGV2ZWwgYm94ZXMgYXJlIHBsYWNlZCB1bmRlciB0aGUgY3VycmVudCBsaW5lIGFzIGlm
IHRoZXkgd2VyZSBub3JtYWwgaW5mbG93IGJsb2NrIGxldmVsIGJveGVzLgotICAgIGF1dG8gcHJl
dmlvdXNEaXNwbGF5Qm94SW5kZXhCZWZvcmVPdXRPZkZsb3dCb3ggPSBwcmV2aW91c0Rpc3BsYXlC
b3hJbmRleChvdXRPZkZsb3dCb3gsIGJveGVzKTsKLSAgICBpZiAoIXByZXZpb3VzRGlzcGxheUJv
eEluZGV4QmVmb3JlT3V0T2ZGbG93Qm94KQotICAgICAgICByZXR1cm4geyBjb250ZW50Qm94VG9w
TGVmdC54KCksIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gbGluZXNbMF0udG9wKCkgOiBsaW5l
c1swXS5sZWZ0KCkgfTsKLSAgICBhdXRvJiBjdXJyZW50TGluZSA9IGxpbmVzW2JveGVzWypwcmV2
aW91c0Rpc3BsYXlCb3hJbmRleEJlZm9yZU91dE9mRmxvd0JveF0ubGluZUluZGV4KCldOwotICAg
IHJldHVybiB7IGNvbnRlbnRCb3hUb3BMZWZ0LngoKSwgTGF5b3V0VW5pdCB7IGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlID8gY3VycmVudExpbmUuYm90dG9tKCkgOiBjdXJyZW50TGluZS5yaWdodCgp
IH0gfTsKLX0KLQogSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6Omlu
aXRpYWxMaW5lSGVpZ2h0KGJvb2wgaXNGaXJzdExpbmUpIGNvbnN0CiB7CiAgICAgaWYgKGxheW91
dFN0YXRlKCkuaW5TdGFuZGFyZHNNb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnku
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUZvcm1hdHRpbmdHZW9tZXRyeS5oCmluZGV4IDVhYmRlMWU4MGI3YS4uZTUzNmQ5MzBmMGI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaApAQCAt
NTYsOSArNTYsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSW5saW5lUmVjdCBmbGlwVmlzdWFs
UmVjdFRvTG9naWNhbEZvcldyaXRpbmdNb2RlKGNvbnN0IElubGluZVJlY3QmIHZpc3VhbFJlY3Qs
IFdyaXRpbmdNb2RlKTsKIAotICAgIExheW91dFBvaW50IHN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZG
bG93SW5saW5lTGV2ZWxCb3goY29uc3QgQm94JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dD
b250ZW50JiwgY29uc3QgSW5saW5lRGlzcGxheTo6Q29udGVudCYsIGNvbnN0IEZsb2F0aW5nQ29u
dGV4dCYpIGNvbnN0OwotICAgIExheW91dFBvaW50IHN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93
QmxvY2tMZXZlbEJveChjb25zdCBCb3gmLCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRl
bnQmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JikgY29uc3Q7Ci0KICAgICB2b2lkIGFk
anVzdE1hcmdpblN0YXJ0Rm9yTGlzdE1hcmtlcihjb25zdCBFbGVtZW50Qm94JiwgTGF5b3V0VW5p
dCBuZXN0ZWRMaXN0TWFya2VyTWFyZ2luU3RhcnQsIElubGluZUxheW91dFVuaXQgcm9vdElubGlu
ZUJveE9mZnNldCkgY29uc3Q7CiAKICAgICBzdGF0aWMgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9u
dGFsQWxpZ25tZW50T2Zmc2V0KGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUsIElubGluZUxh
eW91dFVuaXQgY29udGVudExvZ2ljYWxSaWdodCwgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNh
bFJpZ2h0LCBJbmxpbmVMYXlvdXRVbml0IGhhbmdpbmdUcmFpbGluZ1dpZHRoLCBjb25zdCBMaW5l
OjpSdW5MaXN0JiBydW5zLCBib29sIGlzTGFzdExpbmUsIHN0ZDo6b3B0aW9uYWw8VGV4dERpcmVj
dGlvbj4gaW5saW5lQmFzZURpcmVjdGlvbk92ZXJyaWRlID0gc3RkOjpudWxsb3B0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUl0ZW1zQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCmluZGV4IDIzYWU2ZDgwODAyNi4u
MzY2M2RlNDIyOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5j
cHAKQEAgLTg2LDkgKzg2LDcgQEAgSW5saW5lSXRlbXNCdWlsZGVyOjpJbmxpbmVJdGVtc0J1aWxk
ZXIoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LAogdm9pZCBJbmxpbmVJ
dGVtc0J1aWxkZXI6OmJ1aWxkKElubGluZUl0ZW1Qb3NpdGlvbiBzdGFydFBvc2l0aW9uKQogewog
ICAgIElubGluZUl0ZW1zIGlubGluZUl0ZW1zOwotICAgIEZvcm1hdHRpbmdTdGF0ZTo6T3V0T2ZG
bG93Qm94TGlzdCBvdXRPZkZsb3dCb3hlczsKLQotICAgIGNvbGxlY3RJbmxpbmVJdGVtcyhpbmxp
bmVJdGVtcywgb3V0T2ZGbG93Qm94ZXMsIHN0YXJ0UG9zaXRpb24pOworICAgIGNvbGxlY3RJbmxp
bmVJdGVtcyhpbmxpbmVJdGVtcywgc3RhcnRQb3NpdGlvbik7CiAKICAgICBpZiAoIXJvb3QoKS5z
dHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSB8fCBjb250ZW50UmVxdWlyZXNWaXN1YWxS
ZW9yZGVyaW5nKCkpIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBwYXJ0aWFs
LCB5ZXQgcGFyYWdyYXBoIGxldmVsIGJpZGkgY29udGVudCBoYW5kbGluZy4KQEAgLTEwOSw3ICsx
MDcsNiBAQCB2b2lkIElubGluZUl0ZW1zQnVpbGRlcjo6YnVpbGQoSW5saW5lSXRlbVBvc2l0aW9u
IHN0YXJ0UG9zaXRpb24pCiAgICAgICAgIG1fZm9ybWF0dGluZ1N0YXRlLmFwcGVuZElubGluZUl0
ZW1zKFdURk1vdmUoaW5saW5lSXRlbXMpKTsKICAgICB9OwogICAgIGFkanVzdElubGluZUZvcm1h
dHRpbmdTdGF0ZVdpdGhOZXdJbmxpbmVJdGVtcygpOwotICAgIG1fZm9ybWF0dGluZ1N0YXRlLnNl
dE91dE9mRmxvd0JveGVzKFdURk1vdmUob3V0T2ZGbG93Qm94ZXMpKTsKIAogI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgLy8gQ2hlY2sgaWYgd2UndmUgZ290IG1hdGNoaW5nIGlubGluZSBib3ggc3Rh
cnQvZW5kIHBhaXJzIGFuZCB1bmlxdWUgaW5saW5lIGxldmVsIGl0ZW1zIChub24tdGV4dCwgbm9u
LWlubGluZSBib3ggaXRlbXMpLgpAQCAtMTkxLDcgKzE4OCw3IEBAIHN0YXRpYyBMYXlvdXRRdWV1
ZSBpbml0aWFsaXplTGF5b3V0UXVldWUoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRl
eHRSb290CiAgICAgcmV0dXJuIGxheW91dFF1ZXVlOwogfQogCi12b2lkIElubGluZUl0ZW1zQnVp
bGRlcjo6Y29sbGVjdElubGluZUl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgRm9ybWF0
dGluZ1N0YXRlOjpPdXRPZkZsb3dCb3hMaXN0JiBvdXRPZkZsb3dCb3hlcywgSW5saW5lSXRlbVBv
c2l0aW9uIHN0YXJ0UG9zaXRpb24pCit2b2lkIElubGluZUl0ZW1zQnVpbGRlcjo6Y29sbGVjdElu
bGluZUl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgSW5saW5lSXRlbVBvc2l0aW9uIHN0
YXJ0UG9zaXRpb24pCiB7CiAgICAgLy8gVHJhdmVyc2UgdGhlIHRyZWUgYW5kIGNyZWF0ZSBpbmxp
bmUgaXRlbXMgb3V0IG9mIGlubGluZSBib3hlcyBhbmQgbGVhZiBub2Rlcy4gVGhpcyBlc3NlbnRp
YWxseSB0dXJucyB0aGUgdHJlZSBpbmxpbmUgc3RydWN0dXJlIGludG8gYSBmbGF0IG9uZS4KICAg
ICAvLyA8c3Bhbj50ZXh0PHNwYW4+PC9zcGFuPjxpbWc+PC9zcGFuPiAtPiBbSW5saW5lQm94U3Rh
cnRdW0lubGluZUxldmVsQm94XVtJbmxpbmVCb3hTdGFydF1bSW5saW5lQm94RW5kXVtJbmxpbmVM
ZXZlbEJveF1bSW5saW5lQm94RW5kXQpAQCAtMjMzLDkgKzIzMCw4IEBAIHZvaWQgSW5saW5lSXRl
bXNCdWlsZGVyOjpjb2xsZWN0SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBG
b3JtYXR0aW5nCiAgICAgICAgIHdoaWxlICghbGF5b3V0UXVldWUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBhdXRvIGxheW91dEJveCA9IGxheW91dFF1ZXVlLnRha2VMYXN0KCk7CiAgICAgICAg
ICAgICBpZiAobGF5b3V0Qm94LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewotICAgICAgICAg
ICAgICAgIC8vIExldCdzIG5vdCBjb25zdHJ1Y3QgSW5saW5lSXRlbXMgZm9yIG91dC1vZi1mbG93
IGNvbnRlbnQgYXMgdGhleSBkb24ndCBwYXJ0aWNpcGF0ZSBpbiB0aGUgaW5saW5lIGxheW91dC4K
LSAgICAgICAgICAgICAgICAvLyBIb3dldmVyIHRvIGJlIGFibGUgdG8gc3RhdGljIHBvc2l0aW9u
aW5nIHRoZW0sIHdlIG5lZWQgdG8gY29tcHV0ZSB0aGVpciBhcHByb3hpbWF0ZSBwb3NpdGlvbnMu
Ci0gICAgICAgICAgICAgICAgb3V0T2ZGbG93Qm94ZXMuYXBwZW5kKGxheW91dEJveCk7CisgICAg
ICAgICAgICAgICAgbV9pc05vbkJpZGlUZXh0QW5kRm9yY2VkTGluZUJyZWFrT25seUNvbnRlbnQg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpbmxpbmVJdGVtcy5hcHBlbmQoeyBsYXlvdXRCb3gs
IElubGluZUl0ZW06OlR5cGU6Ok9wYXF1ZSB9KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobGF5
b3V0Qm94LT5pc0lubGluZVRleHRCb3goKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGlubGlu
ZVRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihsYXlvdXRCb3gpOwogICAgICAgICAg
ICAgICAgIGhhbmRsZVRleHRDb250ZW50KGlubGluZVRleHRCb3gsIGlubGluZUl0ZW1zLCBwYXJ0
aWFsQ29udGVudE9mZnNldChpbmxpbmVUZXh0Qm94KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUl0ZW1zQnVpbGRlci5oCmluZGV4IDVkOWQ3YWM3ZTI0MC4uNTIyZDE4Mzg3NzVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVJdGVtc0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBidWlsZChJbmxpbmVJdGVtUG9zaXRpb24gc3RhcnRQb3NpdGlvbik7CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCBjb2xsZWN0SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmLCBGb3Jt
YXR0aW5nU3RhdGU6Ok91dE9mRmxvd0JveExpc3QmLCBJbmxpbmVJdGVtUG9zaXRpb24gc3RhcnRQ
b3NpdGlvbik7CisgICAgdm9pZCBjb2xsZWN0SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmLCBJbmxp
bmVJdGVtUG9zaXRpb24gc3RhcnRQb3NpdGlvbik7CiAgICAgdm9pZCBicmVha0FuZENvbXB1dGVC
aWRpTGV2ZWxzKElubGluZUl0ZW1zJik7CiAgICAgdm9pZCBjb21wdXRlSW5saW5lVGV4dEl0ZW1X
aWR0aHMoSW5saW5lSXRlbXMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcAppbmRleCA3
NjI1NjRlYmQxOWUuLjUxZGU5YjIwYjlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAK
QEAgLTI2MCw2ICsyNjAsMjcgQEAgdm9pZCBMaW5lOjpoYW5kbGVPdmVyZmxvd2luZ05vbkJyZWFr
aW5nU3BhY2UoVHJhaWxpbmdDb250ZW50QWN0aW9uIHRyYWlsaW5nQ29udGUKICAgICBtX2NvbnRl
bnRMb2dpY2FsV2lkdGggLT0gcmVtb3ZlZE9yQ29sbGFwc2VkQ29udGVudFdpZHRoOwogfQogCitj
b25zdCBCb3gqIExpbmU6OnJlbW92ZU92ZXJmbG93aW5nT3VyT2ZGbG93Q29udGVudCgpCit7Cisg
ICAgYXV0byBsYXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXggPSBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4geyB9OworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gbV9ydW5zLnNpemUoKTsgaW5kZXgtLTsp
IHsKKyAgICAgICAgYXV0byYgcnVuID0gbV9ydW5zW2luZGV4XTsKKyAgICAgICAgaWYgKHJ1bi5p
c09wYXF1ZSgpKSB7CisgICAgICAgICAgICBsYXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXggPSBp
bmRleDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghcnVu
LmxvZ2ljYWxXaWR0aCgpICYmIChydW4uaXNJbmxpbmVCb3hTdGFydCgpIHx8IHJ1bi5pc0lubGlu
ZUJveEVuZCgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgaWYgKCFsYXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXgpCisgICAgICAgIHJldHVybiB7
IH07CisgICAgYXV0byogbGFzdFRyYWlsaW5nT3BhcXVlQm94ID0gJm1fcnVuc1sqbGFzdFRyYWls
aW5nT3BhcXVlSXRlbUluZGV4XS5sYXlvdXRCb3goKTsKKyAgICBtX3J1bnMucmVtb3ZlKCpsYXN0
VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXgsIG1fcnVucy5zaXplKCkgLSAqbGFzdFRyYWlsaW5nT3Bh
cXVlSXRlbUluZGV4KTsKKyAgICBBU1NFUlQoIW1fcnVucy5pc0VtcHR5KCkpOworICAgIHJldHVy
biBsYXN0VHJhaWxpbmdPcGFxdWVCb3g7Cit9CisKIHZvaWQgTGluZTo6aGFuZGxlVHJhaWxpbmdI
YW5naW5nQ29udGVudChzdGQ6Om9wdGlvbmFsPEludHJpbnNpY1dpZHRoTW9kZT4gaW50cmluc2lj
V2lkdGhNb2RlLCBJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxBdmFpbGFibGVTcGFjZUZvckNv
bnRlbnQsIGJvb2wgaXNMYXN0Rm9ybWF0dGVkTGluZSkKIHsKICAgICAvLyBodHRwczovL2RyYWZ0
cy5jc3N3Zy5vcmcvY3NzLXRleHQvI2hhbmdpbmcKQEAgLTM1NiwxNSArMzc3LDEyIEBAIHZvaWQg
TGluZTo6YXBwZW5kKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgSW5saW5lCiAgICAgICAgIGFwcGVuZElubGluZUJveFN0YXJ0KGlubGluZUl0
ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgpOwogICAgIGVsc2UgaWYgKGlubGluZUl0ZW0uaXNJbmxp
bmVCb3hFbmQoKSkKICAgICAgICAgYXBwZW5kSW5saW5lQm94RW5kKGlubGluZUl0ZW0sIHN0eWxl
LCBsb2dpY2FsV2lkdGgpOwotICAgIGVsc2UgaWYgKGlubGluZUl0ZW0ubGF5b3V0Qm94KCkuaXNS
ZXBsYWNlZEJveCgpKQotICAgICAgICBhcHBlbmRSZXBsYWNlZElubGluZUxldmVsQm94KGlubGlu
ZUl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgpOwogICAgIGVsc2UgaWYgKGlubGluZUl0ZW0uaXNC
b3goKSkKICAgICAgICAgYXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVMZXZlbEJveChpbmxpbmVJdGVt
LCBzdHlsZSwgbG9naWNhbFdpZHRoKTsKICAgICBlbHNlIGlmIChpbmxpbmVJdGVtLmlzT3BhcXVl
KCkpIHsKICAgICAgICAgQVNTRVJUKCFsb2dpY2FsV2lkdGgpOwogICAgICAgICBhcHBlbmRPcGFx
dWVCb3goaW5saW5lSXRlbSwgc3R5bGUpOwotICAgIH0KLSAgICBlbHNlCisgICAgfSBlbHNlCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIG1faGFzTm9uRGVmYXVsdEJpZGlMZXZl
bFJ1biA9IG1faGFzTm9uRGVmYXVsdEJpZGlMZXZlbFJ1biB8fCBpbmxpbmVJdGVtLmJpZGlMZXZl
bCgpICE9IFVCSURJX0RFRkFVTFRfTFRSOwogfQpAQCAtNjUxLDEzICs2NjksNiBAQCB2b2lkIExp
bmU6OmFwcGVuZE5vblJlcGxhY2VkSW5saW5lTGV2ZWxCb3goY29uc3QgSW5saW5lSXRlbSYgaW5s
aW5lSXRlbSwgY29uc3QgUgogICAgIG1fcnVucy5hcHBlbmQoeyBpbmxpbmVJdGVtLCBzdHlsZSwg
bGFzdFJ1bkxvZ2ljYWxSaWdodCgpICsgbWFyZ2luU3RhcnQsIG1hcmdpbkJveExvZ2ljYWxXaWR0
aCAtIG1hcmdpblN0YXJ0IH0pOwogfQogCi12b2lkIExpbmU6OmFwcGVuZFJlcGxhY2VkSW5saW5l
TGV2ZWxCb3goY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBJbmxpbmVMYXlvdXRVbml0IG1hcmdpbkJveExvZ2ljYWxXaWR0aCkKLXsKLSAgICBB
U1NFUlQoaW5saW5lSXRlbS5sYXlvdXRCb3goKS5pc1JlcGxhY2VkQm94KCkpOwotICAgIC8vIEZJ
WE1FOiBTdXJlbHkgcmVwbGFjZWQgYm94ZXMgYmVoYXZlIGRpZmZlcmVudGx5LgotICAgIGFwcGVu
ZE5vblJlcGxhY2VkSW5saW5lTGV2ZWxCb3goaW5saW5lSXRlbSwgc3R5bGUsIG1hcmdpbkJveExv
Z2ljYWxXaWR0aCk7Ci19Ci0KIHZvaWQgTGluZTo6YXBwZW5kTGluZUJyZWFrKGNvbnN0IElubGlu
ZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIHsKICAgICBtX3Ry
YWlsaW5nU29mdEh5cGhlbldpZHRoID0geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oCmluZGV4
IDM1YjM0ZGMxYTNlZS4uMWQzMjIzOTQ0ZGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oCkBA
IC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKICAgICBJbmxpbmVMYXlvdXRVbml0IGhhbmRsZVRyYWls
aW5nVHJpbW1hYmxlQ29udGVudChUcmFpbGluZ0NvbnRlbnRBY3Rpb24pOwogICAgIHZvaWQgaGFu
ZGxlVHJhaWxpbmdIYW5naW5nQ29udGVudChzdGQ6Om9wdGlvbmFsPEludHJpbnNpY1dpZHRoTW9k
ZT4sIElubGluZUxheW91dFVuaXQgaG9yaXpvbnRhbEF2YWlsYWJsZVNwYWNlLCBib29sIGlzTGFz
dEZvcm1hdHRlZExpbmUpOwogICAgIHZvaWQgaGFuZGxlT3ZlcmZsb3dpbmdOb25CcmVha2luZ1Nw
YWNlKFRyYWlsaW5nQ29udGVudEFjdGlvbiwgSW5saW5lTGF5b3V0VW5pdCBvdmVyZmxvd2luZ1dp
ZHRoKTsKKyAgICBjb25zdCBCb3gqIHJlbW92ZU92ZXJmbG93aW5nT3VyT2ZGbG93Q29udGVudCgp
OwogICAgIHZvaWQgcmVzZXRCaWRpTGV2ZWxGb3JUcmFpbGluZ1doaXRlc3BhY2UoVUJpRGlMZXZl
bCByb290QmlkaUxldmVsKTsKICAgICB2b2lkIGFwcGx5UnVuRXhwYW5zaW9uKElubGluZUxheW91
dFVuaXQgaG9yaXpvbnRhbEF2YWlsYWJsZVNwYWNlKTsKIApAQCAtMjA2LDcgKzIwNyw2IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGFwcGVuZFRleHRDb250ZW50KGNvbnN0IElubGluZVRleHRJdGVt
JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7CiAg
ICAgdm9pZCBhcHBlbmROb25SZXBsYWNlZElubGluZUxldmVsQm94KGNvbnN0IElubGluZUl0ZW0m
LCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxheW91dFVuaXQgbWFyZ2luQm94TG9naWNhbFdp
ZHRoKTsKLSAgICB2b2lkIGFwcGVuZFJlcGxhY2VkSW5saW5lTGV2ZWxCb3goY29uc3QgSW5saW5l
SXRlbSYsIGNvbnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBtYXJnaW5Cb3hMb2dp
Y2FsV2lkdGgpOwogICAgIHZvaWQgYXBwZW5kSW5saW5lQm94U3RhcnQoY29uc3QgSW5saW5lSXRl
bSYsIGNvbnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpOwog
ICAgIHZvaWQgYXBwZW5kSW5saW5lQm94RW5kKGNvbnN0IElubGluZUl0ZW0mLCBjb25zdCBSZW5k
ZXJTdHlsZSYsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKTsKICAgICB2b2lkIGFwcGVu
ZExpbmVCcmVhayhjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAKaW5kZXggM2JjMTgyNTIyYjM3Li42MmQ2NjcyZWM4
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwCkBAIC0xMzAsNiArMTMwLDEz
IEBAIElubGluZVJlY3QgTGluZUJveDo6bG9naWNhbEJvcmRlckJveEZvcklubGluZUJveChjb25z
dCBCb3gmIGxheW91dEJveCwgY29uc3QgQm94CiAgICAgcmV0dXJuIGxvZ2ljYWxSZWN0OwogfQog
CitJbmxpbmVSZWN0IExpbmVCb3g6OmxvZ2ljYWxSZWN0Rm9yT3BhcXVlQm94KGNvbnN0IExpbmU6
OlJ1biYgb3BhcXVlUnVuLCBjb25zdCBCb3hHZW9tZXRyeSYgYm94R2VvbWV0cnkpIGNvbnN0Cit7
CisgICAgQVNTRVJUKG9wYXF1ZVJ1bi5pc09wYXF1ZSgpKTsKKyAgICBBU1NFUlQob3BhcXVlUnVu
LmxheW91dEJveCgpLnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkpOworICAg
IHJldHVybiB7IHsgfSwgbV9yb290SW5saW5lQm94LmxvZ2ljYWxMZWZ0KCkgKyBvcGFxdWVSdW4u
bG9naWNhbExlZnQoKSwgYm94R2VvbWV0cnkuYm9yZGVyQm94V2lkdGgoKSwgYm94R2VvbWV0cnku
Ym9yZGVyQm94SGVpZ2h0KCkgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgTGF5b3V0CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaAppbmRleCA5NDA1
NDliNTc1NTYuLjNlMGUzOWU3NzczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaApA
QCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgSW5saW5lUmVjdCBsb2dpY2FsUmVjdEZvclJv
b3RJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gubG9naWNhbFJlY3Qo
KTsgfQogICAgIElubGluZVJlY3QgbG9naWNhbEJvcmRlckJveEZvckF0b21pY0lubGluZUxldmVs
Qm94KGNvbnN0IEJveCYsIGNvbnN0IEJveEdlb21ldHJ5JikgY29uc3Q7CiAgICAgSW5saW5lUmVj
dCBsb2dpY2FsQm9yZGVyQm94Rm9ySW5saW5lQm94KGNvbnN0IEJveCYsIGNvbnN0IEJveEdlb21l
dHJ5JikgY29uc3Q7CisgICAgSW5saW5lUmVjdCBsb2dpY2FsUmVjdEZvck9wYXF1ZUJveChjb25z
dCBMaW5lOjpSdW4mIG9wYXF1ZVJ1biwgY29uc3QgQm94R2VvbWV0cnkmKSBjb25zdDsKIAogICAg
IGNvbnN0IElubGluZUxldmVsQm94KiBpbmxpbmVMZXZlbEJveEZvcihjb25zdCBCb3gmIGxheW91
dEJveCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxMaW5lQm94Jj4oKnRoaXMpLmlubGluZUxl
dmVsQm94Rm9yKGxheW91dEJveCk7IH0KICAgICBjb25zdCBJbmxpbmVMZXZlbEJveCYgaW5saW5l
TGV2ZWxCb3hGb3IoY29uc3QgTGluZTo6UnVuJiBsaW5lUnVuKSBjb25zdCB7IHJldHVybiBjb25z
dF9jYXN0PExpbmVCb3gmPigqdGhpcykuaW5saW5lTGV2ZWxCb3hGb3IobGluZVJ1bik7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA0MzcwODM3N2VlYjku
LjhkYmMwNmUzNGIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNw
cApAQCAtNDc3LDYgKzQ3NywyMiBAQCBMaW5lQ29udGVudCBMaW5lQnVpbGRlcjo6cGxhY2VJbmxp
bmVBbmRGbG9hdENvbnRlbnQoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkcwogICAgICAgICAg
ICAgICAgIG1fbGluZS5oYW5kbGVPdmVyZmxvd2luZ05vbkJyZWFraW5nU3BhY2UoaXNMaW5lQnJl
YWtBZnRlcldoaXRlc3BhY2UoKSA/IExpbmU6OlRyYWlsaW5nQ29udGVudEFjdGlvbjo6UHJlc2Vy
dmUgOiBMaW5lOjpUcmFpbGluZ0NvbnRlbnRBY3Rpb246OlJlbW92ZSwgbV9saW5lLmNvbnRlbnRM
b2dpY2FsV2lkdGgoKSAtIGhvcml6b250YWxBdmFpbGFibGVTcGFjZSk7CiAKICAgICAgICAgICAg
IG1fbGluZS5oYW5kbGVUcmFpbGluZ0hhbmdpbmdDb250ZW50KGludHJpbnNpY1dpZHRoTW9kZSgp
LCBob3Jpem9udGFsQXZhaWxhYmxlU3BhY2UsIGlzTGFzdExpbmUpOworCisgICAgICAgICAgICBh
dXRvIG1heU5lZWRPdXRPZkZsb3dPdmVyZmxvd1RyaW1taW5nID0gIWlzSW5JbnRyaW5zaWNXaWR0
aE1vZGUoKSAmJiBsaW5lSGFzT3ZlcmZsb3coKSAmJiAhbGluZUNvbnRlbnQucGFydGlhbFRyYWls
aW5nQ29udGVudExlbmd0aDsKKyAgICAgICAgICAgIGlmIChtYXlOZWVkT3V0T2ZGbG93T3ZlcmZs
b3dUcmltbWluZykgeworICAgICAgICAgICAgICAgIEFTU0VSVCghbGluZUNvbnRlbnQucmFuZ2Uu
ZW5kLm9mZnNldCk7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGxhc3RSZW1vdmVkVHJhaWxp
bmdCb3ggPSBtX2xpbmUucmVtb3ZlT3ZlcmZsb3dpbmdPdXJPZkZsb3dDb250ZW50KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byBsaW5lRW5kSW5kZXggPSBbJl0geworICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yIChhdXRvIGluZGV4ID0gbGluZUNvbnRlbnQucmFuZ2Uuc3RhcnQuaW5k
ZXg7IGluZGV4IDwgbGluZUNvbnRlbnQucmFuZ2UuZW5kLmluZGV4OyArK2luZGV4KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCZtX2lubGluZUl0ZW1zW2luZGV4XS5sYXlvdXRC
b3goKSA9PSBsYXN0UmVtb3ZlZFRyYWlsaW5nQm94KQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBsaW5lQ29udGVudC5yYW5nZS5lbmQuaW5kZXg7CisgICAgICAgICAgICAg
ICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIGxpbmVDb250ZW50LnJhbmdlLmVuZC5pbmRl
eCA9IGxpbmVFbmRJbmRleCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAg
ICAgICAgfTsKICAgICAgICAgaGFuZGxlVHJhaWxpbmdDb250ZW50KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkv
SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyLmNwcAppbmRleCBjZjc3YmM1ZjYxOGQuLjRjMDQ0OTNmNjk0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9Jbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyLmNwcApAQCAtODEsOCArODEsOSBAQCBzdGF0aWMgaW5saW5lIE9wdGlvblNldDxJbmxpbmVE
aXNwbGF5OjpCb3g6OlBvc2l0aW9uV2l0aGluSW5saW5lTGV2ZWxCb3g+IGlzRmlycwogICAgIHJl
dHVybiBwb3NpdGlvbldpdGhpbklubGluZUxldmVsQm94OwogfQogCi1JbmxpbmVEaXNwbGF5Q29u
dGVudEJ1aWxkZXI6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcihjb25zdCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQsIElubGluZUZvcm1hdHRpbmdTdGF0ZSYg
Zm9ybWF0dGluZ1N0YXRlLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpMaW5lJiBkaXNwbGF5TGluZSwg
c2l6ZV90IGxpbmVJbmRleCkKLSAgICA6IG1fZm9ybWF0dGluZ0NvbnRleHQoZm9ybWF0dGluZ0Nv
bnRleHQpCitJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OklubGluZURpc3BsYXlDb250ZW50
QnVpbGRlcihjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0cmFpbnRzLCBj
b25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQsIElubGluZUZv
cm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpMaW5l
JiBkaXNwbGF5TGluZSwgc2l6ZV90IGxpbmVJbmRleCkKKyAgICA6IG1fY29uc3RyYWludHMoY29u
c3RyYWludHMpCisgICAgLCBtX2Zvcm1hdHRpbmdDb250ZXh0KGZvcm1hdHRpbmdDb250ZXh0KQog
ICAgICwgbV9mb3JtYXR0aW5nU3RhdGUoZm9ybWF0dGluZ1N0YXRlKQogICAgICwgbV9kaXNwbGF5
TGluZShkaXNwbGF5TGluZSkKICAgICAsIG1fbGluZUluZGV4KGxpbmVJbmRleCkKQEAgLTQ1Myw3
ICs0NTQsOCBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJp
ZGlDb250ZW50KGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmCiAKICAgICBhcHBlbmRSb290SW5saW5l
Qm94RGlzcGxheUJveChmbGlwUm9vdElubGluZUJveFJlY3RUb1Zpc3VhbEZvcldyaXRpbmdNb2Rl
KGxpbmVCb3gubG9naWNhbFJlY3RGb3JSb290SW5saW5lQm94KCksIHdyaXRpbmdNb2RlKSwgbGlu
ZUJveC5yb290SW5saW5lQm94KCkuaGFzQ29udGVudCgpLCBib3hlcyk7CiAKLSAgICBmb3IgKGF1
dG8mIGxpbmVSdW4gOiBsaW5lTGF5b3V0UmVzdWx0LmlubGluZUNvbnRlbnQpIHsKKyAgICBmb3Ig
KHNpemVfdCBydW5JbmRleCA9IDA7IHJ1bkluZGV4IDwgbGluZUxheW91dFJlc3VsdC5pbmxpbmVD
b250ZW50LnNpemUoKTsgKytydW5JbmRleCkgeworICAgICAgICBhdXRvJiBsaW5lUnVuID0gbGlu
ZUxheW91dFJlc3VsdC5pbmxpbmVDb250ZW50W3J1bkluZGV4XTsKICAgICAgICAgYXV0byYgbGF5
b3V0Qm94ID0gbGluZVJ1bi5sYXlvdXRCb3goKTsKIAogICAgICAgICBhdXRvIHZpc3VhbFJlY3RS
ZWxhdGl2ZVRvUm9vdCA9IFsmXShhdXRvIGxvZ2ljYWxSZWN0KSB7CkBAIC00OTcsNyArNDk5LDE2
IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNzTm9uQmlkaUNvbnRl
bnQoY29uc3QgTGluZUxheW91dFJlc3VsdCYKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChsaW5lUnVuLmlzT3BhcXVlKCkpIHsKLSAgICAgICAgICAgIC8vIFNl
dCBnZW9tZXRyeSBmb3IgdGhpcyBvcGFxdWUgYm94LgorICAgICAgICAgICAgYXV0byYgYm94R2Vv
bWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeShsYXlvdXRCb3gpOworICAgICAg
ICAgICAgaWYgKGxheW91dEJveC5zdHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5SW5saW5lVHlwZSgp
KSB7CisgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wTGVmdCA9IGxpbmVCb3gubG9naWNh
bFJlY3RGb3JPcGFxdWVCb3gobGluZVJ1biwgYm94R2VvbWV0cnkpLnRvcExlZnQoKTsKKyAgICAg
ICAgICAgICAgICBsb2dpY2FsVG9wTGVmdC5tb3ZlQnkobGluZUJveC5sb2dpY2FsUmVjdCgpLnRv
cExlZnQoKSk7CisgICAgICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQo
dG9MYXlvdXRQb2ludChsb2dpY2FsVG9wTGVmdCkpOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gQmxvY2sgbGV2ZWwgYm94ZXMgYXJlIHBs
YWNlZCBlaXRoZXIgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIG9yICJ1bmRlciIgZGVwZW5kaW5n
IHdoZXRoZXIgdGhleSBoYXZlIHByZXZpb3VzIGluZmxvdyBzaWJsaW5nLgorICAgICAgICAgICAg
YXV0byBsb2dpY2FsVG9wID0gIXJ1bkluZGV4ID8gbGluZUJveC5sb2dpY2FsUmVjdCgpLnRvcCgp
IDogbGluZUJveC5sb2dpY2FsUmVjdCgpLmJvdHRvbSgpOworICAgICAgICAgICAgYm94R2VvbWV0
cnkuc2V0TG9naWNhbFRvcExlZnQoeyBjb25zdHJhaW50cygpLmhvcml6b250YWwoKS5sb2dpY2Fs
TGVmdCwgbG9naWNhbFRvcCB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAg
ICAgICAgIEFTU0VSVChsaW5lUnVuLmlzSW5saW5lQm94RW5kKCkgfHwgbGluZVJ1bi5pc1dvcmRC
cmVha09wcG9ydHVuaXR5KCkpOwpAQCAtNzY1LDYgKzc3NiwxNiBAQCB2b2lkIElubGluZURpc3Bs
YXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc0JpZGlDb250ZW50KGNvbnN0IExpbmVMYXlvdXRSZXN1
bHQmIGxpbgogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGxpbmVSdW4uaXNPcGFxdWUo
KSkgewogICAgICAgICAgICAgICAgIC8vIFNldCBnZW9tZXRyeSBmb3IgdGhpcyBvcGFxdWUgYm94
LgorICAgICAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlKCku
Ym94R2VvbWV0cnkobGF5b3V0Qm94KTsKKyAgICAgICAgICAgICAgICBpZiAobGF5b3V0Qm94LnN0
eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgYm94R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQodG9MYXlvdXRQb2ludCh2aXN1YWxSZWN0
UmVsYXRpdmVUb1Jvb3QobGluZUJveC5sb2dpY2FsUmVjdEZvck9wYXF1ZUJveChsaW5lUnVuLCBi
b3hHZW9tZXRyeSkpLnRvcExlZnQoKSkpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gQmxvY2sgbGV2ZWwgYm94ZXMg
YXJlIHBsYWNlZCBlaXRoZXIgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIG9yICJ1bmRlciIgZGVw
ZW5kaW5nIHdoZXRoZXIgdGhleSBoYXZlIHByZXZpb3VzIGluZmxvdyBzaWJsaW5nLgorICAgICAg
ICAgICAgICAgIGF1dG8gbG9naWNhbFRvcCA9ICF2aXN1YWxPcmRlciA/IGxpbmVCb3gubG9naWNh
bFJlY3QoKS50b3AoKSA6IGxpbmVCb3gubG9naWNhbFJlY3QoKS5ib3R0b20oKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIGxvZ2ljYWxSZWN0ID0gSW5saW5lUmVjdCB7IGxvZ2ljYWxUb3AsIGNvbnN0
cmFpbnRzKCkuaG9yaXpvbnRhbCgpLmxvZ2ljYWxMZWZ0LCBib3hHZW9tZXRyeS5ib3JkZXJCb3hX
aWR0aCgpLCBib3hHZW9tZXRyeS5ib3JkZXJCb3hIZWlnaHQoKSB9OworICAgICAgICAgICAgICAg
IGF1dG8gdmlzdWFsUmVjdCA9IGZsaXBMb2dpY2FsUmVjdFRvVmlzdWFsRm9yV3JpdGluZ01vZGVX
aXRoaW5MaW5lKGxvZ2ljYWxSZWN0LCBsaW5lQm94LmxvZ2ljYWxSZWN0KCksIHdyaXRpbmdNb2Rl
KTsKKyAgICAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh0b0xheW91
dFBvaW50KHZpc3VhbFJlY3QudG9wTGVmdCgpKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rp
c3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50
QnVpbGRlci5oCmluZGV4IDU0MmFiOWYwM2RiYy4uYzhkYTQwZmM1YTI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lu
bGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgTGluZUJveDsKIAogY2xhc3MgSW5saW5lRGlz
cGxheUNvbnRlbnRCdWlsZGVyIHsKIHB1YmxpYzoKLSAgICBJbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXIoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmLCBJbmxpbmVGb3JtYXR0aW5nU3Rh
dGUmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpMaW5lJiwgc2l6ZV90IGxpbmVJbmRleCk7CisgICAg
SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyKGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29u
dGVudCYsIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiwgSW5saW5lRm9ybWF0dGluZ1N0
YXRlJiwgY29uc3QgSW5saW5lRGlzcGxheTo6TGluZSYsIHNpemVfdCBsaW5lSW5kZXgpOwogCiAg
ICAgSW5saW5lRGlzcGxheTo6Qm94ZXMgYnVpbGQoY29uc3QgTGluZUxheW91dFJlc3VsdCYsIGNv
bnN0IExpbmVCb3gmKTsKIApAQCAtNzYsMTEgKzc2LDEzIEBAIHByaXZhdGU6CiAKICAgICBib29s
IGlzTGluZUZ1bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
bGluZUlzRnVsbHlUcnVuY2F0ZWRJbkJsb2NrRGlyZWN0aW9uOyB9CiAKKyAgICBjb25zdCBDb25z
dHJhaW50c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0cmFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9j
b25zdHJhaW50czsgfQogICAgIGNvbnN0IEVsZW1lbnRCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVy
biBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKTsgfQogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBy
b290U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2xpbmVJbmRleCA/IHJvb3QoKS5zdHlsZSgpIDog
cm9vdCgpLmZpcnN0TGluZVN0eWxlKCk7IH0KICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdDb250
ZXh0OyB9CiAgICAgSW5saW5lRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSBjb25z
dCB7IHJldHVybiBtX2Zvcm1hdHRpbmdTdGF0ZTsgfSAKIAorICAgIGNvbnN0IENvbnN0cmFpbnRz
Rm9ySW5saW5lQ29udGVudCYgbV9jb25zdHJhaW50czsKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCYgbV9mb3JtYXR0aW5nQ29udGV4dDsKICAgICBJbmxpbmVGb3JtYXR0aW5nU3Rh
dGUmIG1fZm9ybWF0dGluZ1N0YXRlOwogICAgIGNvbnN0IElubGluZURpc3BsYXk6OkxpbmUmIG1f
ZGlzcGxheUxpbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lu
bGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAKaW5kZXggYzJmNmFkMzY2ZWFmLi41NDFiMzU1MzU2
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURp
c3BsYXlMaW5lQnVpbGRlci5jcHAKQEAgLTUwLDggKzUwLDkgQEAgc3RhdGljIElubGluZVJlY3Qg
ZmxpcExvZ2ljYWxMaW5lUmVjdFRvVmlzdWFsRm9yV3JpdGluZ01vZGUoY29uc3QgSW5saW5lUmVj
dCYgbGkKICAgICByZXR1cm4gbGluZUxvZ2ljYWxSZWN0OwogfQogCi1JbmxpbmVEaXNwbGF5TGlu
ZUJ1aWxkZXI6OklubGluZURpc3BsYXlMaW5lQnVpbGRlcihjb25zdCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCi0gICAgOiBtX2lubGluZUZvcm1hdHRp
bmdDb250ZXh0KGlubGluZUZvcm1hdHRpbmdDb250ZXh0KQorSW5saW5lRGlzcGxheUxpbmVCdWls
ZGVyOjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIoY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVD
b250ZW50JiBjb25zdHJhaW50cywgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlubGlu
ZUZvcm1hdHRpbmdDb250ZXh0KQorICAgIDogbV9jb25zdHJhaW50cyhjb25zdHJhaW50cykKKyAg
ICAsIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCiB7
CiB9CiAKQEAgLTEyMSw5ICsxMjIsMTAgQEAgSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpFbmNs
b3NpbmdMaW5lR2VvbWV0cnkgSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpjb2xsZWMKICAgICBy
ZXR1cm4geyB7IGVuY2xvc2luZ1RvcC52YWx1ZV9vcihsaW5lQm94UmVjdC50b3AoKSksIGVuY2xv
c2luZ0JvdHRvbS52YWx1ZV9vcihsaW5lQm94UmVjdC50b3AoKSkgfSwgY29udGVudE92ZXJmbG93
UmVjdCB9OwogfQogCi1JbmxpbmVEaXNwbGF5OjpMaW5lIElubGluZURpc3BsYXlMaW5lQnVpbGRl
cjo6YnVpbGQoY29uc3QgTGluZUxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3VsdCwgY29uc3Qg
TGluZUJveCYgbGluZUJveCwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25z
dHJhaW50cywgYm9vbCBsaW5lSXNGdWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24pIGNvbnN0
CitJbmxpbmVEaXNwbGF5OjpMaW5lIElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6YnVpbGQoY29u
c3QgTGluZUxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3VsdCwgY29uc3QgTGluZUJveCYgbGlu
ZUJveCwgYm9vbCBsaW5lSXNGdWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24pIGNvbnN0CiB7
CiAgICAgYXV0byYgcm9vdElubGluZUJveCA9IGxpbmVCb3gucm9vdElubGluZUJveCgpOworICAg
IGF1dG8mIGNvbnN0cmFpbnRzID0gdGhpcy0+Y29uc3RyYWludHMoKTsKICAgICBhdXRvIGlzTGVm
dFRvUmlnaHREaXJlY3Rpb24gPSBsaW5lTGF5b3V0UmVzdWx0LmRpcmVjdGlvbmFsaXR5LmlubGlu
ZUJhc2VEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgIGF1dG8gbGluZUJveExv
Z2ljYWxSZWN0ID0gbGluZUJveC5sb2dpY2FsUmVjdCgpOwogICAgIGF1dG8gbGluZUJveFZpc3Vh
bExlZnQgPSBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlM
aW5lQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuaAppbmRleCA0MjhkMTU3N2Nk
NTkuLjBjY2RlY2YwMGZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNw
bGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5oCkBAIC0zNiw5ICszNiw5IEBAIGNsYXNzIExp
bmVCb3g7CiAKIGNsYXNzIElubGluZURpc3BsYXlMaW5lQnVpbGRlciB7CiBwdWJsaWM6Ci0gICAg
SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7
CisgICAgSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyKGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5l
Q29udGVudCYsIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7CiAKLSAgICBJbmxpbmVE
aXNwbGF5OjpMaW5lIGJ1aWxkKGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmLCBjb25zdCBMaW5lQm94
JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgYm9vbCBsaW5lSXNGdWxseVRy
dW5jYXRlZEluQmxvY2tEaXJlY3Rpb24pIGNvbnN0OworICAgIElubGluZURpc3BsYXk6OkxpbmUg
YnVpbGQoY29uc3QgTGluZUxheW91dFJlc3VsdCYsIGNvbnN0IExpbmVCb3gmLCBib29sIGxpbmVJ
c0Z1bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbikgY29uc3Q7CiAKICAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxGbG9hdFJlY3Q+IHRyYWlsaW5nRWxsaXBzaXNWaXN1YWxSZWN0QWZ0ZXJUcnVu
Y2F0aW9uKExpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSwgY29uc3QgSW5saW5lRGlzcGxheTo6TGlu
ZSYsIElubGluZURpc3BsYXk6OkJveGVzJiwgYm9vbCBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRl
bnQpOwogCkBAIC01MSw4ICs1MSwxMCBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDsgfQogICAgIGNvbnN0IEJveCYgcm9vdCgpIGNvbnN0IHsgcmV0
dXJuIGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpOyB9CisgICAgY29uc3QgQ29uc3RyYWludHNG
b3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RyYWlu
dHM7IH0KICAgICBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSBjb25zdCB7IHJldHVybiBmb3Jt
YXR0aW5nQ29udGV4dCgpLmxheW91dFN0YXRlKCk7IH0KIAorICAgIGNvbnN0IENvbnN0cmFpbnRz
Rm9ySW5saW5lQ29udGVudCYgbV9jb25zdHJhaW50czsKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCYgbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRp
b25MaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxp
bmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCA2OTY4M2Y4NTlkYTMuLmE0
NTYzYzE1YjI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmNwcApAQCAtNTg5LDcgKzU4OSw2IEBAIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gTGluZUxh
eW91dDo6bGF5b3V0KCkKICAgICBhdXRvIHBhcmVudEJsb2NrTGF5b3V0U3RhdGUgPSBMYXlvdXQ6
OkJsb2NrTGF5b3V0U3RhdGUgeyBtX2Jsb2NrRm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUo
KSwgbGluZUNsYW1wKGZsb3coKSksIHRleHRCb3hUcmltKGZsb3coKSksIGludHJ1c2l2ZUluaXRp
YWxMZXR0ZXJCb3R0b20oKSB9OwogICAgIGF1dG8gaW5saW5lTGF5b3V0U3RhdGUgPSBMYXlvdXQ6
OklubGluZUxheW91dFN0YXRlIHsgcGFyZW50QmxvY2tMYXlvdXRTdGF0ZSwgV1RGTW92ZShtX25l
c3RlZExpc3RNYXJrZXJPZmZzZXRzKSB9OwogICAgIGF1dG8gbGF5b3V0UmVzdWx0ID0gbV9pbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5sYXlvdXRJbkZsb3dBbmRGbG9hdENvbnRlbnQoaW5saW5lQ29u
dGVudENvbnN0cmFpbnRzLCBpbmxpbmVMYXlvdXRTdGF0ZSwgbV9saW5lRGFtYWdlLmdldCgpKTsK
LSAgICBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0LmxheW91dE91dE9mRmxvd0NvbnRlbnQoaW5s
aW5lQ29udGVudENvbnN0cmFpbnRzLCBpbmxpbmVMYXlvdXRTdGF0ZSwgbGF5b3V0UmVzdWx0LmRp
c3BsYXlDb250ZW50KTsKIAogICAgIGF1dG8gcmVwYWludFJlY3QgPSBMYXlvdXRSZWN0IHsgY29u
c3RydWN0Q29udGVudChpbmxpbmVMYXlvdXRTdGF0ZSwgV1RGTW92ZShsYXlvdXRSZXN1bHQpKSB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRF
bGVtZW50Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEVs
ZW1lbnRCb3guY3BwCmluZGV4IDE4NDEzZjRlY2ZkMS4uODU4M2RmNGMyOTlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRFbGVtZW50Qm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRFbGVtZW50Qm94LmNw
cApAQCAtMTAxLDYgKzEwMSwxNSBAQCBjb25zdCBCb3gqIEVsZW1lbnRCb3g6Omxhc3RJbkZsb3dP
ckZsb2F0aW5nQ2hpbGQoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitib29sIEVs
ZW1lbnRCb3g6Omhhc091dE9mRmxvd0NoaWxkKCkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8qIGNo
aWxkID0gdGhpcy0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxp
bmcoKSkgeworICAgICAgICBpZiAoY2hpbGQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9p
ZCBFbGVtZW50Qm94OjphcHBlbmRDaGlsZChVbmlxdWVSZWY8Qm94PiBjaGlsZFJlZikKIHsKICAg
ICBpbnNlcnRDaGlsZChXVEZNb3ZlKGNoaWxkUmVmKSwgbV9sYXN0Q2hpbGQuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0RWxlbWVudEJv
eC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0RWxlbWVudEJveC5o
CmluZGV4IGNiZjUxNDliNDdiZS4uYTI4MWVlYmMwOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRFbGVtZW50Qm94LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0RWxlbWVudEJveC5oCkBAIC02Niw2ICs2Niw3
IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0NoaWxkKCkgY29uc3QgeyByZXR1cm4gZmlyc3RDaGls
ZCgpOyB9CiAgICAgYm9vbCBoYXNJbkZsb3dDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIGZpcnN0SW5G
bG93Q2hpbGQoKTsgfQogICAgIGJvb2wgaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkgY29uc3Qg
eyByZXR1cm4gZmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKTsgfQorICAgIGJvb2wgaGFzT3V0
T2ZGbG93Q2hpbGQoKSBjb25zdDsKIAogICAgIHZvaWQgYXBwZW5kQ2hpbGQoVW5pcXVlUmVmPEJv
eD4pOwogICAgIHZvaWQgaW5zZXJ0Q2hpbGQoVW5pcXVlUmVmPEJveD4sIEJveCogYmVmb3JlQ2hp
bGQgPSBudWxscHRyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467455</attachid>
            <date>2023-08-27 19:25:29 -0700</date>
            <delta_ts>2023-08-28 12:37:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-260776-20230827192528.patch</filename>
            <type>text/plain</type>
            <size>50089</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBlMTE1OWU5YWMzMWMzMmE4ODhkMTVmMDgwODJjNTJjNjI4ZGU3MjQ3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFN1biwgMjcgQXVnIDIwMjMgMDk6NTI6MjMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBV
c2Ugb3BhcXVlIElubGluZUl0ZW0gdG8gY29tcHV0ZSBvdXQtb2YtZmxvdyBzdGF0aWMKIHBvc2l0
aW9uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjA3NzYKClJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL291dC1vZi1m
bG93LWJlY29tZXMtZmxvYXQtY3Jhc2guaHRtbDoKKiBMYXlvdXRUZXN0cy9mYXN0L2Jsb2NrL3Bv
c2l0aW9uaW5nL3RyYWlsaW5nLXNwYWNlLXRlc3QuaHRtbDoKKiBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6
CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dB
bmRGbG9hdENvbnRlbnQpOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6bGF5b3V0RmxvYXRDb250ZW50T25seSk6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1h
dHRpbmdDb250ZXh0OjpjcmVhdGVEaXNwbGF5Q29udGVudEZvckxpbmUpOgooV2ViQ29yZTo6TGF5
b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudCk6IERl
bGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
U3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KTogRGVsZXRlZC4KKiBTb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OmZpcnN0RGlz
cGxheUJveEluZGV4Rm9yTGF5b3V0Qm94KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6bGFz
dERpc3BsYXlCb3hJbmRleEZvckxheW91dEJveCk6IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6
OnByZXZpb3VzRGlzcGxheUJveEluZGV4KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6bmV4
dERpc3BsYXlCb3hJbmRleCk6IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1h
dHRpbmdHZW9tZXRyeTo6Y29udGVudExlZnRBZnRlckxhc3RMaW5lIGNvbnN0KTogRGVsZXRlZC4K
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlv
bkZvck91dE9mRmxvd0lubGluZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxv
d0Jsb2NrTGV2ZWxCb3ggY29uc3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oOgoqIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1z
QnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUl0ZW1zQnVpbGRlcjo6YnVpbGQp
OgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVJdGVtc0J1aWxkZXI6OmNvbGxlY3RJbmxpbmVJdGVt
cyk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lSXRlbXNCdWlsZGVyLmg6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OnJlbW92
ZU92ZXJmbG93aW5nT3VyT2ZGbG93Q29udGVudCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFw
cGVuZCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZFJlcGxhY2VkSW5saW5lTGV2ZWxC
b3gpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmUuaDoKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6TGluZUJv
eDo6bG9naWNhbFJlY3RGb3JPcGFxdWVCb3ggY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaDoKKiBTb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5j
cHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpwbGFjZUlubGluZUFuZEZsb2F0Q29u
dGVudCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRl
cik6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vz
c05vbkJpZGlDb250ZW50KToKKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyOjpwcm9jZXNzQmlkaUNvbnRlbnQpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
Lmg6CihXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y29uc3Ry
YWludHMgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcDoKKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIp
OgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OmJ1aWxkIGNvbnN0
KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNw
bGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5oOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVE
aXNwbGF5TGluZUJ1aWxkZXI6OmNvbnN0cmFpbnRzIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHA6
CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6bGF5b3V0KToKKiBTb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRFbGVtZW50Qm94LmNwcDoKKFdlYkNv
cmU6OkxheW91dDo6RWxlbWVudEJveDo6aGFzT3V0T2ZGbG93Q2hpbGQgY29uc3QpOgoqIFNvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEVsZW1lbnRCb3guaDoKLS0tCiAuLi4v
aW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcCAgICAgICAgICAgfCAgIDQgKy0KIC4uLi9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwICAgICAgICB8ICAzOSArLS0tCiAuLi4v
aW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggICAgICAgICAgfCAgIDIgLQogLi4uL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwICAgICAgIHwgMTY4IC0tLS0tLS0tLS0t
LS0tLS0tLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCAgICAgICAgIHwg
ICAzIC0KIC4uLi9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNwcCAgICAgICAgICAgICB8ICAx
MiArLQogLi4uL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuaCAgICAgICAgICAgICAgIHwgICAy
ICstCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcCAgfCAgMzMg
KystLQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oICAgIHwgICAy
ICstCiAuLi4vaW5saW5lL0lubGluZUxpbmVCb3guY3BwICAgICAgICAgICAgICAgICAgfCAgIDcg
KwogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5oIHwgICAxICsK
IC4uLi9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwICAgICAgICAgICAgICB8ICAxNiArKwog
Li4uL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcCAgIHwgIDMwICsrKy0K
IC4uLi9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oICAgICB8ICAgNCArLQog
Li4uL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcCAgICAgIHwgICA4ICstCiAu
Li4vaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmggfCAgIDYgKy0KIC4u
Li9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCAgICB8ICAgMSAtCiAuLi4v
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0RWxlbWVudEJveC5jcHAgICAgfCAgIDkgKwogLi4uL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dEVsZW1lbnRCb3guaCAgICAgIHwgICAxICsKIC4uLi9tb3Zl
LWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3RlZC50eHQgICB8ICAgMSArCiAuLi4vbW92ZS1i
YWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0ICAgfCAgIDEgKwogMjEgZmlsZXMgY2hh
bmdlZCwgMTA5IGluc2VydGlvbnMoKyksIDI0MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250
ZW50QnJlYWtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5jcHAKaW5kZXggN2ZjNjIxNDE5MzRjLi5iZWVk
ZmJhODAwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUNvbnRlbnRCcmVha2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVDb250ZW50QnJlYWtlci5j
cHAKQEAgLTY1OSw3ICs2NTksOSBAQCBzdGQ6Om9wdGlvbmFsPElubGluZUNvbnRlbnRCcmVha2Vy
OjpPdmVyZmxvd2luZ1RleHRDb250ZW50OjpCcmVha2luZ1Bvc2l0aW9uPiBJbgogICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBydW5zLnNpemUoKTsgKytpbmRleCkgewogICAgICAg
ICBhdXRvJiBpbmxpbmVJdGVtID0gcnVuc1tpbmRleF0uaW5saW5lSXRlbTsKICAgICAgICAgLy8g
RklYTUU6IE1heWJlIGNvbnRlbnQgYWNyb3NzIGlubGluZSBib3hlcyBzaG91bGQgYmUgaHlwaGVu
YXRlZCBhcyB3ZWxsLgotICAgICAgICBpZiAoaW5saW5lSXRlbS5zdHlsZSgpLmZvbnRDYXNjYWRl
KCkgIT0gc3R5bGUuZm9udENhc2NhZGUoKSB8fCAhaW5saW5lSXRlbS5pc1RleHQoKSkKKyAgICAg
ICAgaWYgKGlubGluZUl0ZW0uaXNPcGFxdWUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBpZiAoIWlubGluZUl0ZW0uaXNUZXh0KCkgfHwgaW5saW5lSXRlbS5zdHlsZSgpLmZvbnRD
YXNjYWRlKCkgIT0gc3R5bGUuZm9udENhc2NhZGUoKSkKICAgICAgICAgICAgIHJldHVybiB7IH07
CiAKICAgICAgICAgYXV0byYgaW5saW5lVGV4dEl0ZW0gPSBkb3duY2FzdDxJbmxpbmVUZXh0SXRl
bT4oaW5saW5lSXRlbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHAKaW5kZXggMzRkYTY2NTI2MWIyLi5iY2FmMThmOGViYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTcwLDcgKzcw
LDcgQEAgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0KGNv
bnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb24KIElubGluZUxheW91dFJlc3VsdCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93QW5kRmxvYXRDb250ZW50KGNvbnN0IENvbnN0
cmFpbnRzRm9ySW5saW5lQ29udGVudCYgY29uc3RyYWludHMsIElubGluZUxheW91dFN0YXRlJiBp
bmxpbmVMYXlvdXRTdGF0ZSwgY29uc3QgSW5saW5lRGFtYWdlKiBsaW5lRGFtYWdlKQogewogICAg
IGF1dG8mIGZsb2F0aW5nU3RhdGUgPSBpbmxpbmVMYXlvdXRTdGF0ZS5wYXJlbnRCbG9ja0xheW91
dFN0YXRlKCkuZmxvYXRpbmdTdGF0ZSgpOwotICAgIGlmICghcm9vdCgpLmhhc0luRmxvd0NoaWxk
KCkpIHsKKyAgICBpZiAoIXJvb3QoKS5oYXNJbkZsb3dDaGlsZCgpICYmICFyb290KCkuaGFzT3V0
T2ZGbG93Q2hpbGQoKSkgewogICAgICAgICAvLyBGbG9hdCBhbmQvb3Igb3V0LW9mLWZsb3cgb25s
eSBjb250ZW50IGRvZXMgbm90IHN1cHBvcnQgcGFydGlhbCBsYXlvdXQuCiAgICAgICAgIEFTU0VS
VCghbGluZURhbWFnZSk7CiAgICAgICAgIGxheW91dEZsb2F0Q29udGVudE9ubHkoY29uc3RyYWlu
dHMsIGZsb2F0aW5nU3RhdGUpOwpAQCAtMTE0LDEyICsxMTQsNiBAQCBJbmxpbmVMYXlvdXRSZXN1
bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0FuZEZsb2F0Q29udGVudChj
b25zdCBDbwogICAgIHJldHVybiBsaW5lTGF5b3V0KGxpbmVCdWlsZGVyLCBpbmxpbmVJdGVtcywg
bmVlZHNMYXlvdXRSYW5nZSwgcHJldmlvdXNMaW5lKCksIGNvbnN0cmFpbnRzLCBpbmxpbmVMYXlv
dXRTdGF0ZSwgbGluZURhbWFnZSk7CiB9CiAKLXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dE91dE9mRmxvd0NvbnRlbnQoY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50
JiBjb25zdHJhaW50cywgSW5saW5lTGF5b3V0U3RhdGUmIGlubGluZUxheW91dFN0YXRlLCBjb25z
dCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBpbmxpbmVEaXNwbGF5Q29udGVudCkKLXsKLSAgICAv
LyBDb2xsZWN0aW5nIG91dC1vZi1mbG93IGJveGVzIGhhcHBlbnMgZHVyaW5nIHRoZSBpbi1mbG93
IHBoYXNlLgotICAgIGNvbXB1dGVTdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0NvbnRlbnQoZm9y
bWF0dGluZ1N0YXRlKCkub3V0T2ZGbG93Qm94ZXMoKSwgY29uc3RyYWludHMsIGlubGluZURpc3Bs
YXlDb250ZW50LCBpbmxpbmVMYXlvdXRTdGF0ZS5wYXJlbnRCbG9ja0xheW91dFN0YXRlKCkuZmxv
YXRpbmdTdGF0ZSgpKTsKLX0KLQogSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNTaXplcyhjb25zdCBJbmxpbmVEYW1hZ2Uq
IGxpbmVEYW1hZ2UpCiB7CiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gZm9ybWF0
dGluZ1N0YXRlKCk7CkBAIC0yMzksMzcgKzIzMywxMCBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdD
b250ZXh0OjpsYXlvdXRGbG9hdENvbnRlbnRPbmx5KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5l
QwogICAgICAgICAgICAgZmxvYXRpbmdTdGF0ZS5hcHBlbmQoZmxvYXRpbmdDb250ZXh0LnRvRmxv
YXRJdGVtKGZsb2F0Qm94LCBmbG9hdEJveEdlb21ldHJ5KSk7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoaW5saW5lSXRlbS5pc09wYXF1ZSgpKSB7Ci0gICAg
ICAgICAgICBhdXRvJiBvcGFxdWVCb3ggPSBpbmxpbmVJdGVtLmxheW91dEJveCgpOwotICAgICAg
ICAgICAgaWYgKG9wYXF1ZUJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewotICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBzZXQgdGhlIHN0YXRpYyBwb3NpdGlvbi4KLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9CiB9CiAKLXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVTdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0NvbnRlbnQoY29uc3QgRm9ybWF0dGluZ1N0
YXRlOjpPdXRPZkZsb3dCb3hMaXN0JiBvdXRPZkZsb3dCb3hlcywgY29uc3QgQ29uc3RyYWludHNG
b3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cywgY29uc3QgSW5saW5lRGlzcGxheTo6Q29udGVu
dCYgZGlzcGxheUNvbnRlbnQsIGNvbnN0IEZsb2F0aW5nU3RhdGUmIGZsb2F0aW5nU3RhdGUpCi17
Ci0gICAgLy8gVGhpcyBmdW5jdGlvbiBjb21wdXRlcyB0aGUgc3RhdGljIHBvc2l0aW9uIGZvciBv
dXQtb2YtZmxvdyBjb250ZW50IGluc2lkZSB0aGUgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dC4K
LSAgICAvLyBBcyBwZXIgc3BlYywgdGhlIHN0YXRpYyBwb3NpdGlvbiBvZiBhbiBvdXQtb2YtZmxv
dyBib3ggaXMgY29tcHV0ZWQgYXMgaWYgdGhlIHBvc2l0aW9uIHdhcyBzZXQgdG8gc3RhdGljLgot
ICAgIC8vIEhvd2V2ZXIgaXQgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSBvdXQtb2YtZmxvdyBib3gg
c2hvdWxkIGJlIGludm9sdmVkIGluIHRoZSBpbmxpbmUgbGF5b3V0IHByb2Nlc3MuCi0gICAgLy8g
SW5zdGVhZCB3ZSBmaWd1cmUgb3V0IHRoaXMgc3RhdGljIHBvc2l0aW9uIGFmdGVyIHRoZSBpbmxp
bmUgbGF5b3V0IGJ5IGxvb2tpbmcgYXQgdGhlIHByZXZpb3VzL25leHQgc2libGluZyAob3IgcGFy
ZW50KSBib3gncyBnZW9tZXRyeSBhbmQKLSAgICAvLyBwbGFjZSB0aGUgb3V0LW9mLWZsb3cgYm94
IGF0IHRoZSBsb2dpY2FsIHJpZ2h0IHBvc2l0aW9uLgotICAgIGF1dG8mIGZvcm1hdHRpbmdHZW9t
ZXRyeSA9IHRoaXMtPmZvcm1hdHRpbmdHZW9tZXRyeSgpOwotICAgIGF1dG8mIGZvcm1hdHRpbmdT
dGF0ZSA9IHRoaXMtPmZvcm1hdHRpbmdTdGF0ZSgpOwotICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0
ID0gRmxvYXRpbmdDb250ZXh0IHsgKnRoaXMsIGZsb2F0aW5nU3RhdGUgfTsKLQotICAgIGZvciAo
YXV0byYgb3V0T2ZGbG93Qm94IDogb3V0T2ZGbG93Qm94ZXMpIHsKLSAgICAgICAgaWYgKG91dE9m
Rmxvd0JveC0+c3R5bGUoKS5pc09yaWdpbmFsRGlzcGxheUlubGluZVR5cGUoKSkgewotICAgICAg
ICAgICAgZm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KG91dE9mRmxvd0JveCkuc2V0TG9naWNh
bFRvcExlZnQoZm9ybWF0dGluZ0dlb21ldHJ5LnN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93SW5s
aW5lTGV2ZWxCb3gob3V0T2ZGbG93Qm94LCBjb25zdHJhaW50cywgZGlzcGxheUNvbnRlbnQsIGZs
b2F0aW5nQ29udGV4dCkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgZm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KG91dE9mRmxvd0JveCkuc2V0TG9naWNhbFRv
cExlZnQoZm9ybWF0dGluZ0dlb21ldHJ5LnN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93QmxvY2tM
ZXZlbEJveChvdXRPZkZsb3dCb3gsIGNvbnN0cmFpbnRzLCBkaXNwbGF5Q29udGVudCkpOwotICAg
IH0KLX0KLQogc3RhdGljIExpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSBsaW5lRW5kaW5nRWxsaXBz
aXNQb2xpY3koY29uc3QgUmVuZGVyU3R5bGUmIHJvb3RTdHlsZSwgc2l6ZV90IG51bWJlck9mTGlu
ZXMsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBudW1iZXJPZlZpc2libGVMaW5lc0FsbG93ZWQpCiB7
CiAgICAgLy8gV2UgbWF5IGhhdmUgcGFzc2VkIHRoZSBsaW5lLWNsYW1wIGxpbmUgd2l0aCBvdmVy
ZmxvdyB2aXNpYmxlLgpAQCAtMjk2LDggKzI2Myw4IEBAIElubGluZVJlY3QgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShzaXplX3QgbGluZUluZGV4
CiAgICAgYXV0byBlbGxpcHNpc1BvbGljeSA9IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeShyb290
KCkuc3R5bGUoKSwgbGluZUluZGV4LCBudW1iZXJPZlZpc2libGVMaW5lc0FsbG93ZWQpOwogICAg
IGF1dG8gbGluZUlzRnVsbHlUcnVuY2F0ZWRJbkJsb2NrRGlyZWN0aW9uID0gbnVtYmVyT2ZWaXNp
YmxlTGluZXNBbGxvd2VkICYmIGxpbmVJbmRleCArIDEgPiAqbnVtYmVyT2ZWaXNpYmxlTGluZXNB
bGxvd2VkOwogICAgIGF1dG8gbGluZUJveCA9IExpbmVCb3hCdWlsZGVyIHsgKnRoaXMsIGlubGlu
ZUxheW91dFN0YXRlLCBsaW5lTGF5b3V0UmVzdWx0IH0uYnVpbGQobGluZUluZGV4KTsKLSAgICBh
dXRvIGRpc3BsYXlMaW5lID0gSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyIHsgKnRoaXMgfS5idWls
ZChsaW5lTGF5b3V0UmVzdWx0LCBsaW5lQm94LCBjb25zdHJhaW50cywgbGluZUlzRnVsbHlUcnVu
Y2F0ZWRJbkJsb2NrRGlyZWN0aW9uKTsKLSAgICBhdXRvIGJveGVzID0gSW5saW5lRGlzcGxheUNv
bnRlbnRCdWlsZGVyIHsgKnRoaXMsIGZvcm1hdHRpbmdTdGF0ZSgpLCBkaXNwbGF5TGluZSwgbGlu
ZUluZGV4IH0uYnVpbGQobGluZUxheW91dFJlc3VsdCwgbGluZUJveCk7CisgICAgYXV0byBkaXNw
bGF5TGluZSA9IElubGluZURpc3BsYXlMaW5lQnVpbGRlciB7IGNvbnN0cmFpbnRzLCAqdGhpcyB9
LmJ1aWxkKGxpbmVMYXlvdXRSZXN1bHQsIGxpbmVCb3gsIGxpbmVJc0Z1bGx5VHJ1bmNhdGVkSW5C
bG9ja0RpcmVjdGlvbik7CisgICAgYXV0byBib3hlcyA9IElubGluZURpc3BsYXlDb250ZW50QnVp
bGRlciB7IGNvbnN0cmFpbnRzLCAqdGhpcywgZm9ybWF0dGluZ1N0YXRlKCksIGRpc3BsYXlMaW5l
LCBsaW5lSW5kZXggfS5idWlsZChsaW5lTGF5b3V0UmVzdWx0LCBsaW5lQm94KTsKICAgICBpZiAo
YXV0byBlbGxpcHNpc1JlY3QgPSBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OnRyYWlsaW5nRWxs
aXBzaXNWaXN1YWxSZWN0QWZ0ZXJUcnVuY2F0aW9uKGVsbGlwc2lzUG9saWN5LCBkaXNwbGF5TGlu
ZSwgYm94ZXMsIGxpbmVMYXlvdXRSZXN1bHQuaXNGaXJzdExhc3QuaXNMYXN0TGluZVdpdGhJbmxp
bmVDb250ZW50KSkKICAgICAgICAgZGlzcGxheUxpbmUuc2V0RWxsaXBzaXNWaXN1YWxSZWN0KCpl
bGxpcHNpc1JlY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuaAppbmRleCAxMTQwNjhmMWE3NTIuLmYxMDExZGZiZDYwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC02MCw3ICs2MCw2IEBAIHB1
YmxpYzoKICAgICBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBFbGVtZW50Qm94JiBmb3Jt
YXR0aW5nQ29udGV4dFJvb3QsIElubGluZUZvcm1hdHRpbmdTdGF0ZSYpOwogCiAgICAgSW5saW5l
TGF5b3V0UmVzdWx0IGxheW91dEluRmxvd0FuZEZsb2F0Q29udGVudChjb25zdCBDb25zdHJhaW50
c0ZvcklubGluZUNvbnRlbnQmLCBJbmxpbmVMYXlvdXRTdGF0ZSYsIGNvbnN0IElubGluZURhbWFn
ZSogPSBudWxscHRyKTsKLSAgICB2b2lkIGxheW91dE91dE9mRmxvd0NvbnRlbnQoY29uc3QgQ29u
c3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgSW5saW5lTGF5b3V0U3RhdGUmLCBjb25zdCBJbmxp
bmVEaXNwbGF5OjpDb250ZW50Jik7CiAgICAgSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyBjb21w
dXRlZEludHJpbnNpY1NpemVzKGNvbnN0IElubGluZURhbWFnZSopOwogICAgIExheW91dFVuaXQg
bWF4aW11bUNvbnRlbnRTaXplKCk7CiAKQEAgLTcxLDcgKzcwLDYgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBJbmxpbmVMYXlvdXRSZXN1bHQgbGluZUxheW91dChBYnN0cmFjdExpbmVCdWlsZGVy
JiwgY29uc3QgSW5saW5lSXRlbXMmLCBJbmxpbmVJdGVtUmFuZ2UsIHN0ZDo6b3B0aW9uYWw8UHJl
dmlvdXNMaW5lPiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgSW5saW5lTGF5
b3V0U3RhdGUmLCBjb25zdCBJbmxpbmVEYW1hZ2UqID0gbnVsbHB0cik7CiAgICAgdm9pZCBsYXlv
dXRGbG9hdENvbnRlbnRPbmx5KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIEZs
b2F0aW5nU3RhdGUmKTsKLSAgICB2b2lkIGNvbXB1dGVTdGF0aWNQb3NpdGlvbkZvck91dE9mRmxv
d0NvbnRlbnQoY29uc3QgRm9ybWF0dGluZ1N0YXRlOjpPdXRPZkZsb3dCb3hMaXN0JiwgY29uc3Qg
Q29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JiwgY29uc3QgSW5saW5lRGlzcGxheTo6Q29udGVu
dCYsIGNvbnN0IEZsb2F0aW5nU3RhdGUmKTsKIAogICAgIHZvaWQgY29sbGVjdENvbnRlbnRJZk5l
ZWRlZCgpOwogICAgIElubGluZVJlY3QgY3JlYXRlRGlzcGxheUNvbnRlbnRGb3JMaW5lKHNpemVf
dCBsaW5lSW5kZXgsIGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmLCBjb25zdCBDb25zdHJhaW50c0Zv
cklubGluZUNvbnRlbnQmLCBjb25zdCBJbmxpbmVMYXlvdXRTdGF0ZSYsIElubGluZURpc3BsYXk6
OkNvbnRlbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2Vv
bWV0cnkuY3BwCmluZGV4IDNlY2FjM2NjNzUyYi4uMDlhYjY5NDEyNTQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAKQEAgLTIwOSwxNzQg
KzIwOSw2IEBAIElubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21w
dXRlZFRleHRJbmRlbnQoSXNJbnRyaW5zaWNXaWR0aE1vCiAgICAgcmV0dXJuIHsgbWluaW11bVZh
bHVlRm9yTGVuZ3RoKHRleHRJbmRlbnQsIGF2YWlsYWJsZVdpZHRoKSB9OwogfQogCi1zdGF0aWMg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IGZpcnN0RGlzcGxheUJveEluZGV4Rm9yTGF5b3V0Qm94KGNv
bnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3hlcyYgZGlzcGxheUJv
eGVzKQotewotICAgIC8vIEZJWE1FOiBCdWlsZCBhIGZpcnN0L2xhc3QgaGFzaG1hcCBmb3IgdGhl
c2UgYm94ZXMuCi0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGRpc3BsYXlCb3hl
cy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKGRpc3BsYXlCb3hlc1tpbmRleF0uaXNS
b290SW5saW5lQm94KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCZkaXNw
bGF5Qm94ZXNbaW5kZXhdLmxheW91dEJveCgpID09ICZsYXlvdXRCb3gpCi0gICAgICAgICAgICBy
ZXR1cm4gaW5kZXg7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLXN0YXRpYyBzdGQ6Om9w
dGlvbmFsPHNpemVfdD4gbGFzdERpc3BsYXlCb3hJbmRleEZvckxheW91dEJveChjb25zdCBCb3gm
IGxheW91dEJveCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGRpc3BsYXlCb3hlcykKLXsK
LSAgICAvLyBGSVhNRTogQnVpbGQgYSBmaXJzdC9sYXN0IGhhc2htYXAgZm9yIHRoZXNlIGJveGVz
LgotICAgIGZvciAoYXV0byBpbmRleCA9IGRpc3BsYXlCb3hlcy5zaXplKCk7IGluZGV4LS07KSB7
Ci0gICAgICAgIGlmIChkaXNwbGF5Qm94ZXNbaW5kZXhdLmlzUm9vdElubGluZUJveCgpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICgmZGlzcGxheUJveGVzW2luZGV4XS5sYXlv
dXRCb3goKSA9PSAmbGF5b3V0Qm94KQotICAgICAgICAgICAgcmV0dXJuIGluZGV4OwotICAgIH0K
LSAgICByZXR1cm4geyB9OwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IHByZXZp
b3VzRGlzcGxheUJveEluZGV4KGNvbnN0IEJveCYgb3V0T2ZGbG93Qm94LCBjb25zdCBJbmxpbmVE
aXNwbGF5OjpCb3hlcyYgZGlzcGxheUJveGVzKQotewotICAgIGF1dG8gcHJldmlvdXNEaXNwbGF5
Qm94SW5kZXhPZiA9IFsmXSAoYXV0byYgbGF5b3V0Qm94KSAtPiBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4gewotICAgICAgICBmb3IgKGF1dG8qIGJveCA9ICZsYXlvdXRCb3g7IGJveDsgYm94ID0gYm94
LT5wcmV2aW91c0luRmxvd1NpYmxpbmcoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gZGlzcGxh
eUJveEluZGV4ID0gbGFzdERpc3BsYXlCb3hJbmRleEZvckxheW91dEJveCgqYm94LCBkaXNwbGF5
Qm94ZXMpKQotICAgICAgICAgICAgICAgIHJldHVybiBkaXNwbGF5Qm94SW5kZXg7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9OwotCi0gICAgYXV0byogY2FuZGlkYXRlQm94
ID0gb3V0T2ZGbG93Qm94LnByZXZpb3VzSW5GbG93U2libGluZygpOwotICAgIGlmICghY2FuZGlk
YXRlQm94KQotICAgICAgICBjYW5kaWRhdGVCb3ggPSBvdXRPZkZsb3dCb3gucGFyZW50KCkuaXNJ
bmxpbmVCb3goKSA/ICZvdXRPZkZsb3dCb3gucGFyZW50KCkgOiBudWxscHRyOwotICAgIHdoaWxl
IChjYW5kaWRhdGVCb3gpIHsKLSAgICAgICAgaWYgKGF1dG8gZGlzcGxheUJveEluZGV4ID0gcHJl
dmlvdXNEaXNwbGF5Qm94SW5kZXhPZigqY2FuZGlkYXRlQm94KSkKLSAgICAgICAgICAgIHJldHVy
biBkaXNwbGF5Qm94SW5kZXg7Ci0gICAgICAgIGNhbmRpZGF0ZUJveCA9IGNhbmRpZGF0ZUJveC0+
cGFyZW50KCkuaXNJbmxpbmVCb3goKSA/ICZjYW5kaWRhdGVCb3gtPnBhcmVudCgpIDogbnVsbHB0
cjsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiBuZXh0RGlzcGxheUJveEluZGV4KGNvbnN0IEJveCYgb3V0T2ZGbG93Qm94LCBjb25zdCBJ
bmxpbmVEaXNwbGF5OjpCb3hlcyYgZGlzcGxheUJveGVzKQotewotICAgIGF1dG8gbmV4dERpc3Bs
YXlCb3hJbmRleE9mID0gWyZdIChhdXRvJiBsYXlvdXRCb3gpIC0+IHN0ZDo6b3B0aW9uYWw8c2l6
ZV90PiB7Ci0gICAgICAgIGZvciAoYXV0byogYm94ID0gJmxheW91dEJveDsgYm94OyBib3ggPSBi
b3gtPm5leHRJbkZsb3dTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGRpc3BsYXlC
b3hJbmRleCA9IGZpcnN0RGlzcGxheUJveEluZGV4Rm9yTGF5b3V0Qm94KCpib3gsIGRpc3BsYXlC
b3hlcykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlCb3hJbmRleDsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4geyB9OwotICAgIH07Ci0KLSAgICBhdXRvKiBjYW5kaWRhdGVCb3gg
PSBvdXRPZkZsb3dCb3gubmV4dEluRmxvd1NpYmxpbmcoKTsKLSAgICBpZiAoIWNhbmRpZGF0ZUJv
eCkKLSAgICAgICAgY2FuZGlkYXRlQm94ID0gb3V0T2ZGbG93Qm94LnBhcmVudCgpLmlzSW5saW5l
Qm94KCkgPyBvdXRPZkZsb3dCb3gucGFyZW50KCkubmV4dEluRmxvd1NpYmxpbmcoKSA6IG51bGxw
dHI7Ci0gICAgd2hpbGUgKGNhbmRpZGF0ZUJveCkgewotICAgICAgICBpZiAoYXV0byBkaXNwbGF5
Qm94SW5kZXggPSBuZXh0RGlzcGxheUJveEluZGV4T2YoKmNhbmRpZGF0ZUJveCkpCi0gICAgICAg
ICAgICByZXR1cm4gZGlzcGxheUJveEluZGV4OwotICAgICAgICBjYW5kaWRhdGVCb3ggPSBjYW5k
aWRhdGVCb3gtPnBhcmVudCgpLmlzSW5saW5lQm94KCkgPyBjYW5kaWRhdGVCb3gtPnBhcmVudCgp
Lm5leHRJbkZsb3dTaWJsaW5nKCkgOiBudWxscHRyOwotICAgIH0KLSAgICByZXR1cm4geyB9Owot
fQotCi1JbmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6Y29udGVudExl
ZnRBZnRlckxhc3RMaW5lKGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3Ry
YWludHMsIHN0ZDo6b3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4gbGFzdExpbmVMb2dpY2FsQm90
dG9tLCBjb25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5nQ29udGV4dCkgY29uc3QKLXsKLSAg
ICBhdXRvIGNvbnRlbnRIYXNQcmV2aW91c0xpbmUgPSBsYXN0TGluZUxvZ2ljYWxCb3R0b20gPyBz
dGQ6Om1ha2Vfb3B0aW9uYWwodHJ1ZSkgOiBzdGQ6Om51bGxvcHQ7Ci0gICAgYXV0byB0ZXh0SW5k
ZW50ID0gY29tcHV0ZWRUZXh0SW5kZW50KElzSW50cmluc2ljV2lkdGhNb2RlOjpObywgY29udGVu
dEhhc1ByZXZpb3VzTGluZSwgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxXaWR0aCk7
Ci0gICAgYXV0byBmbG9hdENvbnN0cmFpbnRzID0gZmxvYXRDb25zdHJhaW50c0ZvckxpbmUobGFz
dExpbmVMb2dpY2FsQm90dG9tLnZhbHVlX29yKGNvbnN0cmFpbnRzLmxvZ2ljYWxUb3AoKSksIDAs
IGZsb2F0aW5nQ29udGV4dCk7Ci0gICAgYXV0byBsaW5lQm94TGVmdCA9IGNvbnN0cmFpbnRzLmhv
cml6b250YWwoKS5sb2dpY2FsTGVmdDsKLSAgICBhdXRvIGxpbmVCb3hXaWR0aCA9IGNvbnN0cmFp
bnRzLmhvcml6b250YWwoKS5sb2dpY2FsV2lkdGg7Ci0gICAgLy8gRklYTUU6IEFkZCBtaXNzaW5n
IFJUTCBzdXBwb3J0LgotICAgIGlmIChmbG9hdENvbnN0cmFpbnRzLmxlZnQpIHsKLSAgICAgICAg
YXV0byBmbG9hdE9mZnNldCA9IHN0ZDo6bWF4KDBfbHUsIGZsb2F0Q29uc3RyYWludHMubGVmdC0+
eCAtIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsTGVmdCk7Ci0gICAgICAgIGxpbmVC
b3hMZWZ0ICs9IGZsb2F0T2Zmc2V0OwotICAgICAgICBsaW5lQm94V2lkdGggLT0gZmxvYXRPZmZz
ZXQ7Ci0gICAgfQotICAgIGlmIChmbG9hdENvbnN0cmFpbnRzLnJpZ2h0KSB7Ci0gICAgICAgIGF1
dG8gbGluZUJveFJpZ2h0ID0gKGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsTGVmdCAr
IGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsV2lkdGgpOwotICAgICAgICBhdXRvIGZs
b2F0T2Zmc2V0ID0gc3RkOjptYXgoMF9sdSwgbGluZUJveFJpZ2h0IC0gZmxvYXRDb25zdHJhaW50
cy5yaWdodC0+eCk7Ci0gICAgICAgIGxpbmVCb3hXaWR0aCAtPSBmbG9hdE9mZnNldDsKLSAgICB9
Ci0gICAgbGluZUJveExlZnQgKz0gdGV4dEluZGVudDsKLSAgICBhdXRvIHJvb3RJbmxpbmVCb3hM
ZWZ0ID0gaG9yaXpvbnRhbEFsaWdubWVudE9mZnNldChmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3Qo
KS5zdHlsZSgpLCB7IH0sIGxpbmVCb3hXaWR0aCwgeyB9LCB7IH0sIHRydWUpOwotICAgIHJldHVy
biBsaW5lQm94TGVmdCArIHJvb3RJbmxpbmVCb3hMZWZ0OwotfQotCi1MYXlvdXRQb2ludCBJbmxp
bmVGb3JtYXR0aW5nR2VvbWV0cnk6OnN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93SW5saW5lTGV2
ZWxCb3goY29uc3QgQm94JiBvdXRPZkZsb3dCb3gsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93
Q29udGVudCYgY29uc3RyYWludHMsIGNvbnN0IElubGluZURpc3BsYXk6OkNvbnRlbnQmIGRpc3Bs
YXlDb250ZW50LCBjb25zdCBGbG9hdGluZ0NvbnRleHQmIGZsb2F0aW5nQ29udGV4dCkgY29uc3QK
LXsKLSAgICBBU1NFUlQob3V0T2ZGbG93Qm94LnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxp
bmVUeXBlKCkpOwotICAgIGF1dG8mIGxpbmVzID0gZGlzcGxheUNvbnRlbnQubGluZXM7Ci0gICAg
YXV0byYgYm94ZXMgPSBkaXNwbGF5Q29udGVudC5ib3hlczsKLQotICAgIGlmIChsaW5lcy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgQVNTRVJUKGJveGVzLmlzRW1wdHkoKSk7Ci0gICAgICAgIHJldHVy
biB7IGNvbnRlbnRMZWZ0QWZ0ZXJMYXN0TGluZShjb25zdHJhaW50cywgeyB9LCBmbG9hdGluZ0Nv
bnRleHQpLCBjb25zdHJhaW50cy5sb2dpY2FsVG9wKCkgfTsKLSAgICB9Ci0KLSAgICBhdXRvIGlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlID0gZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCkuc3R5bGUo
KS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwotICAgIGF1dG8gbGVmdFNpZGVUb0xvZ2ljYWxU
b3BMZWZ0ID0gWyZdIChhdXRvJiBkaXNwbGF5Qm94LCBhdXRvJiBsaW5lLCBib29sIG1heU5lZWRN
YXJnaW5BZGp1c3RtZW50ID0gdHJ1ZSkgewotICAgICAgICBhdXRvIG1hcmdpblN0YXJ0ID0gTGF5
b3V0VW5pdCB7IH07Ci0gICAgICAgIGlmIChtYXlOZWVkTWFyZ2luQWRqdXN0bWVudCAmJiBkaXNw
bGF5Qm94LmlzTm9uUm9vdElubGluZUxldmVsQm94KCkpCi0gICAgICAgICAgICBtYXJnaW5TdGFy
dCA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goZGlzcGxheUJveC5sYXlvdXRC
b3goKSkubWFyZ2luU3RhcnQoKTsKLSAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlID8gTGF5b3V0UG9pbnQoZGlzcGxheUJveC5sZWZ0KCkgLSBtYXJnaW5TdGFydCwgbGluZS50
b3AoKSkgOiBMYXlvdXRQb2ludChkaXNwbGF5Qm94LnRvcCgpIC0gbWFyZ2luU3RhcnQsIGxpbmUu
bGVmdCgpKTsKLSAgICB9OwotICAgIGF1dG8gcmlnaHRTaWRlVG9Mb2dpY2FsVG9wTGVmdCA9IFsm
XSAoYXV0byYgZGlzcGxheUJveCwgYXV0byYgbGluZSkgewotICAgICAgICBhdXRvIG1hcmdpbkVu
ZCA9IExheW91dFVuaXQgeyB9OwotICAgICAgICBpZiAoZGlzcGxheUJveC5pc05vblJvb3RJbmxp
bmVMZXZlbEJveCgpKQotICAgICAgICAgICAgbWFyZ2luRW5kID0gZm9ybWF0dGluZ0NvbnRleHQo
KS5nZW9tZXRyeUZvckJveChkaXNwbGF5Qm94LmxheW91dEJveCgpKS5tYXJnaW5FbmQoKTsKLSAg
ICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gTGF5b3V0UG9pbnQoZGlzcGxh
eUJveC5yaWdodCgpICsgbWFyZ2luRW5kLCBsaW5lLnRvcCgpKSA6IExheW91dFBvaW50KGRpc3Bs
YXlCb3guYm90dG9tKCkgKyBtYXJnaW5FbmQsIGxpbmUubGVmdCgpKTsKLSAgICB9OwotCi0gICAg
YXV0byBwcmV2aW91c0Rpc3BsYXlCb3hJbmRleEJlZm9yZU91dE9mRmxvd0JveCA9IHByZXZpb3Vz
RGlzcGxheUJveEluZGV4KG91dE9mRmxvd0JveCwgYm94ZXMpOwotICAgIGlmICghcHJldmlvdXNE
aXNwbGF5Qm94SW5kZXhCZWZvcmVPdXRPZkZsb3dCb3gpCi0gICAgICAgIHJldHVybiBsZWZ0U2lk
ZVRvTG9naWNhbFRvcExlZnQoYm94ZXNbMF0sIGxpbmVzWzBdKTsKLQotICAgIGF1dG8mIHByZXZp
b3VzRGlzcGxheUJveCA9IGJveGVzWypwcmV2aW91c0Rpc3BsYXlCb3hJbmRleEJlZm9yZU91dE9m
Rmxvd0JveF07Ci0gICAgYXV0byYgY3VycmVudExpbmUgPSBsaW5lc1twcmV2aW91c0Rpc3BsYXlC
b3gubGluZUluZGV4KCldOwotICAgIGlmIChwcmV2aW91c0Rpc3BsYXlCb3guaXNJbmxpbmVCb3go
KSAmJiAmb3V0T2ZGbG93Qm94LnBhcmVudCgpID09ICZwcmV2aW91c0Rpc3BsYXlCb3gubGF5b3V0
Qm94KCkpIHsKLSAgICAgICAgLy8gU3BlY2lhbCBoYW5kbGluZyBmb3IgY2FzZXMgd2hlbiB0aGlz
IGlzIHRoZSBmaXJzdCBib3ggaW5zaWRlIGFuIGlubGluZSBib3g6Ci0gICAgICAgIC8vIDxkaXY+
dGV4dDxzcGFuPjxpbWcgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZSI+Y29udGVudDwvc3Bhbj48
L2Rpdj4KLSAgICAgICAgYXV0byYgaW5saW5lQm94ID0gcHJldmlvdXNEaXNwbGF5Qm94LmxheW91
dEJveCgpOwotICAgICAgICBhdXRvIGlubGluZUJveERpc3BsYXlCb3ggPSBib3hlc1sqZmlyc3RE
aXNwbGF5Qm94SW5kZXhGb3JMYXlvdXRCb3goaW5saW5lQm94LCBib3hlcyldOwotICAgICAgICBh
dXRvIGlubGluZUNvbnRlbnRCb3hPZmZzZXQgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5
Rm9yQm94KGlubGluZUJveCkuYm9yZGVyQW5kUGFkZGluZ1N0YXJ0KCk7Ci0gICAgICAgIGlmIChp
c0hvcml6b250YWxXcml0aW5nTW9kZSkKLSAgICAgICAgICAgIGlubGluZUJveERpc3BsYXlCb3gu
bW92ZUhvcml6b250YWxseShpbmxpbmVDb250ZW50Qm94T2Zmc2V0KTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgaW5saW5lQm94RGlzcGxheUJveC5tb3ZlVmVydGljYWxseShpbmxpbmVDb250
ZW50Qm94T2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuIGxlZnRTaWRlVG9Mb2dpY2FsVG9wTGVmdChp
bmxpbmVCb3hEaXNwbGF5Qm94LCBsaW5lc1tpbmxpbmVCb3hEaXNwbGF5Qm94LmxpbmVJbmRleCgp
XSwgZmFsc2UpOwotICAgIH0KLQotICAgIGF1dG8gcHJldmlvdXNCb3hPdmVyZmxvd3MgPSAoaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUgPyBwcmV2aW91c0Rpc3BsYXlCb3gucmlnaHQoKSA+IGN1cnJl
bnRMaW5lLnJpZ2h0KCkgOiBwcmV2aW91c0Rpc3BsYXlCb3guYm90dG9tKCkgPiBjdXJyZW50TGlu
ZS5ib3R0b20oKSkgfHwgcHJldmlvdXNEaXNwbGF5Qm94LmlzTGluZUJyZWFrQm94KCk7Ci0gICAg
aWYgKCFwcmV2aW91c0JveE92ZXJmbG93cykKLSAgICAgICAgcmV0dXJuIHJpZ2h0U2lkZVRvTG9n
aWNhbFRvcExlZnQocHJldmlvdXNEaXNwbGF5Qm94LCBjdXJyZW50TGluZSk7Ci0KLSAgICBhdXRv
IG5leHREaXNwbGF5Qm94SW5kZXhBZnRlck91dE9mRmxvdyA9IG5leHREaXNwbGF5Qm94SW5kZXgo
b3V0T2ZGbG93Qm94LCBib3hlcyk7Ci0gICAgaWYgKCFuZXh0RGlzcGxheUJveEluZGV4QWZ0ZXJP
dXRPZkZsb3cpIHsKLSAgICAgICAgLy8gVGhpcyBpcyB0aGUgbGFzdCBjb250ZW50IG9uIHRoZSBi
bG9jayBhbmQgaXQgZG9lcyBub3QgZml0IHRoZSBsYXN0IGxpbmUuCi0gICAgICAgIHJldHVybiB7
IGNvbnRlbnRMZWZ0QWZ0ZXJMYXN0TGluZShjb25zdHJhaW50cywgY3VycmVudExpbmUuYm90dG9t
KCksIGZsb2F0aW5nQ29udGV4dCksIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gY3VycmVudExp
bmUuYm90dG9tKCkgOiBjdXJyZW50TGluZS5yaWdodCgpIH07Ci0gICAgfQotICAgIGF1dG8mIG5l
eHREaXNwbGF5Qm94ID0gYm94ZXNbKm5leHREaXNwbGF5Qm94SW5kZXhBZnRlck91dE9mRmxvd107
Ci0gICAgcmV0dXJuIGxlZnRTaWRlVG9Mb2dpY2FsVG9wTGVmdChuZXh0RGlzcGxheUJveCwgbGlu
ZXNbbmV4dERpc3BsYXlCb3gubGluZUluZGV4KCldKTsKLX0KLQotTGF5b3V0UG9pbnQgSW5saW5l
Rm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0Jsb2NrTGV2ZWxC
b3goY29uc3QgQm94JiBvdXRPZkZsb3dCb3gsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29u
dGVudCYgY29uc3RyYWludHMsIGNvbnN0IElubGluZURpc3BsYXk6OkNvbnRlbnQmIGRpc3BsYXlD
b250ZW50KSBjb25zdAotewotICAgIEFTU0VSVChvdXRPZkZsb3dCb3guc3R5bGUoKS5pc0Rpc3Bs
YXlCbG9ja0xldmVsKCkpOwotCi0gICAgYXV0byBpc0hvcml6b250YWxXcml0aW5nTW9kZSA9IGZv
cm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLnN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KTsKLSAgICBhdXRvJiBsaW5lcyA9IGRpc3BsYXlDb250ZW50LmxpbmVzOwotICAgIGF1dG8mIGJv
eGVzID0gZGlzcGxheUNvbnRlbnQuYm94ZXM7Ci0gICAgYXV0byBjb250ZW50Qm94VG9wTGVmdCA9
IExheW91dFBvaW50IHsgY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxMZWZ0LCBjb25z
dHJhaW50cy5sb2dpY2FsVG9wKCkgfTsKLQotICAgIGlmIChsaW5lcy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgQVNTRVJUKGJveGVzLmlzRW1wdHkoKSk7Ci0gICAgICAgIHJldHVybiBjb250ZW50Qm94
VG9wTGVmdDsKLSAgICB9Ci0KLSAgICAvLyBCbG9jayBsZXZlbCBib3hlcyBhcmUgcGxhY2VkIHVu
ZGVyIHRoZSBjdXJyZW50IGxpbmUgYXMgaWYgdGhleSB3ZXJlIG5vcm1hbCBpbmZsb3cgYmxvY2sg
bGV2ZWwgYm94ZXMuCi0gICAgYXV0byBwcmV2aW91c0Rpc3BsYXlCb3hJbmRleEJlZm9yZU91dE9m
Rmxvd0JveCA9IHByZXZpb3VzRGlzcGxheUJveEluZGV4KG91dE9mRmxvd0JveCwgYm94ZXMpOwot
ICAgIGlmICghcHJldmlvdXNEaXNwbGF5Qm94SW5kZXhCZWZvcmVPdXRPZkZsb3dCb3gpCi0gICAg
ICAgIHJldHVybiB7IGNvbnRlbnRCb3hUb3BMZWZ0LngoKSwgaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUgPyBsaW5lc1swXS50b3AoKSA6IGxpbmVzWzBdLmxlZnQoKSB9OwotICAgIGF1dG8mIGN1cnJl
bnRMaW5lID0gbGluZXNbYm94ZXNbKnByZXZpb3VzRGlzcGxheUJveEluZGV4QmVmb3JlT3V0T2ZG
bG93Qm94XS5saW5lSW5kZXgoKV07Ci0gICAgcmV0dXJuIHsgY29udGVudEJveFRvcExlZnQueCgp
LCBMYXlvdXRVbml0IHsgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPyBjdXJyZW50TGluZS5ib3R0
b20oKSA6IGN1cnJlbnRMaW5lLnJpZ2h0KCkgfSB9OwotfQotCiBJbmxpbmVMYXlvdXRVbml0IElu
bGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6aW5pdGlhbExpbmVIZWlnaHQoYm9vbCBpc0ZpcnN0TGlu
ZSkgY29uc3QKIHsKICAgICBpZiAobGF5b3V0U3RhdGUoKS5pblN0YW5kYXJkc01vZGUoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmgKaW5kZXggNWFi
ZGUxZTgwYjdhLi5lNTM2ZDkzMGYwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUZvcm1hdHRpbmdHZW9tZXRyeS5oCkBAIC01Niw5ICs1Niw2IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBJbmxpbmVSZWN0IGZsaXBWaXN1YWxSZWN0VG9Mb2dpY2FsRm9yV3JpdGluZ01vZGUoY29u
c3QgSW5saW5lUmVjdCYgdmlzdWFsUmVjdCwgV3JpdGluZ01vZGUpOwogCi0gICAgTGF5b3V0UG9p
bnQgc3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dJbmxpbmVMZXZlbEJveChjb25zdCBCb3gmLCBj
b25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpD
b250ZW50JiwgY29uc3QgRmxvYXRpbmdDb250ZXh0JikgY29uc3Q7Ci0gICAgTGF5b3V0UG9pbnQg
c3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dCbG9ja0xldmVsQm94KGNvbnN0IEJveCYsIGNvbnN0
IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYsIGNvbnN0IElubGluZURpc3BsYXk6OkNvbnRl
bnQmKSBjb25zdDsKLQogICAgIHZvaWQgYWRqdXN0TWFyZ2luU3RhcnRGb3JMaXN0TWFya2VyKGNv
bnN0IEVsZW1lbnRCb3gmLCBMYXlvdXRVbml0IG5lc3RlZExpc3RNYXJrZXJNYXJnaW5TdGFydCwg
SW5saW5lTGF5b3V0VW5pdCByb290SW5saW5lQm94T2Zmc2V0KSBjb25zdDsKIAogICAgIHN0YXRp
YyBJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQoY29uc3QgUmVuZGVy
U3R5bGUmIHJvb3RTdHlsZSwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFJpZ2h0LCBJ
bmxpbmVMYXlvdXRVbml0IGxpbmVMb2dpY2FsUmlnaHQsIElubGluZUxheW91dFVuaXQgaGFuZ2lu
Z1RyYWlsaW5nV2lkdGgsIGNvbnN0IExpbmU6OlJ1bkxpc3QmIHJ1bnMsIGJvb2wgaXNMYXN0TGlu
ZSwgc3RkOjpvcHRpb25hbDxUZXh0RGlyZWN0aW9uPiBpbmxpbmVCYXNlRGlyZWN0aW9uT3ZlcnJp
ZGUgPSBzdGQ6Om51bGxvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRl
ci5jcHAKaW5kZXggMjNhZTZkODA4MDI2Li4zNjYzZGU0MjI5MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVp
bGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNwcApAQCAtODYsOSArODYsNyBAQCBJbmxpbmVJdGVt
c0J1aWxkZXI6OklubGluZUl0ZW1zQnVpbGRlcihjb25zdCBFbGVtZW50Qm94JiBmb3JtYXR0aW5n
Q29udGV4dFJvb3QsCiB2b2lkIElubGluZUl0ZW1zQnVpbGRlcjo6YnVpbGQoSW5saW5lSXRlbVBv
c2l0aW9uIHN0YXJ0UG9zaXRpb24pCiB7CiAgICAgSW5saW5lSXRlbXMgaW5saW5lSXRlbXM7Ci0g
ICAgRm9ybWF0dGluZ1N0YXRlOjpPdXRPZkZsb3dCb3hMaXN0IG91dE9mRmxvd0JveGVzOwotCi0g
ICAgY29sbGVjdElubGluZUl0ZW1zKGlubGluZUl0ZW1zLCBvdXRPZkZsb3dCb3hlcywgc3RhcnRQ
b3NpdGlvbik7CisgICAgY29sbGVjdElubGluZUl0ZW1zKGlubGluZUl0ZW1zLCBzdGFydFBvc2l0
aW9uKTsKIAogICAgIGlmICghcm9vdCgpLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
IHx8IGNvbnRlbnRSZXF1aXJlc1Zpc3VhbFJlb3JkZXJpbmcoKSkgewogICAgICAgICAvLyBGSVhN
RTogQWRkIHN1cHBvcnQgZm9yIHBhcnRpYWwsIHlldCBwYXJhZ3JhcGggbGV2ZWwgYmlkaSBjb250
ZW50IGhhbmRsaW5nLgpAQCAtMTA5LDcgKzEwNyw2IEBAIHZvaWQgSW5saW5lSXRlbXNCdWlsZGVy
OjpidWlsZChJbmxpbmVJdGVtUG9zaXRpb24gc3RhcnRQb3NpdGlvbikKICAgICAgICAgbV9mb3Jt
YXR0aW5nU3RhdGUuYXBwZW5kSW5saW5lSXRlbXMoV1RGTW92ZShpbmxpbmVJdGVtcykpOwogICAg
IH07CiAgICAgYWRqdXN0SW5saW5lRm9ybWF0dGluZ1N0YXRlV2l0aE5ld0lubGluZUl0ZW1zKCk7
Ci0gICAgbV9mb3JtYXR0aW5nU3RhdGUuc2V0T3V0T2ZGbG93Qm94ZXMoV1RGTW92ZShvdXRPZkZs
b3dCb3hlcykpOwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICAvLyBDaGVjayBpZiB3ZSd2ZSBn
b3QgbWF0Y2hpbmcgaW5saW5lIGJveCBzdGFydC9lbmQgcGFpcnMgYW5kIHVuaXF1ZSBpbmxpbmUg
bGV2ZWwgaXRlbXMgKG5vbi10ZXh0LCBub24taW5saW5lIGJveCBpdGVtcykuCkBAIC0xOTEsNyAr
MTg4LDcgQEAgc3RhdGljIExheW91dFF1ZXVlIGluaXRpYWxpemVMYXlvdXRRdWV1ZShjb25zdCBF
bGVtZW50Qm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QKICAgICByZXR1cm4gbGF5b3V0UXVldWU7
CiB9CiAKLXZvaWQgSW5saW5lSXRlbXNCdWlsZGVyOjpjb2xsZWN0SW5saW5lSXRlbXMoSW5saW5l
SXRlbXMmIGlubGluZUl0ZW1zLCBGb3JtYXR0aW5nU3RhdGU6Ok91dE9mRmxvd0JveExpc3QmIG91
dE9mRmxvd0JveGVzLCBJbmxpbmVJdGVtUG9zaXRpb24gc3RhcnRQb3NpdGlvbikKK3ZvaWQgSW5s
aW5lSXRlbXNCdWlsZGVyOjpjb2xsZWN0SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUl0
ZW1zLCBJbmxpbmVJdGVtUG9zaXRpb24gc3RhcnRQb3NpdGlvbikKIHsKICAgICAvLyBUcmF2ZXJz
ZSB0aGUgdHJlZSBhbmQgY3JlYXRlIGlubGluZSBpdGVtcyBvdXQgb2YgaW5saW5lIGJveGVzIGFu
ZCBsZWFmIG5vZGVzLiBUaGlzIGVzc2VudGlhbGx5IHR1cm5zIHRoZSB0cmVlIGlubGluZSBzdHJ1
Y3R1cmUgaW50byBhIGZsYXQgb25lLgogICAgIC8vIDxzcGFuPnRleHQ8c3Bhbj48L3NwYW4+PGlt
Zz48L3NwYW4+IC0+IFtJbmxpbmVCb3hTdGFydF1bSW5saW5lTGV2ZWxCb3hdW0lubGluZUJveFN0
YXJ0XVtJbmxpbmVCb3hFbmRdW0lubGluZUxldmVsQm94XVtJbmxpbmVCb3hFbmRdCkBAIC0yMzMs
OSArMjMwLDggQEAgdm9pZCBJbmxpbmVJdGVtc0J1aWxkZXI6OmNvbGxlY3RJbmxpbmVJdGVtcyhJ
bmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIEZvcm1hdHRpbmcKICAgICAgICAgd2hpbGUgKCFsYXlv
dXRRdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGF1dG8gbGF5b3V0Qm94ID0gbGF5b3V0
UXVldWUudGFrZUxhc3QoKTsKICAgICAgICAgICAgIGlmIChsYXlvdXRCb3gtPmlzT3V0T2ZGbG93
UG9zaXRpb25lZCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gTGV0J3Mgbm90IGNvbnN0cnVjdCBJ
bmxpbmVJdGVtcyBmb3Igb3V0LW9mLWZsb3cgY29udGVudCBhcyB0aGV5IGRvbid0IHBhcnRpY2lw
YXRlIGluIHRoZSBpbmxpbmUgbGF5b3V0LgotICAgICAgICAgICAgICAgIC8vIEhvd2V2ZXIgdG8g
YmUgYWJsZSB0byBzdGF0aWMgcG9zaXRpb25pbmcgdGhlbSwgd2UgbmVlZCB0byBjb21wdXRlIHRo
ZWlyIGFwcHJveGltYXRlIHBvc2l0aW9ucy4KLSAgICAgICAgICAgICAgICBvdXRPZkZsb3dCb3hl
cy5hcHBlbmQobGF5b3V0Qm94KTsKKyAgICAgICAgICAgICAgICBtX2lzTm9uQmlkaVRleHRBbmRG
b3JjZWRMaW5lQnJlYWtPbmx5Q29udGVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlubGlu
ZUl0ZW1zLmFwcGVuZCh7IGxheW91dEJveCwgSW5saW5lSXRlbTo6VHlwZTo6T3BhcXVlIH0pOwog
ICAgICAgICAgICAgfSBlbHNlIGlmIChsYXlvdXRCb3gtPmlzSW5saW5lVGV4dEJveCgpKSB7CiAg
ICAgICAgICAgICAgICAgYXV0byYgaW5saW5lVGV4dEJveCA9IGRvd25jYXN0PElubGluZVRleHRC
b3g+KGxheW91dEJveCk7CiAgICAgICAgICAgICAgICAgaGFuZGxlVGV4dENvbnRlbnQoaW5saW5l
VGV4dEJveCwgaW5saW5lSXRlbXMsIHBhcnRpYWxDb250ZW50T2Zmc2V0KGlubGluZVRleHRCb3gp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmgKaW5kZXggNWQ5ZDdhYzdl
MjQwLi41MjJkMTgzODc3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRl
ci5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGJ1aWxkKElubGluZUl0ZW1Q
b3NpdGlvbiBzdGFydFBvc2l0aW9uKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGNvbGxlY3RJbmxp
bmVJdGVtcyhJbmxpbmVJdGVtcyYsIEZvcm1hdHRpbmdTdGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCYs
IElubGluZUl0ZW1Qb3NpdGlvbiBzdGFydFBvc2l0aW9uKTsKKyAgICB2b2lkIGNvbGxlY3RJbmxp
bmVJdGVtcyhJbmxpbmVJdGVtcyYsIElubGluZUl0ZW1Qb3NpdGlvbiBzdGFydFBvc2l0aW9uKTsK
ICAgICB2b2lkIGJyZWFrQW5kQ29tcHV0ZUJpZGlMZXZlbHMoSW5saW5lSXRlbXMmKTsKICAgICB2
b2lkIGNvbXB1dGVJbmxpbmVUZXh0SXRlbVdpZHRocyhJbmxpbmVJdGVtcyYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmUuY3BwCmluZGV4IDc2MjU2NGViZDE5ZS4uNTFkZTliMjBiOWQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcApAQCAtMjYwLDYgKzI2MCwyNyBAQCB2b2lkIExpbmU6
OmhhbmRsZU92ZXJmbG93aW5nTm9uQnJlYWtpbmdTcGFjZShUcmFpbGluZ0NvbnRlbnRBY3Rpb24g
dHJhaWxpbmdDb250ZQogICAgIG1fY29udGVudExvZ2ljYWxXaWR0aCAtPSByZW1vdmVkT3JDb2xs
YXBzZWRDb250ZW50V2lkdGg7CiB9CiAKK2NvbnN0IEJveCogTGluZTo6cmVtb3ZlT3ZlcmZsb3dp
bmdPdXJPZkZsb3dDb250ZW50KCkKK3sKKyAgICBhdXRvIGxhc3RUcmFpbGluZ09wYXF1ZUl0ZW1J
bmRleCA9IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB7IH07CisgICAgZm9yIChzaXplX3QgaW5kZXgg
PSBtX3J1bnMuc2l6ZSgpOyBpbmRleC0tOykgeworICAgICAgICBhdXRvJiBydW4gPSBtX3J1bnNb
aW5kZXhdOworICAgICAgICBpZiAocnVuLmlzT3BhcXVlKCkpIHsKKyAgICAgICAgICAgIGxhc3RU
cmFpbGluZ09wYXF1ZUl0ZW1JbmRleCA9IGluZGV4OworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKCFydW4ubG9naWNhbFdpZHRoKCkgJiYgKHJ1bi5pc0lubGlu
ZUJveFN0YXJ0KCkgfHwgcnVuLmlzSW5saW5lQm94RW5kKCkpKQorICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoIWxhc3RUcmFpbGluZ09wYXF1ZUl0
ZW1JbmRleCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvKiBsYXN0VHJhaWxpbmdPcGFx
dWVCb3ggPSAmbV9ydW5zWypsYXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXhdLmxheW91dEJveCgp
OworICAgIG1fcnVucy5yZW1vdmUoKmxhc3RUcmFpbGluZ09wYXF1ZUl0ZW1JbmRleCwgbV9ydW5z
LnNpemUoKSAtICpsYXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXgpOworICAgIEFTU0VSVCghbV9y
dW5zLmlzRW1wdHkoKSk7CisgICAgcmV0dXJuIGxhc3RUcmFpbGluZ09wYXF1ZUJveDsKK30KKwog
dm9pZCBMaW5lOjpoYW5kbGVUcmFpbGluZ0hhbmdpbmdDb250ZW50KHN0ZDo6b3B0aW9uYWw8SW50
cmluc2ljV2lkdGhNb2RlPiBpbnRyaW5zaWNXaWR0aE1vZGUsIElubGluZUxheW91dFVuaXQgaG9y
aXpvbnRhbEF2YWlsYWJsZVNwYWNlRm9yQ29udGVudCwgYm9vbCBpc0xhc3RGb3JtYXR0ZWRMaW5l
KQogewogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdGV4dC8jaGFuZ2luZwpA
QCAtMzU2LDE1ICszNzcsMTIgQEAgdm9pZCBMaW5lOjphcHBlbmQoY29uc3QgSW5saW5lSXRlbSYg
aW5saW5lSXRlbSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBJbmxpbmUKICAgICAgICAgYXBw
ZW5kSW5saW5lQm94U3RhcnQoaW5saW5lSXRlbSwgc3R5bGUsIGxvZ2ljYWxXaWR0aCk7CiAgICAg
ZWxzZSBpZiAoaW5saW5lSXRlbS5pc0lubGluZUJveEVuZCgpKQogICAgICAgICBhcHBlbmRJbmxp
bmVCb3hFbmQoaW5saW5lSXRlbSwgc3R5bGUsIGxvZ2ljYWxXaWR0aCk7Ci0gICAgZWxzZSBpZiAo
aW5saW5lSXRlbS5sYXlvdXRCb3goKS5pc1JlcGxhY2VkQm94KCkpCi0gICAgICAgIGFwcGVuZFJl
cGxhY2VkSW5saW5lTGV2ZWxCb3goaW5saW5lSXRlbSwgc3R5bGUsIGxvZ2ljYWxXaWR0aCk7CiAg
ICAgZWxzZSBpZiAoaW5saW5lSXRlbS5pc0JveCgpKQogICAgICAgICBhcHBlbmROb25SZXBsYWNl
ZElubGluZUxldmVsQm94KGlubGluZUl0ZW0sIHN0eWxlLCBsb2dpY2FsV2lkdGgpOwogICAgIGVs
c2UgaWYgKGlubGluZUl0ZW0uaXNPcGFxdWUoKSkgewogICAgICAgICBBU1NFUlQoIWxvZ2ljYWxX
aWR0aCk7CiAgICAgICAgIGFwcGVuZE9wYXF1ZUJveChpbmxpbmVJdGVtLCBzdHlsZSk7Ci0gICAg
fQotICAgIGVsc2UKKyAgICB9IGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgbV9oYXNOb25EZWZhdWx0QmlkaUxldmVsUnVuID0gbV9oYXNOb25EZWZhdWx0QmlkaUxldmVs
UnVuIHx8IGlubGluZUl0ZW0uYmlkaUxldmVsKCkgIT0gVUJJRElfREVGQVVMVF9MVFI7CiB9CkBA
IC02NTEsMTMgKzY2OSw2IEBAIHZvaWQgTGluZTo6YXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVMZXZl
bEJveChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBjb25zdCBSCiAgICAgbV9ydW5zLmFw
cGVuZCh7IGlubGluZUl0ZW0sIHN0eWxlLCBsYXN0UnVuTG9naWNhbFJpZ2h0KCkgKyBtYXJnaW5T
dGFydCwgbWFyZ2luQm94TG9naWNhbFdpZHRoIC0gbWFyZ2luU3RhcnQgfSk7CiB9CiAKLXZvaWQg
TGluZTo6YXBwZW5kUmVwbGFjZWRJbmxpbmVMZXZlbEJveChjb25zdCBJbmxpbmVJdGVtJiBpbmxp
bmVJdGVtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIElubGluZUxheW91dFVuaXQgbWFyZ2lu
Qm94TG9naWNhbFdpZHRoKQotewotICAgIEFTU0VSVChpbmxpbmVJdGVtLmxheW91dEJveCgpLmlz
UmVwbGFjZWRCb3goKSk7Ci0gICAgLy8gRklYTUU6IFN1cmVseSByZXBsYWNlZCBib3hlcyBiZWhh
dmUgZGlmZmVyZW50bHkuCi0gICAgYXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVMZXZlbEJveChpbmxp
bmVJdGVtLCBzdHlsZSwgbWFyZ2luQm94TG9naWNhbFdpZHRoKTsKLX0KLQogdm9pZCBMaW5lOjph
cHBlbmRMaW5lQnJlYWsoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQogewogICAgIG1fdHJhaWxpbmdTb2Z0SHlwaGVuV2lkdGggPSB7IH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lLmgKaW5kZXggMzViMzRkYzFhM2VlLi4xZDMyMjM5NDRkYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVMaW5lLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIElu
bGluZUxheW91dFVuaXQgaGFuZGxlVHJhaWxpbmdUcmltbWFibGVDb250ZW50KFRyYWlsaW5nQ29u
dGVudEFjdGlvbik7CiAgICAgdm9pZCBoYW5kbGVUcmFpbGluZ0hhbmdpbmdDb250ZW50KHN0ZDo6
b3B0aW9uYWw8SW50cmluc2ljV2lkdGhNb2RlPiwgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9udGFs
QXZhaWxhYmxlU3BhY2UsIGJvb2wgaXNMYXN0Rm9ybWF0dGVkTGluZSk7CiAgICAgdm9pZCBoYW5k
bGVPdmVyZmxvd2luZ05vbkJyZWFraW5nU3BhY2UoVHJhaWxpbmdDb250ZW50QWN0aW9uLCBJbmxp
bmVMYXlvdXRVbml0IG92ZXJmbG93aW5nV2lkdGgpOworICAgIGNvbnN0IEJveCogcmVtb3ZlT3Zl
cmZsb3dpbmdPdXJPZkZsb3dDb250ZW50KCk7CiAgICAgdm9pZCByZXNldEJpZGlMZXZlbEZvclRy
YWlsaW5nV2hpdGVzcGFjZShVQmlEaUxldmVsIHJvb3RCaWRpTGV2ZWwpOwogICAgIHZvaWQgYXBw
bHlSdW5FeHBhbnNpb24oSW5saW5lTGF5b3V0VW5pdCBob3Jpem9udGFsQXZhaWxhYmxlU3BhY2Up
OwogCkBAIC0yMDYsNyArMjA3LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgYXBwZW5kVGV4dENv
bnRlbnQoY29uc3QgSW5saW5lVGV4dEl0ZW0mLCBjb25zdCBSZW5kZXJTdHlsZSYsIElubGluZUxh
eW91dFVuaXQgbG9naWNhbFdpZHRoKTsKICAgICB2b2lkIGFwcGVuZE5vblJlcGxhY2VkSW5saW5l
TGV2ZWxCb3goY29uc3QgSW5saW5lSXRlbSYsIGNvbnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5
b3V0VW5pdCBtYXJnaW5Cb3hMb2dpY2FsV2lkdGgpOwotICAgIHZvaWQgYXBwZW5kUmVwbGFjZWRJ
bmxpbmVMZXZlbEJveChjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxp
bmVMYXlvdXRVbml0IG1hcmdpbkJveExvZ2ljYWxXaWR0aCk7CiAgICAgdm9pZCBhcHBlbmRJbmxp
bmVCb3hTdGFydChjb25zdCBJbmxpbmVJdGVtJiwgY29uc3QgUmVuZGVyU3R5bGUmLCBJbmxpbmVM
YXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7CiAgICAgdm9pZCBhcHBlbmRJbmxpbmVCb3hFbmQoY29u
c3QgSW5saW5lSXRlbSYsIGNvbnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dp
Y2FsV2lkdGgpOwogICAgIHZvaWQgYXBwZW5kTGluZUJyZWFrKGNvbnN0IElubGluZUl0ZW0mLCBj
b25zdCBSZW5kZXJTdHlsZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmNwcAppbmRl
eCAzYmMxODI1MjJiMzcuLjYyZDY2NzJlYzg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZUJveC5jcHAKQEAgLTEzMCw2ICsxMzAsMTMgQEAgSW5saW5lUmVjdCBMaW5lQm94Ojpsb2dpY2Fs
Qm9yZGVyQm94Rm9ySW5saW5lQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBCb3gKICAg
ICByZXR1cm4gbG9naWNhbFJlY3Q7CiB9CiAKK0lubGluZVJlY3QgTGluZUJveDo6bG9naWNhbFJl
Y3RGb3JPcGFxdWVCb3goY29uc3QgTGluZTo6UnVuJiBvcGFxdWVSdW4sIGNvbnN0IEJveEdlb21l
dHJ5JiBib3hHZW9tZXRyeSkgY29uc3QKK3sKKyAgICBBU1NFUlQob3BhcXVlUnVuLmlzT3BhcXVl
KCkpOworICAgIEFTU0VSVChvcGFxdWVSdW4ubGF5b3V0Qm94KCkuc3R5bGUoKS5pc09yaWdpbmFs
RGlzcGxheUlubGluZVR5cGUoKSk7CisgICAgcmV0dXJuIHsgeyB9LCBtX3Jvb3RJbmxpbmVCb3gu
bG9naWNhbExlZnQoKSArIG9wYXF1ZVJ1bi5sb2dpY2FsTGVmdCgpLCBib3hHZW9tZXRyeS5ib3Jk
ZXJCb3hXaWR0aCgpLCBib3hHZW9tZXRyeS5ib3JkZXJCb3hIZWlnaHQoKSB9OworfQorCiB9IC8v
IG5hbWVzcGFjZSBMYXlvdXQKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZUJveC5oCmluZGV4IDk0MDU0OWI1NzU1Ni4uM2UwZTM5ZTc3NzNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGluZUJveC5oCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICBJ
bmxpbmVSZWN0IGxvZ2ljYWxSZWN0Rm9yUm9vdElubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1f
cm9vdElubGluZUJveC5sb2dpY2FsUmVjdCgpOyB9CiAgICAgSW5saW5lUmVjdCBsb2dpY2FsQm9y
ZGVyQm94Rm9yQXRvbWljSW5saW5lTGV2ZWxCb3goY29uc3QgQm94JiwgY29uc3QgQm94R2VvbWV0
cnkmKSBjb25zdDsKICAgICBJbmxpbmVSZWN0IGxvZ2ljYWxCb3JkZXJCb3hGb3JJbmxpbmVCb3go
Y29uc3QgQm94JiwgY29uc3QgQm94R2VvbWV0cnkmKSBjb25zdDsKKyAgICBJbmxpbmVSZWN0IGxv
Z2ljYWxSZWN0Rm9yT3BhcXVlQm94KGNvbnN0IExpbmU6OlJ1biYgb3BhcXVlUnVuLCBjb25zdCBC
b3hHZW9tZXRyeSYpIGNvbnN0OwogCiAgICAgY29uc3QgSW5saW5lTGV2ZWxCb3gqIGlubGluZUxl
dmVsQm94Rm9yKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0
PExpbmVCb3gmPigqdGhpcykuaW5saW5lTGV2ZWxCb3hGb3IobGF5b3V0Qm94KTsgfQogICAgIGNv
bnN0IElubGluZUxldmVsQm94JiBpbmxpbmVMZXZlbEJveEZvcihjb25zdCBMaW5lOjpSdW4mIGxp
bmVSdW4pIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8TGluZUJveCY+KCp0aGlzKS5pbmxpbmVM
ZXZlbEJveEZvcihsaW5lUnVuKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxk
ZXIuY3BwCmluZGV4IDQzNzA4Mzc3ZWViOS4uOGRiYzA2ZTM0YjI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVp
bGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC00NzcsNiArNDc3LDIyIEBAIExpbmVDb250
ZW50IExpbmVCdWlsZGVyOjpwbGFjZUlubGluZUFuZEZsb2F0Q29udGVudChjb25zdCBJbmxpbmVJ
dGVtUmFuZ2UmIG5lZWRzCiAgICAgICAgICAgICAgICAgbV9saW5lLmhhbmRsZU92ZXJmbG93aW5n
Tm9uQnJlYWtpbmdTcGFjZShpc0xpbmVCcmVha0FmdGVyV2hpdGVzcGFjZSgpID8gTGluZTo6VHJh
aWxpbmdDb250ZW50QWN0aW9uOjpQcmVzZXJ2ZSA6IExpbmU6OlRyYWlsaW5nQ29udGVudEFjdGlv
bjo6UmVtb3ZlLCBtX2xpbmUuY29udGVudExvZ2ljYWxXaWR0aCgpIC0gaG9yaXpvbnRhbEF2YWls
YWJsZVNwYWNlKTsKIAogICAgICAgICAgICAgbV9saW5lLmhhbmRsZVRyYWlsaW5nSGFuZ2luZ0Nv
bnRlbnQoaW50cmluc2ljV2lkdGhNb2RlKCksIGhvcml6b250YWxBdmFpbGFibGVTcGFjZSwgaXNM
YXN0TGluZSk7CisKKyAgICAgICAgICAgIGF1dG8gbWF5TmVlZE91dE9mRmxvd092ZXJmbG93VHJp
bW1pbmcgPSAhaXNJbkludHJpbnNpY1dpZHRoTW9kZSgpICYmIGxpbmVIYXNPdmVyZmxvdygpICYm
ICFsaW5lQ29udGVudC5wYXJ0aWFsVHJhaWxpbmdDb250ZW50TGVuZ3RoOworICAgICAgICAgICAg
aWYgKG1heU5lZWRPdXRPZkZsb3dPdmVyZmxvd1RyaW1taW5nKSB7CisgICAgICAgICAgICAgICAg
QVNTRVJUKCFsaW5lQ29udGVudC5yYW5nZS5lbmQub2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBp
ZiAoYXV0byogbGFzdFJlbW92ZWRUcmFpbGluZ0JveCA9IG1fbGluZS5yZW1vdmVPdmVyZmxvd2lu
Z091ck9mRmxvd0NvbnRlbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGxpbmVFbmRJ
bmRleCA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8gaW5kZXggPSBs
aW5lQ29udGVudC5yYW5nZS5zdGFydC5pbmRleDsgaW5kZXggPCBsaW5lQ29udGVudC5yYW5nZS5l
bmQuaW5kZXg7ICsraW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJm1f
aW5saW5lSXRlbXNbaW5kZXhdLmxheW91dEJveCgpID09IGxhc3RSZW1vdmVkVHJhaWxpbmdCb3gp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmVDb250ZW50LnJhbmdl
LmVuZC5pbmRleDsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAg
bGluZUNvbnRlbnQucmFuZ2UuZW5kLmluZGV4ID0gbGluZUVuZEluZGV4KCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9OwogICAgICAgICBoYW5kbGVUcmFpbGlu
Z0NvbnRlbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxh
eS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCmluZGV4IGNmNzdiYzVmNjE4ZC4uZWRj
NzAyN2U3Y2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxh
eS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCkBAIC04MSw4ICs4MSw5IEBAIHN0YXRp
YyBpbmxpbmUgT3B0aW9uU2V0PElubGluZURpc3BsYXk6OkJveDo6UG9zaXRpb25XaXRoaW5Jbmxp
bmVMZXZlbEJveD4gaXNGaXJzCiAgICAgcmV0dXJuIHBvc2l0aW9uV2l0aGluSW5saW5lTGV2ZWxC
b3g7CiB9CiAKLUlubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6SW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4
dCwgSW5saW5lRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUsIGNvbnN0IElubGluZURp
c3BsYXk6OkxpbmUmIGRpc3BsYXlMaW5lLCBzaXplX3QgbGluZUluZGV4KQotICAgIDogbV9mb3Jt
YXR0aW5nQ29udGV4dChmb3JtYXR0aW5nQ29udGV4dCkKK0lubGluZURpc3BsYXlDb250ZW50QnVp
bGRlcjo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyKGNvbnN0IENvbnN0cmFpbnRzRm9ySW5s
aW5lQ29udGVudCYgY29uc3RyYWludHMsIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBm
b3JtYXR0aW5nQ29udGV4dCwgSW5saW5lRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUs
IGNvbnN0IElubGluZURpc3BsYXk6OkxpbmUmIGRpc3BsYXlMaW5lLCBzaXplX3QgbGluZUluZGV4
KQorICAgIDogbV9jb25zdHJhaW50cyhjb25zdHJhaW50cykKKyAgICAsIG1fZm9ybWF0dGluZ0Nv
bnRleHQoZm9ybWF0dGluZ0NvbnRleHQpCiAgICAgLCBtX2Zvcm1hdHRpbmdTdGF0ZShmb3JtYXR0
aW5nU3RhdGUpCiAgICAgLCBtX2Rpc3BsYXlMaW5lKGRpc3BsYXlMaW5lKQogICAgICwgbV9saW5l
SW5kZXgobGluZUluZGV4KQpAQCAtNDUyLDkgKzQ1MywxMSBAQCB2b2lkIElubGluZURpc3BsYXlD
b250ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KGNvbnN0IExpbmVMYXlvdXRSZXN1
bHQmCiAgICAgYXV0byBjb250ZW50U3RhcnRJblZpc3VhbE9yZGVyID0gbV9kaXNwbGF5TGluZS50
b3BMZWZ0KCk7CiAKICAgICBhcHBlbmRSb290SW5saW5lQm94RGlzcGxheUJveChmbGlwUm9vdElu
bGluZUJveFJlY3RUb1Zpc3VhbEZvcldyaXRpbmdNb2RlKGxpbmVCb3gubG9naWNhbFJlY3RGb3JS
b290SW5saW5lQm94KCksIHdyaXRpbmdNb2RlKSwgbGluZUJveC5yb290SW5saW5lQm94KCkuaGFz
Q29udGVudCgpLCBib3hlcyk7CisgICAgYXV0byBsaW5lSGFzSW5GbG93Q29udGVudCA9IGZhbHNl
OwogCiAgICAgZm9yIChhdXRvJiBsaW5lUnVuIDogbGluZUxheW91dFJlc3VsdC5pbmxpbmVDb250
ZW50KSB7CiAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGxpbmVSdW4ubGF5b3V0Qm94KCk7Cisg
ICAgICAgIGxpbmVIYXNJbkZsb3dDb250ZW50ID0gbGluZUhhc0luRmxvd0NvbnRlbnQgfHwgbGlu
ZVJ1bi5pc1RleHQoKSB8fCBsaW5lUnVuLmlzQm94KCk7CiAKICAgICAgICAgYXV0byB2aXN1YWxS
ZWN0UmVsYXRpdmVUb1Jvb3QgPSBbJl0oYXV0byBsb2dpY2FsUmVjdCkgewogICAgICAgICAgICAg
YXV0byB2aXN1YWxSZWN0ID0gZmxpcExvZ2ljYWxSZWN0VG9WaXN1YWxGb3JXcml0aW5nTW9kZVdp
dGhpbkxpbmUobG9naWNhbFJlY3QsIGxpbmVCb3gubG9naWNhbFJlY3QoKSwgd3JpdGluZ01vZGUp
OwpAQCAtNDk3LDcgKzUwMCwxNiBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6
cHJvY2Vzc05vbkJpZGlDb250ZW50KGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAobGluZVJ1bi5pc09wYXF1ZSgpKSB7
Ci0gICAgICAgICAgICAvLyBTZXQgZ2VvbWV0cnkgZm9yIHRoaXMgb3BhcXVlIGJveC4KKyAgICAg
ICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlKCkuYm94R2VvbWV0cnko
bGF5b3V0Qm94KTsKKyAgICAgICAgICAgIGlmIChsYXlvdXRCb3guc3R5bGUoKS5pc09yaWdpbmFs
RGlzcGxheUlubGluZVR5cGUoKSkgeworICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcExl
ZnQgPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yT3BhcXVlQm94KGxpbmVSdW4sIGJveEdlb21ldHJ5
KS50b3BMZWZ0KCk7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcExlZnQubW92ZUJ5KGxpbmVC
b3gubG9naWNhbFJlY3QoKS50b3BMZWZ0KCkpOworICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5
LnNldExvZ2ljYWxUb3BMZWZ0KHRvTGF5b3V0UG9pbnQobG9naWNhbFRvcExlZnQpKTsKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEJsb2Nr
IGxldmVsIGJveGVzIGFyZSBwbGFjZWQgZWl0aGVyIGF0IHRoZSBzdGFydCBvZiB0aGUgbGluZSBv
ciAidW5kZXIiIGRlcGVuZGluZyB3aGV0aGVyIHRoZXkgaGF2ZSBwcmV2aW91cyBpbmZsb3cgc2li
bGluZy4KKyAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcCA9ICFsaW5lSGFzSW5GbG93Q29udGVu
dCA/IGxpbmVCb3gubG9naWNhbFJlY3QoKS50b3AoKSA6IGxpbmVCb3gubG9naWNhbFJlY3QoKS5i
b3R0b20oKTsKKyAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHsgY29u
c3RyYWludHMoKS5ob3Jpem9udGFsKCkubG9naWNhbExlZnQsIGxvZ2ljYWxUb3AgfSk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQobGluZVJ1bi5pc0lu
bGluZUJveEVuZCgpIHx8IGxpbmVSdW4uaXNXb3JkQnJlYWtPcHBvcnR1bml0eSgpKTsKQEAgLTY4
NywxMSArNjk5LDEzIEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNz
QmlkaUNvbnRlbnQoY29uc3QgTGluZUxheW91dFJlc3VsdCYgbGluCiAKICAgICAgICAgYXV0byBj
b250ZW50UmlnaHRJbklubGluZURpcmVjdGlvblZpc3VhbE9yZGVyID0gY29udGVudFN0YXJ0SW5J
bmxpbmVEaXJlY3Rpb25WaXN1YWxPcmRlcjsKICAgICAgICAgYXV0byYgaW5saW5lQ29udGVudCA9
IGxpbmVMYXlvdXRSZXN1bHQuaW5saW5lQ29udGVudDsKKyAgICAgICAgYXV0byBsaW5lSGFzSW5G
bG93Q29udGVudCA9IGZhbHNlOwogICAgICAgICBmb3IgKGF1dG8gdmlzdWFsT3JkZXIgOiBsaW5l
TGF5b3V0UmVzdWx0LmRpcmVjdGlvbmFsaXR5LnZpc3VhbE9yZGVyTGlzdCkgewogICAgICAgICAg
ICAgQVNTRVJUKGlubGluZUNvbnRlbnRbdmlzdWFsT3JkZXJdLmJpZGlMZXZlbCgpICE9IElubGlu
ZUl0ZW06Om9wYXF1ZUJpZGlMZXZlbCk7CiAKICAgICAgICAgICAgIGF1dG8mIGxpbmVSdW4gPSBp
bmxpbmVDb250ZW50W3Zpc3VhbE9yZGVyXTsKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9
IGxpbmVSdW4ubGF5b3V0Qm94KCk7CisgICAgICAgICAgICBsaW5lSGFzSW5GbG93Q29udGVudCA9
IGxpbmVIYXNJbkZsb3dDb250ZW50IHx8IGxpbmVSdW4uaXNUZXh0KCkgfHwgbGluZVJ1bi5pc0Jv
eCgpOwogCiAgICAgICAgICAgICBhdXRvIG5lZWRzRGlzcGxheUJveE9yR2VvbWV0cnlTZXR0aW5n
ID0gIWxpbmVSdW4uaXNXb3JkQnJlYWtPcHBvcnR1bml0eSgpICYmICFsaW5lUnVuLmlzSW5saW5l
Qm94RW5kKCk7CiAgICAgICAgICAgICBpZiAoIW5lZWRzRGlzcGxheUJveE9yR2VvbWV0cnlTZXR0
aW5nKQpAQCAtNzY1LDYgKzc3OSwxNiBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRl
cjo6cHJvY2Vzc0JpZGlDb250ZW50KGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmIGxpbgogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgaWYgKGxpbmVSdW4uaXNPcGFxdWUoKSkgewogICAgICAgICAg
ICAgICAgIC8vIFNldCBnZW9tZXRyeSBmb3IgdGhpcyBvcGFxdWUgYm94LgorICAgICAgICAgICAg
ICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlKCkuYm94R2VvbWV0cnkobGF5
b3V0Qm94KTsKKyAgICAgICAgICAgICAgICBpZiAobGF5b3V0Qm94LnN0eWxlKCkuaXNPcmlnaW5h
bERpc3BsYXlJbmxpbmVUeXBlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYm94R2VvbWV0cnku
c2V0TG9naWNhbFRvcExlZnQodG9MYXlvdXRQb2ludCh2aXN1YWxSZWN0UmVsYXRpdmVUb1Jvb3Qo
bGluZUJveC5sb2dpY2FsUmVjdEZvck9wYXF1ZUJveChsaW5lUnVuLCBib3hHZW9tZXRyeSkpLnRv
cExlZnQoKSkpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgLy8gQmxvY2sgbGV2ZWwgYm94ZXMgYXJlIHBsYWNlZCBlaXRo
ZXIgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIG9yICJ1bmRlciIgZGVwZW5kaW5nIHdoZXRoZXIg
dGhleSBoYXZlIHByZXZpb3VzIGluZmxvdyBzaWJsaW5nLgorICAgICAgICAgICAgICAgIGF1dG8g
bG9naWNhbFRvcCA9ICFsaW5lSGFzSW5GbG93Q29udGVudCA/IGxpbmVCb3gubG9naWNhbFJlY3Qo
KS50b3AoKSA6IGxpbmVCb3gubG9naWNhbFJlY3QoKS5ib3R0b20oKTsKKyAgICAgICAgICAgICAg
ICBhdXRvIGxvZ2ljYWxSZWN0ID0gSW5saW5lUmVjdCB7IGxvZ2ljYWxUb3AsIGNvbnN0cmFpbnRz
KCkuaG9yaXpvbnRhbCgpLmxvZ2ljYWxMZWZ0LCBib3hHZW9tZXRyeS5ib3JkZXJCb3hXaWR0aCgp
LCBib3hHZW9tZXRyeS5ib3JkZXJCb3hIZWlnaHQoKSB9OworICAgICAgICAgICAgICAgIGF1dG8g
dmlzdWFsUmVjdCA9IGZsaXBMb2dpY2FsUmVjdFRvVmlzdWFsRm9yV3JpdGluZ01vZGVXaXRoaW5M
aW5lKGxvZ2ljYWxSZWN0LCBsaW5lQm94LmxvZ2ljYWxSZWN0KCksIHdyaXRpbmdNb2RlKTsKKyAg
ICAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh0b0xheW91dFBvaW50
KHZpc3VhbFJlY3QudG9wTGVmdCgpKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkv
SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRl
ci5oCmluZGV4IDU0MmFiOWYwM2RiYy4uYzhkYTQwZmM1YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURp
c3BsYXlDb250ZW50QnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmgK
QEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgTGluZUJveDsKIAogY2xhc3MgSW5saW5lRGlzcGxheUNv
bnRlbnRCdWlsZGVyIHsKIHB1YmxpYzoKLSAgICBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIo
Y29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmLCBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmLCBj
b25zdCBJbmxpbmVEaXNwbGF5OjpMaW5lJiwgc2l6ZV90IGxpbmVJbmRleCk7CisgICAgSW5saW5l
RGlzcGxheUNvbnRlbnRCdWlsZGVyKGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYs
IGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiwgSW5saW5lRm9ybWF0dGluZ1N0YXRlJiwg
Y29uc3QgSW5saW5lRGlzcGxheTo6TGluZSYsIHNpemVfdCBsaW5lSW5kZXgpOwogCiAgICAgSW5s
aW5lRGlzcGxheTo6Qm94ZXMgYnVpbGQoY29uc3QgTGluZUxheW91dFJlc3VsdCYsIGNvbnN0IExp
bmVCb3gmKTsKIApAQCAtNzYsMTEgKzc2LDEzIEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzTGlu
ZUZ1bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUlz
RnVsbHlUcnVuY2F0ZWRJbkJsb2NrRGlyZWN0aW9uOyB9CiAKKyAgICBjb25zdCBDb25zdHJhaW50
c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0cmFpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9jb25zdHJh
aW50czsgfQogICAgIGNvbnN0IEVsZW1lbnRCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiBmb3Jt
YXR0aW5nQ29udGV4dCgpLnJvb3QoKTsgfQogICAgIGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5
bGUoKSBjb25zdCB7IHJldHVybiBtX2xpbmVJbmRleCA/IHJvb3QoKS5zdHlsZSgpIDogcm9vdCgp
LmZpcnN0TGluZVN0eWxlKCk7IH0KICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYg
Zm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdDb250ZXh0OyB9
CiAgICAgSW5saW5lRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX2Zvcm1hdHRpbmdTdGF0ZTsgfSAKIAorICAgIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5s
aW5lQ29udGVudCYgbV9jb25zdHJhaW50czsKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dCYgbV9mb3JtYXR0aW5nQ29udGV4dDsKICAgICBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIG1f
Zm9ybWF0dGluZ1N0YXRlOwogICAgIGNvbnN0IElubGluZURpc3BsYXk6OkxpbmUmIG1fZGlzcGxh
eUxpbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURp
c3BsYXlMaW5lQnVpbGRlci5jcHAKaW5kZXggYzJmNmFkMzY2ZWFmLi41NDFiMzU1MzU2MTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlM
aW5lQnVpbGRlci5jcHAKQEAgLTUwLDggKzUwLDkgQEAgc3RhdGljIElubGluZVJlY3QgZmxpcExv
Z2ljYWxMaW5lUmVjdFRvVmlzdWFsRm9yV3JpdGluZ01vZGUoY29uc3QgSW5saW5lUmVjdCYgbGkK
ICAgICByZXR1cm4gbGluZUxvZ2ljYWxSZWN0OwogfQogCi1JbmxpbmVEaXNwbGF5TGluZUJ1aWxk
ZXI6OklubGluZURpc3BsYXlMaW5lQnVpbGRlcihjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCi0gICAgOiBtX2lubGluZUZvcm1hdHRpbmdDb250
ZXh0KGlubGluZUZvcm1hdHRpbmdDb250ZXh0KQorSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpJ
bmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIoY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50
JiBjb25zdHJhaW50cywgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGlubGluZUZvcm1h
dHRpbmdDb250ZXh0KQorICAgIDogbV9jb25zdHJhaW50cyhjb25zdHJhaW50cykKKyAgICAsIG1f
aW5saW5lRm9ybWF0dGluZ0NvbnRleHQoaW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCiB7CiB9CiAK
QEAgLTEyMSw5ICsxMjIsMTAgQEAgSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpFbmNsb3NpbmdM
aW5lR2VvbWV0cnkgSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyOjpjb2xsZWMKICAgICByZXR1cm4g
eyB7IGVuY2xvc2luZ1RvcC52YWx1ZV9vcihsaW5lQm94UmVjdC50b3AoKSksIGVuY2xvc2luZ0Jv
dHRvbS52YWx1ZV9vcihsaW5lQm94UmVjdC50b3AoKSkgfSwgY29udGVudE92ZXJmbG93UmVjdCB9
OwogfQogCi1JbmxpbmVEaXNwbGF5OjpMaW5lIElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6YnVp
bGQoY29uc3QgTGluZUxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3VsdCwgY29uc3QgTGluZUJv
eCYgbGluZUJveCwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50
cywgYm9vbCBsaW5lSXNGdWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24pIGNvbnN0CitJbmxp
bmVEaXNwbGF5OjpMaW5lIElubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6YnVpbGQoY29uc3QgTGlu
ZUxheW91dFJlc3VsdCYgbGluZUxheW91dFJlc3VsdCwgY29uc3QgTGluZUJveCYgbGluZUJveCwg
Ym9vbCBsaW5lSXNGdWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAg
YXV0byYgcm9vdElubGluZUJveCA9IGxpbmVCb3gucm9vdElubGluZUJveCgpOworICAgIGF1dG8m
IGNvbnN0cmFpbnRzID0gdGhpcy0+Y29uc3RyYWludHMoKTsKICAgICBhdXRvIGlzTGVmdFRvUmln
aHREaXJlY3Rpb24gPSBsaW5lTGF5b3V0UmVzdWx0LmRpcmVjdGlvbmFsaXR5LmlubGluZUJhc2VE
aXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgIGF1dG8gbGluZUJveExvZ2ljYWxS
ZWN0ID0gbGluZUJveC5sb2dpY2FsUmVjdCgpOwogICAgIGF1dG8gbGluZUJveFZpc3VhbExlZnQg
PSBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVp
bGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuaAppbmRleCA0MjhkMTU3N2NkNTkuLjBj
Y2RlY2YwMGZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lu
bGluZURpc3BsYXlMaW5lQnVpbGRlci5oCkBAIC0zNiw5ICszNiw5IEBAIGNsYXNzIExpbmVCb3g7
CiAKIGNsYXNzIElubGluZURpc3BsYXlMaW5lQnVpbGRlciB7CiBwdWJsaWM6Ci0gICAgSW5saW5l
RGlzcGxheUxpbmVCdWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7CisgICAg
SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyKGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVu
dCYsIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Jik7CiAKLSAgICBJbmxpbmVEaXNwbGF5
OjpMaW5lIGJ1aWxkKGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmLCBjb25zdCBMaW5lQm94JiwgY29u
c3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgYm9vbCBsaW5lSXNGdWxseVRydW5jYXRl
ZEluQmxvY2tEaXJlY3Rpb24pIGNvbnN0OworICAgIElubGluZURpc3BsYXk6OkxpbmUgYnVpbGQo
Y29uc3QgTGluZUxheW91dFJlc3VsdCYsIGNvbnN0IExpbmVCb3gmLCBib29sIGxpbmVJc0Z1bGx5
VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbikgY29uc3Q7CiAKICAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxGbG9hdFJlY3Q+IHRyYWlsaW5nRWxsaXBzaXNWaXN1YWxSZWN0QWZ0ZXJUcnVuY2F0aW9u
KExpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSwgY29uc3QgSW5saW5lRGlzcGxheTo6TGluZSYsIElu
bGluZURpc3BsYXk6OkJveGVzJiwgYm9vbCBpc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpOwog
CkBAIC01MSw4ICs1MSwxMCBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDsgfQogICAgIGNvbnN0IEJveCYgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIGZv
cm1hdHRpbmdDb250ZXh0KCkucm9vdCgpOyB9CisgICAgY29uc3QgQ29uc3RyYWludHNGb3JJbmxp
bmVDb250ZW50JiBjb25zdHJhaW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RyYWludHM7IH0K
ICAgICBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5n
Q29udGV4dCgpLmxheW91dFN0YXRlKCk7IH0KIAorICAgIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5s
aW5lQ29udGVudCYgbV9jb25zdHJhaW50czsKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dCYgbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5l
TGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCA2OTY4M2Y4NTlkYTMuLmE0NTYzYzE1
YjI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGlu
ZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApA
QCAtNTg5LDcgKzU4OSw2IEBAIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gTGluZUxheW91dDo6
bGF5b3V0KCkKICAgICBhdXRvIHBhcmVudEJsb2NrTGF5b3V0U3RhdGUgPSBMYXlvdXQ6OkJsb2Nr
TGF5b3V0U3RhdGUgeyBtX2Jsb2NrRm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKSwgbGlu
ZUNsYW1wKGZsb3coKSksIHRleHRCb3hUcmltKGZsb3coKSksIGludHJ1c2l2ZUluaXRpYWxMZXR0
ZXJCb3R0b20oKSB9OwogICAgIGF1dG8gaW5saW5lTGF5b3V0U3RhdGUgPSBMYXlvdXQ6OklubGlu
ZUxheW91dFN0YXRlIHsgcGFyZW50QmxvY2tMYXlvdXRTdGF0ZSwgV1RGTW92ZShtX25lc3RlZExp
c3RNYXJrZXJPZmZzZXRzKSB9OwogICAgIGF1dG8gbGF5b3V0UmVzdWx0ID0gbV9pbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5sYXlvdXRJbkZsb3dBbmRGbG9hdENvbnRlbnQoaW5saW5lQ29udGVudENv
bnN0cmFpbnRzLCBpbmxpbmVMYXlvdXRTdGF0ZSwgbV9saW5lRGFtYWdlLmdldCgpKTsKLSAgICBt
X2lubGluZUZvcm1hdHRpbmdDb250ZXh0LmxheW91dE91dE9mRmxvd0NvbnRlbnQoaW5saW5lQ29u
dGVudENvbnN0cmFpbnRzLCBpbmxpbmVMYXlvdXRTdGF0ZSwgbGF5b3V0UmVzdWx0LmRpc3BsYXlD
b250ZW50KTsKIAogICAgIGF1dG8gcmVwYWludFJlY3QgPSBMYXlvdXRSZWN0IHsgY29uc3RydWN0
Q29udGVudChpbmxpbmVMYXlvdXRTdGF0ZSwgV1RGTW92ZShsYXlvdXRSZXN1bHQpKSB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRFbGVtZW50
Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEVsZW1lbnRC
b3guY3BwCmluZGV4IDE4NDEzZjRlY2ZkMS4uODU4M2RmNGMyOTlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRFbGVtZW50Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRFbGVtZW50Qm94LmNwcApAQCAt
MTAxLDYgKzEwMSwxNSBAQCBjb25zdCBCb3gqIEVsZW1lbnRCb3g6Omxhc3RJbkZsb3dPckZsb2F0
aW5nQ2hpbGQoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitib29sIEVsZW1lbnRC
b3g6Omhhc091dE9mRmxvd0NoaWxkKCkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8qIGNoaWxkID0g
dGhpcy0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkg
eworICAgICAgICBpZiAoY2hpbGQtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBFbGVt
ZW50Qm94OjphcHBlbmRDaGlsZChVbmlxdWVSZWY8Qm94PiBjaGlsZFJlZikKIHsKICAgICBpbnNl
cnRDaGlsZChXVEZNb3ZlKGNoaWxkUmVmKSwgbV9sYXN0Q2hpbGQuZ2V0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0RWxlbWVudEJveC5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0RWxlbWVudEJveC5oCmluZGV4
IGNiZjUxNDliNDdiZS4uYTI4MWVlYmMwOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRFbGVtZW50Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0RWxlbWVudEJveC5oCkBAIC02Niw2ICs2Niw3IEBAIHB1
YmxpYzoKICAgICBib29sIGhhc0NoaWxkKCkgY29uc3QgeyByZXR1cm4gZmlyc3RDaGlsZCgpOyB9
CiAgICAgYm9vbCBoYXNJbkZsb3dDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIGZpcnN0SW5GbG93Q2hp
bGQoKTsgfQogICAgIGJvb2wgaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkgY29uc3QgeyByZXR1
cm4gZmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKTsgfQorICAgIGJvb2wgaGFzT3V0T2ZGbG93
Q2hpbGQoKSBjb25zdDsKIAogICAgIHZvaWQgYXBwZW5kQ2hpbGQoVW5pcXVlUmVmPEJveD4pOwog
ICAgIHZvaWQgaW5zZXJ0Q2hpbGQoVW5pcXVlUmVmPEJveD4sIEJveCogYmVmb3JlQ2hpbGQgPSBu
dWxscHRyKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92
ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvcmVwYWludC9tb3ZlLWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3RlZC50eHQKaW5k
ZXggMjg0ZWUzNzQ1MjlkLi4wMjZjMTg5ZmEwMTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJp
bmctbGF5ZXItZXhwZWN0ZWQudHh0CkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICAgKGJvdW5k
cyA4MDIuMDAgMjAyLjAwKQogICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKICAgICAgICAgICAo
cmVwYWludCByZWN0cworICAgICAgICAgICAgKHJlY3QgMC4wMCAxLjAwIDgwMi4wMCAxLjAwKQog
ICAgICAgICAgICAgKHJlY3QgMjAxLjAwIDUxLjAwIDEwMC4wMCAxMDAuMDApCiAgICAgICAgICAg
ICAocmVjdCA0MDEuMDAgNTEuMDAgMTAwLjAwIDEwMC4wMCkKICAgICAgICAgICApCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92
ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zLXdrMi9jb21wb3NpdGluZy9yZXBhaW50L21vdmUtYmFja2luZy1zaGFyaW5nLWxheWVy
LWV4cGVjdGVkLnR4dAppbmRleCBmM2IzZDBiNzhkODYuLmJkNGViYTY5NGQ2NCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9jb21wb3NpdGluZy9yZXBhaW50L21vdmUt
YmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3Mtd2syL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5
ZXItZXhwZWN0ZWQudHh0CkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICAgKGJvdW5kcyA4MDIu
MDAgMjAyLjAwKQogICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKICAgICAgICAgICAocmVwYWlu
dCByZWN0cworICAgICAgICAgICAgKHJlY3QgMC4wMCAxLjAwIDgwMi4wMCAxLjAwKQogICAgICAg
ICAgICAgKHJlY3QgMjAxLjAwIDUxLjAwIDEwMC4wMCAxMDAuMDApCiAgICAgICAgICAgICAocmVj
dCA0MDEuMDAgNTEuMDAgMTAwLjAwIDEwMC4wMCkKICAgICAgICAgICApCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467468</attachid>
            <date>2023-08-28 12:37:39 -0700</date>
            <delta_ts>2023-08-28 15:14:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-260776-20230828123738.patch</filename>
            <type>text/plain</type>
            <size>35351</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA5ZWE2Y2NmNDk2NzQwNzRlZGMyNzk5YjljYzg4NTg3ZTdiYWNhMTljIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IE1vbiwgMjggQXVnIDIwMjMgMTI6MzA6MzUgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBV
c2Ugb3BhcXVlIElubGluZUl0ZW0gdG8gY29tcHV0ZSBvdXQtb2YtZmxvdyBzdGF0aWMKIHBvc2l0
aW9uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjA3NzYKClJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKTGV0J3MgcmVwbGFjZSBleGlzdGluZyBvdXQtb2YtZmxv
dyBoYW5kbGluZyB3aXRoIHVzaW5nIG9wYXF1ZSBpbmxpbmUgaXRlbXMgaW5zdGVhZC4KMS4gQWRk
IG91dC1vZi1mbG93IGNvbnRlbnQgdG8gdGhlIGlubGluZSBpdGVtIGxpc3QgYXMgb3BhcXVlIGJv
eCBhbmQgcnVuIHJlZ3VsYXIgaW5saW5lIGxheW91dC4KMi4gU2V0IHN0YXRpYyBwb3NpdGlvbiBh
cyBwYXJ0IG9mIHRoZSBpbmxpbmUgZGlzcGxheSBjb250ZW50IGJ1aWxkaW5nIHByb2Nlc3Mgd2hl
cmUgd2UgaXRlcmF0ZSB0aHJvdWdoIHRoZSBydW5zIG9uIHRoZSBjdXJyZW50IGxpbmUuCjMuIFNp
bmNlIHRoaXMgaXMgYWxsIHBhcnQgb2YgX2luZmxvd18gbGF5b3V0LCB3ZSBkb24ndCBuZWVkIHRo
ZSBkZWRpY2F0ZWQgX291dF9vZl9mbG93XyBtZXRob2Qgb24gSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQgYW55bW9yZS4KNC4gUmVtb3ZlIGV4aXN0aW5nIGxvZ2ljIHdoZXJlIHdlIGNvbXB1dGUgdGhl
IHN0YXRpYyBwb3NpdGlvbiBieSBsb29raW5nIGF0IGFkamFjZW50IGRpc3BsYXkgYm94IGdlb21l
dHJpZXMuCgoqIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNo
YXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIv
Y29tcG9zaXRpbmcvcmVwYWludC9tb3ZlLWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3RlZC50
eHQ6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudCk6IERlbGV0ZWQuCihXZWJDb3JlOjpM
YXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JP
dXRPZkZsb3dDb250ZW50KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgoqIFNvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OmZpcnN0RGlzcGxheUJveEluZGV4Rm9yTGF5
b3V0Qm94KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6bGFzdERpc3BsYXlCb3hJbmRleEZv
ckxheW91dEJveCk6IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OnByZXZpb3VzRGlzcGxheUJv
eEluZGV4KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6bmV4dERpc3BsYXlCb3hJbmRleCk6
IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6Y29u
dGVudExlZnRBZnRlckxhc3RMaW5lIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0lubGlu
ZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0Jsb2NrTGV2ZWxCb3ggY29u
c3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHA6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUl0ZW1zQnVpbGRlcjo6YnVpbGQpOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVJdGVtc0J1aWxkZXI6OmNvbGxlY3RJbmxpbmVJdGVtcyk6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmg6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OnJlbW92ZU92ZXJmbG93aW5nT3VyT2ZG
bG93Q29udGVudCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94
Ojpsb2dpY2FsUmVjdEZvck9wYXF1ZUJveCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5oOgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNw
cDoKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQW5kRmxvYXRDb250
ZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6
OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KToKKiBT
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6
bGF5b3V0KToKLS0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCAgICAg
ICAgfCAgMjYgLS0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggICAgICAg
ICAgfCAgIDIgLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwICAgICAg
IHwgMTY4IC0tLS0tLS0tLS0tLS0tLS0tLQogLi4uL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2Vv
bWV0cnkuaCAgICAgICAgIHwgICAzIC0KIC4uLi9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNw
cCAgICAgICAgICAgICB8ICAxMiArLQogLi4uL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuaCAg
ICAgICAgICAgICAgIHwgICAyICstCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lLmNwcCAgfCAgMjEgKysrCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVMaW5lLmggICAgfCAgIDEgKwogLi4uL2lubGluZS9JbmxpbmVMaW5lQm94LmNwcCAgICAgICAg
ICAgICAgICAgIHwgICA3ICsKIC4uLi9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCb3guaCB8ICAgMSArCiAuLi4vaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcCAgICAgICAg
ICAgICAgfCAgMjAgKysrCiAuLi4vZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIu
Y3BwICAgfCAgMjggKystCiAuLi4vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5j
cHAgICAgfCAgIDEgLQogLi4uL21vdmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVkLnR4
dCAgIHwgICAxICsKIC4uLi9tb3ZlLWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3RlZC50eHQg
ICB8ICAgMSArCiAxNSBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNlcnRpb25zKCspLCAyMTAgZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCmluZGV4IGE4NTI4ODJhODZmNy4uNTM3MmM3MmZmYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xMTQsMTIgKzExNCw2IEBA
IElubGluZUxheW91dFJlc3VsdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93
QW5kRmxvYXRDb250ZW50KGNvbnN0IENvCiAgICAgcmV0dXJuIGxpbmVMYXlvdXQobGluZUJ1aWxk
ZXIsIGlubGluZUl0ZW1zLCBuZWVkc0xheW91dFJhbmdlLCBwcmV2aW91c0xpbmUoKSwgY29uc3Ry
YWludHMsIGlubGluZUxheW91dFN0YXRlLCBsaW5lRGFtYWdlKTsKIH0KIAotdm9pZCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudChjb25zdCBDb25zdHJhaW50
c0ZvcklubGluZUNvbnRlbnQmIGNvbnN0cmFpbnRzLCBJbmxpbmVMYXlvdXRTdGF0ZSYgaW5saW5l
TGF5b3V0U3RhdGUsIGNvbnN0IElubGluZURpc3BsYXk6OkNvbnRlbnQmIGlubGluZURpc3BsYXlD
b250ZW50KQotewotICAgIC8vIENvbGxlY3Rpbmcgb3V0LW9mLWZsb3cgYm94ZXMgaGFwcGVucyBk
dXJpbmcgdGhlIGluLWZsb3cgcGhhc2UuCi0gICAgY29tcHV0ZVN0YXRpY1Bvc2l0aW9uRm9yT3V0
T2ZGbG93Q29udGVudChmb3JtYXR0aW5nU3RhdGUoKS5vdXRPZkZsb3dCb3hlcygpLCBjb25zdHJh
aW50cywgaW5saW5lRGlzcGxheUNvbnRlbnQsIGlubGluZUxheW91dFN0YXRlLnBhcmVudEJsb2Nr
TGF5b3V0U3RhdGUoKS5mbG9hdGluZ1N0YXRlKCkpOwotfQotCiBJbnRyaW5zaWNXaWR0aENvbnN0
cmFpbnRzIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZEludHJpbnNpY1NpemVzKGNv
bnN0IElubGluZURhbWFnZSogbGluZURhbWFnZSkKIHsKICAgICBhdXRvJiBpbmxpbmVGb3JtYXR0
aW5nU3RhdGUgPSBmb3JtYXR0aW5nU3RhdGUoKTsKQEAgLTI0MywyNiArMjM3LDYgQEAgdm9pZCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0RmxvYXRDb250ZW50T25seShjb25zdCBDb25z
dHJhaW50c0ZvcklubGluZUMKICAgICB9CiB9CiAKLXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0NvbnRlbnQoY29uc3QgRm9ybWF0
dGluZ1N0YXRlOjpPdXRPZkZsb3dCb3hMaXN0JiBvdXRPZkZsb3dCb3hlcywgY29uc3QgQ29uc3Ry
YWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cywgY29uc3QgSW5saW5lRGlzcGxheTo6
Q29udGVudCYgZGlzcGxheUNvbnRlbnQsIGNvbnN0IEZsb2F0aW5nU3RhdGUmIGZsb2F0aW5nU3Rh
dGUpCi17Ci0gICAgLy8gVGhpcyBmdW5jdGlvbiBjb21wdXRlcyB0aGUgc3RhdGljIHBvc2l0aW9u
IGZvciBvdXQtb2YtZmxvdyBjb250ZW50IGluc2lkZSB0aGUgaW5saW5lIGZvcm1hdHRpbmcgY29u
dGV4dC4KLSAgICAvLyBBcyBwZXIgc3BlYywgdGhlIHN0YXRpYyBwb3NpdGlvbiBvZiBhbiBvdXQt
b2YtZmxvdyBib3ggaXMgY29tcHV0ZWQgYXMgaWYgdGhlIHBvc2l0aW9uIHdhcyBzZXQgdG8gc3Rh
dGljLgotICAgIC8vIEhvd2V2ZXIgaXQgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSBvdXQtb2YtZmxv
dyBib3ggc2hvdWxkIGJlIGludm9sdmVkIGluIHRoZSBpbmxpbmUgbGF5b3V0IHByb2Nlc3MuCi0g
ICAgLy8gSW5zdGVhZCB3ZSBmaWd1cmUgb3V0IHRoaXMgc3RhdGljIHBvc2l0aW9uIGFmdGVyIHRo
ZSBpbmxpbmUgbGF5b3V0IGJ5IGxvb2tpbmcgYXQgdGhlIHByZXZpb3VzL25leHQgc2libGluZyAo
b3IgcGFyZW50KSBib3gncyBnZW9tZXRyeSBhbmQKLSAgICAvLyBwbGFjZSB0aGUgb3V0LW9mLWZs
b3cgYm94IGF0IHRoZSBsb2dpY2FsIHJpZ2h0IHBvc2l0aW9uLgotICAgIGF1dG8mIGZvcm1hdHRp
bmdHZW9tZXRyeSA9IHRoaXMtPmZvcm1hdHRpbmdHZW9tZXRyeSgpOwotICAgIGF1dG8mIGZvcm1h
dHRpbmdTdGF0ZSA9IHRoaXMtPmZvcm1hdHRpbmdTdGF0ZSgpOwotICAgIGF1dG8gZmxvYXRpbmdD
b250ZXh0ID0gRmxvYXRpbmdDb250ZXh0IHsgKnRoaXMsIGZsb2F0aW5nU3RhdGUgfTsKLQotICAg
IGZvciAoYXV0byYgb3V0T2ZGbG93Qm94IDogb3V0T2ZGbG93Qm94ZXMpIHsKLSAgICAgICAgaWYg
KG91dE9mRmxvd0JveC0+c3R5bGUoKS5pc09yaWdpbmFsRGlzcGxheUlubGluZVR5cGUoKSkgewot
ICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KG91dE9mRmxvd0JveCkuc2V0
TG9naWNhbFRvcExlZnQoZm9ybWF0dGluZ0dlb21ldHJ5LnN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZG
bG93SW5saW5lTGV2ZWxCb3gob3V0T2ZGbG93Qm94LCBjb25zdHJhaW50cywgZGlzcGxheUNvbnRl
bnQsIGZsb2F0aW5nQ29udGV4dCkpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0K
LSAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KG91dE9mRmxvd0JveCkuc2V0TG9n
aWNhbFRvcExlZnQoZm9ybWF0dGluZ0dlb21ldHJ5LnN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93
QmxvY2tMZXZlbEJveChvdXRPZkZsb3dCb3gsIGNvbnN0cmFpbnRzLCBkaXNwbGF5Q29udGVudCkp
OwotICAgIH0KLX0KLQogc3RhdGljIExpbmVFbmRpbmdFbGxpcHNpc1BvbGljeSBsaW5lRW5kaW5n
RWxsaXBzaXNQb2xpY3koY29uc3QgUmVuZGVyU3R5bGUmIHJvb3RTdHlsZSwgc2l6ZV90IG51bWJl
ck9mTGluZXMsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBudW1iZXJPZlZpc2libGVMaW5lc0FsbG93
ZWQpCiB7CiAgICAgLy8gV2UgbWF5IGhhdmUgcGFzc2VkIHRoZSBsaW5lLWNsYW1wIGxpbmUgd2l0
aCBvdmVyZmxvdyB2aXNpYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmgKaW5kZXggMTE0MDY4ZjFhNzUyLi5mMTAxMWRmYmQ2MGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNjAsNyArNjAsNiBA
QCBwdWJsaWM6CiAgICAgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgRWxlbWVudEJveCYg
Zm9ybWF0dGluZ0NvbnRleHRSb290LCBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmKTsKIAogICAgIElu
bGluZUxheW91dFJlc3VsdCBsYXlvdXRJbkZsb3dBbmRGbG9hdENvbnRlbnQoY29uc3QgQ29uc3Ry
YWludHNGb3JJbmxpbmVDb250ZW50JiwgSW5saW5lTGF5b3V0U3RhdGUmLCBjb25zdCBJbmxpbmVE
YW1hZ2UqID0gbnVsbHB0cik7Ci0gICAgdm9pZCBsYXlvdXRPdXRPZkZsb3dDb250ZW50KGNvbnN0
IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIElubGluZUxheW91dFN0YXRlJiwgY29uc3Qg
SW5saW5lRGlzcGxheTo6Q29udGVudCYpOwogICAgIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMg
Y29tcHV0ZWRJbnRyaW5zaWNTaXplcyhjb25zdCBJbmxpbmVEYW1hZ2UqKTsKICAgICBMYXlvdXRV
bml0IG1heGltdW1Db250ZW50U2l6ZSgpOwogCkBAIC03MSw3ICs3MCw2IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgSW5saW5lTGF5b3V0UmVzdWx0IGxpbmVMYXlvdXQoQWJzdHJhY3RMaW5lQnVp
bGRlciYsIGNvbnN0IElubGluZUl0ZW1zJiwgSW5saW5lSXRlbVJhbmdlLCBzdGQ6Om9wdGlvbmFs
PFByZXZpb3VzTGluZT4sIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIElubGlu
ZUxheW91dFN0YXRlJiwgY29uc3QgSW5saW5lRGFtYWdlKiA9IG51bGxwdHIpOwogICAgIHZvaWQg
bGF5b3V0RmxvYXRDb250ZW50T25seShjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQm
LCBGbG9hdGluZ1N0YXRlJik7Ci0gICAgdm9pZCBjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRP
ZkZsb3dDb250ZW50KGNvbnN0IEZvcm1hdHRpbmdTdGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCYsIGNv
bnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYsIGNvbnN0IElubGluZURpc3BsYXk6OkNv
bnRlbnQmLCBjb25zdCBGbG9hdGluZ1N0YXRlJik7CiAKICAgICB2b2lkIGNvbGxlY3RDb250ZW50
SWZOZWVkZWQoKTsKICAgICBJbmxpbmVSZWN0IGNyZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShz
aXplX3QgbGluZUluZGV4LCBjb25zdCBMaW5lTGF5b3V0UmVzdWx0JiwgY29uc3QgQ29uc3RyYWlu
dHNGb3JJbmxpbmVDb250ZW50JiwgY29uc3QgSW5saW5lTGF5b3V0U3RhdGUmLCBJbmxpbmVEaXNw
bGF5OjpDb250ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGlu
Z0dlb21ldHJ5LmNwcAppbmRleCAzZWNhYzNjYzc1MmIuLjA5YWI2OTQxMjU0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
Rm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0yMDks
MTc0ICsyMDksNiBAQCBJbmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6
Y29tcHV0ZWRUZXh0SW5kZW50KElzSW50cmluc2ljV2lkdGhNbwogICAgIHJldHVybiB7IG1pbmlt
dW1WYWx1ZUZvckxlbmd0aCh0ZXh0SW5kZW50LCBhdmFpbGFibGVXaWR0aCkgfTsKIH0KIAotc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaXJzdERpc3BsYXlCb3hJbmRleEZvckxheW91dEJv
eChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGRpc3Bs
YXlCb3hlcykKLXsKLSAgICAvLyBGSVhNRTogQnVpbGQgYSBmaXJzdC9sYXN0IGhhc2htYXAgZm9y
IHRoZXNlIGJveGVzLgotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBkaXNwbGF5
Qm94ZXMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGlmIChkaXNwbGF5Qm94ZXNbaW5kZXhd
LmlzUm9vdElubGluZUJveCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICgm
ZGlzcGxheUJveGVzW2luZGV4XS5sYXlvdXRCb3goKSA9PSAmbGF5b3V0Qm94KQotICAgICAgICAg
ICAgcmV0dXJuIGluZGV4OwotICAgIH0KLSAgICByZXR1cm4geyB9OwotfQotCi1zdGF0aWMgc3Rk
OjpvcHRpb25hbDxzaXplX3Q+IGxhc3REaXNwbGF5Qm94SW5kZXhGb3JMYXlvdXRCb3goY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIGNvbnN0IElubGluZURpc3BsYXk6OkJveGVzJiBkaXNwbGF5Qm94ZXMp
Ci17Ci0gICAgLy8gRklYTUU6IEJ1aWxkIGEgZmlyc3QvbGFzdCBoYXNobWFwIGZvciB0aGVzZSBi
b3hlcy4KLSAgICBmb3IgKGF1dG8gaW5kZXggPSBkaXNwbGF5Qm94ZXMuc2l6ZSgpOyBpbmRleC0t
OykgewotICAgICAgICBpZiAoZGlzcGxheUJveGVzW2luZGV4XS5pc1Jvb3RJbmxpbmVCb3goKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoJmRpc3BsYXlCb3hlc1tpbmRleF0u
bGF5b3V0Qm94KCkgPT0gJmxheW91dEJveCkKLSAgICAgICAgICAgIHJldHVybiBpbmRleDsKLSAg
ICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBw
cmV2aW91c0Rpc3BsYXlCb3hJbmRleChjb25zdCBCb3gmIG91dE9mRmxvd0JveCwgY29uc3QgSW5s
aW5lRGlzcGxheTo6Qm94ZXMmIGRpc3BsYXlCb3hlcykKLXsKLSAgICBhdXRvIHByZXZpb3VzRGlz
cGxheUJveEluZGV4T2YgPSBbJl0gKGF1dG8mIGxheW91dEJveCkgLT4gc3RkOjpvcHRpb25hbDxz
aXplX3Q+IHsKLSAgICAgICAgZm9yIChhdXRvKiBib3ggPSAmbGF5b3V0Qm94OyBib3g7IGJveCA9
IGJveC0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGRp
c3BsYXlCb3hJbmRleCA9IGxhc3REaXNwbGF5Qm94SW5kZXhGb3JMYXlvdXRCb3goKmJveCwgZGlz
cGxheUJveGVzKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZGlzcGxheUJveEluZGV4OwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAgfTsKLQotICAgIGF1dG8qIGNhbmRpZGF0
ZUJveCA9IG91dE9mRmxvd0JveC5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsKLSAgICBpZiAoIWNh
bmRpZGF0ZUJveCkKLSAgICAgICAgY2FuZGlkYXRlQm94ID0gb3V0T2ZGbG93Qm94LnBhcmVudCgp
LmlzSW5saW5lQm94KCkgPyAmb3V0T2ZGbG93Qm94LnBhcmVudCgpIDogbnVsbHB0cjsKLSAgICB3
aGlsZSAoY2FuZGlkYXRlQm94KSB7Ci0gICAgICAgIGlmIChhdXRvIGRpc3BsYXlCb3hJbmRleCA9
IHByZXZpb3VzRGlzcGxheUJveEluZGV4T2YoKmNhbmRpZGF0ZUJveCkpCi0gICAgICAgICAgICBy
ZXR1cm4gZGlzcGxheUJveEluZGV4OwotICAgICAgICBjYW5kaWRhdGVCb3ggPSBjYW5kaWRhdGVC
b3gtPnBhcmVudCgpLmlzSW5saW5lQm94KCkgPyAmY2FuZGlkYXRlQm94LT5wYXJlbnQoKSA6IG51
bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gbmV4dERpc3BsYXlCb3hJbmRleChjb25zdCBCb3gmIG91dE9mRmxvd0JveCwgY29u
c3QgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGRpc3BsYXlCb3hlcykKLXsKLSAgICBhdXRvIG5leHRE
aXNwbGF5Qm94SW5kZXhPZiA9IFsmXSAoYXV0byYgbGF5b3V0Qm94KSAtPiBzdGQ6Om9wdGlvbmFs
PHNpemVfdD4gewotICAgICAgICBmb3IgKGF1dG8qIGJveCA9ICZsYXlvdXRCb3g7IGJveDsgYm94
ID0gYm94LT5uZXh0SW5GbG93U2libGluZygpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBkaXNw
bGF5Qm94SW5kZXggPSBmaXJzdERpc3BsYXlCb3hJbmRleEZvckxheW91dEJveCgqYm94LCBkaXNw
bGF5Qm94ZXMpKQotICAgICAgICAgICAgICAgIHJldHVybiBkaXNwbGF5Qm94SW5kZXg7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9OwotCi0gICAgYXV0byogY2FuZGlkYXRl
Qm94ID0gb3V0T2ZGbG93Qm94Lm5leHRJbkZsb3dTaWJsaW5nKCk7Ci0gICAgaWYgKCFjYW5kaWRh
dGVCb3gpCi0gICAgICAgIGNhbmRpZGF0ZUJveCA9IG91dE9mRmxvd0JveC5wYXJlbnQoKS5pc0lu
bGluZUJveCgpID8gb3V0T2ZGbG93Qm94LnBhcmVudCgpLm5leHRJbkZsb3dTaWJsaW5nKCkgOiBu
dWxscHRyOwotICAgIHdoaWxlIChjYW5kaWRhdGVCb3gpIHsKLSAgICAgICAgaWYgKGF1dG8gZGlz
cGxheUJveEluZGV4ID0gbmV4dERpc3BsYXlCb3hJbmRleE9mKCpjYW5kaWRhdGVCb3gpKQotICAg
ICAgICAgICAgcmV0dXJuIGRpc3BsYXlCb3hJbmRleDsKLSAgICAgICAgY2FuZGlkYXRlQm94ID0g
Y2FuZGlkYXRlQm94LT5wYXJlbnQoKS5pc0lubGluZUJveCgpID8gY2FuZGlkYXRlQm94LT5wYXJl
bnQoKS5uZXh0SW5GbG93U2libGluZygpIDogbnVsbHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIHsg
fTsKLX0KLQotSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnRl
bnRMZWZ0QWZ0ZXJMYXN0TGluZShjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNv
bnN0cmFpbnRzLCBzdGQ6Om9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGxhc3RMaW5lTG9naWNh
bEJvdHRvbSwgY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQpIGNvbnN0Ci17
Ci0gICAgYXV0byBjb250ZW50SGFzUHJldmlvdXNMaW5lID0gbGFzdExpbmVMb2dpY2FsQm90dG9t
ID8gc3RkOjptYWtlX29wdGlvbmFsKHRydWUpIDogc3RkOjpudWxsb3B0OwotICAgIGF1dG8gdGV4
dEluZGVudCA9IGNvbXB1dGVkVGV4dEluZGVudChJc0ludHJpbnNpY1dpZHRoTW9kZTo6Tm8sIGNv
bnRlbnRIYXNQcmV2aW91c0xpbmUsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsV2lk
dGgpOwotICAgIGF1dG8gZmxvYXRDb25zdHJhaW50cyA9IGZsb2F0Q29uc3RyYWludHNGb3JMaW5l
KGxhc3RMaW5lTG9naWNhbEJvdHRvbS52YWx1ZV9vcihjb25zdHJhaW50cy5sb2dpY2FsVG9wKCkp
LCAwLCBmbG9hdGluZ0NvbnRleHQpOwotICAgIGF1dG8gbGluZUJveExlZnQgPSBjb25zdHJhaW50
cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQ7Ci0gICAgYXV0byBsaW5lQm94V2lkdGggPSBjb25z
dHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbFdpZHRoOwotICAgIC8vIEZJWE1FOiBBZGQgbWlz
c2luZyBSVEwgc3VwcG9ydC4KLSAgICBpZiAoZmxvYXRDb25zdHJhaW50cy5sZWZ0KSB7Ci0gICAg
ICAgIGF1dG8gZmxvYXRPZmZzZXQgPSBzdGQ6Om1heCgwX2x1LCBmbG9hdENvbnN0cmFpbnRzLmxl
ZnQtPnggLSBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQpOwotICAgICAgICBs
aW5lQm94TGVmdCArPSBmbG9hdE9mZnNldDsKLSAgICAgICAgbGluZUJveFdpZHRoIC09IGZsb2F0
T2Zmc2V0OwotICAgIH0KLSAgICBpZiAoZmxvYXRDb25zdHJhaW50cy5yaWdodCkgewotICAgICAg
ICBhdXRvIGxpbmVCb3hSaWdodCA9IChjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExl
ZnQgKyBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbFdpZHRoKTsKLSAgICAgICAgYXV0
byBmbG9hdE9mZnNldCA9IHN0ZDo6bWF4KDBfbHUsIGxpbmVCb3hSaWdodCAtIGZsb2F0Q29uc3Ry
YWludHMucmlnaHQtPngpOwotICAgICAgICBsaW5lQm94V2lkdGggLT0gZmxvYXRPZmZzZXQ7Ci0g
ICAgfQotICAgIGxpbmVCb3hMZWZ0ICs9IHRleHRJbmRlbnQ7Ci0gICAgYXV0byByb290SW5saW5l
Qm94TGVmdCA9IGhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQoZm9ybWF0dGluZ0NvbnRleHQoKS5y
b290KCkuc3R5bGUoKSwgeyB9LCBsaW5lQm94V2lkdGgsIHsgfSwgeyB9LCB0cnVlKTsKLSAgICBy
ZXR1cm4gbGluZUJveExlZnQgKyByb290SW5saW5lQm94TGVmdDsKLX0KLQotTGF5b3V0UG9pbnQg
SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0lubGlu
ZUxldmVsQm94KGNvbnN0IEJveCYgb3V0T2ZGbG93Qm94LCBjb25zdCBDb25zdHJhaW50c0Zvcklu
Rmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBk
aXNwbGF5Q29udGVudCwgY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQpIGNv
bnN0Ci17Ci0gICAgQVNTRVJUKG91dE9mRmxvd0JveC5zdHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5
SW5saW5lVHlwZSgpKTsKLSAgICBhdXRvJiBsaW5lcyA9IGRpc3BsYXlDb250ZW50LmxpbmVzOwot
ICAgIGF1dG8mIGJveGVzID0gZGlzcGxheUNvbnRlbnQuYm94ZXM7Ci0KLSAgICBpZiAobGluZXMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVChib3hlcy5pc0VtcHR5KCkpOwotICAgICAgICBy
ZXR1cm4geyBjb250ZW50TGVmdEFmdGVyTGFzdExpbmUoY29uc3RyYWludHMsIHsgfSwgZmxvYXRp
bmdDb250ZXh0KSwgY29uc3RyYWludHMubG9naWNhbFRvcCgpIH07Ci0gICAgfQotCi0gICAgYXV0
byBpc0hvcml6b250YWxXcml0aW5nTW9kZSA9IGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLnN0
eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKLSAgICBhdXRvIGxlZnRTaWRlVG9Mb2dp
Y2FsVG9wTGVmdCA9IFsmXSAoYXV0byYgZGlzcGxheUJveCwgYXV0byYgbGluZSwgYm9vbCBtYXlO
ZWVkTWFyZ2luQWRqdXN0bWVudCA9IHRydWUpIHsKLSAgICAgICAgYXV0byBtYXJnaW5TdGFydCA9
IExheW91dFVuaXQgeyB9OwotICAgICAgICBpZiAobWF5TmVlZE1hcmdpbkFkanVzdG1lbnQgJiYg
ZGlzcGxheUJveC5pc05vblJvb3RJbmxpbmVMZXZlbEJveCgpKQotICAgICAgICAgICAgbWFyZ2lu
U3RhcnQgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGRpc3BsYXlCb3gubGF5
b3V0Qm94KCkpLm1hcmdpblN0YXJ0KCk7Ci0gICAgICAgIHJldHVybiBpc0hvcml6b250YWxXcml0
aW5nTW9kZSA/IExheW91dFBvaW50KGRpc3BsYXlCb3gubGVmdCgpIC0gbWFyZ2luU3RhcnQsIGxp
bmUudG9wKCkpIDogTGF5b3V0UG9pbnQoZGlzcGxheUJveC50b3AoKSAtIG1hcmdpblN0YXJ0LCBs
aW5lLmxlZnQoKSk7Ci0gICAgfTsKLSAgICBhdXRvIHJpZ2h0U2lkZVRvTG9naWNhbFRvcExlZnQg
PSBbJl0gKGF1dG8mIGRpc3BsYXlCb3gsIGF1dG8mIGxpbmUpIHsKLSAgICAgICAgYXV0byBtYXJn
aW5FbmQgPSBMYXlvdXRVbml0IHsgfTsKLSAgICAgICAgaWYgKGRpc3BsYXlCb3guaXNOb25Sb290
SW5saW5lTGV2ZWxCb3goKSkKLSAgICAgICAgICAgIG1hcmdpbkVuZCA9IGZvcm1hdHRpbmdDb250
ZXh0KCkuZ2VvbWV0cnlGb3JCb3goZGlzcGxheUJveC5sYXlvdXRCb3goKSkubWFyZ2luRW5kKCk7
Ci0gICAgICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IExheW91dFBvaW50KGRp
c3BsYXlCb3gucmlnaHQoKSArIG1hcmdpbkVuZCwgbGluZS50b3AoKSkgOiBMYXlvdXRQb2ludChk
aXNwbGF5Qm94LmJvdHRvbSgpICsgbWFyZ2luRW5kLCBsaW5lLmxlZnQoKSk7Ci0gICAgfTsKLQot
ICAgIGF1dG8gcHJldmlvdXNEaXNwbGF5Qm94SW5kZXhCZWZvcmVPdXRPZkZsb3dCb3ggPSBwcmV2
aW91c0Rpc3BsYXlCb3hJbmRleChvdXRPZkZsb3dCb3gsIGJveGVzKTsKLSAgICBpZiAoIXByZXZp
b3VzRGlzcGxheUJveEluZGV4QmVmb3JlT3V0T2ZGbG93Qm94KQotICAgICAgICByZXR1cm4gbGVm
dFNpZGVUb0xvZ2ljYWxUb3BMZWZ0KGJveGVzWzBdLCBsaW5lc1swXSk7Ci0KLSAgICBhdXRvJiBw
cmV2aW91c0Rpc3BsYXlCb3ggPSBib3hlc1sqcHJldmlvdXNEaXNwbGF5Qm94SW5kZXhCZWZvcmVP
dXRPZkZsb3dCb3hdOwotICAgIGF1dG8mIGN1cnJlbnRMaW5lID0gbGluZXNbcHJldmlvdXNEaXNw
bGF5Qm94LmxpbmVJbmRleCgpXTsKLSAgICBpZiAocHJldmlvdXNEaXNwbGF5Qm94LmlzSW5saW5l
Qm94KCkgJiYgJm91dE9mRmxvd0JveC5wYXJlbnQoKSA9PSAmcHJldmlvdXNEaXNwbGF5Qm94Lmxh
eW91dEJveCgpKSB7Ci0gICAgICAgIC8vIFNwZWNpYWwgaGFuZGxpbmcgZm9yIGNhc2VzIHdoZW4g
dGhpcyBpcyB0aGUgZmlyc3QgYm94IGluc2lkZSBhbiBpbmxpbmUgYm94OgotICAgICAgICAvLyA8
ZGl2PnRleHQ8c3Bhbj48aW1nIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUiPmNvbnRlbnQ8L3Nw
YW4+PC9kaXY+Ci0gICAgICAgIGF1dG8mIGlubGluZUJveCA9IHByZXZpb3VzRGlzcGxheUJveC5s
YXlvdXRCb3goKTsKLSAgICAgICAgYXV0byBpbmxpbmVCb3hEaXNwbGF5Qm94ID0gYm94ZXNbKmZp
cnN0RGlzcGxheUJveEluZGV4Rm9yTGF5b3V0Qm94KGlubGluZUJveCwgYm94ZXMpXTsKLSAgICAg
ICAgYXV0byBpbmxpbmVDb250ZW50Qm94T2Zmc2V0ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9t
ZXRyeUZvckJveChpbmxpbmVCb3gpLmJvcmRlckFuZFBhZGRpbmdTdGFydCgpOwotICAgICAgICBp
ZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUpCi0gICAgICAgICAgICBpbmxpbmVCb3hEaXNwbGF5
Qm94Lm1vdmVIb3Jpem9udGFsbHkoaW5saW5lQ29udGVudEJveE9mZnNldCk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIGlubGluZUJveERpc3BsYXlCb3gubW92ZVZlcnRpY2FsbHkoaW5saW5l
Q29udGVudEJveE9mZnNldCk7Ci0gICAgICAgIHJldHVybiBsZWZ0U2lkZVRvTG9naWNhbFRvcExl
ZnQoaW5saW5lQm94RGlzcGxheUJveCwgbGluZXNbaW5saW5lQm94RGlzcGxheUJveC5saW5lSW5k
ZXgoKV0sIGZhbHNlKTsKLSAgICB9Ci0KLSAgICBhdXRvIHByZXZpb3VzQm94T3ZlcmZsb3dzID0g
KGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gcHJldmlvdXNEaXNwbGF5Qm94LnJpZ2h0KCkgPiBj
dXJyZW50TGluZS5yaWdodCgpIDogcHJldmlvdXNEaXNwbGF5Qm94LmJvdHRvbSgpID4gY3VycmVu
dExpbmUuYm90dG9tKCkpIHx8IHByZXZpb3VzRGlzcGxheUJveC5pc0xpbmVCcmVha0JveCgpOwot
ICAgIGlmICghcHJldmlvdXNCb3hPdmVyZmxvd3MpCi0gICAgICAgIHJldHVybiByaWdodFNpZGVU
b0xvZ2ljYWxUb3BMZWZ0KHByZXZpb3VzRGlzcGxheUJveCwgY3VycmVudExpbmUpOwotCi0gICAg
YXV0byBuZXh0RGlzcGxheUJveEluZGV4QWZ0ZXJPdXRPZkZsb3cgPSBuZXh0RGlzcGxheUJveElu
ZGV4KG91dE9mRmxvd0JveCwgYm94ZXMpOwotICAgIGlmICghbmV4dERpc3BsYXlCb3hJbmRleEFm
dGVyT3V0T2ZGbG93KSB7Ci0gICAgICAgIC8vIFRoaXMgaXMgdGhlIGxhc3QgY29udGVudCBvbiB0
aGUgYmxvY2sgYW5kIGl0IGRvZXMgbm90IGZpdCB0aGUgbGFzdCBsaW5lLgotICAgICAgICByZXR1
cm4geyBjb250ZW50TGVmdEFmdGVyTGFzdExpbmUoY29uc3RyYWludHMsIGN1cnJlbnRMaW5lLmJv
dHRvbSgpLCBmbG9hdGluZ0NvbnRleHQpLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IGN1cnJl
bnRMaW5lLmJvdHRvbSgpIDogY3VycmVudExpbmUucmlnaHQoKSB9OwotICAgIH0KLSAgICBhdXRv
JiBuZXh0RGlzcGxheUJveCA9IGJveGVzWypuZXh0RGlzcGxheUJveEluZGV4QWZ0ZXJPdXRPZkZs
b3ddOwotICAgIHJldHVybiBsZWZ0U2lkZVRvTG9naWNhbFRvcExlZnQobmV4dERpc3BsYXlCb3gs
IGxpbmVzW25leHREaXNwbGF5Qm94LmxpbmVJbmRleCgpXSk7Ci19Ci0KLUxheW91dFBvaW50IElu
bGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6c3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dCbG9ja0xl
dmVsQm94KGNvbnN0IEJveCYgb3V0T2ZGbG93Qm94LCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxv
d0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNw
bGF5Q29udGVudCkgY29uc3QKLXsKLSAgICBBU1NFUlQob3V0T2ZGbG93Qm94LnN0eWxlKCkuaXNE
aXNwbGF5QmxvY2tMZXZlbCgpKTsKLQotICAgIGF1dG8gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUg
PSBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKS5zdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKCk7Ci0gICAgYXV0byYgbGluZXMgPSBkaXNwbGF5Q29udGVudC5saW5lczsKLSAgICBhdXRv
JiBib3hlcyA9IGRpc3BsYXlDb250ZW50LmJveGVzOwotICAgIGF1dG8gY29udGVudEJveFRvcExl
ZnQgPSBMYXlvdXRQb2ludCB7IGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsTGVmdCwg
Y29uc3RyYWludHMubG9naWNhbFRvcCgpIH07Ci0KLSAgICBpZiAobGluZXMuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIEFTU0VSVChib3hlcy5pc0VtcHR5KCkpOwotICAgICAgICByZXR1cm4gY29udGVu
dEJveFRvcExlZnQ7Ci0gICAgfQotCi0gICAgLy8gQmxvY2sgbGV2ZWwgYm94ZXMgYXJlIHBsYWNl
ZCB1bmRlciB0aGUgY3VycmVudCBsaW5lIGFzIGlmIHRoZXkgd2VyZSBub3JtYWwgaW5mbG93IGJs
b2NrIGxldmVsIGJveGVzLgotICAgIGF1dG8gcHJldmlvdXNEaXNwbGF5Qm94SW5kZXhCZWZvcmVP
dXRPZkZsb3dCb3ggPSBwcmV2aW91c0Rpc3BsYXlCb3hJbmRleChvdXRPZkZsb3dCb3gsIGJveGVz
KTsKLSAgICBpZiAoIXByZXZpb3VzRGlzcGxheUJveEluZGV4QmVmb3JlT3V0T2ZGbG93Qm94KQot
ICAgICAgICByZXR1cm4geyBjb250ZW50Qm94VG9wTGVmdC54KCksIGlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlID8gbGluZXNbMF0udG9wKCkgOiBsaW5lc1swXS5sZWZ0KCkgfTsKLSAgICBhdXRvJiBj
dXJyZW50TGluZSA9IGxpbmVzW2JveGVzWypwcmV2aW91c0Rpc3BsYXlCb3hJbmRleEJlZm9yZU91
dE9mRmxvd0JveF0ubGluZUluZGV4KCldOwotICAgIHJldHVybiB7IGNvbnRlbnRCb3hUb3BMZWZ0
LngoKSwgTGF5b3V0VW5pdCB7IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gY3VycmVudExpbmUu
Ym90dG9tKCkgOiBjdXJyZW50TGluZS5yaWdodCgpIH0gfTsKLX0KLQogSW5saW5lTGF5b3V0VW5p
dCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OmluaXRpYWxMaW5lSGVpZ2h0KGJvb2wgaXNGaXJz
dExpbmUpIGNvbnN0CiB7CiAgICAgaWYgKGxheW91dFN0YXRlKCkuaW5TdGFuZGFyZHNNb2RlKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oCmluZGV4
IDVhYmRlMWU4MGI3YS4uZTUzNmQ5MzBmMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaApAQCAtNTYsOSArNTYsNiBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgSW5saW5lUmVjdCBmbGlwVmlzdWFsUmVjdFRvTG9naWNhbEZvcldyaXRpbmdNb2Rl
KGNvbnN0IElubGluZVJlY3QmIHZpc3VhbFJlY3QsIFdyaXRpbmdNb2RlKTsKIAotICAgIExheW91
dFBvaW50IHN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93SW5saW5lTGV2ZWxCb3goY29uc3QgQm94
JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JiwgY29uc3QgSW5saW5lRGlzcGxh
eTo6Q29udGVudCYsIGNvbnN0IEZsb2F0aW5nQ29udGV4dCYpIGNvbnN0OwotICAgIExheW91dFBv
aW50IHN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93QmxvY2tMZXZlbEJveChjb25zdCBCb3gmLCBj
b25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpD
b250ZW50JikgY29uc3Q7Ci0KICAgICB2b2lkIGFkanVzdE1hcmdpblN0YXJ0Rm9yTGlzdE1hcmtl
cihjb25zdCBFbGVtZW50Qm94JiwgTGF5b3V0VW5pdCBuZXN0ZWRMaXN0TWFya2VyTWFyZ2luU3Rh
cnQsIElubGluZUxheW91dFVuaXQgcm9vdElubGluZUJveE9mZnNldCkgY29uc3Q7CiAKICAgICBz
dGF0aWMgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KGNvbnN0IFJl
bmRlclN0eWxlJiByb290U3R5bGUsIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxSaWdo
dCwgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbFJpZ2h0LCBJbmxpbmVMYXlvdXRVbml0IGhh
bmdpbmdUcmFpbGluZ1dpZHRoLCBjb25zdCBMaW5lOjpSdW5MaXN0JiBydW5zLCBib29sIGlzTGFz
dExpbmUsIHN0ZDo6b3B0aW9uYWw8VGV4dERpcmVjdGlvbj4gaW5saW5lQmFzZURpcmVjdGlvbk92
ZXJyaWRlID0gc3RkOjpudWxsb3B0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1
aWxkZXIuY3BwCmluZGV4IDIzYWU2ZDgwODAyNi4uMzY2M2RlNDIyOTA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVt
c0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHAKQEAgLTg2LDkgKzg2LDcgQEAgSW5saW5l
SXRlbXNCdWlsZGVyOjpJbmxpbmVJdGVtc0J1aWxkZXIoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0
dGluZ0NvbnRleHRSb290LAogdm9pZCBJbmxpbmVJdGVtc0J1aWxkZXI6OmJ1aWxkKElubGluZUl0
ZW1Qb3NpdGlvbiBzdGFydFBvc2l0aW9uKQogewogICAgIElubGluZUl0ZW1zIGlubGluZUl0ZW1z
OwotICAgIEZvcm1hdHRpbmdTdGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCBvdXRPZkZsb3dCb3hlczsK
LQotICAgIGNvbGxlY3RJbmxpbmVJdGVtcyhpbmxpbmVJdGVtcywgb3V0T2ZGbG93Qm94ZXMsIHN0
YXJ0UG9zaXRpb24pOworICAgIGNvbGxlY3RJbmxpbmVJdGVtcyhpbmxpbmVJdGVtcywgc3RhcnRQ
b3NpdGlvbik7CiAKICAgICBpZiAoIXJvb3QoKS5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSB8fCBjb250ZW50UmVxdWlyZXNWaXN1YWxSZW9yZGVyaW5nKCkpIHsKICAgICAgICAgLy8g
RklYTUU6IEFkZCBzdXBwb3J0IGZvciBwYXJ0aWFsLCB5ZXQgcGFyYWdyYXBoIGxldmVsIGJpZGkg
Y29udGVudCBoYW5kbGluZy4KQEAgLTEwOSw3ICsxMDcsNiBAQCB2b2lkIElubGluZUl0ZW1zQnVp
bGRlcjo6YnVpbGQoSW5saW5lSXRlbVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24pCiAgICAgICAgIG1f
Zm9ybWF0dGluZ1N0YXRlLmFwcGVuZElubGluZUl0ZW1zKFdURk1vdmUoaW5saW5lSXRlbXMpKTsK
ICAgICB9OwogICAgIGFkanVzdElubGluZUZvcm1hdHRpbmdTdGF0ZVdpdGhOZXdJbmxpbmVJdGVt
cygpOwotICAgIG1fZm9ybWF0dGluZ1N0YXRlLnNldE91dE9mRmxvd0JveGVzKFdURk1vdmUob3V0
T2ZGbG93Qm94ZXMpKTsKIAogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgLy8gQ2hlY2sgaWYgd2Un
dmUgZ290IG1hdGNoaW5nIGlubGluZSBib3ggc3RhcnQvZW5kIHBhaXJzIGFuZCB1bmlxdWUgaW5s
aW5lIGxldmVsIGl0ZW1zIChub24tdGV4dCwgbm9uLWlubGluZSBib3ggaXRlbXMpLgpAQCAtMTkx
LDcgKzE4OCw3IEBAIHN0YXRpYyBMYXlvdXRRdWV1ZSBpbml0aWFsaXplTGF5b3V0UXVldWUoY29u
c3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290CiAgICAgcmV0dXJuIGxheW91dFF1
ZXVlOwogfQogCi12b2lkIElubGluZUl0ZW1zQnVpbGRlcjo6Y29sbGVjdElubGluZUl0ZW1zKElu
bGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgRm9ybWF0dGluZ1N0YXRlOjpPdXRPZkZsb3dCb3hMaXN0
JiBvdXRPZkZsb3dCb3hlcywgSW5saW5lSXRlbVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24pCit2b2lk
IElubGluZUl0ZW1zQnVpbGRlcjo6Y29sbGVjdElubGluZUl0ZW1zKElubGluZUl0ZW1zJiBpbmxp
bmVJdGVtcywgSW5saW5lSXRlbVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24pCiB7CiAgICAgLy8gVHJh
dmVyc2UgdGhlIHRyZWUgYW5kIGNyZWF0ZSBpbmxpbmUgaXRlbXMgb3V0IG9mIGlubGluZSBib3hl
cyBhbmQgbGVhZiBub2Rlcy4gVGhpcyBlc3NlbnRpYWxseSB0dXJucyB0aGUgdHJlZSBpbmxpbmUg
c3RydWN0dXJlIGludG8gYSBmbGF0IG9uZS4KICAgICAvLyA8c3Bhbj50ZXh0PHNwYW4+PC9zcGFu
PjxpbWc+PC9zcGFuPiAtPiBbSW5saW5lQm94U3RhcnRdW0lubGluZUxldmVsQm94XVtJbmxpbmVC
b3hTdGFydF1bSW5saW5lQm94RW5kXVtJbmxpbmVMZXZlbEJveF1bSW5saW5lQm94RW5kXQpAQCAt
MjMzLDkgKzIzMCw4IEBAIHZvaWQgSW5saW5lSXRlbXNCdWlsZGVyOjpjb2xsZWN0SW5saW5lSXRl
bXMoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBGb3JtYXR0aW5nCiAgICAgICAgIHdoaWxlICgh
bGF5b3V0UXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRvIGxheW91dEJveCA9IGxh
eW91dFF1ZXVlLnRha2VMYXN0KCk7CiAgICAgICAgICAgICBpZiAobGF5b3V0Qm94LT5pc091dE9m
Rmxvd1Bvc2l0aW9uZWQoKSkgewotICAgICAgICAgICAgICAgIC8vIExldCdzIG5vdCBjb25zdHJ1
Y3QgSW5saW5lSXRlbXMgZm9yIG91dC1vZi1mbG93IGNvbnRlbnQgYXMgdGhleSBkb24ndCBwYXJ0
aWNpcGF0ZSBpbiB0aGUgaW5saW5lIGxheW91dC4KLSAgICAgICAgICAgICAgICAvLyBIb3dldmVy
IHRvIGJlIGFibGUgdG8gc3RhdGljIHBvc2l0aW9uaW5nIHRoZW0sIHdlIG5lZWQgdG8gY29tcHV0
ZSB0aGVpciBhcHByb3hpbWF0ZSBwb3NpdGlvbnMuCi0gICAgICAgICAgICAgICAgb3V0T2ZGbG93
Qm94ZXMuYXBwZW5kKGxheW91dEJveCk7CisgICAgICAgICAgICAgICAgbV9pc05vbkJpZGlUZXh0
QW5kRm9yY2VkTGluZUJyZWFrT25seUNvbnRlbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBp
bmxpbmVJdGVtcy5hcHBlbmQoeyBsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6Ok9wYXF1ZSB9
KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobGF5b3V0Qm94LT5pc0lubGluZVRleHRCb3goKSkg
ewogICAgICAgICAgICAgICAgIGF1dG8mIGlubGluZVRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVU
ZXh0Qm94PihsYXlvdXRCb3gpOwogICAgICAgICAgICAgICAgIGhhbmRsZVRleHRDb250ZW50KGlu
bGluZVRleHRCb3gsIGlubGluZUl0ZW1zLCBwYXJ0aWFsQ29udGVudE9mZnNldChpbmxpbmVUZXh0
Qm94KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5oCmluZGV4IDVkOWQ3
YWM3ZTI0MC4uNTIyZDE4Mzg3NzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1
aWxkZXIuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBidWlsZChJbmxpbmVJ
dGVtUG9zaXRpb24gc3RhcnRQb3NpdGlvbik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjb2xsZWN0
SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmLCBGb3JtYXR0aW5nU3RhdGU6Ok91dE9mRmxvd0JveExp
c3QmLCBJbmxpbmVJdGVtUG9zaXRpb24gc3RhcnRQb3NpdGlvbik7CisgICAgdm9pZCBjb2xsZWN0
SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmLCBJbmxpbmVJdGVtUG9zaXRpb24gc3RhcnRQb3NpdGlv
bik7CiAgICAgdm9pZCBicmVha0FuZENvbXB1dGVCaWRpTGV2ZWxzKElubGluZUl0ZW1zJik7CiAg
ICAgdm9pZCBjb21wdXRlSW5saW5lVGV4dEl0ZW1XaWR0aHMoSW5saW5lSXRlbXMmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lLmNwcAppbmRleCAzM2FmZjkxNDUzMzUuLjQ2ODRlZTg5ZTllMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKQEAgLTI2MCw2ICsyNjAsMjcgQEAgdm9pZCBM
aW5lOjpoYW5kbGVPdmVyZmxvd2luZ05vbkJyZWFraW5nU3BhY2UoVHJhaWxpbmdDb250ZW50QWN0
aW9uIHRyYWlsaW5nQ29udGUKICAgICBtX2NvbnRlbnRMb2dpY2FsV2lkdGggLT0gcmVtb3ZlZE9y
Q29sbGFwc2VkQ29udGVudFdpZHRoOwogfQogCitjb25zdCBCb3gqIExpbmU6OnJlbW92ZU92ZXJm
bG93aW5nT3VyT2ZGbG93Q29udGVudCgpCit7CisgICAgYXV0byBsYXN0VHJhaWxpbmdPcGFxdWVJ
dGVtSW5kZXggPSBzdGQ6Om9wdGlvbmFsPHNpemVfdD4geyB9OworICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gbV9ydW5zLnNpemUoKTsgaW5kZXgtLTspIHsKKyAgICAgICAgYXV0byYgcnVuID0gbV9y
dW5zW2luZGV4XTsKKyAgICAgICAgaWYgKHJ1bi5pc09wYXF1ZSgpKSB7CisgICAgICAgICAgICBs
YXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXggPSBpbmRleDsKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB9CisgICAgICAgIGlmICghcnVuLmxvZ2ljYWxXaWR0aCgpICYmIChydW4uaXNJ
bmxpbmVCb3hTdGFydCgpIHx8IHJ1bi5pc0lubGluZUJveEVuZCgpKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKCFsYXN0VHJhaWxpbmdPcGFx
dWVJdGVtSW5kZXgpCisgICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byogbGFzdFRyYWlsaW5n
T3BhcXVlQm94ID0gJm1fcnVuc1sqbGFzdFRyYWlsaW5nT3BhcXVlSXRlbUluZGV4XS5sYXlvdXRC
b3goKTsKKyAgICBtX3J1bnMucmVtb3ZlKCpsYXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXgsIG1f
cnVucy5zaXplKCkgLSAqbGFzdFRyYWlsaW5nT3BhcXVlSXRlbUluZGV4KTsKKyAgICBBU1NFUlQo
IW1fcnVucy5pc0VtcHR5KCkpOworICAgIHJldHVybiBsYXN0VHJhaWxpbmdPcGFxdWVCb3g7Cit9
CisKIHZvaWQgTGluZTo6aGFuZGxlVHJhaWxpbmdIYW5naW5nQ29udGVudChzdGQ6Om9wdGlvbmFs
PEludHJpbnNpY1dpZHRoTW9kZT4gaW50cmluc2ljV2lkdGhNb2RlLCBJbmxpbmVMYXlvdXRVbml0
IGhvcml6b250YWxBdmFpbGFibGVTcGFjZUZvckNvbnRlbnQsIGJvb2wgaXNMYXN0Rm9ybWF0dGVk
TGluZSkKIHsKICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRleHQvI2hhbmdp
bmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmUuaAppbmRleCA0ZDkzZDczNmJmYTguLjdiMmEwNDNjZDJi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaApAQCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6CiAg
ICAgSW5saW5lTGF5b3V0VW5pdCBoYW5kbGVUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQoVHJhaWxp
bmdDb250ZW50QWN0aW9uKTsKICAgICB2b2lkIGhhbmRsZVRyYWlsaW5nSGFuZ2luZ0NvbnRlbnQo
c3RkOjpvcHRpb25hbDxJbnRyaW5zaWNXaWR0aE1vZGU+LCBJbmxpbmVMYXlvdXRVbml0IGhvcml6
b250YWxBdmFpbGFibGVTcGFjZSwgYm9vbCBpc0xhc3RGb3JtYXR0ZWRMaW5lKTsKICAgICB2b2lk
IGhhbmRsZU92ZXJmbG93aW5nTm9uQnJlYWtpbmdTcGFjZShUcmFpbGluZ0NvbnRlbnRBY3Rpb24s
IElubGluZUxheW91dFVuaXQgb3ZlcmZsb3dpbmdXaWR0aCk7CisgICAgY29uc3QgQm94KiByZW1v
dmVPdmVyZmxvd2luZ091ck9mRmxvd0NvbnRlbnQoKTsKICAgICB2b2lkIHJlc2V0QmlkaUxldmVs
Rm9yVHJhaWxpbmdXaGl0ZXNwYWNlKFVCaURpTGV2ZWwgcm9vdEJpZGlMZXZlbCk7CiAgICAgdm9p
ZCBhcHBseVJ1bkV4cGFuc2lvbihJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxBdmFpbGFibGVT
cGFjZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAKaW5kZXggM2JjMTgyNTIy
YjM3Li42MmQ2NjcyZWM4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwCkBA
IC0xMzAsNiArMTMwLDEzIEBAIElubGluZVJlY3QgTGluZUJveDo6bG9naWNhbEJvcmRlckJveEZv
cklubGluZUJveChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgQm94CiAgICAgcmV0dXJuIGxv
Z2ljYWxSZWN0OwogfQogCitJbmxpbmVSZWN0IExpbmVCb3g6OmxvZ2ljYWxSZWN0Rm9yT3BhcXVl
Qm94KGNvbnN0IExpbmU6OlJ1biYgb3BhcXVlUnVuLCBjb25zdCBCb3hHZW9tZXRyeSYgYm94R2Vv
bWV0cnkpIGNvbnN0Cit7CisgICAgQVNTRVJUKG9wYXF1ZVJ1bi5pc09wYXF1ZSgpKTsKKyAgICBB
U1NFUlQob3BhcXVlUnVuLmxheW91dEJveCgpLnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxp
bmVUeXBlKCkpOworICAgIHJldHVybiB7IHsgfSwgbV9yb290SW5saW5lQm94LmxvZ2ljYWxMZWZ0
KCkgKyBvcGFxdWVSdW4ubG9naWNhbExlZnQoKSwgYm94R2VvbWV0cnkuYm9yZGVyQm94V2lkdGgo
KSwgYm94R2VvbWV0cnkuYm9yZGVyQm94SGVpZ2h0KCkgfTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
TGF5b3V0CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVC
b3guaAppbmRleCA5NDA1NDliNTc1NTYuLjNlMGUzOWU3NzczZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxpbmVCb3guaApAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgSW5saW5lUmVjdCBs
b2dpY2FsUmVjdEZvclJvb3RJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVC
b3gubG9naWNhbFJlY3QoKTsgfQogICAgIElubGluZVJlY3QgbG9naWNhbEJvcmRlckJveEZvckF0
b21pY0lubGluZUxldmVsQm94KGNvbnN0IEJveCYsIGNvbnN0IEJveEdlb21ldHJ5JikgY29uc3Q7
CiAgICAgSW5saW5lUmVjdCBsb2dpY2FsQm9yZGVyQm94Rm9ySW5saW5lQm94KGNvbnN0IEJveCYs
IGNvbnN0IEJveEdlb21ldHJ5JikgY29uc3Q7CisgICAgSW5saW5lUmVjdCBsb2dpY2FsUmVjdEZv
ck9wYXF1ZUJveChjb25zdCBMaW5lOjpSdW4mIG9wYXF1ZVJ1biwgY29uc3QgQm94R2VvbWV0cnkm
KSBjb25zdDsKIAogICAgIGNvbnN0IElubGluZUxldmVsQm94KiBpbmxpbmVMZXZlbEJveEZvcihj
b25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxMaW5lQm94Jj4o
KnRoaXMpLmlubGluZUxldmVsQm94Rm9yKGxheW91dEJveCk7IH0KICAgICBjb25zdCBJbmxpbmVM
ZXZlbEJveCYgaW5saW5lTGV2ZWxCb3hGb3IoY29uc3QgTGluZTo6UnVuJiBsaW5lUnVuKSBjb25z
dCB7IHJldHVybiBjb25zdF9jYXN0PExpbmVCb3gmPigqdGhpcykuaW5saW5lTGV2ZWxCb3hGb3Io
bGluZVJ1bik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRl
eCA0MzcwODM3N2VlYjkuLmRmNTY5MjA0NzEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmVCdWlsZGVyLmNwcApAQCAtNDc3LDYgKzQ3NywyNiBAQCBMaW5lQ29udGVudCBMaW5lQnVp
bGRlcjo6cGxhY2VJbmxpbmVBbmRGbG9hdENvbnRlbnQoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBu
ZWVkcwogICAgICAgICAgICAgICAgIG1fbGluZS5oYW5kbGVPdmVyZmxvd2luZ05vbkJyZWFraW5n
U3BhY2UoaXNMaW5lQnJlYWtBZnRlcldoaXRlc3BhY2UoKSA/IExpbmU6OlRyYWlsaW5nQ29udGVu
dEFjdGlvbjo6UHJlc2VydmUgOiBMaW5lOjpUcmFpbGluZ0NvbnRlbnRBY3Rpb246OlJlbW92ZSwg
bV9saW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKSAtIGhvcml6b250YWxBdmFpbGFibGVTcGFjZSk7
CiAKICAgICAgICAgICAgIG1fbGluZS5oYW5kbGVUcmFpbGluZ0hhbmdpbmdDb250ZW50KGludHJp
bnNpY1dpZHRoTW9kZSgpLCBob3Jpem9udGFsQXZhaWxhYmxlU3BhY2UsIGlzTGFzdExpbmUpOwor
CisgICAgICAgICAgICBhdXRvIG1heU5lZWRPdXRPZkZsb3dPdmVyZmxvd1RyaW1taW5nID0gIWlz
SW5JbnRyaW5zaWNXaWR0aE1vZGUoKSAmJiBsaW5lSGFzT3ZlcmZsb3coKSAmJiAhbGluZUNvbnRl
bnQucGFydGlhbFRyYWlsaW5nQ29udGVudExlbmd0aCAmJiBUZXh0VXRpbDo6aXNXcmFwcGluZ0Fs
bG93ZWQocm9vdFN0eWxlKTsKKyAgICAgICAgICAgIGlmIChtYXlOZWVkT3V0T2ZGbG93T3ZlcmZs
b3dUcmltbWluZykgeworICAgICAgICAgICAgICAgIC8vIE92ZXJmbG93aW5nIG91dC1vZi1mbG93
IGJveGVzIHNob3VsZCB3cmFwIHRoZSB0byBzdWJzZXF1ZW50IGxpbmVzIGp1c3QgbGlrZSBhbnkg
b3RoZXIgaW4tZmxvdyBjb250ZW50LgorICAgICAgICAgICAgICAgIC8vIEhvd2V2ZXIgc2luY2Ug
d2UgdGFrZSBhIHNob3J0Y3V0IGJ5IG5vdCBjb25zaWRlcmluZyBvdXQtb2YtZmxvdyBjb250ZW50
IGFzIGluZmxvdyBidXQgaW5zdGVhZCB0cmVhdGluZyBpdCBhcyBhbiBvcGFxdWUgYm94IHdpdGgg
emVybyB3aWR0aCBhbmQgbm8KKyAgICAgICAgICAgICAgICAvLyBzb2Z0IHdyYXAgb3Bwb3J0dW5p
dHksIGFueSBvdmVyZmxvd2luZyBvdXQtb2YtZmxvdyBjb250ZW50IHdvdWxkIHBpbGUgdXAgYXMg
dHJhaWxpbmcgY29udGVudC4KKyAgICAgICAgICAgICAgICAvLyBBbHRlcm5hdGl2ZWx5IHdlIGNv
dWxkIGluaXRpYXRlIGEgdHdvIHBhc3MgbGF5b3V0IGZpcnN0IHdpdGggb3V0LW9mLWZsb3cgY29u
dGVudCB0cmVhdGVkIGFzIHRydWUgaW5mbG93IGFuZCBhIHNlY29uZCB3aXRob3V0IHRoZW0uCisg
ICAgICAgICAgICAgICAgQVNTRVJUKCFsaW5lQ29udGVudC5yYW5nZS5lbmQub2Zmc2V0KTsKKyAg
ICAgICAgICAgICAgICBpZiAoYXV0byogbGFzdFJlbW92ZWRUcmFpbGluZ0JveCA9IG1fbGluZS5y
ZW1vdmVPdmVyZmxvd2luZ091ck9mRmxvd0NvbnRlbnQoKSkgeworICAgICAgICAgICAgICAgICAg
ICBhdXRvIGxpbmVFbmRJbmRleCA9IFsmXSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
KGF1dG8gaW5kZXggPSBsaW5lQ29udGVudC5yYW5nZS5zdGFydC5pbmRleDsgaW5kZXggPCBsaW5l
Q29udGVudC5yYW5nZS5lbmQuaW5kZXg7ICsraW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoJm1faW5saW5lSXRlbXNbaW5kZXhdLmxheW91dEJveCgpID09IGxhc3RSZW1v
dmVkVHJhaWxpbmdCb3gpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBp
bmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxp
bmVDb250ZW50LnJhbmdlLmVuZC5pbmRleDsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICAgICAgbGluZUNvbnRlbnQucmFuZ2UuZW5kLmluZGV4ID0gbGluZUVuZEluZGV4
KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9OwogICAgICAg
ICBoYW5kbGVUcmFpbGluZ0NvbnRlbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29u
dGVudEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCmluZGV4IGY1
NmJjMDhkZWVlZS4uN2RhMjM0YjgyMzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50
QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCkBAIC00NTEs
NiArNDUxLDcgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NOb25C
aWRpQ29udGVudChjb25zdCBMaW5lTGF5b3V0UmVzdWx0JgogI2VuZGlmCiAgICAgYXV0byB3cml0
aW5nTW9kZSA9IHJvb3QoKS5zdHlsZSgpLndyaXRpbmdNb2RlKCk7CiAgICAgYXV0byBjb250ZW50
U3RhcnRJblZpc3VhbE9yZGVyID0gbV9kaXNwbGF5TGluZS50b3BMZWZ0KCk7CisgICAgYXV0byBv
dXRPZkZsb3dDb250ZW50SGFzUHJldmlvdXNJbkZsb3dTaWJsaW5nV2l0aENvbnRlbnRPckRlY29y
YXRpb24gPSBzdGQ6Om9wdGlvbmFsPGJvb2w+IHsgfTsKIAogICAgIGFwcGVuZFJvb3RJbmxpbmVC
b3hEaXNwbGF5Qm94KGZsaXBSb290SW5saW5lQm94UmVjdFRvVmlzdWFsRm9yV3JpdGluZ01vZGUo
bGluZUJveC5sb2dpY2FsUmVjdEZvclJvb3RJbmxpbmVCb3goKSwgd3JpdGluZ01vZGUpLCBsaW5l
Qm94LnJvb3RJbmxpbmVCb3goKS5oYXNDb250ZW50KCksIGJveGVzKTsKIApAQCAtNDk4LDcgKzQ5
OSwzMiBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJpZGlD
b250ZW50KGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogICAgICAgICBpZiAobGluZVJ1bi5pc09wYXF1ZSgpKSB7Ci0gICAgICAgICAgICAv
LyBTZXQgZ2VvbWV0cnkgZm9yIHRoaXMgb3BhcXVlIGJveC4KKyAgICAgICAgICAgIGF1dG8mIGJv
eEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlKCkuYm94R2VvbWV0cnkobGF5b3V0Qm94KTsKKyAg
ICAgICAgICAgIGlmIChsYXlvdXRCb3guc3R5bGUoKS5pc09yaWdpbmFsRGlzcGxheUlubGluZVR5
cGUoKSkgeworICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcExlZnQgPSBsaW5lQm94Lmxv
Z2ljYWxSZWN0Rm9yT3BhcXVlQm94KGxpbmVSdW4sIGJveEdlb21ldHJ5KS50b3BMZWZ0KCk7Cisg
ICAgICAgICAgICAgICAgbG9naWNhbFRvcExlZnQubW92ZUJ5KGxpbmVCb3gubG9naWNhbFJlY3Qo
KS50b3BMZWZ0KCkpOworICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BM
ZWZ0KHRvTGF5b3V0UG9pbnQobG9naWNhbFRvcExlZnQpKTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8gaGFzUHJldmlvdXNJbkZsb3dD
b250ZW50ID0gWyZdIHsKKyAgICAgICAgICAgICAgICBpZiAoYm94ZXMuc2l6ZSgpID09IDEpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAob3V0
T2ZGbG93Q29udGVudEhhc1ByZXZpb3VzSW5GbG93U2libGluZ1dpdGhDb250ZW50T3JEZWNvcmF0
aW9uICYmICpvdXRPZkZsb3dDb250ZW50SGFzUHJldmlvdXNJbkZsb3dTaWJsaW5nV2l0aENvbnRl
bnRPckRlY29yYXRpb24pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOgorICAgICAgICAgICAgICAgIGZvciAoYXV0byYgcHJldmlvdXNS
dW4gOiBsaW5lTGF5b3V0UmVzdWx0LmlubGluZUNvbnRlbnQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCZwcmV2aW91c1J1biA9PSAmbGluZVJ1bikKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKExpbmU6OlJ1bjo6aXNDb250
ZW50ZnVsT3JIYXNEZWNvcmF0aW9uKHByZXZpb3VzUnVuLCBmb3JtYXR0aW5nQ29udGV4dCgpKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgb3V0T2ZGbG93Q29udGVudEhhc1ByZXZpb3VzSW5G
bG93U2libGluZ1dpdGhDb250ZW50T3JEZWNvcmF0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICAvLyBCbG9jayBsZXZlbCBib3hlcyBhcmUgcGxhY2VkIGVpdGhlciBhdCB0aGUg
c3RhcnQgb2YgdGhlIGxpbmUgb3IgInVuZGVyIiBkZXBlbmRpbmcgd2hldGhlciB0aGV5IGhhdmUg
cHJldmlvdXMgaW5mbG93IHNpYmxpbmcuCisgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3AgPSBo
YXNQcmV2aW91c0luRmxvd0NvbnRlbnQoKSA/IGxpbmVCb3gubG9naWNhbFJlY3QoKS5ib3R0b20o
KSA6IGxpbmVCb3gubG9naWNhbFJlY3QoKS50b3AoKTsKKyAgICAgICAgICAgIGJveEdlb21ldHJ5
LnNldExvZ2ljYWxUb3BMZWZ0KHsgY29uc3RyYWludHMoKS5ob3Jpem9udGFsKCkubG9naWNhbExl
ZnQsIGxvZ2ljYWxUb3AgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAg
ICAgICBBU1NFUlQobGluZVJ1bi5pc0lubGluZUJveEVuZCgpIHx8IGxpbmVSdW4uaXNXb3JkQnJl
YWtPcHBvcnR1bml0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5
b3V0LmNwcAppbmRleCA2OTY4M2Y4NTlkYTMuLmE0NTYzYzE1YjI4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxp
bmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxp
bmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApAQCAtNTg5LDcgKzU4OSw2IEBAIHN0
ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gTGluZUxheW91dDo6bGF5b3V0KCkKICAgICBhdXRvIHBh
cmVudEJsb2NrTGF5b3V0U3RhdGUgPSBMYXlvdXQ6OkJsb2NrTGF5b3V0U3RhdGUgeyBtX2Jsb2Nr
Rm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKSwgbGluZUNsYW1wKGZsb3coKSksIHRleHRC
b3hUcmltKGZsb3coKSksIGludHJ1c2l2ZUluaXRpYWxMZXR0ZXJCb3R0b20oKSB9OwogICAgIGF1
dG8gaW5saW5lTGF5b3V0U3RhdGUgPSBMYXlvdXQ6OklubGluZUxheW91dFN0YXRlIHsgcGFyZW50
QmxvY2tMYXlvdXRTdGF0ZSwgV1RGTW92ZShtX25lc3RlZExpc3RNYXJrZXJPZmZzZXRzKSB9Owog
ICAgIGF1dG8gbGF5b3V0UmVzdWx0ID0gbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5sYXlvdXRJ
bkZsb3dBbmRGbG9hdENvbnRlbnQoaW5saW5lQ29udGVudENvbnN0cmFpbnRzLCBpbmxpbmVMYXlv
dXRTdGF0ZSwgbV9saW5lRGFtYWdlLmdldCgpKTsKLSAgICBtX2lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmxheW91dE91dE9mRmxvd0NvbnRlbnQoaW5saW5lQ29udGVudENvbnN0cmFpbnRzLCBpbmxp
bmVMYXlvdXRTdGF0ZSwgbGF5b3V0UmVzdWx0LmRpc3BsYXlDb250ZW50KTsKIAogICAgIGF1dG8g
cmVwYWludFJlY3QgPSBMYXlvdXRSZWN0IHsgY29uc3RydWN0Q29udGVudChpbmxpbmVMYXlvdXRT
dGF0ZSwgV1RGTW92ZShsYXlvdXRSZXN1bHQpKSB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9yZXBhaW50L21vdmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJp
bmctbGF5ZXItZXhwZWN0ZWQudHh0CmluZGV4IDI4NGVlMzc0NTI5ZC4uMDI2YzE4OWZhMDE4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L21vdmUtYmFja2luZy1z
aGFyaW5nLWxheWVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9y
ZXBhaW50L21vdmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVkLnR4dApAQCAtMTYsNiAr
MTYsNyBAQAogICAgICAgICAgIChib3VuZHMgODAyLjAwIDIwMi4wMCkKICAgICAgICAgICAoZHJh
d3NDb250ZW50IDEpCiAgICAgICAgICAgKHJlcGFpbnQgcmVjdHMKKyAgICAgICAgICAgIChyZWN0
IDAuMDAgMS4wMCA4MDIuMDAgMS4wMCkKICAgICAgICAgICAgIChyZWN0IDIwMS4wMCA1MS4wMCAx
MDAuMDAgMTAwLjAwKQogICAgICAgICAgICAgKHJlY3QgNDAxLjAwIDUxLjAwIDEwMC4wMCAxMDAu
MDApCiAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdr
Mi9jb21wb3NpdGluZy9yZXBhaW50L21vdmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvY29tcG9zaXRpbmcvcmVwYWludC9t
b3ZlLWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3RlZC50eHQKaW5kZXggZjNiM2QwYjc4ZDg2
Li5iZDRlYmE2OTRkNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIv
Y29tcG9zaXRpbmcvcmVwYWludC9tb3ZlLWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9jb21wb3NpdGluZy9yZXBhaW50
L21vdmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVkLnR4dApAQCAtMTYsNiArMTYsNyBA
QAogICAgICAgICAgIChib3VuZHMgODAyLjAwIDIwMi4wMCkKICAgICAgICAgICAoZHJhd3NDb250
ZW50IDEpCiAgICAgICAgICAgKHJlcGFpbnQgcmVjdHMKKyAgICAgICAgICAgIChyZWN0IDAuMDAg
MS4wMCA4MDIuMDAgMS4wMCkKICAgICAgICAgICAgIChyZWN0IDIwMS4wMCA1MS4wMCAxMDAuMDAg
MTAwLjAwKQogICAgICAgICAgICAgKHJlY3QgNDAxLjAwIDUxLjAwIDEwMC4wMCAxMDAuMDApCiAg
ICAgICAgICAgKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467470</attachid>
            <date>2023-08-28 15:14:34 -0700</date>
            <delta_ts>2023-08-28 15:49:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-260776-20230828151434.patch</filename>
            <type>text/plain</type>
            <size>37792</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBkZjk0NmYwZjQwZGEwNzRmOGM1MjhlZWNiZWVkMDkyOWJiYTQxNGYzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IE1vbiwgMjggQXVnIDIwMjMgMTI6MzA6MzUgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBV
c2Ugb3BhcXVlIElubGluZUl0ZW0gdG8gY29tcHV0ZSBvdXQtb2YtZmxvdyBzdGF0aWMKIHBvc2l0
aW9uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjA3NzYKClJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKTGV0J3MgcmVwbGFjZSBleGlzdGluZyBvdXQtb2YtZmxv
dyBoYW5kbGluZyB3aXRoIHVzaW5nIG9wYXF1ZSBpbmxpbmUgaXRlbXMgaW5zdGVhZC4KMS4gQWRk
IG91dC1vZi1mbG93IGNvbnRlbnQgdG8gdGhlIGlubGluZSBpdGVtIGxpc3QgYXMgb3BhcXVlIGJv
eCBhbmQgcnVuIHJlZ3VsYXIgaW5saW5lIGxheW91dC4KMi4gU2V0IHN0YXRpYyBwb3NpdGlvbiBh
cyBwYXJ0IG9mIHRoZSBpbmxpbmUgZGlzcGxheSBjb250ZW50IGJ1aWxkaW5nIHByb2Nlc3Mgd2hl
cmUgd2UgaXRlcmF0ZSB0aHJvdWdoIHRoZSBydW5zIG9uIHRoZSBjdXJyZW50IGxpbmUuCjMuIFNp
bmNlIHRoaXMgaXMgYWxsIHBhcnQgb2YgX2luZmxvd18gbGF5b3V0LCB3ZSBkb24ndCBuZWVkIHRo
ZSBkZWRpY2F0ZWQgX291dF9vZl9mbG93XyBtZXRob2Qgb24gSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQgYW55bW9yZS4KNC4gUmVtb3ZlIGV4aXN0aW5nIGxvZ2ljIHdoZXJlIHdlIGNvbXB1dGUgdGhl
IHN0YXRpYyBwb3NpdGlvbiBieSBsb29raW5nIGF0IGFkamFjZW50IGRpc3BsYXkgYm94IGdlb21l
dHJpZXMuCgoqIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNo
YXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIv
Y29tcG9zaXRpbmcvcmVwYWludC9tb3ZlLWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3RlZC50
eHQ6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudCk6IERlbGV0ZWQuCihXZWJDb3JlOjpM
YXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JP
dXRPZkZsb3dDb250ZW50KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgoqIFNvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OmZpcnN0RGlzcGxheUJveEluZGV4Rm9yTGF5
b3V0Qm94KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6bGFzdERpc3BsYXlCb3hJbmRleEZv
ckxheW91dEJveCk6IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OnByZXZpb3VzRGlzcGxheUJv
eEluZGV4KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6bmV4dERpc3BsYXlCb3hJbmRleCk6
IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6Y29u
dGVudExlZnRBZnRlckxhc3RMaW5lIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0lubGlu
ZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0Jsb2NrTGV2ZWxCb3ggY29u
c3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHA6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUl0ZW1zQnVpbGRlcjo6YnVpbGQpOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVJdGVtc0J1aWxkZXI6OmNvbGxlY3RJbmxpbmVJdGVtcyk6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmg6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OnJlbW92ZU92ZXJmbG93aW5nT3VyT2ZG
bG93Q29udGVudCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94
Ojpsb2dpY2FsUmVjdEZvck9wYXF1ZUJveCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5oOgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNw
cDoKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQW5kRmxvYXRDb250
ZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6
OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KToKKiBT
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6
bGF5b3V0KToKLS0tCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAg
ICAgfCAgIDIgKy0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwICAgICAg
ICB8ICAzMCArLS0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggICAgICAg
ICAgfCAgIDQgKy0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCAgICAg
ICB8IDE2OCAtLS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dl
b21ldHJ5LmggICAgICAgICB8ICAgMyAtCiAuLi4vaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5j
cHAgICAgICAgICAgICAgfCAgMTIgKy0KIC4uLi9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmgg
ICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZS5jcHAgIHwgIDIxICsrKwogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZS5oICAgIHwgICAxICsKIC4uLi9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAgICAgICAg
ICAgICAgICAgICB8ICAgNyArCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lQm94LmggfCAgIDEgKwogLi4uL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAgICAgICAg
ICAgICAgIHwgIDIwICsrKwogLi4uL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
LmNwcCAgIHwgIDI4ICsrLQogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
Y3BwICAgIHwgICAzICstCiAuLi4vbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQu
dHh0ICAgfCAgIDEgKwogLi4uL21vdmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVkLnR4
dCAgIHwgICAxICsKIDE2IGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDIxNSBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAKaW5kZXggNjJkMDY3MWUwNzViLi5jMDE1
M2JhYTgxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvZmxleC9GbGV4TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAKQEAgLTQ0NSw3ICs0NDUsNyBAQCBG
bGV4TGF5b3V0OjpTaXplTGlzdCBGbGV4TGF5b3V0OjpoeXBvdGhldGljYWxDcm9zc1NpemVGb3JG
bGV4SXRlbXMoY29uc3QgTG9naWNhbAogICAgICAgICAgICAgYXV0byYgaW5saW5lRm9ybWF0dGlu
Z1N0YXRlID0gZmxleEZvcm1hdHRpbmdDb250ZXh0KCkubGF5b3V0U3RhdGUoKS5lbnN1cmVJbmxp
bmVGb3JtYXR0aW5nU3RhdGUoZmxleEl0ZW1Cb3gpOwogICAgICAgICAgICAgYXV0byBpbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCA9IElubGluZUZvcm1hdHRpbmdDb250ZXh0IHsgZmxleEl0ZW1Cb3gs
IGlubGluZUZvcm1hdHRpbmdTdGF0ZSB9OwogICAgICAgICAgICAgYXV0byBjb25zdHJhaW50c0Zv
ckluRmxvd0NvbnRlbnQgPSBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQgeyBIb3Jpem9udGFs
Q29uc3RyYWludHMgeyB7IH0sIGZsZXhJdGVtc01haW5TaXplTGlzdFtmbGV4SXRlbUluZGV4XSB9
LCB7IH0gfTsKLSAgICAgICAgICAgIGF1dG8gbGF5b3V0UmVzdWx0ID0gaW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQubGF5b3V0SW5GbG93QW5kRmxvYXRDb250ZW50KHsgY29uc3RyYWludHNGb3JJbkZs
b3dDb250ZW50LCB7IH0gfSwgaW5saW5lTGF5b3V0U3RhdGUpOworICAgICAgICAgICAgYXV0byBs
YXlvdXRSZXN1bHQgPSBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5sYXlvdXQoeyBjb25zdHJhaW50
c0ZvckluRmxvd0NvbnRlbnQsIHsgfSB9LCBpbmxpbmVMYXlvdXRTdGF0ZSk7CiAgICAgICAgICAg
ICByZXR1cm4gTGF5b3V0VW5pdCB7IGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVudC5saW5lcy5s
YXN0KCkubGluZUJveExvZ2ljYWxSZWN0KCkubWF4WSgpIH07CiAgICAgICAgIH07CiAgICAgICAg
IGF1dG8gdXNlZENyb3NzU2l6ZSA9IGNyb3NzU2l6ZUFmdGVyUGVyZm9ybWluZ0xheW91dCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4
IGJkYjI4OGJjMmI5ZS4uOWZiYjcyZTljNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC02NywxMCArNjcsMTAgQEAgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEVsZW1lbnRCb3gm
IGZvcm1hdHRpbmdDb24KIHsKIH0KIAotSW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpsYXlvdXRJbkZsb3dBbmRGbG9hdENvbnRlbnQoY29uc3QgQ29uc3RyYWludHNG
b3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50cywgSW5saW5lTGF5b3V0U3RhdGUmIGlubGluZUxh
eW91dFN0YXRlLCBjb25zdCBJbmxpbmVEYW1hZ2UqIGxpbmVEYW1hZ2UpCitJbmxpbmVMYXlvdXRS
ZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dChjb25zdCBDb25zdHJhaW50c0Zv
cklubGluZUNvbnRlbnQmIGNvbnN0cmFpbnRzLCBJbmxpbmVMYXlvdXRTdGF0ZSYgaW5saW5lTGF5
b3V0U3RhdGUsIGNvbnN0IElubGluZURhbWFnZSogbGluZURhbWFnZSkKIHsKICAgICBhdXRvJiBm
bG9hdGluZ1N0YXRlID0gaW5saW5lTGF5b3V0U3RhdGUucGFyZW50QmxvY2tMYXlvdXRTdGF0ZSgp
LmZsb2F0aW5nU3RhdGUoKTsKLSAgICBpZiAoIXJvb3QoKS5oYXNJbkZsb3dDaGlsZCgpKSB7Cisg
ICAgaWYgKCFyb290KCkuaGFzSW5GbG93Q2hpbGQoKSAmJiAhcm9vdCgpLmhhc091dE9mRmxvd0No
aWxkKCkpIHsKICAgICAgICAgLy8gRmxvYXQgb25seSBjb250ZW50IGRvZXMgbm90IHN1cHBvcnQg
cGFydGlhbCBsYXlvdXQuCiAgICAgICAgIEFTU0VSVCghbGluZURhbWFnZSk7CiAgICAgICAgIGxh
eW91dEZsb2F0Q29udGVudE9ubHkoY29uc3RyYWludHMsIGZsb2F0aW5nU3RhdGUpOwpAQCAtMTE0
LDEyICsxMTQsNiBAQCBJbmxpbmVMYXlvdXRSZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dEluRmxvd0FuZEZsb2F0Q29udGVudChjb25zdCBDbwogICAgIHJldHVybiBsaW5lTGF5
b3V0KGxpbmVCdWlsZGVyLCBpbmxpbmVJdGVtcywgbmVlZHNMYXlvdXRSYW5nZSwgcHJldmlvdXNM
aW5lKCksIGNvbnN0cmFpbnRzLCBpbmxpbmVMYXlvdXRTdGF0ZSwgbGluZURhbWFnZSk7CiB9CiAK
LXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0NvbnRlbnQoY29u
c3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50cywgSW5saW5lTGF5b3V0
U3RhdGUmIGlubGluZUxheW91dFN0YXRlLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBp
bmxpbmVEaXNwbGF5Q29udGVudCkKLXsKLSAgICAvLyBDb2xsZWN0aW5nIG91dC1vZi1mbG93IGJv
eGVzIGhhcHBlbnMgZHVyaW5nIHRoZSBpbi1mbG93IHBoYXNlLgotICAgIGNvbXB1dGVTdGF0aWNQ
b3NpdGlvbkZvck91dE9mRmxvd0NvbnRlbnQoZm9ybWF0dGluZ1N0YXRlKCkub3V0T2ZGbG93Qm94
ZXMoKSwgY29uc3RyYWludHMsIGlubGluZURpc3BsYXlDb250ZW50LCBpbmxpbmVMYXlvdXRTdGF0
ZS5wYXJlbnRCbG9ja0xheW91dFN0YXRlKCkuZmxvYXRpbmdTdGF0ZSgpKTsKLX0KLQogSW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRy
aW5zaWNTaXplcyhjb25zdCBJbmxpbmVEYW1hZ2UqIGxpbmVEYW1hZ2UpCiB7CiAgICAgYXV0byYg
aW5saW5lRm9ybWF0dGluZ1N0YXRlID0gZm9ybWF0dGluZ1N0YXRlKCk7CkBAIC0yNDMsMjYgKzIz
Nyw2IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEZsb2F0Q29udGVudE9u
bHkoY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDCiAgICAgfQogfQogCi12b2lkIElubGluZUZv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50
KGNvbnN0IEZvcm1hdHRpbmdTdGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCYgb3V0T2ZGbG93Qm94ZXMs
IGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3RyYWludHMsIGNvbnN0IElu
bGluZURpc3BsYXk6OkNvbnRlbnQmIGRpc3BsYXlDb250ZW50LCBjb25zdCBGbG9hdGluZ1N0YXRl
JiBmbG9hdGluZ1N0YXRlKQotewotICAgIC8vIFRoaXMgZnVuY3Rpb24gY29tcHV0ZXMgdGhlIHN0
YXRpYyBwb3NpdGlvbiBmb3Igb3V0LW9mLWZsb3cgY29udGVudCBpbnNpZGUgdGhlIGlubGluZSBm
b3JtYXR0aW5nIGNvbnRleHQuCi0gICAgLy8gQXMgcGVyIHNwZWMsIHRoZSBzdGF0aWMgcG9zaXRp
b24gb2YgYW4gb3V0LW9mLWZsb3cgYm94IGlzIGNvbXB1dGVkIGFzIGlmIHRoZSBwb3NpdGlvbiB3
YXMgc2V0IHRvIHN0YXRpYy4KLSAgICAvLyBIb3dldmVyIGl0IGRvZXMgbm90IG1lYW4gdGhhdCB0
aGUgb3V0LW9mLWZsb3cgYm94IHNob3VsZCBiZSBpbnZvbHZlZCBpbiB0aGUgaW5saW5lIGxheW91
dCBwcm9jZXNzLgotICAgIC8vIEluc3RlYWQgd2UgZmlndXJlIG91dCB0aGlzIHN0YXRpYyBwb3Np
dGlvbiBhZnRlciB0aGUgaW5saW5lIGxheW91dCBieSBsb29raW5nIGF0IHRoZSBwcmV2aW91cy9u
ZXh0IHNpYmxpbmcgKG9yIHBhcmVudCkgYm94J3MgZ2VvbWV0cnkgYW5kCi0gICAgLy8gcGxhY2Ug
dGhlIG91dC1vZi1mbG93IGJveCBhdCB0aGUgbG9naWNhbCByaWdodCBwb3NpdGlvbi4KLSAgICBh
dXRvJiBmb3JtYXR0aW5nR2VvbWV0cnkgPSB0aGlzLT5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKLSAg
ICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKLSAgICBh
dXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29udGV4dCB7ICp0aGlzLCBmbG9hdGluZ1N0
YXRlIH07Ci0KLSAgICBmb3IgKGF1dG8mIG91dE9mRmxvd0JveCA6IG91dE9mRmxvd0JveGVzKSB7
Ci0gICAgICAgIGlmIChvdXRPZkZsb3dCb3gtPnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxp
bmVUeXBlKCkpIHsKLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5ib3hHZW9tZXRyeShvdXRP
ZkZsb3dCb3gpLnNldExvZ2ljYWxUb3BMZWZ0KGZvcm1hdHRpbmdHZW9tZXRyeS5zdGF0aWNQb3Np
dGlvbkZvck91dE9mRmxvd0lubGluZUxldmVsQm94KG91dE9mRmxvd0JveCwgY29uc3RyYWludHMs
IGRpc3BsYXlDb250ZW50LCBmbG9hdGluZ0NvbnRleHQpKTsKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9Ci0gICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5ib3hHZW9tZXRyeShvdXRPZkZs
b3dCb3gpLnNldExvZ2ljYWxUb3BMZWZ0KGZvcm1hdHRpbmdHZW9tZXRyeS5zdGF0aWNQb3NpdGlv
bkZvck91dE9mRmxvd0Jsb2NrTGV2ZWxCb3gob3V0T2ZGbG93Qm94LCBjb25zdHJhaW50cywgZGlz
cGxheUNvbnRlbnQpKTsKLSAgICB9Ci19Ci0KIHN0YXRpYyBMaW5lRW5kaW5nRWxsaXBzaXNQb2xp
Y3kgbGluZUVuZGluZ0VsbGlwc2lzUG9saWN5KGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUs
IHNpemVfdCBudW1iZXJPZkxpbmVzLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbnVtYmVyT2ZWaXNp
YmxlTGluZXNBbGxvd2VkKQogewogICAgIC8vIFdlIG1heSBoYXZlIHBhc3NlZCB0aGUgbGluZS1j
bGFtcCBsaW5lIHdpdGggb3ZlcmZsb3cgdmlzaWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDExNDA2OGYxYTc1Mi4uZDhiYjEyYmQwYTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAg
LTU5LDggKzU5LDcgQEAgY2xhc3MgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQgZmluYWwgOiBwdWJs
aWMgRm9ybWF0dGluZ0NvbnRleHQgewogcHVibGljOgogICAgIElubGluZUZvcm1hdHRpbmdDb250
ZXh0KGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgSW5saW5lRm9ybWF0
dGluZ1N0YXRlJik7CiAKLSAgICBJbmxpbmVMYXlvdXRSZXN1bHQgbGF5b3V0SW5GbG93QW5kRmxv
YXRDb250ZW50KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIElubGluZUxheW91
dFN0YXRlJiwgY29uc3QgSW5saW5lRGFtYWdlKiA9IG51bGxwdHIpOwotICAgIHZvaWQgbGF5b3V0
T3V0T2ZGbG93Q29udGVudChjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmLCBJbmxp
bmVMYXlvdXRTdGF0ZSYsIGNvbnN0IElubGluZURpc3BsYXk6OkNvbnRlbnQmKTsKKyAgICBJbmxp
bmVMYXlvdXRSZXN1bHQgbGF5b3V0KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYs
IElubGluZUxheW91dFN0YXRlJiwgY29uc3QgSW5saW5lRGFtYWdlKiA9IG51bGxwdHIpOwogICAg
IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgY29tcHV0ZWRJbnRyaW5zaWNTaXplcyhjb25zdCBJ
bmxpbmVEYW1hZ2UqKTsKICAgICBMYXlvdXRVbml0IG1heGltdW1Db250ZW50U2l6ZSgpOwogCkBA
IC03MSw3ICs3MCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5saW5lTGF5b3V0UmVzdWx0
IGxpbmVMYXlvdXQoQWJzdHJhY3RMaW5lQnVpbGRlciYsIGNvbnN0IElubGluZUl0ZW1zJiwgSW5s
aW5lSXRlbVJhbmdlLCBzdGQ6Om9wdGlvbmFsPFByZXZpb3VzTGluZT4sIGNvbnN0IENvbnN0cmFp
bnRzRm9ySW5saW5lQ29udGVudCYsIElubGluZUxheW91dFN0YXRlJiwgY29uc3QgSW5saW5lRGFt
YWdlKiA9IG51bGxwdHIpOwogICAgIHZvaWQgbGF5b3V0RmxvYXRDb250ZW50T25seShjb25zdCBD
b25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmLCBGbG9hdGluZ1N0YXRlJik7Ci0gICAgdm9pZCBj
b21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGNvbnN0IEZvcm1hdHRpbmdT
dGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVu
dCYsIGNvbnN0IElubGluZURpc3BsYXk6OkNvbnRlbnQmLCBjb25zdCBGbG9hdGluZ1N0YXRlJik7
CiAKICAgICB2b2lkIGNvbGxlY3RDb250ZW50SWZOZWVkZWQoKTsKICAgICBJbmxpbmVSZWN0IGNy
ZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShzaXplX3QgbGluZUluZGV4LCBjb25zdCBMaW5lTGF5
b3V0UmVzdWx0JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgY29uc3QgSW5s
aW5lTGF5b3V0U3RhdGUmLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCAzZWNhYzNjYzc1
MmIuLjA5YWI2OTQxMjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0yMDksMTc0ICsyMDksNiBAQCBJbmxpbmVMYXlvdXRVbml0
IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRUZXh0SW5kZW50KElzSW50cmluc2lj
V2lkdGhNbwogICAgIHJldHVybiB7IG1pbmltdW1WYWx1ZUZvckxlbmd0aCh0ZXh0SW5kZW50LCBh
dmFpbGFibGVXaWR0aCkgfTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaXJz
dERpc3BsYXlCb3hJbmRleEZvckxheW91dEJveChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3Qg
SW5saW5lRGlzcGxheTo6Qm94ZXMmIGRpc3BsYXlCb3hlcykKLXsKLSAgICAvLyBGSVhNRTogQnVp
bGQgYSBmaXJzdC9sYXN0IGhhc2htYXAgZm9yIHRoZXNlIGJveGVzLgotICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBkaXNwbGF5Qm94ZXMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAg
ICAgIGlmIChkaXNwbGF5Qm94ZXNbaW5kZXhdLmlzUm9vdElubGluZUJveCgpKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGlmICgmZGlzcGxheUJveGVzW2luZGV4XS5sYXlvdXRCb3go
KSA9PSAmbGF5b3V0Qm94KQotICAgICAgICAgICAgcmV0dXJuIGluZGV4OwotICAgIH0KLSAgICBy
ZXR1cm4geyB9OwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxhc3REaXNwbGF5
Qm94SW5kZXhGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IElubGluZURp
c3BsYXk6OkJveGVzJiBkaXNwbGF5Qm94ZXMpCi17Ci0gICAgLy8gRklYTUU6IEJ1aWxkIGEgZmly
c3QvbGFzdCBoYXNobWFwIGZvciB0aGVzZSBib3hlcy4KLSAgICBmb3IgKGF1dG8gaW5kZXggPSBk
aXNwbGF5Qm94ZXMuc2l6ZSgpOyBpbmRleC0tOykgewotICAgICAgICBpZiAoZGlzcGxheUJveGVz
W2luZGV4XS5pc1Jvb3RJbmxpbmVCb3goKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBpZiAoJmRpc3BsYXlCb3hlc1tpbmRleF0ubGF5b3V0Qm94KCkgPT0gJmxheW91dEJveCkKLSAg
ICAgICAgICAgIHJldHVybiBpbmRleDsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwcmV2aW91c0Rpc3BsYXlCb3hJbmRleChjb25zdCBC
b3gmIG91dE9mRmxvd0JveCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGRpc3BsYXlCb3hl
cykKLXsKLSAgICBhdXRvIHByZXZpb3VzRGlzcGxheUJveEluZGV4T2YgPSBbJl0gKGF1dG8mIGxh
eW91dEJveCkgLT4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IHsKLSAgICAgICAgZm9yIChhdXRvKiBi
b3ggPSAmbGF5b3V0Qm94OyBib3g7IGJveCA9IGJveC0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCkp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvIGRpc3BsYXlCb3hJbmRleCA9IGxhc3REaXNwbGF5Qm94
SW5kZXhGb3JMYXlvdXRCb3goKmJveCwgZGlzcGxheUJveGVzKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZGlzcGxheUJveEluZGV4OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB7IH07Ci0g
ICAgfTsKLQotICAgIGF1dG8qIGNhbmRpZGF0ZUJveCA9IG91dE9mRmxvd0JveC5wcmV2aW91c0lu
Rmxvd1NpYmxpbmcoKTsKLSAgICBpZiAoIWNhbmRpZGF0ZUJveCkKLSAgICAgICAgY2FuZGlkYXRl
Qm94ID0gb3V0T2ZGbG93Qm94LnBhcmVudCgpLmlzSW5saW5lQm94KCkgPyAmb3V0T2ZGbG93Qm94
LnBhcmVudCgpIDogbnVsbHB0cjsKLSAgICB3aGlsZSAoY2FuZGlkYXRlQm94KSB7Ci0gICAgICAg
IGlmIChhdXRvIGRpc3BsYXlCb3hJbmRleCA9IHByZXZpb3VzRGlzcGxheUJveEluZGV4T2YoKmNh
bmRpZGF0ZUJveCkpCi0gICAgICAgICAgICByZXR1cm4gZGlzcGxheUJveEluZGV4OwotICAgICAg
ICBjYW5kaWRhdGVCb3ggPSBjYW5kaWRhdGVCb3gtPnBhcmVudCgpLmlzSW5saW5lQm94KCkgPyAm
Y2FuZGlkYXRlQm94LT5wYXJlbnQoKSA6IG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiB7IH07
Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV4dERpc3BsYXlCb3hJbmRleChj
b25zdCBCb3gmIG91dE9mRmxvd0JveCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGRpc3Bs
YXlCb3hlcykKLXsKLSAgICBhdXRvIG5leHREaXNwbGF5Qm94SW5kZXhPZiA9IFsmXSAoYXV0byYg
bGF5b3V0Qm94KSAtPiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gewotICAgICAgICBmb3IgKGF1dG8q
IGJveCA9ICZsYXlvdXRCb3g7IGJveDsgYm94ID0gYm94LT5uZXh0SW5GbG93U2libGluZygpKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byBkaXNwbGF5Qm94SW5kZXggPSBmaXJzdERpc3BsYXlCb3hJ
bmRleEZvckxheW91dEJveCgqYm94LCBkaXNwbGF5Qm94ZXMpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBkaXNwbGF5Qm94SW5kZXg7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICB9OwotCi0gICAgYXV0byogY2FuZGlkYXRlQm94ID0gb3V0T2ZGbG93Qm94Lm5leHRJbkZsb3dT
aWJsaW5nKCk7Ci0gICAgaWYgKCFjYW5kaWRhdGVCb3gpCi0gICAgICAgIGNhbmRpZGF0ZUJveCA9
IG91dE9mRmxvd0JveC5wYXJlbnQoKS5pc0lubGluZUJveCgpID8gb3V0T2ZGbG93Qm94LnBhcmVu
dCgpLm5leHRJbkZsb3dTaWJsaW5nKCkgOiBudWxscHRyOwotICAgIHdoaWxlIChjYW5kaWRhdGVC
b3gpIHsKLSAgICAgICAgaWYgKGF1dG8gZGlzcGxheUJveEluZGV4ID0gbmV4dERpc3BsYXlCb3hJ
bmRleE9mKCpjYW5kaWRhdGVCb3gpKQotICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlCb3hJbmRl
eDsKLSAgICAgICAgY2FuZGlkYXRlQm94ID0gY2FuZGlkYXRlQm94LT5wYXJlbnQoKS5pc0lubGlu
ZUJveCgpID8gY2FuZGlkYXRlQm94LT5wYXJlbnQoKS5uZXh0SW5GbG93U2libGluZygpIDogbnVs
bHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotSW5saW5lTGF5b3V0VW5pdCBJbmxp
bmVGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnRlbnRMZWZ0QWZ0ZXJMYXN0TGluZShjb25zdCBDb25z
dHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBzdGQ6Om9wdGlvbmFsPElubGlu
ZUxheW91dFVuaXQ+IGxhc3RMaW5lTG9naWNhbEJvdHRvbSwgY29uc3QgRmxvYXRpbmdDb250ZXh0
JiBmbG9hdGluZ0NvbnRleHQpIGNvbnN0Ci17Ci0gICAgYXV0byBjb250ZW50SGFzUHJldmlvdXNM
aW5lID0gbGFzdExpbmVMb2dpY2FsQm90dG9tID8gc3RkOjptYWtlX29wdGlvbmFsKHRydWUpIDog
c3RkOjpudWxsb3B0OwotICAgIGF1dG8gdGV4dEluZGVudCA9IGNvbXB1dGVkVGV4dEluZGVudChJ
c0ludHJpbnNpY1dpZHRoTW9kZTo6Tm8sIGNvbnRlbnRIYXNQcmV2aW91c0xpbmUsIGNvbnN0cmFp
bnRzLmhvcml6b250YWwoKS5sb2dpY2FsV2lkdGgpOwotICAgIGF1dG8gZmxvYXRDb25zdHJhaW50
cyA9IGZsb2F0Q29uc3RyYWludHNGb3JMaW5lKGxhc3RMaW5lTG9naWNhbEJvdHRvbS52YWx1ZV9v
cihjb25zdHJhaW50cy5sb2dpY2FsVG9wKCkpLCAwLCBmbG9hdGluZ0NvbnRleHQpOwotICAgIGF1
dG8gbGluZUJveExlZnQgPSBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQ7Ci0g
ICAgYXV0byBsaW5lQm94V2lkdGggPSBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbFdp
ZHRoOwotICAgIC8vIEZJWE1FOiBBZGQgbWlzc2luZyBSVEwgc3VwcG9ydC4KLSAgICBpZiAoZmxv
YXRDb25zdHJhaW50cy5sZWZ0KSB7Ci0gICAgICAgIGF1dG8gZmxvYXRPZmZzZXQgPSBzdGQ6Om1h
eCgwX2x1LCBmbG9hdENvbnN0cmFpbnRzLmxlZnQtPnggLSBjb25zdHJhaW50cy5ob3Jpem9udGFs
KCkubG9naWNhbExlZnQpOwotICAgICAgICBsaW5lQm94TGVmdCArPSBmbG9hdE9mZnNldDsKLSAg
ICAgICAgbGluZUJveFdpZHRoIC09IGZsb2F0T2Zmc2V0OwotICAgIH0KLSAgICBpZiAoZmxvYXRD
b25zdHJhaW50cy5yaWdodCkgewotICAgICAgICBhdXRvIGxpbmVCb3hSaWdodCA9IChjb25zdHJh
aW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQgKyBjb25zdHJhaW50cy5ob3Jpem9udGFsKCku
bG9naWNhbFdpZHRoKTsKLSAgICAgICAgYXV0byBmbG9hdE9mZnNldCA9IHN0ZDo6bWF4KDBfbHUs
IGxpbmVCb3hSaWdodCAtIGZsb2F0Q29uc3RyYWludHMucmlnaHQtPngpOwotICAgICAgICBsaW5l
Qm94V2lkdGggLT0gZmxvYXRPZmZzZXQ7Ci0gICAgfQotICAgIGxpbmVCb3hMZWZ0ICs9IHRleHRJ
bmRlbnQ7Ci0gICAgYXV0byByb290SW5saW5lQm94TGVmdCA9IGhvcml6b250YWxBbGlnbm1lbnRP
ZmZzZXQoZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCkuc3R5bGUoKSwgeyB9LCBsaW5lQm94V2lk
dGgsIHsgfSwgeyB9LCB0cnVlKTsKLSAgICByZXR1cm4gbGluZUJveExlZnQgKyByb290SW5saW5l
Qm94TGVmdDsKLX0KLQotTGF5b3V0UG9pbnQgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0
aWNQb3NpdGlvbkZvck91dE9mRmxvd0lubGluZUxldmVsQm94KGNvbnN0IEJveCYgb3V0T2ZGbG93
Qm94LCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBjb25z
dCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCwgY29uc3QgRmxvYXRpbmdD
b250ZXh0JiBmbG9hdGluZ0NvbnRleHQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG91dE9mRmxvd0Jv
eC5zdHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5SW5saW5lVHlwZSgpKTsKLSAgICBhdXRvJiBsaW5l
cyA9IGRpc3BsYXlDb250ZW50LmxpbmVzOwotICAgIGF1dG8mIGJveGVzID0gZGlzcGxheUNvbnRl
bnQuYm94ZXM7Ci0KLSAgICBpZiAobGluZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVChi
b3hlcy5pc0VtcHR5KCkpOwotICAgICAgICByZXR1cm4geyBjb250ZW50TGVmdEFmdGVyTGFzdExp
bmUoY29uc3RyYWludHMsIHsgfSwgZmxvYXRpbmdDb250ZXh0KSwgY29uc3RyYWludHMubG9naWNh
bFRvcCgpIH07Ci0gICAgfQotCi0gICAgYXV0byBpc0hvcml6b250YWxXcml0aW5nTW9kZSA9IGZv
cm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLnN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KTsKLSAgICBhdXRvIGxlZnRTaWRlVG9Mb2dpY2FsVG9wTGVmdCA9IFsmXSAoYXV0byYgZGlzcGxh
eUJveCwgYXV0byYgbGluZSwgYm9vbCBtYXlOZWVkTWFyZ2luQWRqdXN0bWVudCA9IHRydWUpIHsK
LSAgICAgICAgYXV0byBtYXJnaW5TdGFydCA9IExheW91dFVuaXQgeyB9OwotICAgICAgICBpZiAo
bWF5TmVlZE1hcmdpbkFkanVzdG1lbnQgJiYgZGlzcGxheUJveC5pc05vblJvb3RJbmxpbmVMZXZl
bEJveCgpKQotICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdl
b21ldHJ5Rm9yQm94KGRpc3BsYXlCb3gubGF5b3V0Qm94KCkpLm1hcmdpblN0YXJ0KCk7Ci0gICAg
ICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IExheW91dFBvaW50KGRpc3BsYXlC
b3gubGVmdCgpIC0gbWFyZ2luU3RhcnQsIGxpbmUudG9wKCkpIDogTGF5b3V0UG9pbnQoZGlzcGxh
eUJveC50b3AoKSAtIG1hcmdpblN0YXJ0LCBsaW5lLmxlZnQoKSk7Ci0gICAgfTsKLSAgICBhdXRv
IHJpZ2h0U2lkZVRvTG9naWNhbFRvcExlZnQgPSBbJl0gKGF1dG8mIGRpc3BsYXlCb3gsIGF1dG8m
IGxpbmUpIHsKLSAgICAgICAgYXV0byBtYXJnaW5FbmQgPSBMYXlvdXRVbml0IHsgfTsKLSAgICAg
ICAgaWYgKGRpc3BsYXlCb3guaXNOb25Sb290SW5saW5lTGV2ZWxCb3goKSkKLSAgICAgICAgICAg
IG1hcmdpbkVuZCA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goZGlzcGxheUJv
eC5sYXlvdXRCb3goKSkubWFyZ2luRW5kKCk7Ci0gICAgICAgIHJldHVybiBpc0hvcml6b250YWxX
cml0aW5nTW9kZSA/IExheW91dFBvaW50KGRpc3BsYXlCb3gucmlnaHQoKSArIG1hcmdpbkVuZCwg
bGluZS50b3AoKSkgOiBMYXlvdXRQb2ludChkaXNwbGF5Qm94LmJvdHRvbSgpICsgbWFyZ2luRW5k
LCBsaW5lLmxlZnQoKSk7Ci0gICAgfTsKLQotICAgIGF1dG8gcHJldmlvdXNEaXNwbGF5Qm94SW5k
ZXhCZWZvcmVPdXRPZkZsb3dCb3ggPSBwcmV2aW91c0Rpc3BsYXlCb3hJbmRleChvdXRPZkZsb3dC
b3gsIGJveGVzKTsKLSAgICBpZiAoIXByZXZpb3VzRGlzcGxheUJveEluZGV4QmVmb3JlT3V0T2ZG
bG93Qm94KQotICAgICAgICByZXR1cm4gbGVmdFNpZGVUb0xvZ2ljYWxUb3BMZWZ0KGJveGVzWzBd
LCBsaW5lc1swXSk7Ci0KLSAgICBhdXRvJiBwcmV2aW91c0Rpc3BsYXlCb3ggPSBib3hlc1sqcHJl
dmlvdXNEaXNwbGF5Qm94SW5kZXhCZWZvcmVPdXRPZkZsb3dCb3hdOwotICAgIGF1dG8mIGN1cnJl
bnRMaW5lID0gbGluZXNbcHJldmlvdXNEaXNwbGF5Qm94LmxpbmVJbmRleCgpXTsKLSAgICBpZiAo
cHJldmlvdXNEaXNwbGF5Qm94LmlzSW5saW5lQm94KCkgJiYgJm91dE9mRmxvd0JveC5wYXJlbnQo
KSA9PSAmcHJldmlvdXNEaXNwbGF5Qm94LmxheW91dEJveCgpKSB7Ci0gICAgICAgIC8vIFNwZWNp
YWwgaGFuZGxpbmcgZm9yIGNhc2VzIHdoZW4gdGhpcyBpcyB0aGUgZmlyc3QgYm94IGluc2lkZSBh
biBpbmxpbmUgYm94OgotICAgICAgICAvLyA8ZGl2PnRleHQ8c3Bhbj48aW1nIHN0eWxlPSJwb3Np
dGlvbjogYWJzb2x1dGUiPmNvbnRlbnQ8L3NwYW4+PC9kaXY+Ci0gICAgICAgIGF1dG8mIGlubGlu
ZUJveCA9IHByZXZpb3VzRGlzcGxheUJveC5sYXlvdXRCb3goKTsKLSAgICAgICAgYXV0byBpbmxp
bmVCb3hEaXNwbGF5Qm94ID0gYm94ZXNbKmZpcnN0RGlzcGxheUJveEluZGV4Rm9yTGF5b3V0Qm94
KGlubGluZUJveCwgYm94ZXMpXTsKLSAgICAgICAgYXV0byBpbmxpbmVDb250ZW50Qm94T2Zmc2V0
ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChpbmxpbmVCb3gpLmJvcmRlckFu
ZFBhZGRpbmdTdGFydCgpOwotICAgICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUpCi0g
ICAgICAgICAgICBpbmxpbmVCb3hEaXNwbGF5Qm94Lm1vdmVIb3Jpem9udGFsbHkoaW5saW5lQ29u
dGVudEJveE9mZnNldCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlubGluZUJveERpc3Bs
YXlCb3gubW92ZVZlcnRpY2FsbHkoaW5saW5lQ29udGVudEJveE9mZnNldCk7Ci0gICAgICAgIHJl
dHVybiBsZWZ0U2lkZVRvTG9naWNhbFRvcExlZnQoaW5saW5lQm94RGlzcGxheUJveCwgbGluZXNb
aW5saW5lQm94RGlzcGxheUJveC5saW5lSW5kZXgoKV0sIGZhbHNlKTsKLSAgICB9Ci0KLSAgICBh
dXRvIHByZXZpb3VzQm94T3ZlcmZsb3dzID0gKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gcHJl
dmlvdXNEaXNwbGF5Qm94LnJpZ2h0KCkgPiBjdXJyZW50TGluZS5yaWdodCgpIDogcHJldmlvdXNE
aXNwbGF5Qm94LmJvdHRvbSgpID4gY3VycmVudExpbmUuYm90dG9tKCkpIHx8IHByZXZpb3VzRGlz
cGxheUJveC5pc0xpbmVCcmVha0JveCgpOwotICAgIGlmICghcHJldmlvdXNCb3hPdmVyZmxvd3Mp
Ci0gICAgICAgIHJldHVybiByaWdodFNpZGVUb0xvZ2ljYWxUb3BMZWZ0KHByZXZpb3VzRGlzcGxh
eUJveCwgY3VycmVudExpbmUpOwotCi0gICAgYXV0byBuZXh0RGlzcGxheUJveEluZGV4QWZ0ZXJP
dXRPZkZsb3cgPSBuZXh0RGlzcGxheUJveEluZGV4KG91dE9mRmxvd0JveCwgYm94ZXMpOwotICAg
IGlmICghbmV4dERpc3BsYXlCb3hJbmRleEFmdGVyT3V0T2ZGbG93KSB7Ci0gICAgICAgIC8vIFRo
aXMgaXMgdGhlIGxhc3QgY29udGVudCBvbiB0aGUgYmxvY2sgYW5kIGl0IGRvZXMgbm90IGZpdCB0
aGUgbGFzdCBsaW5lLgotICAgICAgICByZXR1cm4geyBjb250ZW50TGVmdEFmdGVyTGFzdExpbmUo
Y29uc3RyYWludHMsIGN1cnJlbnRMaW5lLmJvdHRvbSgpLCBmbG9hdGluZ0NvbnRleHQpLCBpc0hv
cml6b250YWxXcml0aW5nTW9kZSA/IGN1cnJlbnRMaW5lLmJvdHRvbSgpIDogY3VycmVudExpbmUu
cmlnaHQoKSB9OwotICAgIH0KLSAgICBhdXRvJiBuZXh0RGlzcGxheUJveCA9IGJveGVzWypuZXh0
RGlzcGxheUJveEluZGV4QWZ0ZXJPdXRPZkZsb3ddOwotICAgIHJldHVybiBsZWZ0U2lkZVRvTG9n
aWNhbFRvcExlZnQobmV4dERpc3BsYXlCb3gsIGxpbmVzW25leHREaXNwbGF5Qm94LmxpbmVJbmRl
eCgpXSk7Ci19Ci0KLUxheW91dFBvaW50IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6c3RhdGlj
UG9zaXRpb25Gb3JPdXRPZkZsb3dCbG9ja0xldmVsQm94KGNvbnN0IEJveCYgb3V0T2ZGbG93Qm94
LCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBjb25zdCBJ
bmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCkgY29uc3QKLXsKLSAgICBBU1NF
UlQob3V0T2ZGbG93Qm94LnN0eWxlKCkuaXNEaXNwbGF5QmxvY2tMZXZlbCgpKTsKLQotICAgIGF1
dG8gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPSBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKS5z
dHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7Ci0gICAgYXV0byYgbGluZXMgPSBkaXNw
bGF5Q29udGVudC5saW5lczsKLSAgICBhdXRvJiBib3hlcyA9IGRpc3BsYXlDb250ZW50LmJveGVz
OwotICAgIGF1dG8gY29udGVudEJveFRvcExlZnQgPSBMYXlvdXRQb2ludCB7IGNvbnN0cmFpbnRz
Lmhvcml6b250YWwoKS5sb2dpY2FsTGVmdCwgY29uc3RyYWludHMubG9naWNhbFRvcCgpIH07Ci0K
LSAgICBpZiAobGluZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVChib3hlcy5pc0VtcHR5
KCkpOwotICAgICAgICByZXR1cm4gY29udGVudEJveFRvcExlZnQ7Ci0gICAgfQotCi0gICAgLy8g
QmxvY2sgbGV2ZWwgYm94ZXMgYXJlIHBsYWNlZCB1bmRlciB0aGUgY3VycmVudCBsaW5lIGFzIGlm
IHRoZXkgd2VyZSBub3JtYWwgaW5mbG93IGJsb2NrIGxldmVsIGJveGVzLgotICAgIGF1dG8gcHJl
dmlvdXNEaXNwbGF5Qm94SW5kZXhCZWZvcmVPdXRPZkZsb3dCb3ggPSBwcmV2aW91c0Rpc3BsYXlC
b3hJbmRleChvdXRPZkZsb3dCb3gsIGJveGVzKTsKLSAgICBpZiAoIXByZXZpb3VzRGlzcGxheUJv
eEluZGV4QmVmb3JlT3V0T2ZGbG93Qm94KQotICAgICAgICByZXR1cm4geyBjb250ZW50Qm94VG9w
TGVmdC54KCksIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gbGluZXNbMF0udG9wKCkgOiBsaW5l
c1swXS5sZWZ0KCkgfTsKLSAgICBhdXRvJiBjdXJyZW50TGluZSA9IGxpbmVzW2JveGVzWypwcmV2
aW91c0Rpc3BsYXlCb3hJbmRleEJlZm9yZU91dE9mRmxvd0JveF0ubGluZUluZGV4KCldOwotICAg
IHJldHVybiB7IGNvbnRlbnRCb3hUb3BMZWZ0LngoKSwgTGF5b3V0VW5pdCB7IGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlID8gY3VycmVudExpbmUuYm90dG9tKCkgOiBjdXJyZW50TGluZS5yaWdodCgp
IH0gfTsKLX0KLQogSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6Omlu
aXRpYWxMaW5lSGVpZ2h0KGJvb2wgaXNGaXJzdExpbmUpIGNvbnN0CiB7CiAgICAgaWYgKGxheW91
dFN0YXRlKCkuaW5TdGFuZGFyZHNNb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnku
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUZvcm1hdHRpbmdHZW9tZXRyeS5oCmluZGV4IDVhYmRlMWU4MGI3YS4uZTUzNmQ5MzBmMGI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaApAQCAt
NTYsOSArNTYsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSW5saW5lUmVjdCBmbGlwVmlzdWFs
UmVjdFRvTG9naWNhbEZvcldyaXRpbmdNb2RlKGNvbnN0IElubGluZVJlY3QmIHZpc3VhbFJlY3Qs
IFdyaXRpbmdNb2RlKTsKIAotICAgIExheW91dFBvaW50IHN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZG
bG93SW5saW5lTGV2ZWxCb3goY29uc3QgQm94JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dD
b250ZW50JiwgY29uc3QgSW5saW5lRGlzcGxheTo6Q29udGVudCYsIGNvbnN0IEZsb2F0aW5nQ29u
dGV4dCYpIGNvbnN0OwotICAgIExheW91dFBvaW50IHN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93
QmxvY2tMZXZlbEJveChjb25zdCBCb3gmLCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRl
bnQmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JikgY29uc3Q7Ci0KICAgICB2b2lkIGFk
anVzdE1hcmdpblN0YXJ0Rm9yTGlzdE1hcmtlcihjb25zdCBFbGVtZW50Qm94JiwgTGF5b3V0VW5p
dCBuZXN0ZWRMaXN0TWFya2VyTWFyZ2luU3RhcnQsIElubGluZUxheW91dFVuaXQgcm9vdElubGlu
ZUJveE9mZnNldCkgY29uc3Q7CiAKICAgICBzdGF0aWMgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9u
dGFsQWxpZ25tZW50T2Zmc2V0KGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUsIElubGluZUxh
eW91dFVuaXQgY29udGVudExvZ2ljYWxSaWdodCwgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNh
bFJpZ2h0LCBJbmxpbmVMYXlvdXRVbml0IGhhbmdpbmdUcmFpbGluZ1dpZHRoLCBjb25zdCBMaW5l
OjpSdW5MaXN0JiBydW5zLCBib29sIGlzTGFzdExpbmUsIHN0ZDo6b3B0aW9uYWw8VGV4dERpcmVj
dGlvbj4gaW5saW5lQmFzZURpcmVjdGlvbk92ZXJyaWRlID0gc3RkOjpudWxsb3B0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUl0ZW1zQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCmluZGV4IDIzYWU2ZDgwODAyNi4u
MzY2M2RlNDIyOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5j
cHAKQEAgLTg2LDkgKzg2LDcgQEAgSW5saW5lSXRlbXNCdWlsZGVyOjpJbmxpbmVJdGVtc0J1aWxk
ZXIoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LAogdm9pZCBJbmxpbmVJ
dGVtc0J1aWxkZXI6OmJ1aWxkKElubGluZUl0ZW1Qb3NpdGlvbiBzdGFydFBvc2l0aW9uKQogewog
ICAgIElubGluZUl0ZW1zIGlubGluZUl0ZW1zOwotICAgIEZvcm1hdHRpbmdTdGF0ZTo6T3V0T2ZG
bG93Qm94TGlzdCBvdXRPZkZsb3dCb3hlczsKLQotICAgIGNvbGxlY3RJbmxpbmVJdGVtcyhpbmxp
bmVJdGVtcywgb3V0T2ZGbG93Qm94ZXMsIHN0YXJ0UG9zaXRpb24pOworICAgIGNvbGxlY3RJbmxp
bmVJdGVtcyhpbmxpbmVJdGVtcywgc3RhcnRQb3NpdGlvbik7CiAKICAgICBpZiAoIXJvb3QoKS5z
dHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSB8fCBjb250ZW50UmVxdWlyZXNWaXN1YWxS
ZW9yZGVyaW5nKCkpIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBwYXJ0aWFs
LCB5ZXQgcGFyYWdyYXBoIGxldmVsIGJpZGkgY29udGVudCBoYW5kbGluZy4KQEAgLTEwOSw3ICsx
MDcsNiBAQCB2b2lkIElubGluZUl0ZW1zQnVpbGRlcjo6YnVpbGQoSW5saW5lSXRlbVBvc2l0aW9u
IHN0YXJ0UG9zaXRpb24pCiAgICAgICAgIG1fZm9ybWF0dGluZ1N0YXRlLmFwcGVuZElubGluZUl0
ZW1zKFdURk1vdmUoaW5saW5lSXRlbXMpKTsKICAgICB9OwogICAgIGFkanVzdElubGluZUZvcm1h
dHRpbmdTdGF0ZVdpdGhOZXdJbmxpbmVJdGVtcygpOwotICAgIG1fZm9ybWF0dGluZ1N0YXRlLnNl
dE91dE9mRmxvd0JveGVzKFdURk1vdmUob3V0T2ZGbG93Qm94ZXMpKTsKIAogI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgLy8gQ2hlY2sgaWYgd2UndmUgZ290IG1hdGNoaW5nIGlubGluZSBib3ggc3Rh
cnQvZW5kIHBhaXJzIGFuZCB1bmlxdWUgaW5saW5lIGxldmVsIGl0ZW1zIChub24tdGV4dCwgbm9u
LWlubGluZSBib3ggaXRlbXMpLgpAQCAtMTkxLDcgKzE4OCw3IEBAIHN0YXRpYyBMYXlvdXRRdWV1
ZSBpbml0aWFsaXplTGF5b3V0UXVldWUoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRl
eHRSb290CiAgICAgcmV0dXJuIGxheW91dFF1ZXVlOwogfQogCi12b2lkIElubGluZUl0ZW1zQnVp
bGRlcjo6Y29sbGVjdElubGluZUl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgRm9ybWF0
dGluZ1N0YXRlOjpPdXRPZkZsb3dCb3hMaXN0JiBvdXRPZkZsb3dCb3hlcywgSW5saW5lSXRlbVBv
c2l0aW9uIHN0YXJ0UG9zaXRpb24pCit2b2lkIElubGluZUl0ZW1zQnVpbGRlcjo6Y29sbGVjdElu
bGluZUl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgSW5saW5lSXRlbVBvc2l0aW9uIHN0
YXJ0UG9zaXRpb24pCiB7CiAgICAgLy8gVHJhdmVyc2UgdGhlIHRyZWUgYW5kIGNyZWF0ZSBpbmxp
bmUgaXRlbXMgb3V0IG9mIGlubGluZSBib3hlcyBhbmQgbGVhZiBub2Rlcy4gVGhpcyBlc3NlbnRp
YWxseSB0dXJucyB0aGUgdHJlZSBpbmxpbmUgc3RydWN0dXJlIGludG8gYSBmbGF0IG9uZS4KICAg
ICAvLyA8c3Bhbj50ZXh0PHNwYW4+PC9zcGFuPjxpbWc+PC9zcGFuPiAtPiBbSW5saW5lQm94U3Rh
cnRdW0lubGluZUxldmVsQm94XVtJbmxpbmVCb3hTdGFydF1bSW5saW5lQm94RW5kXVtJbmxpbmVM
ZXZlbEJveF1bSW5saW5lQm94RW5kXQpAQCAtMjMzLDkgKzIzMCw4IEBAIHZvaWQgSW5saW5lSXRl
bXNCdWlsZGVyOjpjb2xsZWN0SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBG
b3JtYXR0aW5nCiAgICAgICAgIHdoaWxlICghbGF5b3V0UXVldWUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBhdXRvIGxheW91dEJveCA9IGxheW91dFF1ZXVlLnRha2VMYXN0KCk7CiAgICAgICAg
ICAgICBpZiAobGF5b3V0Qm94LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewotICAgICAgICAg
ICAgICAgIC8vIExldCdzIG5vdCBjb25zdHJ1Y3QgSW5saW5lSXRlbXMgZm9yIG91dC1vZi1mbG93
IGNvbnRlbnQgYXMgdGhleSBkb24ndCBwYXJ0aWNpcGF0ZSBpbiB0aGUgaW5saW5lIGxheW91dC4K
LSAgICAgICAgICAgICAgICAvLyBIb3dldmVyIHRvIGJlIGFibGUgdG8gc3RhdGljIHBvc2l0aW9u
aW5nIHRoZW0sIHdlIG5lZWQgdG8gY29tcHV0ZSB0aGVpciBhcHByb3hpbWF0ZSBwb3NpdGlvbnMu
Ci0gICAgICAgICAgICAgICAgb3V0T2ZGbG93Qm94ZXMuYXBwZW5kKGxheW91dEJveCk7CisgICAg
ICAgICAgICAgICAgbV9pc05vbkJpZGlUZXh0QW5kRm9yY2VkTGluZUJyZWFrT25seUNvbnRlbnQg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpbmxpbmVJdGVtcy5hcHBlbmQoeyBsYXlvdXRCb3gs
IElubGluZUl0ZW06OlR5cGU6Ok9wYXF1ZSB9KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobGF5
b3V0Qm94LT5pc0lubGluZVRleHRCb3goKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGlubGlu
ZVRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihsYXlvdXRCb3gpOwogICAgICAgICAg
ICAgICAgIGhhbmRsZVRleHRDb250ZW50KGlubGluZVRleHRCb3gsIGlubGluZUl0ZW1zLCBwYXJ0
aWFsQ29udGVudE9mZnNldChpbmxpbmVUZXh0Qm94KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUl0ZW1zQnVpbGRlci5oCmluZGV4IDVkOWQ3YWM3ZTI0MC4uNTIyZDE4Mzg3NzVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVJdGVtc0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBidWlsZChJbmxpbmVJdGVtUG9zaXRpb24gc3RhcnRQb3NpdGlvbik7CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCBjb2xsZWN0SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmLCBGb3Jt
YXR0aW5nU3RhdGU6Ok91dE9mRmxvd0JveExpc3QmLCBJbmxpbmVJdGVtUG9zaXRpb24gc3RhcnRQ
b3NpdGlvbik7CisgICAgdm9pZCBjb2xsZWN0SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmLCBJbmxp
bmVJdGVtUG9zaXRpb24gc3RhcnRQb3NpdGlvbik7CiAgICAgdm9pZCBicmVha0FuZENvbXB1dGVC
aWRpTGV2ZWxzKElubGluZUl0ZW1zJik7CiAgICAgdm9pZCBjb21wdXRlSW5saW5lVGV4dEl0ZW1X
aWR0aHMoSW5saW5lSXRlbXMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcAppbmRleCAz
M2FmZjkxNDUzMzUuLjQ2ODRlZTg5ZTllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAK
QEAgLTI2MCw2ICsyNjAsMjcgQEAgdm9pZCBMaW5lOjpoYW5kbGVPdmVyZmxvd2luZ05vbkJyZWFr
aW5nU3BhY2UoVHJhaWxpbmdDb250ZW50QWN0aW9uIHRyYWlsaW5nQ29udGUKICAgICBtX2NvbnRl
bnRMb2dpY2FsV2lkdGggLT0gcmVtb3ZlZE9yQ29sbGFwc2VkQ29udGVudFdpZHRoOwogfQogCitj
b25zdCBCb3gqIExpbmU6OnJlbW92ZU92ZXJmbG93aW5nT3VyT2ZGbG93Q29udGVudCgpCit7Cisg
ICAgYXV0byBsYXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXggPSBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4geyB9OworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gbV9ydW5zLnNpemUoKTsgaW5kZXgtLTsp
IHsKKyAgICAgICAgYXV0byYgcnVuID0gbV9ydW5zW2luZGV4XTsKKyAgICAgICAgaWYgKHJ1bi5p
c09wYXF1ZSgpKSB7CisgICAgICAgICAgICBsYXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXggPSBp
bmRleDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghcnVu
LmxvZ2ljYWxXaWR0aCgpICYmIChydW4uaXNJbmxpbmVCb3hTdGFydCgpIHx8IHJ1bi5pc0lubGlu
ZUJveEVuZCgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgaWYgKCFsYXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXgpCisgICAgICAgIHJldHVybiB7
IH07CisgICAgYXV0byogbGFzdFRyYWlsaW5nT3BhcXVlQm94ID0gJm1fcnVuc1sqbGFzdFRyYWls
aW5nT3BhcXVlSXRlbUluZGV4XS5sYXlvdXRCb3goKTsKKyAgICBtX3J1bnMucmVtb3ZlKCpsYXN0
VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXgsIG1fcnVucy5zaXplKCkgLSAqbGFzdFRyYWlsaW5nT3Bh
cXVlSXRlbUluZGV4KTsKKyAgICBBU1NFUlQoIW1fcnVucy5pc0VtcHR5KCkpOworICAgIHJldHVy
biBsYXN0VHJhaWxpbmdPcGFxdWVCb3g7Cit9CisKIHZvaWQgTGluZTo6aGFuZGxlVHJhaWxpbmdI
YW5naW5nQ29udGVudChzdGQ6Om9wdGlvbmFsPEludHJpbnNpY1dpZHRoTW9kZT4gaW50cmluc2lj
V2lkdGhNb2RlLCBJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxBdmFpbGFibGVTcGFjZUZvckNv
bnRlbnQsIGJvb2wgaXNMYXN0Rm9ybWF0dGVkTGluZSkKIHsKICAgICAvLyBodHRwczovL2RyYWZ0
cy5jc3N3Zy5vcmcvY3NzLXRleHQvI2hhbmdpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaAppbmRl
eCA0ZDkzZDczNmJmYTguLjdiMmEwNDNjZDJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaApA
QCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6CiAgICAgSW5saW5lTGF5b3V0VW5pdCBoYW5kbGVUcmFp
bGluZ1RyaW1tYWJsZUNvbnRlbnQoVHJhaWxpbmdDb250ZW50QWN0aW9uKTsKICAgICB2b2lkIGhh
bmRsZVRyYWlsaW5nSGFuZ2luZ0NvbnRlbnQoc3RkOjpvcHRpb25hbDxJbnRyaW5zaWNXaWR0aE1v
ZGU+LCBJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxBdmFpbGFibGVTcGFjZSwgYm9vbCBpc0xh
c3RGb3JtYXR0ZWRMaW5lKTsKICAgICB2b2lkIGhhbmRsZU92ZXJmbG93aW5nTm9uQnJlYWtpbmdT
cGFjZShUcmFpbGluZ0NvbnRlbnRBY3Rpb24sIElubGluZUxheW91dFVuaXQgb3ZlcmZsb3dpbmdX
aWR0aCk7CisgICAgY29uc3QgQm94KiByZW1vdmVPdmVyZmxvd2luZ091ck9mRmxvd0NvbnRlbnQo
KTsKICAgICB2b2lkIHJlc2V0QmlkaUxldmVsRm9yVHJhaWxpbmdXaGl0ZXNwYWNlKFVCaURpTGV2
ZWwgcm9vdEJpZGlMZXZlbCk7CiAgICAgdm9pZCBhcHBseVJ1bkV4cGFuc2lvbihJbmxpbmVMYXlv
dXRVbml0IGhvcml6b250YWxBdmFpbGFibGVTcGFjZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJveC5jcHAKaW5kZXggM2JjMTgyNTIyYjM3Li42MmQ2NjcyZWM4ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3guY3BwCkBAIC0xMzAsNiArMTMwLDEzIEBAIElubGluZVJlY3Qg
TGluZUJveDo6bG9naWNhbEJvcmRlckJveEZvcklubGluZUJveChjb25zdCBCb3gmIGxheW91dEJv
eCwgY29uc3QgQm94CiAgICAgcmV0dXJuIGxvZ2ljYWxSZWN0OwogfQogCitJbmxpbmVSZWN0IExp
bmVCb3g6OmxvZ2ljYWxSZWN0Rm9yT3BhcXVlQm94KGNvbnN0IExpbmU6OlJ1biYgb3BhcXVlUnVu
LCBjb25zdCBCb3hHZW9tZXRyeSYgYm94R2VvbWV0cnkpIGNvbnN0Cit7CisgICAgQVNTRVJUKG9w
YXF1ZVJ1bi5pc09wYXF1ZSgpKTsKKyAgICBBU1NFUlQob3BhcXVlUnVuLmxheW91dEJveCgpLnN0
eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkpOworICAgIHJldHVybiB7IHsgfSwg
bV9yb290SW5saW5lQm94LmxvZ2ljYWxMZWZ0KCkgKyBvcGFxdWVSdW4ubG9naWNhbExlZnQoKSwg
Ym94R2VvbWV0cnkuYm9yZGVyQm94V2lkdGgoKSwgYm94R2VvbWV0cnkuYm9yZGVyQm94SGVpZ2h0
KCkgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgTGF5b3V0CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaAppbmRleCA5NDA1NDliNTc1NTYuLjNlMGUz
OWU3NzczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaApAQCAtNzEsNiArNzEsNyBA
QCBwdWJsaWM6CiAgICAgSW5saW5lUmVjdCBsb2dpY2FsUmVjdEZvclJvb3RJbmxpbmVCb3goKSBj
b25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gubG9naWNhbFJlY3QoKTsgfQogICAgIElubGlu
ZVJlY3QgbG9naWNhbEJvcmRlckJveEZvckF0b21pY0lubGluZUxldmVsQm94KGNvbnN0IEJveCYs
IGNvbnN0IEJveEdlb21ldHJ5JikgY29uc3Q7CiAgICAgSW5saW5lUmVjdCBsb2dpY2FsQm9yZGVy
Qm94Rm9ySW5saW5lQm94KGNvbnN0IEJveCYsIGNvbnN0IEJveEdlb21ldHJ5JikgY29uc3Q7Cisg
ICAgSW5saW5lUmVjdCBsb2dpY2FsUmVjdEZvck9wYXF1ZUJveChjb25zdCBMaW5lOjpSdW4mIG9w
YXF1ZVJ1biwgY29uc3QgQm94R2VvbWV0cnkmKSBjb25zdDsKIAogICAgIGNvbnN0IElubGluZUxl
dmVsQm94KiBpbmxpbmVMZXZlbEJveEZvcihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyBy
ZXR1cm4gY29uc3RfY2FzdDxMaW5lQm94Jj4oKnRoaXMpLmlubGluZUxldmVsQm94Rm9yKGxheW91
dEJveCk7IH0KICAgICBjb25zdCBJbmxpbmVMZXZlbEJveCYgaW5saW5lTGV2ZWxCb3hGb3IoY29u
c3QgTGluZTo6UnVuJiBsaW5lUnVuKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PExpbmVCb3gm
PigqdGhpcykuaW5saW5lTGV2ZWxCb3hGb3IobGluZVJ1bik7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA0MzcwODM3N2VlYjkuLmRmNTY5MjA0NzEyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtNDc3LDYgKzQ3
NywyNiBAQCBMaW5lQ29udGVudCBMaW5lQnVpbGRlcjo6cGxhY2VJbmxpbmVBbmRGbG9hdENvbnRl
bnQoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkcwogICAgICAgICAgICAgICAgIG1fbGluZS5o
YW5kbGVPdmVyZmxvd2luZ05vbkJyZWFraW5nU3BhY2UoaXNMaW5lQnJlYWtBZnRlcldoaXRlc3Bh
Y2UoKSA/IExpbmU6OlRyYWlsaW5nQ29udGVudEFjdGlvbjo6UHJlc2VydmUgOiBMaW5lOjpUcmFp
bGluZ0NvbnRlbnRBY3Rpb246OlJlbW92ZSwgbV9saW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKSAt
IGhvcml6b250YWxBdmFpbGFibGVTcGFjZSk7CiAKICAgICAgICAgICAgIG1fbGluZS5oYW5kbGVU
cmFpbGluZ0hhbmdpbmdDb250ZW50KGludHJpbnNpY1dpZHRoTW9kZSgpLCBob3Jpem9udGFsQXZh
aWxhYmxlU3BhY2UsIGlzTGFzdExpbmUpOworCisgICAgICAgICAgICBhdXRvIG1heU5lZWRPdXRP
ZkZsb3dPdmVyZmxvd1RyaW1taW5nID0gIWlzSW5JbnRyaW5zaWNXaWR0aE1vZGUoKSAmJiBsaW5l
SGFzT3ZlcmZsb3coKSAmJiAhbGluZUNvbnRlbnQucGFydGlhbFRyYWlsaW5nQ29udGVudExlbmd0
aCAmJiBUZXh0VXRpbDo6aXNXcmFwcGluZ0FsbG93ZWQocm9vdFN0eWxlKTsKKyAgICAgICAgICAg
IGlmIChtYXlOZWVkT3V0T2ZGbG93T3ZlcmZsb3dUcmltbWluZykgeworICAgICAgICAgICAgICAg
IC8vIE92ZXJmbG93aW5nIG91dC1vZi1mbG93IGJveGVzIHNob3VsZCB3cmFwIHRoZSB0byBzdWJz
ZXF1ZW50IGxpbmVzIGp1c3QgbGlrZSBhbnkgb3RoZXIgaW4tZmxvdyBjb250ZW50LgorICAgICAg
ICAgICAgICAgIC8vIEhvd2V2ZXIgc2luY2Ugd2UgdGFrZSBhIHNob3J0Y3V0IGJ5IG5vdCBjb25z
aWRlcmluZyBvdXQtb2YtZmxvdyBjb250ZW50IGFzIGluZmxvdyBidXQgaW5zdGVhZCB0cmVhdGlu
ZyBpdCBhcyBhbiBvcGFxdWUgYm94IHdpdGggemVybyB3aWR0aCBhbmQgbm8KKyAgICAgICAgICAg
ICAgICAvLyBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHksIGFueSBvdmVyZmxvd2luZyBvdXQtb2YtZmxv
dyBjb250ZW50IHdvdWxkIHBpbGUgdXAgYXMgdHJhaWxpbmcgY29udGVudC4KKyAgICAgICAgICAg
ICAgICAvLyBBbHRlcm5hdGl2ZWx5IHdlIGNvdWxkIGluaXRpYXRlIGEgdHdvIHBhc3MgbGF5b3V0
IGZpcnN0IHdpdGggb3V0LW9mLWZsb3cgY29udGVudCB0cmVhdGVkIGFzIHRydWUgaW5mbG93IGFu
ZCBhIHNlY29uZCB3aXRob3V0IHRoZW0uCisgICAgICAgICAgICAgICAgQVNTRVJUKCFsaW5lQ29u
dGVudC5yYW5nZS5lbmQub2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogbGFzdFJl
bW92ZWRUcmFpbGluZ0JveCA9IG1fbGluZS5yZW1vdmVPdmVyZmxvd2luZ091ck9mRmxvd0NvbnRl
bnQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGxpbmVFbmRJbmRleCA9IFsmXSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8gaW5kZXggPSBsaW5lQ29udGVudC5yYW5n
ZS5zdGFydC5pbmRleDsgaW5kZXggPCBsaW5lQ29udGVudC5yYW5nZS5lbmQuaW5kZXg7ICsraW5k
ZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJm1faW5saW5lSXRlbXNbaW5k
ZXhdLmxheW91dEJveCgpID09IGxhc3RSZW1vdmVkVHJhaWxpbmdCb3gpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmVDb250ZW50LnJhbmdlLmVuZC5pbmRleDsKKyAg
ICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgbGluZUNvbnRlbnQucmFu
Z2UuZW5kLmluZGV4ID0gbGluZUVuZEluZGV4KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQogICAgICAgICB9OwogICAgICAgICBoYW5kbGVUcmFpbGluZ0NvbnRlbnQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5
Q29udGVudEJ1aWxkZXIuY3BwCmluZGV4IGY1NmJjMDhkZWVlZS4uN2RhMjM0YjgyMzQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5
Q29udGVudEJ1aWxkZXIuY3BwCkBAIC00NTEsNiArNDUxLDcgQEAgdm9pZCBJbmxpbmVEaXNwbGF5
Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NOb25CaWRpQ29udGVudChjb25zdCBMaW5lTGF5b3V0UmVz
dWx0JgogI2VuZGlmCiAgICAgYXV0byB3cml0aW5nTW9kZSA9IHJvb3QoKS5zdHlsZSgpLndyaXRp
bmdNb2RlKCk7CiAgICAgYXV0byBjb250ZW50U3RhcnRJblZpc3VhbE9yZGVyID0gbV9kaXNwbGF5
TGluZS50b3BMZWZ0KCk7CisgICAgYXV0byBvdXRPZkZsb3dDb250ZW50SGFzUHJldmlvdXNJbkZs
b3dTaWJsaW5nV2l0aENvbnRlbnRPckRlY29yYXRpb24gPSBzdGQ6Om9wdGlvbmFsPGJvb2w+IHsg
fTsKIAogICAgIGFwcGVuZFJvb3RJbmxpbmVCb3hEaXNwbGF5Qm94KGZsaXBSb290SW5saW5lQm94
UmVjdFRvVmlzdWFsRm9yV3JpdGluZ01vZGUobGluZUJveC5sb2dpY2FsUmVjdEZvclJvb3RJbmxp
bmVCb3goKSwgd3JpdGluZ01vZGUpLCBsaW5lQm94LnJvb3RJbmxpbmVCb3goKS5oYXNDb250ZW50
KCksIGJveGVzKTsKIApAQCAtNDk4LDcgKzQ5OSwzMiBAQCB2b2lkIElubGluZURpc3BsYXlDb250
ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KGNvbnN0IExpbmVMYXlvdXRSZXN1bHQm
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAobGluZVJ1bi5p
c09wYXF1ZSgpKSB7Ci0gICAgICAgICAgICAvLyBTZXQgZ2VvbWV0cnkgZm9yIHRoaXMgb3BhcXVl
IGJveC4KKyAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlKCku
Ym94R2VvbWV0cnkobGF5b3V0Qm94KTsKKyAgICAgICAgICAgIGlmIChsYXlvdXRCb3guc3R5bGUo
KS5pc09yaWdpbmFsRGlzcGxheUlubGluZVR5cGUoKSkgeworICAgICAgICAgICAgICAgIGF1dG8g
bG9naWNhbFRvcExlZnQgPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yT3BhcXVlQm94KGxpbmVSdW4s
IGJveEdlb21ldHJ5KS50b3BMZWZ0KCk7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcExlZnQu
bW92ZUJ5KGxpbmVCb3gubG9naWNhbFJlY3QoKS50b3BMZWZ0KCkpOworICAgICAgICAgICAgICAg
IGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHRvTGF5b3V0UG9pbnQobG9naWNhbFRvcExl
ZnQpKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGF1dG8gaGFzUHJldmlvdXNJbkZsb3dDb250ZW50ID0gWyZdIHsKKyAgICAgICAgICAgICAg
ICBpZiAoYm94ZXMuc2l6ZSgpID09IDEpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBpZiAob3V0T2ZGbG93Q29udGVudEhhc1ByZXZpb3VzSW5GbG93
U2libGluZ1dpdGhDb250ZW50T3JEZWNvcmF0aW9uICYmICpvdXRPZkZsb3dDb250ZW50SGFzUHJl
dmlvdXNJbkZsb3dTaWJsaW5nV2l0aENvbnRlbnRPckRlY29yYXRpb24pCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIC8vIEZJWE1FOgorICAgICAgICAg
ICAgICAgIGZvciAoYXV0byYgcHJldmlvdXNSdW4gOiBsaW5lTGF5b3V0UmVzdWx0LmlubGluZUNv
bnRlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCZwcmV2aW91c1J1biA9PSAmbGluZVJ1
bikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKExpbmU6OlJ1bjo6aXNDb250ZW50ZnVsT3JIYXNEZWNvcmF0aW9uKHByZXZpb3Vz
UnVuLCBmb3JtYXR0aW5nQ29udGV4dCgpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0
T2ZGbG93Q29udGVudEhhc1ByZXZpb3VzSW5GbG93U2libGluZ1dpdGhDb250ZW50T3JEZWNvcmF0
aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICAvLyBCbG9jayBsZXZlbCBib3hl
cyBhcmUgcGxhY2VkIGVpdGhlciBhdCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUgb3IgInVuZGVyIiBk
ZXBlbmRpbmcgd2hldGhlciB0aGV5IGhhdmUgcHJldmlvdXMgaW5mbG93IHNpYmxpbmcuCisgICAg
ICAgICAgICBhdXRvIGxvZ2ljYWxUb3AgPSBoYXNQcmV2aW91c0luRmxvd0NvbnRlbnQoKSA/IGxp
bmVCb3gubG9naWNhbFJlY3QoKS5ib3R0b20oKSA6IGxpbmVCb3gubG9naWNhbFJlY3QoKS50b3Ao
KTsKKyAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHsgY29uc3RyYWlu
dHMoKS5ob3Jpem9udGFsKCkubG9naWNhbExlZnQsIGxvZ2ljYWxUb3AgfSk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQobGluZVJ1bi5pc0lubGluZUJv
eEVuZCgpIHx8IGxpbmVSdW4uaXNXb3JkQnJlYWtPcHBvcnR1bml0eSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRp
b25MaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxp
bmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCA2OTY4M2Y4NTlkYTMuLjQ4
MzJmNjhhMGJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmNwcApAQCAtNTg4LDggKzU4OCw3IEBAIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gTGluZUxh
eW91dDo6bGF5b3V0KCkKICAgICB9KCk7CiAgICAgYXV0byBwYXJlbnRCbG9ja0xheW91dFN0YXRl
ID0gTGF5b3V0OjpCbG9ja0xheW91dFN0YXRlIHsgbV9ibG9ja0Zvcm1hdHRpbmdTdGF0ZS5mbG9h
dGluZ1N0YXRlKCksIGxpbmVDbGFtcChmbG93KCkpLCB0ZXh0Qm94VHJpbShmbG93KCkpLCBpbnRy
dXNpdmVJbml0aWFsTGV0dGVyQm90dG9tKCkgfTsKICAgICBhdXRvIGlubGluZUxheW91dFN0YXRl
ID0gTGF5b3V0OjpJbmxpbmVMYXlvdXRTdGF0ZSB7IHBhcmVudEJsb2NrTGF5b3V0U3RhdGUsIFdU
Rk1vdmUobV9uZXN0ZWRMaXN0TWFya2VyT2Zmc2V0cykgfTsKLSAgICBhdXRvIGxheW91dFJlc3Vs
dCA9IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGF5b3V0SW5GbG93QW5kRmxvYXRDb250ZW50
KGlubGluZUNvbnRlbnRDb25zdHJhaW50cywgaW5saW5lTGF5b3V0U3RhdGUsIG1fbGluZURhbWFn
ZS5nZXQoKSk7Ci0gICAgbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5sYXlvdXRPdXRPZkZsb3dD
b250ZW50KGlubGluZUNvbnRlbnRDb25zdHJhaW50cywgaW5saW5lTGF5b3V0U3RhdGUsIGxheW91
dFJlc3VsdC5kaXNwbGF5Q29udGVudCk7CisgICAgYXV0byBsYXlvdXRSZXN1bHQgPSBtX2lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmxheW91dChpbmxpbmVDb250ZW50Q29uc3RyYWludHMsIGlubGlu
ZUxheW91dFN0YXRlLCBtX2xpbmVEYW1hZ2UuZ2V0KCkpOwogCiAgICAgYXV0byByZXBhaW50UmVj
dCA9IExheW91dFJlY3QgeyBjb25zdHJ1Y3RDb250ZW50KGlubGluZUxheW91dFN0YXRlLCBXVEZN
b3ZlKGxheW91dFJlc3VsdCkpIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9tb3ZlLWJhY2tpbmctc2hhcmluZy1sYXllci1l
eHBlY3RlZC50eHQKaW5kZXggMjg0ZWUzNzQ1MjlkLi4wMjZjMTg5ZmEwMTggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5
ZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92
ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0CkBAIC0xNiw2ICsxNiw3IEBACiAg
ICAgICAgICAgKGJvdW5kcyA4MDIuMDAgMjAyLjAwKQogICAgICAgICAgIChkcmF3c0NvbnRlbnQg
MSkKICAgICAgICAgICAocmVwYWludCByZWN0cworICAgICAgICAgICAgKHJlY3QgMC4wMCAxLjAw
IDgwMi4wMCAxLjAwKQogICAgICAgICAgICAgKHJlY3QgMjAxLjAwIDUxLjAwIDEwMC4wMCAxMDAu
MDApCiAgICAgICAgICAgICAocmVjdCA0MDEuMDAgNTEuMDAgMTAwLjAwIDEwMC4wMCkKICAgICAg
ICAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL2NvbXBvc2l0
aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9jb21wb3NpdGluZy9yZXBhaW50L21vdmUtYmFja2lu
Zy1zaGFyaW5nLWxheWVyLWV4cGVjdGVkLnR4dAppbmRleCBmM2IzZDBiNzhkODYuLmJkNGViYTY5
NGQ2NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9jb21wb3NpdGlu
Zy9yZXBhaW50L21vdmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNr
aW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0CkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAg
ICAgKGJvdW5kcyA4MDIuMDAgMjAyLjAwKQogICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKICAg
ICAgICAgICAocmVwYWludCByZWN0cworICAgICAgICAgICAgKHJlY3QgMC4wMCAxLjAwIDgwMi4w
MCAxLjAwKQogICAgICAgICAgICAgKHJlY3QgMjAxLjAwIDUxLjAwIDEwMC4wMCAxMDAuMDApCiAg
ICAgICAgICAgICAocmVjdCA0MDEuMDAgNTEuMDAgMTAwLjAwIDEwMC4wMCkKICAgICAgICAgICAp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467472</attachid>
            <date>2023-08-28 15:49:23 -0700</date>
            <delta_ts>2023-08-28 19:36:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-260776-20230828154922.patch</filename>
            <type>text/plain</type>
            <size>37861</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA4ZTkwYzIyNmQxODAwOWM4NGU5YTE1ZjA1NTdjODBjNDViZDZkYzQyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IE1vbiwgMjggQXVnIDIwMjMgMTI6MzA6MzUgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBV
c2Ugb3BhcXVlIElubGluZUl0ZW0gdG8gY29tcHV0ZSBvdXQtb2YtZmxvdyBzdGF0aWMKIHBvc2l0
aW9uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjA3NzYKClJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKTGV0J3MgcmVwbGFjZSBleGlzdGluZyBvdXQtb2YtZmxv
dyBoYW5kbGluZyB3aXRoIHVzaW5nIG9wYXF1ZSBpbmxpbmUgaXRlbXMgaW5zdGVhZC4KMS4gQWRk
IG91dC1vZi1mbG93IGNvbnRlbnQgdG8gdGhlIGlubGluZSBpdGVtIGxpc3QgYXMgb3BhcXVlIGJv
eCBhbmQgcnVuIHJlZ3VsYXIgaW5saW5lIGxheW91dC4KMi4gU2V0IHN0YXRpYyBwb3NpdGlvbiBh
cyBwYXJ0IG9mIHRoZSBpbmxpbmUgZGlzcGxheSBjb250ZW50IGJ1aWxkaW5nIHByb2Nlc3Mgd2hl
cmUgd2UgaXRlcmF0ZSB0aHJvdWdoIHRoZSBydW5zIG9uIHRoZSBjdXJyZW50IGxpbmUuCjMuIFNp
bmNlIHRoaXMgaXMgYWxsIHBhcnQgb2YgX2luZmxvd18gbGF5b3V0LCB3ZSBkb24ndCBuZWVkIHRo
ZSBkZWRpY2F0ZWQgX291dF9vZl9mbG93XyBtZXRob2Qgb24gSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQgYW55bW9yZS4KNC4gUmVtb3ZlIGV4aXN0aW5nIGxvZ2ljIHdoZXJlIHdlIGNvbXB1dGUgdGhl
IHN0YXRpYyBwb3NpdGlvbiBieSBsb29raW5nIGF0IGFkamFjZW50IGRpc3BsYXkgYm94IGdlb21l
dHJpZXMuCgoqIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNo
YXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIv
Y29tcG9zaXRpbmcvcmVwYWludC9tb3ZlLWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3RlZC50
eHQ6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudCk6IERlbGV0ZWQuCihXZWJDb3JlOjpM
YXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JP
dXRPZkZsb3dDb250ZW50KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgoqIFNvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OmZpcnN0RGlzcGxheUJveEluZGV4Rm9yTGF5
b3V0Qm94KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6bGFzdERpc3BsYXlCb3hJbmRleEZv
ckxheW91dEJveCk6IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OnByZXZpb3VzRGlzcGxheUJv
eEluZGV4KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6bmV4dERpc3BsYXlCb3hJbmRleCk6
IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6Y29u
dGVudExlZnRBZnRlckxhc3RMaW5lIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0lubGlu
ZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0Jsb2NrTGV2ZWxCb3ggY29u
c3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHA6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUl0ZW1zQnVpbGRlcjo6YnVpbGQpOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVJdGVtc0J1aWxkZXI6OmNvbGxlY3RJbmxpbmVJdGVtcyk6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmg6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OnJlbW92ZU92ZXJmbG93aW5nT3VyT2ZG
bG93Q29udGVudCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94
Ojpsb2dpY2FsUmVjdEZvck9wYXF1ZUJveCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5oOgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNw
cDoKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQW5kRmxvYXRDb250
ZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6
OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KToKKiBT
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6
bGF5b3V0KToKLS0tCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAg
ICAgfCAgIDIgKy0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwICAgICAg
ICB8ICAzMCArLS0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggICAgICAg
ICAgfCAgIDQgKy0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCAgICAg
ICB8IDE2OCAtLS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dl
b21ldHJ5LmggICAgICAgICB8ICAgMyAtCiAuLi4vaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5j
cHAgICAgICAgICAgICAgfCAgMTIgKy0KIC4uLi9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmgg
ICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZS5jcHAgIHwgIDIxICsrKwogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZS5oICAgIHwgICAxICsKIC4uLi9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAgICAgICAg
ICAgICAgICAgICB8ICAgNyArCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lQm94LmggfCAgIDEgKwogLi4uL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAgICAgICAg
ICAgICAgIHwgIDIwICsrKwogLi4uL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
LmNwcCAgIHwgIDI4ICsrLQogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
Y3BwICAgIHwgICAzICstCiAuLi4vbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQu
dHh0ICAgfCAgIDEgKwogLi4uL21vdmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVkLnR4
dCAgIHwgICAxICsKIDE2IGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDIxNSBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAKaW5kZXggNjJkMDY3MWUwNzViLi5jMDE1
M2JhYTgxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvZmxleC9GbGV4TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAKQEAgLTQ0NSw3ICs0NDUsNyBAQCBG
bGV4TGF5b3V0OjpTaXplTGlzdCBGbGV4TGF5b3V0OjpoeXBvdGhldGljYWxDcm9zc1NpemVGb3JG
bGV4SXRlbXMoY29uc3QgTG9naWNhbAogICAgICAgICAgICAgYXV0byYgaW5saW5lRm9ybWF0dGlu
Z1N0YXRlID0gZmxleEZvcm1hdHRpbmdDb250ZXh0KCkubGF5b3V0U3RhdGUoKS5lbnN1cmVJbmxp
bmVGb3JtYXR0aW5nU3RhdGUoZmxleEl0ZW1Cb3gpOwogICAgICAgICAgICAgYXV0byBpbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCA9IElubGluZUZvcm1hdHRpbmdDb250ZXh0IHsgZmxleEl0ZW1Cb3gs
IGlubGluZUZvcm1hdHRpbmdTdGF0ZSB9OwogICAgICAgICAgICAgYXV0byBjb25zdHJhaW50c0Zv
ckluRmxvd0NvbnRlbnQgPSBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQgeyBIb3Jpem9udGFs
Q29uc3RyYWludHMgeyB7IH0sIGZsZXhJdGVtc01haW5TaXplTGlzdFtmbGV4SXRlbUluZGV4XSB9
LCB7IH0gfTsKLSAgICAgICAgICAgIGF1dG8gbGF5b3V0UmVzdWx0ID0gaW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQubGF5b3V0SW5GbG93QW5kRmxvYXRDb250ZW50KHsgY29uc3RyYWludHNGb3JJbkZs
b3dDb250ZW50LCB7IH0gfSwgaW5saW5lTGF5b3V0U3RhdGUpOworICAgICAgICAgICAgYXV0byBs
YXlvdXRSZXN1bHQgPSBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5sYXlvdXQoeyBjb25zdHJhaW50
c0ZvckluRmxvd0NvbnRlbnQsIHsgfSB9LCBpbmxpbmVMYXlvdXRTdGF0ZSk7CiAgICAgICAgICAg
ICByZXR1cm4gTGF5b3V0VW5pdCB7IGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVudC5saW5lcy5s
YXN0KCkubGluZUJveExvZ2ljYWxSZWN0KCkubWF4WSgpIH07CiAgICAgICAgIH07CiAgICAgICAg
IGF1dG8gdXNlZENyb3NzU2l6ZSA9IGNyb3NzU2l6ZUFmdGVyUGVyZm9ybWluZ0xheW91dCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4
IGJkYjI4OGJjMmI5ZS4uOWZiYjcyZTljNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC02NywxMCArNjcsMTAgQEAgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEVsZW1lbnRCb3gm
IGZvcm1hdHRpbmdDb24KIHsKIH0KIAotSW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpsYXlvdXRJbkZsb3dBbmRGbG9hdENvbnRlbnQoY29uc3QgQ29uc3RyYWludHNG
b3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50cywgSW5saW5lTGF5b3V0U3RhdGUmIGlubGluZUxh
eW91dFN0YXRlLCBjb25zdCBJbmxpbmVEYW1hZ2UqIGxpbmVEYW1hZ2UpCitJbmxpbmVMYXlvdXRS
ZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dChjb25zdCBDb25zdHJhaW50c0Zv
cklubGluZUNvbnRlbnQmIGNvbnN0cmFpbnRzLCBJbmxpbmVMYXlvdXRTdGF0ZSYgaW5saW5lTGF5
b3V0U3RhdGUsIGNvbnN0IElubGluZURhbWFnZSogbGluZURhbWFnZSkKIHsKICAgICBhdXRvJiBm
bG9hdGluZ1N0YXRlID0gaW5saW5lTGF5b3V0U3RhdGUucGFyZW50QmxvY2tMYXlvdXRTdGF0ZSgp
LmZsb2F0aW5nU3RhdGUoKTsKLSAgICBpZiAoIXJvb3QoKS5oYXNJbkZsb3dDaGlsZCgpKSB7Cisg
ICAgaWYgKCFyb290KCkuaGFzSW5GbG93Q2hpbGQoKSAmJiAhcm9vdCgpLmhhc091dE9mRmxvd0No
aWxkKCkpIHsKICAgICAgICAgLy8gRmxvYXQgb25seSBjb250ZW50IGRvZXMgbm90IHN1cHBvcnQg
cGFydGlhbCBsYXlvdXQuCiAgICAgICAgIEFTU0VSVCghbGluZURhbWFnZSk7CiAgICAgICAgIGxh
eW91dEZsb2F0Q29udGVudE9ubHkoY29uc3RyYWludHMsIGZsb2F0aW5nU3RhdGUpOwpAQCAtMTE0
LDEyICsxMTQsNiBAQCBJbmxpbmVMYXlvdXRSZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dEluRmxvd0FuZEZsb2F0Q29udGVudChjb25zdCBDbwogICAgIHJldHVybiBsaW5lTGF5
b3V0KGxpbmVCdWlsZGVyLCBpbmxpbmVJdGVtcywgbmVlZHNMYXlvdXRSYW5nZSwgcHJldmlvdXNM
aW5lKCksIGNvbnN0cmFpbnRzLCBpbmxpbmVMYXlvdXRTdGF0ZSwgbGluZURhbWFnZSk7CiB9CiAK
LXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0NvbnRlbnQoY29u
c3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50cywgSW5saW5lTGF5b3V0
U3RhdGUmIGlubGluZUxheW91dFN0YXRlLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBp
bmxpbmVEaXNwbGF5Q29udGVudCkKLXsKLSAgICAvLyBDb2xsZWN0aW5nIG91dC1vZi1mbG93IGJv
eGVzIGhhcHBlbnMgZHVyaW5nIHRoZSBpbi1mbG93IHBoYXNlLgotICAgIGNvbXB1dGVTdGF0aWNQ
b3NpdGlvbkZvck91dE9mRmxvd0NvbnRlbnQoZm9ybWF0dGluZ1N0YXRlKCkub3V0T2ZGbG93Qm94
ZXMoKSwgY29uc3RyYWludHMsIGlubGluZURpc3BsYXlDb250ZW50LCBpbmxpbmVMYXlvdXRTdGF0
ZS5wYXJlbnRCbG9ja0xheW91dFN0YXRlKCkuZmxvYXRpbmdTdGF0ZSgpKTsKLX0KLQogSW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRy
aW5zaWNTaXplcyhjb25zdCBJbmxpbmVEYW1hZ2UqIGxpbmVEYW1hZ2UpCiB7CiAgICAgYXV0byYg
aW5saW5lRm9ybWF0dGluZ1N0YXRlID0gZm9ybWF0dGluZ1N0YXRlKCk7CkBAIC0yNDMsMjYgKzIz
Nyw2IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEZsb2F0Q29udGVudE9u
bHkoY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDCiAgICAgfQogfQogCi12b2lkIElubGluZUZv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50
KGNvbnN0IEZvcm1hdHRpbmdTdGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCYgb3V0T2ZGbG93Qm94ZXMs
IGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3RyYWludHMsIGNvbnN0IElu
bGluZURpc3BsYXk6OkNvbnRlbnQmIGRpc3BsYXlDb250ZW50LCBjb25zdCBGbG9hdGluZ1N0YXRl
JiBmbG9hdGluZ1N0YXRlKQotewotICAgIC8vIFRoaXMgZnVuY3Rpb24gY29tcHV0ZXMgdGhlIHN0
YXRpYyBwb3NpdGlvbiBmb3Igb3V0LW9mLWZsb3cgY29udGVudCBpbnNpZGUgdGhlIGlubGluZSBm
b3JtYXR0aW5nIGNvbnRleHQuCi0gICAgLy8gQXMgcGVyIHNwZWMsIHRoZSBzdGF0aWMgcG9zaXRp
b24gb2YgYW4gb3V0LW9mLWZsb3cgYm94IGlzIGNvbXB1dGVkIGFzIGlmIHRoZSBwb3NpdGlvbiB3
YXMgc2V0IHRvIHN0YXRpYy4KLSAgICAvLyBIb3dldmVyIGl0IGRvZXMgbm90IG1lYW4gdGhhdCB0
aGUgb3V0LW9mLWZsb3cgYm94IHNob3VsZCBiZSBpbnZvbHZlZCBpbiB0aGUgaW5saW5lIGxheW91
dCBwcm9jZXNzLgotICAgIC8vIEluc3RlYWQgd2UgZmlndXJlIG91dCB0aGlzIHN0YXRpYyBwb3Np
dGlvbiBhZnRlciB0aGUgaW5saW5lIGxheW91dCBieSBsb29raW5nIGF0IHRoZSBwcmV2aW91cy9u
ZXh0IHNpYmxpbmcgKG9yIHBhcmVudCkgYm94J3MgZ2VvbWV0cnkgYW5kCi0gICAgLy8gcGxhY2Ug
dGhlIG91dC1vZi1mbG93IGJveCBhdCB0aGUgbG9naWNhbCByaWdodCBwb3NpdGlvbi4KLSAgICBh
dXRvJiBmb3JtYXR0aW5nR2VvbWV0cnkgPSB0aGlzLT5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKLSAg
ICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKLSAgICBh
dXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29udGV4dCB7ICp0aGlzLCBmbG9hdGluZ1N0
YXRlIH07Ci0KLSAgICBmb3IgKGF1dG8mIG91dE9mRmxvd0JveCA6IG91dE9mRmxvd0JveGVzKSB7
Ci0gICAgICAgIGlmIChvdXRPZkZsb3dCb3gtPnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxp
bmVUeXBlKCkpIHsKLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5ib3hHZW9tZXRyeShvdXRP
ZkZsb3dCb3gpLnNldExvZ2ljYWxUb3BMZWZ0KGZvcm1hdHRpbmdHZW9tZXRyeS5zdGF0aWNQb3Np
dGlvbkZvck91dE9mRmxvd0lubGluZUxldmVsQm94KG91dE9mRmxvd0JveCwgY29uc3RyYWludHMs
IGRpc3BsYXlDb250ZW50LCBmbG9hdGluZ0NvbnRleHQpKTsKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9Ci0gICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5ib3hHZW9tZXRyeShvdXRPZkZs
b3dCb3gpLnNldExvZ2ljYWxUb3BMZWZ0KGZvcm1hdHRpbmdHZW9tZXRyeS5zdGF0aWNQb3NpdGlv
bkZvck91dE9mRmxvd0Jsb2NrTGV2ZWxCb3gob3V0T2ZGbG93Qm94LCBjb25zdHJhaW50cywgZGlz
cGxheUNvbnRlbnQpKTsKLSAgICB9Ci19Ci0KIHN0YXRpYyBMaW5lRW5kaW5nRWxsaXBzaXNQb2xp
Y3kgbGluZUVuZGluZ0VsbGlwc2lzUG9saWN5KGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUs
IHNpemVfdCBudW1iZXJPZkxpbmVzLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbnVtYmVyT2ZWaXNp
YmxlTGluZXNBbGxvd2VkKQogewogICAgIC8vIFdlIG1heSBoYXZlIHBhc3NlZCB0aGUgbGluZS1j
bGFtcCBsaW5lIHdpdGggb3ZlcmZsb3cgdmlzaWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDExNDA2OGYxYTc1Mi4uZDhiYjEyYmQwYTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAg
LTU5LDggKzU5LDcgQEAgY2xhc3MgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQgZmluYWwgOiBwdWJs
aWMgRm9ybWF0dGluZ0NvbnRleHQgewogcHVibGljOgogICAgIElubGluZUZvcm1hdHRpbmdDb250
ZXh0KGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgSW5saW5lRm9ybWF0
dGluZ1N0YXRlJik7CiAKLSAgICBJbmxpbmVMYXlvdXRSZXN1bHQgbGF5b3V0SW5GbG93QW5kRmxv
YXRDb250ZW50KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIElubGluZUxheW91
dFN0YXRlJiwgY29uc3QgSW5saW5lRGFtYWdlKiA9IG51bGxwdHIpOwotICAgIHZvaWQgbGF5b3V0
T3V0T2ZGbG93Q29udGVudChjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmLCBJbmxp
bmVMYXlvdXRTdGF0ZSYsIGNvbnN0IElubGluZURpc3BsYXk6OkNvbnRlbnQmKTsKKyAgICBJbmxp
bmVMYXlvdXRSZXN1bHQgbGF5b3V0KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYs
IElubGluZUxheW91dFN0YXRlJiwgY29uc3QgSW5saW5lRGFtYWdlKiA9IG51bGxwdHIpOwogICAg
IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgY29tcHV0ZWRJbnRyaW5zaWNTaXplcyhjb25zdCBJ
bmxpbmVEYW1hZ2UqKTsKICAgICBMYXlvdXRVbml0IG1heGltdW1Db250ZW50U2l6ZSgpOwogCkBA
IC03MSw3ICs3MCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5saW5lTGF5b3V0UmVzdWx0
IGxpbmVMYXlvdXQoQWJzdHJhY3RMaW5lQnVpbGRlciYsIGNvbnN0IElubGluZUl0ZW1zJiwgSW5s
aW5lSXRlbVJhbmdlLCBzdGQ6Om9wdGlvbmFsPFByZXZpb3VzTGluZT4sIGNvbnN0IENvbnN0cmFp
bnRzRm9ySW5saW5lQ29udGVudCYsIElubGluZUxheW91dFN0YXRlJiwgY29uc3QgSW5saW5lRGFt
YWdlKiA9IG51bGxwdHIpOwogICAgIHZvaWQgbGF5b3V0RmxvYXRDb250ZW50T25seShjb25zdCBD
b25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmLCBGbG9hdGluZ1N0YXRlJik7Ci0gICAgdm9pZCBj
b21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGNvbnN0IEZvcm1hdHRpbmdT
dGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVu
dCYsIGNvbnN0IElubGluZURpc3BsYXk6OkNvbnRlbnQmLCBjb25zdCBGbG9hdGluZ1N0YXRlJik7
CiAKICAgICB2b2lkIGNvbGxlY3RDb250ZW50SWZOZWVkZWQoKTsKICAgICBJbmxpbmVSZWN0IGNy
ZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShzaXplX3QgbGluZUluZGV4LCBjb25zdCBMaW5lTGF5
b3V0UmVzdWx0JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgY29uc3QgSW5s
aW5lTGF5b3V0U3RhdGUmLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCAzZWNhYzNjYzc1
MmIuLjA5YWI2OTQxMjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0yMDksMTc0ICsyMDksNiBAQCBJbmxpbmVMYXlvdXRVbml0
IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRUZXh0SW5kZW50KElzSW50cmluc2lj
V2lkdGhNbwogICAgIHJldHVybiB7IG1pbmltdW1WYWx1ZUZvckxlbmd0aCh0ZXh0SW5kZW50LCBh
dmFpbGFibGVXaWR0aCkgfTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaXJz
dERpc3BsYXlCb3hJbmRleEZvckxheW91dEJveChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3Qg
SW5saW5lRGlzcGxheTo6Qm94ZXMmIGRpc3BsYXlCb3hlcykKLXsKLSAgICAvLyBGSVhNRTogQnVp
bGQgYSBmaXJzdC9sYXN0IGhhc2htYXAgZm9yIHRoZXNlIGJveGVzLgotICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBkaXNwbGF5Qm94ZXMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAg
ICAgIGlmIChkaXNwbGF5Qm94ZXNbaW5kZXhdLmlzUm9vdElubGluZUJveCgpKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGlmICgmZGlzcGxheUJveGVzW2luZGV4XS5sYXlvdXRCb3go
KSA9PSAmbGF5b3V0Qm94KQotICAgICAgICAgICAgcmV0dXJuIGluZGV4OwotICAgIH0KLSAgICBy
ZXR1cm4geyB9OwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxhc3REaXNwbGF5
Qm94SW5kZXhGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IElubGluZURp
c3BsYXk6OkJveGVzJiBkaXNwbGF5Qm94ZXMpCi17Ci0gICAgLy8gRklYTUU6IEJ1aWxkIGEgZmly
c3QvbGFzdCBoYXNobWFwIGZvciB0aGVzZSBib3hlcy4KLSAgICBmb3IgKGF1dG8gaW5kZXggPSBk
aXNwbGF5Qm94ZXMuc2l6ZSgpOyBpbmRleC0tOykgewotICAgICAgICBpZiAoZGlzcGxheUJveGVz
W2luZGV4XS5pc1Jvb3RJbmxpbmVCb3goKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBpZiAoJmRpc3BsYXlCb3hlc1tpbmRleF0ubGF5b3V0Qm94KCkgPT0gJmxheW91dEJveCkKLSAg
ICAgICAgICAgIHJldHVybiBpbmRleDsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwcmV2aW91c0Rpc3BsYXlCb3hJbmRleChjb25zdCBC
b3gmIG91dE9mRmxvd0JveCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGRpc3BsYXlCb3hl
cykKLXsKLSAgICBhdXRvIHByZXZpb3VzRGlzcGxheUJveEluZGV4T2YgPSBbJl0gKGF1dG8mIGxh
eW91dEJveCkgLT4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IHsKLSAgICAgICAgZm9yIChhdXRvKiBi
b3ggPSAmbGF5b3V0Qm94OyBib3g7IGJveCA9IGJveC0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCkp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvIGRpc3BsYXlCb3hJbmRleCA9IGxhc3REaXNwbGF5Qm94
SW5kZXhGb3JMYXlvdXRCb3goKmJveCwgZGlzcGxheUJveGVzKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZGlzcGxheUJveEluZGV4OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB7IH07Ci0g
ICAgfTsKLQotICAgIGF1dG8qIGNhbmRpZGF0ZUJveCA9IG91dE9mRmxvd0JveC5wcmV2aW91c0lu
Rmxvd1NpYmxpbmcoKTsKLSAgICBpZiAoIWNhbmRpZGF0ZUJveCkKLSAgICAgICAgY2FuZGlkYXRl
Qm94ID0gb3V0T2ZGbG93Qm94LnBhcmVudCgpLmlzSW5saW5lQm94KCkgPyAmb3V0T2ZGbG93Qm94
LnBhcmVudCgpIDogbnVsbHB0cjsKLSAgICB3aGlsZSAoY2FuZGlkYXRlQm94KSB7Ci0gICAgICAg
IGlmIChhdXRvIGRpc3BsYXlCb3hJbmRleCA9IHByZXZpb3VzRGlzcGxheUJveEluZGV4T2YoKmNh
bmRpZGF0ZUJveCkpCi0gICAgICAgICAgICByZXR1cm4gZGlzcGxheUJveEluZGV4OwotICAgICAg
ICBjYW5kaWRhdGVCb3ggPSBjYW5kaWRhdGVCb3gtPnBhcmVudCgpLmlzSW5saW5lQm94KCkgPyAm
Y2FuZGlkYXRlQm94LT5wYXJlbnQoKSA6IG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiB7IH07
Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV4dERpc3BsYXlCb3hJbmRleChj
b25zdCBCb3gmIG91dE9mRmxvd0JveCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGRpc3Bs
YXlCb3hlcykKLXsKLSAgICBhdXRvIG5leHREaXNwbGF5Qm94SW5kZXhPZiA9IFsmXSAoYXV0byYg
bGF5b3V0Qm94KSAtPiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gewotICAgICAgICBmb3IgKGF1dG8q
IGJveCA9ICZsYXlvdXRCb3g7IGJveDsgYm94ID0gYm94LT5uZXh0SW5GbG93U2libGluZygpKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byBkaXNwbGF5Qm94SW5kZXggPSBmaXJzdERpc3BsYXlCb3hJ
bmRleEZvckxheW91dEJveCgqYm94LCBkaXNwbGF5Qm94ZXMpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBkaXNwbGF5Qm94SW5kZXg7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICB9OwotCi0gICAgYXV0byogY2FuZGlkYXRlQm94ID0gb3V0T2ZGbG93Qm94Lm5leHRJbkZsb3dT
aWJsaW5nKCk7Ci0gICAgaWYgKCFjYW5kaWRhdGVCb3gpCi0gICAgICAgIGNhbmRpZGF0ZUJveCA9
IG91dE9mRmxvd0JveC5wYXJlbnQoKS5pc0lubGluZUJveCgpID8gb3V0T2ZGbG93Qm94LnBhcmVu
dCgpLm5leHRJbkZsb3dTaWJsaW5nKCkgOiBudWxscHRyOwotICAgIHdoaWxlIChjYW5kaWRhdGVC
b3gpIHsKLSAgICAgICAgaWYgKGF1dG8gZGlzcGxheUJveEluZGV4ID0gbmV4dERpc3BsYXlCb3hJ
bmRleE9mKCpjYW5kaWRhdGVCb3gpKQotICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlCb3hJbmRl
eDsKLSAgICAgICAgY2FuZGlkYXRlQm94ID0gY2FuZGlkYXRlQm94LT5wYXJlbnQoKS5pc0lubGlu
ZUJveCgpID8gY2FuZGlkYXRlQm94LT5wYXJlbnQoKS5uZXh0SW5GbG93U2libGluZygpIDogbnVs
bHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotSW5saW5lTGF5b3V0VW5pdCBJbmxp
bmVGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnRlbnRMZWZ0QWZ0ZXJMYXN0TGluZShjb25zdCBDb25z
dHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBzdGQ6Om9wdGlvbmFsPElubGlu
ZUxheW91dFVuaXQ+IGxhc3RMaW5lTG9naWNhbEJvdHRvbSwgY29uc3QgRmxvYXRpbmdDb250ZXh0
JiBmbG9hdGluZ0NvbnRleHQpIGNvbnN0Ci17Ci0gICAgYXV0byBjb250ZW50SGFzUHJldmlvdXNM
aW5lID0gbGFzdExpbmVMb2dpY2FsQm90dG9tID8gc3RkOjptYWtlX29wdGlvbmFsKHRydWUpIDog
c3RkOjpudWxsb3B0OwotICAgIGF1dG8gdGV4dEluZGVudCA9IGNvbXB1dGVkVGV4dEluZGVudChJ
c0ludHJpbnNpY1dpZHRoTW9kZTo6Tm8sIGNvbnRlbnRIYXNQcmV2aW91c0xpbmUsIGNvbnN0cmFp
bnRzLmhvcml6b250YWwoKS5sb2dpY2FsV2lkdGgpOwotICAgIGF1dG8gZmxvYXRDb25zdHJhaW50
cyA9IGZsb2F0Q29uc3RyYWludHNGb3JMaW5lKGxhc3RMaW5lTG9naWNhbEJvdHRvbS52YWx1ZV9v
cihjb25zdHJhaW50cy5sb2dpY2FsVG9wKCkpLCAwLCBmbG9hdGluZ0NvbnRleHQpOwotICAgIGF1
dG8gbGluZUJveExlZnQgPSBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQ7Ci0g
ICAgYXV0byBsaW5lQm94V2lkdGggPSBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbFdp
ZHRoOwotICAgIC8vIEZJWE1FOiBBZGQgbWlzc2luZyBSVEwgc3VwcG9ydC4KLSAgICBpZiAoZmxv
YXRDb25zdHJhaW50cy5sZWZ0KSB7Ci0gICAgICAgIGF1dG8gZmxvYXRPZmZzZXQgPSBzdGQ6Om1h
eCgwX2x1LCBmbG9hdENvbnN0cmFpbnRzLmxlZnQtPnggLSBjb25zdHJhaW50cy5ob3Jpem9udGFs
KCkubG9naWNhbExlZnQpOwotICAgICAgICBsaW5lQm94TGVmdCArPSBmbG9hdE9mZnNldDsKLSAg
ICAgICAgbGluZUJveFdpZHRoIC09IGZsb2F0T2Zmc2V0OwotICAgIH0KLSAgICBpZiAoZmxvYXRD
b25zdHJhaW50cy5yaWdodCkgewotICAgICAgICBhdXRvIGxpbmVCb3hSaWdodCA9IChjb25zdHJh
aW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQgKyBjb25zdHJhaW50cy5ob3Jpem9udGFsKCku
bG9naWNhbFdpZHRoKTsKLSAgICAgICAgYXV0byBmbG9hdE9mZnNldCA9IHN0ZDo6bWF4KDBfbHUs
IGxpbmVCb3hSaWdodCAtIGZsb2F0Q29uc3RyYWludHMucmlnaHQtPngpOwotICAgICAgICBsaW5l
Qm94V2lkdGggLT0gZmxvYXRPZmZzZXQ7Ci0gICAgfQotICAgIGxpbmVCb3hMZWZ0ICs9IHRleHRJ
bmRlbnQ7Ci0gICAgYXV0byByb290SW5saW5lQm94TGVmdCA9IGhvcml6b250YWxBbGlnbm1lbnRP
ZmZzZXQoZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCkuc3R5bGUoKSwgeyB9LCBsaW5lQm94V2lk
dGgsIHsgfSwgeyB9LCB0cnVlKTsKLSAgICByZXR1cm4gbGluZUJveExlZnQgKyByb290SW5saW5l
Qm94TGVmdDsKLX0KLQotTGF5b3V0UG9pbnQgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0
aWNQb3NpdGlvbkZvck91dE9mRmxvd0lubGluZUxldmVsQm94KGNvbnN0IEJveCYgb3V0T2ZGbG93
Qm94LCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBjb25z
dCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCwgY29uc3QgRmxvYXRpbmdD
b250ZXh0JiBmbG9hdGluZ0NvbnRleHQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG91dE9mRmxvd0Jv
eC5zdHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5SW5saW5lVHlwZSgpKTsKLSAgICBhdXRvJiBsaW5l
cyA9IGRpc3BsYXlDb250ZW50LmxpbmVzOwotICAgIGF1dG8mIGJveGVzID0gZGlzcGxheUNvbnRl
bnQuYm94ZXM7Ci0KLSAgICBpZiAobGluZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVChi
b3hlcy5pc0VtcHR5KCkpOwotICAgICAgICByZXR1cm4geyBjb250ZW50TGVmdEFmdGVyTGFzdExp
bmUoY29uc3RyYWludHMsIHsgfSwgZmxvYXRpbmdDb250ZXh0KSwgY29uc3RyYWludHMubG9naWNh
bFRvcCgpIH07Ci0gICAgfQotCi0gICAgYXV0byBpc0hvcml6b250YWxXcml0aW5nTW9kZSA9IGZv
cm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLnN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KTsKLSAgICBhdXRvIGxlZnRTaWRlVG9Mb2dpY2FsVG9wTGVmdCA9IFsmXSAoYXV0byYgZGlzcGxh
eUJveCwgYXV0byYgbGluZSwgYm9vbCBtYXlOZWVkTWFyZ2luQWRqdXN0bWVudCA9IHRydWUpIHsK
LSAgICAgICAgYXV0byBtYXJnaW5TdGFydCA9IExheW91dFVuaXQgeyB9OwotICAgICAgICBpZiAo
bWF5TmVlZE1hcmdpbkFkanVzdG1lbnQgJiYgZGlzcGxheUJveC5pc05vblJvb3RJbmxpbmVMZXZl
bEJveCgpKQotICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdl
b21ldHJ5Rm9yQm94KGRpc3BsYXlCb3gubGF5b3V0Qm94KCkpLm1hcmdpblN0YXJ0KCk7Ci0gICAg
ICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IExheW91dFBvaW50KGRpc3BsYXlC
b3gubGVmdCgpIC0gbWFyZ2luU3RhcnQsIGxpbmUudG9wKCkpIDogTGF5b3V0UG9pbnQoZGlzcGxh
eUJveC50b3AoKSAtIG1hcmdpblN0YXJ0LCBsaW5lLmxlZnQoKSk7Ci0gICAgfTsKLSAgICBhdXRv
IHJpZ2h0U2lkZVRvTG9naWNhbFRvcExlZnQgPSBbJl0gKGF1dG8mIGRpc3BsYXlCb3gsIGF1dG8m
IGxpbmUpIHsKLSAgICAgICAgYXV0byBtYXJnaW5FbmQgPSBMYXlvdXRVbml0IHsgfTsKLSAgICAg
ICAgaWYgKGRpc3BsYXlCb3guaXNOb25Sb290SW5saW5lTGV2ZWxCb3goKSkKLSAgICAgICAgICAg
IG1hcmdpbkVuZCA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goZGlzcGxheUJv
eC5sYXlvdXRCb3goKSkubWFyZ2luRW5kKCk7Ci0gICAgICAgIHJldHVybiBpc0hvcml6b250YWxX
cml0aW5nTW9kZSA/IExheW91dFBvaW50KGRpc3BsYXlCb3gucmlnaHQoKSArIG1hcmdpbkVuZCwg
bGluZS50b3AoKSkgOiBMYXlvdXRQb2ludChkaXNwbGF5Qm94LmJvdHRvbSgpICsgbWFyZ2luRW5k
LCBsaW5lLmxlZnQoKSk7Ci0gICAgfTsKLQotICAgIGF1dG8gcHJldmlvdXNEaXNwbGF5Qm94SW5k
ZXhCZWZvcmVPdXRPZkZsb3dCb3ggPSBwcmV2aW91c0Rpc3BsYXlCb3hJbmRleChvdXRPZkZsb3dC
b3gsIGJveGVzKTsKLSAgICBpZiAoIXByZXZpb3VzRGlzcGxheUJveEluZGV4QmVmb3JlT3V0T2ZG
bG93Qm94KQotICAgICAgICByZXR1cm4gbGVmdFNpZGVUb0xvZ2ljYWxUb3BMZWZ0KGJveGVzWzBd
LCBsaW5lc1swXSk7Ci0KLSAgICBhdXRvJiBwcmV2aW91c0Rpc3BsYXlCb3ggPSBib3hlc1sqcHJl
dmlvdXNEaXNwbGF5Qm94SW5kZXhCZWZvcmVPdXRPZkZsb3dCb3hdOwotICAgIGF1dG8mIGN1cnJl
bnRMaW5lID0gbGluZXNbcHJldmlvdXNEaXNwbGF5Qm94LmxpbmVJbmRleCgpXTsKLSAgICBpZiAo
cHJldmlvdXNEaXNwbGF5Qm94LmlzSW5saW5lQm94KCkgJiYgJm91dE9mRmxvd0JveC5wYXJlbnQo
KSA9PSAmcHJldmlvdXNEaXNwbGF5Qm94LmxheW91dEJveCgpKSB7Ci0gICAgICAgIC8vIFNwZWNp
YWwgaGFuZGxpbmcgZm9yIGNhc2VzIHdoZW4gdGhpcyBpcyB0aGUgZmlyc3QgYm94IGluc2lkZSBh
biBpbmxpbmUgYm94OgotICAgICAgICAvLyA8ZGl2PnRleHQ8c3Bhbj48aW1nIHN0eWxlPSJwb3Np
dGlvbjogYWJzb2x1dGUiPmNvbnRlbnQ8L3NwYW4+PC9kaXY+Ci0gICAgICAgIGF1dG8mIGlubGlu
ZUJveCA9IHByZXZpb3VzRGlzcGxheUJveC5sYXlvdXRCb3goKTsKLSAgICAgICAgYXV0byBpbmxp
bmVCb3hEaXNwbGF5Qm94ID0gYm94ZXNbKmZpcnN0RGlzcGxheUJveEluZGV4Rm9yTGF5b3V0Qm94
KGlubGluZUJveCwgYm94ZXMpXTsKLSAgICAgICAgYXV0byBpbmxpbmVDb250ZW50Qm94T2Zmc2V0
ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChpbmxpbmVCb3gpLmJvcmRlckFu
ZFBhZGRpbmdTdGFydCgpOwotICAgICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUpCi0g
ICAgICAgICAgICBpbmxpbmVCb3hEaXNwbGF5Qm94Lm1vdmVIb3Jpem9udGFsbHkoaW5saW5lQ29u
dGVudEJveE9mZnNldCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlubGluZUJveERpc3Bs
YXlCb3gubW92ZVZlcnRpY2FsbHkoaW5saW5lQ29udGVudEJveE9mZnNldCk7Ci0gICAgICAgIHJl
dHVybiBsZWZ0U2lkZVRvTG9naWNhbFRvcExlZnQoaW5saW5lQm94RGlzcGxheUJveCwgbGluZXNb
aW5saW5lQm94RGlzcGxheUJveC5saW5lSW5kZXgoKV0sIGZhbHNlKTsKLSAgICB9Ci0KLSAgICBh
dXRvIHByZXZpb3VzQm94T3ZlcmZsb3dzID0gKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gcHJl
dmlvdXNEaXNwbGF5Qm94LnJpZ2h0KCkgPiBjdXJyZW50TGluZS5yaWdodCgpIDogcHJldmlvdXNE
aXNwbGF5Qm94LmJvdHRvbSgpID4gY3VycmVudExpbmUuYm90dG9tKCkpIHx8IHByZXZpb3VzRGlz
cGxheUJveC5pc0xpbmVCcmVha0JveCgpOwotICAgIGlmICghcHJldmlvdXNCb3hPdmVyZmxvd3Mp
Ci0gICAgICAgIHJldHVybiByaWdodFNpZGVUb0xvZ2ljYWxUb3BMZWZ0KHByZXZpb3VzRGlzcGxh
eUJveCwgY3VycmVudExpbmUpOwotCi0gICAgYXV0byBuZXh0RGlzcGxheUJveEluZGV4QWZ0ZXJP
dXRPZkZsb3cgPSBuZXh0RGlzcGxheUJveEluZGV4KG91dE9mRmxvd0JveCwgYm94ZXMpOwotICAg
IGlmICghbmV4dERpc3BsYXlCb3hJbmRleEFmdGVyT3V0T2ZGbG93KSB7Ci0gICAgICAgIC8vIFRo
aXMgaXMgdGhlIGxhc3QgY29udGVudCBvbiB0aGUgYmxvY2sgYW5kIGl0IGRvZXMgbm90IGZpdCB0
aGUgbGFzdCBsaW5lLgotICAgICAgICByZXR1cm4geyBjb250ZW50TGVmdEFmdGVyTGFzdExpbmUo
Y29uc3RyYWludHMsIGN1cnJlbnRMaW5lLmJvdHRvbSgpLCBmbG9hdGluZ0NvbnRleHQpLCBpc0hv
cml6b250YWxXcml0aW5nTW9kZSA/IGN1cnJlbnRMaW5lLmJvdHRvbSgpIDogY3VycmVudExpbmUu
cmlnaHQoKSB9OwotICAgIH0KLSAgICBhdXRvJiBuZXh0RGlzcGxheUJveCA9IGJveGVzWypuZXh0
RGlzcGxheUJveEluZGV4QWZ0ZXJPdXRPZkZsb3ddOwotICAgIHJldHVybiBsZWZ0U2lkZVRvTG9n
aWNhbFRvcExlZnQobmV4dERpc3BsYXlCb3gsIGxpbmVzW25leHREaXNwbGF5Qm94LmxpbmVJbmRl
eCgpXSk7Ci19Ci0KLUxheW91dFBvaW50IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6c3RhdGlj
UG9zaXRpb25Gb3JPdXRPZkZsb3dCbG9ja0xldmVsQm94KGNvbnN0IEJveCYgb3V0T2ZGbG93Qm94
LCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBjb25zdCBJ
bmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCkgY29uc3QKLXsKLSAgICBBU1NF
UlQob3V0T2ZGbG93Qm94LnN0eWxlKCkuaXNEaXNwbGF5QmxvY2tMZXZlbCgpKTsKLQotICAgIGF1
dG8gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPSBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKS5z
dHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7Ci0gICAgYXV0byYgbGluZXMgPSBkaXNw
bGF5Q29udGVudC5saW5lczsKLSAgICBhdXRvJiBib3hlcyA9IGRpc3BsYXlDb250ZW50LmJveGVz
OwotICAgIGF1dG8gY29udGVudEJveFRvcExlZnQgPSBMYXlvdXRQb2ludCB7IGNvbnN0cmFpbnRz
Lmhvcml6b250YWwoKS5sb2dpY2FsTGVmdCwgY29uc3RyYWludHMubG9naWNhbFRvcCgpIH07Ci0K
LSAgICBpZiAobGluZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVChib3hlcy5pc0VtcHR5
KCkpOwotICAgICAgICByZXR1cm4gY29udGVudEJveFRvcExlZnQ7Ci0gICAgfQotCi0gICAgLy8g
QmxvY2sgbGV2ZWwgYm94ZXMgYXJlIHBsYWNlZCB1bmRlciB0aGUgY3VycmVudCBsaW5lIGFzIGlm
IHRoZXkgd2VyZSBub3JtYWwgaW5mbG93IGJsb2NrIGxldmVsIGJveGVzLgotICAgIGF1dG8gcHJl
dmlvdXNEaXNwbGF5Qm94SW5kZXhCZWZvcmVPdXRPZkZsb3dCb3ggPSBwcmV2aW91c0Rpc3BsYXlC
b3hJbmRleChvdXRPZkZsb3dCb3gsIGJveGVzKTsKLSAgICBpZiAoIXByZXZpb3VzRGlzcGxheUJv
eEluZGV4QmVmb3JlT3V0T2ZGbG93Qm94KQotICAgICAgICByZXR1cm4geyBjb250ZW50Qm94VG9w
TGVmdC54KCksIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gbGluZXNbMF0udG9wKCkgOiBsaW5l
c1swXS5sZWZ0KCkgfTsKLSAgICBhdXRvJiBjdXJyZW50TGluZSA9IGxpbmVzW2JveGVzWypwcmV2
aW91c0Rpc3BsYXlCb3hJbmRleEJlZm9yZU91dE9mRmxvd0JveF0ubGluZUluZGV4KCldOwotICAg
IHJldHVybiB7IGNvbnRlbnRCb3hUb3BMZWZ0LngoKSwgTGF5b3V0VW5pdCB7IGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlID8gY3VycmVudExpbmUuYm90dG9tKCkgOiBjdXJyZW50TGluZS5yaWdodCgp
IH0gfTsKLX0KLQogSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6Omlu
aXRpYWxMaW5lSGVpZ2h0KGJvb2wgaXNGaXJzdExpbmUpIGNvbnN0CiB7CiAgICAgaWYgKGxheW91
dFN0YXRlKCkuaW5TdGFuZGFyZHNNb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnku
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUZvcm1hdHRpbmdHZW9tZXRyeS5oCmluZGV4IDVhYmRlMWU4MGI3YS4uZTUzNmQ5MzBmMGI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaApAQCAt
NTYsOSArNTYsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSW5saW5lUmVjdCBmbGlwVmlzdWFs
UmVjdFRvTG9naWNhbEZvcldyaXRpbmdNb2RlKGNvbnN0IElubGluZVJlY3QmIHZpc3VhbFJlY3Qs
IFdyaXRpbmdNb2RlKTsKIAotICAgIExheW91dFBvaW50IHN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZG
bG93SW5saW5lTGV2ZWxCb3goY29uc3QgQm94JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dD
b250ZW50JiwgY29uc3QgSW5saW5lRGlzcGxheTo6Q29udGVudCYsIGNvbnN0IEZsb2F0aW5nQ29u
dGV4dCYpIGNvbnN0OwotICAgIExheW91dFBvaW50IHN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93
QmxvY2tMZXZlbEJveChjb25zdCBCb3gmLCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRl
bnQmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JikgY29uc3Q7Ci0KICAgICB2b2lkIGFk
anVzdE1hcmdpblN0YXJ0Rm9yTGlzdE1hcmtlcihjb25zdCBFbGVtZW50Qm94JiwgTGF5b3V0VW5p
dCBuZXN0ZWRMaXN0TWFya2VyTWFyZ2luU3RhcnQsIElubGluZUxheW91dFVuaXQgcm9vdElubGlu
ZUJveE9mZnNldCkgY29uc3Q7CiAKICAgICBzdGF0aWMgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9u
dGFsQWxpZ25tZW50T2Zmc2V0KGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUsIElubGluZUxh
eW91dFVuaXQgY29udGVudExvZ2ljYWxSaWdodCwgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNh
bFJpZ2h0LCBJbmxpbmVMYXlvdXRVbml0IGhhbmdpbmdUcmFpbGluZ1dpZHRoLCBjb25zdCBMaW5l
OjpSdW5MaXN0JiBydW5zLCBib29sIGlzTGFzdExpbmUsIHN0ZDo6b3B0aW9uYWw8VGV4dERpcmVj
dGlvbj4gaW5saW5lQmFzZURpcmVjdGlvbk92ZXJyaWRlID0gc3RkOjpudWxsb3B0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUl0ZW1zQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCmluZGV4IDIzYWU2ZDgwODAyNi4u
MzY2M2RlNDIyOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5j
cHAKQEAgLTg2LDkgKzg2LDcgQEAgSW5saW5lSXRlbXNCdWlsZGVyOjpJbmxpbmVJdGVtc0J1aWxk
ZXIoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LAogdm9pZCBJbmxpbmVJ
dGVtc0J1aWxkZXI6OmJ1aWxkKElubGluZUl0ZW1Qb3NpdGlvbiBzdGFydFBvc2l0aW9uKQogewog
ICAgIElubGluZUl0ZW1zIGlubGluZUl0ZW1zOwotICAgIEZvcm1hdHRpbmdTdGF0ZTo6T3V0T2ZG
bG93Qm94TGlzdCBvdXRPZkZsb3dCb3hlczsKLQotICAgIGNvbGxlY3RJbmxpbmVJdGVtcyhpbmxp
bmVJdGVtcywgb3V0T2ZGbG93Qm94ZXMsIHN0YXJ0UG9zaXRpb24pOworICAgIGNvbGxlY3RJbmxp
bmVJdGVtcyhpbmxpbmVJdGVtcywgc3RhcnRQb3NpdGlvbik7CiAKICAgICBpZiAoIXJvb3QoKS5z
dHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSB8fCBjb250ZW50UmVxdWlyZXNWaXN1YWxS
ZW9yZGVyaW5nKCkpIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBwYXJ0aWFs
LCB5ZXQgcGFyYWdyYXBoIGxldmVsIGJpZGkgY29udGVudCBoYW5kbGluZy4KQEAgLTEwOSw3ICsx
MDcsNiBAQCB2b2lkIElubGluZUl0ZW1zQnVpbGRlcjo6YnVpbGQoSW5saW5lSXRlbVBvc2l0aW9u
IHN0YXJ0UG9zaXRpb24pCiAgICAgICAgIG1fZm9ybWF0dGluZ1N0YXRlLmFwcGVuZElubGluZUl0
ZW1zKFdURk1vdmUoaW5saW5lSXRlbXMpKTsKICAgICB9OwogICAgIGFkanVzdElubGluZUZvcm1h
dHRpbmdTdGF0ZVdpdGhOZXdJbmxpbmVJdGVtcygpOwotICAgIG1fZm9ybWF0dGluZ1N0YXRlLnNl
dE91dE9mRmxvd0JveGVzKFdURk1vdmUob3V0T2ZGbG93Qm94ZXMpKTsKIAogI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgLy8gQ2hlY2sgaWYgd2UndmUgZ290IG1hdGNoaW5nIGlubGluZSBib3ggc3Rh
cnQvZW5kIHBhaXJzIGFuZCB1bmlxdWUgaW5saW5lIGxldmVsIGl0ZW1zIChub24tdGV4dCwgbm9u
LWlubGluZSBib3ggaXRlbXMpLgpAQCAtMTkxLDcgKzE4OCw3IEBAIHN0YXRpYyBMYXlvdXRRdWV1
ZSBpbml0aWFsaXplTGF5b3V0UXVldWUoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRl
eHRSb290CiAgICAgcmV0dXJuIGxheW91dFF1ZXVlOwogfQogCi12b2lkIElubGluZUl0ZW1zQnVp
bGRlcjo6Y29sbGVjdElubGluZUl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgRm9ybWF0
dGluZ1N0YXRlOjpPdXRPZkZsb3dCb3hMaXN0JiBvdXRPZkZsb3dCb3hlcywgSW5saW5lSXRlbVBv
c2l0aW9uIHN0YXJ0UG9zaXRpb24pCit2b2lkIElubGluZUl0ZW1zQnVpbGRlcjo6Y29sbGVjdElu
bGluZUl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgSW5saW5lSXRlbVBvc2l0aW9uIHN0
YXJ0UG9zaXRpb24pCiB7CiAgICAgLy8gVHJhdmVyc2UgdGhlIHRyZWUgYW5kIGNyZWF0ZSBpbmxp
bmUgaXRlbXMgb3V0IG9mIGlubGluZSBib3hlcyBhbmQgbGVhZiBub2Rlcy4gVGhpcyBlc3NlbnRp
YWxseSB0dXJucyB0aGUgdHJlZSBpbmxpbmUgc3RydWN0dXJlIGludG8gYSBmbGF0IG9uZS4KICAg
ICAvLyA8c3Bhbj50ZXh0PHNwYW4+PC9zcGFuPjxpbWc+PC9zcGFuPiAtPiBbSW5saW5lQm94U3Rh
cnRdW0lubGluZUxldmVsQm94XVtJbmxpbmVCb3hTdGFydF1bSW5saW5lQm94RW5kXVtJbmxpbmVM
ZXZlbEJveF1bSW5saW5lQm94RW5kXQpAQCAtMjMzLDkgKzIzMCw4IEBAIHZvaWQgSW5saW5lSXRl
bXNCdWlsZGVyOjpjb2xsZWN0SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBG
b3JtYXR0aW5nCiAgICAgICAgIHdoaWxlICghbGF5b3V0UXVldWUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBhdXRvIGxheW91dEJveCA9IGxheW91dFF1ZXVlLnRha2VMYXN0KCk7CiAgICAgICAg
ICAgICBpZiAobGF5b3V0Qm94LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewotICAgICAgICAg
ICAgICAgIC8vIExldCdzIG5vdCBjb25zdHJ1Y3QgSW5saW5lSXRlbXMgZm9yIG91dC1vZi1mbG93
IGNvbnRlbnQgYXMgdGhleSBkb24ndCBwYXJ0aWNpcGF0ZSBpbiB0aGUgaW5saW5lIGxheW91dC4K
LSAgICAgICAgICAgICAgICAvLyBIb3dldmVyIHRvIGJlIGFibGUgdG8gc3RhdGljIHBvc2l0aW9u
aW5nIHRoZW0sIHdlIG5lZWQgdG8gY29tcHV0ZSB0aGVpciBhcHByb3hpbWF0ZSBwb3NpdGlvbnMu
Ci0gICAgICAgICAgICAgICAgb3V0T2ZGbG93Qm94ZXMuYXBwZW5kKGxheW91dEJveCk7CisgICAg
ICAgICAgICAgICAgbV9pc05vbkJpZGlUZXh0QW5kRm9yY2VkTGluZUJyZWFrT25seUNvbnRlbnQg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpbmxpbmVJdGVtcy5hcHBlbmQoeyBsYXlvdXRCb3gs
IElubGluZUl0ZW06OlR5cGU6Ok9wYXF1ZSB9KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobGF5
b3V0Qm94LT5pc0lubGluZVRleHRCb3goKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGlubGlu
ZVRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihsYXlvdXRCb3gpOwogICAgICAgICAg
ICAgICAgIGhhbmRsZVRleHRDb250ZW50KGlubGluZVRleHRCb3gsIGlubGluZUl0ZW1zLCBwYXJ0
aWFsQ29udGVudE9mZnNldChpbmxpbmVUZXh0Qm94KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUl0ZW1zQnVpbGRlci5oCmluZGV4IDVkOWQ3YWM3ZTI0MC4uNTIyZDE4Mzg3NzVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVJdGVtc0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBidWlsZChJbmxpbmVJdGVtUG9zaXRpb24gc3RhcnRQb3NpdGlvbik7CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCBjb2xsZWN0SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmLCBGb3Jt
YXR0aW5nU3RhdGU6Ok91dE9mRmxvd0JveExpc3QmLCBJbmxpbmVJdGVtUG9zaXRpb24gc3RhcnRQ
b3NpdGlvbik7CisgICAgdm9pZCBjb2xsZWN0SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmLCBJbmxp
bmVJdGVtUG9zaXRpb24gc3RhcnRQb3NpdGlvbik7CiAgICAgdm9pZCBicmVha0FuZENvbXB1dGVC
aWRpTGV2ZWxzKElubGluZUl0ZW1zJik7CiAgICAgdm9pZCBjb21wdXRlSW5saW5lVGV4dEl0ZW1X
aWR0aHMoSW5saW5lSXRlbXMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcAppbmRleCAz
M2FmZjkxNDUzMzUuLjQ2ODRlZTg5ZTllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAK
QEAgLTI2MCw2ICsyNjAsMjcgQEAgdm9pZCBMaW5lOjpoYW5kbGVPdmVyZmxvd2luZ05vbkJyZWFr
aW5nU3BhY2UoVHJhaWxpbmdDb250ZW50QWN0aW9uIHRyYWlsaW5nQ29udGUKICAgICBtX2NvbnRl
bnRMb2dpY2FsV2lkdGggLT0gcmVtb3ZlZE9yQ29sbGFwc2VkQ29udGVudFdpZHRoOwogfQogCitj
b25zdCBCb3gqIExpbmU6OnJlbW92ZU92ZXJmbG93aW5nT3VyT2ZGbG93Q29udGVudCgpCit7Cisg
ICAgYXV0byBsYXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXggPSBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4geyB9OworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gbV9ydW5zLnNpemUoKTsgaW5kZXgtLTsp
IHsKKyAgICAgICAgYXV0byYgcnVuID0gbV9ydW5zW2luZGV4XTsKKyAgICAgICAgaWYgKHJ1bi5p
c09wYXF1ZSgpKSB7CisgICAgICAgICAgICBsYXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXggPSBp
bmRleDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghcnVu
LmxvZ2ljYWxXaWR0aCgpICYmIChydW4uaXNJbmxpbmVCb3hTdGFydCgpIHx8IHJ1bi5pc0lubGlu
ZUJveEVuZCgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgaWYgKCFsYXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXgpCisgICAgICAgIHJldHVybiB7
IH07CisgICAgYXV0byogbGFzdFRyYWlsaW5nT3BhcXVlQm94ID0gJm1fcnVuc1sqbGFzdFRyYWls
aW5nT3BhcXVlSXRlbUluZGV4XS5sYXlvdXRCb3goKTsKKyAgICBtX3J1bnMucmVtb3ZlKCpsYXN0
VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXgsIG1fcnVucy5zaXplKCkgLSAqbGFzdFRyYWlsaW5nT3Bh
cXVlSXRlbUluZGV4KTsKKyAgICBBU1NFUlQoIW1fcnVucy5pc0VtcHR5KCkpOworICAgIHJldHVy
biBsYXN0VHJhaWxpbmdPcGFxdWVCb3g7Cit9CisKIHZvaWQgTGluZTo6aGFuZGxlVHJhaWxpbmdI
YW5naW5nQ29udGVudChzdGQ6Om9wdGlvbmFsPEludHJpbnNpY1dpZHRoTW9kZT4gaW50cmluc2lj
V2lkdGhNb2RlLCBJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxBdmFpbGFibGVTcGFjZUZvckNv
bnRlbnQsIGJvb2wgaXNMYXN0Rm9ybWF0dGVkTGluZSkKIHsKICAgICAvLyBodHRwczovL2RyYWZ0
cy5jc3N3Zy5vcmcvY3NzLXRleHQvI2hhbmdpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaAppbmRl
eCA0ZDkzZDczNmJmYTguLjdiMmEwNDNjZDJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaApA
QCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6CiAgICAgSW5saW5lTGF5b3V0VW5pdCBoYW5kbGVUcmFp
bGluZ1RyaW1tYWJsZUNvbnRlbnQoVHJhaWxpbmdDb250ZW50QWN0aW9uKTsKICAgICB2b2lkIGhh
bmRsZVRyYWlsaW5nSGFuZ2luZ0NvbnRlbnQoc3RkOjpvcHRpb25hbDxJbnRyaW5zaWNXaWR0aE1v
ZGU+LCBJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxBdmFpbGFibGVTcGFjZSwgYm9vbCBpc0xh
c3RGb3JtYXR0ZWRMaW5lKTsKICAgICB2b2lkIGhhbmRsZU92ZXJmbG93aW5nTm9uQnJlYWtpbmdT
cGFjZShUcmFpbGluZ0NvbnRlbnRBY3Rpb24sIElubGluZUxheW91dFVuaXQgb3ZlcmZsb3dpbmdX
aWR0aCk7CisgICAgY29uc3QgQm94KiByZW1vdmVPdmVyZmxvd2luZ091ck9mRmxvd0NvbnRlbnQo
KTsKICAgICB2b2lkIHJlc2V0QmlkaUxldmVsRm9yVHJhaWxpbmdXaGl0ZXNwYWNlKFVCaURpTGV2
ZWwgcm9vdEJpZGlMZXZlbCk7CiAgICAgdm9pZCBhcHBseVJ1bkV4cGFuc2lvbihJbmxpbmVMYXlv
dXRVbml0IGhvcml6b250YWxBdmFpbGFibGVTcGFjZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJveC5jcHAKaW5kZXggM2JjMTgyNTIyYjM3Li42MmQ2NjcyZWM4ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3guY3BwCkBAIC0xMzAsNiArMTMwLDEzIEBAIElubGluZVJlY3Qg
TGluZUJveDo6bG9naWNhbEJvcmRlckJveEZvcklubGluZUJveChjb25zdCBCb3gmIGxheW91dEJv
eCwgY29uc3QgQm94CiAgICAgcmV0dXJuIGxvZ2ljYWxSZWN0OwogfQogCitJbmxpbmVSZWN0IExp
bmVCb3g6OmxvZ2ljYWxSZWN0Rm9yT3BhcXVlQm94KGNvbnN0IExpbmU6OlJ1biYgb3BhcXVlUnVu
LCBjb25zdCBCb3hHZW9tZXRyeSYgYm94R2VvbWV0cnkpIGNvbnN0Cit7CisgICAgQVNTRVJUKG9w
YXF1ZVJ1bi5pc09wYXF1ZSgpKTsKKyAgICBBU1NFUlQob3BhcXVlUnVuLmxheW91dEJveCgpLnN0
eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkpOworICAgIHJldHVybiB7IHsgfSwg
bV9yb290SW5saW5lQm94LmxvZ2ljYWxMZWZ0KCkgKyBvcGFxdWVSdW4ubG9naWNhbExlZnQoKSwg
Ym94R2VvbWV0cnkuYm9yZGVyQm94V2lkdGgoKSwgYm94R2VvbWV0cnkuYm9yZGVyQm94SGVpZ2h0
KCkgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgTGF5b3V0CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaAppbmRleCA5NDA1NDliNTc1NTYuLjNlMGUz
OWU3NzczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaApAQCAtNzEsNiArNzEsNyBA
QCBwdWJsaWM6CiAgICAgSW5saW5lUmVjdCBsb2dpY2FsUmVjdEZvclJvb3RJbmxpbmVCb3goKSBj
b25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gubG9naWNhbFJlY3QoKTsgfQogICAgIElubGlu
ZVJlY3QgbG9naWNhbEJvcmRlckJveEZvckF0b21pY0lubGluZUxldmVsQm94KGNvbnN0IEJveCYs
IGNvbnN0IEJveEdlb21ldHJ5JikgY29uc3Q7CiAgICAgSW5saW5lUmVjdCBsb2dpY2FsQm9yZGVy
Qm94Rm9ySW5saW5lQm94KGNvbnN0IEJveCYsIGNvbnN0IEJveEdlb21ldHJ5JikgY29uc3Q7Cisg
ICAgSW5saW5lUmVjdCBsb2dpY2FsUmVjdEZvck9wYXF1ZUJveChjb25zdCBMaW5lOjpSdW4mIG9w
YXF1ZVJ1biwgY29uc3QgQm94R2VvbWV0cnkmKSBjb25zdDsKIAogICAgIGNvbnN0IElubGluZUxl
dmVsQm94KiBpbmxpbmVMZXZlbEJveEZvcihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyBy
ZXR1cm4gY29uc3RfY2FzdDxMaW5lQm94Jj4oKnRoaXMpLmlubGluZUxldmVsQm94Rm9yKGxheW91
dEJveCk7IH0KICAgICBjb25zdCBJbmxpbmVMZXZlbEJveCYgaW5saW5lTGV2ZWxCb3hGb3IoY29u
c3QgTGluZTo6UnVuJiBsaW5lUnVuKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PExpbmVCb3gm
PigqdGhpcykuaW5saW5lTGV2ZWxCb3hGb3IobGluZVJ1bik7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA0MzcwODM3N2VlYjkuLmRmNTY5MjA0NzEyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtNDc3LDYgKzQ3
NywyNiBAQCBMaW5lQ29udGVudCBMaW5lQnVpbGRlcjo6cGxhY2VJbmxpbmVBbmRGbG9hdENvbnRl
bnQoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkcwogICAgICAgICAgICAgICAgIG1fbGluZS5o
YW5kbGVPdmVyZmxvd2luZ05vbkJyZWFraW5nU3BhY2UoaXNMaW5lQnJlYWtBZnRlcldoaXRlc3Bh
Y2UoKSA/IExpbmU6OlRyYWlsaW5nQ29udGVudEFjdGlvbjo6UHJlc2VydmUgOiBMaW5lOjpUcmFp
bGluZ0NvbnRlbnRBY3Rpb246OlJlbW92ZSwgbV9saW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKSAt
IGhvcml6b250YWxBdmFpbGFibGVTcGFjZSk7CiAKICAgICAgICAgICAgIG1fbGluZS5oYW5kbGVU
cmFpbGluZ0hhbmdpbmdDb250ZW50KGludHJpbnNpY1dpZHRoTW9kZSgpLCBob3Jpem9udGFsQXZh
aWxhYmxlU3BhY2UsIGlzTGFzdExpbmUpOworCisgICAgICAgICAgICBhdXRvIG1heU5lZWRPdXRP
ZkZsb3dPdmVyZmxvd1RyaW1taW5nID0gIWlzSW5JbnRyaW5zaWNXaWR0aE1vZGUoKSAmJiBsaW5l
SGFzT3ZlcmZsb3coKSAmJiAhbGluZUNvbnRlbnQucGFydGlhbFRyYWlsaW5nQ29udGVudExlbmd0
aCAmJiBUZXh0VXRpbDo6aXNXcmFwcGluZ0FsbG93ZWQocm9vdFN0eWxlKTsKKyAgICAgICAgICAg
IGlmIChtYXlOZWVkT3V0T2ZGbG93T3ZlcmZsb3dUcmltbWluZykgeworICAgICAgICAgICAgICAg
IC8vIE92ZXJmbG93aW5nIG91dC1vZi1mbG93IGJveGVzIHNob3VsZCB3cmFwIHRoZSB0byBzdWJz
ZXF1ZW50IGxpbmVzIGp1c3QgbGlrZSBhbnkgb3RoZXIgaW4tZmxvdyBjb250ZW50LgorICAgICAg
ICAgICAgICAgIC8vIEhvd2V2ZXIgc2luY2Ugd2UgdGFrZSBhIHNob3J0Y3V0IGJ5IG5vdCBjb25z
aWRlcmluZyBvdXQtb2YtZmxvdyBjb250ZW50IGFzIGluZmxvdyBidXQgaW5zdGVhZCB0cmVhdGlu
ZyBpdCBhcyBhbiBvcGFxdWUgYm94IHdpdGggemVybyB3aWR0aCBhbmQgbm8KKyAgICAgICAgICAg
ICAgICAvLyBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHksIGFueSBvdmVyZmxvd2luZyBvdXQtb2YtZmxv
dyBjb250ZW50IHdvdWxkIHBpbGUgdXAgYXMgdHJhaWxpbmcgY29udGVudC4KKyAgICAgICAgICAg
ICAgICAvLyBBbHRlcm5hdGl2ZWx5IHdlIGNvdWxkIGluaXRpYXRlIGEgdHdvIHBhc3MgbGF5b3V0
IGZpcnN0IHdpdGggb3V0LW9mLWZsb3cgY29udGVudCB0cmVhdGVkIGFzIHRydWUgaW5mbG93IGFu
ZCBhIHNlY29uZCB3aXRob3V0IHRoZW0uCisgICAgICAgICAgICAgICAgQVNTRVJUKCFsaW5lQ29u
dGVudC5yYW5nZS5lbmQub2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogbGFzdFJl
bW92ZWRUcmFpbGluZ0JveCA9IG1fbGluZS5yZW1vdmVPdmVyZmxvd2luZ091ck9mRmxvd0NvbnRl
bnQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGxpbmVFbmRJbmRleCA9IFsmXSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8gaW5kZXggPSBsaW5lQ29udGVudC5yYW5n
ZS5zdGFydC5pbmRleDsgaW5kZXggPCBsaW5lQ29udGVudC5yYW5nZS5lbmQuaW5kZXg7ICsraW5k
ZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJm1faW5saW5lSXRlbXNbaW5k
ZXhdLmxheW91dEJveCgpID09IGxhc3RSZW1vdmVkVHJhaWxpbmdCb3gpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmVDb250ZW50LnJhbmdlLmVuZC5pbmRleDsKKyAg
ICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgbGluZUNvbnRlbnQucmFu
Z2UuZW5kLmluZGV4ID0gbGluZUVuZEluZGV4KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQogICAgICAgICB9OwogICAgICAgICBoYW5kbGVUcmFpbGluZ0NvbnRlbnQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5
Q29udGVudEJ1aWxkZXIuY3BwCmluZGV4IGY1NmJjMDhkZWVlZS4uMGVkNjdhYjFhOTY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5
Q29udGVudEJ1aWxkZXIuY3BwCkBAIC00NTEsNiArNDUxLDcgQEAgdm9pZCBJbmxpbmVEaXNwbGF5
Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NOb25CaWRpQ29udGVudChjb25zdCBMaW5lTGF5b3V0UmVz
dWx0JgogI2VuZGlmCiAgICAgYXV0byB3cml0aW5nTW9kZSA9IHJvb3QoKS5zdHlsZSgpLndyaXRp
bmdNb2RlKCk7CiAgICAgYXV0byBjb250ZW50U3RhcnRJblZpc3VhbE9yZGVyID0gbV9kaXNwbGF5
TGluZS50b3BMZWZ0KCk7CisgICAgYXV0byBvdXRPZkZsb3dDb250ZW50SGFzUHJldmlvdXNJbkZs
b3dTaWJsaW5nV2l0aENvbnRlbnRPckRlY29yYXRpb24gPSBzdGQ6Om9wdGlvbmFsPGJvb2w+IHsg
fTsKIAogICAgIGFwcGVuZFJvb3RJbmxpbmVCb3hEaXNwbGF5Qm94KGZsaXBSb290SW5saW5lQm94
UmVjdFRvVmlzdWFsRm9yV3JpdGluZ01vZGUobGluZUJveC5sb2dpY2FsUmVjdEZvclJvb3RJbmxp
bmVCb3goKSwgd3JpdGluZ01vZGUpLCBsaW5lQm94LnJvb3RJbmxpbmVCb3goKS5oYXNDb250ZW50
KCksIGJveGVzKTsKIApAQCAtNDk4LDcgKzQ5OSwzMiBAQCB2b2lkIElubGluZURpc3BsYXlDb250
ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KGNvbnN0IExpbmVMYXlvdXRSZXN1bHQm
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAobGluZVJ1bi5p
c09wYXF1ZSgpKSB7Ci0gICAgICAgICAgICAvLyBTZXQgZ2VvbWV0cnkgZm9yIHRoaXMgb3BhcXVl
IGJveC4KKyAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlKCku
Ym94R2VvbWV0cnkobGF5b3V0Qm94KTsKKyAgICAgICAgICAgIGlmIChsYXlvdXRCb3guc3R5bGUo
KS5pc09yaWdpbmFsRGlzcGxheUlubGluZVR5cGUoKSkgeworICAgICAgICAgICAgICAgIGF1dG8g
bG9naWNhbFRvcExlZnQgPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yT3BhcXVlQm94KGxpbmVSdW4s
IGJveEdlb21ldHJ5KS50b3BMZWZ0KCk7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcExlZnQu
bW92ZUJ5KGxpbmVCb3gubG9naWNhbFJlY3QoKS50b3BMZWZ0KCkpOworICAgICAgICAgICAgICAg
IGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHRvTGF5b3V0UG9pbnQobG9naWNhbFRvcExl
ZnQpKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGF1dG8gaGFzUHJldmlvdXNJbkZsb3dDb250ZW50ID0gWyZdIHsKKyAgICAgICAgICAgICAg
ICBpZiAoYm94ZXMuc2l6ZSgpID09IDEpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICBpZiAob3V0T2ZGbG93Q29udGVudEhhc1ByZXZpb3VzSW5GbG93
U2libGluZ1dpdGhDb250ZW50T3JEZWNvcmF0aW9uICYmICpvdXRPZkZsb3dDb250ZW50SGFzUHJl
dmlvdXNJbkZsb3dTaWJsaW5nV2l0aENvbnRlbnRPckRlY29yYXRpb24pCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGlsZSB0aGlz
IGRvZXMgbG9vayBleHBlbnNpdmUsIGl0IGlzIGNlcnRhaW5seSBhIHBhdGhvbG9naWNhbCBjYXNl
LgorICAgICAgICAgICAgICAgIGZvciAoYXV0byYgcHJldmlvdXNSdW4gOiBsaW5lTGF5b3V0UmVz
dWx0LmlubGluZUNvbnRlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCZwcmV2aW91c1J1
biA9PSAmbGluZVJ1bikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKExpbmU6OlJ1bjo6aXNDb250ZW50ZnVsT3JIYXNEZWNvcmF0
aW9uKHByZXZpb3VzUnVuLCBmb3JtYXR0aW5nQ29udGV4dCgpKSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0T2ZGbG93Q29udGVudEhhc1ByZXZpb3VzSW5GbG93U2libGluZ1dpdGhDb250
ZW50T3JEZWNvcmF0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICAvLyBCbG9j
ayBsZXZlbCBib3hlcyBhcmUgcGxhY2VkIGVpdGhlciBhdCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUg
b3IgInVuZGVyIiBkZXBlbmRpbmcgd2hldGhlciB0aGV5IGhhdmUgcHJldmlvdXMgaW5mbG93IHNp
YmxpbmcuCisgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3AgPSBoYXNQcmV2aW91c0luRmxvd0Nv
bnRlbnQoKSA/IGxpbmVCb3gubG9naWNhbFJlY3QoKS5ib3R0b20oKSA6IGxpbmVCb3gubG9naWNh
bFJlY3QoKS50b3AoKTsKKyAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0
KHsgY29uc3RyYWludHMoKS5ob3Jpem9udGFsKCkubG9naWNhbExlZnQsIGxvZ2ljYWxUb3AgfSk7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQobGluZVJ1
bi5pc0lubGluZUJveEVuZCgpIHx8IGxpbmVSdW4uaXNXb3JkQnJlYWtPcHBvcnR1bml0eSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5
b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRleCA2OTY4
M2Y4NTlkYTMuLjQ4MzJmNjhhMGJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRp
b25MaW5lTGF5b3V0LmNwcApAQCAtNTg4LDggKzU4OCw3IEBAIHN0ZDo6b3B0aW9uYWw8TGF5b3V0
UmVjdD4gTGluZUxheW91dDo6bGF5b3V0KCkKICAgICB9KCk7CiAgICAgYXV0byBwYXJlbnRCbG9j
a0xheW91dFN0YXRlID0gTGF5b3V0OjpCbG9ja0xheW91dFN0YXRlIHsgbV9ibG9ja0Zvcm1hdHRp
bmdTdGF0ZS5mbG9hdGluZ1N0YXRlKCksIGxpbmVDbGFtcChmbG93KCkpLCB0ZXh0Qm94VHJpbShm
bG93KCkpLCBpbnRydXNpdmVJbml0aWFsTGV0dGVyQm90dG9tKCkgfTsKICAgICBhdXRvIGlubGlu
ZUxheW91dFN0YXRlID0gTGF5b3V0OjpJbmxpbmVMYXlvdXRTdGF0ZSB7IHBhcmVudEJsb2NrTGF5
b3V0U3RhdGUsIFdURk1vdmUobV9uZXN0ZWRMaXN0TWFya2VyT2Zmc2V0cykgfTsKLSAgICBhdXRv
IGxheW91dFJlc3VsdCA9IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGF5b3V0SW5GbG93QW5k
RmxvYXRDb250ZW50KGlubGluZUNvbnRlbnRDb25zdHJhaW50cywgaW5saW5lTGF5b3V0U3RhdGUs
IG1fbGluZURhbWFnZS5nZXQoKSk7Ci0gICAgbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5sYXlv
dXRPdXRPZkZsb3dDb250ZW50KGlubGluZUNvbnRlbnRDb25zdHJhaW50cywgaW5saW5lTGF5b3V0
U3RhdGUsIGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVudCk7CisgICAgYXV0byBsYXlvdXRSZXN1
bHQgPSBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0LmxheW91dChpbmxpbmVDb250ZW50Q29uc3Ry
YWludHMsIGlubGluZUxheW91dFN0YXRlLCBtX2xpbmVEYW1hZ2UuZ2V0KCkpOwogCiAgICAgYXV0
byByZXBhaW50UmVjdCA9IExheW91dFJlY3QgeyBjb25zdHJ1Y3RDb250ZW50KGlubGluZUxheW91
dFN0YXRlLCBXVEZNb3ZlKGxheW91dFJlc3VsdCkpIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9tb3ZlLWJhY2tpbmctc2hh
cmluZy1sYXllci1leHBlY3RlZC50eHQKaW5kZXggMjg0ZWUzNzQ1MjlkLi4wMjZjMTg5ZmEwMTgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5n
LXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0CkBAIC0xNiw2
ICsxNiw3IEBACiAgICAgICAgICAgKGJvdW5kcyA4MDIuMDAgMjAyLjAwKQogICAgICAgICAgIChk
cmF3c0NvbnRlbnQgMSkKICAgICAgICAgICAocmVwYWludCByZWN0cworICAgICAgICAgICAgKHJl
Y3QgMC4wMCAxLjAwIDgwMi4wMCAxLjAwKQogICAgICAgICAgICAgKHJlY3QgMjAxLjAwIDUxLjAw
IDEwMC4wMCAxMDAuMDApCiAgICAgICAgICAgICAocmVjdCA0MDEuMDAgNTEuMDAgMTAwLjAwIDEw
MC4wMCkKICAgICAgICAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mt
d2syL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9jb21wb3NpdGluZy9yZXBhaW50
L21vdmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVkLnR4dAppbmRleCBmM2IzZDBiNzhk
ODYuLmJkNGViYTY5NGQ2NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdr
Mi9jb21wb3NpdGluZy9yZXBhaW50L21vdmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL2NvbXBvc2l0aW5nL3JlcGFp
bnQvbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0CkBAIC0xNiw2ICsxNiw3
IEBACiAgICAgICAgICAgKGJvdW5kcyA4MDIuMDAgMjAyLjAwKQogICAgICAgICAgIChkcmF3c0Nv
bnRlbnQgMSkKICAgICAgICAgICAocmVwYWludCByZWN0cworICAgICAgICAgICAgKHJlY3QgMC4w
MCAxLjAwIDgwMi4wMCAxLjAwKQogICAgICAgICAgICAgKHJlY3QgMjAxLjAwIDUxLjAwIDEwMC4w
MCAxMDAuMDApCiAgICAgICAgICAgICAocmVjdCA0MDEuMDAgNTEuMDAgMTAwLjAwIDEwMC4wMCkK
ICAgICAgICAgICApCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467476</attachid>
            <date>2023-08-28 19:36:25 -0700</date>
            <delta_ts>2023-08-28 20:34:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-260776-20230828193625.patch</filename>
            <type>text/plain</type>
            <size>40555</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAxZjkxNzA4ZGI2YWNhZjE4NWViNzRlNDAyMTZlMDY3NmYwOGFlMmU3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IE1vbiwgMjggQXVnIDIwMjMgMTI6MzA6MzUgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBV
c2Ugb3BhcXVlIElubGluZUl0ZW0gdG8gY29tcHV0ZSBvdXQtb2YtZmxvdyBzdGF0aWMKIHBvc2l0
aW9uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjA3NzYKClJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKTGV0J3MgcmVwbGFjZSBleGlzdGluZyBvdXQtb2YtZmxv
dyBoYW5kbGluZyB3aXRoIHVzaW5nIG9wYXF1ZSBpbmxpbmUgaXRlbXMgaW5zdGVhZC4KMS4gQWRk
IG91dC1vZi1mbG93IGNvbnRlbnQgdG8gdGhlIGlubGluZSBpdGVtIGxpc3QgYXMgb3BhcXVlIGJv
eCBhbmQgcnVuIHJlZ3VsYXIgaW5saW5lIGxheW91dC4KMi4gU2V0IHN0YXRpYyBwb3NpdGlvbiBh
cyBwYXJ0IG9mIHRoZSBpbmxpbmUgZGlzcGxheSBjb250ZW50IGJ1aWxkaW5nIHByb2Nlc3Mgd2hl
cmUgd2UgaXRlcmF0ZSB0aHJvdWdoIHRoZSBydW5zIG9uIHRoZSBjdXJyZW50IGxpbmUuCjMuIFNp
bmNlIHRoaXMgaXMgYWxsIHBhcnQgb2YgX2luZmxvd18gbGF5b3V0LCB3ZSBkb24ndCBuZWVkIHRo
ZSBkZWRpY2F0ZWQgX291dF9vZl9mbG93XyBtZXRob2Qgb24gSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQgYW55bW9yZS4KNC4gUmVtb3ZlIGV4aXN0aW5nIGxvZ2ljIHdoZXJlIHdlIGNvbXB1dGUgdGhl
IHN0YXRpYyBwb3NpdGlvbiBieSBsb29raW5nIGF0IGFkamFjZW50IGRpc3BsYXkgYm94IGdlb21l
dHJpZXMuCgoqIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNo
YXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIv
Y29tcG9zaXRpbmcvcmVwYWludC9tb3ZlLWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3RlZC50
eHQ6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudCk6IERlbGV0ZWQuCihXZWJDb3JlOjpM
YXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JP
dXRPZkZsb3dDb250ZW50KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgoqIFNvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OmZpcnN0RGlzcGxheUJveEluZGV4Rm9yTGF5
b3V0Qm94KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6bGFzdERpc3BsYXlCb3hJbmRleEZv
ckxheW91dEJveCk6IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OnByZXZpb3VzRGlzcGxheUJv
eEluZGV4KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6bmV4dERpc3BsYXlCb3hJbmRleCk6
IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6Y29u
dGVudExlZnRBZnRlckxhc3RMaW5lIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0lubGlu
ZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0Jsb2NrTGV2ZWxCb3ggY29u
c3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHA6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUl0ZW1zQnVpbGRlcjo6YnVpbGQpOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVJdGVtc0J1aWxkZXI6OmNvbGxlY3RJbmxpbmVJdGVtcyk6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmg6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OnJlbW92ZU92ZXJmbG93aW5nT3VyT2ZG
bG93Q29udGVudCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94
Ojpsb2dpY2FsUmVjdEZvck9wYXF1ZUJveCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5oOgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNw
cDoKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQW5kRmxvYXRDb250
ZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6
OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KToKKiBT
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6
bGF5b3V0KToKLS0tCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAg
ICAgfCAgIDIgKy0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwICAgICAg
ICB8ICAzMCArLS0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggICAgICAg
ICAgfCAgIDQgKy0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCAgICAg
ICB8IDE2OCAtLS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dl
b21ldHJ5LmggICAgICAgICB8ICAgMyAtCiAuLi4vaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5j
cHAgICAgICAgICAgICAgfCAgMTIgKy0KIC4uLi9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmgg
ICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZS5jcHAgIHwgIDIxICsrKwogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZS5oICAgIHwgICAxICsKIC4uLi9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAgICAgICAg
ICAgICAgICAgICB8ICAgNyArCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lQm94LmggfCAgIDEgKwogLi4uL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAgICAgICAg
ICAgICAgIHwgIDIwICsrKwogLi4uL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
LmNwcCAgIHwgIDQyICsrKystCiAuLi4vZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXIuaCAgICAgfCAgIDEgKwogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
Y3BwICAgIHwgICAzICstCiAuLi4vbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQu
dHh0ICAgfCAgIDEgKwogLi4uL21vdmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVkLnR4
dCAgIHwgICAxICsKIDE3IGZpbGVzIGNoYW5nZWQsIDEwMyBpbnNlcnRpb25zKCspLCAyMTYgZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9mbGV4L0ZsZXhMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhMYXlvdXQuY3BwCmluZGV4IDYyZDA2NzFlMDc1Yi4uYzAx
NTNiYWE4MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhMYXlvdXQuY3BwCkBAIC00NDUsNyArNDQ1LDcgQEAg
RmxleExheW91dDo6U2l6ZUxpc3QgRmxleExheW91dDo6aHlwb3RoZXRpY2FsQ3Jvc3NTaXplRm9y
RmxleEl0ZW1zKGNvbnN0IExvZ2ljYWwKICAgICAgICAgICAgIGF1dG8mIGlubGluZUZvcm1hdHRp
bmdTdGF0ZSA9IGZsZXhGb3JtYXR0aW5nQ29udGV4dCgpLmxheW91dFN0YXRlKCkuZW5zdXJlSW5s
aW5lRm9ybWF0dGluZ1N0YXRlKGZsZXhJdGVtQm94KTsKICAgICAgICAgICAgIGF1dG8gaW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQgPSBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCB7IGZsZXhJdGVtQm94
LCBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgfTsKICAgICAgICAgICAgIGF1dG8gY29uc3RyYWludHNG
b3JJbkZsb3dDb250ZW50ID0gQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50IHsgSG9yaXpvbnRh
bENvbnN0cmFpbnRzIHsgeyB9LCBmbGV4SXRlbXNNYWluU2l6ZUxpc3RbZmxleEl0ZW1JbmRleF0g
fSwgeyB9IH07Ci0gICAgICAgICAgICBhdXRvIGxheW91dFJlc3VsdCA9IGlubGluZUZvcm1hdHRp
bmdDb250ZXh0LmxheW91dEluRmxvd0FuZEZsb2F0Q29udGVudCh7IGNvbnN0cmFpbnRzRm9ySW5G
bG93Q29udGVudCwgeyB9IH0sIGlubGluZUxheW91dFN0YXRlKTsKKyAgICAgICAgICAgIGF1dG8g
bGF5b3V0UmVzdWx0ID0gaW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGF5b3V0KHsgY29uc3RyYWlu
dHNGb3JJbkZsb3dDb250ZW50LCB7IH0gfSwgaW5saW5lTGF5b3V0U3RhdGUpOwogICAgICAgICAg
ICAgcmV0dXJuIExheW91dFVuaXQgeyBsYXlvdXRSZXN1bHQuZGlzcGxheUNvbnRlbnQubGluZXMu
bGFzdCgpLmxpbmVCb3hMb2dpY2FsUmVjdCgpLm1heFkoKSB9OwogICAgICAgICB9OwogICAgICAg
ICBhdXRvIHVzZWRDcm9zc1NpemUgPSBjcm9zc1NpemVBZnRlclBlcmZvcm1pbmdMYXlvdXQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRl
eCBiZGIyODhiYzJiOWUuLjlmYmI3MmU5YzZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNjcsMTAgKzY3LDEwIEBAIElubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBFbGVtZW50Qm94
JiBmb3JtYXR0aW5nQ29uCiB7CiB9CiAKLUlubGluZUxheW91dFJlc3VsdCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93QW5kRmxvYXRDb250ZW50KGNvbnN0IENvbnN0cmFpbnRz
Rm9ySW5saW5lQ29udGVudCYgY29uc3RyYWludHMsIElubGluZUxheW91dFN0YXRlJiBpbmxpbmVM
YXlvdXRTdGF0ZSwgY29uc3QgSW5saW5lRGFtYWdlKiBsaW5lRGFtYWdlKQorSW5saW5lTGF5b3V0
UmVzdWx0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoY29uc3QgQ29uc3RyYWludHNG
b3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50cywgSW5saW5lTGF5b3V0U3RhdGUmIGlubGluZUxh
eW91dFN0YXRlLCBjb25zdCBJbmxpbmVEYW1hZ2UqIGxpbmVEYW1hZ2UpCiB7CiAgICAgYXV0byYg
ZmxvYXRpbmdTdGF0ZSA9IGlubGluZUxheW91dFN0YXRlLnBhcmVudEJsb2NrTGF5b3V0U3RhdGUo
KS5mbG9hdGluZ1N0YXRlKCk7Ci0gICAgaWYgKCFyb290KCkuaGFzSW5GbG93Q2hpbGQoKSkgewor
ICAgIGlmICghcm9vdCgpLmhhc0luRmxvd0NoaWxkKCkgJiYgIXJvb3QoKS5oYXNPdXRPZkZsb3dD
aGlsZCgpKSB7CiAgICAgICAgIC8vIEZsb2F0IG9ubHkgY29udGVudCBkb2VzIG5vdCBzdXBwb3J0
IHBhcnRpYWwgbGF5b3V0LgogICAgICAgICBBU1NFUlQoIWxpbmVEYW1hZ2UpOwogICAgICAgICBs
YXlvdXRGbG9hdENvbnRlbnRPbmx5KGNvbnN0cmFpbnRzLCBmbG9hdGluZ1N0YXRlKTsKQEAgLTEx
NCwxMiArMTE0LDYgQEAgSW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXRJbkZsb3dBbmRGbG9hdENvbnRlbnQoY29uc3QgQ28KICAgICByZXR1cm4gbGluZUxh
eW91dChsaW5lQnVpbGRlciwgaW5saW5lSXRlbXMsIG5lZWRzTGF5b3V0UmFuZ2UsIHByZXZpb3Vz
TGluZSgpLCBjb25zdHJhaW50cywgaW5saW5lTGF5b3V0U3RhdGUsIGxpbmVEYW1hZ2UpOwogfQog
Ci12b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRPZkZsb3dDb250ZW50KGNv
bnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYgY29uc3RyYWludHMsIElubGluZUxheW91
dFN0YXRlJiBpbmxpbmVMYXlvdXRTdGF0ZSwgY29uc3QgSW5saW5lRGlzcGxheTo6Q29udGVudCYg
aW5saW5lRGlzcGxheUNvbnRlbnQpCi17Ci0gICAgLy8gQ29sbGVjdGluZyBvdXQtb2YtZmxvdyBi
b3hlcyBoYXBwZW5zIGR1cmluZyB0aGUgaW4tZmxvdyBwaGFzZS4KLSAgICBjb21wdXRlU3RhdGlj
UG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGZvcm1hdHRpbmdTdGF0ZSgpLm91dE9mRmxvd0Jv
eGVzKCksIGNvbnN0cmFpbnRzLCBpbmxpbmVEaXNwbGF5Q29udGVudCwgaW5saW5lTGF5b3V0U3Rh
dGUucGFyZW50QmxvY2tMYXlvdXRTdGF0ZSgpLmZsb2F0aW5nU3RhdGUoKSk7Ci19Ci0KIEludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50
cmluc2ljU2l6ZXMoY29uc3QgSW5saW5lRGFtYWdlKiBsaW5lRGFtYWdlKQogewogICAgIGF1dG8m
IGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGZvcm1hdHRpbmdTdGF0ZSgpOwpAQCAtMjQzLDI2ICsy
MzcsNiBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGbG9hdENvbnRlbnRP
bmx5KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQwogICAgIH0KIH0KIAotdm9pZCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93Q29udGVu
dChjb25zdCBGb3JtYXR0aW5nU3RhdGU6Ok91dE9mRmxvd0JveExpc3QmIG91dE9mRmxvd0JveGVz
LCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBjb25zdCBJ
bmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCwgY29uc3QgRmxvYXRpbmdTdGF0
ZSYgZmxvYXRpbmdTdGF0ZSkKLXsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGNvbXB1dGVzIHRoZSBz
dGF0aWMgcG9zaXRpb24gZm9yIG91dC1vZi1mbG93IGNvbnRlbnQgaW5zaWRlIHRoZSBpbmxpbmUg
Zm9ybWF0dGluZyBjb250ZXh0LgotICAgIC8vIEFzIHBlciBzcGVjLCB0aGUgc3RhdGljIHBvc2l0
aW9uIG9mIGFuIG91dC1vZi1mbG93IGJveCBpcyBjb21wdXRlZCBhcyBpZiB0aGUgcG9zaXRpb24g
d2FzIHNldCB0byBzdGF0aWMuCi0gICAgLy8gSG93ZXZlciBpdCBkb2VzIG5vdCBtZWFuIHRoYXQg
dGhlIG91dC1vZi1mbG93IGJveCBzaG91bGQgYmUgaW52b2x2ZWQgaW4gdGhlIGlubGluZSBsYXlv
dXQgcHJvY2Vzcy4KLSAgICAvLyBJbnN0ZWFkIHdlIGZpZ3VyZSBvdXQgdGhpcyBzdGF0aWMgcG9z
aXRpb24gYWZ0ZXIgdGhlIGlubGluZSBsYXlvdXQgYnkgbG9va2luZyBhdCB0aGUgcHJldmlvdXMv
bmV4dCBzaWJsaW5nIChvciBwYXJlbnQpIGJveCdzIGdlb21ldHJ5IGFuZAotICAgIC8vIHBsYWNl
IHRoZSBvdXQtb2YtZmxvdyBib3ggYXQgdGhlIGxvZ2ljYWwgcmlnaHQgcG9zaXRpb24uCi0gICAg
YXV0byYgZm9ybWF0dGluZ0dlb21ldHJ5ID0gdGhpcy0+Zm9ybWF0dGluZ0dlb21ldHJ5KCk7Ci0g
ICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gdGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7Ci0gICAg
YXV0byBmbG9hdGluZ0NvbnRleHQgPSBGbG9hdGluZ0NvbnRleHQgeyAqdGhpcywgZmxvYXRpbmdT
dGF0ZSB9OwotCi0gICAgZm9yIChhdXRvJiBvdXRPZkZsb3dCb3ggOiBvdXRPZkZsb3dCb3hlcykg
ewotICAgICAgICBpZiAob3V0T2ZGbG93Qm94LT5zdHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5SW5s
aW5lVHlwZSgpKSB7Ci0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0cnkob3V0
T2ZGbG93Qm94KS5zZXRMb2dpY2FsVG9wTGVmdChmb3JtYXR0aW5nR2VvbWV0cnkuc3RhdGljUG9z
aXRpb25Gb3JPdXRPZkZsb3dJbmxpbmVMZXZlbEJveChvdXRPZkZsb3dCb3gsIGNvbnN0cmFpbnRz
LCBkaXNwbGF5Q29udGVudCwgZmxvYXRpbmdDb250ZXh0KSk7Ci0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgfQotICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0cnkob3V0T2ZG
bG93Qm94KS5zZXRMb2dpY2FsVG9wTGVmdChmb3JtYXR0aW5nR2VvbWV0cnkuc3RhdGljUG9zaXRp
b25Gb3JPdXRPZkZsb3dCbG9ja0xldmVsQm94KG91dE9mRmxvd0JveCwgY29uc3RyYWludHMsIGRp
c3BsYXlDb250ZW50KSk7Ci0gICAgfQotfQotCiBzdGF0aWMgTGluZUVuZGluZ0VsbGlwc2lzUG9s
aWN5IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeShjb25zdCBSZW5kZXJTdHlsZSYgcm9vdFN0eWxl
LCBzaXplX3QgbnVtYmVyT2ZMaW5lcywgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG51bWJlck9mVmlz
aWJsZUxpbmVzQWxsb3dlZCkKIHsKICAgICAvLyBXZSBtYXkgaGF2ZSBwYXNzZWQgdGhlIGxpbmUt
Y2xhbXAgbGluZSB3aXRoIG92ZXJmbG93IHZpc2libGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCAxMTQwNjhmMWE3NTIuLmQ4YmIxMmJkMGEz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCkBA
IC01OSw4ICs1OSw3IEBAIGNsYXNzIElubGluZUZvcm1hdHRpbmdDb250ZXh0IGZpbmFsIDogcHVi
bGljIEZvcm1hdHRpbmdDb250ZXh0IHsKIHB1YmxpYzoKICAgICBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dChjb25zdCBFbGVtZW50Qm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIElubGluZUZvcm1h
dHRpbmdTdGF0ZSYpOwogCi0gICAgSW5saW5lTGF5b3V0UmVzdWx0IGxheW91dEluRmxvd0FuZEZs
b2F0Q29udGVudChjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmLCBJbmxpbmVMYXlv
dXRTdGF0ZSYsIGNvbnN0IElubGluZURhbWFnZSogPSBudWxscHRyKTsKLSAgICB2b2lkIGxheW91
dE91dE9mRmxvd0NvbnRlbnQoY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgSW5s
aW5lTGF5b3V0U3RhdGUmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpDb250ZW50Jik7CisgICAgSW5s
aW5lTGF5b3V0UmVzdWx0IGxheW91dChjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQm
LCBJbmxpbmVMYXlvdXRTdGF0ZSYsIGNvbnN0IElubGluZURhbWFnZSogPSBudWxscHRyKTsKICAg
ICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNvbXB1dGVkSW50cmluc2ljU2l6ZXMoY29uc3Qg
SW5saW5lRGFtYWdlKik7CiAgICAgTGF5b3V0VW5pdCBtYXhpbXVtQ29udGVudFNpemUoKTsKIApA
QCAtNzEsNyArNzAsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIElubGluZUxheW91dFJlc3Vs
dCBsaW5lTGF5b3V0KEFic3RyYWN0TGluZUJ1aWxkZXImLCBjb25zdCBJbmxpbmVJdGVtcyYsIElu
bGluZUl0ZW1SYW5nZSwgc3RkOjpvcHRpb25hbDxQcmV2aW91c0xpbmU+LCBjb25zdCBDb25zdHJh
aW50c0ZvcklubGluZUNvbnRlbnQmLCBJbmxpbmVMYXlvdXRTdGF0ZSYsIGNvbnN0IElubGluZURh
bWFnZSogPSBudWxscHRyKTsKICAgICB2b2lkIGxheW91dEZsb2F0Q29udGVudE9ubHkoY29uc3Qg
Q29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgRmxvYXRpbmdTdGF0ZSYpOwotICAgIHZvaWQg
Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93Q29udGVudChjb25zdCBGb3JtYXR0aW5n
U3RhdGU6Ok91dE9mRmxvd0JveExpc3QmLCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRl
bnQmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiwgY29uc3QgRmxvYXRpbmdTdGF0ZSYp
OwogCiAgICAgdm9pZCBjb2xsZWN0Q29udGVudElmTmVlZGVkKCk7CiAgICAgSW5saW5lUmVjdCBj
cmVhdGVEaXNwbGF5Q29udGVudEZvckxpbmUoc2l6ZV90IGxpbmVJbmRleCwgY29uc3QgTGluZUxh
eW91dFJlc3VsdCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIGNvbnN0IElu
bGluZUxheW91dFN0YXRlJiwgSW5saW5lRGlzcGxheTo6Q29udGVudCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9y
bWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAKaW5kZXggM2VjYWMzY2M3
NTJiLi4wOWFiNjk0MTI1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9y
bWF0dGluZ0dlb21ldHJ5LmNwcApAQCAtMjA5LDE3NCArMjA5LDYgQEAgSW5saW5lTGF5b3V0VW5p
dCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkVGV4dEluZGVudChJc0ludHJpbnNp
Y1dpZHRoTW8KICAgICByZXR1cm4geyBtaW5pbXVtVmFsdWVGb3JMZW5ndGgodGV4dEluZGVudCwg
YXZhaWxhYmxlV2lkdGgpIH07CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZmly
c3REaXNwbGF5Qm94SW5kZXhGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0
IElubGluZURpc3BsYXk6OkJveGVzJiBkaXNwbGF5Qm94ZXMpCi17Ci0gICAgLy8gRklYTUU6IEJ1
aWxkIGEgZmlyc3QvbGFzdCBoYXNobWFwIGZvciB0aGVzZSBib3hlcy4KLSAgICBmb3IgKHNpemVf
dCBpbmRleCA9IDA7IGluZGV4IDwgZGlzcGxheUJveGVzLnNpemUoKTsgKytpbmRleCkgewotICAg
ICAgICBpZiAoZGlzcGxheUJveGVzW2luZGV4XS5pc1Jvb3RJbmxpbmVCb3goKSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoJmRpc3BsYXlCb3hlc1tpbmRleF0ubGF5b3V0Qm94
KCkgPT0gJmxheW91dEJveCkKLSAgICAgICAgICAgIHJldHVybiBpbmRleDsKLSAgICB9Ci0gICAg
cmV0dXJuIHsgfTsKLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsYXN0RGlzcGxh
eUJveEluZGV4Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBJbmxpbmVE
aXNwbGF5OjpCb3hlcyYgZGlzcGxheUJveGVzKQotewotICAgIC8vIEZJWE1FOiBCdWlsZCBhIGZp
cnN0L2xhc3QgaGFzaG1hcCBmb3IgdGhlc2UgYm94ZXMuCi0gICAgZm9yIChhdXRvIGluZGV4ID0g
ZGlzcGxheUJveGVzLnNpemUoKTsgaW5kZXgtLTspIHsKLSAgICAgICAgaWYgKGRpc3BsYXlCb3hl
c1tpbmRleF0uaXNSb290SW5saW5lQm94KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgaWYgKCZkaXNwbGF5Qm94ZXNbaW5kZXhdLmxheW91dEJveCgpID09ICZsYXlvdXRCb3gpCi0g
ICAgICAgICAgICByZXR1cm4gaW5kZXg7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLXN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcHJldmlvdXNEaXNwbGF5Qm94SW5kZXgoY29uc3Qg
Qm94JiBvdXRPZkZsb3dCb3gsIGNvbnN0IElubGluZURpc3BsYXk6OkJveGVzJiBkaXNwbGF5Qm94
ZXMpCi17Ci0gICAgYXV0byBwcmV2aW91c0Rpc3BsYXlCb3hJbmRleE9mID0gWyZdIChhdXRvJiBs
YXlvdXRCb3gpIC0+IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB7Ci0gICAgICAgIGZvciAoYXV0byog
Ym94ID0gJmxheW91dEJveDsgYm94OyBib3ggPSBib3gtPnByZXZpb3VzSW5GbG93U2libGluZygp
KSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBkaXNwbGF5Qm94SW5kZXggPSBsYXN0RGlzcGxheUJv
eEluZGV4Rm9yTGF5b3V0Qm94KCpib3gsIGRpc3BsYXlCb3hlcykpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGRpc3BsYXlCb3hJbmRleDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4geyB9Owot
ICAgIH07Ci0KLSAgICBhdXRvKiBjYW5kaWRhdGVCb3ggPSBvdXRPZkZsb3dCb3gucHJldmlvdXNJ
bkZsb3dTaWJsaW5nKCk7Ci0gICAgaWYgKCFjYW5kaWRhdGVCb3gpCi0gICAgICAgIGNhbmRpZGF0
ZUJveCA9IG91dE9mRmxvd0JveC5wYXJlbnQoKS5pc0lubGluZUJveCgpID8gJm91dE9mRmxvd0Jv
eC5wYXJlbnQoKSA6IG51bGxwdHI7Ci0gICAgd2hpbGUgKGNhbmRpZGF0ZUJveCkgewotICAgICAg
ICBpZiAoYXV0byBkaXNwbGF5Qm94SW5kZXggPSBwcmV2aW91c0Rpc3BsYXlCb3hJbmRleE9mKCpj
YW5kaWRhdGVCb3gpKQotICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlCb3hJbmRleDsKLSAgICAg
ICAgY2FuZGlkYXRlQm94ID0gY2FuZGlkYXRlQm94LT5wYXJlbnQoKS5pc0lubGluZUJveCgpID8g
JmNhbmRpZGF0ZUJveC0+cGFyZW50KCkgOiBudWxscHRyOwotICAgIH0KLSAgICByZXR1cm4geyB9
OwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5leHREaXNwbGF5Qm94SW5kZXgo
Y29uc3QgQm94JiBvdXRPZkZsb3dCb3gsIGNvbnN0IElubGluZURpc3BsYXk6OkJveGVzJiBkaXNw
bGF5Qm94ZXMpCi17Ci0gICAgYXV0byBuZXh0RGlzcGxheUJveEluZGV4T2YgPSBbJl0gKGF1dG8m
IGxheW91dEJveCkgLT4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IHsKLSAgICAgICAgZm9yIChhdXRv
KiBib3ggPSAmbGF5b3V0Qm94OyBib3g7IGJveCA9IGJveC0+bmV4dEluRmxvd1NpYmxpbmcoKSkg
ewotICAgICAgICAgICAgaWYgKGF1dG8gZGlzcGxheUJveEluZGV4ID0gZmlyc3REaXNwbGF5Qm94
SW5kZXhGb3JMYXlvdXRCb3goKmJveCwgZGlzcGxheUJveGVzKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZGlzcGxheUJveEluZGV4OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB7IH07Ci0g
ICAgfTsKLQotICAgIGF1dG8qIGNhbmRpZGF0ZUJveCA9IG91dE9mRmxvd0JveC5uZXh0SW5GbG93
U2libGluZygpOwotICAgIGlmICghY2FuZGlkYXRlQm94KQotICAgICAgICBjYW5kaWRhdGVCb3gg
PSBvdXRPZkZsb3dCb3gucGFyZW50KCkuaXNJbmxpbmVCb3goKSA/IG91dE9mRmxvd0JveC5wYXJl
bnQoKS5uZXh0SW5GbG93U2libGluZygpIDogbnVsbHB0cjsKLSAgICB3aGlsZSAoY2FuZGlkYXRl
Qm94KSB7Ci0gICAgICAgIGlmIChhdXRvIGRpc3BsYXlCb3hJbmRleCA9IG5leHREaXNwbGF5Qm94
SW5kZXhPZigqY2FuZGlkYXRlQm94KSkKLSAgICAgICAgICAgIHJldHVybiBkaXNwbGF5Qm94SW5k
ZXg7Ci0gICAgICAgIGNhbmRpZGF0ZUJveCA9IGNhbmRpZGF0ZUJveC0+cGFyZW50KCkuaXNJbmxp
bmVCb3goKSA/IGNhbmRpZGF0ZUJveC0+cGFyZW50KCkubmV4dEluRmxvd1NpYmxpbmcoKSA6IG51
bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLUlubGluZUxheW91dFVuaXQgSW5s
aW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb250ZW50TGVmdEFmdGVyTGFzdExpbmUoY29uc3QgQ29u
c3RyYWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cywgc3RkOjpvcHRpb25hbDxJbmxp
bmVMYXlvdXRVbml0PiBsYXN0TGluZUxvZ2ljYWxCb3R0b20sIGNvbnN0IEZsb2F0aW5nQ29udGV4
dCYgZmxvYXRpbmdDb250ZXh0KSBjb25zdAotewotICAgIGF1dG8gY29udGVudEhhc1ByZXZpb3Vz
TGluZSA9IGxhc3RMaW5lTG9naWNhbEJvdHRvbSA/IHN0ZDo6bWFrZV9vcHRpb25hbCh0cnVlKSA6
IHN0ZDo6bnVsbG9wdDsKLSAgICBhdXRvIHRleHRJbmRlbnQgPSBjb21wdXRlZFRleHRJbmRlbnQo
SXNJbnRyaW5zaWNXaWR0aE1vZGU6Ok5vLCBjb250ZW50SGFzUHJldmlvdXNMaW5lLCBjb25zdHJh
aW50cy5ob3Jpem9udGFsKCkubG9naWNhbFdpZHRoKTsKLSAgICBhdXRvIGZsb2F0Q29uc3RyYWlu
dHMgPSBmbG9hdENvbnN0cmFpbnRzRm9yTGluZShsYXN0TGluZUxvZ2ljYWxCb3R0b20udmFsdWVf
b3IoY29uc3RyYWludHMubG9naWNhbFRvcCgpKSwgMCwgZmxvYXRpbmdDb250ZXh0KTsKLSAgICBh
dXRvIGxpbmVCb3hMZWZ0ID0gY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxMZWZ0Owot
ICAgIGF1dG8gbGluZUJveFdpZHRoID0gY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxX
aWR0aDsKLSAgICAvLyBGSVhNRTogQWRkIG1pc3NpbmcgUlRMIHN1cHBvcnQuCi0gICAgaWYgKGZs
b2F0Q29uc3RyYWludHMubGVmdCkgewotICAgICAgICBhdXRvIGZsb2F0T2Zmc2V0ID0gc3RkOjpt
YXgoMF9sdSwgZmxvYXRDb25zdHJhaW50cy5sZWZ0LT54IC0gY29uc3RyYWludHMuaG9yaXpvbnRh
bCgpLmxvZ2ljYWxMZWZ0KTsKLSAgICAgICAgbGluZUJveExlZnQgKz0gZmxvYXRPZmZzZXQ7Ci0g
ICAgICAgIGxpbmVCb3hXaWR0aCAtPSBmbG9hdE9mZnNldDsKLSAgICB9Ci0gICAgaWYgKGZsb2F0
Q29uc3RyYWludHMucmlnaHQpIHsKLSAgICAgICAgYXV0byBsaW5lQm94UmlnaHQgPSAoY29uc3Ry
YWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxMZWZ0ICsgY29uc3RyYWludHMuaG9yaXpvbnRhbCgp
LmxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIGF1dG8gZmxvYXRPZmZzZXQgPSBzdGQ6Om1heCgwX2x1
LCBsaW5lQm94UmlnaHQgLSBmbG9hdENvbnN0cmFpbnRzLnJpZ2h0LT54KTsKLSAgICAgICAgbGlu
ZUJveFdpZHRoIC09IGZsb2F0T2Zmc2V0OwotICAgIH0KLSAgICBsaW5lQm94TGVmdCArPSB0ZXh0
SW5kZW50OwotICAgIGF1dG8gcm9vdElubGluZUJveExlZnQgPSBob3Jpem9udGFsQWxpZ25tZW50
T2Zmc2V0KGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLnN0eWxlKCksIHsgfSwgbGluZUJveFdp
ZHRoLCB7IH0sIHsgfSwgdHJ1ZSk7Ci0gICAgcmV0dXJuIGxpbmVCb3hMZWZ0ICsgcm9vdElubGlu
ZUJveExlZnQ7Ci19Ci0KLUxheW91dFBvaW50IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6c3Rh
dGljUG9zaXRpb25Gb3JPdXRPZkZsb3dJbmxpbmVMZXZlbEJveChjb25zdCBCb3gmIG91dE9mRmxv
d0JveCwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cywgY29u
c3QgSW5saW5lRGlzcGxheTo6Q29udGVudCYgZGlzcGxheUNvbnRlbnQsIGNvbnN0IEZsb2F0aW5n
Q29udGV4dCYgZmxvYXRpbmdDb250ZXh0KSBjb25zdAotewotICAgIEFTU0VSVChvdXRPZkZsb3dC
b3guc3R5bGUoKS5pc09yaWdpbmFsRGlzcGxheUlubGluZVR5cGUoKSk7Ci0gICAgYXV0byYgbGlu
ZXMgPSBkaXNwbGF5Q29udGVudC5saW5lczsKLSAgICBhdXRvJiBib3hlcyA9IGRpc3BsYXlDb250
ZW50LmJveGVzOwotCi0gICAgaWYgKGxpbmVzLmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQo
Ym94ZXMuaXNFbXB0eSgpKTsKLSAgICAgICAgcmV0dXJuIHsgY29udGVudExlZnRBZnRlckxhc3RM
aW5lKGNvbnN0cmFpbnRzLCB7IH0sIGZsb2F0aW5nQ29udGV4dCksIGNvbnN0cmFpbnRzLmxvZ2lj
YWxUb3AoKSB9OwotICAgIH0KLQotICAgIGF1dG8gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPSBm
b3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKS5zdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCk7Ci0gICAgYXV0byBsZWZ0U2lkZVRvTG9naWNhbFRvcExlZnQgPSBbJl0gKGF1dG8mIGRpc3Bs
YXlCb3gsIGF1dG8mIGxpbmUsIGJvb2wgbWF5TmVlZE1hcmdpbkFkanVzdG1lbnQgPSB0cnVlKSB7
Ci0gICAgICAgIGF1dG8gbWFyZ2luU3RhcnQgPSBMYXlvdXRVbml0IHsgfTsKLSAgICAgICAgaWYg
KG1heU5lZWRNYXJnaW5BZGp1c3RtZW50ICYmIGRpc3BsYXlCb3guaXNOb25Sb290SW5saW5lTGV2
ZWxCb3goKSkKLSAgICAgICAgICAgIG1hcmdpblN0YXJ0ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5n
ZW9tZXRyeUZvckJveChkaXNwbGF5Qm94LmxheW91dEJveCgpKS5tYXJnaW5TdGFydCgpOwotICAg
ICAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPyBMYXlvdXRQb2ludChkaXNwbGF5
Qm94LmxlZnQoKSAtIG1hcmdpblN0YXJ0LCBsaW5lLnRvcCgpKSA6IExheW91dFBvaW50KGRpc3Bs
YXlCb3gudG9wKCkgLSBtYXJnaW5TdGFydCwgbGluZS5sZWZ0KCkpOwotICAgIH07Ci0gICAgYXV0
byByaWdodFNpZGVUb0xvZ2ljYWxUb3BMZWZ0ID0gWyZdIChhdXRvJiBkaXNwbGF5Qm94LCBhdXRv
JiBsaW5lKSB7Ci0gICAgICAgIGF1dG8gbWFyZ2luRW5kID0gTGF5b3V0VW5pdCB7IH07Ci0gICAg
ICAgIGlmIChkaXNwbGF5Qm94LmlzTm9uUm9vdElubGluZUxldmVsQm94KCkpCi0gICAgICAgICAg
ICBtYXJnaW5FbmQgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGRpc3BsYXlC
b3gubGF5b3V0Qm94KCkpLm1hcmdpbkVuZCgpOwotICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUgPyBMYXlvdXRQb2ludChkaXNwbGF5Qm94LnJpZ2h0KCkgKyBtYXJnaW5FbmQs
IGxpbmUudG9wKCkpIDogTGF5b3V0UG9pbnQoZGlzcGxheUJveC5ib3R0b20oKSArIG1hcmdpbkVu
ZCwgbGluZS5sZWZ0KCkpOwotICAgIH07Ci0KLSAgICBhdXRvIHByZXZpb3VzRGlzcGxheUJveElu
ZGV4QmVmb3JlT3V0T2ZGbG93Qm94ID0gcHJldmlvdXNEaXNwbGF5Qm94SW5kZXgob3V0T2ZGbG93
Qm94LCBib3hlcyk7Ci0gICAgaWYgKCFwcmV2aW91c0Rpc3BsYXlCb3hJbmRleEJlZm9yZU91dE9m
Rmxvd0JveCkKLSAgICAgICAgcmV0dXJuIGxlZnRTaWRlVG9Mb2dpY2FsVG9wTGVmdChib3hlc1sw
XSwgbGluZXNbMF0pOwotCi0gICAgYXV0byYgcHJldmlvdXNEaXNwbGF5Qm94ID0gYm94ZXNbKnBy
ZXZpb3VzRGlzcGxheUJveEluZGV4QmVmb3JlT3V0T2ZGbG93Qm94XTsKLSAgICBhdXRvJiBjdXJy
ZW50TGluZSA9IGxpbmVzW3ByZXZpb3VzRGlzcGxheUJveC5saW5lSW5kZXgoKV07Ci0gICAgaWYg
KHByZXZpb3VzRGlzcGxheUJveC5pc0lubGluZUJveCgpICYmICZvdXRPZkZsb3dCb3gucGFyZW50
KCkgPT0gJnByZXZpb3VzRGlzcGxheUJveC5sYXlvdXRCb3goKSkgewotICAgICAgICAvLyBTcGVj
aWFsIGhhbmRsaW5nIGZvciBjYXNlcyB3aGVuIHRoaXMgaXMgdGhlIGZpcnN0IGJveCBpbnNpZGUg
YW4gaW5saW5lIGJveDoKLSAgICAgICAgLy8gPGRpdj50ZXh0PHNwYW4+PGltZyBzdHlsZT0icG9z
aXRpb246IGFic29sdXRlIj5jb250ZW50PC9zcGFuPjwvZGl2PgotICAgICAgICBhdXRvJiBpbmxp
bmVCb3ggPSBwcmV2aW91c0Rpc3BsYXlCb3gubGF5b3V0Qm94KCk7Ci0gICAgICAgIGF1dG8gaW5s
aW5lQm94RGlzcGxheUJveCA9IGJveGVzWypmaXJzdERpc3BsYXlCb3hJbmRleEZvckxheW91dEJv
eChpbmxpbmVCb3gsIGJveGVzKV07Ci0gICAgICAgIGF1dG8gaW5saW5lQ29udGVudEJveE9mZnNl
dCA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goaW5saW5lQm94KS5ib3JkZXJB
bmRQYWRkaW5nU3RhcnQoKTsKLSAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKQot
ICAgICAgICAgICAgaW5saW5lQm94RGlzcGxheUJveC5tb3ZlSG9yaXpvbnRhbGx5KGlubGluZUNv
bnRlbnRCb3hPZmZzZXQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBpbmxpbmVCb3hEaXNw
bGF5Qm94Lm1vdmVWZXJ0aWNhbGx5KGlubGluZUNvbnRlbnRCb3hPZmZzZXQpOwotICAgICAgICBy
ZXR1cm4gbGVmdFNpZGVUb0xvZ2ljYWxUb3BMZWZ0KGlubGluZUJveERpc3BsYXlCb3gsIGxpbmVz
W2lubGluZUJveERpc3BsYXlCb3gubGluZUluZGV4KCldLCBmYWxzZSk7Ci0gICAgfQotCi0gICAg
YXV0byBwcmV2aW91c0JveE92ZXJmbG93cyA9IChpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IHBy
ZXZpb3VzRGlzcGxheUJveC5yaWdodCgpID4gY3VycmVudExpbmUucmlnaHQoKSA6IHByZXZpb3Vz
RGlzcGxheUJveC5ib3R0b20oKSA+IGN1cnJlbnRMaW5lLmJvdHRvbSgpKSB8fCBwcmV2aW91c0Rp
c3BsYXlCb3guaXNMaW5lQnJlYWtCb3goKTsKLSAgICBpZiAoIXByZXZpb3VzQm94T3ZlcmZsb3dz
KQotICAgICAgICByZXR1cm4gcmlnaHRTaWRlVG9Mb2dpY2FsVG9wTGVmdChwcmV2aW91c0Rpc3Bs
YXlCb3gsIGN1cnJlbnRMaW5lKTsKLQotICAgIGF1dG8gbmV4dERpc3BsYXlCb3hJbmRleEFmdGVy
T3V0T2ZGbG93ID0gbmV4dERpc3BsYXlCb3hJbmRleChvdXRPZkZsb3dCb3gsIGJveGVzKTsKLSAg
ICBpZiAoIW5leHREaXNwbGF5Qm94SW5kZXhBZnRlck91dE9mRmxvdykgewotICAgICAgICAvLyBU
aGlzIGlzIHRoZSBsYXN0IGNvbnRlbnQgb24gdGhlIGJsb2NrIGFuZCBpdCBkb2VzIG5vdCBmaXQg
dGhlIGxhc3QgbGluZS4KLSAgICAgICAgcmV0dXJuIHsgY29udGVudExlZnRBZnRlckxhc3RMaW5l
KGNvbnN0cmFpbnRzLCBjdXJyZW50TGluZS5ib3R0b20oKSwgZmxvYXRpbmdDb250ZXh0KSwgaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUgPyBjdXJyZW50TGluZS5ib3R0b20oKSA6IGN1cnJlbnRMaW5l
LnJpZ2h0KCkgfTsKLSAgICB9Ci0gICAgYXV0byYgbmV4dERpc3BsYXlCb3ggPSBib3hlc1sqbmV4
dERpc3BsYXlCb3hJbmRleEFmdGVyT3V0T2ZGbG93XTsKLSAgICByZXR1cm4gbGVmdFNpZGVUb0xv
Z2ljYWxUb3BMZWZ0KG5leHREaXNwbGF5Qm94LCBsaW5lc1tuZXh0RGlzcGxheUJveC5saW5lSW5k
ZXgoKV0pOwotfQotCi1MYXlvdXRQb2ludCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OnN0YXRp
Y1Bvc2l0aW9uRm9yT3V0T2ZGbG93QmxvY2tMZXZlbEJveChjb25zdCBCb3gmIG91dE9mRmxvd0Jv
eCwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cywgY29uc3Qg
SW5saW5lRGlzcGxheTo6Q29udGVudCYgZGlzcGxheUNvbnRlbnQpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKG91dE9mRmxvd0JveC5zdHlsZSgpLmlzRGlzcGxheUJsb2NrTGV2ZWwoKSk7Ci0KLSAgICBh
dXRvIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID0gZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCku
c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwotICAgIGF1dG8mIGxpbmVzID0gZGlz
cGxheUNvbnRlbnQubGluZXM7Ci0gICAgYXV0byYgYm94ZXMgPSBkaXNwbGF5Q29udGVudC5ib3hl
czsKLSAgICBhdXRvIGNvbnRlbnRCb3hUb3BMZWZ0ID0gTGF5b3V0UG9pbnQgeyBjb25zdHJhaW50
cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQsIGNvbnN0cmFpbnRzLmxvZ2ljYWxUb3AoKSB9Owot
Ci0gICAgaWYgKGxpbmVzLmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQoYm94ZXMuaXNFbXB0
eSgpKTsKLSAgICAgICAgcmV0dXJuIGNvbnRlbnRCb3hUb3BMZWZ0OwotICAgIH0KLQotICAgIC8v
IEJsb2NrIGxldmVsIGJveGVzIGFyZSBwbGFjZWQgdW5kZXIgdGhlIGN1cnJlbnQgbGluZSBhcyBp
ZiB0aGV5IHdlcmUgbm9ybWFsIGluZmxvdyBibG9jayBsZXZlbCBib3hlcy4KLSAgICBhdXRvIHBy
ZXZpb3VzRGlzcGxheUJveEluZGV4QmVmb3JlT3V0T2ZGbG93Qm94ID0gcHJldmlvdXNEaXNwbGF5
Qm94SW5kZXgob3V0T2ZGbG93Qm94LCBib3hlcyk7Ci0gICAgaWYgKCFwcmV2aW91c0Rpc3BsYXlC
b3hJbmRleEJlZm9yZU91dE9mRmxvd0JveCkKLSAgICAgICAgcmV0dXJuIHsgY29udGVudEJveFRv
cExlZnQueCgpLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IGxpbmVzWzBdLnRvcCgpIDogbGlu
ZXNbMF0ubGVmdCgpIH07Ci0gICAgYXV0byYgY3VycmVudExpbmUgPSBsaW5lc1tib3hlc1sqcHJl
dmlvdXNEaXNwbGF5Qm94SW5kZXhCZWZvcmVPdXRPZkZsb3dCb3hdLmxpbmVJbmRleCgpXTsKLSAg
ICByZXR1cm4geyBjb250ZW50Qm94VG9wTGVmdC54KCksIExheW91dFVuaXQgeyBpc0hvcml6b250
YWxXcml0aW5nTW9kZSA/IGN1cnJlbnRMaW5lLmJvdHRvbSgpIDogY3VycmVudExpbmUucmlnaHQo
KSB9IH07Ci19Ci0KIElubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpp
bml0aWFsTGluZUhlaWdodChib29sIGlzRmlyc3RMaW5lKSBjb25zdAogewogICAgIGlmIChsYXlv
dXRTdGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nR2VvbWV0cnkuaAppbmRleCA1YWJkZTFlODBiN2EuLmU1MzZkOTMwZjBiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmgKQEAg
LTU2LDkgKzU2LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIElubGluZVJlY3QgZmxpcFZpc3Vh
bFJlY3RUb0xvZ2ljYWxGb3JXcml0aW5nTW9kZShjb25zdCBJbmxpbmVSZWN0JiB2aXN1YWxSZWN0
LCBXcml0aW5nTW9kZSk7CiAKLSAgICBMYXlvdXRQb2ludCBzdGF0aWNQb3NpdGlvbkZvck91dE9m
Rmxvd0lubGluZUxldmVsQm94KGNvbnN0IEJveCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93
Q29udGVudCYsIGNvbnN0IElubGluZURpc3BsYXk6OkNvbnRlbnQmLCBjb25zdCBGbG9hdGluZ0Nv
bnRleHQmKSBjb25zdDsKLSAgICBMYXlvdXRQb2ludCBzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxv
d0Jsb2NrTGV2ZWxCb3goY29uc3QgQm94JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250
ZW50JiwgY29uc3QgSW5saW5lRGlzcGxheTo6Q29udGVudCYpIGNvbnN0OwotCiAgICAgdm9pZCBh
ZGp1c3RNYXJnaW5TdGFydEZvckxpc3RNYXJrZXIoY29uc3QgRWxlbWVudEJveCYsIExheW91dFVu
aXQgbmVzdGVkTGlzdE1hcmtlck1hcmdpblN0YXJ0LCBJbmxpbmVMYXlvdXRVbml0IHJvb3RJbmxp
bmVCb3hPZmZzZXQpIGNvbnN0OwogCiAgICAgc3RhdGljIElubGluZUxheW91dFVuaXQgaG9yaXpv
bnRhbEFsaWdubWVudE9mZnNldChjb25zdCBSZW5kZXJTdHlsZSYgcm9vdFN0eWxlLCBJbmxpbmVM
YXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsUmlnaHQsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2lj
YWxSaWdodCwgSW5saW5lTGF5b3V0VW5pdCBoYW5naW5nVHJhaWxpbmdXaWR0aCwgY29uc3QgTGlu
ZTo6UnVuTGlzdCYgcnVucywgYm9vbCBpc0xhc3RMaW5lLCBzdGQ6Om9wdGlvbmFsPFRleHREaXJl
Y3Rpb24+IGlubGluZUJhc2VEaXJlY3Rpb25PdmVycmlkZSA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVJdGVtc0J1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNwcAppbmRleCAyM2FlNmQ4MDgwMjYu
LjM2NjNkZTQyMjkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIu
Y3BwCkBAIC04Niw5ICs4Niw3IEBAIElubGluZUl0ZW1zQnVpbGRlcjo6SW5saW5lSXRlbXNCdWls
ZGVyKGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwKIHZvaWQgSW5saW5l
SXRlbXNCdWlsZGVyOjpidWlsZChJbmxpbmVJdGVtUG9zaXRpb24gc3RhcnRQb3NpdGlvbikKIHsK
ICAgICBJbmxpbmVJdGVtcyBpbmxpbmVJdGVtczsKLSAgICBGb3JtYXR0aW5nU3RhdGU6Ok91dE9m
Rmxvd0JveExpc3Qgb3V0T2ZGbG93Qm94ZXM7Ci0KLSAgICBjb2xsZWN0SW5saW5lSXRlbXMoaW5s
aW5lSXRlbXMsIG91dE9mRmxvd0JveGVzLCBzdGFydFBvc2l0aW9uKTsKKyAgICBjb2xsZWN0SW5s
aW5lSXRlbXMoaW5saW5lSXRlbXMsIHN0YXJ0UG9zaXRpb24pOwogCiAgICAgaWYgKCFyb290KCku
c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgfHwgY29udGVudFJlcXVpcmVzVmlzdWFs
UmVvcmRlcmluZygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgcGFydGlh
bCwgeWV0IHBhcmFncmFwaCBsZXZlbCBiaWRpIGNvbnRlbnQgaGFuZGxpbmcuCkBAIC0xMDksNyAr
MTA3LDYgQEAgdm9pZCBJbmxpbmVJdGVtc0J1aWxkZXI6OmJ1aWxkKElubGluZUl0ZW1Qb3NpdGlv
biBzdGFydFBvc2l0aW9uKQogICAgICAgICBtX2Zvcm1hdHRpbmdTdGF0ZS5hcHBlbmRJbmxpbmVJ
dGVtcyhXVEZNb3ZlKGlubGluZUl0ZW1zKSk7CiAgICAgfTsKICAgICBhZGp1c3RJbmxpbmVGb3Jt
YXR0aW5nU3RhdGVXaXRoTmV3SW5saW5lSXRlbXMoKTsKLSAgICBtX2Zvcm1hdHRpbmdTdGF0ZS5z
ZXRPdXRPZkZsb3dCb3hlcyhXVEZNb3ZlKG91dE9mRmxvd0JveGVzKSk7CiAKICNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIC8vIENoZWNrIGlmIHdlJ3ZlIGdvdCBtYXRjaGluZyBpbmxpbmUgYm94IHN0
YXJ0L2VuZCBwYWlycyBhbmQgdW5pcXVlIGlubGluZSBsZXZlbCBpdGVtcyAobm9uLXRleHQsIG5v
bi1pbmxpbmUgYm94IGl0ZW1zKS4KQEAgLTE5MSw3ICsxODgsNyBAQCBzdGF0aWMgTGF5b3V0UXVl
dWUgaW5pdGlhbGl6ZUxheW91dFF1ZXVlKGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250
ZXh0Um9vdAogICAgIHJldHVybiBsYXlvdXRRdWV1ZTsKIH0KIAotdm9pZCBJbmxpbmVJdGVtc0J1
aWxkZXI6OmNvbGxlY3RJbmxpbmVJdGVtcyhJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIEZvcm1h
dHRpbmdTdGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCYgb3V0T2ZGbG93Qm94ZXMsIElubGluZUl0ZW1Q
b3NpdGlvbiBzdGFydFBvc2l0aW9uKQordm9pZCBJbmxpbmVJdGVtc0J1aWxkZXI6OmNvbGxlY3RJ
bmxpbmVJdGVtcyhJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIElubGluZUl0ZW1Qb3NpdGlvbiBz
dGFydFBvc2l0aW9uKQogewogICAgIC8vIFRyYXZlcnNlIHRoZSB0cmVlIGFuZCBjcmVhdGUgaW5s
aW5lIGl0ZW1zIG91dCBvZiBpbmxpbmUgYm94ZXMgYW5kIGxlYWYgbm9kZXMuIFRoaXMgZXNzZW50
aWFsbHkgdHVybnMgdGhlIHRyZWUgaW5saW5lIHN0cnVjdHVyZSBpbnRvIGEgZmxhdCBvbmUuCiAg
ICAgLy8gPHNwYW4+dGV4dDxzcGFuPjwvc3Bhbj48aW1nPjwvc3Bhbj4gLT4gW0lubGluZUJveFN0
YXJ0XVtJbmxpbmVMZXZlbEJveF1bSW5saW5lQm94U3RhcnRdW0lubGluZUJveEVuZF1bSW5saW5l
TGV2ZWxCb3hdW0lubGluZUJveEVuZF0KQEAgLTIzMyw5ICsyMzAsOCBAQCB2b2lkIElubGluZUl0
ZW1zQnVpbGRlcjo6Y29sbGVjdElubGluZUl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywg
Rm9ybWF0dGluZwogICAgICAgICB3aGlsZSAoIWxheW91dFF1ZXVlLmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgYXV0byBsYXlvdXRCb3ggPSBsYXlvdXRRdWV1ZS50YWtlTGFzdCgpOwogICAgICAg
ICAgICAgaWYgKGxheW91dEJveC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAg
ICAgICAgICAvLyBMZXQncyBub3QgY29uc3RydWN0IElubGluZUl0ZW1zIGZvciBvdXQtb2YtZmxv
dyBjb250ZW50IGFzIHRoZXkgZG9uJ3QgcGFydGljaXBhdGUgaW4gdGhlIGlubGluZSBsYXlvdXQu
Ci0gICAgICAgICAgICAgICAgLy8gSG93ZXZlciB0byBiZSBhYmxlIHRvIHN0YXRpYyBwb3NpdGlv
bmluZyB0aGVtLCB3ZSBuZWVkIHRvIGNvbXB1dGUgdGhlaXIgYXBwcm94aW1hdGUgcG9zaXRpb25z
LgotICAgICAgICAgICAgICAgIG91dE9mRmxvd0JveGVzLmFwcGVuZChsYXlvdXRCb3gpOworICAg
ICAgICAgICAgICAgIG1faXNOb25CaWRpVGV4dEFuZEZvcmNlZExpbmVCcmVha09ubHlDb250ZW50
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaW5saW5lSXRlbXMuYXBwZW5kKHsgbGF5b3V0Qm94
LCBJbmxpbmVJdGVtOjpUeXBlOjpPcGFxdWUgfSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGxh
eW91dEJveC0+aXNJbmxpbmVUZXh0Qm94KCkpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBpbmxp
bmVUZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4obGF5b3V0Qm94KTsKICAgICAgICAg
ICAgICAgICBoYW5kbGVUZXh0Q29udGVudChpbmxpbmVUZXh0Qm94LCBpbmxpbmVJdGVtcywgcGFy
dGlhbENvbnRlbnRPZmZzZXQoaW5saW5lVGV4dEJveCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVJdGVtc0J1aWxkZXIuaAppbmRleCA1ZDlkN2FjN2UyNDAuLjUyMmQxODM4Nzc1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lSXRlbXNCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgYnVpbGQoSW5saW5lSXRlbVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24pOwog
CiBwcml2YXRlOgotICAgIHZvaWQgY29sbGVjdElubGluZUl0ZW1zKElubGluZUl0ZW1zJiwgRm9y
bWF0dGluZ1N0YXRlOjpPdXRPZkZsb3dCb3hMaXN0JiwgSW5saW5lSXRlbVBvc2l0aW9uIHN0YXJ0
UG9zaXRpb24pOworICAgIHZvaWQgY29sbGVjdElubGluZUl0ZW1zKElubGluZUl0ZW1zJiwgSW5s
aW5lSXRlbVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24pOwogICAgIHZvaWQgYnJlYWtBbmRDb21wdXRl
QmlkaUxldmVscyhJbmxpbmVJdGVtcyYpOwogICAgIHZvaWQgY29tcHV0ZUlubGluZVRleHRJdGVt
V2lkdGhzKElubGluZUl0ZW1zJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKaW5kZXgg
MzNhZmY5MTQ1MzM1Li40Njg0ZWU4OWU5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3Bw
CkBAIC0yNjAsNiArMjYwLDI3IEBAIHZvaWQgTGluZTo6aGFuZGxlT3ZlcmZsb3dpbmdOb25CcmVh
a2luZ1NwYWNlKFRyYWlsaW5nQ29udGVudEFjdGlvbiB0cmFpbGluZ0NvbnRlCiAgICAgbV9jb250
ZW50TG9naWNhbFdpZHRoIC09IHJlbW92ZWRPckNvbGxhcHNlZENvbnRlbnRXaWR0aDsKIH0KIAor
Y29uc3QgQm94KiBMaW5lOjpyZW1vdmVPdmVyZmxvd2luZ091ck9mRmxvd0NvbnRlbnQoKQorewor
ICAgIGF1dG8gbGFzdFRyYWlsaW5nT3BhcXVlSXRlbUluZGV4ID0gc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IHsgfTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IG1fcnVucy5zaXplKCk7IGluZGV4LS07
KSB7CisgICAgICAgIGF1dG8mIHJ1biA9IG1fcnVuc1tpbmRleF07CisgICAgICAgIGlmIChydW4u
aXNPcGFxdWUoKSkgeworICAgICAgICAgICAgbGFzdFRyYWlsaW5nT3BhcXVlSXRlbUluZGV4ID0g
aW5kZXg7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXJ1
bi5sb2dpY2FsV2lkdGgoKSAmJiAocnVuLmlzSW5saW5lQm94U3RhcnQoKSB8fCBydW4uaXNJbmxp
bmVCb3hFbmQoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGlmICghbGFzdFRyYWlsaW5nT3BhcXVlSXRlbUluZGV4KQorICAgICAgICByZXR1cm4g
eyB9OworICAgIGF1dG8qIGxhc3RUcmFpbGluZ09wYXF1ZUJveCA9ICZtX3J1bnNbKmxhc3RUcmFp
bGluZ09wYXF1ZUl0ZW1JbmRleF0ubGF5b3V0Qm94KCk7CisgICAgbV9ydW5zLnJlbW92ZSgqbGFz
dFRyYWlsaW5nT3BhcXVlSXRlbUluZGV4LCBtX3J1bnMuc2l6ZSgpIC0gKmxhc3RUcmFpbGluZ09w
YXF1ZUl0ZW1JbmRleCk7CisgICAgQVNTRVJUKCFtX3J1bnMuaXNFbXB0eSgpKTsKKyAgICByZXR1
cm4gbGFzdFRyYWlsaW5nT3BhcXVlQm94OworfQorCiB2b2lkIExpbmU6OmhhbmRsZVRyYWlsaW5n
SGFuZ2luZ0NvbnRlbnQoc3RkOjpvcHRpb25hbDxJbnRyaW5zaWNXaWR0aE1vZGU+IGludHJpbnNp
Y1dpZHRoTW9kZSwgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9udGFsQXZhaWxhYmxlU3BhY2VGb3JD
b250ZW50LCBib29sIGlzTGFzdEZvcm1hdHRlZExpbmUpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFm
dHMuY3Nzd2cub3JnL2Nzcy10ZXh0LyNoYW5naW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmgKaW5k
ZXggNGQ5M2Q3MzZiZmE4Li43YjJhMDQzY2QyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmgK
QEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIElubGluZUxheW91dFVuaXQgaGFuZGxlVHJh
aWxpbmdUcmltbWFibGVDb250ZW50KFRyYWlsaW5nQ29udGVudEFjdGlvbik7CiAgICAgdm9pZCBo
YW5kbGVUcmFpbGluZ0hhbmdpbmdDb250ZW50KHN0ZDo6b3B0aW9uYWw8SW50cmluc2ljV2lkdGhN
b2RlPiwgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9udGFsQXZhaWxhYmxlU3BhY2UsIGJvb2wgaXNM
YXN0Rm9ybWF0dGVkTGluZSk7CiAgICAgdm9pZCBoYW5kbGVPdmVyZmxvd2luZ05vbkJyZWFraW5n
U3BhY2UoVHJhaWxpbmdDb250ZW50QWN0aW9uLCBJbmxpbmVMYXlvdXRVbml0IG92ZXJmbG93aW5n
V2lkdGgpOworICAgIGNvbnN0IEJveCogcmVtb3ZlT3ZlcmZsb3dpbmdPdXJPZkZsb3dDb250ZW50
KCk7CiAgICAgdm9pZCByZXNldEJpZGlMZXZlbEZvclRyYWlsaW5nV2hpdGVzcGFjZShVQmlEaUxl
dmVsIHJvb3RCaWRpTGV2ZWwpOwogICAgIHZvaWQgYXBwbHlSdW5FeHBhbnNpb24oSW5saW5lTGF5
b3V0VW5pdCBob3Jpem9udGFsQXZhaWxhYmxlU3BhY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmVCb3guY3BwCmluZGV4IDNiYzE4MjUyMmIzNy4uNjJkNjY3MmVjODgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQm94LmNwcApAQCAtMTMwLDYgKzEzMCwxMyBAQCBJbmxpbmVSZWN0
IExpbmVCb3g6OmxvZ2ljYWxCb3JkZXJCb3hGb3JJbmxpbmVCb3goY29uc3QgQm94JiBsYXlvdXRC
b3gsIGNvbnN0IEJveAogICAgIHJldHVybiBsb2dpY2FsUmVjdDsKIH0KIAorSW5saW5lUmVjdCBM
aW5lQm94Ojpsb2dpY2FsUmVjdEZvck9wYXF1ZUJveChjb25zdCBMaW5lOjpSdW4mIG9wYXF1ZVJ1
biwgY29uc3QgQm94R2VvbWV0cnkmIGJveEdlb21ldHJ5KSBjb25zdAoreworICAgIEFTU0VSVChv
cGFxdWVSdW4uaXNPcGFxdWUoKSk7CisgICAgQVNTRVJUKG9wYXF1ZVJ1bi5sYXlvdXRCb3goKS5z
dHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5SW5saW5lVHlwZSgpKTsKKyAgICByZXR1cm4geyB7IH0s
IG1fcm9vdElubGluZUJveC5sb2dpY2FsTGVmdCgpICsgb3BhcXVlUnVuLmxvZ2ljYWxMZWZ0KCks
IGJveEdlb21ldHJ5LmJvcmRlckJveFdpZHRoKCksIGJveEdlb21ldHJ5LmJvcmRlckJveEhlaWdo
dCgpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIExheW91dAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmgKaW5kZXggOTQwNTQ5YjU3NTU2Li4zZTBl
MzllNzc3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmgKQEAgLTcxLDYgKzcxLDcg
QEAgcHVibGljOgogICAgIElubGluZVJlY3QgbG9naWNhbFJlY3RGb3JSb290SW5saW5lQm94KCkg
Y29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LmxvZ2ljYWxSZWN0KCk7IH0KICAgICBJbmxp
bmVSZWN0IGxvZ2ljYWxCb3JkZXJCb3hGb3JBdG9taWNJbmxpbmVMZXZlbEJveChjb25zdCBCb3gm
LCBjb25zdCBCb3hHZW9tZXRyeSYpIGNvbnN0OwogICAgIElubGluZVJlY3QgbG9naWNhbEJvcmRl
ckJveEZvcklubGluZUJveChjb25zdCBCb3gmLCBjb25zdCBCb3hHZW9tZXRyeSYpIGNvbnN0Owor
ICAgIElubGluZVJlY3QgbG9naWNhbFJlY3RGb3JPcGFxdWVCb3goY29uc3QgTGluZTo6UnVuJiBv
cGFxdWVSdW4sIGNvbnN0IEJveEdlb21ldHJ5JikgY29uc3Q7CiAKICAgICBjb25zdCBJbmxpbmVM
ZXZlbEJveCogaW5saW5lTGV2ZWxCb3hGb3IoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0IHsg
cmV0dXJuIGNvbnN0X2Nhc3Q8TGluZUJveCY+KCp0aGlzKS5pbmxpbmVMZXZlbEJveEZvcihsYXlv
dXRCb3gpOyB9CiAgICAgY29uc3QgSW5saW5lTGV2ZWxCb3gmIGlubGluZUxldmVsQm94Rm9yKGNv
bnN0IExpbmU6OlJ1biYgbGluZVJ1bikgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxMaW5lQm94
Jj4oKnRoaXMpLmlubGluZUxldmVsQm94Rm9yKGxpbmVSdW4pOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVp
bGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKaW5kZXggNDM3MDgzNzdlZWI5Li5kZjU2OTIwNDcxMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTQ3Nyw2ICs0
NzcsMjYgQEAgTGluZUNvbnRlbnQgTGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQW5kRmxvYXRDb250
ZW50KGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbmVlZHMKICAgICAgICAgICAgICAgICBtX2xpbmUu
aGFuZGxlT3ZlcmZsb3dpbmdOb25CcmVha2luZ1NwYWNlKGlzTGluZUJyZWFrQWZ0ZXJXaGl0ZXNw
YWNlKCkgPyBMaW5lOjpUcmFpbGluZ0NvbnRlbnRBY3Rpb246OlByZXNlcnZlIDogTGluZTo6VHJh
aWxpbmdDb250ZW50QWN0aW9uOjpSZW1vdmUsIG1fbGluZS5jb250ZW50TG9naWNhbFdpZHRoKCkg
LSBob3Jpem9udGFsQXZhaWxhYmxlU3BhY2UpOwogCiAgICAgICAgICAgICBtX2xpbmUuaGFuZGxl
VHJhaWxpbmdIYW5naW5nQ29udGVudChpbnRyaW5zaWNXaWR0aE1vZGUoKSwgaG9yaXpvbnRhbEF2
YWlsYWJsZVNwYWNlLCBpc0xhc3RMaW5lKTsKKworICAgICAgICAgICAgYXV0byBtYXlOZWVkT3V0
T2ZGbG93T3ZlcmZsb3dUcmltbWluZyA9ICFpc0luSW50cmluc2ljV2lkdGhNb2RlKCkgJiYgbGlu
ZUhhc092ZXJmbG93KCkgJiYgIWxpbmVDb250ZW50LnBhcnRpYWxUcmFpbGluZ0NvbnRlbnRMZW5n
dGggJiYgVGV4dFV0aWw6OmlzV3JhcHBpbmdBbGxvd2VkKHJvb3RTdHlsZSk7CisgICAgICAgICAg
ICBpZiAobWF5TmVlZE91dE9mRmxvd092ZXJmbG93VHJpbW1pbmcpIHsKKyAgICAgICAgICAgICAg
ICAvLyBPdmVyZmxvd2luZyBvdXQtb2YtZmxvdyBib3hlcyBzaG91bGQgd3JhcCB0aGUgdG8gc3Vi
c2VxdWVudCBsaW5lcyBqdXN0IGxpa2UgYW55IG90aGVyIGluLWZsb3cgY29udGVudC4KKyAgICAg
ICAgICAgICAgICAvLyBIb3dldmVyIHNpbmNlIHdlIHRha2UgYSBzaG9ydGN1dCBieSBub3QgY29u
c2lkZXJpbmcgb3V0LW9mLWZsb3cgY29udGVudCBhcyBpbmZsb3cgYnV0IGluc3RlYWQgdHJlYXRp
bmcgaXQgYXMgYW4gb3BhcXVlIGJveCB3aXRoIHplcm8gd2lkdGggYW5kIG5vCisgICAgICAgICAg
ICAgICAgLy8gc29mdCB3cmFwIG9wcG9ydHVuaXR5LCBhbnkgb3ZlcmZsb3dpbmcgb3V0LW9mLWZs
b3cgY29udGVudCB3b3VsZCBwaWxlIHVwIGFzIHRyYWlsaW5nIGNvbnRlbnQuCisgICAgICAgICAg
ICAgICAgLy8gQWx0ZXJuYXRpdmVseSB3ZSBjb3VsZCBpbml0aWF0ZSBhIHR3byBwYXNzIGxheW91
dCBmaXJzdCB3aXRoIG91dC1vZi1mbG93IGNvbnRlbnQgdHJlYXRlZCBhcyB0cnVlIGluZmxvdyBh
bmQgYSBzZWNvbmQgd2l0aG91dCB0aGVtLgorICAgICAgICAgICAgICAgIEFTU0VSVCghbGluZUNv
bnRlbnQucmFuZ2UuZW5kLm9mZnNldCk7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGxhc3RS
ZW1vdmVkVHJhaWxpbmdCb3ggPSBtX2xpbmUucmVtb3ZlT3ZlcmZsb3dpbmdPdXJPZkZsb3dDb250
ZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsaW5lRW5kSW5kZXggPSBbJl0gewor
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChhdXRvIGluZGV4ID0gbGluZUNvbnRlbnQucmFu
Z2Uuc3RhcnQuaW5kZXg7IGluZGV4IDwgbGluZUNvbnRlbnQucmFuZ2UuZW5kLmluZGV4OyArK2lu
ZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCZtX2lubGluZUl0ZW1zW2lu
ZGV4XS5sYXlvdXRCb3goKSA9PSBsYXN0UmVtb3ZlZFRyYWlsaW5nQm94KQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsaW5lQ29udGVudC5yYW5nZS5lbmQuaW5kZXg7Cisg
ICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIGxpbmVDb250ZW50LnJh
bmdlLmVuZC5pbmRleCA9IGxpbmVFbmRJbmRleCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KICAgICAgICAgfTsKICAgICAgICAgaGFuZGxlVHJhaWxpbmdDb250ZW50KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyLmNwcAppbmRleCBmNTZiYzA4ZGVlZWUuLjZiMTJmYzI1NjExNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyLmNwcApAQCAtNDUxLDEwICs0NTEsMTIgQEAgdm9pZCBJbmxpbmVEaXNw
bGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NOb25CaWRpQ29udGVudChjb25zdCBMaW5lTGF5b3V0
UmVzdWx0JgogI2VuZGlmCiAgICAgYXV0byB3cml0aW5nTW9kZSA9IHJvb3QoKS5zdHlsZSgpLndy
aXRpbmdNb2RlKCk7CiAgICAgYXV0byBjb250ZW50U3RhcnRJblZpc3VhbE9yZGVyID0gbV9kaXNw
bGF5TGluZS50b3BMZWZ0KCk7CisgICAgVmVjdG9yPHNpemVfdD4gYmxvY2tMZXZlbE91dE9mRmxv
d0JveExpc3Q7CiAKICAgICBhcHBlbmRSb290SW5saW5lQm94RGlzcGxheUJveChmbGlwUm9vdElu
bGluZUJveFJlY3RUb1Zpc3VhbEZvcldyaXRpbmdNb2RlKGxpbmVCb3gubG9naWNhbFJlY3RGb3JS
b290SW5saW5lQm94KCksIHdyaXRpbmdNb2RlKSwgbGluZUJveC5yb290SW5saW5lQm94KCkuaGFz
Q29udGVudCgpLCBib3hlcyk7CiAKLSAgICBmb3IgKGF1dG8mIGxpbmVSdW4gOiBsaW5lTGF5b3V0
UmVzdWx0LmlubGluZUNvbnRlbnQpIHsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4
IDwgbGluZUxheW91dFJlc3VsdC5pbmxpbmVDb250ZW50LnNpemUoKTsgKytpbmRleCkgeworICAg
ICAgICBhdXRvJiBsaW5lUnVuID0gbGluZUxheW91dFJlc3VsdC5pbmxpbmVDb250ZW50W2luZGV4
XTsKICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gbGluZVJ1bi5sYXlvdXRCb3goKTsKIAogICAg
ICAgICBhdXRvIHZpc3VhbFJlY3RSZWxhdGl2ZVRvUm9vdCA9IFsmXShhdXRvIGxvZ2ljYWxSZWN0
KSB7CkBAIC00OTgsMTEgKzUwMCwxOCBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRl
cjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAobGluZVJ1bi5pc09wYXF1ZSgp
KSB7Ci0gICAgICAgICAgICAvLyBTZXQgZ2VvbWV0cnkgZm9yIHRoaXMgb3BhcXVlIGJveC4KKyAg
ICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlKCkuYm94R2VvbWV0
cnkobGF5b3V0Qm94KTsKKyAgICAgICAgICAgIGlmIChsYXlvdXRCb3guc3R5bGUoKS5pc09yaWdp
bmFsRGlzcGxheUlubGluZVR5cGUoKSkgeworICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRv
cExlZnQgPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yT3BhcXVlQm94KGxpbmVSdW4sIGJveEdlb21l
dHJ5KS50b3BMZWZ0KCk7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcExlZnQubW92ZUJ5KGxp
bmVCb3gubG9naWNhbFJlY3QoKS50b3BMZWZ0KCkpOworICAgICAgICAgICAgICAgIGJveEdlb21l
dHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHRvTGF5b3V0UG9pbnQobG9naWNhbFRvcExlZnQpKTsKKyAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGJsb2NrTGV2ZWxPdXRPZkZsb3dCb3hM
aXN0LmFwcGVuZChpbmRleCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAg
ICAgICBBU1NFUlQobGluZVJ1bi5pc0lubGluZUJveEVuZCgpIHx8IGxpbmVSdW4uaXNXb3JkQnJl
YWtPcHBvcnR1bml0eSgpKTsKICAgICB9CisgICAgc2V0R2VvbWV0cnlGb3JCbG9ja0xldmVsT3V0
T2ZGbG93Qm94ZXMoYmxvY2tMZXZlbE91dE9mRmxvd0JveExpc3QsIGxpbmVCb3gsIGxpbmVMYXlv
dXRSZXN1bHQuaW5saW5lQ29udGVudCk7CiB9CiAKIHN0cnVjdCBEaXNwbGF5Qm94VHJlZSB7CkBA
IC02ODIsNiArNjkxLDcgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nl
c3NCaWRpQ29udGVudChjb25zdCBMaW5lTGF5b3V0UmVzdWx0JiBsaW4KICAgICBhdXRvIGhhc0lu
bGluZUJveCA9IGZhbHNlOwogICAgIGF1dG8gY3JlYXRlRGlzcGxheUJveGVzSW5WaXN1YWxPcmRl
ciA9IFsmXSB7CiAKKyAgICAgICAgVmVjdG9yPHNpemVfdD4gYmxvY2tMZXZlbE91dE9mRmxvd0Jv
eExpc3Q7CiAgICAgICAgIGF1dG8gcm9vdElubGluZUJveFZpZHN1YWxSZWN0SW5JbmxpbmVEaXJl
Y3Rpb24gPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yUm9vdElubGluZUJveCgpOwogICAgICAgICBy
b290SW5saW5lQm94Vmlkc3VhbFJlY3RJbklubGluZURpcmVjdGlvbi5zZXRMZWZ0KG1fZGlzcGxh
eUxpbmUuY29udGVudExvZ2ljYWxMZWZ0SWdub3JpbmdJbmxpbmVEaXJlY3Rpb24oKSk7CiAgICAg
ICAgIGFwcGVuZFJvb3RJbmxpbmVCb3hEaXNwbGF5Qm94KGZsaXBSb290SW5saW5lQm94UmVjdFRv
VmlzdWFsRm9yV3JpdGluZ01vZGUocm9vdElubGluZUJveFZpZHN1YWxSZWN0SW5JbmxpbmVEaXJl
Y3Rpb24sIHJvb3QoKS5zdHlsZSgpLndyaXRpbmdNb2RlKCkpLCBsaW5lQm94LnJvb3RJbmxpbmVC
b3goKS5oYXNDb250ZW50KCksIGJveGVzKTsKQEAgLTg2OSw2ICs4NzksMzQgQEAgdm9pZCBJbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNvbGxlY3RJbmtPdmVyZmxvd0ZvcklubGluZUJveGVz
KElubGluZURpc3BsYXkKICAgICB9CiB9CiAKK3ZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyOjpzZXRHZW9tZXRyeUZvckJsb2NrTGV2ZWxPdXRPZkZsb3dCb3hlcyhjb25zdCBWZWN0b3I8
c2l6ZV90PiBpbmRleExpc3QsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IExpbmU6OlJ1
bkxpc3QmIGxpbmVSdW5zKQoreworICAgIEFTU0VSVCghaW5kZXhMaXN0LmlzRW1wdHkoKSk7CisK
KyAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGluZ0NvbnRleHQoKTsK
KyAgICBhdXRvIG91dE9mRmxvd0NvbnRlbnRIYXNQcmV2aW91c0luRmxvd1NpYmxpbmdXaXRoQ29u
dGVudE9yRGVjb3JhdGlvbiA9IGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBp
bmRleExpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byBvdXRPZkZsb3dCb3hJbmRleCA9
IGluZGV4TGlzdFtpXTsKKyAgICAgICAgQVNTRVJUKG91dE9mRmxvd0JveEluZGV4IDwgbGluZVJ1
bnMuc2l6ZSgpKTsKKworICAgICAgICBhdXRvIGhhc1ByZXZpb3VzSW5GbG93Q29udGVudCA9IFsm
XSB7CisgICAgICAgICAgICBpZiAob3V0T2ZGbG93Q29udGVudEhhc1ByZXZpb3VzSW5GbG93U2li
bGluZ1dpdGhDb250ZW50T3JEZWNvcmF0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgZm9yIChzaXplX3QgcnVuSW5kZXggPSBpID8gb3V0T2ZGbG93Qm94SW5k
ZXggKyAxIDogMDsgcnVuSW5kZXggPCBvdXRPZkZsb3dCb3hJbmRleDsgKytydW5JbmRleCkgewor
ICAgICAgICAgICAgICAgIGlmIChMaW5lOjpSdW46OmlzQ29udGVudGZ1bE9ySGFzRGVjb3JhdGlv
bihsaW5lUnVuc1tydW5JbmRleF0sIGZvcm1hdHRpbmdDb250ZXh0KSkgeworICAgICAgICAgICAg
ICAgICAgICBvdXRPZkZsb3dDb250ZW50SGFzUHJldmlvdXNJbkZsb3dTaWJsaW5nV2l0aENvbnRl
bnRPckRlY29yYXRpb24gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH07CisgICAgICAgIC8vIEJsb2NrIGxldmVsIGJveGVzIGFyZSBwbGFjZWQg
ZWl0aGVyIGF0IHRoZSBzdGFydCBvZiB0aGUgbGluZSBvciAidW5kZXIiIGRlcGVuZGluZyB3aGV0
aGVyIHRoZXkgaGF2ZSBwcmV2aW91cyBpbmZsb3cgc2libGluZy4KKyAgICAgICAgYXV0byBsb2dp
Y2FsVG9wID0gaGFzUHJldmlvdXNJbkZsb3dDb250ZW50KCkgPyBsaW5lQm94LmxvZ2ljYWxSZWN0
KCkuYm90dG9tKCkgOiBsaW5lQm94LmxvZ2ljYWxSZWN0KCkudG9wKCk7CisgICAgICAgIGZvcm1h
dHRpbmdTdGF0ZSgpLmJveEdlb21ldHJ5KGxpbmVSdW5zW291dE9mRmxvd0JveEluZGV4XS5sYXlv
dXRCb3goKSkuc2V0TG9naWNhbFRvcExlZnQoeyBjb25zdHJhaW50cygpLmhvcml6b250YWwoKS5s
b2dpY2FsTGVmdCwgbG9naWNhbFRvcCB9KTsKKyAgICB9Cit9CisKIHN0YXRpYyBmbG9hdCBsb2dp
Y2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25Db250ZW50KGNvbnN0IElubGluZURpc3BsYXk6OkJv
eGVzJiBib3hlcywgYm9vbCBpc0hvcml6b250YWxXcml0aW5nTW9kZSkKIHsKICAgICBhdXRvIGxv
Z2ljYWxCb3R0b20gPSBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB7IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGlu
ZURpc3BsYXlDb250ZW50QnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaApp
bmRleCA5NTQ1MTg5YzA2N2EuLmNiZDVkOWQ4YzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5
Q29udGVudEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oCkBAIC03
Myw2ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRSaWdodEZvcldyaXRpbmdNb2RlKElu
bGluZURpc3BsYXk6OkJveCYsIElubGluZUxheW91dFVuaXQgbG9naWNhbFJpZ2h0LCBXcml0aW5n
TW9kZSkgY29uc3Q7CiAgICAgSW5saW5lTGF5b3V0UG9pbnQgbW92ZVBvaW50SG9yaXpvbnRhbGx5
Rm9yV3JpdGluZ01vZGUoY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIHRvcExlZnQsIElubGluZUxh
eW91dFVuaXQgaG9yaXpvbnRhbE9mZnNldCwgV3JpdGluZ01vZGUpIGNvbnN0OwogICAgIElubGlu
ZUxheW91dFVuaXQgb3V0c2lkZUxpc3RNYXJrZXJWaXN1YWxQb3NpdGlvbihjb25zdCBFbGVtZW50
Qm94JikgY29uc3Q7CisgICAgdm9pZCBzZXRHZW9tZXRyeUZvckJsb2NrTGV2ZWxPdXRPZkZsb3dC
b3hlcyhjb25zdCBWZWN0b3I8c2l6ZV90PiBpbmRleExpc3QsIGNvbnN0IExpbmVCb3gmLCBjb25z
dCBMaW5lOjpSdW5MaXN0Jik7CiAKICAgICBib29sIGlzTGluZUZ1bGx5VHJ1bmNhdGVkSW5CbG9j
a0RpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUlzRnVsbHlUcnVuY2F0ZWRJbkJsb2Nr
RGlyZWN0aW9uOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmNwcAppbmRleCA2OTY4M2Y4NTlkYTMuLjQ4MzJmNjhhMGJiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVM
YXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUv
TGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApAQCAtNTg4LDggKzU4OCw3IEBAIHN0ZDo6
b3B0aW9uYWw8TGF5b3V0UmVjdD4gTGluZUxheW91dDo6bGF5b3V0KCkKICAgICB9KCk7CiAgICAg
YXV0byBwYXJlbnRCbG9ja0xheW91dFN0YXRlID0gTGF5b3V0OjpCbG9ja0xheW91dFN0YXRlIHsg
bV9ibG9ja0Zvcm1hdHRpbmdTdGF0ZS5mbG9hdGluZ1N0YXRlKCksIGxpbmVDbGFtcChmbG93KCkp
LCB0ZXh0Qm94VHJpbShmbG93KCkpLCBpbnRydXNpdmVJbml0aWFsTGV0dGVyQm90dG9tKCkgfTsK
ICAgICBhdXRvIGlubGluZUxheW91dFN0YXRlID0gTGF5b3V0OjpJbmxpbmVMYXlvdXRTdGF0ZSB7
IHBhcmVudEJsb2NrTGF5b3V0U3RhdGUsIFdURk1vdmUobV9uZXN0ZWRMaXN0TWFya2VyT2Zmc2V0
cykgfTsKLSAgICBhdXRvIGxheW91dFJlc3VsdCA9IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
bGF5b3V0SW5GbG93QW5kRmxvYXRDb250ZW50KGlubGluZUNvbnRlbnRDb25zdHJhaW50cywgaW5s
aW5lTGF5b3V0U3RhdGUsIG1fbGluZURhbWFnZS5nZXQoKSk7Ci0gICAgbV9pbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5sYXlvdXRPdXRPZkZsb3dDb250ZW50KGlubGluZUNvbnRlbnRDb25zdHJhaW50
cywgaW5saW5lTGF5b3V0U3RhdGUsIGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVudCk7CisgICAg
YXV0byBsYXlvdXRSZXN1bHQgPSBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0LmxheW91dChpbmxp
bmVDb250ZW50Q29uc3RyYWludHMsIGlubGluZUxheW91dFN0YXRlLCBtX2xpbmVEYW1hZ2UuZ2V0
KCkpOwogCiAgICAgYXV0byByZXBhaW50UmVjdCA9IExheW91dFJlY3QgeyBjb25zdHJ1Y3RDb250
ZW50KGlubGluZUxheW91dFN0YXRlLCBXVEZNb3ZlKGxheW91dFJlc3VsdCkpIH07CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJp
bmctbGF5ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9t
b3ZlLWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3RlZC50eHQKaW5kZXggMjg0ZWUzNzQ1Mjlk
Li4wMjZjMTg5ZmEwMTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFp
bnQvbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0
ZWQudHh0CkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICAgKGJvdW5kcyA4MDIuMDAgMjAyLjAw
KQogICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKICAgICAgICAgICAocmVwYWludCByZWN0cwor
ICAgICAgICAgICAgKHJlY3QgMC4wMCAxLjAwIDgwMi4wMCAxLjAwKQogICAgICAgICAgICAgKHJl
Y3QgMjAxLjAwIDUxLjAwIDEwMC4wMCAxMDAuMDApCiAgICAgICAgICAgICAocmVjdCA0MDEuMDAg
NTEuMDAgMTAwLjAwIDEwMC4wMCkKICAgICAgICAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3Mtd2syL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJp
bmctbGF5ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9jb21w
b3NpdGluZy9yZXBhaW50L21vdmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVkLnR4dApp
bmRleCBmM2IzZDBiNzhkODYuLmJkNGViYTY5NGQ2NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zLXdrMi9jb21wb3NpdGluZy9yZXBhaW50L21vdmUtYmFja2luZy1zaGFyaW5n
LWxheWVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL2Nv
bXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0
CkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICAgKGJvdW5kcyA4MDIuMDAgMjAyLjAwKQogICAg
ICAgICAgIChkcmF3c0NvbnRlbnQgMSkKICAgICAgICAgICAocmVwYWludCByZWN0cworICAgICAg
ICAgICAgKHJlY3QgMC4wMCAxLjAwIDgwMi4wMCAxLjAwKQogICAgICAgICAgICAgKHJlY3QgMjAx
LjAwIDUxLjAwIDEwMC4wMCAxMDAuMDApCiAgICAgICAgICAgICAocmVjdCA0MDEuMDAgNTEuMDAg
MTAwLjAwIDEwMC4wMCkKICAgICAgICAgICApCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467478</attachid>
            <date>2023-08-28 20:34:26 -0700</date>
            <delta_ts>2023-08-29 07:20:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-260776-20230828203425.patch</filename>
            <type>text/plain</type>
            <size>40518</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAyMGY2YzhjNWNkZjI0NTQ1YmI3ZTJmODQ4MjkwMGUxYzc1NjhlYmZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IE1vbiwgMjggQXVnIDIwMjMgMTI6MzA6MzUgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBV
c2Ugb3BhcXVlIElubGluZUl0ZW0gdG8gY29tcHV0ZSBvdXQtb2YtZmxvdyBzdGF0aWMKIHBvc2l0
aW9uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjA3NzYKClJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKTGV0J3MgcmVwbGFjZSBleGlzdGluZyBvdXQtb2YtZmxv
dyBoYW5kbGluZyB3aXRoIHVzaW5nIG9wYXF1ZSBpbmxpbmUgaXRlbXMgaW5zdGVhZC4KMS4gQWRk
IG91dC1vZi1mbG93IGNvbnRlbnQgdG8gdGhlIGlubGluZSBpdGVtIGxpc3QgYXMgb3BhcXVlIGJv
eCBhbmQgcnVuIHJlZ3VsYXIgaW5saW5lIGxheW91dC4KMi4gU2V0IHN0YXRpYyBwb3NpdGlvbiBh
cyBwYXJ0IG9mIHRoZSBpbmxpbmUgZGlzcGxheSBjb250ZW50IGJ1aWxkaW5nIHByb2Nlc3Mgd2hl
cmUgd2UgaXRlcmF0ZSB0aHJvdWdoIHRoZSBydW5zIG9uIHRoZSBjdXJyZW50IGxpbmUuCjMuIFNp
bmNlIHRoaXMgaXMgYWxsIHBhcnQgb2YgX2luZmxvd18gbGF5b3V0LCB3ZSBkb24ndCBuZWVkIHRo
ZSBkZWRpY2F0ZWQgX291dF9vZl9mbG93XyBtZXRob2Qgb24gSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQgYW55bW9yZS4KNC4gUmVtb3ZlIGV4aXN0aW5nIGxvZ2ljIHdoZXJlIHdlIGNvbXB1dGUgdGhl
IHN0YXRpYyBwb3NpdGlvbiBieSBsb29raW5nIGF0IGFkamFjZW50IGRpc3BsYXkgYm94IGdlb21l
dHJpZXMuCgoqIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNo
YXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIv
Y29tcG9zaXRpbmcvcmVwYWludC9tb3ZlLWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3RlZC50
eHQ6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudCk6IERlbGV0ZWQuCihXZWJDb3JlOjpM
YXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JP
dXRPZkZsb3dDb250ZW50KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgoqIFNvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OmZpcnN0RGlzcGxheUJveEluZGV4Rm9yTGF5
b3V0Qm94KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6bGFzdERpc3BsYXlCb3hJbmRleEZv
ckxheW91dEJveCk6IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OnByZXZpb3VzRGlzcGxheUJv
eEluZGV4KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6bmV4dERpc3BsYXlCb3hJbmRleCk6
IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6Y29u
dGVudExlZnRBZnRlckxhc3RMaW5lIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0lubGlu
ZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0Jsb2NrTGV2ZWxCb3ggY29u
c3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHA6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUl0ZW1zQnVpbGRlcjo6YnVpbGQpOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVJdGVtc0J1aWxkZXI6OmNvbGxlY3RJbmxpbmVJdGVtcyk6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmg6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OnJlbW92ZU92ZXJmbG93aW5nT3VyT2ZG
bG93Q29udGVudCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94
Ojpsb2dpY2FsUmVjdEZvck9wYXF1ZUJveCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5oOgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNw
cDoKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQW5kRmxvYXRDb250
ZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6
OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KToKKiBT
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6
bGF5b3V0KToKLS0tCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAg
ICAgfCAgIDIgKy0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwICAgICAg
ICB8ICAzMCArLS0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggICAgICAg
ICAgfCAgIDQgKy0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCAgICAg
ICB8IDE2OCAtLS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dl
b21ldHJ5LmggICAgICAgICB8ICAgMyAtCiAuLi4vaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5j
cHAgICAgICAgICAgICAgfCAgMTIgKy0KIC4uLi9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmgg
ICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZS5jcHAgIHwgIDIxICsrKwogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZS5oICAgIHwgICAxICsKIC4uLi9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAgICAgICAg
ICAgICAgICAgICB8ICAgNyArCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lQm94LmggfCAgIDEgKwogLi4uL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAgICAgICAg
ICAgICAgIHwgIDIwICsrKwogLi4uL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
LmNwcCAgIHwgIDQwICsrKystCiAuLi4vZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXIuaCAgICAgfCAgIDEgKwogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
Y3BwICAgIHwgICAzICstCiAuLi4vbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQu
dHh0ICAgfCAgIDEgKwogLi4uL21vdmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVkLnR4
dCAgIHwgICAxICsKIDE3IGZpbGVzIGNoYW5nZWQsIDEwMSBpbnNlcnRpb25zKCspLCAyMTYgZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9mbGV4L0ZsZXhMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhMYXlvdXQuY3BwCmluZGV4IDYyZDA2NzFlMDc1Yi4uYzAx
NTNiYWE4MWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9mbGV4L0ZsZXhMYXlvdXQuY3BwCkBAIC00NDUsNyArNDQ1LDcgQEAg
RmxleExheW91dDo6U2l6ZUxpc3QgRmxleExheW91dDo6aHlwb3RoZXRpY2FsQ3Jvc3NTaXplRm9y
RmxleEl0ZW1zKGNvbnN0IExvZ2ljYWwKICAgICAgICAgICAgIGF1dG8mIGlubGluZUZvcm1hdHRp
bmdTdGF0ZSA9IGZsZXhGb3JtYXR0aW5nQ29udGV4dCgpLmxheW91dFN0YXRlKCkuZW5zdXJlSW5s
aW5lRm9ybWF0dGluZ1N0YXRlKGZsZXhJdGVtQm94KTsKICAgICAgICAgICAgIGF1dG8gaW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQgPSBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCB7IGZsZXhJdGVtQm94
LCBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgfTsKICAgICAgICAgICAgIGF1dG8gY29uc3RyYWludHNG
b3JJbkZsb3dDb250ZW50ID0gQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50IHsgSG9yaXpvbnRh
bENvbnN0cmFpbnRzIHsgeyB9LCBmbGV4SXRlbXNNYWluU2l6ZUxpc3RbZmxleEl0ZW1JbmRleF0g
fSwgeyB9IH07Ci0gICAgICAgICAgICBhdXRvIGxheW91dFJlc3VsdCA9IGlubGluZUZvcm1hdHRp
bmdDb250ZXh0LmxheW91dEluRmxvd0FuZEZsb2F0Q29udGVudCh7IGNvbnN0cmFpbnRzRm9ySW5G
bG93Q29udGVudCwgeyB9IH0sIGlubGluZUxheW91dFN0YXRlKTsKKyAgICAgICAgICAgIGF1dG8g
bGF5b3V0UmVzdWx0ID0gaW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGF5b3V0KHsgY29uc3RyYWlu
dHNGb3JJbkZsb3dDb250ZW50LCB7IH0gfSwgaW5saW5lTGF5b3V0U3RhdGUpOwogICAgICAgICAg
ICAgcmV0dXJuIExheW91dFVuaXQgeyBsYXlvdXRSZXN1bHQuZGlzcGxheUNvbnRlbnQubGluZXMu
bGFzdCgpLmxpbmVCb3hMb2dpY2FsUmVjdCgpLm1heFkoKSB9OwogICAgICAgICB9OwogICAgICAg
ICBhdXRvIHVzZWRDcm9zc1NpemUgPSBjcm9zc1NpemVBZnRlclBlcmZvcm1pbmdMYXlvdXQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRl
eCBiZGIyODhiYzJiOWUuLjlmYmI3MmU5YzZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNjcsMTAgKzY3LDEwIEBAIElubGluZUZv
cm1hdHRpbmdDb250ZXh0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBFbGVtZW50Qm94
JiBmb3JtYXR0aW5nQ29uCiB7CiB9CiAKLUlubGluZUxheW91dFJlc3VsdCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93QW5kRmxvYXRDb250ZW50KGNvbnN0IENvbnN0cmFpbnRz
Rm9ySW5saW5lQ29udGVudCYgY29uc3RyYWludHMsIElubGluZUxheW91dFN0YXRlJiBpbmxpbmVM
YXlvdXRTdGF0ZSwgY29uc3QgSW5saW5lRGFtYWdlKiBsaW5lRGFtYWdlKQorSW5saW5lTGF5b3V0
UmVzdWx0IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXQoY29uc3QgQ29uc3RyYWludHNG
b3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50cywgSW5saW5lTGF5b3V0U3RhdGUmIGlubGluZUxh
eW91dFN0YXRlLCBjb25zdCBJbmxpbmVEYW1hZ2UqIGxpbmVEYW1hZ2UpCiB7CiAgICAgYXV0byYg
ZmxvYXRpbmdTdGF0ZSA9IGlubGluZUxheW91dFN0YXRlLnBhcmVudEJsb2NrTGF5b3V0U3RhdGUo
KS5mbG9hdGluZ1N0YXRlKCk7Ci0gICAgaWYgKCFyb290KCkuaGFzSW5GbG93Q2hpbGQoKSkgewor
ICAgIGlmICghcm9vdCgpLmhhc0luRmxvd0NoaWxkKCkgJiYgIXJvb3QoKS5oYXNPdXRPZkZsb3dD
aGlsZCgpKSB7CiAgICAgICAgIC8vIEZsb2F0IG9ubHkgY29udGVudCBkb2VzIG5vdCBzdXBwb3J0
IHBhcnRpYWwgbGF5b3V0LgogICAgICAgICBBU1NFUlQoIWxpbmVEYW1hZ2UpOwogICAgICAgICBs
YXlvdXRGbG9hdENvbnRlbnRPbmx5KGNvbnN0cmFpbnRzLCBmbG9hdGluZ1N0YXRlKTsKQEAgLTEx
NCwxMiArMTE0LDYgQEAgSW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1hdHRpbmdDb250ZXh0
OjpsYXlvdXRJbkZsb3dBbmRGbG9hdENvbnRlbnQoY29uc3QgQ28KICAgICByZXR1cm4gbGluZUxh
eW91dChsaW5lQnVpbGRlciwgaW5saW5lSXRlbXMsIG5lZWRzTGF5b3V0UmFuZ2UsIHByZXZpb3Vz
TGluZSgpLCBjb25zdHJhaW50cywgaW5saW5lTGF5b3V0U3RhdGUsIGxpbmVEYW1hZ2UpOwogfQog
Ci12b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRPZkZsb3dDb250ZW50KGNv
bnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYgY29uc3RyYWludHMsIElubGluZUxheW91
dFN0YXRlJiBpbmxpbmVMYXlvdXRTdGF0ZSwgY29uc3QgSW5saW5lRGlzcGxheTo6Q29udGVudCYg
aW5saW5lRGlzcGxheUNvbnRlbnQpCi17Ci0gICAgLy8gQ29sbGVjdGluZyBvdXQtb2YtZmxvdyBi
b3hlcyBoYXBwZW5zIGR1cmluZyB0aGUgaW4tZmxvdyBwaGFzZS4KLSAgICBjb21wdXRlU3RhdGlj
UG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGZvcm1hdHRpbmdTdGF0ZSgpLm91dE9mRmxvd0Jv
eGVzKCksIGNvbnN0cmFpbnRzLCBpbmxpbmVEaXNwbGF5Q29udGVudCwgaW5saW5lTGF5b3V0U3Rh
dGUucGFyZW50QmxvY2tMYXlvdXRTdGF0ZSgpLmZsb2F0aW5nU3RhdGUoKSk7Ci19Ci0KIEludHJp
bnNpY1dpZHRoQ29uc3RyYWludHMgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50
cmluc2ljU2l6ZXMoY29uc3QgSW5saW5lRGFtYWdlKiBsaW5lRGFtYWdlKQogewogICAgIGF1dG8m
IGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGZvcm1hdHRpbmdTdGF0ZSgpOwpAQCAtMjQzLDI2ICsy
MzcsNiBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRGbG9hdENvbnRlbnRP
bmx5KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQwogICAgIH0KIH0KIAotdm9pZCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93Q29udGVu
dChjb25zdCBGb3JtYXR0aW5nU3RhdGU6Ok91dE9mRmxvd0JveExpc3QmIG91dE9mRmxvd0JveGVz
LCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBjb25zdCBJ
bmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCwgY29uc3QgRmxvYXRpbmdTdGF0
ZSYgZmxvYXRpbmdTdGF0ZSkKLXsKLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGNvbXB1dGVzIHRoZSBz
dGF0aWMgcG9zaXRpb24gZm9yIG91dC1vZi1mbG93IGNvbnRlbnQgaW5zaWRlIHRoZSBpbmxpbmUg
Zm9ybWF0dGluZyBjb250ZXh0LgotICAgIC8vIEFzIHBlciBzcGVjLCB0aGUgc3RhdGljIHBvc2l0
aW9uIG9mIGFuIG91dC1vZi1mbG93IGJveCBpcyBjb21wdXRlZCBhcyBpZiB0aGUgcG9zaXRpb24g
d2FzIHNldCB0byBzdGF0aWMuCi0gICAgLy8gSG93ZXZlciBpdCBkb2VzIG5vdCBtZWFuIHRoYXQg
dGhlIG91dC1vZi1mbG93IGJveCBzaG91bGQgYmUgaW52b2x2ZWQgaW4gdGhlIGlubGluZSBsYXlv
dXQgcHJvY2Vzcy4KLSAgICAvLyBJbnN0ZWFkIHdlIGZpZ3VyZSBvdXQgdGhpcyBzdGF0aWMgcG9z
aXRpb24gYWZ0ZXIgdGhlIGlubGluZSBsYXlvdXQgYnkgbG9va2luZyBhdCB0aGUgcHJldmlvdXMv
bmV4dCBzaWJsaW5nIChvciBwYXJlbnQpIGJveCdzIGdlb21ldHJ5IGFuZAotICAgIC8vIHBsYWNl
IHRoZSBvdXQtb2YtZmxvdyBib3ggYXQgdGhlIGxvZ2ljYWwgcmlnaHQgcG9zaXRpb24uCi0gICAg
YXV0byYgZm9ybWF0dGluZ0dlb21ldHJ5ID0gdGhpcy0+Zm9ybWF0dGluZ0dlb21ldHJ5KCk7Ci0g
ICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gdGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7Ci0gICAg
YXV0byBmbG9hdGluZ0NvbnRleHQgPSBGbG9hdGluZ0NvbnRleHQgeyAqdGhpcywgZmxvYXRpbmdT
dGF0ZSB9OwotCi0gICAgZm9yIChhdXRvJiBvdXRPZkZsb3dCb3ggOiBvdXRPZkZsb3dCb3hlcykg
ewotICAgICAgICBpZiAob3V0T2ZGbG93Qm94LT5zdHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5SW5s
aW5lVHlwZSgpKSB7Ci0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0cnkob3V0
T2ZGbG93Qm94KS5zZXRMb2dpY2FsVG9wTGVmdChmb3JtYXR0aW5nR2VvbWV0cnkuc3RhdGljUG9z
aXRpb25Gb3JPdXRPZkZsb3dJbmxpbmVMZXZlbEJveChvdXRPZkZsb3dCb3gsIGNvbnN0cmFpbnRz
LCBkaXNwbGF5Q29udGVudCwgZmxvYXRpbmdDb250ZXh0KSk7Ci0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgfQotICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0cnkob3V0T2ZG
bG93Qm94KS5zZXRMb2dpY2FsVG9wTGVmdChmb3JtYXR0aW5nR2VvbWV0cnkuc3RhdGljUG9zaXRp
b25Gb3JPdXRPZkZsb3dCbG9ja0xldmVsQm94KG91dE9mRmxvd0JveCwgY29uc3RyYWludHMsIGRp
c3BsYXlDb250ZW50KSk7Ci0gICAgfQotfQotCiBzdGF0aWMgTGluZUVuZGluZ0VsbGlwc2lzUG9s
aWN5IGxpbmVFbmRpbmdFbGxpcHNpc1BvbGljeShjb25zdCBSZW5kZXJTdHlsZSYgcm9vdFN0eWxl
LCBzaXplX3QgbnVtYmVyT2ZMaW5lcywgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG51bWJlck9mVmlz
aWJsZUxpbmVzQWxsb3dlZCkKIHsKICAgICAvLyBXZSBtYXkgaGF2ZSBwYXNzZWQgdGhlIGxpbmUt
Y2xhbXAgbGluZSB3aXRoIG92ZXJmbG93IHZpc2libGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCAxMTQwNjhmMWE3NTIuLmQ4YmIxMmJkMGEz
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCkBA
IC01OSw4ICs1OSw3IEBAIGNsYXNzIElubGluZUZvcm1hdHRpbmdDb250ZXh0IGZpbmFsIDogcHVi
bGljIEZvcm1hdHRpbmdDb250ZXh0IHsKIHB1YmxpYzoKICAgICBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dChjb25zdCBFbGVtZW50Qm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIElubGluZUZvcm1h
dHRpbmdTdGF0ZSYpOwogCi0gICAgSW5saW5lTGF5b3V0UmVzdWx0IGxheW91dEluRmxvd0FuZEZs
b2F0Q29udGVudChjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmLCBJbmxpbmVMYXlv
dXRTdGF0ZSYsIGNvbnN0IElubGluZURhbWFnZSogPSBudWxscHRyKTsKLSAgICB2b2lkIGxheW91
dE91dE9mRmxvd0NvbnRlbnQoY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgSW5s
aW5lTGF5b3V0U3RhdGUmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpDb250ZW50Jik7CisgICAgSW5s
aW5lTGF5b3V0UmVzdWx0IGxheW91dChjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQm
LCBJbmxpbmVMYXlvdXRTdGF0ZSYsIGNvbnN0IElubGluZURhbWFnZSogPSBudWxscHRyKTsKICAg
ICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNvbXB1dGVkSW50cmluc2ljU2l6ZXMoY29uc3Qg
SW5saW5lRGFtYWdlKik7CiAgICAgTGF5b3V0VW5pdCBtYXhpbXVtQ29udGVudFNpemUoKTsKIApA
QCAtNzEsNyArNzAsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIElubGluZUxheW91dFJlc3Vs
dCBsaW5lTGF5b3V0KEFic3RyYWN0TGluZUJ1aWxkZXImLCBjb25zdCBJbmxpbmVJdGVtcyYsIElu
bGluZUl0ZW1SYW5nZSwgc3RkOjpvcHRpb25hbDxQcmV2aW91c0xpbmU+LCBjb25zdCBDb25zdHJh
aW50c0ZvcklubGluZUNvbnRlbnQmLCBJbmxpbmVMYXlvdXRTdGF0ZSYsIGNvbnN0IElubGluZURh
bWFnZSogPSBudWxscHRyKTsKICAgICB2b2lkIGxheW91dEZsb2F0Q29udGVudE9ubHkoY29uc3Qg
Q29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgRmxvYXRpbmdTdGF0ZSYpOwotICAgIHZvaWQg
Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93Q29udGVudChjb25zdCBGb3JtYXR0aW5n
U3RhdGU6Ok91dE9mRmxvd0JveExpc3QmLCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRl
bnQmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiwgY29uc3QgRmxvYXRpbmdTdGF0ZSYp
OwogCiAgICAgdm9pZCBjb2xsZWN0Q29udGVudElmTmVlZGVkKCk7CiAgICAgSW5saW5lUmVjdCBj
cmVhdGVEaXNwbGF5Q29udGVudEZvckxpbmUoc2l6ZV90IGxpbmVJbmRleCwgY29uc3QgTGluZUxh
eW91dFJlc3VsdCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIGNvbnN0IElu
bGluZUxheW91dFN0YXRlJiwgSW5saW5lRGlzcGxheTo6Q29udGVudCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9y
bWF0dGluZ0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAKaW5kZXggM2VjYWMzY2M3
NTJiLi4wOWFiNjk0MTI1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9y
bWF0dGluZ0dlb21ldHJ5LmNwcApAQCAtMjA5LDE3NCArMjA5LDYgQEAgSW5saW5lTGF5b3V0VW5p
dCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbXB1dGVkVGV4dEluZGVudChJc0ludHJpbnNp
Y1dpZHRoTW8KICAgICByZXR1cm4geyBtaW5pbXVtVmFsdWVGb3JMZW5ndGgodGV4dEluZGVudCwg
YXZhaWxhYmxlV2lkdGgpIH07CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gZmly
c3REaXNwbGF5Qm94SW5kZXhGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0
IElubGluZURpc3BsYXk6OkJveGVzJiBkaXNwbGF5Qm94ZXMpCi17Ci0gICAgLy8gRklYTUU6IEJ1
aWxkIGEgZmlyc3QvbGFzdCBoYXNobWFwIGZvciB0aGVzZSBib3hlcy4KLSAgICBmb3IgKHNpemVf
dCBpbmRleCA9IDA7IGluZGV4IDwgZGlzcGxheUJveGVzLnNpemUoKTsgKytpbmRleCkgewotICAg
ICAgICBpZiAoZGlzcGxheUJveGVzW2luZGV4XS5pc1Jvb3RJbmxpbmVCb3goKSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoJmRpc3BsYXlCb3hlc1tpbmRleF0ubGF5b3V0Qm94
KCkgPT0gJmxheW91dEJveCkKLSAgICAgICAgICAgIHJldHVybiBpbmRleDsKLSAgICB9Ci0gICAg
cmV0dXJuIHsgfTsKLX0KLQotc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBsYXN0RGlzcGxh
eUJveEluZGV4Rm9yTGF5b3V0Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBJbmxpbmVE
aXNwbGF5OjpCb3hlcyYgZGlzcGxheUJveGVzKQotewotICAgIC8vIEZJWE1FOiBCdWlsZCBhIGZp
cnN0L2xhc3QgaGFzaG1hcCBmb3IgdGhlc2UgYm94ZXMuCi0gICAgZm9yIChhdXRvIGluZGV4ID0g
ZGlzcGxheUJveGVzLnNpemUoKTsgaW5kZXgtLTspIHsKLSAgICAgICAgaWYgKGRpc3BsYXlCb3hl
c1tpbmRleF0uaXNSb290SW5saW5lQm94KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgaWYgKCZkaXNwbGF5Qm94ZXNbaW5kZXhdLmxheW91dEJveCgpID09ICZsYXlvdXRCb3gpCi0g
ICAgICAgICAgICByZXR1cm4gaW5kZXg7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLXN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gcHJldmlvdXNEaXNwbGF5Qm94SW5kZXgoY29uc3Qg
Qm94JiBvdXRPZkZsb3dCb3gsIGNvbnN0IElubGluZURpc3BsYXk6OkJveGVzJiBkaXNwbGF5Qm94
ZXMpCi17Ci0gICAgYXV0byBwcmV2aW91c0Rpc3BsYXlCb3hJbmRleE9mID0gWyZdIChhdXRvJiBs
YXlvdXRCb3gpIC0+IHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiB7Ci0gICAgICAgIGZvciAoYXV0byog
Ym94ID0gJmxheW91dEJveDsgYm94OyBib3ggPSBib3gtPnByZXZpb3VzSW5GbG93U2libGluZygp
KSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBkaXNwbGF5Qm94SW5kZXggPSBsYXN0RGlzcGxheUJv
eEluZGV4Rm9yTGF5b3V0Qm94KCpib3gsIGRpc3BsYXlCb3hlcykpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGRpc3BsYXlCb3hJbmRleDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4geyB9Owot
ICAgIH07Ci0KLSAgICBhdXRvKiBjYW5kaWRhdGVCb3ggPSBvdXRPZkZsb3dCb3gucHJldmlvdXNJ
bkZsb3dTaWJsaW5nKCk7Ci0gICAgaWYgKCFjYW5kaWRhdGVCb3gpCi0gICAgICAgIGNhbmRpZGF0
ZUJveCA9IG91dE9mRmxvd0JveC5wYXJlbnQoKS5pc0lubGluZUJveCgpID8gJm91dE9mRmxvd0Jv
eC5wYXJlbnQoKSA6IG51bGxwdHI7Ci0gICAgd2hpbGUgKGNhbmRpZGF0ZUJveCkgewotICAgICAg
ICBpZiAoYXV0byBkaXNwbGF5Qm94SW5kZXggPSBwcmV2aW91c0Rpc3BsYXlCb3hJbmRleE9mKCpj
YW5kaWRhdGVCb3gpKQotICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlCb3hJbmRleDsKLSAgICAg
ICAgY2FuZGlkYXRlQm94ID0gY2FuZGlkYXRlQm94LT5wYXJlbnQoKS5pc0lubGluZUJveCgpID8g
JmNhbmRpZGF0ZUJveC0+cGFyZW50KCkgOiBudWxscHRyOwotICAgIH0KLSAgICByZXR1cm4geyB9
OwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5leHREaXNwbGF5Qm94SW5kZXgo
Y29uc3QgQm94JiBvdXRPZkZsb3dCb3gsIGNvbnN0IElubGluZURpc3BsYXk6OkJveGVzJiBkaXNw
bGF5Qm94ZXMpCi17Ci0gICAgYXV0byBuZXh0RGlzcGxheUJveEluZGV4T2YgPSBbJl0gKGF1dG8m
IGxheW91dEJveCkgLT4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IHsKLSAgICAgICAgZm9yIChhdXRv
KiBib3ggPSAmbGF5b3V0Qm94OyBib3g7IGJveCA9IGJveC0+bmV4dEluRmxvd1NpYmxpbmcoKSkg
ewotICAgICAgICAgICAgaWYgKGF1dG8gZGlzcGxheUJveEluZGV4ID0gZmlyc3REaXNwbGF5Qm94
SW5kZXhGb3JMYXlvdXRCb3goKmJveCwgZGlzcGxheUJveGVzKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZGlzcGxheUJveEluZGV4OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB7IH07Ci0g
ICAgfTsKLQotICAgIGF1dG8qIGNhbmRpZGF0ZUJveCA9IG91dE9mRmxvd0JveC5uZXh0SW5GbG93
U2libGluZygpOwotICAgIGlmICghY2FuZGlkYXRlQm94KQotICAgICAgICBjYW5kaWRhdGVCb3gg
PSBvdXRPZkZsb3dCb3gucGFyZW50KCkuaXNJbmxpbmVCb3goKSA/IG91dE9mRmxvd0JveC5wYXJl
bnQoKS5uZXh0SW5GbG93U2libGluZygpIDogbnVsbHB0cjsKLSAgICB3aGlsZSAoY2FuZGlkYXRl
Qm94KSB7Ci0gICAgICAgIGlmIChhdXRvIGRpc3BsYXlCb3hJbmRleCA9IG5leHREaXNwbGF5Qm94
SW5kZXhPZigqY2FuZGlkYXRlQm94KSkKLSAgICAgICAgICAgIHJldHVybiBkaXNwbGF5Qm94SW5k
ZXg7Ci0gICAgICAgIGNhbmRpZGF0ZUJveCA9IGNhbmRpZGF0ZUJveC0+cGFyZW50KCkuaXNJbmxp
bmVCb3goKSA/IGNhbmRpZGF0ZUJveC0+cGFyZW50KCkubmV4dEluRmxvd1NpYmxpbmcoKSA6IG51
bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLUlubGluZUxheW91dFVuaXQgSW5s
aW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb250ZW50TGVmdEFmdGVyTGFzdExpbmUoY29uc3QgQ29u
c3RyYWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cywgc3RkOjpvcHRpb25hbDxJbmxp
bmVMYXlvdXRVbml0PiBsYXN0TGluZUxvZ2ljYWxCb3R0b20sIGNvbnN0IEZsb2F0aW5nQ29udGV4
dCYgZmxvYXRpbmdDb250ZXh0KSBjb25zdAotewotICAgIGF1dG8gY29udGVudEhhc1ByZXZpb3Vz
TGluZSA9IGxhc3RMaW5lTG9naWNhbEJvdHRvbSA/IHN0ZDo6bWFrZV9vcHRpb25hbCh0cnVlKSA6
IHN0ZDo6bnVsbG9wdDsKLSAgICBhdXRvIHRleHRJbmRlbnQgPSBjb21wdXRlZFRleHRJbmRlbnQo
SXNJbnRyaW5zaWNXaWR0aE1vZGU6Ok5vLCBjb250ZW50SGFzUHJldmlvdXNMaW5lLCBjb25zdHJh
aW50cy5ob3Jpem9udGFsKCkubG9naWNhbFdpZHRoKTsKLSAgICBhdXRvIGZsb2F0Q29uc3RyYWlu
dHMgPSBmbG9hdENvbnN0cmFpbnRzRm9yTGluZShsYXN0TGluZUxvZ2ljYWxCb3R0b20udmFsdWVf
b3IoY29uc3RyYWludHMubG9naWNhbFRvcCgpKSwgMCwgZmxvYXRpbmdDb250ZXh0KTsKLSAgICBh
dXRvIGxpbmVCb3hMZWZ0ID0gY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxMZWZ0Owot
ICAgIGF1dG8gbGluZUJveFdpZHRoID0gY29uc3RyYWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxX
aWR0aDsKLSAgICAvLyBGSVhNRTogQWRkIG1pc3NpbmcgUlRMIHN1cHBvcnQuCi0gICAgaWYgKGZs
b2F0Q29uc3RyYWludHMubGVmdCkgewotICAgICAgICBhdXRvIGZsb2F0T2Zmc2V0ID0gc3RkOjpt
YXgoMF9sdSwgZmxvYXRDb25zdHJhaW50cy5sZWZ0LT54IC0gY29uc3RyYWludHMuaG9yaXpvbnRh
bCgpLmxvZ2ljYWxMZWZ0KTsKLSAgICAgICAgbGluZUJveExlZnQgKz0gZmxvYXRPZmZzZXQ7Ci0g
ICAgICAgIGxpbmVCb3hXaWR0aCAtPSBmbG9hdE9mZnNldDsKLSAgICB9Ci0gICAgaWYgKGZsb2F0
Q29uc3RyYWludHMucmlnaHQpIHsKLSAgICAgICAgYXV0byBsaW5lQm94UmlnaHQgPSAoY29uc3Ry
YWludHMuaG9yaXpvbnRhbCgpLmxvZ2ljYWxMZWZ0ICsgY29uc3RyYWludHMuaG9yaXpvbnRhbCgp
LmxvZ2ljYWxXaWR0aCk7Ci0gICAgICAgIGF1dG8gZmxvYXRPZmZzZXQgPSBzdGQ6Om1heCgwX2x1
LCBsaW5lQm94UmlnaHQgLSBmbG9hdENvbnN0cmFpbnRzLnJpZ2h0LT54KTsKLSAgICAgICAgbGlu
ZUJveFdpZHRoIC09IGZsb2F0T2Zmc2V0OwotICAgIH0KLSAgICBsaW5lQm94TGVmdCArPSB0ZXh0
SW5kZW50OwotICAgIGF1dG8gcm9vdElubGluZUJveExlZnQgPSBob3Jpem9udGFsQWxpZ25tZW50
T2Zmc2V0KGZvcm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLnN0eWxlKCksIHsgfSwgbGluZUJveFdp
ZHRoLCB7IH0sIHsgfSwgdHJ1ZSk7Ci0gICAgcmV0dXJuIGxpbmVCb3hMZWZ0ICsgcm9vdElubGlu
ZUJveExlZnQ7Ci19Ci0KLUxheW91dFBvaW50IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6c3Rh
dGljUG9zaXRpb25Gb3JPdXRPZkZsb3dJbmxpbmVMZXZlbEJveChjb25zdCBCb3gmIG91dE9mRmxv
d0JveCwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cywgY29u
c3QgSW5saW5lRGlzcGxheTo6Q29udGVudCYgZGlzcGxheUNvbnRlbnQsIGNvbnN0IEZsb2F0aW5n
Q29udGV4dCYgZmxvYXRpbmdDb250ZXh0KSBjb25zdAotewotICAgIEFTU0VSVChvdXRPZkZsb3dC
b3guc3R5bGUoKS5pc09yaWdpbmFsRGlzcGxheUlubGluZVR5cGUoKSk7Ci0gICAgYXV0byYgbGlu
ZXMgPSBkaXNwbGF5Q29udGVudC5saW5lczsKLSAgICBhdXRvJiBib3hlcyA9IGRpc3BsYXlDb250
ZW50LmJveGVzOwotCi0gICAgaWYgKGxpbmVzLmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQo
Ym94ZXMuaXNFbXB0eSgpKTsKLSAgICAgICAgcmV0dXJuIHsgY29udGVudExlZnRBZnRlckxhc3RM
aW5lKGNvbnN0cmFpbnRzLCB7IH0sIGZsb2F0aW5nQ29udGV4dCksIGNvbnN0cmFpbnRzLmxvZ2lj
YWxUb3AoKSB9OwotICAgIH0KLQotICAgIGF1dG8gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPSBm
b3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKS5zdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCk7Ci0gICAgYXV0byBsZWZ0U2lkZVRvTG9naWNhbFRvcExlZnQgPSBbJl0gKGF1dG8mIGRpc3Bs
YXlCb3gsIGF1dG8mIGxpbmUsIGJvb2wgbWF5TmVlZE1hcmdpbkFkanVzdG1lbnQgPSB0cnVlKSB7
Ci0gICAgICAgIGF1dG8gbWFyZ2luU3RhcnQgPSBMYXlvdXRVbml0IHsgfTsKLSAgICAgICAgaWYg
KG1heU5lZWRNYXJnaW5BZGp1c3RtZW50ICYmIGRpc3BsYXlCb3guaXNOb25Sb290SW5saW5lTGV2
ZWxCb3goKSkKLSAgICAgICAgICAgIG1hcmdpblN0YXJ0ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5n
ZW9tZXRyeUZvckJveChkaXNwbGF5Qm94LmxheW91dEJveCgpKS5tYXJnaW5TdGFydCgpOwotICAg
ICAgICByZXR1cm4gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPyBMYXlvdXRQb2ludChkaXNwbGF5
Qm94LmxlZnQoKSAtIG1hcmdpblN0YXJ0LCBsaW5lLnRvcCgpKSA6IExheW91dFBvaW50KGRpc3Bs
YXlCb3gudG9wKCkgLSBtYXJnaW5TdGFydCwgbGluZS5sZWZ0KCkpOwotICAgIH07Ci0gICAgYXV0
byByaWdodFNpZGVUb0xvZ2ljYWxUb3BMZWZ0ID0gWyZdIChhdXRvJiBkaXNwbGF5Qm94LCBhdXRv
JiBsaW5lKSB7Ci0gICAgICAgIGF1dG8gbWFyZ2luRW5kID0gTGF5b3V0VW5pdCB7IH07Ci0gICAg
ICAgIGlmIChkaXNwbGF5Qm94LmlzTm9uUm9vdElubGluZUxldmVsQm94KCkpCi0gICAgICAgICAg
ICBtYXJnaW5FbmQgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGRpc3BsYXlC
b3gubGF5b3V0Qm94KCkpLm1hcmdpbkVuZCgpOwotICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUgPyBMYXlvdXRQb2ludChkaXNwbGF5Qm94LnJpZ2h0KCkgKyBtYXJnaW5FbmQs
IGxpbmUudG9wKCkpIDogTGF5b3V0UG9pbnQoZGlzcGxheUJveC5ib3R0b20oKSArIG1hcmdpbkVu
ZCwgbGluZS5sZWZ0KCkpOwotICAgIH07Ci0KLSAgICBhdXRvIHByZXZpb3VzRGlzcGxheUJveElu
ZGV4QmVmb3JlT3V0T2ZGbG93Qm94ID0gcHJldmlvdXNEaXNwbGF5Qm94SW5kZXgob3V0T2ZGbG93
Qm94LCBib3hlcyk7Ci0gICAgaWYgKCFwcmV2aW91c0Rpc3BsYXlCb3hJbmRleEJlZm9yZU91dE9m
Rmxvd0JveCkKLSAgICAgICAgcmV0dXJuIGxlZnRTaWRlVG9Mb2dpY2FsVG9wTGVmdChib3hlc1sw
XSwgbGluZXNbMF0pOwotCi0gICAgYXV0byYgcHJldmlvdXNEaXNwbGF5Qm94ID0gYm94ZXNbKnBy
ZXZpb3VzRGlzcGxheUJveEluZGV4QmVmb3JlT3V0T2ZGbG93Qm94XTsKLSAgICBhdXRvJiBjdXJy
ZW50TGluZSA9IGxpbmVzW3ByZXZpb3VzRGlzcGxheUJveC5saW5lSW5kZXgoKV07Ci0gICAgaWYg
KHByZXZpb3VzRGlzcGxheUJveC5pc0lubGluZUJveCgpICYmICZvdXRPZkZsb3dCb3gucGFyZW50
KCkgPT0gJnByZXZpb3VzRGlzcGxheUJveC5sYXlvdXRCb3goKSkgewotICAgICAgICAvLyBTcGVj
aWFsIGhhbmRsaW5nIGZvciBjYXNlcyB3aGVuIHRoaXMgaXMgdGhlIGZpcnN0IGJveCBpbnNpZGUg
YW4gaW5saW5lIGJveDoKLSAgICAgICAgLy8gPGRpdj50ZXh0PHNwYW4+PGltZyBzdHlsZT0icG9z
aXRpb246IGFic29sdXRlIj5jb250ZW50PC9zcGFuPjwvZGl2PgotICAgICAgICBhdXRvJiBpbmxp
bmVCb3ggPSBwcmV2aW91c0Rpc3BsYXlCb3gubGF5b3V0Qm94KCk7Ci0gICAgICAgIGF1dG8gaW5s
aW5lQm94RGlzcGxheUJveCA9IGJveGVzWypmaXJzdERpc3BsYXlCb3hJbmRleEZvckxheW91dEJv
eChpbmxpbmVCb3gsIGJveGVzKV07Ci0gICAgICAgIGF1dG8gaW5saW5lQ29udGVudEJveE9mZnNl
dCA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goaW5saW5lQm94KS5ib3JkZXJB
bmRQYWRkaW5nU3RhcnQoKTsKLSAgICAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKQot
ICAgICAgICAgICAgaW5saW5lQm94RGlzcGxheUJveC5tb3ZlSG9yaXpvbnRhbGx5KGlubGluZUNv
bnRlbnRCb3hPZmZzZXQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBpbmxpbmVCb3hEaXNw
bGF5Qm94Lm1vdmVWZXJ0aWNhbGx5KGlubGluZUNvbnRlbnRCb3hPZmZzZXQpOwotICAgICAgICBy
ZXR1cm4gbGVmdFNpZGVUb0xvZ2ljYWxUb3BMZWZ0KGlubGluZUJveERpc3BsYXlCb3gsIGxpbmVz
W2lubGluZUJveERpc3BsYXlCb3gubGluZUluZGV4KCldLCBmYWxzZSk7Ci0gICAgfQotCi0gICAg
YXV0byBwcmV2aW91c0JveE92ZXJmbG93cyA9IChpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IHBy
ZXZpb3VzRGlzcGxheUJveC5yaWdodCgpID4gY3VycmVudExpbmUucmlnaHQoKSA6IHByZXZpb3Vz
RGlzcGxheUJveC5ib3R0b20oKSA+IGN1cnJlbnRMaW5lLmJvdHRvbSgpKSB8fCBwcmV2aW91c0Rp
c3BsYXlCb3guaXNMaW5lQnJlYWtCb3goKTsKLSAgICBpZiAoIXByZXZpb3VzQm94T3ZlcmZsb3dz
KQotICAgICAgICByZXR1cm4gcmlnaHRTaWRlVG9Mb2dpY2FsVG9wTGVmdChwcmV2aW91c0Rpc3Bs
YXlCb3gsIGN1cnJlbnRMaW5lKTsKLQotICAgIGF1dG8gbmV4dERpc3BsYXlCb3hJbmRleEFmdGVy
T3V0T2ZGbG93ID0gbmV4dERpc3BsYXlCb3hJbmRleChvdXRPZkZsb3dCb3gsIGJveGVzKTsKLSAg
ICBpZiAoIW5leHREaXNwbGF5Qm94SW5kZXhBZnRlck91dE9mRmxvdykgewotICAgICAgICAvLyBU
aGlzIGlzIHRoZSBsYXN0IGNvbnRlbnQgb24gdGhlIGJsb2NrIGFuZCBpdCBkb2VzIG5vdCBmaXQg
dGhlIGxhc3QgbGluZS4KLSAgICAgICAgcmV0dXJuIHsgY29udGVudExlZnRBZnRlckxhc3RMaW5l
KGNvbnN0cmFpbnRzLCBjdXJyZW50TGluZS5ib3R0b20oKSwgZmxvYXRpbmdDb250ZXh0KSwgaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUgPyBjdXJyZW50TGluZS5ib3R0b20oKSA6IGN1cnJlbnRMaW5l
LnJpZ2h0KCkgfTsKLSAgICB9Ci0gICAgYXV0byYgbmV4dERpc3BsYXlCb3ggPSBib3hlc1sqbmV4
dERpc3BsYXlCb3hJbmRleEFmdGVyT3V0T2ZGbG93XTsKLSAgICByZXR1cm4gbGVmdFNpZGVUb0xv
Z2ljYWxUb3BMZWZ0KG5leHREaXNwbGF5Qm94LCBsaW5lc1tuZXh0RGlzcGxheUJveC5saW5lSW5k
ZXgoKV0pOwotfQotCi1MYXlvdXRQb2ludCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6OnN0YXRp
Y1Bvc2l0aW9uRm9yT3V0T2ZGbG93QmxvY2tMZXZlbEJveChjb25zdCBCb3gmIG91dE9mRmxvd0Jv
eCwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50JiBjb25zdHJhaW50cywgY29uc3Qg
SW5saW5lRGlzcGxheTo6Q29udGVudCYgZGlzcGxheUNvbnRlbnQpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKG91dE9mRmxvd0JveC5zdHlsZSgpLmlzRGlzcGxheUJsb2NrTGV2ZWwoKSk7Ci0KLSAgICBh
dXRvIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID0gZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCku
c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwotICAgIGF1dG8mIGxpbmVzID0gZGlz
cGxheUNvbnRlbnQubGluZXM7Ci0gICAgYXV0byYgYm94ZXMgPSBkaXNwbGF5Q29udGVudC5ib3hl
czsKLSAgICBhdXRvIGNvbnRlbnRCb3hUb3BMZWZ0ID0gTGF5b3V0UG9pbnQgeyBjb25zdHJhaW50
cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQsIGNvbnN0cmFpbnRzLmxvZ2ljYWxUb3AoKSB9Owot
Ci0gICAgaWYgKGxpbmVzLmlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQoYm94ZXMuaXNFbXB0
eSgpKTsKLSAgICAgICAgcmV0dXJuIGNvbnRlbnRCb3hUb3BMZWZ0OwotICAgIH0KLQotICAgIC8v
IEJsb2NrIGxldmVsIGJveGVzIGFyZSBwbGFjZWQgdW5kZXIgdGhlIGN1cnJlbnQgbGluZSBhcyBp
ZiB0aGV5IHdlcmUgbm9ybWFsIGluZmxvdyBibG9jayBsZXZlbCBib3hlcy4KLSAgICBhdXRvIHBy
ZXZpb3VzRGlzcGxheUJveEluZGV4QmVmb3JlT3V0T2ZGbG93Qm94ID0gcHJldmlvdXNEaXNwbGF5
Qm94SW5kZXgob3V0T2ZGbG93Qm94LCBib3hlcyk7Ci0gICAgaWYgKCFwcmV2aW91c0Rpc3BsYXlC
b3hJbmRleEJlZm9yZU91dE9mRmxvd0JveCkKLSAgICAgICAgcmV0dXJuIHsgY29udGVudEJveFRv
cExlZnQueCgpLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IGxpbmVzWzBdLnRvcCgpIDogbGlu
ZXNbMF0ubGVmdCgpIH07Ci0gICAgYXV0byYgY3VycmVudExpbmUgPSBsaW5lc1tib3hlc1sqcHJl
dmlvdXNEaXNwbGF5Qm94SW5kZXhCZWZvcmVPdXRPZkZsb3dCb3hdLmxpbmVJbmRleCgpXTsKLSAg
ICByZXR1cm4geyBjb250ZW50Qm94VG9wTGVmdC54KCksIExheW91dFVuaXQgeyBpc0hvcml6b250
YWxXcml0aW5nTW9kZSA/IGN1cnJlbnRMaW5lLmJvdHRvbSgpIDogY3VycmVudExpbmUucmlnaHQo
KSB9IH07Ci19Ci0KIElubGluZUxheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpp
bml0aWFsTGluZUhlaWdodChib29sIGlzRmlyc3RMaW5lKSBjb25zdAogewogICAgIGlmIChsYXlv
dXRTdGF0ZSgpLmluU3RhbmRhcmRzTW9kZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVGb3JtYXR0aW5nR2VvbWV0cnkuaAppbmRleCA1YWJkZTFlODBiN2EuLmU1MzZkOTMwZjBiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmgKQEAg
LTU2LDkgKzU2LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIElubGluZVJlY3QgZmxpcFZpc3Vh
bFJlY3RUb0xvZ2ljYWxGb3JXcml0aW5nTW9kZShjb25zdCBJbmxpbmVSZWN0JiB2aXN1YWxSZWN0
LCBXcml0aW5nTW9kZSk7CiAKLSAgICBMYXlvdXRQb2ludCBzdGF0aWNQb3NpdGlvbkZvck91dE9m
Rmxvd0lubGluZUxldmVsQm94KGNvbnN0IEJveCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93
Q29udGVudCYsIGNvbnN0IElubGluZURpc3BsYXk6OkNvbnRlbnQmLCBjb25zdCBGbG9hdGluZ0Nv
bnRleHQmKSBjb25zdDsKLSAgICBMYXlvdXRQb2ludCBzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxv
d0Jsb2NrTGV2ZWxCb3goY29uc3QgQm94JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250
ZW50JiwgY29uc3QgSW5saW5lRGlzcGxheTo6Q29udGVudCYpIGNvbnN0OwotCiAgICAgdm9pZCBh
ZGp1c3RNYXJnaW5TdGFydEZvckxpc3RNYXJrZXIoY29uc3QgRWxlbWVudEJveCYsIExheW91dFVu
aXQgbmVzdGVkTGlzdE1hcmtlck1hcmdpblN0YXJ0LCBJbmxpbmVMYXlvdXRVbml0IHJvb3RJbmxp
bmVCb3hPZmZzZXQpIGNvbnN0OwogCiAgICAgc3RhdGljIElubGluZUxheW91dFVuaXQgaG9yaXpv
bnRhbEFsaWdubWVudE9mZnNldChjb25zdCBSZW5kZXJTdHlsZSYgcm9vdFN0eWxlLCBJbmxpbmVM
YXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsUmlnaHQsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2lj
YWxSaWdodCwgSW5saW5lTGF5b3V0VW5pdCBoYW5naW5nVHJhaWxpbmdXaWR0aCwgY29uc3QgTGlu
ZTo6UnVuTGlzdCYgcnVucywgYm9vbCBpc0xhc3RMaW5lLCBzdGQ6Om9wdGlvbmFsPFRleHREaXJl
Y3Rpb24+IGlubGluZUJhc2VEaXJlY3Rpb25PdmVycmlkZSA9IHN0ZDo6bnVsbG9wdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVJdGVtc0J1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNwcAppbmRleCAyM2FlNmQ4MDgwMjYu
LjM2NjNkZTQyMjkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIu
Y3BwCkBAIC04Niw5ICs4Niw3IEBAIElubGluZUl0ZW1zQnVpbGRlcjo6SW5saW5lSXRlbXNCdWls
ZGVyKGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwKIHZvaWQgSW5saW5l
SXRlbXNCdWlsZGVyOjpidWlsZChJbmxpbmVJdGVtUG9zaXRpb24gc3RhcnRQb3NpdGlvbikKIHsK
ICAgICBJbmxpbmVJdGVtcyBpbmxpbmVJdGVtczsKLSAgICBGb3JtYXR0aW5nU3RhdGU6Ok91dE9m
Rmxvd0JveExpc3Qgb3V0T2ZGbG93Qm94ZXM7Ci0KLSAgICBjb2xsZWN0SW5saW5lSXRlbXMoaW5s
aW5lSXRlbXMsIG91dE9mRmxvd0JveGVzLCBzdGFydFBvc2l0aW9uKTsKKyAgICBjb2xsZWN0SW5s
aW5lSXRlbXMoaW5saW5lSXRlbXMsIHN0YXJ0UG9zaXRpb24pOwogCiAgICAgaWYgKCFyb290KCku
c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgfHwgY29udGVudFJlcXVpcmVzVmlzdWFs
UmVvcmRlcmluZygpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgcGFydGlh
bCwgeWV0IHBhcmFncmFwaCBsZXZlbCBiaWRpIGNvbnRlbnQgaGFuZGxpbmcuCkBAIC0xMDksNyAr
MTA3LDYgQEAgdm9pZCBJbmxpbmVJdGVtc0J1aWxkZXI6OmJ1aWxkKElubGluZUl0ZW1Qb3NpdGlv
biBzdGFydFBvc2l0aW9uKQogICAgICAgICBtX2Zvcm1hdHRpbmdTdGF0ZS5hcHBlbmRJbmxpbmVJ
dGVtcyhXVEZNb3ZlKGlubGluZUl0ZW1zKSk7CiAgICAgfTsKICAgICBhZGp1c3RJbmxpbmVGb3Jt
YXR0aW5nU3RhdGVXaXRoTmV3SW5saW5lSXRlbXMoKTsKLSAgICBtX2Zvcm1hdHRpbmdTdGF0ZS5z
ZXRPdXRPZkZsb3dCb3hlcyhXVEZNb3ZlKG91dE9mRmxvd0JveGVzKSk7CiAKICNpZiBBU1NFUlRf
RU5BQkxFRAogICAgIC8vIENoZWNrIGlmIHdlJ3ZlIGdvdCBtYXRjaGluZyBpbmxpbmUgYm94IHN0
YXJ0L2VuZCBwYWlycyBhbmQgdW5pcXVlIGlubGluZSBsZXZlbCBpdGVtcyAobm9uLXRleHQsIG5v
bi1pbmxpbmUgYm94IGl0ZW1zKS4KQEAgLTE5MSw3ICsxODgsNyBAQCBzdGF0aWMgTGF5b3V0UXVl
dWUgaW5pdGlhbGl6ZUxheW91dFF1ZXVlKGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250
ZXh0Um9vdAogICAgIHJldHVybiBsYXlvdXRRdWV1ZTsKIH0KIAotdm9pZCBJbmxpbmVJdGVtc0J1
aWxkZXI6OmNvbGxlY3RJbmxpbmVJdGVtcyhJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIEZvcm1h
dHRpbmdTdGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCYgb3V0T2ZGbG93Qm94ZXMsIElubGluZUl0ZW1Q
b3NpdGlvbiBzdGFydFBvc2l0aW9uKQordm9pZCBJbmxpbmVJdGVtc0J1aWxkZXI6OmNvbGxlY3RJ
bmxpbmVJdGVtcyhJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIElubGluZUl0ZW1Qb3NpdGlvbiBz
dGFydFBvc2l0aW9uKQogewogICAgIC8vIFRyYXZlcnNlIHRoZSB0cmVlIGFuZCBjcmVhdGUgaW5s
aW5lIGl0ZW1zIG91dCBvZiBpbmxpbmUgYm94ZXMgYW5kIGxlYWYgbm9kZXMuIFRoaXMgZXNzZW50
aWFsbHkgdHVybnMgdGhlIHRyZWUgaW5saW5lIHN0cnVjdHVyZSBpbnRvIGEgZmxhdCBvbmUuCiAg
ICAgLy8gPHNwYW4+dGV4dDxzcGFuPjwvc3Bhbj48aW1nPjwvc3Bhbj4gLT4gW0lubGluZUJveFN0
YXJ0XVtJbmxpbmVMZXZlbEJveF1bSW5saW5lQm94U3RhcnRdW0lubGluZUJveEVuZF1bSW5saW5l
TGV2ZWxCb3hdW0lubGluZUJveEVuZF0KQEAgLTIzMyw5ICsyMzAsOCBAQCB2b2lkIElubGluZUl0
ZW1zQnVpbGRlcjo6Y29sbGVjdElubGluZUl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywg
Rm9ybWF0dGluZwogICAgICAgICB3aGlsZSAoIWxheW91dFF1ZXVlLmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgYXV0byBsYXlvdXRCb3ggPSBsYXlvdXRRdWV1ZS50YWtlTGFzdCgpOwogICAgICAg
ICAgICAgaWYgKGxheW91dEJveC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAg
ICAgICAgICAvLyBMZXQncyBub3QgY29uc3RydWN0IElubGluZUl0ZW1zIGZvciBvdXQtb2YtZmxv
dyBjb250ZW50IGFzIHRoZXkgZG9uJ3QgcGFydGljaXBhdGUgaW4gdGhlIGlubGluZSBsYXlvdXQu
Ci0gICAgICAgICAgICAgICAgLy8gSG93ZXZlciB0byBiZSBhYmxlIHRvIHN0YXRpYyBwb3NpdGlv
bmluZyB0aGVtLCB3ZSBuZWVkIHRvIGNvbXB1dGUgdGhlaXIgYXBwcm94aW1hdGUgcG9zaXRpb25z
LgotICAgICAgICAgICAgICAgIG91dE9mRmxvd0JveGVzLmFwcGVuZChsYXlvdXRCb3gpOworICAg
ICAgICAgICAgICAgIG1faXNOb25CaWRpVGV4dEFuZEZvcmNlZExpbmVCcmVha09ubHlDb250ZW50
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaW5saW5lSXRlbXMuYXBwZW5kKHsgbGF5b3V0Qm94
LCBJbmxpbmVJdGVtOjpUeXBlOjpPcGFxdWUgfSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGxh
eW91dEJveC0+aXNJbmxpbmVUZXh0Qm94KCkpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBpbmxp
bmVUZXh0Qm94ID0gZG93bmNhc3Q8SW5saW5lVGV4dEJveD4obGF5b3V0Qm94KTsKICAgICAgICAg
ICAgICAgICBoYW5kbGVUZXh0Q29udGVudChpbmxpbmVUZXh0Qm94LCBpbmxpbmVJdGVtcywgcGFy
dGlhbENvbnRlbnRPZmZzZXQoaW5saW5lVGV4dEJveCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVJdGVtc0J1aWxkZXIuaAppbmRleCA1ZDlkN2FjN2UyNDAuLjUyMmQxODM4Nzc1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lSXRlbXNCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgYnVpbGQoSW5saW5lSXRlbVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24pOwog
CiBwcml2YXRlOgotICAgIHZvaWQgY29sbGVjdElubGluZUl0ZW1zKElubGluZUl0ZW1zJiwgRm9y
bWF0dGluZ1N0YXRlOjpPdXRPZkZsb3dCb3hMaXN0JiwgSW5saW5lSXRlbVBvc2l0aW9uIHN0YXJ0
UG9zaXRpb24pOworICAgIHZvaWQgY29sbGVjdElubGluZUl0ZW1zKElubGluZUl0ZW1zJiwgSW5s
aW5lSXRlbVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24pOwogICAgIHZvaWQgYnJlYWtBbmRDb21wdXRl
QmlkaUxldmVscyhJbmxpbmVJdGVtcyYpOwogICAgIHZvaWQgY29tcHV0ZUlubGluZVRleHRJdGVt
V2lkdGhzKElubGluZUl0ZW1zJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKaW5kZXgg
MzNhZmY5MTQ1MzM1Li40Njg0ZWU4OWU5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuY3Bw
CkBAIC0yNjAsNiArMjYwLDI3IEBAIHZvaWQgTGluZTo6aGFuZGxlT3ZlcmZsb3dpbmdOb25CcmVh
a2luZ1NwYWNlKFRyYWlsaW5nQ29udGVudEFjdGlvbiB0cmFpbGluZ0NvbnRlCiAgICAgbV9jb250
ZW50TG9naWNhbFdpZHRoIC09IHJlbW92ZWRPckNvbGxhcHNlZENvbnRlbnRXaWR0aDsKIH0KIAor
Y29uc3QgQm94KiBMaW5lOjpyZW1vdmVPdmVyZmxvd2luZ091ck9mRmxvd0NvbnRlbnQoKQorewor
ICAgIGF1dG8gbGFzdFRyYWlsaW5nT3BhcXVlSXRlbUluZGV4ID0gc3RkOjpvcHRpb25hbDxzaXpl
X3Q+IHsgfTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IG1fcnVucy5zaXplKCk7IGluZGV4LS07
KSB7CisgICAgICAgIGF1dG8mIHJ1biA9IG1fcnVuc1tpbmRleF07CisgICAgICAgIGlmIChydW4u
aXNPcGFxdWUoKSkgeworICAgICAgICAgICAgbGFzdFRyYWlsaW5nT3BhcXVlSXRlbUluZGV4ID0g
aW5kZXg7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXJ1
bi5sb2dpY2FsV2lkdGgoKSAmJiAocnVuLmlzSW5saW5lQm94U3RhcnQoKSB8fCBydW4uaXNJbmxp
bmVCb3hFbmQoKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGlmICghbGFzdFRyYWlsaW5nT3BhcXVlSXRlbUluZGV4KQorICAgICAgICByZXR1cm4g
eyB9OworICAgIGF1dG8qIGxhc3RUcmFpbGluZ09wYXF1ZUJveCA9ICZtX3J1bnNbKmxhc3RUcmFp
bGluZ09wYXF1ZUl0ZW1JbmRleF0ubGF5b3V0Qm94KCk7CisgICAgbV9ydW5zLnJlbW92ZSgqbGFz
dFRyYWlsaW5nT3BhcXVlSXRlbUluZGV4LCBtX3J1bnMuc2l6ZSgpIC0gKmxhc3RUcmFpbGluZ09w
YXF1ZUl0ZW1JbmRleCk7CisgICAgQVNTRVJUKCFtX3J1bnMuaXNFbXB0eSgpKTsKKyAgICByZXR1
cm4gbGFzdFRyYWlsaW5nT3BhcXVlQm94OworfQorCiB2b2lkIExpbmU6OmhhbmRsZVRyYWlsaW5n
SGFuZ2luZ0NvbnRlbnQoc3RkOjpvcHRpb25hbDxJbnRyaW5zaWNXaWR0aE1vZGU+IGludHJpbnNp
Y1dpZHRoTW9kZSwgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9udGFsQXZhaWxhYmxlU3BhY2VGb3JD
b250ZW50LCBib29sIGlzTGFzdEZvcm1hdHRlZExpbmUpCiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFm
dHMuY3Nzd2cub3JnL2Nzcy10ZXh0LyNoYW5naW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmgKaW5k
ZXggNGQ5M2Q3MzZiZmE4Li43YjJhMDQzY2QyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmgK
QEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIElubGluZUxheW91dFVuaXQgaGFuZGxlVHJh
aWxpbmdUcmltbWFibGVDb250ZW50KFRyYWlsaW5nQ29udGVudEFjdGlvbik7CiAgICAgdm9pZCBo
YW5kbGVUcmFpbGluZ0hhbmdpbmdDb250ZW50KHN0ZDo6b3B0aW9uYWw8SW50cmluc2ljV2lkdGhN
b2RlPiwgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9udGFsQXZhaWxhYmxlU3BhY2UsIGJvb2wgaXNM
YXN0Rm9ybWF0dGVkTGluZSk7CiAgICAgdm9pZCBoYW5kbGVPdmVyZmxvd2luZ05vbkJyZWFraW5n
U3BhY2UoVHJhaWxpbmdDb250ZW50QWN0aW9uLCBJbmxpbmVMYXlvdXRVbml0IG92ZXJmbG93aW5n
V2lkdGgpOworICAgIGNvbnN0IEJveCogcmVtb3ZlT3ZlcmZsb3dpbmdPdXJPZkZsb3dDb250ZW50
KCk7CiAgICAgdm9pZCByZXNldEJpZGlMZXZlbEZvclRyYWlsaW5nV2hpdGVzcGFjZShVQmlEaUxl
dmVsIHJvb3RCaWRpTGV2ZWwpOwogICAgIHZvaWQgYXBwbHlSdW5FeHBhbnNpb24oSW5saW5lTGF5
b3V0VW5pdCBob3Jpem9udGFsQXZhaWxhYmxlU3BhY2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmVCb3guY3BwCmluZGV4IDNiYzE4MjUyMmIzNy4uNjJkNjY3MmVjODgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQm94LmNwcApAQCAtMTMwLDYgKzEzMCwxMyBAQCBJbmxpbmVSZWN0
IExpbmVCb3g6OmxvZ2ljYWxCb3JkZXJCb3hGb3JJbmxpbmVCb3goY29uc3QgQm94JiBsYXlvdXRC
b3gsIGNvbnN0IEJveAogICAgIHJldHVybiBsb2dpY2FsUmVjdDsKIH0KIAorSW5saW5lUmVjdCBM
aW5lQm94Ojpsb2dpY2FsUmVjdEZvck9wYXF1ZUJveChjb25zdCBMaW5lOjpSdW4mIG9wYXF1ZVJ1
biwgY29uc3QgQm94R2VvbWV0cnkmIGJveEdlb21ldHJ5KSBjb25zdAoreworICAgIEFTU0VSVChv
cGFxdWVSdW4uaXNPcGFxdWUoKSk7CisgICAgQVNTRVJUKG9wYXF1ZVJ1bi5sYXlvdXRCb3goKS5z
dHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5SW5saW5lVHlwZSgpKTsKKyAgICByZXR1cm4geyB7IH0s
IG1fcm9vdElubGluZUJveC5sb2dpY2FsTGVmdCgpICsgb3BhcXVlUnVuLmxvZ2ljYWxMZWZ0KCks
IGJveEdlb21ldHJ5LmJvcmRlckJveFdpZHRoKCksIGJveEdlb21ldHJ5LmJvcmRlckJveEhlaWdo
dCgpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIExheW91dAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmgKaW5kZXggOTQwNTQ5YjU3NTU2Li4zZTBl
MzllNzc3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94LmgKQEAgLTcxLDYgKzcxLDcg
QEAgcHVibGljOgogICAgIElubGluZVJlY3QgbG9naWNhbFJlY3RGb3JSb290SW5saW5lQm94KCkg
Y29uc3QgeyByZXR1cm4gbV9yb290SW5saW5lQm94LmxvZ2ljYWxSZWN0KCk7IH0KICAgICBJbmxp
bmVSZWN0IGxvZ2ljYWxCb3JkZXJCb3hGb3JBdG9taWNJbmxpbmVMZXZlbEJveChjb25zdCBCb3gm
LCBjb25zdCBCb3hHZW9tZXRyeSYpIGNvbnN0OwogICAgIElubGluZVJlY3QgbG9naWNhbEJvcmRl
ckJveEZvcklubGluZUJveChjb25zdCBCb3gmLCBjb25zdCBCb3hHZW9tZXRyeSYpIGNvbnN0Owor
ICAgIElubGluZVJlY3QgbG9naWNhbFJlY3RGb3JPcGFxdWVCb3goY29uc3QgTGluZTo6UnVuJiBv
cGFxdWVSdW4sIGNvbnN0IEJveEdlb21ldHJ5JikgY29uc3Q7CiAKICAgICBjb25zdCBJbmxpbmVM
ZXZlbEJveCogaW5saW5lTGV2ZWxCb3hGb3IoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0IHsg
cmV0dXJuIGNvbnN0X2Nhc3Q8TGluZUJveCY+KCp0aGlzKS5pbmxpbmVMZXZlbEJveEZvcihsYXlv
dXRCb3gpOyB9CiAgICAgY29uc3QgSW5saW5lTGV2ZWxCb3gmIGlubGluZUxldmVsQm94Rm9yKGNv
bnN0IExpbmU6OlJ1biYgbGluZVJ1bikgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxMaW5lQm94
Jj4oKnRoaXMpLmlubGluZUxldmVsQm94Rm9yKGxpbmVSdW4pOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVp
bGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKaW5kZXggNDM3MDgzNzdlZWI5Li5kZjU2OTIwNDcxMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTQ3Nyw2ICs0
NzcsMjYgQEAgTGluZUNvbnRlbnQgTGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQW5kRmxvYXRDb250
ZW50KGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbmVlZHMKICAgICAgICAgICAgICAgICBtX2xpbmUu
aGFuZGxlT3ZlcmZsb3dpbmdOb25CcmVha2luZ1NwYWNlKGlzTGluZUJyZWFrQWZ0ZXJXaGl0ZXNw
YWNlKCkgPyBMaW5lOjpUcmFpbGluZ0NvbnRlbnRBY3Rpb246OlByZXNlcnZlIDogTGluZTo6VHJh
aWxpbmdDb250ZW50QWN0aW9uOjpSZW1vdmUsIG1fbGluZS5jb250ZW50TG9naWNhbFdpZHRoKCkg
LSBob3Jpem9udGFsQXZhaWxhYmxlU3BhY2UpOwogCiAgICAgICAgICAgICBtX2xpbmUuaGFuZGxl
VHJhaWxpbmdIYW5naW5nQ29udGVudChpbnRyaW5zaWNXaWR0aE1vZGUoKSwgaG9yaXpvbnRhbEF2
YWlsYWJsZVNwYWNlLCBpc0xhc3RMaW5lKTsKKworICAgICAgICAgICAgYXV0byBtYXlOZWVkT3V0
T2ZGbG93T3ZlcmZsb3dUcmltbWluZyA9ICFpc0luSW50cmluc2ljV2lkdGhNb2RlKCkgJiYgbGlu
ZUhhc092ZXJmbG93KCkgJiYgIWxpbmVDb250ZW50LnBhcnRpYWxUcmFpbGluZ0NvbnRlbnRMZW5n
dGggJiYgVGV4dFV0aWw6OmlzV3JhcHBpbmdBbGxvd2VkKHJvb3RTdHlsZSk7CisgICAgICAgICAg
ICBpZiAobWF5TmVlZE91dE9mRmxvd092ZXJmbG93VHJpbW1pbmcpIHsKKyAgICAgICAgICAgICAg
ICAvLyBPdmVyZmxvd2luZyBvdXQtb2YtZmxvdyBib3hlcyBzaG91bGQgd3JhcCB0aGUgdG8gc3Vi
c2VxdWVudCBsaW5lcyBqdXN0IGxpa2UgYW55IG90aGVyIGluLWZsb3cgY29udGVudC4KKyAgICAg
ICAgICAgICAgICAvLyBIb3dldmVyIHNpbmNlIHdlIHRha2UgYSBzaG9ydGN1dCBieSBub3QgY29u
c2lkZXJpbmcgb3V0LW9mLWZsb3cgY29udGVudCBhcyBpbmZsb3cgYnV0IGluc3RlYWQgdHJlYXRp
bmcgaXQgYXMgYW4gb3BhcXVlIGJveCB3aXRoIHplcm8gd2lkdGggYW5kIG5vCisgICAgICAgICAg
ICAgICAgLy8gc29mdCB3cmFwIG9wcG9ydHVuaXR5LCBhbnkgb3ZlcmZsb3dpbmcgb3V0LW9mLWZs
b3cgY29udGVudCB3b3VsZCBwaWxlIHVwIGFzIHRyYWlsaW5nIGNvbnRlbnQuCisgICAgICAgICAg
ICAgICAgLy8gQWx0ZXJuYXRpdmVseSB3ZSBjb3VsZCBpbml0aWF0ZSBhIHR3byBwYXNzIGxheW91
dCBmaXJzdCB3aXRoIG91dC1vZi1mbG93IGNvbnRlbnQgdHJlYXRlZCBhcyB0cnVlIGluZmxvdyBh
bmQgYSBzZWNvbmQgd2l0aG91dCB0aGVtLgorICAgICAgICAgICAgICAgIEFTU0VSVCghbGluZUNv
bnRlbnQucmFuZ2UuZW5kLm9mZnNldCk7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGxhc3RS
ZW1vdmVkVHJhaWxpbmdCb3ggPSBtX2xpbmUucmVtb3ZlT3ZlcmZsb3dpbmdPdXJPZkZsb3dDb250
ZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsaW5lRW5kSW5kZXggPSBbJl0gewor
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChhdXRvIGluZGV4ID0gbGluZUNvbnRlbnQucmFu
Z2Uuc3RhcnQuaW5kZXg7IGluZGV4IDwgbGluZUNvbnRlbnQucmFuZ2UuZW5kLmluZGV4OyArK2lu
ZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCZtX2lubGluZUl0ZW1zW2lu
ZGV4XS5sYXlvdXRCb3goKSA9PSBsYXN0UmVtb3ZlZFRyYWlsaW5nQm94KQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBsaW5lQ29udGVudC5yYW5nZS5lbmQuaW5kZXg7Cisg
ICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIGxpbmVDb250ZW50LnJh
bmdlLmVuZC5pbmRleCA9IGxpbmVFbmRJbmRleCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KICAgICAgICAgfTsKICAgICAgICAgaGFuZGxlVHJhaWxpbmdDb250ZW50KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyLmNwcAppbmRleCBmNTZiYzA4ZGVlZWUuLjkyZjU0Y2Q4ZTc5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyLmNwcApAQCAtNDUxLDEwICs0NTEsMTIgQEAgdm9pZCBJbmxpbmVEaXNw
bGF5Q29udGVudEJ1aWxkZXI6OnByb2Nlc3NOb25CaWRpQ29udGVudChjb25zdCBMaW5lTGF5b3V0
UmVzdWx0JgogI2VuZGlmCiAgICAgYXV0byB3cml0aW5nTW9kZSA9IHJvb3QoKS5zdHlsZSgpLndy
aXRpbmdNb2RlKCk7CiAgICAgYXV0byBjb250ZW50U3RhcnRJblZpc3VhbE9yZGVyID0gbV9kaXNw
bGF5TGluZS50b3BMZWZ0KCk7CisgICAgVmVjdG9yPHNpemVfdD4gYmxvY2tMZXZlbE91dE9mRmxv
d0JveExpc3Q7CiAKICAgICBhcHBlbmRSb290SW5saW5lQm94RGlzcGxheUJveChmbGlwUm9vdElu
bGluZUJveFJlY3RUb1Zpc3VhbEZvcldyaXRpbmdNb2RlKGxpbmVCb3gubG9naWNhbFJlY3RGb3JS
b290SW5saW5lQm94KCksIHdyaXRpbmdNb2RlKSwgbGluZUJveC5yb290SW5saW5lQm94KCkuaGFz
Q29udGVudCgpLCBib3hlcyk7CiAKLSAgICBmb3IgKGF1dG8mIGxpbmVSdW4gOiBsaW5lTGF5b3V0
UmVzdWx0LmlubGluZUNvbnRlbnQpIHsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4
IDwgbGluZUxheW91dFJlc3VsdC5pbmxpbmVDb250ZW50LnNpemUoKTsgKytpbmRleCkgeworICAg
ICAgICBhdXRvJiBsaW5lUnVuID0gbGluZUxheW91dFJlc3VsdC5pbmxpbmVDb250ZW50W2luZGV4
XTsKICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gbGluZVJ1bi5sYXlvdXRCb3goKTsKIAogICAg
ICAgICBhdXRvIHZpc3VhbFJlY3RSZWxhdGl2ZVRvUm9vdCA9IFsmXShhdXRvIGxvZ2ljYWxSZWN0
KSB7CkBAIC00OTgsMTEgKzUwMCwxOCBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRl
cjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAobGluZVJ1bi5pc09wYXF1ZSgp
KSB7Ci0gICAgICAgICAgICAvLyBTZXQgZ2VvbWV0cnkgZm9yIHRoaXMgb3BhcXVlIGJveC4KKyAg
ICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlKCkuYm94R2VvbWV0
cnkobGF5b3V0Qm94KTsKKyAgICAgICAgICAgIGlmIChsYXlvdXRCb3guc3R5bGUoKS5pc09yaWdp
bmFsRGlzcGxheUlubGluZVR5cGUoKSkgeworICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRv
cExlZnQgPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yT3BhcXVlQm94KGxpbmVSdW4sIGJveEdlb21l
dHJ5KS50b3BMZWZ0KCk7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcExlZnQubW92ZUJ5KGxp
bmVCb3gubG9naWNhbFJlY3QoKS50b3BMZWZ0KCkpOworICAgICAgICAgICAgICAgIGJveEdlb21l
dHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHRvTGF5b3V0UG9pbnQobG9naWNhbFRvcExlZnQpKTsKKyAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGJsb2NrTGV2ZWxPdXRPZkZsb3dCb3hM
aXN0LmFwcGVuZChpbmRleCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAg
ICAgICBBU1NFUlQobGluZVJ1bi5pc0lubGluZUJveEVuZCgpIHx8IGxpbmVSdW4uaXNXb3JkQnJl
YWtPcHBvcnR1bml0eSgpKTsKICAgICB9CisgICAgc2V0R2VvbWV0cnlGb3JCbG9ja0xldmVsT3V0
T2ZGbG93Qm94ZXMoYmxvY2tMZXZlbE91dE9mRmxvd0JveExpc3QsIGxpbmVCb3gsIGxpbmVMYXlv
dXRSZXN1bHQuaW5saW5lQ29udGVudCk7CiB9CiAKIHN0cnVjdCBEaXNwbGF5Qm94VHJlZSB7CkBA
IC02ODIsNiArNjkxLDcgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OnByb2Nl
c3NCaWRpQ29udGVudChjb25zdCBMaW5lTGF5b3V0UmVzdWx0JiBsaW4KICAgICBhdXRvIGhhc0lu
bGluZUJveCA9IGZhbHNlOwogICAgIGF1dG8gY3JlYXRlRGlzcGxheUJveGVzSW5WaXN1YWxPcmRl
ciA9IFsmXSB7CiAKKyAgICAgICAgVmVjdG9yPHNpemVfdD4gYmxvY2tMZXZlbE91dE9mRmxvd0Jv
eExpc3Q7CiAgICAgICAgIGF1dG8gcm9vdElubGluZUJveFZpZHN1YWxSZWN0SW5JbmxpbmVEaXJl
Y3Rpb24gPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yUm9vdElubGluZUJveCgpOwogICAgICAgICBy
b290SW5saW5lQm94Vmlkc3VhbFJlY3RJbklubGluZURpcmVjdGlvbi5zZXRMZWZ0KG1fZGlzcGxh
eUxpbmUuY29udGVudExvZ2ljYWxMZWZ0SWdub3JpbmdJbmxpbmVEaXJlY3Rpb24oKSk7CiAgICAg
ICAgIGFwcGVuZFJvb3RJbmxpbmVCb3hEaXNwbGF5Qm94KGZsaXBSb290SW5saW5lQm94UmVjdFRv
VmlzdWFsRm9yV3JpdGluZ01vZGUocm9vdElubGluZUJveFZpZHN1YWxSZWN0SW5JbmxpbmVEaXJl
Y3Rpb24sIHJvb3QoKS5zdHlsZSgpLndyaXRpbmdNb2RlKCkpLCBsaW5lQm94LnJvb3RJbmxpbmVC
b3goKS5oYXNDb250ZW50KCksIGJveGVzKTsKQEAgLTg2OSw2ICs4NzksMzIgQEAgdm9pZCBJbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNvbGxlY3RJbmtPdmVyZmxvd0ZvcklubGluZUJveGVz
KElubGluZURpc3BsYXkKICAgICB9CiB9CiAKK3ZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyOjpzZXRHZW9tZXRyeUZvckJsb2NrTGV2ZWxPdXRPZkZsb3dCb3hlcyhjb25zdCBWZWN0b3I8
c2l6ZV90PiBpbmRleExpc3QsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsIGNvbnN0IExpbmU6OlJ1
bkxpc3QmIGxpbmVSdW5zKQoreworICAgIGF1dG8gZm9ybWF0dGluZ0NvbnRleHQgPSB0aGlzLT5m
b3JtYXR0aW5nQ29udGV4dCgpOworICAgIGF1dG8gb3V0T2ZGbG93Q29udGVudEhhc1ByZXZpb3Vz
SW5GbG93U2libGluZ1dpdGhDb250ZW50T3JEZWNvcmF0aW9uID0gZmFsc2U7CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGluZGV4TGlzdC5zaXplKCk7ICsraSkgeworICAgICAgICBhdXRv
IG91dE9mRmxvd0JveEluZGV4ID0gaW5kZXhMaXN0W2ldOworICAgICAgICBBU1NFUlQob3V0T2ZG
bG93Qm94SW5kZXggPCBsaW5lUnVucy5zaXplKCkpOworCisgICAgICAgIGF1dG8gaGFzUHJldmlv
dXNJbkZsb3dDb250ZW50ID0gWyZdIHsKKyAgICAgICAgICAgIGlmIChvdXRPZkZsb3dDb250ZW50
SGFzUHJldmlvdXNJbkZsb3dTaWJsaW5nV2l0aENvbnRlbnRPckRlY29yYXRpb24pCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBydW5JbmRleCA9
IGkgPyBvdXRPZkZsb3dCb3hJbmRleCArIDEgOiAwOyBydW5JbmRleCA8IG91dE9mRmxvd0JveElu
ZGV4OyArK3J1bkluZGV4KSB7CisgICAgICAgICAgICAgICAgaWYgKExpbmU6OlJ1bjo6aXNDb250
ZW50ZnVsT3JIYXNEZWNvcmF0aW9uKGxpbmVSdW5zW3J1bkluZGV4XSwgZm9ybWF0dGluZ0NvbnRl
eHQpKSB7CisgICAgICAgICAgICAgICAgICAgIG91dE9mRmxvd0NvbnRlbnRIYXNQcmV2aW91c0lu
Rmxvd1NpYmxpbmdXaXRoQ29udGVudE9yRGVjb3JhdGlvbiA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfTsKKyAgICAgICAgLy8gQmxvY2sgbGV2
ZWwgYm94ZXMgYXJlIHBsYWNlZCBlaXRoZXIgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lIG9yICJ1
bmRlciIgZGVwZW5kaW5nIHdoZXRoZXIgdGhleSBoYXZlIHByZXZpb3VzIGluZmxvdyBzaWJsaW5n
LgorICAgICAgICBhdXRvIGxvZ2ljYWxUb3AgPSBoYXNQcmV2aW91c0luRmxvd0NvbnRlbnQoKSA/
IGxpbmVCb3gubG9naWNhbFJlY3QoKS5ib3R0b20oKSA6IGxpbmVCb3gubG9naWNhbFJlY3QoKS50
b3AoKTsKKyAgICAgICAgZm9ybWF0dGluZ1N0YXRlKCkuYm94R2VvbWV0cnkobGluZVJ1bnNbb3V0
T2ZGbG93Qm94SW5kZXhdLmxheW91dEJveCgpKS5zZXRMb2dpY2FsVG9wTGVmdCh7IGNvbnN0cmFp
bnRzKCkuaG9yaXpvbnRhbCgpLmxvZ2ljYWxMZWZ0LCBsb2dpY2FsVG9wIH0pOworICAgIH0KK30K
Kwogc3RhdGljIGZsb2F0IGxvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkNvbnRlbnQoY29u
c3QgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGJveGVzLCBib29sIGlzSG9yaXpvbnRhbFdyaXRpbmdN
b2RlKQogewogICAgIGF1dG8gbG9naWNhbEJvdHRvbSA9IHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHsg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3Bs
YXlDb250ZW50QnVpbGRlci5oCmluZGV4IDk1NDUxODljMDY3YS4uY2JkNWQ5ZDhjNDNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNv
bnRlbnRCdWlsZGVyLmgKQEAgLTczLDYgKzczLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFJp
Z2h0Rm9yV3JpdGluZ01vZGUoSW5saW5lRGlzcGxheTo6Qm94JiwgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsUmlnaHQsIFdyaXRpbmdNb2RlKSBjb25zdDsKICAgICBJbmxpbmVMYXlvdXRQb2ludCBt
b3ZlUG9pbnRIb3Jpem9udGFsbHlGb3JXcml0aW5nTW9kZShjb25zdCBJbmxpbmVMYXlvdXRQb2lu
dCYgdG9wTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9udGFsT2Zmc2V0LCBXcml0aW5nTW9k
ZSkgY29uc3Q7CiAgICAgSW5saW5lTGF5b3V0VW5pdCBvdXRzaWRlTGlzdE1hcmtlclZpc3VhbFBv
c2l0aW9uKGNvbnN0IEVsZW1lbnRCb3gmKSBjb25zdDsKKyAgICB2b2lkIHNldEdlb21ldHJ5Rm9y
QmxvY2tMZXZlbE91dE9mRmxvd0JveGVzKGNvbnN0IFZlY3RvcjxzaXplX3Q+IGluZGV4TGlzdCwg
Y29uc3QgTGluZUJveCYsIGNvbnN0IExpbmU6OlJ1bkxpc3QmKTsKIAogICAgIGJvb2wgaXNMaW5l
RnVsbHlUcnVuY2F0ZWRJbkJsb2NrRGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9saW5lSXNG
dWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb247IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCmluZGV4IDY5NjgzZjg1OWRhMy4uNDgzMmY2OGEwYmI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xh
eW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC01
ODgsOCArNTg4LDcgQEAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBMaW5lTGF5b3V0OjpsYXlv
dXQoKQogICAgIH0oKTsKICAgICBhdXRvIHBhcmVudEJsb2NrTGF5b3V0U3RhdGUgPSBMYXlvdXQ6
OkJsb2NrTGF5b3V0U3RhdGUgeyBtX2Jsb2NrRm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUo
KSwgbGluZUNsYW1wKGZsb3coKSksIHRleHRCb3hUcmltKGZsb3coKSksIGludHJ1c2l2ZUluaXRp
YWxMZXR0ZXJCb3R0b20oKSB9OwogICAgIGF1dG8gaW5saW5lTGF5b3V0U3RhdGUgPSBMYXlvdXQ6
OklubGluZUxheW91dFN0YXRlIHsgcGFyZW50QmxvY2tMYXlvdXRTdGF0ZSwgV1RGTW92ZShtX25l
c3RlZExpc3RNYXJrZXJPZmZzZXRzKSB9OwotICAgIGF1dG8gbGF5b3V0UmVzdWx0ID0gbV9pbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5sYXlvdXRJbkZsb3dBbmRGbG9hdENvbnRlbnQoaW5saW5lQ29u
dGVudENvbnN0cmFpbnRzLCBpbmxpbmVMYXlvdXRTdGF0ZSwgbV9saW5lRGFtYWdlLmdldCgpKTsK
LSAgICBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0LmxheW91dE91dE9mRmxvd0NvbnRlbnQoaW5s
aW5lQ29udGVudENvbnN0cmFpbnRzLCBpbmxpbmVMYXlvdXRTdGF0ZSwgbGF5b3V0UmVzdWx0LmRp
c3BsYXlDb250ZW50KTsKKyAgICBhdXRvIGxheW91dFJlc3VsdCA9IG1faW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQubGF5b3V0KGlubGluZUNvbnRlbnRDb25zdHJhaW50cywgaW5saW5lTGF5b3V0U3Rh
dGUsIG1fbGluZURhbWFnZS5nZXQoKSk7CiAKICAgICBhdXRvIHJlcGFpbnRSZWN0ID0gTGF5b3V0
UmVjdCB7IGNvbnN0cnVjdENvbnRlbnQoaW5saW5lTGF5b3V0U3RhdGUsIFdURk1vdmUobGF5b3V0
UmVzdWx0KSkgfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWlu
dC9tb3ZlLWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9yZXBhaW50L21vdmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVkLnR4
dAppbmRleCAyODRlZTM3NDUyOWQuLjAyNmMxODlmYTAxOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvcmVwYWludC9tb3ZlLWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9tb3ZlLWJhY2tpbmct
c2hhcmluZy1sYXllci1leHBlY3RlZC50eHQKQEAgLTE2LDYgKzE2LDcgQEAKICAgICAgICAgICAo
Ym91bmRzIDgwMi4wMCAyMDIuMDApCiAgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQogICAgICAg
ICAgIChyZXBhaW50IHJlY3RzCisgICAgICAgICAgICAocmVjdCAwLjAwIDEuMDAgODAyLjAwIDEu
MDApCiAgICAgICAgICAgICAocmVjdCAyMDEuMDAgNTEuMDAgMTAwLjAwIDEwMC4wMCkKICAgICAg
ICAgICAgIChyZWN0IDQwMS4wMCA1MS4wMCAxMDAuMDAgMTAwLjAwKQogICAgICAgICAgICkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvY29tcG9zaXRpbmcvcmVwYWlu
dC9tb3ZlLWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3Mtd2syL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJpbmct
bGF5ZXItZXhwZWN0ZWQudHh0CmluZGV4IGYzYjNkMGI3OGQ4Ni4uYmQ0ZWJhNjk0ZDY0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL2NvbXBvc2l0aW5nL3JlcGFpbnQv
bW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy13azIvY29tcG9zaXRpbmcvcmVwYWludC9tb3ZlLWJhY2tpbmctc2hhcmlu
Zy1sYXllci1leHBlY3RlZC50eHQKQEAgLTE2LDYgKzE2LDcgQEAKICAgICAgICAgICAoYm91bmRz
IDgwMi4wMCAyMDIuMDApCiAgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQogICAgICAgICAgIChy
ZXBhaW50IHJlY3RzCisgICAgICAgICAgICAocmVjdCAwLjAwIDEuMDAgODAyLjAwIDEuMDApCiAg
ICAgICAgICAgICAocmVjdCAyMDEuMDAgNTEuMDAgMTAwLjAwIDEwMC4wMCkKICAgICAgICAgICAg
IChyZWN0IDQwMS4wMCA1MS4wMCAxMDAuMDAgMTAwLjAwKQogICAgICAgICAgICkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467481</attachid>
            <date>2023-08-29 07:20:33 -0700</date>
            <delta_ts>2023-08-30 07:31:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-260776-20230829072032.patch</filename>
            <type>text/plain</type>
            <size>39862</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA1NjQxM2UxNzEwYWRlMzAxMGE4YjM4YjNiZDdjMTc4NzQxMGFmNDdlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IE1vbiwgMjggQXVnIDIwMjMgMTI6MzA6MzUgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBV
c2Ugb3BhcXVlIElubGluZUl0ZW0gdG8gY29tcHV0ZSBvdXQtb2YtZmxvdyBzdGF0aWMKIHBvc2l0
aW9uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjA3NzYKClJldmll
d2VkIGJ5IEFudHRpIEtvaXZpc3RvLgoKTGV0J3MgcmVwbGFjZSBleGlzdGluZyBvdXQtb2YtZmxv
dyBoYW5kbGluZyB3aXRoIHVzaW5nIG9wYXF1ZSBpbmxpbmUgaXRlbXMgaW5zdGVhZC4KMS4gQWRk
IG91dC1vZi1mbG93IGNvbnRlbnQgdG8gdGhlIGlubGluZSBpdGVtIGxpc3QgYXMgb3BhcXVlIGJv
eCBhbmQgcnVuIHJlZ3VsYXIgaW5saW5lIGxheW91dC4KMi4gU2V0IHN0YXRpYyBwb3NpdGlvbiBh
cyBwYXJ0IG9mIHRoZSBpbmxpbmUgZGlzcGxheSBjb250ZW50IGJ1aWxkaW5nIHByb2Nlc3Mgd2hl
cmUgd2UgaXRlcmF0ZSB0aHJvdWdoIHRoZSBydW5zIG9uIHRoZSBjdXJyZW50IGxpbmUuCjMuIFNp
bmNlIHRoaXMgaXMgYWxsIHBhcnQgb2YgX2luZmxvd18gbGF5b3V0LCB3ZSBkb24ndCBuZWVkIHRo
ZSBkZWRpY2F0ZWQgX291dF9vZl9mbG93XyBtZXRob2Qgb24gSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQgYW55bW9yZS4KNC4gUmVtb3ZlIGV4aXN0aW5nIGxvZ2ljIHdoZXJlIHdlIGNvbXB1dGUgdGhl
IHN0YXRpYyBwb3NpdGlvbiBieSBsb29raW5nIGF0IGFkamFjZW50IGRpc3BsYXkgYm94IGdlb21l
dHJpZXMuCgoqIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNo
YXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIv
Y29tcG9zaXRpbmcvcmVwYWludC9tb3ZlLWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3RlZC50
eHQ6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudCk6IERlbGV0ZWQuCihXZWJDb3JlOjpM
YXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JP
dXRPZkZsb3dDb250ZW50KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgoqIFNvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OmZpcnN0RGlzcGxheUJveEluZGV4Rm9yTGF5
b3V0Qm94KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6bGFzdERpc3BsYXlCb3hJbmRleEZv
ckxheW91dEJveCk6IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OnByZXZpb3VzRGlzcGxheUJv
eEluZGV4KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6bmV4dERpc3BsYXlCb3hJbmRleCk6
IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6Y29u
dGVudExlZnRBZnRlckxhc3RMaW5lIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0lubGlu
ZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0Jsb2NrTGV2ZWxCb3ggY29u
c3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHA6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUl0ZW1zQnVpbGRlcjo6YnVpbGQpOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVJdGVtc0J1aWxkZXI6OmNvbGxlY3RJbmxpbmVJdGVtcyk6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmg6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OnJlbW92ZU92ZXJmbG93aW5nT3VyT2ZG
bG93Q29udGVudCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94
Ojpsb2dpY2FsUmVjdEZvck9wYXF1ZUJveCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5oOgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNw
cDoKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQW5kRmxvYXRDb250
ZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6
OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KToKKiBT
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6
bGF5b3V0KToKLS0tCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAg
ICAgfCAgIDIgKy0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwICAgICAg
ICB8ICAzMCArLS0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggICAgICAg
ICAgfCAgIDQgKy0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCAgICAg
ICB8IDE2OCAtLS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dl
b21ldHJ5LmggICAgICAgICB8ICAgMyAtCiAuLi4vaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5j
cHAgICAgICAgICAgICAgfCAgMTIgKy0KIC4uLi9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmgg
ICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZS5jcHAgIHwgIDIxICsrKwogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZS5oICAgIHwgICAxICsKIC4uLi9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAgICAgICAg
ICAgICAgICAgICB8ICAgNyArCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lQm94LmggfCAgIDEgKwogLi4uL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAgICAgICAg
ICAgICAgIHwgIDIwICsrKwogLi4uL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
LmNwcCAgIHwgIDM5ICsrKy0KIC4uLi9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRl
ci5oICAgICB8ICAgMSArCiAuLi4vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5j
cHAgICAgfCAgIDMgKy0KIC4uLi9tb3ZlLWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3RlZC50
eHQgICB8ICAgMSArCiAuLi4vbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0
ICAgfCAgIDEgKwogMTcgZmlsZXMgY2hhbmdlZCwgMTAwIGluc2VydGlvbnMoKyksIDIxNiBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAKaW5kZXggNjJkMDY3MWUwNzViLi5jMDE1
M2JhYTgxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvZmxleC9GbGV4TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAKQEAgLTQ0NSw3ICs0NDUsNyBAQCBG
bGV4TGF5b3V0OjpTaXplTGlzdCBGbGV4TGF5b3V0OjpoeXBvdGhldGljYWxDcm9zc1NpemVGb3JG
bGV4SXRlbXMoY29uc3QgTG9naWNhbAogICAgICAgICAgICAgYXV0byYgaW5saW5lRm9ybWF0dGlu
Z1N0YXRlID0gZmxleEZvcm1hdHRpbmdDb250ZXh0KCkubGF5b3V0U3RhdGUoKS5lbnN1cmVJbmxp
bmVGb3JtYXR0aW5nU3RhdGUoZmxleEl0ZW1Cb3gpOwogICAgICAgICAgICAgYXV0byBpbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCA9IElubGluZUZvcm1hdHRpbmdDb250ZXh0IHsgZmxleEl0ZW1Cb3gs
IGlubGluZUZvcm1hdHRpbmdTdGF0ZSB9OwogICAgICAgICAgICAgYXV0byBjb25zdHJhaW50c0Zv
ckluRmxvd0NvbnRlbnQgPSBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQgeyBIb3Jpem9udGFs
Q29uc3RyYWludHMgeyB7IH0sIGZsZXhJdGVtc01haW5TaXplTGlzdFtmbGV4SXRlbUluZGV4XSB9
LCB7IH0gfTsKLSAgICAgICAgICAgIGF1dG8gbGF5b3V0UmVzdWx0ID0gaW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQubGF5b3V0SW5GbG93QW5kRmxvYXRDb250ZW50KHsgY29uc3RyYWludHNGb3JJbkZs
b3dDb250ZW50LCB7IH0gfSwgaW5saW5lTGF5b3V0U3RhdGUpOworICAgICAgICAgICAgYXV0byBs
YXlvdXRSZXN1bHQgPSBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5sYXlvdXQoeyBjb25zdHJhaW50
c0ZvckluRmxvd0NvbnRlbnQsIHsgfSB9LCBpbmxpbmVMYXlvdXRTdGF0ZSk7CiAgICAgICAgICAg
ICByZXR1cm4gTGF5b3V0VW5pdCB7IGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVudC5saW5lcy5s
YXN0KCkubGluZUJveExvZ2ljYWxSZWN0KCkubWF4WSgpIH07CiAgICAgICAgIH07CiAgICAgICAg
IGF1dG8gdXNlZENyb3NzU2l6ZSA9IGNyb3NzU2l6ZUFmdGVyUGVyZm9ybWluZ0xheW91dCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4
IGJkYjI4OGJjMmI5ZS4uOWZiYjcyZTljNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC02NywxMCArNjcsMTAgQEAgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEVsZW1lbnRCb3gm
IGZvcm1hdHRpbmdDb24KIHsKIH0KIAotSW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpsYXlvdXRJbkZsb3dBbmRGbG9hdENvbnRlbnQoY29uc3QgQ29uc3RyYWludHNG
b3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50cywgSW5saW5lTGF5b3V0U3RhdGUmIGlubGluZUxh
eW91dFN0YXRlLCBjb25zdCBJbmxpbmVEYW1hZ2UqIGxpbmVEYW1hZ2UpCitJbmxpbmVMYXlvdXRS
ZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dChjb25zdCBDb25zdHJhaW50c0Zv
cklubGluZUNvbnRlbnQmIGNvbnN0cmFpbnRzLCBJbmxpbmVMYXlvdXRTdGF0ZSYgaW5saW5lTGF5
b3V0U3RhdGUsIGNvbnN0IElubGluZURhbWFnZSogbGluZURhbWFnZSkKIHsKICAgICBhdXRvJiBm
bG9hdGluZ1N0YXRlID0gaW5saW5lTGF5b3V0U3RhdGUucGFyZW50QmxvY2tMYXlvdXRTdGF0ZSgp
LmZsb2F0aW5nU3RhdGUoKTsKLSAgICBpZiAoIXJvb3QoKS5oYXNJbkZsb3dDaGlsZCgpKSB7Cisg
ICAgaWYgKCFyb290KCkuaGFzSW5GbG93Q2hpbGQoKSAmJiAhcm9vdCgpLmhhc091dE9mRmxvd0No
aWxkKCkpIHsKICAgICAgICAgLy8gRmxvYXQgb25seSBjb250ZW50IGRvZXMgbm90IHN1cHBvcnQg
cGFydGlhbCBsYXlvdXQuCiAgICAgICAgIEFTU0VSVCghbGluZURhbWFnZSk7CiAgICAgICAgIGxh
eW91dEZsb2F0Q29udGVudE9ubHkoY29uc3RyYWludHMsIGZsb2F0aW5nU3RhdGUpOwpAQCAtMTE0
LDEyICsxMTQsNiBAQCBJbmxpbmVMYXlvdXRSZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dEluRmxvd0FuZEZsb2F0Q29udGVudChjb25zdCBDbwogICAgIHJldHVybiBsaW5lTGF5
b3V0KGxpbmVCdWlsZGVyLCBpbmxpbmVJdGVtcywgbmVlZHNMYXlvdXRSYW5nZSwgcHJldmlvdXNM
aW5lKCksIGNvbnN0cmFpbnRzLCBpbmxpbmVMYXlvdXRTdGF0ZSwgbGluZURhbWFnZSk7CiB9CiAK
LXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0NvbnRlbnQoY29u
c3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50cywgSW5saW5lTGF5b3V0
U3RhdGUmIGlubGluZUxheW91dFN0YXRlLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBp
bmxpbmVEaXNwbGF5Q29udGVudCkKLXsKLSAgICAvLyBDb2xsZWN0aW5nIG91dC1vZi1mbG93IGJv
eGVzIGhhcHBlbnMgZHVyaW5nIHRoZSBpbi1mbG93IHBoYXNlLgotICAgIGNvbXB1dGVTdGF0aWNQ
b3NpdGlvbkZvck91dE9mRmxvd0NvbnRlbnQoZm9ybWF0dGluZ1N0YXRlKCkub3V0T2ZGbG93Qm94
ZXMoKSwgY29uc3RyYWludHMsIGlubGluZURpc3BsYXlDb250ZW50LCBpbmxpbmVMYXlvdXRTdGF0
ZS5wYXJlbnRCbG9ja0xheW91dFN0YXRlKCkuZmxvYXRpbmdTdGF0ZSgpKTsKLX0KLQogSW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRy
aW5zaWNTaXplcyhjb25zdCBJbmxpbmVEYW1hZ2UqIGxpbmVEYW1hZ2UpCiB7CiAgICAgYXV0byYg
aW5saW5lRm9ybWF0dGluZ1N0YXRlID0gZm9ybWF0dGluZ1N0YXRlKCk7CkBAIC0yNDMsMjYgKzIz
Nyw2IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEZsb2F0Q29udGVudE9u
bHkoY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDCiAgICAgfQogfQogCi12b2lkIElubGluZUZv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50
KGNvbnN0IEZvcm1hdHRpbmdTdGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCYgb3V0T2ZGbG93Qm94ZXMs
IGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3RyYWludHMsIGNvbnN0IElu
bGluZURpc3BsYXk6OkNvbnRlbnQmIGRpc3BsYXlDb250ZW50LCBjb25zdCBGbG9hdGluZ1N0YXRl
JiBmbG9hdGluZ1N0YXRlKQotewotICAgIC8vIFRoaXMgZnVuY3Rpb24gY29tcHV0ZXMgdGhlIHN0
YXRpYyBwb3NpdGlvbiBmb3Igb3V0LW9mLWZsb3cgY29udGVudCBpbnNpZGUgdGhlIGlubGluZSBm
b3JtYXR0aW5nIGNvbnRleHQuCi0gICAgLy8gQXMgcGVyIHNwZWMsIHRoZSBzdGF0aWMgcG9zaXRp
b24gb2YgYW4gb3V0LW9mLWZsb3cgYm94IGlzIGNvbXB1dGVkIGFzIGlmIHRoZSBwb3NpdGlvbiB3
YXMgc2V0IHRvIHN0YXRpYy4KLSAgICAvLyBIb3dldmVyIGl0IGRvZXMgbm90IG1lYW4gdGhhdCB0
aGUgb3V0LW9mLWZsb3cgYm94IHNob3VsZCBiZSBpbnZvbHZlZCBpbiB0aGUgaW5saW5lIGxheW91
dCBwcm9jZXNzLgotICAgIC8vIEluc3RlYWQgd2UgZmlndXJlIG91dCB0aGlzIHN0YXRpYyBwb3Np
dGlvbiBhZnRlciB0aGUgaW5saW5lIGxheW91dCBieSBsb29raW5nIGF0IHRoZSBwcmV2aW91cy9u
ZXh0IHNpYmxpbmcgKG9yIHBhcmVudCkgYm94J3MgZ2VvbWV0cnkgYW5kCi0gICAgLy8gcGxhY2Ug
dGhlIG91dC1vZi1mbG93IGJveCBhdCB0aGUgbG9naWNhbCByaWdodCBwb3NpdGlvbi4KLSAgICBh
dXRvJiBmb3JtYXR0aW5nR2VvbWV0cnkgPSB0aGlzLT5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKLSAg
ICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKLSAgICBh
dXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29udGV4dCB7ICp0aGlzLCBmbG9hdGluZ1N0
YXRlIH07Ci0KLSAgICBmb3IgKGF1dG8mIG91dE9mRmxvd0JveCA6IG91dE9mRmxvd0JveGVzKSB7
Ci0gICAgICAgIGlmIChvdXRPZkZsb3dCb3gtPnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxp
bmVUeXBlKCkpIHsKLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5ib3hHZW9tZXRyeShvdXRP
ZkZsb3dCb3gpLnNldExvZ2ljYWxUb3BMZWZ0KGZvcm1hdHRpbmdHZW9tZXRyeS5zdGF0aWNQb3Np
dGlvbkZvck91dE9mRmxvd0lubGluZUxldmVsQm94KG91dE9mRmxvd0JveCwgY29uc3RyYWludHMs
IGRpc3BsYXlDb250ZW50LCBmbG9hdGluZ0NvbnRleHQpKTsKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9Ci0gICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5ib3hHZW9tZXRyeShvdXRPZkZs
b3dCb3gpLnNldExvZ2ljYWxUb3BMZWZ0KGZvcm1hdHRpbmdHZW9tZXRyeS5zdGF0aWNQb3NpdGlv
bkZvck91dE9mRmxvd0Jsb2NrTGV2ZWxCb3gob3V0T2ZGbG93Qm94LCBjb25zdHJhaW50cywgZGlz
cGxheUNvbnRlbnQpKTsKLSAgICB9Ci19Ci0KIHN0YXRpYyBMaW5lRW5kaW5nRWxsaXBzaXNQb2xp
Y3kgbGluZUVuZGluZ0VsbGlwc2lzUG9saWN5KGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUs
IHNpemVfdCBudW1iZXJPZkxpbmVzLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbnVtYmVyT2ZWaXNp
YmxlTGluZXNBbGxvd2VkKQogewogICAgIC8vIFdlIG1heSBoYXZlIHBhc3NlZCB0aGUgbGluZS1j
bGFtcCBsaW5lIHdpdGggb3ZlcmZsb3cgdmlzaWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDExNDA2OGYxYTc1Mi4uZDhiYjEyYmQwYTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAg
LTU5LDggKzU5LDcgQEAgY2xhc3MgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQgZmluYWwgOiBwdWJs
aWMgRm9ybWF0dGluZ0NvbnRleHQgewogcHVibGljOgogICAgIElubGluZUZvcm1hdHRpbmdDb250
ZXh0KGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgSW5saW5lRm9ybWF0
dGluZ1N0YXRlJik7CiAKLSAgICBJbmxpbmVMYXlvdXRSZXN1bHQgbGF5b3V0SW5GbG93QW5kRmxv
YXRDb250ZW50KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIElubGluZUxheW91
dFN0YXRlJiwgY29uc3QgSW5saW5lRGFtYWdlKiA9IG51bGxwdHIpOwotICAgIHZvaWQgbGF5b3V0
T3V0T2ZGbG93Q29udGVudChjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmLCBJbmxp
bmVMYXlvdXRTdGF0ZSYsIGNvbnN0IElubGluZURpc3BsYXk6OkNvbnRlbnQmKTsKKyAgICBJbmxp
bmVMYXlvdXRSZXN1bHQgbGF5b3V0KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYs
IElubGluZUxheW91dFN0YXRlJiwgY29uc3QgSW5saW5lRGFtYWdlKiA9IG51bGxwdHIpOwogICAg
IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgY29tcHV0ZWRJbnRyaW5zaWNTaXplcyhjb25zdCBJ
bmxpbmVEYW1hZ2UqKTsKICAgICBMYXlvdXRVbml0IG1heGltdW1Db250ZW50U2l6ZSgpOwogCkBA
IC03MSw3ICs3MCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5saW5lTGF5b3V0UmVzdWx0
IGxpbmVMYXlvdXQoQWJzdHJhY3RMaW5lQnVpbGRlciYsIGNvbnN0IElubGluZUl0ZW1zJiwgSW5s
aW5lSXRlbVJhbmdlLCBzdGQ6Om9wdGlvbmFsPFByZXZpb3VzTGluZT4sIGNvbnN0IENvbnN0cmFp
bnRzRm9ySW5saW5lQ29udGVudCYsIElubGluZUxheW91dFN0YXRlJiwgY29uc3QgSW5saW5lRGFt
YWdlKiA9IG51bGxwdHIpOwogICAgIHZvaWQgbGF5b3V0RmxvYXRDb250ZW50T25seShjb25zdCBD
b25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmLCBGbG9hdGluZ1N0YXRlJik7Ci0gICAgdm9pZCBj
b21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGNvbnN0IEZvcm1hdHRpbmdT
dGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVu
dCYsIGNvbnN0IElubGluZURpc3BsYXk6OkNvbnRlbnQmLCBjb25zdCBGbG9hdGluZ1N0YXRlJik7
CiAKICAgICB2b2lkIGNvbGxlY3RDb250ZW50SWZOZWVkZWQoKTsKICAgICBJbmxpbmVSZWN0IGNy
ZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShzaXplX3QgbGluZUluZGV4LCBjb25zdCBMaW5lTGF5
b3V0UmVzdWx0JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgY29uc3QgSW5s
aW5lTGF5b3V0U3RhdGUmLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCAzZWNhYzNjYzc1
MmIuLjA5YWI2OTQxMjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0yMDksMTc0ICsyMDksNiBAQCBJbmxpbmVMYXlvdXRVbml0
IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRUZXh0SW5kZW50KElzSW50cmluc2lj
V2lkdGhNbwogICAgIHJldHVybiB7IG1pbmltdW1WYWx1ZUZvckxlbmd0aCh0ZXh0SW5kZW50LCBh
dmFpbGFibGVXaWR0aCkgfTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaXJz
dERpc3BsYXlCb3hJbmRleEZvckxheW91dEJveChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3Qg
SW5saW5lRGlzcGxheTo6Qm94ZXMmIGRpc3BsYXlCb3hlcykKLXsKLSAgICAvLyBGSVhNRTogQnVp
bGQgYSBmaXJzdC9sYXN0IGhhc2htYXAgZm9yIHRoZXNlIGJveGVzLgotICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBkaXNwbGF5Qm94ZXMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAg
ICAgIGlmIChkaXNwbGF5Qm94ZXNbaW5kZXhdLmlzUm9vdElubGluZUJveCgpKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGlmICgmZGlzcGxheUJveGVzW2luZGV4XS5sYXlvdXRCb3go
KSA9PSAmbGF5b3V0Qm94KQotICAgICAgICAgICAgcmV0dXJuIGluZGV4OwotICAgIH0KLSAgICBy
ZXR1cm4geyB9OwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxhc3REaXNwbGF5
Qm94SW5kZXhGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IElubGluZURp
c3BsYXk6OkJveGVzJiBkaXNwbGF5Qm94ZXMpCi17Ci0gICAgLy8gRklYTUU6IEJ1aWxkIGEgZmly
c3QvbGFzdCBoYXNobWFwIGZvciB0aGVzZSBib3hlcy4KLSAgICBmb3IgKGF1dG8gaW5kZXggPSBk
aXNwbGF5Qm94ZXMuc2l6ZSgpOyBpbmRleC0tOykgewotICAgICAgICBpZiAoZGlzcGxheUJveGVz
W2luZGV4XS5pc1Jvb3RJbmxpbmVCb3goKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBpZiAoJmRpc3BsYXlCb3hlc1tpbmRleF0ubGF5b3V0Qm94KCkgPT0gJmxheW91dEJveCkKLSAg
ICAgICAgICAgIHJldHVybiBpbmRleDsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwcmV2aW91c0Rpc3BsYXlCb3hJbmRleChjb25zdCBC
b3gmIG91dE9mRmxvd0JveCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGRpc3BsYXlCb3hl
cykKLXsKLSAgICBhdXRvIHByZXZpb3VzRGlzcGxheUJveEluZGV4T2YgPSBbJl0gKGF1dG8mIGxh
eW91dEJveCkgLT4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IHsKLSAgICAgICAgZm9yIChhdXRvKiBi
b3ggPSAmbGF5b3V0Qm94OyBib3g7IGJveCA9IGJveC0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCkp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvIGRpc3BsYXlCb3hJbmRleCA9IGxhc3REaXNwbGF5Qm94
SW5kZXhGb3JMYXlvdXRCb3goKmJveCwgZGlzcGxheUJveGVzKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZGlzcGxheUJveEluZGV4OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB7IH07Ci0g
ICAgfTsKLQotICAgIGF1dG8qIGNhbmRpZGF0ZUJveCA9IG91dE9mRmxvd0JveC5wcmV2aW91c0lu
Rmxvd1NpYmxpbmcoKTsKLSAgICBpZiAoIWNhbmRpZGF0ZUJveCkKLSAgICAgICAgY2FuZGlkYXRl
Qm94ID0gb3V0T2ZGbG93Qm94LnBhcmVudCgpLmlzSW5saW5lQm94KCkgPyAmb3V0T2ZGbG93Qm94
LnBhcmVudCgpIDogbnVsbHB0cjsKLSAgICB3aGlsZSAoY2FuZGlkYXRlQm94KSB7Ci0gICAgICAg
IGlmIChhdXRvIGRpc3BsYXlCb3hJbmRleCA9IHByZXZpb3VzRGlzcGxheUJveEluZGV4T2YoKmNh
bmRpZGF0ZUJveCkpCi0gICAgICAgICAgICByZXR1cm4gZGlzcGxheUJveEluZGV4OwotICAgICAg
ICBjYW5kaWRhdGVCb3ggPSBjYW5kaWRhdGVCb3gtPnBhcmVudCgpLmlzSW5saW5lQm94KCkgPyAm
Y2FuZGlkYXRlQm94LT5wYXJlbnQoKSA6IG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiB7IH07
Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV4dERpc3BsYXlCb3hJbmRleChj
b25zdCBCb3gmIG91dE9mRmxvd0JveCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGRpc3Bs
YXlCb3hlcykKLXsKLSAgICBhdXRvIG5leHREaXNwbGF5Qm94SW5kZXhPZiA9IFsmXSAoYXV0byYg
bGF5b3V0Qm94KSAtPiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gewotICAgICAgICBmb3IgKGF1dG8q
IGJveCA9ICZsYXlvdXRCb3g7IGJveDsgYm94ID0gYm94LT5uZXh0SW5GbG93U2libGluZygpKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byBkaXNwbGF5Qm94SW5kZXggPSBmaXJzdERpc3BsYXlCb3hJ
bmRleEZvckxheW91dEJveCgqYm94LCBkaXNwbGF5Qm94ZXMpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBkaXNwbGF5Qm94SW5kZXg7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICB9OwotCi0gICAgYXV0byogY2FuZGlkYXRlQm94ID0gb3V0T2ZGbG93Qm94Lm5leHRJbkZsb3dT
aWJsaW5nKCk7Ci0gICAgaWYgKCFjYW5kaWRhdGVCb3gpCi0gICAgICAgIGNhbmRpZGF0ZUJveCA9
IG91dE9mRmxvd0JveC5wYXJlbnQoKS5pc0lubGluZUJveCgpID8gb3V0T2ZGbG93Qm94LnBhcmVu
dCgpLm5leHRJbkZsb3dTaWJsaW5nKCkgOiBudWxscHRyOwotICAgIHdoaWxlIChjYW5kaWRhdGVC
b3gpIHsKLSAgICAgICAgaWYgKGF1dG8gZGlzcGxheUJveEluZGV4ID0gbmV4dERpc3BsYXlCb3hJ
bmRleE9mKCpjYW5kaWRhdGVCb3gpKQotICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlCb3hJbmRl
eDsKLSAgICAgICAgY2FuZGlkYXRlQm94ID0gY2FuZGlkYXRlQm94LT5wYXJlbnQoKS5pc0lubGlu
ZUJveCgpID8gY2FuZGlkYXRlQm94LT5wYXJlbnQoKS5uZXh0SW5GbG93U2libGluZygpIDogbnVs
bHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotSW5saW5lTGF5b3V0VW5pdCBJbmxp
bmVGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnRlbnRMZWZ0QWZ0ZXJMYXN0TGluZShjb25zdCBDb25z
dHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBzdGQ6Om9wdGlvbmFsPElubGlu
ZUxheW91dFVuaXQ+IGxhc3RMaW5lTG9naWNhbEJvdHRvbSwgY29uc3QgRmxvYXRpbmdDb250ZXh0
JiBmbG9hdGluZ0NvbnRleHQpIGNvbnN0Ci17Ci0gICAgYXV0byBjb250ZW50SGFzUHJldmlvdXNM
aW5lID0gbGFzdExpbmVMb2dpY2FsQm90dG9tID8gc3RkOjptYWtlX29wdGlvbmFsKHRydWUpIDog
c3RkOjpudWxsb3B0OwotICAgIGF1dG8gdGV4dEluZGVudCA9IGNvbXB1dGVkVGV4dEluZGVudChJ
c0ludHJpbnNpY1dpZHRoTW9kZTo6Tm8sIGNvbnRlbnRIYXNQcmV2aW91c0xpbmUsIGNvbnN0cmFp
bnRzLmhvcml6b250YWwoKS5sb2dpY2FsV2lkdGgpOwotICAgIGF1dG8gZmxvYXRDb25zdHJhaW50
cyA9IGZsb2F0Q29uc3RyYWludHNGb3JMaW5lKGxhc3RMaW5lTG9naWNhbEJvdHRvbS52YWx1ZV9v
cihjb25zdHJhaW50cy5sb2dpY2FsVG9wKCkpLCAwLCBmbG9hdGluZ0NvbnRleHQpOwotICAgIGF1
dG8gbGluZUJveExlZnQgPSBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQ7Ci0g
ICAgYXV0byBsaW5lQm94V2lkdGggPSBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbFdp
ZHRoOwotICAgIC8vIEZJWE1FOiBBZGQgbWlzc2luZyBSVEwgc3VwcG9ydC4KLSAgICBpZiAoZmxv
YXRDb25zdHJhaW50cy5sZWZ0KSB7Ci0gICAgICAgIGF1dG8gZmxvYXRPZmZzZXQgPSBzdGQ6Om1h
eCgwX2x1LCBmbG9hdENvbnN0cmFpbnRzLmxlZnQtPnggLSBjb25zdHJhaW50cy5ob3Jpem9udGFs
KCkubG9naWNhbExlZnQpOwotICAgICAgICBsaW5lQm94TGVmdCArPSBmbG9hdE9mZnNldDsKLSAg
ICAgICAgbGluZUJveFdpZHRoIC09IGZsb2F0T2Zmc2V0OwotICAgIH0KLSAgICBpZiAoZmxvYXRD
b25zdHJhaW50cy5yaWdodCkgewotICAgICAgICBhdXRvIGxpbmVCb3hSaWdodCA9IChjb25zdHJh
aW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQgKyBjb25zdHJhaW50cy5ob3Jpem9udGFsKCku
bG9naWNhbFdpZHRoKTsKLSAgICAgICAgYXV0byBmbG9hdE9mZnNldCA9IHN0ZDo6bWF4KDBfbHUs
IGxpbmVCb3hSaWdodCAtIGZsb2F0Q29uc3RyYWludHMucmlnaHQtPngpOwotICAgICAgICBsaW5l
Qm94V2lkdGggLT0gZmxvYXRPZmZzZXQ7Ci0gICAgfQotICAgIGxpbmVCb3hMZWZ0ICs9IHRleHRJ
bmRlbnQ7Ci0gICAgYXV0byByb290SW5saW5lQm94TGVmdCA9IGhvcml6b250YWxBbGlnbm1lbnRP
ZmZzZXQoZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCkuc3R5bGUoKSwgeyB9LCBsaW5lQm94V2lk
dGgsIHsgfSwgeyB9LCB0cnVlKTsKLSAgICByZXR1cm4gbGluZUJveExlZnQgKyByb290SW5saW5l
Qm94TGVmdDsKLX0KLQotTGF5b3V0UG9pbnQgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0
aWNQb3NpdGlvbkZvck91dE9mRmxvd0lubGluZUxldmVsQm94KGNvbnN0IEJveCYgb3V0T2ZGbG93
Qm94LCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBjb25z
dCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCwgY29uc3QgRmxvYXRpbmdD
b250ZXh0JiBmbG9hdGluZ0NvbnRleHQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG91dE9mRmxvd0Jv
eC5zdHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5SW5saW5lVHlwZSgpKTsKLSAgICBhdXRvJiBsaW5l
cyA9IGRpc3BsYXlDb250ZW50LmxpbmVzOwotICAgIGF1dG8mIGJveGVzID0gZGlzcGxheUNvbnRl
bnQuYm94ZXM7Ci0KLSAgICBpZiAobGluZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVChi
b3hlcy5pc0VtcHR5KCkpOwotICAgICAgICByZXR1cm4geyBjb250ZW50TGVmdEFmdGVyTGFzdExp
bmUoY29uc3RyYWludHMsIHsgfSwgZmxvYXRpbmdDb250ZXh0KSwgY29uc3RyYWludHMubG9naWNh
bFRvcCgpIH07Ci0gICAgfQotCi0gICAgYXV0byBpc0hvcml6b250YWxXcml0aW5nTW9kZSA9IGZv
cm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLnN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KTsKLSAgICBhdXRvIGxlZnRTaWRlVG9Mb2dpY2FsVG9wTGVmdCA9IFsmXSAoYXV0byYgZGlzcGxh
eUJveCwgYXV0byYgbGluZSwgYm9vbCBtYXlOZWVkTWFyZ2luQWRqdXN0bWVudCA9IHRydWUpIHsK
LSAgICAgICAgYXV0byBtYXJnaW5TdGFydCA9IExheW91dFVuaXQgeyB9OwotICAgICAgICBpZiAo
bWF5TmVlZE1hcmdpbkFkanVzdG1lbnQgJiYgZGlzcGxheUJveC5pc05vblJvb3RJbmxpbmVMZXZl
bEJveCgpKQotICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdl
b21ldHJ5Rm9yQm94KGRpc3BsYXlCb3gubGF5b3V0Qm94KCkpLm1hcmdpblN0YXJ0KCk7Ci0gICAg
ICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IExheW91dFBvaW50KGRpc3BsYXlC
b3gubGVmdCgpIC0gbWFyZ2luU3RhcnQsIGxpbmUudG9wKCkpIDogTGF5b3V0UG9pbnQoZGlzcGxh
eUJveC50b3AoKSAtIG1hcmdpblN0YXJ0LCBsaW5lLmxlZnQoKSk7Ci0gICAgfTsKLSAgICBhdXRv
IHJpZ2h0U2lkZVRvTG9naWNhbFRvcExlZnQgPSBbJl0gKGF1dG8mIGRpc3BsYXlCb3gsIGF1dG8m
IGxpbmUpIHsKLSAgICAgICAgYXV0byBtYXJnaW5FbmQgPSBMYXlvdXRVbml0IHsgfTsKLSAgICAg
ICAgaWYgKGRpc3BsYXlCb3guaXNOb25Sb290SW5saW5lTGV2ZWxCb3goKSkKLSAgICAgICAgICAg
IG1hcmdpbkVuZCA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goZGlzcGxheUJv
eC5sYXlvdXRCb3goKSkubWFyZ2luRW5kKCk7Ci0gICAgICAgIHJldHVybiBpc0hvcml6b250YWxX
cml0aW5nTW9kZSA/IExheW91dFBvaW50KGRpc3BsYXlCb3gucmlnaHQoKSArIG1hcmdpbkVuZCwg
bGluZS50b3AoKSkgOiBMYXlvdXRQb2ludChkaXNwbGF5Qm94LmJvdHRvbSgpICsgbWFyZ2luRW5k
LCBsaW5lLmxlZnQoKSk7Ci0gICAgfTsKLQotICAgIGF1dG8gcHJldmlvdXNEaXNwbGF5Qm94SW5k
ZXhCZWZvcmVPdXRPZkZsb3dCb3ggPSBwcmV2aW91c0Rpc3BsYXlCb3hJbmRleChvdXRPZkZsb3dC
b3gsIGJveGVzKTsKLSAgICBpZiAoIXByZXZpb3VzRGlzcGxheUJveEluZGV4QmVmb3JlT3V0T2ZG
bG93Qm94KQotICAgICAgICByZXR1cm4gbGVmdFNpZGVUb0xvZ2ljYWxUb3BMZWZ0KGJveGVzWzBd
LCBsaW5lc1swXSk7Ci0KLSAgICBhdXRvJiBwcmV2aW91c0Rpc3BsYXlCb3ggPSBib3hlc1sqcHJl
dmlvdXNEaXNwbGF5Qm94SW5kZXhCZWZvcmVPdXRPZkZsb3dCb3hdOwotICAgIGF1dG8mIGN1cnJl
bnRMaW5lID0gbGluZXNbcHJldmlvdXNEaXNwbGF5Qm94LmxpbmVJbmRleCgpXTsKLSAgICBpZiAo
cHJldmlvdXNEaXNwbGF5Qm94LmlzSW5saW5lQm94KCkgJiYgJm91dE9mRmxvd0JveC5wYXJlbnQo
KSA9PSAmcHJldmlvdXNEaXNwbGF5Qm94LmxheW91dEJveCgpKSB7Ci0gICAgICAgIC8vIFNwZWNp
YWwgaGFuZGxpbmcgZm9yIGNhc2VzIHdoZW4gdGhpcyBpcyB0aGUgZmlyc3QgYm94IGluc2lkZSBh
biBpbmxpbmUgYm94OgotICAgICAgICAvLyA8ZGl2PnRleHQ8c3Bhbj48aW1nIHN0eWxlPSJwb3Np
dGlvbjogYWJzb2x1dGUiPmNvbnRlbnQ8L3NwYW4+PC9kaXY+Ci0gICAgICAgIGF1dG8mIGlubGlu
ZUJveCA9IHByZXZpb3VzRGlzcGxheUJveC5sYXlvdXRCb3goKTsKLSAgICAgICAgYXV0byBpbmxp
bmVCb3hEaXNwbGF5Qm94ID0gYm94ZXNbKmZpcnN0RGlzcGxheUJveEluZGV4Rm9yTGF5b3V0Qm94
KGlubGluZUJveCwgYm94ZXMpXTsKLSAgICAgICAgYXV0byBpbmxpbmVDb250ZW50Qm94T2Zmc2V0
ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChpbmxpbmVCb3gpLmJvcmRlckFu
ZFBhZGRpbmdTdGFydCgpOwotICAgICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUpCi0g
ICAgICAgICAgICBpbmxpbmVCb3hEaXNwbGF5Qm94Lm1vdmVIb3Jpem9udGFsbHkoaW5saW5lQ29u
dGVudEJveE9mZnNldCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlubGluZUJveERpc3Bs
YXlCb3gubW92ZVZlcnRpY2FsbHkoaW5saW5lQ29udGVudEJveE9mZnNldCk7Ci0gICAgICAgIHJl
dHVybiBsZWZ0U2lkZVRvTG9naWNhbFRvcExlZnQoaW5saW5lQm94RGlzcGxheUJveCwgbGluZXNb
aW5saW5lQm94RGlzcGxheUJveC5saW5lSW5kZXgoKV0sIGZhbHNlKTsKLSAgICB9Ci0KLSAgICBh
dXRvIHByZXZpb3VzQm94T3ZlcmZsb3dzID0gKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gcHJl
dmlvdXNEaXNwbGF5Qm94LnJpZ2h0KCkgPiBjdXJyZW50TGluZS5yaWdodCgpIDogcHJldmlvdXNE
aXNwbGF5Qm94LmJvdHRvbSgpID4gY3VycmVudExpbmUuYm90dG9tKCkpIHx8IHByZXZpb3VzRGlz
cGxheUJveC5pc0xpbmVCcmVha0JveCgpOwotICAgIGlmICghcHJldmlvdXNCb3hPdmVyZmxvd3Mp
Ci0gICAgICAgIHJldHVybiByaWdodFNpZGVUb0xvZ2ljYWxUb3BMZWZ0KHByZXZpb3VzRGlzcGxh
eUJveCwgY3VycmVudExpbmUpOwotCi0gICAgYXV0byBuZXh0RGlzcGxheUJveEluZGV4QWZ0ZXJP
dXRPZkZsb3cgPSBuZXh0RGlzcGxheUJveEluZGV4KG91dE9mRmxvd0JveCwgYm94ZXMpOwotICAg
IGlmICghbmV4dERpc3BsYXlCb3hJbmRleEFmdGVyT3V0T2ZGbG93KSB7Ci0gICAgICAgIC8vIFRo
aXMgaXMgdGhlIGxhc3QgY29udGVudCBvbiB0aGUgYmxvY2sgYW5kIGl0IGRvZXMgbm90IGZpdCB0
aGUgbGFzdCBsaW5lLgotICAgICAgICByZXR1cm4geyBjb250ZW50TGVmdEFmdGVyTGFzdExpbmUo
Y29uc3RyYWludHMsIGN1cnJlbnRMaW5lLmJvdHRvbSgpLCBmbG9hdGluZ0NvbnRleHQpLCBpc0hv
cml6b250YWxXcml0aW5nTW9kZSA/IGN1cnJlbnRMaW5lLmJvdHRvbSgpIDogY3VycmVudExpbmUu
cmlnaHQoKSB9OwotICAgIH0KLSAgICBhdXRvJiBuZXh0RGlzcGxheUJveCA9IGJveGVzWypuZXh0
RGlzcGxheUJveEluZGV4QWZ0ZXJPdXRPZkZsb3ddOwotICAgIHJldHVybiBsZWZ0U2lkZVRvTG9n
aWNhbFRvcExlZnQobmV4dERpc3BsYXlCb3gsIGxpbmVzW25leHREaXNwbGF5Qm94LmxpbmVJbmRl
eCgpXSk7Ci19Ci0KLUxheW91dFBvaW50IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6c3RhdGlj
UG9zaXRpb25Gb3JPdXRPZkZsb3dCbG9ja0xldmVsQm94KGNvbnN0IEJveCYgb3V0T2ZGbG93Qm94
LCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBjb25zdCBJ
bmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCkgY29uc3QKLXsKLSAgICBBU1NF
UlQob3V0T2ZGbG93Qm94LnN0eWxlKCkuaXNEaXNwbGF5QmxvY2tMZXZlbCgpKTsKLQotICAgIGF1
dG8gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPSBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKS5z
dHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7Ci0gICAgYXV0byYgbGluZXMgPSBkaXNw
bGF5Q29udGVudC5saW5lczsKLSAgICBhdXRvJiBib3hlcyA9IGRpc3BsYXlDb250ZW50LmJveGVz
OwotICAgIGF1dG8gY29udGVudEJveFRvcExlZnQgPSBMYXlvdXRQb2ludCB7IGNvbnN0cmFpbnRz
Lmhvcml6b250YWwoKS5sb2dpY2FsTGVmdCwgY29uc3RyYWludHMubG9naWNhbFRvcCgpIH07Ci0K
LSAgICBpZiAobGluZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVChib3hlcy5pc0VtcHR5
KCkpOwotICAgICAgICByZXR1cm4gY29udGVudEJveFRvcExlZnQ7Ci0gICAgfQotCi0gICAgLy8g
QmxvY2sgbGV2ZWwgYm94ZXMgYXJlIHBsYWNlZCB1bmRlciB0aGUgY3VycmVudCBsaW5lIGFzIGlm
IHRoZXkgd2VyZSBub3JtYWwgaW5mbG93IGJsb2NrIGxldmVsIGJveGVzLgotICAgIGF1dG8gcHJl
dmlvdXNEaXNwbGF5Qm94SW5kZXhCZWZvcmVPdXRPZkZsb3dCb3ggPSBwcmV2aW91c0Rpc3BsYXlC
b3hJbmRleChvdXRPZkZsb3dCb3gsIGJveGVzKTsKLSAgICBpZiAoIXByZXZpb3VzRGlzcGxheUJv
eEluZGV4QmVmb3JlT3V0T2ZGbG93Qm94KQotICAgICAgICByZXR1cm4geyBjb250ZW50Qm94VG9w
TGVmdC54KCksIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gbGluZXNbMF0udG9wKCkgOiBsaW5l
c1swXS5sZWZ0KCkgfTsKLSAgICBhdXRvJiBjdXJyZW50TGluZSA9IGxpbmVzW2JveGVzWypwcmV2
aW91c0Rpc3BsYXlCb3hJbmRleEJlZm9yZU91dE9mRmxvd0JveF0ubGluZUluZGV4KCldOwotICAg
IHJldHVybiB7IGNvbnRlbnRCb3hUb3BMZWZ0LngoKSwgTGF5b3V0VW5pdCB7IGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlID8gY3VycmVudExpbmUuYm90dG9tKCkgOiBjdXJyZW50TGluZS5yaWdodCgp
IH0gfTsKLX0KLQogSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6Omlu
aXRpYWxMaW5lSGVpZ2h0KGJvb2wgaXNGaXJzdExpbmUpIGNvbnN0CiB7CiAgICAgaWYgKGxheW91
dFN0YXRlKCkuaW5TdGFuZGFyZHNNb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnku
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUZvcm1hdHRpbmdHZW9tZXRyeS5oCmluZGV4IDVhYmRlMWU4MGI3YS4uZTUzNmQ5MzBmMGI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaApAQCAt
NTYsOSArNTYsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSW5saW5lUmVjdCBmbGlwVmlzdWFs
UmVjdFRvTG9naWNhbEZvcldyaXRpbmdNb2RlKGNvbnN0IElubGluZVJlY3QmIHZpc3VhbFJlY3Qs
IFdyaXRpbmdNb2RlKTsKIAotICAgIExheW91dFBvaW50IHN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZG
bG93SW5saW5lTGV2ZWxCb3goY29uc3QgQm94JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dD
b250ZW50JiwgY29uc3QgSW5saW5lRGlzcGxheTo6Q29udGVudCYsIGNvbnN0IEZsb2F0aW5nQ29u
dGV4dCYpIGNvbnN0OwotICAgIExheW91dFBvaW50IHN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93
QmxvY2tMZXZlbEJveChjb25zdCBCb3gmLCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRl
bnQmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JikgY29uc3Q7Ci0KICAgICB2b2lkIGFk
anVzdE1hcmdpblN0YXJ0Rm9yTGlzdE1hcmtlcihjb25zdCBFbGVtZW50Qm94JiwgTGF5b3V0VW5p
dCBuZXN0ZWRMaXN0TWFya2VyTWFyZ2luU3RhcnQsIElubGluZUxheW91dFVuaXQgcm9vdElubGlu
ZUJveE9mZnNldCkgY29uc3Q7CiAKICAgICBzdGF0aWMgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9u
dGFsQWxpZ25tZW50T2Zmc2V0KGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUsIElubGluZUxh
eW91dFVuaXQgY29udGVudExvZ2ljYWxSaWdodCwgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNh
bFJpZ2h0LCBJbmxpbmVMYXlvdXRVbml0IGhhbmdpbmdUcmFpbGluZ1dpZHRoLCBjb25zdCBMaW5l
OjpSdW5MaXN0JiBydW5zLCBib29sIGlzTGFzdExpbmUsIHN0ZDo6b3B0aW9uYWw8VGV4dERpcmVj
dGlvbj4gaW5saW5lQmFzZURpcmVjdGlvbk92ZXJyaWRlID0gc3RkOjpudWxsb3B0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUl0ZW1zQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCmluZGV4IDIzYWU2ZDgwODAyNi4u
MzY2M2RlNDIyOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5j
cHAKQEAgLTg2LDkgKzg2LDcgQEAgSW5saW5lSXRlbXNCdWlsZGVyOjpJbmxpbmVJdGVtc0J1aWxk
ZXIoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LAogdm9pZCBJbmxpbmVJ
dGVtc0J1aWxkZXI6OmJ1aWxkKElubGluZUl0ZW1Qb3NpdGlvbiBzdGFydFBvc2l0aW9uKQogewog
ICAgIElubGluZUl0ZW1zIGlubGluZUl0ZW1zOwotICAgIEZvcm1hdHRpbmdTdGF0ZTo6T3V0T2ZG
bG93Qm94TGlzdCBvdXRPZkZsb3dCb3hlczsKLQotICAgIGNvbGxlY3RJbmxpbmVJdGVtcyhpbmxp
bmVJdGVtcywgb3V0T2ZGbG93Qm94ZXMsIHN0YXJ0UG9zaXRpb24pOworICAgIGNvbGxlY3RJbmxp
bmVJdGVtcyhpbmxpbmVJdGVtcywgc3RhcnRQb3NpdGlvbik7CiAKICAgICBpZiAoIXJvb3QoKS5z
dHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSB8fCBjb250ZW50UmVxdWlyZXNWaXN1YWxS
ZW9yZGVyaW5nKCkpIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBwYXJ0aWFs
LCB5ZXQgcGFyYWdyYXBoIGxldmVsIGJpZGkgY29udGVudCBoYW5kbGluZy4KQEAgLTEwOSw3ICsx
MDcsNiBAQCB2b2lkIElubGluZUl0ZW1zQnVpbGRlcjo6YnVpbGQoSW5saW5lSXRlbVBvc2l0aW9u
IHN0YXJ0UG9zaXRpb24pCiAgICAgICAgIG1fZm9ybWF0dGluZ1N0YXRlLmFwcGVuZElubGluZUl0
ZW1zKFdURk1vdmUoaW5saW5lSXRlbXMpKTsKICAgICB9OwogICAgIGFkanVzdElubGluZUZvcm1h
dHRpbmdTdGF0ZVdpdGhOZXdJbmxpbmVJdGVtcygpOwotICAgIG1fZm9ybWF0dGluZ1N0YXRlLnNl
dE91dE9mRmxvd0JveGVzKFdURk1vdmUob3V0T2ZGbG93Qm94ZXMpKTsKIAogI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgLy8gQ2hlY2sgaWYgd2UndmUgZ290IG1hdGNoaW5nIGlubGluZSBib3ggc3Rh
cnQvZW5kIHBhaXJzIGFuZCB1bmlxdWUgaW5saW5lIGxldmVsIGl0ZW1zIChub24tdGV4dCwgbm9u
LWlubGluZSBib3ggaXRlbXMpLgpAQCAtMTkxLDcgKzE4OCw3IEBAIHN0YXRpYyBMYXlvdXRRdWV1
ZSBpbml0aWFsaXplTGF5b3V0UXVldWUoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRl
eHRSb290CiAgICAgcmV0dXJuIGxheW91dFF1ZXVlOwogfQogCi12b2lkIElubGluZUl0ZW1zQnVp
bGRlcjo6Y29sbGVjdElubGluZUl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgRm9ybWF0
dGluZ1N0YXRlOjpPdXRPZkZsb3dCb3hMaXN0JiBvdXRPZkZsb3dCb3hlcywgSW5saW5lSXRlbVBv
c2l0aW9uIHN0YXJ0UG9zaXRpb24pCit2b2lkIElubGluZUl0ZW1zQnVpbGRlcjo6Y29sbGVjdElu
bGluZUl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgSW5saW5lSXRlbVBvc2l0aW9uIHN0
YXJ0UG9zaXRpb24pCiB7CiAgICAgLy8gVHJhdmVyc2UgdGhlIHRyZWUgYW5kIGNyZWF0ZSBpbmxp
bmUgaXRlbXMgb3V0IG9mIGlubGluZSBib3hlcyBhbmQgbGVhZiBub2Rlcy4gVGhpcyBlc3NlbnRp
YWxseSB0dXJucyB0aGUgdHJlZSBpbmxpbmUgc3RydWN0dXJlIGludG8gYSBmbGF0IG9uZS4KICAg
ICAvLyA8c3Bhbj50ZXh0PHNwYW4+PC9zcGFuPjxpbWc+PC9zcGFuPiAtPiBbSW5saW5lQm94U3Rh
cnRdW0lubGluZUxldmVsQm94XVtJbmxpbmVCb3hTdGFydF1bSW5saW5lQm94RW5kXVtJbmxpbmVM
ZXZlbEJveF1bSW5saW5lQm94RW5kXQpAQCAtMjMzLDkgKzIzMCw4IEBAIHZvaWQgSW5saW5lSXRl
bXNCdWlsZGVyOjpjb2xsZWN0SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBG
b3JtYXR0aW5nCiAgICAgICAgIHdoaWxlICghbGF5b3V0UXVldWUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBhdXRvIGxheW91dEJveCA9IGxheW91dFF1ZXVlLnRha2VMYXN0KCk7CiAgICAgICAg
ICAgICBpZiAobGF5b3V0Qm94LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewotICAgICAgICAg
ICAgICAgIC8vIExldCdzIG5vdCBjb25zdHJ1Y3QgSW5saW5lSXRlbXMgZm9yIG91dC1vZi1mbG93
IGNvbnRlbnQgYXMgdGhleSBkb24ndCBwYXJ0aWNpcGF0ZSBpbiB0aGUgaW5saW5lIGxheW91dC4K
LSAgICAgICAgICAgICAgICAvLyBIb3dldmVyIHRvIGJlIGFibGUgdG8gc3RhdGljIHBvc2l0aW9u
aW5nIHRoZW0sIHdlIG5lZWQgdG8gY29tcHV0ZSB0aGVpciBhcHByb3hpbWF0ZSBwb3NpdGlvbnMu
Ci0gICAgICAgICAgICAgICAgb3V0T2ZGbG93Qm94ZXMuYXBwZW5kKGxheW91dEJveCk7CisgICAg
ICAgICAgICAgICAgbV9pc05vbkJpZGlUZXh0QW5kRm9yY2VkTGluZUJyZWFrT25seUNvbnRlbnQg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpbmxpbmVJdGVtcy5hcHBlbmQoeyBsYXlvdXRCb3gs
IElubGluZUl0ZW06OlR5cGU6Ok9wYXF1ZSB9KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobGF5
b3V0Qm94LT5pc0lubGluZVRleHRCb3goKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGlubGlu
ZVRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihsYXlvdXRCb3gpOwogICAgICAgICAg
ICAgICAgIGhhbmRsZVRleHRDb250ZW50KGlubGluZVRleHRCb3gsIGlubGluZUl0ZW1zLCBwYXJ0
aWFsQ29udGVudE9mZnNldChpbmxpbmVUZXh0Qm94KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUl0ZW1zQnVpbGRlci5oCmluZGV4IDVkOWQ3YWM3ZTI0MC4uNTIyZDE4Mzg3NzVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVJdGVtc0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBidWlsZChJbmxpbmVJdGVtUG9zaXRpb24gc3RhcnRQb3NpdGlvbik7CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCBjb2xsZWN0SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmLCBGb3Jt
YXR0aW5nU3RhdGU6Ok91dE9mRmxvd0JveExpc3QmLCBJbmxpbmVJdGVtUG9zaXRpb24gc3RhcnRQ
b3NpdGlvbik7CisgICAgdm9pZCBjb2xsZWN0SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmLCBJbmxp
bmVJdGVtUG9zaXRpb24gc3RhcnRQb3NpdGlvbik7CiAgICAgdm9pZCBicmVha0FuZENvbXB1dGVC
aWRpTGV2ZWxzKElubGluZUl0ZW1zJik7CiAgICAgdm9pZCBjb21wdXRlSW5saW5lVGV4dEl0ZW1X
aWR0aHMoSW5saW5lSXRlbXMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcAppbmRleCAz
M2FmZjkxNDUzMzUuLjQ2ODRlZTg5ZTllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAK
QEAgLTI2MCw2ICsyNjAsMjcgQEAgdm9pZCBMaW5lOjpoYW5kbGVPdmVyZmxvd2luZ05vbkJyZWFr
aW5nU3BhY2UoVHJhaWxpbmdDb250ZW50QWN0aW9uIHRyYWlsaW5nQ29udGUKICAgICBtX2NvbnRl
bnRMb2dpY2FsV2lkdGggLT0gcmVtb3ZlZE9yQ29sbGFwc2VkQ29udGVudFdpZHRoOwogfQogCitj
b25zdCBCb3gqIExpbmU6OnJlbW92ZU92ZXJmbG93aW5nT3VyT2ZGbG93Q29udGVudCgpCit7Cisg
ICAgYXV0byBsYXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXggPSBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4geyB9OworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gbV9ydW5zLnNpemUoKTsgaW5kZXgtLTsp
IHsKKyAgICAgICAgYXV0byYgcnVuID0gbV9ydW5zW2luZGV4XTsKKyAgICAgICAgaWYgKHJ1bi5p
c09wYXF1ZSgpKSB7CisgICAgICAgICAgICBsYXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXggPSBp
bmRleDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghcnVu
LmxvZ2ljYWxXaWR0aCgpICYmIChydW4uaXNJbmxpbmVCb3hTdGFydCgpIHx8IHJ1bi5pc0lubGlu
ZUJveEVuZCgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgaWYgKCFsYXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXgpCisgICAgICAgIHJldHVybiB7
IH07CisgICAgYXV0byogbGFzdFRyYWlsaW5nT3BhcXVlQm94ID0gJm1fcnVuc1sqbGFzdFRyYWls
aW5nT3BhcXVlSXRlbUluZGV4XS5sYXlvdXRCb3goKTsKKyAgICBtX3J1bnMucmVtb3ZlKCpsYXN0
VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXgsIG1fcnVucy5zaXplKCkgLSAqbGFzdFRyYWlsaW5nT3Bh
cXVlSXRlbUluZGV4KTsKKyAgICBBU1NFUlQoIW1fcnVucy5pc0VtcHR5KCkpOworICAgIHJldHVy
biBsYXN0VHJhaWxpbmdPcGFxdWVCb3g7Cit9CisKIHZvaWQgTGluZTo6aGFuZGxlVHJhaWxpbmdI
YW5naW5nQ29udGVudChzdGQ6Om9wdGlvbmFsPEludHJpbnNpY1dpZHRoTW9kZT4gaW50cmluc2lj
V2lkdGhNb2RlLCBJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxBdmFpbGFibGVTcGFjZUZvckNv
bnRlbnQsIGJvb2wgaXNMYXN0Rm9ybWF0dGVkTGluZSkKIHsKICAgICAvLyBodHRwczovL2RyYWZ0
cy5jc3N3Zy5vcmcvY3NzLXRleHQvI2hhbmdpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaAppbmRl
eCA0ZDkzZDczNmJmYTguLjdiMmEwNDNjZDJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaApA
QCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6CiAgICAgSW5saW5lTGF5b3V0VW5pdCBoYW5kbGVUcmFp
bGluZ1RyaW1tYWJsZUNvbnRlbnQoVHJhaWxpbmdDb250ZW50QWN0aW9uKTsKICAgICB2b2lkIGhh
bmRsZVRyYWlsaW5nSGFuZ2luZ0NvbnRlbnQoc3RkOjpvcHRpb25hbDxJbnRyaW5zaWNXaWR0aE1v
ZGU+LCBJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxBdmFpbGFibGVTcGFjZSwgYm9vbCBpc0xh
c3RGb3JtYXR0ZWRMaW5lKTsKICAgICB2b2lkIGhhbmRsZU92ZXJmbG93aW5nTm9uQnJlYWtpbmdT
cGFjZShUcmFpbGluZ0NvbnRlbnRBY3Rpb24sIElubGluZUxheW91dFVuaXQgb3ZlcmZsb3dpbmdX
aWR0aCk7CisgICAgY29uc3QgQm94KiByZW1vdmVPdmVyZmxvd2luZ091ck9mRmxvd0NvbnRlbnQo
KTsKICAgICB2b2lkIHJlc2V0QmlkaUxldmVsRm9yVHJhaWxpbmdXaGl0ZXNwYWNlKFVCaURpTGV2
ZWwgcm9vdEJpZGlMZXZlbCk7CiAgICAgdm9pZCBhcHBseVJ1bkV4cGFuc2lvbihJbmxpbmVMYXlv
dXRVbml0IGhvcml6b250YWxBdmFpbGFibGVTcGFjZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJveC5jcHAKaW5kZXggM2JjMTgyNTIyYjM3Li42MmQ2NjcyZWM4ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3guY3BwCkBAIC0xMzAsNiArMTMwLDEzIEBAIElubGluZVJlY3Qg
TGluZUJveDo6bG9naWNhbEJvcmRlckJveEZvcklubGluZUJveChjb25zdCBCb3gmIGxheW91dEJv
eCwgY29uc3QgQm94CiAgICAgcmV0dXJuIGxvZ2ljYWxSZWN0OwogfQogCitJbmxpbmVSZWN0IExp
bmVCb3g6OmxvZ2ljYWxSZWN0Rm9yT3BhcXVlQm94KGNvbnN0IExpbmU6OlJ1biYgb3BhcXVlUnVu
LCBjb25zdCBCb3hHZW9tZXRyeSYgYm94R2VvbWV0cnkpIGNvbnN0Cit7CisgICAgQVNTRVJUKG9w
YXF1ZVJ1bi5pc09wYXF1ZSgpKTsKKyAgICBBU1NFUlQob3BhcXVlUnVuLmxheW91dEJveCgpLnN0
eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkpOworICAgIHJldHVybiB7IHsgfSwg
bV9yb290SW5saW5lQm94LmxvZ2ljYWxMZWZ0KCkgKyBvcGFxdWVSdW4ubG9naWNhbExlZnQoKSwg
Ym94R2VvbWV0cnkuYm9yZGVyQm94V2lkdGgoKSwgYm94R2VvbWV0cnkuYm9yZGVyQm94SGVpZ2h0
KCkgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgTGF5b3V0CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaAppbmRleCA5NDA1NDliNTc1NTYuLjNlMGUz
OWU3NzczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaApAQCAtNzEsNiArNzEsNyBA
QCBwdWJsaWM6CiAgICAgSW5saW5lUmVjdCBsb2dpY2FsUmVjdEZvclJvb3RJbmxpbmVCb3goKSBj
b25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gubG9naWNhbFJlY3QoKTsgfQogICAgIElubGlu
ZVJlY3QgbG9naWNhbEJvcmRlckJveEZvckF0b21pY0lubGluZUxldmVsQm94KGNvbnN0IEJveCYs
IGNvbnN0IEJveEdlb21ldHJ5JikgY29uc3Q7CiAgICAgSW5saW5lUmVjdCBsb2dpY2FsQm9yZGVy
Qm94Rm9ySW5saW5lQm94KGNvbnN0IEJveCYsIGNvbnN0IEJveEdlb21ldHJ5JikgY29uc3Q7Cisg
ICAgSW5saW5lUmVjdCBsb2dpY2FsUmVjdEZvck9wYXF1ZUJveChjb25zdCBMaW5lOjpSdW4mIG9w
YXF1ZVJ1biwgY29uc3QgQm94R2VvbWV0cnkmKSBjb25zdDsKIAogICAgIGNvbnN0IElubGluZUxl
dmVsQm94KiBpbmxpbmVMZXZlbEJveEZvcihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyBy
ZXR1cm4gY29uc3RfY2FzdDxMaW5lQm94Jj4oKnRoaXMpLmlubGluZUxldmVsQm94Rm9yKGxheW91
dEJveCk7IH0KICAgICBjb25zdCBJbmxpbmVMZXZlbEJveCYgaW5saW5lTGV2ZWxCb3hGb3IoY29u
c3QgTGluZTo6UnVuJiBsaW5lUnVuKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PExpbmVCb3gm
PigqdGhpcykuaW5saW5lTGV2ZWxCb3hGb3IobGluZVJ1bik7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA0MzcwODM3N2VlYjkuLmRmNTY5MjA0NzEyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtNDc3LDYgKzQ3
NywyNiBAQCBMaW5lQ29udGVudCBMaW5lQnVpbGRlcjo6cGxhY2VJbmxpbmVBbmRGbG9hdENvbnRl
bnQoY29uc3QgSW5saW5lSXRlbVJhbmdlJiBuZWVkcwogICAgICAgICAgICAgICAgIG1fbGluZS5o
YW5kbGVPdmVyZmxvd2luZ05vbkJyZWFraW5nU3BhY2UoaXNMaW5lQnJlYWtBZnRlcldoaXRlc3Bh
Y2UoKSA/IExpbmU6OlRyYWlsaW5nQ29udGVudEFjdGlvbjo6UHJlc2VydmUgOiBMaW5lOjpUcmFp
bGluZ0NvbnRlbnRBY3Rpb246OlJlbW92ZSwgbV9saW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKSAt
IGhvcml6b250YWxBdmFpbGFibGVTcGFjZSk7CiAKICAgICAgICAgICAgIG1fbGluZS5oYW5kbGVU
cmFpbGluZ0hhbmdpbmdDb250ZW50KGludHJpbnNpY1dpZHRoTW9kZSgpLCBob3Jpem9udGFsQXZh
aWxhYmxlU3BhY2UsIGlzTGFzdExpbmUpOworCisgICAgICAgICAgICBhdXRvIG1heU5lZWRPdXRP
ZkZsb3dPdmVyZmxvd1RyaW1taW5nID0gIWlzSW5JbnRyaW5zaWNXaWR0aE1vZGUoKSAmJiBsaW5l
SGFzT3ZlcmZsb3coKSAmJiAhbGluZUNvbnRlbnQucGFydGlhbFRyYWlsaW5nQ29udGVudExlbmd0
aCAmJiBUZXh0VXRpbDo6aXNXcmFwcGluZ0FsbG93ZWQocm9vdFN0eWxlKTsKKyAgICAgICAgICAg
IGlmIChtYXlOZWVkT3V0T2ZGbG93T3ZlcmZsb3dUcmltbWluZykgeworICAgICAgICAgICAgICAg
IC8vIE92ZXJmbG93aW5nIG91dC1vZi1mbG93IGJveGVzIHNob3VsZCB3cmFwIHRoZSB0byBzdWJz
ZXF1ZW50IGxpbmVzIGp1c3QgbGlrZSBhbnkgb3RoZXIgaW4tZmxvdyBjb250ZW50LgorICAgICAg
ICAgICAgICAgIC8vIEhvd2V2ZXIgc2luY2Ugd2UgdGFrZSBhIHNob3J0Y3V0IGJ5IG5vdCBjb25z
aWRlcmluZyBvdXQtb2YtZmxvdyBjb250ZW50IGFzIGluZmxvdyBidXQgaW5zdGVhZCB0cmVhdGlu
ZyBpdCBhcyBhbiBvcGFxdWUgYm94IHdpdGggemVybyB3aWR0aCBhbmQgbm8KKyAgICAgICAgICAg
ICAgICAvLyBzb2Z0IHdyYXAgb3Bwb3J0dW5pdHksIGFueSBvdmVyZmxvd2luZyBvdXQtb2YtZmxv
dyBjb250ZW50IHdvdWxkIHBpbGUgdXAgYXMgdHJhaWxpbmcgY29udGVudC4KKyAgICAgICAgICAg
ICAgICAvLyBBbHRlcm5hdGl2ZWx5IHdlIGNvdWxkIGluaXRpYXRlIGEgdHdvIHBhc3MgbGF5b3V0
IGZpcnN0IHdpdGggb3V0LW9mLWZsb3cgY29udGVudCB0cmVhdGVkIGFzIHRydWUgaW5mbG93IGFu
ZCBhIHNlY29uZCB3aXRob3V0IHRoZW0uCisgICAgICAgICAgICAgICAgQVNTRVJUKCFsaW5lQ29u
dGVudC5yYW5nZS5lbmQub2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogbGFzdFJl
bW92ZWRUcmFpbGluZ0JveCA9IG1fbGluZS5yZW1vdmVPdmVyZmxvd2luZ091ck9mRmxvd0NvbnRl
bnQoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGxpbmVFbmRJbmRleCA9IFsmXSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8gaW5kZXggPSBsaW5lQ29udGVudC5yYW5n
ZS5zdGFydC5pbmRleDsgaW5kZXggPCBsaW5lQ29udGVudC5yYW5nZS5lbmQuaW5kZXg7ICsraW5k
ZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJm1faW5saW5lSXRlbXNbaW5k
ZXhdLmxheW91dEJveCgpID09IGxhc3RSZW1vdmVkVHJhaWxpbmdCb3gpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmVDb250ZW50LnJhbmdlLmVuZC5pbmRleDsKKyAg
ICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgbGluZUNvbnRlbnQucmFu
Z2UuZW5kLmluZGV4ID0gbGluZUVuZEluZGV4KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQogICAgICAgICB9OwogICAgICAgICBoYW5kbGVUcmFpbGluZ0NvbnRlbnQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5
Q29udGVudEJ1aWxkZXIuY3BwCmluZGV4IGY1NmJjMDhkZWVlZS4uMWQ0YzkyMDAyZGFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5
Q29udGVudEJ1aWxkZXIuY3BwCkBAIC00NTEsMTAgKzQ1MSwxMiBAQCB2b2lkIElubGluZURpc3Bs
YXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KGNvbnN0IExpbmVMYXlvdXRS
ZXN1bHQmCiAjZW5kaWYKICAgICBhdXRvIHdyaXRpbmdNb2RlID0gcm9vdCgpLnN0eWxlKCkud3Jp
dGluZ01vZGUoKTsKICAgICBhdXRvIGNvbnRlbnRTdGFydEluVmlzdWFsT3JkZXIgPSBtX2Rpc3Bs
YXlMaW5lLnRvcExlZnQoKTsKKyAgICBWZWN0b3I8c2l6ZV90PiBibG9ja0xldmVsT3V0T2ZGbG93
Qm94TGlzdDsKIAogICAgIGFwcGVuZFJvb3RJbmxpbmVCb3hEaXNwbGF5Qm94KGZsaXBSb290SW5s
aW5lQm94UmVjdFRvVmlzdWFsRm9yV3JpdGluZ01vZGUobGluZUJveC5sb2dpY2FsUmVjdEZvclJv
b3RJbmxpbmVCb3goKSwgd3JpdGluZ01vZGUpLCBsaW5lQm94LnJvb3RJbmxpbmVCb3goKS5oYXND
b250ZW50KCksIGJveGVzKTsKIAotICAgIGZvciAoYXV0byYgbGluZVJ1biA6IGxpbmVMYXlvdXRS
ZXN1bHQuaW5saW5lQ29udGVudCkgeworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXgg
PCBsaW5lTGF5b3V0UmVzdWx0LmlubGluZUNvbnRlbnQuc2l6ZSgpOyArK2luZGV4KSB7CisgICAg
ICAgIGF1dG8mIGxpbmVSdW4gPSBsaW5lTGF5b3V0UmVzdWx0LmlubGluZUNvbnRlbnRbaW5kZXhd
OwogICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBsaW5lUnVuLmxheW91dEJveCgpOwogCiAgICAg
ICAgIGF1dG8gdmlzdWFsUmVjdFJlbGF0aXZlVG9Sb290ID0gWyZdKGF1dG8gbG9naWNhbFJlY3Qp
IHsKQEAgLTQ5OCwxMSArNTAwLDE4IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
Ojpwcm9jZXNzTm9uQmlkaUNvbnRlbnQoY29uc3QgTGluZUxheW91dFJlc3VsdCYKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChsaW5lUnVuLmlzT3BhcXVlKCkp
IHsKLSAgICAgICAgICAgIC8vIFNldCBnZW9tZXRyeSBmb3IgdGhpcyBvcGFxdWUgYm94LgorICAg
ICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRy
eShsYXlvdXRCb3gpOworICAgICAgICAgICAgaWYgKGxheW91dEJveC5zdHlsZSgpLmlzT3JpZ2lu
YWxEaXNwbGF5SW5saW5lVHlwZSgpKSB7CisgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9w
TGVmdCA9IGxpbmVCb3gubG9naWNhbFJlY3RGb3JPcGFxdWVCb3gobGluZVJ1biwgYm94R2VvbWV0
cnkpLnRvcExlZnQoKTsKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wTGVmdC5tb3ZlQnkobGlu
ZUJveC5sb2dpY2FsUmVjdCgpLnRvcExlZnQoKSk7CisgICAgICAgICAgICAgICAgYm94R2VvbWV0
cnkuc2V0TG9naWNhbFRvcExlZnQodG9MYXlvdXRQb2ludChsb2dpY2FsVG9wTGVmdCkpOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYmxvY2tMZXZlbE91dE9mRmxvd0JveExp
c3QuYXBwZW5kKGluZGV4KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAg
ICAgIEFTU0VSVChsaW5lUnVuLmlzSW5saW5lQm94RW5kKCkgfHwgbGluZVJ1bi5pc1dvcmRCcmVh
a09wcG9ydHVuaXR5KCkpOwogICAgIH0KKyAgICBzZXRHZW9tZXRyeUZvckJsb2NrTGV2ZWxPdXRP
ZkZsb3dCb3hlcyhibG9ja0xldmVsT3V0T2ZGbG93Qm94TGlzdCwgbGluZUJveCwgbGluZUxheW91
dFJlc3VsdC5pbmxpbmVDb250ZW50KTsKIH0KIAogc3RydWN0IERpc3BsYXlCb3hUcmVlIHsKQEAg
LTg2OSw2ICs4NzgsMzIgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNvbGxl
Y3RJbmtPdmVyZmxvd0ZvcklubGluZUJveGVzKElubGluZURpc3BsYXkKICAgICB9CiB9CiAKK3Zv
aWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpzZXRHZW9tZXRyeUZvckJsb2NrTGV2ZWxP
dXRPZkZsb3dCb3hlcyhjb25zdCBWZWN0b3I8c2l6ZV90PiBpbmRleExpc3QsIGNvbnN0IExpbmVC
b3gmIGxpbmVCb3gsIGNvbnN0IExpbmU6OlJ1bkxpc3QmIGxpbmVSdW5zKQoreworICAgIGF1dG8m
IGZvcm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGluZ0NvbnRleHQoKTsKKyAgICBhdXRv
IG91dE9mRmxvd0NvbnRlbnRIYXNQcmV2aW91c0luRmxvd1NpYmxpbmdXaXRoQ29udGVudE9yRGVj
b3JhdGlvbiA9IGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmRleExpc3Qu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgYXV0byBvdXRPZkZsb3dCb3hJbmRleCA9IGluZGV4TGlz
dFtpXTsKKyAgICAgICAgQVNTRVJUKG91dE9mRmxvd0JveEluZGV4IDwgbGluZVJ1bnMuc2l6ZSgp
KTsKKworICAgICAgICBhdXRvIGhhc1ByZXZpb3VzSW5GbG93Q29udGVudCA9IFsmXSB7CisgICAg
ICAgICAgICBpZiAob3V0T2ZGbG93Q29udGVudEhhc1ByZXZpb3VzSW5GbG93U2libGluZ1dpdGhD
b250ZW50T3JEZWNvcmF0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgZm9yIChzaXplX3QgcnVuSW5kZXggPSBpID8gb3V0T2ZGbG93Qm94SW5kZXggKyAxIDog
MDsgcnVuSW5kZXggPCBvdXRPZkZsb3dCb3hJbmRleDsgKytydW5JbmRleCkgeworICAgICAgICAg
ICAgICAgIGlmIChMaW5lOjpSdW46OmlzQ29udGVudGZ1bE9ySGFzRGVjb3JhdGlvbihsaW5lUnVu
c1tydW5JbmRleF0sIGZvcm1hdHRpbmdDb250ZXh0KSkgeworICAgICAgICAgICAgICAgICAgICBv
dXRPZkZsb3dDb250ZW50SGFzUHJldmlvdXNJbkZsb3dTaWJsaW5nV2l0aENvbnRlbnRPckRlY29y
YXRpb24gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH07CisgICAgICAgIC8vIEJsb2NrIGxldmVsIGJveGVzIGFyZSBwbGFjZWQgZWl0aGVyIGF0
IHRoZSBzdGFydCBvZiB0aGUgbGluZSBvciAidW5kZXIiIGRlcGVuZGluZyB3aGV0aGVyIHRoZXkg
aGF2ZSBwcmV2aW91cyBpbmZsb3cgc2libGluZy4KKyAgICAgICAgYXV0byBsb2dpY2FsVG9wID0g
aGFzUHJldmlvdXNJbkZsb3dDb250ZW50KCkgPyBsaW5lQm94LmxvZ2ljYWxSZWN0KCkuYm90dG9t
KCkgOiBsaW5lQm94LmxvZ2ljYWxSZWN0KCkudG9wKCk7CisgICAgICAgIGZvcm1hdHRpbmdTdGF0
ZSgpLmJveEdlb21ldHJ5KGxpbmVSdW5zW291dE9mRmxvd0JveEluZGV4XS5sYXlvdXRCb3goKSku
c2V0TG9naWNhbFRvcExlZnQoeyBjb25zdHJhaW50cygpLmhvcml6b250YWwoKS5sb2dpY2FsTGVm
dCwgbG9naWNhbFRvcCB9KTsKKyAgICB9Cit9CisKIHN0YXRpYyBmbG9hdCBsb2dpY2FsQm90dG9t
Rm9yVGV4dERlY29yYXRpb25Db250ZW50KGNvbnN0IElubGluZURpc3BsYXk6OkJveGVzJiBib3hl
cywgYm9vbCBpc0hvcml6b250YWxXcml0aW5nTW9kZSkKIHsKICAgICBhdXRvIGxvZ2ljYWxCb3R0
b20gPSBzdGQ6Om9wdGlvbmFsPGZsb2F0PiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlD
b250ZW50QnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaAppbmRleCA5NTQ1
MTg5YzA2N2EuLmNiZDVkOWQ4YzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oCkBAIC03Myw2ICs3Myw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRSaWdodEZvcldyaXRpbmdNb2RlKElubGluZURpc3Bs
YXk6OkJveCYsIElubGluZUxheW91dFVuaXQgbG9naWNhbFJpZ2h0LCBXcml0aW5nTW9kZSkgY29u
c3Q7CiAgICAgSW5saW5lTGF5b3V0UG9pbnQgbW92ZVBvaW50SG9yaXpvbnRhbGx5Rm9yV3JpdGlu
Z01vZGUoY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIHRvcExlZnQsIElubGluZUxheW91dFVuaXQg
aG9yaXpvbnRhbE9mZnNldCwgV3JpdGluZ01vZGUpIGNvbnN0OwogICAgIElubGluZUxheW91dFVu
aXQgb3V0c2lkZUxpc3RNYXJrZXJWaXN1YWxQb3NpdGlvbihjb25zdCBFbGVtZW50Qm94JikgY29u
c3Q7CisgICAgdm9pZCBzZXRHZW9tZXRyeUZvckJsb2NrTGV2ZWxPdXRPZkZsb3dCb3hlcyhjb25z
dCBWZWN0b3I8c2l6ZV90PiBpbmRleExpc3QsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBMaW5lOjpS
dW5MaXN0Jik7CiAKICAgICBib29sIGlzTGluZUZ1bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUlzRnVsbHlUcnVuY2F0ZWRJbkJsb2NrRGlyZWN0aW9u
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxp
bmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAppbmRl
eCA2OTY4M2Y4NTlkYTMuLjQ4MzJmNjhhMGJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50
ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApAQCAtNTg4LDggKzU4OCw3IEBAIHN0ZDo6b3B0aW9uYWw8
TGF5b3V0UmVjdD4gTGluZUxheW91dDo6bGF5b3V0KCkKICAgICB9KCk7CiAgICAgYXV0byBwYXJl
bnRCbG9ja0xheW91dFN0YXRlID0gTGF5b3V0OjpCbG9ja0xheW91dFN0YXRlIHsgbV9ibG9ja0Zv
cm1hdHRpbmdTdGF0ZS5mbG9hdGluZ1N0YXRlKCksIGxpbmVDbGFtcChmbG93KCkpLCB0ZXh0Qm94
VHJpbShmbG93KCkpLCBpbnRydXNpdmVJbml0aWFsTGV0dGVyQm90dG9tKCkgfTsKICAgICBhdXRv
IGlubGluZUxheW91dFN0YXRlID0gTGF5b3V0OjpJbmxpbmVMYXlvdXRTdGF0ZSB7IHBhcmVudEJs
b2NrTGF5b3V0U3RhdGUsIFdURk1vdmUobV9uZXN0ZWRMaXN0TWFya2VyT2Zmc2V0cykgfTsKLSAg
ICBhdXRvIGxheW91dFJlc3VsdCA9IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGF5b3V0SW5G
bG93QW5kRmxvYXRDb250ZW50KGlubGluZUNvbnRlbnRDb25zdHJhaW50cywgaW5saW5lTGF5b3V0
U3RhdGUsIG1fbGluZURhbWFnZS5nZXQoKSk7Ci0gICAgbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5sYXlvdXRPdXRPZkZsb3dDb250ZW50KGlubGluZUNvbnRlbnRDb25zdHJhaW50cywgaW5saW5l
TGF5b3V0U3RhdGUsIGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVudCk7CisgICAgYXV0byBsYXlv
dXRSZXN1bHQgPSBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0LmxheW91dChpbmxpbmVDb250ZW50
Q29uc3RyYWludHMsIGlubGluZUxheW91dFN0YXRlLCBtX2xpbmVEYW1hZ2UuZ2V0KCkpOwogCiAg
ICAgYXV0byByZXBhaW50UmVjdCA9IExheW91dFJlY3QgeyBjb25zdHJ1Y3RDb250ZW50KGlubGlu
ZUxheW91dFN0YXRlLCBXVEZNb3ZlKGxheW91dFJlc3VsdCkpIH07CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVwYWludC9tb3ZlLWJhY2tp
bmctc2hhcmluZy1sYXllci1leHBlY3RlZC50eHQKaW5kZXggMjg0ZWUzNzQ1MjlkLi4wMjZjMTg5
ZmEwMTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1i
YWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0CkBA
IC0xNiw2ICsxNiw3IEBACiAgICAgICAgICAgKGJvdW5kcyA4MDIuMDAgMjAyLjAwKQogICAgICAg
ICAgIChkcmF3c0NvbnRlbnQgMSkKICAgICAgICAgICAocmVwYWludCByZWN0cworICAgICAgICAg
ICAgKHJlY3QgMC4wMCAxLjAwIDgwMi4wMCAxLjAwKQogICAgICAgICAgICAgKHJlY3QgMjAxLjAw
IDUxLjAwIDEwMC4wMCAxMDAuMDApCiAgICAgICAgICAgICAocmVjdCA0MDEuMDAgNTEuMDAgMTAw
LjAwIDEwMC4wMCkKICAgICAgICAgICApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3Mtd2syL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9jb21wb3NpdGluZy9y
ZXBhaW50L21vdmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVkLnR4dAppbmRleCBmM2Iz
ZDBiNzhkODYuLmJkNGViYTY5NGQ2NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLXdrMi9jb21wb3NpdGluZy9yZXBhaW50L21vdmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL2NvbXBvc2l0aW5n
L3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0CkBAIC0xNiw2
ICsxNiw3IEBACiAgICAgICAgICAgKGJvdW5kcyA4MDIuMDAgMjAyLjAwKQogICAgICAgICAgIChk
cmF3c0NvbnRlbnQgMSkKICAgICAgICAgICAocmVwYWludCByZWN0cworICAgICAgICAgICAgKHJl
Y3QgMC4wMCAxLjAwIDgwMi4wMCAxLjAwKQogICAgICAgICAgICAgKHJlY3QgMjAxLjAwIDUxLjAw
IDEwMC4wMCAxMDAuMDApCiAgICAgICAgICAgICAocmVjdCA0MDEuMDAgNTEuMDAgMTAwLjAwIDEw
MC4wMCkKICAgICAgICAgICApCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467491</attachid>
            <date>2023-08-30 07:31:05 -0700</date>
            <delta_ts>2023-08-30 09:29:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-260776-20230830073104.patch</filename>
            <type>text/plain</type>
            <size>42110</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAxNTY3MTllZmE2ZjcyYTUxOGZlMTVhN2Q5NDBkZDBkMmJlMGUyMTMxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IE1vbiwgMjggQXVnIDIwMjMgMTI6MzA6MzUgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbSUZDXSBV
c2Ugb3BhcXVlIElubGluZUl0ZW0gdG8gY29tcHV0ZSBvdXQtb2YtZmxvdyBzdGF0aWMKIHBvc2l0
aW9uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjA3NzYKClJldmll
d2VkIGJ5IEFudHRpIEtvaXZpc3RvLgoKTGV0J3MgcmVwbGFjZSBleGlzdGluZyBvdXQtb2YtZmxv
dyBoYW5kbGluZyB3aXRoIHVzaW5nIG9wYXF1ZSBpbmxpbmUgaXRlbXMgaW5zdGVhZC4KMS4gQWRk
IG91dC1vZi1mbG93IGNvbnRlbnQgdG8gdGhlIGlubGluZSBpdGVtIGxpc3QgYXMgb3BhcXVlIGJv
eCBhbmQgcnVuIHJlZ3VsYXIgaW5saW5lIGxheW91dC4KMi4gU2V0IHN0YXRpYyBwb3NpdGlvbiBh
cyBwYXJ0IG9mIHRoZSBpbmxpbmUgZGlzcGxheSBjb250ZW50IGJ1aWxkaW5nIHByb2Nlc3Mgd2hl
cmUgd2UgaXRlcmF0ZSB0aHJvdWdoIHRoZSBydW5zIG9uIHRoZSBjdXJyZW50IGxpbmUuCjMuIFNp
bmNlIHRoaXMgaXMgYWxsIHBhcnQgb2YgX2luZmxvd18gbGF5b3V0LCB3ZSBkb24ndCBuZWVkIHRo
ZSBkZWRpY2F0ZWQgX291dF9vZl9mbG93XyBtZXRob2Qgb24gSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQgYW55bW9yZS4KNC4gUmVtb3ZlIGV4aXN0aW5nIGxvZ2ljIHdoZXJlIHdlIGNvbXB1dGUgdGhl
IHN0YXRpYyBwb3NpdGlvbiBieSBsb29raW5nIGF0IGFkamFjZW50IGRpc3BsYXkgYm94IGdlb21l
dHJpZXMuCgoqIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNo
YXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIv
Y29tcG9zaXRpbmcvcmVwYWludC9tb3ZlLWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3RlZC50
eHQ6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudCk6IERlbGV0ZWQuCihXZWJDb3JlOjpM
YXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JP
dXRPZkZsb3dDb250ZW50KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgoqIFNvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdH
ZW9tZXRyeS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OmZpcnN0RGlzcGxheUJveEluZGV4Rm9yTGF5
b3V0Qm94KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6bGFzdERpc3BsYXlCb3hJbmRleEZv
ckxheW91dEJveCk6IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OnByZXZpb3VzRGlzcGxheUJv
eEluZGV4KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6bmV4dERpc3BsYXlCb3hJbmRleCk6
IERlbGV0ZWQuCihXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6Y29u
dGVudExlZnRBZnRlckxhc3RMaW5lIGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0lubGlu
ZUxldmVsQm94IGNvbnN0KTogRGVsZXRlZC4KKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ0dlb21ldHJ5OjpzdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0Jsb2NrTGV2ZWxCb3ggY29u
c3QpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5jcHA6CihXZWJD
b3JlOjpMYXlvdXQ6OklubGluZUl0ZW1zQnVpbGRlcjo6YnVpbGQpOgooV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVJdGVtc0J1aWxkZXI6OmNvbGxlY3RJbmxpbmVJdGVtcyk6CiogU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmg6
CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZS5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OnJlbW92ZU92ZXJmbG93aW5nT3VyT2ZG
bG93Q29udGVudCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94
Ojpsb2dpY2FsUmVjdEZvck9wYXF1ZUJveCBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5oOgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNw
cDoKKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OnBsYWNlSW5saW5lQW5kRmxvYXRDb250
ZW50KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHA6CihXZWJDb3JlOjpMYXlvdXQ6
OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KToKKiBT
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHA6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6
bGF5b3V0KToKLS0tCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAg
ICAgfCAgIDIgKy0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwICAgICAg
ICB8ICAzMCArLS0tCiAuLi4vaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggICAgICAg
ICAgfCAgIDQgKy0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCAgICAg
ICB8IDE2OCAtLS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dl
b21ldHJ5LmggICAgICAgICB8ICAgMyAtCiAuLi4vaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5j
cHAgICAgICAgICAgICAgfCAgMTIgKy0KIC4uLi9pbmxpbmUvSW5saW5lSXRlbXNCdWlsZGVyLmgg
ICAgICAgICAgICAgICB8ICAgMiArLQogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZS5jcHAgIHwgIDIxICsrKwogLi4uL2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZS5oICAgIHwgICAxICsKIC4uLi9pbmxpbmUvSW5saW5lTGluZUJveC5jcHAgICAgICAg
ICAgICAgICAgICB8ICAgNyArCiAuLi4vZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVM
aW5lQm94LmggfCAgIDEgKwogLi4uL2lubGluZS9JbmxpbmVMaW5lQnVpbGRlci5jcHAgICAgICAg
ICAgICAgIHwgIDIyICsrLQogLi4uL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
LmNwcCAgIHwgIDQxICsrKystCiAuLi4vZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXIuaCAgICAgfCAgIDEgKwogLi4uL2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQ292ZXJh
Z2UuY3BwIHwgICAyICstCiAuLi4vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5j
cHAgICAgfCAgIDMgKy0KIC4uLi9tb3ZlLWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3RlZC50
eHQgICB8ICAgMSArCiAuLi4vbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0
ICAgfCAgIDEgKwogMTggZmlsZXMgY2hhbmdlZCwgMTA0IGluc2VydGlvbnMoKyksIDIxOCBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAKaW5kZXggNjJkMDY3MWUwNzViLi5jMDE1
M2JhYTgxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvZmxleC9GbGV4TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2ZsZXgvRmxleExheW91dC5jcHAKQEAgLTQ0NSw3ICs0NDUsNyBAQCBG
bGV4TGF5b3V0OjpTaXplTGlzdCBGbGV4TGF5b3V0OjpoeXBvdGhldGljYWxDcm9zc1NpemVGb3JG
bGV4SXRlbXMoY29uc3QgTG9naWNhbAogICAgICAgICAgICAgYXV0byYgaW5saW5lRm9ybWF0dGlu
Z1N0YXRlID0gZmxleEZvcm1hdHRpbmdDb250ZXh0KCkubGF5b3V0U3RhdGUoKS5lbnN1cmVJbmxp
bmVGb3JtYXR0aW5nU3RhdGUoZmxleEl0ZW1Cb3gpOwogICAgICAgICAgICAgYXV0byBpbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCA9IElubGluZUZvcm1hdHRpbmdDb250ZXh0IHsgZmxleEl0ZW1Cb3gs
IGlubGluZUZvcm1hdHRpbmdTdGF0ZSB9OwogICAgICAgICAgICAgYXV0byBjb25zdHJhaW50c0Zv
ckluRmxvd0NvbnRlbnQgPSBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQgeyBIb3Jpem9udGFs
Q29uc3RyYWludHMgeyB7IH0sIGZsZXhJdGVtc01haW5TaXplTGlzdFtmbGV4SXRlbUluZGV4XSB9
LCB7IH0gfTsKLSAgICAgICAgICAgIGF1dG8gbGF5b3V0UmVzdWx0ID0gaW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQubGF5b3V0SW5GbG93QW5kRmxvYXRDb250ZW50KHsgY29uc3RyYWludHNGb3JJbkZs
b3dDb250ZW50LCB7IH0gfSwgaW5saW5lTGF5b3V0U3RhdGUpOworICAgICAgICAgICAgYXV0byBs
YXlvdXRSZXN1bHQgPSBpbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5sYXlvdXQoeyBjb25zdHJhaW50
c0ZvckluRmxvd0NvbnRlbnQsIHsgfSB9LCBpbmxpbmVMYXlvdXRTdGF0ZSk7CiAgICAgICAgICAg
ICByZXR1cm4gTGF5b3V0VW5pdCB7IGxheW91dFJlc3VsdC5kaXNwbGF5Q29udGVudC5saW5lcy5s
YXN0KCkubGluZUJveExvZ2ljYWxSZWN0KCkubWF4WSgpIH07CiAgICAgICAgIH07CiAgICAgICAg
IGF1dG8gdXNlZENyb3NzU2l6ZSA9IGNyb3NzU2l6ZUFmdGVyUGVyZm9ybWluZ0xheW91dCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4
IGJkYjI4OGJjMmI5ZS4uOWZiYjcyZTljNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC02NywxMCArNjcsMTAgQEAgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IEVsZW1lbnRCb3gm
IGZvcm1hdHRpbmdDb24KIHsKIH0KIAotSW5saW5lTGF5b3V0UmVzdWx0IElubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpsYXlvdXRJbkZsb3dBbmRGbG9hdENvbnRlbnQoY29uc3QgQ29uc3RyYWludHNG
b3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50cywgSW5saW5lTGF5b3V0U3RhdGUmIGlubGluZUxh
eW91dFN0YXRlLCBjb25zdCBJbmxpbmVEYW1hZ2UqIGxpbmVEYW1hZ2UpCitJbmxpbmVMYXlvdXRS
ZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dChjb25zdCBDb25zdHJhaW50c0Zv
cklubGluZUNvbnRlbnQmIGNvbnN0cmFpbnRzLCBJbmxpbmVMYXlvdXRTdGF0ZSYgaW5saW5lTGF5
b3V0U3RhdGUsIGNvbnN0IElubGluZURhbWFnZSogbGluZURhbWFnZSkKIHsKICAgICBhdXRvJiBm
bG9hdGluZ1N0YXRlID0gaW5saW5lTGF5b3V0U3RhdGUucGFyZW50QmxvY2tMYXlvdXRTdGF0ZSgp
LmZsb2F0aW5nU3RhdGUoKTsKLSAgICBpZiAoIXJvb3QoKS5oYXNJbkZsb3dDaGlsZCgpKSB7Cisg
ICAgaWYgKCFyb290KCkuaGFzSW5GbG93Q2hpbGQoKSAmJiAhcm9vdCgpLmhhc091dE9mRmxvd0No
aWxkKCkpIHsKICAgICAgICAgLy8gRmxvYXQgb25seSBjb250ZW50IGRvZXMgbm90IHN1cHBvcnQg
cGFydGlhbCBsYXlvdXQuCiAgICAgICAgIEFTU0VSVCghbGluZURhbWFnZSk7CiAgICAgICAgIGxh
eW91dEZsb2F0Q29udGVudE9ubHkoY29uc3RyYWludHMsIGZsb2F0aW5nU3RhdGUpOwpAQCAtMTE0
LDEyICsxMTQsNiBAQCBJbmxpbmVMYXlvdXRSZXN1bHQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OmxheW91dEluRmxvd0FuZEZsb2F0Q29udGVudChjb25zdCBDbwogICAgIHJldHVybiBsaW5lTGF5
b3V0KGxpbmVCdWlsZGVyLCBpbmxpbmVJdGVtcywgbmVlZHNMYXlvdXRSYW5nZSwgcHJldmlvdXNM
aW5lKCksIGNvbnN0cmFpbnRzLCBpbmxpbmVMYXlvdXRTdGF0ZSwgbGluZURhbWFnZSk7CiB9CiAK
LXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dE91dE9mRmxvd0NvbnRlbnQoY29u
c3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiBjb25zdHJhaW50cywgSW5saW5lTGF5b3V0
U3RhdGUmIGlubGluZUxheW91dFN0YXRlLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBp
bmxpbmVEaXNwbGF5Q29udGVudCkKLXsKLSAgICAvLyBDb2xsZWN0aW5nIG91dC1vZi1mbG93IGJv
eGVzIGhhcHBlbnMgZHVyaW5nIHRoZSBpbi1mbG93IHBoYXNlLgotICAgIGNvbXB1dGVTdGF0aWNQ
b3NpdGlvbkZvck91dE9mRmxvd0NvbnRlbnQoZm9ybWF0dGluZ1N0YXRlKCkub3V0T2ZGbG93Qm94
ZXMoKSwgY29uc3RyYWludHMsIGlubGluZURpc3BsYXlDb250ZW50LCBpbmxpbmVMYXlvdXRTdGF0
ZS5wYXJlbnRCbG9ja0xheW91dFN0YXRlKCkuZmxvYXRpbmdTdGF0ZSgpKTsKLX0KLQogSW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRy
aW5zaWNTaXplcyhjb25zdCBJbmxpbmVEYW1hZ2UqIGxpbmVEYW1hZ2UpCiB7CiAgICAgYXV0byYg
aW5saW5lRm9ybWF0dGluZ1N0YXRlID0gZm9ybWF0dGluZ1N0YXRlKCk7CkBAIC0yNDMsMjYgKzIz
Nyw2IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEZsb2F0Q29udGVudE9u
bHkoY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDCiAgICAgfQogfQogCi12b2lkIElubGluZUZv
cm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50
KGNvbnN0IEZvcm1hdHRpbmdTdGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCYgb3V0T2ZGbG93Qm94ZXMs
IGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3RyYWludHMsIGNvbnN0IElu
bGluZURpc3BsYXk6OkNvbnRlbnQmIGRpc3BsYXlDb250ZW50LCBjb25zdCBGbG9hdGluZ1N0YXRl
JiBmbG9hdGluZ1N0YXRlKQotewotICAgIC8vIFRoaXMgZnVuY3Rpb24gY29tcHV0ZXMgdGhlIHN0
YXRpYyBwb3NpdGlvbiBmb3Igb3V0LW9mLWZsb3cgY29udGVudCBpbnNpZGUgdGhlIGlubGluZSBm
b3JtYXR0aW5nIGNvbnRleHQuCi0gICAgLy8gQXMgcGVyIHNwZWMsIHRoZSBzdGF0aWMgcG9zaXRp
b24gb2YgYW4gb3V0LW9mLWZsb3cgYm94IGlzIGNvbXB1dGVkIGFzIGlmIHRoZSBwb3NpdGlvbiB3
YXMgc2V0IHRvIHN0YXRpYy4KLSAgICAvLyBIb3dldmVyIGl0IGRvZXMgbm90IG1lYW4gdGhhdCB0
aGUgb3V0LW9mLWZsb3cgYm94IHNob3VsZCBiZSBpbnZvbHZlZCBpbiB0aGUgaW5saW5lIGxheW91
dCBwcm9jZXNzLgotICAgIC8vIEluc3RlYWQgd2UgZmlndXJlIG91dCB0aGlzIHN0YXRpYyBwb3Np
dGlvbiBhZnRlciB0aGUgaW5saW5lIGxheW91dCBieSBsb29raW5nIGF0IHRoZSBwcmV2aW91cy9u
ZXh0IHNpYmxpbmcgKG9yIHBhcmVudCkgYm94J3MgZ2VvbWV0cnkgYW5kCi0gICAgLy8gcGxhY2Ug
dGhlIG91dC1vZi1mbG93IGJveCBhdCB0aGUgbG9naWNhbCByaWdodCBwb3NpdGlvbi4KLSAgICBh
dXRvJiBmb3JtYXR0aW5nR2VvbWV0cnkgPSB0aGlzLT5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKLSAg
ICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKLSAgICBh
dXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29udGV4dCB7ICp0aGlzLCBmbG9hdGluZ1N0
YXRlIH07Ci0KLSAgICBmb3IgKGF1dG8mIG91dE9mRmxvd0JveCA6IG91dE9mRmxvd0JveGVzKSB7
Ci0gICAgICAgIGlmIChvdXRPZkZsb3dCb3gtPnN0eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxp
bmVUeXBlKCkpIHsKLSAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5ib3hHZW9tZXRyeShvdXRP
ZkZsb3dCb3gpLnNldExvZ2ljYWxUb3BMZWZ0KGZvcm1hdHRpbmdHZW9tZXRyeS5zdGF0aWNQb3Np
dGlvbkZvck91dE9mRmxvd0lubGluZUxldmVsQm94KG91dE9mRmxvd0JveCwgY29uc3RyYWludHMs
IGRpc3BsYXlDb250ZW50LCBmbG9hdGluZ0NvbnRleHQpKTsKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICB9Ci0gICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5ib3hHZW9tZXRyeShvdXRPZkZs
b3dCb3gpLnNldExvZ2ljYWxUb3BMZWZ0KGZvcm1hdHRpbmdHZW9tZXRyeS5zdGF0aWNQb3NpdGlv
bkZvck91dE9mRmxvd0Jsb2NrTGV2ZWxCb3gob3V0T2ZGbG93Qm94LCBjb25zdHJhaW50cywgZGlz
cGxheUNvbnRlbnQpKTsKLSAgICB9Ci19Ci0KIHN0YXRpYyBMaW5lRW5kaW5nRWxsaXBzaXNQb2xp
Y3kgbGluZUVuZGluZ0VsbGlwc2lzUG9saWN5KGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUs
IHNpemVfdCBudW1iZXJPZkxpbmVzLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbnVtYmVyT2ZWaXNp
YmxlTGluZXNBbGxvd2VkKQogewogICAgIC8vIFdlIG1heSBoYXZlIHBhc3NlZCB0aGUgbGluZS1j
bGFtcCBsaW5lIHdpdGggb3ZlcmZsb3cgdmlzaWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDExNDA2OGYxYTc1Mi4uZDhiYjEyYmQwYTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAg
LTU5LDggKzU5LDcgQEAgY2xhc3MgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQgZmluYWwgOiBwdWJs
aWMgRm9ybWF0dGluZ0NvbnRleHQgewogcHVibGljOgogICAgIElubGluZUZvcm1hdHRpbmdDb250
ZXh0KGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgSW5saW5lRm9ybWF0
dGluZ1N0YXRlJik7CiAKLSAgICBJbmxpbmVMYXlvdXRSZXN1bHQgbGF5b3V0SW5GbG93QW5kRmxv
YXRDb250ZW50KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYsIElubGluZUxheW91
dFN0YXRlJiwgY29uc3QgSW5saW5lRGFtYWdlKiA9IG51bGxwdHIpOwotICAgIHZvaWQgbGF5b3V0
T3V0T2ZGbG93Q29udGVudChjb25zdCBDb25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmLCBJbmxp
bmVMYXlvdXRTdGF0ZSYsIGNvbnN0IElubGluZURpc3BsYXk6OkNvbnRlbnQmKTsKKyAgICBJbmxp
bmVMYXlvdXRSZXN1bHQgbGF5b3V0KGNvbnN0IENvbnN0cmFpbnRzRm9ySW5saW5lQ29udGVudCYs
IElubGluZUxheW91dFN0YXRlJiwgY29uc3QgSW5saW5lRGFtYWdlKiA9IG51bGxwdHIpOwogICAg
IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgY29tcHV0ZWRJbnRyaW5zaWNTaXplcyhjb25zdCBJ
bmxpbmVEYW1hZ2UqKTsKICAgICBMYXlvdXRVbml0IG1heGltdW1Db250ZW50U2l6ZSgpOwogCkBA
IC03MSw3ICs3MCw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSW5saW5lTGF5b3V0UmVzdWx0
IGxpbmVMYXlvdXQoQWJzdHJhY3RMaW5lQnVpbGRlciYsIGNvbnN0IElubGluZUl0ZW1zJiwgSW5s
aW5lSXRlbVJhbmdlLCBzdGQ6Om9wdGlvbmFsPFByZXZpb3VzTGluZT4sIGNvbnN0IENvbnN0cmFp
bnRzRm9ySW5saW5lQ29udGVudCYsIElubGluZUxheW91dFN0YXRlJiwgY29uc3QgSW5saW5lRGFt
YWdlKiA9IG51bGxwdHIpOwogICAgIHZvaWQgbGF5b3V0RmxvYXRDb250ZW50T25seShjb25zdCBD
b25zdHJhaW50c0ZvcklubGluZUNvbnRlbnQmLCBGbG9hdGluZ1N0YXRlJik7Ci0gICAgdm9pZCBj
b21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGNvbnN0IEZvcm1hdHRpbmdT
dGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCYsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVu
dCYsIGNvbnN0IElubGluZURpc3BsYXk6OkNvbnRlbnQmLCBjb25zdCBGbG9hdGluZ1N0YXRlJik7
CiAKICAgICB2b2lkIGNvbGxlY3RDb250ZW50SWZOZWVkZWQoKTsKICAgICBJbmxpbmVSZWN0IGNy
ZWF0ZURpc3BsYXlDb250ZW50Rm9yTGluZShzaXplX3QgbGluZUluZGV4LCBjb25zdCBMaW5lTGF5
b3V0UmVzdWx0JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbmxpbmVDb250ZW50JiwgY29uc3QgSW5s
aW5lTGF5b3V0U3RhdGUmLCBJbmxpbmVEaXNwbGF5OjpDb250ZW50Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCAzZWNhYzNjYzc1
MmIuLjA5YWI2OTQxMjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnkuY3BwCkBAIC0yMDksMTc0ICsyMDksNiBAQCBJbmxpbmVMYXlvdXRVbml0
IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRUZXh0SW5kZW50KElzSW50cmluc2lj
V2lkdGhNbwogICAgIHJldHVybiB7IG1pbmltdW1WYWx1ZUZvckxlbmd0aCh0ZXh0SW5kZW50LCBh
dmFpbGFibGVXaWR0aCkgfTsKIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBmaXJz
dERpc3BsYXlCb3hJbmRleEZvckxheW91dEJveChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3Qg
SW5saW5lRGlzcGxheTo6Qm94ZXMmIGRpc3BsYXlCb3hlcykKLXsKLSAgICAvLyBGSVhNRTogQnVp
bGQgYSBmaXJzdC9sYXN0IGhhc2htYXAgZm9yIHRoZXNlIGJveGVzLgotICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBkaXNwbGF5Qm94ZXMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAg
ICAgIGlmIChkaXNwbGF5Qm94ZXNbaW5kZXhdLmlzUm9vdElubGluZUJveCgpKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGlmICgmZGlzcGxheUJveGVzW2luZGV4XS5sYXlvdXRCb3go
KSA9PSAmbGF5b3V0Qm94KQotICAgICAgICAgICAgcmV0dXJuIGluZGV4OwotICAgIH0KLSAgICBy
ZXR1cm4geyB9OwotfQotCi1zdGF0aWMgc3RkOjpvcHRpb25hbDxzaXplX3Q+IGxhc3REaXNwbGF5
Qm94SW5kZXhGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IElubGluZURp
c3BsYXk6OkJveGVzJiBkaXNwbGF5Qm94ZXMpCi17Ci0gICAgLy8gRklYTUU6IEJ1aWxkIGEgZmly
c3QvbGFzdCBoYXNobWFwIGZvciB0aGVzZSBib3hlcy4KLSAgICBmb3IgKGF1dG8gaW5kZXggPSBk
aXNwbGF5Qm94ZXMuc2l6ZSgpOyBpbmRleC0tOykgewotICAgICAgICBpZiAoZGlzcGxheUJveGVz
W2luZGV4XS5pc1Jvb3RJbmxpbmVCb3goKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICBpZiAoJmRpc3BsYXlCb3hlc1tpbmRleF0ubGF5b3V0Qm94KCkgPT0gJmxheW91dEJveCkKLSAg
ICAgICAgICAgIHJldHVybiBpbmRleDsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBwcmV2aW91c0Rpc3BsYXlCb3hJbmRleChjb25zdCBC
b3gmIG91dE9mRmxvd0JveCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGRpc3BsYXlCb3hl
cykKLXsKLSAgICBhdXRvIHByZXZpb3VzRGlzcGxheUJveEluZGV4T2YgPSBbJl0gKGF1dG8mIGxh
eW91dEJveCkgLT4gc3RkOjpvcHRpb25hbDxzaXplX3Q+IHsKLSAgICAgICAgZm9yIChhdXRvKiBi
b3ggPSAmbGF5b3V0Qm94OyBib3g7IGJveCA9IGJveC0+cHJldmlvdXNJbkZsb3dTaWJsaW5nKCkp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvIGRpc3BsYXlCb3hJbmRleCA9IGxhc3REaXNwbGF5Qm94
SW5kZXhGb3JMYXlvdXRCb3goKmJveCwgZGlzcGxheUJveGVzKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZGlzcGxheUJveEluZGV4OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB7IH07Ci0g
ICAgfTsKLQotICAgIGF1dG8qIGNhbmRpZGF0ZUJveCA9IG91dE9mRmxvd0JveC5wcmV2aW91c0lu
Rmxvd1NpYmxpbmcoKTsKLSAgICBpZiAoIWNhbmRpZGF0ZUJveCkKLSAgICAgICAgY2FuZGlkYXRl
Qm94ID0gb3V0T2ZGbG93Qm94LnBhcmVudCgpLmlzSW5saW5lQm94KCkgPyAmb3V0T2ZGbG93Qm94
LnBhcmVudCgpIDogbnVsbHB0cjsKLSAgICB3aGlsZSAoY2FuZGlkYXRlQm94KSB7Ci0gICAgICAg
IGlmIChhdXRvIGRpc3BsYXlCb3hJbmRleCA9IHByZXZpb3VzRGlzcGxheUJveEluZGV4T2YoKmNh
bmRpZGF0ZUJveCkpCi0gICAgICAgICAgICByZXR1cm4gZGlzcGxheUJveEluZGV4OwotICAgICAg
ICBjYW5kaWRhdGVCb3ggPSBjYW5kaWRhdGVCb3gtPnBhcmVudCgpLmlzSW5saW5lQm94KCkgPyAm
Y2FuZGlkYXRlQm94LT5wYXJlbnQoKSA6IG51bGxwdHI7Ci0gICAgfQotICAgIHJldHVybiB7IH07
Ci19Ci0KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gbmV4dERpc3BsYXlCb3hJbmRleChj
b25zdCBCb3gmIG91dE9mRmxvd0JveCwgY29uc3QgSW5saW5lRGlzcGxheTo6Qm94ZXMmIGRpc3Bs
YXlCb3hlcykKLXsKLSAgICBhdXRvIG5leHREaXNwbGF5Qm94SW5kZXhPZiA9IFsmXSAoYXV0byYg
bGF5b3V0Qm94KSAtPiBzdGQ6Om9wdGlvbmFsPHNpemVfdD4gewotICAgICAgICBmb3IgKGF1dG8q
IGJveCA9ICZsYXlvdXRCb3g7IGJveDsgYm94ID0gYm94LT5uZXh0SW5GbG93U2libGluZygpKSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byBkaXNwbGF5Qm94SW5kZXggPSBmaXJzdERpc3BsYXlCb3hJ
bmRleEZvckxheW91dEJveCgqYm94LCBkaXNwbGF5Qm94ZXMpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBkaXNwbGF5Qm94SW5kZXg7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHsgfTsKLSAg
ICB9OwotCi0gICAgYXV0byogY2FuZGlkYXRlQm94ID0gb3V0T2ZGbG93Qm94Lm5leHRJbkZsb3dT
aWJsaW5nKCk7Ci0gICAgaWYgKCFjYW5kaWRhdGVCb3gpCi0gICAgICAgIGNhbmRpZGF0ZUJveCA9
IG91dE9mRmxvd0JveC5wYXJlbnQoKS5pc0lubGluZUJveCgpID8gb3V0T2ZGbG93Qm94LnBhcmVu
dCgpLm5leHRJbkZsb3dTaWJsaW5nKCkgOiBudWxscHRyOwotICAgIHdoaWxlIChjYW5kaWRhdGVC
b3gpIHsKLSAgICAgICAgaWYgKGF1dG8gZGlzcGxheUJveEluZGV4ID0gbmV4dERpc3BsYXlCb3hJ
bmRleE9mKCpjYW5kaWRhdGVCb3gpKQotICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlCb3hJbmRl
eDsKLSAgICAgICAgY2FuZGlkYXRlQm94ID0gY2FuZGlkYXRlQm94LT5wYXJlbnQoKS5pc0lubGlu
ZUJveCgpID8gY2FuZGlkYXRlQm94LT5wYXJlbnQoKS5uZXh0SW5GbG93U2libGluZygpIDogbnVs
bHB0cjsKLSAgICB9Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotSW5saW5lTGF5b3V0VW5pdCBJbmxp
bmVGb3JtYXR0aW5nR2VvbWV0cnk6OmNvbnRlbnRMZWZ0QWZ0ZXJMYXN0TGluZShjb25zdCBDb25z
dHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBzdGQ6Om9wdGlvbmFsPElubGlu
ZUxheW91dFVuaXQ+IGxhc3RMaW5lTG9naWNhbEJvdHRvbSwgY29uc3QgRmxvYXRpbmdDb250ZXh0
JiBmbG9hdGluZ0NvbnRleHQpIGNvbnN0Ci17Ci0gICAgYXV0byBjb250ZW50SGFzUHJldmlvdXNM
aW5lID0gbGFzdExpbmVMb2dpY2FsQm90dG9tID8gc3RkOjptYWtlX29wdGlvbmFsKHRydWUpIDog
c3RkOjpudWxsb3B0OwotICAgIGF1dG8gdGV4dEluZGVudCA9IGNvbXB1dGVkVGV4dEluZGVudChJ
c0ludHJpbnNpY1dpZHRoTW9kZTo6Tm8sIGNvbnRlbnRIYXNQcmV2aW91c0xpbmUsIGNvbnN0cmFp
bnRzLmhvcml6b250YWwoKS5sb2dpY2FsV2lkdGgpOwotICAgIGF1dG8gZmxvYXRDb25zdHJhaW50
cyA9IGZsb2F0Q29uc3RyYWludHNGb3JMaW5lKGxhc3RMaW5lTG9naWNhbEJvdHRvbS52YWx1ZV9v
cihjb25zdHJhaW50cy5sb2dpY2FsVG9wKCkpLCAwLCBmbG9hdGluZ0NvbnRleHQpOwotICAgIGF1
dG8gbGluZUJveExlZnQgPSBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQ7Ci0g
ICAgYXV0byBsaW5lQm94V2lkdGggPSBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbFdp
ZHRoOwotICAgIC8vIEZJWE1FOiBBZGQgbWlzc2luZyBSVEwgc3VwcG9ydC4KLSAgICBpZiAoZmxv
YXRDb25zdHJhaW50cy5sZWZ0KSB7Ci0gICAgICAgIGF1dG8gZmxvYXRPZmZzZXQgPSBzdGQ6Om1h
eCgwX2x1LCBmbG9hdENvbnN0cmFpbnRzLmxlZnQtPnggLSBjb25zdHJhaW50cy5ob3Jpem9udGFs
KCkubG9naWNhbExlZnQpOwotICAgICAgICBsaW5lQm94TGVmdCArPSBmbG9hdE9mZnNldDsKLSAg
ICAgICAgbGluZUJveFdpZHRoIC09IGZsb2F0T2Zmc2V0OwotICAgIH0KLSAgICBpZiAoZmxvYXRD
b25zdHJhaW50cy5yaWdodCkgewotICAgICAgICBhdXRvIGxpbmVCb3hSaWdodCA9IChjb25zdHJh
aW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQgKyBjb25zdHJhaW50cy5ob3Jpem9udGFsKCku
bG9naWNhbFdpZHRoKTsKLSAgICAgICAgYXV0byBmbG9hdE9mZnNldCA9IHN0ZDo6bWF4KDBfbHUs
IGxpbmVCb3hSaWdodCAtIGZsb2F0Q29uc3RyYWludHMucmlnaHQtPngpOwotICAgICAgICBsaW5l
Qm94V2lkdGggLT0gZmxvYXRPZmZzZXQ7Ci0gICAgfQotICAgIGxpbmVCb3hMZWZ0ICs9IHRleHRJ
bmRlbnQ7Ci0gICAgYXV0byByb290SW5saW5lQm94TGVmdCA9IGhvcml6b250YWxBbGlnbm1lbnRP
ZmZzZXQoZm9ybWF0dGluZ0NvbnRleHQoKS5yb290KCkuc3R5bGUoKSwgeyB9LCBsaW5lQm94V2lk
dGgsIHsgfSwgeyB9LCB0cnVlKTsKLSAgICByZXR1cm4gbGluZUJveExlZnQgKyByb290SW5saW5l
Qm94TGVmdDsKLX0KLQotTGF5b3V0UG9pbnQgSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5OjpzdGF0
aWNQb3NpdGlvbkZvck91dE9mRmxvd0lubGluZUxldmVsQm94KGNvbnN0IEJveCYgb3V0T2ZGbG93
Qm94LCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBjb25z
dCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCwgY29uc3QgRmxvYXRpbmdD
b250ZXh0JiBmbG9hdGluZ0NvbnRleHQpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKG91dE9mRmxvd0Jv
eC5zdHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5SW5saW5lVHlwZSgpKTsKLSAgICBhdXRvJiBsaW5l
cyA9IGRpc3BsYXlDb250ZW50LmxpbmVzOwotICAgIGF1dG8mIGJveGVzID0gZGlzcGxheUNvbnRl
bnQuYm94ZXM7Ci0KLSAgICBpZiAobGluZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVChi
b3hlcy5pc0VtcHR5KCkpOwotICAgICAgICByZXR1cm4geyBjb250ZW50TGVmdEFmdGVyTGFzdExp
bmUoY29uc3RyYWludHMsIHsgfSwgZmxvYXRpbmdDb250ZXh0KSwgY29uc3RyYWludHMubG9naWNh
bFRvcCgpIH07Ci0gICAgfQotCi0gICAgYXV0byBpc0hvcml6b250YWxXcml0aW5nTW9kZSA9IGZv
cm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLnN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KTsKLSAgICBhdXRvIGxlZnRTaWRlVG9Mb2dpY2FsVG9wTGVmdCA9IFsmXSAoYXV0byYgZGlzcGxh
eUJveCwgYXV0byYgbGluZSwgYm9vbCBtYXlOZWVkTWFyZ2luQWRqdXN0bWVudCA9IHRydWUpIHsK
LSAgICAgICAgYXV0byBtYXJnaW5TdGFydCA9IExheW91dFVuaXQgeyB9OwotICAgICAgICBpZiAo
bWF5TmVlZE1hcmdpbkFkanVzdG1lbnQgJiYgZGlzcGxheUJveC5pc05vblJvb3RJbmxpbmVMZXZl
bEJveCgpKQotICAgICAgICAgICAgbWFyZ2luU3RhcnQgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdl
b21ldHJ5Rm9yQm94KGRpc3BsYXlCb3gubGF5b3V0Qm94KCkpLm1hcmdpblN0YXJ0KCk7Ci0gICAg
ICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSA/IExheW91dFBvaW50KGRpc3BsYXlC
b3gubGVmdCgpIC0gbWFyZ2luU3RhcnQsIGxpbmUudG9wKCkpIDogTGF5b3V0UG9pbnQoZGlzcGxh
eUJveC50b3AoKSAtIG1hcmdpblN0YXJ0LCBsaW5lLmxlZnQoKSk7Ci0gICAgfTsKLSAgICBhdXRv
IHJpZ2h0U2lkZVRvTG9naWNhbFRvcExlZnQgPSBbJl0gKGF1dG8mIGRpc3BsYXlCb3gsIGF1dG8m
IGxpbmUpIHsKLSAgICAgICAgYXV0byBtYXJnaW5FbmQgPSBMYXlvdXRVbml0IHsgfTsKLSAgICAg
ICAgaWYgKGRpc3BsYXlCb3guaXNOb25Sb290SW5saW5lTGV2ZWxCb3goKSkKLSAgICAgICAgICAg
IG1hcmdpbkVuZCA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goZGlzcGxheUJv
eC5sYXlvdXRCb3goKSkubWFyZ2luRW5kKCk7Ci0gICAgICAgIHJldHVybiBpc0hvcml6b250YWxX
cml0aW5nTW9kZSA/IExheW91dFBvaW50KGRpc3BsYXlCb3gucmlnaHQoKSArIG1hcmdpbkVuZCwg
bGluZS50b3AoKSkgOiBMYXlvdXRQb2ludChkaXNwbGF5Qm94LmJvdHRvbSgpICsgbWFyZ2luRW5k
LCBsaW5lLmxlZnQoKSk7Ci0gICAgfTsKLQotICAgIGF1dG8gcHJldmlvdXNEaXNwbGF5Qm94SW5k
ZXhCZWZvcmVPdXRPZkZsb3dCb3ggPSBwcmV2aW91c0Rpc3BsYXlCb3hJbmRleChvdXRPZkZsb3dC
b3gsIGJveGVzKTsKLSAgICBpZiAoIXByZXZpb3VzRGlzcGxheUJveEluZGV4QmVmb3JlT3V0T2ZG
bG93Qm94KQotICAgICAgICByZXR1cm4gbGVmdFNpZGVUb0xvZ2ljYWxUb3BMZWZ0KGJveGVzWzBd
LCBsaW5lc1swXSk7Ci0KLSAgICBhdXRvJiBwcmV2aW91c0Rpc3BsYXlCb3ggPSBib3hlc1sqcHJl
dmlvdXNEaXNwbGF5Qm94SW5kZXhCZWZvcmVPdXRPZkZsb3dCb3hdOwotICAgIGF1dG8mIGN1cnJl
bnRMaW5lID0gbGluZXNbcHJldmlvdXNEaXNwbGF5Qm94LmxpbmVJbmRleCgpXTsKLSAgICBpZiAo
cHJldmlvdXNEaXNwbGF5Qm94LmlzSW5saW5lQm94KCkgJiYgJm91dE9mRmxvd0JveC5wYXJlbnQo
KSA9PSAmcHJldmlvdXNEaXNwbGF5Qm94LmxheW91dEJveCgpKSB7Ci0gICAgICAgIC8vIFNwZWNp
YWwgaGFuZGxpbmcgZm9yIGNhc2VzIHdoZW4gdGhpcyBpcyB0aGUgZmlyc3QgYm94IGluc2lkZSBh
biBpbmxpbmUgYm94OgotICAgICAgICAvLyA8ZGl2PnRleHQ8c3Bhbj48aW1nIHN0eWxlPSJwb3Np
dGlvbjogYWJzb2x1dGUiPmNvbnRlbnQ8L3NwYW4+PC9kaXY+Ci0gICAgICAgIGF1dG8mIGlubGlu
ZUJveCA9IHByZXZpb3VzRGlzcGxheUJveC5sYXlvdXRCb3goKTsKLSAgICAgICAgYXV0byBpbmxp
bmVCb3hEaXNwbGF5Qm94ID0gYm94ZXNbKmZpcnN0RGlzcGxheUJveEluZGV4Rm9yTGF5b3V0Qm94
KGlubGluZUJveCwgYm94ZXMpXTsKLSAgICAgICAgYXV0byBpbmxpbmVDb250ZW50Qm94T2Zmc2V0
ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChpbmxpbmVCb3gpLmJvcmRlckFu
ZFBhZGRpbmdTdGFydCgpOwotICAgICAgICBpZiAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUpCi0g
ICAgICAgICAgICBpbmxpbmVCb3hEaXNwbGF5Qm94Lm1vdmVIb3Jpem9udGFsbHkoaW5saW5lQ29u
dGVudEJveE9mZnNldCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGlubGluZUJveERpc3Bs
YXlCb3gubW92ZVZlcnRpY2FsbHkoaW5saW5lQ29udGVudEJveE9mZnNldCk7Ci0gICAgICAgIHJl
dHVybiBsZWZ0U2lkZVRvTG9naWNhbFRvcExlZnQoaW5saW5lQm94RGlzcGxheUJveCwgbGluZXNb
aW5saW5lQm94RGlzcGxheUJveC5saW5lSW5kZXgoKV0sIGZhbHNlKTsKLSAgICB9Ci0KLSAgICBh
dXRvIHByZXZpb3VzQm94T3ZlcmZsb3dzID0gKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gcHJl
dmlvdXNEaXNwbGF5Qm94LnJpZ2h0KCkgPiBjdXJyZW50TGluZS5yaWdodCgpIDogcHJldmlvdXNE
aXNwbGF5Qm94LmJvdHRvbSgpID4gY3VycmVudExpbmUuYm90dG9tKCkpIHx8IHByZXZpb3VzRGlz
cGxheUJveC5pc0xpbmVCcmVha0JveCgpOwotICAgIGlmICghcHJldmlvdXNCb3hPdmVyZmxvd3Mp
Ci0gICAgICAgIHJldHVybiByaWdodFNpZGVUb0xvZ2ljYWxUb3BMZWZ0KHByZXZpb3VzRGlzcGxh
eUJveCwgY3VycmVudExpbmUpOwotCi0gICAgYXV0byBuZXh0RGlzcGxheUJveEluZGV4QWZ0ZXJP
dXRPZkZsb3cgPSBuZXh0RGlzcGxheUJveEluZGV4KG91dE9mRmxvd0JveCwgYm94ZXMpOwotICAg
IGlmICghbmV4dERpc3BsYXlCb3hJbmRleEFmdGVyT3V0T2ZGbG93KSB7Ci0gICAgICAgIC8vIFRo
aXMgaXMgdGhlIGxhc3QgY29udGVudCBvbiB0aGUgYmxvY2sgYW5kIGl0IGRvZXMgbm90IGZpdCB0
aGUgbGFzdCBsaW5lLgotICAgICAgICByZXR1cm4geyBjb250ZW50TGVmdEFmdGVyTGFzdExpbmUo
Y29uc3RyYWludHMsIGN1cnJlbnRMaW5lLmJvdHRvbSgpLCBmbG9hdGluZ0NvbnRleHQpLCBpc0hv
cml6b250YWxXcml0aW5nTW9kZSA/IGN1cnJlbnRMaW5lLmJvdHRvbSgpIDogY3VycmVudExpbmUu
cmlnaHQoKSB9OwotICAgIH0KLSAgICBhdXRvJiBuZXh0RGlzcGxheUJveCA9IGJveGVzWypuZXh0
RGlzcGxheUJveEluZGV4QWZ0ZXJPdXRPZkZsb3ddOwotICAgIHJldHVybiBsZWZ0U2lkZVRvTG9n
aWNhbFRvcExlZnQobmV4dERpc3BsYXlCb3gsIGxpbmVzW25leHREaXNwbGF5Qm94LmxpbmVJbmRl
eCgpXSk7Ci19Ci0KLUxheW91dFBvaW50IElubGluZUZvcm1hdHRpbmdHZW9tZXRyeTo6c3RhdGlj
UG9zaXRpb25Gb3JPdXRPZkZsb3dCbG9ja0xldmVsQm94KGNvbnN0IEJveCYgb3V0T2ZGbG93Qm94
LCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzLCBjb25zdCBJ
bmxpbmVEaXNwbGF5OjpDb250ZW50JiBkaXNwbGF5Q29udGVudCkgY29uc3QKLXsKLSAgICBBU1NF
UlQob3V0T2ZGbG93Qm94LnN0eWxlKCkuaXNEaXNwbGF5QmxvY2tMZXZlbCgpKTsKLQotICAgIGF1
dG8gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgPSBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKS5z
dHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7Ci0gICAgYXV0byYgbGluZXMgPSBkaXNw
bGF5Q29udGVudC5saW5lczsKLSAgICBhdXRvJiBib3hlcyA9IGRpc3BsYXlDb250ZW50LmJveGVz
OwotICAgIGF1dG8gY29udGVudEJveFRvcExlZnQgPSBMYXlvdXRQb2ludCB7IGNvbnN0cmFpbnRz
Lmhvcml6b250YWwoKS5sb2dpY2FsTGVmdCwgY29uc3RyYWludHMubG9naWNhbFRvcCgpIH07Ci0K
LSAgICBpZiAobGluZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVChib3hlcy5pc0VtcHR5
KCkpOwotICAgICAgICByZXR1cm4gY29udGVudEJveFRvcExlZnQ7Ci0gICAgfQotCi0gICAgLy8g
QmxvY2sgbGV2ZWwgYm94ZXMgYXJlIHBsYWNlZCB1bmRlciB0aGUgY3VycmVudCBsaW5lIGFzIGlm
IHRoZXkgd2VyZSBub3JtYWwgaW5mbG93IGJsb2NrIGxldmVsIGJveGVzLgotICAgIGF1dG8gcHJl
dmlvdXNEaXNwbGF5Qm94SW5kZXhCZWZvcmVPdXRPZkZsb3dCb3ggPSBwcmV2aW91c0Rpc3BsYXlC
b3hJbmRleChvdXRPZkZsb3dCb3gsIGJveGVzKTsKLSAgICBpZiAoIXByZXZpb3VzRGlzcGxheUJv
eEluZGV4QmVmb3JlT3V0T2ZGbG93Qm94KQotICAgICAgICByZXR1cm4geyBjb250ZW50Qm94VG9w
TGVmdC54KCksIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlID8gbGluZXNbMF0udG9wKCkgOiBsaW5l
c1swXS5sZWZ0KCkgfTsKLSAgICBhdXRvJiBjdXJyZW50TGluZSA9IGxpbmVzW2JveGVzWypwcmV2
aW91c0Rpc3BsYXlCb3hJbmRleEJlZm9yZU91dE9mRmxvd0JveF0ubGluZUluZGV4KCldOwotICAg
IHJldHVybiB7IGNvbnRlbnRCb3hUb3BMZWZ0LngoKSwgTGF5b3V0VW5pdCB7IGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlID8gY3VycmVudExpbmUuYm90dG9tKCkgOiBjdXJyZW50TGluZS5yaWdodCgp
IH0gfTsKLX0KLQogSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk6Omlu
aXRpYWxMaW5lSGVpZ2h0KGJvb2wgaXNGaXJzdExpbmUpIGNvbnN0CiB7CiAgICAgaWYgKGxheW91
dFN0YXRlKCkuaW5TdGFuZGFyZHNNb2RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnku
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUZvcm1hdHRpbmdHZW9tZXRyeS5oCmluZGV4IDVhYmRlMWU4MGI3YS4uZTUzNmQ5MzBmMGI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaApAQCAt
NTYsOSArNTYsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSW5saW5lUmVjdCBmbGlwVmlzdWFs
UmVjdFRvTG9naWNhbEZvcldyaXRpbmdNb2RlKGNvbnN0IElubGluZVJlY3QmIHZpc3VhbFJlY3Qs
IFdyaXRpbmdNb2RlKTsKIAotICAgIExheW91dFBvaW50IHN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZG
bG93SW5saW5lTGV2ZWxCb3goY29uc3QgQm94JiwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dD
b250ZW50JiwgY29uc3QgSW5saW5lRGlzcGxheTo6Q29udGVudCYsIGNvbnN0IEZsb2F0aW5nQ29u
dGV4dCYpIGNvbnN0OwotICAgIExheW91dFBvaW50IHN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93
QmxvY2tMZXZlbEJveChjb25zdCBCb3gmLCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRl
bnQmLCBjb25zdCBJbmxpbmVEaXNwbGF5OjpDb250ZW50JikgY29uc3Q7Ci0KICAgICB2b2lkIGFk
anVzdE1hcmdpblN0YXJ0Rm9yTGlzdE1hcmtlcihjb25zdCBFbGVtZW50Qm94JiwgTGF5b3V0VW5p
dCBuZXN0ZWRMaXN0TWFya2VyTWFyZ2luU3RhcnQsIElubGluZUxheW91dFVuaXQgcm9vdElubGlu
ZUJveE9mZnNldCkgY29uc3Q7CiAKICAgICBzdGF0aWMgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9u
dGFsQWxpZ25tZW50T2Zmc2V0KGNvbnN0IFJlbmRlclN0eWxlJiByb290U3R5bGUsIElubGluZUxh
eW91dFVuaXQgY29udGVudExvZ2ljYWxSaWdodCwgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNh
bFJpZ2h0LCBJbmxpbmVMYXlvdXRVbml0IGhhbmdpbmdUcmFpbGluZ1dpZHRoLCBjb25zdCBMaW5l
OjpSdW5MaXN0JiBydW5zLCBib29sIGlzTGFzdExpbmUsIHN0ZDo6b3B0aW9uYWw8VGV4dERpcmVj
dGlvbj4gaW5saW5lQmFzZURpcmVjdGlvbk92ZXJyaWRlID0gc3RkOjpudWxsb3B0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUl0ZW1zQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCmluZGV4IDIzYWU2ZDgwODAyNi4u
MzY2M2RlNDIyOTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUl0ZW1zQnVpbGRlci5j
cHAKQEAgLTg2LDkgKzg2LDcgQEAgSW5saW5lSXRlbXNCdWlsZGVyOjpJbmxpbmVJdGVtc0J1aWxk
ZXIoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LAogdm9pZCBJbmxpbmVJ
dGVtc0J1aWxkZXI6OmJ1aWxkKElubGluZUl0ZW1Qb3NpdGlvbiBzdGFydFBvc2l0aW9uKQogewog
ICAgIElubGluZUl0ZW1zIGlubGluZUl0ZW1zOwotICAgIEZvcm1hdHRpbmdTdGF0ZTo6T3V0T2ZG
bG93Qm94TGlzdCBvdXRPZkZsb3dCb3hlczsKLQotICAgIGNvbGxlY3RJbmxpbmVJdGVtcyhpbmxp
bmVJdGVtcywgb3V0T2ZGbG93Qm94ZXMsIHN0YXJ0UG9zaXRpb24pOworICAgIGNvbGxlY3RJbmxp
bmVJdGVtcyhpbmxpbmVJdGVtcywgc3RhcnRQb3NpdGlvbik7CiAKICAgICBpZiAoIXJvb3QoKS5z
dHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSB8fCBjb250ZW50UmVxdWlyZXNWaXN1YWxS
ZW9yZGVyaW5nKCkpIHsKICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBwYXJ0aWFs
LCB5ZXQgcGFyYWdyYXBoIGxldmVsIGJpZGkgY29udGVudCBoYW5kbGluZy4KQEAgLTEwOSw3ICsx
MDcsNiBAQCB2b2lkIElubGluZUl0ZW1zQnVpbGRlcjo6YnVpbGQoSW5saW5lSXRlbVBvc2l0aW9u
IHN0YXJ0UG9zaXRpb24pCiAgICAgICAgIG1fZm9ybWF0dGluZ1N0YXRlLmFwcGVuZElubGluZUl0
ZW1zKFdURk1vdmUoaW5saW5lSXRlbXMpKTsKICAgICB9OwogICAgIGFkanVzdElubGluZUZvcm1h
dHRpbmdTdGF0ZVdpdGhOZXdJbmxpbmVJdGVtcygpOwotICAgIG1fZm9ybWF0dGluZ1N0YXRlLnNl
dE91dE9mRmxvd0JveGVzKFdURk1vdmUob3V0T2ZGbG93Qm94ZXMpKTsKIAogI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgLy8gQ2hlY2sgaWYgd2UndmUgZ290IG1hdGNoaW5nIGlubGluZSBib3ggc3Rh
cnQvZW5kIHBhaXJzIGFuZCB1bmlxdWUgaW5saW5lIGxldmVsIGl0ZW1zIChub24tdGV4dCwgbm9u
LWlubGluZSBib3ggaXRlbXMpLgpAQCAtMTkxLDcgKzE4OCw3IEBAIHN0YXRpYyBMYXlvdXRRdWV1
ZSBpbml0aWFsaXplTGF5b3V0UXVldWUoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ0NvbnRl
eHRSb290CiAgICAgcmV0dXJuIGxheW91dFF1ZXVlOwogfQogCi12b2lkIElubGluZUl0ZW1zQnVp
bGRlcjo6Y29sbGVjdElubGluZUl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgRm9ybWF0
dGluZ1N0YXRlOjpPdXRPZkZsb3dCb3hMaXN0JiBvdXRPZkZsb3dCb3hlcywgSW5saW5lSXRlbVBv
c2l0aW9uIHN0YXJ0UG9zaXRpb24pCit2b2lkIElubGluZUl0ZW1zQnVpbGRlcjo6Y29sbGVjdElu
bGluZUl0ZW1zKElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgSW5saW5lSXRlbVBvc2l0aW9uIHN0
YXJ0UG9zaXRpb24pCiB7CiAgICAgLy8gVHJhdmVyc2UgdGhlIHRyZWUgYW5kIGNyZWF0ZSBpbmxp
bmUgaXRlbXMgb3V0IG9mIGlubGluZSBib3hlcyBhbmQgbGVhZiBub2Rlcy4gVGhpcyBlc3NlbnRp
YWxseSB0dXJucyB0aGUgdHJlZSBpbmxpbmUgc3RydWN0dXJlIGludG8gYSBmbGF0IG9uZS4KICAg
ICAvLyA8c3Bhbj50ZXh0PHNwYW4+PC9zcGFuPjxpbWc+PC9zcGFuPiAtPiBbSW5saW5lQm94U3Rh
cnRdW0lubGluZUxldmVsQm94XVtJbmxpbmVCb3hTdGFydF1bSW5saW5lQm94RW5kXVtJbmxpbmVM
ZXZlbEJveF1bSW5saW5lQm94RW5kXQpAQCAtMjMzLDkgKzIzMCw4IEBAIHZvaWQgSW5saW5lSXRl
bXNCdWlsZGVyOjpjb2xsZWN0SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBG
b3JtYXR0aW5nCiAgICAgICAgIHdoaWxlICghbGF5b3V0UXVldWUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBhdXRvIGxheW91dEJveCA9IGxheW91dFF1ZXVlLnRha2VMYXN0KCk7CiAgICAgICAg
ICAgICBpZiAobGF5b3V0Qm94LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewotICAgICAgICAg
ICAgICAgIC8vIExldCdzIG5vdCBjb25zdHJ1Y3QgSW5saW5lSXRlbXMgZm9yIG91dC1vZi1mbG93
IGNvbnRlbnQgYXMgdGhleSBkb24ndCBwYXJ0aWNpcGF0ZSBpbiB0aGUgaW5saW5lIGxheW91dC4K
LSAgICAgICAgICAgICAgICAvLyBIb3dldmVyIHRvIGJlIGFibGUgdG8gc3RhdGljIHBvc2l0aW9u
aW5nIHRoZW0sIHdlIG5lZWQgdG8gY29tcHV0ZSB0aGVpciBhcHByb3hpbWF0ZSBwb3NpdGlvbnMu
Ci0gICAgICAgICAgICAgICAgb3V0T2ZGbG93Qm94ZXMuYXBwZW5kKGxheW91dEJveCk7CisgICAg
ICAgICAgICAgICAgbV9pc05vbkJpZGlUZXh0QW5kRm9yY2VkTGluZUJyZWFrT25seUNvbnRlbnQg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpbmxpbmVJdGVtcy5hcHBlbmQoeyBsYXlvdXRCb3gs
IElubGluZUl0ZW06OlR5cGU6Ok9wYXF1ZSB9KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobGF5
b3V0Qm94LT5pc0lubGluZVRleHRCb3goKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGlubGlu
ZVRleHRCb3ggPSBkb3duY2FzdDxJbmxpbmVUZXh0Qm94PihsYXlvdXRCb3gpOwogICAgICAgICAg
ICAgICAgIGhhbmRsZVRleHRDb250ZW50KGlubGluZVRleHRCb3gsIGlubGluZUl0ZW1zLCBwYXJ0
aWFsQ29udGVudE9mZnNldChpbmxpbmVUZXh0Qm94KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUl0ZW1zQnVpbGRlci5oCmluZGV4IDVkOWQ3YWM3ZTI0MC4uNTIyZDE4Mzg3NzVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9Jbmxp
bmVJdGVtc0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVJdGVtc0J1aWxkZXIuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBidWlsZChJbmxpbmVJdGVtUG9zaXRpb24gc3RhcnRQb3NpdGlvbik7CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCBjb2xsZWN0SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmLCBGb3Jt
YXR0aW5nU3RhdGU6Ok91dE9mRmxvd0JveExpc3QmLCBJbmxpbmVJdGVtUG9zaXRpb24gc3RhcnRQ
b3NpdGlvbik7CisgICAgdm9pZCBjb2xsZWN0SW5saW5lSXRlbXMoSW5saW5lSXRlbXMmLCBJbmxp
bmVJdGVtUG9zaXRpb24gc3RhcnRQb3NpdGlvbik7CiAgICAgdm9pZCBicmVha0FuZENvbXB1dGVC
aWRpTGV2ZWxzKElubGluZUl0ZW1zJik7CiAgICAgdm9pZCBjb21wdXRlSW5saW5lVGV4dEl0ZW1X
aWR0aHMoSW5saW5lSXRlbXMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmNwcAppbmRleCAz
M2FmZjkxNDUzMzUuLjQ2ODRlZTg5ZTllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5jcHAK
QEAgLTI2MCw2ICsyNjAsMjcgQEAgdm9pZCBMaW5lOjpoYW5kbGVPdmVyZmxvd2luZ05vbkJyZWFr
aW5nU3BhY2UoVHJhaWxpbmdDb250ZW50QWN0aW9uIHRyYWlsaW5nQ29udGUKICAgICBtX2NvbnRl
bnRMb2dpY2FsV2lkdGggLT0gcmVtb3ZlZE9yQ29sbGFwc2VkQ29udGVudFdpZHRoOwogfQogCitj
b25zdCBCb3gqIExpbmU6OnJlbW92ZU92ZXJmbG93aW5nT3VyT2ZGbG93Q29udGVudCgpCit7Cisg
ICAgYXV0byBsYXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXggPSBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4geyB9OworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gbV9ydW5zLnNpemUoKTsgaW5kZXgtLTsp
IHsKKyAgICAgICAgYXV0byYgcnVuID0gbV9ydW5zW2luZGV4XTsKKyAgICAgICAgaWYgKHJ1bi5p
c09wYXF1ZSgpKSB7CisgICAgICAgICAgICBsYXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXggPSBp
bmRleDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICghcnVu
LmxvZ2ljYWxXaWR0aCgpICYmIChydW4uaXNJbmxpbmVCb3hTdGFydCgpIHx8IHJ1bi5pc0lubGlu
ZUJveEVuZCgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgaWYgKCFsYXN0VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXgpCisgICAgICAgIHJldHVybiB7
IH07CisgICAgYXV0byogbGFzdFRyYWlsaW5nT3BhcXVlQm94ID0gJm1fcnVuc1sqbGFzdFRyYWls
aW5nT3BhcXVlSXRlbUluZGV4XS5sYXlvdXRCb3goKTsKKyAgICBtX3J1bnMucmVtb3ZlKCpsYXN0
VHJhaWxpbmdPcGFxdWVJdGVtSW5kZXgsIG1fcnVucy5zaXplKCkgLSAqbGFzdFRyYWlsaW5nT3Bh
cXVlSXRlbUluZGV4KTsKKyAgICBBU1NFUlQoIW1fcnVucy5pc0VtcHR5KCkpOworICAgIHJldHVy
biBsYXN0VHJhaWxpbmdPcGFxdWVCb3g7Cit9CisKIHZvaWQgTGluZTo6aGFuZGxlVHJhaWxpbmdI
YW5naW5nQ29udGVudChzdGQ6Om9wdGlvbmFsPEludHJpbnNpY1dpZHRoTW9kZT4gaW50cmluc2lj
V2lkdGhNb2RlLCBJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxBdmFpbGFibGVTcGFjZUZvckNv
bnRlbnQsIGJvb2wgaXNMYXN0Rm9ybWF0dGVkTGluZSkKIHsKICAgICAvLyBodHRwczovL2RyYWZ0
cy5jc3N3Zy5vcmcvY3NzLXRleHQvI2hhbmdpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaAppbmRl
eCA0ZDkzZDczNmJmYTguLjdiMmEwNDNjZDJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaApA
QCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6CiAgICAgSW5saW5lTGF5b3V0VW5pdCBoYW5kbGVUcmFp
bGluZ1RyaW1tYWJsZUNvbnRlbnQoVHJhaWxpbmdDb250ZW50QWN0aW9uKTsKICAgICB2b2lkIGhh
bmRsZVRyYWlsaW5nSGFuZ2luZ0NvbnRlbnQoc3RkOjpvcHRpb25hbDxJbnRyaW5zaWNXaWR0aE1v
ZGU+LCBJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxBdmFpbGFibGVTcGFjZSwgYm9vbCBpc0xh
c3RGb3JtYXR0ZWRMaW5lKTsKICAgICB2b2lkIGhhbmRsZU92ZXJmbG93aW5nTm9uQnJlYWtpbmdT
cGFjZShUcmFpbGluZ0NvbnRlbnRBY3Rpb24sIElubGluZUxheW91dFVuaXQgb3ZlcmZsb3dpbmdX
aWR0aCk7CisgICAgY29uc3QgQm94KiByZW1vdmVPdmVyZmxvd2luZ091ck9mRmxvd0NvbnRlbnQo
KTsKICAgICB2b2lkIHJlc2V0QmlkaUxldmVsRm9yVHJhaWxpbmdXaGl0ZXNwYWNlKFVCaURpTGV2
ZWwgcm9vdEJpZGlMZXZlbCk7CiAgICAgdm9pZCBhcHBseVJ1bkV4cGFuc2lvbihJbmxpbmVMYXlv
dXRVbml0IGhvcml6b250YWxBdmFpbGFibGVTcGFjZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJveC5jcHAKaW5kZXggM2JjMTgyNTIyYjM3Li42MmQ2NjcyZWM4ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3guY3BwCkBAIC0xMzAsNiArMTMwLDEzIEBAIElubGluZVJlY3Qg
TGluZUJveDo6bG9naWNhbEJvcmRlckJveEZvcklubGluZUJveChjb25zdCBCb3gmIGxheW91dEJv
eCwgY29uc3QgQm94CiAgICAgcmV0dXJuIGxvZ2ljYWxSZWN0OwogfQogCitJbmxpbmVSZWN0IExp
bmVCb3g6OmxvZ2ljYWxSZWN0Rm9yT3BhcXVlQm94KGNvbnN0IExpbmU6OlJ1biYgb3BhcXVlUnVu
LCBjb25zdCBCb3hHZW9tZXRyeSYgYm94R2VvbWV0cnkpIGNvbnN0Cit7CisgICAgQVNTRVJUKG9w
YXF1ZVJ1bi5pc09wYXF1ZSgpKTsKKyAgICBBU1NFUlQob3BhcXVlUnVuLmxheW91dEJveCgpLnN0
eWxlKCkuaXNPcmlnaW5hbERpc3BsYXlJbmxpbmVUeXBlKCkpOworICAgIHJldHVybiB7IHsgfSwg
bV9yb290SW5saW5lQm94LmxvZ2ljYWxMZWZ0KCkgKyBvcGFxdWVSdW4ubG9naWNhbExlZnQoKSwg
Ym94R2VvbWV0cnkuYm9yZGVyQm94V2lkdGgoKSwgYm94R2VvbWV0cnkuYm9yZGVyQm94SGVpZ2h0
KCkgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgTGF5b3V0CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaAppbmRleCA5NDA1NDliNTc1NTYuLjNlMGUz
OWU3NzczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3guaApAQCAtNzEsNiArNzEsNyBA
QCBwdWJsaWM6CiAgICAgSW5saW5lUmVjdCBsb2dpY2FsUmVjdEZvclJvb3RJbmxpbmVCb3goKSBj
b25zdCB7IHJldHVybiBtX3Jvb3RJbmxpbmVCb3gubG9naWNhbFJlY3QoKTsgfQogICAgIElubGlu
ZVJlY3QgbG9naWNhbEJvcmRlckJveEZvckF0b21pY0lubGluZUxldmVsQm94KGNvbnN0IEJveCYs
IGNvbnN0IEJveEdlb21ldHJ5JikgY29uc3Q7CiAgICAgSW5saW5lUmVjdCBsb2dpY2FsQm9yZGVy
Qm94Rm9ySW5saW5lQm94KGNvbnN0IEJveCYsIGNvbnN0IEJveEdlb21ldHJ5JikgY29uc3Q7Cisg
ICAgSW5saW5lUmVjdCBsb2dpY2FsUmVjdEZvck9wYXF1ZUJveChjb25zdCBMaW5lOjpSdW4mIG9w
YXF1ZVJ1biwgY29uc3QgQm94R2VvbWV0cnkmKSBjb25zdDsKIAogICAgIGNvbnN0IElubGluZUxl
dmVsQm94KiBpbmxpbmVMZXZlbEJveEZvcihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QgeyBy
ZXR1cm4gY29uc3RfY2FzdDxMaW5lQm94Jj4oKnRoaXMpLmlubGluZUxldmVsQm94Rm9yKGxheW91
dEJveCk7IH0KICAgICBjb25zdCBJbmxpbmVMZXZlbEJveCYgaW5saW5lTGV2ZWxCb3hGb3IoY29u
c3QgTGluZTo6UnVuJiBsaW5lUnVuKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PExpbmVCb3gm
PigqdGhpcykuaW5saW5lTGV2ZWxCb3hGb3IobGluZVJ1bik7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA0MzcwODM3N2VlYjkuLjNlZTYyZjVkZTZlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcApAQCAtMTUzLDcgKzE1
Myw3IEBAIHN0YXRpYyBib29sIGhhc1RyYWlsaW5nU29mdFdyYXBPcHBvcnR1bml0eShzaXplX3Qg
c29mdFdyYXBPcHBvcnR1bml0eUluZGV4LCBzaXplCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgaWYgKHRyYWlsaW5nSW5saW5lSXRlbS5pc09wYXF1ZSgpKSB7Ci0gICAgICAgIEFT
U0VSVChzb2Z0V3JhcE9wcG9ydHVuaXR5SW5kZXggPiAxKTsgLy8gQ2FuJ3QgaGF2ZSBvcGFxdWUg
aXRlbXMgb25seSBjYW5kaWRhdGUgY29udGVudC4KKyAgICAgICAgQVNTRVJUKHNvZnRXcmFwT3Bw
b3J0dW5pdHlJbmRleCA+IDEgfHwgaW5saW5lSXRlbXNbc29mdFdyYXBPcHBvcnR1bml0eUluZGV4
XS5pc0Zsb2F0KCkpOyAvLyBDYW4ndCBoYXZlIG9wYXF1ZSBpdGVtcyBvbmx5IGNhbmRpZGF0ZSBj
b250ZW50LgogICAgICAgICByZXR1cm4gaGFzVHJhaWxpbmdTb2Z0V3JhcE9wcG9ydHVuaXR5KHNv
ZnRXcmFwT3Bwb3J0dW5pdHlJbmRleCAtIDEsIGxheW91dFJhbmdlRW5kLCBpbmxpbmVJdGVtcyk7
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNDc3LDYgKzQ3NywyNiBAQCBM
aW5lQ29udGVudCBMaW5lQnVpbGRlcjo6cGxhY2VJbmxpbmVBbmRGbG9hdENvbnRlbnQoY29uc3Qg
SW5saW5lSXRlbVJhbmdlJiBuZWVkcwogICAgICAgICAgICAgICAgIG1fbGluZS5oYW5kbGVPdmVy
Zmxvd2luZ05vbkJyZWFraW5nU3BhY2UoaXNMaW5lQnJlYWtBZnRlcldoaXRlc3BhY2UoKSA/IExp
bmU6OlRyYWlsaW5nQ29udGVudEFjdGlvbjo6UHJlc2VydmUgOiBMaW5lOjpUcmFpbGluZ0NvbnRl
bnRBY3Rpb246OlJlbW92ZSwgbV9saW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKSAtIGhvcml6b250
YWxBdmFpbGFibGVTcGFjZSk7CiAKICAgICAgICAgICAgIG1fbGluZS5oYW5kbGVUcmFpbGluZ0hh
bmdpbmdDb250ZW50KGludHJpbnNpY1dpZHRoTW9kZSgpLCBob3Jpem9udGFsQXZhaWxhYmxlU3Bh
Y2UsIGlzTGFzdExpbmUpOworCisgICAgICAgICAgICBhdXRvIG1heU5lZWRPdXRPZkZsb3dPdmVy
Zmxvd1RyaW1taW5nID0gIWlzSW5JbnRyaW5zaWNXaWR0aE1vZGUoKSAmJiBsaW5lSGFzT3ZlcmZs
b3coKSAmJiAhbGluZUNvbnRlbnQucGFydGlhbFRyYWlsaW5nQ29udGVudExlbmd0aCAmJiBUZXh0
VXRpbDo6aXNXcmFwcGluZ0FsbG93ZWQocm9vdFN0eWxlKTsKKyAgICAgICAgICAgIGlmIChtYXlO
ZWVkT3V0T2ZGbG93T3ZlcmZsb3dUcmltbWluZykgeworICAgICAgICAgICAgICAgIC8vIE92ZXJm
bG93aW5nIG91dC1vZi1mbG93IGJveGVzIHNob3VsZCB3cmFwIHRoZSB0byBzdWJzZXF1ZW50IGxp
bmVzIGp1c3QgbGlrZSBhbnkgb3RoZXIgaW4tZmxvdyBjb250ZW50LgorICAgICAgICAgICAgICAg
IC8vIEhvd2V2ZXIgc2luY2Ugd2UgdGFrZSBhIHNob3J0Y3V0IGJ5IG5vdCBjb25zaWRlcmluZyBv
dXQtb2YtZmxvdyBjb250ZW50IGFzIGluZmxvdyBidXQgaW5zdGVhZCB0cmVhdGluZyBpdCBhcyBh
biBvcGFxdWUgYm94IHdpdGggemVybyB3aWR0aCBhbmQgbm8KKyAgICAgICAgICAgICAgICAvLyBz
b2Z0IHdyYXAgb3Bwb3J0dW5pdHksIGFueSBvdmVyZmxvd2luZyBvdXQtb2YtZmxvdyBjb250ZW50
IHdvdWxkIHBpbGUgdXAgYXMgdHJhaWxpbmcgY29udGVudC4KKyAgICAgICAgICAgICAgICAvLyBB
bHRlcm5hdGl2ZWx5IHdlIGNvdWxkIGluaXRpYXRlIGEgdHdvIHBhc3MgbGF5b3V0IGZpcnN0IHdp
dGggb3V0LW9mLWZsb3cgY29udGVudCB0cmVhdGVkIGFzIHRydWUgaW5mbG93IGFuZCBhIHNlY29u
ZCB3aXRob3V0IHRoZW0uCisgICAgICAgICAgICAgICAgQVNTRVJUKCFsaW5lQ29udGVudC5yYW5n
ZS5lbmQub2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogbGFzdFJlbW92ZWRUcmFp
bGluZ0JveCA9IG1fbGluZS5yZW1vdmVPdmVyZmxvd2luZ091ck9mRmxvd0NvbnRlbnQoKSkgewor
ICAgICAgICAgICAgICAgICAgICBhdXRvIGxpbmVFbmRJbmRleCA9IFsmXSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKGF1dG8gaW5kZXggPSBsaW5lQ29udGVudC5yYW5nZS5zdGFydC5p
bmRleDsgaW5kZXggPCBsaW5lQ29udGVudC5yYW5nZS5lbmQuaW5kZXg7ICsraW5kZXgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJm1faW5saW5lSXRlbXNbaW5kZXhdLmxheW91
dEJveCgpID09IGxhc3RSZW1vdmVkVHJhaWxpbmdCb3gpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxpbmVDb250ZW50LnJhbmdlLmVuZC5pbmRleDsKKyAgICAgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgbGluZUNvbnRlbnQucmFuZ2UuZW5kLmlu
ZGV4ID0gbGluZUVuZEluZGV4KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQog
ICAgICAgICB9OwogICAgICAgICBoYW5kbGVUcmFpbGluZ0NvbnRlbnQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxh
eS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXIuY3BwCmluZGV4IGY1NmJjMDhkZWVlZS4uMzNjMzU5YTlhOGYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lu
bGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXIuY3BwCkBAIC00NTEsMTAgKzQ1MSwxMiBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50
QnVpbGRlcjo6cHJvY2Vzc05vbkJpZGlDb250ZW50KGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmCiAj
ZW5kaWYKICAgICBhdXRvIHdyaXRpbmdNb2RlID0gcm9vdCgpLnN0eWxlKCkud3JpdGluZ01vZGUo
KTsKICAgICBhdXRvIGNvbnRlbnRTdGFydEluVmlzdWFsT3JkZXIgPSBtX2Rpc3BsYXlMaW5lLnRv
cExlZnQoKTsKKyAgICBWZWN0b3I8c2l6ZV90PiBibG9ja0xldmVsT3V0T2ZGbG93Qm94TGlzdDsK
IAogICAgIGFwcGVuZFJvb3RJbmxpbmVCb3hEaXNwbGF5Qm94KGZsaXBSb290SW5saW5lQm94UmVj
dFRvVmlzdWFsRm9yV3JpdGluZ01vZGUobGluZUJveC5sb2dpY2FsUmVjdEZvclJvb3RJbmxpbmVC
b3goKSwgd3JpdGluZ01vZGUpLCBsaW5lQm94LnJvb3RJbmxpbmVCb3goKS5oYXNDb250ZW50KCks
IGJveGVzKTsKIAotICAgIGZvciAoYXV0byYgbGluZVJ1biA6IGxpbmVMYXlvdXRSZXN1bHQuaW5s
aW5lQ29udGVudCkgeworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBsaW5lTGF5
b3V0UmVzdWx0LmlubGluZUNvbnRlbnQuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGF1dG8m
IGxpbmVSdW4gPSBsaW5lTGF5b3V0UmVzdWx0LmlubGluZUNvbnRlbnRbaW5kZXhdOwogICAgICAg
ICBhdXRvJiBsYXlvdXRCb3ggPSBsaW5lUnVuLmxheW91dEJveCgpOwogCiAgICAgICAgIGF1dG8g
dmlzdWFsUmVjdFJlbGF0aXZlVG9Sb290ID0gWyZdKGF1dG8gbG9naWNhbFJlY3QpIHsKQEAgLTQ5
OCwxMSArNTAwLDE4IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpwcm9jZXNz
Tm9uQmlkaUNvbnRlbnQoY29uc3QgTGluZUxheW91dFJlc3VsdCYKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChsaW5lUnVuLmlzT3BhcXVlKCkpIHsKLSAgICAg
ICAgICAgIC8vIFNldCBnZW9tZXRyeSBmb3IgdGhpcyBvcGFxdWUgYm94LgorICAgICAgICAgICAg
YXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeShsYXlvdXRC
b3gpOworICAgICAgICAgICAgaWYgKGxheW91dEJveC5zdHlsZSgpLmlzT3JpZ2luYWxEaXNwbGF5
SW5saW5lVHlwZSgpKSB7CisgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wTGVmdCA9IGxp
bmVCb3gubG9naWNhbFJlY3RGb3JPcGFxdWVCb3gobGluZVJ1biwgYm94R2VvbWV0cnkpLnRvcExl
ZnQoKTsKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wTGVmdC5tb3ZlQnkobGluZUJveC5sb2dp
Y2FsUmVjdCgpLnRvcExlZnQoKSk7CisgICAgICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0TG9n
aWNhbFRvcExlZnQodG9MYXlvdXRQb2ludChsb2dpY2FsVG9wTGVmdCkpOworICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgYmxvY2tMZXZlbE91dE9mRmxvd0JveExpc3QuYXBwZW5k
KGluZGV4KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIEFTU0VS
VChsaW5lUnVuLmlzSW5saW5lQm94RW5kKCkgfHwgbGluZVJ1bi5pc1dvcmRCcmVha09wcG9ydHVu
aXR5KCkpOwogICAgIH0KKyAgICBzZXRHZW9tZXRyeUZvckJsb2NrTGV2ZWxPdXRPZkZsb3dCb3hl
cyhibG9ja0xldmVsT3V0T2ZGbG93Qm94TGlzdCwgbGluZUJveCwgbGluZUxheW91dFJlc3VsdC5p
bmxpbmVDb250ZW50KTsKIH0KIAogc3RydWN0IERpc3BsYXlCb3hUcmVlIHsKQEAgLTc2Niw2ICs3
NzUsOCBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6cHJvY2Vzc0JpZGlDb250
ZW50KGNvbnN0IExpbmVMYXlvdXRSZXN1bHQmIGxpbgogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKGxpbmVSdW4uaXNPcGFxdWUoKSkgewogICAgICAgICAgICAgICAgIC8vIFNldCBnZW9t
ZXRyeSBmb3IgdGhpcyBvcGFxdWUgYm94LgorICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0
ZSgpLmJveEdlb21ldHJ5KGxheW91dEJveCkuc2V0TG9naWNhbFRvcExlZnQoeyB9KTsKKyAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04NjksNiArODgwLDMyIEBA
IHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjb2xsZWN0SW5rT3ZlcmZsb3dGb3JJ
bmxpbmVCb3hlcyhJbmxpbmVEaXNwbGF5CiAgICAgfQogfQogCit2b2lkIElubGluZURpc3BsYXlD
b250ZW50QnVpbGRlcjo6c2V0R2VvbWV0cnlGb3JCbG9ja0xldmVsT3V0T2ZGbG93Qm94ZXMoY29u
c3QgVmVjdG9yPHNpemVfdD4gaW5kZXhMaXN0LCBjb25zdCBMaW5lQm94JiBsaW5lQm94LCBjb25z
dCBMaW5lOjpSdW5MaXN0JiBsaW5lUnVucykKK3sKKyAgICBhdXRvJiBmb3JtYXR0aW5nQ29udGV4
dCA9IHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KCk7CisgICAgYXV0byBvdXRPZkZsb3dDb250ZW50
SGFzUHJldmlvdXNJbkZsb3dTaWJsaW5nV2l0aENvbnRlbnRPckRlY29yYXRpb24gPSBmYWxzZTsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5kZXhMaXN0LnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIGF1dG8gb3V0T2ZGbG93Qm94SW5kZXggPSBpbmRleExpc3RbaV07CisgICAgICAgIEFT
U0VSVChvdXRPZkZsb3dCb3hJbmRleCA8IGxpbmVSdW5zLnNpemUoKSk7CisKKyAgICAgICAgYXV0
byBoYXNQcmV2aW91c0luRmxvd0NvbnRlbnQgPSBbJl0geworICAgICAgICAgICAgaWYgKG91dE9m
Rmxvd0NvbnRlbnRIYXNQcmV2aW91c0luRmxvd1NpYmxpbmdXaXRoQ29udGVudE9yRGVjb3JhdGlv
bikKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IHJ1bkluZGV4ID0gaSA/IG91dE9mRmxvd0JveEluZGV4ICsgMSA6IDA7IHJ1bkluZGV4IDwgb3V0
T2ZGbG93Qm94SW5kZXg7ICsrcnVuSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBpZiAoTGluZTo6
UnVuOjppc0NvbnRlbnRmdWxPckhhc0RlY29yYXRpb24obGluZVJ1bnNbcnVuSW5kZXhdLCBmb3Jt
YXR0aW5nQ29udGV4dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0T2ZGbG93Q29udGVudEhh
c1ByZXZpb3VzSW5GbG93U2libGluZ1dpdGhDb250ZW50T3JEZWNvcmF0aW9uID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9OworICAgICAgICAv
LyBCbG9jayBsZXZlbCBib3hlcyBhcmUgcGxhY2VkIGVpdGhlciBhdCB0aGUgc3RhcnQgb2YgdGhl
IGxpbmUgb3IgInVuZGVyIiBkZXBlbmRpbmcgd2hldGhlciB0aGV5IGhhdmUgcHJldmlvdXMgaW5m
bG93IHNpYmxpbmcuCisgICAgICAgIGF1dG8gbG9naWNhbFRvcCA9IGhhc1ByZXZpb3VzSW5GbG93
Q29udGVudCgpID8gbGluZUJveC5sb2dpY2FsUmVjdCgpLmJvdHRvbSgpIDogbGluZUJveC5sb2dp
Y2FsUmVjdCgpLnRvcCgpOworICAgICAgICBmb3JtYXR0aW5nU3RhdGUoKS5ib3hHZW9tZXRyeShs
aW5lUnVuc1tvdXRPZkZsb3dCb3hJbmRleF0ubGF5b3V0Qm94KCkpLnNldExvZ2ljYWxUb3BMZWZ0
KHsgY29uc3RyYWludHMoKS5ob3Jpem9udGFsKCkubG9naWNhbExlZnQsIGxvZ2ljYWxUb3AgfSk7
CisgICAgfQorfQorCiBzdGF0aWMgZmxvYXQgbG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9u
Q29udGVudChjb25zdCBJbmxpbmVEaXNwbGF5OjpCb3hlcyYgYm94ZXMsIGJvb2wgaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUpCiB7CiAgICAgYXV0byBsb2dpY2FsQm90dG9tID0gc3RkOjpvcHRpb25h
bDxmbG9hdD4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkv
SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmgKaW5kZXggOTU0NTE4OWMwNjdhLi5jYmQ1ZDlk
OGM0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9Jbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaApAQCAtNzMsNiArNzMsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2V0UmlnaHRGb3JXcml0aW5nTW9kZShJbmxpbmVEaXNwbGF5OjpCb3gmLCBJbmxpbmVM
YXlvdXRVbml0IGxvZ2ljYWxSaWdodCwgV3JpdGluZ01vZGUpIGNvbnN0OwogICAgIElubGluZUxh
eW91dFBvaW50IG1vdmVQb2ludEhvcml6b250YWxseUZvcldyaXRpbmdNb2RlKGNvbnN0IElubGlu
ZUxheW91dFBvaW50JiB0b3BMZWZ0LCBJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxPZmZzZXQs
IFdyaXRpbmdNb2RlKSBjb25zdDsKICAgICBJbmxpbmVMYXlvdXRVbml0IG91dHNpZGVMaXN0TWFy
a2VyVmlzdWFsUG9zaXRpb24oY29uc3QgRWxlbWVudEJveCYpIGNvbnN0OworICAgIHZvaWQgc2V0
R2VvbWV0cnlGb3JCbG9ja0xldmVsT3V0T2ZGbG93Qm94ZXMoY29uc3QgVmVjdG9yPHNpemVfdD4g
aW5kZXhMaXN0LCBjb25zdCBMaW5lQm94JiwgY29uc3QgTGluZTo6UnVuTGlzdCYpOwogCiAgICAg
Ym9vbCBpc0xpbmVGdWxseVRydW5jYXRlZEluQmxvY2tEaXJlY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2xpbmVJc0Z1bGx5VHJ1bmNhdGVkSW5CbG9ja0RpcmVjdGlvbjsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Db3Zl
cmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25Db3ZlcmFnZS5jcHAKaW5kZXggMzc1MGMzYTQ2ODdkLi44ZTExMjI5OGNkN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkNvdmVyYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5
b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5jcHAKQEAgLTM1NSw3ICszNTUsNyBAQCBzdGF0aWMgT3B0
aW9uU2V0PEF2b2lkYW5jZVJlYXNvbj4gY2FuVXNlRm9yQ2hpbGQoY29uc3QgUmVuZGVyQmxvY2tG
bG93JiBmbG93LCBjbwogICAgIGlmIChpczxSZW5kZXJCbG9ja0Zsb3c+KHJlbmRlcmVyKSB8fCBp
czxSZW5kZXJHcmlkPihyZW5kZXJlcikgfHwgaXM8UmVuZGVyRmxleGlibGVCb3g+KHJlbmRlcmVy
KSB8fCBpczxSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3g+KHJlbmRlcmVyKSB8fCBpczxSZW5k
ZXJSZXBsYWNlZD4ocmVuZGVyZXIpIHx8IGlzPFJlbmRlckxpc3RJdGVtPihyZW5kZXJlcikgfHwg
aXM8UmVuZGVyVGFibGU+KHJlbmRlcmVyKSkgewogICAgICAgICBhdXRvIGlzU3VwcG9ydGVkRmxv
YXRpbmdPclBvc2l0aW9uZWQgPSBbJl0gKGF1dG8mIHJlbmRlcmVyKSB7CiAgICAgICAgICAgICBp
ZiAocmVuZGVyZXIuaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoIXJlbmRlcmVyLnBhcmVudCgpLT5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkK
KyAgICAgICAgICAgICAgICBpZiAoIXJlbmRlcmVyLnBhcmVudCgpLT5zdHlsZSgpLmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSB8fCByZW5kZXJlci5wYXJlbnQoKS0+c3R5bGUoKS51bmljb2RlQmlk
aSgpICE9IFVuaWNvZGVCaWRpOjpOb3JtYWwpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgICAgICBpZiAoaXM8UmVuZGVyTGF5ZXJNb2RlbE9iamVjdD4ocmVu
ZGVyZXIucGFyZW50KCkpICYmIGRvd25jYXN0PFJlbmRlckxheWVyTW9kZWxPYmplY3Q+KCpyZW5k
ZXJlci5wYXJlbnQoKSkuc2hvdWxkUGxhY2VWZXJ0aWNhbFNjcm9sbGJhck9uTGVmdCgpKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggNjk2ODNmODU5ZGEzLi40ODMyZjY4YTBiYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0
SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKQEAgLTU4OCw4
ICs1ODgsNyBAQCBzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IExpbmVMYXlvdXQ6OmxheW91dCgp
CiAgICAgfSgpOwogICAgIGF1dG8gcGFyZW50QmxvY2tMYXlvdXRTdGF0ZSA9IExheW91dDo6Qmxv
Y2tMYXlvdXRTdGF0ZSB7IG1fYmxvY2tGb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpLCBs
aW5lQ2xhbXAoZmxvdygpKSwgdGV4dEJveFRyaW0oZmxvdygpKSwgaW50cnVzaXZlSW5pdGlhbExl
dHRlckJvdHRvbSgpIH07CiAgICAgYXV0byBpbmxpbmVMYXlvdXRTdGF0ZSA9IExheW91dDo6SW5s
aW5lTGF5b3V0U3RhdGUgeyBwYXJlbnRCbG9ja0xheW91dFN0YXRlLCBXVEZNb3ZlKG1fbmVzdGVk
TGlzdE1hcmtlck9mZnNldHMpIH07Ci0gICAgYXV0byBsYXlvdXRSZXN1bHQgPSBtX2lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmxheW91dEluRmxvd0FuZEZsb2F0Q29udGVudChpbmxpbmVDb250ZW50
Q29uc3RyYWludHMsIGlubGluZUxheW91dFN0YXRlLCBtX2xpbmVEYW1hZ2UuZ2V0KCkpOwotICAg
IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQubGF5b3V0T3V0T2ZGbG93Q29udGVudChpbmxpbmVD
b250ZW50Q29uc3RyYWludHMsIGlubGluZUxheW91dFN0YXRlLCBsYXlvdXRSZXN1bHQuZGlzcGxh
eUNvbnRlbnQpOworICAgIGF1dG8gbGF5b3V0UmVzdWx0ID0gbV9pbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5sYXlvdXQoaW5saW5lQ29udGVudENvbnN0cmFpbnRzLCBpbmxpbmVMYXlvdXRTdGF0ZSwg
bV9saW5lRGFtYWdlLmdldCgpKTsKIAogICAgIGF1dG8gcmVwYWludFJlY3QgPSBMYXlvdXRSZWN0
IHsgY29uc3RydWN0Q29udGVudChpbmxpbmVMYXlvdXRTdGF0ZSwgV1RGTW92ZShsYXlvdXRSZXN1
bHQpKSB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L21v
dmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL3JlcGFpbnQvbW92ZS1iYWNraW5nLXNoYXJpbmctbGF5ZXItZXhwZWN0ZWQudHh0Cmlu
ZGV4IDI4NGVlMzc0NTI5ZC4uMDI2YzE4OWZhMDE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9yZXBhaW50L21vdmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXBhaW50L21vdmUtYmFja2luZy1zaGFy
aW5nLWxheWVyLWV4cGVjdGVkLnR4dApAQCAtMTYsNiArMTYsNyBAQAogICAgICAgICAgIChib3Vu
ZHMgODAyLjAwIDIwMi4wMCkKICAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCiAgICAgICAgICAg
KHJlcGFpbnQgcmVjdHMKKyAgICAgICAgICAgIChyZWN0IDAuMDAgMS4wMCA4MDIuMDAgMS4wMCkK
ICAgICAgICAgICAgIChyZWN0IDIwMS4wMCA1MS4wMCAxMDAuMDAgMTAwLjAwKQogICAgICAgICAg
ICAgKHJlY3QgNDAxLjAwIDUxLjAwIDEwMC4wMCAxMDAuMDApCiAgICAgICAgICAgKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9jb21wb3NpdGluZy9yZXBhaW50L21v
dmUtYmFja2luZy1zaGFyaW5nLWxheWVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy13azIvY29tcG9zaXRpbmcvcmVwYWludC9tb3ZlLWJhY2tpbmctc2hhcmluZy1sYXll
ci1leHBlY3RlZC50eHQKaW5kZXggZjNiM2QwYjc4ZDg2Li5iZDRlYmE2OTRkNjQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvY29tcG9zaXRpbmcvcmVwYWludC9tb3Zl
LWJhY2tpbmctc2hhcmluZy1sYXllci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zLXdrMi9jb21wb3NpdGluZy9yZXBhaW50L21vdmUtYmFja2luZy1zaGFyaW5nLWxh
eWVyLWV4cGVjdGVkLnR4dApAQCAtMTYsNiArMTYsNyBAQAogICAgICAgICAgIChib3VuZHMgODAy
LjAwIDIwMi4wMCkKICAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCiAgICAgICAgICAgKHJlcGFp
bnQgcmVjdHMKKyAgICAgICAgICAgIChyZWN0IDAuMDAgMS4wMCA4MDIuMDAgMS4wMCkKICAgICAg
ICAgICAgIChyZWN0IDIwMS4wMCA1MS4wMCAxMDAuMDAgMTAwLjAwKQogICAgICAgICAgICAgKHJl
Y3QgNDAxLjAwIDUxLjAwIDEwMC4wMCAxMDAuMDApCiAgICAgICAgICAgKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>