<?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>128717</bug_id>
          
          <creation_ts>2014-02-12 19:15:16 -0800</creation_ts>
          <short_desc>Fix TimeRanges layering violations</short_desc>
          <delta_ts>2014-02-21 13:59:46 -0800</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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>980131</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-02-12 19:15:16 -0800</bug_when>
    <thetext>TimeRanges is defined in WebCore/html, but it is used by many of the media engine related classes in WebCore/platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982557</commentid>
    <comment_count>1</comment_count>
      <attachid>224681</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-02-19 14:50:42 -0800</bug_when>
    <thetext>Created attachment 224681
Patch for the bots to chew on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982558</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-19 14:52:29 -0800</bug_when>
    <thetext>Attachment 224681 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:773:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:774:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/platform/graphics/PlatformTimeRanges.cpp:28:  You should not add a blank line before implementation file&apos;s own header.  [build/include_order] [4]
ERROR: Source/WebCore/platform/graphics/PlatformTimeRanges.cpp:144:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebCore/platform/graphics/PlatformTimeRanges.cpp:156:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/PlatformTimeRanges.cpp:171:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 6 in 41 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982615</commentid>
    <comment_count>3</comment_count>
      <attachid>224694</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-02-19 17:01:49 -0800</bug_when>
    <thetext>Created attachment 224694
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982617</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-19 17:04:09 -0800</bug_when>
    <thetext>Attachment 224694 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:772:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:774:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 2 in 43 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983253</commentid>
    <comment_count>5</comment_count>
      <attachid>224694</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-02-21 11:02:23 -0800</bug_when>
    <thetext>Comment on attachment 224694
Updated patch

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

r=me, with nits.

&gt; Source/WebCore/Modules/mediasource/MediaSource.cpp:180
&gt; -    return intersectionRanges.release();
&gt; +    auto result = PlatformTimeRanges::create();
&gt; +    unsigned size = intersectionRanges-&gt;length();
&gt; +    for (unsigned i = 0; i &lt; size; i++)
&gt; +        result-&gt;add(intersectionRanges-&gt;start(i, ASSERT_NO_EXCEPTION), intersectionRanges-&gt;end(i, ASSERT_NO_EXCEPTION));
&gt; +
&gt; +    return result;

This is weird.  Can&apos;t we just do:

return PlatformTimeRanges::create(intersectionRanges-&gt;ranges()) ?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3079
&gt; +    auto timeRanges = m_player-&gt;buffered();

I don&apos;t believe we&apos;re supposed to use &apos;auto&apos; in this way; only when the type is implied by the method called.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3082
&gt; -        double start = timeRanges-&gt;start(i, IGNORE_EXCEPTION);
&gt; -        double end = timeRanges-&gt;end(i, IGNORE_EXCEPTION);
&gt; +        double start = timeRanges-&gt;start(i, ignored);
&gt; +        double end = timeRanges-&gt;end(i, ignored);

Why are we removing IGNORE_EXCEPTION?

&gt; Source/WebCore/html/TimeRanges.h:67
&gt; +    const PlatformTimeRanges* ranges() const { return &amp;m_ranges; }

Lets make this public, and have it return a &apos;const PlatformTimeRanges&amp;&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983261</commentid>
    <comment_count>6</comment_count>
      <attachid>224694</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-02-21 11:20:56 -0800</bug_when>
    <thetext>Comment on attachment 224694
Updated patch

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

&gt;&gt; Source/WebCore/Modules/mediasource/MediaSource.cpp:180
&gt;&gt; +    return result;
&gt; 
&gt; This is weird.  Can&apos;t we just do:
&gt; 
&gt; return PlatformTimeRanges::create(intersectionRanges-&gt;ranges()) ?

Good idea, I will try that.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:3079
&gt;&gt; +    auto timeRanges = m_player-&gt;buffered();
&gt; 
&gt; I don&apos;t believe we&apos;re supposed to use &apos;auto&apos; in this way; only when the type is implied by the method called.

OK

&gt;&gt; Source/WebCore/html/HTMLMediaElement.cpp:3082
&gt;&gt; +        double end = timeRanges-&gt;end(i, ignored);
&gt; 
&gt; Why are we removing IGNORE_EXCEPTION?

Exception is an HTML concept, so PlatformTimeRanges returns a bool to indicate success/failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983345</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-02-21 13:59:36 -0800</bug_when>
    <thetext>Committed r164498: https://trac.webkit.org/r164498</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224681</attachid>
            <date>2014-02-19 14:50:42 -0800</date>
            <delta_ts>2014-02-19 17:01:49 -0800</delta_ts>
            <desc>Patch for the bots to chew on.</desc>
            <filename>patch_14.txt</filename>
            <type>text/plain</type>
            <size>76040</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMCBAQAorMjAxNC0wMi0xOSAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggVGltZVJhbmdl
