<?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>230953</bug_id>
          
          <creation_ts>2021-09-29 07:04:54 -0700</creation_ts>
          <short_desc>[GTK][WPE] REGRESSION: Async scrolling jumps to the top of the page until keyboard-initiated paging</short_desc>
          <delta_ts>2021-10-05 06:58:20 -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>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230739</see_also>
          <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="Chris Lord">clord</reporter>
          <assigned_to name="Chris Lord">clord</assigned_to>
          <cc>annulen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>koivisto</cc>
    
    <cc>luiz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1798305</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-09-29 07:04:54 -0700</bug_when>
    <thetext>Currently, async scrolling is broken on GTK/WPE (which, for WPE, means all scrolling is broken) - any scroll action snaps the page back to the top after appearing to &apos;try&apos; to scroll. My best guess is the mechanism that synchronises main-thread scroll position with the async scroll tree&apos;s position is broken somehow. The odd thing is if you press space to scroll a page, scrolling then works correctly. This is almost certainly fall-out from https://bugs.webkit.org/show_bug.cgi?id=230739.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798306</commentid>
    <comment_count>1</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-09-29 07:06:09 -0700</bug_when>
    <thetext>(In reply to Chris Lord from comment #0)
&gt; Currently, async scrolling is broken on GTK/WPE (which, for WPE, means all
&gt; scrolling is broken) - any scroll action snaps the page back to the top
&gt; after appearing to &apos;try&apos; to scroll. My best guess is the mechanism that
&gt; synchronises main-thread scroll position with the async scroll tree&apos;s
&gt; position is broken somehow. The odd thing is if you press space to scroll a
&gt; page, scrolling then works correctly. This is almost certainly fall-out from
&gt; https://bugs.webkit.org/show_bug.cgi?id=230739.

I think the keyboard scrolling is always done in the WebProcess, so that sort of makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798310</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-09-29 07:16:23 -0700</bug_when>
    <thetext>(In reply to Martin Robinson from comment #1)
&gt; (In reply to Chris Lord from comment #0)
&gt; &gt; Currently, async scrolling is broken on GTK/WPE (which, for WPE, means all
&gt; &gt; scrolling is broken) - any scroll action snaps the page back to the top
&gt; &gt; after appearing to &apos;try&apos; to scroll. My best guess is the mechanism that
&gt; &gt; synchronises main-thread scroll position with the async scroll tree&apos;s
&gt; &gt; position is broken somehow. The odd thing is if you press space to scroll a
&gt; &gt; page, scrolling then works correctly. This is almost certainly fall-out from
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=230739.
&gt; 
&gt; I think the keyboard scrolling is always done in the WebProcess, so that
&gt; sort of makes sense.

I meant that after pressing space, then async scrolling works correctly - perhaps it&apos;s flipping some kind of flag somewhere or triggering some timer... I expect it&apos;s some kind of logic error with a flag, but I&apos;ve not debugged it yet, I&apos;m still just reading through the changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798325</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-29 07:47:24 -0700</bug_when>
    <thetext>I suggest eliminating the ScrollAnimations in ScrollingTreeScrollingNodeDelegateNicosia so the Nicosia code path is more similar to other platforms. That might fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800015</commentid>
    <comment_count>4</comment_count>
      <attachid>440050</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-04 03:39:53 -0700</bug_when>
    <thetext>Created attachment 440050
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800016</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-10-04 03:46:28 -0700</bug_when>
    <thetext>This looks like a really nice cleanup! I&apos;ll give this a review once it applies cleanly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800025</commentid>
    <comment_count>6</comment_count>
      <attachid>440053</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-04 04:20:09 -0700</bug_when>
    <thetext>Created attachment 440053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800047</commentid>
    <comment_count>7</comment_count>
      <attachid>440059</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-04 07:36:58 -0700</bug_when>
    <thetext>Created attachment 440059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800142</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-10-04 11:32:41 -0700</bug_when>
    <thetext>This breaks fast/scrolling/rtl-scrollbars-listbox-scroll.html on macOS because now we enter ScrollingEffectsController::handleWheelEvent() for RenderListBox ScrollableAreas and that doesn&apos;t ever move content for a Began event, which is a bit surprising.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800442</commentid>
    <comment_count>9</comment_count>
      <attachid>440181</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-05 01:35:09 -0700</bug_when>
    <thetext>Created attachment 440181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800453</commentid>
    <comment_count>10</comment_count>
      <attachid>440186</attachid>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-05 02:27:07 -0700</bug_when>
    <thetext>Created attachment 440186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800524</commentid>
    <comment_count>11</comment_count>
      <attachid>440186</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-10-05 05:09:08 -0700</bug_when>
    <thetext>Comment on attachment 440186
Patch

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

This is a very nice refactor.

&gt; Source/WebCore/platform/ScrollingEffectsController.cpp:231
&gt; +        m_currentAnimation-&gt;stop();

What I understand here is that it&apos;s not a big deal to not clear the animation here. Since it is cleared below though, clear it here or don&apos;t clear it below for the sake of consistency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800526</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Lord">clord</who>
    <bug_when>2021-10-05 05:17:04 -0700</bug_when>
    <thetext>(In reply to Martin Robinson from comment #11)
&gt; Comment on attachment 440186 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=440186&amp;action=review
&gt; 
&gt; This is a very nice refactor.
&gt; 
&gt; &gt; Source/WebCore/platform/ScrollingEffectsController.cpp:231
&gt; &gt; +        m_currentAnimation-&gt;stop();
&gt; 
&gt; What I understand here is that it&apos;s not a big deal to not clear the
&gt; animation here. Since it is cleared below though, clear it here or don&apos;t
&gt; clear it below for the sake of consistency.

This is only stopping the animation if it&apos;s a kinetic animation and it&apos;s only cleared when it&apos;s *not* a kinetic animation (the kinetic animation object is retained so that momentum can be calculated correctly). I do think this function could read better, but I think that&apos;s probably best left for another patch.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800541</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-05 06:57:42 -0700</bug_when>
    <thetext>Committed r283548 (242513@main): &lt;https://commits.webkit.org/242513@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440186.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800542</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-05 06:58:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/83884276&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440050</attachid>
            <date>2021-10-04 03:39:53 -0700</date>
            <delta_ts>2021-10-04 04:20:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230953-20211004113952.patch</filename>
            <type>text/plain</type>
            <size>51408</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMjEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E0ZDFmMDk0ZTBkZDZm
YmY4NzRkOWViMzRhMzRkYjIzYjkwNzg2Zi4uZjYzYmUzZTFiZjcwZDQ3OWFjMjRlN2VhNmFhOTEw
MTIzMGFhMzBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIxLTEwLTA0ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFJFR1JFU1NJ
T046IEFzeW5jIHNjcm9sbGluZyBqdW1wcyB0byB0aGUgdG9wIG9mIHRoZSBwYWdlIHVudGlsIGtl
eWJvYXJkLWluaXRpYXRlZCBwYWdpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMDk1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgbm9uLU1hYy9pT1MgYXN5bmMgc2Nyb2xsaW5nIHBh
dGggdG8gd29yayBjb3JyZWN0bHkgYWZ0ZXIgdGhlCisgICAgICAgIHNjcm9sbGluZyByZWZhY3Rv
ci4gVHJ5aW5nIHRvIHN1bW1hcmlzZSwgdGhpcyBpbXBsZW1lbnRzCisgICAgICAgIFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyIGluIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVO
aWNvc2lhCisgICAgICAgIGFuZCBtb3ZlcyBzbW9vdGggYW5kIGtpbmV0aWMgc2Nyb2xsaW5nIGFu
aW1hdGlvbnMgdG8KKyAgICAgICAgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIsIHRvIGJlIHNo
YXJlZCBieSBib3RoIHN5bmMgYW5kIGFzeW5jIHBhdGhzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cyAoaG9wZWZ1bGx5KS4KKworICAgICAgICAqIFBs
YXRmb3JtUGxheVN0YXRpb24uY21ha2U6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAg
ICAgICogU291cmNlc1dQRS50eHQ6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUJl
Zm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5p
Y29zaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZU5pY29zaWE6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmlj
b3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE6OnVwZGF0ZUZyb21TdGF0ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnVwZGF0ZVZpc2libGVMZW5ndGhzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNv
c2lhOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzdG9wU2Nyb2xsQW5pbWF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6
YW5pbWF0aW9uVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6Y3JlYXRlVGltZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnN0YXJ0QW5pbWF0
aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU5pY29zaWE6OnN0b3BBbmltYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6YWxsb3dzSG9y
aXpvbnRhbFNjcm9sbGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6YWxsb3dzVmVydGljYWxTY3JvbGxpbmcgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWE6OmltbWVkaWF0ZVNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjppbW1lZGlhdGVTY3JvbGxCeVdpdGhv
dXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91
bmRzSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbE9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6d2lsbFN0YXJ0
U2Nyb2xsU25hcEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6ZGlkU3RvcFNjcm9sbFNuYXBBbmltYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWE6OnBhZ2VTY2FsZUZhY3RvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsRXh0ZW50cyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3Np
YTo6cmVzZXRDdXJyZW50UG9zaXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1h
dGlvbktpbmV0aWMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290aCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6cGFnZVNjYWxlRmFjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxBbmlt
YXRpb25EaWRVcGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbEFuaW1hdGlvbkRpZEVuZCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTmljb3NpYTo6c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c3Rh
cnRUaW1lcklmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpyZXRhcmdldFJ1
bm5pbmdBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmhhbmRs
ZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFu
aW1hdGlvbkVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cmV0YXJnZXRBbmltYXRlZFNjcm9sbCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cHJvY2Vzc1do
ZWVsRXZlbnRGb3JLaW5ldGljU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpyZWdhcmdldEFuaW1hdGVkU2Nyb2xsKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJDbGllbnQ6OnNjcm9s
bEFuaW1hdGlvbkVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Ny
b2xsQW5pbWF0b3JHZW5lcmljLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpoYW5kbGVXaGVlbEV2ZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oOiBS
ZW1vdmVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKwogMjAyMS0wOS0yOCAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIEZhY3RvciBvdXQgcmFyZSBt
ZW1iZXJzIG9mIEZvbnRDcmVhdGlvbkNvbnRleHQgaW50byBGb250Q3JlYXRpb25Db250ZXh0UmFy
ZURhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4IDVkZGM4
NzQ4MmZkNzQ3NmU1MDFmMDg1MWFjODIzMDliM2RiYTBjM2EuLjlmMTU1OWVjMmU1ZDkyZjZlMmUy
OTRhZWZkNDBhMjgyOTRlZjNhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
UGxheVN0YXRpb24uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlv
bi5jbWFrZQpAQCAtMzYsNyArMzYsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAog
ICAgIHBsYXRmb3JtL2dlbmVyaWMvS2V5ZWREZWNvZGVyR2VuZXJpYy5jcHAKICAgICBwbGF0Zm9y
bS9nZW5lcmljL0tleWVkRW5jb2RlckdlbmVyaWMuY3BwCi0gICAgcGxhdGZvcm0vZ2VuZXJpYy9T
Y3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRl
eHQuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1EaXNwbGF5LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzR1RLLnR4dAppbmRleCA4OTczMDEyMzMwOTQ4ZDZlZTA4MzVmZTRmODYyOTI3ZDI2NDMwNDI5
Li5kNDUyYWIxZjcyNDFiNWU2NDA3YjQ4MDJiNTJiMGJmMDJlYTcyNjEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
R1RLLnR4dApAQCAtNzcsNyArNzcsNiBAQCBwbGF0Zm9ybS9hZHdhaXRhL1RoZW1lQWR3YWl0YS5j
cHAKIHBsYXRmb3JtL2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZC5jcHAKIHBsYXRmb3Jt
L2dhbWVwYWQvbWFuZXR0ZS9NYW5ldHRlR2FtZXBhZFByb3ZpZGVyLmNwcAogCi1wbGF0Zm9ybS9n
ZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xs
YmFyc0NvbnRyb2xsZXJHZW5lcmljLmNwcAogCiBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktp
dEJyaWRnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKaW5kZXggYTlhMjc5MTQxODAxNjk5MWRiMjRk
NWJmMDljOWU1MTBjODAxMzNiOC4uNjYzM2FhMThhOWNkODEyMTZlNmM0NmE3YzQyMzdmMDFhMWU0
YmJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQKQEAgLTYzLDcgKzYzLDYgQEAgcGxhdGZvcm0vVXNl
ckFnZW50UXVpcmtzLmNwcAogcGxhdGZvcm0vYWR3YWl0YS9TY3JvbGxiYXJUaGVtZUFkd2FpdGEu
Y3BwCiBwbGF0Zm9ybS9hZHdhaXRhL1RoZW1lQWR3YWl0YS5jcHAKIAotcGxhdGZvcm0vZ2VuZXJp
Yy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCiBwbGF0Zm9ybS9nZW5lcmljL1Njcm9sbGJhcnND
b250cm9sbGVyR2VuZXJpYy5jcHAKIAogcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlk
Z2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAppbmRleCBiYTBiN2QwMjE3ZmE0MjA2MDYwODMxNmZm
NTI2MGUyZTEzOWYyZjlhLi45YzFiYTZiMmYxMDNkNGM0NDU1OTI1MGM1NzY2MGExMTNiMTQ1ZWYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKQEAgLTQzLDYgKzQzLDkgQEAgY2xhc3MgV0VCQ09SRV9F
WFBPUlQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZU5v
ZGUgewogICAgIGZyaWVuZCBjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
OwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBmcmllbmQgY2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU1hYzsKKyNlbmRpZgorI2lmIFVTRShOSUNPU0lBKQorICAgIGZyaWVu
ZCBjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTsKICNlbmRp
ZgogICAgIGZyaWVuZCBjbGFzcyBTY3JvbGxpbmdUcmVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCmluZGV4IGYxZTczZDRm
NDMxMzFlNTYxOGEwYzUxY2QyN2FjY2JjMjc5ZjE3NzEuLjAzMjU2MDUxZTZhYmM0OTQ5OTY3Zjg2
ZmNlZjM2NTk0Y2YyYWIyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCkBAIC04Miw2ICs4Miw4IEBAIHZvaWQgU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRy
ZW4oY29uc3QgU2NyCiAgICAgICAgIGF1dG8qIGxheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6
UGxhdGZvcm1MYXllcio+KHNjcm9sbGluZ1N0YXRlTm9kZS5mb290ZXJMYXllcigpKTsKICAgICAg
ICAgbV9mb290ZXJMYXllciA9IGRvd25jYXN0PE5pY29zaWE6OkNvbXBvc2l0aW9uTGF5ZXI+KGxh
eWVyKTsKICAgICB9CisKKyAgICBtX2RlbGVnYXRlLnVwZGF0ZUZyb21TdGF0ZU5vZGUoc2Nyb2xs
aW5nU3RhdGVOb2RlKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
Tmljb3NpYTo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9k
ZSYgc3RhdGVOb2RlKQpAQCAtOTUsNyArOTcsNiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nybwog
ICAgICAgICBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOwogICAgICAgICBjb25zdCBhdXRvJiByZXF1
ZXN0ZWRTY3JvbGxEYXRhID0gc2Nyb2xsaW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbERhdGEo
KTsKICAgICAgICAgc2Nyb2xsVG8ocmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxQb3NpdGlvbiwg
cmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxUeXBlLCByZXF1ZXN0ZWRTY3JvbGxEYXRhLmNsYW1w
aW5nKTsKLSAgICAgICAgbV9kZWxlZ2F0ZS5yZXNldEN1cnJlbnRQb3NpdGlvbigpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVOaWNvc2lhLmNwcAppbmRleCBjNDc0YzQ4MjAwYTE1ZjIyNzI1OWM4ZjQxNGU0MTAyNTNl
NTAwZGEzLi5mMmFlMDMzZDBkNmI1MGZkNTk5N2MxZWI4ZTgyNDljZmM1NDAwN2I4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNv
c2lhLmNwcApAQCAtNTYsNyArNTYsNiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgUwogICAgICAg
ICBzdG9wU2Nyb2xsQW5pbWF0aW9ucygpOwogICAgICAgICBjb25zdCBhdXRvJiByZXF1ZXN0ZWRT
Y3JvbGxEYXRhID0gb3ZlcmZsb3dTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsRGF0YSgpOwogICAg
ICAgICBzY3JvbGxUbyhyZXF1ZXN0ZWRTY3JvbGxEYXRhLnNjcm9sbFBvc2l0aW9uLCByZXF1ZXN0
ZWRTY3JvbGxEYXRhLnNjcm9sbFR5cGUsIHJlcXVlc3RlZFNjcm9sbERhdGEuY2xhbXBpbmcpOwot
ICAgICAgICBtX2RlbGVnYXRlLnJlc2V0Q3VycmVudFBvc2l0aW9uKCk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWEuY3BwCmluZGV4IDBmYjUzOGZjNjgwYWFlNDI2MmRlZDU5YmM0ZmNkZTgwZDZkMmJlODgu
LjBkZDE5ZTFjNjcwN2VjMDg2YjFmNjUzMjRhNDYzNzFhYmE3NDAyNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3Bw
CkBAIC00MiwyMCArNDIsMjUgQEAgY2xhc3MgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzsKIAogU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OlNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhKFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiBzY3Jv
bGxpbmdOb2RlLCBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCkKICAgICA6IFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUoc2Nyb2xsaW5nTm9kZSkKKyAgICAsIG1fc2Nyb2xsQ29u
dHJvbGxlcigqdGhpcykKICAgICAsIG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkKHNjcm9sbEFuaW1h
dG9yRW5hYmxlZCkKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpIHx8IEVOQUJMRShTTU9P
VEhfU0NST0xMSU5HKQotICAgICwgbV9hbmltYXRpb25UaW1lcihSdW5Mb29wOjpjdXJyZW50KCks
IHRoaXMsICZTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6YW5pbWF0
aW9uVGltZXJGaXJlZCkKLSNlbmRpZgogewotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykg
fHwgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0jaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKLSAg
ICBtX2FuaW1hdGlvblRpbWVyLnNldFByaW9yaXR5KFdURjo6UnVuTG9vcFNvdXJjZVByaW9yaXR5
OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JUaW1lcik7Ci0jZW5kaWYKLSNlbmRpZiAgICAKIH0KIAog
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6On5TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYSgpID0gZGVmYXVsdDsKIAordm9pZCBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6dXBkYXRlRnJvbVN0YXRlTm9kZShj
b25zdCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ1N0YXRlTm9kZSkKK3sK
KyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZU5vZGU6OlByb3BlcnR5OjpTbmFwT2Zmc2V0c0luZm8pKQorICAgICAgICBtX3Njcm9sbENv
bnRyb2xsZXIuc2V0U25hcE9mZnNldHNJbmZvKHNjcm9sbGluZ1N0YXRlTm9kZS5zbmFwT2Zmc2V0
c0luZm8oKS5jb252ZXJ0VW5pdHM8TGF5b3V0U2Nyb2xsU25hcE9mZnNldHNJbmZvPigpKTsKKwor
ICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRIb3Jpem9udGFsU25hcE9mZnNldEluZGV4KSkKKyAg
ICAgICAgbV9zY3JvbGxDb250cm9sbGVyLnNldEFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckF4aXMo
U2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBzY3JvbGxpbmdTdGF0ZU5vZGUuY3VycmVudEhv
cml6b250YWxTbmFwUG9pbnRJbmRleCgpKTsKKworICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6UHJvcGVydHk6OkN1cnJlbnRW
ZXJ0aWNhbFNuYXBPZmZzZXRJbmRleCkpCisgICAgICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zZXRB
Y3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHNj
cm9sbGluZ1N0YXRlTm9kZS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpKTsKK30KKwog
c3RkOjp1bmlxdWVfcHRyPE5pY29zaWE6OlNjZW5lSW50ZWdyYXRpb246OlVwZGF0ZVNjb3BlPiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6Y3JlYXRlVXBkYXRlU2Nv
cGUoKQogewogICAgIGF1dG8qIHNjcm9sbExheWVyID0gc3RhdGljX2Nhc3Q8Tmljb3NpYTo6UGxh
dGZvcm1MYXllcio+KHNjcm9sbGluZ05vZGUoKS5zY3JvbGxDb250YWluZXJMYXllcigpKTsKQEAg
LTY3LDIwNSArNzIsMTIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxOaWNvc2lhOjpTY2VuZUludGVncmF0
aW9uOjpVcGRhdGVTY29wZT4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vCiAgICAgcmV0dXJuIGNv
bXBvc2l0aW9uTGF5ZXIuY3JlYXRlVXBkYXRlU2NvcGUoKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6cmVzZXRDdXJyZW50UG9zaXRpb24oKQor
dm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6dXBkYXRlVmlz
aWJsZUxlbmd0aHMoKQogewotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIGlmICht
X3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0b3AoKTsKLSNl
bmRpZgorICAgIG1fc2Nyb2xsQ29udHJvbGxlci5jb250ZW50c1NpemVDaGFuZ2VkKCk7CiB9CiAK
LXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnVwZGF0ZVZp
c2libGVMZW5ndGhzKCkKK1doZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIEV2ZW50VGFyZ2V0aW5nIGV2ZW50VGFyZ2V0aW5nKQog
ewotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIGlmIChtX3Ntb290aEFuaW1hdGlv
bikKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnVwZGF0ZVNjcm9sbEV4dGVudHMoKTsKLSNl
bmRpZgorICAgIGlmICghc2Nyb2xsaW5nTm9kZSgpLmNhbkhhbmRsZVdoZWVsRXZlbnQod2hlZWxF
dmVudCwgZXZlbnRUYXJnZXRpbmcpCisgICAgICAgIHx8ICFtX3Njcm9sbENvbnRyb2xsZXIuaGFu
ZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KSkKKyAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5k
bGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7CisKKyAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5n
UmVzdWx0OjpoYW5kbGVkKCk7CiB9CiAKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi12
b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjplbnN1cmVTY3Jv
bGxBbmltYXRpb25LaW5ldGljKCkKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU5pY29zaWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKCkKIHsKLSAgICBpZiAobV9raW5ldGlj
QW5pbWF0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBt
YWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KCp0aGlzKTsKLSAgICBzdGFydFRpbWVy
SWZOZWNlc3NhcnkoKTsKKyAgICBtX3Njcm9sbENvbnRyb2xsZXIuc3RvcEFuaW1hdGVkU2Nyb2xs
KCk7CiB9Ci0jZW5kaWYKIAotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotdm9pZCBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0
aW9uU21vb3RoKCkKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWE6OmFuaW1hdGlvblRpbWVyRmlyZWQoKQogewotICAgIGlmIChtX3Ntb290aEFuaW1hdGlvbikK
LSAgICAgICAgcmV0dXJuOworICAgIG1fc2Nyb2xsQ29udHJvbGxlci5hbmltYXRpb25DYWxsYmFj
ayhNb25vdG9uaWNUaW1lOjpub3coKSk7Cit9CiAKLSAgICBtX3Ntb290aEFuaW1hdGlvbiA9IG1h
a2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigqdGhpcyk7Ci0gICAgc3RhcnRUaW1lcklm
TmVjZXNzYXJ5KCk7CitzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJU
aW1lcj4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmNyZWF0ZVRp
bWVyKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKK3sKKyAgICByZXR1cm4gV1RGOjptYWtl
VW5pcXVlPFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI+KFJ1bkxvb3A6OmN1cnJlbnQo
KSwgW2Z1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbiksIHByb3RlY3RlZE5vZGUgPSBSZWYgeyBz
Y3JvbGxpbmdOb2RlKCkgfV0geworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcHJvdGVjdGVkTm9k
ZS0+c2Nyb2xsaW5nVHJlZSgpLnRyZWVMb2NrKCkgfTsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAg
ICB9KTsKIH0KLSNlbmRpZgogCi1XaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBFdmVudFRhcmdldGluZyBldmVudFRhcmdldGlu
ZykKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnN0YXJ0
QW5pbWF0aW9uQ2FsbGJhY2soU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXImKQogewotICAgIGlm
ICghc2Nyb2xsaW5nTm9kZSgpLmNhbkhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCwgZXZlbnRU
YXJnZXRpbmcpKQotICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhh
bmRsZWQoKTsKKyAgICBpZiAoIW1fYW5pbWF0aW9uVGltZXIpIHsKKyAgICAgICAgbV9hbmltYXRp
b25UaW1lciA9IFdURjo6bWFrZVVuaXF1ZTxSdW5Mb29wOjpUaW1lcjxTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYT4+KFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphbmltYXRpb25UaW1lckZp
cmVkKTsKIAotICAgIGJvb2wgY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIgPSBzY3JvbGxpbmdO
b2RlKCkuY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIoKTsKLSAgICBib29sIGNhbkhhdmVWZXJ0
aWNhbFNjcm9sbGJhciA9IHNjcm9sbGluZ05vZGUoKS5jYW5IYXZlVmVydGljYWxTY3JvbGxiYXIo
KTsKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAgZW5zdXJlU2Nyb2xsQW5pbWF0
aW9uS2luZXRpYygpOwotICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+YXBwZW5kVG9TY3JvbGxIaXN0
b3J5KHdoZWVsRXZlbnQpOwotICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwotICAgIGlm
ICh3aGVlbEV2ZW50LmlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpKSB7Ci0gICAgICAgIG1fa2lu
ZXRpY0FuaW1hdGlvbi0+c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY3Vy
cmVudFNjcm9sbFBvc2l0aW9uKCksIG1fa2luZXRpY0FuaW1hdGlvbi0+Y29tcHV0ZVZlbG9jaXR5
KCksIGNhbkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyLCBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIp
OwotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwotICAg
ICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7Ci0gICAgfQot
ICAgIGlmICh3aGVlbEV2ZW50LmlzVHJhbnNpdGlvbmluZ1RvTW9tZW50dW1TY3JvbGwoKSkgewot
ICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlh
bFZlbG9jaXR5KGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLCB3aGVlbEV2ZW50LnN3aXBlVmVsb2Np
dHkoKSwgY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIsIGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJh
cik7Ci0gICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7Ci0g
ICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsKLSAgICB9
CisjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKKyAgICAgICAgbV9hbmltYXRpb25UaW1lci0+c2V0
UHJpb3JpdHkoV1RGOjpSdW5Mb29wU291cmNlUHJpb3JpdHk6OkRpc3BsYXlSZWZyZXNoTW9uaXRv
clRpbWVyKTsKICNlbmRpZgotCi0gICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gc2hhcmUgY29k
ZSB3aXRoIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KCksIHBlcmhhcHMgYnkgbW92
aW5nIGNvZGUgaW50byBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVu
dCgpLgotICAgIGZsb2F0IGRlbHRhWCA9IGNhbkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyID8gd2hl
ZWxFdmVudC5kZWx0YVgoKSA6IDA7Ci0gICAgZmxvYXQgZGVsdGFZID0gY2FuSGF2ZVZlcnRpY2Fs
U2Nyb2xsYmFyID8gd2hlZWxFdmVudC5kZWx0YVkoKSA6IDA7Ci0gICAgaWYgKChkZWx0YVggPCAw
ICYmIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLngoKSA+PSBtYXhpbXVtU2Nyb2xsUG9zaXRpb24o
KS54KCkpCi0gICAgICAgIHx8IChkZWx0YVggPiAwICYmIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigp
LngoKSA8PSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS54KCkpKQotICAgICAgICBkZWx0YVggPSAw
OwotICAgIGlmICgoZGVsdGFZIDwgMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS55KCkgPj0g
bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueSgpKQotICAgICAgICB8fCAoZGVsdGFZID4gMCAmJiBj
dXJyZW50U2Nyb2xsUG9zaXRpb24oKS55KCkgPD0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkueSgp
KSkKLSAgICAgICAgZGVsdGFZID0gMDsKLQotICAgIGlmICghZGVsdGFYICYmICFkZWx0YVkpCi0g
ICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OnVuaGFuZGxlZCgpOwotCi0g
ICAgaWYgKHdoZWVsRXZlbnQuZ3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50
KSB7Ci0gICAgICAgIGlmIChkZWx0YVgpIHsKLSAgICAgICAgICAgIGJvb2wgbmVnYXRpdmUgPSBk
ZWx0YVggPCAwOwotICAgICAgICAgICAgZGVsdGFYID0gU2Nyb2xsYmFyOjpwYWdlU3RlcERlbHRh
KHNjcm9sbGFibGVBcmVhU2l6ZSgpLndpZHRoKCkpOwotICAgICAgICAgICAgaWYgKG5lZ2F0aXZl
KQotICAgICAgICAgICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKGRlbHRhWSkgewotICAgICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGRlbHRhWSA8IDA7Ci0g
ICAgICAgICAgICBkZWx0YVkgPSBTY3JvbGxiYXI6OnBhZ2VTdGVwRGVsdGEoc2Nyb2xsYWJsZUFy
ZWFTaXplKCkuaGVpZ2h0KCkpOwotICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKQotICAgICAgICAg
ICAgICAgIGRlbHRhWSA9IC1kZWx0YVk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBkZWx0YVgg
PSAtZGVsdGFYOwotICAgIGRlbHRhWSA9IC1kZWx0YVk7Ci0KLSAgICBpZiAoIXNjcm9sbGluZ05v
ZGUoKS5zbmFwT2Zmc2V0c0luZm8oKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgZmxvYXQgc2NhbGUg
PSBwYWdlU2NhbGVGYWN0b3IoKTsKLSAgICAgICAgRmxvYXRQb2ludCBvcmlnaW5hbE9mZnNldCA9
IExheW91dFBvaW50KHNjcm9sbGluZ05vZGUoKS5jdXJyZW50U2Nyb2xsT2Zmc2V0KCkueCgpIC8g
c2NhbGUsIHNjcm9sbGluZ05vZGUoKS5jdXJyZW50U2Nyb2xsT2Zmc2V0KCkueSgpIC8gc2NhbGUp
OwotICAgICAgICBhdXRvIG5ld09mZnNldCA9IChzY3JvbGxpbmdOb2RlKCkuY3VycmVudFNjcm9s
bE9mZnNldCgpICsgRmxvYXRTaXplKGRlbHRhWCwgZGVsdGFZKSk7Ci0gICAgICAgIG5ld09mZnNl
dC5zY2FsZSgxLjAgLyBzY2FsZSk7Ci0KLSAgICAgICAgYXV0byBvZmZzZXRYID0gc2Nyb2xsaW5n
Tm9kZSgpLnNuYXBPZmZzZXRzSW5mbygpLmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhp
czo6SG9yaXpvbnRhbCwgc2Nyb2xsYWJsZUFyZWFTaXplKCksIG5ld09mZnNldCwgZGVsdGFYLCBv
cmlnaW5hbE9mZnNldC54KCkpLmZpcnN0OwotICAgICAgICBhdXRvIG9mZnNldFkgPSBzY3JvbGxp
bmdOb2RlKCkuc25hcE9mZnNldHNJbmZvKCkuY2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRB
eGlzOjpWZXJ0aWNhbCwgc2Nyb2xsYWJsZUFyZWFTaXplKCksIG5ld09mZnNldCwgZGVsdGFZLCBv
cmlnaW5hbE9mZnNldC55KCkpLmZpcnN0OwotCi0gICAgICAgIGRlbHRhWCA9IChvZmZzZXRYIC0g
b3JpZ2luYWxPZmZzZXQueCgpKSAqIHNjYWxlOwotICAgICAgICBkZWx0YVkgPSAob2Zmc2V0WSAt
IG9yaWdpbmFsT2Zmc2V0LnkoKSkgKiBzY2FsZTsKICAgICB9CiAKLSNpZiBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKLSAgICBpZiAobV9zY3JvbGxBbmltYXRvckVuYWJsZWQgJiYgIXdoZWVsRXZl
bnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpKSB7Ci0gICAgICAgIGVuc3VyZVNjcm9sbEFu
aW1hdGlvblNtb290aCgpOwotICAgICAgICBhdXRvIGN1cnJlbnRPZmZzZXQgPSBzY3JvbGxpbmdO
b2RlKCkuY3VycmVudFNjcm9sbE9mZnNldCgpOwotICAgICAgICBhdXRvIGRlc3RpbmF0aW9uT2Zm
c2V0ID0gY3VycmVudE9mZnNldCArIEZsb2F0U2l6ZSB7IGRlbHRhWCwgZGVsdGFZIH07Ci0gICAg
ICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihj
dXJyZW50T2Zmc2V0LCBkZXN0aW5hdGlvbk9mZnNldCk7Ci0gICAgICAgIHJldHVybiBXaGVlbEV2
ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsKLSAgICB9Ci0jZW5kaWYKKyAgICBpZiAobV9h
bmltYXRpb25UaW1lci0+aXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB1
cGRhdGVTY29wZSA9IGNyZWF0ZVVwZGF0ZVNjb3BlKCk7Ci0gICAgc2Nyb2xsaW5nTm9kZSgpLnNj
cm9sbEJ5KHsgZGVsdGFYLCBkZWx0YVkgfSk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUg
ZnJhbWVSYXRlID0gNjA7CisgICAgc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIHRpY2tUaW1lID0g
MV9zIC8gZnJhbWVSYXRlOworICAgIG1fYW5pbWF0aW9uVGltZXItPnN0YXJ0UmVwZWF0aW5nKHRp
Y2tUaW1lKTsKK30KIAotICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRs
ZWQoKTsKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnN0
b3BBbmltYXRpb25DYWxsYmFjayhTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciYpCit7CisgICAg
aWYgKG1fYW5pbWF0aW9uVGltZXIpCisgICAgICAgIG1fYW5pbWF0aW9uVGltZXItPnN0b3AoKTsK
IH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c3Rv
cFNjcm9sbEFuaW1hdGlvbnMoKQorYm9vbCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTmljb3NpYTo6YWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpIGNvbnN0CiB7Ci0jaWYgRU5B
QkxFKEtJTkVUSUNfU0NST0xMSU5HKQotICAgIGlmIChtX2tpbmV0aWNBbmltYXRpb24pIHsKLSAg
ICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7Ci0gICAgICAgIG1fa2luZXRpY0FuaW1h
dGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKFNN
T09USF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICBtX3Nt
b290aEFuaW1hdGlvbi0+c3RvcCgpOwotI2VuZGlmCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xM
SU5HKSB8fCBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICBtX2FuaW1hdGlvblRpbWVyLnN0
b3AoKTsKLSNlbmRpZgorICAgIHJldHVybiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlOjphbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nKCk7CiB9CiAKLWZsb2F0IFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpwYWdlU2NhbGVGYWN0b3IoKQorYm9vbCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6YWxsb3dzVmVydGljYWxT
Y3JvbGxpbmcoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB0aGlzIHJldHVy
biBmb3Igbm9uLXJvb3QgZnJhbWVzLCBhbmQgb3ZlcmZsb3c/Ci0gICAgLy8gQWxzbywgdGhpcyBz
aG91bGQgbm90IGhhdmUgdG8gYWNjZXNzIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUu
Ci0gICAgcmV0dXJuIGlzPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KHNjcm9sbGlu
Z05vZGUoKSkgPwotICAgICAgICBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlPihzY3JvbGxpbmdOb2RlKCkpLmZyYW1lU2NhbGVGYWN0b3IoKSA6IDEuOworICAgIHJldHVy
biBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlOjphbGxvd3NWZXJ0aWNhbFNjcm9s
bGluZygpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNv
c2lhOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiBhbmltYXRpb24s
IGNvbnN0IEZsb2F0UG9pbnQmIG9mZnNldCkKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU5pY29zaWE6OmltbWVkaWF0ZVNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYgZGVs
dGEpCiB7Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgaWYgKCZhbmltYXRpb24g
PT0gbV9raW5ldGljQW5pbWF0aW9uLmdldCgpKSB7Ci0gICAgICAgIGlmIChtX3Ntb290aEFuaW1h
dGlvbikKLSAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zdG9wKCk7Ci0gICAgfQotI2Vu
ZGlmCiAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNyZWF0ZVVwZGF0ZVNjb3BlKCk7CisgICAgc2Ny
b2xsaW5nTm9kZSgpLnNjcm9sbEJ5KGRlbHRhKTsKK30KIAotICAgIC8vIEZJWE1FOiBOZWVkIHRv
IGNvbnZlcnQgYW4gb2Zmc2V0IHRvIGEgcG9zaXRpb24uCi0gICAgc2Nyb2xsaW5nTm9kZSgpLnNj
cm9sbFRvKG9mZnNldCk7Cit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVO
aWNvc2lhOjppbW1lZGlhdGVTY3JvbGxCeVdpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNv
bnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQoreworICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjcmVhdGVV
cGRhdGVTY29wZSgpOworICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxCeShvZmZzZXQsIFNjcm9s
bENsYW1waW5nOjpVbmNsYW1wZWQpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxBbmltYXRpb25EaWRFbmQoU2Nyb2xsQW5pbWF0aW9u
JikKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmFkanVz
dFNjcm9sbFBvc2l0aW9uVG9Cb3VuZHNJZk5lY2Vzc2FyeSgpCiB7CisgICAgRmxvYXRQb2ludCBz
Y3JvbGxQb3NpdGlvbiA9IGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpOworICAgIEZsb2F0UG9pbnQg
Y29uc3RyYWluZWRQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uLmNvbnN0cmFpbmVkQmV0d2Vlbiht
aW5pbXVtU2Nyb2xsUG9zaXRpb24oKSwgbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkpOworICAgIGlt
bWVkaWF0ZVNjcm9sbEJ5KGNvbnN0cmFpbmVkUG9zaXRpb24gLSBzY3JvbGxQb3NpdGlvbik7CiB9
CiAKLVNjcm9sbEV4dGVudHMgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWE6OnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikKK0Zsb2F0UG9p
bnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbE9mZnNl
dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgc2Nyb2xsaW5nTm9kZSgpLnRvdGFs
Q29udGVudHNTaXplKCksCi0gICAgICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxhYmxlQXJlYVNp
emUoKQotICAgIH07CisgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpzY3JvbGxPZmZzZXRGcm9t
UG9zaXRpb24oY3VycmVudFNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbE9yaWdpbigpKTsKIH0KIAot
dm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c3RhcnRUaW1l
cklmTmVjZXNzYXJ5KCkKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE6OndpbGxTdGFydFNjcm9sbFNuYXBBbmltYXRpb24oKQogewotI2lmIEVOQUJMRShLSU5F
VElDX1NDUk9MTElORykgfHwgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fYW5p
bWF0aW9uVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOworICAgIHNjcm9sbGluZ05v
ZGUoKS5zZXRTY3JvbGxTbmFwSW5Qcm9ncmVzcyh0cnVlKTsKK30KIAotICAgIHN0YXRpYyBjb25z
dGV4cHIgZG91YmxlIGZyYW1lUmF0ZSA9IDYwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25k
cyB0aWNrVGltZSA9IDFfcyAvIGZyYW1lUmF0ZTsKLSAgICAKLSAgICBtX2FuaW1hdGlvblRpbWVy
LnN0YXJ0UmVwZWF0aW5nKHRpY2tUaW1lKTsKLSNlbmRpZgordm9pZCBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6ZGlkU3RvcFNjcm9sbFNuYXBBbmltYXRpb24oKQor
eworICAgIHNjcm9sbGluZ05vZGUoKS5zZXRTY3JvbGxTbmFwSW5Qcm9ncmVzcyhmYWxzZSk7CiB9
CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmFuaW1h
dGlvblRpbWVyRmlyZWQoKQorZmxvYXQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWE6OnBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0CiB7Ci0jaWYgRU5BQkxFKEtJTkVUSUNf
U0NST0xMSU5HKSB8fCBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICBhdXRvIG5vdyA9IE1v
bm90b25pY1RpbWU6Om5vdygpOwotI2VuZGlmCisgICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIHRo
aXMgcmV0dXJuIGZvciBub24tcm9vdCBmcmFtZXMsIGFuZCBvdmVyZmxvdz8KKyAgICAvLyBBbHNv
LCB0aGlzIHNob3VsZCBub3QgaGF2ZSB0byBhY2Nlc3MgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZS4KKyAgICByZXR1cm4gaXM8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4o
c2Nyb2xsaW5nTm9kZSgpKSA/CisgICAgICAgIGRvd25jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGU+KHNjcm9sbGluZ05vZGUoKSkuZnJhbWVTY2FsZUZhY3RvcigpIDogMS47Cit9
CiAKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAgaWYgKG1fa2luZXRpY0FuaW1h
dGlvbikKLSAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zZXJ2aWNlQW5pbWF0aW9uKG5vdyk7
Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICBpZiAobV9zbW9vdGhB
bmltYXRpb24pCi0gICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXJ2aWNlQW5pbWF0aW9uKG5v
dyk7Ci0jZW5kaWYgICAgCitTY3JvbGxFeHRlbnRzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxFeHRlbnRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gewor
ICAgICAgICBzY3JvbGxpbmdOb2RlKCkudG90YWxDb250ZW50c1NpemUoKSwKKyAgICAgICAgc2Ny
b2xsaW5nTm9kZSgpLnNjcm9sbGFibGVBcmVhU2l6ZSgpCisgICAgfTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTmljb3NpYS5oCmluZGV4IDc0NzQyYzFmZTNhODY4NmFlNTMyMTRhMmRhZjBk
YWEyMmI5NWVlYjMuLmNhYWVmNjk4NzA4ZDA5MDlmZmYxYWZmNWFhMjBlYTMyYjA2YTcxNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVO
aWNvc2lhLmgKQEAgLTMyLDY4ICszMiw1OCBAQAogCiAjaW5jbHVkZSAiTmljb3NpYVBsYXRmb3Jt
TGF5ZXIuaCIKICNpbmNsdWRlICJTY3JvbGxBbmltYXRpb24uaCIKKyNpbmNsdWRlICJTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlLmgiCiAjaW5jbHVkZSAiVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgiCi0KLSNp
ZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0jaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uS2lu
ZXRpYy5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSNpbmNsdWRl
ICJTY3JvbGxBbmltYXRpb25TbW9vdGguaCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEtJTkVUSUNf
U0NST0xMSU5HKSB8fCBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKICNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRklYTUU6IFRoaXMg
c2hvdWxkIG5vdCBiZSBhIFNjcm9sbEFuaW1hdGlvbkNsaWVudC4KLWNsYXNzIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhIDogcHVibGljIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGUsIHB1YmxpYyBTY3JvbGxBbmltYXRpb25DbGllbnQgeworY2xhc3Mg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEgOiBwdWJsaWMgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZSwgcHVibGljIFNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTmljb3NpYShTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYsIGJvb2wg
c2Nyb2xsQW5pbWF0b3JFbmFibGVkKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTmljb3NpYSgpOwogCisgICAgdm9pZCB1cGRhdGVGcm9tU3RhdGVOb2Rl
KGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYpOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxOaWNvc2lhOjpTY2VuZUludGVncmF0aW9uOjpVcGRhdGVTY29wZT4gY3JlYXRlVXBkYXRlU2Nv
cGUoKTsKLSAgICB2b2lkIHJlc2V0Q3VycmVudFBvc2l0aW9uKCk7CiAgICAgdm9pZCB1cGRhdGVW
aXNpYmxlTGVuZ3RocygpOwogICAgIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBoYW5kbGVXaGVl
bEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIEV2ZW50VGFyZ2V0aW5nKTsKICAgICB2
b2lkIHN0b3BTY3JvbGxBbmltYXRpb25zKCk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBtX3Njcm9s
bEFuaW1hdG9yRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCk7
CisgICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVkKCk7CiAKLSNpZiBFTkFCTEUoS0lORVRJQ19T
Q1JPTExJTkcpCi0gICAgdm9pZCBlbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCk7Ci0jZW5k
aWYKLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICB2b2lkIGVuc3VyZVNjcm9sbEFu
aW1hdGlvblNtb290aCgpOwotI2VuZGlmCisgICAgLy8gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXJDbGllbnQuCisgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
VGltZXI+IGNyZWF0ZVRpbWVyKEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CiAKLSAgICB2b2lk
IGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHN0YXJ0VGltZXJJZk5lY2Vzc2FyeSgp
OwotCi0gICAgLy8gU2Nyb2xsQW5pbWF0aW9uQ2xpZW50Ci0gICAgdm9pZCBzY3JvbGxBbmltYXRp
b25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwgY29uc3QgRmxvYXRQb2ludCYgY3VycmVudFBv
c2l0aW9uKSBmaW5hbDsKLSAgICB2b2lkIHNjcm9sbEFuaW1hdGlvbkRpZEVuZChTY3JvbGxBbmlt
YXRpb24mKSBmaW5hbDsKLSAgICBTY3JvbGxFeHRlbnRzIHNjcm9sbEV4dGVudHNGb3JBbmltYXRp
b24oU2Nyb2xsQW5pbWF0aW9uJikgZmluYWw7Ci0KLSAgICAvLyBGSVhNRTogVGhlc2UgYW5pbWF0
aW9ucyBzaG91bGQgbm90IGxpdmUgaGVyZS4gVGhleSBuZWVkIHRvIGJlIG1hbmFnZWQgYnkgU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIsCi0gICAgLy8gdG8gYmUgY29vcmRpbmF0ZWQgd2l0aCBv
dGhlciBraW5kcyBvZiBzY3JvbGwgYW5pbWF0aW9ucywgYW5kIGJlIHJlZmVyZW5jZWQgYnkgU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6Om1fY3VycmVudEFuaW1hdGlvbi4KLSAgICAKLSNpZiBF
TkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1h
dGlvbktpbmV0aWM+IG1fa2luZXRpY0FuaW1hdGlvbjsKLSNlbmRpZgotI2lmIEVOQUJMRShTTU9P
VEhfU0NST0xMSU5HKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25TbW9vdGg+
IG1fc21vb3RoQW5pbWF0aW9uOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJ
TkcpIHx8IEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIC8vIEZJWE1FOiBXaGVuIHRoZSBh
Ym92ZSB0d28gYW5pbWF0aW9ucyBhcmUgcmVtb3ZlZCwgdGhpcyB0aW1lciBjYW4gYmUgcmVtb3Zl
ZC4KLSAgICBSdW5Mb29wOjpUaW1lcjxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
Tmljb3NpYT4gbV9hbmltYXRpb25UaW1lcjsKLSNlbmRpZgorICAgIHZvaWQgc3RhcnRBbmltYXRp
b25DYWxsYmFjayhTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciYpIGZpbmFsOworICAgIHZvaWQg
c3RvcEFuaW1hdGlvbkNhbGxiYWNrKFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyJikgZmluYWw7
CisKKyAgICBib29sIGFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSBjb25zdCBmaW5hbDsKKyAg
ICBib29sIGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgY29uc3QgZmluYWw7CisKKyAgICB2b2lk
IHNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzIHN0YXR1cykgZmlu
YWwgeyBtX3Njcm9sbEJlaGF2aW9yU3RhdHVzID0gc3RhdHVzOyB9CisgICAgU2Nyb2xsQmVoYXZp
b3JTdGF0dXMgc2Nyb2xsQmVoYXZpb3JTdGF0dXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nj
cm9sbEJlaGF2aW9yU3RhdHVzOyB9CisKKyAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5KGNvbnN0
IEZsb2F0U2l6ZSYpIGZpbmFsOworICAgIHZvaWQgaW1tZWRpYXRlU2Nyb2xsQnlXaXRob3V0Q29u
dGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFNpemUmKSBmaW5hbDsKKworICAgIHZvaWQg
YWRqdXN0U2Nyb2xsUG9zaXRpb25Ub0JvdW5kc0lmTmVjZXNzYXJ5KCkgZmluYWw7CisKKyAgICBG
bG9hdFBvaW50IHNjcm9sbE9mZnNldCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgd2lsbFN0YXJ0
U2Nyb2xsU25hcEFuaW1hdGlvbigpIGZpbmFsOworICAgIHZvaWQgZGlkU3RvcFNjcm9sbFNuYXBB
bmltYXRpb24oKSBmaW5hbDsKKyAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdCBmaW5h
bDsKKyAgICBTY3JvbGxFeHRlbnRzIHNjcm9sbEV4dGVudHMoKSBjb25zdCBmaW5hbDsKKworICAg
IGJvb2wgc2Nyb2xsQW5pbWF0aW9uRW5hYmxlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Ny
b2xsQW5pbWF0b3JFbmFibGVkOyB9CisKKyAgICBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciBt
X3Njcm9sbENvbnRyb2xsZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJ1bkxvb3A6OlRpbWVyPFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhPj4gbV9hbmltYXRpb25UaW1l
cjsKKyAgICBTY3JvbGxCZWhhdmlvclN0YXR1cyBtX3Njcm9sbEJlaGF2aW9yU3RhdHVzIHsgU2Ny
b2xsQmVoYXZpb3JTdGF0dXM6Ok5vdEluQW5pbWF0aW9uIH07CisKKyAgICBib29sIG1fc2Nyb2xs
QW5pbWF0b3JFbmFibGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0
aWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaApp
bmRleCBkNDMwMmIzNzg3ODFlZjU0ODY5YTAxNjhlYzZlOWRlNDQxMjE0Mzg5Li4zNzdiZDUyYmY1
ZjYzOTgwZjRkMWI2N2FmOThlMTZiYjdjMGJmYzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCkBAIC02MywxNSArNjMsMTQgQEAgcHVi
bGljOgogICAgIGJvb2wgc3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29u
c3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiB2ZWxvY2l0eSwg
Ym9vbCBtYXlIU2Nyb2xsLCBib29sIG1heVZTY3JvbGwpOwogICAgIGJvb2wgcmV0YXJnZXRBY3Rp
dmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3T2Zmc2V0KSBmaW5hbDsKIAotICAgIC8v
IEZJWE1FOiBvbmx5IHB1YmxpYyBmb3IgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWEuCi0gICAgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUpIGZpbmFs
OwotCiAgICAgdm9pZCBhcHBlbmRUb1Njcm9sbEhpc3RvcnkoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50Jik7CiAgICAgdm9pZCBjbGVhclNjcm9sbEhpc3RvcnkoKTsKIAogICAgIEZsb2F0U2l6ZSBj
b21wdXRlVmVsb2NpdHkoKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIHNlcnZpY2VBbmltYXRpb24o
TW9ub3RvbmljVGltZSkgZmluYWw7CisKICAgICBzdGQ6Om9wdGlvbmFsPFBlckF4aXNEYXRhPiBt
X2hvcml6b250YWxEYXRhOwogICAgIHN0ZDo6b3B0aW9uYWw8UGVyQXhpc0RhdGE+IG1fdmVydGlj
YWxEYXRhOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRpb25TbW9vdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNt
b290aC5oCmluZGV4IDlkNWM2M2QzYzJjMjNkMWM3MDUxNzM0NzdjYTJkZWVkMzlkY2ZkNmEuLmZl
ZjA0ODFjNmViMGJjZDNiOGFhZmU0NjNkMDYzNjI5MGFmZTliNTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCkBAIC00MSwxNiArNDEsMTcg
QEAgcHVibGljOgogICAgIGJvb2wgc3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24oY29u
c3QgRmxvYXRQb2ludCYgZnJvbU9mZnNldCwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb25P
ZmZzZXQpOwogICAgIGJvb2wgcmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2lu
dCYgbmV3T2Zmc2V0KSBmaW5hbDsKIAotICAgIC8vIEZJWE1FOiBvbmx5IHB1YmxpYyBmb3IgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuCi0gICAgdm9pZCB1cGRhdGVT
Y3JvbGxFeHRlbnRzKCkgZmluYWw7Ci0gICAgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25p
Y1RpbWUpIGZpbmFsOworICAgIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbk9mZnNldDsgfQogCiBwcml2YXRlOgogCiAgICAg
Ym9vbCBzdGFydE9yUmV0YXJnZXRBbmltYXRpb24oY29uc3QgU2Nyb2xsRXh0ZW50cyYsIGNvbnN0
IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KTsKLSAgICAKKworICAgIHZvaWQgdXBkYXRl
U2Nyb2xsRXh0ZW50cygpIGZpbmFsOworICAgIHZvaWQgc2VydmljZUFuaW1hdGlvbihNb25vdG9u
aWNUaW1lKSBmaW5hbDsKKwogICAgIFNlY29uZHMgZHVyYXRpb25Gcm9tRGlzdGFuY2UoY29uc3Qg
RmxvYXRTaXplJikgY29uc3Q7Ci0gICAgCisKICAgICBib29sIGFuaW1hdGVTY3JvbGwoTW9ub3Rv
bmljVGltZSk7CiAKICAgICBTZWNvbmRzIG1fZHVyYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXggMGY4M2M4MmVjZDBjYWNlODNkZjkxMDJmNWJh
YjU1ZDZiYTA2MzhjNS4uZDViYjVlOWJkMGNhYWZiMmY4ZDUwNTgyYjQ3ZjU1M2Q5ODE0OWM1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtMTI3LDcg
KzEyNyw3IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld1Bvc2l0aW9uCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpy
ZXRhcmdldFJ1bm5pbmdBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3UG9zaXRpb24pCiB7
CiAgICAgQVNTRVJUKHNjcm9sbGFibGVBcmVhKCkuY3VycmVudFNjcm9sbEJlaGF2aW9yU3RhdHVz
KCkgPT0gU2Nyb2xsQmVoYXZpb3JTdGF0dXM6OkluTm9uTmF0aXZlQW5pbWF0aW9uKTsKLSAgICBt
X3Njcm9sbENvbnRyb2xsZXIucmVnYXJnZXRBbmltYXRlZFNjcm9sbChvZmZzZXRGcm9tUG9zaXRp
b24obmV3UG9zaXRpb24pKTsKKyAgICBtX3Njcm9sbENvbnRyb2xsZXIucmV0YXJnZXRBbmltYXRl
ZFNjcm9sbChvZmZzZXRGcm9tUG9zaXRpb24obmV3UG9zaXRpb24pKTsKIH0KIAogRmxvYXRQb2lu
dCBTY3JvbGxBbmltYXRvcjo6b2Zmc2V0RnJvbVBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBv
c2l0aW9uKSBjb25zdApAQCAtMTg1LDQ5ICsxODUsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpo
YW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAjZW5kaWYKIAotICAgIFNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhciA9
IG1fc2Nyb2xsYWJsZUFyZWEuaG9yaXpvbnRhbFNjcm9sbGJhcigpOwotICAgIFNjcm9sbGJhciog
dmVydGljYWxTY3JvbGxiYXIgPSBtX3Njcm9sbGFibGVBcmVhLnZlcnRpY2FsU2Nyb2xsYmFyKCk7
Ci0KLSAgICAvLyBBY2NlcHQgdGhlIGV2ZW50IGlmIHdlIGhhdmUgYSBzY3JvbGxiYXIgaW4gdGhh
dCBkaXJlY3Rpb24gYW5kIGNhbiBzdGlsbAotICAgIC8vIHNjcm9sbCBhbnkgZnVydGhlci4KLSAg
ICBmbG9hdCBkZWx0YVggPSBob3Jpem9udGFsU2Nyb2xsYmFyID8gZS5kZWx0YVgoKSA6IDA7Ci0g
ICAgZmxvYXQgZGVsdGFZID0gdmVydGljYWxTY3JvbGxiYXIgPyBlLmRlbHRhWSgpIDogMDsKLQot
ICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwotCi0gICAgSW50U2l6ZSBtYXhGb3J3YXJkU2Nyb2xs
RGVsdGEgPSBtX3Njcm9sbGFibGVBcmVhLm1heGltdW1TY3JvbGxQb3NpdGlvbigpIC0gbV9zY3Jv
bGxhYmxlQXJlYS5zY3JvbGxQb3NpdGlvbigpOwotICAgIEludFNpemUgbWF4QmFja3dhcmRTY3Jv
bGxEZWx0YSA9IG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsUG9zaXRpb24oKSAtIG1fc2Nyb2xsYWJs
ZUFyZWEubWluaW11bVNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgaWYgKChkZWx0YVggPCAwICYmIG1h
eEZvcndhcmRTY3JvbGxEZWx0YS53aWR0aCgpID4gMCkKLSAgICAgICAgfHwgKGRlbHRhWCA+IDAg
JiYgbWF4QmFja3dhcmRTY3JvbGxEZWx0YS53aWR0aCgpID4gMCkKLSAgICAgICAgfHwgKGRlbHRh
WSA8IDAgJiYgbWF4Rm9yd2FyZFNjcm9sbERlbHRhLmhlaWdodCgpID4gMCkKLSAgICAgICAgfHwg
KGRlbHRhWSA+IDAgJiYgbWF4QmFja3dhcmRTY3JvbGxEZWx0YS5oZWlnaHQoKSA+IDApKSB7Ci0g
ICAgICAgIGhhbmRsZWQgPSB0cnVlOwotCi0gICAgICAgIE9wdGlvblNldDxTY3JvbGxCZWhhdmlv
cj4gYmVoYXZpb3IoU2Nyb2xsQmVoYXZpb3I6OkRvRGlyZWN0aW9uYWxTbmFwcGluZyk7Ci0gICAg
ICAgIGlmIChlLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSkKLSAgICAgICAgICAgIGJlaGF2
aW9yLmFkZChTY3JvbGxCZWhhdmlvcjo6TmV2ZXJBbmltYXRlKTsKLQotICAgICAgICBpZiAoZGVs
dGFZKSB7Ci0gICAgICAgICAgICBpZiAoZS5ncmFudWxhcml0eSgpID09IFNjcm9sbEJ5UGFnZVdo
ZWVsRXZlbnQpIHsKLSAgICAgICAgICAgICAgICBib29sIG5lZ2F0aXZlID0gZGVsdGFZIDwgMDsK
LSAgICAgICAgICAgICAgICBkZWx0YVkgPSBTY3JvbGxiYXI6OnBhZ2VTdGVwRGVsdGEobV9zY3Jv
bGxhYmxlQXJlYS52aXNpYmxlSGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2
ZSkKLSAgICAgICAgICAgICAgICAgICAgZGVsdGFZID0gLWRlbHRhWTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHNjcm9sbChWZXJ0aWNhbFNjcm9sbGJhciwgU2Nyb2xsQnlQaXhlbCwgdmVy
dGljYWxTY3JvbGxiYXItPnBpeGVsU3RlcCgpLCAtZGVsdGFZLCBiZWhhdmlvcik7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoZGVsdGFYKSB7Ci0gICAgICAgICAgICBpZiAoZS5ncmFudWxhcml0
eSgpID09IFNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQpIHsKLSAgICAgICAgICAgICAgICBib29sIG5l
Z2F0aXZlID0gZGVsdGFYIDwgMDsKLSAgICAgICAgICAgICAgICBkZWx0YVggPSBTY3JvbGxiYXI6
OnBhZ2VTdGVwRGVsdGEobV9zY3JvbGxhYmxlQXJlYS52aXNpYmxlV2lkdGgoKSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKG5lZ2F0aXZlKQotICAgICAgICAgICAgICAgICAgICBkZWx0YVggPSAtZGVs
dGFYOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2Nyb2xsKEhvcml6b250YWxTY3JvbGxi
YXIsIFNjcm9sbEJ5UGl4ZWwsIGhvcml6b250YWxTY3JvbGxiYXItPnBpeGVsU3RlcCgpLCAtZGVs
dGFYLCBiZWhhdmlvcik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGhhbmRsZWQ7Cisg
ICAgcmV0dXJuIG1fc2Nyb2xsQ29udHJvbGxlci5oYW5kbGVXaGVlbEV2ZW50KGUpOwogfQogCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKQEAgLTQxNSw2ICszNzMsMTMgQEAgdm9pZCBTY3JvbGxB
bmltYXRvcjo6cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24o
V2hlZWxFdmVudFQKIH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oR1RLKSB8fCBVU0UoTklDT1NJ
QSkKK2Jvb2wgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkVuYWJsZWQoKSBjb25zdAor
eworICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLnNjcm9sbEFuaW1hdG9yRW5hYmxlZCgpICYm
IHBsYXRmb3JtQWxsb3dzU2Nyb2xsQW5pbWF0aW9uKCk7Cit9CisjZW5kaWYKKwogdm9pZCBTY3Jv
bGxBbmltYXRvcjo6Y2FuY2VsQW5pbWF0aW9ucygpCiB7CiAgICAgbV9zY3JvbGxDb250cm9sbGVy
LnN0b3BBbmltYXRlZFNjcm9sbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmgKaW5kZXggYjNhZmFhODVlYmY4OWRjY2JjMjU2NmU2ZjJhZWUxYzFmZjE5NjVmZi4uZjUy
N2MzNzZiNWQzNjBiYjA3YzgyZGFkZTlhMTQxYmZhNjlmNjNhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCkBAIC01NCw3ICs1NCwxMCBAQCBjbGFzcyBTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlclRpbWVyOwogY2xhc3MgU2Nyb2xsQW5pbWF0b3IgOiBwcml2YXRl
IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1h
dG9yPiBjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFNjcm9sbEFuaW1hdG9yPiBjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3I+KHNjcm9sbGFi
bGVBcmVhKTsKKyAgICB9CiAKICAgICBleHBsaWNpdCBTY3JvbGxBbmltYXRvcihTY3JvbGxhYmxl
QXJlYSYpOwogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdG9yKCk7CkBAIC0xNjIsNiArMTY1LDEw
IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZl
cnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRp
ZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikgY29uc3QgZmluYWw7CiAj
ZW5kaWYKIAorI2lmIFBMQVRGT1JNKEdUSykgfHwgVVNFKE5JQ09TSUEpCisgICAgYm9vbCBzY3Jv
bGxBbmltYXRpb25FbmFibGVkKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKwogICAgIHN0YXRpYyBG
bG9hdFNpemUgZGVsdGFGcm9tU3RlcChTY3JvbGxiYXJPcmllbnRhdGlvbiwgZmxvYXQgc3RlcCwg
ZmxvYXQgbXVsdGlwbGllcik7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcAppbmRleCA4YjNkZWU3
ZTRlNjI2OWU5NTY5M2M0NWM1NTFlMzdhMWU4YjEyZjFhLi40NTYzODI2MDNhOTUzZTIxMDVmZWYw
M2Y5MWI5MGE3MTg3YmJhNDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCkBAIC0zMCwxMyArMzAsMTYgQEAKICNp
bmNsdWRlICJMYXlvdXRTaXplLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtV2hlZWxFdmVudC5oIgotI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvbktpbmV0aWMuaCIK
ICNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25Nb21lbnR1bS5oIgogI2luY2x1ZGUgIlNjcm9sbEFu
aW1hdGlvblNtb290aC5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAi
V2hlZWxFdmVudFRlc3RNb25pdG9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5o
PgogCisjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKSAmJiAhUExBVEZPUk0oTUFDKQorI2lu
Y2x1ZGUgIlNjcm9sbEFuaW1hdGlvbktpbmV0aWMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlcihTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlckNsaWVudCYgY2xpZW50KQpAQCAtOTks
MTIgKzEwMiwxMiBAQCBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydEFuaW1h
dGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihGbG9hdFBvaW50IHN0YQogICAgIHJldHVybiBkb3duY2Fz
dDxTY3JvbGxBbmltYXRpb25TbW9vdGg+KCptX2N1cnJlbnRBbmltYXRpb24pLnN0YXJ0QW5pbWF0
ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKHN0YXJ0T2Zmc2V0LCBkZXN0aW5hdGlvbk9mZnNldCk7CiB9
CiAKLWJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnJlZ2FyZ2V0QW5pbWF0ZWRTY3Jv
bGwoRmxvYXRQb2ludCBuZXdEZXN0aW5hdGlvbk9mZnNldCkKK2Jvb2wgU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXI6OnJldGFyZ2V0QW5pbWF0ZWRTY3JvbGwoRmxvYXRQb2ludCBuZXdEZXN0aW5h
dGlvbk9mZnNldCkKIHsKICAgICBpZiAoIWlzPFNjcm9sbEFuaW1hdGlvblNtb290aD4obV9jdXJy
ZW50QW5pbWF0aW9uLmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIExP
R19XSVRIX1NUUkVBTShTY3JvbGxBbmltYXRpb25zLCBzdHJlYW0gPDwgIlNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyICIgPDwgdGhpcyA8PCAiIHJlZ2FyZ2V0QW5pbWF0ZWRTY3JvbGwgdG8gIiA8
PCBuZXdEZXN0aW5hdGlvbk9mZnNldCk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbEFuaW1h
dGlvbnMsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgIiA8PCB0aGlzIDw8
ICIgcmV0YXJnZXRBbmltYXRlZFNjcm9sbCB0byAiIDw8IG5ld0Rlc3RpbmF0aW9uT2Zmc2V0KTsK
IAogICAgIEFTU0VSVChtX2N1cnJlbnRBbmltYXRpb24tPmlzQWN0aXZlKCkpOwogICAgIHJldHVy
biBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25TbW9vdGg+KCptX2N1cnJlbnRBbmltYXRpb24pLnJl
dGFyZ2V0QWN0aXZlQW5pbWF0aW9uKG5ld0Rlc3RpbmF0aW9uT2Zmc2V0KTsKQEAgLTExOCwzNSAr
MTIxLDYgQEAgdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RvcEFuaW1hdGVkU2Ny
b2xsKCkKICAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uLT5zdG9wKCk7CiB9CiAKLWJvb2wgU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yS2luZXRpY1Njcm9s
bGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQotewotI2lmIEVOQUJMRShLSU5F
VElDX1NDUk9MTElORykKLSAgICBpZiAobV9jdXJyZW50QW5pbWF0aW9uICYmICFpczxTY3JvbGxB
bmltYXRpb25LaW5ldGljPihtX2N1cnJlbnRBbmltYXRpb24uZ2V0KCkpKSB7Ci0gICAgICAgIG1f
Y3VycmVudEFuaW1hdGlvbi0+c3RvcCgpOwotICAgICAgICBtX2N1cnJlbnRBbmltYXRpb24gPSBu
dWxscHRyOwotICAgIH0KLQotICAgIGlmICghbV9jdXJyZW50QW5pbWF0aW9uKQotICAgICAgICBt
X2N1cnJlbnRBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KCp0
aGlzKTsKLQotICAgIGF1dG8mIGtpbmV0aWNBbmltYXRpb24gPSBkb3duY2FzdDxTY3JvbGxBbmlt
YXRpb25LaW5ldGljPigqbV9jdXJyZW50QW5pbWF0aW9uKTsKLSAgICBraW5ldGljQW5pbWF0aW9u
LmFwcGVuZFRvU2Nyb2xsSGlzdG9yeShldmVudCk7Ci0KLSAgICBpZiAoZXZlbnQuaXNFbmRPZk5v
bk1vbWVudHVtU2Nyb2xsKCkpIHsKLSAgICAgICAga2luZXRpY0FuaW1hdGlvbi5zdGFydEFuaW1h
dGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShtX2NsaWVudC5zY3JvbGxPZmZzZXQoKSwga2lu
ZXRpY0FuaW1hdGlvbi5jb21wdXRlVmVsb2NpdHkoKSwgbV9jbGllbnQuYWxsb3dzSG9yaXpvbnRh
bFNjcm9sbGluZygpLCBtX2NsaWVudC5hbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmIChldmVudC5pc1RyYW5zaXRpb25pbmdUb01v
bWVudHVtU2Nyb2xsKCkpIHsKLSAgICAgICAga2luZXRpY0FuaW1hdGlvbi5jbGVhclNjcm9sbEhp
c3RvcnkoKTsKLSAgICAgICAga2luZXRpY0FuaW1hdGlvbi5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0
aEluaXRpYWxWZWxvY2l0eShtX2NsaWVudC5zY3JvbGxPZmZzZXQoKSwgZXZlbnQuc3dpcGVWZWxv
Y2l0eSgpLCBtX2NsaWVudC5hbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nKCksIG1fY2xpZW50LmFs
bG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0j
ZWxzZQotICAgIFVOVVNFRF9QQVJBTShldmVudCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXJ0TW9tZW50dW1TY3Jv
bGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxE
ZWx0YSwgY29uc3QgRnVuY3Rpb248RmxvYXRQb2ludChjb25zdCBGbG9hdFBvaW50Jik+JiBkZXN0
aW5hdGlvbk1vZGlmaWVyKQogewogICAgIGlmIChtX2N1cnJlbnRBbmltYXRpb24pIHsKQEAgLTI0
OSw2ICsyMjMsMTIxIEBAIGZsb2F0IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjphZGp1c3Rl
ZFNjcm9sbERlc3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhpcyBheGlzCiAgICAgcmV0dXJuIG1fc2Ny
b2xsU25hcFN0YXRlLT5hZGp1c3RlZFNjcm9sbERlc3RpbmF0aW9uKGF4aXMsIGRlc3RpbmF0aW9u
T2Zmc2V0LCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXQsIG1fY2xpZW50LnNjcm9sbEV4dGVudHMo
KSwgbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCkpOwogfQogCisjaWYgIVBMQVRGT1JNKE1BQykK
KyNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCitib29sIFNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvcktpbmV0aWNTY3JvbGxpbmcoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAoaXM8U2Nyb2xsQW5pbWF0aW9uS2luZXRp
Yz4obV9jdXJyZW50QW5pbWF0aW9uLmdldCgpKSkKKyAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9u
LT5zdG9wKCk7CisKKyAgICBpZiAoIWV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSkg
eworICAgICAgICBtX3Njcm9sbEhpc3RvcnkuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIG1fc2Nyb2xsSGlzdG9yeS5hcHBlbmQoZXZlbnQpOworCisgICAgaWYg
KCFldmVudC5pc0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSAmJiAhZXZlbnQuaXNUcmFuc2l0aW9u
aW5nVG9Nb21lbnR1bVNjcm9sbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
bV9jdXJyZW50QW5pbWF0aW9uICYmICFpczxTY3JvbGxBbmltYXRpb25LaW5ldGljPihtX2N1cnJl
bnRBbmltYXRpb24uZ2V0KCkpKSB7CisgICAgICAgIG1fY3VycmVudEFuaW1hdGlvbi0+c3RvcCgp
OworICAgICAgICBtX2N1cnJlbnRBbmltYXRpb24gPSBudWxscHRyOworICAgIH0KKworICAgIGlm
ICghbV9jdXJyZW50QW5pbWF0aW9uKQorICAgICAgICBtX2N1cnJlbnRBbmltYXRpb24gPSBtYWtl
VW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KCp0aGlzKTsKKworICAgIGF1dG8mIGtpbmV0
aWNBbmltYXRpb24gPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25LaW5ldGljPigqbV9jdXJyZW50
QW5pbWF0aW9uKTsKKyAgICB3aGlsZSAoIW1fc2Nyb2xsSGlzdG9yeS5pc0VtcHR5KCkpCisgICAg
ICAgIGtpbmV0aWNBbmltYXRpb24uYXBwZW5kVG9TY3JvbGxIaXN0b3J5KG1fc2Nyb2xsSGlzdG9y
eS50YWtlRmlyc3QoKSk7CisKKyAgICBpZiAoZXZlbnQuaXNFbmRPZk5vbk1vbWVudHVtU2Nyb2xs
KCkpIHsKKyAgICAgICAga2luZXRpY0FuaW1hdGlvbi5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aElu
aXRpYWxWZWxvY2l0eShtX2NsaWVudC5zY3JvbGxPZmZzZXQoKSwga2luZXRpY0FuaW1hdGlvbi5j
b21wdXRlVmVsb2NpdHkoKSwgbV9jbGllbnQuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpLCBt
X2NsaWVudC5hbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorICAgIGlmIChldmVudC5pc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xsKCkp
IHsKKyAgICAgICAga2luZXRpY0FuaW1hdGlvbi5jbGVhclNjcm9sbEhpc3RvcnkoKTsKKyAgICAg
ICAga2luZXRpY0FuaW1hdGlvbi5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0
eShtX2NsaWVudC5zY3JvbGxPZmZzZXQoKSwgZXZlbnQuc3dpcGVWZWxvY2l0eSgpLCBtX2NsaWVu
dC5hbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nKCksIG1fY2xpZW50LmFsbG93c1ZlcnRpY2FsU2Ny
b2xsaW5nKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKworYm9vbCBTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQpCit7CisjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQorICAg
IGlmIChwcm9jZXNzV2hlZWxFdmVudEZvcktpbmV0aWNTY3JvbGxpbmcod2hlZWxFdmVudCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisKKyAgICBhdXRvIHNjcm9sbE9mZnNldCA9IG1f
Y2xpZW50LnNjcm9sbE9mZnNldCgpOworICAgIGZsb2F0IGRlbHRhWCA9IG1fY2xpZW50LmFsbG93
c0hvcml6b250YWxTY3JvbGxpbmcoKSA/IHdoZWVsRXZlbnQuZGVsdGFYKCkgOiAwOworICAgIGZs
b2F0IGRlbHRhWSA9IG1fY2xpZW50LmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgPyB3aGVlbEV2
ZW50LmRlbHRhWSgpIDogMDsKKyAgICBhdXRvIGV4dGVudHMgPSBtX2NsaWVudC5zY3JvbGxFeHRl
bnRzKCk7CisgICAgYXV0byBtaW5Qb3NpdGlvbiA9IGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNl
dCgpOworICAgIGF1dG8gbWF4UG9zaXRpb24gPSBleHRlbnRzLm1heGltdW1TY3JvbGxPZmZzZXQo
KTsKKworICAgIGlmICgoZGVsdGFYIDwgMCAmJiBzY3JvbGxPZmZzZXQueCgpID49IG1heFBvc2l0
aW9uLngoKSkKKyAgICAgICAgfHwgKGRlbHRhWCA+IDAgJiYgc2Nyb2xsT2Zmc2V0LngoKSA8PSBt
aW5Qb3NpdGlvbi54KCkpKQorICAgICAgICBkZWx0YVggPSAwOworICAgIGlmICgoZGVsdGFZIDwg
MCAmJiBzY3JvbGxPZmZzZXQueSgpID49IG1heFBvc2l0aW9uLnkoKSkKKyAgICAgICAgfHwgKGRl
bHRhWSA+IDAgJiYgc2Nyb2xsT2Zmc2V0LnkoKSA8PSBtaW5Qb3NpdGlvbi55KCkpKQorICAgICAg
ICBkZWx0YVkgPSAwOworCisgICAgaWYgKCFkZWx0YVggJiYgIWRlbHRhWSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgaWYgKHdoZWVsRXZlbnQuZ3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxC
eVBhZ2VXaGVlbEV2ZW50KSB7CisgICAgICAgIGlmIChkZWx0YVgpIHsKKyAgICAgICAgICAgIGJv
b2wgbmVnYXRpdmUgPSBkZWx0YVggPCAwOworICAgICAgICAgICAgZGVsdGFYID0gU2Nyb2xsYmFy
OjpwYWdlU3RlcERlbHRhKGV4dGVudHMuY29udGVudHNTaXplLndpZHRoKCkpOworICAgICAgICAg
ICAgaWYgKG5lZ2F0aXZlKQorICAgICAgICAgICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGRlbHRhWSkgeworICAgICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9
IGRlbHRhWSA8IDA7CisgICAgICAgICAgICBkZWx0YVkgPSBTY3JvbGxiYXI6OnBhZ2VTdGVwRGVs
dGEoZXh0ZW50cy5jb250ZW50c1NpemUuaGVpZ2h0KCkpOworICAgICAgICAgICAgaWYgKG5lZ2F0
aXZlKQorICAgICAgICAgICAgICAgIGRlbHRhWSA9IC1kZWx0YVk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBkZWx0YVggPSAtZGVsdGFYOworICAgIGRlbHRhWSA9IC1kZWx0YVk7CisKKyAgICBp
ZiAoc25hcE9mZnNldHNJbmZvKCkgJiYgIXNuYXBPZmZzZXRzSW5mbygpLT5pc0VtcHR5KCkpIHsK
KyAgICAgICAgZmxvYXQgc2NhbGUgPSBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKTsKKyAgICAg
ICAgYXV0byBvcmlnaW5hbE9mZnNldCA9IExheW91dFBvaW50KHNjcm9sbE9mZnNldC54KCkgLyBz
Y2FsZSwgc2Nyb2xsT2Zmc2V0LnkoKSAvIHNjYWxlKTsKKyAgICAgICAgYXV0byBuZXdPZmZzZXQg
PSBMYXlvdXRQb2ludCgoc2Nyb2xsT2Zmc2V0LngoKSArIGRlbHRhWCkgLyBzY2FsZSwgKHNjcm9s
bE9mZnNldC55KCkgKyBkZWx0YVkpIC8gc2NhbGUpOworCisgICAgICAgIGF1dG8gb2Zmc2V0WCA9
IHNuYXBPZmZzZXRzSW5mbygpLT5jbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhv
cml6b250YWwsIExheW91dFNpemUoZXh0ZW50cy5jb250ZW50c1NpemUpLCBuZXdPZmZzZXQsIGRl
bHRhWCwgb3JpZ2luYWxPZmZzZXQueCgpKS5maXJzdDsKKyAgICAgICAgYXV0byBvZmZzZXRZID0g
c25hcE9mZnNldHNJbmZvKCktPmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVy
dGljYWwsIExheW91dFNpemUoZXh0ZW50cy5jb250ZW50c1NpemUpLCBuZXdPZmZzZXQsIGRlbHRh
WSwgb3JpZ2luYWxPZmZzZXQueSgpKS5maXJzdDsKKworICAgICAgICBkZWx0YVggPSAob2Zmc2V0
WCAtIG9yaWdpbmFsT2Zmc2V0LngoKSkgKiBzY2FsZTsKKyAgICAgICAgZGVsdGFZID0gKG9mZnNl
dFkgLSBvcmlnaW5hbE9mZnNldC55KCkpICogc2NhbGU7CisgICAgfQorCisjaWYgRU5BQkxFKFNN
T09USF9TQ1JPTExJTkcpCisgICAgaWYgKG1fY2xpZW50LnNjcm9sbEFuaW1hdGlvbkVuYWJsZWQo
KSAmJiAhd2hlZWxFdmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpIHsKKyAgICAgICAg
aWYgKGlzPFNjcm9sbEFuaW1hdGlvblNtb290aD4obV9jdXJyZW50QW5pbWF0aW9uLmdldCgpKSkg
eworICAgICAgICAgICAgYXV0byBsYXN0RGVzdGluYXRpb25PZmZzZXQgPSBkb3duY2FzdDxTY3Jv
bGxBbmltYXRpb25TbW9vdGg+KCptX2N1cnJlbnRBbmltYXRpb24pLmRlc3RpbmF0aW9uT2Zmc2V0
KCk7CisgICAgICAgICAgICByZXRhcmdldEFuaW1hdGVkU2Nyb2xsKGxhc3REZXN0aW5hdGlvbk9m
ZnNldCArIEZsb2F0U2l6ZSB7IGRlbHRhWCwgZGVsdGFZIH0pOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKHNjcm9sbE9mZnNldCwg
c2Nyb2xsT2Zmc2V0ICsgRmxvYXRTaXplIHsgZGVsdGFYLCBkZWx0YVkgfSk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyNlbmRpZgorCisgICAgbV9jbGllbnQuaW1tZWRpYXRlU2Nyb2xs
QnkoeyBkZWx0YVgsIGRlbHRhWSB9KTsKKworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisK
IHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJ
bmRleEZvckNsaWVudE9mZnNldCgpCiB7CiAgICAgaWYgKCF1c2VzU2Nyb2xsU25hcCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
LmgKaW5kZXggYjYyNGIwMjY1MWVkZjY2NzY3Njk1ZGU1ZWYxN2VkZDZkNDBlMzJjMy4uZjk1NDQz
MjU5NTU0YTkyMzFmN2E2ZWNlY2IzNDczMDM4ZDZlZTg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgiCiAjaW5jbHVkZSAiU2Ny
b2xsVHlwZXMuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCIKKyNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgogCkBAIC0xMTgsNiArMTE5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRTdG9wU2Nyb2xsU25hcEFuaW1hdGlvbigpIHsgfQogICAgIHZpcnR1YWwgZmxvYXQg
cGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU2Nyb2xsRXh0ZW50cyBz
Y3JvbGxFeHRlbnRzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxBbmltYXRp
b25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogY2xhc3MgU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIgOiBwdWJsaWMgU2Nyb2xsQW5pbWF0aW9uQ2xpZW50IHsKQEAgLTEz
MiwxMiArMTM0LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCk7
CiAKICAgICBib29sIHN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKEZsb2F0UG9pbnQg
c3RhcnRPZmZzZXQsIEZsb2F0UG9pbnQgZGVzdGluYXRpb25PZmZzZXQpOwotICAgIGJvb2wgcmVn
YXJnZXRBbmltYXRlZFNjcm9sbChGbG9hdFBvaW50IG5ld0Rlc3RpbmF0aW9uT2Zmc2V0KTsKKyAg
ICBib29sIHJldGFyZ2V0QW5pbWF0ZWRTY3JvbGwoRmxvYXRQb2ludCBuZXdEZXN0aW5hdGlvbk9m
ZnNldCk7CiAgICAgdm9pZCBzdG9wQW5pbWF0ZWRTY3JvbGwoKTsKIAotICAgIC8vIEZJWE1FOiBI
YWNrIGZvciBTY3JvbGxBbmltYXRvckdlbmVyaWMuIE5lZWRzIGNsZWFudXAuCi0gICAgYm9vbCBw
cm9jZXNzV2hlZWxFdmVudEZvcktpbmV0aWNTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50Jik7Ci0KICAgICBib29sIHN0YXJ0TW9tZW50dW1TY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5
KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlh
bFZlbG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgV1RGOjpGdW5j
dGlvbjxGbG9hdFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmKT4mIGRlc3RpbmF0aW9uTW9kaWZpZXIp
OwogCiAgICAgdm9pZCBiZWdpbktleWJvYXJkU2Nyb2xsaW5nKCk7CkBAIC0xNjMsMTAgKzE2Miwx
MCBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbmV2ZXIgY2FsbGVkLiBXZSBuZXZl
ciBzZXQgbV9hY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UgYmFjayB0byBmYWxzZS4KICAg
ICB2b2lkIHNldFNjcm9sbFNuYXBJbmRleERpZENoYW5nZShib29sIHN0YXRlKSB7IG1fYWN0aXZl
U2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlID0gc3RhdGU7IH0KIAotI2lmIFBMQVRGT1JNKE1BQykK
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgaGFuZGxlZC4KICAgICBib29sIGhhbmRsZVdoZWVsRXZl
bnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKKyNpZiBQTEFURk9STShNQUMpCiAgICAg
ZW51bSBjbGFzcyBXaGVlbEF4aXNCaWFzIHsgTm9uZSwgVmVydGljYWwgfTsKICAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxTY3JvbGxEaXJlY3Rpb24+IGRpcmVjdGlvbkZyb21FdmVudChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmLCBzdGQ6Om9wdGlvbmFsPFNjcm9sbEV2ZW50QXhpcz4sIFdoZWVs
QXhpc0JpYXMgPSBXaGVlbEF4aXNCaWFzOjpOb25lKTsKICAgICBzdGF0aWMgRmxvYXRTaXplIHdo
ZWVsRGVsdGFCaWFzaW5nVG93YXJkc1ZlcnRpY2FsKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYp
OwpAQCAtMjE4LDcgKzIxNywxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9u
RGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZsb2F0UG9pbnQmIC8qIGN1cnJlbnRP
ZmZzZXQgKi8pIGZpbmFsOwogICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uV2lsbFN0YXJ0KFNjcm9s
bEFuaW1hdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkRW5kKFNjcm9s
bEFuaW1hdGlvbiYpIGZpbmFsOwotICAgIFNjcm9sbEV4dGVudHMgc2Nyb2xsRXh0ZW50c0ZvckFu
aW1hdGlvbihTY3JvbGxBbmltYXRpb24mKSAgZmluYWw7CisgICAgU2Nyb2xsRXh0ZW50cyBzY3Jv
bGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYpIGZpbmFsOworCisjaWYgRU5B
QkxFKEtJTkVUSUNfU0NST0xMSU5HKSAmJiAhUExBVEZPUk0oTUFDKQorICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiBoYW5kbGVkLgorICAgIGJvb2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JLaW5ldGljU2Ny
b2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOworCisgICAgRGVxdWU8UGxhdGZvcm1X
aGVlbEV2ZW50PiBtX3Njcm9sbEhpc3Rvcnk7CisjZW5kaWYKIAogICAgIFNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyQ2xpZW50JiBtX2NsaWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDNhMzZhODQ3NjMzYTRkODA4NzJiZDNlMjUxY2RmMzli
NWNkNjQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTYg
SWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3JHZW5l
cmljLmgiCi0KLSNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNy
ZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCi17Ci0gICAgcmV0dXJuIG1ha2VV
bmlxdWU8U2Nyb2xsQW5pbWF0b3JHZW5lcmljPihzY3JvbGxhYmxlQXJlYSk7Ci19Ci0KLVNjcm9s
bEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljKFNjcm9sbGFibGVBcmVhJiBz
Y3JvbGxhYmxlQXJlYSkKLSAgICA6IFNjcm9sbEFuaW1hdG9yKHNjcm9sbGFibGVBcmVhKQotewot
fQotCi1TY3JvbGxBbmltYXRvckdlbmVyaWM6On5TY3JvbGxBbmltYXRvckdlbmVyaWMoKSA9IGRl
ZmF1bHQ7Ci0KLS8vIEZJWE1FOiBQdXNoIHRoaXMgaW50byB0aGUgYmFzZSBjbGFzcyBzbyB0aGF0
IFNjcm9sbEFuaW1hdG9yR2VuZXJpYyBjYW4gYmUgcmVtb3ZlZC4KLWJvb2wgU2Nyb2xsQW5pbWF0
b3JHZW5lcmljOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZl
bnQpCi17Ci0gICAgaWYgKG1fc2Nyb2xsQ29udHJvbGxlci5wcm9jZXNzV2hlZWxFdmVudEZvcktp
bmV0aWNTY3JvbGxpbmcoZXZlbnQpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVy
biBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudChldmVudCk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVy
aWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlZTVmZGYyZjkzMmEzYWM0MDBlMDM1ZDEzNmY1YjBhZDJlMzlkYWUyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDE2IElnYWxpYSBTLkwuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlv
bi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlICJTY3JvbGxBbmltYXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIFNjcm9sbEFuaW1hdGlvbjsKLQotY2xhc3MgU2Nyb2xsQW5pbWF0b3JHZW5lcmljIGZpbmFs
IDogcHVibGljIFNjcm9sbEFuaW1hdG9yIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBTY3JvbGxB
bmltYXRvckdlbmVyaWMoU2Nyb2xsYWJsZUFyZWEmKTsKLSAgICB2aXJ0dWFsIH5TY3JvbGxBbmlt
YXRvckdlbmVyaWMoKTsKLQotICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmKSBmaW5hbDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440053</attachid>
            <date>2021-10-04 04:20:09 -0700</date>
            <delta_ts>2021-10-04 07:36:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230953-20211004122007.patch</filename>
            <type>text/plain</type>
            <size>51280</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjBlZTNiZjg3ZGI2ZGE2
YTg1OTQxOGNiMTRiYmUwYjM1ZmEyNjkxZC4uMTM4MWRkOWMzMzRmYzVjYmNlZDMyNDg3YThjMWEz
ZGJhNTdmNTIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIxLTEwLTA0ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFJFR1JFU1NJ
T046IEFzeW5jIHNjcm9sbGluZyBqdW1wcyB0byB0aGUgdG9wIG9mIHRoZSBwYWdlIHVudGlsIGtl
eWJvYXJkLWluaXRpYXRlZCBwYWdpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMDk1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgbm9uLU1hYy9pT1MgYXN5bmMgc2Nyb2xsaW5nIHBh
dGggdG8gd29yayBjb3JyZWN0bHkgYWZ0ZXIgdGhlCisgICAgICAgIHNjcm9sbGluZyByZWZhY3Rv
ci4gVHJ5aW5nIHRvIHN1bW1hcmlzZSwgdGhpcyBpbXBsZW1lbnRzCisgICAgICAgIFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyIGluIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVO
aWNvc2lhCisgICAgICAgIGFuZCBtb3ZlcyBzbW9vdGggYW5kIGtpbmV0aWMgc2Nyb2xsaW5nIGFu
aW1hdGlvbnMgdG8KKyAgICAgICAgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIsIHRvIGJlIHNo
YXJlZCBieSBib3RoIHN5bmMgYW5kIGFzeW5jIHBhdGhzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cyAoaG9wZWZ1bGx5KS4KKworICAgICAgICAqIFBs
YXRmb3JtUGxheVN0YXRpb24uY21ha2U6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAg
ICAgICogU291cmNlc1dQRS50eHQ6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUJl
Zm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5p
Y29zaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZU5pY29zaWE6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmlj
b3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE6OnVwZGF0ZUZyb21TdGF0ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnVwZGF0ZVZpc2libGVMZW5ndGhzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNv
c2lhOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzdG9wU2Nyb2xsQW5pbWF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6
YW5pbWF0aW9uVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6Y3JlYXRlVGltZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnN0YXJ0QW5pbWF0
aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU5pY29zaWE6OnN0b3BBbmltYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6YWxsb3dzSG9y
aXpvbnRhbFNjcm9sbGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6YWxsb3dzVmVydGljYWxTY3JvbGxpbmcgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWE6OmltbWVkaWF0ZVNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjppbW1lZGlhdGVTY3JvbGxCeVdpdGhv
dXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91
bmRzSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbE9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6d2lsbFN0YXJ0
U2Nyb2xsU25hcEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6ZGlkU3RvcFNjcm9sbFNuYXBBbmltYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWE6OnBhZ2VTY2FsZUZhY3RvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsRXh0ZW50cyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3Np
YTo6cmVzZXRDdXJyZW50UG9zaXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1h
dGlvbktpbmV0aWMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290aCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6cGFnZVNjYWxlRmFjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxBbmlt
YXRpb25EaWRVcGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbEFuaW1hdGlvbkRpZEVuZCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTmljb3NpYTo6c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c3Rh
cnRUaW1lcklmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpyZXRhcmdldFJ1
bm5pbmdBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmhhbmRs
ZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFu
aW1hdGlvbkVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cmV0YXJnZXRBbmltYXRlZFNjcm9sbCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cHJvY2Vzc1do
ZWVsRXZlbnRGb3JLaW5ldGljU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpyZWdhcmdldEFuaW1hdGVkU2Nyb2xsKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJDbGllbnQ6OnNjcm9s
bEFuaW1hdGlvbkVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Ny
b2xsQW5pbWF0b3JHZW5lcmljLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpoYW5kbGVXaGVlbEV2ZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oOiBS
ZW1vdmVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKwogMjAyMS0xMC0wNCAgS2ltbW8gS2lubnVu
ZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb24gKHIyODMyMzgp
WyBNYWNPUyB3azEgXSBmYXN0L21lZGlhY2FwdHVyZWZyb21lbGVtZW50L0NhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbS13ZWJnbC1ldmVudHMuaHRtbCBpcyB0aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQppbmRleCA1ZGRjODc0ODJmZDc0NzZlNTAxZjA4NTFh
YzgyMzA5YjNkYmEwYzNhLi45ZjE1NTllYzJlNWQ5MmY2ZTJlMjk0YWVmZDQwYTI4Mjk0ZWYzYWMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKQEAgLTM2LDcgKzM2
LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCiAgICAgcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmNwcAotICAgIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
LmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKaW5kZXggYjAx
YzAwMThhZjA1Y2Q3ZmFhMGIxZGY1YmIyM2IwMWRhZjk0NzI2OS4uM2NkZjNlODFlZTM1MzUyYzU5
ZjgzYmUxYjhiY2RjZGYxZDc5YmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0dUSy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKQEAgLTc5LDcgKzc5
LDYgQEAgcGxhdGZvcm0vYWR3YWl0YS9UaGVtZUFkd2FpdGEuY3BwCiBwbGF0Zm9ybS9nYW1lcGFk
L21hbmV0dGUvTWFuZXR0ZUdhbWVwYWQuY3BwCiBwbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFu
ZXR0ZUdhbWVwYWRQcm92aWRlci5jcHAKIAotcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRv
ckdlbmVyaWMuY3BwCiBwbGF0Zm9ybS9nZW5lcmljL1Njcm9sbGJhcnNDb250cm9sbGVyR2VuZXJp
Yy5jcHAKIAogcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNXUEUudHh0CmluZGV4IGE5YTI3OTE0MTgwMTY5OTFkYjI0ZDViZjA5YzllNTEwYzgwMTMzYjgu
LjY2MzNhYTE4YTljZDgxMjE2ZTZjNDZhN2M0MjM3ZjAxYTFlNGJiYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNX
UEUudHh0CkBAIC02Myw3ICs2Myw2IEBAIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKIHBs
YXRmb3JtL2Fkd2FpdGEvU2Nyb2xsYmFyVGhlbWVBZHdhaXRhLmNwcAogcGxhdGZvcm0vYWR3YWl0
YS9UaGVtZUFkd2FpdGEuY3BwCiAKLXBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5l
cmljLmNwcAogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxiYXJzQ29udHJvbGxlckdlbmVyaWMuY3Bw
CiAKIHBsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmgKaW5kZXggYmEwYjdkMDIxN2ZhNDIwNjA2MDgzMTZmZjUyNjBlMmUxMzlmMmY5YS4uOWMx
YmE2YjJmMTAzZDRjNDQ1NTkyNTBjNTc2NjBhMTEzYjE0NWVmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZS5oCkBAIC00Myw2ICs0Myw5IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlIDogcHVibGljIFNjcm9sbGluZ1RyZWVOb2RlIHsKICAgICBmcmllbmQgY2xh
c3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZTsKICNpZiBQTEFURk9STShNQUMp
CiAgICAgZnJpZW5kIGNsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM7
CisjZW5kaWYKKyNpZiBVU0UoTklDT1NJQSkKKyAgICBmcmllbmQgY2xhc3MgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE7CiAjZW5kaWYKICAgICBmcmllbmQgY2xhc3Mg
U2Nyb2xsaW5nVHJlZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVOaWNvc2lhLmNwcAppbmRleCBmMWU3M2Q0ZjQzMTMxZTU2MThhMGM1MWNkMjdh
Y2NiYzI3OWYxNzcxLi4wMzI1NjA1MWU2YWJjNDk0OTk2N2Y4NmZjZWYzNjU5NGNmMmFiMjE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNv
c2lhLmNwcApAQCAtODIsNiArODIsOCBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcgogICAgICAg
ICBhdXRvKiBsYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3Jv
bGxpbmdTdGF0ZU5vZGUuZm9vdGVyTGF5ZXIoKSk7CiAgICAgICAgIG1fZm9vdGVyTGF5ZXIgPSBk
b3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7CiAgICAgfQorCisgICAg
bV9kZWxlZ2F0ZS51cGRhdGVGcm9tU3RhdGVOb2RlKHNjcm9sbGluZ1N0YXRlTm9kZSk7CiB9CiAK
IHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmNvbW1pdFN0YXRl
QWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKQEAgLTk1
LDcgKzk3LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6
Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm8KICAgICAgICAgc3RvcFNjcm9sbEFu
aW1hdGlvbnMoKTsKICAgICAgICAgY29uc3QgYXV0byYgcmVxdWVzdGVkU2Nyb2xsRGF0YSA9IHNj
cm9sbGluZ1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxEYXRhKCk7CiAgICAgICAgIHNjcm9sbFRv
KHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsUG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbERhdGEu
c2Nyb2xsVHlwZSwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5jbGFtcGluZyk7Ci0gICAgICAgIG1fZGVs
ZWdhdGUucmVzZXRDdXJyZW50UG9zaXRpb24oKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKaW5k
ZXggYzQ3NGM0ODIwMGExNWYyMjcyNTljOGY0MTRlNDEwMjUzZTUwMGRhMy4uZjJhZTAzM2QwZDZi
NTBmZDU5OTdjMWViOGU4MjQ5Y2ZjNTQwMDdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
Tmljb3NpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKQEAgLTU2LDcgKzU2
LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29t
bWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFMKICAgICAgICAgc3RvcFNjcm9sbEFuaW1hdGlv
bnMoKTsKICAgICAgICAgY29uc3QgYXV0byYgcmVxdWVzdGVkU2Nyb2xsRGF0YSA9IG92ZXJmbG93
U3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbERhdGEoKTsKICAgICAgICAgc2Nyb2xsVG8ocmVxdWVz
dGVkU2Nyb2xsRGF0YS5zY3JvbGxQb3NpdGlvbiwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxU
eXBlLCByZXF1ZXN0ZWRTY3JvbGxEYXRhLmNsYW1waW5nKTsKLSAgICAgICAgbV9kZWxlZ2F0ZS5y
ZXNldEN1cnJlbnRQb3NpdGlvbigpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAppbmRleCAwZmI1
MzhmYzY4MGFhZTQyNjJkZWQ1OWJjNGZjZGU4MGQ2ZDJiZTg4Li4wZGQxOWUxYzY3MDdlYzA4NmIx
ZjY1MzI0YTQ2MzcxYWJhNzQwMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcApAQCAtNDIsMjAgKzQyLDI1IEBA
IGNsYXNzIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM7CiAKIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmlj
b3NpYShTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYgc2Nyb2xsaW5nTm9kZSwgYm9vbCBzY3Jv
bGxBbmltYXRvckVuYWJsZWQpCiAgICAgOiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlKHNjcm9sbGluZ05vZGUpCisgICAgLCBtX3Njcm9sbENvbnRyb2xsZXIoKnRoaXMpCiAgICAg
LCBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZChzY3JvbGxBbmltYXRvckVuYWJsZWQpCi0jaWYgRU5B
QkxFKEtJTkVUSUNfU0NST0xMSU5HKSB8fCBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICAs
IG1fYW5pbWF0aW9uVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmFuaW1hdGlvblRpbWVyRmlyZWQpCi0jZW5k
aWYKIHsKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpIHx8IEVOQUJMRShTTU9PVEhfU0NS
T0xMSU5HKQotI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCi0gICAgbV9hbmltYXRpb25UaW1lci5z
ZXRQcmlvcml0eShXVEY6OlJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJlZnJlc2hNb25p
dG9yVGltZXIpOwotI2VuZGlmCi0jZW5kaWYgICAgCiB9CiAKIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhOjp+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWEoKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU5pY29zaWE6OnVwZGF0ZUZyb21TdGF0ZU5vZGUoY29uc3QgU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdTdGF0ZU5vZGUpCit7CisgICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6
U25hcE9mZnNldHNJbmZvKSkKKyAgICAgICAgbV9zY3JvbGxDb250cm9sbGVyLnNldFNuYXBPZmZz
ZXRzSW5mbyhzY3JvbGxpbmdTdGF0ZU5vZGUuc25hcE9mZnNldHNJbmZvKCkuY29udmVydFVuaXRz
PExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbz4oKSk7CisKKyAgICBpZiAoc2Nyb2xsaW5nU3Rh
dGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpD
dXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCkpCisgICAgICAgIG1fc2Nyb2xsQ29udHJv
bGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6SG9y
aXpvbnRhbCwgc2Nyb2xsaW5nU3RhdGVOb2RlLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXgoKSk7CisKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5k
ZXgpKQorICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIuc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4
Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBzY3JvbGxpbmdTdGF0ZU5vZGUuY3Vy
cmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxOaWNv
c2lhOjpTY2VuZUludGVncmF0aW9uOjpVcGRhdGVTY29wZT4gU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWE6OmNyZWF0ZVVwZGF0ZVNjb3BlKCkKIHsKICAgICBhdXRvKiBz
Y3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxp
bmdOb2RlKCkuc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSk7CkBAIC02NywyMDUgKzcyLDEyMCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Tmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6VXBkYXRlU2NvcGU+IFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdObwogICAgIHJldHVybiBjb21wb3NpdGlvbkxheWVyLmNyZWF0
ZVVwZGF0ZVNjb3BlKCk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU5pY29zaWE6OnJlc2V0Q3VycmVudFBvc2l0aW9uKCkKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnVwZGF0ZVZpc2libGVMZW5ndGhzKCkKIHsKLSNp
ZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0g
ICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zdG9wKCk7Ci0jZW5kaWYKKyAgICBtX3Njcm9sbENv
bnRyb2xsZXIuY29udGVudHNTaXplQ2hhbmdlZCgpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjp1cGRhdGVWaXNpYmxlTGVuZ3RocygpCitXaGVl
bEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2
ZW50LCBFdmVudFRhcmdldGluZyBldmVudFRhcmdldGluZykKIHsKLSNpZiBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKLSAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgIG1fc21vb3Ro
QW5pbWF0aW9uLT51cGRhdGVTY3JvbGxFeHRlbnRzKCk7Ci0jZW5kaWYKKyAgICBpZiAoIXNjcm9s
bGluZ05vZGUoKS5jYW5IYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5n
KQorICAgICAgICB8fCAhbV9zY3JvbGxDb250cm9sbGVyLmhhbmRsZVdoZWVsRXZlbnQod2hlZWxF
dmVudCkpCisgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OnVuaGFuZGxl
ZCgpOworCisgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwog
fQogCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQotdm9pZCBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygp
Cit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzdG9wU2Ny
b2xsQW5pbWF0aW9ucygpCiB7Ci0gICAgaWYgKG1fa2luZXRpY0FuaW1hdGlvbikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9raW5ldGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmlt
YXRpb25LaW5ldGljPigqdGhpcyk7Ci0gICAgc3RhcnRUaW1lcklmTmVjZXNzYXJ5KCk7CisgICAg
bV9zY3JvbGxDb250cm9sbGVyLnN0b3BBbmltYXRlZFNjcm9sbCgpOwogfQotI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290aCgpCit2b2lkIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphbmltYXRpb25UaW1lckZp
cmVkKCkKIHsKLSAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgIHJldHVybjsKKyAg
ICBtX3Njcm9sbENvbnRyb2xsZXIuYW5pbWF0aW9uQ2FsbGJhY2soTW9ub3RvbmljVGltZTo6bm93
KCkpOworfQogCi0gICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1h
dGlvblNtb290aD4oKnRoaXMpOwotICAgIHN0YXJ0VGltZXJJZk5lY2Vzc2FyeSgpOworc3RkOjp1
bmlxdWVfcHRyPFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI+IFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpjcmVhdGVUaW1lcihGdW5jdGlvbjx2b2lkKCk+
JiYgZnVuY3Rpb24pCit7CisgICAgcmV0dXJuIFdURjo6bWFrZVVuaXF1ZTxTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlclRpbWVyPihSdW5Mb29wOjpjdXJyZW50KCksIFtmdW5jdGlvbiA9IFdURk1v
dmUoZnVuY3Rpb24pLCBwcm90ZWN0ZWROb2RlID0gUmVmIHsgc2Nyb2xsaW5nTm9kZSgpIH1dIHsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHByb3RlY3RlZE5vZGUtPnNjcm9sbGluZ1RyZWUoKS50
cmVlTG9jaygpIH07CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgfSk7CiB9Ci0jZW5kaWYKIAot
V2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCwgRXZlbnRUYXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpCit2b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzdGFydEFuaW1hdGlvbkNhbGxiYWNrKFNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyJikKIHsKLSAgICBpZiAoIXNjcm9sbGluZ05vZGUoKS5j
YW5IYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKSkKLSAgICAgICAg
cmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7CisgICAgaWYgKCFt
X2FuaW1hdGlvblRpbWVyKSB7CisgICAgICAgIG1fYW5pbWF0aW9uVGltZXIgPSBXVEY6Om1ha2VV
bmlxdWU8UnVuTG9vcDo6VGltZXI8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTmljb3NpYTo6YW5pbWF0aW9uVGltZXJGaXJlZCk7CiAKLSAgICBib29sIGNh
bkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyID0gc2Nyb2xsaW5nTm9kZSgpLmNhbkhhdmVIb3Jpem9u
dGFsU2Nyb2xsYmFyKCk7Ci0gICAgYm9vbCBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIgPSBzY3Jv
bGxpbmdOb2RlKCkuY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKCk7Ci0jaWYgRU5BQkxFKEtJTkVU
SUNfU0NST0xMSU5HKQotICAgIGVuc3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKTsKLSAgICBt
X2tpbmV0aWNBbmltYXRpb24tPmFwcGVuZFRvU2Nyb2xsSGlzdG9yeSh3aGVlbEV2ZW50KTsKLSAg
ICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKLSAgICBpZiAod2hlZWxFdmVudC5pc0VuZE9m
Tm9uTW9tZW50dW1TY3JvbGwoKSkgewotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0
QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGN1cnJlbnRTY3JvbGxQb3NpdGlvbigp
LCBtX2tpbmV0aWNBbmltYXRpb24tPmNvbXB1dGVWZWxvY2l0eSgpLCBjYW5IYXZlSG9yaXpvbnRh
bFNjcm9sbGJhciwgY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKTsKLSAgICAgICAgbV9raW5ldGlj
QW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKLSAgICAgICAgcmV0dXJuIFdoZWVsRXZl
bnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwotICAgIH0KLSAgICBpZiAod2hlZWxFdmVudC5p
c1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xsKCkpIHsKLSAgICAgICAgbV9raW5ldGljQW5p
bWF0aW9uLT5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjdXJyZW50U2Ny
b2xsUG9zaXRpb24oKSwgd2hlZWxFdmVudC5zd2lwZVZlbG9jaXR5KCksIGNhbkhhdmVIb3Jpem9u
dGFsU2Nyb2xsYmFyLCBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIpOwotICAgICAgICBtX2tpbmV0
aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwotICAgICAgICByZXR1cm4gV2hlZWxF
dmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7Ci0gICAgfQorI2lmIFVTRShHTElCX0VWRU5U
X0xPT1ApCisgICAgICAgIG1fYW5pbWF0aW9uVGltZXItPnNldFByaW9yaXR5KFdURjo6UnVuTG9v
cFNvdXJjZVByaW9yaXR5OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JUaW1lcik7CiAjZW5kaWYKLQot
ICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIHNoYXJlIGNvZGUgd2l0aCBTY3JvbGxBbmltYXRv
cjo6aGFuZGxlV2hlZWxFdmVudCgpLCBwZXJoYXBzIGJ5IG1vdmluZyBjb2RlIGludG8gU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoKS4KLSAgICBmbG9hdCBkZWx0
YVggPSBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhciA/IHdoZWVsRXZlbnQuZGVsdGFYKCkgOiAw
OwotICAgIGZsb2F0IGRlbHRhWSA9IGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhciA/IHdoZWVsRXZl
bnQuZGVsdGFZKCkgOiAwOwotICAgIGlmICgoZGVsdGFYIDwgMCAmJiBjdXJyZW50U2Nyb2xsUG9z
aXRpb24oKS54KCkgPj0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueCgpKQotICAgICAgICB8fCAo
ZGVsdGFYID4gMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS54KCkgPD0gbWluaW11bVNjcm9s
bFBvc2l0aW9uKCkueCgpKSkKLSAgICAgICAgZGVsdGFYID0gMDsKLSAgICBpZiAoKGRlbHRhWSA8
IDAgJiYgY3VycmVudFNjcm9sbFBvc2l0aW9uKCkueSgpID49IG1heGltdW1TY3JvbGxQb3NpdGlv
bigpLnkoKSkKLSAgICAgICAgfHwgKGRlbHRhWSA+IDAgJiYgY3VycmVudFNjcm9sbFBvc2l0aW9u
KCkueSgpIDw9IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSkpCi0gICAgICAgIGRlbHRhWSA9
IDA7Ci0KLSAgICBpZiAoIWRlbHRhWCAmJiAhZGVsdGFZKQotICAgICAgICByZXR1cm4gV2hlZWxF
dmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKLQotICAgIGlmICh3aGVlbEV2ZW50Lmdy
YW51bGFyaXR5KCkgPT0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVudCkgewotICAgICAgICBpZiAoZGVs
dGFYKSB7Ci0gICAgICAgICAgICBib29sIG5lZ2F0aXZlID0gZGVsdGFYIDwgMDsKLSAgICAgICAg
ICAgIGRlbHRhWCA9IFNjcm9sbGJhcjo6cGFnZVN0ZXBEZWx0YShzY3JvbGxhYmxlQXJlYVNpemUo
KS53aWR0aCgpKTsKLSAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkKLSAgICAgICAgICAgICAgICBk
ZWx0YVggPSAtZGVsdGFYOwotICAgICAgICB9Ci0gICAgICAgIGlmIChkZWx0YVkpIHsKLSAgICAg
ICAgICAgIGJvb2wgbmVnYXRpdmUgPSBkZWx0YVkgPCAwOwotICAgICAgICAgICAgZGVsdGFZID0g
U2Nyb2xsYmFyOjpwYWdlU3RlcERlbHRhKHNjcm9sbGFibGVBcmVhU2l6ZSgpLmhlaWdodCgpKTsK
LSAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkKLSAgICAgICAgICAgICAgICBkZWx0YVkgPSAtZGVs
dGFZOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZGVsdGFYID0gLWRlbHRhWDsKLSAgICBkZWx0
YVkgPSAtZGVsdGFZOwotCi0gICAgaWYgKCFzY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZv
KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGZsb2F0IHNjYWxlID0gcGFnZVNjYWxlRmFjdG9yKCk7
Ci0gICAgICAgIEZsb2F0UG9pbnQgb3JpZ2luYWxPZmZzZXQgPSBMYXlvdXRQb2ludChzY3JvbGxp
bmdOb2RlKCkuY3VycmVudFNjcm9sbE9mZnNldCgpLngoKSAvIHNjYWxlLCBzY3JvbGxpbmdOb2Rl
KCkuY3VycmVudFNjcm9sbE9mZnNldCgpLnkoKSAvIHNjYWxlKTsKLSAgICAgICAgYXV0byBuZXdP
ZmZzZXQgPSAoc2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRTY3JvbGxPZmZzZXQoKSArIEZsb2F0U2l6
ZShkZWx0YVgsIGRlbHRhWSkpOwotICAgICAgICBuZXdPZmZzZXQuc2NhbGUoMS4wIC8gc2NhbGUp
OwotCi0gICAgICAgIGF1dG8gb2Zmc2V0WCA9IHNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0lu
Zm8oKS5jbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9s
bGFibGVBcmVhU2l6ZSgpLCBuZXdPZmZzZXQsIGRlbHRhWCwgb3JpZ2luYWxPZmZzZXQueCgpKS5m
aXJzdDsKLSAgICAgICAgYXV0byBvZmZzZXRZID0gc2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRz
SW5mbygpLmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHNjcm9s
bGFibGVBcmVhU2l6ZSgpLCBuZXdPZmZzZXQsIGRlbHRhWSwgb3JpZ2luYWxPZmZzZXQueSgpKS5m
aXJzdDsKLQotICAgICAgICBkZWx0YVggPSAob2Zmc2V0WCAtIG9yaWdpbmFsT2Zmc2V0LngoKSkg
KiBzY2FsZTsKLSAgICAgICAgZGVsdGFZID0gKG9mZnNldFkgLSBvcmlnaW5hbE9mZnNldC55KCkp
ICogc2NhbGU7CiAgICAgfQogCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgaWYg
KG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkICYmICF3aGVlbEV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxp
bmdEZWx0YXMoKSkgewotICAgICAgICBlbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgoKTsKLSAg
ICAgICAgYXV0byBjdXJyZW50T2Zmc2V0ID0gc2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRTY3JvbGxP
ZmZzZXQoKTsKLSAgICAgICAgYXV0byBkZXN0aW5hdGlvbk9mZnNldCA9IGN1cnJlbnRPZmZzZXQg
KyBGbG9hdFNpemUgeyBkZWx0YVgsIGRlbHRhWSB9OwotICAgICAgICBtX3Ntb290aEFuaW1hdGlv
bi0+c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24oY3VycmVudE9mZnNldCwgZGVzdGlu
YXRpb25PZmZzZXQpOwotICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojpo
YW5kbGVkKCk7Ci0gICAgfQotI2VuZGlmCisgICAgaWYgKG1fYW5pbWF0aW9uVGltZXItPmlzQWN0
aXZlKCkpCisgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjcmVhdGVV
cGRhdGVTY29wZSgpOwotICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxCeSh7IGRlbHRhWCwgZGVs
dGFZIH0pOworICAgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGZyYW1lUmF0ZSA9IDYwOworICAg
IHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyB0aWNrVGltZSA9IDFfcyAvIGZyYW1lUmF0ZTsKKyAg
ICBtX2FuaW1hdGlvblRpbWVyLT5zdGFydFJlcGVhdGluZyh0aWNrVGltZSk7Cit9CiAKLSAgICBy
ZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7Cit2b2lkIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzdG9wQW5pbWF0aW9uQ2FsbGJhY2so
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXImKQoreworICAgIGlmIChtX2FuaW1hdGlvblRpbWVy
KQorICAgICAgICBtX2FuaW1hdGlvblRpbWVyLT5zdG9wKCk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKCkK
K2Jvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmFsbG93c0hv
cml6b250YWxTY3JvbGxpbmcoKSBjb25zdAogewotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElO
RykKLSAgICBpZiAobV9raW5ldGljQW5pbWF0aW9uKSB7Ci0gICAgICAgIG1fa2luZXRpY0FuaW1h
dGlvbi0+c3RvcCgpOwotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlz
dG9yeSgpOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAg
IGlmIChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0b3Ao
KTsKLSNlbmRpZgotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykgfHwgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCi0gICAgbV9hbmltYXRpb25UaW1lci5zdG9wKCk7Ci0jZW5kaWYKKyAgICBy
ZXR1cm4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZTo6YWxsb3dzSG9yaXpvbnRh
bFNjcm9sbGluZygpOwogfQogCi1mbG9hdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTmljb3NpYTo6cGFnZVNjYWxlRmFjdG9yKCkKK2Jvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWE6OmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgY29uc3QKIHsK
LSAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgdGhpcyByZXR1cm4gZm9yIG5vbi1yb290IGZyYW1l
cywgYW5kIG92ZXJmbG93PwotICAgIC8vIEFsc28sIHRoaXMgc2hvdWxkIG5vdCBoYXZlIHRvIGFj
Y2VzcyBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLgotICAgIHJldHVybiBpczxTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdOb2RlKCkpID8KLSAgICAgICAg
ZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oc2Nyb2xsaW5nTm9kZSgp
KS5mcmFtZVNjYWxlRmFjdG9yKCkgOiAxLjsKKyAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZTo6YWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKTsKIH0KIAotdm9pZCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsQW5pbWF0aW9u
RGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBv
ZmZzZXQpCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpp
bW1lZGlhdGVTY3JvbGxCeShjb25zdCBGbG9hdFNpemUmIGRlbHRhKQogewotI2lmIEVOQUJMRShT
TU9PVEhfU0NST0xMSU5HKQotICAgIGlmICgmYW5pbWF0aW9uID09IG1fa2luZXRpY0FuaW1hdGlv
bi5nZXQoKSkgewotICAgICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgICAgICBt
X3Ntb290aEFuaW1hdGlvbi0+c3RvcCgpOwotICAgIH0KLSNlbmRpZgogICAgIGF1dG8gdXBkYXRl
U2NvcGUgPSBjcmVhdGVVcGRhdGVTY29wZSgpOworICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxC
eShkZWx0YSk7Cit9CiAKLSAgICAvLyBGSVhNRTogTmVlZCB0byBjb252ZXJ0IGFuIG9mZnNldCB0
byBhIHBvc2l0aW9uLgotICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxUbyhvZmZzZXQpOwordm9p
ZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6aW1tZWRpYXRlU2Ny
b2xsQnlXaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFNpemUmIG9mZnNl
dCkKK3sKKyAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY3JlYXRlVXBkYXRlU2NvcGUoKTsKKyAgICBz
Y3JvbGxpbmdOb2RlKCkuc2Nyb2xsQnkob2Zmc2V0LCBTY3JvbGxDbGFtcGluZzo6VW5jbGFtcGVk
KTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6
c2Nyb2xsQW5pbWF0aW9uRGlkRW5kKFNjcm9sbEFuaW1hdGlvbiYpCit2b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91
bmRzSWZOZWNlc3NhcnkoKQogeworICAgIEZsb2F0UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBjdXJy
ZW50U2Nyb2xsUG9zaXRpb24oKTsKKyAgICBGbG9hdFBvaW50IGNvbnN0cmFpbmVkUG9zaXRpb24g
PSBzY3JvbGxQb3NpdGlvbi5jb25zdHJhaW5lZEJldHdlZW4obWluaW11bVNjcm9sbFBvc2l0aW9u
KCksIG1heGltdW1TY3JvbGxQb3NpdGlvbigpKTsKKyAgICBpbW1lZGlhdGVTY3JvbGxCeShjb25z
dHJhaW5lZFBvc2l0aW9uIC0gc2Nyb2xsUG9zaXRpb24pOwogfQogCi1TY3JvbGxFeHRlbnRzIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxFeHRlbnRzRm9y
QW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYpCitGbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxPZmZzZXQoKSBjb25zdAogewotICAgIHJl
dHVybiB7Ci0gICAgICAgIHNjcm9sbGluZ05vZGUoKS50b3RhbENvbnRlbnRzU2l6ZSgpLAotICAg
ICAgICBzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsYWJsZUFyZWFTaXplKCkKLSAgICB9OworICAgIHJl
dHVybiBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsT2Zmc2V0RnJvbVBvc2l0aW9uKGN1cnJlbnRTY3Jv
bGxQb3NpdGlvbigpLCBzY3JvbGxPcmlnaW4oKSk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnN0YXJ0VGltZXJJZk5lY2Vzc2FyeSgpCit2b2lk
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjp3aWxsU3RhcnRTY3Jv
bGxTbmFwQW5pbWF0aW9uKCkKIHsKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpIHx8IEVO
QUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIGlmIChtX2FuaW1hdGlvblRpbWVyLmlzQWN0aXZl
KCkpCi0gICAgICAgIHJldHVybjsKKyAgICBzY3JvbGxpbmdOb2RlKCkuc2V0U2Nyb2xsU25hcElu
UHJvZ3Jlc3ModHJ1ZSk7Cit9CiAKLSAgICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBmcmFtZVJh
dGUgPSA2MDsKLSAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgdGlja1RpbWUgPSAxX3MgLyBm
cmFtZVJhdGU7Ci0gICAgCi0gICAgbV9hbmltYXRpb25UaW1lci5zdGFydFJlcGVhdGluZyh0aWNr
VGltZSk7Ci0jZW5kaWYKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE6OmRpZFN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCkKK3sKKyAgICBzY3JvbGxpbmdOb2Rl
KCkuc2V0U2Nyb2xsU25hcEluUHJvZ3Jlc3MoZmFsc2UpOwogfQogCi12b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphbmltYXRpb25UaW1lckZpcmVkKCkKK2Zs
b2F0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpwYWdlU2NhbGVG
YWN0b3IoKSBjb25zdAogewotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykgfHwgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCi0gICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsK
LSNlbmRpZgorICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB0aGlzIHJldHVybiBmb3Igbm9uLXJv
b3QgZnJhbWVzLCBhbmQgb3ZlcmZsb3c/CisgICAgLy8gQWxzbywgdGhpcyBzaG91bGQgbm90IGhh
dmUgdG8gYWNjZXNzIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuCisgICAgcmV0dXJu
IGlzPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KHNjcm9sbGluZ05vZGUoKSkgPwor
ICAgICAgICBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxp
bmdOb2RlKCkpLmZyYW1lU2NhbGVGYWN0b3IoKSA6IDEuOworfQogCi0jaWYgRU5BQkxFKEtJTkVU
SUNfU0NST0xMSU5HKQotICAgIGlmIChtX2tpbmV0aWNBbmltYXRpb24pCi0gICAgICAgIG1fa2lu
ZXRpY0FuaW1hdGlvbi0+c2VydmljZUFuaW1hdGlvbihub3cpOwotI2VuZGlmCi0jaWYgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICBt
X3Ntb290aEFuaW1hdGlvbi0+c2VydmljZUFuaW1hdGlvbihub3cpOwotI2VuZGlmICAgIAorU2Ny
b2xsRXh0ZW50cyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Ny
b2xsRXh0ZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgc2Nyb2xsaW5nTm9k
ZSgpLnRvdGFsQ29udGVudHNTaXplKCksCisgICAgICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxh
YmxlQXJlYVNpemUoKQorICAgIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEu
aAppbmRleCA3NDc0MmMxZmUzYTg2ODZhZTUzMjE0YTJkYWYwZGFhMjJiOTVlZWIzLi5jYWFlZjY5
ODcwOGQwOTA5ZmZmMWFmZjVhYTIwZWEzMmIwNmE3MTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVOaWNvc2lhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5oCkBAIC0zMiw2OCAr
MzIsNTggQEAKIAogI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAi
U2Nyb2xsQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIgogI2lu
Y2x1ZGUgIlRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIgotCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NS
T0xMSU5HKQotI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvbktpbmV0aWMuaCIKLSNlbmRpZgotCi0j
aWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0jaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uU21v
b3RoLmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykgfHwgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLSNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgYSBTY3Jv
bGxBbmltYXRpb25DbGllbnQuCi1jbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTmljb3NpYSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLCBw
dWJsaWMgU2Nyb2xsQW5pbWF0aW9uQ2xpZW50IHsKK2NsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhIDogcHVibGljIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGUsIHB1YmxpYyBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlckNsaWVudCB7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWEoU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmLCBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxl
ZCk7CiAgICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWEoKTsKIAorICAgIHZvaWQgdXBkYXRlRnJvbVN0YXRlTm9kZShjb25zdCBTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tmljb3NpYTo6U2NlbmVJbnRl
Z3JhdGlvbjo6VXBkYXRlU2NvcGU+IGNyZWF0ZVVwZGF0ZVNjb3BlKCk7Ci0gICAgdm9pZCByZXNl
dEN1cnJlbnRQb3NpdGlvbigpOwogICAgIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKICAg
ICBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmLCBFdmVudFRhcmdldGluZyk7CiAgICAgdm9pZCBzdG9wU2Nyb2xsQW5pbWF0
aW9ucygpOwogCiBwcml2YXRlOgotICAgIGJvb2wgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQgeyBm
YWxzZSB9OwotICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpOworICAgIHZvaWQgYW5pbWF0aW9u
VGltZXJGaXJlZCgpOwogCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQotICAgIHZvaWQg
ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpOwotI2VuZGlmCi0jaWYgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCi0gICAgdm9pZCBlbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgoKTsKLSNl
bmRpZgorICAgIC8vIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyQ2xpZW50LgorICAgIHN0ZDo6
dW5pcXVlX3B0cjxTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlclRpbWVyPiBjcmVhdGVUaW1lcihG
dW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwogCi0gICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVk
KCk7Ci0gICAgdm9pZCBzdGFydFRpbWVySWZOZWNlc3NhcnkoKTsKLQotICAgIC8vIFNjcm9sbEFu
aW1hdGlvbkNsaWVudAotICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFu
aW1hdGlvbiYsIGNvbnN0IEZsb2F0UG9pbnQmIGN1cnJlbnRQb3NpdGlvbikgZmluYWw7Ci0gICAg
dm9pZCBzY3JvbGxBbmltYXRpb25EaWRFbmQoU2Nyb2xsQW5pbWF0aW9uJikgZmluYWw7Ci0gICAg
U2Nyb2xsRXh0ZW50cyBzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYp
IGZpbmFsOwotCi0gICAgLy8gRklYTUU6IFRoZXNlIGFuaW1hdGlvbnMgc2hvdWxkIG5vdCBsaXZl
IGhlcmUuIFRoZXkgbmVlZCB0byBiZSBtYW5hZ2VkIGJ5IFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyLAotICAgIC8vIHRvIGJlIGNvb3JkaW5hdGVkIHdpdGggb3RoZXIga2luZHMgb2Ygc2Nyb2xs
IGFuaW1hdGlvbnMsIGFuZCBiZSByZWZlcmVuY2VkIGJ5IFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyOjptX2N1cnJlbnRBbmltYXRpb24uCi0gICAgCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xM
SU5HKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25LaW5ldGljPiBtX2tpbmV0
aWNBbmltYXRpb247Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPiBtX3Ntb290aEFuaW1hdGlvbjsK
LSNlbmRpZgotCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKSB8fCBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKLSAgICAvLyBGSVhNRTogV2hlbiB0aGUgYWJvdmUgdHdvIGFuaW1hdGlvbnMg
YXJlIHJlbW92ZWQsIHRoaXMgdGltZXIgY2FuIGJlIHJlbW92ZWQuCi0gICAgUnVuTG9vcDo6VGlt
ZXI8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE+IG1fYW5pbWF0aW9u
VGltZXI7Ci0jZW5kaWYKKyAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uQ2FsbGJhY2soU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXImKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BBbmltYXRpb25DYWxsYmFj
ayhTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciYpIGZpbmFsOworCisgICAgYm9vbCBhbGxvd3NI
b3Jpem9udGFsU2Nyb2xsaW5nKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBhbGxvd3NWZXJ0aWNh
bFNjcm9sbGluZygpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBzZXRTY3JvbGxCZWhhdmlvclN0
YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1cyBzdGF0dXMpIGZpbmFsIHsgbV9zY3JvbGxCZWhhdmlv
clN0YXR1cyA9IHN0YXR1czsgfQorICAgIFNjcm9sbEJlaGF2aW9yU3RhdHVzIHNjcm9sbEJlaGF2
aW9yU3RhdHVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zY3JvbGxCZWhhdmlvclN0YXR1czsg
fQorCisgICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxCeShjb25zdCBGbG9hdFNpemUmKSBmaW5hbDsK
KyAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMo
Y29uc3QgRmxvYXRTaXplJikgZmluYWw7CisKKyAgICB2b2lkIGFkanVzdFNjcm9sbFBvc2l0aW9u
VG9Cb3VuZHNJZk5lY2Vzc2FyeSgpIGZpbmFsOworCisgICAgRmxvYXRQb2ludCBzY3JvbGxPZmZz
ZXQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHdpbGxTdGFydFNjcm9sbFNuYXBBbmltYXRpb24o
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCkgZmluYWw7Cisg
ICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgZmluYWw7CisgICAgU2Nyb2xsRXh0ZW50
cyBzY3JvbGxFeHRlbnRzKCkgY29uc3QgZmluYWw7CisKKyAgICBib29sIHNjcm9sbEFuaW1hdGlv
bkVuYWJsZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZDsg
fQorCisgICAgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgbV9zY3JvbGxDb250cm9sbGVyOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSdW5Mb29wOjpUaW1lcjxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTmljb3NpYT4+IG1fYW5pbWF0aW9uVGltZXI7CisgICAgU2Nyb2xsQmVoYXZp
b3JTdGF0dXMgbV9zY3JvbGxCZWhhdmlvclN0YXR1cyB7IFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpO
b3RJbkFuaW1hdGlvbiB9OworCisgICAgYm9vbCBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZCB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKaW5kZXggZDQzMDJiMzc4NzgxZWY1
NDg2OWEwMTY4ZWM2ZTlkZTQ0MTIxNDM4OS4uMzc3YmQ1MmJmNWY2Mzk4MGY0ZDFiNjdhZjk4ZTE2
YmI3YzBiZmM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbktpbmV0aWMuaApAQCAtNjMsMTUgKzYzLDE0IEBAIHB1YmxpYzoKICAgICBib29sIHN0YXJ0
QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRp
YWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgdmVsb2NpdHksIGJvb2wgbWF5SFNjcm9sbCwgYm9v
bCBtYXlWU2Nyb2xsKTsKICAgICBib29sIHJldGFyZ2V0QWN0aXZlQW5pbWF0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmIG5ld09mZnNldCkgZmluYWw7CiAKLSAgICAvLyBGSVhNRTogb25seSBwdWJsaWMg
Zm9yIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLgotICAgIHZvaWQg
c2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSBmaW5hbDsKLQogICAgIHZvaWQgYXBwZW5k
VG9TY3JvbGxIaXN0b3J5KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwogICAgIHZvaWQgY2xl
YXJTY3JvbGxIaXN0b3J5KCk7CiAKICAgICBGbG9hdFNpemUgY29tcHV0ZVZlbG9jaXR5KCk7CiAK
IHByaXZhdGU6CisgICAgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUpIGZpbmFs
OworCiAgICAgc3RkOjpvcHRpb25hbDxQZXJBeGlzRGF0YT4gbV9ob3Jpem9udGFsRGF0YTsKICAg
ICBzdGQ6Om9wdGlvbmFsPFBlckF4aXNEYXRhPiBtX3ZlcnRpY2FsRGF0YTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAppbmRleCA5ZDVjNjNk
M2MyYzIzZDFjNzA1MTczNDc3Y2EyZGVlZDM5ZGNmZDZhLi5mZWYwNDgxYzZlYjBiY2QzYjhhYWZl
NDYzZDA2MzYyOTBhZmU5YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRpb25TbW9vdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25TbW9vdGguaApAQCAtNDEsMTYgKzQxLDE3IEBAIHB1YmxpYzoKICAgICBib29s
IHN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIGZyb21P
ZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KTsKICAgICBib29sIHJl
dGFyZ2V0QWN0aXZlQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld09mZnNldCkgZmluYWw7
CiAKLSAgICAvLyBGSVhNRTogb25seSBwdWJsaWMgZm9yIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhLgotICAgIHZvaWQgdXBkYXRlU2Nyb2xsRXh0ZW50cygpIGZpbmFs
OwotICAgIHZvaWQgc2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSBmaW5hbDsKKyAgICBj
b25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbk9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVz
dGluYXRpb25PZmZzZXQ7IH0KIAogcHJpdmF0ZToKIAogICAgIGJvb2wgc3RhcnRPclJldGFyZ2V0
QW5pbWF0aW9uKGNvbnN0IFNjcm9sbEV4dGVudHMmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5h
dGlvbk9mZnNldCk7Ci0gICAgCisKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVudHMoKSBmaW5h
bDsKKyAgICB2b2lkIHNlcnZpY2VBbmltYXRpb24oTW9ub3RvbmljVGltZSkgZmluYWw7CisKICAg
ICBTZWNvbmRzIGR1cmF0aW9uRnJvbURpc3RhbmNlKGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0Owot
ICAgIAorCiAgICAgYm9vbCBhbmltYXRlU2Nyb2xsKE1vbm90b25pY1RpbWUpOwogCiAgICAgU2Vj
b25kcyBtX2R1cmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3Iu
Y3BwCmluZGV4IDcyZTE4MmNjYmFjYjc2ODIxMDRmOGVkMzJlNjU4YTA1Njg2NjE4MWIuLjVhOWE2
MTNhMDcxMjk1NWUwNzhkMmI3MjdjODA4YTZhNDJjYTQ1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIFNjcm9s
bEFuaW1hdG9yOjpzY3JvbGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50
JiBuZXdQb3NpdGlvbgogdm9pZCBTY3JvbGxBbmltYXRvcjo6cmV0YXJnZXRSdW5uaW5nQW5pbWF0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld1Bvc2l0aW9uKQogewogICAgIEFTU0VSVChzY3JvbGxh
YmxlQXJlYSgpLmN1cnJlbnRTY3JvbGxCZWhhdmlvclN0YXR1cygpID09IFNjcm9sbEJlaGF2aW9y
U3RhdHVzOjpJbk5vbk5hdGl2ZUFuaW1hdGlvbik7Ci0gICAgbV9zY3JvbGxDb250cm9sbGVyLnJl
Z2FyZ2V0QW5pbWF0ZWRTY3JvbGwob2Zmc2V0RnJvbVBvc2l0aW9uKG5ld1Bvc2l0aW9uKSk7Cisg
ICAgbV9zY3JvbGxDb250cm9sbGVyLnJldGFyZ2V0QW5pbWF0ZWRTY3JvbGwob2Zmc2V0RnJvbVBv
c2l0aW9uKG5ld1Bvc2l0aW9uKSk7CiB9CiAKIEZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3I6Om9m
ZnNldEZyb21Qb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikgY29uc3QKQEAgLTE4
NSw0OSArMTg1LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudChjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAK
LSAgICBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIgPSBtX3Njcm9sbGFibGVBcmVhLmhv
cml6b250YWxTY3JvbGxiYXIoKTsKLSAgICBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyID0g
bV9zY3JvbGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbGJhcigpOwotCi0gICAgLy8gQWNjZXB0IHRo
ZSBldmVudCBpZiB3ZSBoYXZlIGEgc2Nyb2xsYmFyIGluIHRoYXQgZGlyZWN0aW9uIGFuZCBjYW4g
c3RpbGwKLSAgICAvLyBzY3JvbGwgYW55IGZ1cnRoZXIuCi0gICAgZmxvYXQgZGVsdGFYID0gaG9y
aXpvbnRhbFNjcm9sbGJhciA/IGUuZGVsdGFYKCkgOiAwOwotICAgIGZsb2F0IGRlbHRhWSA9IHZl
cnRpY2FsU2Nyb2xsYmFyID8gZS5kZWx0YVkoKSA6IDA7Ci0KLSAgICBib29sIGhhbmRsZWQgPSBm
YWxzZTsKLQotICAgIEludFNpemUgbWF4Rm9yd2FyZFNjcm9sbERlbHRhID0gbV9zY3JvbGxhYmxl
QXJlYS5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSAtIG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsUG9z
aXRpb24oKTsKLSAgICBJbnRTaXplIG1heEJhY2t3YXJkU2Nyb2xsRGVsdGEgPSBtX3Njcm9sbGFi
bGVBcmVhLnNjcm9sbFBvc2l0aW9uKCkgLSBtX3Njcm9sbGFibGVBcmVhLm1pbmltdW1TY3JvbGxQ
b3NpdGlvbigpOwotICAgIGlmICgoZGVsdGFYIDwgMCAmJiBtYXhGb3J3YXJkU2Nyb2xsRGVsdGEu
d2lkdGgoKSA+IDApCi0gICAgICAgIHx8IChkZWx0YVggPiAwICYmIG1heEJhY2t3YXJkU2Nyb2xs
RGVsdGEud2lkdGgoKSA+IDApCi0gICAgICAgIHx8IChkZWx0YVkgPCAwICYmIG1heEZvcndhcmRT
Y3JvbGxEZWx0YS5oZWlnaHQoKSA+IDApCi0gICAgICAgIHx8IChkZWx0YVkgPiAwICYmIG1heEJh
Y2t3YXJkU2Nyb2xsRGVsdGEuaGVpZ2h0KCkgPiAwKSkgewotICAgICAgICBoYW5kbGVkID0gdHJ1
ZTsKLQotICAgICAgICBPcHRpb25TZXQ8U2Nyb2xsQmVoYXZpb3I+IGJlaGF2aW9yKFNjcm9sbEJl
aGF2aW9yOjpEb0RpcmVjdGlvbmFsU25hcHBpbmcpOwotICAgICAgICBpZiAoZS5oYXNQcmVjaXNl
U2Nyb2xsaW5nRGVsdGFzKCkpCi0gICAgICAgICAgICBiZWhhdmlvci5hZGQoU2Nyb2xsQmVoYXZp
b3I6Ok5ldmVyQW5pbWF0ZSk7Ci0KLSAgICAgICAgaWYgKGRlbHRhWSkgewotICAgICAgICAgICAg
aWYgKGUuZ3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50KSB7Ci0gICAgICAg
ICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGRlbHRhWSA8IDA7Ci0gICAgICAgICAgICAgICAgZGVs
dGFZID0gU2Nyb2xsYmFyOjpwYWdlU3RlcERlbHRhKG1fc2Nyb2xsYWJsZUFyZWEudmlzaWJsZUhl
aWdodCgpKTsKLSAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUpCi0gICAgICAgICAgICAgICAg
ICAgIGRlbHRhWSA9IC1kZWx0YVk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzY3JvbGwo
VmVydGljYWxTY3JvbGxiYXIsIFNjcm9sbEJ5UGl4ZWwsIHZlcnRpY2FsU2Nyb2xsYmFyLT5waXhl
bFN0ZXAoKSwgLWRlbHRhWSwgYmVoYXZpb3IpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGRl
bHRhWCkgewotICAgICAgICAgICAgaWYgKGUuZ3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VX
aGVlbEV2ZW50KSB7Ci0gICAgICAgICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGRlbHRhWCA8IDA7
Ci0gICAgICAgICAgICAgICAgZGVsdGFYID0gU2Nyb2xsYmFyOjpwYWdlU3RlcERlbHRhKG1fc2Ny
b2xsYWJsZUFyZWEudmlzaWJsZVdpZHRoKCkpOwotICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2
ZSkKLSAgICAgICAgICAgICAgICAgICAgZGVsdGFYID0gLWRlbHRhWDsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHNjcm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCBo
b3Jpem9udGFsU2Nyb2xsYmFyLT5waXhlbFN0ZXAoKSwgLWRlbHRhWCwgYmVoYXZpb3IpOwotICAg
ICAgICB9Ci0gICAgfQotICAgIHJldHVybiBoYW5kbGVkOworICAgIHJldHVybiBtX3Njcm9sbENv
bnRyb2xsZXIuaGFuZGxlV2hlZWxFdmVudChlKTsKIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCkBAIC00MTAsNiArMzY4LDEzIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnJlbW92ZVdoZWVs
RXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUCiB9CiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKEdUSykgfHwgVVNFKE5JQ09TSUEpCitib29sIFNjcm9sbEFuaW1h
dG9yOjpzY3JvbGxBbmltYXRpb25FbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3Jv
bGxhYmxlQXJlYS5zY3JvbGxBbmltYXRvckVuYWJsZWQoKSAmJiBwbGF0Zm9ybUFsbG93c1Njcm9s
bEFuaW1hdGlvbigpOworfQorI2VuZGlmCisKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmNhbmNlbEFu
aW1hdGlvbnMoKQogewogICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zdG9wQW5pbWF0ZWRTY3JvbGwo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCmluZGV4IGU2YWFkMTVh
NDlkMjQyOWYwOTlkYmVjMjQ1ZDhlZGY1ZmZkZmRjZmMuLjM1ZDY1ZDRiYmE5MzM1YTBkNTc4Y2Uz
NzZkMzM1NmExZmJkOTE5ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuaApAQCAtNTQsNyArNTQsMTAgQEAgY2xhc3MgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJU
aW1lcjsKIGNsYXNzIFNjcm9sbEFuaW1hdG9yIDogcHJpdmF0ZSBTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlckNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gY3JlYXRlKFNjcm9sbGFi
bGVBcmVhJik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gY3Jl
YXRlKFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKKyAgICB7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9yPihzY3JvbGxhYmxlQXJlYSk7CisgICAgfQogCiAg
ICAgZXhwbGljaXQgU2Nyb2xsQW5pbWF0b3IoU2Nyb2xsYWJsZUFyZWEmKTsKICAgICB2aXJ0dWFs
IH5TY3JvbGxBbmltYXRvcigpOwpAQCAtMTYyLDYgKzE2NSwxMCBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24oV2hlZWxF
dmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0
TW9uaXRvcjo6RGVmZXJSZWFzb24pIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKKyNpZiBQTEFURk9S
TShHVEspIHx8IFVTRShOSUNPU0lBKQorICAgIGJvb2wgc2Nyb2xsQW5pbWF0aW9uRW5hYmxlZCgp
IGNvbnN0IGZpbmFsOworI2VuZGlmCisKICAgICBzdGF0aWMgRmxvYXRTaXplIGRlbHRhRnJvbVN0
ZXAoU2Nyb2xsYmFyT3JpZW50YXRpb24sIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIpOwog
CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlci5jcHAKaW5kZXggOGIzZGVlN2U0ZTYyNjllOTU2OTNjNDVjNTUx
ZTM3YTFlOGIxMmYxYS4uNDU2MzgyNjAzYTk1M2UyMTA1ZmVmMDNmOTFiOTBhNzE4N2JiYTQ3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyLmNwcApAQCAtMzAsMTMgKzMwLDE2IEBACiAjaW5jbHVkZSAiTGF5b3V0U2l6ZS5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIK
LSNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25LaW5ldGljLmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5p
bWF0aW9uTW9tZW50dW0uaCIKICNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25TbW9vdGguaCIKICNp
bmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRv
ci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAorI2lmIEVOQUJMRShLSU5F
VElDX1NDUk9MTElORykgJiYgIVBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJTY3JvbGxBbmltYXRp
b25LaW5ldGljLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlcjo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIoU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXJDbGllbnQmIGNsaWVudCkKQEAgLTk5LDEyICsxMDIsMTIgQEAgYm9vbCBT
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRp
b24oRmxvYXRQb2ludCBzdGEKICAgICByZXR1cm4gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uU21v
b3RoPigqbV9jdXJyZW50QW5pbWF0aW9uKS5zdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlv
bihzdGFydE9mZnNldCwgZGVzdGluYXRpb25PZmZzZXQpOwogfQogCi1ib29sIFNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyOjpyZWdhcmdldEFuaW1hdGVkU2Nyb2xsKEZsb2F0UG9pbnQgbmV3RGVz
dGluYXRpb25PZmZzZXQpCitib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpyZXRhcmdl
dEFuaW1hdGVkU2Nyb2xsKEZsb2F0UG9pbnQgbmV3RGVzdGluYXRpb25PZmZzZXQpCiB7CiAgICAg
aWYgKCFpczxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1fY3VycmVudEFuaW1hdGlvbi5nZXQoKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xs
QW5pbWF0aW9ucywgc3RyZWFtIDw8ICJTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciAiIDw8IHRo
aXMgPDwgIiByZWdhcmdldEFuaW1hdGVkU2Nyb2xsIHRvICIgPDwgbmV3RGVzdGluYXRpb25PZmZz
ZXQpOworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxBbmltYXRpb25zLCBzdHJlYW0gPDwgIlNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyICIgPDwgdGhpcyA8PCAiIHJldGFyZ2V0QW5pbWF0ZWRT
Y3JvbGwgdG8gIiA8PCBuZXdEZXN0aW5hdGlvbk9mZnNldCk7CiAKICAgICBBU1NFUlQobV9jdXJy
ZW50QW5pbWF0aW9uLT5pc0FjdGl2ZSgpKTsKICAgICByZXR1cm4gZG93bmNhc3Q8U2Nyb2xsQW5p
bWF0aW9uU21vb3RoPigqbV9jdXJyZW50QW5pbWF0aW9uKS5yZXRhcmdldEFjdGl2ZUFuaW1hdGlv
bihuZXdEZXN0aW5hdGlvbk9mZnNldCk7CkBAIC0xMTgsMzUgKzEyMSw2IEBAIHZvaWQgU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0b3BBbmltYXRlZFNjcm9sbCgpCiAgICAgICAgIG1fY3Vy
cmVudEFuaW1hdGlvbi0+c3RvcCgpOwogfQogCi1ib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvcktpbmV0aWNTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiBldmVudCkKLXsKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAg
aWYgKG1fY3VycmVudEFuaW1hdGlvbiAmJiAhaXM8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4obV9j
dXJyZW50QW5pbWF0aW9uLmdldCgpKSkgewotICAgICAgICBtX2N1cnJlbnRBbmltYXRpb24tPnN0
b3AoKTsKLSAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAg
ICBpZiAoIW1fY3VycmVudEFuaW1hdGlvbikKLSAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uID0g
bWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPigqdGhpcyk7Ci0KLSAgICBhdXRvJiBr
aW5ldGljQW5pbWF0aW9uID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oKm1fY3Vy
cmVudEFuaW1hdGlvbik7Ci0gICAga2luZXRpY0FuaW1hdGlvbi5hcHBlbmRUb1Njcm9sbEhpc3Rv
cnkoZXZlbnQpOwotCi0gICAgaWYgKGV2ZW50LmlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpKSB7
Ci0gICAgICAgIGtpbmV0aWNBbmltYXRpb24uc3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFs
VmVsb2NpdHkobV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCksIGtpbmV0aWNBbmltYXRpb24uY29tcHV0
ZVZlbG9jaXR5KCksIG1fY2xpZW50LmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSwgbV9jbGll
bnQuYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLSAgICBpZiAoZXZlbnQuaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpKSB7Ci0g
ICAgICAgIGtpbmV0aWNBbmltYXRpb24uY2xlYXJTY3JvbGxIaXN0b3J5KCk7Ci0gICAgICAgIGtp
bmV0aWNBbmltYXRpb24uc3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkobV9j
bGllbnQuc2Nyb2xsT2Zmc2V0KCksIGV2ZW50LnN3aXBlVmVsb2NpdHkoKSwgbV9jbGllbnQuYWxs
b3dzSG9yaXpvbnRhbFNjcm9sbGluZygpLCBtX2NsaWVudC5hbGxvd3NWZXJ0aWNhbFNjcm9sbGlu
ZygpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oZXZlbnQpOwotI2VuZGlmCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBib29sIFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyOjpzdGFydE1vbWVudHVtU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0
eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRp
YWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZ1bmN0aW9u
PEZsb2F0UG9pbnQoY29uc3QgRmxvYXRQb2ludCYpPiYgZGVzdGluYXRpb25Nb2RpZmllcikKIHsK
ICAgICBpZiAobV9jdXJyZW50QW5pbWF0aW9uKSB7CkBAIC0yNDksNiArMjIzLDEyMSBAQCBmbG9h
dCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6YWRqdXN0ZWRTY3JvbGxEZXN0aW5hdGlvbihT
Y3JvbGxFdmVudEF4aXMgYXhpcwogICAgIHJldHVybiBtX3Njcm9sbFNuYXBTdGF0ZS0+YWRqdXN0
ZWRTY3JvbGxEZXN0aW5hdGlvbihheGlzLCBkZXN0aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIG9y
aWdpbmFsT2Zmc2V0LCBtX2NsaWVudC5zY3JvbGxFeHRlbnRzKCksIG1fY2xpZW50LnBhZ2VTY2Fs
ZUZhY3RvcigpKTsKIH0KIAorI2lmICFQTEFURk9STShNQUMpCisjaWYgRU5BQkxFKEtJTkVUSUNf
U0NST0xMSU5HKQorYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cHJvY2Vzc1doZWVs
RXZlbnRGb3JLaW5ldGljU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQp
Cit7CisgICAgaWYgKGlzPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KG1fY3VycmVudEFuaW1hdGlv
bi5nZXQoKSkpCisgICAgICAgIG1fY3VycmVudEFuaW1hdGlvbi0+c3RvcCgpOworCisgICAgaWYg
KCFldmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpIHsKKyAgICAgICAgbV9zY3JvbGxI
aXN0b3J5LmNsZWFyKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX3Nj
cm9sbEhpc3RvcnkuYXBwZW5kKGV2ZW50KTsKKworICAgIGlmICghZXZlbnQuaXNFbmRPZk5vbk1v
bWVudHVtU2Nyb2xsKCkgJiYgIWV2ZW50LmlzVHJhbnNpdGlvbmluZ1RvTW9tZW50dW1TY3JvbGwo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fY3VycmVudEFuaW1hdGlvbiAm
JiAhaXM8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4obV9jdXJyZW50QW5pbWF0aW9uLmdldCgpKSkg
eworICAgICAgICBtX2N1cnJlbnRBbmltYXRpb24tPnN0b3AoKTsKKyAgICAgICAgbV9jdXJyZW50
QW5pbWF0aW9uID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoIW1fY3VycmVudEFuaW1hdGlv
bikKKyAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRp
b25LaW5ldGljPigqdGhpcyk7CisKKyAgICBhdXRvJiBraW5ldGljQW5pbWF0aW9uID0gZG93bmNh
c3Q8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oKm1fY3VycmVudEFuaW1hdGlvbik7CisgICAgd2hp
bGUgKCFtX3Njcm9sbEhpc3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBraW5ldGljQW5pbWF0aW9u
LmFwcGVuZFRvU2Nyb2xsSGlzdG9yeShtX3Njcm9sbEhpc3RvcnkudGFrZUZpcnN0KCkpOworCisg
ICAgaWYgKGV2ZW50LmlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpKSB7CisgICAgICAgIGtpbmV0
aWNBbmltYXRpb24uc3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkobV9jbGll
bnQuc2Nyb2xsT2Zmc2V0KCksIGtpbmV0aWNBbmltYXRpb24uY29tcHV0ZVZlbG9jaXR5KCksIG1f
Y2xpZW50LmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSwgbV9jbGllbnQuYWxsb3dzVmVydGlj
YWxTY3JvbGxpbmcoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoZXZl
bnQuaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpKSB7CisgICAgICAgIGtpbmV0aWNB
bmltYXRpb24uY2xlYXJTY3JvbGxIaXN0b3J5KCk7CisgICAgICAgIGtpbmV0aWNBbmltYXRpb24u
c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkobV9jbGllbnQuc2Nyb2xsT2Zm
c2V0KCksIGV2ZW50LnN3aXBlVmVsb2NpdHkoKSwgbV9jbGllbnQuYWxsb3dzSG9yaXpvbnRhbFNj
cm9sbGluZygpLCBtX2NsaWVudC5hbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorI2VuZGlmCisKK2Jvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6
OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQor
eworI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKKyAgICBpZiAocHJvY2Vzc1doZWVsRXZl
bnRGb3JLaW5ldGljU2Nyb2xsaW5nKHdoZWVsRXZlbnQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyNlbmRpZgorCisgICAgYXV0byBzY3JvbGxPZmZzZXQgPSBtX2NsaWVudC5zY3JvbGxPZmZzZXQo
KTsKKyAgICBmbG9hdCBkZWx0YVggPSBtX2NsaWVudC5hbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5n
KCkgPyB3aGVlbEV2ZW50LmRlbHRhWCgpIDogMDsKKyAgICBmbG9hdCBkZWx0YVkgPSBtX2NsaWVu
dC5hbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpID8gd2hlZWxFdmVudC5kZWx0YVkoKSA6IDA7Cisg
ICAgYXV0byBleHRlbnRzID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50cygpOworICAgIGF1dG8gbWlu
UG9zaXRpb24gPSBleHRlbnRzLm1pbmltdW1TY3JvbGxPZmZzZXQoKTsKKyAgICBhdXRvIG1heFBv
c2l0aW9uID0gZXh0ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCk7CisKKyAgICBpZiAoKGRlbHRh
WCA8IDAgJiYgc2Nyb2xsT2Zmc2V0LngoKSA+PSBtYXhQb3NpdGlvbi54KCkpCisgICAgICAgIHx8
IChkZWx0YVggPiAwICYmIHNjcm9sbE9mZnNldC54KCkgPD0gbWluUG9zaXRpb24ueCgpKSkKKyAg
ICAgICAgZGVsdGFYID0gMDsKKyAgICBpZiAoKGRlbHRhWSA8IDAgJiYgc2Nyb2xsT2Zmc2V0Lnko
KSA+PSBtYXhQb3NpdGlvbi55KCkpCisgICAgICAgIHx8IChkZWx0YVkgPiAwICYmIHNjcm9sbE9m
ZnNldC55KCkgPD0gbWluUG9zaXRpb24ueSgpKSkKKyAgICAgICAgZGVsdGFZID0gMDsKKworICAg
IGlmICghZGVsdGFYICYmICFkZWx0YVkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
ICh3aGVlbEV2ZW50LmdyYW51bGFyaXR5KCkgPT0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVudCkgewor
ICAgICAgICBpZiAoZGVsdGFYKSB7CisgICAgICAgICAgICBib29sIG5lZ2F0aXZlID0gZGVsdGFY
IDwgMDsKKyAgICAgICAgICAgIGRlbHRhWCA9IFNjcm9sbGJhcjo6cGFnZVN0ZXBEZWx0YShleHRl
bnRzLmNvbnRlbnRzU2l6ZS53aWR0aCgpKTsKKyAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkKKyAg
ICAgICAgICAgICAgICBkZWx0YVggPSAtZGVsdGFYOworICAgICAgICB9CisgICAgICAgIGlmIChk
ZWx0YVkpIHsKKyAgICAgICAgICAgIGJvb2wgbmVnYXRpdmUgPSBkZWx0YVkgPCAwOworICAgICAg
ICAgICAgZGVsdGFZID0gU2Nyb2xsYmFyOjpwYWdlU3RlcERlbHRhKGV4dGVudHMuY29udGVudHNT
aXplLmhlaWdodCgpKTsKKyAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkKKyAgICAgICAgICAgICAg
ICBkZWx0YVkgPSAtZGVsdGFZOworICAgICAgICB9CisgICAgfQorCisgICAgZGVsdGFYID0gLWRl
bHRhWDsKKyAgICBkZWx0YVkgPSAtZGVsdGFZOworCisgICAgaWYgKHNuYXBPZmZzZXRzSW5mbygp
ICYmICFzbmFwT2Zmc2V0c0luZm8oKS0+aXNFbXB0eSgpKSB7CisgICAgICAgIGZsb2F0IHNjYWxl
ID0gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIGF1dG8gb3JpZ2luYWxPZmZz
ZXQgPSBMYXlvdXRQb2ludChzY3JvbGxPZmZzZXQueCgpIC8gc2NhbGUsIHNjcm9sbE9mZnNldC55
KCkgLyBzY2FsZSk7CisgICAgICAgIGF1dG8gbmV3T2Zmc2V0ID0gTGF5b3V0UG9pbnQoKHNjcm9s
bE9mZnNldC54KCkgKyBkZWx0YVgpIC8gc2NhbGUsIChzY3JvbGxPZmZzZXQueSgpICsgZGVsdGFZ
KSAvIHNjYWxlKTsKKworICAgICAgICBhdXRvIG9mZnNldFggPSBzbmFwT2Zmc2V0c0luZm8oKS0+
Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBMYXlvdXRTaXpl
KGV4dGVudHMuY29udGVudHNTaXplKSwgbmV3T2Zmc2V0LCBkZWx0YVgsIG9yaWdpbmFsT2Zmc2V0
LngoKSkuZmlyc3Q7CisgICAgICAgIGF1dG8gb2Zmc2V0WSA9IHNuYXBPZmZzZXRzSW5mbygpLT5j
bG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBMYXlvdXRTaXplKGV4
dGVudHMuY29udGVudHNTaXplKSwgbmV3T2Zmc2V0LCBkZWx0YVksIG9yaWdpbmFsT2Zmc2V0Lnko
KSkuZmlyc3Q7CisKKyAgICAgICAgZGVsdGFYID0gKG9mZnNldFggLSBvcmlnaW5hbE9mZnNldC54
KCkpICogc2NhbGU7CisgICAgICAgIGRlbHRhWSA9IChvZmZzZXRZIC0gb3JpZ2luYWxPZmZzZXQu
eSgpKSAqIHNjYWxlOworICAgIH0KKworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAg
IGlmIChtX2NsaWVudC5zY3JvbGxBbmltYXRpb25FbmFibGVkKCkgJiYgIXdoZWVsRXZlbnQuaGFz
UHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpKSB7CisgICAgICAgIGlmIChpczxTY3JvbGxBbmltYXRp
b25TbW9vdGg+KG1fY3VycmVudEFuaW1hdGlvbi5nZXQoKSkpIHsKKyAgICAgICAgICAgIGF1dG8g
bGFzdERlc3RpbmF0aW9uT2Zmc2V0ID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigq
bV9jdXJyZW50QW5pbWF0aW9uKS5kZXN0aW5hdGlvbk9mZnNldCgpOworICAgICAgICAgICAgcmV0
YXJnZXRBbmltYXRlZFNjcm9sbChsYXN0RGVzdGluYXRpb25PZmZzZXQgKyBGbG9hdFNpemUgeyBk
ZWx0YVgsIGRlbHRhWSB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBzdGFydEFuaW1h
dGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihzY3JvbGxPZmZzZXQsIHNjcm9sbE9mZnNldCArIEZsb2F0
U2l6ZSB7IGRlbHRhWCwgZGVsdGFZIH0pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisj
ZW5kaWYKKworICAgIG1fY2xpZW50LmltbWVkaWF0ZVNjcm9sbEJ5KHsgZGVsdGFYLCBkZWx0YVkg
fSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiB2b2lkIFNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyOjp1cGRhdGVBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JDbGllbnRPZmZzZXQo
KQogewogICAgIGlmICghdXNlc1Njcm9sbFNuYXAoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCmluZGV4IGMzZGQxNjMwN2Nh
ZTQxNTExYTE3MTlhZjA5NDFjYTFjOTUyYmY2NTcuLjNjY2I1ZWY0OTZkMGY2N2JhNTUwNWE1Yjdh
NzIxNDQ5NmRlMTYzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNj
cm9sbFNuYXBPZmZzZXRzSW5mby5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVk
ZSAiV2hlZWxFdmVudFRlc3RNb25pdG9yLmgiCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIApAQCAt
MTE4LDYgKzExOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcFNjcm9sbFNu
YXBBbmltYXRpb24oKSB7IH0KICAgICB2aXJ0dWFsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIFNjcm9sbEV4dGVudHMgc2Nyb2xsRXh0ZW50cygpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQW5pbWF0aW9uRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KIH07CiAKIGNsYXNzIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyIDog
cHVibGljIFNjcm9sbEFuaW1hdGlvbkNsaWVudCB7CkBAIC0xMzIsMTIgKzEzNCw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZCgpOwogCiAgICAgYm9vbCBzdGFydEFu
aW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihGbG9hdFBvaW50IHN0YXJ0T2Zmc2V0LCBGbG9hdFBv
aW50IGRlc3RpbmF0aW9uT2Zmc2V0KTsKLSAgICBib29sIHJlZ2FyZ2V0QW5pbWF0ZWRTY3JvbGwo
RmxvYXRQb2ludCBuZXdEZXN0aW5hdGlvbk9mZnNldCk7CisgICAgYm9vbCByZXRhcmdldEFuaW1h
dGVkU2Nyb2xsKEZsb2F0UG9pbnQgbmV3RGVzdGluYXRpb25PZmZzZXQpOwogICAgIHZvaWQgc3Rv
cEFuaW1hdGVkU2Nyb2xsKCk7CiAKLSAgICAvLyBGSVhNRTogSGFjayBmb3IgU2Nyb2xsQW5pbWF0
b3JHZW5lcmljLiBOZWVkcyBjbGVhbnVwLgotICAgIGJvb2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JL
aW5ldGljU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwotCiAgICAgYm9vbCBz
dGFydE1vbWVudHVtU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBp
bml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxv
YXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IFdURjo6RnVuY3Rpb248RmxvYXRQb2ludChjb25z
dCBGbG9hdFBvaW50Jik+JiBkZXN0aW5hdGlvbk1vZGlmaWVyKTsKIAogICAgIHZvaWQgYmVnaW5L
ZXlib2FyZFNjcm9sbGluZygpOwpAQCAtMTYzLDEwICsxNjIsMTAgQEAgcHVibGljOgogICAgIC8v
IEZJWE1FOiBUaGlzIGlzIG5ldmVyIGNhbGxlZC4gV2UgbmV2ZXIgc2V0IG1fYWN0aXZlU2Nyb2xs
U25hcEluZGV4RGlkQ2hhbmdlIGJhY2sgdG8gZmFsc2UuCiAgICAgdm9pZCBzZXRTY3JvbGxTbmFw
SW5kZXhEaWRDaGFuZ2UoYm9vbCBzdGF0ZSkgeyBtX2FjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENo
YW5nZSA9IHN0YXRlOyB9CiAKLSNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gUmV0dXJucyB0cnVl
IGlmIGhhbmRsZWQuCiAgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYpOwogCisjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBGbG9hdFNpemUgd2hl
ZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7
CiAKICAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdDsKQEAgLTIxOCw3ICsy
MTcsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3Jv
bGxBbmltYXRpb24mLCBjb25zdCBGbG9hdFBvaW50JiAvKiBjdXJyZW50T2Zmc2V0ICovKSBmaW5h
bDsKICAgICB2b2lkIHNjcm9sbEFuaW1hdGlvbldpbGxTdGFydChTY3JvbGxBbmltYXRpb24mKSBm
aW5hbDsKICAgICB2b2lkIHNjcm9sbEFuaW1hdGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mKSBm
aW5hbDsKLSAgICBTY3JvbGxFeHRlbnRzIHNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xs
QW5pbWF0aW9uJikgIGZpbmFsOworICAgIFNjcm9sbEV4dGVudHMgc2Nyb2xsRXh0ZW50c0ZvckFu
aW1hdGlvbihTY3JvbGxBbmltYXRpb24mKSBmaW5hbDsKKworI2lmIEVOQUJMRShLSU5FVElDX1ND
Uk9MTElORykgJiYgIVBMQVRGT1JNKE1BQykKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgaGFuZGxl
ZC4KKyAgICBib29sIHByb2Nlc3NXaGVlbEV2ZW50Rm9yS2luZXRpY1Njcm9sbGluZyhjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmKTsKKworICAgIERlcXVlPFBsYXRmb3JtV2hlZWxFdmVudD4gbV9z
Y3JvbGxIaXN0b3J5OworI2VuZGlmCiAKICAgICBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlckNs
aWVudCYgbV9jbGllbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZTQzYTM2YTg0NzYzM2E0ZDgwODcyYmQzZTI1MWNkZjM5YjVjZDY0MS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDE2IElnYWxpYSBTLkwuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yR2VuZXJpYy5oIgotCi0jaW5j
bHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGQ6OnVu
aXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJs
ZUFyZWEmIHNjcm9sbGFibGVBcmVhKQotewotICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFu
aW1hdG9yR2VuZXJpYz4oc2Nyb2xsYWJsZUFyZWEpOwotfQotCi1TY3JvbGxBbmltYXRvckdlbmVy
aWM6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEp
Ci0gICAgOiBTY3JvbGxBbmltYXRvcihzY3JvbGxhYmxlQXJlYSkKLXsKLX0KLQotU2Nyb2xsQW5p
bWF0b3JHZW5lcmljOjp+U2Nyb2xsQW5pbWF0b3JHZW5lcmljKCkgPSBkZWZhdWx0OwotCi0vLyBG
SVhNRTogUHVzaCB0aGlzIGludG8gdGhlIGJhc2UgY2xhc3Mgc28gdGhhdCBTY3JvbGxBbmltYXRv
ckdlbmVyaWMgY2FuIGJlIHJlbW92ZWQuCi1ib29sIFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6aGFu
ZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQotewotICAgIGlm
IChtX3Njcm9sbENvbnRyb2xsZXIucHJvY2Vzc1doZWVsRXZlbnRGb3JLaW5ldGljU2Nyb2xsaW5n
KGV2ZW50KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gU2Nyb2xsQW5pbWF0
b3I6OmhhbmRsZVdoZWVsRXZlbnQoZXZlbnQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1h
dG9yR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmlt
YXRvckdlbmVyaWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU1ZmRmMmY5MzJh
M2FjNDAwZTAzNWQxMzZmNWIwYWQyZTM5ZGFlMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9s
bEFuaW1hdG9yR2VuZXJpYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoYykgMjAxNiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiU2Ny
b2xsQW5pbWF0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTY3JvbGxBbmlt
YXRpb247Ci0KLWNsYXNzIFNjcm9sbEFuaW1hdG9yR2VuZXJpYyBmaW5hbCA6IHB1YmxpYyBTY3Jv
bGxBbmltYXRvciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
KFNjcm9sbGFibGVBcmVhJik7Ci0gICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0b3JHZW5lcmljKCk7
Ci0KLSAgICBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikg
ZmluYWw7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440059</attachid>
            <date>2021-10-04 07:36:58 -0700</date>
            <delta_ts>2021-10-05 01:35:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230953-20211004153657.patch</filename>
            <type>text/plain</type>
            <size>51136</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjBlZTNiZjg3ZGI2ZGE2
YTg1OTQxOGNiMTRiYmUwYjM1ZmEyNjkxZC4uMTM4MWRkOWMzMzRmYzVjYmNlZDMyNDg3YThjMWEz
ZGJhNTdmNTIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIxLTEwLTA0ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFJFR1JFU1NJ
T046IEFzeW5jIHNjcm9sbGluZyBqdW1wcyB0byB0aGUgdG9wIG9mIHRoZSBwYWdlIHVudGlsIGtl
eWJvYXJkLWluaXRpYXRlZCBwYWdpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMDk1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgbm9uLU1hYy9pT1MgYXN5bmMgc2Nyb2xsaW5nIHBh
dGggdG8gd29yayBjb3JyZWN0bHkgYWZ0ZXIgdGhlCisgICAgICAgIHNjcm9sbGluZyByZWZhY3Rv
ci4gVHJ5aW5nIHRvIHN1bW1hcmlzZSwgdGhpcyBpbXBsZW1lbnRzCisgICAgICAgIFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyIGluIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVO
aWNvc2lhCisgICAgICAgIGFuZCBtb3ZlcyBzbW9vdGggYW5kIGtpbmV0aWMgc2Nyb2xsaW5nIGFu
aW1hdGlvbnMgdG8KKyAgICAgICAgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIsIHRvIGJlIHNo
YXJlZCBieSBib3RoIHN5bmMgYW5kIGFzeW5jIHBhdGhzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cyAoaG9wZWZ1bGx5KS4KKworICAgICAgICAqIFBs
YXRmb3JtUGxheVN0YXRpb24uY21ha2U6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAg
ICAgICogU291cmNlc1dQRS50eHQ6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUJl
Zm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5p
Y29zaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZU5pY29zaWE6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmlj
b3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE6OnVwZGF0ZUZyb21TdGF0ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnVwZGF0ZVZpc2libGVMZW5ndGhzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNv
c2lhOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzdG9wU2Nyb2xsQW5pbWF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6
YW5pbWF0aW9uVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6Y3JlYXRlVGltZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnN0YXJ0QW5pbWF0
aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU5pY29zaWE6OnN0b3BBbmltYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6YWxsb3dzSG9y
aXpvbnRhbFNjcm9sbGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6YWxsb3dzVmVydGljYWxTY3JvbGxpbmcgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWE6OmltbWVkaWF0ZVNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjppbW1lZGlhdGVTY3JvbGxCeVdpdGhv
dXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91
bmRzSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbE9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6d2lsbFN0YXJ0
U2Nyb2xsU25hcEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6ZGlkU3RvcFNjcm9sbFNuYXBBbmltYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWE6OnBhZ2VTY2FsZUZhY3RvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsRXh0ZW50cyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3Np
YTo6cmVzZXRDdXJyZW50UG9zaXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1h
dGlvbktpbmV0aWMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290aCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6cGFnZVNjYWxlRmFjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxBbmlt
YXRpb25EaWRVcGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbEFuaW1hdGlvbkRpZEVuZCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTmljb3NpYTo6c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c3Rh
cnRUaW1lcklmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpyZXRhcmdldFJ1
bm5pbmdBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmhhbmRs
ZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFu
aW1hdGlvbkVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cmV0YXJnZXRBbmltYXRlZFNjcm9sbCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cHJvY2Vzc1do
ZWVsRXZlbnRGb3JLaW5ldGljU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpyZWdhcmdldEFuaW1hdGVkU2Nyb2xsKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJDbGllbnQ6OnNjcm9s
bEFuaW1hdGlvbkVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Ny
b2xsQW5pbWF0b3JHZW5lcmljLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpoYW5kbGVXaGVlbEV2ZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oOiBS
ZW1vdmVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKwogMjAyMS0xMC0wNCAgS2ltbW8gS2lubnVu
ZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb24gKHIyODMyMzgp
WyBNYWNPUyB3azEgXSBmYXN0L21lZGlhY2FwdHVyZWZyb21lbGVtZW50L0NhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbS13ZWJnbC1ldmVudHMuaHRtbCBpcyB0aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQppbmRleCA1ZGRjODc0ODJmZDc0NzZlNTAxZjA4NTFh
YzgyMzA5YjNkYmEwYzNhLi45ZjE1NTllYzJlNWQ5MmY2ZTJlMjk0YWVmZDQwYTI4Mjk0ZWYzYWMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKQEAgLTM2LDcgKzM2
LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCiAgICAgcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmNwcAotICAgIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
LmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKaW5kZXggYjAx
YzAwMThhZjA1Y2Q3ZmFhMGIxZGY1YmIyM2IwMWRhZjk0NzI2OS4uM2NkZjNlODFlZTM1MzUyYzU5
ZjgzYmUxYjhiY2RjZGYxZDc5YmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0dUSy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKQEAgLTc5LDcgKzc5
LDYgQEAgcGxhdGZvcm0vYWR3YWl0YS9UaGVtZUFkd2FpdGEuY3BwCiBwbGF0Zm9ybS9nYW1lcGFk
L21hbmV0dGUvTWFuZXR0ZUdhbWVwYWQuY3BwCiBwbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFu
ZXR0ZUdhbWVwYWRQcm92aWRlci5jcHAKIAotcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRv
ckdlbmVyaWMuY3BwCiBwbGF0Zm9ybS9nZW5lcmljL1Njcm9sbGJhcnNDb250cm9sbGVyR2VuZXJp
Yy5jcHAKIAogcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNXUEUudHh0CmluZGV4IGE5YTI3OTE0MTgwMTY5OTFkYjI0ZDViZjA5YzllNTEwYzgwMTMzYjgu
LjY2MzNhYTE4YTljZDgxMjE2ZTZjNDZhN2M0MjM3ZjAxYTFlNGJiYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNX
UEUudHh0CkBAIC02Myw3ICs2Myw2IEBAIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKIHBs
YXRmb3JtL2Fkd2FpdGEvU2Nyb2xsYmFyVGhlbWVBZHdhaXRhLmNwcAogcGxhdGZvcm0vYWR3YWl0
YS9UaGVtZUFkd2FpdGEuY3BwCiAKLXBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5l
cmljLmNwcAogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxiYXJzQ29udHJvbGxlckdlbmVyaWMuY3Bw
CiAKIHBsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmgKaW5kZXggYmEwYjdkMDIxN2ZhNDIwNjA2MDgzMTZmZjUyNjBlMmUxMzlmMmY5YS4uOWMx
YmE2YjJmMTAzZDRjNDQ1NTkyNTBjNTc2NjBhMTEzYjE0NWVmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZS5oCkBAIC00Myw2ICs0Myw5IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlIDogcHVibGljIFNjcm9sbGluZ1RyZWVOb2RlIHsKICAgICBmcmllbmQgY2xh
c3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZTsKICNpZiBQTEFURk9STShNQUMp
CiAgICAgZnJpZW5kIGNsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM7
CisjZW5kaWYKKyNpZiBVU0UoTklDT1NJQSkKKyAgICBmcmllbmQgY2xhc3MgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE7CiAjZW5kaWYKICAgICBmcmllbmQgY2xhc3Mg
U2Nyb2xsaW5nVHJlZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVOaWNvc2lhLmNwcAppbmRleCBmMWU3M2Q0ZjQzMTMxZTU2MThhMGM1MWNkMjdh
Y2NiYzI3OWYxNzcxLi4wMzI1NjA1MWU2YWJjNDk0OTk2N2Y4NmZjZWYzNjU5NGNmMmFiMjE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNv
c2lhLmNwcApAQCAtODIsNiArODIsOCBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcgogICAgICAg
ICBhdXRvKiBsYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3Jv
bGxpbmdTdGF0ZU5vZGUuZm9vdGVyTGF5ZXIoKSk7CiAgICAgICAgIG1fZm9vdGVyTGF5ZXIgPSBk
b3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7CiAgICAgfQorCisgICAg
bV9kZWxlZ2F0ZS51cGRhdGVGcm9tU3RhdGVOb2RlKHNjcm9sbGluZ1N0YXRlTm9kZSk7CiB9CiAK
IHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmNvbW1pdFN0YXRl
QWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKQEAgLTk1
LDcgKzk3LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6
Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm8KICAgICAgICAgc3RvcFNjcm9sbEFu
aW1hdGlvbnMoKTsKICAgICAgICAgY29uc3QgYXV0byYgcmVxdWVzdGVkU2Nyb2xsRGF0YSA9IHNj
cm9sbGluZ1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxEYXRhKCk7CiAgICAgICAgIHNjcm9sbFRv
KHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsUG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbERhdGEu
c2Nyb2xsVHlwZSwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5jbGFtcGluZyk7Ci0gICAgICAgIG1fZGVs
ZWdhdGUucmVzZXRDdXJyZW50UG9zaXRpb24oKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKaW5k
ZXggYzQ3NGM0ODIwMGExNWYyMjcyNTljOGY0MTRlNDEwMjUzZTUwMGRhMy4uZjJhZTAzM2QwZDZi
NTBmZDU5OTdjMWViOGU4MjQ5Y2ZjNTQwMDdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
Tmljb3NpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKQEAgLTU2LDcgKzU2
LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29t
bWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFMKICAgICAgICAgc3RvcFNjcm9sbEFuaW1hdGlv
bnMoKTsKICAgICAgICAgY29uc3QgYXV0byYgcmVxdWVzdGVkU2Nyb2xsRGF0YSA9IG92ZXJmbG93
U3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbERhdGEoKTsKICAgICAgICAgc2Nyb2xsVG8ocmVxdWVz
dGVkU2Nyb2xsRGF0YS5zY3JvbGxQb3NpdGlvbiwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxU
eXBlLCByZXF1ZXN0ZWRTY3JvbGxEYXRhLmNsYW1waW5nKTsKLSAgICAgICAgbV9kZWxlZ2F0ZS5y
ZXNldEN1cnJlbnRQb3NpdGlvbigpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAppbmRleCAwZmI1
MzhmYzY4MGFhZTQyNjJkZWQ1OWJjNGZjZGU4MGQ2ZDJiZTg4Li4wZGQxOWUxYzY3MDdlYzA4NmIx
ZjY1MzI0YTQ2MzcxYWJhNzQwMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcApAQCAtNDIsMjAgKzQyLDI1IEBA
IGNsYXNzIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM7CiAKIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmlj
b3NpYShTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYgc2Nyb2xsaW5nTm9kZSwgYm9vbCBzY3Jv
bGxBbmltYXRvckVuYWJsZWQpCiAgICAgOiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlKHNjcm9sbGluZ05vZGUpCisgICAgLCBtX3Njcm9sbENvbnRyb2xsZXIoKnRoaXMpCiAgICAg
LCBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZChzY3JvbGxBbmltYXRvckVuYWJsZWQpCi0jaWYgRU5B
QkxFKEtJTkVUSUNfU0NST0xMSU5HKSB8fCBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICAs
IG1fYW5pbWF0aW9uVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmFuaW1hdGlvblRpbWVyRmlyZWQpCi0jZW5k
aWYKIHsKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpIHx8IEVOQUJMRShTTU9PVEhfU0NS
T0xMSU5HKQotI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCi0gICAgbV9hbmltYXRpb25UaW1lci5z
ZXRQcmlvcml0eShXVEY6OlJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJlZnJlc2hNb25p
dG9yVGltZXIpOwotI2VuZGlmCi0jZW5kaWYgICAgCiB9CiAKIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhOjp+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWEoKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU5pY29zaWE6OnVwZGF0ZUZyb21TdGF0ZU5vZGUoY29uc3QgU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdTdGF0ZU5vZGUpCit7CisgICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6
U25hcE9mZnNldHNJbmZvKSkKKyAgICAgICAgbV9zY3JvbGxDb250cm9sbGVyLnNldFNuYXBPZmZz
ZXRzSW5mbyhzY3JvbGxpbmdTdGF0ZU5vZGUuc25hcE9mZnNldHNJbmZvKCkuY29udmVydFVuaXRz
PExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbz4oKSk7CisKKyAgICBpZiAoc2Nyb2xsaW5nU3Rh
dGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpD
dXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCkpCisgICAgICAgIG1fc2Nyb2xsQ29udHJv
bGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6SG9y
aXpvbnRhbCwgc2Nyb2xsaW5nU3RhdGVOb2RlLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXgoKSk7CisKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5k
ZXgpKQorICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIuc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4
Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBzY3JvbGxpbmdTdGF0ZU5vZGUuY3Vy
cmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxOaWNv
c2lhOjpTY2VuZUludGVncmF0aW9uOjpVcGRhdGVTY29wZT4gU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWE6OmNyZWF0ZVVwZGF0ZVNjb3BlKCkKIHsKICAgICBhdXRvKiBz
Y3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxp
bmdOb2RlKCkuc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSk7CkBAIC02NywyMDUgKzcyLDEyMCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Tmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6VXBkYXRlU2NvcGU+IFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdObwogICAgIHJldHVybiBjb21wb3NpdGlvbkxheWVyLmNyZWF0
ZVVwZGF0ZVNjb3BlKCk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU5pY29zaWE6OnJlc2V0Q3VycmVudFBvc2l0aW9uKCkKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnVwZGF0ZVZpc2libGVMZW5ndGhzKCkKIHsKLSNp
ZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0g
ICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zdG9wKCk7Ci0jZW5kaWYKKyAgICBtX3Njcm9sbENv
bnRyb2xsZXIuY29udGVudHNTaXplQ2hhbmdlZCgpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjp1cGRhdGVWaXNpYmxlTGVuZ3RocygpCitXaGVl
bEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2
ZW50LCBFdmVudFRhcmdldGluZyBldmVudFRhcmdldGluZykKIHsKLSNpZiBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKLSAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgIG1fc21vb3Ro
QW5pbWF0aW9uLT51cGRhdGVTY3JvbGxFeHRlbnRzKCk7Ci0jZW5kaWYKKyAgICBpZiAoIXNjcm9s
bGluZ05vZGUoKS5jYW5IYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5n
KQorICAgICAgICB8fCAhbV9zY3JvbGxDb250cm9sbGVyLmhhbmRsZVdoZWVsRXZlbnQod2hlZWxF
dmVudCkpCisgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OnVuaGFuZGxl
ZCgpOworCisgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwog
fQogCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQotdm9pZCBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygp
Cit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzdG9wU2Ny
b2xsQW5pbWF0aW9ucygpCiB7Ci0gICAgaWYgKG1fa2luZXRpY0FuaW1hdGlvbikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9raW5ldGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmlt
YXRpb25LaW5ldGljPigqdGhpcyk7Ci0gICAgc3RhcnRUaW1lcklmTmVjZXNzYXJ5KCk7CisgICAg
bV9zY3JvbGxDb250cm9sbGVyLnN0b3BBbmltYXRlZFNjcm9sbCgpOwogfQotI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290aCgpCit2b2lkIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphbmltYXRpb25UaW1lckZp
cmVkKCkKIHsKLSAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgIHJldHVybjsKKyAg
ICBtX3Njcm9sbENvbnRyb2xsZXIuYW5pbWF0aW9uQ2FsbGJhY2soTW9ub3RvbmljVGltZTo6bm93
KCkpOworfQogCi0gICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1h
dGlvblNtb290aD4oKnRoaXMpOwotICAgIHN0YXJ0VGltZXJJZk5lY2Vzc2FyeSgpOworc3RkOjp1
bmlxdWVfcHRyPFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI+IFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpjcmVhdGVUaW1lcihGdW5jdGlvbjx2b2lkKCk+
JiYgZnVuY3Rpb24pCit7CisgICAgcmV0dXJuIFdURjo6bWFrZVVuaXF1ZTxTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlclRpbWVyPihSdW5Mb29wOjpjdXJyZW50KCksIFtmdW5jdGlvbiA9IFdURk1v
dmUoZnVuY3Rpb24pLCBwcm90ZWN0ZWROb2RlID0gUmVmIHsgc2Nyb2xsaW5nTm9kZSgpIH1dIHsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHByb3RlY3RlZE5vZGUtPnNjcm9sbGluZ1RyZWUoKS50
cmVlTG9jaygpIH07CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgfSk7CiB9Ci0jZW5kaWYKIAot
V2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCwgRXZlbnRUYXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpCit2b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzdGFydEFuaW1hdGlvbkNhbGxiYWNrKFNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyJikKIHsKLSAgICBpZiAoIXNjcm9sbGluZ05vZGUoKS5j
YW5IYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKSkKLSAgICAgICAg
cmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7CisgICAgaWYgKCFt
X2FuaW1hdGlvblRpbWVyKSB7CisgICAgICAgIG1fYW5pbWF0aW9uVGltZXIgPSBXVEY6Om1ha2VV
bmlxdWU8UnVuTG9vcDo6VGltZXI8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTmljb3NpYTo6YW5pbWF0aW9uVGltZXJGaXJlZCk7CiAKLSAgICBib29sIGNh
bkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyID0gc2Nyb2xsaW5nTm9kZSgpLmNhbkhhdmVIb3Jpem9u
dGFsU2Nyb2xsYmFyKCk7Ci0gICAgYm9vbCBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIgPSBzY3Jv
bGxpbmdOb2RlKCkuY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKCk7Ci0jaWYgRU5BQkxFKEtJTkVU
SUNfU0NST0xMSU5HKQotICAgIGVuc3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKTsKLSAgICBt
X2tpbmV0aWNBbmltYXRpb24tPmFwcGVuZFRvU2Nyb2xsSGlzdG9yeSh3aGVlbEV2ZW50KTsKLSAg
ICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKLSAgICBpZiAod2hlZWxFdmVudC5pc0VuZE9m
Tm9uTW9tZW50dW1TY3JvbGwoKSkgewotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0
QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGN1cnJlbnRTY3JvbGxQb3NpdGlvbigp
LCBtX2tpbmV0aWNBbmltYXRpb24tPmNvbXB1dGVWZWxvY2l0eSgpLCBjYW5IYXZlSG9yaXpvbnRh
bFNjcm9sbGJhciwgY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKTsKLSAgICAgICAgbV9raW5ldGlj
QW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKLSAgICAgICAgcmV0dXJuIFdoZWVsRXZl
bnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwotICAgIH0KLSAgICBpZiAod2hlZWxFdmVudC5p
c1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xsKCkpIHsKLSAgICAgICAgbV9raW5ldGljQW5p
bWF0aW9uLT5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjdXJyZW50U2Ny
b2xsUG9zaXRpb24oKSwgd2hlZWxFdmVudC5zd2lwZVZlbG9jaXR5KCksIGNhbkhhdmVIb3Jpem9u
dGFsU2Nyb2xsYmFyLCBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIpOwotICAgICAgICBtX2tpbmV0
aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwotICAgICAgICByZXR1cm4gV2hlZWxF
dmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7Ci0gICAgfQorI2lmIFVTRShHTElCX0VWRU5U
X0xPT1ApCisgICAgICAgIG1fYW5pbWF0aW9uVGltZXItPnNldFByaW9yaXR5KFdURjo6UnVuTG9v
cFNvdXJjZVByaW9yaXR5OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JUaW1lcik7CiAjZW5kaWYKLQot
ICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIHNoYXJlIGNvZGUgd2l0aCBTY3JvbGxBbmltYXRv
cjo6aGFuZGxlV2hlZWxFdmVudCgpLCBwZXJoYXBzIGJ5IG1vdmluZyBjb2RlIGludG8gU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoKS4KLSAgICBmbG9hdCBkZWx0
YVggPSBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhciA/IHdoZWVsRXZlbnQuZGVsdGFYKCkgOiAw
OwotICAgIGZsb2F0IGRlbHRhWSA9IGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhciA/IHdoZWVsRXZl
bnQuZGVsdGFZKCkgOiAwOwotICAgIGlmICgoZGVsdGFYIDwgMCAmJiBjdXJyZW50U2Nyb2xsUG9z
aXRpb24oKS54KCkgPj0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueCgpKQotICAgICAgICB8fCAo
ZGVsdGFYID4gMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS54KCkgPD0gbWluaW11bVNjcm9s
bFBvc2l0aW9uKCkueCgpKSkKLSAgICAgICAgZGVsdGFYID0gMDsKLSAgICBpZiAoKGRlbHRhWSA8
IDAgJiYgY3VycmVudFNjcm9sbFBvc2l0aW9uKCkueSgpID49IG1heGltdW1TY3JvbGxQb3NpdGlv
bigpLnkoKSkKLSAgICAgICAgfHwgKGRlbHRhWSA+IDAgJiYgY3VycmVudFNjcm9sbFBvc2l0aW9u
KCkueSgpIDw9IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSkpCi0gICAgICAgIGRlbHRhWSA9
IDA7Ci0KLSAgICBpZiAoIWRlbHRhWCAmJiAhZGVsdGFZKQotICAgICAgICByZXR1cm4gV2hlZWxF
dmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKLQotICAgIGlmICh3aGVlbEV2ZW50Lmdy
YW51bGFyaXR5KCkgPT0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVudCkgewotICAgICAgICBpZiAoZGVs
dGFYKSB7Ci0gICAgICAgICAgICBib29sIG5lZ2F0aXZlID0gZGVsdGFYIDwgMDsKLSAgICAgICAg
ICAgIGRlbHRhWCA9IFNjcm9sbGJhcjo6cGFnZVN0ZXBEZWx0YShzY3JvbGxhYmxlQXJlYVNpemUo
KS53aWR0aCgpKTsKLSAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkKLSAgICAgICAgICAgICAgICBk
ZWx0YVggPSAtZGVsdGFYOwotICAgICAgICB9Ci0gICAgICAgIGlmIChkZWx0YVkpIHsKLSAgICAg
ICAgICAgIGJvb2wgbmVnYXRpdmUgPSBkZWx0YVkgPCAwOwotICAgICAgICAgICAgZGVsdGFZID0g
U2Nyb2xsYmFyOjpwYWdlU3RlcERlbHRhKHNjcm9sbGFibGVBcmVhU2l6ZSgpLmhlaWdodCgpKTsK
LSAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkKLSAgICAgICAgICAgICAgICBkZWx0YVkgPSAtZGVs
dGFZOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZGVsdGFYID0gLWRlbHRhWDsKLSAgICBkZWx0
YVkgPSAtZGVsdGFZOwotCi0gICAgaWYgKCFzY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZv
KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGZsb2F0IHNjYWxlID0gcGFnZVNjYWxlRmFjdG9yKCk7
Ci0gICAgICAgIEZsb2F0UG9pbnQgb3JpZ2luYWxPZmZzZXQgPSBMYXlvdXRQb2ludChzY3JvbGxp
bmdOb2RlKCkuY3VycmVudFNjcm9sbE9mZnNldCgpLngoKSAvIHNjYWxlLCBzY3JvbGxpbmdOb2Rl
KCkuY3VycmVudFNjcm9sbE9mZnNldCgpLnkoKSAvIHNjYWxlKTsKLSAgICAgICAgYXV0byBuZXdP
ZmZzZXQgPSAoc2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRTY3JvbGxPZmZzZXQoKSArIEZsb2F0U2l6
ZShkZWx0YVgsIGRlbHRhWSkpOwotICAgICAgICBuZXdPZmZzZXQuc2NhbGUoMS4wIC8gc2NhbGUp
OwotCi0gICAgICAgIGF1dG8gb2Zmc2V0WCA9IHNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0lu
Zm8oKS5jbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9s
bGFibGVBcmVhU2l6ZSgpLCBuZXdPZmZzZXQsIGRlbHRhWCwgb3JpZ2luYWxPZmZzZXQueCgpKS5m
aXJzdDsKLSAgICAgICAgYXV0byBvZmZzZXRZID0gc2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRz
SW5mbygpLmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHNjcm9s
bGFibGVBcmVhU2l6ZSgpLCBuZXdPZmZzZXQsIGRlbHRhWSwgb3JpZ2luYWxPZmZzZXQueSgpKS5m
aXJzdDsKLQotICAgICAgICBkZWx0YVggPSAob2Zmc2V0WCAtIG9yaWdpbmFsT2Zmc2V0LngoKSkg
KiBzY2FsZTsKLSAgICAgICAgZGVsdGFZID0gKG9mZnNldFkgLSBvcmlnaW5hbE9mZnNldC55KCkp
ICogc2NhbGU7CiAgICAgfQogCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgaWYg
KG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkICYmICF3aGVlbEV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxp
bmdEZWx0YXMoKSkgewotICAgICAgICBlbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgoKTsKLSAg
ICAgICAgYXV0byBjdXJyZW50T2Zmc2V0ID0gc2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRTY3JvbGxP
ZmZzZXQoKTsKLSAgICAgICAgYXV0byBkZXN0aW5hdGlvbk9mZnNldCA9IGN1cnJlbnRPZmZzZXQg
KyBGbG9hdFNpemUgeyBkZWx0YVgsIGRlbHRhWSB9OwotICAgICAgICBtX3Ntb290aEFuaW1hdGlv
bi0+c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24oY3VycmVudE9mZnNldCwgZGVzdGlu
YXRpb25PZmZzZXQpOwotICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojpo
YW5kbGVkKCk7Ci0gICAgfQotI2VuZGlmCisgICAgaWYgKG1fYW5pbWF0aW9uVGltZXItPmlzQWN0
aXZlKCkpCisgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjcmVhdGVV
cGRhdGVTY29wZSgpOwotICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxCeSh7IGRlbHRhWCwgZGVs
dGFZIH0pOworICAgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGZyYW1lUmF0ZSA9IDYwOworICAg
IHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyB0aWNrVGltZSA9IDFfcyAvIGZyYW1lUmF0ZTsKKyAg
ICBtX2FuaW1hdGlvblRpbWVyLT5zdGFydFJlcGVhdGluZyh0aWNrVGltZSk7Cit9CiAKLSAgICBy
ZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7Cit2b2lkIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzdG9wQW5pbWF0aW9uQ2FsbGJhY2so
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXImKQoreworICAgIGlmIChtX2FuaW1hdGlvblRpbWVy
KQorICAgICAgICBtX2FuaW1hdGlvblRpbWVyLT5zdG9wKCk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKCkK
K2Jvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmFsbG93c0hv
cml6b250YWxTY3JvbGxpbmcoKSBjb25zdAogewotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElO
RykKLSAgICBpZiAobV9raW5ldGljQW5pbWF0aW9uKSB7Ci0gICAgICAgIG1fa2luZXRpY0FuaW1h
dGlvbi0+c3RvcCgpOwotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlz
dG9yeSgpOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAg
IGlmIChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0b3Ao
KTsKLSNlbmRpZgotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykgfHwgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCi0gICAgbV9hbmltYXRpb25UaW1lci5zdG9wKCk7Ci0jZW5kaWYKKyAgICBy
ZXR1cm4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZTo6YWxsb3dzSG9yaXpvbnRh
bFNjcm9sbGluZygpOwogfQogCi1mbG9hdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTmljb3NpYTo6cGFnZVNjYWxlRmFjdG9yKCkKK2Jvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWE6OmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgY29uc3QKIHsK
LSAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgdGhpcyByZXR1cm4gZm9yIG5vbi1yb290IGZyYW1l
cywgYW5kIG92ZXJmbG93PwotICAgIC8vIEFsc28sIHRoaXMgc2hvdWxkIG5vdCBoYXZlIHRvIGFj
Y2VzcyBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLgotICAgIHJldHVybiBpczxTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdOb2RlKCkpID8KLSAgICAgICAg
ZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oc2Nyb2xsaW5nTm9kZSgp
KS5mcmFtZVNjYWxlRmFjdG9yKCkgOiAxLjsKKyAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZTo6YWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKTsKIH0KIAotdm9pZCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsQW5pbWF0aW9u
RGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBv
ZmZzZXQpCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpp
bW1lZGlhdGVTY3JvbGxCeShjb25zdCBGbG9hdFNpemUmIGRlbHRhKQogewotI2lmIEVOQUJMRShT
TU9PVEhfU0NST0xMSU5HKQotICAgIGlmICgmYW5pbWF0aW9uID09IG1fa2luZXRpY0FuaW1hdGlv
bi5nZXQoKSkgewotICAgICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgICAgICBt
X3Ntb290aEFuaW1hdGlvbi0+c3RvcCgpOwotICAgIH0KLSNlbmRpZgogICAgIGF1dG8gdXBkYXRl
U2NvcGUgPSBjcmVhdGVVcGRhdGVTY29wZSgpOworICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxC
eShkZWx0YSk7Cit9CiAKLSAgICAvLyBGSVhNRTogTmVlZCB0byBjb252ZXJ0IGFuIG9mZnNldCB0
byBhIHBvc2l0aW9uLgotICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxUbyhvZmZzZXQpOwordm9p
ZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6aW1tZWRpYXRlU2Ny
b2xsQnlXaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFNpemUmIG9mZnNl
dCkKK3sKKyAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY3JlYXRlVXBkYXRlU2NvcGUoKTsKKyAgICBz
Y3JvbGxpbmdOb2RlKCkuc2Nyb2xsQnkob2Zmc2V0LCBTY3JvbGxDbGFtcGluZzo6VW5jbGFtcGVk
KTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6
c2Nyb2xsQW5pbWF0aW9uRGlkRW5kKFNjcm9sbEFuaW1hdGlvbiYpCit2b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91
bmRzSWZOZWNlc3NhcnkoKQogeworICAgIEZsb2F0UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBjdXJy
ZW50U2Nyb2xsUG9zaXRpb24oKTsKKyAgICBGbG9hdFBvaW50IGNvbnN0cmFpbmVkUG9zaXRpb24g
PSBzY3JvbGxQb3NpdGlvbi5jb25zdHJhaW5lZEJldHdlZW4obWluaW11bVNjcm9sbFBvc2l0aW9u
KCksIG1heGltdW1TY3JvbGxQb3NpdGlvbigpKTsKKyAgICBpbW1lZGlhdGVTY3JvbGxCeShjb25z
dHJhaW5lZFBvc2l0aW9uIC0gc2Nyb2xsUG9zaXRpb24pOwogfQogCi1TY3JvbGxFeHRlbnRzIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxFeHRlbnRzRm9y
QW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYpCitGbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxPZmZzZXQoKSBjb25zdAogewotICAgIHJl
dHVybiB7Ci0gICAgICAgIHNjcm9sbGluZ05vZGUoKS50b3RhbENvbnRlbnRzU2l6ZSgpLAotICAg
ICAgICBzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsYWJsZUFyZWFTaXplKCkKLSAgICB9OworICAgIHJl
dHVybiBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsT2Zmc2V0RnJvbVBvc2l0aW9uKGN1cnJlbnRTY3Jv
bGxQb3NpdGlvbigpLCBzY3JvbGxPcmlnaW4oKSk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnN0YXJ0VGltZXJJZk5lY2Vzc2FyeSgpCit2b2lk
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjp3aWxsU3RhcnRTY3Jv
bGxTbmFwQW5pbWF0aW9uKCkKIHsKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpIHx8IEVO
QUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIGlmIChtX2FuaW1hdGlvblRpbWVyLmlzQWN0aXZl
KCkpCi0gICAgICAgIHJldHVybjsKKyAgICBzY3JvbGxpbmdOb2RlKCkuc2V0U2Nyb2xsU25hcElu
UHJvZ3Jlc3ModHJ1ZSk7Cit9CiAKLSAgICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBmcmFtZVJh
dGUgPSA2MDsKLSAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgdGlja1RpbWUgPSAxX3MgLyBm
cmFtZVJhdGU7Ci0gICAgCi0gICAgbV9hbmltYXRpb25UaW1lci5zdGFydFJlcGVhdGluZyh0aWNr
VGltZSk7Ci0jZW5kaWYKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE6OmRpZFN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCkKK3sKKyAgICBzY3JvbGxpbmdOb2Rl
KCkuc2V0U2Nyb2xsU25hcEluUHJvZ3Jlc3MoZmFsc2UpOwogfQogCi12b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphbmltYXRpb25UaW1lckZpcmVkKCkKK2Zs
b2F0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpwYWdlU2NhbGVG
YWN0b3IoKSBjb25zdAogewotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykgfHwgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCi0gICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsK
LSNlbmRpZgorICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB0aGlzIHJldHVybiBmb3Igbm9uLXJv
b3QgZnJhbWVzLCBhbmQgb3ZlcmZsb3c/CisgICAgLy8gQWxzbywgdGhpcyBzaG91bGQgbm90IGhh
dmUgdG8gYWNjZXNzIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuCisgICAgcmV0dXJu
IGlzPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KHNjcm9sbGluZ05vZGUoKSkgPwor
ICAgICAgICBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxp
bmdOb2RlKCkpLmZyYW1lU2NhbGVGYWN0b3IoKSA6IDEuOworfQogCi0jaWYgRU5BQkxFKEtJTkVU
SUNfU0NST0xMSU5HKQotICAgIGlmIChtX2tpbmV0aWNBbmltYXRpb24pCi0gICAgICAgIG1fa2lu
ZXRpY0FuaW1hdGlvbi0+c2VydmljZUFuaW1hdGlvbihub3cpOwotI2VuZGlmCi0jaWYgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICBt
X3Ntb290aEFuaW1hdGlvbi0+c2VydmljZUFuaW1hdGlvbihub3cpOwotI2VuZGlmICAgIAorU2Ny
b2xsRXh0ZW50cyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Ny
b2xsRXh0ZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgc2Nyb2xsaW5nTm9k
ZSgpLnRvdGFsQ29udGVudHNTaXplKCksCisgICAgICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxh
YmxlQXJlYVNpemUoKQorICAgIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEu
aAppbmRleCA3NDc0MmMxZmUzYTg2ODZhZTUzMjE0YTJkYWYwZGFhMjJiOTVlZWIzLi5jYWFlZjY5
ODcwOGQwOTA5ZmZmMWFmZjVhYTIwZWEzMmIwNmE3MTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVOaWNvc2lhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5oCkBAIC0zMiw2OCAr
MzIsNTggQEAKIAogI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAi
U2Nyb2xsQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIgogI2lu
Y2x1ZGUgIlRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIgotCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NS
T0xMSU5HKQotI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvbktpbmV0aWMuaCIKLSNlbmRpZgotCi0j
aWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0jaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uU21v
b3RoLmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykgfHwgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLSNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgYSBTY3Jv
bGxBbmltYXRpb25DbGllbnQuCi1jbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTmljb3NpYSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLCBw
dWJsaWMgU2Nyb2xsQW5pbWF0aW9uQ2xpZW50IHsKK2NsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhIDogcHVibGljIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGUsIHB1YmxpYyBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlckNsaWVudCB7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWEoU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmLCBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxl
ZCk7CiAgICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWEoKTsKIAorICAgIHZvaWQgdXBkYXRlRnJvbVN0YXRlTm9kZShjb25zdCBTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tmljb3NpYTo6U2NlbmVJbnRl
Z3JhdGlvbjo6VXBkYXRlU2NvcGU+IGNyZWF0ZVVwZGF0ZVNjb3BlKCk7Ci0gICAgdm9pZCByZXNl
dEN1cnJlbnRQb3NpdGlvbigpOwogICAgIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKICAg
ICBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmLCBFdmVudFRhcmdldGluZyk7CiAgICAgdm9pZCBzdG9wU2Nyb2xsQW5pbWF0
aW9ucygpOwogCiBwcml2YXRlOgotICAgIGJvb2wgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQgeyBm
YWxzZSB9OwotICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpOworICAgIHZvaWQgYW5pbWF0aW9u
VGltZXJGaXJlZCgpOwogCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQotICAgIHZvaWQg
ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpOwotI2VuZGlmCi0jaWYgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCi0gICAgdm9pZCBlbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgoKTsKLSNl
bmRpZgorICAgIC8vIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyQ2xpZW50LgorICAgIHN0ZDo6
dW5pcXVlX3B0cjxTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlclRpbWVyPiBjcmVhdGVUaW1lcihG
dW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwogCi0gICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVk
KCk7Ci0gICAgdm9pZCBzdGFydFRpbWVySWZOZWNlc3NhcnkoKTsKLQotICAgIC8vIFNjcm9sbEFu
aW1hdGlvbkNsaWVudAotICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFu
aW1hdGlvbiYsIGNvbnN0IEZsb2F0UG9pbnQmIGN1cnJlbnRQb3NpdGlvbikgZmluYWw7Ci0gICAg
dm9pZCBzY3JvbGxBbmltYXRpb25EaWRFbmQoU2Nyb2xsQW5pbWF0aW9uJikgZmluYWw7Ci0gICAg
U2Nyb2xsRXh0ZW50cyBzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYp
IGZpbmFsOwotCi0gICAgLy8gRklYTUU6IFRoZXNlIGFuaW1hdGlvbnMgc2hvdWxkIG5vdCBsaXZl
IGhlcmUuIFRoZXkgbmVlZCB0byBiZSBtYW5hZ2VkIGJ5IFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyLAotICAgIC8vIHRvIGJlIGNvb3JkaW5hdGVkIHdpdGggb3RoZXIga2luZHMgb2Ygc2Nyb2xs
IGFuaW1hdGlvbnMsIGFuZCBiZSByZWZlcmVuY2VkIGJ5IFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyOjptX2N1cnJlbnRBbmltYXRpb24uCi0gICAgCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xM
SU5HKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25LaW5ldGljPiBtX2tpbmV0
aWNBbmltYXRpb247Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPiBtX3Ntb290aEFuaW1hdGlvbjsK
LSNlbmRpZgotCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKSB8fCBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKLSAgICAvLyBGSVhNRTogV2hlbiB0aGUgYWJvdmUgdHdvIGFuaW1hdGlvbnMg
YXJlIHJlbW92ZWQsIHRoaXMgdGltZXIgY2FuIGJlIHJlbW92ZWQuCi0gICAgUnVuTG9vcDo6VGlt
ZXI8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE+IG1fYW5pbWF0aW9u
VGltZXI7Ci0jZW5kaWYKKyAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uQ2FsbGJhY2soU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXImKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BBbmltYXRpb25DYWxsYmFj
ayhTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciYpIGZpbmFsOworCisgICAgYm9vbCBhbGxvd3NI
b3Jpem9udGFsU2Nyb2xsaW5nKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBhbGxvd3NWZXJ0aWNh
bFNjcm9sbGluZygpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBzZXRTY3JvbGxCZWhhdmlvclN0
YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1cyBzdGF0dXMpIGZpbmFsIHsgbV9zY3JvbGxCZWhhdmlv
clN0YXR1cyA9IHN0YXR1czsgfQorICAgIFNjcm9sbEJlaGF2aW9yU3RhdHVzIHNjcm9sbEJlaGF2
aW9yU3RhdHVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zY3JvbGxCZWhhdmlvclN0YXR1czsg
fQorCisgICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxCeShjb25zdCBGbG9hdFNpemUmKSBmaW5hbDsK
KyAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMo
Y29uc3QgRmxvYXRTaXplJikgZmluYWw7CisKKyAgICB2b2lkIGFkanVzdFNjcm9sbFBvc2l0aW9u
VG9Cb3VuZHNJZk5lY2Vzc2FyeSgpIGZpbmFsOworCisgICAgRmxvYXRQb2ludCBzY3JvbGxPZmZz
ZXQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHdpbGxTdGFydFNjcm9sbFNuYXBBbmltYXRpb24o
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCkgZmluYWw7Cisg
ICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgZmluYWw7CisgICAgU2Nyb2xsRXh0ZW50
cyBzY3JvbGxFeHRlbnRzKCkgY29uc3QgZmluYWw7CisKKyAgICBib29sIHNjcm9sbEFuaW1hdGlv
bkVuYWJsZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZDsg
fQorCisgICAgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgbV9zY3JvbGxDb250cm9sbGVyOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSdW5Mb29wOjpUaW1lcjxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTmljb3NpYT4+IG1fYW5pbWF0aW9uVGltZXI7CisgICAgU2Nyb2xsQmVoYXZp
b3JTdGF0dXMgbV9zY3JvbGxCZWhhdmlvclN0YXR1cyB7IFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpO
b3RJbkFuaW1hdGlvbiB9OworCisgICAgYm9vbCBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZCB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKaW5kZXggZDQzMDJiMzc4NzgxZWY1
NDg2OWEwMTY4ZWM2ZTlkZTQ0MTIxNDM4OS4uMzc3YmQ1MmJmNWY2Mzk4MGY0ZDFiNjdhZjk4ZTE2
YmI3YzBiZmM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbktpbmV0aWMuaApAQCAtNjMsMTUgKzYzLDE0IEBAIHB1YmxpYzoKICAgICBib29sIHN0YXJ0
QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRp
YWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgdmVsb2NpdHksIGJvb2wgbWF5SFNjcm9sbCwgYm9v
bCBtYXlWU2Nyb2xsKTsKICAgICBib29sIHJldGFyZ2V0QWN0aXZlQW5pbWF0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmIG5ld09mZnNldCkgZmluYWw7CiAKLSAgICAvLyBGSVhNRTogb25seSBwdWJsaWMg
Zm9yIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLgotICAgIHZvaWQg
c2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSBmaW5hbDsKLQogICAgIHZvaWQgYXBwZW5k
VG9TY3JvbGxIaXN0b3J5KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwogICAgIHZvaWQgY2xl
YXJTY3JvbGxIaXN0b3J5KCk7CiAKICAgICBGbG9hdFNpemUgY29tcHV0ZVZlbG9jaXR5KCk7CiAK
IHByaXZhdGU6CisgICAgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUpIGZpbmFs
OworCiAgICAgc3RkOjpvcHRpb25hbDxQZXJBeGlzRGF0YT4gbV9ob3Jpem9udGFsRGF0YTsKICAg
ICBzdGQ6Om9wdGlvbmFsPFBlckF4aXNEYXRhPiBtX3ZlcnRpY2FsRGF0YTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAppbmRleCA5ZDVjNjNk
M2MyYzIzZDFjNzA1MTczNDc3Y2EyZGVlZDM5ZGNmZDZhLi5mZWYwNDgxYzZlYjBiY2QzYjhhYWZl
NDYzZDA2MzYyOTBhZmU5YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRpb25TbW9vdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25TbW9vdGguaApAQCAtNDEsMTYgKzQxLDE3IEBAIHB1YmxpYzoKICAgICBib29s
IHN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIGZyb21P
ZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KTsKICAgICBib29sIHJl
dGFyZ2V0QWN0aXZlQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld09mZnNldCkgZmluYWw7
CiAKLSAgICAvLyBGSVhNRTogb25seSBwdWJsaWMgZm9yIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhLgotICAgIHZvaWQgdXBkYXRlU2Nyb2xsRXh0ZW50cygpIGZpbmFs
OwotICAgIHZvaWQgc2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSBmaW5hbDsKKyAgICBj
b25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbk9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVz
dGluYXRpb25PZmZzZXQ7IH0KIAogcHJpdmF0ZToKIAogICAgIGJvb2wgc3RhcnRPclJldGFyZ2V0
QW5pbWF0aW9uKGNvbnN0IFNjcm9sbEV4dGVudHMmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5h
dGlvbk9mZnNldCk7Ci0gICAgCisKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVudHMoKSBmaW5h
bDsKKyAgICB2b2lkIHNlcnZpY2VBbmltYXRpb24oTW9ub3RvbmljVGltZSkgZmluYWw7CisKICAg
ICBTZWNvbmRzIGR1cmF0aW9uRnJvbURpc3RhbmNlKGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0Owot
ICAgIAorCiAgICAgYm9vbCBhbmltYXRlU2Nyb2xsKE1vbm90b25pY1RpbWUpOwogCiAgICAgU2Vj
b25kcyBtX2R1cmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3Iu
Y3BwCmluZGV4IDcyZTE4MmNjYmFjYjc2ODIxMDRmOGVkMzJlNjU4YTA1Njg2NjE4MWIuLjc1YmQx
YWNiNTljM2UyNzhlNzE0NmViOTRmNDBjNDU3OWE0MDRjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi0jaWYgIUVOQUJMRShTTU9PVEhfU0NST0xMSU5HKSAmJiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFdQRSkKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQykKIHN0ZDo6dW5pcXVlX3B0cjxTY3Jv
bGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xs
YWJsZUFyZWEpCiB7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3I+KHNjcm9s
bGFibGVBcmVhKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpzY3Jv
bGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdQb3NpdGlvbgog
dm9pZCBTY3JvbGxBbmltYXRvcjo6cmV0YXJnZXRSdW5uaW5nQW5pbWF0aW9uKGNvbnN0IEZsb2F0
UG9pbnQmIG5ld1Bvc2l0aW9uKQogewogICAgIEFTU0VSVChzY3JvbGxhYmxlQXJlYSgpLmN1cnJl
bnRTY3JvbGxCZWhhdmlvclN0YXR1cygpID09IFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpJbk5vbk5h
dGl2ZUFuaW1hdGlvbik7Ci0gICAgbV9zY3JvbGxDb250cm9sbGVyLnJlZ2FyZ2V0QW5pbWF0ZWRT
Y3JvbGwob2Zmc2V0RnJvbVBvc2l0aW9uKG5ld1Bvc2l0aW9uKSk7CisgICAgbV9zY3JvbGxDb250
cm9sbGVyLnJldGFyZ2V0QW5pbWF0ZWRTY3JvbGwob2Zmc2V0RnJvbVBvc2l0aW9uKG5ld1Bvc2l0
aW9uKSk7CiB9CiAKIEZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3I6Om9mZnNldEZyb21Qb3NpdGlv
bihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikgY29uc3QKQEAgLTE4NSw0OSArMTg1LDcgQEAg
Ym9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKLSAgICBTY3JvbGxiYXIq
IGhvcml6b250YWxTY3JvbGxiYXIgPSBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250YWxTY3JvbGxi
YXIoKTsKLSAgICBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyID0gbV9zY3JvbGxhYmxlQXJl
YS52ZXJ0aWNhbFNjcm9sbGJhcigpOwotCi0gICAgLy8gQWNjZXB0IHRoZSBldmVudCBpZiB3ZSBo
YXZlIGEgc2Nyb2xsYmFyIGluIHRoYXQgZGlyZWN0aW9uIGFuZCBjYW4gc3RpbGwKLSAgICAvLyBz
Y3JvbGwgYW55IGZ1cnRoZXIuCi0gICAgZmxvYXQgZGVsdGFYID0gaG9yaXpvbnRhbFNjcm9sbGJh
ciA/IGUuZGVsdGFYKCkgOiAwOwotICAgIGZsb2F0IGRlbHRhWSA9IHZlcnRpY2FsU2Nyb2xsYmFy
ID8gZS5kZWx0YVkoKSA6IDA7Ci0KLSAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKLQotICAgIElu
dFNpemUgbWF4Rm9yd2FyZFNjcm9sbERlbHRhID0gbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Ny
b2xsUG9zaXRpb24oKSAtIG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsUG9zaXRpb24oKTsKLSAgICBJ
bnRTaXplIG1heEJhY2t3YXJkU2Nyb2xsRGVsdGEgPSBtX3Njcm9sbGFibGVBcmVhLnNjcm9sbFBv
c2l0aW9uKCkgLSBtX3Njcm9sbGFibGVBcmVhLm1pbmltdW1TY3JvbGxQb3NpdGlvbigpOwotICAg
IGlmICgoZGVsdGFYIDwgMCAmJiBtYXhGb3J3YXJkU2Nyb2xsRGVsdGEud2lkdGgoKSA+IDApCi0g
ICAgICAgIHx8IChkZWx0YVggPiAwICYmIG1heEJhY2t3YXJkU2Nyb2xsRGVsdGEud2lkdGgoKSA+
IDApCi0gICAgICAgIHx8IChkZWx0YVkgPCAwICYmIG1heEZvcndhcmRTY3JvbGxEZWx0YS5oZWln
aHQoKSA+IDApCi0gICAgICAgIHx8IChkZWx0YVkgPiAwICYmIG1heEJhY2t3YXJkU2Nyb2xsRGVs
dGEuaGVpZ2h0KCkgPiAwKSkgewotICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKLQotICAgICAgICBP
cHRpb25TZXQ8U2Nyb2xsQmVoYXZpb3I+IGJlaGF2aW9yKFNjcm9sbEJlaGF2aW9yOjpEb0RpcmVj
dGlvbmFsU25hcHBpbmcpOwotICAgICAgICBpZiAoZS5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFz
KCkpCi0gICAgICAgICAgICBiZWhhdmlvci5hZGQoU2Nyb2xsQmVoYXZpb3I6Ok5ldmVyQW5pbWF0
ZSk7Ci0KLSAgICAgICAgaWYgKGRlbHRhWSkgewotICAgICAgICAgICAgaWYgKGUuZ3JhbnVsYXJp
dHkoKSA9PSBTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50KSB7Ci0gICAgICAgICAgICAgICAgYm9vbCBu
ZWdhdGl2ZSA9IGRlbHRhWSA8IDA7Ci0gICAgICAgICAgICAgICAgZGVsdGFZID0gU2Nyb2xsYmFy
OjpwYWdlU3RlcERlbHRhKG1fc2Nyb2xsYWJsZUFyZWEudmlzaWJsZUhlaWdodCgpKTsKLSAgICAg
ICAgICAgICAgICBpZiAobmVnYXRpdmUpCi0gICAgICAgICAgICAgICAgICAgIGRlbHRhWSA9IC1k
ZWx0YVk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzY3JvbGwoVmVydGljYWxTY3JvbGxi
YXIsIFNjcm9sbEJ5UGl4ZWwsIHZlcnRpY2FsU2Nyb2xsYmFyLT5waXhlbFN0ZXAoKSwgLWRlbHRh
WSwgYmVoYXZpb3IpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGRlbHRhWCkgewotICAgICAg
ICAgICAgaWYgKGUuZ3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VXaGVlbEV2ZW50KSB7Ci0g
ICAgICAgICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGRlbHRhWCA8IDA7Ci0gICAgICAgICAgICAg
ICAgZGVsdGFYID0gU2Nyb2xsYmFyOjpwYWdlU3RlcERlbHRhKG1fc2Nyb2xsYWJsZUFyZWEudmlz
aWJsZVdpZHRoKCkpOwotICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkKLSAgICAgICAgICAg
ICAgICAgICAgZGVsdGFYID0gLWRlbHRhWDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNj
cm9sbChIb3Jpem9udGFsU2Nyb2xsYmFyLCBTY3JvbGxCeVBpeGVsLCBob3Jpem9udGFsU2Nyb2xs
YmFyLT5waXhlbFN0ZXAoKSwgLWRlbHRhWCwgYmVoYXZpb3IpOwotICAgICAgICB9Ci0gICAgfQot
ICAgIHJldHVybiBoYW5kbGVkOworICAgIHJldHVybiBtX3Njcm9sbENvbnRyb2xsZXIuaGFuZGxl
V2hlZWxFdmVudChlKTsKIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC00MTAsNiAr
MzY4LDEzIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxl
dGlvbkRlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRG
T1JNKEdUSykgfHwgVVNFKE5JQ09TSUEpCitib29sIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxBbmlt
YXRpb25FbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS5zY3Jv
bGxBbmltYXRvckVuYWJsZWQoKSAmJiBwbGF0Zm9ybUFsbG93c1Njcm9sbEFuaW1hdGlvbigpOwor
fQorI2VuZGlmCisKIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmNhbmNlbEFuaW1hdGlvbnMoKQogewog
ICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zdG9wQW5pbWF0ZWRTY3JvbGwoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCmluZGV4IGU2YWFkMTVhNDlkMjQyOWYwOTlkYmVj
MjQ1ZDhlZGY1ZmZkZmRjZmMuLmZjMWQxY2U4MTdiYWIwOTI3ZDU4YTMzZTgwNmI3MWExMGQzN2E4
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaApAQCAtMTYyLDYg
KzE2MiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0
aW9uRGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJl
YUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIGNvbnN0IGZp
bmFsOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShHVEspIHx8IFVTRShOSUNPU0lBKQorICAgIGJv
b2wgc2Nyb2xsQW5pbWF0aW9uRW5hYmxlZCgpIGNvbnN0IGZpbmFsOworI2VuZGlmCisKICAgICBz
dGF0aWMgRmxvYXRTaXplIGRlbHRhRnJvbVN0ZXAoU2Nyb2xsYmFyT3JpZW50YXRpb24sIGZsb2F0
IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKaW5kZXgg
OGIzZGVlN2U0ZTYyNjllOTU2OTNjNDVjNTUxZTM3YTFlOGIxMmYxYS4uNDU2MzgyNjAzYTk1M2Uy
MTA1ZmVmMDNmOTFiOTBhNzE4N2JiYTQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcApAQCAtMzAsMTMgKzMwLDE2
IEBACiAjaW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKLSNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25LaW5l
dGljLmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uaCIKICNpbmNsdWRlICJT
Y3JvbGxBbmltYXRpb25TbW9vdGguaCIKICNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgogI2lu
Y2x1ZGUgIldoZWVsRXZlbnRUZXN0TW9uaXRvci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRT
dHJlYW0uaD4KIAorI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykgJiYgIVBMQVRGT1JNKE1B
QykKKyNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25LaW5ldGljLmgiCisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6U2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXIoU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJDbGllbnQmIGNsaWVudCkK
QEAgLTk5LDEyICsxMDIsMTIgQEAgYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3Rh
cnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24oRmxvYXRQb2ludCBzdGEKICAgICByZXR1cm4g
ZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigqbV9jdXJyZW50QW5pbWF0aW9uKS5zdGFy
dEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihzdGFydE9mZnNldCwgZGVzdGluYXRpb25PZmZz
ZXQpOwogfQogCi1ib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpyZWdhcmdldEFuaW1h
dGVkU2Nyb2xsKEZsb2F0UG9pbnQgbmV3RGVzdGluYXRpb25PZmZzZXQpCitib29sIFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyOjpyZXRhcmdldEFuaW1hdGVkU2Nyb2xsKEZsb2F0UG9pbnQgbmV3
RGVzdGluYXRpb25PZmZzZXQpCiB7CiAgICAgaWYgKCFpczxTY3JvbGxBbmltYXRpb25TbW9vdGg+
KG1fY3VycmVudEFuaW1hdGlvbi5nZXQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAK
LSAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsQW5pbWF0aW9ucywgc3RyZWFtIDw8ICJTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiByZWdhcmdldEFuaW1hdGVkU2Nyb2xs
IHRvICIgPDwgbmV3RGVzdGluYXRpb25PZmZzZXQpOworICAgIExPR19XSVRIX1NUUkVBTShTY3Jv
bGxBbmltYXRpb25zLCBzdHJlYW0gPDwgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyICIgPDwg
dGhpcyA8PCAiIHJldGFyZ2V0QW5pbWF0ZWRTY3JvbGwgdG8gIiA8PCBuZXdEZXN0aW5hdGlvbk9m
ZnNldCk7CiAKICAgICBBU1NFUlQobV9jdXJyZW50QW5pbWF0aW9uLT5pc0FjdGl2ZSgpKTsKICAg
ICByZXR1cm4gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigqbV9jdXJyZW50QW5pbWF0
aW9uKS5yZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihuZXdEZXN0aW5hdGlvbk9mZnNldCk7CkBAIC0x
MTgsMzUgKzEyMSw2IEBAIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0b3BBbmlt
YXRlZFNjcm9sbCgpCiAgICAgICAgIG1fY3VycmVudEFuaW1hdGlvbi0+c3RvcCgpOwogfQogCi1i
b29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvcktpbmV0
aWNTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKLXsKLSNpZiBFTkFC
TEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAgaWYgKG1fY3VycmVudEFuaW1hdGlvbiAmJiAhaXM8
U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4obV9jdXJyZW50QW5pbWF0aW9uLmdldCgpKSkgewotICAg
ICAgICBtX2N1cnJlbnRBbmltYXRpb24tPnN0b3AoKTsKLSAgICAgICAgbV9jdXJyZW50QW5pbWF0
aW9uID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBpZiAoIW1fY3VycmVudEFuaW1hdGlvbikKLSAg
ICAgICAgbV9jdXJyZW50QW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5l
dGljPigqdGhpcyk7Ci0KLSAgICBhdXRvJiBraW5ldGljQW5pbWF0aW9uID0gZG93bmNhc3Q8U2Ny
b2xsQW5pbWF0aW9uS2luZXRpYz4oKm1fY3VycmVudEFuaW1hdGlvbik7Ci0gICAga2luZXRpY0Fu
aW1hdGlvbi5hcHBlbmRUb1Njcm9sbEhpc3RvcnkoZXZlbnQpOwotCi0gICAgaWYgKGV2ZW50Lmlz
RW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpKSB7Ci0gICAgICAgIGtpbmV0aWNBbmltYXRpb24uc3Rh
cnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkobV9jbGllbnQuc2Nyb2xsT2Zmc2V0
KCksIGtpbmV0aWNBbmltYXRpb24uY29tcHV0ZVZlbG9jaXR5KCksIG1fY2xpZW50LmFsbG93c0hv
cml6b250YWxTY3JvbGxpbmcoKSwgbV9jbGllbnQuYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKSk7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAoZXZlbnQuaXNUcmFuc2l0aW9u
aW5nVG9Nb21lbnR1bVNjcm9sbCgpKSB7Ci0gICAgICAgIGtpbmV0aWNBbmltYXRpb24uY2xlYXJT
Y3JvbGxIaXN0b3J5KCk7Ci0gICAgICAgIGtpbmV0aWNBbmltYXRpb24uc3RhcnRBbmltYXRlZFNj
cm9sbFdpdGhJbml0aWFsVmVsb2NpdHkobV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCksIGV2ZW50LnN3
aXBlVmVsb2NpdHkoKSwgbV9jbGllbnQuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpLCBtX2Ns
aWVudC5hbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZXZlbnQpOwotI2VuZGlmCi0gICAgcmV0dXJu
IGZhbHNlOwotfQotCiBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydE1vbWVu
dHVtU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zm
c2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBp
bml0aWFsRGVsdGEsIGNvbnN0IEZ1bmN0aW9uPEZsb2F0UG9pbnQoY29uc3QgRmxvYXRQb2ludCYp
PiYgZGVzdGluYXRpb25Nb2RpZmllcikKIHsKICAgICBpZiAobV9jdXJyZW50QW5pbWF0aW9uKSB7
CkBAIC0yNDksNiArMjIzLDEyMSBAQCBmbG9hdCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6
YWRqdXN0ZWRTY3JvbGxEZXN0aW5hdGlvbihTY3JvbGxFdmVudEF4aXMgYXhpcwogICAgIHJldHVy
biBtX3Njcm9sbFNuYXBTdGF0ZS0+YWRqdXN0ZWRTY3JvbGxEZXN0aW5hdGlvbihheGlzLCBkZXN0
aW5hdGlvbk9mZnNldCwgdmVsb2NpdHksIG9yaWdpbmFsT2Zmc2V0LCBtX2NsaWVudC5zY3JvbGxF
eHRlbnRzKCksIG1fY2xpZW50LnBhZ2VTY2FsZUZhY3RvcigpKTsKIH0KIAorI2lmICFQTEFURk9S
TShNQUMpCisjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQorYm9vbCBTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JLaW5ldGljU2Nyb2xsaW5nKGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQpCit7CisgICAgaWYgKGlzPFNjcm9sbEFuaW1hdGlv
bktpbmV0aWM+KG1fY3VycmVudEFuaW1hdGlvbi5nZXQoKSkpCisgICAgICAgIG1fY3VycmVudEFu
aW1hdGlvbi0+c3RvcCgpOworCisgICAgaWYgKCFldmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVs
dGFzKCkpIHsKKyAgICAgICAgbV9zY3JvbGxIaXN0b3J5LmNsZWFyKCk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBtX3Njcm9sbEhpc3RvcnkuYXBwZW5kKGV2ZW50KTsKKwor
ICAgIGlmICghZXZlbnQuaXNFbmRPZk5vbk1vbWVudHVtU2Nyb2xsKCkgJiYgIWV2ZW50LmlzVHJh
bnNpdGlvbmluZ1RvTW9tZW50dW1TY3JvbGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKG1fY3VycmVudEFuaW1hdGlvbiAmJiAhaXM8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4o
bV9jdXJyZW50QW5pbWF0aW9uLmdldCgpKSkgeworICAgICAgICBtX2N1cnJlbnRBbmltYXRpb24t
PnN0b3AoKTsKKyAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uID0gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBpZiAoIW1fY3VycmVudEFuaW1hdGlvbikKKyAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9u
ID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPigqdGhpcyk7CisKKyAgICBhdXRv
JiBraW5ldGljQW5pbWF0aW9uID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oKm1f
Y3VycmVudEFuaW1hdGlvbik7CisgICAgd2hpbGUgKCFtX3Njcm9sbEhpc3RvcnkuaXNFbXB0eSgp
KQorICAgICAgICBraW5ldGljQW5pbWF0aW9uLmFwcGVuZFRvU2Nyb2xsSGlzdG9yeShtX3Njcm9s
bEhpc3RvcnkudGFrZUZpcnN0KCkpOworCisgICAgaWYgKGV2ZW50LmlzRW5kT2ZOb25Nb21lbnR1
bVNjcm9sbCgpKSB7CisgICAgICAgIGtpbmV0aWNBbmltYXRpb24uc3RhcnRBbmltYXRlZFNjcm9s
bFdpdGhJbml0aWFsVmVsb2NpdHkobV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCksIGtpbmV0aWNBbmlt
YXRpb24uY29tcHV0ZVZlbG9jaXR5KCksIG1fY2xpZW50LmFsbG93c0hvcml6b250YWxTY3JvbGxp
bmcoKSwgbV9jbGllbnQuYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICBpZiAoZXZlbnQuaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNj
cm9sbCgpKSB7CisgICAgICAgIGtpbmV0aWNBbmltYXRpb24uY2xlYXJTY3JvbGxIaXN0b3J5KCk7
CisgICAgICAgIGtpbmV0aWNBbmltYXRpb24uc3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFs
VmVsb2NpdHkobV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCksIGV2ZW50LnN3aXBlVmVsb2NpdHkoKSwg
bV9jbGllbnQuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpLCBtX2NsaWVudC5hbGxvd3NWZXJ0
aWNhbFNjcm9sbGluZygpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKK2Jvb2wg
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQoreworI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElO
RykKKyAgICBpZiAocHJvY2Vzc1doZWVsRXZlbnRGb3JLaW5ldGljU2Nyb2xsaW5nKHdoZWVsRXZl
bnQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorCisgICAgYXV0byBzY3JvbGxPZmZz
ZXQgPSBtX2NsaWVudC5zY3JvbGxPZmZzZXQoKTsKKyAgICBmbG9hdCBkZWx0YVggPSBtX2NsaWVu
dC5hbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nKCkgPyB3aGVlbEV2ZW50LmRlbHRhWCgpIDogMDsK
KyAgICBmbG9hdCBkZWx0YVkgPSBtX2NsaWVudC5hbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpID8g
d2hlZWxFdmVudC5kZWx0YVkoKSA6IDA7CisgICAgYXV0byBleHRlbnRzID0gbV9jbGllbnQuc2Ny
b2xsRXh0ZW50cygpOworICAgIGF1dG8gbWluUG9zaXRpb24gPSBleHRlbnRzLm1pbmltdW1TY3Jv
bGxPZmZzZXQoKTsKKyAgICBhdXRvIG1heFBvc2l0aW9uID0gZXh0ZW50cy5tYXhpbXVtU2Nyb2xs
T2Zmc2V0KCk7CisKKyAgICBpZiAoKGRlbHRhWCA8IDAgJiYgc2Nyb2xsT2Zmc2V0LngoKSA+PSBt
YXhQb3NpdGlvbi54KCkpCisgICAgICAgIHx8IChkZWx0YVggPiAwICYmIHNjcm9sbE9mZnNldC54
KCkgPD0gbWluUG9zaXRpb24ueCgpKSkKKyAgICAgICAgZGVsdGFYID0gMDsKKyAgICBpZiAoKGRl
bHRhWSA8IDAgJiYgc2Nyb2xsT2Zmc2V0LnkoKSA+PSBtYXhQb3NpdGlvbi55KCkpCisgICAgICAg
IHx8IChkZWx0YVkgPiAwICYmIHNjcm9sbE9mZnNldC55KCkgPD0gbWluUG9zaXRpb24ueSgpKSkK
KyAgICAgICAgZGVsdGFZID0gMDsKKworICAgIGlmICghZGVsdGFYICYmICFkZWx0YVkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICh3aGVlbEV2ZW50LmdyYW51bGFyaXR5KCkgPT0g
U2Nyb2xsQnlQYWdlV2hlZWxFdmVudCkgeworICAgICAgICBpZiAoZGVsdGFYKSB7CisgICAgICAg
ICAgICBib29sIG5lZ2F0aXZlID0gZGVsdGFYIDwgMDsKKyAgICAgICAgICAgIGRlbHRhWCA9IFNj
cm9sbGJhcjo6cGFnZVN0ZXBEZWx0YShleHRlbnRzLmNvbnRlbnRzU2l6ZS53aWR0aCgpKTsKKyAg
ICAgICAgICAgIGlmIChuZWdhdGl2ZSkKKyAgICAgICAgICAgICAgICBkZWx0YVggPSAtZGVsdGFY
OworICAgICAgICB9CisgICAgICAgIGlmIChkZWx0YVkpIHsKKyAgICAgICAgICAgIGJvb2wgbmVn
YXRpdmUgPSBkZWx0YVkgPCAwOworICAgICAgICAgICAgZGVsdGFZID0gU2Nyb2xsYmFyOjpwYWdl
U3RlcERlbHRhKGV4dGVudHMuY29udGVudHNTaXplLmhlaWdodCgpKTsKKyAgICAgICAgICAgIGlm
IChuZWdhdGl2ZSkKKyAgICAgICAgICAgICAgICBkZWx0YVkgPSAtZGVsdGFZOworICAgICAgICB9
CisgICAgfQorCisgICAgZGVsdGFYID0gLWRlbHRhWDsKKyAgICBkZWx0YVkgPSAtZGVsdGFZOwor
CisgICAgaWYgKHNuYXBPZmZzZXRzSW5mbygpICYmICFzbmFwT2Zmc2V0c0luZm8oKS0+aXNFbXB0
eSgpKSB7CisgICAgICAgIGZsb2F0IHNjYWxlID0gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCk7
CisgICAgICAgIGF1dG8gb3JpZ2luYWxPZmZzZXQgPSBMYXlvdXRQb2ludChzY3JvbGxPZmZzZXQu
eCgpIC8gc2NhbGUsIHNjcm9sbE9mZnNldC55KCkgLyBzY2FsZSk7CisgICAgICAgIGF1dG8gbmV3
T2Zmc2V0ID0gTGF5b3V0UG9pbnQoKHNjcm9sbE9mZnNldC54KCkgKyBkZWx0YVgpIC8gc2NhbGUs
IChzY3JvbGxPZmZzZXQueSgpICsgZGVsdGFZKSAvIHNjYWxlKTsKKworICAgICAgICBhdXRvIG9m
ZnNldFggPSBzbmFwT2Zmc2V0c0luZm8oKS0+Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRB
eGlzOjpIb3Jpem9udGFsLCBMYXlvdXRTaXplKGV4dGVudHMuY29udGVudHNTaXplKSwgbmV3T2Zm
c2V0LCBkZWx0YVgsIG9yaWdpbmFsT2Zmc2V0LngoKSkuZmlyc3Q7CisgICAgICAgIGF1dG8gb2Zm
c2V0WSA9IHNuYXBPZmZzZXRzSW5mbygpLT5jbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4
aXM6OlZlcnRpY2FsLCBMYXlvdXRTaXplKGV4dGVudHMuY29udGVudHNTaXplKSwgbmV3T2Zmc2V0
LCBkZWx0YVksIG9yaWdpbmFsT2Zmc2V0LnkoKSkuZmlyc3Q7CisKKyAgICAgICAgZGVsdGFYID0g
KG9mZnNldFggLSBvcmlnaW5hbE9mZnNldC54KCkpICogc2NhbGU7CisgICAgICAgIGRlbHRhWSA9
IChvZmZzZXRZIC0gb3JpZ2luYWxPZmZzZXQueSgpKSAqIHNjYWxlOworICAgIH0KKworI2lmIEVO
QUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIGlmIChtX2NsaWVudC5zY3JvbGxBbmltYXRpb25F
bmFibGVkKCkgJiYgIXdoZWVsRXZlbnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpKSB7Cisg
ICAgICAgIGlmIChpczxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1fY3VycmVudEFuaW1hdGlvbi5n
ZXQoKSkpIHsKKyAgICAgICAgICAgIGF1dG8gbGFzdERlc3RpbmF0aW9uT2Zmc2V0ID0gZG93bmNh
c3Q8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigqbV9jdXJyZW50QW5pbWF0aW9uKS5kZXN0aW5hdGlv
bk9mZnNldCgpOworICAgICAgICAgICAgcmV0YXJnZXRBbmltYXRlZFNjcm9sbChsYXN0RGVzdGlu
YXRpb25PZmZzZXQgKyBGbG9hdFNpemUgeyBkZWx0YVgsIGRlbHRhWSB9KTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBzdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihzY3JvbGxP
ZmZzZXQsIHNjcm9sbE9mZnNldCArIEZsb2F0U2l6ZSB7IGRlbHRhWCwgZGVsdGFZIH0pOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYKKworICAgIG1fY2xpZW50LmltbWVkaWF0
ZVNjcm9sbEJ5KHsgZGVsdGFYLCBkZWx0YVkgfSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNl
bmRpZgorCiB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp1cGRhdGVBY3RpdmVTY3Jv
bGxTbmFwSW5kZXhGb3JDbGllbnRPZmZzZXQoKQogewogICAgIGlmICghdXNlc1Njcm9sbFNuYXAo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5oCmluZGV4IGMzZGQxNjMwN2NhZTQxNTExYTE3MTlhZjA5NDFjYTFjOTUyYmY2NTcu
LjNjY2I1ZWY0OTZkMGY2N2JhNTUwNWE1YjdhNzIxNDQ5NmRlMTYzODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaApAQCAt
MzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNjcm9sbFNuYXBPZmZzZXRzSW5mby5oIgogI2luY2x1
ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RNb25pdG9yLmgiCisj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KIApAQCAtMTE4LDYgKzExOSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkU3RvcFNjcm9sbFNuYXBBbmltYXRpb24oKSB7IH0KICAgICB2aXJ0dWFs
IGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFNjcm9sbEV4
dGVudHMgc2Nyb2xsRXh0ZW50cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xs
QW5pbWF0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIGNsYXNzIFNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyIDogcHVibGljIFNjcm9sbEFuaW1hdGlvbkNsaWVudCB7
CkBAIC0xMzIsMTIgKzEzNCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hh
bmdlZCgpOwogCiAgICAgYm9vbCBzdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihGbG9h
dFBvaW50IHN0YXJ0T2Zmc2V0LCBGbG9hdFBvaW50IGRlc3RpbmF0aW9uT2Zmc2V0KTsKLSAgICBi
b29sIHJlZ2FyZ2V0QW5pbWF0ZWRTY3JvbGwoRmxvYXRQb2ludCBuZXdEZXN0aW5hdGlvbk9mZnNl
dCk7CisgICAgYm9vbCByZXRhcmdldEFuaW1hdGVkU2Nyb2xsKEZsb2F0UG9pbnQgbmV3RGVzdGlu
YXRpb25PZmZzZXQpOwogICAgIHZvaWQgc3RvcEFuaW1hdGVkU2Nyb2xsKCk7CiAKLSAgICAvLyBG
SVhNRTogSGFjayBmb3IgU2Nyb2xsQW5pbWF0b3JHZW5lcmljLiBOZWVkcyBjbGVhbnVwLgotICAg
IGJvb2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JLaW5ldGljU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYpOwotCiAgICAgYm9vbCBzdGFydE1vbWVudHVtU2Nyb2xsV2l0aEluaXRpYWxW
ZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUm
IGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IFdU
Rjo6RnVuY3Rpb248RmxvYXRQb2ludChjb25zdCBGbG9hdFBvaW50Jik+JiBkZXN0aW5hdGlvbk1v
ZGlmaWVyKTsKIAogICAgIHZvaWQgYmVnaW5LZXlib2FyZFNjcm9sbGluZygpOwpAQCAtMTYzLDEw
ICsxNjIsMTAgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5ldmVyIGNhbGxlZC4g
V2UgbmV2ZXIgc2V0IG1fYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlIGJhY2sgdG8gZmFs
c2UuCiAgICAgdm9pZCBzZXRTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UoYm9vbCBzdGF0ZSkgeyBt
X2FjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZSA9IHN0YXRlOyB9CiAKLSNpZiBQTEFURk9S
TShNQUMpCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGhhbmRsZWQuCiAgICAgYm9vbCBoYW5kbGVX
aGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwogCisjaWYgUExBVEZPUk0oTUFD
KQogICAgIHN0YXRpYyBGbG9hdFNpemUgd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKICAgICBib29sIGlzU2Nyb2xsU25hcEluUHJv
Z3Jlc3MoKSBjb25zdDsKQEAgLTIxOCw3ICsyMTcsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNj
cm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mLCBjb25zdCBGbG9hdFBvaW50
JiAvKiBjdXJyZW50T2Zmc2V0ICovKSBmaW5hbDsKICAgICB2b2lkIHNjcm9sbEFuaW1hdGlvbldp
bGxTdGFydChTY3JvbGxBbmltYXRpb24mKSBmaW5hbDsKICAgICB2b2lkIHNjcm9sbEFuaW1hdGlv
bkRpZEVuZChTY3JvbGxBbmltYXRpb24mKSBmaW5hbDsKLSAgICBTY3JvbGxFeHRlbnRzIHNjcm9s
bEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikgIGZpbmFsOworICAgIFNjcm9s
bEV4dGVudHMgc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24mKSBmaW5h
bDsKKworI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykgJiYgIVBMQVRGT1JNKE1BQykKKyAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgaGFuZGxlZC4KKyAgICBib29sIHByb2Nlc3NXaGVlbEV2ZW50
Rm9yS2luZXRpY1Njcm9sbGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKKworICAgIERl
cXVlPFBsYXRmb3JtV2hlZWxFdmVudD4gbV9zY3JvbGxIaXN0b3J5OworI2VuZGlmCiAKICAgICBT
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlckNsaWVudCYgbV9jbGllbnQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQzYTM2YTg0NzYzM2E0ZDgwODcy
YmQzZTI1MWNkZjM5YjVjZDY0MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9y
R2VuZXJpYy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChjKSAyMDE2IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
LSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcm9s
bEFuaW1hdG9yR2VuZXJpYy5oIgotCi0jaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1zdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9s
bEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQotewotICAg
IHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9yR2VuZXJpYz4oc2Nyb2xsYWJsZUFyZWEp
OwotfQotCi1TY3JvbGxBbmltYXRvckdlbmVyaWM6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYyhTY3Jv
bGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCi0gICAgOiBTY3JvbGxBbmltYXRvcihzY3JvbGxh
YmxlQXJlYSkKLXsKLX0KLQotU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp+U2Nyb2xsQW5pbWF0b3JH
ZW5lcmljKCkgPSBkZWZhdWx0OwotCi0vLyBGSVhNRTogUHVzaCB0aGlzIGludG8gdGhlIGJhc2Ug
Y2xhc3Mgc28gdGhhdCBTY3JvbGxBbmltYXRvckdlbmVyaWMgY2FuIGJlIHJlbW92ZWQuCi1ib29s
IFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIGV2ZW50KQotewotICAgIGlmIChtX3Njcm9sbENvbnRyb2xsZXIucHJvY2Vzc1do
ZWVsRXZlbnRGb3JLaW5ldGljU2Nyb2xsaW5nKGV2ZW50KSkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0KLSAgICByZXR1cm4gU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQoZXZlbnQpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZWU1ZmRmMmY5MzJhM2FjNDAwZTAzNWQxMzZmNWIwYWQyZTM5ZGFlMi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxNiBJZ2FsaWEgUy5M
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBTY3JvbGxBbmltYXRpb247Ci0KLWNsYXNzIFNjcm9sbEFuaW1hdG9y
R2VuZXJpYyBmaW5hbCA6IHB1YmxpYyBTY3JvbGxBbmltYXRvciB7Ci1wdWJsaWM6Ci0gICAgZXhw
bGljaXQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljKFNjcm9sbGFibGVBcmVhJik7Ci0gICAgdmlydHVh
bCB+U2Nyb2xsQW5pbWF0b3JHZW5lcmljKCk7Ci0KLSAgICBib29sIGhhbmRsZVdoZWVsRXZlbnQo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgZmluYWw7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440181</attachid>
            <date>2021-10-05 01:35:09 -0700</date>
            <delta_ts>2021-10-05 02:27:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230953-20211005093507.patch</filename>
            <type>text/plain</type>
            <size>49581</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjBlZTNiZjg3ZGI2ZGE2
YTg1OTQxOGNiMTRiYmUwYjM1ZmEyNjkxZC4uMTM4MWRkOWMzMzRmYzVjYmNlZDMyNDg3YThjMWEz
ZGJhNTdmNTIwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIxLTEwLTA0ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFJFR1JFU1NJ
T046IEFzeW5jIHNjcm9sbGluZyBqdW1wcyB0byB0aGUgdG9wIG9mIHRoZSBwYWdlIHVudGlsIGtl
eWJvYXJkLWluaXRpYXRlZCBwYWdpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMDk1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgbm9uLU1hYy9pT1MgYXN5bmMgc2Nyb2xsaW5nIHBh
dGggdG8gd29yayBjb3JyZWN0bHkgYWZ0ZXIgdGhlCisgICAgICAgIHNjcm9sbGluZyByZWZhY3Rv
ci4gVHJ5aW5nIHRvIHN1bW1hcmlzZSwgdGhpcyBpbXBsZW1lbnRzCisgICAgICAgIFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyIGluIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVO
aWNvc2lhCisgICAgICAgIGFuZCBtb3ZlcyBzbW9vdGggYW5kIGtpbmV0aWMgc2Nyb2xsaW5nIGFu
aW1hdGlvbnMgdG8KKyAgICAgICAgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIsIHRvIGJlIHNo
YXJlZCBieSBib3RoIHN5bmMgYW5kIGFzeW5jIHBhdGhzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cyAoaG9wZWZ1bGx5KS4KKworICAgICAgICAqIFBs
YXRmb3JtUGxheVN0YXRpb24uY21ha2U6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAg
ICAgICogU291cmNlc1dQRS50eHQ6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUJl
Zm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5p
Y29zaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZU5pY29zaWE6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmlj
b3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE6OnVwZGF0ZUZyb21TdGF0ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnVwZGF0ZVZpc2libGVMZW5ndGhzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNv
c2lhOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzdG9wU2Nyb2xsQW5pbWF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6
YW5pbWF0aW9uVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6Y3JlYXRlVGltZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnN0YXJ0QW5pbWF0
aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU5pY29zaWE6OnN0b3BBbmltYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6YWxsb3dzSG9y
aXpvbnRhbFNjcm9sbGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6YWxsb3dzVmVydGljYWxTY3JvbGxpbmcgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWE6OmltbWVkaWF0ZVNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjppbW1lZGlhdGVTY3JvbGxCeVdpdGhv
dXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91
bmRzSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbE9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6d2lsbFN0YXJ0
U2Nyb2xsU25hcEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6ZGlkU3RvcFNjcm9sbFNuYXBBbmltYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWE6OnBhZ2VTY2FsZUZhY3RvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsRXh0ZW50cyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3Np
YTo6cmVzZXRDdXJyZW50UG9zaXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1h
dGlvbktpbmV0aWMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290aCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6cGFnZVNjYWxlRmFjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxBbmlt
YXRpb25EaWRVcGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbEFuaW1hdGlvbkRpZEVuZCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTmljb3NpYTo6c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c3Rh
cnRUaW1lcklmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9u
aWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpyZXRhcmdldFJ1
bm5pbmdBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmhhbmRs
ZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFu
aW1hdGlvbkVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9y
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cmV0YXJnZXRBbmltYXRlZFNjcm9sbCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cHJvY2Vzc1do
ZWVsRXZlbnRGb3JLaW5ldGljU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpyZWdhcmdldEFuaW1hdGVkU2Nyb2xsKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJDbGllbnQ6OnNjcm9s
bEFuaW1hdGlvbkVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Ny
b2xsQW5pbWF0b3JHZW5lcmljLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdG9yOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5p
bWF0b3JHZW5lcmljOjpTY3JvbGxBbmltYXRvckdlbmVyaWMpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljOjpoYW5kbGVXaGVlbEV2ZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oOiBS
ZW1vdmVkLgorICAgICAgICAoKTogRGVsZXRlZC4KKwogMjAyMS0xMC0wNCAgS2ltbW8gS2lubnVu
ZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb24gKHIyODMyMzgp
WyBNYWNPUyB3azEgXSBmYXN0L21lZGlhY2FwdHVyZWZyb21lbGVtZW50L0NhbnZhc0NhcHR1cmVN
ZWRpYVN0cmVhbS13ZWJnbC1ldmVudHMuaHRtbCBpcyB0aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQppbmRleCA1ZGRjODc0ODJmZDc0NzZlNTAxZjA4NTFh
YzgyMzA5YjNkYmEwYzNhLi45ZjE1NTllYzJlNWQ5MmY2ZTJlMjk0YWVmZDQwYTI4Mjk0ZWYzYWMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKQEAgLTM2LDcgKzM2
LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9nZW5lcmlj
L0tleWVkRGVjb2RlckdlbmVyaWMuY3BwCiAgICAgcGxhdGZvcm0vZ2VuZXJpYy9LZXllZEVuY29k
ZXJHZW5lcmljLmNwcAotICAgIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
LmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxheS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKaW5kZXggYjAx
YzAwMThhZjA1Y2Q3ZmFhMGIxZGY1YmIyM2IwMWRhZjk0NzI2OS4uM2NkZjNlODFlZTM1MzUyYzU5
ZjgzYmUxYjhiY2RjZGYxZDc5YmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0dUSy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKQEAgLTc5LDcgKzc5
LDYgQEAgcGxhdGZvcm0vYWR3YWl0YS9UaGVtZUFkd2FpdGEuY3BwCiBwbGF0Zm9ybS9nYW1lcGFk
L21hbmV0dGUvTWFuZXR0ZUdhbWVwYWQuY3BwCiBwbGF0Zm9ybS9nYW1lcGFkL21hbmV0dGUvTWFu
ZXR0ZUdhbWVwYWRQcm92aWRlci5jcHAKIAotcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRv
ckdlbmVyaWMuY3BwCiBwbGF0Zm9ybS9nZW5lcmljL1Njcm9sbGJhcnNDb250cm9sbGVyR2VuZXJp
Yy5jcHAKIAogcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNXUEUudHh0CmluZGV4IGE5YTI3OTE0MTgwMTY5OTFkYjI0ZDViZjA5YzllNTEwYzgwMTMzYjgu
LjY2MzNhYTE4YTljZDgxMjE2ZTZjNDZhN2M0MjM3ZjAxYTFlNGJiYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNX
UEUudHh0CkBAIC02Myw3ICs2Myw2IEBAIHBsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAKIHBs
YXRmb3JtL2Fkd2FpdGEvU2Nyb2xsYmFyVGhlbWVBZHdhaXRhLmNwcAogcGxhdGZvcm0vYWR3YWl0
YS9UaGVtZUFkd2FpdGEuY3BwCiAKLXBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5l
cmljLmNwcAogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxiYXJzQ29udHJvbGxlckdlbmVyaWMuY3Bw
CiAKIHBsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmgKaW5kZXggYmEwYjdkMDIxN2ZhNDIwNjA2MDgzMTZmZjUyNjBlMmUxMzlmMmY5YS4uOWMx
YmE2YjJmMTAzZDRjNDQ1NTkyNTBjNTc2NjBhMTEzYjE0NWVmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZS5oCkBAIC00Myw2ICs0Myw5IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlIDogcHVibGljIFNjcm9sbGluZ1RyZWVOb2RlIHsKICAgICBmcmllbmQgY2xh
c3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZTsKICNpZiBQTEFURk9STShNQUMp
CiAgICAgZnJpZW5kIGNsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWM7
CisjZW5kaWYKKyNpZiBVU0UoTklDT1NJQSkKKyAgICBmcmllbmQgY2xhc3MgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE7CiAjZW5kaWYKICAgICBmcmllbmQgY2xhc3Mg
U2Nyb2xsaW5nVHJlZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVOaWNvc2lhLmNwcAppbmRleCBmMWU3M2Q0ZjQzMTMxZTU2MThhMGM1MWNkMjdh
Y2NiYzI3OWYxNzcxLi4wMzI1NjA1MWU2YWJjNDk0OTk2N2Y4NmZjZWYzNjU5NGNmMmFiMjE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNv
c2lhLmNwcApAQCAtODIsNiArODIsOCBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcgogICAgICAg
ICBhdXRvKiBsYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3Jv
bGxpbmdTdGF0ZU5vZGUuZm9vdGVyTGF5ZXIoKSk7CiAgICAgICAgIG1fZm9vdGVyTGF5ZXIgPSBk
b3duY2FzdDxOaWNvc2lhOjpDb21wb3NpdGlvbkxheWVyPihsYXllcik7CiAgICAgfQorCisgICAg
bV9kZWxlZ2F0ZS51cGRhdGVGcm9tU3RhdGVOb2RlKHNjcm9sbGluZ1N0YXRlTm9kZSk7CiB9CiAK
IHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29zaWE6OmNvbW1pdFN0YXRl
QWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKQEAgLTk1
LDcgKzk3LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6
Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm8KICAgICAgICAgc3RvcFNjcm9sbEFu
aW1hdGlvbnMoKTsKICAgICAgICAgY29uc3QgYXV0byYgcmVxdWVzdGVkU2Nyb2xsRGF0YSA9IHNj
cm9sbGluZ1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxEYXRhKCk7CiAgICAgICAgIHNjcm9sbFRv
KHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsUG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbERhdGEu
c2Nyb2xsVHlwZSwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5jbGFtcGluZyk7Ci0gICAgICAgIG1fZGVs
ZWdhdGUucmVzZXRDdXJyZW50UG9zaXRpb24oKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKaW5k
ZXggYzQ3NGM0ODIwMGExNWYyMjcyNTljOGY0MTRlNDEwMjUzZTUwMGRhMy4uZjJhZTAzM2QwZDZi
NTBmZDU5OTdjMWViOGU4MjQ5Y2ZjNTQwMDdiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
Tmljb3NpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9T
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKQEAgLTU2LDcgKzU2
LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29t
bWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFMKICAgICAgICAgc3RvcFNjcm9sbEFuaW1hdGlv
bnMoKTsKICAgICAgICAgY29uc3QgYXV0byYgcmVxdWVzdGVkU2Nyb2xsRGF0YSA9IG92ZXJmbG93
U3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbERhdGEoKTsKICAgICAgICAgc2Nyb2xsVG8ocmVxdWVz
dGVkU2Nyb2xsRGF0YS5zY3JvbGxQb3NpdGlvbiwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5zY3JvbGxU
eXBlLCByZXF1ZXN0ZWRTY3JvbGxEYXRhLmNsYW1waW5nKTsKLSAgICAgICAgbV9kZWxlZ2F0ZS5y
ZXNldEN1cnJlbnRQb3NpdGlvbigpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lh
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAppbmRleCAwZmI1
MzhmYzY4MGFhZTQyNjJkZWQ1OWJjNGZjZGU4MGQ2ZDJiZTg4Li4wZGQxOWUxYzY3MDdlYzA4NmIx
ZjY1MzI0YTQ2MzcxYWJhNzQwMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcApAQCAtNDIsMjAgKzQyLDI1IEBA
IGNsYXNzIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM7CiAKIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmlj
b3NpYShTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYgc2Nyb2xsaW5nTm9kZSwgYm9vbCBzY3Jv
bGxBbmltYXRvckVuYWJsZWQpCiAgICAgOiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlKHNjcm9sbGluZ05vZGUpCisgICAgLCBtX3Njcm9sbENvbnRyb2xsZXIoKnRoaXMpCiAgICAg
LCBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZChzY3JvbGxBbmltYXRvckVuYWJsZWQpCi0jaWYgRU5B
QkxFKEtJTkVUSUNfU0NST0xMSU5HKSB8fCBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICAs
IG1fYW5pbWF0aW9uVGltZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmFuaW1hdGlvblRpbWVyRmlyZWQpCi0jZW5k
aWYKIHsKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpIHx8IEVOQUJMRShTTU9PVEhfU0NS
T0xMSU5HKQotI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCi0gICAgbV9hbmltYXRpb25UaW1lci5z
ZXRQcmlvcml0eShXVEY6OlJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJlZnJlc2hNb25p
dG9yVGltZXIpOwotI2VuZGlmCi0jZW5kaWYgICAgCiB9CiAKIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhOjp+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWEoKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU5pY29zaWE6OnVwZGF0ZUZyb21TdGF0ZU5vZGUoY29uc3QgU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdTdGF0ZU5vZGUpCit7CisgICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6
U25hcE9mZnNldHNJbmZvKSkKKyAgICAgICAgbV9zY3JvbGxDb250cm9sbGVyLnNldFNuYXBPZmZz
ZXRzSW5mbyhzY3JvbGxpbmdTdGF0ZU5vZGUuc25hcE9mZnNldHNJbmZvKCkuY29udmVydFVuaXRz
PExheW91dFNjcm9sbFNuYXBPZmZzZXRzSW5mbz4oKSk7CisKKyAgICBpZiAoc2Nyb2xsaW5nU3Rh
dGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpD
dXJyZW50SG9yaXpvbnRhbFNuYXBPZmZzZXRJbmRleCkpCisgICAgICAgIG1fc2Nyb2xsQ29udHJv
bGxlci5zZXRBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JBeGlzKFNjcm9sbEV2ZW50QXhpczo6SG9y
aXpvbnRhbCwgc2Nyb2xsaW5nU3RhdGVOb2RlLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXgoKSk7CisKKyAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZU5vZGU6OlByb3BlcnR5OjpDdXJyZW50VmVydGljYWxTbmFwT2Zmc2V0SW5k
ZXgpKQorICAgICAgICBtX3Njcm9sbENvbnRyb2xsZXIuc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4
Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBzY3JvbGxpbmdTdGF0ZU5vZGUuY3Vy
cmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7Cit9CisKIHN0ZDo6dW5pcXVlX3B0cjxOaWNv
c2lhOjpTY2VuZUludGVncmF0aW9uOjpVcGRhdGVTY29wZT4gU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWE6OmNyZWF0ZVVwZGF0ZVNjb3BlKCkKIHsKICAgICBhdXRvKiBz
Y3JvbGxMYXllciA9IHN0YXRpY19jYXN0PE5pY29zaWE6OlBsYXRmb3JtTGF5ZXIqPihzY3JvbGxp
bmdOb2RlKCkuc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSk7CkBAIC02NywyMDUgKzcyLDEyMCBAQCBz
dGQ6OnVuaXF1ZV9wdHI8Tmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6VXBkYXRlU2NvcGU+IFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdObwogICAgIHJldHVybiBjb21wb3NpdGlvbkxheWVyLmNyZWF0
ZVVwZGF0ZVNjb3BlKCk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU5pY29zaWE6OnJlc2V0Q3VycmVudFBvc2l0aW9uKCkKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnVwZGF0ZVZpc2libGVMZW5ndGhzKCkKIHsKLSNp
ZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0g
ICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zdG9wKCk7Ci0jZW5kaWYKKyAgICBtX3Njcm9sbENv
bnRyb2xsZXIuY29udGVudHNTaXplQ2hhbmdlZCgpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjp1cGRhdGVWaXNpYmxlTGVuZ3RocygpCitXaGVl
bEV2ZW50SGFuZGxpbmdSZXN1bHQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2
ZW50LCBFdmVudFRhcmdldGluZyBldmVudFRhcmdldGluZykKIHsKLSNpZiBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKLSAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgIG1fc21vb3Ro
QW5pbWF0aW9uLT51cGRhdGVTY3JvbGxFeHRlbnRzKCk7Ci0jZW5kaWYKKyAgICBpZiAoIXNjcm9s
bGluZ05vZGUoKS5jYW5IYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5n
KQorICAgICAgICB8fCAhbV9zY3JvbGxDb250cm9sbGVyLmhhbmRsZVdoZWVsRXZlbnQod2hlZWxF
dmVudCkpCisgICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OnVuaGFuZGxl
ZCgpOworCisgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwog
fQogCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQotdm9pZCBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygp
Cit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzdG9wU2Ny
b2xsQW5pbWF0aW9ucygpCiB7Ci0gICAgaWYgKG1fa2luZXRpY0FuaW1hdGlvbikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgbV9raW5ldGljQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmlt
YXRpb25LaW5ldGljPigqdGhpcyk7Ci0gICAgc3RhcnRUaW1lcklmTmVjZXNzYXJ5KCk7CisgICAg
bV9zY3JvbGxDb250cm9sbGVyLnN0b3BBbmltYXRlZFNjcm9sbCgpOwogfQotI2VuZGlmCiAKLSNp
ZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290aCgpCit2b2lkIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphbmltYXRpb25UaW1lckZp
cmVkKCkKIHsKLSAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgIHJldHVybjsKKyAg
ICBtX3Njcm9sbENvbnRyb2xsZXIuYW5pbWF0aW9uQ2FsbGJhY2soTW9ub3RvbmljVGltZTo6bm93
KCkpOworfQogCi0gICAgbV9zbW9vdGhBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1h
dGlvblNtb290aD4oKnRoaXMpOwotICAgIHN0YXJ0VGltZXJJZk5lY2Vzc2FyeSgpOworc3RkOjp1
bmlxdWVfcHRyPFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI+IFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpjcmVhdGVUaW1lcihGdW5jdGlvbjx2b2lkKCk+
JiYgZnVuY3Rpb24pCit7CisgICAgcmV0dXJuIFdURjo6bWFrZVVuaXF1ZTxTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlclRpbWVyPihSdW5Mb29wOjpjdXJyZW50KCksIFtmdW5jdGlvbiA9IFdURk1v
dmUoZnVuY3Rpb24pLCBwcm90ZWN0ZWROb2RlID0gUmVmIHsgc2Nyb2xsaW5nTm9kZSgpIH1dIHsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHByb3RlY3RlZE5vZGUtPnNjcm9sbGluZ1RyZWUoKS50
cmVlTG9jaygpIH07CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgfSk7CiB9Ci0jZW5kaWYKIAot
V2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCwgRXZlbnRUYXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpCit2b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzdGFydEFuaW1hdGlvbkNhbGxiYWNrKFNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyJikKIHsKLSAgICBpZiAoIXNjcm9sbGluZ05vZGUoKS5j
YW5IYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQsIGV2ZW50VGFyZ2V0aW5nKSkKLSAgICAgICAg
cmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7CisgICAgaWYgKCFt
X2FuaW1hdGlvblRpbWVyKSB7CisgICAgICAgIG1fYW5pbWF0aW9uVGltZXIgPSBXVEY6Om1ha2VV
bmlxdWU8UnVuTG9vcDo6VGltZXI8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE+PihSdW5Mb29wOjpjdXJyZW50KCksIHRoaXMsICZTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTmljb3NpYTo6YW5pbWF0aW9uVGltZXJGaXJlZCk7CiAKLSAgICBib29sIGNh
bkhhdmVIb3Jpem9udGFsU2Nyb2xsYmFyID0gc2Nyb2xsaW5nTm9kZSgpLmNhbkhhdmVIb3Jpem9u
dGFsU2Nyb2xsYmFyKCk7Ci0gICAgYm9vbCBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIgPSBzY3Jv
bGxpbmdOb2RlKCkuY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKCk7Ci0jaWYgRU5BQkxFKEtJTkVU
SUNfU0NST0xMSU5HKQotICAgIGVuc3VyZVNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKTsKLSAgICBt
X2tpbmV0aWNBbmltYXRpb24tPmFwcGVuZFRvU2Nyb2xsSGlzdG9yeSh3aGVlbEV2ZW50KTsKLSAg
ICBtX2tpbmV0aWNBbmltYXRpb24tPnN0b3AoKTsKLSAgICBpZiAod2hlZWxFdmVudC5pc0VuZE9m
Tm9uTW9tZW50dW1TY3JvbGwoKSkgewotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnN0YXJ0
QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGN1cnJlbnRTY3JvbGxQb3NpdGlvbigp
LCBtX2tpbmV0aWNBbmltYXRpb24tPmNvbXB1dGVWZWxvY2l0eSgpLCBjYW5IYXZlSG9yaXpvbnRh
bFNjcm9sbGJhciwgY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKTsKLSAgICAgICAgbV9raW5ldGlj
QW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKLSAgICAgICAgcmV0dXJuIFdoZWVsRXZl
bnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwotICAgIH0KLSAgICBpZiAod2hlZWxFdmVudC5p
c1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xsKCkpIHsKLSAgICAgICAgbV9raW5ldGljQW5p
bWF0aW9uLT5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjdXJyZW50U2Ny
b2xsUG9zaXRpb24oKSwgd2hlZWxFdmVudC5zd2lwZVZlbG9jaXR5KCksIGNhbkhhdmVIb3Jpem9u
dGFsU2Nyb2xsYmFyLCBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIpOwotICAgICAgICBtX2tpbmV0
aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwotICAgICAgICByZXR1cm4gV2hlZWxF
dmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7Ci0gICAgfQorI2lmIFVTRShHTElCX0VWRU5U
X0xPT1ApCisgICAgICAgIG1fYW5pbWF0aW9uVGltZXItPnNldFByaW9yaXR5KFdURjo6UnVuTG9v
cFNvdXJjZVByaW9yaXR5OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JUaW1lcik7CiAjZW5kaWYKLQot
ICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIHNoYXJlIGNvZGUgd2l0aCBTY3JvbGxBbmltYXRv
cjo6aGFuZGxlV2hlZWxFdmVudCgpLCBwZXJoYXBzIGJ5IG1vdmluZyBjb2RlIGludG8gU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoKS4KLSAgICBmbG9hdCBkZWx0
YVggPSBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhciA/IHdoZWVsRXZlbnQuZGVsdGFYKCkgOiAw
OwotICAgIGZsb2F0IGRlbHRhWSA9IGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhciA/IHdoZWVsRXZl
bnQuZGVsdGFZKCkgOiAwOwotICAgIGlmICgoZGVsdGFYIDwgMCAmJiBjdXJyZW50U2Nyb2xsUG9z
aXRpb24oKS54KCkgPj0gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkueCgpKQotICAgICAgICB8fCAo
ZGVsdGFYID4gMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS54KCkgPD0gbWluaW11bVNjcm9s
bFBvc2l0aW9uKCkueCgpKSkKLSAgICAgICAgZGVsdGFYID0gMDsKLSAgICBpZiAoKGRlbHRhWSA8
IDAgJiYgY3VycmVudFNjcm9sbFBvc2l0aW9uKCkueSgpID49IG1heGltdW1TY3JvbGxQb3NpdGlv
bigpLnkoKSkKLSAgICAgICAgfHwgKGRlbHRhWSA+IDAgJiYgY3VycmVudFNjcm9sbFBvc2l0aW9u
KCkueSgpIDw9IG1pbmltdW1TY3JvbGxQb3NpdGlvbigpLnkoKSkpCi0gICAgICAgIGRlbHRhWSA9
IDA7Ci0KLSAgICBpZiAoIWRlbHRhWCAmJiAhZGVsdGFZKQotICAgICAgICByZXR1cm4gV2hlZWxF
dmVudEhhbmRsaW5nUmVzdWx0Ojp1bmhhbmRsZWQoKTsKLQotICAgIGlmICh3aGVlbEV2ZW50Lmdy
YW51bGFyaXR5KCkgPT0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVudCkgewotICAgICAgICBpZiAoZGVs
dGFYKSB7Ci0gICAgICAgICAgICBib29sIG5lZ2F0aXZlID0gZGVsdGFYIDwgMDsKLSAgICAgICAg
ICAgIGRlbHRhWCA9IFNjcm9sbGJhcjo6cGFnZVN0ZXBEZWx0YShzY3JvbGxhYmxlQXJlYVNpemUo
KS53aWR0aCgpKTsKLSAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkKLSAgICAgICAgICAgICAgICBk
ZWx0YVggPSAtZGVsdGFYOwotICAgICAgICB9Ci0gICAgICAgIGlmIChkZWx0YVkpIHsKLSAgICAg
ICAgICAgIGJvb2wgbmVnYXRpdmUgPSBkZWx0YVkgPCAwOwotICAgICAgICAgICAgZGVsdGFZID0g
U2Nyb2xsYmFyOjpwYWdlU3RlcERlbHRhKHNjcm9sbGFibGVBcmVhU2l6ZSgpLmhlaWdodCgpKTsK
LSAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkKLSAgICAgICAgICAgICAgICBkZWx0YVkgPSAtZGVs
dGFZOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZGVsdGFYID0gLWRlbHRhWDsKLSAgICBkZWx0
YVkgPSAtZGVsdGFZOwotCi0gICAgaWYgKCFzY3JvbGxpbmdOb2RlKCkuc25hcE9mZnNldHNJbmZv
KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGZsb2F0IHNjYWxlID0gcGFnZVNjYWxlRmFjdG9yKCk7
Ci0gICAgICAgIEZsb2F0UG9pbnQgb3JpZ2luYWxPZmZzZXQgPSBMYXlvdXRQb2ludChzY3JvbGxp
bmdOb2RlKCkuY3VycmVudFNjcm9sbE9mZnNldCgpLngoKSAvIHNjYWxlLCBzY3JvbGxpbmdOb2Rl
KCkuY3VycmVudFNjcm9sbE9mZnNldCgpLnkoKSAvIHNjYWxlKTsKLSAgICAgICAgYXV0byBuZXdP
ZmZzZXQgPSAoc2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRTY3JvbGxPZmZzZXQoKSArIEZsb2F0U2l6
ZShkZWx0YVgsIGRlbHRhWSkpOwotICAgICAgICBuZXdPZmZzZXQuc2NhbGUoMS4wIC8gc2NhbGUp
OwotCi0gICAgICAgIGF1dG8gb2Zmc2V0WCA9IHNjcm9sbGluZ05vZGUoKS5zbmFwT2Zmc2V0c0lu
Zm8oKS5jbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9s
bGFibGVBcmVhU2l6ZSgpLCBuZXdPZmZzZXQsIGRlbHRhWCwgb3JpZ2luYWxPZmZzZXQueCgpKS5m
aXJzdDsKLSAgICAgICAgYXV0byBvZmZzZXRZID0gc2Nyb2xsaW5nTm9kZSgpLnNuYXBPZmZzZXRz
SW5mbygpLmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHNjcm9s
bGFibGVBcmVhU2l6ZSgpLCBuZXdPZmZzZXQsIGRlbHRhWSwgb3JpZ2luYWxPZmZzZXQueSgpKS5m
aXJzdDsKLQotICAgICAgICBkZWx0YVggPSAob2Zmc2V0WCAtIG9yaWdpbmFsT2Zmc2V0LngoKSkg
KiBzY2FsZTsKLSAgICAgICAgZGVsdGFZID0gKG9mZnNldFkgLSBvcmlnaW5hbE9mZnNldC55KCkp
ICogc2NhbGU7CiAgICAgfQogCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgaWYg
KG1fc2Nyb2xsQW5pbWF0b3JFbmFibGVkICYmICF3aGVlbEV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxp
bmdEZWx0YXMoKSkgewotICAgICAgICBlbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgoKTsKLSAg
ICAgICAgYXV0byBjdXJyZW50T2Zmc2V0ID0gc2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRTY3JvbGxP
ZmZzZXQoKTsKLSAgICAgICAgYXV0byBkZXN0aW5hdGlvbk9mZnNldCA9IGN1cnJlbnRPZmZzZXQg
KyBGbG9hdFNpemUgeyBkZWx0YVgsIGRlbHRhWSB9OwotICAgICAgICBtX3Ntb290aEFuaW1hdGlv
bi0+c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24oY3VycmVudE9mZnNldCwgZGVzdGlu
YXRpb25PZmZzZXQpOwotICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojpo
YW5kbGVkKCk7Ci0gICAgfQotI2VuZGlmCisgICAgaWYgKG1fYW5pbWF0aW9uVGltZXItPmlzQWN0
aXZlKCkpCisgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjcmVhdGVV
cGRhdGVTY29wZSgpOwotICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxCeSh7IGRlbHRhWCwgZGVs
dGFZIH0pOworICAgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGZyYW1lUmF0ZSA9IDYwOworICAg
IHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyB0aWNrVGltZSA9IDFfcyAvIGZyYW1lUmF0ZTsKKyAg
ICBtX2FuaW1hdGlvblRpbWVyLT5zdGFydFJlcGVhdGluZyh0aWNrVGltZSk7Cit9CiAKLSAgICBy
ZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0OjpoYW5kbGVkKCk7Cit2b2lkIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzdG9wQW5pbWF0aW9uQ2FsbGJhY2so
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXImKQoreworICAgIGlmIChtX2FuaW1hdGlvblRpbWVy
KQorICAgICAgICBtX2FuaW1hdGlvblRpbWVyLT5zdG9wKCk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKCkK
K2Jvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmFsbG93c0hv
cml6b250YWxTY3JvbGxpbmcoKSBjb25zdAogewotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElO
RykKLSAgICBpZiAobV9raW5ldGljQW5pbWF0aW9uKSB7Ci0gICAgICAgIG1fa2luZXRpY0FuaW1h
dGlvbi0+c3RvcCgpOwotICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlz
dG9yeSgpOwotICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAg
IGlmIChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0b3Ao
KTsKLSNlbmRpZgotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykgfHwgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCi0gICAgbV9hbmltYXRpb25UaW1lci5zdG9wKCk7Ci0jZW5kaWYKKyAgICBy
ZXR1cm4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZTo6YWxsb3dzSG9yaXpvbnRh
bFNjcm9sbGluZygpOwogfQogCi1mbG9hdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTmljb3NpYTo6cGFnZVNjYWxlRmFjdG9yKCkKK2Jvb2wgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWE6OmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgY29uc3QKIHsK
LSAgICAvLyBGSVhNRTogV2hhdCBzaG91bGQgdGhpcyByZXR1cm4gZm9yIG5vbi1yb290IGZyYW1l
cywgYW5kIG92ZXJmbG93PwotICAgIC8vIEFsc28sIHRoaXMgc2hvdWxkIG5vdCBoYXZlIHRvIGFj
Y2VzcyBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLgotICAgIHJldHVybiBpczxTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdOb2RlKCkpID8KLSAgICAgICAg
ZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oc2Nyb2xsaW5nTm9kZSgp
KS5mcmFtZVNjYWxlRmFjdG9yKCkgOiAxLjsKKyAgICByZXR1cm4gU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZTo6YWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKTsKIH0KIAotdm9pZCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsQW5pbWF0aW9u
RGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBv
ZmZzZXQpCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpp
bW1lZGlhdGVTY3JvbGxCeShjb25zdCBGbG9hdFNpemUmIGRlbHRhKQogewotI2lmIEVOQUJMRShT
TU9PVEhfU0NST0xMSU5HKQotICAgIGlmICgmYW5pbWF0aW9uID09IG1fa2luZXRpY0FuaW1hdGlv
bi5nZXQoKSkgewotICAgICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgICAgICBt
X3Ntb290aEFuaW1hdGlvbi0+c3RvcCgpOwotICAgIH0KLSNlbmRpZgogICAgIGF1dG8gdXBkYXRl
U2NvcGUgPSBjcmVhdGVVcGRhdGVTY29wZSgpOworICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxC
eShkZWx0YSk7Cit9CiAKLSAgICAvLyBGSVhNRTogTmVlZCB0byBjb252ZXJ0IGFuIG9mZnNldCB0
byBhIHBvc2l0aW9uLgotICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxUbyhvZmZzZXQpOwordm9p
ZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6aW1tZWRpYXRlU2Ny
b2xsQnlXaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFNpemUmIG9mZnNl
dCkKK3sKKyAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY3JlYXRlVXBkYXRlU2NvcGUoKTsKKyAgICBz
Y3JvbGxpbmdOb2RlKCkuc2Nyb2xsQnkob2Zmc2V0LCBTY3JvbGxDbGFtcGluZzo6VW5jbGFtcGVk
KTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6
c2Nyb2xsQW5pbWF0aW9uRGlkRW5kKFNjcm9sbEFuaW1hdGlvbiYpCit2b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91
bmRzSWZOZWNlc3NhcnkoKQogeworICAgIEZsb2F0UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBjdXJy
ZW50U2Nyb2xsUG9zaXRpb24oKTsKKyAgICBGbG9hdFBvaW50IGNvbnN0cmFpbmVkUG9zaXRpb24g
PSBzY3JvbGxQb3NpdGlvbi5jb25zdHJhaW5lZEJldHdlZW4obWluaW11bVNjcm9sbFBvc2l0aW9u
KCksIG1heGltdW1TY3JvbGxQb3NpdGlvbigpKTsKKyAgICBpbW1lZGlhdGVTY3JvbGxCeShjb25z
dHJhaW5lZFBvc2l0aW9uIC0gc2Nyb2xsUG9zaXRpb24pOwogfQogCi1TY3JvbGxFeHRlbnRzIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxFeHRlbnRzRm9y
QW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYpCitGbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxPZmZzZXQoKSBjb25zdAogewotICAgIHJl
dHVybiB7Ci0gICAgICAgIHNjcm9sbGluZ05vZGUoKS50b3RhbENvbnRlbnRzU2l6ZSgpLAotICAg
ICAgICBzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsYWJsZUFyZWFTaXplKCkKLSAgICB9OworICAgIHJl
dHVybiBTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsT2Zmc2V0RnJvbVBvc2l0aW9uKGN1cnJlbnRTY3Jv
bGxQb3NpdGlvbigpLCBzY3JvbGxPcmlnaW4oKSk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnN0YXJ0VGltZXJJZk5lY2Vzc2FyeSgpCit2b2lk
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjp3aWxsU3RhcnRTY3Jv
bGxTbmFwQW5pbWF0aW9uKCkKIHsKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpIHx8IEVO
QUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIGlmIChtX2FuaW1hdGlvblRpbWVyLmlzQWN0aXZl
KCkpCi0gICAgICAgIHJldHVybjsKKyAgICBzY3JvbGxpbmdOb2RlKCkuc2V0U2Nyb2xsU25hcElu
UHJvZ3Jlc3ModHJ1ZSk7Cit9CiAKLSAgICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBmcmFtZVJh
dGUgPSA2MDsKLSAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgdGlja1RpbWUgPSAxX3MgLyBm
cmFtZVJhdGU7Ci0gICAgCi0gICAgbV9hbmltYXRpb25UaW1lci5zdGFydFJlcGVhdGluZyh0aWNr
VGltZSk7Ci0jZW5kaWYKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE6OmRpZFN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCkKK3sKKyAgICBzY3JvbGxpbmdOb2Rl
KCkuc2V0U2Nyb2xsU25hcEluUHJvZ3Jlc3MoZmFsc2UpOwogfQogCi12b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphbmltYXRpb25UaW1lckZpcmVkKCkKK2Zs
b2F0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpwYWdlU2NhbGVG
YWN0b3IoKSBjb25zdAogewotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykgfHwgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCi0gICAgYXV0byBub3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsK
LSNlbmRpZgorICAgIC8vIEZJWE1FOiBXaGF0IHNob3VsZCB0aGlzIHJldHVybiBmb3Igbm9uLXJv
b3QgZnJhbWVzLCBhbmQgb3ZlcmZsb3c/CisgICAgLy8gQWxzbywgdGhpcyBzaG91bGQgbm90IGhh
dmUgdG8gYWNjZXNzIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuCisgICAgcmV0dXJu
IGlzPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KHNjcm9sbGluZ05vZGUoKSkgPwor
ICAgICAgICBkb3duY2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxp
bmdOb2RlKCkpLmZyYW1lU2NhbGVGYWN0b3IoKSA6IDEuOworfQogCi0jaWYgRU5BQkxFKEtJTkVU
SUNfU0NST0xMSU5HKQotICAgIGlmIChtX2tpbmV0aWNBbmltYXRpb24pCi0gICAgICAgIG1fa2lu
ZXRpY0FuaW1hdGlvbi0+c2VydmljZUFuaW1hdGlvbihub3cpOwotI2VuZGlmCi0jaWYgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICBt
X3Ntb290aEFuaW1hdGlvbi0+c2VydmljZUFuaW1hdGlvbihub3cpOwotI2VuZGlmICAgIAorU2Ny
b2xsRXh0ZW50cyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Ny
b2xsRXh0ZW50cygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgc2Nyb2xsaW5nTm9k
ZSgpLnRvdGFsQ29udGVudHNTaXplKCksCisgICAgICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxh
YmxlQXJlYVNpemUoKQorICAgIH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEu
aAppbmRleCA3NDc0MmMxZmUzYTg2ODZhZTUzMjE0YTJkYWYwZGFhMjJiOTVlZWIzLi5jYWFlZjY5
ODcwOGQwOTA5ZmZmMWFmZjVhYTIwZWEzMmIwNmE3MTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVOaWNvc2lhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5oCkBAIC0zMiw2OCAr
MzIsNTggQEAKIAogI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAi
U2Nyb2xsQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIgogI2lu
Y2x1ZGUgIlRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIgotCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NS
T0xMSU5HKQotI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvbktpbmV0aWMuaCIKLSNlbmRpZgotCi0j
aWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0jaW5jbHVkZSAiU2Nyb2xsQW5pbWF0aW9uU21v
b3RoLmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykgfHwgRU5BQkxF
KFNNT09USF9TQ1JPTExJTkcpCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLSNlbmRpZgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgYSBTY3Jv
bGxBbmltYXRpb25DbGllbnQuCi1jbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTmljb3NpYSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLCBw
dWJsaWMgU2Nyb2xsQW5pbWF0aW9uQ2xpZW50IHsKK2NsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhIDogcHVibGljIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGUsIHB1YmxpYyBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlckNsaWVudCB7CiBwdWJs
aWM6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWEoU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmLCBib29sIHNjcm9sbEFuaW1hdG9yRW5hYmxl
ZCk7CiAgICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWEoKTsKIAorICAgIHZvaWQgdXBkYXRlRnJvbVN0YXRlTm9kZShjb25zdCBTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUmKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tmljb3NpYTo6U2NlbmVJbnRl
Z3JhdGlvbjo6VXBkYXRlU2NvcGU+IGNyZWF0ZVVwZGF0ZVNjb3BlKCk7Ci0gICAgdm9pZCByZXNl
dEN1cnJlbnRQb3NpdGlvbigpOwogICAgIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aHMoKTsKICAg
ICBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9y
bVdoZWVsRXZlbnQmLCBFdmVudFRhcmdldGluZyk7CiAgICAgdm9pZCBzdG9wU2Nyb2xsQW5pbWF0
aW9ucygpOwogCiBwcml2YXRlOgotICAgIGJvb2wgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQgeyBm
YWxzZSB9OwotICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpOworICAgIHZvaWQgYW5pbWF0aW9u
VGltZXJGaXJlZCgpOwogCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQotICAgIHZvaWQg
ZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpOwotI2VuZGlmCi0jaWYgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCi0gICAgdm9pZCBlbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgoKTsKLSNl
bmRpZgorICAgIC8vIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyQ2xpZW50LgorICAgIHN0ZDo6
dW5pcXVlX3B0cjxTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlclRpbWVyPiBjcmVhdGVUaW1lcihG
dW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwogCi0gICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVk
KCk7Ci0gICAgdm9pZCBzdGFydFRpbWVySWZOZWNlc3NhcnkoKTsKLQotICAgIC8vIFNjcm9sbEFu
aW1hdGlvbkNsaWVudAotICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFu
aW1hdGlvbiYsIGNvbnN0IEZsb2F0UG9pbnQmIGN1cnJlbnRQb3NpdGlvbikgZmluYWw7Ci0gICAg
dm9pZCBzY3JvbGxBbmltYXRpb25EaWRFbmQoU2Nyb2xsQW5pbWF0aW9uJikgZmluYWw7Ci0gICAg
U2Nyb2xsRXh0ZW50cyBzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYp
IGZpbmFsOwotCi0gICAgLy8gRklYTUU6IFRoZXNlIGFuaW1hdGlvbnMgc2hvdWxkIG5vdCBsaXZl
IGhlcmUuIFRoZXkgbmVlZCB0byBiZSBtYW5hZ2VkIGJ5IFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyLAotICAgIC8vIHRvIGJlIGNvb3JkaW5hdGVkIHdpdGggb3RoZXIga2luZHMgb2Ygc2Nyb2xs
IGFuaW1hdGlvbnMsIGFuZCBiZSByZWZlcmVuY2VkIGJ5IFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyOjptX2N1cnJlbnRBbmltYXRpb24uCi0gICAgCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xM
SU5HKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25LaW5ldGljPiBtX2tpbmV0
aWNBbmltYXRpb247Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPiBtX3Ntb290aEFuaW1hdGlvbjsK
LSNlbmRpZgotCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKSB8fCBFTkFCTEUoU01PT1RI
X1NDUk9MTElORykKLSAgICAvLyBGSVhNRTogV2hlbiB0aGUgYWJvdmUgdHdvIGFuaW1hdGlvbnMg
YXJlIHJlbW92ZWQsIHRoaXMgdGltZXIgY2FuIGJlIHJlbW92ZWQuCi0gICAgUnVuTG9vcDo6VGlt
ZXI8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE+IG1fYW5pbWF0aW9u
VGltZXI7Ci0jZW5kaWYKKyAgICB2b2lkIHN0YXJ0QW5pbWF0aW9uQ2FsbGJhY2soU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXImKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BBbmltYXRpb25DYWxsYmFj
ayhTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciYpIGZpbmFsOworCisgICAgYm9vbCBhbGxvd3NI
b3Jpem9udGFsU2Nyb2xsaW5nKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCBhbGxvd3NWZXJ0aWNh
bFNjcm9sbGluZygpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBzZXRTY3JvbGxCZWhhdmlvclN0
YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1cyBzdGF0dXMpIGZpbmFsIHsgbV9zY3JvbGxCZWhhdmlv
clN0YXR1cyA9IHN0YXR1czsgfQorICAgIFNjcm9sbEJlaGF2aW9yU3RhdHVzIHNjcm9sbEJlaGF2
aW9yU3RhdHVzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zY3JvbGxCZWhhdmlvclN0YXR1czsg
fQorCisgICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxCeShjb25zdCBGbG9hdFNpemUmKSBmaW5hbDsK
KyAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMo
Y29uc3QgRmxvYXRTaXplJikgZmluYWw7CisKKyAgICB2b2lkIGFkanVzdFNjcm9sbFBvc2l0aW9u
VG9Cb3VuZHNJZk5lY2Vzc2FyeSgpIGZpbmFsOworCisgICAgRmxvYXRQb2ludCBzY3JvbGxPZmZz
ZXQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHdpbGxTdGFydFNjcm9sbFNuYXBBbmltYXRpb24o
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCkgZmluYWw7Cisg
ICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgZmluYWw7CisgICAgU2Nyb2xsRXh0ZW50
cyBzY3JvbGxFeHRlbnRzKCkgY29uc3QgZmluYWw7CisKKyAgICBib29sIHNjcm9sbEFuaW1hdGlv
bkVuYWJsZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZDsg
fQorCisgICAgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgbV9zY3JvbGxDb250cm9sbGVyOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxSdW5Mb29wOjpUaW1lcjxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTmljb3NpYT4+IG1fYW5pbWF0aW9uVGltZXI7CisgICAgU2Nyb2xsQmVoYXZp
b3JTdGF0dXMgbV9zY3JvbGxCZWhhdmlvclN0YXR1cyB7IFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpO
b3RJbkFuaW1hdGlvbiB9OworCisgICAgYm9vbCBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZCB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKaW5kZXggZDQzMDJiMzc4NzgxZWY1
NDg2OWEwMTY4ZWM2ZTlkZTQ0MTIxNDM4OS4uMzc3YmQ1MmJmNWY2Mzk4MGY0ZDFiNjdhZjk4ZTE2
YmI3YzBiZmM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbktpbmV0aWMuaApAQCAtNjMsMTUgKzYzLDE0IEBAIHB1YmxpYzoKICAgICBib29sIHN0YXJ0
QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRp
YWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgdmVsb2NpdHksIGJvb2wgbWF5SFNjcm9sbCwgYm9v
bCBtYXlWU2Nyb2xsKTsKICAgICBib29sIHJldGFyZ2V0QWN0aXZlQW5pbWF0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmIG5ld09mZnNldCkgZmluYWw7CiAKLSAgICAvLyBGSVhNRTogb25seSBwdWJsaWMg
Zm9yIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLgotICAgIHZvaWQg
c2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSBmaW5hbDsKLQogICAgIHZvaWQgYXBwZW5k
VG9TY3JvbGxIaXN0b3J5KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwogICAgIHZvaWQgY2xl
YXJTY3JvbGxIaXN0b3J5KCk7CiAKICAgICBGbG9hdFNpemUgY29tcHV0ZVZlbG9jaXR5KCk7CiAK
IHByaXZhdGU6CisgICAgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUpIGZpbmFs
OworCiAgICAgc3RkOjpvcHRpb25hbDxQZXJBeGlzRGF0YT4gbV9ob3Jpem9udGFsRGF0YTsKICAg
ICBzdGQ6Om9wdGlvbmFsPFBlckF4aXNEYXRhPiBtX3ZlcnRpY2FsRGF0YTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAppbmRleCA5ZDVjNjNk
M2MyYzIzZDFjNzA1MTczNDc3Y2EyZGVlZDM5ZGNmZDZhLi5mZWYwNDgxYzZlYjBiY2QzYjhhYWZl
NDYzZDA2MzYyOTBhZmU5YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRpb25TbW9vdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25TbW9vdGguaApAQCAtNDEsMTYgKzQxLDE3IEBAIHB1YmxpYzoKICAgICBib29s
IHN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIGZyb21P
ZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KTsKICAgICBib29sIHJl
dGFyZ2V0QWN0aXZlQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld09mZnNldCkgZmluYWw7
CiAKLSAgICAvLyBGSVhNRTogb25seSBwdWJsaWMgZm9yIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhLgotICAgIHZvaWQgdXBkYXRlU2Nyb2xsRXh0ZW50cygpIGZpbmFs
OwotICAgIHZvaWQgc2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSBmaW5hbDsKKyAgICBj
b25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbk9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVz
dGluYXRpb25PZmZzZXQ7IH0KIAogcHJpdmF0ZToKIAogICAgIGJvb2wgc3RhcnRPclJldGFyZ2V0
QW5pbWF0aW9uKGNvbnN0IFNjcm9sbEV4dGVudHMmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5h
dGlvbk9mZnNldCk7Ci0gICAgCisKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVudHMoKSBmaW5h
bDsKKyAgICB2b2lkIHNlcnZpY2VBbmltYXRpb24oTW9ub3RvbmljVGltZSkgZmluYWw7CisKICAg
ICBTZWNvbmRzIGR1cmF0aW9uRnJvbURpc3RhbmNlKGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0Owot
ICAgIAorCiAgICAgYm9vbCBhbmltYXRlU2Nyb2xsKE1vbm90b25pY1RpbWUpOwogCiAgICAgU2Vj
b25kcyBtX2R1cmF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3Iu
Y3BwCmluZGV4IDcyZTE4MmNjYmFjYjc2ODIxMDRmOGVkMzJlNjU4YTA1Njg2NjE4MWIuLmRkY2Y5
MWRjYWI4Njk2MDY1N2M5MzJhMGFlNmY2NTY2N2I3NjU2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi0jaWYgIUVOQUJMRShTTU9PVEhfU0NST0xMSU5HKSAmJiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKFdQRSkKKyNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQykKIHN0ZDo6dW5pcXVlX3B0cjxTY3Jv
bGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xs
YWJsZUFyZWEpCiB7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0b3I+KHNjcm9s
bGFibGVBcmVhKTsKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpzY3Jv
bGxUb1Bvc2l0aW9uV2l0aEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdQb3NpdGlvbgog
dm9pZCBTY3JvbGxBbmltYXRvcjo6cmV0YXJnZXRSdW5uaW5nQW5pbWF0aW9uKGNvbnN0IEZsb2F0
UG9pbnQmIG5ld1Bvc2l0aW9uKQogewogICAgIEFTU0VSVChzY3JvbGxhYmxlQXJlYSgpLmN1cnJl
bnRTY3JvbGxCZWhhdmlvclN0YXR1cygpID09IFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpJbk5vbk5h
dGl2ZUFuaW1hdGlvbik7Ci0gICAgbV9zY3JvbGxDb250cm9sbGVyLnJlZ2FyZ2V0QW5pbWF0ZWRT
Y3JvbGwob2Zmc2V0RnJvbVBvc2l0aW9uKG5ld1Bvc2l0aW9uKSk7CisgICAgbV9zY3JvbGxDb250
cm9sbGVyLnJldGFyZ2V0QW5pbWF0ZWRTY3JvbGwob2Zmc2V0RnJvbVBvc2l0aW9uKG5ld1Bvc2l0
aW9uKSk7CiB9CiAKIEZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3I6Om9mZnNldEZyb21Qb3NpdGlv
bihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikgY29uc3QKQEAgLTE4NSw2ICsxODUsOCBAQCBi
b29sIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1B
QykKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVtb3ZlIHRoaXMgY29kZSwg
YnV0IE1hYydzIGhhbmRsZVdoZWVsRXZlbnQgcmVsaWVzIG9uIHRoaXMgc29tZWhvdy4KICAgICBT
Y3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIgPSBtX3Njcm9sbGFibGVBcmVhLmhvcml6b250
YWxTY3JvbGxiYXIoKTsKICAgICBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyID0gbV9zY3Jv
bGxhYmxlQXJlYS52ZXJ0aWNhbFNjcm9sbGJhcigpOwogCkBAIC0yMjgsNiArMjMwLDkgQEAgYm9v
bCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZl
bnQmIGUpCiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGhhbmRsZWQ7CisjZWxzZQorICAg
IHJldHVybiBtX3Njcm9sbENvbnRyb2xsZXIuaGFuZGxlV2hlZWxFdmVudChlKTsKKyNlbmRpZgog
fQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKQEAgLTQxMCw2ICs0MTUsMTMgQEAgdm9pZCBT
Y3JvbGxBbmltYXRvcjo6cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JS
ZWFzb24oV2hlZWxFdmVudFQKIH0KICNlbmRpZgogCisjaWYgUExBVEZPUk0oR1RLKSB8fCBVU0Uo
TklDT1NJQSkKK2Jvb2wgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFuaW1hdGlvbkVuYWJsZWQoKSBj
b25zdAoreworICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLnNjcm9sbEFuaW1hdG9yRW5hYmxl
ZCgpICYmIHBsYXRmb3JtQWxsb3dzU2Nyb2xsQW5pbWF0aW9uKCk7Cit9CisjZW5kaWYKKwogdm9p
ZCBTY3JvbGxBbmltYXRvcjo6Y2FuY2VsQW5pbWF0aW9ucygpCiB7CiAgICAgbV9zY3JvbGxDb250
cm9sbGVyLnN0b3BBbmltYXRlZFNjcm9sbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmgKaW5kZXggZTZhYWQxNWE0OWQyNDI5ZjA5OWRiZWMyNDVkOGVkZjVmZmRmZGNm
Yy4uZmMxZDFjZTgxN2JhYjA5MjdkNThhMzNlODA2YjcxYTEwZDM3YThhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCkBAIC0xNjIsNiArMTYyLDEwIEBAIHByaXZh
dGU6CiAgICAgdm9pZCByZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJl
YXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hl
ZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikgY29uc3QgZmluYWw7CiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKEdUSykgfHwgVVNFKE5JQ09TSUEpCisgICAgYm9vbCBzY3JvbGxBbmltYXRp
b25FbmFibGVkKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKwogICAgIHN0YXRpYyBGbG9hdFNpemUg
ZGVsdGFGcm9tU3RlcChTY3JvbGxiYXJPcmllbnRhdGlvbiwgZmxvYXQgc3RlcCwgZmxvYXQgbXVs
dGlwbGllcik7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcAppbmRleCA4YjNkZWU3ZTRlNjI2OWU5
NTY5M2M0NWM1NTFlMzdhMWU4YjEyZjFhLi40NTYzODI2MDNhOTUzZTIxMDVmZWYwM2Y5MWI5MGE3
MTg3YmJhNDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCkBAIC0zMCwxMyArMzAsMTYgQEAKICNpbmNsdWRlICJM
YXlvdXRTaXplLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2hl
ZWxFdmVudC5oIgotI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvbktpbmV0aWMuaCIKICNpbmNsdWRl
ICJTY3JvbGxBbmltYXRpb25Nb21lbnR1bS5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvblNt
b290aC5oIgogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVu
dFRlc3RNb25pdG9yLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCisjaWYg
RU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKSAmJiAhUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIlNj
cm9sbEFuaW1hdGlvbktpbmV0aWMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcihT
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlckNsaWVudCYgY2xpZW50KQpAQCAtOTksMTIgKzEwMiwx
MiBAQCBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydEFuaW1hdGVkU2Nyb2xs
VG9EZXN0aW5hdGlvbihGbG9hdFBvaW50IHN0YQogICAgIHJldHVybiBkb3duY2FzdDxTY3JvbGxB
bmltYXRpb25TbW9vdGg+KCptX2N1cnJlbnRBbmltYXRpb24pLnN0YXJ0QW5pbWF0ZWRTY3JvbGxU
b0Rlc3RpbmF0aW9uKHN0YXJ0T2Zmc2V0LCBkZXN0aW5hdGlvbk9mZnNldCk7CiB9CiAKLWJvb2wg
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnJlZ2FyZ2V0QW5pbWF0ZWRTY3JvbGwoRmxvYXRQ
b2ludCBuZXdEZXN0aW5hdGlvbk9mZnNldCkKK2Jvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXI6OnJldGFyZ2V0QW5pbWF0ZWRTY3JvbGwoRmxvYXRQb2ludCBuZXdEZXN0aW5hdGlvbk9mZnNl
dCkKIHsKICAgICBpZiAoIWlzPFNjcm9sbEFuaW1hdGlvblNtb290aD4obV9jdXJyZW50QW5pbWF0
aW9uLmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIExPR19XSVRIX1NU
UkVBTShTY3JvbGxBbmltYXRpb25zLCBzdHJlYW0gPDwgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyICIgPDwgdGhpcyA8PCAiIHJlZ2FyZ2V0QW5pbWF0ZWRTY3JvbGwgdG8gIiA8PCBuZXdEZXN0
aW5hdGlvbk9mZnNldCk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbEFuaW1hdGlvbnMsIHN0
cmVhbSA8PCAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgIiA8PCB0aGlzIDw8ICIgcmV0YXJn
ZXRBbmltYXRlZFNjcm9sbCB0byAiIDw8IG5ld0Rlc3RpbmF0aW9uT2Zmc2V0KTsKIAogICAgIEFT
U0VSVChtX2N1cnJlbnRBbmltYXRpb24tPmlzQWN0aXZlKCkpOwogICAgIHJldHVybiBkb3duY2Fz
dDxTY3JvbGxBbmltYXRpb25TbW9vdGg+KCptX2N1cnJlbnRBbmltYXRpb24pLnJldGFyZ2V0QWN0
aXZlQW5pbWF0aW9uKG5ld0Rlc3RpbmF0aW9uT2Zmc2V0KTsKQEAgLTExOCwzNSArMTIxLDYgQEAg
dm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RvcEFuaW1hdGVkU2Nyb2xsKCkKICAg
ICAgICAgbV9jdXJyZW50QW5pbWF0aW9uLT5zdG9wKCk7CiB9CiAKLWJvb2wgU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yS2luZXRpY1Njcm9sbGluZyhjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQotewotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9M
TElORykKLSAgICBpZiAobV9jdXJyZW50QW5pbWF0aW9uICYmICFpczxTY3JvbGxBbmltYXRpb25L
aW5ldGljPihtX2N1cnJlbnRBbmltYXRpb24uZ2V0KCkpKSB7Ci0gICAgICAgIG1fY3VycmVudEFu
aW1hdGlvbi0+c3RvcCgpOwotICAgICAgICBtX2N1cnJlbnRBbmltYXRpb24gPSBudWxscHRyOwot
ICAgIH0KLQotICAgIGlmICghbV9jdXJyZW50QW5pbWF0aW9uKQotICAgICAgICBtX2N1cnJlbnRB
bmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KCp0aGlzKTsKLQot
ICAgIGF1dG8mIGtpbmV0aWNBbmltYXRpb24gPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25LaW5l
dGljPigqbV9jdXJyZW50QW5pbWF0aW9uKTsKLSAgICBraW5ldGljQW5pbWF0aW9uLmFwcGVuZFRv
U2Nyb2xsSGlzdG9yeShldmVudCk7Ci0KLSAgICBpZiAoZXZlbnQuaXNFbmRPZk5vbk1vbWVudHVt
U2Nyb2xsKCkpIHsKLSAgICAgICAga2luZXRpY0FuaW1hdGlvbi5zdGFydEFuaW1hdGVkU2Nyb2xs
V2l0aEluaXRpYWxWZWxvY2l0eShtX2NsaWVudC5zY3JvbGxPZmZzZXQoKSwga2luZXRpY0FuaW1h
dGlvbi5jb21wdXRlVmVsb2NpdHkoKSwgbV9jbGllbnQuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGlu
ZygpLCBtX2NsaWVudC5hbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpKTsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotICAgIGlmIChldmVudC5pc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Ny
b2xsKCkpIHsKLSAgICAgICAga2luZXRpY0FuaW1hdGlvbi5jbGVhclNjcm9sbEhpc3RvcnkoKTsK
LSAgICAgICAga2luZXRpY0FuaW1hdGlvbi5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxW
ZWxvY2l0eShtX2NsaWVudC5zY3JvbGxPZmZzZXQoKSwgZXZlbnQuc3dpcGVWZWxvY2l0eSgpLCBt
X2NsaWVudC5hbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nKCksIG1fY2xpZW50LmFsbG93c1ZlcnRp
Y2FsU2Nyb2xsaW5nKCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShldmVudCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIGJv
b2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXJ0TW9tZW50dW1TY3JvbGxXaXRoSW5p
dGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0
U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29u
c3QgRnVuY3Rpb248RmxvYXRQb2ludChjb25zdCBGbG9hdFBvaW50Jik+JiBkZXN0aW5hdGlvbk1v
ZGlmaWVyKQogewogICAgIGlmIChtX2N1cnJlbnRBbmltYXRpb24pIHsKQEAgLTI0OSw2ICsyMjMs
MTIxIEBAIGZsb2F0IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjphZGp1c3RlZFNjcm9sbERl
c3RpbmF0aW9uKFNjcm9sbEV2ZW50QXhpcyBheGlzCiAgICAgcmV0dXJuIG1fc2Nyb2xsU25hcFN0
YXRlLT5hZGp1c3RlZFNjcm9sbERlc3RpbmF0aW9uKGF4aXMsIGRlc3RpbmF0aW9uT2Zmc2V0LCB2
ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXQsIG1fY2xpZW50LnNjcm9sbEV4dGVudHMoKSwgbV9jbGll
bnQucGFnZVNjYWxlRmFjdG9yKCkpOwogfQogCisjaWYgIVBMQVRGT1JNKE1BQykKKyNpZiBFTkFC
TEUoS0lORVRJQ19TQ1JPTExJTkcpCitib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpw
cm9jZXNzV2hlZWxFdmVudEZvcktpbmV0aWNTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JiBldmVudCkKK3sKKyAgICBpZiAoaXM8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4obV9jdXJy
ZW50QW5pbWF0aW9uLmdldCgpKSkKKyAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uLT5zdG9wKCk7
CisKKyAgICBpZiAoIWV2ZW50Lmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMoKSkgeworICAgICAg
ICBtX3Njcm9sbEhpc3RvcnkuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIG1fc2Nyb2xsSGlzdG9yeS5hcHBlbmQoZXZlbnQpOworCisgICAgaWYgKCFldmVudC5p
c0VuZE9mTm9uTW9tZW50dW1TY3JvbGwoKSAmJiAhZXZlbnQuaXNUcmFuc2l0aW9uaW5nVG9Nb21l
bnR1bVNjcm9sbCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9jdXJyZW50
QW5pbWF0aW9uICYmICFpczxTY3JvbGxBbmltYXRpb25LaW5ldGljPihtX2N1cnJlbnRBbmltYXRp
b24uZ2V0KCkpKSB7CisgICAgICAgIG1fY3VycmVudEFuaW1hdGlvbi0+c3RvcCgpOworICAgICAg
ICBtX2N1cnJlbnRBbmltYXRpb24gPSBudWxscHRyOworICAgIH0KKworICAgIGlmICghbV9jdXJy
ZW50QW5pbWF0aW9uKQorICAgICAgICBtX2N1cnJlbnRBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNj
cm9sbEFuaW1hdGlvbktpbmV0aWM+KCp0aGlzKTsKKworICAgIGF1dG8mIGtpbmV0aWNBbmltYXRp
b24gPSBkb3duY2FzdDxTY3JvbGxBbmltYXRpb25LaW5ldGljPigqbV9jdXJyZW50QW5pbWF0aW9u
KTsKKyAgICB3aGlsZSAoIW1fc2Nyb2xsSGlzdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIGtpbmV0
aWNBbmltYXRpb24uYXBwZW5kVG9TY3JvbGxIaXN0b3J5KG1fc2Nyb2xsSGlzdG9yeS50YWtlRmly
c3QoKSk7CisKKyAgICBpZiAoZXZlbnQuaXNFbmRPZk5vbk1vbWVudHVtU2Nyb2xsKCkpIHsKKyAg
ICAgICAga2luZXRpY0FuaW1hdGlvbi5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxv
Y2l0eShtX2NsaWVudC5zY3JvbGxPZmZzZXQoKSwga2luZXRpY0FuaW1hdGlvbi5jb21wdXRlVmVs
b2NpdHkoKSwgbV9jbGllbnQuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpLCBtX2NsaWVudC5h
bGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
ICAgIGlmIChldmVudC5pc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xsKCkpIHsKKyAgICAg
ICAga2luZXRpY0FuaW1hdGlvbi5jbGVhclNjcm9sbEhpc3RvcnkoKTsKKyAgICAgICAga2luZXRp
Y0FuaW1hdGlvbi5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShtX2NsaWVu
dC5zY3JvbGxPZmZzZXQoKSwgZXZlbnQuc3dpcGVWZWxvY2l0eSgpLCBtX2NsaWVudC5hbGxvd3NI
b3Jpem9udGFsU2Nyb2xsaW5nKCksIG1fY2xpZW50LmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKworYm9vbCBTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQpCit7CisjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKQorICAgIGlmIChwcm9j
ZXNzV2hlZWxFdmVudEZvcktpbmV0aWNTY3JvbGxpbmcod2hlZWxFdmVudCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworI2VuZGlmCisKKyAgICBhdXRvIHNjcm9sbE9mZnNldCA9IG1fY2xpZW50LnNj
cm9sbE9mZnNldCgpOworICAgIGZsb2F0IGRlbHRhWCA9IG1fY2xpZW50LmFsbG93c0hvcml6b250
YWxTY3JvbGxpbmcoKSA/IHdoZWVsRXZlbnQuZGVsdGFYKCkgOiAwOworICAgIGZsb2F0IGRlbHRh
WSA9IG1fY2xpZW50LmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgPyB3aGVlbEV2ZW50LmRlbHRh
WSgpIDogMDsKKyAgICBhdXRvIGV4dGVudHMgPSBtX2NsaWVudC5zY3JvbGxFeHRlbnRzKCk7Cisg
ICAgYXV0byBtaW5Qb3NpdGlvbiA9IGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNldCgpOworICAg
IGF1dG8gbWF4UG9zaXRpb24gPSBleHRlbnRzLm1heGltdW1TY3JvbGxPZmZzZXQoKTsKKworICAg
IGlmICgoZGVsdGFYIDwgMCAmJiBzY3JvbGxPZmZzZXQueCgpID49IG1heFBvc2l0aW9uLngoKSkK
KyAgICAgICAgfHwgKGRlbHRhWCA+IDAgJiYgc2Nyb2xsT2Zmc2V0LngoKSA8PSBtaW5Qb3NpdGlv
bi54KCkpKQorICAgICAgICBkZWx0YVggPSAwOworICAgIGlmICgoZGVsdGFZIDwgMCAmJiBzY3Jv
bGxPZmZzZXQueSgpID49IG1heFBvc2l0aW9uLnkoKSkKKyAgICAgICAgfHwgKGRlbHRhWSA+IDAg
JiYgc2Nyb2xsT2Zmc2V0LnkoKSA8PSBtaW5Qb3NpdGlvbi55KCkpKQorICAgICAgICBkZWx0YVkg
PSAwOworCisgICAgaWYgKCFkZWx0YVggJiYgIWRlbHRhWSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKHdoZWVsRXZlbnQuZ3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VXaGVl
bEV2ZW50KSB7CisgICAgICAgIGlmIChkZWx0YVgpIHsKKyAgICAgICAgICAgIGJvb2wgbmVnYXRp
dmUgPSBkZWx0YVggPCAwOworICAgICAgICAgICAgZGVsdGFYID0gU2Nyb2xsYmFyOjpwYWdlU3Rl
cERlbHRhKGV4dGVudHMuY29udGVudHNTaXplLndpZHRoKCkpOworICAgICAgICAgICAgaWYgKG5l
Z2F0aXZlKQorICAgICAgICAgICAgICAgIGRlbHRhWCA9IC1kZWx0YVg7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGRlbHRhWSkgeworICAgICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGRlbHRhWSA8
IDA7CisgICAgICAgICAgICBkZWx0YVkgPSBTY3JvbGxiYXI6OnBhZ2VTdGVwRGVsdGEoZXh0ZW50
cy5jb250ZW50c1NpemUuaGVpZ2h0KCkpOworICAgICAgICAgICAgaWYgKG5lZ2F0aXZlKQorICAg
ICAgICAgICAgICAgIGRlbHRhWSA9IC1kZWx0YVk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBk
ZWx0YVggPSAtZGVsdGFYOworICAgIGRlbHRhWSA9IC1kZWx0YVk7CisKKyAgICBpZiAoc25hcE9m
ZnNldHNJbmZvKCkgJiYgIXNuYXBPZmZzZXRzSW5mbygpLT5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ZmxvYXQgc2NhbGUgPSBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgYXV0byBv
cmlnaW5hbE9mZnNldCA9IExheW91dFBvaW50KHNjcm9sbE9mZnNldC54KCkgLyBzY2FsZSwgc2Ny
b2xsT2Zmc2V0LnkoKSAvIHNjYWxlKTsKKyAgICAgICAgYXV0byBuZXdPZmZzZXQgPSBMYXlvdXRQ
b2ludCgoc2Nyb2xsT2Zmc2V0LngoKSArIGRlbHRhWCkgLyBzY2FsZSwgKHNjcm9sbE9mZnNldC55
KCkgKyBkZWx0YVkpIC8gc2NhbGUpOworCisgICAgICAgIGF1dG8gb2Zmc2V0WCA9IHNuYXBPZmZz
ZXRzSW5mbygpLT5jbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWws
IExheW91dFNpemUoZXh0ZW50cy5jb250ZW50c1NpemUpLCBuZXdPZmZzZXQsIGRlbHRhWCwgb3Jp
Z2luYWxPZmZzZXQueCgpKS5maXJzdDsKKyAgICAgICAgYXV0byBvZmZzZXRZID0gc25hcE9mZnNl
dHNJbmZvKCktPmNsb3Nlc3RTbmFwT2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIExh
eW91dFNpemUoZXh0ZW50cy5jb250ZW50c1NpemUpLCBuZXdPZmZzZXQsIGRlbHRhWSwgb3JpZ2lu
YWxPZmZzZXQueSgpKS5maXJzdDsKKworICAgICAgICBkZWx0YVggPSAob2Zmc2V0WCAtIG9yaWdp
bmFsT2Zmc2V0LngoKSkgKiBzY2FsZTsKKyAgICAgICAgZGVsdGFZID0gKG9mZnNldFkgLSBvcmln
aW5hbE9mZnNldC55KCkpICogc2NhbGU7CisgICAgfQorCisjaWYgRU5BQkxFKFNNT09USF9TQ1JP
TExJTkcpCisgICAgaWYgKG1fY2xpZW50LnNjcm9sbEFuaW1hdGlvbkVuYWJsZWQoKSAmJiAhd2hl
ZWxFdmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpIHsKKyAgICAgICAgaWYgKGlzPFNj
cm9sbEFuaW1hdGlvblNtb290aD4obV9jdXJyZW50QW5pbWF0aW9uLmdldCgpKSkgeworICAgICAg
ICAgICAgYXV0byBsYXN0RGVzdGluYXRpb25PZmZzZXQgPSBkb3duY2FzdDxTY3JvbGxBbmltYXRp
b25TbW9vdGg+KCptX2N1cnJlbnRBbmltYXRpb24pLmRlc3RpbmF0aW9uT2Zmc2V0KCk7CisgICAg
ICAgICAgICByZXRhcmdldEFuaW1hdGVkU2Nyb2xsKGxhc3REZXN0aW5hdGlvbk9mZnNldCArIEZs
b2F0U2l6ZSB7IGRlbHRhWCwgZGVsdGFZIH0pOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IHN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKHNjcm9sbE9mZnNldCwgc2Nyb2xsT2Zm
c2V0ICsgRmxvYXRTaXplIHsgZGVsdGFYLCBkZWx0YVkgfSk7CisgICAgICAgIHJldHVybiB0cnVl
OworICAgIH0KKyNlbmRpZgorCisgICAgbV9jbGllbnQuaW1tZWRpYXRlU2Nyb2xsQnkoeyBkZWx0
YVgsIGRlbHRhWSB9KTsKKworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKIHZvaWQgU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZUFjdGl2ZVNjcm9sbFNuYXBJbmRleEZvckNs
aWVudE9mZnNldCgpCiB7CiAgICAgaWYgKCF1c2VzU2Nyb2xsU25hcCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKaW5kZXgg
YzNkZDE2MzA3Y2FlNDE1MTFhMTcxOWFmMDk0MWNhMWM5NTJiZjY1Ny4uM2NjYjVlZjQ5NmQwZjY3
YmE1NTA1YTViN2E3MjE0NDk2ZGUxNjM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMu
aCIKICNpbmNsdWRlICJXaGVlbEV2ZW50VGVzdE1vbml0b3IuaCIKKyNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgogCkBAIC0xMTgsNiArMTE5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRT
dG9wU2Nyb2xsU25hcEFuaW1hdGlvbigpIHsgfQogICAgIHZpcnR1YWwgZmxvYXQgcGFnZVNjYWxl
RmFjdG9yKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgU2Nyb2xsRXh0ZW50cyBzY3JvbGxFeHRl
bnRzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxBbmltYXRpb25FbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogY2xhc3MgU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXIgOiBwdWJsaWMgU2Nyb2xsQW5pbWF0aW9uQ2xpZW50IHsKQEAgLTEzMiwxMiArMTM0
LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCk7CiAKICAgICBi
b29sIHN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKEZsb2F0UG9pbnQgc3RhcnRPZmZz
ZXQsIEZsb2F0UG9pbnQgZGVzdGluYXRpb25PZmZzZXQpOwotICAgIGJvb2wgcmVnYXJnZXRBbmlt
YXRlZFNjcm9sbChGbG9hdFBvaW50IG5ld0Rlc3RpbmF0aW9uT2Zmc2V0KTsKKyAgICBib29sIHJl
dGFyZ2V0QW5pbWF0ZWRTY3JvbGwoRmxvYXRQb2ludCBuZXdEZXN0aW5hdGlvbk9mZnNldCk7CiAg
ICAgdm9pZCBzdG9wQW5pbWF0ZWRTY3JvbGwoKTsKIAotICAgIC8vIEZJWE1FOiBIYWNrIGZvciBT
Y3JvbGxBbmltYXRvckdlbmVyaWMuIE5lZWRzIGNsZWFudXAuCi0gICAgYm9vbCBwcm9jZXNzV2hl
ZWxFdmVudEZvcktpbmV0aWNTY3JvbGxpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7Ci0K
ICAgICBib29sIHN0YXJ0TW9tZW50dW1TY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZs
b2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5
LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgV1RGOjpGdW5jdGlvbjxGbG9h
dFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmKT4mIGRlc3RpbmF0aW9uTW9kaWZpZXIpOwogCiAgICAg
dm9pZCBiZWdpbktleWJvYXJkU2Nyb2xsaW5nKCk7CkBAIC0xNjMsMTAgKzE2MiwxMCBAQCBwdWJs
aWM6CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbmV2ZXIgY2FsbGVkLiBXZSBuZXZlciBzZXQgbV9h
Y3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UgYmFjayB0byBmYWxzZS4KICAgICB2b2lkIHNl
dFNjcm9sbFNuYXBJbmRleERpZENoYW5nZShib29sIHN0YXRlKSB7IG1fYWN0aXZlU2Nyb2xsU25h
cEluZGV4RGlkQ2hhbmdlID0gc3RhdGU7IH0KIAotI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgaGFuZGxlZC4KICAgICBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKKyNpZiBQTEFURk9STShNQUMpCiAgICAgc3RhdGljIEZs
b2F0U2l6ZSB3aGVlbERlbHRhQmlhc2luZ1Rvd2FyZHNWZXJ0aWNhbChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmKTsKIAogICAgIGJvb2wgaXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0OwpA
QCAtMjE4LDcgKzIxNywxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlk
VXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZsb2F0UG9pbnQmIC8qIGN1cnJlbnRPZmZz
ZXQgKi8pIGZpbmFsOwogICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uV2lsbFN0YXJ0KFNjcm9sbEFu
aW1hdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkRW5kKFNjcm9sbEFu
aW1hdGlvbiYpIGZpbmFsOwotICAgIFNjcm9sbEV4dGVudHMgc2Nyb2xsRXh0ZW50c0ZvckFuaW1h
dGlvbihTY3JvbGxBbmltYXRpb24mKSAgZmluYWw7CisgICAgU2Nyb2xsRXh0ZW50cyBzY3JvbGxF
eHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYpIGZpbmFsOworCisjaWYgRU5BQkxF
KEtJTkVUSUNfU0NST0xMSU5HKSAmJiAhUExBVEZPUk0oTUFDKQorICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiBoYW5kbGVkLgorICAgIGJvb2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JLaW5ldGljU2Nyb2xs
aW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOworCisgICAgRGVxdWU8UGxhdGZvcm1XaGVl
bEV2ZW50PiBtX3Njcm9sbEhpc3Rvcnk7CisjZW5kaWYKIAogICAgIFNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyQ2xpZW50JiBtX2NsaWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlNDNhMzZhODQ3NjMzYTRkODA4NzJiZDNlMjUxY2RmMzliNWNk
NjQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTYgSWdh
bGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3JHZW5lcmlj
LmgiCi0KLSNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0
ZShTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCi17Ci0gICAgcmV0dXJuIG1ha2VVbmlx
dWU8U2Nyb2xsQW5pbWF0b3JHZW5lcmljPihzY3JvbGxhYmxlQXJlYSk7Ci19Ci0KLVNjcm9sbEFu
aW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljKFNjcm9sbGFibGVBcmVhJiBzY3Jv
bGxhYmxlQXJlYSkKLSAgICA6IFNjcm9sbEFuaW1hdG9yKHNjcm9sbGFibGVBcmVhKQotewotfQot
Ci1TY3JvbGxBbmltYXRvckdlbmVyaWM6On5TY3JvbGxBbmltYXRvckdlbmVyaWMoKSA9IGRlZmF1
bHQ7Ci0KLS8vIEZJWE1FOiBQdXNoIHRoaXMgaW50byB0aGUgYmFzZSBjbGFzcyBzbyB0aGF0IFNj
cm9sbEFuaW1hdG9yR2VuZXJpYyBjYW4gYmUgcmVtb3ZlZC4KLWJvb2wgU2Nyb2xsQW5pbWF0b3JH
ZW5lcmljOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQp
Ci17Ci0gICAgaWYgKG1fc2Nyb2xsQ29udHJvbGxlci5wcm9jZXNzV2hlZWxFdmVudEZvcktpbmV0
aWNTY3JvbGxpbmcoZXZlbnQpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHJldHVybiBT
Y3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudChldmVudCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
U2Nyb2xsQW5pbWF0b3JHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
ZTVmZGYyZjkzMmEzYWM0MDBlMDM1ZDEzNmY1YjBhZDJlMzlkYWUyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dl
bmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDE2IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
bmNsdWRlICJTY3JvbGxBbmltYXRvci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IFNjcm9sbEFuaW1hdGlvbjsKLQotY2xhc3MgU2Nyb2xsQW5pbWF0b3JHZW5lcmljIGZpbmFsIDog
cHVibGljIFNjcm9sbEFuaW1hdG9yIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBTY3JvbGxBbmlt
YXRvckdlbmVyaWMoU2Nyb2xsYWJsZUFyZWEmKTsKLSAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRv
ckdlbmVyaWMoKTsKLQotICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmKSBmaW5hbDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440186</attachid>
            <date>2021-10-05 02:27:07 -0700</date>
            <delta_ts>2021-10-05 06:57:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230953-20211005102705.patch</filename>
            <type>text/plain</type>
            <size>49120</size>
            <attacher name="Chris Lord">clord</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmViMWI3MjY4ZjVlODk5
N2M5MWZiNzkwNmI2M2RjYmM5MTM5NjkwZC4uYjc0MDYzOTg1MDUwYjg1YjA5YzM3ODVmNWRmOTc0
NGRhZDI4MDlkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIxLTEwLTA0ICBDaHJp
cyBMb3JkICA8Y2xvcmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXVtXUEVdIFJFR1JFU1NJ
T046IEFzeW5jIHNjcm9sbGluZyBqdW1wcyB0byB0aGUgdG9wIG9mIHRoZSBwYWdlIHVudGlsIGtl
eWJvYXJkLWluaXRpYXRlZCBwYWdpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMDk1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgbm9uLU1hYy9pT1MgYXN5bmMgc2Nyb2xsaW5nIHBh
dGggdG8gd29yayBjb3JyZWN0bHkgYWZ0ZXIgdGhlCisgICAgICAgIHNjcm9sbGluZyByZWZhY3Rv
ci4gVHJ5aW5nIHRvIHN1bW1hcmlzZSwgdGhpcyBpbXBsZW1lbnRzCisgICAgICAgIFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyIGluIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVO
aWNvc2lhCisgICAgICAgIGFuZCBtb3ZlcyBzbW9vdGggYW5kIGtpbmV0aWMgc2Nyb2xsaW5nIGFu
aW1hdGlvbnMgdG8KKyAgICAgICAgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIsIHRvIGJlIHNo
YXJlZCBieSBib3RoIHN5bmMgYW5kIGFzeW5jIHBhdGhzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cywgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cyAoaG9wZWZ1bGx5KS4KKworICAgICAgICAqIFBs
YXRmb3JtUGxheVN0YXRpb24uY21ha2U6CisgICAgICAgICogU291cmNlc0dUSy50eHQ6CisgICAg
ICAgICogU291cmNlc1dQRS50eHQ6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUJl
Zm9yZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVOaWNvc2lhOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4pOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5p
Y29zaWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZU5pY29zaWE6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmlj
b3NpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE6OnVwZGF0ZUZyb21TdGF0ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnVwZGF0ZVZpc2libGVMZW5ndGhzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNv
c2lhOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzdG9wU2Nyb2xsQW5pbWF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6
YW5pbWF0aW9uVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6Y3JlYXRlVGltZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnN0YXJ0QW5pbWF0
aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU5pY29zaWE6OnN0b3BBbmltYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6YWxsb3dzSG9y
aXpvbnRhbFNjcm9sbGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6YWxsb3dzVmVydGljYWxTY3JvbGxpbmcgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWE6OmltbWVkaWF0ZVNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphZGp1c3RTY3JvbGxQb3NpdGlvblRv
Qm91bmRzSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbE9mZnNldCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6d2lsbFN0
YXJ0U2Nyb2xsU25hcEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6ZGlkU3RvcFNjcm9sbFNuYXBBbmltYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5p
Y29zaWE6OnBhZ2VTY2FsZUZhY3RvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsRXh0ZW50cyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmlj
b3NpYTo6cmVzZXRDdXJyZW50UG9zaXRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFu
aW1hdGlvbktpbmV0aWMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290
aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTmljb3NpYTo6cGFnZVNjYWxlRmFjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxB
bmltYXRpb25EaWRVcGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbEFuaW1hdGlvbkRpZEVuZCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6
c3RhcnRUaW1lcklmTmVjZXNzYXJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oOgorICAgICAgICAqIHBs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpyZXRhcmdl
dFJ1bm5pbmdBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6Omhh
bmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnNjcm9s
bEFuaW1hdGlvbkVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnJldGFyZ2V0
QW5pbWF0ZWRTY3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yS2luZXRpY1Njcm9sbGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cmVnYXJnZXRBbmlt
YXRlZFNjcm9sbCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyQ2xpZW50OjpzY3JvbGxBbmltYXRpb25FbmFibGVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHA6IFJlbW92ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6U2Nyb2xsQW5pbWF0b3JHZW5lcmljKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6aGFuZGxlV2hl
ZWxFdmVudCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxBbmlt
YXRvckdlbmVyaWMuaDogUmVtb3ZlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisKIDIwMjEtMTAt
MDUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBO
ZWdhdGl2ZSBpbnRlZ2VycyBpbiBAZm9udC1wYWxldHRlLXZhbHVlcyBhcmUgaW52YWxpZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKaW5kZXggNWRkYzg3NDgyZmQ3NDc2
ZTUwMWYwODUxYWM4MjMwOWIzZGJhMGMzYS4uOWYxNTU5ZWMyZTVkOTJmNmUyZTI5NGFlZmQ0MGEy
ODI5NGVmM2FjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlv
bi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCkBA
IC0zNiw3ICszNiw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZv
cm0vZ2VuZXJpYy9LZXllZERlY29kZXJHZW5lcmljLmNwcAogICAgIHBsYXRmb3JtL2dlbmVyaWMv
S2V5ZWRFbmNvZGVyR2VuZXJpYy5jcHAKLSAgICBwbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1h
dG9yR2VuZXJpYy5jcHAKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybURpc3BsYXkuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0
CmluZGV4IGIwMWMwMDE4YWYwNWNkN2ZhYTBiMWRmNWJiMjNiMDFkYWY5NDcyNjkuLjNjZGYzZTgx
ZWUzNTM1MmM1OWY4M2JlMWI4YmNkY2RmMWQ3OWJmMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CkBA
IC03OSw3ICs3OSw2IEBAIHBsYXRmb3JtL2Fkd2FpdGEvVGhlbWVBZHdhaXRhLmNwcAogcGxhdGZv
cm0vZ2FtZXBhZC9tYW5ldHRlL01hbmV0dGVHYW1lcGFkLmNwcAogcGxhdGZvcm0vZ2FtZXBhZC9t
YW5ldHRlL01hbmV0dGVHYW1lcGFkUHJvdmlkZXIuY3BwCiAKLXBsYXRmb3JtL2dlbmVyaWMvU2Ny
b2xsQW5pbWF0b3JHZW5lcmljLmNwcAogcGxhdGZvcm0vZ2VuZXJpYy9TY3JvbGxiYXJzQ29udHJv
bGxlckdlbmVyaWMuY3BwCiAKIHBsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzV1BFLnR4dAppbmRleCBhOWEyNzkxNDE4MDE2OTkxZGIyNGQ1YmYwOWM5ZTUx
MGM4MDEzM2I4Li42NjMzYWExOGE5Y2Q4MTIxNmU2YzQ2YTdjNDIzN2YwMWExZTRiYmJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzV1BFLnR4dApAQCAtNjMsNyArNjMsNiBAQCBwbGF0Zm9ybS9Vc2VyQWdlbnRRdWly
a3MuY3BwCiBwbGF0Zm9ybS9hZHdhaXRhL1Njcm9sbGJhclRoZW1lQWR3YWl0YS5jcHAKIHBsYXRm
b3JtL2Fkd2FpdGEvVGhlbWVBZHdhaXRhLmNwcAogCi1wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFu
aW1hdG9yR2VuZXJpYy5jcHAKIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsYmFyc0NvbnRyb2xsZXJH
ZW5lcmljLmNwcAogCiBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZS5oCmluZGV4IGJhMGI3ZDAyMTdmYTQyMDYwNjA4MzE2ZmY1MjYwZTJlMTM5
ZjJmOWEuLjljMWJhNmIyZjEwM2Q0YzQ0NTU5MjUwYzU3NjYwYTExM2IxNDVlZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUuaApAQCAtNDMsNiArNDMsOSBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlTm9kZSB7CiAgICAg
ZnJpZW5kIGNsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU7CiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIGZyaWVuZCBjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTWFjOworI2VuZGlmCisjaWYgVVNFKE5JQ09TSUEpCisgICAgZnJpZW5kIGNsYXNzIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOwogI2VuZGlmCiAgICAgZnJp
ZW5kIGNsYXNzIFNjcm9sbGluZ1RyZWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU5pY29z
aWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKaW5kZXggZjFlNzNkNGY0MzEzMWU1NjE4
YTBjNTFjZDI3YWNjYmMyNzlmMTc3MS4uMDMyNTYwNTFlNmFiYzQ5NDk5NjdmODZmY2VmMzY1OTRj
ZjJhYjIxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTmljb3NpYS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlTmljb3NpYS5jcHAKQEAgLTgyLDYgKzgyLDggQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlTmljb3NpYTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBT
Y3IKICAgICAgICAgYXV0byogbGF5ZXIgPSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxh
eWVyKj4oc2Nyb2xsaW5nU3RhdGVOb2RlLmZvb3RlckxheWVyKCkpOwogICAgICAgICBtX2Zvb3Rl
ckxheWVyID0gZG93bmNhc3Q8Tmljb3NpYTo6Q29tcG9zaXRpb25MYXllcj4obGF5ZXIpOwogICAg
IH0KKworICAgIG1fZGVsZWdhdGUudXBkYXRlRnJvbVN0YXRlTm9kZShzY3JvbGxpbmdTdGF0ZU5v
ZGUpOwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVOaWNvc2lhOjpj
b21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBzdGF0ZU5v
ZGUpCkBAIC05NSw3ICs5Nyw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZU5pY29zaWE6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvCiAgICAgICAgIHN0
b3BTY3JvbGxBbmltYXRpb25zKCk7CiAgICAgICAgIGNvbnN0IGF1dG8mIHJlcXVlc3RlZFNjcm9s
bERhdGEgPSBzY3JvbGxpbmdTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsRGF0YSgpOwogICAgICAg
ICBzY3JvbGxUbyhyZXF1ZXN0ZWRTY3JvbGxEYXRhLnNjcm9sbFBvc2l0aW9uLCByZXF1ZXN0ZWRT
Y3JvbGxEYXRhLnNjcm9sbFR5cGUsIHJlcXVlc3RlZFNjcm9sbERhdGEuY2xhbXBpbmcpOwotICAg
ICAgICBtX2RlbGVnYXRlLnJlc2V0Q3VycmVudFBvc2l0aW9uKCk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29z
aWEuY3BwCmluZGV4IGM0NzRjNDgyMDBhMTVmMjI3MjU5YzhmNDE0ZTQxMDI1M2U1MDBkYTMuLmYy
YWUwMzNkMGQ2YjUwZmQ1OTk3YzFlYjhlODI0OWNmYzU0MDA3YjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5pY29zaWEuY3BwCkBA
IC01Niw3ICs1Niw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZU5p
Y29zaWE6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTCiAgICAgICAgIHN0b3BTY3Jv
bGxBbmltYXRpb25zKCk7CiAgICAgICAgIGNvbnN0IGF1dG8mIHJlcXVlc3RlZFNjcm9sbERhdGEg
PSBvdmVyZmxvd1N0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxEYXRhKCk7CiAgICAgICAgIHNjcm9s
bFRvKHJlcXVlc3RlZFNjcm9sbERhdGEuc2Nyb2xsUG9zaXRpb24sIHJlcXVlc3RlZFNjcm9sbERh
dGEuc2Nyb2xsVHlwZSwgcmVxdWVzdGVkU2Nyb2xsRGF0YS5jbGFtcGluZyk7Ci0gICAgICAgIG1f
ZGVsZWdhdGUucmVzZXRDdXJyZW50UG9zaXRpb24oKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAK
aW5kZXggMGZiNTM4ZmM2ODBhYWU0MjYyZGVkNTliYzRmY2RlODBkNmQyYmU4OC4uOWQzOGI4YmE4
OWU1NjliMWZkMmEwNzI5YTEzMDYwMTAxNTZhNTYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlTmljb3NpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3Np
YS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAKQEAgLTQyLDIw
ICs0MiwyNSBAQCBjbGFzcyBTY3JvbGxBbmltYXRpb25LaW5ldGljOwogCiBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU5pY29zaWEoU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ05vZGUs
IGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKQogICAgIDogU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZShzY3JvbGxpbmdOb2RlKQorICAgICwgbV9zY3JvbGxDb250cm9sbGVyKCp0
aGlzKQogICAgICwgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQoc2Nyb2xsQW5pbWF0b3JFbmFibGVk
KQotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykgfHwgRU5BQkxFKFNNT09USF9TQ1JPTExJ
TkcpCi0gICAgLCBtX2FuaW1hdGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJlNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphbmltYXRpb25UaW1lckZp
cmVkKQotI2VuZGlmCiB7Ci0jaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKSB8fCBFTkFCTEUo
U01PT1RIX1NDUk9MTElORykKLSNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQotICAgIG1fYW5pbWF0
aW9uVGltZXIuc2V0UHJpb3JpdHkoV1RGOjpSdW5Mb29wU291cmNlUHJpb3JpdHk6OkRpc3BsYXlS
ZWZyZXNoTW9uaXRvclRpbWVyKTsKLSNlbmRpZgotI2VuZGlmICAgIAogfQogCiBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6flNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhKCkgPSBkZWZhdWx0OwogCit2b2lkIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjp1cGRhdGVGcm9tU3RhdGVOb2RlKGNvbnN0IFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgc2Nyb2xsaW5nU3RhdGVOb2RlKQoreworICAgIGlmIChz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6
UHJvcGVydHk6OlNuYXBPZmZzZXRzSW5mbykpCisgICAgICAgIG1fc2Nyb2xsQ29udHJvbGxlci5z
ZXRTbmFwT2Zmc2V0c0luZm8oc2Nyb2xsaW5nU3RhdGVOb2RlLnNuYXBPZmZzZXRzSW5mbygpLmNv
bnZlcnRVbml0czxMYXlvdXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8+KCkpOworCisgICAgaWYgKHNj
cm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQ
cm9wZXJ0eTo6Q3VycmVudEhvcml6b250YWxTbmFwT2Zmc2V0SW5kZXgpKQorICAgICAgICBtX3Nj
cm9sbENvbnRyb2xsZXIuc2V0QWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVu
dEF4aXM6Okhvcml6b250YWwsIHNjcm9sbGluZ1N0YXRlTm9kZS5jdXJyZW50SG9yaXpvbnRhbFNu
YXBQb2ludEluZGV4KCkpOworCisgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpQcm9wZXJ0eTo6Q3VycmVudFZlcnRpY2FsU25h
cE9mZnNldEluZGV4KSkKKyAgICAgICAgbV9zY3JvbGxDb250cm9sbGVyLnNldEFjdGl2ZVNjcm9s
bFNuYXBJbmRleEZvckF4aXMoU2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgc2Nyb2xsaW5nU3Rh
dGVOb2RlLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpOworfQorCiBzdGQ6OnVuaXF1
ZV9wdHI8Tmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6VXBkYXRlU2NvcGU+IFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpjcmVhdGVVcGRhdGVTY29wZSgpCiB7CiAg
ICAgYXV0byogc2Nyb2xsTGF5ZXIgPSBzdGF0aWNfY2FzdDxOaWNvc2lhOjpQbGF0Zm9ybUxheWVy
Kj4oc2Nyb2xsaW5nTm9kZSgpLnNjcm9sbENvbnRhaW5lckxheWVyKCkpOwpAQCAtNjcsMjA1ICs3
MiwxMTQgQEAgc3RkOjp1bmlxdWVfcHRyPE5pY29zaWE6OlNjZW5lSW50ZWdyYXRpb246OlVwZGF0
ZVNjb3BlPiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm8KICAgICByZXR1cm4gY29tcG9zaXRpb25M
YXllci5jcmVhdGVVcGRhdGVTY29wZSgpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpyZXNldEN1cnJlbnRQb3NpdGlvbigpCit2b2lkIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjp1cGRhdGVWaXNpYmxlTGVuZ3Ro
cygpCiB7Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5p
bWF0aW9uKQotICAgICAgICBtX3Ntb290aEFuaW1hdGlvbi0+c3RvcCgpOwotI2VuZGlmCisgICAg
bV9zY3JvbGxDb250cm9sbGVyLmNvbnRlbnRzU2l6ZUNoYW5nZWQoKTsKIH0KIAotdm9pZCBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6dXBkYXRlVmlzaWJsZUxlbmd0
aHMoKQorV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVOaWNvc2lhOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYgd2hlZWxFdmVudCwgRXZlbnRUYXJnZXRpbmcgZXZlbnRUYXJnZXRpbmcpCiB7Ci0jaWYgRU5B
QkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAg
ICBtX3Ntb290aEFuaW1hdGlvbi0+dXBkYXRlU2Nyb2xsRXh0ZW50cygpOwotI2VuZGlmCisgICAg
aWYgKCFzY3JvbGxpbmdOb2RlKCkuY2FuSGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBldmVu
dFRhcmdldGluZykKKyAgICAgICAgfHwgIW1fc2Nyb2xsQ29udHJvbGxlci5oYW5kbGVXaGVlbEV2
ZW50KHdoZWVsRXZlbnQpKQorICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0
Ojp1bmhhbmRsZWQoKTsKKworICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6Omhh
bmRsZWQoKTsKIH0KIAotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKLXZvaWQgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFuaW1hdGlv
bktpbmV0aWMoKQordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3Np
YTo6c3RvcFNjcm9sbEFuaW1hdGlvbnMoKQogewotICAgIGlmIChtX2tpbmV0aWNBbmltYXRpb24p
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fa2luZXRpY0FuaW1hdGlvbiA9IG1ha2VVbmlxdWU8
U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oKnRoaXMpOwotICAgIHN0YXJ0VGltZXJJZk5lY2Vzc2Fy
eSgpOworICAgIG1fc2Nyb2xsQ29udHJvbGxlci5zdG9wQW5pbWF0ZWRTY3JvbGwoKTsKIH0KLSNl
bmRpZgogCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi12b2lkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgo
KQordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6YW5pbWF0
aW9uVGltZXJGaXJlZCgpCiB7Ci0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICBy
ZXR1cm47CisgICAgbV9zY3JvbGxDb250cm9sbGVyLmFuaW1hdGlvbkNhbGxiYWNrKE1vbm90b25p
Y1RpbWU6Om5vdygpKTsKK30KIAotICAgIG1fc21vb3RoQW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxT
Y3JvbGxBbmltYXRpb25TbW9vdGg+KCp0aGlzKTsKLSAgICBzdGFydFRpbWVySWZOZWNlc3Nhcnko
KTsKK3N0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlclRpbWVyPiBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6Y3JlYXRlVGltZXIoRnVuY3Rp
b248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIHJldHVybiBXVEY6Om1ha2VVbmlxdWU8U2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJUaW1lcj4oUnVuTG9vcDo6Y3VycmVudCgpLCBbZnVuY3Rp
b24gPSBXVEZNb3ZlKGZ1bmN0aW9uKSwgcHJvdGVjdGVkTm9kZSA9IFJlZiB7IHNjcm9sbGluZ05v
ZGUoKSB9XSB7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBwcm90ZWN0ZWROb2RlLT5zY3JvbGxp
bmdUcmVlKCkudHJlZUxvY2soKSB9OworICAgICAgICBmdW5jdGlvbigpOworICAgIH0pOwogfQot
I2VuZGlmCiAKLVdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQsIEV2ZW50VGFyZ2V0aW5nIGV2ZW50VGFyZ2V0aW5nKQordm9pZCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c3RhcnRBbmltYXRpb25D
YWxsYmFjayhTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciYpCiB7Ci0gICAgaWYgKCFzY3JvbGxp
bmdOb2RlKCkuY2FuSGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50LCBldmVudFRhcmdldGluZykp
Ci0gICAgICAgIHJldHVybiBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OnVuaGFuZGxlZCgpOwor
ICAgIGlmICghbV9hbmltYXRpb25UaW1lcikgeworICAgICAgICBtX2FuaW1hdGlvblRpbWVyID0g
V1RGOjptYWtlVW5pcXVlPFJ1bkxvb3A6OlRpbWVyPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVOaWNvc2lhPj4oUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmFuaW1hdGlvblRpbWVyRmlyZWQpOwogCi0g
ICAgYm9vbCBjYW5IYXZlSG9yaXpvbnRhbFNjcm9sbGJhciA9IHNjcm9sbGluZ05vZGUoKS5jYW5I
YXZlSG9yaXpvbnRhbFNjcm9sbGJhcigpOwotICAgIGJvb2wgY2FuSGF2ZVZlcnRpY2FsU2Nyb2xs
YmFyID0gc2Nyb2xsaW5nTm9kZSgpLmNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhcigpOwotI2lmIEVO
QUJMRShLSU5FVElDX1NDUk9MTElORykKLSAgICBlbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGlj
KCk7Ci0gICAgbV9raW5ldGljQW5pbWF0aW9uLT5hcHBlbmRUb1Njcm9sbEhpc3Rvcnkod2hlZWxF
dmVudCk7Ci0gICAgbV9raW5ldGljQW5pbWF0aW9uLT5zdG9wKCk7Ci0gICAgaWYgKHdoZWVsRXZl
bnQuaXNFbmRPZk5vbk1vbWVudHVtU2Nyb2xsKCkpIHsKLSAgICAgICAgbV9raW5ldGljQW5pbWF0
aW9uLT5zdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjdXJyZW50U2Nyb2xs
UG9zaXRpb24oKSwgbV9raW5ldGljQW5pbWF0aW9uLT5jb21wdXRlVmVsb2NpdHkoKSwgY2FuSGF2
ZUhvcml6b250YWxTY3JvbGxiYXIsIGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhcik7Ci0gICAgICAg
IG1fa2luZXRpY0FuaW1hdGlvbi0+Y2xlYXJTY3JvbGxIaXN0b3J5KCk7Ci0gICAgICAgIHJldHVy
biBXaGVlbEV2ZW50SGFuZGxpbmdSZXN1bHQ6OmhhbmRsZWQoKTsKLSAgICB9Ci0gICAgaWYgKHdo
ZWVsRXZlbnQuaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpKSB7Ci0gICAgICAgIG1f
a2luZXRpY0FuaW1hdGlvbi0+c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHko
Y3VycmVudFNjcm9sbFBvc2l0aW9uKCksIHdoZWVsRXZlbnQuc3dpcGVWZWxvY2l0eSgpLCBjYW5I
YXZlSG9yaXpvbnRhbFNjcm9sbGJhciwgY2FuSGF2ZVZlcnRpY2FsU2Nyb2xsYmFyKTsKLSAgICAg
ICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVhclNjcm9sbEhpc3RvcnkoKTsKLSAgICAgICAgcmV0
dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwotICAgIH0KKyNpZiBVU0Uo
R0xJQl9FVkVOVF9MT09QKQorICAgICAgICBtX2FuaW1hdGlvblRpbWVyLT5zZXRQcmlvcml0eShX
VEY6OlJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJlZnJlc2hNb25pdG9yVGltZXIpOwog
I2VuZGlmCi0KLSAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBzaGFyZSBjb2RlIHdpdGggU2Ny
b2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQoKSwgcGVyaGFwcyBieSBtb3ZpbmcgY29kZSBp
bnRvIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpoYW5kbGVXaGVlbEV2ZW50KCkuCi0gICAg
ZmxvYXQgZGVsdGFYID0gY2FuSGF2ZUhvcml6b250YWxTY3JvbGxiYXIgPyB3aGVlbEV2ZW50LmRl
bHRhWCgpIDogMDsKLSAgICBmbG9hdCBkZWx0YVkgPSBjYW5IYXZlVmVydGljYWxTY3JvbGxiYXIg
PyB3aGVlbEV2ZW50LmRlbHRhWSgpIDogMDsKLSAgICBpZiAoKGRlbHRhWCA8IDAgJiYgY3VycmVu
dFNjcm9sbFBvc2l0aW9uKCkueCgpID49IG1heGltdW1TY3JvbGxQb3NpdGlvbigpLngoKSkKLSAg
ICAgICAgfHwgKGRlbHRhWCA+IDAgJiYgY3VycmVudFNjcm9sbFBvc2l0aW9uKCkueCgpIDw9IG1p
bmltdW1TY3JvbGxQb3NpdGlvbigpLngoKSkpCi0gICAgICAgIGRlbHRhWCA9IDA7Ci0gICAgaWYg
KChkZWx0YVkgPCAwICYmIGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpLnkoKSA+PSBtYXhpbXVtU2Ny
b2xsUG9zaXRpb24oKS55KCkpCi0gICAgICAgIHx8IChkZWx0YVkgPiAwICYmIGN1cnJlbnRTY3Jv
bGxQb3NpdGlvbigpLnkoKSA8PSBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKS55KCkpKQotICAgICAg
ICBkZWx0YVkgPSAwOwotCi0gICAgaWYgKCFkZWx0YVggJiYgIWRlbHRhWSkKLSAgICAgICAgcmV0
dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6dW5oYW5kbGVkKCk7Ci0KLSAgICBpZiAod2hl
ZWxFdmVudC5ncmFudWxhcml0eSgpID09IFNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQpIHsKLSAgICAg
ICAgaWYgKGRlbHRhWCkgewotICAgICAgICAgICAgYm9vbCBuZWdhdGl2ZSA9IGRlbHRhWCA8IDA7
Ci0gICAgICAgICAgICBkZWx0YVggPSBTY3JvbGxiYXI6OnBhZ2VTdGVwRGVsdGEoc2Nyb2xsYWJs
ZUFyZWFTaXplKCkud2lkdGgoKSk7Ci0gICAgICAgICAgICBpZiAobmVnYXRpdmUpCi0gICAgICAg
ICAgICAgICAgZGVsdGFYID0gLWRlbHRhWDsKLSAgICAgICAgfQotICAgICAgICBpZiAoZGVsdGFZ
KSB7Ci0gICAgICAgICAgICBib29sIG5lZ2F0aXZlID0gZGVsdGFZIDwgMDsKLSAgICAgICAgICAg
IGRlbHRhWSA9IFNjcm9sbGJhcjo6cGFnZVN0ZXBEZWx0YShzY3JvbGxhYmxlQXJlYVNpemUoKS5o
ZWlnaHQoKSk7Ci0gICAgICAgICAgICBpZiAobmVnYXRpdmUpCi0gICAgICAgICAgICAgICAgZGVs
dGFZID0gLWRlbHRhWTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGRlbHRhWCA9IC1kZWx0YVg7
Ci0gICAgZGVsdGFZID0gLWRlbHRhWTsKLQotICAgIGlmICghc2Nyb2xsaW5nTm9kZSgpLnNuYXBP
ZmZzZXRzSW5mbygpLmlzRW1wdHkoKSkgewotICAgICAgICBmbG9hdCBzY2FsZSA9IHBhZ2VTY2Fs
ZUZhY3RvcigpOwotICAgICAgICBGbG9hdFBvaW50IG9yaWdpbmFsT2Zmc2V0ID0gTGF5b3V0UG9p
bnQoc2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRTY3JvbGxPZmZzZXQoKS54KCkgLyBzY2FsZSwgc2Ny
b2xsaW5nTm9kZSgpLmN1cnJlbnRTY3JvbGxPZmZzZXQoKS55KCkgLyBzY2FsZSk7Ci0gICAgICAg
IGF1dG8gbmV3T2Zmc2V0ID0gKHNjcm9sbGluZ05vZGUoKS5jdXJyZW50U2Nyb2xsT2Zmc2V0KCkg
KyBGbG9hdFNpemUoZGVsdGFYLCBkZWx0YVkpKTsKLSAgICAgICAgbmV3T2Zmc2V0LnNjYWxlKDEu
MCAvIHNjYWxlKTsKLQotICAgICAgICBhdXRvIG9mZnNldFggPSBzY3JvbGxpbmdOb2RlKCkuc25h
cE9mZnNldHNJbmZvKCkuY2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9u
dGFsLCBzY3JvbGxhYmxlQXJlYVNpemUoKSwgbmV3T2Zmc2V0LCBkZWx0YVgsIG9yaWdpbmFsT2Zm
c2V0LngoKSkuZmlyc3Q7Ci0gICAgICAgIGF1dG8gb2Zmc2V0WSA9IHNjcm9sbGluZ05vZGUoKS5z
bmFwT2Zmc2V0c0luZm8oKS5jbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXM6OlZlcnRp
Y2FsLCBzY3JvbGxhYmxlQXJlYVNpemUoKSwgbmV3T2Zmc2V0LCBkZWx0YVksIG9yaWdpbmFsT2Zm
c2V0LnkoKSkuZmlyc3Q7Ci0KLSAgICAgICAgZGVsdGFYID0gKG9mZnNldFggLSBvcmlnaW5hbE9m
ZnNldC54KCkpICogc2NhbGU7Ci0gICAgICAgIGRlbHRhWSA9IChvZmZzZXRZIC0gb3JpZ2luYWxP
ZmZzZXQueSgpKSAqIHNjYWxlOwogICAgIH0KIAotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5H
KQotICAgIGlmIChtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZCAmJiAhd2hlZWxFdmVudC5oYXNQcmVj
aXNlU2Nyb2xsaW5nRGVsdGFzKCkpIHsKLSAgICAgICAgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uU21v
b3RoKCk7Ci0gICAgICAgIGF1dG8gY3VycmVudE9mZnNldCA9IHNjcm9sbGluZ05vZGUoKS5jdXJy
ZW50U2Nyb2xsT2Zmc2V0KCk7Ci0gICAgICAgIGF1dG8gZGVzdGluYXRpb25PZmZzZXQgPSBjdXJy
ZW50T2Zmc2V0ICsgRmxvYXRTaXplIHsgZGVsdGFYLCBkZWx0YVkgfTsKLSAgICAgICAgbV9zbW9v
dGhBbmltYXRpb24tPnN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKGN1cnJlbnRPZmZz
ZXQsIGRlc3RpbmF0aW9uT2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGlu
Z1Jlc3VsdDo6aGFuZGxlZCgpOwotICAgIH0KLSNlbmRpZgorICAgIGlmIChtX2FuaW1hdGlvblRp
bWVyLT5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHVwZGF0ZVNjb3Bl
ID0gY3JlYXRlVXBkYXRlU2NvcGUoKTsKLSAgICBzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsQnkoeyBk
ZWx0YVgsIGRlbHRhWSB9KTsKKyAgICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBmcmFtZVJhdGUg
PSA2MDsKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgdGlja1RpbWUgPSAxX3MgLyBmcmFt
ZVJhdGU7CisgICAgbV9hbmltYXRpb25UaW1lci0+c3RhcnRSZXBlYXRpbmcodGlja1RpbWUpOwor
fQogCi0gICAgcmV0dXJuIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdDo6aGFuZGxlZCgpOwordm9p
ZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c3RvcEFuaW1hdGlv
bkNhbGxiYWNrKFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyJikKK3sKKyAgICBpZiAobV9hbmlt
YXRpb25UaW1lcikKKyAgICAgICAgbV9hbmltYXRpb25UaW1lci0+c3RvcCgpOwogfQogCi12b2lk
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzdG9wU2Nyb2xsQW5p
bWF0aW9ucygpCitib29sIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lh
OjphbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nKCkgY29uc3QKIHsKLSNpZiBFTkFCTEUoS0lORVRJ
Q19TQ1JPTExJTkcpCi0gICAgaWYgKG1fa2luZXRpY0FuaW1hdGlvbikgewotICAgICAgICBtX2tp
bmV0aWNBbmltYXRpb24tPnN0b3AoKTsKLSAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5jbGVh
clNjcm9sbEhpc3RvcnkoKTsKLSAgICB9Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9M
TElORykKLSAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgIG1fc21vb3RoQW5pbWF0
aW9uLT5zdG9wKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpIHx8IEVO
QUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIG1fYW5pbWF0aW9uVGltZXIuc3RvcCgpOwotI2Vu
ZGlmCisgICAgcmV0dXJuIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU6OmFsbG93
c0hvcml6b250YWxTY3JvbGxpbmcoKTsKIH0KIAotZmxvYXQgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWE6OnBhZ2VTY2FsZUZhY3RvcigpCitib29sIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygp
IGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGZvciBub24t
cm9vdCBmcmFtZXMsIGFuZCBvdmVyZmxvdz8KLSAgICAvLyBBbHNvLCB0aGlzIHNob3VsZCBub3Qg
aGF2ZSB0byBhY2Nlc3MgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS4KLSAgICByZXR1
cm4gaXM8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oc2Nyb2xsaW5nTm9kZSgpKSA/
Ci0gICAgICAgIGRvd25jYXN0PFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KHNjcm9s
bGluZ05vZGUoKSkuZnJhbWVTY2FsZUZhY3RvcigpIDogMS47CisgICAgcmV0dXJuIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU6OmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCk7CiB9
CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9s
bEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mIGFuaW1hdGlvbiwgY29uc3QgRmxv
YXRQb2ludCYgb2Zmc2V0KQordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
Tmljb3NpYTo6aW1tZWRpYXRlU2Nyb2xsQnkoY29uc3QgRmxvYXRTaXplJiBkZWx0YSwgU2Nyb2xs
Q2xhbXBpbmcgY2xhbXBpbmcpCiB7Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAg
aWYgKCZhbmltYXRpb24gPT0gbV9raW5ldGljQW5pbWF0aW9uLmdldCgpKSB7Ci0gICAgICAgIGlm
IChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zdG9w
KCk7Ci0gICAgfQotI2VuZGlmCiAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNyZWF0ZVVwZGF0ZVNj
b3BlKCk7Ci0KLSAgICAvLyBGSVhNRTogTmVlZCB0byBjb252ZXJ0IGFuIG9mZnNldCB0byBhIHBv
c2l0aW9uLgotICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxUbyhvZmZzZXQpOworICAgIHNjcm9s
bGluZ05vZGUoKS5zY3JvbGxCeShkZWx0YSwgY2xhbXBpbmcpOwogfQogCi12b2lkIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxBbmltYXRpb25EaWRFbmQo
U2Nyb2xsQW5pbWF0aW9uJikKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWE6OmFkanVzdFNjcm9sbFBvc2l0aW9uVG9Cb3VuZHNJZk5lY2Vzc2FyeSgpCiB7Cisg
ICAgRmxvYXRQb2ludCBzY3JvbGxQb3NpdGlvbiA9IGN1cnJlbnRTY3JvbGxQb3NpdGlvbigpOwor
ICAgIEZsb2F0UG9pbnQgY29uc3RyYWluZWRQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uLmNvbnN0
cmFpbmVkQmV0d2VlbihtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSwgbWF4aW11bVNjcm9sbFBvc2l0
aW9uKCkpOworICAgIGltbWVkaWF0ZVNjcm9sbEJ5KGNvbnN0cmFpbmVkUG9zaXRpb24gLSBzY3Jv
bGxQb3NpdGlvbik7CiB9CiAKLVNjcm9sbEV4dGVudHMgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0
aW9uJikKK0Zsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29z
aWE6OnNjcm9sbE9mZnNldCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsKLSAgICAgICAgc2Nyb2xs
aW5nTm9kZSgpLnRvdGFsQ29udGVudHNTaXplKCksCi0gICAgICAgIHNjcm9sbGluZ05vZGUoKS5z
Y3JvbGxhYmxlQXJlYVNpemUoKQotICAgIH07CisgICAgcmV0dXJuIFNjcm9sbGFibGVBcmVhOjpz
Y3JvbGxPZmZzZXRGcm9tUG9zaXRpb24oY3VycmVudFNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbE9y
aWdpbigpKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmlj
b3NpYTo6c3RhcnRUaW1lcklmTmVjZXNzYXJ5KCkKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWE6OndpbGxTdGFydFNjcm9sbFNuYXBBbmltYXRpb24oKQogewot
I2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykgfHwgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcp
Ci0gICAgaWYgKG1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgIHNjcm9sbGluZ05vZGUoKS5zZXRTY3JvbGxTbmFwSW5Qcm9ncmVzcyh0cnVlKTsKK30KIAot
ICAgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGZyYW1lUmF0ZSA9IDYwOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgU2Vjb25kcyB0aWNrVGltZSA9IDFfcyAvIGZyYW1lUmF0ZTsKLSAgICAKLSAgICBt
X2FuaW1hdGlvblRpbWVyLnN0YXJ0UmVwZWF0aW5nKHRpY2tUaW1lKTsKLSNlbmRpZgordm9pZCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6ZGlkU3RvcFNjcm9sbFNu
YXBBbmltYXRpb24oKQoreworICAgIHNjcm9sbGluZ05vZGUoKS5zZXRTY3JvbGxTbmFwSW5Qcm9n
cmVzcyhmYWxzZSk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWE6OmFuaW1hdGlvblRpbWVyRmlyZWQoKQorZmxvYXQgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0CiB7Ci0jaWYg
RU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKSB8fCBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAg
ICBhdXRvIG5vdyA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotI2VuZGlmCisgICAgLy8gRklYTUU6
IFdoYXQgc2hvdWxkIHRoaXMgcmV0dXJuIGZvciBub24tcm9vdCBmcmFtZXMsIGFuZCBvdmVyZmxv
dz8KKyAgICAvLyBBbHNvLCB0aGlzIHNob3VsZCBub3QgaGF2ZSB0byBhY2Nlc3MgU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS4KKyAgICByZXR1cm4gaXM8U2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZT4oc2Nyb2xsaW5nTm9kZSgpKSA/CisgICAgICAgIGRvd25jYXN0PFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KHNjcm9sbGluZ05vZGUoKSkuZnJhbWVTY2FsZUZh
Y3RvcigpIDogMS47Cit9CiAKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAgaWYg
KG1fa2luZXRpY0FuaW1hdGlvbikKLSAgICAgICAgbV9raW5ldGljQW5pbWF0aW9uLT5zZXJ2aWNl
QW5pbWF0aW9uKG5vdyk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAg
ICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5zZXJ2
aWNlQW5pbWF0aW9uKG5vdyk7Ci0jZW5kaWYgICAgCitTY3JvbGxFeHRlbnRzIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxFeHRlbnRzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4geworICAgICAgICBzY3JvbGxpbmdOb2RlKCkudG90YWxDb250ZW50c1NpemUo
KSwKKyAgICAgICAgc2Nyb2xsaW5nTm9kZSgpLnNjcm9sbGFibGVBcmVhU2l6ZSgpCisgICAgfTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
Tmljb3NpYS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5oCmluZGV4IDc0NzQyYzFmZTNhODY4
NmFlNTMyMTRhMmRhZjBkYWEyMmI5NWVlYjMuLjJlNGFhYjFiZThiYTdlZmNjNDJmNmExYWY1ZWQ5
ZTAyNTFkNGQzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25p
Y29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhLmgKQEAgLTMyLDY4ICszMiw1NyBAQAogCiAjaW5jbHVkZSAi
Tmljb3NpYVBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJTY3JvbGxBbmltYXRpb24uaCIKKyNp
bmNsdWRlICJTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9sbGlu
Z1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgiCiAjaW5jbHVkZSAiVGhyZWFkZWRTY3JvbGxp
bmdUcmVlLmgiCi0KLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0jaW5jbHVkZSAiU2Ny
b2xsQW5pbWF0aW9uS2luZXRpYy5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9M
TElORykKLSNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25TbW9vdGguaCIKLSNlbmRpZgotCi0jaWYg
RU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKSB8fCBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKICNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBhIFNjcm9sbEFuaW1hdGlvbkNsaWVudC4KLWNs
YXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhIDogcHVibGljIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUsIHB1YmxpYyBTY3JvbGxBbmltYXRpb25D
bGllbnQgeworY2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEg
OiBwdWJsaWMgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZSwgcHVibGljIFNjcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYShTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZSYsIGJvb2wgc2Nyb2xsQW5pbWF0b3JFbmFibGVkKTsKICAgICB2aXJ0dWFsIH5TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYSgpOwogCisgICAgdm9pZCB1cGRh
dGVGcm9tU3RhdGVOb2RlKGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYpOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxOaWNvc2lhOjpTY2VuZUludGVncmF0aW9uOjpVcGRhdGVTY29wZT4g
Y3JlYXRlVXBkYXRlU2NvcGUoKTsKLSAgICB2b2lkIHJlc2V0Q3VycmVudFBvc2l0aW9uKCk7CiAg
ICAgdm9pZCB1cGRhdGVWaXNpYmxlTGVuZ3RocygpOwogICAgIFdoZWVsRXZlbnRIYW5kbGluZ1Jl
c3VsdCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYsIEV2ZW50VGFy
Z2V0aW5nKTsKICAgICB2b2lkIHN0b3BTY3JvbGxBbmltYXRpb25zKCk7CiAKIHByaXZhdGU6Ci0g
ICAgYm9vbCBtX3Njcm9sbEFuaW1hdG9yRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgZmxvYXQgcGFn
ZVNjYWxlRmFjdG9yKCk7CisgICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVkKCk7CiAKLSNpZiBF
TkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAgdm9pZCBlbnN1cmVTY3JvbGxBbmltYXRpb25L
aW5ldGljKCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKLSAgICB2b2lk
IGVuc3VyZVNjcm9sbEFuaW1hdGlvblNtb290aCgpOwotI2VuZGlmCisgICAgLy8gU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXJDbGllbnQuCisgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyVGltZXI+IGNyZWF0ZVRpbWVyKEZ1bmN0aW9uPHZvaWQoKT4mJikgZmlu
YWw7CiAKLSAgICB2b2lkIGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHN0YXJ0VGlt
ZXJJZk5lY2Vzc2FyeSgpOwotCi0gICAgLy8gU2Nyb2xsQW5pbWF0aW9uQ2xpZW50Ci0gICAgdm9p
ZCBzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwgY29uc3QgRmxvYXRQ
b2ludCYgY3VycmVudFBvc2l0aW9uKSBmaW5hbDsKLSAgICB2b2lkIHNjcm9sbEFuaW1hdGlvbkRp
ZEVuZChTY3JvbGxBbmltYXRpb24mKSBmaW5hbDsKLSAgICBTY3JvbGxFeHRlbnRzIHNjcm9sbEV4
dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikgZmluYWw7Ci0KLSAgICAvLyBGSVhN
RTogVGhlc2UgYW5pbWF0aW9ucyBzaG91bGQgbm90IGxpdmUgaGVyZS4gVGhleSBuZWVkIHRvIGJl
IG1hbmFnZWQgYnkgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIsCi0gICAgLy8gdG8gYmUgY29v
cmRpbmF0ZWQgd2l0aCBvdGhlciBraW5kcyBvZiBzY3JvbGwgYW5pbWF0aW9ucywgYW5kIGJlIHJl
ZmVyZW5jZWQgYnkgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6Om1fY3VycmVudEFuaW1hdGlv
bi4KLSAgICAKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAgc3RkOjp1bmlxdWVf
cHRyPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+IG1fa2luZXRpY0FuaW1hdGlvbjsKLSNlbmRpZgot
I2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxB
bmltYXRpb25TbW9vdGg+IG1fc21vb3RoQW5pbWF0aW9uOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUo
S0lORVRJQ19TQ1JPTExJTkcpIHx8IEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIC8vIEZJ
WE1FOiBXaGVuIHRoZSBhYm92ZSB0d28gYW5pbWF0aW9ucyBhcmUgcmVtb3ZlZCwgdGhpcyB0aW1l
ciBjYW4gYmUgcmVtb3ZlZC4KLSAgICBSdW5Mb29wOjpUaW1lcjxTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlTmljb3NpYT4gbV9hbmltYXRpb25UaW1lcjsKLSNlbmRpZgorICAgIHZv
aWQgc3RhcnRBbmltYXRpb25DYWxsYmFjayhTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciYpIGZp
bmFsOworICAgIHZvaWQgc3RvcEFuaW1hdGlvbkNhbGxiYWNrKFNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyJikgZmluYWw7CisKKyAgICBib29sIGFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSBj
b25zdCBmaW5hbDsKKyAgICBib29sIGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgY29uc3QgZmlu
YWw7CisKKyAgICB2b2lkIHNldFNjcm9sbEJlaGF2aW9yU3RhdHVzKFNjcm9sbEJlaGF2aW9yU3Rh
dHVzIHN0YXR1cykgZmluYWwgeyBtX3Njcm9sbEJlaGF2aW9yU3RhdHVzID0gc3RhdHVzOyB9Cisg
ICAgU2Nyb2xsQmVoYXZpb3JTdGF0dXMgc2Nyb2xsQmVoYXZpb3JTdGF0dXMoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3Njcm9sbEJlaGF2aW9yU3RhdHVzOyB9CisKKyAgICB2b2lkIGltbWVkaWF0
ZVNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYsIFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBp
bmc6OkNsYW1wZWQpIGZpbmFsOworCisgICAgdm9pZCBhZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91
bmRzSWZOZWNlc3NhcnkoKSBmaW5hbDsKKworICAgIEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0KCkg
Y29uc3QgZmluYWw7CisgICAgdm9pZCB3aWxsU3RhcnRTY3JvbGxTbmFwQW5pbWF0aW9uKCkgZmlu
YWw7CisgICAgdm9pZCBkaWRTdG9wU2Nyb2xsU25hcEFuaW1hdGlvbigpIGZpbmFsOworICAgIGZs
b2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IGZpbmFsOworICAgIFNjcm9sbEV4dGVudHMgc2Ny
b2xsRXh0ZW50cygpIGNvbnN0IGZpbmFsOworCisgICAgYm9vbCBzY3JvbGxBbmltYXRpb25FbmFi
bGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zY3JvbGxBbmltYXRvckVuYWJsZWQ7IH0KKwor
ICAgIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyIG1fc2Nyb2xsQ29udHJvbGxlcjsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UnVuTG9vcDo6VGltZXI8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU5pY29zaWE+PiBtX2FuaW1hdGlvblRpbWVyOworICAgIFNjcm9sbEJlaGF2aW9yU3Rh
dHVzIG1fc2Nyb2xsQmVoYXZpb3JTdGF0dXMgeyBTY3JvbGxCZWhhdmlvclN0YXR1czo6Tm90SW5B
bmltYXRpb24gfTsKKworICAgIGJvb2wgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQgeyBmYWxzZSB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCmluZGV4IGQ0MzAyYjM3ODc4MWVmNTQ4Njlh
MDE2OGVjNmU5ZGU0NDEyMTQzODkuLjM3N2JkNTJiZjVmNjM5ODBmNGQxYjY3YWY5OGUxNmJiN2Mw
YmZjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlv
bktpbmV0aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25L
aW5ldGljLmgKQEAgLTYzLDE1ICs2MywxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGFydEFuaW1h
dGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zm
c2V0LCBjb25zdCBGbG9hdFNpemUmIHZlbG9jaXR5LCBib29sIG1heUhTY3JvbGwsIGJvb2wgbWF5
VlNjcm9sbCk7CiAgICAgYm9vbCByZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBv
aW50JiBuZXdPZmZzZXQpIGZpbmFsOwogCi0gICAgLy8gRklYTUU6IG9ubHkgcHVibGljIGZvciBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS4KLSAgICB2b2lkIHNlcnZp
Y2VBbmltYXRpb24oTW9ub3RvbmljVGltZSkgZmluYWw7Ci0KICAgICB2b2lkIGFwcGVuZFRvU2Ny
b2xsSGlzdG9yeShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKICAgICB2b2lkIGNsZWFyU2Ny
b2xsSGlzdG9yeSgpOwogCiAgICAgRmxvYXRTaXplIGNvbXB1dGVWZWxvY2l0eSgpOwogCiBwcml2
YXRlOgorICAgIHZvaWQgc2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSBmaW5hbDsKKwog
ICAgIHN0ZDo6b3B0aW9uYWw8UGVyQXhpc0RhdGE+IG1faG9yaXpvbnRhbERhdGE7CiAgICAgc3Rk
OjpvcHRpb25hbDxQZXJBeGlzRGF0YT4gbV92ZXJ0aWNhbERhdGE7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgKaW5kZXggOWQ1YzYzZDNjMmMy
M2QxYzcwNTE3MzQ3N2NhMmRlZWQzOWRjZmQ2YS4uZmVmMDQ4MWM2ZWIwYmNkM2I4YWFmZTQ2M2Qw
NjM2MjkwYWZlOWI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0aW9uU21vb3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uU21vb3RoLmgKQEAgLTQxLDE2ICs0MSwxNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdGFy
dEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihjb25zdCBGbG9hdFBvaW50JiBmcm9tT2Zmc2V0
LCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbk9mZnNldCk7CiAgICAgYm9vbCByZXRhcmdl
dEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdPZmZzZXQpIGZpbmFsOwogCi0g
ICAgLy8gRklYTUU6IG9ubHkgcHVibGljIGZvciBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYS4KLSAgICB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVudHMoKSBmaW5hbDsKLSAg
ICB2b2lkIHNlcnZpY2VBbmltYXRpb24oTW9ub3RvbmljVGltZSkgZmluYWw7CisgICAgY29uc3Qg
RmxvYXRQb2ludCYgZGVzdGluYXRpb25PZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uT2Zmc2V0OyB9CiAKIHByaXZhdGU6CiAKICAgICBib29sIHN0YXJ0T3JSZXRhcmdldEFuaW1h
dGlvbihjb25zdCBTY3JvbGxFeHRlbnRzJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb25P
ZmZzZXQpOwotICAgIAorCisgICAgdm9pZCB1cGRhdGVTY3JvbGxFeHRlbnRzKCkgZmluYWw7Cisg
ICAgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUpIGZpbmFsOworCiAgICAgU2Vj
b25kcyBkdXJhdGlvbkZyb21EaXN0YW5jZShjb25zdCBGbG9hdFNpemUmKSBjb25zdDsKLSAgICAK
KwogICAgIGJvb2wgYW5pbWF0ZVNjcm9sbChNb25vdG9uaWNUaW1lKTsKIAogICAgIFNlY29uZHMg
bV9kdXJhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApp
bmRleCAyZjE5MTgxYzE0MTFlZDY3MDQ2ZDgwMzgzNDYwMmI5NTg5YTZhYTEyLi5kYjZhNzcwYTM4
ZjVjMzQzNDcyMTUxNzkxOTYxM2YwYzAyMjA1ZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotI2lmICFFTkFCTEUoU01PT1RIX1NDUk9MTElORykgJiYgIVBMQVRGT1JNKElPU19G
QU1JTFkpICYmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShXUEUpCisjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUMpCiBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5p
bWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm9sbGFibGVB
cmVhKQogewogICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdG9yPihzY3JvbGxhYmxl
QXJlYSk7CkBAIC0xMjcsNyArMTI3LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsVG9Q
b3NpdGlvbldpdGhBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3UG9zaXRpb24KIHZvaWQg
U2Nyb2xsQW5pbWF0b3I6OnJldGFyZ2V0UnVubmluZ0FuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50
JiBuZXdQb3NpdGlvbikKIHsKICAgICBBU1NFUlQoc2Nyb2xsYWJsZUFyZWEoKS5jdXJyZW50U2Ny
b2xsQmVoYXZpb3JTdGF0dXMoKSA9PSBTY3JvbGxCZWhhdmlvclN0YXR1czo6SW5Ob25OYXRpdmVB
bmltYXRpb24pOwotICAgIG1fc2Nyb2xsQ29udHJvbGxlci5yZWdhcmdldEFuaW1hdGVkU2Nyb2xs
KG9mZnNldEZyb21Qb3NpdGlvbihuZXdQb3NpdGlvbikpOworICAgIG1fc2Nyb2xsQ29udHJvbGxl
ci5yZXRhcmdldEFuaW1hdGVkU2Nyb2xsKG9mZnNldEZyb21Qb3NpdGlvbihuZXdQb3NpdGlvbikp
OwogfQogCiBGbG9hdFBvaW50IFNjcm9sbEFuaW1hdG9yOjpvZmZzZXRGcm9tUG9zaXRpb24oY29u
c3QgRmxvYXRQb2ludCYgcG9zaXRpb24pIGNvbnN0CkBAIC0xODUsNiArMTg1LDggQEAgYm9vbCBT
Y3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
IGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxlIHRvIHJlbW92ZSB0aGlzIGNvZGUsIGJ1dCBN
YWMncyBoYW5kbGVXaGVlbEV2ZW50IHJlbGllcyBvbiB0aGlzIHNvbWVob3cuCiAgICAgU2Nyb2xs
YmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyID0gbV9zY3JvbGxhYmxlQXJlYS5ob3Jpem9udGFsU2Ny
b2xsYmFyKCk7CiAgICAgU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhciA9IG1fc2Nyb2xsYWJs
ZUFyZWEudmVydGljYWxTY3JvbGxiYXIoKTsKIApAQCAtMjI4LDYgKzIzMCw5IEBAIGJvb2wgU2Ny
b2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBl
KQogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBoYW5kbGVkOworI2Vsc2UKKyAgICByZXR1
cm4gbV9zY3JvbGxDb250cm9sbGVyLmhhbmRsZVdoZWVsRXZlbnQoZSk7CisjZW5kaWYKIH0KIAog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC00MDYsNiArNDExLDEzIEBAIHZvaWQgU2Nyb2xs
QW5pbWF0b3I6OnJlbW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29u
KFdoZWVsRXZlbnRUCiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKEdUSykgfHwgVVNFKE5JQ09T
SUEpCitib29sIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxBbmltYXRpb25FbmFibGVkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS5zY3JvbGxBbmltYXRvckVuYWJsZWQoKSAm
JiBwbGF0Zm9ybUFsbG93c1Njcm9sbEFuaW1hdGlvbigpOworfQorI2VuZGlmCisKIHZvaWQgU2Ny
b2xsQW5pbWF0b3I6OmNhbmNlbEFuaW1hdGlvbnMoKQogewogICAgIG1fc2Nyb2xsQ29udHJvbGxl
ci5zdG9wQW5pbWF0ZWRTY3JvbGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRvci5oCmluZGV4IGU1YmRkOGJlYjRhYTAzZTFlMjk5NzY1NDQ3NGI3M2RjZWVkNzIzMTkuLjY4
MjJlOGZhYTg1YTEzNGM2N2Y5ODFhYWYxOTYyOTkyNDZiMWJlOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaApAQCAtMTYxLDYgKzE2MSwxMCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24o
V2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZl
bnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIGNvbnN0IGZpbmFsOwogI2VuZGlmCiAKKyNpZiBQ
TEFURk9STShHVEspIHx8IFVTRShOSUNPU0lBKQorICAgIGJvb2wgc2Nyb2xsQW5pbWF0aW9uRW5h
YmxlZCgpIGNvbnN0IGZpbmFsOworI2VuZGlmCisKICAgICBzdGF0aWMgRmxvYXRTaXplIGRlbHRh
RnJvbVN0ZXAoU2Nyb2xsYmFyT3JpZW50YXRpb24sIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxp
ZXIpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKaW5kZXggZDBhMDY5ZjIzZjk5ZWNmYjY5MjQ2
NGNmZjQ2NTc4ZmNkZDEwNWJkNC4uYjJjMTdhOGQyNDg2OWU3OTMzYmJiYWVmNDBmNTVjZTIzNjFl
NjEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyLmNwcApAQCAtMzAsMTMgKzMwLDE2IEBACiAjaW5jbHVkZSAiTGF5b3V0
U2l6ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZl
bnQuaCIKLSNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25LaW5ldGljLmgiCiAjaW5jbHVkZSAiU2Ny
b2xsQW5pbWF0aW9uTW9tZW50dW0uaCIKICNpbmNsdWRlICJTY3JvbGxBbmltYXRpb25TbW9vdGgu
aCIKICNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIldoZWVsRXZlbnRUZXN0
TW9uaXRvci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAorI2lmIEVOQUJM
RShLSU5FVElDX1NDUk9MTElORykgJiYgIVBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJTY3JvbGxB
bmltYXRpb25LaW5ldGljLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIoU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXJDbGllbnQmIGNsaWVudCkKQEAgLTk5LDEyICsxMDIsMTIgQEAg
Ym9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVz
dGluYXRpb24oRmxvYXRQb2ludCBzdGEKICAgICByZXR1cm4gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0
aW9uU21vb3RoPigqbV9jdXJyZW50QW5pbWF0aW9uKS5zdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0
aW5hdGlvbihzdGFydE9mZnNldCwgZGVzdGluYXRpb25PZmZzZXQpOwogfQogCi1ib29sIFNjcm9s
bGluZ0VmZmVjdHNDb250cm9sbGVyOjpyZWdhcmdldEFuaW1hdGVkU2Nyb2xsKEZsb2F0UG9pbnQg
bmV3RGVzdGluYXRpb25PZmZzZXQpCitib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpy
ZXRhcmdldEFuaW1hdGVkU2Nyb2xsKEZsb2F0UG9pbnQgbmV3RGVzdGluYXRpb25PZmZzZXQpCiB7
CiAgICAgaWYgKCFpczxTY3JvbGxBbmltYXRpb25TbW9vdGg+KG1fY3VycmVudEFuaW1hdGlvbi5n
ZXQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBMT0dfV0lUSF9TVFJFQU0o
U2Nyb2xsQW5pbWF0aW9ucywgc3RyZWFtIDw8ICJTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciAi
IDw8IHRoaXMgPDwgIiByZWdhcmdldEFuaW1hdGVkU2Nyb2xsIHRvICIgPDwgbmV3RGVzdGluYXRp
b25PZmZzZXQpOworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxBbmltYXRpb25zLCBzdHJlYW0g
PDwgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyICIgPDwgdGhpcyA8PCAiIHJldGFyZ2V0QW5p
bWF0ZWRTY3JvbGwgdG8gIiA8PCBuZXdEZXN0aW5hdGlvbk9mZnNldCk7CiAKICAgICBBU1NFUlQo
bV9jdXJyZW50QW5pbWF0aW9uLT5pc0FjdGl2ZSgpKTsKICAgICByZXR1cm4gZG93bmNhc3Q8U2Ny
b2xsQW5pbWF0aW9uU21vb3RoPigqbV9jdXJyZW50QW5pbWF0aW9uKS5yZXRhcmdldEFjdGl2ZUFu
aW1hdGlvbihuZXdEZXN0aW5hdGlvbk9mZnNldCk7CkBAIC0xMTgsMzUgKzEyMSw2IEBAIHZvaWQg
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0b3BBbmltYXRlZFNjcm9sbCgpCiAgICAgICAg
IG1fY3VycmVudEFuaW1hdGlvbi0+c3RvcCgpOwogfQogCi1ib29sIFNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvcktpbmV0aWNTY3JvbGxpbmcoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiBldmVudCkKLXsKLSNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcp
Ci0gICAgaWYgKG1fY3VycmVudEFuaW1hdGlvbiAmJiAhaXM8U2Nyb2xsQW5pbWF0aW9uS2luZXRp
Yz4obV9jdXJyZW50QW5pbWF0aW9uLmdldCgpKSkgewotICAgICAgICBtX2N1cnJlbnRBbmltYXRp
b24tPnN0b3AoKTsKLSAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uID0gbnVsbHB0cjsKLSAgICB9
Ci0KLSAgICBpZiAoIW1fY3VycmVudEFuaW1hdGlvbikKLSAgICAgICAgbV9jdXJyZW50QW5pbWF0
aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25LaW5ldGljPigqdGhpcyk7Ci0KLSAgICBh
dXRvJiBraW5ldGljQW5pbWF0aW9uID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4o
Km1fY3VycmVudEFuaW1hdGlvbik7Ci0gICAga2luZXRpY0FuaW1hdGlvbi5hcHBlbmRUb1Njcm9s
bEhpc3RvcnkoZXZlbnQpOwotCi0gICAgaWYgKGV2ZW50LmlzRW5kT2ZOb25Nb21lbnR1bVNjcm9s
bCgpKSB7Ci0gICAgICAgIGtpbmV0aWNBbmltYXRpb24uc3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJ
bml0aWFsVmVsb2NpdHkobV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCksIGtpbmV0aWNBbmltYXRpb24u
Y29tcHV0ZVZlbG9jaXR5KCksIG1fY2xpZW50LmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSwg
bV9jbGllbnQuYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKSk7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLSAgICBpZiAoZXZlbnQuaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgp
KSB7Ci0gICAgICAgIGtpbmV0aWNBbmltYXRpb24uY2xlYXJTY3JvbGxIaXN0b3J5KCk7Ci0gICAg
ICAgIGtpbmV0aWNBbmltYXRpb24uc3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2Np
dHkobV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCksIGV2ZW50LnN3aXBlVmVsb2NpdHkoKSwgbV9jbGll
bnQuYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpLCBtX2NsaWVudC5hbGxvd3NWZXJ0aWNhbFNj
cm9sbGluZygpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oZXZlbnQpOwotI2VuZGlmCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCiBib29sIFNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydE1vbWVudHVtU2Nyb2xsV2l0aEluaXRpYWxW
ZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUm
IGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZ1
bmN0aW9uPEZsb2F0UG9pbnQoY29uc3QgRmxvYXRQb2ludCYpPiYgZGVzdGluYXRpb25Nb2RpZmll
cikKIHsKICAgICBpZiAobV9jdXJyZW50QW5pbWF0aW9uKSB7CkBAIC0yNDksNiArMjIzLDEyMSBA
QCBmbG9hdCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6YWRqdXN0ZWRTY3JvbGxEZXN0aW5h
dGlvbihTY3JvbGxFdmVudEF4aXMgYXhpcwogICAgIHJldHVybiBtX3Njcm9sbFNuYXBTdGF0ZS0+
YWRqdXN0ZWRTY3JvbGxEZXN0aW5hdGlvbihheGlzLCBkZXN0aW5hdGlvbk9mZnNldCwgdmVsb2Np
dHksIG9yaWdpbmFsT2Zmc2V0LCBtX2NsaWVudC5zY3JvbGxFeHRlbnRzKCksIG1fY2xpZW50LnBh
Z2VTY2FsZUZhY3RvcigpKTsKIH0KIAorI2lmICFQTEFURk9STShNQUMpCisjaWYgRU5BQkxFKEtJ
TkVUSUNfU0NST0xMSU5HKQorYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cHJvY2Vz
c1doZWVsRXZlbnRGb3JLaW5ldGljU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYg
ZXZlbnQpCit7CisgICAgaWYgKGlzPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KG1fY3VycmVudEFu
aW1hdGlvbi5nZXQoKSkpCisgICAgICAgIG1fY3VycmVudEFuaW1hdGlvbi0+c3RvcCgpOworCisg
ICAgaWYgKCFldmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpIHsKKyAgICAgICAgbV9z
Y3JvbGxIaXN0b3J5LmNsZWFyKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBtX3Njcm9sbEhpc3RvcnkuYXBwZW5kKGV2ZW50KTsKKworICAgIGlmICghZXZlbnQuaXNFbmRP
Zk5vbk1vbWVudHVtU2Nyb2xsKCkgJiYgIWV2ZW50LmlzVHJhbnNpdGlvbmluZ1RvTW9tZW50dW1T
Y3JvbGwoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fY3VycmVudEFuaW1h
dGlvbiAmJiAhaXM8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4obV9jdXJyZW50QW5pbWF0aW9uLmdl
dCgpKSkgeworICAgICAgICBtX2N1cnJlbnRBbmltYXRpb24tPnN0b3AoKTsKKyAgICAgICAgbV9j
dXJyZW50QW5pbWF0aW9uID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAoIW1fY3VycmVudEFu
aW1hdGlvbikKKyAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxB
bmltYXRpb25LaW5ldGljPigqdGhpcyk7CisKKyAgICBhdXRvJiBraW5ldGljQW5pbWF0aW9uID0g
ZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oKm1fY3VycmVudEFuaW1hdGlvbik7Cisg
ICAgd2hpbGUgKCFtX3Njcm9sbEhpc3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBraW5ldGljQW5p
bWF0aW9uLmFwcGVuZFRvU2Nyb2xsSGlzdG9yeShtX3Njcm9sbEhpc3RvcnkudGFrZUZpcnN0KCkp
OworCisgICAgaWYgKGV2ZW50LmlzRW5kT2ZOb25Nb21lbnR1bVNjcm9sbCgpKSB7CisgICAgICAg
IGtpbmV0aWNBbmltYXRpb24uc3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHko
bV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCksIGtpbmV0aWNBbmltYXRpb24uY29tcHV0ZVZlbG9jaXR5
KCksIG1fY2xpZW50LmFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSwgbV9jbGllbnQuYWxsb3dz
VmVydGljYWxTY3JvbGxpbmcoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBp
ZiAoZXZlbnQuaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpKSB7CisgICAgICAgIGtp
bmV0aWNBbmltYXRpb24uY2xlYXJTY3JvbGxIaXN0b3J5KCk7CisgICAgICAgIGtpbmV0aWNBbmlt
YXRpb24uc3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkobV9jbGllbnQuc2Ny
b2xsT2Zmc2V0KCksIGV2ZW50LnN3aXBlVmVsb2NpdHkoKSwgbV9jbGllbnQuYWxsb3dzSG9yaXpv
bnRhbFNjcm9sbGluZygpLCBtX2NsaWVudC5hbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKK2Jvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiB3aGVlbEV2
ZW50KQoreworI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKKyAgICBpZiAocHJvY2Vzc1do
ZWVsRXZlbnRGb3JLaW5ldGljU2Nyb2xsaW5nKHdoZWVsRXZlbnQpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyNlbmRpZgorCisgICAgYXV0byBzY3JvbGxPZmZzZXQgPSBtX2NsaWVudC5zY3JvbGxP
ZmZzZXQoKTsKKyAgICBmbG9hdCBkZWx0YVggPSBtX2NsaWVudC5hbGxvd3NIb3Jpem9udGFsU2Ny
b2xsaW5nKCkgPyB3aGVlbEV2ZW50LmRlbHRhWCgpIDogMDsKKyAgICBmbG9hdCBkZWx0YVkgPSBt
X2NsaWVudC5hbGxvd3NWZXJ0aWNhbFNjcm9sbGluZygpID8gd2hlZWxFdmVudC5kZWx0YVkoKSA6
IDA7CisgICAgYXV0byBleHRlbnRzID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50cygpOworICAgIGF1
dG8gbWluUG9zaXRpb24gPSBleHRlbnRzLm1pbmltdW1TY3JvbGxPZmZzZXQoKTsKKyAgICBhdXRv
IG1heFBvc2l0aW9uID0gZXh0ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCk7CisKKyAgICBpZiAo
KGRlbHRhWCA8IDAgJiYgc2Nyb2xsT2Zmc2V0LngoKSA+PSBtYXhQb3NpdGlvbi54KCkpCisgICAg
ICAgIHx8IChkZWx0YVggPiAwICYmIHNjcm9sbE9mZnNldC54KCkgPD0gbWluUG9zaXRpb24ueCgp
KSkKKyAgICAgICAgZGVsdGFYID0gMDsKKyAgICBpZiAoKGRlbHRhWSA8IDAgJiYgc2Nyb2xsT2Zm
c2V0LnkoKSA+PSBtYXhQb3NpdGlvbi55KCkpCisgICAgICAgIHx8IChkZWx0YVkgPiAwICYmIHNj
cm9sbE9mZnNldC55KCkgPD0gbWluUG9zaXRpb24ueSgpKSkKKyAgICAgICAgZGVsdGFZID0gMDsK
KworICAgIGlmICghZGVsdGFYICYmICFkZWx0YVkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICh3aGVlbEV2ZW50LmdyYW51bGFyaXR5KCkgPT0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVu
dCkgeworICAgICAgICBpZiAoZGVsdGFYKSB7CisgICAgICAgICAgICBib29sIG5lZ2F0aXZlID0g
ZGVsdGFYIDwgMDsKKyAgICAgICAgICAgIGRlbHRhWCA9IFNjcm9sbGJhcjo6cGFnZVN0ZXBEZWx0
YShleHRlbnRzLmNvbnRlbnRzU2l6ZS53aWR0aCgpKTsKKyAgICAgICAgICAgIGlmIChuZWdhdGl2
ZSkKKyAgICAgICAgICAgICAgICBkZWx0YVggPSAtZGVsdGFYOworICAgICAgICB9CisgICAgICAg
IGlmIChkZWx0YVkpIHsKKyAgICAgICAgICAgIGJvb2wgbmVnYXRpdmUgPSBkZWx0YVkgPCAwOwor
ICAgICAgICAgICAgZGVsdGFZID0gU2Nyb2xsYmFyOjpwYWdlU3RlcERlbHRhKGV4dGVudHMuY29u
dGVudHNTaXplLmhlaWdodCgpKTsKKyAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkKKyAgICAgICAg
ICAgICAgICBkZWx0YVkgPSAtZGVsdGFZOworICAgICAgICB9CisgICAgfQorCisgICAgZGVsdGFY
ID0gLWRlbHRhWDsKKyAgICBkZWx0YVkgPSAtZGVsdGFZOworCisgICAgaWYgKHNuYXBPZmZzZXRz
SW5mbygpICYmICFzbmFwT2Zmc2V0c0luZm8oKS0+aXNFbXB0eSgpKSB7CisgICAgICAgIGZsb2F0
IHNjYWxlID0gbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIGF1dG8gb3JpZ2lu
YWxPZmZzZXQgPSBMYXlvdXRQb2ludChzY3JvbGxPZmZzZXQueCgpIC8gc2NhbGUsIHNjcm9sbE9m
ZnNldC55KCkgLyBzY2FsZSk7CisgICAgICAgIGF1dG8gbmV3T2Zmc2V0ID0gTGF5b3V0UG9pbnQo
KHNjcm9sbE9mZnNldC54KCkgKyBkZWx0YVgpIC8gc2NhbGUsIChzY3JvbGxPZmZzZXQueSgpICsg
ZGVsdGFZKSAvIHNjYWxlKTsKKworICAgICAgICBhdXRvIG9mZnNldFggPSBzbmFwT2Zmc2V0c0lu
Zm8oKS0+Y2xvc2VzdFNuYXBPZmZzZXQoU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsLCBMYXlv
dXRTaXplKGV4dGVudHMuY29udGVudHNTaXplKSwgbmV3T2Zmc2V0LCBkZWx0YVgsIG9yaWdpbmFs
T2Zmc2V0LngoKSkuZmlyc3Q7CisgICAgICAgIGF1dG8gb2Zmc2V0WSA9IHNuYXBPZmZzZXRzSW5m
bygpLT5jbG9zZXN0U25hcE9mZnNldChTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBMYXlvdXRT
aXplKGV4dGVudHMuY29udGVudHNTaXplKSwgbmV3T2Zmc2V0LCBkZWx0YVksIG9yaWdpbmFsT2Zm
c2V0LnkoKSkuZmlyc3Q7CisKKyAgICAgICAgZGVsdGFYID0gKG9mZnNldFggLSBvcmlnaW5hbE9m
ZnNldC54KCkpICogc2NhbGU7CisgICAgICAgIGRlbHRhWSA9IChvZmZzZXRZIC0gb3JpZ2luYWxP
ZmZzZXQueSgpKSAqIHNjYWxlOworICAgIH0KKworI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5H
KQorICAgIGlmIChtX2NsaWVudC5zY3JvbGxBbmltYXRpb25FbmFibGVkKCkgJiYgIXdoZWVsRXZl
bnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygpKSB7CisgICAgICAgIGlmIChpczxTY3JvbGxB
bmltYXRpb25TbW9vdGg+KG1fY3VycmVudEFuaW1hdGlvbi5nZXQoKSkpIHsKKyAgICAgICAgICAg
IGF1dG8gbGFzdERlc3RpbmF0aW9uT2Zmc2V0ID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uU21v
b3RoPigqbV9jdXJyZW50QW5pbWF0aW9uKS5kZXN0aW5hdGlvbk9mZnNldCgpOworICAgICAgICAg
ICAgcmV0YXJnZXRBbmltYXRlZFNjcm9sbChsYXN0RGVzdGluYXRpb25PZmZzZXQgKyBGbG9hdFNp
emUgeyBkZWx0YVgsIGRlbHRhWSB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBzdGFy
dEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihzY3JvbGxPZmZzZXQsIHNjcm9sbE9mZnNldCAr
IEZsb2F0U2l6ZSB7IGRlbHRhWCwgZGVsdGFZIH0pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisjZW5kaWYKKworICAgIG1fY2xpZW50LmltbWVkaWF0ZVNjcm9sbEJ5KHsgZGVsdGFYLCBk
ZWx0YVkgfSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiB2b2lkIFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyOjp1cGRhdGVBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JDbGllbnRP
ZmZzZXQoKQogewogICAgIGlmICghdXNlc1Njcm9sbFNuYXAoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCmluZGV4IDYzNzc3
YTAxNDg1MTNhYjg2NWI2NTc3YmFmY2ZhYjIyNjE3MDNkNzcuLmJiOGFlMDVkMDZjMzJiMzBmYWM4
NTAzZjhkNWYxMTMyNjk5ZmY5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIlNjcm9sbFNuYXBPZmZzZXRzSW5mby5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAj
aW5jbHVkZSAiV2hlZWxFdmVudFRlc3RNb25pdG9yLmgiCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
IApAQCAtMTE2LDYgKzExNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcFNj
cm9sbFNuYXBBbmltYXRpb24oKSB7IH0KICAgICB2aXJ0dWFsIGZsb2F0IHBhZ2VTY2FsZUZhY3Rv
cigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFNjcm9sbEV4dGVudHMgc2Nyb2xsRXh0ZW50cygp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsQW5pbWF0aW9uRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIGNsYXNzIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyIDogcHVibGljIFNjcm9sbEFuaW1hdGlvbkNsaWVudCB7CkBAIC0xMzAsMTIgKzEzMiw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZCgpOwogCiAgICAgYm9vbCBz
dGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihGbG9hdFBvaW50IHN0YXJ0T2Zmc2V0LCBG
bG9hdFBvaW50IGRlc3RpbmF0aW9uT2Zmc2V0KTsKLSAgICBib29sIHJlZ2FyZ2V0QW5pbWF0ZWRT
Y3JvbGwoRmxvYXRQb2ludCBuZXdEZXN0aW5hdGlvbk9mZnNldCk7CisgICAgYm9vbCByZXRhcmdl
dEFuaW1hdGVkU2Nyb2xsKEZsb2F0UG9pbnQgbmV3RGVzdGluYXRpb25PZmZzZXQpOwogICAgIHZv
aWQgc3RvcEFuaW1hdGVkU2Nyb2xsKCk7CiAKLSAgICAvLyBGSVhNRTogSGFjayBmb3IgU2Nyb2xs
QW5pbWF0b3JHZW5lcmljLiBOZWVkcyBjbGVhbnVwLgotICAgIGJvb2wgcHJvY2Vzc1doZWVsRXZl
bnRGb3JLaW5ldGljU2Nyb2xsaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpOwotCiAgICAg
Ym9vbCBzdGFydE1vbWVudHVtU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBv
aW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29u
c3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IFdURjo6RnVuY3Rpb248RmxvYXRQb2lu
dChjb25zdCBGbG9hdFBvaW50Jik+JiBkZXN0aW5hdGlvbk1vZGlmaWVyKTsKIAogICAgIHZvaWQg
YmVnaW5LZXlib2FyZFNjcm9sbGluZygpOwpAQCAtMTYxLDEwICsxNjAsMTAgQEAgcHVibGljOgog
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5ldmVyIGNhbGxlZC4gV2UgbmV2ZXIgc2V0IG1fYWN0aXZl
U2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlIGJhY2sgdG8gZmFsc2UuCiAgICAgdm9pZCBzZXRTY3Jv
bGxTbmFwSW5kZXhEaWRDaGFuZ2UoYm9vbCBzdGF0ZSkgeyBtX2FjdGl2ZVNjcm9sbFNuYXBJbmRl
eERpZENoYW5nZSA9IHN0YXRlOyB9CiAKLSNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIGhhbmRsZWQuCiAgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRm
b3JtV2hlZWxFdmVudCYpOwogCisjaWYgUExBVEZPUk0oTUFDKQogICAgIHN0YXRpYyBGbG9hdFNp
emUgd2hlZWxEZWx0YUJpYXNpbmdUb3dhcmRzVmVydGljYWwoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50Jik7CiAKICAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdDsKQEAgLTIx
NSw3ICsyMTQsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0
ZShTY3JvbGxBbmltYXRpb24mLCBjb25zdCBGbG9hdFBvaW50JiAvKiBjdXJyZW50T2Zmc2V0ICov
KSBmaW5hbDsKICAgICB2b2lkIHNjcm9sbEFuaW1hdGlvbldpbGxTdGFydChTY3JvbGxBbmltYXRp
b24mKSBmaW5hbDsKICAgICB2b2lkIHNjcm9sbEFuaW1hdGlvbkRpZEVuZChTY3JvbGxBbmltYXRp
b24mKSBmaW5hbDsKLSAgICBTY3JvbGxFeHRlbnRzIHNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24o
U2Nyb2xsQW5pbWF0aW9uJikgIGZpbmFsOworICAgIFNjcm9sbEV4dGVudHMgc2Nyb2xsRXh0ZW50
c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24mKSBmaW5hbDsKKworI2lmIEVOQUJMRShLSU5F
VElDX1NDUk9MTElORykgJiYgIVBMQVRGT1JNKE1BQykKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYg
aGFuZGxlZC4KKyAgICBib29sIHByb2Nlc3NXaGVlbEV2ZW50Rm9yS2luZXRpY1Njcm9sbGluZyhj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKKworICAgIERlcXVlPFBsYXRmb3JtV2hlZWxFdmVu
dD4gbV9zY3JvbGxIaXN0b3J5OworI2VuZGlmCiAKICAgICBTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlckNsaWVudCYgbV9jbGllbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZTQzYTM2YTg0NzYzM2E0ZDgwODcyYmQzZTI1MWNkZjM5YjVjZDY0MS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDE2IElnYWxpYSBT
LkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yR2VuZXJpYy5oIgot
Ci0jaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1z
dGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Ny
b2xsYWJsZUFyZWEmIHNjcm9sbGFibGVBcmVhKQotewotICAgIHJldHVybiBtYWtlVW5pcXVlPFNj
cm9sbEFuaW1hdG9yR2VuZXJpYz4oc2Nyb2xsYWJsZUFyZWEpOwotfQotCi1TY3JvbGxBbmltYXRv
ckdlbmVyaWM6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYyhTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJs
ZUFyZWEpCi0gICAgOiBTY3JvbGxBbmltYXRvcihzY3JvbGxhYmxlQXJlYSkKLXsKLX0KLQotU2Ny
b2xsQW5pbWF0b3JHZW5lcmljOjp+U2Nyb2xsQW5pbWF0b3JHZW5lcmljKCkgPSBkZWZhdWx0Owot
Ci0vLyBGSVhNRTogUHVzaCB0aGlzIGludG8gdGhlIGJhc2UgY2xhc3Mgc28gdGhhdCBTY3JvbGxB
bmltYXRvckdlbmVyaWMgY2FuIGJlIHJlbW92ZWQuCi1ib29sIFNjcm9sbEFuaW1hdG9yR2VuZXJp
Yzo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQotewot
ICAgIGlmIChtX3Njcm9sbENvbnRyb2xsZXIucHJvY2Vzc1doZWVsRXZlbnRGb3JLaW5ldGljU2Ny
b2xsaW5nKGV2ZW50KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gU2Nyb2xs
QW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQoZXZlbnQpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9s
bEFuaW1hdG9yR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2VuZXJpYy9TY3Jv
bGxBbmltYXRvckdlbmVyaWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU1ZmRm
MmY5MzJhM2FjNDAwZTAzNWQxMzZmNWIwYWQyZTM5ZGFlMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmlj
L1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoYykgMjAxNiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiU2Nyb2xsQW5pbWF0b3IuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTY3Jv
bGxBbmltYXRpb247Ci0KLWNsYXNzIFNjcm9sbEFuaW1hdG9yR2VuZXJpYyBmaW5hbCA6IHB1Ymxp
YyBTY3JvbGxBbmltYXRvciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgU2Nyb2xsQW5pbWF0b3JH
ZW5lcmljKFNjcm9sbGFibGVBcmVhJik7Ci0gICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0b3JHZW5l
cmljKCk7Ci0KLSAgICBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50JikgZmluYWw7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>