<?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>235006</bug_id>
          
          <creation_ts>2022-01-08 11:00:29 -0800</creation_ts>
          <short_desc>[Cocoa] rVFC() isn&apos;t called for initial video load</short_desc>
          <delta_ts>2022-03-16 22:04:29 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>235072</blocked>
    
    <blocked>237286</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jean-yves.avenard</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1829236</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-08 11:00:29 -0800</bug_when>
    <thetext>[Cocoa] rVFC() isn&apos;t called for initial video load</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829240</commentid>
    <comment_count>1</comment_count>
      <attachid>448676</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-08 12:09:51 -0800</bug_when>
    <thetext>Created attachment 448676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829243</commentid>
    <comment_count>2</comment_count>
      <attachid>448678</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-08 12:16:59 -0800</bug_when>
    <thetext>Created attachment 448678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829245</commentid>
    <comment_count>3</comment_count>
      <attachid>448678</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-01-08 13:09:43 -0800</bug_when>
    <thetext>Comment on attachment 448678
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:693
&gt; +    if (m_videoOutput-&gt;hasImageForTime(PAL::toMediaTime([m_avPlayerItem currentTime])))

This isn’t new, but we might want to use m_cachedCurrentTime so we don’t block in [AVPlayerItem currentTime].

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:1440
&gt; +        m_currentImageChangedObserver = WTF::make_unique&lt;Observer&lt;void()&gt;&gt;([this] {

ASSERT(!m_currentImageChangedObserver)

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:2537
&gt; +    auto currentTime = PAL::toMediaTime([m_avPlayerItem currentTime]);

Ditto the comment above about using m_cachedCurrentTime

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:2542
&gt; +    auto entry = m_videoOutput-&gt;takeVideoFrameEntryForTime(currentTime);

`hasImageForTime` and `takeVideoFrameEntryForTime` both search the hashmap. Can you avoid doing this twice by having `takeVideoFrameEntryForTime` return a std::optional?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/QueuedVideoOutput.h:68
&gt; +    using ImageMap = std::map&lt;MediaTime, RetainPtr&lt;CVPixelBufferRef&gt;&gt;;

Can this be private?

&gt; LayoutTests/media/request-video-frame-seek.html:4
&gt; +    &lt;title&gt;request-video-frame-loadstart&lt;/title&gt;

s/loadstart/seek/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829249</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-08 14:09:56 -0800</bug_when>
    <thetext>(In reply to Eric Carlson from comment #3)
&gt; Comment on attachment 448678 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448678&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:693
&gt; &gt; +    if (m_videoOutput-&gt;hasImageForTime(PAL::toMediaTime([m_avPlayerItem currentTime])))
&gt; 
&gt; This isn’t new, but we might want to use m_cachedCurrentTime so we don’t
&gt; block in [AVPlayerItem currentTime].

Good idea.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:1440
&gt; &gt; +        m_currentImageChangedObserver = WTF::make_unique&lt;Observer&lt;void()&gt;&gt;([this] {
&gt; 
&gt; ASSERT(!m_currentImageChangedObserver)

Ok.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:2537
&gt; &gt; +    auto currentTime = PAL::toMediaTime([m_avPlayerItem currentTime]);
&gt; 
&gt; Ditto the comment above about using m_cachedCurrentTime

Ok.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:2542
&gt; &gt; +    auto entry = m_videoOutput-&gt;takeVideoFrameEntryForTime(currentTime);
&gt; 
&gt; `hasImageForTime` and `takeVideoFrameEntryForTime` both search the hashmap.
&gt; Can you avoid doing this twice by having `takeVideoFrameEntryForTime` return
&gt; a std::optional?

Actually, takeVideoFrameEntryForTime() already returns something nullable; so I think we can just use it in this method alone.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/QueuedVideoOutput.h:68
&gt; &gt; +    using ImageMap = std::map&lt;MediaTime, RetainPtr&lt;CVPixelBufferRef&gt;&gt;;
&gt; 
&gt; Can this be private?

Unfortunately no, because of the static, templated findImageForTime() method in the implementation file.

&gt; &gt; LayoutTests/media/request-video-frame-seek.html:4
&gt; &gt; +    &lt;title&gt;request-video-frame-loadstart&lt;/title&gt;
&gt; 
&gt; s/loadstart/seek/

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829252</commentid>
    <comment_count>5</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-08 14:14:46 -0800</bug_when>
    <thetext>(In reply to Eric Carlson from comment #3)
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:1440
&gt; &gt; +        m_currentImageChangedObserver = WTF::make_unique&lt;Observer&lt;void()&gt;&gt;([this] {
&gt; 
&gt; ASSERT(!m_currentImageChangedObserver)

Actually, this isn&apos;t really needed. If the current observer is destroyed, it won&apos;t be called by the QueuedVideoOutput, since it&apos;s held as a WeakPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829253</commentid>
    <comment_count>6</comment_count>
      <attachid>448682</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-08 14:18:13 -0800</bug_when>
    <thetext>Created attachment 448682
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829256</commentid>
    <comment_count>7</comment_count>
      <attachid>448684</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-08 14:48:25 -0800</bug_when>
    <thetext>Created attachment 448684
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829350</commentid>
    <comment_count>8</comment_count>
      <attachid>448716</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-09 11:38:38 -0800</bug_when>
    <thetext>Created attachment 448716
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829365</commentid>
    <comment_count>9</comment_count>
      <attachid>448720</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-09 14:29:32 -0800</bug_when>
    <thetext>Created attachment 448720
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829368</commentid>
    <comment_count>10</comment_count>
      <attachid>448721</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-09 17:29:25 -0800</bug_when>
    <thetext>Created attachment 448721
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829383</commentid>
    <comment_count>11</comment_count>
      <attachid>448724</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-10 00:03:24 -0800</bug_when>
    <thetext>Created attachment 448724
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829490</commentid>
    <comment_count>12</comment_count>
      <attachid>448758</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-10 09:05:40 -0800</bug_when>
    <thetext>Created attachment 448758
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829807</commentid>
    <comment_count>13</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-11 08:18:22 -0800</bug_when>
    <thetext>The remaining test failures on wk1 are in imported/w3c/web-platform-tests/video-rvfc/request-video-frame-callback-repeating.html, and the failure is caused by the AVPlayerLayer causing decoders to get reconfigured and a &quot;new&quot; frame for time 0 is sent. The request-video-frame-callback-repeating.html test fails because rVFC() returns VideoFrameMetadata with mediaTime of 0 twice in a row.  However, given that the underlying cause is that a new decoded frame is submitted for composition, this appears to just be an implementation quirk instead of a true failure.

I&apos;ll file a new bug to track re-enabling this test, but for now, my plan is to skip it on wk1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829820</commentid>
    <comment_count>14</comment_count>
      <attachid>448851</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-11 09:12:10 -0800</bug_when>
    <thetext>Created attachment 448851
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829870</commentid>
    <comment_count>15</comment_count>
      <attachid>448863</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-11 11:21:27 -0800</bug_when>
    <thetext>Created attachment 448863
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829873</commentid>
    <comment_count>16</comment_count>
      <attachid>448865</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-11 11:35:30 -0800</bug_when>
    <thetext>Created attachment 448865
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829900</commentid>
    <comment_count>17</comment_count>
      <attachid>448874</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-11 13:31:24 -0800</bug_when>
    <thetext>Created attachment 448874
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830343</commentid>
    <comment_count>18</comment_count>
      <attachid>448995</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-12 14:25:08 -0800</bug_when>
    <thetext>Created attachment 448995
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830388</commentid>
    <comment_count>19</comment_count>
      <attachid>449010</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-12 15:53:10 -0800</bug_when>
    <thetext>Created attachment 449010
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830591</commentid>
    <comment_count>20</comment_count>
      <attachid>449075</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-13 09:56:53 -0800</bug_when>
    <thetext>Created attachment 449075
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830624</commentid>
    <comment_count>21</comment_count>
      <attachid>449085</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-13 10:46:49 -0800</bug_when>
    <thetext>Created attachment 449085
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830655</commentid>
    <comment_count>22</comment_count>
      <attachid>449085</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-13 12:11:06 -0800</bug_when>
    <thetext>Comment on attachment 449085
Patch for landing

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

&gt; Source/WebCore/html/HTMLVideoElement.cpp:609
&gt; +    // Search first the requests currently being serviced, and mark them as cancelled if found.
&gt; +    auto index = m_servicedVideoFrameRequests.findMatching([identifier](auto&amp; request) { return request-&gt;identifier == identifier; });
&gt; +    if (index != notFound) {
&gt; +        m_servicedVideoFrameRequests[index]-&gt;cancelled = true;

It would be nice if we could share this cancel/service logic with that for requestAnimationFrame in ScriptedAnimationController. Also, WebXRSession has another copy of the same logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830983</commentid>
    <comment_count>23</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2022-01-14 11:30:09 -0800</bug_when>
    <thetext>I&apos;m reasonably confident there are no Mac-wk1 test regressions; running the following:

run-webkit-tests -1 -f --iterations=8 webgl/2.0.0/conformance2/

Results in zero test failures and a number of progressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831072</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-14 13:59:54 -0800</bug_when>
    <thetext>Committed r288031 (246057@main): &lt;https://commits.webkit.org/246057@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 449085.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831073</commentid>
    <comment_count>25</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-14 14:02:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/87617561&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448676</attachid>
            <date>2022-01-08 12:09:51 -0800</date>
            <delta_ts>2022-01-08 12:16:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235006-20220108120950.patch</filename>
            <type>text/plain</type>
            <size>55062</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTAwOTU1MThhZTQzZmI3
NTNjY2ZjNmYyODg3NDMxNzkwMTMwY2M1YS4uMmFiYjNlNjMyZmE5NjU5ZmEyYjI5MDU2MjE2NGMw
ZDNkOGEzYjlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIyLTAxLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gclZGQygpIGlz
bid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogbWVkaWEvcmVxdWVzdC12aWRlby1mcmFt
ZS1sb2Fkc3RhcnQuaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvcmVxdWVzdC12aWRlby1mcmFt
ZS1zZWVrLmh0bWwKKworICAgICAgICBBZGQgYSBuZXcgdXRpbGl0eSBjbGFzcywgUXVldWVkVmlk
ZW9PdXRwdXQsIHdoaWNoIHdpbGwgcHVsbCBwaXhlbCBidWZmZXJzIG91dCBvZiBhbiBBVlBsYXll
ckl0ZW1WaWRlb091dHB1dAorICAgICAgICBwcmUtZW1wdGl2ZWx5LiBPbmNlIHRob3NlIHBpeGVs
IGJ1ZmZlcnMgYXJlIGVucXVldWVkIGxvY2FsbHksIHRoZWlyIGFzc29jaWF0ZWQgdGltaW5nIGlu
Zm9ybWF0aW9uIGNhbiBiZSB1c2VkIHRvCisgICAgICAgIGZpcmUgYSBjYWxsYmFjayBmb3IgdGhh
dCBidWZmZXIncyBkaXNwbGF5IHRpbWUuCisKKyAgICAgICAgUHJldmlvdXNseSwgcGFpbnRzIHdl
cmUgYmxvY2tlZCBmcm9tIHB1bGxpbmcgbmV3IHBpeGVsIGJ1ZmZlcnMgZnJvbSB0aGUgdmlkZW8g
b3V0cHV0LiBXaXRoIHRoZSBRdWV1ZWRWaWRlb091dHB1dAorICAgICAgICBjbGFzcywgdGhpcyBp
cyBubyBsb25nZXIgbmVjZXNzYXJ5LiBUaGUgUXVldWVkVmlkZW9PdXRwdXQgd2lsbCBub3RpZnkg
aXRzIGNsaWVudCB3aGVuIHRoZSBpbWFnZSBmb3IgY3VycmVudFRpbWUKKyAgICAgICAgY2hhbmdl
cywgYW5kIG90aGVyIGNsaWVudHMgY2FuIGZyZWVseSBhc2sgZm9yIHRoZSBjdXJyZW50VGltZSdz
IGltYWdlLgorCisgICAgICAgIFRvIGN1cmIgcnVuYXdheSBtZW1vcnkgZ3Jvd3RoLCBmcmFtZXMg
YXJlIHB1cmdlZCBhcyBzb29uIGFzIGEgbmV3IGltYWdlIGZvciB0aGUgY3VycmVudCB0aW1lIGlz
IGF2YWlsYWJsZSwgYW5kIHdoZW4KKyAgICAgICAgdGhlIHZpZGVvIG91dHB1dCBzaWduYWxzIHRo
YXQgaXRzIG93biBxdWV1ZXMgd2VyZSBwdXJnZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpo
YXNBdmFpbGFibGVWaWRlb0ZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN0YXJ0VmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVy
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OmNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvVHJhY2tzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZp
ZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmRlc3Ryb3lWaWRlb091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dmlkZW9P
dXRwdXRIYXNBdmFpbGFibGVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRw
dXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNv
bG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpn
bG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURh
dGFXaWxsQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQ29yZUFWRlB1bGxEZWxlZ2F0
ZSBpbml0V2l0aFBsYXllcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQ29yZUFWRlB1bGxE
ZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIG91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1
ZWRWaWRlb091dHB1dC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbTogQWRkZWQuCisgICAgICAgICgtW1dl
YlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgaW5pdFdpdGhQYXJlbnQ6XSk6CisgICAgICAgICgt
W1dlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTpd
KToKKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBvdXRwdXRTZXF1ZW5j
ZVdhc0ZsdXNoZWQ6XSk6CisgICAgICAgICgtW1dlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUg
b2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAg
ICAgKFdlYkNvcmU6Omdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRW
aWRlb091dHB1dDo6UXVldWVkVmlkZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVk
VmlkZW9PdXRwdXQ6On5RdWV1ZWRWaWRlb091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1
ZWRWaWRlb091dHB1dDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpkZWNsdHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6aGFzSW1hZ2VGb3JUaW1lIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0Ojp0YWtlVmlkZW9GcmFt
ZUVudHJ5Rm9yVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6YWRk
Q3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZp
ZGVvT3V0cHV0Ojpjb25maWd1cmVOZXh0SW1hZ2VPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpRdWV1ZWRWaWRlb091dHB1dDo6aW1hZ2VGb3JDdXJyZW50VGltZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmFkZFZpZGVvRnJhbWVFbnRyaWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpwdXJnZVZpZGVvRnJhbWVFbnRyaWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpwdXJnZUltYWdlc0JlZm9y
ZVRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnJhdGVDaGFuZ2Vk
KToKKwogMjAyMS0xMi0xNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbUmVmYWN0b3JdIEFkb3B0IExvZ2dlckhlbHBlciBpbiBMb2dnaW5nIEVNRSBjbGFzc2Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwppbmRleCA0NTEyNGMzY2Y0OTlkMzM5NTQ4Nzk3YWJlYjJkNjhmYjBm
NDY5OTJkLi5jZDAyNmRmNTdhMjg1OWFjYTNmZmU5ZGEyNTA4NDdiMmM2NmVhZDdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMi0wMS0wOCAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIHJWRkMoKSBpc24ndCBjYWxsZWQg
Zm9yIGluaXRpYWwgdmlkZW8gbG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM1MDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oOgorCiAyMDIx
LTEyLTIxICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgcHJlbXVsdGlwbGllZCBhbHBoYSBpbnRlcnBvbGF0ZWQgZ3JhZGllbnRzIGFuZCBk
ZWZhdWx0ZWQgb2ZmIG9wdGlvbiB0byB1c2UgdGhlbSBmb3IgQ1NTIEdyYWRpZW50cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaAppbmRl
eCA4YjdmZjEyMzdhMGM4YzIyZjg4MmZhMGJmZWVlOGJkM2FkNGNiNzEyLi41MzE1NWU5MTViZjQx
Mjc3MGM5MGU0Y2YxZGRhMGNlMjNhZDI5OTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaApAQCAtNDAsOSArNDAsMTAgQEAKICNp
bXBvcnQgPEFWRm91bmRhdGlvbi9BVk1lZGlhU2VsZWN0aW9uR3JvdXBfUHJpdmF0ZS5oPgogI2lt
cG9ydCA8QVZGb3VuZGF0aW9uL0FWT3V0cHV0Q29udGV4dF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxB
VkZvdW5kYXRpb24vQVZPdXRwdXREZXZpY2UuaD4KLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBs
YXllcl9Qcml2YXRlLmg+CisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtT3V0cHV0
X1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1fUHJpdmF0ZS5o
PgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyTGF5ZXJfUHJpdmF0ZS5oPgorI2ltcG9y
dCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyX1ByaXZhdGUuaD4KIAogI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCkBAIC02Niw2ICs2Nyw3
IEBAIE5TX0FTU1VNRV9OT05OVUxMX0VORAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQ2FwdHVy
ZVNlc3Npb24uaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllci5oPgogI2ltcG9ydCA8
QVZGb3VuZGF0aW9uL0FWUGxheWVySXRlbS5oPgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxh
eWVySXRlbU91dHB1dC5oPgogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fSU5URVJTVElUSUFMX0VW
RU5UUykKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckludGVyc3RpdGlhbEV2ZW50Q29u
dHJvbGxlci5oPgpAQCAtOTIsNiArOTQsMTAgQEAgdHlwZWRlZiBOU1N0cmluZyAqIEFWVmlkZW9S
YW5nZSBOU19UWVBFRF9FTlVNOwogQGVuZAogI2VuZGlmCiAKK0BpbnRlcmZhY2UgQVZQbGF5ZXJJ
dGVtVmlkZW9PdXRwdXQgKEFWUGxheWVySXRlbVZpZGVvT3V0cHV0RWFybGllc3RUaW1lKQorQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDTVRpbWUgZWFybGllc3RBdmFpbGFibGVQaXhl
bEJ1ZmZlckl0ZW1UaW1lOworQGVuZAorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBmZjM4MzE0Yzk5MjEzYjRiN2ZiMzM0M2U0M2QxMDg1MDc0OGQ4YTRiLi4wZTYyOTdjZTdi
YzYxNDUwNDEwMWQwODhiODA4OTM2NTE2MzAwYmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjQzLDcgKzEyNDMsNiBAQAog
CQk0MzY3MDhDNzEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzY3MDg4ODEy
RDlDQTRBMDAwNDQyMzQgLyogUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmggKi87IH07CiAJCTQz
NjcwOEM5MTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdJbWFnZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM2NzA4OEExMkQ5Q0E0QTAwMDQ0MjM0
IC8qIFJlbmRlclNWR0ltYWdlLmggKi87IH07CiAJCTQzNjcwOENCMTJEOUNBNEIwMDA0NDIzNCAv
KiBMZWdhY3lSZW5kZXJTVkdNb2RlbE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDM2NzA4OEMxMkQ5Q0E0QTAwMDQ0MjM0IC8qIExlZ2FjeVJl
bmRlclNWR01vZGVsT2JqZWN0LmggKi87IH07Ci0JCTQzNjcwQzkzNDJEOUJDNEIwMDA0NDIzNCAv
KiBSZW5kZXJTVkdNb2RlbE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDM2NzA4RkQxMkQ5Q0E0QTAwMDMyMTE0IC8qIFJlbmRlclNWR01vZGVs
T2JqZWN0LmggKi87IH07CiAJCTQzNjcwOENEMTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdS
ZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDM2NzA4OEUxMkQ5Q0E0QTAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jlc291cmNlLmggKi87IH07CiAJ
CTQzNjcwOENGMTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNjcwODkwMTJE
OUNBNEEwMDA0NDIzNCAvKiBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCAqLzsgfTsKIAkJNDM2
NzA4RDExMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzY3MDg5MjEyRDlD
QTRBMDAwNDQyMzQgLyogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaCAqLzsgfTsKQEAgLTEy
NjYsNiArMTI2NSw3IEBACiAJCTQzNjcwOEY2MTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZXNvdXJj
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNjcw
OEI3MTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZXNvdXJjZXMuaCAqLzsgfTsKIAkJNDM2NzA4Rjgx
MkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR1Jlc291cmNlc0NhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzY3MDhCOTEyRDlDQTRCMDAwNDQyMzQgLyog
U1ZHUmVzb3VyY2VzQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0MzY3MDhGQTEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHUmVzb3VyY2VzQ3lj
bGVTb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQzNjcwOEJCMTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oICov
OyB9OworCQk0MzY3MEM5MzQyRDlCQzRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHTW9kZWxPYmplY3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNjcwOEZE
MTJEOUNBNEEwMDAzMjExNCAvKiBSZW5kZXJTVkdNb2RlbE9iamVjdC5oICovOyB9OwogCQk0Mzkw
NDZEODEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1MQmxvY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOTA0NkM0MTJEQTI1RTgwMEFGODBB
MiAvKiBSZW5kZXJNYXRoTUxCbG9jay5oICovOyB9OwogCQk0MzkwNDZEQTEyREEyNUU4MDBBRjgw
QTIgLyogUmVuZGVyTWF0aE1MRmVuY2VkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MzkwNDZDNjEyREEyNUU4MDBBRjgwQTIgLyogUmVuZGVyTWF0aE1M
RmVuY2VkLmggKi87IH07CiAJCTQzOTA0NkRBMTJEQTI1RTgwMEFGODFCMyAvKiBSZW5kZXJNYXRo
TUxGZW5jZWRPcGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDM5MDQ2QzYxMkRBMjVFODAwQUY4MUIzIC8qIFJlbmRlck1hdGhNTEZlbmNlZE9w
ZXJhdG9yLmggKi87IH07CkBAIC00NDQ2LDYgKzQ0NDYsOCBAQAogCQlDRDFGOUI0RDI3MEQwM0E5
MDA2MTdFQjYgLyogU2Nyb2xsRXh0ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlCNEMyNzBEMDNBOTAwNjE3RUI2IC8qIFNjcm9sbEV4dGVu
dHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
RDFGOUI3RDI3MEU2Njc4MDA2MTdFQjYgLyogSFRNTEFuY2hvckVsZW1lbnRJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDFGOUI3QzI3MEU2
Njc4MDA2MTdFQjYgLyogSFRNTEFuY2hvckVsZW1lbnRJbmxpbmVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0QxRjlCODAyNzBFNjcxQTAwNjE3
RUI2IC8qIFNWR0VsZW1lbnRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDFGOUI3RjI3MEU2NzFBMDA2MTdFQjYgLyogU1ZHRWxlbWVudElu
bGluZXMuaCAqLzsgfTsKKwkJQ0QyMEVEM0MyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVv
T3V0cHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDIwRUQzQTI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQuaCAqLzsgfTsKKwkJ
Q0QyMEVEM0QyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyMEVEM0IyNzg3OEZGQjAw
MzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0Lm1tICovOyB9OwogCQlDRDIyNUMwQjFDNDZGQkY0
MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjI1QzA5MUM0NkZCRjQwMDE0MDc2MSAvKiBXZWJD
b3JlTlNVUkxTZXNzaW9uLm1tICovOyB9OwogCQlDRDIyNUMwQzFDNDZGQkY0MDAxNDA3NjEgLyog
V2ViQ29yZU5TVVJMU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0QyMjVDMEExQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Np
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
RDI3QUU1MDIyQTk4Njg3MDA5NDdGRjkgLyogSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyN0FFNEUyMkE5ODY4
NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODk4NCwxMSArODk4NiwxMCBAQAogCQk0
MzY3MDg4ODEyRDlDQTRBMDAwNDQyMzQgLyogUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3MDg4OTEyRDlDQTRBMDAwNDQyMzQg
LyogUmVuZGVyU1ZHSW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVuZGVyU1ZHSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3
MDg4QTEyRDlDQTRBMDAwNDQyMzQgLyogUmVuZGVyU1ZHSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNDM2NzA4OEQzNEU5Q0E0QTAwMDQ0MjM0IC8qIFJlbmRlclNWR01vZGVsT2JqZWN0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR01vZGVs
T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDM2NzA4RkQxMkQ5Q0E0
QTAwMDMyMTE0IC8qIFJlbmRlclNWR01vZGVsT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbmRlclNWR01vZGVsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQzNjcwODhCMTJEOUNBNEEwMDA0NDIzNCAvKiBMZWdhY3lSZW5kZXJTVkdNb2Rl
bE9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lS
ZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQz
NjcwODhDMTJEOUNBNEEwMDA0NDIzNCAvKiBMZWdhY3lSZW5kZXJTVkdNb2RlbE9iamVjdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMZWdhY3lSZW5kZXJTVkdNb2RlbE9iamVj
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3MDg4RDEyRDlDQTRBMDAwNDQy
MzQgLyogUmVuZGVyU1ZHUmVzb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVuZGVyU1ZHUmVzb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0MzY3MDg4RDM0RTlDQTRBMDAwNDQyMzQgLyogUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHTW9kZWxPYmpl
Y3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3MDg4RTEyRDlDQTRBMDAw
NDQyMzQgLyogUmVuZGVyU1ZHUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyU1ZHUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDM2NzA4OEYxMkQ5Q0E0QTAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3MDg5MDEyRDlDQTRB
MDAwNDQyMzQgLyogUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtOTAzMSw2ICs5MDMyLDcgQEAKIAkJNDM2NzA4QjkxMkQ5Q0E0QjAw
MDQ0MjM0IC8qIFNWR1Jlc291cmNlc0NhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR1Jlc291cmNlc0NhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQzNjcwOEJBMTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdSZXNvdXJjZXNDeWNsZVNv
bHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNjcwOEJCMTJEOUNBNEIw
MDA0NDIzNCAvKiBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0MzY3MDhGRDEyRDlDQTRBMDAwMzIxMTQgLyogUmVuZGVyU1ZHTW9kZWxP
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHTW9kZWxP
YmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM5MDQ2QzMxMkRBMjVFODAw
QUY4MEEyIC8qIFJlbmRlck1hdGhNTEJsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbmRlck1hdGhNTEJsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDM5MDQ2QzQxMkRBMjVFODAwQUY4MEEyIC8qIFJlbmRlck1hdGhNTEJsb2NrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlck1hdGhNTEJsb2NrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzOTA0NkM1MTJEQTI1RTgwMEFGODBBMiAvKiBS
ZW5kZXJNYXRoTUxGZW5jZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVuZGVyTWF0aE1MRmVuY2VkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE1ODU2LDYgKzE1ODU4LDggQEAKIAkJQ0QxRjlCNzAyNzBERkE3RjAwNjE3RUI2IC8qIE1lZGlh
S2V5TWVzc2FnZUV2ZW50SW5pdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxRjlCN0MyNzBFNjY3ODAwNjE3RUI2
IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQW5jaG9y
RWxlbWVudElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxRjlCN0Yy
NzBFNjcxQTAwNjE3RUI2IC8qIFNWR0VsZW1lbnRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R0VsZW1lbnRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjBFRDNB
Mjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBR
dWV1ZWRWaWRlb091dHB1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDIwRUQz
QjI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBRdWV1ZWRWaWRlb091dHB1dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0QyMjVDMDkxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNVUkxTZXNzaW9u
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDIyNUMwQTFDNDZGQkY0MDAxNDA3
NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJDb3JlTlNVUkxTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEMjdBRTRFMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEltYWdlUm90YXRpb25TZXNzaW9uVlQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTMwNjAyLDYgKzMwNjA2LDggQEAKIAkJCQlDREM4QjVBNTE4MDQ3NEY3MDAx
NkU2ODUgLyogTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhCNUE0MTgw
NDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tICovLAogCQkJCTdB
MjlGNTcxMThDNjk1MTQwMDREMEY4MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgg
Ki8sCisJCQkJQ0QyMEVEM0EyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0Lmgg
Ki8sCisJCQkJQ0QyMEVEM0IyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0Lm1t
ICovLAogCQkJCUNERjk5NEZBMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLmggKi8sCiAJCQkJQ0RGOTk0RkIyNEMxMkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW0gKi8sCiAJCQkJQ0RDOEI1QTkxODA0N0ZGMTAwMTZFNjg1IC8qIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggKi8sCkBAIC0zNjU2Niw2ICszNjU3Miw3IEBACiAJ
CQkJRUIwRkI3MEQyNzBEMEIyRTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5p
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxp
ZmllZE5hbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFGNTk0MUVERjY5RDMwMDQxMEQyNyAv
KiBRdWFsaWZpZWROYW1lQ2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMjBFRDNDMjc4NzhG
RkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1
RTMxRjQxRTBDQjBCNTAwNEIzNzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OUJBRUU5MkMyMjM4OEE3RDAwNDE1N0E5IC8qIFF1aXJrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Mzc5RTM3MTcxMzczNkE2NjAwQjlFOTE5IC8qIFF1b3RlZFByaW50YWJsZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zODU1MSw2ICszODU1OCw3IEBACiAJCQkJQUExMkRGNDkxNzQzREY4MzAwNERBRkRG
IC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUNEQTI5QTMwMUNCRjc0RDQwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktp
dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTI5QTE2MUNCREE1NkMwMDkwMUNDRiAvKiBQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRDIwRUQzRDI3
ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk0MTkyNDI0OTIxMjdCOTNFMDA2MzRGQ0YgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzFDMDA0QjI3MEI4NjQ5MDBEMDI3QzcgLyog
UmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMkIxQUVDMjIz
OTdFQkMwMEI5MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCAxZTY1NzU3MjQ2NTQ5NzM0M2NkZTJhMjRkOGYwZGM2
YjRlMDI2N2UxLi42YTMyMmQ5NDExNTJjOGQwNDk5Njg2Y2I1NDU5ZDI1N2IwZTdmYTE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8Q29yZU1lZGlh
L0NNVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CiAKIE9CSkNfQ0xBU1MgQVZBc3NldElt
YWdlR2VuZXJhdG9yOwogT0JKQ19DTEFTUyBBVkFzc2V0VHJhY2s7CkBAIC02Nyw2ICs2OCw3IEBA
IGNsYXNzIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjsKIGNsYXNzIE1lZGlhUGxh
eWJhY2tUYXJnZXQ7CiBjbGFzcyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzsKIGNsYXNzIFBp
eGVsQnVmZmVyQ29uZm9ybWVyQ1Y7CitjbGFzcyBRdWV1ZWRWaWRlb091dHB1dDsKIGNsYXNzIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXI7CiBjbGFzcyBWaWRlb0xheWVyTWFuYWdlck9iakM7CiBjbGFz
cyBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM7CkBAIC0yNTIsOCArMjU0LDcgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlSW1hZ2VGb3JUaW1lSW5SZWN0KGZsb2F0
LCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIHBhaW50V2l0aEltYWdlR2VuZXJhdG9yKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCi0gICAgZW51bSBjbGFzcyBVcGRh
dGVUeXBlIHsgVXBkYXRlU3luY2hyb25vdXNseSwgVXBkYXRlQXN5bmNocm9ub3VzbHkgfTsKLSAg
ICB2b2lkIHVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlIHR5cGUgPSBVcGRhdGVUeXBlOjpVcGRh
dGVBc3luY2hyb25vdXNseSk7CisgICAgdm9pZCB1cGRhdGVMYXN0SW1hZ2UoKTsKIAogICAgIHZv
aWQgY3JlYXRlVmlkZW9PdXRwdXQoKTsKICAgICB2b2lkIGRlc3Ryb3lWaWRlb091dHB1dCgpOwpA
QCAtMjYyLDcgKzI2Myw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludFdpdGhWaWRlb091dHB1
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICBSZWZQdHI8TmF0aXZl
SW1hZ2U+IG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKICAgICBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGZpbmFsOwotICAgIHZvaWQgd2FpdEZvclZpZGVvT3V0
cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpOwogCiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+IHBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKIApAQCAtMzQ3LDcgKzM0Nyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygp
IGZpbmFsOwogICAgIHZvaWQgc3RvcFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpIGZpbmFs
OwogICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZU1ldGFkYXRhPiB2aWRlb0ZyYW1lTWV0YWRh
dGEoKSBmaW5hbCB7IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fdmlkZW9GcmFtZU1ldGFkYXRhLCB7
IH0pOyB9Ci0gICAgdm9pZCBjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YShDTVRpbWUpOworICAg
IHZvaWQgY2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoKTsKIAogICAgIFJldGFpblB0cjxBVlVS
TEFzc2V0PiBtX2F2QXNzZXQ7CiAgICAgUmV0YWluUHRyPEFWUGxheWVyPiBtX2F2UGxheWVyOwpA
QCAtMzY3LDcgKzM2Nyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJldGFpblB0cjxBVkFz
c2V0SW1hZ2VHZW5lcmF0b3I+IG1faW1hZ2VHZW5lcmF0b3I7Ci0gICAgUmV0YWluUHRyPEFWUGxh
eWVySXRlbVZpZGVvT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OworICAgIFJlZlB0cjxRdWV1ZWRWaWRl
b091dHB1dD4gbV92aWRlb091dHB1dDsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRlB1bGxEZWxl
Z2F0ZT4gbV92aWRlb091dHB1dERlbGVnYXRlOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVy
UmVmPiBtX2xhc3RQaXhlbEJ1ZmZlcjsKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdElt
YWdlOwpAQCAtNDM1LDcgKzQzNSw2IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBsb25nIGxvbmcg
bV9jYWNoZWRUb3RhbEJ5dGVzIHsgMCB9OwogICAgIHVuc2lnbmVkIG1fcGVuZGluZ1N0YXR1c0No
YW5nZXMgeyAwIH07CiAgICAgaW50IG1fY2FjaGVkSXRlbVN0YXR1czsKLSAgICBpbnQgbV9ydW5M
b29wTmVzdGluZ0xldmVsIHsgMCB9OwogICAgIE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3kg
bV9idWZmZXJpbmdQb2xpY3kgeyBNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5OjpEZWZhdWx0
IH07CiAgICAgYm9vbCBtX2NhY2hlZExpa2VseVRvS2VlcFVwIHsgZmFsc2UgfTsKICAgICBib29s
IG1fY2FjaGVkQnVmZmVyRW1wdHkgeyBmYWxzZSB9OwpAQCAtNDU2LDcgKzQ1NSw2IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX3Nob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0IHsgZmFsc2UgfTsKICNl
bmRpZgogICAgIGJvb2wgbV9oYXZlUHJvY2Vzc2VkQ2hhcHRlclRyYWNrcyB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBtX3dhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2VUaW1lZE91dCB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhdmVCZWVuQXNrZWRUb1BhaW50IHsgZmFsc2UgfTsKICAg
ICB1aW50NjRfdCBtX3NhbXBsZUNvdW50IHsgMCB9OwogICAgIFJldGFpblB0cjxpZD4gbV92aWRl
b0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmdPYnNlcnZlcjsKQEAgLTQ2NCw2ICs0NjIsNyBAQCBwcml2
YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZU1ldGFkYXRhPiBtX3ZpZGVvRnJhbWVN
ZXRhZGF0YTsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8TlNUaW1lSW50ZXJ2YWw+IG1fY2Fj
aGVkU2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZTsKICAgICBtdXRhYmxlIHN0ZDo6
b3B0aW9uYWw8TlNUaW1lSW50ZXJ2YWw+IG1fY2FjaGVkTGl2ZVVwZGF0ZUludGVydmFsOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxPYnNlcnZlcjx2b2lkKCk+PiBtX2N1cnJlbnRJbWFnZUNoYW5nZWRP
YnNlcnZlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGMwNjdjY2U4MDY4
NmY3YTFiYzU0MTRiYWY3N2Y3NTI1MmJmMzQyYzcuLmUwYzQyNGZhZWMzM2U1ODk4NWY3YWQ0OTM3
ZTYxY2I4MjQ3ZDhlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNTgsNiArNTgsNyBA
QAogI2ltcG9ydCAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbXBvcnQgIlBsYXRmb3JtVGV4dFRyYWNr
LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKKyNpbXBvcnQgIlF1ZXVlZFZpZGVv
T3V0cHV0LmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQg
IlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2ltcG9ydCAiU2VjdXJpdHlPcmlnaW4uaCIKQEAg
LTIwNSwxNiArMjA2LDYgQEAgLSAoaWQpaW5pdFdpdGhQbGF5ZXI6KFdlYWtQdHI8TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4mJilwbGF5ZXI7CiAtIChCT09MKXJlc291cmNlTG9h
ZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9y
TG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2U6KEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0
ICopbG9hZGluZ1JlcXVlc3Q7CiBAZW5kCiAKLUBpbnRlcmZhY2UgV2ViQ29yZUFWRlB1bGxEZWxl
Z2F0ZSA6IE5TT2JqZWN0PEFWUGxheWVySXRlbU91dHB1dFB1bGxEZWxlZ2F0ZT4gewotICAgIEJp
bmFyeVNlbWFwaG9yZSBtX3NlbWFwaG9yZTsKLX0KLS0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFr
UHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpcGxheWVyOwotLSAodm9p
ZClvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOihBVlBsYXllckl0ZW1PdXRwdXQgKilzZW5kZXI7
Ci0tICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICop
b3V0cHV0OwotCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJpbmFyeVNlbWFwaG9y
ZSYgc2VtYXBob3JlOwotQGVuZAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgU3RyaW5n
IGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKEFWUGxheWVyVGltZUNvbnRyb2xTdGF0dXMgZW51
bWVyYXRpb25WYWx1ZSkKIHsKQEAgLTI2MSwxNiArMjUyLDYgQEAgc3RhdGljIGRpc3BhdGNoX3F1
ZXVlX3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpCiAgICAgcmV0dXJuIGdsb2JhbFF1ZXVl
OwogfQogCi1zdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgp
Ci17Ci0gICAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUXVldWU7Ci0gICAgc3RhdGlj
IGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2Vu
LCBeewotICAgICAgICBnbG9iYWxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29y
ZUFWRlB1bGxEZWxlZ2F0ZSBxdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7Ci0gICAgfSk7
Ci0gICAgcmV0dXJuIGdsb2JhbFF1ZXVlOwotfQotCiBzdGF0aWMgdm9pZCByZWdpc3RlckZvcm1h
dFJlYWRlcklmTmVjZXNzYXJ5KCkKIHsKICNpZiBFTkFCTEUoV0VCTV9GT1JNQVRfUkVBREVSKQpA
QCAtNDY5LDcgKzQ1MCw4IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6On5N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKCkKICAgICBmb3IgKGF1dG8mIHBhaXIg
OiBtX3Jlc291cmNlTG9hZGVyTWFwKQogICAgICAgICBwYWlyLnZhbHVlLT5pbnZhbGlkYXRlKCk7
CiAKLSAgICBbbV92aWRlb091dHB1dCBzZXREZWxlZ2F0ZTpuaWwgcXVldWU6MF07CisgICAgaWYg
KG1fdmlkZW9PdXRwdXQpCisgICAgICAgIG1fdmlkZW9PdXRwdXQtPmludmFsaWRhdGUoKTsKIAog
ICAgIGlmIChtX3ZpZGVvTGF5ZXIpCiAgICAgICAgIGRlc3Ryb3lWaWRlb0xheWVyKCk7CkBAIC03
MDIsNyArNjg0LDEzIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CiAgICAgaWYgKGN1cnJlbnRSZW5kZXJpbmdN
b2RlKCkgPT0gTWVkaWFSZW5kZXJpbmdNb2RlOjpNZWRpYVJlbmRlcmluZ1RvTGF5ZXIpCiAgICAg
ICAgIHJldHVybiBtX2NhY2hlZElzUmVhZHlGb3JEaXNwbGF5OwogCi0gICAgaWYgKG1fdmlkZW9P
dXRwdXQgJiYgKG1fbGFzdFBpeGVsQnVmZmVyIHx8IFttX3ZpZGVvT3V0cHV0IGhhc05ld1BpeGVs
QnVmZmVyRm9ySXRlbVRpbWU6W21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXV0pKQorICAgIGlm
ICghbV92aWRlb091dHB1dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fbGFz
dFBpeGVsQnVmZmVyKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX3ZpZGVvT3V0
cHV0LT5oYXNJbWFnZUZvclRpbWUoUEFMOjp0b01lZGlhVGltZShbbV9hdlBsYXllckl0ZW0gY3Vy
cmVudFRpbWVdKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIG1fdmlkZW9G
cmFtZUhhc0RyYXduOwpAQCAtMTI3Niw3ICsxMjY0LDcgQEAgUGxhdGZvcm1MYXllciogTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2Ny
ZWVuSW5saW5lSW1hZ2UoKQogewotICAgIHVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlOjpVcGRh
dGVTeW5jaHJvbm91c2x5KTsKKyAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKICAgICBtX3ZpZGVvTGF5
ZXJNYW5hZ2VyLT51cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZShtX2xhc3RJbWFnZSA/
IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyKTsKIH0KIApAQCAtMTI4OCw3
ICsxMjc2LDcgQEAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNyZWF0ZVZpZGVvRnVsbHNjcmUKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXll
ciogdmlkZW9GdWxsc2NyZWVuTGF5ZXIsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAodmlkZW9GdWxsc2NyZWVuTGF5ZXIpCi0gICAgICAgIHVwZGF0ZUxh
c3RJbWFnZShVcGRhdGVUeXBlOjpVcGRhdGVTeW5jaHJvbm91c2x5KTsKKyAgICAgICAgdXBkYXRl
TGFzdEltYWdlKCk7CiAgICAgbV92aWRlb0xheWVyTWFuYWdlci0+c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIodmlkZW9GdWxsc2NyZWVuTGF5ZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBt
X2xhc3RJbWFnZSA/IG1fbGFzdEltYWdlLT5wbGF0Zm9ybUltYWdlKCkgOiBudWxscHRyKTsKICAg
ICB1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5YmFjaygpOwogfQpAQCAtMTQ0NCwzNCArMTQzMiwz
MCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtUGF1
c2VkKCkgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpz
dGFydFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpCiB7Ci0gICAgQVNTRVJUKCFtX3ZpZGVv
RnJhbWVNZXRhZGF0YUdhdGhlcmluZ09ic2VydmVyIHx8IG1fYXZQbGF5ZXIpOwotICAgIG1faXNH
YXRoZXJpbmdWaWRlb0ZyYW1lTWV0YWRhdGEgPSB0cnVlOworICAgIC8vIHJlcXVlc3RWaWRlb0Zy
YW1lQ2FsbGJhY2soKSBjYXJlcyBhYm91dCB0aGUgL25leHQvIGF2YWlsYWJsZSBmcmFtZS4gUHVs
bCB0aGUgY3VycmVudCBmcmFtZSBmcm9tCisgICAgLy8gdGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHNv
IHBhaW50cyBvZiB0aGUgY3VycmVudCBmcmFtZSBzdWNjZWVkOworICAgIHVwZGF0ZUxhc3RQaXhl
bEJ1ZmZlcigpOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgYSBDQURpc3BsYXlMaW5r
IHRvIGdldCB1cGRhdGVzIG9uIHJlbmRlcmluZywgZm9yIG5vdyB3ZSBlbXVsYXRlIHdpdGggYWRk
UGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbC4KLSAgICBtX3ZpZGVvRnJhbWVNZXRhZGF0
YUdhdGhlcmluZ09ic2VydmVyID0gW21fYXZQbGF5ZXIgYWRkUGVyaW9kaWNUaW1lT2JzZXJ2ZXJG
b3JJbnRlcnZhbDpQQUw6OkNNVGltZU1ha2UoMSwgNjApIHF1ZXVlOmRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCkgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0oQ01UaW1l
IGN1cnJlbnRUaW1lKSB7Ci0gICAgICAgIGVuc3VyZU9uTWFpblRocmVhZChbd2Vha1RoaXMsIGN1
cnJlbnRUaW1lXSB7Ci0gICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAgICAg
d2Vha1RoaXMtPmNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKGN1cnJlbnRUaW1lKTsKKyAgICBp
ZiAobV92aWRlb091dHB1dCkgeworICAgICAgICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZl
ciA9IFdURjo6bWFrZV91bmlxdWU8T2JzZXJ2ZXI8dm9pZCgpPj4oW3RoaXNdIHsKKyAgICAgICAg
ICAgIGNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCk7CiAgICAgICAgIH0pOwotICAgIH1dOwor
ICAgICAgICBtX3ZpZGVvT3V0cHV0LT5hZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoKm1f
Y3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKTsKKyAgICB9CisKKyAgICBtX2lzR2F0aGVyaW5n
VmlkZW9GcmFtZU1ldGFkYXRhID0gdHJ1ZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YShDTVRpbWUgY3VycmVu
dFRpbWUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNoZWNrTmV3
VmlkZW9GcmFtZU1ldGFkYXRhKCkKIHsKLSAgICBpZiAoIXVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigp
KQorICAgIGlmICghbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgVmlkZW9GcmFtZU1ldGFkYXRhIG1ldGFkYXRhOwotICAgIG1ldGFkYXRhLndp
ZHRoID0gbV9jYWNoZWRQcmVzZW50YXRpb25TaXplLndpZHRoKCk7Ci0gICAgbWV0YWRhdGEuaGVp
Z2h0ID0gbV9jYWNoZWRQcmVzZW50YXRpb25TaXplLmhlaWdodCgpOwotICAgIG1ldGFkYXRhLnBy
ZXNlbnRlZEZyYW1lcyA9ICsrbV9zYW1wbGVDb3VudDsKLSAgICBtZXRhZGF0YS5tZWRpYVRpbWUg
PSBQQUw6OkNNVGltZUdldFNlY29uZHMoY3VycmVudFRpbWUpOwotICAgIC8vIEZJWE1FOiBwcmVz
ZW50YXRpb25UaW1lIGFuZCBleHBlY3RlZERpc3BsYXlUaW1lIG1pZ2h0IG5vdCBhbHdheXMgaGF2
ZSB0aGUgc2FtZSB2YWx1ZSwgd2Ugc2hvdWxkIHRyeSBnZXR0aW5nIG1vcmUgcHJlY2lzZSB2YWx1
ZXMuCi0gICAgbWV0YWRhdGEucHJlc2VudGF0aW9uVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygp
LnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpOwotICAgIG1ldGFkYXRhLmV4cGVjdGVkRGlz
cGxheVRpbWUgPSBtZXRhZGF0YS5wcmVzZW50YXRpb25UaW1lOworICAgIGlmICghdXBkYXRlTGFz
dFBpeGVsQnVmZmVyKCkgfHwgIW1fdmlkZW9GcmFtZU1ldGFkYXRhKQorICAgICAgICByZXR1cm47
CiAKLSAgICBtX3ZpZGVvRnJhbWVNZXRhZGF0YSA9IG1ldGFkYXRhOwotICAgIHBsYXllcigpLT5v
bk5ld1ZpZGVvRnJhbWVNZXRhZGF0YShXVEZNb3ZlKG1ldGFkYXRhKSwgbV9sYXN0UGl4ZWxCdWZm
ZXIuZ2V0KCkpOworICAgIHBsYXllcigpLT5vbk5ld1ZpZGVvRnJhbWVNZXRhZGF0YShXVEZNb3Zl
KCptX3ZpZGVvRnJhbWVNZXRhZGF0YSksIG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKKyAgICBt
X3ZpZGVvRnJhbWVNZXRhZGF0YSA9IHsgfTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpzdG9wVmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nKCkKQEAgLTI0
MzMsMTAgKzI0MTcsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnVwZGF0ZVZpZGVvVHJhY2tzKCkKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV92aWRlb1RyYWNr
cykKICAgICAgICAgdHJhY2stPnJlc2V0UHJvcGVydGllc0Zyb21UcmFjaygpOwogCi0gICAgLy8g
SW4gY2FzZSB0aGUgdmlkZW8gdHJhY2sgY29udGVudCBjaGFuZ2VkLCB3ZSBtYXkgYmUgYWJsZSB0
byBwZXJmb3JtIGEgcmVhZGJhY2sgYWdhaW4uCi0gICAgaWYgKGNvdW50KQotICAgICAgICBtX3dh
aXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2VUaW1lZE91dCA9IGZhbHNlOwotCiAg
ICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCAidHJhY2sgY291bnQgd2FzICIsIGNvdW50LCAi
LCBpcyAiLCBtX3ZpZGVvVHJhY2tzLnNpemUoKSk7CiB9CiAKQEAgLTI1MTgsMTcgKzI0OTgsMTQg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb091
dHB1dCgpCiAgICAgaWYgKCFtX2F2UGxheWVySXRlbSB8fCBtX3ZpZGVvT3V0cHV0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3ZpZGVvT3V0cHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxh
eWVySXRlbVZpZGVvT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0aFBpeGVsQnVmZmVyQXR0cmlidXRl
czpuaWxdKTsKKyAgICBtX3ZpZGVvT3V0cHV0ID0gUXVldWVkVmlkZW9PdXRwdXQ6OmNyZWF0ZSht
X2F2UGxheWVySXRlbS5nZXQoKSwgbV9hdlBsYXllci5nZXQoKSk7CiAgICAgQVNTRVJUKG1fdmlk
ZW9PdXRwdXQpOwogICAgIGlmICghbV92aWRlb091dHB1dCkgewogICAgICAgICBFUlJPUl9MT0co
TE9HSURFTlRJRklFUiwgIi1bQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQgaW5pdFdpdGhQaXhlbEJ1
ZmZlckF0dHJpYnV0ZXM6XSBmYWlsZWQhIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAg
ICBtX3ZpZGVvT3V0cHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViQ29yZUFWRlB1bGxEZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhQbGF5ZXI6KnRoaXNdKTsKLSAgICBbbV92aWRlb091dHB1dCBzZXRE
ZWxlZ2F0ZTptX3ZpZGVvT3V0cHV0RGVsZWdhdGUuZ2V0KCkgcXVldWU6Z2xvYmFsUHVsbERlbGVn
YXRlUXVldWUoKV07Ci0KLSAgICBbbV9hdlBsYXllckl0ZW0gYWRkT3V0cHV0Om1fdmlkZW9PdXRw
dXQuZ2V0KCldOworICAgIGlmIChtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcikKKyAgICAg
ICAgbV92aWRlb091dHB1dC0+YWRkQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKCptX2N1cnJl
bnRJbWFnZUNoYW5nZWRPYnNlcnZlcik7CiAKICAgICBzZXROZWVkc1JlbmRlcmluZ01vZGVDaGFu
Z2VkKCk7CiB9CkBAIC0yNTM4LDE5ICsyNTE1LDE3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZpZGVvT3V0cHV0KCkKICAgICBpZiAoIW1fdmlkZW9P
dXRwdXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2F2UGxheWVySXRlbSkKLSAgICAg
ICAgW21fYXZQbGF5ZXJJdGVtIHJlbW92ZU91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKLQog
ICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgbV92aWRlb091dHB1dCA9IDA7Cisg
ICAgbV92aWRlb091dHB1dC0+aW52YWxpZGF0ZSgpOworICAgIG1fdmlkZW9PdXRwdXQgPSBudWxs
cHRyOwogCiAgICAgc2V0TmVlZHNSZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOwogfQogCiBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigp
CiB7Ci0gICAgaWYgKCFtX2F2UGxheWVySXRlbSB8fCByZWFkeVN0YXRlKCkgPCBNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhKQorICAgIGlmICghbV9hdlBsYXllckl0ZW0p
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1faGF2ZUJlZW5Bc2tlZFRvUGFpbnQgPSB0
cnVlOwpAQCAtMjU1OSwxMiArMjUzNCwyNSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpCiAgICAgICAgIGNyZWF0ZVZpZGVv
T3V0cHV0KCk7CiAgICAgQVNTRVJUKG1fdmlkZW9PdXRwdXQpOwogCi0gICAgQ01UaW1lIGN1cnJl
bnRUaW1lID0gW21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXTsKKyAgICBhdXRvIGN1cnJlbnRU
aW1lID0gUEFMOjp0b01lZGlhVGltZShbbV9hdlBsYXllckl0ZW0gY3VycmVudFRpbWVdKTsKIAot
ICAgIGlmICghW21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpjdXJy
ZW50VGltZV0pCisgICAgaWYgKCFtX3ZpZGVvT3V0cHV0LT5oYXNJbWFnZUZvclRpbWUoY3VycmVu
dFRpbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2xhc3RQaXhlbEJ1ZmZlciA9
IGFkb3B0Q0YoW21fdmlkZW9PdXRwdXQgY29weVBpeGVsQnVmZmVyRm9ySXRlbVRpbWU6Y3VycmVu
dFRpbWUgaXRlbVRpbWVGb3JEaXNwbGF5Om5pbF0pOworICAgIGF1dG8gZW50cnkgPSBtX3ZpZGVv
T3V0cHV0LT50YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShjdXJyZW50VGltZSk7CisgICAgbV9s
YXN0UGl4ZWxCdWZmZXIgPSBXVEZNb3ZlKGVudHJ5LnBpeGVsQnVmZmVyKTsKKworICAgIGlmICht
X2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhKSB7CisgICAgICAgIGF1dG8gcHJlc2VudGF0
aW9uVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25k
cygpIC0gKGN1cnJlbnRUaW1lIC0gZW50cnkuZGlzcGxheVRpbWUpLnRvRG91YmxlKCk7CisgICAg
ICAgIG1fdmlkZW9GcmFtZU1ldGFkYXRhID0geworICAgICAgICAgICAgLndpZHRoID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KENWUGl4ZWxCdWZmZXJHZXRXaWR0aChtX2xhc3RQaXhlbEJ1ZmZlci5n
ZXQoKSkpLAorICAgICAgICAgICAgLmhlaWdodCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDVlBp
eGVsQnVmZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKSksCisgICAgICAgICAg
ICAucHJlc2VudGVkRnJhbWVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCsrbV9zYW1wbGVDb3Vu
dCksCisgICAgICAgICAgICAubWVkaWFUaW1lID0gZW50cnkuZGlzcGxheVRpbWUudG9Eb3VibGUo
KSwKKyAgICAgICAgICAgIC5wcmVzZW50YXRpb25UaW1lID0gcHJlc2VudGF0aW9uVGltZSwKKyAg
ICAgICAgICAgIC5leHBlY3RlZERpc3BsYXlUaW1lID0gcHJlc2VudGF0aW9uVGltZSwKKyAgICAg
ICAgfTsKKyAgICB9CiAKICAgICBpZiAobV9pbWFnZVJvdGF0aW9uU2Vzc2lvbikKICAgICAgICAg
bV9sYXN0UGl4ZWxCdWZmZXIgPSBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5yb3RhdGUobV9sYXN0
UGl4ZWxCdWZmZXIuZ2V0KCkpOwpAQCAtMjU4NCwxMCArMjU3MiwxMCBAQCBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUo
KQogICAgIGlmICghbV92aWRlb091dHB1dCkKICAgICAgICAgY3JlYXRlVmlkZW9PdXRwdXQoKTsK
IAotICAgIHJldHVybiBbbV92aWRlb091dHB1dCBoYXNOZXdQaXhlbEJ1ZmZlckZvckl0ZW1UaW1l
OlttX2F2UGxheWVySXRlbSBjdXJyZW50VGltZV1dOworICAgIHJldHVybiBtX3ZpZGVvT3V0cHV0
LT5oYXNJbWFnZUZvclRpbWUoUEFMOjp0b01lZGlhVGltZShbbV9hdlBsYXllckl0ZW0gY3VycmVu
dFRpbWVdKSk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
dXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGUgdHlwZSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKCkKIHsKICAgICBpZiAoIW1fYXZQbGF5
ZXJJdGVtIHx8IHJlYWR5U3RhdGUoKSA8IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlQ3Vy
cmVudERhdGEpCiAgICAgICAgIHJldHVybjsKQEAgLTI1OTYsMTMgKzI1ODQsMTAgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UoVXBkYXRl
VHlwZSB0eXBlKQogICAgIGlmICghZmlyc3RFbmFibGVkVmlkZW9UcmFjaykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKHR5cGUgPT0gVXBkYXRlVHlwZTo6VXBkYXRlU3luY2hyb25vdXNseSAm
JiAhbV9sYXN0SW1hZ2UgJiYgIXZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUoKSkKLSAgICAg
ICAgd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpOwotCiAgICAgLy8gQ2Fs
bHMgdG8gY29weVBpeGVsQnVmZmVyRm9ySXRlbVRpbWU6aXRlbVRpbWVGb3JEaXNwbGF5OiBtYXkg
cmV0dXJuIG5pbCBpZiB0aGUgcGl4ZWwgYnVmZmVyCiAgICAgLy8gZm9yIHRoZSByZXF1ZXN0ZWQg
dGltZSBoYXMgYWxyZWFkeSBiZWVuIHJldHJpZXZlZC4gSW4gdGhpcyBjYXNlLCB0aGUgbGFzdCB2
YWxpZCBpbWFnZSAoaWYgYW55KQogICAgIC8vIHNob3VsZCBiZSBkaXNwbGF5ZWQuCi0gICAgaWYg
KChtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhIHx8ICF1cGRhdGVMYXN0UGl4ZWxCdWZm
ZXIoKSkgJiYgKG1fbGFzdEltYWdlIHx8ICFtX2xhc3RQaXhlbEJ1ZmZlcikpCisgICAgaWYgKCF1
cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSAmJiAobV9sYXN0SW1hZ2UgfHwgIW1fbGFzdFBpeGVsQnVm
ZmVyKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3BpeGVsQnVmZmVyQ29uZm9ybWVy
KSB7CkBAIC0yNjE5LDcgKzI2MDQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlIHR5cGUpCiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIG91dHB1dFJlY3QpCiB7Ci0gICAg
dXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOworICAgIHVw
ZGF0ZUxhc3RJbWFnZSgpOwogICAgIGlmICghbV9sYXN0SW1hZ2UpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMjYzNyw3NCArMjYyMiwyOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYgYwogCiBSZXRh
aW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSgpCiB7Ci0gICAgaWYgKCFtX2lzR2F0aGVyaW5n
VmlkZW9GcmFtZU1ldGFkYXRhKQotICAgICAgICB1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKTsKKyAg
ICB1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKTsKIAogICAgIHJldHVybiBtX2xhc3RQaXhlbEJ1ZmZl
cjsKIH0KIAogUmVmUHRyPE5hdGl2ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkKIHsKLSAgICB1cGRhdGVMYXN0SW1h
Z2UoVXBkYXRlVHlwZTo6VXBkYXRlU3luY2hyb25vdXNseSk7CisgICAgdXBkYXRlTGFzdEltYWdl
KCk7CiAgICAgcmV0dXJuIG1fbGFzdEltYWdlOwogfQogCiBEZXN0aW5hdGlvbkNvbG9yU3BhY2Ug
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29sb3JTcGFjZSgpCiB7Ci0gICAg
dXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOworICAgIHVw
ZGF0ZUxhc3RJbWFnZSgpOwogICAgIGlmICghbV9sYXN0UGl4ZWxCdWZmZXIpCiAgICAgICAgIHJl
dHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKIAogICAgIHJldHVybiBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UoY3JlYXRlQ0dDb2xvclNwYWNlRm9yQ1ZQaXhlbEJ1ZmZlcihtX2xhc3RQ
aXhlbEJ1ZmZlci5nZXQoKSkpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OndhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQotewotICAg
IGlmIChtX3dhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2VUaW1lZE91dCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2FpdCBmb3IgMSBzZWNvbmQuCi0gICAgTW9ub3Rvbmlj
VGltZSBzdGFydCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotCi0gICAgc3RkOjpvcHRpb25hbDxS
dW5Mb29wOjpUaW1lcjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPj4gdGltZW91
dFRpbWVyOwotCi0gICAgaWYgKCFtX3J1bkxvb3BOZXN0aW5nTGV2ZWwpIHsKLSAgICAgICAgW21f
dmlkZW9PdXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlV2l0aEFkdmFu
Y2VJbnRlcnZhbDowXTsKLQotICAgICAgICB0aW1lb3V0VGltZXIuZW1wbGFjZShSdW5Mb29wOjpt
YWluKCksIFsmXSB7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwotICAgICAg
ICB9KTsKLSAgICAgICAgdGltZW91dFRpbWVyLT5zdGFydE9uZVNob3QoMV9zKTsKLSAgICB9Ci0K
LSAgICArK21fcnVuTG9vcE5lc3RpbmdMZXZlbDsKLSAgICBSdW5Mb29wOjpydW4oKTsKLSAgICAt
LW1fcnVuTG9vcE5lc3RpbmdMZXZlbDsKLQotICAgIGlmIChtX3J1bkxvb3BOZXN0aW5nTGV2ZWwp
IHsKLSAgICAgICAgUnVuTG9vcDo6bWFpbigpLnN0b3AoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGJvb2wgc2F0aXNmaWVkID0gdGltZW91dFRpbWVyLT5pc0FjdGl2ZSgpOwotICAg
IGlmICghc2F0aXNmaWVkKSB7Ci0gICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidGlt
ZWQgb3V0Iik7Ci0gICAgICAgIG1fd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5n
ZVRpbWVkT3V0ID0gdHJ1ZTsKLSAgICB9IGVsc2UKLSAgICAgICAgSU5GT19MT0coTE9HSURFTlRJ
RklFUiwgIndhaXRpbmcgZm9yIHZpZGVvT3V0cHV0IHRvb2sgIiwgKE1vbm90b25pY1RpbWU6Om5v
dygpIC0gc3RhcnQpLnNlY29uZHMoKSk7Ci19Ci0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpCiB7Ci0gICAgaWYgKG1f
cnVuTG9vcE5lc3RpbmdMZXZlbCkgewotICAgICAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpCi0g
ICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7Ci0gICAgICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLnN0b3AoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfQor
ICAgIGNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCk7CiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKQEAgLTQwODksMzcgKzQwMjksNCBAQCAtICh2b2lkKXJlc291cmNl
TG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBkaWRDYW5jZWxM
b2FkaW5nUgogCiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlQVZGUHVsbERlbGVnYXRl
IHsKLSAgICBXZWFrUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM+IF9wbGF5ZXI7Ci19Ci0KLUBzeW50aGVzaXplIHNlbWFwaG9yZSA9IG1fc2VtYXBob3JlOwot
Ci0tIChpZClpbml0V2l0aFBsYXllcjooV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDPiYmKXBsYXllcgotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYg
KCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIF9wbGF5ZXIgPSBXVEZNb3ZlKHBsYXll
cik7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpb3V0cHV0TWVkaWFEYXRhV2lsbENo
YW5nZTooQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQgKilvdXRwdXQKLXsKLSAgICBVTlVTRURfUEFS
QU0ob3V0cHV0KTsKLSAgICBtX3NlbWFwaG9yZS5zaWduYWwoKTsKLSAgICBjYWxsT25NYWluVGhy
ZWFkKFtzZWxmLCBzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9XSB7Ci0gICAgICAgIGlm
IChfcGxheWVyKQotICAgICAgICAgICAgX3BsYXllci0+b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5n
ZSgpOwotICAgIH0pOwotfQotCi0tICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQ
bGF5ZXJJdGVtVmlkZW9PdXRwdXQgKilvdXRwdXQKLXsKLSAgICBVTlVTRURfUEFSQU0ob3V0cHV0
KTsKLSAgICAvLyBOby1vcC4KLX0KLQotQGVuZAotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVv
T3V0cHV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9RdWV1ZWRWaWRlb091dHB1dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5YjcyZTYyMzE2ZjQ2NGFkYjE3
ZjEyMjllMDMzOTIxZDIwZWZmODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5oCkBA
IC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShW
SURFTykKKworI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRl
IDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1dlYWtIYXNoU2V0Lmg+CisKK09CSkNfQ0xBU1MgQVZQbGF5ZXI7CitPQkpDX0NMQVNTIEFW
UGxheWVySXRlbTsKK09CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ7CitPQkpDX0NM
QVNTIFdlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGU7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgUXVldWVkVmlkZW9PdXRwdXQKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFF1ZXVl
ZFZpZGVvT3V0cHV0PgorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFF1ZXVlZFZpZGVvT3V0
cHV0PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGlj
IFJlZjxRdWV1ZWRWaWRlb091dHB1dD4gY3JlYXRlKEFWUGxheWVySXRlbSosIEFWUGxheWVyKik7
CisgICAgflF1ZXVlZFZpZGVvT3V0cHV0KCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAg
ICBib29sIGhhc0ltYWdlRm9yVGltZShjb25zdCBNZWRpYVRpbWUmKSBjb25zdDsKKworICAgIHN0
cnVjdCBWaWRlb0ZyYW1lRW50cnkgeworICAgICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJl
Zj4gcGl4ZWxCdWZmZXI7CisgICAgICAgIE1lZGlhVGltZSBkaXNwbGF5VGltZTsKKyAgICB9Owor
ICAgIFZpZGVvRnJhbWVFbnRyeSB0YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShjb25zdCBNZWRp
YVRpbWUmKTsKKworICAgIHZvaWQgYWRkVmlkZW9GcmFtZUVudHJpZXMoVmVjdG9yPFZpZGVvRnJh
bWVFbnRyeT4mJik7CisgICAgdm9pZCBwdXJnZVZpZGVvRnJhbWVFbnRyaWVzKCk7CisKKyAgICB1
c2luZyBDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKCk+OworICAg
IHZvaWQgYWRkQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKGNvbnN0IEN1cnJlbnRJbWFnZUNo
YW5nZWRPYnNlcnZlciYpOworCisgICAgdXNpbmcgSW1hZ2VNYXAgPSBzdGQ6Om1hcDxNZWRpYVRp
bWUsIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPj47CisKKyAgICB2b2lkIHJhdGVDaGFuZ2Vk
KGZsb2F0KTsKKworcHJpdmF0ZToKKyAgICBRdWV1ZWRWaWRlb091dHB1dChBVlBsYXllckl0ZW0q
LCBBVlBsYXllciopOworCisgICAgdm9pZCBwdXJnZUltYWdlc0JlZm9yZVRpbWUoY29uc3QgTWVk
aWFUaW1lJik7CisgICAgdm9pZCBjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAg
ICB2b2lkIGNhbmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworICAgIHZvaWQgbmV4dEltYWdl
VGltZVJlYWNoZWQoKTsKKworICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW0+IG1fcGxheWVySXRl
bTsKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXI+IG1fcGxheWVyOworICAgIFJldGFpblB0cjxXZWJR
dWV1ZWRWaWRlb091dHB1dERlbGVnYXRlPiBtX2RlbGVnYXRlOworICAgIFJldGFpblB0cjxBVlBs
YXllckl0ZW1WaWRlb091dHB1dD4gbV92aWRlb091dHB1dDsKKyAgICBSZXRhaW5QdHI8aWQ+IG1f
dmlkZW9UaW1lYmFzZU9ic2VydmVyOworICAgIFJldGFpblB0cjxpZD4gbV9uZXh0SW1hZ2VUaW1l
YmFzZU9ic2VydmVyOworCisgICAgSW1hZ2VNYXAgbV92aWRlb0ZyYW1lczsKKyAgICBXZWFrSGFz
aFNldDxDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXI+IG1fY3VycmVudEltYWdlQ2hhbmdlZE9i
c2VydmVyczsKKworICAgIGJvb2wgbV9wYXVzZWQgeyB0cnVlIH07Cit9OworCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wYmMwODM4MTRjMDhjN2RlZWQ2MWM5MDc5YzIyYmUzZjUwNzhhNzdlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
UXVldWVkVmlkZW9PdXRwdXQubW0KQEAgLTAsMCArMSwzMDggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXVldWVkVmlkZW9PdXRwdXQuaCIKKworI2lmIEVO
QUJMRShWSURFTykKKworI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1PdXRwdXQu
aD4KKyNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgor
I2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CisKKyNpbmNsdWRlIDxwYWwvY2YvQ29y
ZU1lZGlhU29mdExpbmsuaD4KKyNpbmNsdWRlIDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExp
bmsuaD4KKworQGludGVyZmFjZSBXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIDogTlNPYmpl
Y3Q8QVZQbGF5ZXJJdGVtT3V0cHV0UHVsbERlbGVnYXRlPiB7CisgICAgV2Vha1B0cjxXZWJDb3Jl
OjpRdWV1ZWRWaWRlb091dHB1dD4gX3BhcmVudDsKK30KKy0gKGlkKWluaXRXaXRoUGFyZW50OihX
ZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dCopcGFyZW50OworLSAodm9pZClvdXRwdXRNZWRpYURh
dGFXaWxsQ2hhbmdlOihBVlBsYXllckl0ZW1PdXRwdXQgKilvdXRwdXQ7CistICh2b2lkKW91dHB1
dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0OworLSAodm9p
ZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFu
Z2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkKiljb250ZXh0OworQGVuZAor
CitAaW1wbGVtZW50YXRpb24gV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZQorLSAoaWQpaW5p
dFdpdGhQYXJlbnQ6KFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0KilwYXJlbnQKK3sKKyAgICBz
ZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsK
KworICAgIF9wYXJlbnQgPSBwYXJlbnQ7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQp
b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0Cit7
CisgICAgQVNTRVJUKFtvdXRwdXQgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxheWVySXRlbVZp
ZGVvT3V0cHV0Q2xhc3MoKV0pOworICAgIGF1dG8qIHZpZGVvT3V0cHV0ID0gKEFWUGxheWVySXRl
bVZpZGVvT3V0cHV0KilvdXRwdXQ7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6UXVldWVkVmlkZW9P
dXRwdXQ6OlZpZGVvRnJhbWVFbnRyeT4gdmlkZW9GcmFtZUVudHJpZXM7CisgICAgZG8geworICAg
ICAgICBDTVRpbWUgZWFybGllc3RUaW1lID0gW3ZpZGVvT3V0cHV0IGVhcmxpZXN0QXZhaWxhYmxl
UGl4ZWxCdWZmZXJJdGVtVGltZV07CisgICAgICAgIGlmIChDTVRJTUVfSVNfSU5WQUxJRChlYXJs
aWVzdFRpbWUpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZl
ciA9IGFkb3B0Q0YoW3ZpZGVvT3V0cHV0IGNvcHlQaXhlbEJ1ZmZlckZvckl0ZW1UaW1lOmVhcmxp
ZXN0VGltZSBpdGVtVGltZUZvckRpc3BsYXk6bmlsXSk7CisgICAgICAgIGlmICghcGl4ZWxCdWZm
ZXIpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICB2aWRlb0ZyYW1lRW50cmllcy5hcHBl
bmQoeyBXVEZNb3ZlKHBpeGVsQnVmZmVyKSwgUEFMOjp0b01lZGlhVGltZShlYXJsaWVzdFRpbWUp
IH0pOworICAgIH0gd2hpbGUgKHRydWUpOworCisgICAgaWYgKHZpZGVvRnJhbWVFbnRyaWVzLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3ZpZGVv
RnJhbWVFbnRyaWVzID0gV1RGTW92ZSh2aWRlb0ZyYW1lRW50cmllcyksIHBhcmVudCA9IF9wYXJl
bnRdICgpIG11dGFibGUgeworICAgICAgICBpZiAocGFyZW50KQorICAgICAgICAgICAgcGFyZW50
LT5hZGRWaWRlb0ZyYW1lRW50cmllcyhXVEZNb3ZlKHZpZGVvRnJhbWVFbnRyaWVzKSk7CisgICAg
fSk7Cit9CisKKy0gKHZvaWQpb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOihBVlBsYXllckl0ZW1P
dXRwdXQgKilvdXRwdXQKK3sKKyAgICBBU1NFUlQoW291dHB1dCBpc0tpbmRPZkNsYXNzOlBBTDo6
Z2V0QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXRDbGFzcygpXSk7CisgICAgYXV0byogdmlkZW9PdXRw
dXQgPSAoQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQqKW91dHB1dDsKKyAgICBbdmlkZW9PdXRwdXQg
cmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJsZV07CisK
KyAgICBjYWxsT25NYWluUnVuTG9vcChbcGFyZW50ID0gX3BhcmVudF0geworICAgICAgICBpZiAo
cGFyZW50KQorICAgICAgICAgICAgcGFyZW50LT5wdXJnZVZpZGVvRnJhbWVFbnRyaWVzKCk7Cisg
ICAgfSk7Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2Jq
ZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9p
ZCopY29udGV4dAoreworICAgIGlmICghW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicmF0ZSJd
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJhdGVWYWx1ZSA9IChOU051bWJlciopW2No
YW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsKKyAgICBBU1NFUlQoW3Jh
dGVWYWx1ZSBpc0tpbmRPZkNsYXNzOk5TTnVtYmVyLmNsYXNzXSk7CisgICAgYXV0byByYXRlID0g
cmF0ZVZhbHVlLmZsb2F0VmFsdWU7CisKKyAgICBlbnN1cmVPbk1haW5SdW5Mb29wKFtwYXJlbnQg
PSBfcGFyZW50LCByYXRlXSB7CisgICAgICAgIGlmIChwYXJlbnQpCisgICAgICAgICAgICBwYXJl
bnQtPnJhdGVDaGFuZ2VkKHJhdGUpOworICAgIH0pOworfQorQGVuZAorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbE91dHB1dERlbGVnYXRlUXVl
dWUoKQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFF1ZXVlOworICAgIHN0
YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VU
b2tlbiwgXnsKKyAgICAgICAgZ2xvYmFsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldl
YlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgcXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwp
OworICAgIH0pOworICAgIHJldHVybiBnbG9iYWxRdWV1ZTsKK30KKworUmVmPFF1ZXVlZFZpZGVv
T3V0cHV0PiBRdWV1ZWRWaWRlb091dHB1dDo6Y3JlYXRlKEFWUGxheWVySXRlbSogaXRlbSwgQVZQ
bGF5ZXIqIHBsYXllcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBRdWV1ZWRWaWRlb091
dHB1dChpdGVtLCBwbGF5ZXIpKTsKK30KKworUXVldWVkVmlkZW9PdXRwdXQ6OlF1ZXVlZFZpZGVv
T3V0cHV0KEFWUGxheWVySXRlbSogaXRlbSwgQVZQbGF5ZXIqIHBsYXllcikKKyAgICA6IG1fcGxh
eWVySXRlbShpdGVtKQorICAgICwgbV9wbGF5ZXIocGxheWVyKQorICAgICwgbV9kZWxlZ2F0ZShh
ZG9wdE5TKFtbV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXJl
bnQ6dGhpc10pKQoreworICAgIG1fdmlkZW9PdXRwdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZQ
bGF5ZXJJdGVtVmlkZW9PdXRwdXRJbnN0YW5jZSgpIGluaXRXaXRoUGl4ZWxCdWZmZXJBdHRyaWJ1
dGVzOm5pbF0pOworICAgIFttX3ZpZGVvT3V0cHV0IHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0
KCkgcXVldWU6Z2xvYmFsT3V0cHV0RGVsZWdhdGVRdWV1ZSgpXTsKKyAgICBbbV92aWRlb091dHB1
dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsK
KworICAgIFttX3BsYXllckl0ZW0gYWRkT3V0cHV0Om1fdmlkZW9PdXRwdXQuZ2V0KCldOworCisg
ICAgW21fcGxheWVyIGFkZE9ic2VydmVyOm1fZGVsZWdhdGUuZ2V0KCkgZm9yS2V5UGF0aDpAInJh
dGUiIG9wdGlvbnM6KE5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgfCBOU0tleVZhbHVlT2Jz
ZXJ2aW5nT3B0aW9uSW5pdGlhbCkgY29udGV4dDpuaWxdOworCisgICAgbV92aWRlb1RpbWViYXNl
T2JzZXJ2ZXIgPSBbbV9wbGF5ZXIgYWRkUGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbDpQ
QUw6OkNNVGltZU1ha2UoMSwgNjApIHF1ZXVlOmdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKSB1
c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwcm90ZWN0ZWREZWxlZ2F0
ZSA9IG1fZGVsZWdhdGUsIHByb3RlY3RlZE91dHB1dCA9IG1fdmlkZW9PdXRwdXRdKENNVGltZSBj
dXJyZW50VGltZSkgbXV0YWJsZSB7CisKKyAgICAgICAgLy8gUGVyaW9kaWNhbGx5IGNoZWNrIGZv
ciBuZXcgYXZhaWxhYmxlIHBpeGVsIGJ1ZmZlcnMuCisgICAgICAgIFtwcm90ZWN0ZWREZWxlZ2F0
ZSBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOnByb3RlY3RlZE91dHB1dC5nZXQoKV07CisKKyAg
ICAgICAgLy8gQW5kIHB1cmdlIHRoZSBiYWNrIGJ1ZmZlciBvZiBwYXN0IGZyYW1lcy4KKyAgICAg
ICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gd2Vha1RoaXMsIHRpbWUgPSBQQUw6OnRv
TWVkaWFUaW1lKGN1cnJlbnRUaW1lKV0geworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAg
ICAgICAgICAgICAgIHdlYWtUaGlzLT5wdXJnZUltYWdlc0JlZm9yZVRpbWUodGltZSk7CisgICAg
ICAgIH0pOworICAgIH1dOworfQorCitRdWV1ZWRWaWRlb091dHB1dDo6flF1ZXVlZFZpZGVvT3V0
cHV0KCkKK3sKKyAgICBpbnZhbGlkYXRlKCk7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6
OmludmFsaWRhdGUoKQoreworICAgIGlmIChtX3ZpZGVvVGltZWJhc2VPYnNlcnZlcikgeworICAg
ICAgICBbbV9wbGF5ZXIgcmVtb3ZlVGltZU9ic2VydmVyOm1fdmlkZW9UaW1lYmFzZU9ic2VydmVy
LmdldCgpXTsKKyAgICAgICAgbV92aWRlb1RpbWViYXNlT2JzZXJ2ZXIgPSBuaWw7CisgICAgfQor
CisgICAgY2FuY2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisKKyAgICBpZiAobV92aWRlb091
dHB1dCkgeworICAgICAgICBbbV9wbGF5ZXJJdGVtIHJlbW92ZU91dHB1dDptX3ZpZGVvT3V0cHV0
LmdldCgpXTsKKyAgICAgICAgW21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bmlsIHF1ZXVlOm5p
bF07CisgICAgICAgIG1fdmlkZW9PdXRwdXQgPSBuaWw7CisgICAgfQorCisgICAgaWYgKG1fcGxh
eWVyKSB7CisgICAgICAgIFttX3BsYXllciByZW1vdmVPYnNlcnZlcjptX2RlbGVnYXRlLmdldCgp
IGZvcktleVBhdGg6QCJyYXRlIl07CisgICAgICAgIG1fcGxheWVyID0gbmlsOworICAgIH0KKwor
ICAgIG1fcGxheWVySXRlbSA9IG5pbDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE1heWJlQ29u
c3RNYXAsIHR5cGVuYW1lIE1heWJlQ29uc3RJdGVyID0gZGVjbHR5cGUoTWF5YmVDb25zdE1hcCgp
LmJlZ2luKCkpPgorTWF5YmVDb25zdEl0ZXIgZmluZEltYWdlRm9yVGltZShNYXliZUNvbnN0TWFw
JiBtYXAsIGNvbnN0IE1lZGlhVGltZSYgdGltZSkKK3sKKyAgICAvLyBPdXRwdXRzIG9mIEFWUGxh
eWVySXRlbVZpZGVvT3V0cHV0IGhhdmUgYSBkaXNwbGF5IHRpbWUsIGJ1dCBub3QgYSBkdXJhdGlv
bjsgdGhleSBhcmUgdmFsaWQKKyAgICAvLyB1bnRpbCB0aGUgYXJyaXZhbCBvZiBhIGxhdGVyIGZy
YW1lLiBGaW5kIHRoaXMgZnJhbWUgZWZmaWNpZW50bHkgdXNpbmcgc2V0Ojp1cHBlcl9ib3VuZCB0
byBmaW5kCisgICAgLy8gdGhlIG5leHQgZGlzcGxheWFibGUgZnJhbWUsIGFuZCB3YWxrIGJhY2t3
YXJkcyBieSBvbmUgdG8gZmluZCBhIGZyYW1lIGZvciB0aGUgdGFyZ2V0IHRpbWUuCisgICAgaWYg
KG1hcC5lbXB0eSgpKQorICAgICAgICByZXR1cm4gbWFwLmVuZCgpOworCisgICAgYXV0byBpdGVy
ID0gbWFwLnVwcGVyX2JvdW5kKHRpbWUpOworICAgIGlmIChpdGVyID09IG1hcC5iZWdpbigpKQor
ICAgICAgICByZXR1cm4gbWFwLmVuZCgpOworCisgICAgcmV0dXJuIC0taXRlcjsKK30KKworYm9v
bCBRdWV1ZWRWaWRlb091dHB1dDo6aGFzSW1hZ2VGb3JUaW1lKGNvbnN0IE1lZGlhVGltZSYgdGlt
ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJhbWVzLCB0
aW1lKSAhPSBtX3ZpZGVvRnJhbWVzLmVuZCgpOworfQorCithdXRvIFF1ZXVlZFZpZGVvT3V0cHV0
Ojp0YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpIC0+IFZp
ZGVvRnJhbWVFbnRyeQoreworICAgIGF1dG8gaXRlciA9IGZpbmRJbWFnZUZvclRpbWUobV92aWRl
b0ZyYW1lcywgdGltZSk7CisgICAgaWYgKGl0ZXIgPT0gbV92aWRlb0ZyYW1lcy5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpIH07CisKKyAg
ICBWaWRlb0ZyYW1lRW50cnkgZW50cnkgPSB7IFdURk1vdmUoaXRlci0+c2Vjb25kKSwgaXRlci0+
Zmlyc3QgfTsKKworICAgIC8vIFB1cmdlIGFsbCBmcmFtZXMgYmVmb3JlIGB0aW1lYCwgc28gdGhh
dCByZXBlYXRlZCBjYWxscyB3aXRoIHRoZSBzYW1lIHRpbWUgZG9uJ3QgcmV0dXJuCisgICAgLy8g
c3VjY2Vzc2l2ZWx5IGVhcmxpZXIgaW1hZ2VzLgorICAgIG1fdmlkZW9GcmFtZXMuZXJhc2UobV92
aWRlb0ZyYW1lcy5iZWdpbigpLCArK2l0ZXIpOworCisgICAgcmV0dXJuIGVudHJ5OworfQorCit2
b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjphZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoY29u
c3QgQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyJiBvYnNlcnZlcikKK3sKKyAgICBtX2N1cnJl
bnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsKKyAgICBjb25maWd1cmVOZXh0
SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKworICAgIFttX3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmlj
YXRpb25PZk1lZGlhRGF0YUNoYW5nZUFzU29vbkFzUG9zc2libGVdOworfQorCit2b2lkIFF1ZXVl
ZFZpZGVvT3V0cHV0Ojpjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKQoreworICAgIGlm
IChtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gY3VycmVudFRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKFttX3BsYXllciBjdXJyZW50VGltZV0p
OworICAgIGF1dG8gaXRlciA9IGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywgY3VycmVu
dFRpbWUpOworICAgIGlmIChpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkgfHwgKytpdGVyID09
IG1fdmlkZW9GcmFtZXMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbmV4dElt
YWdlVGltZSA9IGl0ZXItPmZpcnN0OworCisgICAgbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVy
ID0gW21fcGxheWVyIGFkZEJvdW5kYXJ5VGltZU9ic2VydmVyRm9yVGltZXM6QFtbTlNWYWx1ZSB2
YWx1ZVdpdGhDTVRpbWU6UEFMOjp0b0NNVGltZShjdXJyZW50VGltZSldXSBxdWV1ZTpnbG9iYWxP
dXRwdXREZWxlZ2F0ZVF1ZXVlKCkgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfSwgcHJvdGVjdGVkRGVsZWdhdGUgPSBtX2RlbGVnYXRlLCBwcm90ZWN0ZWRPdXRwdXQgPSBt
X3ZpZGVvT3V0cHV0XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dl
YWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykK
KyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bmV4dEltYWdlVGltZVJlYWNoZWQoKTsKKyAgICAg
ICAgfSk7CisgICAgfV07Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmNhbmNlbE5leHRJ
bWFnZVRpbWVPYnNlcnZlcigpCit7CisgICAgaWYgKCFtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFttX3BsYXllciByZW1vdmVUaW1lT2JzZXJ2ZXI6
bV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyLmdldCgpXTsKKyAgICBtX25leHRJbWFnZVRpbWVi
YXNlT2JzZXJ2ZXIgPSBuaWw7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6Om5leHRJbWFn
ZVRpbWVSZWFjaGVkKCkKK3sKKyAgICBjYW5jZWxOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAg
ICBhdXRvIG9ic2VydmVycyA9IHN0ZDo6ZXhjaGFuZ2UobV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2Jz
ZXJ2ZXJzLCB7IH0pOworICAgIG9ic2VydmVycy5mb3JFYWNoKFtdKGF1dG8mIG9ic2VydmVyKSB7
IG9ic2VydmVyKCk7IH0pOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjphZGRWaWRlb0Zy
YW1lRW50cmllcyhWZWN0b3I8VmlkZW9GcmFtZUVudHJ5PiYmIHZpZGVvRnJhbWVFbnRyaWVzKQor
eworICAgIGJvb2wgbmVlZHNJbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCA9IGZhbHNlOworICAg
IGJvb2wgaGFzQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycyA9IG1fY3VycmVudEltYWdlQ2hh
bmdlZE9ic2VydmVycy5jb21wdXRlU2l6ZSgpOworICAgIE1lZGlhVGltZSBjdXJyZW50VGltZSA9
IGhhc0N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMgPyBQQUw6OnRvTWVkaWFUaW1lKFttX3Bs
YXllciBjdXJyZW50VGltZV0pIDogTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpOworCisgICAgZm9y
IChhdXRvJiBlbnRyeSA6IHZpZGVvRnJhbWVFbnRyaWVzKSB7CisgICAgICAgIGlmIChoYXNDdXJy
ZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzICYmIGVudHJ5LmRpc3BsYXlUaW1lIDw9IGN1cnJlbnRU
aW1lKQorICAgICAgICAgICAgbmVlZHNJbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCA9IHRydWU7
CisgICAgICAgIG1fdmlkZW9GcmFtZXMuZW1wbGFjZShlbnRyeS5kaXNwbGF5VGltZSwgV1RGTW92
ZShlbnRyeS5waXhlbEJ1ZmZlcikpOworICAgIH0KKworICAgIGlmIChuZWVkc0ltYWdlRm9yQ3Vy
cmVudFRpbWVDaGFuZ2VkKQorICAgICAgICBuZXh0SW1hZ2VUaW1lUmVhY2hlZCgpOworICAgIGVs
c2UgaWYgKGhhc0N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMpCisgICAgICAgIGNvbmZpZ3Vy
ZU5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworCisgICAgaWYgKG1fcGF1c2VkKQorICAgICAgICBb
bV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25B
c1Bvc3NpYmxlXTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VWaWRlb0ZyYW1l
RW50cmllcygpCit7CisgICAgY2FuY2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisgICAgbV92
aWRlb0ZyYW1lcy5jbGVhcigpOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpwdXJnZUlt
YWdlc0JlZm9yZVRpbWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lKQoreworICAgIG1fdmlkZW9GcmFt
ZXMuZXJhc2UobV92aWRlb0ZyYW1lcy5iZWdpbigpLCBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9G
cmFtZXMsIHRpbWUpKTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6cmF0ZUNoYW5nZWQo
ZmxvYXQgcmF0ZSkKK3sKKyAgICBtX3BhdXNlZCA9ICFyYXRlOworCisgICAgaWYgKG1fcGF1c2Vk
KQorICAgICAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFD
aGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKK30KKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNjOGYx
OGI2MTMwN2FlZWNkNTc2NjI5YjUxMzIwZGE4MGNlMDg0MWMuLjEzMjBhNTlkMjhkMmI0YzY1NzI3
YWY3MTRhNjZhOWQwNDMwZWFmYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMS0wOCAg
SmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIHJWRkMo
KSBpc24ndCBjYWxsZWQgZm9yIGluaXRpYWwgdmlkZW8gbG9hZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MDA2CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1l
LWxvYWRzdGFydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3JlcXVlc3Qt
dmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3JlcXVl
c3QtdmlkZW8tZnJhbWUtc2Vlay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlh
L3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay5odG1sOiBBZGRlZC4KKwogMjAyMi0wMS0wNCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEhhbmcgaW4g
QVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbDo6Yml0cmF0ZSgpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODY0YzM4MWI0Mzc0M2VkNGNmYTFiNjA5NGMwYjg4NzE0NDRhMTM0Nwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
bG9hZHN0YXJ0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUlVOOiB2aWRlby5yZXF1
ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGNhbGxiYWNrKQorUlVOKHZpZGVvLnNyYyA9IGZpbmRNZWRp
YUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpKQorUHJvbWlzZSByZXNvbHZlZCBPSworRU5E
IE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1m
cmFtZS1sb2Fkc3RhcnQuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJh
bWUtbG9hZHN0YXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJiYjFmNjU5YWNhNGI4ODY5Y2M0YTQ0ZjZh
ZDkzNTJjNDQ4NmJjZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVl
c3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorCTx0aXRsZT5yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRz
dGFydDwvdGl0bGU+CisJPHNjcmlwdCBzcmM9InZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorCTxz
Y3JpcHQgc3JjPSJtZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KKwk8c2NyaXB0PgorCXdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworCQlmaW5kTWVkaWFFbGVt
ZW50KCk7CisKKwkJbGV0IHZpZGVvRnJhbWVQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUs
IHJlamVjdCkgPT4geworCQkJY29uc29sZVdyaXRlKCdSVU46IHZpZGVvLnJlcXVlc3RWaWRlb0Zy
YW1lQ2FsbGJhY2soY2FsbGJhY2spJyk7CisJCQl2aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxi
YWNrKHJlc29sdmUpOworCQl9KTsKKworCQlydW4oJ3ZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUo
InZpZGVvIiwgImNvbnRlbnQvdGVzdCIpJyk7CisKKwkJYXdhaXQgc2hvdWxkUmVzb2x2ZSh2aWRl
b0ZyYW1lUHJvbWlzZSk7CisKKwkJZW5kVGVzdCgpOworCX0pOworCTwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CisJPHZpZGVvIG11dGVkPjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvcmVx
dWVzdC12aWRlby1mcmFtZS1zZWVrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3Jl
cXVlc3QtdmlkZW8tZnJhbWUtc2Vlay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWU4MTE4NjIw
ODQzZTFjMDEzN2ViOTliMzVhOGY4YzkzY2NmMTQwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw4IEBACisKK1JVTih2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250
ZW50L3Rlc3QiKSkKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorUlVOOiB2aWRlby5yZXF1ZXN0Vmlk
ZW9GcmFtZUNhbGxiYWNrKGNhbGxiYWNrKQorUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMC41KQor
UHJvbWlzZSByZXNvbHZlZCBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1zZWVrLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRp
YS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWsuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZmQxNWY1ZGZmOGE2
YzQwYWMyZjE1MGY5NDRlZGUyZmU3YmI5NjkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1zZWVrLmh0bWwKQEAgLTAsMCArMSwzMSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorCTx0aXRsZT5yZXF1ZXN0LXZpZGVvLWZy
YW1lLWxvYWRzdGFydDwvdGl0bGU+CisJPHNjcmlwdCBzcmM9InZpZGVvLXRlc3QuanMiPjwvc2Ny
aXB0PgorCTxzY3JpcHQgc3JjPSJtZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KKwk8c2NyaXB0Pgor
CXdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworCQlmaW5k
TWVkaWFFbGVtZW50KCk7CisKKwkJcnVuKCd2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRl
byIsICJjb250ZW50L3Rlc3QiKScpOworCisJCWF3YWl0IHdhaXRGb3IodmlkZW8sICdjYW5wbGF5
dGhyb3VnaCcpOworCisJCWxldCB2aWRlb0ZyYW1lUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNv
bHZlLCByZWplY3QpID0+IHsKKwkJCWNvbnNvbGVXcml0ZSgnUlVOOiB2aWRlby5yZXF1ZXN0Vmlk
ZW9GcmFtZUNhbGxiYWNrKGNhbGxiYWNrKScpOworCQkJdmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVD
YWxsYmFjayhyZXNvbHZlKTsKKwkJfSk7CisKKwkJcnVuKCd2aWRlby5jdXJyZW50VGltZSA9IDAu
NScpOworCisJCWF3YWl0IHNob3VsZFJlc29sdmUodmlkZW9GcmFtZVByb21pc2UpOworCisJCWVu
ZFRlc3QoKTsKKwl9KTsKKwk8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCTx2aWRlbyBtdXRl
ZD48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448678</attachid>
            <date>2022-01-08 12:16:59 -0800</date>
            <delta_ts>2022-01-08 13:09:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235006-20220108121658.patch</filename>
            <type>text/plain</type>
            <size>48995</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU0MDAxODYyMzlkYzQ5
NTJjMTJlY2YwNTczNzg3ZjBmYWI3MTA0YS4uM2YyZjAxNDUxYTA3NjgwNTc0MTk4ODIxMWZmNjgx
YzA4NThmZTZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIyLTAxLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gclZGQygpIGlz
bid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogbWVkaWEvcmVxdWVzdC12aWRlby1mcmFt
ZS1sb2Fkc3RhcnQuaHRtbAorICAgICAgICAgICAgICAgbWVkaWEvcmVxdWVzdC12aWRlby1mcmFt
ZS1zZWVrLmh0bWwKKworICAgICAgICBBZGQgYSBuZXcgdXRpbGl0eSBjbGFzcywgUXVldWVkVmlk
ZW9PdXRwdXQsIHdoaWNoIHdpbGwgcHVsbCBwaXhlbCBidWZmZXJzIG91dCBvZiBhbiBBVlBsYXll
ckl0ZW1WaWRlb091dHB1dAorICAgICAgICBwcmUtZW1wdGl2ZWx5LiBPbmNlIHRob3NlIHBpeGVs
IGJ1ZmZlcnMgYXJlIGVucXVldWVkIGxvY2FsbHksIHRoZWlyIGFzc29jaWF0ZWQgdGltaW5nIGlu
Zm9ybWF0aW9uIGNhbiBiZSB1c2VkIHRvCisgICAgICAgIGZpcmUgYSBjYWxsYmFjayBmb3IgdGhh
dCBidWZmZXIncyBkaXNwbGF5IHRpbWUuCisKKyAgICAgICAgUHJldmlvdXNseSwgcGFpbnRzIHdl
cmUgYmxvY2tlZCBmcm9tIHB1bGxpbmcgbmV3IHBpeGVsIGJ1ZmZlcnMgZnJvbSB0aGUgdmlkZW8g
b3V0cHV0LiBXaXRoIHRoZSBRdWV1ZWRWaWRlb091dHB1dAorICAgICAgICBjbGFzcywgdGhpcyBp
cyBubyBsb25nZXIgbmVjZXNzYXJ5LiBUaGUgUXVldWVkVmlkZW9PdXRwdXQgd2lsbCBub3RpZnkg
aXRzIGNsaWVudCB3aGVuIHRoZSBpbWFnZSBmb3IgY3VycmVudFRpbWUKKyAgICAgICAgY2hhbmdl
cywgYW5kIG90aGVyIGNsaWVudHMgY2FuIGZyZWVseSBhc2sgZm9yIHRoZSBjdXJyZW50VGltZSdz
IGltYWdlLgorCisgICAgICAgIFRvIGN1cmIgcnVuYXdheSBtZW1vcnkgZ3Jvd3RoLCBmcmFtZXMg
YXJlIHB1cmdlZCBhcyBzb29uIGFzIGEgbmV3IGltYWdlIGZvciB0aGUgY3VycmVudCB0aW1lIGlz
IGF2YWlsYWJsZSwgYW5kIHdoZW4KKyAgICAgICAgdGhlIHZpZGVvIG91dHB1dCBzaWduYWxzIHRo
YXQgaXRzIG93biBxdWV1ZXMgd2VyZSBwdXJnZWQuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpo
YXNBdmFpbGFibGVWaWRlb0ZyYW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUlt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN0YXJ0VmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVy
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OmNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvVHJhY2tzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZVZp
ZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmRlc3Ryb3lWaWRlb091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dmlkZW9P
dXRwdXRIYXNBdmFpbGFibGVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRw
dXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNv
bG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpn
bG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURh
dGFXaWxsQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQ29yZUFWRlB1bGxEZWxlZ2F0
ZSBpbml0V2l0aFBsYXllcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQ29yZUFWRlB1bGxE
ZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIG91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1
ZWRWaWRlb091dHB1dC5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbTogQWRkZWQuCisgICAgICAgICgtW1dl
YlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgaW5pdFdpdGhQYXJlbnQ6XSk6CisgICAgICAgICgt
W1dlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTpd
KToKKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBvdXRwdXRTZXF1ZW5j
ZVdhc0ZsdXNoZWQ6XSk6CisgICAgICAgICgtW1dlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUg
b2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKKyAgICAg
ICAgKFdlYkNvcmU6Omdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRW
aWRlb091dHB1dDo6UXVldWVkVmlkZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVk
VmlkZW9PdXRwdXQ6On5RdWV1ZWRWaWRlb091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1
ZWRWaWRlb091dHB1dDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpkZWNsdHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6aGFzSW1hZ2VGb3JUaW1lIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0Ojp0YWtlVmlkZW9GcmFt
ZUVudHJ5Rm9yVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6YWRk
Q3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZp
ZGVvT3V0cHV0Ojpjb25maWd1cmVOZXh0SW1hZ2VPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpRdWV1ZWRWaWRlb091dHB1dDo6aW1hZ2VGb3JDdXJyZW50VGltZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmFkZFZpZGVvRnJhbWVFbnRyaWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpwdXJnZVZpZGVvRnJhbWVFbnRyaWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpwdXJnZUltYWdlc0JlZm9y
ZVRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnJhdGVDaGFuZ2Vk
KToKKwogMjAyMS0xMi0xNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbUmVmYWN0b3JdIEFkb3B0IExvZ2dlckhlbHBlciBpbiBMb2dnaW5nIEVNRSBjbGFzc2Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwppbmRleCAwOTg1YWQwNmYyNzk0OTM2ODUxMjZlMTZjZTIyMDE4ZjQ1
NTRkMDk4Li5iNjZmOGViYTBjMmZlMGRjZmQzYmNkYzczMTY2ZWMzODk0OWQyZTg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMi0wMS0wOCAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIHJWRkMoKSBpc24ndCBjYWxsZWQg
Zm9yIGluaXRpYWwgdmlkZW8gbG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM1MDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oOgorCiAyMDIy
LTAxLTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODc2OTguCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oCmluZGV4IDhiN2ZmMTIzN2Ew
YzhjMjJmODgyZmEwYmZlZWU4YmQzYWQ0Y2I3MTIuLjUzMTU1ZTkxNWJmNDEyNzcwYzkwZTRjZjFk
ZGEwY2UyM2FkMjk5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nv
Y29hL0FWRm91bmRhdGlvblNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nv
Y29hL0FWRm91bmRhdGlvblNQSS5oCkBAIC00MCw5ICs0MCwxMCBAQAogI2ltcG9ydCA8QVZGb3Vu
ZGF0aW9uL0FWTWVkaWFTZWxlY3Rpb25Hcm91cF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZPdXRwdXRDb250ZXh0X1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
Vk91dHB1dERldmljZS5oPgotI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyX1ByaXZhdGUu
aD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1PdXRwdXRfUHJpdmF0ZS5oPgog
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVySXRlbV9Qcml2YXRlLmg+CiAjaW1wb3J0IDxB
VkZvdW5kYXRpb24vQVZQbGF5ZXJMYXllcl9Qcml2YXRlLmg+CisjaW1wb3J0IDxBVkZvdW5kYXRp
b24vQVZQbGF5ZXJfUHJpdmF0ZS5oPgogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKQEAgLTY2LDYgKzY3LDcgQEAgTlNfQVNTVU1F
X05PTk5VTExfRU5ECiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJlU2Vzc2lvbi5oPgog
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24v
QVZQbGF5ZXJJdGVtLmg+CisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtT3V0cHV0
Lmg+CiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9JTlRFUlNUSVRJQUxfRVZFTlRTKQogI2ltcG9y
dCA8QVZGb3VuZGF0aW9uL0FWUGxheWVySW50ZXJzdGl0aWFsRXZlbnRDb250cm9sbGVyLmg+CkBA
IC05Miw2ICs5NCwxMCBAQCB0eXBlZGVmIE5TU3RyaW5nICogQVZWaWRlb1JhbmdlIE5TX1RZUEVE
X0VOVU07CiBAZW5kCiAjZW5kaWYKIAorQGludGVyZmFjZSBBVlBsYXllckl0ZW1WaWRlb091dHB1
dCAoQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXRFYXJsaWVzdFRpbWUpCitAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIENNVGltZSBlYXJsaWVzdEF2YWlsYWJsZVBpeGVsQnVmZmVySXRlbVRp
bWU7CitAZW5kCisKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSB8fCBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY1YjdjMzkw
ODdhMzcyY2M0MTFlNzk4MGRkZDIzNTNiNGJlZDE5NDkuLjFjOWMxZDBiYjE2MTc4Mjg1YWVmM2Ex
YjExZDliZDM3NDc0ZWUzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ0NDYsNiArNDQ0Niw4IEBACiAJCUNEMUY5QjREMjcw
RDAzQTkwMDYxN0VCNiAvKiBTY3JvbGxFeHRlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDFGOUI0QzI3MEQwM0E5MDA2MTdFQjYgLyogU2Nyb2xs
RXh0ZW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUNEMUY5QjdEMjcwRTY2NzgwMDYxN0VCNiAvKiBIVE1MQW5jaG9yRWxlbWVudElubGluZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5QjdD
MjcwRTY2NzgwMDYxN0VCNiAvKiBIVE1MQW5jaG9yRWxlbWVudElubGluZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDFGOUI4MDI3MEU2NzFB
MDA2MTdFQjYgLyogU1ZHRWxlbWVudElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5QjdGMjcwRTY3MUEwMDYxN0VCNiAvKiBTVkdFbGVt
ZW50SW5saW5lcy5oICovOyB9OworCQlDRDIwRUQzQzI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVk
VmlkZW9PdXRwdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEMjBFRDNBMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5oICovOyB9
OworCQlDRDIwRUQzRDI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDIwRUQzQjI3ODc4
RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQubW0gKi87IH07CiAJCUNEMjI1QzBCMUM0
NkZCRjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyMjVDMDkxQzQ2RkJGNDAwMTQwNzYxIC8q
IFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gKi87IH07CiAJCUNEMjI1QzBDMUM0NkZCRjQwMDE0MDc2
MSAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDIyNUMwQTFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJM
U2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUNEMjdBRTUwMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3QUU0RTIy
QTk4Njg3MDA5NDdGRjkgLyogSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTg1Niw2ICsxNTg1OCw4IEBA
CiAJCUNEMUY5QjcwMjcwREZBN0YwMDYxN0VCNiAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNEMUY5QjdDMjcwRTY2NzgwMDYxN0VCNiAvKiBIVE1MQW5jaG9yRWxlbWVu
dElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEFuY2hvckVsZW1lbnRJbmxpbmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMUY5QjdGMjcwRTY3MUEwMDYxN0VCNiAvKiBT
VkdFbGVtZW50SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdFbGVtZW50SW5saW5lcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDIwRUQzQTI3ODc4RkZCMDAzOEJFNDQgLyog
UXVldWVkVmlkZW9PdXRwdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVldWVkVmlkZW9PdXRwdXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyMEVEM0IyNzg3OEZGQjAwMzhCRTQ0IC8q
IFF1ZXVlZFZpZGVvT3V0cHV0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUXVldWVkVmlkZW9P
dXRwdXQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMjI1QzA5MUM0NkZCRjQw
MDE0MDc2MSAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0QyMjVDMEExQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNl
c3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI3QUU0RTIyQTk4Njg3MDA5
NDdGRjkgLyogSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVJv
dGF0aW9uU2Vzc2lvblZULmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDU5OSw2
ICszMDYwMyw4IEBACiAJCQkJQ0RDOEI1QTUxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakMuaCAqLywKIAkJCQlDREM4QjVBNDE4MDQ3NEY3MDAxNkU2ODUgLyogTWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSAqLywKIAkJCQk3QTI5RjU3MTE4QzY5NTE0MDA0RDBG
ODEgLyogT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovLAorCQkJCUNEMjBFRDNBMjc4
NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5oICovLAorCQkJCUNEMjBFRDNCMjc4
NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSAqLywKIAkJCQlDREY5OTRGQTI0
QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oICovLAogCQkJCUNE
Rjk5NEZCMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tICov
LAogCQkJCUNEQzhCNUE5MTgwNDdGRjEwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5oICovLApAQCAtMzY1NjcsNiArMzY1NzMsNyBAQAogCQkJCUVCMEZCNzBEMjcwRDBCMkUw
MEY3ODEwRCAvKiBQdXNoU3Vic2NyaXB0aW9uT3B0aW9uc0luaXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4M0MxRjU5NDFFREY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDIwRUQzQzI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVk
VmlkZW9PdXRwdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNUUzMUY0MUUwQ0IwQjUwMDRCMzcx
QyAvKiBRdWlja0xvb2suaCBpbiBIZWFkZXJzICovLAogCQkJCTlCQUVFOTJDMjIzODhBN0QwMDQx
NTdBOSAvKiBRdWlya3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUUzNzE3MTM3MzZBNjYwMEI5
RTkxOSAvKiBRdW90ZWRQcmludGFibGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzg1NDcsNiArMzg1
NTQsNyBAQAogCQkJCUFBMTJERjQ5MTc0M0RGODMwMDREQUZERiAvKiBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREEyOUEzMDFDQkY3NEQ0MDA5
MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0gaW4gU291cmNlcyAqLywK
IAkJCQlDREEyOUExNjFDQkRBNTZDMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0QyMEVEM0QyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1
ZXVlZFZpZGVvT3V0cHV0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQyNDkyMTI3QjkzRTAw
NjM0RkNGIC8qIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDcxQzAwNEIyNzBCODY0OTAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3Vy
Y2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzJCMUFFQzIyMzk3RUJDMDBCOTFDRjcgLyogUmVz
b3VyY2VSZXNwb25zZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgK
aW5kZXggMWU2NTc1NzI0NjU0OTczNDNjZGUyYTI0ZDhmMGRjNmI0ZTAyNjdlMS4uNmEzMjJkOTQx
MTUyYzhkMDQ5OTY4NmNiNTQ1OWQyNTdiMGU3ZmExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPENvcmVNZWRpYS9DTVRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9PYnNlcnZlci5oPgogCiBPQkpDX0NMQVNTIEFWQXNzZXRJbWFnZUdlbmVyYXRvcjsKIE9CSkNf
Q0xBU1MgQVZBc3NldFRyYWNrOwpAQCAtNjcsNiArNjgsNyBAQCBjbGFzcyBJbmJhbmRNZXRhZGF0
YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3Mg
TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNW
OworY2xhc3MgUXVldWVkVmlkZW9PdXRwdXQ7CiBjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgVmlkZW9MYXllck1hbmFnZXJPYmpDOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVB
VkZPYmpDOwpAQCAtMjUyLDggKzI1NCw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGNyZWF0ZUltYWdlRm9yVGltZUluUmVjdChmbG9hdCwgY29uc3QgRmxvYXRSZWN0Jik7
CiAgICAgdm9pZCBwYWludFdpdGhJbWFnZUdlbmVyYXRvcihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmKTsKIAotICAgIGVudW0gY2xhc3MgVXBkYXRlVHlwZSB7IFVwZGF0ZVN5bmNo
cm9ub3VzbHksIFVwZGF0ZUFzeW5jaHJvbm91c2x5IH07Ci0gICAgdm9pZCB1cGRhdGVMYXN0SW1h
Z2UoVXBkYXRlVHlwZSB0eXBlID0gVXBkYXRlVHlwZTo6VXBkYXRlQXN5bmNocm9ub3VzbHkpOwor
ICAgIHZvaWQgdXBkYXRlTGFzdEltYWdlKCk7CiAKICAgICB2b2lkIGNyZWF0ZVZpZGVvT3V0cHV0
KCk7CiAgICAgdm9pZCBkZXN0cm95VmlkZW9PdXRwdXQoKTsKQEAgLTI2Miw3ICsyNjMsNiBAQCBw
cml2YXRlOgogICAgIHZvaWQgcGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0Jik7CiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCkgZmluYWw7CiAgICAgRGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3Bh
Y2UoKSBmaW5hbDsKLSAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFu
Z2UoKTsKIAogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBwaXhlbEJ1ZmZlckZvckN1
cnJlbnRUaW1lKCkgZmluYWw7CiAKQEAgLTM0Nyw3ICszNDcsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgc3RhcnRWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmcoKSBmaW5hbDsKICAgICB2b2lkIHN0
b3BWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmcoKSBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFs
PFZpZGVvRnJhbWVNZXRhZGF0YT4gdmlkZW9GcmFtZU1ldGFkYXRhKCkgZmluYWwgeyByZXR1cm4g
c3RkOjpleGNoYW5nZShtX3ZpZGVvRnJhbWVNZXRhZGF0YSwgeyB9KTsgfQotICAgIHZvaWQgY2hl
Y2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoQ01UaW1lKTsKKyAgICB2b2lkIGNoZWNrTmV3VmlkZW9G
cmFtZU1ldGFkYXRhKCk7CiAKICAgICBSZXRhaW5QdHI8QVZVUkxBc3NldD4gbV9hdkFzc2V0Owog
ICAgIFJldGFpblB0cjxBVlBsYXllcj4gbV9hdlBsYXllcjsKQEAgLTM2Nyw3ICszNjcsNyBAQCBw
cml2YXRlOgogI2VuZGlmCiAKICAgICBSZXRhaW5QdHI8QVZBc3NldEltYWdlR2VuZXJhdG9yPiBt
X2ltYWdlR2VuZXJhdG9yOwotICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW1WaWRlb091dHB1dD4g
bV92aWRlb091dHB1dDsKKyAgICBSZWZQdHI8UXVldWVkVmlkZW9PdXRwdXQ+IG1fdmlkZW9PdXRw
dXQ7CiAgICAgUmV0YWluUHRyPFdlYkNvcmVBVkZQdWxsRGVsZWdhdGU+IG1fdmlkZW9PdXRwdXRE
ZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gbV9sYXN0UGl4ZWxCdWZm
ZXI7CiAgICAgUmVmUHRyPE5hdGl2ZUltYWdlPiBtX2xhc3RJbWFnZTsKQEAgLTQzNSw3ICs0MzUs
NiBAQCBwcml2YXRlOgogICAgIG11dGFibGUgbG9uZyBsb25nIG1fY2FjaGVkVG90YWxCeXRlcyB7
IDAgfTsKICAgICB1bnNpZ25lZCBtX3BlbmRpbmdTdGF0dXNDaGFuZ2VzIHsgMCB9OwogICAgIGlu
dCBtX2NhY2hlZEl0ZW1TdGF0dXM7Ci0gICAgaW50IG1fcnVuTG9vcE5lc3RpbmdMZXZlbCB7IDAg
fTsKICAgICBNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5IG1fYnVmZmVyaW5nUG9saWN5IHsg
TWVkaWFQbGF5ZXI6OkJ1ZmZlcmluZ1BvbGljeTo6RGVmYXVsdCB9OwogICAgIGJvb2wgbV9jYWNo
ZWRMaWtlbHlUb0tlZXBVcCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2NhY2hlZEJ1ZmZlckVtcHR5
IHsgZmFsc2UgfTsKQEAgLTQ1Niw3ICs0NTUsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91
bGRQbGF5VG9QbGF5YmFja1RhcmdldCB7IGZhbHNlIH07CiAjZW5kaWYKICAgICBib29sIG1faGF2
ZVByb2Nlc3NlZENoYXB0ZXJUcmFja3MgeyBmYWxzZSB9OwotICAgIGJvb2wgbV93YWl0Rm9yVmlk
ZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlVGltZWRPdXQgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9oYXZlQmVlbkFza2VkVG9QYWludCB7IGZhbHNlIH07CiAgICAgdWludDY0X3QgbV9zYW1wbGVD
b3VudCB7IDAgfTsKICAgICBSZXRhaW5QdHI8aWQ+IG1fdmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVy
aW5nT2JzZXJ2ZXI7CkBAIC00NjQsNiArNDYyLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlv
bmFsPFZpZGVvRnJhbWVNZXRhZGF0YT4gbV92aWRlb0ZyYW1lTWV0YWRhdGE7CiAgICAgbXV0YWJs
ZSBzdGQ6Om9wdGlvbmFsPE5TVGltZUludGVydmFsPiBtX2NhY2hlZFNlZWthYmxlVGltZVJhbmdl
c0xhc3RNb2RpZmllZFRpbWU7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPE5TVGltZUludGVy
dmFsPiBtX2NhY2hlZExpdmVVcGRhdGVJbnRlcnZhbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8T2Jz
ZXJ2ZXI8dm9pZCgpPj4gbV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXI7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBjMDY3Y2NlODA2ODZmN2ExYmM1NDE0YmFmNzdmNzUy
NTJiZjM0MmM3Li5lMGM0MjRmYWVjMzNlNTg5ODVmN2FkNDkzN2U2MWNiODI0N2Q4ZTFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTU4LDYgKzU4LDcgQEAKICNpbXBvcnQgIlBsYXRmb3Jt
U2NyZWVuLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVRleHRUcmFjay5oIgogI2ltcG9ydCAiUGxhdGZv
cm1UaW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJRdWV1ZWRWaWRlb091dHB1dC5oIgogI2ltcG9ydCAi
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJTY3JpcHREaXNhbGxvd2VkU2Nv
cGUuaCIKICNpbXBvcnQgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC0yMDUsMTYgKzIwNiw2IEBAIC0g
KGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM+JiYpcGxheWVyOwogLSAoQk9PTClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNl
TG9hZGVyICopcmVzb3VyY2VMb2FkZXIgc2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlcXVlc3RlZFJl
c291cmNlOihBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKWxvYWRpbmdSZXF1ZXN0Owog
QGVuZAogCi1AaW50ZXJmYWNlIFdlYkNvcmVBVkZQdWxsRGVsZWdhdGUgOiBOU09iamVjdDxBVlBs
YXllckl0ZW1PdXRwdXRQdWxsRGVsZWdhdGU+IHsKLSAgICBCaW5hcnlTZW1hcGhvcmUgbV9zZW1h
cGhvcmU7Ci19Ci0tIChpZClpbml0V2l0aFBsYXllcjooV2Vha1B0cjxNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDPiYmKXBsYXllcjsKLS0gKHZvaWQpb3V0cHV0TWVkaWFEYXRhV2ls
bENoYW5nZTooQVZQbGF5ZXJJdGVtT3V0cHV0ICopc2VuZGVyOwotLSAodm9pZClvdXRwdXRTZXF1
ZW5jZVdhc0ZsdXNoZWQ6KEFWUGxheWVySXRlbU91dHB1dCAqKW91dHB1dDsKLQotQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBCaW5hcnlTZW1hcGhvcmUmIHNlbWFwaG9yZTsKLUBlbmQK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25U
b1N0cmluZyhBVlBsYXllclRpbWVDb250cm9sU3RhdHVzIGVudW1lcmF0aW9uVmFsdWUpCiB7CkBA
IC0yNjEsMTYgKzI1Miw2IEBAIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbExvYWRlckRl
bGVnYXRlUXVldWUoKQogICAgIHJldHVybiBnbG9iYWxRdWV1ZTsKIH0KIAotc3RhdGljIGRpc3Bh
dGNoX3F1ZXVlX3QgZ2xvYmFsUHVsbERlbGVnYXRlUXVldWUoKQotewotICAgIHN0YXRpYyBkaXNw
YXRjaF9xdWV1ZV90IGdsb2JhbFF1ZXVlOwotICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25j
ZVRva2VuOwotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgZ2xvYmFs
UXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVBVkZQdWxsRGVsZWdhdGUgcXVl
dWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOwotICAgIH0pOwotICAgIHJldHVybiBnbG9iYWxR
dWV1ZTsKLX0KLQogc3RhdGljIHZvaWQgcmVnaXN0ZXJGb3JtYXRSZWFkZXJJZk5lY2Vzc2FyeSgp
CiB7CiAjaWYgRU5BQkxFKFdFQk1fRk9STUFUX1JFQURFUikKQEAgLTQ2OSw3ICs0NTAsOCBAQCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp+TWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQygpCiAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9yZXNvdXJjZUxvYWRlck1h
cCkKICAgICAgICAgcGFpci52YWx1ZS0+aW52YWxpZGF0ZSgpOwogCi0gICAgW21fdmlkZW9PdXRw
dXQgc2V0RGVsZWdhdGU6bmlsIHF1ZXVlOjBdOworICAgIGlmIChtX3ZpZGVvT3V0cHV0KQorICAg
ICAgICBtX3ZpZGVvT3V0cHV0LT5pbnZhbGlkYXRlKCk7CiAKICAgICBpZiAobV92aWRlb0xheWVy
KQogICAgICAgICBkZXN0cm95VmlkZW9MYXllcigpOwpAQCAtNzAyLDcgKzY4NCwxMyBAQCBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omhhc0F2YWlsYWJsZVZpZGVvRnJh
bWUoKSBjb25zdAogICAgIGlmIChjdXJyZW50UmVuZGVyaW5nTW9kZSgpID09IE1lZGlhUmVuZGVy
aW5nTW9kZTo6TWVkaWFSZW5kZXJpbmdUb0xheWVyKQogICAgICAgICByZXR1cm4gbV9jYWNoZWRJ
c1JlYWR5Rm9yRGlzcGxheTsKIAotICAgIGlmIChtX3ZpZGVvT3V0cHV0ICYmIChtX2xhc3RQaXhl
bEJ1ZmZlciB8fCBbbV92aWRlb091dHB1dCBoYXNOZXdQaXhlbEJ1ZmZlckZvckl0ZW1UaW1lOltt
X2F2UGxheWVySXRlbSBjdXJyZW50VGltZV1dKSkKKyAgICBpZiAoIW1fdmlkZW9PdXRwdXQpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2xhc3RQaXhlbEJ1ZmZlcikKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobV92aWRlb091dHB1dC0+aGFzSW1hZ2VGb3JUaW1l
KFBBTDo6dG9NZWRpYVRpbWUoW21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXSkpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBtX3ZpZGVvRnJhbWVIYXNEcmF3bjsKQEAgLTEy
NzYsNyArMTI2NCw3IEBAIFBsYXRmb3JtTGF5ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkKIHsK
LSAgICB1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZTo6VXBkYXRlU3luY2hyb25vdXNseSk7Cisg
ICAgdXBkYXRlTGFzdEltYWdlKCk7CiAgICAgbV92aWRlb0xheWVyTWFuYWdlci0+dXBkYXRlVmlk
ZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UobV9sYXN0SW1hZ2UgPyBtX2xhc3RJbWFnZS0+cGxhdGZv
cm1JbWFnZSgpIDogbnVsbHB0cik7CiB9CiAKQEAgLTEyODgsNyArMTI3Niw3IEBAIFJldGFpblB0
cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVh
dGVWaWRlb0Z1bGxzY3JlCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxh
eWVyLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHZp
ZGVvRnVsbHNjcmVlbkxheWVyKQotICAgICAgICB1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZTo6
VXBkYXRlU3luY2hyb25vdXNseSk7CisgICAgICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIG1f
dmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVl
bkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9sYXN0SW1hZ2UgPyBtX2xhc3RJ
bWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cik7CiAgICAgdXBkYXRlRGlzYWJsZUV4dGVy
bmFsUGxheWJhY2soKTsKIH0KQEAgLTE0NDQsMzQgKzE0MzIsMzAgQEAgYm9vbCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybVBhdXNlZCgpIGNvbnN0CiAKIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3RhcnRWaWRlb0ZyYW1lTWV0YWRh
dGFHYXRoZXJpbmcoKQogewotICAgIEFTU0VSVCghbV92aWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJp
bmdPYnNlcnZlciB8fCBtX2F2UGxheWVyKTsKLSAgICBtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1l
dGFkYXRhID0gdHJ1ZTsKKyAgICAvLyByZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKCkgY2FyZXMg
YWJvdXQgdGhlIC9uZXh0LyBhdmFpbGFibGUgZnJhbWUuIFB1bGwgdGhlIGN1cnJlbnQgZnJhbWUg
ZnJvbQorICAgIC8vIHRoZSBRdWV1ZWRWaWRlb091dHB1dCBzbyBwYWludHMgb2YgdGhlIGN1cnJl
bnQgZnJhbWUgc3VjY2VlZDsKKyAgICB1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKTsKIAotICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgdXNlIGEgQ0FEaXNwbGF5TGluayB0byBnZXQgdXBkYXRlcyBvbiBy
ZW5kZXJpbmcsIGZvciBub3cgd2UgZW11bGF0ZSB3aXRoIGFkZFBlcmlvZGljVGltZU9ic2VydmVy
Rm9ySW50ZXJ2YWwuCi0gICAgbV92aWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmdPYnNlcnZlciA9
IFttX2F2UGxheWVyIGFkZFBlcmlvZGljVGltZU9ic2VydmVyRm9ySW50ZXJ2YWw6UEFMOjpDTVRp
bWVNYWtlKDEsIDYwKSBxdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6
W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dKENNVGltZSBjdXJyZW50VGltZSkgewotICAg
ICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3dlYWtUaGlzLCBjdXJyZW50VGltZV0gewotICAgICAg
ICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5jaGVja05ld1Zp
ZGVvRnJhbWVNZXRhZGF0YShjdXJyZW50VGltZSk7CisgICAgaWYgKG1fdmlkZW9PdXRwdXQpIHsK
KyAgICAgICAgbV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIgPSBXVEY6Om1ha2VfdW5pcXVl
PE9ic2VydmVyPHZvaWQoKT4+KFt0aGlzXSB7CisgICAgICAgICAgICBjaGVja05ld1ZpZGVvRnJh
bWVNZXRhZGF0YSgpOwogICAgICAgICB9KTsKLSAgICB9XTsKKyAgICAgICAgbV92aWRlb091dHB1
dC0+YWRkQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKCptX2N1cnJlbnRJbWFnZUNoYW5nZWRP
YnNlcnZlcik7CisgICAgfQorCisgICAgbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSA9
IHRydWU7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hl
Y2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoQ01UaW1lIGN1cnJlbnRUaW1lKQordm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YSgp
CiB7Ci0gICAgaWYgKCF1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSkKKyAgICBpZiAoIW1faXNHYXRo
ZXJpbmdWaWRlb0ZyYW1lTWV0YWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZpZGVvRnJh
bWVNZXRhZGF0YSBtZXRhZGF0YTsKLSAgICBtZXRhZGF0YS53aWR0aCA9IG1fY2FjaGVkUHJlc2Vu
dGF0aW9uU2l6ZS53aWR0aCgpOwotICAgIG1ldGFkYXRhLmhlaWdodCA9IG1fY2FjaGVkUHJlc2Vu
dGF0aW9uU2l6ZS5oZWlnaHQoKTsKLSAgICBtZXRhZGF0YS5wcmVzZW50ZWRGcmFtZXMgPSArK21f
c2FtcGxlQ291bnQ7Ci0gICAgbWV0YWRhdGEubWVkaWFUaW1lID0gUEFMOjpDTVRpbWVHZXRTZWNv
bmRzKGN1cnJlbnRUaW1lKTsKLSAgICAvLyBGSVhNRTogcHJlc2VudGF0aW9uVGltZSBhbmQgZXhw
ZWN0ZWREaXNwbGF5VGltZSBtaWdodCBub3QgYWx3YXlzIGhhdmUgdGhlIHNhbWUgdmFsdWUsIHdl
IHNob3VsZCB0cnkgZ2V0dGluZyBtb3JlIHByZWNpc2UgdmFsdWVzLgotICAgIG1ldGFkYXRhLnBy
ZXNlbnRhdGlvblRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgp
LnNlY29uZHMoKTsKLSAgICBtZXRhZGF0YS5leHBlY3RlZERpc3BsYXlUaW1lID0gbWV0YWRhdGEu
cHJlc2VudGF0aW9uVGltZTsKKyAgICBpZiAoIXVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpIHx8ICFt
X3ZpZGVvRnJhbWVNZXRhZGF0YSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aWRlb0ZyYW1l
TWV0YWRhdGEgPSBtZXRhZGF0YTsKLSAgICBwbGF5ZXIoKS0+b25OZXdWaWRlb0ZyYW1lTWV0YWRh
dGEoV1RGTW92ZShtZXRhZGF0YSksIG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKKyAgICBwbGF5
ZXIoKS0+b25OZXdWaWRlb0ZyYW1lTWV0YWRhdGEoV1RGTW92ZSgqbV92aWRlb0ZyYW1lTWV0YWRh
dGEpLCBtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CisgICAgbV92aWRlb0ZyYW1lTWV0YWRhdGEg
PSB7IH07CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3Rv
cFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpCkBAIC0yNDMzLDEwICsyNDE3LDYgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb1RyYWNrcygp
CiAgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fdmlkZW9UcmFja3MpCiAgICAgICAgIHRyYWNrLT5y
ZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIAotICAgIC8vIEluIGNhc2UgdGhlIHZpZGVvIHRy
YWNrIGNvbnRlbnQgY2hhbmdlZCwgd2UgbWF5IGJlIGFibGUgdG8gcGVyZm9ybSBhIHJlYWRiYWNr
IGFnYWluLgotICAgIGlmIChjb3VudCkKLSAgICAgICAgbV93YWl0Rm9yVmlkZW9PdXRwdXRNZWRp
YURhdGFXaWxsQ2hhbmdlVGltZWRPdXQgPSBmYWxzZTsKLQogICAgIEFMV0FZU19MT0coTE9HSURF
TlRJRklFUiwgInRyYWNrIGNvdW50IHdhcyAiLCBjb3VudCwgIiwgaXMgIiwgbV92aWRlb1RyYWNr
cy5zaXplKCkpOwogfQogCkBAIC0yNTE4LDE3ICsyNDk4LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQoKQogICAgIGlmICghbV9h
dlBsYXllckl0ZW0gfHwgbV92aWRlb091dHB1dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92
aWRlb091dHB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlBsYXllckl0ZW1WaWRlb091dHB1dElu
c3RhbmNlKCkgaW5pdFdpdGhQaXhlbEJ1ZmZlckF0dHJpYnV0ZXM6bmlsXSk7CisgICAgbV92aWRl
b091dHB1dCA9IFF1ZXVlZFZpZGVvT3V0cHV0OjpjcmVhdGUobV9hdlBsYXllckl0ZW0uZ2V0KCks
IG1fYXZQbGF5ZXIuZ2V0KCkpOwogICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0KTsKICAgICBpZiAo
IW1fdmlkZW9PdXRwdXQpIHsKICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICItW0FW
UGxheWVySXRlbVZpZGVvT3V0cHV0IGluaXRXaXRoUGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOl0gZmFp
bGVkISIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgbV92aWRlb091dHB1dERlbGVn
YXRlID0gYWRvcHROUyhbW1dlYkNvcmVBVkZQdWxsRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGxh
eWVyOip0aGlzXSk7Ci0gICAgW21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bV92aWRlb091dHB1
dERlbGVnYXRlLmdldCgpIHF1ZXVlOmdsb2JhbFB1bGxEZWxlZ2F0ZVF1ZXVlKCldOwotCi0gICAg
W21fYXZQbGF5ZXJJdGVtIGFkZE91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKKyAgICBpZiAo
bV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIpCisgICAgICAgIG1fdmlkZW9PdXRwdXQtPmFk
ZEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcigqbV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2
ZXIpOwogCiAgICAgc2V0TmVlZHNSZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOwogfQpAQCAtMjUzOCwx
OSArMjUxNSwxNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRl
c3Ryb3lWaWRlb091dHB1dCgpCiAgICAgaWYgKCFtX3ZpZGVvT3V0cHV0KQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAobV9hdlBsYXllckl0ZW0pCi0gICAgICAgIFttX2F2UGxheWVySXRlbSBy
ZW1vdmVPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQoKV07Ci0KICAgICBJTkZPX0xPRyhMT0dJREVO
VElGSUVSKTsKIAotICAgIG1fdmlkZW9PdXRwdXQgPSAwOworICAgIG1fdmlkZW9PdXRwdXQtPmlu
dmFsaWRhdGUoKTsKKyAgICBtX3ZpZGVvT3V0cHV0ID0gbnVsbHB0cjsKIAogICAgIHNldE5lZWRz
UmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKQogewotICAgIGlmICghbV9hdlBs
YXllckl0ZW0gfHwgcmVhZHlTdGF0ZSgpIDwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVD
dXJyZW50RGF0YSkKKyAgICBpZiAoIW1fYXZQbGF5ZXJJdGVtKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBtX2hhdmVCZWVuQXNrZWRUb1BhaW50ID0gdHJ1ZTsKQEAgLTI1NTksMTIgKzI1
MzQsMjUgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVM
YXN0UGl4ZWxCdWZmZXIoKQogICAgICAgICBjcmVhdGVWaWRlb091dHB1dCgpOwogICAgIEFTU0VS
VChtX3ZpZGVvT3V0cHV0KTsKIAotICAgIENNVGltZSBjdXJyZW50VGltZSA9IFttX2F2UGxheWVy
SXRlbSBjdXJyZW50VGltZV07CisgICAgYXV0byBjdXJyZW50VGltZSA9IFBBTDo6dG9NZWRpYVRp
bWUoW21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXSk7CiAKLSAgICBpZiAoIVttX3ZpZGVvT3V0
cHV0IGhhc05ld1BpeGVsQnVmZmVyRm9ySXRlbVRpbWU6Y3VycmVudFRpbWVdKQorICAgIGlmICgh
bV92aWRlb091dHB1dC0+aGFzSW1hZ2VGb3JUaW1lKGN1cnJlbnRUaW1lKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgbV9sYXN0UGl4ZWxCdWZmZXIgPSBhZG9wdENGKFttX3ZpZGVvT3V0
cHV0IGNvcHlQaXhlbEJ1ZmZlckZvckl0ZW1UaW1lOmN1cnJlbnRUaW1lIGl0ZW1UaW1lRm9yRGlz
cGxheTpuaWxdKTsKKyAgICBhdXRvIGVudHJ5ID0gbV92aWRlb091dHB1dC0+dGFrZVZpZGVvRnJh
bWVFbnRyeUZvclRpbWUoY3VycmVudFRpbWUpOworICAgIG1fbGFzdFBpeGVsQnVmZmVyID0gV1RG
TW92ZShlbnRyeS5waXhlbEJ1ZmZlcik7CisKKyAgICBpZiAobV9pc0dhdGhlcmluZ1ZpZGVvRnJh
bWVNZXRhZGF0YSkgeworICAgICAgICBhdXRvIHByZXNlbnRhdGlvblRpbWUgPSBNb25vdG9uaWNU
aW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKSAtIChjdXJyZW50VGltZSAt
IGVudHJ5LmRpc3BsYXlUaW1lKS50b0RvdWJsZSgpOworICAgICAgICBtX3ZpZGVvRnJhbWVNZXRh
ZGF0YSA9IHsKKyAgICAgICAgICAgIC53aWR0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDVlBp
eGVsQnVmZmVyR2V0V2lkdGgobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpKSwKKyAgICAgICAgICAg
IC5oZWlnaHQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodCht
X2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpLAorICAgICAgICAgICAgLnByZXNlbnRlZEZyYW1lcyA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPigrK21fc2FtcGxlQ291bnQpLAorICAgICAgICAgICAgLm1l
ZGlhVGltZSA9IGVudHJ5LmRpc3BsYXlUaW1lLnRvRG91YmxlKCksCisgICAgICAgICAgICAucHJl
c2VudGF0aW9uVGltZSA9IHByZXNlbnRhdGlvblRpbWUsCisgICAgICAgICAgICAuZXhwZWN0ZWRE
aXNwbGF5VGltZSA9IHByZXNlbnRhdGlvblRpbWUsCisgICAgICAgIH07CisgICAgfQogCiAgICAg
aWYgKG1faW1hZ2VSb3RhdGlvblNlc3Npb24pCiAgICAgICAgIG1fbGFzdFBpeGVsQnVmZmVyID0g
bV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+cm90YXRlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsK
QEAgLTI1ODQsMTAgKzI1NzIsMTAgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjp2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCkKICAgICBpZiAoIW1fdmlkZW9P
dXRwdXQpCiAgICAgICAgIGNyZWF0ZVZpZGVvT3V0cHV0KCk7CiAKLSAgICByZXR1cm4gW21fdmlk
ZW9PdXRwdXQgaGFzTmV3UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpbbV9hdlBsYXllckl0ZW0gY3Vy
cmVudFRpbWVdXTsKKyAgICByZXR1cm4gbV92aWRlb091dHB1dC0+aGFzSW1hZ2VGb3JUaW1lKFBB
TDo6dG9NZWRpYVRpbWUoW21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXSkpOwogfQogCi12b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZShVcGRh
dGVUeXBlIHR5cGUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVw
ZGF0ZUxhc3RJbWFnZSgpCiB7CiAgICAgaWYgKCFtX2F2UGxheWVySXRlbSB8fCByZWFkeVN0YXRl
KCkgPCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNTk2LDEzICsyNTg0LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGUgdHlwZSkKICAgICBpZiAo
IWZpcnN0RW5hYmxlZFZpZGVvVHJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh0eXBl
ID09IFVwZGF0ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkgJiYgIW1fbGFzdEltYWdlICYmICF2
aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCkpCi0gICAgICAgIHdhaXRGb3JWaWRlb091dHB1
dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKTsKLQogICAgIC8vIENhbGxzIHRvIGNvcHlQaXhlbEJ1ZmZl
ckZvckl0ZW1UaW1lOml0ZW1UaW1lRm9yRGlzcGxheTogbWF5IHJldHVybiBuaWwgaWYgdGhlIHBp
eGVsIGJ1ZmZlcgogICAgIC8vIGZvciB0aGUgcmVxdWVzdGVkIHRpbWUgaGFzIGFscmVhZHkgYmVl
biByZXRyaWV2ZWQuIEluIHRoaXMgY2FzZSwgdGhlIGxhc3QgdmFsaWQgaW1hZ2UgKGlmIGFueSkK
ICAgICAvLyBzaG91bGQgYmUgZGlzcGxheWVkLgotICAgIGlmICgobV9pc0dhdGhlcmluZ1ZpZGVv
RnJhbWVNZXRhZGF0YSB8fCAhdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkpICYmIChtX2xhc3RJbWFn
ZSB8fCAhbV9sYXN0UGl4ZWxCdWZmZXIpKQorICAgIGlmICghdXBkYXRlTGFzdFBpeGVsQnVmZmVy
KCkgJiYgKG1fbGFzdEltYWdlIHx8ICFtX2xhc3RQaXhlbEJ1ZmZlcikpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmICghbV9waXhlbEJ1ZmZlckNvbmZvcm1lcikgewpAQCAtMjYxOSw3ICsyNjA0
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0
SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBvdXRwdXRSZWN0KQogewotICAgIHVwZGF0ZUxhc3RJbWFnZShVcGRh
dGVUeXBlOjpVcGRhdGVTeW5jaHJvbm91c2x5KTsKKyAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKICAg
ICBpZiAoIW1fbGFzdEltYWdlKQogICAgICAgICByZXR1cm47CiAKQEAgLTI2MzcsNzQgKzI2MjIs
MjkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhW
aWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBpeGVsQnVmZmVyRm9yQ3Vy
cmVudFRpbWUoKQogewotICAgIGlmICghbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSkK
LSAgICAgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CisgICAgdXBkYXRlTGFzdFBpeGVsQnVm
ZmVyKCk7CiAKICAgICByZXR1cm4gbV9sYXN0UGl4ZWxCdWZmZXI7CiB9CiAKIFJlZlB0cjxOYXRp
dmVJbWFnZT4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VG
b3JDdXJyZW50VGltZSgpCiB7Ci0gICAgdXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGU6OlVwZGF0
ZVN5bmNocm9ub3VzbHkpOworICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIHJldHVybiBtX2xh
c3RJbWFnZTsKIH0KIAogRGVzdGluYXRpb25Db2xvclNwYWNlIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNvbG9yU3BhY2UoKQogewotICAgIHVwZGF0ZUxhc3RJbWFnZShVcGRh
dGVUeXBlOjpVcGRhdGVTeW5jaHJvbm91c2x5KTsKKyAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKICAg
ICBpZiAoIW1fbGFzdFBpeGVsQnVmZmVyKQogICAgICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCk7CiAKICAgICByZXR1cm4gRGVzdGluYXRpb25Db2xvclNwYWNlKGNyZWF0
ZUNHQ29sb3JTcGFjZUZvckNWUGl4ZWxCdWZmZXIobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpKTsK
IH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3YWl0Rm9yVmlk
ZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCkKLXsKLSAgICBpZiAobV93YWl0Rm9yVmlkZW9P
dXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlVGltZWRPdXQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IC8vIFdhaXQgZm9yIDEgc2Vjb25kLgotICAgIE1vbm90b25pY1RpbWUgc3RhcnQgPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKLQotICAgIHN0ZDo6b3B0aW9uYWw8UnVuTG9vcDo6VGltZXI8TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4+IHRpbWVvdXRUaW1lcjsKLQotICAgIGlmICgh
bV9ydW5Mb29wTmVzdGluZ0xldmVsKSB7Ci0gICAgICAgIFttX3ZpZGVvT3V0cHV0IHJlcXVlc3RO
b3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZVdpdGhBZHZhbmNlSW50ZXJ2YWw6MF07Ci0KLSAg
ICAgICAgdGltZW91dFRpbWVyLmVtcGxhY2UoUnVuTG9vcDo6bWFpbigpLCBbJl0gewotICAgICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLnN0b3AoKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHRpbWVv
dXRUaW1lci0+c3RhcnRPbmVTaG90KDFfcyk7Ci0gICAgfQotCi0gICAgKyttX3J1bkxvb3BOZXN0
aW5nTGV2ZWw7Ci0gICAgUnVuTG9vcDo6cnVuKCk7Ci0gICAgLS1tX3J1bkxvb3BOZXN0aW5nTGV2
ZWw7Ci0KLSAgICBpZiAobV9ydW5Mb29wTmVzdGluZ0xldmVsKSB7Ci0gICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5zdG9wKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBib29sIHNhdGlz
ZmllZCA9IHRpbWVvdXRUaW1lci0+aXNBY3RpdmUoKTsKLSAgICBpZiAoIXNhdGlzZmllZCkgewot
ICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgInRpbWVkIG91dCIpOwotICAgICAgICBt
X3dhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2VUaW1lZE91dCA9IHRydWU7Ci0g
ICAgfSBlbHNlCi0gICAgICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJ3YWl0aW5nIGZvciB2
aWRlb091dHB1dCB0b29rICIsIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0KS5zZWNvbmRz
KCkpOwotfQotCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om91dHB1
dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQogewotICAgIGlmIChtX3J1bkxvb3BOZXN0aW5nTGV2ZWwp
IHsKLSAgICAgICAgaWYgKFJ1bkxvb3A6OmlzTWFpbigpKQotICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLnN0b3AoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW10gewotICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5zdG9wKCk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgIH0KKyAgICBjaGVja05ld1ZpZGVvRnJh
bWVNZXRhZGF0YSgpOwogfQogCiAjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCkBA
IC00MDg5LDM3ICs0MDI5LDQgQEAgLSAodm9pZClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291
cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgZGlkQ2FuY2VsTG9hZGluZ1IKIAogQGVuZAogCi1A
aW1wbGVtZW50YXRpb24gV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSB7Ci0gICAgV2Vha1B0cjxXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiBfcGxheWVyOwotfQotCi1A
c3ludGhlc2l6ZSBzZW1hcGhvcmUgPSBtX3NlbWFwaG9yZTsKLQotLSAoaWQpaW5pdFdpdGhQbGF5
ZXI6KFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4mJilwbGF5ZXIK
LXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICBfcGxheWVyID0gV1RGTW92ZShwbGF5ZXIpOwotICAgIHJldHVybiBzZWxm
OwotfQotCi0tICh2b2lkKW91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2U6KEFWUGxheWVySXRlbVZp
ZGVvT3V0cHV0ICopb3V0cHV0Ci17Ci0gICAgVU5VU0VEX1BBUkFNKG91dHB1dCk7Ci0gICAgbV9z
ZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbc2VsZiwgc3Ryb25nU2Vs
ZiA9IFJldGFpblB0ciB7IHNlbGYgfV0gewotICAgICAgICBpZiAoX3BsYXllcikKLSAgICAgICAg
ICAgIF9wbGF5ZXItPm91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKTsKLSAgICB9KTsKLX0KLQot
LSAodm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KEFWUGxheWVySXRlbVZpZGVvT3V0cHV0
ICopb3V0cHV0Ci17Ci0gICAgVU5VU0VEX1BBUkFNKG91dHB1dCk7Ci0gICAgLy8gTm8tb3AuCi19
Ci0KLUBlbmQKLQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRw
dXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zOWI3MmU2MjMxNmY0NjRhZGIxN2YxMjI5ZTAzMzkyMWQyMGVmZjgw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQuaApAQCAtMCwwICsxLDk1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlIDxt
YXA+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgor
I2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Cisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgor
CitPQkpDX0NMQVNTIEFWUGxheWVyOworT0JKQ19DTEFTUyBBVlBsYXllckl0ZW07CitPQkpDX0NM
QVNTIEFWUGxheWVySXRlbVZpZGVvT3V0cHV0OworT0JKQ19DTEFTUyBXZWJRdWV1ZWRWaWRlb091
dHB1dERlbGVnYXRlOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFF1ZXVlZFZpZGVv
T3V0cHV0CisgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxRdWV1ZWRWaWRlb091dHB1dD4KKyAgICAs
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxRdWV1ZWRWaWRlb091dHB1dD4geworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UXVldWVkVmlkZW9PdXRw
dXQ+IGNyZWF0ZShBVlBsYXllckl0ZW0qLCBBVlBsYXllciopOworICAgIH5RdWV1ZWRWaWRlb091
dHB1dCgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisgICAgYm9vbCBoYXNJbWFnZUZvclRp
bWUoY29uc3QgTWVkaWFUaW1lJikgY29uc3Q7CisKKyAgICBzdHJ1Y3QgVmlkZW9GcmFtZUVudHJ5
IHsKKyAgICAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyOworICAg
ICAgICBNZWRpYVRpbWUgZGlzcGxheVRpbWU7CisgICAgfTsKKyAgICBWaWRlb0ZyYW1lRW50cnkg
dGFrZVZpZGVvRnJhbWVFbnRyeUZvclRpbWUoY29uc3QgTWVkaWFUaW1lJik7CisKKyAgICB2b2lk
IGFkZFZpZGVvRnJhbWVFbnRyaWVzKFZlY3RvcjxWaWRlb0ZyYW1lRW50cnk+JiYpOworICAgIHZv
aWQgcHVyZ2VWaWRlb0ZyYW1lRW50cmllcygpOworCisgICAgdXNpbmcgQ3VycmVudEltYWdlQ2hh
bmdlZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZCgpPjsKKyAgICB2b2lkIGFkZEN1cnJlbnRJbWFn
ZUNoYW5nZWRPYnNlcnZlcihjb25zdCBDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXImKTsKKwor
ICAgIHVzaW5nIEltYWdlTWFwID0gc3RkOjptYXA8TWVkaWFUaW1lLCBSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4+OworCisgICAgdm9pZCByYXRlQ2hhbmdlZChmbG9hdCk7CisKK3ByaXZhdGU6
CisgICAgUXVldWVkVmlkZW9PdXRwdXQoQVZQbGF5ZXJJdGVtKiwgQVZQbGF5ZXIqKTsKKworICAg
IHZvaWQgcHVyZ2VJbWFnZXNCZWZvcmVUaW1lKGNvbnN0IE1lZGlhVGltZSYpOworICAgIHZvaWQg
Y29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisgICAgdm9pZCBjYW5jZWxOZXh0SW1h
Z2VUaW1lT2JzZXJ2ZXIoKTsKKyAgICB2b2lkIG5leHRJbWFnZVRpbWVSZWFjaGVkKCk7CisKKyAg
ICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtPiBtX3BsYXllckl0ZW07CisgICAgUmV0YWluUHRyPEFW
UGxheWVyPiBtX3BsYXllcjsKKyAgICBSZXRhaW5QdHI8V2ViUXVldWVkVmlkZW9PdXRwdXREZWxl
Z2F0ZT4gbV9kZWxlZ2F0ZTsKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ+
IG1fdmlkZW9PdXRwdXQ7CisgICAgUmV0YWluUHRyPGlkPiBtX3ZpZGVvVGltZWJhc2VPYnNlcnZl
cjsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fbmV4dEltYWdlVGltZWJhc2VPYnNlcnZlcjsKKworICAg
IEltYWdlTWFwIG1fdmlkZW9GcmFtZXM7CisgICAgV2Vha0hhc2hTZXQ8Q3VycmVudEltYWdlQ2hh
bmdlZE9ic2VydmVyPiBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnM7CisKKyAgICBib29s
IG1fcGF1c2VkIHsgdHJ1ZSB9OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVv
T3V0cHV0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJjMDgzODE0YzA4YzdkZWVk
NjFjOTA3OWMyMmJlM2Y1MDc4YTc3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lm1t
CkBAIC0wLDAgKzEsMzA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlF1ZXVlZFZpZGVvT3V0cHV0LmgiCisKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNs
dWRlIDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtT3V0cHV0Lmg+CisjaW5jbHVkZSA8cGFsL2F2
Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDxwYWwvc3BpL2Nv
Y29hL0FWRm91bmRhdGlvblNQSS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlTnVtYmVycy5oPgorCisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+Cisj
aW5jbHVkZSA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisKK0BpbnRlcmZhY2Ug
V2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSA6IE5TT2JqZWN0PEFWUGxheWVySXRlbU91dHB1
dFB1bGxEZWxlZ2F0ZT4geworICAgIFdlYWtQdHI8V2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ+
IF9wYXJlbnQ7Cit9CistIChpZClpbml0V2l0aFBhcmVudDooV2ViQ29yZTo6UXVldWVkVmlkZW9P
dXRwdXQqKXBhcmVudDsKKy0gKHZvaWQpb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQbGF5
ZXJJdGVtT3V0cHV0ICopb3V0cHV0OworLSAodm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6
KEFWUGxheWVySXRlbU91dHB1dCAqKW91dHB1dDsKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5
UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKilj
aGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdl
YlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUKKy0gKGlkKWluaXRXaXRoUGFyZW50OihXZWJDb3Jl
OjpRdWV1ZWRWaWRlb091dHB1dCopcGFyZW50Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsK
KyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfcGFyZW50ID0gcGFy
ZW50OworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKW91dHB1dE1lZGlhRGF0YVdpbGxD
aGFuZ2U6KEFWUGxheWVySXRlbU91dHB1dCAqKW91dHB1dAoreworICAgIEFTU0VSVChbb3V0cHV0
IGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRBVlBsYXllckl0ZW1WaWRlb091dHB1dENsYXNzKCldKTsK
KyAgICBhdXRvKiB2aWRlb091dHB1dCA9IChBVlBsYXllckl0ZW1WaWRlb091dHB1dCopb3V0cHV0
OworCisgICAgVmVjdG9yPFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpWaWRlb0ZyYW1lRW50
cnk+IHZpZGVvRnJhbWVFbnRyaWVzOworICAgIGRvIHsKKyAgICAgICAgQ01UaW1lIGVhcmxpZXN0
VGltZSA9IFt2aWRlb091dHB1dCBlYXJsaWVzdEF2YWlsYWJsZVBpeGVsQnVmZmVySXRlbVRpbWVd
OworICAgICAgICBpZiAoQ01USU1FX0lTX0lOVkFMSUQoZWFybGllc3RUaW1lKSkKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBhZG9wdENGKFt2aWRlb091
dHB1dCBjb3B5UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTplYXJsaWVzdFRpbWUgaXRlbVRpbWVGb3JE
aXNwbGF5Om5pbF0pOworICAgICAgICBpZiAoIXBpeGVsQnVmZmVyKQorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgdmlkZW9GcmFtZUVudHJpZXMuYXBwZW5kKHsgV1RGTW92ZShwaXhlbEJ1
ZmZlciksIFBBTDo6dG9NZWRpYVRpbWUoZWFybGllc3RUaW1lKSB9KTsKKyAgICB9IHdoaWxlICh0
cnVlKTsKKworICAgIGlmICh2aWRlb0ZyYW1lRW50cmllcy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGNhbGxPbk1haW5SdW5Mb29wKFt2aWRlb0ZyYW1lRW50cmllcyA9IFdURk1v
dmUodmlkZW9GcmFtZUVudHJpZXMpLCBwYXJlbnQgPSBfcGFyZW50XSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKHBhcmVudCkKKyAgICAgICAgICAgIHBhcmVudC0+YWRkVmlkZW9GcmFtZUVudHJp
ZXMoV1RGTW92ZSh2aWRlb0ZyYW1lRW50cmllcykpOworICAgIH0pOworfQorCistICh2b2lkKW91
dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0Cit7Cisg
ICAgQVNTRVJUKFtvdXRwdXQgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxheWVySXRlbVZpZGVv
T3V0cHV0Q2xhc3MoKV0pOworICAgIGF1dG8qIHZpZGVvT3V0cHV0ID0gKEFWUGxheWVySXRlbVZp
ZGVvT3V0cHV0KilvdXRwdXQ7CisgICAgW3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25P
Zk1lZGlhRGF0YUNoYW5nZUFzU29vbkFzUG9zc2libGVdOworCisgICAgY2FsbE9uTWFpblJ1bkxv
b3AoW3BhcmVudCA9IF9wYXJlbnRdIHsKKyAgICAgICAgaWYgKHBhcmVudCkKKyAgICAgICAgICAg
IHBhcmVudC0+cHVyZ2VWaWRlb0ZyYW1lRW50cmllcygpOworICAgIH0pOworfQorCistICh2b2lk
KW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5n
ZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRleHQKK3sKKyAgICBp
ZiAoIVtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInJhdGUiXSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byByYXRlVmFsdWUgPSAoTlNOdW1iZXIqKVtjaGFuZ2UgdmFsdWVGb3JLZXk6TlNL
ZXlWYWx1ZUNoYW5nZU5ld0tleV07CisgICAgQVNTRVJUKFtyYXRlVmFsdWUgaXNLaW5kT2ZDbGFz
czpOU051bWJlci5jbGFzc10pOworICAgIGF1dG8gcmF0ZSA9IHJhdGVWYWx1ZS5mbG9hdFZhbHVl
OworCisgICAgZW5zdXJlT25NYWluUnVuTG9vcChbcGFyZW50ID0gX3BhcmVudCwgcmF0ZV0gewor
ICAgICAgICBpZiAocGFyZW50KQorICAgICAgICAgICAgcGFyZW50LT5yYXRlQ2hhbmdlZChyYXRl
KTsKKyAgICB9KTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgZGlz
cGF0Y2hfcXVldWVfdCBnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCkKK3sKKyAgICBzdGF0aWMg
ZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxRdWV1ZTsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90
IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIGds
b2JhbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJRdWV1ZWRWaWRlb091dHB1dERl
bGVnYXRlIHF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKKyAgICB9KTsKKyAgICByZXR1
cm4gZ2xvYmFsUXVldWU7Cit9CisKK1JlZjxRdWV1ZWRWaWRlb091dHB1dD4gUXVldWVkVmlkZW9P
dXRwdXQ6OmNyZWF0ZShBVlBsYXllckl0ZW0qIGl0ZW0sIEFWUGxheWVyKiBwbGF5ZXIpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUXVldWVkVmlkZW9PdXRwdXQoaXRlbSwgcGxheWVyKSk7
Cit9CisKK1F1ZXVlZFZpZGVvT3V0cHV0OjpRdWV1ZWRWaWRlb091dHB1dChBVlBsYXllckl0ZW0q
IGl0ZW0sIEFWUGxheWVyKiBwbGF5ZXIpCisgICAgOiBtX3BsYXllckl0ZW0oaXRlbSkKKyAgICAs
IG1fcGxheWVyKHBsYXllcikKKyAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhbW1dlYlF1ZXVlZFZp
ZGVvT3V0cHV0RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkKK3sKKyAgICBt
X3ZpZGVvT3V0cHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVySXRlbVZpZGVvT3V0cHV0
SW5zdGFuY2UoKSBpbml0V2l0aFBpeGVsQnVmZmVyQXR0cmlidXRlczpuaWxdKTsKKyAgICBbbV92
aWRlb091dHB1dCBzZXREZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpIHF1ZXVlOmdsb2JhbE91dHB1
dERlbGVnYXRlUXVldWUoKV07CisgICAgW21fdmlkZW9PdXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlv
bk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJsZV07CisKKyAgICBbbV9wbGF5ZXJJdGVt
IGFkZE91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKKworICAgIFttX3BsYXllciBhZGRPYnNl
cnZlcjptX2RlbGVnYXRlLmdldCgpIGZvcktleVBhdGg6QCJyYXRlIiBvcHRpb25zOihOU0tleVZh
bHVlT2JzZXJ2aW5nT3B0aW9uTmV3IHwgTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbkluaXRpYWwp
IGNvbnRleHQ6bmlsXTsKKworICAgIG1fdmlkZW9UaW1lYmFzZU9ic2VydmVyID0gW21fcGxheWVy
IGFkZFBlcmlvZGljVGltZU9ic2VydmVyRm9ySW50ZXJ2YWw6UEFMOjpDTVRpbWVNYWtlKDEsIDYw
KSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCkgdXNpbmdCbG9jazpbd2Vha1RoaXMg
PSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvdGVjdGVkRGVsZWdhdGUgPSBtX2RlbGVnYXRlLCBwcm90
ZWN0ZWRPdXRwdXQgPSBtX3ZpZGVvT3V0cHV0XShDTVRpbWUgY3VycmVudFRpbWUpIG11dGFibGUg
eworCisgICAgICAgIC8vIFBlcmlvZGljYWxseSBjaGVjayBmb3IgbmV3IGF2YWlsYWJsZSBwaXhl
bCBidWZmZXJzLgorICAgICAgICBbcHJvdGVjdGVkRGVsZWdhdGUgb3V0cHV0TWVkaWFEYXRhV2ls
bENoYW5nZTpwcm90ZWN0ZWRPdXRwdXQuZ2V0KCldOworCisgICAgICAgIC8vIEFuZCBwdXJnZSB0
aGUgYmFjayBidWZmZXIgb2YgcGFzdCBmcmFtZXMuCisgICAgICAgIGNhbGxPbk1haW5SdW5Mb29w
KFt3ZWFrVGhpcyA9IHdlYWtUaGlzLCB0aW1lID0gUEFMOjp0b01lZGlhVGltZShjdXJyZW50VGlt
ZSldIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhp
cy0+cHVyZ2VJbWFnZXNCZWZvcmVUaW1lKHRpbWUpOworICAgICAgICB9KTsKKyAgICB9XTsKK30K
KworUXVldWVkVmlkZW9PdXRwdXQ6On5RdWV1ZWRWaWRlb091dHB1dCgpCit7CisgICAgaW52YWxp
ZGF0ZSgpOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjppbnZhbGlkYXRlKCkKK3sKKyAg
ICBpZiAobV92aWRlb1RpbWViYXNlT2JzZXJ2ZXIpIHsKKyAgICAgICAgW21fcGxheWVyIHJlbW92
ZVRpbWVPYnNlcnZlcjptX3ZpZGVvVGltZWJhc2VPYnNlcnZlci5nZXQoKV07CisgICAgICAgIG1f
dmlkZW9UaW1lYmFzZU9ic2VydmVyID0gbmlsOworICAgIH0KKworICAgIGNhbmNlbE5leHRJbWFn
ZVRpbWVPYnNlcnZlcigpOworCisgICAgaWYgKG1fdmlkZW9PdXRwdXQpIHsKKyAgICAgICAgW21f
cGxheWVySXRlbSByZW1vdmVPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQoKV07CisgICAgICAgIFtt
X3ZpZGVvT3V0cHV0IHNldERlbGVnYXRlOm5pbCBxdWV1ZTpuaWxdOworICAgICAgICBtX3ZpZGVv
T3V0cHV0ID0gbmlsOworICAgIH0KKworICAgIGlmIChtX3BsYXllcikgeworICAgICAgICBbbV9w
bGF5ZXIgcmVtb3ZlT2JzZXJ2ZXI6bV9kZWxlZ2F0ZS5nZXQoKSBmb3JLZXlQYXRoOkAicmF0ZSJd
OworICAgICAgICBtX3BsYXllciA9IG5pbDsKKyAgICB9CisKKyAgICBtX3BsYXllckl0ZW0gPSBu
aWw7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBNYXliZUNvbnN0TWFwLCB0eXBlbmFtZSBNYXli
ZUNvbnN0SXRlciA9IGRlY2x0eXBlKE1heWJlQ29uc3RNYXAoKS5iZWdpbigpKT4KK01heWJlQ29u
c3RJdGVyIGZpbmRJbWFnZUZvclRpbWUoTWF5YmVDb25zdE1hcCYgbWFwLCBjb25zdCBNZWRpYVRp
bWUmIHRpbWUpCit7CisgICAgLy8gT3V0cHV0cyBvZiBBVlBsYXllckl0ZW1WaWRlb091dHB1dCBo
YXZlIGEgZGlzcGxheSB0aW1lLCBidXQgbm90IGEgZHVyYXRpb247IHRoZXkgYXJlIHZhbGlkCisg
ICAgLy8gdW50aWwgdGhlIGFycml2YWwgb2YgYSBsYXRlciBmcmFtZS4gRmluZCB0aGlzIGZyYW1l
IGVmZmljaWVudGx5IHVzaW5nIHNldDo6dXBwZXJfYm91bmQgdG8gZmluZAorICAgIC8vIHRoZSBu
ZXh0IGRpc3BsYXlhYmxlIGZyYW1lLCBhbmQgd2FsayBiYWNrd2FyZHMgYnkgb25lIHRvIGZpbmQg
YSBmcmFtZSBmb3IgdGhlIHRhcmdldCB0aW1lLgorICAgIGlmIChtYXAuZW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIG1hcC5lbmQoKTsKKworICAgIGF1dG8gaXRlciA9IG1hcC51cHBlcl9ib3VuZCh0
aW1lKTsKKyAgICBpZiAoaXRlciA9PSBtYXAuYmVnaW4oKSkKKyAgICAgICAgcmV0dXJuIG1hcC5l
bmQoKTsKKworICAgIHJldHVybiAtLWl0ZXI7Cit9CisKK2Jvb2wgUXVldWVkVmlkZW9PdXRwdXQ6
Omhhc0ltYWdlRm9yVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywgdGltZSkgIT0gbV92aWRlb0ZyYW1l
cy5lbmQoKTsKK30KKworYXV0byBRdWV1ZWRWaWRlb091dHB1dDo6dGFrZVZpZGVvRnJhbWVFbnRy
eUZvclRpbWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lKSAtPiBWaWRlb0ZyYW1lRW50cnkKK3sKKyAg
ICBhdXRvIGl0ZXIgPSBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFtZXMsIHRpbWUpOworICAg
IGlmIChpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkpCisgICAgICAgIHJldHVybiB7IG51bGxw
dHIsIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSB9OworCisgICAgVmlkZW9GcmFtZUVudHJ5IGVu
dHJ5ID0geyBXVEZNb3ZlKGl0ZXItPnNlY29uZCksIGl0ZXItPmZpcnN0IH07CisKKyAgICAvLyBQ
dXJnZSBhbGwgZnJhbWVzIGJlZm9yZSBgdGltZWAsIHNvIHRoYXQgcmVwZWF0ZWQgY2FsbHMgd2l0
aCB0aGUgc2FtZSB0aW1lIGRvbid0IHJldHVybgorICAgIC8vIHN1Y2Nlc3NpdmVseSBlYXJsaWVy
IGltYWdlcy4KKyAgICBtX3ZpZGVvRnJhbWVzLmVyYXNlKG1fdmlkZW9GcmFtZXMuYmVnaW4oKSwg
KytpdGVyKTsKKworICAgIHJldHVybiBlbnRyeTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1
dDo6YWRkQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKGNvbnN0IEN1cnJlbnRJbWFnZUNoYW5n
ZWRPYnNlcnZlciYgb2JzZXJ2ZXIpCit7CisgICAgbV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2
ZXJzLmFkZChvYnNlcnZlcik7CisgICAgY29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKCk7
CisKKyAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFu
Z2VBc1Nvb25Bc1Bvc3NpYmxlXTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6Y29uZmln
dXJlTmV4dEltYWdlVGltZU9ic2VydmVyKCkKK3sKKyAgICBpZiAobV9uZXh0SW1hZ2VUaW1lYmFz
ZU9ic2VydmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGN1cnJlbnRUaW1lID0gUEFM
Ojp0b01lZGlhVGltZShbbV9wbGF5ZXIgY3VycmVudFRpbWVdKTsKKyAgICBhdXRvIGl0ZXIgPSBm
aW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFtZXMsIGN1cnJlbnRUaW1lKTsKKyAgICBpZiAoaXRl
ciA9PSBtX3ZpZGVvRnJhbWVzLmVuZCgpIHx8ICsraXRlciA9PSBtX3ZpZGVvRnJhbWVzLmVuZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG5leHRJbWFnZVRpbWUgPSBpdGVyLT5maXJz
dDsKKworICAgIG1fbmV4dEltYWdlVGltZWJhc2VPYnNlcnZlciA9IFttX3BsYXllciBhZGRCb3Vu
ZGFyeVRpbWVPYnNlcnZlckZvclRpbWVzOkBbW05TVmFsdWUgdmFsdWVXaXRoQ01UaW1lOlBBTDo6
dG9DTVRpbWUoY3VycmVudFRpbWUpXV0gcXVldWU6Z2xvYmFsT3V0cHV0RGVsZWdhdGVRdWV1ZSgp
IHVzaW5nQmxvY2s6W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb3RlY3RlZERlbGVn
YXRlID0gbV9kZWxlZ2F0ZSwgcHJvdGVjdGVkT3V0cHV0ID0gbV92aWRlb091dHB1dF0gKCkgbXV0
YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vh
a1RoaXMpXSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vh
a1RoaXMtPm5leHRJbWFnZVRpbWVSZWFjaGVkKCk7CisgICAgICAgIH0pOworICAgIH1dOworfQor
Cit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpjYW5jZWxOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKQor
eworICAgIGlmICghbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBbbV9wbGF5ZXIgcmVtb3ZlVGltZU9ic2VydmVyOm1fbmV4dEltYWdlVGltZWJhc2VP
YnNlcnZlci5nZXQoKV07CisgICAgbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyID0gbmlsOwor
fQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpuZXh0SW1hZ2VUaW1lUmVhY2hlZCgpCit7Cisg
ICAgY2FuY2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisgICAgYXV0byBvYnNlcnZlcnMgPSBz
dGQ6OmV4Y2hhbmdlKG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycywgeyB9KTsKKyAgICBv
YnNlcnZlcnMuZm9yRWFjaChbXShhdXRvJiBvYnNlcnZlcikgeyBvYnNlcnZlcigpOyB9KTsKK30K
Kwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6YWRkVmlkZW9GcmFtZUVudHJpZXMoVmVjdG9yPFZp
ZGVvRnJhbWVFbnRyeT4mJiB2aWRlb0ZyYW1lRW50cmllcykKK3sKKyAgICBib29sIG5lZWRzSW1h
Z2VGb3JDdXJyZW50VGltZUNoYW5nZWQgPSBmYWxzZTsKKyAgICBib29sIGhhc0N1cnJlbnRJbWFn
ZUNoYW5nZWRPYnNlcnZlcnMgPSBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMuY29tcHV0
ZVNpemUoKTsKKyAgICBNZWRpYVRpbWUgY3VycmVudFRpbWUgPSBoYXNDdXJyZW50SW1hZ2VDaGFu
Z2VkT2JzZXJ2ZXJzID8gUEFMOjp0b01lZGlhVGltZShbbV9wbGF5ZXIgY3VycmVudFRpbWVdKSA6
IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKTsKKworICAgIGZvciAoYXV0byYgZW50cnkgOiB2aWRl
b0ZyYW1lRW50cmllcykgeworICAgICAgICBpZiAoaGFzQ3VycmVudEltYWdlQ2hhbmdlZE9ic2Vy
dmVycyAmJiBlbnRyeS5kaXNwbGF5VGltZSA8PSBjdXJyZW50VGltZSkKKyAgICAgICAgICAgIG5l
ZWRzSW1hZ2VGb3JDdXJyZW50VGltZUNoYW5nZWQgPSB0cnVlOworICAgICAgICBtX3ZpZGVvRnJh
bWVzLmVtcGxhY2UoZW50cnkuZGlzcGxheVRpbWUsIFdURk1vdmUoZW50cnkucGl4ZWxCdWZmZXIp
KTsKKyAgICB9CisKKyAgICBpZiAobmVlZHNJbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCkKKyAg
ICAgICAgbmV4dEltYWdlVGltZVJlYWNoZWQoKTsKKyAgICBlbHNlIGlmIChoYXNDdXJyZW50SW1h
Z2VDaGFuZ2VkT2JzZXJ2ZXJzKQorICAgICAgICBjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2
ZXIoKTsKKworICAgIGlmIChtX3BhdXNlZCkKKyAgICAgICAgW21fdmlkZW9PdXRwdXQgcmVxdWVz
dE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJsZV07Cit9CisKK3Zv
aWQgUXVldWVkVmlkZW9PdXRwdXQ6OnB1cmdlVmlkZW9GcmFtZUVudHJpZXMoKQoreworICAgIGNh
bmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworICAgIG1fdmlkZW9GcmFtZXMuY2xlYXIoKTsK
K30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VJbWFnZXNCZWZvcmVUaW1lKGNvbnN0
IE1lZGlhVGltZSYgdGltZSkKK3sKKyAgICBtX3ZpZGVvRnJhbWVzLmVyYXNlKG1fdmlkZW9GcmFt
ZXMuYmVnaW4oKSwgZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJhbWVzLCB0aW1lKSk7Cit9CisK
K3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OnJhdGVDaGFuZ2VkKGZsb2F0IHJhdGUpCit7CisgICAg
bV9wYXVzZWQgPSAhcmF0ZTsKKworICAgIGlmIChtX3BhdXNlZCkKKyAgICAgICAgW21fdmlkZW9P
dXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJs
ZV07Cit9CisKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkNjYxNjBlMGZiZWViOWY2Zjg4YTRlODM0
YzYyZGIxMTRkMzkzNDVkLi5kNTMyNmRmMDQyNGI2MzA1MWI2NGM2ZTgwNjNmMmEzOTg4ZjUyMWIx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDEtMDggIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSByVkZDKCkgaXNuJ3QgY2FsbGVkIGZvciBp
bml0aWFsIHZpZGVvIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzNTAwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFy
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWst
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1l
LXNlZWsuaHRtbDogQWRkZWQuCisKIDIwMjItMDEtMDcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wb3J0IGNzcy9maWx0ZXItZWZmZWN0cyB3ZWIg
cGxhdGZvcm0gdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3Qtdmlk
ZW8tZnJhbWUtbG9hZHN0YXJ0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVl
c3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzAyZjY2
ZWJhYmRmYjU3NGQ5ZjlmZjFkNWI4MWZjODA4OTIwMzZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNiBAQAorCitSVU4odmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhj
YWxsYmFjaykpCitSVU4odmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVu
dC90ZXN0IikpCitQcm9taXNlIHJlc29sdmVkIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC5odG1sIGIv
TGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42NTBiM2YxYThjNjExYTI2ZmNkMGE1NGVlZTBmYjAyYzU1ZTY2ZjYxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3Rh
cnQuaHRtbApAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
CisgICAgPHRpdGxlPnJlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0PC90aXRsZT4KKyAgICA8
c2NyaXB0IHNyYz0idmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Im1l
ZGlhLWZpbGUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyBldmVudCA9PiB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1l
bnQoKTsKKworICAgICAgICBsZXQgdmlkZW9GcmFtZVByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVz
b2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby5y
ZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGNhbGxiYWNrKSknKTsKKyAgICAgICAgICAgIHZpZGVv
LnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2socmVzb2x2ZSk7CisgICAgICAgIH0pOworCisgICAg
ICAgIHJ1bigndmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0
IiknKTsKKworICAgICAgICBhd2FpdCBzaG91bGRSZXNvbHZlKHZpZGVvRnJhbWVQcm9taXNlKTsK
KworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgICA8dmlkZW8gbXV0ZWQ+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1
ZXN0LXZpZGVvLWZyYW1lLXNlZWstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVx
dWVzdC12aWRlby1mcmFtZS1zZWVrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTAxNWYyNmI4
M2FjOTlhZmYzMDU2OGIzMmU2Njk0MTUwNjRjNzVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1zZWVrLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDggQEAKKworUlVOKHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRl
bnQvdGVzdCIpKQorRVZFTlQoY2FucGxheXRocm91Z2gpCitSVU4odmlkZW8ucmVxdWVzdFZpZGVv
RnJhbWVDYWxsYmFjayhjYWxsYmFjaykpCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjUpCitQ
cm9taXNlIHJlc29sdmVkIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWsuaHRtbCBiL0xheW91dFRlc3RzL21lZGlh
L3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjNmIwNzZjNGQ1Y2Zm
ZDczZDM5MDA4ODZmNWIxZjA1NGEyOWFhZDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWsuaHRtbApAQCAtMCwwICsxLDMxIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPnJlcXVlc3QtdmlkZW8t
ZnJhbWUtbG9hZHN0YXJ0PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0idmlkZW8tdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Im1lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyBldmVu
dCA9PiB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAgICBydW4oJ3ZpZGVv
LnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpJyk7CisKKyAgICAg
ICAgYXdhaXQgd2FpdEZvcih2aWRlbywgJ2NhbnBsYXl0aHJvdWdoJyk7CisKKyAgICAgICAgbGV0
IHZpZGVvRnJhbWVQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewor
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxs
YmFjayhjYWxsYmFjaykpJyk7CisgICAgICAgICAgICB2aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNh
bGxiYWNrKHJlc29sdmUpOworICAgICAgICB9KTsKKworICAgICAgICBydW4oJ3ZpZGVvLmN1cnJl
bnRUaW1lID0gMC41Jyk7CisKKyAgICAgICAgYXdhaXQgc2hvdWxkUmVzb2x2ZSh2aWRlb0ZyYW1l
UHJvbWlzZSk7CisKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0pOworICAgIDwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+CisgICAgPHZpZGVvIG11dGVkPjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="474603"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
    <flag name="commit-queue"
          id="474606"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448682</attachid>
            <date>2022-01-08 14:18:13 -0800</date>
            <delta_ts>2022-01-08 14:42:28 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235006-20220108141813.patch</filename>
            <type>text/plain</type>
            <size>49092</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU0MDAxODYyMzlkYzQ5
NTJjMTJlY2YwNTczNzg3ZjBmYWI3MTA0YS4uZDU1NWI5NTE5ZTU5NzExZjQzOTBjZmE4ZWRiYTE3
N2M3YjBhZmNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIyLTAxLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gclZGQygpIGlz
bid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
bG9hZHN0YXJ0Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sCisKKyAgICAgICAgQWRkIGEgbmV3IHV0aWxpdHkgY2xhc3MsIFF1ZXVlZFZpZGVv
T3V0cHV0LCB3aGljaCB3aWxsIHB1bGwgcGl4ZWwgYnVmZmVycyBvdXQgb2YgYW4gQVZQbGF5ZXJJ
dGVtVmlkZW9PdXRwdXQKKyAgICAgICAgcHJlLWVtcHRpdmVseS4gT25jZSB0aG9zZSBwaXhlbCBi
dWZmZXJzIGFyZSBlbnF1ZXVlZCBsb2NhbGx5LCB0aGVpciBhc3NvY2lhdGVkIHRpbWluZyBpbmZv
cm1hdGlvbiBjYW4gYmUgdXNlZCB0bworICAgICAgICBmaXJlIGEgY2FsbGJhY2sgZm9yIHRoYXQg
YnVmZmVyJ3MgZGlzcGxheSB0aW1lLgorCisgICAgICAgIFByZXZpb3VzbHksIHBhaW50cyB3ZXJl
IGJsb2NrZWQgZnJvbSBwdWxsaW5nIG5ldyBwaXhlbCBidWZmZXJzIGZyb20gdGhlIHZpZGVvIG91
dHB1dC4gV2l0aCB0aGUgUXVldWVkVmlkZW9PdXRwdXQKKyAgICAgICAgY2xhc3MsIHRoaXMgaXMg
bm8gbG9uZ2VyIG5lY2Vzc2FyeS4gVGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHdpbGwgbm90aWZ5IGl0
cyBjbGllbnQgd2hlbiB0aGUgaW1hZ2UgZm9yIGN1cnJlbnRUaW1lCisgICAgICAgIGNoYW5nZXMs
IGFuZCBvdGhlciBjbGllbnRzIGNhbiBmcmVlbHkgYXNrIGZvciB0aGUgY3VycmVudFRpbWUncyBp
bWFnZS4KKworICAgICAgICBUbyBjdXJiIHJ1bmF3YXkgbWVtb3J5IGdyb3d0aCwgZnJhbWVzIGFy
ZSBwdXJnZWQgYXMgc29vbiBhcyBhIG5ldyBpbWFnZSBmb3IgdGhlIGN1cnJlbnQgdGltZSBpcyBh
dmFpbGFibGUsIGFuZCB3aGVuCisgICAgICAgIHRoZSB2aWRlbyBvdXRwdXQgc2lnbmFscyB0aGF0
IGl0cyBvd24gcXVldWVzIHdlcmUgcHVyZ2VkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFz
QXZhaWxhYmxlVmlkZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdGFydFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb1RyYWNrcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRl
b091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpkZXN0cm95VmlkZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdFBpeGVsQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnZpZGVvT3V0
cHV0SGFzQXZhaWxhYmxlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb2xv
clNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Om91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Z2xv
YmFsUHVsbERlbGVnYXRlUXVldWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRh
V2lsbENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVsZWdhdGUg
aW5pdFdpdGhQbGF5ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVs
ZWdhdGUgb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSBvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6XSk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVk
VmlkZW9PdXRwdXQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW06IEFkZGVkLgorICAgICAgICAoLVtXZWJR
dWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIGluaXRXaXRoUGFyZW50Ol0pOgorICAgICAgICAoLVtX
ZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2U6XSk6
CisgICAgICAgICgtW1dlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgb3V0cHV0U2VxdWVuY2VX
YXNGbHVzaGVkOl0pOgorICAgICAgICAoLVtXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG9i
c2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAg
IChXZWJDb3JlOjpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlF1ZXVlZFZpZGVvT3V0cHV0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlk
ZW9PdXRwdXQ6OlF1ZXVlZFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZp
ZGVvT3V0cHV0Ojp+UXVldWVkVmlkZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVk
VmlkZW9PdXRwdXQ6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVjbHR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6Omhhc0ltYWdlRm9yVGltZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6dGFrZVZpZGVvRnJhbWVF
bnRyeUZvclRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmFkZEN1
cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRl
b091dHB1dDo6Y29uZmlndXJlTmV4dEltYWdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UXVldWVkVmlkZW9PdXRwdXQ6OmltYWdlRm9yQ3VycmVudFRpbWVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjphZGRWaWRlb0ZyYW1lRW50cmllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VWaWRlb0ZyYW1lRW50cmllcyk6
CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VJbWFnZXNCZWZvcmVU
aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpyYXRlQ2hhbmdlZCk6
CisKIDIwMjEtMTItMTQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1JlZmFjdG9yXSBBZG9wdCBMb2dnZXJIZWxwZXIgaW4gTG9nZ2luZyBFTUUgY2xhc3Nlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKaW5kZXggMDk4NWFkMDZmMjc5NDkzNjg1MTI2ZTE2Y2UyMjAxOGY0NTU0
ZDA5OC4uN2IyMjgzOGMzZmU4NjhjMjBmYWQ4YjdmMmJkNGViMDFkY2I0YjM2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDEtMDggIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSByVkZDKCkgaXNuJ3QgY2FsbGVkIGZv
ciBpbml0aWFsIHZpZGVvIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNTAwNgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4K
KworICAgICAgICAqIHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg6CisKIDIwMjItMDEt
MDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4NzY5OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmgKaW5kZXggOGI3ZmYxMjM3YTBjOGMy
MmY4ODJmYTBiZmVlZThiZDNhZDRjYjcxMi4uNGY5Y2JlNmQzZDI3ZWM3ZDFhM2RkN2UxZDgyNzcw
ZTM3MTg4NDE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
QVZGb3VuZGF0aW9uU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
QVZGb3VuZGF0aW9uU1BJLmgKQEAgLTQwLDkgKzQwLDEwIEBACiAjaW1wb3J0IDxBVkZvdW5kYXRp
b24vQVZNZWRpYVNlbGVjdGlvbkdyb3VwX1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVk91dHB1dENvbnRleHRfUHJpdmF0ZS5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWT3V0
cHV0RGV2aWNlLmg+Ci0jaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJfUHJpdmF0ZS5oPgor
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVySXRlbU91dHB1dF9Qcml2YXRlLmg+CiAjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtX1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWRm91
bmRhdGlvbi9BVlBsYXllckxheWVyX1ByaXZhdGUuaD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
VlBsYXllcl9Qcml2YXRlLmg+CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQpAQCAtNjYsNiArNjcsNyBAQCBOU19BU1NVTUVfTk9O
TlVMTF9FTkQKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVTZXNzaW9uLmg+CiAjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXIuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBs
YXllckl0ZW0uaD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1PdXRwdXQuaD4K
IAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0lOVEVSU1RJVElBTF9FVkVOVFMpCiAjaW1wb3J0IDxB
VkZvdW5kYXRpb24vQVZQbGF5ZXJJbnRlcnN0aXRpYWxFdmVudENvbnRyb2xsZXIuaD4KQEAgLTky
LDYgKzk0LDExIEBAIHR5cGVkZWYgTlNTdHJpbmcgKiBBVlZpZGVvUmFuZ2UgTlNfVFlQRURfRU5V
TTsKIEBlbmQKICNlbmRpZgogCitAaW50ZXJmYWNlIEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IChB
VlBsYXllckl0ZW1WaWRlb091dHB1dEVhcmxpZXN0VGltZSkKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgQ01UaW1lIGVhcmxpZXN0QXZhaWxhYmxlUGl4ZWxCdWZmZXJJdGVtVGltZTsK
Ky0gKHZvaWQpcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3Nz
aWJsZTsKK0BlbmQKKwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpIHx8IFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjViN2Mz
OTA4N2EzNzJjYzQxMWU3OTgwZGRkMjM1M2I0YmVkMTk0OS4uMWM5YzFkMGJiMTYxNzgyODVhZWYz
YTFiMTFkOWJkMzc0NzRlZTMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQ0Niw2ICs0NDQ2LDggQEAKIAkJQ0QxRjlCNEQy
NzBEMDNBOTAwNjE3RUI2IC8qIFNjcm9sbEV4dGVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5QjRDMjcwRDAzQTkwMDYxN0VCNiAvKiBTY3Jv
bGxFeHRlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0QxRjlCN0QyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlC
N0MyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEMUY5QjgwMjcwRTY3
MUEwMDYxN0VCNiAvKiBTVkdFbGVtZW50SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlCN0YyNzBFNjcxQTAwNjE3RUI2IC8qIFNWR0Vs
ZW1lbnRJbmxpbmVzLmggKi87IH07CisJCUNEMjBFRDNDMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1
ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0QyMEVEM0EyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggKi87
IH07CisJCUNEMjBFRDNEMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjBFRDNCMjc4
NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSAqLzsgfTsKIAkJQ0QyMjVDMEIx
QzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDIyNUMwOTFDNDZGQkY0MDAxNDA3NjEg
LyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSAqLzsgfTsKIAkJQ0QyMjVDMEMxQzQ2RkJGNDAwMTQw
NzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEMjI1QzBBMUM0NkZCRjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNV
UkxTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0QyN0FFNTAyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdBRTRF
MjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1ODU2LDYgKzE1ODU4LDgg
QEAKIAkJQ0QxRjlCNzAyNzBERkE3RjAwNjE3RUI2IC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5p
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0QxRjlCN0MyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVt
ZW50SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQW5jaG9yRWxlbWVudElubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxRjlCN0YyNzBFNjcxQTAwNjE3RUI2IC8q
IFNWR0VsZW1lbnRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0VsZW1lbnRJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjBFRDNBMjc4NzhGRkIwMDM4QkU0NCAv
KiBRdWV1ZWRWaWRlb091dHB1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWV1ZWRWaWRlb091dHB1dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDIwRUQzQjI3ODc4RkZCMDAzOEJFNDQg
LyogUXVldWVkVmlkZW9PdXRwdXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBRdWV1ZWRWaWRl
b091dHB1dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyMjVDMDkxQzQ2RkJG
NDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDIyNUMwQTFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJM
U2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNVUkxT
ZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMjdBRTRFMjJBOTg2ODcw
MDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdl
Um90YXRpb25TZXNzaW9uVlQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwNTk5
LDYgKzMwNjAzLDggQEAKIAkJCQlDREM4QjVBNTE4MDQ3NEY3MDAxNkU2ODUgLyogTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhCNUE0MTgwNDc0RjcwMDE2RTY4NSAvKiBN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tICovLAogCQkJCTdBMjlGNTcxMThDNjk1MTQwMDRE
MEY4MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggKi8sCisJCQkJQ0QyMEVEM0Ey
Nzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggKi8sCisJCQkJQ0QyMEVEM0Iy
Nzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0Lm1tICovLAogCQkJCUNERjk5NEZB
MjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggKi8sCiAJCQkJ
Q0RGOTk0RkIyNEMxMkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0g
Ki8sCiAJCQkJQ0RDOEI1QTkxODA0N0ZGMTAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLmggKi8sCkBAIC0zNjU2Nyw2ICszNjU3Myw3IEBACiAJCQkJRUIwRkI3MEQyNzBEMEIy
RTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTgzQzFGNTk0MUVERjY5RDMwMDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2Fj
aGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMjBFRDNDMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1
ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1RTMxRjQxRTBDQjBCNTAwNEIz
NzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJBRUU5MkMyMjM4OEE3RDAw
NDE1N0E5IC8qIFF1aXJrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5RTM3MTcxMzczNkE2NjAw
QjlFOTE5IC8qIFF1b3RlZFByaW50YWJsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODU0Nyw2ICsz
ODU1NCw3IEBACiAJCQkJQUExMkRGNDkxNzQzREY4MzAwNERBRkRGIC8qIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTI5QTMwMUNCRjc0RDQw
MDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNEQTI5QTE2MUNCREE1NkMwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRDIwRUQzRDI3ODc4RkZCMDAzOEJFNDQgLyog
UXVldWVkVmlkZW9PdXRwdXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTkyNDI0OTIxMjdCOTNF
MDA2MzRGQ0YgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0gaW4gU291cmNl
cyAqLywKIAkJCQkwNzFDMDA0QjI3MEI4NjQ5MDBEMDI3QzcgLyogUmVwbGF5S2l0Q2FwdHVyZVNv
dXJjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMkIxQUVDMjIzOTdFQkMwMEI5MUNGNyAvKiBS
ZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aAppbmRleCAxZTY1NzU3MjQ2NTQ5NzM0M2NkZTJhMjRkOGYwZGM2YjRlMDI2N2UxLi42YTMyMmQ5
NDExNTJjOGQwNDk5Njg2Y2I1NDU5ZDI1N2IwZTdmYTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8Q29yZU1lZGlhL0NNVGltZS5oPgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL09ic2VydmVyLmg+CiAKIE9CSkNfQ0xBU1MgQVZBc3NldEltYWdlR2VuZXJhdG9yOwogT0JK
Q19DTEFTUyBBVkFzc2V0VHJhY2s7CkBAIC02Nyw2ICs2OCw3IEBAIGNsYXNzIEluYmFuZE1ldGFk
YXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CiBjbGFz
cyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzsKIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1Y7CitjbGFzcyBRdWV1ZWRWaWRlb091dHB1dDsKIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBWaWRlb0xheWVyTWFuYWdlck9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakM7CkBAIC0yNTIsOCArMjU0LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gY3JlYXRlSW1hZ2VGb3JUaW1lSW5SZWN0KGZsb2F0LCBjb25zdCBGbG9hdFJlY3Qm
KTsKICAgICB2b2lkIHBhaW50V2l0aEltYWdlR2VuZXJhdG9yKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYpOwogCi0gICAgZW51bSBjbGFzcyBVcGRhdGVUeXBlIHsgVXBkYXRlU3lu
Y2hyb25vdXNseSwgVXBkYXRlQXN5bmNocm9ub3VzbHkgfTsKLSAgICB2b2lkIHVwZGF0ZUxhc3RJ
bWFnZShVcGRhdGVUeXBlIHR5cGUgPSBVcGRhdGVUeXBlOjpVcGRhdGVBc3luY2hyb25vdXNseSk7
CisgICAgdm9pZCB1cGRhdGVMYXN0SW1hZ2UoKTsKIAogICAgIHZvaWQgY3JlYXRlVmlkZW9PdXRw
dXQoKTsKICAgICB2b2lkIGRlc3Ryb3lWaWRlb091dHB1dCgpOwpAQCAtMjYyLDcgKzI2Myw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBwYWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JT
cGFjZSgpIGZpbmFsOwotICAgIHZvaWQgd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENo
YW5nZSgpOwogCiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyRm9y
Q3VycmVudFRpbWUoKSBmaW5hbDsKIApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzdGFydFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpIGZpbmFsOwogICAgIHZvaWQg
c3RvcFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpIGZpbmFsOwogICAgIHN0ZDo6b3B0aW9u
YWw8VmlkZW9GcmFtZU1ldGFkYXRhPiB2aWRlb0ZyYW1lTWV0YWRhdGEoKSBmaW5hbCB7IHJldHVy
biBzdGQ6OmV4Y2hhbmdlKG1fdmlkZW9GcmFtZU1ldGFkYXRhLCB7IH0pOyB9Ci0gICAgdm9pZCBj
aGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YShDTVRpbWUpOworICAgIHZvaWQgY2hlY2tOZXdWaWRl
b0ZyYW1lTWV0YWRhdGEoKTsKIAogICAgIFJldGFpblB0cjxBVlVSTEFzc2V0PiBtX2F2QXNzZXQ7
CiAgICAgUmV0YWluUHRyPEFWUGxheWVyPiBtX2F2UGxheWVyOwpAQCAtMzY3LDcgKzM2Nyw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJldGFpblB0cjxBVkFzc2V0SW1hZ2VHZW5lcmF0b3I+
IG1faW1hZ2VHZW5lcmF0b3I7Ci0gICAgUmV0YWluUHRyPEFWUGxheWVySXRlbVZpZGVvT3V0cHV0
PiBtX3ZpZGVvT3V0cHV0OworICAgIFJlZlB0cjxRdWV1ZWRWaWRlb091dHB1dD4gbV92aWRlb091
dHB1dDsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZT4gbV92aWRlb091dHB1
dERlbGVnYXRlOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBtX2xhc3RQaXhlbEJ1
ZmZlcjsKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwpAQCAtNDM1LDcgKzQz
NSw2IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBsb25nIGxvbmcgbV9jYWNoZWRUb3RhbEJ5dGVz
IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fcGVuZGluZ1N0YXR1c0NoYW5nZXMgeyAwIH07CiAgICAg
aW50IG1fY2FjaGVkSXRlbVN0YXR1czsKLSAgICBpbnQgbV9ydW5Mb29wTmVzdGluZ0xldmVsIHsg
MCB9OwogICAgIE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3kgbV9idWZmZXJpbmdQb2xpY3kg
eyBNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5OjpEZWZhdWx0IH07CiAgICAgYm9vbCBtX2Nh
Y2hlZExpa2VseVRvS2VlcFVwIHsgZmFsc2UgfTsKICAgICBib29sIG1fY2FjaGVkQnVmZmVyRW1w
dHkgeyBmYWxzZSB9OwpAQCAtNDU2LDcgKzQ1NSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3No
b3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0IHsgZmFsc2UgfTsKICNlbmRpZgogICAgIGJvb2wgbV9o
YXZlUHJvY2Vzc2VkQ2hhcHRlclRyYWNrcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3dhaXRGb3JW
aWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2VUaW1lZE91dCB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX2hhdmVCZWVuQXNrZWRUb1BhaW50IHsgZmFsc2UgfTsKICAgICB1aW50NjRfdCBtX3NhbXBs
ZUNvdW50IHsgMCB9OwogICAgIFJldGFpblB0cjxpZD4gbV92aWRlb0ZyYW1lTWV0YWRhdGFHYXRo
ZXJpbmdPYnNlcnZlcjsKQEAgLTQ2NCw2ICs0NjIsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0
aW9uYWw8VmlkZW9GcmFtZU1ldGFkYXRhPiBtX3ZpZGVvRnJhbWVNZXRhZGF0YTsKICAgICBtdXRh
YmxlIHN0ZDo6b3B0aW9uYWw8TlNUaW1lSW50ZXJ2YWw+IG1fY2FjaGVkU2Vla2FibGVUaW1lUmFu
Z2VzTGFzdE1vZGlmaWVkVGltZTsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8TlNUaW1lSW50
ZXJ2YWw+IG1fY2FjaGVkTGl2ZVVwZGF0ZUludGVydmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxP
YnNlcnZlcjx2b2lkKCk+PiBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcjsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGMwNjdjY2U4MDY4NmY3YTFiYzU0MTRiYWY3N2Y3
NTI1MmJmMzQyYzcuLjAxZmU0ZDEzMWRiMTdkMjc4MGE0NjU4ZTFlNDBlNmQ4NmFjMTJjODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNTgsNiArNTgsNyBAQAogI2ltcG9ydCAiUGxhdGZv
cm1TY3JlZW4uaCIKICNpbXBvcnQgIlBsYXRmb3JtVGV4dFRyYWNrLmgiCiAjaW1wb3J0ICJQbGF0
Zm9ybVRpbWVSYW5nZXMuaCIKKyNpbXBvcnQgIlF1ZXVlZFZpZGVvT3V0cHV0LmgiCiAjaW1wb3J0
ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNjcmlwdERpc2FsbG93ZWRT
Y29wZS5oIgogI2ltcG9ydCAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTIwNSwxNiArMjA2LDYgQEAg
LSAoaWQpaW5pdFdpdGhQbGF5ZXI6KFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQz4mJilwbGF5ZXI7CiAtIChCT09MKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3Vy
Y2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVk
UmVzb3VyY2U6KEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopbG9hZGluZ1JlcXVlc3Q7
CiBAZW5kCiAKLUBpbnRlcmZhY2UgV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSA6IE5TT2JqZWN0PEFW
UGxheWVySXRlbU91dHB1dFB1bGxEZWxlZ2F0ZT4gewotICAgIEJpbmFyeVNlbWFwaG9yZSBtX3Nl
bWFwaG9yZTsKLX0KLS0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpcGxheWVyOwotLSAodm9pZClvdXRwdXRNZWRpYURhdGFX
aWxsQ2hhbmdlOihBVlBsYXllckl0ZW1PdXRwdXQgKilzZW5kZXI7Ci0tICh2b2lkKW91dHB1dFNl
cXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0OwotCi1AcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJpbmFyeVNlbWFwaG9yZSYgc2VtYXBob3JlOwotQGVu
ZAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlv
blRvU3RyaW5nKEFWUGxheWVyVGltZUNvbnRyb2xTdGF0dXMgZW51bWVyYXRpb25WYWx1ZSkKIHsK
QEAgLTI2MSwxNiArMjUyLDYgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsTG9hZGVy
RGVsZWdhdGVRdWV1ZSgpCiAgICAgcmV0dXJuIGdsb2JhbFF1ZXVlOwogfQogCi1zdGF0aWMgZGlz
cGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpCi17Ci0gICAgc3RhdGljIGRp
c3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUXVldWU7Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBv
bmNlVG9rZW47Ci0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBnbG9i
YWxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSBx
dWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGdsb2Jh
bFF1ZXVlOwotfQotCiBzdGF0aWMgdm9pZCByZWdpc3RlckZvcm1hdFJlYWRlcklmTmVjZXNzYXJ5
KCkKIHsKICNpZiBFTkFCTEUoV0VCTV9GT1JNQVRfUkVBREVSKQpAQCAtNDY5LDcgKzQ1MCw4IEBA
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6On5NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDKCkKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Jlc291cmNlTG9hZGVy
TWFwKQogICAgICAgICBwYWlyLnZhbHVlLT5pbnZhbGlkYXRlKCk7CiAKLSAgICBbbV92aWRlb091
dHB1dCBzZXREZWxlZ2F0ZTpuaWwgcXVldWU6MF07CisgICAgaWYgKG1fdmlkZW9PdXRwdXQpCisg
ICAgICAgIG1fdmlkZW9PdXRwdXQtPmludmFsaWRhdGUoKTsKIAogICAgIGlmIChtX3ZpZGVvTGF5
ZXIpCiAgICAgICAgIGRlc3Ryb3lWaWRlb0xheWVyKCk7CkBAIC03MDIsNyArNjg0LDEzIEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzQXZhaWxhYmxlVmlkZW9G
cmFtZSgpIGNvbnN0CiAgICAgaWYgKGN1cnJlbnRSZW5kZXJpbmdNb2RlKCkgPT0gTWVkaWFSZW5k
ZXJpbmdNb2RlOjpNZWRpYVJlbmRlcmluZ1RvTGF5ZXIpCiAgICAgICAgIHJldHVybiBtX2NhY2hl
ZElzUmVhZHlGb3JEaXNwbGF5OwogCi0gICAgaWYgKG1fdmlkZW9PdXRwdXQgJiYgKG1fbGFzdFBp
eGVsQnVmZmVyIHx8IFttX3ZpZGVvT3V0cHV0IGhhc05ld1BpeGVsQnVmZmVyRm9ySXRlbVRpbWU6
W21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXV0pKQorICAgIGlmICghbV92aWRlb091dHB1dCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fbGFzdFBpeGVsQnVmZmVyKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX3ZpZGVvT3V0cHV0LT5oYXNJbWFnZUZvclRp
bWUoY3VycmVudE1lZGlhVGltZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVy
biBtX3ZpZGVvRnJhbWVIYXNEcmF3bjsKQEAgLTEyNzYsNyArMTI2NCw3IEBAIFBsYXRmb3JtTGF5
ZXIqIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBj
b25zdAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZVZp
ZGVvRnVsbHNjcmVlbklubGluZUltYWdlKCkKIHsKLSAgICB1cGRhdGVMYXN0SW1hZ2UoVXBkYXRl
VHlwZTo6VXBkYXRlU3luY2hyb25vdXNseSk7CisgICAgdXBkYXRlTGFzdEltYWdlKCk7CiAgICAg
bV92aWRlb0xheWVyTWFuYWdlci0+dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UobV9s
YXN0SW1hZ2UgPyBtX2xhc3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVsbHB0cik7CiB9CiAK
QEAgLTEyODgsNyArMTI3Niw3IEBAIFJldGFpblB0cjxQbGF0Zm9ybUxheWVyPiBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb0Z1bGxzY3JlCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBs
YXRmb3JtTGF5ZXIqIHZpZGVvRnVsbHNjcmVlbkxheWVyLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHZpZGVvRnVsbHNjcmVlbkxheWVyKQotICAgICAg
ICB1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZTo6VXBkYXRlU3luY2hyb25vdXNseSk7CisgICAg
ICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAgIG1fdmlkZW9MYXllck1hbmFnZXItPnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVlbkxheWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgbV9sYXN0SW1hZ2UgPyBtX2xhc3RJbWFnZS0+cGxhdGZvcm1JbWFnZSgpIDogbnVs
bHB0cik7CiAgICAgdXBkYXRlRGlzYWJsZUV4dGVybmFsUGxheWJhY2soKTsKIH0KQEAgLTE0NDQs
MzQgKzE0MzIsMzEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpw
bGF0Zm9ybVBhdXNlZCgpIGNvbnN0CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c3RhcnRWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmcoKQogewotICAgIEFTU0VS
VCghbV92aWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmdPYnNlcnZlciB8fCBtX2F2UGxheWVyKTsK
LSAgICBtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhID0gdHJ1ZTsKKyAgICAvLyByZXF1
ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKCkgY2FyZXMgYWJvdXQgdGhlIC9uZXh0LyBhdmFpbGFibGUg
ZnJhbWUuIFB1bGwgdGhlIGN1cnJlbnQgZnJhbWUgZnJvbQorICAgIC8vIHRoZSBRdWV1ZWRWaWRl
b091dHB1dCBzbyBwYWludHMgb2YgdGhlIGN1cnJlbnQgZnJhbWUgc3VjY2VlZDsKKyAgICB1cGRh
dGVMYXN0UGl4ZWxCdWZmZXIoKTsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIGEgQ0FE
aXNwbGF5TGluayB0byBnZXQgdXBkYXRlcyBvbiByZW5kZXJpbmcsIGZvciBub3cgd2UgZW11bGF0
ZSB3aXRoIGFkZFBlcmlvZGljVGltZU9ic2VydmVyRm9ySW50ZXJ2YWwuCi0gICAgbV92aWRlb0Zy
YW1lTWV0YWRhdGFHYXRoZXJpbmdPYnNlcnZlciA9IFttX2F2UGxheWVyIGFkZFBlcmlvZGljVGlt
ZU9ic2VydmVyRm9ySW50ZXJ2YWw6UEFMOjpDTVRpbWVNYWtlKDEsIDYwKSBxdWV1ZTpkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpIHVzaW5nQmxvY2s6W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH1dKENNVGltZSBjdXJyZW50VGltZSkgewotICAgICAgICBlbnN1cmVPbk1haW5UaHJlYWQoW3dl
YWtUaGlzLCBjdXJyZW50VGltZV0gewotICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAg
ICAgICAgICAgIHdlYWtUaGlzLT5jaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YShjdXJyZW50VGlt
ZSk7CisgICAgaWYgKG1fdmlkZW9PdXRwdXQpIHsKKyAgICAgICAgbV9jdXJyZW50SW1hZ2VDaGFu
Z2VkT2JzZXJ2ZXIgPSBXVEY6Om1ha2VfdW5pcXVlPE9ic2VydmVyPHZvaWQoKT4+KFt0aGlzXSB7
CisgICAgICAgICAgICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciA9IG51bGxwdHI7Cisg
ICAgICAgICAgICBjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YSgpOwogICAgICAgICB9KTsKLSAg
ICB9XTsKKyAgICAgICAgbV92aWRlb091dHB1dC0+YWRkQ3VycmVudEltYWdlQ2hhbmdlZE9ic2Vy
dmVyKCptX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcik7CisgICAgfQorCisgICAgbV9pc0dh
dGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSA9IHRydWU7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoQ01UaW1l
IGN1cnJlbnRUaW1lKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpj
aGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YSgpCiB7Ci0gICAgaWYgKCF1cGRhdGVMYXN0UGl4ZWxC
dWZmZXIoKSkKKyAgICBpZiAoIW1faXNHYXRoZXJpbmdWaWRlb0ZyYW1lTWV0YWRhdGEpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFZpZGVvRnJhbWVNZXRhZGF0YSBtZXRhZGF0YTsKLSAgICBtZXRh
ZGF0YS53aWR0aCA9IG1fY2FjaGVkUHJlc2VudGF0aW9uU2l6ZS53aWR0aCgpOwotICAgIG1ldGFk
YXRhLmhlaWdodCA9IG1fY2FjaGVkUHJlc2VudGF0aW9uU2l6ZS5oZWlnaHQoKTsKLSAgICBtZXRh
ZGF0YS5wcmVzZW50ZWRGcmFtZXMgPSArK21fc2FtcGxlQ291bnQ7Ci0gICAgbWV0YWRhdGEubWVk
aWFUaW1lID0gUEFMOjpDTVRpbWVHZXRTZWNvbmRzKGN1cnJlbnRUaW1lKTsKLSAgICAvLyBGSVhN
RTogcHJlc2VudGF0aW9uVGltZSBhbmQgZXhwZWN0ZWREaXNwbGF5VGltZSBtaWdodCBub3QgYWx3
YXlzIGhhdmUgdGhlIHNhbWUgdmFsdWUsIHdlIHNob3VsZCB0cnkgZ2V0dGluZyBtb3JlIHByZWNp
c2UgdmFsdWVzLgotICAgIG1ldGFkYXRhLnByZXNlbnRhdGlvblRpbWUgPSBNb25vdG9uaWNUaW1l
Ojpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKTsKLSAgICBtZXRhZGF0YS5leHBl
Y3RlZERpc3BsYXlUaW1lID0gbWV0YWRhdGEucHJlc2VudGF0aW9uVGltZTsKKyAgICBpZiAoIXVw
ZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpIHx8ICFtX3ZpZGVvRnJhbWVNZXRhZGF0YSkKKyAgICAgICAg
cmV0dXJuOwogCi0gICAgbV92aWRlb0ZyYW1lTWV0YWRhdGEgPSBtZXRhZGF0YTsKLSAgICBwbGF5
ZXIoKS0+b25OZXdWaWRlb0ZyYW1lTWV0YWRhdGEoV1RGTW92ZShtZXRhZGF0YSksIG1fbGFzdFBp
eGVsQnVmZmVyLmdldCgpKTsKKyAgICBwbGF5ZXIoKS0+b25OZXdWaWRlb0ZyYW1lTWV0YWRhdGEo
V1RGTW92ZSgqbV92aWRlb0ZyYW1lTWV0YWRhdGEpLCBtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7
CisgICAgbV92aWRlb0ZyYW1lTWV0YWRhdGEgPSB7IH07CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3RvcFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygp
CkBAIC0yNDMzLDEwICsyNDE4LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjp1cGRhdGVWaWRlb1RyYWNrcygpCiAgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fdmlk
ZW9UcmFja3MpCiAgICAgICAgIHRyYWNrLT5yZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIAot
ICAgIC8vIEluIGNhc2UgdGhlIHZpZGVvIHRyYWNrIGNvbnRlbnQgY2hhbmdlZCwgd2UgbWF5IGJl
IGFibGUgdG8gcGVyZm9ybSBhIHJlYWRiYWNrIGFnYWluLgotICAgIGlmIChjb3VudCkKLSAgICAg
ICAgbV93YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlVGltZWRPdXQgPSBmYWxz
ZTsKLQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInRyYWNrIGNvdW50IHdhcyAiLCBj
b3VudCwgIiwgaXMgIiwgbV92aWRlb1RyYWNrcy5zaXplKCkpOwogfQogCkBAIC0yNTE4LDE3ICsy
NDk5LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRl
VmlkZW9PdXRwdXQoKQogICAgIGlmICghbV9hdlBsYXllckl0ZW0gfHwgbV92aWRlb091dHB1dCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aWRlb091dHB1dCA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NBVlBsYXllckl0ZW1WaWRlb091dHB1dEluc3RhbmNlKCkgaW5pdFdpdGhQaXhlbEJ1ZmZlckF0
dHJpYnV0ZXM6bmlsXSk7CisgICAgbV92aWRlb091dHB1dCA9IFF1ZXVlZFZpZGVvT3V0cHV0Ojpj
cmVhdGUobV9hdlBsYXllckl0ZW0uZ2V0KCksIG1fYXZQbGF5ZXIuZ2V0KCkpOwogICAgIEFTU0VS
VChtX3ZpZGVvT3V0cHV0KTsKICAgICBpZiAoIW1fdmlkZW9PdXRwdXQpIHsKICAgICAgICAgRVJS
T1JfTE9HKExPR0lERU5USUZJRVIsICItW0FWUGxheWVySXRlbVZpZGVvT3V0cHV0IGluaXRXaXRo
UGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOl0gZmFpbGVkISIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotCi0gICAgbV92aWRlb091dHB1dERlbGVnYXRlID0gYWRvcHROUyhbW1dlYkNvcmVBVkZQdWxs
RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGxheWVyOip0aGlzXSk7Ci0gICAgW21fdmlkZW9PdXRw
dXQgc2V0RGVsZWdhdGU6bV92aWRlb091dHB1dERlbGVnYXRlLmdldCgpIHF1ZXVlOmdsb2JhbFB1
bGxEZWxlZ2F0ZVF1ZXVlKCldOwotCi0gICAgW21fYXZQbGF5ZXJJdGVtIGFkZE91dHB1dDptX3Zp
ZGVvT3V0cHV0LmdldCgpXTsKKyAgICBpZiAobV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIp
CisgICAgICAgIG1fdmlkZW9PdXRwdXQtPmFkZEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcigq
bV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIpOwogCiAgICAgc2V0TmVlZHNSZW5kZXJpbmdN
b2RlQ2hhbmdlZCgpOwogfQpAQCAtMjUzOCwxOSArMjUxNiwxNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb091dHB1dCgpCiAgICAgaWYgKCFt
X3ZpZGVvT3V0cHV0KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9hdlBsYXllckl0ZW0p
Ci0gICAgICAgIFttX2F2UGxheWVySXRlbSByZW1vdmVPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQo
KV07Ci0KICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIG1fdmlkZW9PdXRwdXQg
PSAwOworICAgIG1fdmlkZW9PdXRwdXQtPmludmFsaWRhdGUoKTsKKyAgICBtX3ZpZGVvT3V0cHV0
ID0gbnVsbHB0cjsKIAogICAgIHNldE5lZWRzUmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIH0KIAog
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0UGl4ZWxC
dWZmZXIoKQogewotICAgIGlmICghbV9hdlBsYXllckl0ZW0gfHwgcmVhZHlTdGF0ZSgpIDwgTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSkKKyAgICBpZiAoIW1fYXZQbGF5
ZXJJdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2hhdmVCZWVuQXNrZWRUb1Bh
aW50ID0gdHJ1ZTsKQEAgLTI1NTksMTIgKzI1MzUsMjUgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKQogICAgICAgICBjcmVh
dGVWaWRlb091dHB1dCgpOwogICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0KTsKIAotICAgIENNVGlt
ZSBjdXJyZW50VGltZSA9IFttX2F2UGxheWVySXRlbSBjdXJyZW50VGltZV07CisgICAgYXV0byBj
dXJyZW50VGltZSA9IGN1cnJlbnRNZWRpYVRpbWUoKTsKIAotICAgIGlmICghW21fdmlkZW9PdXRw
dXQgaGFzTmV3UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpjdXJyZW50VGltZV0pCisgICAgaWYgKCFt
X3ZpZGVvT3V0cHV0LT5oYXNJbWFnZUZvclRpbWUoY3VycmVudFRpbWUpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBtX2xhc3RQaXhlbEJ1ZmZlciA9IGFkb3B0Q0YoW21fdmlkZW9PdXRw
dXQgY29weVBpeGVsQnVmZmVyRm9ySXRlbVRpbWU6Y3VycmVudFRpbWUgaXRlbVRpbWVGb3JEaXNw
bGF5Om5pbF0pOworICAgIGF1dG8gZW50cnkgPSBtX3ZpZGVvT3V0cHV0LT50YWtlVmlkZW9GcmFt
ZUVudHJ5Rm9yVGltZShjdXJyZW50VGltZSk7CisgICAgbV9sYXN0UGl4ZWxCdWZmZXIgPSBXVEZN
b3ZlKGVudHJ5LnBpeGVsQnVmZmVyKTsKKworICAgIGlmIChtX2lzR2F0aGVyaW5nVmlkZW9GcmFt
ZU1ldGFkYXRhKSB7CisgICAgICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9IE1vbm90b25pY1Rp
bWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpIC0gKGN1cnJlbnRUaW1lIC0g
ZW50cnkuZGlzcGxheVRpbWUpLnRvRG91YmxlKCk7CisgICAgICAgIG1fdmlkZW9GcmFtZU1ldGFk
YXRhID0geworICAgICAgICAgICAgLndpZHRoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENWUGl4
ZWxCdWZmZXJHZXRXaWR0aChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpLAorICAgICAgICAgICAg
LmhlaWdodCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1f
bGFzdFBpeGVsQnVmZmVyLmdldCgpKSksCisgICAgICAgICAgICAucHJlc2VudGVkRnJhbWVzID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCsrbV9zYW1wbGVDb3VudCksCisgICAgICAgICAgICAubWVk
aWFUaW1lID0gZW50cnkuZGlzcGxheVRpbWUudG9Eb3VibGUoKSwKKyAgICAgICAgICAgIC5wcmVz
ZW50YXRpb25UaW1lID0gcHJlc2VudGF0aW9uVGltZSwKKyAgICAgICAgICAgIC5leHBlY3RlZERp
c3BsYXlUaW1lID0gcHJlc2VudGF0aW9uVGltZSwKKyAgICAgICAgfTsKKyAgICB9CiAKICAgICBp
ZiAobV9pbWFnZVJvdGF0aW9uU2Vzc2lvbikKICAgICAgICAgbV9sYXN0UGl4ZWxCdWZmZXIgPSBt
X2ltYWdlUm90YXRpb25TZXNzaW9uLT5yb3RhdGUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwpA
QCAtMjU4NCwxMCArMjU3MywxMCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUoKQogICAgIGlmICghbV92aWRlb091
dHB1dCkKICAgICAgICAgY3JlYXRlVmlkZW9PdXRwdXQoKTsKIAotICAgIHJldHVybiBbbV92aWRl
b091dHB1dCBoYXNOZXdQaXhlbEJ1ZmZlckZvckl0ZW1UaW1lOlttX2F2UGxheWVySXRlbSBjdXJy
ZW50VGltZV1dOworICAgIHJldHVybiBtX3ZpZGVvT3V0cHV0LT5oYXNJbWFnZUZvclRpbWUoUEFM
Ojp0b01lZGlhVGltZShbbV9hdlBsYXllckl0ZW0gY3VycmVudFRpbWVdKSk7CiB9CiAKLXZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKFVwZGF0
ZVR5cGUgdHlwZSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBk
YXRlTGFzdEltYWdlKCkKIHsKICAgICBpZiAoIW1fYXZQbGF5ZXJJdGVtIHx8IHJlYWR5U3RhdGUo
KSA8IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlQ3VycmVudERhdGEpCiAgICAgICAgIHJl
dHVybjsKQEAgLTI1OTYsMTMgKzI1ODUsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQogICAgIGlmICgh
Zmlyc3RFbmFibGVkVmlkZW9UcmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHR5cGUg
PT0gVXBkYXRlVHlwZTo6VXBkYXRlU3luY2hyb25vdXNseSAmJiAhbV9sYXN0SW1hZ2UgJiYgIXZp
ZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUoKSkKLSAgICAgICAgd2FpdEZvclZpZGVvT3V0cHV0
TWVkaWFEYXRhV2lsbENoYW5nZSgpOwotCiAgICAgLy8gQ2FsbHMgdG8gY29weVBpeGVsQnVmZmVy
Rm9ySXRlbVRpbWU6aXRlbVRpbWVGb3JEaXNwbGF5OiBtYXkgcmV0dXJuIG5pbCBpZiB0aGUgcGl4
ZWwgYnVmZmVyCiAgICAgLy8gZm9yIHRoZSByZXF1ZXN0ZWQgdGltZSBoYXMgYWxyZWFkeSBiZWVu
IHJldHJpZXZlZC4gSW4gdGhpcyBjYXNlLCB0aGUgbGFzdCB2YWxpZCBpbWFnZSAoaWYgYW55KQog
ICAgIC8vIHNob3VsZCBiZSBkaXNwbGF5ZWQuCi0gICAgaWYgKChtX2lzR2F0aGVyaW5nVmlkZW9G
cmFtZU1ldGFkYXRhIHx8ICF1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSkgJiYgKG1fbGFzdEltYWdl
IHx8ICFtX2xhc3RQaXhlbEJ1ZmZlcikpCisgICAgaWYgKCF1cGRhdGVMYXN0UGl4ZWxCdWZmZXIo
KSAmJiAobV9sYXN0SW1hZ2UgfHwgIW1fbGFzdFBpeGVsQnVmZmVyKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKCFtX3BpeGVsQnVmZmVyQ29uZm9ybWVyKSB7CkBAIC0yNjE5LDcgKzI2MDUs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJ
bWFnZShVcGRhdGVUeXBlIHR5cGUpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIG91dHB1dFJlY3QpCiB7Ci0gICAgdXBkYXRlTGFzdEltYWdlKFVwZGF0
ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOworICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAg
IGlmICghbV9sYXN0SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjYzNyw3NCArMjYyMywy
OSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZp
ZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYgYwogCiBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJl
Zj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGl4ZWxCdWZmZXJGb3JDdXJy
ZW50VGltZSgpCiB7Ci0gICAgaWYgKCFtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhKQot
ICAgICAgICB1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKTsKKyAgICB1cGRhdGVMYXN0UGl4ZWxCdWZm
ZXIoKTsKIAogICAgIHJldHVybiBtX2xhc3RQaXhlbEJ1ZmZlcjsKIH0KIAogUmVmUHRyPE5hdGl2
ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCkKIHsKLSAgICB1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZTo6VXBkYXRl
U3luY2hyb25vdXNseSk7CisgICAgdXBkYXRlTGFzdEltYWdlKCk7CiAgICAgcmV0dXJuIG1fbGFz
dEltYWdlOwogfQogCiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y29sb3JTcGFjZSgpCiB7Ci0gICAgdXBkYXRlTGFzdEltYWdlKFVwZGF0
ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOworICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAg
IGlmICghbV9sYXN0UGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKTsKIAogICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UoY3JlYXRl
Q0dDb2xvclNwYWNlRm9yQ1ZQaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpOwog
fQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndhaXRGb3JWaWRl
b091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQotewotICAgIGlmIChtX3dhaXRGb3JWaWRlb091
dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2VUaW1lZE91dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Ly8gV2FpdCBmb3IgMSBzZWNvbmQuCi0gICAgTW9ub3RvbmljVGltZSBzdGFydCA9IE1vbm90b25p
Y1RpbWU6Om5vdygpOwotCi0gICAgc3RkOjpvcHRpb25hbDxSdW5Mb29wOjpUaW1lcjxNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPj4gdGltZW91dFRpbWVyOwotCi0gICAgaWYgKCFt
X3J1bkxvb3BOZXN0aW5nTGV2ZWwpIHsKLSAgICAgICAgW21fdmlkZW9PdXRwdXQgcmVxdWVzdE5v
dGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlV2l0aEFkdmFuY2VJbnRlcnZhbDowXTsKLQotICAg
ICAgICB0aW1lb3V0VGltZXIuZW1wbGFjZShSdW5Mb29wOjptYWluKCksIFsmXSB7Ci0gICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwotICAgICAgICB9KTsKLSAgICAgICAgdGltZW91
dFRpbWVyLT5zdGFydE9uZVNob3QoMV9zKTsKLSAgICB9Ci0KLSAgICArK21fcnVuTG9vcE5lc3Rp
bmdMZXZlbDsKLSAgICBSdW5Mb29wOjpydW4oKTsKLSAgICAtLW1fcnVuTG9vcE5lc3RpbmdMZXZl
bDsKLQotICAgIGlmIChtX3J1bkxvb3BOZXN0aW5nTGV2ZWwpIHsKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLnN0b3AoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJvb2wgc2F0aXNm
aWVkID0gdGltZW91dFRpbWVyLT5pc0FjdGl2ZSgpOwotICAgIGlmICghc2F0aXNmaWVkKSB7Ci0g
ICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidGltZWQgb3V0Iik7Ci0gICAgICAgIG1f
d2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZVRpbWVkT3V0ID0gdHJ1ZTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIndhaXRpbmcgZm9yIHZp
ZGVvT3V0cHV0IHRvb2sgIiwgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnQpLnNlY29uZHMo
KSk7Ci19Ci0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6b3V0cHV0
TWVkaWFEYXRhV2lsbENoYW5nZSgpCiB7Ci0gICAgaWYgKG1fcnVuTG9vcE5lc3RpbmdMZXZlbCkg
ewotICAgICAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpCi0gICAgICAgICAgICBSdW5Mb29wOjpt
YWluKCkuc3RvcCgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbXSB7Ci0gICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLnN0b3AoKTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfQorICAgIGNoZWNrTmV3VmlkZW9GcmFt
ZU1ldGFkYXRhKCk7CiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKQEAg
LTQwODksMzcgKzQwMzAsNCBAQCAtICh2b2lkKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3Vy
Y2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBkaWRDYW5jZWxMb2FkaW5nUgogCiBAZW5kCiAKLUBp
bXBsZW1lbnRhdGlvbiBXZWJDb3JlQVZGUHVsbERlbGVnYXRlIHsKLSAgICBXZWFrUHRyPFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+IF9wbGF5ZXI7Ci19Ci0KLUBz
eW50aGVzaXplIHNlbWFwaG9yZSA9IG1fc2VtYXBob3JlOwotCi0tIChpZClpbml0V2l0aFBsYXll
cjooV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiYmKXBsYXllcgot
ewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1
cm4gbmlsOwotICAgIF9wbGF5ZXIgPSBXVEZNb3ZlKHBsYXllcik7Ci0gICAgcmV0dXJuIHNlbGY7
Ci19Ci0KLS0gKHZvaWQpb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQbGF5ZXJJdGVtVmlk
ZW9PdXRwdXQgKilvdXRwdXQKLXsKLSAgICBVTlVTRURfUEFSQU0ob3V0cHV0KTsKLSAgICBtX3Nl
bWFwaG9yZS5zaWduYWwoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzZWxmLCBzdHJvbmdTZWxm
ID0gUmV0YWluUHRyIHsgc2VsZiB9XSB7Ci0gICAgICAgIGlmIChfcGxheWVyKQotICAgICAgICAg
ICAgX3BsYXllci0+b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpOwotICAgIH0pOwotfQotCi0t
ICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQg
KilvdXRwdXQKLXsKLSAgICBVTlVTRURfUEFSQU0ob3V0cHV0KTsKLSAgICAvLyBOby1vcC4KLX0K
LQotQGVuZAotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRiYWYwZWExMWU1YzRmYmUzMjRkOTUyNWFkZjFiZGIzYzYzMzBhODgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgPG1h
cD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+Cisj
aW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CisK
K09CSkNfQ0xBU1MgQVZQbGF5ZXI7CitPQkpDX0NMQVNTIEFWUGxheWVySXRlbTsKK09CSkNfQ0xB
U1MgQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ7CitPQkpDX0NMQVNTIFdlYlF1ZXVlZFZpZGVvT3V0
cHV0RGVsZWdhdGU7CisKK3R5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZmZXJS
ZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUXVldWVkVmlkZW9PdXRwdXQKKyAg
ICA6IHB1YmxpYyBSZWZDb3VudGVkPFF1ZXVlZFZpZGVvT3V0cHV0PgorICAgICwgcHVibGljIENh
bk1ha2VXZWFrUHRyPFF1ZXVlZFZpZGVvT3V0cHV0PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxRdWV1ZWRWaWRlb091dHB1dD4gY3JlYXRl
KEFWUGxheWVySXRlbSosIEFWUGxheWVyKik7CisgICAgflF1ZXVlZFZpZGVvT3V0cHV0KCk7CisK
KyAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAgICBib29sIGhhc0ltYWdlRm9yVGltZShjb25zdCBN
ZWRpYVRpbWUmKSBjb25zdDsKKworICAgIHN0cnVjdCBWaWRlb0ZyYW1lRW50cnkgeworICAgICAg
ICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXI7CisgICAgICAgIE1lZGlh
VGltZSBkaXNwbGF5VGltZTsKKyAgICB9OworICAgIFZpZGVvRnJhbWVFbnRyeSB0YWtlVmlkZW9G
cmFtZUVudHJ5Rm9yVGltZShjb25zdCBNZWRpYVRpbWUmKTsKKworICAgIHZvaWQgYWRkVmlkZW9G
cmFtZUVudHJpZXMoVmVjdG9yPFZpZGVvRnJhbWVFbnRyeT4mJik7CisgICAgdm9pZCBwdXJnZVZp
ZGVvRnJhbWVFbnRyaWVzKCk7CisKKyAgICB1c2luZyBDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2
ZXIgPSBPYnNlcnZlcjx2b2lkKCk+OworICAgIHZvaWQgYWRkQ3VycmVudEltYWdlQ2hhbmdlZE9i
c2VydmVyKGNvbnN0IEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciYpOworCisgICAgdXNpbmcg
SW1hZ2VNYXAgPSBzdGQ6Om1hcDxNZWRpYVRpbWUsIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
Pj47CisKKyAgICB2b2lkIHJhdGVDaGFuZ2VkKGZsb2F0KTsKKworcHJpdmF0ZToKKyAgICBRdWV1
ZWRWaWRlb091dHB1dChBVlBsYXllckl0ZW0qLCBBVlBsYXllciopOworCisgICAgdm9pZCBwdXJn
ZUltYWdlc0JlZm9yZVRpbWUoY29uc3QgTWVkaWFUaW1lJik7CisgICAgdm9pZCBjb25maWd1cmVO
ZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAgICB2b2lkIGNhbmNlbE5leHRJbWFnZVRpbWVPYnNl
cnZlcigpOworICAgIHZvaWQgbmV4dEltYWdlVGltZVJlYWNoZWQoKTsKKworICAgIFJldGFpblB0
cjxBVlBsYXllckl0ZW0+IG1fcGxheWVySXRlbTsKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXI+IG1f
cGxheWVyOworICAgIFJldGFpblB0cjxXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlPiBtX2Rl
bGVnYXRlOworICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW1WaWRlb091dHB1dD4gbV92aWRlb091
dHB1dDsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fdmlkZW9UaW1lYmFzZU9ic2VydmVyOworICAgIFJl
dGFpblB0cjxpZD4gbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyOworCisgICAgSW1hZ2VNYXAg
bV92aWRlb0ZyYW1lczsKKyAgICBXZWFrSGFzaFNldDxDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2
ZXI+IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyczsKKworICAgIGJvb2wgbV9wYXVzZWQg
eyB0cnVlIH07Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1
ZWRWaWRlb091dHB1dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYmMwODM4MTRjMDhjN2RlZWQ2MWM5MDc5YzIy
YmUzZjUwNzhhNzdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0KQEAgLTAsMCAr
MSwzMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXVl
dWVkVmlkZW9PdXRwdXQuaCIKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgPEFWRm91
bmRhdGlvbi9BVlBsYXllckl0ZW1PdXRwdXQuaD4KKyNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9u
L01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvQVZGb3Vu
ZGF0aW9uU1BJLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJz
Lmg+CisKKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbmNsdWRlIDxw
YWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKworQGludGVyZmFjZSBXZWJRdWV1ZWRW
aWRlb091dHB1dERlbGVnYXRlIDogTlNPYmplY3Q8QVZQbGF5ZXJJdGVtT3V0cHV0UHVsbERlbGVn
YXRlPiB7CisgICAgV2Vha1B0cjxXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dD4gX3BhcmVudDsK
K30KKy0gKGlkKWluaXRXaXRoUGFyZW50OihXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dCopcGFy
ZW50OworLSAodm9pZClvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOihBVlBsYXllckl0ZW1PdXRw
dXQgKilvdXRwdXQ7CistICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJ
dGVtT3V0cHV0ICopb3V0cHV0OworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBh
dGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250
ZXh0Oih2b2lkKiljb250ZXh0OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViUXVldWVkVmlk
ZW9PdXRwdXREZWxlZ2F0ZQorLSAoaWQpaW5pdFdpdGhQYXJlbnQ6KFdlYkNvcmU6OlF1ZXVlZFZp
ZGVvT3V0cHV0KilwYXJlbnQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICgh
c2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9wYXJlbnQgPSBwYXJlbnQ7CisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQ
bGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0Cit7CisgICAgQVNTRVJUKFtvdXRwdXQgaXNLaW5kT2ZD
bGFzczpQQUw6OmdldEFWUGxheWVySXRlbVZpZGVvT3V0cHV0Q2xhc3MoKV0pOworICAgIGF1dG8q
IHZpZGVvT3V0cHV0ID0gKEFWUGxheWVySXRlbVZpZGVvT3V0cHV0KilvdXRwdXQ7CisKKyAgICBW
ZWN0b3I8V2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OlZpZGVvRnJhbWVFbnRyeT4gdmlkZW9G
cmFtZUVudHJpZXM7CisgICAgZG8geworICAgICAgICBDTVRpbWUgZWFybGllc3RUaW1lID0gW3Zp
ZGVvT3V0cHV0IGVhcmxpZXN0QXZhaWxhYmxlUGl4ZWxCdWZmZXJJdGVtVGltZV07CisgICAgICAg
IGlmIChDTVRJTUVfSVNfSU5WQUxJRChlYXJsaWVzdFRpbWUpKQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGFkb3B0Q0YoW3ZpZGVvT3V0cHV0IGNvcHlQ
aXhlbEJ1ZmZlckZvckl0ZW1UaW1lOmVhcmxpZXN0VGltZSBpdGVtVGltZUZvckRpc3BsYXk6bmls
XSk7CisgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpCisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICB2aWRlb0ZyYW1lRW50cmllcy5hcHBlbmQoeyBXVEZNb3ZlKHBpeGVsQnVmZmVyKSwgUEFM
Ojp0b01lZGlhVGltZShlYXJsaWVzdFRpbWUpIH0pOworICAgIH0gd2hpbGUgKHRydWUpOworCisg
ICAgaWYgKHZpZGVvRnJhbWVFbnRyaWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY2FsbE9uTWFpblJ1bkxvb3AoW3ZpZGVvRnJhbWVFbnRyaWVzID0gV1RGTW92ZSh2aWRlb0Zy
YW1lRW50cmllcyksIHBhcmVudCA9IF9wYXJlbnRdICgpIG11dGFibGUgeworICAgICAgICBpZiAo
cGFyZW50KQorICAgICAgICAgICAgcGFyZW50LT5hZGRWaWRlb0ZyYW1lRW50cmllcyhXVEZNb3Zl
KHZpZGVvRnJhbWVFbnRyaWVzKSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpb3V0cHV0U2VxdWVu
Y2VXYXNGbHVzaGVkOihBVlBsYXllckl0ZW1PdXRwdXQgKilvdXRwdXQKK3sKKyAgICBBU1NFUlQo
W291dHB1dCBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXRDbGFz
cygpXSk7CisgICAgYXV0byogdmlkZW9PdXRwdXQgPSAoQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQq
KW91dHB1dDsKKyAgICBbdmlkZW9PdXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRh
Q2hhbmdlQXNTb29uQXNQb3NzaWJsZV07CisKKyAgICBjYWxsT25NYWluUnVuTG9vcChbcGFyZW50
ID0gX3BhcmVudF0geworICAgICAgICBpZiAocGFyZW50KQorICAgICAgICAgICAgcGFyZW50LT5w
dXJnZVZpZGVvRnJhbWVFbnRyaWVzKCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rp
b25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dAoreworICAgIGlmICghW2tleVBh
dGggaXNFcXVhbFRvU3RyaW5nOkAicmF0ZSJdKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IHJhdGVWYWx1ZSA9IChOU051bWJlciopW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hh
bmdlTmV3S2V5XTsKKyAgICBBU1NFUlQoW3JhdGVWYWx1ZSBpc0tpbmRPZkNsYXNzOk5TTnVtYmVy
LmNsYXNzXSk7CisgICAgYXV0byByYXRlID0gcmF0ZVZhbHVlLmZsb2F0VmFsdWU7CisKKyAgICBl
bnN1cmVPbk1haW5SdW5Mb29wKFtwYXJlbnQgPSBfcGFyZW50LCByYXRlXSB7CisgICAgICAgIGlm
IChwYXJlbnQpCisgICAgICAgICAgICBwYXJlbnQtPnJhdGVDaGFuZ2VkKHJhdGUpOworICAgIH0p
OworfQorQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBkaXNwYXRjaF9xdWV1
ZV90IGdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9x
dWV1ZV90IGdsb2JhbFF1ZXVlOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2Vu
OworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgZ2xvYmFsUXVldWUg
PSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgcXVl
dWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworICAgIH0pOworICAgIHJldHVybiBnbG9iYWxR
dWV1ZTsKK30KKworUmVmPFF1ZXVlZFZpZGVvT3V0cHV0PiBRdWV1ZWRWaWRlb091dHB1dDo6Y3Jl
YXRlKEFWUGxheWVySXRlbSogaXRlbSwgQVZQbGF5ZXIqIHBsYXllcikKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBRdWV1ZWRWaWRlb091dHB1dChpdGVtLCBwbGF5ZXIpKTsKK30KKworUXVl
dWVkVmlkZW9PdXRwdXQ6OlF1ZXVlZFZpZGVvT3V0cHV0KEFWUGxheWVySXRlbSogaXRlbSwgQVZQ
bGF5ZXIqIHBsYXllcikKKyAgICA6IG1fcGxheWVySXRlbShpdGVtKQorICAgICwgbV9wbGF5ZXIo
cGxheWVyKQorICAgICwgbV9kZWxlZ2F0ZShhZG9wdE5TKFtbV2ViUXVldWVkVmlkZW9PdXRwdXRE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQoreworICAgIG1fdmlkZW9PdXRw
dXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXRJbnN0YW5jZSgp
IGluaXRXaXRoUGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOm5pbF0pOworICAgIFttX3ZpZGVvT3V0cHV0
IHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCkgcXVldWU6Z2xvYmFsT3V0cHV0RGVsZWdhdGVR
dWV1ZSgpXTsKKyAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURh
dGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKKworICAgIFttX3BsYXllckl0ZW0gYWRkT3V0cHV0
Om1fdmlkZW9PdXRwdXQuZ2V0KCldOworCisgICAgW21fcGxheWVyIGFkZE9ic2VydmVyOm1fZGVs
ZWdhdGUuZ2V0KCkgZm9yS2V5UGF0aDpAInJhdGUiIG9wdGlvbnM6KE5TS2V5VmFsdWVPYnNlcnZp
bmdPcHRpb25OZXcgfCBOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCkgY29udGV4dDpu
aWxdOworCisgICAgbV92aWRlb1RpbWViYXNlT2JzZXJ2ZXIgPSBbbV9wbGF5ZXIgYWRkUGVyaW9k
aWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbDpQQUw6OkNNVGltZU1ha2UoMSwgNjApIHF1ZXVlOmds
b2JhbE91dHB1dERlbGVnYXRlUXVldWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBwcm90ZWN0ZWREZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIHByb3RlY3RlZE91dHB1
dCA9IG1fdmlkZW9PdXRwdXRdKENNVGltZSBjdXJyZW50VGltZSkgbXV0YWJsZSB7CisKKyAgICAg
ICAgLy8gUGVyaW9kaWNhbGx5IGNoZWNrIGZvciBuZXcgYXZhaWxhYmxlIHBpeGVsIGJ1ZmZlcnMu
CisgICAgICAgIFtwcm90ZWN0ZWREZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOnBy
b3RlY3RlZE91dHB1dC5nZXQoKV07CisKKyAgICAgICAgLy8gQW5kIHB1cmdlIHRoZSBiYWNrIGJ1
ZmZlciBvZiBwYXN0IGZyYW1lcy4KKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlz
ID0gd2Vha1RoaXMsIHRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKGN1cnJlbnRUaW1lKV0geworICAg
ICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5wdXJnZUlt
YWdlc0JlZm9yZVRpbWUodGltZSk7CisgICAgICAgIH0pOworICAgIH1dOworfQorCitRdWV1ZWRW
aWRlb091dHB1dDo6flF1ZXVlZFZpZGVvT3V0cHV0KCkKK3sKKyAgICBpbnZhbGlkYXRlKCk7Cit9
CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmludmFsaWRhdGUoKQoreworICAgIGlmIChtX3Zp
ZGVvVGltZWJhc2VPYnNlcnZlcikgeworICAgICAgICBbbV9wbGF5ZXIgcmVtb3ZlVGltZU9ic2Vy
dmVyOm1fdmlkZW9UaW1lYmFzZU9ic2VydmVyLmdldCgpXTsKKyAgICAgICAgbV92aWRlb1RpbWVi
YXNlT2JzZXJ2ZXIgPSBuaWw7CisgICAgfQorCisgICAgY2FuY2VsTmV4dEltYWdlVGltZU9ic2Vy
dmVyKCk7CisKKyAgICBpZiAobV92aWRlb091dHB1dCkgeworICAgICAgICBbbV9wbGF5ZXJJdGVt
IHJlbW92ZU91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKKyAgICAgICAgW21fdmlkZW9PdXRw
dXQgc2V0RGVsZWdhdGU6bmlsIHF1ZXVlOm5pbF07CisgICAgICAgIG1fdmlkZW9PdXRwdXQgPSBu
aWw7CisgICAgfQorCisgICAgaWYgKG1fcGxheWVyKSB7CisgICAgICAgIFttX3BsYXllciByZW1v
dmVPYnNlcnZlcjptX2RlbGVnYXRlLmdldCgpIGZvcktleVBhdGg6QCJyYXRlIl07CisgICAgICAg
IG1fcGxheWVyID0gbmlsOworICAgIH0KKworICAgIG1fcGxheWVySXRlbSA9IG5pbDsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIE1heWJlQ29uc3RNYXAsIHR5cGVuYW1lIE1heWJlQ29uc3RJdGVy
ID0gZGVjbHR5cGUoTWF5YmVDb25zdE1hcCgpLmJlZ2luKCkpPgorTWF5YmVDb25zdEl0ZXIgZmlu
ZEltYWdlRm9yVGltZShNYXliZUNvbnN0TWFwJiBtYXAsIGNvbnN0IE1lZGlhVGltZSYgdGltZSkK
K3sKKyAgICAvLyBPdXRwdXRzIG9mIEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IGhhdmUgYSBkaXNw
bGF5IHRpbWUsIGJ1dCBub3QgYSBkdXJhdGlvbjsgdGhleSBhcmUgdmFsaWQKKyAgICAvLyB1bnRp
bCB0aGUgYXJyaXZhbCBvZiBhIGxhdGVyIGZyYW1lLiBGaW5kIHRoaXMgZnJhbWUgZWZmaWNpZW50
bHkgdXNpbmcgc2V0Ojp1cHBlcl9ib3VuZCB0byBmaW5kCisgICAgLy8gdGhlIG5leHQgZGlzcGxh
eWFibGUgZnJhbWUsIGFuZCB3YWxrIGJhY2t3YXJkcyBieSBvbmUgdG8gZmluZCBhIGZyYW1lIGZv
ciB0aGUgdGFyZ2V0IHRpbWUuCisgICAgaWYgKG1hcC5lbXB0eSgpKQorICAgICAgICByZXR1cm4g
bWFwLmVuZCgpOworCisgICAgYXV0byBpdGVyID0gbWFwLnVwcGVyX2JvdW5kKHRpbWUpOworICAg
IGlmIChpdGVyID09IG1hcC5iZWdpbigpKQorICAgICAgICByZXR1cm4gbWFwLmVuZCgpOworCisg
ICAgcmV0dXJuIC0taXRlcjsKK30KKworYm9vbCBRdWV1ZWRWaWRlb091dHB1dDo6aGFzSW1hZ2VG
b3JUaW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZmluZElt
YWdlRm9yVGltZShtX3ZpZGVvRnJhbWVzLCB0aW1lKSAhPSBtX3ZpZGVvRnJhbWVzLmVuZCgpOwor
fQorCithdXRvIFF1ZXVlZFZpZGVvT3V0cHV0Ojp0YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShj
b25zdCBNZWRpYVRpbWUmIHRpbWUpIC0+IFZpZGVvRnJhbWVFbnRyeQoreworICAgIGF1dG8gaXRl
ciA9IGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywgdGltZSk7CisgICAgaWYgKGl0ZXIg
PT0gbV92aWRlb0ZyYW1lcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgTWVkaWFU
aW1lOjppbnZhbGlkVGltZSgpIH07CisKKyAgICBWaWRlb0ZyYW1lRW50cnkgZW50cnkgPSB7IFdU
Rk1vdmUoaXRlci0+c2Vjb25kKSwgaXRlci0+Zmlyc3QgfTsKKworICAgIC8vIFB1cmdlIGFsbCBm
cmFtZXMgYmVmb3JlIGB0aW1lYCwgc28gdGhhdCByZXBlYXRlZCBjYWxscyB3aXRoIHRoZSBzYW1l
IHRpbWUgZG9uJ3QgcmV0dXJuCisgICAgLy8gc3VjY2Vzc2l2ZWx5IGVhcmxpZXIgaW1hZ2VzLgor
ICAgIG1fdmlkZW9GcmFtZXMuZXJhc2UobV92aWRlb0ZyYW1lcy5iZWdpbigpLCArK2l0ZXIpOwor
CisgICAgcmV0dXJuIGVudHJ5OworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjphZGRDdXJy
ZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoY29uc3QgQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVy
JiBvYnNlcnZlcikKK3sKKyAgICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMuYWRkKG9i
c2VydmVyKTsKKyAgICBjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKworICAgIFtt
X3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZUFzU29vbkFz
UG9zc2libGVdOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0Ojpjb25maWd1cmVOZXh0SW1h
Z2VUaW1lT2JzZXJ2ZXIoKQoreworICAgIGlmIChtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY3VycmVudFRpbWUgPSBQQUw6OnRvTWVkaWFU
aW1lKFttX3BsYXllciBjdXJyZW50VGltZV0pOworICAgIGF1dG8gaXRlciA9IGZpbmRJbWFnZUZv
clRpbWUobV92aWRlb0ZyYW1lcywgY3VycmVudFRpbWUpOworICAgIGlmIChpdGVyID09IG1fdmlk
ZW9GcmFtZXMuZW5kKCkgfHwgKytpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gbmV4dEltYWdlVGltZSA9IGl0ZXItPmZpcnN0OworCisgICAg
bV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyID0gW21fcGxheWVyIGFkZEJvdW5kYXJ5VGltZU9i
c2VydmVyRm9yVGltZXM6QFtbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWU6UEFMOjp0b0NNVGltZShj
dXJyZW50VGltZSldXSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCkgdXNpbmdCbG9j
azpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvdGVjdGVkRGVsZWdhdGUgPSBtX2Rl
bGVnYXRlLCBwcm90ZWN0ZWRPdXRwdXQgPSBtX3ZpZGVvT3V0cHV0XSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldIHsK
KyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bmV4
dEltYWdlVGltZVJlYWNoZWQoKTsKKyAgICAgICAgfSk7CisgICAgfV07Cit9CisKK3ZvaWQgUXVl
dWVkVmlkZW9PdXRwdXQ6OmNhbmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigpCit7CisgICAgaWYg
KCFtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFtt
X3BsYXllciByZW1vdmVUaW1lT2JzZXJ2ZXI6bV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyLmdl
dCgpXTsKKyAgICBtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIgPSBuaWw7Cit9CisKK3ZvaWQg
UXVldWVkVmlkZW9PdXRwdXQ6Om5leHRJbWFnZVRpbWVSZWFjaGVkKCkKK3sKKyAgICBjYW5jZWxO
ZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAgICBhdXRvIG9ic2VydmVycyA9IHN0ZDo6ZXhjaGFu
Z2UobV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzLCB7IH0pOworICAgIG9ic2VydmVycy5m
b3JFYWNoKFtdKGF1dG8mIG9ic2VydmVyKSB7IG9ic2VydmVyKCk7IH0pOworfQorCit2b2lkIFF1
ZXVlZFZpZGVvT3V0cHV0OjphZGRWaWRlb0ZyYW1lRW50cmllcyhWZWN0b3I8VmlkZW9GcmFtZUVu
dHJ5PiYmIHZpZGVvRnJhbWVFbnRyaWVzKQoreworICAgIGJvb2wgbmVlZHNJbWFnZUZvckN1cnJl
bnRUaW1lQ2hhbmdlZCA9IGZhbHNlOworICAgIGJvb2wgaGFzQ3VycmVudEltYWdlQ2hhbmdlZE9i
c2VydmVycyA9IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycy5jb21wdXRlU2l6ZSgpOwor
ICAgIE1lZGlhVGltZSBjdXJyZW50VGltZSA9IGhhc0N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZl
cnMgPyBQQUw6OnRvTWVkaWFUaW1lKFttX3BsYXllciBjdXJyZW50VGltZV0pIDogTWVkaWFUaW1l
OjppbnZhbGlkVGltZSgpOworCisgICAgZm9yIChhdXRvJiBlbnRyeSA6IHZpZGVvRnJhbWVFbnRy
aWVzKSB7CisgICAgICAgIGlmIChoYXNDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzICYmIGVu
dHJ5LmRpc3BsYXlUaW1lIDw9IGN1cnJlbnRUaW1lKQorICAgICAgICAgICAgbmVlZHNJbWFnZUZv
ckN1cnJlbnRUaW1lQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIG1fdmlkZW9GcmFtZXMuZW1wbGFj
ZShlbnRyeS5kaXNwbGF5VGltZSwgV1RGTW92ZShlbnRyeS5waXhlbEJ1ZmZlcikpOworICAgIH0K
KworICAgIGlmIChuZWVkc0ltYWdlRm9yQ3VycmVudFRpbWVDaGFuZ2VkKQorICAgICAgICBuZXh0
SW1hZ2VUaW1lUmVhY2hlZCgpOworICAgIGVsc2UgaWYgKGhhc0N1cnJlbnRJbWFnZUNoYW5nZWRP
YnNlcnZlcnMpCisgICAgICAgIGNvbmZpZ3VyZU5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworCisg
ICAgaWYgKG1fcGF1c2VkKQorICAgICAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0
aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKK30KKwordm9pZCBRdWV1ZWRW
aWRlb091dHB1dDo6cHVyZ2VWaWRlb0ZyYW1lRW50cmllcygpCit7CisgICAgY2FuY2VsTmV4dElt
YWdlVGltZU9ic2VydmVyKCk7CisgICAgbV92aWRlb0ZyYW1lcy5jbGVhcigpOworfQorCit2b2lk
IFF1ZXVlZFZpZGVvT3V0cHV0OjpwdXJnZUltYWdlc0JlZm9yZVRpbWUoY29uc3QgTWVkaWFUaW1l
JiB0aW1lKQoreworICAgIG1fdmlkZW9GcmFtZXMuZXJhc2UobV92aWRlb0ZyYW1lcy5iZWdpbigp
LCBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFtZXMsIHRpbWUpKTsKK30KKwordm9pZCBRdWV1
ZWRWaWRlb091dHB1dDo6cmF0ZUNoYW5nZWQoZmxvYXQgcmF0ZSkKK3sKKyAgICBtX3BhdXNlZCA9
ICFyYXRlOworCisgICAgaWYgKG1fcGF1c2VkKQorICAgICAgICBbbV92aWRlb091dHB1dCByZXF1
ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKK30KKwor
fQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ2NjE2MGUwZmJlZWI5ZjZmODhhNGU4MzRjNjJkYjExNGQz
OTM0NWQuLmU4ZjY2YWYzZTc1MDA3YjU4MGEzMmM5YmZhMmVhMDQ5YWFmYjAyMmEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAyMi0wMS0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KKworICAgICAgICBbQ29jb2FdIHJWRkMoKSBpc24ndCBjYWxsZWQgZm9yIGluaXRpYWwgdmlk
ZW8gbG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM1MDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICog
bWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWstZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWsuaHRtbDog
QWRkZWQuCisKIDIwMjItMDEtMDcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgSW1wb3J0IGNzcy9maWx0ZXItZWZmZWN0cyB3ZWIgcGxhdGZvcm0gdGVz
dHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9h
ZHN0YXJ0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJh
bWUtbG9hZHN0YXJ0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzAyZjY2ZWJhYmRmYjU3NGQ5
ZjlmZjFkNWI4MWZjODA4OTIwMzZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVk
aWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NiBAQAorCitSVU4odmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhjYWxsYmFjaykpCitS
VU4odmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0IikpCitQ
cm9taXNlIHJlc29sdmVkIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC5odG1sIGIvTGF5b3V0VGVzdHMv
bWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTBi
M2YxYThjNjExYTI2ZmNkMGE1NGVlZTBmYjAyYzU1ZTY2ZjYxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQuaHRtbApAQCAt
MCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxl
PnJlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0i
dmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Im1lZGlhLWZpbGUuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xv
YWQnLCBhc3luYyBldmVudCA9PiB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAg
ICAgICBsZXQgdmlkZW9GcmFtZVByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby5yZXF1ZXN0VmlkZW9G
cmFtZUNhbGxiYWNrKGNhbGxiYWNrKSknKTsKKyAgICAgICAgICAgIHZpZGVvLnJlcXVlc3RWaWRl
b0ZyYW1lQ2FsbGJhY2socmVzb2x2ZSk7CisgICAgICAgIH0pOworCisgICAgICAgIHJ1bigndmlk
ZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0IiknKTsKKworICAg
ICAgICBhd2FpdCBzaG91bGRSZXNvbHZlKHZpZGVvRnJhbWVQcm9taXNlKTsKKworICAgICAgICBl
bmRUZXN0KCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8
dmlkZW8gbXV0ZWQ+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZy
YW1lLXNlZWstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1m
cmFtZS1zZWVrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTAxNWYyNmI4M2FjOTlhZmYzMDU2
OGIzMmU2Njk0MTUwNjRjNzVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
cmVxdWVzdC12aWRlby1mcmFtZS1zZWVrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKKwor
UlVOKHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpKQor
RVZFTlQoY2FucGxheXRocm91Z2gpCitSVU4odmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFj
ayhjYWxsYmFjaykpCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjUpCitQcm9taXNlIHJlc29s
dmVkIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1
ZXN0LXZpZGVvLWZyYW1lLXNlZWsuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3Qtdmlk
ZW8tZnJhbWUtc2Vlay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5MjU4ZjAzNjM4Y2NmOGE2YzhmMzQ2MGQ3
MTQzMzRhNDc5MDk1OGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1
ZXN0LXZpZGVvLWZyYW1lLXNlZWsuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPnJlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlazwv
dGl0bGU+CisgICAgPHNjcmlwdCBzcmM9InZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJtZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworICAgICAgICBm
aW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBmaW5kTWVkaWFG
aWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKScpOworCisgICAgICAgIGF3YWl0IHdhaXRGb3Io
dmlkZW8sICdjYW5wbGF5dGhyb3VnaCcpOworCisgICAgICAgIGxldCB2aWRlb0ZyYW1lUHJvbWlz
ZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgnUlVOKHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soY2FsbGJhY2spKScp
OworICAgICAgICAgICAgdmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhyZXNvbHZlKTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgcnVuKCd2aWRlby5jdXJyZW50VGltZSA9IDAuNScpOwor
CisgICAgICAgIGF3YWl0IHNob3VsZFJlc29sdmUodmlkZW9GcmFtZVByb21pc2UpOworCisgICAg
ICAgIGVuZFRlc3QoKTsKKyAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
ICAgIDx2aWRlbyBtdXRlZD48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUK
</data>
<flag name="commit-queue"
          id="474608"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448684</attachid>
            <date>2022-01-08 14:48:25 -0800</date>
            <delta_ts>2022-01-09 11:37:11 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235006-20220108144825.patch</filename>
            <type>text/plain</type>
            <size>49092</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU0MDAxODYyMzlkYzQ5
NTJjMTJlY2YwNTczNzg3ZjBmYWI3MTA0YS4uZDU1NWI5NTE5ZTU5NzExZjQzOTBjZmE4ZWRiYTE3
N2M3YjBhZmNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIyLTAxLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gclZGQygpIGlz
bid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
bG9hZHN0YXJ0Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sCisKKyAgICAgICAgQWRkIGEgbmV3IHV0aWxpdHkgY2xhc3MsIFF1ZXVlZFZpZGVv
T3V0cHV0LCB3aGljaCB3aWxsIHB1bGwgcGl4ZWwgYnVmZmVycyBvdXQgb2YgYW4gQVZQbGF5ZXJJ
dGVtVmlkZW9PdXRwdXQKKyAgICAgICAgcHJlLWVtcHRpdmVseS4gT25jZSB0aG9zZSBwaXhlbCBi
dWZmZXJzIGFyZSBlbnF1ZXVlZCBsb2NhbGx5LCB0aGVpciBhc3NvY2lhdGVkIHRpbWluZyBpbmZv
cm1hdGlvbiBjYW4gYmUgdXNlZCB0bworICAgICAgICBmaXJlIGEgY2FsbGJhY2sgZm9yIHRoYXQg
YnVmZmVyJ3MgZGlzcGxheSB0aW1lLgorCisgICAgICAgIFByZXZpb3VzbHksIHBhaW50cyB3ZXJl
IGJsb2NrZWQgZnJvbSBwdWxsaW5nIG5ldyBwaXhlbCBidWZmZXJzIGZyb20gdGhlIHZpZGVvIG91
dHB1dC4gV2l0aCB0aGUgUXVldWVkVmlkZW9PdXRwdXQKKyAgICAgICAgY2xhc3MsIHRoaXMgaXMg
bm8gbG9uZ2VyIG5lY2Vzc2FyeS4gVGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHdpbGwgbm90aWZ5IGl0
cyBjbGllbnQgd2hlbiB0aGUgaW1hZ2UgZm9yIGN1cnJlbnRUaW1lCisgICAgICAgIGNoYW5nZXMs
IGFuZCBvdGhlciBjbGllbnRzIGNhbiBmcmVlbHkgYXNrIGZvciB0aGUgY3VycmVudFRpbWUncyBp
bWFnZS4KKworICAgICAgICBUbyBjdXJiIHJ1bmF3YXkgbWVtb3J5IGdyb3d0aCwgZnJhbWVzIGFy
ZSBwdXJnZWQgYXMgc29vbiBhcyBhIG5ldyBpbWFnZSBmb3IgdGhlIGN1cnJlbnQgdGltZSBpcyBh
dmFpbGFibGUsIGFuZCB3aGVuCisgICAgICAgIHRoZSB2aWRlbyBvdXRwdXQgc2lnbmFscyB0aGF0
IGl0cyBvd24gcXVldWVzIHdlcmUgcHVyZ2VkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFz
QXZhaWxhYmxlVmlkZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdGFydFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb1RyYWNrcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRl
b091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpkZXN0cm95VmlkZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdFBpeGVsQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnZpZGVvT3V0
cHV0SGFzQXZhaWxhYmxlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb2xv
clNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Om91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Z2xv
YmFsUHVsbERlbGVnYXRlUXVldWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRh
V2lsbENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVsZWdhdGUg
aW5pdFdpdGhQbGF5ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVs
ZWdhdGUgb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSBvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6XSk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVk
VmlkZW9PdXRwdXQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW06IEFkZGVkLgorICAgICAgICAoLVtXZWJR
dWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIGluaXRXaXRoUGFyZW50Ol0pOgorICAgICAgICAoLVtX
ZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2U6XSk6
CisgICAgICAgICgtW1dlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgb3V0cHV0U2VxdWVuY2VX
YXNGbHVzaGVkOl0pOgorICAgICAgICAoLVtXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG9i
c2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAg
IChXZWJDb3JlOjpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlF1ZXVlZFZpZGVvT3V0cHV0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlk
ZW9PdXRwdXQ6OlF1ZXVlZFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZp
ZGVvT3V0cHV0Ojp+UXVldWVkVmlkZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVk
VmlkZW9PdXRwdXQ6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVjbHR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6Omhhc0ltYWdlRm9yVGltZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6dGFrZVZpZGVvRnJhbWVF
bnRyeUZvclRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmFkZEN1
cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRl
b091dHB1dDo6Y29uZmlndXJlTmV4dEltYWdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UXVldWVkVmlkZW9PdXRwdXQ6OmltYWdlRm9yQ3VycmVudFRpbWVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjphZGRWaWRlb0ZyYW1lRW50cmllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VWaWRlb0ZyYW1lRW50cmllcyk6
CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VJbWFnZXNCZWZvcmVU
aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpyYXRlQ2hhbmdlZCk6
CisKIDIwMjEtMTItMTQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1JlZmFjdG9yXSBBZG9wdCBMb2dnZXJIZWxwZXIgaW4gTG9nZ2luZyBFTUUgY2xhc3Nlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKaW5kZXggMDk4NWFkMDZmMjc5NDkzNjg1MTI2ZTE2Y2UyMjAxOGY0NTU0
ZDA5OC4uN2IyMjgzOGMzZmU4NjhjMjBmYWQ4YjdmMmJkNGViMDFkY2I0YjM2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDEtMDggIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSByVkZDKCkgaXNuJ3QgY2FsbGVkIGZv
ciBpbml0aWFsIHZpZGVvIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNTAwNgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4K
KworICAgICAgICAqIHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg6CisKIDIwMjItMDEt
MDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4NzY5OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmgKaW5kZXggOGI3ZmYxMjM3YTBjOGMy
MmY4ODJmYTBiZmVlZThiZDNhZDRjYjcxMi4uNGY5Y2JlNmQzZDI3ZWM3ZDFhM2RkN2UxZDgyNzcw
ZTM3MTg4NDE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
QVZGb3VuZGF0aW9uU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
QVZGb3VuZGF0aW9uU1BJLmgKQEAgLTQwLDkgKzQwLDEwIEBACiAjaW1wb3J0IDxBVkZvdW5kYXRp
b24vQVZNZWRpYVNlbGVjdGlvbkdyb3VwX1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVk91dHB1dENvbnRleHRfUHJpdmF0ZS5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWT3V0
cHV0RGV2aWNlLmg+Ci0jaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJfUHJpdmF0ZS5oPgor
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVySXRlbU91dHB1dF9Qcml2YXRlLmg+CiAjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtX1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWRm91
bmRhdGlvbi9BVlBsYXllckxheWVyX1ByaXZhdGUuaD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
VlBsYXllcl9Qcml2YXRlLmg+CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQpAQCAtNjYsNiArNjcsNyBAQCBOU19BU1NVTUVfTk9O
TlVMTF9FTkQKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVTZXNzaW9uLmg+CiAjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXIuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBs
YXllckl0ZW0uaD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1PdXRwdXQuaD4K
IAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0lOVEVSU1RJVElBTF9FVkVOVFMpCiAjaW1wb3J0IDxB
VkZvdW5kYXRpb24vQVZQbGF5ZXJJbnRlcnN0aXRpYWxFdmVudENvbnRyb2xsZXIuaD4KQEAgLTky
LDYgKzk0LDExIEBAIHR5cGVkZWYgTlNTdHJpbmcgKiBBVlZpZGVvUmFuZ2UgTlNfVFlQRURfRU5V
TTsKIEBlbmQKICNlbmRpZgogCitAaW50ZXJmYWNlIEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IChB
VlBsYXllckl0ZW1WaWRlb091dHB1dEVhcmxpZXN0VGltZSkKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgQ01UaW1lIGVhcmxpZXN0QXZhaWxhYmxlUGl4ZWxCdWZmZXJJdGVtVGltZTsK
Ky0gKHZvaWQpcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3Nz
aWJsZTsKK0BlbmQKKwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpIHx8IFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjViN2Mz
OTA4N2EzNzJjYzQxMWU3OTgwZGRkMjM1M2I0YmVkMTk0OS4uMWM5YzFkMGJiMTYxNzgyODVhZWYz
YTFiMTFkOWJkMzc0NzRlZTMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQ0Niw2ICs0NDQ2LDggQEAKIAkJQ0QxRjlCNEQy
NzBEMDNBOTAwNjE3RUI2IC8qIFNjcm9sbEV4dGVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5QjRDMjcwRDAzQTkwMDYxN0VCNiAvKiBTY3Jv
bGxFeHRlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0QxRjlCN0QyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlC
N0MyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEMUY5QjgwMjcwRTY3
MUEwMDYxN0VCNiAvKiBTVkdFbGVtZW50SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlCN0YyNzBFNjcxQTAwNjE3RUI2IC8qIFNWR0Vs
ZW1lbnRJbmxpbmVzLmggKi87IH07CisJCUNEMjBFRDNDMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1
ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0QyMEVEM0EyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggKi87
IH07CisJCUNEMjBFRDNEMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjBFRDNCMjc4
NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSAqLzsgfTsKIAkJQ0QyMjVDMEIx
QzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDIyNUMwOTFDNDZGQkY0MDAxNDA3NjEg
LyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSAqLzsgfTsKIAkJQ0QyMjVDMEMxQzQ2RkJGNDAwMTQw
NzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEMjI1QzBBMUM0NkZCRjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNV
UkxTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0QyN0FFNTAyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdBRTRF
MjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1ODU2LDYgKzE1ODU4LDgg
QEAKIAkJQ0QxRjlCNzAyNzBERkE3RjAwNjE3RUI2IC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5p
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0QxRjlCN0MyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVt
ZW50SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQW5jaG9yRWxlbWVudElubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxRjlCN0YyNzBFNjcxQTAwNjE3RUI2IC8q
IFNWR0VsZW1lbnRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0VsZW1lbnRJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjBFRDNBMjc4NzhGRkIwMDM4QkU0NCAv
KiBRdWV1ZWRWaWRlb091dHB1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWV1ZWRWaWRlb091dHB1dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDIwRUQzQjI3ODc4RkZCMDAzOEJFNDQg
LyogUXVldWVkVmlkZW9PdXRwdXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBRdWV1ZWRWaWRl
b091dHB1dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyMjVDMDkxQzQ2RkJG
NDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDIyNUMwQTFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJM
U2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNVUkxT
ZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMjdBRTRFMjJBOTg2ODcw
MDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdl
Um90YXRpb25TZXNzaW9uVlQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwNTk5
LDYgKzMwNjAzLDggQEAKIAkJCQlDREM4QjVBNTE4MDQ3NEY3MDAxNkU2ODUgLyogTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhCNUE0MTgwNDc0RjcwMDE2RTY4NSAvKiBN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tICovLAogCQkJCTdBMjlGNTcxMThDNjk1MTQwMDRE
MEY4MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggKi8sCisJCQkJQ0QyMEVEM0Ey
Nzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggKi8sCisJCQkJQ0QyMEVEM0Iy
Nzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0Lm1tICovLAogCQkJCUNERjk5NEZB
MjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggKi8sCiAJCQkJ
Q0RGOTk0RkIyNEMxMkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0g
Ki8sCiAJCQkJQ0RDOEI1QTkxODA0N0ZGMTAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLmggKi8sCkBAIC0zNjU2Nyw2ICszNjU3Myw3IEBACiAJCQkJRUIwRkI3MEQyNzBEMEIy
RTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTgzQzFGNTk0MUVERjY5RDMwMDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2Fj
aGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMjBFRDNDMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1
ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1RTMxRjQxRTBDQjBCNTAwNEIz
NzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJBRUU5MkMyMjM4OEE3RDAw
NDE1N0E5IC8qIFF1aXJrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5RTM3MTcxMzczNkE2NjAw
QjlFOTE5IC8qIFF1b3RlZFByaW50YWJsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODU0Nyw2ICsz
ODU1NCw3IEBACiAJCQkJQUExMkRGNDkxNzQzREY4MzAwNERBRkRGIC8qIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTI5QTMwMUNCRjc0RDQw
MDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNEQTI5QTE2MUNCREE1NkMwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRDIwRUQzRDI3ODc4RkZCMDAzOEJFNDQgLyog
UXVldWVkVmlkZW9PdXRwdXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTkyNDI0OTIxMjdCOTNF
MDA2MzRGQ0YgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0gaW4gU291cmNl
cyAqLywKIAkJCQkwNzFDMDA0QjI3MEI4NjQ5MDBEMDI3QzcgLyogUmVwbGF5S2l0Q2FwdHVyZVNv
dXJjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMkIxQUVDMjIzOTdFQkMwMEI5MUNGNyAvKiBS
ZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aAppbmRleCAxZTY1NzU3MjQ2NTQ5NzM0M2NkZTJhMjRkOGYwZGM2YjRlMDI2N2UxLi42YTMyMmQ5
NDExNTJjOGQwNDk5Njg2Y2I1NDU5ZDI1N2IwZTdmYTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8Q29yZU1lZGlhL0NNVGltZS5oPgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL09ic2VydmVyLmg+CiAKIE9CSkNfQ0xBU1MgQVZBc3NldEltYWdlR2VuZXJhdG9yOwogT0JK
Q19DTEFTUyBBVkFzc2V0VHJhY2s7CkBAIC02Nyw2ICs2OCw3IEBAIGNsYXNzIEluYmFuZE1ldGFk
YXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CiBjbGFz
cyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzsKIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1Y7CitjbGFzcyBRdWV1ZWRWaWRlb091dHB1dDsKIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBWaWRlb0xheWVyTWFuYWdlck9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakM7CkBAIC0yNTIsOCArMjU0LDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gY3JlYXRlSW1hZ2VGb3JUaW1lSW5SZWN0KGZsb2F0LCBjb25zdCBGbG9hdFJlY3Qm
KTsKICAgICB2b2lkIHBhaW50V2l0aEltYWdlR2VuZXJhdG9yKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYpOwogCi0gICAgZW51bSBjbGFzcyBVcGRhdGVUeXBlIHsgVXBkYXRlU3lu
Y2hyb25vdXNseSwgVXBkYXRlQXN5bmNocm9ub3VzbHkgfTsKLSAgICB2b2lkIHVwZGF0ZUxhc3RJ
bWFnZShVcGRhdGVUeXBlIHR5cGUgPSBVcGRhdGVUeXBlOjpVcGRhdGVBc3luY2hyb25vdXNseSk7
CisgICAgdm9pZCB1cGRhdGVMYXN0SW1hZ2UoKTsKIAogICAgIHZvaWQgY3JlYXRlVmlkZW9PdXRw
dXQoKTsKICAgICB2b2lkIGRlc3Ryb3lWaWRlb091dHB1dCgpOwpAQCAtMjYyLDcgKzI2Myw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBwYWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmKTsKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG5hdGl2ZUltYWdl
Rm9yQ3VycmVudFRpbWUoKSBmaW5hbDsKICAgICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JT
cGFjZSgpIGZpbmFsOwotICAgIHZvaWQgd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENo
YW5nZSgpOwogCiAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyRm9y
Q3VycmVudFRpbWUoKSBmaW5hbDsKIApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBzdGFydFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpIGZpbmFsOwogICAgIHZvaWQg
c3RvcFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpIGZpbmFsOwogICAgIHN0ZDo6b3B0aW9u
YWw8VmlkZW9GcmFtZU1ldGFkYXRhPiB2aWRlb0ZyYW1lTWV0YWRhdGEoKSBmaW5hbCB7IHJldHVy
biBzdGQ6OmV4Y2hhbmdlKG1fdmlkZW9GcmFtZU1ldGFkYXRhLCB7IH0pOyB9Ci0gICAgdm9pZCBj
aGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YShDTVRpbWUpOworICAgIHZvaWQgY2hlY2tOZXdWaWRl
b0ZyYW1lTWV0YWRhdGEoKTsKIAogICAgIFJldGFpblB0cjxBVlVSTEFzc2V0PiBtX2F2QXNzZXQ7
CiAgICAgUmV0YWluUHRyPEFWUGxheWVyPiBtX2F2UGxheWVyOwpAQCAtMzY3LDcgKzM2Nyw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJldGFpblB0cjxBVkFzc2V0SW1hZ2VHZW5lcmF0b3I+
IG1faW1hZ2VHZW5lcmF0b3I7Ci0gICAgUmV0YWluUHRyPEFWUGxheWVySXRlbVZpZGVvT3V0cHV0
PiBtX3ZpZGVvT3V0cHV0OworICAgIFJlZlB0cjxRdWV1ZWRWaWRlb091dHB1dD4gbV92aWRlb091
dHB1dDsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZT4gbV92aWRlb091dHB1
dERlbGVnYXRlOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBtX2xhc3RQaXhlbEJ1
ZmZlcjsKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwpAQCAtNDM1LDcgKzQz
NSw2IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBsb25nIGxvbmcgbV9jYWNoZWRUb3RhbEJ5dGVz
IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fcGVuZGluZ1N0YXR1c0NoYW5nZXMgeyAwIH07CiAgICAg
aW50IG1fY2FjaGVkSXRlbVN0YXR1czsKLSAgICBpbnQgbV9ydW5Mb29wTmVzdGluZ0xldmVsIHsg
MCB9OwogICAgIE1lZGlhUGxheWVyOjpCdWZmZXJpbmdQb2xpY3kgbV9idWZmZXJpbmdQb2xpY3kg
eyBNZWRpYVBsYXllcjo6QnVmZmVyaW5nUG9saWN5OjpEZWZhdWx0IH07CiAgICAgYm9vbCBtX2Nh
Y2hlZExpa2VseVRvS2VlcFVwIHsgZmFsc2UgfTsKICAgICBib29sIG1fY2FjaGVkQnVmZmVyRW1w
dHkgeyBmYWxzZSB9OwpAQCAtNDU2LDcgKzQ1NSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3No
b3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0IHsgZmFsc2UgfTsKICNlbmRpZgogICAgIGJvb2wgbV9o
YXZlUHJvY2Vzc2VkQ2hhcHRlclRyYWNrcyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3dhaXRGb3JW
aWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2VUaW1lZE91dCB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX2hhdmVCZWVuQXNrZWRUb1BhaW50IHsgZmFsc2UgfTsKICAgICB1aW50NjRfdCBtX3NhbXBs
ZUNvdW50IHsgMCB9OwogICAgIFJldGFpblB0cjxpZD4gbV92aWRlb0ZyYW1lTWV0YWRhdGFHYXRo
ZXJpbmdPYnNlcnZlcjsKQEAgLTQ2NCw2ICs0NjIsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0
aW9uYWw8VmlkZW9GcmFtZU1ldGFkYXRhPiBtX3ZpZGVvRnJhbWVNZXRhZGF0YTsKICAgICBtdXRh
YmxlIHN0ZDo6b3B0aW9uYWw8TlNUaW1lSW50ZXJ2YWw+IG1fY2FjaGVkU2Vla2FibGVUaW1lUmFu
Z2VzTGFzdE1vZGlmaWVkVGltZTsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8TlNUaW1lSW50
ZXJ2YWw+IG1fY2FjaGVkTGl2ZVVwZGF0ZUludGVydmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxP
YnNlcnZlcjx2b2lkKCk+PiBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcjsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGMwNjdjY2U4MDY4NmY3YTFiYzU0MTRiYWY3N2Y3
NTI1MmJmMzQyYzcuLjlmMzJiYmFiMjQxMDc5NjY4ZjI5MDlmZDljOTZlNDIwZjg4N2NlOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNTgsNiArNTgsNyBAQAogI2ltcG9ydCAiUGxhdGZv
cm1TY3JlZW4uaCIKICNpbXBvcnQgIlBsYXRmb3JtVGV4dFRyYWNrLmgiCiAjaW1wb3J0ICJQbGF0
Zm9ybVRpbWVSYW5nZXMuaCIKKyNpbXBvcnQgIlF1ZXVlZFZpZGVvT3V0cHV0LmgiCiAjaW1wb3J0
ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNjcmlwdERpc2FsbG93ZWRT
Y29wZS5oIgogI2ltcG9ydCAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTIwNSwxNiArMjA2LDYgQEAg
LSAoaWQpaW5pdFdpdGhQbGF5ZXI6KFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQz4mJilwbGF5ZXI7CiAtIChCT09MKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3Vy
Y2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVk
UmVzb3VyY2U6KEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopbG9hZGluZ1JlcXVlc3Q7
CiBAZW5kCiAKLUBpbnRlcmZhY2UgV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSA6IE5TT2JqZWN0PEFW
UGxheWVySXRlbU91dHB1dFB1bGxEZWxlZ2F0ZT4gewotICAgIEJpbmFyeVNlbWFwaG9yZSBtX3Nl
bWFwaG9yZTsKLX0KLS0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpcGxheWVyOwotLSAodm9pZClvdXRwdXRNZWRpYURhdGFX
aWxsQ2hhbmdlOihBVlBsYXllckl0ZW1PdXRwdXQgKilzZW5kZXI7Ci0tICh2b2lkKW91dHB1dFNl
cXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0OwotCi1AcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJpbmFyeVNlbWFwaG9yZSYgc2VtYXBob3JlOwotQGVu
ZAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlv
blRvU3RyaW5nKEFWUGxheWVyVGltZUNvbnRyb2xTdGF0dXMgZW51bWVyYXRpb25WYWx1ZSkKIHsK
QEAgLTI2MSwxNiArMjUyLDYgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsTG9hZGVy
RGVsZWdhdGVRdWV1ZSgpCiAgICAgcmV0dXJuIGdsb2JhbFF1ZXVlOwogfQogCi1zdGF0aWMgZGlz
cGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpCi17Ci0gICAgc3RhdGljIGRp
c3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUXVldWU7Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBv
bmNlVG9rZW47Ci0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBnbG9i
YWxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSBx
dWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGdsb2Jh
bFF1ZXVlOwotfQotCiBzdGF0aWMgdm9pZCByZWdpc3RlckZvcm1hdFJlYWRlcklmTmVjZXNzYXJ5
KCkKIHsKICNpZiBFTkFCTEUoV0VCTV9GT1JNQVRfUkVBREVSKQpAQCAtNDY5LDcgKzQ1MCw4IEBA
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6On5NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDKCkKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Jlc291cmNlTG9hZGVy
TWFwKQogICAgICAgICBwYWlyLnZhbHVlLT5pbnZhbGlkYXRlKCk7CiAKLSAgICBbbV92aWRlb091
dHB1dCBzZXREZWxlZ2F0ZTpuaWwgcXVldWU6MF07CisgICAgaWYgKG1fdmlkZW9PdXRwdXQpCisg
ICAgICAgIG1fdmlkZW9PdXRwdXQtPmludmFsaWRhdGUoKTsKIAogICAgIGlmIChtX3ZpZGVvTGF5
ZXIpCiAgICAgICAgIGRlc3Ryb3lWaWRlb0xheWVyKCk7CkBAIC03MDIsNyArNjg0LDEzIEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzQXZhaWxhYmxlVmlkZW9G
cmFtZSgpIGNvbnN0CiAgICAgaWYgKGN1cnJlbnRSZW5kZXJpbmdNb2RlKCkgPT0gTWVkaWFSZW5k
ZXJpbmdNb2RlOjpNZWRpYVJlbmRlcmluZ1RvTGF5ZXIpCiAgICAgICAgIHJldHVybiBtX2NhY2hl
ZElzUmVhZHlGb3JEaXNwbGF5OwogCi0gICAgaWYgKG1fdmlkZW9PdXRwdXQgJiYgKG1fbGFzdFBp
eGVsQnVmZmVyIHx8IFttX3ZpZGVvT3V0cHV0IGhhc05ld1BpeGVsQnVmZmVyRm9ySXRlbVRpbWU6
W21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXV0pKQorICAgIGlmICghbV92aWRlb091dHB1dCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fbGFzdFBpeGVsQnVmZmVyKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX3ZpZGVvT3V0cHV0LT5oYXNJbWFnZUZvclRp
bWUoY3VycmVudE1lZGlhVGltZSgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1
cm4gbV92aWRlb0ZyYW1lSGFzRHJhd247CkBAIC0xMjc2LDcgKzEyNjQsNyBAQCBQbGF0Zm9ybUxh
eWVyKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUxheWVyKCkg
Y29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVW
aWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFnZSgpCiB7Ci0gICAgdXBkYXRlTGFzdEltYWdlKFVwZGF0
ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOworICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAg
IG1fdmlkZW9MYXllck1hbmFnZXItPnVwZGF0ZVZpZGVvRnVsbHNjcmVlbklubGluZUltYWdlKG1f
bGFzdEltYWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51bGxwdHIpOwogfQog
CkBAIC0xMjg4LDcgKzEyNzYsNyBAQCBSZXRhaW5QdHI8UGxhdGZvcm1MYXllcj4gTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9GdWxsc2NyZQogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihQ
bGF0Zm9ybUxheWVyKiB2aWRlb0Z1bGxzY3JlZW5MYXllciwgRnVuY3Rpb248dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICh2aWRlb0Z1bGxzY3JlZW5MYXllcikKLSAgICAg
ICAgdXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOworICAg
ICAgICB1cGRhdGVMYXN0SW1hZ2UoKTsKICAgICBtX3ZpZGVvTGF5ZXJNYW5hZ2VyLT5zZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllciwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIG1fbGFzdEltYWdlID8gbV9sYXN0SW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKSA6IG51
bGxwdHIpOwogICAgIHVwZGF0ZURpc2FibGVFeHRlcm5hbFBsYXliYWNrKCk7CiB9CkBAIC0xNDQ0
LDM0ICsxNDMyLDMxIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
cGxhdGZvcm1QYXVzZWQoKSBjb25zdAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnN0YXJ0VmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nKCkKIHsKLSAgICBBU1NF
UlQoIW1fdmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nT2JzZXJ2ZXIgfHwgbV9hdlBsYXllcik7
Ci0gICAgbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSA9IHRydWU7CisgICAgLy8gcmVx
dWVzdFZpZGVvRnJhbWVDYWxsYmFjaygpIGNhcmVzIGFib3V0IHRoZSAvbmV4dC8gYXZhaWxhYmxl
IGZyYW1lLiBQdWxsIHRoZSBjdXJyZW50IGZyYW1lIGZyb20KKyAgICAvLyB0aGUgUXVldWVkVmlk
ZW9PdXRwdXQgc28gcGFpbnRzIG9mIHRoZSBjdXJyZW50IGZyYW1lIHN1Y2NlZWQ7CisgICAgdXBk
YXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBhIENB
RGlzcGxheUxpbmsgdG8gZ2V0IHVwZGF0ZXMgb24gcmVuZGVyaW5nLCBmb3Igbm93IHdlIGVtdWxh
dGUgd2l0aCBhZGRQZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVydmFsLgotICAgIG1fdmlkZW9G
cmFtZU1ldGFkYXRhR2F0aGVyaW5nT2JzZXJ2ZXIgPSBbbV9hdlBsYXllciBhZGRQZXJpb2RpY1Rp
bWVPYnNlcnZlckZvckludGVydmFsOlBBTDo6Q01UaW1lTWFrZSgxLCA2MCkgcXVldWU6ZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhp
cyB9XShDTVRpbWUgY3VycmVudFRpbWUpIHsKLSAgICAgICAgZW5zdXJlT25NYWluVGhyZWFkKFt3
ZWFrVGhpcywgY3VycmVudFRpbWVdIHsKLSAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAg
ICAgICAgICAgICB3ZWFrVGhpcy0+Y2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoY3VycmVudFRp
bWUpOworICAgIGlmIChtX3ZpZGVvT3V0cHV0KSB7CisgICAgICAgIG1fY3VycmVudEltYWdlQ2hh
bmdlZE9ic2VydmVyID0gV1RGOjptYWtlVW5pcXVlPE9ic2VydmVyPHZvaWQoKT4+KFt0aGlzXSB7
CisgICAgICAgICAgICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciA9IG51bGxwdHI7Cisg
ICAgICAgICAgICBjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YSgpOwogICAgICAgICB9KTsKLSAg
ICB9XTsKKyAgICAgICAgbV92aWRlb091dHB1dC0+YWRkQ3VycmVudEltYWdlQ2hhbmdlZE9ic2Vy
dmVyKCptX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcik7CisgICAgfQorCisgICAgbV9pc0dh
dGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSA9IHRydWU7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoQ01UaW1l
IGN1cnJlbnRUaW1lKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpj
aGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YSgpCiB7Ci0gICAgaWYgKCF1cGRhdGVMYXN0UGl4ZWxC
dWZmZXIoKSkKKyAgICBpZiAoIW1faXNHYXRoZXJpbmdWaWRlb0ZyYW1lTWV0YWRhdGEpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFZpZGVvRnJhbWVNZXRhZGF0YSBtZXRhZGF0YTsKLSAgICBtZXRh
ZGF0YS53aWR0aCA9IG1fY2FjaGVkUHJlc2VudGF0aW9uU2l6ZS53aWR0aCgpOwotICAgIG1ldGFk
YXRhLmhlaWdodCA9IG1fY2FjaGVkUHJlc2VudGF0aW9uU2l6ZS5oZWlnaHQoKTsKLSAgICBtZXRh
ZGF0YS5wcmVzZW50ZWRGcmFtZXMgPSArK21fc2FtcGxlQ291bnQ7Ci0gICAgbWV0YWRhdGEubWVk
aWFUaW1lID0gUEFMOjpDTVRpbWVHZXRTZWNvbmRzKGN1cnJlbnRUaW1lKTsKLSAgICAvLyBGSVhN
RTogcHJlc2VudGF0aW9uVGltZSBhbmQgZXhwZWN0ZWREaXNwbGF5VGltZSBtaWdodCBub3QgYWx3
YXlzIGhhdmUgdGhlIHNhbWUgdmFsdWUsIHdlIHNob3VsZCB0cnkgZ2V0dGluZyBtb3JlIHByZWNp
c2UgdmFsdWVzLgotICAgIG1ldGFkYXRhLnByZXNlbnRhdGlvblRpbWUgPSBNb25vdG9uaWNUaW1l
Ojpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKTsKLSAgICBtZXRhZGF0YS5leHBl
Y3RlZERpc3BsYXlUaW1lID0gbWV0YWRhdGEucHJlc2VudGF0aW9uVGltZTsKKyAgICBpZiAoIXVw
ZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpIHx8ICFtX3ZpZGVvRnJhbWVNZXRhZGF0YSkKKyAgICAgICAg
cmV0dXJuOwogCi0gICAgbV92aWRlb0ZyYW1lTWV0YWRhdGEgPSBtZXRhZGF0YTsKLSAgICBwbGF5
ZXIoKS0+b25OZXdWaWRlb0ZyYW1lTWV0YWRhdGEoV1RGTW92ZShtZXRhZGF0YSksIG1fbGFzdFBp
eGVsQnVmZmVyLmdldCgpKTsKKyAgICBwbGF5ZXIoKS0+b25OZXdWaWRlb0ZyYW1lTWV0YWRhdGEo
V1RGTW92ZSgqbV92aWRlb0ZyYW1lTWV0YWRhdGEpLCBtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7
CisgICAgbV92aWRlb0ZyYW1lTWV0YWRhdGEgPSB7IH07CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3RvcFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygp
CkBAIC0yNDMzLDEwICsyNDE4LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjp1cGRhdGVWaWRlb1RyYWNrcygpCiAgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fdmlk
ZW9UcmFja3MpCiAgICAgICAgIHRyYWNrLT5yZXNldFByb3BlcnRpZXNGcm9tVHJhY2soKTsKIAot
ICAgIC8vIEluIGNhc2UgdGhlIHZpZGVvIHRyYWNrIGNvbnRlbnQgY2hhbmdlZCwgd2UgbWF5IGJl
IGFibGUgdG8gcGVyZm9ybSBhIHJlYWRiYWNrIGFnYWluLgotICAgIGlmIChjb3VudCkKLSAgICAg
ICAgbV93YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlVGltZWRPdXQgPSBmYWxz
ZTsKLQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgInRyYWNrIGNvdW50IHdhcyAiLCBj
b3VudCwgIiwgaXMgIiwgbV92aWRlb1RyYWNrcy5zaXplKCkpOwogfQogCkBAIC0yNTE4LDE3ICsy
NDk5LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRl
VmlkZW9PdXRwdXQoKQogICAgIGlmICghbV9hdlBsYXllckl0ZW0gfHwgbV92aWRlb091dHB1dCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aWRlb091dHB1dCA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NBVlBsYXllckl0ZW1WaWRlb091dHB1dEluc3RhbmNlKCkgaW5pdFdpdGhQaXhlbEJ1ZmZlckF0
dHJpYnV0ZXM6bmlsXSk7CisgICAgbV92aWRlb091dHB1dCA9IFF1ZXVlZFZpZGVvT3V0cHV0Ojpj
cmVhdGUobV9hdlBsYXllckl0ZW0uZ2V0KCksIG1fYXZQbGF5ZXIuZ2V0KCkpOwogICAgIEFTU0VS
VChtX3ZpZGVvT3V0cHV0KTsKICAgICBpZiAoIW1fdmlkZW9PdXRwdXQpIHsKICAgICAgICAgRVJS
T1JfTE9HKExPR0lERU5USUZJRVIsICItW0FWUGxheWVySXRlbVZpZGVvT3V0cHV0IGluaXRXaXRo
UGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOl0gZmFpbGVkISIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotCi0gICAgbV92aWRlb091dHB1dERlbGVnYXRlID0gYWRvcHROUyhbW1dlYkNvcmVBVkZQdWxs
RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGxheWVyOip0aGlzXSk7Ci0gICAgW21fdmlkZW9PdXRw
dXQgc2V0RGVsZWdhdGU6bV92aWRlb091dHB1dERlbGVnYXRlLmdldCgpIHF1ZXVlOmdsb2JhbFB1
bGxEZWxlZ2F0ZVF1ZXVlKCldOwotCi0gICAgW21fYXZQbGF5ZXJJdGVtIGFkZE91dHB1dDptX3Zp
ZGVvT3V0cHV0LmdldCgpXTsKKyAgICBpZiAobV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIp
CisgICAgICAgIG1fdmlkZW9PdXRwdXQtPmFkZEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcigq
bV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIpOwogCiAgICAgc2V0TmVlZHNSZW5kZXJpbmdN
b2RlQ2hhbmdlZCgpOwogfQpAQCAtMjUzOCwxOSArMjUxNiwxNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb091dHB1dCgpCiAgICAgaWYgKCFt
X3ZpZGVvT3V0cHV0KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9hdlBsYXllckl0ZW0p
Ci0gICAgICAgIFttX2F2UGxheWVySXRlbSByZW1vdmVPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQo
KV07Ci0KICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIG1fdmlkZW9PdXRwdXQg
PSAwOworICAgIG1fdmlkZW9PdXRwdXQtPmludmFsaWRhdGUoKTsKKyAgICBtX3ZpZGVvT3V0cHV0
ID0gbnVsbHB0cjsKIAogICAgIHNldE5lZWRzUmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIH0KIAog
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0UGl4ZWxC
dWZmZXIoKQogewotICAgIGlmICghbV9hdlBsYXllckl0ZW0gfHwgcmVhZHlTdGF0ZSgpIDwgTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSkKKyAgICBpZiAoIW1fYXZQbGF5
ZXJJdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2hhdmVCZWVuQXNrZWRUb1Bh
aW50ID0gdHJ1ZTsKQEAgLTI1NTksMTIgKzI1MzUsMjUgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKQogICAgICAgICBjcmVh
dGVWaWRlb091dHB1dCgpOwogICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0KTsKIAotICAgIENNVGlt
ZSBjdXJyZW50VGltZSA9IFttX2F2UGxheWVySXRlbSBjdXJyZW50VGltZV07CisgICAgYXV0byBj
dXJyZW50VGltZSA9IGN1cnJlbnRNZWRpYVRpbWUoKTsKIAotICAgIGlmICghW21fdmlkZW9PdXRw
dXQgaGFzTmV3UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpjdXJyZW50VGltZV0pCisgICAgaWYgKCFt
X3ZpZGVvT3V0cHV0LT5oYXNJbWFnZUZvclRpbWUoY3VycmVudFRpbWUpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBtX2xhc3RQaXhlbEJ1ZmZlciA9IGFkb3B0Q0YoW21fdmlkZW9PdXRw
dXQgY29weVBpeGVsQnVmZmVyRm9ySXRlbVRpbWU6Y3VycmVudFRpbWUgaXRlbVRpbWVGb3JEaXNw
bGF5Om5pbF0pOworICAgIGF1dG8gZW50cnkgPSBtX3ZpZGVvT3V0cHV0LT50YWtlVmlkZW9GcmFt
ZUVudHJ5Rm9yVGltZShjdXJyZW50VGltZSk7CisgICAgbV9sYXN0UGl4ZWxCdWZmZXIgPSBXVEZN
b3ZlKGVudHJ5LnBpeGVsQnVmZmVyKTsKKworICAgIGlmIChtX2lzR2F0aGVyaW5nVmlkZW9GcmFt
ZU1ldGFkYXRhKSB7CisgICAgICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9IE1vbm90b25pY1Rp
bWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpIC0gKGN1cnJlbnRUaW1lIC0g
ZW50cnkuZGlzcGxheVRpbWUpLnRvRG91YmxlKCk7CisgICAgICAgIG1fdmlkZW9GcmFtZU1ldGFk
YXRhID0geworICAgICAgICAgICAgLndpZHRoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENWUGl4
ZWxCdWZmZXJHZXRXaWR0aChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpLAorICAgICAgICAgICAg
LmhlaWdodCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1f
bGFzdFBpeGVsQnVmZmVyLmdldCgpKSksCisgICAgICAgICAgICAucHJlc2VudGVkRnJhbWVzID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCsrbV9zYW1wbGVDb3VudCksCisgICAgICAgICAgICAubWVk
aWFUaW1lID0gZW50cnkuZGlzcGxheVRpbWUudG9Eb3VibGUoKSwKKyAgICAgICAgICAgIC5wcmVz
ZW50YXRpb25UaW1lID0gcHJlc2VudGF0aW9uVGltZSwKKyAgICAgICAgICAgIC5leHBlY3RlZERp
c3BsYXlUaW1lID0gcHJlc2VudGF0aW9uVGltZSwKKyAgICAgICAgfTsKKyAgICB9CiAKICAgICBp
ZiAobV9pbWFnZVJvdGF0aW9uU2Vzc2lvbikKICAgICAgICAgbV9sYXN0UGl4ZWxCdWZmZXIgPSBt
X2ltYWdlUm90YXRpb25TZXNzaW9uLT5yb3RhdGUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwpA
QCAtMjU4NCwxMCArMjU3MywxMCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUoKQogICAgIGlmICghbV92aWRlb091
dHB1dCkKICAgICAgICAgY3JlYXRlVmlkZW9PdXRwdXQoKTsKIAotICAgIHJldHVybiBbbV92aWRl
b091dHB1dCBoYXNOZXdQaXhlbEJ1ZmZlckZvckl0ZW1UaW1lOlttX2F2UGxheWVySXRlbSBjdXJy
ZW50VGltZV1dOworICAgIHJldHVybiBtX3ZpZGVvT3V0cHV0LT5oYXNJbWFnZUZvclRpbWUoUEFM
Ojp0b01lZGlhVGltZShbbV9hdlBsYXllckl0ZW0gY3VycmVudFRpbWVdKSk7CiB9CiAKLXZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKFVwZGF0
ZVR5cGUgdHlwZSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBk
YXRlTGFzdEltYWdlKCkKIHsKICAgICBpZiAoIW1fYXZQbGF5ZXJJdGVtIHx8IHJlYWR5U3RhdGUo
KSA8IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlQ3VycmVudERhdGEpCiAgICAgICAgIHJl
dHVybjsKQEAgLTI1OTYsMTMgKzI1ODUsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQogICAgIGlmICgh
Zmlyc3RFbmFibGVkVmlkZW9UcmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHR5cGUg
PT0gVXBkYXRlVHlwZTo6VXBkYXRlU3luY2hyb25vdXNseSAmJiAhbV9sYXN0SW1hZ2UgJiYgIXZp
ZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUoKSkKLSAgICAgICAgd2FpdEZvclZpZGVvT3V0cHV0
TWVkaWFEYXRhV2lsbENoYW5nZSgpOwotCiAgICAgLy8gQ2FsbHMgdG8gY29weVBpeGVsQnVmZmVy
Rm9ySXRlbVRpbWU6aXRlbVRpbWVGb3JEaXNwbGF5OiBtYXkgcmV0dXJuIG5pbCBpZiB0aGUgcGl4
ZWwgYnVmZmVyCiAgICAgLy8gZm9yIHRoZSByZXF1ZXN0ZWQgdGltZSBoYXMgYWxyZWFkeSBiZWVu
IHJldHJpZXZlZC4gSW4gdGhpcyBjYXNlLCB0aGUgbGFzdCB2YWxpZCBpbWFnZSAoaWYgYW55KQog
ICAgIC8vIHNob3VsZCBiZSBkaXNwbGF5ZWQuCi0gICAgaWYgKChtX2lzR2F0aGVyaW5nVmlkZW9G
cmFtZU1ldGFkYXRhIHx8ICF1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSkgJiYgKG1fbGFzdEltYWdl
IHx8ICFtX2xhc3RQaXhlbEJ1ZmZlcikpCisgICAgaWYgKCF1cGRhdGVMYXN0UGl4ZWxCdWZmZXIo
KSAmJiAobV9sYXN0SW1hZ2UgfHwgIW1fbGFzdFBpeGVsQnVmZmVyKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKCFtX3BpeGVsQnVmZmVyQ29uZm9ybWVyKSB7CkBAIC0yNjE5LDcgKzI2MDUs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJ
bWFnZShVcGRhdGVUeXBlIHR5cGUpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIG91dHB1dFJlY3QpCiB7Ci0gICAgdXBkYXRlTGFzdEltYWdlKFVwZGF0
ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOworICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAg
IGlmICghbV9sYXN0SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjYzNyw3NCArMjYyMywy
OSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZp
ZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYgYwogCiBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJl
Zj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGl4ZWxCdWZmZXJGb3JDdXJy
ZW50VGltZSgpCiB7Ci0gICAgaWYgKCFtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhKQot
ICAgICAgICB1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKTsKKyAgICB1cGRhdGVMYXN0UGl4ZWxCdWZm
ZXIoKTsKIAogICAgIHJldHVybiBtX2xhc3RQaXhlbEJ1ZmZlcjsKIH0KIAogUmVmUHRyPE5hdGl2
ZUltYWdlPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpuYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCkKIHsKLSAgICB1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZTo6VXBkYXRl
U3luY2hyb25vdXNseSk7CisgICAgdXBkYXRlTGFzdEltYWdlKCk7CiAgICAgcmV0dXJuIG1fbGFz
dEltYWdlOwogfQogCiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y29sb3JTcGFjZSgpCiB7Ci0gICAgdXBkYXRlTGFzdEltYWdlKFVwZGF0
ZVR5cGU6OlVwZGF0ZVN5bmNocm9ub3VzbHkpOworICAgIHVwZGF0ZUxhc3RJbWFnZSgpOwogICAg
IGlmICghbV9sYXN0UGl4ZWxCdWZmZXIpCiAgICAgICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKTsKIAogICAgIHJldHVybiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UoY3JlYXRl
Q0dDb2xvclNwYWNlRm9yQ1ZQaXhlbEJ1ZmZlcihtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpOwog
fQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndhaXRGb3JWaWRl
b091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQotewotICAgIGlmIChtX3dhaXRGb3JWaWRlb091
dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2VUaW1lZE91dCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Ly8gV2FpdCBmb3IgMSBzZWNvbmQuCi0gICAgTW9ub3RvbmljVGltZSBzdGFydCA9IE1vbm90b25p
Y1RpbWU6Om5vdygpOwotCi0gICAgc3RkOjpvcHRpb25hbDxSdW5Mb29wOjpUaW1lcjxNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPj4gdGltZW91dFRpbWVyOwotCi0gICAgaWYgKCFt
X3J1bkxvb3BOZXN0aW5nTGV2ZWwpIHsKLSAgICAgICAgW21fdmlkZW9PdXRwdXQgcmVxdWVzdE5v
dGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlV2l0aEFkdmFuY2VJbnRlcnZhbDowXTsKLQotICAg
ICAgICB0aW1lb3V0VGltZXIuZW1wbGFjZShSdW5Mb29wOjptYWluKCksIFsmXSB7Ci0gICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwotICAgICAgICB9KTsKLSAgICAgICAgdGltZW91
dFRpbWVyLT5zdGFydE9uZVNob3QoMV9zKTsKLSAgICB9Ci0KLSAgICArK21fcnVuTG9vcE5lc3Rp
bmdMZXZlbDsKLSAgICBSdW5Mb29wOjpydW4oKTsKLSAgICAtLW1fcnVuTG9vcE5lc3RpbmdMZXZl
bDsKLQotICAgIGlmIChtX3J1bkxvb3BOZXN0aW5nTGV2ZWwpIHsKLSAgICAgICAgUnVuTG9vcDo6
bWFpbigpLnN0b3AoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJvb2wgc2F0aXNm
aWVkID0gdGltZW91dFRpbWVyLT5pc0FjdGl2ZSgpOwotICAgIGlmICghc2F0aXNmaWVkKSB7Ci0g
ICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAidGltZWQgb3V0Iik7Ci0gICAgICAgIG1f
d2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZVRpbWVkT3V0ID0gdHJ1ZTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgIndhaXRpbmcgZm9yIHZp
ZGVvT3V0cHV0IHRvb2sgIiwgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnQpLnNlY29uZHMo
KSk7Ci19Ci0KIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6b3V0cHV0
TWVkaWFEYXRhV2lsbENoYW5nZSgpCiB7Ci0gICAgaWYgKG1fcnVuTG9vcE5lc3RpbmdMZXZlbCkg
ewotICAgICAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpCi0gICAgICAgICAgICBSdW5Mb29wOjpt
YWluKCkuc3RvcCgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbXSB7Ci0gICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLnN0b3AoKTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfQorICAgIGNoZWNrTmV3VmlkZW9GcmFt
ZU1ldGFkYXRhKCk7CiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKQEAg
LTQwODksMzcgKzQwMzAsNCBAQCAtICh2b2lkKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3Vy
Y2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBkaWRDYW5jZWxMb2FkaW5nUgogCiBAZW5kCiAKLUBp
bXBsZW1lbnRhdGlvbiBXZWJDb3JlQVZGUHVsbERlbGVnYXRlIHsKLSAgICBXZWFrUHRyPFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+IF9wbGF5ZXI7Ci19Ci0KLUBz
eW50aGVzaXplIHNlbWFwaG9yZSA9IG1fc2VtYXBob3JlOwotCi0tIChpZClpbml0V2l0aFBsYXll
cjooV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiYmKXBsYXllcgot
ewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1
cm4gbmlsOwotICAgIF9wbGF5ZXIgPSBXVEZNb3ZlKHBsYXllcik7Ci0gICAgcmV0dXJuIHNlbGY7
Ci19Ci0KLS0gKHZvaWQpb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQbGF5ZXJJdGVtVmlk
ZW9PdXRwdXQgKilvdXRwdXQKLXsKLSAgICBVTlVTRURfUEFSQU0ob3V0cHV0KTsKLSAgICBtX3Nl
bWFwaG9yZS5zaWduYWwoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzZWxmLCBzdHJvbmdTZWxm
ID0gUmV0YWluUHRyIHsgc2VsZiB9XSB7Ci0gICAgICAgIGlmIChfcGxheWVyKQotICAgICAgICAg
ICAgX3BsYXllci0+b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpOwotICAgIH0pOwotfQotCi0t
ICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQg
KilvdXRwdXQKLXsKLSAgICBVTlVTRURfUEFSQU0ob3V0cHV0KTsKLSAgICAvLyBOby1vcC4KLX0K
LQotQGVuZAotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRiYWYwZWExMWU1YzRmYmUzMjRkOTUyNWFkZjFiZGIzYzYzMzBhODgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgPG1h
cD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+Cisj
aW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CisK
K09CSkNfQ0xBU1MgQVZQbGF5ZXI7CitPQkpDX0NMQVNTIEFWUGxheWVySXRlbTsKK09CSkNfQ0xB
U1MgQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ7CitPQkpDX0NMQVNTIFdlYlF1ZXVlZFZpZGVvT3V0
cHV0RGVsZWdhdGU7CisKK3R5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZmZXJS
ZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUXVldWVkVmlkZW9PdXRwdXQKKyAg
ICA6IHB1YmxpYyBSZWZDb3VudGVkPFF1ZXVlZFZpZGVvT3V0cHV0PgorICAgICwgcHVibGljIENh
bk1ha2VXZWFrUHRyPFF1ZXVlZFZpZGVvT3V0cHV0PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxRdWV1ZWRWaWRlb091dHB1dD4gY3JlYXRl
KEFWUGxheWVySXRlbSosIEFWUGxheWVyKik7CisgICAgflF1ZXVlZFZpZGVvT3V0cHV0KCk7CisK
KyAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAgICBib29sIGhhc0ltYWdlRm9yVGltZShjb25zdCBN
ZWRpYVRpbWUmKSBjb25zdDsKKworICAgIHN0cnVjdCBWaWRlb0ZyYW1lRW50cnkgeworICAgICAg
ICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXI7CisgICAgICAgIE1lZGlh
VGltZSBkaXNwbGF5VGltZTsKKyAgICB9OworICAgIFZpZGVvRnJhbWVFbnRyeSB0YWtlVmlkZW9G
cmFtZUVudHJ5Rm9yVGltZShjb25zdCBNZWRpYVRpbWUmKTsKKworICAgIHZvaWQgYWRkVmlkZW9G
cmFtZUVudHJpZXMoVmVjdG9yPFZpZGVvRnJhbWVFbnRyeT4mJik7CisgICAgdm9pZCBwdXJnZVZp
ZGVvRnJhbWVFbnRyaWVzKCk7CisKKyAgICB1c2luZyBDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2
ZXIgPSBPYnNlcnZlcjx2b2lkKCk+OworICAgIHZvaWQgYWRkQ3VycmVudEltYWdlQ2hhbmdlZE9i
c2VydmVyKGNvbnN0IEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciYpOworCisgICAgdXNpbmcg
SW1hZ2VNYXAgPSBzdGQ6Om1hcDxNZWRpYVRpbWUsIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
Pj47CisKKyAgICB2b2lkIHJhdGVDaGFuZ2VkKGZsb2F0KTsKKworcHJpdmF0ZToKKyAgICBRdWV1
ZWRWaWRlb091dHB1dChBVlBsYXllckl0ZW0qLCBBVlBsYXllciopOworCisgICAgdm9pZCBwdXJn
ZUltYWdlc0JlZm9yZVRpbWUoY29uc3QgTWVkaWFUaW1lJik7CisgICAgdm9pZCBjb25maWd1cmVO
ZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAgICB2b2lkIGNhbmNlbE5leHRJbWFnZVRpbWVPYnNl
cnZlcigpOworICAgIHZvaWQgbmV4dEltYWdlVGltZVJlYWNoZWQoKTsKKworICAgIFJldGFpblB0
cjxBVlBsYXllckl0ZW0+IG1fcGxheWVySXRlbTsKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXI+IG1f
cGxheWVyOworICAgIFJldGFpblB0cjxXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlPiBtX2Rl
bGVnYXRlOworICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW1WaWRlb091dHB1dD4gbV92aWRlb091
dHB1dDsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fdmlkZW9UaW1lYmFzZU9ic2VydmVyOworICAgIFJl
dGFpblB0cjxpZD4gbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyOworCisgICAgSW1hZ2VNYXAg
bV92aWRlb0ZyYW1lczsKKyAgICBXZWFrSGFzaFNldDxDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2
ZXI+IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyczsKKworICAgIGJvb2wgbV9wYXVzZWQg
eyB0cnVlIH07Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1
ZWRWaWRlb091dHB1dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYmMwODM4MTRjMDhjN2RlZWQ2MWM5MDc5YzIy
YmUzZjUwNzhhNzdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0KQEAgLTAsMCAr
MSwzMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXVl
dWVkVmlkZW9PdXRwdXQuaCIKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgPEFWRm91
bmRhdGlvbi9BVlBsYXllckl0ZW1PdXRwdXQuaD4KKyNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9u
L01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvQVZGb3Vu
ZGF0aW9uU1BJLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJz
Lmg+CisKKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbmNsdWRlIDxw
YWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKworQGludGVyZmFjZSBXZWJRdWV1ZWRW
aWRlb091dHB1dERlbGVnYXRlIDogTlNPYmplY3Q8QVZQbGF5ZXJJdGVtT3V0cHV0UHVsbERlbGVn
YXRlPiB7CisgICAgV2Vha1B0cjxXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dD4gX3BhcmVudDsK
K30KKy0gKGlkKWluaXRXaXRoUGFyZW50OihXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dCopcGFy
ZW50OworLSAodm9pZClvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOihBVlBsYXllckl0ZW1PdXRw
dXQgKilvdXRwdXQ7CistICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJ
dGVtT3V0cHV0ICopb3V0cHV0OworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBh
dGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250
ZXh0Oih2b2lkKiljb250ZXh0OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViUXVldWVkVmlk
ZW9PdXRwdXREZWxlZ2F0ZQorLSAoaWQpaW5pdFdpdGhQYXJlbnQ6KFdlYkNvcmU6OlF1ZXVlZFZp
ZGVvT3V0cHV0KilwYXJlbnQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICgh
c2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9wYXJlbnQgPSBwYXJlbnQ7CisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQ
bGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0Cit7CisgICAgQVNTRVJUKFtvdXRwdXQgaXNLaW5kT2ZD
bGFzczpQQUw6OmdldEFWUGxheWVySXRlbVZpZGVvT3V0cHV0Q2xhc3MoKV0pOworICAgIGF1dG8q
IHZpZGVvT3V0cHV0ID0gKEFWUGxheWVySXRlbVZpZGVvT3V0cHV0KilvdXRwdXQ7CisKKyAgICBW
ZWN0b3I8V2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OlZpZGVvRnJhbWVFbnRyeT4gdmlkZW9G
cmFtZUVudHJpZXM7CisgICAgZG8geworICAgICAgICBDTVRpbWUgZWFybGllc3RUaW1lID0gW3Zp
ZGVvT3V0cHV0IGVhcmxpZXN0QXZhaWxhYmxlUGl4ZWxCdWZmZXJJdGVtVGltZV07CisgICAgICAg
IGlmIChDTVRJTUVfSVNfSU5WQUxJRChlYXJsaWVzdFRpbWUpKQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGFkb3B0Q0YoW3ZpZGVvT3V0cHV0IGNvcHlQ
aXhlbEJ1ZmZlckZvckl0ZW1UaW1lOmVhcmxpZXN0VGltZSBpdGVtVGltZUZvckRpc3BsYXk6bmls
XSk7CisgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpCisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICB2aWRlb0ZyYW1lRW50cmllcy5hcHBlbmQoeyBXVEZNb3ZlKHBpeGVsQnVmZmVyKSwgUEFM
Ojp0b01lZGlhVGltZShlYXJsaWVzdFRpbWUpIH0pOworICAgIH0gd2hpbGUgKHRydWUpOworCisg
ICAgaWYgKHZpZGVvRnJhbWVFbnRyaWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY2FsbE9uTWFpblJ1bkxvb3AoW3ZpZGVvRnJhbWVFbnRyaWVzID0gV1RGTW92ZSh2aWRlb0Zy
YW1lRW50cmllcyksIHBhcmVudCA9IF9wYXJlbnRdICgpIG11dGFibGUgeworICAgICAgICBpZiAo
cGFyZW50KQorICAgICAgICAgICAgcGFyZW50LT5hZGRWaWRlb0ZyYW1lRW50cmllcyhXVEZNb3Zl
KHZpZGVvRnJhbWVFbnRyaWVzKSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpb3V0cHV0U2VxdWVu
Y2VXYXNGbHVzaGVkOihBVlBsYXllckl0ZW1PdXRwdXQgKilvdXRwdXQKK3sKKyAgICBBU1NFUlQo
W291dHB1dCBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXRDbGFz
cygpXSk7CisgICAgYXV0byogdmlkZW9PdXRwdXQgPSAoQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQq
KW91dHB1dDsKKyAgICBbdmlkZW9PdXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRh
Q2hhbmdlQXNTb29uQXNQb3NzaWJsZV07CisKKyAgICBjYWxsT25NYWluUnVuTG9vcChbcGFyZW50
ID0gX3BhcmVudF0geworICAgICAgICBpZiAocGFyZW50KQorICAgICAgICAgICAgcGFyZW50LT5w
dXJnZVZpZGVvRnJhbWVFbnRyaWVzKCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rp
b25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dAoreworICAgIGlmICghW2tleVBh
dGggaXNFcXVhbFRvU3RyaW5nOkAicmF0ZSJdKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IHJhdGVWYWx1ZSA9IChOU051bWJlciopW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hh
bmdlTmV3S2V5XTsKKyAgICBBU1NFUlQoW3JhdGVWYWx1ZSBpc0tpbmRPZkNsYXNzOk5TTnVtYmVy
LmNsYXNzXSk7CisgICAgYXV0byByYXRlID0gcmF0ZVZhbHVlLmZsb2F0VmFsdWU7CisKKyAgICBl
bnN1cmVPbk1haW5SdW5Mb29wKFtwYXJlbnQgPSBfcGFyZW50LCByYXRlXSB7CisgICAgICAgIGlm
IChwYXJlbnQpCisgICAgICAgICAgICBwYXJlbnQtPnJhdGVDaGFuZ2VkKHJhdGUpOworICAgIH0p
OworfQorQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBkaXNwYXRjaF9xdWV1
ZV90IGdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9x
dWV1ZV90IGdsb2JhbFF1ZXVlOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2Vu
OworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgZ2xvYmFsUXVldWUg
PSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgcXVl
dWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworICAgIH0pOworICAgIHJldHVybiBnbG9iYWxR
dWV1ZTsKK30KKworUmVmPFF1ZXVlZFZpZGVvT3V0cHV0PiBRdWV1ZWRWaWRlb091dHB1dDo6Y3Jl
YXRlKEFWUGxheWVySXRlbSogaXRlbSwgQVZQbGF5ZXIqIHBsYXllcikKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBRdWV1ZWRWaWRlb091dHB1dChpdGVtLCBwbGF5ZXIpKTsKK30KKworUXVl
dWVkVmlkZW9PdXRwdXQ6OlF1ZXVlZFZpZGVvT3V0cHV0KEFWUGxheWVySXRlbSogaXRlbSwgQVZQ
bGF5ZXIqIHBsYXllcikKKyAgICA6IG1fcGxheWVySXRlbShpdGVtKQorICAgICwgbV9wbGF5ZXIo
cGxheWVyKQorICAgICwgbV9kZWxlZ2F0ZShhZG9wdE5TKFtbV2ViUXVldWVkVmlkZW9PdXRwdXRE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQoreworICAgIG1fdmlkZW9PdXRw
dXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXRJbnN0YW5jZSgp
IGluaXRXaXRoUGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOm5pbF0pOworICAgIFttX3ZpZGVvT3V0cHV0
IHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCkgcXVldWU6Z2xvYmFsT3V0cHV0RGVsZWdhdGVR
dWV1ZSgpXTsKKyAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURh
dGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKKworICAgIFttX3BsYXllckl0ZW0gYWRkT3V0cHV0
Om1fdmlkZW9PdXRwdXQuZ2V0KCldOworCisgICAgW21fcGxheWVyIGFkZE9ic2VydmVyOm1fZGVs
ZWdhdGUuZ2V0KCkgZm9yS2V5UGF0aDpAInJhdGUiIG9wdGlvbnM6KE5TS2V5VmFsdWVPYnNlcnZp
bmdPcHRpb25OZXcgfCBOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCkgY29udGV4dDpu
aWxdOworCisgICAgbV92aWRlb1RpbWViYXNlT2JzZXJ2ZXIgPSBbbV9wbGF5ZXIgYWRkUGVyaW9k
aWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbDpQQUw6OkNNVGltZU1ha2UoMSwgNjApIHF1ZXVlOmds
b2JhbE91dHB1dERlbGVnYXRlUXVldWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBwcm90ZWN0ZWREZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIHByb3RlY3RlZE91dHB1
dCA9IG1fdmlkZW9PdXRwdXRdKENNVGltZSBjdXJyZW50VGltZSkgbXV0YWJsZSB7CisKKyAgICAg
ICAgLy8gUGVyaW9kaWNhbGx5IGNoZWNrIGZvciBuZXcgYXZhaWxhYmxlIHBpeGVsIGJ1ZmZlcnMu
CisgICAgICAgIFtwcm90ZWN0ZWREZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOnBy
b3RlY3RlZE91dHB1dC5nZXQoKV07CisKKyAgICAgICAgLy8gQW5kIHB1cmdlIHRoZSBiYWNrIGJ1
ZmZlciBvZiBwYXN0IGZyYW1lcy4KKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlz
ID0gd2Vha1RoaXMsIHRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKGN1cnJlbnRUaW1lKV0geworICAg
ICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5wdXJnZUlt
YWdlc0JlZm9yZVRpbWUodGltZSk7CisgICAgICAgIH0pOworICAgIH1dOworfQorCitRdWV1ZWRW
aWRlb091dHB1dDo6flF1ZXVlZFZpZGVvT3V0cHV0KCkKK3sKKyAgICBpbnZhbGlkYXRlKCk7Cit9
CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmludmFsaWRhdGUoKQoreworICAgIGlmIChtX3Zp
ZGVvVGltZWJhc2VPYnNlcnZlcikgeworICAgICAgICBbbV9wbGF5ZXIgcmVtb3ZlVGltZU9ic2Vy
dmVyOm1fdmlkZW9UaW1lYmFzZU9ic2VydmVyLmdldCgpXTsKKyAgICAgICAgbV92aWRlb1RpbWVi
YXNlT2JzZXJ2ZXIgPSBuaWw7CisgICAgfQorCisgICAgY2FuY2VsTmV4dEltYWdlVGltZU9ic2Vy
dmVyKCk7CisKKyAgICBpZiAobV92aWRlb091dHB1dCkgeworICAgICAgICBbbV9wbGF5ZXJJdGVt
IHJlbW92ZU91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKKyAgICAgICAgW21fdmlkZW9PdXRw
dXQgc2V0RGVsZWdhdGU6bmlsIHF1ZXVlOm5pbF07CisgICAgICAgIG1fdmlkZW9PdXRwdXQgPSBu
aWw7CisgICAgfQorCisgICAgaWYgKG1fcGxheWVyKSB7CisgICAgICAgIFttX3BsYXllciByZW1v
dmVPYnNlcnZlcjptX2RlbGVnYXRlLmdldCgpIGZvcktleVBhdGg6QCJyYXRlIl07CisgICAgICAg
IG1fcGxheWVyID0gbmlsOworICAgIH0KKworICAgIG1fcGxheWVySXRlbSA9IG5pbDsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIE1heWJlQ29uc3RNYXAsIHR5cGVuYW1lIE1heWJlQ29uc3RJdGVy
ID0gZGVjbHR5cGUoTWF5YmVDb25zdE1hcCgpLmJlZ2luKCkpPgorTWF5YmVDb25zdEl0ZXIgZmlu
ZEltYWdlRm9yVGltZShNYXliZUNvbnN0TWFwJiBtYXAsIGNvbnN0IE1lZGlhVGltZSYgdGltZSkK
K3sKKyAgICAvLyBPdXRwdXRzIG9mIEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IGhhdmUgYSBkaXNw
bGF5IHRpbWUsIGJ1dCBub3QgYSBkdXJhdGlvbjsgdGhleSBhcmUgdmFsaWQKKyAgICAvLyB1bnRp
bCB0aGUgYXJyaXZhbCBvZiBhIGxhdGVyIGZyYW1lLiBGaW5kIHRoaXMgZnJhbWUgZWZmaWNpZW50
bHkgdXNpbmcgc2V0Ojp1cHBlcl9ib3VuZCB0byBmaW5kCisgICAgLy8gdGhlIG5leHQgZGlzcGxh
eWFibGUgZnJhbWUsIGFuZCB3YWxrIGJhY2t3YXJkcyBieSBvbmUgdG8gZmluZCBhIGZyYW1lIGZv
ciB0aGUgdGFyZ2V0IHRpbWUuCisgICAgaWYgKG1hcC5lbXB0eSgpKQorICAgICAgICByZXR1cm4g
bWFwLmVuZCgpOworCisgICAgYXV0byBpdGVyID0gbWFwLnVwcGVyX2JvdW5kKHRpbWUpOworICAg
IGlmIChpdGVyID09IG1hcC5iZWdpbigpKQorICAgICAgICByZXR1cm4gbWFwLmVuZCgpOworCisg
ICAgcmV0dXJuIC0taXRlcjsKK30KKworYm9vbCBRdWV1ZWRWaWRlb091dHB1dDo6aGFzSW1hZ2VG
b3JUaW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZmluZElt
YWdlRm9yVGltZShtX3ZpZGVvRnJhbWVzLCB0aW1lKSAhPSBtX3ZpZGVvRnJhbWVzLmVuZCgpOwor
fQorCithdXRvIFF1ZXVlZFZpZGVvT3V0cHV0Ojp0YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShj
b25zdCBNZWRpYVRpbWUmIHRpbWUpIC0+IFZpZGVvRnJhbWVFbnRyeQoreworICAgIGF1dG8gaXRl
ciA9IGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywgdGltZSk7CisgICAgaWYgKGl0ZXIg
PT0gbV92aWRlb0ZyYW1lcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgTWVkaWFU
aW1lOjppbnZhbGlkVGltZSgpIH07CisKKyAgICBWaWRlb0ZyYW1lRW50cnkgZW50cnkgPSB7IFdU
Rk1vdmUoaXRlci0+c2Vjb25kKSwgaXRlci0+Zmlyc3QgfTsKKworICAgIC8vIFB1cmdlIGFsbCBm
cmFtZXMgYmVmb3JlIGB0aW1lYCwgc28gdGhhdCByZXBlYXRlZCBjYWxscyB3aXRoIHRoZSBzYW1l
IHRpbWUgZG9uJ3QgcmV0dXJuCisgICAgLy8gc3VjY2Vzc2l2ZWx5IGVhcmxpZXIgaW1hZ2VzLgor
ICAgIG1fdmlkZW9GcmFtZXMuZXJhc2UobV92aWRlb0ZyYW1lcy5iZWdpbigpLCArK2l0ZXIpOwor
CisgICAgcmV0dXJuIGVudHJ5OworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjphZGRDdXJy
ZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoY29uc3QgQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVy
JiBvYnNlcnZlcikKK3sKKyAgICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMuYWRkKG9i
c2VydmVyKTsKKyAgICBjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKworICAgIFtt
X3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZUFzU29vbkFz
UG9zc2libGVdOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0Ojpjb25maWd1cmVOZXh0SW1h
Z2VUaW1lT2JzZXJ2ZXIoKQoreworICAgIGlmIChtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY3VycmVudFRpbWUgPSBQQUw6OnRvTWVkaWFU
aW1lKFttX3BsYXllciBjdXJyZW50VGltZV0pOworICAgIGF1dG8gaXRlciA9IGZpbmRJbWFnZUZv
clRpbWUobV92aWRlb0ZyYW1lcywgY3VycmVudFRpbWUpOworICAgIGlmIChpdGVyID09IG1fdmlk
ZW9GcmFtZXMuZW5kKCkgfHwgKytpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gbmV4dEltYWdlVGltZSA9IGl0ZXItPmZpcnN0OworCisgICAg
bV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyID0gW21fcGxheWVyIGFkZEJvdW5kYXJ5VGltZU9i
c2VydmVyRm9yVGltZXM6QFtbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWU6UEFMOjp0b0NNVGltZShj
dXJyZW50VGltZSldXSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCkgdXNpbmdCbG9j
azpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvdGVjdGVkRGVsZWdhdGUgPSBtX2Rl
bGVnYXRlLCBwcm90ZWN0ZWRPdXRwdXQgPSBtX3ZpZGVvT3V0cHV0XSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldIHsK
KyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bmV4
dEltYWdlVGltZVJlYWNoZWQoKTsKKyAgICAgICAgfSk7CisgICAgfV07Cit9CisKK3ZvaWQgUXVl
dWVkVmlkZW9PdXRwdXQ6OmNhbmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigpCit7CisgICAgaWYg
KCFtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFtt
X3BsYXllciByZW1vdmVUaW1lT2JzZXJ2ZXI6bV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyLmdl
dCgpXTsKKyAgICBtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIgPSBuaWw7Cit9CisKK3ZvaWQg
UXVldWVkVmlkZW9PdXRwdXQ6Om5leHRJbWFnZVRpbWVSZWFjaGVkKCkKK3sKKyAgICBjYW5jZWxO
ZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAgICBhdXRvIG9ic2VydmVycyA9IHN0ZDo6ZXhjaGFu
Z2UobV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzLCB7IH0pOworICAgIG9ic2VydmVycy5m
b3JFYWNoKFtdKGF1dG8mIG9ic2VydmVyKSB7IG9ic2VydmVyKCk7IH0pOworfQorCit2b2lkIFF1
ZXVlZFZpZGVvT3V0cHV0OjphZGRWaWRlb0ZyYW1lRW50cmllcyhWZWN0b3I8VmlkZW9GcmFtZUVu
dHJ5PiYmIHZpZGVvRnJhbWVFbnRyaWVzKQoreworICAgIGJvb2wgbmVlZHNJbWFnZUZvckN1cnJl
bnRUaW1lQ2hhbmdlZCA9IGZhbHNlOworICAgIGJvb2wgaGFzQ3VycmVudEltYWdlQ2hhbmdlZE9i
c2VydmVycyA9IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycy5jb21wdXRlU2l6ZSgpOwor
ICAgIE1lZGlhVGltZSBjdXJyZW50VGltZSA9IGhhc0N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZl
cnMgPyBQQUw6OnRvTWVkaWFUaW1lKFttX3BsYXllciBjdXJyZW50VGltZV0pIDogTWVkaWFUaW1l
OjppbnZhbGlkVGltZSgpOworCisgICAgZm9yIChhdXRvJiBlbnRyeSA6IHZpZGVvRnJhbWVFbnRy
aWVzKSB7CisgICAgICAgIGlmIChoYXNDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzICYmIGVu
dHJ5LmRpc3BsYXlUaW1lIDw9IGN1cnJlbnRUaW1lKQorICAgICAgICAgICAgbmVlZHNJbWFnZUZv
ckN1cnJlbnRUaW1lQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIG1fdmlkZW9GcmFtZXMuZW1wbGFj
ZShlbnRyeS5kaXNwbGF5VGltZSwgV1RGTW92ZShlbnRyeS5waXhlbEJ1ZmZlcikpOworICAgIH0K
KworICAgIGlmIChuZWVkc0ltYWdlRm9yQ3VycmVudFRpbWVDaGFuZ2VkKQorICAgICAgICBuZXh0
SW1hZ2VUaW1lUmVhY2hlZCgpOworICAgIGVsc2UgaWYgKGhhc0N1cnJlbnRJbWFnZUNoYW5nZWRP
YnNlcnZlcnMpCisgICAgICAgIGNvbmZpZ3VyZU5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworCisg
ICAgaWYgKG1fcGF1c2VkKQorICAgICAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0
aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKK30KKwordm9pZCBRdWV1ZWRW
aWRlb091dHB1dDo6cHVyZ2VWaWRlb0ZyYW1lRW50cmllcygpCit7CisgICAgY2FuY2VsTmV4dElt
YWdlVGltZU9ic2VydmVyKCk7CisgICAgbV92aWRlb0ZyYW1lcy5jbGVhcigpOworfQorCit2b2lk
IFF1ZXVlZFZpZGVvT3V0cHV0OjpwdXJnZUltYWdlc0JlZm9yZVRpbWUoY29uc3QgTWVkaWFUaW1l
JiB0aW1lKQoreworICAgIG1fdmlkZW9GcmFtZXMuZXJhc2UobV92aWRlb0ZyYW1lcy5iZWdpbigp
LCBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFtZXMsIHRpbWUpKTsKK30KKwordm9pZCBRdWV1
ZWRWaWRlb091dHB1dDo6cmF0ZUNoYW5nZWQoZmxvYXQgcmF0ZSkKK3sKKyAgICBtX3BhdXNlZCA9
ICFyYXRlOworCisgICAgaWYgKG1fcGF1c2VkKQorICAgICAgICBbbV92aWRlb091dHB1dCByZXF1
ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKK30KKwor
fQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ2NjE2MGUwZmJlZWI5ZjZmODhhNGU4MzRjNjJkYjExNGQz
OTM0NWQuLmU4ZjY2YWYzZTc1MDA3YjU4MGEzMmM5YmZhMmVhMDQ5YWFmYjAyMmEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAyMi0wMS0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KKworICAgICAgICBbQ29jb2FdIHJWRkMoKSBpc24ndCBjYWxsZWQgZm9yIGluaXRpYWwgdmlk
ZW8gbG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM1MDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICog
bWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWstZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWsuaHRtbDog
QWRkZWQuCisKIDIwMjItMDEtMDcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgSW1wb3J0IGNzcy9maWx0ZXItZWZmZWN0cyB3ZWIgcGxhdGZvcm0gdGVz
dHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9h
ZHN0YXJ0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJh
bWUtbG9hZHN0YXJ0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzAyZjY2ZWJhYmRmYjU3NGQ5
ZjlmZjFkNWI4MWZjODA4OTIwMzZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVk
aWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NiBAQAorCitSVU4odmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhjYWxsYmFjaykpCitS
VU4odmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0IikpCitQ
cm9taXNlIHJlc29sdmVkIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC5odG1sIGIvTGF5b3V0VGVzdHMv
bWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTBi
M2YxYThjNjExYTI2ZmNkMGE1NGVlZTBmYjAyYzU1ZTY2ZjYxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQuaHRtbApAQCAt
MCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxl
PnJlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0i
dmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Im1lZGlhLWZpbGUuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xv
YWQnLCBhc3luYyBldmVudCA9PiB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAg
ICAgICBsZXQgdmlkZW9GcmFtZVByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby5yZXF1ZXN0VmlkZW9G
cmFtZUNhbGxiYWNrKGNhbGxiYWNrKSknKTsKKyAgICAgICAgICAgIHZpZGVvLnJlcXVlc3RWaWRl
b0ZyYW1lQ2FsbGJhY2socmVzb2x2ZSk7CisgICAgICAgIH0pOworCisgICAgICAgIHJ1bigndmlk
ZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0IiknKTsKKworICAg
ICAgICBhd2FpdCBzaG91bGRSZXNvbHZlKHZpZGVvRnJhbWVQcm9taXNlKTsKKworICAgICAgICBl
bmRUZXN0KCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8
dmlkZW8gbXV0ZWQ+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZy
YW1lLXNlZWstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1m
cmFtZS1zZWVrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTAxNWYyNmI4M2FjOTlhZmYzMDU2
OGIzMmU2Njk0MTUwNjRjNzVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
cmVxdWVzdC12aWRlby1mcmFtZS1zZWVrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKKwor
UlVOKHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpKQor
RVZFTlQoY2FucGxheXRocm91Z2gpCitSVU4odmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFj
ayhjYWxsYmFjaykpCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjUpCitQcm9taXNlIHJlc29s
dmVkIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1
ZXN0LXZpZGVvLWZyYW1lLXNlZWsuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3Qtdmlk
ZW8tZnJhbWUtc2Vlay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5MjU4ZjAzNjM4Y2NmOGE2YzhmMzQ2MGQ3
MTQzMzRhNDc5MDk1OGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1
ZXN0LXZpZGVvLWZyYW1lLXNlZWsuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPnJlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlazwv
dGl0bGU+CisgICAgPHNjcmlwdCBzcmM9InZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJtZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworICAgICAgICBm
aW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBmaW5kTWVkaWFG
aWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKScpOworCisgICAgICAgIGF3YWl0IHdhaXRGb3Io
dmlkZW8sICdjYW5wbGF5dGhyb3VnaCcpOworCisgICAgICAgIGxldCB2aWRlb0ZyYW1lUHJvbWlz
ZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgnUlVOKHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soY2FsbGJhY2spKScp
OworICAgICAgICAgICAgdmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhyZXNvbHZlKTsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgcnVuKCd2aWRlby5jdXJyZW50VGltZSA9IDAuNScpOwor
CisgICAgICAgIGF3YWl0IHNob3VsZFJlc29sdmUodmlkZW9GcmFtZVByb21pc2UpOworCisgICAg
ICAgIGVuZFRlc3QoKTsKKyAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
ICAgIDx2aWRlbyBtdXRlZD48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUK
</data>
<flag name="commit-queue"
          id="474612"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448716</attachid>
            <date>2022-01-09 11:38:38 -0800</date>
            <delta_ts>2022-01-10 00:00:56 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235006-20220109113837.patch</filename>
            <type>text/plain</type>
            <size>44408</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWFmMDU0ZjhlOGI2MjYx
YzcyNmFjMjc1Mzg0ZWRmZjYzODdlOGY3OS4uNDAzNTBiYzQ2NmI2NTk0MWU5YzU0NjYxN2ZjOTU4
OTcwMDBjY2Y1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIyLTAxLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gclZGQygpIGlz
bid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
bG9hZHN0YXJ0Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sCisKKyAgICAgICAgQWRkIGEgbmV3IHV0aWxpdHkgY2xhc3MsIFF1ZXVlZFZpZGVv
T3V0cHV0LCB3aGljaCB3aWxsIHB1bGwgcGl4ZWwgYnVmZmVycyBvdXQgb2YgYW4gQVZQbGF5ZXJJ
dGVtVmlkZW9PdXRwdXQKKyAgICAgICAgcHJlLWVtcHRpdmVseS4gT25jZSB0aG9zZSBwaXhlbCBi
dWZmZXJzIGFyZSBlbnF1ZXVlZCBsb2NhbGx5LCB0aGVpciBhc3NvY2lhdGVkIHRpbWluZyBpbmZv
cm1hdGlvbiBjYW4gYmUgdXNlZCB0bworICAgICAgICBmaXJlIGEgY2FsbGJhY2sgZm9yIHRoYXQg
YnVmZmVyJ3MgZGlzcGxheSB0aW1lLgorCisgICAgICAgIFByZXZpb3VzbHksIHBhaW50cyB3ZXJl
IGJsb2NrZWQgZnJvbSBwdWxsaW5nIG5ldyBwaXhlbCBidWZmZXJzIGZyb20gdGhlIHZpZGVvIG91
dHB1dC4gV2l0aCB0aGUgUXVldWVkVmlkZW9PdXRwdXQKKyAgICAgICAgY2xhc3MsIHRoaXMgaXMg
bm8gbG9uZ2VyIG5lY2Vzc2FyeS4gVGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHdpbGwgbm90aWZ5IGl0
cyBjbGllbnQgd2hlbiB0aGUgaW1hZ2UgZm9yIGN1cnJlbnRUaW1lCisgICAgICAgIGNoYW5nZXMs
IGFuZCBvdGhlciBjbGllbnRzIGNhbiBmcmVlbHkgYXNrIGZvciB0aGUgY3VycmVudFRpbWUncyBp
bWFnZS4KKworICAgICAgICBUbyBjdXJiIHJ1bmF3YXkgbWVtb3J5IGdyb3d0aCwgZnJhbWVzIGFy
ZSBwdXJnZWQgYXMgc29vbiBhcyBhIG5ldyBpbWFnZSBmb3IgdGhlIGN1cnJlbnQgdGltZSBpcyBh
dmFpbGFibGUsIGFuZCB3aGVuCisgICAgICAgIHRoZSB2aWRlbyBvdXRwdXQgc2lnbmFscyB0aGF0
IGl0cyBvd24gcXVldWVzIHdlcmUgcHVyZ2VkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFz
QXZhaWxhYmxlVmlkZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdGFydFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb1RyYWNrcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRl
b091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpkZXN0cm95VmlkZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdFBpeGVsQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnZpZGVvT3V0
cHV0SGFzQXZhaWxhYmxlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb2xv
clNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Om91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Z2xv
YmFsUHVsbERlbGVnYXRlUXVldWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRh
V2lsbENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVsZWdhdGUg
aW5pdFdpdGhQbGF5ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVs
ZWdhdGUgb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSBvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6XSk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVk
VmlkZW9PdXRwdXQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW06IEFkZGVkLgorICAgICAgICAoLVtXZWJR
dWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIGluaXRXaXRoUGFyZW50Ol0pOgorICAgICAgICAoLVtX
ZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2U6XSk6
CisgICAgICAgICgtW1dlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgb3V0cHV0U2VxdWVuY2VX
YXNGbHVzaGVkOl0pOgorICAgICAgICAoLVtXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG9i
c2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAg
IChXZWJDb3JlOjpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlF1ZXVlZFZpZGVvT3V0cHV0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlk
ZW9PdXRwdXQ6OlF1ZXVlZFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZp
ZGVvT3V0cHV0Ojp+UXVldWVkVmlkZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVk
VmlkZW9PdXRwdXQ6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVjbHR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6Omhhc0ltYWdlRm9yVGltZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6dGFrZVZpZGVvRnJhbWVF
bnRyeUZvclRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmFkZEN1
cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRl
b091dHB1dDo6Y29uZmlndXJlTmV4dEltYWdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UXVldWVkVmlkZW9PdXRwdXQ6OmltYWdlRm9yQ3VycmVudFRpbWVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjphZGRWaWRlb0ZyYW1lRW50cmllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VWaWRlb0ZyYW1lRW50cmllcyk6
CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VJbWFnZXNCZWZvcmVU
aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpyYXRlQ2hhbmdlZCk6
CisKIDIwMjEtMTItMTQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1JlZmFjdG9yXSBBZG9wdCBMb2dnZXJIZWxwZXIgaW4gTG9nZ2luZyBFTUUgY2xhc3Nlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKaW5kZXggMDk4NWFkMDZmMjc5NDkzNjg1MTI2ZTE2Y2UyMjAxOGY0NTU0
ZDA5OC4uN2IyMjgzOGMzZmU4NjhjMjBmYWQ4YjdmMmJkNGViMDFkY2I0YjM2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDEtMDggIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSByVkZDKCkgaXNuJ3QgY2FsbGVkIGZv
ciBpbml0aWFsIHZpZGVvIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNTAwNgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4K
KworICAgICAgICAqIHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg6CisKIDIwMjItMDEt
MDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4NzY5OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmgKaW5kZXggOGI3ZmYxMjM3YTBjOGMy
MmY4ODJmYTBiZmVlZThiZDNhZDRjYjcxMi4uNGY5Y2JlNmQzZDI3ZWM3ZDFhM2RkN2UxZDgyNzcw
ZTM3MTg4NDE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
QVZGb3VuZGF0aW9uU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
QVZGb3VuZGF0aW9uU1BJLmgKQEAgLTQwLDkgKzQwLDEwIEBACiAjaW1wb3J0IDxBVkZvdW5kYXRp
b24vQVZNZWRpYVNlbGVjdGlvbkdyb3VwX1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVk91dHB1dENvbnRleHRfUHJpdmF0ZS5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWT3V0
cHV0RGV2aWNlLmg+Ci0jaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJfUHJpdmF0ZS5oPgor
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVySXRlbU91dHB1dF9Qcml2YXRlLmg+CiAjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtX1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWRm91
bmRhdGlvbi9BVlBsYXllckxheWVyX1ByaXZhdGUuaD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
VlBsYXllcl9Qcml2YXRlLmg+CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQpAQCAtNjYsNiArNjcsNyBAQCBOU19BU1NVTUVfTk9O
TlVMTF9FTkQKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVTZXNzaW9uLmg+CiAjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXIuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBs
YXllckl0ZW0uaD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1PdXRwdXQuaD4K
IAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0lOVEVSU1RJVElBTF9FVkVOVFMpCiAjaW1wb3J0IDxB
VkZvdW5kYXRpb24vQVZQbGF5ZXJJbnRlcnN0aXRpYWxFdmVudENvbnRyb2xsZXIuaD4KQEAgLTky
LDYgKzk0LDExIEBAIHR5cGVkZWYgTlNTdHJpbmcgKiBBVlZpZGVvUmFuZ2UgTlNfVFlQRURfRU5V
TTsKIEBlbmQKICNlbmRpZgogCitAaW50ZXJmYWNlIEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IChB
VlBsYXllckl0ZW1WaWRlb091dHB1dEVhcmxpZXN0VGltZSkKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgQ01UaW1lIGVhcmxpZXN0QXZhaWxhYmxlUGl4ZWxCdWZmZXJJdGVtVGltZTsK
Ky0gKHZvaWQpcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3Nz
aWJsZTsKK0BlbmQKKwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpIHx8IFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjViN2Mz
OTA4N2EzNzJjYzQxMWU3OTgwZGRkMjM1M2I0YmVkMTk0OS4uMWM5YzFkMGJiMTYxNzgyODVhZWYz
YTFiMTFkOWJkMzc0NzRlZTMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQ0Niw2ICs0NDQ2LDggQEAKIAkJQ0QxRjlCNEQy
NzBEMDNBOTAwNjE3RUI2IC8qIFNjcm9sbEV4dGVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5QjRDMjcwRDAzQTkwMDYxN0VCNiAvKiBTY3Jv
bGxFeHRlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0QxRjlCN0QyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlC
N0MyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEMUY5QjgwMjcwRTY3
MUEwMDYxN0VCNiAvKiBTVkdFbGVtZW50SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlCN0YyNzBFNjcxQTAwNjE3RUI2IC8qIFNWR0Vs
ZW1lbnRJbmxpbmVzLmggKi87IH07CisJCUNEMjBFRDNDMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1
ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0QyMEVEM0EyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggKi87
IH07CisJCUNEMjBFRDNEMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjBFRDNCMjc4
NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSAqLzsgfTsKIAkJQ0QyMjVDMEIx
QzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDIyNUMwOTFDNDZGQkY0MDAxNDA3NjEg
LyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSAqLzsgfTsKIAkJQ0QyMjVDMEMxQzQ2RkJGNDAwMTQw
NzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEMjI1QzBBMUM0NkZCRjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNV
UkxTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0QyN0FFNTAyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdBRTRF
MjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1ODU2LDYgKzE1ODU4LDgg
QEAKIAkJQ0QxRjlCNzAyNzBERkE3RjAwNjE3RUI2IC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5p
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0QxRjlCN0MyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVt
ZW50SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQW5jaG9yRWxlbWVudElubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxRjlCN0YyNzBFNjcxQTAwNjE3RUI2IC8q
IFNWR0VsZW1lbnRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0VsZW1lbnRJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjBFRDNBMjc4NzhGRkIwMDM4QkU0NCAv
KiBRdWV1ZWRWaWRlb091dHB1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWV1ZWRWaWRlb091dHB1dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDIwRUQzQjI3ODc4RkZCMDAzOEJFNDQg
LyogUXVldWVkVmlkZW9PdXRwdXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBRdWV1ZWRWaWRl
b091dHB1dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyMjVDMDkxQzQ2RkJG
NDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDIyNUMwQTFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJM
U2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNVUkxT
ZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMjdBRTRFMjJBOTg2ODcw
MDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdl
Um90YXRpb25TZXNzaW9uVlQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwNTk5
LDYgKzMwNjAzLDggQEAKIAkJCQlDREM4QjVBNTE4MDQ3NEY3MDAxNkU2ODUgLyogTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhCNUE0MTgwNDc0RjcwMDE2RTY4NSAvKiBN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tICovLAogCQkJCTdBMjlGNTcxMThDNjk1MTQwMDRE
MEY4MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggKi8sCisJCQkJQ0QyMEVEM0Ey
Nzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggKi8sCisJCQkJQ0QyMEVEM0Iy
Nzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0Lm1tICovLAogCQkJCUNERjk5NEZB
MjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggKi8sCiAJCQkJ
Q0RGOTk0RkIyNEMxMkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0g
Ki8sCiAJCQkJQ0RDOEI1QTkxODA0N0ZGMTAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLmggKi8sCkBAIC0zNjU2Nyw2ICszNjU3Myw3IEBACiAJCQkJRUIwRkI3MEQyNzBEMEIy
RTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTgzQzFGNTk0MUVERjY5RDMwMDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2Fj
aGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMjBFRDNDMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1
ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1RTMxRjQxRTBDQjBCNTAwNEIz
NzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJBRUU5MkMyMjM4OEE3RDAw
NDE1N0E5IC8qIFF1aXJrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5RTM3MTcxMzczNkE2NjAw
QjlFOTE5IC8qIFF1b3RlZFByaW50YWJsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODU0Nyw2ICsz
ODU1NCw3IEBACiAJCQkJQUExMkRGNDkxNzQzREY4MzAwNERBRkRGIC8qIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTI5QTMwMUNCRjc0RDQw
MDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNEQTI5QTE2MUNCREE1NkMwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRDIwRUQzRDI3ODc4RkZCMDAzOEJFNDQgLyog
UXVldWVkVmlkZW9PdXRwdXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTkyNDI0OTIxMjdCOTNF
MDA2MzRGQ0YgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0gaW4gU291cmNl
cyAqLywKIAkJCQkwNzFDMDA0QjI3MEI4NjQ5MDBEMDI3QzcgLyogUmVwbGF5S2l0Q2FwdHVyZVNv
dXJjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMkIxQUVDMjIzOTdFQkMwMEI5MUNGNyAvKiBS
ZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aAppbmRleCAxZTY1NzU3MjQ2NTQ5NzM0M2NkZTJhMjRkOGYwZGM2YjRlMDI2N2UxLi5lZWI4ODNk
NzdjNjYyMDMyYTM5MDkyNjAwM2Q5ODNhMjNhZjAwZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8Q29yZU1lZGlhL0NNVGltZS5oPgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL09ic2VydmVyLmg+CiAKIE9CSkNfQ0xBU1MgQVZBc3NldEltYWdlR2VuZXJhdG9yOwogT0JK
Q19DTEFTUyBBVkFzc2V0VHJhY2s7CkBAIC02Nyw2ICs2OCw3IEBAIGNsYXNzIEluYmFuZE1ldGFk
YXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CiBjbGFz
cyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzsKIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1Y7CitjbGFzcyBRdWV1ZWRWaWRlb091dHB1dDsKIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBWaWRlb0xheWVyTWFuYWdlck9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakM7CkBAIC0zNDcsNyArMzQ5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0Vmlk
ZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wVmlkZW9GcmFt
ZU1ldGFkYXRhR2F0aGVyaW5nKCkgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1l
TWV0YWRhdGE+IHZpZGVvRnJhbWVNZXRhZGF0YSgpIGZpbmFsIHsgcmV0dXJuIHN0ZDo6ZXhjaGFu
Z2UobV92aWRlb0ZyYW1lTWV0YWRhdGEsIHsgfSk7IH0KLSAgICB2b2lkIGNoZWNrTmV3VmlkZW9G
cmFtZU1ldGFkYXRhKENNVGltZSk7CisgICAgdm9pZCBjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0
YSgpOwogCiAgICAgUmV0YWluUHRyPEFWVVJMQXNzZXQ+IG1fYXZBc3NldDsKICAgICBSZXRhaW5Q
dHI8QVZQbGF5ZXI+IG1fYXZQbGF5ZXI7CkBAIC0zNjcsNyArMzY5LDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAgICAgUmV0YWluUHRyPEFWQXNzZXRJbWFnZUdlbmVyYXRvcj4gbV9pbWFnZUdlbmVy
YXRvcjsKLSAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ+IG1fdmlkZW9PdXRw
dXQ7CisgICAgUmVmUHRyPFF1ZXVlZFZpZGVvT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OwogICAgIFJl
dGFpblB0cjxXZWJDb3JlQVZGUHVsbERlbGVnYXRlPiBtX3ZpZGVvT3V0cHV0RGVsZWdhdGU7CiAg
ICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IG1fbGFzdFBpeGVsQnVmZmVyOwogICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gbV9sYXN0SW1hZ2U7CkBAIC00NjQsNiArNDY2LDcgQEAgcHJpdmF0
ZToKICAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVNZXRhZGF0YT4gbV92aWRlb0ZyYW1lTWV0
YWRhdGE7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPE5TVGltZUludGVydmFsPiBtX2NhY2hl
ZFNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWU7CiAgICAgbXV0YWJsZSBzdGQ6Om9w
dGlvbmFsPE5TVGltZUludGVydmFsPiBtX2NhY2hlZExpdmVVcGRhdGVJbnRlcnZhbDsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8T2JzZXJ2ZXI8dm9pZCgpPj4gbV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2Jz
ZXJ2ZXI7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBjMDY3Y2NlODA2ODZm
N2ExYmM1NDE0YmFmNzdmNzUyNTJiZjM0MmM3Li4zMzNkYTBkY2M5NWE3YmNhNWMwYmIwNGMzZmIx
NTg0NzIwZjU3M2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTU4LDYgKzU4LDcgQEAK
ICNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVRleHRUcmFjay5o
IgogI2ltcG9ydCAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJRdWV1ZWRWaWRlb091
dHB1dC5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJT
Y3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbXBvcnQgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC0y
MDUsMTYgKzIwNiw2IEBAIC0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpcGxheWVyOwogLSAoQk9PTClyZXNvdXJjZUxvYWRl
cjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgc2hvdWxkV2FpdEZvckxv
YWRpbmdPZlJlcXVlc3RlZFJlc291cmNlOihBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAq
KWxvYWRpbmdSZXF1ZXN0OwogQGVuZAogCi1AaW50ZXJmYWNlIFdlYkNvcmVBVkZQdWxsRGVsZWdh
dGUgOiBOU09iamVjdDxBVlBsYXllckl0ZW1PdXRwdXRQdWxsRGVsZWdhdGU+IHsKLSAgICBCaW5h
cnlTZW1hcGhvcmUgbV9zZW1hcGhvcmU7Ci19Ci0tIChpZClpbml0V2l0aFBsYXllcjooV2Vha1B0
cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiYmKXBsYXllcjsKLS0gKHZvaWQp
b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQbGF5ZXJJdGVtT3V0cHV0ICopc2VuZGVyOwot
LSAodm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KEFWUGxheWVySXRlbU91dHB1dCAqKW91
dHB1dDsKLQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCaW5hcnlTZW1hcGhvcmUm
IHNlbWFwaG9yZTsKLUBlbmQKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIFN0cmluZyBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhBVlBsYXllclRpbWVDb250cm9sU3RhdHVzIGVudW1l
cmF0aW9uVmFsdWUpCiB7CkBAIC0yNjEsMTYgKzI1Miw2IEBAIHN0YXRpYyBkaXNwYXRjaF9xdWV1
ZV90IGdsb2JhbExvYWRlckRlbGVnYXRlUXVldWUoKQogICAgIHJldHVybiBnbG9iYWxRdWV1ZTsK
IH0KIAotc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUHVsbERlbGVnYXRlUXVldWUoKQot
ewotICAgIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFF1ZXVlOwotICAgIHN0YXRpYyBk
aXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwg
XnsKLSAgICAgICAgZ2xvYmFsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVB
VkZQdWxsRGVsZWdhdGUgcXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOwotICAgIH0pOwot
ICAgIHJldHVybiBnbG9iYWxRdWV1ZTsKLX0KLQogc3RhdGljIHZvaWQgcmVnaXN0ZXJGb3JtYXRS
ZWFkZXJJZk5lY2Vzc2FyeSgpCiB7CiAjaWYgRU5BQkxFKFdFQk1fRk9STUFUX1JFQURFUikKQEAg
LTQ2OSw3ICs0NTAsOCBAQCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp+TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQygpCiAgICAgZm9yIChhdXRvJiBwYWlyIDog
bV9yZXNvdXJjZUxvYWRlck1hcCkKICAgICAgICAgcGFpci52YWx1ZS0+aW52YWxpZGF0ZSgpOwog
Ci0gICAgW21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bmlsIHF1ZXVlOjBdOworICAgIGlmICht
X3ZpZGVvT3V0cHV0KQorICAgICAgICBtX3ZpZGVvT3V0cHV0LT5pbnZhbGlkYXRlKCk7CiAKICAg
ICBpZiAobV92aWRlb0xheWVyKQogICAgICAgICBkZXN0cm95VmlkZW9MYXllcigpOwpAQCAtNzAy
LDcgKzY4NCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFz
QXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CiAgICAgaWYgKGN1cnJlbnRSZW5kZXJpbmdNb2Rl
KCkgPT0gTWVkaWFSZW5kZXJpbmdNb2RlOjpNZWRpYVJlbmRlcmluZ1RvTGF5ZXIpCiAgICAgICAg
IHJldHVybiBtX2NhY2hlZElzUmVhZHlGb3JEaXNwbGF5OwogCi0gICAgaWYgKG1fdmlkZW9PdXRw
dXQgJiYgKG1fbGFzdFBpeGVsQnVmZmVyIHx8IFttX3ZpZGVvT3V0cHV0IGhhc05ld1BpeGVsQnVm
ZmVyRm9ySXRlbVRpbWU6W21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXV0pKQorICAgIGlmICht
X3ZpZGVvT3V0cHV0ICYmIChtX2xhc3RQaXhlbEJ1ZmZlciB8fCBtX3ZpZGVvT3V0cHV0LT5oYXNJ
bWFnZUZvclRpbWUoY3VycmVudE1lZGlhVGltZSgpKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgcmV0dXJuIG1fdmlkZW9GcmFtZUhhc0RyYXduOwpAQCAtMTQ0NCwzNCArMTQyNiwzMSBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtUGF1c2Vk
KCkgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdGFy
dFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpCiB7Ci0gICAgQVNTRVJUKCFtX3ZpZGVvRnJh
bWVNZXRhZGF0YUdhdGhlcmluZ09ic2VydmVyIHx8IG1fYXZQbGF5ZXIpOwotICAgIG1faXNHYXRo
ZXJpbmdWaWRlb0ZyYW1lTWV0YWRhdGEgPSB0cnVlOworICAgIC8vIHJlcXVlc3RWaWRlb0ZyYW1l
Q2FsbGJhY2soKSBjYXJlcyBhYm91dCB0aGUgL25leHQvIGF2YWlsYWJsZSBmcmFtZS4gUHVsbCB0
aGUgY3VycmVudCBmcmFtZSBmcm9tCisgICAgLy8gdGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHNvIHBh
aW50cyBvZiB0aGUgY3VycmVudCBmcmFtZSBzdWNjZWVkOworICAgIHVwZGF0ZUxhc3RQaXhlbEJ1
ZmZlcigpOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgYSBDQURpc3BsYXlMaW5rIHRv
IGdldCB1cGRhdGVzIG9uIHJlbmRlcmluZywgZm9yIG5vdyB3ZSBlbXVsYXRlIHdpdGggYWRkUGVy
aW9kaWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbC4KLSAgICBtX3ZpZGVvRnJhbWVNZXRhZGF0YUdh
dGhlcmluZ09ic2VydmVyID0gW21fYXZQbGF5ZXIgYWRkUGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJ
bnRlcnZhbDpQQUw6OkNNVGltZU1ha2UoMSwgNjApIHF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCkgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0oQ01UaW1lIGN1
cnJlbnRUaW1lKSB7Ci0gICAgICAgIGVuc3VyZU9uTWFpblRocmVhZChbd2Vha1RoaXMsIGN1cnJl
bnRUaW1lXSB7Ci0gICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgd2Vh
a1RoaXMtPmNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKGN1cnJlbnRUaW1lKTsKKyAgICBpZiAo
bV92aWRlb091dHB1dCkgeworICAgICAgICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciA9
IFdURjo6bWFrZVVuaXF1ZTxPYnNlcnZlcjx2b2lkKCk+PihbdGhpc10geworICAgICAgICAgICAg
bV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIgPSBudWxscHRyOworICAgICAgICAgICAgY2hl
Y2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoKTsKICAgICAgICAgfSk7Ci0gICAgfV07CisgICAgICAg
IG1fdmlkZW9PdXRwdXQtPmFkZEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcigqbV9jdXJyZW50
SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIpOworICAgIH0KKworICAgIG1faXNHYXRoZXJpbmdWaWRlb0Zy
YW1lTWV0YWRhdGEgPSB0cnVlOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OmNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKENNVGltZSBjdXJyZW50VGltZSkK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tOZXdWaWRlb0Zy
YW1lTWV0YWRhdGEoKQogewotICAgIGlmICghdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkpCisgICAg
aWYgKCFtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhKQogICAgICAgICByZXR1cm47CiAK
LSAgICBWaWRlb0ZyYW1lTWV0YWRhdGEgbWV0YWRhdGE7Ci0gICAgbWV0YWRhdGEud2lkdGggPSBt
X2NhY2hlZFByZXNlbnRhdGlvblNpemUud2lkdGgoKTsKLSAgICBtZXRhZGF0YS5oZWlnaHQgPSBt
X2NhY2hlZFByZXNlbnRhdGlvblNpemUuaGVpZ2h0KCk7Ci0gICAgbWV0YWRhdGEucHJlc2VudGVk
RnJhbWVzID0gKyttX3NhbXBsZUNvdW50OwotICAgIG1ldGFkYXRhLm1lZGlhVGltZSA9IFBBTDo6
Q01UaW1lR2V0U2Vjb25kcyhjdXJyZW50VGltZSk7Ci0gICAgLy8gRklYTUU6IHByZXNlbnRhdGlv
blRpbWUgYW5kIGV4cGVjdGVkRGlzcGxheVRpbWUgbWlnaHQgbm90IGFsd2F5cyBoYXZlIHRoZSBz
YW1lIHZhbHVlLCB3ZSBzaG91bGQgdHJ5IGdldHRpbmcgbW9yZSBwcmVjaXNlIHZhbHVlcy4KLSAg
ICBtZXRhZGF0YS5wcmVzZW50YXRpb25UaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25k
c1NpbmNlRXBvY2goKS5zZWNvbmRzKCk7Ci0gICAgbWV0YWRhdGEuZXhwZWN0ZWREaXNwbGF5VGlt
ZSA9IG1ldGFkYXRhLnByZXNlbnRhdGlvblRpbWU7CisgICAgaWYgKCF1cGRhdGVMYXN0UGl4ZWxC
dWZmZXIoKSB8fCAhbV92aWRlb0ZyYW1lTWV0YWRhdGEpCisgICAgICAgIHJldHVybjsKIAotICAg
IG1fdmlkZW9GcmFtZU1ldGFkYXRhID0gbWV0YWRhdGE7Ci0gICAgcGxheWVyKCktPm9uTmV3Vmlk
ZW9GcmFtZU1ldGFkYXRhKFdURk1vdmUobWV0YWRhdGEpLCBtX2xhc3RQaXhlbEJ1ZmZlci5nZXQo
KSk7CisgICAgcGxheWVyKCktPm9uTmV3VmlkZW9GcmFtZU1ldGFkYXRhKFdURk1vdmUoKm1fdmlk
ZW9GcmFtZU1ldGFkYXRhKSwgbV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIG1fdmlkZW9G
cmFtZU1ldGFkYXRhID0geyB9OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnN0b3BWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmcoKQpAQCAtMjUxOCwxNyAr
MjQ5NywxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0
ZVZpZGVvT3V0cHV0KCkKICAgICBpZiAoIW1fYXZQbGF5ZXJJdGVtIHx8IG1fdmlkZW9PdXRwdXQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdmlkZW9PdXRwdXQgPSBhZG9wdE5TKFtQQUw6OmFs
bG9jQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXRJbnN0YW5jZSgpIGluaXRXaXRoUGl4ZWxCdWZmZXJB
dHRyaWJ1dGVzOm5pbF0pOworICAgIG1fdmlkZW9PdXRwdXQgPSBRdWV1ZWRWaWRlb091dHB1dDo6
Y3JlYXRlKG1fYXZQbGF5ZXJJdGVtLmdldCgpLCBtX2F2UGxheWVyLmdldCgpKTsKICAgICBBU1NF
UlQobV92aWRlb091dHB1dCk7CiAgICAgaWYgKCFtX3ZpZGVvT3V0cHV0KSB7CiAgICAgICAgIEVS
Uk9SX0xPRyhMT0dJREVOVElGSUVSLCAiLVtBVlBsYXllckl0ZW1WaWRlb091dHB1dCBpbml0V2l0
aFBpeGVsQnVmZmVyQXR0cmlidXRlczpdIGZhaWxlZCEiKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLQotICAgIG1fdmlkZW9PdXRwdXREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJDb3JlQVZGUHVs
bERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBsYXllcjoqdGhpc10pOwotICAgIFttX3ZpZGVvT3V0
cHV0IHNldERlbGVnYXRlOm1fdmlkZW9PdXRwdXREZWxlZ2F0ZS5nZXQoKSBxdWV1ZTpnbG9iYWxQ
dWxsRGVsZWdhdGVRdWV1ZSgpXTsKLQotICAgIFttX2F2UGxheWVySXRlbSBhZGRPdXRwdXQ6bV92
aWRlb091dHB1dC5nZXQoKV07CisgICAgaWYgKG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVy
KQorICAgICAgICBtX3ZpZGVvT3V0cHV0LT5hZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIo
Km1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKTsKIAogICAgIHNldE5lZWRzUmVuZGVyaW5n
TW9kZUNoYW5nZWQoKTsKIH0KQEAgLTI1MzgsMTIgKzI1MTQsMTAgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95VmlkZW9PdXRwdXQoKQogICAgIGlmICgh
bV92aWRlb091dHB1dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fYXZQbGF5ZXJJdGVt
KQotICAgICAgICBbbV9hdlBsYXllckl0ZW0gcmVtb3ZlT3V0cHV0Om1fdmlkZW9PdXRwdXQuZ2V0
KCldOwotCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKLSAgICBtX3ZpZGVvT3V0cHV0
ID0gMDsKKyAgICBtX3ZpZGVvT3V0cHV0LT5pbnZhbGlkYXRlKCk7CisgICAgbV92aWRlb091dHB1
dCA9IG51bGxwdHI7CiAKICAgICBzZXROZWVkc1JlbmRlcmluZ01vZGVDaGFuZ2VkKCk7CiB9CkBA
IC0yNTU5LDEyICsyNTMzLDI1IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6dXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkKICAgICAgICAgY3JlYXRlVmlkZW9PdXRwdXQo
KTsKICAgICBBU1NFUlQobV92aWRlb091dHB1dCk7CiAKLSAgICBDTVRpbWUgY3VycmVudFRpbWUg
PSBbbV9hdlBsYXllckl0ZW0gY3VycmVudFRpbWVdOworICAgIGF1dG8gY3VycmVudFRpbWUgPSBj
dXJyZW50TWVkaWFUaW1lKCk7CiAKLSAgICBpZiAoIVttX3ZpZGVvT3V0cHV0IGhhc05ld1BpeGVs
QnVmZmVyRm9ySXRlbVRpbWU6Y3VycmVudFRpbWVdKQorICAgIGlmICghbV92aWRlb091dHB1dC0+
aGFzSW1hZ2VGb3JUaW1lKGN1cnJlbnRUaW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgbV9sYXN0UGl4ZWxCdWZmZXIgPSBhZG9wdENGKFttX3ZpZGVvT3V0cHV0IGNvcHlQaXhlbEJ1
ZmZlckZvckl0ZW1UaW1lOmN1cnJlbnRUaW1lIGl0ZW1UaW1lRm9yRGlzcGxheTpuaWxdKTsKKyAg
ICBhdXRvIGVudHJ5ID0gbV92aWRlb091dHB1dC0+dGFrZVZpZGVvRnJhbWVFbnRyeUZvclRpbWUo
Y3VycmVudFRpbWUpOworICAgIG1fbGFzdFBpeGVsQnVmZmVyID0gV1RGTW92ZShlbnRyeS5waXhl
bEJ1ZmZlcik7CisKKyAgICBpZiAobV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSkgewor
ICAgICAgICBhdXRvIHByZXNlbnRhdGlvblRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNv
bmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKSAtIChjdXJyZW50VGltZSAtIGVudHJ5LmRpc3BsYXlU
aW1lKS50b0RvdWJsZSgpOworICAgICAgICBtX3ZpZGVvRnJhbWVNZXRhZGF0YSA9IHsKKyAgICAg
ICAgICAgIC53aWR0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDVlBpeGVsQnVmZmVyR2V0V2lk
dGgobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpKSwKKyAgICAgICAgICAgIC5oZWlnaHQgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChtX2xhc3RQaXhlbEJ1ZmZl
ci5nZXQoKSkpLAorICAgICAgICAgICAgLnByZXNlbnRlZEZyYW1lcyA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPigrK21fc2FtcGxlQ291bnQpLAorICAgICAgICAgICAgLm1lZGlhVGltZSA9IGVudHJ5
LmRpc3BsYXlUaW1lLnRvRG91YmxlKCksCisgICAgICAgICAgICAucHJlc2VudGF0aW9uVGltZSA9
IHByZXNlbnRhdGlvblRpbWUsCisgICAgICAgICAgICAuZXhwZWN0ZWREaXNwbGF5VGltZSA9IHBy
ZXNlbnRhdGlvblRpbWUsCisgICAgICAgIH07CisgICAgfQogCiAgICAgaWYgKG1faW1hZ2VSb3Rh
dGlvblNlc3Npb24pCiAgICAgICAgIG1fbGFzdFBpeGVsQnVmZmVyID0gbV9pbWFnZVJvdGF0aW9u
U2Vzc2lvbi0+cm90YXRlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKQEAgLTI1ODQsNyArMjU3
MSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dmlkZW9PdXRw
dXRIYXNBdmFpbGFibGVGcmFtZSgpCiAgICAgaWYgKCFtX3ZpZGVvT3V0cHV0KQogICAgICAgICBj
cmVhdGVWaWRlb091dHB1dCgpOwogCi0gICAgcmV0dXJuIFttX3ZpZGVvT3V0cHV0IGhhc05ld1Bp
eGVsQnVmZmVyRm9ySXRlbVRpbWU6W21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXV07CisgICAg
cmV0dXJuIG1fdmlkZW9PdXRwdXQtPmhhc0ltYWdlRm9yVGltZShQQUw6OnRvTWVkaWFUaW1lKFtt
X2F2UGxheWVySXRlbSBjdXJyZW50VGltZV0pKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQpAQCAt
MjYwMiw3ICsyNTg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQogICAgIC8vIENhbGxzIHRvIGNvcHlQ
aXhlbEJ1ZmZlckZvckl0ZW1UaW1lOml0ZW1UaW1lRm9yRGlzcGxheTogbWF5IHJldHVybiBuaWwg
aWYgdGhlIHBpeGVsIGJ1ZmZlcgogICAgIC8vIGZvciB0aGUgcmVxdWVzdGVkIHRpbWUgaGFzIGFs
cmVhZHkgYmVlbiByZXRyaWV2ZWQuIEluIHRoaXMgY2FzZSwgdGhlIGxhc3QgdmFsaWQgaW1hZ2Ug
KGlmIGFueSkKICAgICAvLyBzaG91bGQgYmUgZGlzcGxheWVkLgotICAgIGlmICgobV9pc0dhdGhl
cmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSB8fCAhdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkpICYmICht
X2xhc3RJbWFnZSB8fCAhbV9sYXN0UGl4ZWxCdWZmZXIpKQorICAgIGlmICghdXBkYXRlTGFzdFBp
eGVsQnVmZmVyKCkgJiYgKG1fbGFzdEltYWdlIHx8ICFtX2xhc3RQaXhlbEJ1ZmZlcikpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmICghbV9waXhlbEJ1ZmZlckNvbmZvcm1lcikgewpAQCAtMjYz
Nyw4ICsyNjI0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpw
YWludFdpdGhWaWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogUmV0YWluUHRyPENWUGl4
ZWxCdWZmZXJSZWY+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBpeGVsQnVm
ZmVyRm9yQ3VycmVudFRpbWUoKQogewotICAgIGlmICghbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVN
ZXRhZGF0YSkKLSAgICAgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CisgICAgdXBkYXRlTGFz
dFBpeGVsQnVmZmVyKCk7CiAKICAgICByZXR1cm4gbV9sYXN0UGl4ZWxCdWZmZXI7CiB9CkBAIC0y
NjY5LDcgKzI2NTUsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCkKICAgICBzdGQ6Om9wdGlv
bmFsPFJ1bkxvb3A6OlRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+PiB0
aW1lb3V0VGltZXI7CiAKICAgICBpZiAoIW1fcnVuTG9vcE5lc3RpbmdMZXZlbCkgewotICAgICAg
ICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VXaXRo
QWR2YW5jZUludGVydmFsOjBdOworICAgICAgICBPYnNlcnZlcjx2b2lkKCk+IHdhaXRGb3JWaWRl
b091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2VPYnNlcnZlcihbdGhpc10geworICAgICAgICAgICAg
aWYgKG1fcnVuTG9vcE5lc3RpbmdMZXZlbCkKKyAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWlu
KCkuc3RvcCgpOworICAgICAgICB9KTsKKyAgICAgICAgbV92aWRlb091dHB1dC0+YWRkQ3VycmVu
dEltYWdlQ2hhbmdlZE9ic2VydmVyKHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFu
Z2VPYnNlcnZlcik7CiAKICAgICAgICAgdGltZW91dFRpbWVyLmVtcGxhY2UoUnVuTG9vcDo6bWFp
bigpLCBbJl0gewogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLnN0b3AoKTsKQEAgLTI2OTYs
MTUgKzI2ODYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ondh
aXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQogewot
ICAgIGlmIChtX3J1bkxvb3BOZXN0aW5nTGV2ZWwpIHsKLSAgICAgICAgaWYgKFJ1bkxvb3A6Omlz
TWFpbigpKQotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLnN0b3AoKTsKLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewotICAgICAgICAg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5zdG9wKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
fQotICAgIH0KKyAgICBjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YSgpOwogfQogCiAjaWYgRU5B
QkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCkBAIC00MDg5LDM3ICs0MDcxLDQgQEAgLSAodm9p
ZClyZXNvdXJjZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIg
ZGlkQ2FuY2VsTG9hZGluZ1IKIAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gV2ViQ29yZUFWRlB1
bGxEZWxlZ2F0ZSB7Ci0gICAgV2Vha1B0cjxXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDPiBfcGxheWVyOwotfQotCi1Ac3ludGhlc2l6ZSBzZW1hcGhvcmUgPSBtX3Nl
bWFwaG9yZTsKLQotLSAoaWQpaW5pdFdpdGhQbGF5ZXI6KFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQz4mJilwbGF5ZXIKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRd
OwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfcGxheWVyID0gV1RG
TW92ZShwbGF5ZXIpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKW91dHB1dE1lZGlh
RGF0YVdpbGxDaGFuZ2U6KEFWUGxheWVySXRlbVZpZGVvT3V0cHV0ICopb3V0cHV0Ci17Ci0gICAg
VU5VU0VEX1BBUkFNKG91dHB1dCk7Ci0gICAgbV9zZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgY2Fs
bE9uTWFpblRocmVhZChbc2VsZiwgc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfV0gewot
ICAgICAgICBpZiAoX3BsYXllcikKLSAgICAgICAgICAgIF9wbGF5ZXItPm91dHB1dE1lZGlhRGF0
YVdpbGxDaGFuZ2UoKTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClvdXRwdXRTZXF1ZW5jZVdhc0Zs
dXNoZWQ6KEFWUGxheWVySXRlbVZpZGVvT3V0cHV0ICopb3V0cHV0Ci17Ci0gICAgVU5VU0VEX1BB
UkFNKG91dHB1dCk7Ci0gICAgLy8gTm8tb3AuCi19Ci0KLUBlbmQKLQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9R
dWV1ZWRWaWRlb091dHB1dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YmFmMGVhMTFl
NWM0ZmJlMzI0ZDk1MjVhZGYxYmRiM2M2MzMwYTg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9P
dXRwdXQuaApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrSGFzaFNldC5oPgorCitPQkpDX0NMQVNTIEFWUGxheWVyOworT0JK
Q19DTEFTUyBBVlBsYXllckl0ZW07CitPQkpDX0NMQVNTIEFWUGxheWVySXRlbVZpZGVvT3V0cHV0
OworT0JKQ19DTEFTUyBXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlOworCit0eXBlZGVmIHN0
cnVjdCBfX0NWQnVmZmVyICpDVlBpeGVsQnVmZmVyUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFF1ZXVlZFZpZGVvT3V0cHV0CisgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxRdWV1
ZWRWaWRlb091dHB1dD4KKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxRdWV1ZWRWaWRlb091
dHB1dD4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8UXVldWVkVmlkZW9PdXRwdXQ+IGNyZWF0ZShBVlBsYXllckl0ZW0qLCBBVlBsYXllciop
OworICAgIH5RdWV1ZWRWaWRlb091dHB1dCgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7Cisg
ICAgYm9vbCBoYXNJbWFnZUZvclRpbWUoY29uc3QgTWVkaWFUaW1lJikgY29uc3Q7CisKKyAgICBz
dHJ1Y3QgVmlkZW9GcmFtZUVudHJ5IHsKKyAgICAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+IHBpeGVsQnVmZmVyOworICAgICAgICBNZWRpYVRpbWUgZGlzcGxheVRpbWU7CisgICAgfTsK
KyAgICBWaWRlb0ZyYW1lRW50cnkgdGFrZVZpZGVvRnJhbWVFbnRyeUZvclRpbWUoY29uc3QgTWVk
aWFUaW1lJik7CisKKyAgICB2b2lkIGFkZFZpZGVvRnJhbWVFbnRyaWVzKFZlY3RvcjxWaWRlb0Zy
YW1lRW50cnk+JiYpOworICAgIHZvaWQgcHVyZ2VWaWRlb0ZyYW1lRW50cmllcygpOworCisgICAg
dXNpbmcgQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZCgpPjsKKyAg
ICB2b2lkIGFkZEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcihjb25zdCBDdXJyZW50SW1hZ2VD
aGFuZ2VkT2JzZXJ2ZXImKTsKKworICAgIHVzaW5nIEltYWdlTWFwID0gc3RkOjptYXA8TWVkaWFU
aW1lLCBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4+OworCisgICAgdm9pZCByYXRlQ2hhbmdl
ZChmbG9hdCk7CisKK3ByaXZhdGU6CisgICAgUXVldWVkVmlkZW9PdXRwdXQoQVZQbGF5ZXJJdGVt
KiwgQVZQbGF5ZXIqKTsKKworICAgIHZvaWQgcHVyZ2VJbWFnZXNCZWZvcmVUaW1lKGNvbnN0IE1l
ZGlhVGltZSYpOworICAgIHZvaWQgY29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKCk7Cisg
ICAgdm9pZCBjYW5jZWxOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAgICB2b2lkIG5leHRJbWFn
ZVRpbWVSZWFjaGVkKCk7CisKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtPiBtX3BsYXllckl0
ZW07CisgICAgUmV0YWluUHRyPEFWUGxheWVyPiBtX3BsYXllcjsKKyAgICBSZXRhaW5QdHI8V2Vi
UXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKKyAgICBSZXRhaW5QdHI8QVZQ
bGF5ZXJJdGVtVmlkZW9PdXRwdXQ+IG1fdmlkZW9PdXRwdXQ7CisgICAgUmV0YWluUHRyPGlkPiBt
X3ZpZGVvVGltZWJhc2VPYnNlcnZlcjsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fbmV4dEltYWdlVGlt
ZWJhc2VPYnNlcnZlcjsKKworICAgIEltYWdlTWFwIG1fdmlkZW9GcmFtZXM7CisgICAgV2Vha0hh
c2hTZXQ8Q3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyPiBtX2N1cnJlbnRJbWFnZUNoYW5nZWRP
YnNlcnZlcnM7CisKKyAgICBib29sIG1fcGF1c2VkIHsgdHJ1ZSB9OworfTsKKworfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGJjMDgzODE0YzA4YzdkZWVkNjFjOTA3OWMyMmJlM2Y1MDc4YTc3ZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1F1ZXVlZFZpZGVvT3V0cHV0Lm1tCkBAIC0wLDAgKzEsMzA4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlF1ZXVlZFZpZGVvT3V0cHV0LmgiCisKKyNpZiBF
TkFCTEUoVklERU8pCisKKyNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtT3V0cHV0
Lmg+CisjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4K
KyNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgorCisjaW5jbHVkZSA8cGFsL2NmL0Nv
cmVNZWRpYVNvZnRMaW5rLmg+CisjaW5jbHVkZSA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRM
aW5rLmg+CisKK0BpbnRlcmZhY2UgV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSA6IE5TT2Jq
ZWN0PEFWUGxheWVySXRlbU91dHB1dFB1bGxEZWxlZ2F0ZT4geworICAgIFdlYWtQdHI8V2ViQ29y
ZTo6UXVldWVkVmlkZW9PdXRwdXQ+IF9wYXJlbnQ7Cit9CistIChpZClpbml0V2l0aFBhcmVudDoo
V2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQqKXBhcmVudDsKKy0gKHZvaWQpb3V0cHV0TWVkaWFE
YXRhV2lsbENoYW5nZTooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0OworLSAodm9pZClvdXRw
dXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KEFWUGxheWVySXRlbU91dHB1dCAqKW91dHB1dDsKKy0gKHZv
aWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hh
bmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dDsKK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIFdlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUKKy0gKGlkKWlu
aXRXaXRoUGFyZW50OihXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dCopcGFyZW50Cit7CisgICAg
c2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7
CisKKyAgICBfcGFyZW50ID0gcGFyZW50OworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lk
KW91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2U6KEFWUGxheWVySXRlbU91dHB1dCAqKW91dHB1dAor
eworICAgIEFTU0VSVChbb3V0cHV0IGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRBVlBsYXllckl0ZW1W
aWRlb091dHB1dENsYXNzKCldKTsKKyAgICBhdXRvKiB2aWRlb091dHB1dCA9IChBVlBsYXllckl0
ZW1WaWRlb091dHB1dCopb3V0cHV0OworCisgICAgVmVjdG9yPFdlYkNvcmU6OlF1ZXVlZFZpZGVv
T3V0cHV0OjpWaWRlb0ZyYW1lRW50cnk+IHZpZGVvRnJhbWVFbnRyaWVzOworICAgIGRvIHsKKyAg
ICAgICAgQ01UaW1lIGVhcmxpZXN0VGltZSA9IFt2aWRlb091dHB1dCBlYXJsaWVzdEF2YWlsYWJs
ZVBpeGVsQnVmZmVySXRlbVRpbWVdOworICAgICAgICBpZiAoQ01USU1FX0lTX0lOVkFMSUQoZWFy
bGllc3RUaW1lKSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGF1dG8gcGl4ZWxCdWZm
ZXIgPSBhZG9wdENGKFt2aWRlb091dHB1dCBjb3B5UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTplYXJs
aWVzdFRpbWUgaXRlbVRpbWVGb3JEaXNwbGF5Om5pbF0pOworICAgICAgICBpZiAoIXBpeGVsQnVm
ZmVyKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgdmlkZW9GcmFtZUVudHJpZXMuYXBw
ZW5kKHsgV1RGTW92ZShwaXhlbEJ1ZmZlciksIFBBTDo6dG9NZWRpYVRpbWUoZWFybGllc3RUaW1l
KSB9KTsKKyAgICB9IHdoaWxlICh0cnVlKTsKKworICAgIGlmICh2aWRlb0ZyYW1lRW50cmllcy5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGNhbGxPbk1haW5SdW5Mb29wKFt2aWRl
b0ZyYW1lRW50cmllcyA9IFdURk1vdmUodmlkZW9GcmFtZUVudHJpZXMpLCBwYXJlbnQgPSBfcGFy
ZW50XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKHBhcmVudCkKKyAgICAgICAgICAgIHBhcmVu
dC0+YWRkVmlkZW9GcmFtZUVudHJpZXMoV1RGTW92ZSh2aWRlb0ZyYW1lRW50cmllcykpOworICAg
IH0pOworfQorCistICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVt
T3V0cHV0ICopb3V0cHV0Cit7CisgICAgQVNTRVJUKFtvdXRwdXQgaXNLaW5kT2ZDbGFzczpQQUw6
OmdldEFWUGxheWVySXRlbVZpZGVvT3V0cHV0Q2xhc3MoKV0pOworICAgIGF1dG8qIHZpZGVvT3V0
cHV0ID0gKEFWUGxheWVySXRlbVZpZGVvT3V0cHV0KilvdXRwdXQ7CisgICAgW3ZpZGVvT3V0cHV0
IHJlcXVlc3ROb3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZUFzU29vbkFzUG9zc2libGVdOwor
CisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3BhcmVudCA9IF9wYXJlbnRdIHsKKyAgICAgICAgaWYg
KHBhcmVudCkKKyAgICAgICAgICAgIHBhcmVudC0+cHVyZ2VWaWRlb0ZyYW1lRW50cmllcygpOwor
ICAgIH0pOworfQorCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9i
amVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZv
aWQqKWNvbnRleHQKK3sKKyAgICBpZiAoIVtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInJhdGUi
XSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byByYXRlVmFsdWUgPSAoTlNOdW1iZXIqKVtj
aGFuZ2UgdmFsdWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07CisgICAgQVNTRVJUKFty
YXRlVmFsdWUgaXNLaW5kT2ZDbGFzczpOU051bWJlci5jbGFzc10pOworICAgIGF1dG8gcmF0ZSA9
IHJhdGVWYWx1ZS5mbG9hdFZhbHVlOworCisgICAgZW5zdXJlT25NYWluUnVuTG9vcChbcGFyZW50
ID0gX3BhcmVudCwgcmF0ZV0geworICAgICAgICBpZiAocGFyZW50KQorICAgICAgICAgICAgcGFy
ZW50LT5yYXRlQ2hhbmdlZChyYXRlKTsKKyAgICB9KTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1
ZXVlKCkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxRdWV1ZTsKKyAgICBz
dGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNl
VG9rZW4sIF57CisgICAgICAgIGdsb2JhbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJX
ZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIHF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFM
KTsKKyAgICB9KTsKKyAgICByZXR1cm4gZ2xvYmFsUXVldWU7Cit9CisKK1JlZjxRdWV1ZWRWaWRl
b091dHB1dD4gUXVldWVkVmlkZW9PdXRwdXQ6OmNyZWF0ZShBVlBsYXllckl0ZW0qIGl0ZW0sIEFW
UGxheWVyKiBwbGF5ZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUXVldWVkVmlkZW9P
dXRwdXQoaXRlbSwgcGxheWVyKSk7Cit9CisKK1F1ZXVlZFZpZGVvT3V0cHV0OjpRdWV1ZWRWaWRl
b091dHB1dChBVlBsYXllckl0ZW0qIGl0ZW0sIEFWUGxheWVyKiBwbGF5ZXIpCisgICAgOiBtX3Bs
YXllckl0ZW0oaXRlbSkKKyAgICAsIG1fcGxheWVyKHBsYXllcikKKyAgICAsIG1fZGVsZWdhdGUo
YWRvcHROUyhbW1dlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFy
ZW50OnRoaXNdKSkKK3sKKyAgICBtX3ZpZGVvT3V0cHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FW
UGxheWVySXRlbVZpZGVvT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0aFBpeGVsQnVmZmVyQXR0cmli
dXRlczpuaWxdKTsKKyAgICBbbV92aWRlb091dHB1dCBzZXREZWxlZ2F0ZTptX2RlbGVnYXRlLmdl
dCgpIHF1ZXVlOmdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKV07CisgICAgW21fdmlkZW9PdXRw
dXQgcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJsZV07
CisKKyAgICBbbV9wbGF5ZXJJdGVtIGFkZE91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKKwor
ICAgIFttX3BsYXllciBhZGRPYnNlcnZlcjptX2RlbGVnYXRlLmdldCgpIGZvcktleVBhdGg6QCJy
YXRlIiBvcHRpb25zOihOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IHwgTlNLZXlWYWx1ZU9i
c2VydmluZ09wdGlvbkluaXRpYWwpIGNvbnRleHQ6bmlsXTsKKworICAgIG1fdmlkZW9UaW1lYmFz
ZU9ic2VydmVyID0gW21fcGxheWVyIGFkZFBlcmlvZGljVGltZU9ic2VydmVyRm9ySW50ZXJ2YWw6
UEFMOjpDTVRpbWVNYWtlKDEsIDYwKSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCkg
dXNpbmdCbG9jazpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvdGVjdGVkRGVsZWdh
dGUgPSBtX2RlbGVnYXRlLCBwcm90ZWN0ZWRPdXRwdXQgPSBtX3ZpZGVvT3V0cHV0XShDTVRpbWUg
Y3VycmVudFRpbWUpIG11dGFibGUgeworCisgICAgICAgIC8vIFBlcmlvZGljYWxseSBjaGVjayBm
b3IgbmV3IGF2YWlsYWJsZSBwaXhlbCBidWZmZXJzLgorICAgICAgICBbcHJvdGVjdGVkRGVsZWdh
dGUgb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTpwcm90ZWN0ZWRPdXRwdXQuZ2V0KCldOworCisg
ICAgICAgIC8vIEFuZCBwdXJnZSB0aGUgYmFjayBidWZmZXIgb2YgcGFzdCBmcmFtZXMuCisgICAg
ICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9IHdlYWtUaGlzLCB0aW1lID0gUEFMOjp0
b01lZGlhVGltZShjdXJyZW50VGltZSldIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAg
ICAgICAgICAgICAgICB3ZWFrVGhpcy0+cHVyZ2VJbWFnZXNCZWZvcmVUaW1lKHRpbWUpOworICAg
ICAgICB9KTsKKyAgICB9XTsKK30KKworUXVldWVkVmlkZW9PdXRwdXQ6On5RdWV1ZWRWaWRlb091
dHB1dCgpCit7CisgICAgaW52YWxpZGF0ZSgpOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0
OjppbnZhbGlkYXRlKCkKK3sKKyAgICBpZiAobV92aWRlb1RpbWViYXNlT2JzZXJ2ZXIpIHsKKyAg
ICAgICAgW21fcGxheWVyIHJlbW92ZVRpbWVPYnNlcnZlcjptX3ZpZGVvVGltZWJhc2VPYnNlcnZl
ci5nZXQoKV07CisgICAgICAgIG1fdmlkZW9UaW1lYmFzZU9ic2VydmVyID0gbmlsOworICAgIH0K
KworICAgIGNhbmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworCisgICAgaWYgKG1fdmlkZW9P
dXRwdXQpIHsKKyAgICAgICAgW21fcGxheWVySXRlbSByZW1vdmVPdXRwdXQ6bV92aWRlb091dHB1
dC5nZXQoKV07CisgICAgICAgIFttX3ZpZGVvT3V0cHV0IHNldERlbGVnYXRlOm5pbCBxdWV1ZTpu
aWxdOworICAgICAgICBtX3ZpZGVvT3V0cHV0ID0gbmlsOworICAgIH0KKworICAgIGlmIChtX3Bs
YXllcikgeworICAgICAgICBbbV9wbGF5ZXIgcmVtb3ZlT2JzZXJ2ZXI6bV9kZWxlZ2F0ZS5nZXQo
KSBmb3JLZXlQYXRoOkAicmF0ZSJdOworICAgICAgICBtX3BsYXllciA9IG5pbDsKKyAgICB9CisK
KyAgICBtX3BsYXllckl0ZW0gPSBuaWw7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBNYXliZUNv
bnN0TWFwLCB0eXBlbmFtZSBNYXliZUNvbnN0SXRlciA9IGRlY2x0eXBlKE1heWJlQ29uc3RNYXAo
KS5iZWdpbigpKT4KK01heWJlQ29uc3RJdGVyIGZpbmRJbWFnZUZvclRpbWUoTWF5YmVDb25zdE1h
cCYgbWFwLCBjb25zdCBNZWRpYVRpbWUmIHRpbWUpCit7CisgICAgLy8gT3V0cHV0cyBvZiBBVlBs
YXllckl0ZW1WaWRlb091dHB1dCBoYXZlIGEgZGlzcGxheSB0aW1lLCBidXQgbm90IGEgZHVyYXRp
b247IHRoZXkgYXJlIHZhbGlkCisgICAgLy8gdW50aWwgdGhlIGFycml2YWwgb2YgYSBsYXRlciBm
cmFtZS4gRmluZCB0aGlzIGZyYW1lIGVmZmljaWVudGx5IHVzaW5nIHNldDo6dXBwZXJfYm91bmQg
dG8gZmluZAorICAgIC8vIHRoZSBuZXh0IGRpc3BsYXlhYmxlIGZyYW1lLCBhbmQgd2FsayBiYWNr
d2FyZHMgYnkgb25lIHRvIGZpbmQgYSBmcmFtZSBmb3IgdGhlIHRhcmdldCB0aW1lLgorICAgIGlm
IChtYXAuZW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG1hcC5lbmQoKTsKKworICAgIGF1dG8gaXRl
ciA9IG1hcC51cHBlcl9ib3VuZCh0aW1lKTsKKyAgICBpZiAoaXRlciA9PSBtYXAuYmVnaW4oKSkK
KyAgICAgICAgcmV0dXJuIG1hcC5lbmQoKTsKKworICAgIHJldHVybiAtLWl0ZXI7Cit9CisKK2Jv
b2wgUXVldWVkVmlkZW9PdXRwdXQ6Omhhc0ltYWdlRm9yVGltZShjb25zdCBNZWRpYVRpbWUmIHRp
bWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywg
dGltZSkgIT0gbV92aWRlb0ZyYW1lcy5lbmQoKTsKK30KKworYXV0byBRdWV1ZWRWaWRlb091dHB1
dDo6dGFrZVZpZGVvRnJhbWVFbnRyeUZvclRpbWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lKSAtPiBW
aWRlb0ZyYW1lRW50cnkKK3sKKyAgICBhdXRvIGl0ZXIgPSBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlk
ZW9GcmFtZXMsIHRpbWUpOworICAgIGlmIChpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkpCisg
ICAgICAgIHJldHVybiB7IG51bGxwdHIsIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSB9OworCisg
ICAgVmlkZW9GcmFtZUVudHJ5IGVudHJ5ID0geyBXVEZNb3ZlKGl0ZXItPnNlY29uZCksIGl0ZXIt
PmZpcnN0IH07CisKKyAgICAvLyBQdXJnZSBhbGwgZnJhbWVzIGJlZm9yZSBgdGltZWAsIHNvIHRo
YXQgcmVwZWF0ZWQgY2FsbHMgd2l0aCB0aGUgc2FtZSB0aW1lIGRvbid0IHJldHVybgorICAgIC8v
IHN1Y2Nlc3NpdmVseSBlYXJsaWVyIGltYWdlcy4KKyAgICBtX3ZpZGVvRnJhbWVzLmVyYXNlKG1f
dmlkZW9GcmFtZXMuYmVnaW4oKSwgKytpdGVyKTsKKworICAgIHJldHVybiBlbnRyeTsKK30KKwor
dm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6YWRkQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKGNv
bnN0IEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciYgb2JzZXJ2ZXIpCit7CisgICAgbV9jdXJy
ZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7CisgICAgY29uZmlndXJlTmV4
dEltYWdlVGltZU9ic2VydmVyKCk7CisKKyAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZp
Y2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKK30KKwordm9pZCBRdWV1
ZWRWaWRlb091dHB1dDo6Y29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKCkKK3sKKyAgICBp
ZiAobV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIGN1cnJlbnRUaW1lID0gUEFMOjp0b01lZGlhVGltZShbbV9wbGF5ZXIgY3VycmVudFRpbWVd
KTsKKyAgICBhdXRvIGl0ZXIgPSBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFtZXMsIGN1cnJl
bnRUaW1lKTsKKyAgICBpZiAoaXRlciA9PSBtX3ZpZGVvRnJhbWVzLmVuZCgpIHx8ICsraXRlciA9
PSBtX3ZpZGVvRnJhbWVzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG5leHRJ
bWFnZVRpbWUgPSBpdGVyLT5maXJzdDsKKworICAgIG1fbmV4dEltYWdlVGltZWJhc2VPYnNlcnZl
ciA9IFttX3BsYXllciBhZGRCb3VuZGFyeVRpbWVPYnNlcnZlckZvclRpbWVzOkBbW05TVmFsdWUg
dmFsdWVXaXRoQ01UaW1lOlBBTDo6dG9DTVRpbWUoY3VycmVudFRpbWUpXV0gcXVldWU6Z2xvYmFs
T3V0cHV0RGVsZWdhdGVRdWV1ZSgpIHVzaW5nQmxvY2s6W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIHByb3RlY3RlZERlbGVnYXRlID0gbV9kZWxlZ2F0ZSwgcHJvdGVjdGVkT3V0cHV0ID0g
bV92aWRlb091dHB1dF0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3
ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMp
CisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPm5leHRJbWFnZVRpbWVSZWFjaGVkKCk7CisgICAg
ICAgIH0pOworICAgIH1dOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpjYW5jZWxOZXh0
SW1hZ2VUaW1lT2JzZXJ2ZXIoKQoreworICAgIGlmICghbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2Vy
dmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBbbV9wbGF5ZXIgcmVtb3ZlVGltZU9ic2VydmVy
Om1fbmV4dEltYWdlVGltZWJhc2VPYnNlcnZlci5nZXQoKV07CisgICAgbV9uZXh0SW1hZ2VUaW1l
YmFzZU9ic2VydmVyID0gbmlsOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpuZXh0SW1h
Z2VUaW1lUmVhY2hlZCgpCit7CisgICAgY2FuY2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCk7Cisg
ICAgYXV0byBvYnNlcnZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG1fY3VycmVudEltYWdlQ2hhbmdlZE9i
c2VydmVycywgeyB9KTsKKyAgICBvYnNlcnZlcnMuZm9yRWFjaChbXShhdXRvJiBvYnNlcnZlcikg
eyBvYnNlcnZlcigpOyB9KTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6YWRkVmlkZW9G
cmFtZUVudHJpZXMoVmVjdG9yPFZpZGVvRnJhbWVFbnRyeT4mJiB2aWRlb0ZyYW1lRW50cmllcykK
K3sKKyAgICBib29sIG5lZWRzSW1hZ2VGb3JDdXJyZW50VGltZUNoYW5nZWQgPSBmYWxzZTsKKyAg
ICBib29sIGhhc0N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMgPSBtX2N1cnJlbnRJbWFnZUNo
YW5nZWRPYnNlcnZlcnMuY29tcHV0ZVNpemUoKTsKKyAgICBNZWRpYVRpbWUgY3VycmVudFRpbWUg
PSBoYXNDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzID8gUEFMOjp0b01lZGlhVGltZShbbV9w
bGF5ZXIgY3VycmVudFRpbWVdKSA6IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKTsKKworICAgIGZv
ciAoYXV0byYgZW50cnkgOiB2aWRlb0ZyYW1lRW50cmllcykgeworICAgICAgICBpZiAoaGFzQ3Vy
cmVudEltYWdlQ2hhbmdlZE9ic2VydmVycyAmJiBlbnRyeS5kaXNwbGF5VGltZSA8PSBjdXJyZW50
VGltZSkKKyAgICAgICAgICAgIG5lZWRzSW1hZ2VGb3JDdXJyZW50VGltZUNoYW5nZWQgPSB0cnVl
OworICAgICAgICBtX3ZpZGVvRnJhbWVzLmVtcGxhY2UoZW50cnkuZGlzcGxheVRpbWUsIFdURk1v
dmUoZW50cnkucGl4ZWxCdWZmZXIpKTsKKyAgICB9CisKKyAgICBpZiAobmVlZHNJbWFnZUZvckN1
cnJlbnRUaW1lQ2hhbmdlZCkKKyAgICAgICAgbmV4dEltYWdlVGltZVJlYWNoZWQoKTsKKyAgICBl
bHNlIGlmIChoYXNDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzKQorICAgICAgICBjb25maWd1
cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKworICAgIGlmIChtX3BhdXNlZCkKKyAgICAgICAg
W21fdmlkZW9PdXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29u
QXNQb3NzaWJsZV07Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OnB1cmdlVmlkZW9GcmFt
ZUVudHJpZXMoKQoreworICAgIGNhbmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworICAgIG1f
dmlkZW9GcmFtZXMuY2xlYXIoKTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VJ
bWFnZXNCZWZvcmVUaW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkKK3sKKyAgICBtX3ZpZGVvRnJh
bWVzLmVyYXNlKG1fdmlkZW9GcmFtZXMuYmVnaW4oKSwgZmluZEltYWdlRm9yVGltZShtX3ZpZGVv
RnJhbWVzLCB0aW1lKSk7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OnJhdGVDaGFuZ2Vk
KGZsb2F0IHJhdGUpCit7CisgICAgbV9wYXVzZWQgPSAhcmF0ZTsKKworICAgIGlmIChtX3BhdXNl
ZCkKKyAgICAgICAgW21fdmlkZW9PdXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRh
Q2hhbmdlQXNTb29uQXNQb3NzaWJsZV07Cit9CisKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MWJl
YzI0MjI1ZjI2MjZmZGI0ZDkwMjgzNzQxZmY4MDMyOTIzNzBkLi5lZjAzODY4OWU4OWQwMzEzOTk5
MTE0MTgxMDBmMWYzZDZmNGM1MWFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDEtMDgg
IEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSByVkZD
KCkgaXNuJ3QgY2FsbGVkIGZvciBpbml0aWFsIHZpZGVvIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAwNgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
bG9hZHN0YXJ0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvcmVxdWVzdC12
aWRlby1mcmFtZS1sb2Fkc3RhcnQuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvcmVxdWVz
dC12aWRlby1mcmFtZS1zZWVrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEv
cmVxdWVzdC12aWRlby1mcmFtZS1zZWVrLmh0bWw6IEFkZGVkLgorCiAyMDIyLTAxLTA4ICBBcmNh
ZHkgR29sZG1pbnRzLU9ybG92ICA8YWdvbGRtaW50c0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
TElCXSBVcGRhdGUgdGVzdCBleHBlY3RhdGlvbnMgZm9yIGtub3duIGZhaWx1cmVzLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3Rh
cnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjMDJmNjZlYmFiZGZiNTc0ZDlmOWZmMWQ1Yjgx
ZmM4MDg5MjAzNmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0
LXZpZGVvLWZyYW1lLWxvYWRzdGFydC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK1JV
Tih2aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGNhbGxiYWNrKSkKK1JVTih2aWRlby5z
cmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKSkKK1Byb21pc2UgcmVz
b2x2ZWQgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3Jl
cXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1
ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MGIzZjFhOGM2MTFh
MjZmY2QwYTU0ZWVlMGZiMDJjNTVlNjZmNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC5odG1sCkBAIC0wLDAgKzEsMjcg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+cmVxdWVzdC12
aWRlby1mcmFtZS1sb2Fkc3RhcnQ8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSJ2aWRlby10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0ibWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdD4KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5j
IGV2ZW50ID0+IHsKKyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgIGxldCB2
aWRlb0ZyYW1lUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJh
Y2soY2FsbGJhY2spKScpOworICAgICAgICAgICAgdmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxs
YmFjayhyZXNvbHZlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBm
aW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKScpOworCisgICAgICAgIGF3YWl0
IHNob3VsZFJlc29sdmUodmlkZW9GcmFtZVByb21pc2UpOworCisgICAgICAgIGVuZFRlc3QoKTsK
KyAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx2aWRlbyBtdXRl
ZD48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWst
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhMDE1ZjI2YjgzYWM5OWFmZjMwNTY4YjMyZTY2OTQx
NTA2NGM3NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZp
ZGVvLWZyYW1lLXNlZWstZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorCitSVU4odmlkZW8u
c3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0IikpCitFVkVOVChjYW5w
bGF5dGhyb3VnaCkKK1JVTih2aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGNhbGxiYWNr
KSkKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDAuNSkKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK0VO
RCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8t
ZnJhbWUtc2Vlay5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1z
ZWVrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTkyNThmMDM2MzhjY2Y4YTZjOGYzNDYwZDcxNDMzNGE0Nzkw
OTU4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8t
ZnJhbWUtc2Vlay5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgICA8dGl0bGU+cmVxdWVzdC12aWRlby1mcmFtZS1zZWVrPC90aXRsZT4KKyAg
ICA8c2NyaXB0IHNyYz0idmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Im1lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2
ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyBldmVudCA9PiB7CisgICAgICAgIGZpbmRNZWRpYUVs
ZW1lbnQoKTsKKworICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVv
IiwgImNvbnRlbnQvdGVzdCIpJyk7CisKKyAgICAgICAgYXdhaXQgd2FpdEZvcih2aWRlbywgJ2Nh
bnBsYXl0aHJvdWdoJyk7CisKKyAgICAgICAgbGV0IHZpZGVvRnJhbWVQcm9taXNlID0gbmV3IFBy
b21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgY29uc29sZVdyaXRlKCdS
VU4odmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhjYWxsYmFjaykpJyk7CisgICAgICAg
ICAgICB2aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKHJlc29sdmUpOworICAgICAgICB9
KTsKKworICAgICAgICBydW4oJ3ZpZGVvLmN1cnJlbnRUaW1lID0gMC41Jyk7CisKKyAgICAgICAg
YXdhaXQgc2hvdWxkUmVzb2x2ZSh2aWRlb0ZyYW1lUHJvbWlzZSk7CisKKyAgICAgICAgZW5kVGVz
dCgpOworICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHZpZGVv
IG11dGVkPjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQo=
</data>
<flag name="commit-queue"
          id="474653"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448720</attachid>
            <date>2022-01-09 14:29:32 -0800</date>
            <delta_ts>2022-01-09 16:26:40 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235006-20220109142931.patch</filename>
            <type>text/plain</type>
            <size>44398</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWFmMDU0ZjhlOGI2MjYx
YzcyNmFjMjc1Mzg0ZWRmZjYzODdlOGY3OS4uNDAzNTBiYzQ2NmI2NTk0MWU5YzU0NjYxN2ZjOTU4
OTcwMDBjY2Y1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIyLTAxLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gclZGQygpIGlz
bid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
bG9hZHN0YXJ0Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sCisKKyAgICAgICAgQWRkIGEgbmV3IHV0aWxpdHkgY2xhc3MsIFF1ZXVlZFZpZGVv
T3V0cHV0LCB3aGljaCB3aWxsIHB1bGwgcGl4ZWwgYnVmZmVycyBvdXQgb2YgYW4gQVZQbGF5ZXJJ
dGVtVmlkZW9PdXRwdXQKKyAgICAgICAgcHJlLWVtcHRpdmVseS4gT25jZSB0aG9zZSBwaXhlbCBi
dWZmZXJzIGFyZSBlbnF1ZXVlZCBsb2NhbGx5LCB0aGVpciBhc3NvY2lhdGVkIHRpbWluZyBpbmZv
cm1hdGlvbiBjYW4gYmUgdXNlZCB0bworICAgICAgICBmaXJlIGEgY2FsbGJhY2sgZm9yIHRoYXQg
YnVmZmVyJ3MgZGlzcGxheSB0aW1lLgorCisgICAgICAgIFByZXZpb3VzbHksIHBhaW50cyB3ZXJl
IGJsb2NrZWQgZnJvbSBwdWxsaW5nIG5ldyBwaXhlbCBidWZmZXJzIGZyb20gdGhlIHZpZGVvIG91
dHB1dC4gV2l0aCB0aGUgUXVldWVkVmlkZW9PdXRwdXQKKyAgICAgICAgY2xhc3MsIHRoaXMgaXMg
bm8gbG9uZ2VyIG5lY2Vzc2FyeS4gVGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHdpbGwgbm90aWZ5IGl0
cyBjbGllbnQgd2hlbiB0aGUgaW1hZ2UgZm9yIGN1cnJlbnRUaW1lCisgICAgICAgIGNoYW5nZXMs
IGFuZCBvdGhlciBjbGllbnRzIGNhbiBmcmVlbHkgYXNrIGZvciB0aGUgY3VycmVudFRpbWUncyBp
bWFnZS4KKworICAgICAgICBUbyBjdXJiIHJ1bmF3YXkgbWVtb3J5IGdyb3d0aCwgZnJhbWVzIGFy
ZSBwdXJnZWQgYXMgc29vbiBhcyBhIG5ldyBpbWFnZSBmb3IgdGhlIGN1cnJlbnQgdGltZSBpcyBh
dmFpbGFibGUsIGFuZCB3aGVuCisgICAgICAgIHRoZSB2aWRlbyBvdXRwdXQgc2lnbmFscyB0aGF0
IGl0cyBvd24gcXVldWVzIHdlcmUgcHVyZ2VkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFz
QXZhaWxhYmxlVmlkZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdGFydFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb1RyYWNrcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRl
b091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpkZXN0cm95VmlkZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdFBpeGVsQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnZpZGVvT3V0
cHV0SGFzQXZhaWxhYmxlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb2xv
clNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Om91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Z2xv
YmFsUHVsbERlbGVnYXRlUXVldWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRh
V2lsbENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVsZWdhdGUg
aW5pdFdpdGhQbGF5ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVs
ZWdhdGUgb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSBvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6XSk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVk
VmlkZW9PdXRwdXQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW06IEFkZGVkLgorICAgICAgICAoLVtXZWJR
dWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIGluaXRXaXRoUGFyZW50Ol0pOgorICAgICAgICAoLVtX
ZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2U6XSk6
CisgICAgICAgICgtW1dlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgb3V0cHV0U2VxdWVuY2VX
YXNGbHVzaGVkOl0pOgorICAgICAgICAoLVtXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG9i
c2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAg
IChXZWJDb3JlOjpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlF1ZXVlZFZpZGVvT3V0cHV0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlk
ZW9PdXRwdXQ6OlF1ZXVlZFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZp
ZGVvT3V0cHV0Ojp+UXVldWVkVmlkZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVk
VmlkZW9PdXRwdXQ6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVjbHR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6Omhhc0ltYWdlRm9yVGltZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6dGFrZVZpZGVvRnJhbWVF
bnRyeUZvclRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmFkZEN1
cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRl
b091dHB1dDo6Y29uZmlndXJlTmV4dEltYWdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UXVldWVkVmlkZW9PdXRwdXQ6OmltYWdlRm9yQ3VycmVudFRpbWVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjphZGRWaWRlb0ZyYW1lRW50cmllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VWaWRlb0ZyYW1lRW50cmllcyk6
CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VJbWFnZXNCZWZvcmVU
aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpyYXRlQ2hhbmdlZCk6
CisKIDIwMjEtMTItMTQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1JlZmFjdG9yXSBBZG9wdCBMb2dnZXJIZWxwZXIgaW4gTG9nZ2luZyBFTUUgY2xhc3Nlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKaW5kZXggMDk4NWFkMDZmMjc5NDkzNjg1MTI2ZTE2Y2UyMjAxOGY0NTU0
ZDA5OC4uN2IyMjgzOGMzZmU4NjhjMjBmYWQ4YjdmMmJkNGViMDFkY2I0YjM2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDEtMDggIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSByVkZDKCkgaXNuJ3QgY2FsbGVkIGZv
ciBpbml0aWFsIHZpZGVvIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNTAwNgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4K
KworICAgICAgICAqIHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg6CisKIDIwMjItMDEt
MDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4NzY5OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmgKaW5kZXggOGI3ZmYxMjM3YTBjOGMy
MmY4ODJmYTBiZmVlZThiZDNhZDRjYjcxMi4uNGY5Y2JlNmQzZDI3ZWM3ZDFhM2RkN2UxZDgyNzcw
ZTM3MTg4NDE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
QVZGb3VuZGF0aW9uU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
QVZGb3VuZGF0aW9uU1BJLmgKQEAgLTQwLDkgKzQwLDEwIEBACiAjaW1wb3J0IDxBVkZvdW5kYXRp
b24vQVZNZWRpYVNlbGVjdGlvbkdyb3VwX1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVk91dHB1dENvbnRleHRfUHJpdmF0ZS5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWT3V0
cHV0RGV2aWNlLmg+Ci0jaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJfUHJpdmF0ZS5oPgor
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVySXRlbU91dHB1dF9Qcml2YXRlLmg+CiAjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtX1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWRm91
bmRhdGlvbi9BVlBsYXllckxheWVyX1ByaXZhdGUuaD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
VlBsYXllcl9Qcml2YXRlLmg+CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQpAQCAtNjYsNiArNjcsNyBAQCBOU19BU1NVTUVfTk9O
TlVMTF9FTkQKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVTZXNzaW9uLmg+CiAjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXIuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBs
YXllckl0ZW0uaD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1PdXRwdXQuaD4K
IAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0lOVEVSU1RJVElBTF9FVkVOVFMpCiAjaW1wb3J0IDxB
VkZvdW5kYXRpb24vQVZQbGF5ZXJJbnRlcnN0aXRpYWxFdmVudENvbnRyb2xsZXIuaD4KQEAgLTky
LDYgKzk0LDExIEBAIHR5cGVkZWYgTlNTdHJpbmcgKiBBVlZpZGVvUmFuZ2UgTlNfVFlQRURfRU5V
TTsKIEBlbmQKICNlbmRpZgogCitAaW50ZXJmYWNlIEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IChB
VlBsYXllckl0ZW1WaWRlb091dHB1dEVhcmxpZXN0VGltZSkKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgQ01UaW1lIGVhcmxpZXN0QXZhaWxhYmxlUGl4ZWxCdWZmZXJJdGVtVGltZTsK
Ky0gKHZvaWQpcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3Nz
aWJsZTsKK0BlbmQKKwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpIHx8IFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjViN2Mz
OTA4N2EzNzJjYzQxMWU3OTgwZGRkMjM1M2I0YmVkMTk0OS4uMWM5YzFkMGJiMTYxNzgyODVhZWYz
YTFiMTFkOWJkMzc0NzRlZTMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQ0Niw2ICs0NDQ2LDggQEAKIAkJQ0QxRjlCNEQy
NzBEMDNBOTAwNjE3RUI2IC8qIFNjcm9sbEV4dGVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5QjRDMjcwRDAzQTkwMDYxN0VCNiAvKiBTY3Jv
bGxFeHRlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0QxRjlCN0QyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlC
N0MyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEMUY5QjgwMjcwRTY3
MUEwMDYxN0VCNiAvKiBTVkdFbGVtZW50SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlCN0YyNzBFNjcxQTAwNjE3RUI2IC8qIFNWR0Vs
ZW1lbnRJbmxpbmVzLmggKi87IH07CisJCUNEMjBFRDNDMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1
ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0QyMEVEM0EyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggKi87
IH07CisJCUNEMjBFRDNEMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjBFRDNCMjc4
NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSAqLzsgfTsKIAkJQ0QyMjVDMEIx
QzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDIyNUMwOTFDNDZGQkY0MDAxNDA3NjEg
LyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSAqLzsgfTsKIAkJQ0QyMjVDMEMxQzQ2RkJGNDAwMTQw
NzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEMjI1QzBBMUM0NkZCRjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNV
UkxTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0QyN0FFNTAyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdBRTRF
MjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1ODU2LDYgKzE1ODU4LDgg
QEAKIAkJQ0QxRjlCNzAyNzBERkE3RjAwNjE3RUI2IC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5p
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0QxRjlCN0MyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVt
ZW50SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQW5jaG9yRWxlbWVudElubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxRjlCN0YyNzBFNjcxQTAwNjE3RUI2IC8q
IFNWR0VsZW1lbnRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0VsZW1lbnRJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjBFRDNBMjc4NzhGRkIwMDM4QkU0NCAv
KiBRdWV1ZWRWaWRlb091dHB1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWV1ZWRWaWRlb091dHB1dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDIwRUQzQjI3ODc4RkZCMDAzOEJFNDQg
LyogUXVldWVkVmlkZW9PdXRwdXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBRdWV1ZWRWaWRl
b091dHB1dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyMjVDMDkxQzQ2RkJG
NDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDIyNUMwQTFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJM
U2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNVUkxT
ZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMjdBRTRFMjJBOTg2ODcw
MDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdl
Um90YXRpb25TZXNzaW9uVlQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwNTk5
LDYgKzMwNjAzLDggQEAKIAkJCQlDREM4QjVBNTE4MDQ3NEY3MDAxNkU2ODUgLyogTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhCNUE0MTgwNDc0RjcwMDE2RTY4NSAvKiBN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tICovLAogCQkJCTdBMjlGNTcxMThDNjk1MTQwMDRE
MEY4MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggKi8sCisJCQkJQ0QyMEVEM0Ey
Nzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggKi8sCisJCQkJQ0QyMEVEM0Iy
Nzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0Lm1tICovLAogCQkJCUNERjk5NEZB
MjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggKi8sCiAJCQkJ
Q0RGOTk0RkIyNEMxMkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0g
Ki8sCiAJCQkJQ0RDOEI1QTkxODA0N0ZGMTAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLmggKi8sCkBAIC0zNjU2Nyw2ICszNjU3Myw3IEBACiAJCQkJRUIwRkI3MEQyNzBEMEIy
RTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTgzQzFGNTk0MUVERjY5RDMwMDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2Fj
aGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMjBFRDNDMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1
ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1RTMxRjQxRTBDQjBCNTAwNEIz
NzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJBRUU5MkMyMjM4OEE3RDAw
NDE1N0E5IC8qIFF1aXJrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5RTM3MTcxMzczNkE2NjAw
QjlFOTE5IC8qIFF1b3RlZFByaW50YWJsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODU0Nyw2ICsz
ODU1NCw3IEBACiAJCQkJQUExMkRGNDkxNzQzREY4MzAwNERBRkRGIC8qIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTI5QTMwMUNCRjc0RDQw
MDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNEQTI5QTE2MUNCREE1NkMwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRDIwRUQzRDI3ODc4RkZCMDAzOEJFNDQgLyog
UXVldWVkVmlkZW9PdXRwdXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTkyNDI0OTIxMjdCOTNF
MDA2MzRGQ0YgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0gaW4gU291cmNl
cyAqLywKIAkJCQkwNzFDMDA0QjI3MEI4NjQ5MDBEMDI3QzcgLyogUmVwbGF5S2l0Q2FwdHVyZVNv
dXJjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMkIxQUVDMjIzOTdFQkMwMEI5MUNGNyAvKiBS
ZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aAppbmRleCAxZTY1NzU3MjQ2NTQ5NzM0M2NkZTJhMjRkOGYwZGM2YjRlMDI2N2UxLi5lZWI4ODNk
NzdjNjYyMDMyYTM5MDkyNjAwM2Q5ODNhMjNhZjAwZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8Q29yZU1lZGlhL0NNVGltZS5oPgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL09ic2VydmVyLmg+CiAKIE9CSkNfQ0xBU1MgQVZBc3NldEltYWdlR2VuZXJhdG9yOwogT0JK
Q19DTEFTUyBBVkFzc2V0VHJhY2s7CkBAIC02Nyw2ICs2OCw3IEBAIGNsYXNzIEluYmFuZE1ldGFk
YXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CiBjbGFz
cyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzsKIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1Y7CitjbGFzcyBRdWV1ZWRWaWRlb091dHB1dDsKIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBWaWRlb0xheWVyTWFuYWdlck9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakM7CkBAIC0zNDcsNyArMzQ5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0Vmlk
ZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wVmlkZW9GcmFt
ZU1ldGFkYXRhR2F0aGVyaW5nKCkgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1l
TWV0YWRhdGE+IHZpZGVvRnJhbWVNZXRhZGF0YSgpIGZpbmFsIHsgcmV0dXJuIHN0ZDo6ZXhjaGFu
Z2UobV92aWRlb0ZyYW1lTWV0YWRhdGEsIHsgfSk7IH0KLSAgICB2b2lkIGNoZWNrTmV3VmlkZW9G
cmFtZU1ldGFkYXRhKENNVGltZSk7CisgICAgdm9pZCBjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0
YSgpOwogCiAgICAgUmV0YWluUHRyPEFWVVJMQXNzZXQ+IG1fYXZBc3NldDsKICAgICBSZXRhaW5Q
dHI8QVZQbGF5ZXI+IG1fYXZQbGF5ZXI7CkBAIC0zNjcsNyArMzY5LDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAgICAgUmV0YWluUHRyPEFWQXNzZXRJbWFnZUdlbmVyYXRvcj4gbV9pbWFnZUdlbmVy
YXRvcjsKLSAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ+IG1fdmlkZW9PdXRw
dXQ7CisgICAgUmVmUHRyPFF1ZXVlZFZpZGVvT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OwogICAgIFJl
dGFpblB0cjxXZWJDb3JlQVZGUHVsbERlbGVnYXRlPiBtX3ZpZGVvT3V0cHV0RGVsZWdhdGU7CiAg
ICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IG1fbGFzdFBpeGVsQnVmZmVyOwogICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gbV9sYXN0SW1hZ2U7CkBAIC00NjQsNiArNDY2LDcgQEAgcHJpdmF0
ZToKICAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVNZXRhZGF0YT4gbV92aWRlb0ZyYW1lTWV0
YWRhdGE7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPE5TVGltZUludGVydmFsPiBtX2NhY2hl
ZFNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWU7CiAgICAgbXV0YWJsZSBzdGQ6Om9w
dGlvbmFsPE5TVGltZUludGVydmFsPiBtX2NhY2hlZExpdmVVcGRhdGVJbnRlcnZhbDsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8T2JzZXJ2ZXI8dm9pZCgpPj4gbV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2Jz
ZXJ2ZXI7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBjMDY3Y2NlODA2ODZm
N2ExYmM1NDE0YmFmNzdmNzUyNTJiZjM0MmM3Li45MGYzZjRlOTU5YmNmN2U2NDZkZWE5ZGZkYmVi
ZWFhYjRlNWUwYWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTU4LDYgKzU4LDcgQEAK
ICNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVRleHRUcmFjay5o
IgogI2ltcG9ydCAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJRdWV1ZWRWaWRlb091
dHB1dC5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJT
Y3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbXBvcnQgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC0y
MDUsMTYgKzIwNiw2IEBAIC0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpcGxheWVyOwogLSAoQk9PTClyZXNvdXJjZUxvYWRl
cjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgc2hvdWxkV2FpdEZvckxv
YWRpbmdPZlJlcXVlc3RlZFJlc291cmNlOihBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAq
KWxvYWRpbmdSZXF1ZXN0OwogQGVuZAogCi1AaW50ZXJmYWNlIFdlYkNvcmVBVkZQdWxsRGVsZWdh
dGUgOiBOU09iamVjdDxBVlBsYXllckl0ZW1PdXRwdXRQdWxsRGVsZWdhdGU+IHsKLSAgICBCaW5h
cnlTZW1hcGhvcmUgbV9zZW1hcGhvcmU7Ci19Ci0tIChpZClpbml0V2l0aFBsYXllcjooV2Vha1B0
cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiYmKXBsYXllcjsKLS0gKHZvaWQp
b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQbGF5ZXJJdGVtT3V0cHV0ICopc2VuZGVyOwot
LSAodm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KEFWUGxheWVySXRlbU91dHB1dCAqKW91
dHB1dDsKLQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCaW5hcnlTZW1hcGhvcmUm
IHNlbWFwaG9yZTsKLUBlbmQKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIFN0cmluZyBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhBVlBsYXllclRpbWVDb250cm9sU3RhdHVzIGVudW1l
cmF0aW9uVmFsdWUpCiB7CkBAIC0yNjEsMTYgKzI1Miw2IEBAIHN0YXRpYyBkaXNwYXRjaF9xdWV1
ZV90IGdsb2JhbExvYWRlckRlbGVnYXRlUXVldWUoKQogICAgIHJldHVybiBnbG9iYWxRdWV1ZTsK
IH0KIAotc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUHVsbERlbGVnYXRlUXVldWUoKQot
ewotICAgIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFF1ZXVlOwotICAgIHN0YXRpYyBk
aXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwg
XnsKLSAgICAgICAgZ2xvYmFsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVB
VkZQdWxsRGVsZWdhdGUgcXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOwotICAgIH0pOwot
ICAgIHJldHVybiBnbG9iYWxRdWV1ZTsKLX0KLQogc3RhdGljIHZvaWQgcmVnaXN0ZXJGb3JtYXRS
ZWFkZXJJZk5lY2Vzc2FyeSgpCiB7CiAjaWYgRU5BQkxFKFdFQk1fRk9STUFUX1JFQURFUikKQEAg
LTQ2OSw3ICs0NTAsOCBAQCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp+TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQygpCiAgICAgZm9yIChhdXRvJiBwYWlyIDog
bV9yZXNvdXJjZUxvYWRlck1hcCkKICAgICAgICAgcGFpci52YWx1ZS0+aW52YWxpZGF0ZSgpOwog
Ci0gICAgW21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bmlsIHF1ZXVlOjBdOworICAgIGlmICht
X3ZpZGVvT3V0cHV0KQorICAgICAgICBtX3ZpZGVvT3V0cHV0LT5pbnZhbGlkYXRlKCk7CiAKICAg
ICBpZiAobV92aWRlb0xheWVyKQogICAgICAgICBkZXN0cm95VmlkZW9MYXllcigpOwpAQCAtNzAy
LDcgKzY4NCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFz
QXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CiAgICAgaWYgKGN1cnJlbnRSZW5kZXJpbmdNb2Rl
KCkgPT0gTWVkaWFSZW5kZXJpbmdNb2RlOjpNZWRpYVJlbmRlcmluZ1RvTGF5ZXIpCiAgICAgICAg
IHJldHVybiBtX2NhY2hlZElzUmVhZHlGb3JEaXNwbGF5OwogCi0gICAgaWYgKG1fdmlkZW9PdXRw
dXQgJiYgKG1fbGFzdFBpeGVsQnVmZmVyIHx8IFttX3ZpZGVvT3V0cHV0IGhhc05ld1BpeGVsQnVm
ZmVyRm9ySXRlbVRpbWU6W21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXV0pKQorICAgIGlmICht
X3ZpZGVvT3V0cHV0ICYmIChtX2xhc3RQaXhlbEJ1ZmZlciB8fCBtX3ZpZGVvT3V0cHV0LT5oYXNJ
bWFnZUZvclRpbWUoY3VycmVudE1lZGlhVGltZSgpKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgcmV0dXJuIG1fdmlkZW9GcmFtZUhhc0RyYXduOwpAQCAtMTQ0NCwzNCArMTQyNiwzMSBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtUGF1c2Vk
KCkgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdGFy
dFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpCiB7Ci0gICAgQVNTRVJUKCFtX3ZpZGVvRnJh
bWVNZXRhZGF0YUdhdGhlcmluZ09ic2VydmVyIHx8IG1fYXZQbGF5ZXIpOwotICAgIG1faXNHYXRo
ZXJpbmdWaWRlb0ZyYW1lTWV0YWRhdGEgPSB0cnVlOworICAgIC8vIHJlcXVlc3RWaWRlb0ZyYW1l
Q2FsbGJhY2soKSBjYXJlcyBhYm91dCB0aGUgL25leHQvIGF2YWlsYWJsZSBmcmFtZS4gUHVsbCB0
aGUgY3VycmVudCBmcmFtZSBmcm9tCisgICAgLy8gdGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHNvIHBh
aW50cyBvZiB0aGUgY3VycmVudCBmcmFtZSBzdWNjZWVkOworICAgIHVwZGF0ZUxhc3RQaXhlbEJ1
ZmZlcigpOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgYSBDQURpc3BsYXlMaW5rIHRv
IGdldCB1cGRhdGVzIG9uIHJlbmRlcmluZywgZm9yIG5vdyB3ZSBlbXVsYXRlIHdpdGggYWRkUGVy
aW9kaWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbC4KLSAgICBtX3ZpZGVvRnJhbWVNZXRhZGF0YUdh
dGhlcmluZ09ic2VydmVyID0gW21fYXZQbGF5ZXIgYWRkUGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJ
bnRlcnZhbDpQQUw6OkNNVGltZU1ha2UoMSwgNjApIHF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCkgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0oQ01UaW1lIGN1
cnJlbnRUaW1lKSB7Ci0gICAgICAgIGVuc3VyZU9uTWFpblRocmVhZChbd2Vha1RoaXMsIGN1cnJl
bnRUaW1lXSB7Ci0gICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgd2Vh
a1RoaXMtPmNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKGN1cnJlbnRUaW1lKTsKLSAgICAgICAg
fSk7Ci0gICAgfV07CisgICAgbV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIgPSBXVEY6Om1h
a2VVbmlxdWU8T2JzZXJ2ZXI8dm9pZCgpPj4oW3RoaXNdIHsKKyAgICAgICAgbV9jdXJyZW50SW1h
Z2VDaGFuZ2VkT2JzZXJ2ZXIgPSBudWxscHRyOworICAgICAgICBjaGVja05ld1ZpZGVvRnJhbWVN
ZXRhZGF0YSgpOworICAgIH0pOworCisgICAgaWYgKG1fdmlkZW9PdXRwdXQpCisgICAgICAgIG1f
dmlkZW9PdXRwdXQtPmFkZEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcigqbV9jdXJyZW50SW1h
Z2VDaGFuZ2VkT2JzZXJ2ZXIpOworCisgICAgbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0
YSA9IHRydWU7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
Y2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoQ01UaW1lIGN1cnJlbnRUaW1lKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0
YSgpCiB7Ci0gICAgaWYgKCF1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSkKKyAgICBpZiAoIW1faXNH
YXRoZXJpbmdWaWRlb0ZyYW1lTWV0YWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZpZGVv
RnJhbWVNZXRhZGF0YSBtZXRhZGF0YTsKLSAgICBtZXRhZGF0YS53aWR0aCA9IG1fY2FjaGVkUHJl
c2VudGF0aW9uU2l6ZS53aWR0aCgpOwotICAgIG1ldGFkYXRhLmhlaWdodCA9IG1fY2FjaGVkUHJl
c2VudGF0aW9uU2l6ZS5oZWlnaHQoKTsKLSAgICBtZXRhZGF0YS5wcmVzZW50ZWRGcmFtZXMgPSAr
K21fc2FtcGxlQ291bnQ7Ci0gICAgbWV0YWRhdGEubWVkaWFUaW1lID0gUEFMOjpDTVRpbWVHZXRT
ZWNvbmRzKGN1cnJlbnRUaW1lKTsKLSAgICAvLyBGSVhNRTogcHJlc2VudGF0aW9uVGltZSBhbmQg
ZXhwZWN0ZWREaXNwbGF5VGltZSBtaWdodCBub3QgYWx3YXlzIGhhdmUgdGhlIHNhbWUgdmFsdWUs
IHdlIHNob3VsZCB0cnkgZ2V0dGluZyBtb3JlIHByZWNpc2UgdmFsdWVzLgotICAgIG1ldGFkYXRh
LnByZXNlbnRhdGlvblRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9j
aCgpLnNlY29uZHMoKTsKLSAgICBtZXRhZGF0YS5leHBlY3RlZERpc3BsYXlUaW1lID0gbWV0YWRh
dGEucHJlc2VudGF0aW9uVGltZTsKKyAgICBpZiAoIXVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpICYm
ICFtX3ZpZGVvRnJhbWVNZXRhZGF0YSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aWRlb0Zy
YW1lTWV0YWRhdGEgPSBtZXRhZGF0YTsKLSAgICBwbGF5ZXIoKS0+b25OZXdWaWRlb0ZyYW1lTWV0
YWRhdGEoV1RGTW92ZShtZXRhZGF0YSksIG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKKyAgICBw
bGF5ZXIoKS0+b25OZXdWaWRlb0ZyYW1lTWV0YWRhdGEoV1RGTW92ZSgqbV92aWRlb0ZyYW1lTWV0
YWRhdGEpLCBtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CisgICAgbV92aWRlb0ZyYW1lTWV0YWRh
dGEgPSB7IH07CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c3RvcFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpCkBAIC0yNTE4LDE3ICsyNDk3LDE0IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRw
dXQoKQogICAgIGlmICghbV9hdlBsYXllckl0ZW0gfHwgbV92aWRlb091dHB1dCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV92aWRlb091dHB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlBsYXll
ckl0ZW1WaWRlb091dHB1dEluc3RhbmNlKCkgaW5pdFdpdGhQaXhlbEJ1ZmZlckF0dHJpYnV0ZXM6
bmlsXSk7CisgICAgbV92aWRlb091dHB1dCA9IFF1ZXVlZFZpZGVvT3V0cHV0OjpjcmVhdGUobV9h
dlBsYXllckl0ZW0uZ2V0KCksIG1fYXZQbGF5ZXIuZ2V0KCkpOwogICAgIEFTU0VSVChtX3ZpZGVv
T3V0cHV0KTsKICAgICBpZiAoIW1fdmlkZW9PdXRwdXQpIHsKICAgICAgICAgRVJST1JfTE9HKExP
R0lERU5USUZJRVIsICItW0FWUGxheWVySXRlbVZpZGVvT3V0cHV0IGluaXRXaXRoUGl4ZWxCdWZm
ZXJBdHRyaWJ1dGVzOl0gZmFpbGVkISIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAg
bV92aWRlb091dHB1dERlbGVnYXRlID0gYWRvcHROUyhbW1dlYkNvcmVBVkZQdWxsRGVsZWdhdGUg
YWxsb2NdIGluaXRXaXRoUGxheWVyOip0aGlzXSk7Ci0gICAgW21fdmlkZW9PdXRwdXQgc2V0RGVs
ZWdhdGU6bV92aWRlb091dHB1dERlbGVnYXRlLmdldCgpIHF1ZXVlOmdsb2JhbFB1bGxEZWxlZ2F0
ZVF1ZXVlKCldOwotCi0gICAgW21fYXZQbGF5ZXJJdGVtIGFkZE91dHB1dDptX3ZpZGVvT3V0cHV0
LmdldCgpXTsKKyAgICBpZiAobV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIpCisgICAgICAg
IG1fdmlkZW9PdXRwdXQtPmFkZEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcigqbV9jdXJyZW50
SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIpOwogCiAgICAgc2V0TmVlZHNSZW5kZXJpbmdNb2RlQ2hhbmdl
ZCgpOwogfQpAQCAtMjUzOCwxMiArMjUxNCwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb091dHB1dCgpCiAgICAgaWYgKCFtX3ZpZGVvT3V0
cHV0KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9hdlBsYXllckl0ZW0pCi0gICAgICAg
IFttX2F2UGxheWVySXRlbSByZW1vdmVPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQoKV07Ci0KICAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIG1fdmlkZW9PdXRwdXQgPSAwOworICAg
IG1fdmlkZW9PdXRwdXQtPmludmFsaWRhdGUoKTsKKyAgICBtX3ZpZGVvT3V0cHV0ID0gbnVsbHB0
cjsKIAogICAgIHNldE5lZWRzUmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIH0KQEAgLTI1NTksMTIg
KzI1MzMsMjUgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRh
dGVMYXN0UGl4ZWxCdWZmZXIoKQogICAgICAgICBjcmVhdGVWaWRlb091dHB1dCgpOwogICAgIEFT
U0VSVChtX3ZpZGVvT3V0cHV0KTsKIAotICAgIENNVGltZSBjdXJyZW50VGltZSA9IFttX2F2UGxh
eWVySXRlbSBjdXJyZW50VGltZV07CisgICAgYXV0byBjdXJyZW50VGltZSA9IGN1cnJlbnRNZWRp
YVRpbWUoKTsKIAotICAgIGlmICghW21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4ZWxCdWZmZXJGb3JJ
dGVtVGltZTpjdXJyZW50VGltZV0pCisgICAgaWYgKCFtX3ZpZGVvT3V0cHV0LT5oYXNJbWFnZUZv
clRpbWUoY3VycmVudFRpbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2xhc3RQ
aXhlbEJ1ZmZlciA9IGFkb3B0Q0YoW21fdmlkZW9PdXRwdXQgY29weVBpeGVsQnVmZmVyRm9ySXRl
bVRpbWU6Y3VycmVudFRpbWUgaXRlbVRpbWVGb3JEaXNwbGF5Om5pbF0pOworICAgIGF1dG8gZW50
cnkgPSBtX3ZpZGVvT3V0cHV0LT50YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShjdXJyZW50VGlt
ZSk7CisgICAgbV9sYXN0UGl4ZWxCdWZmZXIgPSBXVEZNb3ZlKGVudHJ5LnBpeGVsQnVmZmVyKTsK
KworICAgIGlmIChtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhKSB7CisgICAgICAgIGF1
dG8gcHJlc2VudGF0aW9uVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVw
b2NoKCkuc2Vjb25kcygpIC0gKGN1cnJlbnRUaW1lIC0gZW50cnkuZGlzcGxheVRpbWUpLnRvRG91
YmxlKCk7CisgICAgICAgIG1fdmlkZW9GcmFtZU1ldGFkYXRhID0geworICAgICAgICAgICAgLndp
ZHRoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENWUGl4ZWxCdWZmZXJHZXRXaWR0aChtX2xhc3RQ
aXhlbEJ1ZmZlci5nZXQoKSkpLAorICAgICAgICAgICAgLmhlaWdodCA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKSks
CisgICAgICAgICAgICAucHJlc2VudGVkRnJhbWVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCsr
bV9zYW1wbGVDb3VudCksCisgICAgICAgICAgICAubWVkaWFUaW1lID0gZW50cnkuZGlzcGxheVRp
bWUudG9Eb3VibGUoKSwKKyAgICAgICAgICAgIC5wcmVzZW50YXRpb25UaW1lID0gcHJlc2VudGF0
aW9uVGltZSwKKyAgICAgICAgICAgIC5leHBlY3RlZERpc3BsYXlUaW1lID0gcHJlc2VudGF0aW9u
VGltZSwKKyAgICAgICAgfTsKKyAgICB9CiAKICAgICBpZiAobV9pbWFnZVJvdGF0aW9uU2Vzc2lv
bikKICAgICAgICAgbV9sYXN0UGl4ZWxCdWZmZXIgPSBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5y
b3RhdGUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwpAQCAtMjU4NCw3ICsyNTcxLDcgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb091dHB1dEhhc0F2YWls
YWJsZUZyYW1lKCkKICAgICBpZiAoIW1fdmlkZW9PdXRwdXQpCiAgICAgICAgIGNyZWF0ZVZpZGVv
T3V0cHV0KCk7CiAKLSAgICByZXR1cm4gW21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4ZWxCdWZmZXJG
b3JJdGVtVGltZTpbbV9hdlBsYXllckl0ZW0gY3VycmVudFRpbWVdXTsKKyAgICByZXR1cm4gbV92
aWRlb091dHB1dC0+aGFzSW1hZ2VGb3JUaW1lKFBBTDo6dG9NZWRpYVRpbWUoW21fYXZQbGF5ZXJJ
dGVtIGN1cnJlbnRUaW1lXSkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlIHR5cGUpCkBAIC0yNjAyLDcgKzI1
ODksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxh
c3RJbWFnZShVcGRhdGVUeXBlIHR5cGUpCiAgICAgLy8gQ2FsbHMgdG8gY29weVBpeGVsQnVmZmVy
Rm9ySXRlbVRpbWU6aXRlbVRpbWVGb3JEaXNwbGF5OiBtYXkgcmV0dXJuIG5pbCBpZiB0aGUgcGl4
ZWwgYnVmZmVyCiAgICAgLy8gZm9yIHRoZSByZXF1ZXN0ZWQgdGltZSBoYXMgYWxyZWFkeSBiZWVu
IHJldHJpZXZlZC4gSW4gdGhpcyBjYXNlLCB0aGUgbGFzdCB2YWxpZCBpbWFnZSAoaWYgYW55KQog
ICAgIC8vIHNob3VsZCBiZSBkaXNwbGF5ZWQuCi0gICAgaWYgKChtX2lzR2F0aGVyaW5nVmlkZW9G
cmFtZU1ldGFkYXRhIHx8ICF1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSkgJiYgKG1fbGFzdEltYWdl
IHx8ICFtX2xhc3RQaXhlbEJ1ZmZlcikpCisgICAgaWYgKCF1cGRhdGVMYXN0UGl4ZWxCdWZmZXIo
KSAmJiAobV9sYXN0SW1hZ2UgfHwgIW1fbGFzdFBpeGVsQnVmZmVyKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKCFtX3BpeGVsQnVmZmVyQ29uZm9ybWVyKSB7CkBAIC0yNjM3LDggKzI2MjQs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZp
ZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYgYwogCiBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJl
Zj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGl4ZWxCdWZmZXJGb3JDdXJy
ZW50VGltZSgpCiB7Ci0gICAgaWYgKCFtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhKQot
ICAgICAgICB1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKTsKKyAgICB1cGRhdGVMYXN0UGl4ZWxCdWZm
ZXIoKTsKIAogICAgIHJldHVybiBtX2xhc3RQaXhlbEJ1ZmZlcjsKIH0KQEAgLTI2NjksNyArMjY1
NSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndhaXRGb3JW
aWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQogICAgIHN0ZDo6b3B0aW9uYWw8UnVuTG9v
cDo6VGltZXI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4+IHRpbWVvdXRUaW1l
cjsKIAogICAgIGlmICghbV9ydW5Mb29wTmVzdGluZ0xldmVsKSB7Ci0gICAgICAgIFttX3ZpZGVv
T3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZVdpdGhBZHZhbmNlSW50
ZXJ2YWw6MF07CisgICAgICAgIE9ic2VydmVyPHZvaWQoKT4gd2FpdEZvclZpZGVvT3V0cHV0TWVk
aWFEYXRhV2lsbENoYW5nZU9ic2VydmVyKFt0aGlzXSB7CisgICAgICAgICAgICBpZiAobV9ydW5M
b29wTmVzdGluZ0xldmVsKQorICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5zdG9wKCk7
CisgICAgICAgIH0pOworICAgICAgICBtX3ZpZGVvT3V0cHV0LT5hZGRDdXJyZW50SW1hZ2VDaGFu
Z2VkT2JzZXJ2ZXIod2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZU9ic2VydmVy
KTsKIAogICAgICAgICB0aW1lb3V0VGltZXIuZW1wbGFjZShSdW5Mb29wOjptYWluKCksIFsmXSB7
CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwpAQCAtMjY5NiwxNSArMjY4Niw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d2FpdEZvclZpZGVv
T3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpCiB7Ci0gICAgaWYgKG1f
cnVuTG9vcE5lc3RpbmdMZXZlbCkgewotICAgICAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpCi0g
ICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7Ci0gICAgICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLnN0b3AoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfQor
ICAgIGNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCk7CiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkKQEAgLTQwODksMzcgKzQwNzEsNCBAQCAtICh2b2lkKXJlc291cmNl
TG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBkaWRDYW5jZWxM
b2FkaW5nUgogCiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlQVZGUHVsbERlbGVnYXRl
IHsKLSAgICBXZWFrUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM+IF9wbGF5ZXI7Ci19Ci0KLUBzeW50aGVzaXplIHNlbWFwaG9yZSA9IG1fc2VtYXBob3JlOwot
Ci0tIChpZClpbml0V2l0aFBsYXllcjooV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDPiYmKXBsYXllcgotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYg
KCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIF9wbGF5ZXIgPSBXVEZNb3ZlKHBsYXll
cik7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpb3V0cHV0TWVkaWFEYXRhV2lsbENo
YW5nZTooQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQgKilvdXRwdXQKLXsKLSAgICBVTlVTRURfUEFS
QU0ob3V0cHV0KTsKLSAgICBtX3NlbWFwaG9yZS5zaWduYWwoKTsKLSAgICBjYWxsT25NYWluVGhy
ZWFkKFtzZWxmLCBzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9XSB7Ci0gICAgICAgIGlm
IChfcGxheWVyKQotICAgICAgICAgICAgX3BsYXllci0+b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5n
ZSgpOwotICAgIH0pOwotfQotCi0tICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQ
bGF5ZXJJdGVtVmlkZW9PdXRwdXQgKilvdXRwdXQKLXsKLSAgICBVTlVTRURfUEFSQU0ob3V0cHV0
KTsKLSAgICAvLyBOby1vcC4KLX0KLQotQGVuZAotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVv
T3V0cHV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9RdWV1ZWRWaWRlb091dHB1dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiYWYwZWExMWU1YzRmYmUzMjRk
OTUyNWFkZjFiZGIzYzYzMzBhODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5oCkBA
IC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShW
SURFTykKKworI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRl
IDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1dlYWtIYXNoU2V0Lmg+CisKK09CSkNfQ0xBU1MgQVZQbGF5ZXI7CitPQkpDX0NMQVNTIEFW
UGxheWVySXRlbTsKK09CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ7CitPQkpDX0NM
QVNTIFdlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGU7CisKK3R5cGVkZWYgc3RydWN0IF9fQ1ZC
dWZmZXIgKkNWUGl4ZWxCdWZmZXJSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
UXVldWVkVmlkZW9PdXRwdXQKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFF1ZXVlZFZpZGVvT3V0
cHV0PgorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFF1ZXVlZFZpZGVvT3V0cHV0PiB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxRdWV1
ZWRWaWRlb091dHB1dD4gY3JlYXRlKEFWUGxheWVySXRlbSosIEFWUGxheWVyKik7CisgICAgflF1
ZXVlZFZpZGVvT3V0cHV0KCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAgICBib29sIGhh
c0ltYWdlRm9yVGltZShjb25zdCBNZWRpYVRpbWUmKSBjb25zdDsKKworICAgIHN0cnVjdCBWaWRl
b0ZyYW1lRW50cnkgeworICAgICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxC
dWZmZXI7CisgICAgICAgIE1lZGlhVGltZSBkaXNwbGF5VGltZTsKKyAgICB9OworICAgIFZpZGVv
RnJhbWVFbnRyeSB0YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShjb25zdCBNZWRpYVRpbWUmKTsK
KworICAgIHZvaWQgYWRkVmlkZW9GcmFtZUVudHJpZXMoVmVjdG9yPFZpZGVvRnJhbWVFbnRyeT4m
Jik7CisgICAgdm9pZCBwdXJnZVZpZGVvRnJhbWVFbnRyaWVzKCk7CisKKyAgICB1c2luZyBDdXJy
ZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKCk+OworICAgIHZvaWQgYWRk
Q3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKGNvbnN0IEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNl
cnZlciYpOworCisgICAgdXNpbmcgSW1hZ2VNYXAgPSBzdGQ6Om1hcDxNZWRpYVRpbWUsIFJldGFp
blB0cjxDVlBpeGVsQnVmZmVyUmVmPj47CisKKyAgICB2b2lkIHJhdGVDaGFuZ2VkKGZsb2F0KTsK
KworcHJpdmF0ZToKKyAgICBRdWV1ZWRWaWRlb091dHB1dChBVlBsYXllckl0ZW0qLCBBVlBsYXll
ciopOworCisgICAgdm9pZCBwdXJnZUltYWdlc0JlZm9yZVRpbWUoY29uc3QgTWVkaWFUaW1lJik7
CisgICAgdm9pZCBjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAgICB2b2lkIGNh
bmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworICAgIHZvaWQgbmV4dEltYWdlVGltZVJlYWNo
ZWQoKTsKKworICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW0+IG1fcGxheWVySXRlbTsKKyAgICBS
ZXRhaW5QdHI8QVZQbGF5ZXI+IG1fcGxheWVyOworICAgIFJldGFpblB0cjxXZWJRdWV1ZWRWaWRl
b091dHB1dERlbGVnYXRlPiBtX2RlbGVnYXRlOworICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW1W
aWRlb091dHB1dD4gbV92aWRlb091dHB1dDsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fdmlkZW9UaW1l
YmFzZU9ic2VydmVyOworICAgIFJldGFpblB0cjxpZD4gbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2Vy
dmVyOworCisgICAgSW1hZ2VNYXAgbV92aWRlb0ZyYW1lczsKKyAgICBXZWFrSGFzaFNldDxDdXJy
ZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXI+IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyczsK
KworICAgIGJvb2wgbV9wYXVzZWQgeyB0cnVlIH07Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
UXVldWVkVmlkZW9PdXRwdXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYmMwODM4
MTRjMDhjN2RlZWQ2MWM5MDc5YzIyYmUzZjUwNzhhNzdlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlk
ZW9PdXRwdXQubW0KQEAgLTAsMCArMSwzMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiUXVldWVkVmlkZW9PdXRwdXQuaCIKKworI2lmIEVOQUJMRShWSURF
TykKKworI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1PdXRwdXQuaD4KKyNpbmNs
dWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgorI2luY2x1ZGUg
PHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CisKKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29m
dExpbmsuaD4KKyNpbmNsdWRlIDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKwor
QGludGVyZmFjZSBXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIDogTlNPYmplY3Q8QVZQbGF5
ZXJJdGVtT3V0cHV0UHVsbERlbGVnYXRlPiB7CisgICAgV2Vha1B0cjxXZWJDb3JlOjpRdWV1ZWRW
aWRlb091dHB1dD4gX3BhcmVudDsKK30KKy0gKGlkKWluaXRXaXRoUGFyZW50OihXZWJDb3JlOjpR
dWV1ZWRWaWRlb091dHB1dCopcGFyZW50OworLSAodm9pZClvdXRwdXRNZWRpYURhdGFXaWxsQ2hh
bmdlOihBVlBsYXllckl0ZW1PdXRwdXQgKilvdXRwdXQ7CistICh2b2lkKW91dHB1dFNlcXVlbmNl
V2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0OworLSAodm9pZClvYnNlcnZl
VmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGlj
dGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkKiljb250ZXh0OworQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZQorLSAoaWQpaW5pdFdpdGhQYXJl
bnQ6KFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0KilwYXJlbnQKK3sKKyAgICBzZWxmID0gW3N1
cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9w
YXJlbnQgPSBwYXJlbnQ7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpb3V0cHV0TWVk
aWFEYXRhV2lsbENoYW5nZTooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0Cit7CisgICAgQVNT
RVJUKFtvdXRwdXQgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxheWVySXRlbVZpZGVvT3V0cHV0
Q2xhc3MoKV0pOworICAgIGF1dG8qIHZpZGVvT3V0cHV0ID0gKEFWUGxheWVySXRlbVZpZGVvT3V0
cHV0KilvdXRwdXQ7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OlZp
ZGVvRnJhbWVFbnRyeT4gdmlkZW9GcmFtZUVudHJpZXM7CisgICAgZG8geworICAgICAgICBDTVRp
bWUgZWFybGllc3RUaW1lID0gW3ZpZGVvT3V0cHV0IGVhcmxpZXN0QXZhaWxhYmxlUGl4ZWxCdWZm
ZXJJdGVtVGltZV07CisgICAgICAgIGlmIChDTVRJTUVfSVNfSU5WQUxJRChlYXJsaWVzdFRpbWUp
KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGFkb3B0
Q0YoW3ZpZGVvT3V0cHV0IGNvcHlQaXhlbEJ1ZmZlckZvckl0ZW1UaW1lOmVhcmxpZXN0VGltZSBp
dGVtVGltZUZvckRpc3BsYXk6bmlsXSk7CisgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpCisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICB2aWRlb0ZyYW1lRW50cmllcy5hcHBlbmQoeyBXVEZN
b3ZlKHBpeGVsQnVmZmVyKSwgUEFMOjp0b01lZGlhVGltZShlYXJsaWVzdFRpbWUpIH0pOworICAg
IH0gd2hpbGUgKHRydWUpOworCisgICAgaWYgKHZpZGVvRnJhbWVFbnRyaWVzLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3ZpZGVvRnJhbWVFbnRy
aWVzID0gV1RGTW92ZSh2aWRlb0ZyYW1lRW50cmllcyksIHBhcmVudCA9IF9wYXJlbnRdICgpIG11
dGFibGUgeworICAgICAgICBpZiAocGFyZW50KQorICAgICAgICAgICAgcGFyZW50LT5hZGRWaWRl
b0ZyYW1lRW50cmllcyhXVEZNb3ZlKHZpZGVvRnJhbWVFbnRyaWVzKSk7CisgICAgfSk7Cit9CisK
Ky0gKHZvaWQpb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOihBVlBsYXllckl0ZW1PdXRwdXQgKilv
dXRwdXQKK3sKKyAgICBBU1NFUlQoW291dHB1dCBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZQbGF5
ZXJJdGVtVmlkZW9PdXRwdXRDbGFzcygpXSk7CisgICAgYXV0byogdmlkZW9PdXRwdXQgPSAoQVZQ
bGF5ZXJJdGVtVmlkZW9PdXRwdXQqKW91dHB1dDsKKyAgICBbdmlkZW9PdXRwdXQgcmVxdWVzdE5v
dGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJsZV07CisKKyAgICBjYWxs
T25NYWluUnVuTG9vcChbcGFyZW50ID0gX3BhcmVudF0geworICAgICAgICBpZiAocGFyZW50KQor
ICAgICAgICAgICAgcGFyZW50LT5wdXJnZVZpZGVvRnJhbWVFbnRyaWVzKCk7CisgICAgfSk7Cit9
CisKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClv
YmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4
dAoreworICAgIGlmICghW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicmF0ZSJdKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvIHJhdGVWYWx1ZSA9IChOU051bWJlciopW2NoYW5nZSB2YWx1
ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsKKyAgICBBU1NFUlQoW3JhdGVWYWx1ZSBp
c0tpbmRPZkNsYXNzOk5TTnVtYmVyLmNsYXNzXSk7CisgICAgYXV0byByYXRlID0gcmF0ZVZhbHVl
LmZsb2F0VmFsdWU7CisKKyAgICBlbnN1cmVPbk1haW5SdW5Mb29wKFtwYXJlbnQgPSBfcGFyZW50
LCByYXRlXSB7CisgICAgICAgIGlmIChwYXJlbnQpCisgICAgICAgICAgICBwYXJlbnQtPnJhdGVD
aGFuZ2VkKHJhdGUpOworICAgIH0pOworfQorQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKQorewor
ICAgIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFF1ZXVlOworICAgIHN0YXRpYyBkaXNw
YXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsK
KyAgICAgICAgZ2xvYmFsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYlF1ZXVlZFZp
ZGVvT3V0cHV0RGVsZWdhdGUgcXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworICAgIH0p
OworICAgIHJldHVybiBnbG9iYWxRdWV1ZTsKK30KKworUmVmPFF1ZXVlZFZpZGVvT3V0cHV0PiBR
dWV1ZWRWaWRlb091dHB1dDo6Y3JlYXRlKEFWUGxheWVySXRlbSogaXRlbSwgQVZQbGF5ZXIqIHBs
YXllcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBRdWV1ZWRWaWRlb091dHB1dChpdGVt
LCBwbGF5ZXIpKTsKK30KKworUXVldWVkVmlkZW9PdXRwdXQ6OlF1ZXVlZFZpZGVvT3V0cHV0KEFW
UGxheWVySXRlbSogaXRlbSwgQVZQbGF5ZXIqIHBsYXllcikKKyAgICA6IG1fcGxheWVySXRlbShp
dGVtKQorICAgICwgbV9wbGF5ZXIocGxheWVyKQorICAgICwgbV9kZWxlZ2F0ZShhZG9wdE5TKFtb
V2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10p
KQoreworICAgIG1fdmlkZW9PdXRwdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZQbGF5ZXJJdGVt
VmlkZW9PdXRwdXRJbnN0YW5jZSgpIGluaXRXaXRoUGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOm5pbF0p
OworICAgIFttX3ZpZGVvT3V0cHV0IHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCkgcXVldWU6
Z2xvYmFsT3V0cHV0RGVsZWdhdGVRdWV1ZSgpXTsKKyAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0
Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKKworICAgIFtt
X3BsYXllckl0ZW0gYWRkT3V0cHV0Om1fdmlkZW9PdXRwdXQuZ2V0KCldOworCisgICAgW21fcGxh
eWVyIGFkZE9ic2VydmVyOm1fZGVsZWdhdGUuZ2V0KCkgZm9yS2V5UGF0aDpAInJhdGUiIG9wdGlv
bnM6KE5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgfCBOU0tleVZhbHVlT2JzZXJ2aW5nT3B0
aW9uSW5pdGlhbCkgY29udGV4dDpuaWxdOworCisgICAgbV92aWRlb1RpbWViYXNlT2JzZXJ2ZXIg
PSBbbV9wbGF5ZXIgYWRkUGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbDpQQUw6OkNNVGlt
ZU1ha2UoMSwgNjApIHF1ZXVlOmdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKSB1c2luZ0Jsb2Nr
Olt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwcm90ZWN0ZWREZWxlZ2F0ZSA9IG1fZGVs
ZWdhdGUsIHByb3RlY3RlZE91dHB1dCA9IG1fdmlkZW9PdXRwdXRdKENNVGltZSBjdXJyZW50VGlt
ZSkgbXV0YWJsZSB7CisKKyAgICAgICAgLy8gUGVyaW9kaWNhbGx5IGNoZWNrIGZvciBuZXcgYXZh
aWxhYmxlIHBpeGVsIGJ1ZmZlcnMuCisgICAgICAgIFtwcm90ZWN0ZWREZWxlZ2F0ZSBvdXRwdXRN
ZWRpYURhdGFXaWxsQ2hhbmdlOnByb3RlY3RlZE91dHB1dC5nZXQoKV07CisKKyAgICAgICAgLy8g
QW5kIHB1cmdlIHRoZSBiYWNrIGJ1ZmZlciBvZiBwYXN0IGZyYW1lcy4KKyAgICAgICAgY2FsbE9u
TWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gd2Vha1RoaXMsIHRpbWUgPSBQQUw6OnRvTWVkaWFUaW1l
KGN1cnJlbnRUaW1lKV0geworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAg
ICAgIHdlYWtUaGlzLT5wdXJnZUltYWdlc0JlZm9yZVRpbWUodGltZSk7CisgICAgICAgIH0pOwor
ICAgIH1dOworfQorCitRdWV1ZWRWaWRlb091dHB1dDo6flF1ZXVlZFZpZGVvT3V0cHV0KCkKK3sK
KyAgICBpbnZhbGlkYXRlKCk7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmludmFsaWRh
dGUoKQoreworICAgIGlmIChtX3ZpZGVvVGltZWJhc2VPYnNlcnZlcikgeworICAgICAgICBbbV9w
bGF5ZXIgcmVtb3ZlVGltZU9ic2VydmVyOm1fdmlkZW9UaW1lYmFzZU9ic2VydmVyLmdldCgpXTsK
KyAgICAgICAgbV92aWRlb1RpbWViYXNlT2JzZXJ2ZXIgPSBuaWw7CisgICAgfQorCisgICAgY2Fu
Y2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisKKyAgICBpZiAobV92aWRlb091dHB1dCkgewor
ICAgICAgICBbbV9wbGF5ZXJJdGVtIHJlbW92ZU91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsK
KyAgICAgICAgW21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bmlsIHF1ZXVlOm5pbF07CisgICAg
ICAgIG1fdmlkZW9PdXRwdXQgPSBuaWw7CisgICAgfQorCisgICAgaWYgKG1fcGxheWVyKSB7Cisg
ICAgICAgIFttX3BsYXllciByZW1vdmVPYnNlcnZlcjptX2RlbGVnYXRlLmdldCgpIGZvcktleVBh
dGg6QCJyYXRlIl07CisgICAgICAgIG1fcGxheWVyID0gbmlsOworICAgIH0KKworICAgIG1fcGxh
eWVySXRlbSA9IG5pbDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE1heWJlQ29uc3RNYXAsIHR5
cGVuYW1lIE1heWJlQ29uc3RJdGVyID0gZGVjbHR5cGUoTWF5YmVDb25zdE1hcCgpLmJlZ2luKCkp
PgorTWF5YmVDb25zdEl0ZXIgZmluZEltYWdlRm9yVGltZShNYXliZUNvbnN0TWFwJiBtYXAsIGNv
bnN0IE1lZGlhVGltZSYgdGltZSkKK3sKKyAgICAvLyBPdXRwdXRzIG9mIEFWUGxheWVySXRlbVZp
ZGVvT3V0cHV0IGhhdmUgYSBkaXNwbGF5IHRpbWUsIGJ1dCBub3QgYSBkdXJhdGlvbjsgdGhleSBh
cmUgdmFsaWQKKyAgICAvLyB1bnRpbCB0aGUgYXJyaXZhbCBvZiBhIGxhdGVyIGZyYW1lLiBGaW5k
IHRoaXMgZnJhbWUgZWZmaWNpZW50bHkgdXNpbmcgc2V0Ojp1cHBlcl9ib3VuZCB0byBmaW5kCisg
ICAgLy8gdGhlIG5leHQgZGlzcGxheWFibGUgZnJhbWUsIGFuZCB3YWxrIGJhY2t3YXJkcyBieSBv
bmUgdG8gZmluZCBhIGZyYW1lIGZvciB0aGUgdGFyZ2V0IHRpbWUuCisgICAgaWYgKG1hcC5lbXB0
eSgpKQorICAgICAgICByZXR1cm4gbWFwLmVuZCgpOworCisgICAgYXV0byBpdGVyID0gbWFwLnVw
cGVyX2JvdW5kKHRpbWUpOworICAgIGlmIChpdGVyID09IG1hcC5iZWdpbigpKQorICAgICAgICBy
ZXR1cm4gbWFwLmVuZCgpOworCisgICAgcmV0dXJuIC0taXRlcjsKK30KKworYm9vbCBRdWV1ZWRW
aWRlb091dHB1dDo6aGFzSW1hZ2VGb3JUaW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkgY29uc3QK
K3sKKyAgICByZXR1cm4gZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJhbWVzLCB0aW1lKSAhPSBt
X3ZpZGVvRnJhbWVzLmVuZCgpOworfQorCithdXRvIFF1ZXVlZFZpZGVvT3V0cHV0Ojp0YWtlVmlk
ZW9GcmFtZUVudHJ5Rm9yVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpIC0+IFZpZGVvRnJhbWVF
bnRyeQoreworICAgIGF1dG8gaXRlciA9IGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywg
dGltZSk7CisgICAgaWYgKGl0ZXIgPT0gbV92aWRlb0ZyYW1lcy5lbmQoKSkKKyAgICAgICAgcmV0
dXJuIHsgbnVsbHB0ciwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpIH07CisKKyAgICBWaWRlb0Zy
YW1lRW50cnkgZW50cnkgPSB7IFdURk1vdmUoaXRlci0+c2Vjb25kKSwgaXRlci0+Zmlyc3QgfTsK
KworICAgIC8vIFB1cmdlIGFsbCBmcmFtZXMgYmVmb3JlIGB0aW1lYCwgc28gdGhhdCByZXBlYXRl
ZCBjYWxscyB3aXRoIHRoZSBzYW1lIHRpbWUgZG9uJ3QgcmV0dXJuCisgICAgLy8gc3VjY2Vzc2l2
ZWx5IGVhcmxpZXIgaW1hZ2VzLgorICAgIG1fdmlkZW9GcmFtZXMuZXJhc2UobV92aWRlb0ZyYW1l
cy5iZWdpbigpLCArK2l0ZXIpOworCisgICAgcmV0dXJuIGVudHJ5OworfQorCit2b2lkIFF1ZXVl
ZFZpZGVvT3V0cHV0OjphZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoY29uc3QgQ3VycmVu
dEltYWdlQ2hhbmdlZE9ic2VydmVyJiBvYnNlcnZlcikKK3sKKyAgICBtX2N1cnJlbnRJbWFnZUNo
YW5nZWRPYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsKKyAgICBjb25maWd1cmVOZXh0SW1hZ2VUaW1l
T2JzZXJ2ZXIoKTsKKworICAgIFttX3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25PZk1l
ZGlhRGF0YUNoYW5nZUFzU29vbkFzUG9zc2libGVdOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0
cHV0Ojpjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKQoreworICAgIGlmIChtX25leHRJ
bWFnZVRpbWViYXNlT2JzZXJ2ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY3VycmVu
dFRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKFttX3BsYXllciBjdXJyZW50VGltZV0pOworICAgIGF1
dG8gaXRlciA9IGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywgY3VycmVudFRpbWUpOwor
ICAgIGlmIChpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkgfHwgKytpdGVyID09IG1fdmlkZW9G
cmFtZXMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbmV4dEltYWdlVGltZSA9
IGl0ZXItPmZpcnN0OworCisgICAgbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyID0gW21fcGxh
eWVyIGFkZEJvdW5kYXJ5VGltZU9ic2VydmVyRm9yVGltZXM6QFtbTlNWYWx1ZSB2YWx1ZVdpdGhD
TVRpbWU6UEFMOjp0b0NNVGltZShjdXJyZW50VGltZSldXSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxl
Z2F0ZVF1ZXVlKCkgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJv
dGVjdGVkRGVsZWdhdGUgPSBtX2RlbGVnYXRlLCBwcm90ZWN0ZWRPdXRwdXQgPSBtX3ZpZGVvT3V0
cHV0XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0g
V1RGTW92ZSh3ZWFrVGhpcyldIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAg
ICAgICAgICB3ZWFrVGhpcy0+bmV4dEltYWdlVGltZVJlYWNoZWQoKTsKKyAgICAgICAgfSk7Cisg
ICAgfV07Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmNhbmNlbE5leHRJbWFnZVRpbWVP
YnNlcnZlcigpCit7CisgICAgaWYgKCFtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIFttX3BsYXllciByZW1vdmVUaW1lT2JzZXJ2ZXI6bV9uZXh0SW1h
Z2VUaW1lYmFzZU9ic2VydmVyLmdldCgpXTsKKyAgICBtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2
ZXIgPSBuaWw7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6Om5leHRJbWFnZVRpbWVSZWFj
aGVkKCkKK3sKKyAgICBjYW5jZWxOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAgICBhdXRvIG9i
c2VydmVycyA9IHN0ZDo6ZXhjaGFuZ2UobV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzLCB7
IH0pOworICAgIG9ic2VydmVycy5mb3JFYWNoKFtdKGF1dG8mIG9ic2VydmVyKSB7IG9ic2VydmVy
KCk7IH0pOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjphZGRWaWRlb0ZyYW1lRW50cmll
cyhWZWN0b3I8VmlkZW9GcmFtZUVudHJ5PiYmIHZpZGVvRnJhbWVFbnRyaWVzKQoreworICAgIGJv
b2wgbmVlZHNJbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCA9IGZhbHNlOworICAgIGJvb2wgaGFz
Q3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycyA9IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2Vy
dmVycy5jb21wdXRlU2l6ZSgpOworICAgIE1lZGlhVGltZSBjdXJyZW50VGltZSA9IGhhc0N1cnJl
bnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMgPyBQQUw6OnRvTWVkaWFUaW1lKFttX3BsYXllciBjdXJy
ZW50VGltZV0pIDogTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpOworCisgICAgZm9yIChhdXRvJiBl
bnRyeSA6IHZpZGVvRnJhbWVFbnRyaWVzKSB7CisgICAgICAgIGlmIChoYXNDdXJyZW50SW1hZ2VD
aGFuZ2VkT2JzZXJ2ZXJzICYmIGVudHJ5LmRpc3BsYXlUaW1lIDw9IGN1cnJlbnRUaW1lKQorICAg
ICAgICAgICAgbmVlZHNJbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCA9IHRydWU7CisgICAgICAg
IG1fdmlkZW9GcmFtZXMuZW1wbGFjZShlbnRyeS5kaXNwbGF5VGltZSwgV1RGTW92ZShlbnRyeS5w
aXhlbEJ1ZmZlcikpOworICAgIH0KKworICAgIGlmIChuZWVkc0ltYWdlRm9yQ3VycmVudFRpbWVD
aGFuZ2VkKQorICAgICAgICBuZXh0SW1hZ2VUaW1lUmVhY2hlZCgpOworICAgIGVsc2UgaWYgKGhh
c0N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMpCisgICAgICAgIGNvbmZpZ3VyZU5leHRJbWFn
ZVRpbWVPYnNlcnZlcigpOworCisgICAgaWYgKG1fcGF1c2VkKQorICAgICAgICBbbV92aWRlb091
dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxl
XTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VWaWRlb0ZyYW1lRW50cmllcygp
Cit7CisgICAgY2FuY2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisgICAgbV92aWRlb0ZyYW1l
cy5jbGVhcigpOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpwdXJnZUltYWdlc0JlZm9y
ZVRpbWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lKQoreworICAgIG1fdmlkZW9GcmFtZXMuZXJhc2Uo
bV92aWRlb0ZyYW1lcy5iZWdpbigpLCBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFtZXMsIHRp
bWUpKTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6cmF0ZUNoYW5nZWQoZmxvYXQgcmF0
ZSkKK3sKKyAgICBtX3BhdXNlZCA9ICFyYXRlOworCisgICAgaWYgKG1fcGF1c2VkKQorICAgICAg
ICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nv
b25Bc1Bvc3NpYmxlXTsKK30KKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcxYmVjMjQyMjVmMjYy
NmZkYjRkOTAyODM3NDFmZjgwMzI5MjM3MGQuLmVmMDM4Njg5ZTg5ZDAzMTM5OTkxMTQxODEwMGYx
ZjNkNmY0YzUxYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0wMS0wOCAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIHJWRkMoKSBpc24ndCBj
YWxsZWQgZm9yIGluaXRpYWwgdmlkZW8gbG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgICogbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1l
LWxvYWRzdGFydC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZy
YW1lLXNlZWstZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZp
ZGVvLWZyYW1lLXNlZWsuaHRtbDogQWRkZWQuCisKIDIwMjItMDEtMDggIEFyY2FkeSBHb2xkbWlu
dHMtT3Jsb3YgIDxhZ29sZG1pbnRzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdIFVwZGF0
ZSB0ZXN0IGV4cGVjdGF0aW9ucyBmb3Iga25vd24gZmFpbHVyZXMuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGMwMmY2NmViYWJkZmI1NzRkOWY5ZmYxZDViODFmYzgwODkyMDM2
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJh
bWUtbG9hZHN0YXJ0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUlVOKHZpZGVvLnJl
cXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soY2FsbGJhY2spKQorUlVOKHZpZGVvLnNyYyA9IGZpbmRN
ZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpKQorUHJvbWlzZSByZXNvbHZlZCBPSwor
RU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRl
by1mcmFtZS1sb2Fkc3RhcnQuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8t
ZnJhbWUtbG9hZHN0YXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUwYjNmMWE4YzYxMWEyNmZjZDBhNTRl
ZWUwZmIwMmM1NWU2NmY2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3Jl
cXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5yZXF1ZXN0LXZpZGVvLWZyYW1l
LWxvYWRzdGFydDwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9InZpZGVvLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJtZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0PgorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4g
eworICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgbGV0IHZpZGVvRnJhbWVQ
cm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCdSVU4odmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhjYWxsYmFj
aykpJyk7CisgICAgICAgICAgICB2aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKHJlc29s
dmUpOworICAgICAgICB9KTsKKworICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9IGZpbmRNZWRpYUZp
bGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpJyk7CisKKyAgICAgICAgYXdhaXQgc2hvdWxkUmVz
b2x2ZSh2aWRlb0ZyYW1lUHJvbWlzZSk7CisKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0pOwor
ICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHZpZGVvIG11dGVkPjwvdmlkZW8+
Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1zZWVrLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmEwMTVmMjZiODNhYzk5YWZmMzA1NjhiMzJlNjY5NDE1MDY0Yzc1ZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACisKK1JVTih2aWRlby5zcmMgPSBmaW5k
TWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKSkKK0VWRU5UKGNhbnBsYXl0aHJvdWdo
KQorUlVOKHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soY2FsbGJhY2spKQorUlVOKHZp
ZGVvLmN1cnJlbnRUaW1lID0gMC41KQorUHJvbWlzZSByZXNvbHZlZCBPSworRU5EIE9GIFRFU1QK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1zZWVr
Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWsuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lOTI1OGYwMzYzOGNjZjhhNmM4ZjM0NjBkNzE0MzM0YTQ3OTA5NThhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1zZWVr
Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDx0aXRsZT5yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWs8L3RpdGxlPgorICAgIDxzY3JpcHQg
c3JjPSJ2aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0ibWVkaWEtZmls
ZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cignbG9hZCcsIGFzeW5jIGV2ZW50ID0+IHsKKyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwor
CisgICAgICAgIHJ1bigndmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVu
dC90ZXN0IiknKTsKKworICAgICAgICBhd2FpdCB3YWl0Rm9yKHZpZGVvLCAnY2FucGxheXRocm91
Z2gnKTsKKworICAgICAgICBsZXQgdmlkZW9GcmFtZVByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVz
b2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby5y
ZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGNhbGxiYWNrKSknKTsKKyAgICAgICAgICAgIHZpZGVv
LnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2socmVzb2x2ZSk7CisgICAgICAgIH0pOworCisgICAg
ICAgIHJ1bigndmlkZW8uY3VycmVudFRpbWUgPSAwLjUnKTsKKworICAgICAgICBhd2FpdCBzaG91
bGRSZXNvbHZlKHZpZGVvRnJhbWVQcm9taXNlKTsKKworICAgICAgICBlbmRUZXN0KCk7CisgICAg
fSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8dmlkZW8gbXV0ZWQ+PC92
aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="commit-queue"
          id="474655"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448721</attachid>
            <date>2022-01-09 17:29:25 -0800</date>
            <delta_ts>2022-01-10 00:00:49 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235006-20220109172924.patch</filename>
            <type>text/plain</type>
            <size>44641</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWFmMDU0ZjhlOGI2MjYx
YzcyNmFjMjc1Mzg0ZWRmZjYzODdlOGY3OS4uNDAzNTBiYzQ2NmI2NTk0MWU5YzU0NjYxN2ZjOTU4
OTcwMDBjY2Y1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDIyLTAxLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gclZGQygpIGlz
bid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
bG9hZHN0YXJ0Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sCisKKyAgICAgICAgQWRkIGEgbmV3IHV0aWxpdHkgY2xhc3MsIFF1ZXVlZFZpZGVv
T3V0cHV0LCB3aGljaCB3aWxsIHB1bGwgcGl4ZWwgYnVmZmVycyBvdXQgb2YgYW4gQVZQbGF5ZXJJ
dGVtVmlkZW9PdXRwdXQKKyAgICAgICAgcHJlLWVtcHRpdmVseS4gT25jZSB0aG9zZSBwaXhlbCBi
dWZmZXJzIGFyZSBlbnF1ZXVlZCBsb2NhbGx5LCB0aGVpciBhc3NvY2lhdGVkIHRpbWluZyBpbmZv
cm1hdGlvbiBjYW4gYmUgdXNlZCB0bworICAgICAgICBmaXJlIGEgY2FsbGJhY2sgZm9yIHRoYXQg
YnVmZmVyJ3MgZGlzcGxheSB0aW1lLgorCisgICAgICAgIFByZXZpb3VzbHksIHBhaW50cyB3ZXJl
IGJsb2NrZWQgZnJvbSBwdWxsaW5nIG5ldyBwaXhlbCBidWZmZXJzIGZyb20gdGhlIHZpZGVvIG91
dHB1dC4gV2l0aCB0aGUgUXVldWVkVmlkZW9PdXRwdXQKKyAgICAgICAgY2xhc3MsIHRoaXMgaXMg
bm8gbG9uZ2VyIG5lY2Vzc2FyeS4gVGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHdpbGwgbm90aWZ5IGl0
cyBjbGllbnQgd2hlbiB0aGUgaW1hZ2UgZm9yIGN1cnJlbnRUaW1lCisgICAgICAgIGNoYW5nZXMs
IGFuZCBvdGhlciBjbGllbnRzIGNhbiBmcmVlbHkgYXNrIGZvciB0aGUgY3VycmVudFRpbWUncyBp
bWFnZS4KKworICAgICAgICBUbyBjdXJiIHJ1bmF3YXkgbWVtb3J5IGdyb3d0aCwgZnJhbWVzIGFy
ZSBwdXJnZWQgYXMgc29vbiBhcyBhIG5ldyBpbWFnZSBmb3IgdGhlIGN1cnJlbnQgdGltZSBpcyBh
dmFpbGFibGUsIGFuZCB3aGVuCisgICAgICAgIHRoZSB2aWRlbyBvdXRwdXQgc2lnbmFscyB0aGF0
IGl0cyBvd24gcXVldWVzIHdlcmUgcHVyZ2VkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6fk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFz
QXZhaWxhYmxlVmlkZW9GcmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb0Z1bGxzY3JlZW5JbmxpbmVJbWFn
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzZXRWaWRlb0Z1bGxzY3JlZW5MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdGFydFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVWaWRlb1RyYWNrcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRl
b091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpkZXN0cm95VmlkZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdFBpeGVsQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnZpZGVvT3V0
cHV0SGFzQXZhaWxhYmxlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnBpeGVsQnVmZmVyRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjb2xv
clNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6Om91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Z2xv
YmFsUHVsbERlbGVnYXRlUXVldWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRh
V2lsbENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVsZWdhdGUg
aW5pdFdpdGhQbGF5ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVs
ZWdhdGUgb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSBvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6XSk6IERlbGV0
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVk
VmlkZW9PdXRwdXQuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW06IEFkZGVkLgorICAgICAgICAoLVtXZWJR
dWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIGluaXRXaXRoUGFyZW50Ol0pOgorICAgICAgICAoLVtX
ZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2U6XSk6
CisgICAgICAgICgtW1dlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgb3V0cHV0U2VxdWVuY2VX
YXNGbHVzaGVkOl0pOgorICAgICAgICAoLVtXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG9i
c2VydmVWYWx1ZUZvcktleVBhdGg6b2ZPYmplY3Q6Y2hhbmdlOmNvbnRleHQ6XSk6CisgICAgICAg
IChXZWJDb3JlOjpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6
OlF1ZXVlZFZpZGVvT3V0cHV0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlk
ZW9PdXRwdXQ6OlF1ZXVlZFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZp
ZGVvT3V0cHV0Ojp+UXVldWVkVmlkZW9PdXRwdXQpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVk
VmlkZW9PdXRwdXQ6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVjbHR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6Omhhc0ltYWdlRm9yVGltZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6dGFrZVZpZGVvRnJhbWVF
bnRyeUZvclRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmFkZEN1
cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRl
b091dHB1dDo6Y29uZmlndXJlTmV4dEltYWdlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UXVldWVkVmlkZW9PdXRwdXQ6OmltYWdlRm9yQ3VycmVudFRpbWVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjphZGRWaWRlb0ZyYW1lRW50cmllcyk6CisgICAg
ICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VWaWRlb0ZyYW1lRW50cmllcyk6
CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VJbWFnZXNCZWZvcmVU
aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpyYXRlQ2hhbmdlZCk6
CisKIDIwMjEtMTItMTQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1JlZmFjdG9yXSBBZG9wdCBMb2dnZXJIZWxwZXIgaW4gTG9nZ2luZyBFTUUgY2xhc3Nlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKaW5kZXggMDk4NWFkMDZmMjc5NDkzNjg1MTI2ZTE2Y2UyMjAxOGY0NTU0
ZDA5OC4uN2IyMjgzOGMzZmU4NjhjMjBmYWQ4YjdmMmJkNGViMDFkY2I0YjM2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjItMDEtMDggIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSByVkZDKCkgaXNuJ3QgY2FsbGVkIGZv
ciBpbml0aWFsIHZpZGVvIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNTAwNgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4K
KworICAgICAgICAqIHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg6CisKIDIwMjItMDEt
MDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4NzY5OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmgKaW5kZXggOGI3ZmYxMjM3YTBjOGMy
MmY4ODJmYTBiZmVlZThiZDNhZDRjYjcxMi4uNGY5Y2JlNmQzZDI3ZWM3ZDFhM2RkN2UxZDgyNzcw
ZTM3MTg4NDE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
QVZGb3VuZGF0aW9uU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2Ev
QVZGb3VuZGF0aW9uU1BJLmgKQEAgLTQwLDkgKzQwLDEwIEBACiAjaW1wb3J0IDxBVkZvdW5kYXRp
b24vQVZNZWRpYVNlbGVjdGlvbkdyb3VwX1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVk91dHB1dENvbnRleHRfUHJpdmF0ZS5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWT3V0
cHV0RGV2aWNlLmg+Ci0jaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJfUHJpdmF0ZS5oPgor
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVySXRlbU91dHB1dF9Qcml2YXRlLmg+CiAjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtX1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWRm91
bmRhdGlvbi9BVlBsYXllckxheWVyX1ByaXZhdGUuaD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
VlBsYXllcl9Qcml2YXRlLmg+CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQpAQCAtNjYsNiArNjcsNyBAQCBOU19BU1NVTUVfTk9O
TlVMTF9FTkQKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVTZXNzaW9uLmg+CiAjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXIuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBs
YXllckl0ZW0uaD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1PdXRwdXQuaD4K
IAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0lOVEVSU1RJVElBTF9FVkVOVFMpCiAjaW1wb3J0IDxB
VkZvdW5kYXRpb24vQVZQbGF5ZXJJbnRlcnN0aXRpYWxFdmVudENvbnRyb2xsZXIuaD4KQEAgLTky
LDYgKzk0LDExIEBAIHR5cGVkZWYgTlNTdHJpbmcgKiBBVlZpZGVvUmFuZ2UgTlNfVFlQRURfRU5V
TTsKIEBlbmQKICNlbmRpZgogCitAaW50ZXJmYWNlIEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IChB
VlBsYXllckl0ZW1WaWRlb091dHB1dEVhcmxpZXN0VGltZSkKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgQ01UaW1lIGVhcmxpZXN0QXZhaWxhYmxlUGl4ZWxCdWZmZXJJdGVtVGltZTsK
Ky0gKHZvaWQpcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3Nz
aWJsZTsKK0BlbmQKKwogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpIHx8IFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjViN2Mz
OTA4N2EzNzJjYzQxMWU3OTgwZGRkMjM1M2I0YmVkMTk0OS4uMWM5YzFkMGJiMTYxNzgyODVhZWYz
YTFiMTFkOWJkMzc0NzRlZTMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQ0Niw2ICs0NDQ2LDggQEAKIAkJQ0QxRjlCNEQy
NzBEMDNBOTAwNjE3RUI2IC8qIFNjcm9sbEV4dGVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5QjRDMjcwRDAzQTkwMDYxN0VCNiAvKiBTY3Jv
bGxFeHRlbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0QxRjlCN0QyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlC
N0MyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5lcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEMUY5QjgwMjcwRTY3
MUEwMDYxN0VCNiAvKiBTVkdFbGVtZW50SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlCN0YyNzBFNjcxQTAwNjE3RUI2IC8qIFNWR0Vs
ZW1lbnRJbmxpbmVzLmggKi87IH07CisJCUNEMjBFRDNDMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1
ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0QyMEVEM0EyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggKi87
IH07CisJCUNEMjBFRDNEMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjBFRDNCMjc4
NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSAqLzsgfTsKIAkJQ0QyMjVDMEIx
QzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDIyNUMwOTFDNDZGQkY0MDAxNDA3NjEg
LyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSAqLzsgfTsKIAkJQ0QyMjVDMEMxQzQ2RkJGNDAwMTQw
NzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEMjI1QzBBMUM0NkZCRjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNV
UkxTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQ0QyN0FFNTAyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdBRTRF
MjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1ODU2LDYgKzE1ODU4LDgg
QEAKIAkJQ0QxRjlCNzAyNzBERkE3RjAwNjE3RUI2IC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5p
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gTWVkaWFLZXlNZXNzYWdlRXZlbnRJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0QxRjlCN0MyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVt
ZW50SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQW5jaG9yRWxlbWVudElubGluZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxRjlCN0YyNzBFNjcxQTAwNjE3RUI2IC8q
IFNWR0VsZW1lbnRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0VsZW1lbnRJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjBFRDNBMjc4NzhGRkIwMDM4QkU0NCAv
KiBRdWV1ZWRWaWRlb091dHB1dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWV1ZWRWaWRlb091dHB1dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDIwRUQzQjI3ODc4RkZCMDAzOEJFNDQg
LyogUXVldWVkVmlkZW9PdXRwdXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBRdWV1ZWRWaWRl
b091dHB1dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyMjVDMDkxQzQ2RkJG
NDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDRDIyNUMwQTFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJM
U2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNVUkxT
ZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMjdBRTRFMjJBOTg2ODcw
MDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdl
Um90YXRpb25TZXNzaW9uVlQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwNTk5
LDYgKzMwNjAzLDggQEAKIAkJCQlDREM4QjVBNTE4MDQ3NEY3MDAxNkU2ODUgLyogTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNEQzhCNUE0MTgwNDc0RjcwMDE2RTY4NSAvKiBN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tICovLAogCQkJCTdBMjlGNTcxMThDNjk1MTQwMDRE
MEY4MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmggKi8sCisJCQkJQ0QyMEVEM0Ey
Nzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggKi8sCisJCQkJQ0QyMEVEM0Iy
Nzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0Lm1tICovLAogCQkJCUNERjk5NEZB
MjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmggKi8sCiAJCQkJ
Q0RGOTk0RkIyNEMxMkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0g
Ki8sCiAJCQkJQ0RDOEI1QTkxODA0N0ZGMTAwMTZFNjg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLmggKi8sCkBAIC0zNjU2Nyw2ICszNjU3Myw3IEBACiAJCQkJRUIwRkI3MEQyNzBEMEIy
RTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25PcHRpb25zSW5pdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTgzQzFGNTk0MUVERjY5RDMwMDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2Fj
aGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMjBFRDNDMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1
ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1RTMxRjQxRTBDQjBCNTAwNEIz
NzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJBRUU5MkMyMjM4OEE3RDAw
NDE1N0E5IC8qIFF1aXJrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5RTM3MTcxMzczNkE2NjAw
QjlFOTE5IC8qIFF1b3RlZFByaW50YWJsZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODU0Nyw2ICsz
ODU1NCw3IEBACiAJCQkJQUExMkRGNDkxNzQzREY4MzAwNERBRkRGIC8qIFBsYXRmb3JtU3BlZWNo
U3ludGhlc2l6ZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTI5QTMwMUNCRjc0RDQw
MDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNEQTI5QTE2MUNCREE1NkMwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlDRDIwRUQzRDI3ODc4RkZCMDAzOEJFNDQgLyog
UXVldWVkVmlkZW9PdXRwdXQubW0gaW4gU291cmNlcyAqLywKIAkJCQk0MTkyNDI0OTIxMjdCOTNF
MDA2MzRGQ0YgLyogUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlQ29jb2EubW0gaW4gU291cmNl
cyAqLywKIAkJCQkwNzFDMDA0QjI3MEI4NjQ5MDBEMDI3QzcgLyogUmVwbGF5S2l0Q2FwdHVyZVNv
dXJjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDMkIxQUVDMjIzOTdFQkMwMEI5MUNGNyAvKiBS
ZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
aAppbmRleCAxZTY1NzU3MjQ2NTQ5NzM0M2NkZTJhMjRkOGYwZGM2YjRlMDI2N2UxLi5lZWI4ODNk
NzdjNjYyMDMyYTM5MDkyNjAwM2Q5ODNhMjNhZjAwZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5o
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8Q29yZU1lZGlhL0NNVGltZS5oPgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL09ic2VydmVyLmg+CiAKIE9CSkNfQ0xBU1MgQVZBc3NldEltYWdlR2VuZXJhdG9yOwogT0JK
Q19DTEFTUyBBVkFzc2V0VHJhY2s7CkBAIC02Nyw2ICs2OCw3IEBAIGNsYXNzIEluYmFuZE1ldGFk
YXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CiBjbGFz
cyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzsKIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVy
Q1Y7CitjbGFzcyBRdWV1ZWRWaWRlb091dHB1dDsKIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXI7CiBjbGFzcyBWaWRlb0xheWVyTWFuYWdlck9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakM7CkBAIC0zNDcsNyArMzQ5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0Vmlk
ZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wVmlkZW9GcmFt
ZU1ldGFkYXRhR2F0aGVyaW5nKCkgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1l
TWV0YWRhdGE+IHZpZGVvRnJhbWVNZXRhZGF0YSgpIGZpbmFsIHsgcmV0dXJuIHN0ZDo6ZXhjaGFu
Z2UobV92aWRlb0ZyYW1lTWV0YWRhdGEsIHsgfSk7IH0KLSAgICB2b2lkIGNoZWNrTmV3VmlkZW9G
cmFtZU1ldGFkYXRhKENNVGltZSk7CisgICAgdm9pZCBjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0
YSgpOwogCiAgICAgUmV0YWluUHRyPEFWVVJMQXNzZXQ+IG1fYXZBc3NldDsKICAgICBSZXRhaW5Q
dHI8QVZQbGF5ZXI+IG1fYXZQbGF5ZXI7CkBAIC0zNjcsNyArMzY5LDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAgICAgUmV0YWluUHRyPEFWQXNzZXRJbWFnZUdlbmVyYXRvcj4gbV9pbWFnZUdlbmVy
YXRvcjsKLSAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ+IG1fdmlkZW9PdXRw
dXQ7CisgICAgUmVmUHRyPFF1ZXVlZFZpZGVvT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OwogICAgIFJl
dGFpblB0cjxXZWJDb3JlQVZGUHVsbERlbGVnYXRlPiBtX3ZpZGVvT3V0cHV0RGVsZWdhdGU7CiAg
ICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IG1fbGFzdFBpeGVsQnVmZmVyOwogICAgIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gbV9sYXN0SW1hZ2U7CkBAIC00NjQsNiArNDY2LDcgQEAgcHJpdmF0
ZToKICAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVNZXRhZGF0YT4gbV92aWRlb0ZyYW1lTWV0
YWRhdGE7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPE5TVGltZUludGVydmFsPiBtX2NhY2hl
ZFNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWU7CiAgICAgbXV0YWJsZSBzdGQ6Om9w
dGlvbmFsPE5TVGltZUludGVydmFsPiBtX2NhY2hlZExpdmVVcGRhdGVJbnRlcnZhbDsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8T2JzZXJ2ZXI8dm9pZCgpPj4gbV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2Jz
ZXJ2ZXI7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBjMDY3Y2NlODA2ODZm
N2ExYmM1NDE0YmFmNzdmNzUyNTJiZjM0MmM3Li4xZDA5YWU0OTNlZTg4ZTNiYzI1MDRlNDgyNTA0
NzhlZmVjYzA2OTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTU4LDYgKzU4LDcgQEAK
ICNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVRleHRUcmFjay5o
IgogI2ltcG9ydCAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJRdWV1ZWRWaWRlb091
dHB1dC5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJT
Y3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbXBvcnQgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC0y
MDUsMTYgKzIwNiw2IEBAIC0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpcGxheWVyOwogLSAoQk9PTClyZXNvdXJjZUxvYWRl
cjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgc2hvdWxkV2FpdEZvckxv
YWRpbmdPZlJlcXVlc3RlZFJlc291cmNlOihBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAq
KWxvYWRpbmdSZXF1ZXN0OwogQGVuZAogCi1AaW50ZXJmYWNlIFdlYkNvcmVBVkZQdWxsRGVsZWdh
dGUgOiBOU09iamVjdDxBVlBsYXllckl0ZW1PdXRwdXRQdWxsRGVsZWdhdGU+IHsKLSAgICBCaW5h
cnlTZW1hcGhvcmUgbV9zZW1hcGhvcmU7Ci19Ci0tIChpZClpbml0V2l0aFBsYXllcjooV2Vha1B0
cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiYmKXBsYXllcjsKLS0gKHZvaWQp
b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQbGF5ZXJJdGVtT3V0cHV0ICopc2VuZGVyOwot
LSAodm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KEFWUGxheWVySXRlbU91dHB1dCAqKW91
dHB1dDsKLQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCaW5hcnlTZW1hcGhvcmUm
IHNlbWFwaG9yZTsKLUBlbmQKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIFN0cmluZyBj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhBVlBsYXllclRpbWVDb250cm9sU3RhdHVzIGVudW1l
cmF0aW9uVmFsdWUpCiB7CkBAIC0yNjEsMTYgKzI1Miw2IEBAIHN0YXRpYyBkaXNwYXRjaF9xdWV1
ZV90IGdsb2JhbExvYWRlckRlbGVnYXRlUXVldWUoKQogICAgIHJldHVybiBnbG9iYWxRdWV1ZTsK
IH0KIAotc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUHVsbERlbGVnYXRlUXVldWUoKQot
ewotICAgIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFF1ZXVlOwotICAgIHN0YXRpYyBk
aXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwg
XnsKLSAgICAgICAgZ2xvYmFsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVB
VkZQdWxsRGVsZWdhdGUgcXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOwotICAgIH0pOwot
ICAgIHJldHVybiBnbG9iYWxRdWV1ZTsKLX0KLQogc3RhdGljIHZvaWQgcmVnaXN0ZXJGb3JtYXRS
ZWFkZXJJZk5lY2Vzc2FyeSgpCiB7CiAjaWYgRU5BQkxFKFdFQk1fRk9STUFUX1JFQURFUikKQEAg
LTQ2OSw3ICs0NTAsOCBAQCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp+TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQygpCiAgICAgZm9yIChhdXRvJiBwYWlyIDog
bV9yZXNvdXJjZUxvYWRlck1hcCkKICAgICAgICAgcGFpci52YWx1ZS0+aW52YWxpZGF0ZSgpOwog
Ci0gICAgW21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bmlsIHF1ZXVlOjBdOworICAgIGlmICht
X3ZpZGVvT3V0cHV0KQorICAgICAgICBtX3ZpZGVvT3V0cHV0LT5pbnZhbGlkYXRlKCk7CiAKICAg
ICBpZiAobV92aWRlb0xheWVyKQogICAgICAgICBkZXN0cm95VmlkZW9MYXllcigpOwpAQCAtNzAy
LDcgKzY4NCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFz
QXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CiAgICAgaWYgKGN1cnJlbnRSZW5kZXJpbmdNb2Rl
KCkgPT0gTWVkaWFSZW5kZXJpbmdNb2RlOjpNZWRpYVJlbmRlcmluZ1RvTGF5ZXIpCiAgICAgICAg
IHJldHVybiBtX2NhY2hlZElzUmVhZHlGb3JEaXNwbGF5OwogCi0gICAgaWYgKG1fdmlkZW9PdXRw
dXQgJiYgKG1fbGFzdFBpeGVsQnVmZmVyIHx8IFttX3ZpZGVvT3V0cHV0IGhhc05ld1BpeGVsQnVm
ZmVyRm9ySXRlbVRpbWU6W21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXV0pKQorICAgIGlmICht
X3ZpZGVvT3V0cHV0ICYmIChtX2xhc3RQaXhlbEJ1ZmZlciB8fCBtX3ZpZGVvT3V0cHV0LT5oYXNJ
bWFnZUZvclRpbWUoY3VycmVudE1lZGlhVGltZSgpKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgcmV0dXJuIG1fdmlkZW9GcmFtZUhhc0RyYXduOwpAQCAtMTQ0NCwzNCArMTQyNiwzMSBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtUGF1c2Vk
KCkgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdGFy
dFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpCiB7Ci0gICAgQVNTRVJUKCFtX3ZpZGVvRnJh
bWVNZXRhZGF0YUdhdGhlcmluZ09ic2VydmVyIHx8IG1fYXZQbGF5ZXIpOwotICAgIG1faXNHYXRo
ZXJpbmdWaWRlb0ZyYW1lTWV0YWRhdGEgPSB0cnVlOworICAgIC8vIHJlcXVlc3RWaWRlb0ZyYW1l
Q2FsbGJhY2soKSBjYXJlcyBhYm91dCB0aGUgL25leHQvIGF2YWlsYWJsZSBmcmFtZS4gUHVsbCB0
aGUgY3VycmVudCBmcmFtZSBmcm9tCisgICAgLy8gdGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHNvIHBh
aW50cyBvZiB0aGUgY3VycmVudCBmcmFtZSBzdWNjZWVkOworICAgIHVwZGF0ZUxhc3RQaXhlbEJ1
ZmZlcigpOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgYSBDQURpc3BsYXlMaW5rIHRv
IGdldCB1cGRhdGVzIG9uIHJlbmRlcmluZywgZm9yIG5vdyB3ZSBlbXVsYXRlIHdpdGggYWRkUGVy
aW9kaWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbC4KLSAgICBtX3ZpZGVvRnJhbWVNZXRhZGF0YUdh
dGhlcmluZ09ic2VydmVyID0gW21fYXZQbGF5ZXIgYWRkUGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJ
bnRlcnZhbDpQQUw6OkNNVGltZU1ha2UoMSwgNjApIHF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCkgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0oQ01UaW1lIGN1
cnJlbnRUaW1lKSB7Ci0gICAgICAgIGVuc3VyZU9uTWFpblRocmVhZChbd2Vha1RoaXMsIGN1cnJl
bnRUaW1lXSB7Ci0gICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgd2Vh
a1RoaXMtPmNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKGN1cnJlbnRUaW1lKTsKLSAgICAgICAg
fSk7Ci0gICAgfV07CisgICAgbV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIgPSBXVEY6Om1h
a2VVbmlxdWU8T2JzZXJ2ZXI8dm9pZCgpPj4oW3RoaXNdIHsKKyAgICAgICAgbV9jdXJyZW50SW1h
Z2VDaGFuZ2VkT2JzZXJ2ZXIgPSBudWxscHRyOworICAgICAgICBjaGVja05ld1ZpZGVvRnJhbWVN
ZXRhZGF0YSgpOworICAgIH0pOworCisgICAgaWYgKG1fdmlkZW9PdXRwdXQpCisgICAgICAgIG1f
dmlkZW9PdXRwdXQtPmFkZEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcigqbV9jdXJyZW50SW1h
Z2VDaGFuZ2VkT2JzZXJ2ZXIpOworCisgICAgbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0
YSA9IHRydWU7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
Y2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoQ01UaW1lIGN1cnJlbnRUaW1lKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0
YSgpCiB7Ci0gICAgaWYgKCF1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSkKKyAgICBpZiAoIW1faXNH
YXRoZXJpbmdWaWRlb0ZyYW1lTWV0YWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZpZGVv
RnJhbWVNZXRhZGF0YSBtZXRhZGF0YTsKLSAgICBtZXRhZGF0YS53aWR0aCA9IG1fY2FjaGVkUHJl
c2VudGF0aW9uU2l6ZS53aWR0aCgpOwotICAgIG1ldGFkYXRhLmhlaWdodCA9IG1fY2FjaGVkUHJl
c2VudGF0aW9uU2l6ZS5oZWlnaHQoKTsKLSAgICBtZXRhZGF0YS5wcmVzZW50ZWRGcmFtZXMgPSAr
K21fc2FtcGxlQ291bnQ7Ci0gICAgbWV0YWRhdGEubWVkaWFUaW1lID0gUEFMOjpDTVRpbWVHZXRT
ZWNvbmRzKGN1cnJlbnRUaW1lKTsKLSAgICAvLyBGSVhNRTogcHJlc2VudGF0aW9uVGltZSBhbmQg
ZXhwZWN0ZWREaXNwbGF5VGltZSBtaWdodCBub3QgYWx3YXlzIGhhdmUgdGhlIHNhbWUgdmFsdWUs
IHdlIHNob3VsZCB0cnkgZ2V0dGluZyBtb3JlIHByZWNpc2UgdmFsdWVzLgotICAgIG1ldGFkYXRh
LnByZXNlbnRhdGlvblRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9j
aCgpLnNlY29uZHMoKTsKLSAgICBtZXRhZGF0YS5leHBlY3RlZERpc3BsYXlUaW1lID0gbWV0YWRh
dGEucHJlc2VudGF0aW9uVGltZTsKKyAgICBpZiAoIXVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpICYm
ICFtX3ZpZGVvRnJhbWVNZXRhZGF0YSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aWRlb0Zy
YW1lTWV0YWRhdGEgPSBtZXRhZGF0YTsKLSAgICBwbGF5ZXIoKS0+b25OZXdWaWRlb0ZyYW1lTWV0
YWRhdGEoV1RGTW92ZShtZXRhZGF0YSksIG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKKyAgICBw
bGF5ZXIoKS0+b25OZXdWaWRlb0ZyYW1lTWV0YWRhdGEoV1RGTW92ZSgqbV92aWRlb0ZyYW1lTWV0
YWRhdGEpLCBtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CisgICAgbV92aWRlb0ZyYW1lTWV0YWRh
dGEgPSB7IH07CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c3RvcFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpCkBAIC0yNTE4LDE3ICsyNDk3LDE0IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRw
dXQoKQogICAgIGlmICghbV9hdlBsYXllckl0ZW0gfHwgbV92aWRlb091dHB1dCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV92aWRlb091dHB1dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlBsYXll
ckl0ZW1WaWRlb091dHB1dEluc3RhbmNlKCkgaW5pdFdpdGhQaXhlbEJ1ZmZlckF0dHJpYnV0ZXM6
bmlsXSk7CisgICAgbV92aWRlb091dHB1dCA9IFF1ZXVlZFZpZGVvT3V0cHV0OjpjcmVhdGUobV9h
dlBsYXllckl0ZW0uZ2V0KCksIG1fYXZQbGF5ZXIuZ2V0KCkpOwogICAgIEFTU0VSVChtX3ZpZGVv
T3V0cHV0KTsKICAgICBpZiAoIW1fdmlkZW9PdXRwdXQpIHsKICAgICAgICAgRVJST1JfTE9HKExP
R0lERU5USUZJRVIsICItW0FWUGxheWVySXRlbVZpZGVvT3V0cHV0IGluaXRXaXRoUGl4ZWxCdWZm
ZXJBdHRyaWJ1dGVzOl0gZmFpbGVkISIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAg
bV92aWRlb091dHB1dERlbGVnYXRlID0gYWRvcHROUyhbW1dlYkNvcmVBVkZQdWxsRGVsZWdhdGUg
YWxsb2NdIGluaXRXaXRoUGxheWVyOip0aGlzXSk7Ci0gICAgW21fdmlkZW9PdXRwdXQgc2V0RGVs
ZWdhdGU6bV92aWRlb091dHB1dERlbGVnYXRlLmdldCgpIHF1ZXVlOmdsb2JhbFB1bGxEZWxlZ2F0
ZVF1ZXVlKCldOwotCi0gICAgW21fYXZQbGF5ZXJJdGVtIGFkZE91dHB1dDptX3ZpZGVvT3V0cHV0
LmdldCgpXTsKKyAgICBpZiAobV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIpCisgICAgICAg
IG1fdmlkZW9PdXRwdXQtPmFkZEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcigqbV9jdXJyZW50
SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIpOwogCiAgICAgc2V0TmVlZHNSZW5kZXJpbmdNb2RlQ2hhbmdl
ZCgpOwogfQpAQCAtMjUzOCwxOSArMjUxNCwxNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb091dHB1dCgpCiAgICAgaWYgKCFtX3ZpZGVvT3V0
cHV0KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9hdlBsYXllckl0ZW0pCi0gICAgICAg
IFttX2F2UGxheWVySXRlbSByZW1vdmVPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQoKV07Ci0KICAg
ICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIG1fdmlkZW9PdXRwdXQgPSAwOworICAg
IG1fdmlkZW9PdXRwdXQtPmludmFsaWRhdGUoKTsKKyAgICBtX3ZpZGVvT3V0cHV0ID0gbnVsbHB0
cjsKIAogICAgIHNldE5lZWRzUmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIH0KIAogYm9vbCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKQog
ewotICAgIGlmICghbV9hdlBsYXllckl0ZW0gfHwgcmVhZHlTdGF0ZSgpIDwgTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSkKKyAgICBpZiAoIW1fYXZQbGF5ZXJJdGVtKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2hhdmVCZWVuQXNrZWRUb1BhaW50ID0gdHJ1
ZTsKQEAgLTI1NTksMTIgKzI1MzMsMjUgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKQogICAgICAgICBjcmVhdGVWaWRlb091
dHB1dCgpOwogICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0KTsKIAotICAgIENNVGltZSBjdXJyZW50
VGltZSA9IFttX2F2UGxheWVySXRlbSBjdXJyZW50VGltZV07CisgICAgYXV0byBjdXJyZW50VGlt
ZSA9IGN1cnJlbnRNZWRpYVRpbWUoKTsKIAotICAgIGlmICghW21fdmlkZW9PdXRwdXQgaGFzTmV3
UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpjdXJyZW50VGltZV0pCisgICAgaWYgKCFtX3ZpZGVvT3V0
cHV0LT5oYXNJbWFnZUZvclRpbWUoY3VycmVudFRpbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBtX2xhc3RQaXhlbEJ1ZmZlciA9IGFkb3B0Q0YoW21fdmlkZW9PdXRwdXQgY29weVBp
eGVsQnVmZmVyRm9ySXRlbVRpbWU6Y3VycmVudFRpbWUgaXRlbVRpbWVGb3JEaXNwbGF5Om5pbF0p
OworICAgIGF1dG8gZW50cnkgPSBtX3ZpZGVvT3V0cHV0LT50YWtlVmlkZW9GcmFtZUVudHJ5Rm9y
VGltZShjdXJyZW50VGltZSk7CisgICAgbV9sYXN0UGl4ZWxCdWZmZXIgPSBXVEZNb3ZlKGVudHJ5
LnBpeGVsQnVmZmVyKTsKKworICAgIGlmIChtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRh
KSB7CisgICAgICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygp
LnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpIC0gKGN1cnJlbnRUaW1lIC0gZW50cnkuZGlz
cGxheVRpbWUpLnRvRG91YmxlKCk7CisgICAgICAgIG1fdmlkZW9GcmFtZU1ldGFkYXRhID0gewor
ICAgICAgICAgICAgLndpZHRoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENWUGl4ZWxCdWZmZXJH
ZXRXaWR0aChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpLAorICAgICAgICAgICAgLmhlaWdodCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVs
QnVmZmVyLmdldCgpKSksCisgICAgICAgICAgICAucHJlc2VudGVkRnJhbWVzID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KCsrbV9zYW1wbGVDb3VudCksCisgICAgICAgICAgICAubWVkaWFUaW1lID0g
ZW50cnkuZGlzcGxheVRpbWUudG9Eb3VibGUoKSwKKyAgICAgICAgICAgIC5wcmVzZW50YXRpb25U
aW1lID0gcHJlc2VudGF0aW9uVGltZSwKKyAgICAgICAgICAgIC5leHBlY3RlZERpc3BsYXlUaW1l
ID0gcHJlc2VudGF0aW9uVGltZSwKKyAgICAgICAgfTsKKyAgICB9CiAKICAgICBpZiAobV9pbWFn
ZVJvdGF0aW9uU2Vzc2lvbikKICAgICAgICAgbV9sYXN0UGl4ZWxCdWZmZXIgPSBtX2ltYWdlUm90
YXRpb25TZXNzaW9uLT5yb3RhdGUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwpAQCAtMjU4NCw3
ICsyNTcxLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRl
b091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCkKICAgICBpZiAoIW1fdmlkZW9PdXRwdXQpCiAgICAg
ICAgIGNyZWF0ZVZpZGVvT3V0cHV0KCk7CiAKLSAgICByZXR1cm4gW21fdmlkZW9PdXRwdXQgaGFz
TmV3UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpbbV9hdlBsYXllckl0ZW0gY3VycmVudFRpbWVdXTsK
KyAgICByZXR1cm4gbV92aWRlb091dHB1dC0+aGFzSW1hZ2VGb3JUaW1lKFBBTDo6dG9NZWRpYVRp
bWUoW21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXSkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlIHR5cGUp
CkBAIC0yNjAyLDcgKzI1ODksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlIHR5cGUpCiAgICAgLy8gQ2FsbHMgdG8g
Y29weVBpeGVsQnVmZmVyRm9ySXRlbVRpbWU6aXRlbVRpbWVGb3JEaXNwbGF5OiBtYXkgcmV0dXJu
IG5pbCBpZiB0aGUgcGl4ZWwgYnVmZmVyCiAgICAgLy8gZm9yIHRoZSByZXF1ZXN0ZWQgdGltZSBo
YXMgYWxyZWFkeSBiZWVuIHJldHJpZXZlZC4gSW4gdGhpcyBjYXNlLCB0aGUgbGFzdCB2YWxpZCBp
bWFnZSAoaWYgYW55KQogICAgIC8vIHNob3VsZCBiZSBkaXNwbGF5ZWQuCi0gICAgaWYgKChtX2lz
R2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhIHx8ICF1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSkg
JiYgKG1fbGFzdEltYWdlIHx8ICFtX2xhc3RQaXhlbEJ1ZmZlcikpCisgICAgaWYgKCF1cGRhdGVM
YXN0UGl4ZWxCdWZmZXIoKSAmJiAobV9sYXN0SW1hZ2UgfHwgIW1fbGFzdFBpeGVsQnVmZmVyKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3BpeGVsQnVmZmVyQ29uZm9ybWVyKSB7CkBA
IC0yNjM3LDggKzI2MjQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYgYwogCiBSZXRhaW5QdHI8
Q1ZQaXhlbEJ1ZmZlclJlZj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGl4
ZWxCdWZmZXJGb3JDdXJyZW50VGltZSgpCiB7Ci0gICAgaWYgKCFtX2lzR2F0aGVyaW5nVmlkZW9G
cmFtZU1ldGFkYXRhKQotICAgICAgICB1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKTsKKyAgICB1cGRh
dGVMYXN0UGl4ZWxCdWZmZXIoKTsKIAogICAgIHJldHVybiBtX2xhc3RQaXhlbEJ1ZmZlcjsKIH0K
QEAgLTI2NjksNyArMjY1NSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OndhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQogICAgIHN0ZDo6
b3B0aW9uYWw8UnVuTG9vcDo6VGltZXI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qz4+IHRpbWVvdXRUaW1lcjsKIAogICAgIGlmICghbV9ydW5Mb29wTmVzdGluZ0xldmVsKSB7Ci0g
ICAgICAgIFttX3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5n
ZVdpdGhBZHZhbmNlSW50ZXJ2YWw6MF07CisgICAgICAgIE9ic2VydmVyPHZvaWQoKT4gd2FpdEZv
clZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZU9ic2VydmVyKFt0aGlzXSB7CisgICAgICAg
ICAgICBpZiAobV9ydW5Mb29wTmVzdGluZ0xldmVsKQorICAgICAgICAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5zdG9wKCk7CisgICAgICAgIH0pOworICAgICAgICBtX3ZpZGVvT3V0cHV0LT5hZGRD
dXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIod2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2ls
bENoYW5nZU9ic2VydmVyKTsKIAogICAgICAgICB0aW1lb3V0VGltZXIuZW1wbGFjZShSdW5Mb29w
OjptYWluKCksIFsmXSB7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwpAQCAt
MjY5NiwxNSArMjY4Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6d2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpCiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgp
CiB7Ci0gICAgaWYgKG1fcnVuTG9vcE5lc3RpbmdMZXZlbCkgewotICAgICAgICBpZiAoUnVuTG9v
cDo6aXNNYWluKCkpCi0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7Ci0gICAg
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLnN0b3AoKTsKLSAgICAgICAgICAgIH0pOwotICAg
ICAgICB9Ci0gICAgfQorICAgIGNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCk7CiB9CiAKICNp
ZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKQEAgLTQwODksMzcgKzQwNzEsNCBAQCAt
ICh2b2lkKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxv
YWRlciBkaWRDYW5jZWxMb2FkaW5nUgogCiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJDb3Jl
QVZGUHVsbERlbGVnYXRlIHsKLSAgICBXZWFrUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM+IF9wbGF5ZXI7Ci19Ci0KLUBzeW50aGVzaXplIHNlbWFwaG9yZSA9
IG1fc2VtYXBob3JlOwotCi0tIChpZClpbml0V2l0aFBsYXllcjooV2Vha1B0cjxNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiYmKXBsYXllcgotewotICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIF9wbGF5ZXIg
PSBXVEZNb3ZlKHBsYXllcik7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpb3V0cHV0
TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQgKilvdXRwdXQKLXsK
LSAgICBVTlVTRURfUEFSQU0ob3V0cHV0KTsKLSAgICBtX3NlbWFwaG9yZS5zaWduYWwoKTsKLSAg
ICBjYWxsT25NYWluVGhyZWFkKFtzZWxmLCBzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9
XSB7Ci0gICAgICAgIGlmIChfcGxheWVyKQotICAgICAgICAgICAgX3BsYXllci0+b3V0cHV0TWVk
aWFEYXRhV2lsbENoYW5nZSgpOwotICAgIH0pOwotfQotCi0tICh2b2lkKW91dHB1dFNlcXVlbmNl
V2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQgKilvdXRwdXQKLXsKLSAgICBVTlVT
RURfUEFSQU0ob3V0cHV0KTsKLSAgICAvLyBOby1vcC4KLX0KLQotQGVuZAotCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1F1ZXVlZFZpZGVvT3V0cHV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiYWYw
ZWExMWU1YzRmYmUzMjRkOTUyNWFkZjFiZGIzYzYzMzBhODgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRW
aWRlb091dHB1dC5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL09ic2VydmVy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CisKK09CSkNfQ0xBU1MgQVZQbGF5ZXI7
CitPQkpDX0NMQVNTIEFWUGxheWVySXRlbTsKK09CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtVmlkZW9P
dXRwdXQ7CitPQkpDX0NMQVNTIFdlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGU7CisKK3R5cGVk
ZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZmZXJSZWY7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgUXVldWVkVmlkZW9PdXRwdXQKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVk
PFF1ZXVlZFZpZGVvT3V0cHV0PgorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFF1ZXVlZFZp
ZGVvT3V0cHV0PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxRdWV1ZWRWaWRlb091dHB1dD4gY3JlYXRlKEFWUGxheWVySXRlbSosIEFWUGxh
eWVyKik7CisgICAgflF1ZXVlZFZpZGVvT3V0cHV0KCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUo
KTsKKyAgICBib29sIGhhc0ltYWdlRm9yVGltZShjb25zdCBNZWRpYVRpbWUmKSBjb25zdDsKKwor
ICAgIHN0cnVjdCBWaWRlb0ZyYW1lRW50cnkgeworICAgICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1
ZmZlclJlZj4gcGl4ZWxCdWZmZXI7CisgICAgICAgIE1lZGlhVGltZSBkaXNwbGF5VGltZTsKKyAg
ICB9OworICAgIFZpZGVvRnJhbWVFbnRyeSB0YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShjb25z
dCBNZWRpYVRpbWUmKTsKKworICAgIHZvaWQgYWRkVmlkZW9GcmFtZUVudHJpZXMoVmVjdG9yPFZp
ZGVvRnJhbWVFbnRyeT4mJik7CisgICAgdm9pZCBwdXJnZVZpZGVvRnJhbWVFbnRyaWVzKCk7CisK
KyAgICB1c2luZyBDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKCk+
OworICAgIHZvaWQgYWRkQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKGNvbnN0IEN1cnJlbnRJ
bWFnZUNoYW5nZWRPYnNlcnZlciYpOworCisgICAgdXNpbmcgSW1hZ2VNYXAgPSBzdGQ6Om1hcDxN
ZWRpYVRpbWUsIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPj47CisKKyAgICB2b2lkIHJhdGVD
aGFuZ2VkKGZsb2F0KTsKKworcHJpdmF0ZToKKyAgICBRdWV1ZWRWaWRlb091dHB1dChBVlBsYXll
ckl0ZW0qLCBBVlBsYXllciopOworCisgICAgdm9pZCBwdXJnZUltYWdlc0JlZm9yZVRpbWUoY29u
c3QgTWVkaWFUaW1lJik7CisgICAgdm9pZCBjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIo
KTsKKyAgICB2b2lkIGNhbmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworICAgIHZvaWQgbmV4
dEltYWdlVGltZVJlYWNoZWQoKTsKKworICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW0+IG1fcGxh
eWVySXRlbTsKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXI+IG1fcGxheWVyOworICAgIFJldGFpblB0
cjxXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlPiBtX2RlbGVnYXRlOworICAgIFJldGFpblB0
cjxBVlBsYXllckl0ZW1WaWRlb091dHB1dD4gbV92aWRlb091dHB1dDsKKyAgICBSZXRhaW5QdHI8
aWQ+IG1fdmlkZW9UaW1lYmFzZU9ic2VydmVyOworICAgIFJldGFpblB0cjxpZD4gbV9uZXh0SW1h
Z2VUaW1lYmFzZU9ic2VydmVyOworCisgICAgSW1hZ2VNYXAgbV92aWRlb0ZyYW1lczsKKyAgICBX
ZWFrSGFzaFNldDxDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXI+IG1fY3VycmVudEltYWdlQ2hh
bmdlZE9ic2VydmVyczsKKworICAgIGJvb2wgbV9wYXVzZWQgeyB0cnVlIH07Cit9OworCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wYmMwODM4MTRjMDhjN2RlZWQ2MWM5MDc5YzIyYmUzZjUwNzhhNzdlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0KQEAgLTAsMCArMSwzMDggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXVldWVkVmlkZW9PdXRwdXQuaCIKKwor
I2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1P
dXRwdXQuaD4KKyNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlv
bi5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CisKKyNpbmNsdWRlIDxwYWwv
Y2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbmNsdWRlIDxwYWwvY29jb2EvQVZGb3VuZGF0aW9u
U29mdExpbmsuaD4KKworQGludGVyZmFjZSBXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIDog
TlNPYmplY3Q8QVZQbGF5ZXJJdGVtT3V0cHV0UHVsbERlbGVnYXRlPiB7CisgICAgV2Vha1B0cjxX
ZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dD4gX3BhcmVudDsKK30KKy0gKGlkKWluaXRXaXRoUGFy
ZW50OihXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dCopcGFyZW50OworLSAodm9pZClvdXRwdXRN
ZWRpYURhdGFXaWxsQ2hhbmdlOihBVlBsYXllckl0ZW1PdXRwdXQgKilvdXRwdXQ7CistICh2b2lk
KW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0Owor
LSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVj
dCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkKiljb250ZXh0Owor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZQorLSAo
aWQpaW5pdFdpdGhQYXJlbnQ6KFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0KilwYXJlbnQKK3sK
KyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIF9wYXJlbnQgPSBwYXJlbnQ7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0g
KHZvaWQpb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0
cHV0Cit7CisgICAgQVNTRVJUKFtvdXRwdXQgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxheWVy
SXRlbVZpZGVvT3V0cHV0Q2xhc3MoKV0pOworICAgIGF1dG8qIHZpZGVvT3V0cHV0ID0gKEFWUGxh
eWVySXRlbVZpZGVvT3V0cHV0KilvdXRwdXQ7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6UXVldWVk
VmlkZW9PdXRwdXQ6OlZpZGVvRnJhbWVFbnRyeT4gdmlkZW9GcmFtZUVudHJpZXM7CisgICAgZG8g
eworICAgICAgICBDTVRpbWUgZWFybGllc3RUaW1lID0gW3ZpZGVvT3V0cHV0IGVhcmxpZXN0QXZh
aWxhYmxlUGl4ZWxCdWZmZXJJdGVtVGltZV07CisgICAgICAgIGlmIChDTVRJTUVfSVNfSU5WQUxJ
RChlYXJsaWVzdFRpbWUpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgYXV0byBwaXhl
bEJ1ZmZlciA9IGFkb3B0Q0YoW3ZpZGVvT3V0cHV0IGNvcHlQaXhlbEJ1ZmZlckZvckl0ZW1UaW1l
OmVhcmxpZXN0VGltZSBpdGVtVGltZUZvckRpc3BsYXk6bmlsXSk7CisgICAgICAgIGlmICghcGl4
ZWxCdWZmZXIpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICB2aWRlb0ZyYW1lRW50cmll
cy5hcHBlbmQoeyBXVEZNb3ZlKHBpeGVsQnVmZmVyKSwgUEFMOjp0b01lZGlhVGltZShlYXJsaWVz
dFRpbWUpIH0pOworICAgIH0gd2hpbGUgKHRydWUpOworCisgICAgaWYgKHZpZGVvRnJhbWVFbnRy
aWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FsbE9uTWFpblJ1bkxvb3Ao
W3ZpZGVvRnJhbWVFbnRyaWVzID0gV1RGTW92ZSh2aWRlb0ZyYW1lRW50cmllcyksIHBhcmVudCA9
IF9wYXJlbnRdICgpIG11dGFibGUgeworICAgICAgICBpZiAocGFyZW50KQorICAgICAgICAgICAg
cGFyZW50LT5hZGRWaWRlb0ZyYW1lRW50cmllcyhXVEZNb3ZlKHZpZGVvRnJhbWVFbnRyaWVzKSk7
CisgICAgfSk7Cit9CisKKy0gKHZvaWQpb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOihBVlBsYXll
ckl0ZW1PdXRwdXQgKilvdXRwdXQKK3sKKyAgICBBU1NFUlQoW291dHB1dCBpc0tpbmRPZkNsYXNz
OlBBTDo6Z2V0QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXRDbGFzcygpXSk7CisgICAgYXV0byogdmlk
ZW9PdXRwdXQgPSAoQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQqKW91dHB1dDsKKyAgICBbdmlkZW9P
dXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJs
ZV07CisKKyAgICBjYWxsT25NYWluUnVuTG9vcChbcGFyZW50ID0gX3BhcmVudF0geworICAgICAg
ICBpZiAocGFyZW50KQorICAgICAgICAgICAgcGFyZW50LT5wdXJnZVZpZGVvRnJhbWVFbnRyaWVz
KCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRo
IG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4
dDoodm9pZCopY29udGV4dAoreworICAgIGlmICghW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAi
cmF0ZSJdKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJhdGVWYWx1ZSA9IChOU051bWJl
ciopW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsKKyAgICBBU1NF
UlQoW3JhdGVWYWx1ZSBpc0tpbmRPZkNsYXNzOk5TTnVtYmVyLmNsYXNzXSk7CisgICAgYXV0byBy
YXRlID0gcmF0ZVZhbHVlLmZsb2F0VmFsdWU7CisKKyAgICBlbnN1cmVPbk1haW5SdW5Mb29wKFtw
YXJlbnQgPSBfcGFyZW50LCByYXRlXSB7CisgICAgICAgIGlmIChwYXJlbnQpCisgICAgICAgICAg
ICBwYXJlbnQtPnJhdGVDaGFuZ2VkKHJhdGUpOworICAgIH0pOworfQorQGVuZAorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK3N0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbE91dHB1dERlbGVn
YXRlUXVldWUoKQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFF1ZXVlOwor
ICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29uY2Uo
Jm9uY2VUb2tlbiwgXnsKKyAgICAgICAgZ2xvYmFsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVh
dGUoIldlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgcXVldWUiLCBESVNQQVRDSF9RVUVVRV9T
RVJJQUwpOworICAgIH0pOworICAgIHJldHVybiBnbG9iYWxRdWV1ZTsKK30KKworUmVmPFF1ZXVl
ZFZpZGVvT3V0cHV0PiBRdWV1ZWRWaWRlb091dHB1dDo6Y3JlYXRlKEFWUGxheWVySXRlbSogaXRl
bSwgQVZQbGF5ZXIqIHBsYXllcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBRdWV1ZWRW
aWRlb091dHB1dChpdGVtLCBwbGF5ZXIpKTsKK30KKworUXVldWVkVmlkZW9PdXRwdXQ6OlF1ZXVl
ZFZpZGVvT3V0cHV0KEFWUGxheWVySXRlbSogaXRlbSwgQVZQbGF5ZXIqIHBsYXllcikKKyAgICA6
IG1fcGxheWVySXRlbShpdGVtKQorICAgICwgbV9wbGF5ZXIocGxheWVyKQorICAgICwgbV9kZWxl
Z2F0ZShhZG9wdE5TKFtbV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBhbGxvY10gaW5pdFdp
dGhQYXJlbnQ6dGhpc10pKQoreworICAgIG1fdmlkZW9PdXRwdXQgPSBhZG9wdE5TKFtQQUw6OmFs
bG9jQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXRJbnN0YW5jZSgpIGluaXRXaXRoUGl4ZWxCdWZmZXJB
dHRyaWJ1dGVzOm5pbF0pOworICAgIFttX3ZpZGVvT3V0cHV0IHNldERlbGVnYXRlOm1fZGVsZWdh
dGUuZ2V0KCkgcXVldWU6Z2xvYmFsT3V0cHV0RGVsZWdhdGVRdWV1ZSgpXTsKKyAgICBbbV92aWRl
b091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3Np
YmxlXTsKKworICAgIFttX3BsYXllckl0ZW0gYWRkT3V0cHV0Om1fdmlkZW9PdXRwdXQuZ2V0KCld
OworCisgICAgW21fcGxheWVyIGFkZE9ic2VydmVyOm1fZGVsZWdhdGUuZ2V0KCkgZm9yS2V5UGF0
aDpAInJhdGUiIG9wdGlvbnM6KE5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgfCBOU0tleVZh
bHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCkgY29udGV4dDpuaWxdOworCisgICAgbV92aWRlb1Rp
bWViYXNlT2JzZXJ2ZXIgPSBbbV9wbGF5ZXIgYWRkUGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJbnRl
cnZhbDpQQUw6OkNNVGltZU1ha2UoMSwgNjApIHF1ZXVlOmdsb2JhbE91dHB1dERlbGVnYXRlUXVl
dWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwcm90ZWN0ZWRE
ZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIHByb3RlY3RlZE91dHB1dCA9IG1fdmlkZW9PdXRwdXRdKENN
VGltZSBjdXJyZW50VGltZSkgbXV0YWJsZSB7CisKKyAgICAgICAgLy8gUGVyaW9kaWNhbGx5IGNo
ZWNrIGZvciBuZXcgYXZhaWxhYmxlIHBpeGVsIGJ1ZmZlcnMuCisgICAgICAgIFtwcm90ZWN0ZWRE
ZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOnByb3RlY3RlZE91dHB1dC5nZXQoKV07
CisKKyAgICAgICAgLy8gQW5kIHB1cmdlIHRoZSBiYWNrIGJ1ZmZlciBvZiBwYXN0IGZyYW1lcy4K
KyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gd2Vha1RoaXMsIHRpbWUgPSBQ
QUw6OnRvTWVkaWFUaW1lKGN1cnJlbnRUaW1lKV0geworICAgICAgICAgICAgaWYgKHdlYWtUaGlz
KQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5wdXJnZUltYWdlc0JlZm9yZVRpbWUodGltZSk7
CisgICAgICAgIH0pOworICAgIH1dOworfQorCitRdWV1ZWRWaWRlb091dHB1dDo6flF1ZXVlZFZp
ZGVvT3V0cHV0KCkKK3sKKyAgICBpbnZhbGlkYXRlKCk7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9P
dXRwdXQ6OmludmFsaWRhdGUoKQoreworICAgIGlmIChtX3ZpZGVvVGltZWJhc2VPYnNlcnZlcikg
eworICAgICAgICBbbV9wbGF5ZXIgcmVtb3ZlVGltZU9ic2VydmVyOm1fdmlkZW9UaW1lYmFzZU9i
c2VydmVyLmdldCgpXTsKKyAgICAgICAgbV92aWRlb1RpbWViYXNlT2JzZXJ2ZXIgPSBuaWw7Cisg
ICAgfQorCisgICAgY2FuY2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisKKyAgICBpZiAobV92
aWRlb091dHB1dCkgeworICAgICAgICBbbV9wbGF5ZXJJdGVtIHJlbW92ZU91dHB1dDptX3ZpZGVv
T3V0cHV0LmdldCgpXTsKKyAgICAgICAgW21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bmlsIHF1
ZXVlOm5pbF07CisgICAgICAgIG1fdmlkZW9PdXRwdXQgPSBuaWw7CisgICAgfQorCisgICAgaWYg
KG1fcGxheWVyKSB7CisgICAgICAgIFttX3BsYXllciByZW1vdmVPYnNlcnZlcjptX2RlbGVnYXRl
LmdldCgpIGZvcktleVBhdGg6QCJyYXRlIl07CisgICAgICAgIG1fcGxheWVyID0gbmlsOworICAg
IH0KKworICAgIG1fcGxheWVySXRlbSA9IG5pbDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE1h
eWJlQ29uc3RNYXAsIHR5cGVuYW1lIE1heWJlQ29uc3RJdGVyID0gZGVjbHR5cGUoTWF5YmVDb25z
dE1hcCgpLmJlZ2luKCkpPgorTWF5YmVDb25zdEl0ZXIgZmluZEltYWdlRm9yVGltZShNYXliZUNv
bnN0TWFwJiBtYXAsIGNvbnN0IE1lZGlhVGltZSYgdGltZSkKK3sKKyAgICAvLyBPdXRwdXRzIG9m
IEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IGhhdmUgYSBkaXNwbGF5IHRpbWUsIGJ1dCBub3QgYSBk
dXJhdGlvbjsgdGhleSBhcmUgdmFsaWQKKyAgICAvLyB1bnRpbCB0aGUgYXJyaXZhbCBvZiBhIGxh
dGVyIGZyYW1lLiBGaW5kIHRoaXMgZnJhbWUgZWZmaWNpZW50bHkgdXNpbmcgc2V0Ojp1cHBlcl9i
b3VuZCB0byBmaW5kCisgICAgLy8gdGhlIG5leHQgZGlzcGxheWFibGUgZnJhbWUsIGFuZCB3YWxr
IGJhY2t3YXJkcyBieSBvbmUgdG8gZmluZCBhIGZyYW1lIGZvciB0aGUgdGFyZ2V0IHRpbWUuCisg
ICAgaWYgKG1hcC5lbXB0eSgpKQorICAgICAgICByZXR1cm4gbWFwLmVuZCgpOworCisgICAgYXV0
byBpdGVyID0gbWFwLnVwcGVyX2JvdW5kKHRpbWUpOworICAgIGlmIChpdGVyID09IG1hcC5iZWdp
bigpKQorICAgICAgICByZXR1cm4gbWFwLmVuZCgpOworCisgICAgcmV0dXJuIC0taXRlcjsKK30K
KworYm9vbCBRdWV1ZWRWaWRlb091dHB1dDo6aGFzSW1hZ2VGb3JUaW1lKGNvbnN0IE1lZGlhVGlt
ZSYgdGltZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJh
bWVzLCB0aW1lKSAhPSBtX3ZpZGVvRnJhbWVzLmVuZCgpOworfQorCithdXRvIFF1ZXVlZFZpZGVv
T3V0cHV0Ojp0YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUp
IC0+IFZpZGVvRnJhbWVFbnRyeQoreworICAgIGF1dG8gaXRlciA9IGZpbmRJbWFnZUZvclRpbWUo
bV92aWRlb0ZyYW1lcywgdGltZSk7CisgICAgaWYgKGl0ZXIgPT0gbV92aWRlb0ZyYW1lcy5lbmQo
KSkKKyAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpIH07
CisKKyAgICBWaWRlb0ZyYW1lRW50cnkgZW50cnkgPSB7IFdURk1vdmUoaXRlci0+c2Vjb25kKSwg
aXRlci0+Zmlyc3QgfTsKKworICAgIC8vIFB1cmdlIGFsbCBmcmFtZXMgYmVmb3JlIGB0aW1lYCwg
c28gdGhhdCByZXBlYXRlZCBjYWxscyB3aXRoIHRoZSBzYW1lIHRpbWUgZG9uJ3QgcmV0dXJuCisg
ICAgLy8gc3VjY2Vzc2l2ZWx5IGVhcmxpZXIgaW1hZ2VzLgorICAgIG1fdmlkZW9GcmFtZXMuZXJh
c2UobV92aWRlb0ZyYW1lcy5iZWdpbigpLCArK2l0ZXIpOworCisgICAgcmV0dXJuIGVudHJ5Owor
fQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjphZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2
ZXIoY29uc3QgQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyJiBvYnNlcnZlcikKK3sKKyAgICBt
X2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsKKyAgICBjb25maWd1
cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKworICAgIFttX3ZpZGVvT3V0cHV0IHJlcXVlc3RO
b3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZUFzU29vbkFzUG9zc2libGVdOworfQorCit2b2lk
IFF1ZXVlZFZpZGVvT3V0cHV0Ojpjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKQorewor
ICAgIGlmIChtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gY3VycmVudFRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKFttX3BsYXllciBjdXJyZW50
VGltZV0pOworICAgIGF1dG8gaXRlciA9IGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywg
Y3VycmVudFRpbWUpOworICAgIGlmIChpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkgfHwgKytp
dGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8g
bmV4dEltYWdlVGltZSA9IGl0ZXItPmZpcnN0OworCisgICAgbV9uZXh0SW1hZ2VUaW1lYmFzZU9i
c2VydmVyID0gW21fcGxheWVyIGFkZEJvdW5kYXJ5VGltZU9ic2VydmVyRm9yVGltZXM6QFtbTlNW
YWx1ZSB2YWx1ZVdpdGhDTVRpbWU6UEFMOjp0b0NNVGltZShjdXJyZW50VGltZSldXSBxdWV1ZTpn
bG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCkgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgcHJvdGVjdGVkRGVsZWdhdGUgPSBtX2RlbGVnYXRlLCBwcm90ZWN0ZWRPdXRw
dXQgPSBtX3ZpZGVvT3V0cHV0XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblJ1bkxv
b3AoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldIHsKKyAgICAgICAgICAgIGlmICh3ZWFr
VGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bmV4dEltYWdlVGltZVJlYWNoZWQoKTsK
KyAgICAgICAgfSk7CisgICAgfV07Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmNhbmNl
bE5leHRJbWFnZVRpbWVPYnNlcnZlcigpCit7CisgICAgaWYgKCFtX25leHRJbWFnZVRpbWViYXNl
T2JzZXJ2ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFttX3BsYXllciByZW1vdmVUaW1lT2Jz
ZXJ2ZXI6bV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyLmdldCgpXTsKKyAgICBtX25leHRJbWFn
ZVRpbWViYXNlT2JzZXJ2ZXIgPSBuaWw7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6Om5l
eHRJbWFnZVRpbWVSZWFjaGVkKCkKK3sKKyAgICBjYW5jZWxOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIo
KTsKKyAgICBhdXRvIG9ic2VydmVycyA9IHN0ZDo6ZXhjaGFuZ2UobV9jdXJyZW50SW1hZ2VDaGFu
Z2VkT2JzZXJ2ZXJzLCB7IH0pOworICAgIG9ic2VydmVycy5mb3JFYWNoKFtdKGF1dG8mIG9ic2Vy
dmVyKSB7IG9ic2VydmVyKCk7IH0pOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjphZGRW
aWRlb0ZyYW1lRW50cmllcyhWZWN0b3I8VmlkZW9GcmFtZUVudHJ5PiYmIHZpZGVvRnJhbWVFbnRy
aWVzKQoreworICAgIGJvb2wgbmVlZHNJbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCA9IGZhbHNl
OworICAgIGJvb2wgaGFzQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycyA9IG1fY3VycmVudElt
YWdlQ2hhbmdlZE9ic2VydmVycy5jb21wdXRlU2l6ZSgpOworICAgIE1lZGlhVGltZSBjdXJyZW50
VGltZSA9IGhhc0N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMgPyBQQUw6OnRvTWVkaWFUaW1l
KFttX3BsYXllciBjdXJyZW50VGltZV0pIDogTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpOworCisg
ICAgZm9yIChhdXRvJiBlbnRyeSA6IHZpZGVvRnJhbWVFbnRyaWVzKSB7CisgICAgICAgIGlmICho
YXNDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzICYmIGVudHJ5LmRpc3BsYXlUaW1lIDw9IGN1
cnJlbnRUaW1lKQorICAgICAgICAgICAgbmVlZHNJbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCA9
IHRydWU7CisgICAgICAgIG1fdmlkZW9GcmFtZXMuZW1wbGFjZShlbnRyeS5kaXNwbGF5VGltZSwg
V1RGTW92ZShlbnRyeS5waXhlbEJ1ZmZlcikpOworICAgIH0KKworICAgIGlmIChuZWVkc0ltYWdl
Rm9yQ3VycmVudFRpbWVDaGFuZ2VkKQorICAgICAgICBuZXh0SW1hZ2VUaW1lUmVhY2hlZCgpOwor
ICAgIGVsc2UgaWYgKGhhc0N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMpCisgICAgICAgIGNv
bmZpZ3VyZU5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworCisgICAgaWYgKG1fcGF1c2VkKQorICAg
ICAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VB
c1Nvb25Bc1Bvc3NpYmxlXTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VWaWRl
b0ZyYW1lRW50cmllcygpCit7CisgICAgY2FuY2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCk7Cisg
ICAgbV92aWRlb0ZyYW1lcy5jbGVhcigpOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0Ojpw
dXJnZUltYWdlc0JlZm9yZVRpbWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lKQoreworICAgIG1fdmlk
ZW9GcmFtZXMuZXJhc2UobV92aWRlb0ZyYW1lcy5iZWdpbigpLCBmaW5kSW1hZ2VGb3JUaW1lKG1f
dmlkZW9GcmFtZXMsIHRpbWUpKTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6cmF0ZUNo
YW5nZWQoZmxvYXQgcmF0ZSkKK3sKKyAgICBtX3BhdXNlZCA9ICFyYXRlOworCisgICAgaWYgKG1f
cGF1c2VkKQorICAgICAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRp
YURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKK30KKworfQorCisjZW5kaWYKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDcxYmVjMjQyMjVmMjYyNmZkYjRkOTAyODM3NDFmZjgwMzI5MjM3MGQuLmVmMDM4Njg5ZTg5ZDAz
MTM5OTkxMTQxODEwMGYxZjNkNmY0YzUxYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0w
MS0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2Fd
IHJWRkMoKSBpc24ndCBjYWxsZWQgZm9yIGluaXRpYWwgdmlkZW8gbG9hZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MDA2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogbWVkaWEvcmVxdWVzdC12aWRlby1m
cmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1
ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9y
ZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWstZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBt
ZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWsuaHRtbDogQWRkZWQuCisKIDIwMjItMDEtMDgg
IEFyY2FkeSBHb2xkbWludHMtT3Jsb3YgIDxhZ29sZG1pbnRzQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dMSUJdIFVwZGF0ZSB0ZXN0IGV4cGVjdGF0aW9ucyBmb3Iga25vd24gZmFpbHVyZXMuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFy
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxv
YWRzdGFydC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMwMmY2NmViYWJkZmI1NzRkOWY5ZmYx
ZDViODFmYzgwODkyMDM2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3Jl
cXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAK
KworUlVOKHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soY2FsbGJhY2spKQorUlVOKHZp
ZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpKQorUHJvbWlz
ZSByZXNvbHZlZCBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVk
aWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQuaHRtbCBiL0xheW91dFRlc3RzL21lZGlh
L3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUwYjNmMWE4
YzYxMWEyNmZjZDBhNTRlZWUwZmIwMmM1NWU2NmY2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWwKQEAgLTAsMCAr
MSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5yZXF1
ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydDwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9InZpZGVv
LXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJtZWRpYS1maWxlLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywg
YXN5bmMgZXZlbnQgPT4geworICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAg
bGV0IHZpZGVvRnJhbWVQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4g
eworICAgICAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVD
YWxsYmFjayhjYWxsYmFjaykpJyk7CisgICAgICAgICAgICB2aWRlby5yZXF1ZXN0VmlkZW9GcmFt
ZUNhbGxiYWNrKHJlc29sdmUpOworICAgICAgICB9KTsKKworICAgICAgICBydW4oJ3ZpZGVvLnNy
YyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpJyk7CisKKyAgICAgICAg
YXdhaXQgc2hvdWxkUmVzb2x2ZSh2aWRlb0ZyYW1lUHJvbWlzZSk7CisKKyAgICAgICAgZW5kVGVz
dCgpOworICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHZpZGVv
IG11dGVkPjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1z
ZWVrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmEwMTVmMjZiODNhYzk5YWZmMzA1NjhiMzJl
NjY5NDE1MDY0Yzc1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVl
c3QtdmlkZW8tZnJhbWUtc2Vlay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACisKK1JVTih2
aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKSkKK0VWRU5U
KGNhbnBsYXl0aHJvdWdoKQorUlVOKHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soY2Fs
bGJhY2spKQorUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMC41KQorUHJvbWlzZSByZXNvbHZlZCBP
SworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12
aWRlby1mcmFtZS1zZWVrLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZy
YW1lLXNlZWsuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTI1OGYwMzYzOGNjZjhhNmM4ZjM0NjBkNzE0MzM0
YTQ3OTA5NThhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12
aWRlby1mcmFtZS1zZWVrLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWs8L3RpdGxl
PgorICAgIDxzY3JpcHQgc3JjPSJ2aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0ibWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB3aW5kb3cu
YWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50ID0+IHsKKyAgICAgICAgZmluZE1l
ZGlhRWxlbWVudCgpOworCisgICAgICAgIHJ1bigndmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgi
dmlkZW8iLCAiY29udGVudC90ZXN0IiknKTsKKworICAgICAgICBhd2FpdCB3YWl0Rm9yKHZpZGVv
LCAnY2FucGxheXRocm91Z2gnKTsKKworICAgICAgICBsZXQgdmlkZW9GcmFtZVByb21pc2UgPSBu
ZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoJ1JVTih2aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGNhbGxiYWNrKSknKTsKKyAg
ICAgICAgICAgIHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2socmVzb2x2ZSk7CisgICAg
ICAgIH0pOworCisgICAgICAgIHJ1bigndmlkZW8uY3VycmVudFRpbWUgPSAwLjUnKTsKKworICAg
ICAgICBhd2FpdCBzaG91bGRSZXNvbHZlKHZpZGVvRnJhbWVQcm9taXNlKTsKKworICAgICAgICBl
bmRUZXN0KCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8
dmlkZW8gbXV0ZWQ+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCg==
</data>
<flag name="commit-queue"
          id="474656"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448724</attachid>
            <date>2022-01-10 00:03:24 -0800</date>
            <delta_ts>2022-01-10 09:19:25 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235006-20220110000324.patch</filename>
            <type>text/plain</type>
            <size>47854</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWFmMDU0ZjhlOGI2MjYx
YzcyNmFjMjc1Mzg0ZWRmZjYzODdlOGY3OS4uZmI1ZmRmY2Q4YjRlNzhlYWY3Njg5MWVjNjNlODhh
ZDZhZjJmMDE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIyLTAxLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gclZGQygpIGlz
bid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
bG9hZHN0YXJ0Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sCisKKyAgICAgICAgQWRkIGEgbmV3IHV0aWxpdHkgY2xhc3MsIFF1ZXVlZFZpZGVv
T3V0cHV0LCB3aGljaCB3aWxsIHB1bGwgcGl4ZWwgYnVmZmVycyBvdXQgb2YgYW4gQVZQbGF5ZXJJ
dGVtVmlkZW9PdXRwdXQKKyAgICAgICAgcHJlLWVtcHRpdmVseS4gT25jZSB0aG9zZSBwaXhlbCBi
dWZmZXJzIGFyZSBlbnF1ZXVlZCBsb2NhbGx5LCB0aGVpciBhc3NvY2lhdGVkIHRpbWluZyBpbmZv
cm1hdGlvbiBjYW4gYmUgdXNlZCB0bworICAgICAgICBmaXJlIGEgY2FsbGJhY2sgZm9yIHRoYXQg
YnVmZmVyJ3MgZGlzcGxheSB0aW1lLgorCisgICAgICAgIFByZXZpb3VzbHksIHBhaW50cyB3ZXJl
IGJsb2NrZWQgZnJvbSBwdWxsaW5nIG5ldyBwaXhlbCBidWZmZXJzIGZyb20gdGhlIHZpZGVvIG91
dHB1dC4gV2l0aCB0aGUgUXVldWVkVmlkZW9PdXRwdXQKKyAgICAgICAgY2xhc3MsIHRoaXMgaXMg
bm8gbG9uZ2VyIG5lY2Vzc2FyeS4gVGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHdpbGwgbm90aWZ5IGl0
cyBjbGllbnQgd2hlbiB0aGUgaW1hZ2UgZm9yIGN1cnJlbnRUaW1lCisgICAgICAgIGNoYW5nZXMs
IGFuZCBvdGhlciBjbGllbnRzIGNhbiBmcmVlbHkgYXNrIGZvciB0aGUgY3VycmVudFRpbWUncyBp
bWFnZS4KKworICAgICAgICBUbyBjdXJiIHJ1bmF3YXkgbWVtb3J5IGdyb3d0aCwgZnJhbWVzIGFy
ZSBwdXJnZWQgYXMgc29vbiBhcyBhIG5ldyBpbWFnZSBmb3IgdGhlIGN1cnJlbnQgdGltZSBpcyBh
dmFpbGFibGUsIGFuZCB3aGVuCisgICAgICAgIHRoZSB2aWRlbyBvdXRwdXQgc2lnbmFscyB0aGF0
IGl0cyBvd24gcXVldWVzIHdlcmUgcHVyZ2VkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjYW5jZWxWaWRlb0ZyYW1lQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2VydmljZVJlcXVl
c3RWaWRlb0ZyYW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omhhc0F2YWlsYWJsZVZpZGVvRnJh
bWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c3RhcnRWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tOZXdWaWRlb0Zy
YW1lTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZp
ZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1ZmZlckZvckN1
cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29sb3JTcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvdXRwdXRNZWRp
YURhdGFXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Omdsb2JhbFB1bGxEZWxlZ2F0ZVF1
ZXVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OndhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIGluaXRXaXRoUGxheWVyOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIG91dHB1dE1lZGlh
RGF0YVdpbGxDaGFuZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVs
ZWdhdGUgb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOl0pOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVl
ZFZpZGVvT3V0cHV0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXRE
ZWxlZ2F0ZSBpbml0V2l0aFBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRw
dXREZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOl0pOgorICAgICAgICAoLVtXZWJR
dWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDpdKToKKyAg
ICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBvYnNlcnZlVmFsdWVGb3JLZXlQ
YXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoV2ViQ29yZTo6Z2xvYmFs
T3V0cHV0RGVsZWdhdGVRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpRdWV1ZWRW
aWRlb091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6flF1ZXVl
ZFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmRlY2x0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OlF1ZXVlZFZpZGVvT3V0cHV0OjpoYXNJbWFnZUZvclRpbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnRha2VWaWRlb0ZyYW1lRW50cnlGb3JUaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjphZGRDdXJyZW50SW1hZ2VDaGFuZ2Vk
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmNvbmZpZ3Vy
ZU5leHRJbWFnZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0
OjppbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRW
aWRlb091dHB1dDo6YWRkVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UXVl
dWVkVmlkZW9PdXRwdXQ6OnB1cmdlVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnB1cmdlSW1hZ2VzQmVmb3JlVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cmF0ZUNoYW5nZWQpOgorCiAyMDIxLTEyLTE0ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtSZWZhY3Rvcl0gQWRv
cHQgTG9nZ2VySGVscGVyIGluIExvZ2dpbmcgRU1FIGNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmlu
ZGV4IDA5ODVhZDA2ZjI3OTQ5MzY4NTEyNmUxNmNlMjIwMThmNDU1NGQwOTguLjdiMjI4MzhjM2Zl
ODY4YzIwZmFkOGI3ZjJiZDRlYjAxZGNiNGIzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDIyLTAxLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gclZGQygpIGlzbid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBs
b2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUw
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBwYWwv
c3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oOgorCiAyMDIyLTAxLTA3ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2
ZXJ0aW5nIHIyODc2OTguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9j
b2NvYS9BVkZvdW5kYXRpb25TUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29h
L0FWRm91bmRhdGlvblNQSS5oCmluZGV4IDhiN2ZmMTIzN2EwYzhjMjJmODgyZmEwYmZlZWU4YmQz
YWQ0Y2I3MTIuLjRmOWNiZTZkM2QyN2VjN2QxYTNkZDdlMWQ4Mjc3MGUzNzE4ODQxNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5o
CkBAIC00MCw5ICs0MCwxMCBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWTWVkaWFTZWxlY3Rp
b25Hcm91cF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZPdXRwdXRDb250ZXh0
X1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVk91dHB1dERldmljZS5oPgotI2lt
cG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyX1ByaXZhdGUuaD4KKyNpbXBvcnQgPEFWRm91bmRh
dGlvbi9BVlBsYXllckl0ZW1PdXRwdXRfUHJpdmF0ZS5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9u
L0FWUGxheWVySXRlbV9Qcml2YXRlLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJM
YXllcl9Qcml2YXRlLmg+CisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJfUHJpdmF0ZS5o
PgogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZX1NJ
TVVMQVRPUikKQEAgLTY2LDYgKzY3LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfRU5ECiAjaW1wb3J0
IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJlU2Vzc2lvbi5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9u
L0FWUGxheWVyLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtLmg+CisjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtT3V0cHV0Lmg+CiAKICNpZiBIQVZFKEFWRk9V
TkRBVElPTl9JTlRFUlNUSVRJQUxfRVZFTlRTKQogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxh
eWVySW50ZXJzdGl0aWFsRXZlbnRDb250cm9sbGVyLmg+CkBAIC05Miw2ICs5NCwxMSBAQCB0eXBl
ZGVmIE5TU3RyaW5nICogQVZWaWRlb1JhbmdlIE5TX1RZUEVEX0VOVU07CiBAZW5kCiAjZW5kaWYK
IAorQGludGVyZmFjZSBBVlBsYXllckl0ZW1WaWRlb091dHB1dCAoQVZQbGF5ZXJJdGVtVmlkZW9P
dXRwdXRFYXJsaWVzdFRpbWUpCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENNVGlt
ZSBlYXJsaWVzdEF2YWlsYWJsZVBpeGVsQnVmZmVySXRlbVRpbWU7CistICh2b2lkKXJlcXVlc3RO
b3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZUFzU29vbkFzUG9zc2libGU7CitAZW5kCisKICNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSB8fCBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY1YjdjMzkwODdhMzcyY2M0MTFlNzk4
MGRkZDIzNTNiNGJlZDE5NDkuLjFjOWMxZDBiYjE2MTc4Mjg1YWVmM2ExYjExZDliZDM3NDc0ZWUz
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTQ0NDYsNiArNDQ0Niw4IEBACiAJCUNEMUY5QjREMjcwRDAzQTkwMDYxN0VCNiAv
KiBTY3JvbGxFeHRlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDFGOUI0QzI3MEQwM0E5MDA2MTdFQjYgLyogU2Nyb2xsRXh0ZW50cy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEMUY5QjdEMjcw
RTY2NzgwMDYxN0VCNiAvKiBIVE1MQW5jaG9yRWxlbWVudElubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5QjdDMjcwRTY2NzgwMDYxN0VC
NiAvKiBIVE1MQW5jaG9yRWxlbWVudElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDFGOUI4MDI3MEU2NzFBMDA2MTdFQjYgLyogU1ZH
RWxlbWVudElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEMUY5QjdGMjcwRTY3MUEwMDYxN0VCNiAvKiBTVkdFbGVtZW50SW5saW5lcy5oICov
OyB9OworCQlDRDIwRUQzQzI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjBFRDNBMjc4
NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5oICovOyB9OworCQlDRDIwRUQzRDI3
ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDIwRUQzQjI3ODc4RkZCMDAzOEJFNDQgLyog
UXVldWVkVmlkZW9PdXRwdXQubW0gKi87IH07CiAJCUNEMjI1QzBCMUM0NkZCRjQwMDE0MDc2MSAv
KiBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QyMjVDMDkxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNl
c3Npb24ubW0gKi87IH07CiAJCUNEMjI1QzBDMUM0NkZCRjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNV
UkxTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDIyNUMwQTFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEMjdBRTUwMjJB
OTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3QUU0RTIyQTk4Njg3MDA5NDdGRjkg
LyogSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xNTg1Niw2ICsxNTg1OCw4IEBACiAJCUNEMUY5QjcwMjcw
REZBN0YwMDYxN0VCNiAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlh
S2V5TWVzc2FnZUV2ZW50SW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
MUY5QjdDMjcwRTY2NzgwMDYxN0VCNiAvKiBIVE1MQW5jaG9yRWxlbWVudElubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSFRNTEFuY2hvckVsZW1lbnRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNEMUY5QjdGMjcwRTY3MUEwMDYxN0VCNiAvKiBTVkdFbGVtZW50SW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdFbGVtZW50SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDRDIwRUQzQTI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRw
dXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUXVldWVkVmlkZW9PdXRwdXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0QyMEVEM0IyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0
cHV0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUXVldWVkVmlkZW9PdXRwdXQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMjI1QzA5MUM0NkZCRjQwMDE0MDc2MSAvKiBXZWJD
b3JlTlNVUkxTZXNzaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0QyMjVDMEExQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZU5TVVJMU2Vzc2lvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI3QUU0RTIyQTk4Njg3MDA5NDdGRjkgLyogSW1hZ2VS
b3RhdGlvblNlc3Npb25WVC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVJvdGF0aW9uU2Vzc2lvblZU
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDU5OSw2ICszMDYwMyw4IEBACiAJ
CQkJQ0RDOEI1QTUxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMu
aCAqLywKIAkJCQlDREM4QjVBNDE4MDQ3NEY3MDAxNkU2ODUgLyogTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5tbSAqLywKIAkJCQk3QTI5RjU3MTE4QzY5NTE0MDA0RDBGODEgLyogT3V0T2ZCYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovLAorCQkJCUNEMjBFRDNBMjc4NzhGRkIwMDM4QkU0NCAv
KiBRdWV1ZWRWaWRlb091dHB1dC5oICovLAorCQkJCUNEMjBFRDNCMjc4NzhGRkIwMDM4QkU0NCAv
KiBRdWV1ZWRWaWRlb091dHB1dC5tbSAqLywKIAkJCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIg
LyogU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oICovLAogCQkJCUNERjk5NEZCMjRDMTJBNkEw
MDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tICovLAogCQkJCUNEQzhCNUE5
MTgwNDdGRjEwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oICovLApAQCAt
MzY1NjcsNiArMzY1NzMsNyBAQAogCQkJCUVCMEZCNzBEMjcwRDBCMkUwMEY3ODEwRCAvKiBQdXNo
U3Vic2NyaXB0aW9uT3B0aW9uc0luaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1MEEwQkNBMDg1
RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Mx
RjU5NDFFREY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlDRDIwRUQzQzI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQuaCBp
biBIZWFkZXJzICovLAogCQkJCUExNUUzMUY0MUUwQ0IwQjUwMDRCMzcxQyAvKiBRdWlja0xvb2su
aCBpbiBIZWFkZXJzICovLAogCQkJCTlCQUVFOTJDMjIzODhBN0QwMDQxNTdBOSAvKiBRdWlya3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUUzNzE3MTM3MzZBNjYwMEI5RTkxOSAvKiBRdW90ZWRQ
cmludGFibGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzg1NDcsNiArMzg1NTQsNyBAQAogCQkJCUFB
MTJERjQ5MTc0M0RGODMwMDREQUZERiAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ29jb2Eu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDREEyOUEzMDFDQkY3NEQ0MDA5MDFDQ0YgLyogUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREEyOUExNjFD
QkRBNTZDMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJQ0QyMEVEM0QyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQyNDkyMTI3QjkzRTAwNjM0RkNGIC8qIFJlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcxQzAw
NEIyNzBCODY0OTAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UubW0gaW4gU291cmNl
cyAqLywKIAkJCQk1QzJCMUFFQzIyMzk3RUJDMDBCOTFDRjcgLyogUmVzb3VyY2VSZXNwb25zZUNv
Y29hLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcAppbmRleCA5NDhkMWQ0MTc0OGU5ZmFkMjkyMmNhZjcwY2ViNjY4YjQ4OGU5OTQxLi40NjIz
ZDE4YWIyNzNhZmFiNWE3MjViYjRiODQ2MTU0ZGI2ZmY3Yjk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTYwMywxMyArNjAzLDE2IEBAIHVuc2lnbmVkIEhU
TUxWaWRlb0VsZW1lbnQ6OnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soUmVmPFZpZGVvRnJhbWVS
ZXF1ZXN0Q2FsbGJhCiAKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6Y2FuY2VsVmlkZW9GcmFtZUNh
bGxiYWNrKHVuc2lnbmVkIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBpbmRleCA9IG1fdmlkZW9G
cmFtZVJlcXVlc3RzLmZpbmRNYXRjaGluZyhbaWRlbnRpZmllcl0oYXV0byYgcmVxdWVzdCkgeyBy
ZXR1cm4gcmVxdWVzdC0+aWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9KTsKLSAgICBpZiAoaW5k
ZXggPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAobV9pc1J1bm5pbmdWaWRl
b0ZyYW1lUmVxdWVzdHMpIHsKLSAgICAgICAgbV92aWRlb0ZyYW1lUmVxdWVzdHNbaW5kZXhdLT5j
YW5jZWxsZWQgPSB0cnVlOworICAgIC8vIFNlYXJjaCBmaXJzdCB0aGUgcmVxdWVzdHMgY3VycmVu
dGx5IGJlaW5nIHNlcnZpY2VkLCBhbmQgbWFyayB0aGVtIGFzIGNhbmNlbGxlZCBpZiBmb3VuZC4K
KyAgICBhdXRvIGluZGV4ID0gbV9zZXJ2aWNlZFZpZGVvRnJhbWVSZXF1ZXN0cy5maW5kTWF0Y2hp
bmcoW2lkZW50aWZpZXJdKGF1dG8mIHJlcXVlc3QpIHsgcmV0dXJuIHJlcXVlc3QtPmlkZW50aWZp
ZXIgPT0gaWRlbnRpZmllcjsgfSk7CisgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKSB7CisgICAg
ICAgIG1fc2VydmljZWRWaWRlb0ZyYW1lUmVxdWVzdHNbaW5kZXhdLT5jYW5jZWxsZWQgPSB0cnVl
OwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgaW5kZXggPSBtX3ZpZGVvRnJhbWVSZXF1
ZXN0cy5maW5kTWF0Y2hpbmcoW2lkZW50aWZpZXJdKGF1dG8mIHJlcXVlc3QpIHsgcmV0dXJuIHJl
cXVlc3QtPmlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsgfSk7CisgICAgaWYgKGluZGV4ID09IG5v
dEZvdW5kKQorICAgICAgICByZXR1cm47CiAgICAgbV92aWRlb0ZyYW1lUmVxdWVzdHMucmVtb3Zl
KGluZGV4KTsKIAogICAgIGlmIChtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5pc0VtcHR5KCkgJiYgcGxh
eWVyKCkpCkBAIC02MzksMjAgKzY0MiwxNCBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNlcnZp
Y2VSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrcyhSZWR1Y2VkUmVzb2x1dGlvblNlY29uZAogCiAg
ICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogCi0gICAgLy8gV2Ugc3RvcmUgdGhlIHNp
emUgYmVmb3JlIGNhbGxpbmcgY2FsbGJhY2tzIGFzIHdlIGRvIG5vdCB3YW50IHRvIGNhbGwgbmV3
bHkgYWRkZWQgY2FsbGJhY2tzLgotICAgIGF1dG8gY2FsbGJhY2tDb3VudCA9IG1fdmlkZW9GcmFt
ZVJlcXVlc3RzLnNpemUoKTsKLQotICAgIG1faXNSdW5uaW5nVmlkZW9GcmFtZVJlcXVlc3RzID0g
dHJ1ZTsKLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY2FsbGJhY2tDb3VudDsg
KytpbmRleCkgewotICAgICAgICBhdXRvJiByZXF1ZXN0ID0gbV92aWRlb0ZyYW1lUmVxdWVzdHNb
aW5kZXhdOworICAgIG1fdmlkZW9GcmFtZVJlcXVlc3RzLnN3YXAobV9zZXJ2aWNlZFZpZGVvRnJh
bWVSZXF1ZXN0cyk7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9zZXJ2aWNlZFZpZGVvRnJh
bWVSZXF1ZXN0cykgewogICAgICAgICBpZiAoIXJlcXVlc3QtPmNhbmNlbGxlZCkgewogICAgICAg
ICAgICAgcmVxdWVzdC0+Y2FsbGJhY2stPmhhbmRsZUV2ZW50KHN0ZDo6cm91bmQobm93Lm1pbGxp
c2Vjb25kcygpKSwgKnZpZGVvRnJhbWVNZXRhZGF0YSk7CiAgICAgICAgICAgICByZXF1ZXN0LT5j
YW5jZWxsZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQotICAgIG1faXNSdW5uaW5nVmlkZW9G
cmFtZVJlcXVlc3RzID0gZmFsc2U7Ci0KLSAgICBtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5yZW1vdmVB
bGxNYXRjaGluZyhbXShhdXRvJiBjYWxsYmFjaykgeyByZXR1cm4gY2FsbGJhY2stPmNhbmNlbGxl
ZDsgfSk7CisgICAgbV9zZXJ2aWNlZFZpZGVvRnJhbWVSZXF1ZXN0cy5jbGVhcigpOwogCiAgICAg
aWYgKG1fdmlkZW9GcmFtZVJlcXVlc3RzLmlzRW1wdHkoKSAmJiBwbGF5ZXIoKSkKICAgICAgICAg
cGxheWVyKCktPnN0b3BWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmcoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggODU2YWRlYTc4ZmI3Mzk4ZDhmYjQ1ZjQ0OGEz
NTkxYmRhNTVmOTcyYy4uZjhkM2I0MDMyZDYwMjQ0YjU0MDE3ODMzZWFmYTAwNjkwNGQxYjQxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTE3Miw4ICsxNzIsOCBA
QCBwcml2YXRlOgogICAgICAgICBib29sIGNhbmNlbGxlZCB7IGZhbHNlIH07CiAgICAgfTsKICAg
ICBWZWN0b3I8VW5pcXVlUmVmPFZpZGVvRnJhbWVSZXF1ZXN0Pj4gbV92aWRlb0ZyYW1lUmVxdWVz
dHM7CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxWaWRlb0ZyYW1lUmVxdWVzdD4+IG1fc2VydmljZWRW
aWRlb0ZyYW1lUmVxdWVzdHM7CiAgICAgdW5zaWduZWQgbV9uZXh0VmlkZW9GcmFtZVJlcXVlc3RJ
bmRleCB7IDAgfTsKLSAgICBib29sIG1faXNSdW5uaW5nVmlkZW9GcmFtZVJlcXVlc3RzIHsgZmFs
c2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApp
bmRleCAxZTY1NzU3MjQ2NTQ5NzM0M2NkZTJhMjRkOGYwZGM2YjRlMDI2N2UxLi5lZWI4ODNkNzdj
NjYyMDMyYTM5MDkyNjAwM2Q5ODNhMjNhZjAwZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8Q29yZU1lZGlhL0NNVGltZS5oPgogI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L09ic2VydmVyLmg+CiAKIE9CSkNfQ0xBU1MgQVZBc3NldEltYWdlR2VuZXJhdG9yOwogT0JKQ19D
TEFTUyBBVkFzc2V0VHJhY2s7CkBAIC02Nyw2ICs2OCw3IEBAIGNsYXNzIEluYmFuZE1ldGFkYXRh
VGV4dFRyYWNrUHJpdmF0ZUFWRjsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CiBjbGFzcyBN
ZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzsKIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7
CitjbGFzcyBRdWV1ZWRWaWRlb091dHB1dDsKIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiBjbGFzcyBWaWRlb0xheWVyTWFuYWdlck9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZUFW
Rk9iakM7CkBAIC0zNDcsNyArMzQ5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0VmlkZW9G
cmFtZU1ldGFkYXRhR2F0aGVyaW5nKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wVmlkZW9GcmFtZU1l
dGFkYXRhR2F0aGVyaW5nKCkgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lTWV0
YWRhdGE+IHZpZGVvRnJhbWVNZXRhZGF0YSgpIGZpbmFsIHsgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2Uo
bV92aWRlb0ZyYW1lTWV0YWRhdGEsIHsgfSk7IH0KLSAgICB2b2lkIGNoZWNrTmV3VmlkZW9GcmFt
ZU1ldGFkYXRhKENNVGltZSk7CisgICAgdm9pZCBjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YSgp
OwogCiAgICAgUmV0YWluUHRyPEFWVVJMQXNzZXQ+IG1fYXZBc3NldDsKICAgICBSZXRhaW5QdHI8
QVZQbGF5ZXI+IG1fYXZQbGF5ZXI7CkBAIC0zNjcsNyArMzY5LDcgQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAgICAgUmV0YWluUHRyPEFWQXNzZXRJbWFnZUdlbmVyYXRvcj4gbV9pbWFnZUdlbmVyYXRv
cjsKLSAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ+IG1fdmlkZW9PdXRwdXQ7
CisgICAgUmVmUHRyPFF1ZXVlZFZpZGVvT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OwogICAgIFJldGFp
blB0cjxXZWJDb3JlQVZGUHVsbERlbGVnYXRlPiBtX3ZpZGVvT3V0cHV0RGVsZWdhdGU7CiAgICAg
UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IG1fbGFzdFBpeGVsQnVmZmVyOwogICAgIFJlZlB0
cjxOYXRpdmVJbWFnZT4gbV9sYXN0SW1hZ2U7CkBAIC00NjQsNiArNDY2LDcgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVNZXRhZGF0YT4gbV92aWRlb0ZyYW1lTWV0YWRh
dGE7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPE5TVGltZUludGVydmFsPiBtX2NhY2hlZFNl
ZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWU7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlv
bmFsPE5TVGltZUludGVydmFsPiBtX2NhY2hlZExpdmVVcGRhdGVJbnRlcnZhbDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8T2JzZXJ2ZXI8dm9pZCgpPj4gbV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2
ZXI7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBjMDY3Y2NlODA2ODZmN2Ex
YmM1NDE0YmFmNzdmNzUyNTJiZjM0MmM3Li45MjNmNTY1N2FiOGNiNTZjNjE5ZmJhNmIwNDJhYTM1
OTA4Y2ZiNzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTU4LDYgKzU4LDcgQEAKICNp
bXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVRleHRUcmFjay5oIgog
I2ltcG9ydCAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJRdWV1ZWRWaWRlb091dHB1
dC5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJTY3Jp
cHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbXBvcnQgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC0yMDUs
MTYgKzIwNiw2IEBAIC0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpcGxheWVyOwogLSAoQk9PTClyZXNvdXJjZUxvYWRlcjoo
QVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgc2hvdWxkV2FpdEZvckxvYWRp
bmdPZlJlcXVlc3RlZFJlc291cmNlOihBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKWxv
YWRpbmdSZXF1ZXN0OwogQGVuZAogCi1AaW50ZXJmYWNlIFdlYkNvcmVBVkZQdWxsRGVsZWdhdGUg
OiBOU09iamVjdDxBVlBsYXllckl0ZW1PdXRwdXRQdWxsRGVsZWdhdGU+IHsKLSAgICBCaW5hcnlT
ZW1hcGhvcmUgbV9zZW1hcGhvcmU7Ci19Ci0tIChpZClpbml0V2l0aFBsYXllcjooV2Vha1B0cjxN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiYmKXBsYXllcjsKLS0gKHZvaWQpb3V0
cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQbGF5ZXJJdGVtT3V0cHV0ICopc2VuZGVyOwotLSAo
dm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KEFWUGxheWVySXRlbU91dHB1dCAqKW91dHB1
dDsKLQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCaW5hcnlTZW1hcGhvcmUmIHNl
bWFwaG9yZTsKLUBlbmQKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIFN0cmluZyBjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhBVlBsYXllclRpbWVDb250cm9sU3RhdHVzIGVudW1lcmF0
aW9uVmFsdWUpCiB7CkBAIC0yNjEsMTYgKzI1Miw2IEBAIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90
IGdsb2JhbExvYWRlckRlbGVnYXRlUXVldWUoKQogICAgIHJldHVybiBnbG9iYWxRdWV1ZTsKIH0K
IAotc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUHVsbERlbGVnYXRlUXVldWUoKQotewot
ICAgIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFF1ZXVlOwotICAgIHN0YXRpYyBkaXNw
YXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsK
LSAgICAgICAgZ2xvYmFsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVBVkZQ
dWxsRGVsZWdhdGUgcXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOwotICAgIH0pOwotICAg
IHJldHVybiBnbG9iYWxRdWV1ZTsKLX0KLQogc3RhdGljIHZvaWQgcmVnaXN0ZXJGb3JtYXRSZWFk
ZXJJZk5lY2Vzc2FyeSgpCiB7CiAjaWYgRU5BQkxFKFdFQk1fRk9STUFUX1JFQURFUikKQEAgLTQ2
OSw3ICs0NTAsOCBAQCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp+TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQygpCiAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9y
ZXNvdXJjZUxvYWRlck1hcCkKICAgICAgICAgcGFpci52YWx1ZS0+aW52YWxpZGF0ZSgpOwogCi0g
ICAgW21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bmlsIHF1ZXVlOjBdOworICAgIGlmIChtX3Zp
ZGVvT3V0cHV0KQorICAgICAgICBtX3ZpZGVvT3V0cHV0LT5pbnZhbGlkYXRlKCk7CiAKICAgICBp
ZiAobV92aWRlb0xheWVyKQogICAgICAgICBkZXN0cm95VmlkZW9MYXllcigpOwpAQCAtNzAyLDcg
KzY4NCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzQXZh
aWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CiAgICAgaWYgKGN1cnJlbnRSZW5kZXJpbmdNb2RlKCkg
PT0gTWVkaWFSZW5kZXJpbmdNb2RlOjpNZWRpYVJlbmRlcmluZ1RvTGF5ZXIpCiAgICAgICAgIHJl
dHVybiBtX2NhY2hlZElzUmVhZHlGb3JEaXNwbGF5OwogCi0gICAgaWYgKG1fdmlkZW9PdXRwdXQg
JiYgKG1fbGFzdFBpeGVsQnVmZmVyIHx8IFttX3ZpZGVvT3V0cHV0IGhhc05ld1BpeGVsQnVmZmVy
Rm9ySXRlbVRpbWU6W21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXV0pKQorICAgIGlmIChtX3Zp
ZGVvT3V0cHV0ICYmIChtX2xhc3RQaXhlbEJ1ZmZlciB8fCBtX3ZpZGVvT3V0cHV0LT5oYXNJbWFn
ZUZvclRpbWUoY3VycmVudE1lZGlhVGltZSgpKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgcmV0dXJuIG1fdmlkZW9GcmFtZUhhc0RyYXduOwpAQCAtMTQ0NCwzNCArMTQyNiwzMCBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtUGF1c2VkKCkg
Y29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdGFydFZp
ZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpCiB7Ci0gICAgQVNTRVJUKCFtX3ZpZGVvRnJhbWVN
ZXRhZGF0YUdhdGhlcmluZ09ic2VydmVyIHx8IG1fYXZQbGF5ZXIpOwotICAgIG1faXNHYXRoZXJp
bmdWaWRlb0ZyYW1lTWV0YWRhdGEgPSB0cnVlOworICAgIC8vIHJlcXVlc3RWaWRlb0ZyYW1lQ2Fs
bGJhY2soKSBjYXJlcyBhYm91dCB0aGUgL25leHQvIGF2YWlsYWJsZSBmcmFtZS4gUHVsbCB0aGUg
Y3VycmVudCBmcmFtZSBmcm9tCisgICAgLy8gdGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHNvIHBhaW50
cyBvZiB0aGUgY3VycmVudCBmcmFtZSBzdWNjZWVkOworICAgIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZl
cigpOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgYSBDQURpc3BsYXlMaW5rIHRvIGdl
dCB1cGRhdGVzIG9uIHJlbmRlcmluZywgZm9yIG5vdyB3ZSBlbXVsYXRlIHdpdGggYWRkUGVyaW9k
aWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbC4KLSAgICBtX3ZpZGVvRnJhbWVNZXRhZGF0YUdhdGhl
cmluZ09ic2VydmVyID0gW21fYXZQbGF5ZXIgYWRkUGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJbnRl
cnZhbDpQQUw6OkNNVGltZU1ha2UoMSwgNjApIHF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCkgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0oQ01UaW1lIGN1cnJl
bnRUaW1lKSB7Ci0gICAgICAgIGVuc3VyZU9uTWFpblRocmVhZChbd2Vha1RoaXMsIGN1cnJlbnRU
aW1lXSB7Ci0gICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgd2Vha1Ro
aXMtPmNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKGN1cnJlbnRUaW1lKTsKLSAgICAgICAgfSk7
Ci0gICAgfV07CisgICAgbV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIgPSBXVEY6Om1ha2VV
bmlxdWU8T2JzZXJ2ZXI8dm9pZCgpPj4oW3RoaXNdIHsKKyAgICAgICAgbV9jdXJyZW50SW1hZ2VD
aGFuZ2VkT2JzZXJ2ZXIgPSBudWxscHRyOworICAgICAgICBjaGVja05ld1ZpZGVvRnJhbWVNZXRh
ZGF0YSgpOworICAgIH0pOworCisgICAgaWYgKG1fdmlkZW9PdXRwdXQpCisgICAgICAgIG1fdmlk
ZW9PdXRwdXQtPmFkZEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcigqbV9jdXJyZW50SW1hZ2VD
aGFuZ2VkT2JzZXJ2ZXIpOworCisgICAgbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSA9
IHRydWU7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hl
Y2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoQ01UaW1lIGN1cnJlbnRUaW1lKQordm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YSgp
CiB7Ci0gICAgaWYgKCF1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSkKKyAgICBpZiAoIW1faXNHYXRo
ZXJpbmdWaWRlb0ZyYW1lTWV0YWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZpZGVvRnJh
bWVNZXRhZGF0YSBtZXRhZGF0YTsKLSAgICBtZXRhZGF0YS53aWR0aCA9IG1fY2FjaGVkUHJlc2Vu
dGF0aW9uU2l6ZS53aWR0aCgpOwotICAgIG1ldGFkYXRhLmhlaWdodCA9IG1fY2FjaGVkUHJlc2Vu
dGF0aW9uU2l6ZS5oZWlnaHQoKTsKLSAgICBtZXRhZGF0YS5wcmVzZW50ZWRGcmFtZXMgPSArK21f
c2FtcGxlQ291bnQ7Ci0gICAgbWV0YWRhdGEubWVkaWFUaW1lID0gUEFMOjpDTVRpbWVHZXRTZWNv
bmRzKGN1cnJlbnRUaW1lKTsKLSAgICAvLyBGSVhNRTogcHJlc2VudGF0aW9uVGltZSBhbmQgZXhw
ZWN0ZWREaXNwbGF5VGltZSBtaWdodCBub3QgYWx3YXlzIGhhdmUgdGhlIHNhbWUgdmFsdWUsIHdl
IHNob3VsZCB0cnkgZ2V0dGluZyBtb3JlIHByZWNpc2UgdmFsdWVzLgotICAgIG1ldGFkYXRhLnBy
ZXNlbnRhdGlvblRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgp
LnNlY29uZHMoKTsKLSAgICBtZXRhZGF0YS5leHBlY3RlZERpc3BsYXlUaW1lID0gbWV0YWRhdGEu
cHJlc2VudGF0aW9uVGltZTsKKyAgICBpZiAoIXVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpICYmICFt
X3ZpZGVvRnJhbWVNZXRhZGF0YSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aWRlb0ZyYW1l
TWV0YWRhdGEgPSBtZXRhZGF0YTsKLSAgICBwbGF5ZXIoKS0+b25OZXdWaWRlb0ZyYW1lTWV0YWRh
dGEoV1RGTW92ZShtZXRhZGF0YSksIG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKKyAgICBwbGF5
ZXIoKS0+b25OZXdWaWRlb0ZyYW1lTWV0YWRhdGEoV1RGTW92ZSgqbV92aWRlb0ZyYW1lTWV0YWRh
dGEpLCBtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3RvcFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpCkBA
IC0yNTE4LDE3ICsyNDk2LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQoKQogICAgIGlmICghbV9hdlBsYXllckl0ZW0gfHwgbV92
aWRlb091dHB1dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aWRlb091dHB1dCA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NBVlBsYXllckl0ZW1WaWRlb091dHB1dEluc3RhbmNlKCkgaW5pdFdpdGhQ
aXhlbEJ1ZmZlckF0dHJpYnV0ZXM6bmlsXSk7CisgICAgbV92aWRlb091dHB1dCA9IFF1ZXVlZFZp
ZGVvT3V0cHV0OjpjcmVhdGUobV9hdlBsYXllckl0ZW0uZ2V0KCksIG1fYXZQbGF5ZXIuZ2V0KCkp
OwogICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0KTsKICAgICBpZiAoIW1fdmlkZW9PdXRwdXQpIHsK
ICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICItW0FWUGxheWVySXRlbVZpZGVvT3V0
cHV0IGluaXRXaXRoUGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOl0gZmFpbGVkISIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotCi0gICAgbV92aWRlb091dHB1dERlbGVnYXRlID0gYWRvcHROUyhbW1dl
YkNvcmVBVkZQdWxsRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGxheWVyOip0aGlzXSk7Ci0gICAg
W21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bV92aWRlb091dHB1dERlbGVnYXRlLmdldCgpIHF1
ZXVlOmdsb2JhbFB1bGxEZWxlZ2F0ZVF1ZXVlKCldOwotCi0gICAgW21fYXZQbGF5ZXJJdGVtIGFk
ZE91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKKyAgICBpZiAobV9jdXJyZW50SW1hZ2VDaGFu
Z2VkT2JzZXJ2ZXIpCisgICAgICAgIG1fdmlkZW9PdXRwdXQtPmFkZEN1cnJlbnRJbWFnZUNoYW5n
ZWRPYnNlcnZlcigqbV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIpOwogCiAgICAgc2V0TmVl
ZHNSZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOwogfQpAQCAtMjUzOCwxOSArMjUxMywxNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb091dHB1dCgp
CiAgICAgaWYgKCFtX3ZpZGVvT3V0cHV0KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9h
dlBsYXllckl0ZW0pCi0gICAgICAgIFttX2F2UGxheWVySXRlbSByZW1vdmVPdXRwdXQ6bV92aWRl
b091dHB1dC5nZXQoKV07Ci0KICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIG1f
dmlkZW9PdXRwdXQgPSAwOworICAgIG1fdmlkZW9PdXRwdXQtPmludmFsaWRhdGUoKTsKKyAgICBt
X3ZpZGVvT3V0cHV0ID0gbnVsbHB0cjsKIAogICAgIHNldE5lZWRzUmVuZGVyaW5nTW9kZUNoYW5n
ZWQoKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRh
dGVMYXN0UGl4ZWxCdWZmZXIoKQogewotICAgIGlmICghbV9hdlBsYXllckl0ZW0gfHwgcmVhZHlT
dGF0ZSgpIDwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSkKKyAgICBp
ZiAoIW1fYXZQbGF5ZXJJdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2hhdmVC
ZWVuQXNrZWRUb1BhaW50ID0gdHJ1ZTsKQEAgLTI1NTksMTIgKzI1MzIsMjUgQEAgYm9vbCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKQog
ICAgICAgICBjcmVhdGVWaWRlb091dHB1dCgpOwogICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0KTsK
IAotICAgIENNVGltZSBjdXJyZW50VGltZSA9IFttX2F2UGxheWVySXRlbSBjdXJyZW50VGltZV07
CisgICAgYXV0byBjdXJyZW50VGltZSA9IGN1cnJlbnRNZWRpYVRpbWUoKTsKIAotICAgIGlmICgh
W21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpjdXJyZW50VGltZV0p
CisgICAgaWYgKCFtX3ZpZGVvT3V0cHV0LT5oYXNJbWFnZUZvclRpbWUoY3VycmVudFRpbWUpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2xhc3RQaXhlbEJ1ZmZlciA9IGFkb3B0Q0Yo
W21fdmlkZW9PdXRwdXQgY29weVBpeGVsQnVmZmVyRm9ySXRlbVRpbWU6Y3VycmVudFRpbWUgaXRl
bVRpbWVGb3JEaXNwbGF5Om5pbF0pOworICAgIGF1dG8gZW50cnkgPSBtX3ZpZGVvT3V0cHV0LT50
YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShjdXJyZW50VGltZSk7CisgICAgbV9sYXN0UGl4ZWxC
dWZmZXIgPSBXVEZNb3ZlKGVudHJ5LnBpeGVsQnVmZmVyKTsKKworICAgIGlmIChtX2lzR2F0aGVy
aW5nVmlkZW9GcmFtZU1ldGFkYXRhKSB7CisgICAgICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9
IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpIC0gKGN1
cnJlbnRUaW1lIC0gZW50cnkuZGlzcGxheVRpbWUpLnRvRG91YmxlKCk7CisgICAgICAgIG1fdmlk
ZW9GcmFtZU1ldGFkYXRhID0geworICAgICAgICAgICAgLndpZHRoID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KENWUGl4ZWxCdWZmZXJHZXRXaWR0aChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpLAor
ICAgICAgICAgICAgLmhlaWdodCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDVlBpeGVsQnVmZmVy
R2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKSksCisgICAgICAgICAgICAucHJlc2Vu
dGVkRnJhbWVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCsrbV9zYW1wbGVDb3VudCksCisgICAg
ICAgICAgICAubWVkaWFUaW1lID0gZW50cnkuZGlzcGxheVRpbWUudG9Eb3VibGUoKSwKKyAgICAg
ICAgICAgIC5wcmVzZW50YXRpb25UaW1lID0gcHJlc2VudGF0aW9uVGltZSwKKyAgICAgICAgICAg
IC5leHBlY3RlZERpc3BsYXlUaW1lID0gcHJlc2VudGF0aW9uVGltZSwKKyAgICAgICAgfTsKKyAg
ICB9CiAKICAgICBpZiAobV9pbWFnZVJvdGF0aW9uU2Vzc2lvbikKICAgICAgICAgbV9sYXN0UGl4
ZWxCdWZmZXIgPSBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5yb3RhdGUobV9sYXN0UGl4ZWxCdWZm
ZXIuZ2V0KCkpOwpAQCAtMjU4NCw3ICsyNTcwLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjp2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCkKICAgICBpZiAo
IW1fdmlkZW9PdXRwdXQpCiAgICAgICAgIGNyZWF0ZVZpZGVvT3V0cHV0KCk7CiAKLSAgICByZXR1
cm4gW21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpbbV9hdlBsYXll
ckl0ZW0gY3VycmVudFRpbWVdXTsKKyAgICByZXR1cm4gbV92aWRlb091dHB1dC0+aGFzSW1hZ2VG
b3JUaW1lKFBBTDo6dG9NZWRpYVRpbWUoW21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXSkpOwog
fQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJ
bWFnZShVcGRhdGVUeXBlIHR5cGUpCkBAIC0yNjAyLDcgKzI1ODgsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlIHR5
cGUpCiAgICAgLy8gQ2FsbHMgdG8gY29weVBpeGVsQnVmZmVyRm9ySXRlbVRpbWU6aXRlbVRpbWVG
b3JEaXNwbGF5OiBtYXkgcmV0dXJuIG5pbCBpZiB0aGUgcGl4ZWwgYnVmZmVyCiAgICAgLy8gZm9y
IHRoZSByZXF1ZXN0ZWQgdGltZSBoYXMgYWxyZWFkeSBiZWVuIHJldHJpZXZlZC4gSW4gdGhpcyBj
YXNlLCB0aGUgbGFzdCB2YWxpZCBpbWFnZSAoaWYgYW55KQogICAgIC8vIHNob3VsZCBiZSBkaXNw
bGF5ZWQuCi0gICAgaWYgKChtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhIHx8ICF1cGRh
dGVMYXN0UGl4ZWxCdWZmZXIoKSkgJiYgKG1fbGFzdEltYWdlIHx8ICFtX2xhc3RQaXhlbEJ1ZmZl
cikpCisgICAgaWYgKCF1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSAmJiAobV9sYXN0SW1hZ2UgfHwg
IW1fbGFzdFBpeGVsQnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3BpeGVs
QnVmZmVyQ29uZm9ybWVyKSB7CkBAIC0yNjM3LDggKzI2MjMsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29u
dGV4dCYgYwogCiBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSgpCiB7Ci0gICAgaWYg
KCFtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhKQotICAgICAgICB1cGRhdGVMYXN0UGl4
ZWxCdWZmZXIoKTsKKyAgICB1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKTsKIAogICAgIHJldHVybiBt
X2xhc3RQaXhlbEJ1ZmZlcjsKIH0KQEAgLTI2NjksNyArMjY1NCwxMSBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdp
bGxDaGFuZ2UoKQogICAgIHN0ZDo6b3B0aW9uYWw8UnVuTG9vcDo6VGltZXI8TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQz4+IHRpbWVvdXRUaW1lcjsKIAogICAgIGlmICghbV9ydW5M
b29wTmVzdGluZ0xldmVsKSB7Ci0gICAgICAgIFttX3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmlj
YXRpb25PZk1lZGlhRGF0YUNoYW5nZVdpdGhBZHZhbmNlSW50ZXJ2YWw6MF07CisgICAgICAgIE9i
c2VydmVyPHZvaWQoKT4gd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZU9ic2Vy
dmVyKFt0aGlzXSB7CisgICAgICAgICAgICBpZiAobV9ydW5Mb29wTmVzdGluZ0xldmVsKQorICAg
ICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5zdG9wKCk7CisgICAgICAgIH0pOworICAgICAg
ICBtX3ZpZGVvT3V0cHV0LT5hZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIod2FpdEZvclZp
ZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZU9ic2VydmVyKTsKIAogICAgICAgICB0aW1lb3V0
VGltZXIuZW1wbGFjZShSdW5Mb29wOjptYWluKCksIFsmXSB7CiAgICAgICAgICAgICBSdW5Mb29w
OjptYWluKCkuc3RvcCgpOwpAQCAtMjY5NiwxNSArMjY4NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENo
YW5nZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6b3V0cHV0
TWVkaWFEYXRhV2lsbENoYW5nZSgpCiB7Ci0gICAgaWYgKG1fcnVuTG9vcE5lc3RpbmdMZXZlbCkg
ewotICAgICAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpCi0gICAgICAgICAgICBSdW5Mb29wOjpt
YWluKCkuc3RvcCgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4o
KS5kaXNwYXRjaChbXSB7Ci0gICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLnN0b3AoKTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfQorICAgIGNoZWNrTmV3VmlkZW9GcmFt
ZU1ldGFkYXRhKCk7CiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKQEAg
LTQwODksMzcgKzQwNzAsNCBAQCAtICh2b2lkKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3Vy
Y2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBkaWRDYW5jZWxMb2FkaW5nUgogCiBAZW5kCiAKLUBp
bXBsZW1lbnRhdGlvbiBXZWJDb3JlQVZGUHVsbERlbGVnYXRlIHsKLSAgICBXZWFrUHRyPFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+IF9wbGF5ZXI7Ci19Ci0KLUBz
eW50aGVzaXplIHNlbWFwaG9yZSA9IG1fc2VtYXBob3JlOwotCi0tIChpZClpbml0V2l0aFBsYXll
cjooV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiYmKXBsYXllcgot
ewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1
cm4gbmlsOwotICAgIF9wbGF5ZXIgPSBXVEZNb3ZlKHBsYXllcik7Ci0gICAgcmV0dXJuIHNlbGY7
Ci19Ci0KLS0gKHZvaWQpb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQbGF5ZXJJdGVtVmlk
ZW9PdXRwdXQgKilvdXRwdXQKLXsKLSAgICBVTlVTRURfUEFSQU0ob3V0cHV0KTsKLSAgICBtX3Nl
bWFwaG9yZS5zaWduYWwoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzZWxmLCBzdHJvbmdTZWxm
ID0gUmV0YWluUHRyIHsgc2VsZiB9XSB7Ci0gICAgICAgIGlmIChfcGxheWVyKQotICAgICAgICAg
ICAgX3BsYXllci0+b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpOwotICAgIH0pOwotfQotCi0t
ICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQg
KilvdXRwdXQKLXsKLSAgICBVTlVTRURfUEFSQU0ob3V0cHV0KTsKLSAgICAvLyBOby1vcC4KLX0K
LQotQGVuZAotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRiYWYwZWExMWU1YzRmYmUzMjRkOTUyNWFkZjFiZGIzYzYzMzBhODgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgPG1h
cD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+Cisj
aW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CisK
K09CSkNfQ0xBU1MgQVZQbGF5ZXI7CitPQkpDX0NMQVNTIEFWUGxheWVySXRlbTsKK09CSkNfQ0xB
U1MgQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ7CitPQkpDX0NMQVNTIFdlYlF1ZXVlZFZpZGVvT3V0
cHV0RGVsZWdhdGU7CisKK3R5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZmZXJS
ZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUXVldWVkVmlkZW9PdXRwdXQKKyAg
ICA6IHB1YmxpYyBSZWZDb3VudGVkPFF1ZXVlZFZpZGVvT3V0cHV0PgorICAgICwgcHVibGljIENh
bk1ha2VXZWFrUHRyPFF1ZXVlZFZpZGVvT3V0cHV0PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxRdWV1ZWRWaWRlb091dHB1dD4gY3JlYXRl
KEFWUGxheWVySXRlbSosIEFWUGxheWVyKik7CisgICAgflF1ZXVlZFZpZGVvT3V0cHV0KCk7CisK
KyAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAgICBib29sIGhhc0ltYWdlRm9yVGltZShjb25zdCBN
ZWRpYVRpbWUmKSBjb25zdDsKKworICAgIHN0cnVjdCBWaWRlb0ZyYW1lRW50cnkgeworICAgICAg
ICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXI7CisgICAgICAgIE1lZGlh
VGltZSBkaXNwbGF5VGltZTsKKyAgICB9OworICAgIFZpZGVvRnJhbWVFbnRyeSB0YWtlVmlkZW9G
cmFtZUVudHJ5Rm9yVGltZShjb25zdCBNZWRpYVRpbWUmKTsKKworICAgIHZvaWQgYWRkVmlkZW9G
cmFtZUVudHJpZXMoVmVjdG9yPFZpZGVvRnJhbWVFbnRyeT4mJik7CisgICAgdm9pZCBwdXJnZVZp
ZGVvRnJhbWVFbnRyaWVzKCk7CisKKyAgICB1c2luZyBDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2
ZXIgPSBPYnNlcnZlcjx2b2lkKCk+OworICAgIHZvaWQgYWRkQ3VycmVudEltYWdlQ2hhbmdlZE9i
c2VydmVyKGNvbnN0IEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciYpOworCisgICAgdXNpbmcg
SW1hZ2VNYXAgPSBzdGQ6Om1hcDxNZWRpYVRpbWUsIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVm
Pj47CisKKyAgICB2b2lkIHJhdGVDaGFuZ2VkKGZsb2F0KTsKKworcHJpdmF0ZToKKyAgICBRdWV1
ZWRWaWRlb091dHB1dChBVlBsYXllckl0ZW0qLCBBVlBsYXllciopOworCisgICAgdm9pZCBwdXJn
ZUltYWdlc0JlZm9yZVRpbWUoY29uc3QgTWVkaWFUaW1lJik7CisgICAgdm9pZCBjb25maWd1cmVO
ZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAgICB2b2lkIGNhbmNlbE5leHRJbWFnZVRpbWVPYnNl
cnZlcigpOworICAgIHZvaWQgbmV4dEltYWdlVGltZVJlYWNoZWQoKTsKKworICAgIFJldGFpblB0
cjxBVlBsYXllckl0ZW0+IG1fcGxheWVySXRlbTsKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXI+IG1f
cGxheWVyOworICAgIFJldGFpblB0cjxXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlPiBtX2Rl
bGVnYXRlOworICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW1WaWRlb091dHB1dD4gbV92aWRlb091
dHB1dDsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fdmlkZW9UaW1lYmFzZU9ic2VydmVyOworICAgIFJl
dGFpblB0cjxpZD4gbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyOworCisgICAgSW1hZ2VNYXAg
bV92aWRlb0ZyYW1lczsKKyAgICBXZWFrSGFzaFNldDxDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2
ZXI+IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyczsKKworICAgIGJvb2wgbV9wYXVzZWQg
eyB0cnVlIH07Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1
ZWRWaWRlb091dHB1dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYmMwODM4MTRjMDhjN2RlZWQ2MWM5MDc5YzIy
YmUzZjUwNzhhNzdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0KQEAgLTAsMCAr
MSwzMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXVl
dWVkVmlkZW9PdXRwdXQuaCIKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgPEFWRm91
bmRhdGlvbi9BVlBsYXllckl0ZW1PdXRwdXQuaD4KKyNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9u
L01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvQVZGb3Vu
ZGF0aW9uU1BJLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJz
Lmg+CisKKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbmNsdWRlIDxw
YWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKworQGludGVyZmFjZSBXZWJRdWV1ZWRW
aWRlb091dHB1dERlbGVnYXRlIDogTlNPYmplY3Q8QVZQbGF5ZXJJdGVtT3V0cHV0UHVsbERlbGVn
YXRlPiB7CisgICAgV2Vha1B0cjxXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dD4gX3BhcmVudDsK
K30KKy0gKGlkKWluaXRXaXRoUGFyZW50OihXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dCopcGFy
ZW50OworLSAodm9pZClvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOihBVlBsYXllckl0ZW1PdXRw
dXQgKilvdXRwdXQ7CistICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJ
dGVtT3V0cHV0ICopb3V0cHV0OworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBh
dGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250
ZXh0Oih2b2lkKiljb250ZXh0OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViUXVldWVkVmlk
ZW9PdXRwdXREZWxlZ2F0ZQorLSAoaWQpaW5pdFdpdGhQYXJlbnQ6KFdlYkNvcmU6OlF1ZXVlZFZp
ZGVvT3V0cHV0KilwYXJlbnQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICgh
c2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9wYXJlbnQgPSBwYXJlbnQ7CisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQ
bGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0Cit7CisgICAgQVNTRVJUKFtvdXRwdXQgaXNLaW5kT2ZD
bGFzczpQQUw6OmdldEFWUGxheWVySXRlbVZpZGVvT3V0cHV0Q2xhc3MoKV0pOworICAgIGF1dG8q
IHZpZGVvT3V0cHV0ID0gKEFWUGxheWVySXRlbVZpZGVvT3V0cHV0KilvdXRwdXQ7CisKKyAgICBW
ZWN0b3I8V2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OlZpZGVvRnJhbWVFbnRyeT4gdmlkZW9G
cmFtZUVudHJpZXM7CisgICAgZG8geworICAgICAgICBDTVRpbWUgZWFybGllc3RUaW1lID0gW3Zp
ZGVvT3V0cHV0IGVhcmxpZXN0QXZhaWxhYmxlUGl4ZWxCdWZmZXJJdGVtVGltZV07CisgICAgICAg
IGlmIChDTVRJTUVfSVNfSU5WQUxJRChlYXJsaWVzdFRpbWUpKQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGFkb3B0Q0YoW3ZpZGVvT3V0cHV0IGNvcHlQ
aXhlbEJ1ZmZlckZvckl0ZW1UaW1lOmVhcmxpZXN0VGltZSBpdGVtVGltZUZvckRpc3BsYXk6bmls
XSk7CisgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpCisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICB2aWRlb0ZyYW1lRW50cmllcy5hcHBlbmQoeyBXVEZNb3ZlKHBpeGVsQnVmZmVyKSwgUEFM
Ojp0b01lZGlhVGltZShlYXJsaWVzdFRpbWUpIH0pOworICAgIH0gd2hpbGUgKHRydWUpOworCisg
ICAgaWYgKHZpZGVvRnJhbWVFbnRyaWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY2FsbE9uTWFpblJ1bkxvb3AoW3ZpZGVvRnJhbWVFbnRyaWVzID0gV1RGTW92ZSh2aWRlb0Zy
YW1lRW50cmllcyksIHBhcmVudCA9IF9wYXJlbnRdICgpIG11dGFibGUgeworICAgICAgICBpZiAo
cGFyZW50KQorICAgICAgICAgICAgcGFyZW50LT5hZGRWaWRlb0ZyYW1lRW50cmllcyhXVEZNb3Zl
KHZpZGVvRnJhbWVFbnRyaWVzKSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpb3V0cHV0U2VxdWVu
Y2VXYXNGbHVzaGVkOihBVlBsYXllckl0ZW1PdXRwdXQgKilvdXRwdXQKK3sKKyAgICBBU1NFUlQo
W291dHB1dCBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXRDbGFz
cygpXSk7CisgICAgYXV0byogdmlkZW9PdXRwdXQgPSAoQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQq
KW91dHB1dDsKKyAgICBbdmlkZW9PdXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRh
Q2hhbmdlQXNTb29uQXNQb3NzaWJsZV07CisKKyAgICBjYWxsT25NYWluUnVuTG9vcChbcGFyZW50
ID0gX3BhcmVudF0geworICAgICAgICBpZiAocGFyZW50KQorICAgICAgICAgICAgcGFyZW50LT5w
dXJnZVZpZGVvRnJhbWVFbnRyaWVzKCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rp
b25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dAoreworICAgIGlmICghW2tleVBh
dGggaXNFcXVhbFRvU3RyaW5nOkAicmF0ZSJdKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IHJhdGVWYWx1ZSA9IChOU051bWJlciopW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hh
bmdlTmV3S2V5XTsKKyAgICBBU1NFUlQoW3JhdGVWYWx1ZSBpc0tpbmRPZkNsYXNzOk5TTnVtYmVy
LmNsYXNzXSk7CisgICAgYXV0byByYXRlID0gcmF0ZVZhbHVlLmZsb2F0VmFsdWU7CisKKyAgICBl
bnN1cmVPbk1haW5SdW5Mb29wKFtwYXJlbnQgPSBfcGFyZW50LCByYXRlXSB7CisgICAgICAgIGlm
IChwYXJlbnQpCisgICAgICAgICAgICBwYXJlbnQtPnJhdGVDaGFuZ2VkKHJhdGUpOworICAgIH0p
OworfQorQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBkaXNwYXRjaF9xdWV1
ZV90IGdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9x
dWV1ZV90IGdsb2JhbFF1ZXVlOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2Vu
OworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgZ2xvYmFsUXVldWUg
PSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgcXVl
dWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworICAgIH0pOworICAgIHJldHVybiBnbG9iYWxR
dWV1ZTsKK30KKworUmVmPFF1ZXVlZFZpZGVvT3V0cHV0PiBRdWV1ZWRWaWRlb091dHB1dDo6Y3Jl
YXRlKEFWUGxheWVySXRlbSogaXRlbSwgQVZQbGF5ZXIqIHBsYXllcikKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBRdWV1ZWRWaWRlb091dHB1dChpdGVtLCBwbGF5ZXIpKTsKK30KKworUXVl
dWVkVmlkZW9PdXRwdXQ6OlF1ZXVlZFZpZGVvT3V0cHV0KEFWUGxheWVySXRlbSogaXRlbSwgQVZQ
bGF5ZXIqIHBsYXllcikKKyAgICA6IG1fcGxheWVySXRlbShpdGVtKQorICAgICwgbV9wbGF5ZXIo
cGxheWVyKQorICAgICwgbV9kZWxlZ2F0ZShhZG9wdE5TKFtbV2ViUXVldWVkVmlkZW9PdXRwdXRE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQoreworICAgIG1fdmlkZW9PdXRw
dXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXRJbnN0YW5jZSgp
IGluaXRXaXRoUGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOm5pbF0pOworICAgIFttX3ZpZGVvT3V0cHV0
IHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCkgcXVldWU6Z2xvYmFsT3V0cHV0RGVsZWdhdGVR
dWV1ZSgpXTsKKyAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURh
dGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKKworICAgIFttX3BsYXllckl0ZW0gYWRkT3V0cHV0
Om1fdmlkZW9PdXRwdXQuZ2V0KCldOworCisgICAgW21fcGxheWVyIGFkZE9ic2VydmVyOm1fZGVs
ZWdhdGUuZ2V0KCkgZm9yS2V5UGF0aDpAInJhdGUiIG9wdGlvbnM6KE5TS2V5VmFsdWVPYnNlcnZp
bmdPcHRpb25OZXcgfCBOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCkgY29udGV4dDpu
aWxdOworCisgICAgbV92aWRlb1RpbWViYXNlT2JzZXJ2ZXIgPSBbbV9wbGF5ZXIgYWRkUGVyaW9k
aWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbDpQQUw6OkNNVGltZU1ha2UoMSwgNjApIHF1ZXVlOmds
b2JhbE91dHB1dERlbGVnYXRlUXVldWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBwcm90ZWN0ZWREZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIHByb3RlY3RlZE91dHB1
dCA9IG1fdmlkZW9PdXRwdXRdKENNVGltZSBjdXJyZW50VGltZSkgbXV0YWJsZSB7CisKKyAgICAg
ICAgLy8gUGVyaW9kaWNhbGx5IGNoZWNrIGZvciBuZXcgYXZhaWxhYmxlIHBpeGVsIGJ1ZmZlcnMu
CisgICAgICAgIFtwcm90ZWN0ZWREZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOnBy
b3RlY3RlZE91dHB1dC5nZXQoKV07CisKKyAgICAgICAgLy8gQW5kIHB1cmdlIHRoZSBiYWNrIGJ1
ZmZlciBvZiBwYXN0IGZyYW1lcy4KKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlz
ID0gd2Vha1RoaXMsIHRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKGN1cnJlbnRUaW1lKV0geworICAg
ICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5wdXJnZUlt
YWdlc0JlZm9yZVRpbWUodGltZSk7CisgICAgICAgIH0pOworICAgIH1dOworfQorCitRdWV1ZWRW
aWRlb091dHB1dDo6flF1ZXVlZFZpZGVvT3V0cHV0KCkKK3sKKyAgICBpbnZhbGlkYXRlKCk7Cit9
CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmludmFsaWRhdGUoKQoreworICAgIGlmIChtX3Zp
ZGVvVGltZWJhc2VPYnNlcnZlcikgeworICAgICAgICBbbV9wbGF5ZXIgcmVtb3ZlVGltZU9ic2Vy
dmVyOm1fdmlkZW9UaW1lYmFzZU9ic2VydmVyLmdldCgpXTsKKyAgICAgICAgbV92aWRlb1RpbWVi
YXNlT2JzZXJ2ZXIgPSBuaWw7CisgICAgfQorCisgICAgY2FuY2VsTmV4dEltYWdlVGltZU9ic2Vy
dmVyKCk7CisKKyAgICBpZiAobV92aWRlb091dHB1dCkgeworICAgICAgICBbbV9wbGF5ZXJJdGVt
IHJlbW92ZU91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKKyAgICAgICAgW21fdmlkZW9PdXRw
dXQgc2V0RGVsZWdhdGU6bmlsIHF1ZXVlOm5pbF07CisgICAgICAgIG1fdmlkZW9PdXRwdXQgPSBu
aWw7CisgICAgfQorCisgICAgaWYgKG1fcGxheWVyKSB7CisgICAgICAgIFttX3BsYXllciByZW1v
dmVPYnNlcnZlcjptX2RlbGVnYXRlLmdldCgpIGZvcktleVBhdGg6QCJyYXRlIl07CisgICAgICAg
IG1fcGxheWVyID0gbmlsOworICAgIH0KKworICAgIG1fcGxheWVySXRlbSA9IG5pbDsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIE1heWJlQ29uc3RNYXAsIHR5cGVuYW1lIE1heWJlQ29uc3RJdGVy
ID0gZGVjbHR5cGUoTWF5YmVDb25zdE1hcCgpLmJlZ2luKCkpPgorTWF5YmVDb25zdEl0ZXIgZmlu
ZEltYWdlRm9yVGltZShNYXliZUNvbnN0TWFwJiBtYXAsIGNvbnN0IE1lZGlhVGltZSYgdGltZSkK
K3sKKyAgICAvLyBPdXRwdXRzIG9mIEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IGhhdmUgYSBkaXNw
bGF5IHRpbWUsIGJ1dCBub3QgYSBkdXJhdGlvbjsgdGhleSBhcmUgdmFsaWQKKyAgICAvLyB1bnRp
bCB0aGUgYXJyaXZhbCBvZiBhIGxhdGVyIGZyYW1lLiBGaW5kIHRoaXMgZnJhbWUgZWZmaWNpZW50
bHkgdXNpbmcgc2V0Ojp1cHBlcl9ib3VuZCB0byBmaW5kCisgICAgLy8gdGhlIG5leHQgZGlzcGxh
eWFibGUgZnJhbWUsIGFuZCB3YWxrIGJhY2t3YXJkcyBieSBvbmUgdG8gZmluZCBhIGZyYW1lIGZv
ciB0aGUgdGFyZ2V0IHRpbWUuCisgICAgaWYgKG1hcC5lbXB0eSgpKQorICAgICAgICByZXR1cm4g
bWFwLmVuZCgpOworCisgICAgYXV0byBpdGVyID0gbWFwLnVwcGVyX2JvdW5kKHRpbWUpOworICAg
IGlmIChpdGVyID09IG1hcC5iZWdpbigpKQorICAgICAgICByZXR1cm4gbWFwLmVuZCgpOworCisg
ICAgcmV0dXJuIC0taXRlcjsKK30KKworYm9vbCBRdWV1ZWRWaWRlb091dHB1dDo6aGFzSW1hZ2VG
b3JUaW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZmluZElt
YWdlRm9yVGltZShtX3ZpZGVvRnJhbWVzLCB0aW1lKSAhPSBtX3ZpZGVvRnJhbWVzLmVuZCgpOwor
fQorCithdXRvIFF1ZXVlZFZpZGVvT3V0cHV0Ojp0YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShj
b25zdCBNZWRpYVRpbWUmIHRpbWUpIC0+IFZpZGVvRnJhbWVFbnRyeQoreworICAgIGF1dG8gaXRl
ciA9IGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywgdGltZSk7CisgICAgaWYgKGl0ZXIg
PT0gbV92aWRlb0ZyYW1lcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgTWVkaWFU
aW1lOjppbnZhbGlkVGltZSgpIH07CisKKyAgICBWaWRlb0ZyYW1lRW50cnkgZW50cnkgPSB7IFdU
Rk1vdmUoaXRlci0+c2Vjb25kKSwgaXRlci0+Zmlyc3QgfTsKKworICAgIC8vIFB1cmdlIGFsbCBm
cmFtZXMgYmVmb3JlIGB0aW1lYCwgc28gdGhhdCByZXBlYXRlZCBjYWxscyB3aXRoIHRoZSBzYW1l
IHRpbWUgZG9uJ3QgcmV0dXJuCisgICAgLy8gc3VjY2Vzc2l2ZWx5IGVhcmxpZXIgaW1hZ2VzLgor
ICAgIG1fdmlkZW9GcmFtZXMuZXJhc2UobV92aWRlb0ZyYW1lcy5iZWdpbigpLCArK2l0ZXIpOwor
CisgICAgcmV0dXJuIGVudHJ5OworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjphZGRDdXJy
ZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoY29uc3QgQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVy
JiBvYnNlcnZlcikKK3sKKyAgICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMuYWRkKG9i
c2VydmVyKTsKKyAgICBjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKworICAgIFtt
X3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZUFzU29vbkFz
UG9zc2libGVdOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0Ojpjb25maWd1cmVOZXh0SW1h
Z2VUaW1lT2JzZXJ2ZXIoKQoreworICAgIGlmIChtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY3VycmVudFRpbWUgPSBQQUw6OnRvTWVkaWFU
aW1lKFttX3BsYXllciBjdXJyZW50VGltZV0pOworICAgIGF1dG8gaXRlciA9IGZpbmRJbWFnZUZv
clRpbWUobV92aWRlb0ZyYW1lcywgY3VycmVudFRpbWUpOworICAgIGlmIChpdGVyID09IG1fdmlk
ZW9GcmFtZXMuZW5kKCkgfHwgKytpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gbmV4dEltYWdlVGltZSA9IGl0ZXItPmZpcnN0OworCisgICAg
bV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyID0gW21fcGxheWVyIGFkZEJvdW5kYXJ5VGltZU9i
c2VydmVyRm9yVGltZXM6QFtbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWU6UEFMOjp0b0NNVGltZShj
dXJyZW50VGltZSldXSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCkgdXNpbmdCbG9j
azpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvdGVjdGVkRGVsZWdhdGUgPSBtX2Rl
bGVnYXRlLCBwcm90ZWN0ZWRPdXRwdXQgPSBtX3ZpZGVvT3V0cHV0XSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldIHsK
KyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bmV4
dEltYWdlVGltZVJlYWNoZWQoKTsKKyAgICAgICAgfSk7CisgICAgfV07Cit9CisKK3ZvaWQgUXVl
dWVkVmlkZW9PdXRwdXQ6OmNhbmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigpCit7CisgICAgaWYg
KCFtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFtt
X3BsYXllciByZW1vdmVUaW1lT2JzZXJ2ZXI6bV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyLmdl
dCgpXTsKKyAgICBtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIgPSBuaWw7Cit9CisKK3ZvaWQg
UXVldWVkVmlkZW9PdXRwdXQ6Om5leHRJbWFnZVRpbWVSZWFjaGVkKCkKK3sKKyAgICBjYW5jZWxO
ZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAgICBhdXRvIG9ic2VydmVycyA9IHN0ZDo6ZXhjaGFu
Z2UobV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzLCB7IH0pOworICAgIG9ic2VydmVycy5m
b3JFYWNoKFtdKGF1dG8mIG9ic2VydmVyKSB7IG9ic2VydmVyKCk7IH0pOworfQorCit2b2lkIFF1
ZXVlZFZpZGVvT3V0cHV0OjphZGRWaWRlb0ZyYW1lRW50cmllcyhWZWN0b3I8VmlkZW9GcmFtZUVu
dHJ5PiYmIHZpZGVvRnJhbWVFbnRyaWVzKQoreworICAgIGJvb2wgbmVlZHNJbWFnZUZvckN1cnJl
bnRUaW1lQ2hhbmdlZCA9IGZhbHNlOworICAgIGJvb2wgaGFzQ3VycmVudEltYWdlQ2hhbmdlZE9i
c2VydmVycyA9IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycy5jb21wdXRlU2l6ZSgpOwor
ICAgIE1lZGlhVGltZSBjdXJyZW50VGltZSA9IGhhc0N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZl
cnMgPyBQQUw6OnRvTWVkaWFUaW1lKFttX3BsYXllciBjdXJyZW50VGltZV0pIDogTWVkaWFUaW1l
OjppbnZhbGlkVGltZSgpOworCisgICAgZm9yIChhdXRvJiBlbnRyeSA6IHZpZGVvRnJhbWVFbnRy
aWVzKSB7CisgICAgICAgIGlmIChoYXNDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzICYmIGVu
dHJ5LmRpc3BsYXlUaW1lIDw9IGN1cnJlbnRUaW1lKQorICAgICAgICAgICAgbmVlZHNJbWFnZUZv
ckN1cnJlbnRUaW1lQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIG1fdmlkZW9GcmFtZXMuZW1wbGFj
ZShlbnRyeS5kaXNwbGF5VGltZSwgV1RGTW92ZShlbnRyeS5waXhlbEJ1ZmZlcikpOworICAgIH0K
KworICAgIGlmIChuZWVkc0ltYWdlRm9yQ3VycmVudFRpbWVDaGFuZ2VkKQorICAgICAgICBuZXh0
SW1hZ2VUaW1lUmVhY2hlZCgpOworICAgIGVsc2UgaWYgKGhhc0N1cnJlbnRJbWFnZUNoYW5nZWRP
YnNlcnZlcnMpCisgICAgICAgIGNvbmZpZ3VyZU5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworCisg
ICAgaWYgKG1fcGF1c2VkKQorICAgICAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0
aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKK30KKwordm9pZCBRdWV1ZWRW
aWRlb091dHB1dDo6cHVyZ2VWaWRlb0ZyYW1lRW50cmllcygpCit7CisgICAgY2FuY2VsTmV4dElt
YWdlVGltZU9ic2VydmVyKCk7CisgICAgbV92aWRlb0ZyYW1lcy5jbGVhcigpOworfQorCit2b2lk
IFF1ZXVlZFZpZGVvT3V0cHV0OjpwdXJnZUltYWdlc0JlZm9yZVRpbWUoY29uc3QgTWVkaWFUaW1l
JiB0aW1lKQoreworICAgIG1fdmlkZW9GcmFtZXMuZXJhc2UobV92aWRlb0ZyYW1lcy5iZWdpbigp
LCBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFtZXMsIHRpbWUpKTsKK30KKwordm9pZCBRdWV1
ZWRWaWRlb091dHB1dDo6cmF0ZUNoYW5nZWQoZmxvYXQgcmF0ZSkKK3sKKyAgICBtX3BhdXNlZCA9
ICFyYXRlOworCisgICAgaWYgKG1fcGF1c2VkKQorICAgICAgICBbbV92aWRlb091dHB1dCByZXF1
ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKK30KKwor
fQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcxYmVjMjQyMjVmMjYyNmZkYjRkOTAyODM3NDFmZjgwMzI5
MjM3MGQuLmVmMDM4Njg5ZTg5ZDAzMTM5OTkxMTQxODEwMGYxZjNkNmY0YzUxYWMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAyMi0wMS0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KKworICAgICAgICBbQ29jb2FdIHJWRkMoKSBpc24ndCBjYWxsZWQgZm9yIGluaXRpYWwgdmlk
ZW8gbG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM1MDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICog
bWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWstZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWsuaHRtbDog
QWRkZWQuCisKIDIwMjItMDEtMDggIEFyY2FkeSBHb2xkbWludHMtT3Jsb3YgIDxhZ29sZG1pbnRz
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdIFVwZGF0ZSB0ZXN0IGV4cGVjdGF0aW9ucyBm
b3Iga25vd24gZmFpbHVyZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0
LXZpZGVvLWZyYW1lLWxvYWRzdGFydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9y
ZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMw
MmY2NmViYWJkZmI1NzRkOWY5ZmYxZDViODFmYzgwODkyMDM2YQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0LWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDYgQEAKKworUlVOKHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJh
Y2soY2FsbGJhY2spKQorUlVOKHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNv
bnRlbnQvdGVzdCIpKQorUHJvbWlzZSByZXNvbHZlZCBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQuaHRt
bCBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjUwYjNmMWE4YzYxMWEyNmZjZDBhNTRlZWUwZmIwMmM1NWU2NmY2MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9h
ZHN0YXJ0Lmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorICAgIDx0aXRsZT5yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydDwvdGl0bGU+Cisg
ICAgPHNjcmlwdCBzcmM9InZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJtZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworICAgICAgICBmaW5kTWVkaWFF
bGVtZW50KCk7CisKKyAgICAgICAgbGV0IHZpZGVvRnJhbWVQcm9taXNlID0gbmV3IFByb21pc2Uo
KHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlk
ZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhjYWxsYmFjaykpJyk7CisgICAgICAgICAgICB2
aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKHJlc29sdmUpOworICAgICAgICB9KTsKKwor
ICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQv
dGVzdCIpJyk7CisKKyAgICAgICAgYXdhaXQgc2hvdWxkUmVzb2x2ZSh2aWRlb0ZyYW1lUHJvbWlz
ZSk7CisKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CisgICAgPHZpZGVvIG11dGVkPjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEv
cmVxdWVzdC12aWRlby1mcmFtZS1zZWVrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlh
L3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmEwMTVm
MjZiODNhYzk5YWZmMzA1NjhiMzJlNjY5NDE1MDY0Yzc1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw4IEBACisKK1JVTih2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJj
b250ZW50L3Rlc3QiKSkKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorUlVOKHZpZGVvLnJlcXVlc3RW
aWRlb0ZyYW1lQ2FsbGJhY2soY2FsbGJhY2spKQorUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMC41
KQorUHJvbWlzZSByZXNvbHZlZCBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1zZWVrLmh0bWwgYi9MYXlvdXRUZXN0cy9t
ZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWsuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTI1OGYwMzYz
OGNjZjhhNmM4ZjM0NjBkNzE0MzM0YTQ3OTA5NThhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1zZWVrLmh0bWwKQEAgLTAsMCArMSwzMSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5yZXF1ZXN0LXZp
ZGVvLWZyYW1lLXNlZWs8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSJ2aWRlby10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0ibWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdD4KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50
ID0+IHsKKyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgIHJ1bigndmlkZW8u
c3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0IiknKTsKKworICAgICAg
ICBhd2FpdCB3YWl0Rm9yKHZpZGVvLCAnY2FucGxheXRocm91Z2gnKTsKKworICAgICAgICBsZXQg
dmlkZW9GcmFtZVByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7Cisg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxi
YWNrKGNhbGxiYWNrKSknKTsKKyAgICAgICAgICAgIHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2Fs
bGJhY2socmVzb2x2ZSk7CisgICAgICAgIH0pOworCisgICAgICAgIHJ1bigndmlkZW8uY3VycmVu
dFRpbWUgPSAwLjUnKTsKKworICAgICAgICBhd2FpdCBzaG91bGRSZXNvbHZlKHZpZGVvRnJhbWVQ
cm9taXNlKTsKKworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKyAgICA8dmlkZW8gbXV0ZWQ+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="commit-queue"
          id="474666"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448758</attachid>
            <date>2022-01-10 09:05:40 -0800</date>
            <delta_ts>2022-01-11 09:30:56 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235006-20220110090539.patch</filename>
            <type>text/plain</type>
            <size>47889</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWFmMDU0ZjhlOGI2MjYx
YzcyNmFjMjc1Mzg0ZWRmZjYzODdlOGY3OS4uZmI1ZmRmY2Q4YjRlNzhlYWY3Njg5MWVjNjNlODhh
ZDZhZjJmMDE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIyLTAxLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gclZGQygpIGlz
bid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
bG9hZHN0YXJ0Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sCisKKyAgICAgICAgQWRkIGEgbmV3IHV0aWxpdHkgY2xhc3MsIFF1ZXVlZFZpZGVv
T3V0cHV0LCB3aGljaCB3aWxsIHB1bGwgcGl4ZWwgYnVmZmVycyBvdXQgb2YgYW4gQVZQbGF5ZXJJ
dGVtVmlkZW9PdXRwdXQKKyAgICAgICAgcHJlLWVtcHRpdmVseS4gT25jZSB0aG9zZSBwaXhlbCBi
dWZmZXJzIGFyZSBlbnF1ZXVlZCBsb2NhbGx5LCB0aGVpciBhc3NvY2lhdGVkIHRpbWluZyBpbmZv
cm1hdGlvbiBjYW4gYmUgdXNlZCB0bworICAgICAgICBmaXJlIGEgY2FsbGJhY2sgZm9yIHRoYXQg
YnVmZmVyJ3MgZGlzcGxheSB0aW1lLgorCisgICAgICAgIFByZXZpb3VzbHksIHBhaW50cyB3ZXJl
IGJsb2NrZWQgZnJvbSBwdWxsaW5nIG5ldyBwaXhlbCBidWZmZXJzIGZyb20gdGhlIHZpZGVvIG91
dHB1dC4gV2l0aCB0aGUgUXVldWVkVmlkZW9PdXRwdXQKKyAgICAgICAgY2xhc3MsIHRoaXMgaXMg
bm8gbG9uZ2VyIG5lY2Vzc2FyeS4gVGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHdpbGwgbm90aWZ5IGl0
cyBjbGllbnQgd2hlbiB0aGUgaW1hZ2UgZm9yIGN1cnJlbnRUaW1lCisgICAgICAgIGNoYW5nZXMs
IGFuZCBvdGhlciBjbGllbnRzIGNhbiBmcmVlbHkgYXNrIGZvciB0aGUgY3VycmVudFRpbWUncyBp
bWFnZS4KKworICAgICAgICBUbyBjdXJiIHJ1bmF3YXkgbWVtb3J5IGdyb3d0aCwgZnJhbWVzIGFy
ZSBwdXJnZWQgYXMgc29vbiBhcyBhIG5ldyBpbWFnZSBmb3IgdGhlIGN1cnJlbnQgdGltZSBpcyBh
dmFpbGFibGUsIGFuZCB3aGVuCisgICAgICAgIHRoZSB2aWRlbyBvdXRwdXQgc2lnbmFscyB0aGF0
IGl0cyBvd24gcXVldWVzIHdlcmUgcHVyZ2VkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjYW5jZWxWaWRlb0ZyYW1lQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2VydmljZVJlcXVl
c3RWaWRlb0ZyYW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omhhc0F2YWlsYWJsZVZpZGVvRnJh
bWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c3RhcnRWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tOZXdWaWRlb0Zy
YW1lTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZp
ZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1ZmZlckZvckN1
cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29sb3JTcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvdXRwdXRNZWRp
YURhdGFXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Omdsb2JhbFB1bGxEZWxlZ2F0ZVF1
ZXVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OndhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIGluaXRXaXRoUGxheWVyOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIG91dHB1dE1lZGlh
RGF0YVdpbGxDaGFuZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVs
ZWdhdGUgb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOl0pOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVl
ZFZpZGVvT3V0cHV0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXRE
ZWxlZ2F0ZSBpbml0V2l0aFBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRw
dXREZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOl0pOgorICAgICAgICAoLVtXZWJR
dWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDpdKToKKyAg
ICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBvYnNlcnZlVmFsdWVGb3JLZXlQ
YXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoV2ViQ29yZTo6Z2xvYmFs
T3V0cHV0RGVsZWdhdGVRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpRdWV1ZWRW
aWRlb091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6flF1ZXVl
ZFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmRlY2x0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OlF1ZXVlZFZpZGVvT3V0cHV0OjpoYXNJbWFnZUZvclRpbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnRha2VWaWRlb0ZyYW1lRW50cnlGb3JUaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjphZGRDdXJyZW50SW1hZ2VDaGFuZ2Vk
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmNvbmZpZ3Vy
ZU5leHRJbWFnZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0
OjppbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRW
aWRlb091dHB1dDo6YWRkVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UXVl
dWVkVmlkZW9PdXRwdXQ6OnB1cmdlVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnB1cmdlSW1hZ2VzQmVmb3JlVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cmF0ZUNoYW5nZWQpOgorCiAyMDIxLTEyLTE0ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtSZWZhY3Rvcl0gQWRv
cHQgTG9nZ2VySGVscGVyIGluIExvZ2dpbmcgRU1FIGNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmlu
ZGV4IDA5ODVhZDA2ZjI3OTQ5MzY4NTEyNmUxNmNlMjIwMThmNDU1NGQwOTguLjdiMjI4MzhjM2Zl
ODY4YzIwZmFkOGI3ZjJiZDRlYjAxZGNiNGIzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDIyLTAxLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gclZGQygpIGlzbid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBs
b2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUw
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBwYWwv
c3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oOgorCiAyMDIyLTAxLTA3ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2
ZXJ0aW5nIHIyODc2OTguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9j
b2NvYS9BVkZvdW5kYXRpb25TUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29h
L0FWRm91bmRhdGlvblNQSS5oCmluZGV4IDhiN2ZmMTIzN2EwYzhjMjJmODgyZmEwYmZlZWU4YmQz
YWQ0Y2I3MTIuLjRmOWNiZTZkM2QyN2VjN2QxYTNkZDdlMWQ4Mjc3MGUzNzE4ODQxNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5o
CkBAIC00MCw5ICs0MCwxMCBAQAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWTWVkaWFTZWxlY3Rp
b25Hcm91cF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZPdXRwdXRDb250ZXh0
X1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVk91dHB1dERldmljZS5oPgotI2lt
cG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyX1ByaXZhdGUuaD4KKyNpbXBvcnQgPEFWRm91bmRh
dGlvbi9BVlBsYXllckl0ZW1PdXRwdXRfUHJpdmF0ZS5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9u
L0FWUGxheWVySXRlbV9Qcml2YXRlLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJM
YXllcl9Qcml2YXRlLmg+CisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJfUHJpdmF0ZS5o
PgogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZX1NJ
TVVMQVRPUikKQEAgLTY2LDYgKzY3LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfRU5ECiAjaW1wb3J0
IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJlU2Vzc2lvbi5oPgogI2ltcG9ydCA8QVZGb3VuZGF0aW9u
L0FWUGxheWVyLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtLmg+CisjaW1w
b3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtT3V0cHV0Lmg+CiAKICNpZiBIQVZFKEFWRk9V
TkRBVElPTl9JTlRFUlNUSVRJQUxfRVZFTlRTKQogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxh
eWVySW50ZXJzdGl0aWFsRXZlbnRDb250cm9sbGVyLmg+CkBAIC05Miw2ICs5NCwxMSBAQCB0eXBl
ZGVmIE5TU3RyaW5nICogQVZWaWRlb1JhbmdlIE5TX1RZUEVEX0VOVU07CiBAZW5kCiAjZW5kaWYK
IAorQGludGVyZmFjZSBBVlBsYXllckl0ZW1WaWRlb091dHB1dCAoQVZQbGF5ZXJJdGVtVmlkZW9P
dXRwdXRFYXJsaWVzdFRpbWUpCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENNVGlt
ZSBlYXJsaWVzdEF2YWlsYWJsZVBpeGVsQnVmZmVySXRlbVRpbWU7CistICh2b2lkKXJlcXVlc3RO
b3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZUFzU29vbkFzUG9zc2libGU7CitAZW5kCisKICNp
ZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSB8fCBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY1YjdjMzkwODdhMzcyY2M0MTFlNzk4
MGRkZDIzNTNiNGJlZDE5NDkuLjFjOWMxZDBiYjE2MTc4Mjg1YWVmM2ExYjExZDliZDM3NDc0ZWUz
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTQ0NDYsNiArNDQ0Niw4IEBACiAJCUNEMUY5QjREMjcwRDAzQTkwMDYxN0VCNiAv
KiBTY3JvbGxFeHRlbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDFGOUI0QzI3MEQwM0E5MDA2MTdFQjYgLyogU2Nyb2xsRXh0ZW50cy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEMUY5QjdEMjcw
RTY2NzgwMDYxN0VCNiAvKiBIVE1MQW5jaG9yRWxlbWVudElubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5QjdDMjcwRTY2NzgwMDYxN0VC
NiAvKiBIVE1MQW5jaG9yRWxlbWVudElubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDFGOUI4MDI3MEU2NzFBMDA2MTdFQjYgLyogU1ZH
RWxlbWVudElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEMUY5QjdGMjcwRTY3MUEwMDYxN0VCNiAvKiBTVkdFbGVtZW50SW5saW5lcy5oICov
OyB9OworCQlDRDIwRUQzQzI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjBFRDNBMjc4
NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5oICovOyB9OworCQlDRDIwRUQzRDI3
ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDIwRUQzQjI3ODc4RkZCMDAzOEJFNDQgLyog
UXVldWVkVmlkZW9PdXRwdXQubW0gKi87IH07CiAJCUNEMjI1QzBCMUM0NkZCRjQwMDE0MDc2MSAv
KiBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0QyMjVDMDkxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNl
c3Npb24ubW0gKi87IH07CiAJCUNEMjI1QzBDMUM0NkZCRjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNV
UkxTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDIyNUMwQTFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEMjdBRTUwMjJB
OTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lvblZULmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDI3QUU0RTIyQTk4Njg3MDA5NDdGRjkg
LyogSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xNTg1Niw2ICsxNTg1OCw4IEBACiAJCUNEMUY5QjcwMjcw
REZBN0YwMDYxN0VCNiAvKiBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlh
S2V5TWVzc2FnZUV2ZW50SW5pdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNE
MUY5QjdDMjcwRTY2NzgwMDYxN0VCNiAvKiBIVE1MQW5jaG9yRWxlbWVudElubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSFRNTEFuY2hvckVsZW1lbnRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNEMUY5QjdGMjcwRTY3MUEwMDYxN0VCNiAvKiBTVkdFbGVtZW50SW5saW5l
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdFbGVtZW50SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDRDIwRUQzQTI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRw
dXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUXVldWVkVmlkZW9PdXRwdXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0QyMEVEM0IyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0
cHV0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUXVldWVkVmlkZW9PdXRwdXQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMjI1QzA5MUM0NkZCRjQwMDE0MDc2MSAvKiBXZWJD
b3JlTlNVUkxTZXNzaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0QyMjVDMEExQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZU5TVVJMU2Vzc2lvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDI3QUU0RTIyQTk4Njg3MDA5NDdGRjkgLyogSW1hZ2VS
b3RhdGlvblNlc3Npb25WVC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVJvdGF0aW9uU2Vzc2lvblZU
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDU5OSw2ICszMDYwMyw4IEBACiAJ
CQkJQ0RDOEI1QTUxODA0NzRGNzAwMTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMu
aCAqLywKIAkJCQlDREM4QjVBNDE4MDQ3NEY3MDAxNkU2ODUgLyogTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5tbSAqLywKIAkJCQk3QTI5RjU3MTE4QzY5NTE0MDA0RDBGODEgLyogT3V0T2ZCYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovLAorCQkJCUNEMjBFRDNBMjc4NzhGRkIwMDM4QkU0NCAv
KiBRdWV1ZWRWaWRlb091dHB1dC5oICovLAorCQkJCUNEMjBFRDNCMjc4NzhGRkIwMDM4QkU0NCAv
KiBRdWV1ZWRWaWRlb091dHB1dC5tbSAqLywKIAkJCQlDREY5OTRGQTI0QzEyQTZBMDAyRUEwNjIg
LyogU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oICovLAogCQkJCUNERjk5NEZCMjRDMTJBNkEw
MDJFQTA2MiAvKiBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tICovLAogCQkJCUNEQzhCNUE5
MTgwNDdGRjEwMDE2RTY4NSAvKiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oICovLApAQCAt
MzY1NjcsNiArMzY1NzMsNyBAQAogCQkJCUVCMEZCNzBEMjcwRDBCMkUwMEY3ODEwRCAvKiBQdXNo
U3Vic2NyaXB0aW9uT3B0aW9uc0luaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1MEEwQkNBMDg1
RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0Mx
RjU5NDFFREY2OUQzMDA0MTBEMjcgLyogUXVhbGlmaWVkTmFtZUNhY2hlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlDRDIwRUQzQzI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQuaCBp
biBIZWFkZXJzICovLAogCQkJCUExNUUzMUY0MUUwQ0IwQjUwMDRCMzcxQyAvKiBRdWlja0xvb2su
aCBpbiBIZWFkZXJzICovLAogCQkJCTlCQUVFOTJDMjIzODhBN0QwMDQxNTdBOSAvKiBRdWlya3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUUzNzE3MTM3MzZBNjYwMEI5RTkxOSAvKiBRdW90ZWRQ
cmludGFibGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzg1NDcsNiArMzg1NTQsNyBAQAogCQkJCUFB
MTJERjQ5MTc0M0RGODMwMDREQUZERiAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyQ29jb2Eu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDREEyOUEzMDFDQkY3NEQ0MDA5MDFDQ0YgLyogUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREEyOUExNjFD
QkRBNTZDMDA5MDFDQ0YgLyogUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJQ0QyMEVEM0QyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE5MjQyNDkyMTI3QjkzRTAwNjM0RkNGIC8qIFJlYWx0
aW1lT3V0Z29pbmdWaWRlb1NvdXJjZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcxQzAw
NEIyNzBCODY0OTAwRDAyN0M3IC8qIFJlcGxheUtpdENhcHR1cmVTb3VyY2UubW0gaW4gU291cmNl
cyAqLywKIAkJCQk1QzJCMUFFQzIyMzk3RUJDMDBCOTFDRjcgLyogUmVzb3VyY2VSZXNwb25zZUNv
Y29hLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcAppbmRleCA5NDhkMWQ0MTc0OGU5ZmFkMjkyMmNhZjcwY2ViNjY4YjQ4OGU5OTQxLi40NjIz
ZDE4YWIyNzNhZmFiNWE3MjViYjRiODQ2MTU0ZGI2ZmY3Yjk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTYwMywxMyArNjAzLDE2IEBAIHVuc2lnbmVkIEhU
TUxWaWRlb0VsZW1lbnQ6OnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soUmVmPFZpZGVvRnJhbWVS
ZXF1ZXN0Q2FsbGJhCiAKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6Y2FuY2VsVmlkZW9GcmFtZUNh
bGxiYWNrKHVuc2lnbmVkIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBpbmRleCA9IG1fdmlkZW9G
cmFtZVJlcXVlc3RzLmZpbmRNYXRjaGluZyhbaWRlbnRpZmllcl0oYXV0byYgcmVxdWVzdCkgeyBy
ZXR1cm4gcmVxdWVzdC0+aWRlbnRpZmllciA9PSBpZGVudGlmaWVyOyB9KTsKLSAgICBpZiAoaW5k
ZXggPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAobV9pc1J1bm5pbmdWaWRl
b0ZyYW1lUmVxdWVzdHMpIHsKLSAgICAgICAgbV92aWRlb0ZyYW1lUmVxdWVzdHNbaW5kZXhdLT5j
YW5jZWxsZWQgPSB0cnVlOworICAgIC8vIFNlYXJjaCBmaXJzdCB0aGUgcmVxdWVzdHMgY3VycmVu
dGx5IGJlaW5nIHNlcnZpY2VkLCBhbmQgbWFyayB0aGVtIGFzIGNhbmNlbGxlZCBpZiBmb3VuZC4K
KyAgICBhdXRvIGluZGV4ID0gbV9zZXJ2aWNlZFZpZGVvRnJhbWVSZXF1ZXN0cy5maW5kTWF0Y2hp
bmcoW2lkZW50aWZpZXJdKGF1dG8mIHJlcXVlc3QpIHsgcmV0dXJuIHJlcXVlc3QtPmlkZW50aWZp
ZXIgPT0gaWRlbnRpZmllcjsgfSk7CisgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKSB7CisgICAg
ICAgIG1fc2VydmljZWRWaWRlb0ZyYW1lUmVxdWVzdHNbaW5kZXhdLT5jYW5jZWxsZWQgPSB0cnVl
OwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgaW5kZXggPSBtX3ZpZGVvRnJhbWVSZXF1
ZXN0cy5maW5kTWF0Y2hpbmcoW2lkZW50aWZpZXJdKGF1dG8mIHJlcXVlc3QpIHsgcmV0dXJuIHJl
cXVlc3QtPmlkZW50aWZpZXIgPT0gaWRlbnRpZmllcjsgfSk7CisgICAgaWYgKGluZGV4ID09IG5v
dEZvdW5kKQorICAgICAgICByZXR1cm47CiAgICAgbV92aWRlb0ZyYW1lUmVxdWVzdHMucmVtb3Zl
KGluZGV4KTsKIAogICAgIGlmIChtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5pc0VtcHR5KCkgJiYgcGxh
eWVyKCkpCkBAIC02MzksMjAgKzY0MiwxNCBAQCB2b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNlcnZp
Y2VSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrcyhSZWR1Y2VkUmVzb2x1dGlvblNlY29uZAogCiAg
ICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogCi0gICAgLy8gV2Ugc3RvcmUgdGhlIHNp
emUgYmVmb3JlIGNhbGxpbmcgY2FsbGJhY2tzIGFzIHdlIGRvIG5vdCB3YW50IHRvIGNhbGwgbmV3
bHkgYWRkZWQgY2FsbGJhY2tzLgotICAgIGF1dG8gY2FsbGJhY2tDb3VudCA9IG1fdmlkZW9GcmFt
ZVJlcXVlc3RzLnNpemUoKTsKLQotICAgIG1faXNSdW5uaW5nVmlkZW9GcmFtZVJlcXVlc3RzID0g
dHJ1ZTsKLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY2FsbGJhY2tDb3VudDsg
KytpbmRleCkgewotICAgICAgICBhdXRvJiByZXF1ZXN0ID0gbV92aWRlb0ZyYW1lUmVxdWVzdHNb
aW5kZXhdOworICAgIG1fdmlkZW9GcmFtZVJlcXVlc3RzLnN3YXAobV9zZXJ2aWNlZFZpZGVvRnJh
bWVSZXF1ZXN0cyk7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9zZXJ2aWNlZFZpZGVvRnJh
bWVSZXF1ZXN0cykgewogICAgICAgICBpZiAoIXJlcXVlc3QtPmNhbmNlbGxlZCkgewogICAgICAg
ICAgICAgcmVxdWVzdC0+Y2FsbGJhY2stPmhhbmRsZUV2ZW50KHN0ZDo6cm91bmQobm93Lm1pbGxp
c2Vjb25kcygpKSwgKnZpZGVvRnJhbWVNZXRhZGF0YSk7CiAgICAgICAgICAgICByZXF1ZXN0LT5j
YW5jZWxsZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQotICAgIG1faXNSdW5uaW5nVmlkZW9G
cmFtZVJlcXVlc3RzID0gZmFsc2U7Ci0KLSAgICBtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5yZW1vdmVB
bGxNYXRjaGluZyhbXShhdXRvJiBjYWxsYmFjaykgeyByZXR1cm4gY2FsbGJhY2stPmNhbmNlbGxl
ZDsgfSk7CisgICAgbV9zZXJ2aWNlZFZpZGVvRnJhbWVSZXF1ZXN0cy5jbGVhcigpOwogCiAgICAg
aWYgKG1fdmlkZW9GcmFtZVJlcXVlc3RzLmlzRW1wdHkoKSAmJiBwbGF5ZXIoKSkKICAgICAgICAg
cGxheWVyKCktPnN0b3BWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmcoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKaW5kZXggODU2YWRlYTc4ZmI3Mzk4ZDhmYjQ1ZjQ0OGEz
NTkxYmRhNTVmOTcyYy4uZjhkM2I0MDMyZDYwMjQ0YjU0MDE3ODMzZWFmYTAwNjkwNGQxYjQxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgKQEAgLTE3Miw4ICsxNzIsOCBA
QCBwcml2YXRlOgogICAgICAgICBib29sIGNhbmNlbGxlZCB7IGZhbHNlIH07CiAgICAgfTsKICAg
ICBWZWN0b3I8VW5pcXVlUmVmPFZpZGVvRnJhbWVSZXF1ZXN0Pj4gbV92aWRlb0ZyYW1lUmVxdWVz
dHM7CisgICAgVmVjdG9yPFVuaXF1ZVJlZjxWaWRlb0ZyYW1lUmVxdWVzdD4+IG1fc2VydmljZWRW
aWRlb0ZyYW1lUmVxdWVzdHM7CiAgICAgdW5zaWduZWQgbV9uZXh0VmlkZW9GcmFtZVJlcXVlc3RJ
bmRleCB7IDAgfTsKLSAgICBib29sIG1faXNSdW5uaW5nVmlkZW9GcmFtZVJlcXVlc3RzIHsgZmFs
c2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApp
bmRleCAxZTY1NzU3MjQ2NTQ5NzM0M2NkZTJhMjRkOGYwZGM2YjRlMDI2N2UxLi5lZWI4ODNkNzdj
NjYyMDMyYTM5MDkyNjAwM2Q5ODNhMjNhZjAwZmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8Q29yZU1lZGlhL0NNVGltZS5oPgogI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L09ic2VydmVyLmg+CiAKIE9CSkNfQ0xBU1MgQVZBc3NldEltYWdlR2VuZXJhdG9yOwogT0JKQ19D
TEFTUyBBVkFzc2V0VHJhY2s7CkBAIC02Nyw2ICs2OCw3IEBAIGNsYXNzIEluYmFuZE1ldGFkYXRh
VGV4dFRyYWNrUHJpdmF0ZUFWRjsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CiBjbGFzcyBN
ZWRpYVNlbGVjdGlvbkdyb3VwQVZGT2JqQzsKIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7
CitjbGFzcyBRdWV1ZWRWaWRlb091dHB1dDsKIGNsYXNzIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXI7
CiBjbGFzcyBWaWRlb0xheWVyTWFuYWdlck9iakM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZUFW
Rk9iakM7CkBAIC0zNDcsNyArMzQ5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0VmlkZW9G
cmFtZU1ldGFkYXRhR2F0aGVyaW5nKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wVmlkZW9GcmFtZU1l
dGFkYXRhR2F0aGVyaW5nKCkgZmluYWw7CiAgICAgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lTWV0
YWRhdGE+IHZpZGVvRnJhbWVNZXRhZGF0YSgpIGZpbmFsIHsgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2Uo
bV92aWRlb0ZyYW1lTWV0YWRhdGEsIHsgfSk7IH0KLSAgICB2b2lkIGNoZWNrTmV3VmlkZW9GcmFt
ZU1ldGFkYXRhKENNVGltZSk7CisgICAgdm9pZCBjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YSgp
OwogCiAgICAgUmV0YWluUHRyPEFWVVJMQXNzZXQ+IG1fYXZBc3NldDsKICAgICBSZXRhaW5QdHI8
QVZQbGF5ZXI+IG1fYXZQbGF5ZXI7CkBAIC0zNjcsNyArMzY5LDcgQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAgICAgUmV0YWluUHRyPEFWQXNzZXRJbWFnZUdlbmVyYXRvcj4gbV9pbWFnZUdlbmVyYXRv
cjsKLSAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ+IG1fdmlkZW9PdXRwdXQ7
CisgICAgUmVmUHRyPFF1ZXVlZFZpZGVvT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OwogICAgIFJldGFp
blB0cjxXZWJDb3JlQVZGUHVsbERlbGVnYXRlPiBtX3ZpZGVvT3V0cHV0RGVsZWdhdGU7CiAgICAg
UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IG1fbGFzdFBpeGVsQnVmZmVyOwogICAgIFJlZlB0
cjxOYXRpdmVJbWFnZT4gbV9sYXN0SW1hZ2U7CkBAIC00NjQsNiArNDY2LDcgQEAgcHJpdmF0ZToK
ICAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVNZXRhZGF0YT4gbV92aWRlb0ZyYW1lTWV0YWRh
dGE7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPE5TVGltZUludGVydmFsPiBtX2NhY2hlZFNl
ZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWU7CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlv
bmFsPE5TVGltZUludGVydmFsPiBtX2NhY2hlZExpdmVVcGRhdGVJbnRlcnZhbDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8T2JzZXJ2ZXI8dm9pZCgpPj4gbV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2
ZXI7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBjMDY3Y2NlODA2ODZmN2Ex
YmM1NDE0YmFmNzdmNzUyNTJiZjM0MmM3Li5jZjI0NDI4ZWJhYmRlZjdiNzg5M2MwNzU2NmViNzc2
M2Y4ZWFhNzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTU4LDYgKzU4LDcgQEAKICNp
bXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVRleHRUcmFjay5oIgog
I2ltcG9ydCAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJRdWV1ZWRWaWRlb091dHB1
dC5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJTY3Jp
cHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbXBvcnQgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC0yMDUs
MTYgKzIwNiw2IEBAIC0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpcGxheWVyOwogLSAoQk9PTClyZXNvdXJjZUxvYWRlcjoo
QVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgc2hvdWxkV2FpdEZvckxvYWRp
bmdPZlJlcXVlc3RlZFJlc291cmNlOihBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVxdWVzdCAqKWxv
YWRpbmdSZXF1ZXN0OwogQGVuZAogCi1AaW50ZXJmYWNlIFdlYkNvcmVBVkZQdWxsRGVsZWdhdGUg
OiBOU09iamVjdDxBVlBsYXllckl0ZW1PdXRwdXRQdWxsRGVsZWdhdGU+IHsKLSAgICBCaW5hcnlT
ZW1hcGhvcmUgbV9zZW1hcGhvcmU7Ci19Ci0tIChpZClpbml0V2l0aFBsYXllcjooV2Vha1B0cjxN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiYmKXBsYXllcjsKLS0gKHZvaWQpb3V0
cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQbGF5ZXJJdGVtT3V0cHV0ICopc2VuZGVyOwotLSAo
dm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KEFWUGxheWVySXRlbU91dHB1dCAqKW91dHB1
dDsKLQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCaW5hcnlTZW1hcGhvcmUmIHNl
bWFwaG9yZTsKLUBlbmQKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIFN0cmluZyBjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhBVlBsYXllclRpbWVDb250cm9sU3RhdHVzIGVudW1lcmF0
aW9uVmFsdWUpCiB7CkBAIC0yNjEsMTYgKzI1Miw2IEBAIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90
IGdsb2JhbExvYWRlckRlbGVnYXRlUXVldWUoKQogICAgIHJldHVybiBnbG9iYWxRdWV1ZTsKIH0K
IAotc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUHVsbERlbGVnYXRlUXVldWUoKQotewot
ICAgIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFF1ZXVlOwotICAgIHN0YXRpYyBkaXNw
YXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsK
LSAgICAgICAgZ2xvYmFsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYkNvcmVBVkZQ
dWxsRGVsZWdhdGUgcXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOwotICAgIH0pOwotICAg
IHJldHVybiBnbG9iYWxRdWV1ZTsKLX0KLQogc3RhdGljIHZvaWQgcmVnaXN0ZXJGb3JtYXRSZWFk
ZXJJZk5lY2Vzc2FyeSgpCiB7CiAjaWYgRU5BQkxFKFdFQk1fRk9STUFUX1JFQURFUikKQEAgLTQ2
OSw3ICs0NTAsOCBAQCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp+TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQygpCiAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9y
ZXNvdXJjZUxvYWRlck1hcCkKICAgICAgICAgcGFpci52YWx1ZS0+aW52YWxpZGF0ZSgpOwogCi0g
ICAgW21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bmlsIHF1ZXVlOjBdOworICAgIGlmIChtX3Zp
ZGVvT3V0cHV0KQorICAgICAgICBtX3ZpZGVvT3V0cHV0LT5pbnZhbGlkYXRlKCk7CiAKICAgICBp
ZiAobV92aWRlb0xheWVyKQogICAgICAgICBkZXN0cm95VmlkZW9MYXllcigpOwpAQCAtNzAyLDcg
KzY4NCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6aGFzQXZh
aWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CiAgICAgaWYgKGN1cnJlbnRSZW5kZXJpbmdNb2RlKCkg
PT0gTWVkaWFSZW5kZXJpbmdNb2RlOjpNZWRpYVJlbmRlcmluZ1RvTGF5ZXIpCiAgICAgICAgIHJl
dHVybiBtX2NhY2hlZElzUmVhZHlGb3JEaXNwbGF5OwogCi0gICAgaWYgKG1fdmlkZW9PdXRwdXQg
JiYgKG1fbGFzdFBpeGVsQnVmZmVyIHx8IFttX3ZpZGVvT3V0cHV0IGhhc05ld1BpeGVsQnVmZmVy
Rm9ySXRlbVRpbWU6W21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXV0pKQorICAgIGlmIChtX3Zp
ZGVvT3V0cHV0ICYmIChtX2xhc3RQaXhlbEJ1ZmZlciB8fCBtX3ZpZGVvT3V0cHV0LT5oYXNJbWFn
ZUZvclRpbWUoY3VycmVudE1lZGlhVGltZSgpKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgcmV0dXJuIG1fdmlkZW9GcmFtZUhhc0RyYXduOwpAQCAtMTQ0NCwzNCArMTQyNiwzMCBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtUGF1c2VkKCkg
Y29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdGFydFZp
ZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpCiB7Ci0gICAgQVNTRVJUKCFtX3ZpZGVvRnJhbWVN
ZXRhZGF0YUdhdGhlcmluZ09ic2VydmVyIHx8IG1fYXZQbGF5ZXIpOwotICAgIG1faXNHYXRoZXJp
bmdWaWRlb0ZyYW1lTWV0YWRhdGEgPSB0cnVlOworICAgIC8vIHJlcXVlc3RWaWRlb0ZyYW1lQ2Fs
bGJhY2soKSBjYXJlcyBhYm91dCB0aGUgL25leHQvIGF2YWlsYWJsZSBmcmFtZS4gUHVsbCB0aGUg
Y3VycmVudCBmcmFtZSBmcm9tCisgICAgLy8gdGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHNvIHBhaW50
cyBvZiB0aGUgY3VycmVudCBmcmFtZSBzdWNjZWVkOworICAgIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZl
cigpOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgYSBDQURpc3BsYXlMaW5rIHRvIGdl
dCB1cGRhdGVzIG9uIHJlbmRlcmluZywgZm9yIG5vdyB3ZSBlbXVsYXRlIHdpdGggYWRkUGVyaW9k
aWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbC4KLSAgICBtX3ZpZGVvRnJhbWVNZXRhZGF0YUdhdGhl
cmluZ09ic2VydmVyID0gW21fYXZQbGF5ZXIgYWRkUGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJbnRl
cnZhbDpQQUw6OkNNVGltZU1ha2UoMSwgNjApIHF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCkgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0oQ01UaW1lIGN1cnJl
bnRUaW1lKSB7Ci0gICAgICAgIGVuc3VyZU9uTWFpblRocmVhZChbd2Vha1RoaXMsIGN1cnJlbnRU
aW1lXSB7Ci0gICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgd2Vha1Ro
aXMtPmNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKGN1cnJlbnRUaW1lKTsKLSAgICAgICAgfSk7
Ci0gICAgfV07CisgICAgbV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIgPSBXVEY6Om1ha2VV
bmlxdWU8T2JzZXJ2ZXI8dm9pZCgpPj4oW3RoaXNdIHsKKyAgICAgICAgbV9jdXJyZW50SW1hZ2VD
aGFuZ2VkT2JzZXJ2ZXIgPSBudWxscHRyOworICAgICAgICBjaGVja05ld1ZpZGVvRnJhbWVNZXRh
ZGF0YSgpOworICAgIH0pOworCisgICAgaWYgKG1fdmlkZW9PdXRwdXQpCisgICAgICAgIG1fdmlk
ZW9PdXRwdXQtPmFkZEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcigqbV9jdXJyZW50SW1hZ2VD
aGFuZ2VkT2JzZXJ2ZXIpOworCisgICAgbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSA9
IHRydWU7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hl
Y2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoQ01UaW1lIGN1cnJlbnRUaW1lKQordm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YSgp
CiB7Ci0gICAgaWYgKCF1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSkKKyAgICBpZiAoIW1faXNHYXRo
ZXJpbmdWaWRlb0ZyYW1lTWV0YWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZpZGVvRnJh
bWVNZXRhZGF0YSBtZXRhZGF0YTsKLSAgICBtZXRhZGF0YS53aWR0aCA9IG1fY2FjaGVkUHJlc2Vu
dGF0aW9uU2l6ZS53aWR0aCgpOwotICAgIG1ldGFkYXRhLmhlaWdodCA9IG1fY2FjaGVkUHJlc2Vu
dGF0aW9uU2l6ZS5oZWlnaHQoKTsKLSAgICBtZXRhZGF0YS5wcmVzZW50ZWRGcmFtZXMgPSArK21f
c2FtcGxlQ291bnQ7Ci0gICAgbWV0YWRhdGEubWVkaWFUaW1lID0gUEFMOjpDTVRpbWVHZXRTZWNv
bmRzKGN1cnJlbnRUaW1lKTsKLSAgICAvLyBGSVhNRTogcHJlc2VudGF0aW9uVGltZSBhbmQgZXhw
ZWN0ZWREaXNwbGF5VGltZSBtaWdodCBub3QgYWx3YXlzIGhhdmUgdGhlIHNhbWUgdmFsdWUsIHdl
IHNob3VsZCB0cnkgZ2V0dGluZyBtb3JlIHByZWNpc2UgdmFsdWVzLgotICAgIG1ldGFkYXRhLnBy
ZXNlbnRhdGlvblRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgp
LnNlY29uZHMoKTsKLSAgICBtZXRhZGF0YS5leHBlY3RlZERpc3BsYXlUaW1lID0gbWV0YWRhdGEu
cHJlc2VudGF0aW9uVGltZTsKKyAgICBpZiAoIXVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpICYmICFt
X3ZpZGVvRnJhbWVNZXRhZGF0YSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aWRlb0ZyYW1l
TWV0YWRhdGEgPSBtZXRhZGF0YTsKLSAgICBwbGF5ZXIoKS0+b25OZXdWaWRlb0ZyYW1lTWV0YWRh
dGEoV1RGTW92ZShtZXRhZGF0YSksIG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKKyAgICBwbGF5
ZXIoKS0+b25OZXdWaWRlb0ZyYW1lTWV0YWRhdGEoV1RGTW92ZSgqbV92aWRlb0ZyYW1lTWV0YWRh
dGEpLCBtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3RvcFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpCkBA
IC0yNTE4LDE3ICsyNDk2LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQoKQogICAgIGlmICghbV9hdlBsYXllckl0ZW0gfHwgbV92
aWRlb091dHB1dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aWRlb091dHB1dCA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NBVlBsYXllckl0ZW1WaWRlb091dHB1dEluc3RhbmNlKCkgaW5pdFdpdGhQ
aXhlbEJ1ZmZlckF0dHJpYnV0ZXM6bmlsXSk7CisgICAgbV92aWRlb091dHB1dCA9IFF1ZXVlZFZp
ZGVvT3V0cHV0OjpjcmVhdGUobV9hdlBsYXllckl0ZW0uZ2V0KCksIG1fYXZQbGF5ZXIuZ2V0KCkp
OwogICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0KTsKICAgICBpZiAoIW1fdmlkZW9PdXRwdXQpIHsK
ICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICItW0FWUGxheWVySXRlbVZpZGVvT3V0
cHV0IGluaXRXaXRoUGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOl0gZmFpbGVkISIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotCi0gICAgbV92aWRlb091dHB1dERlbGVnYXRlID0gYWRvcHROUyhbW1dl
YkNvcmVBVkZQdWxsRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGxheWVyOip0aGlzXSk7Ci0gICAg
W21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bV92aWRlb091dHB1dERlbGVnYXRlLmdldCgpIHF1
ZXVlOmdsb2JhbFB1bGxEZWxlZ2F0ZVF1ZXVlKCldOwotCi0gICAgW21fYXZQbGF5ZXJJdGVtIGFk
ZE91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKKyAgICBpZiAobV9jdXJyZW50SW1hZ2VDaGFu
Z2VkT2JzZXJ2ZXIpCisgICAgICAgIG1fdmlkZW9PdXRwdXQtPmFkZEN1cnJlbnRJbWFnZUNoYW5n
ZWRPYnNlcnZlcigqbV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIpOwogCiAgICAgc2V0TmVl
ZHNSZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOwogfQpAQCAtMjUzOCwxOSArMjUxMywxOSBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRlb091dHB1dCgp
CiAgICAgaWYgKCFtX3ZpZGVvT3V0cHV0KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9h
dlBsYXllckl0ZW0pCi0gICAgICAgIFttX2F2UGxheWVySXRlbSByZW1vdmVPdXRwdXQ6bV92aWRl
b091dHB1dC5nZXQoKV07Ci0KICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIG1f
dmlkZW9PdXRwdXQgPSAwOworICAgIG1fdmlkZW9PdXRwdXQtPmludmFsaWRhdGUoKTsKKyAgICBt
X3ZpZGVvT3V0cHV0ID0gbnVsbHB0cjsKKworICAgIG1fdmlkZW9GcmFtZU1ldGFkYXRhID0geyB9
OwogCiAgICAgc2V0TmVlZHNSZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOwogfQogCiBib29sIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpCiB7
Ci0gICAgaWYgKCFtX2F2UGxheWVySXRlbSB8fCByZWFkeVN0YXRlKCkgPCBNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhKQorICAgIGlmICghbV9hdlBsYXllckl0ZW0pCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1faGF2ZUJlZW5Bc2tlZFRvUGFpbnQgPSB0cnVl
OwpAQCAtMjU1OSwxMiArMjUzNCwyNSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpCiAgICAgICAgIGNyZWF0ZVZpZGVvT3V0
cHV0KCk7CiAgICAgQVNTRVJUKG1fdmlkZW9PdXRwdXQpOwogCi0gICAgQ01UaW1lIGN1cnJlbnRU
aW1lID0gW21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXTsKKyAgICBhdXRvIGN1cnJlbnRUaW1l
ID0gY3VycmVudE1lZGlhVGltZSgpOwogCi0gICAgaWYgKCFbbV92aWRlb091dHB1dCBoYXNOZXdQ
aXhlbEJ1ZmZlckZvckl0ZW1UaW1lOmN1cnJlbnRUaW1lXSkKKyAgICBpZiAoIW1fdmlkZW9PdXRw
dXQtPmhhc0ltYWdlRm9yVGltZShjdXJyZW50VGltZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIG1fbGFzdFBpeGVsQnVmZmVyID0gYWRvcHRDRihbbV92aWRlb091dHB1dCBjb3B5UGl4
ZWxCdWZmZXJGb3JJdGVtVGltZTpjdXJyZW50VGltZSBpdGVtVGltZUZvckRpc3BsYXk6bmlsXSk7
CisgICAgYXV0byBlbnRyeSA9IG1fdmlkZW9PdXRwdXQtPnRha2VWaWRlb0ZyYW1lRW50cnlGb3JU
aW1lKGN1cnJlbnRUaW1lKTsKKyAgICBtX2xhc3RQaXhlbEJ1ZmZlciA9IFdURk1vdmUoZW50cnku
cGl4ZWxCdWZmZXIpOworCisgICAgaWYgKG1faXNHYXRoZXJpbmdWaWRlb0ZyYW1lTWV0YWRhdGEp
IHsKKyAgICAgICAgYXV0byBwcmVzZW50YXRpb25UaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCku
c2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkgLSAoY3VycmVudFRpbWUgLSBlbnRyeS5kaXNw
bGF5VGltZSkudG9Eb3VibGUoKTsKKyAgICAgICAgbV92aWRlb0ZyYW1lTWV0YWRhdGEgPSB7Cisg
ICAgICAgICAgICAud2lkdGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1ZQaXhlbEJ1ZmZlckdl
dFdpZHRoKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKSksCisgICAgICAgICAgICAuaGVpZ2h0ID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQobV9sYXN0UGl4ZWxC
dWZmZXIuZ2V0KCkpKSwKKyAgICAgICAgICAgIC5wcmVzZW50ZWRGcmFtZXMgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oKyttX3NhbXBsZUNvdW50KSwKKyAgICAgICAgICAgIC5tZWRpYVRpbWUgPSBl
bnRyeS5kaXNwbGF5VGltZS50b0RvdWJsZSgpLAorICAgICAgICAgICAgLnByZXNlbnRhdGlvblRp
bWUgPSBwcmVzZW50YXRpb25UaW1lLAorICAgICAgICAgICAgLmV4cGVjdGVkRGlzcGxheVRpbWUg
PSBwcmVzZW50YXRpb25UaW1lLAorICAgICAgICB9OworICAgIH0KIAogICAgIGlmIChtX2ltYWdl
Um90YXRpb25TZXNzaW9uKQogICAgICAgICBtX2xhc3RQaXhlbEJ1ZmZlciA9IG1faW1hZ2VSb3Rh
dGlvblNlc3Npb24tPnJvdGF0ZShtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CkBAIC0yNTg0LDcg
KzI1NzIsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnZpZGVv
T3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUoKQogICAgIGlmICghbV92aWRlb091dHB1dCkKICAgICAg
ICAgY3JlYXRlVmlkZW9PdXRwdXQoKTsKIAotICAgIHJldHVybiBbbV92aWRlb091dHB1dCBoYXNO
ZXdQaXhlbEJ1ZmZlckZvckl0ZW1UaW1lOlttX2F2UGxheWVySXRlbSBjdXJyZW50VGltZV1dOwor
ICAgIHJldHVybiBtX3ZpZGVvT3V0cHV0LT5oYXNJbWFnZUZvclRpbWUoUEFMOjp0b01lZGlhVGlt
ZShbbV9hdlBsYXllckl0ZW0gY3VycmVudFRpbWVdKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGUgdHlwZSkK
QEAgLTI2MDIsNyArMjU5MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6dXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGUgdHlwZSkKICAgICAvLyBDYWxscyB0byBj
b3B5UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTppdGVtVGltZUZvckRpc3BsYXk6IG1heSByZXR1cm4g
bmlsIGlmIHRoZSBwaXhlbCBidWZmZXIKICAgICAvLyBmb3IgdGhlIHJlcXVlc3RlZCB0aW1lIGhh
cyBhbHJlYWR5IGJlZW4gcmV0cmlldmVkLiBJbiB0aGlzIGNhc2UsIHRoZSBsYXN0IHZhbGlkIGlt
YWdlIChpZiBhbnkpCiAgICAgLy8gc2hvdWxkIGJlIGRpc3BsYXllZC4KLSAgICBpZiAoKG1faXNH
YXRoZXJpbmdWaWRlb0ZyYW1lTWV0YWRhdGEgfHwgIXVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpKSAm
JiAobV9sYXN0SW1hZ2UgfHwgIW1fbGFzdFBpeGVsQnVmZmVyKSkKKyAgICBpZiAoIXVwZGF0ZUxh
c3RQaXhlbEJ1ZmZlcigpICYmIChtX2xhc3RJbWFnZSB8fCAhbV9sYXN0UGl4ZWxCdWZmZXIpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fcGl4ZWxCdWZmZXJDb25mb3JtZXIpIHsKQEAg
LTI2MzcsOCArMjYyNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiBjCiAKIFJldGFpblB0cjxD
VlBpeGVsQnVmZmVyUmVmPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhl
bEJ1ZmZlckZvckN1cnJlbnRUaW1lKCkKIHsKLSAgICBpZiAoIW1faXNHYXRoZXJpbmdWaWRlb0Zy
YW1lTWV0YWRhdGEpCi0gICAgICAgIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpOworICAgIHVwZGF0
ZUxhc3RQaXhlbEJ1ZmZlcigpOwogCiAgICAgcmV0dXJuIG1fbGFzdFBpeGVsQnVmZmVyOwogfQpA
QCAtMjY2OSw3ICsyNjU2LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6d2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpCiAgICAgc3RkOjpv
cHRpb25hbDxSdW5Mb29wOjpUaW1lcjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Pj4gdGltZW91dFRpbWVyOwogCiAgICAgaWYgKCFtX3J1bkxvb3BOZXN0aW5nTGV2ZWwpIHsKLSAg
ICAgICAgW21fdmlkZW9PdXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdl
V2l0aEFkdmFuY2VJbnRlcnZhbDowXTsKKyAgICAgICAgT2JzZXJ2ZXI8dm9pZCgpPiB3YWl0Rm9y
VmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlT2JzZXJ2ZXIoW3RoaXNdIHsKKyAgICAgICAg
ICAgIGlmIChtX3J1bkxvb3BOZXN0aW5nTGV2ZWwpCisgICAgICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLnN0b3AoKTsKKyAgICAgICAgfSk7CisgICAgICAgIG1fdmlkZW9PdXRwdXQtPmFkZEN1
cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcih3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxs
Q2hhbmdlT2JzZXJ2ZXIpOwogCiAgICAgICAgIHRpbWVvdXRUaW1lci5lbXBsYWNlKFJ1bkxvb3A6
Om1haW4oKSwgWyZdIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5zdG9wKCk7CkBAIC0y
Njk2LDE1ICsyNjg3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCkKIAogdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCkK
IHsKLSAgICBpZiAobV9ydW5Mb29wTmVzdGluZ0xldmVsKSB7Ci0gICAgICAgIGlmIChSdW5Mb29w
Ojppc01haW4oKSkKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5zdG9wKCk7Ci0gICAgICAg
IGVsc2UgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtdIHsKLSAgICAg
ICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIH0KLSAgICB9CisgICAgY2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoKTsKIH0KIAogI2lm
IEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQpAQCAtNDA4OSwzNyArNDA3Miw0IEBAIC0g
KHZvaWQpcmVzb3VyY2VMb2FkZXI6KEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqKXJlc291cmNlTG9h
ZGVyIGRpZENhbmNlbExvYWRpbmdSCiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdlYkNvcmVB
VkZQdWxsRGVsZWdhdGUgewotICAgIFdlYWtQdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQz4gX3BsYXllcjsKLX0KLQotQHN5bnRoZXNpemUgc2VtYXBob3JlID0g
bV9zZW1hcGhvcmU7Ci0KLS0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpcGxheWVyCi17Ci0gICAgc2VsZiA9IFtzdXBlciBp
bml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgX3BsYXllciA9
IFdURk1vdmUocGxheWVyKTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClvdXRwdXRN
ZWRpYURhdGFXaWxsQ2hhbmdlOihBVlBsYXllckl0ZW1WaWRlb091dHB1dCAqKW91dHB1dAotewot
ICAgIFVOVVNFRF9QQVJBTShvdXRwdXQpOwotICAgIG1fc2VtYXBob3JlLnNpZ25hbCgpOwotICAg
IGNhbGxPbk1haW5UaHJlYWQoW3NlbGYsIHN0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxmIH1d
IHsKLSAgICAgICAgaWYgKF9wbGF5ZXIpCi0gICAgICAgICAgICBfcGxheWVyLT5vdXRwdXRNZWRp
YURhdGFXaWxsQ2hhbmdlKCk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpb3V0cHV0U2VxdWVuY2VX
YXNGbHVzaGVkOihBVlBsYXllckl0ZW1WaWRlb091dHB1dCAqKW91dHB1dAotewotICAgIFVOVVNF
RF9QQVJBTShvdXRwdXQpOwotICAgIC8vIE5vLW9wLgotfQotCi1AZW5kCi0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvUXVldWVkVmlkZW9PdXRwdXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGJhZjBl
YTExZTVjNGZiZTMyNGQ5NTI1YWRmMWJkYjNjNjMzMGE4OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZp
ZGVvT3V0cHV0LmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KKworT0JKQ19DTEFTUyBBVlBsYXllcjsK
K09CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtOworT0JKQ19DTEFTUyBBVlBsYXllckl0ZW1WaWRlb091
dHB1dDsKK09CSkNfQ0xBU1MgV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZTsKKwordHlwZWRl
ZiBzdHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQaXhlbEJ1ZmZlclJlZjsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBRdWV1ZWRWaWRlb091dHB1dAorICAgIDogcHVibGljIFJlZkNvdW50ZWQ8
UXVldWVkVmlkZW9PdXRwdXQ+CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UXVldWVkVmlk
ZW9PdXRwdXQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFF1ZXVlZFZpZGVvT3V0cHV0PiBjcmVhdGUoQVZQbGF5ZXJJdGVtKiwgQVZQbGF5
ZXIqKTsKKyAgICB+UXVldWVkVmlkZW9PdXRwdXQoKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZSgp
OworICAgIGJvb2wgaGFzSW1hZ2VGb3JUaW1lKGNvbnN0IE1lZGlhVGltZSYpIGNvbnN0OworCisg
ICAgc3RydWN0IFZpZGVvRnJhbWVFbnRyeSB7CisgICAgICAgIFJldGFpblB0cjxDVlBpeGVsQnVm
ZmVyUmVmPiBwaXhlbEJ1ZmZlcjsKKyAgICAgICAgTWVkaWFUaW1lIGRpc3BsYXlUaW1lOworICAg
IH07CisgICAgVmlkZW9GcmFtZUVudHJ5IHRha2VWaWRlb0ZyYW1lRW50cnlGb3JUaW1lKGNvbnN0
IE1lZGlhVGltZSYpOworCisgICAgdm9pZCBhZGRWaWRlb0ZyYW1lRW50cmllcyhWZWN0b3I8Vmlk
ZW9GcmFtZUVudHJ5PiYmKTsKKyAgICB2b2lkIHB1cmdlVmlkZW9GcmFtZUVudHJpZXMoKTsKKwor
ICAgIHVzaW5nIEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciA9IE9ic2VydmVyPHZvaWQoKT47
CisgICAgdm9pZCBhZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoY29uc3QgQ3VycmVudElt
YWdlQ2hhbmdlZE9ic2VydmVyJik7CisKKyAgICB1c2luZyBJbWFnZU1hcCA9IHN0ZDo6bWFwPE1l
ZGlhVGltZSwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+PjsKKworICAgIHZvaWQgcmF0ZUNo
YW5nZWQoZmxvYXQpOworCitwcml2YXRlOgorICAgIFF1ZXVlZFZpZGVvT3V0cHV0KEFWUGxheWVy
SXRlbSosIEFWUGxheWVyKik7CisKKyAgICB2b2lkIHB1cmdlSW1hZ2VzQmVmb3JlVGltZShjb25z
dCBNZWRpYVRpbWUmKTsKKyAgICB2b2lkIGNvbmZpZ3VyZU5leHRJbWFnZVRpbWVPYnNlcnZlcigp
OworICAgIHZvaWQgY2FuY2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisgICAgdm9pZCBuZXh0
SW1hZ2VUaW1lUmVhY2hlZCgpOworCisgICAgUmV0YWluUHRyPEFWUGxheWVySXRlbT4gbV9wbGF5
ZXJJdGVtOworICAgIFJldGFpblB0cjxBVlBsYXllcj4gbV9wbGF5ZXI7CisgICAgUmV0YWluUHRy
PFdlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGU+IG1fZGVsZWdhdGU7CisgICAgUmV0YWluUHRy
PEFWUGxheWVySXRlbVZpZGVvT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OworICAgIFJldGFpblB0cjxp
ZD4gbV92aWRlb1RpbWViYXNlT2JzZXJ2ZXI7CisgICAgUmV0YWluUHRyPGlkPiBtX25leHRJbWFn
ZVRpbWViYXNlT2JzZXJ2ZXI7CisKKyAgICBJbWFnZU1hcCBtX3ZpZGVvRnJhbWVzOworICAgIFdl
YWtIYXNoU2V0PEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcj4gbV9jdXJyZW50SW1hZ2VDaGFu
Z2VkT2JzZXJ2ZXJzOworCisgICAgYm9vbCBtX3BhdXNlZCB7IHRydWUgfTsKK307CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBiYzA4MzgxNGMwOGM3ZGVlZDYxYzkwNzljMjJiZTNmNTA3OGE3N2UKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbQpAQCAtMCwwICsxLDMwOCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJRdWV1ZWRWaWRlb091dHB1dC5oIgorCisj
aWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWUGxheWVySXRlbU91
dHB1dC5oPgorI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9u
Lmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KKworI2luY2x1ZGUgPHBhbC9j
Zi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1ZGUgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25T
b2Z0TGluay5oPgorCitAaW50ZXJmYWNlIFdlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgOiBO
U09iamVjdDxBVlBsYXllckl0ZW1PdXRwdXRQdWxsRGVsZWdhdGU+IHsKKyAgICBXZWFrUHRyPFdl
YkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0PiBfcGFyZW50OworfQorLSAoaWQpaW5pdFdpdGhQYXJl
bnQ6KFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0KilwYXJlbnQ7CistICh2b2lkKW91dHB1dE1l
ZGlhRGF0YVdpbGxDaGFuZ2U6KEFWUGxheWVySXRlbU91dHB1dCAqKW91dHB1dDsKKy0gKHZvaWQp
b3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOihBVlBsYXllckl0ZW1PdXRwdXQgKilvdXRwdXQ7Cist
ICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0
IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRleHQ7CitA
ZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlCistIChp
ZClpbml0V2l0aFBhcmVudDooV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQqKXBhcmVudAorewor
ICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4g
bmlsOworCisgICAgX3BhcmVudCA9IHBhcmVudDsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAo
dm9pZClvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOihBVlBsYXllckl0ZW1PdXRwdXQgKilvdXRw
dXQKK3sKKyAgICBBU1NFUlQoW291dHB1dCBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZQbGF5ZXJJ
dGVtVmlkZW9PdXRwdXRDbGFzcygpXSk7CisgICAgYXV0byogdmlkZW9PdXRwdXQgPSAoQVZQbGF5
ZXJJdGVtVmlkZW9PdXRwdXQqKW91dHB1dDsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpRdWV1ZWRW
aWRlb091dHB1dDo6VmlkZW9GcmFtZUVudHJ5PiB2aWRlb0ZyYW1lRW50cmllczsKKyAgICBkbyB7
CisgICAgICAgIENNVGltZSBlYXJsaWVzdFRpbWUgPSBbdmlkZW9PdXRwdXQgZWFybGllc3RBdmFp
bGFibGVQaXhlbEJ1ZmZlckl0ZW1UaW1lXTsKKyAgICAgICAgaWYgKENNVElNRV9JU19JTlZBTElE
KGVhcmxpZXN0VGltZSkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRvIHBpeGVs
QnVmZmVyID0gYWRvcHRDRihbdmlkZW9PdXRwdXQgY29weVBpeGVsQnVmZmVyRm9ySXRlbVRpbWU6
ZWFybGllc3RUaW1lIGl0ZW1UaW1lRm9yRGlzcGxheTpuaWxdKTsKKyAgICAgICAgaWYgKCFwaXhl
bEJ1ZmZlcikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHZpZGVvRnJhbWVFbnRyaWVz
LmFwcGVuZCh7IFdURk1vdmUocGl4ZWxCdWZmZXIpLCBQQUw6OnRvTWVkaWFUaW1lKGVhcmxpZXN0
VGltZSkgfSk7CisgICAgfSB3aGlsZSAodHJ1ZSk7CisKKyAgICBpZiAodmlkZW9GcmFtZUVudHJp
ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjYWxsT25NYWluUnVuTG9vcChb
dmlkZW9GcmFtZUVudHJpZXMgPSBXVEZNb3ZlKHZpZGVvRnJhbWVFbnRyaWVzKSwgcGFyZW50ID0g
X3BhcmVudF0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChwYXJlbnQpCisgICAgICAgICAgICBw
YXJlbnQtPmFkZFZpZGVvRnJhbWVFbnRyaWVzKFdURk1vdmUodmlkZW9GcmFtZUVudHJpZXMpKTsK
KyAgICB9KTsKK30KKworLSAodm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KEFWUGxheWVy
SXRlbU91dHB1dCAqKW91dHB1dAoreworICAgIEFTU0VSVChbb3V0cHV0IGlzS2luZE9mQ2xhc3M6
UEFMOjpnZXRBVlBsYXllckl0ZW1WaWRlb091dHB1dENsYXNzKCldKTsKKyAgICBhdXRvKiB2aWRl
b091dHB1dCA9IChBVlBsYXllckl0ZW1WaWRlb091dHB1dCopb3V0cHV0OworICAgIFt2aWRlb091
dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxl
XTsKKworICAgIGNhbGxPbk1haW5SdW5Mb29wKFtwYXJlbnQgPSBfcGFyZW50XSB7CisgICAgICAg
IGlmIChwYXJlbnQpCisgICAgICAgICAgICBwYXJlbnQtPnB1cmdlVmlkZW9GcmFtZUVudHJpZXMo
KTsKKyAgICB9KTsKK30KKworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGgg
b2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0
Oih2b2lkKiljb250ZXh0Cit7CisgICAgaWYgKCFba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6QCJy
YXRlIl0pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmF0ZVZhbHVlID0gKE5TTnVtYmVy
KilbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdLZXldOworICAgIEFTU0VS
VChbcmF0ZVZhbHVlIGlzS2luZE9mQ2xhc3M6TlNOdW1iZXIuY2xhc3NdKTsKKyAgICBhdXRvIHJh
dGUgPSByYXRlVmFsdWUuZmxvYXRWYWx1ZTsKKworICAgIGVuc3VyZU9uTWFpblJ1bkxvb3AoW3Bh
cmVudCA9IF9wYXJlbnQsIHJhdGVdIHsKKyAgICAgICAgaWYgKHBhcmVudCkKKyAgICAgICAgICAg
IHBhcmVudC0+cmF0ZUNoYW5nZWQocmF0ZSk7CisgICAgfSk7Cit9CitAZW5kCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsT3V0cHV0RGVsZWdh
dGVRdWV1ZSgpCit7CisgICAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUXVldWU7Cisg
ICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgm
b25jZVRva2VuLCBeeworICAgICAgICBnbG9iYWxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0
ZSgiV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBxdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NF
UklBTCk7CisgICAgfSk7CisgICAgcmV0dXJuIGdsb2JhbFF1ZXVlOworfQorCitSZWY8UXVldWVk
VmlkZW9PdXRwdXQ+IFF1ZXVlZFZpZGVvT3V0cHV0OjpjcmVhdGUoQVZQbGF5ZXJJdGVtKiBpdGVt
LCBBVlBsYXllciogcGxheWVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFF1ZXVlZFZp
ZGVvT3V0cHV0KGl0ZW0sIHBsYXllcikpOworfQorCitRdWV1ZWRWaWRlb091dHB1dDo6UXVldWVk
VmlkZW9PdXRwdXQoQVZQbGF5ZXJJdGVtKiBpdGVtLCBBVlBsYXllciogcGxheWVyKQorICAgIDog
bV9wbGF5ZXJJdGVtKGl0ZW0pCisgICAgLCBtX3BsYXllcihwbGF5ZXIpCisgICAgLCBtX2RlbGVn
YXRlKGFkb3B0TlMoW1tXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aFBhcmVudDp0aGlzXSkpCit7CisgICAgbV92aWRlb091dHB1dCA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NBVlBsYXllckl0ZW1WaWRlb091dHB1dEluc3RhbmNlKCkgaW5pdFdpdGhQaXhlbEJ1ZmZlckF0
dHJpYnV0ZXM6bmlsXSk7CisgICAgW21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bV9kZWxlZ2F0
ZS5nZXQoKSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCldOworICAgIFttX3ZpZGVv
T3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZUFzU29vbkFzUG9zc2li
bGVdOworCisgICAgW21fcGxheWVySXRlbSBhZGRPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQoKV07
CisKKyAgICBbbV9wbGF5ZXIgYWRkT2JzZXJ2ZXI6bV9kZWxlZ2F0ZS5nZXQoKSBmb3JLZXlQYXRo
OkAicmF0ZSIgb3B0aW9uczooTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyB8IE5TS2V5VmFs
dWVPYnNlcnZpbmdPcHRpb25Jbml0aWFsKSBjb250ZXh0Om5pbF07CisKKyAgICBtX3ZpZGVvVGlt
ZWJhc2VPYnNlcnZlciA9IFttX3BsYXllciBhZGRQZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVy
dmFsOlBBTDo6Q01UaW1lTWFrZSgxLCA2MCkgcXVldWU6Z2xvYmFsT3V0cHV0RGVsZWdhdGVRdWV1
ZSgpIHVzaW5nQmxvY2s6W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb3RlY3RlZERl
bGVnYXRlID0gbV9kZWxlZ2F0ZSwgcHJvdGVjdGVkT3V0cHV0ID0gbV92aWRlb091dHB1dF0oQ01U
aW1lIGN1cnJlbnRUaW1lKSBtdXRhYmxlIHsKKworICAgICAgICAvLyBQZXJpb2RpY2FsbHkgY2hl
Y2sgZm9yIG5ldyBhdmFpbGFibGUgcGl4ZWwgYnVmZmVycy4KKyAgICAgICAgW3Byb3RlY3RlZERl
bGVnYXRlIG91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2U6cHJvdGVjdGVkT3V0cHV0LmdldCgpXTsK
KworICAgICAgICAvLyBBbmQgcHVyZ2UgdGhlIGJhY2sgYnVmZmVyIG9mIHBhc3QgZnJhbWVzLgor
ICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSB3ZWFrVGhpcywgdGltZSA9IFBB
TDo6dG9NZWRpYVRpbWUoY3VycmVudFRpbWUpXSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMp
CisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPnB1cmdlSW1hZ2VzQmVmb3JlVGltZSh0aW1lKTsK
KyAgICAgICAgfSk7CisgICAgfV07Cit9CisKK1F1ZXVlZFZpZGVvT3V0cHV0Ojp+UXVldWVkVmlk
ZW9PdXRwdXQoKQoreworICAgIGludmFsaWRhdGUoKTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091
dHB1dDo6aW52YWxpZGF0ZSgpCit7CisgICAgaWYgKG1fdmlkZW9UaW1lYmFzZU9ic2VydmVyKSB7
CisgICAgICAgIFttX3BsYXllciByZW1vdmVUaW1lT2JzZXJ2ZXI6bV92aWRlb1RpbWViYXNlT2Jz
ZXJ2ZXIuZ2V0KCldOworICAgICAgICBtX3ZpZGVvVGltZWJhc2VPYnNlcnZlciA9IG5pbDsKKyAg
ICB9CisKKyAgICBjYW5jZWxOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKworICAgIGlmIChtX3Zp
ZGVvT3V0cHV0KSB7CisgICAgICAgIFttX3BsYXllckl0ZW0gcmVtb3ZlT3V0cHV0Om1fdmlkZW9P
dXRwdXQuZ2V0KCldOworICAgICAgICBbbV92aWRlb091dHB1dCBzZXREZWxlZ2F0ZTpuaWwgcXVl
dWU6bmlsXTsKKyAgICAgICAgbV92aWRlb091dHB1dCA9IG5pbDsKKyAgICB9CisKKyAgICBpZiAo
bV9wbGF5ZXIpIHsKKyAgICAgICAgW21fcGxheWVyIHJlbW92ZU9ic2VydmVyOm1fZGVsZWdhdGUu
Z2V0KCkgZm9yS2V5UGF0aDpAInJhdGUiXTsKKyAgICAgICAgbV9wbGF5ZXIgPSBuaWw7CisgICAg
fQorCisgICAgbV9wbGF5ZXJJdGVtID0gbmlsOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTWF5
YmVDb25zdE1hcCwgdHlwZW5hbWUgTWF5YmVDb25zdEl0ZXIgPSBkZWNsdHlwZShNYXliZUNvbnN0
TWFwKCkuYmVnaW4oKSk+CitNYXliZUNvbnN0SXRlciBmaW5kSW1hZ2VGb3JUaW1lKE1heWJlQ29u
c3RNYXAmIG1hcCwgY29uc3QgTWVkaWFUaW1lJiB0aW1lKQoreworICAgIC8vIE91dHB1dHMgb2Yg
QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQgaGF2ZSBhIGRpc3BsYXkgdGltZSwgYnV0IG5vdCBhIGR1
cmF0aW9uOyB0aGV5IGFyZSB2YWxpZAorICAgIC8vIHVudGlsIHRoZSBhcnJpdmFsIG9mIGEgbGF0
ZXIgZnJhbWUuIEZpbmQgdGhpcyBmcmFtZSBlZmZpY2llbnRseSB1c2luZyBzZXQ6OnVwcGVyX2Jv
dW5kIHRvIGZpbmQKKyAgICAvLyB0aGUgbmV4dCBkaXNwbGF5YWJsZSBmcmFtZSwgYW5kIHdhbGsg
YmFja3dhcmRzIGJ5IG9uZSB0byBmaW5kIGEgZnJhbWUgZm9yIHRoZSB0YXJnZXQgdGltZS4KKyAg
ICBpZiAobWFwLmVtcHR5KCkpCisgICAgICAgIHJldHVybiBtYXAuZW5kKCk7CisKKyAgICBhdXRv
IGl0ZXIgPSBtYXAudXBwZXJfYm91bmQodGltZSk7CisgICAgaWYgKGl0ZXIgPT0gbWFwLmJlZ2lu
KCkpCisgICAgICAgIHJldHVybiBtYXAuZW5kKCk7CisKKyAgICByZXR1cm4gLS1pdGVyOworfQor
Citib29sIFF1ZXVlZFZpZGVvT3V0cHV0OjpoYXNJbWFnZUZvclRpbWUoY29uc3QgTWVkaWFUaW1l
JiB0aW1lKSBjb25zdAoreworICAgIHJldHVybiBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFt
ZXMsIHRpbWUpICE9IG1fdmlkZW9GcmFtZXMuZW5kKCk7Cit9CisKK2F1dG8gUXVldWVkVmlkZW9P
dXRwdXQ6OnRha2VWaWRlb0ZyYW1lRW50cnlGb3JUaW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkg
LT4gVmlkZW9GcmFtZUVudHJ5Cit7CisgICAgYXV0byBpdGVyID0gZmluZEltYWdlRm9yVGltZSht
X3ZpZGVvRnJhbWVzLCB0aW1lKTsKKyAgICBpZiAoaXRlciA9PSBtX3ZpZGVvRnJhbWVzLmVuZCgp
KQorICAgICAgICByZXR1cm4geyBudWxscHRyLCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkgfTsK
KworICAgIFZpZGVvRnJhbWVFbnRyeSBlbnRyeSA9IHsgV1RGTW92ZShpdGVyLT5zZWNvbmQpLCBp
dGVyLT5maXJzdCB9OworCisgICAgLy8gUHVyZ2UgYWxsIGZyYW1lcyBiZWZvcmUgYHRpbWVgLCBz
byB0aGF0IHJlcGVhdGVkIGNhbGxzIHdpdGggdGhlIHNhbWUgdGltZSBkb24ndCByZXR1cm4KKyAg
ICAvLyBzdWNjZXNzaXZlbHkgZWFybGllciBpbWFnZXMuCisgICAgbV92aWRlb0ZyYW1lcy5lcmFz
ZShtX3ZpZGVvRnJhbWVzLmJlZ2luKCksICsraXRlcik7CisKKyAgICByZXR1cm4gZW50cnk7Cit9
CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmFkZEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZl
cihjb25zdCBDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXImIG9ic2VydmVyKQoreworICAgIG1f
Y3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycy5hZGQob2JzZXJ2ZXIpOworICAgIGNvbmZpZ3Vy
ZU5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworCisgICAgW21fdmlkZW9PdXRwdXQgcmVxdWVzdE5v
dGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJsZV07Cit9CisKK3ZvaWQg
UXVldWVkVmlkZW9PdXRwdXQ6OmNvbmZpZ3VyZU5leHRJbWFnZVRpbWVPYnNlcnZlcigpCit7Cisg
ICAgaWYgKG1fbmV4dEltYWdlVGltZWJhc2VPYnNlcnZlcikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byBjdXJyZW50VGltZSA9IFBBTDo6dG9NZWRpYVRpbWUoW21fcGxheWVyIGN1cnJlbnRU
aW1lXSk7CisgICAgYXV0byBpdGVyID0gZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJhbWVzLCBj
dXJyZW50VGltZSk7CisgICAgaWYgKGl0ZXIgPT0gbV92aWRlb0ZyYW1lcy5lbmQoKSB8fCArK2l0
ZXIgPT0gbV92aWRlb0ZyYW1lcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBu
ZXh0SW1hZ2VUaW1lID0gaXRlci0+Zmlyc3Q7CisKKyAgICBtX25leHRJbWFnZVRpbWViYXNlT2Jz
ZXJ2ZXIgPSBbbV9wbGF5ZXIgYWRkQm91bmRhcnlUaW1lT2JzZXJ2ZXJGb3JUaW1lczpAW1tOU1Zh
bHVlIHZhbHVlV2l0aENNVGltZTpQQUw6OnRvQ01UaW1lKGN1cnJlbnRUaW1lKV1dIHF1ZXVlOmds
b2JhbE91dHB1dERlbGVnYXRlUXVldWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCBwcm90ZWN0ZWREZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIHByb3RlY3RlZE91dHB1
dCA9IG1fdmlkZW9PdXRwdXRdICgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluUnVuTG9v
cChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0geworICAgICAgICAgICAgaWYgKHdlYWtU
aGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5uZXh0SW1hZ2VUaW1lUmVhY2hlZCgpOwor
ICAgICAgICB9KTsKKyAgICB9XTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6Y2FuY2Vs
TmV4dEltYWdlVGltZU9ic2VydmVyKCkKK3sKKyAgICBpZiAoIW1fbmV4dEltYWdlVGltZWJhc2VP
YnNlcnZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fcGxheWVyIHJlbW92ZVRpbWVPYnNl
cnZlcjptX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIuZ2V0KCldOworICAgIG1fbmV4dEltYWdl
VGltZWJhc2VPYnNlcnZlciA9IG5pbDsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6bmV4
dEltYWdlVGltZVJlYWNoZWQoKQoreworICAgIGNhbmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigp
OworICAgIGF1dG8gb2JzZXJ2ZXJzID0gc3RkOjpleGNoYW5nZShtX2N1cnJlbnRJbWFnZUNoYW5n
ZWRPYnNlcnZlcnMsIHsgfSk7CisgICAgb2JzZXJ2ZXJzLmZvckVhY2goW10oYXV0byYgb2JzZXJ2
ZXIpIHsgb2JzZXJ2ZXIoKTsgfSk7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmFkZFZp
ZGVvRnJhbWVFbnRyaWVzKFZlY3RvcjxWaWRlb0ZyYW1lRW50cnk+JiYgdmlkZW9GcmFtZUVudHJp
ZXMpCit7CisgICAgYm9vbCBuZWVkc0ltYWdlRm9yQ3VycmVudFRpbWVDaGFuZ2VkID0gZmFsc2U7
CisgICAgYm9vbCBoYXNDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzID0gbV9jdXJyZW50SW1h
Z2VDaGFuZ2VkT2JzZXJ2ZXJzLmNvbXB1dGVTaXplKCk7CisgICAgTWVkaWFUaW1lIGN1cnJlbnRU
aW1lID0gaGFzQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycyA/IFBBTDo6dG9NZWRpYVRpbWUo
W21fcGxheWVyIGN1cnJlbnRUaW1lXSkgOiBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCk7CisKKyAg
ICBmb3IgKGF1dG8mIGVudHJ5IDogdmlkZW9GcmFtZUVudHJpZXMpIHsKKyAgICAgICAgaWYgKGhh
c0N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMgJiYgZW50cnkuZGlzcGxheVRpbWUgPD0gY3Vy
cmVudFRpbWUpCisgICAgICAgICAgICBuZWVkc0ltYWdlRm9yQ3VycmVudFRpbWVDaGFuZ2VkID0g
dHJ1ZTsKKyAgICAgICAgbV92aWRlb0ZyYW1lcy5lbXBsYWNlKGVudHJ5LmRpc3BsYXlUaW1lLCBX
VEZNb3ZlKGVudHJ5LnBpeGVsQnVmZmVyKSk7CisgICAgfQorCisgICAgaWYgKG5lZWRzSW1hZ2VG
b3JDdXJyZW50VGltZUNoYW5nZWQpCisgICAgICAgIG5leHRJbWFnZVRpbWVSZWFjaGVkKCk7Cisg
ICAgZWxzZSBpZiAoaGFzQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycykKKyAgICAgICAgY29u
ZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisKKyAgICBpZiAobV9wYXVzZWQpCisgICAg
ICAgIFttX3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZUFz
U29vbkFzUG9zc2libGVdOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpwdXJnZVZpZGVv
RnJhbWVFbnRyaWVzKCkKK3sKKyAgICBjYW5jZWxOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAg
ICBtX3ZpZGVvRnJhbWVzLmNsZWFyKCk7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OnB1
cmdlSW1hZ2VzQmVmb3JlVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpCit7CisgICAgbV92aWRl
b0ZyYW1lcy5lcmFzZShtX3ZpZGVvRnJhbWVzLmJlZ2luKCksIGZpbmRJbWFnZUZvclRpbWUobV92
aWRlb0ZyYW1lcywgdGltZSkpOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpyYXRlQ2hh
bmdlZChmbG9hdCByYXRlKQoreworICAgIG1fcGF1c2VkID0gIXJhdGU7CisKKyAgICBpZiAobV9w
YXVzZWQpCisgICAgICAgIFttX3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25PZk1lZGlh
RGF0YUNoYW5nZUFzU29vbkFzUG9zc2libGVdOworfQorCit9CisKKyNlbmRpZgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NzFiZWMyNDIyNWYyNjI2ZmRiNGQ5MDI4Mzc0MWZmODAzMjkyMzcwZC4uZWYwMzg2ODllODlkMDMx
Mzk5OTExNDE4MTAwZjFmM2Q2ZjRjNTFhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAx
LTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0g
clZGQygpIGlzbid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZy
YW1lLWxvYWRzdGFydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3JlcXVl
c3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3Jl
cXVlc3QtdmlkZW8tZnJhbWUtc2Vlay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay5odG1sOiBBZGRlZC4KKwogMjAyMi0wMS0wOCAg
QXJjYWR5IEdvbGRtaW50cy1PcmxvdiAgPGFnb2xkbWludHNAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR0xJQl0gVXBkYXRlIHRlc3QgZXhwZWN0YXRpb25zIGZvciBrbm93biBmYWlsdXJlcy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9h
ZHN0YXJ0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzAyZjY2ZWJhYmRmYjU3NGQ5ZjlmZjFk
NWI4MWZjODA4OTIwMzZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVx
dWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAor
CitSVU4odmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhjYWxsYmFjaykpCitSVU4odmlk
ZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0IikpCitQcm9taXNl
IHJlc29sdmVkIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRp
YS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEv
cmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTBiM2YxYThj
NjExYTI2ZmNkMGE1NGVlZTBmYjAyYzU1ZTY2ZjYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQuaHRtbApAQCAtMCwwICsx
LDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPnJlcXVl
c3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0PC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0idmlkZW8t
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Im1lZGlhLWZpbGUuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBh
c3luYyBldmVudCA9PiB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAgICBs
ZXQgdmlkZW9GcmFtZVByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7
CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNh
bGxiYWNrKGNhbGxiYWNrKSknKTsKKyAgICAgICAgICAgIHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1l
Q2FsbGJhY2socmVzb2x2ZSk7CisgICAgICAgIH0pOworCisgICAgICAgIHJ1bigndmlkZW8uc3Jj
ID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0IiknKTsKKworICAgICAgICBh
d2FpdCBzaG91bGRSZXNvbHZlKHZpZGVvRnJhbWVQcm9taXNlKTsKKworICAgICAgICBlbmRUZXN0
KCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8dmlkZW8g
bXV0ZWQ+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNl
ZWstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1z
ZWVrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTAxNWYyNmI4M2FjOTlhZmYzMDU2OGIzMmU2
Njk0MTUwNjRjNzVkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVz
dC12aWRlby1mcmFtZS1zZWVrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKKworUlVOKHZp
ZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpKQorRVZFTlQo
Y2FucGxheXRocm91Z2gpCitSVU4odmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhjYWxs
YmFjaykpCitSVU4odmlkZW8uY3VycmVudFRpbWUgPSAwLjUpCitQcm9taXNlIHJlc29sdmVkIE9L
CitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZp
ZGVvLWZyYW1lLXNlZWsuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJh
bWUtc2Vlay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5MjU4ZjAzNjM4Y2NmOGE2YzhmMzQ2MGQ3MTQzMzRh
NDc5MDk1OGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZp
ZGVvLWZyYW1lLXNlZWsuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPnJlcXVlc3QtdmlkZW8tZnJhbWUtc2VlazwvdGl0bGU+
CisgICAgPHNjcmlwdCBzcmM9InZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJtZWRpYS1maWxlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHdpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworICAgICAgICBmaW5kTWVk
aWFFbGVtZW50KCk7CisKKyAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2
aWRlbyIsICJjb250ZW50L3Rlc3QiKScpOworCisgICAgICAgIGF3YWl0IHdhaXRGb3IodmlkZW8s
ICdjYW5wbGF5dGhyb3VnaCcpOworCisgICAgICAgIGxldCB2aWRlb0ZyYW1lUHJvbWlzZSA9IG5l
dyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgnUlVOKHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soY2FsbGJhY2spKScpOworICAg
ICAgICAgICAgdmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhyZXNvbHZlKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgcnVuKCd2aWRlby5jdXJyZW50VGltZSA9IDAuNScpOworCisgICAg
ICAgIGF3YWl0IHNob3VsZFJlc29sdmUodmlkZW9GcmFtZVByb21pc2UpOworCisgICAgICAgIGVu
ZFRlc3QoKTsKKyAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx2
aWRlbyBtdXRlZD48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUK
</data>
<flag name="commit-queue"
          id="474724"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448851</attachid>
            <date>2022-01-11 09:12:10 -0800</date>
            <delta_ts>2022-01-11 11:21:17 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235006-20220111091209.patch</filename>
            <type>text/plain</type>
            <size>48653</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZjYjg5ZjUzNzY1NTk1
OWZiOWM2ZjMwZWQwMTUyOTg3ODYwMGVkYS4uZjBlZDU2YjVkM2E4Y2JmNjdhNTA3ZWQ3YWNjYzBk
ZjExZTlkNmQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIyLTAxLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gclZGQygpIGlz
bid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
bG9hZHN0YXJ0Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sCisKKyAgICAgICAgQWRkIGEgbmV3IHV0aWxpdHkgY2xhc3MsIFF1ZXVlZFZpZGVv
T3V0cHV0LCB3aGljaCB3aWxsIHB1bGwgcGl4ZWwgYnVmZmVycyBvdXQgb2YgYW4gQVZQbGF5ZXJJ
dGVtVmlkZW9PdXRwdXQKKyAgICAgICAgcHJlLWVtcHRpdmVseS4gT25jZSB0aG9zZSBwaXhlbCBi
dWZmZXJzIGFyZSBlbnF1ZXVlZCBsb2NhbGx5LCB0aGVpciBhc3NvY2lhdGVkIHRpbWluZyBpbmZv
cm1hdGlvbiBjYW4gYmUgdXNlZCB0bworICAgICAgICBmaXJlIGEgY2FsbGJhY2sgZm9yIHRoYXQg
YnVmZmVyJ3MgZGlzcGxheSB0aW1lLgorCisgICAgICAgIFByZXZpb3VzbHksIHBhaW50cyB3ZXJl
IGJsb2NrZWQgZnJvbSBwdWxsaW5nIG5ldyBwaXhlbCBidWZmZXJzIGZyb20gdGhlIHZpZGVvIG91
dHB1dC4gV2l0aCB0aGUgUXVldWVkVmlkZW9PdXRwdXQKKyAgICAgICAgY2xhc3MsIHRoaXMgaXMg
bm8gbG9uZ2VyIG5lY2Vzc2FyeS4gVGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHdpbGwgbm90aWZ5IGl0
cyBjbGllbnQgd2hlbiB0aGUgaW1hZ2UgZm9yIGN1cnJlbnRUaW1lCisgICAgICAgIGNoYW5nZXMs
IGFuZCBvdGhlciBjbGllbnRzIGNhbiBmcmVlbHkgYXNrIGZvciB0aGUgY3VycmVudFRpbWUncyBp
bWFnZS4KKworICAgICAgICBUbyBjdXJiIHJ1bmF3YXkgbWVtb3J5IGdyb3d0aCwgZnJhbWVzIGFy
ZSBwdXJnZWQgYXMgc29vbiBhcyBhIG5ldyBpbWFnZSBmb3IgdGhlIGN1cnJlbnQgdGltZSBpcyBh
dmFpbGFibGUsIGFuZCB3aGVuCisgICAgICAgIHRoZSB2aWRlbyBvdXRwdXQgc2lnbmFscyB0aGF0
IGl0cyBvd24gcXVldWVzIHdlcmUgcHVyZ2VkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjYW5jZWxWaWRlb0ZyYW1lQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2VydmljZVJlcXVl
c3RWaWRlb0ZyYW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omhhc0F2YWlsYWJsZVZpZGVvRnJh
bWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c3RhcnRWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tOZXdWaWRlb0Zy
YW1lTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZp
ZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1ZmZlckZvckN1
cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29sb3JTcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvdXRwdXRNZWRp
YURhdGFXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Omdsb2JhbFB1bGxEZWxlZ2F0ZVF1
ZXVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OndhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIGluaXRXaXRoUGxheWVyOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIG91dHB1dE1lZGlh
RGF0YVdpbGxDaGFuZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVs
ZWdhdGUgb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOl0pOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVl
ZFZpZGVvT3V0cHV0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXRE
ZWxlZ2F0ZSBpbml0V2l0aFBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRw
dXREZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOl0pOgorICAgICAgICAoLVtXZWJR
dWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDpdKToKKyAg
ICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBvYnNlcnZlVmFsdWVGb3JLZXlQ
YXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoV2ViQ29yZTo6Z2xvYmFs
T3V0cHV0RGVsZWdhdGVRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpRdWV1ZWRW
aWRlb091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6flF1ZXVl
ZFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmRlY2x0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OlF1ZXVlZFZpZGVvT3V0cHV0OjpoYXNJbWFnZUZvclRpbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnRha2VWaWRlb0ZyYW1lRW50cnlGb3JUaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjphZGRDdXJyZW50SW1hZ2VDaGFuZ2Vk
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmNvbmZpZ3Vy
ZU5leHRJbWFnZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0
OjppbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRW
aWRlb091dHB1dDo6YWRkVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UXVl
dWVkVmlkZW9PdXRwdXQ6OnB1cmdlVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnB1cmdlSW1hZ2VzQmVmb3JlVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cmF0ZUNoYW5nZWQpOgorCiAyMDIxLTEyLTE0ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtSZWZhY3Rvcl0gQWRv
cHQgTG9nZ2VySGVscGVyIGluIExvZ2dpbmcgRU1FIGNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmlu
ZGV4IDBlNzUzMTI2NmVhY2FiMGI1N2NiNzIwNGQ4YTVlMjcxNzdkODYxMDEuLjg5NmE2NzFmNGQ1
OGZiMTAyNjdlMzQ5NmQ3ZDg0YjI0NGEwYmYyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDIyLTAxLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gclZGQygpIGlzbid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBs
b2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUw
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBwYWwv
c3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oOgorCiAyMDIyLTAxLTEwICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3RhcnQgdXNpbmcgQysr
MjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWRm91bmRh
dGlvblNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9u
U1BJLmgKaW5kZXggOGI3ZmYxMjM3YTBjOGMyMmY4ODJmYTBiZmVlZThiZDNhZDRjYjcxMi4uNGY5
Y2JlNmQzZDI3ZWM3ZDFhM2RkN2UxZDgyNzcwZTM3MTg4NDE0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmgKQEAgLTQwLDkgKzQw
LDEwIEBACiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZNZWRpYVNlbGVjdGlvbkdyb3VwX1ByaXZh
dGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVk91dHB1dENvbnRleHRfUHJpdmF0ZS5oPgog
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWT3V0cHV0RGV2aWNlLmg+Ci0jaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZQbGF5ZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVy
SXRlbU91dHB1dF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVt
X1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckxheWVyX1ByaXZhdGUu
aD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllcl9Qcml2YXRlLmg+CiAKICNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQpAQCAt
NjYsNiArNjcsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9FTkQKICNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVkNhcHR1cmVTZXNzaW9uLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXIuaD4K
ICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW0uaD4KKyNpbXBvcnQgPEFWRm91bmRh
dGlvbi9BVlBsYXllckl0ZW1PdXRwdXQuaD4KIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0lOVEVS
U1RJVElBTF9FVkVOVFMpCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJbnRlcnN0aXRp
YWxFdmVudENvbnRyb2xsZXIuaD4KQEAgLTkyLDYgKzk0LDExIEBAIHR5cGVkZWYgTlNTdHJpbmcg
KiBBVlZpZGVvUmFuZ2UgTlNfVFlQRURfRU5VTTsKIEBlbmQKICNlbmRpZgogCitAaW50ZXJmYWNl
IEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IChBVlBsYXllckl0ZW1WaWRlb091dHB1dEVhcmxpZXN0
VGltZSkKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQ01UaW1lIGVhcmxpZXN0QXZh
aWxhYmxlUGl4ZWxCdWZmZXJJdGVtVGltZTsKKy0gKHZvaWQpcmVxdWVzdE5vdGlmaWNhdGlvbk9m
TWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJsZTsKK0BlbmQKKwogI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIE5TX0FTU1VN
RV9OT05OVUxMX0JFR0lOCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggOGY3YmNiZGE0NjdhMjFhZjYyYWJiMTk1NjY2ZTU4OWI0NzYy
YmM3YS4uN2M5YjViZTNiYmJlYjFjY2QxNGEzM2M1MDEzNTM2MTQyMmRmM2VkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQ0
OCw2ICs0NDQ4LDggQEAKIAkJQ0QxRjlCNEQyNzBEMDNBOTAwNjE3RUI2IC8qIFNjcm9sbEV4dGVu
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5
QjRDMjcwRDAzQTkwMDYxN0VCNiAvKiBTY3JvbGxFeHRlbnRzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0QxRjlCN0QyNzBFNjY3ODAwNjE3RUI2
IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlCN0MyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNo
b3JFbGVtZW50SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNEMUY5QjgwMjcwRTY3MUEwMDYxN0VCNiAvKiBTVkdFbGVtZW50SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlC
N0YyNzBFNjcxQTAwNjE3RUI2IC8qIFNWR0VsZW1lbnRJbmxpbmVzLmggKi87IH07CisJCUNEMjBF
RDNDMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyMEVEM0EyNzg3OEZGQjAwMzhCRTQ0
IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggKi87IH07CisJCUNEMjBFRDNEMjc4NzhGRkIwMDM4QkU0
NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMjBFRDNCMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091
dHB1dC5tbSAqLzsgfTsKIAkJQ0QyMjVDMEIxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VS
TFNlc3Npb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDIyNUMwOTFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSAqLzsg
fTsKIAkJQ0QyMjVDMEMxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjI1QzBBMUM0
NkZCRjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0QyN0FFNTAyMkE5ODY4NzAwOTQ3RkY5
IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdBRTRFMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0
aW9uU2Vzc2lvblZULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTE1ODYzLDYgKzE1ODY1LDggQEAKIAkJQ0QxRjlCNzAyNzBERkE3RjAwNjE3RUI2
IC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFLZXlNZXNzYWdlRXZl
bnRJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxRjlCN0MyNzBFNjY3
ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
VE1MQW5jaG9yRWxlbWVudElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0QxRjlCN0YyNzBFNjcxQTAwNjE3RUI2IC8qIFNWR0VsZW1lbnRJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR0VsZW1lbnRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEMjBFRDNBMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBRdWV1ZWRWaWRlb091dHB1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRDIwRUQzQjI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBRdWV1ZWRWaWRlb091dHB1dC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0QyMjVDMDkxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Np
b24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNV
UkxTZXNzaW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDIyNUMwQTFDNDZG
QkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNVUkxTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEMjdBRTRFMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lv
blZULmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlUm90YXRpb25TZXNzaW9uVlQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwNjEyLDYgKzMwNjE2LDggQEAKIAkJCQlDREM4QjVBNTE4
MDQ3NEY3MDAxNkU2ODUgLyogTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNE
QzhCNUE0MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tICov
LAogCQkJCTdBMjlGNTcxMThDNjk1MTQwMDREMEY4MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGLmggKi8sCisJCQkJQ0QyMEVEM0EyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVv
T3V0cHV0LmggKi8sCisJCQkJQ0QyMEVEM0IyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVv
T3V0cHV0Lm1tICovLAogCQkJCUNERjk5NEZBMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLmggKi8sCiAJCQkJQ0RGOTk0RkIyNEMxMkE2QTAwMkVBMDYyIC8qIFNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gKi8sCiAJCQkJQ0RDOEI1QTkxODA0N0ZGMTAwMTZF
Njg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggKi8sCkBAIC0zNjU4MCw2ICszNjU4
Niw3IEBACiAJCQkJRUIwRkI3MEQyNzBEMEIyRTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25P
cHRpb25zSW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFGNTk0MUVERjY5RDMw
MDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMjBF
RDNDMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTE1RTMxRjQxRTBDQjBCNTAwNEIzNzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOUJBRUU5MkMyMjM4OEE3RDAwNDE1N0E5IC8qIFF1aXJrcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzc5RTM3MTcxMzczNkE2NjAwQjlFOTE5IC8qIFF1b3RlZFByaW50YWJsZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zODU2Myw2ICszODU3MCw3IEBACiAJCQkJQUExMkRGNDkxNzQzREY4
MzAwNERBRkRGIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEQTI5QTMwMUNCRjc0RDQwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTI5QTE2MUNCREE1NkMwMDkwMUND
RiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlD
RDIwRUQzRDI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQubW0gaW4gU291cmNl
cyAqLywKIAkJCQk0MTkyNDI0OTIxMjdCOTNFMDA2MzRGQ0YgLyogUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzFDMDA0QjI3MEI4NjQ5MDBE
MDI3QzcgLyogUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVD
MkIxQUVDMjIzOTdFQkMwMEI5MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDk0
OGQxZDQxNzQ4ZTlmYWQyOTIyY2FmNzBjZWI2NjhiNDg4ZTk5NDEuLjQ2MjNkMThhYjI3M2FmYWI1
YTcyNWJiNGI4NDYxNTRkYjZmZjdiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcApAQCAtNjAzLDEzICs2MDMsMTYgQEAgdW5zaWduZWQgSFRNTFZpZGVvRWxlbWVu
dDo6cmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhSZWY8VmlkZW9GcmFtZVJlcXVlc3RDYWxsYmEK
IAogdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpjYW5jZWxWaWRlb0ZyYW1lQ2FsbGJhY2sodW5zaWdu
ZWQgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGluZGV4ID0gbV92aWRlb0ZyYW1lUmVxdWVzdHMu
ZmluZE1hdGNoaW5nKFtpZGVudGlmaWVyXShhdXRvJiByZXF1ZXN0KSB7IHJldHVybiByZXF1ZXN0
LT5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0pOwotICAgIGlmIChpbmRleCA9PSBub3RGb3Vu
ZCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX2lzUnVubmluZ1ZpZGVvRnJhbWVSZXF1ZXN0
cykgewotICAgICAgICBtX3ZpZGVvRnJhbWVSZXF1ZXN0c1tpbmRleF0tPmNhbmNlbGxlZCA9IHRy
dWU7CisgICAgLy8gU2VhcmNoIGZpcnN0IHRoZSByZXF1ZXN0cyBjdXJyZW50bHkgYmVpbmcgc2Vy
dmljZWQsIGFuZCBtYXJrIHRoZW0gYXMgY2FuY2VsbGVkIGlmIGZvdW5kLgorICAgIGF1dG8gaW5k
ZXggPSBtX3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVlc3RzLmZpbmRNYXRjaGluZyhbaWRlbnRpZmll
cl0oYXV0byYgcmVxdWVzdCkgeyByZXR1cm4gcmVxdWVzdC0+aWRlbnRpZmllciA9PSBpZGVudGlm
aWVyOyB9KTsKKyAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAgICAgbV9zZXJ2aWNl
ZFZpZGVvRnJhbWVSZXF1ZXN0c1tpbmRleF0tPmNhbmNlbGxlZCA9IHRydWU7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisKKyAgICBpbmRleCA9IG1fdmlkZW9GcmFtZVJlcXVlc3RzLmZpbmRNYXRj
aGluZyhbaWRlbnRpZmllcl0oYXV0byYgcmVxdWVzdCkgeyByZXR1cm4gcmVxdWVzdC0+aWRlbnRp
ZmllciA9PSBpZGVudGlmaWVyOyB9KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAg
ICAgIHJldHVybjsKICAgICBtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5yZW1vdmUoaW5kZXgpOwogCiAg
ICAgaWYgKG1fdmlkZW9GcmFtZVJlcXVlc3RzLmlzRW1wdHkoKSAmJiBwbGF5ZXIoKSkKQEAgLTYz
OSwyMCArNjQyLDE0IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2VydmljZVJlcXVlc3RWaWRl
b0ZyYW1lQ2FsbGJhY2tzKFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kCiAKICAgICBSZWYgcHJvdGVj
dGVkVGhpcyB7ICp0aGlzIH07CiAKLSAgICAvLyBXZSBzdG9yZSB0aGUgc2l6ZSBiZWZvcmUgY2Fs
bGluZyBjYWxsYmFja3MgYXMgd2UgZG8gbm90IHdhbnQgdG8gY2FsbCBuZXdseSBhZGRlZCBjYWxs
YmFja3MuCi0gICAgYXV0byBjYWxsYmFja0NvdW50ID0gbV92aWRlb0ZyYW1lUmVxdWVzdHMuc2l6
ZSgpOwotCi0gICAgbV9pc1J1bm5pbmdWaWRlb0ZyYW1lUmVxdWVzdHMgPSB0cnVlOwotICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjYWxsYmFja0NvdW50OyArK2luZGV4KSB7Ci0g
ICAgICAgIGF1dG8mIHJlcXVlc3QgPSBtX3ZpZGVvRnJhbWVSZXF1ZXN0c1tpbmRleF07CisgICAg
bV92aWRlb0ZyYW1lUmVxdWVzdHMuc3dhcChtX3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVlc3RzKTsK
KyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVlc3RzKSB7
CiAgICAgICAgIGlmICghcmVxdWVzdC0+Y2FuY2VsbGVkKSB7CiAgICAgICAgICAgICByZXF1ZXN0
LT5jYWxsYmFjay0+aGFuZGxlRXZlbnQoc3RkOjpyb3VuZChub3cubWlsbGlzZWNvbmRzKCkpLCAq
dmlkZW9GcmFtZU1ldGFkYXRhKTsKICAgICAgICAgICAgIHJlcXVlc3QtPmNhbmNlbGxlZCA9IHRy
dWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9pc1J1bm5pbmdWaWRlb0ZyYW1lUmVxdWVzdHMg
PSBmYWxzZTsKLQotICAgIG1fdmlkZW9GcmFtZVJlcXVlc3RzLnJlbW92ZUFsbE1hdGNoaW5nKFtd
KGF1dG8mIGNhbGxiYWNrKSB7IHJldHVybiBjYWxsYmFjay0+Y2FuY2VsbGVkOyB9KTsKKyAgICBt
X3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVlc3RzLmNsZWFyKCk7CiAKICAgICBpZiAobV92aWRlb0Zy
YW1lUmVxdWVzdHMuaXNFbXB0eSgpICYmIHBsYXllcigpKQogICAgICAgICBwbGF5ZXIoKS0+c3Rv
cFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaAppbmRleCA4NTZhZGVhNzhmYjczOThkOGZiNDVmNDQ4YTM1OTFiZGE1NWY5NzJj
Li5mOGQzYjQwMzJkNjAyNDRiNTQwMTc4MzNlYWZhMDA2OTA0ZDFiNDEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtMTcyLDggKzE3Miw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIGJvb2wgY2FuY2VsbGVkIHsgZmFsc2UgfTsKICAgICB9OwogICAgIFZlY3RvcjxVbmlx
dWVSZWY8VmlkZW9GcmFtZVJlcXVlc3Q+PiBtX3ZpZGVvRnJhbWVSZXF1ZXN0czsKKyAgICBWZWN0
b3I8VW5pcXVlUmVmPFZpZGVvRnJhbWVSZXF1ZXN0Pj4gbV9zZXJ2aWNlZFZpZGVvRnJhbWVSZXF1
ZXN0czsKICAgICB1bnNpZ25lZCBtX25leHRWaWRlb0ZyYW1lUmVxdWVzdEluZGV4IHsgMCB9Owot
ICAgIGJvb2wgbV9pc1J1bm5pbmdWaWRlb0ZyYW1lUmVxdWVzdHMgeyBmYWxzZSB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDFlNjU3NTcy
NDY1NDk3MzQzY2RlMmEyNGQ4ZjBkYzZiNGUwMjY3ZTEuLmVlYjg4M2Q3N2M2NjIwMzJhMzkwOTI2
MDAzZDk4M2EyM2FmMDBmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ01UaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4K
IAogT0JKQ19DTEFTUyBBVkFzc2V0SW1hZ2VHZW5lcmF0b3I7CiBPQkpDX0NMQVNTIEFWQXNzZXRU
cmFjazsKQEAgLTY3LDYgKzY4LDcgQEAgY2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGOwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDOwogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVjsKK2NsYXNzIFF1ZXVl
ZFZpZGVvT3V0cHV0OwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVv
TGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKQEAgLTM0
Nyw3ICszNDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRWaWRlb0ZyYW1lTWV0YWRhdGFH
YXRoZXJpbmcoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJp
bmcoKSBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVNZXRhZGF0YT4gdmlkZW9G
cmFtZU1ldGFkYXRhKCkgZmluYWwgeyByZXR1cm4gc3RkOjpleGNoYW5nZShtX3ZpZGVvRnJhbWVN
ZXRhZGF0YSwgeyB9KTsgfQotICAgIHZvaWQgY2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoQ01U
aW1lKTsKKyAgICB2b2lkIGNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCk7CiAKICAgICBSZXRh
aW5QdHI8QVZVUkxBc3NldD4gbV9hdkFzc2V0OwogICAgIFJldGFpblB0cjxBVlBsYXllcj4gbV9h
dlBsYXllcjsKQEAgLTM2Nyw3ICszNjksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBSZXRh
aW5QdHI8QVZBc3NldEltYWdlR2VuZXJhdG9yPiBtX2ltYWdlR2VuZXJhdG9yOwotICAgIFJldGFp
blB0cjxBVlBsYXllckl0ZW1WaWRlb091dHB1dD4gbV92aWRlb091dHB1dDsKKyAgICBSZWZQdHI8
UXVldWVkVmlkZW9PdXRwdXQ+IG1fdmlkZW9PdXRwdXQ7CiAgICAgUmV0YWluUHRyPFdlYkNvcmVB
VkZQdWxsRGVsZWdhdGU+IG1fdmlkZW9PdXRwdXREZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gbV9sYXN0UGl4ZWxCdWZmZXI7CiAgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBtX2xhc3RJbWFnZTsKQEAgLTQ2NCw2ICs0NjYsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0
aW9uYWw8VmlkZW9GcmFtZU1ldGFkYXRhPiBtX3ZpZGVvRnJhbWVNZXRhZGF0YTsKICAgICBtdXRh
YmxlIHN0ZDo6b3B0aW9uYWw8TlNUaW1lSW50ZXJ2YWw+IG1fY2FjaGVkU2Vla2FibGVUaW1lUmFu
Z2VzTGFzdE1vZGlmaWVkVGltZTsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8TlNUaW1lSW50
ZXJ2YWw+IG1fY2FjaGVkTGl2ZVVwZGF0ZUludGVydmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxP
YnNlcnZlcjx2b2lkKCk+PiBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcjsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGMwNjdjY2U4MDY4NmY3YTFiYzU0MTRiYWY3N2Y3
NTI1MmJmMzQyYzcuLmNmMjQ0MjhlYmFiZGVmN2I3ODkzYzA3NTY2ZWI3NzYzZjhlYWE3MGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNTgsNiArNTgsNyBAQAogI2ltcG9ydCAiUGxhdGZv
cm1TY3JlZW4uaCIKICNpbXBvcnQgIlBsYXRmb3JtVGV4dFRyYWNrLmgiCiAjaW1wb3J0ICJQbGF0
Zm9ybVRpbWVSYW5nZXMuaCIKKyNpbXBvcnQgIlF1ZXVlZFZpZGVvT3V0cHV0LmgiCiAjaW1wb3J0
ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNjcmlwdERpc2FsbG93ZWRT
Y29wZS5oIgogI2ltcG9ydCAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTIwNSwxNiArMjA2LDYgQEAg
LSAoaWQpaW5pdFdpdGhQbGF5ZXI6KFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQz4mJilwbGF5ZXI7CiAtIChCT09MKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3Vy
Y2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVk
UmVzb3VyY2U6KEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopbG9hZGluZ1JlcXVlc3Q7
CiBAZW5kCiAKLUBpbnRlcmZhY2UgV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSA6IE5TT2JqZWN0PEFW
UGxheWVySXRlbU91dHB1dFB1bGxEZWxlZ2F0ZT4gewotICAgIEJpbmFyeVNlbWFwaG9yZSBtX3Nl
bWFwaG9yZTsKLX0KLS0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpcGxheWVyOwotLSAodm9pZClvdXRwdXRNZWRpYURhdGFX
aWxsQ2hhbmdlOihBVlBsYXllckl0ZW1PdXRwdXQgKilzZW5kZXI7Ci0tICh2b2lkKW91dHB1dFNl
cXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0OwotCi1AcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJpbmFyeVNlbWFwaG9yZSYgc2VtYXBob3JlOwotQGVu
ZAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlv
blRvU3RyaW5nKEFWUGxheWVyVGltZUNvbnRyb2xTdGF0dXMgZW51bWVyYXRpb25WYWx1ZSkKIHsK
QEAgLTI2MSwxNiArMjUyLDYgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsTG9hZGVy
RGVsZWdhdGVRdWV1ZSgpCiAgICAgcmV0dXJuIGdsb2JhbFF1ZXVlOwogfQogCi1zdGF0aWMgZGlz
cGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpCi17Ci0gICAgc3RhdGljIGRp
c3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUXVldWU7Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBv
bmNlVG9rZW47Ci0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBnbG9i
YWxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSBx
dWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGdsb2Jh
bFF1ZXVlOwotfQotCiBzdGF0aWMgdm9pZCByZWdpc3RlckZvcm1hdFJlYWRlcklmTmVjZXNzYXJ5
KCkKIHsKICNpZiBFTkFCTEUoV0VCTV9GT1JNQVRfUkVBREVSKQpAQCAtNDY5LDcgKzQ1MCw4IEBA
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6On5NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDKCkKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Jlc291cmNlTG9hZGVy
TWFwKQogICAgICAgICBwYWlyLnZhbHVlLT5pbnZhbGlkYXRlKCk7CiAKLSAgICBbbV92aWRlb091
dHB1dCBzZXREZWxlZ2F0ZTpuaWwgcXVldWU6MF07CisgICAgaWYgKG1fdmlkZW9PdXRwdXQpCisg
ICAgICAgIG1fdmlkZW9PdXRwdXQtPmludmFsaWRhdGUoKTsKIAogICAgIGlmIChtX3ZpZGVvTGF5
ZXIpCiAgICAgICAgIGRlc3Ryb3lWaWRlb0xheWVyKCk7CkBAIC03MDIsNyArNjg0LDcgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpoYXNBdmFpbGFibGVWaWRlb0Zy
YW1lKCkgY29uc3QKICAgICBpZiAoY3VycmVudFJlbmRlcmluZ01vZGUoKSA9PSBNZWRpYVJlbmRl
cmluZ01vZGU6Ok1lZGlhUmVuZGVyaW5nVG9MYXllcikKICAgICAgICAgcmV0dXJuIG1fY2FjaGVk
SXNSZWFkeUZvckRpc3BsYXk7CiAKLSAgICBpZiAobV92aWRlb091dHB1dCAmJiAobV9sYXN0UGl4
ZWxCdWZmZXIgfHwgW21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpb
bV9hdlBsYXllckl0ZW0gY3VycmVudFRpbWVdXSkpCisgICAgaWYgKG1fdmlkZW9PdXRwdXQgJiYg
KG1fbGFzdFBpeGVsQnVmZmVyIHx8IG1fdmlkZW9PdXRwdXQtPmhhc0ltYWdlRm9yVGltZShjdXJy
ZW50TWVkaWFUaW1lKCkpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gbV92
aWRlb0ZyYW1lSGFzRHJhd247CkBAIC0xNDQ0LDM0ICsxNDI2LDMwIEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1QYXVzZWQoKSBjb25zdAogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN0YXJ0VmlkZW9GcmFtZU1ldGFk
YXRhR2F0aGVyaW5nKCkKIHsKLSAgICBBU1NFUlQoIW1fdmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVy
aW5nT2JzZXJ2ZXIgfHwgbV9hdlBsYXllcik7Ci0gICAgbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVN
ZXRhZGF0YSA9IHRydWU7CisgICAgLy8gcmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjaygpIGNhcmVz
IGFib3V0IHRoZSAvbmV4dC8gYXZhaWxhYmxlIGZyYW1lLiBQdWxsIHRoZSBjdXJyZW50IGZyYW1l
IGZyb20KKyAgICAvLyB0aGUgUXVldWVkVmlkZW9PdXRwdXQgc28gcGFpbnRzIG9mIHRoZSBjdXJy
ZW50IGZyYW1lIHN1Y2NlZWQ7CisgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAKLSAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBhIENBRGlzcGxheUxpbmsgdG8gZ2V0IHVwZGF0ZXMgb24g
cmVuZGVyaW5nLCBmb3Igbm93IHdlIGVtdWxhdGUgd2l0aCBhZGRQZXJpb2RpY1RpbWVPYnNlcnZl
ckZvckludGVydmFsLgotICAgIG1fdmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nT2JzZXJ2ZXIg
PSBbbV9hdlBsYXllciBhZGRQZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVydmFsOlBBTDo6Q01U
aW1lTWFrZSgxLCA2MCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1c2luZ0Jsb2Nr
Olt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XShDTVRpbWUgY3VycmVudFRpbWUpIHsKLSAg
ICAgICAgZW5zdXJlT25NYWluVGhyZWFkKFt3ZWFrVGhpcywgY3VycmVudFRpbWVdIHsKLSAgICAg
ICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y2hlY2tOZXdW
aWRlb0ZyYW1lTWV0YWRhdGEoY3VycmVudFRpbWUpOwotICAgICAgICB9KTsKLSAgICB9XTsKKyAg
ICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciA9IFdURjo6bWFrZVVuaXF1ZTxPYnNlcnZl
cjx2b2lkKCk+PihbdGhpc10geworICAgICAgICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZl
ciA9IG51bGxwdHI7CisgICAgICAgIGNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCk7CisgICAg
fSk7CisKKyAgICBpZiAobV92aWRlb091dHB1dCkKKyAgICAgICAgbV92aWRlb091dHB1dC0+YWRk
Q3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKCptX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZl
cik7CisKKyAgICBtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhID0gdHJ1ZTsKIH0KIAot
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjaGVja05ld1ZpZGVvRnJh
bWVNZXRhZGF0YShDTVRpbWUgY3VycmVudFRpbWUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCkKIHsKLSAgICBpZiAo
IXVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpKQorICAgIGlmICghbV9pc0dhdGhlcmluZ1ZpZGVvRnJh
bWVNZXRhZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmlkZW9GcmFtZU1ldGFkYXRhIG1l
dGFkYXRhOwotICAgIG1ldGFkYXRhLndpZHRoID0gbV9jYWNoZWRQcmVzZW50YXRpb25TaXplLndp
ZHRoKCk7Ci0gICAgbWV0YWRhdGEuaGVpZ2h0ID0gbV9jYWNoZWRQcmVzZW50YXRpb25TaXplLmhl
aWdodCgpOwotICAgIG1ldGFkYXRhLnByZXNlbnRlZEZyYW1lcyA9ICsrbV9zYW1wbGVDb3VudDsK
LSAgICBtZXRhZGF0YS5tZWRpYVRpbWUgPSBQQUw6OkNNVGltZUdldFNlY29uZHMoY3VycmVudFRp
bWUpOwotICAgIC8vIEZJWE1FOiBwcmVzZW50YXRpb25UaW1lIGFuZCBleHBlY3RlZERpc3BsYXlU
aW1lIG1pZ2h0IG5vdCBhbHdheXMgaGF2ZSB0aGUgc2FtZSB2YWx1ZSwgd2Ugc2hvdWxkIHRyeSBn
ZXR0aW5nIG1vcmUgcHJlY2lzZSB2YWx1ZXMuCi0gICAgbWV0YWRhdGEucHJlc2VudGF0aW9uVGlt
ZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpOwot
ICAgIG1ldGFkYXRhLmV4cGVjdGVkRGlzcGxheVRpbWUgPSBtZXRhZGF0YS5wcmVzZW50YXRpb25U
aW1lOworICAgIGlmICghdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkgJiYgIW1fdmlkZW9GcmFtZU1l
dGFkYXRhKQorICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvRnJhbWVNZXRhZGF0YSA9IG1l
dGFkYXRhOwotICAgIHBsYXllcigpLT5vbk5ld1ZpZGVvRnJhbWVNZXRhZGF0YShXVEZNb3ZlKG1l
dGFkYXRhKSwgbV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIHBsYXllcigpLT5vbk5ld1Zp
ZGVvRnJhbWVNZXRhZGF0YShXVEZNb3ZlKCptX3ZpZGVvRnJhbWVNZXRhZGF0YSksIG1fbGFzdFBp
eGVsQnVmZmVyLmdldCgpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzdG9wVmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nKCkKQEAgLTI1MTgsMTcgKzI0
OTYsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVW
aWRlb091dHB1dCgpCiAgICAgaWYgKCFtX2F2UGxheWVySXRlbSB8fCBtX3ZpZGVvT3V0cHV0KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvT3V0cHV0ID0gYWRvcHROUyhbUEFMOjphbGxv
Y0FWUGxheWVySXRlbVZpZGVvT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0aFBpeGVsQnVmZmVyQXR0
cmlidXRlczpuaWxdKTsKKyAgICBtX3ZpZGVvT3V0cHV0ID0gUXVldWVkVmlkZW9PdXRwdXQ6OmNy
ZWF0ZShtX2F2UGxheWVySXRlbS5nZXQoKSwgbV9hdlBsYXllci5nZXQoKSk7CiAgICAgQVNTRVJU
KG1fdmlkZW9PdXRwdXQpOwogICAgIGlmICghbV92aWRlb091dHB1dCkgewogICAgICAgICBFUlJP
Ul9MT0coTE9HSURFTlRJRklFUiwgIi1bQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQgaW5pdFdpdGhQ
aXhlbEJ1ZmZlckF0dHJpYnV0ZXM6XSBmYWlsZWQhIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0KLSAgICBtX3ZpZGVvT3V0cHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViQ29yZUFWRlB1bGxE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQbGF5ZXI6KnRoaXNdKTsKLSAgICBbbV92aWRlb091dHB1
dCBzZXREZWxlZ2F0ZTptX3ZpZGVvT3V0cHV0RGVsZWdhdGUuZ2V0KCkgcXVldWU6Z2xvYmFsUHVs
bERlbGVnYXRlUXVldWUoKV07Ci0KLSAgICBbbV9hdlBsYXllckl0ZW0gYWRkT3V0cHV0Om1fdmlk
ZW9PdXRwdXQuZ2V0KCldOworICAgIGlmIChtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcikK
KyAgICAgICAgbV92aWRlb091dHB1dC0+YWRkQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKCpt
X2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcik7CiAKICAgICBzZXROZWVkc1JlbmRlcmluZ01v
ZGVDaGFuZ2VkKCk7CiB9CkBAIC0yNTM4LDE5ICsyNTEzLDE5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZpZGVvT3V0cHV0KCkKICAgICBpZiAoIW1f
dmlkZW9PdXRwdXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2F2UGxheWVySXRlbSkK
LSAgICAgICAgW21fYXZQbGF5ZXJJdGVtIHJlbW92ZU91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgp
XTsKLQogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgbV92aWRlb091dHB1dCA9
IDA7CisgICAgbV92aWRlb091dHB1dC0+aW52YWxpZGF0ZSgpOworICAgIG1fdmlkZW9PdXRwdXQg
PSBudWxscHRyOworCisgICAgbV92aWRlb0ZyYW1lTWV0YWRhdGEgPSB7IH07CiAKICAgICBzZXRO
ZWVkc1JlbmRlcmluZ01vZGVDaGFuZ2VkKCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkKIHsKLSAgICBpZiAoIW1f
YXZQbGF5ZXJJdGVtIHx8IHJlYWR5U3RhdGUoKSA8IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpI
YXZlQ3VycmVudERhdGEpCisgICAgaWYgKCFtX2F2UGxheWVySXRlbSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgbV9oYXZlQmVlbkFza2VkVG9QYWludCA9IHRydWU7CkBAIC0yNTU5LDEy
ICsyNTM0LDI1IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBk
YXRlTGFzdFBpeGVsQnVmZmVyKCkKICAgICAgICAgY3JlYXRlVmlkZW9PdXRwdXQoKTsKICAgICBB
U1NFUlQobV92aWRlb091dHB1dCk7CiAKLSAgICBDTVRpbWUgY3VycmVudFRpbWUgPSBbbV9hdlBs
YXllckl0ZW0gY3VycmVudFRpbWVdOworICAgIGF1dG8gY3VycmVudFRpbWUgPSBjdXJyZW50TWVk
aWFUaW1lKCk7CiAKLSAgICBpZiAoIVttX3ZpZGVvT3V0cHV0IGhhc05ld1BpeGVsQnVmZmVyRm9y
SXRlbVRpbWU6Y3VycmVudFRpbWVdKQorICAgIGlmICghbV92aWRlb091dHB1dC0+aGFzSW1hZ2VG
b3JUaW1lKGN1cnJlbnRUaW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9sYXN0
UGl4ZWxCdWZmZXIgPSBhZG9wdENGKFttX3ZpZGVvT3V0cHV0IGNvcHlQaXhlbEJ1ZmZlckZvckl0
ZW1UaW1lOmN1cnJlbnRUaW1lIGl0ZW1UaW1lRm9yRGlzcGxheTpuaWxdKTsKKyAgICBhdXRvIGVu
dHJ5ID0gbV92aWRlb091dHB1dC0+dGFrZVZpZGVvRnJhbWVFbnRyeUZvclRpbWUoY3VycmVudFRp
bWUpOworICAgIG1fbGFzdFBpeGVsQnVmZmVyID0gV1RGTW92ZShlbnRyeS5waXhlbEJ1ZmZlcik7
CisKKyAgICBpZiAobV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSkgeworICAgICAgICBh
dXRvIHByZXNlbnRhdGlvblRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VF
cG9jaCgpLnNlY29uZHMoKSAtIChjdXJyZW50VGltZSAtIGVudHJ5LmRpc3BsYXlUaW1lKS50b0Rv
dWJsZSgpOworICAgICAgICBtX3ZpZGVvRnJhbWVNZXRhZGF0YSA9IHsKKyAgICAgICAgICAgIC53
aWR0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDVlBpeGVsQnVmZmVyR2V0V2lkdGgobV9sYXN0
UGl4ZWxCdWZmZXIuZ2V0KCkpKSwKKyAgICAgICAgICAgIC5oZWlnaHQgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkp
LAorICAgICAgICAgICAgLnByZXNlbnRlZEZyYW1lcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPigr
K21fc2FtcGxlQ291bnQpLAorICAgICAgICAgICAgLm1lZGlhVGltZSA9IGVudHJ5LmRpc3BsYXlU
aW1lLnRvRG91YmxlKCksCisgICAgICAgICAgICAucHJlc2VudGF0aW9uVGltZSA9IHByZXNlbnRh
dGlvblRpbWUsCisgICAgICAgICAgICAuZXhwZWN0ZWREaXNwbGF5VGltZSA9IHByZXNlbnRhdGlv
blRpbWUsCisgICAgICAgIH07CisgICAgfQogCiAgICAgaWYgKG1faW1hZ2VSb3RhdGlvblNlc3Np
b24pCiAgICAgICAgIG1fbGFzdFBpeGVsQnVmZmVyID0gbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+
cm90YXRlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKQEAgLTI1ODQsNyArMjU3Miw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dmlkZW9PdXRwdXRIYXNBdmFp
bGFibGVGcmFtZSgpCiAgICAgaWYgKCFtX3ZpZGVvT3V0cHV0KQogICAgICAgICBjcmVhdGVWaWRl
b091dHB1dCgpOwogCi0gICAgcmV0dXJuIFttX3ZpZGVvT3V0cHV0IGhhc05ld1BpeGVsQnVmZmVy
Rm9ySXRlbVRpbWU6W21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXV07CisgICAgcmV0dXJuIG1f
dmlkZW9PdXRwdXQtPmhhc0ltYWdlRm9yVGltZShQQUw6OnRvTWVkaWFUaW1lKFttX2F2UGxheWVy
SXRlbSBjdXJyZW50VGltZV0pKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQpAQCAtMjYwMiw3ICsy
NTkwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVM
YXN0SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQogICAgIC8vIENhbGxzIHRvIGNvcHlQaXhlbEJ1ZmZl
ckZvckl0ZW1UaW1lOml0ZW1UaW1lRm9yRGlzcGxheTogbWF5IHJldHVybiBuaWwgaWYgdGhlIHBp
eGVsIGJ1ZmZlcgogICAgIC8vIGZvciB0aGUgcmVxdWVzdGVkIHRpbWUgaGFzIGFscmVhZHkgYmVl
biByZXRyaWV2ZWQuIEluIHRoaXMgY2FzZSwgdGhlIGxhc3QgdmFsaWQgaW1hZ2UgKGlmIGFueSkK
ICAgICAvLyBzaG91bGQgYmUgZGlzcGxheWVkLgotICAgIGlmICgobV9pc0dhdGhlcmluZ1ZpZGVv
RnJhbWVNZXRhZGF0YSB8fCAhdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkpICYmIChtX2xhc3RJbWFn
ZSB8fCAhbV9sYXN0UGl4ZWxCdWZmZXIpKQorICAgIGlmICghdXBkYXRlTGFzdFBpeGVsQnVmZmVy
KCkgJiYgKG1fbGFzdEltYWdlIHx8ICFtX2xhc3RQaXhlbEJ1ZmZlcikpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmICghbV9waXhlbEJ1ZmZlckNvbmZvcm1lcikgewpAQCAtMjYzNyw4ICsyNjI1
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhW
aWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBpeGVsQnVmZmVyRm9yQ3Vy
cmVudFRpbWUoKQogewotICAgIGlmICghbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSkK
LSAgICAgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CisgICAgdXBkYXRlTGFzdFBpeGVsQnVm
ZmVyKCk7CiAKICAgICByZXR1cm4gbV9sYXN0UGl4ZWxCdWZmZXI7CiB9CkBAIC0yNjY5LDcgKzI2
NTYsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3YWl0Rm9y
VmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCkKICAgICBzdGQ6Om9wdGlvbmFsPFJ1bkxv
b3A6OlRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+PiB0aW1lb3V0VGlt
ZXI7CiAKICAgICBpZiAoIW1fcnVuTG9vcE5lc3RpbmdMZXZlbCkgewotICAgICAgICBbbV92aWRl
b091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VXaXRoQWR2YW5jZUlu
dGVydmFsOjBdOworICAgICAgICBPYnNlcnZlcjx2b2lkKCk+IHdhaXRGb3JWaWRlb091dHB1dE1l
ZGlhRGF0YVdpbGxDaGFuZ2VPYnNlcnZlcihbdGhpc10geworICAgICAgICAgICAgaWYgKG1fcnVu
TG9vcE5lc3RpbmdMZXZlbCkKKyAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgp
OworICAgICAgICB9KTsKKyAgICAgICAgbV92aWRlb091dHB1dC0+YWRkQ3VycmVudEltYWdlQ2hh
bmdlZE9ic2VydmVyKHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2VPYnNlcnZl
cik7CiAKICAgICAgICAgdGltZW91dFRpbWVyLmVtcGxhY2UoUnVuTG9vcDo6bWFpbigpLCBbJl0g
ewogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLnN0b3AoKTsKQEAgLTI2OTYsMTUgKzI2ODcs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndhaXRGb3JWaWRl
b091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6Om91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQogewotICAgIGlmICht
X3J1bkxvb3BOZXN0aW5nTGV2ZWwpIHsKLSAgICAgICAgaWYgKFJ1bkxvb3A6OmlzTWFpbigpKQot
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLnN0b3AoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewotICAgICAgICAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5zdG9wKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgIH0K
KyAgICBjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YSgpOwogfQogCiAjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpCkBAIC00MDg5LDM3ICs0MDcyLDQgQEAgLSAodm9pZClyZXNvdXJj
ZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgZGlkQ2FuY2Vs
TG9hZGluZ1IKIAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gV2ViQ29yZUFWRlB1bGxEZWxlZ2F0
ZSB7Ci0gICAgV2Vha1B0cjxXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDPiBfcGxheWVyOwotfQotCi1Ac3ludGhlc2l6ZSBzZW1hcGhvcmUgPSBtX3NlbWFwaG9yZTsK
LQotLSAoaWQpaW5pdFdpdGhQbGF5ZXI6KFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQz4mJilwbGF5ZXIKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlm
ICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfcGxheWVyID0gV1RGTW92ZShwbGF5
ZXIpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKW91dHB1dE1lZGlhRGF0YVdpbGxD
aGFuZ2U6KEFWUGxheWVySXRlbVZpZGVvT3V0cHV0ICopb3V0cHV0Ci17Ci0gICAgVU5VU0VEX1BB
UkFNKG91dHB1dCk7Ci0gICAgbV9zZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgY2FsbE9uTWFpblRo
cmVhZChbc2VsZiwgc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfV0gewotICAgICAgICBp
ZiAoX3BsYXllcikKLSAgICAgICAgICAgIF9wbGF5ZXItPm91dHB1dE1lZGlhRGF0YVdpbGxDaGFu
Z2UoKTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KEFW
UGxheWVySXRlbVZpZGVvT3V0cHV0ICopb3V0cHV0Ci17Ci0gICAgVU5VU0VEX1BBUkFNKG91dHB1
dCk7Ci0gICAgLy8gTm8tb3AuCi19Ci0KLUBlbmQKLQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRl
b091dHB1dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvUXVldWVkVmlkZW9PdXRwdXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YmFmMGVhMTFlNWM0ZmJlMzI0
ZDk1MjVhZGYxYmRiM2M2MzMwYTg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQuaApA
QCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
VklERU8pCisKKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVk
ZSA8d3RmL01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9XZWFrSGFzaFNldC5oPgorCitPQkpDX0NMQVNTIEFWUGxheWVyOworT0JKQ19DTEFTUyBB
VlBsYXllckl0ZW07CitPQkpDX0NMQVNTIEFWUGxheWVySXRlbVZpZGVvT3V0cHV0OworT0JKQ19D
TEFTUyBXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlOworCit0eXBlZGVmIHN0cnVjdCBfX0NW
QnVmZmVyICpDVlBpeGVsQnVmZmVyUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFF1ZXVlZFZpZGVvT3V0cHV0CisgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxRdWV1ZWRWaWRlb091
dHB1dD4KKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxRdWV1ZWRWaWRlb091dHB1dD4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UXVl
dWVkVmlkZW9PdXRwdXQ+IGNyZWF0ZShBVlBsYXllckl0ZW0qLCBBVlBsYXllciopOworICAgIH5R
dWV1ZWRWaWRlb091dHB1dCgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisgICAgYm9vbCBo
YXNJbWFnZUZvclRpbWUoY29uc3QgTWVkaWFUaW1lJikgY29uc3Q7CisKKyAgICBzdHJ1Y3QgVmlk
ZW9GcmFtZUVudHJ5IHsKKyAgICAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVs
QnVmZmVyOworICAgICAgICBNZWRpYVRpbWUgZGlzcGxheVRpbWU7CisgICAgfTsKKyAgICBWaWRl
b0ZyYW1lRW50cnkgdGFrZVZpZGVvRnJhbWVFbnRyeUZvclRpbWUoY29uc3QgTWVkaWFUaW1lJik7
CisKKyAgICB2b2lkIGFkZFZpZGVvRnJhbWVFbnRyaWVzKFZlY3RvcjxWaWRlb0ZyYW1lRW50cnk+
JiYpOworICAgIHZvaWQgcHVyZ2VWaWRlb0ZyYW1lRW50cmllcygpOworCisgICAgdXNpbmcgQ3Vy
cmVudEltYWdlQ2hhbmdlZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZCgpPjsKKyAgICB2b2lkIGFk
ZEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcihjb25zdCBDdXJyZW50SW1hZ2VDaGFuZ2VkT2Jz
ZXJ2ZXImKTsKKworICAgIHVzaW5nIEltYWdlTWFwID0gc3RkOjptYXA8TWVkaWFUaW1lLCBSZXRh
aW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4+OworCisgICAgdm9pZCByYXRlQ2hhbmdlZChmbG9hdCk7
CisKK3ByaXZhdGU6CisgICAgUXVldWVkVmlkZW9PdXRwdXQoQVZQbGF5ZXJJdGVtKiwgQVZQbGF5
ZXIqKTsKKworICAgIHZvaWQgcHVyZ2VJbWFnZXNCZWZvcmVUaW1lKGNvbnN0IE1lZGlhVGltZSYp
OworICAgIHZvaWQgY29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisgICAgdm9pZCBj
YW5jZWxOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAgICB2b2lkIG5leHRJbWFnZVRpbWVSZWFj
aGVkKCk7CisKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtPiBtX3BsYXllckl0ZW07CisgICAg
UmV0YWluUHRyPEFWUGxheWVyPiBtX3BsYXllcjsKKyAgICBSZXRhaW5QdHI8V2ViUXVldWVkVmlk
ZW9PdXRwdXREZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVt
VmlkZW9PdXRwdXQ+IG1fdmlkZW9PdXRwdXQ7CisgICAgUmV0YWluUHRyPGlkPiBtX3ZpZGVvVGlt
ZWJhc2VPYnNlcnZlcjsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fbmV4dEltYWdlVGltZWJhc2VPYnNl
cnZlcjsKKworICAgIEltYWdlTWFwIG1fdmlkZW9GcmFtZXM7CisgICAgV2Vha0hhc2hTZXQ8Q3Vy
cmVudEltYWdlQ2hhbmdlZE9ic2VydmVyPiBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnM7
CisKKyAgICBib29sIG1fcGF1c2VkIHsgdHJ1ZSB9OworfTsKKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1F1ZXVlZFZpZGVvT3V0cHV0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJjMDgz
ODE0YzA4YzdkZWVkNjFjOTA3OWMyMmJlM2Y1MDc4YTc3ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZp
ZGVvT3V0cHV0Lm1tCkBAIC0wLDAgKzEsMzA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlF1ZXVlZFZpZGVvT3V0cHV0LmgiCisKKyNpZiBFTkFCTEUoVklE
RU8pCisKKyNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtT3V0cHV0Lmg+CisjaW5j
bHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNpbmNsdWRl
IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgorCisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNv
ZnRMaW5rLmg+CisjaW5jbHVkZSA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisK
K0BpbnRlcmZhY2UgV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSA6IE5TT2JqZWN0PEFWUGxh
eWVySXRlbU91dHB1dFB1bGxEZWxlZ2F0ZT4geworICAgIFdlYWtQdHI8V2ViQ29yZTo6UXVldWVk
VmlkZW9PdXRwdXQ+IF9wYXJlbnQ7Cit9CistIChpZClpbml0V2l0aFBhcmVudDooV2ViQ29yZTo6
UXVldWVkVmlkZW9PdXRwdXQqKXBhcmVudDsKKy0gKHZvaWQpb3V0cHV0TWVkaWFEYXRhV2lsbENo
YW5nZTooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0OworLSAodm9pZClvdXRwdXRTZXF1ZW5j
ZVdhc0ZsdXNoZWQ6KEFWUGxheWVySXRlbU91dHB1dCAqKW91dHB1dDsKKy0gKHZvaWQpb2JzZXJ2
ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0Rp
Y3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dDsKK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFdlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUKKy0gKGlkKWluaXRXaXRoUGFy
ZW50OihXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dCopcGFyZW50Cit7CisgICAgc2VsZiA9IFtz
dXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBf
cGFyZW50ID0gcGFyZW50OworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKW91dHB1dE1l
ZGlhRGF0YVdpbGxDaGFuZ2U6KEFWUGxheWVySXRlbU91dHB1dCAqKW91dHB1dAoreworICAgIEFT
U0VSVChbb3V0cHV0IGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRBVlBsYXllckl0ZW1WaWRlb091dHB1
dENsYXNzKCldKTsKKyAgICBhdXRvKiB2aWRlb091dHB1dCA9IChBVlBsYXllckl0ZW1WaWRlb091
dHB1dCopb3V0cHV0OworCisgICAgVmVjdG9yPFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpW
aWRlb0ZyYW1lRW50cnk+IHZpZGVvRnJhbWVFbnRyaWVzOworICAgIGRvIHsKKyAgICAgICAgQ01U
aW1lIGVhcmxpZXN0VGltZSA9IFt2aWRlb091dHB1dCBlYXJsaWVzdEF2YWlsYWJsZVBpeGVsQnVm
ZmVySXRlbVRpbWVdOworICAgICAgICBpZiAoQ01USU1FX0lTX0lOVkFMSUQoZWFybGllc3RUaW1l
KSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBhZG9w
dENGKFt2aWRlb091dHB1dCBjb3B5UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTplYXJsaWVzdFRpbWUg
aXRlbVRpbWVGb3JEaXNwbGF5Om5pbF0pOworICAgICAgICBpZiAoIXBpeGVsQnVmZmVyKQorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgdmlkZW9GcmFtZUVudHJpZXMuYXBwZW5kKHsgV1RG
TW92ZShwaXhlbEJ1ZmZlciksIFBBTDo6dG9NZWRpYVRpbWUoZWFybGllc3RUaW1lKSB9KTsKKyAg
ICB9IHdoaWxlICh0cnVlKTsKKworICAgIGlmICh2aWRlb0ZyYW1lRW50cmllcy5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGNhbGxPbk1haW5SdW5Mb29wKFt2aWRlb0ZyYW1lRW50
cmllcyA9IFdURk1vdmUodmlkZW9GcmFtZUVudHJpZXMpLCBwYXJlbnQgPSBfcGFyZW50XSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKHBhcmVudCkKKyAgICAgICAgICAgIHBhcmVudC0+YWRkVmlk
ZW9GcmFtZUVudHJpZXMoV1RGTW92ZSh2aWRlb0ZyYW1lRW50cmllcykpOworICAgIH0pOworfQor
CistICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICop
b3V0cHV0Cit7CisgICAgQVNTRVJUKFtvdXRwdXQgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxh
eWVySXRlbVZpZGVvT3V0cHV0Q2xhc3MoKV0pOworICAgIGF1dG8qIHZpZGVvT3V0cHV0ID0gKEFW
UGxheWVySXRlbVZpZGVvT3V0cHV0KilvdXRwdXQ7CisgICAgW3ZpZGVvT3V0cHV0IHJlcXVlc3RO
b3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZUFzU29vbkFzUG9zc2libGVdOworCisgICAgY2Fs
bE9uTWFpblJ1bkxvb3AoW3BhcmVudCA9IF9wYXJlbnRdIHsKKyAgICAgICAgaWYgKHBhcmVudCkK
KyAgICAgICAgICAgIHBhcmVudC0+cHVyZ2VWaWRlb0ZyYW1lRW50cmllcygpOworICAgIH0pOwor
fQorCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQp
b2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRl
eHQKK3sKKyAgICBpZiAoIVtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInJhdGUiXSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byByYXRlVmFsdWUgPSAoTlNOdW1iZXIqKVtjaGFuZ2UgdmFs
dWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07CisgICAgQVNTRVJUKFtyYXRlVmFsdWUg
aXNLaW5kT2ZDbGFzczpOU051bWJlci5jbGFzc10pOworICAgIGF1dG8gcmF0ZSA9IHJhdGVWYWx1
ZS5mbG9hdFZhbHVlOworCisgICAgZW5zdXJlT25NYWluUnVuTG9vcChbcGFyZW50ID0gX3BhcmVu
dCwgcmF0ZV0geworICAgICAgICBpZiAocGFyZW50KQorICAgICAgICAgICAgcGFyZW50LT5yYXRl
Q2hhbmdlZChyYXRlKTsKKyAgICB9KTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCkKK3sK
KyAgICBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxRdWV1ZTsKKyAgICBzdGF0aWMgZGlz
cGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57
CisgICAgICAgIGdsb2JhbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJRdWV1ZWRW
aWRlb091dHB1dERlbGVnYXRlIHF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKKyAgICB9
KTsKKyAgICByZXR1cm4gZ2xvYmFsUXVldWU7Cit9CisKK1JlZjxRdWV1ZWRWaWRlb091dHB1dD4g
UXVldWVkVmlkZW9PdXRwdXQ6OmNyZWF0ZShBVlBsYXllckl0ZW0qIGl0ZW0sIEFWUGxheWVyKiBw
bGF5ZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUXVldWVkVmlkZW9PdXRwdXQoaXRl
bSwgcGxheWVyKSk7Cit9CisKK1F1ZXVlZFZpZGVvT3V0cHV0OjpRdWV1ZWRWaWRlb091dHB1dChB
VlBsYXllckl0ZW0qIGl0ZW0sIEFWUGxheWVyKiBwbGF5ZXIpCisgICAgOiBtX3BsYXllckl0ZW0o
aXRlbSkKKyAgICAsIG1fcGxheWVyKHBsYXllcikKKyAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhb
W1dlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNd
KSkKK3sKKyAgICBtX3ZpZGVvT3V0cHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVySXRl
bVZpZGVvT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0aFBpeGVsQnVmZmVyQXR0cmlidXRlczpuaWxd
KTsKKyAgICBbbV92aWRlb091dHB1dCBzZXREZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpIHF1ZXVl
Omdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKV07CisgICAgW21fdmlkZW9PdXRwdXQgcmVxdWVz
dE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJsZV07CisKKyAgICBb
bV9wbGF5ZXJJdGVtIGFkZE91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKKworICAgIFttX3Bs
YXllciBhZGRPYnNlcnZlcjptX2RlbGVnYXRlLmdldCgpIGZvcktleVBhdGg6QCJyYXRlIiBvcHRp
b25zOihOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IHwgTlNLZXlWYWx1ZU9ic2VydmluZ09w
dGlvbkluaXRpYWwpIGNvbnRleHQ6bmlsXTsKKworICAgIG1fdmlkZW9UaW1lYmFzZU9ic2VydmVy
ID0gW21fcGxheWVyIGFkZFBlcmlvZGljVGltZU9ic2VydmVyRm9ySW50ZXJ2YWw6UEFMOjpDTVRp
bWVNYWtlKDEsIDYwKSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCkgdXNpbmdCbG9j
azpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvdGVjdGVkRGVsZWdhdGUgPSBtX2Rl
bGVnYXRlLCBwcm90ZWN0ZWRPdXRwdXQgPSBtX3ZpZGVvT3V0cHV0XShDTVRpbWUgY3VycmVudFRp
bWUpIG11dGFibGUgeworCisgICAgICAgIC8vIFBlcmlvZGljYWxseSBjaGVjayBmb3IgbmV3IGF2
YWlsYWJsZSBwaXhlbCBidWZmZXJzLgorICAgICAgICBbcHJvdGVjdGVkRGVsZWdhdGUgb3V0cHV0
TWVkaWFEYXRhV2lsbENoYW5nZTpwcm90ZWN0ZWRPdXRwdXQuZ2V0KCldOworCisgICAgICAgIC8v
IEFuZCBwdXJnZSB0aGUgYmFjayBidWZmZXIgb2YgcGFzdCBmcmFtZXMuCisgICAgICAgIGNhbGxP
bk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9IHdlYWtUaGlzLCB0aW1lID0gUEFMOjp0b01lZGlhVGlt
ZShjdXJyZW50VGltZSldIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAg
ICAgICB3ZWFrVGhpcy0+cHVyZ2VJbWFnZXNCZWZvcmVUaW1lKHRpbWUpOworICAgICAgICB9KTsK
KyAgICB9XTsKK30KKworUXVldWVkVmlkZW9PdXRwdXQ6On5RdWV1ZWRWaWRlb091dHB1dCgpCit7
CisgICAgaW52YWxpZGF0ZSgpOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjppbnZhbGlk
YXRlKCkKK3sKKyAgICBpZiAobV92aWRlb1RpbWViYXNlT2JzZXJ2ZXIpIHsKKyAgICAgICAgW21f
cGxheWVyIHJlbW92ZVRpbWVPYnNlcnZlcjptX3ZpZGVvVGltZWJhc2VPYnNlcnZlci5nZXQoKV07
CisgICAgICAgIG1fdmlkZW9UaW1lYmFzZU9ic2VydmVyID0gbmlsOworICAgIH0KKworICAgIGNh
bmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworCisgICAgaWYgKG1fdmlkZW9PdXRwdXQpIHsK
KyAgICAgICAgW21fcGxheWVySXRlbSByZW1vdmVPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQoKV07
CisgICAgICAgIFttX3ZpZGVvT3V0cHV0IHNldERlbGVnYXRlOm5pbCBxdWV1ZTpuaWxdOworICAg
ICAgICBtX3ZpZGVvT3V0cHV0ID0gbmlsOworICAgIH0KKworICAgIGlmIChtX3BsYXllcikgewor
ICAgICAgICBbbV9wbGF5ZXIgcmVtb3ZlT2JzZXJ2ZXI6bV9kZWxlZ2F0ZS5nZXQoKSBmb3JLZXlQ
YXRoOkAicmF0ZSJdOworICAgICAgICBtX3BsYXllciA9IG5pbDsKKyAgICB9CisKKyAgICBtX3Bs
YXllckl0ZW0gPSBuaWw7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBNYXliZUNvbnN0TWFwLCB0
eXBlbmFtZSBNYXliZUNvbnN0SXRlciA9IGRlY2x0eXBlKE1heWJlQ29uc3RNYXAoKS5iZWdpbigp
KT4KK01heWJlQ29uc3RJdGVyIGZpbmRJbWFnZUZvclRpbWUoTWF5YmVDb25zdE1hcCYgbWFwLCBj
b25zdCBNZWRpYVRpbWUmIHRpbWUpCit7CisgICAgLy8gT3V0cHV0cyBvZiBBVlBsYXllckl0ZW1W
aWRlb091dHB1dCBoYXZlIGEgZGlzcGxheSB0aW1lLCBidXQgbm90IGEgZHVyYXRpb247IHRoZXkg
YXJlIHZhbGlkCisgICAgLy8gdW50aWwgdGhlIGFycml2YWwgb2YgYSBsYXRlciBmcmFtZS4gRmlu
ZCB0aGlzIGZyYW1lIGVmZmljaWVudGx5IHVzaW5nIHNldDo6dXBwZXJfYm91bmQgdG8gZmluZAor
ICAgIC8vIHRoZSBuZXh0IGRpc3BsYXlhYmxlIGZyYW1lLCBhbmQgd2FsayBiYWNrd2FyZHMgYnkg
b25lIHRvIGZpbmQgYSBmcmFtZSBmb3IgdGhlIHRhcmdldCB0aW1lLgorICAgIGlmIChtYXAuZW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIG1hcC5lbmQoKTsKKworICAgIGF1dG8gaXRlciA9IG1hcC51
cHBlcl9ib3VuZCh0aW1lKTsKKyAgICBpZiAoaXRlciA9PSBtYXAuYmVnaW4oKSkKKyAgICAgICAg
cmV0dXJuIG1hcC5lbmQoKTsKKworICAgIHJldHVybiAtLWl0ZXI7Cit9CisKK2Jvb2wgUXVldWVk
VmlkZW9PdXRwdXQ6Omhhc0ltYWdlRm9yVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywgdGltZSkgIT0g
bV92aWRlb0ZyYW1lcy5lbmQoKTsKK30KKworYXV0byBRdWV1ZWRWaWRlb091dHB1dDo6dGFrZVZp
ZGVvRnJhbWVFbnRyeUZvclRpbWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lKSAtPiBWaWRlb0ZyYW1l
RW50cnkKK3sKKyAgICBhdXRvIGl0ZXIgPSBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFtZXMs
IHRpbWUpOworICAgIGlmIChpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkpCisgICAgICAgIHJl
dHVybiB7IG51bGxwdHIsIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSB9OworCisgICAgVmlkZW9G
cmFtZUVudHJ5IGVudHJ5ID0geyBXVEZNb3ZlKGl0ZXItPnNlY29uZCksIGl0ZXItPmZpcnN0IH07
CisKKyAgICAvLyBQdXJnZSBhbGwgZnJhbWVzIGJlZm9yZSBgdGltZWAsIHNvIHRoYXQgcmVwZWF0
ZWQgY2FsbHMgd2l0aCB0aGUgc2FtZSB0aW1lIGRvbid0IHJldHVybgorICAgIC8vIHN1Y2Nlc3Np
dmVseSBlYXJsaWVyIGltYWdlcy4KKyAgICBtX3ZpZGVvRnJhbWVzLmVyYXNlKG1fdmlkZW9GcmFt
ZXMuYmVnaW4oKSwgKytpdGVyKTsKKworICAgIHJldHVybiBlbnRyeTsKK30KKwordm9pZCBRdWV1
ZWRWaWRlb091dHB1dDo6YWRkQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKGNvbnN0IEN1cnJl
bnRJbWFnZUNoYW5nZWRPYnNlcnZlciYgb2JzZXJ2ZXIpCit7CisgICAgbV9jdXJyZW50SW1hZ2VD
aGFuZ2VkT2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7CisgICAgY29uZmlndXJlTmV4dEltYWdlVGlt
ZU9ic2VydmVyKCk7CisKKyAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZN
ZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091
dHB1dDo6Y29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKCkKK3sKKyAgICBpZiAobV9uZXh0
SW1hZ2VUaW1lYmFzZU9ic2VydmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGN1cnJl
bnRUaW1lID0gUEFMOjp0b01lZGlhVGltZShbbV9wbGF5ZXIgY3VycmVudFRpbWVdKTsKKyAgICBh
dXRvIGl0ZXIgPSBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFtZXMsIGN1cnJlbnRUaW1lKTsK
KyAgICBpZiAoaXRlciA9PSBtX3ZpZGVvRnJhbWVzLmVuZCgpIHx8ICsraXRlciA9PSBtX3ZpZGVv
RnJhbWVzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG5leHRJbWFnZVRpbWUg
PSBpdGVyLT5maXJzdDsKKworICAgIG1fbmV4dEltYWdlVGltZWJhc2VPYnNlcnZlciA9IFttX3Bs
YXllciBhZGRCb3VuZGFyeVRpbWVPYnNlcnZlckZvclRpbWVzOkBbW05TVmFsdWUgdmFsdWVXaXRo
Q01UaW1lOlBBTDo6dG9DTVRpbWUoY3VycmVudFRpbWUpXV0gcXVldWU6Z2xvYmFsT3V0cHV0RGVs
ZWdhdGVRdWV1ZSgpIHVzaW5nQmxvY2s6W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHBy
b3RlY3RlZERlbGVnYXRlID0gbV9kZWxlZ2F0ZSwgcHJvdGVjdGVkT3V0cHV0ID0gbV92aWRlb091
dHB1dF0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9
IFdURk1vdmUod2Vha1RoaXMpXSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAg
ICAgICAgICAgd2Vha1RoaXMtPm5leHRJbWFnZVRpbWVSZWFjaGVkKCk7CisgICAgICAgIH0pOwor
ICAgIH1dOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpjYW5jZWxOZXh0SW1hZ2VUaW1l
T2JzZXJ2ZXIoKQoreworICAgIGlmICghbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBbbV9wbGF5ZXIgcmVtb3ZlVGltZU9ic2VydmVyOm1fbmV4dElt
YWdlVGltZWJhc2VPYnNlcnZlci5nZXQoKV07CisgICAgbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2Vy
dmVyID0gbmlsOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpuZXh0SW1hZ2VUaW1lUmVh
Y2hlZCgpCit7CisgICAgY2FuY2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisgICAgYXV0byBv
YnNlcnZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycywg
eyB9KTsKKyAgICBvYnNlcnZlcnMuZm9yRWFjaChbXShhdXRvJiBvYnNlcnZlcikgeyBvYnNlcnZl
cigpOyB9KTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6YWRkVmlkZW9GcmFtZUVudHJp
ZXMoVmVjdG9yPFZpZGVvRnJhbWVFbnRyeT4mJiB2aWRlb0ZyYW1lRW50cmllcykKK3sKKyAgICBi
b29sIG5lZWRzSW1hZ2VGb3JDdXJyZW50VGltZUNoYW5nZWQgPSBmYWxzZTsKKyAgICBib29sIGhh
c0N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMgPSBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNl
cnZlcnMuY29tcHV0ZVNpemUoKTsKKyAgICBNZWRpYVRpbWUgY3VycmVudFRpbWUgPSBoYXNDdXJy
ZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzID8gUEFMOjp0b01lZGlhVGltZShbbV9wbGF5ZXIgY3Vy
cmVudFRpbWVdKSA6IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKTsKKworICAgIGZvciAoYXV0byYg
ZW50cnkgOiB2aWRlb0ZyYW1lRW50cmllcykgeworICAgICAgICBpZiAoaGFzQ3VycmVudEltYWdl
Q2hhbmdlZE9ic2VydmVycyAmJiBlbnRyeS5kaXNwbGF5VGltZSA8PSBjdXJyZW50VGltZSkKKyAg
ICAgICAgICAgIG5lZWRzSW1hZ2VGb3JDdXJyZW50VGltZUNoYW5nZWQgPSB0cnVlOworICAgICAg
ICBtX3ZpZGVvRnJhbWVzLmVtcGxhY2UoZW50cnkuZGlzcGxheVRpbWUsIFdURk1vdmUoZW50cnku
cGl4ZWxCdWZmZXIpKTsKKyAgICB9CisKKyAgICBpZiAobmVlZHNJbWFnZUZvckN1cnJlbnRUaW1l
Q2hhbmdlZCkKKyAgICAgICAgbmV4dEltYWdlVGltZVJlYWNoZWQoKTsKKyAgICBlbHNlIGlmICho
YXNDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzKQorICAgICAgICBjb25maWd1cmVOZXh0SW1h
Z2VUaW1lT2JzZXJ2ZXIoKTsKKworICAgIGlmIChtX3BhdXNlZCkKKyAgICAgICAgW21fdmlkZW9P
dXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJs
ZV07Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OnB1cmdlVmlkZW9GcmFtZUVudHJpZXMo
KQoreworICAgIGNhbmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworICAgIG1fdmlkZW9GcmFt
ZXMuY2xlYXIoKTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VJbWFnZXNCZWZv
cmVUaW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkKK3sKKyAgICBtX3ZpZGVvRnJhbWVzLmVyYXNl
KG1fdmlkZW9GcmFtZXMuYmVnaW4oKSwgZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJhbWVzLCB0
aW1lKSk7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OnJhdGVDaGFuZ2VkKGZsb2F0IHJh
dGUpCit7CisgICAgbV9wYXVzZWQgPSAhcmF0ZTsKKworICAgIGlmIChtX3BhdXNlZCkKKyAgICAg
ICAgW21fdmlkZW9PdXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNT
b29uQXNQb3NzaWJsZV07Cit9CisKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNmEwZmJkMDBhYmRi
ZTlkYTA3NDIwZGMxMDFhOWJjZmZiMTE4ODdiLi4wMzQyYmQ1N2Q4ZDljMTM2Nzg3NDRkMGRhYWY2
ZWYxY2IyOWMwZGFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMDggIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSByVkZDKCkgaXNuJ3Qg
Y2FsbGVkIGZvciBpbml0aWFsIHZpZGVvIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAwNgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
Q2FybHNvbi4KKworICAgICAgICAqIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvcmVxdWVzdC12aWRlby1mcmFt
ZS1sb2Fkc3RhcnQuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvcmVxdWVzdC12aWRlby1m
cmFtZS1zZWVrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvcmVxdWVzdC12
aWRlby1mcmFtZS1zZWVrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azEv
bWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1yZXBlYXRpbmctZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKwogMjAyMi0wMS0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIGh0dHBzOi8vYnJpYW5wZWlyaXMuZ2l0aHViLmlvL3NwYXRpYWwtYXVkaW8tdGVz
dC8/cmFtcGVkIHN0b3BzIHBsYXlpbmcgYWZ0ZXIgYSBmZXcgc2Vjb25kcwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjMDJmNjZlYmFiZGZiNTc0ZDlmOWZmMWQ1YjgxZmM4MDg5
MjAzNmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVv
LWZyYW1lLWxvYWRzdGFydC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK1JVTih2aWRl
by5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGNhbGxiYWNrKSkKK1JVTih2aWRlby5zcmMgPSBm
aW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKSkKK1Byb21pc2UgcmVzb2x2ZWQg
T0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3Qt
dmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZp
ZGVvLWZyYW1lLWxvYWRzdGFydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MGIzZjFhOGM2MTFhMjZmY2Qw
YTU0ZWVlMGZiMDJjNTVlNjZmNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRp
YS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+cmVxdWVzdC12aWRlby1m
cmFtZS1sb2Fkc3RhcnQ8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSJ2aWRlby10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0ibWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdD4KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50
ID0+IHsKKyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgIGxldCB2aWRlb0Zy
YW1lUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soY2Fs
bGJhY2spKScpOworICAgICAgICAgICAgdmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhy
ZXNvbHZlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBmaW5kTWVk
aWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKScpOworCisgICAgICAgIGF3YWl0IHNob3Vs
ZFJlc29sdmUodmlkZW9GcmFtZVByb21pc2UpOworCisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9
KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx2aWRlbyBtdXRlZD48L3Zp
ZGVvPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWstZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJhMDE1ZjI2YjgzYWM5OWFmZjMwNTY4YjMyZTY2OTQxNTA2NGM3
NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZy
YW1lLXNlZWstZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorCitSVU4odmlkZW8uc3JjID0g
ZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0IikpCitFVkVOVChjYW5wbGF5dGhy
b3VnaCkKK1JVTih2aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGNhbGxiYWNrKSkKK1JV
Tih2aWRlby5jdXJyZW50VGltZSA9IDAuNSkKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK0VORCBPRiBU
RVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1zZWVrLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTkyNThmMDM2MzhjY2Y4YTZjOGYzNDYwZDcxNDMzNGE0NzkwOTU4YQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKyAgICA8dGl0bGU+cmVxdWVzdC12aWRlby1mcmFtZS1zZWVrPC90aXRsZT4KKyAgICA8c2Ny
aXB0IHNyYz0idmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Im1lZGlh
LWZpbGUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoJ2xvYWQnLCBhc3luYyBldmVudCA9PiB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQo
KTsKKworICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNv
bnRlbnQvdGVzdCIpJyk7CisKKyAgICAgICAgYXdhaXQgd2FpdEZvcih2aWRlbywgJ2NhbnBsYXl0
aHJvdWdoJyk7CisKKyAgICAgICAgbGV0IHZpZGVvRnJhbWVQcm9taXNlID0gbmV3IFByb21pc2Uo
KHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlk
ZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhjYWxsYmFjaykpJyk7CisgICAgICAgICAgICB2
aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKHJlc29sdmUpOworICAgICAgICB9KTsKKwor
ICAgICAgICBydW4oJ3ZpZGVvLmN1cnJlbnRUaW1lID0gMC41Jyk7CisKKyAgICAgICAgYXdhaXQg
c2hvdWxkUmVzb2x2ZSh2aWRlb0ZyYW1lUHJvbWlzZSk7CisKKyAgICAgICAgZW5kVGVzdCgpOwor
ICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHZpZGVvIG11dGVk
PjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9tZWRpYS9yZXF1ZXN0LXZp
ZGVvLWZyYW1lLWNhbGxiYWNrLXJlcGVhdGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2sxL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtY2FsbGJhY2stcmVwZWF0
aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDYyNGFjYjA4MzgwYWIzMjMyZTc5YTMxYjM1
ZDBmMmFiNTkzMjdjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWNhbGxiYWNrLXJlcGVhdGluZy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw1IEBACisKKworUEFTUyBUZXN0IG5ldyBjYWxsYmFja3MgYXJlIG9u
bHkgY2FsbGVkIG9uIHRoZSBuZXh0IGZyYW1lLgorRkFJTCBUZXN0IGNoYWluaW5nIGNhbGxzIHRv
IHZpZGVvLnJWRkMsIGFuZCB2ZXJpZnkgdGhlIHJlcXVpcmVkIHBhcmFtZXRlcnMuIGFzc2VydF9n
cmVhdGVyX3RoYW46IG1lZGlhVGltZSBzaG91bGQgYmUgaW5jcmVhc2luZyBleHBlY3RlZCBhIG51
bWJlciBncmVhdGVyIHRoYW4gMCBidXQgZ290IDAKKwo=
</data>
<flag name="commit-queue"
          id="474819"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448863</attachid>
            <date>2022-01-11 11:21:27 -0800</date>
            <delta_ts>2022-01-11 11:51:32 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235006-20220111112126.patch</filename>
            <type>text/plain</type>
            <size>48352</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZjYjg5ZjUzNzY1NTk1
OWZiOWM2ZjMwZWQwMTUyOTg3ODYwMGVkYS4uZjBlZDU2YjVkM2E4Y2JmNjdhNTA3ZWQ3YWNjYzBk
ZjExZTlkNmQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIyLTAxLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gclZGQygpIGlz
bid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
bG9hZHN0YXJ0Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sCisKKyAgICAgICAgQWRkIGEgbmV3IHV0aWxpdHkgY2xhc3MsIFF1ZXVlZFZpZGVv
T3V0cHV0LCB3aGljaCB3aWxsIHB1bGwgcGl4ZWwgYnVmZmVycyBvdXQgb2YgYW4gQVZQbGF5ZXJJ
dGVtVmlkZW9PdXRwdXQKKyAgICAgICAgcHJlLWVtcHRpdmVseS4gT25jZSB0aG9zZSBwaXhlbCBi
dWZmZXJzIGFyZSBlbnF1ZXVlZCBsb2NhbGx5LCB0aGVpciBhc3NvY2lhdGVkIHRpbWluZyBpbmZv
cm1hdGlvbiBjYW4gYmUgdXNlZCB0bworICAgICAgICBmaXJlIGEgY2FsbGJhY2sgZm9yIHRoYXQg
YnVmZmVyJ3MgZGlzcGxheSB0aW1lLgorCisgICAgICAgIFByZXZpb3VzbHksIHBhaW50cyB3ZXJl
IGJsb2NrZWQgZnJvbSBwdWxsaW5nIG5ldyBwaXhlbCBidWZmZXJzIGZyb20gdGhlIHZpZGVvIG91
dHB1dC4gV2l0aCB0aGUgUXVldWVkVmlkZW9PdXRwdXQKKyAgICAgICAgY2xhc3MsIHRoaXMgaXMg
bm8gbG9uZ2VyIG5lY2Vzc2FyeS4gVGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHdpbGwgbm90aWZ5IGl0
cyBjbGllbnQgd2hlbiB0aGUgaW1hZ2UgZm9yIGN1cnJlbnRUaW1lCisgICAgICAgIGNoYW5nZXMs
IGFuZCBvdGhlciBjbGllbnRzIGNhbiBmcmVlbHkgYXNrIGZvciB0aGUgY3VycmVudFRpbWUncyBp
bWFnZS4KKworICAgICAgICBUbyBjdXJiIHJ1bmF3YXkgbWVtb3J5IGdyb3d0aCwgZnJhbWVzIGFy
ZSBwdXJnZWQgYXMgc29vbiBhcyBhIG5ldyBpbWFnZSBmb3IgdGhlIGN1cnJlbnQgdGltZSBpcyBh
dmFpbGFibGUsIGFuZCB3aGVuCisgICAgICAgIHRoZSB2aWRlbyBvdXRwdXQgc2lnbmFscyB0aGF0
IGl0cyBvd24gcXVldWVzIHdlcmUgcHVyZ2VkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjYW5jZWxWaWRlb0ZyYW1lQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2VydmljZVJlcXVl
c3RWaWRlb0ZyYW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omhhc0F2YWlsYWJsZVZpZGVvRnJh
bWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c3RhcnRWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tOZXdWaWRlb0Zy
YW1lTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZp
ZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1ZmZlckZvckN1
cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29sb3JTcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvdXRwdXRNZWRp
YURhdGFXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Omdsb2JhbFB1bGxEZWxlZ2F0ZVF1
ZXVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OndhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIGluaXRXaXRoUGxheWVyOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIG91dHB1dE1lZGlh
RGF0YVdpbGxDaGFuZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVs
ZWdhdGUgb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOl0pOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVl
ZFZpZGVvT3V0cHV0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXRE
ZWxlZ2F0ZSBpbml0V2l0aFBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRw
dXREZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOl0pOgorICAgICAgICAoLVtXZWJR
dWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDpdKToKKyAg
ICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBvYnNlcnZlVmFsdWVGb3JLZXlQ
YXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoV2ViQ29yZTo6Z2xvYmFs
T3V0cHV0RGVsZWdhdGVRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpRdWV1ZWRW
aWRlb091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6flF1ZXVl
ZFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmRlY2x0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OlF1ZXVlZFZpZGVvT3V0cHV0OjpoYXNJbWFnZUZvclRpbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnRha2VWaWRlb0ZyYW1lRW50cnlGb3JUaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjphZGRDdXJyZW50SW1hZ2VDaGFuZ2Vk
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmNvbmZpZ3Vy
ZU5leHRJbWFnZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0
OjppbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRW
aWRlb091dHB1dDo6YWRkVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UXVl
dWVkVmlkZW9PdXRwdXQ6OnB1cmdlVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnB1cmdlSW1hZ2VzQmVmb3JlVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cmF0ZUNoYW5nZWQpOgorCiAyMDIxLTEyLTE0ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtSZWZhY3Rvcl0gQWRv
cHQgTG9nZ2VySGVscGVyIGluIExvZ2dpbmcgRU1FIGNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmlu
ZGV4IDBlNzUzMTI2NmVhY2FiMGI1N2NiNzIwNGQ4YTVlMjcxNzdkODYxMDEuLjg5NmE2NzFmNGQ1
OGZiMTAyNjdlMzQ5NmQ3ZDg0YjI0NGEwYmYyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDIyLTAxLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gclZGQygpIGlzbid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBs
b2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUw
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBwYWwv
c3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oOgorCiAyMDIyLTAxLTEwICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3RhcnQgdXNpbmcgQysr
MjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWRm91bmRh
dGlvblNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9u
U1BJLmgKaW5kZXggOGI3ZmYxMjM3YTBjOGMyMmY4ODJmYTBiZmVlZThiZDNhZDRjYjcxMi4uNGY5
Y2JlNmQzZDI3ZWM3ZDFhM2RkN2UxZDgyNzcwZTM3MTg4NDE0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmgKQEAgLTQwLDkgKzQw
LDEwIEBACiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZNZWRpYVNlbGVjdGlvbkdyb3VwX1ByaXZh
dGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVk91dHB1dENvbnRleHRfUHJpdmF0ZS5oPgog
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWT3V0cHV0RGV2aWNlLmg+Ci0jaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZQbGF5ZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVy
SXRlbU91dHB1dF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVt
X1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckxheWVyX1ByaXZhdGUu
aD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllcl9Qcml2YXRlLmg+CiAKICNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQpAQCAt
NjYsNiArNjcsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9FTkQKICNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVkNhcHR1cmVTZXNzaW9uLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXIuaD4K
ICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW0uaD4KKyNpbXBvcnQgPEFWRm91bmRh
dGlvbi9BVlBsYXllckl0ZW1PdXRwdXQuaD4KIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0lOVEVS
U1RJVElBTF9FVkVOVFMpCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJbnRlcnN0aXRp
YWxFdmVudENvbnRyb2xsZXIuaD4KQEAgLTkyLDYgKzk0LDExIEBAIHR5cGVkZWYgTlNTdHJpbmcg
KiBBVlZpZGVvUmFuZ2UgTlNfVFlQRURfRU5VTTsKIEBlbmQKICNlbmRpZgogCitAaW50ZXJmYWNl
IEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IChBVlBsYXllckl0ZW1WaWRlb091dHB1dEVhcmxpZXN0
VGltZSkKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQ01UaW1lIGVhcmxpZXN0QXZh
aWxhYmxlUGl4ZWxCdWZmZXJJdGVtVGltZTsKKy0gKHZvaWQpcmVxdWVzdE5vdGlmaWNhdGlvbk9m
TWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJsZTsKK0BlbmQKKwogI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIE5TX0FTU1VN
RV9OT05OVUxMX0JFR0lOCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggOGY3YmNiZGE0NjdhMjFhZjYyYWJiMTk1NjY2ZTU4OWI0NzYy
YmM3YS4uN2M5YjViZTNiYmJlYjFjY2QxNGEzM2M1MDEzNTM2MTQyMmRmM2VkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQ0
OCw2ICs0NDQ4LDggQEAKIAkJQ0QxRjlCNEQyNzBEMDNBOTAwNjE3RUI2IC8qIFNjcm9sbEV4dGVu
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5
QjRDMjcwRDAzQTkwMDYxN0VCNiAvKiBTY3JvbGxFeHRlbnRzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0QxRjlCN0QyNzBFNjY3ODAwNjE3RUI2
IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlCN0MyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNo
b3JFbGVtZW50SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNEMUY5QjgwMjcwRTY3MUEwMDYxN0VCNiAvKiBTVkdFbGVtZW50SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlC
N0YyNzBFNjcxQTAwNjE3RUI2IC8qIFNWR0VsZW1lbnRJbmxpbmVzLmggKi87IH07CisJCUNEMjBF
RDNDMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyMEVEM0EyNzg3OEZGQjAwMzhCRTQ0
IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggKi87IH07CisJCUNEMjBFRDNEMjc4NzhGRkIwMDM4QkU0
NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMjBFRDNCMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091
dHB1dC5tbSAqLzsgfTsKIAkJQ0QyMjVDMEIxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VS
TFNlc3Npb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDIyNUMwOTFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSAqLzsg
fTsKIAkJQ0QyMjVDMEMxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjI1QzBBMUM0
NkZCRjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0QyN0FFNTAyMkE5ODY4NzAwOTQ3RkY5
IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdBRTRFMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0
aW9uU2Vzc2lvblZULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTE1ODYzLDYgKzE1ODY1LDggQEAKIAkJQ0QxRjlCNzAyNzBERkE3RjAwNjE3RUI2
IC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFLZXlNZXNzYWdlRXZl
bnRJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxRjlCN0MyNzBFNjY3
ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
VE1MQW5jaG9yRWxlbWVudElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0QxRjlCN0YyNzBFNjcxQTAwNjE3RUI2IC8qIFNWR0VsZW1lbnRJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR0VsZW1lbnRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEMjBFRDNBMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBRdWV1ZWRWaWRlb091dHB1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRDIwRUQzQjI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBRdWV1ZWRWaWRlb091dHB1dC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0QyMjVDMDkxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Np
b24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNV
UkxTZXNzaW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDIyNUMwQTFDNDZG
QkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNVUkxTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEMjdBRTRFMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lv
blZULmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlUm90YXRpb25TZXNzaW9uVlQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwNjEyLDYgKzMwNjE2LDggQEAKIAkJCQlDREM4QjVBNTE4
MDQ3NEY3MDAxNkU2ODUgLyogTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNE
QzhCNUE0MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tICov
LAogCQkJCTdBMjlGNTcxMThDNjk1MTQwMDREMEY4MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGLmggKi8sCisJCQkJQ0QyMEVEM0EyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVv
T3V0cHV0LmggKi8sCisJCQkJQ0QyMEVEM0IyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVv
T3V0cHV0Lm1tICovLAogCQkJCUNERjk5NEZBMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLmggKi8sCiAJCQkJQ0RGOTk0RkIyNEMxMkE2QTAwMkVBMDYyIC8qIFNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gKi8sCiAJCQkJQ0RDOEI1QTkxODA0N0ZGMTAwMTZF
Njg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggKi8sCkBAIC0zNjU4MCw2ICszNjU4
Niw3IEBACiAJCQkJRUIwRkI3MEQyNzBEMEIyRTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25P
cHRpb25zSW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFGNTk0MUVERjY5RDMw
MDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMjBF
RDNDMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTE1RTMxRjQxRTBDQjBCNTAwNEIzNzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOUJBRUU5MkMyMjM4OEE3RDAwNDE1N0E5IC8qIFF1aXJrcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzc5RTM3MTcxMzczNkE2NjAwQjlFOTE5IC8qIFF1b3RlZFByaW50YWJsZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zODU2Myw2ICszODU3MCw3IEBACiAJCQkJQUExMkRGNDkxNzQzREY4
MzAwNERBRkRGIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEQTI5QTMwMUNCRjc0RDQwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTI5QTE2MUNCREE1NkMwMDkwMUND
RiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlD
RDIwRUQzRDI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQubW0gaW4gU291cmNl
cyAqLywKIAkJCQk0MTkyNDI0OTIxMjdCOTNFMDA2MzRGQ0YgLyogUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzFDMDA0QjI3MEI4NjQ5MDBE
MDI3QzcgLyogUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVD
MkIxQUVDMjIzOTdFQkMwMEI5MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDk0
OGQxZDQxNzQ4ZTlmYWQyOTIyY2FmNzBjZWI2NjhiNDg4ZTk5NDEuLjQ2MjNkMThhYjI3M2FmYWI1
YTcyNWJiNGI4NDYxNTRkYjZmZjdiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcApAQCAtNjAzLDEzICs2MDMsMTYgQEAgdW5zaWduZWQgSFRNTFZpZGVvRWxlbWVu
dDo6cmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhSZWY8VmlkZW9GcmFtZVJlcXVlc3RDYWxsYmEK
IAogdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpjYW5jZWxWaWRlb0ZyYW1lQ2FsbGJhY2sodW5zaWdu
ZWQgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGluZGV4ID0gbV92aWRlb0ZyYW1lUmVxdWVzdHMu
ZmluZE1hdGNoaW5nKFtpZGVudGlmaWVyXShhdXRvJiByZXF1ZXN0KSB7IHJldHVybiByZXF1ZXN0
LT5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0pOwotICAgIGlmIChpbmRleCA9PSBub3RGb3Vu
ZCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX2lzUnVubmluZ1ZpZGVvRnJhbWVSZXF1ZXN0
cykgewotICAgICAgICBtX3ZpZGVvRnJhbWVSZXF1ZXN0c1tpbmRleF0tPmNhbmNlbGxlZCA9IHRy
dWU7CisgICAgLy8gU2VhcmNoIGZpcnN0IHRoZSByZXF1ZXN0cyBjdXJyZW50bHkgYmVpbmcgc2Vy
dmljZWQsIGFuZCBtYXJrIHRoZW0gYXMgY2FuY2VsbGVkIGlmIGZvdW5kLgorICAgIGF1dG8gaW5k
ZXggPSBtX3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVlc3RzLmZpbmRNYXRjaGluZyhbaWRlbnRpZmll
cl0oYXV0byYgcmVxdWVzdCkgeyByZXR1cm4gcmVxdWVzdC0+aWRlbnRpZmllciA9PSBpZGVudGlm
aWVyOyB9KTsKKyAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAgICAgbV9zZXJ2aWNl
ZFZpZGVvRnJhbWVSZXF1ZXN0c1tpbmRleF0tPmNhbmNlbGxlZCA9IHRydWU7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisKKyAgICBpbmRleCA9IG1fdmlkZW9GcmFtZVJlcXVlc3RzLmZpbmRNYXRj
aGluZyhbaWRlbnRpZmllcl0oYXV0byYgcmVxdWVzdCkgeyByZXR1cm4gcmVxdWVzdC0+aWRlbnRp
ZmllciA9PSBpZGVudGlmaWVyOyB9KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAg
ICAgIHJldHVybjsKICAgICBtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5yZW1vdmUoaW5kZXgpOwogCiAg
ICAgaWYgKG1fdmlkZW9GcmFtZVJlcXVlc3RzLmlzRW1wdHkoKSAmJiBwbGF5ZXIoKSkKQEAgLTYz
OSwyMCArNjQyLDE0IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2VydmljZVJlcXVlc3RWaWRl
b0ZyYW1lQ2FsbGJhY2tzKFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kCiAKICAgICBSZWYgcHJvdGVj
dGVkVGhpcyB7ICp0aGlzIH07CiAKLSAgICAvLyBXZSBzdG9yZSB0aGUgc2l6ZSBiZWZvcmUgY2Fs
bGluZyBjYWxsYmFja3MgYXMgd2UgZG8gbm90IHdhbnQgdG8gY2FsbCBuZXdseSBhZGRlZCBjYWxs
YmFja3MuCi0gICAgYXV0byBjYWxsYmFja0NvdW50ID0gbV92aWRlb0ZyYW1lUmVxdWVzdHMuc2l6
ZSgpOwotCi0gICAgbV9pc1J1bm5pbmdWaWRlb0ZyYW1lUmVxdWVzdHMgPSB0cnVlOwotICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjYWxsYmFja0NvdW50OyArK2luZGV4KSB7Ci0g
ICAgICAgIGF1dG8mIHJlcXVlc3QgPSBtX3ZpZGVvRnJhbWVSZXF1ZXN0c1tpbmRleF07CisgICAg
bV92aWRlb0ZyYW1lUmVxdWVzdHMuc3dhcChtX3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVlc3RzKTsK
KyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVlc3RzKSB7
CiAgICAgICAgIGlmICghcmVxdWVzdC0+Y2FuY2VsbGVkKSB7CiAgICAgICAgICAgICByZXF1ZXN0
LT5jYWxsYmFjay0+aGFuZGxlRXZlbnQoc3RkOjpyb3VuZChub3cubWlsbGlzZWNvbmRzKCkpLCAq
dmlkZW9GcmFtZU1ldGFkYXRhKTsKICAgICAgICAgICAgIHJlcXVlc3QtPmNhbmNlbGxlZCA9IHRy
dWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9pc1J1bm5pbmdWaWRlb0ZyYW1lUmVxdWVzdHMg
PSBmYWxzZTsKLQotICAgIG1fdmlkZW9GcmFtZVJlcXVlc3RzLnJlbW92ZUFsbE1hdGNoaW5nKFtd
KGF1dG8mIGNhbGxiYWNrKSB7IHJldHVybiBjYWxsYmFjay0+Y2FuY2VsbGVkOyB9KTsKKyAgICBt
X3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVlc3RzLmNsZWFyKCk7CiAKICAgICBpZiAobV92aWRlb0Zy
YW1lUmVxdWVzdHMuaXNFbXB0eSgpICYmIHBsYXllcigpKQogICAgICAgICBwbGF5ZXIoKS0+c3Rv
cFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaAppbmRleCA4NTZhZGVhNzhmYjczOThkOGZiNDVmNDQ4YTM1OTFiZGE1NWY5NzJj
Li5mOGQzYjQwMzJkNjAyNDRiNTQwMTc4MzNlYWZhMDA2OTA0ZDFiNDEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtMTcyLDggKzE3Miw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIGJvb2wgY2FuY2VsbGVkIHsgZmFsc2UgfTsKICAgICB9OwogICAgIFZlY3RvcjxVbmlx
dWVSZWY8VmlkZW9GcmFtZVJlcXVlc3Q+PiBtX3ZpZGVvRnJhbWVSZXF1ZXN0czsKKyAgICBWZWN0
b3I8VW5pcXVlUmVmPFZpZGVvRnJhbWVSZXF1ZXN0Pj4gbV9zZXJ2aWNlZFZpZGVvRnJhbWVSZXF1
ZXN0czsKICAgICB1bnNpZ25lZCBtX25leHRWaWRlb0ZyYW1lUmVxdWVzdEluZGV4IHsgMCB9Owot
ICAgIGJvb2wgbV9pc1J1bm5pbmdWaWRlb0ZyYW1lUmVxdWVzdHMgeyBmYWxzZSB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDFlNjU3NTcy
NDY1NDk3MzQzY2RlMmEyNGQ4ZjBkYzZiNGUwMjY3ZTEuLmVlYjg4M2Q3N2M2NjIwMzJhMzkwOTI2
MDAzZDk4M2EyM2FmMDBmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ01UaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4K
IAogT0JKQ19DTEFTUyBBVkFzc2V0SW1hZ2VHZW5lcmF0b3I7CiBPQkpDX0NMQVNTIEFWQXNzZXRU
cmFjazsKQEAgLTY3LDYgKzY4LDcgQEAgY2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGOwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDOwogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVjsKK2NsYXNzIFF1ZXVl
ZFZpZGVvT3V0cHV0OwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVv
TGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKQEAgLTM0
Nyw3ICszNDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRWaWRlb0ZyYW1lTWV0YWRhdGFH
YXRoZXJpbmcoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJp
bmcoKSBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVNZXRhZGF0YT4gdmlkZW9G
cmFtZU1ldGFkYXRhKCkgZmluYWwgeyByZXR1cm4gc3RkOjpleGNoYW5nZShtX3ZpZGVvRnJhbWVN
ZXRhZGF0YSwgeyB9KTsgfQotICAgIHZvaWQgY2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoQ01U
aW1lKTsKKyAgICB2b2lkIGNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCk7CiAKICAgICBSZXRh
aW5QdHI8QVZVUkxBc3NldD4gbV9hdkFzc2V0OwogICAgIFJldGFpblB0cjxBVlBsYXllcj4gbV9h
dlBsYXllcjsKQEAgLTM2Nyw3ICszNjksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBSZXRh
aW5QdHI8QVZBc3NldEltYWdlR2VuZXJhdG9yPiBtX2ltYWdlR2VuZXJhdG9yOwotICAgIFJldGFp
blB0cjxBVlBsYXllckl0ZW1WaWRlb091dHB1dD4gbV92aWRlb091dHB1dDsKKyAgICBSZWZQdHI8
UXVldWVkVmlkZW9PdXRwdXQ+IG1fdmlkZW9PdXRwdXQ7CiAgICAgUmV0YWluUHRyPFdlYkNvcmVB
VkZQdWxsRGVsZWdhdGU+IG1fdmlkZW9PdXRwdXREZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gbV9sYXN0UGl4ZWxCdWZmZXI7CiAgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBtX2xhc3RJbWFnZTsKQEAgLTQ2NCw2ICs0NjYsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0
aW9uYWw8VmlkZW9GcmFtZU1ldGFkYXRhPiBtX3ZpZGVvRnJhbWVNZXRhZGF0YTsKICAgICBtdXRh
YmxlIHN0ZDo6b3B0aW9uYWw8TlNUaW1lSW50ZXJ2YWw+IG1fY2FjaGVkU2Vla2FibGVUaW1lUmFu
Z2VzTGFzdE1vZGlmaWVkVGltZTsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8TlNUaW1lSW50
ZXJ2YWw+IG1fY2FjaGVkTGl2ZVVwZGF0ZUludGVydmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxP
YnNlcnZlcjx2b2lkKCk+PiBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcjsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGMwNjdjY2U4MDY4NmY3YTFiYzU0MTRiYWY3N2Y3
NTI1MmJmMzQyYzcuLmZmNDU2MmI0YjYxYmViYjFlMDdlNDZlNDg2ZTNiNjY3ZjdhMWMwZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNTgsNiArNTgsNyBAQAogI2ltcG9ydCAiUGxhdGZv
cm1TY3JlZW4uaCIKICNpbXBvcnQgIlBsYXRmb3JtVGV4dFRyYWNrLmgiCiAjaW1wb3J0ICJQbGF0
Zm9ybVRpbWVSYW5nZXMuaCIKKyNpbXBvcnQgIlF1ZXVlZFZpZGVvT3V0cHV0LmgiCiAjaW1wb3J0
ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNjcmlwdERpc2FsbG93ZWRT
Y29wZS5oIgogI2ltcG9ydCAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTIwNSwxNiArMjA2LDYgQEAg
LSAoaWQpaW5pdFdpdGhQbGF5ZXI6KFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQz4mJilwbGF5ZXI7CiAtIChCT09MKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3Vy
Y2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVk
UmVzb3VyY2U6KEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopbG9hZGluZ1JlcXVlc3Q7
CiBAZW5kCiAKLUBpbnRlcmZhY2UgV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSA6IE5TT2JqZWN0PEFW
UGxheWVySXRlbU91dHB1dFB1bGxEZWxlZ2F0ZT4gewotICAgIEJpbmFyeVNlbWFwaG9yZSBtX3Nl
bWFwaG9yZTsKLX0KLS0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpcGxheWVyOwotLSAodm9pZClvdXRwdXRNZWRpYURhdGFX
aWxsQ2hhbmdlOihBVlBsYXllckl0ZW1PdXRwdXQgKilzZW5kZXI7Ci0tICh2b2lkKW91dHB1dFNl
cXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0OwotCi1AcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJpbmFyeVNlbWFwaG9yZSYgc2VtYXBob3JlOwotQGVu
ZAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlv
blRvU3RyaW5nKEFWUGxheWVyVGltZUNvbnRyb2xTdGF0dXMgZW51bWVyYXRpb25WYWx1ZSkKIHsK
QEAgLTI2MSwxNiArMjUyLDYgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsTG9hZGVy
RGVsZWdhdGVRdWV1ZSgpCiAgICAgcmV0dXJuIGdsb2JhbFF1ZXVlOwogfQogCi1zdGF0aWMgZGlz
cGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpCi17Ci0gICAgc3RhdGljIGRp
c3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUXVldWU7Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBv
bmNlVG9rZW47Ci0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBnbG9i
YWxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSBx
dWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGdsb2Jh
bFF1ZXVlOwotfQotCiBzdGF0aWMgdm9pZCByZWdpc3RlckZvcm1hdFJlYWRlcklmTmVjZXNzYXJ5
KCkKIHsKICNpZiBFTkFCTEUoV0VCTV9GT1JNQVRfUkVBREVSKQpAQCAtNDY5LDcgKzQ1MCw4IEBA
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6On5NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDKCkKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Jlc291cmNlTG9hZGVy
TWFwKQogICAgICAgICBwYWlyLnZhbHVlLT5pbnZhbGlkYXRlKCk7CiAKLSAgICBbbV92aWRlb091
dHB1dCBzZXREZWxlZ2F0ZTpuaWwgcXVldWU6MF07CisgICAgaWYgKG1fdmlkZW9PdXRwdXQpCisg
ICAgICAgIG1fdmlkZW9PdXRwdXQtPmludmFsaWRhdGUoKTsKIAogICAgIGlmIChtX3ZpZGVvTGF5
ZXIpCiAgICAgICAgIGRlc3Ryb3lWaWRlb0xheWVyKCk7CkBAIC03MDIsNyArNjg0LDcgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpoYXNBdmFpbGFibGVWaWRlb0Zy
YW1lKCkgY29uc3QKICAgICBpZiAoY3VycmVudFJlbmRlcmluZ01vZGUoKSA9PSBNZWRpYVJlbmRl
cmluZ01vZGU6Ok1lZGlhUmVuZGVyaW5nVG9MYXllcikKICAgICAgICAgcmV0dXJuIG1fY2FjaGVk
SXNSZWFkeUZvckRpc3BsYXk7CiAKLSAgICBpZiAobV92aWRlb091dHB1dCAmJiAobV9sYXN0UGl4
ZWxCdWZmZXIgfHwgW21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpb
bV9hdlBsYXllckl0ZW0gY3VycmVudFRpbWVdXSkpCisgICAgaWYgKG1fdmlkZW9PdXRwdXQgJiYg
KG1fbGFzdFBpeGVsQnVmZmVyIHx8IG1fdmlkZW9PdXRwdXQtPmhhc0ltYWdlRm9yVGltZShjdXJy
ZW50TWVkaWFUaW1lKCkpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gbV92
aWRlb0ZyYW1lSGFzRHJhd247CkBAIC0xNDQ0LDM0ICsxNDI2LDMwIEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1QYXVzZWQoKSBjb25zdAogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN0YXJ0VmlkZW9GcmFtZU1ldGFk
YXRhR2F0aGVyaW5nKCkKIHsKLSAgICBBU1NFUlQoIW1fdmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVy
aW5nT2JzZXJ2ZXIgfHwgbV9hdlBsYXllcik7Ci0gICAgbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVN
ZXRhZGF0YSA9IHRydWU7CisgICAgLy8gcmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjaygpIGNhcmVz
IGFib3V0IHRoZSAvbmV4dC8gYXZhaWxhYmxlIGZyYW1lLiBQdWxsIHRoZSBjdXJyZW50IGZyYW1l
IGZyb20KKyAgICAvLyB0aGUgUXVldWVkVmlkZW9PdXRwdXQgc28gcGFpbnRzIG9mIHRoZSBjdXJy
ZW50IGZyYW1lIHN1Y2NlZWQ7CisgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAKLSAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBhIENBRGlzcGxheUxpbmsgdG8gZ2V0IHVwZGF0ZXMgb24g
cmVuZGVyaW5nLCBmb3Igbm93IHdlIGVtdWxhdGUgd2l0aCBhZGRQZXJpb2RpY1RpbWVPYnNlcnZl
ckZvckludGVydmFsLgotICAgIG1fdmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nT2JzZXJ2ZXIg
PSBbbV9hdlBsYXllciBhZGRQZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVydmFsOlBBTDo6Q01U
aW1lTWFrZSgxLCA2MCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1c2luZ0Jsb2Nr
Olt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XShDTVRpbWUgY3VycmVudFRpbWUpIHsKLSAg
ICAgICAgZW5zdXJlT25NYWluVGhyZWFkKFt3ZWFrVGhpcywgY3VycmVudFRpbWVdIHsKLSAgICAg
ICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y2hlY2tOZXdW
aWRlb0ZyYW1lTWV0YWRhdGEoY3VycmVudFRpbWUpOwotICAgICAgICB9KTsKLSAgICB9XTsKKyAg
ICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciA9IFdURjo6bWFrZVVuaXF1ZTxPYnNlcnZl
cjx2b2lkKCk+PihbdGhpc10geworICAgICAgICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZl
ciA9IG51bGxwdHI7CisgICAgICAgIGNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCk7CisgICAg
fSk7CisKKyAgICBpZiAobV92aWRlb091dHB1dCkKKyAgICAgICAgbV92aWRlb091dHB1dC0+YWRk
Q3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKCptX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZl
cik7CisKKyAgICBtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhID0gdHJ1ZTsKIH0KIAot
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjaGVja05ld1ZpZGVvRnJh
bWVNZXRhZGF0YShDTVRpbWUgY3VycmVudFRpbWUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCkKIHsKLSAgICBpZiAo
IXVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpKQorICAgIGlmICghbV9pc0dhdGhlcmluZ1ZpZGVvRnJh
bWVNZXRhZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmlkZW9GcmFtZU1ldGFkYXRhIG1l
dGFkYXRhOwotICAgIG1ldGFkYXRhLndpZHRoID0gbV9jYWNoZWRQcmVzZW50YXRpb25TaXplLndp
ZHRoKCk7Ci0gICAgbWV0YWRhdGEuaGVpZ2h0ID0gbV9jYWNoZWRQcmVzZW50YXRpb25TaXplLmhl
aWdodCgpOwotICAgIG1ldGFkYXRhLnByZXNlbnRlZEZyYW1lcyA9ICsrbV9zYW1wbGVDb3VudDsK
LSAgICBtZXRhZGF0YS5tZWRpYVRpbWUgPSBQQUw6OkNNVGltZUdldFNlY29uZHMoY3VycmVudFRp
bWUpOwotICAgIC8vIEZJWE1FOiBwcmVzZW50YXRpb25UaW1lIGFuZCBleHBlY3RlZERpc3BsYXlU
aW1lIG1pZ2h0IG5vdCBhbHdheXMgaGF2ZSB0aGUgc2FtZSB2YWx1ZSwgd2Ugc2hvdWxkIHRyeSBn
ZXR0aW5nIG1vcmUgcHJlY2lzZSB2YWx1ZXMuCi0gICAgbWV0YWRhdGEucHJlc2VudGF0aW9uVGlt
ZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpOwot
ICAgIG1ldGFkYXRhLmV4cGVjdGVkRGlzcGxheVRpbWUgPSBtZXRhZGF0YS5wcmVzZW50YXRpb25U
aW1lOworICAgIGlmICghdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkgJiYgIW1fdmlkZW9GcmFtZU1l
dGFkYXRhKQorICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvRnJhbWVNZXRhZGF0YSA9IG1l
dGFkYXRhOwotICAgIHBsYXllcigpLT5vbk5ld1ZpZGVvRnJhbWVNZXRhZGF0YShXVEZNb3ZlKG1l
dGFkYXRhKSwgbV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIHBsYXllcigpLT5vbk5ld1Zp
ZGVvRnJhbWVNZXRhZGF0YShXVEZNb3ZlKCptX3ZpZGVvRnJhbWVNZXRhZGF0YSksIG1fbGFzdFBp
eGVsQnVmZmVyLmdldCgpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzdG9wVmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nKCkKQEAgLTI1MTgsMTcgKzI0
OTYsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVW
aWRlb091dHB1dCgpCiAgICAgaWYgKCFtX2F2UGxheWVySXRlbSB8fCBtX3ZpZGVvT3V0cHV0KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvT3V0cHV0ID0gYWRvcHROUyhbUEFMOjphbGxv
Y0FWUGxheWVySXRlbVZpZGVvT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0aFBpeGVsQnVmZmVyQXR0
cmlidXRlczpuaWxdKTsKKyAgICBtX3ZpZGVvT3V0cHV0ID0gUXVldWVkVmlkZW9PdXRwdXQ6OmNy
ZWF0ZShtX2F2UGxheWVySXRlbS5nZXQoKSwgbV9hdlBsYXllci5nZXQoKSk7CiAgICAgQVNTRVJU
KG1fdmlkZW9PdXRwdXQpOwogICAgIGlmICghbV92aWRlb091dHB1dCkgewogICAgICAgICBFUlJP
Ul9MT0coTE9HSURFTlRJRklFUiwgIi1bQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQgaW5pdFdpdGhQ
aXhlbEJ1ZmZlckF0dHJpYnV0ZXM6XSBmYWlsZWQhIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0KLSAgICBtX3ZpZGVvT3V0cHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViQ29yZUFWRlB1bGxE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQbGF5ZXI6KnRoaXNdKTsKLSAgICBbbV92aWRlb091dHB1
dCBzZXREZWxlZ2F0ZTptX3ZpZGVvT3V0cHV0RGVsZWdhdGUuZ2V0KCkgcXVldWU6Z2xvYmFsUHVs
bERlbGVnYXRlUXVldWUoKV07Ci0KLSAgICBbbV9hdlBsYXllckl0ZW0gYWRkT3V0cHV0Om1fdmlk
ZW9PdXRwdXQuZ2V0KCldOworICAgIGlmIChtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcikK
KyAgICAgICAgbV92aWRlb091dHB1dC0+YWRkQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKCpt
X2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcik7CiAKICAgICBzZXROZWVkc1JlbmRlcmluZ01v
ZGVDaGFuZ2VkKCk7CiB9CkBAIC0yNTM4LDE5ICsyNTEzLDE5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZpZGVvT3V0cHV0KCkKICAgICBpZiAoIW1f
dmlkZW9PdXRwdXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2F2UGxheWVySXRlbSkK
LSAgICAgICAgW21fYXZQbGF5ZXJJdGVtIHJlbW92ZU91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgp
XTsKLQogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgbV92aWRlb091dHB1dCA9
IDA7CisgICAgbV92aWRlb091dHB1dC0+aW52YWxpZGF0ZSgpOworICAgIG1fdmlkZW9PdXRwdXQg
PSBudWxscHRyOworCisgICAgbV92aWRlb0ZyYW1lTWV0YWRhdGEgPSB7IH07CiAKICAgICBzZXRO
ZWVkc1JlbmRlcmluZ01vZGVDaGFuZ2VkKCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkKIHsKLSAgICBpZiAoIW1f
YXZQbGF5ZXJJdGVtIHx8IHJlYWR5U3RhdGUoKSA8IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpI
YXZlQ3VycmVudERhdGEpCisgICAgaWYgKCFtX2F2UGxheWVySXRlbSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgbV9oYXZlQmVlbkFza2VkVG9QYWludCA9IHRydWU7CkBAIC0yNTU5LDE3
ICsyNTM0LDM5IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBk
YXRlTGFzdFBpeGVsQnVmZmVyKCkKICAgICAgICAgY3JlYXRlVmlkZW9PdXRwdXQoKTsKICAgICBB
U1NFUlQobV92aWRlb091dHB1dCk7CiAKLSAgICBDTVRpbWUgY3VycmVudFRpbWUgPSBbbV9hdlBs
YXllckl0ZW0gY3VycmVudFRpbWVdOworICAgIGF1dG8gY3VycmVudFRpbWUgPSBjdXJyZW50TWVk
aWFUaW1lKCk7CiAKLSAgICBpZiAoIVttX3ZpZGVvT3V0cHV0IGhhc05ld1BpeGVsQnVmZmVyRm9y
SXRlbVRpbWU6Y3VycmVudFRpbWVdKQorICAgIGlmICghbV92aWRlb091dHB1dC0+aGFzSW1hZ2VG
b3JUaW1lKGN1cnJlbnRUaW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9sYXN0
UGl4ZWxCdWZmZXIgPSBhZG9wdENGKFttX3ZpZGVvT3V0cHV0IGNvcHlQaXhlbEJ1ZmZlckZvckl0
ZW1UaW1lOmN1cnJlbnRUaW1lIGl0ZW1UaW1lRm9yRGlzcGxheTpuaWxdKTsKKyAgICBhdXRvIGVu
dHJ5ID0gbV92aWRlb091dHB1dC0+dGFrZVZpZGVvRnJhbWVFbnRyeUZvclRpbWUoY3VycmVudFRp
bWUpOworICAgIG1fbGFzdFBpeGVsQnVmZmVyID0gV1RGTW92ZShlbnRyeS5waXhlbEJ1ZmZlcik7
CisKIAogICAgIGlmIChtX2ltYWdlUm90YXRpb25TZXNzaW9uKQogICAgICAgICBtX2xhc3RQaXhl
bEJ1ZmZlciA9IG1faW1hZ2VSb3RhdGlvblNlc3Npb24tPnJvdGF0ZShtX2xhc3RQaXhlbEJ1ZmZl
ci5nZXQoKSk7CiAKICAgICBtX2xhc3RJbWFnZSA9IG51bGxwdHI7CisKKyAgICBpZiAoIW1faXNH
YXRoZXJpbmdWaWRlb0ZyYW1lTWV0YWRhdGEpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Ly8gQ3JlYXRpbmcgYW4gQVZQbGF5ZXJMYXllciB3aWxsIHJlY29uZmlndXJlIHRoZSBkZWNvZGVy
IHBpcGVsaW5lLCBhbmQgcG90ZW50aWFsbHkgY2F1c2UgYSBuZXcgZnJhbWUgdG8gYmUKKyAgICAv
LyBpc3N1ZWQgZm9yIHRoZSBjdXJyZW50IHRpbWUuIEluIHRoaXMgc2NlbmFyaW8sIHdhaXQgZm9y
IHRoZSBuZXh0IGZyYW1lIHJhdGhlciB0aGFuIHRoaXMgb25lLgorICAgIGlmIChtX2xhc3RWaWRl
b0ZyYW1lTWV0YWRhdGFEaXNwbGF5VGltZS5pc1ZhbGlkKCkgJiYgZW50cnkuZGlzcGxheVRpbWUg
PT0gbV9sYXN0VmlkZW9GcmFtZU1ldGFkYXRhRGlzcGxheVRpbWUpCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIG1fbGFzdFZpZGVvRnJhbWVNZXRhZGF0YURpc3BsYXlUaW1lID0gZW50cnkuZGlz
cGxheVRpbWU7CisKKyAgICBhdXRvIHByZXNlbnRhdGlvblRpbWUgPSBNb25vdG9uaWNUaW1lOjpu
b3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKSAtIChjdXJyZW50VGltZSAtIGVudHJ5
LmRpc3BsYXlUaW1lKS50b0RvdWJsZSgpOworICAgIG1fdmlkZW9GcmFtZU1ldGFkYXRhID0gewor
ICAgICAgICAud2lkdGggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQ1ZQaXhlbEJ1ZmZlckdldFdp
ZHRoKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKSksCisgICAgICAgIC5oZWlnaHQgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChtX2xhc3RQaXhlbEJ1ZmZlci5n
ZXQoKSkpLAorICAgICAgICAucHJlc2VudGVkRnJhbWVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KCsrbV9zYW1wbGVDb3VudCksCisgICAgICAgIC5tZWRpYVRpbWUgPSBlbnRyeS5kaXNwbGF5VGlt
ZS50b0RvdWJsZSgpLAorICAgICAgICAucHJlc2VudGF0aW9uVGltZSA9IHByZXNlbnRhdGlvblRp
bWUsCisgICAgICAgIC5leHBlY3RlZERpc3BsYXlUaW1lID0gcHJlc2VudGF0aW9uVGltZSwKKyAg
ICB9OworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI1ODQsNyArMjU4MSw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dmlkZW9PdXRwdXRIYXNBdmFpbGFi
bGVGcmFtZSgpCiAgICAgaWYgKCFtX3ZpZGVvT3V0cHV0KQogICAgICAgICBjcmVhdGVWaWRlb091
dHB1dCgpOwogCi0gICAgcmV0dXJuIFttX3ZpZGVvT3V0cHV0IGhhc05ld1BpeGVsQnVmZmVyRm9y
SXRlbVRpbWU6W21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXV07CisgICAgcmV0dXJuIG1fdmlk
ZW9PdXRwdXQtPmhhc0ltYWdlRm9yVGltZShQQUw6OnRvTWVkaWFUaW1lKFttX2F2UGxheWVySXRl
bSBjdXJyZW50VGltZV0pKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQpAQCAtMjYwMiw3ICsyNTk5
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0
SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQogICAgIC8vIENhbGxzIHRvIGNvcHlQaXhlbEJ1ZmZlckZv
ckl0ZW1UaW1lOml0ZW1UaW1lRm9yRGlzcGxheTogbWF5IHJldHVybiBuaWwgaWYgdGhlIHBpeGVs
IGJ1ZmZlcgogICAgIC8vIGZvciB0aGUgcmVxdWVzdGVkIHRpbWUgaGFzIGFscmVhZHkgYmVlbiBy
ZXRyaWV2ZWQuIEluIHRoaXMgY2FzZSwgdGhlIGxhc3QgdmFsaWQgaW1hZ2UgKGlmIGFueSkKICAg
ICAvLyBzaG91bGQgYmUgZGlzcGxheWVkLgotICAgIGlmICgobV9pc0dhdGhlcmluZ1ZpZGVvRnJh
bWVNZXRhZGF0YSB8fCAhdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkpICYmIChtX2xhc3RJbWFnZSB8
fCAhbV9sYXN0UGl4ZWxCdWZmZXIpKQorICAgIGlmICghdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkg
JiYgKG1fbGFzdEltYWdlIHx8ICFtX2xhc3RQaXhlbEJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmICghbV9waXhlbEJ1ZmZlckNvbmZvcm1lcikgewpAQCAtMjYzNyw4ICsyNjM0LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRl
b091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBpeGVsQnVmZmVyRm9yQ3VycmVu
dFRpbWUoKQogewotICAgIGlmICghbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSkKLSAg
ICAgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CisgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVy
KCk7CiAKICAgICByZXR1cm4gbV9sYXN0UGl4ZWxCdWZmZXI7CiB9CkBAIC0yNjY5LDcgKzI2NjUs
MTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3YWl0Rm9yVmlk
ZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCkKICAgICBzdGQ6Om9wdGlvbmFsPFJ1bkxvb3A6
OlRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+PiB0aW1lb3V0VGltZXI7
CiAKICAgICBpZiAoIW1fcnVuTG9vcE5lc3RpbmdMZXZlbCkgewotICAgICAgICBbbV92aWRlb091
dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VXaXRoQWR2YW5jZUludGVy
dmFsOjBdOworICAgICAgICBPYnNlcnZlcjx2b2lkKCk+IHdhaXRGb3JWaWRlb091dHB1dE1lZGlh
RGF0YVdpbGxDaGFuZ2VPYnNlcnZlcihbdGhpc10geworICAgICAgICAgICAgaWYgKG1fcnVuTG9v
cE5lc3RpbmdMZXZlbCkKKyAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwor
ICAgICAgICB9KTsKKyAgICAgICAgbV92aWRlb091dHB1dC0+YWRkQ3VycmVudEltYWdlQ2hhbmdl
ZE9ic2VydmVyKHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2VPYnNlcnZlcik7
CiAKICAgICAgICAgdGltZW91dFRpbWVyLmVtcGxhY2UoUnVuTG9vcDo6bWFpbigpLCBbJl0gewog
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLnN0b3AoKTsKQEAgLTI2OTYsMTUgKzI2OTYsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndhaXRGb3JWaWRlb091
dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6Om91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQogewotICAgIGlmIChtX3J1
bkxvb3BOZXN0aW5nTGV2ZWwpIHsKLSAgICAgICAgaWYgKFJ1bkxvb3A6OmlzTWFpbigpKQotICAg
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLnN0b3AoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewotICAgICAgICAgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5zdG9wKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgIH0KKyAg
ICBjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YSgpOwogfQogCiAjaWYgRU5BQkxFKExFR0FDWV9F
TkNSWVBURURfTUVESUEpCkBAIC00MDg5LDM3ICs0MDgxLDQgQEAgLSAodm9pZClyZXNvdXJjZUxv
YWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgZGlkQ2FuY2VsTG9h
ZGluZ1IKIAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSB7
Ci0gICAgV2Vha1B0cjxXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
PiBfcGxheWVyOwotfQotCi1Ac3ludGhlc2l6ZSBzZW1hcGhvcmUgPSBtX3NlbWFwaG9yZTsKLQot
LSAoaWQpaW5pdFdpdGhQbGF5ZXI6KFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQz4mJilwbGF5ZXIKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICgh
c2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfcGxheWVyID0gV1RGTW92ZShwbGF5ZXIp
OwotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKW91dHB1dE1lZGlhRGF0YVdpbGxDaGFu
Z2U6KEFWUGxheWVySXRlbVZpZGVvT3V0cHV0ICopb3V0cHV0Ci17Ci0gICAgVU5VU0VEX1BBUkFN
KG91dHB1dCk7Ci0gICAgbV9zZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgY2FsbE9uTWFpblRocmVh
ZChbc2VsZiwgc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfV0gewotICAgICAgICBpZiAo
X3BsYXllcikKLSAgICAgICAgICAgIF9wbGF5ZXItPm91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2Uo
KTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KEFWUGxh
eWVySXRlbVZpZGVvT3V0cHV0ICopb3V0cHV0Ci17Ci0gICAgVU5VU0VEX1BBUkFNKG91dHB1dCk7
Ci0gICAgLy8gTm8tb3AuCi19Ci0KLUBlbmQKLQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091
dHB1dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvUXVldWVkVmlkZW9PdXRwdXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YmFmMGVhMTFlNWM0ZmJlMzI0ZDk1
MjVhZGYxYmRiM2M2MzMwYTg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQuaApAQCAt
MCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoVklE
RU8pCisKKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8
d3RmL01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9XZWFrSGFzaFNldC5oPgorCitPQkpDX0NMQVNTIEFWUGxheWVyOworT0JKQ19DTEFTUyBBVlBs
YXllckl0ZW07CitPQkpDX0NMQVNTIEFWUGxheWVySXRlbVZpZGVvT3V0cHV0OworT0JKQ19DTEFT
UyBXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlOworCit0eXBlZGVmIHN0cnVjdCBfX0NWQnVm
ZmVyICpDVlBpeGVsQnVmZmVyUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFF1
ZXVlZFZpZGVvT3V0cHV0CisgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxRdWV1ZWRWaWRlb091dHB1
dD4KKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxRdWV1ZWRWaWRlb091dHB1dD4geworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UXVldWVk
VmlkZW9PdXRwdXQ+IGNyZWF0ZShBVlBsYXllckl0ZW0qLCBBVlBsYXllciopOworICAgIH5RdWV1
ZWRWaWRlb091dHB1dCgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisgICAgYm9vbCBoYXNJ
bWFnZUZvclRpbWUoY29uc3QgTWVkaWFUaW1lJikgY29uc3Q7CisKKyAgICBzdHJ1Y3QgVmlkZW9G
cmFtZUVudHJ5IHsKKyAgICAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVm
ZmVyOworICAgICAgICBNZWRpYVRpbWUgZGlzcGxheVRpbWU7CisgICAgfTsKKyAgICBWaWRlb0Zy
YW1lRW50cnkgdGFrZVZpZGVvRnJhbWVFbnRyeUZvclRpbWUoY29uc3QgTWVkaWFUaW1lJik7CisK
KyAgICB2b2lkIGFkZFZpZGVvRnJhbWVFbnRyaWVzKFZlY3RvcjxWaWRlb0ZyYW1lRW50cnk+JiYp
OworICAgIHZvaWQgcHVyZ2VWaWRlb0ZyYW1lRW50cmllcygpOworCisgICAgdXNpbmcgQ3VycmVu
dEltYWdlQ2hhbmdlZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZCgpPjsKKyAgICB2b2lkIGFkZEN1
cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcihjb25zdCBDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2
ZXImKTsKKworICAgIHVzaW5nIEltYWdlTWFwID0gc3RkOjptYXA8TWVkaWFUaW1lLCBSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4+OworCisgICAgdm9pZCByYXRlQ2hhbmdlZChmbG9hdCk7CisK
K3ByaXZhdGU6CisgICAgUXVldWVkVmlkZW9PdXRwdXQoQVZQbGF5ZXJJdGVtKiwgQVZQbGF5ZXIq
KTsKKworICAgIHZvaWQgcHVyZ2VJbWFnZXNCZWZvcmVUaW1lKGNvbnN0IE1lZGlhVGltZSYpOwor
ICAgIHZvaWQgY29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisgICAgdm9pZCBjYW5j
ZWxOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAgICB2b2lkIG5leHRJbWFnZVRpbWVSZWFjaGVk
KCk7CisKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtPiBtX3BsYXllckl0ZW07CisgICAgUmV0
YWluUHRyPEFWUGxheWVyPiBtX3BsYXllcjsKKyAgICBSZXRhaW5QdHI8V2ViUXVldWVkVmlkZW9P
dXRwdXREZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtVmlk
ZW9PdXRwdXQ+IG1fdmlkZW9PdXRwdXQ7CisgICAgUmV0YWluUHRyPGlkPiBtX3ZpZGVvVGltZWJh
c2VPYnNlcnZlcjsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fbmV4dEltYWdlVGltZWJhc2VPYnNlcnZl
cjsKKworICAgIEltYWdlTWFwIG1fdmlkZW9GcmFtZXM7CisgICAgV2Vha0hhc2hTZXQ8Q3VycmVu
dEltYWdlQ2hhbmdlZE9ic2VydmVyPiBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnM7CisK
KyAgICBib29sIG1fcGF1c2VkIHsgdHJ1ZSB9OworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1
ZXVlZFZpZGVvT3V0cHV0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJjMDgzODE0
YzA4YzdkZWVkNjFjOTA3OWMyMmJlM2Y1MDc4YTc3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVv
T3V0cHV0Lm1tCkBAIC0wLDAgKzEsMzA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlF1ZXVlZFZpZGVvT3V0cHV0LmgiCisKKyNpZiBFTkFCTEUoVklERU8p
CisKKyNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtT3V0cHV0Lmg+CisjaW5jbHVk
ZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDxw
YWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlTnVtYmVycy5oPgorCisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRM
aW5rLmg+CisjaW5jbHVkZSA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisKK0Bp
bnRlcmZhY2UgV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSA6IE5TT2JqZWN0PEFWUGxheWVy
SXRlbU91dHB1dFB1bGxEZWxlZ2F0ZT4geworICAgIFdlYWtQdHI8V2ViQ29yZTo6UXVldWVkVmlk
ZW9PdXRwdXQ+IF9wYXJlbnQ7Cit9CistIChpZClpbml0V2l0aFBhcmVudDooV2ViQ29yZTo6UXVl
dWVkVmlkZW9PdXRwdXQqKXBhcmVudDsKKy0gKHZvaWQpb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5n
ZTooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0OworLSAodm9pZClvdXRwdXRTZXF1ZW5jZVdh
c0ZsdXNoZWQ6KEFWUGxheWVySXRlbU91dHB1dCAqKW91dHB1dDsKKy0gKHZvaWQpb2JzZXJ2ZVZh
bHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rp
b25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dDsKK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIFdlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUKKy0gKGlkKWluaXRXaXRoUGFyZW50
OihXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dCopcGFyZW50Cit7CisgICAgc2VsZiA9IFtzdXBl
ciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfcGFy
ZW50ID0gcGFyZW50OworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKW91dHB1dE1lZGlh
RGF0YVdpbGxDaGFuZ2U6KEFWUGxheWVySXRlbU91dHB1dCAqKW91dHB1dAoreworICAgIEFTU0VS
VChbb3V0cHV0IGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRBVlBsYXllckl0ZW1WaWRlb091dHB1dENs
YXNzKCldKTsKKyAgICBhdXRvKiB2aWRlb091dHB1dCA9IChBVlBsYXllckl0ZW1WaWRlb091dHB1
dCopb3V0cHV0OworCisgICAgVmVjdG9yPFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpWaWRl
b0ZyYW1lRW50cnk+IHZpZGVvRnJhbWVFbnRyaWVzOworICAgIGRvIHsKKyAgICAgICAgQ01UaW1l
IGVhcmxpZXN0VGltZSA9IFt2aWRlb091dHB1dCBlYXJsaWVzdEF2YWlsYWJsZVBpeGVsQnVmZmVy
SXRlbVRpbWVdOworICAgICAgICBpZiAoQ01USU1FX0lTX0lOVkFMSUQoZWFybGllc3RUaW1lKSkK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBhZG9wdENG
KFt2aWRlb091dHB1dCBjb3B5UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTplYXJsaWVzdFRpbWUgaXRl
bVRpbWVGb3JEaXNwbGF5Om5pbF0pOworICAgICAgICBpZiAoIXBpeGVsQnVmZmVyKQorICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgdmlkZW9GcmFtZUVudHJpZXMuYXBwZW5kKHsgV1RGTW92
ZShwaXhlbEJ1ZmZlciksIFBBTDo6dG9NZWRpYVRpbWUoZWFybGllc3RUaW1lKSB9KTsKKyAgICB9
IHdoaWxlICh0cnVlKTsKKworICAgIGlmICh2aWRlb0ZyYW1lRW50cmllcy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGNhbGxPbk1haW5SdW5Mb29wKFt2aWRlb0ZyYW1lRW50cmll
cyA9IFdURk1vdmUodmlkZW9GcmFtZUVudHJpZXMpLCBwYXJlbnQgPSBfcGFyZW50XSAoKSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKHBhcmVudCkKKyAgICAgICAgICAgIHBhcmVudC0+YWRkVmlkZW9G
cmFtZUVudHJpZXMoV1RGTW92ZSh2aWRlb0ZyYW1lRW50cmllcykpOworICAgIH0pOworfQorCist
ICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0
cHV0Cit7CisgICAgQVNTRVJUKFtvdXRwdXQgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxheWVy
SXRlbVZpZGVvT3V0cHV0Q2xhc3MoKV0pOworICAgIGF1dG8qIHZpZGVvT3V0cHV0ID0gKEFWUGxh
eWVySXRlbVZpZGVvT3V0cHV0KilvdXRwdXQ7CisgICAgW3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3Rp
ZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZUFzU29vbkFzUG9zc2libGVdOworCisgICAgY2FsbE9u
TWFpblJ1bkxvb3AoW3BhcmVudCA9IF9wYXJlbnRdIHsKKyAgICAgICAgaWYgKHBhcmVudCkKKyAg
ICAgICAgICAgIHBhcmVudC0+cHVyZ2VWaWRlb0ZyYW1lRW50cmllcygpOworICAgIH0pOworfQor
CistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2Jq
ZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRleHQK
K3sKKyAgICBpZiAoIVtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInJhdGUiXSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byByYXRlVmFsdWUgPSAoTlNOdW1iZXIqKVtjaGFuZ2UgdmFsdWVG
b3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07CisgICAgQVNTRVJUKFtyYXRlVmFsdWUgaXNL
aW5kT2ZDbGFzczpOU051bWJlci5jbGFzc10pOworICAgIGF1dG8gcmF0ZSA9IHJhdGVWYWx1ZS5m
bG9hdFZhbHVlOworCisgICAgZW5zdXJlT25NYWluUnVuTG9vcChbcGFyZW50ID0gX3BhcmVudCwg
cmF0ZV0geworICAgICAgICBpZiAocGFyZW50KQorICAgICAgICAgICAgcGFyZW50LT5yYXRlQ2hh
bmdlZChyYXRlKTsKKyAgICB9KTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCkKK3sKKyAg
ICBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxRdWV1ZTsKKyAgICBzdGF0aWMgZGlzcGF0
Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Cisg
ICAgICAgIGdsb2JhbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJRdWV1ZWRWaWRl
b091dHB1dERlbGVnYXRlIHF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKKyAgICB9KTsK
KyAgICByZXR1cm4gZ2xvYmFsUXVldWU7Cit9CisKK1JlZjxRdWV1ZWRWaWRlb091dHB1dD4gUXVl
dWVkVmlkZW9PdXRwdXQ6OmNyZWF0ZShBVlBsYXllckl0ZW0qIGl0ZW0sIEFWUGxheWVyKiBwbGF5
ZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUXVldWVkVmlkZW9PdXRwdXQoaXRlbSwg
cGxheWVyKSk7Cit9CisKK1F1ZXVlZFZpZGVvT3V0cHV0OjpRdWV1ZWRWaWRlb091dHB1dChBVlBs
YXllckl0ZW0qIGl0ZW0sIEFWUGxheWVyKiBwbGF5ZXIpCisgICAgOiBtX3BsYXllckl0ZW0oaXRl
bSkKKyAgICAsIG1fcGxheWVyKHBsYXllcikKKyAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhbW1dl
YlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKSkK
K3sKKyAgICBtX3ZpZGVvT3V0cHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVySXRlbVZp
ZGVvT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0aFBpeGVsQnVmZmVyQXR0cmlidXRlczpuaWxdKTsK
KyAgICBbbV92aWRlb091dHB1dCBzZXREZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpIHF1ZXVlOmds
b2JhbE91dHB1dERlbGVnYXRlUXVldWUoKV07CisgICAgW21fdmlkZW9PdXRwdXQgcmVxdWVzdE5v
dGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJsZV07CisKKyAgICBbbV9w
bGF5ZXJJdGVtIGFkZE91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKKworICAgIFttX3BsYXll
ciBhZGRPYnNlcnZlcjptX2RlbGVnYXRlLmdldCgpIGZvcktleVBhdGg6QCJyYXRlIiBvcHRpb25z
OihOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IHwgTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlv
bkluaXRpYWwpIGNvbnRleHQ6bmlsXTsKKworICAgIG1fdmlkZW9UaW1lYmFzZU9ic2VydmVyID0g
W21fcGxheWVyIGFkZFBlcmlvZGljVGltZU9ic2VydmVyRm9ySW50ZXJ2YWw6UEFMOjpDTVRpbWVN
YWtlKDEsIDYwKSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCkgdXNpbmdCbG9jazpb
d2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvdGVjdGVkRGVsZWdhdGUgPSBtX2RlbGVn
YXRlLCBwcm90ZWN0ZWRPdXRwdXQgPSBtX3ZpZGVvT3V0cHV0XShDTVRpbWUgY3VycmVudFRpbWUp
IG11dGFibGUgeworCisgICAgICAgIC8vIFBlcmlvZGljYWxseSBjaGVjayBmb3IgbmV3IGF2YWls
YWJsZSBwaXhlbCBidWZmZXJzLgorICAgICAgICBbcHJvdGVjdGVkRGVsZWdhdGUgb3V0cHV0TWVk
aWFEYXRhV2lsbENoYW5nZTpwcm90ZWN0ZWRPdXRwdXQuZ2V0KCldOworCisgICAgICAgIC8vIEFu
ZCBwdXJnZSB0aGUgYmFjayBidWZmZXIgb2YgcGFzdCBmcmFtZXMuCisgICAgICAgIGNhbGxPbk1h
aW5SdW5Mb29wKFt3ZWFrVGhpcyA9IHdlYWtUaGlzLCB0aW1lID0gUEFMOjp0b01lZGlhVGltZShj
dXJyZW50VGltZSldIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAg
ICB3ZWFrVGhpcy0+cHVyZ2VJbWFnZXNCZWZvcmVUaW1lKHRpbWUpOworICAgICAgICB9KTsKKyAg
ICB9XTsKK30KKworUXVldWVkVmlkZW9PdXRwdXQ6On5RdWV1ZWRWaWRlb091dHB1dCgpCit7Cisg
ICAgaW52YWxpZGF0ZSgpOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjppbnZhbGlkYXRl
KCkKK3sKKyAgICBpZiAobV92aWRlb1RpbWViYXNlT2JzZXJ2ZXIpIHsKKyAgICAgICAgW21fcGxh
eWVyIHJlbW92ZVRpbWVPYnNlcnZlcjptX3ZpZGVvVGltZWJhc2VPYnNlcnZlci5nZXQoKV07Cisg
ICAgICAgIG1fdmlkZW9UaW1lYmFzZU9ic2VydmVyID0gbmlsOworICAgIH0KKworICAgIGNhbmNl
bE5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworCisgICAgaWYgKG1fdmlkZW9PdXRwdXQpIHsKKyAg
ICAgICAgW21fcGxheWVySXRlbSByZW1vdmVPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQoKV07Cisg
ICAgICAgIFttX3ZpZGVvT3V0cHV0IHNldERlbGVnYXRlOm5pbCBxdWV1ZTpuaWxdOworICAgICAg
ICBtX3ZpZGVvT3V0cHV0ID0gbmlsOworICAgIH0KKworICAgIGlmIChtX3BsYXllcikgeworICAg
ICAgICBbbV9wbGF5ZXIgcmVtb3ZlT2JzZXJ2ZXI6bV9kZWxlZ2F0ZS5nZXQoKSBmb3JLZXlQYXRo
OkAicmF0ZSJdOworICAgICAgICBtX3BsYXllciA9IG5pbDsKKyAgICB9CisKKyAgICBtX3BsYXll
ckl0ZW0gPSBuaWw7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBNYXliZUNvbnN0TWFwLCB0eXBl
bmFtZSBNYXliZUNvbnN0SXRlciA9IGRlY2x0eXBlKE1heWJlQ29uc3RNYXAoKS5iZWdpbigpKT4K
K01heWJlQ29uc3RJdGVyIGZpbmRJbWFnZUZvclRpbWUoTWF5YmVDb25zdE1hcCYgbWFwLCBjb25z
dCBNZWRpYVRpbWUmIHRpbWUpCit7CisgICAgLy8gT3V0cHV0cyBvZiBBVlBsYXllckl0ZW1WaWRl
b091dHB1dCBoYXZlIGEgZGlzcGxheSB0aW1lLCBidXQgbm90IGEgZHVyYXRpb247IHRoZXkgYXJl
IHZhbGlkCisgICAgLy8gdW50aWwgdGhlIGFycml2YWwgb2YgYSBsYXRlciBmcmFtZS4gRmluZCB0
aGlzIGZyYW1lIGVmZmljaWVudGx5IHVzaW5nIHNldDo6dXBwZXJfYm91bmQgdG8gZmluZAorICAg
IC8vIHRoZSBuZXh0IGRpc3BsYXlhYmxlIGZyYW1lLCBhbmQgd2FsayBiYWNrd2FyZHMgYnkgb25l
IHRvIGZpbmQgYSBmcmFtZSBmb3IgdGhlIHRhcmdldCB0aW1lLgorICAgIGlmIChtYXAuZW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIG1hcC5lbmQoKTsKKworICAgIGF1dG8gaXRlciA9IG1hcC51cHBl
cl9ib3VuZCh0aW1lKTsKKyAgICBpZiAoaXRlciA9PSBtYXAuYmVnaW4oKSkKKyAgICAgICAgcmV0
dXJuIG1hcC5lbmQoKTsKKworICAgIHJldHVybiAtLWl0ZXI7Cit9CisKK2Jvb2wgUXVldWVkVmlk
ZW9PdXRwdXQ6Omhhc0ltYWdlRm9yVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywgdGltZSkgIT0gbV92
aWRlb0ZyYW1lcy5lbmQoKTsKK30KKworYXV0byBRdWV1ZWRWaWRlb091dHB1dDo6dGFrZVZpZGVv
RnJhbWVFbnRyeUZvclRpbWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lKSAtPiBWaWRlb0ZyYW1lRW50
cnkKK3sKKyAgICBhdXRvIGl0ZXIgPSBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFtZXMsIHRp
bWUpOworICAgIGlmIChpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkpCisgICAgICAgIHJldHVy
biB7IG51bGxwdHIsIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSB9OworCisgICAgVmlkZW9GcmFt
ZUVudHJ5IGVudHJ5ID0geyBXVEZNb3ZlKGl0ZXItPnNlY29uZCksIGl0ZXItPmZpcnN0IH07CisK
KyAgICAvLyBQdXJnZSBhbGwgZnJhbWVzIGJlZm9yZSBgdGltZWAsIHNvIHRoYXQgcmVwZWF0ZWQg
Y2FsbHMgd2l0aCB0aGUgc2FtZSB0aW1lIGRvbid0IHJldHVybgorICAgIC8vIHN1Y2Nlc3NpdmVs
eSBlYXJsaWVyIGltYWdlcy4KKyAgICBtX3ZpZGVvRnJhbWVzLmVyYXNlKG1fdmlkZW9GcmFtZXMu
YmVnaW4oKSwgKytpdGVyKTsKKworICAgIHJldHVybiBlbnRyeTsKK30KKwordm9pZCBRdWV1ZWRW
aWRlb091dHB1dDo6YWRkQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKGNvbnN0IEN1cnJlbnRJ
bWFnZUNoYW5nZWRPYnNlcnZlciYgb2JzZXJ2ZXIpCit7CisgICAgbV9jdXJyZW50SW1hZ2VDaGFu
Z2VkT2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7CisgICAgY29uZmlndXJlTmV4dEltYWdlVGltZU9i
c2VydmVyKCk7CisKKyAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRp
YURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1
dDo6Y29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKCkKK3sKKyAgICBpZiAobV9uZXh0SW1h
Z2VUaW1lYmFzZU9ic2VydmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGN1cnJlbnRU
aW1lID0gUEFMOjp0b01lZGlhVGltZShbbV9wbGF5ZXIgY3VycmVudFRpbWVdKTsKKyAgICBhdXRv
IGl0ZXIgPSBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFtZXMsIGN1cnJlbnRUaW1lKTsKKyAg
ICBpZiAoaXRlciA9PSBtX3ZpZGVvRnJhbWVzLmVuZCgpIHx8ICsraXRlciA9PSBtX3ZpZGVvRnJh
bWVzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG5leHRJbWFnZVRpbWUgPSBp
dGVyLT5maXJzdDsKKworICAgIG1fbmV4dEltYWdlVGltZWJhc2VPYnNlcnZlciA9IFttX3BsYXll
ciBhZGRCb3VuZGFyeVRpbWVPYnNlcnZlckZvclRpbWVzOkBbW05TVmFsdWUgdmFsdWVXaXRoQ01U
aW1lOlBBTDo6dG9DTVRpbWUoY3VycmVudFRpbWUpXV0gcXVldWU6Z2xvYmFsT3V0cHV0RGVsZWdh
dGVRdWV1ZSgpIHVzaW5nQmxvY2s6W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb3Rl
Y3RlZERlbGVnYXRlID0gbV9kZWxlZ2F0ZSwgcHJvdGVjdGVkT3V0cHV0ID0gbV92aWRlb091dHB1
dF0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9IFdU
Rk1vdmUod2Vha1RoaXMpXSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAg
ICAgICAgd2Vha1RoaXMtPm5leHRJbWFnZVRpbWVSZWFjaGVkKCk7CisgICAgICAgIH0pOworICAg
IH1dOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpjYW5jZWxOZXh0SW1hZ2VUaW1lT2Jz
ZXJ2ZXIoKQoreworICAgIGlmICghbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBbbV9wbGF5ZXIgcmVtb3ZlVGltZU9ic2VydmVyOm1fbmV4dEltYWdl
VGltZWJhc2VPYnNlcnZlci5nZXQoKV07CisgICAgbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVy
ID0gbmlsOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpuZXh0SW1hZ2VUaW1lUmVhY2hl
ZCgpCit7CisgICAgY2FuY2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisgICAgYXV0byBvYnNl
cnZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycywgeyB9
KTsKKyAgICBvYnNlcnZlcnMuZm9yRWFjaChbXShhdXRvJiBvYnNlcnZlcikgeyBvYnNlcnZlcigp
OyB9KTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6YWRkVmlkZW9GcmFtZUVudHJpZXMo
VmVjdG9yPFZpZGVvRnJhbWVFbnRyeT4mJiB2aWRlb0ZyYW1lRW50cmllcykKK3sKKyAgICBib29s
IG5lZWRzSW1hZ2VGb3JDdXJyZW50VGltZUNoYW5nZWQgPSBmYWxzZTsKKyAgICBib29sIGhhc0N1
cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMgPSBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZl
cnMuY29tcHV0ZVNpemUoKTsKKyAgICBNZWRpYVRpbWUgY3VycmVudFRpbWUgPSBoYXNDdXJyZW50
SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzID8gUEFMOjp0b01lZGlhVGltZShbbV9wbGF5ZXIgY3VycmVu
dFRpbWVdKSA6IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKTsKKworICAgIGZvciAoYXV0byYgZW50
cnkgOiB2aWRlb0ZyYW1lRW50cmllcykgeworICAgICAgICBpZiAoaGFzQ3VycmVudEltYWdlQ2hh
bmdlZE9ic2VydmVycyAmJiBlbnRyeS5kaXNwbGF5VGltZSA8PSBjdXJyZW50VGltZSkKKyAgICAg
ICAgICAgIG5lZWRzSW1hZ2VGb3JDdXJyZW50VGltZUNoYW5nZWQgPSB0cnVlOworICAgICAgICBt
X3ZpZGVvRnJhbWVzLmVtcGxhY2UoZW50cnkuZGlzcGxheVRpbWUsIFdURk1vdmUoZW50cnkucGl4
ZWxCdWZmZXIpKTsKKyAgICB9CisKKyAgICBpZiAobmVlZHNJbWFnZUZvckN1cnJlbnRUaW1lQ2hh
bmdlZCkKKyAgICAgICAgbmV4dEltYWdlVGltZVJlYWNoZWQoKTsKKyAgICBlbHNlIGlmIChoYXND
dXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzKQorICAgICAgICBjb25maWd1cmVOZXh0SW1hZ2VU
aW1lT2JzZXJ2ZXIoKTsKKworICAgIGlmIChtX3BhdXNlZCkKKyAgICAgICAgW21fdmlkZW9PdXRw
dXQgcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJsZV07
Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OnB1cmdlVmlkZW9GcmFtZUVudHJpZXMoKQor
eworICAgIGNhbmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworICAgIG1fdmlkZW9GcmFtZXMu
Y2xlYXIoKTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VJbWFnZXNCZWZvcmVU
aW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkKK3sKKyAgICBtX3ZpZGVvRnJhbWVzLmVyYXNlKG1f
dmlkZW9GcmFtZXMuYmVnaW4oKSwgZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJhbWVzLCB0aW1l
KSk7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OnJhdGVDaGFuZ2VkKGZsb2F0IHJhdGUp
Cit7CisgICAgbV9wYXVzZWQgPSAhcmF0ZTsKKworICAgIGlmIChtX3BhdXNlZCkKKyAgICAgICAg
W21fdmlkZW9PdXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29u
QXNQb3NzaWJsZV07Cit9CisKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNmEwZmJkMDBhYmRiZTlk
YTA3NDIwZGMxMDFhOWJjZmZiMTE4ODdiLi5jMjdkYjNiZDljMTcyMjMxYjcxYWE5YzAxMDAyNzg0
ZDZkNTU1ZWM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDEtMDggIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSByVkZDKCkgaXNuJ3QgY2Fs
bGVkIGZvciBpbml0aWFsIHZpZGVvIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNTAwNgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2Fy
bHNvbi4KKworICAgICAgICAqIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1s
b2Fkc3RhcnQuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvcmVxdWVzdC12aWRlby1mcmFt
ZS1zZWVrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvcmVxdWVzdC12aWRl
by1mcmFtZS1zZWVrLmh0bWw6IEFkZGVkLgorCiAyMDIyLTAxLTEwICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9icmlhbnBlaXJpcy5naXRodWIuaW8v
c3BhdGlhbC1hdWRpby10ZXN0Lz9yYW1wZWQgc3RvcHMgcGxheWluZyBhZnRlciBhIGZldyBzZWNv
bmRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxv
YWRzdGFydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZy
YW1lLWxvYWRzdGFydC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMwMmY2NmViYWJkZmI1NzRk
OWY5ZmYxZDViODFmYzgwODkyMDM2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21l
ZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDYgQEAKKworUlVOKHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soY2FsbGJhY2spKQor
UlVOKHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpKQor
UHJvbWlzZSByZXNvbHZlZCBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQuaHRtbCBiL0xheW91dFRlc3Rz
L21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUw
YjNmMWE4YzYxMWEyNmZjZDBhNTRlZWUwZmIwMmM1NWU2NmY2MQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWwKQEAg
LTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRs
ZT5yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydDwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9
InZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJtZWRpYS1maWxlLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCds
b2FkJywgYXN5bmMgZXZlbnQgPT4geworICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAg
ICAgICAgbGV0IHZpZGVvRnJhbWVQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVj
dCkgPT4geworICAgICAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8ucmVxdWVzdFZpZGVv
RnJhbWVDYWxsYmFjayhjYWxsYmFjaykpJyk7CisgICAgICAgICAgICB2aWRlby5yZXF1ZXN0Vmlk
ZW9GcmFtZUNhbGxiYWNrKHJlc29sdmUpOworICAgICAgICB9KTsKKworICAgICAgICBydW4oJ3Zp
ZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpJyk7CisKKyAg
ICAgICAgYXdhaXQgc2hvdWxkUmVzb2x2ZSh2aWRlb0ZyYW1lUHJvbWlzZSk7CisKKyAgICAgICAg
ZW5kVGVzdCgpOworICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAg
PHZpZGVvIG11dGVkPjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1m
cmFtZS1zZWVrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8t
ZnJhbWUtc2Vlay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmEwMTVmMjZiODNhYzk5YWZmMzA1
NjhiMzJlNjY5NDE1MDY0Yzc1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlh
L3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACisK
K1JVTih2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKSkK
K0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorUlVOKHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJh
Y2soY2FsbGJhY2spKQorUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMC41KQorUHJvbWlzZSByZXNv
bHZlZCBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvcmVx
dWVzdC12aWRlby1mcmFtZS1zZWVrLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZp
ZGVvLWZyYW1lLXNlZWsuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTI1OGYwMzYzOGNjZjhhNmM4ZjM0NjBk
NzE0MzM0YTQ3OTA5NThhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVx
dWVzdC12aWRlby1mcmFtZS1zZWVrLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWs8
L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSJ2aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0ibWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50ID0+IHsKKyAgICAgICAg
ZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgIHJ1bigndmlkZW8uc3JjID0gZmluZE1lZGlh
RmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0IiknKTsKKworICAgICAgICBhd2FpdCB3YWl0Rm9y
KHZpZGVvLCAnY2FucGxheXRocm91Z2gnKTsKKworICAgICAgICBsZXQgdmlkZW9GcmFtZVByb21p
c2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBjb25z
b2xlV3JpdGUoJ1JVTih2aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGNhbGxiYWNrKSkn
KTsKKyAgICAgICAgICAgIHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2socmVzb2x2ZSk7
CisgICAgICAgIH0pOworCisgICAgICAgIHJ1bigndmlkZW8uY3VycmVudFRpbWUgPSAwLjUnKTsK
KworICAgICAgICBhd2FpdCBzaG91bGRSZXNvbHZlKHZpZGVvRnJhbWVQcm9taXNlKTsKKworICAg
ICAgICBlbmRUZXN0KCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgICA8dmlkZW8gbXV0ZWQ+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="commit-queue"
          id="474827"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448865</attachid>
            <date>2022-01-11 11:35:30 -0800</date>
            <delta_ts>2022-01-11 13:31:10 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235006-20220111113529.patch</filename>
            <type>text/plain</type>
            <size>48545</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZjYjg5ZjUzNzY1NTk1
OWZiOWM2ZjMwZWQwMTUyOTg3ODYwMGVkYS4uZjBlZDU2YjVkM2E4Y2JmNjdhNTA3ZWQ3YWNjYzBk
ZjExZTlkNmQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIyLTAxLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gclZGQygpIGlz
bid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
bG9hZHN0YXJ0Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sCisKKyAgICAgICAgQWRkIGEgbmV3IHV0aWxpdHkgY2xhc3MsIFF1ZXVlZFZpZGVv
T3V0cHV0LCB3aGljaCB3aWxsIHB1bGwgcGl4ZWwgYnVmZmVycyBvdXQgb2YgYW4gQVZQbGF5ZXJJ
dGVtVmlkZW9PdXRwdXQKKyAgICAgICAgcHJlLWVtcHRpdmVseS4gT25jZSB0aG9zZSBwaXhlbCBi
dWZmZXJzIGFyZSBlbnF1ZXVlZCBsb2NhbGx5LCB0aGVpciBhc3NvY2lhdGVkIHRpbWluZyBpbmZv
cm1hdGlvbiBjYW4gYmUgdXNlZCB0bworICAgICAgICBmaXJlIGEgY2FsbGJhY2sgZm9yIHRoYXQg
YnVmZmVyJ3MgZGlzcGxheSB0aW1lLgorCisgICAgICAgIFByZXZpb3VzbHksIHBhaW50cyB3ZXJl
IGJsb2NrZWQgZnJvbSBwdWxsaW5nIG5ldyBwaXhlbCBidWZmZXJzIGZyb20gdGhlIHZpZGVvIG91
dHB1dC4gV2l0aCB0aGUgUXVldWVkVmlkZW9PdXRwdXQKKyAgICAgICAgY2xhc3MsIHRoaXMgaXMg
bm8gbG9uZ2VyIG5lY2Vzc2FyeS4gVGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHdpbGwgbm90aWZ5IGl0
cyBjbGllbnQgd2hlbiB0aGUgaW1hZ2UgZm9yIGN1cnJlbnRUaW1lCisgICAgICAgIGNoYW5nZXMs
IGFuZCBvdGhlciBjbGllbnRzIGNhbiBmcmVlbHkgYXNrIGZvciB0aGUgY3VycmVudFRpbWUncyBp
bWFnZS4KKworICAgICAgICBUbyBjdXJiIHJ1bmF3YXkgbWVtb3J5IGdyb3d0aCwgZnJhbWVzIGFy
ZSBwdXJnZWQgYXMgc29vbiBhcyBhIG5ldyBpbWFnZSBmb3IgdGhlIGN1cnJlbnQgdGltZSBpcyBh
dmFpbGFibGUsIGFuZCB3aGVuCisgICAgICAgIHRoZSB2aWRlbyBvdXRwdXQgc2lnbmFscyB0aGF0
IGl0cyBvd24gcXVldWVzIHdlcmUgcHVyZ2VkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjYW5jZWxWaWRlb0ZyYW1lQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2VydmljZVJlcXVl
c3RWaWRlb0ZyYW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omhhc0F2YWlsYWJsZVZpZGVvRnJh
bWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c3RhcnRWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tOZXdWaWRlb0Zy
YW1lTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZp
ZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1ZmZlckZvckN1
cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29sb3JTcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvdXRwdXRNZWRp
YURhdGFXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Omdsb2JhbFB1bGxEZWxlZ2F0ZVF1
ZXVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OndhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIGluaXRXaXRoUGxheWVyOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIG91dHB1dE1lZGlh
RGF0YVdpbGxDaGFuZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVs
ZWdhdGUgb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOl0pOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVl
ZFZpZGVvT3V0cHV0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXRE
ZWxlZ2F0ZSBpbml0V2l0aFBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRw
dXREZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOl0pOgorICAgICAgICAoLVtXZWJR
dWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDpdKToKKyAg
ICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBvYnNlcnZlVmFsdWVGb3JLZXlQ
YXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoV2ViQ29yZTo6Z2xvYmFs
T3V0cHV0RGVsZWdhdGVRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpRdWV1ZWRW
aWRlb091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6flF1ZXVl
ZFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmRlY2x0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OlF1ZXVlZFZpZGVvT3V0cHV0OjpoYXNJbWFnZUZvclRpbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnRha2VWaWRlb0ZyYW1lRW50cnlGb3JUaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjphZGRDdXJyZW50SW1hZ2VDaGFuZ2Vk
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmNvbmZpZ3Vy
ZU5leHRJbWFnZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0
OjppbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRW
aWRlb091dHB1dDo6YWRkVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UXVl
dWVkVmlkZW9PdXRwdXQ6OnB1cmdlVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnB1cmdlSW1hZ2VzQmVmb3JlVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cmF0ZUNoYW5nZWQpOgorCiAyMDIxLTEyLTE0ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtSZWZhY3Rvcl0gQWRv
cHQgTG9nZ2VySGVscGVyIGluIExvZ2dpbmcgRU1FIGNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmlu
ZGV4IDBlNzUzMTI2NmVhY2FiMGI1N2NiNzIwNGQ4YTVlMjcxNzdkODYxMDEuLjg5NmE2NzFmNGQ1
OGZiMTAyNjdlMzQ5NmQ3ZDg0YjI0NGEwYmYyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDIyLTAxLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gclZGQygpIGlzbid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBs
b2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUw
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBwYWwv
c3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oOgorCiAyMDIyLTAxLTEwICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3RhcnQgdXNpbmcgQysr
MjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWRm91bmRh
dGlvblNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9u
U1BJLmgKaW5kZXggOGI3ZmYxMjM3YTBjOGMyMmY4ODJmYTBiZmVlZThiZDNhZDRjYjcxMi4uNGY5
Y2JlNmQzZDI3ZWM3ZDFhM2RkN2UxZDgyNzcwZTM3MTg4NDE0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmgKQEAgLTQwLDkgKzQw
LDEwIEBACiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZNZWRpYVNlbGVjdGlvbkdyb3VwX1ByaXZh
dGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVk91dHB1dENvbnRleHRfUHJpdmF0ZS5oPgog
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWT3V0cHV0RGV2aWNlLmg+Ci0jaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZQbGF5ZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVy
SXRlbU91dHB1dF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVt
X1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckxheWVyX1ByaXZhdGUu
aD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllcl9Qcml2YXRlLmg+CiAKICNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQpAQCAt
NjYsNiArNjcsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9FTkQKICNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVkNhcHR1cmVTZXNzaW9uLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXIuaD4K
ICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW0uaD4KKyNpbXBvcnQgPEFWRm91bmRh
dGlvbi9BVlBsYXllckl0ZW1PdXRwdXQuaD4KIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0lOVEVS
U1RJVElBTF9FVkVOVFMpCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJbnRlcnN0aXRp
YWxFdmVudENvbnRyb2xsZXIuaD4KQEAgLTkyLDYgKzk0LDExIEBAIHR5cGVkZWYgTlNTdHJpbmcg
KiBBVlZpZGVvUmFuZ2UgTlNfVFlQRURfRU5VTTsKIEBlbmQKICNlbmRpZgogCitAaW50ZXJmYWNl
IEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IChBVlBsYXllckl0ZW1WaWRlb091dHB1dEVhcmxpZXN0
VGltZSkKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQ01UaW1lIGVhcmxpZXN0QXZh
aWxhYmxlUGl4ZWxCdWZmZXJJdGVtVGltZTsKKy0gKHZvaWQpcmVxdWVzdE5vdGlmaWNhdGlvbk9m
TWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJsZTsKK0BlbmQKKwogI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIE5TX0FTU1VN
RV9OT05OVUxMX0JFR0lOCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggOGY3YmNiZGE0NjdhMjFhZjYyYWJiMTk1NjY2ZTU4OWI0NzYy
YmM3YS4uN2M5YjViZTNiYmJlYjFjY2QxNGEzM2M1MDEzNTM2MTQyMmRmM2VkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQ0
OCw2ICs0NDQ4LDggQEAKIAkJQ0QxRjlCNEQyNzBEMDNBOTAwNjE3RUI2IC8qIFNjcm9sbEV4dGVu
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5
QjRDMjcwRDAzQTkwMDYxN0VCNiAvKiBTY3JvbGxFeHRlbnRzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0QxRjlCN0QyNzBFNjY3ODAwNjE3RUI2
IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlCN0MyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNo
b3JFbGVtZW50SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNEMUY5QjgwMjcwRTY3MUEwMDYxN0VCNiAvKiBTVkdFbGVtZW50SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlC
N0YyNzBFNjcxQTAwNjE3RUI2IC8qIFNWR0VsZW1lbnRJbmxpbmVzLmggKi87IH07CisJCUNEMjBF
RDNDMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyMEVEM0EyNzg3OEZGQjAwMzhCRTQ0
IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggKi87IH07CisJCUNEMjBFRDNEMjc4NzhGRkIwMDM4QkU0
NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMjBFRDNCMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091
dHB1dC5tbSAqLzsgfTsKIAkJQ0QyMjVDMEIxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VS
TFNlc3Npb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDIyNUMwOTFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSAqLzsg
fTsKIAkJQ0QyMjVDMEMxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjI1QzBBMUM0
NkZCRjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0QyN0FFNTAyMkE5ODY4NzAwOTQ3RkY5
IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdBRTRFMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0
aW9uU2Vzc2lvblZULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTE1ODYzLDYgKzE1ODY1LDggQEAKIAkJQ0QxRjlCNzAyNzBERkE3RjAwNjE3RUI2
IC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFLZXlNZXNzYWdlRXZl
bnRJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxRjlCN0MyNzBFNjY3
ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
VE1MQW5jaG9yRWxlbWVudElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0QxRjlCN0YyNzBFNjcxQTAwNjE3RUI2IC8qIFNWR0VsZW1lbnRJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR0VsZW1lbnRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEMjBFRDNBMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBRdWV1ZWRWaWRlb091dHB1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRDIwRUQzQjI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBRdWV1ZWRWaWRlb091dHB1dC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0QyMjVDMDkxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Np
b24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNV
UkxTZXNzaW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDIyNUMwQTFDNDZG
QkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNVUkxTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEMjdBRTRFMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lv
blZULmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlUm90YXRpb25TZXNzaW9uVlQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwNjEyLDYgKzMwNjE2LDggQEAKIAkJCQlDREM4QjVBNTE4
MDQ3NEY3MDAxNkU2ODUgLyogTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNE
QzhCNUE0MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tICov
LAogCQkJCTdBMjlGNTcxMThDNjk1MTQwMDREMEY4MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGLmggKi8sCisJCQkJQ0QyMEVEM0EyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVv
T3V0cHV0LmggKi8sCisJCQkJQ0QyMEVEM0IyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVv
T3V0cHV0Lm1tICovLAogCQkJCUNERjk5NEZBMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLmggKi8sCiAJCQkJQ0RGOTk0RkIyNEMxMkE2QTAwMkVBMDYyIC8qIFNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gKi8sCiAJCQkJQ0RDOEI1QTkxODA0N0ZGMTAwMTZF
Njg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggKi8sCkBAIC0zNjU4MCw2ICszNjU4
Niw3IEBACiAJCQkJRUIwRkI3MEQyNzBEMEIyRTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25P
cHRpb25zSW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFGNTk0MUVERjY5RDMw
MDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMjBF
RDNDMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTE1RTMxRjQxRTBDQjBCNTAwNEIzNzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOUJBRUU5MkMyMjM4OEE3RDAwNDE1N0E5IC8qIFF1aXJrcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzc5RTM3MTcxMzczNkE2NjAwQjlFOTE5IC8qIFF1b3RlZFByaW50YWJsZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zODU2Myw2ICszODU3MCw3IEBACiAJCQkJQUExMkRGNDkxNzQzREY4
MzAwNERBRkRGIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEQTI5QTMwMUNCRjc0RDQwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTI5QTE2MUNCREE1NkMwMDkwMUND
RiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlD
RDIwRUQzRDI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQubW0gaW4gU291cmNl
cyAqLywKIAkJCQk0MTkyNDI0OTIxMjdCOTNFMDA2MzRGQ0YgLyogUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzFDMDA0QjI3MEI4NjQ5MDBE
MDI3QzcgLyogUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVD
MkIxQUVDMjIzOTdFQkMwMEI5MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDk0
OGQxZDQxNzQ4ZTlmYWQyOTIyY2FmNzBjZWI2NjhiNDg4ZTk5NDEuLjQ2MjNkMThhYjI3M2FmYWI1
YTcyNWJiNGI4NDYxNTRkYjZmZjdiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcApAQCAtNjAzLDEzICs2MDMsMTYgQEAgdW5zaWduZWQgSFRNTFZpZGVvRWxlbWVu
dDo6cmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhSZWY8VmlkZW9GcmFtZVJlcXVlc3RDYWxsYmEK
IAogdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpjYW5jZWxWaWRlb0ZyYW1lQ2FsbGJhY2sodW5zaWdu
ZWQgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGluZGV4ID0gbV92aWRlb0ZyYW1lUmVxdWVzdHMu
ZmluZE1hdGNoaW5nKFtpZGVudGlmaWVyXShhdXRvJiByZXF1ZXN0KSB7IHJldHVybiByZXF1ZXN0
LT5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0pOwotICAgIGlmIChpbmRleCA9PSBub3RGb3Vu
ZCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX2lzUnVubmluZ1ZpZGVvRnJhbWVSZXF1ZXN0
cykgewotICAgICAgICBtX3ZpZGVvRnJhbWVSZXF1ZXN0c1tpbmRleF0tPmNhbmNlbGxlZCA9IHRy
dWU7CisgICAgLy8gU2VhcmNoIGZpcnN0IHRoZSByZXF1ZXN0cyBjdXJyZW50bHkgYmVpbmcgc2Vy
dmljZWQsIGFuZCBtYXJrIHRoZW0gYXMgY2FuY2VsbGVkIGlmIGZvdW5kLgorICAgIGF1dG8gaW5k
ZXggPSBtX3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVlc3RzLmZpbmRNYXRjaGluZyhbaWRlbnRpZmll
cl0oYXV0byYgcmVxdWVzdCkgeyByZXR1cm4gcmVxdWVzdC0+aWRlbnRpZmllciA9PSBpZGVudGlm
aWVyOyB9KTsKKyAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAgICAgbV9zZXJ2aWNl
ZFZpZGVvRnJhbWVSZXF1ZXN0c1tpbmRleF0tPmNhbmNlbGxlZCA9IHRydWU7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisKKyAgICBpbmRleCA9IG1fdmlkZW9GcmFtZVJlcXVlc3RzLmZpbmRNYXRj
aGluZyhbaWRlbnRpZmllcl0oYXV0byYgcmVxdWVzdCkgeyByZXR1cm4gcmVxdWVzdC0+aWRlbnRp
ZmllciA9PSBpZGVudGlmaWVyOyB9KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAg
ICAgIHJldHVybjsKICAgICBtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5yZW1vdmUoaW5kZXgpOwogCiAg
ICAgaWYgKG1fdmlkZW9GcmFtZVJlcXVlc3RzLmlzRW1wdHkoKSAmJiBwbGF5ZXIoKSkKQEAgLTYz
OSwyMCArNjQyLDE0IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2VydmljZVJlcXVlc3RWaWRl
b0ZyYW1lQ2FsbGJhY2tzKFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kCiAKICAgICBSZWYgcHJvdGVj
dGVkVGhpcyB7ICp0aGlzIH07CiAKLSAgICAvLyBXZSBzdG9yZSB0aGUgc2l6ZSBiZWZvcmUgY2Fs
bGluZyBjYWxsYmFja3MgYXMgd2UgZG8gbm90IHdhbnQgdG8gY2FsbCBuZXdseSBhZGRlZCBjYWxs
YmFja3MuCi0gICAgYXV0byBjYWxsYmFja0NvdW50ID0gbV92aWRlb0ZyYW1lUmVxdWVzdHMuc2l6
ZSgpOwotCi0gICAgbV9pc1J1bm5pbmdWaWRlb0ZyYW1lUmVxdWVzdHMgPSB0cnVlOwotICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjYWxsYmFja0NvdW50OyArK2luZGV4KSB7Ci0g
ICAgICAgIGF1dG8mIHJlcXVlc3QgPSBtX3ZpZGVvRnJhbWVSZXF1ZXN0c1tpbmRleF07CisgICAg
bV92aWRlb0ZyYW1lUmVxdWVzdHMuc3dhcChtX3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVlc3RzKTsK
KyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVlc3RzKSB7
CiAgICAgICAgIGlmICghcmVxdWVzdC0+Y2FuY2VsbGVkKSB7CiAgICAgICAgICAgICByZXF1ZXN0
LT5jYWxsYmFjay0+aGFuZGxlRXZlbnQoc3RkOjpyb3VuZChub3cubWlsbGlzZWNvbmRzKCkpLCAq
dmlkZW9GcmFtZU1ldGFkYXRhKTsKICAgICAgICAgICAgIHJlcXVlc3QtPmNhbmNlbGxlZCA9IHRy
dWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9pc1J1bm5pbmdWaWRlb0ZyYW1lUmVxdWVzdHMg
PSBmYWxzZTsKLQotICAgIG1fdmlkZW9GcmFtZVJlcXVlc3RzLnJlbW92ZUFsbE1hdGNoaW5nKFtd
KGF1dG8mIGNhbGxiYWNrKSB7IHJldHVybiBjYWxsYmFjay0+Y2FuY2VsbGVkOyB9KTsKKyAgICBt
X3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVlc3RzLmNsZWFyKCk7CiAKICAgICBpZiAobV92aWRlb0Zy
YW1lUmVxdWVzdHMuaXNFbXB0eSgpICYmIHBsYXllcigpKQogICAgICAgICBwbGF5ZXIoKS0+c3Rv
cFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaAppbmRleCA4NTZhZGVhNzhmYjczOThkOGZiNDVmNDQ4YTM1OTFiZGE1NWY5NzJj
Li5mOGQzYjQwMzJkNjAyNDRiNTQwMTc4MzNlYWZhMDA2OTA0ZDFiNDEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtMTcyLDggKzE3Miw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIGJvb2wgY2FuY2VsbGVkIHsgZmFsc2UgfTsKICAgICB9OwogICAgIFZlY3RvcjxVbmlx
dWVSZWY8VmlkZW9GcmFtZVJlcXVlc3Q+PiBtX3ZpZGVvRnJhbWVSZXF1ZXN0czsKKyAgICBWZWN0
b3I8VW5pcXVlUmVmPFZpZGVvRnJhbWVSZXF1ZXN0Pj4gbV9zZXJ2aWNlZFZpZGVvRnJhbWVSZXF1
ZXN0czsKICAgICB1bnNpZ25lZCBtX25leHRWaWRlb0ZyYW1lUmVxdWVzdEluZGV4IHsgMCB9Owot
ICAgIGJvb2wgbV9pc1J1bm5pbmdWaWRlb0ZyYW1lUmVxdWVzdHMgeyBmYWxzZSB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDFlNjU3NTcy
NDY1NDk3MzQzY2RlMmEyNGQ4ZjBkYzZiNGUwMjY3ZTEuLjhhNGI5M2UzMzM5ZTdlYjIyNmU4ZGYz
ZjEzZjk5MjNjOTBiNWI2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ01UaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4K
IAogT0JKQ19DTEFTUyBBVkFzc2V0SW1hZ2VHZW5lcmF0b3I7CiBPQkpDX0NMQVNTIEFWQXNzZXRU
cmFjazsKQEAgLTY3LDYgKzY4LDcgQEAgY2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGOwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDOwogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVjsKK2NsYXNzIFF1ZXVl
ZFZpZGVvT3V0cHV0OwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVv
TGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKQEAgLTM0
Nyw3ICszNDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRWaWRlb0ZyYW1lTWV0YWRhdGFH
YXRoZXJpbmcoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJp
bmcoKSBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVNZXRhZGF0YT4gdmlkZW9G
cmFtZU1ldGFkYXRhKCkgZmluYWwgeyByZXR1cm4gc3RkOjpleGNoYW5nZShtX3ZpZGVvRnJhbWVN
ZXRhZGF0YSwgeyB9KTsgfQotICAgIHZvaWQgY2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoQ01U
aW1lKTsKKyAgICB2b2lkIGNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCk7CiAKICAgICBSZXRh
aW5QdHI8QVZVUkxBc3NldD4gbV9hdkFzc2V0OwogICAgIFJldGFpblB0cjxBVlBsYXllcj4gbV9h
dlBsYXllcjsKQEAgLTM2Nyw3ICszNjksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBSZXRh
aW5QdHI8QVZBc3NldEltYWdlR2VuZXJhdG9yPiBtX2ltYWdlR2VuZXJhdG9yOwotICAgIFJldGFp
blB0cjxBVlBsYXllckl0ZW1WaWRlb091dHB1dD4gbV92aWRlb091dHB1dDsKKyAgICBSZWZQdHI8
UXVldWVkVmlkZW9PdXRwdXQ+IG1fdmlkZW9PdXRwdXQ7CiAgICAgUmV0YWluUHRyPFdlYkNvcmVB
VkZQdWxsRGVsZWdhdGU+IG1fdmlkZW9PdXRwdXREZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gbV9sYXN0UGl4ZWxCdWZmZXI7CiAgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBtX2xhc3RJbWFnZTsKQEAgLTQ2Miw4ICs0NjQsMTAgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5Q
dHI8aWQ+IG1fdmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nT2JzZXJ2ZXI7CiAgICAgYm9vbCBt
X2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhIHsgZmFsc2UgfTsKICAgICBzdGQ6Om9wdGlv
bmFsPFZpZGVvRnJhbWVNZXRhZGF0YT4gbV92aWRlb0ZyYW1lTWV0YWRhdGE7CisgICAgTWVkaWFU
aW1lIG1fbGFzdFZpZGVvRnJhbWVNZXRhZGF0YURpc3BsYXlUaW1lIHsgTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpIH07CiAgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPE5TVGltZUludGVydmFsPiBt
X2NhY2hlZFNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWU7CiAgICAgbXV0YWJsZSBz
dGQ6Om9wdGlvbmFsPE5TVGltZUludGVydmFsPiBtX2NhY2hlZExpdmVVcGRhdGVJbnRlcnZhbDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JzZXJ2ZXI8dm9pZCgpPj4gbV9jdXJyZW50SW1hZ2VDaGFu
Z2VkT2JzZXJ2ZXI7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCBjMDY3Y2Nl
ODA2ODZmN2ExYmM1NDE0YmFmNzdmNzUyNTJiZjM0MmM3Li5mZjQ1NjJiNGI2MWJlYmIxZTA3ZTQ2
ZTQ4NmUzYjY2N2Y3YTFjMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTU4LDYgKzU4
LDcgQEAKICNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVRleHRU
cmFjay5oIgogI2ltcG9ydCAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCisjaW1wb3J0ICJRdWV1ZWRW
aWRlb091dHB1dC5oIgogI2ltcG9ydCAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW1w
b3J0ICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbXBvcnQgIlNlY3VyaXR5T3JpZ2luLmgi
CkBAIC0yMDUsMTYgKzIwNiw2IEBAIC0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpcGxheWVyOwogLSAoQk9PTClyZXNvdXJj
ZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgc2hvdWxkV2Fp
dEZvckxvYWRpbmdPZlJlcXVlc3RlZFJlc291cmNlOihBVkFzc2V0UmVzb3VyY2VMb2FkaW5nUmVx
dWVzdCAqKWxvYWRpbmdSZXF1ZXN0OwogQGVuZAogCi1AaW50ZXJmYWNlIFdlYkNvcmVBVkZQdWxs
RGVsZWdhdGUgOiBOU09iamVjdDxBVlBsYXllckl0ZW1PdXRwdXRQdWxsRGVsZWdhdGU+IHsKLSAg
ICBCaW5hcnlTZW1hcGhvcmUgbV9zZW1hcGhvcmU7Ci19Ci0tIChpZClpbml0V2l0aFBsYXllcjoo
V2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiYmKXBsYXllcjsKLS0g
KHZvaWQpb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQbGF5ZXJJdGVtT3V0cHV0ICopc2Vu
ZGVyOwotLSAodm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KEFWUGxheWVySXRlbU91dHB1
dCAqKW91dHB1dDsKLQotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCaW5hcnlTZW1h
cGhvcmUmIHNlbWFwaG9yZTsKLUBlbmQKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIFN0
cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhBVlBsYXllclRpbWVDb250cm9sU3RhdHVz
IGVudW1lcmF0aW9uVmFsdWUpCiB7CkBAIC0yNjEsMTYgKzI1Miw2IEBAIHN0YXRpYyBkaXNwYXRj
aF9xdWV1ZV90IGdsb2JhbExvYWRlckRlbGVnYXRlUXVldWUoKQogICAgIHJldHVybiBnbG9iYWxR
dWV1ZTsKIH0KIAotc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUHVsbERlbGVnYXRlUXVl
dWUoKQotewotICAgIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFF1ZXVlOwotICAgIHN0
YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIGRpc3BhdGNoX29uY2UoJm9uY2VU
b2tlbiwgXnsKLSAgICAgICAgZ2xvYmFsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldl
YkNvcmVBVkZQdWxsRGVsZWdhdGUgcXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOwotICAg
IH0pOwotICAgIHJldHVybiBnbG9iYWxRdWV1ZTsKLX0KLQogc3RhdGljIHZvaWQgcmVnaXN0ZXJG
b3JtYXRSZWFkZXJJZk5lY2Vzc2FyeSgpCiB7CiAjaWYgRU5BQkxFKFdFQk1fRk9STUFUX1JFQURF
UikKQEAgLTQ2OSw3ICs0NTAsOCBAQCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Ojp+TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQygpCiAgICAgZm9yIChhdXRvJiBw
YWlyIDogbV9yZXNvdXJjZUxvYWRlck1hcCkKICAgICAgICAgcGFpci52YWx1ZS0+aW52YWxpZGF0
ZSgpOwogCi0gICAgW21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bmlsIHF1ZXVlOjBdOworICAg
IGlmIChtX3ZpZGVvT3V0cHV0KQorICAgICAgICBtX3ZpZGVvT3V0cHV0LT5pbnZhbGlkYXRlKCk7
CiAKICAgICBpZiAobV92aWRlb0xheWVyKQogICAgICAgICBkZXN0cm95VmlkZW9MYXllcigpOwpA
QCAtNzAyLDcgKzY4NCw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0CiAgICAgaWYgKGN1cnJlbnRSZW5kZXJp
bmdNb2RlKCkgPT0gTWVkaWFSZW5kZXJpbmdNb2RlOjpNZWRpYVJlbmRlcmluZ1RvTGF5ZXIpCiAg
ICAgICAgIHJldHVybiBtX2NhY2hlZElzUmVhZHlGb3JEaXNwbGF5OwogCi0gICAgaWYgKG1fdmlk
ZW9PdXRwdXQgJiYgKG1fbGFzdFBpeGVsQnVmZmVyIHx8IFttX3ZpZGVvT3V0cHV0IGhhc05ld1Bp
eGVsQnVmZmVyRm9ySXRlbVRpbWU6W21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXV0pKQorICAg
IGlmIChtX3ZpZGVvT3V0cHV0ICYmIChtX2xhc3RQaXhlbEJ1ZmZlciB8fCBtX3ZpZGVvT3V0cHV0
LT5oYXNJbWFnZUZvclRpbWUoY3VycmVudE1lZGlhVGltZSgpKSkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgcmV0dXJuIG1fdmlkZW9GcmFtZUhhc0RyYXduOwpAQCAtMTQ0NCwzNCArMTQy
NiwzMCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3Jt
UGF1c2VkKCkgY29uc3QKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpzdGFydFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpCiB7Ci0gICAgQVNTRVJUKCFtX3Zp
ZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZ09ic2VydmVyIHx8IG1fYXZQbGF5ZXIpOwotICAgIG1f
aXNHYXRoZXJpbmdWaWRlb0ZyYW1lTWV0YWRhdGEgPSB0cnVlOworICAgIC8vIHJlcXVlc3RWaWRl
b0ZyYW1lQ2FsbGJhY2soKSBjYXJlcyBhYm91dCB0aGUgL25leHQvIGF2YWlsYWJsZSBmcmFtZS4g
UHVsbCB0aGUgY3VycmVudCBmcmFtZSBmcm9tCisgICAgLy8gdGhlIFF1ZXVlZFZpZGVvT3V0cHV0
IHNvIHBhaW50cyBvZiB0aGUgY3VycmVudCBmcmFtZSBzdWNjZWVkOworICAgIHVwZGF0ZUxhc3RQ
aXhlbEJ1ZmZlcigpOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgYSBDQURpc3BsYXlM
aW5rIHRvIGdldCB1cGRhdGVzIG9uIHJlbmRlcmluZywgZm9yIG5vdyB3ZSBlbXVsYXRlIHdpdGgg
YWRkUGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbC4KLSAgICBtX3ZpZGVvRnJhbWVNZXRh
ZGF0YUdhdGhlcmluZ09ic2VydmVyID0gW21fYXZQbGF5ZXIgYWRkUGVyaW9kaWNUaW1lT2JzZXJ2
ZXJGb3JJbnRlcnZhbDpQQUw6OkNNVGltZU1ha2UoMSwgNjApIHF1ZXVlOmRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCkgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0oQ01U
aW1lIGN1cnJlbnRUaW1lKSB7Ci0gICAgICAgIGVuc3VyZU9uTWFpblRocmVhZChbd2Vha1RoaXMs
IGN1cnJlbnRUaW1lXSB7Ci0gICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAg
ICAgd2Vha1RoaXMtPmNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKGN1cnJlbnRUaW1lKTsKLSAg
ICAgICAgfSk7Ci0gICAgfV07CisgICAgbV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIgPSBX
VEY6Om1ha2VVbmlxdWU8T2JzZXJ2ZXI8dm9pZCgpPj4oW3RoaXNdIHsKKyAgICAgICAgbV9jdXJy
ZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIgPSBudWxscHRyOworICAgICAgICBjaGVja05ld1ZpZGVv
RnJhbWVNZXRhZGF0YSgpOworICAgIH0pOworCisgICAgaWYgKG1fdmlkZW9PdXRwdXQpCisgICAg
ICAgIG1fdmlkZW9PdXRwdXQtPmFkZEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcigqbV9jdXJy
ZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIpOworCisgICAgbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVN
ZXRhZGF0YSA9IHRydWU7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoQ01UaW1lIGN1cnJlbnRUaW1lKQordm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjaGVja05ld1ZpZGVvRnJhbWVN
ZXRhZGF0YSgpCiB7Ci0gICAgaWYgKCF1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSkKKyAgICBpZiAo
IW1faXNHYXRoZXJpbmdWaWRlb0ZyYW1lTWV0YWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFZpZGVvRnJhbWVNZXRhZGF0YSBtZXRhZGF0YTsKLSAgICBtZXRhZGF0YS53aWR0aCA9IG1fY2Fj
aGVkUHJlc2VudGF0aW9uU2l6ZS53aWR0aCgpOwotICAgIG1ldGFkYXRhLmhlaWdodCA9IG1fY2Fj
aGVkUHJlc2VudGF0aW9uU2l6ZS5oZWlnaHQoKTsKLSAgICBtZXRhZGF0YS5wcmVzZW50ZWRGcmFt
ZXMgPSArK21fc2FtcGxlQ291bnQ7Ci0gICAgbWV0YWRhdGEubWVkaWFUaW1lID0gUEFMOjpDTVRp
bWVHZXRTZWNvbmRzKGN1cnJlbnRUaW1lKTsKLSAgICAvLyBGSVhNRTogcHJlc2VudGF0aW9uVGlt
ZSBhbmQgZXhwZWN0ZWREaXNwbGF5VGltZSBtaWdodCBub3QgYWx3YXlzIGhhdmUgdGhlIHNhbWUg
dmFsdWUsIHdlIHNob3VsZCB0cnkgZ2V0dGluZyBtb3JlIHByZWNpc2UgdmFsdWVzLgotICAgIG1l
dGFkYXRhLnByZXNlbnRhdGlvblRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2lu
Y2VFcG9jaCgpLnNlY29uZHMoKTsKLSAgICBtZXRhZGF0YS5leHBlY3RlZERpc3BsYXlUaW1lID0g
bWV0YWRhdGEucHJlc2VudGF0aW9uVGltZTsKKyAgICBpZiAoIXVwZGF0ZUxhc3RQaXhlbEJ1ZmZl
cigpICYmICFtX3ZpZGVvRnJhbWVNZXRhZGF0YSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgbV92
aWRlb0ZyYW1lTWV0YWRhdGEgPSBtZXRhZGF0YTsKLSAgICBwbGF5ZXIoKS0+b25OZXdWaWRlb0Zy
YW1lTWV0YWRhdGEoV1RGTW92ZShtZXRhZGF0YSksIG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsK
KyAgICBwbGF5ZXIoKS0+b25OZXdWaWRlb0ZyYW1lTWV0YWRhdGEoV1RGTW92ZSgqbV92aWRlb0Zy
YW1lTWV0YWRhdGEpLCBtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSk7CiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3RvcFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhl
cmluZygpCkBAIC0yNTE4LDE3ICsyNDk2LDE0IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQoKQogICAgIGlmICghbV9hdlBsYXllckl0
ZW0gfHwgbV92aWRlb091dHB1dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV92aWRlb091dHB1
dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NBVlBsYXllckl0ZW1WaWRlb091dHB1dEluc3RhbmNlKCkg
aW5pdFdpdGhQaXhlbEJ1ZmZlckF0dHJpYnV0ZXM6bmlsXSk7CisgICAgbV92aWRlb091dHB1dCA9
IFF1ZXVlZFZpZGVvT3V0cHV0OjpjcmVhdGUobV9hdlBsYXllckl0ZW0uZ2V0KCksIG1fYXZQbGF5
ZXIuZ2V0KCkpOwogICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0KTsKICAgICBpZiAoIW1fdmlkZW9P
dXRwdXQpIHsKICAgICAgICAgRVJST1JfTE9HKExPR0lERU5USUZJRVIsICItW0FWUGxheWVySXRl
bVZpZGVvT3V0cHV0IGluaXRXaXRoUGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOl0gZmFpbGVkISIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgbV92aWRlb091dHB1dERlbGVnYXRlID0gYWRv
cHROUyhbW1dlYkNvcmVBVkZQdWxsRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGxheWVyOip0aGlz
XSk7Ci0gICAgW21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bV92aWRlb091dHB1dERlbGVnYXRl
LmdldCgpIHF1ZXVlOmdsb2JhbFB1bGxEZWxlZ2F0ZVF1ZXVlKCldOwotCi0gICAgW21fYXZQbGF5
ZXJJdGVtIGFkZE91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKKyAgICBpZiAobV9jdXJyZW50
SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIpCisgICAgICAgIG1fdmlkZW9PdXRwdXQtPmFkZEN1cnJlbnRJ
bWFnZUNoYW5nZWRPYnNlcnZlcigqbV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIpOwogCiAg
ICAgc2V0TmVlZHNSZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOwogfQpAQCAtMjUzOCwxOSArMjUxMywx
OSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmRlc3Ryb3lWaWRl
b091dHB1dCgpCiAgICAgaWYgKCFtX3ZpZGVvT3V0cHV0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAobV9hdlBsYXllckl0ZW0pCi0gICAgICAgIFttX2F2UGxheWVySXRlbSByZW1vdmVPdXRw
dXQ6bV92aWRlb091dHB1dC5nZXQoKV07Ci0KICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsK
IAotICAgIG1fdmlkZW9PdXRwdXQgPSAwOworICAgIG1fdmlkZW9PdXRwdXQtPmludmFsaWRhdGUo
KTsKKyAgICBtX3ZpZGVvT3V0cHV0ID0gbnVsbHB0cjsKKworICAgIG1fdmlkZW9GcmFtZU1ldGFk
YXRhID0geyB9OwogCiAgICAgc2V0TmVlZHNSZW5kZXJpbmdNb2RlQ2hhbmdlZCgpOwogfQogCiBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1
ZmZlcigpCiB7Ci0gICAgaWYgKCFtX2F2UGxheWVySXRlbSB8fCByZWFkeVN0YXRlKCkgPCBNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZUN1cnJlbnREYXRhKQorICAgIGlmICghbV9hdlBsYXll
ckl0ZW0pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1faGF2ZUJlZW5Bc2tlZFRvUGFp
bnQgPSB0cnVlOwpAQCAtMjU1OSwxNyArMjUzNCwzOSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpCiAgICAgICAgIGNyZWF0
ZVZpZGVvT3V0cHV0KCk7CiAgICAgQVNTRVJUKG1fdmlkZW9PdXRwdXQpOwogCi0gICAgQ01UaW1l
IGN1cnJlbnRUaW1lID0gW21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXTsKKyAgICBhdXRvIGN1
cnJlbnRUaW1lID0gY3VycmVudE1lZGlhVGltZSgpOwogCi0gICAgaWYgKCFbbV92aWRlb091dHB1
dCBoYXNOZXdQaXhlbEJ1ZmZlckZvckl0ZW1UaW1lOmN1cnJlbnRUaW1lXSkKKyAgICBpZiAoIW1f
dmlkZW9PdXRwdXQtPmhhc0ltYWdlRm9yVGltZShjdXJyZW50VGltZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIG1fbGFzdFBpeGVsQnVmZmVyID0gYWRvcHRDRihbbV92aWRlb091dHB1
dCBjb3B5UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpjdXJyZW50VGltZSBpdGVtVGltZUZvckRpc3Bs
YXk6bmlsXSk7CisgICAgYXV0byBlbnRyeSA9IG1fdmlkZW9PdXRwdXQtPnRha2VWaWRlb0ZyYW1l
RW50cnlGb3JUaW1lKGN1cnJlbnRUaW1lKTsKKyAgICBtX2xhc3RQaXhlbEJ1ZmZlciA9IFdURk1v
dmUoZW50cnkucGl4ZWxCdWZmZXIpOworCiAKICAgICBpZiAobV9pbWFnZVJvdGF0aW9uU2Vzc2lv
bikKICAgICAgICAgbV9sYXN0UGl4ZWxCdWZmZXIgPSBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5y
b3RhdGUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwogCiAgICAgbV9sYXN0SW1hZ2UgPSBudWxs
cHRyOworCisgICAgaWYgKCFtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIENyZWF0aW5nIGFuIEFWUGxheWVyTGF5ZXIgd2lsbCBy
ZWNvbmZpZ3VyZSB0aGUgZGVjb2RlciBwaXBlbGluZSwgYW5kIHBvdGVudGlhbGx5IGNhdXNlIGEg
bmV3IGZyYW1lIHRvIGJlCisgICAgLy8gaXNzdWVkIGZvciB0aGUgY3VycmVudCB0aW1lLiBJbiB0
aGlzIHNjZW5hcmlvLCB3YWl0IGZvciB0aGUgbmV4dCBmcmFtZSByYXRoZXIgdGhhbiB0aGlzIG9u
ZS4KKyAgICBpZiAobV9sYXN0VmlkZW9GcmFtZU1ldGFkYXRhRGlzcGxheVRpbWUuaXNWYWxpZCgp
ICYmIGVudHJ5LmRpc3BsYXlUaW1lID09IG1fbGFzdFZpZGVvRnJhbWVNZXRhZGF0YURpc3BsYXlU
aW1lKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBtX2xhc3RWaWRlb0ZyYW1lTWV0YWRhdGFE
aXNwbGF5VGltZSA9IGVudHJ5LmRpc3BsYXlUaW1lOworCisgICAgYXV0byBwcmVzZW50YXRpb25U
aW1lID0gTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzKCkg
LSAoY3VycmVudFRpbWUgLSBlbnRyeS5kaXNwbGF5VGltZSkudG9Eb3VibGUoKTsKKyAgICBtX3Zp
ZGVvRnJhbWVNZXRhZGF0YSA9IHsKKyAgICAgICAgLndpZHRoID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KENWUGl4ZWxCdWZmZXJHZXRXaWR0aChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpLAorICAg
ICAgICAuaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENWUGl4ZWxCdWZmZXJHZXRIZWln
aHQobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpKSwKKyAgICAgICAgLnByZXNlbnRlZEZyYW1lcyA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPigrK21fc2FtcGxlQ291bnQpLAorICAgICAgICAubWVkaWFU
aW1lID0gZW50cnkuZGlzcGxheVRpbWUudG9Eb3VibGUoKSwKKyAgICAgICAgLnByZXNlbnRhdGlv
blRpbWUgPSBwcmVzZW50YXRpb25UaW1lLAorICAgICAgICAuZXhwZWN0ZWREaXNwbGF5VGltZSA9
IHByZXNlbnRhdGlvblRpbWUsCisgICAgfTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0y
NTg0LDcgKzI1ODEsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnZpZGVvT3V0cHV0SGFzQXZhaWxhYmxlRnJhbWUoKQogICAgIGlmICghbV92aWRlb091dHB1dCkK
ICAgICAgICAgY3JlYXRlVmlkZW9PdXRwdXQoKTsKIAotICAgIHJldHVybiBbbV92aWRlb091dHB1
dCBoYXNOZXdQaXhlbEJ1ZmZlckZvckl0ZW1UaW1lOlttX2F2UGxheWVySXRlbSBjdXJyZW50VGlt
ZV1dOworICAgIHJldHVybiBtX3ZpZGVvT3V0cHV0LT5oYXNJbWFnZUZvclRpbWUoUEFMOjp0b01l
ZGlhVGltZShbbV9hdlBsYXllckl0ZW0gY3VycmVudFRpbWVdKSk7CiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGUg
dHlwZSkKQEAgLTI2MDIsNyArMjU5OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6dXBkYXRlTGFzdEltYWdlKFVwZGF0ZVR5cGUgdHlwZSkKICAgICAvLyBDYWxs
cyB0byBjb3B5UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTppdGVtVGltZUZvckRpc3BsYXk6IG1heSBy
ZXR1cm4gbmlsIGlmIHRoZSBwaXhlbCBidWZmZXIKICAgICAvLyBmb3IgdGhlIHJlcXVlc3RlZCB0
aW1lIGhhcyBhbHJlYWR5IGJlZW4gcmV0cmlldmVkLiBJbiB0aGlzIGNhc2UsIHRoZSBsYXN0IHZh
bGlkIGltYWdlIChpZiBhbnkpCiAgICAgLy8gc2hvdWxkIGJlIGRpc3BsYXllZC4KLSAgICBpZiAo
KG1faXNHYXRoZXJpbmdWaWRlb0ZyYW1lTWV0YWRhdGEgfHwgIXVwZGF0ZUxhc3RQaXhlbEJ1ZmZl
cigpKSAmJiAobV9sYXN0SW1hZ2UgfHwgIW1fbGFzdFBpeGVsQnVmZmVyKSkKKyAgICBpZiAoIXVw
ZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpICYmIChtX2xhc3RJbWFnZSB8fCAhbV9sYXN0UGl4ZWxCdWZm
ZXIpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fcGl4ZWxCdWZmZXJDb25mb3JtZXIp
IHsKQEAgLTI2MzcsOCArMjYzNCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6cGFpbnRXaXRoVmlkZW9PdXRwdXQoR3JhcGhpY3NDb250ZXh0JiBjCiAKIFJldGFp
blB0cjxDVlBpeGVsQnVmZmVyUmVmPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpwaXhlbEJ1ZmZlckZvckN1cnJlbnRUaW1lKCkKIHsKLSAgICBpZiAoIW1faXNHYXRoZXJpbmdW
aWRlb0ZyYW1lTWV0YWRhdGEpCi0gICAgICAgIHVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpOworICAg
IHVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpOwogCiAgICAgcmV0dXJuIG1fbGFzdFBpeGVsQnVmZmVy
OwogfQpAQCAtMjY2OSw3ICsyNjY1LDExIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6d2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpCiAgICAg
c3RkOjpvcHRpb25hbDxSdW5Mb29wOjpUaW1lcjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDPj4gdGltZW91dFRpbWVyOwogCiAgICAgaWYgKCFtX3J1bkxvb3BOZXN0aW5nTGV2ZWwp
IHsKLSAgICAgICAgW21fdmlkZW9PdXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRh
Q2hhbmdlV2l0aEFkdmFuY2VJbnRlcnZhbDowXTsKKyAgICAgICAgT2JzZXJ2ZXI8dm9pZCgpPiB3
YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlT2JzZXJ2ZXIoW3RoaXNdIHsKKyAg
ICAgICAgICAgIGlmIChtX3J1bkxvb3BOZXN0aW5nTGV2ZWwpCisgICAgICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLnN0b3AoKTsKKyAgICAgICAgfSk7CisgICAgICAgIG1fdmlkZW9PdXRwdXQt
PmFkZEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcih3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURh
dGFXaWxsQ2hhbmdlT2JzZXJ2ZXIpOwogCiAgICAgICAgIHRpbWVvdXRUaW1lci5lbXBsYWNlKFJ1
bkxvb3A6Om1haW4oKSwgWyZdIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5zdG9wKCk7
CkBAIC0yNjk2LDE1ICsyNjk2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjp3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCkKIAogdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvdXRwdXRNZWRpYURhdGFXaWxsQ2hh
bmdlKCkKIHsKLSAgICBpZiAobV9ydW5Mb29wTmVzdGluZ0xldmVsKSB7Ci0gICAgICAgIGlmIChS
dW5Mb29wOjppc01haW4oKSkKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5zdG9wKCk7Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtdIHsK
LSAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0KLSAgICB9CisgICAgY2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoKTsKIH0K
IAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQpAQCAtNDA4OSwzNyArNDA4MSw0
IEBAIC0gKHZvaWQpcmVzb3VyY2VMb2FkZXI6KEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqKXJlc291
cmNlTG9hZGVyIGRpZENhbmNlbExvYWRpbmdSCiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdl
YkNvcmVBVkZQdWxsRGVsZWdhdGUgewotICAgIFdlYWtQdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQz4gX3BsYXllcjsKLX0KLQotQHN5bnRoZXNpemUgc2VtYXBo
b3JlID0gbV9zZW1hcGhvcmU7Ci0KLS0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpcGxheWVyCi17Ci0gICAgc2VsZiA9IFtz
dXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgX3Bs
YXllciA9IFdURk1vdmUocGxheWVyKTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClv
dXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOihBVlBsYXllckl0ZW1WaWRlb091dHB1dCAqKW91dHB1
dAotewotICAgIFVOVVNFRF9QQVJBTShvdXRwdXQpOwotICAgIG1fc2VtYXBob3JlLnNpZ25hbCgp
OwotICAgIGNhbGxPbk1haW5UaHJlYWQoW3NlbGYsIHN0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBz
ZWxmIH1dIHsKLSAgICAgICAgaWYgKF9wbGF5ZXIpCi0gICAgICAgICAgICBfcGxheWVyLT5vdXRw
dXRNZWRpYURhdGFXaWxsQ2hhbmdlKCk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpb3V0cHV0U2Vx
dWVuY2VXYXNGbHVzaGVkOihBVlBsYXllckl0ZW1WaWRlb091dHB1dCAqKW91dHB1dAotewotICAg
IFVOVVNFRF9QQVJBTShvdXRwdXQpOwotICAgIC8vIE5vLW9wLgotfQotCi1AZW5kCi0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGJhZjBlYTExZTVjNGZiZTMyNGQ5NTI1YWRmMWJkYjNjNjMzMGE4OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1
ZXVlZFZpZGVvT3V0cHV0LmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHd0
Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvT2Jz
ZXJ2ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KKworT0JKQ19DTEFTUyBBVlBs
YXllcjsKK09CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtOworT0JKQ19DTEFTUyBBVlBsYXllckl0ZW1W
aWRlb091dHB1dDsKK09CSkNfQ0xBU1MgV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZTsKKwor
dHlwZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQaXhlbEJ1ZmZlclJlZjsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBRdWV1ZWRWaWRlb091dHB1dAorICAgIDogcHVibGljIFJlZkNv
dW50ZWQ8UXVldWVkVmlkZW9PdXRwdXQ+CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UXVl
dWVkVmlkZW9PdXRwdXQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFF1ZXVlZFZpZGVvT3V0cHV0PiBjcmVhdGUoQVZQbGF5ZXJJdGVtKiwg
QVZQbGF5ZXIqKTsKKyAgICB+UXVldWVkVmlkZW9PdXRwdXQoKTsKKworICAgIHZvaWQgaW52YWxp
ZGF0ZSgpOworICAgIGJvb2wgaGFzSW1hZ2VGb3JUaW1lKGNvbnN0IE1lZGlhVGltZSYpIGNvbnN0
OworCisgICAgc3RydWN0IFZpZGVvRnJhbWVFbnRyeSB7CisgICAgICAgIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPiBwaXhlbEJ1ZmZlcjsKKyAgICAgICAgTWVkaWFUaW1lIGRpc3BsYXlUaW1l
OworICAgIH07CisgICAgVmlkZW9GcmFtZUVudHJ5IHRha2VWaWRlb0ZyYW1lRW50cnlGb3JUaW1l
KGNvbnN0IE1lZGlhVGltZSYpOworCisgICAgdm9pZCBhZGRWaWRlb0ZyYW1lRW50cmllcyhWZWN0
b3I8VmlkZW9GcmFtZUVudHJ5PiYmKTsKKyAgICB2b2lkIHB1cmdlVmlkZW9GcmFtZUVudHJpZXMo
KTsKKworICAgIHVzaW5nIEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciA9IE9ic2VydmVyPHZv
aWQoKT47CisgICAgdm9pZCBhZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoY29uc3QgQ3Vy
cmVudEltYWdlQ2hhbmdlZE9ic2VydmVyJik7CisKKyAgICB1c2luZyBJbWFnZU1hcCA9IHN0ZDo6
bWFwPE1lZGlhVGltZSwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+PjsKKworICAgIHZvaWQg
cmF0ZUNoYW5nZWQoZmxvYXQpOworCitwcml2YXRlOgorICAgIFF1ZXVlZFZpZGVvT3V0cHV0KEFW
UGxheWVySXRlbSosIEFWUGxheWVyKik7CisKKyAgICB2b2lkIHB1cmdlSW1hZ2VzQmVmb3JlVGlt
ZShjb25zdCBNZWRpYVRpbWUmKTsKKyAgICB2b2lkIGNvbmZpZ3VyZU5leHRJbWFnZVRpbWVPYnNl
cnZlcigpOworICAgIHZvaWQgY2FuY2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisgICAgdm9p
ZCBuZXh0SW1hZ2VUaW1lUmVhY2hlZCgpOworCisgICAgUmV0YWluUHRyPEFWUGxheWVySXRlbT4g
bV9wbGF5ZXJJdGVtOworICAgIFJldGFpblB0cjxBVlBsYXllcj4gbV9wbGF5ZXI7CisgICAgUmV0
YWluUHRyPFdlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGU+IG1fZGVsZWdhdGU7CisgICAgUmV0
YWluUHRyPEFWUGxheWVySXRlbVZpZGVvT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OworICAgIFJldGFp
blB0cjxpZD4gbV92aWRlb1RpbWViYXNlT2JzZXJ2ZXI7CisgICAgUmV0YWluUHRyPGlkPiBtX25l
eHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXI7CisKKyAgICBJbWFnZU1hcCBtX3ZpZGVvRnJhbWVzOwor
ICAgIFdlYWtIYXNoU2V0PEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcj4gbV9jdXJyZW50SW1h
Z2VDaGFuZ2VkT2JzZXJ2ZXJzOworCisgICAgYm9vbCBtX3BhdXNlZCB7IHRydWUgfTsKK307CisK
K30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBiYzA4MzgxNGMwOGM3ZGVlZDYxYzkwNzljMjJiZTNmNTA3OGE3N2UKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbQpAQCAtMCwwICsxLDMwOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJRdWV1ZWRWaWRlb091dHB1dC5o
IgorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWUGxheWVy
SXRlbU91dHB1dC5oPgorI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3Vu
ZGF0aW9uLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KKworI2luY2x1ZGUg
PHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1ZGUgPHBhbC9jb2NvYS9BVkZvdW5k
YXRpb25Tb2Z0TGluay5oPgorCitAaW50ZXJmYWNlIFdlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdh
dGUgOiBOU09iamVjdDxBVlBsYXllckl0ZW1PdXRwdXRQdWxsRGVsZWdhdGU+IHsKKyAgICBXZWFr
UHRyPFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0PiBfcGFyZW50OworfQorLSAoaWQpaW5pdFdp
dGhQYXJlbnQ6KFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0KilwYXJlbnQ7CistICh2b2lkKW91
dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2U6KEFWUGxheWVySXRlbU91dHB1dCAqKW91dHB1dDsKKy0g
KHZvaWQpb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOihBVlBsYXllckl0ZW1PdXRwdXQgKilvdXRw
dXQ7CistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQp
b2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRl
eHQ7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRl
CistIChpZClpbml0V2l0aFBhcmVudDooV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQqKXBhcmVu
dAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgX3BhcmVudCA9IHBhcmVudDsKKyAgICByZXR1cm4gc2VsZjsKK30K
KworLSAodm9pZClvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOihBVlBsYXllckl0ZW1PdXRwdXQg
KilvdXRwdXQKK3sKKyAgICBBU1NFUlQoW291dHB1dCBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZQ
bGF5ZXJJdGVtVmlkZW9PdXRwdXRDbGFzcygpXSk7CisgICAgYXV0byogdmlkZW9PdXRwdXQgPSAo
QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQqKW91dHB1dDsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpR
dWV1ZWRWaWRlb091dHB1dDo6VmlkZW9GcmFtZUVudHJ5PiB2aWRlb0ZyYW1lRW50cmllczsKKyAg
ICBkbyB7CisgICAgICAgIENNVGltZSBlYXJsaWVzdFRpbWUgPSBbdmlkZW9PdXRwdXQgZWFybGll
c3RBdmFpbGFibGVQaXhlbEJ1ZmZlckl0ZW1UaW1lXTsKKyAgICAgICAgaWYgKENNVElNRV9JU19J
TlZBTElEKGVhcmxpZXN0VGltZSkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRv
IHBpeGVsQnVmZmVyID0gYWRvcHRDRihbdmlkZW9PdXRwdXQgY29weVBpeGVsQnVmZmVyRm9ySXRl
bVRpbWU6ZWFybGllc3RUaW1lIGl0ZW1UaW1lRm9yRGlzcGxheTpuaWxdKTsKKyAgICAgICAgaWYg
KCFwaXhlbEJ1ZmZlcikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHZpZGVvRnJhbWVF
bnRyaWVzLmFwcGVuZCh7IFdURk1vdmUocGl4ZWxCdWZmZXIpLCBQQUw6OnRvTWVkaWFUaW1lKGVh
cmxpZXN0VGltZSkgfSk7CisgICAgfSB3aGlsZSAodHJ1ZSk7CisKKyAgICBpZiAodmlkZW9GcmFt
ZUVudHJpZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjYWxsT25NYWluUnVu
TG9vcChbdmlkZW9GcmFtZUVudHJpZXMgPSBXVEZNb3ZlKHZpZGVvRnJhbWVFbnRyaWVzKSwgcGFy
ZW50ID0gX3BhcmVudF0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChwYXJlbnQpCisgICAgICAg
ICAgICBwYXJlbnQtPmFkZFZpZGVvRnJhbWVFbnRyaWVzKFdURk1vdmUodmlkZW9GcmFtZUVudHJp
ZXMpKTsKKyAgICB9KTsKK30KKworLSAodm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KEFW
UGxheWVySXRlbU91dHB1dCAqKW91dHB1dAoreworICAgIEFTU0VSVChbb3V0cHV0IGlzS2luZE9m
Q2xhc3M6UEFMOjpnZXRBVlBsYXllckl0ZW1WaWRlb091dHB1dENsYXNzKCldKTsKKyAgICBhdXRv
KiB2aWRlb091dHB1dCA9IChBVlBsYXllckl0ZW1WaWRlb091dHB1dCopb3V0cHV0OworICAgIFt2
aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bv
c3NpYmxlXTsKKworICAgIGNhbGxPbk1haW5SdW5Mb29wKFtwYXJlbnQgPSBfcGFyZW50XSB7Cisg
ICAgICAgIGlmIChwYXJlbnQpCisgICAgICAgICAgICBwYXJlbnQtPnB1cmdlVmlkZW9GcmFtZUVu
dHJpZXMoKTsKKyAgICB9KTsKK30KKworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtl
eVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBj
b250ZXh0Oih2b2lkKiljb250ZXh0Cit7CisgICAgaWYgKCFba2V5UGF0aCBpc0VxdWFsVG9TdHJp
bmc6QCJyYXRlIl0pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmF0ZVZhbHVlID0gKE5T
TnVtYmVyKilbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdLZXldOworICAg
IEFTU0VSVChbcmF0ZVZhbHVlIGlzS2luZE9mQ2xhc3M6TlNOdW1iZXIuY2xhc3NdKTsKKyAgICBh
dXRvIHJhdGUgPSByYXRlVmFsdWUuZmxvYXRWYWx1ZTsKKworICAgIGVuc3VyZU9uTWFpblJ1bkxv
b3AoW3BhcmVudCA9IF9wYXJlbnQsIHJhdGVdIHsKKyAgICAgICAgaWYgKHBhcmVudCkKKyAgICAg
ICAgICAgIHBhcmVudC0+cmF0ZUNoYW5nZWQocmF0ZSk7CisgICAgfSk7Cit9CitAZW5kCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsT3V0cHV0
RGVsZWdhdGVRdWV1ZSgpCit7CisgICAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUXVl
dWU7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hf
b25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBnbG9iYWxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVl
X2NyZWF0ZSgiV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBxdWV1ZSIsIERJU1BBVENIX1FV
RVVFX1NFUklBTCk7CisgICAgfSk7CisgICAgcmV0dXJuIGdsb2JhbFF1ZXVlOworfQorCitSZWY8
UXVldWVkVmlkZW9PdXRwdXQ+IFF1ZXVlZFZpZGVvT3V0cHV0OjpjcmVhdGUoQVZQbGF5ZXJJdGVt
KiBpdGVtLCBBVlBsYXllciogcGxheWVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFF1
ZXVlZFZpZGVvT3V0cHV0KGl0ZW0sIHBsYXllcikpOworfQorCitRdWV1ZWRWaWRlb091dHB1dDo6
UXVldWVkVmlkZW9PdXRwdXQoQVZQbGF5ZXJJdGVtKiBpdGVtLCBBVlBsYXllciogcGxheWVyKQor
ICAgIDogbV9wbGF5ZXJJdGVtKGl0ZW0pCisgICAgLCBtX3BsYXllcihwbGF5ZXIpCisgICAgLCBt
X2RlbGVnYXRlKGFkb3B0TlMoW1tXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIGFsbG9jXSBp
bml0V2l0aFBhcmVudDp0aGlzXSkpCit7CisgICAgbV92aWRlb091dHB1dCA9IGFkb3B0TlMoW1BB
TDo6YWxsb2NBVlBsYXllckl0ZW1WaWRlb091dHB1dEluc3RhbmNlKCkgaW5pdFdpdGhQaXhlbEJ1
ZmZlckF0dHJpYnV0ZXM6bmlsXSk7CisgICAgW21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bV9k
ZWxlZ2F0ZS5nZXQoKSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCldOworICAgIFtt
X3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZUFzU29vbkFz
UG9zc2libGVdOworCisgICAgW21fcGxheWVySXRlbSBhZGRPdXRwdXQ6bV92aWRlb091dHB1dC5n
ZXQoKV07CisKKyAgICBbbV9wbGF5ZXIgYWRkT2JzZXJ2ZXI6bV9kZWxlZ2F0ZS5nZXQoKSBmb3JL
ZXlQYXRoOkAicmF0ZSIgb3B0aW9uczooTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyB8IE5T
S2V5VmFsdWVPYnNlcnZpbmdPcHRpb25Jbml0aWFsKSBjb250ZXh0Om5pbF07CisKKyAgICBtX3Zp
ZGVvVGltZWJhc2VPYnNlcnZlciA9IFttX3BsYXllciBhZGRQZXJpb2RpY1RpbWVPYnNlcnZlckZv
ckludGVydmFsOlBBTDo6Q01UaW1lTWFrZSgxLCA2MCkgcXVldWU6Z2xvYmFsT3V0cHV0RGVsZWdh
dGVRdWV1ZSgpIHVzaW5nQmxvY2s6W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb3Rl
Y3RlZERlbGVnYXRlID0gbV9kZWxlZ2F0ZSwgcHJvdGVjdGVkT3V0cHV0ID0gbV92aWRlb091dHB1
dF0oQ01UaW1lIGN1cnJlbnRUaW1lKSBtdXRhYmxlIHsKKworICAgICAgICAvLyBQZXJpb2RpY2Fs
bHkgY2hlY2sgZm9yIG5ldyBhdmFpbGFibGUgcGl4ZWwgYnVmZmVycy4KKyAgICAgICAgW3Byb3Rl
Y3RlZERlbGVnYXRlIG91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2U6cHJvdGVjdGVkT3V0cHV0Lmdl
dCgpXTsKKworICAgICAgICAvLyBBbmQgcHVyZ2UgdGhlIGJhY2sgYnVmZmVyIG9mIHBhc3QgZnJh
bWVzLgorICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSB3ZWFrVGhpcywgdGlt
ZSA9IFBBTDo6dG9NZWRpYVRpbWUoY3VycmVudFRpbWUpXSB7CisgICAgICAgICAgICBpZiAod2Vh
a1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPnB1cmdlSW1hZ2VzQmVmb3JlVGltZSh0
aW1lKTsKKyAgICAgICAgfSk7CisgICAgfV07Cit9CisKK1F1ZXVlZFZpZGVvT3V0cHV0Ojp+UXVl
dWVkVmlkZW9PdXRwdXQoKQoreworICAgIGludmFsaWRhdGUoKTsKK30KKwordm9pZCBRdWV1ZWRW
aWRlb091dHB1dDo6aW52YWxpZGF0ZSgpCit7CisgICAgaWYgKG1fdmlkZW9UaW1lYmFzZU9ic2Vy
dmVyKSB7CisgICAgICAgIFttX3BsYXllciByZW1vdmVUaW1lT2JzZXJ2ZXI6bV92aWRlb1RpbWVi
YXNlT2JzZXJ2ZXIuZ2V0KCldOworICAgICAgICBtX3ZpZGVvVGltZWJhc2VPYnNlcnZlciA9IG5p
bDsKKyAgICB9CisKKyAgICBjYW5jZWxOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKworICAgIGlm
IChtX3ZpZGVvT3V0cHV0KSB7CisgICAgICAgIFttX3BsYXllckl0ZW0gcmVtb3ZlT3V0cHV0Om1f
dmlkZW9PdXRwdXQuZ2V0KCldOworICAgICAgICBbbV92aWRlb091dHB1dCBzZXREZWxlZ2F0ZTpu
aWwgcXVldWU6bmlsXTsKKyAgICAgICAgbV92aWRlb091dHB1dCA9IG5pbDsKKyAgICB9CisKKyAg
ICBpZiAobV9wbGF5ZXIpIHsKKyAgICAgICAgW21fcGxheWVyIHJlbW92ZU9ic2VydmVyOm1fZGVs
ZWdhdGUuZ2V0KCkgZm9yS2V5UGF0aDpAInJhdGUiXTsKKyAgICAgICAgbV9wbGF5ZXIgPSBuaWw7
CisgICAgfQorCisgICAgbV9wbGF5ZXJJdGVtID0gbmlsOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgTWF5YmVDb25zdE1hcCwgdHlwZW5hbWUgTWF5YmVDb25zdEl0ZXIgPSBkZWNsdHlwZShNYXli
ZUNvbnN0TWFwKCkuYmVnaW4oKSk+CitNYXliZUNvbnN0SXRlciBmaW5kSW1hZ2VGb3JUaW1lKE1h
eWJlQ29uc3RNYXAmIG1hcCwgY29uc3QgTWVkaWFUaW1lJiB0aW1lKQoreworICAgIC8vIE91dHB1
dHMgb2YgQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQgaGF2ZSBhIGRpc3BsYXkgdGltZSwgYnV0IG5v
dCBhIGR1cmF0aW9uOyB0aGV5IGFyZSB2YWxpZAorICAgIC8vIHVudGlsIHRoZSBhcnJpdmFsIG9m
IGEgbGF0ZXIgZnJhbWUuIEZpbmQgdGhpcyBmcmFtZSBlZmZpY2llbnRseSB1c2luZyBzZXQ6OnVw
cGVyX2JvdW5kIHRvIGZpbmQKKyAgICAvLyB0aGUgbmV4dCBkaXNwbGF5YWJsZSBmcmFtZSwgYW5k
IHdhbGsgYmFja3dhcmRzIGJ5IG9uZSB0byBmaW5kIGEgZnJhbWUgZm9yIHRoZSB0YXJnZXQgdGlt
ZS4KKyAgICBpZiAobWFwLmVtcHR5KCkpCisgICAgICAgIHJldHVybiBtYXAuZW5kKCk7CisKKyAg
ICBhdXRvIGl0ZXIgPSBtYXAudXBwZXJfYm91bmQodGltZSk7CisgICAgaWYgKGl0ZXIgPT0gbWFw
LmJlZ2luKCkpCisgICAgICAgIHJldHVybiBtYXAuZW5kKCk7CisKKyAgICByZXR1cm4gLS1pdGVy
OworfQorCitib29sIFF1ZXVlZFZpZGVvT3V0cHV0OjpoYXNJbWFnZUZvclRpbWUoY29uc3QgTWVk
aWFUaW1lJiB0aW1lKSBjb25zdAoreworICAgIHJldHVybiBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlk
ZW9GcmFtZXMsIHRpbWUpICE9IG1fdmlkZW9GcmFtZXMuZW5kKCk7Cit9CisKK2F1dG8gUXVldWVk
VmlkZW9PdXRwdXQ6OnRha2VWaWRlb0ZyYW1lRW50cnlGb3JUaW1lKGNvbnN0IE1lZGlhVGltZSYg
dGltZSkgLT4gVmlkZW9GcmFtZUVudHJ5Cit7CisgICAgYXV0byBpdGVyID0gZmluZEltYWdlRm9y
VGltZShtX3ZpZGVvRnJhbWVzLCB0aW1lKTsKKyAgICBpZiAoaXRlciA9PSBtX3ZpZGVvRnJhbWVz
LmVuZCgpKQorICAgICAgICByZXR1cm4geyBudWxscHRyLCBNZWRpYVRpbWU6OmludmFsaWRUaW1l
KCkgfTsKKworICAgIFZpZGVvRnJhbWVFbnRyeSBlbnRyeSA9IHsgV1RGTW92ZShpdGVyLT5zZWNv
bmQpLCBpdGVyLT5maXJzdCB9OworCisgICAgLy8gUHVyZ2UgYWxsIGZyYW1lcyBiZWZvcmUgYHRp
bWVgLCBzbyB0aGF0IHJlcGVhdGVkIGNhbGxzIHdpdGggdGhlIHNhbWUgdGltZSBkb24ndCByZXR1
cm4KKyAgICAvLyBzdWNjZXNzaXZlbHkgZWFybGllciBpbWFnZXMuCisgICAgbV92aWRlb0ZyYW1l
cy5lcmFzZShtX3ZpZGVvRnJhbWVzLmJlZ2luKCksICsraXRlcik7CisKKyAgICByZXR1cm4gZW50
cnk7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmFkZEN1cnJlbnRJbWFnZUNoYW5nZWRP
YnNlcnZlcihjb25zdCBDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXImIG9ic2VydmVyKQorewor
ICAgIG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycy5hZGQob2JzZXJ2ZXIpOworICAgIGNv
bmZpZ3VyZU5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworCisgICAgW21fdmlkZW9PdXRwdXQgcmVx
dWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJsZV07Cit9CisK
K3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmNvbmZpZ3VyZU5leHRJbWFnZVRpbWVPYnNlcnZlcigp
Cit7CisgICAgaWYgKG1fbmV4dEltYWdlVGltZWJhc2VPYnNlcnZlcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byBjdXJyZW50VGltZSA9IFBBTDo6dG9NZWRpYVRpbWUoW21fcGxheWVyIGN1
cnJlbnRUaW1lXSk7CisgICAgYXV0byBpdGVyID0gZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJh
bWVzLCBjdXJyZW50VGltZSk7CisgICAgaWYgKGl0ZXIgPT0gbV92aWRlb0ZyYW1lcy5lbmQoKSB8
fCArK2l0ZXIgPT0gbV92aWRlb0ZyYW1lcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBuZXh0SW1hZ2VUaW1lID0gaXRlci0+Zmlyc3Q7CisKKyAgICBtX25leHRJbWFnZVRpbWVi
YXNlT2JzZXJ2ZXIgPSBbbV9wbGF5ZXIgYWRkQm91bmRhcnlUaW1lT2JzZXJ2ZXJGb3JUaW1lczpA
W1tOU1ZhbHVlIHZhbHVlV2l0aENNVGltZTpQQUw6OnRvQ01UaW1lKGN1cnJlbnRUaW1lKV1dIHF1
ZXVlOmdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9LCBwcm90ZWN0ZWREZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIHByb3RlY3Rl
ZE91dHB1dCA9IG1fdmlkZW9PdXRwdXRdICgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWlu
UnVuTG9vcChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0geworICAgICAgICAgICAgaWYg
KHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5uZXh0SW1hZ2VUaW1lUmVhY2hl
ZCgpOworICAgICAgICB9KTsKKyAgICB9XTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6
Y2FuY2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCkKK3sKKyAgICBpZiAoIW1fbmV4dEltYWdlVGlt
ZWJhc2VPYnNlcnZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fcGxheWVyIHJlbW92ZVRp
bWVPYnNlcnZlcjptX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIuZ2V0KCldOworICAgIG1fbmV4
dEltYWdlVGltZWJhc2VPYnNlcnZlciA9IG5pbDsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1
dDo6bmV4dEltYWdlVGltZVJlYWNoZWQoKQoreworICAgIGNhbmNlbE5leHRJbWFnZVRpbWVPYnNl
cnZlcigpOworICAgIGF1dG8gb2JzZXJ2ZXJzID0gc3RkOjpleGNoYW5nZShtX2N1cnJlbnRJbWFn
ZUNoYW5nZWRPYnNlcnZlcnMsIHsgfSk7CisgICAgb2JzZXJ2ZXJzLmZvckVhY2goW10oYXV0byYg
b2JzZXJ2ZXIpIHsgb2JzZXJ2ZXIoKTsgfSk7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6
OmFkZFZpZGVvRnJhbWVFbnRyaWVzKFZlY3RvcjxWaWRlb0ZyYW1lRW50cnk+JiYgdmlkZW9GcmFt
ZUVudHJpZXMpCit7CisgICAgYm9vbCBuZWVkc0ltYWdlRm9yQ3VycmVudFRpbWVDaGFuZ2VkID0g
ZmFsc2U7CisgICAgYm9vbCBoYXNDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzID0gbV9jdXJy
ZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzLmNvbXB1dGVTaXplKCk7CisgICAgTWVkaWFUaW1lIGN1
cnJlbnRUaW1lID0gaGFzQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycyA/IFBBTDo6dG9NZWRp
YVRpbWUoW21fcGxheWVyIGN1cnJlbnRUaW1lXSkgOiBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCk7
CisKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogdmlkZW9GcmFtZUVudHJpZXMpIHsKKyAgICAgICAg
aWYgKGhhc0N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMgJiYgZW50cnkuZGlzcGxheVRpbWUg
PD0gY3VycmVudFRpbWUpCisgICAgICAgICAgICBuZWVkc0ltYWdlRm9yQ3VycmVudFRpbWVDaGFu
Z2VkID0gdHJ1ZTsKKyAgICAgICAgbV92aWRlb0ZyYW1lcy5lbXBsYWNlKGVudHJ5LmRpc3BsYXlU
aW1lLCBXVEZNb3ZlKGVudHJ5LnBpeGVsQnVmZmVyKSk7CisgICAgfQorCisgICAgaWYgKG5lZWRz
SW1hZ2VGb3JDdXJyZW50VGltZUNoYW5nZWQpCisgICAgICAgIG5leHRJbWFnZVRpbWVSZWFjaGVk
KCk7CisgICAgZWxzZSBpZiAoaGFzQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycykKKyAgICAg
ICAgY29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisKKyAgICBpZiAobV9wYXVzZWQp
CisgICAgICAgIFttX3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25PZk1lZGlhRGF0YUNo
YW5nZUFzU29vbkFzUG9zc2libGVdOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpwdXJn
ZVZpZGVvRnJhbWVFbnRyaWVzKCkKK3sKKyAgICBjYW5jZWxOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIo
KTsKKyAgICBtX3ZpZGVvRnJhbWVzLmNsZWFyKCk7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRw
dXQ6OnB1cmdlSW1hZ2VzQmVmb3JlVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpCit7CisgICAg
bV92aWRlb0ZyYW1lcy5lcmFzZShtX3ZpZGVvRnJhbWVzLmJlZ2luKCksIGZpbmRJbWFnZUZvclRp
bWUobV92aWRlb0ZyYW1lcywgdGltZSkpOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0Ojpy
YXRlQ2hhbmdlZChmbG9hdCByYXRlKQoreworICAgIG1fcGF1c2VkID0gIXJhdGU7CisKKyAgICBp
ZiAobV9wYXVzZWQpCisgICAgICAgIFttX3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25P
Zk1lZGlhRGF0YUNoYW5nZUFzU29vbkFzUG9zc2libGVdOworfQorCit9CisKKyNlbmRpZgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggYzZhMGZiZDAwYWJkYmU5ZGEwNzQyMGRjMTAxYTliY2ZmYjExODg3Yi4uYzI3ZGIzYmQ5
YzE3MjIzMWI3MWFhOWMwMTAwMjc4NGQ2ZDU1NWVjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDIyLTAxLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtD
b2NvYV0gclZGQygpIGlzbid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZp
ZGVvLWZyYW1lLWxvYWRzdGFydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlh
L3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1l
ZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay5odG1sOiBBZGRlZC4KKwogMjAyMi0w
MS0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8v
YnJpYW5wZWlyaXMuZ2l0aHViLmlvL3NwYXRpYWwtYXVkaW8tdGVzdC8/cmFtcGVkIHN0b3BzIHBs
YXlpbmcgYWZ0ZXIgYSBmZXcgc2Vjb25kcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEv
cmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
bWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRjMDJmNjZlYmFiZGZiNTc0ZDlmOWZmMWQ1YjgxZmM4MDg5MjAzNmEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK1JVTih2aWRlby5yZXF1ZXN0VmlkZW9GcmFt
ZUNhbGxiYWNrKGNhbGxiYWNrKSkKK1JVTih2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRl
byIsICJjb250ZW50L3Rlc3QiKSkKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK0VORCBPRiBURVNUCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0
YXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFy
dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY1MGIzZjFhOGM2MTFhMjZmY2QwYTU0ZWVlMGZiMDJjNTVlNjZm
NjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZy
YW1lLWxvYWRzdGFydC5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+cmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQ8L3Rp
dGxlPgorICAgIDxzY3JpcHQgc3JjPSJ2aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0ibWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50ID0+IHsKKyAgICAgICAgZmlu
ZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgIGxldCB2aWRlb0ZyYW1lUHJvbWlzZSA9IG5ldyBQ
cm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgn
UlVOKHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soY2FsbGJhY2spKScpOworICAgICAg
ICAgICAgdmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhyZXNvbHZlKTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJj
b250ZW50L3Rlc3QiKScpOworCisgICAgICAgIGF3YWl0IHNob3VsZFJlc29sdmUodmlkZW9GcmFt
ZVByb21pc2UpOworCisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9KTsKKyAgICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorICAgIDx2aWRlbyBtdXRlZD48L3ZpZGVvPgorPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmJhMDE1ZjI2YjgzYWM5OWFmZjMwNTY4YjMyZTY2OTQxNTA2NGM3NWQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWstZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsOCBAQAorCitSVU4odmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlk
ZW8iLCAiY29udGVudC90ZXN0IikpCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK1JVTih2aWRlby5y
ZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGNhbGxiYWNrKSkKK1JVTih2aWRlby5jdXJyZW50VGlt
ZSA9IDAuNSkKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay5odG1sIGIvTGF5b3V0
VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1zZWVrLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTky
NThmMDM2MzhjY2Y4YTZjOGYzNDYwZDcxNDMzNGE0NzkwOTU4YQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+cmVx
dWVzdC12aWRlby1mcmFtZS1zZWVrPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0idmlkZW8tdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Im1lZGlhLWZpbGUuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3lu
YyBldmVudCA9PiB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAgICBydW4o
J3ZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpJyk7CisK
KyAgICAgICAgYXdhaXQgd2FpdEZvcih2aWRlbywgJ2NhbnBsYXl0aHJvdWdoJyk7CisKKyAgICAg
ICAgbGV0IHZpZGVvRnJhbWVQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkg
PT4geworICAgICAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8ucmVxdWVzdFZpZGVvRnJh
bWVDYWxsYmFjayhjYWxsYmFjaykpJyk7CisgICAgICAgICAgICB2aWRlby5yZXF1ZXN0VmlkZW9G
cmFtZUNhbGxiYWNrKHJlc29sdmUpOworICAgICAgICB9KTsKKworICAgICAgICBydW4oJ3ZpZGVv
LmN1cnJlbnRUaW1lID0gMC41Jyk7CisKKyAgICAgICAgYXdhaXQgc2hvdWxkUmVzb2x2ZSh2aWRl
b0ZyYW1lUHJvbWlzZSk7CisKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0pOworICAgIDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHZpZGVvIG11dGVkPjwvdmlkZW8+Cis8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448874</attachid>
            <date>2022-01-11 13:31:24 -0800</date>
            <delta_ts>2022-01-13 09:14:52 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235006-20220111133123.patch</filename>
            <type>text/plain</type>
            <size>48586</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZjYjg5ZjUzNzY1NTk1
OWZiOWM2ZjMwZWQwMTUyOTg3ODYwMGVkYS4uZjBlZDU2YjVkM2E4Y2JmNjdhNTA3ZWQ3YWNjYzBk
ZjExZTlkNmQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIyLTAxLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gclZGQygpIGlz
bid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
bG9hZHN0YXJ0Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sCisKKyAgICAgICAgQWRkIGEgbmV3IHV0aWxpdHkgY2xhc3MsIFF1ZXVlZFZpZGVv
T3V0cHV0LCB3aGljaCB3aWxsIHB1bGwgcGl4ZWwgYnVmZmVycyBvdXQgb2YgYW4gQVZQbGF5ZXJJ
dGVtVmlkZW9PdXRwdXQKKyAgICAgICAgcHJlLWVtcHRpdmVseS4gT25jZSB0aG9zZSBwaXhlbCBi
dWZmZXJzIGFyZSBlbnF1ZXVlZCBsb2NhbGx5LCB0aGVpciBhc3NvY2lhdGVkIHRpbWluZyBpbmZv
cm1hdGlvbiBjYW4gYmUgdXNlZCB0bworICAgICAgICBmaXJlIGEgY2FsbGJhY2sgZm9yIHRoYXQg
YnVmZmVyJ3MgZGlzcGxheSB0aW1lLgorCisgICAgICAgIFByZXZpb3VzbHksIHBhaW50cyB3ZXJl
IGJsb2NrZWQgZnJvbSBwdWxsaW5nIG5ldyBwaXhlbCBidWZmZXJzIGZyb20gdGhlIHZpZGVvIG91
dHB1dC4gV2l0aCB0aGUgUXVldWVkVmlkZW9PdXRwdXQKKyAgICAgICAgY2xhc3MsIHRoaXMgaXMg
bm8gbG9uZ2VyIG5lY2Vzc2FyeS4gVGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHdpbGwgbm90aWZ5IGl0
cyBjbGllbnQgd2hlbiB0aGUgaW1hZ2UgZm9yIGN1cnJlbnRUaW1lCisgICAgICAgIGNoYW5nZXMs
IGFuZCBvdGhlciBjbGllbnRzIGNhbiBmcmVlbHkgYXNrIGZvciB0aGUgY3VycmVudFRpbWUncyBp
bWFnZS4KKworICAgICAgICBUbyBjdXJiIHJ1bmF3YXkgbWVtb3J5IGdyb3d0aCwgZnJhbWVzIGFy
ZSBwdXJnZWQgYXMgc29vbiBhcyBhIG5ldyBpbWFnZSBmb3IgdGhlIGN1cnJlbnQgdGltZSBpcyBh
dmFpbGFibGUsIGFuZCB3aGVuCisgICAgICAgIHRoZSB2aWRlbyBvdXRwdXQgc2lnbmFscyB0aGF0
IGl0cyBvd24gcXVldWVzIHdlcmUgcHVyZ2VkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjYW5jZWxWaWRlb0ZyYW1lQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2VydmljZVJlcXVl
c3RWaWRlb0ZyYW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omhhc0F2YWlsYWJsZVZpZGVvRnJh
bWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c3RhcnRWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tOZXdWaWRlb0Zy
YW1lTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZp
ZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1ZmZlckZvckN1
cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29sb3JTcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvdXRwdXRNZWRp
YURhdGFXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Omdsb2JhbFB1bGxEZWxlZ2F0ZVF1
ZXVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OndhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIGluaXRXaXRoUGxheWVyOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIG91dHB1dE1lZGlh
RGF0YVdpbGxDaGFuZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVs
ZWdhdGUgb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOl0pOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVl
ZFZpZGVvT3V0cHV0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXRE
ZWxlZ2F0ZSBpbml0V2l0aFBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRw
dXREZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOl0pOgorICAgICAgICAoLVtXZWJR
dWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDpdKToKKyAg
ICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBvYnNlcnZlVmFsdWVGb3JLZXlQ
YXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoV2ViQ29yZTo6Z2xvYmFs
T3V0cHV0RGVsZWdhdGVRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpRdWV1ZWRW
aWRlb091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6flF1ZXVl
ZFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmRlY2x0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OlF1ZXVlZFZpZGVvT3V0cHV0OjpoYXNJbWFnZUZvclRpbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnRha2VWaWRlb0ZyYW1lRW50cnlGb3JUaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjphZGRDdXJyZW50SW1hZ2VDaGFuZ2Vk
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmNvbmZpZ3Vy
ZU5leHRJbWFnZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0
OjppbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRW
aWRlb091dHB1dDo6YWRkVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UXVl
dWVkVmlkZW9PdXRwdXQ6OnB1cmdlVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnB1cmdlSW1hZ2VzQmVmb3JlVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cmF0ZUNoYW5nZWQpOgorCiAyMDIxLTEyLTE0ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtSZWZhY3Rvcl0gQWRv
cHQgTG9nZ2VySGVscGVyIGluIExvZ2dpbmcgRU1FIGNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmlu
ZGV4IDBlNzUzMTI2NmVhY2FiMGI1N2NiNzIwNGQ4YTVlMjcxNzdkODYxMDEuLjg5NmE2NzFmNGQ1
OGZiMTAyNjdlMzQ5NmQ3ZDg0YjI0NGEwYmYyMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDIyLTAxLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gclZGQygpIGlzbid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBs
b2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUw
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBwYWwv
c3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oOgorCiAyMDIyLTAxLTEwICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3RhcnQgdXNpbmcgQysr
MjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL0FWRm91bmRh
dGlvblNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9u
U1BJLmgKaW5kZXggOGI3ZmYxMjM3YTBjOGMyMmY4ODJmYTBiZmVlZThiZDNhZDRjYjcxMi4uNGY5
Y2JlNmQzZDI3ZWM3ZDFhM2RkN2UxZDgyNzcwZTM3MTg4NDE0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmgKQEAgLTQwLDkgKzQw
LDEwIEBACiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZNZWRpYVNlbGVjdGlvbkdyb3VwX1ByaXZh
dGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVk91dHB1dENvbnRleHRfUHJpdmF0ZS5oPgog
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWT3V0cHV0RGV2aWNlLmg+Ci0jaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZQbGF5ZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVy
SXRlbU91dHB1dF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVt
X1ByaXZhdGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckxheWVyX1ByaXZhdGUu
aD4KKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllcl9Qcml2YXRlLmg+CiAKICNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQpAQCAt
NjYsNiArNjcsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9FTkQKICNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVkNhcHR1cmVTZXNzaW9uLmg+CiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXIuaD4K
ICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW0uaD4KKyNpbXBvcnQgPEFWRm91bmRh
dGlvbi9BVlBsYXllckl0ZW1PdXRwdXQuaD4KIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0lOVEVS
U1RJVElBTF9FVkVOVFMpCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJbnRlcnN0aXRp
YWxFdmVudENvbnRyb2xsZXIuaD4KQEAgLTkyLDYgKzk0LDExIEBAIHR5cGVkZWYgTlNTdHJpbmcg
KiBBVlZpZGVvUmFuZ2UgTlNfVFlQRURfRU5VTTsKIEBlbmQKICNlbmRpZgogCitAaW50ZXJmYWNl
IEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IChBVlBsYXllckl0ZW1WaWRlb091dHB1dEVhcmxpZXN0
VGltZSkKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQ01UaW1lIGVhcmxpZXN0QXZh
aWxhYmxlUGl4ZWxCdWZmZXJJdGVtVGltZTsKKy0gKHZvaWQpcmVxdWVzdE5vdGlmaWNhdGlvbk9m
TWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJsZTsKK0BlbmQKKwogI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIE5TX0FTU1VN
RV9OT05OVUxMX0JFR0lOCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggOGY3YmNiZGE0NjdhMjFhZjYyYWJiMTk1NjY2ZTU4OWI0NzYy
YmM3YS4uN2M5YjViZTNiYmJlYjFjY2QxNGEzM2M1MDEzNTM2MTQyMmRmM2VkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDQ0
OCw2ICs0NDQ4LDggQEAKIAkJQ0QxRjlCNEQyNzBEMDNBOTAwNjE3RUI2IC8qIFNjcm9sbEV4dGVu
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMUY5
QjRDMjcwRDAzQTkwMDYxN0VCNiAvKiBTY3JvbGxFeHRlbnRzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0QxRjlCN0QyNzBFNjY3ODAwNjE3RUI2
IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlCN0MyNzBFNjY3ODAwNjE3RUI2IC8qIEhUTUxBbmNo
b3JFbGVtZW50SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUNEMUY5QjgwMjcwRTY3MUEwMDYxN0VCNiAvKiBTVkdFbGVtZW50SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlC
N0YyNzBFNjcxQTAwNjE3RUI2IC8qIFNWR0VsZW1lbnRJbmxpbmVzLmggKi87IH07CisJCUNEMjBF
RDNDMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyMEVEM0EyNzg3OEZGQjAwMzhCRTQ0
IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggKi87IH07CisJCUNEMjBFRDNEMjc4NzhGRkIwMDM4QkU0
NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMjBFRDNCMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091
dHB1dC5tbSAqLzsgfTsKIAkJQ0QyMjVDMEIxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VS
TFNlc3Npb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRDIyNUMwOTFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSAqLzsg
fTsKIAkJQ0QyMjVDMEMxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjI1QzBBMUM0
NkZCRjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0QyN0FFNTAyMkE5ODY4NzAwOTQ3RkY5
IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEMjdBRTRFMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0
aW9uU2Vzc2lvblZULmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTE1ODYzLDYgKzE1ODY1LDggQEAKIAkJQ0QxRjlCNzAyNzBERkE3RjAwNjE3RUI2
IC8qIE1lZGlhS2V5TWVzc2FnZUV2ZW50SW5pdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTWVkaWFLZXlNZXNzYWdlRXZl
bnRJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QxRjlCN0MyNzBFNjY3
ODAwNjE3RUI2IC8qIEhUTUxBbmNob3JFbGVtZW50SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
VE1MQW5jaG9yRWxlbWVudElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0QxRjlCN0YyNzBFNjcxQTAwNjE3RUI2IC8qIFNWR0VsZW1lbnRJbmxpbmVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR0VsZW1lbnRJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEMjBFRDNBMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBRdWV1ZWRWaWRlb091dHB1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDRDIwRUQzQjI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBRdWV1ZWRWaWRlb091dHB1dC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0QyMjVDMDkxQzQ2RkJGNDAwMTQwNzYxIC8qIFdlYkNvcmVOU1VSTFNlc3Np
b24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlTlNV
UkxTZXNzaW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDIyNUMwQTFDNDZG
QkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJDb3JlTlNVUkxTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEMjdBRTRFMjJBOTg2ODcwMDk0N0ZGOSAvKiBJbWFnZVJvdGF0aW9uU2Vzc2lv
blZULmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlUm90YXRpb25TZXNzaW9uVlQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMwNjEyLDYgKzMwNjE2LDggQEAKIAkJCQlDREM4QjVBNTE4
MDQ3NEY3MDAxNkU2ODUgLyogTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oICovLAogCQkJCUNE
QzhCNUE0MTgwNDc0RjcwMDE2RTY4NSAvKiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tICov
LAogCQkJCTdBMjlGNTcxMThDNjk1MTQwMDREMEY4MSAvKiBPdXRPZkJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGLmggKi8sCisJCQkJQ0QyMEVEM0EyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVv
T3V0cHV0LmggKi8sCisJCQkJQ0QyMEVEM0IyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVv
T3V0cHV0Lm1tICovLAogCQkJCUNERjk5NEZBMjRDMTJBNkEwMDJFQTA2MiAvKiBTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLmggKi8sCiAJCQkJQ0RGOTk0RkIyNEMxMkE2QTAwMkVBMDYyIC8qIFNv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gKi8sCiAJCQkJQ0RDOEI1QTkxODA0N0ZGMTAwMTZF
Njg1IC8qIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggKi8sCkBAIC0zNjU4MCw2ICszNjU4
Niw3IEBACiAJCQkJRUIwRkI3MEQyNzBEMEIyRTAwRjc4MTBEIC8qIFB1c2hTdWJzY3JpcHRpb25P
cHRpb25zSW5pdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFGNTk0MUVERjY5RDMw
MDQxMEQyNyAvKiBRdWFsaWZpZWROYW1lQ2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMjBF
RDNDMjc4NzhGRkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTE1RTMxRjQxRTBDQjBCNTAwNEIzNzFDIC8qIFF1aWNrTG9vay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOUJBRUU5MkMyMjM4OEE3RDAwNDE1N0E5IC8qIFF1aXJrcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzc5RTM3MTcxMzczNkE2NjAwQjlFOTE5IC8qIFF1b3RlZFByaW50YWJsZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zODU2Myw2ICszODU3MCw3IEBACiAJCQkJQUExMkRGNDkxNzQzREY4
MzAwNERBRkRGIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUNEQTI5QTMwMUNCRjc0RDQwMDkwMUNDRiAvKiBQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEQTI5QTE2MUNCREE1NkMwMDkwMUND
RiAvKiBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlD
RDIwRUQzRDI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQubW0gaW4gU291cmNl
cyAqLywKIAkJCQk0MTkyNDI0OTIxMjdCOTNFMDA2MzRGQ0YgLyogUmVhbHRpbWVPdXRnb2luZ1Zp
ZGVvU291cmNlQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkwNzFDMDA0QjI3MEI4NjQ5MDBE
MDI3QzcgLyogUmVwbGF5S2l0Q2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVD
MkIxQUVDMjIzOTdFQkMwMEI5MUNGNyAvKiBSZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDk0
OGQxZDQxNzQ4ZTlmYWQyOTIyY2FmNzBjZWI2NjhiNDg4ZTk5NDEuLjQ2MjNkMThhYjI3M2FmYWI1
YTcyNWJiNGI4NDYxNTRkYjZmZjdiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9F
bGVtZW50LmNwcApAQCAtNjAzLDEzICs2MDMsMTYgQEAgdW5zaWduZWQgSFRNTFZpZGVvRWxlbWVu
dDo6cmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhSZWY8VmlkZW9GcmFtZVJlcXVlc3RDYWxsYmEK
IAogdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpjYW5jZWxWaWRlb0ZyYW1lQ2FsbGJhY2sodW5zaWdu
ZWQgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIGluZGV4ID0gbV92aWRlb0ZyYW1lUmVxdWVzdHMu
ZmluZE1hdGNoaW5nKFtpZGVudGlmaWVyXShhdXRvJiByZXF1ZXN0KSB7IHJldHVybiByZXF1ZXN0
LT5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0pOwotICAgIGlmIChpbmRleCA9PSBub3RGb3Vu
ZCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX2lzUnVubmluZ1ZpZGVvRnJhbWVSZXF1ZXN0
cykgewotICAgICAgICBtX3ZpZGVvRnJhbWVSZXF1ZXN0c1tpbmRleF0tPmNhbmNlbGxlZCA9IHRy
dWU7CisgICAgLy8gU2VhcmNoIGZpcnN0IHRoZSByZXF1ZXN0cyBjdXJyZW50bHkgYmVpbmcgc2Vy
dmljZWQsIGFuZCBtYXJrIHRoZW0gYXMgY2FuY2VsbGVkIGlmIGZvdW5kLgorICAgIGF1dG8gaW5k
ZXggPSBtX3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVlc3RzLmZpbmRNYXRjaGluZyhbaWRlbnRpZmll
cl0oYXV0byYgcmVxdWVzdCkgeyByZXR1cm4gcmVxdWVzdC0+aWRlbnRpZmllciA9PSBpZGVudGlm
aWVyOyB9KTsKKyAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpIHsKKyAgICAgICAgbV9zZXJ2aWNl
ZFZpZGVvRnJhbWVSZXF1ZXN0c1tpbmRleF0tPmNhbmNlbGxlZCA9IHRydWU7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisKKyAgICBpbmRleCA9IG1fdmlkZW9GcmFtZVJlcXVlc3RzLmZpbmRNYXRj
aGluZyhbaWRlbnRpZmllcl0oYXV0byYgcmVxdWVzdCkgeyByZXR1cm4gcmVxdWVzdC0+aWRlbnRp
ZmllciA9PSBpZGVudGlmaWVyOyB9KTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAg
ICAgIHJldHVybjsKICAgICBtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5yZW1vdmUoaW5kZXgpOwogCiAg
ICAgaWYgKG1fdmlkZW9GcmFtZVJlcXVlc3RzLmlzRW1wdHkoKSAmJiBwbGF5ZXIoKSkKQEAgLTYz
OSwyMCArNjQyLDE0IEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6c2VydmljZVJlcXVlc3RWaWRl
b0ZyYW1lQ2FsbGJhY2tzKFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kCiAKICAgICBSZWYgcHJvdGVj
dGVkVGhpcyB7ICp0aGlzIH07CiAKLSAgICAvLyBXZSBzdG9yZSB0aGUgc2l6ZSBiZWZvcmUgY2Fs
bGluZyBjYWxsYmFja3MgYXMgd2UgZG8gbm90IHdhbnQgdG8gY2FsbCBuZXdseSBhZGRlZCBjYWxs
YmFja3MuCi0gICAgYXV0byBjYWxsYmFja0NvdW50ID0gbV92aWRlb0ZyYW1lUmVxdWVzdHMuc2l6
ZSgpOwotCi0gICAgbV9pc1J1bm5pbmdWaWRlb0ZyYW1lUmVxdWVzdHMgPSB0cnVlOwotICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjYWxsYmFja0NvdW50OyArK2luZGV4KSB7Ci0g
ICAgICAgIGF1dG8mIHJlcXVlc3QgPSBtX3ZpZGVvRnJhbWVSZXF1ZXN0c1tpbmRleF07CisgICAg
bV92aWRlb0ZyYW1lUmVxdWVzdHMuc3dhcChtX3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVlc3RzKTsK
KyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVlc3RzKSB7
CiAgICAgICAgIGlmICghcmVxdWVzdC0+Y2FuY2VsbGVkKSB7CiAgICAgICAgICAgICByZXF1ZXN0
LT5jYWxsYmFjay0+aGFuZGxlRXZlbnQoc3RkOjpyb3VuZChub3cubWlsbGlzZWNvbmRzKCkpLCAq
dmlkZW9GcmFtZU1ldGFkYXRhKTsKICAgICAgICAgICAgIHJlcXVlc3QtPmNhbmNlbGxlZCA9IHRy
dWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9pc1J1bm5pbmdWaWRlb0ZyYW1lUmVxdWVzdHMg
PSBmYWxzZTsKLQotICAgIG1fdmlkZW9GcmFtZVJlcXVlc3RzLnJlbW92ZUFsbE1hdGNoaW5nKFtd
KGF1dG8mIGNhbGxiYWNrKSB7IHJldHVybiBjYWxsYmFjay0+Y2FuY2VsbGVkOyB9KTsKKyAgICBt
X3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVlc3RzLmNsZWFyKCk7CiAKICAgICBpZiAobV92aWRlb0Zy
YW1lUmVxdWVzdHMuaXNFbXB0eSgpICYmIHBsYXllcigpKQogICAgICAgICBwbGF5ZXIoKS0+c3Rv
cFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaAppbmRleCA4NTZhZGVhNzhmYjczOThkOGZiNDVmNDQ4YTM1OTFiZGE1NWY5NzJj
Li5mOGQzYjQwMzJkNjAyNDRiNTQwMTc4MzNlYWZhMDA2OTA0ZDFiNDEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaApAQCAtMTcyLDggKzE3Miw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIGJvb2wgY2FuY2VsbGVkIHsgZmFsc2UgfTsKICAgICB9OwogICAgIFZlY3RvcjxVbmlx
dWVSZWY8VmlkZW9GcmFtZVJlcXVlc3Q+PiBtX3ZpZGVvRnJhbWVSZXF1ZXN0czsKKyAgICBWZWN0
b3I8VW5pcXVlUmVmPFZpZGVvRnJhbWVSZXF1ZXN0Pj4gbV9zZXJ2aWNlZFZpZGVvRnJhbWVSZXF1
ZXN0czsKICAgICB1bnNpZ25lZCBtX25leHRWaWRlb0ZyYW1lUmVxdWVzdEluZGV4IHsgMCB9Owot
ICAgIGJvb2wgbV9pc1J1bm5pbmdWaWRlb0ZyYW1lUmVxdWVzdHMgeyBmYWxzZSB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDFlNjU3NTcy
NDY1NDk3MzQzY2RlMmEyNGQ4ZjBkYzZiNGUwMjY3ZTEuLmVlYjg4M2Q3N2M2NjIwMzJhMzkwOTI2
MDAzZDk4M2EyM2FmMDBmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ01UaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4K
IAogT0JKQ19DTEFTUyBBVkFzc2V0SW1hZ2VHZW5lcmF0b3I7CiBPQkpDX0NMQVNTIEFWQXNzZXRU
cmFjazsKQEAgLTY3LDYgKzY4LDcgQEAgY2xhc3MgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGOwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1lZGlhU2VsZWN0aW9u
R3JvdXBBVkZPYmpDOwogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3JtZXJDVjsKK2NsYXNzIFF1ZXVl
ZFZpZGVvT3V0cHV0OwogY2xhc3MgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVv
TGF5ZXJNYW5hZ2VyT2JqQzsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQzsKQEAgLTM0
Nyw3ICszNDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRWaWRlb0ZyYW1lTWV0YWRhdGFH
YXRoZXJpbmcoKSBmaW5hbDsKICAgICB2b2lkIHN0b3BWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJp
bmcoKSBmaW5hbDsKICAgICBzdGQ6Om9wdGlvbmFsPFZpZGVvRnJhbWVNZXRhZGF0YT4gdmlkZW9G
cmFtZU1ldGFkYXRhKCkgZmluYWwgeyByZXR1cm4gc3RkOjpleGNoYW5nZShtX3ZpZGVvRnJhbWVN
ZXRhZGF0YSwgeyB9KTsgfQotICAgIHZvaWQgY2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoQ01U
aW1lKTsKKyAgICB2b2lkIGNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCk7CiAKICAgICBSZXRh
aW5QdHI8QVZVUkxBc3NldD4gbV9hdkFzc2V0OwogICAgIFJldGFpblB0cjxBVlBsYXllcj4gbV9h
dlBsYXllcjsKQEAgLTM2Nyw3ICszNjksNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBSZXRh
aW5QdHI8QVZBc3NldEltYWdlR2VuZXJhdG9yPiBtX2ltYWdlR2VuZXJhdG9yOwotICAgIFJldGFp
blB0cjxBVlBsYXllckl0ZW1WaWRlb091dHB1dD4gbV92aWRlb091dHB1dDsKKyAgICBSZWZQdHI8
UXVldWVkVmlkZW9PdXRwdXQ+IG1fdmlkZW9PdXRwdXQ7CiAgICAgUmV0YWluUHRyPFdlYkNvcmVB
VkZQdWxsRGVsZWdhdGU+IG1fdmlkZW9PdXRwdXREZWxlZ2F0ZTsKICAgICBSZXRhaW5QdHI8Q1ZQ
aXhlbEJ1ZmZlclJlZj4gbV9sYXN0UGl4ZWxCdWZmZXI7CiAgICAgUmVmUHRyPE5hdGl2ZUltYWdl
PiBtX2xhc3RJbWFnZTsKQEAgLTQ2NCw2ICs0NjYsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0
aW9uYWw8VmlkZW9GcmFtZU1ldGFkYXRhPiBtX3ZpZGVvRnJhbWVNZXRhZGF0YTsKICAgICBtdXRh
YmxlIHN0ZDo6b3B0aW9uYWw8TlNUaW1lSW50ZXJ2YWw+IG1fY2FjaGVkU2Vla2FibGVUaW1lUmFu
Z2VzTGFzdE1vZGlmaWVkVGltZTsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8TlNUaW1lSW50
ZXJ2YWw+IG1fY2FjaGVkTGl2ZVVwZGF0ZUludGVydmFsOworICAgIHN0ZDo6dW5pcXVlX3B0cjxP
YnNlcnZlcjx2b2lkKCk+PiBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcjsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGMwNjdjY2U4MDY4NmY3YTFiYzU0MTRiYWY3N2Y3
NTI1MmJmMzQyYzcuLmNmMjQ0MjhlYmFiZGVmN2I3ODkzYzA3NTY2ZWI3NzYzZjhlYWE3MGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNTgsNiArNTgsNyBAQAogI2ltcG9ydCAiUGxhdGZv
cm1TY3JlZW4uaCIKICNpbXBvcnQgIlBsYXRmb3JtVGV4dFRyYWNrLmgiCiAjaW1wb3J0ICJQbGF0
Zm9ybVRpbWVSYW5nZXMuaCIKKyNpbXBvcnQgIlF1ZXVlZFZpZGVvT3V0cHV0LmgiCiAjaW1wb3J0
ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNjcmlwdERpc2FsbG93ZWRT
Y29wZS5oIgogI2ltcG9ydCAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTIwNSwxNiArMjA2LDYgQEAg
LSAoaWQpaW5pdFdpdGhQbGF5ZXI6KFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQz4mJilwbGF5ZXI7CiAtIChCT09MKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3Vy
Y2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVk
UmVzb3VyY2U6KEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopbG9hZGluZ1JlcXVlc3Q7
CiBAZW5kCiAKLUBpbnRlcmZhY2UgV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSA6IE5TT2JqZWN0PEFW
UGxheWVySXRlbU91dHB1dFB1bGxEZWxlZ2F0ZT4gewotICAgIEJpbmFyeVNlbWFwaG9yZSBtX3Nl
bWFwaG9yZTsKLX0KLS0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpcGxheWVyOwotLSAodm9pZClvdXRwdXRNZWRpYURhdGFX
aWxsQ2hhbmdlOihBVlBsYXllckl0ZW1PdXRwdXQgKilzZW5kZXI7Ci0tICh2b2lkKW91dHB1dFNl
cXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0OwotCi1AcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJpbmFyeVNlbWFwaG9yZSYgc2VtYXBob3JlOwotQGVu
ZAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlv
blRvU3RyaW5nKEFWUGxheWVyVGltZUNvbnRyb2xTdGF0dXMgZW51bWVyYXRpb25WYWx1ZSkKIHsK
QEAgLTI2MSwxNiArMjUyLDYgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsTG9hZGVy
RGVsZWdhdGVRdWV1ZSgpCiAgICAgcmV0dXJuIGdsb2JhbFF1ZXVlOwogfQogCi1zdGF0aWMgZGlz
cGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpCi17Ci0gICAgc3RhdGljIGRp
c3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUXVldWU7Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBv
bmNlVG9rZW47Ci0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBnbG9i
YWxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSBx
dWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGdsb2Jh
bFF1ZXVlOwotfQotCiBzdGF0aWMgdm9pZCByZWdpc3RlckZvcm1hdFJlYWRlcklmTmVjZXNzYXJ5
KCkKIHsKICNpZiBFTkFCTEUoV0VCTV9GT1JNQVRfUkVBREVSKQpAQCAtNDY5LDcgKzQ1MCw4IEBA
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6On5NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDKCkKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Jlc291cmNlTG9hZGVy
TWFwKQogICAgICAgICBwYWlyLnZhbHVlLT5pbnZhbGlkYXRlKCk7CiAKLSAgICBbbV92aWRlb091
dHB1dCBzZXREZWxlZ2F0ZTpuaWwgcXVldWU6MF07CisgICAgaWYgKG1fdmlkZW9PdXRwdXQpCisg
ICAgICAgIG1fdmlkZW9PdXRwdXQtPmludmFsaWRhdGUoKTsKIAogICAgIGlmIChtX3ZpZGVvTGF5
ZXIpCiAgICAgICAgIGRlc3Ryb3lWaWRlb0xheWVyKCk7CkBAIC03MDIsNyArNjg0LDcgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpoYXNBdmFpbGFibGVWaWRlb0Zy
YW1lKCkgY29uc3QKICAgICBpZiAoY3VycmVudFJlbmRlcmluZ01vZGUoKSA9PSBNZWRpYVJlbmRl
cmluZ01vZGU6Ok1lZGlhUmVuZGVyaW5nVG9MYXllcikKICAgICAgICAgcmV0dXJuIG1fY2FjaGVk
SXNSZWFkeUZvckRpc3BsYXk7CiAKLSAgICBpZiAobV92aWRlb091dHB1dCAmJiAobV9sYXN0UGl4
ZWxCdWZmZXIgfHwgW21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpb
bV9hdlBsYXllckl0ZW0gY3VycmVudFRpbWVdXSkpCisgICAgaWYgKG1fdmlkZW9PdXRwdXQgJiYg
KG1fbGFzdFBpeGVsQnVmZmVyIHx8IG1fdmlkZW9PdXRwdXQtPmhhc0ltYWdlRm9yVGltZShjdXJy
ZW50TWVkaWFUaW1lKCkpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gbV92
aWRlb0ZyYW1lSGFzRHJhd247CkBAIC0xNDQ0LDM0ICsxNDI2LDMwIEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1QYXVzZWQoKSBjb25zdAogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN0YXJ0VmlkZW9GcmFtZU1ldGFk
YXRhR2F0aGVyaW5nKCkKIHsKLSAgICBBU1NFUlQoIW1fdmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVy
aW5nT2JzZXJ2ZXIgfHwgbV9hdlBsYXllcik7Ci0gICAgbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVN
ZXRhZGF0YSA9IHRydWU7CisgICAgLy8gcmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjaygpIGNhcmVz
IGFib3V0IHRoZSAvbmV4dC8gYXZhaWxhYmxlIGZyYW1lLiBQdWxsIHRoZSBjdXJyZW50IGZyYW1l
IGZyb20KKyAgICAvLyB0aGUgUXVldWVkVmlkZW9PdXRwdXQgc28gcGFpbnRzIG9mIHRoZSBjdXJy
ZW50IGZyYW1lIHN1Y2NlZWQ7CisgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAKLSAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBhIENBRGlzcGxheUxpbmsgdG8gZ2V0IHVwZGF0ZXMgb24g
cmVuZGVyaW5nLCBmb3Igbm93IHdlIGVtdWxhdGUgd2l0aCBhZGRQZXJpb2RpY1RpbWVPYnNlcnZl
ckZvckludGVydmFsLgotICAgIG1fdmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nT2JzZXJ2ZXIg
PSBbbV9hdlBsYXllciBhZGRQZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVydmFsOlBBTDo6Q01U
aW1lTWFrZSgxLCA2MCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1c2luZ0Jsb2Nr
Olt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XShDTVRpbWUgY3VycmVudFRpbWUpIHsKLSAg
ICAgICAgZW5zdXJlT25NYWluVGhyZWFkKFt3ZWFrVGhpcywgY3VycmVudFRpbWVdIHsKLSAgICAg
ICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y2hlY2tOZXdW
aWRlb0ZyYW1lTWV0YWRhdGEoY3VycmVudFRpbWUpOwotICAgICAgICB9KTsKLSAgICB9XTsKKyAg
ICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciA9IFdURjo6bWFrZVVuaXF1ZTxPYnNlcnZl
cjx2b2lkKCk+PihbdGhpc10geworICAgICAgICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZl
ciA9IG51bGxwdHI7CisgICAgICAgIGNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCk7CisgICAg
fSk7CisKKyAgICBpZiAobV92aWRlb091dHB1dCkKKyAgICAgICAgbV92aWRlb091dHB1dC0+YWRk
Q3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKCptX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZl
cik7CisKKyAgICBtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhID0gdHJ1ZTsKIH0KIAot
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjaGVja05ld1ZpZGVvRnJh
bWVNZXRhZGF0YShDTVRpbWUgY3VycmVudFRpbWUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCkKIHsKLSAgICBpZiAo
IXVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpKQorICAgIGlmICghbV9pc0dhdGhlcmluZ1ZpZGVvRnJh
bWVNZXRhZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmlkZW9GcmFtZU1ldGFkYXRhIG1l
dGFkYXRhOwotICAgIG1ldGFkYXRhLndpZHRoID0gbV9jYWNoZWRQcmVzZW50YXRpb25TaXplLndp
ZHRoKCk7Ci0gICAgbWV0YWRhdGEuaGVpZ2h0ID0gbV9jYWNoZWRQcmVzZW50YXRpb25TaXplLmhl
aWdodCgpOwotICAgIG1ldGFkYXRhLnByZXNlbnRlZEZyYW1lcyA9ICsrbV9zYW1wbGVDb3VudDsK
LSAgICBtZXRhZGF0YS5tZWRpYVRpbWUgPSBQQUw6OkNNVGltZUdldFNlY29uZHMoY3VycmVudFRp
bWUpOwotICAgIC8vIEZJWE1FOiBwcmVzZW50YXRpb25UaW1lIGFuZCBleHBlY3RlZERpc3BsYXlU
aW1lIG1pZ2h0IG5vdCBhbHdheXMgaGF2ZSB0aGUgc2FtZSB2YWx1ZSwgd2Ugc2hvdWxkIHRyeSBn
ZXR0aW5nIG1vcmUgcHJlY2lzZSB2YWx1ZXMuCi0gICAgbWV0YWRhdGEucHJlc2VudGF0aW9uVGlt
ZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpOwot
ICAgIG1ldGFkYXRhLmV4cGVjdGVkRGlzcGxheVRpbWUgPSBtZXRhZGF0YS5wcmVzZW50YXRpb25U
aW1lOworICAgIGlmICghdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkgJiYgIW1fdmlkZW9GcmFtZU1l
dGFkYXRhKQorICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvRnJhbWVNZXRhZGF0YSA9IG1l
dGFkYXRhOwotICAgIHBsYXllcigpLT5vbk5ld1ZpZGVvRnJhbWVNZXRhZGF0YShXVEZNb3ZlKG1l
dGFkYXRhKSwgbV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIHBsYXllcigpLT5vbk5ld1Zp
ZGVvRnJhbWVNZXRhZGF0YShXVEZNb3ZlKCptX3ZpZGVvRnJhbWVNZXRhZGF0YSksIG1fbGFzdFBp
eGVsQnVmZmVyLmdldCgpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpzdG9wVmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nKCkKQEAgLTI1MTgsMTcgKzI0
OTYsMTQgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVW
aWRlb091dHB1dCgpCiAgICAgaWYgKCFtX2F2UGxheWVySXRlbSB8fCBtX3ZpZGVvT3V0cHV0KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvT3V0cHV0ID0gYWRvcHROUyhbUEFMOjphbGxv
Y0FWUGxheWVySXRlbVZpZGVvT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0aFBpeGVsQnVmZmVyQXR0
cmlidXRlczpuaWxdKTsKKyAgICBtX3ZpZGVvT3V0cHV0ID0gUXVldWVkVmlkZW9PdXRwdXQ6OmNy
ZWF0ZShtX2F2UGxheWVySXRlbS5nZXQoKSwgbV9hdlBsYXllci5nZXQoKSk7CiAgICAgQVNTRVJU
KG1fdmlkZW9PdXRwdXQpOwogICAgIGlmICghbV92aWRlb091dHB1dCkgewogICAgICAgICBFUlJP
Ul9MT0coTE9HSURFTlRJRklFUiwgIi1bQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQgaW5pdFdpdGhQ
aXhlbEJ1ZmZlckF0dHJpYnV0ZXM6XSBmYWlsZWQhIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0KLSAgICBtX3ZpZGVvT3V0cHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbV2ViQ29yZUFWRlB1bGxE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQbGF5ZXI6KnRoaXNdKTsKLSAgICBbbV92aWRlb091dHB1
dCBzZXREZWxlZ2F0ZTptX3ZpZGVvT3V0cHV0RGVsZWdhdGUuZ2V0KCkgcXVldWU6Z2xvYmFsUHVs
bERlbGVnYXRlUXVldWUoKV07Ci0KLSAgICBbbV9hdlBsYXllckl0ZW0gYWRkT3V0cHV0Om1fdmlk
ZW9PdXRwdXQuZ2V0KCldOworICAgIGlmIChtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcikK
KyAgICAgICAgbV92aWRlb091dHB1dC0+YWRkQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKCpt
X2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcik7CiAKICAgICBzZXROZWVkc1JlbmRlcmluZ01v
ZGVDaGFuZ2VkKCk7CiB9CkBAIC0yNTM4LDE5ICsyNTEzLDE5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZpZGVvT3V0cHV0KCkKICAgICBpZiAoIW1f
dmlkZW9PdXRwdXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX2F2UGxheWVySXRlbSkK
LSAgICAgICAgW21fYXZQbGF5ZXJJdGVtIHJlbW92ZU91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgp
XTsKLQogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgbV92aWRlb091dHB1dCA9
IDA7CisgICAgbV92aWRlb091dHB1dC0+aW52YWxpZGF0ZSgpOworICAgIG1fdmlkZW9PdXRwdXQg
PSBudWxscHRyOworCisgICAgbV92aWRlb0ZyYW1lTWV0YWRhdGEgPSB7IH07CiAKICAgICBzZXRO
ZWVkc1JlbmRlcmluZ01vZGVDaGFuZ2VkKCk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQzo6dXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkKIHsKLSAgICBpZiAoIW1f
YXZQbGF5ZXJJdGVtIHx8IHJlYWR5U3RhdGUoKSA8IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpI
YXZlQ3VycmVudERhdGEpCisgICAgaWYgKCFtX2F2UGxheWVySXRlbSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgbV9oYXZlQmVlbkFza2VkVG9QYWludCA9IHRydWU7CkBAIC0yNTU5LDEy
ICsyNTM0LDI1IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dXBk
YXRlTGFzdFBpeGVsQnVmZmVyKCkKICAgICAgICAgY3JlYXRlVmlkZW9PdXRwdXQoKTsKICAgICBB
U1NFUlQobV92aWRlb091dHB1dCk7CiAKLSAgICBDTVRpbWUgY3VycmVudFRpbWUgPSBbbV9hdlBs
YXllckl0ZW0gY3VycmVudFRpbWVdOworICAgIGF1dG8gY3VycmVudFRpbWUgPSBjdXJyZW50TWVk
aWFUaW1lKCk7CiAKLSAgICBpZiAoIVttX3ZpZGVvT3V0cHV0IGhhc05ld1BpeGVsQnVmZmVyRm9y
SXRlbVRpbWU6Y3VycmVudFRpbWVdKQorICAgIGlmICghbV92aWRlb091dHB1dC0+aGFzSW1hZ2VG
b3JUaW1lKGN1cnJlbnRUaW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9sYXN0
UGl4ZWxCdWZmZXIgPSBhZG9wdENGKFttX3ZpZGVvT3V0cHV0IGNvcHlQaXhlbEJ1ZmZlckZvckl0
ZW1UaW1lOmN1cnJlbnRUaW1lIGl0ZW1UaW1lRm9yRGlzcGxheTpuaWxdKTsKKyAgICBhdXRvIGVu
dHJ5ID0gbV92aWRlb091dHB1dC0+dGFrZVZpZGVvRnJhbWVFbnRyeUZvclRpbWUoY3VycmVudFRp
bWUpOworICAgIG1fbGFzdFBpeGVsQnVmZmVyID0gV1RGTW92ZShlbnRyeS5waXhlbEJ1ZmZlcik7
CisKKyAgICBpZiAobV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSkgeworICAgICAgICBh
dXRvIHByZXNlbnRhdGlvblRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VF
cG9jaCgpLnNlY29uZHMoKSAtIChjdXJyZW50VGltZSAtIGVudHJ5LmRpc3BsYXlUaW1lKS50b0Rv
dWJsZSgpOworICAgICAgICBtX3ZpZGVvRnJhbWVNZXRhZGF0YSA9IHsKKyAgICAgICAgICAgIC53
aWR0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDVlBpeGVsQnVmZmVyR2V0V2lkdGgobV9sYXN0
UGl4ZWxCdWZmZXIuZ2V0KCkpKSwKKyAgICAgICAgICAgIC5oZWlnaHQgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkp
LAorICAgICAgICAgICAgLnByZXNlbnRlZEZyYW1lcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPigr
K21fc2FtcGxlQ291bnQpLAorICAgICAgICAgICAgLm1lZGlhVGltZSA9IGVudHJ5LmRpc3BsYXlU
aW1lLnRvRG91YmxlKCksCisgICAgICAgICAgICAucHJlc2VudGF0aW9uVGltZSA9IHByZXNlbnRh
dGlvblRpbWUsCisgICAgICAgICAgICAuZXhwZWN0ZWREaXNwbGF5VGltZSA9IHByZXNlbnRhdGlv
blRpbWUsCisgICAgICAgIH07CisgICAgfQogCiAgICAgaWYgKG1faW1hZ2VSb3RhdGlvblNlc3Np
b24pCiAgICAgICAgIG1fbGFzdFBpeGVsQnVmZmVyID0gbV9pbWFnZVJvdGF0aW9uU2Vzc2lvbi0+
cm90YXRlKG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKQEAgLTI1ODQsNyArMjU3Miw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6dmlkZW9PdXRwdXRIYXNBdmFp
bGFibGVGcmFtZSgpCiAgICAgaWYgKCFtX3ZpZGVvT3V0cHV0KQogICAgICAgICBjcmVhdGVWaWRl
b091dHB1dCgpOwogCi0gICAgcmV0dXJuIFttX3ZpZGVvT3V0cHV0IGhhc05ld1BpeGVsQnVmZmVy
Rm9ySXRlbVRpbWU6W21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXV07CisgICAgcmV0dXJuIG1f
dmlkZW9PdXRwdXQtPmhhc0ltYWdlRm9yVGltZShQQUw6OnRvTWVkaWFUaW1lKFttX2F2UGxheWVy
SXRlbSBjdXJyZW50VGltZV0pKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDOjp1cGRhdGVMYXN0SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQpAQCAtMjYwMiw3ICsy
NTkwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVM
YXN0SW1hZ2UoVXBkYXRlVHlwZSB0eXBlKQogICAgIC8vIENhbGxzIHRvIGNvcHlQaXhlbEJ1ZmZl
ckZvckl0ZW1UaW1lOml0ZW1UaW1lRm9yRGlzcGxheTogbWF5IHJldHVybiBuaWwgaWYgdGhlIHBp
eGVsIGJ1ZmZlcgogICAgIC8vIGZvciB0aGUgcmVxdWVzdGVkIHRpbWUgaGFzIGFscmVhZHkgYmVl
biByZXRyaWV2ZWQuIEluIHRoaXMgY2FzZSwgdGhlIGxhc3QgdmFsaWQgaW1hZ2UgKGlmIGFueSkK
ICAgICAvLyBzaG91bGQgYmUgZGlzcGxheWVkLgotICAgIGlmICgobV9pc0dhdGhlcmluZ1ZpZGVv
RnJhbWVNZXRhZGF0YSB8fCAhdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkpICYmIChtX2xhc3RJbWFn
ZSB8fCAhbV9sYXN0UGl4ZWxCdWZmZXIpKQorICAgIGlmICghdXBkYXRlTGFzdFBpeGVsQnVmZmVy
KCkgJiYgKG1fbGFzdEltYWdlIHx8ICFtX2xhc3RQaXhlbEJ1ZmZlcikpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmICghbV9waXhlbEJ1ZmZlckNvbmZvcm1lcikgewpAQCAtMjYzNyw4ICsyNjI1
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhW
aWRlb091dHB1dChHcmFwaGljc0NvbnRleHQmIGMKIAogUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJS
ZWY+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBpeGVsQnVmZmVyRm9yQ3Vy
cmVudFRpbWUoKQogewotICAgIGlmICghbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSkK
LSAgICAgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CisgICAgdXBkYXRlTGFzdFBpeGVsQnVm
ZmVyKCk7CiAKICAgICByZXR1cm4gbV9sYXN0UGl4ZWxCdWZmZXI7CiB9CkBAIC0yNjY5LDcgKzI2
NTYsMTEgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp3YWl0Rm9y
VmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCkKICAgICBzdGQ6Om9wdGlvbmFsPFJ1bkxv
b3A6OlRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+PiB0aW1lb3V0VGlt
ZXI7CiAKICAgICBpZiAoIW1fcnVuTG9vcE5lc3RpbmdMZXZlbCkgewotICAgICAgICBbbV92aWRl
b091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VXaXRoQWR2YW5jZUlu
dGVydmFsOjBdOworICAgICAgICBPYnNlcnZlcjx2b2lkKCk+IHdhaXRGb3JWaWRlb091dHB1dE1l
ZGlhRGF0YVdpbGxDaGFuZ2VPYnNlcnZlcihbdGhpc10geworICAgICAgICAgICAgaWYgKG1fcnVu
TG9vcE5lc3RpbmdMZXZlbCkKKyAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgp
OworICAgICAgICB9KTsKKyAgICAgICAgbV92aWRlb091dHB1dC0+YWRkQ3VycmVudEltYWdlQ2hh
bmdlZE9ic2VydmVyKHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2VPYnNlcnZl
cik7CiAKICAgICAgICAgdGltZW91dFRpbWVyLmVtcGxhY2UoUnVuTG9vcDo6bWFpbigpLCBbJl0g
ewogICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLnN0b3AoKTsKQEAgLTI2OTYsMTUgKzI2ODcs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndhaXRGb3JWaWRl
b091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6Om91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQogewotICAgIGlmICht
X3J1bkxvb3BOZXN0aW5nTGV2ZWwpIHsKLSAgICAgICAgaWYgKFJ1bkxvb3A6OmlzTWFpbigpKQot
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLnN0b3AoKTsKLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW10gewotICAgICAgICAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5zdG9wKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgIH0K
KyAgICBjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YSgpOwogfQogCiAjaWYgRU5BQkxFKExFR0FD
WV9FTkNSWVBURURfTUVESUEpCkBAIC00MDg5LDM3ICs0MDcyLDQgQEAgLSAodm9pZClyZXNvdXJj
ZUxvYWRlcjooQVZBc3NldFJlc291cmNlTG9hZGVyICopcmVzb3VyY2VMb2FkZXIgZGlkQ2FuY2Vs
TG9hZGluZ1IKIAogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gV2ViQ29yZUFWRlB1bGxEZWxlZ2F0
ZSB7Ci0gICAgV2Vha1B0cjxXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDPiBfcGxheWVyOwotfQotCi1Ac3ludGhlc2l6ZSBzZW1hcGhvcmUgPSBtX3NlbWFwaG9yZTsK
LQotLSAoaWQpaW5pdFdpdGhQbGF5ZXI6KFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQz4mJilwbGF5ZXIKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlm
ICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBfcGxheWVyID0gV1RGTW92ZShwbGF5
ZXIpOwotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKW91dHB1dE1lZGlhRGF0YVdpbGxD
aGFuZ2U6KEFWUGxheWVySXRlbVZpZGVvT3V0cHV0ICopb3V0cHV0Ci17Ci0gICAgVU5VU0VEX1BB
UkFNKG91dHB1dCk7Ci0gICAgbV9zZW1hcGhvcmUuc2lnbmFsKCk7Ci0gICAgY2FsbE9uTWFpblRo
cmVhZChbc2VsZiwgc3Ryb25nU2VsZiA9IFJldGFpblB0ciB7IHNlbGYgfV0gewotICAgICAgICBp
ZiAoX3BsYXllcikKLSAgICAgICAgICAgIF9wbGF5ZXItPm91dHB1dE1lZGlhRGF0YVdpbGxDaGFu
Z2UoKTsKLSAgICB9KTsKLX0KLQotLSAodm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KEFW
UGxheWVySXRlbVZpZGVvT3V0cHV0ICopb3V0cHV0Ci17Ci0gICAgVU5VU0VEX1BBUkFNKG91dHB1
dCk7Ci0gICAgLy8gTm8tb3AuCi19Ci0KLUBlbmQKLQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRl
b091dHB1dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvUXVldWVkVmlkZW9PdXRwdXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YmFmMGVhMTFlNWM0ZmJlMzI0
ZDk1MjVhZGYxYmRiM2M2MzMwYTg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQuaApA
QCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
VklERU8pCisKKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVk
ZSA8d3RmL01lZGlhVGltZS5oPgorI2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9XZWFrSGFzaFNldC5oPgorCitPQkpDX0NMQVNTIEFWUGxheWVyOworT0JKQ19DTEFTUyBB
VlBsYXllckl0ZW07CitPQkpDX0NMQVNTIEFWUGxheWVySXRlbVZpZGVvT3V0cHV0OworT0JKQ19D
TEFTUyBXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlOworCit0eXBlZGVmIHN0cnVjdCBfX0NW
QnVmZmVyICpDVlBpeGVsQnVmZmVyUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IFF1ZXVlZFZpZGVvT3V0cHV0CisgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxRdWV1ZWRWaWRlb091
dHB1dD4KKyAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxRdWV1ZWRWaWRlb091dHB1dD4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UXVl
dWVkVmlkZW9PdXRwdXQ+IGNyZWF0ZShBVlBsYXllckl0ZW0qLCBBVlBsYXllciopOworICAgIH5R
dWV1ZWRWaWRlb091dHB1dCgpOworCisgICAgdm9pZCBpbnZhbGlkYXRlKCk7CisgICAgYm9vbCBo
YXNJbWFnZUZvclRpbWUoY29uc3QgTWVkaWFUaW1lJikgY29uc3Q7CisKKyAgICBzdHJ1Y3QgVmlk
ZW9GcmFtZUVudHJ5IHsKKyAgICAgICAgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVs
QnVmZmVyOworICAgICAgICBNZWRpYVRpbWUgZGlzcGxheVRpbWU7CisgICAgfTsKKyAgICBWaWRl
b0ZyYW1lRW50cnkgdGFrZVZpZGVvRnJhbWVFbnRyeUZvclRpbWUoY29uc3QgTWVkaWFUaW1lJik7
CisKKyAgICB2b2lkIGFkZFZpZGVvRnJhbWVFbnRyaWVzKFZlY3RvcjxWaWRlb0ZyYW1lRW50cnk+
JiYpOworICAgIHZvaWQgcHVyZ2VWaWRlb0ZyYW1lRW50cmllcygpOworCisgICAgdXNpbmcgQ3Vy
cmVudEltYWdlQ2hhbmdlZE9ic2VydmVyID0gT2JzZXJ2ZXI8dm9pZCgpPjsKKyAgICB2b2lkIGFk
ZEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcihjb25zdCBDdXJyZW50SW1hZ2VDaGFuZ2VkT2Jz
ZXJ2ZXImKTsKKworICAgIHVzaW5nIEltYWdlTWFwID0gc3RkOjptYXA8TWVkaWFUaW1lLCBSZXRh
aW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4+OworCisgICAgdm9pZCByYXRlQ2hhbmdlZChmbG9hdCk7
CisKK3ByaXZhdGU6CisgICAgUXVldWVkVmlkZW9PdXRwdXQoQVZQbGF5ZXJJdGVtKiwgQVZQbGF5
ZXIqKTsKKworICAgIHZvaWQgcHVyZ2VJbWFnZXNCZWZvcmVUaW1lKGNvbnN0IE1lZGlhVGltZSYp
OworICAgIHZvaWQgY29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisgICAgdm9pZCBj
YW5jZWxOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAgICB2b2lkIG5leHRJbWFnZVRpbWVSZWFj
aGVkKCk7CisKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVtPiBtX3BsYXllckl0ZW07CisgICAg
UmV0YWluUHRyPEFWUGxheWVyPiBtX3BsYXllcjsKKyAgICBSZXRhaW5QdHI8V2ViUXVldWVkVmlk
ZW9PdXRwdXREZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXJJdGVt
VmlkZW9PdXRwdXQ+IG1fdmlkZW9PdXRwdXQ7CisgICAgUmV0YWluUHRyPGlkPiBtX3ZpZGVvVGlt
ZWJhc2VPYnNlcnZlcjsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fbmV4dEltYWdlVGltZWJhc2VPYnNl
cnZlcjsKKworICAgIEltYWdlTWFwIG1fdmlkZW9GcmFtZXM7CisgICAgV2Vha0hhc2hTZXQ8Q3Vy
cmVudEltYWdlQ2hhbmdlZE9ic2VydmVyPiBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnM7
CisKKyAgICBib29sIG1fcGF1c2VkIHsgdHJ1ZSB9OworfTsKKworfQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1F1ZXVlZFZpZGVvT3V0cHV0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJjMDgz
ODE0YzA4YzdkZWVkNjFjOTA3OWMyMmJlM2Y1MDc4YTc3ZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZp
ZGVvT3V0cHV0Lm1tCkBAIC0wLDAgKzEsMzA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlF1ZXVlZFZpZGVvT3V0cHV0LmgiCisKKyNpZiBFTkFCTEUoVklE
RU8pCisKKyNpbmNsdWRlIDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtT3V0cHV0Lmg+CisjaW5j
bHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNpbmNsdWRl
IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgorCisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNv
ZnRMaW5rLmg+CisjaW5jbHVkZSA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisK
K0BpbnRlcmZhY2UgV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSA6IE5TT2JqZWN0PEFWUGxh
eWVySXRlbU91dHB1dFB1bGxEZWxlZ2F0ZT4geworICAgIFdlYWtQdHI8V2ViQ29yZTo6UXVldWVk
VmlkZW9PdXRwdXQ+IF9wYXJlbnQ7Cit9CistIChpZClpbml0V2l0aFBhcmVudDooV2ViQ29yZTo6
UXVldWVkVmlkZW9PdXRwdXQqKXBhcmVudDsKKy0gKHZvaWQpb3V0cHV0TWVkaWFEYXRhV2lsbENo
YW5nZTooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0OworLSAodm9pZClvdXRwdXRTZXF1ZW5j
ZVdhc0ZsdXNoZWQ6KEFWUGxheWVySXRlbU91dHB1dCAqKW91dHB1dDsKKy0gKHZvaWQpb2JzZXJ2
ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0Rp
Y3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dDsKK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFdlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUKKy0gKGlkKWluaXRXaXRoUGFy
ZW50OihXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dCopcGFyZW50Cit7CisgICAgc2VsZiA9IFtz
dXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBf
cGFyZW50ID0gcGFyZW50OworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKW91dHB1dE1l
ZGlhRGF0YVdpbGxDaGFuZ2U6KEFWUGxheWVySXRlbU91dHB1dCAqKW91dHB1dAoreworICAgIEFT
U0VSVChbb3V0cHV0IGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRBVlBsYXllckl0ZW1WaWRlb091dHB1
dENsYXNzKCldKTsKKyAgICBhdXRvKiB2aWRlb091dHB1dCA9IChBVlBsYXllckl0ZW1WaWRlb091
dHB1dCopb3V0cHV0OworCisgICAgVmVjdG9yPFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpW
aWRlb0ZyYW1lRW50cnk+IHZpZGVvRnJhbWVFbnRyaWVzOworICAgIGRvIHsKKyAgICAgICAgQ01U
aW1lIGVhcmxpZXN0VGltZSA9IFt2aWRlb091dHB1dCBlYXJsaWVzdEF2YWlsYWJsZVBpeGVsQnVm
ZmVySXRlbVRpbWVdOworICAgICAgICBpZiAoQ01USU1FX0lTX0lOVkFMSUQoZWFybGllc3RUaW1l
KSkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGF1dG8gcGl4ZWxCdWZmZXIgPSBhZG9w
dENGKFt2aWRlb091dHB1dCBjb3B5UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTplYXJsaWVzdFRpbWUg
aXRlbVRpbWVGb3JEaXNwbGF5Om5pbF0pOworICAgICAgICBpZiAoIXBpeGVsQnVmZmVyKQorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgdmlkZW9GcmFtZUVudHJpZXMuYXBwZW5kKHsgV1RG
TW92ZShwaXhlbEJ1ZmZlciksIFBBTDo6dG9NZWRpYVRpbWUoZWFybGllc3RUaW1lKSB9KTsKKyAg
ICB9IHdoaWxlICh0cnVlKTsKKworICAgIGlmICh2aWRlb0ZyYW1lRW50cmllcy5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGNhbGxPbk1haW5SdW5Mb29wKFt2aWRlb0ZyYW1lRW50
cmllcyA9IFdURk1vdmUodmlkZW9GcmFtZUVudHJpZXMpLCBwYXJlbnQgPSBfcGFyZW50XSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgaWYgKHBhcmVudCkKKyAgICAgICAgICAgIHBhcmVudC0+YWRkVmlk
ZW9GcmFtZUVudHJpZXMoV1RGTW92ZSh2aWRlb0ZyYW1lRW50cmllcykpOworICAgIH0pOworfQor
CistICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICop
b3V0cHV0Cit7CisgICAgQVNTRVJUKFtvdXRwdXQgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxh
eWVySXRlbVZpZGVvT3V0cHV0Q2xhc3MoKV0pOworICAgIGF1dG8qIHZpZGVvT3V0cHV0ID0gKEFW
UGxheWVySXRlbVZpZGVvT3V0cHV0KilvdXRwdXQ7CisgICAgW3ZpZGVvT3V0cHV0IHJlcXVlc3RO
b3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZUFzU29vbkFzUG9zc2libGVdOworCisgICAgY2Fs
bE9uTWFpblJ1bkxvb3AoW3BhcmVudCA9IF9wYXJlbnRdIHsKKyAgICAgICAgaWYgKHBhcmVudCkK
KyAgICAgICAgICAgIHBhcmVudC0+cHVyZ2VWaWRlb0ZyYW1lRW50cmllcygpOworICAgIH0pOwor
fQorCistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQp
b2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRl
eHQKK3sKKyAgICBpZiAoIVtrZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpAInJhdGUiXSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byByYXRlVmFsdWUgPSAoTlNOdW1iZXIqKVtjaGFuZ2UgdmFs
dWVGb3JLZXk6TlNLZXlWYWx1ZUNoYW5nZU5ld0tleV07CisgICAgQVNTRVJUKFtyYXRlVmFsdWUg
aXNLaW5kT2ZDbGFzczpOU051bWJlci5jbGFzc10pOworICAgIGF1dG8gcmF0ZSA9IHJhdGVWYWx1
ZS5mbG9hdFZhbHVlOworCisgICAgZW5zdXJlT25NYWluUnVuTG9vcChbcGFyZW50ID0gX3BhcmVu
dCwgcmF0ZV0geworICAgICAgICBpZiAocGFyZW50KQorICAgICAgICAgICAgcGFyZW50LT5yYXRl
Q2hhbmdlZChyYXRlKTsKKyAgICB9KTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCkKK3sK
KyAgICBzdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxRdWV1ZTsKKyAgICBzdGF0aWMgZGlz
cGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57
CisgICAgICAgIGdsb2JhbFF1ZXVlID0gZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJXZWJRdWV1ZWRW
aWRlb091dHB1dERlbGVnYXRlIHF1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKKyAgICB9
KTsKKyAgICByZXR1cm4gZ2xvYmFsUXVldWU7Cit9CisKK1JlZjxRdWV1ZWRWaWRlb091dHB1dD4g
UXVldWVkVmlkZW9PdXRwdXQ6OmNyZWF0ZShBVlBsYXllckl0ZW0qIGl0ZW0sIEFWUGxheWVyKiBw
bGF5ZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUXVldWVkVmlkZW9PdXRwdXQoaXRl
bSwgcGxheWVyKSk7Cit9CisKK1F1ZXVlZFZpZGVvT3V0cHV0OjpRdWV1ZWRWaWRlb091dHB1dChB
VlBsYXllckl0ZW0qIGl0ZW0sIEFWUGxheWVyKiBwbGF5ZXIpCisgICAgOiBtX3BsYXllckl0ZW0o
aXRlbSkKKyAgICAsIG1fcGxheWVyKHBsYXllcikKKyAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhb
W1dlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNd
KSkKK3sKKyAgICBtX3ZpZGVvT3V0cHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVySXRl
bVZpZGVvT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0aFBpeGVsQnVmZmVyQXR0cmlidXRlczpuaWxd
KTsKKyAgICBbbV92aWRlb091dHB1dCBzZXREZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpIHF1ZXVl
Omdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKV07CisgICAgW21fdmlkZW9PdXRwdXQgcmVxdWVz
dE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJsZV07CisKKyAgICBb
bV9wbGF5ZXJJdGVtIGFkZE91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKKworICAgIFttX3Bs
YXllciBhZGRPYnNlcnZlcjptX2RlbGVnYXRlLmdldCgpIGZvcktleVBhdGg6QCJyYXRlIiBvcHRp
b25zOihOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IHwgTlNLZXlWYWx1ZU9ic2VydmluZ09w
dGlvbkluaXRpYWwpIGNvbnRleHQ6bmlsXTsKKworICAgIG1fdmlkZW9UaW1lYmFzZU9ic2VydmVy
ID0gW21fcGxheWVyIGFkZFBlcmlvZGljVGltZU9ic2VydmVyRm9ySW50ZXJ2YWw6UEFMOjpDTVRp
bWVNYWtlKDEsIDYwKSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCkgdXNpbmdCbG9j
azpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvdGVjdGVkRGVsZWdhdGUgPSBtX2Rl
bGVnYXRlLCBwcm90ZWN0ZWRPdXRwdXQgPSBtX3ZpZGVvT3V0cHV0XShDTVRpbWUgY3VycmVudFRp
bWUpIG11dGFibGUgeworCisgICAgICAgIC8vIFBlcmlvZGljYWxseSBjaGVjayBmb3IgbmV3IGF2
YWlsYWJsZSBwaXhlbCBidWZmZXJzLgorICAgICAgICBbcHJvdGVjdGVkRGVsZWdhdGUgb3V0cHV0
TWVkaWFEYXRhV2lsbENoYW5nZTpwcm90ZWN0ZWRPdXRwdXQuZ2V0KCldOworCisgICAgICAgIC8v
IEFuZCBwdXJnZSB0aGUgYmFjayBidWZmZXIgb2YgcGFzdCBmcmFtZXMuCisgICAgICAgIGNhbGxP
bk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9IHdlYWtUaGlzLCB0aW1lID0gUEFMOjp0b01lZGlhVGlt
ZShjdXJyZW50VGltZSldIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAg
ICAgICB3ZWFrVGhpcy0+cHVyZ2VJbWFnZXNCZWZvcmVUaW1lKHRpbWUpOworICAgICAgICB9KTsK
KyAgICB9XTsKK30KKworUXVldWVkVmlkZW9PdXRwdXQ6On5RdWV1ZWRWaWRlb091dHB1dCgpCit7
CisgICAgaW52YWxpZGF0ZSgpOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjppbnZhbGlk
YXRlKCkKK3sKKyAgICBpZiAobV92aWRlb1RpbWViYXNlT2JzZXJ2ZXIpIHsKKyAgICAgICAgW21f
cGxheWVyIHJlbW92ZVRpbWVPYnNlcnZlcjptX3ZpZGVvVGltZWJhc2VPYnNlcnZlci5nZXQoKV07
CisgICAgICAgIG1fdmlkZW9UaW1lYmFzZU9ic2VydmVyID0gbmlsOworICAgIH0KKworICAgIGNh
bmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworCisgICAgaWYgKG1fdmlkZW9PdXRwdXQpIHsK
KyAgICAgICAgW21fcGxheWVySXRlbSByZW1vdmVPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQoKV07
CisgICAgICAgIFttX3ZpZGVvT3V0cHV0IHNldERlbGVnYXRlOm5pbCBxdWV1ZTpuaWxdOworICAg
ICAgICBtX3ZpZGVvT3V0cHV0ID0gbmlsOworICAgIH0KKworICAgIGlmIChtX3BsYXllcikgewor
ICAgICAgICBbbV9wbGF5ZXIgcmVtb3ZlT2JzZXJ2ZXI6bV9kZWxlZ2F0ZS5nZXQoKSBmb3JLZXlQ
YXRoOkAicmF0ZSJdOworICAgICAgICBtX3BsYXllciA9IG5pbDsKKyAgICB9CisKKyAgICBtX3Bs
YXllckl0ZW0gPSBuaWw7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBNYXliZUNvbnN0TWFwLCB0
eXBlbmFtZSBNYXliZUNvbnN0SXRlciA9IGRlY2x0eXBlKE1heWJlQ29uc3RNYXAoKS5iZWdpbigp
KT4KK01heWJlQ29uc3RJdGVyIGZpbmRJbWFnZUZvclRpbWUoTWF5YmVDb25zdE1hcCYgbWFwLCBj
b25zdCBNZWRpYVRpbWUmIHRpbWUpCit7CisgICAgLy8gT3V0cHV0cyBvZiBBVlBsYXllckl0ZW1W
aWRlb091dHB1dCBoYXZlIGEgZGlzcGxheSB0aW1lLCBidXQgbm90IGEgZHVyYXRpb247IHRoZXkg
YXJlIHZhbGlkCisgICAgLy8gdW50aWwgdGhlIGFycml2YWwgb2YgYSBsYXRlciBmcmFtZS4gRmlu
ZCB0aGlzIGZyYW1lIGVmZmljaWVudGx5IHVzaW5nIHNldDo6dXBwZXJfYm91bmQgdG8gZmluZAor
ICAgIC8vIHRoZSBuZXh0IGRpc3BsYXlhYmxlIGZyYW1lLCBhbmQgd2FsayBiYWNrd2FyZHMgYnkg
b25lIHRvIGZpbmQgYSBmcmFtZSBmb3IgdGhlIHRhcmdldCB0aW1lLgorICAgIGlmIChtYXAuZW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIG1hcC5lbmQoKTsKKworICAgIGF1dG8gaXRlciA9IG1hcC51
cHBlcl9ib3VuZCh0aW1lKTsKKyAgICBpZiAoaXRlciA9PSBtYXAuYmVnaW4oKSkKKyAgICAgICAg
cmV0dXJuIG1hcC5lbmQoKTsKKworICAgIHJldHVybiAtLWl0ZXI7Cit9CisKK2Jvb2wgUXVldWVk
VmlkZW9PdXRwdXQ6Omhhc0ltYWdlRm9yVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywgdGltZSkgIT0g
bV92aWRlb0ZyYW1lcy5lbmQoKTsKK30KKworYXV0byBRdWV1ZWRWaWRlb091dHB1dDo6dGFrZVZp
ZGVvRnJhbWVFbnRyeUZvclRpbWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lKSAtPiBWaWRlb0ZyYW1l
RW50cnkKK3sKKyAgICBhdXRvIGl0ZXIgPSBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFtZXMs
IHRpbWUpOworICAgIGlmIChpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkpCisgICAgICAgIHJl
dHVybiB7IG51bGxwdHIsIE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSB9OworCisgICAgVmlkZW9G
cmFtZUVudHJ5IGVudHJ5ID0geyBXVEZNb3ZlKGl0ZXItPnNlY29uZCksIGl0ZXItPmZpcnN0IH07
CisKKyAgICAvLyBQdXJnZSBhbGwgZnJhbWVzIGJlZm9yZSBgdGltZWAsIHNvIHRoYXQgcmVwZWF0
ZWQgY2FsbHMgd2l0aCB0aGUgc2FtZSB0aW1lIGRvbid0IHJldHVybgorICAgIC8vIHN1Y2Nlc3Np
dmVseSBlYXJsaWVyIGltYWdlcy4KKyAgICBtX3ZpZGVvRnJhbWVzLmVyYXNlKG1fdmlkZW9GcmFt
ZXMuYmVnaW4oKSwgKytpdGVyKTsKKworICAgIHJldHVybiBlbnRyeTsKK30KKwordm9pZCBRdWV1
ZWRWaWRlb091dHB1dDo6YWRkQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKGNvbnN0IEN1cnJl
bnRJbWFnZUNoYW5nZWRPYnNlcnZlciYgb2JzZXJ2ZXIpCit7CisgICAgbV9jdXJyZW50SW1hZ2VD
aGFuZ2VkT2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7CisgICAgY29uZmlndXJlTmV4dEltYWdlVGlt
ZU9ic2VydmVyKCk7CisKKyAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZN
ZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091
dHB1dDo6Y29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKCkKK3sKKyAgICBpZiAobV9uZXh0
SW1hZ2VUaW1lYmFzZU9ic2VydmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGN1cnJl
bnRUaW1lID0gUEFMOjp0b01lZGlhVGltZShbbV9wbGF5ZXIgY3VycmVudFRpbWVdKTsKKyAgICBh
dXRvIGl0ZXIgPSBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFtZXMsIGN1cnJlbnRUaW1lKTsK
KyAgICBpZiAoaXRlciA9PSBtX3ZpZGVvRnJhbWVzLmVuZCgpIHx8ICsraXRlciA9PSBtX3ZpZGVv
RnJhbWVzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG5leHRJbWFnZVRpbWUg
PSBpdGVyLT5maXJzdDsKKworICAgIG1fbmV4dEltYWdlVGltZWJhc2VPYnNlcnZlciA9IFttX3Bs
YXllciBhZGRCb3VuZGFyeVRpbWVPYnNlcnZlckZvclRpbWVzOkBbW05TVmFsdWUgdmFsdWVXaXRo
Q01UaW1lOlBBTDo6dG9DTVRpbWUoY3VycmVudFRpbWUpXV0gcXVldWU6Z2xvYmFsT3V0cHV0RGVs
ZWdhdGVRdWV1ZSgpIHVzaW5nQmxvY2s6W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHBy
b3RlY3RlZERlbGVnYXRlID0gbV9kZWxlZ2F0ZSwgcHJvdGVjdGVkT3V0cHV0ID0gbV92aWRlb091
dHB1dF0gKCkgbXV0YWJsZSB7CisgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9
IFdURk1vdmUod2Vha1RoaXMpXSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAg
ICAgICAgICAgd2Vha1RoaXMtPm5leHRJbWFnZVRpbWVSZWFjaGVkKCk7CisgICAgICAgIH0pOwor
ICAgIH1dOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpjYW5jZWxOZXh0SW1hZ2VUaW1l
T2JzZXJ2ZXIoKQoreworICAgIGlmICghbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICBbbV9wbGF5ZXIgcmVtb3ZlVGltZU9ic2VydmVyOm1fbmV4dElt
YWdlVGltZWJhc2VPYnNlcnZlci5nZXQoKV07CisgICAgbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2Vy
dmVyID0gbmlsOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpuZXh0SW1hZ2VUaW1lUmVh
Y2hlZCgpCit7CisgICAgY2FuY2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisgICAgYXV0byBv
YnNlcnZlcnMgPSBzdGQ6OmV4Y2hhbmdlKG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycywg
eyB9KTsKKyAgICBvYnNlcnZlcnMuZm9yRWFjaChbXShhdXRvJiBvYnNlcnZlcikgeyBvYnNlcnZl
cigpOyB9KTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6YWRkVmlkZW9GcmFtZUVudHJp
ZXMoVmVjdG9yPFZpZGVvRnJhbWVFbnRyeT4mJiB2aWRlb0ZyYW1lRW50cmllcykKK3sKKyAgICBi
b29sIG5lZWRzSW1hZ2VGb3JDdXJyZW50VGltZUNoYW5nZWQgPSBmYWxzZTsKKyAgICBib29sIGhh
c0N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMgPSBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNl
cnZlcnMuY29tcHV0ZVNpemUoKTsKKyAgICBNZWRpYVRpbWUgY3VycmVudFRpbWUgPSBoYXNDdXJy
ZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzID8gUEFMOjp0b01lZGlhVGltZShbbV9wbGF5ZXIgY3Vy
cmVudFRpbWVdKSA6IE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKTsKKworICAgIGZvciAoYXV0byYg
ZW50cnkgOiB2aWRlb0ZyYW1lRW50cmllcykgeworICAgICAgICBpZiAoaGFzQ3VycmVudEltYWdl
Q2hhbmdlZE9ic2VydmVycyAmJiBlbnRyeS5kaXNwbGF5VGltZSA8PSBjdXJyZW50VGltZSkKKyAg
ICAgICAgICAgIG5lZWRzSW1hZ2VGb3JDdXJyZW50VGltZUNoYW5nZWQgPSB0cnVlOworICAgICAg
ICBtX3ZpZGVvRnJhbWVzLmVtcGxhY2UoZW50cnkuZGlzcGxheVRpbWUsIFdURk1vdmUoZW50cnku
cGl4ZWxCdWZmZXIpKTsKKyAgICB9CisKKyAgICBpZiAobmVlZHNJbWFnZUZvckN1cnJlbnRUaW1l
Q2hhbmdlZCkKKyAgICAgICAgbmV4dEltYWdlVGltZVJlYWNoZWQoKTsKKyAgICBlbHNlIGlmICho
YXNDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzKQorICAgICAgICBjb25maWd1cmVOZXh0SW1h
Z2VUaW1lT2JzZXJ2ZXIoKTsKKworICAgIGlmIChtX3BhdXNlZCkKKyAgICAgICAgW21fdmlkZW9P
dXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJs
ZV07Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OnB1cmdlVmlkZW9GcmFtZUVudHJpZXMo
KQoreworICAgIGNhbmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworICAgIG1fdmlkZW9GcmFt
ZXMuY2xlYXIoKTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VJbWFnZXNCZWZv
cmVUaW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkKK3sKKyAgICBtX3ZpZGVvRnJhbWVzLmVyYXNl
KG1fdmlkZW9GcmFtZXMuYmVnaW4oKSwgZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJhbWVzLCB0
aW1lKSk7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OnJhdGVDaGFuZ2VkKGZsb2F0IHJh
dGUpCit7CisgICAgbV9wYXVzZWQgPSAhcmF0ZTsKKworICAgIGlmIChtX3BhdXNlZCkKKyAgICAg
ICAgW21fdmlkZW9PdXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNT
b29uQXNQb3NzaWJsZV07Cit9CisKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNmEwZmJkMDBhYmRi
ZTlkYTA3NDIwZGMxMDFhOWJjZmZiMTE4ODdiLi45MDllMzY4MjI3MzM1ZDJkMDM4ZmU4Mzg2ZGZh
OTNmYTc0NmM0MTk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMDggIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSByVkZDKCkgaXNuJ3Qg
Y2FsbGVkIGZvciBpbml0aWFsIHZpZGVvIGxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTAwNgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
Q2FybHNvbi4KKworICAgICAgICAqIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvcmVxdWVzdC12aWRlby1mcmFt
ZS1sb2Fkc3RhcnQuaHRtbDogQWRkZWQuCisgICAgICAgICogbWVkaWEvcmVxdWVzdC12aWRlby1m
cmFtZS1zZWVrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvcmVxdWVzdC12
aWRlby1mcmFtZS1zZWVrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0
RXhwZWN0YXRpb25zOgorCiAyMDIyLTAxLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgaHR0cHM6Ly9icmlhbnBlaXJpcy5naXRodWIuaW8vc3BhdGlhbC1hdWRp
by10ZXN0Lz9yYW1wZWQgc3RvcHMgcGxheWluZyBhZnRlciBhIGZldyBzZWNvbmRzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFy
dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMwMmY2NmViYWJkZmI1NzRkOWY5ZmYxZDViODFm
YzgwODkyMDM2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3Qt
dmlkZW8tZnJhbWUtbG9hZHN0YXJ0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKKworUlVO
KHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soY2FsbGJhY2spKQorUlVOKHZpZGVvLnNy
YyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpKQorUHJvbWlzZSByZXNv
bHZlZCBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvcmVx
dWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVl
c3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUwYjNmMWE4YzYxMWEy
NmZjZDBhNTRlZWUwZmIwMmM1NWU2NmY2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWwKQEAgLTAsMCArMSwyNyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5yZXF1ZXN0LXZp
ZGVvLWZyYW1lLWxvYWRzdGFydDwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9InZpZGVvLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJtZWRpYS1maWxlLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0PgorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgYXN5bmMg
ZXZlbnQgPT4geworICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgbGV0IHZp
ZGVvRnJhbWVQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFj
ayhjYWxsYmFjaykpJyk7CisgICAgICAgICAgICB2aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxi
YWNrKHJlc29sdmUpOworICAgICAgICB9KTsKKworICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9IGZp
bmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpJyk7CisKKyAgICAgICAgYXdhaXQg
c2hvdWxkUmVzb2x2ZSh2aWRlb0ZyYW1lUHJvbWlzZSk7CisKKyAgICAgICAgZW5kVGVzdCgpOwor
ICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHZpZGVvIG11dGVk
PjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1zZWVrLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmEwMTVmMjZiODNhYzk5YWZmMzA1NjhiMzJlNjY5NDE1
MDY0Yzc1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3Qtdmlk
ZW8tZnJhbWUtc2Vlay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACisKK1JVTih2aWRlby5z
cmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKSkKK0VWRU5UKGNhbnBs
YXl0aHJvdWdoKQorUlVOKHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soY2FsbGJhY2sp
KQorUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMC41KQorUHJvbWlzZSByZXNvbHZlZCBPSworRU5E
IE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1m
cmFtZS1zZWVrLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNl
ZWsuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lOTI1OGYwMzYzOGNjZjhhNmM4ZjM0NjBkNzE0MzM0YTQ3OTA5
NThhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1m
cmFtZS1zZWVrLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorICAgIDx0aXRsZT5yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWs8L3RpdGxlPgorICAg
IDxzY3JpcHQgc3JjPSJ2aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
bWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50ID0+IHsKKyAgICAgICAgZmluZE1lZGlhRWxl
bWVudCgpOworCisgICAgICAgIHJ1bigndmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8i
LCAiY29udGVudC90ZXN0IiknKTsKKworICAgICAgICBhd2FpdCB3YWl0Rm9yKHZpZGVvLCAnY2Fu
cGxheXRocm91Z2gnKTsKKworICAgICAgICBsZXQgdmlkZW9GcmFtZVByb21pc2UgPSBuZXcgUHJv
bWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoJ1JV
Tih2aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGNhbGxiYWNrKSknKTsKKyAgICAgICAg
ICAgIHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2socmVzb2x2ZSk7CisgICAgICAgIH0p
OworCisgICAgICAgIHJ1bigndmlkZW8uY3VycmVudFRpbWUgPSAwLjUnKTsKKworICAgICAgICBh
d2FpdCBzaG91bGRSZXNvbHZlKHZpZGVvRnJhbWVQcm9taXNlKTsKKworICAgICAgICBlbmRUZXN0
KCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8dmlkZW8g
bXV0ZWQ+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGFjZDRi
MDE4OTAxODU1ODFiOTI3YjY0YjQ0NzgzMTRmYTQ4YWU1ZjMuLmFmMzk3NjYwN2JlMmJmZWIxMjAx
OWU2ZmFiZGJlNDIwYzRlM2MwNGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhw
ZWN0YXRpb25zCkBAIC0yNDMxLDMgKzI0MzEsNSBAQCB3ZWJraXQub3JnL2IvMjIxMjMwIFsgQmln
U3VyKyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWEtc291cmNlL21lZAog
CiAjIFRoaXMgdGVzdCBpcyBzcGVjaWZpYyB0byBDb3JlIFRleHQuCiBmYXN0L3RleHQvZm9udC1s
b29rdXAtZG90LXByZWZpeC1jYXNlLXNlbnNpdGl2ZS5odG1sIFsgUGFzcyBdCisKK3dlYmtpdC5v
cmcvYi8yMzUwNzIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy92aWRlby1ydmZjL3Jl
cXVlc3QtdmlkZW8tZnJhbWUtY2FsbGJhY2stcmVwZWF0aW5nLmh0bWwgWyBTa2lwIF0KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="commit-queue"
          id="474842"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448995</attachid>
            <date>2022-01-12 14:25:08 -0800</date>
            <delta_ts>2022-01-12 15:51:27 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235006-20220112142507.patch</filename>
            <type>text/plain</type>
            <size>51125</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWIxNTA4YzQ4NDhmYjBh
MDIzOTc5MDEyMmVhNzRlMjVjODAxZmIyNy4uYmJkY2RhNjU3OWM4ODJjYjY3YmVhMjgyM2ZhODlk
NGY2M2Y3ZmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIyLTAxLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gclZGQygpIGlz
bid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
bG9hZHN0YXJ0Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sCisKKyAgICAgICAgQWRkIGEgbmV3IHV0aWxpdHkgY2xhc3MsIFF1ZXVlZFZpZGVv
T3V0cHV0LCB3aGljaCB3aWxsIHB1bGwgcGl4ZWwgYnVmZmVycyBvdXQgb2YgYW4gQVZQbGF5ZXJJ
dGVtVmlkZW9PdXRwdXQKKyAgICAgICAgcHJlLWVtcHRpdmVseS4gT25jZSB0aG9zZSBwaXhlbCBi
dWZmZXJzIGFyZSBlbnF1ZXVlZCBsb2NhbGx5LCB0aGVpciBhc3NvY2lhdGVkIHRpbWluZyBpbmZv
cm1hdGlvbiBjYW4gYmUgdXNlZCB0bworICAgICAgICBmaXJlIGEgY2FsbGJhY2sgZm9yIHRoYXQg
YnVmZmVyJ3MgZGlzcGxheSB0aW1lLgorCisgICAgICAgIFByZXZpb3VzbHksIHBhaW50cyB3ZXJl
IGJsb2NrZWQgZnJvbSBwdWxsaW5nIG5ldyBwaXhlbCBidWZmZXJzIGZyb20gdGhlIHZpZGVvIG91
dHB1dC4gV2l0aCB0aGUgUXVldWVkVmlkZW9PdXRwdXQKKyAgICAgICAgY2xhc3MsIHRoaXMgaXMg
bm8gbG9uZ2VyIG5lY2Vzc2FyeS4gVGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHdpbGwgbm90aWZ5IGl0
cyBjbGllbnQgd2hlbiB0aGUgaW1hZ2UgZm9yIGN1cnJlbnRUaW1lCisgICAgICAgIGNoYW5nZXMs
IGFuZCBvdGhlciBjbGllbnRzIGNhbiBmcmVlbHkgYXNrIGZvciB0aGUgY3VycmVudFRpbWUncyBp
bWFnZS4KKworICAgICAgICBUbyBjdXJiIHJ1bmF3YXkgbWVtb3J5IGdyb3d0aCwgZnJhbWVzIGFy
ZSBwdXJnZWQgYXMgc29vbiBhcyBhIG5ldyBpbWFnZSBmb3IgdGhlIGN1cnJlbnQgdGltZSBpcyBh
dmFpbGFibGUsIGFuZCB3aGVuCisgICAgICAgIHRoZSB2aWRlbyBvdXRwdXQgc2lnbmFscyB0aGF0
IGl0cyBvd24gcXVldWVzIHdlcmUgcHVyZ2VkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjYW5jZWxWaWRlb0ZyYW1lQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2VydmljZVJlcXVl
c3RWaWRlb0ZyYW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omhhc0F2YWlsYWJsZVZpZGVvRnJh
bWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c3RhcnRWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tOZXdWaWRlb0Zy
YW1lTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZp
ZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1ZmZlckZvckN1
cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29sb3JTcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvdXRwdXRNZWRp
YURhdGFXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Omdsb2JhbFB1bGxEZWxlZ2F0ZVF1
ZXVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OndhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIGluaXRXaXRoUGxheWVyOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIG91dHB1dE1lZGlh
RGF0YVdpbGxDaGFuZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVs
ZWdhdGUgb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOl0pOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVl
ZFZpZGVvT3V0cHV0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXRE
ZWxlZ2F0ZSBpbml0V2l0aFBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRw
dXREZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOl0pOgorICAgICAgICAoLVtXZWJR
dWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDpdKToKKyAg
ICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBvYnNlcnZlVmFsdWVGb3JLZXlQ
YXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoV2ViQ29yZTo6Z2xvYmFs
T3V0cHV0RGVsZWdhdGVRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpRdWV1ZWRW
aWRlb091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6flF1ZXVl
ZFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmRlY2x0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OlF1ZXVlZFZpZGVvT3V0cHV0OjpoYXNJbWFnZUZvclRpbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnRha2VWaWRlb0ZyYW1lRW50cnlGb3JUaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjphZGRDdXJyZW50SW1hZ2VDaGFuZ2Vk
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmNvbmZpZ3Vy
ZU5leHRJbWFnZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0
OjppbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRW
aWRlb091dHB1dDo6YWRkVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UXVl
dWVkVmlkZW9PdXRwdXQ6OnB1cmdlVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnB1cmdlSW1hZ2VzQmVmb3JlVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cmF0ZUNoYW5nZWQpOgorCiAyMDIxLTEyLTE0ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtSZWZhY3Rvcl0gQWRv
cHQgTG9nZ2VySGVscGVyIGluIExvZ2dpbmcgRU1FIGNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmlu
ZGV4IGYzMTgxOTc3NGJjMTQwY2Y1MjU4Nzg2NDQ5MjdiYWZkNWFiMmU5MDIuLmVjODEwYTFlM2Zj
Mjc4NjI0NmVjMDI0NGVhNWUxMzI0ZmRlNTI0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDIyLTAxLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gclZGQygpIGlzbid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBs
b2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUw
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBwYWwv
c3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oOgorCiAyMDIyLTAxLTEwICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBhIC1z
aG91bGRXcmFwIHByb3BlcnR5IHdoZW4gaW5qZWN0aW5nIExpdmUgVGV4dApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaAppbmRleCA4Yjdm
ZjEyMzdhMGM4YzIyZjg4MmZhMGJmZWVlOGJkM2FkNGNiNzEyLi40ZjljYmU2ZDNkMjdlYzdkMWEz
ZGQ3ZTFkODI3NzBlMzcxODg0MTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaApAQCAtNDAsOSArNDAsMTAgQEAKICNpbXBvcnQg
PEFWRm91bmRhdGlvbi9BVk1lZGlhU2VsZWN0aW9uR3JvdXBfUHJpdmF0ZS5oPgogI2ltcG9ydCA8
QVZGb3VuZGF0aW9uL0FWT3V0cHV0Q29udGV4dF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZPdXRwdXREZXZpY2UuaD4KLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllcl9Q
cml2YXRlLmg+CisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtT3V0cHV0X1ByaXZh
dGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1fUHJpdmF0ZS5oPgogI2lt
cG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyTGF5ZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8QVZG
b3VuZGF0aW9uL0FWUGxheWVyX1ByaXZhdGUuaD4KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCkBAIC02Niw2ICs2Nyw3IEBAIE5T
X0FTU1VNRV9OT05OVUxMX0VORAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQ2FwdHVyZVNlc3Np
b24uaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllci5oPgogI2ltcG9ydCA8QVZGb3Vu
ZGF0aW9uL0FWUGxheWVySXRlbS5oPgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVySXRl
bU91dHB1dC5oPgogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fSU5URVJTVElUSUFMX0VWRU5UUykK
ICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckludGVyc3RpdGlhbEV2ZW50Q29udHJvbGxl
ci5oPgpAQCAtOTIsNiArOTQsMTEgQEAgdHlwZWRlZiBOU1N0cmluZyAqIEFWVmlkZW9SYW5nZSBO
U19UWVBFRF9FTlVNOwogQGVuZAogI2VuZGlmCiAKK0BpbnRlcmZhY2UgQVZQbGF5ZXJJdGVtVmlk
ZW9PdXRwdXQgKEFWUGxheWVySXRlbVZpZGVvT3V0cHV0RWFybGllc3RUaW1lKQorQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBDTVRpbWUgZWFybGllc3RBdmFpbGFibGVQaXhlbEJ1ZmZl
ckl0ZW1UaW1lOworLSAodm9pZClyZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VB
c1Nvb25Bc1Bvc3NpYmxlOworQGVuZAorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBkMjhiMzgzMWQ0ZjY5MTkyY2E1NjIwMmM4MDA0ZTE3ODNkYzNjNWMwLi5mMDNjNmM1NTMy
NmUwODFmMTA4MzA3YzRmYmJlNzhiZDVkNmE5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NDQ5LDYgKzQ0NDksOCBAQAog
CQlDRDFGOUI0RDI3MEQwM0E5MDA2MTdFQjYgLyogU2Nyb2xsRXh0ZW50cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlCNEMyNzBEMDNBOTAwNjE3
RUI2IC8qIFNjcm9sbEV4dGVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDRDFGOUI3RDI3MEU2Njc4MDA2MTdFQjYgLyogSFRNTEFuY2hvckVs
ZW1lbnRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDFGOUI3QzI3MEU2Njc4MDA2MTdFQjYgLyogSFRNTEFuY2hvckVsZW1lbnRJbmxpbmVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Qx
RjlCODAyNzBFNjcxQTAwNjE3RUI2IC8qIFNWR0VsZW1lbnRJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDFGOUI3RjI3MEU2NzFBMDA2MTdF
QjYgLyogU1ZHRWxlbWVudElubGluZXMuaCAqLzsgfTsKKwkJQ0QyMEVEM0MyNzg3OEZGQjAwMzhC
RTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDIwRUQzQTI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9P
dXRwdXQuaCAqLzsgfTsKKwkJQ0QyMEVEM0QyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVv
T3V0cHV0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0QyMEVEM0IyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0Lm1tICovOyB9Owog
CQlDRDIyNUMwQjFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjI1QzA5MUM0NkZC
RjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tICovOyB9OwogCQlDRDIyNUMwQzFD
NDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyMjVDMEExQzQ2RkJGNDAwMTQwNzYxIC8q
IFdlYkNvcmVOU1VSTFNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDRDI3QUU1MDIyQTk4Njg3MDA5NDdGRjkgLyogSW1hZ2VSb3RhdGlv
blNlc3Npb25WVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0QyN0FFNEUyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTU4NjYs
NiArMTU4NjgsOCBAQAogCQlDRDFGOUI3MDI3MERGQTdGMDA2MTdFQjYgLyogTWVkaWFLZXlNZXNz
YWdlRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDFGOUI3QzI3MEU2Njc4MDA2MTdFQjYgLyogSFRN
TEFuY2hvckVsZW1lbnRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxBbmNob3JFbGVtZW50
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDFGOUI3RjI3MEU2NzFB
MDA2MTdFQjYgLyogU1ZHRWxlbWVudElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRWxlbWVu
dElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyMEVEM0EyNzg3OEZG
QjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1ZXVlZFZp
ZGVvT3V0cHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjBFRDNCMjc4NzhG
RkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFF1ZXVlZFZpZGVvT3V0cHV0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDIy
NUMwOTFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVOU1VSTFNlc3Npb24ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMjI1QzBBMUM0NkZCRjQwMDE0MDc2MSAvKiBX
ZWJDb3JlTlNVUkxTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkNvcmVOU1VSTFNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyN0FF
NEUyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzA2MTcsNiArMzA2MjEsOCBAQAogCQkJCUNEQzhCNUE1MTgwNDc0RjcwMDE2RTY4NSAv
KiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJQ0RDOEI1QTQxODA0NzRGNzAw
MTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJCQkJN0EyOUY1NzEx
OEM2OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCAqLywKKwkJ
CQlDRDIwRUQzQTI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQuaCAqLywKKwkJ
CQlDRDIwRUQzQjI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQubW0gKi8sCiAJ
CQkJQ0RGOTk0RkEyNEMxMkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
aCAqLywKIAkJCQlDREY5OTRGQjI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbSAqLywKIAkJCQlDREM4QjVBOTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMuaCAqLywKQEAgLTM2NTg1LDYgKzM2NTkxLDcgQEAKIAkJCQlFQjBG
QjcwRDI3MEQwQjJFMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnNJbml0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUY1OTQxRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxp
ZmllZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QyMEVEM0MyNzg3OEZGQjAwMzhC
RTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTVFMzFGNDFF
MENCMEI1MDA0QjM3MUMgLyogUXVpY2tMb29rLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkFFRTky
QzIyMzg4QTdEMDA0MTU3QTkgLyogUXVpcmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlFMzcx
NzEzNzM2QTY2MDBCOUU5MTkgLyogUXVvdGVkUHJpbnRhYmxlLmggaW4gSGVhZGVycyAqLywKQEAg
LTM4NTY5LDYgKzM4NTc2LDcgQEAKIAkJCQlBQTEyREY0OTE3NDNERjgzMDA0REFGREYgLyogUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBMjlB
MzAxQ0JGNzRENDAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RBMjlBMTYxQ0JEQTU2QzAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNEMjBFRDNEMjc4NzhGRkIw
MDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxOTI0
MjQ5MjEyN0I5M0UwMDYzNEZDRiAvKiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTA3MUMwMDRCMjcwQjg2NDkwMEQwMjdDNyAvKiBSZXBsYXlL
aXRDYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMyQjFBRUMyMjM5N0VCQzAw
QjkxQ0Y3IC8qIFJlc291cmNlUmVzcG9uc2VDb2NvYS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggOTQ4ZDFkNDE3NDhlOWZhZDI5
MjJjYWY3MGNlYjY2OGI0ODhlOTk0MS4uNDYyM2QxOGFiMjczYWZhYjVhNzI1YmI0Yjg0NjE1NGRi
NmZmN2I5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC02
MDMsMTMgKzYwMywxNiBAQCB1bnNpZ25lZCBIVE1MVmlkZW9FbGVtZW50OjpyZXF1ZXN0VmlkZW9G
cmFtZUNhbGxiYWNrKFJlZjxWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYQogCiB2b2lkIEhUTUxWaWRl
b0VsZW1lbnQ6OmNhbmNlbFZpZGVvRnJhbWVDYWxsYmFjayh1bnNpZ25lZCBpZGVudGlmaWVyKQog
ewotICAgIGF1dG8gaW5kZXggPSBtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5maW5kTWF0Y2hpbmcoW2lk
ZW50aWZpZXJdKGF1dG8mIHJlcXVlc3QpIHsgcmV0dXJuIHJlcXVlc3QtPmlkZW50aWZpZXIgPT0g
aWRlbnRpZmllcjsgfSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1
cm47Ci0gICAgaWYgKG1faXNSdW5uaW5nVmlkZW9GcmFtZVJlcXVlc3RzKSB7Ci0gICAgICAgIG1f
dmlkZW9GcmFtZVJlcXVlc3RzW2luZGV4XS0+Y2FuY2VsbGVkID0gdHJ1ZTsKKyAgICAvLyBTZWFy
Y2ggZmlyc3QgdGhlIHJlcXVlc3RzIGN1cnJlbnRseSBiZWluZyBzZXJ2aWNlZCwgYW5kIG1hcmsg
dGhlbSBhcyBjYW5jZWxsZWQgaWYgZm91bmQuCisgICAgYXV0byBpbmRleCA9IG1fc2VydmljZWRW
aWRlb0ZyYW1lUmVxdWVzdHMuZmluZE1hdGNoaW5nKFtpZGVudGlmaWVyXShhdXRvJiByZXF1ZXN0
KSB7IHJldHVybiByZXF1ZXN0LT5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0pOworICAgIGlm
IChpbmRleCAhPSBub3RGb3VuZCkgeworICAgICAgICBtX3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVl
c3RzW2luZGV4XS0+Y2FuY2VsbGVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwor
ICAgIGluZGV4ID0gbV92aWRlb0ZyYW1lUmVxdWVzdHMuZmluZE1hdGNoaW5nKFtpZGVudGlmaWVy
XShhdXRvJiByZXF1ZXN0KSB7IHJldHVybiByZXF1ZXN0LT5pZGVudGlmaWVyID09IGlkZW50aWZp
ZXI7IH0pOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOwogICAg
IG1fdmlkZW9GcmFtZVJlcXVlc3RzLnJlbW92ZShpbmRleCk7CiAKICAgICBpZiAobV92aWRlb0Zy
YW1lUmVxdWVzdHMuaXNFbXB0eSgpICYmIHBsYXllcigpKQpAQCAtNjM5LDIwICs2NDIsMTQgQEAg
dm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXJ2aWNlUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja3Mo
UmVkdWNlZFJlc29sdXRpb25TZWNvbmQKIAogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMg
fTsKIAotICAgIC8vIFdlIHN0b3JlIHRoZSBzaXplIGJlZm9yZSBjYWxsaW5nIGNhbGxiYWNrcyBh
cyB3ZSBkbyBub3Qgd2FudCB0byBjYWxsIG5ld2x5IGFkZGVkIGNhbGxiYWNrcy4KLSAgICBhdXRv
IGNhbGxiYWNrQ291bnQgPSBtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5zaXplKCk7Ci0KLSAgICBtX2lz
UnVubmluZ1ZpZGVvRnJhbWVSZXF1ZXN0cyA9IHRydWU7Ci0gICAgZm9yIChzaXplX3QgaW5kZXgg
PSAwOyBpbmRleCA8IGNhbGxiYWNrQ291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byYgcmVx
dWVzdCA9IG1fdmlkZW9GcmFtZVJlcXVlc3RzW2luZGV4XTsKKyAgICBtX3ZpZGVvRnJhbWVSZXF1
ZXN0cy5zd2FwKG1fc2VydmljZWRWaWRlb0ZyYW1lUmVxdWVzdHMpOworICAgIGZvciAoYXV0byYg
cmVxdWVzdCA6IG1fc2VydmljZWRWaWRlb0ZyYW1lUmVxdWVzdHMpIHsKICAgICAgICAgaWYgKCFy
ZXF1ZXN0LT5jYW5jZWxsZWQpIHsKICAgICAgICAgICAgIHJlcXVlc3QtPmNhbGxiYWNrLT5oYW5k
bGVFdmVudChzdGQ6OnJvdW5kKG5vdy5taWxsaXNlY29uZHMoKSksICp2aWRlb0ZyYW1lTWV0YWRh
dGEpOwogICAgICAgICAgICAgcmVxdWVzdC0+Y2FuY2VsbGVkID0gdHJ1ZTsKICAgICAgICAgfQog
ICAgIH0KLSAgICBtX2lzUnVubmluZ1ZpZGVvRnJhbWVSZXF1ZXN0cyA9IGZhbHNlOwotCi0gICAg
bV92aWRlb0ZyYW1lUmVxdWVzdHMucmVtb3ZlQWxsTWF0Y2hpbmcoW10oYXV0byYgY2FsbGJhY2sp
IHsgcmV0dXJuIGNhbGxiYWNrLT5jYW5jZWxsZWQ7IH0pOworICAgIG1fc2VydmljZWRWaWRlb0Zy
YW1lUmVxdWVzdHMuY2xlYXIoKTsKIAogICAgIGlmIChtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5pc0Vt
cHR5KCkgJiYgcGxheWVyKCkpCiAgICAgICAgIHBsYXllcigpLT5zdG9wVmlkZW9GcmFtZU1ldGFk
YXRhR2F0aGVyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4
IDg1NmFkZWE3OGZiNzM5OGQ4ZmI0NWY0NDhhMzU5MWJkYTU1Zjk3MmMuLmY4ZDNiNDAzMmQ2MDI0
NGI1NDAxNzgzM2VhZmEwMDY5MDRkMWI0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5oCkBAIC0xNzIsOCArMTcyLDggQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjYW5j
ZWxsZWQgeyBmYWxzZSB9OwogICAgIH07CiAgICAgVmVjdG9yPFVuaXF1ZVJlZjxWaWRlb0ZyYW1l
UmVxdWVzdD4+IG1fdmlkZW9GcmFtZVJlcXVlc3RzOworICAgIFZlY3RvcjxVbmlxdWVSZWY8Vmlk
ZW9GcmFtZVJlcXVlc3Q+PiBtX3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVlc3RzOwogICAgIHVuc2ln
bmVkIG1fbmV4dFZpZGVvRnJhbWVSZXF1ZXN0SW5kZXggeyAwIH07Ci0gICAgYm9vbCBtX2lzUnVu
bmluZ1ZpZGVvRnJhbWVSZXF1ZXN0cyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMWU2NTc1NzI0NjU0OTczNDNjZGUyYTI0
ZDhmMGRjNmI0ZTAyNjdlMS4uYzQwOTg1MzgzYjNiNTJiOGEyZmM5YTdhNDU4NDk5ZWQ2MDhiMDZh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPENv
cmVNZWRpYS9DTVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgogCiBPQkpDX0NMQVNTIEFW
QXNzZXRJbWFnZUdlbmVyYXRvcjsKIE9CSkNfQ0xBU1MgQVZBc3NldFRyYWNrOwpAQCAtNjcsNiAr
NjgsNyBAQCBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBN
ZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBj
bGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOworY2xhc3MgUXVldWVkVmlkZW9PdXRwdXQ7CiBj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgVmlkZW9MYXllck1hbmFnZXJPYmpD
OwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOwpAQCAtMzQ3LDcgKzM0OSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzdGFydFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpIGZpbmFs
OwogICAgIHZvaWQgc3RvcFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpIGZpbmFsOwogICAg
IHN0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZU1ldGFkYXRhPiB2aWRlb0ZyYW1lTWV0YWRhdGEoKSBm
aW5hbCB7IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fdmlkZW9GcmFtZU1ldGFkYXRhLCB7IH0pOyB9
Ci0gICAgdm9pZCBjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YShDTVRpbWUpOworICAgIHZvaWQg
Y2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoKTsKIAogICAgIFJldGFpblB0cjxBVlVSTEFzc2V0
PiBtX2F2QXNzZXQ7CiAgICAgUmV0YWluUHRyPEFWUGxheWVyPiBtX2F2UGxheWVyOwpAQCAtMzY3
LDcgKzM2OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJldGFpblB0cjxBVkFzc2V0SW1h
Z2VHZW5lcmF0b3I+IG1faW1hZ2VHZW5lcmF0b3I7Ci0gICAgUmV0YWluUHRyPEFWUGxheWVySXRl
bVZpZGVvT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OworICAgIFJlZlB0cjxRdWV1ZWRWaWRlb091dHB1
dD4gbV92aWRlb091dHB1dDsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZT4g
bV92aWRlb091dHB1dERlbGVnYXRlOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBt
X2xhc3RQaXhlbEJ1ZmZlcjsKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwpA
QCAtNDY0LDYgKzQ2Niw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1l
TWV0YWRhdGE+IG1fdmlkZW9GcmFtZU1ldGFkYXRhOwogICAgIG11dGFibGUgc3RkOjpvcHRpb25h
bDxOU1RpbWVJbnRlcnZhbD4gbV9jYWNoZWRTZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRU
aW1lOwogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxOU1RpbWVJbnRlcnZhbD4gbV9jYWNoZWRM
aXZlVXBkYXRlSW50ZXJ2YWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPE9ic2VydmVyPHZvaWQoKT4+
IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxPYnNl
cnZlcjx2b2lkKCk+PiBtX3dhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2VPYnNl
cnZlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGMwNjdjY2U4MDY4NmY3
YTFiYzU0MTRiYWY3N2Y3NTI1MmJmMzQyYzcuLjRjZmY1ZTczNGJhOWY4NDdhYWQ1MGU2YWNjOGVl
YWE3ZGVlMGViMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNTgsNiArNTgsNyBAQAog
I2ltcG9ydCAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbXBvcnQgIlBsYXRmb3JtVGV4dFRyYWNrLmgi
CiAjaW1wb3J0ICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKKyNpbXBvcnQgIlF1ZXVlZFZpZGVvT3V0
cHV0LmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNj
cmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2ltcG9ydCAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTIw
NSwxNiArMjA2LDYgQEAgLSAoaWQpaW5pdFdpdGhQbGF5ZXI6KFdlYWtQdHI8TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQz4mJilwbGF5ZXI7CiAtIChCT09MKXJlc291cmNlTG9hZGVy
OihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9yTG9h
ZGluZ09mUmVxdWVzdGVkUmVzb3VyY2U6KEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICop
bG9hZGluZ1JlcXVlc3Q7CiBAZW5kCiAKLUBpbnRlcmZhY2UgV2ViQ29yZUFWRlB1bGxEZWxlZ2F0
ZSA6IE5TT2JqZWN0PEFWUGxheWVySXRlbU91dHB1dFB1bGxEZWxlZ2F0ZT4gewotICAgIEJpbmFy
eVNlbWFwaG9yZSBtX3NlbWFwaG9yZTsKLX0KLS0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRy
PE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpcGxheWVyOwotLSAodm9pZClv
dXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOihBVlBsYXllckl0ZW1PdXRwdXQgKilzZW5kZXI7Ci0t
ICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0
cHV0OwotCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJpbmFyeVNlbWFwaG9yZSYg
c2VtYXBob3JlOwotQGVuZAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgU3RyaW5nIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKEFWUGxheWVyVGltZUNvbnRyb2xTdGF0dXMgZW51bWVy
YXRpb25WYWx1ZSkKIHsKQEAgLTI2MSwxNiArMjUyLDYgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVl
X3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpCiAgICAgcmV0dXJuIGdsb2JhbFF1ZXVlOwog
fQogCi1zdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpCi17
Ci0gICAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUXVldWU7Ci0gICAgc3RhdGljIGRp
c3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBe
ewotICAgICAgICBnbG9iYWxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZUFW
RlB1bGxEZWxlZ2F0ZSBxdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7Ci0gICAgfSk7Ci0g
ICAgcmV0dXJuIGdsb2JhbFF1ZXVlOwotfQotCiBzdGF0aWMgdm9pZCByZWdpc3RlckZvcm1hdFJl
YWRlcklmTmVjZXNzYXJ5KCkKIHsKICNpZiBFTkFCTEUoV0VCTV9GT1JNQVRfUkVBREVSKQpAQCAt
NDY5LDcgKzQ1MCw4IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6On5NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKCkKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBt
X3Jlc291cmNlTG9hZGVyTWFwKQogICAgICAgICBwYWlyLnZhbHVlLT5pbnZhbGlkYXRlKCk7CiAK
LSAgICBbbV92aWRlb091dHB1dCBzZXREZWxlZ2F0ZTpuaWwgcXVldWU6MF07CisgICAgaWYgKG1f
dmlkZW9PdXRwdXQpCisgICAgICAgIG1fdmlkZW9PdXRwdXQtPmludmFsaWRhdGUoKTsKIAogICAg
IGlmIChtX3ZpZGVvTGF5ZXIpCiAgICAgICAgIGRlc3Ryb3lWaWRlb0xheWVyKCk7CkBAIC03MDIs
NyArNjg0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpoYXNB
dmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QKICAgICBpZiAoY3VycmVudFJlbmRlcmluZ01vZGUo
KSA9PSBNZWRpYVJlbmRlcmluZ01vZGU6Ok1lZGlhUmVuZGVyaW5nVG9MYXllcikKICAgICAgICAg
cmV0dXJuIG1fY2FjaGVkSXNSZWFkeUZvckRpc3BsYXk7CiAKLSAgICBpZiAobV92aWRlb091dHB1
dCAmJiAobV9sYXN0UGl4ZWxCdWZmZXIgfHwgW21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4ZWxCdWZm
ZXJGb3JJdGVtVGltZTpbbV9hdlBsYXllckl0ZW0gY3VycmVudFRpbWVdXSkpCisgICAgaWYgKG1f
dmlkZW9PdXRwdXQgJiYgKG1fbGFzdFBpeGVsQnVmZmVyIHx8IG1fdmlkZW9PdXRwdXQtPmhhc0lt
YWdlRm9yVGltZShjdXJyZW50TWVkaWFUaW1lKCkpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICByZXR1cm4gbV92aWRlb0ZyYW1lSGFzRHJhd247CkBAIC0xNDQ0LDM0ICsxNDI2LDMwIEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1QYXVzZWQo
KSBjb25zdAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN0YXJ0
VmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nKCkKIHsKLSAgICBBU1NFUlQoIW1fdmlkZW9GcmFt
ZU1ldGFkYXRhR2F0aGVyaW5nT2JzZXJ2ZXIgfHwgbV9hdlBsYXllcik7Ci0gICAgbV9pc0dhdGhl
cmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSA9IHRydWU7CisgICAgLy8gcmVxdWVzdFZpZGVvRnJhbWVD
YWxsYmFjaygpIGNhcmVzIGFib3V0IHRoZSAvbmV4dC8gYXZhaWxhYmxlIGZyYW1lLiBQdWxsIHRo
ZSBjdXJyZW50IGZyYW1lIGZyb20KKyAgICAvLyB0aGUgUXVldWVkVmlkZW9PdXRwdXQgc28gcGFp
bnRzIG9mIHRoZSBjdXJyZW50IGZyYW1lIHN1Y2NlZWQ7CisgICAgdXBkYXRlTGFzdFBpeGVsQnVm
ZmVyKCk7CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBhIENBRGlzcGxheUxpbmsgdG8g
Z2V0IHVwZGF0ZXMgb24gcmVuZGVyaW5nLCBmb3Igbm93IHdlIGVtdWxhdGUgd2l0aCBhZGRQZXJp
b2RpY1RpbWVPYnNlcnZlckZvckludGVydmFsLgotICAgIG1fdmlkZW9GcmFtZU1ldGFkYXRhR2F0
aGVyaW5nT2JzZXJ2ZXIgPSBbbV9hdlBsYXllciBhZGRQZXJpb2RpY1RpbWVPYnNlcnZlckZvcklu
dGVydmFsOlBBTDo6Q01UaW1lTWFrZSgxLCA2MCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XShDTVRpbWUgY3Vy
cmVudFRpbWUpIHsKLSAgICAgICAgZW5zdXJlT25NYWluVGhyZWFkKFt3ZWFrVGhpcywgY3VycmVu
dFRpbWVdIHsKLSAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICB3ZWFr
VGhpcy0+Y2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoY3VycmVudFRpbWUpOwotICAgICAgICB9
KTsKLSAgICB9XTsKKyAgICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciA9IFdURjo6bWFr
ZVVuaXF1ZTxPYnNlcnZlcjx2b2lkKCk+PihbdGhpc10geworICAgICAgICBtX2N1cnJlbnRJbWFn
ZUNoYW5nZWRPYnNlcnZlciA9IG51bGxwdHI7CisgICAgICAgIGNoZWNrTmV3VmlkZW9GcmFtZU1l
dGFkYXRhKCk7CisgICAgfSk7CisKKyAgICBpZiAobV92aWRlb091dHB1dCkKKyAgICAgICAgbV92
aWRlb091dHB1dC0+YWRkQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKCptX2N1cnJlbnRJbWFn
ZUNoYW5nZWRPYnNlcnZlcik7CisKKyAgICBtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRh
ID0gdHJ1ZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpj
aGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YShDTVRpbWUgY3VycmVudFRpbWUpCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRh
KCkKIHsKLSAgICBpZiAoIXVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpKQorICAgIGlmICghbV9pc0dh
dGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmlkZW9G
cmFtZU1ldGFkYXRhIG1ldGFkYXRhOwotICAgIG1ldGFkYXRhLndpZHRoID0gbV9jYWNoZWRQcmVz
ZW50YXRpb25TaXplLndpZHRoKCk7Ci0gICAgbWV0YWRhdGEuaGVpZ2h0ID0gbV9jYWNoZWRQcmVz
ZW50YXRpb25TaXplLmhlaWdodCgpOwotICAgIG1ldGFkYXRhLnByZXNlbnRlZEZyYW1lcyA9ICsr
bV9zYW1wbGVDb3VudDsKLSAgICBtZXRhZGF0YS5tZWRpYVRpbWUgPSBQQUw6OkNNVGltZUdldFNl
Y29uZHMoY3VycmVudFRpbWUpOwotICAgIC8vIEZJWE1FOiBwcmVzZW50YXRpb25UaW1lIGFuZCBl
eHBlY3RlZERpc3BsYXlUaW1lIG1pZ2h0IG5vdCBhbHdheXMgaGF2ZSB0aGUgc2FtZSB2YWx1ZSwg
d2Ugc2hvdWxkIHRyeSBnZXR0aW5nIG1vcmUgcHJlY2lzZSB2YWx1ZXMuCi0gICAgbWV0YWRhdGEu
cHJlc2VudGF0aW9uVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2No
KCkuc2Vjb25kcygpOwotICAgIG1ldGFkYXRhLmV4cGVjdGVkRGlzcGxheVRpbWUgPSBtZXRhZGF0
YS5wcmVzZW50YXRpb25UaW1lOworICAgIGlmICghdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkgJiYg
IW1fdmlkZW9GcmFtZU1ldGFkYXRhKQorICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvRnJh
bWVNZXRhZGF0YSA9IG1ldGFkYXRhOwotICAgIHBsYXllcigpLT5vbk5ld1ZpZGVvRnJhbWVNZXRh
ZGF0YShXVEZNb3ZlKG1ldGFkYXRhKSwgbV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIHBs
YXllcigpLT5vbk5ld1ZpZGVvRnJhbWVNZXRhZGF0YShXVEZNb3ZlKCptX3ZpZGVvRnJhbWVNZXRh
ZGF0YSksIG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdG9wVmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nKCkK
QEAgLTI1MTgsMTcgKzI0OTYsMTcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpjcmVhdGVWaWRlb091dHB1dCgpCiAgICAgaWYgKCFtX2F2UGxheWVySXRlbSB8fCBt
X3ZpZGVvT3V0cHV0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvT3V0cHV0ID0gYWRv
cHROUyhbUEFMOjphbGxvY0FWUGxheWVySXRlbVZpZGVvT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0
aFBpeGVsQnVmZmVyQXR0cmlidXRlczpuaWxdKTsKKyAgICBtX3ZpZGVvT3V0cHV0ID0gUXVldWVk
VmlkZW9PdXRwdXQ6OmNyZWF0ZShtX2F2UGxheWVySXRlbS5nZXQoKSwgbV9hdlBsYXllci5nZXQo
KSk7CiAgICAgQVNTRVJUKG1fdmlkZW9PdXRwdXQpOwogICAgIGlmICghbV92aWRlb091dHB1dCkg
ewogICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIi1bQVZQbGF5ZXJJdGVtVmlkZW9P
dXRwdXQgaW5pdFdpdGhQaXhlbEJ1ZmZlckF0dHJpYnV0ZXM6XSBmYWlsZWQhIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisgICAgaWYgKG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKQor
ICAgICAgICBtX3ZpZGVvT3V0cHV0LT5hZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoKm1f
Y3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKTsKIAotICAgIG1fdmlkZW9PdXRwdXREZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tXZWJDb3JlQVZGUHVsbERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBsYXll
cjoqdGhpc10pOwotICAgIFttX3ZpZGVvT3V0cHV0IHNldERlbGVnYXRlOm1fdmlkZW9PdXRwdXRE
ZWxlZ2F0ZS5nZXQoKSBxdWV1ZTpnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpXTsKLQotICAgIFtt
X2F2UGxheWVySXRlbSBhZGRPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQoKV07CisgICAgaWYgKG1f
d2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZU9ic2VydmVyKQorICAgICAgICBt
X3ZpZGVvT3V0cHV0LT5hZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoKm1fd2FpdEZvclZp
ZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZU9ic2VydmVyKTsKIAogICAgIHNldE5lZWRzUmVu
ZGVyaW5nTW9kZUNoYW5nZWQoKTsKIH0KQEAgLTI1MzgsMTkgKzI1MTYsMTkgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95VmlkZW9PdXRwdXQoKQogICAg
IGlmICghbV92aWRlb091dHB1dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fYXZQbGF5
ZXJJdGVtKQotICAgICAgICBbbV9hdlBsYXllckl0ZW0gcmVtb3ZlT3V0cHV0Om1fdmlkZW9PdXRw
dXQuZ2V0KCldOwotCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKLSAgICBtX3ZpZGVv
T3V0cHV0ID0gMDsKKyAgICBtX3ZpZGVvT3V0cHV0LT5pbnZhbGlkYXRlKCk7CisgICAgbV92aWRl
b091dHB1dCA9IG51bGxwdHI7CisKKyAgICBtX3ZpZGVvRnJhbWVNZXRhZGF0YSA9IHsgfTsKIAog
ICAgIHNldE5lZWRzUmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIH0KIAogYm9vbCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKQogewotICAg
IGlmICghbV9hdlBsYXllckl0ZW0gfHwgcmVhZHlTdGF0ZSgpIDwgTWVkaWFQbGF5ZXI6OlJlYWR5
U3RhdGU6OkhhdmVDdXJyZW50RGF0YSkKKyAgICBpZiAoIW1fYXZQbGF5ZXJJdGVtKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2hhdmVCZWVuQXNrZWRUb1BhaW50ID0gdHJ1ZTsKQEAg
LTI1NTksMTIgKzI1MzcsMjUgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKQogICAgICAgICBjcmVhdGVWaWRlb091dHB1dCgp
OwogICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0KTsKIAotICAgIENNVGltZSBjdXJyZW50VGltZSA9
IFttX2F2UGxheWVySXRlbSBjdXJyZW50VGltZV07CisgICAgYXV0byBjdXJyZW50VGltZSA9IGN1
cnJlbnRNZWRpYVRpbWUoKTsKIAotICAgIGlmICghW21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4ZWxC
dWZmZXJGb3JJdGVtVGltZTpjdXJyZW50VGltZV0pCisgICAgaWYgKCFtX3ZpZGVvT3V0cHV0LT5o
YXNJbWFnZUZvclRpbWUoY3VycmVudFRpbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBtX2xhc3RQaXhlbEJ1ZmZlciA9IGFkb3B0Q0YoW21fdmlkZW9PdXRwdXQgY29weVBpeGVsQnVm
ZmVyRm9ySXRlbVRpbWU6Y3VycmVudFRpbWUgaXRlbVRpbWVGb3JEaXNwbGF5Om5pbF0pOworICAg
IGF1dG8gZW50cnkgPSBtX3ZpZGVvT3V0cHV0LT50YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShj
dXJyZW50VGltZSk7CisgICAgbV9sYXN0UGl4ZWxCdWZmZXIgPSBXVEZNb3ZlKGVudHJ5LnBpeGVs
QnVmZmVyKTsKKworICAgIGlmIChtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhKSB7Cisg
ICAgICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29u
ZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpIC0gKGN1cnJlbnRUaW1lIC0gZW50cnkuZGlzcGxheVRp
bWUpLnRvRG91YmxlKCk7CisgICAgICAgIG1fdmlkZW9GcmFtZU1ldGFkYXRhID0geworICAgICAg
ICAgICAgLndpZHRoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENWUGl4ZWxCdWZmZXJHZXRXaWR0
aChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpLAorICAgICAgICAgICAgLmhlaWdodCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVy
LmdldCgpKSksCisgICAgICAgICAgICAucHJlc2VudGVkRnJhbWVzID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KCsrbV9zYW1wbGVDb3VudCksCisgICAgICAgICAgICAubWVkaWFUaW1lID0gZW50cnku
ZGlzcGxheVRpbWUudG9Eb3VibGUoKSwKKyAgICAgICAgICAgIC5wcmVzZW50YXRpb25UaW1lID0g
cHJlc2VudGF0aW9uVGltZSwKKyAgICAgICAgICAgIC5leHBlY3RlZERpc3BsYXlUaW1lID0gcHJl
c2VudGF0aW9uVGltZSwKKyAgICAgICAgfTsKKyAgICB9CiAKICAgICBpZiAobV9pbWFnZVJvdGF0
aW9uU2Vzc2lvbikKICAgICAgICAgbV9sYXN0UGl4ZWxCdWZmZXIgPSBtX2ltYWdlUm90YXRpb25T
ZXNzaW9uLT5yb3RhdGUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwpAQCAtMjU4NCw3ICsyNTc1
LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb091dHB1
dEhhc0F2YWlsYWJsZUZyYW1lKCkKICAgICBpZiAoIW1fdmlkZW9PdXRwdXQpCiAgICAgICAgIGNy
ZWF0ZVZpZGVvT3V0cHV0KCk7CiAKLSAgICByZXR1cm4gW21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4
ZWxCdWZmZXJGb3JJdGVtVGltZTpbbV9hdlBsYXllckl0ZW0gY3VycmVudFRpbWVdXTsKKyAgICBy
ZXR1cm4gbV92aWRlb091dHB1dC0+aGFzSW1hZ2VGb3JUaW1lKFBBTDo6dG9NZWRpYVRpbWUoW21f
YXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXSkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlIHR5cGUpCkBAIC0y
NjAyLDcgKzI1OTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlIHR5cGUpCiAgICAgLy8gQ2FsbHMgdG8gY29weVBp
eGVsQnVmZmVyRm9ySXRlbVRpbWU6aXRlbVRpbWVGb3JEaXNwbGF5OiBtYXkgcmV0dXJuIG5pbCBp
ZiB0aGUgcGl4ZWwgYnVmZmVyCiAgICAgLy8gZm9yIHRoZSByZXF1ZXN0ZWQgdGltZSBoYXMgYWxy
ZWFkeSBiZWVuIHJldHJpZXZlZC4gSW4gdGhpcyBjYXNlLCB0aGUgbGFzdCB2YWxpZCBpbWFnZSAo
aWYgYW55KQogICAgIC8vIHNob3VsZCBiZSBkaXNwbGF5ZWQuCi0gICAgaWYgKChtX2lzR2F0aGVy
aW5nVmlkZW9GcmFtZU1ldGFkYXRhIHx8ICF1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSkgJiYgKG1f
bGFzdEltYWdlIHx8ICFtX2xhc3RQaXhlbEJ1ZmZlcikpCisgICAgaWYgKCF1cGRhdGVMYXN0UGl4
ZWxCdWZmZXIoKSAmJiAobV9sYXN0SW1hZ2UgfHwgIW1fbGFzdFBpeGVsQnVmZmVyKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3BpeGVsQnVmZmVyQ29uZm9ybWVyKSB7CkBAIC0yNjM3
LDggKzI2MjgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBh
aW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYgYwogCiBSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGl4ZWxCdWZm
ZXJGb3JDdXJyZW50VGltZSgpCiB7Ci0gICAgaWYgKCFtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1l
dGFkYXRhKQotICAgICAgICB1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKTsKKyAgICB1cGRhdGVMYXN0
UGl4ZWxCdWZmZXIoKTsKIAogICAgIHJldHVybiBtX2xhc3RQaXhlbEJ1ZmZlcjsKIH0KQEAgLTI2
NjksNyArMjY1OSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OndhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQogICAgIHN0ZDo6b3B0aW9u
YWw8UnVuTG9vcDo6VGltZXI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4+IHRp
bWVvdXRUaW1lcjsKIAogICAgIGlmICghbV9ydW5Mb29wTmVzdGluZ0xldmVsKSB7Ci0gICAgICAg
IFttX3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZVdpdGhB
ZHZhbmNlSW50ZXJ2YWw6MF07CisgICAgICAgIG1fd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRh
V2lsbENoYW5nZU9ic2VydmVyID0gV1RGOjptYWtlVW5pcXVlPE9ic2VydmVyPHZvaWQoKT4+KFt0
aGlzLCBsb2dJZGVudGlmaWVyID0gTE9HSURFTlRJRklFUl0gKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBpZiAobV9ydW5Mb29wTmVzdGluZ0xldmVsKQorICAgICAgICAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5zdG9wKCk7CisgICAgICAgIH0pOworICAgICAgICBtX3ZpZGVvT3V0cHV0LT5hZGRD
dXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIobV93YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFX
aWxsQ2hhbmdlT2JzZXJ2ZXIpOwogCiAgICAgICAgIHRpbWVvdXRUaW1lci5lbXBsYWNlKFJ1bkxv
b3A6Om1haW4oKSwgWyZdIHsKICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5zdG9wKCk7CkBA
IC0yNjk2LDE1ICsyNjkwLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjp3YWl0Rm9yVmlkZW9PdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlKCkKIAogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdl
KCkKIHsKLSAgICBpZiAobV9ydW5Mb29wTmVzdGluZ0xldmVsKSB7Ci0gICAgICAgIGlmIChSdW5M
b29wOjppc01haW4oKSkKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5zdG9wKCk7Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtdIHsKLSAg
ICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0KLSAgICB9CisgICAgY2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoKTsKIH0KIAog
I2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQpAQCAtNDA4OSwzNyArNDA3NSw0IEBA
IC0gKHZvaWQpcmVzb3VyY2VMb2FkZXI6KEFWQXNzZXRSZXNvdXJjZUxvYWRlciAqKXJlc291cmNl
TG9hZGVyIGRpZENhbmNlbExvYWRpbmdSCiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdlYkNv
cmVBVkZQdWxsRGVsZWdhdGUgewotICAgIFdlYWtQdHI8V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQz4gX3BsYXllcjsKLX0KLQotQHN5bnRoZXNpemUgc2VtYXBob3Jl
ID0gbV9zZW1hcGhvcmU7Ci0KLS0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpcGxheWVyCi17Ci0gICAgc2VsZiA9IFtzdXBl
ciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgX3BsYXll
ciA9IFdURk1vdmUocGxheWVyKTsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClvdXRw
dXRNZWRpYURhdGFXaWxsQ2hhbmdlOihBVlBsYXllckl0ZW1WaWRlb091dHB1dCAqKW91dHB1dAot
ewotICAgIFVOVVNFRF9QQVJBTShvdXRwdXQpOwotICAgIG1fc2VtYXBob3JlLnNpZ25hbCgpOwot
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3NlbGYsIHN0cm9uZ1NlbGYgPSBSZXRhaW5QdHIgeyBzZWxm
IH1dIHsKLSAgICAgICAgaWYgKF9wbGF5ZXIpCi0gICAgICAgICAgICBfcGxheWVyLT5vdXRwdXRN
ZWRpYURhdGFXaWxsQ2hhbmdlKCk7Ci0gICAgfSk7Ci19Ci0KLS0gKHZvaWQpb3V0cHV0U2VxdWVu
Y2VXYXNGbHVzaGVkOihBVlBsYXllckl0ZW1WaWRlb091dHB1dCAqKW91dHB1dAotewotICAgIFVO
VVNFRF9QQVJBTShvdXRwdXQpOwotICAgIC8vIE5vLW9wLgotfQotCi1AZW5kCi0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvUXVldWVkVmlkZW9PdXRwdXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGJh
ZjBlYTExZTVjNGZiZTMyNGQ5NTI1YWRmMWJkYjNjNjMzMGE4OAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVl
ZFZpZGVvT3V0cHV0LmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvT2JzZXJ2
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha0hhc2hTZXQuaD4KKworT0JKQ19DTEFTUyBBVlBsYXll
cjsKK09CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtOworT0JKQ19DTEFTUyBBVlBsYXllckl0ZW1WaWRl
b091dHB1dDsKK09CSkNfQ0xBU1MgV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZTsKKwordHlw
ZWRlZiBzdHJ1Y3QgX19DVkJ1ZmZlciAqQ1ZQaXhlbEJ1ZmZlclJlZjsKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBRdWV1ZWRWaWRlb091dHB1dAorICAgIDogcHVibGljIFJlZkNvdW50
ZWQ8UXVldWVkVmlkZW9PdXRwdXQ+CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UXVldWVk
VmlkZW9PdXRwdXQ+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPFF1ZXVlZFZpZGVvT3V0cHV0PiBjcmVhdGUoQVZQbGF5ZXJJdGVtKiwgQVZQ
bGF5ZXIqKTsKKyAgICB+UXVldWVkVmlkZW9PdXRwdXQoKTsKKworICAgIHZvaWQgaW52YWxpZGF0
ZSgpOworICAgIGJvb2wgaGFzSW1hZ2VGb3JUaW1lKGNvbnN0IE1lZGlhVGltZSYpIGNvbnN0Owor
CisgICAgc3RydWN0IFZpZGVvRnJhbWVFbnRyeSB7CisgICAgICAgIFJldGFpblB0cjxDVlBpeGVs
QnVmZmVyUmVmPiBwaXhlbEJ1ZmZlcjsKKyAgICAgICAgTWVkaWFUaW1lIGRpc3BsYXlUaW1lOwor
ICAgIH07CisgICAgVmlkZW9GcmFtZUVudHJ5IHRha2VWaWRlb0ZyYW1lRW50cnlGb3JUaW1lKGNv
bnN0IE1lZGlhVGltZSYpOworCisgICAgdm9pZCBhZGRWaWRlb0ZyYW1lRW50cmllcyhWZWN0b3I8
VmlkZW9GcmFtZUVudHJ5PiYmKTsKKyAgICB2b2lkIHB1cmdlVmlkZW9GcmFtZUVudHJpZXMoKTsK
KworICAgIHVzaW5nIEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciA9IE9ic2VydmVyPHZvaWQo
KT47CisgICAgdm9pZCBhZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoY29uc3QgQ3VycmVu
dEltYWdlQ2hhbmdlZE9ic2VydmVyJik7CisKKyAgICB1c2luZyBJbWFnZU1hcCA9IHN0ZDo6bWFw
PE1lZGlhVGltZSwgUmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+PjsKKworICAgIHZvaWQgcmF0
ZUNoYW5nZWQoZmxvYXQpOworCitwcml2YXRlOgorICAgIFF1ZXVlZFZpZGVvT3V0cHV0KEFWUGxh
eWVySXRlbSosIEFWUGxheWVyKik7CisKKyAgICB2b2lkIHB1cmdlSW1hZ2VzQmVmb3JlVGltZShj
b25zdCBNZWRpYVRpbWUmKTsKKyAgICB2b2lkIGNvbmZpZ3VyZU5leHRJbWFnZVRpbWVPYnNlcnZl
cigpOworICAgIHZvaWQgY2FuY2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisgICAgdm9pZCBu
ZXh0SW1hZ2VUaW1lUmVhY2hlZCgpOworCisgICAgUmV0YWluUHRyPEFWUGxheWVySXRlbT4gbV9w
bGF5ZXJJdGVtOworICAgIFJldGFpblB0cjxBVlBsYXllcj4gbV9wbGF5ZXI7CisgICAgUmV0YWlu
UHRyPFdlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGU+IG1fZGVsZWdhdGU7CisgICAgUmV0YWlu
UHRyPEFWUGxheWVySXRlbVZpZGVvT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OworICAgIFJldGFpblB0
cjxpZD4gbV92aWRlb1RpbWViYXNlT2JzZXJ2ZXI7CisgICAgUmV0YWluUHRyPGlkPiBtX25leHRJ
bWFnZVRpbWViYXNlT2JzZXJ2ZXI7CisKKyAgICBJbWFnZU1hcCBtX3ZpZGVvRnJhbWVzOworICAg
IFdlYWtIYXNoU2V0PEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcj4gbV9jdXJyZW50SW1hZ2VD
aGFuZ2VkT2JzZXJ2ZXJzOworCisgICAgYm9vbCBtX3BhdXNlZCB7IHRydWUgfTsKK307CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBiYzA4MzgxNGMwOGM3ZGVlZDYxYzkwNzljMjJiZTNmNTA3OGE3N2UKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbQpAQCAtMCwwICsxLDMwOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJRdWV1ZWRWaWRlb091dHB1dC5oIgor
CisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSA8QVZGb3VuZGF0aW9uL0FWUGxheWVySXRl
bU91dHB1dC5oPgorI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0
aW9uLmg+CisjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KKworI2luY2x1ZGUgPHBh
bC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorI2luY2x1ZGUgPHBhbC9jb2NvYS9BVkZvdW5kYXRp
b25Tb2Z0TGluay5oPgorCitAaW50ZXJmYWNlIFdlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUg
OiBOU09iamVjdDxBVlBsYXllckl0ZW1PdXRwdXRQdWxsRGVsZWdhdGU+IHsKKyAgICBXZWFrUHRy
PFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0PiBfcGFyZW50OworfQorLSAoaWQpaW5pdFdpdGhQ
YXJlbnQ6KFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0KilwYXJlbnQ7CistICh2b2lkKW91dHB1
dE1lZGlhRGF0YVdpbGxDaGFuZ2U6KEFWUGxheWVySXRlbU91dHB1dCAqKW91dHB1dDsKKy0gKHZv
aWQpb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOihBVlBsYXllckl0ZW1PdXRwdXQgKilvdXRwdXQ7
CistICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDooaWQpb2Jq
ZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQqKWNvbnRleHQ7
CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlCist
IChpZClpbml0V2l0aFBhcmVudDooV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQqKXBhcmVudAor
eworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1
cm4gbmlsOworCisgICAgX3BhcmVudCA9IHBhcmVudDsKKyAgICByZXR1cm4gc2VsZjsKK30KKwor
LSAodm9pZClvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOihBVlBsYXllckl0ZW1PdXRwdXQgKilv
dXRwdXQKK3sKKyAgICBBU1NFUlQoW291dHB1dCBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZQbGF5
ZXJJdGVtVmlkZW9PdXRwdXRDbGFzcygpXSk7CisgICAgYXV0byogdmlkZW9PdXRwdXQgPSAoQVZQ
bGF5ZXJJdGVtVmlkZW9PdXRwdXQqKW91dHB1dDsKKworICAgIFZlY3RvcjxXZWJDb3JlOjpRdWV1
ZWRWaWRlb091dHB1dDo6VmlkZW9GcmFtZUVudHJ5PiB2aWRlb0ZyYW1lRW50cmllczsKKyAgICBk
byB7CisgICAgICAgIENNVGltZSBlYXJsaWVzdFRpbWUgPSBbdmlkZW9PdXRwdXQgZWFybGllc3RB
dmFpbGFibGVQaXhlbEJ1ZmZlckl0ZW1UaW1lXTsKKyAgICAgICAgaWYgKENNVElNRV9JU19JTlZB
TElEKGVhcmxpZXN0VGltZSkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBhdXRvIHBp
eGVsQnVmZmVyID0gYWRvcHRDRihbdmlkZW9PdXRwdXQgY29weVBpeGVsQnVmZmVyRm9ySXRlbVRp
bWU6ZWFybGllc3RUaW1lIGl0ZW1UaW1lRm9yRGlzcGxheTpuaWxdKTsKKyAgICAgICAgaWYgKCFw
aXhlbEJ1ZmZlcikKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHZpZGVvRnJhbWVFbnRy
aWVzLmFwcGVuZCh7IFdURk1vdmUocGl4ZWxCdWZmZXIpLCBQQUw6OnRvTWVkaWFUaW1lKGVhcmxp
ZXN0VGltZSkgfSk7CisgICAgfSB3aGlsZSAodHJ1ZSk7CisKKyAgICBpZiAodmlkZW9GcmFtZUVu
dHJpZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjYWxsT25NYWluUnVuTG9v
cChbdmlkZW9GcmFtZUVudHJpZXMgPSBXVEZNb3ZlKHZpZGVvRnJhbWVFbnRyaWVzKSwgcGFyZW50
ID0gX3BhcmVudF0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChwYXJlbnQpCisgICAgICAgICAg
ICBwYXJlbnQtPmFkZFZpZGVvRnJhbWVFbnRyaWVzKFdURk1vdmUodmlkZW9GcmFtZUVudHJpZXMp
KTsKKyAgICB9KTsKK30KKworLSAodm9pZClvdXRwdXRTZXF1ZW5jZVdhc0ZsdXNoZWQ6KEFWUGxh
eWVySXRlbU91dHB1dCAqKW91dHB1dAoreworICAgIEFTU0VSVChbb3V0cHV0IGlzS2luZE9mQ2xh
c3M6UEFMOjpnZXRBVlBsYXllckl0ZW1WaWRlb091dHB1dENsYXNzKCldKTsKKyAgICBhdXRvKiB2
aWRlb091dHB1dCA9IChBVlBsYXllckl0ZW1WaWRlb091dHB1dCopb3V0cHV0OworICAgIFt2aWRl
b091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3Np
YmxlXTsKKworICAgIGNhbGxPbk1haW5SdW5Mb29wKFtwYXJlbnQgPSBfcGFyZW50XSB7CisgICAg
ICAgIGlmIChwYXJlbnQpCisgICAgICAgICAgICBwYXJlbnQtPnB1cmdlVmlkZW9GcmFtZUVudHJp
ZXMoKTsKKyAgICB9KTsKK30KKworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBh
dGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250
ZXh0Oih2b2lkKiljb250ZXh0Cit7CisgICAgaWYgKCFba2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6
QCJyYXRlIl0pCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmF0ZVZhbHVlID0gKE5TTnVt
YmVyKilbY2hhbmdlIHZhbHVlRm9yS2V5Ok5TS2V5VmFsdWVDaGFuZ2VOZXdLZXldOworICAgIEFT
U0VSVChbcmF0ZVZhbHVlIGlzS2luZE9mQ2xhc3M6TlNOdW1iZXIuY2xhc3NdKTsKKyAgICBhdXRv
IHJhdGUgPSByYXRlVmFsdWUuZmxvYXRWYWx1ZTsKKworICAgIGVuc3VyZU9uTWFpblJ1bkxvb3Ao
W3BhcmVudCA9IF9wYXJlbnQsIHJhdGVdIHsKKyAgICAgICAgaWYgKHBhcmVudCkKKyAgICAgICAg
ICAgIHBhcmVudC0+cmF0ZUNoYW5nZWQocmF0ZSk7CisgICAgfSk7Cit9CitAZW5kCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsT3V0cHV0RGVs
ZWdhdGVRdWV1ZSgpCit7CisgICAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUXVldWU7
CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25j
ZSgmb25jZVRva2VuLCBeeworICAgICAgICBnbG9iYWxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2Ny
ZWF0ZSgiV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBxdWV1ZSIsIERJU1BBVENIX1FVRVVF
X1NFUklBTCk7CisgICAgfSk7CisgICAgcmV0dXJuIGdsb2JhbFF1ZXVlOworfQorCitSZWY8UXVl
dWVkVmlkZW9PdXRwdXQ+IFF1ZXVlZFZpZGVvT3V0cHV0OjpjcmVhdGUoQVZQbGF5ZXJJdGVtKiBp
dGVtLCBBVlBsYXllciogcGxheWVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFF1ZXVl
ZFZpZGVvT3V0cHV0KGl0ZW0sIHBsYXllcikpOworfQorCitRdWV1ZWRWaWRlb091dHB1dDo6UXVl
dWVkVmlkZW9PdXRwdXQoQVZQbGF5ZXJJdGVtKiBpdGVtLCBBVlBsYXllciogcGxheWVyKQorICAg
IDogbV9wbGF5ZXJJdGVtKGl0ZW0pCisgICAgLCBtX3BsYXllcihwbGF5ZXIpCisgICAgLCBtX2Rl
bGVnYXRlKGFkb3B0TlMoW1tXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aFBhcmVudDp0aGlzXSkpCit7CisgICAgbV92aWRlb091dHB1dCA9IGFkb3B0TlMoW1BBTDo6
YWxsb2NBVlBsYXllckl0ZW1WaWRlb091dHB1dEluc3RhbmNlKCkgaW5pdFdpdGhQaXhlbEJ1ZmZl
ckF0dHJpYnV0ZXM6bmlsXSk7CisgICAgW21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bV9kZWxl
Z2F0ZS5nZXQoKSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCldOworICAgIFttX3Zp
ZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZUFzU29vbkFzUG9z
c2libGVdOworCisgICAgW21fcGxheWVySXRlbSBhZGRPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQo
KV07CisKKyAgICBbbV9wbGF5ZXIgYWRkT2JzZXJ2ZXI6bV9kZWxlZ2F0ZS5nZXQoKSBmb3JLZXlQ
YXRoOkAicmF0ZSIgb3B0aW9uczooTlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5ldyB8IE5TS2V5
VmFsdWVPYnNlcnZpbmdPcHRpb25Jbml0aWFsKSBjb250ZXh0Om5pbF07CisKKyAgICBtX3ZpZGVv
VGltZWJhc2VPYnNlcnZlciA9IFttX3BsYXllciBhZGRQZXJpb2RpY1RpbWVPYnNlcnZlckZvcklu
dGVydmFsOlBBTDo6Q01UaW1lTWFrZSgxLCA2MCkgcXVldWU6Z2xvYmFsT3V0cHV0RGVsZWdhdGVR
dWV1ZSgpIHVzaW5nQmxvY2s6W3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHByb3RlY3Rl
ZERlbGVnYXRlID0gbV9kZWxlZ2F0ZSwgcHJvdGVjdGVkT3V0cHV0ID0gbV92aWRlb091dHB1dF0o
Q01UaW1lIGN1cnJlbnRUaW1lKSBtdXRhYmxlIHsKKworICAgICAgICAvLyBQZXJpb2RpY2FsbHkg
Y2hlY2sgZm9yIG5ldyBhdmFpbGFibGUgcGl4ZWwgYnVmZmVycy4KKyAgICAgICAgW3Byb3RlY3Rl
ZERlbGVnYXRlIG91dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2U6cHJvdGVjdGVkT3V0cHV0LmdldCgp
XTsKKworICAgICAgICAvLyBBbmQgcHVyZ2UgdGhlIGJhY2sgYnVmZmVyIG9mIHBhc3QgZnJhbWVz
LgorICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSB3ZWFrVGhpcywgdGltZSA9
IFBBTDo6dG9NZWRpYVRpbWUoY3VycmVudFRpbWUpXSB7CisgICAgICAgICAgICBpZiAod2Vha1Ro
aXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPnB1cmdlSW1hZ2VzQmVmb3JlVGltZSh0aW1l
KTsKKyAgICAgICAgfSk7CisgICAgfV07Cit9CisKK1F1ZXVlZFZpZGVvT3V0cHV0Ojp+UXVldWVk
VmlkZW9PdXRwdXQoKQoreworICAgIGludmFsaWRhdGUoKTsKK30KKwordm9pZCBRdWV1ZWRWaWRl
b091dHB1dDo6aW52YWxpZGF0ZSgpCit7CisgICAgaWYgKG1fdmlkZW9UaW1lYmFzZU9ic2VydmVy
KSB7CisgICAgICAgIFttX3BsYXllciByZW1vdmVUaW1lT2JzZXJ2ZXI6bV92aWRlb1RpbWViYXNl
T2JzZXJ2ZXIuZ2V0KCldOworICAgICAgICBtX3ZpZGVvVGltZWJhc2VPYnNlcnZlciA9IG5pbDsK
KyAgICB9CisKKyAgICBjYW5jZWxOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKworICAgIGlmICht
X3ZpZGVvT3V0cHV0KSB7CisgICAgICAgIFttX3BsYXllckl0ZW0gcmVtb3ZlT3V0cHV0Om1fdmlk
ZW9PdXRwdXQuZ2V0KCldOworICAgICAgICBbbV92aWRlb091dHB1dCBzZXREZWxlZ2F0ZTpuaWwg
cXVldWU6bmlsXTsKKyAgICAgICAgbV92aWRlb091dHB1dCA9IG5pbDsKKyAgICB9CisKKyAgICBp
ZiAobV9wbGF5ZXIpIHsKKyAgICAgICAgW21fcGxheWVyIHJlbW92ZU9ic2VydmVyOm1fZGVsZWdh
dGUuZ2V0KCkgZm9yS2V5UGF0aDpAInJhdGUiXTsKKyAgICAgICAgbV9wbGF5ZXIgPSBuaWw7Cisg
ICAgfQorCisgICAgbV9wbGF5ZXJJdGVtID0gbmlsOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
TWF5YmVDb25zdE1hcCwgdHlwZW5hbWUgTWF5YmVDb25zdEl0ZXIgPSBkZWNsdHlwZShNYXliZUNv
bnN0TWFwKCkuYmVnaW4oKSk+CitNYXliZUNvbnN0SXRlciBmaW5kSW1hZ2VGb3JUaW1lKE1heWJl
Q29uc3RNYXAmIG1hcCwgY29uc3QgTWVkaWFUaW1lJiB0aW1lKQoreworICAgIC8vIE91dHB1dHMg
b2YgQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQgaGF2ZSBhIGRpc3BsYXkgdGltZSwgYnV0IG5vdCBh
IGR1cmF0aW9uOyB0aGV5IGFyZSB2YWxpZAorICAgIC8vIHVudGlsIHRoZSBhcnJpdmFsIG9mIGEg
bGF0ZXIgZnJhbWUuIEZpbmQgdGhpcyBmcmFtZSBlZmZpY2llbnRseSB1c2luZyBzZXQ6OnVwcGVy
X2JvdW5kIHRvIGZpbmQKKyAgICAvLyB0aGUgbmV4dCBkaXNwbGF5YWJsZSBmcmFtZSwgYW5kIHdh
bGsgYmFja3dhcmRzIGJ5IG9uZSB0byBmaW5kIGEgZnJhbWUgZm9yIHRoZSB0YXJnZXQgdGltZS4K
KyAgICBpZiAobWFwLmVtcHR5KCkpCisgICAgICAgIHJldHVybiBtYXAuZW5kKCk7CisKKyAgICBh
dXRvIGl0ZXIgPSBtYXAudXBwZXJfYm91bmQodGltZSk7CisgICAgaWYgKGl0ZXIgPT0gbWFwLmJl
Z2luKCkpCisgICAgICAgIHJldHVybiBtYXAuZW5kKCk7CisKKyAgICByZXR1cm4gLS1pdGVyOwor
fQorCitib29sIFF1ZXVlZFZpZGVvT3V0cHV0OjpoYXNJbWFnZUZvclRpbWUoY29uc3QgTWVkaWFU
aW1lJiB0aW1lKSBjb25zdAoreworICAgIHJldHVybiBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9G
cmFtZXMsIHRpbWUpICE9IG1fdmlkZW9GcmFtZXMuZW5kKCk7Cit9CisKK2F1dG8gUXVldWVkVmlk
ZW9PdXRwdXQ6OnRha2VWaWRlb0ZyYW1lRW50cnlGb3JUaW1lKGNvbnN0IE1lZGlhVGltZSYgdGlt
ZSkgLT4gVmlkZW9GcmFtZUVudHJ5Cit7CisgICAgYXV0byBpdGVyID0gZmluZEltYWdlRm9yVGlt
ZShtX3ZpZGVvRnJhbWVzLCB0aW1lKTsKKyAgICBpZiAoaXRlciA9PSBtX3ZpZGVvRnJhbWVzLmVu
ZCgpKQorICAgICAgICByZXR1cm4geyBudWxscHRyLCBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkg
fTsKKworICAgIFZpZGVvRnJhbWVFbnRyeSBlbnRyeSA9IHsgV1RGTW92ZShpdGVyLT5zZWNvbmQp
LCBpdGVyLT5maXJzdCB9OworCisgICAgLy8gUHVyZ2UgYWxsIGZyYW1lcyBiZWZvcmUgYHRpbWVg
LCBzbyB0aGF0IHJlcGVhdGVkIGNhbGxzIHdpdGggdGhlIHNhbWUgdGltZSBkb24ndCByZXR1cm4K
KyAgICAvLyBzdWNjZXNzaXZlbHkgZWFybGllciBpbWFnZXMuCisgICAgbV92aWRlb0ZyYW1lcy5l
cmFzZShtX3ZpZGVvRnJhbWVzLmJlZ2luKCksICsraXRlcik7CisKKyAgICByZXR1cm4gZW50cnk7
Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmFkZEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNl
cnZlcihjb25zdCBDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXImIG9ic2VydmVyKQoreworICAg
IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycy5hZGQob2JzZXJ2ZXIpOworICAgIGNvbmZp
Z3VyZU5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworCisgICAgW21fdmlkZW9PdXRwdXQgcmVxdWVz
dE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJsZV07Cit9CisKK3Zv
aWQgUXVldWVkVmlkZW9PdXRwdXQ6OmNvbmZpZ3VyZU5leHRJbWFnZVRpbWVPYnNlcnZlcigpCit7
CisgICAgaWYgKG1fbmV4dEltYWdlVGltZWJhc2VPYnNlcnZlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBjdXJyZW50VGltZSA9IFBBTDo6dG9NZWRpYVRpbWUoW21fcGxheWVyIGN1cnJl
bnRUaW1lXSk7CisgICAgYXV0byBpdGVyID0gZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJhbWVz
LCBjdXJyZW50VGltZSk7CisgICAgaWYgKGl0ZXIgPT0gbV92aWRlb0ZyYW1lcy5lbmQoKSB8fCAr
K2l0ZXIgPT0gbV92aWRlb0ZyYW1lcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBuZXh0SW1hZ2VUaW1lID0gaXRlci0+Zmlyc3Q7CisKKyAgICBtX25leHRJbWFnZVRpbWViYXNl
T2JzZXJ2ZXIgPSBbbV9wbGF5ZXIgYWRkQm91bmRhcnlUaW1lT2JzZXJ2ZXJGb3JUaW1lczpAW1tO
U1ZhbHVlIHZhbHVlV2l0aENNVGltZTpQQUw6OnRvQ01UaW1lKGN1cnJlbnRUaW1lKV1dIHF1ZXVl
Omdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCBwcm90ZWN0ZWREZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIHByb3RlY3RlZE91
dHB1dCA9IG1fdmlkZW9PdXRwdXRdICgpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluUnVu
TG9vcChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0geworICAgICAgICAgICAgaWYgKHdl
YWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5uZXh0SW1hZ2VUaW1lUmVhY2hlZCgp
OworICAgICAgICB9KTsKKyAgICB9XTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6Y2Fu
Y2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCkKK3sKKyAgICBpZiAoIW1fbmV4dEltYWdlVGltZWJh
c2VPYnNlcnZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fcGxheWVyIHJlbW92ZVRpbWVP
YnNlcnZlcjptX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIuZ2V0KCldOworICAgIG1fbmV4dElt
YWdlVGltZWJhc2VPYnNlcnZlciA9IG5pbDsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6
bmV4dEltYWdlVGltZVJlYWNoZWQoKQoreworICAgIGNhbmNlbE5leHRJbWFnZVRpbWVPYnNlcnZl
cigpOworICAgIGF1dG8gb2JzZXJ2ZXJzID0gc3RkOjpleGNoYW5nZShtX2N1cnJlbnRJbWFnZUNo
YW5nZWRPYnNlcnZlcnMsIHsgfSk7CisgICAgb2JzZXJ2ZXJzLmZvckVhY2goW10oYXV0byYgb2Jz
ZXJ2ZXIpIHsgb2JzZXJ2ZXIoKTsgfSk7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmFk
ZFZpZGVvRnJhbWVFbnRyaWVzKFZlY3RvcjxWaWRlb0ZyYW1lRW50cnk+JiYgdmlkZW9GcmFtZUVu
dHJpZXMpCit7CisgICAgYm9vbCBuZWVkc0ltYWdlRm9yQ3VycmVudFRpbWVDaGFuZ2VkID0gZmFs
c2U7CisgICAgYm9vbCBoYXNDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzID0gbV9jdXJyZW50
SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzLmNvbXB1dGVTaXplKCk7CisgICAgTWVkaWFUaW1lIGN1cnJl
bnRUaW1lID0gaGFzQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycyA/IFBBTDo6dG9NZWRpYVRp
bWUoW21fcGxheWVyIGN1cnJlbnRUaW1lXSkgOiBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCk7CisK
KyAgICBmb3IgKGF1dG8mIGVudHJ5IDogdmlkZW9GcmFtZUVudHJpZXMpIHsKKyAgICAgICAgaWYg
KGhhc0N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMgJiYgZW50cnkuZGlzcGxheVRpbWUgPD0g
Y3VycmVudFRpbWUpCisgICAgICAgICAgICBuZWVkc0ltYWdlRm9yQ3VycmVudFRpbWVDaGFuZ2Vk
ID0gdHJ1ZTsKKyAgICAgICAgbV92aWRlb0ZyYW1lcy5lbXBsYWNlKGVudHJ5LmRpc3BsYXlUaW1l
LCBXVEZNb3ZlKGVudHJ5LnBpeGVsQnVmZmVyKSk7CisgICAgfQorCisgICAgaWYgKG5lZWRzSW1h
Z2VGb3JDdXJyZW50VGltZUNoYW5nZWQpCisgICAgICAgIG5leHRJbWFnZVRpbWVSZWFjaGVkKCk7
CisgICAgZWxzZSBpZiAoaGFzQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycykKKyAgICAgICAg
Y29uZmlndXJlTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisKKyAgICBpZiAobV9wYXVzZWQpCisg
ICAgICAgIFttX3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5n
ZUFzU29vbkFzUG9zc2libGVdOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpwdXJnZVZp
ZGVvRnJhbWVFbnRyaWVzKCkKK3sKKyAgICBjYW5jZWxOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsK
KyAgICBtX3ZpZGVvRnJhbWVzLmNsZWFyKCk7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6
OnB1cmdlSW1hZ2VzQmVmb3JlVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpCit7CisgICAgbV92
aWRlb0ZyYW1lcy5lcmFzZShtX3ZpZGVvRnJhbWVzLmJlZ2luKCksIGZpbmRJbWFnZUZvclRpbWUo
bV92aWRlb0ZyYW1lcywgdGltZSkpOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpyYXRl
Q2hhbmdlZChmbG9hdCByYXRlKQoreworICAgIG1fcGF1c2VkID0gIXJhdGU7CisKKyAgICBpZiAo
bV9wYXVzZWQpCisgICAgICAgIFttX3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25PZk1l
ZGlhRGF0YUNoYW5nZUFzU29vbkFzUG9zc2libGVdOworfQorCit9CisKKyNlbmRpZgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggNGQxOTY3ZWQzOGVlMGQ1OTM1NGMyYTc0NmVlYWQwNWQ3ZGQwZDA0ZS4uMTVjZDc0MTc3NjA2
ZTNkZjBlM2E4Y2YxY2IyNjI4NTg1YzY2ZGYwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIy
LTAxLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2Nv
YV0gclZGQygpIGlzbid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVv
LWZyYW1lLWxvYWRzdGFydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3Jl
cXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlh
L3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4
cGVjdGF0aW9uczoKKwogMjAyMi0wMS0xMSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFJld3JpdGUgdG91Y2ggYW5kIGRyYWcgdGVzdHMgdG8gYmUg
bW9yZSByb2J1c3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVv
LWZyYW1lLWxvYWRzdGFydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0
LXZpZGVvLWZyYW1lLWxvYWRzdGFydC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMwMmY2NmVi
YWJkZmI1NzRkOWY5ZmYxZDViODFmYzgwODkyMDM2YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDYgQEAKKworUlVOKHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soY2Fs
bGJhY2spKQorUlVOKHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQv
dGVzdCIpKQorUHJvbWlzZSByZXNvbHZlZCBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQuaHRtbCBiL0xh
eW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjUwYjNmMWE4YzYxMWEyNmZjZDBhNTRlZWUwZmIwMmM1NWU2NmY2MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0
Lmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDx0aXRsZT5yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydDwvdGl0bGU+CisgICAgPHNj
cmlwdCBzcmM9InZpZGVvLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJtZWRp
YS1maWxlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIHdpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCdsb2FkJywgYXN5bmMgZXZlbnQgPT4geworICAgICAgICBmaW5kTWVkaWFFbGVtZW50
KCk7CisKKyAgICAgICAgbGV0IHZpZGVvRnJhbWVQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8ucmVx
dWVzdFZpZGVvRnJhbWVDYWxsYmFjayhjYWxsYmFjaykpJyk7CisgICAgICAgICAgICB2aWRlby5y
ZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKHJlc29sdmUpOworICAgICAgICB9KTsKKworICAgICAg
ICBydW4oJ3ZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIp
Jyk7CisKKyAgICAgICAgYXdhaXQgc2hvdWxkUmVzb2x2ZSh2aWRlb0ZyYW1lUHJvbWlzZSk7CisK
KyAgICAgICAgZW5kVGVzdCgpOworICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+CisgICAgPHZpZGVvIG11dGVkPjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVz
dC12aWRlby1mcmFtZS1zZWVrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVl
c3QtdmlkZW8tZnJhbWUtc2Vlay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmEwMTVmMjZiODNh
Yzk5YWZmMzA1NjhiMzJlNjY5NDE1MDY0Yzc1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw4IEBACisKK1JVTih2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50
L3Rlc3QiKSkKK0VWRU5UKGNhbnBsYXl0aHJvdWdoKQorUlVOKHZpZGVvLnJlcXVlc3RWaWRlb0Zy
YW1lQ2FsbGJhY2soY2FsbGJhY2spKQorUlVOKHZpZGVvLmN1cnJlbnRUaW1lID0gMC41KQorUHJv
bWlzZSByZXNvbHZlZCBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
bWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1zZWVrLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9y
ZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWsuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTI1OGYwMzYzOGNjZjhh
NmM4ZjM0NjBkNzE0MzM0YTQ3OTA5NThhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
bWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1zZWVrLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDx0aXRsZT5yZXF1ZXN0LXZpZGVvLWZy
YW1lLXNlZWs8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSJ2aWRlby10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0ibWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dD4KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50ID0+IHsK
KyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgIHJ1bigndmlkZW8uc3JjID0g
ZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0IiknKTsKKworICAgICAgICBhd2Fp
dCB3YWl0Rm9yKHZpZGVvLCAnY2FucGxheXRocm91Z2gnKTsKKworICAgICAgICBsZXQgdmlkZW9G
cmFtZVByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoJ1JVTih2aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGNh
bGxiYWNrKSknKTsKKyAgICAgICAgICAgIHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2so
cmVzb2x2ZSk7CisgICAgICAgIH0pOworCisgICAgICAgIHJ1bigndmlkZW8uY3VycmVudFRpbWUg
PSAwLjUnKTsKKworICAgICAgICBhd2FpdCBzaG91bGRSZXNvbHZlKHZpZGVvRnJhbWVQcm9taXNl
KTsKKworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKyAgICA8dmlkZW8gbXV0ZWQ+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNzE4MmU4Y2ZjOTU3ZDg4MmE3Zjg1NTc1YjhkYzIyODk4
NjcyMjk2OC4uYjJkYzI4NWEwN2FkYmJlYWQ5MWViODgyOTBmZWFiZDkyNjRlMGNlOCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTQ1LDYg
KzE0NSw3IEBAIHdlYnJ0Yy9wZWVyQ29ubmVjdGlvbi1ydmZjLmh0bWwgWyBQYXNzIF0KICMgVGlt
aW5nIG91dCB0ZXN0cyB1bnRpbCB3ZSBhZGQgWFIgc2Vzc2lvbi4KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZpZGVvLWZyYW1lLWNhbGxiYWNrLWJl
Zm9yZS14ci1zZXNzaW9uLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZpZGVvLWZyYW1lLWNhbGxiYWNrLWR1cmlu
Zy14ci1zZXNzaW9uLmh0dHBzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzUwNzIgaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy92aWRlby1ydmZjL3JlcXVlc3QtdmlkZW8tZnJh
bWUtY2FsbGJhY2stcmVwZWF0aW5nLmh0bWwgWyBTa2lwIF0KIAogIy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwogIyBFbmQgcGxhdGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYmJi
NjVhNDA4ODU1YWQ5M2M2YzQxZGY0ZGRkNDFjOGEwMmVlNGY0OS4uZTc0OTZiODBlNTViYmMwYmYy
YmIzYjRiNTIxYzkyMzY2N2RjNzBiNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzgsNiArMzgsOCBAQCBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZpZGVvLWZyYW1lLWNhbGxiYWNrLWJlZm9yZS14
ci1zZXNzaW9uLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZpZGVvLWZyYW1lLWNhbGxiYWNrLWR1cmluZy14ci1z
ZXNzaW9uLmh0dHBzLmh0bWwgWyBTa2lwIF0KIAord2Via2l0Lm9yZy9iLzIzNTA3MiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1j
YWxsYmFjay1yZXBlYXRpbmcuaHRtbCBbIFNraXAgXQorCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmllcy4KICMvLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiNWQ4MmM5MjFhNzgwYjQ2ZDc4NzFkYTMxYjlh
MmMzZTA2OGVlMWM2Li5jZWI3MGE1NTA4MDNiYjY0MDY5ODk0NDYyZDNiMWQxMTQxMjIwYjRlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0x
MjQsNiArMTI0LDggQEAgd2VicnRjL3BlZXJDb25uZWN0aW9uLXJ2ZmMuaHRtbCBbIFBhc3MgXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy92aWRlby1ydmZjL3JlcXVlc3QtdmlkZW8t
ZnJhbWUtY2FsbGJhY2stYmVmb3JlLXhyLXNlc3Npb24uaHR0cHMuaHRtbCBbIFNraXAgXQogaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy92aWRlby1ydmZjL3JlcXVlc3QtdmlkZW8tZnJh
bWUtY2FsbGJhY2stZHVyaW5nLXhyLXNlc3Npb24uaHR0cHMuaHRtbCBbIFNraXAgXQogCit3ZWJr
aXQub3JnL2IvMjM1MDcyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdmlkZW8tcnZm
Yy9yZXF1ZXN0LXZpZGVvLWZyYW1lLWNhbGxiYWNrLXJlcGVhdGluZy5odG1sIFsgU2tpcCBdCisK
ICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRmb3JtLXNwZWNp
ZmljIGRpcmVjdG9yaWVzLgogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwo=
</data>
<flag name="commit-queue"
          id="474981"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449010</attachid>
            <date>2022-01-12 15:53:10 -0800</date>
            <delta_ts>2022-01-13 11:08:20 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235006-20220112155309.patch</filename>
            <type>text/plain</type>
            <size>51126</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWIxNTA4YzQ4NDhmYjBh
MDIzOTc5MDEyMmVhNzRlMjVjODAxZmIyNy4uYmJkY2RhNjU3OWM4ODJjYjY3YmVhMjgyM2ZhODlk
NGY2M2Y3ZmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIyLTAxLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gclZGQygpIGlz
bid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
bG9hZHN0YXJ0Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sCisKKyAgICAgICAgQWRkIGEgbmV3IHV0aWxpdHkgY2xhc3MsIFF1ZXVlZFZpZGVv
T3V0cHV0LCB3aGljaCB3aWxsIHB1bGwgcGl4ZWwgYnVmZmVycyBvdXQgb2YgYW4gQVZQbGF5ZXJJ
dGVtVmlkZW9PdXRwdXQKKyAgICAgICAgcHJlLWVtcHRpdmVseS4gT25jZSB0aG9zZSBwaXhlbCBi
dWZmZXJzIGFyZSBlbnF1ZXVlZCBsb2NhbGx5LCB0aGVpciBhc3NvY2lhdGVkIHRpbWluZyBpbmZv
cm1hdGlvbiBjYW4gYmUgdXNlZCB0bworICAgICAgICBmaXJlIGEgY2FsbGJhY2sgZm9yIHRoYXQg
YnVmZmVyJ3MgZGlzcGxheSB0aW1lLgorCisgICAgICAgIFByZXZpb3VzbHksIHBhaW50cyB3ZXJl
IGJsb2NrZWQgZnJvbSBwdWxsaW5nIG5ldyBwaXhlbCBidWZmZXJzIGZyb20gdGhlIHZpZGVvIG91
dHB1dC4gV2l0aCB0aGUgUXVldWVkVmlkZW9PdXRwdXQKKyAgICAgICAgY2xhc3MsIHRoaXMgaXMg
bm8gbG9uZ2VyIG5lY2Vzc2FyeS4gVGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHdpbGwgbm90aWZ5IGl0
cyBjbGllbnQgd2hlbiB0aGUgaW1hZ2UgZm9yIGN1cnJlbnRUaW1lCisgICAgICAgIGNoYW5nZXMs
IGFuZCBvdGhlciBjbGllbnRzIGNhbiBmcmVlbHkgYXNrIGZvciB0aGUgY3VycmVudFRpbWUncyBp
bWFnZS4KKworICAgICAgICBUbyBjdXJiIHJ1bmF3YXkgbWVtb3J5IGdyb3d0aCwgZnJhbWVzIGFy
ZSBwdXJnZWQgYXMgc29vbiBhcyBhIG5ldyBpbWFnZSBmb3IgdGhlIGN1cnJlbnQgdGltZSBpcyBh
dmFpbGFibGUsIGFuZCB3aGVuCisgICAgICAgIHRoZSB2aWRlbyBvdXRwdXQgc2lnbmFscyB0aGF0
IGl0cyBvd24gcXVldWVzIHdlcmUgcHVyZ2VkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjYW5jZWxWaWRlb0ZyYW1lQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2VydmljZVJlcXVl
c3RWaWRlb0ZyYW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omhhc0F2YWlsYWJsZVZpZGVvRnJh
bWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c3RhcnRWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tOZXdWaWRlb0Zy
YW1lTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZp
ZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1ZmZlckZvckN1
cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29sb3JTcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvdXRwdXRNZWRp
YURhdGFXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Omdsb2JhbFB1bGxEZWxlZ2F0ZVF1
ZXVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OndhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIGluaXRXaXRoUGxheWVyOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIG91dHB1dE1lZGlh
RGF0YVdpbGxDaGFuZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVs
ZWdhdGUgb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOl0pOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVl
ZFZpZGVvT3V0cHV0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXRE
ZWxlZ2F0ZSBpbml0V2l0aFBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRw
dXREZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOl0pOgorICAgICAgICAoLVtXZWJR
dWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDpdKToKKyAg
ICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBvYnNlcnZlVmFsdWVGb3JLZXlQ
YXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoV2ViQ29yZTo6Z2xvYmFs
T3V0cHV0RGVsZWdhdGVRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpRdWV1ZWRW
aWRlb091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6flF1ZXVl
ZFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmRlY2x0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OlF1ZXVlZFZpZGVvT3V0cHV0OjpoYXNJbWFnZUZvclRpbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnRha2VWaWRlb0ZyYW1lRW50cnlGb3JUaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjphZGRDdXJyZW50SW1hZ2VDaGFuZ2Vk
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmNvbmZpZ3Vy
ZU5leHRJbWFnZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0
OjppbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRW
aWRlb091dHB1dDo6YWRkVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UXVl
dWVkVmlkZW9PdXRwdXQ6OnB1cmdlVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnB1cmdlSW1hZ2VzQmVmb3JlVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cmF0ZUNoYW5nZWQpOgorCiAyMDIxLTEyLTE0ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtSZWZhY3Rvcl0gQWRv
cHQgTG9nZ2VySGVscGVyIGluIExvZ2dpbmcgRU1FIGNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmlu
ZGV4IGYzMTgxOTc3NGJjMTQwY2Y1MjU4Nzg2NDQ5MjdiYWZkNWFiMmU5MDIuLmVjODEwYTFlM2Zj
Mjc4NjI0NmVjMDI0NGVhNWUxMzI0ZmRlNTI0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDIyLTAxLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gclZGQygpIGlzbid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBs
b2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUw
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBwYWwv
c3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oOgorCiAyMDIyLTAxLTEwICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBhIC1z
aG91bGRXcmFwIHByb3BlcnR5IHdoZW4gaW5qZWN0aW5nIExpdmUgVGV4dApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaAppbmRleCA4Yjdm
ZjEyMzdhMGM4YzIyZjg4MmZhMGJmZWVlOGJkM2FkNGNiNzEyLi40ZjljYmU2ZDNkMjdlYzdkMWEz
ZGQ3ZTFkODI3NzBlMzcxODg0MTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaApAQCAtNDAsOSArNDAsMTAgQEAKICNpbXBvcnQg
PEFWRm91bmRhdGlvbi9BVk1lZGlhU2VsZWN0aW9uR3JvdXBfUHJpdmF0ZS5oPgogI2ltcG9ydCA8
QVZGb3VuZGF0aW9uL0FWT3V0cHV0Q29udGV4dF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZPdXRwdXREZXZpY2UuaD4KLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllcl9Q
cml2YXRlLmg+CisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtT3V0cHV0X1ByaXZh
dGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1fUHJpdmF0ZS5oPgogI2lt
cG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyTGF5ZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8QVZG
b3VuZGF0aW9uL0FWUGxheWVyX1ByaXZhdGUuaD4KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCkBAIC02Niw2ICs2Nyw3IEBAIE5T
X0FTU1VNRV9OT05OVUxMX0VORAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQ2FwdHVyZVNlc3Np
b24uaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllci5oPgogI2ltcG9ydCA8QVZGb3Vu
ZGF0aW9uL0FWUGxheWVySXRlbS5oPgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVySXRl
bU91dHB1dC5oPgogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fSU5URVJTVElUSUFMX0VWRU5UUykK
ICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckludGVyc3RpdGlhbEV2ZW50Q29udHJvbGxl
ci5oPgpAQCAtOTIsNiArOTQsMTEgQEAgdHlwZWRlZiBOU1N0cmluZyAqIEFWVmlkZW9SYW5nZSBO
U19UWVBFRF9FTlVNOwogQGVuZAogI2VuZGlmCiAKK0BpbnRlcmZhY2UgQVZQbGF5ZXJJdGVtVmlk
ZW9PdXRwdXQgKEFWUGxheWVySXRlbVZpZGVvT3V0cHV0RWFybGllc3RUaW1lKQorQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBDTVRpbWUgZWFybGllc3RBdmFpbGFibGVQaXhlbEJ1ZmZl
ckl0ZW1UaW1lOworLSAodm9pZClyZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VB
c1Nvb25Bc1Bvc3NpYmxlOworQGVuZAorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBkMjhiMzgzMWQ0ZjY5MTkyY2E1NjIwMmM4MDA0ZTE3ODNkYzNjNWMwLi5mMDNjNmM1NTMy
NmUwODFmMTA4MzA3YzRmYmJlNzhiZDVkNmE5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NDQ5LDYgKzQ0NDksOCBAQAog
CQlDRDFGOUI0RDI3MEQwM0E5MDA2MTdFQjYgLyogU2Nyb2xsRXh0ZW50cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlCNEMyNzBEMDNBOTAwNjE3
RUI2IC8qIFNjcm9sbEV4dGVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDRDFGOUI3RDI3MEU2Njc4MDA2MTdFQjYgLyogSFRNTEFuY2hvckVs
ZW1lbnRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDFGOUI3QzI3MEU2Njc4MDA2MTdFQjYgLyogSFRNTEFuY2hvckVsZW1lbnRJbmxpbmVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Qx
RjlCODAyNzBFNjcxQTAwNjE3RUI2IC8qIFNWR0VsZW1lbnRJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDFGOUI3RjI3MEU2NzFBMDA2MTdF
QjYgLyogU1ZHRWxlbWVudElubGluZXMuaCAqLzsgfTsKKwkJQ0QyMEVEM0MyNzg3OEZGQjAwMzhC
RTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDIwRUQzQTI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9P
dXRwdXQuaCAqLzsgfTsKKwkJQ0QyMEVEM0QyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVv
T3V0cHV0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0QyMEVEM0IyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0Lm1tICovOyB9Owog
CQlDRDIyNUMwQjFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjI1QzA5MUM0NkZC
RjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tICovOyB9OwogCQlDRDIyNUMwQzFD
NDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyMjVDMEExQzQ2RkJGNDAwMTQwNzYxIC8q
IFdlYkNvcmVOU1VSTFNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDRDI3QUU1MDIyQTk4Njg3MDA5NDdGRjkgLyogSW1hZ2VSb3RhdGlv
blNlc3Npb25WVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0QyN0FFNEUyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTU4NjYs
NiArMTU4NjgsOCBAQAogCQlDRDFGOUI3MDI3MERGQTdGMDA2MTdFQjYgLyogTWVkaWFLZXlNZXNz
YWdlRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDFGOUI3QzI3MEU2Njc4MDA2MTdFQjYgLyogSFRN
TEFuY2hvckVsZW1lbnRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxBbmNob3JFbGVtZW50
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDFGOUI3RjI3MEU2NzFB
MDA2MTdFQjYgLyogU1ZHRWxlbWVudElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRWxlbWVu
dElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyMEVEM0EyNzg3OEZG
QjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1ZXVlZFZp
ZGVvT3V0cHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjBFRDNCMjc4NzhG
RkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFF1ZXVlZFZpZGVvT3V0cHV0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDIy
NUMwOTFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVOU1VSTFNlc3Npb24ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMjI1QzBBMUM0NkZCRjQwMDE0MDc2MSAvKiBX
ZWJDb3JlTlNVUkxTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkNvcmVOU1VSTFNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyN0FF
NEUyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzA2MTcsNiArMzA2MjEsOCBAQAogCQkJCUNEQzhCNUE1MTgwNDc0RjcwMDE2RTY4NSAv
KiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJQ0RDOEI1QTQxODA0NzRGNzAw
MTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJCQkJN0EyOUY1NzEx
OEM2OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCAqLywKKwkJ
CQlDRDIwRUQzQTI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQuaCAqLywKKwkJ
CQlDRDIwRUQzQjI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQubW0gKi8sCiAJ
CQkJQ0RGOTk0RkEyNEMxMkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
aCAqLywKIAkJCQlDREY5OTRGQjI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbSAqLywKIAkJCQlDREM4QjVBOTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMuaCAqLywKQEAgLTM2NTg1LDYgKzM2NTkxLDcgQEAKIAkJCQlFQjBG
QjcwRDI3MEQwQjJFMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnNJbml0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUY1OTQxRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxp
ZmllZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QyMEVEM0MyNzg3OEZGQjAwMzhC
RTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTVFMzFGNDFF
MENCMEI1MDA0QjM3MUMgLyogUXVpY2tMb29rLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkFFRTky
QzIyMzg4QTdEMDA0MTU3QTkgLyogUXVpcmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlFMzcx
NzEzNzM2QTY2MDBCOUU5MTkgLyogUXVvdGVkUHJpbnRhYmxlLmggaW4gSGVhZGVycyAqLywKQEAg
LTM4NTY5LDYgKzM4NTc2LDcgQEAKIAkJCQlBQTEyREY0OTE3NDNERjgzMDA0REFGREYgLyogUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBMjlB
MzAxQ0JGNzRENDAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RBMjlBMTYxQ0JEQTU2QzAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNEMjBFRDNEMjc4NzhGRkIw
MDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxOTI0
MjQ5MjEyN0I5M0UwMDYzNEZDRiAvKiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTA3MUMwMDRCMjcwQjg2NDkwMEQwMjdDNyAvKiBSZXBsYXlL
aXRDYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMyQjFBRUMyMjM5N0VCQzAw
QjkxQ0Y3IC8qIFJlc291cmNlUmVzcG9uc2VDb2NvYS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggOTQ4ZDFkNDE3NDhlOWZhZDI5
MjJjYWY3MGNlYjY2OGI0ODhlOTk0MS4uNDYyM2QxOGFiMjczYWZhYjVhNzI1YmI0Yjg0NjE1NGRi
NmZmN2I5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC02
MDMsMTMgKzYwMywxNiBAQCB1bnNpZ25lZCBIVE1MVmlkZW9FbGVtZW50OjpyZXF1ZXN0VmlkZW9G
cmFtZUNhbGxiYWNrKFJlZjxWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYQogCiB2b2lkIEhUTUxWaWRl
b0VsZW1lbnQ6OmNhbmNlbFZpZGVvRnJhbWVDYWxsYmFjayh1bnNpZ25lZCBpZGVudGlmaWVyKQog
ewotICAgIGF1dG8gaW5kZXggPSBtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5maW5kTWF0Y2hpbmcoW2lk
ZW50aWZpZXJdKGF1dG8mIHJlcXVlc3QpIHsgcmV0dXJuIHJlcXVlc3QtPmlkZW50aWZpZXIgPT0g
aWRlbnRpZmllcjsgfSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1
cm47Ci0gICAgaWYgKG1faXNSdW5uaW5nVmlkZW9GcmFtZVJlcXVlc3RzKSB7Ci0gICAgICAgIG1f
dmlkZW9GcmFtZVJlcXVlc3RzW2luZGV4XS0+Y2FuY2VsbGVkID0gdHJ1ZTsKKyAgICAvLyBTZWFy
Y2ggZmlyc3QgdGhlIHJlcXVlc3RzIGN1cnJlbnRseSBiZWluZyBzZXJ2aWNlZCwgYW5kIG1hcmsg
dGhlbSBhcyBjYW5jZWxsZWQgaWYgZm91bmQuCisgICAgYXV0byBpbmRleCA9IG1fc2VydmljZWRW
aWRlb0ZyYW1lUmVxdWVzdHMuZmluZE1hdGNoaW5nKFtpZGVudGlmaWVyXShhdXRvJiByZXF1ZXN0
KSB7IHJldHVybiByZXF1ZXN0LT5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0pOworICAgIGlm
IChpbmRleCAhPSBub3RGb3VuZCkgeworICAgICAgICBtX3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVl
c3RzW2luZGV4XS0+Y2FuY2VsbGVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwor
ICAgIGluZGV4ID0gbV92aWRlb0ZyYW1lUmVxdWVzdHMuZmluZE1hdGNoaW5nKFtpZGVudGlmaWVy
XShhdXRvJiByZXF1ZXN0KSB7IHJldHVybiByZXF1ZXN0LT5pZGVudGlmaWVyID09IGlkZW50aWZp
ZXI7IH0pOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOwogICAg
IG1fdmlkZW9GcmFtZVJlcXVlc3RzLnJlbW92ZShpbmRleCk7CiAKICAgICBpZiAobV92aWRlb0Zy
YW1lUmVxdWVzdHMuaXNFbXB0eSgpICYmIHBsYXllcigpKQpAQCAtNjM5LDIwICs2NDIsMTQgQEAg
dm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXJ2aWNlUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja3Mo
UmVkdWNlZFJlc29sdXRpb25TZWNvbmQKIAogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMg
fTsKIAotICAgIC8vIFdlIHN0b3JlIHRoZSBzaXplIGJlZm9yZSBjYWxsaW5nIGNhbGxiYWNrcyBh
cyB3ZSBkbyBub3Qgd2FudCB0byBjYWxsIG5ld2x5IGFkZGVkIGNhbGxiYWNrcy4KLSAgICBhdXRv
IGNhbGxiYWNrQ291bnQgPSBtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5zaXplKCk7Ci0KLSAgICBtX2lz
UnVubmluZ1ZpZGVvRnJhbWVSZXF1ZXN0cyA9IHRydWU7Ci0gICAgZm9yIChzaXplX3QgaW5kZXgg
PSAwOyBpbmRleCA8IGNhbGxiYWNrQ291bnQ7ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byYgcmVx
dWVzdCA9IG1fdmlkZW9GcmFtZVJlcXVlc3RzW2luZGV4XTsKKyAgICBtX3ZpZGVvRnJhbWVSZXF1
ZXN0cy5zd2FwKG1fc2VydmljZWRWaWRlb0ZyYW1lUmVxdWVzdHMpOworICAgIGZvciAoYXV0byYg
cmVxdWVzdCA6IG1fc2VydmljZWRWaWRlb0ZyYW1lUmVxdWVzdHMpIHsKICAgICAgICAgaWYgKCFy
ZXF1ZXN0LT5jYW5jZWxsZWQpIHsKICAgICAgICAgICAgIHJlcXVlc3QtPmNhbGxiYWNrLT5oYW5k
bGVFdmVudChzdGQ6OnJvdW5kKG5vdy5taWxsaXNlY29uZHMoKSksICp2aWRlb0ZyYW1lTWV0YWRh
dGEpOwogICAgICAgICAgICAgcmVxdWVzdC0+Y2FuY2VsbGVkID0gdHJ1ZTsKICAgICAgICAgfQog
ICAgIH0KLSAgICBtX2lzUnVubmluZ1ZpZGVvRnJhbWVSZXF1ZXN0cyA9IGZhbHNlOwotCi0gICAg
bV92aWRlb0ZyYW1lUmVxdWVzdHMucmVtb3ZlQWxsTWF0Y2hpbmcoW10oYXV0byYgY2FsbGJhY2sp
IHsgcmV0dXJuIGNhbGxiYWNrLT5jYW5jZWxsZWQ7IH0pOworICAgIG1fc2VydmljZWRWaWRlb0Zy
YW1lUmVxdWVzdHMuY2xlYXIoKTsKIAogICAgIGlmIChtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5pc0Vt
cHR5KCkgJiYgcGxheWVyKCkpCiAgICAgICAgIHBsYXllcigpLT5zdG9wVmlkZW9GcmFtZU1ldGFk
YXRhR2F0aGVyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4
IDg1NmFkZWE3OGZiNzM5OGQ4ZmI0NWY0NDhhMzU5MWJkYTU1Zjk3MmMuLmY4ZDNiNDAzMmQ2MDI0
NGI1NDAxNzgzM2VhZmEwMDY5MDRkMWI0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVv
RWxlbWVudC5oCkBAIC0xNzIsOCArMTcyLDggQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjYW5j
ZWxsZWQgeyBmYWxzZSB9OwogICAgIH07CiAgICAgVmVjdG9yPFVuaXF1ZVJlZjxWaWRlb0ZyYW1l
UmVxdWVzdD4+IG1fdmlkZW9GcmFtZVJlcXVlc3RzOworICAgIFZlY3RvcjxVbmlxdWVSZWY8Vmlk
ZW9GcmFtZVJlcXVlc3Q+PiBtX3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVlc3RzOwogICAgIHVuc2ln
bmVkIG1fbmV4dFZpZGVvRnJhbWVSZXF1ZXN0SW5kZXggeyAwIH07Ci0gICAgYm9vbCBtX2lzUnVu
bmluZ1ZpZGVvRnJhbWVSZXF1ZXN0cyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMWU2NTc1NzI0NjU0OTczNDNjZGUyYTI0
ZDhmMGRjNmI0ZTAyNjdlMS4uYzQwOTg1MzgzYjNiNTJiOGEyZmM5YTdhNDU4NDk5ZWQ2MDhiMDZh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPENv
cmVNZWRpYS9DTVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9PYnNlcnZlci5oPgogCiBPQkpDX0NMQVNTIEFW
QXNzZXRJbWFnZUdlbmVyYXRvcjsKIE9CSkNfQ0xBU1MgQVZBc3NldFRyYWNrOwpAQCAtNjcsNiAr
NjgsNyBAQCBjbGFzcyBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBN
ZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBj
bGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNWOworY2xhc3MgUXVldWVkVmlkZW9PdXRwdXQ7CiBj
bGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVyOwogY2xhc3MgVmlkZW9MYXllck1hbmFnZXJPYmpD
OwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDOwpAQCAtMzQ3LDcgKzM0OSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzdGFydFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpIGZpbmFs
OwogICAgIHZvaWQgc3RvcFZpZGVvRnJhbWVNZXRhZGF0YUdhdGhlcmluZygpIGZpbmFsOwogICAg
IHN0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZU1ldGFkYXRhPiB2aWRlb0ZyYW1lTWV0YWRhdGEoKSBm
aW5hbCB7IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fdmlkZW9GcmFtZU1ldGFkYXRhLCB7IH0pOyB9
Ci0gICAgdm9pZCBjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YShDTVRpbWUpOworICAgIHZvaWQg
Y2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoKTsKIAogICAgIFJldGFpblB0cjxBVlVSTEFzc2V0
PiBtX2F2QXNzZXQ7CiAgICAgUmV0YWluUHRyPEFWUGxheWVyPiBtX2F2UGxheWVyOwpAQCAtMzY3
LDcgKzM2OSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJldGFpblB0cjxBVkFzc2V0SW1h
Z2VHZW5lcmF0b3I+IG1faW1hZ2VHZW5lcmF0b3I7Ci0gICAgUmV0YWluUHRyPEFWUGxheWVySXRl
bVZpZGVvT3V0cHV0PiBtX3ZpZGVvT3V0cHV0OworICAgIFJlZlB0cjxRdWV1ZWRWaWRlb091dHB1
dD4gbV92aWRlb091dHB1dDsKICAgICBSZXRhaW5QdHI8V2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZT4g
bV92aWRlb091dHB1dERlbGVnYXRlOwogICAgIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBt
X2xhc3RQaXhlbEJ1ZmZlcjsKICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwpA
QCAtNDY0LDYgKzQ2Niw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1l
TWV0YWRhdGE+IG1fdmlkZW9GcmFtZU1ldGFkYXRhOwogICAgIG11dGFibGUgc3RkOjpvcHRpb25h
bDxOU1RpbWVJbnRlcnZhbD4gbV9jYWNoZWRTZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRU
aW1lOwogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxOU1RpbWVJbnRlcnZhbD4gbV9jYWNoZWRM
aXZlVXBkYXRlSW50ZXJ2YWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPE9ic2VydmVyPHZvaWQoKT4+
IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxPYnNl
cnZlcjx2b2lkKCk+PiBtX3dhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2VPYnNl
cnZlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IGMwNjdjY2U4MDY4NmY3
YTFiYzU0MTRiYWY3N2Y3NTI1MmJmMzQyYzcuLmZmMDc4MTFkYjRlMjkxNmQ5NDA2YWI1YTE2MDQ4
NjU3MTNhMzY4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNTgsNiArNTgsNyBAQAog
I2ltcG9ydCAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbXBvcnQgIlBsYXRmb3JtVGV4dFRyYWNrLmgi
CiAjaW1wb3J0ICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKKyNpbXBvcnQgIlF1ZXVlZFZpZGVvT3V0
cHV0LmgiCiAjaW1wb3J0ICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNj
cmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2ltcG9ydCAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTIw
NSwxNiArMjA2LDYgQEAgLSAoaWQpaW5pdFdpdGhQbGF5ZXI6KFdlYWtQdHI8TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQz4mJilwbGF5ZXI7CiAtIChCT09MKXJlc291cmNlTG9hZGVy
OihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9yTG9h
ZGluZ09mUmVxdWVzdGVkUmVzb3VyY2U6KEFWQXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICop
bG9hZGluZ1JlcXVlc3Q7CiBAZW5kCiAKLUBpbnRlcmZhY2UgV2ViQ29yZUFWRlB1bGxEZWxlZ2F0
ZSA6IE5TT2JqZWN0PEFWUGxheWVySXRlbU91dHB1dFB1bGxEZWxlZ2F0ZT4gewotICAgIEJpbmFy
eVNlbWFwaG9yZSBtX3NlbWFwaG9yZTsKLX0KLS0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRy
PE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+JiYpcGxheWVyOwotLSAodm9pZClv
dXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOihBVlBsYXllckl0ZW1PdXRwdXQgKilzZW5kZXI7Ci0t
ICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0
cHV0OwotCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJpbmFyeVNlbWFwaG9yZSYg
c2VtYXBob3JlOwotQGVuZAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgU3RyaW5nIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKEFWUGxheWVyVGltZUNvbnRyb2xTdGF0dXMgZW51bWVy
YXRpb25WYWx1ZSkKIHsKQEAgLTI2MSwxNiArMjUyLDYgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVl
X3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1ZSgpCiAgICAgcmV0dXJuIGdsb2JhbFF1ZXVlOwog
fQogCi1zdGF0aWMgZGlzcGF0Y2hfcXVldWVfdCBnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpCi17
Ci0gICAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsUXVldWU7Ci0gICAgc3RhdGljIGRp
c3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBe
ewotICAgICAgICBnbG9iYWxRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZUFW
RlB1bGxEZWxlZ2F0ZSBxdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7Ci0gICAgfSk7Ci0g
ICAgcmV0dXJuIGdsb2JhbFF1ZXVlOwotfQotCiBzdGF0aWMgdm9pZCByZWdpc3RlckZvcm1hdFJl
YWRlcklmTmVjZXNzYXJ5KCkKIHsKICNpZiBFTkFCTEUoV0VCTV9GT1JNQVRfUkVBREVSKQpAQCAt
NDY5LDcgKzQ1MCw4IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6On5NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKCkKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBt
X3Jlc291cmNlTG9hZGVyTWFwKQogICAgICAgICBwYWlyLnZhbHVlLT5pbnZhbGlkYXRlKCk7CiAK
LSAgICBbbV92aWRlb091dHB1dCBzZXREZWxlZ2F0ZTpuaWwgcXVldWU6MF07CisgICAgaWYgKG1f
dmlkZW9PdXRwdXQpCisgICAgICAgIG1fdmlkZW9PdXRwdXQtPmludmFsaWRhdGUoKTsKIAogICAg
IGlmIChtX3ZpZGVvTGF5ZXIpCiAgICAgICAgIGRlc3Ryb3lWaWRlb0xheWVyKCk7CkBAIC03MDIs
NyArNjg0LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpoYXNB
dmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QKICAgICBpZiAoY3VycmVudFJlbmRlcmluZ01vZGUo
KSA9PSBNZWRpYVJlbmRlcmluZ01vZGU6Ok1lZGlhUmVuZGVyaW5nVG9MYXllcikKICAgICAgICAg
cmV0dXJuIG1fY2FjaGVkSXNSZWFkeUZvckRpc3BsYXk7CiAKLSAgICBpZiAobV92aWRlb091dHB1
dCAmJiAobV9sYXN0UGl4ZWxCdWZmZXIgfHwgW21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4ZWxCdWZm
ZXJGb3JJdGVtVGltZTpbbV9hdlBsYXllckl0ZW0gY3VycmVudFRpbWVdXSkpCisgICAgaWYgKG1f
dmlkZW9PdXRwdXQgJiYgKG1fbGFzdFBpeGVsQnVmZmVyIHx8IG1fdmlkZW9PdXRwdXQtPmhhc0lt
YWdlRm9yVGltZShjdXJyZW50TWVkaWFUaW1lKCkpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICByZXR1cm4gbV92aWRlb0ZyYW1lSGFzRHJhd247CkBAIC0xNDQ0LDM0ICsxNDI2LDMwIEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1QYXVzZWQo
KSBjb25zdAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN0YXJ0
VmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nKCkKIHsKLSAgICBBU1NFUlQoIW1fdmlkZW9GcmFt
ZU1ldGFkYXRhR2F0aGVyaW5nT2JzZXJ2ZXIgfHwgbV9hdlBsYXllcik7Ci0gICAgbV9pc0dhdGhl
cmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSA9IHRydWU7CisgICAgLy8gcmVxdWVzdFZpZGVvRnJhbWVD
YWxsYmFjaygpIGNhcmVzIGFib3V0IHRoZSAvbmV4dC8gYXZhaWxhYmxlIGZyYW1lLiBQdWxsIHRo
ZSBjdXJyZW50IGZyYW1lIGZyb20KKyAgICAvLyB0aGUgUXVldWVkVmlkZW9PdXRwdXQgc28gcGFp
bnRzIG9mIHRoZSBjdXJyZW50IGZyYW1lIHN1Y2NlZWQ7CisgICAgdXBkYXRlTGFzdFBpeGVsQnVm
ZmVyKCk7CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBhIENBRGlzcGxheUxpbmsgdG8g
Z2V0IHVwZGF0ZXMgb24gcmVuZGVyaW5nLCBmb3Igbm93IHdlIGVtdWxhdGUgd2l0aCBhZGRQZXJp
b2RpY1RpbWVPYnNlcnZlckZvckludGVydmFsLgotICAgIG1fdmlkZW9GcmFtZU1ldGFkYXRhR2F0
aGVyaW5nT2JzZXJ2ZXIgPSBbbV9hdlBsYXllciBhZGRQZXJpb2RpY1RpbWVPYnNlcnZlckZvcklu
dGVydmFsOlBBTDo6Q01UaW1lTWFrZSgxLCA2MCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XShDTVRpbWUgY3Vy
cmVudFRpbWUpIHsKLSAgICAgICAgZW5zdXJlT25NYWluVGhyZWFkKFt3ZWFrVGhpcywgY3VycmVu
dFRpbWVdIHsKLSAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICB3ZWFr
VGhpcy0+Y2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEoY3VycmVudFRpbWUpOwotICAgICAgICB9
KTsKLSAgICB9XTsKKyAgICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciA9IFdURjo6bWFr
ZVVuaXF1ZTxPYnNlcnZlcjx2b2lkKCk+PihbdGhpc10geworICAgICAgICBtX2N1cnJlbnRJbWFn
ZUNoYW5nZWRPYnNlcnZlciA9IG51bGxwdHI7CisgICAgICAgIGNoZWNrTmV3VmlkZW9GcmFtZU1l
dGFkYXRhKCk7CisgICAgfSk7CisKKyAgICBpZiAobV92aWRlb091dHB1dCkKKyAgICAgICAgbV92
aWRlb091dHB1dC0+YWRkQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKCptX2N1cnJlbnRJbWFn
ZUNoYW5nZWRPYnNlcnZlcik7CisKKyAgICBtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRh
ID0gdHJ1ZTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpj
aGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YShDTVRpbWUgY3VycmVudFRpbWUpCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRh
KCkKIHsKLSAgICBpZiAoIXVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcigpKQorICAgIGlmICghbV9pc0dh
dGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmlkZW9G
cmFtZU1ldGFkYXRhIG1ldGFkYXRhOwotICAgIG1ldGFkYXRhLndpZHRoID0gbV9jYWNoZWRQcmVz
ZW50YXRpb25TaXplLndpZHRoKCk7Ci0gICAgbWV0YWRhdGEuaGVpZ2h0ID0gbV9jYWNoZWRQcmVz
ZW50YXRpb25TaXplLmhlaWdodCgpOwotICAgIG1ldGFkYXRhLnByZXNlbnRlZEZyYW1lcyA9ICsr
bV9zYW1wbGVDb3VudDsKLSAgICBtZXRhZGF0YS5tZWRpYVRpbWUgPSBQQUw6OkNNVGltZUdldFNl
Y29uZHMoY3VycmVudFRpbWUpOwotICAgIC8vIEZJWE1FOiBwcmVzZW50YXRpb25UaW1lIGFuZCBl
eHBlY3RlZERpc3BsYXlUaW1lIG1pZ2h0IG5vdCBhbHdheXMgaGF2ZSB0aGUgc2FtZSB2YWx1ZSwg
d2Ugc2hvdWxkIHRyeSBnZXR0aW5nIG1vcmUgcHJlY2lzZSB2YWx1ZXMuCi0gICAgbWV0YWRhdGEu
cHJlc2VudGF0aW9uVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2No
KCkuc2Vjb25kcygpOwotICAgIG1ldGFkYXRhLmV4cGVjdGVkRGlzcGxheVRpbWUgPSBtZXRhZGF0
YS5wcmVzZW50YXRpb25UaW1lOworICAgIGlmICghdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkgJiYg
IW1fdmlkZW9GcmFtZU1ldGFkYXRhKQorICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvRnJh
bWVNZXRhZGF0YSA9IG1ldGFkYXRhOwotICAgIHBsYXllcigpLT5vbk5ld1ZpZGVvRnJhbWVNZXRh
ZGF0YShXVEZNb3ZlKG1ldGFkYXRhKSwgbV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIHBs
YXllcigpLT5vbk5ld1ZpZGVvRnJhbWVNZXRhZGF0YShXVEZNb3ZlKCptX3ZpZGVvRnJhbWVNZXRh
ZGF0YSksIG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdG9wVmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nKCkK
QEAgLTI1MTgsMTcgKzI0OTYsMTcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpjcmVhdGVWaWRlb091dHB1dCgpCiAgICAgaWYgKCFtX2F2UGxheWVySXRlbSB8fCBt
X3ZpZGVvT3V0cHV0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvT3V0cHV0ID0gYWRv
cHROUyhbUEFMOjphbGxvY0FWUGxheWVySXRlbVZpZGVvT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0
aFBpeGVsQnVmZmVyQXR0cmlidXRlczpuaWxdKTsKKyAgICBtX3ZpZGVvT3V0cHV0ID0gUXVldWVk
VmlkZW9PdXRwdXQ6OmNyZWF0ZShtX2F2UGxheWVySXRlbS5nZXQoKSwgbV9hdlBsYXllci5nZXQo
KSk7CiAgICAgQVNTRVJUKG1fdmlkZW9PdXRwdXQpOwogICAgIGlmICghbV92aWRlb091dHB1dCkg
ewogICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIi1bQVZQbGF5ZXJJdGVtVmlkZW9P
dXRwdXQgaW5pdFdpdGhQaXhlbEJ1ZmZlckF0dHJpYnV0ZXM6XSBmYWlsZWQhIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisgICAgaWYgKG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKQor
ICAgICAgICBtX3ZpZGVvT3V0cHV0LT5hZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoKm1f
Y3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKTsKIAotICAgIG1fdmlkZW9PdXRwdXREZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tXZWJDb3JlQVZGUHVsbERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBsYXll
cjoqdGhpc10pOwotICAgIFttX3ZpZGVvT3V0cHV0IHNldERlbGVnYXRlOm1fdmlkZW9PdXRwdXRE
ZWxlZ2F0ZS5nZXQoKSBxdWV1ZTpnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpXTsKLQotICAgIFtt
X2F2UGxheWVySXRlbSBhZGRPdXRwdXQ6bV92aWRlb091dHB1dC5nZXQoKV07CisgICAgaWYgKG1f
d2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZU9ic2VydmVyKQorICAgICAgICBt
X3ZpZGVvT3V0cHV0LT5hZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoKm1fd2FpdEZvclZp
ZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZU9ic2VydmVyKTsKIAogICAgIHNldE5lZWRzUmVu
ZGVyaW5nTW9kZUNoYW5nZWQoKTsKIH0KQEAgLTI1MzgsMTkgKzI1MTYsMTkgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpkZXN0cm95VmlkZW9PdXRwdXQoKQogICAg
IGlmICghbV92aWRlb091dHB1dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fYXZQbGF5
ZXJJdGVtKQotICAgICAgICBbbV9hdlBsYXllckl0ZW0gcmVtb3ZlT3V0cHV0Om1fdmlkZW9PdXRw
dXQuZ2V0KCldOwotCiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKLSAgICBtX3ZpZGVv
T3V0cHV0ID0gMDsKKyAgICBtX3ZpZGVvT3V0cHV0LT5pbnZhbGlkYXRlKCk7CisgICAgbV92aWRl
b091dHB1dCA9IG51bGxwdHI7CisKKyAgICBtX3ZpZGVvRnJhbWVNZXRhZGF0YSA9IHsgfTsKIAog
ICAgIHNldE5lZWRzUmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIH0KIAogYm9vbCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKQogewotICAg
IGlmICghbV9hdlBsYXllckl0ZW0gfHwgcmVhZHlTdGF0ZSgpIDwgTWVkaWFQbGF5ZXI6OlJlYWR5
U3RhdGU6OkhhdmVDdXJyZW50RGF0YSkKKyAgICBpZiAoIW1fYXZQbGF5ZXJJdGVtKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2hhdmVCZWVuQXNrZWRUb1BhaW50ID0gdHJ1ZTsKQEAg
LTI1NTksMTIgKzI1MzcsMjUgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKQogICAgICAgICBjcmVhdGVWaWRlb091dHB1dCgp
OwogICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0KTsKIAotICAgIENNVGltZSBjdXJyZW50VGltZSA9
IFttX2F2UGxheWVySXRlbSBjdXJyZW50VGltZV07CisgICAgYXV0byBjdXJyZW50VGltZSA9IGN1
cnJlbnRNZWRpYVRpbWUoKTsKIAotICAgIGlmICghW21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4ZWxC
dWZmZXJGb3JJdGVtVGltZTpjdXJyZW50VGltZV0pCisgICAgaWYgKCFtX3ZpZGVvT3V0cHV0LT5o
YXNJbWFnZUZvclRpbWUoY3VycmVudFRpbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBtX2xhc3RQaXhlbEJ1ZmZlciA9IGFkb3B0Q0YoW21fdmlkZW9PdXRwdXQgY29weVBpeGVsQnVm
ZmVyRm9ySXRlbVRpbWU6Y3VycmVudFRpbWUgaXRlbVRpbWVGb3JEaXNwbGF5Om5pbF0pOworICAg
IGF1dG8gZW50cnkgPSBtX3ZpZGVvT3V0cHV0LT50YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShj
dXJyZW50VGltZSk7CisgICAgbV9sYXN0UGl4ZWxCdWZmZXIgPSBXVEZNb3ZlKGVudHJ5LnBpeGVs
QnVmZmVyKTsKKworICAgIGlmIChtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhKSB7Cisg
ICAgICAgIGF1dG8gcHJlc2VudGF0aW9uVGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29u
ZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpIC0gKGN1cnJlbnRUaW1lIC0gZW50cnkuZGlzcGxheVRp
bWUpLnRvRG91YmxlKCk7CisgICAgICAgIG1fdmlkZW9GcmFtZU1ldGFkYXRhID0geworICAgICAg
ICAgICAgLndpZHRoID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENWUGl4ZWxCdWZmZXJHZXRXaWR0
aChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkpLAorICAgICAgICAgICAgLmhlaWdodCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVy
LmdldCgpKSksCisgICAgICAgICAgICAucHJlc2VudGVkRnJhbWVzID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KCsrbV9zYW1wbGVDb3VudCksCisgICAgICAgICAgICAubWVkaWFUaW1lID0gZW50cnku
ZGlzcGxheVRpbWUudG9Eb3VibGUoKSwKKyAgICAgICAgICAgIC5wcmVzZW50YXRpb25UaW1lID0g
cHJlc2VudGF0aW9uVGltZSwKKyAgICAgICAgICAgIC5leHBlY3RlZERpc3BsYXlUaW1lID0gcHJl
c2VudGF0aW9uVGltZSwKKyAgICAgICAgfTsKKyAgICB9CiAKICAgICBpZiAobV9pbWFnZVJvdGF0
aW9uU2Vzc2lvbikKICAgICAgICAgbV9sYXN0UGl4ZWxCdWZmZXIgPSBtX2ltYWdlUm90YXRpb25T
ZXNzaW9uLT5yb3RhdGUobV9sYXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOwpAQCAtMjU4NCw3ICsyNTc1
LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb091dHB1
dEhhc0F2YWlsYWJsZUZyYW1lKCkKICAgICBpZiAoIW1fdmlkZW9PdXRwdXQpCiAgICAgICAgIGNy
ZWF0ZVZpZGVvT3V0cHV0KCk7CiAKLSAgICByZXR1cm4gW21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4
ZWxCdWZmZXJGb3JJdGVtVGltZTpbbV9hdlBsYXllckl0ZW0gY3VycmVudFRpbWVdXTsKKyAgICBy
ZXR1cm4gbV92aWRlb091dHB1dC0+aGFzSW1hZ2VGb3JUaW1lKFBBTDo6dG9NZWRpYVRpbWUoW21f
YXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXSkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlIHR5cGUpCkBAIC0y
NjAyLDcgKzI1OTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OnVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBlIHR5cGUpCiAgICAgLy8gQ2FsbHMgdG8gY29weVBp
eGVsQnVmZmVyRm9ySXRlbVRpbWU6aXRlbVRpbWVGb3JEaXNwbGF5OiBtYXkgcmV0dXJuIG5pbCBp
ZiB0aGUgcGl4ZWwgYnVmZmVyCiAgICAgLy8gZm9yIHRoZSByZXF1ZXN0ZWQgdGltZSBoYXMgYWxy
ZWFkeSBiZWVuIHJldHJpZXZlZC4gSW4gdGhpcyBjYXNlLCB0aGUgbGFzdCB2YWxpZCBpbWFnZSAo
aWYgYW55KQogICAgIC8vIHNob3VsZCBiZSBkaXNwbGF5ZWQuCi0gICAgaWYgKChtX2lzR2F0aGVy
aW5nVmlkZW9GcmFtZU1ldGFkYXRhIHx8ICF1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSkgJiYgKG1f
bGFzdEltYWdlIHx8ICFtX2xhc3RQaXhlbEJ1ZmZlcikpCisgICAgaWYgKCF1cGRhdGVMYXN0UGl4
ZWxCdWZmZXIoKSAmJiAobV9sYXN0SW1hZ2UgfHwgIW1fbGFzdFBpeGVsQnVmZmVyKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3BpeGVsQnVmZmVyQ29uZm9ybWVyKSB7CkBAIC0yNjM3
LDggKzI2MjgsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBh
aW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNzQ29udGV4dCYgYwogCiBSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGl4ZWxCdWZm
ZXJGb3JDdXJyZW50VGltZSgpCiB7Ci0gICAgaWYgKCFtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1l
dGFkYXRhKQotICAgICAgICB1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKTsKKyAgICB1cGRhdGVMYXN0
UGl4ZWxCdWZmZXIoKTsKIAogICAgIHJldHVybiBtX2xhc3RQaXhlbEJ1ZmZlcjsKIH0KQEAgLTI2
NjksNyArMjY1OSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
OndhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKQogICAgIHN0ZDo6b3B0aW9u
YWw8UnVuTG9vcDo6VGltZXI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4+IHRp
bWVvdXRUaW1lcjsKIAogICAgIGlmICghbV9ydW5Mb29wTmVzdGluZ0xldmVsKSB7Ci0gICAgICAg
IFttX3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZVdpdGhB
ZHZhbmNlSW50ZXJ2YWw6MF07CisgICAgICAgIG1fd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRh
V2lsbENoYW5nZU9ic2VydmVyID0gV1RGOjptYWtlVW5pcXVlPE9ic2VydmVyPHZvaWQoKT4+KFt0
aGlzLCBsb2dJZGVudGlmaWVyID0gTE9HSURFTlRJRklFUl0gKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBpZiAobV9ydW5Mb29wTmVzdGluZ0xldmVsKQorICAgICAgICAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5zdG9wKCk7CisgICAgICAgIH0pOworICAgICAgICBtX3ZpZGVvT3V0cHV0LT5hZGRD
dXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoKm1fd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRh
V2lsbENoYW5nZU9ic2VydmVyKTsKIAogICAgICAgICB0aW1lb3V0VGltZXIuZW1wbGFjZShSdW5M
b29wOjptYWluKCksIFsmXSB7CiAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwpA
QCAtMjY5NiwxNSArMjY5MCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6d2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpCiAKIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5n
ZSgpCiB7Ci0gICAgaWYgKG1fcnVuTG9vcE5lc3RpbmdMZXZlbCkgewotICAgICAgICBpZiAoUnVu
TG9vcDo6aXNNYWluKCkpCi0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7Ci0g
ICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLnN0b3AoKTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICB9Ci0gICAgfQorICAgIGNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCk7CiB9CiAK
ICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKQEAgLTQwODksMzcgKzQwNzUsNCBA
QCAtICh2b2lkKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJj
ZUxvYWRlciBkaWRDYW5jZWxMb2FkaW5nUgogCiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJD
b3JlQVZGUHVsbERlbGVnYXRlIHsKLSAgICBXZWFrUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM+IF9wbGF5ZXI7Ci19Ci0KLUBzeW50aGVzaXplIHNlbWFwaG9y
ZSA9IG1fc2VtYXBob3JlOwotCi0tIChpZClpbml0V2l0aFBsYXllcjooV2Vha1B0cjxNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDPiYmKXBsYXllcgotewotICAgIHNlbGYgPSBbc3Vw
ZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIF9wbGF5
ZXIgPSBXVEZNb3ZlKHBsYXllcik7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpb3V0
cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQgKilvdXRwdXQK
LXsKLSAgICBVTlVTRURfUEFSQU0ob3V0cHV0KTsKLSAgICBtX3NlbWFwaG9yZS5zaWduYWwoKTsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFtzZWxmLCBzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2Vs
ZiB9XSB7Ci0gICAgICAgIGlmIChfcGxheWVyKQotICAgICAgICAgICAgX3BsYXllci0+b3V0cHV0
TWVkaWFEYXRhV2lsbENoYW5nZSgpOwotICAgIH0pOwotfQotCi0tICh2b2lkKW91dHB1dFNlcXVl
bmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQgKilvdXRwdXQKLXsKLSAgICBV
TlVTRURfUEFSQU0ob3V0cHV0KTsKLSAgICAvLyBOby1vcC4KLX0KLQotQGVuZAotCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRi
YWYwZWExMWU1YzRmYmUzMjRkOTUyNWFkZjFiZGIzYzYzMzBhODgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1
ZWRWaWRlb091dHB1dC5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDx3dGYv
RGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL09ic2Vy
dmVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtIYXNoU2V0Lmg+CisKK09CSkNfQ0xBU1MgQVZQbGF5
ZXI7CitPQkpDX0NMQVNTIEFWUGxheWVySXRlbTsKK09CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtVmlk
ZW9PdXRwdXQ7CitPQkpDX0NMQVNTIFdlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGU7CisKK3R5
cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNWUGl4ZWxCdWZmZXJSZWY7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgUXVldWVkVmlkZW9PdXRwdXQKKyAgICA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFF1ZXVlZFZpZGVvT3V0cHV0PgorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFF1ZXVl
ZFZpZGVvT3V0cHV0PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxRdWV1ZWRWaWRlb091dHB1dD4gY3JlYXRlKEFWUGxheWVySXRlbSosIEFW
UGxheWVyKik7CisgICAgflF1ZXVlZFZpZGVvT3V0cHV0KCk7CisKKyAgICB2b2lkIGludmFsaWRh
dGUoKTsKKyAgICBib29sIGhhc0ltYWdlRm9yVGltZShjb25zdCBNZWRpYVRpbWUmKSBjb25zdDsK
KworICAgIHN0cnVjdCBWaWRlb0ZyYW1lRW50cnkgeworICAgICAgICBSZXRhaW5QdHI8Q1ZQaXhl
bEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXI7CisgICAgICAgIE1lZGlhVGltZSBkaXNwbGF5VGltZTsK
KyAgICB9OworICAgIFZpZGVvRnJhbWVFbnRyeSB0YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShj
b25zdCBNZWRpYVRpbWUmKTsKKworICAgIHZvaWQgYWRkVmlkZW9GcmFtZUVudHJpZXMoVmVjdG9y
PFZpZGVvRnJhbWVFbnRyeT4mJik7CisgICAgdm9pZCBwdXJnZVZpZGVvRnJhbWVFbnRyaWVzKCk7
CisKKyAgICB1c2luZyBDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lk
KCk+OworICAgIHZvaWQgYWRkQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKGNvbnN0IEN1cnJl
bnRJbWFnZUNoYW5nZWRPYnNlcnZlciYpOworCisgICAgdXNpbmcgSW1hZ2VNYXAgPSBzdGQ6Om1h
cDxNZWRpYVRpbWUsIFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPj47CisKKyAgICB2b2lkIHJh
dGVDaGFuZ2VkKGZsb2F0KTsKKworcHJpdmF0ZToKKyAgICBRdWV1ZWRWaWRlb091dHB1dChBVlBs
YXllckl0ZW0qLCBBVlBsYXllciopOworCisgICAgdm9pZCBwdXJnZUltYWdlc0JlZm9yZVRpbWUo
Y29uc3QgTWVkaWFUaW1lJik7CisgICAgdm9pZCBjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2
ZXIoKTsKKyAgICB2b2lkIGNhbmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworICAgIHZvaWQg
bmV4dEltYWdlVGltZVJlYWNoZWQoKTsKKworICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW0+IG1f
cGxheWVySXRlbTsKKyAgICBSZXRhaW5QdHI8QVZQbGF5ZXI+IG1fcGxheWVyOworICAgIFJldGFp
blB0cjxXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlPiBtX2RlbGVnYXRlOworICAgIFJldGFp
blB0cjxBVlBsYXllckl0ZW1WaWRlb091dHB1dD4gbV92aWRlb091dHB1dDsKKyAgICBSZXRhaW5Q
dHI8aWQ+IG1fdmlkZW9UaW1lYmFzZU9ic2VydmVyOworICAgIFJldGFpblB0cjxpZD4gbV9uZXh0
SW1hZ2VUaW1lYmFzZU9ic2VydmVyOworCisgICAgSW1hZ2VNYXAgbV92aWRlb0ZyYW1lczsKKyAg
ICBXZWFrSGFzaFNldDxDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXI+IG1fY3VycmVudEltYWdl
Q2hhbmdlZE9ic2VydmVyczsKKworICAgIGJvb2wgbV9wYXVzZWQgeyB0cnVlIH07Cit9OworCit9
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wYmMwODM4MTRjMDhjN2RlZWQ2MWM5MDc5YzIyYmUzZjUwNzhhNzdlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQubW0KQEAgLTAsMCArMSwzMDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUXVldWVkVmlkZW9PdXRwdXQuaCIK
KworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0
ZW1PdXRwdXQuaD4KKyNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRh
dGlvbi5oPgorI2luY2x1ZGUgPHBhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CisKKyNpbmNsdWRlIDxw
YWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KKyNpbmNsdWRlIDxwYWwvY29jb2EvQVZGb3VuZGF0
aW9uU29mdExpbmsuaD4KKworQGludGVyZmFjZSBXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRl
IDogTlNPYmplY3Q8QVZQbGF5ZXJJdGVtT3V0cHV0UHVsbERlbGVnYXRlPiB7CisgICAgV2Vha1B0
cjxXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dD4gX3BhcmVudDsKK30KKy0gKGlkKWluaXRXaXRo
UGFyZW50OihXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dCopcGFyZW50OworLSAodm9pZClvdXRw
dXRNZWRpYURhdGFXaWxsQ2hhbmdlOihBVlBsYXllckl0ZW1PdXRwdXQgKilvdXRwdXQ7CistICh2
b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0
OworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9i
amVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkKiljb250ZXh0
OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZQor
LSAoaWQpaW5pdFdpdGhQYXJlbnQ6KFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0KilwYXJlbnQK
K3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgIF9wYXJlbnQgPSBwYXJlbnQ7CisgICAgcmV0dXJuIHNlbGY7Cit9CisK
Ky0gKHZvaWQpb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQbGF5ZXJJdGVtT3V0cHV0ICop
b3V0cHV0Cit7CisgICAgQVNTRVJUKFtvdXRwdXQgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxh
eWVySXRlbVZpZGVvT3V0cHV0Q2xhc3MoKV0pOworICAgIGF1dG8qIHZpZGVvT3V0cHV0ID0gKEFW
UGxheWVySXRlbVZpZGVvT3V0cHV0KilvdXRwdXQ7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6UXVl
dWVkVmlkZW9PdXRwdXQ6OlZpZGVvRnJhbWVFbnRyeT4gdmlkZW9GcmFtZUVudHJpZXM7CisgICAg
ZG8geworICAgICAgICBDTVRpbWUgZWFybGllc3RUaW1lID0gW3ZpZGVvT3V0cHV0IGVhcmxpZXN0
QXZhaWxhYmxlUGl4ZWxCdWZmZXJJdGVtVGltZV07CisgICAgICAgIGlmIChDTVRJTUVfSVNfSU5W
QUxJRChlYXJsaWVzdFRpbWUpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgYXV0byBw
aXhlbEJ1ZmZlciA9IGFkb3B0Q0YoW3ZpZGVvT3V0cHV0IGNvcHlQaXhlbEJ1ZmZlckZvckl0ZW1U
aW1lOmVhcmxpZXN0VGltZSBpdGVtVGltZUZvckRpc3BsYXk6bmlsXSk7CisgICAgICAgIGlmICgh
cGl4ZWxCdWZmZXIpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICB2aWRlb0ZyYW1lRW50
cmllcy5hcHBlbmQoeyBXVEZNb3ZlKHBpeGVsQnVmZmVyKSwgUEFMOjp0b01lZGlhVGltZShlYXJs
aWVzdFRpbWUpIH0pOworICAgIH0gd2hpbGUgKHRydWUpOworCisgICAgaWYgKHZpZGVvRnJhbWVF
bnRyaWVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FsbE9uTWFpblJ1bkxv
b3AoW3ZpZGVvRnJhbWVFbnRyaWVzID0gV1RGTW92ZSh2aWRlb0ZyYW1lRW50cmllcyksIHBhcmVu
dCA9IF9wYXJlbnRdICgpIG11dGFibGUgeworICAgICAgICBpZiAocGFyZW50KQorICAgICAgICAg
ICAgcGFyZW50LT5hZGRWaWRlb0ZyYW1lRW50cmllcyhXVEZNb3ZlKHZpZGVvRnJhbWVFbnRyaWVz
KSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOihBVlBs
YXllckl0ZW1PdXRwdXQgKilvdXRwdXQKK3sKKyAgICBBU1NFUlQoW291dHB1dCBpc0tpbmRPZkNs
YXNzOlBBTDo6Z2V0QVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXRDbGFzcygpXSk7CisgICAgYXV0byog
dmlkZW9PdXRwdXQgPSAoQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQqKW91dHB1dDsKKyAgICBbdmlk
ZW9PdXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlvbk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3Nz
aWJsZV07CisKKyAgICBjYWxsT25NYWluUnVuTG9vcChbcGFyZW50ID0gX3BhcmVudF0geworICAg
ICAgICBpZiAocGFyZW50KQorICAgICAgICAgICAgcGFyZW50LT5wdXJnZVZpZGVvRnJhbWVFbnRy
aWVzKCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQ
YXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29u
dGV4dDoodm9pZCopY29udGV4dAoreworICAgIGlmICghW2tleVBhdGggaXNFcXVhbFRvU3RyaW5n
OkAicmF0ZSJdKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJhdGVWYWx1ZSA9IChOU051
bWJlciopW2NoYW5nZSB2YWx1ZUZvcktleTpOU0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsKKyAgICBB
U1NFUlQoW3JhdGVWYWx1ZSBpc0tpbmRPZkNsYXNzOk5TTnVtYmVyLmNsYXNzXSk7CisgICAgYXV0
byByYXRlID0gcmF0ZVZhbHVlLmZsb2F0VmFsdWU7CisKKyAgICBlbnN1cmVPbk1haW5SdW5Mb29w
KFtwYXJlbnQgPSBfcGFyZW50LCByYXRlXSB7CisgICAgICAgIGlmIChwYXJlbnQpCisgICAgICAg
ICAgICBwYXJlbnQtPnJhdGVDaGFuZ2VkKHJhdGUpOworICAgIH0pOworfQorQGVuZAorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbE91dHB1dERl
bGVnYXRlUXVldWUoKQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFF1ZXVl
OworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29u
Y2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgZ2xvYmFsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9j
cmVhdGUoIldlYlF1ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGUgcXVldWUiLCBESVNQQVRDSF9RVUVV
RV9TRVJJQUwpOworICAgIH0pOworICAgIHJldHVybiBnbG9iYWxRdWV1ZTsKK30KKworUmVmPFF1
ZXVlZFZpZGVvT3V0cHV0PiBRdWV1ZWRWaWRlb091dHB1dDo6Y3JlYXRlKEFWUGxheWVySXRlbSog
aXRlbSwgQVZQbGF5ZXIqIHBsYXllcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBRdWV1
ZWRWaWRlb091dHB1dChpdGVtLCBwbGF5ZXIpKTsKK30KKworUXVldWVkVmlkZW9PdXRwdXQ6OlF1
ZXVlZFZpZGVvT3V0cHV0KEFWUGxheWVySXRlbSogaXRlbSwgQVZQbGF5ZXIqIHBsYXllcikKKyAg
ICA6IG1fcGxheWVySXRlbShpdGVtKQorICAgICwgbV9wbGF5ZXIocGxheWVyKQorICAgICwgbV9k
ZWxlZ2F0ZShhZG9wdE5TKFtbV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBhbGxvY10gaW5p
dFdpdGhQYXJlbnQ6dGhpc10pKQoreworICAgIG1fdmlkZW9PdXRwdXQgPSBhZG9wdE5TKFtQQUw6
OmFsbG9jQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXRJbnN0YW5jZSgpIGluaXRXaXRoUGl4ZWxCdWZm
ZXJBdHRyaWJ1dGVzOm5pbF0pOworICAgIFttX3ZpZGVvT3V0cHV0IHNldERlbGVnYXRlOm1fZGVs
ZWdhdGUuZ2V0KCkgcXVldWU6Z2xvYmFsT3V0cHV0RGVsZWdhdGVRdWV1ZSgpXTsKKyAgICBbbV92
aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bv
c3NpYmxlXTsKKworICAgIFttX3BsYXllckl0ZW0gYWRkT3V0cHV0Om1fdmlkZW9PdXRwdXQuZ2V0
KCldOworCisgICAgW21fcGxheWVyIGFkZE9ic2VydmVyOm1fZGVsZWdhdGUuZ2V0KCkgZm9yS2V5
UGF0aDpAInJhdGUiIG9wdGlvbnM6KE5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgfCBOU0tl
eVZhbHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlhbCkgY29udGV4dDpuaWxdOworCisgICAgbV92aWRl
b1RpbWViYXNlT2JzZXJ2ZXIgPSBbbV9wbGF5ZXIgYWRkUGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJ
bnRlcnZhbDpQQUw6OkNNVGltZU1ha2UoMSwgNjApIHF1ZXVlOmdsb2JhbE91dHB1dERlbGVnYXRl
UXVldWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwcm90ZWN0
ZWREZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIHByb3RlY3RlZE91dHB1dCA9IG1fdmlkZW9PdXRwdXRd
KENNVGltZSBjdXJyZW50VGltZSkgbXV0YWJsZSB7CisKKyAgICAgICAgLy8gUGVyaW9kaWNhbGx5
IGNoZWNrIGZvciBuZXcgYXZhaWxhYmxlIHBpeGVsIGJ1ZmZlcnMuCisgICAgICAgIFtwcm90ZWN0
ZWREZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOnByb3RlY3RlZE91dHB1dC5nZXQo
KV07CisKKyAgICAgICAgLy8gQW5kIHB1cmdlIHRoZSBiYWNrIGJ1ZmZlciBvZiBwYXN0IGZyYW1l
cy4KKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gd2Vha1RoaXMsIHRpbWUg
PSBQQUw6OnRvTWVkaWFUaW1lKGN1cnJlbnRUaW1lKV0geworICAgICAgICAgICAgaWYgKHdlYWtU
aGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5wdXJnZUltYWdlc0JlZm9yZVRpbWUodGlt
ZSk7CisgICAgICAgIH0pOworICAgIH1dOworfQorCitRdWV1ZWRWaWRlb091dHB1dDo6flF1ZXVl
ZFZpZGVvT3V0cHV0KCkKK3sKKyAgICBpbnZhbGlkYXRlKCk7Cit9CisKK3ZvaWQgUXVldWVkVmlk
ZW9PdXRwdXQ6OmludmFsaWRhdGUoKQoreworICAgIGlmIChtX3ZpZGVvVGltZWJhc2VPYnNlcnZl
cikgeworICAgICAgICBbbV9wbGF5ZXIgcmVtb3ZlVGltZU9ic2VydmVyOm1fdmlkZW9UaW1lYmFz
ZU9ic2VydmVyLmdldCgpXTsKKyAgICAgICAgbV92aWRlb1RpbWViYXNlT2JzZXJ2ZXIgPSBuaWw7
CisgICAgfQorCisgICAgY2FuY2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisKKyAgICBpZiAo
bV92aWRlb091dHB1dCkgeworICAgICAgICBbbV9wbGF5ZXJJdGVtIHJlbW92ZU91dHB1dDptX3Zp
ZGVvT3V0cHV0LmdldCgpXTsKKyAgICAgICAgW21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bmls
IHF1ZXVlOm5pbF07CisgICAgICAgIG1fdmlkZW9PdXRwdXQgPSBuaWw7CisgICAgfQorCisgICAg
aWYgKG1fcGxheWVyKSB7CisgICAgICAgIFttX3BsYXllciByZW1vdmVPYnNlcnZlcjptX2RlbGVn
YXRlLmdldCgpIGZvcktleVBhdGg6QCJyYXRlIl07CisgICAgICAgIG1fcGxheWVyID0gbmlsOwor
ICAgIH0KKworICAgIG1fcGxheWVySXRlbSA9IG5pbDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IE1heWJlQ29uc3RNYXAsIHR5cGVuYW1lIE1heWJlQ29uc3RJdGVyID0gZGVjbHR5cGUoTWF5YmVD
b25zdE1hcCgpLmJlZ2luKCkpPgorTWF5YmVDb25zdEl0ZXIgZmluZEltYWdlRm9yVGltZShNYXli
ZUNvbnN0TWFwJiBtYXAsIGNvbnN0IE1lZGlhVGltZSYgdGltZSkKK3sKKyAgICAvLyBPdXRwdXRz
IG9mIEFWUGxheWVySXRlbVZpZGVvT3V0cHV0IGhhdmUgYSBkaXNwbGF5IHRpbWUsIGJ1dCBub3Qg
YSBkdXJhdGlvbjsgdGhleSBhcmUgdmFsaWQKKyAgICAvLyB1bnRpbCB0aGUgYXJyaXZhbCBvZiBh
IGxhdGVyIGZyYW1lLiBGaW5kIHRoaXMgZnJhbWUgZWZmaWNpZW50bHkgdXNpbmcgc2V0Ojp1cHBl
cl9ib3VuZCB0byBmaW5kCisgICAgLy8gdGhlIG5leHQgZGlzcGxheWFibGUgZnJhbWUsIGFuZCB3
YWxrIGJhY2t3YXJkcyBieSBvbmUgdG8gZmluZCBhIGZyYW1lIGZvciB0aGUgdGFyZ2V0IHRpbWUu
CisgICAgaWYgKG1hcC5lbXB0eSgpKQorICAgICAgICByZXR1cm4gbWFwLmVuZCgpOworCisgICAg
YXV0byBpdGVyID0gbWFwLnVwcGVyX2JvdW5kKHRpbWUpOworICAgIGlmIChpdGVyID09IG1hcC5i
ZWdpbigpKQorICAgICAgICByZXR1cm4gbWFwLmVuZCgpOworCisgICAgcmV0dXJuIC0taXRlcjsK
K30KKworYm9vbCBRdWV1ZWRWaWRlb091dHB1dDo6aGFzSW1hZ2VGb3JUaW1lKGNvbnN0IE1lZGlh
VGltZSYgdGltZSkgY29uc3QKK3sKKyAgICByZXR1cm4gZmluZEltYWdlRm9yVGltZShtX3ZpZGVv
RnJhbWVzLCB0aW1lKSAhPSBtX3ZpZGVvRnJhbWVzLmVuZCgpOworfQorCithdXRvIFF1ZXVlZFZp
ZGVvT3V0cHV0Ojp0YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShjb25zdCBNZWRpYVRpbWUmIHRp
bWUpIC0+IFZpZGVvRnJhbWVFbnRyeQoreworICAgIGF1dG8gaXRlciA9IGZpbmRJbWFnZUZvclRp
bWUobV92aWRlb0ZyYW1lcywgdGltZSk7CisgICAgaWYgKGl0ZXIgPT0gbV92aWRlb0ZyYW1lcy5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgp
IH07CisKKyAgICBWaWRlb0ZyYW1lRW50cnkgZW50cnkgPSB7IFdURk1vdmUoaXRlci0+c2Vjb25k
KSwgaXRlci0+Zmlyc3QgfTsKKworICAgIC8vIFB1cmdlIGFsbCBmcmFtZXMgYmVmb3JlIGB0aW1l
YCwgc28gdGhhdCByZXBlYXRlZCBjYWxscyB3aXRoIHRoZSBzYW1lIHRpbWUgZG9uJ3QgcmV0dXJu
CisgICAgLy8gc3VjY2Vzc2l2ZWx5IGVhcmxpZXIgaW1hZ2VzLgorICAgIG1fdmlkZW9GcmFtZXMu
ZXJhc2UobV92aWRlb0ZyYW1lcy5iZWdpbigpLCArK2l0ZXIpOworCisgICAgcmV0dXJuIGVudHJ5
OworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjphZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2Jz
ZXJ2ZXIoY29uc3QgQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyJiBvYnNlcnZlcikKK3sKKyAg
ICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsKKyAgICBjb25m
aWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKworICAgIFttX3ZpZGVvT3V0cHV0IHJlcXVl
c3ROb3RpZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZUFzU29vbkFzUG9zc2libGVdOworfQorCit2
b2lkIFF1ZXVlZFZpZGVvT3V0cHV0Ojpjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKQor
eworICAgIGlmIChtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gY3VycmVudFRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKFttX3BsYXllciBjdXJy
ZW50VGltZV0pOworICAgIGF1dG8gaXRlciA9IGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1l
cywgY3VycmVudFRpbWUpOworICAgIGlmIChpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkgfHwg
KytpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gbmV4dEltYWdlVGltZSA9IGl0ZXItPmZpcnN0OworCisgICAgbV9uZXh0SW1hZ2VUaW1lYmFz
ZU9ic2VydmVyID0gW21fcGxheWVyIGFkZEJvdW5kYXJ5VGltZU9ic2VydmVyRm9yVGltZXM6QFtb
TlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWU6UEFMOjp0b0NNVGltZShjdXJyZW50VGltZSldXSBxdWV1
ZTpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVlKCkgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBXZWFr
UHRyIHsgKnRoaXMgfSwgcHJvdGVjdGVkRGVsZWdhdGUgPSBtX2RlbGVnYXRlLCBwcm90ZWN0ZWRP
dXRwdXQgPSBtX3ZpZGVvT3V0cHV0XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblJ1
bkxvb3AoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldIHsKKyAgICAgICAgICAgIGlmICh3
ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bmV4dEltYWdlVGltZVJlYWNoZWQo
KTsKKyAgICAgICAgfSk7CisgICAgfV07Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmNh
bmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigpCit7CisgICAgaWYgKCFtX25leHRJbWFnZVRpbWVi
YXNlT2JzZXJ2ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFttX3BsYXllciByZW1vdmVUaW1l
T2JzZXJ2ZXI6bV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyLmdldCgpXTsKKyAgICBtX25leHRJ
bWFnZVRpbWViYXNlT2JzZXJ2ZXIgPSBuaWw7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6
Om5leHRJbWFnZVRpbWVSZWFjaGVkKCkKK3sKKyAgICBjYW5jZWxOZXh0SW1hZ2VUaW1lT2JzZXJ2
ZXIoKTsKKyAgICBhdXRvIG9ic2VydmVycyA9IHN0ZDo6ZXhjaGFuZ2UobV9jdXJyZW50SW1hZ2VD
aGFuZ2VkT2JzZXJ2ZXJzLCB7IH0pOworICAgIG9ic2VydmVycy5mb3JFYWNoKFtdKGF1dG8mIG9i
c2VydmVyKSB7IG9ic2VydmVyKCk7IH0pOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0Ojph
ZGRWaWRlb0ZyYW1lRW50cmllcyhWZWN0b3I8VmlkZW9GcmFtZUVudHJ5PiYmIHZpZGVvRnJhbWVF
bnRyaWVzKQoreworICAgIGJvb2wgbmVlZHNJbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCA9IGZh
bHNlOworICAgIGJvb2wgaGFzQ3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycyA9IG1fY3VycmVu
dEltYWdlQ2hhbmdlZE9ic2VydmVycy5jb21wdXRlU2l6ZSgpOworICAgIE1lZGlhVGltZSBjdXJy
ZW50VGltZSA9IGhhc0N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMgPyBQQUw6OnRvTWVkaWFU
aW1lKFttX3BsYXllciBjdXJyZW50VGltZV0pIDogTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpOwor
CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IHZpZGVvRnJhbWVFbnRyaWVzKSB7CisgICAgICAgIGlm
IChoYXNDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzICYmIGVudHJ5LmRpc3BsYXlUaW1lIDw9
IGN1cnJlbnRUaW1lKQorICAgICAgICAgICAgbmVlZHNJbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdl
ZCA9IHRydWU7CisgICAgICAgIG1fdmlkZW9GcmFtZXMuZW1wbGFjZShlbnRyeS5kaXNwbGF5VGlt
ZSwgV1RGTW92ZShlbnRyeS5waXhlbEJ1ZmZlcikpOworICAgIH0KKworICAgIGlmIChuZWVkc0lt
YWdlRm9yQ3VycmVudFRpbWVDaGFuZ2VkKQorICAgICAgICBuZXh0SW1hZ2VUaW1lUmVhY2hlZCgp
OworICAgIGVsc2UgaWYgKGhhc0N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcnMpCisgICAgICAg
IGNvbmZpZ3VyZU5leHRJbWFnZVRpbWVPYnNlcnZlcigpOworCisgICAgaWYgKG1fcGF1c2VkKQor
ICAgICAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFu
Z2VBc1Nvb25Bc1Bvc3NpYmxlXTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VW
aWRlb0ZyYW1lRW50cmllcygpCit7CisgICAgY2FuY2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCk7
CisgICAgbV92aWRlb0ZyYW1lcy5jbGVhcigpOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0
OjpwdXJnZUltYWdlc0JlZm9yZVRpbWUoY29uc3QgTWVkaWFUaW1lJiB0aW1lKQoreworICAgIG1f
dmlkZW9GcmFtZXMuZXJhc2UobV92aWRlb0ZyYW1lcy5iZWdpbigpLCBmaW5kSW1hZ2VGb3JUaW1l
KG1fdmlkZW9GcmFtZXMsIHRpbWUpKTsKK30KKwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6cmF0
ZUNoYW5nZWQoZmxvYXQgcmF0ZSkKK3sKKyAgICBtX3BhdXNlZCA9ICFyYXRlOworCisgICAgaWYg
KG1fcGF1c2VkKQorICAgICAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZN
ZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKK30KKworfQorCisjZW5kaWYKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDRkMTk2N2VkMzhlZTBkNTkzNTRjMmE3NDZlZWFkMDVkN2RkMGQwNGUuLjE1Y2Q3NDE3NzYw
NmUzZGYwZTNhOGNmMWNiMjYyODU4NWM2NmRmMDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAy
Mi0wMS0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIHJWRkMoKSBpc24ndCBjYWxsZWQgZm9yIGluaXRpYWwgdmlkZW8gbG9hZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1MDA2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogbWVkaWEvcmVxdWVzdC12aWRl
by1mcmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9y
ZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRp
YS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWstZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWsuaHRtbDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy13azEvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RF
eHBlY3RhdGlvbnM6CisKIDIwMjItMDEtMTEgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXdyaXRlIHRvdWNoIGFuZCBkcmFnIHRlc3RzIHRvIGJl
IG1vcmUgcm9idXN0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRl
by1mcmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVz
dC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjMDJmNjZl
YmFiZGZiNTc0ZDlmOWZmMWQ1YjgxZmM4MDg5MjAzNmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw2IEBACisKK1JVTih2aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGNh
bGxiYWNrKSkKK1JVTih2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50
L3Rlc3QiKSkKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY1MGIzZjFhOGM2MTFhMjZmY2QwYTU0ZWVlMGZiMDJjNTVlNjZmNjEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFy
dC5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8dGl0bGU+cmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQ8L3RpdGxlPgorICAgIDxz
Y3JpcHQgc3JjPSJ2aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0ibWVk
aWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50ID0+IHsKKyAgICAgICAgZmluZE1lZGlhRWxlbWVu
dCgpOworCisgICAgICAgIGxldCB2aWRlb0ZyYW1lUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNv
bHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVvLnJl
cXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soY2FsbGJhY2spKScpOworICAgICAgICAgICAgdmlkZW8u
cmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhyZXNvbHZlKTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgcnVuKCd2aWRlby5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3Qi
KScpOworCisgICAgICAgIGF3YWl0IHNob3VsZFJlc29sdmUodmlkZW9GcmFtZVByb21pc2UpOwor
CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorICAgIDx2aWRlbyBtdXRlZD48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlcXVl
c3QtdmlkZW8tZnJhbWUtc2Vlay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1
ZXN0LXZpZGVvLWZyYW1lLXNlZWstZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhMDE1ZjI2Yjgz
YWM5OWFmZjMwNTY4YjMyZTY2OTQxNTA2NGM3NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWstZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsOCBAQAorCitSVU4odmlkZW8uc3JjID0gZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVu
dC90ZXN0IikpCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK1JVTih2aWRlby5yZXF1ZXN0VmlkZW9G
cmFtZUNhbGxiYWNrKGNhbGxiYWNrKSkKK1JVTih2aWRlby5jdXJyZW50VGltZSA9IDAuNSkKK1By
b21pc2UgcmVzb2x2ZWQgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEv
cmVxdWVzdC12aWRlby1mcmFtZS1zZWVrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTkyNThmMDM2MzhjY2Y4
YTZjOGYzNDYwZDcxNDMzNGE0NzkwOTU4YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+cmVxdWVzdC12aWRlby1m
cmFtZS1zZWVrPC90aXRsZT4KKyAgICA8c2NyaXB0IHNyYz0idmlkZW8tdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9Im1lZGlhLWZpbGUuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBhc3luYyBldmVudCA9PiB7
CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9
IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpJyk7CisKKyAgICAgICAgYXdh
aXQgd2FpdEZvcih2aWRlbywgJ2NhbnBsYXl0aHJvdWdoJyk7CisKKyAgICAgICAgbGV0IHZpZGVv
RnJhbWVQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhj
YWxsYmFjaykpJyk7CisgICAgICAgICAgICB2aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNr
KHJlc29sdmUpOworICAgICAgICB9KTsKKworICAgICAgICBydW4oJ3ZpZGVvLmN1cnJlbnRUaW1l
ID0gMC41Jyk7CisKKyAgICAgICAgYXdhaXQgc2hvdWxkUmVzb2x2ZSh2aWRlb0ZyYW1lUHJvbWlz
ZSk7CisKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CisgICAgPHZpZGVvIG11dGVkPjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdr
Mi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDcxODJlOGNmYzk1N2Q4ODJhN2Y4NTU3NWI4ZGMyMjg5
ODY3MjI5NjguLmIyZGMyODVhMDdhZGJiZWFkOTFlYjg4MjkwZmVhYmQ5MjY0ZTBjZTggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE0NSw2
ICsxNDUsNyBAQCB3ZWJydGMvcGVlckNvbm5lY3Rpb24tcnZmYy5odG1sIFsgUGFzcyBdCiAjIFRp
bWluZyBvdXQgdGVzdHMgdW50aWwgd2UgYWRkIFhSIHNlc3Npb24uCiBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1i
ZWZvcmUteHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1kdXJp
bmcteHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjM1MDcyIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZpZGVvLWZy
YW1lLWNhbGxiYWNrLXJlcGVhdGluZy5odG1sIFsgU2tpcCBdCiAKICMvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBsYXRmb3JtLXNwZWNpZmljIGRpcmVjdG9yaWVzLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGJi
YjY1YTQwODg1NWFkOTNjNmM0MWRmNGRkZDQxYzhhMDJlZTRmNDkuLmU3NDk2YjgwZTU1YmJjMGJm
MmJiM2I0YjUyMWM5MjM2NjdkYzcwYjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM4LDYgKzM4LDggQEAgaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy92aWRlby1ydmZjIFsgUGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1iZWZvcmUt
eHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1kdXJpbmcteHIt
c2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBdCiAKK3dlYmtpdC5vcmcvYi8yMzUwNzIgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy92aWRlby1ydmZjL3JlcXVlc3QtdmlkZW8tZnJhbWUt
Y2FsbGJhY2stcmVwZWF0aW5nLmh0bWwgWyBTa2lwIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwogIyBFbmQgcGxhdGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMuCiAjLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYjVkODJjOTIxYTc4MGI0NmQ3ODcxZGEzMWI5
YTJjM2UwNjhlZTFjNi4uY2ViNzBhNTUwODAzYmI2NDA2OTg5NDQ2MmQzYjFkMTE0MTIyMGI0ZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MTI0LDYgKzEyNCw4IEBAIHdlYnJ0Yy9wZWVyQ29ubmVjdGlvbi1ydmZjLmh0bWwgWyBQYXNzIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZpZGVv
LWZyYW1lLWNhbGxiYWNrLWJlZm9yZS14ci1zZXNzaW9uLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZpZGVvLWZy
YW1lLWNhbGxiYWNrLWR1cmluZy14ci1zZXNzaW9uLmh0dHBzLmh0bWwgWyBTa2lwIF0KIAord2Vi
a2l0Lm9yZy9iLzIzNTA3MiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2
ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1yZXBlYXRpbmcuaHRtbCBbIFNraXAgXQor
CiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVj
aWZpYyBkaXJlY3Rvcmllcy4KICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
</data>
<flag name="commit-queue"
          id="475017"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449075</attachid>
            <date>2022-01-13 09:56:53 -0800</date>
            <delta_ts>2022-01-13 10:15:18 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235006-20220113095653.patch</filename>
            <type>text/plain</type>
            <size>51726</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWIxNTA4YzQ4NDhmYjBh
MDIzOTc5MDEyMmVhNzRlMjVjODAxZmIyNy4uYmJkY2RhNjU3OWM4ODJjYjY3YmVhMjgyM2ZhODlk
NGY2M2Y3ZmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIyLTAxLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gclZGQygpIGlz
bid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
bG9hZHN0YXJ0Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sCisKKyAgICAgICAgQWRkIGEgbmV3IHV0aWxpdHkgY2xhc3MsIFF1ZXVlZFZpZGVv
T3V0cHV0LCB3aGljaCB3aWxsIHB1bGwgcGl4ZWwgYnVmZmVycyBvdXQgb2YgYW4gQVZQbGF5ZXJJ
dGVtVmlkZW9PdXRwdXQKKyAgICAgICAgcHJlLWVtcHRpdmVseS4gT25jZSB0aG9zZSBwaXhlbCBi
dWZmZXJzIGFyZSBlbnF1ZXVlZCBsb2NhbGx5LCB0aGVpciBhc3NvY2lhdGVkIHRpbWluZyBpbmZv
cm1hdGlvbiBjYW4gYmUgdXNlZCB0bworICAgICAgICBmaXJlIGEgY2FsbGJhY2sgZm9yIHRoYXQg
YnVmZmVyJ3MgZGlzcGxheSB0aW1lLgorCisgICAgICAgIFByZXZpb3VzbHksIHBhaW50cyB3ZXJl
IGJsb2NrZWQgZnJvbSBwdWxsaW5nIG5ldyBwaXhlbCBidWZmZXJzIGZyb20gdGhlIHZpZGVvIG91
dHB1dC4gV2l0aCB0aGUgUXVldWVkVmlkZW9PdXRwdXQKKyAgICAgICAgY2xhc3MsIHRoaXMgaXMg
bm8gbG9uZ2VyIG5lY2Vzc2FyeS4gVGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHdpbGwgbm90aWZ5IGl0
cyBjbGllbnQgd2hlbiB0aGUgaW1hZ2UgZm9yIGN1cnJlbnRUaW1lCisgICAgICAgIGNoYW5nZXMs
IGFuZCBvdGhlciBjbGllbnRzIGNhbiBmcmVlbHkgYXNrIGZvciB0aGUgY3VycmVudFRpbWUncyBp
bWFnZS4KKworICAgICAgICBUbyBjdXJiIHJ1bmF3YXkgbWVtb3J5IGdyb3d0aCwgZnJhbWVzIGFy
ZSBwdXJnZWQgYXMgc29vbiBhcyBhIG5ldyBpbWFnZSBmb3IgdGhlIGN1cnJlbnQgdGltZSBpcyBh
dmFpbGFibGUsIGFuZCB3aGVuCisgICAgICAgIHRoZSB2aWRlbyBvdXRwdXQgc2lnbmFscyB0aGF0
IGl0cyBvd24gcXVldWVzIHdlcmUgcHVyZ2VkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjYW5jZWxWaWRlb0ZyYW1lQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2VydmljZVJlcXVl
c3RWaWRlb0ZyYW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omhhc0F2YWlsYWJsZVZpZGVvRnJh
bWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c3RhcnRWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tOZXdWaWRlb0Zy
YW1lTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZp
ZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1ZmZlckZvckN1
cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29sb3JTcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvdXRwdXRNZWRp
YURhdGFXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Omdsb2JhbFB1bGxEZWxlZ2F0ZVF1
ZXVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OndhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIGluaXRXaXRoUGxheWVyOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIG91dHB1dE1lZGlh
RGF0YVdpbGxDaGFuZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVs
ZWdhdGUgb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOl0pOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVl
ZFZpZGVvT3V0cHV0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXRE
ZWxlZ2F0ZSBpbml0V2l0aFBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRw
dXREZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOl0pOgorICAgICAgICAoLVtXZWJR
dWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDpdKToKKyAg
ICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBvYnNlcnZlVmFsdWVGb3JLZXlQ
YXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoV2ViQ29yZTo6Z2xvYmFs
T3V0cHV0RGVsZWdhdGVRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpRdWV1ZWRW
aWRlb091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6flF1ZXVl
ZFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmRlY2x0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OlF1ZXVlZFZpZGVvT3V0cHV0OjpoYXNJbWFnZUZvclRpbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnRha2VWaWRlb0ZyYW1lRW50cnlGb3JUaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjphZGRDdXJyZW50SW1hZ2VDaGFuZ2Vk
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmNvbmZpZ3Vy
ZU5leHRJbWFnZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0
OjppbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRW
aWRlb091dHB1dDo6YWRkVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UXVl
dWVkVmlkZW9PdXRwdXQ6OnB1cmdlVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnB1cmdlSW1hZ2VzQmVmb3JlVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cmF0ZUNoYW5nZWQpOgorCiAyMDIxLTEyLTE0ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtSZWZhY3Rvcl0gQWRv
cHQgTG9nZ2VySGVscGVyIGluIExvZ2dpbmcgRU1FIGNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmlu
ZGV4IGYzMTgxOTc3NGJjMTQwY2Y1MjU4Nzg2NDQ5MjdiYWZkNWFiMmU5MDIuLmVjODEwYTFlM2Zj
Mjc4NjI0NmVjMDI0NGVhNWUxMzI0ZmRlNTI0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDIyLTAxLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gclZGQygpIGlzbid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBs
b2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUw
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBwYWwv
c3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oOgorCiAyMDIyLTAxLTEwICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBhIC1z
aG91bGRXcmFwIHByb3BlcnR5IHdoZW4gaW5qZWN0aW5nIExpdmUgVGV4dApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaAppbmRleCA4Yjdm
ZjEyMzdhMGM4YzIyZjg4MmZhMGJmZWVlOGJkM2FkNGNiNzEyLi40ZjljYmU2ZDNkMjdlYzdkMWEz
ZGQ3ZTFkODI3NzBlMzcxODg0MTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaApAQCAtNDAsOSArNDAsMTAgQEAKICNpbXBvcnQg
PEFWRm91bmRhdGlvbi9BVk1lZGlhU2VsZWN0aW9uR3JvdXBfUHJpdmF0ZS5oPgogI2ltcG9ydCA8
QVZGb3VuZGF0aW9uL0FWT3V0cHV0Q29udGV4dF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZPdXRwdXREZXZpY2UuaD4KLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllcl9Q
cml2YXRlLmg+CisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtT3V0cHV0X1ByaXZh
dGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1fUHJpdmF0ZS5oPgogI2lt
cG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyTGF5ZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8QVZG
b3VuZGF0aW9uL0FWUGxheWVyX1ByaXZhdGUuaD4KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCkBAIC02Niw2ICs2Nyw3IEBAIE5T
X0FTU1VNRV9OT05OVUxMX0VORAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQ2FwdHVyZVNlc3Np
b24uaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllci5oPgogI2ltcG9ydCA8QVZGb3Vu
ZGF0aW9uL0FWUGxheWVySXRlbS5oPgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVySXRl
bU91dHB1dC5oPgogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fSU5URVJTVElUSUFMX0VWRU5UUykK
ICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckludGVyc3RpdGlhbEV2ZW50Q29udHJvbGxl
ci5oPgpAQCAtOTIsNiArOTQsMTEgQEAgdHlwZWRlZiBOU1N0cmluZyAqIEFWVmlkZW9SYW5nZSBO
U19UWVBFRF9FTlVNOwogQGVuZAogI2VuZGlmCiAKK0BpbnRlcmZhY2UgQVZQbGF5ZXJJdGVtVmlk
ZW9PdXRwdXQgKEFWUGxheWVySXRlbVZpZGVvT3V0cHV0RWFybGllc3RUaW1lKQorQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBDTVRpbWUgZWFybGllc3RBdmFpbGFibGVQaXhlbEJ1ZmZl
ckl0ZW1UaW1lOworLSAodm9pZClyZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VB
c1Nvb25Bc1Bvc3NpYmxlOworQGVuZAorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBkMjhiMzgzMWQ0ZjY5MTkyY2E1NjIwMmM4MDA0ZTE3ODNkYzNjNWMwLi5mMDNjNmM1NTMy
NmUwODFmMTA4MzA3YzRmYmJlNzhiZDVkNmE5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NDQ5LDYgKzQ0NDksOCBAQAog
CQlDRDFGOUI0RDI3MEQwM0E5MDA2MTdFQjYgLyogU2Nyb2xsRXh0ZW50cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlCNEMyNzBEMDNBOTAwNjE3
RUI2IC8qIFNjcm9sbEV4dGVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDRDFGOUI3RDI3MEU2Njc4MDA2MTdFQjYgLyogSFRNTEFuY2hvckVs
ZW1lbnRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDFGOUI3QzI3MEU2Njc4MDA2MTdFQjYgLyogSFRNTEFuY2hvckVsZW1lbnRJbmxpbmVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Qx
RjlCODAyNzBFNjcxQTAwNjE3RUI2IC8qIFNWR0VsZW1lbnRJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDFGOUI3RjI3MEU2NzFBMDA2MTdF
QjYgLyogU1ZHRWxlbWVudElubGluZXMuaCAqLzsgfTsKKwkJQ0QyMEVEM0MyNzg3OEZGQjAwMzhC
RTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDIwRUQzQTI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9P
dXRwdXQuaCAqLzsgfTsKKwkJQ0QyMEVEM0QyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVv
T3V0cHV0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0QyMEVEM0IyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0Lm1tICovOyB9Owog
CQlDRDIyNUMwQjFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjI1QzA5MUM0NkZC
RjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tICovOyB9OwogCQlDRDIyNUMwQzFD
NDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyMjVDMEExQzQ2RkJGNDAwMTQwNzYxIC8q
IFdlYkNvcmVOU1VSTFNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDRDI3QUU1MDIyQTk4Njg3MDA5NDdGRjkgLyogSW1hZ2VSb3RhdGlv
blNlc3Npb25WVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0QyN0FFNEUyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTU4NjYs
NiArMTU4NjgsOCBAQAogCQlDRDFGOUI3MDI3MERGQTdGMDA2MTdFQjYgLyogTWVkaWFLZXlNZXNz
YWdlRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDFGOUI3QzI3MEU2Njc4MDA2MTdFQjYgLyogSFRN
TEFuY2hvckVsZW1lbnRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxBbmNob3JFbGVtZW50
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDFGOUI3RjI3MEU2NzFB
MDA2MTdFQjYgLyogU1ZHRWxlbWVudElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRWxlbWVu
dElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyMEVEM0EyNzg3OEZG
QjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1ZXVlZFZp
ZGVvT3V0cHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjBFRDNCMjc4NzhG
RkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFF1ZXVlZFZpZGVvT3V0cHV0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDIy
NUMwOTFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVOU1VSTFNlc3Npb24ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMjI1QzBBMUM0NkZCRjQwMDE0MDc2MSAvKiBX
ZWJDb3JlTlNVUkxTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkNvcmVOU1VSTFNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyN0FF
NEUyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzA2MTcsNiArMzA2MjEsOCBAQAogCQkJCUNEQzhCNUE1MTgwNDc0RjcwMDE2RTY4NSAv
KiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJQ0RDOEI1QTQxODA0NzRGNzAw
MTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJCQkJN0EyOUY1NzEx
OEM2OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCAqLywKKwkJ
CQlDRDIwRUQzQTI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQuaCAqLywKKwkJ
CQlDRDIwRUQzQjI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQubW0gKi8sCiAJ
CQkJQ0RGOTk0RkEyNEMxMkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
aCAqLywKIAkJCQlDREY5OTRGQjI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbSAqLywKIAkJCQlDREM4QjVBOTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMuaCAqLywKQEAgLTM2NTg1LDYgKzM2NTkxLDcgQEAKIAkJCQlFQjBG
QjcwRDI3MEQwQjJFMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnNJbml0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUY1OTQxRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxp
ZmllZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QyMEVEM0MyNzg3OEZGQjAwMzhC
RTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTVFMzFGNDFF
MENCMEI1MDA0QjM3MUMgLyogUXVpY2tMb29rLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkFFRTky
QzIyMzg4QTdEMDA0MTU3QTkgLyogUXVpcmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlFMzcx
NzEzNzM2QTY2MDBCOUU5MTkgLyogUXVvdGVkUHJpbnRhYmxlLmggaW4gSGVhZGVycyAqLywKQEAg
LTM4NTY5LDYgKzM4NTc2LDcgQEAKIAkJCQlBQTEyREY0OTE3NDNERjgzMDA0REFGREYgLyogUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBMjlB
MzAxQ0JGNzRENDAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RBMjlBMTYxQ0JEQTU2QzAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNEMjBFRDNEMjc4NzhGRkIw
MDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxOTI0
MjQ5MjEyN0I5M0UwMDYzNEZDRiAvKiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTA3MUMwMDRCMjcwQjg2NDkwMEQwMjdDNyAvKiBSZXBsYXlL
aXRDYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMyQjFBRUMyMjM5N0VCQzAw
QjkxQ0Y3IC8qIFJlc291cmNlUmVzcG9uc2VDb2NvYS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggOTQ4ZDFkNDE3NDhlOWZhZDI5
MjJjYWY3MGNlYjY2OGI0ODhlOTk0MS4uYWY5MjQzZDBhMGViODcwYWZiY2M4MDIxYzQ1ZWE5NmYx
MTE5OWJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC02
MDMsMTMgKzYwMywxNiBAQCB1bnNpZ25lZCBIVE1MVmlkZW9FbGVtZW50OjpyZXF1ZXN0VmlkZW9G
cmFtZUNhbGxiYWNrKFJlZjxWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYQogCiB2b2lkIEhUTUxWaWRl
b0VsZW1lbnQ6OmNhbmNlbFZpZGVvRnJhbWVDYWxsYmFjayh1bnNpZ25lZCBpZGVudGlmaWVyKQog
ewotICAgIGF1dG8gaW5kZXggPSBtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5maW5kTWF0Y2hpbmcoW2lk
ZW50aWZpZXJdKGF1dG8mIHJlcXVlc3QpIHsgcmV0dXJuIHJlcXVlc3QtPmlkZW50aWZpZXIgPT0g
aWRlbnRpZmllcjsgfSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1
cm47Ci0gICAgaWYgKG1faXNSdW5uaW5nVmlkZW9GcmFtZVJlcXVlc3RzKSB7Ci0gICAgICAgIG1f
dmlkZW9GcmFtZVJlcXVlc3RzW2luZGV4XS0+Y2FuY2VsbGVkID0gdHJ1ZTsKKyAgICAvLyBTZWFy
Y2ggZmlyc3QgdGhlIHJlcXVlc3RzIGN1cnJlbnRseSBiZWluZyBzZXJ2aWNlZCwgYW5kIG1hcmsg
dGhlbSBhcyBjYW5jZWxsZWQgaWYgZm91bmQuCisgICAgYXV0byBpbmRleCA9IG1fc2VydmljZWRW
aWRlb0ZyYW1lUmVxdWVzdHMuZmluZE1hdGNoaW5nKFtpZGVudGlmaWVyXShhdXRvJiByZXF1ZXN0
KSB7IHJldHVybiByZXF1ZXN0LT5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0pOworICAgIGlm
IChpbmRleCAhPSBub3RGb3VuZCkgeworICAgICAgICBtX3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVl
c3RzW2luZGV4XS0+Y2FuY2VsbGVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwor
ICAgIGluZGV4ID0gbV92aWRlb0ZyYW1lUmVxdWVzdHMuZmluZE1hdGNoaW5nKFtpZGVudGlmaWVy
XShhdXRvJiByZXF1ZXN0KSB7IHJldHVybiByZXF1ZXN0LT5pZGVudGlmaWVyID09IGlkZW50aWZp
ZXI7IH0pOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOwogICAg
IG1fdmlkZW9GcmFtZVJlcXVlc3RzLnJlbW92ZShpbmRleCk7CiAKICAgICBpZiAobV92aWRlb0Zy
YW1lUmVxdWVzdHMuaXNFbXB0eSgpICYmIHBsYXllcigpKQpAQCAtNjMxLDYgKzYzNCwxMiBAQCB2
b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNlcnZpY2VSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrcyhS
ZWR1Y2VkUmVzb2x1dGlvblNlY29uZAogICAgIGlmICghcGxheWVyKCkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIC8vIElmIHRoZSByZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrIGlzIGNhbGxlZCBi
ZWZvcmUgdGhlIHJlYWR5U3RhdGUgPj0gSGF2ZUN1cnJlbnREYXRhLAorICAgIC8vIGNhbGxzIHRv
IGNyZWF0ZUltYWdlQml0bWFwKCkgd2l0aCB0aGlzIGVsZW1lbnQgd2lsbCByZXN1bHQgaW4gYSBm
YWlsZWQgcHJvbWlzZS4gRGVsYXkKKyAgICAvLyBub3RpZnlpbmcgdGhlIGNhbGxiYWNrIHVudGls
IHdlIHJlYWNoIHRoZSBIYXZlQ3VycmVudERhdGEgc3RhdGUuCisgICAgaWYgKG1fcmVhZHlTdGF0
ZSA8IEhBVkVfQ1VSUkVOVF9EQVRBKQorICAgICAgICByZXR1cm47CisKICAgICBhdXRvIHZpZGVv
RnJhbWVNZXRhZGF0YSA9IHBsYXllcigpLT52aWRlb0ZyYW1lTWV0YWRhdGEoKTsKICAgICBpZiAo
IXZpZGVvRnJhbWVNZXRhZGF0YSB8fCAhZG9jdW1lbnQoKS5kb21XaW5kb3coKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNjM5LDIwICs2NDgsMTQgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXJ2
aWNlUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja3MoUmVkdWNlZFJlc29sdXRpb25TZWNvbmQKIAog
ICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKIAotICAgIC8vIFdlIHN0b3JlIHRoZSBz
aXplIGJlZm9yZSBjYWxsaW5nIGNhbGxiYWNrcyBhcyB3ZSBkbyBub3Qgd2FudCB0byBjYWxsIG5l
d2x5IGFkZGVkIGNhbGxiYWNrcy4KLSAgICBhdXRvIGNhbGxiYWNrQ291bnQgPSBtX3ZpZGVvRnJh
bWVSZXF1ZXN0cy5zaXplKCk7Ci0KLSAgICBtX2lzUnVubmluZ1ZpZGVvRnJhbWVSZXF1ZXN0cyA9
IHRydWU7Ci0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNhbGxiYWNrQ291bnQ7
ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byYgcmVxdWVzdCA9IG1fdmlkZW9GcmFtZVJlcXVlc3Rz
W2luZGV4XTsKKyAgICBtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5zd2FwKG1fc2VydmljZWRWaWRlb0Zy
YW1lUmVxdWVzdHMpOworICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IG1fc2VydmljZWRWaWRlb0Zy
YW1lUmVxdWVzdHMpIHsKICAgICAgICAgaWYgKCFyZXF1ZXN0LT5jYW5jZWxsZWQpIHsKICAgICAg
ICAgICAgIHJlcXVlc3QtPmNhbGxiYWNrLT5oYW5kbGVFdmVudChzdGQ6OnJvdW5kKG5vdy5taWxs
aXNlY29uZHMoKSksICp2aWRlb0ZyYW1lTWV0YWRhdGEpOwogICAgICAgICAgICAgcmVxdWVzdC0+
Y2FuY2VsbGVkID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KLSAgICBtX2lzUnVubmluZ1ZpZGVv
RnJhbWVSZXF1ZXN0cyA9IGZhbHNlOwotCi0gICAgbV92aWRlb0ZyYW1lUmVxdWVzdHMucmVtb3Zl
QWxsTWF0Y2hpbmcoW10oYXV0byYgY2FsbGJhY2spIHsgcmV0dXJuIGNhbGxiYWNrLT5jYW5jZWxs
ZWQ7IH0pOworICAgIG1fc2VydmljZWRWaWRlb0ZyYW1lUmVxdWVzdHMuY2xlYXIoKTsKIAogICAg
IGlmIChtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5pc0VtcHR5KCkgJiYgcGxheWVyKCkpCiAgICAgICAg
IHBsYXllcigpLT5zdG9wVmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IDg1NmFkZWE3OGZiNzM5OGQ4ZmI0NWY0NDhh
MzU5MWJkYTU1Zjk3MmMuLmY4ZDNiNDAzMmQ2MDI0NGI1NDAxNzgzM2VhZmEwMDY5MDRkMWI0MTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCkBAIC0xNzIsOCArMTcyLDgg
QEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjYW5jZWxsZWQgeyBmYWxzZSB9OwogICAgIH07CiAg
ICAgVmVjdG9yPFVuaXF1ZVJlZjxWaWRlb0ZyYW1lUmVxdWVzdD4+IG1fdmlkZW9GcmFtZVJlcXVl
c3RzOworICAgIFZlY3RvcjxVbmlxdWVSZWY8VmlkZW9GcmFtZVJlcXVlc3Q+PiBtX3NlcnZpY2Vk
VmlkZW9GcmFtZVJlcXVlc3RzOwogICAgIHVuc2lnbmVkIG1fbmV4dFZpZGVvRnJhbWVSZXF1ZXN0
SW5kZXggeyAwIH07Ci0gICAgYm9vbCBtX2lzUnVubmluZ1ZpZGVvRnJhbWVSZXF1ZXN0cyB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgK
aW5kZXggMWU2NTc1NzI0NjU0OTczNDNjZGUyYTI0ZDhmMGRjNmI0ZTAyNjdlMS4uYzQwOTg1Mzgz
YjNiNTJiOGEyZmM5YTdhNDU4NDk5ZWQ2MDhiMDZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPENvcmVNZWRpYS9DTVRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9PYnNlcnZlci5oPgogCiBPQkpDX0NMQVNTIEFWQXNzZXRJbWFnZUdlbmVyYXRvcjsKIE9CSkNf
Q0xBU1MgQVZBc3NldFRyYWNrOwpAQCAtNjcsNiArNjgsNyBAQCBjbGFzcyBJbmJhbmRNZXRhZGF0
YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3Mg
TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNW
OworY2xhc3MgUXVldWVkVmlkZW9PdXRwdXQ7CiBjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgVmlkZW9MYXllck1hbmFnZXJPYmpDOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVB
VkZPYmpDOwpAQCAtMzQ3LDcgKzM0OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFZpZGVv
RnJhbWVNZXRhZGF0YUdhdGhlcmluZygpIGZpbmFsOwogICAgIHZvaWQgc3RvcFZpZGVvRnJhbWVN
ZXRhZGF0YUdhdGhlcmluZygpIGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZU1l
dGFkYXRhPiB2aWRlb0ZyYW1lTWV0YWRhdGEoKSBmaW5hbCB7IHJldHVybiBzdGQ6OmV4Y2hhbmdl
KG1fdmlkZW9GcmFtZU1ldGFkYXRhLCB7IH0pOyB9Ci0gICAgdm9pZCBjaGVja05ld1ZpZGVvRnJh
bWVNZXRhZGF0YShDTVRpbWUpOworICAgIHZvaWQgY2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEo
KTsKIAogICAgIFJldGFpblB0cjxBVlVSTEFzc2V0PiBtX2F2QXNzZXQ7CiAgICAgUmV0YWluUHRy
PEFWUGxheWVyPiBtX2F2UGxheWVyOwpAQCAtMzY3LDcgKzM2OSw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIFJldGFpblB0cjxBVkFzc2V0SW1hZ2VHZW5lcmF0b3I+IG1faW1hZ2VHZW5lcmF0
b3I7Ci0gICAgUmV0YWluUHRyPEFWUGxheWVySXRlbVZpZGVvT3V0cHV0PiBtX3ZpZGVvT3V0cHV0
OworICAgIFJlZlB0cjxRdWV1ZWRWaWRlb091dHB1dD4gbV92aWRlb091dHB1dDsKICAgICBSZXRh
aW5QdHI8V2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZT4gbV92aWRlb091dHB1dERlbGVnYXRlOwogICAg
IFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBtX2xhc3RQaXhlbEJ1ZmZlcjsKICAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwpAQCAtNDY0LDYgKzQ2Niw4IEBAIHByaXZhdGU6
CiAgICAgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lTWV0YWRhdGE+IG1fdmlkZW9GcmFtZU1ldGFk
YXRhOwogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxOU1RpbWVJbnRlcnZhbD4gbV9jYWNoZWRT
ZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lOwogICAgIG11dGFibGUgc3RkOjpvcHRp
b25hbDxOU1RpbWVJbnRlcnZhbD4gbV9jYWNoZWRMaXZlVXBkYXRlSW50ZXJ2YWw7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPE9ic2VydmVyPHZvaWQoKT4+IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2Vy
dmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxPYnNlcnZlcjx2b2lkKCk+PiBtX3dhaXRGb3JWaWRl
b091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2VPYnNlcnZlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCmluZGV4IGMwNjdjY2U4MDY4NmY3YTFiYzU0MTRiYWY3N2Y3NTI1MmJmMzQyYzcu
LmZmMDc4MTFkYjRlMjkxNmQ5NDA2YWI1YTE2MDQ4NjU3MTNhMzY4ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQpAQCAtNTgsNiArNTgsNyBAQAogI2ltcG9ydCAiUGxhdGZvcm1TY3JlZW4uaCIK
ICNpbXBvcnQgIlBsYXRmb3JtVGV4dFRyYWNrLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVRpbWVSYW5n
ZXMuaCIKKyNpbXBvcnQgIlF1ZXVlZFZpZGVvT3V0cHV0LmgiCiAjaW1wb3J0ICJSdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2lt
cG9ydCAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTIwNSwxNiArMjA2LDYgQEAgLSAoaWQpaW5pdFdp
dGhQbGF5ZXI6KFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4mJilw
bGF5ZXI7CiAtIChCT09MKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKily
ZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2U6KEFW
QXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopbG9hZGluZ1JlcXVlc3Q7CiBAZW5kCiAKLUBp
bnRlcmZhY2UgV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSA6IE5TT2JqZWN0PEFWUGxheWVySXRlbU91
dHB1dFB1bGxEZWxlZ2F0ZT4gewotICAgIEJpbmFyeVNlbWFwaG9yZSBtX3NlbWFwaG9yZTsKLX0K
LS0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM+JiYpcGxheWVyOwotLSAodm9pZClvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOihB
VlBsYXllckl0ZW1PdXRwdXQgKilzZW5kZXI7Ci0tICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1
c2hlZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0OwotCi1AcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHkpIEJpbmFyeVNlbWFwaG9yZSYgc2VtYXBob3JlOwotQGVuZAotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBzdGF0aWMgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKEFW
UGxheWVyVGltZUNvbnRyb2xTdGF0dXMgZW51bWVyYXRpb25WYWx1ZSkKIHsKQEAgLTI2MSwxNiAr
MjUyLDYgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1
ZSgpCiAgICAgcmV0dXJuIGdsb2JhbFF1ZXVlOwogfQogCi1zdGF0aWMgZGlzcGF0Y2hfcXVldWVf
dCBnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX3F1ZXVl
X3QgZ2xvYmFsUXVldWU7Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0g
ICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBnbG9iYWxRdWV1ZSA9IGRp
c3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSBxdWV1ZSIsIERJU1BB
VENIX1FVRVVFX1NFUklBTCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGdsb2JhbFF1ZXVlOwotfQot
CiBzdGF0aWMgdm9pZCByZWdpc3RlckZvcm1hdFJlYWRlcklmTmVjZXNzYXJ5KCkKIHsKICNpZiBF
TkFCTEUoV0VCTV9GT1JNQVRfUkVBREVSKQpAQCAtNDY5LDcgKzQ1MCw4IEBAIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDKCkKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Jlc291cmNlTG9hZGVyTWFwKQogICAgICAg
ICBwYWlyLnZhbHVlLT5pbnZhbGlkYXRlKCk7CiAKLSAgICBbbV92aWRlb091dHB1dCBzZXREZWxl
Z2F0ZTpuaWwgcXVldWU6MF07CisgICAgaWYgKG1fdmlkZW9PdXRwdXQpCisgICAgICAgIG1fdmlk
ZW9PdXRwdXQtPmludmFsaWRhdGUoKTsKIAogICAgIGlmIChtX3ZpZGVvTGF5ZXIpCiAgICAgICAg
IGRlc3Ryb3lWaWRlb0xheWVyKCk7CkBAIC03MDIsNyArNjg0LDcgQEAgYm9vbCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QK
ICAgICBpZiAoY3VycmVudFJlbmRlcmluZ01vZGUoKSA9PSBNZWRpYVJlbmRlcmluZ01vZGU6Ok1l
ZGlhUmVuZGVyaW5nVG9MYXllcikKICAgICAgICAgcmV0dXJuIG1fY2FjaGVkSXNSZWFkeUZvckRp
c3BsYXk7CiAKLSAgICBpZiAobV92aWRlb091dHB1dCAmJiAobV9sYXN0UGl4ZWxCdWZmZXIgfHwg
W21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpbbV9hdlBsYXllckl0
ZW0gY3VycmVudFRpbWVdXSkpCisgICAgaWYgKG1fdmlkZW9PdXRwdXQgJiYgKG1fbGFzdFBpeGVs
QnVmZmVyIHx8IG1fdmlkZW9PdXRwdXQtPmhhc0ltYWdlRm9yVGltZShjdXJyZW50TWVkaWFUaW1l
KCkpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gbV92aWRlb0ZyYW1lSGFz
RHJhd247CkBAIC0xNDQ0LDM0ICsxNDI2LDMwIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1QYXVzZWQoKSBjb25zdAogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN0YXJ0VmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5n
KCkKIHsKLSAgICBBU1NFUlQoIW1fdmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nT2JzZXJ2ZXIg
fHwgbV9hdlBsYXllcik7Ci0gICAgbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSA9IHRy
dWU7CisgICAgLy8gcmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjaygpIGNhcmVzIGFib3V0IHRoZSAv
bmV4dC8gYXZhaWxhYmxlIGZyYW1lLiBQdWxsIHRoZSBjdXJyZW50IGZyYW1lIGZyb20KKyAgICAv
LyB0aGUgUXVldWVkVmlkZW9PdXRwdXQgc28gcGFpbnRzIG9mIHRoZSBjdXJyZW50IGZyYW1lIHN1
Y2NlZWQ7CisgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAKLSAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHVzZSBhIENBRGlzcGxheUxpbmsgdG8gZ2V0IHVwZGF0ZXMgb24gcmVuZGVyaW5nLCBm
b3Igbm93IHdlIGVtdWxhdGUgd2l0aCBhZGRQZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVydmFs
LgotICAgIG1fdmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nT2JzZXJ2ZXIgPSBbbV9hdlBsYXll
ciBhZGRQZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVydmFsOlBBTDo6Q01UaW1lTWFrZSgxLCA2
MCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9XShDTVRpbWUgY3VycmVudFRpbWUpIHsKLSAgICAgICAgZW5zdXJl
T25NYWluVGhyZWFkKFt3ZWFrVGhpcywgY3VycmVudFRpbWVdIHsKLSAgICAgICAgICAgIGlmICh3
ZWFrVGhpcykKLSAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y2hlY2tOZXdWaWRlb0ZyYW1lTWV0
YWRhdGEoY3VycmVudFRpbWUpOwotICAgICAgICB9KTsKLSAgICB9XTsKKyAgICBtX2N1cnJlbnRJ
bWFnZUNoYW5nZWRPYnNlcnZlciA9IFdURjo6bWFrZVVuaXF1ZTxPYnNlcnZlcjx2b2lkKCk+Pihb
dGhpc10geworICAgICAgICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciA9IG51bGxwdHI7
CisgICAgICAgIGNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCk7CisgICAgfSk7CisKKyAgICBp
ZiAobV92aWRlb091dHB1dCkKKyAgICAgICAgbV92aWRlb091dHB1dC0+YWRkQ3VycmVudEltYWdl
Q2hhbmdlZE9ic2VydmVyKCptX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcik7CisKKyAgICBt
X2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhID0gdHJ1ZTsKIH0KIAotdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YShD
TVRpbWUgY3VycmVudFRpbWUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OmNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCkKIHsKLSAgICBpZiAoIXVwZGF0ZUxhc3RQ
aXhlbEJ1ZmZlcigpKQorICAgIGlmICghbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgVmlkZW9GcmFtZU1ldGFkYXRhIG1ldGFkYXRhOwotICAg
IG1ldGFkYXRhLndpZHRoID0gbV9jYWNoZWRQcmVzZW50YXRpb25TaXplLndpZHRoKCk7Ci0gICAg
bWV0YWRhdGEuaGVpZ2h0ID0gbV9jYWNoZWRQcmVzZW50YXRpb25TaXplLmhlaWdodCgpOwotICAg
IG1ldGFkYXRhLnByZXNlbnRlZEZyYW1lcyA9ICsrbV9zYW1wbGVDb3VudDsKLSAgICBtZXRhZGF0
YS5tZWRpYVRpbWUgPSBQQUw6OkNNVGltZUdldFNlY29uZHMoY3VycmVudFRpbWUpOwotICAgIC8v
IEZJWE1FOiBwcmVzZW50YXRpb25UaW1lIGFuZCBleHBlY3RlZERpc3BsYXlUaW1lIG1pZ2h0IG5v
dCBhbHdheXMgaGF2ZSB0aGUgc2FtZSB2YWx1ZSwgd2Ugc2hvdWxkIHRyeSBnZXR0aW5nIG1vcmUg
cHJlY2lzZSB2YWx1ZXMuCi0gICAgbWV0YWRhdGEucHJlc2VudGF0aW9uVGltZSA9IE1vbm90b25p
Y1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpOwotICAgIG1ldGFkYXRh
LmV4cGVjdGVkRGlzcGxheVRpbWUgPSBtZXRhZGF0YS5wcmVzZW50YXRpb25UaW1lOworICAgIGlm
ICghdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkgJiYgIW1fdmlkZW9GcmFtZU1ldGFkYXRhKQorICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvRnJhbWVNZXRhZGF0YSA9IG1ldGFkYXRhOwotICAg
IHBsYXllcigpLT5vbk5ld1ZpZGVvRnJhbWVNZXRhZGF0YShXVEZNb3ZlKG1ldGFkYXRhKSwgbV9s
YXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIHBsYXllcigpLT5vbk5ld1ZpZGVvRnJhbWVNZXRh
ZGF0YShXVEZNb3ZlKCptX3ZpZGVvRnJhbWVNZXRhZGF0YSksIG1fbGFzdFBpeGVsQnVmZmVyLmdl
dCgpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdG9w
VmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nKCkKQEAgLTI1MTgsMTcgKzI0OTYsMTcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb091dHB1dCgp
CiAgICAgaWYgKCFtX2F2UGxheWVySXRlbSB8fCBtX3ZpZGVvT3V0cHV0KQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3ZpZGVvT3V0cHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVySXRl
bVZpZGVvT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0aFBpeGVsQnVmZmVyQXR0cmlidXRlczpuaWxd
KTsKKyAgICBtX3ZpZGVvT3V0cHV0ID0gUXVldWVkVmlkZW9PdXRwdXQ6OmNyZWF0ZShtX2F2UGxh
eWVySXRlbS5nZXQoKSwgbV9hdlBsYXllci5nZXQoKSk7CiAgICAgQVNTRVJUKG1fdmlkZW9PdXRw
dXQpOwogICAgIGlmICghbV92aWRlb091dHB1dCkgewogICAgICAgICBFUlJPUl9MT0coTE9HSURF
TlRJRklFUiwgIi1bQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQgaW5pdFdpdGhQaXhlbEJ1ZmZlckF0
dHJpYnV0ZXM6XSBmYWlsZWQhIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKG1f
Y3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKQorICAgICAgICBtX3ZpZGVvT3V0cHV0LT5hZGRD
dXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoKm1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVy
KTsKIAotICAgIG1fdmlkZW9PdXRwdXREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJDb3JlQVZGUHVs
bERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBsYXllcjoqdGhpc10pOwotICAgIFttX3ZpZGVvT3V0
cHV0IHNldERlbGVnYXRlOm1fdmlkZW9PdXRwdXREZWxlZ2F0ZS5nZXQoKSBxdWV1ZTpnbG9iYWxQ
dWxsRGVsZWdhdGVRdWV1ZSgpXTsKLQotICAgIFttX2F2UGxheWVySXRlbSBhZGRPdXRwdXQ6bV92
aWRlb091dHB1dC5nZXQoKV07CisgICAgaWYgKG1fd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRh
V2lsbENoYW5nZU9ic2VydmVyKQorICAgICAgICBtX3ZpZGVvT3V0cHV0LT5hZGRDdXJyZW50SW1h
Z2VDaGFuZ2VkT2JzZXJ2ZXIoKm1fd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5n
ZU9ic2VydmVyKTsKIAogICAgIHNldE5lZWRzUmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIH0KQEAg
LTI1MzgsMTkgKzI1MTYsMTkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpkZXN0cm95VmlkZW9PdXRwdXQoKQogICAgIGlmICghbV92aWRlb091dHB1dCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKG1fYXZQbGF5ZXJJdGVtKQotICAgICAgICBbbV9hdlBsYXll
ckl0ZW0gcmVtb3ZlT3V0cHV0Om1fdmlkZW9PdXRwdXQuZ2V0KCldOwotCiAgICAgSU5GT19MT0co
TE9HSURFTlRJRklFUik7CiAKLSAgICBtX3ZpZGVvT3V0cHV0ID0gMDsKKyAgICBtX3ZpZGVvT3V0
cHV0LT5pbnZhbGlkYXRlKCk7CisgICAgbV92aWRlb091dHB1dCA9IG51bGxwdHI7CisKKyAgICBt
X3ZpZGVvRnJhbWVNZXRhZGF0YSA9IHsgfTsKIAogICAgIHNldE5lZWRzUmVuZGVyaW5nTW9kZUNo
YW5nZWQoKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1
cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKQogewotICAgIGlmICghbV9hdlBsYXllckl0ZW0gfHwgcmVh
ZHlTdGF0ZSgpIDwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSkKKyAg
ICBpZiAoIW1fYXZQbGF5ZXJJdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2hh
dmVCZWVuQXNrZWRUb1BhaW50ID0gdHJ1ZTsKQEAgLTI1NTksMTIgKzI1MzcsMjUgQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIo
KQogICAgICAgICBjcmVhdGVWaWRlb091dHB1dCgpOwogICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0
KTsKIAotICAgIENNVGltZSBjdXJyZW50VGltZSA9IFttX2F2UGxheWVySXRlbSBjdXJyZW50VGlt
ZV07CisgICAgYXV0byBjdXJyZW50VGltZSA9IGN1cnJlbnRNZWRpYVRpbWUoKTsKIAotICAgIGlm
ICghW21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpjdXJyZW50VGlt
ZV0pCisgICAgaWYgKCFtX3ZpZGVvT3V0cHV0LT5oYXNJbWFnZUZvclRpbWUoY3VycmVudFRpbWUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2xhc3RQaXhlbEJ1ZmZlciA9IGFkb3B0
Q0YoW21fdmlkZW9PdXRwdXQgY29weVBpeGVsQnVmZmVyRm9ySXRlbVRpbWU6Y3VycmVudFRpbWUg
aXRlbVRpbWVGb3JEaXNwbGF5Om5pbF0pOworICAgIGF1dG8gZW50cnkgPSBtX3ZpZGVvT3V0cHV0
LT50YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShjdXJyZW50VGltZSk7CisgICAgbV9sYXN0UGl4
ZWxCdWZmZXIgPSBXVEZNb3ZlKGVudHJ5LnBpeGVsQnVmZmVyKTsKKworICAgIGlmIChtX2lzR2F0
aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhKSB7CisgICAgICAgIGF1dG8gcHJlc2VudGF0aW9uVGlt
ZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpIC0g
KGN1cnJlbnRUaW1lIC0gZW50cnkuZGlzcGxheVRpbWUpLnRvRG91YmxlKCk7CisgICAgICAgIG1f
dmlkZW9GcmFtZU1ldGFkYXRhID0geworICAgICAgICAgICAgLndpZHRoID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KENWUGl4ZWxCdWZmZXJHZXRXaWR0aChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkp
LAorICAgICAgICAgICAgLmhlaWdodCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDVlBpeGVsQnVm
ZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKSksCisgICAgICAgICAgICAucHJl
c2VudGVkRnJhbWVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCsrbV9zYW1wbGVDb3VudCksCisg
ICAgICAgICAgICAubWVkaWFUaW1lID0gZW50cnkuZGlzcGxheVRpbWUudG9Eb3VibGUoKSwKKyAg
ICAgICAgICAgIC5wcmVzZW50YXRpb25UaW1lID0gcHJlc2VudGF0aW9uVGltZSwKKyAgICAgICAg
ICAgIC5leHBlY3RlZERpc3BsYXlUaW1lID0gcHJlc2VudGF0aW9uVGltZSwKKyAgICAgICAgfTsK
KyAgICB9CiAKICAgICBpZiAobV9pbWFnZVJvdGF0aW9uU2Vzc2lvbikKICAgICAgICAgbV9sYXN0
UGl4ZWxCdWZmZXIgPSBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5yb3RhdGUobV9sYXN0UGl4ZWxC
dWZmZXIuZ2V0KCkpOwpAQCAtMjU4NCw3ICsyNTc1LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCkKICAgICBp
ZiAoIW1fdmlkZW9PdXRwdXQpCiAgICAgICAgIGNyZWF0ZVZpZGVvT3V0cHV0KCk7CiAKLSAgICBy
ZXR1cm4gW21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpbbV9hdlBs
YXllckl0ZW0gY3VycmVudFRpbWVdXTsKKyAgICByZXR1cm4gbV92aWRlb091dHB1dC0+aGFzSW1h
Z2VGb3JUaW1lKFBBTDo6dG9NZWRpYVRpbWUoW21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXSkp
OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxh
c3RJbWFnZShVcGRhdGVUeXBlIHR5cGUpCkBAIC0yNjAyLDcgKzI1OTMsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBl
IHR5cGUpCiAgICAgLy8gQ2FsbHMgdG8gY29weVBpeGVsQnVmZmVyRm9ySXRlbVRpbWU6aXRlbVRp
bWVGb3JEaXNwbGF5OiBtYXkgcmV0dXJuIG5pbCBpZiB0aGUgcGl4ZWwgYnVmZmVyCiAgICAgLy8g
Zm9yIHRoZSByZXF1ZXN0ZWQgdGltZSBoYXMgYWxyZWFkeSBiZWVuIHJldHJpZXZlZC4gSW4gdGhp
cyBjYXNlLCB0aGUgbGFzdCB2YWxpZCBpbWFnZSAoaWYgYW55KQogICAgIC8vIHNob3VsZCBiZSBk
aXNwbGF5ZWQuCi0gICAgaWYgKChtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhIHx8ICF1
cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSkgJiYgKG1fbGFzdEltYWdlIHx8ICFtX2xhc3RQaXhlbEJ1
ZmZlcikpCisgICAgaWYgKCF1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSAmJiAobV9sYXN0SW1hZ2Ug
fHwgIW1fbGFzdFBpeGVsQnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3Bp
eGVsQnVmZmVyQ29uZm9ybWVyKSB7CkBAIC0yNjM3LDggKzI2MjgsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNz
Q29udGV4dCYgYwogCiBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSgpCiB7Ci0gICAg
aWYgKCFtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhKQotICAgICAgICB1cGRhdGVMYXN0
UGl4ZWxCdWZmZXIoKTsKKyAgICB1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKTsKIAogICAgIHJldHVy
biBtX2xhc3RQaXhlbEJ1ZmZlcjsKIH0KQEAgLTI2NjksNyArMjY1OSwxMSBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0
YVdpbGxDaGFuZ2UoKQogICAgIHN0ZDo6b3B0aW9uYWw8UnVuTG9vcDo6VGltZXI8TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4+IHRpbWVvdXRUaW1lcjsKIAogICAgIGlmICghbV9y
dW5Mb29wTmVzdGluZ0xldmVsKSB7Ci0gICAgICAgIFttX3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3Rp
ZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZVdpdGhBZHZhbmNlSW50ZXJ2YWw6MF07CisgICAgICAg
IG1fd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZU9ic2VydmVyID0gV1RGOjpt
YWtlVW5pcXVlPE9ic2VydmVyPHZvaWQoKT4+KFt0aGlzLCBsb2dJZGVudGlmaWVyID0gTE9HSURF
TlRJRklFUl0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAobV9ydW5Mb29wTmVzdGluZ0xl
dmVsKQorICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5zdG9wKCk7CisgICAgICAgIH0p
OworICAgICAgICBtX3ZpZGVvT3V0cHV0LT5hZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIo
Km1fd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZU9ic2VydmVyKTsKIAogICAg
ICAgICB0aW1lb3V0VGltZXIuZW1wbGFjZShSdW5Mb29wOjptYWluKCksIFsmXSB7CiAgICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwpAQCAtMjY5NiwxNSArMjY5MCw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d2FpdEZvclZpZGVvT3V0cHV0TWVk
aWFEYXRhV2lsbENoYW5nZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpCiB7Ci0gICAgaWYgKG1fcnVuTG9vcE5l
c3RpbmdMZXZlbCkgewotICAgICAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpCi0gICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7Ci0gICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLnN0b3AoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfQorICAgIGNoZWNr
TmV3VmlkZW9GcmFtZU1ldGFkYXRhKCk7CiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKQEAgLTQwODksMzcgKzQwNzUsNCBAQCAtICh2b2lkKXJlc291cmNlTG9hZGVyOihB
VkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBkaWRDYW5jZWxMb2FkaW5nUgog
CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlQVZGUHVsbERlbGVnYXRlIHsKLSAgICBX
ZWFrUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+IF9wbGF5
ZXI7Ci19Ci0KLUBzeW50aGVzaXplIHNlbWFwaG9yZSA9IG1fc2VtYXBob3JlOwotCi0tIChpZClp
bml0V2l0aFBsYXllcjooV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
PiYmKXBsYXllcgotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQot
ICAgICAgICByZXR1cm4gbmlsOwotICAgIF9wbGF5ZXIgPSBXVEZNb3ZlKHBsYXllcik7Ci0gICAg
cmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQ
bGF5ZXJJdGVtVmlkZW9PdXRwdXQgKilvdXRwdXQKLXsKLSAgICBVTlVTRURfUEFSQU0ob3V0cHV0
KTsKLSAgICBtX3NlbWFwaG9yZS5zaWduYWwoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzZWxm
LCBzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9XSB7Ci0gICAgICAgIGlmIChfcGxheWVy
KQotICAgICAgICAgICAgX3BsYXllci0+b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpOwotICAg
IH0pOwotfQotCi0tICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVt
VmlkZW9PdXRwdXQgKilvdXRwdXQKLXsKLSAgICBVTlVTRURfUEFSQU0ob3V0cHV0KTsKLSAgICAv
LyBOby1vcC4KLX0KLQotQGVuZAotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1
ZWRWaWRlb091dHB1dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiYWYwZWExMWU1YzRmYmUzMjRkOTUyNWFkZjFi
ZGIzYzYzMzBhODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5oCkBAIC0wLDAgKzEs
OTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShWSURFTykKKwor
I2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvTWVk
aWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtI
YXNoU2V0Lmg+CisKK09CSkNfQ0xBU1MgQVZQbGF5ZXI7CitPQkpDX0NMQVNTIEFWUGxheWVySXRl
bTsKK09CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ7CitPQkpDX0NMQVNTIFdlYlF1
ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGU7CisKK3R5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNW
UGl4ZWxCdWZmZXJSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUXVldWVkVmlk
ZW9PdXRwdXQKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFF1ZXVlZFZpZGVvT3V0cHV0PgorICAg
ICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFF1ZXVlZFZpZGVvT3V0cHV0PiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxRdWV1ZWRWaWRlb091
dHB1dD4gY3JlYXRlKEFWUGxheWVySXRlbSosIEFWUGxheWVyKik7CisgICAgflF1ZXVlZFZpZGVv
T3V0cHV0KCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAgICBib29sIGhhc0ltYWdlRm9y
VGltZShjb25zdCBNZWRpYVRpbWUmKSBjb25zdDsKKworICAgIHN0cnVjdCBWaWRlb0ZyYW1lRW50
cnkgeworICAgICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXI7Cisg
ICAgICAgIE1lZGlhVGltZSBkaXNwbGF5VGltZTsKKyAgICB9OworICAgIFZpZGVvRnJhbWVFbnRy
eSB0YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShjb25zdCBNZWRpYVRpbWUmKTsKKworICAgIHZv
aWQgYWRkVmlkZW9GcmFtZUVudHJpZXMoVmVjdG9yPFZpZGVvRnJhbWVFbnRyeT4mJik7CisgICAg
dm9pZCBwdXJnZVZpZGVvRnJhbWVFbnRyaWVzKCk7CisKKyAgICB1c2luZyBDdXJyZW50SW1hZ2VD
aGFuZ2VkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKCk+OworICAgIHZvaWQgYWRkQ3VycmVudElt
YWdlQ2hhbmdlZE9ic2VydmVyKGNvbnN0IEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciYpOwor
CisgICAgdXNpbmcgSW1hZ2VNYXAgPSBzdGQ6Om1hcDxNZWRpYVRpbWUsIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPj47CisKKyAgICB2b2lkIHJhdGVDaGFuZ2VkKGZsb2F0KTsKKworcHJpdmF0
ZToKKyAgICBRdWV1ZWRWaWRlb091dHB1dChBVlBsYXllckl0ZW0qLCBBVlBsYXllciopOworCisg
ICAgdm9pZCBwdXJnZUltYWdlc0JlZm9yZVRpbWUoY29uc3QgTWVkaWFUaW1lJik7CisgICAgdm9p
ZCBjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAgICB2b2lkIGNhbmNlbE5leHRJ
bWFnZVRpbWVPYnNlcnZlcigpOworICAgIHZvaWQgbmV4dEltYWdlVGltZVJlYWNoZWQoKTsKKwor
ICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW0+IG1fcGxheWVySXRlbTsKKyAgICBSZXRhaW5QdHI8
QVZQbGF5ZXI+IG1fcGxheWVyOworICAgIFJldGFpblB0cjxXZWJRdWV1ZWRWaWRlb091dHB1dERl
bGVnYXRlPiBtX2RlbGVnYXRlOworICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW1WaWRlb091dHB1
dD4gbV92aWRlb091dHB1dDsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fdmlkZW9UaW1lYmFzZU9ic2Vy
dmVyOworICAgIFJldGFpblB0cjxpZD4gbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyOworCisg
ICAgSW1hZ2VNYXAgbV92aWRlb0ZyYW1lczsKKyAgICBXZWFrSGFzaFNldDxDdXJyZW50SW1hZ2VD
aGFuZ2VkT2JzZXJ2ZXI+IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyczsKKworICAgIGJv
b2wgbV9wYXVzZWQgeyB0cnVlIH07Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlk
ZW9PdXRwdXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYmMwODM4MTRjMDhjN2Rl
ZWQ2MWM5MDc5YzIyYmUzZjUwNzhhNzdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQu
bW0KQEAgLTAsMCArMSwzMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUXVldWVkVmlkZW9PdXRwdXQuaCIKKworI2lmIEVOQUJMRShWSURFTykKKworI2lu
Y2x1ZGUgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1PdXRwdXQuaD4KKyNpbmNsdWRlIDxwYWwv
YXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHBhbC9zcGkv
Y29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGVOdW1iZXJzLmg+CisKKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4K
KyNpbmNsdWRlIDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKworQGludGVyZmFj
ZSBXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIDogTlNPYmplY3Q8QVZQbGF5ZXJJdGVtT3V0
cHV0UHVsbERlbGVnYXRlPiB7CisgICAgV2Vha1B0cjxXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1
dD4gX3BhcmVudDsKK30KKy0gKGlkKWluaXRXaXRoUGFyZW50OihXZWJDb3JlOjpRdWV1ZWRWaWRl
b091dHB1dCopcGFyZW50OworLSAodm9pZClvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOihBVlBs
YXllckl0ZW1PdXRwdXQgKilvdXRwdXQ7CistICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hl
ZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0OworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JL
ZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAq
KWNoYW5nZSBjb250ZXh0Oih2b2lkKiljb250ZXh0OworQGVuZAorCitAaW1wbGVtZW50YXRpb24g
V2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZQorLSAoaWQpaW5pdFdpdGhQYXJlbnQ6KFdlYkNv
cmU6OlF1ZXVlZFZpZGVvT3V0cHV0KilwYXJlbnQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRd
OworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9wYXJlbnQgPSBw
YXJlbnQ7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpb3V0cHV0TWVkaWFEYXRhV2ls
bENoYW5nZTooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0Cit7CisgICAgQVNTRVJUKFtvdXRw
dXQgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxheWVySXRlbVZpZGVvT3V0cHV0Q2xhc3MoKV0p
OworICAgIGF1dG8qIHZpZGVvT3V0cHV0ID0gKEFWUGxheWVySXRlbVZpZGVvT3V0cHV0KilvdXRw
dXQ7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OlZpZGVvRnJhbWVF
bnRyeT4gdmlkZW9GcmFtZUVudHJpZXM7CisgICAgZG8geworICAgICAgICBDTVRpbWUgZWFybGll
c3RUaW1lID0gW3ZpZGVvT3V0cHV0IGVhcmxpZXN0QXZhaWxhYmxlUGl4ZWxCdWZmZXJJdGVtVGlt
ZV07CisgICAgICAgIGlmIChDTVRJTUVfSVNfSU5WQUxJRChlYXJsaWVzdFRpbWUpKQorICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGFkb3B0Q0YoW3ZpZGVv
T3V0cHV0IGNvcHlQaXhlbEJ1ZmZlckZvckl0ZW1UaW1lOmVhcmxpZXN0VGltZSBpdGVtVGltZUZv
ckRpc3BsYXk6bmlsXSk7CisgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpCisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICB2aWRlb0ZyYW1lRW50cmllcy5hcHBlbmQoeyBXVEZNb3ZlKHBpeGVs
QnVmZmVyKSwgUEFMOjp0b01lZGlhVGltZShlYXJsaWVzdFRpbWUpIH0pOworICAgIH0gd2hpbGUg
KHRydWUpOworCisgICAgaWYgKHZpZGVvRnJhbWVFbnRyaWVzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3ZpZGVvRnJhbWVFbnRyaWVzID0gV1RG
TW92ZSh2aWRlb0ZyYW1lRW50cmllcyksIHBhcmVudCA9IF9wYXJlbnRdICgpIG11dGFibGUgewor
ICAgICAgICBpZiAocGFyZW50KQorICAgICAgICAgICAgcGFyZW50LT5hZGRWaWRlb0ZyYW1lRW50
cmllcyhXVEZNb3ZlKHZpZGVvRnJhbWVFbnRyaWVzKSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQp
b3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOihBVlBsYXllckl0ZW1PdXRwdXQgKilvdXRwdXQKK3sK
KyAgICBBU1NFUlQoW291dHB1dCBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZQbGF5ZXJJdGVtVmlk
ZW9PdXRwdXRDbGFzcygpXSk7CisgICAgYXV0byogdmlkZW9PdXRwdXQgPSAoQVZQbGF5ZXJJdGVt
VmlkZW9PdXRwdXQqKW91dHB1dDsKKyAgICBbdmlkZW9PdXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlv
bk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJsZV07CisKKyAgICBjYWxsT25NYWluUnVu
TG9vcChbcGFyZW50ID0gX3BhcmVudF0geworICAgICAgICBpZiAocGFyZW50KQorICAgICAgICAg
ICAgcGFyZW50LT5wdXJnZVZpZGVvRnJhbWVFbnRyaWVzKCk7CisgICAgfSk7Cit9CisKKy0gKHZv
aWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hh
bmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dAoreworICAg
IGlmICghW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicmF0ZSJdKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIHJhdGVWYWx1ZSA9IChOU051bWJlciopW2NoYW5nZSB2YWx1ZUZvcktleTpO
U0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsKKyAgICBBU1NFUlQoW3JhdGVWYWx1ZSBpc0tpbmRPZkNs
YXNzOk5TTnVtYmVyLmNsYXNzXSk7CisgICAgYXV0byByYXRlID0gcmF0ZVZhbHVlLmZsb2F0VmFs
dWU7CisKKyAgICBlbnN1cmVPbk1haW5SdW5Mb29wKFtwYXJlbnQgPSBfcGFyZW50LCByYXRlXSB7
CisgICAgICAgIGlmIChwYXJlbnQpCisgICAgICAgICAgICBwYXJlbnQtPnJhdGVDaGFuZ2VkKHJh
dGUpOworICAgIH0pOworfQorQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBk
aXNwYXRjaF9xdWV1ZV90IGdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKQoreworICAgIHN0YXRp
YyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFF1ZXVlOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNl
X3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAg
Z2xvYmFsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYlF1ZXVlZFZpZGVvT3V0cHV0
RGVsZWdhdGUgcXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworICAgIH0pOworICAgIHJl
dHVybiBnbG9iYWxRdWV1ZTsKK30KKworUmVmPFF1ZXVlZFZpZGVvT3V0cHV0PiBRdWV1ZWRWaWRl
b091dHB1dDo6Y3JlYXRlKEFWUGxheWVySXRlbSogaXRlbSwgQVZQbGF5ZXIqIHBsYXllcikKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBRdWV1ZWRWaWRlb091dHB1dChpdGVtLCBwbGF5ZXIp
KTsKK30KKworUXVldWVkVmlkZW9PdXRwdXQ6OlF1ZXVlZFZpZGVvT3V0cHV0KEFWUGxheWVySXRl
bSogaXRlbSwgQVZQbGF5ZXIqIHBsYXllcikKKyAgICA6IG1fcGxheWVySXRlbShpdGVtKQorICAg
ICwgbV9wbGF5ZXIocGxheWVyKQorICAgICwgbV9kZWxlZ2F0ZShhZG9wdE5TKFtbV2ViUXVldWVk
VmlkZW9PdXRwdXREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQoreworICAg
IG1fdmlkZW9PdXRwdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZQbGF5ZXJJdGVtVmlkZW9PdXRw
dXRJbnN0YW5jZSgpIGluaXRXaXRoUGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOm5pbF0pOworICAgIFtt
X3ZpZGVvT3V0cHV0IHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCkgcXVldWU6Z2xvYmFsT3V0
cHV0RGVsZWdhdGVRdWV1ZSgpXTsKKyAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0
aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKKworICAgIFttX3BsYXllckl0
ZW0gYWRkT3V0cHV0Om1fdmlkZW9PdXRwdXQuZ2V0KCldOworCisgICAgW21fcGxheWVyIGFkZE9i
c2VydmVyOm1fZGVsZWdhdGUuZ2V0KCkgZm9yS2V5UGF0aDpAInJhdGUiIG9wdGlvbnM6KE5TS2V5
VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgfCBOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlh
bCkgY29udGV4dDpuaWxdOworCisgICAgbV92aWRlb1RpbWViYXNlT2JzZXJ2ZXIgPSBbbV9wbGF5
ZXIgYWRkUGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbDpQQUw6OkNNVGltZU1ha2UoMSwg
NjApIHF1ZXVlOmdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwcm90ZWN0ZWREZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIHBy
b3RlY3RlZE91dHB1dCA9IG1fdmlkZW9PdXRwdXRdKENNVGltZSBjdXJyZW50VGltZSkgbXV0YWJs
ZSB7CisKKyAgICAgICAgLy8gUGVyaW9kaWNhbGx5IGNoZWNrIGZvciBuZXcgYXZhaWxhYmxlIHBp
eGVsIGJ1ZmZlcnMuCisgICAgICAgIFtwcm90ZWN0ZWREZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFX
aWxsQ2hhbmdlOnByb3RlY3RlZE91dHB1dC5nZXQoKV07CisKKyAgICAgICAgLy8gQW5kIHB1cmdl
IHRoZSBiYWNrIGJ1ZmZlciBvZiBwYXN0IGZyYW1lcy4KKyAgICAgICAgY2FsbE9uTWFpblJ1bkxv
b3AoW3dlYWtUaGlzID0gd2Vha1RoaXMsIHRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKGN1cnJlbnRU
aW1lKV0geworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT5wdXJnZUltYWdlc0JlZm9yZVRpbWUodGltZSk7CisgICAgICAgIH0pOworICAgIH1dOwor
fQorCitRdWV1ZWRWaWRlb091dHB1dDo6flF1ZXVlZFZpZGVvT3V0cHV0KCkKK3sKKyAgICBpbnZh
bGlkYXRlKCk7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmludmFsaWRhdGUoKQorewor
ICAgIGlmIChtX3ZpZGVvVGltZWJhc2VPYnNlcnZlcikgeworICAgICAgICBbbV9wbGF5ZXIgcmVt
b3ZlVGltZU9ic2VydmVyOm1fdmlkZW9UaW1lYmFzZU9ic2VydmVyLmdldCgpXTsKKyAgICAgICAg
bV92aWRlb1RpbWViYXNlT2JzZXJ2ZXIgPSBuaWw7CisgICAgfQorCisgICAgY2FuY2VsTmV4dElt
YWdlVGltZU9ic2VydmVyKCk7CisKKyAgICBpZiAobV92aWRlb091dHB1dCkgeworICAgICAgICBb
bV9wbGF5ZXJJdGVtIHJlbW92ZU91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKKyAgICAgICAg
W21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bmlsIHF1ZXVlOm5pbF07CisgICAgICAgIG1fdmlk
ZW9PdXRwdXQgPSBuaWw7CisgICAgfQorCisgICAgaWYgKG1fcGxheWVyKSB7CisgICAgICAgIFtt
X3BsYXllciByZW1vdmVPYnNlcnZlcjptX2RlbGVnYXRlLmdldCgpIGZvcktleVBhdGg6QCJyYXRl
Il07CisgICAgICAgIG1fcGxheWVyID0gbmlsOworICAgIH0KKworICAgIG1fcGxheWVySXRlbSA9
IG5pbDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE1heWJlQ29uc3RNYXAsIHR5cGVuYW1lIE1h
eWJlQ29uc3RJdGVyID0gZGVjbHR5cGUoTWF5YmVDb25zdE1hcCgpLmJlZ2luKCkpPgorTWF5YmVD
b25zdEl0ZXIgZmluZEltYWdlRm9yVGltZShNYXliZUNvbnN0TWFwJiBtYXAsIGNvbnN0IE1lZGlh
VGltZSYgdGltZSkKK3sKKyAgICAvLyBPdXRwdXRzIG9mIEFWUGxheWVySXRlbVZpZGVvT3V0cHV0
IGhhdmUgYSBkaXNwbGF5IHRpbWUsIGJ1dCBub3QgYSBkdXJhdGlvbjsgdGhleSBhcmUgdmFsaWQK
KyAgICAvLyB1bnRpbCB0aGUgYXJyaXZhbCBvZiBhIGxhdGVyIGZyYW1lLiBGaW5kIHRoaXMgZnJh
bWUgZWZmaWNpZW50bHkgdXNpbmcgc2V0Ojp1cHBlcl9ib3VuZCB0byBmaW5kCisgICAgLy8gdGhl
IG5leHQgZGlzcGxheWFibGUgZnJhbWUsIGFuZCB3YWxrIGJhY2t3YXJkcyBieSBvbmUgdG8gZmlu
ZCBhIGZyYW1lIGZvciB0aGUgdGFyZ2V0IHRpbWUuCisgICAgaWYgKG1hcC5lbXB0eSgpKQorICAg
ICAgICByZXR1cm4gbWFwLmVuZCgpOworCisgICAgYXV0byBpdGVyID0gbWFwLnVwcGVyX2JvdW5k
KHRpbWUpOworICAgIGlmIChpdGVyID09IG1hcC5iZWdpbigpKQorICAgICAgICByZXR1cm4gbWFw
LmVuZCgpOworCisgICAgcmV0dXJuIC0taXRlcjsKK30KKworYm9vbCBRdWV1ZWRWaWRlb091dHB1
dDo6aGFzSW1hZ2VGb3JUaW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJhbWVzLCB0aW1lKSAhPSBtX3ZpZGVvRnJh
bWVzLmVuZCgpOworfQorCithdXRvIFF1ZXVlZFZpZGVvT3V0cHV0Ojp0YWtlVmlkZW9GcmFtZUVu
dHJ5Rm9yVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpIC0+IFZpZGVvRnJhbWVFbnRyeQorewor
ICAgIGF1dG8gaXRlciA9IGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywgdGltZSk7Cisg
ICAgaWYgKGl0ZXIgPT0gbV92aWRlb0ZyYW1lcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHsgbnVs
bHB0ciwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpIH07CisKKyAgICBWaWRlb0ZyYW1lRW50cnkg
ZW50cnkgPSB7IFdURk1vdmUoaXRlci0+c2Vjb25kKSwgaXRlci0+Zmlyc3QgfTsKKworICAgIC8v
IFB1cmdlIGFsbCBmcmFtZXMgYmVmb3JlIGB0aW1lYCwgc28gdGhhdCByZXBlYXRlZCBjYWxscyB3
aXRoIHRoZSBzYW1lIHRpbWUgZG9uJ3QgcmV0dXJuCisgICAgLy8gc3VjY2Vzc2l2ZWx5IGVhcmxp
ZXIgaW1hZ2VzLgorICAgIG1fdmlkZW9GcmFtZXMuZXJhc2UobV92aWRlb0ZyYW1lcy5iZWdpbigp
LCArK2l0ZXIpOworCisgICAgcmV0dXJuIGVudHJ5OworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0
cHV0OjphZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoY29uc3QgQ3VycmVudEltYWdlQ2hh
bmdlZE9ic2VydmVyJiBvYnNlcnZlcikKK3sKKyAgICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNl
cnZlcnMuYWRkKG9ic2VydmVyKTsKKyAgICBjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIo
KTsKKworICAgIFttX3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25PZk1lZGlhRGF0YUNo
YW5nZUFzU29vbkFzUG9zc2libGVdOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0Ojpjb25m
aWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKQoreworICAgIGlmIChtX25leHRJbWFnZVRpbWVi
YXNlT2JzZXJ2ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY3VycmVudFRpbWUgPSBQ
QUw6OnRvTWVkaWFUaW1lKFttX3BsYXllciBjdXJyZW50VGltZV0pOworICAgIGF1dG8gaXRlciA9
IGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywgY3VycmVudFRpbWUpOworICAgIGlmIChp
dGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkgfHwgKytpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5k
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbmV4dEltYWdlVGltZSA9IGl0ZXItPmZp
cnN0OworCisgICAgbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyID0gW21fcGxheWVyIGFkZEJv
dW5kYXJ5VGltZU9ic2VydmVyRm9yVGltZXM6QFtbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWU6UEFM
Ojp0b0NNVGltZShjdXJyZW50VGltZSldXSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVl
KCkgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvdGVjdGVkRGVs
ZWdhdGUgPSBtX2RlbGVnYXRlLCBwcm90ZWN0ZWRPdXRwdXQgPSBtX3ZpZGVvT3V0cHV0XSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV1RGTW92ZSh3
ZWFrVGhpcyldIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3
ZWFrVGhpcy0+bmV4dEltYWdlVGltZVJlYWNoZWQoKTsKKyAgICAgICAgfSk7CisgICAgfV07Cit9
CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmNhbmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigp
Cit7CisgICAgaWYgKCFtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIFttX3BsYXllciByZW1vdmVUaW1lT2JzZXJ2ZXI6bV9uZXh0SW1hZ2VUaW1lYmFz
ZU9ic2VydmVyLmdldCgpXTsKKyAgICBtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIgPSBuaWw7
Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6Om5leHRJbWFnZVRpbWVSZWFjaGVkKCkKK3sK
KyAgICBjYW5jZWxOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAgICBhdXRvIG9ic2VydmVycyA9
IHN0ZDo6ZXhjaGFuZ2UobV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzLCB7IH0pOworICAg
IG9ic2VydmVycy5mb3JFYWNoKFtdKGF1dG8mIG9ic2VydmVyKSB7IG9ic2VydmVyKCk7IH0pOwor
fQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjphZGRWaWRlb0ZyYW1lRW50cmllcyhWZWN0b3I8
VmlkZW9GcmFtZUVudHJ5PiYmIHZpZGVvRnJhbWVFbnRyaWVzKQoreworICAgIGJvb2wgbmVlZHNJ
bWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCA9IGZhbHNlOworICAgIGJvb2wgaGFzQ3VycmVudElt
YWdlQ2hhbmdlZE9ic2VydmVycyA9IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycy5jb21w
dXRlU2l6ZSgpOworICAgIE1lZGlhVGltZSBjdXJyZW50VGltZSA9IGhhc0N1cnJlbnRJbWFnZUNo
YW5nZWRPYnNlcnZlcnMgPyBQQUw6OnRvTWVkaWFUaW1lKFttX3BsYXllciBjdXJyZW50VGltZV0p
IDogTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpOworCisgICAgZm9yIChhdXRvJiBlbnRyeSA6IHZp
ZGVvRnJhbWVFbnRyaWVzKSB7CisgICAgICAgIGlmIChoYXNDdXJyZW50SW1hZ2VDaGFuZ2VkT2Jz
ZXJ2ZXJzICYmIGVudHJ5LmRpc3BsYXlUaW1lIDw9IGN1cnJlbnRUaW1lKQorICAgICAgICAgICAg
bmVlZHNJbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIG1fdmlkZW9G
cmFtZXMuZW1wbGFjZShlbnRyeS5kaXNwbGF5VGltZSwgV1RGTW92ZShlbnRyeS5waXhlbEJ1ZmZl
cikpOworICAgIH0KKworICAgIGlmIChuZWVkc0ltYWdlRm9yQ3VycmVudFRpbWVDaGFuZ2VkKQor
ICAgICAgICBuZXh0SW1hZ2VUaW1lUmVhY2hlZCgpOworICAgIGVsc2UgaWYgKGhhc0N1cnJlbnRJ
bWFnZUNoYW5nZWRPYnNlcnZlcnMpCisgICAgICAgIGNvbmZpZ3VyZU5leHRJbWFnZVRpbWVPYnNl
cnZlcigpOworCisgICAgaWYgKG1fcGF1c2VkKQorICAgICAgICBbbV92aWRlb091dHB1dCByZXF1
ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKK30KKwor
dm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VWaWRlb0ZyYW1lRW50cmllcygpCit7CisgICAg
Y2FuY2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisgICAgbV92aWRlb0ZyYW1lcy5jbGVhcigp
OworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpwdXJnZUltYWdlc0JlZm9yZVRpbWUoY29u
c3QgTWVkaWFUaW1lJiB0aW1lKQoreworICAgIG1fdmlkZW9GcmFtZXMuZXJhc2UobV92aWRlb0Zy
YW1lcy5iZWdpbigpLCBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFtZXMsIHRpbWUpKTsKK30K
Kwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6cmF0ZUNoYW5nZWQoZmxvYXQgcmF0ZSkKK3sKKyAg
ICBtX3BhdXNlZCA9ICFyYXRlOworCisgICAgaWYgKG1fcGF1c2VkKQorICAgICAgICBbbV92aWRl
b091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3Np
YmxlXTsKK30KKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRkMTk2N2VkMzhlZTBkNTkzNTRjMmE3
NDZlZWFkMDVkN2RkMGQwNGUuLjE1Y2Q3NDE3NzYwNmUzZGYwZTNhOGNmMWNiMjYyODU4NWM2NmRm
MDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMi0wMS0wOCAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIHJWRkMoKSBpc24ndCBjYWxsZWQgZm9y
IGluaXRpYWwgdmlkZW8gbG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM1MDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgor
CisgICAgICAgICogbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFy
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWst
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1l
LXNlZWsuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0
YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9uczoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjItMDEtMTEg
IE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXdy
aXRlIHRvdWNoIGFuZCBkcmFnIHRlc3RzIHRvIGJlIG1vcmUgcm9idXN0LgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjMDJmNjZlYmFiZGZiNTc0ZDlmOWZmMWQ1YjgxZmM4MDg5
MjAzNmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVv
LWZyYW1lLWxvYWRzdGFydC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK1JVTih2aWRl
by5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGNhbGxiYWNrKSkKK1JVTih2aWRlby5zcmMgPSBm
aW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKSkKK1Byb21pc2UgcmVzb2x2ZWQg
T0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3Qt
dmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZp
ZGVvLWZyYW1lLWxvYWRzdGFydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MGIzZjFhOGM2MTFhMjZmY2Qw
YTU0ZWVlMGZiMDJjNTVlNjZmNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRp
YS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+cmVxdWVzdC12aWRlby1m
cmFtZS1sb2Fkc3RhcnQ8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSJ2aWRlby10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0ibWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdD4KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50
ID0+IHsKKyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgIGxldCB2aWRlb0Zy
YW1lUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soY2Fs
bGJhY2spKScpOworICAgICAgICAgICAgdmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhy
ZXNvbHZlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBmaW5kTWVk
aWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKScpOworCisgICAgICAgIGF3YWl0IHNob3Vs
ZFJlc29sdmUodmlkZW9GcmFtZVByb21pc2UpOworCisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9
KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx2aWRlbyBtdXRlZD48L3Zp
ZGVvPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWstZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJhMDE1ZjI2YjgzYWM5OWFmZjMwNTY4YjMyZTY2OTQxNTA2NGM3
NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZy
YW1lLXNlZWstZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorCitSVU4odmlkZW8uc3JjID0g
ZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0IikpCitFVkVOVChjYW5wbGF5dGhy
b3VnaCkKK1JVTih2aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGNhbGxiYWNrKSkKK1JV
Tih2aWRlby5jdXJyZW50VGltZSA9IDAuNSkKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK0VORCBPRiBU
RVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1zZWVrLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTkyNThmMDM2MzhjY2Y4YTZjOGYzNDYwZDcxNDMzNGE0NzkwOTU4YQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKyAgICA8dGl0bGU+cmVxdWVzdC12aWRlby1mcmFtZS1zZWVrPC90aXRsZT4KKyAgICA8c2Ny
aXB0IHNyYz0idmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Im1lZGlh
LWZpbGUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoJ2xvYWQnLCBhc3luYyBldmVudCA9PiB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQo
KTsKKworICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNv
bnRlbnQvdGVzdCIpJyk7CisKKyAgICAgICAgYXdhaXQgd2FpdEZvcih2aWRlbywgJ2NhbnBsYXl0
aHJvdWdoJyk7CisKKyAgICAgICAgbGV0IHZpZGVvRnJhbWVQcm9taXNlID0gbmV3IFByb21pc2Uo
KHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlk
ZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhjYWxsYmFjaykpJyk7CisgICAgICAgICAgICB2
aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKHJlc29sdmUpOworICAgICAgICB9KTsKKwor
ICAgICAgICBydW4oJ3ZpZGVvLmN1cnJlbnRUaW1lID0gMC41Jyk7CisKKyAgICAgICAgYXdhaXQg
c2hvdWxkUmVzb2x2ZSh2aWRlb0ZyYW1lUHJvbWlzZSk7CisKKyAgICAgICAgZW5kVGVzdCgpOwor
ICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHZpZGVvIG11dGVk
PjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDcx
ODJlOGNmYzk1N2Q4ODJhN2Y4NTU3NWI4ZGMyMjg5ODY3MjI5NjguLmIyZGMyODVhMDdhZGJiZWFk
OTFlYjg4MjkwZmVhYmQ5MjY0ZTBjZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE0NSw2ICsxNDUsNyBAQCB3ZWJydGMvcGVlckNvbm5l
Y3Rpb24tcnZmYy5odG1sIFsgUGFzcyBdCiAjIFRpbWluZyBvdXQgdGVzdHMgdW50aWwgd2UgYWRk
IFhSIHNlc3Npb24uCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMv
cmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1iZWZvcmUteHItc2Vzc2lvbi5odHRwcy5odG1s
IFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVx
dWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1kdXJpbmcteHItc2Vzc2lvbi5odHRwcy5odG1sIFsg
U2tpcCBdCit3ZWJraXQub3JnL2IvMjM1MDcyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZpZGVvLWZyYW1lLWNhbGxiYWNrLXJlcGVhdGluZy5odG1s
IFsgU2tpcCBdCiAKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBs
YXRmb3JtLXNwZWNpZmljIGRpcmVjdG9yaWVzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGJiYjY1YTQwODg1NWFkOTNjNmM0MWRmNGRkZDQx
YzhhMDJlZTRmNDkuLmU3NDk2YjgwZTU1YmJjMGJmMmJiM2I0YjUyMWM5MjM2NjdkYzcwYjcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM4
LDYgKzM4LDggQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy92aWRlby1ydmZjIFsg
UGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVz
dC12aWRlby1mcmFtZS1jYWxsYmFjay1iZWZvcmUteHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tp
cCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12
aWRlby1mcmFtZS1jYWxsYmFjay1kdXJpbmcteHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBd
CiAKK3dlYmtpdC5vcmcvYi8yMzUwNzIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy92
aWRlby1ydmZjL3JlcXVlc3QtdmlkZW8tZnJhbWUtY2FsbGJhY2stcmVwZWF0aW5nLmh0bWwgWyBT
a2lwIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgcGxhdGZv
cm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMuCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggYjVkODJjOTIxYTc4MGI0NmQ3ODcxZGEzMWI5YTJjM2UwNjhlZTFjNi4uY2ViNzBhNTUwODAz
YmI2NDA2OTg5NDQ2MmQzYjFkMTE0MTIyMGI0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTI0LDYgKzEyNCw4IEBAIHdlYnJ0Yy9wZWVy
Q29ubmVjdGlvbi1ydmZjLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZpZGVvLWZyYW1lLWNhbGxiYWNrLWJlZm9yZS14ci1z
ZXNzaW9uLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZpZGVvLWZyYW1lLWNhbGxiYWNrLWR1cmluZy14ci1zZXNz
aW9uLmh0dHBzLmh0bWwgWyBTa2lwIF0KIAord2Via2l0Lm9yZy9iLzIzNTA3MiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxs
YmFjay1yZXBlYXRpbmcuaHRtbCBbIFNraXAgXQorCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmllcy4KICMvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
</data>
<flag name="commit-queue"
          id="475059"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449085</attachid>
            <date>2022-01-13 10:46:49 -0800</date>
            <delta_ts>2022-01-14 14:59:27 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-235006-20220113104649.patch</filename>
            <type>text/plain</type>
            <size>51726</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3OTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWIxNTA4YzQ4NDhmYjBh
MDIzOTc5MDEyMmVhNzRlMjVjODAxZmIyNy4uYmJkY2RhNjU3OWM4ODJjYjY3YmVhMjgyM2ZhODlk
NGY2M2Y3ZmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIyLTAxLTA4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gclZGQygpIGlz
bid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBsb2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUwMDYKKworICAgICAgICBSZXZpZXdlZCBieSBF
cmljIENhcmxzb24uCisKKyAgICAgICAgVGVzdHM6IG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
bG9hZHN0YXJ0Lmh0bWwKKyAgICAgICAgICAgICAgIG1lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sCisKKyAgICAgICAgQWRkIGEgbmV3IHV0aWxpdHkgY2xhc3MsIFF1ZXVlZFZpZGVv
T3V0cHV0LCB3aGljaCB3aWxsIHB1bGwgcGl4ZWwgYnVmZmVycyBvdXQgb2YgYW4gQVZQbGF5ZXJJ
dGVtVmlkZW9PdXRwdXQKKyAgICAgICAgcHJlLWVtcHRpdmVseS4gT25jZSB0aG9zZSBwaXhlbCBi
dWZmZXJzIGFyZSBlbnF1ZXVlZCBsb2NhbGx5LCB0aGVpciBhc3NvY2lhdGVkIHRpbWluZyBpbmZv
cm1hdGlvbiBjYW4gYmUgdXNlZCB0bworICAgICAgICBmaXJlIGEgY2FsbGJhY2sgZm9yIHRoYXQg
YnVmZmVyJ3MgZGlzcGxheSB0aW1lLgorCisgICAgICAgIFByZXZpb3VzbHksIHBhaW50cyB3ZXJl
IGJsb2NrZWQgZnJvbSBwdWxsaW5nIG5ldyBwaXhlbCBidWZmZXJzIGZyb20gdGhlIHZpZGVvIG91
dHB1dC4gV2l0aCB0aGUgUXVldWVkVmlkZW9PdXRwdXQKKyAgICAgICAgY2xhc3MsIHRoaXMgaXMg
bm8gbG9uZ2VyIG5lY2Vzc2FyeS4gVGhlIFF1ZXVlZFZpZGVvT3V0cHV0IHdpbGwgbm90aWZ5IGl0
cyBjbGllbnQgd2hlbiB0aGUgaW1hZ2UgZm9yIGN1cnJlbnRUaW1lCisgICAgICAgIGNoYW5nZXMs
IGFuZCBvdGhlciBjbGllbnRzIGNhbiBmcmVlbHkgYXNrIGZvciB0aGUgY3VycmVudFRpbWUncyBp
bWFnZS4KKworICAgICAgICBUbyBjdXJiIHJ1bmF3YXkgbWVtb3J5IGdyb3d0aCwgZnJhbWVzIGFy
ZSBwdXJnZWQgYXMgc29vbiBhcyBhIG5ldyBpbWFnZSBmb3IgdGhlIGN1cnJlbnQgdGltZSBpcyBh
dmFpbGFibGUsIGFuZCB3aGVuCisgICAgICAgIHRoZSB2aWRlbyBvdXRwdXQgc2lnbmFscyB0aGF0
IGl0cyBvd24gcXVldWVzIHdlcmUgcHVyZ2VkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpjYW5jZWxWaWRlb0ZyYW1lQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c2VydmljZVJlcXVl
c3RWaWRlb0ZyYW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6
On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Omhhc0F2YWlsYWJsZVZpZGVvRnJh
bWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6dXBkYXRlVmlkZW9GdWxsc2NyZWVuSW5saW5lSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6c3RhcnRWaWRlb0ZyYW1lTWV0YWRhdGFHYXRoZXJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2hlY2tOZXdWaWRlb0Zy
YW1lTWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6dXBkYXRlVmlkZW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlVmlkZW9PdXRwdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6ZGVzdHJveVZp
ZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6OnVwZGF0ZUxhc3RQaXhlbEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OnVwZGF0ZUxhc3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpwYWludFdpdGhWaWRlb091dHB1dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwaXhlbEJ1ZmZlckZvckN1
cnJlbnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM6Om5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y29sb3JTcGFjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvdXRwdXRNZWRp
YURhdGFXaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6Omdsb2JhbFB1bGxEZWxlZ2F0ZVF1
ZXVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OndhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UpOiBEZWxl
dGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIGluaXRXaXRoUGxheWVyOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXZWJDb3JlQVZGUHVsbERlbGVnYXRlIG91dHB1dE1lZGlh
RGF0YVdpbGxDaGFuZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkNvcmVBVkZQdWxsRGVs
ZWdhdGUgb3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOl0pOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lmg6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVl
ZFZpZGVvT3V0cHV0Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXRE
ZWxlZ2F0ZSBpbml0V2l0aFBhcmVudDpdKToKKyAgICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRw
dXREZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOl0pOgorICAgICAgICAoLVtXZWJR
dWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIG91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDpdKToKKyAg
ICAgICAgKC1bV2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZSBvYnNlcnZlVmFsdWVGb3JLZXlQ
YXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoV2ViQ29yZTo6Z2xvYmFs
T3V0cHV0RGVsZWdhdGVRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjpRdWV1ZWRW
aWRlb091dHB1dCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6flF1ZXVl
ZFZpZGVvT3V0cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmRlY2x0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OlF1ZXVlZFZpZGVvT3V0cHV0OjpoYXNJbWFnZUZvclRpbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnRha2VWaWRlb0ZyYW1lRW50cnlGb3JUaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0OjphZGRDdXJyZW50SW1hZ2VDaGFuZ2Vk
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OmNvbmZpZ3Vy
ZU5leHRJbWFnZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlF1ZXVlZFZpZGVvT3V0cHV0
OjppbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpRdWV1ZWRW
aWRlb091dHB1dDo6YWRkVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29yZTo6UXVl
dWVkVmlkZW9PdXRwdXQ6OnB1cmdlVmlkZW9GcmFtZUVudHJpZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6UXVldWVkVmlkZW9PdXRwdXQ6OnB1cmdlSW1hZ2VzQmVmb3JlVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1dDo6cmF0ZUNoYW5nZWQpOgorCiAyMDIxLTEyLTE0ICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtSZWZhY3Rvcl0gQWRv
cHQgTG9nZ2VySGVscGVyIGluIExvZ2dpbmcgRU1FIGNsYXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmlu
ZGV4IGYzMTgxOTc3NGJjMTQwY2Y1MjU4Nzg2NDQ5MjdiYWZkNWFiMmU5MDIuLmVjODEwYTFlM2Zj
Mjc4NjI0NmVjMDI0NGVhNWUxMzI0ZmRlNTI0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDIyLTAxLTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFtDb2NvYV0gclZGQygpIGlzbid0IGNhbGxlZCBmb3IgaW5pdGlhbCB2aWRlbyBs
b2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUw
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisKKyAgICAgICAgKiBwYWwv
c3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oOgorCiAyMDIyLTAxLTEwICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBhIC1z
aG91bGRXcmFwIHByb3BlcnR5IHdoZW4gaW5qZWN0aW5nIExpdmUgVGV4dApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvQVZGb3VuZGF0aW9uU1BJLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaAppbmRleCA4Yjdm
ZjEyMzdhMGM4YzIyZjg4MmZhMGJmZWVlOGJkM2FkNGNiNzEyLi40ZjljYmU2ZDNkMjdlYzdkMWEz
ZGQ3ZTFkODI3NzBlMzcxODg0MTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaApAQCAtNDAsOSArNDAsMTAgQEAKICNpbXBvcnQg
PEFWRm91bmRhdGlvbi9BVk1lZGlhU2VsZWN0aW9uR3JvdXBfUHJpdmF0ZS5oPgogI2ltcG9ydCA8
QVZGb3VuZGF0aW9uL0FWT3V0cHV0Q29udGV4dF9Qcml2YXRlLmg+CiAjaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZPdXRwdXREZXZpY2UuaD4KLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllcl9Q
cml2YXRlLmg+CisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZQbGF5ZXJJdGVtT3V0cHV0X1ByaXZh
dGUuaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1fUHJpdmF0ZS5oPgogI2lt
cG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVyTGF5ZXJfUHJpdmF0ZS5oPgorI2ltcG9ydCA8QVZG
b3VuZGF0aW9uL0FWUGxheWVyX1ByaXZhdGUuaD4KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCkBAIC02Niw2ICs2Nyw3IEBAIE5T
X0FTU1VNRV9OT05OVUxMX0VORAogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQ2FwdHVyZVNlc3Np
b24uaD4KICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllci5oPgogI2ltcG9ydCA8QVZGb3Vu
ZGF0aW9uL0FWUGxheWVySXRlbS5oPgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWUGxheWVySXRl
bU91dHB1dC5oPgogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fSU5URVJTVElUSUFMX0VWRU5UUykK
ICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVlBsYXllckludGVyc3RpdGlhbEV2ZW50Q29udHJvbGxl
ci5oPgpAQCAtOTIsNiArOTQsMTEgQEAgdHlwZWRlZiBOU1N0cmluZyAqIEFWVmlkZW9SYW5nZSBO
U19UWVBFRF9FTlVNOwogQGVuZAogI2VuZGlmCiAKK0BpbnRlcmZhY2UgQVZQbGF5ZXJJdGVtVmlk
ZW9PdXRwdXQgKEFWUGxheWVySXRlbVZpZGVvT3V0cHV0RWFybGllc3RUaW1lKQorQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBDTVRpbWUgZWFybGllc3RBdmFpbGFibGVQaXhlbEJ1ZmZl
ckl0ZW1UaW1lOworLSAodm9pZClyZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VB
c1Nvb25Bc1Bvc3NpYmxlOworQGVuZAorCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBkMjhiMzgzMWQ0ZjY5MTkyY2E1NjIwMmM4MDA0ZTE3ODNkYzNjNWMwLi5mMDNjNmM1NTMy
NmUwODFmMTA4MzA3YzRmYmJlNzhiZDVkNmE5YWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NDQ5LDYgKzQ0NDksOCBAQAog
CQlDRDFGOUI0RDI3MEQwM0E5MDA2MTdFQjYgLyogU2Nyb2xsRXh0ZW50cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QxRjlCNEMyNzBEMDNBOTAwNjE3
RUI2IC8qIFNjcm9sbEV4dGVudHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDRDFGOUI3RDI3MEU2Njc4MDA2MTdFQjYgLyogSFRNTEFuY2hvckVs
ZW1lbnRJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRDFGOUI3QzI3MEU2Njc4MDA2MTdFQjYgLyogSFRNTEFuY2hvckVsZW1lbnRJbmxpbmVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Qx
RjlCODAyNzBFNjcxQTAwNjE3RUI2IC8qIFNWR0VsZW1lbnRJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDFGOUI3RjI3MEU2NzFBMDA2MTdF
QjYgLyogU1ZHRWxlbWVudElubGluZXMuaCAqLzsgfTsKKwkJQ0QyMEVEM0MyNzg3OEZGQjAwMzhC
RTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDIwRUQzQTI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9P
dXRwdXQuaCAqLzsgfTsKKwkJQ0QyMEVEM0QyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVv
T3V0cHV0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0QyMEVEM0IyNzg3OEZGQjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0Lm1tICovOyB9Owog
CQlDRDIyNUMwQjFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMjI1QzA5MUM0NkZC
RjQwMDE0MDc2MSAvKiBXZWJDb3JlTlNVUkxTZXNzaW9uLm1tICovOyB9OwogCQlDRDIyNUMwQzFD
NDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QyMjVDMEExQzQ2RkJGNDAwMTQwNzYxIC8q
IFdlYkNvcmVOU1VSTFNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDRDI3QUU1MDIyQTk4Njg3MDA5NDdGRjkgLyogSW1hZ2VSb3RhdGlv
blNlc3Npb25WVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0QyN0FFNEUyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTU4NjYs
NiArMTU4NjgsOCBAQAogCQlDRDFGOUI3MDI3MERGQTdGMDA2MTdFQjYgLyogTWVkaWFLZXlNZXNz
YWdlRXZlbnRJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYUtleU1lc3NhZ2VFdmVudEluaXQuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDFGOUI3QzI3MEU2Njc4MDA2MTdFQjYgLyogSFRN
TEFuY2hvckVsZW1lbnRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxBbmNob3JFbGVtZW50
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDFGOUI3RjI3MEU2NzFB
MDA2MTdFQjYgLyogU1ZHRWxlbWVudElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRWxlbWVu
dElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QyMEVEM0EyNzg3OEZG
QjAwMzhCRTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1ZXVlZFZp
ZGVvT3V0cHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMjBFRDNCMjc4NzhG
RkIwMDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFF1ZXVlZFZpZGVvT3V0cHV0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDIy
NUMwOTFDNDZGQkY0MDAxNDA3NjEgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVOU1VSTFNlc3Npb24ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMjI1QzBBMUM0NkZCRjQwMDE0MDc2MSAvKiBX
ZWJDb3JlTlNVUkxTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkNvcmVOU1VSTFNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QyN0FF
NEUyMkE5ODY4NzAwOTQ3RkY5IC8qIEltYWdlUm90YXRpb25TZXNzaW9uVlQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW1hZ2VSb3RhdGlvblNlc3Npb25WVC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzA2MTcsNiArMzA2MjEsOCBAQAogCQkJCUNEQzhCNUE1MTgwNDc0RjcwMDE2RTY4NSAv
KiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggKi8sCiAJCQkJQ0RDOEI1QTQxODA0NzRGNzAw
MTZFNjg1IC8qIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gKi8sCiAJCQkJN0EyOUY1NzEx
OEM2OTUxNDAwNEQwRjgxIC8qIE91dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCAqLywKKwkJ
CQlDRDIwRUQzQTI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQuaCAqLywKKwkJ
CQlDRDIwRUQzQjI3ODc4RkZCMDAzOEJFNDQgLyogUXVldWVkVmlkZW9PdXRwdXQubW0gKi8sCiAJ
CQkJQ0RGOTk0RkEyNEMxMkE2QTAwMkVBMDYyIC8qIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
aCAqLywKIAkJCQlDREY5OTRGQjI0QzEyQTZBMDAyRUEwNjIgLyogU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbSAqLywKIAkJCQlDREM4QjVBOTE4MDQ3RkYxMDAxNkU2ODUgLyogU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMuaCAqLywKQEAgLTM2NTg1LDYgKzM2NTkxLDcgQEAKIAkJCQlFQjBG
QjcwRDI3MEQwQjJFMDBGNzgxMEQgLyogUHVzaFN1YnNjcmlwdGlvbk9wdGlvbnNJbml0LmggaW4g
SGVhZGVycyAqLywKIAkJCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUY1OTQxRURGNjlEMzAwNDEwRDI3IC8qIFF1YWxp
ZmllZE5hbWVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QyMEVEM0MyNzg3OEZGQjAwMzhC
RTQ0IC8qIFF1ZXVlZFZpZGVvT3V0cHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTVFMzFGNDFF
MENCMEI1MDA0QjM3MUMgLyogUXVpY2tMb29rLmggaW4gSGVhZGVycyAqLywKIAkJCQk5QkFFRTky
QzIyMzg4QTdEMDA0MTU3QTkgLyogUXVpcmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlFMzcx
NzEzNzM2QTY2MDBCOUU5MTkgLyogUXVvdGVkUHJpbnRhYmxlLmggaW4gSGVhZGVycyAqLywKQEAg
LTM4NTY5LDYgKzM4NTc2LDcgQEAKIAkJCQlBQTEyREY0OTE3NDNERjgzMDA0REFGREYgLyogUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXplckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RBMjlB
MzAxQ0JGNzRENDAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0RBMjlBMTYxQ0JEQTU2QzAwOTAxQ0NGIC8qIFBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNEMjBFRDNEMjc4NzhGRkIw
MDM4QkU0NCAvKiBRdWV1ZWRWaWRlb091dHB1dC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQxOTI0
MjQ5MjEyN0I5M0UwMDYzNEZDRiAvKiBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2VDb2NvYS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTA3MUMwMDRCMjcwQjg2NDkwMEQwMjdDNyAvKiBSZXBsYXlL
aXRDYXB0dXJlU291cmNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMyQjFBRUMyMjM5N0VCQzAw
QjkxQ0Y3IC8qIFJlc291cmNlUmVzcG9uc2VDb2NvYS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKaW5kZXggOTQ4ZDFkNDE3NDhlOWZhZDI5
MjJjYWY3MGNlYjY2OGI0ODhlOTk0MS4uMDc3Y2E1ZDY5ZTNkNDM3ZDZhMWUxYmRjZDczMjFkYTY2
OTlmZjFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCkBAIC02
MDMsMTMgKzYwMywxNiBAQCB1bnNpZ25lZCBIVE1MVmlkZW9FbGVtZW50OjpyZXF1ZXN0VmlkZW9G
cmFtZUNhbGxiYWNrKFJlZjxWaWRlb0ZyYW1lUmVxdWVzdENhbGxiYQogCiB2b2lkIEhUTUxWaWRl
b0VsZW1lbnQ6OmNhbmNlbFZpZGVvRnJhbWVDYWxsYmFjayh1bnNpZ25lZCBpZGVudGlmaWVyKQog
ewotICAgIGF1dG8gaW5kZXggPSBtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5maW5kTWF0Y2hpbmcoW2lk
ZW50aWZpZXJdKGF1dG8mIHJlcXVlc3QpIHsgcmV0dXJuIHJlcXVlc3QtPmlkZW50aWZpZXIgPT0g
aWRlbnRpZmllcjsgfSk7Ci0gICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1
cm47Ci0gICAgaWYgKG1faXNSdW5uaW5nVmlkZW9GcmFtZVJlcXVlc3RzKSB7Ci0gICAgICAgIG1f
dmlkZW9GcmFtZVJlcXVlc3RzW2luZGV4XS0+Y2FuY2VsbGVkID0gdHJ1ZTsKKyAgICAvLyBTZWFy
Y2ggZmlyc3QgdGhlIHJlcXVlc3RzIGN1cnJlbnRseSBiZWluZyBzZXJ2aWNlZCwgYW5kIG1hcmsg
dGhlbSBhcyBjYW5jZWxsZWQgaWYgZm91bmQuCisgICAgYXV0byBpbmRleCA9IG1fc2VydmljZWRW
aWRlb0ZyYW1lUmVxdWVzdHMuZmluZE1hdGNoaW5nKFtpZGVudGlmaWVyXShhdXRvJiByZXF1ZXN0
KSB7IHJldHVybiByZXF1ZXN0LT5pZGVudGlmaWVyID09IGlkZW50aWZpZXI7IH0pOworICAgIGlm
IChpbmRleCAhPSBub3RGb3VuZCkgeworICAgICAgICBtX3NlcnZpY2VkVmlkZW9GcmFtZVJlcXVl
c3RzW2luZGV4XS0+Y2FuY2VsbGVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwor
ICAgIGluZGV4ID0gbV92aWRlb0ZyYW1lUmVxdWVzdHMuZmluZE1hdGNoaW5nKFtpZGVudGlmaWVy
XShhdXRvJiByZXF1ZXN0KSB7IHJldHVybiByZXF1ZXN0LT5pZGVudGlmaWVyID09IGlkZW50aWZp
ZXI7IH0pOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOwogICAg
IG1fdmlkZW9GcmFtZVJlcXVlc3RzLnJlbW92ZShpbmRleCk7CiAKICAgICBpZiAobV92aWRlb0Zy
YW1lUmVxdWVzdHMuaXNFbXB0eSgpICYmIHBsYXllcigpKQpAQCAtNjMxLDYgKzYzNCwxMiBAQCB2
b2lkIEhUTUxWaWRlb0VsZW1lbnQ6OnNlcnZpY2VSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrcyhS
ZWR1Y2VkUmVzb2x1dGlvblNlY29uZAogICAgIGlmICghcGxheWVyKCkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIC8vIElmIHRoZSByZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrIGlzIGNhbGxlZCBi
ZWZvcmUgdGhlIHJlYWR5U3RhdGUgPj0gSGF2ZUN1cnJlbnREYXRhLAorICAgIC8vIGNhbGxzIHRv
IGNyZWF0ZUltYWdlQml0bWFwKCkgd2l0aCB0aGlzIGVsZW1lbnQgd2lsbCByZXN1bHQgaW4gYSBm
YWlsZWQgcHJvbWlzZS4gRGVsYXkKKyAgICAvLyBub3RpZnlpbmcgdGhlIGNhbGxiYWNrIHVudGls
IHdlIHJlYWNoIHRoZSBIYXZlQ3VycmVudERhdGEgc3RhdGUuCisgICAgaWYgKHJlYWR5U3RhdGUo
KSA8IEhBVkVfQ1VSUkVOVF9EQVRBKQorICAgICAgICByZXR1cm47CisKICAgICBhdXRvIHZpZGVv
RnJhbWVNZXRhZGF0YSA9IHBsYXllcigpLT52aWRlb0ZyYW1lTWV0YWRhdGEoKTsKICAgICBpZiAo
IXZpZGVvRnJhbWVNZXRhZGF0YSB8fCAhZG9jdW1lbnQoKS5kb21XaW5kb3coKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNjM5LDIwICs2NDgsMTQgQEAgdm9pZCBIVE1MVmlkZW9FbGVtZW50OjpzZXJ2
aWNlUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja3MoUmVkdWNlZFJlc29sdXRpb25TZWNvbmQKIAog
ICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKIAotICAgIC8vIFdlIHN0b3JlIHRoZSBz
aXplIGJlZm9yZSBjYWxsaW5nIGNhbGxiYWNrcyBhcyB3ZSBkbyBub3Qgd2FudCB0byBjYWxsIG5l
d2x5IGFkZGVkIGNhbGxiYWNrcy4KLSAgICBhdXRvIGNhbGxiYWNrQ291bnQgPSBtX3ZpZGVvRnJh
bWVSZXF1ZXN0cy5zaXplKCk7Ci0KLSAgICBtX2lzUnVubmluZ1ZpZGVvRnJhbWVSZXF1ZXN0cyA9
IHRydWU7Ci0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNhbGxiYWNrQ291bnQ7
ICsraW5kZXgpIHsKLSAgICAgICAgYXV0byYgcmVxdWVzdCA9IG1fdmlkZW9GcmFtZVJlcXVlc3Rz
W2luZGV4XTsKKyAgICBtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5zd2FwKG1fc2VydmljZWRWaWRlb0Zy
YW1lUmVxdWVzdHMpOworICAgIGZvciAoYXV0byYgcmVxdWVzdCA6IG1fc2VydmljZWRWaWRlb0Zy
YW1lUmVxdWVzdHMpIHsKICAgICAgICAgaWYgKCFyZXF1ZXN0LT5jYW5jZWxsZWQpIHsKICAgICAg
ICAgICAgIHJlcXVlc3QtPmNhbGxiYWNrLT5oYW5kbGVFdmVudChzdGQ6OnJvdW5kKG5vdy5taWxs
aXNlY29uZHMoKSksICp2aWRlb0ZyYW1lTWV0YWRhdGEpOwogICAgICAgICAgICAgcmVxdWVzdC0+
Y2FuY2VsbGVkID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KLSAgICBtX2lzUnVubmluZ1ZpZGVv
RnJhbWVSZXF1ZXN0cyA9IGZhbHNlOwotCi0gICAgbV92aWRlb0ZyYW1lUmVxdWVzdHMucmVtb3Zl
QWxsTWF0Y2hpbmcoW10oYXV0byYgY2FsbGJhY2spIHsgcmV0dXJuIGNhbGxiYWNrLT5jYW5jZWxs
ZWQ7IH0pOworICAgIG1fc2VydmljZWRWaWRlb0ZyYW1lUmVxdWVzdHMuY2xlYXIoKTsKIAogICAg
IGlmIChtX3ZpZGVvRnJhbWVSZXF1ZXN0cy5pc0VtcHR5KCkgJiYgcGxheWVyKCkpCiAgICAgICAg
IHBsYXllcigpLT5zdG9wVmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCmluZGV4IDg1NmFkZWE3OGZiNzM5OGQ4ZmI0NWY0NDhh
MzU5MWJkYTU1Zjk3MmMuLmY4ZDNiNDAzMmQ2MDI0NGI1NDAxNzgzM2VhZmEwMDY5MDRkMWI0MTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCkBAIC0xNzIsOCArMTcyLDgg
QEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjYW5jZWxsZWQgeyBmYWxzZSB9OwogICAgIH07CiAg
ICAgVmVjdG9yPFVuaXF1ZVJlZjxWaWRlb0ZyYW1lUmVxdWVzdD4+IG1fdmlkZW9GcmFtZVJlcXVl
c3RzOworICAgIFZlY3RvcjxVbmlxdWVSZWY8VmlkZW9GcmFtZVJlcXVlc3Q+PiBtX3NlcnZpY2Vk
VmlkZW9GcmFtZVJlcXVlc3RzOwogICAgIHVuc2lnbmVkIG1fbmV4dFZpZGVvRnJhbWVSZXF1ZXN0
SW5kZXggeyAwIH07Ci0gICAgYm9vbCBtX2lzUnVubmluZ1ZpZGVvRnJhbWVSZXF1ZXN0cyB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgK
aW5kZXggMWU2NTc1NzI0NjU0OTczNDNjZGUyYTI0ZDhmMGRjNmI0ZTAyNjdlMS4uYzQwOTg1Mzgz
YjNiNTJiOGEyZmM5YTdhNDU4NDk5ZWQ2MDhiMDZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaApA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPENvcmVNZWRpYS9DTVRpbWUuaD4KICNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9PYnNlcnZlci5oPgogCiBPQkpDX0NMQVNTIEFWQXNzZXRJbWFnZUdlbmVyYXRvcjsKIE9CSkNf
Q0xBU1MgQVZBc3NldFRyYWNrOwpAQCAtNjcsNiArNjgsNyBAQCBjbGFzcyBJbmJhbmRNZXRhZGF0
YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3Mg
TWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakM7CiBjbGFzcyBQaXhlbEJ1ZmZlckNvbmZvcm1lckNW
OworY2xhc3MgUXVldWVkVmlkZW9PdXRwdXQ7CiBjbGFzcyBGcmFnbWVudGVkU2hhcmVkQnVmZmVy
OwogY2xhc3MgVmlkZW9MYXllck1hbmFnZXJPYmpDOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVB
VkZPYmpDOwpAQCAtMzQ3LDcgKzM0OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFZpZGVv
RnJhbWVNZXRhZGF0YUdhdGhlcmluZygpIGZpbmFsOwogICAgIHZvaWQgc3RvcFZpZGVvRnJhbWVN
ZXRhZGF0YUdhdGhlcmluZygpIGZpbmFsOwogICAgIHN0ZDo6b3B0aW9uYWw8VmlkZW9GcmFtZU1l
dGFkYXRhPiB2aWRlb0ZyYW1lTWV0YWRhdGEoKSBmaW5hbCB7IHJldHVybiBzdGQ6OmV4Y2hhbmdl
KG1fdmlkZW9GcmFtZU1ldGFkYXRhLCB7IH0pOyB9Ci0gICAgdm9pZCBjaGVja05ld1ZpZGVvRnJh
bWVNZXRhZGF0YShDTVRpbWUpOworICAgIHZvaWQgY2hlY2tOZXdWaWRlb0ZyYW1lTWV0YWRhdGEo
KTsKIAogICAgIFJldGFpblB0cjxBVlVSTEFzc2V0PiBtX2F2QXNzZXQ7CiAgICAgUmV0YWluUHRy
PEFWUGxheWVyPiBtX2F2UGxheWVyOwpAQCAtMzY3LDcgKzM2OSw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogICAgIFJldGFpblB0cjxBVkFzc2V0SW1hZ2VHZW5lcmF0b3I+IG1faW1hZ2VHZW5lcmF0
b3I7Ci0gICAgUmV0YWluUHRyPEFWUGxheWVySXRlbVZpZGVvT3V0cHV0PiBtX3ZpZGVvT3V0cHV0
OworICAgIFJlZlB0cjxRdWV1ZWRWaWRlb091dHB1dD4gbV92aWRlb091dHB1dDsKICAgICBSZXRh
aW5QdHI8V2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZT4gbV92aWRlb091dHB1dERlbGVnYXRlOwogICAg
IFJldGFpblB0cjxDVlBpeGVsQnVmZmVyUmVmPiBtX2xhc3RQaXhlbEJ1ZmZlcjsKICAgICBSZWZQ
dHI8TmF0aXZlSW1hZ2U+IG1fbGFzdEltYWdlOwpAQCAtNDY0LDYgKzQ2Niw4IEBAIHByaXZhdGU6
CiAgICAgc3RkOjpvcHRpb25hbDxWaWRlb0ZyYW1lTWV0YWRhdGE+IG1fdmlkZW9GcmFtZU1ldGFk
YXRhOwogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxOU1RpbWVJbnRlcnZhbD4gbV9jYWNoZWRT
ZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lOwogICAgIG11dGFibGUgc3RkOjpvcHRp
b25hbDxOU1RpbWVJbnRlcnZhbD4gbV9jYWNoZWRMaXZlVXBkYXRlSW50ZXJ2YWw7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPE9ic2VydmVyPHZvaWQoKT4+IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2Vy
dmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxPYnNlcnZlcjx2b2lkKCk+PiBtX3dhaXRGb3JWaWRl
b091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2VPYnNlcnZlcjsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCmluZGV4IGMwNjdjY2U4MDY4NmY3YTFiYzU0MTRiYWY3N2Y3NTI1MmJmMzQyYzcu
LmZmMDc4MTFkYjRlMjkxNmQ5NDA2YWI1YTE2MDQ4NjU3MTNhMzY4ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5tbQpAQCAtNTgsNiArNTgsNyBAQAogI2ltcG9ydCAiUGxhdGZvcm1TY3JlZW4uaCIK
ICNpbXBvcnQgIlBsYXRmb3JtVGV4dFRyYWNrLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVRpbWVSYW5n
ZXMuaCIKKyNpbXBvcnQgIlF1ZXVlZFZpZGVvT3V0cHV0LmgiCiAjaW1wb3J0ICJSdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaCIKICNpbXBvcnQgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2lt
cG9ydCAiU2VjdXJpdHlPcmlnaW4uaCIKQEAgLTIwNSwxNiArMjA2LDYgQEAgLSAoaWQpaW5pdFdp
dGhQbGF5ZXI6KFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4mJilw
bGF5ZXI7CiAtIChCT09MKXJlc291cmNlTG9hZGVyOihBVkFzc2V0UmVzb3VyY2VMb2FkZXIgKily
ZXNvdXJjZUxvYWRlciBzaG91bGRXYWl0Rm9yTG9hZGluZ09mUmVxdWVzdGVkUmVzb3VyY2U6KEFW
QXNzZXRSZXNvdXJjZUxvYWRpbmdSZXF1ZXN0ICopbG9hZGluZ1JlcXVlc3Q7CiBAZW5kCiAKLUBp
bnRlcmZhY2UgV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSA6IE5TT2JqZWN0PEFWUGxheWVySXRlbU91
dHB1dFB1bGxEZWxlZ2F0ZT4gewotICAgIEJpbmFyeVNlbWFwaG9yZSBtX3NlbWFwaG9yZTsKLX0K
LS0gKGlkKWluaXRXaXRoUGxheWVyOihXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakM+JiYpcGxheWVyOwotLSAodm9pZClvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOihB
VlBsYXllckl0ZW1PdXRwdXQgKilzZW5kZXI7Ci0tICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1
c2hlZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0OwotCi1AcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHkpIEJpbmFyeVNlbWFwaG9yZSYgc2VtYXBob3JlOwotQGVuZAotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBzdGF0aWMgU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKEFW
UGxheWVyVGltZUNvbnRyb2xTdGF0dXMgZW51bWVyYXRpb25WYWx1ZSkKIHsKQEAgLTI2MSwxNiAr
MjUyLDYgQEAgc3RhdGljIGRpc3BhdGNoX3F1ZXVlX3QgZ2xvYmFsTG9hZGVyRGVsZWdhdGVRdWV1
ZSgpCiAgICAgcmV0dXJuIGdsb2JhbFF1ZXVlOwogfQogCi1zdGF0aWMgZGlzcGF0Y2hfcXVldWVf
dCBnbG9iYWxQdWxsRGVsZWdhdGVRdWV1ZSgpCi17Ci0gICAgc3RhdGljIGRpc3BhdGNoX3F1ZXVl
X3QgZ2xvYmFsUXVldWU7Ci0gICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0g
ICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICBnbG9iYWxRdWV1ZSA9IGRp
c3BhdGNoX3F1ZXVlX2NyZWF0ZSgiV2ViQ29yZUFWRlB1bGxEZWxlZ2F0ZSBxdWV1ZSIsIERJU1BB
VENIX1FVRVVFX1NFUklBTCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGdsb2JhbFF1ZXVlOwotfQot
CiBzdGF0aWMgdm9pZCByZWdpc3RlckZvcm1hdFJlYWRlcklmTmVjZXNzYXJ5KCkKIHsKICNpZiBF
TkFCTEUoV0VCTV9GT1JNQVRfUkVBREVSKQpAQCAtNDY5LDcgKzQ1MCw4IEBAIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6On5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDKCkKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX3Jlc291cmNlTG9hZGVyTWFwKQogICAgICAg
ICBwYWlyLnZhbHVlLT5pbnZhbGlkYXRlKCk7CiAKLSAgICBbbV92aWRlb091dHB1dCBzZXREZWxl
Z2F0ZTpuaWwgcXVldWU6MF07CisgICAgaWYgKG1fdmlkZW9PdXRwdXQpCisgICAgICAgIG1fdmlk
ZW9PdXRwdXQtPmludmFsaWRhdGUoKTsKIAogICAgIGlmIChtX3ZpZGVvTGF5ZXIpCiAgICAgICAg
IGRlc3Ryb3lWaWRlb0xheWVyKCk7CkBAIC03MDIsNyArNjg0LDcgQEAgYm9vbCBNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkgY29uc3QK
ICAgICBpZiAoY3VycmVudFJlbmRlcmluZ01vZGUoKSA9PSBNZWRpYVJlbmRlcmluZ01vZGU6Ok1l
ZGlhUmVuZGVyaW5nVG9MYXllcikKICAgICAgICAgcmV0dXJuIG1fY2FjaGVkSXNSZWFkeUZvckRp
c3BsYXk7CiAKLSAgICBpZiAobV92aWRlb091dHB1dCAmJiAobV9sYXN0UGl4ZWxCdWZmZXIgfHwg
W21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpbbV9hdlBsYXllckl0
ZW0gY3VycmVudFRpbWVdXSkpCisgICAgaWYgKG1fdmlkZW9PdXRwdXQgJiYgKG1fbGFzdFBpeGVs
QnVmZmVyIHx8IG1fdmlkZW9PdXRwdXQtPmhhc0ltYWdlRm9yVGltZShjdXJyZW50TWVkaWFUaW1l
KCkpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gbV92aWRlb0ZyYW1lSGFz
RHJhd247CkBAIC0xNDQ0LDM0ICsxNDI2LDMwIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1QYXVzZWQoKSBjb25zdAogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnN0YXJ0VmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5n
KCkKIHsKLSAgICBBU1NFUlQoIW1fdmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nT2JzZXJ2ZXIg
fHwgbV9hdlBsYXllcik7Ci0gICAgbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSA9IHRy
dWU7CisgICAgLy8gcmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjaygpIGNhcmVzIGFib3V0IHRoZSAv
bmV4dC8gYXZhaWxhYmxlIGZyYW1lLiBQdWxsIHRoZSBjdXJyZW50IGZyYW1lIGZyb20KKyAgICAv
LyB0aGUgUXVldWVkVmlkZW9PdXRwdXQgc28gcGFpbnRzIG9mIHRoZSBjdXJyZW50IGZyYW1lIHN1
Y2NlZWQ7CisgICAgdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCk7CiAKLSAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHVzZSBhIENBRGlzcGxheUxpbmsgdG8gZ2V0IHVwZGF0ZXMgb24gcmVuZGVyaW5nLCBm
b3Igbm93IHdlIGVtdWxhdGUgd2l0aCBhZGRQZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVydmFs
LgotICAgIG1fdmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nT2JzZXJ2ZXIgPSBbbV9hdlBsYXll
ciBhZGRQZXJpb2RpY1RpbWVPYnNlcnZlckZvckludGVydmFsOlBBTDo6Q01UaW1lTWFrZSgxLCA2
MCkgcXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9XShDTVRpbWUgY3VycmVudFRpbWUpIHsKLSAgICAgICAgZW5zdXJl
T25NYWluVGhyZWFkKFt3ZWFrVGhpcywgY3VycmVudFRpbWVdIHsKLSAgICAgICAgICAgIGlmICh3
ZWFrVGhpcykKLSAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+Y2hlY2tOZXdWaWRlb0ZyYW1lTWV0
YWRhdGEoY3VycmVudFRpbWUpOwotICAgICAgICB9KTsKLSAgICB9XTsKKyAgICBtX2N1cnJlbnRJ
bWFnZUNoYW5nZWRPYnNlcnZlciA9IFdURjo6bWFrZVVuaXF1ZTxPYnNlcnZlcjx2b2lkKCk+Pihb
dGhpc10geworICAgICAgICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciA9IG51bGxwdHI7
CisgICAgICAgIGNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCk7CisgICAgfSk7CisKKyAgICBp
ZiAobV92aWRlb091dHB1dCkKKyAgICAgICAgbV92aWRlb091dHB1dC0+YWRkQ3VycmVudEltYWdl
Q2hhbmdlZE9ic2VydmVyKCptX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlcik7CisKKyAgICBt
X2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhID0gdHJ1ZTsKIH0KIAotdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjaGVja05ld1ZpZGVvRnJhbWVNZXRhZGF0YShD
TVRpbWUgY3VycmVudFRpbWUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OmNoZWNrTmV3VmlkZW9GcmFtZU1ldGFkYXRhKCkKIHsKLSAgICBpZiAoIXVwZGF0ZUxhc3RQ
aXhlbEJ1ZmZlcigpKQorICAgIGlmICghbV9pc0dhdGhlcmluZ1ZpZGVvRnJhbWVNZXRhZGF0YSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgVmlkZW9GcmFtZU1ldGFkYXRhIG1ldGFkYXRhOwotICAg
IG1ldGFkYXRhLndpZHRoID0gbV9jYWNoZWRQcmVzZW50YXRpb25TaXplLndpZHRoKCk7Ci0gICAg
bWV0YWRhdGEuaGVpZ2h0ID0gbV9jYWNoZWRQcmVzZW50YXRpb25TaXplLmhlaWdodCgpOwotICAg
IG1ldGFkYXRhLnByZXNlbnRlZEZyYW1lcyA9ICsrbV9zYW1wbGVDb3VudDsKLSAgICBtZXRhZGF0
YS5tZWRpYVRpbWUgPSBQQUw6OkNNVGltZUdldFNlY29uZHMoY3VycmVudFRpbWUpOwotICAgIC8v
IEZJWE1FOiBwcmVzZW50YXRpb25UaW1lIGFuZCBleHBlY3RlZERpc3BsYXlUaW1lIG1pZ2h0IG5v
dCBhbHdheXMgaGF2ZSB0aGUgc2FtZSB2YWx1ZSwgd2Ugc2hvdWxkIHRyeSBnZXR0aW5nIG1vcmUg
cHJlY2lzZSB2YWx1ZXMuCi0gICAgbWV0YWRhdGEucHJlc2VudGF0aW9uVGltZSA9IE1vbm90b25p
Y1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpOwotICAgIG1ldGFkYXRh
LmV4cGVjdGVkRGlzcGxheVRpbWUgPSBtZXRhZGF0YS5wcmVzZW50YXRpb25UaW1lOworICAgIGlm
ICghdXBkYXRlTGFzdFBpeGVsQnVmZmVyKCkgJiYgIW1fdmlkZW9GcmFtZU1ldGFkYXRhKQorICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3ZpZGVvRnJhbWVNZXRhZGF0YSA9IG1ldGFkYXRhOwotICAg
IHBsYXllcigpLT5vbk5ld1ZpZGVvRnJhbWVNZXRhZGF0YShXVEZNb3ZlKG1ldGFkYXRhKSwgbV9s
YXN0UGl4ZWxCdWZmZXIuZ2V0KCkpOworICAgIHBsYXllcigpLT5vbk5ld1ZpZGVvRnJhbWVNZXRh
ZGF0YShXVEZNb3ZlKCptX3ZpZGVvRnJhbWVNZXRhZGF0YSksIG1fbGFzdFBpeGVsQnVmZmVyLmdl
dCgpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdG9w
VmlkZW9GcmFtZU1ldGFkYXRhR2F0aGVyaW5nKCkKQEAgLTI1MTgsMTcgKzI0OTYsMTcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVWaWRlb091dHB1dCgp
CiAgICAgaWYgKCFtX2F2UGxheWVySXRlbSB8fCBtX3ZpZGVvT3V0cHV0KQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3ZpZGVvT3V0cHV0ID0gYWRvcHROUyhbUEFMOjphbGxvY0FWUGxheWVySXRl
bVZpZGVvT3V0cHV0SW5zdGFuY2UoKSBpbml0V2l0aFBpeGVsQnVmZmVyQXR0cmlidXRlczpuaWxd
KTsKKyAgICBtX3ZpZGVvT3V0cHV0ID0gUXVldWVkVmlkZW9PdXRwdXQ6OmNyZWF0ZShtX2F2UGxh
eWVySXRlbS5nZXQoKSwgbV9hdlBsYXllci5nZXQoKSk7CiAgICAgQVNTRVJUKG1fdmlkZW9PdXRw
dXQpOwogICAgIGlmICghbV92aWRlb091dHB1dCkgewogICAgICAgICBFUlJPUl9MT0coTE9HSURF
TlRJRklFUiwgIi1bQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQgaW5pdFdpdGhQaXhlbEJ1ZmZlckF0
dHJpYnV0ZXM6XSBmYWlsZWQhIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKG1f
Y3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyKQorICAgICAgICBtX3ZpZGVvT3V0cHV0LT5hZGRD
dXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoKm1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVy
KTsKIAotICAgIG1fdmlkZW9PdXRwdXREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJDb3JlQVZGUHVs
bERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBsYXllcjoqdGhpc10pOwotICAgIFttX3ZpZGVvT3V0
cHV0IHNldERlbGVnYXRlOm1fdmlkZW9PdXRwdXREZWxlZ2F0ZS5nZXQoKSBxdWV1ZTpnbG9iYWxQ
dWxsRGVsZWdhdGVRdWV1ZSgpXTsKLQotICAgIFttX2F2UGxheWVySXRlbSBhZGRPdXRwdXQ6bV92
aWRlb091dHB1dC5nZXQoKV07CisgICAgaWYgKG1fd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRh
V2lsbENoYW5nZU9ic2VydmVyKQorICAgICAgICBtX3ZpZGVvT3V0cHV0LT5hZGRDdXJyZW50SW1h
Z2VDaGFuZ2VkT2JzZXJ2ZXIoKm1fd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5n
ZU9ic2VydmVyKTsKIAogICAgIHNldE5lZWRzUmVuZGVyaW5nTW9kZUNoYW5nZWQoKTsKIH0KQEAg
LTI1MzgsMTkgKzI1MTYsMTkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpkZXN0cm95VmlkZW9PdXRwdXQoKQogICAgIGlmICghbV92aWRlb091dHB1dCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKG1fYXZQbGF5ZXJJdGVtKQotICAgICAgICBbbV9hdlBsYXll
ckl0ZW0gcmVtb3ZlT3V0cHV0Om1fdmlkZW9PdXRwdXQuZ2V0KCldOwotCiAgICAgSU5GT19MT0co
TE9HSURFTlRJRklFUik7CiAKLSAgICBtX3ZpZGVvT3V0cHV0ID0gMDsKKyAgICBtX3ZpZGVvT3V0
cHV0LT5pbnZhbGlkYXRlKCk7CisgICAgbV92aWRlb091dHB1dCA9IG51bGxwdHI7CisKKyAgICBt
X3ZpZGVvRnJhbWVNZXRhZGF0YSA9IHsgfTsKIAogICAgIHNldE5lZWRzUmVuZGVyaW5nTW9kZUNo
YW5nZWQoKTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1
cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKQogewotICAgIGlmICghbV9hdlBsYXllckl0ZW0gfHwgcmVh
ZHlTdGF0ZSgpIDwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVDdXJyZW50RGF0YSkKKyAg
ICBpZiAoIW1fYXZQbGF5ZXJJdGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBtX2hh
dmVCZWVuQXNrZWRUb1BhaW50ID0gdHJ1ZTsKQEAgLTI1NTksMTIgKzI1MzcsMjUgQEAgYm9vbCBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjp1cGRhdGVMYXN0UGl4ZWxCdWZmZXIo
KQogICAgICAgICBjcmVhdGVWaWRlb091dHB1dCgpOwogICAgIEFTU0VSVChtX3ZpZGVvT3V0cHV0
KTsKIAotICAgIENNVGltZSBjdXJyZW50VGltZSA9IFttX2F2UGxheWVySXRlbSBjdXJyZW50VGlt
ZV07CisgICAgYXV0byBjdXJyZW50VGltZSA9IGN1cnJlbnRNZWRpYVRpbWUoKTsKIAotICAgIGlm
ICghW21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpjdXJyZW50VGlt
ZV0pCisgICAgaWYgKCFtX3ZpZGVvT3V0cHV0LT5oYXNJbWFnZUZvclRpbWUoY3VycmVudFRpbWUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2xhc3RQaXhlbEJ1ZmZlciA9IGFkb3B0
Q0YoW21fdmlkZW9PdXRwdXQgY29weVBpeGVsQnVmZmVyRm9ySXRlbVRpbWU6Y3VycmVudFRpbWUg
aXRlbVRpbWVGb3JEaXNwbGF5Om5pbF0pOworICAgIGF1dG8gZW50cnkgPSBtX3ZpZGVvT3V0cHV0
LT50YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShjdXJyZW50VGltZSk7CisgICAgbV9sYXN0UGl4
ZWxCdWZmZXIgPSBXVEZNb3ZlKGVudHJ5LnBpeGVsQnVmZmVyKTsKKworICAgIGlmIChtX2lzR2F0
aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhKSB7CisgICAgICAgIGF1dG8gcHJlc2VudGF0aW9uVGlt
ZSA9IE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kcygpIC0g
KGN1cnJlbnRUaW1lIC0gZW50cnkuZGlzcGxheVRpbWUpLnRvRG91YmxlKCk7CisgICAgICAgIG1f
dmlkZW9GcmFtZU1ldGFkYXRhID0geworICAgICAgICAgICAgLndpZHRoID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KENWUGl4ZWxCdWZmZXJHZXRXaWR0aChtX2xhc3RQaXhlbEJ1ZmZlci5nZXQoKSkp
LAorICAgICAgICAgICAgLmhlaWdodCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDVlBpeGVsQnVm
ZmVyR2V0SGVpZ2h0KG1fbGFzdFBpeGVsQnVmZmVyLmdldCgpKSksCisgICAgICAgICAgICAucHJl
c2VudGVkRnJhbWVzID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCsrbV9zYW1wbGVDb3VudCksCisg
ICAgICAgICAgICAubWVkaWFUaW1lID0gZW50cnkuZGlzcGxheVRpbWUudG9Eb3VibGUoKSwKKyAg
ICAgICAgICAgIC5wcmVzZW50YXRpb25UaW1lID0gcHJlc2VudGF0aW9uVGltZSwKKyAgICAgICAg
ICAgIC5leHBlY3RlZERpc3BsYXlUaW1lID0gcHJlc2VudGF0aW9uVGltZSwKKyAgICAgICAgfTsK
KyAgICB9CiAKICAgICBpZiAobV9pbWFnZVJvdGF0aW9uU2Vzc2lvbikKICAgICAgICAgbV9sYXN0
UGl4ZWxCdWZmZXIgPSBtX2ltYWdlUm90YXRpb25TZXNzaW9uLT5yb3RhdGUobV9sYXN0UGl4ZWxC
dWZmZXIuZ2V0KCkpOwpAQCAtMjU4NCw3ICsyNTc1LDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjp2aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCkKICAgICBp
ZiAoIW1fdmlkZW9PdXRwdXQpCiAgICAgICAgIGNyZWF0ZVZpZGVvT3V0cHV0KCk7CiAKLSAgICBy
ZXR1cm4gW21fdmlkZW9PdXRwdXQgaGFzTmV3UGl4ZWxCdWZmZXJGb3JJdGVtVGltZTpbbV9hdlBs
YXllckl0ZW0gY3VycmVudFRpbWVdXTsKKyAgICByZXR1cm4gbV92aWRlb091dHB1dC0+aGFzSW1h
Z2VGb3JUaW1lKFBBTDo6dG9NZWRpYVRpbWUoW21fYXZQbGF5ZXJJdGVtIGN1cnJlbnRUaW1lXSkp
OwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxh
c3RJbWFnZShVcGRhdGVUeXBlIHR5cGUpCkBAIC0yNjAyLDcgKzI1OTMsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnVwZGF0ZUxhc3RJbWFnZShVcGRhdGVUeXBl
IHR5cGUpCiAgICAgLy8gQ2FsbHMgdG8gY29weVBpeGVsQnVmZmVyRm9ySXRlbVRpbWU6aXRlbVRp
bWVGb3JEaXNwbGF5OiBtYXkgcmV0dXJuIG5pbCBpZiB0aGUgcGl4ZWwgYnVmZmVyCiAgICAgLy8g
Zm9yIHRoZSByZXF1ZXN0ZWQgdGltZSBoYXMgYWxyZWFkeSBiZWVuIHJldHJpZXZlZC4gSW4gdGhp
cyBjYXNlLCB0aGUgbGFzdCB2YWxpZCBpbWFnZSAoaWYgYW55KQogICAgIC8vIHNob3VsZCBiZSBk
aXNwbGF5ZWQuCi0gICAgaWYgKChtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhIHx8ICF1
cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSkgJiYgKG1fbGFzdEltYWdlIHx8ICFtX2xhc3RQaXhlbEJ1
ZmZlcikpCisgICAgaWYgKCF1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKSAmJiAobV9sYXN0SW1hZ2Ug
fHwgIW1fbGFzdFBpeGVsQnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3Bp
eGVsQnVmZmVyQ29uZm9ybWVyKSB7CkBAIC0yNjM3LDggKzI2MjgsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBhaW50V2l0aFZpZGVvT3V0cHV0KEdyYXBoaWNz
Q29udGV4dCYgYwogCiBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGl4ZWxCdWZmZXJGb3JDdXJyZW50VGltZSgpCiB7Ci0gICAg
aWYgKCFtX2lzR2F0aGVyaW5nVmlkZW9GcmFtZU1ldGFkYXRhKQotICAgICAgICB1cGRhdGVMYXN0
UGl4ZWxCdWZmZXIoKTsKKyAgICB1cGRhdGVMYXN0UGl4ZWxCdWZmZXIoKTsKIAogICAgIHJldHVy
biBtX2xhc3RQaXhlbEJ1ZmZlcjsKIH0KQEAgLTI2NjksNyArMjY1OSwxMSBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OndhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0
YVdpbGxDaGFuZ2UoKQogICAgIHN0ZDo6b3B0aW9uYWw8UnVuTG9vcDo6VGltZXI8TWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4+IHRpbWVvdXRUaW1lcjsKIAogICAgIGlmICghbV9y
dW5Mb29wTmVzdGluZ0xldmVsKSB7Ci0gICAgICAgIFttX3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3Rp
ZmljYXRpb25PZk1lZGlhRGF0YUNoYW5nZVdpdGhBZHZhbmNlSW50ZXJ2YWw6MF07CisgICAgICAg
IG1fd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZU9ic2VydmVyID0gV1RGOjpt
YWtlVW5pcXVlPE9ic2VydmVyPHZvaWQoKT4+KFt0aGlzLCBsb2dJZGVudGlmaWVyID0gTE9HSURF
TlRJRklFUl0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAobV9ydW5Mb29wTmVzdGluZ0xl
dmVsKQorICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5zdG9wKCk7CisgICAgICAgIH0p
OworICAgICAgICBtX3ZpZGVvT3V0cHV0LT5hZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIo
Km1fd2FpdEZvclZpZGVvT3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZU9ic2VydmVyKTsKIAogICAg
ICAgICB0aW1lb3V0VGltZXIuZW1wbGFjZShSdW5Mb29wOjptYWluKCksIFsmXSB7CiAgICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwpAQCAtMjY5NiwxNSArMjY5MCw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6d2FpdEZvclZpZGVvT3V0cHV0TWVk
aWFEYXRhV2lsbENoYW5nZSgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpCiB7Ci0gICAgaWYgKG1fcnVuTG9vcE5l
c3RpbmdMZXZlbCkgewotICAgICAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpCi0gICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuc3RvcCgpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbXSB7Ci0gICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLnN0b3AoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfQorICAgIGNoZWNr
TmV3VmlkZW9GcmFtZU1ldGFkYXRhKCk7CiB9CiAKICNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRF
RF9NRURJQSkKQEAgLTQwODksMzcgKzQwNzUsNCBAQCAtICh2b2lkKXJlc291cmNlTG9hZGVyOihB
VkFzc2V0UmVzb3VyY2VMb2FkZXIgKilyZXNvdXJjZUxvYWRlciBkaWRDYW5jZWxMb2FkaW5nUgog
CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJDb3JlQVZGUHVsbERlbGVnYXRlIHsKLSAgICBX
ZWFrUHRyPFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+IF9wbGF5
ZXI7Ci19Ci0KLUBzeW50aGVzaXplIHNlbWFwaG9yZSA9IG1fc2VtYXBob3JlOwotCi0tIChpZClp
bml0V2l0aFBsYXllcjooV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
PiYmKXBsYXllcgotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQot
ICAgICAgICByZXR1cm4gbmlsOwotICAgIF9wbGF5ZXIgPSBXVEZNb3ZlKHBsYXllcik7Ci0gICAg
cmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZTooQVZQ
bGF5ZXJJdGVtVmlkZW9PdXRwdXQgKilvdXRwdXQKLXsKLSAgICBVTlVTRURfUEFSQU0ob3V0cHV0
KTsKLSAgICBtX3NlbWFwaG9yZS5zaWduYWwoKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzZWxm
LCBzdHJvbmdTZWxmID0gUmV0YWluUHRyIHsgc2VsZiB9XSB7Ci0gICAgICAgIGlmIChfcGxheWVy
KQotICAgICAgICAgICAgX3BsYXllci0+b3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZSgpOwotICAg
IH0pOwotfQotCi0tICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hlZDooQVZQbGF5ZXJJdGVt
VmlkZW9PdXRwdXQgKilvdXRwdXQKLXsKLSAgICBVTlVTRURfUEFSQU0ob3V0cHV0KTsKLSAgICAv
LyBOby1vcC4KLX0KLQotQGVuZAotCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1F1ZXVlZFZpZGVvT3V0cHV0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1
ZWRWaWRlb091dHB1dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiYWYwZWExMWU1YzRmYmUzMjRkOTUyNWFkZjFi
ZGIzYzYzMzBhODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5oCkBAIC0wLDAgKzEs
OTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShWSURFTykKKwor
I2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvTWVk
aWFUaW1lLmg+CisjaW5jbHVkZSA8d3RmL09ic2VydmVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtI
YXNoU2V0Lmg+CisKK09CSkNfQ0xBU1MgQVZQbGF5ZXI7CitPQkpDX0NMQVNTIEFWUGxheWVySXRl
bTsKK09CSkNfQ0xBU1MgQVZQbGF5ZXJJdGVtVmlkZW9PdXRwdXQ7CitPQkpDX0NMQVNTIFdlYlF1
ZXVlZFZpZGVvT3V0cHV0RGVsZWdhdGU7CisKK3R5cGVkZWYgc3RydWN0IF9fQ1ZCdWZmZXIgKkNW
UGl4ZWxCdWZmZXJSZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUXVldWVkVmlk
ZW9PdXRwdXQKKyAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFF1ZXVlZFZpZGVvT3V0cHV0PgorICAg
ICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFF1ZXVlZFZpZGVvT3V0cHV0PiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxRdWV1ZWRWaWRlb091
dHB1dD4gY3JlYXRlKEFWUGxheWVySXRlbSosIEFWUGxheWVyKik7CisgICAgflF1ZXVlZFZpZGVv
T3V0cHV0KCk7CisKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKKyAgICBib29sIGhhc0ltYWdlRm9y
VGltZShjb25zdCBNZWRpYVRpbWUmKSBjb25zdDsKKworICAgIHN0cnVjdCBWaWRlb0ZyYW1lRW50
cnkgeworICAgICAgICBSZXRhaW5QdHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXI7Cisg
ICAgICAgIE1lZGlhVGltZSBkaXNwbGF5VGltZTsKKyAgICB9OworICAgIFZpZGVvRnJhbWVFbnRy
eSB0YWtlVmlkZW9GcmFtZUVudHJ5Rm9yVGltZShjb25zdCBNZWRpYVRpbWUmKTsKKworICAgIHZv
aWQgYWRkVmlkZW9GcmFtZUVudHJpZXMoVmVjdG9yPFZpZGVvRnJhbWVFbnRyeT4mJik7CisgICAg
dm9pZCBwdXJnZVZpZGVvRnJhbWVFbnRyaWVzKCk7CisKKyAgICB1c2luZyBDdXJyZW50SW1hZ2VD
aGFuZ2VkT2JzZXJ2ZXIgPSBPYnNlcnZlcjx2b2lkKCk+OworICAgIHZvaWQgYWRkQ3VycmVudElt
YWdlQ2hhbmdlZE9ic2VydmVyKGNvbnN0IEN1cnJlbnRJbWFnZUNoYW5nZWRPYnNlcnZlciYpOwor
CisgICAgdXNpbmcgSW1hZ2VNYXAgPSBzdGQ6Om1hcDxNZWRpYVRpbWUsIFJldGFpblB0cjxDVlBp
eGVsQnVmZmVyUmVmPj47CisKKyAgICB2b2lkIHJhdGVDaGFuZ2VkKGZsb2F0KTsKKworcHJpdmF0
ZToKKyAgICBRdWV1ZWRWaWRlb091dHB1dChBVlBsYXllckl0ZW0qLCBBVlBsYXllciopOworCisg
ICAgdm9pZCBwdXJnZUltYWdlc0JlZm9yZVRpbWUoY29uc3QgTWVkaWFUaW1lJik7CisgICAgdm9p
ZCBjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAgICB2b2lkIGNhbmNlbE5leHRJ
bWFnZVRpbWVPYnNlcnZlcigpOworICAgIHZvaWQgbmV4dEltYWdlVGltZVJlYWNoZWQoKTsKKwor
ICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW0+IG1fcGxheWVySXRlbTsKKyAgICBSZXRhaW5QdHI8
QVZQbGF5ZXI+IG1fcGxheWVyOworICAgIFJldGFpblB0cjxXZWJRdWV1ZWRWaWRlb091dHB1dERl
bGVnYXRlPiBtX2RlbGVnYXRlOworICAgIFJldGFpblB0cjxBVlBsYXllckl0ZW1WaWRlb091dHB1
dD4gbV92aWRlb091dHB1dDsKKyAgICBSZXRhaW5QdHI8aWQ+IG1fdmlkZW9UaW1lYmFzZU9ic2Vy
dmVyOworICAgIFJldGFpblB0cjxpZD4gbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyOworCisg
ICAgSW1hZ2VNYXAgbV92aWRlb0ZyYW1lczsKKyAgICBXZWFrSGFzaFNldDxDdXJyZW50SW1hZ2VD
aGFuZ2VkT2JzZXJ2ZXI+IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVyczsKKworICAgIGJv
b2wgbV9wYXVzZWQgeyB0cnVlIH07Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlk
ZW9PdXRwdXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9RdWV1ZWRWaWRlb091dHB1dC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYmMwODM4MTRjMDhjN2Rl
ZWQ2MWM5MDc5YzIyYmUzZjUwNzhhNzdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvUXVldWVkVmlkZW9PdXRwdXQu
bW0KQEAgLTAsMCArMSwzMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUXVldWVkVmlkZW9PdXRwdXQuaCIKKworI2lmIEVOQUJMRShWSURFTykKKworI2lu
Y2x1ZGUgPEFWRm91bmRhdGlvbi9BVlBsYXllckl0ZW1PdXRwdXQuaD4KKyNpbmNsdWRlIDxwYWwv
YXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHBhbC9zcGkv
Y29jb2EvQVZGb3VuZGF0aW9uU1BJLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGVOdW1iZXJzLmg+CisKKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4K
KyNpbmNsdWRlIDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKworQGludGVyZmFj
ZSBXZWJRdWV1ZWRWaWRlb091dHB1dERlbGVnYXRlIDogTlNPYmplY3Q8QVZQbGF5ZXJJdGVtT3V0
cHV0UHVsbERlbGVnYXRlPiB7CisgICAgV2Vha1B0cjxXZWJDb3JlOjpRdWV1ZWRWaWRlb091dHB1
dD4gX3BhcmVudDsKK30KKy0gKGlkKWluaXRXaXRoUGFyZW50OihXZWJDb3JlOjpRdWV1ZWRWaWRl
b091dHB1dCopcGFyZW50OworLSAodm9pZClvdXRwdXRNZWRpYURhdGFXaWxsQ2hhbmdlOihBVlBs
YXllckl0ZW1PdXRwdXQgKilvdXRwdXQ7CistICh2b2lkKW91dHB1dFNlcXVlbmNlV2FzRmx1c2hl
ZDooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0OworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JL
ZXlQYXRoOmtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAq
KWNoYW5nZSBjb250ZXh0Oih2b2lkKiljb250ZXh0OworQGVuZAorCitAaW1wbGVtZW50YXRpb24g
V2ViUXVldWVkVmlkZW9PdXRwdXREZWxlZ2F0ZQorLSAoaWQpaW5pdFdpdGhQYXJlbnQ6KFdlYkNv
cmU6OlF1ZXVlZFZpZGVvT3V0cHV0KilwYXJlbnQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRd
OworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9wYXJlbnQgPSBw
YXJlbnQ7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpb3V0cHV0TWVkaWFEYXRhV2ls
bENoYW5nZTooQVZQbGF5ZXJJdGVtT3V0cHV0ICopb3V0cHV0Cit7CisgICAgQVNTRVJUKFtvdXRw
dXQgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWUGxheWVySXRlbVZpZGVvT3V0cHV0Q2xhc3MoKV0p
OworICAgIGF1dG8qIHZpZGVvT3V0cHV0ID0gKEFWUGxheWVySXRlbVZpZGVvT3V0cHV0KilvdXRw
dXQ7CisKKyAgICBWZWN0b3I8V2ViQ29yZTo6UXVldWVkVmlkZW9PdXRwdXQ6OlZpZGVvRnJhbWVF
bnRyeT4gdmlkZW9GcmFtZUVudHJpZXM7CisgICAgZG8geworICAgICAgICBDTVRpbWUgZWFybGll
c3RUaW1lID0gW3ZpZGVvT3V0cHV0IGVhcmxpZXN0QXZhaWxhYmxlUGl4ZWxCdWZmZXJJdGVtVGlt
ZV07CisgICAgICAgIGlmIChDTVRJTUVfSVNfSU5WQUxJRChlYXJsaWVzdFRpbWUpKQorICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgYXV0byBwaXhlbEJ1ZmZlciA9IGFkb3B0Q0YoW3ZpZGVv
T3V0cHV0IGNvcHlQaXhlbEJ1ZmZlckZvckl0ZW1UaW1lOmVhcmxpZXN0VGltZSBpdGVtVGltZUZv
ckRpc3BsYXk6bmlsXSk7CisgICAgICAgIGlmICghcGl4ZWxCdWZmZXIpCisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICB2aWRlb0ZyYW1lRW50cmllcy5hcHBlbmQoeyBXVEZNb3ZlKHBpeGVs
QnVmZmVyKSwgUEFMOjp0b01lZGlhVGltZShlYXJsaWVzdFRpbWUpIH0pOworICAgIH0gd2hpbGUg
KHRydWUpOworCisgICAgaWYgKHZpZGVvRnJhbWVFbnRyaWVzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3ZpZGVvRnJhbWVFbnRyaWVzID0gV1RG
TW92ZSh2aWRlb0ZyYW1lRW50cmllcyksIHBhcmVudCA9IF9wYXJlbnRdICgpIG11dGFibGUgewor
ICAgICAgICBpZiAocGFyZW50KQorICAgICAgICAgICAgcGFyZW50LT5hZGRWaWRlb0ZyYW1lRW50
cmllcyhXVEZNb3ZlKHZpZGVvRnJhbWVFbnRyaWVzKSk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQp
b3V0cHV0U2VxdWVuY2VXYXNGbHVzaGVkOihBVlBsYXllckl0ZW1PdXRwdXQgKilvdXRwdXQKK3sK
KyAgICBBU1NFUlQoW291dHB1dCBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZQbGF5ZXJJdGVtVmlk
ZW9PdXRwdXRDbGFzcygpXSk7CisgICAgYXV0byogdmlkZW9PdXRwdXQgPSAoQVZQbGF5ZXJJdGVt
VmlkZW9PdXRwdXQqKW91dHB1dDsKKyAgICBbdmlkZW9PdXRwdXQgcmVxdWVzdE5vdGlmaWNhdGlv
bk9mTWVkaWFEYXRhQ2hhbmdlQXNTb29uQXNQb3NzaWJsZV07CisKKyAgICBjYWxsT25NYWluUnVu
TG9vcChbcGFyZW50ID0gX3BhcmVudF0geworICAgICAgICBpZiAocGFyZW50KQorICAgICAgICAg
ICAgcGFyZW50LT5wdXJnZVZpZGVvRnJhbWVFbnRyaWVzKCk7CisgICAgfSk7Cit9CisKKy0gKHZv
aWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDprZXlQYXRoIG9mT2JqZWN0OihpZClvYmplY3QgY2hh
bmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCopY29udGV4dAoreworICAg
IGlmICghW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOkAicmF0ZSJdKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIHJhdGVWYWx1ZSA9IChOU051bWJlciopW2NoYW5nZSB2YWx1ZUZvcktleTpO
U0tleVZhbHVlQ2hhbmdlTmV3S2V5XTsKKyAgICBBU1NFUlQoW3JhdGVWYWx1ZSBpc0tpbmRPZkNs
YXNzOk5TTnVtYmVyLmNsYXNzXSk7CisgICAgYXV0byByYXRlID0gcmF0ZVZhbHVlLmZsb2F0VmFs
dWU7CisKKyAgICBlbnN1cmVPbk1haW5SdW5Mb29wKFtwYXJlbnQgPSBfcGFyZW50LCByYXRlXSB7
CisgICAgICAgIGlmIChwYXJlbnQpCisgICAgICAgICAgICBwYXJlbnQtPnJhdGVDaGFuZ2VkKHJh
dGUpOworICAgIH0pOworfQorQGVuZAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBk
aXNwYXRjaF9xdWV1ZV90IGdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKQoreworICAgIHN0YXRp
YyBkaXNwYXRjaF9xdWV1ZV90IGdsb2JhbFF1ZXVlOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNl
X3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAg
Z2xvYmFsUXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoIldlYlF1ZXVlZFZpZGVvT3V0cHV0
RGVsZWdhdGUgcXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworICAgIH0pOworICAgIHJl
dHVybiBnbG9iYWxRdWV1ZTsKK30KKworUmVmPFF1ZXVlZFZpZGVvT3V0cHV0PiBRdWV1ZWRWaWRl
b091dHB1dDo6Y3JlYXRlKEFWUGxheWVySXRlbSogaXRlbSwgQVZQbGF5ZXIqIHBsYXllcikKK3sK
KyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBRdWV1ZWRWaWRlb091dHB1dChpdGVtLCBwbGF5ZXIp
KTsKK30KKworUXVldWVkVmlkZW9PdXRwdXQ6OlF1ZXVlZFZpZGVvT3V0cHV0KEFWUGxheWVySXRl
bSogaXRlbSwgQVZQbGF5ZXIqIHBsYXllcikKKyAgICA6IG1fcGxheWVySXRlbShpdGVtKQorICAg
ICwgbV9wbGF5ZXIocGxheWVyKQorICAgICwgbV9kZWxlZ2F0ZShhZG9wdE5TKFtbV2ViUXVldWVk
VmlkZW9PdXRwdXREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXJlbnQ6dGhpc10pKQoreworICAg
IG1fdmlkZW9PdXRwdXQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jQVZQbGF5ZXJJdGVtVmlkZW9PdXRw
dXRJbnN0YW5jZSgpIGluaXRXaXRoUGl4ZWxCdWZmZXJBdHRyaWJ1dGVzOm5pbF0pOworICAgIFtt
X3ZpZGVvT3V0cHV0IHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCkgcXVldWU6Z2xvYmFsT3V0
cHV0RGVsZWdhdGVRdWV1ZSgpXTsKKyAgICBbbV92aWRlb091dHB1dCByZXF1ZXN0Tm90aWZpY2F0
aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKKworICAgIFttX3BsYXllckl0
ZW0gYWRkT3V0cHV0Om1fdmlkZW9PdXRwdXQuZ2V0KCldOworCisgICAgW21fcGxheWVyIGFkZE9i
c2VydmVyOm1fZGVsZWdhdGUuZ2V0KCkgZm9yS2V5UGF0aDpAInJhdGUiIG9wdGlvbnM6KE5TS2V5
VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgfCBOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uSW5pdGlh
bCkgY29udGV4dDpuaWxdOworCisgICAgbV92aWRlb1RpbWViYXNlT2JzZXJ2ZXIgPSBbbV9wbGF5
ZXIgYWRkUGVyaW9kaWNUaW1lT2JzZXJ2ZXJGb3JJbnRlcnZhbDpQQUw6OkNNVGltZU1ha2UoMSwg
NjApIHF1ZXVlOmdsb2JhbE91dHB1dERlbGVnYXRlUXVldWUoKSB1c2luZ0Jsb2NrOlt3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwcm90ZWN0ZWREZWxlZ2F0ZSA9IG1fZGVsZWdhdGUsIHBy
b3RlY3RlZE91dHB1dCA9IG1fdmlkZW9PdXRwdXRdKENNVGltZSBjdXJyZW50VGltZSkgbXV0YWJs
ZSB7CisKKyAgICAgICAgLy8gUGVyaW9kaWNhbGx5IGNoZWNrIGZvciBuZXcgYXZhaWxhYmxlIHBp
eGVsIGJ1ZmZlcnMuCisgICAgICAgIFtwcm90ZWN0ZWREZWxlZ2F0ZSBvdXRwdXRNZWRpYURhdGFX
aWxsQ2hhbmdlOnByb3RlY3RlZE91dHB1dC5nZXQoKV07CisKKyAgICAgICAgLy8gQW5kIHB1cmdl
IHRoZSBiYWNrIGJ1ZmZlciBvZiBwYXN0IGZyYW1lcy4KKyAgICAgICAgY2FsbE9uTWFpblJ1bkxv
b3AoW3dlYWtUaGlzID0gd2Vha1RoaXMsIHRpbWUgPSBQQUw6OnRvTWVkaWFUaW1lKGN1cnJlbnRU
aW1lKV0geworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT5wdXJnZUltYWdlc0JlZm9yZVRpbWUodGltZSk7CisgICAgICAgIH0pOworICAgIH1dOwor
fQorCitRdWV1ZWRWaWRlb091dHB1dDo6flF1ZXVlZFZpZGVvT3V0cHV0KCkKK3sKKyAgICBpbnZh
bGlkYXRlKCk7Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmludmFsaWRhdGUoKQorewor
ICAgIGlmIChtX3ZpZGVvVGltZWJhc2VPYnNlcnZlcikgeworICAgICAgICBbbV9wbGF5ZXIgcmVt
b3ZlVGltZU9ic2VydmVyOm1fdmlkZW9UaW1lYmFzZU9ic2VydmVyLmdldCgpXTsKKyAgICAgICAg
bV92aWRlb1RpbWViYXNlT2JzZXJ2ZXIgPSBuaWw7CisgICAgfQorCisgICAgY2FuY2VsTmV4dElt
YWdlVGltZU9ic2VydmVyKCk7CisKKyAgICBpZiAobV92aWRlb091dHB1dCkgeworICAgICAgICBb
bV9wbGF5ZXJJdGVtIHJlbW92ZU91dHB1dDptX3ZpZGVvT3V0cHV0LmdldCgpXTsKKyAgICAgICAg
W21fdmlkZW9PdXRwdXQgc2V0RGVsZWdhdGU6bmlsIHF1ZXVlOm5pbF07CisgICAgICAgIG1fdmlk
ZW9PdXRwdXQgPSBuaWw7CisgICAgfQorCisgICAgaWYgKG1fcGxheWVyKSB7CisgICAgICAgIFtt
X3BsYXllciByZW1vdmVPYnNlcnZlcjptX2RlbGVnYXRlLmdldCgpIGZvcktleVBhdGg6QCJyYXRl
Il07CisgICAgICAgIG1fcGxheWVyID0gbmlsOworICAgIH0KKworICAgIG1fcGxheWVySXRlbSA9
IG5pbDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIE1heWJlQ29uc3RNYXAsIHR5cGVuYW1lIE1h
eWJlQ29uc3RJdGVyID0gZGVjbHR5cGUoTWF5YmVDb25zdE1hcCgpLmJlZ2luKCkpPgorTWF5YmVD
b25zdEl0ZXIgZmluZEltYWdlRm9yVGltZShNYXliZUNvbnN0TWFwJiBtYXAsIGNvbnN0IE1lZGlh
VGltZSYgdGltZSkKK3sKKyAgICAvLyBPdXRwdXRzIG9mIEFWUGxheWVySXRlbVZpZGVvT3V0cHV0
IGhhdmUgYSBkaXNwbGF5IHRpbWUsIGJ1dCBub3QgYSBkdXJhdGlvbjsgdGhleSBhcmUgdmFsaWQK
KyAgICAvLyB1bnRpbCB0aGUgYXJyaXZhbCBvZiBhIGxhdGVyIGZyYW1lLiBGaW5kIHRoaXMgZnJh
bWUgZWZmaWNpZW50bHkgdXNpbmcgc2V0Ojp1cHBlcl9ib3VuZCB0byBmaW5kCisgICAgLy8gdGhl
IG5leHQgZGlzcGxheWFibGUgZnJhbWUsIGFuZCB3YWxrIGJhY2t3YXJkcyBieSBvbmUgdG8gZmlu
ZCBhIGZyYW1lIGZvciB0aGUgdGFyZ2V0IHRpbWUuCisgICAgaWYgKG1hcC5lbXB0eSgpKQorICAg
ICAgICByZXR1cm4gbWFwLmVuZCgpOworCisgICAgYXV0byBpdGVyID0gbWFwLnVwcGVyX2JvdW5k
KHRpbWUpOworICAgIGlmIChpdGVyID09IG1hcC5iZWdpbigpKQorICAgICAgICByZXR1cm4gbWFw
LmVuZCgpOworCisgICAgcmV0dXJuIC0taXRlcjsKK30KKworYm9vbCBRdWV1ZWRWaWRlb091dHB1
dDo6aGFzSW1hZ2VGb3JUaW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZmluZEltYWdlRm9yVGltZShtX3ZpZGVvRnJhbWVzLCB0aW1lKSAhPSBtX3ZpZGVvRnJh
bWVzLmVuZCgpOworfQorCithdXRvIFF1ZXVlZFZpZGVvT3V0cHV0Ojp0YWtlVmlkZW9GcmFtZUVu
dHJ5Rm9yVGltZShjb25zdCBNZWRpYVRpbWUmIHRpbWUpIC0+IFZpZGVvRnJhbWVFbnRyeQorewor
ICAgIGF1dG8gaXRlciA9IGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywgdGltZSk7Cisg
ICAgaWYgKGl0ZXIgPT0gbV92aWRlb0ZyYW1lcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHsgbnVs
bHB0ciwgTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpIH07CisKKyAgICBWaWRlb0ZyYW1lRW50cnkg
ZW50cnkgPSB7IFdURk1vdmUoaXRlci0+c2Vjb25kKSwgaXRlci0+Zmlyc3QgfTsKKworICAgIC8v
IFB1cmdlIGFsbCBmcmFtZXMgYmVmb3JlIGB0aW1lYCwgc28gdGhhdCByZXBlYXRlZCBjYWxscyB3
aXRoIHRoZSBzYW1lIHRpbWUgZG9uJ3QgcmV0dXJuCisgICAgLy8gc3VjY2Vzc2l2ZWx5IGVhcmxp
ZXIgaW1hZ2VzLgorICAgIG1fdmlkZW9GcmFtZXMuZXJhc2UobV92aWRlb0ZyYW1lcy5iZWdpbigp
LCArK2l0ZXIpOworCisgICAgcmV0dXJuIGVudHJ5OworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0
cHV0OjphZGRDdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXIoY29uc3QgQ3VycmVudEltYWdlQ2hh
bmdlZE9ic2VydmVyJiBvYnNlcnZlcikKK3sKKyAgICBtX2N1cnJlbnRJbWFnZUNoYW5nZWRPYnNl
cnZlcnMuYWRkKG9ic2VydmVyKTsKKyAgICBjb25maWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIo
KTsKKworICAgIFttX3ZpZGVvT3V0cHV0IHJlcXVlc3ROb3RpZmljYXRpb25PZk1lZGlhRGF0YUNo
YW5nZUFzU29vbkFzUG9zc2libGVdOworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0Ojpjb25m
aWd1cmVOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKQoreworICAgIGlmIChtX25leHRJbWFnZVRpbWVi
YXNlT2JzZXJ2ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gY3VycmVudFRpbWUgPSBQ
QUw6OnRvTWVkaWFUaW1lKFttX3BsYXllciBjdXJyZW50VGltZV0pOworICAgIGF1dG8gaXRlciA9
IGZpbmRJbWFnZUZvclRpbWUobV92aWRlb0ZyYW1lcywgY3VycmVudFRpbWUpOworICAgIGlmIChp
dGVyID09IG1fdmlkZW9GcmFtZXMuZW5kKCkgfHwgKytpdGVyID09IG1fdmlkZW9GcmFtZXMuZW5k
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbmV4dEltYWdlVGltZSA9IGl0ZXItPmZp
cnN0OworCisgICAgbV9uZXh0SW1hZ2VUaW1lYmFzZU9ic2VydmVyID0gW21fcGxheWVyIGFkZEJv
dW5kYXJ5VGltZU9ic2VydmVyRm9yVGltZXM6QFtbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWU6UEFM
Ojp0b0NNVGltZShjdXJyZW50VGltZSldXSBxdWV1ZTpnbG9iYWxPdXRwdXREZWxlZ2F0ZVF1ZXVl
KCkgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJvdGVjdGVkRGVs
ZWdhdGUgPSBtX2RlbGVnYXRlLCBwcm90ZWN0ZWRPdXRwdXQgPSBtX3ZpZGVvT3V0cHV0XSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV1RGTW92ZSh3
ZWFrVGhpcyldIHsKKyAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3
ZWFrVGhpcy0+bmV4dEltYWdlVGltZVJlYWNoZWQoKTsKKyAgICAgICAgfSk7CisgICAgfV07Cit9
CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6OmNhbmNlbE5leHRJbWFnZVRpbWVPYnNlcnZlcigp
Cit7CisgICAgaWYgKCFtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIFttX3BsYXllciByZW1vdmVUaW1lT2JzZXJ2ZXI6bV9uZXh0SW1hZ2VUaW1lYmFz
ZU9ic2VydmVyLmdldCgpXTsKKyAgICBtX25leHRJbWFnZVRpbWViYXNlT2JzZXJ2ZXIgPSBuaWw7
Cit9CisKK3ZvaWQgUXVldWVkVmlkZW9PdXRwdXQ6Om5leHRJbWFnZVRpbWVSZWFjaGVkKCkKK3sK
KyAgICBjYW5jZWxOZXh0SW1hZ2VUaW1lT2JzZXJ2ZXIoKTsKKyAgICBhdXRvIG9ic2VydmVycyA9
IHN0ZDo6ZXhjaGFuZ2UobV9jdXJyZW50SW1hZ2VDaGFuZ2VkT2JzZXJ2ZXJzLCB7IH0pOworICAg
IG9ic2VydmVycy5mb3JFYWNoKFtdKGF1dG8mIG9ic2VydmVyKSB7IG9ic2VydmVyKCk7IH0pOwor
fQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjphZGRWaWRlb0ZyYW1lRW50cmllcyhWZWN0b3I8
VmlkZW9GcmFtZUVudHJ5PiYmIHZpZGVvRnJhbWVFbnRyaWVzKQoreworICAgIGJvb2wgbmVlZHNJ
bWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCA9IGZhbHNlOworICAgIGJvb2wgaGFzQ3VycmVudElt
YWdlQ2hhbmdlZE9ic2VydmVycyA9IG1fY3VycmVudEltYWdlQ2hhbmdlZE9ic2VydmVycy5jb21w
dXRlU2l6ZSgpOworICAgIE1lZGlhVGltZSBjdXJyZW50VGltZSA9IGhhc0N1cnJlbnRJbWFnZUNo
YW5nZWRPYnNlcnZlcnMgPyBQQUw6OnRvTWVkaWFUaW1lKFttX3BsYXllciBjdXJyZW50VGltZV0p
IDogTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpOworCisgICAgZm9yIChhdXRvJiBlbnRyeSA6IHZp
ZGVvRnJhbWVFbnRyaWVzKSB7CisgICAgICAgIGlmIChoYXNDdXJyZW50SW1hZ2VDaGFuZ2VkT2Jz
ZXJ2ZXJzICYmIGVudHJ5LmRpc3BsYXlUaW1lIDw9IGN1cnJlbnRUaW1lKQorICAgICAgICAgICAg
bmVlZHNJbWFnZUZvckN1cnJlbnRUaW1lQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIG1fdmlkZW9G
cmFtZXMuZW1wbGFjZShlbnRyeS5kaXNwbGF5VGltZSwgV1RGTW92ZShlbnRyeS5waXhlbEJ1ZmZl
cikpOworICAgIH0KKworICAgIGlmIChuZWVkc0ltYWdlRm9yQ3VycmVudFRpbWVDaGFuZ2VkKQor
ICAgICAgICBuZXh0SW1hZ2VUaW1lUmVhY2hlZCgpOworICAgIGVsc2UgaWYgKGhhc0N1cnJlbnRJ
bWFnZUNoYW5nZWRPYnNlcnZlcnMpCisgICAgICAgIGNvbmZpZ3VyZU5leHRJbWFnZVRpbWVPYnNl
cnZlcigpOworCisgICAgaWYgKG1fcGF1c2VkKQorICAgICAgICBbbV92aWRlb091dHB1dCByZXF1
ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3NpYmxlXTsKK30KKwor
dm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6cHVyZ2VWaWRlb0ZyYW1lRW50cmllcygpCit7CisgICAg
Y2FuY2VsTmV4dEltYWdlVGltZU9ic2VydmVyKCk7CisgICAgbV92aWRlb0ZyYW1lcy5jbGVhcigp
OworfQorCit2b2lkIFF1ZXVlZFZpZGVvT3V0cHV0OjpwdXJnZUltYWdlc0JlZm9yZVRpbWUoY29u
c3QgTWVkaWFUaW1lJiB0aW1lKQoreworICAgIG1fdmlkZW9GcmFtZXMuZXJhc2UobV92aWRlb0Zy
YW1lcy5iZWdpbigpLCBmaW5kSW1hZ2VGb3JUaW1lKG1fdmlkZW9GcmFtZXMsIHRpbWUpKTsKK30K
Kwordm9pZCBRdWV1ZWRWaWRlb091dHB1dDo6cmF0ZUNoYW5nZWQoZmxvYXQgcmF0ZSkKK3sKKyAg
ICBtX3BhdXNlZCA9ICFyYXRlOworCisgICAgaWYgKG1fcGF1c2VkKQorICAgICAgICBbbV92aWRl
b091dHB1dCByZXF1ZXN0Tm90aWZpY2F0aW9uT2ZNZWRpYURhdGFDaGFuZ2VBc1Nvb25Bc1Bvc3Np
YmxlXTsKK30KKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRkMTk2N2VkMzhlZTBkNTkzNTRjMmE3
NDZlZWFkMDVkN2RkMGQwNGUuLjE1Y2Q3NDE3NzYwNmUzZGYwZTNhOGNmMWNiMjYyODU4NWM2NmRm
MDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMi0wMS0wOCAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIHJWRkMoKSBpc24ndCBjYWxsZWQgZm9y
IGluaXRpYWwgdmlkZW8gbG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM1MDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgor
CisgICAgICAgICogbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFy
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWst
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1l
LXNlZWsuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0
YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9uczoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjItMDEtMTEg
IE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXdy
aXRlIHRvdWNoIGFuZCBkcmFnIHRlc3RzIHRvIGJlIG1vcmUgcm9idXN0LgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1sb2Fkc3RhcnQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjMDJmNjZlYmFiZGZiNTc0ZDlmOWZmMWQ1YjgxZmM4MDg5
MjAzNmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVv
LWZyYW1lLWxvYWRzdGFydC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK1JVTih2aWRl
by5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGNhbGxiYWNrKSkKK1JVTih2aWRlby5zcmMgPSBm
aW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKSkKK1Byb21pc2UgcmVzb2x2ZWQg
T0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3Qt
dmlkZW8tZnJhbWUtbG9hZHN0YXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZp
ZGVvLWZyYW1lLWxvYWRzdGFydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MGIzZjFhOGM2MTFhMjZmY2Qw
YTU0ZWVlMGZiMDJjNTVlNjZmNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRp
YS9yZXF1ZXN0LXZpZGVvLWZyYW1lLWxvYWRzdGFydC5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8dGl0bGU+cmVxdWVzdC12aWRlby1m
cmFtZS1sb2Fkc3RhcnQ8L3RpdGxlPgorICAgIDxzY3JpcHQgc3JjPSJ2aWRlby10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0ibWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdD4KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50
ID0+IHsKKyAgICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgIGxldCB2aWRlb0Zy
YW1lUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgnUlVOKHZpZGVvLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2soY2Fs
bGJhY2spKScpOworICAgICAgICAgICAgdmlkZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhy
ZXNvbHZlKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgcnVuKCd2aWRlby5zcmMgPSBmaW5kTWVk
aWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKScpOworCisgICAgICAgIGF3YWl0IHNob3Vs
ZFJlc29sdmUodmlkZW9GcmFtZVByb21pc2UpOworCisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9
KTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx2aWRlbyBtdXRlZD48L3Zp
ZGVvPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUtc2Vlay1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZyYW1lLXNlZWstZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJhMDE1ZjI2YjgzYWM5OWFmZjMwNTY4YjMyZTY2OTQxNTA2NGM3
NWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9yZXF1ZXN0LXZpZGVvLWZy
YW1lLXNlZWstZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorCitSVU4odmlkZW8uc3JjID0g
ZmluZE1lZGlhRmlsZSgidmlkZW8iLCAiY29udGVudC90ZXN0IikpCitFVkVOVChjYW5wbGF5dGhy
b3VnaCkKK1JVTih2aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKGNhbGxiYWNrKSkKK1JV
Tih2aWRlby5jdXJyZW50VGltZSA9IDAuNSkKK1Byb21pc2UgcmVzb2x2ZWQgT0sKK0VORCBPRiBU
RVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvcmVxdWVzdC12aWRlby1mcmFtZS1zZWVrLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTkyNThmMDM2MzhjY2Y4YTZjOGYzNDYwZDcxNDMzNGE0NzkwOTU4YQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3JlcXVlc3QtdmlkZW8tZnJhbWUt
c2Vlay5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKyAgICA8dGl0bGU+cmVxdWVzdC12aWRlby1mcmFtZS1zZWVrPC90aXRsZT4KKyAgICA8c2Ny
aXB0IHNyYz0idmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Im1lZGlh
LWZpbGUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoJ2xvYWQnLCBhc3luYyBldmVudCA9PiB7CisgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQo
KTsKKworICAgICAgICBydW4oJ3ZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoInZpZGVvIiwgImNv
bnRlbnQvdGVzdCIpJyk7CisKKyAgICAgICAgYXdhaXQgd2FpdEZvcih2aWRlbywgJ2NhbnBsYXl0
aHJvdWdoJyk7CisKKyAgICAgICAgbGV0IHZpZGVvRnJhbWVQcm9taXNlID0gbmV3IFByb21pc2Uo
KHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgY29uc29sZVdyaXRlKCdSVU4odmlk
ZW8ucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayhjYWxsYmFjaykpJyk7CisgICAgICAgICAgICB2
aWRlby5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKHJlc29sdmUpOworICAgICAgICB9KTsKKwor
ICAgICAgICBydW4oJ3ZpZGVvLmN1cnJlbnRUaW1lID0gMC41Jyk7CisKKyAgICAgICAgYXdhaXQg
c2hvdWxkUmVzb2x2ZSh2aWRlb0ZyYW1lUHJvbWlzZSk7CisKKyAgICAgICAgZW5kVGVzdCgpOwor
ICAgIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHZpZGVvIG11dGVk
PjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDcx
ODJlOGNmYzk1N2Q4ODJhN2Y4NTU3NWI4ZGMyMjg5ODY3MjI5NjguLmIyZGMyODVhMDdhZGJiZWFk
OTFlYjg4MjkwZmVhYmQ5MjY0ZTBjZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE0NSw2ICsxNDUsNyBAQCB3ZWJydGMvcGVlckNvbm5l
Y3Rpb24tcnZmYy5odG1sIFsgUGFzcyBdCiAjIFRpbWluZyBvdXQgdGVzdHMgdW50aWwgd2UgYWRk
IFhSIHNlc3Npb24uCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMv
cmVxdWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1iZWZvcmUteHItc2Vzc2lvbi5odHRwcy5odG1s
IFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVx
dWVzdC12aWRlby1mcmFtZS1jYWxsYmFjay1kdXJpbmcteHItc2Vzc2lvbi5odHRwcy5odG1sIFsg
U2tpcCBdCit3ZWJraXQub3JnL2IvMjM1MDcyIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZpZGVvLWZyYW1lLWNhbGxiYWNrLXJlcGVhdGluZy5odG1s
IFsgU2tpcCBdCiAKICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIHBs
YXRmb3JtLXNwZWNpZmljIGRpcmVjdG9yaWVzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGJiYjY1YTQwODg1NWFkOTNjNmM0MWRmNGRkZDQx
YzhhMDJlZTRmNDkuLmU3NDk2YjgwZTU1YmJjMGJmMmJiM2I0YjUyMWM5MjM2NjdkYzcwYjcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM4
LDYgKzM4LDggQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy92aWRlby1ydmZjIFsg
UGFzcyBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVz
dC12aWRlby1mcmFtZS1jYWxsYmFjay1iZWZvcmUteHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tp
cCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12
aWRlby1mcmFtZS1jYWxsYmFjay1kdXJpbmcteHItc2Vzc2lvbi5odHRwcy5odG1sIFsgU2tpcCBd
CiAKK3dlYmtpdC5vcmcvYi8yMzUwNzIgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy92
aWRlby1ydmZjL3JlcXVlc3QtdmlkZW8tZnJhbWUtY2FsbGJhY2stcmVwZWF0aW5nLmh0bWwgWyBT
a2lwIF0KKwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgcGxhdGZv
cm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMuCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggYjVkODJjOTIxYTc4MGI0NmQ3ODcxZGEzMWI5YTJjM2UwNjhlZTFjNi4uY2ViNzBhNTUwODAz
YmI2NDA2OTg5NDQ2MmQzYjFkMTE0MTIyMGI0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTI0LDYgKzEyNCw4IEBAIHdlYnJ0Yy9wZWVy
Q29ubmVjdGlvbi1ydmZjLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZpZGVvLWZyYW1lLWNhbGxiYWNrLWJlZm9yZS14ci1z
ZXNzaW9uLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdmlkZW8tcnZmYy9yZXF1ZXN0LXZpZGVvLWZyYW1lLWNhbGxiYWNrLWR1cmluZy14ci1zZXNz
aW9uLmh0dHBzLmh0bWwgWyBTa2lwIF0KIAord2Via2l0Lm9yZy9iLzIzNTA3MiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3ZpZGVvLXJ2ZmMvcmVxdWVzdC12aWRlby1mcmFtZS1jYWxs
YmFjay1yZXBlYXRpbmcuaHRtbCBbIFNraXAgXQorCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCiAjIEVuZCBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3Rvcmllcy4KICMvLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
</data>
<flag name="commit-queue"
          id="475243"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>