cyBsYXllcmluZyB2aW9sYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjg3MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlZC4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
IEFkZCBQbGF0Zm9ybVRpbWVSYW5nZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpidWZmZXJl
ZCk6IFRpbWVSYW5nZXMgLT4gUGxhdGZvcm1UaW1lUmFuZ2VzLgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaDoKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291
cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUpOiBUaW1lUmFuZ2VzKiAtPiBUaW1lUmFu
Z2VzJi4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBVcGRhdGUgZm9yIHNpZ25hdHVyZSBj
aGFuZ2VzLgorCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgUGxhdGZvcm1UaW1lUmFu
Z2VzLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQpOiBDcmVhdGUgVGltZVJhbmdl
cyBmcm9tIFBsYXRmb3JtVGltZVJhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmJ1ZmZlcmVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzZWVrYWJsZSk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpidWZmZXJlZCk6IFRpbWVSYW5nZXMqIC0+
IFRpbWVSYW5nZXMmLgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZWVrYWJsZSk6IERpdHRv
LgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpwbGF5ZWQpOiBEaXR0by4KKworICAgICAgICBN
b3ZlIGFsbCBvZiB0aGUgbG9naWMgaW50byBQbGF0Zm9ybVRpbWVSYW5nZXMuIENoYW5nZSBBUEkg
dG8gdGFrZSBUaW1lUmFuZ2VzJiBpbnN0ZWFkIG9mIFRpbWVSYW5nZXMqLgorICAgICAgICAqIGh0
bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaW1lUmFuZ2VzOjpjcmVhdGUp
OiBNb3ZlIHRvIC5jcHAgZnJvbSAuaC4KKyAgICAgICAgKFdlYkNvcmU6OlRpbWVSYW5nZXM6OlRp
bWVSYW5nZXMpOiBJbml0aWFsaXplIHRoZSBQbGF0Zm9ybVRpbWVSYW5nZXMgbWVtYmVyIHZhcmlh
YmxlLgorICAgICAgICAoV2ViQ29yZTo6VGltZVJhbmdlczo6c3RhcnQpOiBQYXNzdGhyb3VnaCB0
byBQbGF0Zm9ybVRpbWVSYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpUaW1lUmFuZ2VzOjplbmQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRpbWVSYW5nZXM6OmludmVydCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6VGltZVJhbmdlczo6Y29weSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6VGltZVJhbmdlczo6aW50ZXJzZWN0V2l0aCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VGltZVJhbmdlczo6dW5pb25XaXRoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUaW1l
UmFuZ2VzOjpsZW5ndGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRpbWVSYW5nZXM6OmFk
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGltZVJhbmdlczo6Y29udGFpbik6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6VGltZVJhbmdlczo6ZmluZCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6VGltZVJhbmdlczo6bmVhcmVzdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
VGltZVJhbmdlczo6dG90YWxEdXJhdGlvbik6IERpdHRvLgorICAgICAgICAqIGh0bWwvVGltZVJh
bmdlcy5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TnVsbE1lZGlhUGxheWVyUHJpdmF0ZTo6YnVmZmVyZWQpOiBUaW1l
UmFuZ2VzIC0+IFBsYXRmb3JtVGltZVJhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpidWZmZXJlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNl
ZWthYmxlKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oOgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmg6IEFk
ZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246OmJ1ZmZlcmVkKTogVGltZVJhbmdlcyAtPiBQbGF0Zm9ybVRp
bWVSYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b246OmxvYWRlZFRpbWVSYW5nZXNDaGFuZ2VkKTogRHJpdmUtYnkgZml4IHRvIGxvZworICAgICAg
ICAgICAgRnVuY3Rpb25UeXBlIG5vdGlmaWNhdGlvbnMuIEFTU0VSVCB3aGVuIHBhc3NlZCBhbiB1
bmtub3duIG5vdGlmaWNhdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKTogIFRpbWVSYW5nZXMgLT4gUGxhdGZv
cm1UaW1lUmFuZ2VzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3VycmVudFRpbWUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBs
YXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWthYmxlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OmJ1ZmZlcmVkKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVmZmVyZWQpOiBEaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvTWVkaWFQbGF5ZXJQcml2YXRlSU9T
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL01lZGlhUGxheWVyUHJpdmF0ZUlP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUlPUzo6YnVmZmVyZWQp
OiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclBy
aXZhdGVRVEtpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXll
clByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0OjpidWZmZXJlZCk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6YnVmZmVy
ZWQpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luY2UvTWVkaWFQbGF5ZXJQcml2YXRlV2luQ0UuaDoKKworICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6YWR2YW5j
ZUN1cnJlbnRUaW1lKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oOgorCiAyMDE0LTAyLTE5ICBCZXRoIERha2lu
ICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBVSVByb2Nlc3MgbmVlZHMgdG8ga25vdyB0
aGUgY29sb3Igb2YgdGhlIHBhZ2UncyBleHRlbmRlZCBiYWNrZ3JvdW5kCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMTY0MzgwKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5MTAsNiArMTkxMCw3IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJu
LmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRl
ZFJlY3QuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU1ZHR2x5cGguY3BwCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE2NDM4MCkKKysrIFNvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTUzMzgsNiArNTMzOCw4
IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllclByaXZhdGUuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZW1wb3JhcnlPcGVuR0xTZXR0aW5n
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RlbXBvcmFy
eU9wZW5HTFNldHRpbmcuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTY0
MzgwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTE0MjIsOCArMTQyMiwxMCBAQCBfX1pON1dlYkNvcmU5cGxhaW5UZXh0RVBLTlNfNVJhbmdlRU5T
XzIwCiBfX1pON1dlYkNvcmU5dG9FbGVtZW50RU4zSlNDN0pTVmFsdWVFCiBfX1pON1dlYkNvcmU5
dW5pb25SZWN0RVJLTjNXVEY2VmVjdG9ySU5TXzlGbG9hdFJlY3RFTG0wRU5TMF8xNUNyYXNoT25P
dmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMTBQYXN0ZWJvYXJkMjFjcmVhdGVGb3JDb3B5QW5kUGFz
dGVFdgotX19aTjdXZWJDb3JlMTBUaW1lUmFuZ2VzMTNpbnRlcnNlY3RXaXRoRVBLUzBfCitfX1pO
N1dlYkNvcmUxMFRpbWVSYW5nZXM2Y3JlYXRlRXYKK19fWk43V2ViQ29yZTEwVGltZVJhbmdlczZj
cmVhdGVFZGQKIF9fWk43V2ViQ29yZTEwVGltZVJhbmdlc0MxRWRkCitfX1pON1dlYkNvcmUxMFRp
bWVSYW5nZXMxM2ludGVyc2VjdFdpdGhFUktTMF8KIF9fWk43V2ViQ29yZTEzU2VsZWN0aW9uUmVj
dEMxRVJLTlNfN0ludFJlY3RFYmkKIF9fWk5LM0pTQzhCaW5kaW5nczEwUm9vdE9iamVjdDEyZ2xv
YmFsT2JqZWN0RXYKIF9fWk5LM1dURjZTdHJpbmcxNGNyZWF0ZUNGU3RyaW5nRXYKQEAgLTE0NjEs
NiArMTQ2Myw3IEBAIF9fWk5LN1dlYkNvcmUxMFN0b3JhZ2VNYXA4Y29udGFpbnNFUktOM1cKIF9f
Wk5LN1dlYkNvcmUxMFRpbWVSYW5nZXMzZW5kRWpSaQogX19aTks3V2ViQ29yZTEwVGltZVJhbmdl
czRjb3B5RXYKIF9fWk5LN1dlYkNvcmUxMFRpbWVSYW5nZXM1c3RhcnRFalJpCitfX1pOSzdXZWJD
b3JlMTBUaW1lUmFuZ2VzNmxlbmd0aEV2CiBfX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjEwaXND
b21wbGV0ZUV2CiBfX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjE0Y2FuY2VsbGVkRXJyb3JFUktO
U18xNVJlc291cmNlUmVxdWVzdEUKIF9fWk5LN1dlYkNvcmUxMUZyYW1lTG9hZGVyMTRmcmFtZUhh
c0xvYWRlZEV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlh
U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmNwcAkocmV2aXNpb24gMTY0MzgwKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
MSw3ICsxMzEsNyBAQCBkb3VibGUgTWVkaWFTb3VyY2U6OmR1cmF0aW9uKCkgY29uc3QKICAgICBy
ZXR1cm4gaXNDbG9zZWQoKSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4o
KSA6IG1fcHJpdmF0ZS0+ZHVyYXRpb24oKTsKIH0KIAotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBN
ZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGlt
ZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKICAgICAvLyBJbXBsZW1l
bnRzIE1lZGlhU291cmNlIGFsZ29yaXRobSBmb3IgSFRNTE1lZGlhRWxlbWVudC5idWZmZXJlZC4K
ICAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvZGVmYXVs
dC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjaHRtbG1lZGlhZWxlbWVudC1leHRlbnNp
b25zCkBAIC0xMzksNyArMTM5LDcgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVNvdXJj
ZTo6YnVmZgogCiAgICAgLy8gMS4gSWYgYWN0aXZlU291cmNlQnVmZmVycy5sZW5ndGggZXF1YWxz
IDAgdGhlbiByZXR1cm4gYW4gZW1wdHkgVGltZVJhbmdlcyBvYmplY3QgYW5kIGFib3J0IHRoZXNl
IHN0ZXBzLgogICAgIGlmIChyYW5nZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gVGltZVJh
bmdlczo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybVRpbWVSYW5nZXM6OmNyZWF0
ZSgpOwogCiAgICAgLy8gMi4gTGV0IGFjdGl2ZSByYW5nZXMgYmUgdGhlIHJhbmdlcyByZXR1cm5l
ZCBieSBidWZmZXJlZCBmb3IgZWFjaCBTb3VyY2VCdWZmZXIgb2JqZWN0IGluIGFjdGl2ZVNvdXJj
ZUJ1ZmZlcnMuCiAgICAgLy8gMy4gTGV0IGhpZ2hlc3QgZW5kIHRpbWUgYmUgdGhlIGxhcmdlc3Qg
cmFuZ2UgZW5kIHRpbWUgaW4gdGhlIGFjdGl2ZSByYW5nZXMuCkBAIC0xNTIsNyArMTUyLDcgQEAg
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVNvdXJjZTo6YnVmZgogCiAgICAgLy8gUmV0dXJu
IGFuIGVtcHR5IHJhbmdlIGlmIGFsbCByYW5nZXMgYXJlIGVtcHR5LgogICAgIGlmIChoaWdoZXN0
RW5kVGltZSA8IDApCi0gICAgICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAgICAg
ICAgcmV0dXJuIFBsYXRmb3JtVGltZVJhbmdlczo6Y3JlYXRlKCk7CiAKICAgICAvLyA0LiBMZXQg
aW50ZXJzZWN0aW9uIHJhbmdlcyBlcXVhbCBhIFRpbWVSYW5nZSBvYmplY3QgY29udGFpbmluZyBh
IHNpbmdsZSByYW5nZSBmcm9tIDAgdG8gaGlnaGVzdCBlbmQgdGltZS4KICAgICBSZWZQdHI8VGlt
ZVJhbmdlcz4gaW50ZXJzZWN0aW9uUmFuZ2VzID0gVGltZVJhbmdlczo6Y3JlYXRlKDAsIGhpZ2hl
c3RFbmRUaW1lKTsKQEAgLTE2OSwxMCArMTY5LDE1IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4g
TWVkaWFTb3VyY2U6OmJ1ZmYKIAogICAgICAgICAvLyA1LjMgTGV0IG5ldyBpbnRlcnNlY3Rpb24g
cmFuZ2VzIGVxdWFsIHRoZSB0aGUgaW50ZXJzZWN0aW9uIGJldHdlZW4gdGhlIGludGVyc2VjdGlv
biByYW5nZXMgYW5kIHRoZSBzb3VyY2UgcmFuZ2VzLgogICAgICAgICAvLyA1LjQgUmVwbGFjZSB0
aGUgcmFuZ2VzIGluIGludGVyc2VjdGlvbiByYW5nZXMgd2l0aCB0aGUgbmV3IGludGVyc2VjdGlv
biByYW5nZXMuCi0gICAgICAgIGludGVyc2VjdGlvblJhbmdlcy0+aW50ZXJzZWN0V2l0aChzb3Vy
Y2VSYW5nZXMpOworICAgICAgICBpbnRlcnNlY3Rpb25SYW5nZXMtPmludGVyc2VjdFdpdGgoKnNv
dXJjZVJhbmdlcyk7CiAgICAgfQogCi0gICAgcmV0dXJuIGludGVyc2VjdGlvblJhbmdlcy5yZWxl
YXNlKCk7CisgICAgYXV0byByZXN1bHQgPSBQbGF0Zm9ybVRpbWVSYW5nZXM6OmNyZWF0ZSgpOwor
ICAgIHVuc2lnbmVkIHNpemUgPSBpbnRlcnNlY3Rpb25SYW5nZXMtPmxlbmd0aCgpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspCisgICAgICAgIHJlc3VsdC0+YWRkKGlu
dGVyc2VjdGlvblJhbmdlcy0+c3RhcnQoaSwgQVNTRVJUX05PX0VYQ0VQVElPTiksIGludGVyc2Vj
dGlvblJhbmdlcy0+ZW5kKGksIEFTU0VSVF9OT19FWENFUFRJT04pKTsKKworICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlckJ1ZmZlcmVkRG9lc05vdENvbnRhaW5UaW1l
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlh
U291cmNlLmgJKHJldmlzaW9uIDE2NDM4MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvTWVkaWFTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBw
dWJsaWM6CiAgICAgLy8gTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50CiAgICAgdmlydHVhbCB2b2lk
IHNldFByaXZhdGVBbmRPcGVuKFBhc3NSZWY8TWVkaWFTb3VyY2VQcml2YXRlPikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGF0dGFjaFRvRWxlbWVudChIVE1MTWVkaWFFbGVt
ZW50Kik7CiAgICAgdm9pZCBjbG9zZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAkocmV2aXNpb24gMTY0MzgwKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05NjcsNyArOTY3LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVEaQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBlcmFzZWRSYW5n
ZXMtPmludmVydCgpOwotICAgICAgICAgICAgbV9idWZmZXJlZC0+aW50ZXJzZWN0V2l0aChlcmFz
ZWRSYW5nZXMuZ2V0KCkpOworICAgICAgICAgICAgbV9idWZmZXJlZC0+aW50ZXJzZWN0V2l0aCgq
ZXJhc2VkUmFuZ2VzLmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIDEuMTcgSWYgc3Bs
aWNlZCBhdWRpbyBmcmFtZSBpcyBzZXQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE2NDM4MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTc2NzUsNiArNzY3NSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xQYXRoLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXFBhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQYXR0ZXJuLmNwcCIgLz4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBsYXRmb3JtVGltZVJhbmdlcy5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xSZWdpb24uY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUm91bmRl
ZFJlY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcU2VnbWVudGVkRm9udERhdGEuY3BwIiAvPgpAQCAtMTkxMTEsNiArMTkxMTIsNyBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUGF0aFRyYXZlcnNhbFN0
YXRlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQ
YXR0ZXJuLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xQbGF0Zm9ybUxheWVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xQbGF0Zm9ybVRpbWVSYW5nZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFJlZ2lvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUm91bmRlZFJlY3QuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFNlZ21lbnRlZEZvbnREYXRhLmgiIC8+
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNjQzODApCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAg
LTEzODMsNiArMTM4Myw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xSZWdpb24uY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXFBsYXRmb3JtVGltZVJhbmdlcy5jcHAiPgorICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVxncmFwaGljczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUm91bmRlZFJlY3QuY3BwIj4KICAgICAgIDxG
aWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTgz
MjQsNiArODMyNyw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xQbGF0Zm9ybUxheWVyLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcUGxhdGZvcm1UaW1lUmFuZ2VzLmgiPgorICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVxncmFwaGljczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUmVnaW9uLmgiPgogICAgICAgPEZpbHRlcj5w
bGF0Zm9ybVxncmFwaGljczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTY0MzgwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDggQEAKIAkJMDczQkUzNTAxN0Qx
ODFBNjAwMkJENDMxIC8qIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIyMUJBODE3Q0YwQUQ0MDA4NDhF
NTEgLyogUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCAqLzsgfTsKIAkJMDc0MzAwQTUwRjRC
OEJDRjAwODA3NkNEIC8qIE1lZGlhUGxheWVyUHJpdmF0ZUlPUy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NDMwMEEzMEY0QjhCQ0YwMDgwNzZDRCAv
KiBNZWRpYVBsYXllclByaXZhdGVJT1MubW0gKi87IH07CiAJCTA3NDMwMEE2MEY0QjhCQ0YwMDgw
NzZDRCAvKiBNZWRpYVBsYXllclByaXZhdGVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NDMwMEE0MEY0QjhCQ0YwMDgwNzZDRCAvKiBNZWRpYVBs
YXllclByaXZhdGVJT1MuaCAqLzsgfTsKKwkJMDc0RTgyQkExOEE2OUYwRTAwN0VGNTRDIC8qIFBs
YXRmb3JtVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzRFODJCODE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2Vz
LmNwcCAqLzsgfTsKKwkJMDc0RTgyQkIxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJh
bmdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0
RTgyQjkxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3NTM4NjAyMTQ0ODlFOTgw
MEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRl
eHRUcmFjay5jcHAgKi87IH07CiAJCTA3NTM4NjAzMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRU
ZXh0VHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLzsgfTsKIAkJ
MDc2MzA2RDAxN0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NjMw
NkNDMTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY5NTcs
NiArNjk1OSw4IEBACiAJCTA3M0JFMzQ3MTdEMTdFN0EwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVz
ZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzQzMDBBMzBGNEI4QkNGMDA4MDc2Q0QgLyogTWVkaWFQbGF5ZXJQcml2
YXRlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQ
bGF5ZXJQcml2YXRlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzQzMDBB
NDBGNEI4QkNGMDA4MDc2Q0QgLyogTWVkaWFQbGF5ZXJQcml2YXRlSU9TLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUlPUy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwNzRFODJCODE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1U
aW1lUmFuZ2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRm
b3JtVGltZVJhbmdlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3NEU4MkI5
MThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1UaW1lUmFuZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkVGV4dFRyYWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc1Mzg2MDExNDQ4OUU5ODAwQjc4
NDUyIC8qIENhY2hlZFRleHRUcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDYWNoZWRUZXh0VHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2MzA2
Q0MxN0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJlYW1UcmFja1NvdXJjZXND
YWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk4NzksNiArMTk4ODMs
OCBAQAogCQkJCTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggKi8s
CiAJCQkJMDcyODQ3RTIxNkVCQzVCMDAwNDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggKi8s
CiAJCQkJMDcyODQ3RTMxNkVCQzVCMDAwNDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrTWVudS5o
ICovLAorCQkJCTA3NEU4MkI4MThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMu
Y3BwICovLAorCQkJCTA3NEU4MkI5MThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5n
ZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCAqLywK
IAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggKi8sCiAJCQkJQTczRjk1
RkMxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0LmNwcCAqLywKQEAgLTI0ODE2LDYgKzI0
ODIyLDcgQEAKIAkJCQkyOTdCRTNENjE2QzAzQzBCMDAzMzE2QkQgLyogUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk3QkUzRDcxNkMwM0MwRTAwMzMx
NkJEIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
RDhGODFCMTFDQUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTA3NEU4MkJCMThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzZCMDlBQzRENEYwMEE2QUFCNCAvKiBQbGF0Zm9y
bVdoZWVsRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxRDU5MUIzMTY2OTdBNkMwMEU2QkYw
MiAvKiBQbHVnSW5DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE5QzZFNEY0MEQ3NDVFNDgw
MDY0NDJFOSAvKiBQbHVnaW5EYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTI4MTk1LDYgKzI4MjAy
LDcgQEAKIAkJCQkyOTdCRTNEQTE2QzA0M0Q4MDAzMzE2QkQgLyogUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTdCRTNEODE2QzAzQ0NFMDAzMzE2QkQg
LyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFB
RDhGODFDMTFDQUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMDc0RTgyQkExOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdl
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUM2RTRGMzBENzQ1RTQ4MDA2NDQyRTkgLyogUGx1
Z2luRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzIwNUFCQjEyMzkyOTI3MDBCMTczODAg
LyogUGx1Z2luRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFEQTE0MTAwRTFBRTVE
OTAwMDIzRUU1IC8qIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE2NDM4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwNzUsMTAgKzMwNzUsMTEgQEAgZG91YmxlIEhUTUxNZWRpYUVsZW1l
bnQ6OnBlcmNlbnRMb2FkZWQoKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGRvdWJsZSBidWZm
ZXJlZCA9IDA7Ci0gICAgUmVmUHRyPFRpbWVSYW5nZXM+IHRpbWVSYW5nZXMgPSBtX3BsYXllci0+
YnVmZmVyZWQoKTsKKyAgICBib29sIGlnbm9yZWQ7CisgICAgYXV0byB0aW1lUmFuZ2VzID0gbV9w
bGF5ZXItPmJ1ZmZlcmVkKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRpbWVSYW5n
ZXMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgZG91YmxlIHN0YXJ0ID0gdGltZVJhbmdlcy0+
c3RhcnQoaSwgSUdOT1JFX0VYQ0VQVElPTik7Ci0gICAgICAgIGRvdWJsZSBlbmQgPSB0aW1lUmFu
Z2VzLT5lbmQoaSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgICAgIGRvdWJsZSBzdGFydCA9IHRp
bWVSYW5nZXMtPnN0YXJ0KGksIGlnbm9yZWQpOworICAgICAgICBkb3VibGUgZW5kID0gdGltZVJh
bmdlcy0+ZW5kKGksIGlnbm9yZWQpOwogICAgICAgICBidWZmZXJlZCArPSBlbmQgLSBzdGFydDsK
ICAgICB9CiAgICAgcmV0dXJuIGJ1ZmZlcmVkIC8gZHVyYXRpb247CkBAIC00MTEyLDEwICs0MTEz
LDEwIEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gSFRNTE1lZGlhRWxlbWVudDoKIAogI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCiAgICAgaWYgKG1fbWVkaWFTb3VyY2UpCi0gICAgICAgIHJldHVy
biBtX21lZGlhU291cmNlLT5idWZmZXJlZCgpOworICAgICAgICByZXR1cm4gVGltZVJhbmdlczo6
Y3JlYXRlKCptX21lZGlhU291cmNlLT5idWZmZXJlZCgpKTsKICNlbmRpZgogCi0gICAgcmV0dXJu
IG1fcGxheWVyLT5idWZmZXJlZCgpOworICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKm1f
cGxheWVyLT5idWZmZXJlZCgpKTsKIH0KIAogUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBIVE1MTWVk
aWFFbGVtZW50OjpwbGF5ZWQoKQpAQCAtNDEzNCw3ICs0MTM1LDEwIEBAIFBhc3NSZWZQdHI8VGlt
ZVJhbmdlcz4gSFRNTE1lZGlhRWxlbWVudDoKIAogUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBIVE1M
TWVkaWFFbGVtZW50OjpzZWVrYWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGxheWVyID8g
bV9wbGF5ZXItPnNlZWthYmxlKCkgOiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAgICBpZiAobV9w
bGF5ZXIpCisgICAgICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKm1fcGxheWVyLT5zZWVr
YWJsZSgpKTsKKworICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKIH0KIAogYm9vbCBI
VE1MTWVkaWFFbGVtZW50Ojpwb3RlbnRpYWxseVBsYXlpbmcoKSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTY0MzgwKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NSw3ICs5NSw3IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFDb250cm9sbGVyOjoKICAg
ICAvLyB1c2VyIGFnZW50IGhhcyBidWZmZXJlZCwgYXQgdGhlIHRpbWUgdGhlIGF0dHJpYnV0ZSBp
cyBldmFsdWF0ZWQuCiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkUmFuZ2VzID0gbV9t
ZWRpYUVsZW1lbnRzLmZpcnN0KCktPmJ1ZmZlcmVkKCk7CiAgICAgZm9yIChzaXplX3QgaW5kZXgg
PSAxOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCi0gICAgICAgIGJ1
ZmZlcmVkUmFuZ2VzLT5pbnRlcnNlY3RXaXRoKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmJ1ZmZl
cmVkKCkuZ2V0KCkpOworICAgICAgICBidWZmZXJlZFJhbmdlcy0+aW50ZXJzZWN0V2l0aCgqbV9t
ZWRpYUVsZW1lbnRzW2luZGV4XS0+YnVmZmVyZWQoKS5nZXQoKSk7CiAgICAgcmV0dXJuIGJ1ZmZl
cmVkUmFuZ2VzOwogfQogCkBAIC0xMDksNyArMTA5LDcgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2Vz
PiBNZWRpYUNvbnRyb2xsZXI6OgogICAgIC8vIHVzZXIgYWdlbnQgaXMgYWJsZSB0byBzZWVrIHRv
LCBhdCB0aGUgdGltZSB0aGUgYXR0cmlidXRlIGlzIGV2YWx1YXRlZC4KICAgICBSZWZQdHI8VGlt
ZVJhbmdlcz4gc2Vla2FibGVSYW5nZXMgPSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+c2Vla2Fi
bGUoKTsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRz
LnNpemUoKTsgKytpbmRleCkKLSAgICAgICAgc2Vla2FibGVSYW5nZXMtPmludGVyc2VjdFdpdGgo
bV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+c2Vla2FibGUoKS5nZXQoKSk7CisgICAgICAgIHNlZWth
YmxlUmFuZ2VzLT5pbnRlcnNlY3RXaXRoKCptX21lZGlhRWxlbWVudHNbaW5kZXhdLT5zZWVrYWJs
ZSgpLmdldCgpKTsKICAgICByZXR1cm4gc2Vla2FibGVSYW5nZXM7CiB9CiAKQEAgLTEyMyw3ICsx
MjMsNyBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhQ29udHJvbGxlcjo6CiAgICAgLy8g
dXNlciBhZ2VudCBoYXMgc28gZmFyIHJlbmRlcmVkLCBhdCB0aGUgdGltZSB0aGUgYXR0cmlidXRl
IGlzIGV2YWx1YXRlZC4KICAgICBSZWZQdHI8VGltZVJhbmdlcz4gcGxheWVkUmFuZ2VzID0gbV9t
ZWRpYUVsZW1lbnRzLmZpcnN0KCktPnBsYXllZCgpOwogICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQotICAgICAgICBwbGF5
ZWRSYW5nZXMtPnVuaW9uV2l0aChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5wbGF5ZWQoKS5nZXQo
KSk7CisgICAgICAgIHBsYXllZFJhbmdlcy0+dW5pb25XaXRoKCptX21lZGlhRWxlbWVudHNbaW5k
ZXhdLT5wbGF5ZWQoKS5nZXQoKSk7CiAgICAgcmV0dXJuIHBsYXllZFJhbmdlczsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwCShyZXZpc2lvbiAxNjQzODApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxODAg
KzI5LDExMCBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGVQbGFjZWhvbGRlci5oIgotI2luY2x1ZGUgPG1hdGguaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1UaW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGRvdWJsZSBzdGFydCwgZG91YmxlIGVu
ZCkKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gVGltZVJhbmdlczo6Y3JlYXRlKCkKIHsKLSAgICBh
ZGQoc3RhcnQsIGVuZCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUaW1lUmFuZ2VzKTsKIH0K
IAotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1lUmFuZ2VzOjpjb3B5KCkgY29uc3QKK1Bhc3NS
ZWZQdHI8VGltZVJhbmdlcz4gVGltZVJhbmdlczo6Y3JlYXRlKGRvdWJsZSBzdGFydCwgZG91Ymxl
IGVuZCkKIHsKLSAgICBSZWZQdHI8VGltZVJhbmdlcz4gbmV3U2Vzc2lvbiA9IFRpbWVSYW5nZXM6
OmNyZWF0ZSgpOwotICAgIAotICAgIHVuc2lnbmVkIHNpemUgPSBtX3Jhbmdlcy5zaXplKCk7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykKLSAgICAgICAgbmV3U2Vzc2lv
bi0+YWRkKG1fcmFuZ2VzW2ldLm1fc3RhcnQsIG1fcmFuZ2VzW2ldLm1fZW5kKTsKLSAgICAKLSAg
ICByZXR1cm4gbmV3U2Vzc2lvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBU
aW1lUmFuZ2VzKHN0YXJ0LCBlbmQpKTsKIH0KIAotdm9pZCBUaW1lUmFuZ2VzOjppbnZlcnQoKQor
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1lUmFuZ2VzOjpjcmVhdGUoY29uc3QgUGxhdGZvcm1U
aW1lUmFuZ2VzJiBvdGhlcikKIHsKLSAgICBSZWZQdHI8VGltZVJhbmdlcz4gaW52ZXJ0ZWQgPSBU
aW1lUmFuZ2VzOjpjcmVhdGUoKTsKLSAgICBkb3VibGUgcG9zSW5mID0gc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjppbmZpbml0eSgpOwotICAgIGRvdWJsZSBuZWdJbmYgPSAtc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOwotCi0gICAgaWYgKCFtX3Jhbmdlcy5zaXpl
KCkpCi0gICAgICAgIGludmVydGVkLT5hZGQobmVnSW5mLCBwb3NJbmYpOwotICAgIGVsc2Ugewot
ICAgICAgICBkb3VibGUgc3RhcnQgPSBtX3Jhbmdlcy5maXJzdCgpLm1fc3RhcnQ7Ci0gICAgICAg
IGlmIChzdGFydCAhPSBuZWdJbmYpCi0gICAgICAgICAgICBpbnZlcnRlZC0+YWRkKG5lZ0luZiwg
c3RhcnQpOwotCi0gICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggKyAxIDwgbV9y
YW5nZXMuc2l6ZSgpOyArK2luZGV4KQotICAgICAgICAgICAgaW52ZXJ0ZWQtPmFkZChtX3Jhbmdl
c1tpbmRleF0ubV9lbmQsIG1fcmFuZ2VzW2luZGV4ICsgMV0ubV9zdGFydCk7Ci0KLSAgICAgICAg
ZG91YmxlIGVuZCA9IG1fcmFuZ2VzLmxhc3QoKS5tX2VuZDsKLSAgICAgICAgaWYgKGVuZCAhPSBw
b3NJbmYpCi0gICAgICAgICAgICBpbnZlcnRlZC0+YWRkKGVuZCwgcG9zSW5mKTsKLSAgICB9Ci0K
LSAgICBtX3Jhbmdlcy5zd2FwKGludmVydGVkLT5tX3Jhbmdlcyk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBUaW1lUmFuZ2VzKG90aGVyKSk7CiB9CiAKLXZvaWQgVGltZVJhbmdlczo6aW50ZXJz
ZWN0V2l0aChjb25zdCBUaW1lUmFuZ2VzKiBvdGhlcikKK1RpbWVSYW5nZXM6OlRpbWVSYW5nZXMo
KQogewotICAgIEFTU0VSVChvdGhlcik7Ci0KLSAgICBpZiAob3RoZXIgPT0gdGhpcykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPFRpbWVSYW5nZXM+IGludmVydGVkT3RoZXIgPSBvdGhl
ci0+Y29weSgpOwotICAgIGludmVydGVkT3RoZXItPmludmVydCgpOwotCi0gICAgaW52ZXJ0KCk7
Ci0gICAgdW5pb25XaXRoKGludmVydGVkT3RoZXIuZ2V0KCkpOwotICAgIGludmVydCgpOwogfQog
Ci12b2lkIFRpbWVSYW5nZXM6OnVuaW9uV2l0aChjb25zdCBUaW1lUmFuZ2VzKiBvdGhlcikKK1Rp
bWVSYW5nZXM6OlRpbWVSYW5nZXMoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKQorICAgIDogbV9y
YW5nZXMoUGxhdGZvcm1UaW1lUmFuZ2VzKHN0YXJ0LCBlbmQpKQogewotICAgIEFTU0VSVChvdGhl
cik7Ci0gICAgUmVmUHRyPFRpbWVSYW5nZXM+IHVuaW9uZWQgPSBjb3B5KCk7Ci0gICAgZm9yIChz
aXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG90aGVyLT5tX3Jhbmdlcy5zaXplKCk7ICsraW5kZXgp
IHsKLSAgICAgICAgY29uc3QgUmFuZ2UmIHJhbmdlID0gb3RoZXItPm1fcmFuZ2VzW2luZGV4XTsK
LSAgICAgICAgdW5pb25lZC0+YWRkKHJhbmdlLm1fc3RhcnQsIHJhbmdlLm1fZW5kKTsKLSAgICB9
Cit9CiAKLSAgICBtX3Jhbmdlcy5zd2FwKHVuaW9uZWQtPm1fcmFuZ2VzKTsKK1RpbWVSYW5nZXM6
OlRpbWVSYW5nZXMoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiBvdGhlcikKKyAgICA6IG1fcmFu
Z2VzKG90aGVyKQorewogfQogCi1kb3VibGUgVGltZVJhbmdlczo6c3RhcnQodW5zaWduZWQgaW5k
ZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAKLXsgCi0gICAgaWYgKGluZGV4ID49IGxlbmd0
aCgpKSB7Citkb3VibGUgVGltZVJhbmdlczo6c3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlv
bkNvZGUmIGVjKSBjb25zdAoreworICAgIGJvb2wgdmFsaWQ7CisgICAgZG91YmxlIHJlc3VsdCA9
IG1fcmFuZ2VzLnN0YXJ0KGluZGV4LCB2YWxpZCk7CisKKyAgICBpZiAoIXZhbGlkKSB7CiAgICAg
ICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBy
ZXR1cm4gbV9yYW5nZXNbaW5kZXhdLm1fc3RhcnQ7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
ZG91YmxlIFRpbWVSYW5nZXM6OmVuZCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMp
IGNvbnN0IAogeyAKLSAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpIHsKKyAgICBib29sIHZhbGlk
OworICAgIGRvdWJsZSByZXN1bHQgPSBtX3Jhbmdlcy5lbmQoaW5kZXgsIHZhbGlkKTsKKworICAg
IGlmICghdmFsaWQpIHsKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQotICAgIHJldHVybiBtX3Jhbmdlc1tpbmRleF0ubV9lbmQ7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBUaW1lUmFuZ2VzOjphZGQoZG91YmxlIHN0YXJ0LCBkb3Vi
bGUgZW5kKSAKK3ZvaWQgVGltZVJhbmdlczo6aW52ZXJ0KCkKIHsKLSAgICBBU1NFUlQoc3RhcnQg
PD0gZW5kKTsKLSAgICB1bnNpZ25lZCBpbnQgb3ZlcmxhcHBpbmdBcmNJbmRleDsKLSAgICBSYW5n
ZSBhZGRlZFJhbmdlKHN0YXJ0LCBlbmQpOwotCi0gICAgLy8gRm9yIGVhY2ggcHJlc2VudCByYW5n
ZSBjaGVjayBpZiB3ZSBuZWVkIHRvOgotICAgIC8vIC0gbWVyZ2Ugd2l0aCB0aGUgYWRkZWQgcmFu
Z2UsIGluIGNhc2Ugd2UgYXJlIG92ZXJsYXBwaW5nIG9yIGNvbnRpZ3VvdXMKLSAgICAvLyAtIE5l
ZWQgdG8gaW5zZXJ0IGluIHBsYWNlLCB3ZSB3ZSBhcmUgY29tcGxldGVseSwgbm90IG92ZXJsYXBw
aW5nIGFuZCBub3QgY29udGlndW91cwotICAgIC8vIGluIGJldHdlZW4gdHdvIHJhbmdlcy4KLSAg
ICAvLwotICAgIC8vIFRPRE86IEdpdmVuIHRoYXQgd2UgYXNzdW1lIHRoYXQgcmFuZ2VzIGFyZSBj
b3JyZWN0bHkgb3JkZXJlZCwgdGhpcyBjb3VsZCBiZSBvcHRpbWl6ZWQuCi0KLSAgICBmb3IgKG92
ZXJsYXBwaW5nQXJjSW5kZXggPSAwOyBvdmVybGFwcGluZ0FyY0luZGV4IDwgbV9yYW5nZXMuc2l6
ZSgpOyBvdmVybGFwcGluZ0FyY0luZGV4KyspIHsKLSAgICAgICAgaWYgKGFkZGVkUmFuZ2UuaXNP
dmVybGFwcGluZ1JhbmdlKG1fcmFuZ2VzW292ZXJsYXBwaW5nQXJjSW5kZXhdKQotICAgICAgICAg
fHwgYWRkZWRSYW5nZS5pc0NvbnRpZ3VvdXNXaXRoUmFuZ2UobV9yYW5nZXNbb3ZlcmxhcHBpbmdB
cmNJbmRleF0pKSB7Ci0gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1lcmdlIHRoZSBhZGRlZFJh
bmdlIGFuZCB0aGF0IHJhbmdlLgotICAgICAgICAgICAgYWRkZWRSYW5nZSA9IGFkZGVkUmFuZ2Uu
dW5pb25XaXRoT3ZlcmxhcHBpbmdPckNvbnRpZ3VvdXNSYW5nZShtX3Jhbmdlc1tvdmVybGFwcGlu
Z0FyY0luZGV4XSk7Ci0gICAgICAgICAgICBtX3Jhbmdlcy5yZW1vdmUob3ZlcmxhcHBpbmdBcmNJ
bmRleCk7Ci0gICAgICAgICAgICBvdmVybGFwcGluZ0FyY0luZGV4LS07Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSBmb3Igd2hpY2ggdGhlcmUgaXMgbm8g
bW9yZSB0byBkbwotICAgICAgICAgICAgaWYgKCFvdmVybGFwcGluZ0FyY0luZGV4KSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGFkZGVkUmFuZ2UuaXNCZWZvcmVSYW5nZShtX3Jhbmdlc1swXSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgLy8gRmlyc3QgaW5kZXgsIGFuZCB3ZSBhcmUgY29tcGxldGVs
eSBiZWZvcmUgdGhhdCByYW5nZSAoYW5kIG5vdCBjb250aWd1b3VzLCBub3Igb3ZlcmxhcHBpbmcp
LgotICAgICAgICAgICAgICAgICAgICAvLyBXZSBqdXN0IG5lZWQgdG8gYmUgaW5zZXJ0ZWQgaGVy
ZS4KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAobV9yYW5nZXNbb3ZlcmxhcHBpbmdB
cmNJbmRleCAtIDFdLmlzQmVmb3JlUmFuZ2UoYWRkZWRSYW5nZSkKLSAgICAgICAgICAgICAgICAg
JiYgYWRkZWRSYW5nZS5pc0JlZm9yZVJhbmdlKG1fcmFuZ2VzW292ZXJsYXBwaW5nQXJjSW5kZXhd
KSkgewotICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgZXhhY3RseSBhZnRlciB0aGUgY3Vy
cmVudCBwcmV2aW91cyByYW5nZSwgYW5kIGJlZm9yZSB0aGUgY3VycmVudCByYW5nZSwgd2hpbGUK
LSAgICAgICAgICAgICAgICAgICAgLy8gbm90IG92ZXJsYXBwaW5nIHdpdGggbm9uZSBvZiB0aGVt
LiBJbnNlcnQgaGVyZS4KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQorICAgIG1fcmFuZ2VzLmludmVy
dCgpOworfQorCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IFRpbWVSYW5nZXM6OmNvcHkoKSBjb25z
dAoreworICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUobV9yYW5nZXMpOworfQogCi0gICAg
Ly8gTm93IHRoYXQgd2UgYXJlIHN1cmUgd2UgZG9uJ3Qgb3ZlcmxhcCB3aXRoIGFueSByYW5nZSwg
anVzdCBhZGQgaXQuCi0gICAgbV9yYW5nZXMuaW5zZXJ0KG92ZXJsYXBwaW5nQXJjSW5kZXgsIGFk
ZGVkUmFuZ2UpOwordm9pZCBUaW1lUmFuZ2VzOjppbnRlcnNlY3RXaXRoKGNvbnN0IFRpbWVSYW5n
ZXMmIG90aGVyKQoreworICAgIG1fcmFuZ2VzLmludGVyc2VjdFdpdGgoKm90aGVyLnJhbmdlcygp
KTsKK30KKwordm9pZCBUaW1lUmFuZ2VzOjp1bmlvbldpdGgoY29uc3QgVGltZVJhbmdlcyYgb3Ro
ZXIpCit7CisgICAgbV9yYW5nZXMudW5pb25XaXRoKCpvdGhlci5yYW5nZXMoKSk7Cit9CisKK3Vu
c2lnbmVkIFRpbWVSYW5nZXM6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmFuZ2Vz
Lmxlbmd0aCgpOworfQorCit2b2lkIFRpbWVSYW5nZXM6OmFkZChkb3VibGUgc3RhcnQsIGRvdWJs
ZSBlbmQpCit7CisgICAgbV9yYW5nZXMuYWRkKHN0YXJ0LCBlbmQpOwogfQogCiBib29sIFRpbWVS
YW5nZXM6OmNvbnRhaW4oZG91YmxlIHRpbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZpbmQodGlt
ZSkgIT0gbm90Rm91bmQ7CisgICAgcmV0dXJuIG1fcmFuZ2VzLmNvbnRhaW4odGltZSk7CiB9CiAK
IHNpemVfdCBUaW1lUmFuZ2VzOjpmaW5kKGRvdWJsZSB0aW1lKSBjb25zdAogewotICAgIGZvciAo
dW5zaWduZWQgbiA9IDA7IG4gPCBsZW5ndGgoKTsgbisrKSB7Ci0gICAgICAgIGlmICh0aW1lID49
IHN0YXJ0KG4sIElHTk9SRV9FWENFUFRJT04pICYmIHRpbWUgPD0gZW5kKG4sIElHTk9SRV9FWENF
UFRJT04pKQotICAgICAgICAgICAgcmV0dXJuIG47Ci0gICAgfQotICAgIHJldHVybiBub3RGb3Vu
ZDsKKyAgICByZXR1cm4gbV9yYW5nZXMuZmluZCh0aW1lKTsKIH0KIAogZG91YmxlIFRpbWVSYW5n
ZXM6Om5lYXJlc3QoZG91YmxlIHRpbWUpIGNvbnN0CiB7Ci0gICAgZG91YmxlIGNsb3Nlc3REZWx0
YSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKLSAgICBkb3VibGUg
Y2xvc2VzdFRpbWUgPSAwOwotICAgIHVuc2lnbmVkIGNvdW50ID0gbGVuZ3RoKCk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBuZHggPSAwOyBuZHggPCBjb3VudDsgbmR4KyspIHsKLSAgICAgICAgZG91Ymxl
IHN0YXJ0VGltZSA9IHN0YXJ0KG5keCwgSUdOT1JFX0VYQ0VQVElPTik7Ci0gICAgICAgIGRvdWJs
ZSBlbmRUaW1lID0gZW5kKG5keCwgSUdOT1JFX0VYQ0VQVElPTik7Ci0gICAgICAgIGlmICh0aW1l
ID49IHN0YXJ0VGltZSAmJiB0aW1lIDw9IGVuZFRpbWUpCi0gICAgICAgICAgICByZXR1cm4gdGlt
ZTsKLSAgICAgICAgaWYgKGZhYnMoc3RhcnRUaW1lIC0gdGltZSkgPCBjbG9zZXN0RGVsdGEpIHsK
LSAgICAgICAgICAgIGNsb3Nlc3RUaW1lID0gc3RhcnRUaW1lOwotICAgICAgICAgICAgY2xvc2Vz
dERlbHRhID0gZmFic2Yoc3RhcnRUaW1lIC0gdGltZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KGZhYnMoZW5kVGltZSAtIHRpbWUpIDwgY2xvc2VzdERlbHRhKSB7Ci0gICAgICAgICAgICBjbG9z
ZXN0VGltZSA9IGVuZFRpbWU7Ci0gICAgICAgICAgICBjbG9zZXN0RGVsdGEgPSBmYWJzZihlbmRU
aW1lIC0gdGltZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGNsb3Nlc3RUaW1lOwor
ICAgIHJldHVybiBtX3Jhbmdlcy5uZWFyZXN0KHRpbWUpOwogfQogCiBkb3VibGUgVGltZVJhbmdl
czo6dG90YWxEdXJhdGlvbigpIGNvbnN0CiB7Ci0gICAgZG91YmxlIHRvdGFsID0gMDsKLSAgICBm
b3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgbGVuZ3RoKCk7IG4rKykKLSAgICAgICAgdG90YWwgKz0g
ZmFicyhlbmQobiwgSUdOT1JFX0VYQ0VQVElPTikgLSBzdGFydChuLCBJR05PUkVfRVhDRVBUSU9O
KSk7Ci0gICAgcmV0dXJuIHRvdGFsOworICAgIHJldHVybiBtX3Jhbmdlcy50b3RhbER1cmF0aW9u
KCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oCShyZXZpc2lvbiAxNjQz
ODApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBUaW1lUmFuZ2VzX2gKICNkZWZpbmUgVGltZVJhbmdl
c19oCiAKKyNpbmNsdWRlICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKICNpbmNsdWRlIDxhbGdvcml0
aG0+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgpAQCAtMzcsODIgKzM4LDM1IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNs
YXNzIFRpbWVSYW5nZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxUaW1lUmFuZ2VzPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gY3JlYXRlKCkgCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRpbWVSYW5nZXMpOwotICAgIH0KLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBjcmVhdGUoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUaW1lUmFuZ2VzKHN0YXJ0LCBlbmQp
KTsKLSAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gY3JlYXRlKCk7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gY3JlYXRlKGRvdWJsZSBzdGFydCwgZG91
YmxlIGVuZCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gY3JlYXRlKGNvbnN0
IFBsYXRmb3JtVGltZVJhbmdlcyYpOwogCi0gICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBjb3B5
KCkgY29uc3Q7Ci0gICAgdm9pZCBpbnZlcnQoKTsKLSAgICB2b2lkIGludGVyc2VjdFdpdGgoY29u
c3QgVGltZVJhbmdlcyopOwotICAgIHZvaWQgdW5pb25XaXRoKGNvbnN0IFRpbWVSYW5nZXMqKTsK
LQotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VzLnNpemUoKTsg
fQogICAgIGRvdWJsZSBzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OwogICAgIGRvdWJsZSBlbmQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsK
IAotICAgIHZvaWQgYWRkKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCk7CisgICAgUGFzc1JlZlB0
cjxUaW1lUmFuZ2VzPiBjb3B5KCkgY29uc3Q7CisgICAgdm9pZCBpbnZlcnQoKTsKKyAgICB2b2lk
IGludGVyc2VjdFdpdGgoY29uc3QgVGltZVJhbmdlcyYpOworICAgIHZvaWQgdW5pb25XaXRoKGNv
bnN0IFRpbWVSYW5nZXMmKTsKICAgICAKLSAgICBib29sIGNvbnRhaW4oZG91YmxlIHRpbWUpIGNv
bnN0OworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogCi0gICAgc2l6ZV90IGZpbmQoZG91
YmxlIHRpbWUpIGNvbnN0OworICAgIHZvaWQgYWRkKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCk7
CisgICAgYm9vbCBjb250YWluKGRvdWJsZSB0aW1lKSBjb25zdDsKICAgICAKKyAgICBzaXplX3Qg
ZmluZChkb3VibGUgdGltZSkgY29uc3Q7CiAgICAgZG91YmxlIG5lYXJlc3QoZG91YmxlIHRpbWUp
IGNvbnN0OwotCiAgICAgZG91YmxlIHRvdGFsRHVyYXRpb24oKSBjb25zdDsKIAogcHJpdmF0ZToK
LSAgICBUaW1lUmFuZ2VzKCkgeyB9CisgICAgZXhwbGljaXQgVGltZVJhbmdlcygpOwogICAgIFRp
bWVSYW5nZXMoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKLSAgICBUaW1lUmFuZ2VzKGNvbnN0
IFRpbWVSYW5nZXMmKTsKKyAgICBUaW1lUmFuZ2VzKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYp
OwogCi0gICAgLy8gV2UgY29uc2lkZXIgYWxsIHRoZSBSYW5nZXMgdG8gYmUgc2VtaS1ib3VuZGVk
IGFzIGZvbGxvdzogW3N0YXJ0LCBlbmRbCi0gICAgc3RydWN0IFJhbmdlIHsKLSAgICAgICAgUmFu
Z2UoKSB7IH0KLSAgICAgICAgUmFuZ2UoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3RhcnQ7Ci0gICAgICAgICAgICBtX2VuZCA9IGVu
ZDsKLSAgICAgICAgfQotICAgICAgICBkb3VibGUgbV9zdGFydDsKLSAgICAgICAgZG91YmxlIG1f
ZW5kOwotCi0gICAgICAgIGlubGluZSBib29sIGlzUG9pbnRJblJhbmdlKGRvdWJsZSBwb2ludCkg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fc3RhcnQgPD0gcG9pbnQgJiYg
cG9pbnQgPCBtX2VuZDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaW5saW5lIGJvb2wg
aXNPdmVybGFwcGluZ1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSkgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGlzUG9pbnRJblJhbmdlKHJhbmdlLm1fc3RhcnQpIHx8IGlzUG9p
bnRJblJhbmdlKHJhbmdlLm1fZW5kKSB8fCByYW5nZS5pc1BvaW50SW5SYW5nZShtX3N0YXJ0KTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlubGluZSBib29sIGlzQ29udGlndW91c1dpdGhSYW5nZShj
b25zdCBSYW5nZSYgcmFuZ2UpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBy
YW5nZS5tX3N0YXJ0ID09IG1fZW5kIHx8IHJhbmdlLm1fZW5kID09IG1fc3RhcnQ7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIGlubGluZSBSYW5nZSB1bmlvbldpdGhPdmVybGFwcGluZ09y
Q29udGlndW91c1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSkgY29uc3QKLSAgICAgICAgewotICAg
ICAgICAgICAgUmFuZ2UgcmV0OwotCi0gICAgICAgICAgICByZXQubV9zdGFydCA9IHN0ZDo6bWlu
KG1fc3RhcnQsIHJhbmdlLm1fc3RhcnQpOwotICAgICAgICAgICAgcmV0Lm1fZW5kID0gc3RkOjpt
YXgobV9lbmQsIHJhbmdlLm1fZW5kKTsKLQotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlubGluZSBib29sIGlzQmVmb3JlUmFuZ2UoY29uc3QgUmFuZ2UmIHJh
bmdlKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmFuZ2UubV9zdGFydCA+
PSBtX2VuZDsKLSAgICAgICAgfQotICAgIH07Ci0gICAgCi0gICAgVmVjdG9yPFJhbmdlPiBtX3Jh
bmdlczsKKyAgICBjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMqIHJhbmdlcygpIGNvbnN0IHsgcmV0
dXJuICZtX3JhbmdlczsgfQorCisgICAgUGxhdGZvcm1UaW1lUmFuZ2VzIG1fcmFuZ2VzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2aXNpb24gMTY0MzgwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1
ZGUgIlRpbWVSYW5nZXMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBkb3VibGUgbWF4VGltZVNlZWthYmxlRG91YmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQog
ICAgIHZpcnR1YWwgZG91YmxlIG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCB7IHJl
dHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsgfQorICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCB7IHJldHVybiBQbGF0Zm9ybVRp
bWVSYW5nZXM6OmNyZWF0ZSgpOyB9CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHRvdGFsQnl0ZXMo
KSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBib29sIGRpZExvYWRpbmdQcm9ncmVz
cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC03MDMsMTIgKzcwMywxMiBAQCB2b2lkIE1l
ZGlhUGxheWVyOjpzZXRQcmVzZXJ2ZXNQaXRjaChib29sCiAgICAgbV9wcml2YXRlLT5zZXRQcmVz
ZXJ2ZXNQaXRjaChwcmVzZXJ2ZXNQaXRjaCk7CiB9CiAKLVBhc3NSZWZQdHI8VGltZVJhbmdlcz4g
TWVkaWFQbGF5ZXI6OmJ1ZmZlcmVkKCkKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5n
ZXM+IE1lZGlhUGxheWVyOjpidWZmZXJlZCgpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YnVm
ZmVyZWQoKTsKIH0KIAotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllcjo6c2Vla2Fi
bGUoKQorc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXI6OnNl
ZWthYmxlKCkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5zZWVrYWJsZSgpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCShyZXZp
c2lvbiAxNjQzODApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsMTIgKzEyOCwxMiBAQCBjbGFzcyBDb250ZW50
VHlwZTsKIGNsYXNzIEZyYW1lVmlldzsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDNEOworY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIEludFJlY3Q7CiBjbGFz
cyBJbnRTaXplOwogY2xhc3MgTWVkaWFQbGF5ZXI7CiBzdHJ1Y3QgTWVkaWFQbGF5ZXJGYWN0b3J5
OwotY2xhc3MgVGltZVJhbmdlczsKLWNsYXNzIEhvc3RXaW5kb3c7CitjbGFzcyBQbGF0Zm9ybVRp
bWVSYW5nZXM7CiAKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04pCiBzdHJ1
Y3QgR3JhcGhpY3NEZXZpY2VBZGFwdGVyOwpAQCAtMzUyLDggKzM1Miw4IEBAIHB1YmxpYzoKICAg
ICBib29sIHByZXNlcnZlc1BpdGNoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQcmVzZXJ2ZXNQaXRj
aChib29sKTsKIAotICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKTsKLSAgICBQ
YXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBs
YXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBzZWVrYWJsZSgpOwogICAgIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKTsK
ICAgICBkb3VibGUgbWF4VGltZVNlZWthYmxlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCShyZXZpc2lv
biAxNjQzODApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOSBAQAogI2lmIEVOQUJMRShW
SURFTykKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiVGltZVJhbmdlcy5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTEwOCwxMSArMTA5LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1heFRpbWVTZWVr
YWJsZURvdWJsZSgpID8gVGltZVJhbmdlczo6Y3JlYXRlKG1pblRpbWVTZWVrYWJsZSgpLCBtYXhU
aW1lU2Vla2FibGVEb3VibGUoKSkgOiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsgfQorICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCB7
IHJldHVybiBtYXhUaW1lU2Vla2FibGVEb3VibGUoKSA/IFBsYXRmb3JtVGltZVJhbmdlczo6Y3Jl
YXRlKG1pblRpbWVTZWVrYWJsZSgpLCBtYXhUaW1lU2Vla2FibGVEb3VibGUoKSkgOiBQbGF0Zm9y
bVRpbWVSYW5nZXM6OmNyZWF0ZSgpOyB9CiAgICAgdmlydHVhbCBmbG9hdCBtYXhUaW1lU2Vla2Fi
bGUoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBkb3VibGUgbWF4VGltZVNlZWth
YmxlRG91YmxlKCkgY29uc3QgeyByZXR1cm4gbWF4VGltZVNlZWthYmxlKCk7IH0KICAgICB2aXJ0
dWFsIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25z
dCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgPSAw
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVBy
aXZhdGVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaAkocmV2aXNpb24gMTY0MzgwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCiAKLSNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1UaW1lUmFu
Z2VzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJpdmF0
ZUFuZE9wZW4oUGFzc1JlZjxNZWRpYVNvdXJjZVByaXZhdGU+KSA9IDA7CiAgICAgdmlydHVhbCBk
b3VibGUgZHVyYXRpb24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCA9IDA7CiB9OwogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
VGltZVJhbmdlcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlBsYXRm
b3JtVGltZVJhbmdlcy5oIgorCisjaW5jbHVkZSA8bWF0aC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IFBsYXRmb3JtVGltZVJh
bmdlczo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRp
bWVSYW5nZXM+KCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IFBs
YXRmb3JtVGltZVJhbmdlczo6Y3JlYXRlKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCkKK3sKKyAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KHN0YXJ0LCBlbmQp
OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBQbGF0Zm9ybVRpbWVS
YW5nZXM6OmNyZWF0ZShjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmIG90aGVyKQoreworICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4ob3RoZXIpOworfQorICAg
IAorUGxhdGZvcm1UaW1lUmFuZ2VzOjpQbGF0Zm9ybVRpbWVSYW5nZXMoZG91YmxlIHN0YXJ0LCBk
b3VibGUgZW5kKQoreworICAgIGFkZChzdGFydCwgZW5kKTsKK30KKworUGxhdGZvcm1UaW1lUmFu
Z2VzOjpQbGF0Zm9ybVRpbWVSYW5nZXMoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiBvdGhlcikK
K3sKKyAgICBjb3B5KG90aGVyKTsKK30KKworUGxhdGZvcm1UaW1lUmFuZ2VzJiBQbGF0Zm9ybVRp
bWVSYW5nZXM6Om9wZXJhdG9yPShjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmIG90aGVyKQorewor
ICAgIHJldHVybiBjb3B5KG90aGVyKTsKK30KKworUGxhdGZvcm1UaW1lUmFuZ2VzJiBQbGF0Zm9y
bVRpbWVSYW5nZXM6OmNvcHkoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiBvdGhlcikKK3sKKyAg
ICB1bnNpZ25lZCBzaXplID0gb3RoZXIubV9yYW5nZXMuc2l6ZSgpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspCisgICAgICAgIGFkZChvdGhlci5tX3Jhbmdlc1tpXS5t
X3N0YXJ0LCBvdGhlci5tX3Jhbmdlc1tpXS5tX2VuZCk7CisgICAgCisgICAgcmV0dXJuICp0aGlz
OworfQorCit2b2lkIFBsYXRmb3JtVGltZVJhbmdlczo6aW52ZXJ0KCkKK3sKKyAgICBQbGF0Zm9y
bVRpbWVSYW5nZXMgaW52ZXJ0ZWQ7CisgICAgZG91YmxlIHBvc0luZiA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKyAgICBkb3VibGUgbmVnSW5mID0gLXN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKKworICAgIGlmICghbV9yYW5nZXMuc2l6
ZSgpKQorICAgICAgICBpbnZlcnRlZC5hZGQobmVnSW5mLCBwb3NJbmYpOworICAgIGVsc2Ugewor
ICAgICAgICBkb3VibGUgc3RhcnQgPSBtX3Jhbmdlcy5maXJzdCgpLm1fc3RhcnQ7CisgICAgICAg
IGlmIChzdGFydCAhPSBuZWdJbmYpCisgICAgICAgICAgICBpbnZlcnRlZC5hZGQobmVnSW5mLCBz
dGFydCk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCArIDEgPCBtX3Jh
bmdlcy5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBpbnZlcnRlZC5hZGQobV9yYW5nZXNb
aW5kZXhdLm1fZW5kLCBtX3Jhbmdlc1tpbmRleCArIDFdLm1fc3RhcnQpOworCisgICAgICAgIGRv
dWJsZSBlbmQgPSBtX3Jhbmdlcy5sYXN0KCkubV9lbmQ7CisgICAgICAgIGlmIChlbmQgIT0gcG9z
SW5mKQorICAgICAgICAgICAgaW52ZXJ0ZWQuYWRkKGVuZCwgcG9zSW5mKTsKKyAgICB9CisKKyAg
ICBtX3Jhbmdlcy5zd2FwKGludmVydGVkLm1fcmFuZ2VzKTsKK30KKwordm9pZCBQbGF0Zm9ybVRp
bWVSYW5nZXM6OmludGVyc2VjdFdpdGgoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiBvdGhlcikK
K3sKKyAgICBQbGF0Zm9ybVRpbWVSYW5nZXMgaW52ZXJ0ZWRPdGhlcihvdGhlcik7CisKKyAgICBp
bnZlcnRlZE90aGVyLmludmVydCgpOworICAgIGludmVydCgpOworICAgIHVuaW9uV2l0aChpbnZl
cnRlZE90aGVyKTsKKyAgICBpbnZlcnQoKTsKK30KKwordm9pZCBQbGF0Zm9ybVRpbWVSYW5nZXM6
OnVuaW9uV2l0aChjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmIG90aGVyKQoreworICAgIFBsYXRm
b3JtVGltZVJhbmdlcyB1bmlvbmVkKCp0aGlzKTsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MDsgaW5kZXggPCBvdGhlci5tX3Jhbmdlcy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgY29u
c3QgUmFuZ2UmIHJhbmdlID0gb3RoZXIubV9yYW5nZXNbaW5kZXhdOworICAgICAgICB1bmlvbmVk
LmFkZChyYW5nZS5tX3N0YXJ0LCByYW5nZS5tX2VuZCk7CisgICAgfQorCisgICAgbV9yYW5nZXMu
c3dhcCh1bmlvbmVkLm1fcmFuZ2VzKTsKK30KKworZG91YmxlIFBsYXRmb3JtVGltZVJhbmdlczo6
c3RhcnQodW5zaWduZWQgaW5kZXgsIGJvb2wmIHZhbGlkKSBjb25zdAoreyAKKyAgICBpZiAoaW5k
ZXggPj0gbGVuZ3RoKCkpIHsKKyAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorICAgIAorICAgIHZhbGlkID0gdHJ1ZTsKKyAgICByZXR1cm4gbV9yYW5nZXNb
aW5kZXhdLm1fc3RhcnQ7Cit9CisKK2RvdWJsZSBQbGF0Zm9ybVRpbWVSYW5nZXM6OmVuZCh1bnNp
Z25lZCBpbmRleCwgYm9vbCYgdmFsaWQpIGNvbnN0Cit7IAorICAgIGlmIChpbmRleCA+PSBsZW5n
dGgoKSkgeworICAgICAgICB2YWxpZCA9IGZhbHNlOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisKKyAgICB2YWxpZCA9IHRydWU7CisgICAgcmV0dXJuIG1fcmFuZ2VzW2luZGV4XS5tX2VuZDsK
K30KKwordm9pZCBQbGF0Zm9ybVRpbWVSYW5nZXM6OmFkZChkb3VibGUgc3RhcnQsIGRvdWJsZSBl
bmQpCit7CisgICAgQVNTRVJUKHN0YXJ0IDw9IGVuZCk7CisgICAgdW5zaWduZWQgaW50IG92ZXJs
YXBwaW5nQXJjSW5kZXg7CisgICAgUmFuZ2UgYWRkZWRSYW5nZShzdGFydCwgZW5kKTsKKworICAg
IC8vIEZvciBlYWNoIHByZXNlbnQgcmFuZ2UgY2hlY2sgaWYgd2UgbmVlZCB0bzoKKyAgICAvLyAt
IG1lcmdlIHdpdGggdGhlIGFkZGVkIHJhbmdlLCBpbiBjYXNlIHdlIGFyZSBvdmVybGFwcGluZyBv
ciBjb250aWd1b3VzCisgICAgLy8gLSBOZWVkIHRvIGluc2VydCBpbiBwbGFjZSwgd2Ugd2UgYXJl
IGNvbXBsZXRlbHksIG5vdCBvdmVybGFwcGluZyBhbmQgbm90IGNvbnRpZ3VvdXMKKyAgICAvLyBp
biBiZXR3ZWVuIHR3byByYW5nZXMuCisgICAgLy8KKyAgICAvLyBUT0RPOiBHaXZlbiB0aGF0IHdl
IGFzc3VtZSB0aGF0IHJhbmdlcyBhcmUgY29ycmVjdGx5IG9yZGVyZWQsIHRoaXMgY291bGQgYmUg
b3B0aW1pemVkLgorCisgICAgZm9yIChvdmVybGFwcGluZ0FyY0luZGV4ID0gMDsgb3ZlcmxhcHBp
bmdBcmNJbmRleCA8IG1fcmFuZ2VzLnNpemUoKTsgb3ZlcmxhcHBpbmdBcmNJbmRleCsrKSB7Cisg
ICAgICAgIGlmIChhZGRlZFJhbmdlLmlzT3ZlcmxhcHBpbmdSYW5nZShtX3Jhbmdlc1tvdmVybGFw
cGluZ0FyY0luZGV4XSkKKyAgICAgICAgIHx8IGFkZGVkUmFuZ2UuaXNDb250aWd1b3VzV2l0aFJh
bmdlKG1fcmFuZ2VzW292ZXJsYXBwaW5nQXJjSW5kZXhdKSkgeworICAgICAgICAgICAgLy8gV2Ug
bmVlZCB0byBtZXJnZSB0aGUgYWRkZWRSYW5nZSBhbmQgdGhhdCByYW5nZS4KKyAgICAgICAgICAg
IGFkZGVkUmFuZ2UgPSBhZGRlZFJhbmdlLnVuaW9uV2l0aE92ZXJsYXBwaW5nT3JDb250aWd1b3Vz
UmFuZ2UobV9yYW5nZXNbb3ZlcmxhcHBpbmdBcmNJbmRleF0pOworICAgICAgICAgICAgbV9yYW5n
ZXMucmVtb3ZlKG92ZXJsYXBwaW5nQXJjSW5kZXgpOworICAgICAgICAgICAgb3ZlcmxhcHBpbmdB
cmNJbmRleC0tOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgdGhlIGNh
c2UgZm9yIHdoaWNoIHRoZXJlIGlzIG5vIG1vcmUgdG8gZG8KKyAgICAgICAgICAgIGlmICghb3Zl
cmxhcHBpbmdBcmNJbmRleCkgeworICAgICAgICAgICAgICAgIGlmIChhZGRlZFJhbmdlLmlzQmVm
b3JlUmFuZ2UobV9yYW5nZXNbMF0pKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEZpcnN0IGlu
ZGV4LCBhbmQgd2UgYXJlIGNvbXBsZXRlbHkgYmVmb3JlIHRoYXQgcmFuZ2UgKGFuZCBub3QgY29u
dGlndW91cywgbm9yIG92ZXJsYXBwaW5nKS4KKyAgICAgICAgICAgICAgICAgICAgLy8gV2UganVz
dCBuZWVkIHRvIGJlIGluc2VydGVkIGhlcmUuCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWYgKG1fcmFuZ2VzW292ZXJsYXBwaW5nQXJjSW5kZXggLSAxXS5pc0JlZm9yZVJhbmdlKGFkZGVk
UmFuZ2UpCisgICAgICAgICAgICAgICAgICYmIGFkZGVkUmFuZ2UuaXNCZWZvcmVSYW5nZShtX3Jh
bmdlc1tvdmVybGFwcGluZ0FyY0luZGV4XSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2Ug
YXJlIGV4YWN0bHkgYWZ0ZXIgdGhlIGN1cnJlbnQgcHJldmlvdXMgcmFuZ2UsIGFuZCBiZWZvcmUg
dGhlIGN1cnJlbnQgcmFuZ2UsIHdoaWxlCisgICAgICAgICAgICAgICAgICAgIC8vIG5vdCBvdmVy
bGFwcGluZyB3aXRoIG5vbmUgb2YgdGhlbS4gSW5zZXJ0IGhlcmUuCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIE5vdyB0aGF0IHdlIGFyZSBzdXJlIHdlIGRvbid0IG92ZXJsYXAgd2l0
aCBhbnkgcmFuZ2UsIGp1c3QgYWRkIGl0LgorICAgIG1fcmFuZ2VzLmluc2VydChvdmVybGFwcGlu
Z0FyY0luZGV4LCBhZGRlZFJhbmdlKTsKK30KKworYm9vbCBQbGF0Zm9ybVRpbWVSYW5nZXM6OmNv
bnRhaW4oZG91YmxlIHRpbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZpbmQodGltZSkgIT0gbm90
Rm91bmQ7Cit9CisKK3NpemVfdCBQbGF0Zm9ybVRpbWVSYW5nZXM6OmZpbmQoZG91YmxlIHRpbWUp
IGNvbnN0Cit7CisgICAgYm9vbCBpZ25vcmVJbnZhbGlkOworICAgIGZvciAodW5zaWduZWQgbiA9
IDA7IG4gPCBsZW5ndGgoKTsgbisrKSB7CisgICAgICAgIGlmICh0aW1lID49IHN0YXJ0KG4sIGln
bm9yZUludmFsaWQpICYmIHRpbWUgPD0gZW5kKG4sIGlnbm9yZUludmFsaWQpKQorICAgICAgICAg
ICAgcmV0dXJuIG47CisgICAgfQorICAgIHJldHVybiBub3RGb3VuZDsKK30KKworZG91YmxlIFBs
YXRmb3JtVGltZVJhbmdlczo6bmVhcmVzdChkb3VibGUgdGltZSkgY29uc3QKK3sKKyAgICBkb3Vi
bGUgY2xvc2VzdERlbHRhID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgp
OworICAgIGRvdWJsZSBjbG9zZXN0VGltZSA9IDA7CisgICAgdW5zaWduZWQgY291bnQgPSBsZW5n
dGgoKTsKKyAgICBib29sIGlnbm9yZUludmFsaWQ7CisKKyAgICBmb3IgKHVuc2lnbmVkIG5keCA9
IDA7IG5keCA8IGNvdW50OyBuZHgrKykgeworICAgICAgICBkb3VibGUgc3RhcnRUaW1lID0gc3Rh
cnQobmR4LCBpZ25vcmVJbnZhbGlkKTsKKyAgICAgICAgZG91YmxlIGVuZFRpbWUgPSBlbmQobmR4
LCBpZ25vcmVJbnZhbGlkKTsKKyAgICAgICAgaWYgKHRpbWUgPj0gc3RhcnRUaW1lICYmIHRpbWUg
PD0gZW5kVGltZSkKKyAgICAgICAgICAgIHJldHVybiB0aW1lOworICAgICAgICBpZiAoZmFicyhz
dGFydFRpbWUgLSB0aW1lKSA8IGNsb3Nlc3REZWx0YSkgeworICAgICAgICAgICAgY2xvc2VzdFRp
bWUgPSBzdGFydFRpbWU7CisgICAgICAgICAgICBjbG9zZXN0RGVsdGEgPSBmYWJzZihzdGFydFRp
bWUgLSB0aW1lKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZmFicyhlbmRUaW1lIC0gdGltZSkg
PCBjbG9zZXN0RGVsdGEpIHsKKyAgICAgICAgICAgIGNsb3Nlc3RUaW1lID0gZW5kVGltZTsKKyAg
ICAgICAgICAgIGNsb3Nlc3REZWx0YSA9IGZhYnNmKGVuZFRpbWUgLSB0aW1lKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gY2xvc2VzdFRpbWU7Cit9CisKK2RvdWJsZSBQbGF0Zm9ybVRp
bWVSYW5nZXM6OnRvdGFsRHVyYXRpb24oKSBjb25zdAoreworICAgIGRvdWJsZSB0b3RhbCA9IDA7
CisgICAgYm9vbCBpZ25vcmVJbnZhbGlkOworCisgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8
IGxlbmd0aCgpOyBuKyspCisgICAgICAgIHRvdGFsICs9IGZhYnMoZW5kKG4sIGlnbm9yZUludmFs
aWQpIC0gc3RhcnQobiwgaWdub3JlSW52YWxpZCkpOworICAgIHJldHVybiB0b3RhbDsKK30KKwor
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFu
Z2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxh
dGZvcm1UaW1lUmFuZ2VzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDExNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUGxhdGZvcm1UaW1lUmFuZ2VzX2gKKyNkZWZpbmUg
UGxhdGZvcm1UaW1lUmFuZ2VzX2gKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsYXRmb3JtVGlt
ZVJhbmdlcyB7CitwdWJsaWM6CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRp
bWVSYW5nZXM+IGNyZWF0ZSgpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1U
aW1lUmFuZ2VzPiBjcmVhdGUoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKKyAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gY3JlYXRlKGNvbnN0IFBsYXRmb3Jt
VGltZVJhbmdlcyYpOworCisgICAgZXhwbGljaXQgUGxhdGZvcm1UaW1lUmFuZ2VzKCkgeyB9Cisg
ICAgUGxhdGZvcm1UaW1lUmFuZ2VzKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCk7CisgICAgUGxh
dGZvcm1UaW1lUmFuZ2VzKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYpOworCisgICAgUGxhdGZv
cm1UaW1lUmFuZ2VzJiBvcGVyYXRvcj0oY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJik7CisKKyAg
ICBkb3VibGUgc3RhcnQodW5zaWduZWQgaW5kZXgsIGJvb2wmIHZhbGlkKSBjb25zdDsKKyAgICBk
b3VibGUgZW5kKHVuc2lnbmVkIGluZGV4LCBib29sJiB2YWxpZCkgY29uc3Q7CisKKyAgICB2b2lk
IGludmVydCgpOworICAgIHZvaWQgaW50ZXJzZWN0V2l0aChjb25zdCBQbGF0Zm9ybVRpbWVSYW5n
ZXMmKTsKKyAgICB2b2lkIHVuaW9uV2l0aChjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmKTsKKwor
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VzLnNpemUoKTsgfQor
CisgICAgdm9pZCBhZGQoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKKyAgICAKKyAgICBib29s
IGNvbnRhaW4oZG91YmxlIHRpbWUpIGNvbnN0OworCisgICAgc2l6ZV90IGZpbmQoZG91YmxlIHRp
bWUpIGNvbnN0OworICAgIAorICAgIGRvdWJsZSBuZWFyZXN0KGRvdWJsZSB0aW1lKSBjb25zdDsK
KworICAgIGRvdWJsZSB0b3RhbER1cmF0aW9uKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUGxh
dGZvcm1UaW1lUmFuZ2VzJiBjb3B5KGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYpOworCisgICAg
Ly8gV2UgY29uc2lkZXIgYWxsIHRoZSBSYW5nZXMgdG8gYmUgc2VtaS1ib3VuZGVkIGFzIGZvbGxv
dzogW3N0YXJ0LCBlbmRbCisgICAgc3RydWN0IFJhbmdlIHsKKyAgICAgICAgUmFuZ2UoKSB7IH0K
KyAgICAgICAgUmFuZ2UoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKQorICAgICAgICB7CisgICAg
ICAgICAgICBtX3N0YXJ0ID0gc3RhcnQ7CisgICAgICAgICAgICBtX2VuZCA9IGVuZDsKKyAgICAg
ICAgfQorICAgICAgICBkb3VibGUgbV9zdGFydDsKKyAgICAgICAgZG91YmxlIG1fZW5kOworCisg
ICAgICAgIGlubGluZSBib29sIGlzUG9pbnRJblJhbmdlKGRvdWJsZSBwb2ludCkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fc3RhcnQgPD0gcG9pbnQgJiYgcG9pbnQgPCBt
X2VuZDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW5saW5lIGJvb2wgaXNPdmVybGFw
cGluZ1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSkgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGlzUG9pbnRJblJhbmdlKHJhbmdlLm1fc3RhcnQpIHx8IGlzUG9pbnRJblJhbmdl
KHJhbmdlLm1fZW5kKSB8fCByYW5nZS5pc1BvaW50SW5SYW5nZShtX3N0YXJ0KTsKKyAgICAgICAg
fQorCisgICAgICAgIGlubGluZSBib29sIGlzQ29udGlndW91c1dpdGhSYW5nZShjb25zdCBSYW5n
ZSYgcmFuZ2UpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiByYW5nZS5tX3N0
YXJ0ID09IG1fZW5kIHx8IHJhbmdlLm1fZW5kID09IG1fc3RhcnQ7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIGlubGluZSBSYW5nZSB1bmlvbldpdGhPdmVybGFwcGluZ09yQ29udGlndW91
c1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
UmFuZ2UgcmV0OworCisgICAgICAgICAgICByZXQubV9zdGFydCA9IHN0ZDo6bWluKG1fc3RhcnQs
IHJhbmdlLm1fc3RhcnQpOworICAgICAgICAgICAgcmV0Lm1fZW5kID0gc3RkOjptYXgobV9lbmQs
IHJhbmdlLm1fZW5kKTsKKworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorCisg
ICAgICAgIGlubGluZSBib29sIGlzQmVmb3JlUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gcmFuZ2UubV9zdGFydCA+PSBtX2VuZDsK
KyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgVmVjdG9yPFJhbmdlPiBtX3JhbmdlczsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAkocmV2aXNp
b24gMTY0MzgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDExICszOCwxMiBAQAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1UaW1lUmFuZ2Vz
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgotI2lu
Y2x1ZGUgIlRpbWVSYW5nZXMuaCIKICNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzg1LDEyICszODYsMTIgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnNldAogICAgICAgICBjaGFyYWN0ZXJpc3RpY3ND
aGFuZ2VkKCk7CiB9CiAKLVBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjpidWZmZXJlZCgpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1U
aW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmJ1ZmZlcmVkKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcykKICAgICAgICAgbV9jYWNo
ZWRMb2FkZWRUaW1lUmFuZ2VzID0gcGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMoKTsKIAotICAg
IHJldHVybiBtX2NhY2hlZExvYWRlZFRpbWVSYW5nZXMtPmNvcHkoKTsKKyAgICByZXR1cm4gUGxh
dGZvcm1UaW1lUmFuZ2VzOjpjcmVhdGUoKm1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcyk7CiB9CiAK
IGRvdWJsZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Om1heFRpbWVTZWVrYWJsZURv
dWJsZSgpIGNvbnN0CkBAIC02MjAsNyArNjIxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb246OnJhdAogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6
bG9hZGVkVGltZVJhbmdlc0NoYW5nZWQoKQogewotICAgIG1fY2FjaGVkTG9hZGVkVGltZVJhbmdl
cyA9IDA7CisgICAgbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzID0gbnVsbHB0cjsKICAgICBtX2Nh
Y2hlZE1heFRpbWVMb2FkZWQgPSAwOwogICAgIGludmFsaWRhdGVDYWNoZWREdXJhdGlvbigpOwog
fQpAQCAtNzY5LDcgKzc3MCw4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBub3RpZmljYXRpb25OYW1l
KE1lZGkKICNkZWZpbmUgREVGSU5FX1RZUEVfU1RSSU5HX0NBU0UodHlwZSkgY2FzZSBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246Ok5vdGlmaWNhdGlvbjo6dHlwZTogcmV0dXJuICN0eXBl
OwogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uLnR5cGUoKSkgewogICAgICAgICBGT1JfRUFDSF9N
RURJQVBMQVlFUlBSSVZBVEVBVkZPVU5EQVRJT05fTk9USUZJQ0FUSU9OX1RZUEUoREVGSU5FX1RZ
UEVfU1RSSU5HX0NBU0UpCi0gICAgICAgIGRlZmF1bHQ6IHJldHVybiAiIjsKKyAgICAgICAgY2Fz
ZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246Ok5vdGlmaWNhdGlvbjo6RnVuY3Rpb25U
eXBlOiByZXR1cm4gIkZ1bmN0aW9uVHlwZSI7CisgICAgICAgIGRlZmF1bHQ6IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyByZXR1cm4gIiI7CiAgICAgfQogI3VuZGVmIERFRklORV9UWVBFX1NUUklOR19D
QVNFCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbi5oCShyZXZpc2lvbiAxNjQzODApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw3ICsxNzQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9CiAgICAgdmlydHVhbCBkb3VibGUgbWF4VGltZVNlZWth
YmxlRG91YmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBkb3VibGUgbWluVGltZVNl
ZWthYmxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IGJ1ZmZlcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKSA9IDA7CkBAIC0yMjks
NyArMjI5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgZmxvYXQgcmF0ZSgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc2Vla1RvVGltZShkb3VibGUgdGltZSwgZG91YmxlIG5lZ2F0
aXZlVG9sZXJhbmNlLCBkb3VibGUgcG9zaXRpdmVUb2xlcmFuY2UpID0gMDsKICAgICB2aXJ0dWFs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IHBs
YXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZG91Ymxl
IHBsYXRmb3JtTWF4VGltZVNlZWthYmxlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZG91Ymxl
IHBsYXRmb3JtTWluVGltZVNlZWthYmxlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZmxvYXQg
cGxhdGZvcm1NYXhUaW1lTG9hZGVkKCkgY29uc3QgPSAwOwpAQCAtMzA0LDcgKzMwNCw3IEBAIHBy
aXZhdGU6CiAgICAgVmVjdG9yPE5vdGlmaWNhdGlvbj4gbV9xdWV1ZWROb3RpZmljYXRpb25zOwog
ICAgIG11dGFibGUgTXV0ZXggbV9xdWV1ZU11dGV4OwogCi0gICAgbXV0YWJsZSBSZWZQdHI8VGlt
ZVJhbmdlcz4gbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzOworICAgIG11dGFibGUgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gbV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzOwogCiAg
ICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZTsKICAgICBNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAJKHJl
dmlzaW9uIDE2NDM4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYxOCwxNiArNjE4LDE2IEBAIHN0YXRpYyBib29sIHRpbWVSYW5nZUlzVmFsaWRB
bmROb3RFbXB0eSgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxUaW1lUmFuZ2Vz
PiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6cGxhdGZvcm1CdWZmZXJlZFRpbWVS
YW5nZXMoKSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCkg
Y29uc3QKIHsKLSAgICBSZWZQdHI8VGltZVJhbmdlcz4gdGltZVJhbmdlcyA9IFRpbWVSYW5nZXM6
OmNyZWF0ZSgpOworICAgIGF1dG8gdGltZVJhbmdlcyA9IFBsYXRmb3JtVGltZVJhbmdlczo6Y3Jl
YXRlKCk7CiAKICAgICBpZiAoIWF2UGxheWVySXRlbShtX2F2ZldyYXBwZXIpKQotICAgICAgICBy
ZXR1cm4gdGltZVJhbmdlcy5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiB0aW1lUmFuZ2VzOwog
CiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGxvYWRlZFJhbmdlcyA9IGFkb3B0Q0YoQVZDRlBs
YXllckl0ZW1Db3B5TG9hZGVkVGltZVJhbmdlcyhhdlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSkp
OwogICAgIGlmICghbG9hZGVkUmFuZ2VzKQotICAgICAgICByZXR1cm4gdGltZVJhbmdlcy5yZWxl
YXNlKCk7CisgICAgICAgIHJldHVybiB0aW1lUmFuZ2VzOwogCiAgICAgQ0ZJbmRleCByYW5nZUNv
dW50ID0gQ0ZBcnJheUdldENvdW50KGxvYWRlZFJhbmdlcy5nZXQoKSk7CiAgICAgZm9yIChDRklu
ZGV4IGkgPSAwOyBpIDwgcmFuZ2VDb3VudDsgaSsrKSB7CkBAIC02NDIsNyArNjQyLDcgQEAgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdAogICAgICAgICB9CiAgICAgfQog
Ci0gICAgcmV0dXJuIHRpbWVSYW5nZXMucmVsZWFzZSgpOworICAgIHJldHVybiB0aW1lUmFuZ2Vz
OwogfQogCiBkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBsYXRmb3Jt
TWluVGltZVNlZWthYmxlKCkgY29uc3QgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Yu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaAkocmV2aXNpb24gMTY0
MzgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4
LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGZsb2F0IHJhdGUoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2Vla1RvVGltZShkb3VibGUgdGltZSwgZG91YmxlIG5lZ2F0aXZlVG9s
ZXJhbmNlLCBkb3VibGUgcG9zaXRpdmVUb2xlcmFuY2UpOwogICAgIHZpcnR1YWwgdW5zaWduZWQg
bG9uZyBsb25nIHRvdGFsQnl0ZXMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGlt
ZVJhbmdlcz4gcGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IHBsYXRmb3JtQnVmZmVyZWRUaW1l
UmFuZ2VzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgcGxhdGZvcm1NaW5UaW1lU2Vla2Fi
bGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBwbGF0Zm9ybU1heFRpbWVTZWVrYWJsZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgZmxvYXQgcGxhdGZvcm1EdXJhdGlvbigpIGNvbnN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMuaAkocmV2aXNpb24gMTY0MzgwKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGZsb2F0IHJhdGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
c2Vla1RvVGltZShkb3VibGUgdGltZSwgZG91YmxlIG5lZ2F0aXZlVG9sZXJhbmNlLCBkb3VibGUg
cG9zaXRpdmVUb2xlcmFuY2UpOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFs
Qnl0ZXMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gcGxhdGZv
cm1CdWZmZXJlZFRpbWVSYW5nZXMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IHBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBkb3VibGUgcGxhdGZvcm1NaW5UaW1lU2Vla2FibGUoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGRvdWJsZSBwbGF0Zm9ybU1heFRpbWVTZWVrYWJsZSgpIGNvbnN0OwogICAgIHZp
cnR1YWwgZmxvYXQgcGxhdGZvcm1EdXJhdGlvbigpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLm1tCShyZXZpc2lvbiAxNjQzODApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Myw5ICs0Myw5IEBACiAjaW1wb3J0ICJJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oIgogI2ltcG9ydCAiVVJMLmgiCiAjaW1wb3J0
ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKICNpbXBvcnQgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgotI2ltcG9ydCAiVGltZVJh
bmdlcy5oIgogI2ltcG9ydCAiVVVJRC5oIgogI2ltcG9ydCAiVmlkZW9UcmFja1ByaXZhdGVBVkZP
YmpDLmgiCiAjaW1wb3J0ICJXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCIKQEAgLTY4OCw4ICs2
ODgsMTEgQEAgZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQwogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIENNVGltZSBpdGVtVGltZSA9IFttX2F2UGxheWVySXRlbS5nZXQo
KSBjdXJyZW50VGltZV07Ci0gICAgaWYgKENNVElNRV9JU19OVU1FUklDKGl0ZW1UaW1lKSkKKyAg
ICBpZiAoQ01USU1FX0lTX05VTUVSSUMoaXRlbVRpbWUpKSB7CitmbG9hdCBub3cgPSBzdGQ6Om1h
eChuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KENNVGltZUdldFNlY29uZHMoaXRlbVRpbWUpKSwgMC4w
Zik7CitMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjdXJy
ZW50VGltZSAtIHJldHVybmluZyAlZiIsIG5vdyk7IC8vQEBAQEAKICAgICAgICAgcmV0dXJuIHN0
ZDo6bWF4KG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoQ01UaW1lR2V0U2Vjb25kcyhpdGVtVGltZSkp
LCAwLjBmKTsKKyAgICB9CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTc1MiwxMiArNzU1LDEyIEBA
IGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMKICAgICByZXR1cm4gbV9j
YWNoZWRSYXRlOwogfQogCi1QYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCkgY29uc3QKK3N0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCkgY29uc3QKIHsKLSAgICBS
ZWZQdHI8VGltZVJhbmdlcz4gdGltZVJhbmdlcyA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOworICAg
IGF1dG8gdGltZVJhbmdlcyA9IFBsYXRmb3JtVGltZVJhbmdlczo6Y3JlYXRlKCk7CiAKICAgICBp
ZiAoIW1fYXZQbGF5ZXJJdGVtKQotICAgICAgICByZXR1cm4gdGltZVJhbmdlcy5yZWxlYXNlKCk7
CisgICAgICAgIHJldHVybiB0aW1lUmFuZ2VzOwogCiAgICAgZm9yIChOU1ZhbHVlICp0aGlzUmFu
Z2VWYWx1ZSBpbiBtX2NhY2hlZExvYWRlZFJhbmdlcy5nZXQoKSkgewogICAgICAgICBDTVRpbWVS
YW5nZSB0aW1lUmFuZ2UgPSBbdGhpc1JhbmdlVmFsdWUgQ01UaW1lUmFuZ2VWYWx1ZV07CkBAIC03
NjcsNyArNzcwLDcgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdAog
ICAgICAgICAgICAgdGltZVJhbmdlcy0+YWRkKHJhbmdlU3RhcnQsIHJhbmdlRW5kKTsKICAgICAg
ICAgfQogICAgIH0KLSAgICByZXR1cm4gdGltZVJhbmdlcy5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IHRpbWVSYW5nZXM7CiB9CiAKIGRvdWJsZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpwbGF0Zm9ybU1pblRpbWVTZWVrYWJsZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJj
ZUFWRk9iakMuaAkocmV2aXNpb24gMTY0MzgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNiwxMCArMTE2LDEwIEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIHNlZWtpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0UmF0ZURvdWJsZShkb3VibGUpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgZG91YmxlIG1heFRpbWVTZWVrYWJsZURvdWJsZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgZG91YmxlIG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdl
cz4gYnVmZmVyZWQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBkaWRMb2Fk
aW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbQkocmV2aXNpb24gMTY0MzgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zODgsOSArMzg4LDkgQEAgTWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGUgTWVkaWFQbGF5ZXJQcml2YQogICAgIHJldHVybiBtX3JlYWR5U3RhdGU7CiB9CiAK
LVBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpzZWVrYWJsZSgpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2Vz
PiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWthYmxlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKG1pblRpbWVTZWVrYWJsZSgpLCBtYXhU
aW1lU2Vla2FibGVEb3VibGUoKSk7CisgICAgcmV0dXJuIFBsYXRmb3JtVGltZVJhbmdlczo6Y3Jl
YXRlKG1pblRpbWVTZWVrYWJsZSgpLCBtYXhUaW1lU2Vla2FibGVEb3VibGUoKSk7CiB9CiAKIGRv
dWJsZSBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Om1heFRpbWVTZWVrYWJs
ZURvdWJsZSgpIGNvbnN0CkBAIC00MDMsNyArNDAzLDcgQEAgZG91YmxlIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGTwogICAgIHJldHVybiBzdGFydFRpbWVEb3VibGUoKTsKIH0KIAot
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM6OmJ1ZmZlcmVkKCkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6YnVmZmVyZWQoKSBjb25zdAog
ewogICAgIHJldHVybiBtX21lZGlhU291cmNlLT5idWZmZXJlZCgpOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAJKHJldmlzaW9uIDE2
NDM4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTAsMjIgKzg5
MCwyMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UHJlCiAgICAgbV9w
cmVzZXJ2ZXNQaXRjaCA9IHByZXNlcnZlc1BpdGNoOwogfQogCi1QYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVmZmVyZWQoKSBjb25zdAorc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFRpbWVSYW5nZXM+IHRpbWVSYW5nZXMg
PSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHRpbWVSYW5nZXMgPSBQbGF0Zm9ybVRp
bWVSYW5nZXM6OmNyZWF0ZSgpOwogICAgIGlmIChtX2Vycm9yT2NjdXJlZCB8fCBpc0xpdmVTdHJl
YW0oKSkKLSAgICAgICAgcmV0dXJuIHRpbWVSYW5nZXMucmVsZWFzZSgpOworICAgICAgICByZXR1
cm4gdGltZVJhbmdlczsKIAogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDAsIDEwLCAzMSkKICAgICBm
bG9hdCBtZWRpYUR1cmF0aW9uKGR1cmF0aW9uKCkpOwogICAgIGlmICghbWVkaWFEdXJhdGlvbiB8
fCBzdGQ6OmlzaW5mKG1lZGlhRHVyYXRpb24pKQotICAgICAgICByZXR1cm4gdGltZVJhbmdlcy5y
ZWxlYXNlKCk7CisgICAgICAgIHJldHVybiB0aW1lUmFuZ2VzOwogCiAgICAgR3N0UXVlcnkqIHF1
ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19idWZmZXJpbmcoR1NUX0ZPUk1BVF9QRVJDRU5UKTsKIAogICAg
IGlmICghZ3N0X2VsZW1lbnRfcXVlcnkobV9wbGF5QmluLmdldCgpLCBxdWVyeSkpIHsKICAgICAg
ICAgZ3N0X3F1ZXJ5X3VucmVmKHF1ZXJ5KTsKLSAgICAgICAgcmV0dXJuIHRpbWVSYW5nZXMucmVs
ZWFzZSgpOworICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKICAgICB9CiAKICAgICBmb3IgKGd1
aW50IGluZGV4ID0gMDsgaW5kZXggPCBnc3RfcXVlcnlfZ2V0X25fYnVmZmVyaW5nX3Jhbmdlcyhx
dWVyeSk7IGluZGV4KyspIHsKQEAgLTkyNyw3ICs5MjcsNyBAQCBQYXNzUmVmUHRyPFRpbWVSYW5n
ZXM+IE1lZGlhUGxheWVyUHJpdmF0CiAgICAgaWYgKCFtX2Vycm9yT2NjdXJlZCAmJiAhaXNMaXZl
U3RyZWFtKCkgJiYgbG9hZGVkID4gMCkKICAgICAgICAgdGltZVJhbmdlcy0+YWRkKDAsIGxvYWRl
ZCk7CiAjZW5kaWYKLSAgICByZXR1cm4gdGltZVJhbmdlcy5yZWxlYXNlKCk7CisgICAgcmV0dXJu
IHRpbWVSYW5nZXM7CiB9CiAKIGdib29sZWFuIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAkocmV2aXNpb24gMTY0MzgwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpOwogICAgIHZvaWQgZmlsbFRp
bWVyRmlyZWQoVGltZXI8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyPiopOwogCi0gICAgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Q7CiAgICAgZmxvYXQgbWF4VGlt
ZVNlZWthYmxlKCkgY29uc3Q7CiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdDsK
ICAgICB1bnNpZ25lZCB0b3RhbEJ5dGVzKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9pb3MvTWVkaWFQbGF5ZXJQcml2YXRlSU9TLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL01lZGlhUGxheWVyUHJpdmF0
ZUlPUy5oCShyZXZpc2lvbiAxNjQzODApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9pb3MvTWVkaWFQbGF5ZXJQcml2YXRlSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3
ICsxMTksNyBAQCBwcml2YXRlOgogICAgIAogICAgIGZsb2F0IG1heFRpbWVCdWZmZXJlZCgpIGNv
bnN0OwogICAgIHZpcnR1YWwgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBi
dWZmZXJlZCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIGRpZExvYWRpbmdQ
cm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgdG90YWxCeXRlc0tub3duKCkgY29u
c3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvTWVkaWFQbGF5
ZXJQcml2YXRlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lvcy9NZWRpYVBsYXllclByaXZhdGVJT1MubW0JKHJldmlzaW9uIDE2NDM4MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9NZWRpYVBsYXllclByaXZhdGVJ
T1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ5NywxNiArNDk3LDE2IEBAIGZsb2F0IE1lZGlhUGxh
eWVyUHJpdmF0ZUlPUzo6bWF4VGltZVNlZWsKICAgICByZXR1cm4gW21fbWVkaWFQbGF5ZXJIZWxw
ZXIuZ2V0KCkgX21heFRpbWVTZWVrYWJsZV07CiB9CiAKLVBhc3NSZWZQdHI8VGltZVJhbmdlcz4g
TWVkaWFQbGF5ZXJQcml2YXRlSU9TOjpidWZmZXJlZCgpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVJT1M6OmJ1ZmZlcmVkKCkKIHsK
LSAgICBSZWZQdHI8VGltZVJhbmdlcz4gdGltZVJhbmdlcyA9IFRpbWVSYW5nZXM6OmNyZWF0ZSgp
OworICAgIGF1dG8gdGltZVJhbmdlcyA9IFBsYXRmb3JtVGltZVJhbmdlczo6Y3JlYXRlKCk7CiAK
ICAgICBpZiAoIW1fbWVkaWFQbGF5ZXJIZWxwZXIpCi0gICAgICAgIHJldHVybiB0aW1lUmFuZ2Vz
LnJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIHRpbWVSYW5nZXM7CiAKICAgICBOU0FycmF5ICpy
YW5nZXMgPSBbbV9tZWRpYVBsYXllckhlbHBlci5nZXQoKSBfYnVmZmVyZWRUaW1lUmFuZ2VzXTsK
ICAgICBpZiAoIXJhbmdlcykKLSAgICAgICAgcmV0dXJuIHRpbWVSYW5nZXMucmVsZWFzZSgpOwor
ICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKIAogICAgIGZsb2F0IHRpbWVSYW5nZVsyXTsKICAg
ICBpbnQgY291bnQgPSBbcmFuZ2VzIGNvdW50XTsKQEAgLTUxNyw3ICs1MTcsNyBAQCBQYXNzUmVm
UHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0CiAgICAgICAgIHRpbWVSYW5nZXMtPmFk
ZCh0aW1lUmFuZ2VbMF0sIHRpbWVSYW5nZVsxXSk7CiAgICAgfQogCi0gICAgcmV0dXJuIHRpbWVS
YW5nZXMucmVsZWFzZSgpOworICAgIHJldHVybiB0aW1lUmFuZ2VzOwogfQogCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUlPUzo6c2V0U2l6ZShjb25zdCBJbnRTaXplJikKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5oCShyZXZpc2lvbiAxNjQzODApCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtTdGF0ZTsgfQog
ICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBt
X3JlYWR5U3RhdGU7IH0KICAgICAKLSAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVk
KCkgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVy
ZWQoKSBjb25zdDsKICAgICBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdDsKICAgICBib29s
IGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0OwogICAgIHVuc2lnbmVkIHRvdGFsQnl0ZXMoKSBj
b25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0JKHJldmlzaW9uIDE2NDM4
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclBy
aXZhdGVRVEtpdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzksOSArMzksOSBAQAogI2ltcG9ydCAi
TG9nZ2luZy5oIgogI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2ltcG9ydCAiUGxhdGZv
cm1MYXllci5oIgorI2ltcG9ydCAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCiAjaW1wb3J0ICJTZWN1
cml0eU9yaWdpbi5oIgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKLSNpbXBvcnQgIlRpbWVSYW5n
ZXMuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPFFUS2l0
L1FUS2l0Lmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KQEAgLTkxNywxMyArOTE3LDEzIEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnNldFByZXNlcnYKICAgICBjcmVhdGVRVE1v
dmllKFttb3ZpZUF0dHJpYnV0ZXMuZ2V0KCkgdmFsdWVGb3JLZXk6UVRNb3ZpZVVSTEF0dHJpYnV0
ZV0sIG1vdmllQXR0cmlidXRlcy5nZXQoKSk7CiB9CiAKLVBhc3NSZWZQdHI8VGltZVJhbmdlcz4g
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmJ1ZmZlcmVkKCkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpidWZmZXJlZCgp
IGNvbnN0CiB7Ci0gICAgUmVmUHRyPFRpbWVSYW5nZXM+IHRpbWVSYW5nZXMgPSBUaW1lUmFuZ2Vz
OjpjcmVhdGUoKTsKKyAgICBhdXRvIHRpbWVSYW5nZXMgPSBQbGF0Zm9ybVRpbWVSYW5nZXM6OmNy
ZWF0ZSgpOwogICAgIGZsb2F0IGxvYWRlZCA9IG1heFRpbWVMb2FkZWQoKTsKICAgICBpZiAobG9h
ZGVkID4gMCkKICAgICAgICAgdGltZVJhbmdlcy0+YWRkKDAsIGxvYWRlZCk7Ci0gICAgcmV0dXJu
IHRpbWVSYW5nZXMucmVsZWFzZSgpOworICAgIHJldHVybiB0aW1lUmFuZ2VzOwogfQogCiBmbG9h
dCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVR
dWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDE2NDM4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTQ3LDE0ICs1NDcsMTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVRdWlja1RpbWVWaXN1YWxDbwogICAgIG1fbW92aWUtPnNldENsb3NlZENhcHRpb25zVmlzaWJs
ZSh2aXNpYmxlKTsKIH0KIAotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZh
dGVRdWlja1RpbWVWaXN1YWxDb250ZXh0OjpidWZmZXJlZCgpIGNvbnN0CitzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxD
b250ZXh0OjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgUmVmUHRyPFRpbWVSYW5nZXM+IHRpbWVS
YW5nZXMgPSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAgICBhdXRvIHRpbWVSYW5nZXMgPSBQbGF0
Zm9ybVRpbWVSYW5nZXM6OmNyZWF0ZSgpOworCiAgICAgZmxvYXQgbG9hZGVkID0gbWF4VGltZUxv
YWRlZCgpOwogICAgIC8vIHJ0c3Agc3RyZWFtcyBhcmUgbm90IGJ1ZmZlcmVkCiAgICAgaWYgKCFt
X2lzU3RyZWFtaW5nICYmIGxvYWRlZCA+IDApCiAgICAgICAgIHRpbWVSYW5nZXMtPmFkZCgwLCBs
b2FkZWQpOwotICAgIHJldHVybiB0aW1lUmFuZ2VzLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdGlt
ZVJhbmdlczsKIH0KIAogZmxvYXQgTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29u
dGV4dDo6bWF4VGltZVNlZWthYmxlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01l
ZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuaAkocmV2aXNpb24gMTY0Mzgw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJp
dmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIs
NyBAQCBwcml2YXRlOgogICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrU3RhdGU7IH0KICAgICBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9CiAgICAg
Ci0gICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0OworICAgIHN0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Q7CiAgICAgZmxv
YXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3Q7CiAgICAgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3Mo
KSBjb25zdDsKICAgICB1bnNpZ25lZCB0b3RhbEJ5dGVzKCkgY29uc3Q7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9NZWRpYVBsYXllclByaXZhdGVXaW5DRS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL01l
ZGlhUGxheWVyUHJpdmF0ZVdpbkNFLmgJKHJldmlzaW9uIDE2NDM4MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL01lZGlhUGxheWVyUHJpdmF0ZVdpbkNFLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbmV0d29ya1N0YXRlOyB9CiAgICAgICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5
U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3RhdGU7IH0KIAotICAgICAgICBQYXNzUmVm
UHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Q7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Q7CiAgICAgICAgIGZsb2F0IG1h
eFRpbWVTZWVrYWJsZSgpIGNvbnN0OwogICAgICAgICAvLyBGSVhNRTogYnl0ZXNMb2FkZWQoKSBz
aG91bGQgYmUgcmVwbGFjZWQgd2l0aCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSAoYnkgc29tZWJvZHkg
d2hvIGNhbiBmaW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGNsYXNzKS4KICAgICAgICAg
dW5zaWduZWQgYnl0ZXNMb2FkZWQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01l
ZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCShyZXZpc2lvbiAxNjQzODApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2LDkgKzE2NiwxMiBAQCBkb3VibGUgTW9ja01lZGlh
UGxheWVyTWVkaWFTb3VyY2U6Om1heFRpCiAgICAgcmV0dXJuIG1fZHVyYXRpb247CiB9CiAKLVBh
c3NSZWZQdHI8VGltZVJhbmdlcz4gTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZlcmVk
KCkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlOjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fbWVkaWFT
b3VyY2UgPyBtX21lZGlhU291cmNlLT5idWZmZXJlZCgpIDogVGltZVJhbmdlczo6Y3JlYXRlKCk7
CisgICAgaWYgKG1fbWVkaWFTb3VyY2UpCisgICAgICAgIHJldHVybiBtX21lZGlhU291cmNlLT5i
dWZmZXJlZCgpOworCisgICAgcmV0dXJuIFBsYXRmb3JtVGltZVJhbmdlczo6Y3JlYXRlKCk7CiB9
CiAKIGJvb2wgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmRpZExvYWRpbmdQcm9ncmVzcygp
IGNvbnN0CkBAIC0yMDksMTIgKzIxMiwxNiBAQCB2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291
cmNlOjpzZWVrV2l0CiAKIHZvaWQgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmFkdmFuY2VD
dXJyZW50VGltZSgpCiB7Ci0gICAgUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkID0gdGhpcy0+
YnVmZmVyZWQoKTsKKyAgICBpZiAoIW1fbWVkaWFTb3VyY2UpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gYnVmZmVyZWQgPSBtX21lZGlhU291cmNlLT5idWZmZXJlZCgpOwogICAgIHNpemVf
dCBwb3MgPSBidWZmZXJlZC0+ZmluZChtX2N1cnJlbnRUaW1lLnRvRG91YmxlKCkpOwogICAgIGlm
IChwb3MgPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY3VycmVudFRpbWUg
PSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RkOjptaW4obV9kdXJhdGlvbiwgYnVmZmVy
ZWQtPmVuZChwb3MsIElHTk9SRV9FWENFUFRJT04pKSk7CisgICAgYm9vbCBpZ25vcmVFcnJvcjsK
KyAgICBtX2N1cnJlbnRUaW1lID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0ZDo6bWlu
KG1fZHVyYXRpb24sIGJ1ZmZlcmVkLT5lbmQocG9zLCBpZ25vcmVFcnJvcikpKTsKICAgICBtX3Bs
YXllci0+dGltZUNoYW5nZWQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2UuaAkocmV2aXNpb24gMTY0MzgwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHBh
dXNlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
dGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGRvdWJsZSBt
YXhUaW1lU2Vla2FibGVEb3VibGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYp
IG92ZXJyaWRlOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0No
YW5nZUxvZwkocmV2aXNpb24gMTY0Mzg1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMDItMTkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2Fy
bHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IFRpbWVSYW5nZXMgbGF5ZXJpbmcgdmlvbGF0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4
NzE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVGltZVJhbmdlcy5jcHA6IFRpbWVSYW5nZXMqIC0+
IFRpbWVSYW5nZXMmLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTQtMDIt
MTkgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY29t
PgogCiAgICAgICAgIFtHVEtdIEFkZCBuZXcgQVJNIGJ1aWxkIHNsYXZlIGZvciBHVEsrCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVGltZVJhbmdlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1RpbWVSYW5nZXMuY3Bw
CShyZXZpc2lvbiAxNjQzODApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
VGltZVJhbmdlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCBURVNUKFRp
bWVSYW5nZXMsIEludGVyc2VjdFdpdGhfU2VsZikKIAogICAgIEFTU0VSVF9SQU5HRSgieyBbMCwy
KSB9IiwgcmFuZ2VzKTsKIAotICAgIHJhbmdlcy0+aW50ZXJzZWN0V2l0aChyYW5nZXMuZ2V0KCkp
OworICAgIHJhbmdlcy0+aW50ZXJzZWN0V2l0aCgqcmFuZ2VzLmdldCgpKTsKIAogICAgIEFTU0VS
VF9SQU5HRSgieyBbMCwyKSB9IiwgcmFuZ2VzKTsKIH0KQEAgLTEyOCw3ICsxMjgsNyBAQCBURVNU
KFRpbWVSYW5nZXMsIEludGVyc2VjdFdpdGhfSWRlbnRpY2FsCiAgICAgQVNTRVJUX1JBTkdFKCJ7
IFswLDIpIH0iLCByYW5nZXNBKTsKICAgICBBU1NFUlRfUkFOR0UoInsgWzAsMikgfSIsIHJhbmdl
c0IpOwogCi0gICAgcmFuZ2VzQS0+aW50ZXJzZWN0V2l0aChyYW5nZXNCLmdldCgpKTsKKyAgICBy
YW5nZXNBLT5pbnRlcnNlY3RXaXRoKCpyYW5nZXNCLmdldCgpKTsKIAogICAgIEFTU0VSVF9SQU5H
RSgieyBbMCwyKSB9IiwgcmFuZ2VzQSk7CiAgICAgQVNTRVJUX1JBTkdFKCJ7IFswLDIpIH0iLCBy
YW5nZXNCKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBURVNUKFRpbWVSYW5nZXMsIEludGVyc2VjdFdp
dGhfRW1wdHkpCiAgICAgQVNTRVJUX1JBTkdFKCJ7IFswLDIpIH0iLCByYW5nZXNBKTsKICAgICBB
U1NFUlRfUkFOR0UoInsgfSIsIHJhbmdlc0IpOwogCi0gICAgcmFuZ2VzQS0+aW50ZXJzZWN0V2l0
aChyYW5nZXNCLmdldCgpKTsKKyAgICByYW5nZXNBLT5pbnRlcnNlY3RXaXRoKCpyYW5nZXNCLmdl
dCgpKTsKIAogICAgIEFTU0VSVF9SQU5HRSgieyB9IiwgcmFuZ2VzQSk7CiAgICAgQVNTRVJUX1JB
TkdFKCJ7IH0iLCByYW5nZXNCKTsKQEAgLTE1MCw2ICsxNTAsNyBAQCBURVNUKFRpbWVSYW5nZXMs
IEludGVyc2VjdFdpdGhfRW1wdHkpCiAKIFRFU1QoVGltZVJhbmdlcywgSW50ZXJzZWN0V2l0aF9E
aXNqb2ludFJhbmdlczEpCiB7CisgICAgCiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IHJhbmdlc0Eg
PSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKICAgICBSZWZQdHI8VGltZVJhbmdlcz4gcmFuZ2VzQiA9
IFRpbWVSYW5nZXM6OmNyZWF0ZSgpOwogCkBAIC0xNjIsNyArMTYzLDcgQEAgVEVTVChUaW1lUmFu
Z2VzLCBJbnRlcnNlY3RXaXRoX0Rpc2pvaW50UgogICAgIEFTU0VSVF9SQU5HRSgieyBbMCwxKSBb
NCw1KSB9IiwgcmFuZ2VzQSk7CiAgICAgQVNTRVJUX1JBTkdFKCJ7IFsyLDMpIFs2LDcpIH0iLCBy
YW5nZXNCKTsKIAotICAgIHJhbmdlc0EtPmludGVyc2VjdFdpdGgocmFuZ2VzQi5nZXQoKSk7Cisg
ICAgcmFuZ2VzQS0+aW50ZXJzZWN0V2l0aCgqcmFuZ2VzQi5nZXQoKSk7CiAKICAgICBBU1NFUlRf
UkFOR0UoInsgfSIsIHJhbmdlc0EpOwogICAgIEFTU0VSVF9SQU5HRSgieyBbMiwzKSBbNiw3KSB9
IiwgcmFuZ2VzQik7CkBAIC0xODIsNyArMTgzLDcgQEAgVEVTVChUaW1lUmFuZ2VzLCBJbnRlcnNl
Y3RXaXRoX0Rpc2pvaW50UgogICAgIEFTU0VSVF9SQU5HRSgieyBbMCwxKSBbNCw1KSB9IiwgcmFu
Z2VzQSk7CiAgICAgQVNTRVJUX1JBTkdFKCJ7IFsxLDQpIFs1LDcpIH0iLCByYW5nZXNCKTsKIAot
ICAgIHJhbmdlc0EtPmludGVyc2VjdFdpdGgocmFuZ2VzQi5nZXQoKSk7CisgICAgcmFuZ2VzQS0+
aW50ZXJzZWN0V2l0aCgqcmFuZ2VzQi5nZXQoKSk7CiAKICAgICBBU1NFUlRfUkFOR0UoInsgfSIs
IHJhbmdlc0EpOwogICAgIEFTU0VSVF9SQU5HRSgieyBbMSw0KSBbNSw3KSB9IiwgcmFuZ2VzQik7
CkBAIC0yMDIsNyArMjAzLDcgQEAgVEVTVChUaW1lUmFuZ2VzLCBJbnRlcnNlY3RXaXRoX0NvbXBs
ZXRlTwogICAgIEFTU0VSVF9SQU5HRSgieyBbMSwzKSBbNCw1KSBbNiw5KSB9IiwgcmFuZ2VzQSk7
CiAgICAgQVNTRVJUX1JBTkdFKCJ7IFswLDEwKSB9IiwgcmFuZ2VzQik7CiAKLSAgICByYW5nZXNB
LT5pbnRlcnNlY3RXaXRoKHJhbmdlc0IuZ2V0KCkpOworICAgIHJhbmdlc0EtPmludGVyc2VjdFdp
dGgoKnJhbmdlc0IuZ2V0KCkpOwogCiAgICAgQVNTRVJUX1JBTkdFKCJ7IFsxLDMpIFs0LDUpIFs2
LDkpIH0iLCByYW5nZXNBKTsKICAgICBBU1NFUlRfUkFOR0UoInsgWzAsMTApIH0iLCByYW5nZXNC
KTsKQEAgLTIyMiw3ICsyMjMsNyBAQCBURVNUKFRpbWVSYW5nZXMsIEludGVyc2VjdFdpdGhfQ29t
cGxldGVPCiAgICAgQVNTRVJUX1JBTkdFKCJ7IFsxLDMpIFs0LDUpIFs2LDkpIH0iLCByYW5nZXNB
KTsKICAgICBBU1NFUlRfUkFOR0UoInsgWzEsOSkgfSIsIHJhbmdlc0IpOwogCi0gICAgcmFuZ2Vz
QS0+aW50ZXJzZWN0V2l0aChyYW5nZXNCLmdldCgpKTsKKyAgICByYW5nZXNBLT5pbnRlcnNlY3RX
aXRoKCpyYW5nZXNCLmdldCgpKTsKIAogICAgIEFTU0VSVF9SQU5HRSgieyBbMSwzKSBbNCw1KSBb
Niw5KSB9IiwgcmFuZ2VzQSk7CiAgICAgQVNTRVJUX1JBTkdFKCJ7IFsxLDkpIH0iLCByYW5nZXNC
KTsKQEAgLTI0MSw3ICsyNDIsNyBAQCBURVNUKFRpbWVSYW5nZXMsIEludGVyc2VjdFdpdGhfR2Fw
czEpCiAgICAgQVNTRVJUX1JBTkdFKCJ7IFswLDIpIFs0LDYpIH0iLCByYW5nZXNBKTsKICAgICBB
U1NFUlRfUkFOR0UoInsgWzEsNSkgfSIsIHJhbmdlc0IpOwogCi0gICAgcmFuZ2VzQS0+aW50ZXJz
ZWN0V2l0aChyYW5nZXNCLmdldCgpKTsKKyAgICByYW5nZXNBLT5pbnRlcnNlY3RXaXRoKCpyYW5n
ZXNCLmdldCgpKTsKIAogICAgIEFTU0VSVF9SQU5HRSgieyBbMSwyKSBbNCw1KSB9IiwgcmFuZ2Vz
QSk7CiAgICAgQVNTRVJUX1JBTkdFKCJ7IFsxLDUpIH0iLCByYW5nZXNCKTsKQEAgLTI2MSw3ICsy
NjIsNyBAQCBURVNUKFRpbWVSYW5nZXMsIEludGVyc2VjdFdpdGhfR2FwczIpCiAgICAgQVNTRVJU
X1JBTkdFKCJ7IFswLDIpIFs0LDYpIFs4LDEwKSB9IiwgcmFuZ2VzQSk7CiAgICAgQVNTRVJUX1JB
TkdFKCJ7IFsxLDkpIH0iLCByYW5nZXNCKTsKIAotICAgIHJhbmdlc0EtPmludGVyc2VjdFdpdGgo
cmFuZ2VzQi5nZXQoKSk7CisgICAgcmFuZ2VzQS0+aW50ZXJzZWN0V2l0aCgqcmFuZ2VzQi5nZXQo
KSk7CiAKICAgICBBU1NFUlRfUkFOR0UoInsgWzEsMikgWzQsNikgWzgsOSkgfSIsIHJhbmdlc0Ep
OwogICAgIEFTU0VSVF9SQU5HRSgieyBbMSw5KSB9IiwgcmFuZ2VzQik7CkBAIC0yODIsNyArMjgz
LDcgQEAgVEVTVChUaW1lUmFuZ2VzLCBJbnRlcnNlY3RXaXRoX0dhcHMzKQogICAgIEFTU0VSVF9S
QU5HRSgieyBbMCwyKSBbNCw3KSBbOCwxMCkgfSIsIHJhbmdlc0EpOwogICAgIEFTU0VSVF9SQU5H
RSgieyBbMSw1KSBbNiw5KSB9IiwgcmFuZ2VzQik7CiAKLSAgICByYW5nZXNBLT5pbnRlcnNlY3RX
aXRoKHJhbmdlc0IuZ2V0KCkpOworICAgIHJhbmdlc0EtPmludGVyc2VjdFdpdGgoKnJhbmdlc0Iu
Z2V0KCkpOwogCiAgICAgQVNTRVJUX1JBTkdFKCJ7IFsxLDIpIFs0LDUpIFs2LDcpIFs4LDkpIH0i
LCByYW5nZXNBKTsKICAgICBBU1NFUlRfUkFOR0UoInsgWzEsNSkgWzYsOSkgfSIsIHJhbmdlc0Ip
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224694</attachid>
            <date>2014-02-19 17:01:49 -0800</date>
            <delta_ts>2014-02-21 13:59:46 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_15.txt</filename>
            <type>text/plain</type>
            <size>77367</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDM4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMCBAQAorMjAxNC0wMi0xOSAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggVGltZVJhbmdl
