<?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>143316</bug_id>
          
          <creation_ts>2015-04-01 13:41:14 -0700</creation_ts>
          <short_desc>Use std::chrono types to represent time in response and cache classes</short_desc>
          <delta_ts>2015-04-03 10:34:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1082092</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-04-01 13:41:14 -0700</bug_when>
    <thetext>Modernize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082108</commentid>
    <comment_count>1</comment_count>
      <attachid>249943</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-04-01 14:53:37 -0700</bug_when>
    <thetext>Created attachment 249943
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082109</commentid>
    <comment_count>2</comment_count>
      <attachid>249943</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-01 14:59:19 -0700</bug_when>
    <thetext>Comment on attachment 249943
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082208</commentid>
    <comment_count>3</comment_count>
      <attachid>249970</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-04-02 05:13:39 -0700</bug_when>
    <thetext>Created attachment 249970
non-llvm build fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082211</commentid>
    <comment_count>4</comment_count>
      <attachid>249972</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-04-02 05:32:22 -0700</bug_when>
    <thetext>Created attachment 249972
another</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082215</commentid>
    <comment_count>5</comment_count>
      <attachid>249975</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-04-02 06:20:18 -0700</bug_when>
    <thetext>Created attachment 249975
another</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082220</commentid>
    <comment_count>6</comment_count>
      <attachid>249977</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-04-02 07:25:10 -0700</bug_when>
    <thetext>Created attachment 249977
another</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082223</commentid>
    <comment_count>7</comment_count>
      <attachid>249979</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-04-02 08:07:59 -0700</bug_when>
    <thetext>Created attachment 249979
another</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082225</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-04-02 08:47:43 -0700</bug_when>
    <thetext>https://trac.webkit.org/r182271</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082257</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-02 10:07:14 -0700</bug_when>
    <thetext>This broke four JSC tests on Windows:

** The following JSC stress test failures have been introduced:
	mozilla-tests.yaml/ecma/Date/15.9.5.8.js.mozilla
	mozilla-tests.yaml/ecma/Date/15.9.5.8.js.mozilla-baseline
	mozilla-tests.yaml/ecma/Date/15.9.5.8.js.mozilla-dfg-eager-no-cjit-validate-phases
	mozilla-tests.yaml/ecma/Date/15.9.5.8.js.mozilla-llint

Can you fix, or should I roll this out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082282</commentid>
    <comment_count>10</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-04-02 11:21:09 -0700</bug_when>
    <thetext>I don&apos;t understand how. This patch didn&apos;t touch anything on JSC level or below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082283</commentid>
    <comment_count>11</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-02 11:27:40 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; I don&apos;t understand how. This patch didn&apos;t touch anything on JSC level or
&gt; below.

It might just be the bot. I&apos;m noticing that one of the two bots is green, while the other is failing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082284</commentid>
    <comment_count>12</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-04-02 11:30:56 -0700</bug_when>
    <thetext>This patch touched WebCore, WebKit and WebKit2 only. Literally no code affected here should end up in jsc.exe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082620</commentid>
    <comment_count>13</comment_count>
      <attachid>249979</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-04-03 10:34:05 -0700</bug_when>
    <thetext>Comment on attachment 249979
another

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

&gt; Source/WebCore/platform/network/CacheValidation.cpp:113
&gt; +    auto maxAge = response.cacheControlMaxAge();
&gt; +    if (maxAge)

Can fold this into the if condition.

&gt; Source/WebCore/platform/network/HTTPParsers.cpp:243
&gt; +    // This assumes system_clock epoch equals Unix epoch which is true for all implementations but unspecified.
&gt; +    // FIXME: The parsing function should be switched to std::chrono too.

Maybe we can use std::chrono::system:clock::to_time_t or something?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249943</attachid>
            <date>2015-04-01 14:53:37 -0700</date>
            <delta_ts>2015-04-02 05:13:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>response-std-chrono.patch</filename>
            <type>text/plain</type>
            <size>41088</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjI1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE1LTA0LTAxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ugc3RkOjpjaHJvbm8gdHlw
ZXMgdG8gcmVwcmVzZW50IHRpbWUgaW4gcmVzcG9uc2UgYW5kIGNhY2hlIGNsYXNzZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzMxNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRvIHJlcHJlc2VudCBjbG9jayB0aW1lcyBhbmQg
c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyB0bworICAgICAgICByZXByZXNlbnQgZHVyYXRpb25z
LiBBbHNvIHVzZSBXVEY6Ok9wdGlvbmFsIGZvciBvcHRpb25hbCB2YWx1ZXMgKGluc3RlYWQgb2Yg
Y29kaW5nIHRoZW0gYXMgTmFOcykuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omxhc3RNb2RpZmllZCk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlOjpDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6
ZnJlc2huZXNzTGlmZXRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnJl
c3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnVwZGF0
ZVJlc3BvbnNlQWZ0ZXJSZXZhbGlkYXRpb24pOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkpOgorICAgICAgICAo
V2ViQ29yZTo6dXBkYXRlUmVkaXJlY3RDaGFpblN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpy
ZWRpcmVjdENoYWluQWxsb3dzUmV1c2UpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDYWNoZUNv
bnRyb2xEaXJlY3RpdmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRh
dGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzOjpSZWRp
cmVjdENoYWluQ2FjaGVTdGF0dXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBh
cnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VIVFRQRGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpwYXJzZURhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
SFRUUFBhcnNlcnMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNv
dXJjZVJlc3BvbnNlQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6Y2FjaGVDb250cm9sTWF4QWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRGF0ZVZhbHVl
SW5IZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmRhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwaXJlcyk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlmaWVkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisKIDIwMTUtMDQtMDEgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBpT1Mg
YnVpbGQgYWZ0ZXIgcjE4MjI0MC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNp
b24gMTgyMjQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDE0MiwxMSArNDE0MiwxMCBAQCBTdHJpbmcgRG9jdW1lbnQ6Omxhc3RNb2RpZmll
ZCgpIGNvbnN0CiAgICAgRGF0ZUNvbXBvbmVudHMgZGF0ZTsKICAgICBib29sIGZvdW5kRGF0ZSA9
IGZhbHNlOwogICAgIGlmIChtX2ZyYW1lKSB7Ci0gICAgICAgIFN0cmluZyBodHRwTGFzdE1vZGlm
aWVkOwotICAgICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gbG9hZGVy
KCkpIAotICAgICAgICAgICAgaHR0cExhc3RNb2RpZmllZCA9IGRvY3VtZW50TG9hZGVyLT5yZXNw
b25zZSgpLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6TGFzdE1vZGlmaWVkKTsKLSAg
ICAgICAgaWYgKCFodHRwTGFzdE1vZGlmaWVkLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgZGF0
ZS5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yRGF0ZVRpbWUocGFyc2VEYXRlKGh0dHBMYXN0
TW9kaWZpZWQpKTsKKyAgICAgICAgYXV0byBsYXN0TW9kaWZpZWREYXRlID0gbG9hZGVyKCkgPyBs
b2FkZXIoKS0+cmVzcG9uc2UoKS5sYXN0TW9kaWZpZWQoKSA6IE51bGxvcHQ7CisgICAgICAgIGlm
IChsYXN0TW9kaWZpZWREYXRlKSB7CisgICAgICAgICAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpj
aHJvbm87CisgICAgICAgICAgICBkYXRlLnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRl
VGltZShkdXJhdGlvbl9jYXN0PG1pbGxpc2Vjb25kcz4obGFzdE1vZGlmaWVkRGF0ZS52YWx1ZSgp
LnRpbWVfc2luY2VfZXBvY2goKSkuY291bnQoKSk7CiAgICAgICAgICAgICBmb3VuZERhdGUgPSB0
cnVlOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCShyZXZpc2lvbiAxODIyNDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTYsNyArMTE2LDcgQEAgQ2FjaGVkUmVzb3VyY2U6OkNhY2hlZFJlc291cmNlKGNvbnN0IFJlcwog
ICAgICwgbV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIoKnRoaXMsICZDYWNoZWRSZXNvdXJjZTo6
ZGVjb2RlZERhdGFEZWxldGlvblRpbWVyRmlyZWQsIGRlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50
ZXJ2YWxGb3JSZXNvdXJjZVR5cGUodHlwZSkpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQp
CiAgICAgLCBtX2xvYWRQcmlvcml0eShkZWZhdWx0UHJpb3JpdHlGb3JSZXNvdXJjZVR5cGUodHlw
ZSkpCi0gICAgLCBtX3Jlc3BvbnNlVGltZXN0YW1wKGN1cnJlbnRUaW1lKCkpCisgICAgLCBtX3Jl
c3BvbnNlVGltZXN0YW1wKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpKQogICAgICwg
bV9sYXN0RGVjb2RlZEFjY2Vzc1RpbWUoMCkKICAgICAsIG1fbG9hZEZpbmlzaFRpbWUoMCkKICAg
ICAsIG1fZW5jb2RlZFNpemUoMCkKQEAgLTM0NywxNiArMzQ3LDE2IEBAIGJvb2wgQ2FjaGVkUmVz
b3VyY2U6OmlzRXhwaXJlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbXB1dGVDdXJyZW50QWdlKG1f
cmVzcG9uc2UsIG1fcmVzcG9uc2VUaW1lc3RhbXApID4gZnJlc2huZXNzTGlmZXRpbWUobV9yZXNw
b25zZSk7CiB9CiAKLWRvdWJsZSBDYWNoZWRSZXNvdXJjZTo6ZnJlc2huZXNzTGlmZXRpbWUoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIGNvbnN0CitzdGQ6OmNocm9ubzo6bWljcm9z
ZWNvbmRzIENhY2hlZFJlc291cmNlOjpmcmVzaG5lc3NMaWZldGltZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSkgY29uc3QKIHsKICAgICBpZiAoIXJlc3BvbnNlLnVybCgpLnByb3Rv
Y29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICAvLyBEb24ndCBjYWNoZSBub24tSFRUUCBt
YWluIHJlc291cmNlcyBzaW5jZSB3ZSBjYW4ndCBjaGVjayBmb3IgZnJlc2huZXNzLgogICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBjYWNoZSBzdWJyZXNvdXJjZXMgZWl0aGVyLCBidXQg
d2hlbiB3ZSB0cmllZCB0aGlzCiAgICAgICAgIC8vIGl0IGNhdXNlZCBwZXJmb3JtYW5jZSBhbmQg
Zmxha2luZXNzIGlzc3VlcyBpbiBvdXIgdGVzdCBpbmZyYXN0cnVjdHVyZS4KICAgICAgICAgaWYg
KG1fdHlwZSA9PSBNYWluUmVzb3VyY2UgJiYgIVNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRDYWNoZVJl
c3BvbnNlc0Zyb21VUkxTY2hlbWVJbmRlZmluaXRlbHkocmVzcG9uc2UudXJsKCkucHJvdG9jb2wo
KSkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OmNocm9u
bzo6bWljcm9zZWNvbmRzOjp6ZXJvKCk7CiAKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZG91YmxlPjo6bWF4KCk7CisgICAgICAgIHJldHVybiBzdGQ6OmNocm9ubzo6bWljcm9z
ZWNvbmRzOjptYXgoKTsKICAgICB9CiAKICAgICByZXR1cm4gY29tcHV0ZUZyZXNobmVzc0xpZmV0
aW1lRm9ySFRUUEZhbWlseShyZXNwb25zZSwgbV9yZXNwb25zZVRpbWVzdGFtcCk7CkBAIC0zNzMs
NyArMzczLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6d2lsbFNlbmRSZXF1ZXN0KFJlcwogdm9p
ZCBDYWNoZWRSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKICAgICBzZXRSZXNwb25zZShyZXNwb25zZSk7Ci0gICAgbV9yZXNwb25z
ZVRpbWVzdGFtcCA9IGN1cnJlbnRUaW1lKCk7CisgICAgbV9yZXNwb25zZVRpbWVzdGFtcCA9IHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpOwogICAgIFN0cmluZyBlbmNvZGluZyA9IHJl
c3BvbnNlLnRleHRFbmNvZGluZ05hbWUoKTsKICAgICBpZiAoIWVuY29kaW5nLmlzTnVsbCgpKQog
ICAgICAgICBzZXRFbmNvZGluZyhlbmNvZGluZyk7CkBAIC02NDYsNyArNjQ2LDcgQEAgdm9pZCBD
YWNoZWRSZXNvdXJjZTo6c3dpdGNoQ2xpZW50c1RvUmV2YQogCiB2b2lkIENhY2hlZFJlc291cmNl
Ojp1cGRhdGVSZXNwb25zZUFmdGVyUmV2YWxpZGF0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHZhbGlkYXRpbmdSZXNwb25zZSkKIHsKLSAgICBtX3Jlc3BvbnNlVGltZXN0YW1wID0gY3VycmVu
dFRpbWUoKTsKKyAgICBtX3Jlc3BvbnNlVGltZXN0YW1wID0gc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6bm93KCk7CiAKICAgICB1cGRhdGVSZXNwb25zZUhlYWRlcnNBZnRlclJldmFsaWRhdGlv
bihtX3Jlc3BvbnNlLCB2YWxpZGF0aW5nUmVzcG9uc2UpOwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHJldmlzaW9uIDE4MjI0MSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yODAsNyArMjgwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tO
b3RpZnkoKTsKICAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGRvdWJsZSBmcmVzaG5lc3NMaWZldGltZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgY29uc3Q7CisgICAgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25k
cyBmcmVzaG5lc3NMaWZldGltZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgY29uc3Q7CiAKICAg
ICB2b2lkIGFkZEFkZGl0aW9uYWxSZXF1ZXN0SGVhZGVycyhDYWNoZWRSZXNvdXJjZUxvYWRlciYp
OwogICAgIHZvaWQgZmFpbEJlZm9yZVN0YXJ0aW5nKCk7CkBAIC0yODksNyArMjg5LDcgQEAgcHJp
dmF0ZToKICAgICBTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgU3RyaW5nIG1fYWNjZXB0Owog
ICAgIFJlc291cmNlTG9hZFByaW9yaXR5IG1fbG9hZFByaW9yaXR5OwotICAgIGRvdWJsZSBtX3Jl
c3BvbnNlVGltZXN0YW1wOworICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9p
bnQgbV9yZXNwb25zZVRpbWVzdGFtcDsKIAogICAgIFN0cmluZyBtX2ZyYWdtZW50SWRlbnRpZmll
ckZvclJlcXVlc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2Fj
aGVWYWxpZGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODksNDkgKzg5LDU2IEBAIHZvaWQgdXBkYXRlUmVzcG9uc2VIZWFkZXJzQWZ0ZXJSZXZh
bGlkYXQKICAgICB9CiB9CiAKLWRvdWJsZSBjb21wdXRlQ3VycmVudEFnZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgZG91YmxlIHJlc3BvbnNlVGltZXN0YW1wKQorc3RkOjpjaHJv
bm86Om1pY3Jvc2Vjb25kcyBjb21wdXRlQ3VycmVudEFnZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCByZXNwb25z
ZVRpbWVzdGFtcCkKIHsKKyAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87CisKICAgICAv
LyBSRkMyNjE2IDEzLjIuMwogICAgIC8vIE5vIGNvbXBlbnNhdGlvbiBmb3IgbGF0ZW5jeSBhcyB0
aGF0IGlzIG5vdCB0ZXJyaWJseSBpbXBvcnRhbnQgaW4gcHJhY3RpY2UKLSAgICBkb3VibGUgZGF0
ZVZhbHVlID0gcmVzcG9uc2UuZGF0ZSgpOwotICAgIGRvdWJsZSBhcHBhcmVudEFnZSA9IHN0ZDo6
aXNmaW5pdGUoZGF0ZVZhbHVlKSA/IHN0ZDo6bWF4KDAuLCByZXNwb25zZVRpbWVzdGFtcCAtIGRh
dGVWYWx1ZSkgOiAwOwotICAgIGRvdWJsZSBhZ2VWYWx1ZSA9IHJlc3BvbnNlLmFnZSgpOwotICAg
IGRvdWJsZSBjb3JyZWN0ZWRSZWNlaXZlZEFnZSA9IHN0ZDo6aXNmaW5pdGUoYWdlVmFsdWUpID8g
c3RkOjptYXgoYXBwYXJlbnRBZ2UsIGFnZVZhbHVlKSA6IGFwcGFyZW50QWdlOwotICAgIGRvdWJs
ZSByZXNpZGVudFRpbWUgPSBjdXJyZW50VGltZSgpIC0gcmVzcG9uc2VUaW1lc3RhbXA7CisgICAg
YXV0byBkYXRlVmFsdWUgPSByZXNwb25zZS5kYXRlKCk7CisgICAgYXV0byBhcHBhcmVudEFnZSA9
IGRhdGVWYWx1ZSA/IHN0ZDo6bWF4KG1pY3Jvc2Vjb25kczo6emVybygpLCByZXNwb25zZVRpbWVz
dGFtcCAtIGRhdGVWYWx1ZS52YWx1ZSgpKSA6IG1pY3Jvc2Vjb25kczo6emVybygpOworICAgIGF1
dG8gYWdlVmFsdWUgPSByZXNwb25zZS5hZ2UoKTsKKyAgICBhdXRvIGNvcnJlY3RlZFJlY2VpdmVk
QWdlID0gYWdlVmFsdWUgPyBzdGQ6Om1heChhcHBhcmVudEFnZSwgYWdlVmFsdWUudmFsdWUoKSkg
OiBhcHBhcmVudEFnZTsKKyAgICBhdXRvIHJlc2lkZW50VGltZSA9IHN5c3RlbV9jbG9jazo6bm93
KCkgLSByZXNwb25zZVRpbWVzdGFtcDsKICAgICByZXR1cm4gY29ycmVjdGVkUmVjZWl2ZWRBZ2Ug
KyByZXNpZGVudFRpbWU7CiB9CiAKLWRvdWJsZSBjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JI
VFRQRmFtaWx5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBkb3VibGUgcmVzcG9u
c2VUaW1lc3RhbXApCitzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIGNvbXB1dGVGcmVzaG5lc3NM
aWZldGltZUZvckhUVFBGYW1pbHkoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgcmVzcG9uc2VUaW1lc3RhbXApCiB7
CisgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOwogICAgIEFTU0VSVChyZXNwb25zZS51
cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOworCiAgICAgLy8gUkZDMjYxNiAxMy4yLjQK
LSAgICBkb3VibGUgbWF4QWdlVmFsdWUgPSByZXNwb25zZS5jYWNoZUNvbnRyb2xNYXhBZ2UoKTsK
LSAgICBpZiAoc3RkOjppc2Zpbml0ZShtYXhBZ2VWYWx1ZSkpCi0gICAgICAgIHJldHVybiBtYXhB
Z2VWYWx1ZTsKLSAgICBkb3VibGUgZXhwaXJlc1ZhbHVlID0gcmVzcG9uc2UuZXhwaXJlcygpOwot
ICAgIGRvdWJsZSBkYXRlVmFsdWUgPSByZXNwb25zZS5kYXRlKCk7Ci0gICAgZG91YmxlIGNyZWF0
aW9uVGltZSA9IHN0ZDo6aXNmaW5pdGUoZGF0ZVZhbHVlKSA/IGRhdGVWYWx1ZSA6IHJlc3BvbnNl
VGltZXN0YW1wOwotICAgIGlmIChzdGQ6OmlzZmluaXRlKGV4cGlyZXNWYWx1ZSkpCi0gICAgICAg
IHJldHVybiBleHBpcmVzVmFsdWUgLSBjcmVhdGlvblRpbWU7Ci0gICAgZG91YmxlIGxhc3RNb2Rp
ZmllZFZhbHVlID0gcmVzcG9uc2UubGFzdE1vZGlmaWVkKCk7Ci0gICAgaWYgKHN0ZDo6aXNmaW5p
dGUobGFzdE1vZGlmaWVkVmFsdWUpKQotICAgICAgICByZXR1cm4gKGNyZWF0aW9uVGltZSAtIGxh
c3RNb2RpZmllZFZhbHVlKSAqIDAuMTsKKyAgICBhdXRvIG1heEFnZSA9IHJlc3BvbnNlLmNhY2hl
Q29udHJvbE1heEFnZSgpOworICAgIGlmIChtYXhBZ2UpCisgICAgICAgIHJldHVybiBtYXhBZ2Uu
dmFsdWUoKTsKKyAgICBhdXRvIGV4cGlyZXMgPSByZXNwb25zZS5leHBpcmVzKCk7CisgICAgYXV0
byBkYXRlID0gcmVzcG9uc2UuZGF0ZSgpOworICAgIGF1dG8gY3JlYXRpb25UaW1lID0gZGF0ZSA/
IGRhdGUudmFsdWUoKSA6IHJlc3BvbnNlVGltZXN0YW1wOworICAgIGlmIChleHBpcmVzKQorICAg
ICAgICByZXR1cm4gZXhwaXJlcy52YWx1ZSgpIC0gY3JlYXRpb25UaW1lOworICAgIGF1dG8gbGFz
dE1vZGlmaWVkID0gcmVzcG9uc2UubGFzdE1vZGlmaWVkKCk7CisgICAgaWYgKGxhc3RNb2RpZmll
ZCkKKyAgICAgICAgcmV0dXJuIGR1cmF0aW9uX2Nhc3Q8bWljcm9zZWNvbmRzPigoY3JlYXRpb25U
aW1lIC0gbGFzdE1vZGlmaWVkLnZhbHVlKCkpICogMC4xKTsKICAgICAvLyBJZiBubyBjYWNoZSBo
ZWFkZXJzIGFyZSBwcmVzZW50LCB0aGUgc3BlY2lmaWNhdGlvbiBsZWF2ZXMgdGhlIGRlY2lzaW9u
IHRvIHRoZSBVQS4gT3RoZXIgYnJvd3NlcnMgc2VlbSB0byBvcHQgZm9yIDAuCi0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG1pY3Jvc2Vjb25kczo6emVybygpOwogfQogCiB2b2lkIHVwZGF0ZVJl
ZGlyZWN0Q2hhaW5TdGF0dXMoUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzJiByZWRpcmVjdENoYWlu
Q2FjaGVTdGF0dXMsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogeworICAgIHVz
aW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKKwogICAgIGlmIChyZWRpcmVjdENoYWluQ2FjaGVT
dGF0dXMuc3RhdHVzID09IFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1czo6Tm90Q2FjaGVkUmVkaXJl
Y3Rpb24pCiAgICAgICAgIHJldHVybjsKICAgICBpZiAocmVzcG9uc2UuY2FjaGVDb250cm9sQ29u
dGFpbnNOb1N0b3JlKCkgfHwgcmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkg
fHwgcmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNNdXN0UmV2YWxpZGF0ZSgpKSB7CiAgICAg
ICAgIHJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5zdGF0dXMgPSBSZWRpcmVjdENoYWluQ2FjaGVT
dGF0dXM6Ok5vdENhY2hlZFJlZGlyZWN0aW9uOwogICAgICAgICByZXR1cm47CiAgICAgfQorCiAg
ICAgcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLnN0YXR1cyA9IFJlZGlyZWN0Q2hhaW5DYWNoZVN0
YXR1czo6Q2FjaGVkUmVkaXJlY3Rpb247Ci0gICAgZG91YmxlIHJlc3BvbnNlVGltZXN0YW1wID0g
Y3VycmVudFRpbWUoKTsKKyAgICBhdXRvIHJlc3BvbnNlVGltZXN0YW1wID0gc3lzdGVtX2Nsb2Nr
Ojpub3coKTsKICAgICAvLyBTdG9yZSB0aGUgbmVhcmVzdCBlbmQgb2YgY2FjaGUgdmFsaWRpdHkg
ZGF0ZQotICAgIGRvdWJsZSBlbmRPZlZhbGlkaXR5ID0gcmVzcG9uc2VUaW1lc3RhbXAgKyBjb21w
dXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KHJlc3BvbnNlLCByZXNwb25zZVRpbWVz
dGFtcCkgLSBjb21wdXRlQ3VycmVudEFnZShyZXNwb25zZSwgcmVzcG9uc2VUaW1lc3RhbXApOwor
ICAgIGF1dG8gZW5kT2ZWYWxpZGl0eSA9IHJlc3BvbnNlVGltZXN0YW1wICsgY29tcHV0ZUZyZXNo
bmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShyZXNwb25zZSwgcmVzcG9uc2VUaW1lc3RhbXApIC0g
Y29tcHV0ZUN1cnJlbnRBZ2UocmVzcG9uc2UsIHJlc3BvbnNlVGltZXN0YW1wKTsKICAgICByZWRp
cmVjdENoYWluQ2FjaGVTdGF0dXMuZW5kT2ZWYWxpZGl0eSA9IHN0ZDo6bWluKHJlZGlyZWN0Q2hh
aW5DYWNoZVN0YXR1cy5lbmRPZlZhbGlkaXR5LCBlbmRPZlZhbGlkaXR5KTsKIH0KIApAQCAtMTQz
LDcgKzE1MCw3IEBAIGJvb2wgcmVkaXJlY3RDaGFpbkFsbG93c1JldXNlKFJlZGlyZWN0Q2gKICAg
ICBjYXNlIFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1czo6Tm90Q2FjaGVkUmVkaXJlY3Rpb246CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBjYXNlIFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1czo6
Q2FjaGVkUmVkaXJlY3Rpb246Ci0gICAgICAgIHJldHVybiByZXVzZUV4cGlyZWRSZWRpcmVjdGlv
biB8fCBjdXJyZW50VGltZSgpIDw9IHJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5lbmRPZlZhbGlk
aXR5OworICAgICAgICByZXR1cm4gcmV1c2VFeHBpcmVkUmVkaXJlY3Rpb24gfHwgc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6bm93KCkgPD0gcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLmVuZE9m
VmFsaWRpdHk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBm
YWxzZTsKQEAgLTI0OCw2ICsyNTUsOCBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IFN0cmluZz4+CiAKIENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNvbnRyb2xEaXJl
Y3RpdmVzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiB7CisgICAgdXNpbmcgbmFtZXNw
YWNlIHN0ZDo6Y2hyb25vOworCiAgICAgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyByZXN1bHQ7CiAK
ICAgICBTdHJpbmcgY2FjaGVDb250cm9sVmFsdWUgPSBoZWFkZXJzLmdldChIVFRQSGVhZGVyTmFt
ZTo6Q2FjaGVDb250cm9sKTsKQEAgLTI2NSwyOSArMjc0LDI5IEBAIENhY2hlQ29udHJvbERpcmVj
dGl2ZXMgcGFyc2VDYWNoZUNvbnRyb2wKICAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGRpcmVjdGl2ZXNbaV0uZmlyc3QsICJtdXN0LXJldmFsaWRhdGUiKSkKICAgICAgICAg
ICAgICAgICByZXN1bHQubXVzdFJldmFsaWRhdGUgPSB0cnVlOwogICAgICAgICAgICAgZWxzZSBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGlyZWN0aXZlc1tpXS5maXJzdCwgIm1heC1hZ2UiKSkgewot
ICAgICAgICAgICAgICAgIGlmICghc3RkOjppc25hbihyZXN1bHQubWF4QWdlKSkgeworICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQubWF4QWdlKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZp
cnN0IG1heC1hZ2UgZGlyZWN0aXZlIHdpbnMgaWYgdGhlcmUgYXJlIG11bHRpcGxlIG9uZXMuCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBib29sIG9rOwogICAgICAgICAgICAgICAgIGRvdWJsZSBtYXhBZ2UgPSBkaXJlY3Rp
dmVzW2ldLnNlY29uZC50b0RvdWJsZSgmb2spOwogICAgICAgICAgICAgICAgIGlmIChvaykKLSAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heEFnZSA9IG1heEFnZTsKKyAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0Lm1heEFnZSA9IGR1cmF0aW9uX2Nhc3Q8bWljcm9zZWNvbmRzPihkdXJhdGlv
bjxkb3VibGU+KG1heEFnZSkpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShkaXJlY3RpdmVzW2ldLmZpcnN0LCAibWF4LXN0YWxlIikpIHsKICAgICAgICAgICAgICAg
ICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzNCNzZWN0aW9uLTUuMi4xLjIK
LSAgICAgICAgICAgICAgICBpZiAoIXN0ZDo6aXNuYW4ocmVzdWx0Lm1heFN0YWxlKSkgeworICAg
ICAgICAgICAgICAgIGlmIChyZXN1bHQubWF4U3RhbGUpIHsKICAgICAgICAgICAgICAgICAgICAg
Ly8gRmlyc3QgbWF4LXN0YWxlIGRpcmVjdGl2ZSB3aW5zIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBv
bmVzLgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgaWYgKGRpcmVjdGl2ZXNbaV0uc2Vjb25kLmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgICAgICAgICAvLyBpZiBubyB2YWx1ZSBpcyBhc3NpZ25lZCB0byBtYXgtc3RhbGUs
IHRoZW4gdGhlIGNsaWVudCBpcyB3aWxsaW5nIHRvIGFjY2VwdCBhIHN0YWxlIHJlc3BvbnNlIG9m
IGFueSBhZ2UuCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tYXhTdGFsZSA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5t
YXhTdGFsZSA9IG1pY3Jvc2Vjb25kczo6bWF4KCk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBib29sIG9rOwogICAgICAg
ICAgICAgICAgIGRvdWJsZSBtYXhTdGFsZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25kLnRvRG91Ymxl
KCZvayk7CiAgICAgICAgICAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgICAgICAgICByZXN1
bHQubWF4U3RhbGUgPSBtYXhTdGFsZTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heFN0
YWxlID0gZHVyYXRpb25fY2FzdDxtaWNyb3NlY29uZHM+KGR1cmF0aW9uPGRvdWJsZT4obWF4U3Rh
bGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uaAkocmV2aXNpb24g
MTgyMjQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBDYWNoZVZhbGlk
YXRpb25faAogI2RlZmluZSBDYWNoZVZhbGlkYXRpb25faAogCisjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRUUEhlYWRlck1hcDsKQEAg
LTM5LDE0ICs0MSwxNCBAQCBzdHJ1Y3QgUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzIHsKICAgICB9
OwogICAgIFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cygpCiAgICAgICAgIDogc3RhdHVzKE5vUmVk
aXJlY3Rpb24pCi0gICAgICAgICwgZW5kT2ZWYWxpZGl0eShzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46Om1heCgpKQorICAgICAgICAsIGVuZE9mVmFsaWRpdHkoc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludDo6bWF4KCkpCiAgICAgeyB9CiAgICAgU3RhdHVzIHN0YXR1czsK
LSAgICBkb3VibGUgZW5kT2ZWYWxpZGl0eTsKKyAgICBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50IGVuZE9mVmFsaWRpdHk7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBkb3VibGUg
Y29tcHV0ZUN1cnJlbnRBZ2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGRvdWJsZSByZXNwb25z
ZVRpbWVzdGFtcCk7Ci1XRUJDT1JFX0VYUE9SVCBkb3VibGUgY29tcHV0ZUZyZXNobmVzc0xpZmV0
aW1lRm9ySFRUUEZhbWlseShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgZG91YmxlIHJlc3BvbnNl
VGltZXN0YW1wKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgY29t
cHV0ZUN1cnJlbnRBZ2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgcmVzcG9uc2VUaW1lc3RhbXApOworV0VCQ09SRV9FWFBPUlQg
c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQ
RmFtaWx5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50IHJlc3BvbnNlVGltZXN0YW1wKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBk
YXRlUmVzcG9uc2VIZWFkZXJzQWZ0ZXJSZXZhbGlkYXRpb24oUmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHZhbGlkYXRpbmdSZXNwb25zZSk7CiBXRUJDT1JFX0VYUE9S
VCB2b2lkIHVwZGF0ZVJlZGlyZWN0Q2hhaW5TdGF0dXMoUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVz
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCkBAIC01NCw4ICs1Niw4IEBAIGVudW0gUmV1
c2VFeHBpcmVkUmVkaXJlY3Rpb25Pck5vdCB7IERvTm8KIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVk
aXJlY3RDaGFpbkFsbG93c1JldXNlKFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cywgUmV1c2VFeHBp
cmVkUmVkaXJlY3Rpb25Pck5vdCk7CiAKIHN0cnVjdCBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIHsK
LSAgICBkb3VibGUgbWF4QWdlIHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9O
YU4oKSB9OwotICAgIGRvdWJsZSBtYXhTdGFsZSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91Ymxl
Pjo6cXVpZXRfTmFOKCkgfTsKKyAgICBPcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRz
PiBtYXhBZ2U7CisgICAgT3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gbWF4U3Rh
bGU7CiAgICAgYm9vbCBub0NhY2hlIHsgZmFsc2UgfTsKICAgICBib29sIG5vU3RvcmUgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbXVzdFJldmFsaWRhdGUgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAJKHJldmlzaW9uIDE4
MjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsOSArMjM0LDE0IEBAIGJvb2wgcGFyc2VIVFRQUmVmcmVz
aChjb25zdCBTdHJpbmcmIHJlZnIKICAgICB9CiB9CiAKLWRvdWJsZSBwYXJzZURhdGUoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKK09wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQ+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4g
cGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyh2YWx1ZS51dGY4KCkuZGF0YSgp
KTsKKyAgICBkb3VibGUgZGF0ZUluTWlsbGlzZWNvbmRzU2luY2VFcG9jaCA9IHBhcnNlRGF0ZUZy
b21OdWxsVGVybWluYXRlZENoYXJhY3RlcnModmFsdWUudXRmOCgpLmRhdGEoKSk7CisgICAgaWYg
KCFpc2Zpbml0ZShkYXRlSW5NaWxsaXNlY29uZHNTaW5jZUVwb2NoKSkKKyAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgLy8gVGhpcyBhc3N1bWVzIHN5c3RlbV9jbG9jayBlcG9jaCBlcXVhbHMg
VW5peCBlcG9jaCB3aGljaCBpcyB0cnVlIGZvciBhbGwgaW1wbGVtZW50YXRpb25zIGJ1dCB1bnNw
ZWNpZmllZC4KKyAgICAvLyBGSVhNRTogVGhlIHBhcnNpbmcgZnVuY3Rpb24gc2hvdWxkIGJlIHN3
aXRjaGVkIHRvIHN0ZDo6Y2hyb25vIHRvby4KKyAgICByZXR1cm4gc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludChzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0ZUluTWlsbGlzZWNvbmRzU2luY2VFcG9jaCkpKTsKIH0KIAogLy8gRklY
TUU6IFRoaXMgZnVuY3Rpb24gZG9lc24ndCBjb21wbHkgd2l0aCBSRkMgNjI2Ni4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgJKHJldmlzaW9u
IDE4MjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTY0LDcgKzY1LDcgQEAgQ29udGVudERpc3Bvc2l0aW9uVHlwZSBjb250ZW50RGlzcG9z
aXRpbwogYm9vbCBpc1ZhbGlkSFRUUEhlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYpOwogYm9vbCBp
c1ZhbGlkSFRUUFRva2VuKGNvbnN0IFN0cmluZyYpOwogYm9vbCBwYXJzZUhUVFBSZWZyZXNoKGNv
bnN0IFN0cmluZyYgcmVmcmVzaCwgYm9vbCBmcm9tSHR0cEVxdWl2TWV0YSwgZG91YmxlJiBkZWxh
eSwgU3RyaW5nJiB1cmwpOwotZG91YmxlIHBhcnNlRGF0ZShjb25zdCBTdHJpbmcmKTsKK09wdGlv
bmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IHBhcnNlSFRUUERhdGUo
Y29uc3QgU3RyaW5nJik7CiBTdHJpbmcgZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlv
bihjb25zdCBTdHJpbmcmKTsgCiBTdHJpbmcgZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShj
b25zdCBTdHJpbmcmKTsKIFN0cmluZyBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29uc3Qg
U3RyaW5nJik7IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw0MiArNDMsMjIgQEAgaW5saW5lIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIFJlc291cmNlUgogICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VS
ZXNwb25zZSo+KHRoaXMpOwogfQogCi1SZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2UoKSAgCi0gICAgOiBtX2V4cGVjdGVkQ29udGVudExlbmd0aCgwKQorUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKCkKKyAgICA6IG1faXNOdWxsKHRydWUp
CisgICAgLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCgwKQogICAgICwgbV9pbmNsdWRlc0NlcnRp
ZmljYXRlSW5mbyhmYWxzZSkKICAgICAsIG1faHR0cFN0YXR1c0NvZGUoMCkKLSAgICAsIG1fYWdl
KDApCi0gICAgLCBtX2RhdGUoMCkKLSAgICAsIG1fZXhwaXJlcygwKQotICAgICwgbV9sYXN0TW9k
aWZpZWQoMCkKLSAgICAsIG1faXNOdWxsKHRydWUpCi0gICAgLCBtX2hhdmVQYXJzZWRDYWNoZUNv
bnRyb2xIZWFkZXIoZmFsc2UpCi0gICAgLCBtX2hhdmVQYXJzZWRBZ2VIZWFkZXIoZmFsc2UpCi0g
ICAgLCBtX2hhdmVQYXJzZWREYXRlSGVhZGVyKGZhbHNlKQotICAgICwgbV9oYXZlUGFyc2VkRXhw
aXJlc0hlYWRlcihmYWxzZSkKLSAgICAsIG1faGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRlcihm
YWxzZSkKLSAgICAsIG1fc291cmNlKFNvdXJjZTo6VW5rbm93bikKIHsKIH0KIAogUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nTmFtZSkKLSAgICA6IG1fdXJsKHVybCkKKyAgICA6IG1faXNOdWxsKGZhbHNl
KQorICAgICwgbV91cmwodXJsKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1f
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKGV4cGVjdGVkTGVuZ3RoKQogICAgICwgbV90ZXh0RW5jb2Rp
bmdOYW1lKHRleHRFbmNvZGluZ05hbWUpCiAgICAgLCBtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZv
KHRydWUpIC8vIEVtcHR5IGJ1dCB2YWxpZCBmb3Igc3ludGhldGljIHJlc3BvbnNlcy4KICAgICAs
IG1faHR0cFN0YXR1c0NvZGUoMCkKLSAgICAsIG1fYWdlKDApCi0gICAgLCBtX2RhdGUoMCkKLSAg
ICAsIG1fZXhwaXJlcygwKQotICAgICwgbV9sYXN0TW9kaWZpZWQoMCkKLSAgICAsIG1faXNOdWxs
KGZhbHNlKQotICAgICwgbV9oYXZlUGFyc2VkQ2FjaGVDb250cm9sSGVhZGVyKGZhbHNlKQotICAg
ICwgbV9oYXZlUGFyc2VkQWdlSGVhZGVyKGZhbHNlKQotICAgICwgbV9oYXZlUGFyc2VkRGF0ZUhl
YWRlcihmYWxzZSkKLSAgICAsIG1faGF2ZVBhcnNlZEV4cGlyZXNIZWFkZXIoZmFsc2UpCi0gICAg
LCBtX2hhdmVQYXJzZWRMYXN0TW9kaWZpZWRIZWFkZXIoZmFsc2UpCi0gICAgLCBtX3NvdXJjZShT
b3VyY2U6OlVua25vd24pCiB7CiB9CiAKQEAgLTM4MSwyOSArMzYxLDI2IEBAIGJvb2wgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6Omhhc0NhY2hlVmFsaWQKICAgICByZXR1cm4gIW1faHR0cEhlYWRlckZp
ZWxkcy5nZXQoSFRUUEhlYWRlck5hbWU6Okxhc3RNb2RpZmllZCkuaXNFbXB0eSgpIHx8ICFtX2h0
dHBIZWFkZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpFVGFnKS5pc0VtcHR5KCk7CiB9CiAK
LWRvdWJsZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2FjaGVDb250cm9sTWF4QWdlKCkgY29uc3QK
K09wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IFJlc291cmNlUmVzcG9uc2VCYXNl
OjpjYWNoZUNvbnRyb2xNYXhBZ2UoKSBjb25zdAogewogICAgIGlmICghbV9oYXZlUGFyc2VkQ2Fj
aGVDb250cm9sSGVhZGVyKQogICAgICAgICBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoKTsK
ICAgICByZXR1cm4gbV9jYWNoZUNvbnRyb2xEaXJlY3RpdmVzLm1heEFnZTsKIH0KIAotc3RhdGlj
IGRvdWJsZSBwYXJzZURhdGVWYWx1ZUluSGVhZGVyKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRl
cnMsIEhUVFBIZWFkZXJOYW1lIGhlYWRlck5hbWUpCitzdGF0aWMgT3B0aW9uYWw8c3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gcGFyc2VEYXRlVmFsdWVJbkhlYWRlcihjb25z
dCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBIVFRQSGVhZGVyTmFtZSBoZWFkZXJOYW1lKQogewog
ICAgIFN0cmluZyBoZWFkZXJWYWx1ZSA9IGhlYWRlcnMuZ2V0KGhlYWRlck5hbWUpOwogICAgIGlm
IChoZWFkZXJWYWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OnF1aWV0X05hTigpOyAKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICAvLyBU
aGlzIGhhbmRsZXMgYWxsIGRhdGUgZm9ybWF0cyByZXF1aXJlZCBieSBSRkMyNjE2OgogICAgIC8v
IFN1biwgMDYgTm92IDE5OTQgMDg6NDk6MzcgR01UICA7IFJGQyA4MjIsIHVwZGF0ZWQgYnkgUkZD
IDExMjMKICAgICAvLyBTdW5kYXksIDA2LU5vdi05NCAwODo0OTozNyBHTVQgOyBSRkMgODUwLCBv
YnNvbGV0ZWQgYnkgUkZDIDEwMzYKICAgICAvLyBTdW4gTm92ICA2IDA4OjQ5OjM3IDE5OTQgICAg
ICAgOyBBTlNJIEMncyBhc2N0aW1lKCkgZm9ybWF0Ci0gICAgZG91YmxlIGRhdGVJbk1pbGxpc2Vj
b25kcyA9IHBhcnNlRGF0ZShoZWFkZXJWYWx1ZSk7Ci0gICAgaWYgKCFzdGQ6OmlzZmluaXRlKGRh
dGVJbk1pbGxpc2Vjb25kcykpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OnF1aWV0X05hTigpOwotICAgIHJldHVybiBkYXRlSW5NaWxsaXNlY29uZHMgLyAxMDAw
OworICAgIHJldHVybiBwYXJzZUhUVFBEYXRlKGhlYWRlclZhbHVlKTsKIH0KIAotZG91YmxlIFJl
c291cmNlUmVzcG9uc2VCYXNlOjpkYXRlKCkgY29uc3QKK09wdGlvbmFsPHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpkYXRlKCkgY29u
c3QKIHsKICAgICBsYXp5SW5pdChDb21tb25GaWVsZHNPbmx5KTsKIApAQCAtNDE0LDIyICszOTEs
MjQgQEAgZG91YmxlIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkYXRlKCkgY29ucwogICAgIHJldHVy
biBtX2RhdGU7CiB9CiAKLWRvdWJsZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWdlKCkgY29uc3QK
K09wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IFJlc291cmNlUmVzcG9uc2VCYXNl
OjphZ2UoKSBjb25zdAogeworICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKKwogICAg
IGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogCiAgICAgaWYgKCFtX2hhdmVQYXJzZWRBZ2VI
ZWFkZXIpIHsKICAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlID0gbV9odHRwSGVhZGVyRmllbGRz
LmdldChIVFRQSGVhZGVyTmFtZTo6QWdlKTsKICAgICAgICAgYm9vbCBvazsKLSAgICAgICAgbV9h
Z2UgPSBoZWFkZXJWYWx1ZS50b0RvdWJsZSgmb2spOwotICAgICAgICBpZiAoIW9rKQotICAgICAg
ICAgICAgbV9hZ2UgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwor
ICAgICAgICBkb3VibGUgYWdlRG91YmxlID0gaGVhZGVyVmFsdWUudG9Eb3VibGUoJm9rKTsKKyAg
ICAgICAgaWYgKG9rKQorICAgICAgICAgICAgbV9hZ2UgPSBkdXJhdGlvbl9jYXN0PG1pY3Jvc2Vj
b25kcz4oZHVyYXRpb248ZG91YmxlPihhZ2VEb3VibGUpKTsKICAgICAgICAgbV9oYXZlUGFyc2Vk
QWdlSGVhZGVyID0gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIG1fYWdlOwogfQogCi1kb3VibGUg
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyZXMoKSBjb25zdAorT3B0aW9uYWw8c3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGly
ZXMoKSBjb25zdAogewogICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogCkBAIC00NDAs
NyArNDE5LDcgQEAgZG91YmxlIFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBpcmVzKCkgYwogICAg
IHJldHVybiBtX2V4cGlyZXM7CiB9CiAKLWRvdWJsZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFz
dE1vZGlmaWVkKCkgY29uc3QKK09wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQ+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXN0TW9kaWZpZWQoKSBjb25zdAogewog
ICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCShyZXZp
c2lvbiAxODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCwxMSArMTA0LDExIEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhY2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FjaGVDb250cm9sQ29udGFpbnNNdXN0
UmV2YWxpZGF0ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQ2FjaGVWYWxp
ZGF0b3JGaWVsZHMoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgY2FjaGVDb250
cm9sTWF4QWdlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGRhdGUoKSBjb25zdDsKLSAgICBkb3VibGUg
YWdlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZG91YmxlIGV4cGlyZXMoKSBjb25zdDsK
LSAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgbGFzdE1vZGlmaWVkKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgT3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gY2FjaGVDb250
cm9sTWF4QWdlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8c3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gZGF0ZSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IGFnZSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQ+IGV4cGlyZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBsYXN0TW9kaWZpZWQoKSBjb25z
dDsKIAogICAgIGVudW0gY2xhc3MgU291cmNlIHsgVW5rbm93biwgTmV0d29yaywgRGlza0NhY2hl
LCBEaXNrQ2FjaGVBZnRlclZhbGlkYXRpb24gfTsKICAgICBXRUJDT1JFX0VYUE9SVCBTb3VyY2Ug
c291cmNlKCkgY29uc3Q7CkBAIC0xNDcsNiArMTQ3LDEzIEBAIHByb3RlY3RlZDoKIAogICAgIHN0
YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KIAorcHJpdmF0ZToKKyAgICBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiBhc1Jlc291cmNlUmVzcG9uc2UoKSBjb25zdDsKKyAgICB2b2lk
IHBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcygpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlSGVh
ZGVyUGFyc2VkU3RhdGUoSFRUUEhlYWRlck5hbWUpOworCitwcm90ZWN0ZWQ6CisgICAgYm9vbCBt
X2lzTnVsbDsKICAgICBVUkwgbV91cmw7CiAgICAgQXRvbWljU3RyaW5nIG1fbWltZVR5cGU7CiAg
ICAgbG9uZyBsb25nIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwpAQCAtMTYxLDI3ICsxNjgsMTkg
QEAgcHJvdGVjdGVkOgogICAgIGludCBtX2h0dHBTdGF0dXNDb2RlOwogCiBwcml2YXRlOgotICAg
IG11dGFibGUgZG91YmxlIG1fYWdlOwotICAgIG11dGFibGUgZG91YmxlIG1fZGF0ZTsKLSAgICBt
dXRhYmxlIGRvdWJsZSBtX2V4cGlyZXM7Ci0gICAgbXV0YWJsZSBkb3VibGUgbV9sYXN0TW9kaWZp
ZWQ7CisgICAgbXV0YWJsZSBPcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBtX2Fn
ZTsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQ+IG1fZGF0ZTsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQ+IG1fZXhwaXJlczsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IG1fbGFzdE1vZGlmaWVkOwogICAgIG11
dGFibGUgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBtX2NhY2hlQ29udHJvbERpcmVjdGl2ZXM7CiAK
LXB1YmxpYzoKLSAgICBib29sIG1faXNOdWxsIDogMTsKLSAgICAKLXByaXZhdGU6Ci0gICAgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgYXNSZXNvdXJjZVJlc3BvbnNlKCkgY29uc3Q7Ci0gICAgdm9p
ZCBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUhl
YWRlclBhcnNlZFN0YXRlKEhUVFBIZWFkZXJOYW1lKTsKLQotICAgIG11dGFibGUgYm9vbCBtX2hh
dmVQYXJzZWRDYWNoZUNvbnRyb2xIZWFkZXIgOiAxOwotICAgIG11dGFibGUgYm9vbCBtX2hhdmVQ
YXJzZWRBZ2VIZWFkZXIgOiAxOwotICAgIG11dGFibGUgYm9vbCBtX2hhdmVQYXJzZWREYXRlSGVh
ZGVyIDogMTsKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXZlUGFyc2VkRXhwaXJlc0hlYWRlciA6IDE7
Ci0gICAgbXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRlciA6IDE7Cisg
ICAgbXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZENhY2hlQ29udHJvbEhlYWRlciB7IGZhbHNlIH07
CisgICAgbXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZEFnZUhlYWRlciB7IGZhbHNlIH07CisgICAg
bXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZERhdGVIZWFkZXIgeyBmYWxzZSB9OworICAgIG11dGFi
bGUgYm9vbCBtX2hhdmVQYXJzZWRFeHBpcmVzSGVhZGVyIHsgZmFsc2UgfTsKKyAgICBtdXRhYmxl
IGJvb2wgbV9oYXZlUGFyc2VkTGFzdE1vZGlmaWVkSGVhZGVyIHsgZmFsc2UgfTsKIAotICAgIFNv
dXJjZSBtX3NvdXJjZTsKKyAgICBTb3VyY2UgbV9zb3VyY2UgeyBTb3VyY2U6OlVua25vd24gfTsK
IH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gUmVzb3VyY2VSZXNwb25zZUJhc2U6
OmNvbXBhcmUoYSwgYik7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjI1MykKKysrIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisy
MDE1LTA0LTAxICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2Ugc3RkOjpjaHJvbm8gdHlwZXMgdG8gcmVwcmVzZW50IHRpbWUgaW4gcmVzcG9uc2UgYW5kIGNh
Y2hlIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MzMxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OnJlc3BvbnNlSGFzRXhwaXJlZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6cmVzcG9uc2VOZWVkc1JldmFsaWRhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6bWFrZVN0b3JlRGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkNhY2hlOjpzdG9yZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OkVudHJ5OjpFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmFz
SlNPTik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
aDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6dGltZVN0YW1wKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpkZWNvZGVSZWNvcmRNZXRhRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6ZGVjb2RlUmVjb3JkKToKKworICAgICAgICAgICAg
U2FuaXR5IGNoZWNrIHRoZSB0aW1lc3RhbXAgb24gZGVjb2RlLgorCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6ZW5jb2RlUmVjb3JkTWV0YURhdGEpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OmVuY29kZVJlY29yZEhlYWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6U3RvcmFnZTo6dHJhdmVyc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6Omxhc3RNb2RpZmllZERhdGVNUyk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6Omxhc3RNb2RpZmllZERhdGUpOiBEZWxldGVkLgorCiAyMDE1
LTA0LTAxICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTbWFydCBtYWduaWZpY2F0aW9uIGdlc3R1cmUgc29tZXRpbWVzIHNob290cyB0byB0aGUg
bWlkZGxlIG9mIHRoZSBwYWdlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDE4MjI0MSkK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxOCw5ICszMTgsOSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hCiAgICAgICAgIGJvb2wgYWxsb3dTdGFsZSA9IG9yaWdpbmFs
UmVxdWVzdCgpLmNhY2hlUG9saWN5KCkgPj0gUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQ7CiAgICAg
ICAgIGJvb2wgaGFzQ2FjaGVhYmxlUmVkaXJlY3QgPSBtX3Jlc3BvbnNlLmlzSFRUUCgpICYmIFdl
YkNvcmU6OnJlZGlyZWN0Q2hhaW5BbGxvd3NSZXVzZShtX3JlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1
cywgYWxsb3dTdGFsZSA/IFdlYkNvcmU6OlJldXNlRXhwaXJlZFJlZGlyZWN0aW9uIDogV2ViQ29y
ZTo6RG9Ob3RSZXVzZUV4cGlyZWRSZWRpcmVjdGlvbik7CiAgICAgICAgIGlmIChoYXNDYWNoZWFi
bGVSZWRpcmVjdCAmJiBtX3JlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5zdGF0dXMgPT0gUmVkaXJl
Y3RDaGFpbkNhY2hlU3RhdHVzOjpDYWNoZWRSZWRpcmVjdGlvbikgewotICAgICAgICAgICAgLy8g
RklYTUU6IENhY2hlIHRoZSBhY3R1YWwgcmVkaXJlY3RzIGluc3RlYWQgb2YgdGhlIGVuZCByZXN1
bHQuCi0gICAgICAgICAgICBkb3VibGUgbm93ID0gY3VycmVudFRpbWUoKTsKLSAgICAgICAgICAg
IGRvdWJsZSByZXNwb25zZUVuZE9mVmFsaWRpdHkgPSBub3cgKyBXZWJDb3JlOjpjb21wdXRlRnJl
c2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KG1fcmVzcG9uc2UsIG5vdykgLSBXZWJDb3JlOjpj
b21wdXRlQ3VycmVudEFnZShtX3Jlc3BvbnNlLCBub3cpOworICAgICAgICAgICAgLy8gTWF5YmUg
d2Ugc2hvdWxkIGNhY2hlIHRoZSBhY3R1YWwgcmVkaXJlY3RzIGluc3RlYWQgb2YgdGhlIGVuZCBy
ZXN1bHQ/CisgICAgICAgICAgICBhdXRvIG5vdyA9IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
Om5vdygpOworICAgICAgICAgICAgYXV0byByZXNwb25zZUVuZE9mVmFsaWRpdHkgPSBub3cgKyBX
ZWJDb3JlOjpjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KG1fcmVzcG9uc2Us
IG5vdykgLSBXZWJDb3JlOjpjb21wdXRlQ3VycmVudEFnZShtX3Jlc3BvbnNlLCBub3cpOwogICAg
ICAgICAgICAgaGFzQ2FjaGVhYmxlUmVkaXJlY3QgPSByZXNwb25zZUVuZE9mVmFsaWRpdHkgPD0g
bV9yZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMuZW5kT2ZWYWxpZGl0eTsKICAgICAgICAgfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCwxNyAr
MTUwLDE2IEBAIHN0YXRpYyBib29sIGNhY2hlUG9saWN5QWxsb3dzRXhwaXJlZChXZWIKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIHJlc3BvbnNlSGFzRXhwaXJlZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgc3RkOjpjaHJvbm86Om1pbGxpc2Vj
b25kcyB0aW1lc3RhbXAsIGRvdWJsZSBtYXhTdGFsZSkKK3N0YXRpYyBib29sIHJlc3BvbnNlSGFz
RXhwaXJlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lc3RhbXAsIE9wdGlvbmFsPHN0ZDo6
Y2hyb25vOjptaWNyb3NlY29uZHM+IG1heFN0YWxlKQogewogICAgIGlmIChyZXNwb25zZS5jYWNo
ZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBh
dXRvIGRvdWJsZVRpbWVTdGFtcCA9IHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KHRpbWVz
dGFtcCk7Ci0gICAgZG91YmxlIGFnZSA9IFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKHJlc3Bv
bnNlLCBkb3VibGVUaW1lU3RhbXAuY291bnQoKSk7Ci0gICAgZG91YmxlIGxpZmV0aW1lID0gV2Vi
Q29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShyZXNwb25zZSwgZG91
YmxlVGltZVN0YW1wLmNvdW50KCkpOworICAgIGF1dG8gYWdlID0gV2ViQ29yZTo6Y29tcHV0ZUN1
cnJlbnRBZ2UocmVzcG9uc2UsIHRpbWVzdGFtcCk7CisgICAgYXV0byBsaWZldGltZSA9IFdlYkNv
cmU6OmNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkocmVzcG9uc2UsIHRpbWVz
dGFtcCk7CiAKLSAgICBtYXhTdGFsZSA9IHN0ZDo6aXNuYW4obWF4U3RhbGUpID8gMCA6IG1heFN0
YWxlOwotICAgIGJvb2wgaGFzRXhwaXJlZCA9IGFnZSAtIGxpZmV0aW1lID4gbWF4U3RhbGU7Cisg
ICAgYXV0byBtYXhpbXVtU3RhbGVuZXNzID0gbWF4U3RhbGUgPyBtYXhTdGFsZS52YWx1ZSgpIDog
c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kczo6emVybygpOworICAgIGJvb2wgaGFzRXhwaXJlZCA9
IGFnZSAtIGxpZmV0aW1lID4gbWF4aW11bVN0YWxlbmVzczsKIAogI2lmbmRlZiBMT0dfRElTQUJM
RUQKICAgICBpZiAoaGFzRXhwaXJlZCkKQEAgLTE3MCwxNCArMTY5LDE2IEBAIHN0YXRpYyBib29s
IHJlc3BvbnNlSGFzRXhwaXJlZChjb25zdCBXZWIKICAgICByZXR1cm4gaGFzRXhwaXJlZDsKIH0K
IAotc3RhdGljIGJvb2wgcmVzcG9uc2VOZWVkc1JldmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVzdGFtcCkKK3N0YXRpYyBi
b29sIHJlc3BvbnNlTmVlZHNSZXZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lc3RhbXApCiB7CiAgICAg
YXV0byByZXF1ZXN0RGlyZWN0aXZlcyA9IFdlYkNvcmU6OnBhcnNlQ2FjaGVDb250cm9sRGlyZWN0
aXZlcyhyZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSk7CiAgICAgaWYgKHJlcXVlc3REaXJlY3Rp
dmVzLm5vQ2FjaGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIC8vIEZvciByZXF1ZXN0cyB3
ZSBpZ25vcmUgbWF4LWFnZSB2YWx1ZXMgb3RoZXIgdGhhbiB6ZXJvLgotICAgIGlmIChyZXF1ZXN0
RGlyZWN0aXZlcy5tYXhBZ2UgPT0gMCkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHJl
cXVlc3REaXJlY3RpdmVzLm1heEFnZSkgeworICAgICAgICBpZiAocmVxdWVzdERpcmVjdGl2ZXMu
bWF4QWdlLnZhbHVlKCkgPT0gc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kczo6emVybygpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCiAgICAgcmV0dXJuIHJlc3BvbnNlSGFzRXhw
aXJlZChyZXNwb25zZSwgdGltZXN0YW1wLCByZXF1ZXN0RGlyZWN0aXZlcy5tYXhTdGFsZSk7CiB9
CkBAIC0yNjksNyArMjcwLDcgQEAgc3RhdGljIFN0b3JlRGVjaXNpb24gbWFrZVN0b3JlRGVjaXNp
b24oYwogCiAgICAgaWYgKCFpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQocmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSkpIHsKICAgICAgICAgLy8gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0
bWwvcmZjNzIzNCNzZWN0aW9uLTQuMy4yCi0gICAgICAgIGJvb2wgaGFzRXhwaXJhdGlvbkhlYWRl
cnMgPSBzdGQ6OmlzZmluaXRlKHJlc3BvbnNlLmV4cGlyZXMoKSkgfHwgc3RkOjppc2Zpbml0ZShy
ZXNwb25zZS5jYWNoZUNvbnRyb2xNYXhBZ2UoKSk7CisgICAgICAgIGJvb2wgaGFzRXhwaXJhdGlv
bkhlYWRlcnMgPSByZXNwb25zZS5leHBpcmVzKCkgfHwgcmVzcG9uc2UuY2FjaGVDb250cm9sTWF4
QWdlKCk7CiAgICAgICAgIGJvb2wgZXhwaXJhdGlvbkhlYWRlcnNBbGxvd0NhY2hpbmcgPSBpc1N0
YXR1c0NvZGVQb3RlbnRpYWxseUNhY2hlYWJsZShyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSAm
JiBoYXNFeHBpcmF0aW9uSGVhZGVyczsKICAgICAgICAgaWYgKCFleHBpcmF0aW9uSGVhZGVyc0Fs
bG93Q2FjaGluZykKICAgICAgICAgICAgIHJldHVybiBTdG9yZURlY2lzaW9uOjpOb0R1ZVRvSFRU
UFN0YXR1c0NvZGU7CkBAIC0yNzgsOCArMjc5LDggQEAgc3RhdGljIFN0b3JlRGVjaXNpb24gbWFr
ZVN0b3JlRGVjaXNpb24oYwogICAgIC8vIE1haW4gcmVzb3VyY2UgaGFzIFJlc291cmNlTG9hZFBy
aW9yaXR5VmVyeUhpZ2guCiAgICAgYm9vbCBzdG9yZVVuY29uZGl0aW9uYWxseUZvckhpc3RvcnlO
YXZpZ2F0aW9uID0gb3JpZ2luYWxSZXF1ZXN0LnByaW9yaXR5KCkgPT0gV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkUHJpb3JpdHlWZXJ5SGlnaDsKICAgICBpZiAoIXN0b3JlVW5jb25kaXRpb25hbGx5Rm9y
SGlzdG9yeU5hdmlnYXRpb24pIHsKLSAgICAgICAgYXV0byBjdXJyZW50VGltZSA9IHN0ZDo6Y2hy
b25vOjpkdXJhdGlvbjxkb3VibGU+KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpLnRp
bWVfc2luY2VfZXBvY2goKSk7Ci0gICAgICAgIGJvb2wgaGFzTm9uWmVyb0xpZmV0aW1lID0gIXJl
c3BvbnNlLmNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgpICYmIFdlYkNvcmU6OmNvbXB1dGVG
cmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkocmVzcG9uc2UsIGN1cnJlbnRUaW1lLmNvdW50
KCkpID4gMDsKKyAgICAgICAgYXV0byBub3cgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpu
b3coKTsKKyAgICAgICAgYm9vbCBoYXNOb25aZXJvTGlmZXRpbWUgPSAhcmVzcG9uc2UuY2FjaGVD
b250cm9sQ29udGFpbnNOb0NhY2hlKCkgJiYgV2ViQ29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0
aW1lRm9ySFRUUEZhbWlseShyZXNwb25zZSwgbm93KSA+IHN0ZDo6Y2hyb25vOjptaWNyb3NlY29u
ZHM6Onplcm8oKTsKIAogICAgICAgICBib29sIHBvc3NpYmx5UmV1c2FibGUgPSByZXNwb25zZS5o
YXNDYWNoZVZhbGlkYXRvckZpZWxkcygpIHx8IGhhc05vblplcm9MaWZldGltZTsKICAgICAgICAg
aWYgKCFwb3NzaWJseVJldXNhYmxlKQpAQCAtMzU4LDcgKzM1OSw2IEBAIHZvaWQgQ2FjaGU6OnN0
b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmMKICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdv
cmtQcm9jZXNzKSBzdG9yaW5nICVzLCBwYXJ0aXRpb24gJXMiLCBvcmlnaW5hbFJlcXVlc3QudXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCBvcmlnaW5hbFJlcXVlc3QuY2FjaGVQYXJ0aXRp
b24oKS5sYXRpbjEoKS5kYXRhKCkpOwogCiAgICAgU3RvcmVEZWNpc2lvbiBzdG9yZURlY2lzaW9u
ID0gbWFrZVN0b3JlRGVjaXNpb24ob3JpZ2luYWxSZXF1ZXN0LCByZXNwb25zZSk7Ci0KICAgICBp
ZiAoc3RvcmVEZWNpc2lvbiAhPSBTdG9yZURlY2lzaW9uOjpZZXMpIHsKICAgICAgICAgTE9HKE5l
dHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgZGlkbid0IHN0b3JlLCBzdG9yZURlY2lzaW9u
PSVkIiwgc3RvcmVEZWNpc2lvbik7CiAgICAgICAgIGlmIChtX3N0YXRpc3RpY3MpIHsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5jcHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAogRW50cnk6OkVudHJ5
KGNvbnN0IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQogICAgIDog
bV9rZXkoa2V5KQotICAgICwgbV90aW1lU3RhbXAoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8
c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4oc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93
KCkudGltZV9zaW5jZV9lcG9jaCgpKSkKKyAgICAsIG1fdGltZVN0YW1wKHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6Om5vdygpKQogICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKICAgICAsIG1f
dmFyeWluZ1JlcXVlc3RIZWFkZXJzKHZhcnlpbmdSZXF1ZXN0SGVhZGVycykKICAgICAsIG1fYnVm
ZmVyKFdURjo6bW92ZShidWZmZXIpKQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgRW50cnk6OmFz
SlNPTihTdHJpbmdCdWlsZGVyJiBqc29uLCAKICAgICBKU0M6OmFwcGVuZFF1b3RlZEpTT05TdHJp
bmdUb0J1aWxkZXIoanNvbiwgbV9rZXkucGFydGl0aW9uKCkpOwogICAgIGpzb24uYXBwZW5kTGl0
ZXJhbCgiLFxuIik7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcInRpbWVzdGFtcFwiOiAiKTsK
LSAgICBqc29uLmFwcGVuZE51bWJlcihtX3RpbWVTdGFtcC5jb3VudCgpKTsKKyAgICBqc29uLmFw
cGVuZE51bWJlcihzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlz
ZWNvbmRzPihtX3RpbWVTdGFtcC50aW1lX3NpbmNlX2Vwb2NoKCkpLmNvdW50KCkpOwogICAgIGpz
b24uYXBwZW5kTGl0ZXJhbCgiLFxuIik7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcIlVSTFwi
OiAiKTsKICAgICBKU0M6OmFwcGVuZFF1b3RlZEpTT05TdHJpbmdUb0J1aWxkZXIoanNvbiwgbV9y
ZXNwb25zZS51cmwoKS5zdHJpbmcoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgJKHJldmlzaW9uIDE4
MjI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3Rv
cmFnZTo6UmVjb3JkJik7CiAKICAgICBjb25zdCBLZXkmIGtleSgpIGNvbnN0IHsgcmV0dXJuIG1f
a2V5OyB9Ci0gICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lU3RhbXAoKSBjb25zdCB7
IHJldHVybiBtX3RpbWVTdGFtcDsgfQorICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQgdGltZVN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lU3RhbXA7IH0KICAgICBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzcG9uc2U7IH0KICAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5n
Pj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyeWluZ1JlcXVl
c3RIZWFkZXJzOyB9CiAKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluaXRp
YWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpIGNvbnN0OwogCiAgICAgS2V5IG1fa2V5Owot
ICAgIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgbV90aW1lU3RhbXA7CisgICAgc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtX3RpbWVTdGFtcDsKICAgICBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IFN0cmluZz4+IG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3
ICsxNDIsOCBAQCBzdHJ1Y3QgUmVjb3JkTWV0YURhdGEgewogCiAgICAgdW5zaWduZWQgY2FjaGVT
dG9yYWdlVmVyc2lvbjsKICAgICBLZXkga2V5OwotICAgIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29u
ZHMgdGltZVN0YW1wOworICAgIC8vIEZJWE1FOiBBZGQgZW5jb2Rlci9kZWNvZGVyIGZvciB0aW1l
X3BvaW50LgorICAgIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgZXBvY2hSZWxhdGl2ZVRpbWVT
dGFtcDsKICAgICB1bnNpZ25lZCBoZWFkZXJDaGVja3N1bTsKICAgICB1aW50NjRfdCBoZWFkZXJP
ZmZzZXQ7CiAgICAgdWludDY0X3QgaGVhZGVyU2l6ZTsKQEAgLTE2MCw3ICsxNjEsNyBAQCBzdGF0
aWMgYm9vbCBkZWNvZGVSZWNvcmRNZXRhRGF0YShSZWNvcmRNCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWV0YURhdGEua2V5KSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXRhRGF0
YS50aW1lU3RhbXApKQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1ldGFEYXRhLmVwb2No
UmVsYXRpdmVUaW1lU3RhbXApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKG1ldGFEYXRhLmhlYWRlckNoZWNrc3VtKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTIxNSw2ICsyMTYsMTEgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxTdG9yYWdlOjpSZWNvcmQ+IAogICAgIGlmIChtZXRhRGF0YS5rZXkgIT0ga2V5KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAorICAgIC8vIFNhbml0eSBjaGVjayBhZ2FpbnN0IHRpbWVTdGFt
cHMgaW4gZnV0dXJlLgorICAgIGF1dG8gdGltZVN0YW1wID0gc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludChtZXRhRGF0YS5lcG9jaFJlbGF0aXZlVGltZVN0YW1wKTsKKyAgICBp
ZiAodGltZVN0YW1wID4gc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCiAgICAgRGF0YSBib2R5RGF0YTsKICAgICBpZiAobWV0YURhdGEu
Ym9keVNpemUpIHsKICAgICAgICAgaWYgKG1ldGFEYXRhLmJvZHlPZmZzZXQgKyBtZXRhRGF0YS5i
b2R5U2l6ZSAhPSBmaWxlRGF0YS5zaXplKCkpCkBAIC0yMzQsNyArMjQwLDcgQEAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxTdG9yYWdlOjpSZWNvcmQ+IAogCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8U3RvcmFnZTo6UmVjb3JkPihTdG9yYWdlOjpSZWNvcmQgewogICAgICAgICBtZXRhRGF0
YS5rZXksCi0gICAgICAgIG1ldGFEYXRhLnRpbWVTdGFtcCwKKyAgICAgICAgdGltZVN0YW1wLAog
ICAgICAgICBoZWFkZXJEYXRhLAogICAgICAgICBib2R5RGF0YQogICAgIH0pOwpAQCAtMjQ2LDcg
KzI1Miw3IEBAIHN0YXRpYyBEYXRhIGVuY29kZVJlY29yZE1ldGFEYXRhKGNvbnN0IFIKIAogICAg
IGVuY29kZXIgPDwgbWV0YURhdGEuY2FjaGVTdG9yYWdlVmVyc2lvbjsKICAgICBlbmNvZGVyIDw8
IG1ldGFEYXRhLmtleTsKLSAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLnRpbWVTdGFtcDsKKyAgICBl
bmNvZGVyIDw8IG1ldGFEYXRhLmVwb2NoUmVsYXRpdmVUaW1lU3RhbXA7CiAgICAgZW5jb2RlciA8
PCBtZXRhRGF0YS5oZWFkZXJDaGVja3N1bTsKICAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLmhlYWRl
clNpemU7CiAgICAgZW5jb2RlciA8PCBtZXRhRGF0YS5ib2R5Q2hlY2tzdW07CkBAIC0yNjAsNyAr
MjY2LDcgQEAgc3RhdGljIERhdGEgZW5jb2RlUmVjb3JkTWV0YURhdGEoY29uc3QgUgogc3RhdGlj
IERhdGEgZW5jb2RlUmVjb3JkSGVhZGVyKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgcmVjb3JkKQog
ewogICAgIFJlY29yZE1ldGFEYXRhIG1ldGFEYXRhKHJlY29yZC5rZXkpOwotICAgIG1ldGFEYXRh
LnRpbWVTdGFtcCA9IHJlY29yZC50aW1lU3RhbXA7CisgICAgbWV0YURhdGEuZXBvY2hSZWxhdGl2
ZVRpbWVTdGFtcCA9IHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxs
aXNlY29uZHM+KHJlY29yZC50aW1lU3RhbXAudGltZV9zaW5jZV9lcG9jaCgpKTsKICAgICBtZXRh
RGF0YS5oZWFkZXJDaGVja3N1bSA9IGhhc2hEYXRhKHJlY29yZC5oZWFkZXIpOwogICAgIG1ldGFE
YXRhLmhlYWRlclNpemUgPSByZWNvcmQuaGVhZGVyLnNpemUoKTsKICAgICBtZXRhRGF0YS5ib2R5
Q2hlY2tzdW0gPSBoYXNoRGF0YShyZWNvcmQuYm9keSk7CkBAIC00NDYsNyArNDUyLDcgQEAgdm9p
ZCBTdG9yYWdlOjp0cmF2ZXJzZShUcmF2ZXJzZUZsYWdzIGZsYQogICAgICAgICAgICAgICAgIFJl
Y29yZE1ldGFEYXRhIG1ldGFEYXRhOwogICAgICAgICAgICAgICAgIERhdGEgaGVhZGVyRGF0YTsK
ICAgICAgICAgICAgICAgICBpZiAoZGVjb2RlUmVjb3JkSGVhZGVyKGZpbGVEYXRhLCBtZXRhRGF0
YSwgaGVhZGVyRGF0YSkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVjb3JkIHJlY29yZCB7IG1l
dGFEYXRhLmtleSwgbWV0YURhdGEudGltZVN0YW1wLCBoZWFkZXJEYXRhLCB7IH0gfTsKKyAgICAg
ICAgICAgICAgICAgICAgUmVjb3JkIHJlY29yZCB7IG1ldGFEYXRhLmtleSwgc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludChtZXRhRGF0YS5lcG9jaFJlbGF0aXZlVGltZVN0YW1w
KSwgaGVhZGVyRGF0YSwgeyB9IH07CiAgICAgICAgICAgICAgICAgICAgIGluZm8uYm9keVNpemUg
PSBtZXRhRGF0YS5ib2R5U2l6ZTsKICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2VIYW5kbGVy
KCZyZWNvcmQsIGluZm8pOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdl
LmgJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBA
QCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgUmVjb3JkIHsKICAgICAgICAgS2V5IGtleTsKLSAgICAg
ICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lU3RhbXA7CisgICAgICAgIHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZVN0YW1wOwogICAgICAgICBEYXRhIGhl
YWRlcjsKICAgICAgICAgRGF0YSBib2R5OwogICAgIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAxODIyNDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIwMSwxMyArMjAxLDEzIEBAIHN0YXRpYyBTdHJpbmcgYnVpbGRIVFRQ
SGVhZGVycyhjb25zdCBSZXMKICAgICByZXR1cm4gaGVhZGVyczsKIH0KIAotc3RhdGljIHVpbnQz
Ml90IGxhc3RNb2RpZmllZERhdGUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitz
dGF0aWMgdWludDMyX3QgbGFzdE1vZGlmaWVkRGF0ZU1TKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewotICAgIGRvdWJsZSBsYXN0TW9kaWZpZWQgPSByZXNwb25zZS5sYXN0TW9k
aWZpZWQoKTsKLSAgICBpZiAoIXN0ZDo6aXNmaW5pdGUobGFzdE1vZGlmaWVkKSkKKyAgICBhdXRv
IGxhc3RNb2RpZmllZCA9IHJlc3BvbnNlLmxhc3RNb2RpZmllZCgpOworICAgIGlmICghbGFzdE1v
ZGlmaWVkKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBsYXN0TW9kaWZpZWQgKiAx
MDAwOworICAgIHJldHVybiBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6
bWlsbGlzZWNvbmRzPihsYXN0TW9kaWZpZWQudmFsdWUoKS50aW1lX3NpbmNlX2Vwb2NoKCkpLmNv
dW50KCk7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVj
ZWl2ZVJlc3BvCiAgICAgaWYgKGV4cGVjdGVkQ29udGVudExlbmd0aCA+IDApCiAgICAgICAgIHN0
cmVhbUxlbmd0aCA9IGV4cGVjdGVkQ29udGVudExlbmd0aDsKIAotICAgIG1fcGx1Z2luVmlldy0+
bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShtX3N0cmVhbUlELCByZXNwb25zZVVS
TCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhl
YWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgIG1fcGx1Z2luVmlldy0+
bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShtX3N0cmVhbUlELCByZXNwb25zZVVS
TCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBtaW1lVHlwZSwg
aGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKIHZvaWQgUGx1Z2lu
Vmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcios
IGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQg
UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVSZXMKICAgICBpZiAoZXhwZWN0ZWRDb250
ZW50TGVuZ3RoID4gMCkKICAgICAgICAgc3RyZWFtTGVuZ3RoID0gZXhwZWN0ZWRDb250ZW50TGVu
Z3RoOwogCi0gICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShyZXNw
b25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlKHJlc3BvbnNlKSwgbWltZVR5
cGUsIGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgIG1fcGx1Z2lu
LT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0
aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3Bv
bnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCiB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkK
</data>
<flag name="review"
          id="274784"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249970</attachid>
            <date>2015-04-02 05:13:39 -0700</date>
            <delta_ts>2015-04-02 05:32:22 -0700</delta_ts>
            <desc>non-llvm build fixes</desc>
            <filename>response-std-chrono-2.patch</filename>
            <type>text/plain</type>
            <size>41145</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjI1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE1LTA0LTAxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ugc3RkOjpjaHJvbm8gdHlw
ZXMgdG8gcmVwcmVzZW50IHRpbWUgaW4gcmVzcG9uc2UgYW5kIGNhY2hlIGNsYXNzZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzMxNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgVXNlIHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdG8gcmVwcmVzZW50IGNsb2NrIHRpbWVzIGFuZCBz
dGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIHRvCisgICAgICAgIHJlcHJlc2VudCBkdXJhdGlvbnMu
IEFsc28gdXNlIFdURjo6T3B0aW9uYWwgZm9yIG9wdGlvbmFsIHZhbHVlcyAoaW5zdGVhZCBvZiBj
b2RpbmcgdGhlbSBhcyBOYU5zKS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bGFzdE1vZGlmaWVkKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OkNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpm
cmVzaG5lc3NMaWZldGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVz
cG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
UmVzcG9uc2VBZnRlclJldmFsaWRhdGlvbik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseSk6CisgICAgICAgIChX
ZWJDb3JlOjp1cGRhdGVSZWRpcmVjdENoYWluU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OnJl
ZGlyZWN0Q2hhaW5BbGxvd3NSZXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNhY2hlQ29u
dHJvbERpcmVjdGl2ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXM6OlJlZGly
ZWN0Q2hhaW5DYWNoZVN0YXR1cyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUVFBEYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlRGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291
cmNlUmVzcG9uc2VCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNl
OjpjYWNoZUNvbnRyb2xNYXhBZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VEYXRlVmFsdWVJ
bkhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBpcmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXN0TW9kaWZpZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKwogMjAxNS0wNC0wMSAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhlIGlPUyBi
dWlsZCBhZnRlciByMTgyMjQwLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAxODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MTQyLDExICs0MTQyLDEwIEBAIFN0cmluZyBEb2N1bWVudDo6bGFzdE1vZGlmaWVk
KCkgY29uc3QKICAgICBEYXRlQ29tcG9uZW50cyBkYXRlOwogICAgIGJvb2wgZm91bmREYXRlID0g
ZmFsc2U7CiAgICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgU3RyaW5nIGh0dHBMYXN0TW9kaWZp
ZWQ7Ci0gICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBsb2FkZXIo
KSkgCi0gICAgICAgICAgICBodHRwTGFzdE1vZGlmaWVkID0gZG9jdW1lbnRMb2FkZXItPnJlc3Bv
bnNlKCkuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpMYXN0TW9kaWZpZWQpOwotICAg
ICAgICBpZiAoIWh0dHBMYXN0TW9kaWZpZWQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBkYXRl
LnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlVGltZShwYXJzZURhdGUoaHR0cExhc3RN
b2RpZmllZCkpOworICAgICAgICBhdXRvIGxhc3RNb2RpZmllZERhdGUgPSBsb2FkZXIoKSA/IGxv
YWRlcigpLT5yZXNwb25zZSgpLmxhc3RNb2RpZmllZCgpIDogTnVsbG9wdDsKKyAgICAgICAgaWYg
KGxhc3RNb2RpZmllZERhdGUpIHsKKyAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNo
cm9ubzsKKyAgICAgICAgICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGVU
aW1lKGR1cmF0aW9uX2Nhc3Q8bWlsbGlzZWNvbmRzPihsYXN0TW9kaWZpZWREYXRlLnZhbHVlKCku
dGltZV9zaW5jZV9lcG9jaCgpKS5jb3VudCgpKTsKICAgICAgICAgICAgIGZvdW5kRGF0ZSA9IHRy
dWU7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
Niw3ICsxMTYsNyBAQCBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UoY29uc3QgUmVzCiAg
ICAgLCBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lcigqdGhpcywgJkNhY2hlZFJlc291cmNlOjpk
ZWNvZGVkRGF0YURlbGV0aW9uVGltZXJGaXJlZCwgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRl
cnZhbEZvclJlc291cmNlVHlwZSh0eXBlKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkK
ICAgICAsIG1fbG9hZFByaW9yaXR5KGRlZmF1bHRQcmlvcml0eUZvclJlc291cmNlVHlwZSh0eXBl
KSkKLSAgICAsIG1fcmVzcG9uc2VUaW1lc3RhbXAoY3VycmVudFRpbWUoKSkKKyAgICAsIG1fcmVz
cG9uc2VUaW1lc3RhbXAoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkpCiAgICAgLCBt
X2xhc3REZWNvZGVkQWNjZXNzVGltZSgwKQogICAgICwgbV9sb2FkRmluaXNoVGltZSgwKQogICAg
ICwgbV9lbmNvZGVkU2l6ZSgwKQpAQCAtMzQ3LDE2ICszNDcsMTYgQEAgYm9vbCBDYWNoZWRSZXNv
dXJjZTo6aXNFeHBpcmVkKCkgY29uc3QKICAgICByZXR1cm4gY29tcHV0ZUN1cnJlbnRBZ2UobV9y
ZXNwb25zZSwgbV9yZXNwb25zZVRpbWVzdGFtcCkgPiBmcmVzaG5lc3NMaWZldGltZShtX3Jlc3Bv
bnNlKTsKIH0KIAotZG91YmxlIENhY2hlZFJlc291cmNlOjpmcmVzaG5lc3NMaWZldGltZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgY29uc3QKK3N0ZDo6Y2hyb25vOjptaWNyb3Nl
Y29uZHMgQ2FjaGVkUmVzb3VyY2U6OmZyZXNobmVzc0xpZmV0aW1lKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKSBjb25zdAogewogICAgIGlmICghcmVzcG9uc2UudXJsKCkucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgIC8vIERvbid0IGNhY2hlIG5vbi1IVFRQIG1h
aW4gcmVzb3VyY2VzIHNpbmNlIHdlIGNhbid0IGNoZWNrIGZvciBmcmVzaG5lc3MuCiAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGNhY2hlIHN1YnJlc291cmNlcyBlaXRoZXIsIGJ1dCB3
aGVuIHdlIHRyaWVkIHRoaXMKICAgICAgICAgLy8gaXQgY2F1c2VkIHBlcmZvcm1hbmNlIGFuZCBm
bGFraW5lc3MgaXNzdWVzIGluIG91ciB0ZXN0IGluZnJhc3RydWN0dXJlLgogICAgICAgICBpZiAo
bV90eXBlID09IE1haW5SZXNvdXJjZSAmJiAhU2NoZW1lUmVnaXN0cnk6OnNob3VsZENhY2hlUmVz
cG9uc2VzRnJvbVVSTFNjaGVtZUluZGVmaW5pdGVseShyZXNwb25zZS51cmwoKS5wcm90b2NvbCgp
KSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Y2hyb25v
OjptaWNyb3NlY29uZHM6Onplcm8oKTsKIAotICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjptYXgoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjptaWNyb3Nl
Y29uZHM6Om1heCgpOwogICAgIH0KIAogICAgIHJldHVybiBjb21wdXRlRnJlc2huZXNzTGlmZXRp
bWVGb3JIVFRQRmFtaWx5KHJlc3BvbnNlLCBtX3Jlc3BvbnNlVGltZXN0YW1wKTsKQEAgLTM3Myw3
ICszNzMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiB2b2lk
IENhY2hlZFJlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewogICAgIHNldFJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICBtX3Jlc3BvbnNl
VGltZXN0YW1wID0gY3VycmVudFRpbWUoKTsKKyAgICBtX3Jlc3BvbnNlVGltZXN0YW1wID0gc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCk7CiAgICAgU3RyaW5nIGVuY29kaW5nID0gcmVz
cG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOwogICAgIGlmICghZW5jb2RpbmcuaXNOdWxsKCkpCiAg
ICAgICAgIHNldEVuY29kaW5nKGVuY29kaW5nKTsKQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIENh
Y2hlZFJlc291cmNlOjpzd2l0Y2hDbGllbnRzVG9SZXZhCiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZVJlc3BvbnNlQWZ0ZXJSZXZhbGlkYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
dmFsaWRhdGluZ1Jlc3BvbnNlKQogewotICAgIG1fcmVzcG9uc2VUaW1lc3RhbXAgPSBjdXJyZW50
VGltZSgpOworICAgIG1fcmVzcG9uc2VUaW1lc3RhbXAgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjpub3coKTsKIAogICAgIHVwZGF0ZVJlc3BvbnNlSGVhZGVyc0FmdGVyUmV2YWxpZGF0aW9u
KG1fcmVzcG9uc2UsIHZhbGlkYXRpbmdSZXNwb25zZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMTgyMjQxKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4MCw3ICsyODAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjaGVja05v
dGlmeSgpOwogICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgZG91YmxlIGZyZXNobmVzc0xpZmV0aW1lKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBjb25zdDsKKyAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRz
IGZyZXNobmVzc0xpZmV0aW1lKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBjb25zdDsKIAogICAg
IHZvaWQgYWRkQWRkaXRpb25hbFJlcXVlc3RIZWFkZXJzKENhY2hlZFJlc291cmNlTG9hZGVyJik7
CiAgICAgdm9pZCBmYWlsQmVmb3JlU3RhcnRpbmcoKTsKQEAgLTI4OSw3ICsyODksNyBAQCBwcml2
YXRlOgogICAgIFNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBTdHJpbmcgbV9hY2NlcHQ7CiAg
ICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgbV9sb2FkUHJpb3JpdHk7Ci0gICAgZG91YmxlIG1fcmVz
cG9uc2VUaW1lc3RhbXA7CisgICAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dCBtX3Jlc3BvbnNlVGltZXN0YW1wOwogCiAgICAgU3RyaW5nIG1fZnJhZ21lbnRJZGVudGlmaWVy
Rm9yUmVxdWVzdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNo
ZVZhbGlkYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04OSw0OSArODksNTYgQEAgdm9pZCB1cGRhdGVSZXNwb25zZUhlYWRlcnNBZnRlclJldmFs
aWRhdAogICAgIH0KIH0KIAotZG91YmxlIGNvbXB1dGVDdXJyZW50QWdlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXApCitzdGQ6OmNocm9u
bzo6bWljcm9zZWNvbmRzIGNvbXB1dGVDdXJyZW50QWdlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHJlc3BvbnNl
VGltZXN0YW1wKQogeworICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKKwogICAgIC8v
IFJGQzI2MTYgMTMuMi4zCiAgICAgLy8gTm8gY29tcGVuc2F0aW9uIGZvciBsYXRlbmN5IGFzIHRo
YXQgaXMgbm90IHRlcnJpYmx5IGltcG9ydGFudCBpbiBwcmFjdGljZQotICAgIGRvdWJsZSBkYXRl
VmFsdWUgPSByZXNwb25zZS5kYXRlKCk7Ci0gICAgZG91YmxlIGFwcGFyZW50QWdlID0gc3RkOjpp
c2Zpbml0ZShkYXRlVmFsdWUpID8gc3RkOjptYXgoMC4sIHJlc3BvbnNlVGltZXN0YW1wIC0gZGF0
ZVZhbHVlKSA6IDA7Ci0gICAgZG91YmxlIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCk7Ci0gICAg
ZG91YmxlIGNvcnJlY3RlZFJlY2VpdmVkQWdlID0gc3RkOjppc2Zpbml0ZShhZ2VWYWx1ZSkgPyBz
dGQ6Om1heChhcHBhcmVudEFnZSwgYWdlVmFsdWUpIDogYXBwYXJlbnRBZ2U7Ci0gICAgZG91Ymxl
IHJlc2lkZW50VGltZSA9IGN1cnJlbnRUaW1lKCkgLSByZXNwb25zZVRpbWVzdGFtcDsKKyAgICBh
dXRvIGRhdGVWYWx1ZSA9IHJlc3BvbnNlLmRhdGUoKTsKKyAgICBhdXRvIGFwcGFyZW50QWdlID0g
ZGF0ZVZhbHVlID8gc3RkOjptYXg8bWljcm9zZWNvbmRzPihtaWNyb3NlY29uZHM6Onplcm8oKSwg
cmVzcG9uc2VUaW1lc3RhbXAgLSBkYXRlVmFsdWUudmFsdWUoKSkgOiBtaWNyb3NlY29uZHM6Onpl
cm8oKTsKKyAgICBhdXRvIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCk7CisgICAgYXV0byBjb3Jy
ZWN0ZWRSZWNlaXZlZEFnZSA9IGFnZVZhbHVlID8gc3RkOjptYXg8bWljcm9zZWNvbmRzPihhcHBh
cmVudEFnZSwgYWdlVmFsdWUudmFsdWUoKSkgOiBhcHBhcmVudEFnZTsKKyAgICBhdXRvIHJlc2lk
ZW50VGltZSA9IHN5c3RlbV9jbG9jazo6bm93KCkgLSByZXNwb25zZVRpbWVzdGFtcDsKICAgICBy
ZXR1cm4gY29ycmVjdGVkUmVjZWl2ZWRBZ2UgKyByZXNpZGVudFRpbWU7CiB9CiAKLWRvdWJsZSBj
b21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXApCitzdGQ6OmNocm9ubzo6bWlj
cm9zZWNvbmRzIGNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQgcmVzcG9uc2VUaW1lc3RhbXApCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hy
b25vOwogICAgIEFTU0VSVChyZXNwb25zZS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkp
OworCiAgICAgLy8gUkZDMjYxNiAxMy4yLjQKLSAgICBkb3VibGUgbWF4QWdlVmFsdWUgPSByZXNw
b25zZS5jYWNoZUNvbnRyb2xNYXhBZ2UoKTsKLSAgICBpZiAoc3RkOjppc2Zpbml0ZShtYXhBZ2VW
YWx1ZSkpCi0gICAgICAgIHJldHVybiBtYXhBZ2VWYWx1ZTsKLSAgICBkb3VibGUgZXhwaXJlc1Zh
bHVlID0gcmVzcG9uc2UuZXhwaXJlcygpOwotICAgIGRvdWJsZSBkYXRlVmFsdWUgPSByZXNwb25z
ZS5kYXRlKCk7Ci0gICAgZG91YmxlIGNyZWF0aW9uVGltZSA9IHN0ZDo6aXNmaW5pdGUoZGF0ZVZh
bHVlKSA/IGRhdGVWYWx1ZSA6IHJlc3BvbnNlVGltZXN0YW1wOwotICAgIGlmIChzdGQ6OmlzZmlu
aXRlKGV4cGlyZXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiBleHBpcmVzVmFsdWUgLSBjcmVhdGlv
blRpbWU7Ci0gICAgZG91YmxlIGxhc3RNb2RpZmllZFZhbHVlID0gcmVzcG9uc2UubGFzdE1vZGlm
aWVkKCk7Ci0gICAgaWYgKHN0ZDo6aXNmaW5pdGUobGFzdE1vZGlmaWVkVmFsdWUpKQotICAgICAg
ICByZXR1cm4gKGNyZWF0aW9uVGltZSAtIGxhc3RNb2RpZmllZFZhbHVlKSAqIDAuMTsKKyAgICBh
dXRvIG1heEFnZSA9IHJlc3BvbnNlLmNhY2hlQ29udHJvbE1heEFnZSgpOworICAgIGlmIChtYXhB
Z2UpCisgICAgICAgIHJldHVybiBtYXhBZ2UudmFsdWUoKTsKKyAgICBhdXRvIGV4cGlyZXMgPSBy
ZXNwb25zZS5leHBpcmVzKCk7CisgICAgYXV0byBkYXRlID0gcmVzcG9uc2UuZGF0ZSgpOworICAg
IGF1dG8gY3JlYXRpb25UaW1lID0gZGF0ZSA/IGRhdGUudmFsdWUoKSA6IHJlc3BvbnNlVGltZXN0
YW1wOworICAgIGlmIChleHBpcmVzKQorICAgICAgICByZXR1cm4gZHVyYXRpb25fY2FzdDxtaWNy
b3NlY29uZHM+KGV4cGlyZXMudmFsdWUoKSAtIGNyZWF0aW9uVGltZSk7CisgICAgYXV0byBsYXN0
TW9kaWZpZWQgPSByZXNwb25zZS5sYXN0TW9kaWZpZWQoKTsKKyAgICBpZiAobGFzdE1vZGlmaWVk
KQorICAgICAgICByZXR1cm4gZHVyYXRpb25fY2FzdDxtaWNyb3NlY29uZHM+KChjcmVhdGlvblRp
bWUgLSBsYXN0TW9kaWZpZWQudmFsdWUoKSkgKiAwLjEpOwogICAgIC8vIElmIG5vIGNhY2hlIGhl
YWRlcnMgYXJlIHByZXNlbnQsIHRoZSBzcGVjaWZpY2F0aW9uIGxlYXZlcyB0aGUgZGVjaXNpb24g
dG8gdGhlIFVBLiBPdGhlciBicm93c2VycyBzZWVtIHRvIG9wdCBmb3IgMC4KLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbWljcm9zZWNvbmRzOjp6ZXJvKCk7CiB9CiAKIHZvaWQgdXBkYXRlUmVk
aXJlY3RDaGFpblN0YXR1cyhSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMmIHJlZGlyZWN0Q2hhaW5D
YWNoZVN0YXR1cywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CisgICAgdXNp
bmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOworCiAgICAgaWYgKHJlZGlyZWN0Q2hhaW5DYWNoZVN0
YXR1cy5zdGF0dXMgPT0gUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzOjpOb3RDYWNoZWRSZWRpcmVj
dGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChyZXNwb25zZS5jYWNoZUNvbnRyb2xDb250
YWluc05vU3RvcmUoKSB8fCByZXNwb25zZS5jYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSB8
fCByZXNwb25zZS5jYWNoZUNvbnRyb2xDb250YWluc011c3RSZXZhbGlkYXRlKCkpIHsKICAgICAg
ICAgcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLnN0YXR1cyA9IFJlZGlyZWN0Q2hhaW5DYWNoZVN0
YXR1czo6Tm90Q2FjaGVkUmVkaXJlY3Rpb247CiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAg
ICByZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMuc3RhdHVzID0gUmVkaXJlY3RDaGFpbkNhY2hlU3Rh
dHVzOjpDYWNoZWRSZWRpcmVjdGlvbjsKLSAgICBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXAgPSBj
dXJyZW50VGltZSgpOworICAgIGF1dG8gcmVzcG9uc2VUaW1lc3RhbXAgPSBzeXN0ZW1fY2xvY2s6
Om5vdygpOwogICAgIC8vIFN0b3JlIHRoZSBuZWFyZXN0IGVuZCBvZiBjYWNoZSB2YWxpZGl0eSBk
YXRlCi0gICAgZG91YmxlIGVuZE9mVmFsaWRpdHkgPSByZXNwb25zZVRpbWVzdGFtcCArIGNvbXB1
dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkocmVzcG9uc2UsIHJlc3BvbnNlVGltZXN0
YW1wKSAtIGNvbXB1dGVDdXJyZW50QWdlKHJlc3BvbnNlLCByZXNwb25zZVRpbWVzdGFtcCk7Cisg
ICAgYXV0byBlbmRPZlZhbGlkaXR5ID0gcmVzcG9uc2VUaW1lc3RhbXAgKyBjb21wdXRlRnJlc2hu
ZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KHJlc3BvbnNlLCByZXNwb25zZVRpbWVzdGFtcCkgLSBj
b21wdXRlQ3VycmVudEFnZShyZXNwb25zZSwgcmVzcG9uc2VUaW1lc3RhbXApOwogICAgIHJlZGly
ZWN0Q2hhaW5DYWNoZVN0YXR1cy5lbmRPZlZhbGlkaXR5ID0gc3RkOjptaW4ocmVkaXJlY3RDaGFp
bkNhY2hlU3RhdHVzLmVuZE9mVmFsaWRpdHksIGVuZE9mVmFsaWRpdHkpOwogfQogCkBAIC0xNDMs
NyArMTUwLDcgQEAgYm9vbCByZWRpcmVjdENoYWluQWxsb3dzUmV1c2UoUmVkaXJlY3RDaAogICAg
IGNhc2UgUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzOjpOb3RDYWNoZWRSZWRpcmVjdGlvbjoKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzOjpD
YWNoZWRSZWRpcmVjdGlvbjoKLSAgICAgICAgcmV0dXJuIHJldXNlRXhwaXJlZFJlZGlyZWN0aW9u
IHx8IGN1cnJlbnRUaW1lKCkgPD0gcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLmVuZE9mVmFsaWRp
dHk7CisgICAgICAgIHJldHVybiByZXVzZUV4cGlyZWRSZWRpcmVjdGlvbiB8fCBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjpub3coKSA8PSByZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMuZW5kT2ZW
YWxpZGl0eTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjQ4LDYgKzI1NSw4IEBAIHN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywg
U3RyaW5nPj4KIAogQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJvbERpcmVj
dGl2ZXMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKIHsKKyAgICB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOjpjaHJvbm87CisKICAgICBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIHJlc3VsdDsKIAog
ICAgIFN0cmluZyBjYWNoZUNvbnRyb2xWYWx1ZSA9IGhlYWRlcnMuZ2V0KEhUVFBIZWFkZXJOYW1l
OjpDYWNoZUNvbnRyb2wpOwpAQCAtMjY1LDI5ICsyNzQsMjkgQEAgQ2FjaGVDb250cm9sRGlyZWN0
aXZlcyBwYXJzZUNhY2hlQ29udHJvbAogICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UoZGlyZWN0aXZlc1tpXS5maXJzdCwgIm11c3QtcmV2YWxpZGF0ZSIpKQogICAgICAgICAg
ICAgICAgIHJlc3VsdC5tdXN0UmV2YWxpZGF0ZSA9IHRydWU7CiAgICAgICAgICAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShkaXJlY3RpdmVzW2ldLmZpcnN0LCAibWF4LWFnZSIpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFzdGQ6OmlzbmFuKHJlc3VsdC5tYXhBZ2UpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdC5tYXhBZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRmly
c3QgbWF4LWFnZSBkaXJlY3RpdmUgd2lucyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgb25lcy4KICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGJvb2wgb2s7CiAgICAgICAgICAgICAgICAgZG91YmxlIG1heEFnZSA9IGRpcmVjdGl2
ZXNbaV0uc2Vjb25kLnRvRG91YmxlKCZvayk7CiAgICAgICAgICAgICAgICAgaWYgKG9rKQotICAg
ICAgICAgICAgICAgICAgICByZXN1bHQubWF4QWdlID0gbWF4QWdlOworICAgICAgICAgICAgICAg
ICAgICByZXN1bHQubWF4QWdlID0gZHVyYXRpb25fY2FzdDxtaWNyb3NlY29uZHM+KGR1cmF0aW9u
PGRvdWJsZT4obWF4QWdlKSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGRpcmVjdGl2ZXNbaV0uZmlyc3QsICJtYXgtc3RhbGUiKSkgewogICAgICAgICAgICAgICAg
IC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjM0I3NlY3Rpb24tNS4yLjEuMgot
ICAgICAgICAgICAgICAgIGlmICghc3RkOjppc25hbihyZXN1bHQubWF4U3RhbGUpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHJlc3VsdC5tYXhTdGFsZSkgewogICAgICAgICAgICAgICAgICAgICAv
LyBGaXJzdCBtYXgtc3RhbGUgZGlyZWN0aXZlIHdpbnMgaWYgdGhlcmUgYXJlIG11bHRpcGxlIG9u
ZXMuCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBpZiAoZGlyZWN0aXZlc1tpXS5zZWNvbmQuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIC8vIGlmIG5vIHZhbHVlIGlzIGFzc2lnbmVkIHRvIG1heC1zdGFsZSwg
dGhlbiB0aGUgY2xpZW50IGlzIHdpbGxpbmcgdG8gYWNjZXB0IGEgc3RhbGUgcmVzcG9uc2Ugb2Yg
YW55IGFnZS4KLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heFN0YWxlID0gc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjptYXgoKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1h
eFN0YWxlID0gbWljcm9zZWNvbmRzOjptYXgoKTsKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJvb2wgb2s7CiAgICAgICAg
ICAgICAgICAgZG91YmxlIG1heFN0YWxlID0gZGlyZWN0aXZlc1tpXS5zZWNvbmQudG9Eb3VibGUo
Jm9rKTsKICAgICAgICAgICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC5tYXhTdGFsZSA9IG1heFN0YWxlOworICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF4U3Rh
bGUgPSBkdXJhdGlvbl9jYXN0PG1pY3Jvc2Vjb25kcz4oZHVyYXRpb248ZG91YmxlPihtYXhTdGFs
ZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5oCShyZXZpc2lvbiAx
ODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIENhY2hlVmFsaWRh
dGlvbl9oCiAjZGVmaW5lIENhY2hlVmFsaWRhdGlvbl9oCiAKKyNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVFRQSGVhZGVyTWFwOwpAQCAt
MzksMTQgKzQxLDE0IEBAIHN0cnVjdCBSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMgewogICAgIH07
CiAgICAgUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzKCkKICAgICAgICAgOiBzdGF0dXMoTm9SZWRp
cmVjdGlvbikKLSAgICAgICAgLCBlbmRPZlZhbGlkaXR5KHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6bWF4KCkpCisgICAgICAgICwgZW5kT2ZWYWxpZGl0eShzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50OjptYXgoKSkKICAgICB7IH0KICAgICBTdGF0dXMgc3RhdHVzOwot
ICAgIGRvdWJsZSBlbmRPZlZhbGlkaXR5OworICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQgZW5kT2ZWYWxpZGl0eTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIGRvdWJsZSBj
b21wdXRlQ3VycmVudEFnZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgZG91YmxlIHJlc3BvbnNl
VGltZXN0YW1wKTsKLVdFQkNPUkVfRVhQT1JUIGRvdWJsZSBjb21wdXRlRnJlc2huZXNzTGlmZXRp
bWVGb3JIVFRQRmFtaWx5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBkb3VibGUgcmVzcG9uc2VU
aW1lc3RhbXApOworV0VCQ09SRV9FWFBPUlQgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBjb21w
dXRlQ3VycmVudEFnZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludCByZXNwb25zZVRpbWVzdGFtcCk7CitXRUJDT1JFX0VYUE9SVCBz
dGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIGNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBG
YW1pbHkoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQgcmVzcG9uc2VUaW1lc3RhbXApOwogV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRh
dGVSZXNwb25zZUhlYWRlcnNBZnRlclJldmFsaWRhdGlvbihSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlUmVkaXJlY3RDaGFpblN0YXR1cyhSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKQEAgLTU0LDggKzU2LDggQEAgZW51bSBSZXVz
ZUV4cGlyZWRSZWRpcmVjdGlvbk9yTm90IHsgRG9ObwogV0VCQ09SRV9FWFBPUlQgYm9vbCByZWRp
cmVjdENoYWluQWxsb3dzUmV1c2UoUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLCBSZXVzZUV4cGly
ZWRSZWRpcmVjdGlvbk9yTm90KTsKIAogc3RydWN0IENhY2hlQ29udHJvbERpcmVjdGl2ZXMgewot
ICAgIGRvdWJsZSBtYXhBZ2UgeyBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpIH07Ci0gICAgZG91YmxlIG1heFN0YWxlIHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKSB9OworICAgIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+
IG1heEFnZTsKKyAgICBPcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBtYXhTdGFs
ZTsKICAgICBib29sIG5vQ2FjaGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbm9TdG9yZSB7IGZhbHNl
IH07CiAgICAgYm9vbCBtdXN0UmV2YWxpZGF0ZSB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAkocmV2aXNpb24gMTgy
MjQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzNCw5ICsyMzQsMTQgQEAgYm9vbCBwYXJzZUhUVFBSZWZyZXNo
KGNvbnN0IFN0cmluZyYgcmVmcgogICAgIH0KIH0KIAotZG91YmxlIHBhcnNlRGF0ZShjb25zdCBT
dHJpbmcmIHZhbHVlKQorT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludD4gcGFyc2VIVFRQRGF0ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHJldHVybiBw
YXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKHZhbHVlLnV0ZjgoKS5kYXRhKCkp
OworICAgIGRvdWJsZSBkYXRlSW5NaWxsaXNlY29uZHNTaW5jZUVwb2NoID0gcGFyc2VEYXRlRnJv
bU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyh2YWx1ZS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAo
IXN0ZDo6aXNmaW5pdGUoZGF0ZUluTWlsbGlzZWNvbmRzU2luY2VFcG9jaCkpCisgICAgICAgIHJl
dHVybiB7IH07CisgICAgLy8gVGhpcyBhc3N1bWVzIHN5c3RlbV9jbG9jayBlcG9jaCBlcXVhbHMg
VW5peCBlcG9jaCB3aGljaCBpcyB0cnVlIGZvciBhbGwgaW1wbGVtZW50YXRpb25zIGJ1dCB1bnNw
ZWNpZmllZC4KKyAgICAvLyBGSVhNRTogVGhlIHBhcnNpbmcgZnVuY3Rpb24gc2hvdWxkIGJlIHN3
aXRjaGVkIHRvIHN0ZDo6Y2hyb25vIHRvby4KKyAgICByZXR1cm4gc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludChzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0ZUluTWlsbGlzZWNvbmRzU2luY2VFcG9jaCkpKTsKIH0KIAogLy8gRklY
TUU6IFRoaXMgZnVuY3Rpb24gZG9lc24ndCBjb21wbHkgd2l0aCBSRkMgNjI2Ni4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgJKHJldmlzaW9u
IDE4MjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTY0LDcgKzY1LDcgQEAgQ29udGVudERpc3Bvc2l0aW9uVHlwZSBjb250ZW50RGlzcG9z
aXRpbwogYm9vbCBpc1ZhbGlkSFRUUEhlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYpOwogYm9vbCBp
c1ZhbGlkSFRUUFRva2VuKGNvbnN0IFN0cmluZyYpOwogYm9vbCBwYXJzZUhUVFBSZWZyZXNoKGNv
bnN0IFN0cmluZyYgcmVmcmVzaCwgYm9vbCBmcm9tSHR0cEVxdWl2TWV0YSwgZG91YmxlJiBkZWxh
eSwgU3RyaW5nJiB1cmwpOwotZG91YmxlIHBhcnNlRGF0ZShjb25zdCBTdHJpbmcmKTsKK09wdGlv
bmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IHBhcnNlSFRUUERhdGUo
Y29uc3QgU3RyaW5nJik7CiBTdHJpbmcgZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlv
bihjb25zdCBTdHJpbmcmKTsgCiBTdHJpbmcgZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShj
b25zdCBTdHJpbmcmKTsKIFN0cmluZyBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29uc3Qg
U3RyaW5nJik7IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw0MiArNDMsMjIgQEAgaW5saW5lIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIFJlc291cmNlUgogICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VS
ZXNwb25zZSo+KHRoaXMpOwogfQogCi1SZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2UoKSAgCi0gICAgOiBtX2V4cGVjdGVkQ29udGVudExlbmd0aCgwKQorUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKCkKKyAgICA6IG1faXNOdWxsKHRydWUp
CisgICAgLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCgwKQogICAgICwgbV9pbmNsdWRlc0NlcnRp
ZmljYXRlSW5mbyhmYWxzZSkKICAgICAsIG1faHR0cFN0YXR1c0NvZGUoMCkKLSAgICAsIG1fYWdl
KDApCi0gICAgLCBtX2RhdGUoMCkKLSAgICAsIG1fZXhwaXJlcygwKQotICAgICwgbV9sYXN0TW9k
aWZpZWQoMCkKLSAgICAsIG1faXNOdWxsKHRydWUpCi0gICAgLCBtX2hhdmVQYXJzZWRDYWNoZUNv
bnRyb2xIZWFkZXIoZmFsc2UpCi0gICAgLCBtX2hhdmVQYXJzZWRBZ2VIZWFkZXIoZmFsc2UpCi0g
ICAgLCBtX2hhdmVQYXJzZWREYXRlSGVhZGVyKGZhbHNlKQotICAgICwgbV9oYXZlUGFyc2VkRXhw
aXJlc0hlYWRlcihmYWxzZSkKLSAgICAsIG1faGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRlcihm
YWxzZSkKLSAgICAsIG1fc291cmNlKFNvdXJjZTo6VW5rbm93bikKIHsKIH0KIAogUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nTmFtZSkKLSAgICA6IG1fdXJsKHVybCkKKyAgICA6IG1faXNOdWxsKGZhbHNl
KQorICAgICwgbV91cmwodXJsKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1f
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKGV4cGVjdGVkTGVuZ3RoKQogICAgICwgbV90ZXh0RW5jb2Rp
bmdOYW1lKHRleHRFbmNvZGluZ05hbWUpCiAgICAgLCBtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZv
KHRydWUpIC8vIEVtcHR5IGJ1dCB2YWxpZCBmb3Igc3ludGhldGljIHJlc3BvbnNlcy4KICAgICAs
IG1faHR0cFN0YXR1c0NvZGUoMCkKLSAgICAsIG1fYWdlKDApCi0gICAgLCBtX2RhdGUoMCkKLSAg
ICAsIG1fZXhwaXJlcygwKQotICAgICwgbV9sYXN0TW9kaWZpZWQoMCkKLSAgICAsIG1faXNOdWxs
KGZhbHNlKQotICAgICwgbV9oYXZlUGFyc2VkQ2FjaGVDb250cm9sSGVhZGVyKGZhbHNlKQotICAg
ICwgbV9oYXZlUGFyc2VkQWdlSGVhZGVyKGZhbHNlKQotICAgICwgbV9oYXZlUGFyc2VkRGF0ZUhl
YWRlcihmYWxzZSkKLSAgICAsIG1faGF2ZVBhcnNlZEV4cGlyZXNIZWFkZXIoZmFsc2UpCi0gICAg
LCBtX2hhdmVQYXJzZWRMYXN0TW9kaWZpZWRIZWFkZXIoZmFsc2UpCi0gICAgLCBtX3NvdXJjZShT
b3VyY2U6OlVua25vd24pCiB7CiB9CiAKQEAgLTM4MSwyOSArMzYxLDI2IEBAIGJvb2wgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6Omhhc0NhY2hlVmFsaWQKICAgICByZXR1cm4gIW1faHR0cEhlYWRlckZp
ZWxkcy5nZXQoSFRUUEhlYWRlck5hbWU6Okxhc3RNb2RpZmllZCkuaXNFbXB0eSgpIHx8ICFtX2h0
dHBIZWFkZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpFVGFnKS5pc0VtcHR5KCk7CiB9CiAK
LWRvdWJsZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2FjaGVDb250cm9sTWF4QWdlKCkgY29uc3QK
K09wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IFJlc291cmNlUmVzcG9uc2VCYXNl
OjpjYWNoZUNvbnRyb2xNYXhBZ2UoKSBjb25zdAogewogICAgIGlmICghbV9oYXZlUGFyc2VkQ2Fj
aGVDb250cm9sSGVhZGVyKQogICAgICAgICBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoKTsK
ICAgICByZXR1cm4gbV9jYWNoZUNvbnRyb2xEaXJlY3RpdmVzLm1heEFnZTsKIH0KIAotc3RhdGlj
IGRvdWJsZSBwYXJzZURhdGVWYWx1ZUluSGVhZGVyKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRl
cnMsIEhUVFBIZWFkZXJOYW1lIGhlYWRlck5hbWUpCitzdGF0aWMgT3B0aW9uYWw8c3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gcGFyc2VEYXRlVmFsdWVJbkhlYWRlcihjb25z
dCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBIVFRQSGVhZGVyTmFtZSBoZWFkZXJOYW1lKQogewog
ICAgIFN0cmluZyBoZWFkZXJWYWx1ZSA9IGhlYWRlcnMuZ2V0KGhlYWRlck5hbWUpOwogICAgIGlm
IChoZWFkZXJWYWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OnF1aWV0X05hTigpOyAKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICAvLyBU
aGlzIGhhbmRsZXMgYWxsIGRhdGUgZm9ybWF0cyByZXF1aXJlZCBieSBSRkMyNjE2OgogICAgIC8v
IFN1biwgMDYgTm92IDE5OTQgMDg6NDk6MzcgR01UICA7IFJGQyA4MjIsIHVwZGF0ZWQgYnkgUkZD
IDExMjMKICAgICAvLyBTdW5kYXksIDA2LU5vdi05NCAwODo0OTozNyBHTVQgOyBSRkMgODUwLCBv
YnNvbGV0ZWQgYnkgUkZDIDEwMzYKICAgICAvLyBTdW4gTm92ICA2IDA4OjQ5OjM3IDE5OTQgICAg
ICAgOyBBTlNJIEMncyBhc2N0aW1lKCkgZm9ybWF0Ci0gICAgZG91YmxlIGRhdGVJbk1pbGxpc2Vj
b25kcyA9IHBhcnNlRGF0ZShoZWFkZXJWYWx1ZSk7Ci0gICAgaWYgKCFzdGQ6OmlzZmluaXRlKGRh
dGVJbk1pbGxpc2Vjb25kcykpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OnF1aWV0X05hTigpOwotICAgIHJldHVybiBkYXRlSW5NaWxsaXNlY29uZHMgLyAxMDAw
OworICAgIHJldHVybiBwYXJzZUhUVFBEYXRlKGhlYWRlclZhbHVlKTsKIH0KIAotZG91YmxlIFJl
c291cmNlUmVzcG9uc2VCYXNlOjpkYXRlKCkgY29uc3QKK09wdGlvbmFsPHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpkYXRlKCkgY29u
c3QKIHsKICAgICBsYXp5SW5pdChDb21tb25GaWVsZHNPbmx5KTsKIApAQCAtNDE0LDIyICszOTEs
MjQgQEAgZG91YmxlIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkYXRlKCkgY29ucwogICAgIHJldHVy
biBtX2RhdGU7CiB9CiAKLWRvdWJsZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWdlKCkgY29uc3QK
K09wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IFJlc291cmNlUmVzcG9uc2VCYXNl
OjphZ2UoKSBjb25zdAogeworICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKKwogICAg
IGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogCiAgICAgaWYgKCFtX2hhdmVQYXJzZWRBZ2VI
ZWFkZXIpIHsKICAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlID0gbV9odHRwSGVhZGVyRmllbGRz
LmdldChIVFRQSGVhZGVyTmFtZTo6QWdlKTsKICAgICAgICAgYm9vbCBvazsKLSAgICAgICAgbV9h
Z2UgPSBoZWFkZXJWYWx1ZS50b0RvdWJsZSgmb2spOwotICAgICAgICBpZiAoIW9rKQotICAgICAg
ICAgICAgbV9hZ2UgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwor
ICAgICAgICBkb3VibGUgYWdlRG91YmxlID0gaGVhZGVyVmFsdWUudG9Eb3VibGUoJm9rKTsKKyAg
ICAgICAgaWYgKG9rKQorICAgICAgICAgICAgbV9hZ2UgPSBkdXJhdGlvbl9jYXN0PG1pY3Jvc2Vj
b25kcz4oZHVyYXRpb248ZG91YmxlPihhZ2VEb3VibGUpKTsKICAgICAgICAgbV9oYXZlUGFyc2Vk
QWdlSGVhZGVyID0gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIG1fYWdlOwogfQogCi1kb3VibGUg
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyZXMoKSBjb25zdAorT3B0aW9uYWw8c3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGly
ZXMoKSBjb25zdAogewogICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogCkBAIC00NDAs
NyArNDE5LDcgQEAgZG91YmxlIFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBpcmVzKCkgYwogICAg
IHJldHVybiBtX2V4cGlyZXM7CiB9CiAKLWRvdWJsZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFz
dE1vZGlmaWVkKCkgY29uc3QKK09wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQ+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXN0TW9kaWZpZWQoKSBjb25zdAogewog
ICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCShyZXZp
c2lvbiAxODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCwxMSArMTA0LDExIEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhY2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FjaGVDb250cm9sQ29udGFpbnNNdXN0
UmV2YWxpZGF0ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQ2FjaGVWYWxp
ZGF0b3JGaWVsZHMoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgY2FjaGVDb250
cm9sTWF4QWdlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGRhdGUoKSBjb25zdDsKLSAgICBkb3VibGUg
YWdlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZG91YmxlIGV4cGlyZXMoKSBjb25zdDsK
LSAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgbGFzdE1vZGlmaWVkKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgT3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gY2FjaGVDb250
cm9sTWF4QWdlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8c3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gZGF0ZSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IGFnZSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQ+IGV4cGlyZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBsYXN0TW9kaWZpZWQoKSBjb25z
dDsKIAogICAgIGVudW0gY2xhc3MgU291cmNlIHsgVW5rbm93biwgTmV0d29yaywgRGlza0NhY2hl
LCBEaXNrQ2FjaGVBZnRlclZhbGlkYXRpb24gfTsKICAgICBXRUJDT1JFX0VYUE9SVCBTb3VyY2Ug
c291cmNlKCkgY29uc3Q7CkBAIC0xNDcsNiArMTQ3LDEzIEBAIHByb3RlY3RlZDoKIAogICAgIHN0
YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KIAorcHJpdmF0ZToKKyAgICBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiBhc1Jlc291cmNlUmVzcG9uc2UoKSBjb25zdDsKKyAgICB2b2lk
IHBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcygpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlSGVh
ZGVyUGFyc2VkU3RhdGUoSFRUUEhlYWRlck5hbWUpOworCitwcm90ZWN0ZWQ6CisgICAgYm9vbCBt
X2lzTnVsbDsKICAgICBVUkwgbV91cmw7CiAgICAgQXRvbWljU3RyaW5nIG1fbWltZVR5cGU7CiAg
ICAgbG9uZyBsb25nIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwpAQCAtMTYxLDI3ICsxNjgsMTkg
QEAgcHJvdGVjdGVkOgogICAgIGludCBtX2h0dHBTdGF0dXNDb2RlOwogCiBwcml2YXRlOgotICAg
IG11dGFibGUgZG91YmxlIG1fYWdlOwotICAgIG11dGFibGUgZG91YmxlIG1fZGF0ZTsKLSAgICBt
dXRhYmxlIGRvdWJsZSBtX2V4cGlyZXM7Ci0gICAgbXV0YWJsZSBkb3VibGUgbV9sYXN0TW9kaWZp
ZWQ7CisgICAgbXV0YWJsZSBPcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBtX2Fn
ZTsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQ+IG1fZGF0ZTsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQ+IG1fZXhwaXJlczsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IG1fbGFzdE1vZGlmaWVkOwogICAgIG11
dGFibGUgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBtX2NhY2hlQ29udHJvbERpcmVjdGl2ZXM7CiAK
LXB1YmxpYzoKLSAgICBib29sIG1faXNOdWxsIDogMTsKLSAgICAKLXByaXZhdGU6Ci0gICAgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgYXNSZXNvdXJjZVJlc3BvbnNlKCkgY29uc3Q7Ci0gICAgdm9p
ZCBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUhl
YWRlclBhcnNlZFN0YXRlKEhUVFBIZWFkZXJOYW1lKTsKLQotICAgIG11dGFibGUgYm9vbCBtX2hh
dmVQYXJzZWRDYWNoZUNvbnRyb2xIZWFkZXIgOiAxOwotICAgIG11dGFibGUgYm9vbCBtX2hhdmVQ
YXJzZWRBZ2VIZWFkZXIgOiAxOwotICAgIG11dGFibGUgYm9vbCBtX2hhdmVQYXJzZWREYXRlSGVh
ZGVyIDogMTsKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXZlUGFyc2VkRXhwaXJlc0hlYWRlciA6IDE7
Ci0gICAgbXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRlciA6IDE7Cisg
ICAgbXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZENhY2hlQ29udHJvbEhlYWRlciB7IGZhbHNlIH07
CisgICAgbXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZEFnZUhlYWRlciB7IGZhbHNlIH07CisgICAg
bXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZERhdGVIZWFkZXIgeyBmYWxzZSB9OworICAgIG11dGFi
bGUgYm9vbCBtX2hhdmVQYXJzZWRFeHBpcmVzSGVhZGVyIHsgZmFsc2UgfTsKKyAgICBtdXRhYmxl
IGJvb2wgbV9oYXZlUGFyc2VkTGFzdE1vZGlmaWVkSGVhZGVyIHsgZmFsc2UgfTsKIAotICAgIFNv
dXJjZSBtX3NvdXJjZTsKKyAgICBTb3VyY2UgbV9zb3VyY2UgeyBTb3VyY2U6OlVua25vd24gfTsK
IH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gUmVzb3VyY2VSZXNwb25zZUJhc2U6
OmNvbXBhcmUoYSwgYik7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjI1MykKKysrIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisy
MDE1LTA0LTAxICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2Ugc3RkOjpjaHJvbm8gdHlwZXMgdG8gcmVwcmVzZW50IHRpbWUgaW4gcmVzcG9uc2UgYW5kIGNh
Y2hlIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MzMxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OnJlc3BvbnNlSGFzRXhwaXJlZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6cmVzcG9uc2VOZWVkc1JldmFsaWRhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6bWFrZVN0b3JlRGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkNhY2hlOjpzdG9yZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRW50cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OkVudHJ5OjpFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmFz
SlNPTik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
aDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6dGltZVN0YW1wKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpkZWNvZGVSZWNvcmRNZXRhRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6ZGVjb2RlUmVjb3JkKToKKworICAgICAgICAgICAg
U2FuaXR5IGNoZWNrIHRoZSB0aW1lc3RhbXAgb24gZGVjb2RlLgorCisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6ZW5jb2RlUmVjb3JkTWV0YURhdGEpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OmVuY29kZVJlY29yZEhlYWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6U3RvcmFnZTo6dHJhdmVyc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6Omxhc3RNb2RpZmllZERhdGVNUyk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6Omxhc3RNb2RpZmllZERhdGUpOiBEZWxldGVkLgorCiAyMDE1
LTA0LTAxICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTbWFydCBtYWduaWZpY2F0aW9uIGdlc3R1cmUgc29tZXRpbWVzIHNob290cyB0byB0aGUg
bWlkZGxlIG9mIHRoZSBwYWdlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDE4MjI0MSkK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxOCw5ICszMTgsOSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hCiAgICAgICAgIGJvb2wgYWxsb3dTdGFsZSA9IG9yaWdpbmFs
UmVxdWVzdCgpLmNhY2hlUG9saWN5KCkgPj0gUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQ7CiAgICAg
ICAgIGJvb2wgaGFzQ2FjaGVhYmxlUmVkaXJlY3QgPSBtX3Jlc3BvbnNlLmlzSFRUUCgpICYmIFdl
YkNvcmU6OnJlZGlyZWN0Q2hhaW5BbGxvd3NSZXVzZShtX3JlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1
cywgYWxsb3dTdGFsZSA/IFdlYkNvcmU6OlJldXNlRXhwaXJlZFJlZGlyZWN0aW9uIDogV2ViQ29y
ZTo6RG9Ob3RSZXVzZUV4cGlyZWRSZWRpcmVjdGlvbik7CiAgICAgICAgIGlmIChoYXNDYWNoZWFi
bGVSZWRpcmVjdCAmJiBtX3JlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5zdGF0dXMgPT0gUmVkaXJl
Y3RDaGFpbkNhY2hlU3RhdHVzOjpDYWNoZWRSZWRpcmVjdGlvbikgewotICAgICAgICAgICAgLy8g
RklYTUU6IENhY2hlIHRoZSBhY3R1YWwgcmVkaXJlY3RzIGluc3RlYWQgb2YgdGhlIGVuZCByZXN1
bHQuCi0gICAgICAgICAgICBkb3VibGUgbm93ID0gY3VycmVudFRpbWUoKTsKLSAgICAgICAgICAg
IGRvdWJsZSByZXNwb25zZUVuZE9mVmFsaWRpdHkgPSBub3cgKyBXZWJDb3JlOjpjb21wdXRlRnJl
c2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KG1fcmVzcG9uc2UsIG5vdykgLSBXZWJDb3JlOjpj
b21wdXRlQ3VycmVudEFnZShtX3Jlc3BvbnNlLCBub3cpOworICAgICAgICAgICAgLy8gTWF5YmUg
d2Ugc2hvdWxkIGNhY2hlIHRoZSBhY3R1YWwgcmVkaXJlY3RzIGluc3RlYWQgb2YgdGhlIGVuZCBy
ZXN1bHQ/CisgICAgICAgICAgICBhdXRvIG5vdyA9IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
Om5vdygpOworICAgICAgICAgICAgYXV0byByZXNwb25zZUVuZE9mVmFsaWRpdHkgPSBub3cgKyBX
ZWJDb3JlOjpjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KG1fcmVzcG9uc2Us
IG5vdykgLSBXZWJDb3JlOjpjb21wdXRlQ3VycmVudEFnZShtX3Jlc3BvbnNlLCBub3cpOwogICAg
ICAgICAgICAgaGFzQ2FjaGVhYmxlUmVkaXJlY3QgPSByZXNwb25zZUVuZE9mVmFsaWRpdHkgPD0g
bV9yZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMuZW5kT2ZWYWxpZGl0eTsKICAgICAgICAgfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCwxNyAr
MTUwLDE2IEBAIHN0YXRpYyBib29sIGNhY2hlUG9saWN5QWxsb3dzRXhwaXJlZChXZWIKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIHJlc3BvbnNlSGFzRXhwaXJlZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgc3RkOjpjaHJvbm86Om1pbGxpc2Vj
b25kcyB0aW1lc3RhbXAsIGRvdWJsZSBtYXhTdGFsZSkKK3N0YXRpYyBib29sIHJlc3BvbnNlSGFz
RXhwaXJlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lc3RhbXAsIE9wdGlvbmFsPHN0ZDo6
Y2hyb25vOjptaWNyb3NlY29uZHM+IG1heFN0YWxlKQogewogICAgIGlmIChyZXNwb25zZS5jYWNo
ZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBh
dXRvIGRvdWJsZVRpbWVTdGFtcCA9IHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KHRpbWVz
dGFtcCk7Ci0gICAgZG91YmxlIGFnZSA9IFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKHJlc3Bv
bnNlLCBkb3VibGVUaW1lU3RhbXAuY291bnQoKSk7Ci0gICAgZG91YmxlIGxpZmV0aW1lID0gV2Vi
Q29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShyZXNwb25zZSwgZG91
YmxlVGltZVN0YW1wLmNvdW50KCkpOworICAgIGF1dG8gYWdlID0gV2ViQ29yZTo6Y29tcHV0ZUN1
cnJlbnRBZ2UocmVzcG9uc2UsIHRpbWVzdGFtcCk7CisgICAgYXV0byBsaWZldGltZSA9IFdlYkNv
cmU6OmNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkocmVzcG9uc2UsIHRpbWVz
dGFtcCk7CiAKLSAgICBtYXhTdGFsZSA9IHN0ZDo6aXNuYW4obWF4U3RhbGUpID8gMCA6IG1heFN0
YWxlOwotICAgIGJvb2wgaGFzRXhwaXJlZCA9IGFnZSAtIGxpZmV0aW1lID4gbWF4U3RhbGU7Cisg
ICAgYXV0byBtYXhpbXVtU3RhbGVuZXNzID0gbWF4U3RhbGUgPyBtYXhTdGFsZS52YWx1ZSgpIDog
c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kczo6emVybygpOworICAgIGJvb2wgaGFzRXhwaXJlZCA9
IGFnZSAtIGxpZmV0aW1lID4gbWF4aW11bVN0YWxlbmVzczsKIAogI2lmbmRlZiBMT0dfRElTQUJM
RUQKICAgICBpZiAoaGFzRXhwaXJlZCkKQEAgLTE3MCwxNCArMTY5LDE2IEBAIHN0YXRpYyBib29s
IHJlc3BvbnNlSGFzRXhwaXJlZChjb25zdCBXZWIKICAgICByZXR1cm4gaGFzRXhwaXJlZDsKIH0K
IAotc3RhdGljIGJvb2wgcmVzcG9uc2VOZWVkc1JldmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVzdGFtcCkKK3N0YXRpYyBi
b29sIHJlc3BvbnNlTmVlZHNSZXZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lc3RhbXApCiB7CiAgICAg
YXV0byByZXF1ZXN0RGlyZWN0aXZlcyA9IFdlYkNvcmU6OnBhcnNlQ2FjaGVDb250cm9sRGlyZWN0
aXZlcyhyZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSk7CiAgICAgaWYgKHJlcXVlc3REaXJlY3Rp
dmVzLm5vQ2FjaGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIC8vIEZvciByZXF1ZXN0cyB3
ZSBpZ25vcmUgbWF4LWFnZSB2YWx1ZXMgb3RoZXIgdGhhbiB6ZXJvLgotICAgIGlmIChyZXF1ZXN0
RGlyZWN0aXZlcy5tYXhBZ2UgPT0gMCkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHJl
cXVlc3REaXJlY3RpdmVzLm1heEFnZSkgeworICAgICAgICBpZiAocmVxdWVzdERpcmVjdGl2ZXMu
bWF4QWdlLnZhbHVlKCkgPT0gc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kczo6emVybygpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCiAgICAgcmV0dXJuIHJlc3BvbnNlSGFzRXhw
aXJlZChyZXNwb25zZSwgdGltZXN0YW1wLCByZXF1ZXN0RGlyZWN0aXZlcy5tYXhTdGFsZSk7CiB9
CkBAIC0yNjksNyArMjcwLDcgQEAgc3RhdGljIFN0b3JlRGVjaXNpb24gbWFrZVN0b3JlRGVjaXNp
b24oYwogCiAgICAgaWYgKCFpc1N0YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQocmVzcG9uc2Uu
aHR0cFN0YXR1c0NvZGUoKSkpIHsKICAgICAgICAgLy8gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0
bWwvcmZjNzIzNCNzZWN0aW9uLTQuMy4yCi0gICAgICAgIGJvb2wgaGFzRXhwaXJhdGlvbkhlYWRl
cnMgPSBzdGQ6OmlzZmluaXRlKHJlc3BvbnNlLmV4cGlyZXMoKSkgfHwgc3RkOjppc2Zpbml0ZShy
ZXNwb25zZS5jYWNoZUNvbnRyb2xNYXhBZ2UoKSk7CisgICAgICAgIGJvb2wgaGFzRXhwaXJhdGlv
bkhlYWRlcnMgPSByZXNwb25zZS5leHBpcmVzKCkgfHwgcmVzcG9uc2UuY2FjaGVDb250cm9sTWF4
QWdlKCk7CiAgICAgICAgIGJvb2wgZXhwaXJhdGlvbkhlYWRlcnNBbGxvd0NhY2hpbmcgPSBpc1N0
YXR1c0NvZGVQb3RlbnRpYWxseUNhY2hlYWJsZShyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSAm
JiBoYXNFeHBpcmF0aW9uSGVhZGVyczsKICAgICAgICAgaWYgKCFleHBpcmF0aW9uSGVhZGVyc0Fs
bG93Q2FjaGluZykKICAgICAgICAgICAgIHJldHVybiBTdG9yZURlY2lzaW9uOjpOb0R1ZVRvSFRU
UFN0YXR1c0NvZGU7CkBAIC0yNzgsOCArMjc5LDggQEAgc3RhdGljIFN0b3JlRGVjaXNpb24gbWFr
ZVN0b3JlRGVjaXNpb24oYwogICAgIC8vIE1haW4gcmVzb3VyY2UgaGFzIFJlc291cmNlTG9hZFBy
aW9yaXR5VmVyeUhpZ2guCiAgICAgYm9vbCBzdG9yZVVuY29uZGl0aW9uYWxseUZvckhpc3RvcnlO
YXZpZ2F0aW9uID0gb3JpZ2luYWxSZXF1ZXN0LnByaW9yaXR5KCkgPT0gV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkUHJpb3JpdHlWZXJ5SGlnaDsKICAgICBpZiAoIXN0b3JlVW5jb25kaXRpb25hbGx5Rm9y
SGlzdG9yeU5hdmlnYXRpb24pIHsKLSAgICAgICAgYXV0byBjdXJyZW50VGltZSA9IHN0ZDo6Y2hy
b25vOjpkdXJhdGlvbjxkb3VibGU+KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpLnRp
bWVfc2luY2VfZXBvY2goKSk7Ci0gICAgICAgIGJvb2wgaGFzTm9uWmVyb0xpZmV0aW1lID0gIXJl
c3BvbnNlLmNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgpICYmIFdlYkNvcmU6OmNvbXB1dGVG
cmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkocmVzcG9uc2UsIGN1cnJlbnRUaW1lLmNvdW50
KCkpID4gMDsKKyAgICAgICAgYXV0byBub3cgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpu
b3coKTsKKyAgICAgICAgYm9vbCBoYXNOb25aZXJvTGlmZXRpbWUgPSAhcmVzcG9uc2UuY2FjaGVD
b250cm9sQ29udGFpbnNOb0NhY2hlKCkgJiYgV2ViQ29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0
aW1lRm9ySFRUUEZhbWlseShyZXNwb25zZSwgbm93KSA+IHN0ZDo6Y2hyb25vOjptaWNyb3NlY29u
ZHM6Onplcm8oKTsKIAogICAgICAgICBib29sIHBvc3NpYmx5UmV1c2FibGUgPSByZXNwb25zZS5o
YXNDYWNoZVZhbGlkYXRvckZpZWxkcygpIHx8IGhhc05vblplcm9MaWZldGltZTsKICAgICAgICAg
aWYgKCFwb3NzaWJseVJldXNhYmxlKQpAQCAtMzU4LDcgKzM1OSw2IEBAIHZvaWQgQ2FjaGU6OnN0
b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmMKICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdv
cmtQcm9jZXNzKSBzdG9yaW5nICVzLCBwYXJ0aXRpb24gJXMiLCBvcmlnaW5hbFJlcXVlc3QudXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCBvcmlnaW5hbFJlcXVlc3QuY2FjaGVQYXJ0aXRp
b24oKS5sYXRpbjEoKS5kYXRhKCkpOwogCiAgICAgU3RvcmVEZWNpc2lvbiBzdG9yZURlY2lzaW9u
ID0gbWFrZVN0b3JlRGVjaXNpb24ob3JpZ2luYWxSZXF1ZXN0LCByZXNwb25zZSk7Ci0KICAgICBp
ZiAoc3RvcmVEZWNpc2lvbiAhPSBTdG9yZURlY2lzaW9uOjpZZXMpIHsKICAgICAgICAgTE9HKE5l
dHdvcmtDYWNoZSwgIihOZXR3b3JrUHJvY2VzcykgZGlkbid0IHN0b3JlLCBzdG9yZURlY2lzaW9u
PSVkIiwgc3RvcmVEZWNpc2lvbik7CiAgICAgICAgIGlmIChtX3N0YXRpc3RpY3MpIHsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5jcHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAogRW50cnk6OkVudHJ5
KGNvbnN0IEtleSYga2V5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQogICAgIDog
bV9rZXkoa2V5KQotICAgICwgbV90aW1lU3RhbXAoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8
c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4oc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93
KCkudGltZV9zaW5jZV9lcG9jaCgpKSkKKyAgICAsIG1fdGltZVN0YW1wKHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6Om5vdygpKQogICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKICAgICAsIG1f
dmFyeWluZ1JlcXVlc3RIZWFkZXJzKHZhcnlpbmdSZXF1ZXN0SGVhZGVycykKICAgICAsIG1fYnVm
ZmVyKFdURjo6bW92ZShidWZmZXIpKQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgRW50cnk6OmFz
SlNPTihTdHJpbmdCdWlsZGVyJiBqc29uLCAKICAgICBKU0M6OmFwcGVuZFF1b3RlZEpTT05TdHJp
bmdUb0J1aWxkZXIoanNvbiwgbV9rZXkucGFydGl0aW9uKCkpOwogICAgIGpzb24uYXBwZW5kTGl0
ZXJhbCgiLFxuIik7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcInRpbWVzdGFtcFwiOiAiKTsK
LSAgICBqc29uLmFwcGVuZE51bWJlcihtX3RpbWVTdGFtcC5jb3VudCgpKTsKKyAgICBqc29uLmFw
cGVuZE51bWJlcihzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlz
ZWNvbmRzPihtX3RpbWVTdGFtcC50aW1lX3NpbmNlX2Vwb2NoKCkpLmNvdW50KCkpOwogICAgIGpz
b24uYXBwZW5kTGl0ZXJhbCgiLFxuIik7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcIlVSTFwi
OiAiKTsKICAgICBKU0M6OmFwcGVuZFF1b3RlZEpTT05TdHJpbmdUb0J1aWxkZXIoanNvbiwgbV9y
ZXNwb25zZS51cmwoKS5zdHJpbmcoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgJKHJldmlzaW9uIDE4
MjI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUVudHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3Rv
cmFnZTo6UmVjb3JkJik7CiAKICAgICBjb25zdCBLZXkmIGtleSgpIGNvbnN0IHsgcmV0dXJuIG1f
a2V5OyB9Ci0gICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lU3RhbXAoKSBjb25zdCB7
IHJldHVybiBtX3RpbWVTdGFtcDsgfQorICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQgdGltZVN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lU3RhbXA7IH0KICAgICBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzcG9uc2U7IH0KICAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5n
Pj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyeWluZ1JlcXVl
c3RIZWFkZXJzOyB9CiAKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluaXRp
YWxpemVCdWZmZXJGcm9tU3RvcmFnZVJlY29yZCgpIGNvbnN0OwogCiAgICAgS2V5IG1fa2V5Owot
ICAgIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgbV90aW1lU3RhbXA7CisgICAgc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtX3RpbWVTdGFtcDsKICAgICBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IFN0cmluZz4+IG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3
ICsxNDIsOCBAQCBzdHJ1Y3QgUmVjb3JkTWV0YURhdGEgewogCiAgICAgdW5zaWduZWQgY2FjaGVT
dG9yYWdlVmVyc2lvbjsKICAgICBLZXkga2V5OwotICAgIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29u
ZHMgdGltZVN0YW1wOworICAgIC8vIEZJWE1FOiBBZGQgZW5jb2Rlci9kZWNvZGVyIGZvciB0aW1l
X3BvaW50LgorICAgIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgZXBvY2hSZWxhdGl2ZVRpbWVT
dGFtcDsKICAgICB1bnNpZ25lZCBoZWFkZXJDaGVja3N1bTsKICAgICB1aW50NjRfdCBoZWFkZXJP
ZmZzZXQ7CiAgICAgdWludDY0X3QgaGVhZGVyU2l6ZTsKQEAgLTE2MCw3ICsxNjEsNyBAQCBzdGF0
aWMgYm9vbCBkZWNvZGVSZWNvcmRNZXRhRGF0YShSZWNvcmRNCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWV0YURhdGEua2V5KSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXRhRGF0
YS50aW1lU3RhbXApKQorICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1ldGFEYXRhLmVwb2No
UmVsYXRpdmVUaW1lU3RhbXApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKG1ldGFEYXRhLmhlYWRlckNoZWNrc3VtKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTIxNSw2ICsyMTYsMTEgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxTdG9yYWdlOjpSZWNvcmQ+IAogICAgIGlmIChtZXRhRGF0YS5rZXkgIT0ga2V5KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAorICAgIC8vIFNhbml0eSBjaGVjayBhZ2FpbnN0IHRpbWVTdGFt
cHMgaW4gZnV0dXJlLgorICAgIGF1dG8gdGltZVN0YW1wID0gc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludChtZXRhRGF0YS5lcG9jaFJlbGF0aXZlVGltZVN0YW1wKTsKKyAgICBp
ZiAodGltZVN0YW1wID4gc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCiAgICAgRGF0YSBib2R5RGF0YTsKICAgICBpZiAobWV0YURhdGEu
Ym9keVNpemUpIHsKICAgICAgICAgaWYgKG1ldGFEYXRhLmJvZHlPZmZzZXQgKyBtZXRhRGF0YS5i
b2R5U2l6ZSAhPSBmaWxlRGF0YS5zaXplKCkpCkBAIC0yMzQsNyArMjQwLDcgQEAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxTdG9yYWdlOjpSZWNvcmQ+IAogCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8U3RvcmFnZTo6UmVjb3JkPihTdG9yYWdlOjpSZWNvcmQgewogICAgICAgICBtZXRhRGF0
YS5rZXksCi0gICAgICAgIG1ldGFEYXRhLnRpbWVTdGFtcCwKKyAgICAgICAgdGltZVN0YW1wLAog
ICAgICAgICBoZWFkZXJEYXRhLAogICAgICAgICBib2R5RGF0YQogICAgIH0pOwpAQCAtMjQ2LDcg
KzI1Miw3IEBAIHN0YXRpYyBEYXRhIGVuY29kZVJlY29yZE1ldGFEYXRhKGNvbnN0IFIKIAogICAg
IGVuY29kZXIgPDwgbWV0YURhdGEuY2FjaGVTdG9yYWdlVmVyc2lvbjsKICAgICBlbmNvZGVyIDw8
IG1ldGFEYXRhLmtleTsKLSAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLnRpbWVTdGFtcDsKKyAgICBl
bmNvZGVyIDw8IG1ldGFEYXRhLmVwb2NoUmVsYXRpdmVUaW1lU3RhbXA7CiAgICAgZW5jb2RlciA8
PCBtZXRhRGF0YS5oZWFkZXJDaGVja3N1bTsKICAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLmhlYWRl
clNpemU7CiAgICAgZW5jb2RlciA8PCBtZXRhRGF0YS5ib2R5Q2hlY2tzdW07CkBAIC0yNjAsNyAr
MjY2LDcgQEAgc3RhdGljIERhdGEgZW5jb2RlUmVjb3JkTWV0YURhdGEoY29uc3QgUgogc3RhdGlj
IERhdGEgZW5jb2RlUmVjb3JkSGVhZGVyKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgcmVjb3JkKQog
ewogICAgIFJlY29yZE1ldGFEYXRhIG1ldGFEYXRhKHJlY29yZC5rZXkpOwotICAgIG1ldGFEYXRh
LnRpbWVTdGFtcCA9IHJlY29yZC50aW1lU3RhbXA7CisgICAgbWV0YURhdGEuZXBvY2hSZWxhdGl2
ZVRpbWVTdGFtcCA9IHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxs
aXNlY29uZHM+KHJlY29yZC50aW1lU3RhbXAudGltZV9zaW5jZV9lcG9jaCgpKTsKICAgICBtZXRh
RGF0YS5oZWFkZXJDaGVja3N1bSA9IGhhc2hEYXRhKHJlY29yZC5oZWFkZXIpOwogICAgIG1ldGFE
YXRhLmhlYWRlclNpemUgPSByZWNvcmQuaGVhZGVyLnNpemUoKTsKICAgICBtZXRhRGF0YS5ib2R5
Q2hlY2tzdW0gPSBoYXNoRGF0YShyZWNvcmQuYm9keSk7CkBAIC00NDYsNyArNDUyLDcgQEAgdm9p
ZCBTdG9yYWdlOjp0cmF2ZXJzZShUcmF2ZXJzZUZsYWdzIGZsYQogICAgICAgICAgICAgICAgIFJl
Y29yZE1ldGFEYXRhIG1ldGFEYXRhOwogICAgICAgICAgICAgICAgIERhdGEgaGVhZGVyRGF0YTsK
ICAgICAgICAgICAgICAgICBpZiAoZGVjb2RlUmVjb3JkSGVhZGVyKGZpbGVEYXRhLCBtZXRhRGF0
YSwgaGVhZGVyRGF0YSkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVjb3JkIHJlY29yZCB7IG1l
dGFEYXRhLmtleSwgbWV0YURhdGEudGltZVN0YW1wLCBoZWFkZXJEYXRhLCB7IH0gfTsKKyAgICAg
ICAgICAgICAgICAgICAgUmVjb3JkIHJlY29yZCB7IG1ldGFEYXRhLmtleSwgc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludChtZXRhRGF0YS5lcG9jaFJlbGF0aXZlVGltZVN0YW1w
KSwgaGVhZGVyRGF0YSwgeyB9IH07CiAgICAgICAgICAgICAgICAgICAgIGluZm8uYm9keVNpemUg
PSBtZXRhRGF0YS5ib2R5U2l6ZTsKICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2VIYW5kbGVy
KCZyZWNvcmQsIGluZm8pOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdl
LmgJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBA
QCBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgUmVjb3JkIHsKICAgICAgICAgS2V5IGtleTsKLSAgICAg
ICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lU3RhbXA7CisgICAgICAgIHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZVN0YW1wOwogICAgICAgICBEYXRhIGhl
YWRlcjsKICAgICAgICAgRGF0YSBib2R5OwogICAgIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAxODIyNDEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIwMSwxMyArMjAxLDEzIEBAIHN0YXRpYyBTdHJpbmcgYnVpbGRIVFRQ
SGVhZGVycyhjb25zdCBSZXMKICAgICByZXR1cm4gaGVhZGVyczsKIH0KIAotc3RhdGljIHVpbnQz
Ml90IGxhc3RNb2RpZmllZERhdGUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitz
dGF0aWMgdWludDMyX3QgbGFzdE1vZGlmaWVkRGF0ZU1TKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewotICAgIGRvdWJsZSBsYXN0TW9kaWZpZWQgPSByZXNwb25zZS5sYXN0TW9k
aWZpZWQoKTsKLSAgICBpZiAoIXN0ZDo6aXNmaW5pdGUobGFzdE1vZGlmaWVkKSkKKyAgICBhdXRv
IGxhc3RNb2RpZmllZCA9IHJlc3BvbnNlLmxhc3RNb2RpZmllZCgpOworICAgIGlmICghbGFzdE1v
ZGlmaWVkKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBsYXN0TW9kaWZpZWQgKiAx
MDAwOworICAgIHJldHVybiBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6
bWlsbGlzZWNvbmRzPihsYXN0TW9kaWZpZWQudmFsdWUoKS50aW1lX3NpbmNlX2Vwb2NoKCkpLmNv
dW50KCk7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVj
ZWl2ZVJlc3BvCiAgICAgaWYgKGV4cGVjdGVkQ29udGVudExlbmd0aCA+IDApCiAgICAgICAgIHN0
cmVhbUxlbmd0aCA9IGV4cGVjdGVkQ29udGVudExlbmd0aDsKIAotICAgIG1fcGx1Z2luVmlldy0+
bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShtX3N0cmVhbUlELCByZXNwb25zZVVS
TCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhl
YWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgIG1fcGx1Z2luVmlldy0+
bV9wbHVnaW4tPnN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShtX3N0cmVhbUlELCByZXNwb25zZVVS
TCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBtaW1lVHlwZSwg
aGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKIHZvaWQgUGx1Z2lu
Vmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcios
IGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQg
UGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVSZXMKICAgICBpZiAoZXhwZWN0ZWRDb250
ZW50TGVuZ3RoID4gMCkKICAgICAgICAgc3RyZWFtTGVuZ3RoID0gZXhwZWN0ZWRDb250ZW50TGVu
Z3RoOwogCi0gICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShyZXNw
b25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlKHJlc3BvbnNlKSwgbWltZVR5
cGUsIGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgIG1fcGx1Z2lu
LT5tYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0
aCwgbGFzdE1vZGlmaWVkRGF0ZU1TKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3Bv
bnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwogfQogCiB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExv
YWREaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249972</attachid>
            <date>2015-04-02 05:32:22 -0700</date>
            <delta_ts>2015-04-02 06:20:18 -0700</delta_ts>
            <desc>another</desc>
            <filename>response-std-chrono-3.patch</filename>
            <type>text/plain</type>
            <size>41144</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjI1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE1LTA0LTAxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ugc3RkOjpjaHJvbm8gdHlw
ZXMgdG8gcmVwcmVzZW50IHRpbWUgaW4gcmVzcG9uc2UgYW5kIGNhY2hlIGNsYXNzZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzMxNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgVXNlIHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdG8gcmVwcmVzZW50IGNsb2NrIHRpbWVzIGFuZCBz
dGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIHRvCisgICAgICAgIHJlcHJlc2VudCBkdXJhdGlvbnMu
IEFsc28gdXNlIFdURjo6T3B0aW9uYWwgZm9yIG9wdGlvbmFsIHZhbHVlcyAoaW5zdGVhZCBvZiBj
b2RpbmcgdGhlbSBhcyBOYU5zKS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bGFzdE1vZGlmaWVkKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OkNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpm
cmVzaG5lc3NMaWZldGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVz
cG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
UmVzcG9uc2VBZnRlclJldmFsaWRhdGlvbik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseSk6CisgICAgICAgIChX
ZWJDb3JlOjp1cGRhdGVSZWRpcmVjdENoYWluU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OnJl
ZGlyZWN0Q2hhaW5BbGxvd3NSZXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNhY2hlQ29u
dHJvbERpcmVjdGl2ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXM6OlJlZGly
ZWN0Q2hhaW5DYWNoZVN0YXR1cyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUVFBEYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlRGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291
cmNlUmVzcG9uc2VCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNl
OjpjYWNoZUNvbnRyb2xNYXhBZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VEYXRlVmFsdWVJ
bkhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBpcmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXN0TW9kaWZpZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKwogMjAxNS0wNC0wMSAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhlIGlPUyBi
dWlsZCBhZnRlciByMTgyMjQwLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAxODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MTQyLDExICs0MTQyLDEwIEBAIFN0cmluZyBEb2N1bWVudDo6bGFzdE1vZGlmaWVk
KCkgY29uc3QKICAgICBEYXRlQ29tcG9uZW50cyBkYXRlOwogICAgIGJvb2wgZm91bmREYXRlID0g
ZmFsc2U7CiAgICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgU3RyaW5nIGh0dHBMYXN0TW9kaWZp
ZWQ7Ci0gICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBsb2FkZXIo
KSkgCi0gICAgICAgICAgICBodHRwTGFzdE1vZGlmaWVkID0gZG9jdW1lbnRMb2FkZXItPnJlc3Bv
bnNlKCkuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpMYXN0TW9kaWZpZWQpOwotICAg
ICAgICBpZiAoIWh0dHBMYXN0TW9kaWZpZWQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBkYXRl
LnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlVGltZShwYXJzZURhdGUoaHR0cExhc3RN
b2RpZmllZCkpOworICAgICAgICBhdXRvIGxhc3RNb2RpZmllZERhdGUgPSBsb2FkZXIoKSA/IGxv
YWRlcigpLT5yZXNwb25zZSgpLmxhc3RNb2RpZmllZCgpIDogTnVsbG9wdDsKKyAgICAgICAgaWYg
KGxhc3RNb2RpZmllZERhdGUpIHsKKyAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNo
cm9ubzsKKyAgICAgICAgICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGVU
aW1lKGR1cmF0aW9uX2Nhc3Q8bWlsbGlzZWNvbmRzPihsYXN0TW9kaWZpZWREYXRlLnZhbHVlKCku
dGltZV9zaW5jZV9lcG9jaCgpKS5jb3VudCgpKTsKICAgICAgICAgICAgIGZvdW5kRGF0ZSA9IHRy
dWU7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
Niw3ICsxMTYsNyBAQCBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UoY29uc3QgUmVzCiAg
ICAgLCBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lcigqdGhpcywgJkNhY2hlZFJlc291cmNlOjpk
ZWNvZGVkRGF0YURlbGV0aW9uVGltZXJGaXJlZCwgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRl
cnZhbEZvclJlc291cmNlVHlwZSh0eXBlKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkK
ICAgICAsIG1fbG9hZFByaW9yaXR5KGRlZmF1bHRQcmlvcml0eUZvclJlc291cmNlVHlwZSh0eXBl
KSkKLSAgICAsIG1fcmVzcG9uc2VUaW1lc3RhbXAoY3VycmVudFRpbWUoKSkKKyAgICAsIG1fcmVz
cG9uc2VUaW1lc3RhbXAoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkpCiAgICAgLCBt
X2xhc3REZWNvZGVkQWNjZXNzVGltZSgwKQogICAgICwgbV9sb2FkRmluaXNoVGltZSgwKQogICAg
ICwgbV9lbmNvZGVkU2l6ZSgwKQpAQCAtMzQ3LDE2ICszNDcsMTYgQEAgYm9vbCBDYWNoZWRSZXNv
dXJjZTo6aXNFeHBpcmVkKCkgY29uc3QKICAgICByZXR1cm4gY29tcHV0ZUN1cnJlbnRBZ2UobV9y
ZXNwb25zZSwgbV9yZXNwb25zZVRpbWVzdGFtcCkgPiBmcmVzaG5lc3NMaWZldGltZShtX3Jlc3Bv
bnNlKTsKIH0KIAotZG91YmxlIENhY2hlZFJlc291cmNlOjpmcmVzaG5lc3NMaWZldGltZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgY29uc3QKK3N0ZDo6Y2hyb25vOjptaWNyb3Nl
Y29uZHMgQ2FjaGVkUmVzb3VyY2U6OmZyZXNobmVzc0xpZmV0aW1lKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKSBjb25zdAogewogICAgIGlmICghcmVzcG9uc2UudXJsKCkucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgIC8vIERvbid0IGNhY2hlIG5vbi1IVFRQIG1h
aW4gcmVzb3VyY2VzIHNpbmNlIHdlIGNhbid0IGNoZWNrIGZvciBmcmVzaG5lc3MuCiAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGNhY2hlIHN1YnJlc291cmNlcyBlaXRoZXIsIGJ1dCB3
aGVuIHdlIHRyaWVkIHRoaXMKICAgICAgICAgLy8gaXQgY2F1c2VkIHBlcmZvcm1hbmNlIGFuZCBm
bGFraW5lc3MgaXNzdWVzIGluIG91ciB0ZXN0IGluZnJhc3RydWN0dXJlLgogICAgICAgICBpZiAo
bV90eXBlID09IE1haW5SZXNvdXJjZSAmJiAhU2NoZW1lUmVnaXN0cnk6OnNob3VsZENhY2hlUmVz
cG9uc2VzRnJvbVVSTFNjaGVtZUluZGVmaW5pdGVseShyZXNwb25zZS51cmwoKS5wcm90b2NvbCgp
KSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Y2hyb25v
OjptaWNyb3NlY29uZHM6Onplcm8oKTsKIAotICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjptYXgoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjptaWNyb3Nl
Y29uZHM6Om1heCgpOwogICAgIH0KIAogICAgIHJldHVybiBjb21wdXRlRnJlc2huZXNzTGlmZXRp
bWVGb3JIVFRQRmFtaWx5KHJlc3BvbnNlLCBtX3Jlc3BvbnNlVGltZXN0YW1wKTsKQEAgLTM3Myw3
ICszNzMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiB2b2lk
IENhY2hlZFJlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewogICAgIHNldFJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICBtX3Jlc3BvbnNl
VGltZXN0YW1wID0gY3VycmVudFRpbWUoKTsKKyAgICBtX3Jlc3BvbnNlVGltZXN0YW1wID0gc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCk7CiAgICAgU3RyaW5nIGVuY29kaW5nID0gcmVz
cG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOwogICAgIGlmICghZW5jb2RpbmcuaXNOdWxsKCkpCiAg
ICAgICAgIHNldEVuY29kaW5nKGVuY29kaW5nKTsKQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIENh
Y2hlZFJlc291cmNlOjpzd2l0Y2hDbGllbnRzVG9SZXZhCiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZVJlc3BvbnNlQWZ0ZXJSZXZhbGlkYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
dmFsaWRhdGluZ1Jlc3BvbnNlKQogewotICAgIG1fcmVzcG9uc2VUaW1lc3RhbXAgPSBjdXJyZW50
VGltZSgpOworICAgIG1fcmVzcG9uc2VUaW1lc3RhbXAgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjpub3coKTsKIAogICAgIHVwZGF0ZVJlc3BvbnNlSGVhZGVyc0FmdGVyUmV2YWxpZGF0aW9u
KG1fcmVzcG9uc2UsIHZhbGlkYXRpbmdSZXNwb25zZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMTgyMjQxKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4MCw3ICsyODAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjaGVja05v
dGlmeSgpOwogICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgZG91YmxlIGZyZXNobmVzc0xpZmV0aW1lKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBjb25zdDsKKyAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRz
IGZyZXNobmVzc0xpZmV0aW1lKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBjb25zdDsKIAogICAg
IHZvaWQgYWRkQWRkaXRpb25hbFJlcXVlc3RIZWFkZXJzKENhY2hlZFJlc291cmNlTG9hZGVyJik7
CiAgICAgdm9pZCBmYWlsQmVmb3JlU3RhcnRpbmcoKTsKQEAgLTI4OSw3ICsyODksNyBAQCBwcml2
YXRlOgogICAgIFNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBTdHJpbmcgbV9hY2NlcHQ7CiAg
ICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgbV9sb2FkUHJpb3JpdHk7Ci0gICAgZG91YmxlIG1fcmVz
cG9uc2VUaW1lc3RhbXA7CisgICAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dCBtX3Jlc3BvbnNlVGltZXN0YW1wOwogCiAgICAgU3RyaW5nIG1fZnJhZ21lbnRJZGVudGlmaWVy
Rm9yUmVxdWVzdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNo
ZVZhbGlkYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04OSw0OSArODksNTYgQEAgdm9pZCB1cGRhdGVSZXNwb25zZUhlYWRlcnNBZnRlclJldmFs
aWRhdAogICAgIH0KIH0KIAotZG91YmxlIGNvbXB1dGVDdXJyZW50QWdlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXApCitzdGQ6OmNocm9u
bzo6bWljcm9zZWNvbmRzIGNvbXB1dGVDdXJyZW50QWdlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHJlc3BvbnNl
VGltZXN0YW1wKQogeworICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKKwogICAgIC8v
IFJGQzI2MTYgMTMuMi4zCiAgICAgLy8gTm8gY29tcGVuc2F0aW9uIGZvciBsYXRlbmN5IGFzIHRo
YXQgaXMgbm90IHRlcnJpYmx5IGltcG9ydGFudCBpbiBwcmFjdGljZQotICAgIGRvdWJsZSBkYXRl
VmFsdWUgPSByZXNwb25zZS5kYXRlKCk7Ci0gICAgZG91YmxlIGFwcGFyZW50QWdlID0gc3RkOjpp
c2Zpbml0ZShkYXRlVmFsdWUpID8gc3RkOjptYXgoMC4sIHJlc3BvbnNlVGltZXN0YW1wIC0gZGF0
ZVZhbHVlKSA6IDA7Ci0gICAgZG91YmxlIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCk7Ci0gICAg
ZG91YmxlIGNvcnJlY3RlZFJlY2VpdmVkQWdlID0gc3RkOjppc2Zpbml0ZShhZ2VWYWx1ZSkgPyBz
dGQ6Om1heChhcHBhcmVudEFnZSwgYWdlVmFsdWUpIDogYXBwYXJlbnRBZ2U7Ci0gICAgZG91Ymxl
IHJlc2lkZW50VGltZSA9IGN1cnJlbnRUaW1lKCkgLSByZXNwb25zZVRpbWVzdGFtcDsKKyAgICBh
dXRvIGRhdGVWYWx1ZSA9IHJlc3BvbnNlLmRhdGUoKTsKKyAgICBhdXRvIGFwcGFyZW50QWdlID0g
ZGF0ZVZhbHVlID8gc3RkOjptYXgobWljcm9zZWNvbmRzOjp6ZXJvKCksIG1pY3Jvc2Vjb25kcyhy
ZXNwb25zZVRpbWVzdGFtcCAtIGRhdGVWYWx1ZS52YWx1ZSgpKSkgOiBtaWNyb3NlY29uZHM6Onpl
cm8oKTsKKyAgICBhdXRvIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCk7CisgICAgYXV0byBjb3Jy
ZWN0ZWRSZWNlaXZlZEFnZSA9IGFnZVZhbHVlID8gc3RkOjptYXg8bWljcm9zZWNvbmRzPihhcHBh
cmVudEFnZSwgYWdlVmFsdWUudmFsdWUoKSkgOiBhcHBhcmVudEFnZTsKKyAgICBhdXRvIHJlc2lk
ZW50VGltZSA9IHN5c3RlbV9jbG9jazo6bm93KCkgLSByZXNwb25zZVRpbWVzdGFtcDsKICAgICBy
ZXR1cm4gY29ycmVjdGVkUmVjZWl2ZWRBZ2UgKyByZXNpZGVudFRpbWU7CiB9CiAKLWRvdWJsZSBj
b21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXApCitzdGQ6OmNocm9ubzo6bWlj
cm9zZWNvbmRzIGNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQgcmVzcG9uc2VUaW1lc3RhbXApCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hy
b25vOwogICAgIEFTU0VSVChyZXNwb25zZS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkp
OworCiAgICAgLy8gUkZDMjYxNiAxMy4yLjQKLSAgICBkb3VibGUgbWF4QWdlVmFsdWUgPSByZXNw
b25zZS5jYWNoZUNvbnRyb2xNYXhBZ2UoKTsKLSAgICBpZiAoc3RkOjppc2Zpbml0ZShtYXhBZ2VW
YWx1ZSkpCi0gICAgICAgIHJldHVybiBtYXhBZ2VWYWx1ZTsKLSAgICBkb3VibGUgZXhwaXJlc1Zh
bHVlID0gcmVzcG9uc2UuZXhwaXJlcygpOwotICAgIGRvdWJsZSBkYXRlVmFsdWUgPSByZXNwb25z
ZS5kYXRlKCk7Ci0gICAgZG91YmxlIGNyZWF0aW9uVGltZSA9IHN0ZDo6aXNmaW5pdGUoZGF0ZVZh
bHVlKSA/IGRhdGVWYWx1ZSA6IHJlc3BvbnNlVGltZXN0YW1wOwotICAgIGlmIChzdGQ6OmlzZmlu
aXRlKGV4cGlyZXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiBleHBpcmVzVmFsdWUgLSBjcmVhdGlv
blRpbWU7Ci0gICAgZG91YmxlIGxhc3RNb2RpZmllZFZhbHVlID0gcmVzcG9uc2UubGFzdE1vZGlm
aWVkKCk7Ci0gICAgaWYgKHN0ZDo6aXNmaW5pdGUobGFzdE1vZGlmaWVkVmFsdWUpKQotICAgICAg
ICByZXR1cm4gKGNyZWF0aW9uVGltZSAtIGxhc3RNb2RpZmllZFZhbHVlKSAqIDAuMTsKKyAgICBh
dXRvIG1heEFnZSA9IHJlc3BvbnNlLmNhY2hlQ29udHJvbE1heEFnZSgpOworICAgIGlmIChtYXhB
Z2UpCisgICAgICAgIHJldHVybiBtYXhBZ2UudmFsdWUoKTsKKyAgICBhdXRvIGV4cGlyZXMgPSBy
ZXNwb25zZS5leHBpcmVzKCk7CisgICAgYXV0byBkYXRlID0gcmVzcG9uc2UuZGF0ZSgpOworICAg
IGF1dG8gY3JlYXRpb25UaW1lID0gZGF0ZSA/IGRhdGUudmFsdWUoKSA6IHJlc3BvbnNlVGltZXN0
YW1wOworICAgIGlmIChleHBpcmVzKQorICAgICAgICByZXR1cm4gZHVyYXRpb25fY2FzdDxtaWNy
b3NlY29uZHM+KGV4cGlyZXMudmFsdWUoKSAtIGNyZWF0aW9uVGltZSk7CisgICAgYXV0byBsYXN0
TW9kaWZpZWQgPSByZXNwb25zZS5sYXN0TW9kaWZpZWQoKTsKKyAgICBpZiAobGFzdE1vZGlmaWVk
KQorICAgICAgICByZXR1cm4gZHVyYXRpb25fY2FzdDxtaWNyb3NlY29uZHM+KChjcmVhdGlvblRp
bWUgLSBsYXN0TW9kaWZpZWQudmFsdWUoKSkgKiAwLjEpOwogICAgIC8vIElmIG5vIGNhY2hlIGhl
YWRlcnMgYXJlIHByZXNlbnQsIHRoZSBzcGVjaWZpY2F0aW9uIGxlYXZlcyB0aGUgZGVjaXNpb24g
dG8gdGhlIFVBLiBPdGhlciBicm93c2VycyBzZWVtIHRvIG9wdCBmb3IgMC4KLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbWljcm9zZWNvbmRzOjp6ZXJvKCk7CiB9CiAKIHZvaWQgdXBkYXRlUmVk
aXJlY3RDaGFpblN0YXR1cyhSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMmIHJlZGlyZWN0Q2hhaW5D
YWNoZVN0YXR1cywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CisgICAgdXNp
bmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOworCiAgICAgaWYgKHJlZGlyZWN0Q2hhaW5DYWNoZVN0
YXR1cy5zdGF0dXMgPT0gUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzOjpOb3RDYWNoZWRSZWRpcmVj
dGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChyZXNwb25zZS5jYWNoZUNvbnRyb2xDb250
YWluc05vU3RvcmUoKSB8fCByZXNwb25zZS5jYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSB8
fCByZXNwb25zZS5jYWNoZUNvbnRyb2xDb250YWluc011c3RSZXZhbGlkYXRlKCkpIHsKICAgICAg
ICAgcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLnN0YXR1cyA9IFJlZGlyZWN0Q2hhaW5DYWNoZVN0
YXR1czo6Tm90Q2FjaGVkUmVkaXJlY3Rpb247CiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAg
ICByZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMuc3RhdHVzID0gUmVkaXJlY3RDaGFpbkNhY2hlU3Rh
dHVzOjpDYWNoZWRSZWRpcmVjdGlvbjsKLSAgICBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXAgPSBj
dXJyZW50VGltZSgpOworICAgIGF1dG8gcmVzcG9uc2VUaW1lc3RhbXAgPSBzeXN0ZW1fY2xvY2s6
Om5vdygpOwogICAgIC8vIFN0b3JlIHRoZSBuZWFyZXN0IGVuZCBvZiBjYWNoZSB2YWxpZGl0eSBk
YXRlCi0gICAgZG91YmxlIGVuZE9mVmFsaWRpdHkgPSByZXNwb25zZVRpbWVzdGFtcCArIGNvbXB1
dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkocmVzcG9uc2UsIHJlc3BvbnNlVGltZXN0
YW1wKSAtIGNvbXB1dGVDdXJyZW50QWdlKHJlc3BvbnNlLCByZXNwb25zZVRpbWVzdGFtcCk7Cisg
ICAgYXV0byBlbmRPZlZhbGlkaXR5ID0gcmVzcG9uc2VUaW1lc3RhbXAgKyBjb21wdXRlRnJlc2hu
ZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KHJlc3BvbnNlLCByZXNwb25zZVRpbWVzdGFtcCkgLSBj
b21wdXRlQ3VycmVudEFnZShyZXNwb25zZSwgcmVzcG9uc2VUaW1lc3RhbXApOwogICAgIHJlZGly
ZWN0Q2hhaW5DYWNoZVN0YXR1cy5lbmRPZlZhbGlkaXR5ID0gc3RkOjptaW4ocmVkaXJlY3RDaGFp
bkNhY2hlU3RhdHVzLmVuZE9mVmFsaWRpdHksIGVuZE9mVmFsaWRpdHkpOwogfQogCkBAIC0xNDMs
NyArMTUwLDcgQEAgYm9vbCByZWRpcmVjdENoYWluQWxsb3dzUmV1c2UoUmVkaXJlY3RDaAogICAg
IGNhc2UgUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzOjpOb3RDYWNoZWRSZWRpcmVjdGlvbjoKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzOjpD
YWNoZWRSZWRpcmVjdGlvbjoKLSAgICAgICAgcmV0dXJuIHJldXNlRXhwaXJlZFJlZGlyZWN0aW9u
IHx8IGN1cnJlbnRUaW1lKCkgPD0gcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLmVuZE9mVmFsaWRp
dHk7CisgICAgICAgIHJldHVybiByZXVzZUV4cGlyZWRSZWRpcmVjdGlvbiB8fCBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjpub3coKSA8PSByZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMuZW5kT2ZW
YWxpZGl0eTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjQ4LDYgKzI1NSw4IEBAIHN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywg
U3RyaW5nPj4KIAogQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJvbERpcmVj
dGl2ZXMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKIHsKKyAgICB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOjpjaHJvbm87CisKICAgICBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIHJlc3VsdDsKIAog
ICAgIFN0cmluZyBjYWNoZUNvbnRyb2xWYWx1ZSA9IGhlYWRlcnMuZ2V0KEhUVFBIZWFkZXJOYW1l
OjpDYWNoZUNvbnRyb2wpOwpAQCAtMjY1LDI5ICsyNzQsMjkgQEAgQ2FjaGVDb250cm9sRGlyZWN0
aXZlcyBwYXJzZUNhY2hlQ29udHJvbAogICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UoZGlyZWN0aXZlc1tpXS5maXJzdCwgIm11c3QtcmV2YWxpZGF0ZSIpKQogICAgICAgICAg
ICAgICAgIHJlc3VsdC5tdXN0UmV2YWxpZGF0ZSA9IHRydWU7CiAgICAgICAgICAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShkaXJlY3RpdmVzW2ldLmZpcnN0LCAibWF4LWFnZSIpKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCFzdGQ6OmlzbmFuKHJlc3VsdC5tYXhBZ2UpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdC5tYXhBZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRmly
c3QgbWF4LWFnZSBkaXJlY3RpdmUgd2lucyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgb25lcy4KICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGJvb2wgb2s7CiAgICAgICAgICAgICAgICAgZG91YmxlIG1heEFnZSA9IGRpcmVjdGl2
ZXNbaV0uc2Vjb25kLnRvRG91YmxlKCZvayk7CiAgICAgICAgICAgICAgICAgaWYgKG9rKQotICAg
ICAgICAgICAgICAgICAgICByZXN1bHQubWF4QWdlID0gbWF4QWdlOworICAgICAgICAgICAgICAg
ICAgICByZXN1bHQubWF4QWdlID0gZHVyYXRpb25fY2FzdDxtaWNyb3NlY29uZHM+KGR1cmF0aW9u
PGRvdWJsZT4obWF4QWdlKSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGRpcmVjdGl2ZXNbaV0uZmlyc3QsICJtYXgtc3RhbGUiKSkgewogICAgICAgICAgICAgICAg
IC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjM0I3NlY3Rpb24tNS4yLjEuMgot
ICAgICAgICAgICAgICAgIGlmICghc3RkOjppc25hbihyZXN1bHQubWF4U3RhbGUpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHJlc3VsdC5tYXhTdGFsZSkgewogICAgICAgICAgICAgICAgICAgICAv
LyBGaXJzdCBtYXgtc3RhbGUgZGlyZWN0aXZlIHdpbnMgaWYgdGhlcmUgYXJlIG11bHRpcGxlIG9u
ZXMuCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBpZiAoZGlyZWN0aXZlc1tpXS5zZWNvbmQuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIC8vIGlmIG5vIHZhbHVlIGlzIGFzc2lnbmVkIHRvIG1heC1zdGFsZSwg
dGhlbiB0aGUgY2xpZW50IGlzIHdpbGxpbmcgdG8gYWNjZXB0IGEgc3RhbGUgcmVzcG9uc2Ugb2Yg
YW55IGFnZS4KLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heFN0YWxlID0gc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjptYXgoKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1h
eFN0YWxlID0gbWljcm9zZWNvbmRzOjptYXgoKTsKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJvb2wgb2s7CiAgICAgICAg
ICAgICAgICAgZG91YmxlIG1heFN0YWxlID0gZGlyZWN0aXZlc1tpXS5zZWNvbmQudG9Eb3VibGUo
Jm9rKTsKICAgICAgICAgICAgICAgICBpZiAob2spCi0gICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC5tYXhTdGFsZSA9IG1heFN0YWxlOworICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF4U3Rh
bGUgPSBkdXJhdGlvbl9jYXN0PG1pY3Jvc2Vjb25kcz4oZHVyYXRpb248ZG91YmxlPihtYXhTdGFs
ZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5oCShyZXZpc2lvbiAx
ODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaWZuZGVmIENhY2hlVmFsaWRh
dGlvbl9oCiAjZGVmaW5lIENhY2hlVmFsaWRhdGlvbl9oCiAKKyNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBIVFRQSGVhZGVyTWFwOwpAQCAt
MzksMTQgKzQxLDE0IEBAIHN0cnVjdCBSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMgewogICAgIH07
CiAgICAgUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzKCkKICAgICAgICAgOiBzdGF0dXMoTm9SZWRp
cmVjdGlvbikKLSAgICAgICAgLCBlbmRPZlZhbGlkaXR5KHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91
YmxlPjo6bWF4KCkpCisgICAgICAgICwgZW5kT2ZWYWxpZGl0eShzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50OjptYXgoKSkKICAgICB7IH0KICAgICBTdGF0dXMgc3RhdHVzOwot
ICAgIGRvdWJsZSBlbmRPZlZhbGlkaXR5OworICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQgZW5kT2ZWYWxpZGl0eTsKIH07CiAKLVdFQkNPUkVfRVhQT1JUIGRvdWJsZSBj
b21wdXRlQ3VycmVudEFnZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgZG91YmxlIHJlc3BvbnNl
VGltZXN0YW1wKTsKLVdFQkNPUkVfRVhQT1JUIGRvdWJsZSBjb21wdXRlRnJlc2huZXNzTGlmZXRp
bWVGb3JIVFRQRmFtaWx5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBkb3VibGUgcmVzcG9uc2VU
aW1lc3RhbXApOworV0VCQ09SRV9FWFBPUlQgc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBjb21w
dXRlQ3VycmVudEFnZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludCByZXNwb25zZVRpbWVzdGFtcCk7CitXRUJDT1JFX0VYUE9SVCBz
dGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIGNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBG
YW1pbHkoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQgcmVzcG9uc2VUaW1lc3RhbXApOwogV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRh
dGVSZXNwb25zZUhlYWRlcnNBZnRlclJldmFsaWRhdGlvbihSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdXBkYXRlUmVkaXJlY3RDaGFpblN0YXR1cyhSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKQEAgLTU0LDggKzU2LDggQEAgZW51bSBSZXVz
ZUV4cGlyZWRSZWRpcmVjdGlvbk9yTm90IHsgRG9ObwogV0VCQ09SRV9FWFBPUlQgYm9vbCByZWRp
cmVjdENoYWluQWxsb3dzUmV1c2UoUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLCBSZXVzZUV4cGly
ZWRSZWRpcmVjdGlvbk9yTm90KTsKIAogc3RydWN0IENhY2hlQ29udHJvbERpcmVjdGl2ZXMgewot
ICAgIGRvdWJsZSBtYXhBZ2UgeyBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpIH07Ci0gICAgZG91YmxlIG1heFN0YWxlIHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjpxdWlldF9OYU4oKSB9OworICAgIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+
IG1heEFnZTsKKyAgICBPcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBtYXhTdGFs
ZTsKICAgICBib29sIG5vQ2FjaGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbm9TdG9yZSB7IGZhbHNl
IH07CiAgICAgYm9vbCBtdXN0UmV2YWxpZGF0ZSB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAkocmV2aXNpb24gMTgy
MjQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIzNCw5ICsyMzQsMTQgQEAgYm9vbCBwYXJzZUhUVFBSZWZyZXNo
KGNvbnN0IFN0cmluZyYgcmVmcgogICAgIH0KIH0KIAotZG91YmxlIHBhcnNlRGF0ZShjb25zdCBT
dHJpbmcmIHZhbHVlKQorT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludD4gcGFyc2VIVFRQRGF0ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIHJldHVybiBw
YXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKHZhbHVlLnV0ZjgoKS5kYXRhKCkp
OworICAgIGRvdWJsZSBkYXRlSW5NaWxsaXNlY29uZHNTaW5jZUVwb2NoID0gcGFyc2VEYXRlRnJv
bU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyh2YWx1ZS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAo
IXN0ZDo6aXNmaW5pdGUoZGF0ZUluTWlsbGlzZWNvbmRzU2luY2VFcG9jaCkpCisgICAgICAgIHJl
dHVybiB7IH07CisgICAgLy8gVGhpcyBhc3N1bWVzIHN5c3RlbV9jbG9jayBlcG9jaCBlcXVhbHMg
VW5peCBlcG9jaCB3aGljaCBpcyB0cnVlIGZvciBhbGwgaW1wbGVtZW50YXRpb25zIGJ1dCB1bnNw
ZWNpZmllZC4KKyAgICAvLyBGSVhNRTogVGhlIHBhcnNpbmcgZnVuY3Rpb24gc2hvdWxkIGJlIHN3
aXRjaGVkIHRvIHN0ZDo6Y2hyb25vIHRvby4KKyAgICByZXR1cm4gc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludChzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0ZUluTWlsbGlzZWNvbmRzU2luY2VFcG9jaCkpKTsKIH0KIAogLy8gRklY
TUU6IFRoaXMgZnVuY3Rpb24gZG9lc24ndCBjb21wbHkgd2l0aCBSRkMgNjI2Ni4KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgJKHJldmlzaW9u
IDE4MjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTY0LDcgKzY1LDcgQEAgQ29udGVudERpc3Bvc2l0aW9uVHlwZSBjb250ZW50RGlzcG9z
aXRpbwogYm9vbCBpc1ZhbGlkSFRUUEhlYWRlclZhbHVlKGNvbnN0IFN0cmluZyYpOwogYm9vbCBp
c1ZhbGlkSFRUUFRva2VuKGNvbnN0IFN0cmluZyYpOwogYm9vbCBwYXJzZUhUVFBSZWZyZXNoKGNv
bnN0IFN0cmluZyYgcmVmcmVzaCwgYm9vbCBmcm9tSHR0cEVxdWl2TWV0YSwgZG91YmxlJiBkZWxh
eSwgU3RyaW5nJiB1cmwpOwotZG91YmxlIHBhcnNlRGF0ZShjb25zdCBTdHJpbmcmKTsKK09wdGlv
bmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IHBhcnNlSFRUUERhdGUo
Y29uc3QgU3RyaW5nJik7CiBTdHJpbmcgZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlv
bihjb25zdCBTdHJpbmcmKTsgCiBTdHJpbmcgZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShj
b25zdCBTdHJpbmcmKTsKIFN0cmluZyBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29uc3Qg
U3RyaW5nJik7IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw0MiArNDMsMjIgQEAgaW5saW5lIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIFJlc291cmNlUgogICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VS
ZXNwb25zZSo+KHRoaXMpOwogfQogCi1SZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNw
b25zZUJhc2UoKSAgCi0gICAgOiBtX2V4cGVjdGVkQ29udGVudExlbmd0aCgwKQorUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKCkKKyAgICA6IG1faXNOdWxsKHRydWUp
CisgICAgLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCgwKQogICAgICwgbV9pbmNsdWRlc0NlcnRp
ZmljYXRlSW5mbyhmYWxzZSkKICAgICAsIG1faHR0cFN0YXR1c0NvZGUoMCkKLSAgICAsIG1fYWdl
KDApCi0gICAgLCBtX2RhdGUoMCkKLSAgICAsIG1fZXhwaXJlcygwKQotICAgICwgbV9sYXN0TW9k
aWZpZWQoMCkKLSAgICAsIG1faXNOdWxsKHRydWUpCi0gICAgLCBtX2hhdmVQYXJzZWRDYWNoZUNv
bnRyb2xIZWFkZXIoZmFsc2UpCi0gICAgLCBtX2hhdmVQYXJzZWRBZ2VIZWFkZXIoZmFsc2UpCi0g
ICAgLCBtX2hhdmVQYXJzZWREYXRlSGVhZGVyKGZhbHNlKQotICAgICwgbV9oYXZlUGFyc2VkRXhw
aXJlc0hlYWRlcihmYWxzZSkKLSAgICAsIG1faGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRlcihm
YWxzZSkKLSAgICAsIG1fc291cmNlKFNvdXJjZTo6VW5rbm93bikKIHsKIH0KIAogUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nTmFtZSkKLSAgICA6IG1fdXJsKHVybCkKKyAgICA6IG1faXNOdWxsKGZhbHNl
KQorICAgICwgbV91cmwodXJsKQogICAgICwgbV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1f
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKGV4cGVjdGVkTGVuZ3RoKQogICAgICwgbV90ZXh0RW5jb2Rp
bmdOYW1lKHRleHRFbmNvZGluZ05hbWUpCiAgICAgLCBtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZv
KHRydWUpIC8vIEVtcHR5IGJ1dCB2YWxpZCBmb3Igc3ludGhldGljIHJlc3BvbnNlcy4KICAgICAs
IG1faHR0cFN0YXR1c0NvZGUoMCkKLSAgICAsIG1fYWdlKDApCi0gICAgLCBtX2RhdGUoMCkKLSAg
ICAsIG1fZXhwaXJlcygwKQotICAgICwgbV9sYXN0TW9kaWZpZWQoMCkKLSAgICAsIG1faXNOdWxs
KGZhbHNlKQotICAgICwgbV9oYXZlUGFyc2VkQ2FjaGVDb250cm9sSGVhZGVyKGZhbHNlKQotICAg
ICwgbV9oYXZlUGFyc2VkQWdlSGVhZGVyKGZhbHNlKQotICAgICwgbV9oYXZlUGFyc2VkRGF0ZUhl
YWRlcihmYWxzZSkKLSAgICAsIG1faGF2ZVBhcnNlZEV4cGlyZXNIZWFkZXIoZmFsc2UpCi0gICAg
LCBtX2hhdmVQYXJzZWRMYXN0TW9kaWZpZWRIZWFkZXIoZmFsc2UpCi0gICAgLCBtX3NvdXJjZShT
b3VyY2U6OlVua25vd24pCiB7CiB9CiAKQEAgLTM4MSwyOSArMzYxLDI2IEBAIGJvb2wgUmVzb3Vy
Y2VSZXNwb25zZUJhc2U6Omhhc0NhY2hlVmFsaWQKICAgICByZXR1cm4gIW1faHR0cEhlYWRlckZp
ZWxkcy5nZXQoSFRUUEhlYWRlck5hbWU6Okxhc3RNb2RpZmllZCkuaXNFbXB0eSgpIHx8ICFtX2h0
dHBIZWFkZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpFVGFnKS5pc0VtcHR5KCk7CiB9CiAK
LWRvdWJsZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2FjaGVDb250cm9sTWF4QWdlKCkgY29uc3QK
K09wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IFJlc291cmNlUmVzcG9uc2VCYXNl
OjpjYWNoZUNvbnRyb2xNYXhBZ2UoKSBjb25zdAogewogICAgIGlmICghbV9oYXZlUGFyc2VkQ2Fj
aGVDb250cm9sSGVhZGVyKQogICAgICAgICBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoKTsK
ICAgICByZXR1cm4gbV9jYWNoZUNvbnRyb2xEaXJlY3RpdmVzLm1heEFnZTsKIH0KIAotc3RhdGlj
IGRvdWJsZSBwYXJzZURhdGVWYWx1ZUluSGVhZGVyKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRl
cnMsIEhUVFBIZWFkZXJOYW1lIGhlYWRlck5hbWUpCitzdGF0aWMgT3B0aW9uYWw8c3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gcGFyc2VEYXRlVmFsdWVJbkhlYWRlcihjb25z
dCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBIVFRQSGVhZGVyTmFtZSBoZWFkZXJOYW1lKQogewog
ICAgIFN0cmluZyBoZWFkZXJWYWx1ZSA9IGhlYWRlcnMuZ2V0KGhlYWRlck5hbWUpOwogICAgIGlm
IChoZWFkZXJWYWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46OnF1aWV0X05hTigpOyAKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICAvLyBU
aGlzIGhhbmRsZXMgYWxsIGRhdGUgZm9ybWF0cyByZXF1aXJlZCBieSBSRkMyNjE2OgogICAgIC8v
IFN1biwgMDYgTm92IDE5OTQgMDg6NDk6MzcgR01UICA7IFJGQyA4MjIsIHVwZGF0ZWQgYnkgUkZD
IDExMjMKICAgICAvLyBTdW5kYXksIDA2LU5vdi05NCAwODo0OTozNyBHTVQgOyBSRkMgODUwLCBv
YnNvbGV0ZWQgYnkgUkZDIDEwMzYKICAgICAvLyBTdW4gTm92ICA2IDA4OjQ5OjM3IDE5OTQgICAg
ICAgOyBBTlNJIEMncyBhc2N0aW1lKCkgZm9ybWF0Ci0gICAgZG91YmxlIGRhdGVJbk1pbGxpc2Vj
b25kcyA9IHBhcnNlRGF0ZShoZWFkZXJWYWx1ZSk7Ci0gICAgaWYgKCFzdGQ6OmlzZmluaXRlKGRh
dGVJbk1pbGxpc2Vjb25kcykpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRv
dWJsZT46OnF1aWV0X05hTigpOwotICAgIHJldHVybiBkYXRlSW5NaWxsaXNlY29uZHMgLyAxMDAw
OworICAgIHJldHVybiBwYXJzZUhUVFBEYXRlKGhlYWRlclZhbHVlKTsKIH0KIAotZG91YmxlIFJl
c291cmNlUmVzcG9uc2VCYXNlOjpkYXRlKCkgY29uc3QKK09wdGlvbmFsPHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpkYXRlKCkgY29u
c3QKIHsKICAgICBsYXp5SW5pdChDb21tb25GaWVsZHNPbmx5KTsKIApAQCAtNDE0LDIyICszOTEs
MjQgQEAgZG91YmxlIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkYXRlKCkgY29ucwogICAgIHJldHVy
biBtX2RhdGU7CiB9CiAKLWRvdWJsZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWdlKCkgY29uc3QK
K09wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IFJlc291cmNlUmVzcG9uc2VCYXNl
OjphZ2UoKSBjb25zdAogeworICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKKwogICAg
IGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogCiAgICAgaWYgKCFtX2hhdmVQYXJzZWRBZ2VI
ZWFkZXIpIHsKICAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlID0gbV9odHRwSGVhZGVyRmllbGRz
LmdldChIVFRQSGVhZGVyTmFtZTo6QWdlKTsKICAgICAgICAgYm9vbCBvazsKLSAgICAgICAgbV9h
Z2UgPSBoZWFkZXJWYWx1ZS50b0RvdWJsZSgmb2spOwotICAgICAgICBpZiAoIW9rKQotICAgICAg
ICAgICAgbV9hZ2UgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwor
ICAgICAgICBkb3VibGUgYWdlRG91YmxlID0gaGVhZGVyVmFsdWUudG9Eb3VibGUoJm9rKTsKKyAg
ICAgICAgaWYgKG9rKQorICAgICAgICAgICAgbV9hZ2UgPSBkdXJhdGlvbl9jYXN0PG1pY3Jvc2Vj
b25kcz4oZHVyYXRpb248ZG91YmxlPihhZ2VEb3VibGUpKTsKICAgICAgICAgbV9oYXZlUGFyc2Vk
QWdlSGVhZGVyID0gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIG1fYWdlOwogfQogCi1kb3VibGUg
UmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyZXMoKSBjb25zdAorT3B0aW9uYWw8c3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGly
ZXMoKSBjb25zdAogewogICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogCkBAIC00NDAs
NyArNDE5LDcgQEAgZG91YmxlIFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBpcmVzKCkgYwogICAg
IHJldHVybiBtX2V4cGlyZXM7CiB9CiAKLWRvdWJsZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFz
dE1vZGlmaWVkKCkgY29uc3QKK09wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQ+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXN0TW9kaWZpZWQoKSBjb25zdAogewog
ICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCShyZXZp
c2lvbiAxODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
UmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCwxMSArMTA0LDExIEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhY2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgp
IGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FjaGVDb250cm9sQ29udGFpbnNNdXN0
UmV2YWxpZGF0ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzQ2FjaGVWYWxp
ZGF0b3JGaWVsZHMoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgY2FjaGVDb250
cm9sTWF4QWdlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGRhdGUoKSBjb25zdDsKLSAgICBkb3VibGUg
YWdlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZG91YmxlIGV4cGlyZXMoKSBjb25zdDsK
LSAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgbGFzdE1vZGlmaWVkKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgT3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gY2FjaGVDb250
cm9sTWF4QWdlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8c3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gZGF0ZSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IGFnZSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQ+IGV4cGlyZXMoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBsYXN0TW9kaWZpZWQoKSBjb25z
dDsKIAogICAgIGVudW0gY2xhc3MgU291cmNlIHsgVW5rbm93biwgTmV0d29yaywgRGlza0NhY2hl
LCBEaXNrQ2FjaGVBZnRlclZhbGlkYXRpb24gfTsKICAgICBXRUJDT1JFX0VYUE9SVCBTb3VyY2Ug
c291cmNlKCkgY29uc3Q7CkBAIC0xNDcsNiArMTQ3LDEzIEBAIHByb3RlY3RlZDoKIAogICAgIHN0
YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KIAorcHJpdmF0ZToKKyAgICBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiBhc1Jlc291cmNlUmVzcG9uc2UoKSBjb25zdDsKKyAgICB2b2lk
IHBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcygpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlSGVh
ZGVyUGFyc2VkU3RhdGUoSFRUUEhlYWRlck5hbWUpOworCitwcm90ZWN0ZWQ6CisgICAgYm9vbCBt
X2lzTnVsbDsKICAgICBVUkwgbV91cmw7CiAgICAgQXRvbWljU3RyaW5nIG1fbWltZVR5cGU7CiAg
ICAgbG9uZyBsb25nIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwpAQCAtMTYxLDI3ICsxNjgsMTkg
QEAgcHJvdGVjdGVkOgogICAgIGludCBtX2h0dHBTdGF0dXNDb2RlOwogCiBwcml2YXRlOgotICAg
IG11dGFibGUgZG91YmxlIG1fYWdlOwotICAgIG11dGFibGUgZG91YmxlIG1fZGF0ZTsKLSAgICBt
dXRhYmxlIGRvdWJsZSBtX2V4cGlyZXM7Ci0gICAgbXV0YWJsZSBkb3VibGUgbV9sYXN0TW9kaWZp
ZWQ7CisgICAgbXV0YWJsZSBPcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBtX2Fn
ZTsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQ+IG1fZGF0ZTsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQ+IG1fZXhwaXJlczsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IG1fbGFzdE1vZGlmaWVkOwogICAgIG11
dGFibGUgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBtX2NhY2hlQ29udHJvbERpcmVjdGl2ZXM7CiAK
LXB1YmxpYzoKLSAgICBib29sIG1faXNOdWxsIDogMTsKLSAgICAKLXByaXZhdGU6Ci0gICAgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgYXNSZXNvdXJjZVJlc3BvbnNlKCkgY29uc3Q7Ci0gICAgdm9p
ZCBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUhl
YWRlclBhcnNlZFN0YXRlKEhUVFBIZWFkZXJOYW1lKTsKLQotICAgIG11dGFibGUgYm9vbCBtX2hh
dmVQYXJzZWRDYWNoZUNvbnRyb2xIZWFkZXIgOiAxOwotICAgIG11dGFibGUgYm9vbCBtX2hhdmVQ
YXJzZWRBZ2VIZWFkZXIgOiAxOwotICAgIG11dGFibGUgYm9vbCBtX2hhdmVQYXJzZWREYXRlSGVh
ZGVyIDogMTsKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXZlUGFyc2VkRXhwaXJlc0hlYWRlciA6IDE7
Ci0gICAgbXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRlciA6IDE7Cisg
ICAgbXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZENhY2hlQ29udHJvbEhlYWRlciB7IGZhbHNlIH07
CisgICAgbXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZEFnZUhlYWRlciB7IGZhbHNlIH07CisgICAg
bXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZERhdGVIZWFkZXIgeyBmYWxzZSB9OworICAgIG11dGFi
bGUgYm9vbCBtX2hhdmVQYXJzZWRFeHBpcmVzSGVhZGVyIHsgZmFsc2UgfTsKKyAgICBtdXRhYmxl
IGJvb2wgbV9oYXZlUGFyc2VkTGFzdE1vZGlmaWVkSGVhZGVyIHsgZmFsc2UgfTsKIAotICAgIFNv
dXJjZSBtX3NvdXJjZTsKKyAgICBTb3VyY2UgbV9zb3VyY2UgeyBTb3VyY2U6OlVua25vd24gfTsK
IH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gUmVzb3VyY2VSZXNwb25zZUJhc2U6
OmNvbXBhcmUoYSwgYik7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjI1MykKKysrIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisy
MDE1LTA0LTAxICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBV
c2Ugc3RkOjpjaHJvbm8gdHlwZXMgdG8gcmVwcmVzZW50IHRpbWUgaW4gcmVzcG9uc2UgYW5kIGNh
Y2hlIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MzMxNgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6cmVzcG9uc2VIYXNFeHBpcmVkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpyZXNwb25zZU5lZWRzUmV2YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjptYWtlU3RvcmVEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6Q2FjaGU6OnN0b3JlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6
RW50cnk6OkVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6YXNK
U09OKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5o
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5Ojp0aW1lU3RhbXApOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmRlY29kZVJlY29yZE1ldGFEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpkZWNvZGVSZWNvcmQpOgorCisgICAgICAgICAgICBT
YW5pdHkgY2hlY2sgdGhlIHRpbWVzdGFtcCBvbiBkZWNvZGUuCisKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjplbmNvZGVSZWNvcmRNZXRhRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6ZW5jb2RlUmVjb3JkSGVhZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJzZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bGFzdE1vZGlmaWVkRGF0ZU1TKToKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYktpdDo6bGFzdE1vZGlmaWVkRGF0ZSk6IERlbGV0ZWQuCisKIDIwMTUt
MDQtMDEgIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFNtYXJ0IG1hZ25pZmljYXRpb24gZ2VzdHVyZSBzb21ldGltZXMgc2hvb3RzIHRvIHRoZSBt
aWRkbGUgb2YgdGhlIHBhZ2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTgyMjQxKQor
KysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzE4LDkgKzMxOCw5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpkaWRGaW5pc2hMb2EKICAgICAgICAgYm9vbCBhbGxvd1N0YWxlID0gb3JpZ2luYWxS
ZXF1ZXN0KCkuY2FjaGVQb2xpY3koKSA+PSBSZXR1cm5DYWNoZURhdGFFbHNlTG9hZDsKICAgICAg
ICAgYm9vbCBoYXNDYWNoZWFibGVSZWRpcmVjdCA9IG1fcmVzcG9uc2UuaXNIVFRQKCkgJiYgV2Vi
Q29yZTo6cmVkaXJlY3RDaGFpbkFsbG93c1JldXNlKG1fcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVz
LCBhbGxvd1N0YWxlID8gV2ViQ29yZTo6UmV1c2VFeHBpcmVkUmVkaXJlY3Rpb24gOiBXZWJDb3Jl
OjpEb05vdFJldXNlRXhwaXJlZFJlZGlyZWN0aW9uKTsKICAgICAgICAgaWYgKGhhc0NhY2hlYWJs
ZVJlZGlyZWN0ICYmIG1fcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLnN0YXR1cyA9PSBSZWRpcmVj
dENoYWluQ2FjaGVTdGF0dXM6OkNhY2hlZFJlZGlyZWN0aW9uKSB7Ci0gICAgICAgICAgICAvLyBG
SVhNRTogQ2FjaGUgdGhlIGFjdHVhbCByZWRpcmVjdHMgaW5zdGVhZCBvZiB0aGUgZW5kIHJlc3Vs
dC4KLSAgICAgICAgICAgIGRvdWJsZSBub3cgPSBjdXJyZW50VGltZSgpOwotICAgICAgICAgICAg
ZG91YmxlIHJlc3BvbnNlRW5kT2ZWYWxpZGl0eSA9IG5vdyArIFdlYkNvcmU6OmNvbXB1dGVGcmVz
aG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkobV9yZXNwb25zZSwgbm93KSAtIFdlYkNvcmU6OmNv
bXB1dGVDdXJyZW50QWdlKG1fcmVzcG9uc2UsIG5vdyk7CisgICAgICAgICAgICAvLyBNYXliZSB3
ZSBzaG91bGQgY2FjaGUgdGhlIGFjdHVhbCByZWRpcmVjdHMgaW5zdGVhZCBvZiB0aGUgZW5kIHJl
c3VsdD8KKyAgICAgICAgICAgIGF1dG8gbm93ID0gc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6
bm93KCk7CisgICAgICAgICAgICBhdXRvIHJlc3BvbnNlRW5kT2ZWYWxpZGl0eSA9IG5vdyArIFdl
YkNvcmU6OmNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkobV9yZXNwb25zZSwg
bm93KSAtIFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKG1fcmVzcG9uc2UsIG5vdyk7CiAgICAg
ICAgICAgICBoYXNDYWNoZWFibGVSZWRpcmVjdCA9IHJlc3BvbnNlRW5kT2ZWYWxpZGl0eSA8PSBt
X3JlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5lbmRPZlZhbGlkaXR5OwogICAgICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDE3ICsx
NTAsMTYgQEAgc3RhdGljIGJvb2wgY2FjaGVQb2xpY3lBbGxvd3NFeHBpcmVkKFdlYgogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgcmVzcG9uc2VIYXNFeHBpcmVkKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNv
bmRzIHRpbWVzdGFtcCwgZG91YmxlIG1heFN0YWxlKQorc3RhdGljIGJvb2wgcmVzcG9uc2VIYXNF
eHBpcmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWVzdGFtcCwgT3B0aW9uYWw8c3RkOjpj
aHJvbm86Om1pY3Jvc2Vjb25kcz4gbWF4U3RhbGUpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmNhY2hl
Q29udHJvbENvbnRhaW5zTm9DYWNoZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGF1
dG8gZG91YmxlVGltZVN0YW1wID0gc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4odGltZXN0
YW1wKTsKLSAgICBkb3VibGUgYWdlID0gV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UocmVzcG9u
c2UsIGRvdWJsZVRpbWVTdGFtcC5jb3VudCgpKTsKLSAgICBkb3VibGUgbGlmZXRpbWUgPSBXZWJD
b3JlOjpjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KHJlc3BvbnNlLCBkb3Vi
bGVUaW1lU3RhbXAuY291bnQoKSk7CisgICAgYXV0byBhZ2UgPSBXZWJDb3JlOjpjb21wdXRlQ3Vy
cmVudEFnZShyZXNwb25zZSwgdGltZXN0YW1wKTsKKyAgICBhdXRvIGxpZmV0aW1lID0gV2ViQ29y
ZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShyZXNwb25zZSwgdGltZXN0
YW1wKTsKIAotICAgIG1heFN0YWxlID0gc3RkOjppc25hbihtYXhTdGFsZSkgPyAwIDogbWF4U3Rh
bGU7Ci0gICAgYm9vbCBoYXNFeHBpcmVkID0gYWdlIC0gbGlmZXRpbWUgPiBtYXhTdGFsZTsKKyAg
ICBhdXRvIG1heGltdW1TdGFsZW5lc3MgPSBtYXhTdGFsZSA/IG1heFN0YWxlLnZhbHVlKCkgOiBz
dGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzOjp6ZXJvKCk7CisgICAgYm9vbCBoYXNFeHBpcmVkID0g
YWdlIC0gbGlmZXRpbWUgPiBtYXhpbXVtU3RhbGVuZXNzOwogCiAjaWZuZGVmIExPR19ESVNBQkxF
RAogICAgIGlmIChoYXNFeHBpcmVkKQpAQCAtMTcwLDE0ICsxNjksMTYgQEAgc3RhdGljIGJvb2wg
cmVzcG9uc2VIYXNFeHBpcmVkKGNvbnN0IFdlYgogICAgIHJldHVybiBoYXNFeHBpcmVkOwogfQog
Ci1zdGF0aWMgYm9vbCByZXNwb25zZU5lZWRzUmV2YWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZXN0YW1wKQorc3RhdGljIGJv
b2wgcmVzcG9uc2VOZWVkc1JldmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWVzdGFtcCkKIHsKICAgICBh
dXRvIHJlcXVlc3REaXJlY3RpdmVzID0gV2ViQ29yZTo6cGFyc2VDYWNoZUNvbnRyb2xEaXJlY3Rp
dmVzKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpKTsKICAgICBpZiAocmVxdWVzdERpcmVjdGl2
ZXMubm9DYWNoZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgLy8gRm9yIHJlcXVlc3RzIHdl
IGlnbm9yZSBtYXgtYWdlIHZhbHVlcyBvdGhlciB0aGFuIHplcm8uCi0gICAgaWYgKHJlcXVlc3RE
aXJlY3RpdmVzLm1heEFnZSA9PSAwKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAocmVx
dWVzdERpcmVjdGl2ZXMubWF4QWdlKSB7CisgICAgICAgIGlmIChyZXF1ZXN0RGlyZWN0aXZlcy5t
YXhBZ2UudmFsdWUoKSA9PSBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzOjp6ZXJvKCkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKICAgICByZXR1cm4gcmVzcG9uc2VIYXNFeHBp
cmVkKHJlc3BvbnNlLCB0aW1lc3RhbXAsIHJlcXVlc3REaXJlY3RpdmVzLm1heFN0YWxlKTsKIH0K
QEAgLTI2OSw3ICsyNzAsNyBAQCBzdGF0aWMgU3RvcmVEZWNpc2lvbiBtYWtlU3RvcmVEZWNpc2lv
bihjCiAKICAgICBpZiAoIWlzU3RhdHVzQ29kZUNhY2hlYWJsZUJ5RGVmYXVsdChyZXNwb25zZS5o
dHRwU3RhdHVzQ29kZSgpKSkgewogICAgICAgICAvLyBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRt
bC9yZmM3MjM0I3NlY3Rpb24tNC4zLjIKLSAgICAgICAgYm9vbCBoYXNFeHBpcmF0aW9uSGVhZGVy
cyA9IHN0ZDo6aXNmaW5pdGUocmVzcG9uc2UuZXhwaXJlcygpKSB8fCBzdGQ6OmlzZmluaXRlKHJl
c3BvbnNlLmNhY2hlQ29udHJvbE1heEFnZSgpKTsKKyAgICAgICAgYm9vbCBoYXNFeHBpcmF0aW9u
SGVhZGVycyA9IHJlc3BvbnNlLmV4cGlyZXMoKSB8fCByZXNwb25zZS5jYWNoZUNvbnRyb2xNYXhB
Z2UoKTsKICAgICAgICAgYm9vbCBleHBpcmF0aW9uSGVhZGVyc0FsbG93Q2FjaGluZyA9IGlzU3Rh
dHVzQ29kZVBvdGVudGlhbGx5Q2FjaGVhYmxlKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpICYm
IGhhc0V4cGlyYXRpb25IZWFkZXJzOwogICAgICAgICBpZiAoIWV4cGlyYXRpb25IZWFkZXJzQWxs
b3dDYWNoaW5nKQogICAgICAgICAgICAgcmV0dXJuIFN0b3JlRGVjaXNpb246Ok5vRHVlVG9IVFRQ
U3RhdHVzQ29kZTsKQEAgLTI3OCw4ICsyNzksOCBAQCBzdGF0aWMgU3RvcmVEZWNpc2lvbiBtYWtl
U3RvcmVEZWNpc2lvbihjCiAgICAgLy8gTWFpbiByZXNvdXJjZSBoYXMgUmVzb3VyY2VMb2FkUHJp
b3JpdHlWZXJ5SGlnaC4KICAgICBib29sIHN0b3JlVW5jb25kaXRpb25hbGx5Rm9ySGlzdG9yeU5h
dmlnYXRpb24gPSBvcmlnaW5hbFJlcXVlc3QucHJpb3JpdHkoKSA9PSBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRQcmlvcml0eVZlcnlIaWdoOwogICAgIGlmICghc3RvcmVVbmNvbmRpdGlvbmFsbHlGb3JI
aXN0b3J5TmF2aWdhdGlvbikgewotICAgICAgICBhdXRvIGN1cnJlbnRUaW1lID0gc3RkOjpjaHJv
bm86OmR1cmF0aW9uPGRvdWJsZT4oc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkudGlt
ZV9zaW5jZV9lcG9jaCgpKTsKLSAgICAgICAgYm9vbCBoYXNOb25aZXJvTGlmZXRpbWUgPSAhcmVz
cG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkgJiYgV2ViQ29yZTo6Y29tcHV0ZUZy
ZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShyZXNwb25zZSwgY3VycmVudFRpbWUuY291bnQo
KSkgPiAwOworICAgICAgICBhdXRvIG5vdyA9IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5v
dygpOworICAgICAgICBib29sIGhhc05vblplcm9MaWZldGltZSA9ICFyZXNwb25zZS5jYWNoZUNv
bnRyb2xDb250YWluc05vQ2FjaGUoKSAmJiBXZWJDb3JlOjpjb21wdXRlRnJlc2huZXNzTGlmZXRp
bWVGb3JIVFRQRmFtaWx5KHJlc3BvbnNlLCBub3cpID4gc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25k
czo6emVybygpOwogCiAgICAgICAgIGJvb2wgcG9zc2libHlSZXVzYWJsZSA9IHJlc3BvbnNlLmhh
c0NhY2hlVmFsaWRhdG9yRmllbGRzKCkgfHwgaGFzTm9uWmVyb0xpZmV0aW1lOwogICAgICAgICBp
ZiAoIXBvc3NpYmx5UmV1c2FibGUpCkBAIC0zNTgsNyArMzU5LDYgQEAgdm9pZCBDYWNoZTo6c3Rv
cmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyYwogICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29y
a1Byb2Nlc3MpIHN0b3JpbmcgJXMsIHBhcnRpdGlvbiAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwo
KS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIG9yaWdpbmFsUmVxdWVzdC5jYWNoZVBhcnRpdGlv
bigpLmxhdGluMSgpLmRhdGEoKSk7CiAKICAgICBTdG9yZURlY2lzaW9uIHN0b3JlRGVjaXNpb24g
PSBtYWtlU3RvcmVEZWNpc2lvbihvcmlnaW5hbFJlcXVlc3QsIHJlc3BvbnNlKTsKLQogICAgIGlm
IChzdG9yZURlY2lzaW9uICE9IFN0b3JlRGVjaXNpb246OlllcykgewogICAgICAgICBMT0coTmV0
d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBkaWRuJ3Qgc3RvcmUsIHN0b3JlRGVjaXNpb249
JWQiLCBzdG9yZURlY2lzaW9uKTsKICAgICAgICAgaWYgKG1fc3RhdGlzdGljcykgewpJbmRleDog
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUVudHJ5LmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewogCiBFbnRyeTo6RW50cnko
Y29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCiAgICAgOiBt
X2tleShrZXkpCi0gICAgLCBtX3RpbWVTdGFtcChzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxz
dGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPihzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3co
KS50aW1lX3NpbmNlX2Vwb2NoKCkpKQorICAgICwgbV90aW1lU3RhbXAoc3RkOjpjaHJvbm86OnN5
c3RlbV9jbG9jazo6bm93KCkpCiAgICAgLCBtX3Jlc3BvbnNlKHJlc3BvbnNlKQogICAgICwgbV92
YXJ5aW5nUmVxdWVzdEhlYWRlcnModmFyeWluZ1JlcXVlc3RIZWFkZXJzKQogICAgICwgbV9idWZm
ZXIoV1RGOjptb3ZlKGJ1ZmZlcikpCkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBFbnRyeTo6YXNK
U09OKFN0cmluZ0J1aWxkZXImIGpzb24sIAogICAgIEpTQzo6YXBwZW5kUXVvdGVkSlNPTlN0cmlu
Z1RvQnVpbGRlcihqc29uLCBtX2tleS5wYXJ0aXRpb24oKSk7CiAgICAganNvbi5hcHBlbmRMaXRl
cmFsKCIsXG4iKTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwidGltZXN0YW1wXCI6ICIpOwot
ICAgIGpzb24uYXBwZW5kTnVtYmVyKG1fdGltZVN0YW1wLmNvdW50KCkpOworICAgIGpzb24uYXBw
ZW5kTnVtYmVyKHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNl
Y29uZHM+KG1fdGltZVN0YW1wLnRpbWVfc2luY2VfZXBvY2goKSkuY291bnQoKSk7CiAgICAganNv
bi5hcHBlbmRMaXRlcmFsKCIsXG4iKTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwiVVJMXCI6
ICIpOwogICAgIEpTQzo6YXBwZW5kUXVvdGVkSlNPTlN0cmluZ1RvQnVpbGRlcihqc29uLCBtX3Jl
c3BvbnNlLnVybCgpLnN0cmluZygpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAkocmV2aXNpb24gMTgy
MjQxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
RW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZGVjb2RlU3RvcmFnZVJlY29yZChjb25zdCBTdG9y
YWdlOjpSZWNvcmQmKTsKIAogICAgIGNvbnN0IEtleSYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9r
ZXk7IH0KLSAgICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVTdGFtcCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGltZVN0YW1wOyB9CisgICAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCB0aW1lU3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVTdGFtcDsgfQogICAgIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNwb25zZTsgfQogICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+
PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKCkgY29uc3QgeyByZXR1cm4gbV92YXJ5aW5nUmVxdWVz
dEhlYWRlcnM7IH0KIApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlh
bGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKCkgY29uc3Q7CiAKICAgICBLZXkgbV9rZXk7Ci0g
ICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBtX3RpbWVTdGFtcDsKKyAgICBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1fdGltZVN0YW1wOwogICAgIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywg
U3RyaW5nPj4gbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuY3BwCShyZXZpc2lvbiAxODIyNDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDcg
KzE0Miw4IEBAIHN0cnVjdCBSZWNvcmRNZXRhRGF0YSB7CiAKICAgICB1bnNpZ25lZCBjYWNoZVN0
b3JhZ2VWZXJzaW9uOwogICAgIEtleSBrZXk7Ci0gICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25k
cyB0aW1lU3RhbXA7CisgICAgLy8gRklYTUU6IEFkZCBlbmNvZGVyL2RlY29kZXIgZm9yIHRpbWVf
cG9pbnQuCisgICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBlcG9jaFJlbGF0aXZlVGltZVN0
YW1wOwogICAgIHVuc2lnbmVkIGhlYWRlckNoZWNrc3VtOwogICAgIHVpbnQ2NF90IGhlYWRlck9m
ZnNldDsKICAgICB1aW50NjRfdCBoZWFkZXJTaXplOwpAQCAtMTYwLDcgKzE2MSw3IEBAIHN0YXRp
YyBib29sIGRlY29kZVJlY29yZE1ldGFEYXRhKFJlY29yZE0KICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXRhRGF0YS5rZXkpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1ldGFEYXRh
LnRpbWVTdGFtcCkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWV0YURhdGEuZXBvY2hS
ZWxhdGl2ZVRpbWVTdGFtcCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUobWV0YURhdGEuaGVhZGVyQ2hlY2tzdW0pKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMjE1LDYgKzIxNiwxMSBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFN0b3JhZ2U6OlJlY29yZD4gCiAgICAgaWYgKG1ldGFEYXRhLmtleSAhPSBrZXkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCisgICAgLy8gU2FuaXR5IGNoZWNrIGFnYWluc3QgdGltZVN0YW1w
cyBpbiBmdXR1cmUuCisgICAgYXV0byB0aW1lU3RhbXAgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50KG1ldGFEYXRhLmVwb2NoUmVsYXRpdmVUaW1lU3RhbXApOworICAgIGlm
ICh0aW1lU3RhbXAgPiBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKICAgICBEYXRhIGJvZHlEYXRhOwogICAgIGlmIChtZXRhRGF0YS5i
b2R5U2l6ZSkgewogICAgICAgICBpZiAobWV0YURhdGEuYm9keU9mZnNldCArIG1ldGFEYXRhLmJv
ZHlTaXplICE9IGZpbGVEYXRhLnNpemUoKSkKQEAgLTIzNCw3ICsyNDAsNyBAQCBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFN0b3JhZ2U6OlJlY29yZD4gCiAKICAgICByZXR1cm4gc3RkOjptYWtlX3Vu
aXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KFN0b3JhZ2U6OlJlY29yZCB7CiAgICAgICAgIG1ldGFEYXRh
LmtleSwKLSAgICAgICAgbWV0YURhdGEudGltZVN0YW1wLAorICAgICAgICB0aW1lU3RhbXAsCiAg
ICAgICAgIGhlYWRlckRhdGEsCiAgICAgICAgIGJvZHlEYXRhCiAgICAgfSk7CkBAIC0yNDYsNyAr
MjUyLDcgQEAgc3RhdGljIERhdGEgZW5jb2RlUmVjb3JkTWV0YURhdGEoY29uc3QgUgogCiAgICAg
ZW5jb2RlciA8PCBtZXRhRGF0YS5jYWNoZVN0b3JhZ2VWZXJzaW9uOwogICAgIGVuY29kZXIgPDwg
bWV0YURhdGEua2V5OwotICAgIGVuY29kZXIgPDwgbWV0YURhdGEudGltZVN0YW1wOworICAgIGVu
Y29kZXIgPDwgbWV0YURhdGEuZXBvY2hSZWxhdGl2ZVRpbWVTdGFtcDsKICAgICBlbmNvZGVyIDw8
IG1ldGFEYXRhLmhlYWRlckNoZWNrc3VtOwogICAgIGVuY29kZXIgPDwgbWV0YURhdGEuaGVhZGVy
U2l6ZTsKICAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLmJvZHlDaGVja3N1bTsKQEAgLTI2MCw3ICsy
NjYsNyBAQCBzdGF0aWMgRGF0YSBlbmNvZGVSZWNvcmRNZXRhRGF0YShjb25zdCBSCiBzdGF0aWMg
RGF0YSBlbmNvZGVSZWNvcmRIZWFkZXIoY29uc3QgU3RvcmFnZTo6UmVjb3JkJiByZWNvcmQpCiB7
CiAgICAgUmVjb3JkTWV0YURhdGEgbWV0YURhdGEocmVjb3JkLmtleSk7Ci0gICAgbWV0YURhdGEu
dGltZVN0YW1wID0gcmVjb3JkLnRpbWVTdGFtcDsKKyAgICBtZXRhRGF0YS5lcG9jaFJlbGF0aXZl
VGltZVN0YW1wID0gc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxp
c2Vjb25kcz4ocmVjb3JkLnRpbWVTdGFtcC50aW1lX3NpbmNlX2Vwb2NoKCkpOwogICAgIG1ldGFE
YXRhLmhlYWRlckNoZWNrc3VtID0gaGFzaERhdGEocmVjb3JkLmhlYWRlcik7CiAgICAgbWV0YURh
dGEuaGVhZGVyU2l6ZSA9IHJlY29yZC5oZWFkZXIuc2l6ZSgpOwogICAgIG1ldGFEYXRhLmJvZHlD
aGVja3N1bSA9IGhhc2hEYXRhKHJlY29yZC5ib2R5KTsKQEAgLTQ0Niw3ICs0NTIsNyBAQCB2b2lk
IFN0b3JhZ2U6OnRyYXZlcnNlKFRyYXZlcnNlRmxhZ3MgZmxhCiAgICAgICAgICAgICAgICAgUmVj
b3JkTWV0YURhdGEgbWV0YURhdGE7CiAgICAgICAgICAgICAgICAgRGF0YSBoZWFkZXJEYXRhOwog
ICAgICAgICAgICAgICAgIGlmIChkZWNvZGVSZWNvcmRIZWFkZXIoZmlsZURhdGEsIG1ldGFEYXRh
LCBoZWFkZXJEYXRhKSkgewotICAgICAgICAgICAgICAgICAgICBSZWNvcmQgcmVjb3JkIHsgbWV0
YURhdGEua2V5LCBtZXRhRGF0YS50aW1lU3RhbXAsIGhlYWRlckRhdGEsIHsgfSB9OworICAgICAg
ICAgICAgICAgICAgICBSZWNvcmQgcmVjb3JkIHsgbWV0YURhdGEua2V5LCBzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KG1ldGFEYXRhLmVwb2NoUmVsYXRpdmVUaW1lU3RhbXAp
LCBoZWFkZXJEYXRhLCB7IH0gfTsKICAgICAgICAgICAgICAgICAgICAgaW5mby5ib2R5U2l6ZSA9
IG1ldGFEYXRhLmJvZHlTaXplOwogICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzZUhhbmRsZXIo
JnJlY29yZCwgaW5mbyk7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
aAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBA
IHB1YmxpYzoKIAogICAgIHN0cnVjdCBSZWNvcmQgewogICAgICAgICBLZXkga2V5OwotICAgICAg
ICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVTdGFtcDsKKyAgICAgICAgc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lU3RhbXA7CiAgICAgICAgIERhdGEgaGVh
ZGVyOwogICAgICAgICBEYXRhIGJvZHk7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHJldmlzaW9uIDE4MjI0MSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjAxLDEzICsyMDEsMTMgQEAgc3RhdGljIFN0cmluZyBidWlsZEhUVFBI
ZWFkZXJzKGNvbnN0IFJlcwogICAgIHJldHVybiBoZWFkZXJzOwogfQogCi1zdGF0aWMgdWludDMy
X3QgbGFzdE1vZGlmaWVkRGF0ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3N0
YXRpYyB1aW50MzJfdCBsYXN0TW9kaWZpZWREYXRlTVMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7Ci0gICAgZG91YmxlIGxhc3RNb2RpZmllZCA9IHJlc3BvbnNlLmxhc3RNb2Rp
ZmllZCgpOwotICAgIGlmICghc3RkOjppc2Zpbml0ZShsYXN0TW9kaWZpZWQpKQorICAgIGF1dG8g
bGFzdE1vZGlmaWVkID0gcmVzcG9uc2UubGFzdE1vZGlmaWVkKCk7CisgICAgaWYgKCFsYXN0TW9k
aWZpZWQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGxhc3RNb2RpZmllZCAqIDEw
MDA7CisgICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjpt
aWxsaXNlY29uZHM+KGxhc3RNb2RpZmllZC52YWx1ZSgpLnRpbWVfc2luY2VfZXBvY2goKSkuY291
bnQoKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShO
ZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNl
aXZlUmVzcG8KICAgICBpZiAoZXhwZWN0ZWRDb250ZW50TGVuZ3RoID4gMCkKICAgICAgICAgc3Ry
ZWFtTGVuZ3RoID0gZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwogCi0gICAgbV9wbHVnaW5WaWV3LT5t
X3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKG1fc3RyZWFtSUQsIHJlc3BvbnNlVVJM
LCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZERhdGUocmVzcG9uc2UpLCBtaW1lVHlwZSwgaGVh
ZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CisgICAgbV9wbHVnaW5WaWV3LT5t
X3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKG1fc3RyZWFtSUQsIHJlc3BvbnNlVVJM
LCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZERhdGVNUyhyZXNwb25zZSksIG1pbWVUeXBlLCBo
ZWFkZXJzLCByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKIH0KIAogdm9pZCBQbHVnaW5W
aWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwg
Y29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBQ
bHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZVJlcwogICAgIGlmIChleHBlY3RlZENvbnRl
bnRMZW5ndGggPiAwKQogICAgICAgICBzdHJlYW1MZW5ndGggPSBleHBlY3RlZENvbnRlbnRMZW5n
dGg7CiAKLSAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3Bv
bnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZERhdGUocmVzcG9uc2UpLCBtaW1lVHlw
ZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CisgICAgbV9wbHVnaW4t
Pm1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3Ro
LCBsYXN0TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9u
c2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9h
ZERpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249975</attachid>
            <date>2015-04-02 06:20:18 -0700</date>
            <delta_ts>2015-04-02 07:25:10 -0700</delta_ts>
            <desc>another</desc>
            <filename>response-std-chrono-4.patch</filename>
            <type>text/plain</type>
            <size>41162</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjI1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE1LTA0LTAxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ugc3RkOjpjaHJvbm8gdHlw
ZXMgdG8gcmVwcmVzZW50IHRpbWUgaW4gcmVzcG9uc2UgYW5kIGNhY2hlIGNsYXNzZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzMxNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgVXNlIHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdG8gcmVwcmVzZW50IGNsb2NrIHRpbWVzIGFuZCBz
dGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIHRvCisgICAgICAgIHJlcHJlc2VudCBkdXJhdGlvbnMu
IEFsc28gdXNlIFdURjo6T3B0aW9uYWwgZm9yIG9wdGlvbmFsIHZhbHVlcyAoaW5zdGVhZCBvZiBj
b2RpbmcgdGhlbSBhcyBOYU5zKS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bGFzdE1vZGlmaWVkKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OkNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpm
cmVzaG5lc3NMaWZldGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVz
cG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
UmVzcG9uc2VBZnRlclJldmFsaWRhdGlvbik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseSk6CisgICAgICAgIChX
ZWJDb3JlOjp1cGRhdGVSZWRpcmVjdENoYWluU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OnJl
ZGlyZWN0Q2hhaW5BbGxvd3NSZXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNhY2hlQ29u
dHJvbERpcmVjdGl2ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXM6OlJlZGly
ZWN0Q2hhaW5DYWNoZVN0YXR1cyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUVFBEYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlRGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291
cmNlUmVzcG9uc2VCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNl
OjpjYWNoZUNvbnRyb2xNYXhBZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VEYXRlVmFsdWVJ
bkhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBpcmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXN0TW9kaWZpZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKwogMjAxNS0wNC0wMSAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhlIGlPUyBi
dWlsZCBhZnRlciByMTgyMjQwLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAxODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MTQyLDExICs0MTQyLDEwIEBAIFN0cmluZyBEb2N1bWVudDo6bGFzdE1vZGlmaWVk
KCkgY29uc3QKICAgICBEYXRlQ29tcG9uZW50cyBkYXRlOwogICAgIGJvb2wgZm91bmREYXRlID0g
ZmFsc2U7CiAgICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgU3RyaW5nIGh0dHBMYXN0TW9kaWZp
ZWQ7Ci0gICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBsb2FkZXIo
KSkgCi0gICAgICAgICAgICBodHRwTGFzdE1vZGlmaWVkID0gZG9jdW1lbnRMb2FkZXItPnJlc3Bv
bnNlKCkuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpMYXN0TW9kaWZpZWQpOwotICAg
ICAgICBpZiAoIWh0dHBMYXN0TW9kaWZpZWQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBkYXRl
LnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlVGltZShwYXJzZURhdGUoaHR0cExhc3RN
b2RpZmllZCkpOworICAgICAgICBhdXRvIGxhc3RNb2RpZmllZERhdGUgPSBsb2FkZXIoKSA/IGxv
YWRlcigpLT5yZXNwb25zZSgpLmxhc3RNb2RpZmllZCgpIDogTnVsbG9wdDsKKyAgICAgICAgaWYg
KGxhc3RNb2RpZmllZERhdGUpIHsKKyAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNo
cm9ubzsKKyAgICAgICAgICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGVU
aW1lKGR1cmF0aW9uX2Nhc3Q8bWlsbGlzZWNvbmRzPihsYXN0TW9kaWZpZWREYXRlLnZhbHVlKCku
dGltZV9zaW5jZV9lcG9jaCgpKS5jb3VudCgpKTsKICAgICAgICAgICAgIGZvdW5kRGF0ZSA9IHRy
dWU7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
Niw3ICsxMTYsNyBAQCBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UoY29uc3QgUmVzCiAg
ICAgLCBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lcigqdGhpcywgJkNhY2hlZFJlc291cmNlOjpk
ZWNvZGVkRGF0YURlbGV0aW9uVGltZXJGaXJlZCwgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRl
cnZhbEZvclJlc291cmNlVHlwZSh0eXBlKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkK
ICAgICAsIG1fbG9hZFByaW9yaXR5KGRlZmF1bHRQcmlvcml0eUZvclJlc291cmNlVHlwZSh0eXBl
KSkKLSAgICAsIG1fcmVzcG9uc2VUaW1lc3RhbXAoY3VycmVudFRpbWUoKSkKKyAgICAsIG1fcmVz
cG9uc2VUaW1lc3RhbXAoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkpCiAgICAgLCBt
X2xhc3REZWNvZGVkQWNjZXNzVGltZSgwKQogICAgICwgbV9sb2FkRmluaXNoVGltZSgwKQogICAg
ICwgbV9lbmNvZGVkU2l6ZSgwKQpAQCAtMzQ3LDE2ICszNDcsMTYgQEAgYm9vbCBDYWNoZWRSZXNv
dXJjZTo6aXNFeHBpcmVkKCkgY29uc3QKICAgICByZXR1cm4gY29tcHV0ZUN1cnJlbnRBZ2UobV9y
ZXNwb25zZSwgbV9yZXNwb25zZVRpbWVzdGFtcCkgPiBmcmVzaG5lc3NMaWZldGltZShtX3Jlc3Bv
bnNlKTsKIH0KIAotZG91YmxlIENhY2hlZFJlc291cmNlOjpmcmVzaG5lc3NMaWZldGltZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgY29uc3QKK3N0ZDo6Y2hyb25vOjptaWNyb3Nl
Y29uZHMgQ2FjaGVkUmVzb3VyY2U6OmZyZXNobmVzc0xpZmV0aW1lKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKSBjb25zdAogewogICAgIGlmICghcmVzcG9uc2UudXJsKCkucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgIC8vIERvbid0IGNhY2hlIG5vbi1IVFRQIG1h
aW4gcmVzb3VyY2VzIHNpbmNlIHdlIGNhbid0IGNoZWNrIGZvciBmcmVzaG5lc3MuCiAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGNhY2hlIHN1YnJlc291cmNlcyBlaXRoZXIsIGJ1dCB3
aGVuIHdlIHRyaWVkIHRoaXMKICAgICAgICAgLy8gaXQgY2F1c2VkIHBlcmZvcm1hbmNlIGFuZCBm
bGFraW5lc3MgaXNzdWVzIGluIG91ciB0ZXN0IGluZnJhc3RydWN0dXJlLgogICAgICAgICBpZiAo
bV90eXBlID09IE1haW5SZXNvdXJjZSAmJiAhU2NoZW1lUmVnaXN0cnk6OnNob3VsZENhY2hlUmVz
cG9uc2VzRnJvbVVSTFNjaGVtZUluZGVmaW5pdGVseShyZXNwb25zZS51cmwoKS5wcm90b2NvbCgp
KSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Y2hyb25v
OjptaWNyb3NlY29uZHM6Onplcm8oKTsKIAotICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjptYXgoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjptaWNyb3Nl
Y29uZHM6Om1heCgpOwogICAgIH0KIAogICAgIHJldHVybiBjb21wdXRlRnJlc2huZXNzTGlmZXRp
bWVGb3JIVFRQRmFtaWx5KHJlc3BvbnNlLCBtX3Jlc3BvbnNlVGltZXN0YW1wKTsKQEAgLTM3Myw3
ICszNzMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiB2b2lk
IENhY2hlZFJlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewogICAgIHNldFJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICBtX3Jlc3BvbnNl
VGltZXN0YW1wID0gY3VycmVudFRpbWUoKTsKKyAgICBtX3Jlc3BvbnNlVGltZXN0YW1wID0gc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCk7CiAgICAgU3RyaW5nIGVuY29kaW5nID0gcmVz
cG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOwogICAgIGlmICghZW5jb2RpbmcuaXNOdWxsKCkpCiAg
ICAgICAgIHNldEVuY29kaW5nKGVuY29kaW5nKTsKQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIENh
Y2hlZFJlc291cmNlOjpzd2l0Y2hDbGllbnRzVG9SZXZhCiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZVJlc3BvbnNlQWZ0ZXJSZXZhbGlkYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
dmFsaWRhdGluZ1Jlc3BvbnNlKQogewotICAgIG1fcmVzcG9uc2VUaW1lc3RhbXAgPSBjdXJyZW50
VGltZSgpOworICAgIG1fcmVzcG9uc2VUaW1lc3RhbXAgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjpub3coKTsKIAogICAgIHVwZGF0ZVJlc3BvbnNlSGVhZGVyc0FmdGVyUmV2YWxpZGF0aW9u
KG1fcmVzcG9uc2UsIHZhbGlkYXRpbmdSZXNwb25zZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMTgyMjQxKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4MCw3ICsyODAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjaGVja05v
dGlmeSgpOwogICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgZG91YmxlIGZyZXNobmVzc0xpZmV0aW1lKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBjb25zdDsKKyAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRz
IGZyZXNobmVzc0xpZmV0aW1lKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBjb25zdDsKIAogICAg
IHZvaWQgYWRkQWRkaXRpb25hbFJlcXVlc3RIZWFkZXJzKENhY2hlZFJlc291cmNlTG9hZGVyJik7
CiAgICAgdm9pZCBmYWlsQmVmb3JlU3RhcnRpbmcoKTsKQEAgLTI4OSw3ICsyODksNyBAQCBwcml2
YXRlOgogICAgIFNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBTdHJpbmcgbV9hY2NlcHQ7CiAg
ICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgbV9sb2FkUHJpb3JpdHk7Ci0gICAgZG91YmxlIG1fcmVz
cG9uc2VUaW1lc3RhbXA7CisgICAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dCBtX3Jlc3BvbnNlVGltZXN0YW1wOwogCiAgICAgU3RyaW5nIG1fZnJhZ21lbnRJZGVudGlmaWVy
Rm9yUmVxdWVzdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNo
ZVZhbGlkYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04OSw0OSArODksNTcgQEAgdm9pZCB1cGRhdGVSZXNwb25zZUhlYWRlcnNBZnRlclJldmFs
aWRhdAogICAgIH0KIH0KIAotZG91YmxlIGNvbXB1dGVDdXJyZW50QWdlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXApCitzdGQ6OmNocm9u
bzo6bWljcm9zZWNvbmRzIGNvbXB1dGVDdXJyZW50QWdlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHJlc3BvbnNl
VGltZXN0YW1wKQogeworICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKKwogICAgIC8v
IFJGQzI2MTYgMTMuMi4zCiAgICAgLy8gTm8gY29tcGVuc2F0aW9uIGZvciBsYXRlbmN5IGFzIHRo
YXQgaXMgbm90IHRlcnJpYmx5IGltcG9ydGFudCBpbiBwcmFjdGljZQotICAgIGRvdWJsZSBkYXRl
VmFsdWUgPSByZXNwb25zZS5kYXRlKCk7Ci0gICAgZG91YmxlIGFwcGFyZW50QWdlID0gc3RkOjpp
c2Zpbml0ZShkYXRlVmFsdWUpID8gc3RkOjptYXgoMC4sIHJlc3BvbnNlVGltZXN0YW1wIC0gZGF0
ZVZhbHVlKSA6IDA7Ci0gICAgZG91YmxlIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCk7Ci0gICAg
ZG91YmxlIGNvcnJlY3RlZFJlY2VpdmVkQWdlID0gc3RkOjppc2Zpbml0ZShhZ2VWYWx1ZSkgPyBz
dGQ6Om1heChhcHBhcmVudEFnZSwgYWdlVmFsdWUpIDogYXBwYXJlbnRBZ2U7Ci0gICAgZG91Ymxl
IHJlc2lkZW50VGltZSA9IGN1cnJlbnRUaW1lKCkgLSByZXNwb25zZVRpbWVzdGFtcDsKKyAgICBh
dXRvIGRhdGVWYWx1ZSA9IHJlc3BvbnNlLmRhdGUoKTsKKyAgICBhdXRvIGFwcGFyZW50QWdlID0g
ZGF0ZVZhbHVlID8gcmVzcG9uc2VUaW1lc3RhbXAgLSBkYXRlVmFsdWUudmFsdWUoKSA6IG1pY3Jv
c2Vjb25kczo6emVybygpOworICAgIGFwcGFyZW50QWdlID0gc3RkOjptYXgobWljcm9zZWNvbmRz
Ojp6ZXJvKCksIGFwcGFyZW50QWdlKTsKKyAgICBhdXRvIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdl
KCk7CisgICAgYXV0byBjb3JyZWN0ZWRSZWNlaXZlZEFnZSA9IGFnZVZhbHVlID8gc3RkOjptYXg8
bWljcm9zZWNvbmRzPihhcHBhcmVudEFnZSwgYWdlVmFsdWUudmFsdWUoKSkgOiBhcHBhcmVudEFn
ZTsKKyAgICBhdXRvIHJlc2lkZW50VGltZSA9IHN5c3RlbV9jbG9jazo6bm93KCkgLSByZXNwb25z
ZVRpbWVzdGFtcDsKICAgICByZXR1cm4gY29ycmVjdGVkUmVjZWl2ZWRBZ2UgKyByZXNpZGVudFRp
bWU7CiB9CiAKLWRvdWJsZSBjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXAp
CitzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIGNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhU
VFBGYW1pbHkoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgcmVzcG9uc2VUaW1lc3RhbXApCiB7CisgICAgdXNpbmcg
bmFtZXNwYWNlIHN0ZDo6Y2hyb25vOwogICAgIEFTU0VSVChyZXNwb25zZS51cmwoKS5wcm90b2Nv
bElzSW5IVFRQRmFtaWx5KCkpOworCiAgICAgLy8gUkZDMjYxNiAxMy4yLjQKLSAgICBkb3VibGUg
bWF4QWdlVmFsdWUgPSByZXNwb25zZS5jYWNoZUNvbnRyb2xNYXhBZ2UoKTsKLSAgICBpZiAoc3Rk
Ojppc2Zpbml0ZShtYXhBZ2VWYWx1ZSkpCi0gICAgICAgIHJldHVybiBtYXhBZ2VWYWx1ZTsKLSAg
ICBkb3VibGUgZXhwaXJlc1ZhbHVlID0gcmVzcG9uc2UuZXhwaXJlcygpOwotICAgIGRvdWJsZSBk
YXRlVmFsdWUgPSByZXNwb25zZS5kYXRlKCk7Ci0gICAgZG91YmxlIGNyZWF0aW9uVGltZSA9IHN0
ZDo6aXNmaW5pdGUoZGF0ZVZhbHVlKSA/IGRhdGVWYWx1ZSA6IHJlc3BvbnNlVGltZXN0YW1wOwot
ICAgIGlmIChzdGQ6OmlzZmluaXRlKGV4cGlyZXNWYWx1ZSkpCi0gICAgICAgIHJldHVybiBleHBp
cmVzVmFsdWUgLSBjcmVhdGlvblRpbWU7Ci0gICAgZG91YmxlIGxhc3RNb2RpZmllZFZhbHVlID0g
cmVzcG9uc2UubGFzdE1vZGlmaWVkKCk7Ci0gICAgaWYgKHN0ZDo6aXNmaW5pdGUobGFzdE1vZGlm
aWVkVmFsdWUpKQotICAgICAgICByZXR1cm4gKGNyZWF0aW9uVGltZSAtIGxhc3RNb2RpZmllZFZh
bHVlKSAqIDAuMTsKKyAgICBhdXRvIG1heEFnZSA9IHJlc3BvbnNlLmNhY2hlQ29udHJvbE1heEFn
ZSgpOworICAgIGlmIChtYXhBZ2UpCisgICAgICAgIHJldHVybiBtYXhBZ2UudmFsdWUoKTsKKyAg
ICBhdXRvIGV4cGlyZXMgPSByZXNwb25zZS5leHBpcmVzKCk7CisgICAgYXV0byBkYXRlID0gcmVz
cG9uc2UuZGF0ZSgpOworICAgIGF1dG8gY3JlYXRpb25UaW1lID0gZGF0ZSA/IGRhdGUudmFsdWUo
KSA6IHJlc3BvbnNlVGltZXN0YW1wOworICAgIGlmIChleHBpcmVzKQorICAgICAgICByZXR1cm4g
ZHVyYXRpb25fY2FzdDxtaWNyb3NlY29uZHM+KGV4cGlyZXMudmFsdWUoKSAtIGNyZWF0aW9uVGlt
ZSk7CisgICAgYXV0byBsYXN0TW9kaWZpZWQgPSByZXNwb25zZS5sYXN0TW9kaWZpZWQoKTsKKyAg
ICBpZiAobGFzdE1vZGlmaWVkKQorICAgICAgICByZXR1cm4gZHVyYXRpb25fY2FzdDxtaWNyb3Nl
Y29uZHM+KChjcmVhdGlvblRpbWUgLSBsYXN0TW9kaWZpZWQudmFsdWUoKSkgKiAwLjEpOwogICAg
IC8vIElmIG5vIGNhY2hlIGhlYWRlcnMgYXJlIHByZXNlbnQsIHRoZSBzcGVjaWZpY2F0aW9uIGxl
YXZlcyB0aGUgZGVjaXNpb24gdG8gdGhlIFVBLiBPdGhlciBicm93c2VycyBzZWVtIHRvIG9wdCBm
b3IgMC4KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbWljcm9zZWNvbmRzOjp6ZXJvKCk7CiB9
CiAKIHZvaWQgdXBkYXRlUmVkaXJlY3RDaGFpblN0YXR1cyhSZWRpcmVjdENoYWluQ2FjaGVTdGF0
dXMmIHJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOworCiAgICAgaWYgKHJl
ZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5zdGF0dXMgPT0gUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVz
OjpOb3RDYWNoZWRSZWRpcmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChyZXNwb25z
ZS5jYWNoZUNvbnRyb2xDb250YWluc05vU3RvcmUoKSB8fCByZXNwb25zZS5jYWNoZUNvbnRyb2xD
b250YWluc05vQ2FjaGUoKSB8fCByZXNwb25zZS5jYWNoZUNvbnRyb2xDb250YWluc011c3RSZXZh
bGlkYXRlKCkpIHsKICAgICAgICAgcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLnN0YXR1cyA9IFJl
ZGlyZWN0Q2hhaW5DYWNoZVN0YXR1czo6Tm90Q2FjaGVkUmVkaXJlY3Rpb247CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisKICAgICByZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMuc3RhdHVzID0gUmVk
aXJlY3RDaGFpbkNhY2hlU3RhdHVzOjpDYWNoZWRSZWRpcmVjdGlvbjsKLSAgICBkb3VibGUgcmVz
cG9uc2VUaW1lc3RhbXAgPSBjdXJyZW50VGltZSgpOworICAgIGF1dG8gcmVzcG9uc2VUaW1lc3Rh
bXAgPSBzeXN0ZW1fY2xvY2s6Om5vdygpOwogICAgIC8vIFN0b3JlIHRoZSBuZWFyZXN0IGVuZCBv
ZiBjYWNoZSB2YWxpZGl0eSBkYXRlCi0gICAgZG91YmxlIGVuZE9mVmFsaWRpdHkgPSByZXNwb25z
ZVRpbWVzdGFtcCArIGNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkocmVzcG9u
c2UsIHJlc3BvbnNlVGltZXN0YW1wKSAtIGNvbXB1dGVDdXJyZW50QWdlKHJlc3BvbnNlLCByZXNw
b25zZVRpbWVzdGFtcCk7CisgICAgYXV0byBlbmRPZlZhbGlkaXR5ID0gcmVzcG9uc2VUaW1lc3Rh
bXAgKyBjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KHJlc3BvbnNlLCByZXNw
b25zZVRpbWVzdGFtcCkgLSBjb21wdXRlQ3VycmVudEFnZShyZXNwb25zZSwgcmVzcG9uc2VUaW1l
c3RhbXApOwogICAgIHJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5lbmRPZlZhbGlkaXR5ID0gc3Rk
OjptaW4ocmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLmVuZE9mVmFsaWRpdHksIGVuZE9mVmFsaWRp
dHkpOwogfQogCkBAIC0xNDMsNyArMTUxLDcgQEAgYm9vbCByZWRpcmVjdENoYWluQWxsb3dzUmV1
c2UoUmVkaXJlY3RDaAogICAgIGNhc2UgUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzOjpOb3RDYWNo
ZWRSZWRpcmVjdGlvbjoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgUmVkaXJlY3RD
aGFpbkNhY2hlU3RhdHVzOjpDYWNoZWRSZWRpcmVjdGlvbjoKLSAgICAgICAgcmV0dXJuIHJldXNl
RXhwaXJlZFJlZGlyZWN0aW9uIHx8IGN1cnJlbnRUaW1lKCkgPD0gcmVkaXJlY3RDaGFpbkNhY2hl
U3RhdHVzLmVuZE9mVmFsaWRpdHk7CisgICAgICAgIHJldHVybiByZXVzZUV4cGlyZWRSZWRpcmVj
dGlvbiB8fCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKSA8PSByZWRpcmVjdENoYWlu
Q2FjaGVTdGF0dXMuZW5kT2ZWYWxpZGl0eTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjQ4LDYgKzI1Niw4IEBAIHN0YXRpYyBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4KIAogQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBwYXJz
ZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKIHsK
KyAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87CisKICAgICBDYWNoZUNvbnRyb2xEaXJl
Y3RpdmVzIHJlc3VsdDsKIAogICAgIFN0cmluZyBjYWNoZUNvbnRyb2xWYWx1ZSA9IGhlYWRlcnMu
Z2V0KEhUVFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2wpOwpAQCAtMjY1LDI5ICsyNzUsMjkgQEAg
Q2FjaGVDb250cm9sRGlyZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJvbAogICAgICAgICAgICAgZWxz
ZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGlyZWN0aXZlc1tpXS5maXJzdCwgIm11c3QtcmV2YWxp
ZGF0ZSIpKQogICAgICAgICAgICAgICAgIHJlc3VsdC5tdXN0UmV2YWxpZGF0ZSA9IHRydWU7CiAg
ICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJlY3RpdmVzW2ldLmZpcnN0
LCAibWF4LWFnZSIpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFzdGQ6OmlzbmFuKHJlc3VsdC5t
YXhBZ2UpKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5tYXhBZ2UpIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gRmlyc3QgbWF4LWFnZSBkaXJlY3RpdmUgd2lucyBpZiB0aGVyZSBhcmUg
bXVsdGlwbGUgb25lcy4KICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGJvb2wgb2s7CiAgICAgICAgICAgICAgICAgZG91Ymxl
IG1heEFnZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25kLnRvRG91YmxlKCZvayk7CiAgICAgICAgICAg
ICAgICAgaWYgKG9rKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF4QWdlID0gbWF4QWdl
OworICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF4QWdlID0gZHVyYXRpb25fY2FzdDxtaWNy
b3NlY29uZHM+KGR1cmF0aW9uPGRvdWJsZT4obWF4QWdlKSk7CiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGl2ZXNbaV0uZmlyc3QsICJtYXgtc3RhbGUiKSkg
ewogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjM0
I3NlY3Rpb24tNS4yLjEuMgotICAgICAgICAgICAgICAgIGlmICghc3RkOjppc25hbihyZXN1bHQu
bWF4U3RhbGUpKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5tYXhTdGFsZSkgewogICAg
ICAgICAgICAgICAgICAgICAvLyBGaXJzdCBtYXgtc3RhbGUgZGlyZWN0aXZlIHdpbnMgaWYgdGhl
cmUgYXJlIG11bHRpcGxlIG9uZXMuCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aXZlc1tpXS5zZWNvbmQu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIGlmIG5vIHZhbHVlIGlzIGFzc2ln
bmVkIHRvIG1heC1zdGFsZSwgdGhlbiB0aGUgY2xpZW50IGlzIHdpbGxpbmcgdG8gYWNjZXB0IGEg
c3RhbGUgcmVzcG9uc2Ugb2YgYW55IGFnZS4KLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1h
eFN0YWxlID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0Lm1heFN0YWxlID0gbWljcm9zZWNvbmRzOjptYXgoKTsKICAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGJvb2wgb2s7CiAgICAgICAgICAgICAgICAgZG91YmxlIG1heFN0YWxlID0gZGlyZWN0aXZlc1tp
XS5zZWNvbmQudG9Eb3VibGUoJm9rKTsKICAgICAgICAgICAgICAgICBpZiAob2spCi0gICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5tYXhTdGFsZSA9IG1heFN0YWxlOworICAgICAgICAgICAgICAg
ICAgICByZXN1bHQubWF4U3RhbGUgPSBkdXJhdGlvbl9jYXN0PG1pY3Jvc2Vjb25kcz4oZHVyYXRp
b248ZG91YmxlPihtYXhTdGFsZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRh
dGlvbi5oCShyZXZpc2lvbiAxODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0NhY2hlVmFsaWRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAj
aWZuZGVmIENhY2hlVmFsaWRhdGlvbl9oCiAjZGVmaW5lIENhY2hlVmFsaWRhdGlvbl9oCiAKKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBI
VFRQSGVhZGVyTWFwOwpAQCAtMzksMTQgKzQxLDE0IEBAIHN0cnVjdCBSZWRpcmVjdENoYWluQ2Fj
aGVTdGF0dXMgewogICAgIH07CiAgICAgUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzKCkKICAgICAg
ICAgOiBzdGF0dXMoTm9SZWRpcmVjdGlvbikKLSAgICAgICAgLCBlbmRPZlZhbGlkaXR5KHN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpCisgICAgICAgICwgZW5kT2ZWYWxpZGl0eShz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50OjptYXgoKSkKICAgICB7IH0KICAg
ICBTdGF0dXMgc3RhdHVzOwotICAgIGRvdWJsZSBlbmRPZlZhbGlkaXR5OworICAgIHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgZW5kT2ZWYWxpZGl0eTsKIH07CiAKLVdFQkNP
UkVfRVhQT1JUIGRvdWJsZSBjb21wdXRlQ3VycmVudEFnZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiwgZG91YmxlIHJlc3BvbnNlVGltZXN0YW1wKTsKLVdFQkNPUkVfRVhQT1JUIGRvdWJsZSBjb21w
dXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
LCBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXApOworV0VCQ09SRV9FWFBPUlQgc3RkOjpjaHJvbm86
Om1pY3Jvc2Vjb25kcyBjb21wdXRlQ3VycmVudEFnZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwg
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCByZXNwb25zZVRpbWVzdGFtcCk7
CitXRUJDT1JFX0VYUE9SVCBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIGNvbXB1dGVGcmVzaG5l
c3NMaWZldGltZUZvckhUVFBGYW1pbHkoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgcmVzcG9uc2VUaW1lc3RhbXApOwogV0VCQ09S
RV9FWFBPUlQgdm9pZCB1cGRhdGVSZXNwb25zZUhlYWRlcnNBZnRlclJldmFsaWRhdGlvbihSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNl
KTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVkaXJlY3RDaGFpblN0YXR1cyhSZWRpcmVj
dENoYWluQ2FjaGVTdGF0dXMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKQEAgLTU0LDgg
KzU2LDggQEAgZW51bSBSZXVzZUV4cGlyZWRSZWRpcmVjdGlvbk9yTm90IHsgRG9ObwogV0VCQ09S
RV9FWFBPUlQgYm9vbCByZWRpcmVjdENoYWluQWxsb3dzUmV1c2UoUmVkaXJlY3RDaGFpbkNhY2hl
U3RhdHVzLCBSZXVzZUV4cGlyZWRSZWRpcmVjdGlvbk9yTm90KTsKIAogc3RydWN0IENhY2hlQ29u
dHJvbERpcmVjdGl2ZXMgewotICAgIGRvdWJsZSBtYXhBZ2UgeyBzdGQ6Om51bWVyaWNfbGltaXRz
PGRvdWJsZT46OnF1aWV0X05hTigpIH07Ci0gICAgZG91YmxlIG1heFN0YWxlIHsgc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OworICAgIE9wdGlvbmFsPHN0ZDo6Y2hy
b25vOjptaWNyb3NlY29uZHM+IG1heEFnZTsKKyAgICBPcHRpb25hbDxzdGQ6OmNocm9ubzo6bWlj
cm9zZWNvbmRzPiBtYXhTdGFsZTsKICAgICBib29sIG5vQ2FjaGUgeyBmYWxzZSB9OwogICAgIGJv
b2wgbm9TdG9yZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtdXN0UmV2YWxpZGF0ZSB7IGZhbHNlIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJz
LmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw5ICsyMzQsMTQgQEAgYm9v
bCBwYXJzZUhUVFBSZWZyZXNoKGNvbnN0IFN0cmluZyYgcmVmcgogICAgIH0KIH0KIAotZG91Ymxl
IHBhcnNlRGF0ZShjb25zdCBTdHJpbmcmIHZhbHVlKQorT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5
c3RlbV9jbG9jazo6dGltZV9wb2ludD4gcGFyc2VIVFRQRGF0ZShjb25zdCBTdHJpbmcmIHZhbHVl
KQogewotICAgIHJldHVybiBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRDaGFyYWN0ZXJzKHZh
bHVlLnV0ZjgoKS5kYXRhKCkpOworICAgIGRvdWJsZSBkYXRlSW5NaWxsaXNlY29uZHNTaW5jZUVw
b2NoID0gcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyh2YWx1ZS51dGY4KCku
ZGF0YSgpKTsKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoZGF0ZUluTWlsbGlzZWNvbmRzU2luY2VF
cG9jaCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgLy8gVGhpcyBhc3N1bWVzIHN5c3RlbV9j
bG9jayBlcG9jaCBlcXVhbHMgVW5peCBlcG9jaCB3aGljaCBpcyB0cnVlIGZvciBhbGwgaW1wbGVt
ZW50YXRpb25zIGJ1dCB1bnNwZWNpZmllZC4KKyAgICAvLyBGSVhNRTogVGhlIHBhcnNpbmcgZnVu
Y3Rpb24gc2hvdWxkIGJlIHN3aXRjaGVkIHRvIHN0ZDo6Y2hyb25vIHRvby4KKyAgICByZXR1cm4g
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludChzdGQ6OmNocm9ubzo6bWlsbGlz
ZWNvbmRzKHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oZGF0ZUluTWlsbGlzZWNvbmRzU2luY2VFcG9j
aCkpKTsKIH0KIAogLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gZG9lc24ndCBjb21wbHkgd2l0aCBS
RkMgNjI2Ni4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQ
YXJzZXJzLmgJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvSFRUUFBhcnNlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAj
aW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY0LDcgKzY1LDcgQEAgQ29udGVudERpc3Bvc2l0aW9u
VHlwZSBjb250ZW50RGlzcG9zaXRpbwogYm9vbCBpc1ZhbGlkSFRUUEhlYWRlclZhbHVlKGNvbnN0
IFN0cmluZyYpOwogYm9vbCBpc1ZhbGlkSFRUUFRva2VuKGNvbnN0IFN0cmluZyYpOwogYm9vbCBw
YXJzZUhUVFBSZWZyZXNoKGNvbnN0IFN0cmluZyYgcmVmcmVzaCwgYm9vbCBmcm9tSHR0cEVxdWl2
TWV0YSwgZG91YmxlJiBkZWxheSwgU3RyaW5nJiB1cmwpOwotZG91YmxlIHBhcnNlRGF0ZShjb25z
dCBTdHJpbmcmKTsKK09wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9p
bnQ+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJik7CiBTdHJpbmcgZmlsZW5hbWVGcm9tSFRU
UENvbnRlbnREaXNwb3NpdGlvbihjb25zdCBTdHJpbmcmKTsgCiBTdHJpbmcgZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb25zdCBTdHJpbmcmKTsKIFN0cmluZyBleHRyYWN0Q2hhcnNldEZy
b21NZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJKHJldmlz
aW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw0MiArNDMsMjIgQEAgaW5saW5l
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIFJlc291cmNlUgogICAgIHJldHVybiAqc3RhdGljX2Nh
c3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpOwogfQogCi1SZXNvdXJjZVJlc3BvbnNl
QmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UoKSAgCi0gICAgOiBtX2V4cGVjdGVkQ29udGVudExl
bmd0aCgwKQorUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKCkKKyAg
ICA6IG1faXNOdWxsKHRydWUpCisgICAgLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCgwKQogICAg
ICwgbV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbyhmYWxzZSkKICAgICAsIG1faHR0cFN0YXR1c0Nv
ZGUoMCkKLSAgICAsIG1fYWdlKDApCi0gICAgLCBtX2RhdGUoMCkKLSAgICAsIG1fZXhwaXJlcygw
KQotICAgICwgbV9sYXN0TW9kaWZpZWQoMCkKLSAgICAsIG1faXNOdWxsKHRydWUpCi0gICAgLCBt
X2hhdmVQYXJzZWRDYWNoZUNvbnRyb2xIZWFkZXIoZmFsc2UpCi0gICAgLCBtX2hhdmVQYXJzZWRB
Z2VIZWFkZXIoZmFsc2UpCi0gICAgLCBtX2hhdmVQYXJzZWREYXRlSGVhZGVyKGZhbHNlKQotICAg
ICwgbV9oYXZlUGFyc2VkRXhwaXJlc0hlYWRlcihmYWxzZSkKLSAgICAsIG1faGF2ZVBhcnNlZExh
c3RNb2RpZmllZEhlYWRlcihmYWxzZSkKLSAgICAsIG1fc291cmNlKFNvdXJjZTo6VW5rbm93bikK
IHsKIH0KIAogUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcgZXhwZWN0ZWRMZW5n
dGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKLSAgICA6IG1fdXJsKHVybCkKKyAg
ICA6IG1faXNOdWxsKGZhbHNlKQorICAgICwgbV91cmwodXJsKQogICAgICwgbV9taW1lVHlwZSht
aW1lVHlwZSkKICAgICAsIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKGV4cGVjdGVkTGVuZ3RoKQog
ICAgICwgbV90ZXh0RW5jb2RpbmdOYW1lKHRleHRFbmNvZGluZ05hbWUpCiAgICAgLCBtX2luY2x1
ZGVzQ2VydGlmaWNhdGVJbmZvKHRydWUpIC8vIEVtcHR5IGJ1dCB2YWxpZCBmb3Igc3ludGhldGlj
IHJlc3BvbnNlcy4KICAgICAsIG1faHR0cFN0YXR1c0NvZGUoMCkKLSAgICAsIG1fYWdlKDApCi0g
ICAgLCBtX2RhdGUoMCkKLSAgICAsIG1fZXhwaXJlcygwKQotICAgICwgbV9sYXN0TW9kaWZpZWQo
MCkKLSAgICAsIG1faXNOdWxsKGZhbHNlKQotICAgICwgbV9oYXZlUGFyc2VkQ2FjaGVDb250cm9s
SGVhZGVyKGZhbHNlKQotICAgICwgbV9oYXZlUGFyc2VkQWdlSGVhZGVyKGZhbHNlKQotICAgICwg
bV9oYXZlUGFyc2VkRGF0ZUhlYWRlcihmYWxzZSkKLSAgICAsIG1faGF2ZVBhcnNlZEV4cGlyZXNI
ZWFkZXIoZmFsc2UpCi0gICAgLCBtX2hhdmVQYXJzZWRMYXN0TW9kaWZpZWRIZWFkZXIoZmFsc2Up
Ci0gICAgLCBtX3NvdXJjZShTb3VyY2U6OlVua25vd24pCiB7CiB9CiAKQEAgLTM4MSwyOSArMzYx
LDI2IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omhhc0NhY2hlVmFsaWQKICAgICByZXR1
cm4gIW1faHR0cEhlYWRlckZpZWxkcy5nZXQoSFRUUEhlYWRlck5hbWU6Okxhc3RNb2RpZmllZCku
aXNFbXB0eSgpIHx8ICFtX2h0dHBIZWFkZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpFVGFn
KS5pc0VtcHR5KCk7CiB9CiAKLWRvdWJsZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2FjaGVDb250
cm9sTWF4QWdlKCkgY29uc3QKK09wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IFJl
c291cmNlUmVzcG9uc2VCYXNlOjpjYWNoZUNvbnRyb2xNYXhBZ2UoKSBjb25zdAogewogICAgIGlm
ICghbV9oYXZlUGFyc2VkQ2FjaGVDb250cm9sSGVhZGVyKQogICAgICAgICBwYXJzZUNhY2hlQ29u
dHJvbERpcmVjdGl2ZXMoKTsKICAgICByZXR1cm4gbV9jYWNoZUNvbnRyb2xEaXJlY3RpdmVzLm1h
eEFnZTsKIH0KIAotc3RhdGljIGRvdWJsZSBwYXJzZURhdGVWYWx1ZUluSGVhZGVyKGNvbnN0IEhU
VFBIZWFkZXJNYXAmIGhlYWRlcnMsIEhUVFBIZWFkZXJOYW1lIGhlYWRlck5hbWUpCitzdGF0aWMg
T3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gcGFyc2VEYXRl
VmFsdWVJbkhlYWRlcihjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBIVFRQSGVhZGVyTmFt
ZSBoZWFkZXJOYW1lKQogewogICAgIFN0cmluZyBoZWFkZXJWYWx1ZSA9IGhlYWRlcnMuZ2V0KGhl
YWRlck5hbWUpOwogICAgIGlmIChoZWFkZXJWYWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOyAKKyAgICAgICAgcmV0
dXJuIHsgfTsKICAgICAvLyBUaGlzIGhhbmRsZXMgYWxsIGRhdGUgZm9ybWF0cyByZXF1aXJlZCBi
eSBSRkMyNjE2OgogICAgIC8vIFN1biwgMDYgTm92IDE5OTQgMDg6NDk6MzcgR01UICA7IFJGQyA4
MjIsIHVwZGF0ZWQgYnkgUkZDIDExMjMKICAgICAvLyBTdW5kYXksIDA2LU5vdi05NCAwODo0OToz
NyBHTVQgOyBSRkMgODUwLCBvYnNvbGV0ZWQgYnkgUkZDIDEwMzYKICAgICAvLyBTdW4gTm92ICA2
IDA4OjQ5OjM3IDE5OTQgICAgICAgOyBBTlNJIEMncyBhc2N0aW1lKCkgZm9ybWF0Ci0gICAgZG91
YmxlIGRhdGVJbk1pbGxpc2Vjb25kcyA9IHBhcnNlRGF0ZShoZWFkZXJWYWx1ZSk7Ci0gICAgaWYg
KCFzdGQ6OmlzZmluaXRlKGRhdGVJbk1pbGxpc2Vjb25kcykpCi0gICAgICAgIHJldHVybiBzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwotICAgIHJldHVybiBkYXRlSW5N
aWxsaXNlY29uZHMgLyAxMDAwOworICAgIHJldHVybiBwYXJzZUhUVFBEYXRlKGhlYWRlclZhbHVl
KTsKIH0KIAotZG91YmxlIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkYXRlKCkgY29uc3QKK09wdGlv
bmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IFJlc291cmNlUmVzcG9u
c2VCYXNlOjpkYXRlKCkgY29uc3QKIHsKICAgICBsYXp5SW5pdChDb21tb25GaWVsZHNPbmx5KTsK
IApAQCAtNDE0LDIyICszOTEsMjQgQEAgZG91YmxlIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkYXRl
KCkgY29ucwogICAgIHJldHVybiBtX2RhdGU7CiB9CiAKLWRvdWJsZSBSZXNvdXJjZVJlc3BvbnNl
QmFzZTo6YWdlKCkgY29uc3QKK09wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IFJl
c291cmNlUmVzcG9uc2VCYXNlOjphZ2UoKSBjb25zdAogeworICAgIHVzaW5nIG5hbWVzcGFjZSBz
dGQ6OmNocm9ubzsKKwogICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogCiAgICAgaWYg
KCFtX2hhdmVQYXJzZWRBZ2VIZWFkZXIpIHsKICAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVlID0g
bV9odHRwSGVhZGVyRmllbGRzLmdldChIVFRQSGVhZGVyTmFtZTo6QWdlKTsKICAgICAgICAgYm9v
bCBvazsKLSAgICAgICAgbV9hZ2UgPSBoZWFkZXJWYWx1ZS50b0RvdWJsZSgmb2spOwotICAgICAg
ICBpZiAoIW9rKQotICAgICAgICAgICAgbV9hZ2UgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJs
ZT46OnF1aWV0X05hTigpOworICAgICAgICBkb3VibGUgYWdlRG91YmxlID0gaGVhZGVyVmFsdWUu
dG9Eb3VibGUoJm9rKTsKKyAgICAgICAgaWYgKG9rKQorICAgICAgICAgICAgbV9hZ2UgPSBkdXJh
dGlvbl9jYXN0PG1pY3Jvc2Vjb25kcz4oZHVyYXRpb248ZG91YmxlPihhZ2VEb3VibGUpKTsKICAg
ICAgICAgbV9oYXZlUGFyc2VkQWdlSGVhZGVyID0gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIG1f
YWdlOwogfQogCi1kb3VibGUgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyZXMoKSBjb25zdAor
T3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gUmVzb3VyY2VS
ZXNwb25zZUJhc2U6OmV4cGlyZXMoKSBjb25zdAogewogICAgIGxhenlJbml0KENvbW1vbkZpZWxk
c09ubHkpOwogCkBAIC00NDAsNyArNDE5LDcgQEAgZG91YmxlIFJlc291cmNlUmVzcG9uc2VCYXNl
OjpleHBpcmVzKCkgYwogICAgIHJldHVybiBtX2V4cGlyZXM7CiB9CiAKLWRvdWJsZSBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlmaWVkKCkgY29uc3QKK09wdGlvbmFsPHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXN0TW9k
aWZpZWQoKSBjb25zdAogewogICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJl
c3BvbnNlQmFzZS5oCShyZXZpc2lvbiAxODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNCwx
MSArMTA0LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhY2hlQ29udHJv
bENvbnRhaW5zTm9TdG9yZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgY2FjaGVD
b250cm9sQ29udGFpbnNNdXN0UmV2YWxpZGF0ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgaGFzQ2FjaGVWYWxpZGF0b3JGaWVsZHMoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBkb3VibGUgY2FjaGVDb250cm9sTWF4QWdlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGRhdGUoKSBj
b25zdDsKLSAgICBkb3VibGUgYWdlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgZG91Ymxl
IGV4cGlyZXMoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgbGFzdE1vZGlmaWVk
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jv
c2Vjb25kcz4gY2FjaGVDb250cm9sTWF4QWdlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
T3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gZGF0ZSgpIGNv
bnN0OworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29u
ZHM+IGFnZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IGV4cGlyZXMoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBPcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBs
YXN0TW9kaWZpZWQoKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgU291cmNlIHsgVW5rbm93biwg
TmV0d29yaywgRGlza0NhY2hlLCBEaXNrQ2FjaGVBZnRlclZhbGlkYXRpb24gfTsKICAgICBXRUJD
T1JFX0VYUE9SVCBTb3VyY2Ugc291cmNlKCkgY29uc3Q7CkBAIC0xNDcsNiArMTQ3LDEzIEBAIHBy
b3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJuIHRydWU7IH0KIAor
cHJpdmF0ZToKKyAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhc1Jlc291cmNlUmVzcG9uc2Uo
KSBjb25zdDsKKyAgICB2b2lkIHBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcygpIGNvbnN0Owor
ICAgIHZvaWQgdXBkYXRlSGVhZGVyUGFyc2VkU3RhdGUoSFRUUEhlYWRlck5hbWUpOworCitwcm90
ZWN0ZWQ6CisgICAgYm9vbCBtX2lzTnVsbDsKICAgICBVUkwgbV91cmw7CiAgICAgQXRvbWljU3Ry
aW5nIG1fbWltZVR5cGU7CiAgICAgbG9uZyBsb25nIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwpA
QCAtMTYxLDI3ICsxNjgsMTkgQEAgcHJvdGVjdGVkOgogICAgIGludCBtX2h0dHBTdGF0dXNDb2Rl
OwogCiBwcml2YXRlOgotICAgIG11dGFibGUgZG91YmxlIG1fYWdlOwotICAgIG11dGFibGUgZG91
YmxlIG1fZGF0ZTsKLSAgICBtdXRhYmxlIGRvdWJsZSBtX2V4cGlyZXM7Ci0gICAgbXV0YWJsZSBk
b3VibGUgbV9sYXN0TW9kaWZpZWQ7CisgICAgbXV0YWJsZSBPcHRpb25hbDxzdGQ6OmNocm9ubzo6
bWljcm9zZWNvbmRzPiBtX2FnZTsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IG1fZGF0ZTsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IG1fZXhwaXJlczsKKyAgICBtdXRh
YmxlIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IG1fbGFz
dE1vZGlmaWVkOwogICAgIG11dGFibGUgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBtX2NhY2hlQ29u
dHJvbERpcmVjdGl2ZXM7CiAKLXB1YmxpYzoKLSAgICBib29sIG1faXNOdWxsIDogMTsKLSAgICAK
LXByaXZhdGU6Ci0gICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYXNSZXNvdXJjZVJlc3BvbnNl
KCkgY29uc3Q7Ci0gICAgdm9pZCBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoKSBjb25zdDsK
LSAgICB2b2lkIHVwZGF0ZUhlYWRlclBhcnNlZFN0YXRlKEhUVFBIZWFkZXJOYW1lKTsKLQotICAg
IG11dGFibGUgYm9vbCBtX2hhdmVQYXJzZWRDYWNoZUNvbnRyb2xIZWFkZXIgOiAxOwotICAgIG11
dGFibGUgYm9vbCBtX2hhdmVQYXJzZWRBZ2VIZWFkZXIgOiAxOwotICAgIG11dGFibGUgYm9vbCBt
X2hhdmVQYXJzZWREYXRlSGVhZGVyIDogMTsKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXZlUGFyc2Vk
RXhwaXJlc0hlYWRlciA6IDE7Ci0gICAgbXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZExhc3RNb2Rp
ZmllZEhlYWRlciA6IDE7CisgICAgbXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZENhY2hlQ29udHJv
bEhlYWRlciB7IGZhbHNlIH07CisgICAgbXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZEFnZUhlYWRl
ciB7IGZhbHNlIH07CisgICAgbXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZERhdGVIZWFkZXIgeyBm
YWxzZSB9OworICAgIG11dGFibGUgYm9vbCBtX2hhdmVQYXJzZWRFeHBpcmVzSGVhZGVyIHsgZmFs
c2UgfTsKKyAgICBtdXRhYmxlIGJvb2wgbV9oYXZlUGFyc2VkTGFzdE1vZGlmaWVkSGVhZGVyIHsg
ZmFsc2UgfTsKIAotICAgIFNvdXJjZSBtX3NvdXJjZTsKKyAgICBTb3VyY2UgbV9zb3VyY2UgeyBT
b3VyY2U6OlVua25vd24gfTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikgeyByZXR1cm4gUmVz
b3VyY2VSZXNwb25zZUJhc2U6OmNvbXBhcmUoYSwgYik7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE4MjI1MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDM4IEBACisyMDE1LTA0LTAxICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KKworICAgICAgICBVc2Ugc3RkOjpjaHJvbm8gdHlwZXMgdG8gcmVwcmVzZW50IHRpbWUg
aW4gcmVzcG9uc2UgYW5kIGNhY2hlIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzMxNgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJl
YXMgS2xpbmcuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cmVzcG9uc2VIYXNFeHBpcmVkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZXNwb25zZU5lZWRzUmV2YWxpZGF0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjptYWtlU3RvcmVEZWNpc2lvbik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnN0b3JlKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OkVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpFbnRyeTo6YXNKU09OKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVFbnRyeS5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5
Ojp0aW1lU3RhbXApOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmRlY29kZVJlY29y
ZE1ldGFEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpkZWNvZGVSZWNvcmQp
OgorCisgICAgICAgICAgICBTYW5pdHkgY2hlY2sgdGhlIHRpbWVzdGFtcCBvbiBkZWNvZGUuCisK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjplbmNvZGVSZWNvcmRNZXRhRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6ZW5jb2RlUmVjb3JkSGVhZGVyKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJzZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bGFzdE1v
ZGlmaWVkRGF0ZU1TKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6U3RyZWFtOjpkaWRS
ZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjptYW51YWxMb2Fk
RGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6bGFzdE1vZGlmaWVkRGF0ZSk6
IERlbGV0ZWQuCisKIDIwMTUtMDQtMDEgIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25A
YXBwbGUuY29tPgogCiAgICAgICAgIFNtYXJ0IG1hZ25pZmljYXRpb24gZ2VzdHVyZSBzb21ldGlt
ZXMgc2hvb3RzIHRvIHRoZSBtaWRkbGUgb2YgdGhlIHBhZ2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAko
cmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE4LDkgKzMxOCw5IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2EKICAgICAgICAgYm9vbCBhbGxv
d1N0YWxlID0gb3JpZ2luYWxSZXF1ZXN0KCkuY2FjaGVQb2xpY3koKSA+PSBSZXR1cm5DYWNoZURh
dGFFbHNlTG9hZDsKICAgICAgICAgYm9vbCBoYXNDYWNoZWFibGVSZWRpcmVjdCA9IG1fcmVzcG9u
c2UuaXNIVFRQKCkgJiYgV2ViQ29yZTo6cmVkaXJlY3RDaGFpbkFsbG93c1JldXNlKG1fcmVkaXJl
Y3RDaGFpbkNhY2hlU3RhdHVzLCBhbGxvd1N0YWxlID8gV2ViQ29yZTo6UmV1c2VFeHBpcmVkUmVk
aXJlY3Rpb24gOiBXZWJDb3JlOjpEb05vdFJldXNlRXhwaXJlZFJlZGlyZWN0aW9uKTsKICAgICAg
ICAgaWYgKGhhc0NhY2hlYWJsZVJlZGlyZWN0ICYmIG1fcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVz
LnN0YXR1cyA9PSBSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXM6OkNhY2hlZFJlZGlyZWN0aW9uKSB7
Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2FjaGUgdGhlIGFjdHVhbCByZWRpcmVjdHMgaW5zdGVh
ZCBvZiB0aGUgZW5kIHJlc3VsdC4KLSAgICAgICAgICAgIGRvdWJsZSBub3cgPSBjdXJyZW50VGlt
ZSgpOwotICAgICAgICAgICAgZG91YmxlIHJlc3BvbnNlRW5kT2ZWYWxpZGl0eSA9IG5vdyArIFdl
YkNvcmU6OmNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkobV9yZXNwb25zZSwg
bm93KSAtIFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKG1fcmVzcG9uc2UsIG5vdyk7CisgICAg
ICAgICAgICAvLyBNYXliZSB3ZSBzaG91bGQgY2FjaGUgdGhlIGFjdHVhbCByZWRpcmVjdHMgaW5z
dGVhZCBvZiB0aGUgZW5kIHJlc3VsdD8KKyAgICAgICAgICAgIGF1dG8gbm93ID0gc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6bm93KCk7CisgICAgICAgICAgICBhdXRvIHJlc3BvbnNlRW5kT2ZW
YWxpZGl0eSA9IG5vdyArIFdlYkNvcmU6OmNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBG
YW1pbHkobV9yZXNwb25zZSwgbm93KSAtIFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKG1fcmVz
cG9uc2UsIG5vdyk7CiAgICAgICAgICAgICBoYXNDYWNoZWFibGVSZWRpcmVjdCA9IHJlc3BvbnNl
RW5kT2ZWYWxpZGl0eSA8PSBtX3JlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5lbmRPZlZhbGlkaXR5
OwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTUwLDE3ICsxNTAsMTYgQEAgc3RhdGljIGJvb2wgY2FjaGVQb2xpY3lBbGxvd3NF
eHBpcmVkKFdlYgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgcmVzcG9uc2VI
YXNFeHBpcmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBzdGQ6
OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVzdGFtcCwgZG91YmxlIG1heFN0YWxlKQorc3RhdGlj
IGJvb2wgcmVzcG9uc2VIYXNFeHBpcmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRpbWVzdGFt
cCwgT3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gbWF4U3RhbGUpCiB7CiAgICAg
aWYgKHJlc3BvbnNlLmNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIGF1dG8gZG91YmxlVGltZVN0YW1wID0gc3RkOjpjaHJvbm86OmR1cmF0
aW9uPGRvdWJsZT4odGltZXN0YW1wKTsKLSAgICBkb3VibGUgYWdlID0gV2ViQ29yZTo6Y29tcHV0
ZUN1cnJlbnRBZ2UocmVzcG9uc2UsIGRvdWJsZVRpbWVTdGFtcC5jb3VudCgpKTsKLSAgICBkb3Vi
bGUgbGlmZXRpbWUgPSBXZWJDb3JlOjpjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFt
aWx5KHJlc3BvbnNlLCBkb3VibGVUaW1lU3RhbXAuY291bnQoKSk7CisgICAgYXV0byBhZ2UgPSBX
ZWJDb3JlOjpjb21wdXRlQ3VycmVudEFnZShyZXNwb25zZSwgdGltZXN0YW1wKTsKKyAgICBhdXRv
IGxpZmV0aW1lID0gV2ViQ29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWls
eShyZXNwb25zZSwgdGltZXN0YW1wKTsKIAotICAgIG1heFN0YWxlID0gc3RkOjppc25hbihtYXhT
dGFsZSkgPyAwIDogbWF4U3RhbGU7Ci0gICAgYm9vbCBoYXNFeHBpcmVkID0gYWdlIC0gbGlmZXRp
bWUgPiBtYXhTdGFsZTsKKyAgICBhdXRvIG1heGltdW1TdGFsZW5lc3MgPSBtYXhTdGFsZSA/IG1h
eFN0YWxlLnZhbHVlKCkgOiBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzOjp6ZXJvKCk7CisgICAg
Ym9vbCBoYXNFeHBpcmVkID0gYWdlIC0gbGlmZXRpbWUgPiBtYXhpbXVtU3RhbGVuZXNzOwogCiAj
aWZuZGVmIExPR19ESVNBQkxFRAogICAgIGlmIChoYXNFeHBpcmVkKQpAQCAtMTcwLDE0ICsxNjks
MTYgQEAgc3RhdGljIGJvb2wgcmVzcG9uc2VIYXNFeHBpcmVkKGNvbnN0IFdlYgogICAgIHJldHVy
biBoYXNFeHBpcmVkOwogfQogCi1zdGF0aWMgYm9vbCByZXNwb25zZU5lZWRzUmV2YWxpZGF0aW9u
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdGlt
ZXN0YW1wKQorc3RhdGljIGJvb2wgcmVzcG9uc2VOZWVkc1JldmFsaWRhdGlvbihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRp
bWVzdGFtcCkKIHsKICAgICBhdXRvIHJlcXVlc3REaXJlY3RpdmVzID0gV2ViQ29yZTo6cGFyc2VD
YWNoZUNvbnRyb2xEaXJlY3RpdmVzKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpKTsKICAgICBp
ZiAocmVxdWVzdERpcmVjdGl2ZXMubm9DYWNoZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
Ly8gRm9yIHJlcXVlc3RzIHdlIGlnbm9yZSBtYXgtYWdlIHZhbHVlcyBvdGhlciB0aGFuIHplcm8u
Ci0gICAgaWYgKHJlcXVlc3REaXJlY3RpdmVzLm1heEFnZSA9PSAwKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAocmVxdWVzdERpcmVjdGl2ZXMubWF4QWdlKSB7CisgICAgICAgIGlmIChy
ZXF1ZXN0RGlyZWN0aXZlcy5tYXhBZ2UudmFsdWUoKSA9PSBzdGQ6OmNocm9ubzo6bWljcm9zZWNv
bmRzOjp6ZXJvKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKICAgICByZXR1
cm4gcmVzcG9uc2VIYXNFeHBpcmVkKHJlc3BvbnNlLCB0aW1lc3RhbXAsIHJlcXVlc3REaXJlY3Rp
dmVzLm1heFN0YWxlKTsKIH0KQEAgLTI2OSw3ICsyNzAsNyBAQCBzdGF0aWMgU3RvcmVEZWNpc2lv
biBtYWtlU3RvcmVEZWNpc2lvbihjCiAKICAgICBpZiAoIWlzU3RhdHVzQ29kZUNhY2hlYWJsZUJ5
RGVmYXVsdChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSkgewogICAgICAgICAvLyBodHRwOi8v
dG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjM0I3NlY3Rpb24tNC4zLjIKLSAgICAgICAgYm9vbCBo
YXNFeHBpcmF0aW9uSGVhZGVycyA9IHN0ZDo6aXNmaW5pdGUocmVzcG9uc2UuZXhwaXJlcygpKSB8
fCBzdGQ6OmlzZmluaXRlKHJlc3BvbnNlLmNhY2hlQ29udHJvbE1heEFnZSgpKTsKKyAgICAgICAg
Ym9vbCBoYXNFeHBpcmF0aW9uSGVhZGVycyA9IHJlc3BvbnNlLmV4cGlyZXMoKSB8fCByZXNwb25z
ZS5jYWNoZUNvbnRyb2xNYXhBZ2UoKTsKICAgICAgICAgYm9vbCBleHBpcmF0aW9uSGVhZGVyc0Fs
bG93Q2FjaGluZyA9IGlzU3RhdHVzQ29kZVBvdGVudGlhbGx5Q2FjaGVhYmxlKHJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCkpICYmIGhhc0V4cGlyYXRpb25IZWFkZXJzOwogICAgICAgICBpZiAoIWV4
cGlyYXRpb25IZWFkZXJzQWxsb3dDYWNoaW5nKQogICAgICAgICAgICAgcmV0dXJuIFN0b3JlRGVj
aXNpb246Ok5vRHVlVG9IVFRQU3RhdHVzQ29kZTsKQEAgLTI3OCw4ICsyNzksOCBAQCBzdGF0aWMg
U3RvcmVEZWNpc2lvbiBtYWtlU3RvcmVEZWNpc2lvbihjCiAgICAgLy8gTWFpbiByZXNvdXJjZSBo
YXMgUmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5SGlnaC4KICAgICBib29sIHN0b3JlVW5jb25kaXRp
b25hbGx5Rm9ySGlzdG9yeU5hdmlnYXRpb24gPSBvcmlnaW5hbFJlcXVlc3QucHJpb3JpdHkoKSA9
PSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRQcmlvcml0eVZlcnlIaWdoOwogICAgIGlmICghc3RvcmVV
bmNvbmRpdGlvbmFsbHlGb3JIaXN0b3J5TmF2aWdhdGlvbikgewotICAgICAgICBhdXRvIGN1cnJl
bnRUaW1lID0gc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgpKTsKLSAgICAgICAgYm9vbCBoYXNOb25a
ZXJvTGlmZXRpbWUgPSAhcmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkgJiYg
V2ViQ29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShyZXNwb25zZSwg
Y3VycmVudFRpbWUuY291bnQoKSkgPiAwOworICAgICAgICBhdXRvIG5vdyA9IHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6Om5vdygpOworICAgICAgICBib29sIGhhc05vblplcm9MaWZldGltZSA9
ICFyZXNwb25zZS5jYWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSAmJiBXZWJDb3JlOjpjb21w
dXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KHJlc3BvbnNlLCBub3cpID4gc3RkOjpj
aHJvbm86Om1pY3Jvc2Vjb25kczo6emVybygpOwogCiAgICAgICAgIGJvb2wgcG9zc2libHlSZXVz
YWJsZSA9IHJlc3BvbnNlLmhhc0NhY2hlVmFsaWRhdG9yRmllbGRzKCkgfHwgaGFzTm9uWmVyb0xp
ZmV0aW1lOwogICAgICAgICBpZiAoIXBvc3NpYmx5UmV1c2FibGUpCkBAIC0zNTgsNyArMzU5LDYg
QEAgdm9pZCBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyYwogICAgIExPRyhOZXR3
b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIHN0b3JpbmcgJXMsIHBhcnRpdGlvbiAlcyIsIG9y
aWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIG9yaWdpbmFsUmVx
dWVzdC5jYWNoZVBhcnRpdGlvbigpLmxhdGluMSgpLmRhdGEoKSk7CiAKICAgICBTdG9yZURlY2lz
aW9uIHN0b3JlRGVjaXNpb24gPSBtYWtlU3RvcmVEZWNpc2lvbihvcmlnaW5hbFJlcXVlc3QsIHJl
c3BvbnNlKTsKLQogICAgIGlmIChzdG9yZURlY2lzaW9uICE9IFN0b3JlRGVjaXNpb246Olllcykg
ewogICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBkaWRuJ3Qgc3Rv
cmUsIHN0b3JlRGVjaXNpb249JWQiLCBzdG9yZURlY2lzaW9uKTsKICAgICAgICAgaWYgKG1fc3Rh
dGlzdGljcykgewpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRW50cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUg
ewogCiBFbnRyeTo6RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
ciwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVz
dEhlYWRlcnMpCiAgICAgOiBtX2tleShrZXkpCi0gICAgLCBtX3RpbWVTdGFtcChzdGQ6OmNocm9u
bzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPihzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkpKQorICAgICwgbV90aW1lU3Rh
bXAoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkpCiAgICAgLCBtX3Jlc3BvbnNlKHJl
c3BvbnNlKQogICAgICwgbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnModmFyeWluZ1JlcXVlc3RIZWFk
ZXJzKQogICAgICwgbV9idWZmZXIoV1RGOjptb3ZlKGJ1ZmZlcikpCkBAIC0xNjAsNyArMTYwLDcg
QEAgdm9pZCBFbnRyeTo6YXNKU09OKFN0cmluZ0J1aWxkZXImIGpzb24sIAogICAgIEpTQzo6YXBw
ZW5kUXVvdGVkSlNPTlN0cmluZ1RvQnVpbGRlcihqc29uLCBtX2tleS5wYXJ0aXRpb24oKSk7CiAg
ICAganNvbi5hcHBlbmRMaXRlcmFsKCIsXG4iKTsKICAgICBqc29uLmFwcGVuZExpdGVyYWwoIlwi
dGltZXN0YW1wXCI6ICIpOwotICAgIGpzb24uYXBwZW5kTnVtYmVyKG1fdGltZVN0YW1wLmNvdW50
KCkpOworICAgIGpzb24uYXBwZW5kTnVtYmVyKHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0
ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KG1fdGltZVN0YW1wLnRpbWVfc2luY2VfZXBvY2goKSku
Y291bnQoKSk7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCIsXG4iKTsKICAgICBqc29uLmFwcGVu
ZExpdGVyYWwoIlwiVVJMXCI6ICIpOwogICAgIEpTQzo6YXBwZW5kUXVvdGVkSlNPTlN0cmluZ1Rv
QnVpbGRlcihqc29uLCBtX3Jlc3BvbnNlLnVybCgpLnN0cmluZygpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50
cnkuaAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZGVjb2RlU3RvcmFn
ZVJlY29yZChjb25zdCBTdG9yYWdlOjpSZWNvcmQmKTsKIAogICAgIGNvbnN0IEtleSYga2V5KCkg
Y29uc3QgeyByZXR1cm4gbV9rZXk7IH0KLSAgICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRp
bWVTdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVN0YW1wOyB9CisgICAgc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lU3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3Rp
bWVTdGFtcDsgfQogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQogICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKCkgY29uc3QgeyByZXR1
cm4gbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7IH0KIApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgaW5pdGlhbGl6ZUJ1ZmZlckZyb21TdG9yYWdlUmVjb3JkKCkgY29uc3Q7CiAK
ICAgICBLZXkgbV9rZXk7Ci0gICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBtX3RpbWVTdGFt
cDsKKyAgICBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1fdGltZVN0YW1w
OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKICAgICBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gbV92YXJ5aW5nUmVxdWVzdEhlYWRlcnM7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCShyZXZpc2lvbiAxODIyNDEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQyLDcgKzE0Miw4IEBAIHN0cnVjdCBSZWNvcmRNZXRhRGF0YSB7CiAKICAg
ICB1bnNpZ25lZCBjYWNoZVN0b3JhZ2VWZXJzaW9uOwogICAgIEtleSBrZXk7Ci0gICAgc3RkOjpj
aHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lU3RhbXA7CisgICAgLy8gRklYTUU6IEFkZCBlbmNvZGVy
L2RlY29kZXIgZm9yIHRpbWVfcG9pbnQuCisgICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBl
cG9jaFJlbGF0aXZlVGltZVN0YW1wOwogICAgIHVuc2lnbmVkIGhlYWRlckNoZWNrc3VtOwogICAg
IHVpbnQ2NF90IGhlYWRlck9mZnNldDsKICAgICB1aW50NjRfdCBoZWFkZXJTaXplOwpAQCAtMTYw
LDcgKzE2MSw3IEBAIHN0YXRpYyBib29sIGRlY29kZVJlY29yZE1ldGFEYXRhKFJlY29yZE0KICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXRh
RGF0YS5rZXkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKG1ldGFEYXRhLnRpbWVTdGFtcCkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobWV0YURhdGEuZXBvY2hSZWxhdGl2ZVRpbWVTdGFtcCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWV0YURhdGEuaGVhZGVyQ2hlY2tz
dW0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjE1LDYgKzIxNiwxMSBAQCBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2U6OlJlY29yZD4gCiAgICAgaWYgKG1ldGFEYXRhLmtl
eSAhPSBrZXkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCisgICAgLy8gU2FuaXR5IGNoZWNr
IGFnYWluc3QgdGltZVN0YW1wcyBpbiBmdXR1cmUuCisgICAgYXV0byB0aW1lU3RhbXAgPSBzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KG1ldGFEYXRhLmVwb2NoUmVsYXRpdmVU
aW1lU3RhbXApOworICAgIGlmICh0aW1lU3RhbXAgPiBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojpub3coKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBEYXRhIGJvZHlEYXRhOwog
ICAgIGlmIChtZXRhRGF0YS5ib2R5U2l6ZSkgewogICAgICAgICBpZiAobWV0YURhdGEuYm9keU9m
ZnNldCArIG1ldGFEYXRhLmJvZHlTaXplICE9IGZpbGVEYXRhLnNpemUoKSkKQEAgLTIzNCw3ICsy
NDAsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2U6OlJlY29yZD4gCiAKICAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxTdG9yYWdlOjpSZWNvcmQ+KFN0b3JhZ2U6OlJlY29yZCB7
CiAgICAgICAgIG1ldGFEYXRhLmtleSwKLSAgICAgICAgbWV0YURhdGEudGltZVN0YW1wLAorICAg
ICAgICB0aW1lU3RhbXAsCiAgICAgICAgIGhlYWRlckRhdGEsCiAgICAgICAgIGJvZHlEYXRhCiAg
ICAgfSk7CkBAIC0yNDYsNyArMjUyLDcgQEAgc3RhdGljIERhdGEgZW5jb2RlUmVjb3JkTWV0YURh
dGEoY29uc3QgUgogCiAgICAgZW5jb2RlciA8PCBtZXRhRGF0YS5jYWNoZVN0b3JhZ2VWZXJzaW9u
OwogICAgIGVuY29kZXIgPDwgbWV0YURhdGEua2V5OwotICAgIGVuY29kZXIgPDwgbWV0YURhdGEu
dGltZVN0YW1wOworICAgIGVuY29kZXIgPDwgbWV0YURhdGEuZXBvY2hSZWxhdGl2ZVRpbWVTdGFt
cDsKICAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLmhlYWRlckNoZWNrc3VtOwogICAgIGVuY29kZXIg
PDwgbWV0YURhdGEuaGVhZGVyU2l6ZTsKICAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLmJvZHlDaGVj
a3N1bTsKQEAgLTI2MCw3ICsyNjYsNyBAQCBzdGF0aWMgRGF0YSBlbmNvZGVSZWNvcmRNZXRhRGF0
YShjb25zdCBSCiBzdGF0aWMgRGF0YSBlbmNvZGVSZWNvcmRIZWFkZXIoY29uc3QgU3RvcmFnZTo6
UmVjb3JkJiByZWNvcmQpCiB7CiAgICAgUmVjb3JkTWV0YURhdGEgbWV0YURhdGEocmVjb3JkLmtl
eSk7Ci0gICAgbWV0YURhdGEudGltZVN0YW1wID0gcmVjb3JkLnRpbWVTdGFtcDsKKyAgICBtZXRh
RGF0YS5lcG9jaFJlbGF0aXZlVGltZVN0YW1wID0gc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8
c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4ocmVjb3JkLnRpbWVTdGFtcC50aW1lX3NpbmNlX2Vw
b2NoKCkpOwogICAgIG1ldGFEYXRhLmhlYWRlckNoZWNrc3VtID0gaGFzaERhdGEocmVjb3JkLmhl
YWRlcik7CiAgICAgbWV0YURhdGEuaGVhZGVyU2l6ZSA9IHJlY29yZC5oZWFkZXIuc2l6ZSgpOwog
ICAgIG1ldGFEYXRhLmJvZHlDaGVja3N1bSA9IGhhc2hEYXRhKHJlY29yZC5ib2R5KTsKQEAgLTQ0
Niw3ICs0NTIsNyBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZlcnNlKFRyYXZlcnNlRmxhZ3MgZmxhCiAg
ICAgICAgICAgICAgICAgUmVjb3JkTWV0YURhdGEgbWV0YURhdGE7CiAgICAgICAgICAgICAgICAg
RGF0YSBoZWFkZXJEYXRhOwogICAgICAgICAgICAgICAgIGlmIChkZWNvZGVSZWNvcmRIZWFkZXIo
ZmlsZURhdGEsIG1ldGFEYXRhLCBoZWFkZXJEYXRhKSkgewotICAgICAgICAgICAgICAgICAgICBS
ZWNvcmQgcmVjb3JkIHsgbWV0YURhdGEua2V5LCBtZXRhRGF0YS50aW1lU3RhbXAsIGhlYWRlckRh
dGEsIHsgfSB9OworICAgICAgICAgICAgICAgICAgICBSZWNvcmQgcmVjb3JkIHsgbWV0YURhdGEu
a2V5LCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KG1ldGFEYXRhLmVwb2No
UmVsYXRpdmVUaW1lU3RhbXApLCBoZWFkZXJEYXRhLCB7IH0gfTsKICAgICAgICAgICAgICAgICAg
ICAgaW5mby5ib2R5U2l6ZSA9IG1ldGFEYXRhLmJvZHlTaXplOwogICAgICAgICAgICAgICAgICAg
ICB0cmF2ZXJzZUhhbmRsZXIoJnJlY29yZCwgaW5mbyk7CiAgICAgICAgICAgICAgICAgfQpJbmRl
eDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVN0b3JhZ2UuaAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0cnVjdCBSZWNvcmQgewogICAgICAg
ICBLZXkga2V5OwotICAgICAgICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVTdGFtcDsK
KyAgICAgICAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lU3RhbXA7
CiAgICAgICAgIERhdGEgaGVhZGVyOwogICAgICAgICBEYXRhIGJvZHk7CiAgICAgfTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJ
KHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDEzICsyMDEsMTMgQEAgc3RhdGlj
IFN0cmluZyBidWlsZEhUVFBIZWFkZXJzKGNvbnN0IFJlcwogICAgIHJldHVybiBoZWFkZXJzOwog
fQogCi1zdGF0aWMgdWludDMyX3QgbGFzdE1vZGlmaWVkRGF0ZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKK3N0YXRpYyB1aW50MzJfdCBsYXN0TW9kaWZpZWREYXRlTVMoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgZG91YmxlIGxhc3RNb2RpZmllZCA9
IHJlc3BvbnNlLmxhc3RNb2RpZmllZCgpOwotICAgIGlmICghc3RkOjppc2Zpbml0ZShsYXN0TW9k
aWZpZWQpKQorICAgIGF1dG8gbGFzdE1vZGlmaWVkID0gcmVzcG9uc2UubGFzdE1vZGlmaWVkKCk7
CisgICAgaWYgKCFsYXN0TW9kaWZpZWQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJu
IGxhc3RNb2RpZmllZCAqIDEwMDA7CisgICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9j
YXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KGxhc3RNb2RpZmllZC52YWx1ZSgpLnRpbWVf
c2luY2VfZXBvY2goKSkuY291bnQoKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRp
ZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgUGx1Z2luVmll
dzo6U3RyZWFtOjpkaWRSZWNlaXZlUmVzcG8KICAgICBpZiAoZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
ID4gMCkKICAgICAgICAgc3RyZWFtTGVuZ3RoID0gZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwogCi0g
ICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKG1fc3Ry
ZWFtSUQsIHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZERhdGUocmVzcG9u
c2UpLCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7Cisg
ICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKG1fc3Ry
ZWFtSUQsIHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZERhdGVNUyhyZXNw
b25zZSksIG1pbWVUeXBlLCBoZWFkZXJzLCByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsK
IH0KIAogdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVEYXRhKE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCkBAIC00MTMs
NyArNDEzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlkUmVjZWl2ZVJlcwogICAg
IGlmIChleHBlY3RlZENvbnRlbnRMZW5ndGggPiAwKQogICAgICAgICBzdHJlYW1MZW5ndGggPSBl
eHBlY3RlZENvbnRlbnRMZW5ndGg7CiAKLSAgICBtX3BsdWdpbi0+bWFudWFsU3RyZWFtRGlkUmVj
ZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2RpZmllZERhdGUo
cmVzcG9uc2UpLCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUo
KSk7CisgICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShyZXNwb25z
ZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBtaW1lVHlw
ZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKIHZvaWQgUGx1
Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQg
bGVuZ3RoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249977</attachid>
            <date>2015-04-02 07:25:10 -0700</date>
            <delta_ts>2015-04-02 08:07:59 -0700</delta_ts>
            <desc>another</desc>
            <filename>response-std-chrono-5.patch</filename>
            <type>text/plain</type>
            <size>41238</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjI1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE1LTA0LTAxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ugc3RkOjpjaHJvbm8gdHlw
ZXMgdG8gcmVwcmVzZW50IHRpbWUgaW4gcmVzcG9uc2UgYW5kIGNhY2hlIGNsYXNzZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzMxNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgVXNlIHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdG8gcmVwcmVzZW50IGNsb2NrIHRpbWVzIGFuZCBz
dGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIHRvCisgICAgICAgIHJlcHJlc2VudCBkdXJhdGlvbnMu
IEFsc28gdXNlIFdURjo6T3B0aW9uYWwgZm9yIG9wdGlvbmFsIHZhbHVlcyAoaW5zdGVhZCBvZiBj
b2RpbmcgdGhlbSBhcyBOYU5zKS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bGFzdE1vZGlmaWVkKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OkNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpm
cmVzaG5lc3NMaWZldGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVz
cG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
UmVzcG9uc2VBZnRlclJldmFsaWRhdGlvbik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseSk6CisgICAgICAgIChX
ZWJDb3JlOjp1cGRhdGVSZWRpcmVjdENoYWluU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OnJl
ZGlyZWN0Q2hhaW5BbGxvd3NSZXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNhY2hlQ29u
dHJvbERpcmVjdGl2ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXM6OlJlZGly
ZWN0Q2hhaW5DYWNoZVN0YXR1cyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUVFBEYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlRGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291
cmNlUmVzcG9uc2VCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNl
OjpjYWNoZUNvbnRyb2xNYXhBZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VEYXRlVmFsdWVJ
bkhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBpcmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXN0TW9kaWZpZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKwogMjAxNS0wNC0wMSAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhlIGlPUyBi
dWlsZCBhZnRlciByMTgyMjQwLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAxODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MTQyLDExICs0MTQyLDEwIEBAIFN0cmluZyBEb2N1bWVudDo6bGFzdE1vZGlmaWVk
KCkgY29uc3QKICAgICBEYXRlQ29tcG9uZW50cyBkYXRlOwogICAgIGJvb2wgZm91bmREYXRlID0g
ZmFsc2U7CiAgICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgU3RyaW5nIGh0dHBMYXN0TW9kaWZp
ZWQ7Ci0gICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBsb2FkZXIo
KSkgCi0gICAgICAgICAgICBodHRwTGFzdE1vZGlmaWVkID0gZG9jdW1lbnRMb2FkZXItPnJlc3Bv
bnNlKCkuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpMYXN0TW9kaWZpZWQpOwotICAg
ICAgICBpZiAoIWh0dHBMYXN0TW9kaWZpZWQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBkYXRl
LnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlVGltZShwYXJzZURhdGUoaHR0cExhc3RN
b2RpZmllZCkpOworICAgICAgICBhdXRvIGxhc3RNb2RpZmllZERhdGUgPSBsb2FkZXIoKSA/IGxv
YWRlcigpLT5yZXNwb25zZSgpLmxhc3RNb2RpZmllZCgpIDogTnVsbG9wdDsKKyAgICAgICAgaWYg
KGxhc3RNb2RpZmllZERhdGUpIHsKKyAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNo
cm9ubzsKKyAgICAgICAgICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGVU
aW1lKGR1cmF0aW9uX2Nhc3Q8bWlsbGlzZWNvbmRzPihsYXN0TW9kaWZpZWREYXRlLnZhbHVlKCku
dGltZV9zaW5jZV9lcG9jaCgpKS5jb3VudCgpKTsKICAgICAgICAgICAgIGZvdW5kRGF0ZSA9IHRy
dWU7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
Niw3ICsxMTYsNyBAQCBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UoY29uc3QgUmVzCiAg
ICAgLCBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lcigqdGhpcywgJkNhY2hlZFJlc291cmNlOjpk
ZWNvZGVkRGF0YURlbGV0aW9uVGltZXJGaXJlZCwgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRl
cnZhbEZvclJlc291cmNlVHlwZSh0eXBlKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkK
ICAgICAsIG1fbG9hZFByaW9yaXR5KGRlZmF1bHRQcmlvcml0eUZvclJlc291cmNlVHlwZSh0eXBl
KSkKLSAgICAsIG1fcmVzcG9uc2VUaW1lc3RhbXAoY3VycmVudFRpbWUoKSkKKyAgICAsIG1fcmVz
cG9uc2VUaW1lc3RhbXAoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkpCiAgICAgLCBt
X2xhc3REZWNvZGVkQWNjZXNzVGltZSgwKQogICAgICwgbV9sb2FkRmluaXNoVGltZSgwKQogICAg
ICwgbV9lbmNvZGVkU2l6ZSgwKQpAQCAtMzQ3LDE2ICszNDcsMTYgQEAgYm9vbCBDYWNoZWRSZXNv
dXJjZTo6aXNFeHBpcmVkKCkgY29uc3QKICAgICByZXR1cm4gY29tcHV0ZUN1cnJlbnRBZ2UobV9y
ZXNwb25zZSwgbV9yZXNwb25zZVRpbWVzdGFtcCkgPiBmcmVzaG5lc3NMaWZldGltZShtX3Jlc3Bv
bnNlKTsKIH0KIAotZG91YmxlIENhY2hlZFJlc291cmNlOjpmcmVzaG5lc3NMaWZldGltZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgY29uc3QKK3N0ZDo6Y2hyb25vOjptaWNyb3Nl
Y29uZHMgQ2FjaGVkUmVzb3VyY2U6OmZyZXNobmVzc0xpZmV0aW1lKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKSBjb25zdAogewogICAgIGlmICghcmVzcG9uc2UudXJsKCkucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgIC8vIERvbid0IGNhY2hlIG5vbi1IVFRQIG1h
aW4gcmVzb3VyY2VzIHNpbmNlIHdlIGNhbid0IGNoZWNrIGZvciBmcmVzaG5lc3MuCiAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGNhY2hlIHN1YnJlc291cmNlcyBlaXRoZXIsIGJ1dCB3
aGVuIHdlIHRyaWVkIHRoaXMKICAgICAgICAgLy8gaXQgY2F1c2VkIHBlcmZvcm1hbmNlIGFuZCBm
bGFraW5lc3MgaXNzdWVzIGluIG91ciB0ZXN0IGluZnJhc3RydWN0dXJlLgogICAgICAgICBpZiAo
bV90eXBlID09IE1haW5SZXNvdXJjZSAmJiAhU2NoZW1lUmVnaXN0cnk6OnNob3VsZENhY2hlUmVz
cG9uc2VzRnJvbVVSTFNjaGVtZUluZGVmaW5pdGVseShyZXNwb25zZS51cmwoKS5wcm90b2NvbCgp
KSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Y2hyb25v
OjptaWNyb3NlY29uZHM6Onplcm8oKTsKIAotICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjptYXgoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjptaWNyb3Nl
Y29uZHM6Om1heCgpOwogICAgIH0KIAogICAgIHJldHVybiBjb21wdXRlRnJlc2huZXNzTGlmZXRp
bWVGb3JIVFRQRmFtaWx5KHJlc3BvbnNlLCBtX3Jlc3BvbnNlVGltZXN0YW1wKTsKQEAgLTM3Myw3
ICszNzMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiB2b2lk
IENhY2hlZFJlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewogICAgIHNldFJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICBtX3Jlc3BvbnNl
VGltZXN0YW1wID0gY3VycmVudFRpbWUoKTsKKyAgICBtX3Jlc3BvbnNlVGltZXN0YW1wID0gc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCk7CiAgICAgU3RyaW5nIGVuY29kaW5nID0gcmVz
cG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOwogICAgIGlmICghZW5jb2RpbmcuaXNOdWxsKCkpCiAg
ICAgICAgIHNldEVuY29kaW5nKGVuY29kaW5nKTsKQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIENh
Y2hlZFJlc291cmNlOjpzd2l0Y2hDbGllbnRzVG9SZXZhCiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZVJlc3BvbnNlQWZ0ZXJSZXZhbGlkYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
dmFsaWRhdGluZ1Jlc3BvbnNlKQogewotICAgIG1fcmVzcG9uc2VUaW1lc3RhbXAgPSBjdXJyZW50
VGltZSgpOworICAgIG1fcmVzcG9uc2VUaW1lc3RhbXAgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjpub3coKTsKIAogICAgIHVwZGF0ZVJlc3BvbnNlSGVhZGVyc0FmdGVyUmV2YWxpZGF0aW9u
KG1fcmVzcG9uc2UsIHZhbGlkYXRpbmdSZXNwb25zZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMTgyMjQxKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4MCw3ICsyODAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjaGVja05v
dGlmeSgpOwogICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgZG91YmxlIGZyZXNobmVzc0xpZmV0aW1lKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBjb25zdDsKKyAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRz
IGZyZXNobmVzc0xpZmV0aW1lKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBjb25zdDsKIAogICAg
IHZvaWQgYWRkQWRkaXRpb25hbFJlcXVlc3RIZWFkZXJzKENhY2hlZFJlc291cmNlTG9hZGVyJik7
CiAgICAgdm9pZCBmYWlsQmVmb3JlU3RhcnRpbmcoKTsKQEAgLTI4OSw3ICsyODksNyBAQCBwcml2
YXRlOgogICAgIFNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBTdHJpbmcgbV9hY2NlcHQ7CiAg
ICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgbV9sb2FkUHJpb3JpdHk7Ci0gICAgZG91YmxlIG1fcmVz
cG9uc2VUaW1lc3RhbXA7CisgICAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dCBtX3Jlc3BvbnNlVGltZXN0YW1wOwogCiAgICAgU3RyaW5nIG1fZnJhZ21lbnRJZGVudGlmaWVy
Rm9yUmVxdWVzdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNo
ZVZhbGlkYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04OSw0OSArODksNTcgQEAgdm9pZCB1cGRhdGVSZXNwb25zZUhlYWRlcnNBZnRlclJldmFs
aWRhdAogICAgIH0KIH0KIAotZG91YmxlIGNvbXB1dGVDdXJyZW50QWdlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXApCitzdGQ6OmNocm9u
bzo6bWljcm9zZWNvbmRzIGNvbXB1dGVDdXJyZW50QWdlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHJlc3BvbnNl
VGltZXN0YW1wKQogeworICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKKwogICAgIC8v
IFJGQzI2MTYgMTMuMi4zCiAgICAgLy8gTm8gY29tcGVuc2F0aW9uIGZvciBsYXRlbmN5IGFzIHRo
YXQgaXMgbm90IHRlcnJpYmx5IGltcG9ydGFudCBpbiBwcmFjdGljZQotICAgIGRvdWJsZSBkYXRl
VmFsdWUgPSByZXNwb25zZS5kYXRlKCk7Ci0gICAgZG91YmxlIGFwcGFyZW50QWdlID0gc3RkOjpp
c2Zpbml0ZShkYXRlVmFsdWUpID8gc3RkOjptYXgoMC4sIHJlc3BvbnNlVGltZXN0YW1wIC0gZGF0
ZVZhbHVlKSA6IDA7Ci0gICAgZG91YmxlIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCk7Ci0gICAg
ZG91YmxlIGNvcnJlY3RlZFJlY2VpdmVkQWdlID0gc3RkOjppc2Zpbml0ZShhZ2VWYWx1ZSkgPyBz
dGQ6Om1heChhcHBhcmVudEFnZSwgYWdlVmFsdWUpIDogYXBwYXJlbnRBZ2U7Ci0gICAgZG91Ymxl
IHJlc2lkZW50VGltZSA9IGN1cnJlbnRUaW1lKCkgLSByZXNwb25zZVRpbWVzdGFtcDsKKyAgICBh
dXRvIGRhdGVWYWx1ZSA9IHJlc3BvbnNlLmRhdGUoKTsKKyAgICBhdXRvIGFwcGFyZW50QWdlID0g
ZGF0ZVZhbHVlID8gc3RkOjptYXgobWljcm9zZWNvbmRzOjp6ZXJvKCksIGR1cmF0aW9uX2Nhc3Q8
bWljcm9zZWNvbmRzPihyZXNwb25zZVRpbWVzdGFtcCAtIGRhdGVWYWx1ZS52YWx1ZSgpKSkgOiBt
aWNyb3NlY29uZHM6Onplcm8oKTsKKyAgICBhcHBhcmVudEFnZSA9IHN0ZDo6bWF4KG1pY3Jvc2Vj
b25kczo6emVybygpLCBhcHBhcmVudEFnZSk7CisgICAgYXV0byBhZ2VWYWx1ZSA9IHJlc3BvbnNl
LmFnZSgpOworICAgIGF1dG8gY29ycmVjdGVkUmVjZWl2ZWRBZ2UgPSBhZ2VWYWx1ZSA/IHN0ZDo6
bWF4KGFwcGFyZW50QWdlLCBhZ2VWYWx1ZS52YWx1ZSgpKSA6IGFwcGFyZW50QWdlOworICAgIGF1
dG8gcmVzaWRlbnRUaW1lID0gZHVyYXRpb25fY2FzdDxtaWNyb3NlY29uZHM+KHN5c3RlbV9jbG9j
azo6bm93KCkgLSByZXNwb25zZVRpbWVzdGFtcCk7CiAgICAgcmV0dXJuIGNvcnJlY3RlZFJlY2Vp
dmVkQWdlICsgcmVzaWRlbnRUaW1lOwogfQogCi1kb3VibGUgY29tcHV0ZUZyZXNobmVzc0xpZmV0
aW1lRm9ySFRUUEZhbWlseShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgZG91Ymxl
IHJlc3BvbnNlVGltZXN0YW1wKQorc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBjb21wdXRlRnJl
c2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHJlc3BvbnNlVGltZXN0
YW1wKQogeworICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKICAgICBBU1NFUlQocmVz
cG9uc2UudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKTsKKwogICAgIC8vIFJGQzI2MTYg
MTMuMi40Ci0gICAgZG91YmxlIG1heEFnZVZhbHVlID0gcmVzcG9uc2UuY2FjaGVDb250cm9sTWF4
QWdlKCk7Ci0gICAgaWYgKHN0ZDo6aXNmaW5pdGUobWF4QWdlVmFsdWUpKQotICAgICAgICByZXR1
cm4gbWF4QWdlVmFsdWU7Ci0gICAgZG91YmxlIGV4cGlyZXNWYWx1ZSA9IHJlc3BvbnNlLmV4cGly
ZXMoKTsKLSAgICBkb3VibGUgZGF0ZVZhbHVlID0gcmVzcG9uc2UuZGF0ZSgpOwotICAgIGRvdWJs
ZSBjcmVhdGlvblRpbWUgPSBzdGQ6OmlzZmluaXRlKGRhdGVWYWx1ZSkgPyBkYXRlVmFsdWUgOiBy
ZXNwb25zZVRpbWVzdGFtcDsKLSAgICBpZiAoc3RkOjppc2Zpbml0ZShleHBpcmVzVmFsdWUpKQot
ICAgICAgICByZXR1cm4gZXhwaXJlc1ZhbHVlIC0gY3JlYXRpb25UaW1lOwotICAgIGRvdWJsZSBs
YXN0TW9kaWZpZWRWYWx1ZSA9IHJlc3BvbnNlLmxhc3RNb2RpZmllZCgpOwotICAgIGlmIChzdGQ6
OmlzZmluaXRlKGxhc3RNb2RpZmllZFZhbHVlKSkKLSAgICAgICAgcmV0dXJuIChjcmVhdGlvblRp
bWUgLSBsYXN0TW9kaWZpZWRWYWx1ZSkgKiAwLjE7CisgICAgYXV0byBtYXhBZ2UgPSByZXNwb25z
ZS5jYWNoZUNvbnRyb2xNYXhBZ2UoKTsKKyAgICBpZiAobWF4QWdlKQorICAgICAgICByZXR1cm4g
bWF4QWdlLnZhbHVlKCk7CisgICAgYXV0byBleHBpcmVzID0gcmVzcG9uc2UuZXhwaXJlcygpOwor
ICAgIGF1dG8gZGF0ZSA9IHJlc3BvbnNlLmRhdGUoKTsKKyAgICBhdXRvIGNyZWF0aW9uVGltZSA9
IGRhdGUgPyBkYXRlLnZhbHVlKCkgOiByZXNwb25zZVRpbWVzdGFtcDsKKyAgICBpZiAoZXhwaXJl
cykKKyAgICAgICAgcmV0dXJuIGR1cmF0aW9uX2Nhc3Q8bWljcm9zZWNvbmRzPihleHBpcmVzLnZh
bHVlKCkgLSBjcmVhdGlvblRpbWUpOworICAgIGF1dG8gbGFzdE1vZGlmaWVkID0gcmVzcG9uc2Uu
bGFzdE1vZGlmaWVkKCk7CisgICAgaWYgKGxhc3RNb2RpZmllZCkKKyAgICAgICAgcmV0dXJuIGR1
cmF0aW9uX2Nhc3Q8bWljcm9zZWNvbmRzPigoY3JlYXRpb25UaW1lIC0gbGFzdE1vZGlmaWVkLnZh
bHVlKCkpICogMC4xKTsKICAgICAvLyBJZiBubyBjYWNoZSBoZWFkZXJzIGFyZSBwcmVzZW50LCB0
aGUgc3BlY2lmaWNhdGlvbiBsZWF2ZXMgdGhlIGRlY2lzaW9uIHRvIHRoZSBVQS4gT3RoZXIgYnJv
d3NlcnMgc2VlbSB0byBvcHQgZm9yIDAuCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1pY3Jv
c2Vjb25kczo6emVybygpOwogfQogCiB2b2lkIHVwZGF0ZVJlZGlyZWN0Q2hhaW5TdGF0dXMoUmVk
aXJlY3RDaGFpbkNhY2hlU3RhdHVzJiByZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogeworICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNo
cm9ubzsKKwogICAgIGlmIChyZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMuc3RhdHVzID09IFJlZGly
ZWN0Q2hhaW5DYWNoZVN0YXR1czo6Tm90Q2FjaGVkUmVkaXJlY3Rpb24pCiAgICAgICAgIHJldHVy
bjsKICAgICBpZiAocmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKCkgfHwgcmVz
cG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlKCkgfHwgcmVzcG9uc2UuY2FjaGVDb250
cm9sQ29udGFpbnNNdXN0UmV2YWxpZGF0ZSgpKSB7CiAgICAgICAgIHJlZGlyZWN0Q2hhaW5DYWNo
ZVN0YXR1cy5zdGF0dXMgPSBSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXM6Ok5vdENhY2hlZFJlZGly
ZWN0aW9uOwogICAgICAgICByZXR1cm47CiAgICAgfQorCiAgICAgcmVkaXJlY3RDaGFpbkNhY2hl
U3RhdHVzLnN0YXR1cyA9IFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1czo6Q2FjaGVkUmVkaXJlY3Rp
b247Ci0gICAgZG91YmxlIHJlc3BvbnNlVGltZXN0YW1wID0gY3VycmVudFRpbWUoKTsKKyAgICBh
dXRvIHJlc3BvbnNlVGltZXN0YW1wID0gc3lzdGVtX2Nsb2NrOjpub3coKTsKICAgICAvLyBTdG9y
ZSB0aGUgbmVhcmVzdCBlbmQgb2YgY2FjaGUgdmFsaWRpdHkgZGF0ZQotICAgIGRvdWJsZSBlbmRP
ZlZhbGlkaXR5ID0gcmVzcG9uc2VUaW1lc3RhbXAgKyBjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVG
b3JIVFRQRmFtaWx5KHJlc3BvbnNlLCByZXNwb25zZVRpbWVzdGFtcCkgLSBjb21wdXRlQ3VycmVu
dEFnZShyZXNwb25zZSwgcmVzcG9uc2VUaW1lc3RhbXApOworICAgIGF1dG8gZW5kT2ZWYWxpZGl0
eSA9IHJlc3BvbnNlVGltZXN0YW1wICsgY29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZh
bWlseShyZXNwb25zZSwgcmVzcG9uc2VUaW1lc3RhbXApIC0gY29tcHV0ZUN1cnJlbnRBZ2UocmVz
cG9uc2UsIHJlc3BvbnNlVGltZXN0YW1wKTsKICAgICByZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMu
ZW5kT2ZWYWxpZGl0eSA9IHN0ZDo6bWluKHJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5lbmRPZlZh
bGlkaXR5LCBlbmRPZlZhbGlkaXR5KTsKIH0KIApAQCAtMTQzLDcgKzE1MSw3IEBAIGJvb2wgcmVk
aXJlY3RDaGFpbkFsbG93c1JldXNlKFJlZGlyZWN0Q2gKICAgICBjYXNlIFJlZGlyZWN0Q2hhaW5D
YWNoZVN0YXR1czo6Tm90Q2FjaGVkUmVkaXJlY3Rpb246CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBjYXNlIFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1czo6Q2FjaGVkUmVkaXJlY3Rpb246Ci0g
ICAgICAgIHJldHVybiByZXVzZUV4cGlyZWRSZWRpcmVjdGlvbiB8fCBjdXJyZW50VGltZSgpIDw9
IHJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5lbmRPZlZhbGlkaXR5OworICAgICAgICByZXR1cm4g
cmV1c2VFeHBpcmVkUmVkaXJlY3Rpb24gfHwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93
KCkgPD0gcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLmVuZE9mVmFsaWRpdHk7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTI0OCw2ICsyNTYs
OCBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+CiAKIENhY2hlQ29u
dHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVzKGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIGhlYWRlcnMpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOworCiAg
ICAgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyByZXN1bHQ7CiAKICAgICBTdHJpbmcgY2FjaGVDb250
cm9sVmFsdWUgPSBoZWFkZXJzLmdldChIVFRQSGVhZGVyTmFtZTo6Q2FjaGVDb250cm9sKTsKQEAg
LTI2NSwyOSArMjc1LDI5IEBAIENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNvbnRy
b2wKICAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGl2ZXNbaV0u
Zmlyc3QsICJtdXN0LXJldmFsaWRhdGUiKSkKICAgICAgICAgICAgICAgICByZXN1bHQubXVzdFJl
dmFsaWRhdGUgPSB0cnVlOwogICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
ZGlyZWN0aXZlc1tpXS5maXJzdCwgIm1heC1hZ2UiKSkgewotICAgICAgICAgICAgICAgIGlmICgh
c3RkOjppc25hbihyZXN1bHQubWF4QWdlKSkgeworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQu
bWF4QWdlKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEZpcnN0IG1heC1hZ2UgZGlyZWN0aXZl
IHdpbnMgaWYgdGhlcmUgYXJlIG11bHRpcGxlIG9uZXMuCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBib29sIG9rOwogICAg
ICAgICAgICAgICAgIGRvdWJsZSBtYXhBZ2UgPSBkaXJlY3RpdmVzW2ldLnNlY29uZC50b0RvdWJs
ZSgmb2spOwogICAgICAgICAgICAgICAgIGlmIChvaykKLSAgICAgICAgICAgICAgICAgICAgcmVz
dWx0Lm1heEFnZSA9IG1heEFnZTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heEFnZSA9
IGR1cmF0aW9uX2Nhc3Q8bWljcm9zZWNvbmRzPihkdXJhdGlvbjxkb3VibGU+KG1heEFnZSkpOwog
ICAgICAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJlY3RpdmVzW2ldLmZp
cnN0LCAibWF4LXN0YWxlIikpIHsKICAgICAgICAgICAgICAgICAvLyBodHRwczovL3Rvb2xzLmll
dGYub3JnL2h0bWwvcmZjNzIzNCNzZWN0aW9uLTUuMi4xLjIKLSAgICAgICAgICAgICAgICBpZiAo
IXN0ZDo6aXNuYW4ocmVzdWx0Lm1heFN0YWxlKSkgeworICAgICAgICAgICAgICAgIGlmIChyZXN1
bHQubWF4U3RhbGUpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gRmlyc3QgbWF4LXN0YWxlIGRp
cmVjdGl2ZSB3aW5zIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBvbmVzLgogICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGRp
cmVjdGl2ZXNbaV0uc2Vjb25kLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBp
ZiBubyB2YWx1ZSBpcyBhc3NpZ25lZCB0byBtYXgtc3RhbGUsIHRoZW4gdGhlIGNsaWVudCBpcyB3
aWxsaW5nIHRvIGFjY2VwdCBhIHN0YWxlIHJlc3BvbnNlIG9mIGFueSBhZ2UuCi0gICAgICAgICAg
ICAgICAgICAgIHJlc3VsdC5tYXhTdGFsZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
bWF4KCk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tYXhTdGFsZSA9IG1pY3Jvc2Vjb25k
czo6bWF4KCk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBib29sIG9rOwogICAgICAgICAgICAgICAgIGRvdWJsZSBtYXhT
dGFsZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25kLnRvRG91YmxlKCZvayk7CiAgICAgICAgICAgICAg
ICAgaWYgKG9rKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF4U3RhbGUgPSBtYXhTdGFs
ZTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heFN0YWxlID0gZHVyYXRpb25fY2FzdDxt
aWNyb3NlY29uZHM+KGR1cmF0aW9uPGRvdWJsZT4obWF4U3RhbGUpKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Q2FjaGVWYWxpZGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DYWNoZVZhbGlkYXRpb24uaAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNiArMjYsOCBAQAogI2lmbmRlZiBDYWNoZVZhbGlkYXRpb25faAogI2RlZmluZSBDYWNo
ZVZhbGlkYXRpb25faAogCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSFRUUEhlYWRlck1hcDsKQEAgLTM5LDE0ICs0MSwxNCBAQCBzdHJ1
Y3QgUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzIHsKICAgICB9OwogICAgIFJlZGlyZWN0Q2hhaW5D
YWNoZVN0YXR1cygpCiAgICAgICAgIDogc3RhdHVzKE5vUmVkaXJlY3Rpb24pCi0gICAgICAgICwg
ZW5kT2ZWYWxpZGl0eShzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKQorICAgICAg
ICAsIGVuZE9mVmFsaWRpdHkoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludDo6
bWF4KCkpCiAgICAgeyB9CiAgICAgU3RhdHVzIHN0YXR1czsKLSAgICBkb3VibGUgZW5kT2ZWYWxp
ZGl0eTsKKyAgICBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IGVuZE9mVmFs
aWRpdHk7CiB9OwogCi1XRUJDT1JFX0VYUE9SVCBkb3VibGUgY29tcHV0ZUN1cnJlbnRBZ2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIGRvdWJsZSByZXNwb25zZVRpbWVzdGFtcCk7Ci1XRUJDT1JF
X0VYUE9SVCBkb3VibGUgY29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgZG91YmxlIHJlc3BvbnNlVGltZXN0YW1wKTsKK1dFQkNPUkVf
RVhQT1JUIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgY29tcHV0ZUN1cnJlbnRBZ2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQg
cmVzcG9uc2VUaW1lc3RhbXApOworV0VCQ09SRV9FWFBPUlQgc3RkOjpjaHJvbm86Om1pY3Jvc2Vj
b25kcyBjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHJlc3BvbnNl
VGltZXN0YW1wKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVzcG9uc2VIZWFkZXJzQWZ0
ZXJSZXZhbGlkYXRpb24oUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHZhbGlkYXRpbmdSZXNwb25zZSk7CiBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVJlZGlyZWN0
Q2hhaW5TdGF0dXMoUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzJiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpOwogCkBAIC01NCw4ICs1Niw4IEBAIGVudW0gUmV1c2VFeHBpcmVkUmVkaXJlY3Rpb25P
ck5vdCB7IERvTm8KIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVkaXJlY3RDaGFpbkFsbG93c1JldXNl
KFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cywgUmV1c2VFeHBpcmVkUmVkaXJlY3Rpb25Pck5vdCk7
CiAKIHN0cnVjdCBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIHsKLSAgICBkb3VibGUgbWF4QWdlIHsg
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OwotICAgIGRvdWJsZSBt
YXhTdGFsZSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkgfTsKKyAg
ICBPcHRpb25hbDxzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBtYXhBZ2U7CisgICAgT3B0aW9u
YWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gbWF4U3RhbGU7CiAgICAgYm9vbCBub0NhY2hl
IHsgZmFsc2UgfTsKICAgICBib29sIG5vU3RvcmUgeyBmYWxzZSB9OwogICAgIGJvb2wgbXVzdFJl
dmFsaWRhdGUgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQUGFyc2Vycy5jcHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzQsOSArMjM0LDE0IEBAIGJvb2wgcGFyc2VIVFRQUmVmcmVzaChjb25zdCBTdHJpbmcmIHJlZnIK
ICAgICB9CiB9CiAKLWRvdWJsZSBwYXJzZURhdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK09wdGlv
bmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IHBhcnNlSFRUUERhdGUo
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gcGFyc2VEYXRlRnJvbU51bGxUZXJt
aW5hdGVkQ2hhcmFjdGVycyh2YWx1ZS51dGY4KCkuZGF0YSgpKTsKKyAgICBkb3VibGUgZGF0ZUlu
TWlsbGlzZWNvbmRzU2luY2VFcG9jaCA9IHBhcnNlRGF0ZUZyb21OdWxsVGVybWluYXRlZENoYXJh
Y3RlcnModmFsdWUudXRmOCgpLmRhdGEoKSk7CisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGRhdGVJ
bk1pbGxpc2Vjb25kc1NpbmNlRXBvY2gpKQorICAgICAgICByZXR1cm4geyB9OworICAgIC8vIFRo
aXMgYXNzdW1lcyBzeXN0ZW1fY2xvY2sgZXBvY2ggZXF1YWxzIFVuaXggZXBvY2ggd2hpY2ggaXMg
dHJ1ZSBmb3IgYWxsIGltcGxlbWVudGF0aW9ucyBidXQgdW5zcGVjaWZpZWQuCisgICAgLy8gRklY
TUU6IFRoZSBwYXJzaW5nIGZ1bmN0aW9uIHNob3VsZCBiZSBzd2l0Y2hlZCB0byBzdGQ6OmNocm9u
byB0b28uCisgICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQo
c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyhzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGRhdGVJbk1p
bGxpc2Vjb25kc1NpbmNlRXBvY2gpKSk7CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIGRv
ZXNuJ3QgY29tcGx5IHdpdGggUkZDIDYyNjYuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCShyZXZpc2lvbiAxODIyNDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02NCw3ICs2NSw3IEBA
IENvbnRlbnREaXNwb3NpdGlvblR5cGUgY29udGVudERpc3Bvc2l0aW8KIGJvb2wgaXNWYWxpZEhU
VFBIZWFkZXJWYWx1ZShjb25zdCBTdHJpbmcmKTsKIGJvb2wgaXNWYWxpZEhUVFBUb2tlbihjb25z
dCBTdHJpbmcmKTsKIGJvb2wgcGFyc2VIVFRQUmVmcmVzaChjb25zdCBTdHJpbmcmIHJlZnJlc2gs
IGJvb2wgZnJvbUh0dHBFcXVpdk1ldGEsIGRvdWJsZSYgZGVsYXksIFN0cmluZyYgdXJsKTsKLWRv
dWJsZSBwYXJzZURhdGUoY29uc3QgU3RyaW5nJik7CitPcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lz
dGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBwYXJzZUhUVFBEYXRlKGNvbnN0IFN0cmluZyYpOwogU3Ry
aW5nIGZpbGVuYW1lRnJvbUhUVFBDb250ZW50RGlzcG9zaXRpb24oY29uc3QgU3RyaW5nJik7IAog
U3RyaW5nIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7CiBTdHJp
bmcgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOyAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNw
b25zZUJhc2UuY3BwCShyZXZpc2lvbiAxODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NDIgKzQzLDIyIEBAIGlubGluZSBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBSZXNvdXJjZVIKICAg
ICByZXR1cm4gKnN0YXRpY19jYXN0PGNvbnN0IFJlc291cmNlUmVzcG9uc2UqPih0aGlzKTsKIH0K
IAotUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VCYXNlKCkgIAotICAgIDog
bV9leHBlY3RlZENvbnRlbnRMZW5ndGgoMCkKK1Jlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJj
ZVJlc3BvbnNlQmFzZSgpCisgICAgOiBtX2lzTnVsbCh0cnVlKQorICAgICwgbV9leHBlY3RlZENv
bnRlbnRMZW5ndGgoMCkKICAgICAsIG1faW5jbHVkZXNDZXJ0aWZpY2F0ZUluZm8oZmFsc2UpCiAg
ICAgLCBtX2h0dHBTdGF0dXNDb2RlKDApCi0gICAgLCBtX2FnZSgwKQotICAgICwgbV9kYXRlKDAp
Ci0gICAgLCBtX2V4cGlyZXMoMCkKLSAgICAsIG1fbGFzdE1vZGlmaWVkKDApCi0gICAgLCBtX2lz
TnVsbCh0cnVlKQotICAgICwgbV9oYXZlUGFyc2VkQ2FjaGVDb250cm9sSGVhZGVyKGZhbHNlKQot
ICAgICwgbV9oYXZlUGFyc2VkQWdlSGVhZGVyKGZhbHNlKQotICAgICwgbV9oYXZlUGFyc2VkRGF0
ZUhlYWRlcihmYWxzZSkKLSAgICAsIG1faGF2ZVBhcnNlZEV4cGlyZXNIZWFkZXIoZmFsc2UpCi0g
ICAgLCBtX2hhdmVQYXJzZWRMYXN0TW9kaWZpZWRIZWFkZXIoZmFsc2UpCi0gICAgLCBtX3NvdXJj
ZShTb3VyY2U6OlVua25vd24pCiB7CiB9CiAKIFJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJj
ZVJlc3BvbnNlQmFzZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgbG9u
ZyBsb25nIGV4cGVjdGVkTGVuZ3RoLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpCi0g
ICAgOiBtX3VybCh1cmwpCisgICAgOiBtX2lzTnVsbChmYWxzZSkKKyAgICAsIG1fdXJsKHVybCkK
ICAgICAsIG1fbWltZVR5cGUobWltZVR5cGUpCiAgICAgLCBtX2V4cGVjdGVkQ29udGVudExlbmd0
aChleHBlY3RlZExlbmd0aCkKICAgICAsIG1fdGV4dEVuY29kaW5nTmFtZSh0ZXh0RW5jb2RpbmdO
YW1lKQogICAgICwgbV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbyh0cnVlKSAvLyBFbXB0eSBidXQg
dmFsaWQgZm9yIHN5bnRoZXRpYyByZXNwb25zZXMuCiAgICAgLCBtX2h0dHBTdGF0dXNDb2RlKDAp
Ci0gICAgLCBtX2FnZSgwKQotICAgICwgbV9kYXRlKDApCi0gICAgLCBtX2V4cGlyZXMoMCkKLSAg
ICAsIG1fbGFzdE1vZGlmaWVkKDApCi0gICAgLCBtX2lzTnVsbChmYWxzZSkKLSAgICAsIG1faGF2
ZVBhcnNlZENhY2hlQ29udHJvbEhlYWRlcihmYWxzZSkKLSAgICAsIG1faGF2ZVBhcnNlZEFnZUhl
YWRlcihmYWxzZSkKLSAgICAsIG1faGF2ZVBhcnNlZERhdGVIZWFkZXIoZmFsc2UpCi0gICAgLCBt
X2hhdmVQYXJzZWRFeHBpcmVzSGVhZGVyKGZhbHNlKQotICAgICwgbV9oYXZlUGFyc2VkTGFzdE1v
ZGlmaWVkSGVhZGVyKGZhbHNlKQotICAgICwgbV9zb3VyY2UoU291cmNlOjpVbmtub3duKQogewog
fQogCkBAIC0zODEsMjkgKzM2MSwyNiBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpoYXND
YWNoZVZhbGlkCiAgICAgcmV0dXJuICFtX2h0dHBIZWFkZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJO
YW1lOjpMYXN0TW9kaWZpZWQpLmlzRW1wdHkoKSB8fCAhbV9odHRwSGVhZGVyRmllbGRzLmdldChI
VFRQSGVhZGVyTmFtZTo6RVRhZykuaXNFbXB0eSgpOwogfQogCi1kb3VibGUgUmVzb3VyY2VSZXNw
b25zZUJhc2U6OmNhY2hlQ29udHJvbE1heEFnZSgpIGNvbnN0CitPcHRpb25hbDxzdGQ6OmNocm9u
bzo6bWljcm9zZWNvbmRzPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y2FjaGVDb250cm9sTWF4QWdl
KCkgY29uc3QKIHsKICAgICBpZiAoIW1faGF2ZVBhcnNlZENhY2hlQ29udHJvbEhlYWRlcikKICAg
ICAgICAgcGFyc2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVzKCk7CiAgICAgcmV0dXJuIG1fY2FjaGVD
b250cm9sRGlyZWN0aXZlcy5tYXhBZ2U7CiB9CiAKLXN0YXRpYyBkb3VibGUgcGFyc2VEYXRlVmFs
dWVJbkhlYWRlcihjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBIVFRQSGVhZGVyTmFtZSBo
ZWFkZXJOYW1lKQorc3RhdGljIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQ+IHBhcnNlRGF0ZVZhbHVlSW5IZWFkZXIoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVh
ZGVycywgSFRUUEhlYWRlck5hbWUgaGVhZGVyTmFtZSkKIHsKICAgICBTdHJpbmcgaGVhZGVyVmFs
dWUgPSBoZWFkZXJzLmdldChoZWFkZXJOYW1lKTsKICAgICBpZiAoaGVhZGVyVmFsdWUuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9O
YU4oKTsgCisgICAgICAgIHJldHVybiB7IH07CiAgICAgLy8gVGhpcyBoYW5kbGVzIGFsbCBkYXRl
IGZvcm1hdHMgcmVxdWlyZWQgYnkgUkZDMjYxNjoKICAgICAvLyBTdW4sIDA2IE5vdiAxOTk0IDA4
OjQ5OjM3IEdNVCAgOyBSRkMgODIyLCB1cGRhdGVkIGJ5IFJGQyAxMTIzCiAgICAgLy8gU3VuZGF5
LCAwNi1Ob3YtOTQgMDg6NDk6MzcgR01UIDsgUkZDIDg1MCwgb2Jzb2xldGVkIGJ5IFJGQyAxMDM2
CiAgICAgLy8gU3VuIE5vdiAgNiAwODo0OTozNyAxOTk0ICAgICAgIDsgQU5TSSBDJ3MgYXNjdGlt
ZSgpIGZvcm1hdAotICAgIGRvdWJsZSBkYXRlSW5NaWxsaXNlY29uZHMgPSBwYXJzZURhdGUoaGVh
ZGVyVmFsdWUpOwotICAgIGlmICghc3RkOjppc2Zpbml0ZShkYXRlSW5NaWxsaXNlY29uZHMpKQot
ICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsK
LSAgICByZXR1cm4gZGF0ZUluTWlsbGlzZWNvbmRzIC8gMTAwMDsKKyAgICByZXR1cm4gcGFyc2VI
VFRQRGF0ZShoZWFkZXJWYWx1ZSk7CiB9CiAKLWRvdWJsZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
ZGF0ZSgpIGNvbnN0CitPcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50PiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGF0ZSgpIGNvbnN0CiB7CiAgICAgbGF6eUluaXQo
Q29tbW9uRmllbGRzT25seSk7CiAKQEAgLTQxNCwyMiArMzkxLDI0IEBAIGRvdWJsZSBSZXNvdXJj
ZVJlc3BvbnNlQmFzZTo6ZGF0ZSgpIGNvbnMKICAgICByZXR1cm4gbV9kYXRlOwogfQogCi1kb3Vi
bGUgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmFnZSgpIGNvbnN0CitPcHRpb25hbDxzdGQ6OmNocm9u
bzo6bWljcm9zZWNvbmRzPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWdlKCkgY29uc3QKIHsKKyAg
ICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87CisKICAgICBsYXp5SW5pdChDb21tb25GaWVs
ZHNPbmx5KTsKIAogICAgIGlmICghbV9oYXZlUGFyc2VkQWdlSGVhZGVyKSB7CiAgICAgICAgIFN0
cmluZyBoZWFkZXJWYWx1ZSA9IG1faHR0cEhlYWRlckZpZWxkcy5nZXQoSFRUUEhlYWRlck5hbWU6
OkFnZSk7CiAgICAgICAgIGJvb2wgb2s7Ci0gICAgICAgIG1fYWdlID0gaGVhZGVyVmFsdWUudG9E
b3VibGUoJm9rKTsKLSAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgIG1fYWdlID0gc3RkOjpu
dW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKKyAgICAgICAgZG91YmxlIGFnZURv
dWJsZSA9IGhlYWRlclZhbHVlLnRvRG91YmxlKCZvayk7CisgICAgICAgIGlmIChvaykKKyAgICAg
ICAgICAgIG1fYWdlID0gZHVyYXRpb25fY2FzdDxtaWNyb3NlY29uZHM+KGR1cmF0aW9uPGRvdWJs
ZT4oYWdlRG91YmxlKSk7CiAgICAgICAgIG1faGF2ZVBhcnNlZEFnZUhlYWRlciA9IHRydWU7CiAg
ICAgfQogICAgIHJldHVybiBtX2FnZTsKIH0KIAotZG91YmxlIFJlc291cmNlUmVzcG9uc2VCYXNl
OjpleHBpcmVzKCkgY29uc3QKK09wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQ+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBpcmVzKCkgY29uc3QKIHsKICAgICBs
YXp5SW5pdChDb21tb25GaWVsZHNPbmx5KTsKIApAQCAtNDQwLDcgKzQxOSw3IEBAIGRvdWJsZSBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZXhwaXJlcygpIGMKICAgICByZXR1cm4gbV9leHBpcmVzOwog
fQogCi1kb3VibGUgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omxhc3RNb2RpZmllZCgpIGNvbnN0CitP
cHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6bGFzdE1vZGlmaWVkKCkgY29uc3QKIHsKICAgICBsYXp5SW5pdChDb21tb25G
aWVsZHNPbmx5KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZVJlc3BvbnNlQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaAkocmV2aXNpb24gMTgyMjQxKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDQsMTEgKzEwNCwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBjYWNoZUNvbnRyb2xDb250YWluc05vU3RvcmUoKSBjb25zdDsKICAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGNhY2hlQ29udHJvbENvbnRhaW5zTXVzdFJldmFsaWRhdGUoKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0NhY2hlVmFsaWRhdG9yRmllbGRzKCkgY29uc3Q7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgZG91YmxlIGNhY2hlQ29udHJvbE1heEFnZSgpIGNvbnN0Owot
ICAgIGRvdWJsZSBkYXRlKCkgY29uc3Q7Ci0gICAgZG91YmxlIGFnZSgpIGNvbnN0OwotICAgIFdF
QkNPUkVfRVhQT1JUIGRvdWJsZSBleHBpcmVzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
ZG91YmxlIGxhc3RNb2RpZmllZCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFs
PHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IGNhY2hlQ29udHJvbE1heEFnZSgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQ+IGRhdGUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxzdGQ6
OmNocm9ubzo6bWljcm9zZWNvbmRzPiBhZ2UoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBP
cHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBleHBpcmVzKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludD4gbGFzdE1vZGlmaWVkKCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNz
IFNvdXJjZSB7IFVua25vd24sIE5ldHdvcmssIERpc2tDYWNoZSwgRGlza0NhY2hlQWZ0ZXJWYWxp
ZGF0aW9uIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgU291cmNlIHNvdXJjZSgpIGNvbnN0OwpAQCAt
MTQ3LDYgKzE0NywxMyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNv
bXBhcmUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSB7
IHJldHVybiB0cnVlOyB9CiAKK3ByaXZhdGU6CisgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
YXNSZXNvdXJjZVJlc3BvbnNlKCkgY29uc3Q7CisgICAgdm9pZCBwYXJzZUNhY2hlQ29udHJvbERp
cmVjdGl2ZXMoKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUhlYWRlclBhcnNlZFN0YXRlKEhUVFBI
ZWFkZXJOYW1lKTsKKworcHJvdGVjdGVkOgorICAgIGJvb2wgbV9pc051bGw7CiAgICAgVVJMIG1f
dXJsOwogICAgIEF0b21pY1N0cmluZyBtX21pbWVUeXBlOwogICAgIGxvbmcgbG9uZyBtX2V4cGVj
dGVkQ29udGVudExlbmd0aDsKQEAgLTE2MSwyNyArMTY4LDE5IEBAIHByb3RlY3RlZDoKICAgICBp
bnQgbV9odHRwU3RhdHVzQ29kZTsKIAogcHJpdmF0ZToKLSAgICBtdXRhYmxlIGRvdWJsZSBtX2Fn
ZTsKLSAgICBtdXRhYmxlIGRvdWJsZSBtX2RhdGU7Ci0gICAgbXV0YWJsZSBkb3VibGUgbV9leHBp
cmVzOwotICAgIG11dGFibGUgZG91YmxlIG1fbGFzdE1vZGlmaWVkOworICAgIG11dGFibGUgT3B0
aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gbV9hZ2U7CisgICAgbXV0YWJsZSBPcHRp
b25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBtX2RhdGU7CisgICAg
bXV0YWJsZSBPcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiBt
X2V4cGlyZXM7CisgICAgbXV0YWJsZSBPcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50PiBtX2xhc3RNb2RpZmllZDsKICAgICBtdXRhYmxlIENhY2hlQ29udHJvbERp
cmVjdGl2ZXMgbV9jYWNoZUNvbnRyb2xEaXJlY3RpdmVzOwogCi1wdWJsaWM6Ci0gICAgYm9vbCBt
X2lzTnVsbCA6IDE7Ci0gICAgCi1wcml2YXRlOgotICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IGFzUmVzb3VyY2VSZXNwb25zZSgpIGNvbnN0OwotICAgIHZvaWQgcGFyc2VDYWNoZUNvbnRyb2xE
aXJlY3RpdmVzKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVIZWFkZXJQYXJzZWRTdGF0ZShIVFRQ
SGVhZGVyTmFtZSk7Ci0KLSAgICBtdXRhYmxlIGJvb2wgbV9oYXZlUGFyc2VkQ2FjaGVDb250cm9s
SGVhZGVyIDogMTsKLSAgICBtdXRhYmxlIGJvb2wgbV9oYXZlUGFyc2VkQWdlSGVhZGVyIDogMTsK
LSAgICBtdXRhYmxlIGJvb2wgbV9oYXZlUGFyc2VkRGF0ZUhlYWRlciA6IDE7Ci0gICAgbXV0YWJs
ZSBib29sIG1faGF2ZVBhcnNlZEV4cGlyZXNIZWFkZXIgOiAxOwotICAgIG11dGFibGUgYm9vbCBt
X2hhdmVQYXJzZWRMYXN0TW9kaWZpZWRIZWFkZXIgOiAxOworICAgIG11dGFibGUgYm9vbCBtX2hh
dmVQYXJzZWRDYWNoZUNvbnRyb2xIZWFkZXIgeyBmYWxzZSB9OworICAgIG11dGFibGUgYm9vbCBt
X2hhdmVQYXJzZWRBZ2VIZWFkZXIgeyBmYWxzZSB9OworICAgIG11dGFibGUgYm9vbCBtX2hhdmVQ
YXJzZWREYXRlSGVhZGVyIHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIGJvb2wgbV9oYXZlUGFyc2Vk
RXhwaXJlc0hlYWRlciB7IGZhbHNlIH07CisgICAgbXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZExh
c3RNb2RpZmllZEhlYWRlciB7IGZhbHNlIH07CiAKLSAgICBTb3VyY2UgbV9zb3VyY2U7CisgICAg
U291cmNlIG1fc291cmNlIHsgU291cmNlOjpVbmtub3duIH07CiB9OwogCiBpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIGEsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIGIpIHsgcmV0dXJuIFJlc291cmNlUmVzcG9uc2VCYXNlOjpjb21wYXJlKGEsIGIpOyB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODIyNTMpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOCBAQAorMjAxNS0wNC0wMSAgQW50dGkgS29p
dmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIHN0ZDo6Y2hyb25vIHR5cGVz
IHRvIHJlcHJlc2VudCB0aW1lIGluIHJlc3BvbnNlIGFuZCBjYWNoZSBjbGFzc2VzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzMTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OnJl
c3BvbnNlSGFzRXhwaXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cmVzcG9u
c2VOZWVkc1JldmFsaWRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6bWFr
ZVN0b3JlRGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpz
dG9yZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkVudHJ5OjpFbnRyeSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OmFzSlNPTik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpFbnRyeTo6dGltZVN0YW1wKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0NhY2hlOjpkZWNvZGVSZWNvcmRNZXRhRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6ZGVjb2RlUmVjb3JkKToKKworICAgICAgICAgICAgU2FuaXR5IGNoZWNrIHRoZSB0aW1l
c3RhbXAgb24gZGVjb2RlLgorCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6ZW5jb2Rl
UmVjb3JkTWV0YURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmVuY29kZVJl
Y29yZEhlYWRlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6dHJh
dmVyc2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Omxhc3RNb2RpZmllZERhdGVNUyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6
Omxhc3RNb2RpZmllZERhdGUpOiBEZWxldGVkLgorCiAyMDE1LTA0LTAxICBUaW1vdGh5IEhvcnRv
biAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBTbWFydCBtYWduaWZpY2F0
aW9uIGdlc3R1cmUgc29tZXRpbWVzIHNob290cyB0byB0aGUgbWlkZGxlIG9mIHRoZSBwYWdlCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxOCw5ICszMTgsOSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9h
CiAgICAgICAgIGJvb2wgYWxsb3dTdGFsZSA9IG9yaWdpbmFsUmVxdWVzdCgpLmNhY2hlUG9saWN5
KCkgPj0gUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQ7CiAgICAgICAgIGJvb2wgaGFzQ2FjaGVhYmxl
UmVkaXJlY3QgPSBtX3Jlc3BvbnNlLmlzSFRUUCgpICYmIFdlYkNvcmU6OnJlZGlyZWN0Q2hhaW5B
bGxvd3NSZXVzZShtX3JlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cywgYWxsb3dTdGFsZSA/IFdlYkNv
cmU6OlJldXNlRXhwaXJlZFJlZGlyZWN0aW9uIDogV2ViQ29yZTo6RG9Ob3RSZXVzZUV4cGlyZWRS
ZWRpcmVjdGlvbik7CiAgICAgICAgIGlmIChoYXNDYWNoZWFibGVSZWRpcmVjdCAmJiBtX3JlZGly
ZWN0Q2hhaW5DYWNoZVN0YXR1cy5zdGF0dXMgPT0gUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzOjpD
YWNoZWRSZWRpcmVjdGlvbikgewotICAgICAgICAgICAgLy8gRklYTUU6IENhY2hlIHRoZSBhY3R1
YWwgcmVkaXJlY3RzIGluc3RlYWQgb2YgdGhlIGVuZCByZXN1bHQuCi0gICAgICAgICAgICBkb3Vi
bGUgbm93ID0gY3VycmVudFRpbWUoKTsKLSAgICAgICAgICAgIGRvdWJsZSByZXNwb25zZUVuZE9m
VmFsaWRpdHkgPSBub3cgKyBXZWJDb3JlOjpjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQ
RmFtaWx5KG1fcmVzcG9uc2UsIG5vdykgLSBXZWJDb3JlOjpjb21wdXRlQ3VycmVudEFnZShtX3Jl
c3BvbnNlLCBub3cpOworICAgICAgICAgICAgLy8gTWF5YmUgd2Ugc2hvdWxkIGNhY2hlIHRoZSBh
Y3R1YWwgcmVkaXJlY3RzIGluc3RlYWQgb2YgdGhlIGVuZCByZXN1bHQ/CisgICAgICAgICAgICBh
dXRvIG5vdyA9IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpOworICAgICAgICAgICAg
YXV0byByZXNwb25zZUVuZE9mVmFsaWRpdHkgPSBub3cgKyBXZWJDb3JlOjpjb21wdXRlRnJlc2hu
ZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KG1fcmVzcG9uc2UsIG5vdykgLSBXZWJDb3JlOjpjb21w
dXRlQ3VycmVudEFnZShtX3Jlc3BvbnNlLCBub3cpOwogICAgICAgICAgICAgaGFzQ2FjaGVhYmxl
UmVkaXJlY3QgPSByZXNwb25zZUVuZE9mVmFsaWRpdHkgPD0gbV9yZWRpcmVjdENoYWluQ2FjaGVT
dGF0dXMuZW5kT2ZWYWxpZGl0eTsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAJKHJldmlzaW9u
IDE4MjI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MCwxNyArMTUwLDE2IEBAIHN0YXRpYyBib29s
IGNhY2hlUG9saWN5QWxsb3dzRXhwaXJlZChXZWIKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0
YXRpYyBib29sIHJlc3BvbnNlSGFzRXhwaXJlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyB0aW1lc3RhbXAsIGRvdWJs
ZSBtYXhTdGFsZSkKK3N0YXRpYyBib29sIHJlc3BvbnNlSGFzRXhwaXJlZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6
dGltZV9wb2ludCB0aW1lc3RhbXAsIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+
IG1heFN0YWxlKQogewogICAgIGlmIChyZXNwb25zZS5jYWNoZUNvbnRyb2xDb250YWluc05vQ2Fj
aGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBhdXRvIGRvdWJsZVRpbWVTdGFtcCA9
IHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+KHRpbWVzdGFtcCk7Ci0gICAgZG91YmxlIGFn
ZSA9IFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKHJlc3BvbnNlLCBkb3VibGVUaW1lU3RhbXAu
Y291bnQoKSk7Ci0gICAgZG91YmxlIGxpZmV0aW1lID0gV2ViQ29yZTo6Y29tcHV0ZUZyZXNobmVz
c0xpZmV0aW1lRm9ySFRUUEZhbWlseShyZXNwb25zZSwgZG91YmxlVGltZVN0YW1wLmNvdW50KCkp
OworICAgIGF1dG8gYWdlID0gV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UocmVzcG9uc2UsIHRp
bWVzdGFtcCk7CisgICAgYXV0byBsaWZldGltZSA9IFdlYkNvcmU6OmNvbXB1dGVGcmVzaG5lc3NM
aWZldGltZUZvckhUVFBGYW1pbHkocmVzcG9uc2UsIHRpbWVzdGFtcCk7CiAKLSAgICBtYXhTdGFs
ZSA9IHN0ZDo6aXNuYW4obWF4U3RhbGUpID8gMCA6IG1heFN0YWxlOwotICAgIGJvb2wgaGFzRXhw
aXJlZCA9IGFnZSAtIGxpZmV0aW1lID4gbWF4U3RhbGU7CisgICAgYXV0byBtYXhpbXVtU3RhbGVu
ZXNzID0gbWF4U3RhbGUgPyBtYXhTdGFsZS52YWx1ZSgpIDogc3RkOjpjaHJvbm86Om1pY3Jvc2Vj
b25kczo6emVybygpOworICAgIGJvb2wgaGFzRXhwaXJlZCA9IGFnZSAtIGxpZmV0aW1lID4gbWF4
aW11bVN0YWxlbmVzczsKIAogI2lmbmRlZiBMT0dfRElTQUJMRUQKICAgICBpZiAoaGFzRXhwaXJl
ZCkKQEAgLTE3MCwxNCArMTY5LDE2IEBAIHN0YXRpYyBib29sIHJlc3BvbnNlSGFzRXhwaXJlZChj
b25zdCBXZWIKICAgICByZXR1cm4gaGFzRXhwaXJlZDsKIH0KIAotc3RhdGljIGJvb2wgcmVzcG9u
c2VOZWVkc1JldmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBzdGQ6OmNocm9u
bzo6bWlsbGlzZWNvbmRzIHRpbWVzdGFtcCkKK3N0YXRpYyBib29sIHJlc3BvbnNlTmVlZHNSZXZh
bGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludCB0aW1lc3RhbXApCiB7CiAgICAgYXV0byByZXF1ZXN0RGlyZWN0aXZl
cyA9IFdlYkNvcmU6OnBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcyhyZXF1ZXN0Lmh0dHBIZWFk
ZXJGaWVsZHMoKSk7CiAgICAgaWYgKHJlcXVlc3REaXJlY3RpdmVzLm5vQ2FjaGUpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIC8vIEZvciByZXF1ZXN0cyB3ZSBpZ25vcmUgbWF4LWFnZSB2YWx1
ZXMgb3RoZXIgdGhhbiB6ZXJvLgotICAgIGlmIChyZXF1ZXN0RGlyZWN0aXZlcy5tYXhBZ2UgPT0g
MCkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHJlcXVlc3REaXJlY3RpdmVzLm1heEFn
ZSkgeworICAgICAgICBpZiAocmVxdWVzdERpcmVjdGl2ZXMubWF4QWdlLnZhbHVlKCkgPT0gc3Rk
OjpjaHJvbm86Om1pY3Jvc2Vjb25kczo6emVybygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQogCiAgICAgcmV0dXJuIHJlc3BvbnNlSGFzRXhwaXJlZChyZXNwb25zZSwgdGltZXN0
YW1wLCByZXF1ZXN0RGlyZWN0aXZlcy5tYXhTdGFsZSk7CiB9CkBAIC0yNjksNyArMjcwLDcgQEAg
c3RhdGljIFN0b3JlRGVjaXNpb24gbWFrZVN0b3JlRGVjaXNpb24oYwogCiAgICAgaWYgKCFpc1N0
YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpIHsK
ICAgICAgICAgLy8gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzNCNzZWN0aW9uLTQu
My4yCi0gICAgICAgIGJvb2wgaGFzRXhwaXJhdGlvbkhlYWRlcnMgPSBzdGQ6OmlzZmluaXRlKHJl
c3BvbnNlLmV4cGlyZXMoKSkgfHwgc3RkOjppc2Zpbml0ZShyZXNwb25zZS5jYWNoZUNvbnRyb2xN
YXhBZ2UoKSk7CisgICAgICAgIGJvb2wgaGFzRXhwaXJhdGlvbkhlYWRlcnMgPSByZXNwb25zZS5l
eHBpcmVzKCkgfHwgcmVzcG9uc2UuY2FjaGVDb250cm9sTWF4QWdlKCk7CiAgICAgICAgIGJvb2wg
ZXhwaXJhdGlvbkhlYWRlcnNBbGxvd0NhY2hpbmcgPSBpc1N0YXR1c0NvZGVQb3RlbnRpYWxseUNh
Y2hlYWJsZShyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSAmJiBoYXNFeHBpcmF0aW9uSGVhZGVy
czsKICAgICAgICAgaWYgKCFleHBpcmF0aW9uSGVhZGVyc0FsbG93Q2FjaGluZykKICAgICAgICAg
ICAgIHJldHVybiBTdG9yZURlY2lzaW9uOjpOb0R1ZVRvSFRUUFN0YXR1c0NvZGU7CkBAIC0yNzgs
OCArMjc5LDggQEAgc3RhdGljIFN0b3JlRGVjaXNpb24gbWFrZVN0b3JlRGVjaXNpb24oYwogICAg
IC8vIE1haW4gcmVzb3VyY2UgaGFzIFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUhpZ2guCiAgICAg
Ym9vbCBzdG9yZVVuY29uZGl0aW9uYWxseUZvckhpc3RvcnlOYXZpZ2F0aW9uID0gb3JpZ2luYWxS
ZXF1ZXN0LnByaW9yaXR5KCkgPT0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5SGln
aDsKICAgICBpZiAoIXN0b3JlVW5jb25kaXRpb25hbGx5Rm9ySGlzdG9yeU5hdmlnYXRpb24pIHsK
LSAgICAgICAgYXV0byBjdXJyZW50VGltZSA9IHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+
KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKSk7Ci0g
ICAgICAgIGJvb2wgaGFzTm9uWmVyb0xpZmV0aW1lID0gIXJlc3BvbnNlLmNhY2hlQ29udHJvbENv
bnRhaW5zTm9DYWNoZSgpICYmIFdlYkNvcmU6OmNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhU
VFBGYW1pbHkocmVzcG9uc2UsIGN1cnJlbnRUaW1lLmNvdW50KCkpID4gMDsKKyAgICAgICAgYXV0
byBub3cgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKTsKKyAgICAgICAgYm9vbCBo
YXNOb25aZXJvTGlmZXRpbWUgPSAhcmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hl
KCkgJiYgV2ViQ29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShyZXNw
b25zZSwgbm93KSA+IHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM6Onplcm8oKTsKIAogICAgICAg
ICBib29sIHBvc3NpYmx5UmV1c2FibGUgPSByZXNwb25zZS5oYXNDYWNoZVZhbGlkYXRvckZpZWxk
cygpIHx8IGhhc05vblplcm9MaWZldGltZTsKICAgICAgICAgaWYgKCFwb3NzaWJseVJldXNhYmxl
KQpAQCAtMzU4LDcgKzM1OSw2IEBAIHZvaWQgQ2FjaGU6OnN0b3JlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmMKICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBzdG9yaW5nICVz
LCBwYXJ0aXRpb24gJXMiLCBvcmlnaW5hbFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpLCBvcmlnaW5hbFJlcXVlc3QuY2FjaGVQYXJ0aXRpb24oKS5sYXRpbjEoKS5kYXRhKCkp
OwogCiAgICAgU3RvcmVEZWNpc2lvbiBzdG9yZURlY2lzaW9uID0gbWFrZVN0b3JlRGVjaXNpb24o
b3JpZ2luYWxSZXF1ZXN0LCByZXNwb25zZSk7Ci0KICAgICBpZiAoc3RvcmVEZWNpc2lvbiAhPSBT
dG9yZURlY2lzaW9uOjpZZXMpIHsKICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZSwgIihOZXR3b3Jr
UHJvY2VzcykgZGlkbid0IHN0b3JlLCBzdG9yZURlY2lzaW9uPSVkIiwgc3RvcmVEZWNpc2lvbik7
CiAgICAgICAgIGlmIChtX3N0YXRpc3RpY3MpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAJKHJl
dmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUVudHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBuYW1l
c3BhY2UgTmV0d29ya0NhY2hlIHsKIAogRW50cnk6OkVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJp
bmc+PiYgdmFyeWluZ1JlcXVlc3RIZWFkZXJzKQogICAgIDogbV9rZXkoa2V5KQotICAgICwgbV90
aW1lU3RhbXAoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxpc2Vj
b25kcz4oc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgp
KSkKKyAgICAsIG1fdGltZVN0YW1wKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpKQog
ICAgICwgbV9yZXNwb25zZShyZXNwb25zZSkKICAgICAsIG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJz
KHZhcnlpbmdSZXF1ZXN0SGVhZGVycykKICAgICAsIG1fYnVmZmVyKFdURjo6bW92ZShidWZmZXIp
KQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZvaWQgRW50cnk6OmFzSlNPTihTdHJpbmdCdWlsZGVyJiBq
c29uLCAKICAgICBKU0M6OmFwcGVuZFF1b3RlZEpTT05TdHJpbmdUb0J1aWxkZXIoanNvbiwgbV9r
ZXkucGFydGl0aW9uKCkpOwogICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFxuIik7CiAgICAganNv
bi5hcHBlbmRMaXRlcmFsKCJcInRpbWVzdGFtcFwiOiAiKTsKLSAgICBqc29uLmFwcGVuZE51bWJl
cihtX3RpbWVTdGFtcC5jb3VudCgpKTsKKyAgICBqc29uLmFwcGVuZE51bWJlcihzdGQ6OmNocm9u
bzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPihtX3RpbWVTdGFtcC50
aW1lX3NpbmNlX2Vwb2NoKCkpLmNvdW50KCkpOwogICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiLFxu
Iik7CiAgICAganNvbi5hcHBlbmRMaXRlcmFsKCJcIlVSTFwiOiAiKTsKICAgICBKU0M6OmFwcGVu
ZFF1b3RlZEpTT05TdHJpbmdUb0J1aWxkZXIoanNvbiwgbV9yZXNwb25zZS51cmwoKS5zdHJpbmco
KSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVFbnRyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUVudHJ5LmgJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUVudHJ5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
RW50cnk+IGRlY29kZVN0b3JhZ2VSZWNvcmQoY29uc3QgU3RvcmFnZTo6UmVjb3JkJik7CiAKICAg
ICBjb25zdCBLZXkmIGtleSgpIGNvbnN0IHsgcmV0dXJuIG1fa2V5OyB9Ci0gICAgc3RkOjpjaHJv
bm86Om1pbGxpc2Vjb25kcyB0aW1lU3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVTdGFtcDsg
fQorICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZVN0YW1wKCkg
Y29uc3QgeyByZXR1cm4gbV90aW1lU3RhbXA7IH0KICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KICAgICBj
b25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVh
ZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyeWluZ1JlcXVlc3RIZWFkZXJzOyB9CiAKQEAgLTcy
LDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVCdWZmZXJGcm9tU3RvcmFn
ZVJlY29yZCgpIGNvbnN0OwogCiAgICAgS2V5IG1fa2V5OwotICAgIHN0ZDo6Y2hyb25vOjptaWxs
aXNlY29uZHMgbV90aW1lU3RhbXA7CisgICAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtX3RpbWVTdGFtcDsKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVz
cG9uc2U7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IG1fdmFyeWluZ1Jl
cXVlc3RIZWFkZXJzOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAkocmV2aXNpb24gMTgy
MjQxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw3ICsxNDIsOCBAQCBzdHJ1Y3QgUmVj
b3JkTWV0YURhdGEgewogCiAgICAgdW5zaWduZWQgY2FjaGVTdG9yYWdlVmVyc2lvbjsKICAgICBL
ZXkga2V5OwotICAgIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZVN0YW1wOworICAgIC8v
IEZJWE1FOiBBZGQgZW5jb2Rlci9kZWNvZGVyIGZvciB0aW1lX3BvaW50LgorICAgIHN0ZDo6Y2hy
b25vOjptaWxsaXNlY29uZHMgZXBvY2hSZWxhdGl2ZVRpbWVTdGFtcDsKICAgICB1bnNpZ25lZCBo
ZWFkZXJDaGVja3N1bTsKICAgICB1aW50NjRfdCBoZWFkZXJPZmZzZXQ7CiAgICAgdWludDY0X3Qg
aGVhZGVyU2l6ZTsKQEAgLTE2MCw3ICsxNjEsNyBAQCBzdGF0aWMgYm9vbCBkZWNvZGVSZWNvcmRN
ZXRhRGF0YShSZWNvcmRNCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobWV0YURhdGEua2V5KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXRhRGF0YS50aW1lU3RhbXApKQorICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKG1ldGFEYXRhLmVwb2NoUmVsYXRpdmVUaW1lU3RhbXApKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1l
dGFEYXRhLmhlYWRlckNoZWNrc3VtKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIx
NSw2ICsyMTYsMTEgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdlOjpSZWNvcmQ+IAog
ICAgIGlmIChtZXRhRGF0YS5rZXkgIT0ga2V5KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAor
ICAgIC8vIFNhbml0eSBjaGVjayBhZ2FpbnN0IHRpbWVTdGFtcHMgaW4gZnV0dXJlLgorICAgIGF1
dG8gdGltZVN0YW1wID0gc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludChtZXRh
RGF0YS5lcG9jaFJlbGF0aXZlVGltZVN0YW1wKTsKKyAgICBpZiAodGltZVN0YW1wID4gc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAg
ICAgRGF0YSBib2R5RGF0YTsKICAgICBpZiAobWV0YURhdGEuYm9keVNpemUpIHsKICAgICAgICAg
aWYgKG1ldGFEYXRhLmJvZHlPZmZzZXQgKyBtZXRhRGF0YS5ib2R5U2l6ZSAhPSBmaWxlRGF0YS5z
aXplKCkpCkBAIC0yMzQsNyArMjQwLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdl
OjpSZWNvcmQ+IAogCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8U3RvcmFnZTo6UmVjb3Jk
PihTdG9yYWdlOjpSZWNvcmQgewogICAgICAgICBtZXRhRGF0YS5rZXksCi0gICAgICAgIG1ldGFE
YXRhLnRpbWVTdGFtcCwKKyAgICAgICAgdGltZVN0YW1wLAogICAgICAgICBoZWFkZXJEYXRhLAog
ICAgICAgICBib2R5RGF0YQogICAgIH0pOwpAQCAtMjQ2LDcgKzI1Miw3IEBAIHN0YXRpYyBEYXRh
IGVuY29kZVJlY29yZE1ldGFEYXRhKGNvbnN0IFIKIAogICAgIGVuY29kZXIgPDwgbWV0YURhdGEu
Y2FjaGVTdG9yYWdlVmVyc2lvbjsKICAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLmtleTsKLSAgICBl
bmNvZGVyIDw8IG1ldGFEYXRhLnRpbWVTdGFtcDsKKyAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLmVw
b2NoUmVsYXRpdmVUaW1lU3RhbXA7CiAgICAgZW5jb2RlciA8PCBtZXRhRGF0YS5oZWFkZXJDaGVj
a3N1bTsKICAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLmhlYWRlclNpemU7CiAgICAgZW5jb2RlciA8
PCBtZXRhRGF0YS5ib2R5Q2hlY2tzdW07CkBAIC0yNjAsNyArMjY2LDcgQEAgc3RhdGljIERhdGEg
ZW5jb2RlUmVjb3JkTWV0YURhdGEoY29uc3QgUgogc3RhdGljIERhdGEgZW5jb2RlUmVjb3JkSGVh
ZGVyKGNvbnN0IFN0b3JhZ2U6OlJlY29yZCYgcmVjb3JkKQogewogICAgIFJlY29yZE1ldGFEYXRh
IG1ldGFEYXRhKHJlY29yZC5rZXkpOwotICAgIG1ldGFEYXRhLnRpbWVTdGFtcCA9IHJlY29yZC50
aW1lU3RhbXA7CisgICAgbWV0YURhdGEuZXBvY2hSZWxhdGl2ZVRpbWVTdGFtcCA9IHN0ZDo6Y2hy
b25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KHJlY29yZC50aW1l
U3RhbXAudGltZV9zaW5jZV9lcG9jaCgpKTsKICAgICBtZXRhRGF0YS5oZWFkZXJDaGVja3N1bSA9
IGhhc2hEYXRhKHJlY29yZC5oZWFkZXIpOwogICAgIG1ldGFEYXRhLmhlYWRlclNpemUgPSByZWNv
cmQuaGVhZGVyLnNpemUoKTsKICAgICBtZXRhRGF0YS5ib2R5Q2hlY2tzdW0gPSBoYXNoRGF0YShy
ZWNvcmQuYm9keSk7CkBAIC00NDYsNyArNDUyLDcgQEAgdm9pZCBTdG9yYWdlOjp0cmF2ZXJzZShU
cmF2ZXJzZUZsYWdzIGZsYQogICAgICAgICAgICAgICAgIFJlY29yZE1ldGFEYXRhIG1ldGFEYXRh
OwogICAgICAgICAgICAgICAgIERhdGEgaGVhZGVyRGF0YTsKICAgICAgICAgICAgICAgICBpZiAo
ZGVjb2RlUmVjb3JkSGVhZGVyKGZpbGVEYXRhLCBtZXRhRGF0YSwgaGVhZGVyRGF0YSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgUmVjb3JkIHJlY29yZCB7IG1ldGFEYXRhLmtleSwgbWV0YURhdGEu
dGltZVN0YW1wLCBoZWFkZXJEYXRhLCB7IH0gfTsKKyAgICAgICAgICAgICAgICAgICAgUmVjb3Jk
IHJlY29yZCB7IG1ldGFEYXRhLmtleSwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludChtZXRhRGF0YS5lcG9jaFJlbGF0aXZlVGltZVN0YW1wKSwgaGVhZGVyRGF0YSwgeyB9IH07
CiAgICAgICAgICAgICAgICAgICAgIGluZm8uYm9keVNpemUgPSBtZXRhRGF0YS5ib2R5U2l6ZTsK
ICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2VIYW5kbGVyKCZyZWNvcmQsIGluZm8pOwogICAg
ICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0b3JhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgJKHJldmlzaW9uIDE4MjI0MSkK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICBzdHJ1
Y3QgUmVjb3JkIHsKICAgICAgICAgS2V5IGtleTsKLSAgICAgICAgc3RkOjpjaHJvbm86Om1pbGxp
c2Vjb25kcyB0aW1lU3RhbXA7CisgICAgICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQgdGltZVN0YW1wOwogICAgICAgICBEYXRhIGhlYWRlcjsKICAgICAgICAgRGF0YSBi
b2R5OwogICAgIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAxODIyNDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMSwx
MyArMjAxLDEzIEBAIHN0YXRpYyBTdHJpbmcgYnVpbGRIVFRQSGVhZGVycyhjb25zdCBSZXMKICAg
ICByZXR1cm4gaGVhZGVyczsKIH0KIAotc3RhdGljIHVpbnQzMl90IGxhc3RNb2RpZmllZERhdGUo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCitzdGF0aWMgdWludDMyX3QgbGFzdE1v
ZGlmaWVkRGF0ZU1TKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIGRv
dWJsZSBsYXN0TW9kaWZpZWQgPSByZXNwb25zZS5sYXN0TW9kaWZpZWQoKTsKLSAgICBpZiAoIXN0
ZDo6aXNmaW5pdGUobGFzdE1vZGlmaWVkKSkKKyAgICBhdXRvIGxhc3RNb2RpZmllZCA9IHJlc3Bv
bnNlLmxhc3RNb2RpZmllZCgpOworICAgIGlmICghbGFzdE1vZGlmaWVkKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIHJldHVybiBsYXN0TW9kaWZpZWQgKiAxMDAwOworICAgIHJldHVybiBzdGQ6
OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPihsYXN0TW9k
aWZpZWQudmFsdWUoKS50aW1lX3NpbmNlX2Vwb2NoKCkpLmNvdW50KCk7CiB9CiAKIHZvaWQgUGx1
Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2UoTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTIyMyw3ICsyMjMs
NyBAQCB2b2lkIFBsdWdpblZpZXc6OlN0cmVhbTo6ZGlkUmVjZWl2ZVJlc3BvCiAgICAgaWYgKGV4
cGVjdGVkQ29udGVudExlbmd0aCA+IDApCiAgICAgICAgIHN0cmVhbUxlbmd0aCA9IGV4cGVjdGVk
Q29udGVudExlbmd0aDsKIAotICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJl
Y2VpdmVSZXNwb25zZShtX3N0cmVhbUlELCByZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0
TW9kaWZpZWREYXRlKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dl
c3RlZEZpbGVuYW1lKCkpOworICAgIG1fcGx1Z2luVmlldy0+bV9wbHVnaW4tPnN0cmVhbURpZFJl
Y2VpdmVSZXNwb25zZShtX3N0cmVhbUlELCByZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0
TW9kaWZpZWREYXRlTVMocmVzcG9uc2UpLCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3Vn
Z2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNl
aXZlRGF0YShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlciosIGNvbnN0IGNoYXIqIGJ5dGVzLCBp
bnQgbGVuZ3RoKQpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9h
ZERpZFJlY2VpdmVSZXMKICAgICBpZiAoZXhwZWN0ZWRDb250ZW50TGVuZ3RoID4gMCkKICAgICAg
ICAgc3RyZWFtTGVuZ3RoID0gZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwogCi0gICAgbV9wbHVnaW4t
Pm1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3Ro
LCBsYXN0TW9kaWZpZWREYXRlKHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3BvbnNl
LnN1Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgIG1fcGx1Z2luLT5tYW51YWxTdHJlYW1EaWRSZWNl
aXZlUmVzcG9uc2UocmVzcG9uc2VVUkwsIHN0cmVhbUxlbmd0aCwgbGFzdE1vZGlmaWVkRGF0ZU1T
KHJlc3BvbnNlKSwgbWltZVR5cGUsIGhlYWRlcnMsIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1l
KCkpOwogfQogCiB2b2lkIFBsdWdpblZpZXc6Om1hbnVhbExvYWREaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249979</attachid>
            <date>2015-04-02 08:07:59 -0700</date>
            <delta_ts>2015-04-02 08:07:59 -0700</delta_ts>
            <desc>another</desc>
            <filename>response-std-chrono-6.patch</filename>
            <type>text/plain</type>
            <size>42608</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjI1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE1LTA0LTAxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ugc3RkOjpjaHJvbm8gdHlw
ZXMgdG8gcmVwcmVzZW50IHRpbWUgaW4gcmVzcG9uc2UgYW5kIGNhY2hlIGNsYXNzZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzMxNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgVXNlIHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdG8gcmVwcmVzZW50IGNsb2NrIHRpbWVzIGFuZCBz
dGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIHRvCisgICAgICAgIHJlcHJlc2VudCBkdXJhdGlvbnMu
IEFsc28gdXNlIFdURjo6T3B0aW9uYWwgZm9yIG9wdGlvbmFsIHZhbHVlcyAoaW5zdGVhZCBvZiBj
b2RpbmcgdGhlbSBhcyBOYU5zKS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bGFzdE1vZGlmaWVkKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OkNhY2hlZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpm
cmVzaG5lc3NMaWZldGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6cmVz
cG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dXBkYXRl
UmVzcG9uc2VBZnRlclJldmFsaWRhdGlvbik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseSk6CisgICAgICAgIChX
ZWJDb3JlOjp1cGRhdGVSZWRpcmVjdENoYWluU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OnJl
ZGlyZWN0Q2hhaW5BbGxvd3NSZXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNhY2hlQ29u
dHJvbERpcmVjdGl2ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0
aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXM6OlJlZGly
ZWN0Q2hhaW5DYWNoZVN0YXR1cyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFy
c2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUVFBEYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhcnNlRGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291
cmNlUmVzcG9uc2VCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNl
OjpjYWNoZUNvbnRyb2xNYXhBZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VEYXRlVmFsdWVJ
bkhlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6YWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpleHBpcmVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjpsYXN0TW9kaWZpZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKwogMjAxNS0wNC0wMSAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdGhlIGlPUyBi
dWlsZCBhZnRlciByMTgyMjQwLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAxODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MTQyLDExICs0MTQyLDEwIEBAIFN0cmluZyBEb2N1bWVudDo6bGFzdE1vZGlmaWVk
KCkgY29uc3QKICAgICBEYXRlQ29tcG9uZW50cyBkYXRlOwogICAgIGJvb2wgZm91bmREYXRlID0g
ZmFsc2U7CiAgICAgaWYgKG1fZnJhbWUpIHsKLSAgICAgICAgU3RyaW5nIGh0dHBMYXN0TW9kaWZp
ZWQ7Ci0gICAgICAgIGlmIChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBsb2FkZXIo
KSkgCi0gICAgICAgICAgICBodHRwTGFzdE1vZGlmaWVkID0gZG9jdW1lbnRMb2FkZXItPnJlc3Bv
bnNlKCkuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpMYXN0TW9kaWZpZWQpOwotICAg
ICAgICBpZiAoIWh0dHBMYXN0TW9kaWZpZWQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBkYXRl
LnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlVGltZShwYXJzZURhdGUoaHR0cExhc3RN
b2RpZmllZCkpOworICAgICAgICBhdXRvIGxhc3RNb2RpZmllZERhdGUgPSBsb2FkZXIoKSA/IGxv
YWRlcigpLT5yZXNwb25zZSgpLmxhc3RNb2RpZmllZCgpIDogTnVsbG9wdDsKKyAgICAgICAgaWYg
KGxhc3RNb2RpZmllZERhdGUpIHsKKyAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNo
cm9ubzsKKyAgICAgICAgICAgIGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9jaEZvckRhdGVU
aW1lKGR1cmF0aW9uX2Nhc3Q8bWlsbGlzZWNvbmRzPihsYXN0TW9kaWZpZWREYXRlLnZhbHVlKCku
dGltZV9zaW5jZV9lcG9jaCgpKS5jb3VudCgpKTsKICAgICAgICAgICAgIGZvdW5kRGF0ZSA9IHRy
dWU7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
Niw3ICsxMTYsNyBAQCBDYWNoZWRSZXNvdXJjZTo6Q2FjaGVkUmVzb3VyY2UoY29uc3QgUmVzCiAg
ICAgLCBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lcigqdGhpcywgJkNhY2hlZFJlc291cmNlOjpk
ZWNvZGVkRGF0YURlbGV0aW9uVGltZXJGaXJlZCwgZGVhZERlY29kZWREYXRhRGVsZXRpb25JbnRl
cnZhbEZvclJlc291cmNlVHlwZSh0eXBlKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkK
ICAgICAsIG1fbG9hZFByaW9yaXR5KGRlZmF1bHRQcmlvcml0eUZvclJlc291cmNlVHlwZSh0eXBl
KSkKLSAgICAsIG1fcmVzcG9uc2VUaW1lc3RhbXAoY3VycmVudFRpbWUoKSkKKyAgICAsIG1fcmVz
cG9uc2VUaW1lc3RhbXAoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkpCiAgICAgLCBt
X2xhc3REZWNvZGVkQWNjZXNzVGltZSgwKQogICAgICwgbV9sb2FkRmluaXNoVGltZSgwKQogICAg
ICwgbV9lbmNvZGVkU2l6ZSgwKQpAQCAtMzQ3LDE2ICszNDcsMTYgQEAgYm9vbCBDYWNoZWRSZXNv
dXJjZTo6aXNFeHBpcmVkKCkgY29uc3QKICAgICByZXR1cm4gY29tcHV0ZUN1cnJlbnRBZ2UobV9y
ZXNwb25zZSwgbV9yZXNwb25zZVRpbWVzdGFtcCkgPiBmcmVzaG5lc3NMaWZldGltZShtX3Jlc3Bv
bnNlKTsKIH0KIAotZG91YmxlIENhY2hlZFJlc291cmNlOjpmcmVzaG5lc3NMaWZldGltZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgY29uc3QKK3N0ZDo6Y2hyb25vOjptaWNyb3Nl
Y29uZHMgQ2FjaGVkUmVzb3VyY2U6OmZyZXNobmVzc0xpZmV0aW1lKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKSBjb25zdAogewogICAgIGlmICghcmVzcG9uc2UudXJsKCkucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgIC8vIERvbid0IGNhY2hlIG5vbi1IVFRQIG1h
aW4gcmVzb3VyY2VzIHNpbmNlIHdlIGNhbid0IGNoZWNrIGZvciBmcmVzaG5lc3MuCiAgICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGNhY2hlIHN1YnJlc291cmNlcyBlaXRoZXIsIGJ1dCB3
aGVuIHdlIHRyaWVkIHRoaXMKICAgICAgICAgLy8gaXQgY2F1c2VkIHBlcmZvcm1hbmNlIGFuZCBm
bGFraW5lc3MgaXNzdWVzIGluIG91ciB0ZXN0IGluZnJhc3RydWN0dXJlLgogICAgICAgICBpZiAo
bV90eXBlID09IE1haW5SZXNvdXJjZSAmJiAhU2NoZW1lUmVnaXN0cnk6OnNob3VsZENhY2hlUmVz
cG9uc2VzRnJvbVVSTFNjaGVtZUluZGVmaW5pdGVseShyZXNwb25zZS51cmwoKS5wcm90b2NvbCgp
KSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Y2hyb25v
OjptaWNyb3NlY29uZHM6Onplcm8oKTsKIAotICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xp
bWl0czxkb3VibGU+OjptYXgoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjptaWNyb3Nl
Y29uZHM6Om1heCgpOwogICAgIH0KIAogICAgIHJldHVybiBjb21wdXRlRnJlc2huZXNzTGlmZXRp
bWVGb3JIVFRQRmFtaWx5KHJlc3BvbnNlLCBtX3Jlc3BvbnNlVGltZXN0YW1wKTsKQEAgLTM3Myw3
ICszNzMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjp3aWxsU2VuZFJlcXVlc3QoUmVzCiB2b2lk
IENhY2hlZFJlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQogewogICAgIHNldFJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICBtX3Jlc3BvbnNl
VGltZXN0YW1wID0gY3VycmVudFRpbWUoKTsKKyAgICBtX3Jlc3BvbnNlVGltZXN0YW1wID0gc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCk7CiAgICAgU3RyaW5nIGVuY29kaW5nID0gcmVz
cG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOwogICAgIGlmICghZW5jb2RpbmcuaXNOdWxsKCkpCiAg
ICAgICAgIHNldEVuY29kaW5nKGVuY29kaW5nKTsKQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIENh
Y2hlZFJlc291cmNlOjpzd2l0Y2hDbGllbnRzVG9SZXZhCiAKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6
OnVwZGF0ZVJlc3BvbnNlQWZ0ZXJSZXZhbGlkYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
dmFsaWRhdGluZ1Jlc3BvbnNlKQogewotICAgIG1fcmVzcG9uc2VUaW1lc3RhbXAgPSBjdXJyZW50
VGltZSgpOworICAgIG1fcmVzcG9uc2VUaW1lc3RhbXAgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjpub3coKTsKIAogICAgIHVwZGF0ZVJlc3BvbnNlSGVhZGVyc0FmdGVyUmV2YWxpZGF0aW9u
KG1fcmVzcG9uc2UsIHZhbGlkYXRpbmdSZXNwb25zZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMTgyMjQxKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4MCw3ICsyODAsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjaGVja05v
dGlmeSgpOwogICAgIHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgZG91YmxlIGZyZXNobmVzc0xpZmV0aW1lKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBjb25zdDsKKyAgICBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRz
IGZyZXNobmVzc0xpZmV0aW1lKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBjb25zdDsKIAogICAg
IHZvaWQgYWRkQWRkaXRpb25hbFJlcXVlc3RIZWFkZXJzKENhY2hlZFJlc291cmNlTG9hZGVyJik7
CiAgICAgdm9pZCBmYWlsQmVmb3JlU3RhcnRpbmcoKTsKQEAgLTI4OSw3ICsyODksNyBAQCBwcml2
YXRlOgogICAgIFNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBTdHJpbmcgbV9hY2NlcHQ7CiAg
ICAgUmVzb3VyY2VMb2FkUHJpb3JpdHkgbV9sb2FkUHJpb3JpdHk7Ci0gICAgZG91YmxlIG1fcmVz
cG9uc2VUaW1lc3RhbXA7CisgICAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dCBtX3Jlc3BvbnNlVGltZXN0YW1wOwogCiAgICAgU3RyaW5nIG1fZnJhZ21lbnRJZGVudGlmaWVy
Rm9yUmVxdWVzdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNo
ZVZhbGlkYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04OSw0OSArODksNTYgQEAgdm9pZCB1cGRhdGVSZXNwb25zZUhlYWRlcnNBZnRlclJldmFs
aWRhdAogICAgIH0KIH0KIAotZG91YmxlIGNvbXB1dGVDdXJyZW50QWdlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXApCitzdGQ6OmNocm9u
bzo6bWljcm9zZWNvbmRzIGNvbXB1dGVDdXJyZW50QWdlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHJlc3BvbnNl
VGltZXN0YW1wKQogeworICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKKwogICAgIC8v
IFJGQzI2MTYgMTMuMi4zCiAgICAgLy8gTm8gY29tcGVuc2F0aW9uIGZvciBsYXRlbmN5IGFzIHRo
YXQgaXMgbm90IHRlcnJpYmx5IGltcG9ydGFudCBpbiBwcmFjdGljZQotICAgIGRvdWJsZSBkYXRl
VmFsdWUgPSByZXNwb25zZS5kYXRlKCk7Ci0gICAgZG91YmxlIGFwcGFyZW50QWdlID0gc3RkOjpp
c2Zpbml0ZShkYXRlVmFsdWUpID8gc3RkOjptYXgoMC4sIHJlc3BvbnNlVGltZXN0YW1wIC0gZGF0
ZVZhbHVlKSA6IDA7Ci0gICAgZG91YmxlIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCk7Ci0gICAg
ZG91YmxlIGNvcnJlY3RlZFJlY2VpdmVkQWdlID0gc3RkOjppc2Zpbml0ZShhZ2VWYWx1ZSkgPyBz
dGQ6Om1heChhcHBhcmVudEFnZSwgYWdlVmFsdWUpIDogYXBwYXJlbnRBZ2U7Ci0gICAgZG91Ymxl
IHJlc2lkZW50VGltZSA9IGN1cnJlbnRUaW1lKCkgLSByZXNwb25zZVRpbWVzdGFtcDsKKyAgICBh
dXRvIGRhdGVWYWx1ZSA9IHJlc3BvbnNlLmRhdGUoKTsKKyAgICBhdXRvIGFwcGFyZW50QWdlID0g
ZGF0ZVZhbHVlID8gc3RkOjptYXgobWljcm9zZWNvbmRzOjp6ZXJvKCksIGR1cmF0aW9uX2Nhc3Q8
bWljcm9zZWNvbmRzPihyZXNwb25zZVRpbWVzdGFtcCAtIGRhdGVWYWx1ZS52YWx1ZSgpKSkgOiBt
aWNyb3NlY29uZHM6Onplcm8oKTsKKyAgICBhdXRvIGFnZVZhbHVlID0gcmVzcG9uc2UuYWdlKCk7
CisgICAgYXV0byBjb3JyZWN0ZWRSZWNlaXZlZEFnZSA9IGFnZVZhbHVlID8gc3RkOjptYXgoYXBw
YXJlbnRBZ2UsIGFnZVZhbHVlLnZhbHVlKCkpIDogYXBwYXJlbnRBZ2U7CisgICAgYXV0byByZXNp
ZGVudFRpbWUgPSBkdXJhdGlvbl9jYXN0PG1pY3Jvc2Vjb25kcz4oc3lzdGVtX2Nsb2NrOjpub3co
KSAtIHJlc3BvbnNlVGltZXN0YW1wKTsKICAgICByZXR1cm4gY29ycmVjdGVkUmVjZWl2ZWRBZ2Ug
KyByZXNpZGVudFRpbWU7CiB9CiAKLWRvdWJsZSBjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JI
VFRQRmFtaWx5KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBkb3VibGUgcmVzcG9u
c2VUaW1lc3RhbXApCitzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIGNvbXB1dGVGcmVzaG5lc3NM
aWZldGltZUZvckhUVFBGYW1pbHkoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgcmVzcG9uc2VUaW1lc3RhbXApCiB7
CisgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOwogICAgIEFTU0VSVChyZXNwb25zZS51
cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOworCiAgICAgLy8gUkZDMjYxNiAxMy4yLjQK
LSAgICBkb3VibGUgbWF4QWdlVmFsdWUgPSByZXNwb25zZS5jYWNoZUNvbnRyb2xNYXhBZ2UoKTsK
LSAgICBpZiAoc3RkOjppc2Zpbml0ZShtYXhBZ2VWYWx1ZSkpCi0gICAgICAgIHJldHVybiBtYXhB
Z2VWYWx1ZTsKLSAgICBkb3VibGUgZXhwaXJlc1ZhbHVlID0gcmVzcG9uc2UuZXhwaXJlcygpOwot
ICAgIGRvdWJsZSBkYXRlVmFsdWUgPSByZXNwb25zZS5kYXRlKCk7Ci0gICAgZG91YmxlIGNyZWF0
aW9uVGltZSA9IHN0ZDo6aXNmaW5pdGUoZGF0ZVZhbHVlKSA/IGRhdGVWYWx1ZSA6IHJlc3BvbnNl
VGltZXN0YW1wOwotICAgIGlmIChzdGQ6OmlzZmluaXRlKGV4cGlyZXNWYWx1ZSkpCi0gICAgICAg
IHJldHVybiBleHBpcmVzVmFsdWUgLSBjcmVhdGlvblRpbWU7Ci0gICAgZG91YmxlIGxhc3RNb2Rp
ZmllZFZhbHVlID0gcmVzcG9uc2UubGFzdE1vZGlmaWVkKCk7Ci0gICAgaWYgKHN0ZDo6aXNmaW5p
dGUobGFzdE1vZGlmaWVkVmFsdWUpKQotICAgICAgICByZXR1cm4gKGNyZWF0aW9uVGltZSAtIGxh
c3RNb2RpZmllZFZhbHVlKSAqIDAuMTsKKyAgICBhdXRvIG1heEFnZSA9IHJlc3BvbnNlLmNhY2hl
Q29udHJvbE1heEFnZSgpOworICAgIGlmIChtYXhBZ2UpCisgICAgICAgIHJldHVybiBtYXhBZ2Uu
dmFsdWUoKTsKKyAgICBhdXRvIGV4cGlyZXMgPSByZXNwb25zZS5leHBpcmVzKCk7CisgICAgYXV0
byBkYXRlID0gcmVzcG9uc2UuZGF0ZSgpOworICAgIGF1dG8gY3JlYXRpb25UaW1lID0gZGF0ZSA/
IGRhdGUudmFsdWUoKSA6IHJlc3BvbnNlVGltZXN0YW1wOworICAgIGlmIChleHBpcmVzKQorICAg
ICAgICByZXR1cm4gZHVyYXRpb25fY2FzdDxtaWNyb3NlY29uZHM+KGV4cGlyZXMudmFsdWUoKSAt
IGNyZWF0aW9uVGltZSk7CisgICAgYXV0byBsYXN0TW9kaWZpZWQgPSByZXNwb25zZS5sYXN0TW9k
aWZpZWQoKTsKKyAgICBpZiAobGFzdE1vZGlmaWVkKQorICAgICAgICByZXR1cm4gZHVyYXRpb25f
Y2FzdDxtaWNyb3NlY29uZHM+KChjcmVhdGlvblRpbWUgLSBsYXN0TW9kaWZpZWQudmFsdWUoKSkg
KiAwLjEpOwogICAgIC8vIElmIG5vIGNhY2hlIGhlYWRlcnMgYXJlIHByZXNlbnQsIHRoZSBzcGVj
aWZpY2F0aW9uIGxlYXZlcyB0aGUgZGVjaXNpb24gdG8gdGhlIFVBLiBPdGhlciBicm93c2VycyBz
ZWVtIHRvIG9wdCBmb3IgMC4KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbWljcm9zZWNvbmRz
Ojp6ZXJvKCk7CiB9CiAKIHZvaWQgdXBkYXRlUmVkaXJlY3RDaGFpblN0YXR1cyhSZWRpcmVjdENo
YWluQ2FjaGVTdGF0dXMmIHJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cywgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7CisgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOwor
CiAgICAgaWYgKHJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5zdGF0dXMgPT0gUmVkaXJlY3RDaGFp
bkNhY2hlU3RhdHVzOjpOb3RDYWNoZWRSZWRpcmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogICAg
IGlmIChyZXNwb25zZS5jYWNoZUNvbnRyb2xDb250YWluc05vU3RvcmUoKSB8fCByZXNwb25zZS5j
YWNoZUNvbnRyb2xDb250YWluc05vQ2FjaGUoKSB8fCByZXNwb25zZS5jYWNoZUNvbnRyb2xDb250
YWluc011c3RSZXZhbGlkYXRlKCkpIHsKICAgICAgICAgcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVz
LnN0YXR1cyA9IFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1czo6Tm90Q2FjaGVkUmVkaXJlY3Rpb247
CiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICByZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMu
c3RhdHVzID0gUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzOjpDYWNoZWRSZWRpcmVjdGlvbjsKLSAg
ICBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXAgPSBjdXJyZW50VGltZSgpOworICAgIGF1dG8gcmVz
cG9uc2VUaW1lc3RhbXAgPSBzeXN0ZW1fY2xvY2s6Om5vdygpOwogICAgIC8vIFN0b3JlIHRoZSBu
ZWFyZXN0IGVuZCBvZiBjYWNoZSB2YWxpZGl0eSBkYXRlCi0gICAgZG91YmxlIGVuZE9mVmFsaWRp
dHkgPSByZXNwb25zZVRpbWVzdGFtcCArIGNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBG
YW1pbHkocmVzcG9uc2UsIHJlc3BvbnNlVGltZXN0YW1wKSAtIGNvbXB1dGVDdXJyZW50QWdlKHJl
c3BvbnNlLCByZXNwb25zZVRpbWVzdGFtcCk7CisgICAgYXV0byBlbmRPZlZhbGlkaXR5ID0gcmVz
cG9uc2VUaW1lc3RhbXAgKyBjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KHJl
c3BvbnNlLCByZXNwb25zZVRpbWVzdGFtcCkgLSBjb21wdXRlQ3VycmVudEFnZShyZXNwb25zZSwg
cmVzcG9uc2VUaW1lc3RhbXApOwogICAgIHJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5lbmRPZlZh
bGlkaXR5ID0gc3RkOjptaW4ocmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLmVuZE9mVmFsaWRpdHks
IGVuZE9mVmFsaWRpdHkpOwogfQogCkBAIC0xNDMsNyArMTUwLDcgQEAgYm9vbCByZWRpcmVjdENo
YWluQWxsb3dzUmV1c2UoUmVkaXJlY3RDaAogICAgIGNhc2UgUmVkaXJlY3RDaGFpbkNhY2hlU3Rh
dHVzOjpOb3RDYWNoZWRSZWRpcmVjdGlvbjoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNh
c2UgUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzOjpDYWNoZWRSZWRpcmVjdGlvbjoKLSAgICAgICAg
cmV0dXJuIHJldXNlRXhwaXJlZFJlZGlyZWN0aW9uIHx8IGN1cnJlbnRUaW1lKCkgPD0gcmVkaXJl
Y3RDaGFpbkNhY2hlU3RhdHVzLmVuZE9mVmFsaWRpdHk7CisgICAgICAgIHJldHVybiByZXVzZUV4
cGlyZWRSZWRpcmVjdGlvbiB8fCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKSA8PSBy
ZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMuZW5kT2ZWYWxpZGl0eTsKICAgICB9CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjQ4LDYgKzI1NSw4IEBAIHN0
YXRpYyBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4KIAogQ2FjaGVDb250cm9sRGly
ZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoY29uc3QgSFRUUEhlYWRlck1hcCYg
aGVhZGVycykKIHsKKyAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87CisKICAgICBDYWNo
ZUNvbnRyb2xEaXJlY3RpdmVzIHJlc3VsdDsKIAogICAgIFN0cmluZyBjYWNoZUNvbnRyb2xWYWx1
ZSA9IGhlYWRlcnMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpDYWNoZUNvbnRyb2wpOwpAQCAtMjY1LDI5
ICsyNzQsMjkgQEAgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyBwYXJzZUNhY2hlQ29udHJvbAogICAg
ICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGlyZWN0aXZlc1tpXS5maXJzdCwg
Im11c3QtcmV2YWxpZGF0ZSIpKQogICAgICAgICAgICAgICAgIHJlc3VsdC5tdXN0UmV2YWxpZGF0
ZSA9IHRydWU7CiAgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJlY3Rp
dmVzW2ldLmZpcnN0LCAibWF4LWFnZSIpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFzdGQ6Omlz
bmFuKHJlc3VsdC5tYXhBZ2UpKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5tYXhBZ2Up
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gRmlyc3QgbWF4LWFnZSBkaXJlY3RpdmUgd2lucyBp
ZiB0aGVyZSBhcmUgbXVsdGlwbGUgb25lcy4KICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJvb2wgb2s7CiAgICAgICAgICAg
ICAgICAgZG91YmxlIG1heEFnZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25kLnRvRG91YmxlKCZvayk7
CiAgICAgICAgICAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF4
QWdlID0gbWF4QWdlOworICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF4QWdlID0gZHVyYXRp
b25fY2FzdDxtaWNyb3NlY29uZHM+KGR1cmF0aW9uPGRvdWJsZT4obWF4QWdlKSk7CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGl2ZXNbaV0uZmlyc3QsICJt
YXgtc3RhbGUiKSkgewogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcv
aHRtbC9yZmM3MjM0I3NlY3Rpb24tNS4yLjEuMgotICAgICAgICAgICAgICAgIGlmICghc3RkOjpp
c25hbihyZXN1bHQubWF4U3RhbGUpKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5tYXhT
dGFsZSkgewogICAgICAgICAgICAgICAgICAgICAvLyBGaXJzdCBtYXgtc3RhbGUgZGlyZWN0aXZl
IHdpbnMgaWYgdGhlcmUgYXJlIG11bHRpcGxlIG9uZXMuCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aXZl
c1tpXS5zZWNvbmQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIGlmIG5vIHZh
bHVlIGlzIGFzc2lnbmVkIHRvIG1heC1zdGFsZSwgdGhlbiB0aGUgY2xpZW50IGlzIHdpbGxpbmcg
dG8gYWNjZXB0IGEgc3RhbGUgcmVzcG9uc2Ugb2YgYW55IGFnZS4KLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0Lm1heFN0YWxlID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKTsK
KyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heFN0YWxlID0gbWljcm9zZWNvbmRzOjptYXgo
KTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGJvb2wgb2s7CiAgICAgICAgICAgICAgICAgZG91YmxlIG1heFN0YWxlID0g
ZGlyZWN0aXZlc1tpXS5zZWNvbmQudG9Eb3VibGUoJm9rKTsKICAgICAgICAgICAgICAgICBpZiAo
b2spCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tYXhTdGFsZSA9IG1heFN0YWxlOworICAg
ICAgICAgICAgICAgICAgICByZXN1bHQubWF4U3RhbGUgPSBkdXJhdGlvbl9jYXN0PG1pY3Jvc2Vj
b25kcz4oZHVyYXRpb248ZG91YmxlPihtYXhTdGFsZSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZh
bGlkYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0NhY2hlVmFsaWRhdGlvbi5oCShyZXZpc2lvbiAxODIyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw4IEBACiAjaWZuZGVmIENhY2hlVmFsaWRhdGlvbl9oCiAjZGVmaW5lIENhY2hlVmFsaWRh
dGlvbl9oCiAKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBIVFRQSGVhZGVyTWFwOwpAQCAtMzksMTQgKzQxLDE0IEBAIHN0cnVjdCBSZWRp
cmVjdENoYWluQ2FjaGVTdGF0dXMgewogICAgIH07CiAgICAgUmVkaXJlY3RDaGFpbkNhY2hlU3Rh
dHVzKCkKICAgICAgICAgOiBzdGF0dXMoTm9SZWRpcmVjdGlvbikKLSAgICAgICAgLCBlbmRPZlZh
bGlkaXR5KHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpCisgICAgICAgICwgZW5k
T2ZWYWxpZGl0eShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50OjptYXgoKSkK
ICAgICB7IH0KICAgICBTdGF0dXMgc3RhdHVzOwotICAgIGRvdWJsZSBlbmRPZlZhbGlkaXR5Owor
ICAgIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgZW5kT2ZWYWxpZGl0eTsK
IH07CiAKLVdFQkNPUkVfRVhQT1JUIGRvdWJsZSBjb21wdXRlQ3VycmVudEFnZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiwgZG91YmxlIHJlc3BvbnNlVGltZXN0YW1wKTsKLVdFQkNPUkVfRVhQT1JU
IGRvdWJsZSBjb21wdXRlRnJlc2huZXNzTGlmZXRpbWVGb3JIVFRQRmFtaWx5KGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmLCBkb3VibGUgcmVzcG9uc2VUaW1lc3RhbXApOworV0VCQ09SRV9FWFBPUlQg
c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcyBjb21wdXRlQ3VycmVudEFnZShjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCByZXNwb25z
ZVRpbWVzdGFtcCk7CitXRUJDT1JFX0VYUE9SVCBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzIGNv
bXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHkoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgcmVzcG9uc2VUaW1lc3Rh
bXApOwogV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVSZXNwb25zZUhlYWRlcnNBZnRlclJldmFs
aWRhdGlvbihSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgdmFsaWRh
dGluZ1Jlc3BvbnNlKTsKIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlUmVkaXJlY3RDaGFpblN0
YXR1cyhSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CiAKQEAgLTU0LDggKzU2LDggQEAgZW51bSBSZXVzZUV4cGlyZWRSZWRpcmVjdGlvbk9yTm90IHsg
RG9ObwogV0VCQ09SRV9FWFBPUlQgYm9vbCByZWRpcmVjdENoYWluQWxsb3dzUmV1c2UoUmVkaXJl
Y3RDaGFpbkNhY2hlU3RhdHVzLCBSZXVzZUV4cGlyZWRSZWRpcmVjdGlvbk9yTm90KTsKIAogc3Ry
dWN0IENhY2hlQ29udHJvbERpcmVjdGl2ZXMgewotICAgIGRvdWJsZSBtYXhBZ2UgeyBzdGQ6Om51
bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpIH07Ci0gICAgZG91YmxlIG1heFN0YWxl
IHsgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSB9OworICAgIE9wdGlv
bmFsPHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM+IG1heEFnZTsKKyAgICBPcHRpb25hbDxzdGQ6
OmNocm9ubzo6bWljcm9zZWNvbmRzPiBtYXhTdGFsZTsKICAgICBib29sIG5vQ2FjaGUgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbm9TdG9yZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtdXN0UmV2YWxpZGF0
ZSB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQ
YXJzZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0hUVFBQYXJzZXJzLmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw5ICsy
MzQsMTQgQEAgYm9vbCBwYXJzZUhUVFBSZWZyZXNoKGNvbnN0IFN0cmluZyYgcmVmcgogICAgIH0K
IH0KIAotZG91YmxlIHBhcnNlRGF0ZShjb25zdCBTdHJpbmcmIHZhbHVlKQorT3B0aW9uYWw8c3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludD4gcGFyc2VIVFRQRGF0ZShjb25zdCBT
dHJpbmcmIHZhbHVlKQogewotICAgIHJldHVybiBwYXJzZURhdGVGcm9tTnVsbFRlcm1pbmF0ZWRD
aGFyYWN0ZXJzKHZhbHVlLnV0ZjgoKS5kYXRhKCkpOworICAgIGRvdWJsZSBkYXRlSW5NaWxsaXNl
Y29uZHNTaW5jZUVwb2NoID0gcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyh2
YWx1ZS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoZGF0ZUluTWlsbGlz
ZWNvbmRzU2luY2VFcG9jaCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgLy8gVGhpcyBhc3N1
bWVzIHN5c3RlbV9jbG9jayBlcG9jaCBlcXVhbHMgVW5peCBlcG9jaCB3aGljaCBpcyB0cnVlIGZv
ciBhbGwgaW1wbGVtZW50YXRpb25zIGJ1dCB1bnNwZWNpZmllZC4KKyAgICAvLyBGSVhNRTogVGhl
IHBhcnNpbmcgZnVuY3Rpb24gc2hvdWxkIGJlIHN3aXRjaGVkIHRvIHN0ZDo6Y2hyb25vIHRvby4K
KyAgICByZXR1cm4gc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludChzdGQ6OmNo
cm9ubzo6bWlsbGlzZWNvbmRzKHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oZGF0ZUluTWlsbGlzZWNv
bmRzU2luY2VFcG9jaCkpKTsKIH0KIAogLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gZG9lc24ndCBj
b21wbHkgd2l0aCBSRkMgNjI2Ni4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBQYXJzZXJzLmgJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQAogCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY0LDcgKzY1LDcgQEAgQ29udGVu
dERpc3Bvc2l0aW9uVHlwZSBjb250ZW50RGlzcG9zaXRpbwogYm9vbCBpc1ZhbGlkSFRUUEhlYWRl
clZhbHVlKGNvbnN0IFN0cmluZyYpOwogYm9vbCBpc1ZhbGlkSFRUUFRva2VuKGNvbnN0IFN0cmlu
ZyYpOwogYm9vbCBwYXJzZUhUVFBSZWZyZXNoKGNvbnN0IFN0cmluZyYgcmVmcmVzaCwgYm9vbCBm
cm9tSHR0cEVxdWl2TWV0YSwgZG91YmxlJiBkZWxheSwgU3RyaW5nJiB1cmwpOwotZG91YmxlIHBh
cnNlRGF0ZShjb25zdCBTdHJpbmcmKTsKK09wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQ+IHBhcnNlSFRUUERhdGUoY29uc3QgU3RyaW5nJik7CiBTdHJpbmcgZmls
ZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihjb25zdCBTdHJpbmcmKTsgCiBTdHJpbmcg
ZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb25zdCBTdHJpbmcmKTsKIFN0cmluZyBleHRy
YWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7IApJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5jcHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw0MiArNDMs
MjIgQEAgaW5saW5lIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIFJlc291cmNlUgogICAgIHJldHVy
biAqc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpOwogfQogCi1SZXNv
dXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UoKSAgCi0gICAgOiBtX2V4cGVj
dGVkQ29udGVudExlbmd0aCgwKQorUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9u
c2VCYXNlKCkKKyAgICA6IG1faXNOdWxsKHRydWUpCisgICAgLCBtX2V4cGVjdGVkQ29udGVudExl
bmd0aCgwKQogICAgICwgbV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbyhmYWxzZSkKICAgICAsIG1f
aHR0cFN0YXR1c0NvZGUoMCkKLSAgICAsIG1fYWdlKDApCi0gICAgLCBtX2RhdGUoMCkKLSAgICAs
IG1fZXhwaXJlcygwKQotICAgICwgbV9sYXN0TW9kaWZpZWQoMCkKLSAgICAsIG1faXNOdWxsKHRy
dWUpCi0gICAgLCBtX2hhdmVQYXJzZWRDYWNoZUNvbnRyb2xIZWFkZXIoZmFsc2UpCi0gICAgLCBt
X2hhdmVQYXJzZWRBZ2VIZWFkZXIoZmFsc2UpCi0gICAgLCBtX2hhdmVQYXJzZWREYXRlSGVhZGVy
KGZhbHNlKQotICAgICwgbV9oYXZlUGFyc2VkRXhwaXJlc0hlYWRlcihmYWxzZSkKLSAgICAsIG1f
aGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRlcihmYWxzZSkKLSAgICAsIG1fc291cmNlKFNvdXJj
ZTo6VW5rbm93bikKIHsKIH0KIAogUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9u
c2VCYXNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBsb25nIGxvbmcg
ZXhwZWN0ZWRMZW5ndGgsIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nTmFtZSkKLSAgICA6IG1f
dXJsKHVybCkKKyAgICA6IG1faXNOdWxsKGZhbHNlKQorICAgICwgbV91cmwodXJsKQogICAgICwg
bV9taW1lVHlwZShtaW1lVHlwZSkKICAgICAsIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKGV4cGVj
dGVkTGVuZ3RoKQogICAgICwgbV90ZXh0RW5jb2RpbmdOYW1lKHRleHRFbmNvZGluZ05hbWUpCiAg
ICAgLCBtX2luY2x1ZGVzQ2VydGlmaWNhdGVJbmZvKHRydWUpIC8vIEVtcHR5IGJ1dCB2YWxpZCBm
b3Igc3ludGhldGljIHJlc3BvbnNlcy4KICAgICAsIG1faHR0cFN0YXR1c0NvZGUoMCkKLSAgICAs
IG1fYWdlKDApCi0gICAgLCBtX2RhdGUoMCkKLSAgICAsIG1fZXhwaXJlcygwKQotICAgICwgbV9s
YXN0TW9kaWZpZWQoMCkKLSAgICAsIG1faXNOdWxsKGZhbHNlKQotICAgICwgbV9oYXZlUGFyc2Vk
Q2FjaGVDb250cm9sSGVhZGVyKGZhbHNlKQotICAgICwgbV9oYXZlUGFyc2VkQWdlSGVhZGVyKGZh
bHNlKQotICAgICwgbV9oYXZlUGFyc2VkRGF0ZUhlYWRlcihmYWxzZSkKLSAgICAsIG1faGF2ZVBh
cnNlZEV4cGlyZXNIZWFkZXIoZmFsc2UpCi0gICAgLCBtX2hhdmVQYXJzZWRMYXN0TW9kaWZpZWRI
ZWFkZXIoZmFsc2UpCi0gICAgLCBtX3NvdXJjZShTb3VyY2U6OlVua25vd24pCiB7CiB9CiAKQEAg
LTM4MSwyOSArMzYxLDI2IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6Omhhc0NhY2hlVmFs
aWQKICAgICByZXR1cm4gIW1faHR0cEhlYWRlckZpZWxkcy5nZXQoSFRUUEhlYWRlck5hbWU6Okxh
c3RNb2RpZmllZCkuaXNFbXB0eSgpIHx8ICFtX2h0dHBIZWFkZXJGaWVsZHMuZ2V0KEhUVFBIZWFk
ZXJOYW1lOjpFVGFnKS5pc0VtcHR5KCk7CiB9CiAKLWRvdWJsZSBSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6Y2FjaGVDb250cm9sTWF4QWdlKCkgY29uc3QKK09wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNy
b3NlY29uZHM+IFJlc291cmNlUmVzcG9uc2VCYXNlOjpjYWNoZUNvbnRyb2xNYXhBZ2UoKSBjb25z
dAogewogICAgIGlmICghbV9oYXZlUGFyc2VkQ2FjaGVDb250cm9sSGVhZGVyKQogICAgICAgICBw
YXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoKTsKICAgICByZXR1cm4gbV9jYWNoZUNvbnRyb2xE
aXJlY3RpdmVzLm1heEFnZTsKIH0KIAotc3RhdGljIGRvdWJsZSBwYXJzZURhdGVWYWx1ZUluSGVh
ZGVyKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIEhUVFBIZWFkZXJOYW1lIGhlYWRlck5h
bWUpCitzdGF0aWMgT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dD4gcGFyc2VEYXRlVmFsdWVJbkhlYWRlcihjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBI
VFRQSGVhZGVyTmFtZSBoZWFkZXJOYW1lKQogewogICAgIFN0cmluZyBoZWFkZXJWYWx1ZSA9IGhl
YWRlcnMuZ2V0KGhlYWRlck5hbWUpOwogICAgIGlmIChoZWFkZXJWYWx1ZS5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOyAK
KyAgICAgICAgcmV0dXJuIHsgfTsKICAgICAvLyBUaGlzIGhhbmRsZXMgYWxsIGRhdGUgZm9ybWF0
cyByZXF1aXJlZCBieSBSRkMyNjE2OgogICAgIC8vIFN1biwgMDYgTm92IDE5OTQgMDg6NDk6Mzcg
R01UICA7IFJGQyA4MjIsIHVwZGF0ZWQgYnkgUkZDIDExMjMKICAgICAvLyBTdW5kYXksIDA2LU5v
di05NCAwODo0OTozNyBHTVQgOyBSRkMgODUwLCBvYnNvbGV0ZWQgYnkgUkZDIDEwMzYKICAgICAv
LyBTdW4gTm92ICA2IDA4OjQ5OjM3IDE5OTQgICAgICAgOyBBTlNJIEMncyBhc2N0aW1lKCkgZm9y
bWF0Ci0gICAgZG91YmxlIGRhdGVJbk1pbGxpc2Vjb25kcyA9IHBhcnNlRGF0ZShoZWFkZXJWYWx1
ZSk7Ci0gICAgaWYgKCFzdGQ6OmlzZmluaXRlKGRhdGVJbk1pbGxpc2Vjb25kcykpCi0gICAgICAg
IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOwotICAgIHJl
dHVybiBkYXRlSW5NaWxsaXNlY29uZHMgLyAxMDAwOworICAgIHJldHVybiBwYXJzZUhUVFBEYXRl
KGhlYWRlclZhbHVlKTsKIH0KIAotZG91YmxlIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkYXRlKCkg
Y29uc3QKK09wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IFJl
c291cmNlUmVzcG9uc2VCYXNlOjpkYXRlKCkgY29uc3QKIHsKICAgICBsYXp5SW5pdChDb21tb25G
aWVsZHNPbmx5KTsKIApAQCAtNDE0LDIyICszOTEsMjQgQEAgZG91YmxlIFJlc291cmNlUmVzcG9u
c2VCYXNlOjpkYXRlKCkgY29ucwogICAgIHJldHVybiBtX2RhdGU7CiB9CiAKLWRvdWJsZSBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6YWdlKCkgY29uc3QKK09wdGlvbmFsPHN0ZDo6Y2hyb25vOjptaWNy
b3NlY29uZHM+IFJlc291cmNlUmVzcG9uc2VCYXNlOjphZ2UoKSBjb25zdAogeworICAgIHVzaW5n
IG5hbWVzcGFjZSBzdGQ6OmNocm9ubzsKKwogICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09ubHkp
OwogCiAgICAgaWYgKCFtX2hhdmVQYXJzZWRBZ2VIZWFkZXIpIHsKICAgICAgICAgU3RyaW5nIGhl
YWRlclZhbHVlID0gbV9odHRwSGVhZGVyRmllbGRzLmdldChIVFRQSGVhZGVyTmFtZTo6QWdlKTsK
ICAgICAgICAgYm9vbCBvazsKLSAgICAgICAgbV9hZ2UgPSBoZWFkZXJWYWx1ZS50b0RvdWJsZSgm
b2spOwotICAgICAgICBpZiAoIW9rKQotICAgICAgICAgICAgbV9hZ2UgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOworICAgICAgICBkb3VibGUgYWdlRG91YmxlID0g
aGVhZGVyVmFsdWUudG9Eb3VibGUoJm9rKTsKKyAgICAgICAgaWYgKG9rKQorICAgICAgICAgICAg
bV9hZ2UgPSBkdXJhdGlvbl9jYXN0PG1pY3Jvc2Vjb25kcz4oZHVyYXRpb248ZG91YmxlPihhZ2VE
b3VibGUpKTsKICAgICAgICAgbV9oYXZlUGFyc2VkQWdlSGVhZGVyID0gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIG1fYWdlOwogfQogCi1kb3VibGUgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGly
ZXMoKSBjb25zdAorT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dD4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmV4cGlyZXMoKSBjb25zdAogewogICAgIGxhenlJbml0
KENvbW1vbkZpZWxkc09ubHkpOwogCkBAIC00NDAsNyArNDE5LDcgQEAgZG91YmxlIFJlc291cmNl
UmVzcG9uc2VCYXNlOjpleHBpcmVzKCkgYwogICAgIHJldHVybiBtX2V4cGlyZXM7CiB9CiAKLWRv
dWJsZSBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6bGFzdE1vZGlmaWVkKCkgY29uc3QKK09wdGlvbmFs
PHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IFJlc291cmNlUmVzcG9uc2VC
YXNlOjpsYXN0TW9kaWZpZWQoKSBjb25zdAogewogICAgIGxhenlJbml0KENvbW1vbkZpZWxkc09u
bHkpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVz
cG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCShyZXZpc2lvbiAxODIyNDEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNCwxMSArMTA0LDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGNhY2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgY2FjaGVDb250cm9sQ29udGFpbnNNdXN0UmV2YWxpZGF0ZSgpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaGFzQ2FjaGVWYWxpZGF0b3JGaWVsZHMoKSBjb25zdDsKLSAgICBX
RUJDT1JFX0VYUE9SVCBkb3VibGUgY2FjaGVDb250cm9sTWF4QWdlKCkgY29uc3Q7Ci0gICAgZG91
YmxlIGRhdGUoKSBjb25zdDsKLSAgICBkb3VibGUgYWdlKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgZG91YmxlIGV4cGlyZXMoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUg
bGFzdE1vZGlmaWVkKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8c3RkOjpj
aHJvbm86Om1pY3Jvc2Vjb25kcz4gY2FjaGVDb250cm9sTWF4QWdlKCkgY29uc3Q7CisgICAgV0VC
Q09SRV9FWFBPUlQgT3B0aW9uYWw8c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dD4gZGF0ZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPHN0ZDo6Y2hyb25v
OjptaWNyb3NlY29uZHM+IGFnZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFs
PHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IGV4cGlyZXMoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0
aW1lX3BvaW50PiBsYXN0TW9kaWZpZWQoKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgU291cmNl
IHsgVW5rbm93biwgTmV0d29yaywgRGlza0NhY2hlLCBEaXNrQ2FjaGVBZnRlclZhbGlkYXRpb24g
fTsKICAgICBXRUJDT1JFX0VYUE9SVCBTb3VyY2Ugc291cmNlKCkgY29uc3Q7CkBAIC0xNDcsNiAr
MTQ3LDEzIEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIHsgcmV0dXJu
IHRydWU7IH0KIAorcHJpdmF0ZToKKyAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBhc1Jlc291
cmNlUmVzcG9uc2UoKSBjb25zdDsKKyAgICB2b2lkIHBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZl
cygpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlSGVhZGVyUGFyc2VkU3RhdGUoSFRUUEhlYWRlck5h
bWUpOworCitwcm90ZWN0ZWQ6CisgICAgYm9vbCBtX2lzTnVsbDsKICAgICBVUkwgbV91cmw7CiAg
ICAgQXRvbWljU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgbG9uZyBsb25nIG1fZXhwZWN0ZWRDb250
ZW50TGVuZ3RoOwpAQCAtMTYxLDI3ICsxNjgsMTkgQEAgcHJvdGVjdGVkOgogICAgIGludCBtX2h0
dHBTdGF0dXNDb2RlOwogCiBwcml2YXRlOgotICAgIG11dGFibGUgZG91YmxlIG1fYWdlOwotICAg
IG11dGFibGUgZG91YmxlIG1fZGF0ZTsKLSAgICBtdXRhYmxlIGRvdWJsZSBtX2V4cGlyZXM7Ci0g
ICAgbXV0YWJsZSBkb3VibGUgbV9sYXN0TW9kaWZpZWQ7CisgICAgbXV0YWJsZSBPcHRpb25hbDxz
dGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzPiBtX2FnZTsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IG1fZGF0ZTsKKyAgICBtdXRhYmxl
IE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IG1fZXhwaXJl
czsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQ+IG1fbGFzdE1vZGlmaWVkOwogICAgIG11dGFibGUgQ2FjaGVDb250cm9sRGlyZWN0aXZl
cyBtX2NhY2hlQ29udHJvbERpcmVjdGl2ZXM7CiAKLXB1YmxpYzoKLSAgICBib29sIG1faXNOdWxs
IDogMTsKLSAgICAKLXByaXZhdGU6Ci0gICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYXNSZXNv
dXJjZVJlc3BvbnNlKCkgY29uc3Q7Ci0gICAgdm9pZCBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2
ZXMoKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUhlYWRlclBhcnNlZFN0YXRlKEhUVFBIZWFkZXJO
YW1lKTsKLQotICAgIG11dGFibGUgYm9vbCBtX2hhdmVQYXJzZWRDYWNoZUNvbnRyb2xIZWFkZXIg
OiAxOwotICAgIG11dGFibGUgYm9vbCBtX2hhdmVQYXJzZWRBZ2VIZWFkZXIgOiAxOwotICAgIG11
dGFibGUgYm9vbCBtX2hhdmVQYXJzZWREYXRlSGVhZGVyIDogMTsKLSAgICBtdXRhYmxlIGJvb2wg
bV9oYXZlUGFyc2VkRXhwaXJlc0hlYWRlciA6IDE7Ci0gICAgbXV0YWJsZSBib29sIG1faGF2ZVBh
cnNlZExhc3RNb2RpZmllZEhlYWRlciA6IDE7CisgICAgbXV0YWJsZSBib29sIG1faGF2ZVBhcnNl
ZENhY2hlQ29udHJvbEhlYWRlciB7IGZhbHNlIH07CisgICAgbXV0YWJsZSBib29sIG1faGF2ZVBh
cnNlZEFnZUhlYWRlciB7IGZhbHNlIH07CisgICAgbXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZERh
dGVIZWFkZXIgeyBmYWxzZSB9OworICAgIG11dGFibGUgYm9vbCBtX2hhdmVQYXJzZWRFeHBpcmVz
SGVhZGVyIHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIGJvb2wgbV9oYXZlUGFyc2VkTGFzdE1vZGlm
aWVkSGVhZGVyIHsgZmFsc2UgfTsKIAotICAgIFNvdXJjZSBtX3NvdXJjZTsKKyAgICBTb3VyY2Ug
bV9zb3VyY2UgeyBTb3VyY2U6OlVua25vd24gfTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgYikg
eyByZXR1cm4gUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbXBhcmUoYSwgYik7IH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE4MjI1MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE1LTA0LTAxICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2Ugc3RkOjpjaHJvbm8gdHlwZXMgdG8gcmVw
cmVzZW50IHRpbWUgaW4gcmVzcG9uc2UgYW5kIGNhY2hlIGNsYXNzZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzMxNgorCisgICAgICAgIFJldmll
d2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cmVzcG9uc2VI
YXNFeHBpcmVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZXNwb25zZU5lZWRz
UmV2YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjptYWtlU3RvcmVE
ZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnN0b3JlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RW50cnk6OkVudHJ5KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjpFbnRyeTo6YXNKU09OKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OkVudHJ5Ojp0aW1lU3RhbXApOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OmRlY29kZVJlY29yZE1ldGFEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpk
ZWNvZGVSZWNvcmQpOgorCisgICAgICAgICAgICBTYW5pdHkgY2hlY2sgdGhlIHRpbWVzdGFtcCBv
biBkZWNvZGUuCisKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjplbmNvZGVSZWNvcmRN
ZXRhRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6ZW5jb2RlUmVjb3JkSGVh
ZGVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp0cmF2ZXJzZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6bGFzdE1vZGlmaWVkRGF0ZU1TKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
U3RyZWFtOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3
OjptYW51YWxMb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6bGFzdE1v
ZGlmaWVkRGF0ZSk6IERlbGV0ZWQuCisKIDIwMTUtMDQtMDEgIFRpbW90aHkgSG9ydG9uICA8dGlt
b3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFNtYXJ0IG1hZ25pZmljYXRpb24gZ2Vz
dHVyZSBzb21ldGltZXMgc2hvb3RzIHRvIHRoZSBtaWRkbGUgb2YgdGhlIHBhZ2UKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE4LDkg
KzMxOCw5IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2EKICAgICAg
ICAgYm9vbCBhbGxvd1N0YWxlID0gb3JpZ2luYWxSZXF1ZXN0KCkuY2FjaGVQb2xpY3koKSA+PSBS
ZXR1cm5DYWNoZURhdGFFbHNlTG9hZDsKICAgICAgICAgYm9vbCBoYXNDYWNoZWFibGVSZWRpcmVj
dCA9IG1fcmVzcG9uc2UuaXNIVFRQKCkgJiYgV2ViQ29yZTo6cmVkaXJlY3RDaGFpbkFsbG93c1Jl
dXNlKG1fcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLCBhbGxvd1N0YWxlID8gV2ViQ29yZTo6UmV1
c2VFeHBpcmVkUmVkaXJlY3Rpb24gOiBXZWJDb3JlOjpEb05vdFJldXNlRXhwaXJlZFJlZGlyZWN0
aW9uKTsKICAgICAgICAgaWYgKGhhc0NhY2hlYWJsZVJlZGlyZWN0ICYmIG1fcmVkaXJlY3RDaGFp
bkNhY2hlU3RhdHVzLnN0YXR1cyA9PSBSZWRpcmVjdENoYWluQ2FjaGVTdGF0dXM6OkNhY2hlZFJl
ZGlyZWN0aW9uKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQ2FjaGUgdGhlIGFjdHVhbCByZWRp
cmVjdHMgaW5zdGVhZCBvZiB0aGUgZW5kIHJlc3VsdC4KLSAgICAgICAgICAgIGRvdWJsZSBub3cg
PSBjdXJyZW50VGltZSgpOwotICAgICAgICAgICAgZG91YmxlIHJlc3BvbnNlRW5kT2ZWYWxpZGl0
eSA9IG5vdyArIFdlYkNvcmU6OmNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhUVFBGYW1pbHko
bV9yZXNwb25zZSwgbm93KSAtIFdlYkNvcmU6OmNvbXB1dGVDdXJyZW50QWdlKG1fcmVzcG9uc2Us
IG5vdyk7CisgICAgICAgICAgICAvLyBNYXliZSB3ZSBzaG91bGQgY2FjaGUgdGhlIGFjdHVhbCBy
ZWRpcmVjdHMgaW5zdGVhZCBvZiB0aGUgZW5kIHJlc3VsdD8KKyAgICAgICAgICAgIGF1dG8gbm93
ID0gc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCk7CisgICAgICAgICAgICBhdXRvIHJl
c3BvbnNlRW5kT2ZWYWxpZGl0eSA9IG5vdyArIFdlYkNvcmU6OmNvbXB1dGVGcmVzaG5lc3NMaWZl
dGltZUZvckhUVFBGYW1pbHkobV9yZXNwb25zZSwgbm93KSAtIFdlYkNvcmU6OmNvbXB1dGVDdXJy
ZW50QWdlKG1fcmVzcG9uc2UsIG5vdyk7CiAgICAgICAgICAgICBoYXNDYWNoZWFibGVSZWRpcmVj
dCA9IHJlc3BvbnNlRW5kT2ZWYWxpZGl0eSA8PSBtX3JlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cy5l
bmRPZlZhbGlkaXR5OwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAkocmV2aXNpb24gMTgyMjQx
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDE3ICsxNTAsMTYgQEAgc3RhdGljIGJvb2wgY2FjaGVQ
b2xpY3lBbGxvd3NFeHBpcmVkKFdlYgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJv
b2wgcmVzcG9uc2VIYXNFeHBpcmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVzdGFtcCwgZG91YmxlIG1heFN0
YWxlKQorc3RhdGljIGJvb2wgcmVzcG9uc2VIYXNFeHBpcmVkKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50IHRpbWVzdGFtcCwgT3B0aW9uYWw8c3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kcz4gbWF4U3Rh
bGUpCiB7CiAgICAgaWYgKHJlc3BvbnNlLmNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGF1dG8gZG91YmxlVGltZVN0YW1wID0gc3RkOjpj
aHJvbm86OmR1cmF0aW9uPGRvdWJsZT4odGltZXN0YW1wKTsKLSAgICBkb3VibGUgYWdlID0gV2Vi
Q29yZTo6Y29tcHV0ZUN1cnJlbnRBZ2UocmVzcG9uc2UsIGRvdWJsZVRpbWVTdGFtcC5jb3VudCgp
KTsKLSAgICBkb3VibGUgbGlmZXRpbWUgPSBXZWJDb3JlOjpjb21wdXRlRnJlc2huZXNzTGlmZXRp
bWVGb3JIVFRQRmFtaWx5KHJlc3BvbnNlLCBkb3VibGVUaW1lU3RhbXAuY291bnQoKSk7CisgICAg
YXV0byBhZ2UgPSBXZWJDb3JlOjpjb21wdXRlQ3VycmVudEFnZShyZXNwb25zZSwgdGltZXN0YW1w
KTsKKyAgICBhdXRvIGxpZmV0aW1lID0gV2ViQ29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1l
Rm9ySFRUUEZhbWlseShyZXNwb25zZSwgdGltZXN0YW1wKTsKIAotICAgIG1heFN0YWxlID0gc3Rk
Ojppc25hbihtYXhTdGFsZSkgPyAwIDogbWF4U3RhbGU7Ci0gICAgYm9vbCBoYXNFeHBpcmVkID0g
YWdlIC0gbGlmZXRpbWUgPiBtYXhTdGFsZTsKKyAgICBhdXRvIG1heGltdW1TdGFsZW5lc3MgPSBt
YXhTdGFsZSA/IG1heFN0YWxlLnZhbHVlKCkgOiAwX21zOworICAgIGJvb2wgaGFzRXhwaXJlZCA9
IGFnZSAtIGxpZmV0aW1lID4gbWF4aW11bVN0YWxlbmVzczsKIAogI2lmbmRlZiBMT0dfRElTQUJM
RUQKICAgICBpZiAoaGFzRXhwaXJlZCkKQEAgLTE3MCwxMyArMTY5LDEzIEBAIHN0YXRpYyBib29s
IHJlc3BvbnNlSGFzRXhwaXJlZChjb25zdCBXZWIKICAgICByZXR1cm4gaGFzRXhwaXJlZDsKIH0K
IAotc3RhdGljIGJvb2wgcmVzcG9uc2VOZWVkc1JldmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIHRpbWVzdGFtcCkKK3N0YXRpYyBi
b29sIHJlc3BvbnNlTmVlZHNSZXZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1lc3RhbXApCiB7CiAgICAg
YXV0byByZXF1ZXN0RGlyZWN0aXZlcyA9IFdlYkNvcmU6OnBhcnNlQ2FjaGVDb250cm9sRGlyZWN0
aXZlcyhyZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSk7CiAgICAgaWYgKHJlcXVlc3REaXJlY3Rp
dmVzLm5vQ2FjaGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIC8vIEZvciByZXF1ZXN0cyB3
ZSBpZ25vcmUgbWF4LWFnZSB2YWx1ZXMgb3RoZXIgdGhhbiB6ZXJvLgotICAgIGlmIChyZXF1ZXN0
RGlyZWN0aXZlcy5tYXhBZ2UgPT0gMCkKKyAgICBpZiAocmVxdWVzdERpcmVjdGl2ZXMubWF4QWdl
ICYmIHJlcXVlc3REaXJlY3RpdmVzLm1heEFnZS52YWx1ZSgpID09IDBfbXMpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgcmV0dXJuIHJlc3BvbnNlSGFzRXhwaXJlZChyZXNwb25zZSwgdGlt
ZXN0YW1wLCByZXF1ZXN0RGlyZWN0aXZlcy5tYXhTdGFsZSk7CkBAIC0yNjksNyArMjY4LDcgQEAg
c3RhdGljIFN0b3JlRGVjaXNpb24gbWFrZVN0b3JlRGVjaXNpb24oYwogCiAgICAgaWYgKCFpc1N0
YXR1c0NvZGVDYWNoZWFibGVCeURlZmF1bHQocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSkpIHsK
ICAgICAgICAgLy8gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzNCNzZWN0aW9uLTQu
My4yCi0gICAgICAgIGJvb2wgaGFzRXhwaXJhdGlvbkhlYWRlcnMgPSBzdGQ6OmlzZmluaXRlKHJl
c3BvbnNlLmV4cGlyZXMoKSkgfHwgc3RkOjppc2Zpbml0ZShyZXNwb25zZS5jYWNoZUNvbnRyb2xN
YXhBZ2UoKSk7CisgICAgICAgIGJvb2wgaGFzRXhwaXJhdGlvbkhlYWRlcnMgPSByZXNwb25zZS5l
eHBpcmVzKCkgfHwgcmVzcG9uc2UuY2FjaGVDb250cm9sTWF4QWdlKCk7CiAgICAgICAgIGJvb2wg
ZXhwaXJhdGlvbkhlYWRlcnNBbGxvd0NhY2hpbmcgPSBpc1N0YXR1c0NvZGVQb3RlbnRpYWxseUNh
Y2hlYWJsZShyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKSAmJiBoYXNFeHBpcmF0aW9uSGVhZGVy
czsKICAgICAgICAgaWYgKCFleHBpcmF0aW9uSGVhZGVyc0FsbG93Q2FjaGluZykKICAgICAgICAg
ICAgIHJldHVybiBTdG9yZURlY2lzaW9uOjpOb0R1ZVRvSFRUUFN0YXR1c0NvZGU7CkBAIC0yNzgs
OCArMjc3LDggQEAgc3RhdGljIFN0b3JlRGVjaXNpb24gbWFrZVN0b3JlRGVjaXNpb24oYwogICAg
IC8vIE1haW4gcmVzb3VyY2UgaGFzIFJlc291cmNlTG9hZFByaW9yaXR5VmVyeUhpZ2guCiAgICAg
Ym9vbCBzdG9yZVVuY29uZGl0aW9uYWxseUZvckhpc3RvcnlOYXZpZ2F0aW9uID0gb3JpZ2luYWxS
ZXF1ZXN0LnByaW9yaXR5KCkgPT0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkUHJpb3JpdHlWZXJ5SGln
aDsKICAgICBpZiAoIXN0b3JlVW5jb25kaXRpb25hbGx5Rm9ySGlzdG9yeU5hdmlnYXRpb24pIHsK
LSAgICAgICAgYXV0byBjdXJyZW50VGltZSA9IHN0ZDo6Y2hyb25vOjpkdXJhdGlvbjxkb3VibGU+
KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKSk7Ci0g
ICAgICAgIGJvb2wgaGFzTm9uWmVyb0xpZmV0aW1lID0gIXJlc3BvbnNlLmNhY2hlQ29udHJvbENv
bnRhaW5zTm9DYWNoZSgpICYmIFdlYkNvcmU6OmNvbXB1dGVGcmVzaG5lc3NMaWZldGltZUZvckhU
VFBGYW1pbHkocmVzcG9uc2UsIGN1cnJlbnRUaW1lLmNvdW50KCkpID4gMDsKKyAgICAgICAgYXV0
byBub3cgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKTsKKyAgICAgICAgYm9vbCBo
YXNOb25aZXJvTGlmZXRpbWUgPSAhcmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hl
KCkgJiYgV2ViQ29yZTo6Y29tcHV0ZUZyZXNobmVzc0xpZmV0aW1lRm9ySFRUUEZhbWlseShyZXNw
b25zZSwgbm93KSA+IDBfbXM7CiAKICAgICAgICAgYm9vbCBwb3NzaWJseVJldXNhYmxlID0gcmVz
cG9uc2UuaGFzQ2FjaGVWYWxpZGF0b3JGaWVsZHMoKSB8fCBoYXNOb25aZXJvTGlmZXRpbWU7CiAg
ICAgICAgIGlmICghcG9zc2libHlSZXVzYWJsZSkKQEAgLTM1OCw3ICszNTcsNiBAQCB2b2lkIENh
Y2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjCiAgICAgTE9HKE5ldHdvcmtDYWNoZSwg
IihOZXR3b3JrUHJvY2Vzcykgc3RvcmluZyAlcywgcGFydGl0aW9uICVzIiwgb3JpZ2luYWxSZXF1
ZXN0LnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSwgb3JpZ2luYWxSZXF1ZXN0LmNhY2hl
UGFydGl0aW9uKCkubGF0aW4xKCkuZGF0YSgpKTsKIAogICAgIFN0b3JlRGVjaXNpb24gc3RvcmVE
ZWNpc2lvbiA9IG1ha2VTdG9yZURlY2lzaW9uKG9yaWdpbmFsUmVxdWVzdCwgcmVzcG9uc2UpOwot
CiAgICAgaWYgKHN0b3JlRGVjaXNpb24gIT0gU3RvcmVEZWNpc2lvbjo6WWVzKSB7CiAgICAgICAg
IExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIGRpZG4ndCBzdG9yZSwgc3RvcmVE
ZWNpc2lvbj0lZCIsIHN0b3JlRGVjaXNpb24pOwogICAgICAgICBpZiAobV9zdGF0aXN0aWNzKSB7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVF
bnRyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlRW50cnkuY3BwCShyZXZpc2lvbiAxODIyNDEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKIEVudHJ5
OjpFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBW
ZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycykK
ICAgICA6IG1fa2V5KGtleSkKLSAgICAsIG1fdGltZVN0YW1wKHN0ZDo6Y2hyb25vOjpkdXJhdGlv
bl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKSkpCisgICAgLCBtX3RpbWVTdGFtcChzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKSkKICAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2UpCiAg
ICAgLCBtX3ZhcnlpbmdSZXF1ZXN0SGVhZGVycyh2YXJ5aW5nUmVxdWVzdEhlYWRlcnMpCiAgICAg
LCBtX2J1ZmZlcihXVEY6Om1vdmUoYnVmZmVyKSkKQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIEVu
dHJ5Ojphc0pTT04oU3RyaW5nQnVpbGRlciYganNvbiwgCiAgICAgSlNDOjphcHBlbmRRdW90ZWRK
U09OU3RyaW5nVG9CdWlsZGVyKGpzb24sIG1fa2V5LnBhcnRpdGlvbigpKTsKICAgICBqc29uLmFw
cGVuZExpdGVyYWwoIixcbiIpOwogICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgiXCJ0aW1lc3RhbXBc
IjogIik7Ci0gICAganNvbi5hcHBlbmROdW1iZXIobV90aW1lU3RhbXAuY291bnQoKSk7CisgICAg
anNvbi5hcHBlbmROdW1iZXIoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86
Om1pbGxpc2Vjb25kcz4obV90aW1lU3RhbXAudGltZV9zaW5jZV9lcG9jaCgpKS5jb3VudCgpKTsK
ICAgICBqc29uLmFwcGVuZExpdGVyYWwoIixcbiIpOwogICAgIGpzb24uYXBwZW5kTGl0ZXJhbCgi
XCJVUkxcIjogIik7CiAgICAgSlNDOjphcHBlbmRRdW90ZWRKU09OU3RyaW5nVG9CdWlsZGVyKGpz
b24sIG1fcmVzcG9uc2UudXJsKCkuc3RyaW5nKCkpOwpJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRW50cnkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVFbnRyeS5oCShyZXZp
c2lvbiAxODIyNDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVFbnRyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBkZWNvZGVTdG9yYWdlUmVjb3JkKGNv
bnN0IFN0b3JhZ2U6OlJlY29yZCYpOwogCiAgICAgY29uc3QgS2V5JiBrZXkoKSBjb25zdCB7IHJl
dHVybiBtX2tleTsgfQotICAgIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZVN0YW1wKCkg
Y29uc3QgeyByZXR1cm4gbV90aW1lU3RhbXA7IH0KKyAgICBzdGQ6OmNocm9ubzo6c3lzdGVtX2Ns
b2NrOjp0aW1lX3BvaW50IHRpbWVTdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVN0YW1wOyB9
CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3BvbnNlOyB9CiAgICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMoKSBjb25zdCB7IHJldHVybiBtX3Zhcnlp
bmdSZXF1ZXN0SGVhZGVyczsgfQogCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBpbml0aWFsaXplQnVmZmVyRnJvbVN0b3JhZ2VSZWNvcmQoKSBjb25zdDsKIAogICAgIEtleSBt
X2tleTsKLSAgICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIG1fdGltZVN0YW1wOworICAgIHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbV90aW1lU3RhbXA7CiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBTdHJpbmc+PiBtX3ZhcnlpbmdSZXF1ZXN0SGVhZGVyczsKIApJbmRleDogU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3RvcmFnZS5jcHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDIsNyArMTQyLDggQEAgc3RydWN0IFJlY29yZE1ldGFEYXRhIHsKIAogICAgIHVuc2lnbmVk
IGNhY2hlU3RvcmFnZVZlcnNpb247CiAgICAgS2V5IGtleTsKLSAgICBzdGQ6OmNocm9ubzo6bWls
bGlzZWNvbmRzIHRpbWVTdGFtcDsKKyAgICAvLyBGSVhNRTogQWRkIGVuY29kZXIvZGVjb2RlciBm
b3IgdGltZV9wb2ludC4KKyAgICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIGVwb2NoUmVsYXRp
dmVUaW1lU3RhbXA7CiAgICAgdW5zaWduZWQgaGVhZGVyQ2hlY2tzdW07CiAgICAgdWludDY0X3Qg
aGVhZGVyT2Zmc2V0OwogICAgIHVpbnQ2NF90IGhlYWRlclNpemU7CkBAIC0xNjAsNyArMTYxLDcg
QEAgc3RhdGljIGJvb2wgZGVjb2RlUmVjb3JkTWV0YURhdGEoUmVjb3JkTQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1ldGFEYXRhLmtleSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
bWV0YURhdGEudGltZVN0YW1wKSkKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXRhRGF0
YS5lcG9jaFJlbGF0aXZlVGltZVN0YW1wKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXRhRGF0YS5oZWFkZXJDaGVja3N1bSkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTUsNiArMjE2LDExIEBAIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8U3RvcmFnZTo6UmVjb3JkPiAKICAgICBpZiAobWV0YURhdGEua2V5ICE9IGtleSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKKyAgICAvLyBTYW5pdHkgY2hlY2sgYWdhaW5zdCB0
aW1lU3RhbXBzIGluIGZ1dHVyZS4KKyAgICBhdXRvIHRpbWVTdGFtcCA9IHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQobWV0YURhdGEuZXBvY2hSZWxhdGl2ZVRpbWVTdGFtcCk7
CisgICAgaWYgKHRpbWVTdGFtcCA+IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6Om5vdygpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIERhdGEgYm9keURhdGE7CiAgICAgaWYgKG1l
dGFEYXRhLmJvZHlTaXplKSB7CiAgICAgICAgIGlmIChtZXRhRGF0YS5ib2R5T2Zmc2V0ICsgbWV0
YURhdGEuYm9keVNpemUgIT0gZmlsZURhdGEuc2l6ZSgpKQpAQCAtMjM0LDcgKzI0MCw3IEBAIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZTo6UmVjb3JkPiAKIAogICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPFN0b3JhZ2U6OlJlY29yZD4oU3RvcmFnZTo6UmVjb3JkIHsKICAgICAgICAg
bWV0YURhdGEua2V5LAotICAgICAgICBtZXRhRGF0YS50aW1lU3RhbXAsCisgICAgICAgIHRpbWVT
dGFtcCwKICAgICAgICAgaGVhZGVyRGF0YSwKICAgICAgICAgYm9keURhdGEKICAgICB9KTsKQEAg
LTI0Niw3ICsyNTIsNyBAQCBzdGF0aWMgRGF0YSBlbmNvZGVSZWNvcmRNZXRhRGF0YShjb25zdCBS
CiAKICAgICBlbmNvZGVyIDw8IG1ldGFEYXRhLmNhY2hlU3RvcmFnZVZlcnNpb247CiAgICAgZW5j
b2RlciA8PCBtZXRhRGF0YS5rZXk7Ci0gICAgZW5jb2RlciA8PCBtZXRhRGF0YS50aW1lU3RhbXA7
CisgICAgZW5jb2RlciA8PCBtZXRhRGF0YS5lcG9jaFJlbGF0aXZlVGltZVN0YW1wOwogICAgIGVu
Y29kZXIgPDwgbWV0YURhdGEuaGVhZGVyQ2hlY2tzdW07CiAgICAgZW5jb2RlciA8PCBtZXRhRGF0
YS5oZWFkZXJTaXplOwogICAgIGVuY29kZXIgPDwgbWV0YURhdGEuYm9keUNoZWNrc3VtOwpAQCAt
MjYwLDcgKzI2Niw3IEBAIHN0YXRpYyBEYXRhIGVuY29kZVJlY29yZE1ldGFEYXRhKGNvbnN0IFIK
IHN0YXRpYyBEYXRhIGVuY29kZVJlY29yZEhlYWRlcihjb25zdCBTdG9yYWdlOjpSZWNvcmQmIHJl
Y29yZCkKIHsKICAgICBSZWNvcmRNZXRhRGF0YSBtZXRhRGF0YShyZWNvcmQua2V5KTsKLSAgICBt
ZXRhRGF0YS50aW1lU3RhbXAgPSByZWNvcmQudGltZVN0YW1wOworICAgIG1ldGFEYXRhLmVwb2No
UmVsYXRpdmVUaW1lU3RhbXAgPSBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9u
bzo6bWlsbGlzZWNvbmRzPihyZWNvcmQudGltZVN0YW1wLnRpbWVfc2luY2VfZXBvY2goKSk7CiAg
ICAgbWV0YURhdGEuaGVhZGVyQ2hlY2tzdW0gPSBoYXNoRGF0YShyZWNvcmQuaGVhZGVyKTsKICAg
ICBtZXRhRGF0YS5oZWFkZXJTaXplID0gcmVjb3JkLmhlYWRlci5zaXplKCk7CiAgICAgbWV0YURh
dGEuYm9keUNoZWNrc3VtID0gaGFzaERhdGEocmVjb3JkLmJvZHkpOwpAQCAtNDQ2LDcgKzQ1Miw3
IEBAIHZvaWQgU3RvcmFnZTo6dHJhdmVyc2UoVHJhdmVyc2VGbGFncyBmbGEKICAgICAgICAgICAg
ICAgICBSZWNvcmRNZXRhRGF0YSBtZXRhRGF0YTsKICAgICAgICAgICAgICAgICBEYXRhIGhlYWRl
ckRhdGE7CiAgICAgICAgICAgICAgICAgaWYgKGRlY29kZVJlY29yZEhlYWRlcihmaWxlRGF0YSwg
bWV0YURhdGEsIGhlYWRlckRhdGEpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJlY29yZCByZWNv
cmQgeyBtZXRhRGF0YS5rZXksIG1ldGFEYXRhLnRpbWVTdGFtcCwgaGVhZGVyRGF0YSwgeyB9IH07
CisgICAgICAgICAgICAgICAgICAgIFJlY29yZCByZWNvcmQgeyBtZXRhRGF0YS5rZXksIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQobWV0YURhdGEuZXBvY2hSZWxhdGl2ZVRp
bWVTdGFtcCksIGhlYWRlckRhdGEsIHsgfSB9OwogICAgICAgICAgICAgICAgICAgICBpbmZvLmJv
ZHlTaXplID0gbWV0YURhdGEuYm9keVNpemU7CiAgICAgICAgICAgICAgICAgICAgIHRyYXZlcnNl
SGFuZGxlcigmcmVjb3JkLCBpbmZvKTsKICAgICAgICAgICAgICAgICB9CkBAIC01OTksNyArNjA1
LDcgQEAgc3RhdGljIGRvdWJsZSBjb21wdXRlUmVjb3JkV29ydGgoRmlsZVRpbQogICAgIGF1dG8g
YWNjZXNzQWdlID0gdGltZXMubW9kaWZpY2F0aW9uIC0gdGltZXMuY3JlYXRpb247CiAKICAgICAv
LyBGb3Igc2FuaXR5LgotICAgIGlmIChhZ2UgPD0gc2Vjb25kczo6emVybygpIHx8IGFjY2Vzc0Fn
ZSA8IHNlY29uZHM6Onplcm8oKSB8fCBhY2Nlc3NBZ2UgPiBhZ2UpCisgICAgaWYgKGFnZSA8PSAw
X3MgfHwgYWNjZXNzQWdlIDwgMF9zIHx8IGFjY2Vzc0FnZSA+IGFnZSkKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICAvLyBXZSBsaWtlIG9sZCBlbnRyaWVzIHRoYXQgaGF2ZSBiZWVuIGFjY2Vzc2Vk
IHJlY2VudGx5LgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAkocmV2aXNpb24gMTgyMjQxKQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0cnVjdCBS
ZWNvcmQgewogICAgICAgICBLZXkga2V5OwotICAgICAgICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNv
bmRzIHRpbWVTdGFtcDsKKyAgICAgICAgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCB0aW1lU3RhbXA7CiAgICAgICAgIERhdGEgaGVhZGVyOwogICAgICAgICBEYXRhIGJvZHk7
CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAJKHJldmlzaW9uIDE4MjI0MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDEzICsy
MDEsMTMgQEAgc3RhdGljIFN0cmluZyBidWlsZEhUVFBIZWFkZXJzKGNvbnN0IFJlcwogICAgIHJl
dHVybiBoZWFkZXJzOwogfQogCi1zdGF0aWMgdWludDMyX3QgbGFzdE1vZGlmaWVkRGF0ZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3N0YXRpYyB1aW50MzJfdCBsYXN0TW9kaWZp
ZWREYXRlTVMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgZG91Ymxl
IGxhc3RNb2RpZmllZCA9IHJlc3BvbnNlLmxhc3RNb2RpZmllZCgpOwotICAgIGlmICghc3RkOjpp
c2Zpbml0ZShsYXN0TW9kaWZpZWQpKQorICAgIGF1dG8gbGFzdE1vZGlmaWVkID0gcmVzcG9uc2Uu
bGFzdE1vZGlmaWVkKCk7CisgICAgaWYgKCFsYXN0TW9kaWZpZWQpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgcmV0dXJuIGxhc3RNb2RpZmllZCAqIDEwMDA7CisgICAgcmV0dXJuIHN0ZDo6Y2hy
b25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KGxhc3RNb2RpZmll
ZC52YWx1ZSgpLnRpbWVfc2luY2VfZXBvY2goKSkuY291bnQoKTsKIH0KIAogdm9pZCBQbHVnaW5W
aWV3OjpTdHJlYW06OmRpZFJlY2VpdmVSZXNwb25zZShOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ciosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMjIzLDcgKzIyMyw3IEBA
IHZvaWQgUGx1Z2luVmlldzo6U3RyZWFtOjpkaWRSZWNlaXZlUmVzcG8KICAgICBpZiAoZXhwZWN0
ZWRDb250ZW50TGVuZ3RoID4gMCkKICAgICAgICAgc3RyZWFtTGVuZ3RoID0gZXhwZWN0ZWRDb250
ZW50TGVuZ3RoOwogCi0gICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKG1fc3RyZWFtSUQsIHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2Rp
ZmllZERhdGUocmVzcG9uc2UpLCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVk
RmlsZW5hbWUoKSk7CisgICAgbV9wbHVnaW5WaWV3LT5tX3BsdWdpbi0+c3RyZWFtRGlkUmVjZWl2
ZVJlc3BvbnNlKG1fc3RyZWFtSUQsIHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxhc3RNb2Rp
ZmllZERhdGVNUyhyZXNwb25zZSksIG1pbWVUeXBlLCBoZWFkZXJzLCByZXNwb25zZS5zdWdnZXN0
ZWRGaWxlbmFtZSgpKTsKIH0KIAogdm9pZCBQbHVnaW5WaWV3OjpTdHJlYW06OmRpZFJlY2VpdmVE
YXRhKE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKiwgY29uc3QgY2hhciogYnl0ZXMsIGludCBs
ZW5ndGgpCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjptYW51YWxMb2FkRGlk
UmVjZWl2ZVJlcwogICAgIGlmIChleHBlY3RlZENvbnRlbnRMZW5ndGggPiAwKQogICAgICAgICBz
dHJlYW1MZW5ndGggPSBleHBlY3RlZENvbnRlbnRMZW5ndGg7CiAKLSAgICBtX3BsdWdpbi0+bWFu
dWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlVVJMLCBzdHJlYW1MZW5ndGgsIGxh
c3RNb2RpZmllZERhdGUocmVzcG9uc2UpLCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3Vn
Z2VzdGVkRmlsZW5hbWUoKSk7CisgICAgbV9wbHVnaW4tPm1hbnVhbFN0cmVhbURpZFJlY2VpdmVS
ZXNwb25zZShyZXNwb25zZVVSTCwgc3RyZWFtTGVuZ3RoLCBsYXN0TW9kaWZpZWREYXRlTVMocmVz
cG9uc2UpLCBtaW1lVHlwZSwgaGVhZGVycywgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7
CiB9CiAKIHZvaWQgUGx1Z2luVmlldzo6bWFudWFsTG9hZERpZFJlY2VpdmVEYXRhKGNvbnN0IGNo
YXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vUGx1Z2lucy9Q
bHVnaW5TdHJlYW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1BsdWdpbnMv
UGx1Z2luU3RyZWFtLmNwcAkocmV2aXNpb24gMTgyMjQxKQorKysgU291cmNlL1dlYktpdC93aW4v
UGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsMTMgKzEyMywx
MyBAQCB2b2lkIFBsdWdpblN0cmVhbTo6c3RvcCgpCiAgICAgbV9jbGllbnQgPSAwOwogfQogCi1z
dGF0aWMgdWludDMyX3QgbGFzdE1vZGlmaWVkRGF0ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKK3N0YXRpYyB1aW50MzJfdCBsYXN0TW9kaWZpZWREYXRlTVMoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgZG91YmxlIGxhc3RNb2RpZmllZCA9IHJlc3Bv
bnNlLmxhc3RNb2RpZmllZCgpOwotICAgIGlmICghc3RkOjppc2Zpbml0ZShsYXN0TW9kaWZpZWQp
KQorICAgIGF1dG8gbGFzdE1vZGlmaWVkID0gcmVzcG9uc2UubGFzdE1vZGlmaWVkKCk7CisgICAg
aWYgKCFsYXN0TW9kaWZpZWQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGxhc3RN
b2RpZmllZCAqIDEwMDA7CisgICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0
ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KGxhc3RNb2RpZmllZC52YWx1ZSgpLnRpbWVfc2luY2Vf
ZXBvY2goKSkuY291bnQoKTsKIH0KIAogdm9pZCBQbHVnaW5TdHJlYW06OnN0YXJ0U3RyZWFtKCkK
QEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFBsdWdpblN0cmVhbTo6c3RhcnRTdHJlYW0oKQogICAg
IG1fc3RyZWFtLnBkYXRhID0gMDsKICAgICBtX3N0cmVhbS5uZGF0YSA9IHRoaXM7CiAgICAgbV9z
dHJlYW0uZW5kID0gbWF4KGV4cGVjdGVkQ29udGVudExlbmd0aCwgMExMKTsKLSAgICBtX3N0cmVh
bS5sYXN0bW9kaWZpZWQgPSBsYXN0TW9kaWZpZWREYXRlKG1fcmVzb3VyY2VSZXNwb25zZSk7Cisg
ICAgbV9zdHJlYW0ubGFzdG1vZGlmaWVkID0gbGFzdE1vZGlmaWVkRGF0ZU1TKG1fcmVzb3VyY2VS
ZXNwb25zZSk7CiAgICAgbV9zdHJlYW0ubm90aWZ5RGF0YSA9IG1fbm90aWZ5RGF0YTsKIAogICAg
IG1fdHJhbnNmZXJNb2RlID0gTlBfTk9STUFMOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>