cyBsYXllcmluZyB2aW9sYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjg3MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlZC4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06
IEFkZCBQbGF0Zm9ybVRpbWVSYW5nZXMuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpidWZmZXJl
ZCk6IFRpbWVSYW5nZXMgLT4gUGxhdGZvcm1UaW1lUmFuZ2VzLgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaDoKKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291
cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUpOiBUaW1lUmFuZ2VzKiAtPiBUaW1lUmFu
Z2VzJi4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOiBVcGRhdGUgZm9yIHNpZ25hdHVyZSBj
aGFuZ2VzLgorCisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgUGxhdGZvcm1UaW1lUmFu
Z2VzLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQpOiBDcmVhdGUgVGltZVJhbmdl
cyBmcm9tIFBsYXRmb3JtVGltZVJhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmJ1ZmZlcmVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzZWVrYWJsZSk6IERpdHRvLgorCisgICAgICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpidWZmZXJlZCk6IFRpbWVSYW5nZXMqIC0+
IFRpbWVSYW5nZXMmLgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpzZWVrYWJsZSk6IERpdHRv
LgorICAgICAgICAoTWVkaWFDb250cm9sbGVyOjpwbGF5ZWQpOiBEaXR0by4KKworICAgICAgICBN
b3ZlIGFsbCBvZiB0aGUgbG9naWMgaW50byBQbGF0Zm9ybVRpbWVSYW5nZXMuIENoYW5nZSBBUEkg
dG8gdGFrZSBUaW1lUmFuZ2VzJiBpbnN0ZWFkIG9mIFRpbWVSYW5nZXMqLgorICAgICAgICAqIGh0
bWwvVGltZVJhbmdlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaW1lUmFuZ2VzOjpjcmVhdGUp
OiBNb3ZlIHRvIC5jcHAgZnJvbSAuaC4KKyAgICAgICAgKFdlYkNvcmU6OlRpbWVSYW5nZXM6OlRp
bWVSYW5nZXMpOiBJbml0aWFsaXplIHRoZSBQbGF0Zm9ybVRpbWVSYW5nZXMgbWVtYmVyIHZhcmlh
YmxlLgorICAgICAgICAoV2ViQ29yZTo6VGltZVJhbmdlczo6c3RhcnQpOiBQYXNzdGhyb3VnaCB0
byBQbGF0Zm9ybVRpbWVSYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpUaW1lUmFuZ2VzOjplbmQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRpbWVSYW5nZXM6OmludmVydCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6VGltZVJhbmdlczo6Y29weSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6VGltZVJhbmdlczo6aW50ZXJzZWN0V2l0aCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6VGltZVJhbmdlczo6dW5pb25XaXRoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpUaW1l
UmFuZ2VzOjpsZW5ndGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRpbWVSYW5nZXM6OmFk
ZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGltZVJhbmdlczo6Y29udGFpbik6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6VGltZVJhbmdlczo6ZmluZCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6VGltZVJhbmdlczo6bmVhcmVzdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
VGltZVJhbmdlczo6dG90YWxEdXJhdGlvbik6IERpdHRvLgorICAgICAgICAqIGh0bWwvVGltZVJh
bmdlcy5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TnVsbE1lZGlhUGxheWVyUHJpdmF0ZTo6YnVmZmVyZWQpOiBUaW1l
UmFuZ2VzIC0+IFBsYXRmb3JtVGltZVJhbmdlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyOjpidWZmZXJlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnNl
ZWthYmxlKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaDoKKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5oOgor
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmg6IEFk
ZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb246OmJ1ZmZlcmVkKTogVGltZVJhbmdlcyAtPiBQbGF0Zm9ybVRp
bWVSYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b246OmxvYWRlZFRpbWVSYW5nZXNDaGFuZ2VkKTogRHJpdmUtYnkgZml4IHRvIGxvZworICAgICAg
ICAgICAgRnVuY3Rpb25UeXBlIG5vdGlmaWNhdGlvbnMuIEFTU0VSVCB3aGVuIHBhc3NlZCBhbiB1
bmtub3duIG5vdGlmaWNhdGlvbi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0Y6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKTogIFRpbWVSYW5nZXMgLT4gUGxhdGZv
cm1UaW1lUmFuZ2VzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9j
Zi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3VycmVudFRpbWUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBs
YXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnNlZWthYmxlKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OmJ1ZmZlcmVkKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YnVmZmVyZWQpOiBEaXR0by4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9pb3MvTWVkaWFQbGF5ZXJQcml2YXRlSU9T
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL01lZGlhUGxheWVyUHJpdmF0ZUlP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUlPUzo6YnVmZmVyZWQp
OiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclBy
aXZhdGVRVEtpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXll
clByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0OjpidWZmZXJlZCk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6YnVmZmVy
ZWQpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luY2UvTWVkaWFQbGF5ZXJQcml2YXRlV2luQ0UuaDoKKworICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6YWR2YW5j
ZUN1cnJlbnRUaW1lKTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJj
ZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5oOgorCiAyMDE0LTAyLTE5ICBCZXRoIERha2lu
ICA8YmRha2luQGFwcGxlLmNvbT4KIAogICAgICAgICBVSVByb2Nlc3MgbmVlZHMgdG8ga25vdyB0
aGUgY29sb3Igb2YgdGhlIHBhZ2UncyBleHRlbmRlZCBiYWNrZ3JvdW5kCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMTY0MzgwKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5MTAsNiArMTkxMCw3IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJu
LmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUm91bmRl
ZFJlY3QuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU1ZHR2x5cGguY3BwCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE2NDM4MCkKKysrIFNvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTUzMzgsNiArNTMzOCw4
IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9NZWRpYVBsYXllci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllclByaXZhdGUuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZW1wb3JhcnlPcGVuR0xTZXR0aW5n
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RlbXBvcmFy
eU9wZW5HTFNldHRpbmcuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTY0
MzgwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTE0MjIsOCArMTQyMiwxMCBAQCBfX1pON1dlYkNvcmU5cGxhaW5UZXh0RVBLTlNfNVJhbmdlRU5T
XzIwCiBfX1pON1dlYkNvcmU5dG9FbGVtZW50RU4zSlNDN0pTVmFsdWVFCiBfX1pON1dlYkNvcmU5
dW5pb25SZWN0RVJLTjNXVEY2VmVjdG9ySU5TXzlGbG9hdFJlY3RFTG0wRU5TMF8xNUNyYXNoT25P
dmVyZmxvd0VFRQogX19aTjdXZWJDb3JlMTBQYXN0ZWJvYXJkMjFjcmVhdGVGb3JDb3B5QW5kUGFz
dGVFdgotX19aTjdXZWJDb3JlMTBUaW1lUmFuZ2VzMTNpbnRlcnNlY3RXaXRoRVBLUzBfCitfX1pO
N1dlYkNvcmUxMFRpbWVSYW5nZXM2Y3JlYXRlRXYKK19fWk43V2ViQ29yZTEwVGltZVJhbmdlczZj
cmVhdGVFZGQKIF9fWk43V2ViQ29yZTEwVGltZVJhbmdlc0MxRWRkCitfX1pON1dlYkNvcmUxMFRp
bWVSYW5nZXMxM2ludGVyc2VjdFdpdGhFUktTMF8KIF9fWk43V2ViQ29yZTEzU2VsZWN0aW9uUmVj
dEMxRVJLTlNfN0ludFJlY3RFYmkKIF9fWk5LM0pTQzhCaW5kaW5nczEwUm9vdE9iamVjdDEyZ2xv
YmFsT2JqZWN0RXYKIF9fWk5LM1dURjZTdHJpbmcxNGNyZWF0ZUNGU3RyaW5nRXYKQEAgLTE0NjEs
NiArMTQ2Myw3IEBAIF9fWk5LN1dlYkNvcmUxMFN0b3JhZ2VNYXA4Y29udGFpbnNFUktOM1cKIF9f
Wk5LN1dlYkNvcmUxMFRpbWVSYW5nZXMzZW5kRWpSaQogX19aTks3V2ViQ29yZTEwVGltZVJhbmdl
czRjb3B5RXYKIF9fWk5LN1dlYkNvcmUxMFRpbWVSYW5nZXM1c3RhcnRFalJpCitfX1pOSzdXZWJD
b3JlMTBUaW1lUmFuZ2VzNmxlbmd0aEV2CiBfX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjEwaXND
b21wbGV0ZUV2CiBfX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjE0Y2FuY2VsbGVkRXJyb3JFUktO
U18xNVJlc291cmNlUmVxdWVzdEUKIF9fWk5LN1dlYkNvcmUxMUZyYW1lTG9hZGVyMTRmcmFtZUhh
c0xvYWRlZEV2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlh
U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmNwcAkocmV2aXNpb24gMTY0MzgwKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
MSw3ICsxMzEsNyBAQCBkb3VibGUgTWVkaWFTb3VyY2U6OmR1cmF0aW9uKCkgY29uc3QKICAgICBy
ZXR1cm4gaXNDbG9zZWQoKSA/IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4o
KSA6IG1fcHJpdmF0ZS0+ZHVyYXRpb24oKTsKIH0KIAotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBN
ZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGlt
ZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmJ1ZmZlcmVkKCkgY29uc3QKIHsKICAgICAvLyBJbXBsZW1l
bnRzIE1lZGlhU291cmNlIGFsZ29yaXRobSBmb3IgSFRNTE1lZGlhRWxlbWVudC5idWZmZXJlZC4K
ICAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvZGVmYXVs
dC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjaHRtbG1lZGlhZWxlbWVudC1leHRlbnNp
b25zCkBAIC0xMzksNyArMTM5LDcgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVNvdXJj
ZTo6YnVmZgogCiAgICAgLy8gMS4gSWYgYWN0aXZlU291cmNlQnVmZmVycy5sZW5ndGggZXF1YWxz
IDAgdGhlbiByZXR1cm4gYW4gZW1wdHkgVGltZVJhbmdlcyBvYmplY3QgYW5kIGFib3J0IHRoZXNl
IHN0ZXBzLgogICAgIGlmIChyYW5nZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gVGltZVJh
bmdlczo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBQbGF0Zm9ybVRpbWVSYW5nZXM6OmNyZWF0
ZSgpOwogCiAgICAgLy8gMi4gTGV0IGFjdGl2ZSByYW5nZXMgYmUgdGhlIHJhbmdlcyByZXR1cm5l
ZCBieSBidWZmZXJlZCBmb3IgZWFjaCBTb3VyY2VCdWZmZXIgb2JqZWN0IGluIGFjdGl2ZVNvdXJj
ZUJ1ZmZlcnMuCiAgICAgLy8gMy4gTGV0IGhpZ2hlc3QgZW5kIHRpbWUgYmUgdGhlIGxhcmdlc3Qg
cmFuZ2UgZW5kIHRpbWUgaW4gdGhlIGFjdGl2ZSByYW5nZXMuCkBAIC0xNTIsNyArMTUyLDcgQEAg
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVNvdXJjZTo6YnVmZgogCiAgICAgLy8gUmV0dXJu
IGFuIGVtcHR5IHJhbmdlIGlmIGFsbCByYW5nZXMgYXJlIGVtcHR5LgogICAgIGlmIChoaWdoZXN0
RW5kVGltZSA8IDApCi0gICAgICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAgICAg
ICAgcmV0dXJuIFBsYXRmb3JtVGltZVJhbmdlczo6Y3JlYXRlKCk7CiAKICAgICAvLyA0LiBMZXQg
aW50ZXJzZWN0aW9uIHJhbmdlcyBlcXVhbCBhIFRpbWVSYW5nZSBvYmplY3QgY29udGFpbmluZyBh
IHNpbmdsZSByYW5nZSBmcm9tIDAgdG8gaGlnaGVzdCBlbmQgdGltZS4KICAgICBSZWZQdHI8VGlt
ZVJhbmdlcz4gaW50ZXJzZWN0aW9uUmFuZ2VzID0gVGltZVJhbmdlczo6Y3JlYXRlKDAsIGhpZ2hl
c3RFbmRUaW1lKTsKQEAgLTE2OSwxMCArMTY5LDE1IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4g
TWVkaWFTb3VyY2U6OmJ1ZmYKIAogICAgICAgICAvLyA1LjMgTGV0IG5ldyBpbnRlcnNlY3Rpb24g
cmFuZ2VzIGVxdWFsIHRoZSB0aGUgaW50ZXJzZWN0aW9uIGJldHdlZW4gdGhlIGludGVyc2VjdGlv
biByYW5nZXMgYW5kIHRoZSBzb3VyY2UgcmFuZ2VzLgogICAgICAgICAvLyA1LjQgUmVwbGFjZSB0
aGUgcmFuZ2VzIGluIGludGVyc2VjdGlvbiByYW5nZXMgd2l0aCB0aGUgbmV3IGludGVyc2VjdGlv
biByYW5nZXMuCi0gICAgICAgIGludGVyc2VjdGlvblJhbmdlcy0+aW50ZXJzZWN0V2l0aChzb3Vy
Y2VSYW5nZXMpOworICAgICAgICBpbnRlcnNlY3Rpb25SYW5nZXMtPmludGVyc2VjdFdpdGgoKnNv
dXJjZVJhbmdlcyk7CiAgICAgfQogCi0gICAgcmV0dXJuIGludGVyc2VjdGlvblJhbmdlcy5yZWxl
YXNlKCk7CisgICAgYXV0byByZXN1bHQgPSBQbGF0Zm9ybVRpbWVSYW5nZXM6OmNyZWF0ZSgpOwor
ICAgIHVuc2lnbmVkIHNpemUgPSBpbnRlcnNlY3Rpb25SYW5nZXMtPmxlbmd0aCgpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspCisgICAgICAgIHJlc3VsdC0+YWRkKGlu
dGVyc2VjdGlvblJhbmdlcy0+c3RhcnQoaSwgQVNTRVJUX05PX0VYQ0VQVElPTiksIGludGVyc2Vj
dGlvblJhbmdlcy0+ZW5kKGksIEFTU0VSVF9OT19FWENFUFRJT04pKTsKKworICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIGNsYXNzIFNvdXJjZUJ1ZmZlckJ1ZmZlcmVkRG9lc05vdENvbnRhaW5UaW1l
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlh
U291cmNlLmgJKHJldmlzaW9uIDE2NDM4MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvTWVkaWFTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBw
dWJsaWM6CiAgICAgLy8gTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50CiAgICAgdmlydHVhbCB2b2lk
IHNldFByaXZhdGVBbmRPcGVuKFBhc3NSZWY8TWVkaWFTb3VyY2VQcml2YXRlPikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGF0dGFjaFRvRWxlbWVudChIVE1MTWVkaWFFbGVt
ZW50Kik7CiAgICAgdm9pZCBjbG9zZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAkocmV2aXNpb24gMTY0MzgwKQor
KysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC05NjcsNyArOTY3LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVEaQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBlcmFzZWRSYW5n
ZXMtPmludmVydCgpOwotICAgICAgICAgICAgbV9idWZmZXJlZC0+aW50ZXJzZWN0V2l0aChlcmFz
ZWRSYW5nZXMuZ2V0KCkpOworICAgICAgICAgICAgbV9idWZmZXJlZC0+aW50ZXJzZWN0V2l0aCgq
ZXJhc2VkUmFuZ2VzLmdldCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIDEuMTcgSWYgc3Bs
aWNlZCBhdWRpbyBmcmFtZSBpcyBzZXQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE2NDM4MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTc2NzUsNiArNzY3NSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xQYXRoLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XGdyYXBoaWNzXFBhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQYXR0ZXJuLmNwcCIgLz4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFBsYXRmb3JtVGltZVJhbmdlcy5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xSZWdpb24uY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUm91bmRl
ZFJlY3QuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhp
Y3NcU2VnbWVudGVkRm9udERhdGEuY3BwIiAvPgpAQCAtMTkxMTEsNiArMTkxMTIsNyBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUGF0aFRyYXZlcnNhbFN0
YXRlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xQ
YXR0ZXJuLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFwaGlj
c1xQbGF0Zm9ybUxheWVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xQbGF0Zm9ybVRpbWVSYW5nZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFJlZ2lvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUm91bmRlZFJlY3QuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFNlZ21lbnRlZEZvbnREYXRhLmgiIC8+
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNjQzODApCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAg
LTEzODMsNiArMTM4Myw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xSZWdpb24uY3BwIj4KICAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXGdyYXBoaWNzXFBsYXRmb3JtVGltZVJhbmdlcy5jcHAiPgorICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVxncmFwaGljczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUm91bmRlZFJlY3QuY3BwIj4KICAgICAgIDxG
aWx0ZXI+cGxhdGZvcm1cZ3JhcGhpY3M8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTgz
MjQsNiArODMyNyw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxncmFw
aGljc1xQbGF0Zm9ybUxheWVyLmgiPgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxncmFwaGljczwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cZ3JhcGhpY3NcUGxhdGZvcm1UaW1lUmFuZ2VzLmgiPgorICAgICAgPEZpbHRlcj5wbGF0
Zm9ybVxncmFwaGljczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcUmVnaW9uLmgiPgogICAgICAgPEZpbHRlcj5w
bGF0Zm9ybVxncmFwaGljczwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTY0MzgwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDggQEAKIAkJMDczQkUzNTAxN0Qx
ODFBNjAwMkJENDMxIC8qIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIyMUJBODE3Q0YwQUQ0MDA4NDhF
NTEgLyogUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCAqLzsgfTsKIAkJMDc0MzAwQTUwRjRC
OEJDRjAwODA3NkNEIC8qIE1lZGlhUGxheWVyUHJpdmF0ZUlPUy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NDMwMEEzMEY0QjhCQ0YwMDgwNzZDRCAv
KiBNZWRpYVBsYXllclByaXZhdGVJT1MubW0gKi87IH07CiAJCTA3NDMwMEE2MEY0QjhCQ0YwMDgw
NzZDRCAvKiBNZWRpYVBsYXllclByaXZhdGVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NDMwMEE0MEY0QjhCQ0YwMDgwNzZDRCAvKiBNZWRpYVBs
YXllclByaXZhdGVJT1MuaCAqLzsgfTsKKwkJMDc0RTgyQkExOEE2OUYwRTAwN0VGNTRDIC8qIFBs
YXRmb3JtVGltZVJhbmdlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzRFODJCODE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2Vz
LmNwcCAqLzsgfTsKKwkJMDc0RTgyQkIxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJh
bmdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0
RTgyQjkxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3NTM4NjAyMTQ0ODlFOTgw
MEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRl
eHRUcmFjay5jcHAgKi87IH07CiAJCTA3NTM4NjAzMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRU
ZXh0VHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLzsgfTsKIAkJ
MDc2MzA2RDAxN0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NjMw
NkNDMTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTY5NTcs
NiArNjk1OSw4IEBACiAJCTA3M0JFMzQ3MTdEMTdFN0EwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVz
ZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzQzMDBBMzBGNEI4QkNGMDA4MDc2Q0QgLyogTWVkaWFQbGF5ZXJQcml2
YXRlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVkaWFQ
bGF5ZXJQcml2YXRlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzQzMDBB
NDBGNEI4QkNGMDA4MDc2Q0QgLyogTWVkaWFQbGF5ZXJQcml2YXRlSU9TLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUlPUy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwNzRFODJCODE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1U
aW1lUmFuZ2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRm
b3JtVGltZVJhbmdlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3NEU4MkI5
MThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1UaW1lUmFuZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2su
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkVGV4dFRyYWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc1Mzg2MDExNDQ4OUU5ODAwQjc4
NDUyIC8qIENhY2hlZFRleHRUcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDYWNoZWRUZXh0VHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2MzA2
Q0MxN0UxNDc4RDAwNUE3QzRFIC8qIE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJlYW1UcmFja1NvdXJjZXND
YWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk4NzksNiArMTk4ODMs
OCBAQAogCQkJCTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggKi8s
CiAJCQkJMDcyODQ3RTIxNkVCQzVCMDAwNDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmggKi8s
CiAJCQkJMDcyODQ3RTMxNkVCQzVCMDAwNDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrTWVudS5o
ICovLAorCQkJCTA3NEU4MkI4MThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMu
Y3BwICovLAorCQkJCTA3NEU4MkI5MThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5n
ZXMuaCAqLywKIAkJCQlCQ0FCNDE3RjEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmNwcCAqLywK
IAkJCQlCQ0FCNDE4MDEzRTM1NkU4MDBEOEFBRjMgLyogUmVnaW9uLmggKi8sCiAJCQkJQTczRjk1
RkMxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0LmNwcCAqLywKQEAgLTI0ODE2LDYgKzI0
ODIyLDcgQEAKIAkJCQkyOTdCRTNENjE2QzAzQzBCMDAzMzE2QkQgLyogUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNWb2ljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk3QkUzRDcxNkMwM0MwRTAwMzMx
NkJEIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
RDhGODFCMTFDQUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTA3NEU4MkJCMThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzZCMDlBQzRENEYwMEE2QUFCNCAvKiBQbGF0Zm9y
bVdoZWVsRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxRDU5MUIzMTY2OTdBNkMwMEU2QkYw
MiAvKiBQbHVnSW5DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE5QzZFNEY0MEQ3NDVFNDgw
MDY0NDJFOSAvKiBQbHVnaW5EYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTI4MTk1LDYgKzI4MjAy
LDcgQEAKIAkJCQkyOTdCRTNEQTE2QzA0M0Q4MDAzMzE2QkQgLyogUGxhdGZvcm1TcGVlY2hTeW50
aGVzaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTdCRTNEODE2QzAzQ0NFMDAzMzE2QkQg
LyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFB
RDhGODFDMTFDQUI5RTkwMEU5M0U1NCAvKiBQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMDc0RTgyQkExOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdl
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOUM2RTRGMzBENzQ1RTQ4MDA2NDQyRTkgLyogUGx1
Z2luRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzIwNUFCQjEyMzkyOTI3MDBCMTczODAg
LyogUGx1Z2luRG9jdW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFEQTE0MTAwRTFBRTVE
OTAwMDIzRUU1IC8qIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9u
IDE2NDM4MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwNzUsMTAgKzMwNzUsMTEgQEAgZG91YmxlIEhUTUxNZWRpYUVsZW1l
bnQ6OnBlcmNlbnRMb2FkZWQoKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGRvdWJsZSBidWZm
ZXJlZCA9IDA7Ci0gICAgUmVmUHRyPFRpbWVSYW5nZXM+IHRpbWVSYW5nZXMgPSBtX3BsYXllci0+
YnVmZmVyZWQoKTsKKyAgICBib29sIGlnbm9yZWQ7CisgICAgYXV0byB0aW1lUmFuZ2VzID0gbV9w
bGF5ZXItPmJ1ZmZlcmVkKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRpbWVSYW5n
ZXMtPmxlbmd0aCgpOyArK2kpIHsKLSAgICAgICAgZG91YmxlIHN0YXJ0ID0gdGltZVJhbmdlcy0+
c3RhcnQoaSwgSUdOT1JFX0VYQ0VQVElPTik7Ci0gICAgICAgIGRvdWJsZSBlbmQgPSB0aW1lUmFu
Z2VzLT5lbmQoaSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgICAgIGRvdWJsZSBzdGFydCA9IHRp
bWVSYW5nZXMtPnN0YXJ0KGksIGlnbm9yZWQpOworICAgICAgICBkb3VibGUgZW5kID0gdGltZVJh
bmdlcy0+ZW5kKGksIGlnbm9yZWQpOwogICAgICAgICBidWZmZXJlZCArPSBlbmQgLSBzdGFydDsK
ICAgICB9CiAgICAgcmV0dXJuIGJ1ZmZlcmVkIC8gZHVyYXRpb247CkBAIC00MTEyLDEwICs0MTEz
LDEwIEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gSFRNTE1lZGlhRWxlbWVudDoKIAogI2lmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCiAgICAgaWYgKG1fbWVkaWFTb3VyY2UpCi0gICAgICAgIHJldHVy
biBtX21lZGlhU291cmNlLT5idWZmZXJlZCgpOworICAgICAgICByZXR1cm4gVGltZVJhbmdlczo6
Y3JlYXRlKCptX21lZGlhU291cmNlLT5idWZmZXJlZCgpKTsKICNlbmRpZgogCi0gICAgcmV0dXJu
IG1fcGxheWVyLT5idWZmZXJlZCgpOworICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKm1f
cGxheWVyLT5idWZmZXJlZCgpKTsKIH0KIAogUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBIVE1MTWVk
aWFFbGVtZW50OjpwbGF5ZWQoKQpAQCAtNDEzNCw3ICs0MTM1LDEwIEBAIFBhc3NSZWZQdHI8VGlt
ZVJhbmdlcz4gSFRNTE1lZGlhRWxlbWVudDoKIAogUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBIVE1M
TWVkaWFFbGVtZW50OjpzZWVrYWJsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGxheWVyID8g
bV9wbGF5ZXItPnNlZWthYmxlKCkgOiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAgICBpZiAobV9w
bGF5ZXIpCisgICAgICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKm1fcGxheWVyLT5zZWVr
YWJsZSgpKTsKKworICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKIH0KIAogYm9vbCBI
VE1MTWVkaWFFbGVtZW50Ojpwb3RlbnRpYWxseVBsYXlpbmcoKSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTY0MzgwKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05
NSw3ICs5NSw3IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFDb250cm9sbGVyOjoKICAg
ICAvLyB1c2VyIGFnZW50IGhhcyBidWZmZXJlZCwgYXQgdGhlIHRpbWUgdGhlIGF0dHJpYnV0ZSBp
cyBldmFsdWF0ZWQuCiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkUmFuZ2VzID0gbV9t
ZWRpYUVsZW1lbnRzLmZpcnN0KCktPmJ1ZmZlcmVkKCk7CiAgICAgZm9yIChzaXplX3QgaW5kZXgg
PSAxOyBpbmRleCA8IG1fbWVkaWFFbGVtZW50cy5zaXplKCk7ICsraW5kZXgpCi0gICAgICAgIGJ1
ZmZlcmVkUmFuZ2VzLT5pbnRlcnNlY3RXaXRoKG1fbWVkaWFFbGVtZW50c1tpbmRleF0tPmJ1ZmZl
cmVkKCkuZ2V0KCkpOworICAgICAgICBidWZmZXJlZFJhbmdlcy0+aW50ZXJzZWN0V2l0aCgqbV9t
ZWRpYUVsZW1lbnRzW2luZGV4XS0+YnVmZmVyZWQoKS5nZXQoKSk7CiAgICAgcmV0dXJuIGJ1ZmZl
cmVkUmFuZ2VzOwogfQogCkBAIC0xMDksNyArMTA5LDcgQEAgUGFzc1JlZlB0cjxUaW1lUmFuZ2Vz
PiBNZWRpYUNvbnRyb2xsZXI6OgogICAgIC8vIHVzZXIgYWdlbnQgaXMgYWJsZSB0byBzZWVrIHRv
LCBhdCB0aGUgdGltZSB0aGUgYXR0cmlidXRlIGlzIGV2YWx1YXRlZC4KICAgICBSZWZQdHI8VGlt
ZVJhbmdlcz4gc2Vla2FibGVSYW5nZXMgPSBtX21lZGlhRWxlbWVudHMuZmlyc3QoKS0+c2Vla2Fi
bGUoKTsKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDE7IGluZGV4IDwgbV9tZWRpYUVsZW1lbnRz
LnNpemUoKTsgKytpbmRleCkKLSAgICAgICAgc2Vla2FibGVSYW5nZXMtPmludGVyc2VjdFdpdGgo
bV9tZWRpYUVsZW1lbnRzW2luZGV4XS0+c2Vla2FibGUoKS5nZXQoKSk7CisgICAgICAgIHNlZWth
YmxlUmFuZ2VzLT5pbnRlcnNlY3RXaXRoKCptX21lZGlhRWxlbWVudHNbaW5kZXhdLT5zZWVrYWJs
ZSgpLmdldCgpKTsKICAgICByZXR1cm4gc2Vla2FibGVSYW5nZXM7CiB9CiAKQEAgLTEyMyw3ICsx
MjMsNyBAQCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhQ29udHJvbGxlcjo6CiAgICAgLy8g
dXNlciBhZ2VudCBoYXMgc28gZmFyIHJlbmRlcmVkLCBhdCB0aGUgdGltZSB0aGUgYXR0cmlidXRl
IGlzIGV2YWx1YXRlZC4KICAgICBSZWZQdHI8VGltZVJhbmdlcz4gcGxheWVkUmFuZ2VzID0gbV9t
ZWRpYUVsZW1lbnRzLmZpcnN0KCktPnBsYXllZCgpOwogICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MTsgaW5kZXggPCBtX21lZGlhRWxlbWVudHMuc2l6ZSgpOyArK2luZGV4KQotICAgICAgICBwbGF5
ZWRSYW5nZXMtPnVuaW9uV2l0aChtX21lZGlhRWxlbWVudHNbaW5kZXhdLT5wbGF5ZWQoKS5nZXQo
KSk7CisgICAgICAgIHBsYXllZFJhbmdlcy0+dW5pb25XaXRoKCptX21lZGlhRWxlbWVudHNbaW5k
ZXhdLT5wbGF5ZWQoKS5nZXQoKSk7CiAgICAgcmV0dXJuIHBsYXllZFJhbmdlczsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwCShyZXZpc2lvbiAxNjQzODApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxODAg
KzI5LDExMCBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGVQbGFjZWhvbGRlci5oIgotI2luY2x1ZGUgPG1hdGguaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1UaW1lUmFuZ2VzOjpUaW1lUmFuZ2VzKGRvdWJsZSBzdGFydCwgZG91YmxlIGVu
ZCkKK1Bhc3NSZWZQdHI8VGltZVJhbmdlcz4gVGltZVJhbmdlczo6Y3JlYXRlKCkKIHsKLSAgICBh
ZGQoc3RhcnQsIGVuZCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUaW1lUmFuZ2VzKTsKIH0K
IAotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1lUmFuZ2VzOjpjb3B5KCkgY29uc3QKK1Bhc3NS
ZWZQdHI8VGltZVJhbmdlcz4gVGltZVJhbmdlczo6Y3JlYXRlKGRvdWJsZSBzdGFydCwgZG91Ymxl
IGVuZCkKIHsKLSAgICBSZWZQdHI8VGltZVJhbmdlcz4gbmV3U2Vzc2lvbiA9IFRpbWVSYW5nZXM6
OmNyZWF0ZSgpOwotICAgIAotICAgIHVuc2lnbmVkIHNpemUgPSBtX3Jhbmdlcy5zaXplKCk7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykKLSAgICAgICAgbmV3U2Vzc2lv
bi0+YWRkKG1fcmFuZ2VzW2ldLm1fc3RhcnQsIG1fcmFuZ2VzW2ldLm1fZW5kKTsKLSAgICAKLSAg
ICByZXR1cm4gbmV3U2Vzc2lvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBU
aW1lUmFuZ2VzKHN0YXJ0LCBlbmQpKTsKIH0KIAotdm9pZCBUaW1lUmFuZ2VzOjppbnZlcnQoKQor
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBUaW1lUmFuZ2VzOjpjcmVhdGUoY29uc3QgUGxhdGZvcm1U
aW1lUmFuZ2VzJiBvdGhlcikKIHsKLSAgICBSZWZQdHI8VGltZVJhbmdlcz4gaW52ZXJ0ZWQgPSBU
aW1lUmFuZ2VzOjpjcmVhdGUoKTsKLSAgICBkb3VibGUgcG9zSW5mID0gc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjppbmZpbml0eSgpOwotICAgIGRvdWJsZSBuZWdJbmYgPSAtc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOwotCi0gICAgaWYgKCFtX3Jhbmdlcy5zaXpl
KCkpCi0gICAgICAgIGludmVydGVkLT5hZGQobmVnSW5mLCBwb3NJbmYpOwotICAgIGVsc2Ugewot
ICAgICAgICBkb3VibGUgc3RhcnQgPSBtX3Jhbmdlcy5maXJzdCgpLm1fc3RhcnQ7Ci0gICAgICAg
IGlmIChzdGFydCAhPSBuZWdJbmYpCi0gICAgICAgICAgICBpbnZlcnRlZC0+YWRkKG5lZ0luZiwg
c3RhcnQpOwotCi0gICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggKyAxIDwgbV9y
YW5nZXMuc2l6ZSgpOyArK2luZGV4KQotICAgICAgICAgICAgaW52ZXJ0ZWQtPmFkZChtX3Jhbmdl
c1tpbmRleF0ubV9lbmQsIG1fcmFuZ2VzW2luZGV4ICsgMV0ubV9zdGFydCk7Ci0KLSAgICAgICAg
ZG91YmxlIGVuZCA9IG1fcmFuZ2VzLmxhc3QoKS5tX2VuZDsKLSAgICAgICAgaWYgKGVuZCAhPSBw
b3NJbmYpCi0gICAgICAgICAgICBpbnZlcnRlZC0+YWRkKGVuZCwgcG9zSW5mKTsKLSAgICB9Ci0K
LSAgICBtX3Jhbmdlcy5zd2FwKGludmVydGVkLT5tX3Jhbmdlcyk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBUaW1lUmFuZ2VzKG90aGVyKSk7CiB9CiAKLXZvaWQgVGltZVJhbmdlczo6aW50ZXJz
ZWN0V2l0aChjb25zdCBUaW1lUmFuZ2VzKiBvdGhlcikKK1RpbWVSYW5nZXM6OlRpbWVSYW5nZXMo
KQogewotICAgIEFTU0VSVChvdGhlcik7Ci0KLSAgICBpZiAob3RoZXIgPT0gdGhpcykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPFRpbWVSYW5nZXM+IGludmVydGVkT3RoZXIgPSBvdGhl
ci0+Y29weSgpOwotICAgIGludmVydGVkT3RoZXItPmludmVydCgpOwotCi0gICAgaW52ZXJ0KCk7
Ci0gICAgdW5pb25XaXRoKGludmVydGVkT3RoZXIuZ2V0KCkpOwotICAgIGludmVydCgpOwogfQog
Ci12b2lkIFRpbWVSYW5nZXM6OnVuaW9uV2l0aChjb25zdCBUaW1lUmFuZ2VzKiBvdGhlcikKK1Rp
bWVSYW5nZXM6OlRpbWVSYW5nZXMoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKQorICAgIDogbV9y
YW5nZXMoUGxhdGZvcm1UaW1lUmFuZ2VzKHN0YXJ0LCBlbmQpKQogewotICAgIEFTU0VSVChvdGhl
cik7Ci0gICAgUmVmUHRyPFRpbWVSYW5nZXM+IHVuaW9uZWQgPSBjb3B5KCk7Ci0gICAgZm9yIChz
aXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG90aGVyLT5tX3Jhbmdlcy5zaXplKCk7ICsraW5kZXgp
IHsKLSAgICAgICAgY29uc3QgUmFuZ2UmIHJhbmdlID0gb3RoZXItPm1fcmFuZ2VzW2luZGV4XTsK
LSAgICAgICAgdW5pb25lZC0+YWRkKHJhbmdlLm1fc3RhcnQsIHJhbmdlLm1fZW5kKTsKLSAgICB9
Cit9CiAKLSAgICBtX3Jhbmdlcy5zd2FwKHVuaW9uZWQtPm1fcmFuZ2VzKTsKK1RpbWVSYW5nZXM6
OlRpbWVSYW5nZXMoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiBvdGhlcikKKyAgICA6IG1fcmFu
Z2VzKG90aGVyKQorewogfQogCi1kb3VibGUgVGltZVJhbmdlczo6c3RhcnQodW5zaWduZWQgaW5k
ZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCAKLXsgCi0gICAgaWYgKGluZGV4ID49IGxlbmd0
aCgpKSB7Citkb3VibGUgVGltZVJhbmdlczo6c3RhcnQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlv
bkNvZGUmIGVjKSBjb25zdAoreworICAgIGJvb2wgdmFsaWQ7CisgICAgZG91YmxlIHJlc3VsdCA9
IG1fcmFuZ2VzLnN0YXJ0KGluZGV4LCB2YWxpZCk7CisKKyAgICBpZiAoIXZhbGlkKSB7CiAgICAg
ICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBy
ZXR1cm4gbV9yYW5nZXNbaW5kZXhdLm1fc3RhcnQ7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
ZG91YmxlIFRpbWVSYW5nZXM6OmVuZCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMp
IGNvbnN0IAogeyAKLSAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpIHsKKyAgICBib29sIHZhbGlk
OworICAgIGRvdWJsZSByZXN1bHQgPSBtX3Jhbmdlcy5lbmQoaW5kZXgsIHZhbGlkKTsKKworICAg
IGlmICghdmFsaWQpIHsKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQotICAgIHJldHVybiBtX3Jhbmdlc1tpbmRleF0ubV9lbmQ7CisgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBUaW1lUmFuZ2VzOjphZGQoZG91YmxlIHN0YXJ0LCBkb3Vi
bGUgZW5kKSAKK3ZvaWQgVGltZVJhbmdlczo6aW52ZXJ0KCkKIHsKLSAgICBBU1NFUlQoc3RhcnQg
PD0gZW5kKTsKLSAgICB1bnNpZ25lZCBpbnQgb3ZlcmxhcHBpbmdBcmNJbmRleDsKLSAgICBSYW5n
ZSBhZGRlZFJhbmdlKHN0YXJ0LCBlbmQpOwotCi0gICAgLy8gRm9yIGVhY2ggcHJlc2VudCByYW5n
ZSBjaGVjayBpZiB3ZSBuZWVkIHRvOgotICAgIC8vIC0gbWVyZ2Ugd2l0aCB0aGUgYWRkZWQgcmFu
Z2UsIGluIGNhc2Ugd2UgYXJlIG92ZXJsYXBwaW5nIG9yIGNvbnRpZ3VvdXMKLSAgICAvLyAtIE5l
ZWQgdG8gaW5zZXJ0IGluIHBsYWNlLCB3ZSB3ZSBhcmUgY29tcGxldGVseSwgbm90IG92ZXJsYXBw
aW5nIGFuZCBub3QgY29udGlndW91cwotICAgIC8vIGluIGJldHdlZW4gdHdvIHJhbmdlcy4KLSAg
ICAvLwotICAgIC8vIFRPRE86IEdpdmVuIHRoYXQgd2UgYXNzdW1lIHRoYXQgcmFuZ2VzIGFyZSBj
b3JyZWN0bHkgb3JkZXJlZCwgdGhpcyBjb3VsZCBiZSBvcHRpbWl6ZWQuCi0KLSAgICBmb3IgKG92
ZXJsYXBwaW5nQXJjSW5kZXggPSAwOyBvdmVybGFwcGluZ0FyY0luZGV4IDwgbV9yYW5nZXMuc2l6
ZSgpOyBvdmVybGFwcGluZ0FyY0luZGV4KyspIHsKLSAgICAgICAgaWYgKGFkZGVkUmFuZ2UuaXNP
dmVybGFwcGluZ1JhbmdlKG1fcmFuZ2VzW292ZXJsYXBwaW5nQXJjSW5kZXhdKQotICAgICAgICAg
fHwgYWRkZWRSYW5nZS5pc0NvbnRpZ3VvdXNXaXRoUmFuZ2UobV9yYW5nZXNbb3ZlcmxhcHBpbmdB
cmNJbmRleF0pKSB7Ci0gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1lcmdlIHRoZSBhZGRlZFJh
bmdlIGFuZCB0aGF0IHJhbmdlLgotICAgICAgICAgICAgYWRkZWRSYW5nZSA9IGFkZGVkUmFuZ2Uu
dW5pb25XaXRoT3ZlcmxhcHBpbmdPckNvbnRpZ3VvdXNSYW5nZShtX3Jhbmdlc1tvdmVybGFwcGlu
Z0FyY0luZGV4XSk7Ci0gICAgICAgICAgICBtX3Jhbmdlcy5yZW1vdmUob3ZlcmxhcHBpbmdBcmNJ
bmRleCk7Ci0gICAgICAgICAgICBvdmVybGFwcGluZ0FyY0luZGV4LS07Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSBmb3Igd2hpY2ggdGhlcmUgaXMgbm8g
bW9yZSB0byBkbwotICAgICAgICAgICAgaWYgKCFvdmVybGFwcGluZ0FyY0luZGV4KSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGFkZGVkUmFuZ2UuaXNCZWZvcmVSYW5nZShtX3Jhbmdlc1swXSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgLy8gRmlyc3QgaW5kZXgsIGFuZCB3ZSBhcmUgY29tcGxldGVs
eSBiZWZvcmUgdGhhdCByYW5nZSAoYW5kIG5vdCBjb250aWd1b3VzLCBub3Igb3ZlcmxhcHBpbmcp
LgotICAgICAgICAgICAgICAgICAgICAvLyBXZSBqdXN0IG5lZWQgdG8gYmUgaW5zZXJ0ZWQgaGVy
ZS4KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAobV9yYW5nZXNbb3ZlcmxhcHBpbmdB
cmNJbmRleCAtIDFdLmlzQmVmb3JlUmFuZ2UoYWRkZWRSYW5nZSkKLSAgICAgICAgICAgICAgICAg
JiYgYWRkZWRSYW5nZS5pc0JlZm9yZVJhbmdlKG1fcmFuZ2VzW292ZXJsYXBwaW5nQXJjSW5kZXhd
KSkgewotICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgZXhhY3RseSBhZnRlciB0aGUgY3Vy
cmVudCBwcmV2aW91cyByYW5nZSwgYW5kIGJlZm9yZSB0aGUgY3VycmVudCByYW5nZSwgd2hpbGUK
LSAgICAgICAgICAgICAgICAgICAgLy8gbm90IG92ZXJsYXBwaW5nIHdpdGggbm9uZSBvZiB0aGVt
LiBJbnNlcnQgaGVyZS4KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQorICAgIG1fcmFuZ2VzLmludmVy
dCgpOworfQorCitQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IFRpbWVSYW5nZXM6OmNvcHkoKSBjb25z
dAoreworICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUobV9yYW5nZXMpOworfQogCi0gICAg
Ly8gTm93IHRoYXQgd2UgYXJlIHN1cmUgd2UgZG9uJ3Qgb3ZlcmxhcCB3aXRoIGFueSByYW5nZSwg
anVzdCBhZGQgaXQuCi0gICAgbV9yYW5nZXMuaW5zZXJ0KG92ZXJsYXBwaW5nQXJjSW5kZXgsIGFk
ZGVkUmFuZ2UpOwordm9pZCBUaW1lUmFuZ2VzOjppbnRlcnNlY3RXaXRoKGNvbnN0IFRpbWVSYW5n
ZXMmIG90aGVyKQoreworICAgIG1fcmFuZ2VzLmludGVyc2VjdFdpdGgoKm90aGVyLnJhbmdlcygp
KTsKK30KKwordm9pZCBUaW1lUmFuZ2VzOjp1bmlvbldpdGgoY29uc3QgVGltZVJhbmdlcyYgb3Ro
ZXIpCit7CisgICAgbV9yYW5nZXMudW5pb25XaXRoKCpvdGhlci5yYW5nZXMoKSk7Cit9CisKK3Vu
c2lnbmVkIFRpbWVSYW5nZXM6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmFuZ2Vz
Lmxlbmd0aCgpOworfQorCit2b2lkIFRpbWVSYW5nZXM6OmFkZChkb3VibGUgc3RhcnQsIGRvdWJs
ZSBlbmQpCit7CisgICAgbV9yYW5nZXMuYWRkKHN0YXJ0LCBlbmQpOwogfQogCiBib29sIFRpbWVS
YW5nZXM6OmNvbnRhaW4oZG91YmxlIHRpbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZpbmQodGlt
ZSkgIT0gbm90Rm91bmQ7CisgICAgcmV0dXJuIG1fcmFuZ2VzLmNvbnRhaW4odGltZSk7CiB9CiAK
IHNpemVfdCBUaW1lUmFuZ2VzOjpmaW5kKGRvdWJsZSB0aW1lKSBjb25zdAogewotICAgIGZvciAo
dW5zaWduZWQgbiA9IDA7IG4gPCBsZW5ndGgoKTsgbisrKSB7Ci0gICAgICAgIGlmICh0aW1lID49
IHN0YXJ0KG4sIElHTk9SRV9FWENFUFRJT04pICYmIHRpbWUgPD0gZW5kKG4sIElHTk9SRV9FWENF
UFRJT04pKQotICAgICAgICAgICAgcmV0dXJuIG47Ci0gICAgfQotICAgIHJldHVybiBub3RGb3Vu
ZDsKKyAgICByZXR1cm4gbV9yYW5nZXMuZmluZCh0aW1lKTsKIH0KIAogZG91YmxlIFRpbWVSYW5n
ZXM6Om5lYXJlc3QoZG91YmxlIHRpbWUpIGNvbnN0CiB7Ci0gICAgZG91YmxlIGNsb3Nlc3REZWx0
YSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKTsKLSAgICBkb3VibGUg
Y2xvc2VzdFRpbWUgPSAwOwotICAgIHVuc2lnbmVkIGNvdW50ID0gbGVuZ3RoKCk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBuZHggPSAwOyBuZHggPCBjb3VudDsgbmR4KyspIHsKLSAgICAgICAgZG91Ymxl
IHN0YXJ0VGltZSA9IHN0YXJ0KG5keCwgSUdOT1JFX0VYQ0VQVElPTik7Ci0gICAgICAgIGRvdWJs
ZSBlbmRUaW1lID0gZW5kKG5keCwgSUdOT1JFX0VYQ0VQVElPTik7Ci0gICAgICAgIGlmICh0aW1l
ID49IHN0YXJ0VGltZSAmJiB0aW1lIDw9IGVuZFRpbWUpCi0gICAgICAgICAgICByZXR1cm4gdGlt
ZTsKLSAgICAgICAgaWYgKGZhYnMoc3RhcnRUaW1lIC0gdGltZSkgPCBjbG9zZXN0RGVsdGEpIHsK
LSAgICAgICAgICAgIGNsb3Nlc3RUaW1lID0gc3RhcnRUaW1lOwotICAgICAgICAgICAgY2xvc2Vz
dERlbHRhID0gZmFic2Yoc3RhcnRUaW1lIC0gdGltZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYg
KGZhYnMoZW5kVGltZSAtIHRpbWUpIDwgY2xvc2VzdERlbHRhKSB7Ci0gICAgICAgICAgICBjbG9z
ZXN0VGltZSA9IGVuZFRpbWU7Ci0gICAgICAgICAgICBjbG9zZXN0RGVsdGEgPSBmYWJzZihlbmRU
aW1lIC0gdGltZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGNsb3Nlc3RUaW1lOwor
ICAgIHJldHVybiBtX3Jhbmdlcy5uZWFyZXN0KHRpbWUpOwogfQogCiBkb3VibGUgVGltZVJhbmdl
czo6dG90YWxEdXJhdGlvbigpIGNvbnN0CiB7Ci0gICAgZG91YmxlIHRvdGFsID0gMDsKLSAgICBm
b3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgbGVuZ3RoKCk7IG4rKykKLSAgICAgICAgdG90YWwgKz0g
ZmFicyhlbmQobiwgSUdOT1JFX0VYQ0VQVElPTikgLSBzdGFydChuLCBJR05PUkVfRVhDRVBUSU9O
KSk7Ci0gICAgcmV0dXJuIHRvdGFsOworICAgIHJldHVybiBtX3Jhbmdlcy50b3RhbER1cmF0aW9u
KCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oCShyZXZpc2lvbiAxNjQz
ODApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBUaW1lUmFuZ2VzX2gKICNkZWZpbmUgVGltZVJhbmdl
c19oCiAKKyNpbmNsdWRlICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKICNpbmNsdWRlIDxhbGdvcml0
aG0+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgpAQCAtMzcsODIgKzM4LDM1IEBAIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNs
YXNzIFRpbWVSYW5nZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxUaW1lUmFuZ2VzPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gY3JlYXRlKCkgCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRpbWVSYW5nZXMpOwotICAgIH0KLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBjcmVhdGUoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUaW1lUmFuZ2VzKHN0YXJ0LCBlbmQp
KTsKLSAgICB9CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gY3JlYXRlKCk7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gY3JlYXRlKGRvdWJsZSBzdGFydCwgZG91
YmxlIGVuZCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gY3JlYXRlKGNvbnN0
IFBsYXRmb3JtVGltZVJhbmdlcyYpOwogCi0gICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBjb3B5
KCkgY29uc3Q7Ci0gICAgdm9pZCBpbnZlcnQoKTsKLSAgICB2b2lkIGludGVyc2VjdFdpdGgoY29u
c3QgVGltZVJhbmdlcyopOwotICAgIHZvaWQgdW5pb25XaXRoKGNvbnN0IFRpbWVSYW5nZXMqKTsK
LQotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2VzLnNpemUoKTsg
fQogICAgIGRvdWJsZSBzdGFydCh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OwogICAgIGRvdWJsZSBlbmQodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsK
IAotICAgIHZvaWQgYWRkKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCk7CisgICAgUGFzc1JlZlB0
cjxUaW1lUmFuZ2VzPiBjb3B5KCkgY29uc3Q7CisgICAgdm9pZCBpbnZlcnQoKTsKKyAgICB2b2lk
IGludGVyc2VjdFdpdGgoY29uc3QgVGltZVJhbmdlcyYpOworICAgIHZvaWQgdW5pb25XaXRoKGNv
bnN0IFRpbWVSYW5nZXMmKTsKICAgICAKLSAgICBib29sIGNvbnRhaW4oZG91YmxlIHRpbWUpIGNv
bnN0OworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogCi0gICAgc2l6ZV90IGZpbmQoZG91
YmxlIHRpbWUpIGNvbnN0OworICAgIHZvaWQgYWRkKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCk7
CisgICAgYm9vbCBjb250YWluKGRvdWJsZSB0aW1lKSBjb25zdDsKICAgICAKKyAgICBzaXplX3Qg
ZmluZChkb3VibGUgdGltZSkgY29uc3Q7CiAgICAgZG91YmxlIG5lYXJlc3QoZG91YmxlIHRpbWUp
IGNvbnN0OwotCiAgICAgZG91YmxlIHRvdGFsRHVyYXRpb24oKSBjb25zdDsKIAogcHJpdmF0ZToK
LSAgICBUaW1lUmFuZ2VzKCkgeyB9CisgICAgZXhwbGljaXQgVGltZVJhbmdlcygpOwogICAgIFRp
bWVSYW5nZXMoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKLSAgICBUaW1lUmFuZ2VzKGNvbnN0
IFRpbWVSYW5nZXMmKTsKKyAgICBUaW1lUmFuZ2VzKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYp
OwogCi0gICAgLy8gV2UgY29uc2lkZXIgYWxsIHRoZSBSYW5nZXMgdG8gYmUgc2VtaS1ib3VuZGVk
IGFzIGZvbGxvdzogW3N0YXJ0LCBlbmRbCi0gICAgc3RydWN0IFJhbmdlIHsKLSAgICAgICAgUmFu
Z2UoKSB7IH0KLSAgICAgICAgUmFuZ2UoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBtX3N0YXJ0ID0gc3RhcnQ7Ci0gICAgICAgICAgICBtX2VuZCA9IGVu
ZDsKLSAgICAgICAgfQotICAgICAgICBkb3VibGUgbV9zdGFydDsKLSAgICAgICAgZG91YmxlIG1f
ZW5kOwotCi0gICAgICAgIGlubGluZSBib29sIGlzUG9pbnRJblJhbmdlKGRvdWJsZSBwb2ludCkg
Y29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fc3RhcnQgPD0gcG9pbnQgJiYg
cG9pbnQgPCBtX2VuZDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaW5saW5lIGJvb2wg
aXNPdmVybGFwcGluZ1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSkgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGlzUG9pbnRJblJhbmdlKHJhbmdlLm1fc3RhcnQpIHx8IGlzUG9p
bnRJblJhbmdlKHJhbmdlLm1fZW5kKSB8fCByYW5nZS5pc1BvaW50SW5SYW5nZShtX3N0YXJ0KTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlubGluZSBib29sIGlzQ29udGlndW91c1dpdGhSYW5nZShj
b25zdCBSYW5nZSYgcmFuZ2UpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBy
YW5nZS5tX3N0YXJ0ID09IG1fZW5kIHx8IHJhbmdlLm1fZW5kID09IG1fc3RhcnQ7Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIGlubGluZSBSYW5nZSB1bmlvbldpdGhPdmVybGFwcGluZ09y
Q29udGlndW91c1JhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSkgY29uc3QKLSAgICAgICAgewotICAg
ICAgICAgICAgUmFuZ2UgcmV0OwotCi0gICAgICAgICAgICByZXQubV9zdGFydCA9IHN0ZDo6bWlu
KG1fc3RhcnQsIHJhbmdlLm1fc3RhcnQpOwotICAgICAgICAgICAgcmV0Lm1fZW5kID0gc3RkOjpt
YXgobV9lbmQsIHJhbmdlLm1fZW5kKTsKLQotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlubGluZSBib29sIGlzQmVmb3JlUmFuZ2UoY29uc3QgUmFuZ2UmIHJh
bmdlKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmFuZ2UubV9zdGFydCA+
PSBtX2VuZDsKLSAgICAgICAgfQotICAgIH07Ci0gICAgCi0gICAgVmVjdG9yPFJhbmdlPiBtX3Jh
bmdlczsKKyAgICBjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMqIHJhbmdlcygpIGNvbnN0IHsgcmV0
dXJuICZtX3JhbmdlczsgfQorCisgICAgUGxhdGZvcm1UaW1lUmFuZ2VzIG1fcmFuZ2VzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2aXNpb24gMTY0MzgwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw4ICszNiw4IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgotI2luY2x1
ZGUgIlRpbWVSYW5nZXMuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCkBAIC0xMjcsNyArMTI3LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBkb3VibGUgbWF4VGltZVNlZWthYmxlRG91YmxlKCkgY29uc3QgeyByZXR1cm4gMDsgfQog
ICAgIHZpcnR1YWwgZG91YmxlIG1pblRpbWVTZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0K
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCB7IHJl
dHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsgfQorICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCB7IHJldHVybiBQbGF0Zm9ybVRp
bWVSYW5nZXM6OmNyZWF0ZSgpOyB9CiAKICAgICB2aXJ0dWFsIHVuc2lnbmVkIHRvdGFsQnl0ZXMo
KSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBib29sIGRpZExvYWRpbmdQcm9ncmVz
cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC03MDMsMTIgKzcwMywxMiBAQCB2b2lkIE1l
ZGlhUGxheWVyOjpzZXRQcmVzZXJ2ZXNQaXRjaChib29sCiAgICAgbV9wcml2YXRlLT5zZXRQcmVz
ZXJ2ZXNQaXRjaChwcmVzZXJ2ZXNQaXRjaCk7CiB9CiAKLVBhc3NSZWZQdHI8VGltZVJhbmdlcz4g
TWVkaWFQbGF5ZXI6OmJ1ZmZlcmVkKCkKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5n
ZXM+IE1lZGlhUGxheWVyOjpidWZmZXJlZCgpCiB7CiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YnVm
ZmVyZWQoKTsKIH0KIAotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllcjo6c2Vla2Fi
bGUoKQorc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXI6OnNl
ZWthYmxlKCkKIHsKICAgICByZXR1cm4gbV9wcml2YXRlLT5zZWVrYWJsZSgpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCShyZXZp
c2lvbiAxNjQzODApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsMTIgKzEyOCwxMiBAQCBjbGFzcyBDb250ZW50
VHlwZTsKIGNsYXNzIEZyYW1lVmlldzsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDNEOworY2xhc3MgSG9zdFdpbmRvdzsKIGNsYXNzIEludFJlY3Q7CiBjbGFz
cyBJbnRTaXplOwogY2xhc3MgTWVkaWFQbGF5ZXI7CiBzdHJ1Y3QgTWVkaWFQbGF5ZXJGYWN0b3J5
OwotY2xhc3MgVGltZVJhbmdlczsKLWNsYXNzIEhvc3RXaW5kb3c7CitjbGFzcyBQbGF0Zm9ybVRp
bWVSYW5nZXM7CiAKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04pCiBzdHJ1
Y3QgR3JhcGhpY3NEZXZpY2VBZGFwdGVyOwpAQCAtMzUyLDggKzM1Miw4IEBAIHB1YmxpYzoKICAg
ICBib29sIHByZXNlcnZlc1BpdGNoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQcmVzZXJ2ZXNQaXRj
aChib29sKTsKIAotICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKTsKLSAgICBQ
YXNzUmVmUHRyPFRpbWVSYW5nZXM+IHNlZWthYmxlKCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBs
YXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBzZWVrYWJsZSgpOwogICAgIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKTsK
ICAgICBkb3VibGUgbWF4VGltZVNlZWthYmxlKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oCShyZXZpc2lv
biAxNjQzODApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOSBAQAogI2lmIEVOQUJMRShW
SURFTykKIAogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCi0jaW5jbHVkZSAiVGltZVJhbmdlcy5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTEwOCwxMSArMTA5LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1heFRpbWVTZWVr
YWJsZURvdWJsZSgpID8gVGltZVJhbmdlczo6Y3JlYXRlKG1pblRpbWVTZWVrYWJsZSgpLCBtYXhU
aW1lU2Vla2FibGVEb3VibGUoKSkgOiBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsgfQorICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCB7
IHJldHVybiBtYXhUaW1lU2Vla2FibGVEb3VibGUoKSA/IFBsYXRmb3JtVGltZVJhbmdlczo6Y3Jl
YXRlKG1pblRpbWVTZWVrYWJsZSgpLCBtYXhUaW1lU2Vla2FibGVEb3VibGUoKSkgOiBQbGF0Zm9y
bVRpbWVSYW5nZXM6OmNyZWF0ZSgpOyB9CiAgICAgdmlydHVhbCBmbG9hdCBtYXhUaW1lU2Vla2Fi
bGUoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBkb3VibGUgbWF4VGltZVNlZWth
YmxlRG91YmxlKCkgY29uc3QgeyByZXR1cm4gbWF4VGltZVNlZWthYmxlKCk7IH0KICAgICB2aXJ0
dWFsIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdCB7IHJldHVybiAwOyB9Ci0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25z
dCA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3QgPSAw
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVBy
aXZhdGVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaAkocmV2aXNpb24gMTY0MzgwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCiAKLSNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1UaW1lUmFu
Z2VzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJpdmF0
ZUFuZE9wZW4oUGFzc1JlZjxNZWRpYVNvdXJjZVByaXZhdGU+KSA9IDA7CiAgICAgdmlydHVhbCBk
b3VibGUgZHVyYXRpb24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCA9IDA7CiB9OwogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
VGltZVJhbmdlcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVRpbWVSYW5nZXMuaCIKKworI2luY2x1ZGUgPG1hdGguaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBQbGF0Zm9ybVRpbWVSYW5n
ZXM6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1l
UmFuZ2VzPigpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBQbGF0
Zm9ybVRpbWVSYW5nZXM6OmNyZWF0ZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpCit7CisgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihzdGFydCwgZW5kKTsK
K30KKworc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gUGxhdGZvcm1UaW1lUmFu
Z2VzOjpjcmVhdGUoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiBvdGhlcikKK3sKKyAgICByZXR1
cm4gc3RkOjptYWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KG90aGVyKTsKK30KKyAgICAK
K1BsYXRmb3JtVGltZVJhbmdlczo6UGxhdGZvcm1UaW1lUmFuZ2VzKGRvdWJsZSBzdGFydCwgZG91
YmxlIGVuZCkKK3sKKyAgICBhZGQoc3RhcnQsIGVuZCk7Cit9CisKK1BsYXRmb3JtVGltZVJhbmdl
czo6UGxhdGZvcm1UaW1lUmFuZ2VzKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgb3RoZXIpCit7
CisgICAgY29weShvdGhlcik7Cit9CisKK1BsYXRmb3JtVGltZVJhbmdlcyYgUGxhdGZvcm1UaW1l
UmFuZ2VzOjpvcGVyYXRvcj0oY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiBvdGhlcikKK3sKKyAg
ICByZXR1cm4gY29weShvdGhlcik7Cit9CisKK1BsYXRmb3JtVGltZVJhbmdlcyYgUGxhdGZvcm1U
aW1lUmFuZ2VzOjpjb3B5KGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgb3RoZXIpCit7CisgICAg
dW5zaWduZWQgc2l6ZSA9IG90aGVyLm1fcmFuZ2VzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQorICAgICAgICBhZGQob3RoZXIubV9yYW5nZXNbaV0ubV9z
dGFydCwgb3RoZXIubV9yYW5nZXNbaV0ubV9lbmQpOworICAgIAorICAgIHJldHVybiAqdGhpczsK
K30KKwordm9pZCBQbGF0Zm9ybVRpbWVSYW5nZXM6OmludmVydCgpCit7CisgICAgUGxhdGZvcm1U
aW1lUmFuZ2VzIGludmVydGVkOworICAgIGRvdWJsZSBwb3NJbmYgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OmluZmluaXR5KCk7CisgICAgZG91YmxlIG5lZ0luZiA9IC1zdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCk7CisKKyAgICBpZiAoIW1fcmFuZ2VzLnNpemUo
KSkKKyAgICAgICAgaW52ZXJ0ZWQuYWRkKG5lZ0luZiwgcG9zSW5mKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgZG91YmxlIHN0YXJ0ID0gbV9yYW5nZXMuZmlyc3QoKS5tX3N0YXJ0OworICAgICAgICBp
ZiAoc3RhcnQgIT0gbmVnSW5mKQorICAgICAgICAgICAgaW52ZXJ0ZWQuYWRkKG5lZ0luZiwgc3Rh
cnQpOworCisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggKyAxIDwgbV9yYW5n
ZXMuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgaW52ZXJ0ZWQuYWRkKG1fcmFuZ2VzW2lu
ZGV4XS5tX2VuZCwgbV9yYW5nZXNbaW5kZXggKyAxXS5tX3N0YXJ0KTsKKworICAgICAgICBkb3Vi
bGUgZW5kID0gbV9yYW5nZXMubGFzdCgpLm1fZW5kOworICAgICAgICBpZiAoZW5kICE9IHBvc0lu
ZikKKyAgICAgICAgICAgIGludmVydGVkLmFkZChlbmQsIHBvc0luZik7CisgICAgfQorCisgICAg
bV9yYW5nZXMuc3dhcChpbnZlcnRlZC5tX3Jhbmdlcyk7Cit9CisKK3ZvaWQgUGxhdGZvcm1UaW1l
UmFuZ2VzOjppbnRlcnNlY3RXaXRoKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgb3RoZXIpCit7
CisgICAgUGxhdGZvcm1UaW1lUmFuZ2VzIGludmVydGVkT3RoZXIob3RoZXIpOworCisgICAgaW52
ZXJ0ZWRPdGhlci5pbnZlcnQoKTsKKyAgICBpbnZlcnQoKTsKKyAgICB1bmlvbldpdGgoaW52ZXJ0
ZWRPdGhlcik7CisgICAgaW52ZXJ0KCk7Cit9CisKK3ZvaWQgUGxhdGZvcm1UaW1lUmFuZ2VzOjp1
bmlvbldpdGgoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiBvdGhlcikKK3sKKyAgICBQbGF0Zm9y
bVRpbWVSYW5nZXMgdW5pb25lZCgqdGhpcyk7CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgb3RoZXIubV9yYW5nZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGNvbnN0
IFJhbmdlJiByYW5nZSA9IG90aGVyLm1fcmFuZ2VzW2luZGV4XTsKKyAgICAgICAgdW5pb25lZC5h
ZGQocmFuZ2UubV9zdGFydCwgcmFuZ2UubV9lbmQpOworICAgIH0KKworICAgIG1fcmFuZ2VzLnN3
YXAodW5pb25lZC5tX3Jhbmdlcyk7Cit9CisKK2RvdWJsZSBQbGF0Zm9ybVRpbWVSYW5nZXM6OnN0
YXJ0KHVuc2lnbmVkIGluZGV4LCBib29sJiB2YWxpZCkgY29uc3QKK3sgCisgICAgaWYgKGluZGV4
ID49IGxlbmd0aCgpKSB7CisgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKyAgICAKKyAgICB2YWxpZCA9IHRydWU7CisgICAgcmV0dXJuIG1fcmFuZ2VzW2lu
ZGV4XS5tX3N0YXJ0OworfQorCitkb3VibGUgUGxhdGZvcm1UaW1lUmFuZ2VzOjplbmQodW5zaWdu
ZWQgaW5kZXgsIGJvb2wmIHZhbGlkKSBjb25zdAoreyAKKyAgICBpZiAoaW5kZXggPj0gbGVuZ3Ro
KCkpIHsKKyAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
CisgICAgdmFsaWQgPSB0cnVlOworICAgIHJldHVybiBtX3Jhbmdlc1tpbmRleF0ubV9lbmQ7Cit9
CisKK3ZvaWQgUGxhdGZvcm1UaW1lUmFuZ2VzOjphZGQoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5k
KQoreworICAgIEFTU0VSVChzdGFydCA8PSBlbmQpOworICAgIHVuc2lnbmVkIG92ZXJsYXBwaW5n
QXJjSW5kZXg7CisgICAgUmFuZ2UgYWRkZWRSYW5nZShzdGFydCwgZW5kKTsKKworICAgIC8vIEZv
ciBlYWNoIHByZXNlbnQgcmFuZ2UgY2hlY2sgaWYgd2UgbmVlZCB0bzoKKyAgICAvLyAtIG1lcmdl
IHdpdGggdGhlIGFkZGVkIHJhbmdlLCBpbiBjYXNlIHdlIGFyZSBvdmVybGFwcGluZyBvciBjb250
aWd1b3VzCisgICAgLy8gLSBOZWVkIHRvIGluc2VydCBpbiBwbGFjZSwgd2Ugd2UgYXJlIGNvbXBs
ZXRlbHksIG5vdCBvdmVybGFwcGluZyBhbmQgbm90IGNvbnRpZ3VvdXMKKyAgICAvLyBpbiBiZXR3
ZWVuIHR3byByYW5nZXMuCisgICAgLy8KKyAgICAvLyBUT0RPOiBHaXZlbiB0aGF0IHdlIGFzc3Vt
ZSB0aGF0IHJhbmdlcyBhcmUgY29ycmVjdGx5IG9yZGVyZWQsIHRoaXMgY291bGQgYmUgb3B0aW1p
emVkLgorCisgICAgZm9yIChvdmVybGFwcGluZ0FyY0luZGV4ID0gMDsgb3ZlcmxhcHBpbmdBcmNJ
bmRleCA8IG1fcmFuZ2VzLnNpemUoKTsgb3ZlcmxhcHBpbmdBcmNJbmRleCsrKSB7CisgICAgICAg
IGlmIChhZGRlZFJhbmdlLmlzT3ZlcmxhcHBpbmdSYW5nZShtX3Jhbmdlc1tvdmVybGFwcGluZ0Fy
Y0luZGV4XSkgfHwgYWRkZWRSYW5nZS5pc0NvbnRpZ3VvdXNXaXRoUmFuZ2UobV9yYW5nZXNbb3Zl
cmxhcHBpbmdBcmNJbmRleF0pKSB7CisgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIG1lcmdlIHRo
ZSBhZGRlZFJhbmdlIGFuZCB0aGF0IHJhbmdlLgorICAgICAgICAgICAgYWRkZWRSYW5nZSA9IGFk
ZGVkUmFuZ2UudW5pb25XaXRoT3ZlcmxhcHBpbmdPckNvbnRpZ3VvdXNSYW5nZShtX3Jhbmdlc1tv
dmVybGFwcGluZ0FyY0luZGV4XSk7CisgICAgICAgICAgICBtX3Jhbmdlcy5yZW1vdmUob3Zlcmxh
cHBpbmdBcmNJbmRleCk7CisgICAgICAgICAgICBvdmVybGFwcGluZ0FyY0luZGV4LS07CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSBmb3Igd2hpY2ggdGhl
cmUgaXMgbm8gbW9yZSB0byBkbworICAgICAgICAgICAgaWYgKCFvdmVybGFwcGluZ0FyY0luZGV4
KSB7CisgICAgICAgICAgICAgICAgaWYgKGFkZGVkUmFuZ2UuaXNCZWZvcmVSYW5nZShtX3Jhbmdl
c1swXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRmlyc3QgaW5kZXgsIGFuZCB3ZSBhcmUg
Y29tcGxldGVseSBiZWZvcmUgdGhhdCByYW5nZSAoYW5kIG5vdCBjb250aWd1b3VzLCBub3Igb3Zl
cmxhcHBpbmcpLgorICAgICAgICAgICAgICAgICAgICAvLyBXZSBqdXN0IG5lZWQgdG8gYmUgaW5z
ZXJ0ZWQgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAobV9yYW5nZXNbb3Zl
cmxhcHBpbmdBcmNJbmRleCAtIDFdLmlzQmVmb3JlUmFuZ2UoYWRkZWRSYW5nZSkgJiYgYWRkZWRS
YW5nZS5pc0JlZm9yZVJhbmdlKG1fcmFuZ2VzW292ZXJsYXBwaW5nQXJjSW5kZXhdKSkgeworICAg
ICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgZXhhY3RseSBhZnRlciB0aGUgY3VycmVudCBwcmV2
aW91cyByYW5nZSwgYW5kIGJlZm9yZSB0aGUgY3VycmVudCByYW5nZSwgd2hpbGUKKyAgICAgICAg
ICAgICAgICAgICAgLy8gbm90IG92ZXJsYXBwaW5nIHdpdGggbm9uZSBvZiB0aGVtLiBJbnNlcnQg
aGVyZS4KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gTm93IHRoYXQgd2UgYXJlIHN1
cmUgd2UgZG9uJ3Qgb3ZlcmxhcCB3aXRoIGFueSByYW5nZSwganVzdCBhZGQgaXQuCisgICAgbV9y
YW5nZXMuaW5zZXJ0KG92ZXJsYXBwaW5nQXJjSW5kZXgsIGFkZGVkUmFuZ2UpOworfQorCitib29s
IFBsYXRmb3JtVGltZVJhbmdlczo6Y29udGFpbihkb3VibGUgdGltZSkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZmluZCh0aW1lKSAhPSBub3RGb3VuZDsKK30KKworc2l6ZV90IFBsYXRmb3JtVGltZVJh
bmdlczo6ZmluZChkb3VibGUgdGltZSkgY29uc3QKK3sKKyAgICBib29sIGlnbm9yZUludmFsaWQ7
CisgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IGxlbmd0aCgpOyBuKyspIHsKKyAgICAgICAg
aWYgKHRpbWUgPj0gc3RhcnQobiwgaWdub3JlSW52YWxpZCkgJiYgdGltZSA8PSBlbmQobiwgaWdu
b3JlSW52YWxpZCkpCisgICAgICAgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAgcmV0dXJuIG5v
dEZvdW5kOworfQorCitkb3VibGUgUGxhdGZvcm1UaW1lUmFuZ2VzOjpuZWFyZXN0KGRvdWJsZSB0
aW1lKSBjb25zdAoreworICAgIGRvdWJsZSBjbG9zZXN0RGVsdGEgPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OmluZmluaXR5KCk7CisgICAgZG91YmxlIGNsb3Nlc3RUaW1lID0gMDsKKyAg
ICB1bnNpZ25lZCBjb3VudCA9IGxlbmd0aCgpOworICAgIGJvb2wgaWdub3JlSW52YWxpZDsKKwor
ICAgIGZvciAodW5zaWduZWQgbmR4ID0gMDsgbmR4IDwgY291bnQ7IG5keCsrKSB7CisgICAgICAg
IGRvdWJsZSBzdGFydFRpbWUgPSBzdGFydChuZHgsIGlnbm9yZUludmFsaWQpOworICAgICAgICBk
b3VibGUgZW5kVGltZSA9IGVuZChuZHgsIGlnbm9yZUludmFsaWQpOworICAgICAgICBpZiAodGlt
ZSA+PSBzdGFydFRpbWUgJiYgdGltZSA8PSBlbmRUaW1lKQorICAgICAgICAgICAgcmV0dXJuIHRp
bWU7CisgICAgICAgIGlmIChmYWJzKHN0YXJ0VGltZSAtIHRpbWUpIDwgY2xvc2VzdERlbHRhKSB7
CisgICAgICAgICAgICBjbG9zZXN0VGltZSA9IHN0YXJ0VGltZTsKKyAgICAgICAgICAgIGNsb3Nl
c3REZWx0YSA9IGZhYnNmKHN0YXJ0VGltZSAtIHRpbWUpOworICAgICAgICB9CisgICAgICAgIGlm
IChmYWJzKGVuZFRpbWUgLSB0aW1lKSA8IGNsb3Nlc3REZWx0YSkgeworICAgICAgICAgICAgY2xv
c2VzdFRpbWUgPSBlbmRUaW1lOworICAgICAgICAgICAgY2xvc2VzdERlbHRhID0gZmFic2YoZW5k
VGltZSAtIHRpbWUpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBjbG9zZXN0VGltZTsK
K30KKworZG91YmxlIFBsYXRmb3JtVGltZVJhbmdlczo6dG90YWxEdXJhdGlvbigpIGNvbnN0Cit7
CisgICAgZG91YmxlIHRvdGFsID0gMDsKKyAgICBib29sIGlnbm9yZUludmFsaWQ7CisKKyAgICBm
b3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgbGVuZ3RoKCk7IG4rKykKKyAgICAgICAgdG90YWwgKz0g
ZmFicyhlbmQobiwgaWdub3JlSW52YWxpZCkgLSBzdGFydChuLCBpZ25vcmVJbnZhbGlkKSk7Cisg
ICAgcmV0dXJuIHRvdGFsOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQbGF0Zm9y
bVRpbWVSYW5nZXNfaAorI2RlZmluZSBQbGF0Zm9ybVRpbWVSYW5nZXNfaAorCisjaW5jbHVkZSA8
YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgUGxhdGZvcm1UaW1lUmFuZ2VzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gY3JlYXRlKCk7CisgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGNyZWF0ZShkb3VibGUgc3RhcnQsIGRv
dWJsZSBlbmQpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2Vz
PiBjcmVhdGUoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJik7CisKKyAgICBleHBsaWNpdCBQbGF0
Zm9ybVRpbWVSYW5nZXMoKSB7IH0KKyAgICBQbGF0Zm9ybVRpbWVSYW5nZXMoZG91YmxlIHN0YXJ0
LCBkb3VibGUgZW5kKTsKKyAgICBQbGF0Zm9ybVRpbWVSYW5nZXMoY29uc3QgUGxhdGZvcm1UaW1l
UmFuZ2VzJik7CisKKyAgICBQbGF0Zm9ybVRpbWVSYW5nZXMmIG9wZXJhdG9yPShjb25zdCBQbGF0
Zm9ybVRpbWVSYW5nZXMmKTsKKworICAgIGRvdWJsZSBzdGFydCh1bnNpZ25lZCBpbmRleCwgYm9v
bCYgdmFsaWQpIGNvbnN0OworICAgIGRvdWJsZSBlbmQodW5zaWduZWQgaW5kZXgsIGJvb2wmIHZh
bGlkKSBjb25zdDsKKworICAgIHZvaWQgaW52ZXJ0KCk7CisgICAgdm9pZCBpbnRlcnNlY3RXaXRo
KGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYpOworICAgIHZvaWQgdW5pb25XaXRoKGNvbnN0IFBs
YXRmb3JtVGltZVJhbmdlcyYpOworCisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9yYW5nZXMuc2l6ZSgpOyB9CisKKyAgICB2b2lkIGFkZChkb3VibGUgc3RhcnQsIGRvdWJs
ZSBlbmQpOworICAgIAorICAgIGJvb2wgY29udGFpbihkb3VibGUgdGltZSkgY29uc3Q7CisKKyAg
ICBzaXplX3QgZmluZChkb3VibGUgdGltZSkgY29uc3Q7CisgICAgCisgICAgZG91YmxlIG5lYXJl
c3QoZG91YmxlIHRpbWUpIGNvbnN0OworCisgICAgZG91YmxlIHRvdGFsRHVyYXRpb24oKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBQbGF0Zm9ybVRpbWVSYW5nZXMmIGNvcHkoY29uc3QgUGxhdGZv
cm1UaW1lUmFuZ2VzJik7CisKKyAgICAvLyBXZSBjb25zaWRlciBhbGwgdGhlIFJhbmdlcyB0byBi
ZSBzZW1pLWJvdW5kZWQgYXMgZm9sbG93OiBbc3RhcnQsIGVuZFsKKyAgICBzdHJ1Y3QgUmFuZ2Ug
eworICAgICAgICBSYW5nZSgpIHsgfQorICAgICAgICBSYW5nZShkb3VibGUgc3RhcnQsIGRvdWJs
ZSBlbmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fc3RhcnQgPSBzdGFydDsKKyAgICAgICAg
ICAgIG1fZW5kID0gZW5kOworICAgICAgICB9CisgICAgICAgIGRvdWJsZSBtX3N0YXJ0OworICAg
ICAgICBkb3VibGUgbV9lbmQ7CisKKyAgICAgICAgaW5saW5lIGJvb2wgaXNQb2ludEluUmFuZ2Uo
ZG91YmxlIHBvaW50KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9zdGFy
dCA8PSBwb2ludCAmJiBwb2ludCA8IG1fZW5kOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBpbmxpbmUgYm9vbCBpc092ZXJsYXBwaW5nUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlKSBjb25z
dAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaXNQb2ludEluUmFuZ2UocmFuZ2UubV9z
dGFydCkgfHwgaXNQb2ludEluUmFuZ2UocmFuZ2UubV9lbmQpIHx8IHJhbmdlLmlzUG9pbnRJblJh
bmdlKG1fc3RhcnQpOworICAgICAgICB9CisKKyAgICAgICAgaW5saW5lIGJvb2wgaXNDb250aWd1
b3VzV2l0aFJhbmdlKGNvbnN0IFJhbmdlJiByYW5nZSkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIHJhbmdlLm1fc3RhcnQgPT0gbV9lbmQgfHwgcmFuZ2UubV9lbmQgPT0gbV9z
dGFydDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW5saW5lIFJhbmdlIHVuaW9uV2l0
aE92ZXJsYXBwaW5nT3JDb250aWd1b3VzUmFuZ2UoY29uc3QgUmFuZ2UmIHJhbmdlKSBjb25zdAor
ICAgICAgICB7CisgICAgICAgICAgICBSYW5nZSByZXQ7CisKKyAgICAgICAgICAgIHJldC5tX3N0
YXJ0ID0gc3RkOjptaW4obV9zdGFydCwgcmFuZ2UubV9zdGFydCk7CisgICAgICAgICAgICByZXQu
bV9lbmQgPSBzdGQ6Om1heChtX2VuZCwgcmFuZ2UubV9lbmQpOworCisgICAgICAgICAgICByZXR1
cm4gcmV0OworICAgICAgICB9CisKKyAgICAgICAgaW5saW5lIGJvb2wgaXNCZWZvcmVSYW5nZShj
b25zdCBSYW5nZSYgcmFuZ2UpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBy
YW5nZS5tX3N0YXJ0ID49IG1fZW5kOworICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICBWZWN0
b3I8UmFuZ2U+IG1fcmFuZ2VzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uY3BwCShyZXZpc2lvbiAxNjQzODApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTEgKzM4LDEyIEBACiAjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNs
dWRlICJQbGF0Zm9ybVRpbWVSYW5nZXMuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1
ZGUgIlNvZnRMaW5raW5nLmgiCi0jaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgPENv
cmVNZWRpYS9Db3JlTWVkaWEuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zODUs
MTIgKzM4NiwxMiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6c2V0CiAg
ICAgICAgIGNoYXJhY3RlcmlzdGljc0NoYW5nZWQoKTsKIH0KIAotUGFzc1JlZlB0cjxUaW1lUmFu
Z2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmJ1ZmZlcmVkKCkgY29uc3QKK3N0
ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbjo6YnVmZmVyZWQoKSBjb25zdAogewogICAgIGlmICghbV9jYWNoZWRMb2FkZWRUaW1l
UmFuZ2VzKQogICAgICAgICBtX2NhY2hlZExvYWRlZFRpbWVSYW5nZXMgPSBwbGF0Zm9ybUJ1ZmZl
cmVkVGltZVJhbmdlcygpOwogCi0gICAgcmV0dXJuIG1fY2FjaGVkTG9hZGVkVGltZVJhbmdlcy0+
Y29weSgpOworICAgIHJldHVybiBQbGF0Zm9ybVRpbWVSYW5nZXM6OmNyZWF0ZSgqbV9jYWNoZWRM
b2FkZWRUaW1lUmFuZ2VzKTsKIH0KIAogZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbjo6bWF4VGltZVNlZWthYmxlRG91YmxlKCkgY29uc3QKQEAgLTYyMCw3ICs2MjEsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6cmF0CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpsb2FkZWRUaW1lUmFuZ2VzQ2hhbmdlZCgpCiB7Ci0gICAg
bV9jYWNoZWRMb2FkZWRUaW1lUmFuZ2VzID0gMDsKKyAgICBtX2NhY2hlZExvYWRlZFRpbWVSYW5n
ZXMgPSBudWxscHRyOwogICAgIG1fY2FjaGVkTWF4VGltZUxvYWRlZCA9IDA7CiAgICAgaW52YWxp
ZGF0ZUNhY2hlZER1cmF0aW9uKCk7CiB9CkBAIC03NjgsOCArNzY5LDkgQEAgc3RhdGljIGNvbnN0
IGNoYXIqIG5vdGlmaWNhdGlvbk5hbWUoTWVkaQogewogI2RlZmluZSBERUZJTkVfVFlQRV9TVFJJ
TkdfQ0FTRSh0eXBlKSBjYXNlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6Tm90aWZp
Y2F0aW9uOjp0eXBlOiByZXR1cm4gI3R5cGU7CiAgICAgc3dpdGNoIChub3RpZmljYXRpb24udHlw
ZSgpKSB7Ci0gICAgICAgIEZPUl9FQUNIX01FRElBUExBWUVSUFJJVkFURUFWRk9VTkRBVElPTl9O
T1RJRklDQVRJT05fVFlQRShERUZJTkVfVFlQRV9TVFJJTkdfQ0FTRSkKLSAgICAgICAgZGVmYXVs
dDogcmV0dXJuICIiOworICAgIEZPUl9FQUNIX01FRElBUExBWUVSUFJJVkFURUFWRk9VTkRBVElP
Tl9OT1RJRklDQVRJT05fVFlQRShERUZJTkVfVFlQRV9TVFJJTkdfQ0FTRSkKKyAgICBjYXNlIE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6Tm90aWZpY2F0aW9uOjpGdW5jdGlvblR5cGU6
IHJldHVybiAiRnVuY3Rpb25UeXBlIjsKKyAgICBkZWZhdWx0OiBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgcmV0dXJuICIiOwogICAgIH0KICN1bmRlZiBERUZJTkVfVFlQRV9TVFJJTkdfQ0FTRQogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uaAkocmV2aXNpb24gMTY0MzgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzQsNyArMTc0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fcmVhZHlTdGF0ZTsgfQogICAgIHZpcnR1YWwgZG91YmxlIG1heFRpbWVTZWVrYWJsZURvdWJs
ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgZG91YmxlIG1pblRpbWVTZWVrYWJsZSgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZm
ZXJlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJv
b2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNldFNpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JikgPSAwOwpAQCAtMjI5LDcgKzIyOSw3
IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGZsb2F0IHJhdGUoKSBjb25zdCA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNlZWtUb1RpbWUoZG91YmxlIHRpbWUsIGRvdWJsZSBuZWdhdGl2ZVRvbGVy
YW5jZSwgZG91YmxlIHBvc2l0aXZlVG9sZXJhbmNlKSA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25l
ZCBsb25nIGxvbmcgdG90YWxCeXRlcygpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8VGltZVJhbmdlcz4gcGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBwbGF0Zm9ybUJ1
ZmZlcmVkVGltZVJhbmdlcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGRvdWJsZSBwbGF0Zm9y
bU1heFRpbWVTZWVrYWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGRvdWJsZSBwbGF0Zm9y
bU1pblRpbWVTZWVrYWJsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IHBsYXRmb3Jt
TWF4VGltZUxvYWRlZCgpIGNvbnN0ID0gMDsKQEAgLTMwNCw3ICszMDQsNyBAQCBwcml2YXRlOgog
ICAgIFZlY3RvcjxOb3RpZmljYXRpb24+IG1fcXVldWVkTm90aWZpY2F0aW9uczsKICAgICBtdXRh
YmxlIE11dGV4IG1fcXVldWVNdXRleDsKIAotICAgIG11dGFibGUgUmVmUHRyPFRpbWVSYW5nZXM+
IG1fY2FjaGVkTG9hZGVkVGltZVJhbmdlczsKKyAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxQ
bGF0Zm9ybVRpbWVSYW5nZXM+IG1fY2FjaGVkTG9hZGVkVGltZVJhbmdlczsKIAogICAgIE1lZGlh
UGxheWVyOjpOZXR3b3JrU3RhdGUgbV9uZXR3b3JrU3RhdGU7CiAgICAgTWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGUgbV9yZWFkeVN0YXRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCShyZXZpc2lvbiAx
NjQzODApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Y2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MTgsMTYgKzYxOCwxNiBAQCBzdGF0aWMgYm9vbCB0aW1lUmFuZ2VJc1ZhbGlkQW5kTm90RW1w
dHkoCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCkg
Y29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpIGNvbnN0CiB7
Ci0gICAgUmVmUHRyPFRpbWVSYW5nZXM+IHRpbWVSYW5nZXMgPSBUaW1lUmFuZ2VzOjpjcmVhdGUo
KTsKKyAgICBhdXRvIHRpbWVSYW5nZXMgPSBQbGF0Zm9ybVRpbWVSYW5nZXM6OmNyZWF0ZSgpOwog
CiAgICAgaWYgKCFhdlBsYXllckl0ZW0obV9hdmZXcmFwcGVyKSkKLSAgICAgICAgcmV0dXJuIHRp
bWVSYW5nZXMucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKIAogICAgIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBsb2FkZWRSYW5nZXMgPSBhZG9wdENGKEFWQ0ZQbGF5ZXJJdGVt
Q29weUxvYWRlZFRpbWVSYW5nZXMoYXZQbGF5ZXJJdGVtKG1fYXZmV3JhcHBlcikpKTsKICAgICBp
ZiAoIWxvYWRlZFJhbmdlcykKLSAgICAgICAgcmV0dXJuIHRpbWVSYW5nZXMucmVsZWFzZSgpOwor
ICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKIAogICAgIENGSW5kZXggcmFuZ2VDb3VudCA9IENG
QXJyYXlHZXRDb3VudChsb2FkZWRSYW5nZXMuZ2V0KCkpOwogICAgIGZvciAoQ0ZJbmRleCBpID0g
MDsgaSA8IHJhbmdlQ291bnQ7IGkrKykgewpAQCAtNjQyLDcgKzY0Miw3IEBAIFBhc3NSZWZQdHI8
VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXQKICAgICAgICAgfQogICAgIH0KIAotICAgIHJl
dHVybiB0aW1lUmFuZ2VzLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdGltZVJhbmdlczsKIH0KIAog
ZG91YmxlIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGOjpwbGF0Zm9ybU1pblRpbWVT
ZWVrYWJsZSgpIGNvbnN0IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2Nm
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmgJKHJldmlzaW9uIDE2NDM4MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBmbG9hdCByYXRlKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHNlZWtUb1RpbWUoZG91YmxlIHRpbWUsIGRvdWJsZSBuZWdhdGl2ZVRvbGVyYW5jZSwg
ZG91YmxlIHBvc2l0aXZlVG9sZXJhbmNlKTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b3RhbEJ5dGVzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+
IHBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCkgY29uc3Q7CisgICAgdmlydHVhbCBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygp
IGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIHBsYXRmb3JtTWluVGltZVNlZWthYmxlKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBkb3VibGUgcGxhdGZvcm1NYXhUaW1lU2Vla2FibGUoKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGZsb2F0IHBsYXRmb3JtRHVyYXRpb24oKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLmgJKHJldmlzaW9uIDE2NDM4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBmbG9hdCByYXRlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHNlZWtUb1Rp
bWUoZG91YmxlIHRpbWUsIGRvdWJsZSBuZWdhdGl2ZVRvbGVyYW5jZSwgZG91YmxlIHBvc2l0aXZl
VG9sZXJhbmNlKTsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IHBsYXRmb3JtQnVmZmVy
ZWRUaW1lUmFuZ2VzKCkgY29uc3Q7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpIGNvbnN0OwogICAgIHZp
cnR1YWwgZG91YmxlIHBsYXRmb3JtTWluVGltZVNlZWthYmxlKCkgY29uc3Q7CiAgICAgdmlydHVh
bCBkb3VibGUgcGxhdGZvcm1NYXhUaW1lU2Vla2FibGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGZs
b2F0IHBsYXRmb3JtRHVyYXRpb24oKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQkocmV2aXNpb24gMTY0MzgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQko
d29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsOSBAQAogI2ltcG9ydCAiSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUxlZ2FjeUFWRk9iakMuaCIKICNpbXBvcnQgIlVSTC5oIgogI2ltcG9ydCAiTG9nZ2lu
Zy5oIgorI2ltcG9ydCAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCiAjaW1wb3J0ICJTZWN1cml0eU9y
aWdpbi5oIgogI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKLSNpbXBvcnQgIlRpbWVSYW5nZXMuaCIK
ICNpbXBvcnQgIlVVSUQuaCIKICNpbXBvcnQgIlZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oIgog
I2ltcG9ydCAiV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLmgiCkBAIC03NTIsMTIgKzc1MiwxMiBA
QCBmbG9hdCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDCiAgICAgcmV0dXJuIG1f
Y2FjaGVkUmF0ZTsKIH0KIAotUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpIGNvbnN0Citz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygpIGNvbnN0CiB7Ci0gICAg
UmVmUHRyPFRpbWVSYW5nZXM+IHRpbWVSYW5nZXMgPSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKyAg
ICBhdXRvIHRpbWVSYW5nZXMgPSBQbGF0Zm9ybVRpbWVSYW5nZXM6OmNyZWF0ZSgpOwogCiAgICAg
aWYgKCFtX2F2UGxheWVySXRlbSkKLSAgICAgICAgcmV0dXJuIHRpbWVSYW5nZXMucmVsZWFzZSgp
OworICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKIAogICAgIGZvciAoTlNWYWx1ZSAqdGhpc1Jh
bmdlVmFsdWUgaW4gbV9jYWNoZWRMb2FkZWRSYW5nZXMuZ2V0KCkpIHsKICAgICAgICAgQ01UaW1l
UmFuZ2UgdGltZVJhbmdlID0gW3RoaXNSYW5nZVZhbHVlIENNVGltZVJhbmdlVmFsdWVdOwpAQCAt
NzY3LDcgKzc2Nyw3IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXQK
ICAgICAgICAgICAgIHRpbWVSYW5nZXMtPmFkZChyYW5nZVN0YXJ0LCByYW5nZUVuZCk7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHRpbWVSYW5nZXMucmVsZWFzZSgpOworICAgIHJldHVy
biB0aW1lUmFuZ2VzOwogfQogCiBkb3VibGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6cGxhdGZvcm1NaW5UaW1lU2Vla2FibGUoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmgJKHJldmlzaW9uIDE2NDM4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsMTAgKzExNiwxMCBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCBzZWVraW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHNldFJhdGVEb3VibGUoZG91YmxlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwg
c3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIGRvdWJsZSBtYXhUaW1lU2Vla2FibGVEb3VibGUoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5UaW1lU2Vla2FibGUoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5n
ZXM+IGJ1ZmZlcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgZGlkTG9h
ZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMubW0JKHJldmlzaW9uIDE2NDM4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzg4LDkgKzM4OCw5IEBAIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIE1lZGlhUGxheWVyUHJpdmEKICAgICByZXR1cm4gbV9yZWFkeVN0YXRlOwogfQog
Ci1QYXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6c2Vla2FibGUoKSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdl
cz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzZWVrYWJsZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFRpbWVSYW5nZXM6OmNyZWF0ZShtaW5UaW1lU2Vla2FibGUoKSwgbWF4
VGltZVNlZWthYmxlRG91YmxlKCkpOworICAgIHJldHVybiBQbGF0Zm9ybVRpbWVSYW5nZXM6OmNy
ZWF0ZShtaW5UaW1lU2Vla2FibGUoKSwgbWF4VGltZVNlZWthYmxlRG91YmxlKCkpOwogfQogCiBk
b3VibGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjptYXhUaW1lU2Vla2Fi
bGVEb3VibGUoKSBjb25zdApAQCAtNDAzLDcgKzQwMyw3IEBAIGRvdWJsZSBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk8KICAgICByZXR1cm4gc3RhcnRUaW1lRG91YmxlKCk7CiB9CiAK
LVBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOjpidWZmZXJlZCgpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2Vz
PiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmJ1ZmZlcmVkKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9tZWRpYVNvdXJjZS0+YnVmZmVyZWQoKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCShyZXZpc2lvbiAx
NjQzODApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODkwLDIyICs4
OTAsMjIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFByZQogICAgIG1f
cHJlc2VydmVzUGl0Y2ggPSBwcmVzZXJ2ZXNQaXRjaDsKIH0KIAotUGFzc1JlZlB0cjxUaW1lUmFu
Z2VzPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmJ1ZmZlcmVkKCkgY29uc3QKK3N0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6YnVmZmVyZWQoKSBjb25zdAogewotICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiB0aW1lUmFuZ2Vz
ID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisgICAgYXV0byB0aW1lUmFuZ2VzID0gUGxhdGZvcm1U
aW1lUmFuZ2VzOjpjcmVhdGUoKTsKICAgICBpZiAobV9lcnJvck9jY3VyZWQgfHwgaXNMaXZlU3Ry
ZWFtKCkpCi0gICAgICAgIHJldHVybiB0aW1lUmFuZ2VzLnJlbGVhc2UoKTsKKyAgICAgICAgcmV0
dXJuIHRpbWVSYW5nZXM7CiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigwLCAxMCwgMzEpCiAgICAg
ZmxvYXQgbWVkaWFEdXJhdGlvbihkdXJhdGlvbigpKTsKICAgICBpZiAoIW1lZGlhRHVyYXRpb24g
fHwgc3RkOjppc2luZihtZWRpYUR1cmF0aW9uKSkKLSAgICAgICAgcmV0dXJuIHRpbWVSYW5nZXMu
cmVsZWFzZSgpOworICAgICAgICByZXR1cm4gdGltZVJhbmdlczsKIAogICAgIEdzdFF1ZXJ5KiBx
dWVyeSA9IGdzdF9xdWVyeV9uZXdfYnVmZmVyaW5nKEdTVF9GT1JNQVRfUEVSQ0VOVCk7CiAKICAg
ICBpZiAoIWdzdF9lbGVtZW50X3F1ZXJ5KG1fcGxheUJpbi5nZXQoKSwgcXVlcnkpKSB7CiAgICAg
ICAgIGdzdF9xdWVyeV91bnJlZihxdWVyeSk7Ci0gICAgICAgIHJldHVybiB0aW1lUmFuZ2VzLnJl
bGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIHRpbWVSYW5nZXM7CiAgICAgfQogCiAgICAgZm9yIChn
dWludCBpbmRleCA9IDA7IGluZGV4IDwgZ3N0X3F1ZXJ5X2dldF9uX2J1ZmZlcmluZ19yYW5nZXMo
cXVlcnkpOyBpbmRleCsrKSB7CkBAIC05MjcsNyArOTI3LDcgQEAgUGFzc1JlZlB0cjxUaW1lUmFu
Z2VzPiBNZWRpYVBsYXllclByaXZhdAogICAgIGlmICghbV9lcnJvck9jY3VyZWQgJiYgIWlzTGl2
ZVN0cmVhbSgpICYmIGxvYWRlZCA+IDApCiAgICAgICAgIHRpbWVSYW5nZXMtPmFkZCgwLCBsb2Fk
ZWQpOwogI2VuZGlmCi0gICAgcmV0dXJuIHRpbWVSYW5nZXMucmVsZWFzZSgpOworICAgIHJldHVy
biB0aW1lUmFuZ2VzOwogfQogCiBnYm9vbGVhbiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgJKHJldmlzaW9uIDE2NDM4MCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRQcmVsb2FkKE1lZGlhUGxheWVyOjpQcmVsb2FkKTsKICAgICB2b2lkIGZpbGxU
aW1lckZpcmVkKFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4qKTsKIAotICAgIFBh
c3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0OwogICAgIGZsb2F0IG1heFRp
bWVTZWVrYWJsZSgpIGNvbnN0OwogICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Q7
CiAgICAgdW5zaWduZWQgdG90YWxCeXRlcygpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaW9zL01lZGlhUGxheWVyUHJpdmF0ZUlPUy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9NZWRpYVBsYXllclByaXZh
dGVJT1MuaAkocmV2aXNpb24gMTY0MzgwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaW9zL01lZGlhUGxheWVyUHJpdmF0ZUlPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTks
NyArMTE5LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBmbG9hdCBtYXhUaW1lQnVmZmVyZWQoKSBj
b25zdDsKICAgICB2aXJ0dWFsIGZsb2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4g
YnVmZmVyZWQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBkaWRMb2FkaW5n
UHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHRvdGFsQnl0ZXNLbm93bigpIGNv
bnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL01lZGlhUGxh
eWVyUHJpdmF0ZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9pb3MvTWVkaWFQbGF5ZXJQcml2YXRlSU9TLm1tCShyZXZpc2lvbiAxNjQzODApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvTWVkaWFQbGF5ZXJQcml2YXRl
SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OTcsMTYgKzQ5NywxNiBAQCBmbG9hdCBNZWRpYVBs
YXllclByaXZhdGVJT1M6Om1heFRpbWVTZWVrCiAgICAgcmV0dXJuIFttX21lZGlhUGxheWVySGVs
cGVyLmdldCgpIF9tYXhUaW1lU2Vla2FibGVdOwogfQogCi1QYXNzUmVmUHRyPFRpbWVSYW5nZXM+
IE1lZGlhUGxheWVyUHJpdmF0ZUlPUzo6YnVmZmVyZWQoKSBjb25zdAorc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlSU9TOjpidWZmZXJlZCgpCiB7
Ci0gICAgUmVmUHRyPFRpbWVSYW5nZXM+IHRpbWVSYW5nZXMgPSBUaW1lUmFuZ2VzOjpjcmVhdGUo
KTsKKyAgICBhdXRvIHRpbWVSYW5nZXMgPSBQbGF0Zm9ybVRpbWVSYW5nZXM6OmNyZWF0ZSgpOwog
CiAgICAgaWYgKCFtX21lZGlhUGxheWVySGVscGVyKQotICAgICAgICByZXR1cm4gdGltZVJhbmdl
cy5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiB0aW1lUmFuZ2VzOwogCiAgICAgTlNBcnJheSAq
cmFuZ2VzID0gW21fbWVkaWFQbGF5ZXJIZWxwZXIuZ2V0KCkgX2J1ZmZlcmVkVGltZVJhbmdlc107
CiAgICAgaWYgKCFyYW5nZXMpCi0gICAgICAgIHJldHVybiB0aW1lUmFuZ2VzLnJlbGVhc2UoKTsK
KyAgICAgICAgcmV0dXJuIHRpbWVSYW5nZXM7CiAKICAgICBmbG9hdCB0aW1lUmFuZ2VbMl07CiAg
ICAgaW50IGNvdW50ID0gW3JhbmdlcyBjb3VudF07CkBAIC01MTcsNyArNTE3LDcgQEAgUGFzc1Jl
ZlB0cjxUaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdAogICAgICAgICB0aW1lUmFuZ2VzLT5h
ZGQodGltZVJhbmdlWzBdLCB0aW1lUmFuZ2VbMV0pOwogICAgIH0KIAotICAgIHJldHVybiB0aW1l
UmFuZ2VzLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdGltZVJhbmdlczsKIH0KIAogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVJT1M6OnNldFNpemUoY29uc3QgSW50U2l6ZSYpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQuaAkocmV2aXNpb24gMTY0MzgwKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrU3RhdGU7IH0K
ICAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9yZWFkeVN0YXRlOyB9CiAgICAgCi0gICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJl
ZCgpIGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZl
cmVkKCkgY29uc3Q7CiAgICAgZmxvYXQgbWF4VGltZVNlZWthYmxlKCkgY29uc3Q7CiAgICAgYm9v
bCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdDsKICAgICB1bnNpZ25lZCB0b3RhbEJ5dGVzKCkg
Y29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCShyZXZpc2lvbiAxNjQz
ODApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5LDkgKzM5LDkgQEAKICNpbXBvcnQg
IkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbXBvcnQgIlBsYXRm
b3JtTGF5ZXIuaCIKKyNpbXBvcnQgIlBsYXRmb3JtVGltZVJhbmdlcy5oIgogI2ltcG9ydCAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCi0jaW1wb3J0ICJUaW1lUmFu
Z2VzLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxRVEtp
dC9RVEtpdC5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CkBAIC05MTcsMTMgKzkxNywxMyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpzZXRQcmVzZXJ2CiAgICAgY3JlYXRlUVRN
b3ZpZShbbW92aWVBdHRyaWJ1dGVzLmdldCgpIHZhbHVlRm9yS2V5OlFUTW92aWVVUkxBdHRyaWJ1
dGVdLCBtb3ZpZUF0dHJpYnV0ZXMuZ2V0KCkpOwogfQogCi1QYXNzUmVmUHRyPFRpbWVSYW5nZXM+
IE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpidWZmZXJlZCgpIGNvbnN0CitzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6YnVmZmVyZWQo
KSBjb25zdAogewotICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiB0aW1lUmFuZ2VzID0gVGltZVJhbmdl
czo6Y3JlYXRlKCk7CisgICAgYXV0byB0aW1lUmFuZ2VzID0gUGxhdGZvcm1UaW1lUmFuZ2VzOjpj
cmVhdGUoKTsKICAgICBmbG9hdCBsb2FkZWQgPSBtYXhUaW1lTG9hZGVkKCk7CiAgICAgaWYgKGxv
YWRlZCA+IDApCiAgICAgICAgIHRpbWVSYW5nZXMtPmFkZCgwLCBsb2FkZWQpOwotICAgIHJldHVy
biB0aW1lUmFuZ2VzLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdGltZVJhbmdlczsKIH0KIAogZmxv
YXQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om1heFRpbWVTZWVrYWJsZSgpIGNvbnN0CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRl
UXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENv
bnRleHQuY3BwCShyZXZpc2lvbiAxNjQzODApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU0NywxNCArNTQ3LDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUXVpY2tUaW1lVmlzdWFsQ28KICAgICBtX21vdmllLT5zZXRDbG9zZWRDYXB0aW9uc1Zpc2li
bGUodmlzaWJsZSk7CiB9CiAKLVBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2
YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4dDo6YnVmZmVyZWQoKSBjb25zdAorc3RkOjp1bmlxdWVf
cHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFs
Q29udGV4dDo6YnVmZmVyZWQoKSBjb25zdAogewotICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiB0aW1l
UmFuZ2VzID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7CisgICAgYXV0byB0aW1lUmFuZ2VzID0gUGxh
dGZvcm1UaW1lUmFuZ2VzOjpjcmVhdGUoKTsKKwogICAgIGZsb2F0IGxvYWRlZCA9IG1heFRpbWVM
b2FkZWQoKTsKICAgICAvLyBydHNwIHN0cmVhbXMgYXJlIG5vdCBidWZmZXJlZAogICAgIGlmICgh
bV9pc1N0cmVhbWluZyAmJiBsb2FkZWQgPiAwKQogICAgICAgICB0aW1lUmFuZ2VzLT5hZGQoMCwg
bG9hZGVkKTsKLSAgICByZXR1cm4gdGltZVJhbmdlcy5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHRp
bWVSYW5nZXM7CiB9CiAKIGZsb2F0IE1lZGlhUGxheWVyUHJpdmF0ZVF1aWNrVGltZVZpc3VhbENv
bnRleHQ6Om1heFRpbWVTZWVrYWJsZSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlUXVpY2tUaW1lVmlzdWFsQ29udGV4
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9N
ZWRpYVBsYXllclByaXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmgJKHJldmlzaW9uIDE2NDM4
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclBy
aXZhdGVRdWlja1RpbWVWaXN1YWxDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzky
LDcgQEAgcHJpdmF0ZToKICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya1N0YXRlOyB9CiAgICAgTWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQogICAg
IAotICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0OwogICAgIGZs
b2F0IG1heFRpbWVTZWVrYWJsZSgpIGNvbnN0OwogICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNz
KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgdG90YWxCeXRlcygpIGNvbnN0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvTWVkaWFQbGF5ZXJQcml2YXRlV2luQ0Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9N
ZWRpYVBsYXllclByaXZhdGVXaW5DRS5oCShyZXZpc2lvbiAxNjQzODApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9NZWRpYVBsYXllclByaXZhdGVXaW5DRS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCB7IHJldHVy
biBtX25ldHdvcmtTdGF0ZTsgfQogICAgICAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFk
eVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9CiAKLSAgICAgICAgUGFzc1Jl
ZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0OworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0OwogICAgICAgICBmbG9hdCBt
YXhUaW1lU2Vla2FibGUoKSBjb25zdDsKICAgICAgICAgLy8gRklYTUU6IGJ5dGVzTG9hZGVkKCkg
c2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggZGlkTG9hZGluZ1Byb2dyZXNzKCkgKGJ5IHNvbWVib2R5
IHdobyBjYW4gZmluZCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBjbGFzcykuCiAgICAgICAg
IHVuc2lnbmVkIGJ5dGVzTG9hZGVkKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tN
ZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAkocmV2aXNpb24gMTY0MzgwKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw5ICsxNjYsMTIgQEAgZG91YmxlIE1vY2tNZWRp
YVBsYXllck1lZGlhU291cmNlOjptYXhUaQogICAgIHJldHVybiBtX2R1cmF0aW9uOwogfQogCi1Q
YXNzUmVmUHRyPFRpbWVSYW5nZXM+IE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpidWZmZXJl
ZCgpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6YnVmZmVyZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX21lZGlh
U291cmNlID8gbV9tZWRpYVNvdXJjZS0+YnVmZmVyZWQoKSA6IFRpbWVSYW5nZXM6OmNyZWF0ZSgp
OworICAgIGlmIChtX21lZGlhU291cmNlKQorICAgICAgICByZXR1cm4gbV9tZWRpYVNvdXJjZS0+
YnVmZmVyZWQoKTsKKworICAgIHJldHVybiBQbGF0Zm9ybVRpbWVSYW5nZXM6OmNyZWF0ZSgpOwog
fQogCiBib29sIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpkaWRMb2FkaW5nUHJvZ3Jlc3Mo
KSBjb25zdApAQCAtMjA5LDEyICsyMTIsMTYgQEAgdm9pZCBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNv
dXJjZTo6c2Vla1dpdAogCiB2b2lkIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjphZHZhbmNl
Q3VycmVudFRpbWUoKQogewotICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCA9IHRoaXMt
PmJ1ZmZlcmVkKCk7CisgICAgaWYgKCFtX21lZGlhU291cmNlKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvIGJ1ZmZlcmVkID0gbV9tZWRpYVNvdXJjZS0+YnVmZmVyZWQoKTsKICAgICBzaXpl
X3QgcG9zID0gYnVmZmVyZWQtPmZpbmQobV9jdXJyZW50VGltZS50b0RvdWJsZSgpKTsKICAgICBp
ZiAocG9zID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2N1cnJlbnRUaW1l
ID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0ZDo6bWluKG1fZHVyYXRpb24sIGJ1ZmZl
cmVkLT5lbmQocG9zLCBJR05PUkVfRVhDRVBUSU9OKSkpOworICAgIGJvb2wgaWdub3JlRXJyb3I7
CisgICAgbV9jdXJyZW50VGltZSA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGQ6Om1p
bihtX2R1cmF0aW9uLCBidWZmZXJlZC0+ZW5kKHBvcywgaWdub3JlRXJyb3IpKSk7CiAgICAgbV9w
bGF5ZXItPnRpbWVDaGFuZ2VkKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlLmgJKHJldmlzaW9uIDE2NDM4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBw
YXVzZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpOZXR3b3Jr
U3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBkb3VibGUg
bWF4VGltZVNlZWthYmxlRG91YmxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBkaWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3Qm
KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjQzODApCisrKyBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE0LTAyLTE5
ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBU
aW1lUmFuZ2VzIGxheWVyaW5nIHZpb2xhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODcxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJh
dG9yL1dlYktpdEV4cG9ydHMuZGVmLmluOiBUaW1lUmFuZ2VzOjpjcmVhdGUodm9pZCkgZm9yIElu
dGVybmFscy4KKwogMjAxNC0wMi0xNyAgU2VyZ2lvIENvcnJlaWEgIDxzZXJnaW8uY29ycmVpYUBv
cGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBQYXNzT3duUHRyL093blB0
ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBXZWJDb3JlL2luc3BlY3RvcgpJbmRleDogU291cmNl
L1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0
cy5kZWYuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJL
aXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHJldmlzaW9uIDE2NDM4MCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dl
YktpdEV4cG9ydHMuZGVmLmluCSh3b3JraW5nIGNvcHkpCkBAIC00NTAsNiArNDUwLDcgQEAgRVhQ
T1JUUwogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/dG9KU0BXZWJDb3JlQEBZQT9BVkpTVmFs
dWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVlRpbWVSYW5n
ZXNAMUBAWiwgP3RvSlNAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEVBVkV4ZWNTdGF0ZUAz
QFBFQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBFQVZUaW1lUmFuZ2VzQDFAQFopCiAgICAgICAgIHN5
bWJvbFdpdGhQb2ludGVyKD9uZWFyZXN0QFRpbWVSYW5nZXNAV2ViQ29yZUBAUUJFTk5AWiwgP25l
YXJlc3RAVGltZVJhbmdlc0BXZWJDb3JlQEBRRUJBTk5AWikKICAgICAgICAgc3ltYm9sV2l0aFBv
aW50ZXIoP2FkZEBUaW1lUmFuZ2VzQFdlYkNvcmVAQFFBRVhOTkBaLCA/YWRkQFRpbWVSYW5nZXNA
V2ViQ29yZUBAUUVBQVhOTkBaKQorICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Y3JlYXRlQFRp
bWVSYW5nZXNAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlRpbWVSYW5nZXNAV2ViQ29yZUBA
QFdURkBAWFosID9jcmVhdGVAVGltZVJhbmdlc0BXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBW
VGltZVJhbmdlc0BXZWJDb3JlQEBAV1RGQEBYWikKICNpZiBVU0UoR1NUUkVBTUVSKQogICAgICAg
ICBzeW1ib2xXaXRoUG9pbnRlcig/c2ltdWxhdGVBdWRpb0ludGVycnVwdGlvbkBNZWRpYVBsYXll
ckBXZWJDb3JlQEBRQUVYWFosID9zaW11bGF0ZUF1ZGlvSW50ZXJydXB0aW9uQE1lZGlhUGxheWVy
QFdlYkNvcmVAQFFFQUFYWFopCiAjZW5kaWYKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDM4NSkKKysrIFRvb2xzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE0LTAyLTE5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBUaW1lUmFuZ2Vz
IGxheWVyaW5nIHZpb2xhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyODcxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1RpbWVSYW5nZXMuY3Bw
OiBUaW1lUmFuZ2VzKiAtPiBUaW1lUmFuZ2VzJi4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorCiAyMDE0LTAyLTE5ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9u
aGFAY29sbGFib3JhLmNvbT4KIAogICAgICAgICBbR1RLXSBBZGQgbmV3IEFSTSBidWlsZCBzbGF2
ZSBmb3IgR1RLKwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1RpbWVS
YW5nZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9UaW1lUmFuZ2VzLmNwcAkocmV2aXNpb24gMTY0MzgwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1RpbWVSYW5nZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsNyAr
MTE1LDcgQEAgVEVTVChUaW1lUmFuZ2VzLCBJbnRlcnNlY3RXaXRoX1NlbGYpCiAKICAgICBBU1NF
UlRfUkFOR0UoInsgWzAsMikgfSIsIHJhbmdlcyk7CiAKLSAgICByYW5nZXMtPmludGVyc2VjdFdp
dGgocmFuZ2VzLmdldCgpKTsKKyAgICByYW5nZXMtPmludGVyc2VjdFdpdGgoKnJhbmdlcy5nZXQo
KSk7CiAKICAgICBBU1NFUlRfUkFOR0UoInsgWzAsMikgfSIsIHJhbmdlcyk7CiB9CkBAIC0xMjgs
NyArMTI4LDcgQEAgVEVTVChUaW1lUmFuZ2VzLCBJbnRlcnNlY3RXaXRoX0lkZW50aWNhbAogICAg
IEFTU0VSVF9SQU5HRSgieyBbMCwyKSB9IiwgcmFuZ2VzQSk7CiAgICAgQVNTRVJUX1JBTkdFKCJ7
IFswLDIpIH0iLCByYW5nZXNCKTsKIAotICAgIHJhbmdlc0EtPmludGVyc2VjdFdpdGgocmFuZ2Vz
Qi5nZXQoKSk7CisgICAgcmFuZ2VzQS0+aW50ZXJzZWN0V2l0aCgqcmFuZ2VzQi5nZXQoKSk7CiAK
ICAgICBBU1NFUlRfUkFOR0UoInsgWzAsMikgfSIsIHJhbmdlc0EpOwogICAgIEFTU0VSVF9SQU5H
RSgieyBbMCwyKSB9IiwgcmFuZ2VzQik7CkBAIC0xNDIsNyArMTQyLDcgQEAgVEVTVChUaW1lUmFu
Z2VzLCBJbnRlcnNlY3RXaXRoX0VtcHR5KQogICAgIEFTU0VSVF9SQU5HRSgieyBbMCwyKSB9Iiwg
cmFuZ2VzQSk7CiAgICAgQVNTRVJUX1JBTkdFKCJ7IH0iLCByYW5nZXNCKTsKIAotICAgIHJhbmdl
c0EtPmludGVyc2VjdFdpdGgocmFuZ2VzQi5nZXQoKSk7CisgICAgcmFuZ2VzQS0+aW50ZXJzZWN0
V2l0aCgqcmFuZ2VzQi5nZXQoKSk7CiAKICAgICBBU1NFUlRfUkFOR0UoInsgfSIsIHJhbmdlc0Ep
OwogICAgIEFTU0VSVF9SQU5HRSgieyB9IiwgcmFuZ2VzQik7CkBAIC0xNTAsNiArMTUwLDcgQEAg
VEVTVChUaW1lUmFuZ2VzLCBJbnRlcnNlY3RXaXRoX0VtcHR5KQogCiBURVNUKFRpbWVSYW5nZXMs
IEludGVyc2VjdFdpdGhfRGlzam9pbnRSYW5nZXMxKQogeworICAgIAogICAgIFJlZlB0cjxUaW1l
UmFuZ2VzPiByYW5nZXNBID0gVGltZVJhbmdlczo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPFRpbWVS
YW5nZXM+IHJhbmdlc0IgPSBUaW1lUmFuZ2VzOjpjcmVhdGUoKTsKIApAQCAtMTYyLDcgKzE2Myw3
IEBAIFRFU1QoVGltZVJhbmdlcywgSW50ZXJzZWN0V2l0aF9EaXNqb2ludFIKICAgICBBU1NFUlRf
UkFOR0UoInsgWzAsMSkgWzQsNSkgfSIsIHJhbmdlc0EpOwogICAgIEFTU0VSVF9SQU5HRSgieyBb
MiwzKSBbNiw3KSB9IiwgcmFuZ2VzQik7CiAKLSAgICByYW5nZXNBLT5pbnRlcnNlY3RXaXRoKHJh
bmdlc0IuZ2V0KCkpOworICAgIHJhbmdlc0EtPmludGVyc2VjdFdpdGgoKnJhbmdlc0IuZ2V0KCkp
OwogCiAgICAgQVNTRVJUX1JBTkdFKCJ7IH0iLCByYW5nZXNBKTsKICAgICBBU1NFUlRfUkFOR0Uo
InsgWzIsMykgWzYsNykgfSIsIHJhbmdlc0IpOwpAQCAtMTgyLDcgKzE4Myw3IEBAIFRFU1QoVGlt
ZVJhbmdlcywgSW50ZXJzZWN0V2l0aF9EaXNqb2ludFIKICAgICBBU1NFUlRfUkFOR0UoInsgWzAs
MSkgWzQsNSkgfSIsIHJhbmdlc0EpOwogICAgIEFTU0VSVF9SQU5HRSgieyBbMSw0KSBbNSw3KSB9
IiwgcmFuZ2VzQik7CiAKLSAgICByYW5nZXNBLT5pbnRlcnNlY3RXaXRoKHJhbmdlc0IuZ2V0KCkp
OworICAgIHJhbmdlc0EtPmludGVyc2VjdFdpdGgoKnJhbmdlc0IuZ2V0KCkpOwogCiAgICAgQVNT
RVJUX1JBTkdFKCJ7IH0iLCByYW5nZXNBKTsKICAgICBBU1NFUlRfUkFOR0UoInsgWzEsNCkgWzUs
NykgfSIsIHJhbmdlc0IpOwpAQCAtMjAyLDcgKzIwMyw3IEBAIFRFU1QoVGltZVJhbmdlcywgSW50
ZXJzZWN0V2l0aF9Db21wbGV0ZU8KICAgICBBU1NFUlRfUkFOR0UoInsgWzEsMykgWzQsNSkgWzYs
OSkgfSIsIHJhbmdlc0EpOwogICAgIEFTU0VSVF9SQU5HRSgieyBbMCwxMCkgfSIsIHJhbmdlc0Ip
OwogCi0gICAgcmFuZ2VzQS0+aW50ZXJzZWN0V2l0aChyYW5nZXNCLmdldCgpKTsKKyAgICByYW5n
ZXNBLT5pbnRlcnNlY3RXaXRoKCpyYW5nZXNCLmdldCgpKTsKIAogICAgIEFTU0VSVF9SQU5HRSgi
eyBbMSwzKSBbNCw1KSBbNiw5KSB9IiwgcmFuZ2VzQSk7CiAgICAgQVNTRVJUX1JBTkdFKCJ7IFsw
LDEwKSB9IiwgcmFuZ2VzQik7CkBAIC0yMjIsNyArMjIzLDcgQEAgVEVTVChUaW1lUmFuZ2VzLCBJ
bnRlcnNlY3RXaXRoX0NvbXBsZXRlTwogICAgIEFTU0VSVF9SQU5HRSgieyBbMSwzKSBbNCw1KSBb
Niw5KSB9IiwgcmFuZ2VzQSk7CiAgICAgQVNTRVJUX1JBTkdFKCJ7IFsxLDkpIH0iLCByYW5nZXNC
KTsKIAotICAgIHJhbmdlc0EtPmludGVyc2VjdFdpdGgocmFuZ2VzQi5nZXQoKSk7CisgICAgcmFu
Z2VzQS0+aW50ZXJzZWN0V2l0aCgqcmFuZ2VzQi5nZXQoKSk7CiAKICAgICBBU1NFUlRfUkFOR0Uo
InsgWzEsMykgWzQsNSkgWzYsOSkgfSIsIHJhbmdlc0EpOwogICAgIEFTU0VSVF9SQU5HRSgieyBb
MSw5KSB9IiwgcmFuZ2VzQik7CkBAIC0yNDEsNyArMjQyLDcgQEAgVEVTVChUaW1lUmFuZ2VzLCBJ
bnRlcnNlY3RXaXRoX0dhcHMxKQogICAgIEFTU0VSVF9SQU5HRSgieyBbMCwyKSBbNCw2KSB9Iiwg
cmFuZ2VzQSk7CiAgICAgQVNTRVJUX1JBTkdFKCJ7IFsxLDUpIH0iLCByYW5nZXNCKTsKIAotICAg
IHJhbmdlc0EtPmludGVyc2VjdFdpdGgocmFuZ2VzQi5nZXQoKSk7CisgICAgcmFuZ2VzQS0+aW50
ZXJzZWN0V2l0aCgqcmFuZ2VzQi5nZXQoKSk7CiAKICAgICBBU1NFUlRfUkFOR0UoInsgWzEsMikg
WzQsNSkgfSIsIHJhbmdlc0EpOwogICAgIEFTU0VSVF9SQU5HRSgieyBbMSw1KSB9IiwgcmFuZ2Vz
Qik7CkBAIC0yNjEsNyArMjYyLDcgQEAgVEVTVChUaW1lUmFuZ2VzLCBJbnRlcnNlY3RXaXRoX0dh
cHMyKQogICAgIEFTU0VSVF9SQU5HRSgieyBbMCwyKSBbNCw2KSBbOCwxMCkgfSIsIHJhbmdlc0Ep
OwogICAgIEFTU0VSVF9SQU5HRSgieyBbMSw5KSB9IiwgcmFuZ2VzQik7CiAKLSAgICByYW5nZXNB
LT5pbnRlcnNlY3RXaXRoKHJhbmdlc0IuZ2V0KCkpOworICAgIHJhbmdlc0EtPmludGVyc2VjdFdp
dGgoKnJhbmdlc0IuZ2V0KCkpOwogCiAgICAgQVNTRVJUX1JBTkdFKCJ7IFsxLDIpIFs0LDYpIFs4
LDkpIH0iLCByYW5nZXNBKTsKICAgICBBU1NFUlRfUkFOR0UoInsgWzEsOSkgfSIsIHJhbmdlc0Ip
OwpAQCAtMjgyLDcgKzI4Myw3IEBAIFRFU1QoVGltZVJhbmdlcywgSW50ZXJzZWN0V2l0aF9HYXBz
MykKICAgICBBU1NFUlRfUkFOR0UoInsgWzAsMikgWzQsNykgWzgsMTApIH0iLCByYW5nZXNBKTsK
ICAgICBBU1NFUlRfUkFOR0UoInsgWzEsNSkgWzYsOSkgfSIsIHJhbmdlc0IpOwogCi0gICAgcmFu
Z2VzQS0+aW50ZXJzZWN0V2l0aChyYW5nZXNCLmdldCgpKTsKKyAgICByYW5nZXNBLT5pbnRlcnNl
Y3RXaXRoKCpyYW5nZXNCLmdldCgpKTsKIAogICAgIEFTU0VSVF9SQU5HRSgieyBbMSwyKSBbNCw1
KSBbNiw3KSBbOCw5KSB9IiwgcmFuZ2VzQSk7CiAgICAgQVNTRVJUX1JBTkdFKCJ7IFsxLDUpIFs2
LDkpIH0iLCByYW5nZXNCKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>