<?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>209770</bug_id>
          
          <creation_ts>2020-03-30 14:34:24 -0700</creation_ts>
          <short_desc>[ECMA-402] Intl.RelativeTimeFormat missing in WebKit</short_desc>
          <delta_ts>2020-05-12 19:49:15 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Shane Carr">sffc</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</assigned_to>
          <cc>andy</cc>
    
    <cc>annulen</cc>
    
    <cc>cyb.ai.815</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mathias</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>sffc</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1635729</commentid>
    <comment_count>0</comment_count>
    <who name="Shane Carr">sffc</who>
    <bug_when>2020-03-30 14:34:24 -0700</bug_when>
    <thetext>Intl.RelativeTimeFormat has reached Stage 4 in TC39 as of December 2019, and the other major browser engines (V8 and SpiderMonkey) have been shipping it for some time.

As usage of Intl.RelativeTimeFormat increases throughout the ecosystem, WebKit users will be left behind with legacy polyfills, leading to poorer performance relative to other browsers.  At Google, we are currently weighing our options for calling Intl.RelativeTimeFormat in supported environments in order to give users better performance and smaller download sizes.

ICU4C exposes C and C++ APIs that can be used to implement Intl.RelativeTimeFormat.  Implementing Intl.RelativeTimeFormat is largely a matter of adding the glue between JavaScript and ICU4C, as WebKit already does for other Intl types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635741</commentid>
    <comment_count>1</comment_count>
    <who name="Shane Carr">sffc</who>
    <bug_when>2020-03-30 14:40:20 -0700</bug_when>
    <thetext>Original proposal repo: https://github.com/tc39/proposal-intl-relative-time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635828</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-30 16:38:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/61079724&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643100</commentid>
    <comment_count>3</comment_count>
      <attachid>396874</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-18 16:57:17 -0700</bug_when>
    <thetext>Created attachment 396874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643101</commentid>
    <comment_count>4</comment_count>
      <attachid>396874</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-18 17:01:17 -0700</bug_when>
    <thetext>Comment on attachment 396874
Patch

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

Notes!

1. I&apos;ll need to rebase this on top of bug 202599 once it&apos;s landed.

&gt; Source/JavaScriptCore/ChangeLog:85
&gt; +        Perform three corrections for Intl classes:
&gt; +          1. Collator should be the only class with unique &quot;available locales&quot;.
&gt; +             [unum|udat]_getAvailable exist but they&apos;ve deferred to uloc_getAvailable for 20 years.
&gt; +          2. isUnicodeLocaleIdentifierType isn&apos;t just `alphanum{3,8}` but rather `alphanum{3,8} (sep alphanum{3,8})*`.
&gt; +             This is my own mistake from r239941.
&gt; +          3. supportedLocalesOf entries should not be frozen.
&gt; +             Changed in https://github.com/tc39/ecma402/pull/278.

2. I&apos;m happy to split these out from this patch, but they&apos;re all pretty small changes and were all detected by test262 cases for RelativeTimeFormat.

&gt; JSTests/ChangeLog:16
&gt; +        Tests for Polish appear to be wrong and should be corrected in test262.

3. V8 and SM are ignoring minimumGroupingSeparators for RelativeTimeFormat but not for NumberFormat.
   This seems completely bogus, I&apos;ve reported it here: https://github.com/tc39/test262/pull/1669#issuecomment-615534315</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643103</commentid>
    <comment_count>5</comment_count>
      <attachid>396876</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-18 17:19:33 -0700</bug_when>
    <thetext>Created attachment 396876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643128</commentid>
    <comment_count>6</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-18 19:13:48 -0700</bug_when>
    <thetext>Weird, apparently pluralization doesn&apos;t work in ICU 62?

&gt; Exception: Error: expected in 1 second but got in 1 seconds
&gt; shouldBe@intl-relativetimeformat.js:5:24
&gt; global code@intl-relativetimeformat.js:170:13</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643165</commentid>
    <comment_count>7</comment_count>
      <attachid>396892</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-18 22:14:01 -0700</bug_when>
    <thetext>Created attachment 396892
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643171</commentid>
    <comment_count>8</comment_count>
      <attachid>396896</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-19 00:28:10 -0700</bug_when>
    <thetext>Created attachment 396896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643239</commentid>
    <comment_count>9</comment_count>
      <attachid>396922</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-19 12:06:31 -0700</bug_when>
    <thetext>Created attachment 396922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643257</commentid>
    <comment_count>10</comment_count>
      <attachid>396927</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-19 14:53:08 -0700</bug_when>
    <thetext>Created attachment 396927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643270</commentid>
    <comment_count>11</comment_count>
      <attachid>396927</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-19 17:48:28 -0700</bug_when>
    <thetext>Comment on attachment 396927
Patch

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

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:507
&gt; +void IntlNumberFormat::formatToPartsInternal(JSGlobalObject* globalObject, double value, const String&amp; formatted, UFieldPositionIterator* iterator, JSArray* parts, JSString* unit)

Not sure why we never do this in JavaScriptCore: Seems the global object pointer should be a reference, since it can’t be null. Same for UFieldPositionIterator* and JSArray*.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:516
&gt; +    Vector&lt;IntlNumberFormatField&gt; fields(stringLength, literalField);

Can avoid allocating memory on the heap if we use inline capacity in this vector. Not sure what the performance characteristics of this are.

&gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:531
&gt; +    auto unitName = Identifier::fromString(vm, &quot;unit&quot;);

Just moved code, but seems a little wasteful to do this operation when unit is nullptr.

&gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormat.cpp:40
&gt; +static const char* const relevantExtensionKeys[1] = { &quot;nu&quot; };

In new code we should use constexpr for this instead.

    constexpr const char* relevantExtensionKeys[1] = { &quot;nu&quot; };

Obviates the need for static and const, and compatibele with some additional special stuff.

&gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormat.cpp:63
&gt; +    IntlRelativeTimeFormat* format = new (NotNull, allocateCell&lt;IntlRelativeTimeFormat&gt;(vm.heap)) IntlRelativeTimeFormat(vm, structure);

auto

&gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormat.cpp:86
&gt; +    IntlRelativeTimeFormat* thisObject = jsCast&lt;IntlRelativeTimeFormat*&gt;(cell);

auto

&gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormat.cpp:92
&gt; +namespace IntlRTFInternal {

Not sure all these things need to be wrapped in namespaces like this.

&gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormat.cpp:207
&gt; +    return unit.endsWith(&quot;s&quot;) ? unit.left(unit.length() - 1) : unit;

endsWith(&apos;s&apos;) is more efficient; I think I added it recently

&gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormat.h:76
&gt; +    struct UFieldPositionIteratorDeleter {
&gt; +        void operator()(UFieldPositionIterator*) const;
&gt; +    };

This one isn’t used in the header; maybe it doesn’t need to be a member, or maybe the definition can be in the .cpp file even if it stays a member.

&gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormatConstructor.cpp:58
&gt; +    IntlRelativeTimeFormatConstructor* constructor = new (NotNull, allocateCell&lt;IntlRelativeTimeFormatConstructor&gt;(vm.heap)) IntlRelativeTimeFormatConstructor(vm, structure);

auto

&gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormatConstructor.cpp:115
&gt; +    const HashSet&lt;String&gt;&amp; availableLocales = intlRelativeTimeFormatAvailableLocales();

auto&amp;

&gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormatConstructor.cpp:117
&gt; +    Vector&lt;String&gt; requestedLocales = canonicalizeLocaleList(globalObject, callFrame-&gt;argument(0));

auto

&gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormatConstructor.h:37
&gt; +    typedef InternalFunction Base;

Use using in new code?

&gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormatPrototype.cpp:58
&gt; +    IntlRelativeTimeFormatPrototype* object = new (NotNull, allocateCell&lt;IntlRelativeTimeFormatPrototype&gt;(vm.heap)) IntlRelativeTimeFormatPrototype(vm, structure);

auto

&gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormatPrototype.cpp:85
&gt; +    IntlRelativeTimeFormat* relativeTimeFormat = jsDynamicCast&lt;IntlRelativeTimeFormat*&gt;(vm, callFrame-&gt;thisValue());

auto

&gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormatPrototype.cpp:104
&gt; +    IntlRelativeTimeFormat* relativeTimeFormat = jsDynamicCast&lt;IntlRelativeTimeFormat*&gt;(vm, callFrame-&gt;thisValue());

auto

&gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormatPrototype.cpp:123
&gt; +    IntlRelativeTimeFormat* relativeTimeFormat = jsDynamicCast&lt;IntlRelativeTimeFormat*&gt;(vm, callFrame-&gt;thisValue());

auto

&gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormatPrototype.h:35
&gt; +    static constexpr unsigned StructureFlags = Base::StructureFlags | HasStaticPropertyTable;

I don’t think we need static when we have constexpr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643289</commentid>
    <comment_count>12</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-19 19:39:06 -0700</bug_when>
    <thetext>Thanks for the review!

(In reply to Darin Adler from comment #11)
&gt; &gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:507
&gt; &gt; +void IntlNumberFormat::formatToPartsInternal(JSGlobalObject* globalObject, double value, const String&amp; formatted, UFieldPositionIterator* iterator, JSArray* parts, JSString* unit)
&gt; 
&gt; Not sure why we never do this in JavaScriptCore: Seems the global object
&gt; pointer should be a reference, since it can’t be null. Same for
&gt; UFieldPositionIterator* and JSArray*.

It is odd but JSGlobalObject and JSArray have this convention... I will change UFieldPositionIterator* though.

&gt; &gt; Source/JavaScriptCore/runtime/IntlNumberFormat.cpp:516
&gt; &gt; +    Vector&lt;IntlNumberFormatField&gt; fields(stringLength, literalField);
&gt; 
&gt; Can avoid allocating memory on the heap if we use inline capacity in this
&gt; vector. Not sure what the performance characteristics of this are.

I guess we can do 32, since that&apos;s our initial capacity when formatting the number.

&gt; &gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormatPrototype.h:35
&gt; &gt; +    static constexpr unsigned StructureFlags = Base::StructureFlags | HasStaticPropertyTable;
&gt; 
&gt; I don’t think we need static when we have constexpr.

It is a static field though? Either way this too is JSC&apos;s unanimous convention.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643290</commentid>
    <comment_count>13</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-19 19:44:12 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #12)
&gt; It is odd but JSGlobalObject and JSArray have this convention... I will
&gt; change UFieldPositionIterator* though.

On second thought, I might not change UFieldPositionIterator* either -- seems a bit odd when it&apos;s just being passed from one C API to another.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643293</commentid>
    <comment_count>14</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-19 19:58:25 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #11)
&gt; &gt; Source/JavaScriptCore/runtime/IntlRelativeTimeFormat.cpp:207
&gt; &gt; +    return unit.endsWith(&quot;s&quot;) ? unit.left(unit.length() - 1) : unit;
&gt; 
&gt; endsWith(&apos;s&apos;) is more efficient; I think I added it recently

Funny enough, we have StringView::startsWith(UChar) but not StringView::endsWith(UChar) at the moment. Happy to add it in a follow-up though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643294</commentid>
    <comment_count>15</comment_count>
      <attachid>396937</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-19 20:18:44 -0700</bug_when>
    <thetext>Created attachment 396937
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643319</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-19 22:15:40 -0700</bug_when>
    <thetext>Committed r260349: &lt;https://trac.webkit.org/changeset/260349&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 396937.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643331</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-19 22:49:09 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #14)
&gt; Funny enough, we have StringView::startsWith(UChar) but not
&gt; StringView::endsWith(UChar) at the moment. Happy to add it in a follow-up
&gt; though.

I was thinking of my patch in progress for bug 210431, which adds that function. Thought I had already landed it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396874</attachid>
            <date>2020-04-18 16:57:17 -0700</date>
            <delta_ts>2020-04-18 17:19:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209770-20200418165716.patch</filename>
            <type>text/plain</type>
            <size>103478</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NDlmNzI3NzM3ZmRmZDQyMGJiYjY3MzNjZDhiMDBkMTk3ODliOGFmLi4xMWEwMTY3MTZjNzhkMWE0
MjcyZTY0NTIxOThjNTY5OWYwMDc5YTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OSBAQAorMjAyMC0wNC0xOCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBtaXNz
aW5nIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5NzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSByZWNlbnQgRUNNQS00MDIgZmVhdHVyZSBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdC4KKworICAgICAgICBJbnRsLlJlbGF0aXZlVGltZUZvcm1h
dCBoYXMgZm9ybWF0IC8gZm9ybWF0VG9QYXJ0cyBmdW5jdGlvbnMgbGlrZSBJbnRsLk51bWJlckZv
cm1hdCAvIEludGwuRGF0ZVRpbWVGb3JtYXQKKyAgICAgICAgYW5kIGlzIHVzZWQgdG8gdHVybiBh
IG51bWJlciBhbmQgdW5pdCBpbnRvIGEgZm9ybWF0dGVkIHJlbGF0aXZlIHRpbWUgc3RyaW5nLCBl
LmcuOgorCisgICAgICAgICAgbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicpLmZvcm1h
dCgxMCwgJ2RheScpCisgICAgICAgICAgPiAnaW4gMTAgZGF5cycKKworICAgICAgICAgIG5ldyBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4nLCB7IG51bWVyaWM6IGF1dG8gfSkuZm9ybWF0KDAs
ICdkYXknKQorICAgICAgICAgID4gJ3RvZGF5JworCisgICAgICAgIEltcGxlbWVudGF0aW9uIG9m
IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0I2Zvcm1hdFRvUGFydHMgbWFrZXMgZGlyZWN0IHVzZSBv
ZiBJbnRsLk51bWJlckZvcm1hdCNmb3JtYXRUb1BhcnRzLAorICAgICAgICBhcyB0aGUgcmVsYXRp
dmUgdGltZSBzdHJpbmcgY29uc2lzdHMgb2YgYXQgbW9zdCBvbmUgZm9ybWF0dGVkIG51bWJlciB3
aXRoIG9wdGlvbmFsIGxpdGVyYWwgdGV4dCBvbiBlaXRoZXIgc2lkZS4KKworICAgICAgICBUaGlz
IGZlYXR1cmUgaXMgcnVudGltZS1ndWFyZGVkIGJ5IHRoZSAndXNlSW50bFJlbGF0aXZlVGltZUZv
cm1hdCcgb3B0aW9uLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1v
dXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
U291cmNlcy50eHQ6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHA6IEFkZGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmg6IEFkZGVk
LgorICAgICAgICAqIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA6
IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlw
ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGlt
ZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5o
OgorICAgICAgICBBZGQgZmVhdHVyZSBhbmQgcnVudGltZSBvcHRpb24uCisKKyAgICAgICAgKiBy
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxEYXRlVGlt
ZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyk6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXMuY3BwOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxS
dWxlcyk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKToK
KyAgICAgICAgTWFrZSAidHlwZSIgYSBwcm9wZXJ0eSBuYW1lLgorCisgICAgICAgICogcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6
aW5pdGlhbGl6ZU51bWJlckZvcm1hdCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6
OnJlc29sdmVkT3B0aW9ucyk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1h
dFRvUGFydHNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1h
dFRvUGFydHMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oOgorICAgICAg
ICBGYWN0b3Igb3V0IGZvcm1hdFRvUGFydHNJbnRlcm5hbCBzbyB0aGF0IFJlbGF0aXZlVGltZUZv
cm1hdCBjYW4gdXNlIGl0IHdpdGggaXRzIG93biBVTnVtYmVyRm9ybWF0LgorICAgICAgICAoVGhp
cyBsb2dpYyBpcyB0b28gY29tcGxpY2F0ZWQgdG8gZHVwbGljYXRlOyBpdCdzIGJlY2F1c2UgSUNV
IHdvbid0IHNwbGl0LCBlLmcuLCAiMTAsMDAwIiBpbnRvIHBhcnRzIGZvciB1cy4pCisKKyAgICAg
ICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0OjpJ
bnRsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6SW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjppbnRsQXZh
aWxhYmxlTG9jYWxlcyk6CisgICAgICAgIChKU0M6OmludGxDb2xsYXRvckF2YWlsYWJsZUxvY2Fs
ZXMpOgorICAgICAgICAoSlNDOjppc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZSk6CisgICAg
ICAgIChKU0M6OnN1cHBvcnRlZExvY2FsZXMpOgorICAgICAgICAoSlNDOjppbnRsRGF0ZVRpbWVG
b3JtYXRBdmFpbGFibGVMb2NhbGVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6aW50bE51bWJl
ckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE9iamVjdC5oOgorICAgICAgICAoSlNDOjppbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2Nh
bGVzKToKKyAgICAgICAgKEpTQzo6aW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMpOgor
ICAgICAgICAoSlNDOjppbnRsUGx1cmFsUnVsZXNBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAg
KEpTQzo6aW50bFJlbGF0aXZlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMpOgorICAgICAgICBQ
ZXJmb3JtIHRocmVlIGNvcnJlY3Rpb25zIGZvciBJbnRsIGNsYXNzZXM6CisgICAgICAgICAgMS4g
Q29sbGF0b3Igc2hvdWxkIGJlIHRoZSBvbmx5IGNsYXNzIHdpdGggdW5pcXVlICJhdmFpbGFibGUg
bG9jYWxlcyIuCisgICAgICAgICAgICAgW3VudW18dWRhdF1fZ2V0QXZhaWxhYmxlIGV4aXN0IGJ1
dCB0aGV5J3ZlIGRlZmVycmVkIHRvIHVsb2NfZ2V0QXZhaWxhYmxlIGZvciAyMCB5ZWFycy4KKyAg
ICAgICAgICAyLiBpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZSBpc24ndCBqdXN0IGBhbHBo
YW51bXszLDh9YCBidXQgcmF0aGVyIGBhbHBoYW51bXszLDh9IChzZXAgYWxwaGFudW17Myw4fSkq
YC4KKyAgICAgICAgICAgICBUaGlzIGlzIG15IG93biBtaXN0YWtlIGZyb20gcjIzOTk0MS4KKyAg
ICAgICAgICAzLiBzdXBwb3J0ZWRMb2NhbGVzT2YgZW50cmllcyBzaG91bGQgbm90IGJlIGZyb3pl
bi4KKyAgICAgICAgICAgICBDaGFuZ2VkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L2VjbWE0
MDIvcHVsbC8yNzguCisKIDIwMjAtMDQtMTcgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5n
QHNvbnkuY29tPgogCiAgICAgICAgIENsZWFuIHVwIHNvbWUgSW50bCBjbGFzc2VzIGZvbGxvd2lu
ZyB0aGUgSUNVIHVwZ3JhZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBi
YTYyMDE5MDIzMjVmZmQwNDI2MDIyOWFjNGM3NDA4MWY4ZTk0ZmFkLi44OTBmNmE4YTRjMGMxZWVj
MTJkOTE1NzQ0ODBjZjU4NTQzYWM4NjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC03NSw2ICs3NSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJD
RVMKICAgICBydW50aW1lL0ludGxPYmplY3QuY3BwCiAgICAgcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXNDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5j
cHAKKyAgICBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKyAg
ICBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCiAgICAgcnVudGlt
ZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CiAgICAgcnVudGltZS9KU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Qg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApp
bmRleCAyMzQwY2RmYWM0NjFiOWI2YjMxYjA1NzhiMjVhZmI1NTViYWRhZDhiLi4zNGFjZGY4N2U4
YTRkNjliZjQ1ZDUyZjMyNDVmYTAwNDVlMjNjN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTQyLDYgKzE0
Miw4IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5j
cHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKICQoUFJPSkVDVF9ESVIp
L3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9y
dW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAorJChQUk9KRUNUX0RJUikv
cnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJ
UikvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSlNJbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBhNzQ0NTBjYTc5MWM3ZmE4ZDYy
YzhiOTA5YWFmZTQxNGU5NDZlZjBkLi5kYWY5NDMyYTkxNmU1NzQ2ZmRkOWUxODgzYjk3YjZhZGFk
MzFmYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0zMyw2ICszMyw4IEBAICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90
eXBlLmx1CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSW50bE9iamVjdC5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlLmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bFJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0RhdGFWaWV3UHJvdG90eXBl
Lmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvSlNHbG9iYWxPYmplY3QubHV0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKaW5kZXggZTlkODA0ZDllOGJlNWMzNDVlZjQ3MjE5ZTBlOTk2ZDMxOWJiZjkwNy4u
ZTdmMjEzMTM5YWM4YzQ2NjQ2MzQ4N2JhNzY3NzE1YmY2MzVlMDM1MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE1Myw2ICsxNTMsOCBAQCBPQkpFQ1Rf
TFVUX0hFQURFUlMgPSBcCiAgICAgSW50bE9iamVjdC5sdXQuaCBcCiAgICAgSW50bFBsdXJhbFJ1
bGVzQ29uc3RydWN0b3IubHV0LmggXAogICAgIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5sdXQu
aCBcCisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oIFwKICAgICBKU0RhdGFWaWV3UHJv
dG90eXBlLmx1dC5oIFwKICAgICBKU0dsb2JhbE9iamVjdC5sdXQuaCBcCiAgICAgSlNJbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGIyNTAxOWZkOTA1NzE4YjVhMzJjZjI2YWUzNzI0YjhlMTgxY2MyOGUuLmRlNWQ1OTliNTRk
MTJmZDRlYjg3MWMzOTc1ODIyMzM2YzRkMTc3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00MzE4LDYgKzQzMTgsMTIgQEAKIAkJQTFFMDQ1MUIxQzI1QjRCMTAwQkI2NjNDIC8q
IFN0cmluZ1Byb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0
aCA9IFN0cmluZ1Byb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFG
RTFFQjAxQzJDNTM3RTAwQTI4OUZGIC8qIERhdGVQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBEYXRlUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMjc5NThEN0ZBMTE0MkIwQUM5RTM2NEQgLyogV2FzbUNvbnRleHRJ
bmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21Db250ZXh0SW5s
aW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0JGODg0QjI0NDgwQkRFMDAx
QjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNCRjg4NEMyNDQ4MEJERjAwMUI5
RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0JGODg0RDI0NDgwQkRGMDAxQjlGMzUgLyogSW50
bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQkY4ODRFMjQ0ODBCRTAwMDFCOUYzNSAvKiBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQkY4ODRGMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBM0JGODg1MDI0NDgwQkUxMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRkY5QkM1MjIzNDc0NjYwMEIxQTlBQiAv
KiBZYXJyRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckZsYWdz
Lmg7IHBhdGggPSB5YXJyL1lhcnJGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBM0ZGOUJDNjIyMzQ3NDY2MDBCMUE5QUIgLyogWWFyckZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJGbGFncy5jcHA7IHBhdGggPSB5YXJyL1lhcnJG
bGFncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTEzMTg4RTBGQUYw
MDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNzI0Myw2ICs3MjQ5LDEyIEBACiAJCQkJN0Q1RkIxOTAyMDc0NEJGMTAw
NURERjY0IC8qIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmggKi8sCiAJCQkJN0Q1RkIxOTEy
MDc0NEJGMTAwNURERjY0IC8qIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAgKi8sCiAJCQkJ
N0Q1RkIxOEQyMDc0NEFFODAwNURERjY0IC8qIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oICov
LAorCQkJCUEzQkY4ODRGMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
LmNwcCAqLywKKwkJCQlBM0JGODg1MDI0NDgwQkUxMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdC5oICovLAorCQkJCUEzQkY4ODREMjQ0ODBCREYwMDFCOUYzNSAvKiBJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwICovLAorCQkJCUEzQkY4ODRFMjQ0ODBCRTAwMDFC
OUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKKwkJCQlBM0JG
ODg0QjI0NDgwQkRFMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAgKi8sCisJCQkJQTNCRjg4NEMyNDQ4MEJERjAwMUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVG
b3JtYXRQcm90b3R5cGUuaCAqLywKIAkJCQkwRjI3NUYyQzFFQ0UwNzk2MDA2MjBENDcgLyogSW50
cmluc2ljLmNwcCAqLywKIAkJCQk4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2lj
LmggKi8sCiAJCQkJOEI5RjZENTUxRDU5MTJGQTAwMUM3MzlGIC8qIEl0ZXJhdGlvbktpbmQuaCAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAwMTVjZTJhYzU1NjE2NmI0MzBkNTZj
YWRjNzYwNTYxZDNiNzU4YzI2Li43YTY4NmRkZTBkMTkyNGVhZmFkNDM1MDQ1ZGRhNWYwOTRlY2I5
Y2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04MTYsNiArODE2LDkgQEAgcnVu
dGltZS9JbnRsT2JqZWN0LmNwcAogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCiBydW50aW1l
L0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGUuY3BwCitydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCitydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvSW50bFJlbGF0
aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNw
cAogcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSlNBcnJheS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmlu
ZGV4IGUyZGM4ODdiMzg0NDM0ZTA1MTY2NmEwYjQyNjUyMDAzOGY0YjU5ZjQuLmQxNjRiYTRiZWY4
YjRlZWZmOTMxNzM3YjM5NTNmMzRmZTEyMzJhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtNDksNiArNDksNyBAQAogICAg
IG1hY3JvKFByb21pc2UpIFwKICAgICBtYWNybyhSZWZsZWN0KSBcCiAgICAgbWFjcm8oUmVnRXhw
KSBcCisgICAgbWFjcm8oUmVsYXRpdmVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8oUmVtb3RlUGxh
eWJhY2spIFwKICAgICBtYWNybyhTZXQpIFwKICAgICBtYWNybyhTaGFyZWRBcnJheUJ1ZmZlcikg
XApAQCAtMTc4LDYgKzE3OSw3IEBACiAgICAgbWFjcm8oc3RhY2spIFwKICAgICBtYWNybyhzdGFj
a1RyYWNlTGltaXQpIFwKICAgICBtYWNybyhzdGlja3kpIFwKKyAgICBtYWNybyhzdHlsZSkgXAog
ICAgIG1hY3JvKHN1YmFycmF5KSBcCiAgICAgbWFjcm8oc3VtbWFyeSkgXAogICAgIG1hY3JvKHRh
cmdldCkgXApAQCAtMTkzLDYgKzE5NSw3IEBACiAgICAgbWFjcm8odG9Mb2NhbGVTdHJpbmcpIFwK
ICAgICBtYWNybyh0b1ByZWNpc2lvbikgXAogICAgIG1hY3JvKHRvU3RyaW5nKSBcCisgICAgbWFj
cm8odHlwZSkgXAogICAgIG1hY3JvKHVpZCkgXAogICAgIG1hY3JvKHVuaWNvZGUpIFwKICAgICBt
YWNybyh1c2FnZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEYXRlVGltZUZvcm1hdC5jcHAKaW5kZXggMDAzMDJmZTRiMTM1ZDFkODNhNGNkYzgxZGI3ZDEz
ODIxMGZjNjdlOC4uMmQxMzNkNjNhZWJjNGRiODc1OTljODBkY2JkMGYxMGJmN2E4OWQxOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXQuY3BwCkBAIC0xMDI5LDcgKzEwMjksNiBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6
Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdgogICAg
ICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwog
CiAgICAgYXV0byByZXN1bHRTdHJpbmcgPSBTdHJpbmcocmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVu
Z3RoKTsKLSAgICBhdXRvIHR5cGVQcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAidHlwZSIpOwogICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgImxpdGVyYWwiX3MpOwogCiAgICAgaW50MzJfdCBwcmV2aW91c0VuZEluZGV4ID0gMDsK
QEAgLTEwNDMsNyArMTA0Miw3IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXRU
b1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2CiAgICAgICAgIGlm
IChwcmV2aW91c0VuZEluZGV4IDwgYmVnaW5JbmRleCkgewogICAgICAgICAgICAgYXV0byB2YWx1
ZSA9IGpzU3RyaW5nKHZtLCByZXN1bHRTdHJpbmcuc3Vic3RyaW5nKHByZXZpb3VzRW5kSW5kZXgs
IGJlZ2luSW5kZXggLSBwcmV2aW91c0VuZEluZGV4KSk7CiAgICAgICAgICAgICBKU09iamVjdCog
cGFydCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBw
YXJ0LT5wdXREaXJlY3Qodm0sIHR5cGVQcm9wZXJ0eU5hbWUsIGxpdGVyYWxTdHJpbmcpOworICAg
ICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBsaXRl
cmFsU3RyaW5nKTsKICAgICAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+dmFsdWUsIHZhbHVlKTsKICAgICAgICAgICAgIHBhcnRzLT5wdXNoKGdsb2JhbE9iamVj
dCwgcGFydCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpA
QCAtMTA1NCw3ICsxMDUzLDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFRv
UGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHYKICAgICAgICAgICAg
IGF1dG8gdHlwZSA9IGpzU3RyaW5nKHZtLCBwYXJ0VHlwZVN0cmluZyhVRGF0ZUZvcm1hdEZpZWxk
KGZpZWxkVHlwZSkpKTsKICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBqc1N0cmluZyh2bSwgcmVz
dWx0U3RyaW5nLnN1YnN0cmluZyhiZWdpbkluZGV4LCBlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsK
ICAgICAgICAgICAgIEpTT2JqZWN0KiBwYXJ0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFs
T2JqZWN0KTsKLSAgICAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdHlwZVByb3BlcnR5TmFt
ZSwgdHlwZSk7CisgICAgICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnR5cGUsIHR5cGUpOwogICAgICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT52YWx1ZSwgdmFsdWUpOwogICAgICAgICAgICAgcGFydHMtPnB1c2goZ2xvYmFs
T2JqZWN0LCBwYXJ0KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwCmluZGV4IGNhNDI3OTY4NmE2ZmFiMGQ4ZGQyZGM1YmUxZmJhMTkxZDE3MmM4YzguLjk2
OGViNWUyNzdjMDlmYzhkZjM0ZGJhNGRhYWIxMjE3ZjAwYTY0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0yLDYgKzIs
NyBAQAogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdv
bmVyLmZhbWlseSkKICAqIENvcHlyaWdodCAoQykgMjAxNiBTdWtvbHNhayBTYWtzaHV3b25nIChz
dWtvbHNha0BnbWFpbC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFj
dGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTk1LDcgKzE5Niw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAKICAgICBtX251bWJl
cmluZ1N5c3RlbSA9IHJlc3VsdC5nZXQoIm51Il9zKTsKIAotICAgIFN0cmluZyBzdHlsZVN0cmlu
ZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAic3R5bGUiKSwgeyAiZGVjaW1hbCIsICJwZXJjZW50IiwgImN1cnJlbmN5
IiB9LCAic3R5bGUgbXVzdCBiZSBlaXRoZXIgXCJkZWNpbWFsXCIsIFwicGVyY2VudFwiLCBvciBc
ImN1cnJlbmN5XCIiLCAiZGVjaW1hbCIpOworICAgIFN0cmluZyBzdHlsZVN0cmluZyA9IGludGxT
dHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHls
ZSwgeyAiZGVjaW1hbCIsICJwZXJjZW50IiwgImN1cnJlbmN5IiB9LCAic3R5bGUgbXVzdCBiZSBl
aXRoZXIgXCJkZWNpbWFsXCIsIFwicGVyY2VudFwiLCBvciBcImN1cnJlbmN5XCIiLCAiZGVjaW1h
bCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgaWYgKHN0
eWxlU3RyaW5nID09ICJkZWNpbWFsIikKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpEZWNpbWFs
OwpAQCAtNDQxLDcgKzQ0Miw3IEBAIEpTT2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZl
ZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU09iamVjdCogb3B0
aW9ucyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgb3B0aW9ucy0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUsIGpzU3RyaW5nKHZtLCBtX2xv
Y2FsZSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bnVt
YmVyaW5nU3lzdGVtLCBqc1N0cmluZyh2bSwgbV9udW1iZXJpbmdTeXN0ZW0pKTsKLSAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHlsZSIpLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sIHN0eWxlU3RyaW5nKG1fc3R5bGUpKSk7CisgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHlsZSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCBzdHlsZVN0cmluZyhtX3N0eWxlKSkpOwogICAgIGlmIChtX3N0eWxlID09IFN0eWxl
OjpDdXJyZW5jeSkgewogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fY3Vy
cmVuY3kpKTsKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAiY3VycmVuY3lEaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY3Vy
cmVuY3lEaXNwbGF5U3RyaW5nKG1fY3VycmVuY3lEaXNwbGF5KSkpOwpAQCAtNTAzLDYgKzUwNCw1
MCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6cGFydFR5cGVTdHJpbmcoVU51bWJl
ckZvcm1hdEZpZWxkcyBmaWVsZCwgZG91YmxlCiAgICAgcmV0dXJuICJ1bmtub3duIl9zOwogfQog
Cit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZm9ybWF0dGVk
LCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBpdGVyYXRvciwgSlNBcnJheSogcGFydHMsIEpTU3Ry
aW5nKiB1bml0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIHN0cmluZ0xlbmd0
aCA9IGZvcm1hdHRlZC5sZW5ndGgoKTsKKworICAgIGludDMyX3QgbGl0ZXJhbEZpZWxkVHlwZSA9
IC0xOworICAgIGF1dG8gbGl0ZXJhbEZpZWxkID0gSW50bE51bWJlckZvcm1hdEZpZWxkKGxpdGVy
YWxGaWVsZFR5cGUsIHN0cmluZ0xlbmd0aCk7CisgICAgVmVjdG9yPEludGxOdW1iZXJGb3JtYXRG
aWVsZD4gZmllbGRzKHN0cmluZ0xlbmd0aCwgbGl0ZXJhbEZpZWxkKTsKKyAgICBpbnQzMl90IGJl
Z2luSW5kZXggPSAwOworICAgIGludDMyX3QgZW5kSW5kZXggPSAwOworICAgIGF1dG8gZmllbGRU
eXBlID0gdWZpZWxkcG9zaXRlcl9uZXh0KGl0ZXJhdG9yLCAmYmVnaW5JbmRleCwgJmVuZEluZGV4
KTsKKyAgICB3aGlsZSAoZmllbGRUeXBlID49IDApIHsKKyAgICAgICAgYXV0byBzaXplID0gZW5k
SW5kZXggLSBiZWdpbkluZGV4OworICAgICAgICBmb3IgKGF1dG8gaSA9IGJlZ2luSW5kZXg7IGkg
PCBlbmRJbmRleDsgKytpKSB7CisgICAgICAgICAgICAvLyBPbmx5IG92ZXJyaWRlIHByZXZpb3Vz
IHZhbHVlIGlmIG5ldyB2YWx1ZSBpcyBtb3JlIHNwZWNpZmljLgorICAgICAgICAgICAgaWYgKGZp
ZWxkc1tpXS5zaXplID49IHNpemUpCisgICAgICAgICAgICAgICAgZmllbGRzW2ldID0gSW50bE51
bWJlckZvcm1hdEZpZWxkKGZpZWxkVHlwZSwgc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgZmll
bGRUeXBlID0gdWZpZWxkcG9zaXRlcl9uZXh0KGl0ZXJhdG9yLCAmYmVnaW5JbmRleCwgJmVuZElu
ZGV4KTsKKyAgICB9CisKKyAgICBhdXRvIGxpdGVyYWxTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJsaXRlcmFsIl9zKTsKKyAgICBhdXRvIHVuaXROYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInVuaXQiKTsKKworICAgIHNpemVfdCBjdXJyZW50SW5kZXggPSAwOworICAg
IHdoaWxlIChjdXJyZW50SW5kZXggPCBzdHJpbmdMZW5ndGgpIHsKKyAgICAgICAgYXV0byBzdGFy
dEluZGV4ID0gY3VycmVudEluZGV4OworICAgICAgICBhdXRvIGZpZWxkVHlwZSA9IGZpZWxkc1tj
dXJyZW50SW5kZXhdLnR5cGU7CisgICAgICAgIHdoaWxlIChjdXJyZW50SW5kZXggPCBzdHJpbmdM
ZW5ndGggJiYgZmllbGRzW2N1cnJlbnRJbmRleF0udHlwZSA9PSBmaWVsZFR5cGUpCisgICAgICAg
ICAgICArK2N1cnJlbnRJbmRleDsKKyAgICAgICAgYXV0byBwYXJ0VHlwZSA9IGZpZWxkVHlwZSA9
PSBsaXRlcmFsRmllbGRUeXBlID8gbGl0ZXJhbFN0cmluZyA6IGpzU3RyaW5nKHZtLCBwYXJ0VHlw
ZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzKGZpZWxkVHlwZSksIHZhbHVlKSk7CisgICAgICAg
IGF1dG8gcGFydFZhbHVlID0ganNTdWJzdHJpbmcodm0sIGZvcm1hdHRlZCwgc3RhcnRJbmRleCwg
Y3VycmVudEluZGV4IC0gc3RhcnRJbmRleCk7CisgICAgICAgIEpTT2JqZWN0KiBwYXJ0ID0gY29u
c3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcGFydC0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBwYXJ0VHlwZSk7CisgICAgICAgIHBhcnQtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUsIHBhcnRWYWx1ZSk7CisgICAgICAg
IGlmICh1bml0KQorICAgICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB1bml0TmFtZSwgdW5p
dCk7CisgICAgICAgIHBhcnRzLT5wdXNoKGdsb2JhbE9iamVjdCwgcGFydCk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgfQorfQorCiBKU1ZhbHVlIElu
dGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgZG91YmxlIHZhbHVlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAg
LTUyMCw3ICs1NjUsNiBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbAogICAgIGlmIChVX0ZBSUxV
UkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJmYWlsZWQgdG8gb3BlbiBmaWVsZCBwb3NpdGlvbiBpdGVyYXRvciJfcyk7CiAKLSAg
ICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVzdWx0KDMy
KTsKICAgICBhdXRvIHJlc3VsdExlbmd0aCA9IHVudW1fZm9ybWF0RG91YmxlRm9yRmllbGRzKG1f
bnVtYmVyRm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSwg
ZmllbGRJdHIuZ2V0KCksICZzdGF0dXMpOwogICAgIGlmIChzdGF0dXMgPT0gVV9CVUZGRVJfT1ZF
UkZMT1dfRVJST1IpIHsKQEAgLTUzMSw0NSArNTc1LDE0IEBAIEpTVmFsdWUgSW50bE51bWJlckZv
cm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUg
dmFsCiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9z
KTsKIAotICAgIGludDMyX3QgbGl0ZXJhbEZpZWxkVHlwZSA9IC0xOwotICAgIGF1dG8gbGl0ZXJh
bEZpZWxkID0gSW50bE51bWJlckZvcm1hdEZpZWxkKGxpdGVyYWxGaWVsZFR5cGUsIHJlc3VsdExl
bmd0aCk7Ci0gICAgVmVjdG9yPEludGxOdW1iZXJGb3JtYXRGaWVsZD4gZmllbGRzKHJlc3VsdExl
bmd0aCwgbGl0ZXJhbEZpZWxkKTsKLSAgICBpbnQzMl90IGJlZ2luSW5kZXggPSAwOwotICAgIGlu
dDMyX3QgZW5kSW5kZXggPSAwOwotICAgIGF1dG8gZmllbGRUeXBlID0gdWZpZWxkcG9zaXRlcl9u
ZXh0KGZpZWxkSXRyLmdldCgpLCAmYmVnaW5JbmRleCwgJmVuZEluZGV4KTsKLSAgICB3aGlsZSAo
ZmllbGRUeXBlID49IDApIHsKLSAgICAgICAgYXV0byBzaXplID0gZW5kSW5kZXggLSBiZWdpbklu
ZGV4OwotICAgICAgICBmb3IgKGF1dG8gaSA9IGJlZ2luSW5kZXg7IGkgPCBlbmRJbmRleDsgKytp
KSB7Ci0gICAgICAgICAgICAvLyBPbmx5IG92ZXJyaWRlIHByZXZpb3VzIHZhbHVlIGlmIG5ldyB2
YWx1ZSBpcyBtb3JlIHNwZWNpZmljLgotICAgICAgICAgICAgaWYgKGZpZWxkc1tpXS5zaXplID49
IHNpemUpCi0gICAgICAgICAgICAgICAgZmllbGRzW2ldID0gSW50bE51bWJlckZvcm1hdEZpZWxk
KGZpZWxkVHlwZSwgc2l6ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZmllbGRUeXBlID0gdWZpZWxk
cG9zaXRlcl9uZXh0KGZpZWxkSXRyLmdldCgpLCAmYmVnaW5JbmRleCwgJmVuZEluZGV4KTsKLSAg
ICB9CisgICAgYXV0byByZXN1bHRTdHJpbmcgPSBTdHJpbmcocmVzdWx0LmRhdGEoKSwgcmVzdWx0
TGVuZ3RoKTsKIAogICAgIEpTQXJyYXkqIHBhcnRzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihBcnJheVdpdGhDb250aWd1b3VzKSwgMCk7CiAgICAgaWYgKCFwYXJ0cykKICAgICAgICAgcmV0
dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKLSAgICB1bnNp
Z25lZCBpbmRleCA9IDA7CiAKLSAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQu
ZGF0YSgpLCByZXN1bHRMZW5ndGgpOwotICAgIGF1dG8gdHlwZVByb3BlcnR5TmFtZSA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0eXBlIik7Ci0gICAgYXV0byBsaXRlcmFsU3RyaW5nID0g
anNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfcyk7Ci0KLSAgICBpbnQzMl90IGN1cnJl
bnRJbmRleCA9IDA7Ci0gICAgd2hpbGUgKGN1cnJlbnRJbmRleCA8IHJlc3VsdExlbmd0aCkgewot
ICAgICAgICBhdXRvIHN0YXJ0SW5kZXggPSBjdXJyZW50SW5kZXg7Ci0gICAgICAgIGF1dG8gZmll
bGRUeXBlID0gZmllbGRzW2N1cnJlbnRJbmRleF0udHlwZTsKLSAgICAgICAgd2hpbGUgKGN1cnJl
bnRJbmRleCA8IHJlc3VsdExlbmd0aCAmJiBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlID09IGZp
ZWxkVHlwZSkKLSAgICAgICAgICAgICsrY3VycmVudEluZGV4OwotICAgICAgICBhdXRvIHBhcnRU
eXBlID0gZmllbGRUeXBlID09IGxpdGVyYWxGaWVsZFR5cGUgPyBsaXRlcmFsU3RyaW5nIDoganNT
dHJpbmcodm0sIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwg
dmFsdWUpKTsKLSAgICAgICAgYXV0byBwYXJ0VmFsdWUgPSBqc1N1YnN0cmluZyh2bSwgcmVzdWx0
U3RyaW5nLCBzdGFydEluZGV4LCBjdXJyZW50SW5kZXggLSBzdGFydEluZGV4KTsKLSAgICAgICAg
SlNPYmplY3QqIHBhcnQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwotICAg
ICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHR5cGVQcm9wZXJ0eU5hbWUsIHBhcnRUeXBlKTsKLSAg
ICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwgcGFydFZh
bHVlKTsKLSAgICAgICAgcGFydHMtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgr
KywgcGFydCk7Ci0gICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAg
fQorICAgIGZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIHZhbHVlLCByZXN1bHRT
dHJpbmcsIGZpZWxkSXRyLmdldCgpLCBwYXJ0cyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAogICAgIHJldHVybiBwYXJ0czsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaAppbmRleCAyYjA2ZjA3ZmNhZjRjZGI3
ZWM5OTQ4ZGFhZjZkMzYxOTM3ODdhZDkxLi45ZjEwYjVkNDM2NzBiOGRlMmY2ZjQwZTRkNzczMzg1
ZTM1NmYxODAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBB
bmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTcsMTIgKzU4LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIGlu
aXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpT
VmFsdWUgb3B0aW9uc1ZhbHVlKTsKICAgICBKU1ZhbHVlIGZvcm1hdChKU0dsb2JhbE9iamVjdCos
IGRvdWJsZSk7CiAgICAgSlNWYWx1ZSBmb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBKU0JpZ0ludCop
OwotICAgIEpTVmFsdWUgZm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCosIGRvdWJsZSB2YWx1
ZSk7CisgICAgSlNWYWx1ZSBmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlKTsK
ICAgICBKU09iamVjdCogcmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICBK
U0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZvcm1h
dC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Qm91bmRGb3JtYXQoVk0mLCBKU0JvdW5kRnVuY3Rpb24q
KTsKIAorICAgIHN0YXRpYyB2b2lkIGZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVj
dCosIGRvdWJsZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQsIFVGaWVsZFBvc2l0aW9uSXRlcmF0
b3IqLCBKU0FycmF5KiwgSlNTdHJpbmcqIHVuaXQgPSBudWxscHRyKTsKKwogcHJvdGVjdGVkOgog
ICAgIEludGxOdW1iZXJGb3JtYXQoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3Qu
Y3BwCmluZGV4IGZiMmJiNWI2OTJjY2VjMDBlMWU0YWI3NjQyNDU3ZTExMWE2MjMzNTEuLjU3YjU5
NmQxZWEyNGUyZmE4MzlmNTQ1MmQ1ZWVmMDcyYTY3YjdiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0yLDYgKzIsNyBAQAogICogQ29weXJp
Z2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKICAq
IENvcHlyaWdodCAoQykgMjAxNSBTdWtvbHNhayBTYWtzaHV3b25nIChzdWtvbHNha0BnbWFpbC5j
b20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5t
ZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksMTUgKzQwLDE1
IEBACiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIklu
dGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlLmgiCisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgi
CisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
Ikxvb2t1cC5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk9wdGlv
bnMuaCIKICNpbmNsdWRlIDx1bmljb2RlL3Vjb2wuaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VkYXQu
aD4KICNpbmNsdWRlIDx1bmljb2RlL3Vsb2MuaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4K
ICNpbmNsdWRlIDx1bmljb2RlL3VudW1zeXMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgogI2luY2x1ZGUgPHd0Zi9MYW5ndWFnZS5oPgpAQCAtMTE0LDE3ICsxMTUsMjYgQEAgc3RydWN0
IE1hdGNoZXJSZXN1bHQgewogY29uc3QgQ2xhc3NJbmZvIEludGxPYmplY3Q6OnNfaW5mbyA9IHsg
Ik9iamVjdCIsICZCYXNlOjpzX2luZm8sICZpbnRsT2JqZWN0VGFibGUsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSW50bE9iamVjdCkgfTsKIAogSW50bE9iamVjdDo6SW50bE9iamVjdChW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwg
c3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogewogfQogCi1JbnRsT2JqZWN0
KiBJbnRsT2JqZWN0OjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK0ludGxP
YmplY3QqIEludGxPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIEludGxPYmplY3QqIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxPYmplY3Q+KHZtLmhlYXApKSBJbnRsT2Jq
ZWN0KHZtLCBzdHJ1Y3R1cmUpOwotICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIG9i
amVjdDsKIH0KIAordm9pZCBJbnRsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIGlmIChPcHRpb25zOjp1c2VJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KCkpIHsKKyAgICAg
ICAgYXV0byogcmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IgPSBJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5m
dW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5
cGUqPihnbG9iYWxPYmplY3QtPnJlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZSgpLT5zdG9yZWRQ
cm90b3R5cGVPYmplY3QoKSkpOworICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+UmVsYXRpdmVUaW1lRm9ybWF0LCByZWxhdGl2ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOworICAgIH0KK30KKwogU3RydWN0dXJlKiBJbnRsT2JqZWN0OjpjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKIHsKICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CkBAIC0xNjQsMjYgKzE3NCw3IEBAIHN0YXRpYyB2b2lkIGFkZE1pc3NpbmdTY3JpcHRMb2NhbGVz
KEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcykKICAgICAgICAgYXZhaWxhYmxlTG9j
YWxlcy5hZGQoemhfVFdfU3RyaW5nLmdldCgpKTsKIH0KIAotY29uc3QgSGFzaFNldDxTdHJpbmc+
JiBpbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBjYWNoZWRBdmFpbGFibGVMb2NhbGVzOwotICAgIEhhc2hT
ZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcyA9IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXMuZ2V0
KCk7Ci0KLSAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7Ci0gICAgc3Rk
OjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2UsIFsmXSB7Ci0gICAgICAgIEFTU0VSVChhdmFpbGFi
bGVMb2NhbGVzLmlzRW1wdHkoKSk7Ci0gICAgICAgIGludDMyX3QgY291bnQgPSB1Y29sX2NvdW50
QXZhaWxhYmxlKCk7Ci0gICAgICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IGNvdW50OyArK2kp
IHsKLSAgICAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBjb252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xh
bmd1YWdlVGFnKHVjb2xfZ2V0QXZhaWxhYmxlKGkpKTsKLSAgICAgICAgICAgIGlmICghbG9jYWxl
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBhdmFpbGFibGVMb2NhbGVzLmFkZChsb2NhbGUp
OwotICAgICAgICB9Ci0gICAgICAgIGFkZE1pc3NpbmdTY3JpcHRMb2NhbGVzKGF2YWlsYWJsZUxv
Y2FsZXMpOwotICAgIH0pOwotICAgIHJldHVybiBhdmFpbGFibGVMb2NhbGVzOwotfQotCi1jb25z
dCBIYXNoU2V0PFN0cmluZz4mIGludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKQor
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpCiB7CiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gY2FjaGVkQXZhaWxhYmxlTG9jYWxl
czsKICAgICBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMgPSBjYWNoZWRBdmFpbGFi
bGVMb2NhbGVzLmdldCgpOwpAQCAtMTkxLDkgKzE4Miw5IEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5n
PiYgaW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpCiAgICAgc3RhdGljIHN0ZDo6
b25jZV9mbGFnIGluaXRpYWxpemVPbmNlOwogICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVP
bmNlLCBbJl0gewogICAgICAgICBBU1NFUlQoYXZhaWxhYmxlTG9jYWxlcy5pc0VtcHR5KCkpOwot
ICAgICAgICBpbnQzMl90IGNvdW50ID0gdWRhdF9jb3VudEF2YWlsYWJsZSgpOworICAgICAgICBp
bnQzMl90IGNvdW50ID0gdWxvY19jb3VudEF2YWlsYWJsZSgpOwogICAgICAgICBmb3IgKGludDMy
X3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgbG9jYWxlID0g
Y29udmVydElDVUxvY2FsZVRvQkNQNDdMYW5ndWFnZVRhZyh1ZGF0X2dldEF2YWlsYWJsZShpKSk7
CisgICAgICAgICAgICBTdHJpbmcgbG9jYWxlID0gY29udmVydElDVUxvY2FsZVRvQkNQNDdMYW5n
dWFnZVRhZyh1bG9jX2dldEF2YWlsYWJsZShpKSk7CiAgICAgICAgICAgICBpZiAoIWxvY2FsZS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgYXZhaWxhYmxlTG9jYWxlcy5hZGQobG9jYWxlKTsK
ICAgICAgICAgfQpAQCAtMjAyLDcgKzE5Myw3IEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50
bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpCiAgICAgcmV0dXJuIGF2YWlsYWJsZUxv
Y2FsZXM7CiB9CiAKLWNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bE51bWJlckZvcm1hdEF2YWls
YWJsZUxvY2FsZXMoKQorY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsQ29sbGF0b3JBdmFpbGFi
bGVMb2NhbGVzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+
PiBjYWNoZWRBdmFpbGFibGVMb2NhbGVzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxl
TG9jYWxlcyA9IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXMuZ2V0KCk7CkBAIC0yMTAsOSArMjAxLDkg
QEAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxl
cygpCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlOwogICAgIHN0ZDo6
Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlLCBbJl0gewogICAgICAgICBBU1NFUlQoYXZhaWxhYmxl
TG9jYWxlcy5pc0VtcHR5KCkpOwotICAgICAgICBpbnQzMl90IGNvdW50ID0gdW51bV9jb3VudEF2
YWlsYWJsZSgpOworICAgICAgICBpbnQzMl90IGNvdW50ID0gdWNvbF9jb3VudEF2YWlsYWJsZSgp
OwogICAgICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAg
ICAgICBTdHJpbmcgbG9jYWxlID0gY29udmVydElDVUxvY2FsZVRvQkNQNDdMYW5ndWFnZVRhZyh1
bnVtX2dldEF2YWlsYWJsZShpKSk7CisgICAgICAgICAgICBTdHJpbmcgbG9jYWxlID0gY29udmVy
dElDVUxvY2FsZVRvQkNQNDdMYW5ndWFnZVRhZyh1Y29sX2dldEF2YWlsYWJsZShpKSk7CiAgICAg
ICAgICAgICBpZiAoIWxvY2FsZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgYXZhaWxhYmxl
TG9jYWxlcy5hZGQobG9jYWxlKTsKICAgICAgICAgfQpAQCAtMzI4LDEzICszMTksMTUgQEAgYm9v
bCBpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShTdHJpbmdWaWV3IHN0cmluZykKIHsKICAg
ICBBU1NFUlQoIXN0cmluZy5pc051bGwoKSk7CiAKLSAgICBhdXRvIGxlbmd0aCA9IHN0cmluZy5s
ZW5ndGgoKTsKLSAgICBpZiAobGVuZ3RoIDwgMyB8fCBsZW5ndGggPiA4KQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICBmb3IgKGF1dG8gY2hhcmFjdGVyIDogc3RyaW5nLmNvZGVVbml0cygp
KSB7Ci0gICAgICAgIGlmICghaXNBU0NJSUFscGhhbnVtZXJpYyhjaGFyYWN0ZXIpKQorICAgIGZv
ciAoYXV0byBwYXJ0IDogc3RyaW5nLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJy0nKSkgewor
ICAgICAgICBhdXRvIGxlbmd0aCA9IHBhcnQubGVuZ3RoKCk7CisgICAgICAgIGlmIChsZW5ndGgg
PCAzIHx8IGxlbmd0aCA+IDgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
Zm9yIChhdXRvIGNoYXJhY3RlciA6IHBhcnQuY29kZVVuaXRzKCkpIHsKKyAgICAgICAgICAgIGlm
ICghaXNBU0NJSUFscGhhbnVtZXJpYyhjaGFyYWN0ZXIpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtOTc5LDgg
Kzk3Miw2IEBAIEpTVmFsdWUgc3VwcG9ydGVkTG9jYWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgSlNWYWx1ZSgpKTsKIAogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjOwotICAg
IGRlc2Muc2V0Q29uZmlndXJhYmxlKGZhbHNlKTsKLSAgICBkZXNjLnNldFdyaXRhYmxlKGZhbHNl
KTsKIAogICAgIHNpemVfdCBsZW4gPSBrZXlzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbjsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0LmgKaW5kZXggNjBjMDAyNTAxOWNjMGY3MTE2YzkzNzczNDhhNDM0ZTIxZGY1ZDJlZi4uNmFm
NmY3MzlmZDNjOWMyYmJiMzcxZDZjMGJjMzYyMzU5YWFiYjE4YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQog
ICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJ
bmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDIwICs0NCwyMyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgSW50bE9iamVjdCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGlj
IEludGxPYmplY3QqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAogcHJpdmF0ZToKICAgICBJbnRsT2Jq
ZWN0KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0Kik7CiB9OwogCiBTdHJpbmcgZGVmYXVsdExvY2FsZShKU0dsb2JhbE9iamVjdCop
OworY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOwogY29uc3Qg
SGFzaFNldDxTdHJpbmc+JiBpbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKCk7Ci1jb25zdCBI
YXNoU2V0PFN0cmluZz4mIGludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKLWNv
bnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsK
LWlubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxQbHVyYWxSdWxlc0F2YWlsYWJsZUxv
Y2FsZXMoKSB7IHJldHVybiBpbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOyB9Citp
bmxpbmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVM
b2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQoraW5saW5lIGNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiYgaW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKSB7IHJl
dHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CitpbmxpbmUgY29uc3QgSGFzaFNldDxTdHJp
bmc+JiBpbnRsUGx1cmFsUnVsZXNBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWls
YWJsZUxvY2FsZXMoKTsgfQoraW5saW5lIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bFJlbGF0
aXZlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxlTG9j
YWxlcygpOyB9CiAKIGJvb2wgaW50bEJvb2xlYW5PcHRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlIG9wdGlvbnMsIFByb3BlcnR5TmFtZSwgYm9vbCYgdXNlc0ZhbGxiYWNrKTsKIFN0cmluZyBp
bnRsU3RyaW5nT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zLCBQcm9wZXJ0
eU5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gdmFsdWVzLCBjb25zdCBj
aGFyKiBub3RGb3VuZCwgY29uc3QgY2hhciogZmFsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKaW5kZXggYzBiNmU0ZWFkZTFh
ZDAwNDNjMzVkYzliNjU5MDZlMGZjMWM1Y2EyNS4uODc3MTYwMTIyODRjODFhZGMzOTI3YzYzMWQ0
YzM1ODdhMjAxYWI4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUGx1cmFsUnVsZXMuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBJbnRsUGx1cmFsUnVs
ZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFN0cmluZyB0eXBlU3RyaW5nID0g
aW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJ0eXBlIiksIHsgImNhcmRpbmFsIiwgIm9yZGluYWwiIH0sICJ0eXBlIG11c3Qg
YmUgXCJjYXJkaW5hbFwiIG9yIFwib3JkaW5hbFwiIiwgImNhcmRpbmFsIik7CisgICAgU3RyaW5n
IHR5cGVTdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0u
cHJvcGVydHlOYW1lcy0+dHlwZSwgeyAiY2FyZGluYWwiLCAib3JkaW5hbCIgfSwgInR5cGUgbXVz
dCBiZSBcImNhcmRpbmFsXCIgb3IgXCJvcmRpbmFsXCIiLCAiY2FyZGluYWwiKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIG1fdHlwZSA9IHR5cGVTdHJpbmcg
PT0gIm9yZGluYWwiID8gVVBMVVJBTF9UWVBFX09SRElOQUwgOiBVUExVUkFMX1RZUEVfQ0FSRElO
QUw7CiAKQEAgLTIwMSw3ICsyMDEsNyBAQCBKU09iamVjdCogSW50bFBsdXJhbFJ1bGVzOjpyZXNv
bHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIEpTT2JqZWN0
KiBvcHRpb25zID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZSwganNOb250cml2aWFs
U3RyaW5nKHZtLCBtX2xvY2FsZSkpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX3R5
cGUgPT0gVVBMVVJBTF9UWVBFX09SRElOQUwgPyAib3JkaW5hbCJfcyA6ICJjYXJkaW5hbCJfcykp
OworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwganNO
b250cml2aWFsU3RyaW5nKHZtLCBtX3R5cGUgPT0gVVBMVVJBTF9UWVBFX09SRElOQUwgPyAib3Jk
aW5hbCJfcyA6ICJjYXJkaW5hbCJfcykpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1JbnRlZ2VyRGlnaXRzIiksIGpzTnVtYmVy
KG1fbWluaW11bUludGVnZXJEaWdpdHMpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwganNOdW1i
ZXIobV9taW5pbXVtRnJhY3Rpb25EaWdpdHMpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0s
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwganNO
dW1iZXIobV9tYXhpbXVtRnJhY3Rpb25EaWdpdHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjljY2EwNTJkYjI3ZjY2Nzc3OGMzMWE1YTM3YzM1NWE4MjdmZjhmMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3Jt
YXQuY3BwCkBAIC0wLDAgKzEsMzUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkg
SW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCisKKyNpbmNsdWRlICJF
cnJvci5oIgorI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVj
dG9yLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bFJlbGF0aXZl
VGltZUZvcm1hdDo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KSB9Owor
CituYW1lc3BhY2UgSW50bFJURkludGVybmFsIHsKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBy
ZWxldmFudEV4dGVuc2lvbktleXNbMV0gPSB7ICJudSIgfTsKK30KKwordm9pZCBJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0OjpVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9y
KCkoVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIqIHJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIp
IGNvbnN0Cit7CisgICAgaWYgKHJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIpCisgICAgICAgIHVy
ZWxkYXRlZm10X2Nsb3NlKHJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIpOworfQorCit2b2lkIElu
dGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OlVOdW1iZXJGb3JtYXREZWxldGVyOjpvcGVyYXRvcigpKFVO
dW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCkgY29uc3QKK3sKKyAgICBpZiAobnVtYmVyRm9ybWF0
KQorICAgICAgICB1bnVtX2Nsb3NlKG51bWJlckZvcm1hdCk7Cit9CisKK3ZvaWQgSW50bFJlbGF0
aXZlVGltZUZvcm1hdDo6VUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCko
VUZpZWxkUG9zaXRpb25JdGVyYXRvciogaXRlcmF0b3IpIGNvbnN0Cit7CisgICAgaWYgKGl0ZXJh
dG9yKQorICAgICAgICB1ZmllbGRwb3NpdGVyX2Nsb3NlKGl0ZXJhdG9yKTsKK30KKworSW50bFJl
bGF0aXZlVGltZUZvcm1hdCogSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdCogZm9y
bWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFJlbGF0aXZlVGltZUZvcm1hdD4o
dm0uaGVhcCkpIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQodm0sIHN0cnVjdHVyZSk7CisgICAgZm9y
bWF0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGZvcm1hdDsKK30KKworU3RydWN0
dXJlKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQ6OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Cit9CisK
K3ZvaWQgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SW50bFJlbGF0aXZlVGltZUZvcm1hdCo+KGNlbGwpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKworICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Cit9CisKK25hbWVzcGFjZSBJbnRs
UlRGSW50ZXJuYWwgeworc3RhdGljIFZlY3RvcjxTdHJpbmc+IGxvY2FsZURhdGEoY29uc3QgU3Ry
aW5nJiBsb2NhbGUsIHNpemVfdCBrZXlJbmRleCkKK3sKKyAgICAvLyBUaGUgaW5kZXggb2YgdGhl
IGV4dGVuc2lvbiBrZXkgIm51IiBpbiByZWxldmFudEV4dGVuc2lvbktleXMgaXMgMC4KKyAgICBB
U1NFUlRfVU5VU0VEKGtleUluZGV4LCAha2V5SW5kZXgpOyAKKyAgICByZXR1cm4gbnVtYmVyaW5n
U3lzdGVtc0ZvckxvY2FsZShsb2NhbGUpOworfQorfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLUluaXRpYWxpemVSZWxhdGl2ZVRpbWVGb3JtYXQKK3ZvaWQgSW50bFJlbGF0aXZl
VGltZUZvcm1hdDo6aW5pdGlhbGl6ZVJlbGF0aXZlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVz
ID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdChnbG9iYWxPYmplY3QsIGxvY2FsZXMpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU09iamVjdCogb3B0aW9u
czsKKyAgICBpZiAob3B0aW9uc1ZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIG9wdGlvbnMg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2Jq
ZWN0U3RydWN0dXJlKCkpOworICAgIGVsc2UgeworICAgICAgICBvcHRpb25zID0gb3B0aW9uc1Zh
bHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CisgICAgfQorCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gb3B0
OworICAgIFN0cmluZyBsb2NhbGVNYXRjaGVyID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZU1hdGNoZXIsIHsgImxvb2t1cCIs
ICJiZXN0IGZpdCIgfSwgImxvY2FsZU1hdGNoZXIgbXVzdCBiZSBlaXRoZXIgXCJsb29rdXBcIiBv
ciBcImJlc3QgZml0XCIiLCAiYmVzdCBmaXQiKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworICAgIG9wdC5hZGQodm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlTWF0Y2hl
ci5zdHJpbmcoKSwgbG9jYWxlTWF0Y2hlcik7CisKKyAgICBTdHJpbmcgbnVtYmVyaW5nU3lzdGVt
ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFt
ZXMtPm51bWJlcmluZ1N5c3RlbSwgeyB9LCBudWxscHRyLCBudWxscHRyKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGlmICghbnVtYmVyaW5nU3lzdGVtLmlz
TnVsbCgpKSB7CisgICAgICAgIGlmICghaXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUobnVt
YmVyaW5nU3lzdGVtKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJudW1iZXJpbmdTeXN0ZW0gaXMgbm90IGEgd2VsbC1mb3JtZWQgbnVtYmVyaW5n
IHN5c3RlbSB2YWx1ZSJfcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgb3B0LmFkZCgibnUiX3MsIG51bWJlcmluZ1N5c3RlbSk7CisgICAgfQorCisgICAgY29uc3Qg
SGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzID0gaW50bFJlbGF0aXZlVGltZUZvcm1h
dEF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiByZXNvbHZl
ZCA9IHJlc29sdmVMb2NhbGUoZ2xvYmFsT2JqZWN0LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0
ZWRMb2NhbGVzLCBvcHQsIEludGxSVEZJbnRlcm5hbDo6cmVsZXZhbnRFeHRlbnNpb25LZXlzLCBX
VEZfQVJSQVlfTEVOR1RIKEludGxSVEZJbnRlcm5hbDo6cmVsZXZhbnRFeHRlbnNpb25LZXlzKSwg
SW50bFJURkludGVybmFsOjpsb2NhbGVEYXRhKTsKKyAgICBtX2xvY2FsZSA9IHJlc29sdmVkLmdl
dCh2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUuc3RyaW5nKCkpOworICAgIGlmIChtX2xvY2FsZS5p
c0VtcHR5KCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBpbml0aWFsaXplIFJlbGF0aXZlVGltZUZvcm1hdCBkdWUgdG8gaW52YWxpZCBs
b2NhbGUiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9udW1iZXJpbmdTeXN0
ZW0gPSByZXNvbHZlZC5nZXQoIm51Il9zKTsKKyAgICBDU3RyaW5nIGRhdGFMb2NhbGVXaXRoRXh0
ZW5zaW9ucyA9IG1ha2VTdHJpbmcocmVzb2x2ZWQuZ2V0KCJkYXRhTG9jYWxlIl9zKSwgIi11LW51
LSIsIG1fbnVtYmVyaW5nU3lzdGVtKS51dGY4KCk7CisKKyAgICBTdHJpbmcgc3R5bGUgPSBpbnRs
U3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+c3R5
bGUsIHsgImxvbmciLCAic2hvcnQiLCAibmFycm93IiB9LCAic3R5bGUgbXVzdCBiZSBlaXRoZXIg
XCJsb25nXCIsIFwic2hvcnRcIiwgb3IgXCJuYXJyb3dcIiIsICJsb25nIik7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAoc3R5bGUgPT0gImxvbmciKQor
ICAgICAgICBtX3N0eWxlID0gVURBVF9TVFlMRV9MT05HOworICAgIGVsc2UgaWYgKHN0eWxlID09
ICJzaG9ydCIpCisgICAgICAgIG1fc3R5bGUgPSBVREFUX1NUWUxFX1NIT1JUOworICAgIGVsc2Ug
aWYgKHN0eWxlID09ICJuYXJyb3ciKQorICAgICAgICBtX3N0eWxlID0gVURBVF9TVFlMRV9OQVJS
T1c7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIFN0cmlu
ZyBudW1lcmljID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnBy
b3BlcnR5TmFtZXMtPm51bWVyaWMsIHsgImFsd2F5cyIsICJhdXRvIiB9LCAibnVtZXJpYyBtdXN0
IGJlIGVpdGhlciBcImFsd2F5c1wiIG9yIFwiYXV0b1wiIiwgImFsd2F5cyIpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgbV9udW1lcmljID0gKG51bWVyaWMg
PT0gImFsd2F5cyIpOworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Cisg
ICAgbV9udW1iZXJGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJl
ckZvcm1hdERlbGV0ZXI+KHVudW1fb3BlbihVTlVNX0RFQ0lNQUwsIG51bGxwdHIsIDAsIGRhdGFM
b2NhbGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBpZiAo
VU5MSUtFTFkoVV9GQUlMVVJFKHN0YXR1cykpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBSZWxhdGl2ZVRpbWVGb3Jt
YXQiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9yZWxhdGl2ZURhdGVUaW1l
Rm9ybWF0dGVyID0gc3RkOjp1bmlxdWVfcHRyPFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyLCBV
UmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXI+KHVyZWxkYXRlZm10X29wZW4oZGF0YUxv
Y2FsZVdpdGhFeHRlbnNpb25zLmRhdGEoKSwgbV9udW1iZXJGb3JtYXQuZ2V0KCksIG1fc3R5bGUs
IFVESVNQQ1RYX0NBUElUQUxJWkFUSU9OX0ZPUl9TVEFOREFMT05FLCAmc3RhdHVzKSk7CisgICAg
aWYgKFVOTElLRUxZKFVfRkFJTFVSRShzdGF0dXMpKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1l
Rm9ybWF0Il9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworc3RhdGljIEFTQ0lJTGl0
ZXJhbCBzdHlsZVN0cmluZyhVRGF0ZVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJTdHlsZSBzdHls
ZSkKK3sKKyAgICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgY2FzZSBVREFUX1NUWUxFX0xPTkc6Cisg
ICAgICAgIHJldHVybiAibG9uZyJfczsKKyAgICBjYXNlIFVEQVRfU1RZTEVfU0hPUlQ6CisgICAg
ICAgIHJldHVybiAic2hvcnQiX3M7CisgICAgY2FzZSBVREFUX1NUWUxFX05BUlJPVzoKKyAgICAg
ICAgcmV0dXJuICJuYXJyb3ciX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworc3RhdGljIEFTQ0lJTGl0ZXJh
bCBudW1lcmljU3RyaW5nKGJvb2wgbnVtZXJpYykKK3sKKyAgICByZXR1cm4gbnVtZXJpYyA/ICJh
bHdheXMiX3MgOiAiYXV0byJfczsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3Nl
Yy1pbnRsLnJlbGF0aXZldGltZWZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCitKU09i
amVjdCogSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0
KiBvcHRpb25zID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZSwganNOb250cml2aWFs
U3RyaW5nKHZtLCBtX2xvY2FsZSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+c3R5bGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc3R5bGVTdHJpbmcobV9z
dHlsZSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm51
bWVyaWMsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbnVtZXJpY1N0cmluZyhtX251bWVyaWMpKSk7
CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5udW1iZXJpbmdT
eXN0ZW0sIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV9udW1iZXJpbmdTeXN0ZW0pKTsKKyAgICBy
ZXR1cm4gb3B0aW9uczsKK30KKworc3RhdGljIFN0cmluZ1ZpZXcgc2luZ3VsYXJVbml0KFN0cmlu
Z1ZpZXcgdW5pdCkKK3sKKyAgICAvLyBQbHVyYWxzIGFyZSBhbGxvd2VkLCBidXQgdGhhbmtmdWxs
eSB0aGV5J3JlIGFsbCBqdXN0IGEgc2ltcGxlIC1zLgorICAgIHJldHVybiB1bml0LmVuZHNXaXRo
KCJzIikgPyB1bml0LmxlZnQodW5pdC5sZW5ndGgoKSAtIDEpIDogdW5pdDsKK30KKworLy8gaHR0
cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1zaW5ndWxhcnJlbGF0aXZldGltZXVuaXQKK3N0YXRp
YyBPcHRpb25hbDxVUmVsYXRpdmVEYXRlVGltZVVuaXQ+IHJlbGF0aXZlVGltZVVuaXRUeXBlKFN0
cmluZ1ZpZXcgdW5pdCkKK3sKKyAgICBTdHJpbmdWaWV3IHNpbmd1bGFyID0gc2luZ3VsYXJVbml0
KHVuaXQpOworCisgICAgaWYgKHNpbmd1bGFyID09ICJzZWNvbmQiKQorICAgICAgICByZXR1cm4g
VURBVF9SRUxfVU5JVF9TRUNPTkQ7CisgICAgaWYgKHNpbmd1bGFyID09ICJtaW51dGUiKQorICAg
ICAgICByZXR1cm4gVURBVF9SRUxfVU5JVF9NSU5VVEU7CisgICAgaWYgKHNpbmd1bGFyID09ICJo
b3VyIikKKyAgICAgICAgcmV0dXJuIFVEQVRfUkVMX1VOSVRfSE9VUjsKKyAgICBpZiAoc2luZ3Vs
YXIgPT0gImRheSIpCisgICAgICAgIHJldHVybiBVREFUX1JFTF9VTklUX0RBWTsKKyAgICBpZiAo
c2luZ3VsYXIgPT0gIndlZWsiKQorICAgICAgICByZXR1cm4gVURBVF9SRUxfVU5JVF9XRUVLOwor
ICAgIGlmIChzaW5ndWxhciA9PSAibW9udGgiKQorICAgICAgICByZXR1cm4gVURBVF9SRUxfVU5J
VF9NT05USDsKKyAgICBpZiAoc2luZ3VsYXIgPT0gInF1YXJ0ZXIiKQorICAgICAgICByZXR1cm4g
VURBVF9SRUxfVU5JVF9RVUFSVEVSOworICAgIGlmIChzaW5ndWxhciA9PSAieWVhciIpCisgICAg
ICAgIHJldHVybiBVREFUX1JFTF9VTklUX1lFQVI7CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworfQorCitTdHJpbmcgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0SW50ZXJuYWwoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlLCBTdHJpbmdWaWV3IHVuaXQp
Cit7CisgICAgQVNTRVJUKG1fcmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlcik7CisKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkgeworICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm51bWJlciBhcmd1bWVudCBtdXN0
IGJlIGZpbml0ZSJfcyk7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyAgICBh
dXRvIHVuaXRUeXBlID0gcmVsYXRpdmVUaW1lVW5pdFR5cGUodW5pdCk7CisgICAgaWYgKCF1bml0
VHlwZSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVu
aXQgYXJndW1lbnQgaXMgbm90IGEgcmVjb2duaXplZCB1bml0IHR5cGUiX3MpOworICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisgICAgfQorCisgICAgYXV0byBmb3JtYXRSZWxhdGl2ZVRpbWUgPSBt
X251bWVyaWMgPyB1cmVsZGF0ZWZtdF9mb3JtYXROdW1lcmljIDogdXJlbGRhdGVmbXRfZm9ybWF0
OworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgVmVjdG9yPFVD
aGFyLCAzMj4gcmVzdWx0KDMyKTsKKyAgICBhdXRvIHJlc3VsdExlbmd0aCA9IGZvcm1hdFJlbGF0
aXZlVGltZShtX3JlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCB1bml0VHlw
ZS52YWx1ZSgpLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCAmc3RhdHVzKTsKKyAgICBp
ZiAoc3RhdHVzID09IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKSB7CisgICAgICAgIHN0YXR1cyA9
IFVfWkVST19FUlJPUjsKKyAgICAgICAgcmVzdWx0Lmdyb3cocmVzdWx0TGVuZ3RoKTsKKyAgICAg
ICAgZm9ybWF0UmVsYXRpdmVUaW1lKG1fcmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlci5nZXQoKSwg
dmFsdWUsIHVuaXRUeXBlLnZhbHVlKCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCwgJnN0
YXR1cyk7CisgICAgfQorICAgIGlmIChVTkxJS0VMWShVX0ZBSUxVUkUoc3RhdHVzKSkpIHsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3Jt
YXQgcmVsYXRpdmUgdGltZSJfcyk7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisK
KyAgICByZXR1cm4gU3RyaW5nKHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCk7Cit9CisKKy8v
IGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtRm9ybWF0UmVsYXRpdmVUaW1lCitKU1ZhbHVl
IEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBkb3VibGUgdmFsdWUsIFN0cmluZ1ZpZXcgdW5pdCkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgU3RyaW5nIHJlc3VsdCA9IGZvcm1hdEludGVybmFsKGdsb2JhbE9iamVjdCwgdmFs
dWUsIHVuaXQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBy
ZXR1cm4ganNTdHJpbmcodm0sIHJlc3VsdCk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21h
NDAyLyNzZWMtRm9ybWF0UmVsYXRpdmVUaW1lVG9QYXJ0cworSlNWYWx1ZSBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRv
dWJsZSB2YWx1ZSwgU3RyaW5nVmlldyB1bml0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBTdHJpbmcgZm9ybWF0dGVkUmVsYXRpdmVUaW1lID0gZm9ybWF0SW50ZXJuYWwoZ2xvYmFsT2Jq
ZWN0LCB2YWx1ZSwgdW5pdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gaXRlcmF0
b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZpZWxkUG9zaXRpb25JdGVyYXRvciwgVUZpZWxkUG9zaXRp
b25JdGVyYXRvckRlbGV0ZXI+KHVmaWVsZHBvc2l0ZXJfb3Blbigmc3RhdHVzKSk7CisgICAgQVNT
RVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKKworICAgIGRvdWJsZSBhYnNWYWx1ZSA9IHN0ZDo6YWJz
KHZhbHVlKTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcigzMik7CisgICAgYXV0byBu
dW1iZXJMZW5ndGggPSB1bnVtX2Zvcm1hdERvdWJsZUZvckZpZWxkcyhtX251bWJlckZvcm1hdC5n
ZXQoKSwgYWJzVmFsdWUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIGl0ZXJhdG9yLmdl
dCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoc3RhdHVzID09IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9S
KSB7CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgYnVmZmVyLmdyb3co
bnVtYmVyTGVuZ3RoKTsKKyAgICAgICAgdW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMobV9udW1i
ZXJGb3JtYXQuZ2V0KCksIGFic1ZhbHVlLCBidWZmZXIuZGF0YSgpLCBudW1iZXJMZW5ndGgsIGl0
ZXJhdG9yLmdldCgpLCAmc3RhdHVzKTsKKyAgICB9CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBmb3JtYXQgcmVsYXRpdmUgdGltZSJfcyk7CisKKyAgICBhdXRvIGZvcm1hdHRlZE51
bWJlciA9IFN0cmluZyhidWZmZXIuZGF0YSgpLCBudW1iZXJMZW5ndGgpOworCisgICAgSlNBcnJh
eSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMp
LCAwKTsKKyAgICBpZiAoIXBhcnRzKQorICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOworCisgICAgSlNTdHJpbmcqIGxpdGVyYWxTdHJpbmcg
PSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJsaXRlcmFsIl9zKTsKKworICAgIC8vIFdlIG9ubHkg
aGF2ZSBvbmUgaW5wdXQgbnVtYmVyLCBzbyBvdXIgcmVsYXRpdmUgdGltZSB3aWxsIGhhdmUgYXQg
bW9zdCBvbmUgbnVtZXJpYyBzdWJzdHJpbmcsCisgICAgLy8gYnV0IHdlIG5lZWQgdG8gbGlzdCBh
bGwgb2YgdGhlIG51bWVyaWMgcGFydHMgc2VwYXJhdGVseS4KKyAgICBzaXplX3QgbnVtYmVyRW5k
ID0gMDsKKyAgICBzaXplX3QgbnVtYmVyU3RhcnQgPSBmb3JtYXR0ZWRSZWxhdGl2ZVRpbWUuZmlu
ZChmb3JtYXR0ZWROdW1iZXIpOworICAgIGlmIChudW1iZXJTdGFydCAhPSBub3RGb3VuZCkgewor
ICAgICAgICBudW1iZXJFbmQgPSBudW1iZXJTdGFydCArIG51bWJlckxlbmd0aDsKKworICAgICAg
ICAvLyBBZGQgaW5pdGlhbCBsaXRlcmFsIGlmIHRoZXJlIGlzIG9uZS4KKyAgICAgICAgaWYgKG51
bWJlclN0YXJ0KSB7CisgICAgICAgICAgICBKU09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnR5cGUsIGxpdGVyYWxTdHJpbmcpOworICAgICAgICAgICAgcGFydC0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwganNTdWJzdHJpbmcodm0sIGZv
cm1hdHRlZFJlbGF0aXZlVGltZSwgMCwgbnVtYmVyU3RhcnQpKTsKKyAgICAgICAgICAgIHBhcnRz
LT5wdXNoKGdsb2JhbE9iamVjdCwgcGFydCk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworICAgICAgICB9CisKKyAgICAgICAgSW50bE51bWJlckZvcm1hdDo6
Zm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgYWJzVmFsdWUsIGZvcm1hdHRlZE51
bWJlciwgaXRlcmF0b3IuZ2V0KCksIHBhcnRzLCBqc1N0cmluZyh2bSwgc2luZ3VsYXJVbml0KHVu
aXQpLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKyAgICB9CisKKyAgICAvLyBBZGQgZmluYWwgbGl0ZXJhbCBpZiB0aGVyZSBpcyBvbmUuCisg
ICAgYXV0byBzdHJpbmdMZW5ndGggPSBmb3JtYXR0ZWRSZWxhdGl2ZVRpbWUubGVuZ3RoKCk7Cisg
ICAgaWYgKG51bWJlckVuZCAhPSBzdHJpbmdMZW5ndGgpIHsKKyAgICAgICAgSlNPYmplY3QqIHBh
cnQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgICAgICBwYXJ0LT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIGxpdGVyYWxTdHJpbmcpOworICAg
ICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBqc1N1YnN0
cmluZyh2bSwgZm9ybWF0dGVkUmVsYXRpdmVUaW1lLCBudW1iZXJFbmQsIHN0cmluZ0xlbmd0aCAt
IG51bWJlckVuZCkpOworICAgICAgICBwYXJ0cy0+cHVzaChnbG9iYWxPYmplY3QsIHBhcnQpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIH0KKworICAgIHJl
dHVybiBwYXJ0czsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWViNTM5OWM4ZmEyOWZlNThmZTg2YTM0NzYyNmFlNWE2MmM2NGJmOQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3Jt
YXQuaApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50
ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3VmaWVsZHBvc2l0ZXIuaD4K
KyNpbmNsdWRlIDx1bmljb2RlL3VyZWxkYXRlZm10Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworCisgICAg
c3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOworCisgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAgICBzdGF0aWNfY2Fz
dDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Kj4oY2VsbCktPkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6
On5JbnRsUmVsYXRpdmVUaW1lRm9ybWF0KCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNl
KiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uaW50bFJlbGF0
aXZlVGltZUZvcm1hdFNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisK
KyAgICBERUNMQVJFX0lORk87CisKKyAgICB2b2lkIGluaXRpYWxpemVSZWxhdGl2ZVRpbWVGb3Jt
YXQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9ucyk7Cisg
ICAgSlNWYWx1ZSBmb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUsIFN0cmluZ1ZpZXcgdW5p
dFN0cmluZyk7CisgICAgSlNWYWx1ZSBmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiwgZG91
YmxlLCBTdHJpbmdWaWV3IHVuaXRTdHJpbmcpOworICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlv
bnMoSlNHbG9iYWxPYmplY3QqKTsKKworcHJpdmF0ZToKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAg
IFN0cmluZyBmb3JtYXRJbnRlcm5hbChKU0dsb2JhbE9iamVjdCosIGRvdWJsZSwgU3RyaW5nVmll
dyB1bml0KTsKKworICAgIHN0cnVjdCBVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXIg
eworICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIqKSBj
b25zdDsKKyAgICB9OworICAgIHN0cnVjdCBVTnVtYmVyRm9ybWF0RGVsZXRlciB7CisgICAgICAg
IHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KikgY29uc3Q7CisgICAgfTsKKyAgICBzdHJ1
Y3QgVUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXIgeworICAgICAgICB2b2lkIG9wZXJhdG9y
KCkoVUZpZWxkUG9zaXRpb25JdGVyYXRvciopIGNvbnN0OworICAgIH07CisKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8VVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIsIFVSZWxhdGl2ZURhdGVUaW1lRm9y
bWF0dGVyRGVsZXRlcj4gbV9yZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4gbV9udW1iZXJGb3Jt
YXQ7CisKKyAgICBTdHJpbmcgbV9sb2NhbGU7CisgICAgU3RyaW5nIG1fbnVtYmVyaW5nU3lzdGVt
OworICAgIFVEYXRlUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlclN0eWxlIG1fc3R5bGUgeyBVREFU
X1NUWUxFX0xPTkcgfTsKKyAgICBib29sIG1fbnVtZXJpYyB7IHRydWUgfTsKK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjY3ZmNiOTAwMTEzYzhiNTNkMzE4NzllMmZmYTAzOGRjMDgwZDJhMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0Lmgi
CisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxSZWxh
dGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiTG9va3VwLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RS
SVZJQUxMWV9ERVNUUlVDVElCTEUoSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yKTsK
Kworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFJlbGF0aXZlVGltZUZv
cm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihKU0dsb2JhbE9iamVjdCosIENh
bGxGcmFtZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bFJl
bGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRl
cm5hbEZ1bmN0aW9uOjpzX2luZm8sICZyZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclRhYmxl
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25z
dHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IubHV0LmgKK0BiZWdpbiByZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclRhYmxlCisg
IHN1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29u
c3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKK0BlbmQKKyovCisKK0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogSW50
bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSogcmVsYXRpdmVUaW1l
Rm9ybWF0UHJvdG90eXBlKQoreworICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29u
c3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9u
KHZtLCByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3Rv
cjsKK30KKworU3RydWN0dXJlKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1l
Kik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6SW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVj
dG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1
cmUsIGNhbGxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LCBjb25zdHJ1Y3RJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0KQoreworfQorCit2b2lkIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKiBy
ZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0sICJSZWxhdGl2ZVRpbWVGb3JtYXQiX3MsIE5hbWVBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1
Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUsIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAg
ICByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworfQorCisvLyBodHRwczovL3Rj
MzkuZXMvZWNtYTQwMi8jc2VjLUludGwuUmVsYXRpdmVUaW1lRm9ybWF0CitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVu
Y3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5q
c0NhbGxlZSgpLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50bFJlbGF0aXZlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKS0+cmVsYXRpdmVUaW1l
Rm9ybWF0U3RydWN0dXJlKHZtKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7CisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdCogcmVsYXRpdmVUaW1l
Rm9ybWF0ID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgIEFTU0VSVChyZWxhdGl2ZVRpbWVGb3JtYXQpOworCisgICAgc2NvcGUucmVsZWFzZSgpOwor
ICAgIHJlbGF0aXZlVGltZUZvcm1hdC0+aW5pdGlhbGl6ZVJlbGF0aXZlVGltZUZvcm1hdChnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVsYXRpdmVUaW1lRm9ybWF0KTsKK30KKwor
Ly8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLlJlbGF0aXZlVGltZUZvcm1hdAor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxSZWxhdGl2ZVRpbWVG
b3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVj
dG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJSZWxhdGl2ZVRpbWVGb3JtYXQiKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAy
LyNzZWMtSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1
bmNTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcyA9IGludGxSZWxhdGl2ZVRpbWVGb3JtYXRBdmFp
bGFibGVMb2NhbGVzKCk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0g
Y2Fub25pY2FsaXplTG9jYWxlTGlzdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwor
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVk
TG9jYWxlcyhnbG9iYWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMs
IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZv
cm1hdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjdiZDA5MDAzZmU4YmVj
Mjc5MmM0NTg0ZWUyODQ1ODFlNzcyODg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKQEAg
LTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkludGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOworCitjbGFz
cyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJu
YWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIElu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVD
TEFSRV9JTkZPOworCisgICAgU3RydWN0dXJlKiByZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUo
Vk0mKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3QoKS0+cmVsYXRpdmVUaW1lRm9ybWF0U3Ry
dWN0dXJlKCk7IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKik7CisKK3ByaXZhdGU6CisgICAgSW50bFJl
bGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7Cit9OworU1RBVElD
X0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0
cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkYjVlNWE0ZDIyZDM5MzI4NWE0
Njc0ZWExMzBmNzNhMzFlMDEyNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMCww
ICsxLDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVu
dGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiRXJyb3Iu
aCIKKyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsK
Kworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFJlbGF0aXZlVGltZUZv
cm1hdFByb3RvdHlwZUZ1bmNGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQ
cm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFJlbGF0aXZlVGltZUZvcm1h
dFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
KTsKKworfQorCisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAmcmVs
YXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oCitAYmVnaW4gcmVsYXRpdmVUaW1l
Rm9ybWF0UHJvdG90eXBlVGFibGUKKyAgZm9ybWF0ICAgICAgICAgICBJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdCAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgor
ICBmb3JtYXRUb1BhcnRzICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9y
bWF0VG9QYXJ0cyAgICBEb250RW51bXxGdW5jdGlvbiAyCisgIHJlc29sdmVkT3B0aW9ucyAgSW50
bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMgIERvbnRFbnVt
fEZ1bmN0aW9uIDAKK0BlbmQKKyovCisKK0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUq
IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQoreworICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIG9i
amVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQ
cm90b3R5cGU+KHZtLmhlYXApKSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKHZtLCBz
dHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBv
YmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworfQorCitJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOjpJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bFJlbGF0aXZlVGltZUZv
cm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIklu
dGwuUmVsYXRpdmVUaW1lRm9ybWF0Il9zKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2Vj
bWE0MDIvI3NlYy1JbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0CitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGVG
dW5jRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
KiByZWxhdGl2ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFyZWxhdGl2ZVRpbWVG
b3JtYXQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3Jt
YXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
UmVsYXRpdmVUaW1lRm9ybWF0Il9zKSk7CisKKyAgICBkb3VibGUgdmFsdWUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBTdHJpbmcgdW5pdCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMSkudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlbGF0aXZlVGltZUZvcm1hdC0+Zm9ybWF0
KGdsb2JhbE9iamVjdCwgdmFsdWUsIHVuaXQpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9l
Y21hNDAyLyNzZWMtSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFy
dHMKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFBy
b3RvdHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0KiByZWxhdGl2ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYg
KCFyZWxhdGl2ZVRpbWVGb3JtYXQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUmVsYXRpdmVUaW1lRm9ybWF0
LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9i
amVjdCBpbml0aWFsaXplZCBhcyBhIFJlbGF0aXZlVGltZUZvcm1hdCJfcykpOworCisgICAgZG91
YmxlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3Qp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisg
ICAgU3RyaW5nIHVuaXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKGdsb2Jh
bE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZWxh
dGl2ZVRpbWVGb3JtYXQtPmZvcm1hdFRvUGFydHMoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgdW5pdCkp
KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pbnRsLnJlbGF0aXZldGlt
ZWZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25z
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KiByZWxhdGl2
ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFyZWxhdGl2ZVRpbWVGb3JtYXQpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlv
bnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEg
UmVsYXRpdmVUaW1lRm9ybWF0Il9zKSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShyZWxhdGl2ZVRpbWVGb3JtYXQtPnJlc29sdmVkT3B0aW9ucyhnbG9i
YWxPYmplY3QpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFBy
b3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjYmFlYThlNzVhNDgxMjg4MDgyYjU5MDgwYTBhZWRjZWU1
MDczNTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlIGZpbmFs
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBK
U05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAgc3Rh
dGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBTVEFU
SUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJv
dG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAg
IH0KKworICAgIHN0YXRpYyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKiBjcmVhdGUo
Vk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitw
cm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2YXRlOgorICAg
IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGE2ZGRiNGNmNTY3YmNkMjMxMWFjNTJmZTVlMjQzMWZh
OGM3N2I1Y2QuLjEyM2I0NTEzMWZiZTRlNTNkZWE1YzEyZDcxODRiYjE2MGEyZjdkOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAg
LTgzLDYgKzgzLDggQEAKICNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW50bFBs
dXJhbFJ1bGVzLmgiCiAjaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgiCisjaW5j
bHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRp
bWVGb3JtYXRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJdGVyYXRvclByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIK
QEAgLTk0NCw2ICs5NDYsMTIgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFt
ZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAg
IEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogcGx1cmFsUnVsZXNQcm90b3R5cGUgPSBJbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIEludGxQbHVy
YWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogICAgICAgICAgICAgaW5pdC5zZXQo
SW50bFBsdXJhbFJ1bGVzOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBw
bHVyYWxSdWxlc1Byb3RvdHlwZSkpOwogICAgICAgICB9KTsKKyAgICBtX3JlbGF0aXZlVGltZUZv
cm1hdFN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxT
dHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKiByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5
cGUgPSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgSW50
bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgICAgICAg
ICAgaW5pdC5zZXQoSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQu
dm0sIGdsb2JhbE9iamVjdCwgcmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKSk7CisgICAgICAg
IH0pOwogICAgIG1fZGVmYXVsdENvbGxhdG9yLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0
IEluaXRpYWxpemVyPEludGxDb2xsYXRvcj4mIGluaXQpIHsKICAgICAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVy
KTsKQEAgLTk1NSw3ICs5NjMsNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJO
YW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICAg
ICAgaW5pdC5zZXQoY29sbGF0b3IpOwogICAgICAgICB9KTsKIAotICAgIEludGxPYmplY3QqIGlu
dGwgPSBJbnRsT2JqZWN0OjpjcmVhdGUodm0sIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBJbnRsT2JqZWN0KiBpbnRs
ID0gSW50bE9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnRsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkludGwsIGludGwsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAogICAgIG1fbW9k
dWxlTG9hZGVyLmluaXRMYXRlcigKQEAgLTE3NDYsNiArMTc1NCw3IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
ICAgICB0aGlzT2JqZWN0LT5tX251bWJlckZvcm1hdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsK
ICAgICB0aGlzT2JqZWN0LT5tX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3Ip
OwogICAgIHRoaXNPYmplY3QtPm1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7
CisgICAgdGhpc09iamVjdC0+bV9yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlz
aXRvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX251bGxHZXR0ZXJGdW5j
dGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxsU2V0dGVyRnVuY3Rp
b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
aW5kZXggMGUxODk2MGU0ODFhMzI0YWRjMjU2OGVmZGJiMjRjZWFmMTRhMGYzNy4uZjhkNTRhYmY5
OTZlNTFlYWFiNWUzODNkNzM3MjQ0ZWY5OTAxMjQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yOTMsNiArMjkzLDcgQEAgcHVibGlj
OgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX251bWJlckZv
cm1hdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZT4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIFN0cnVjdHVyZT4gbV9wbHVyYWxSdWxlc1N0cnVjdHVyZTsKKyAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1
cmU7CiAKICAgICBXcml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9uPiBtX251bGxHZXR0ZXJG
dW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8TnVsbFNldHRlckZ1bmN0aW9uPiBtX251bGxTZXR0
ZXJGdW5jdGlvbjsKQEAgLTc4NCw2ICs3ODUsNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBu
dW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX251bWJlckZvcm1hdFN0cnVjdHVyZS5n
ZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkgeyBy
ZXR1cm4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1
cmUqIHBsdXJhbFJ1bGVzU3RydWN0dXJlKCkgeyByZXR1cm4gbV9wbHVyYWxSdWxlc1N0cnVjdHVy
ZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIHJlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVy
ZSgpIHsgcmV0dXJuIG1fcmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJlLmdldCh0aGlzKTsgfQog
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKGJv
b2wpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcmVtb3RlRGVidWdnaW5nRW5hYmxlZCgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5k
ZXggYzI4YmZjMzRiZmU4MGY3NjM0YTQwZTFmMzhkMDI5N2I2YTcwZDcxZS4uZjNlNjY4NTM4ZThk
ZjM2NTBiMzAzNTU1YjcxOTY2NjI1OGVmMmEwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00ODIsNiArNDgyLDcgQEAgY29uc3RleHByIGJvb2wg
ZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KEJvb2wsIHVzZVdl
YkFzc2VtYmx5TXVsdGlWYWx1ZXMsIHRydWUsIE5vcm1hbCwgIkFsbG93IHR5cGVzIGZyb20gdGhl
IHdhc20gbXVsaXQtdmFsdWVzIHNwZWMuIikgXAogICAgIHYoQm9vbCwgdXNlV2Vha1JlZnMsIGZh
bHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFdlYWtSZWYgY29uc3RydWN0b3IuIikgXAogICAgIHYo
Qm9vbCwgdXNlQmlnSW50LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUg
QmlnSW50IHN1cHBvcnQuIikgXAorICAgIHYoQm9vbCwgdXNlSW50bFJlbGF0aXZlVGltZUZvcm1h
dCwgZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQgY29u
c3RydWN0b3IuIikgXAogICAgIHYoQm9vbCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJvZmlsaW5nLCB0
cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFycmF5IGFsbG9j
YXRpb24gcHJvZmlsaW5nLiBJZiBmYWxzZSwgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aWxsIGFs
d2F5cyBjbGFpbSB0byBiZSB1bmRlY2lkZWQuIikgXAogICAgIHYoQm9vbCwgZm9yY2VQb2x5UHJv
dG8sIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCBjcmVhdGVfdGhpcyB3aWxsIGFsd2F5cyBjcmVh
dGUgYW4gb2JqZWN0IHdpdGggYSBwb2x5IHByb3RvIHN0cnVjdHVyZS4iKSBcCiAgICAgdihCb29s
LCBmb3JjZU1pbmlWTU1vZGUsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCBpdCB3aWxsIGZvcmNl
IG1pbmkgVk0gbW9kZSBvbi4iKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5k
ZXggZjBkMzRiZmIwMTJiNGE4ZTJhY2EzYTAyNjliYjkwYmQxNzE4ODQ2NS4uMWZjY2JkYjYwMmVm
OWQ5ZjAyOTliNzNjNDg0MjE5ZTZjYTQ4ZmUyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcApAQCAtNzYsNiArNzYsNyBAQAogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5o
IgogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVs
ZXMuaCIKKyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCiAjaW5jbHVkZSAiSXNv
SGVhcENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIgogI2lu
Y2x1ZGUgIkpJVENvZGUuaCIKQEAgLTMzOCw2ICszMzksNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlw
ZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bERhdGVUaW1lRm9ybWF0PigpKQogICAgICwg
aW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRs
TnVtYmVyRm9ybWF0PigpKQogICAgICwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlKElzb0hl
YXBDZWxsVHlwZTo6Y3JlYXRlPEludGxQbHVyYWxSdWxlcz4oKSkKKyAgICAsIGludGxSZWxhdGl2
ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFJlbGF0
aXZlVGltZUZvcm1hdD4oKSkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLCB3ZWJBc3Nl
bWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFz
c2VtYmx5Q29kZUJsb2NrPigpKQogICAgICwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlw
ZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxXZWJBc3NlbWJseUZ1bmN0aW9uPigpKQpAQCAtMTUw
OCw2ICsxNTEwLDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGlu
dGxDb2xsYXRvclNwYWNlLCBpbnRsQ29sbGF0b3JIZWFwQ2VsbFQKIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSwgaW50bERhdGVU
aW1lRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsRGF0ZVRpbWVGb3JtYXQpCiBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bE51bWJlckZvcm1hdFNwYWNlLCBp
bnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsTnVtYmVyRm9ybWF0KQogRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxQbHVyYWxSdWxlc1NwYWNl
LCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxQbHVyYWxSdWxlcykKK0RZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVsYXRpdmVUaW1lRm9y
bWF0U3BhY2UsIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgSlNUb1dhc21JQ0NhbGxlZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlLCB3ZWJBc3NlbWJs
eUNvZGVCbG9ja0hlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWJBc3NlbWJseUNvZGVCbG9jaykgLy8g
SGFzaDoweDlhZDk5NWNkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBmN2I2MTZh
MDI3ODQ2MDA5NzdiYWJkNDA0ZmYzM2JjNTYzYWY4MWNjLi5lNWM2ZTU5Y2JmZjRkOWQ1ODQwODFh
NTk0ZWEwNTQ1YzAyN2Y4YWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTEy
OCw2ICsxMjgsNyBAQCBjbGFzcyBJbnRsQ29sbGF0b3I7CiBjbGFzcyBJbnRsRGF0ZVRpbWVGb3Jt
YXQ7CiBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0OwogY2xhc3MgSW50bFBsdXJhbFJ1bGVzOworY2xh
c3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdDsKIGNsYXNzIEpTQVBJR2xvYmFsT2JqZWN0OwogY2xh
c3MgSlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNBUElXcmFwcGVyT2JqZWN0OwpA
QCAtNDAwLDYgKzQwMSw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENl
bGxUeXBlPiBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5
cGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFJlbGF0aXZlVGlt
ZUZvcm1hdEhlYXBDZWxsVHlwZTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgc3RkOjp1
bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5
cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlGdW5j
dGlvbkhlYXBDZWxsVHlwZTsKQEAgLTU1NSw2ICs1NTcsNyBAQCBwdWJsaWM6CiAgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSkKICAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxOdW1iZXJGb3JtYXRTcGFj
ZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxQbHVyYWxSdWxl
c1NwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFJlbGF0
aXZlVGltZUZvcm1hdFNwYWNlKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSkKICAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3Bh
Y2UpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
YTE1NjA4MDc5ZGQxMGUxYzlmNTQ3ZTU5Y2JjMThkMWEzN2MyYTRlMy4uYzEyYjk4YjY3M2Y2ZGFh
NmI0NWNmMTUwZjQyYjFiZWZhYTQ5ZjlhNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA0LTE4ICBSb3NzIEtp
cnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBbRUNNQS00MDJdIElu
dGwuUmVsYXRpdmVUaW1lRm9ybWF0IG1pc3NpbmcgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJlc3Mt
dGVzdHM6CisgICAgICAgIEFkZCBydW5JbnRsUmVsYXRpdmVUaW1lRm9ybWF0RW5hYmxlZC4KKwog
MjAyMC0wNC0xNyAgQ2xhdWRpbyBTYWF2ZWRyYSAgPGNzYWF2ZWRyYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIFVwZGF0ZSBmb3IgR2RrS2V5bWFwIEFQSSBjaGFuZ2VzCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4t
anNjLXN0cmVzcy10ZXN0cwppbmRleCBjNGUwOGYwZmY0ZjZkYmJhNzgxM2ZhYWM5ZTg3MTYzYWZi
YzgwNDc3Li4yNzFmOWI1MjUxNDQzMWUwMDJmNTE4ODg2NDQ1MGJmMjI2OGI0YmJjIDEwMDc1NQot
LS0gYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCisrKyBiL1Rvb2xzL1Njcmlw
dHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKQEAgLTcwMiw2ICs3MDIsMTAgQEAgZGVmIHJ1bkJpZ0lu
dEVuYWJsZWQoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKICAgICBydW4oImJpZy1pbnQt
ZW5hYmxlZCIsICItLXVzZUJpZ0ludD10cnVlIiAsICooRlRMX09QVElPTlMgKyBvcHRpb25hbFRl
c3RTcGVjaWZpY09wdGlvbnMpKQogZW5kCiAKK2RlZiBydW5JbnRsUmVsYXRpdmVUaW1lRm9ybWF0
RW5hYmxlZCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQorICAgIHJ1bigiaW50bC1yZWxh
dGl2ZXRpbWVmb3JtYXQtZW5hYmxlZCIsICItLXVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXQ9dHJ1
ZSIgLCAqKEZUTF9PUFRJT05TICsgb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKSkKK2VuZAor
CiBkZWYgcnVuRlRMTm9DSklUKCpvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpCiAgICAgcnVu
KCJtaXNjLWZ0bC1uby1jaml0IiwgKihGVExfT1BUSU9OUyArIE5PX0NKSVRfT1BUSU9OUyArIG9w
dGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCiBlbmQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hh
bmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTkyOTkyZDY5ZmI2NTM5YmJhZDAxZGI4
MWYxZGY5YzdiNWFiZWUwNi4uMzI5ZDRmOTZmYjE1ZTUxMDMxYWI3MzcwNGJmYzkwMjZhZjYyNWNh
YSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAyMC0wNC0xOCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xp
bmdAc29ueS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbnRsLlJlbGF0aXZlVGltZUZvcm1h
dCBtaXNzaW5nIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA5NzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBzdHJlc3MvaW50bC1yZWxhdGl2ZXRpbWVmb3JtYXQuanM6IEFkZGVkLgor
CisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoKKyAgICAgICAgRW5hYmxlIEludGwuUmVs
YXRpdmVUaW1lRm9ybWF0IGZlYXR1cmUgd2l0aCBmbGFnLgorCisgICAgICAgICogdGVzdDI2Mi9l
eHBlY3RhdGlvbnMueWFtbDoKKyAgICAgICAgTWFyayBrbm93biBmYWlsdXJlcy4KKyAgICAgICAg
VGVzdCBmb3IgbG9jYWxlIHZhbGlkYXRpb24gaXMgbm90IHNwZWNpZmljIHRvIFJlbGF0aXZlVGlt
ZUZvcm1hdCBhbmQgc2hvdWxkIGJlIGludmVzdGlnYXRlZCBzZXBhcmF0ZWx5LgorICAgICAgICBU
ZXN0cyBmb3IgUG9saXNoIGFwcGVhciB0byBiZSB3cm9uZyBhbmQgc2hvdWxkIGJlIGNvcnJlY3Rl
ZCBpbiB0ZXN0MjYyLgorCiAyMDIwLTA0LTE3ICBQYXVsbyBNYXRvcyAgPHBtYXRvc0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFJlZHVjZSB0ZXN0IGl0ZXJhdGlvbnMgZm9yIHN0cmVzcy9hcnJheS1i
dWZmZXItdmlldy13YXRjaHBvaW50LWNhbi1iZS1maXJlZC1pbi1yZWFsbHktYWRkLWluLWRmZy5q
cyBvbiBtaXBzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLXJlbGF0aXZldGltZWZv
cm1hdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtcmVsYXRpdmV0aW1lZm9ybWF0LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmIxNjY0N2ZiMGZhMGY1ZmI2OWM0ZmM3NmE3ODlhNjYxNTJkYjU4MmMKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLXJlbGF0aXZldGltZWZvcm1hdC5qcwpAQCAt
MCwwICsxLDI3MCBAQAorLy9AIHJ1bkludGxSZWxhdGl2ZVRpbWVGb3JtYXRFbmFibGVkCisKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4cGVjdGVkfSBi
dXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGROb3RUaHJvdyhmdW5jKSB7
CisgICAgZnVuYygpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUp
IHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9yIGlu
c3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAk
e2Vycm9yVHlwZS5uYW1lfSFgKTsKK30KKworc2hvdWxkQmUoSW50bC5SZWxhdGl2ZVRpbWVGb3Jt
YXQgaW5zdGFuY2VvZiBGdW5jdGlvbiwgdHJ1ZSk7CitzaG91bGRCZShJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdC5sZW5ndGgsIDApOworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCwgJ3Byb3RvdHlwZScpLndyaXRhYmxlLCBmYWxz
ZSk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuUmVsYXRp
dmVUaW1lRm9ybWF0LCAncHJvdG90eXBlJykuZW51bWVyYWJsZSwgZmFsc2UpOworc2hvdWxkQmUo
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCwg
J3Byb3RvdHlwZScpLmNvbmZpZ3VyYWJsZSwgZmFsc2UpOworCitzaG91bGRUaHJvdygoKSA9PiBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdCgpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4g
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuY2FsbCh7fSksIFR5cGVFcnJvcik7CisKK3Nob3VsZFRo
cm93KCgpID0+IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnJCcpLCBSYW5nZUVycm9yKTsK
K3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4nLCBudWxs
KSwgVHlwZUVycm9yKTsKKworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCkg
aW5zdGFuY2VvZiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCwgdHJ1ZSk7CisKK3sKKyAgICBjbGFz
cyBEZXJpdmVkUmVsYXRpdmVUaW1lRm9ybWF0IGV4dGVuZHMgSW50bC5SZWxhdGl2ZVRpbWVGb3Jt
YXQge30KKworICAgIGNvbnN0IGRydGYgPSBuZXcgRGVyaXZlZFJlbGF0aXZlVGltZUZvcm1hdCgp
OworICAgIHNob3VsZEJlKGRydGYgaW5zdGFuY2VvZiBEZXJpdmVkUmVsYXRpdmVUaW1lRm9ybWF0
LCB0cnVlKTsKKyAgICBzaG91bGRCZShkcnRmIGluc3RhbmNlb2YgSW50bC5SZWxhdGl2ZVRpbWVG
b3JtYXQsIHRydWUpOworICAgIHNob3VsZEJlKGRydGYuZm9ybWF0LCBJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0KTsKKyAgICBzaG91bGRCZShkcnRmLmZvcm1hdFRvUGFy
dHMsIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzKTsKKyAg
ICBzaG91bGRCZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoZHJ0ZiksIERlcml2ZWRSZWxhdGl2ZVRp
bWVGb3JtYXQucHJvdG90eXBlKTsKKyAgICBzaG91bGRCZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yo
RGVyaXZlZFJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUpLCBJbnRsLlJlbGF0aXZlVGltZUZv
cm1hdC5wcm90b3R5cGUpOworfQorCitzaG91bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5z
dXBwb3J0ZWRMb2NhbGVzT2YubGVuZ3RoLCAxKTsKK3Nob3VsZEJlKEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZigpIGluc3RhbmNlb2YgQXJyYXksIHRydWUpOworc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9j
YWxlc09mLmNhbGwobnVsbCwgJ2VuJykpLCAnWyJlbiJdJyk7CitzaG91bGRCZShKU09OLnN0cmlu
Z2lmeShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YuY2FsbCh7fSwg
J2VuJykpLCAnWyJlbiJdJyk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YuY2FsbCgxLCAnZW4nKSksICdbImVuIl0nKTsK
K3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRl
ZExvY2FsZXNPZig5KSksICdbXScpOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5SZWxh
dGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdlbicpKSwgJ1siZW4iXScpOworc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9j
YWxlc09mKHsgbGVuZ3RoOiA0LCAxOiAnZW4nLCAwOiAnZXMnLCAzOiAnZGUnIH0pKSwgJ1siZXMi
LCJlbiIsImRlIl0nKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihbJ2VuJywgJ3B0JywgJ2VuJywgJ2VzJ10pKSwgJ1si
ZW4iLCJwdCIsImVzIl0nKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVU
aW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZignRW4tbGFUbi11cy12YXJpYW50Mi12YXJpYW50
MS0xYWJjLVUta28tdFJ1ZS1BLWFhLWFhYS14LVJFU0VSVkVEJykpLCAnWyJlbi1MYXRuLVVTLXZh
cmlhbnQyLXZhcmlhbnQxLTFhYmMtYS1hYS1hYWEtdS1rby14LXJlc2VydmVkIl0nKTsKK3Nob3Vs
ZEJlKEpTT04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2Fs
ZXNPZignbm8tYm9rJykpLCAnWyJuYiJdJyk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRs
LlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoJ3gtc29tZS10aGluZycpKSwg
J1tdJyk7CisKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBv
cnRlZExvY2FsZXNPZihPYmplY3QuY3JlYXRlKG51bGwsIHsgbGVuZ3RoOiB7IGdldCgpIHsgdGhy
b3cgbmV3IEVycm9yKCk7IH0gfSB9KSksIEVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihPYmplY3QuY3JlYXRlKG51bGws
IHsgbGVuZ3RoOiB7IHZhbHVlOiAxIH0sIDA6IHsgZ2V0KCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsg
fSB9IH0pKSwgRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3Jt
YXQuc3VwcG9ydGVkTG9jYWxlc09mKFt7IHRvU3RyaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsg
fSB9XSksIEVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0
LnN1cHBvcnRlZExvY2FsZXNPZihbNV0pLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4g
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCcnKSwgUmFuZ2VFcnJv
cik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRM
b2NhbGVzT2YoJ2EnKSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0
aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoJ2FiY2RlZmdoaWonKSwgUmFuZ2VFcnJv
cik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRM
b2NhbGVzT2YoJyMkJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxh
dGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdlbi1ALWFiYycpLCBSYW5nZUVycm9y
KTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExv
Y2FsZXNPZignZW4tdScpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVs
YXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZignZW4tdS1rbi10cnVlLXUta28tdHJ1
ZScpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9y
bWF0LnN1cHBvcnRlZExvY2FsZXNPZignZW4teCcpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93
KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZignZW4tKicp
LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0
LnN1cHBvcnRlZExvY2FsZXNPZignZW4tJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdlbi0tVVMnKSwg
UmFuZ2VFcnJvcik7CisKK2NvbnN0IHZhbGlkTGFuZ3VhZ2VUYWdzID0gWworICAgICdkZScsIC8v
IElTTyA2MzkgbGFuZ3VhZ2UgY29kZQorICAgICdkZS1ERScsIC8vICsgSVNPIDMxNjYtMSBjb3Vu
dHJ5IGNvZGUKKyAgICAnREUtZGUnLCAvLyB0YWdzIGFyZSBjYXNlLWluc2Vuc2l0aXZlCisgICAg
J2NtbicsIC8vIElTTyA2MzkgbGFuZ3VhZ2UgY29kZQorICAgICdjbW4tSGFucycsIC8vICsgc2Ny
aXB0IGNvZGUKKyAgICAnQ01OLWhBTlMnLCAvLyB0YWdzIGFyZSBjYXNlLWluc2Vuc2l0aXZlCisg
ICAgJ2Ntbi1oYW5zLWNuJywgLy8gKyBJU08gMzE2Ni0xIGNvdW50cnkgY29kZQorICAgICdlcy00
MTknLCAvLyArIFVOIE0uNDkgcmVnaW9uIGNvZGUKKyAgICAnZXMtNDE5LXUtbnUtbGF0bi1jdS1i
b2InLCAvLyArIFVuaWNvZGUgbG9jYWxlIGV4dGVuc2lvbiBzZXF1ZW5jZQorICAgICdpLWtsaW5n
b24nLCAvLyBncmFuZGZhdGhlcmVkIHRhZworICAgICdjbW4taGFucy1jbi10LWNhLXUtY2EteC10
LXUnLCAvLyBzaW5nbGV0b24gc3VidGFncyBjYW4gYWxzbyBiZSB1c2VkIGFzIHByaXZhdGUgdXNl
IHN1YnRhZ3MKKyAgICAnZW5vY2hpYW4tZW5vY2hpYW4nLCAvLyBsYW5ndWFnZSBhbmQgdmFyaWFu
dCBzdWJ0YWdzIG1heSBiZSB0aGUgc2FtZQorICAgICdkZS1ncmVnb3J5LXUtY2EtZ3JlZ29yeScs
IC8vIHZhcmlhbnQgYW5kIGV4dGVuc2lvbiBzdWJ0YWdzIG1heSBiZSB0aGUgc2FtZQorICAgICdh
YS1hLWZvby14LWEtZm9vLWJhcicsIC8vIHZhcmlhbnQgc3VidGFncyBjYW4gYWxzbyBiZSB1c2Vk
IGFzIHByaXZhdGUgdXNlIHN1YnRhZ3MKKyAgICAneC1lbi1VUy0xMjM0NScsIC8vIGFueXRoaW5n
IGdvZXMgaW4gcHJpdmF0ZSB1c2UgdGFncworICAgICd4LTEyMzQ1LTEyMzQ1LWVuLVVTJywKKyAg
ICAneC1lbi1VUy0xMjM0NS0xMjM0NScsCisgICAgJ3gtZW4tdS1mb28nLAorICAgICd4LWVuLXUt
Zm9vLXUtYmFyJworXTsKK2ZvciAobGV0IHZhbGlkTGFuZ3VhZ2VUYWcgb2YgdmFsaWRMYW5ndWFn
ZVRhZ3MpCisgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQu
c3VwcG9ydGVkTG9jYWxlc09mKHZhbGlkTGFuZ3VhZ2VUYWcpKTsKKworc2hvdWxkQmUoT2JqZWN0
LmdldFByb3RvdHlwZU9mKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZSksIE9iamVj
dC5wcm90b3R5cGUpOworCitzaG91bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5
cGUuY29uc3RydWN0b3IsIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KTsKKworc2hvdWxkQmUoSW50
bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlW1N5bWJvbC50b1N0cmluZ1RhZ10sICdJbnRs
LlJlbGF0aXZlVGltZUZvcm1hdCcpOworc2hvdWxkQmUoT2JqZWN0LnByb3RvdHlwZS50b1N0cmlu
Zy5jYWxsKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZSksICdbb2JqZWN0IEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0XScpOworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUsIFN5bWJvbC50b1N0cmlu
Z1RhZykud3JpdGFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLCBTeW1ib2wudG9TdHJp
bmdUYWcpLmVudW1lcmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLCBTeW1ib2wudG9T
dHJpbmdUYWcpLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4nLCB7IGxvY2FsZU1hdGNoZXI6IHsgdG9TdHJpbmco
KSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH0gfSksIEVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+
IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4nLCB7IGxvY2FsZU1hdGNoZXI6J2JhZCcg
fSksIFJhbmdlRXJyb3IpOworc2hvdWxkTm90VGhyb3coKCkgPT4gbmV3IEludGwuUmVsYXRpdmVU
aW1lRm9ybWF0KCdlbicsIHsgbG9jYWxlTWF0Y2hlcjonbG9va3VwJyB9KSk7CitzaG91bGROb3RU
aHJvdygoKSA9PiBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBsb2NhbGVNYXRj
aGVyOidiZXN0IGZpdCcgfSkpOworCitjb25zdCBkZWZhdWx0UlRGID0gbmV3IEludGwuUmVsYXRp
dmVUaW1lRm9ybWF0KCdlbicpOworCitzaG91bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5w
cm90b3R5cGUucmVzb2x2ZWRPcHRpb25zLmxlbmd0aCwgMCk7CitzaG91bGRUaHJvdygoKSA9PiBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zLmNhbGwoNSks
IFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5w
cm90b3R5cGUucmVzb2x2ZWRPcHRpb25zLmNhbGwoe30pLCBUeXBlRXJyb3IpOworc2hvdWxkQmUo
ZGVmYXVsdFJURi5yZXNvbHZlZE9wdGlvbnMoKSBpbnN0YW5jZW9mIE9iamVjdCwgdHJ1ZSk7Citz
aG91bGRCZShkZWZhdWx0UlRGLnJlc29sdmVkT3B0aW9ucygpICE9PSBkZWZhdWx0UlRGLnJlc29s
dmVkT3B0aW9ucygpLCB0cnVlKTsKK3Nob3VsZEJlKGRlZmF1bHRSVEYucmVzb2x2ZWRPcHRpb25z
KCkubG9jYWxlLCAnZW4nKTsKK3Nob3VsZEJlKGRlZmF1bHRSVEYucmVzb2x2ZWRPcHRpb25zKCku
c3R5bGUsICdsb25nJyk7CitzaG91bGRCZShkZWZhdWx0UlRGLnJlc29sdmVkT3B0aW9ucygpLm51
bWVyaWMsICdhbHdheXMnKTsKK3Nob3VsZEJlKGRlZmF1bHRSVEYucmVzb2x2ZWRPcHRpb25zKCku
bnVtYmVyaW5nU3lzdGVtLCAnbGF0bicpOworCitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQoJ2VuLXUtbnUtaGFuaWRlYycpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZSwgJ2Vu
LXUtbnUtaGFuaWRlYycpOworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdl
bi11LW51LWhhbmlkZWMnLCB7IG51bWJlcmluZ1N5c3RlbTogJ2d1anInIH0pLnJlc29sdmVkT3B0
aW9ucygpLmxvY2FsZSwgJ2VuJyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3Jt
YXQoJ2VuJywgeyBudW1iZXJpbmdTeXN0ZW06ICdoYW5pZGVjJyB9KS5yZXNvbHZlZE9wdGlvbnMo
KS5sb2NhbGUsICdlbicpOworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdl
bi11LWNhLWNoaW5lc2UnKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUsICdlbicpOworCitzaG91
bGRUaHJvdygoKSA9PiBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBzdHlsZTog
eyB0b1N0cmluZygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSB9KSwgRXJyb3IpOworc2hvdWxk
VGhyb3coKCkgPT4gbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgc3R5bGU6ICdi
YWQnIH0pLCBSYW5nZUVycm9yKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1h
dCgnZW4nLCB7IHN0eWxlOiAnbG9uZycgfSkucmVzb2x2ZWRPcHRpb25zKCkuc3R5bGUsICdsb25n
Jyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBzdHlsZTog
J3Nob3J0JyB9KS5yZXNvbHZlZE9wdGlvbnMoKS5zdHlsZSwgJ3Nob3J0Jyk7CitzaG91bGRCZShu
ZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBzdHlsZTogJ25hcnJvdycgfSkucmVz
b2x2ZWRPcHRpb25zKCkuc3R5bGUsICduYXJyb3cnKTsKKworc2hvdWxkVGhyb3coKCkgPT4gbmV3
IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgbnVtZXJpYzogeyB0b1N0cmluZygpIHsg
dGhyb3cgbmV3IEVycm9yKCk7IH0gfSB9KSwgRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3
IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgbnVtZXJpYzogJ2JhZCcgfSksIFJhbmdl
RXJyb3IpOworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgbnVt
ZXJpYzogJ2Fsd2F5cycgfSkucmVzb2x2ZWRPcHRpb25zKCkubnVtZXJpYywgJ2Fsd2F5cycpOwor
c2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgbnVtZXJpYzogJ2F1
dG8nIH0pLnJlc29sdmVkT3B0aW9ucygpLm51bWVyaWMsICdhdXRvJyk7CisKK2NvbnN0IG51bWJl
cmluZ1N5c3RlbXMgPSBbCisgICAgJ2FyYWInLCAnYXJhYmV4dCcsICdiYWxpJywgJ2JlbmcnLCAn
ZGV2YScsICdmdWxsd2lkZScsICdndWpyJywgJ2d1cnUnLAorICAgICdoYW5pZGVjJywgJ2tobXIn
LCAna25kYScsICdsYW9vJywgJ2xhdG4nLCAnbGltYicsICdtbHltJywgJ21vbmcnLCAnbXltcics
CisgICAgJ29yeWEnLCAndGFtbGRlYycsICd0ZWx1JywgJ3RoYWknLCAndGlidCcKK10KK2ZvciAo
bGV0IG51bWJlcmluZ1N5c3RlbSBvZiBudW1iZXJpbmdTeXN0ZW1zKSB7CisgICAgc2hvdWxkQmUo
bmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgbnVtYmVyaW5nU3lzdGVtIH0pLnJl
c29sdmVkT3B0aW9ucygpLm51bWJlcmluZ1N5c3RlbSwgbnVtYmVyaW5nU3lzdGVtKTsKKyAgICBz
aG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoYGVuLXUtbnUtJHtudW1iZXJpbmdT
eXN0ZW19YCkucmVzb2x2ZWRPcHRpb25zKCkubnVtYmVyaW5nU3lzdGVtLCBudW1iZXJpbmdTeXN0
ZW0pOworfQorCitzaG91bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9y
bWF0Lmxlbmd0aCwgMik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1h
dC5wcm90b3R5cGUuZm9ybWF0LmNhbGwoe30sIDMsICdkYXlzJyksIFR5cGVFcnJvcik7CitzaG91
bGRUaHJvdygoKSA9PiBkZWZhdWx0UlRGLmZvcm1hdChTeW1ib2woKSwgJ2RheXMnKSwgVHlwZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IGRlZmF1bHRSVEYuZm9ybWF0KDMsIFN5bWJvbCgpKSwg
VHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IGRlZmF1bHRSVEYuZm9ybWF0KEluZmluaXR5
LCAnZGF5cycpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IGRlZmF1bHRSVEYuZm9y
bWF0KDMsICdjZW50dXJpZXMnKSwgUmFuZ2VFcnJvcik7CisKK2NvbnN0IHVuaXRzID0gWydzZWNv
bmQnLCAnbWludXRlJywgJ2hvdXInLCAnZGF5JywgJ3dlZWsnLCAnbW9udGgnLCAncXVhcnRlcics
ICd5ZWFyJ107CisKK2ZvciAobGV0IHVuaXQgb2YgdW5pdHMpIHsKKyAgICBzaG91bGRCZShkZWZh
dWx0UlRGLmZvcm1hdCgxMCwgdW5pdCksIGRlZmF1bHRSVEYuZm9ybWF0KDEwLCBgJHt1bml0fXNg
KSk7CisKKyAgICBzaG91bGRCZShkZWZhdWx0UlRGLmZvcm1hdCgxMDAwMC41LCB1bml0KSwgYGlu
IDEwLDAwMC41ICR7dW5pdH1zYCk7CisgICAgc2hvdWxkQmUoZGVmYXVsdFJURi5mb3JtYXQoMS41
LCB1bml0KSwgYGluIDEuNSAke3VuaXR9c2ApOworICAgIHNob3VsZEJlKGRlZmF1bHRSVEYuZm9y
bWF0KDEsIHVuaXQpLCBgaW4gMSAke3VuaXR9YCk7CisgICAgc2hvdWxkQmUoZGVmYXVsdFJURi5m
b3JtYXQoMCwgdW5pdCksIGBpbiAwICR7dW5pdH1zYCk7CisgICAgc2hvdWxkQmUoZGVmYXVsdFJU
Ri5mb3JtYXQoLTAsIHVuaXQpLCBgMCAke3VuaXR9cyBhZ29gKTsKKyAgICBzaG91bGRCZShkZWZh
dWx0UlRGLmZvcm1hdCgtMSwgdW5pdCksIGAxICR7dW5pdH0gYWdvYCk7CisgICAgc2hvdWxkQmUo
ZGVmYXVsdFJURi5mb3JtYXQoLTEuNSwgdW5pdCksIGAxLjUgJHt1bml0fXMgYWdvYCk7CisgICAg
c2hvdWxkQmUoZGVmYXVsdFJURi5mb3JtYXQoLTEwMDAwLjUsIHVuaXQpLCBgMTAsMDAwLjUgJHt1
bml0fXMgYWdvYCk7Cit9CisKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgn
ZW4nLCB7IHN0eWxlOiAnbG9uZycgfSkuZm9ybWF0KDEwLCAnc2Vjb25kJyksICdpbiAxMCBzZWNv
bmRzJyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ3J1JywgeyBzdHls
ZTogJ2xvbmcnIH0pLmZvcm1hdCgxMCwgJ3NlY29uZCcpLCAn0YfQtdGA0LXQtyAxMCDRgdC10LrR
g9C90LQnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4nLCB7IHN0
eWxlOiAnc2hvcnQnIH0pLmZvcm1hdCgxMCwgJ3NlY29uZCcpLCAnaW4gMTAgc2VjLicpOworc2hv
dWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdydScsIHsgc3R5bGU6ICdzaG9ydCcg
fSkuZm9ybWF0KDEwLCAnc2Vjb25kJyksICfRh9C10YDQtdC3IDEwwqDRgdC10LouJyk7CitzaG91
bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBzdHlsZTogJ25hcnJvdycg
fSkuZm9ybWF0KDEwLCAnc2Vjb25kJyksICdpbiAxMCBzZWMuJyk7CitzaG91bGRCZShuZXcgSW50
bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ3J1JywgeyBzdHlsZTogJ25hcnJvdycgfSkuZm9ybWF0KDEw
LCAnc2Vjb25kJyksICcrMTAg0YEnKTsKKworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0KCdlbicsIHsgbnVtZXJpYzogJ2F1dG8nIH0pLmZvcm1hdCgwLCAnc2Vjb25kJyksICdu
b3cnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnamEnLCB7IG51bWVy
aWM6ICdhdXRvJyB9KS5mb3JtYXQoMCwgJ3NlY29uZCcpLCAn5LuKJyk7CitzaG91bGRCZShuZXcg
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBudW1lcmljOiAnYXV0bycgfSkuZm9ybWF0
KDAsICdkYXknKSwgJ3RvZGF5Jyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3Jt
YXQoJ2phJywgeyBudW1lcmljOiAnYXV0bycgfSkuZm9ybWF0KDAsICdkYXknKSwgJ+S7iuaXpScp
Oworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgbnVtZXJpYzog
J2F1dG8nIH0pLmZvcm1hdCgwLCAneWVhcicpLCAndGhpcyB5ZWFyJyk7CitzaG91bGRCZShuZXcg
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2phJywgeyBudW1lcmljOiAnYXV0bycgfSkuZm9ybWF0
KDAsICd5ZWFyJyksICfku4rlubQnKTsKKworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0KCdlbicsIHsgbnVtYmVyaW5nU3lzdGVtOiAndGhhaScgfSkuZm9ybWF0KC0xMCwgJ2hv
dXInKSwgJ+C5keC5kCBob3VycyBhZ28nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdCgnZW4tdS1udS10aGFpJykuZm9ybWF0KC0xMCwgJ2hvdXInKSwgJ+C5keC5kCBob3Vy
cyBhZ28nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgna28nLCB7IG51
bWJlcmluZ1N5c3RlbTogJ2hhbmlkZWMnIH0pLmZvcm1hdCgtMTAsICdob3VyJyksICfkuIDjgIfs
i5zqsIQg7KCEJyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2tvLXUt
bnUtaGFuaWRlYycpLmZvcm1hdCgtMTAsICdob3VyJyksICfkuIDjgIfsi5zqsIQg7KCEJyk7CisK
K3Nob3VsZEJlKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRz
Lmxlbmd0aCwgMik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5w
cm90b3R5cGUuZm9ybWF0VG9QYXJ0cy5jYWxsKHt9LCAzLCAnZGF5cycpLCBUeXBlRXJyb3IpOwor
c2hvdWxkVGhyb3coKCkgPT4gZGVmYXVsdFJURi5mb3JtYXRUb1BhcnRzKFN5bWJvbCgpLCAnZGF5
cycpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gZGVmYXVsdFJURi5mb3JtYXRUb1Bh
cnRzKDMsIFN5bWJvbCgpKSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IGRlZmF1bHRS
VEYuZm9ybWF0VG9QYXJ0cyhJbmZpbml0eSwgJ2RheXMnKSwgUmFuZ2VFcnJvcik7CitzaG91bGRU
aHJvdygoKSA9PiBkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoMywgJ2NlbnR1cmllcycpLCBSYW5n
ZUVycm9yKTsKKworZm9yIChsZXQgdW5pdCBvZiB1bml0cykgeworICAgIHNob3VsZEJlKEpTT04u
c3RyaW5naWZ5KGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygxMCwgdW5pdCkpLCBKU09OLnN0cmlu
Z2lmeShkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoMTAsIGAke3VuaXR9c2ApKSk7CisKKyAgICBj
b25zdCBjb25jYXRlbmF0ZVZhbHVlcyA9IChwYXJ0cykgPT4gcGFydHMubWFwKHBhcnQgPT4gcGFy
dC52YWx1ZSkuam9pbignJyk7CisgICAgc2hvdWxkQmUoY29uY2F0ZW5hdGVWYWx1ZXMoZGVmYXVs
dFJURi5mb3JtYXRUb1BhcnRzKDEwMDAwLjUsIHVuaXQpKSwgYGluIDEwLDAwMC41ICR7dW5pdH1z
YCk7CisgICAgc2hvdWxkQmUoY29uY2F0ZW5hdGVWYWx1ZXMoZGVmYXVsdFJURi5mb3JtYXRUb1Bh
cnRzKDEuNSwgdW5pdCkpLCBgaW4gMS41ICR7dW5pdH1zYCk7CisgICAgc2hvdWxkQmUoY29uY2F0
ZW5hdGVWYWx1ZXMoZGVmYXVsdFJURi5mb3JtYXRUb1BhcnRzKDEsIHVuaXQpKSwgYGluIDEgJHt1
bml0fWApOworICAgIHNob3VsZEJlKGNvbmNhdGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYuZm9ybWF0
VG9QYXJ0cygwLCB1bml0KSksIGBpbiAwICR7dW5pdH1zYCk7CisgICAgc2hvdWxkQmUoY29uY2F0
ZW5hdGVWYWx1ZXMoZGVmYXVsdFJURi5mb3JtYXRUb1BhcnRzKC0wLCB1bml0KSksIGAwICR7dW5p
dH1zIGFnb2ApOworICAgIHNob3VsZEJlKGNvbmNhdGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYuZm9y
bWF0VG9QYXJ0cygtMSwgdW5pdCkpLCBgMSAke3VuaXR9IGFnb2ApOworICAgIHNob3VsZEJlKGNv
bmNhdGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygtMS41LCB1bml0KSksIGAx
LjUgJHt1bml0fXMgYWdvYCk7CisgICAgc2hvdWxkQmUoY29uY2F0ZW5hdGVWYWx1ZXMoZGVmYXVs
dFJURi5mb3JtYXRUb1BhcnRzKC0xMDAwMC41LCB1bml0KSksIGAxMCwwMDAuNSAke3VuaXR9cyBh
Z29gKTsKK30KKworc2hvdWxkQmUoCisgICAgSlNPTi5zdHJpbmdpZnkoZGVmYXVsdFJURi5mb3Jt
YXRUb1BhcnRzKDEwMDAwLjUsICdkYXknKSksCisgICAgSlNPTi5zdHJpbmdpZnkoWworICAgICAg
ICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICdpbiAnIH0sCisgICAgICAgIHsgdHlwZTogJ2lu
dGVnZXInLCB2YWx1ZTogJzEwJywgdW5pdDogJ2RheScgfSwKKyAgICAgICAgeyB0eXBlOiAnZ3Jv
dXAnLCB2YWx1ZTogJywnLCB1bml0OiAnZGF5JyB9LAorICAgICAgICB7IHR5cGU6ICdpbnRlZ2Vy
JywgdmFsdWU6ICcwMDAnLCB1bml0OiAnZGF5JyB9LAorICAgICAgICB7IHR5cGU6ICdkZWNpbWFs
JywgdmFsdWU6ICcuJywgdW5pdDogJ2RheScgfSwKKyAgICAgICAgeyB0eXBlOiAnZnJhY3Rpb24n
LCB2YWx1ZTogJzUnLCB1bml0OiAnZGF5JyB9LAorICAgICAgICB7IHR5cGU6ICdsaXRlcmFsJywg
dmFsdWU6ICcgZGF5cycgfQorICAgIF0pCispOworCitzaG91bGRCZSgKKyAgICBKU09OLnN0cmlu
Z2lmeShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ3J1JywgeyBzdHlsZTogJ25hcnJvdycg
fSkuZm9ybWF0VG9QYXJ0cygxMCwgJ3NlY29uZCcpKSwKKyAgICBKU09OLnN0cmluZ2lmeShbCisg
ICAgICAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJysnIH0sCisgICAgICAgIHsgdHlwZTog
J2ludGVnZXInLCB2YWx1ZTogJzEwJywgdW5pdDogJ3NlY29uZCcgfSwKKyAgICAgICAgeyB0eXBl
OiAnbGl0ZXJhbCcsIHZhbHVlOiAnINGBJyB9CisgICAgXSkKKyk7CisKK3Nob3VsZEJlKAorICAg
IEpTT04uc3RyaW5naWZ5KG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnamEnLCB7IG51bWVy
aWM6ICdhdXRvJyB9KS5mb3JtYXRUb1BhcnRzKDAsICd3ZWVrJykpLAorICAgIEpTT04uc3RyaW5n
aWZ5KFsKKyAgICAgICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZhbHVlOiAn5LuK6YCxJyB9CisgICAg
XSkKKyk7CisKK3Nob3VsZEJlKAorICAgIEpTT04uc3RyaW5naWZ5KG5ldyBJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdCgna28nLCB7IG51bWJlcmluZ1N5c3RlbTogJ2hhbmlkZWMnIH0pLmZvcm1hdFRv
UGFydHMoLTEwLCAnaG91cicpKSwKKyAgICBKU09OLnN0cmluZ2lmeShbCisgICAgICAgIHsgdHlw
ZTogJ2ludGVnZXInLCB2YWx1ZTogJ+S4gOOAhycsIHVuaXQ6ICdob3VyJyB9LAorICAgICAgICB7
IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICfsi5zqsIQg7KCEJyB9CisgICAgXSkKKyk7CisKK3No
b3VsZEJlKAorICAgIEpTT04uc3RyaW5naWZ5KG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgn
c3cnKS5mb3JtYXRUb1BhcnRzKDEwLCAneWVhcicpKSwKKyAgICBKU09OLnN0cmluZ2lmeShbCisg
ICAgICAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJ2JhYWRhIHlhIG1pYWthICcgfSwKKyAg
ICAgICAgeyB0eXBlOiAnaW50ZWdlcicsIHZhbHVlOiAnMTAnLCB1bml0OiAneWVhcicgfSwKKyAg
ICBdKQorKTsKKworc2hvdWxkQmUoCisgICAgSlNPTi5zdHJpbmdpZnkobmV3IEludGwuUmVsYXRp
dmVUaW1lRm9ybWF0KCdhcicpLmZvcm1hdFRvUGFydHMoLTEwLCAnbW9udGgnKSksCisgICAgSlNP
Ti5zdHJpbmdpZnkoWworICAgICAgICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICfZgtio2YQg
JyB9LAorICAgICAgICB7IHR5cGU6ICdpbnRlZ2VyJywgdmFsdWU6ICfZodmgJywgdW5pdDogJ21v
bnRoJyB9LAorICAgICAgICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICcg2KPYtNmH2LEnIH0K
KyAgICBdKQorKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pT
VGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCAyNDRmNzA1MWI2YmFiZDY0NDZmZGVmMWRi
ZWQzZWUzZmI1MDNmM2RiLi5hMzFmN2EwNGFjNGUyYzE4ODU5ZTFlNjUzMmIzZDMxZWI0YWIzM2Iz
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90
ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0yLDYgKzIsNyBAQAogLS0tCiBmbGFnczoKICAgQmlnSW50
OiB1c2VCaWdJbnQKKyAgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQ6IHVzZUludGxSZWxhdGl2ZVRp
bWVGb3JtYXQKICAgV2Vha1JlZjogdXNlV2Vha1JlZnMKICAgY2xhc3MtZmllbGRzLXB1YmxpYzog
dXNlUHVibGljQ2xhc3NGaWVsZHMKICAgbG9naWNhbC1hc3NpZ25tZW50LW9wZXJhdG9yczogdXNl
TG9naWNhbEFzc2lnbm1lbnRPcGVyYXRvcnMKQEAgLTMzLDcgKzM0LDYgQEAgc2tpcDoKICAgICAt
IEludGwuTGlzdEZvcm1hdAogICAgIC0gSW50bC5Mb2NhbGUKICAgICAtIEludGwuTnVtYmVyRm9y
bWF0LXVuaWZpZWQKLSAgICAtIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0CiAgICAgLSBJbnRsLlNl
Z21lbnRlcgogICBwYXRoczoKICAgICAtIHRlc3QvYnVpbHQtaW5zL0RhdGFWaWV3L3Byb3RvdHlw
ZS9nZXRCaWdJbnQ2NApAQCAtMTU2LDMgKzE1Niw3IEBAIHNraXA6CiAgICAgIyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NzgzCiAgICAgLSB0ZXN0L2ludGw0MDIv
RGF0ZVRpbWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9yZWxhdGVkLXllYXItemguanMKICAgICAt
IHRlc3QvaW50bDQwMi9EYXRlVGltZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9yZWxh
dGVkLXllYXItemguanMKKworICAgICMgcmVxdWlyZXMgSUNVIDY1IChodHRwczovL3VuaWNvZGUt
b3JnLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0lDVS0yMDY1NCkKKyAgICAtIHRlc3QvaW50bDQwMi9S
ZWxhdGl2ZVRpbWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9lbi11cy1udW1lcmljLWF1dG8uanMK
KyAgICAtIHRlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRv
UGFydHMvZW4tdXMtbnVtZXJpYy1hdXRvLmpzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIv
ZXhwZWN0YXRpb25zLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKaW5k
ZXggZjRmMzdhYTExZGY5NGU2OTU3YmQyMTZiZDM4NWRiNDJhMjgxYjY4Zi4uZWZjNDQ4NDI1ODlj
ZmI5NWVmY2UzNGQ2ZTUyMzBkYzkzMDJlZjcwNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYy
L2V4cGVjdGF0aW9ucy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFt
bApAQCAtMTk0NywxMiArMTk0NywzMyBAQCB0ZXN0L2ludGw0MDIvTnVtYmVyRm9ybWF0L3Byb3Rv
LWZyb20tY3Rvci1yZWFsbS5qczoKIHRlc3QvaW50bDQwMi9QbHVyYWxSdWxlcy9wcm90by1mcm9t
LWN0b3ItcmVhbG0uanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IG5ld1RhcmdldC5wcm90
b3R5cGUgaXMgdW5kZWZpbmVkIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq1tvYmplY3QgT2JqZWN0XcK7
LCDCq1tvYmplY3QgT2JqZWN0XcK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTogJ1Rlc3Qy
NjJFcnJvcjogbmV3VGFyZ2V0LnByb3RvdHlwZSBpcyB1bmRlZmluZWQgRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrW29iamVjdCBPYmplY3RdwrssIMKrW29iamVjdCBPYmplY3RdwrspIHRvIGJlIHRydWUn
Cit0ZXN0L2ludGw0MDIvUmVsYXRpdmVUaW1lRm9ybWF0L2NvbnN0cnVjdG9yL2NvbnN0cnVjdG9y
L2xvY2FsZXMtdmFsaWQuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEdyYW5kZmF0aGVy
ZWQgRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdh
cyB0aHJvd24gYXQgYWxsJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogR3JhbmRmYXRo
ZXJlZCBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24g
d2FzIHRocm93biBhdCBhbGwnCit0ZXN0L2ludGw0MDIvUmVsYXRpdmVUaW1lRm9ybWF0L2NvbnN0
cnVjdG9yL2NvbnN0cnVjdG9yL3Byb3RvLWZyb20tY3Rvci1yZWFsbS5qczoKKyAgZGVmYXVsdDog
J1Rlc3QyNjJFcnJvcjogbmV3VGFyZ2V0LnByb3RvdHlwZSBpcyB1bmRlZmluZWQgRXhwZWN0ZWQg
U2FtZVZhbHVlKMKrW29iamVjdCBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdF3Cuywgwqtbb2JqZWN0
IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0XcK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTog
J1Rlc3QyNjJFcnJvcjogbmV3VGFyZ2V0LnByb3RvdHlwZSBpcyB1bmRlZmluZWQgRXhwZWN0ZWQg
U2FtZVZhbHVlKMKrW29iamVjdCBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdF3Cuywgwqtbb2JqZWN0
IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0XcK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL1Jl
bGF0aXZlVGltZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3BsLXBsLXN0eWxlLWxvbmcuanM6Cisg
IGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3phIDEwMDAgc2Vr
dW5kwrssIMKremEgMcKgMDAwIHNla3VuZMK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTog
J1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKremEgMTAwMCBzZWt1bmTCuywgwqt6
YSAxwqAwMDAgc2VrdW5kwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvUmVsYXRpdmVUaW1l
Rm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvcGwtcGwtc3R5bGUtbmFycm93LmpzOgorICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt6YSAxMDAwIHPCuywgwqt6YSAx
wqAwMDAgc8K7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKremEgMTAwMCBzwrssIMKremEgMcKgMDAwIHPCuykgdG8gYmUgdHJ1
ZScKK3Rlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9wbC1w
bC1zdHlsZS1zaG9ydC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKremEgMTAwMCBzZWsuwrssIMKremEgMcKgMDAwIHNlay7CuykgdG8gYmUgdHJ1ZScK
KyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3phIDEw
MDAgc2VrLsK7LCDCq3phIDHCoDAwMCBzZWsuwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIv
UmVsYXRpdmVUaW1lRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3BsLXBsLXN0eWxlLWxv
bmcuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IGZvcm1hdFRvUGFydHMoMTAwMCwgc2Vj
b25kKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzPCuywgwqs1wrspIHRvIGJlIHRydWUn
CisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBmb3JtYXRUb1BhcnRzKDEwMDAsIHNlY29u
ZCk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqszwrssIMKrNcK7KSB0byBiZSB0cnVlJwor
dGVzdC9pbnRsNDAyL1JlbGF0aXZlVGltZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9w
bC1wbC1zdHlsZS1uYXJyb3cuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IGZvcm1hdFRv
UGFydHMoMTAwMCwgc2Vjb25kKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzPCuywgwqs1
wrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBmb3JtYXRUb1Bh
cnRzKDEwMDAsIHNlY29uZCk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqszwrssIMKrNcK7
KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL1JlbGF0aXZlVGltZUZvcm1hdC9wcm90b3R5cGUv
Zm9ybWF0VG9QYXJ0cy9wbC1wbC1zdHlsZS1zaG9ydC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJF
cnJvcjogZm9ybWF0VG9QYXJ0cygxMDAwLCBzZWNvbmQpOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrM8K7LCDCqzXCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJy
b3I6IGZvcm1hdFRvUGFydHMoMTAwMCwgc2Vjb25kKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1
ZSjCqzPCuywgwqs1wrspIHRvIGJlIHRydWUnCiB0ZXN0L2ludGw0MDIvbGFuZ3VhZ2UtdGFncy1p
bnZhbGlkLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBUZXN0IGRhdGEgImRlLWdyZWdv
cnktZ3JlZ29yeSIgaXMgYSBjYW5vbmljYWxpemVkIGFuZCBzdHJ1Y3R1cmFsbHkgdmFsaWQgbGFu
Z3VhZ2UgdGFnLicKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IFRlc3QgZGF0YSAiZGUt
Z3JlZ29yeS1ncmVnb3J5IiBpcyBhIGNhbm9uaWNhbGl6ZWQgYW5kIHN0cnVjdHVyYWxseSB2YWxp
ZCBsYW5ndWFnZSB0YWcuJwotdGVzdC9pbnRsNDAyL3N1cHBvcnRlZExvY2FsZXNPZi1yZXR1cm5l
ZC1hcnJheS1lbGVtZW50cy1hcmUtbm90LWZyb3plbi5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJF
cnJvcjogUHJvcGVydHkgMCBvZiBvYmplY3QgcmV0dXJuZWQgYnkgU3VwcG9ydGVkTG9jYWxlcyBp
cyBub3Qgd3JpdGFibGUuIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2ZhbHNlwrssIMKrdHJ1ZcK7KSB0
byBiZSB0cnVlIChUZXN0aW5nIHdpdGggQ29sbGF0b3IuKScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IFByb3BlcnR5IDAgb2Ygb2JqZWN0IHJldHVybmVkIGJ5IFN1cHBvcnRlZExvY2Fs
ZXMgaXMgbm90IHdyaXRhYmxlLiBFeHBlY3RlZCBTYW1lVmFsdWUowqtmYWxzZcK7LCDCq3RydWXC
uykgdG8gYmUgdHJ1ZSAoVGVzdGluZyB3aXRoIENvbGxhdG9yLiknCiB0ZXN0L2xhbmd1YWdlL2Fy
Z3VtZW50cy1vYmplY3QvbWFwcGVkL25vbmNvbmZpZ3VyYWJsZS1ub25lbnVtZXJhYmxlLW5vbndy
aXRhYmxlLWRlc2NyaXB0b3JzLXNldC1ieS1hcmd1bWVudHMuanM6CiAgIGRlZmF1bHQ6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIG9ialswXSB0byBoYXZlIGVudW1lcmFibGU6ZmFsc2UuJwogdGVz
dC9sYW5ndWFnZS9hcmd1bWVudHMtb2JqZWN0L21hcHBlZC9ub25jb25maWd1cmFibGUtbm9uZW51
bWVyYWJsZS1ub253cml0YWJsZS1kZXNjcmlwdG9ycy1zZXQtYnktcGFyYW0uanM6CkBAIC0yNzA0
LDExICsyNzI1LDExIEBAIHRlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvaW5zdGFuY2VvZi9wcm90
b3R5cGUtZ2V0dGVyLXdpdGgtcHJpbWl0aXZlLmpzOgogICBkZWZhdWx0OiAiVGVzdDI2MkVycm9y
OiBnZXR0ZXIgZm9yICdwcm90b3R5cGUnIGNhbGxlZCIKICAgc3RyaWN0IG1vZGU6ICJUZXN0MjYy
RXJyb3I6IGdldHRlciBmb3IgJ3Byb3RvdHlwZScgY2FsbGVkIgogdGVzdC9sYW5ndWFnZS9leHBy
ZXNzaW9ucy9sb2dpY2FsLWFzc2lnbm1lbnQvbGdjbC1hbmQtYXNzaWdubWVudC1vcGVyYXRvci1u
b24tc2ltcGxlLWxocy5qczoKLSAgZGVmYXVsdDogIlRlc3QyNjI6IFRoaXMgc3RhdGVtZW50IHNo
b3VsZCBub3QgYmUgZXZhbHVhdGVkLiIKKyAgZGVmYXVsdDogJ1Rlc3QyNjI6IFRoaXMgc3RhdGVt
ZW50IHNob3VsZCBub3QgYmUgZXZhbHVhdGVkLicKIHRlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMv
bG9naWNhbC1hc3NpZ25tZW50L2xnY2wtbnVsbGlzaC1hc3NpZ25tZW50LW9wZXJhdG9yLW5vbi1z
aW1wbGUtbGhzLmpzOgotICBkZWZhdWx0OiAiVGVzdDI2MjogVGhpcyBzdGF0ZW1lbnQgc2hvdWxk
IG5vdCBiZSBldmFsdWF0ZWQuIgorICBkZWZhdWx0OiAnVGVzdDI2MjogVGhpcyBzdGF0ZW1lbnQg
c2hvdWxkIG5vdCBiZSBldmFsdWF0ZWQuJwogdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9sb2dp
Y2FsLWFzc2lnbm1lbnQvbGdjbC1vci1hc3NpZ25tZW50LW9wZXJhdG9yLW5vbi1zaW1wbGUtbGhz
LmpzOgotICBkZWZhdWx0OiAiVGVzdDI2MjogVGhpcyBzdGF0ZW1lbnQgc2hvdWxkIG5vdCBiZSBl
dmFsdWF0ZWQuIgorICBkZWZhdWx0OiAnVGVzdDI2MjogVGhpcyBzdGF0ZW1lbnQgc2hvdWxkIG5v
dCBiZSBldmFsdWF0ZWQuJwogdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9uZXcvY3RvckV4cHIt
Zm4tcmVmLWJlZm9yZS1hcmdzLWV2YWwtZm4td3JhcHVwLmpzOgogICBkZWZhdWx0OiAiVHlwZUVy
cm9yOiAxIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgeCh4ID0gMSknKSIK
ICAgc3RyaWN0IG1vZGU6ICJUeXBlRXJyb3I6IDEgaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1
YXRpbmcgJ25ldyB4KHggPSAxKScpIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396876</attachid>
            <date>2020-04-18 17:19:33 -0700</date>
            <delta_ts>2020-04-18 22:13:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209770-20200418171932.patch</filename>
            <type>text/plain</type>
            <size>103398</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ODgwYTBmNjNlYjMxZTFkOWMwZmQ4ZTlkNDdiMWVhYTI3NWNkNjgzLi40NDY4ZWIzZWE4MWMzY2Vh
ODY0ZDA5NzlmZmZjNzZmMmIxYTBkNTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OSBAQAorMjAyMC0wNC0xOCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBtaXNz
aW5nIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5NzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSByZWNlbnQgRUNNQS00MDIgZmVhdHVyZSBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdC4KKworICAgICAgICBSZWxhdGl2ZVRpbWVGb3JtYXQgaGFz
IGZvcm1hdCAvIGZvcm1hdFRvUGFydHMgZnVuY3Rpb25zIGxpa2UgTnVtYmVyRm9ybWF0IC8gRGF0
ZVRpbWVGb3JtYXQKKyAgICAgICAgYW5kIGlzIHVzZWQgdG8gdHVybiBhIG51bWJlciBhbmQgdW5p
dCBpbnRvIGEgZm9ybWF0dGVkIHJlbGF0aXZlIHRpbWUgc3RyaW5nLCBlLmcuOgorCisgICAgICAg
ICAgbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicpLmZvcm1hdCgxMCwgJ2RheScpCisg
ICAgICAgICAgPiAnaW4gMTAgZGF5cycKKworICAgICAgICAgIG5ldyBJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdCgnZW4nLCB7IG51bWVyaWM6IGF1dG8gfSkuZm9ybWF0KDAsICdkYXknKQorICAgICAg
ICAgID4gJ3RvZGF5JworCisgICAgICAgIEltcGxlbWVudGF0aW9uIG9mIFJlbGF0aXZlVGltZUZv
cm1hdCNmb3JtYXRUb1BhcnRzIG1ha2VzIGRpcmVjdCB1c2Ugb2YgTnVtYmVyRm9ybWF0I2Zvcm1h
dFRvUGFydHMsCisgICAgICAgIGFzIHRoZSByZWxhdGl2ZSB0aW1lIHN0cmluZyBjb25zaXN0cyBv
ZiBhdCBtb3N0IG9uZSBmb3JtYXR0ZWQgbnVtYmVyIHdpdGggb3B0aW9uYWwgbGl0ZXJhbCB0ZXh0
IG9uIGVpdGhlciBzaWRlLgorCisgICAgICAgIFRoaXMgZmVhdHVyZSBpcyBydW50aW1lLWd1YXJk
ZWQgYnkgdGhlICd1c2VJbnRsUmVsYXRpdmVUaW1lRm9ybWF0JyBvcHRpb24uCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVs
aXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBy
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0LmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZv
cm1hdENvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9JbnRs
UmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgICogcnVudGlt
ZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0OjpyZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
T3B0aW9uc0xpc3QuaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6
Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgIEFkZCBmZWF0dXJlIGFu
ZCBydW50aW1lIG9wdGlvbi4KKworICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKToK
KyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHA6CisgICAgICAgIChKU0M6Oklu
dGxQbHVyYWxSdWxlczo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKToKKyAgICAgICAgKEpTQzo6SW50
bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICBNYWtlICJ0eXBlIiBhIHBy
b3BlcnR5IG5hbWUuCisKKyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKToKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyk6CisgICAgICAgICogcnVu
dGltZS9JbnRsTnVtYmVyRm9ybWF0Lmg6CisgICAgICAgIEZhY3RvciBvdXQgZm9ybWF0VG9QYXJ0
c0ludGVybmFsIHNvIHRoYXQgUmVsYXRpdmVUaW1lRm9ybWF0IGNhbiB1c2UgaXQgd2l0aCBpdHMg
b3duIFVOdW1iZXJGb3JtYXQuCisgICAgICAgIChUaGlzIGxvZ2ljIGlzIHRvbyBjb21wbGljYXRl
ZCB0byBkdXBsaWNhdGU7IGl0J3MgYmVjYXVzZSBJQ1Ugd29uJ3Qgc3BsaXQsIGUuZy4sICIxMCww
MDAiIGludG8gcGFydHMgZm9yIHVzLikKKworICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OkludGxPYmplY3QpOgorICAgICAgICAoSlND
OjpJbnRsT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0OjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OmludGxBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAg
KEpTQzo6aW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxlcyk6CisgICAgICAgIChKU0M6OmlzVW5p
Y29kZUxvY2FsZUlkZW50aWZpZXJUeXBlKToKKyAgICAgICAgKEpTQzo6c3VwcG9ydGVkTG9jYWxl
cyk6CisgICAgICAgIChKU0M6OmludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjppbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcyk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OmludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMpOgorICAgICAgICAoSlNDOjppbnRs
TnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcyk6CisgICAgICAgIChKU0M6OmludGxQbHVyYWxS
dWxlc0F2YWlsYWJsZUxvY2FsZXMpOgorICAgICAgICAoSlNDOjppbnRsUmVsYXRpdmVUaW1lRm9y
bWF0QXZhaWxhYmxlTG9jYWxlcyk6CisgICAgICAgIFBlcmZvcm0gdGhyZWUgY29ycmVjdGlvbnMg
Zm9yIEludGwgY2xhc3NlczoKKyAgICAgICAgICAxLiBDb2xsYXRvciBzaG91bGQgYmUgdGhlIG9u
bHkgY2xhc3Mgd2l0aCB1bmlxdWUgImF2YWlsYWJsZSBsb2NhbGVzIi4KKyAgICAgICAgICAgICBb
dW51bXx1ZGF0XV9nZXRBdmFpbGFibGUgZXhpc3QgYnV0IHRoZXkndmUgZGVmZXJyZWQgdG8gdWxv
Y19nZXRBdmFpbGFibGUgZm9yIDIwIHllYXJzLgorICAgICAgICAgIDIuIGlzVW5pY29kZUxvY2Fs
ZUlkZW50aWZpZXJUeXBlIGlzbid0IGp1c3QgYGFscGhhbnVtezMsOH1gIGJ1dCByYXRoZXIgYGFs
cGhhbnVtezMsOH0gKHNlcCBhbHBoYW51bXszLDh9KSpgLgorICAgICAgICAgICAgIFRoaXMgaXMg
bXkgb3duIG1pc3Rha2UgZnJvbSByMjM5OTQxLgorICAgICAgICAgIDMuIHN1cHBvcnRlZExvY2Fs
ZXNPZiBlbnRyaWVzIHNob3VsZCBub3QgYmUgZnJvemVuLgorICAgICAgICAgICAgIENoYW5nZWQg
aW4gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvZWNtYTQwMi9wdWxsLzI3OC4KKwogMjAyMC0wNC0x
OCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByZW1vdmUgY29tbWVudGVkIG91dC9kZWFkIGNvZGUgdGhhdCBkaWRuJ3QgZmFpbGVk
IHRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTU5NTNkYjQ5MzAyMmFj
MWVjNDBlMzlmMTI0Nzk2ZjgwNTcxNTg3NS4uMTZlMjlhYWE4YTlmNjBkZWZkYmY0OTM0ZmQ5NTc5
Njk2NjEzOTVkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzUsNiAr
NzUsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAgcnVudGlt
ZS9JbnRsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3Iu
Y3BwCiAgICAgcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCisgICAgcnVudGlt
ZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9JbnRs
UmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNEYXRhVmlld1By
b3RvdHlwZS5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUv
SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggMjM0MGNkZmFj
NDYxYjliNmIzMWIwNTc4YjI1YWZiNTU1YmFkYWQ4Yi4uMzRhY2RmODdlOGE0ZDY5YmY0NWQ1MmYz
MjQ1ZmEwMDQ1ZTIzYzdhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTE0Miw2ICsxNDIsOCBAQCAkKFBST0pF
Q1RfRElSKS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1Rf
RElSKS9ydW50aW1lL0ludGxPYmplY3QuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxQ
bHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGUuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bFJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSlNE
YXRhVmlld1Byb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0
b3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggYTc0NDUwY2E3OTFjN2ZhOGQ2MmM4YjkwOWFhZmU0MTRl
OTQ2ZWYwZC4uZGFmOTQzMmE5MTZlNTc0NmZkZDllMTg4M2I5N2I2YWRhZDMxZmM5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVs
aXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNm
aWxlbGlzdApAQCAtMzMsNiArMzMsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdQogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxPYmplY3Qu
bHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5s
dXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaAorJChCVUlMVF9QUk9EVUNU
U19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2Jq
ZWN0Lmx1dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4
IGU5ZDgwNGQ5ZThiZTVjMzQ1ZWY0NzIxOWUwZTk5NmQzMTliYmY5MDcuLmU3ZjIxMzEzOWFjOGM0
NjY0NjM0ODdiYTc2NzcxNWJmNjM1ZTAzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCkBAIC0xNTMsNiArMTUzLDggQEAgT0JKRUNUX0xVVF9IRUFERVJTID0g
XAogICAgIEludGxPYmplY3QubHV0LmggXAogICAgIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9y
Lmx1dC5oIFwKICAgICBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUubHV0LmggXAorICAgIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdFByb3RvdHlwZS5sdXQuaCBcCiAgICAgSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaCBc
CiAgICAgSlNHbG9iYWxPYmplY3QubHV0LmggXAogICAgIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IubHV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNWQwODM3NmRi
ZTA4ODI0YjA1M2ZiMDU5Mjk1YjVlMDkxMzBiNmZjLi40YWUxOGU0NzBlM2Y5YzJkNzM3ODNlNGMy
OTY5MmY0Y2Q3N2M5Y2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDMzMiw2
ICs0MzMyLDEyIEBACiAJCUExRTA0NTFCMUMyNUI0QjEwMEJCNjYzQyAvKiBTdHJpbmdQcm90b3R5
cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBTdHJpbmdQcm90
b3R5cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRkUxRUIwMUMyQzUzN0Uw
MEEyODlGRiAvKiBEYXRlUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBwYXRoID0gRGF0ZVByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTI3OTU4RDdGQTExNDJCMEFDOUUzNjREIC8qIFdhc21Db250ZXh0SW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQ29udGV4dElubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNCRjg4NEIyNDQ4MEJERTAwMUI5RjM1IC8qIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQkY4ODRDMjQ0ODBCREYwMDFCOUYzNSAvKiBJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTNCRjg4NEQyNDQ4MEJERjAwMUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBM0JGODg0RTI0NDgwQkUwMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBM0JGODg0RjI0NDgwQkUwMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1h
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNCRjg4NTAyNDQ4
MEJFMTAwMUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBM0ZGOUJDNTIyMzQ3NDY2MDBCMUE5QUIgLyogWWFyckZsYWdzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJGbGFncy5oOyBwYXRoID0geWFy
ci9ZYXJyRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNGRjlCQzYyMjM0
NzQ2NjAwQjFBOUFCIC8qIFlhcnJGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBZYXJyRmxhZ3MuY3BwOyBwYXRoID0geWFyci9ZYXJyRmxhZ3MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2
YVNjcmlwdENhbGxGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTcyNjMsNiArNzI2OSwxMiBAQAogCQkJCTdENUZCMTkwMjA3NDRCRjEwMDVEREY2NCAvKiBJbnRs
UGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5oICovLAogCQkJCTdENUZCMTkxMjA3NDRCRjEwMDVEREY2
NCAvKiBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwICovLAogCQkJCTdENUZCMThEMjA3NDRB
RTgwMDVEREY2NCAvKiBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaCAqLywKKwkJCQlBM0JGODg0
RjI0NDgwQkUwMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgKi8sCisJCQkJ
QTNCRjg4NTAyNDQ4MEJFMTAwMUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCAqLywK
KwkJCQlBM0JGODg0RDI0NDgwQkRGMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdENv
bnN0cnVjdG9yLmNwcCAqLywKKwkJCQlBM0JGODg0RTI0NDgwQkUwMDAxQjlGMzUgLyogSW50bFJl
bGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggKi8sCisJCQkJQTNCRjg4NEIyNDQ4MEJERTAw
MUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwICovLAorCQkJCUEz
QkY4ODRDMjQ0ODBCREYwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBl
LmggKi8sCiAJCQkJMEYyNzVGMkMxRUNFMDc5NjAwNjIwRDQ3IC8qIEludHJpbnNpYy5jcHAgKi8s
CiAJCQkJODZCRjY0MkExNDhEQjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovLAogCQkJCThC
OUY2RDU1MUQ1OTEyRkEwMDFDNzM5RiAvKiBJdGVyYXRpb25LaW5kLmggKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKaW5kZXggYjM2OTJmNTBlZjFmZGY0MTBlZmI0Y2MwZWJmOTc2ZmM2MWY5
YjRhNy4uMGY0YzUwZGYzNjdjNjU2MDhhMGFmNjI4M2EwZGM1MjZhOTQxMGE1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtODE5LDYgKzgxOSw5IEBAIHJ1bnRpbWUvSW50bE9iamVj
dC5jcHAKIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAogcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXNDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAor
cnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAorcnVudGltZS9JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCitydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQ
cm90b3R5cGUuY3BwCiBydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKIHJ1bnRpbWUvSXRl
cmF0b3JQcm90b3R5cGUuY3BwCiBydW50aW1lL0pTQXJyYXkuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAppbmRleCBlMmRjODg3YjM4
NDQzNGUwNTE2NjZhMGI0MjY1MjAwMzhmNGI1OWY0Li5kMTY0YmE0YmVmOGI0ZWVmZjkzMTczN2Iz
OTUzZjM0ZmUxMjMyYTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTQ5LDYgKzQ5LDcgQEAKICAgICBtYWNybyhQcm9taXNl
KSBcCiAgICAgbWFjcm8oUmVmbGVjdCkgXAogICAgIG1hY3JvKFJlZ0V4cCkgXAorICAgIG1hY3Jv
KFJlbGF0aXZlVGltZUZvcm1hdCkgXAogICAgIG1hY3JvKFJlbW90ZVBsYXliYWNrKSBcCiAgICAg
bWFjcm8oU2V0KSBcCiAgICAgbWFjcm8oU2hhcmVkQXJyYXlCdWZmZXIpIFwKQEAgLTE3OCw2ICsx
NzksNyBAQAogICAgIG1hY3JvKHN0YWNrKSBcCiAgICAgbWFjcm8oc3RhY2tUcmFjZUxpbWl0KSBc
CiAgICAgbWFjcm8oc3RpY2t5KSBcCisgICAgbWFjcm8oc3R5bGUpIFwKICAgICBtYWNybyhzdWJh
cnJheSkgXAogICAgIG1hY3JvKHN1bW1hcnkpIFwKICAgICBtYWNybyh0YXJnZXQpIFwKQEAgLTE5
Myw2ICsxOTUsNyBAQAogICAgIG1hY3JvKHRvTG9jYWxlU3RyaW5nKSBcCiAgICAgbWFjcm8odG9Q
cmVjaXNpb24pIFwKICAgICBtYWNybyh0b1N0cmluZykgXAorICAgIG1hY3JvKHR5cGUpIFwKICAg
ICBtYWNybyh1aWQpIFwKICAgICBtYWNybyh1bmljb2RlKSBcCiAgICAgbWFjcm8odXNhZ2UpIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZv
cm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXQuY3BwCmluZGV4IDAwMzAyZmU0YjEzNWQxZDgzYTRjZGM4MWRiN2QxMzgyMTBmYzY3ZTguLjJk
MTMzZDYzYWViYzRkYjg3NTk5YzgwZGNiZDBmMTBiZjdhODlkMTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtMTAy
OSw3ICsxMDI5LDYgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHYKICAgICAgICAgcmV0dXJuIHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAogICAgIGF1dG8gcmVz
dWx0U3RyaW5nID0gU3RyaW5nKHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCk7Ci0gICAgYXV0
byB0eXBlUHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiKTsK
ICAgICBhdXRvIGxpdGVyYWxTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJsaXRlcmFs
Il9zKTsKIAogICAgIGludDMyX3QgcHJldmlvdXNFbmRJbmRleCA9IDA7CkBAIC0xMDQzLDcgKzEw
NDIsNyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdgogICAgICAgICBpZiAocHJldmlvdXNFbmRJ
bmRleCA8IGJlZ2luSW5kZXgpIHsKICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBqc1N0cmluZyh2
bSwgcmVzdWx0U3RyaW5nLnN1YnN0cmluZyhwcmV2aW91c0VuZEluZGV4LCBiZWdpbkluZGV4IC0g
cHJldmlvdXNFbmRJbmRleCkpOwogICAgICAgICAgICAgSlNPYmplY3QqIHBhcnQgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwotICAgICAgICAgICAgcGFydC0+cHV0RGlyZWN0
KHZtLCB0eXBlUHJvcGVydHlOYW1lLCBsaXRlcmFsU3RyaW5nKTsKKyAgICAgICAgICAgIHBhcnQt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwgbGl0ZXJhbFN0cmluZyk7CiAg
ICAgICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCB2
YWx1ZSk7CiAgICAgICAgICAgICBwYXJ0cy0+cHVzaChnbG9iYWxPYmplY3QsIHBhcnQpOwogICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTEwNTQsNyArMTA1
Myw3IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2CiAgICAgICAgICAgICBhdXRvIHR5cGUgPSBq
c1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVURhdGVGb3JtYXRGaWVsZChmaWVsZFR5cGUpKSk7
CiAgICAgICAgICAgICBhdXRvIHZhbHVlID0ganNTdHJpbmcodm0sIHJlc3VsdFN0cmluZy5zdWJz
dHJpbmcoYmVnaW5JbmRleCwgZW5kSW5kZXggLSBiZWdpbkluZGV4KSk7CiAgICAgICAgICAgICBK
U09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAg
ICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHR5cGVQcm9wZXJ0eU5hbWUsIHR5cGUpOworICAg
ICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCB0eXBl
KTsKICAgICAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dmFs
dWUsIHZhbHVlKTsKICAgICAgICAgICAgIHBhcnRzLT5wdXNoKGdsb2JhbE9iamVjdCwgcGFydCk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRleCBj
YTQyNzk2ODZhNmZhYjBkOGRkMmRjNWJlMWZiYTE5MWQxNzJjOGM4Li45NjhlYjVlMjc3YzA5ZmM4
ZGYzNGRiYTRkYWFiMTIxN2YwMGE2NDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMiw2ICsyLDcgQEAKICAqIENvcHly
aWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgU3Vrb2xzYWsgU2Frc2h1d29uZyAoc3Vrb2xzYWtAZ21haWwu
Y29tKQogICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5NSw3ICsxOTYs
NyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogCiAgICAgbV9udW1iZXJpbmdTeXN0ZW0gPSBy
ZXN1bHQuZ2V0KCJudSJfcyk7CiAKLSAgICBTdHJpbmcgc3R5bGVTdHJpbmcgPSBpbnRsU3RyaW5n
T3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InN0eWxlIiksIHsgImRlY2ltYWwiLCAicGVyY2VudCIsICJjdXJyZW5jeSIgfSwgInN0eWxlIG11
c3QgYmUgZWl0aGVyIFwiZGVjaW1hbFwiLCBcInBlcmNlbnRcIiwgb3IgXCJjdXJyZW5jeVwiIiwg
ImRlY2ltYWwiKTsKKyAgICBTdHJpbmcgc3R5bGVTdHJpbmcgPSBpbnRsU3RyaW5nT3B0aW9uKGds
b2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIHsgImRlY2ltYWwi
LCAicGVyY2VudCIsICJjdXJyZW5jeSIgfSwgInN0eWxlIG11c3QgYmUgZWl0aGVyIFwiZGVjaW1h
bFwiLCBcInBlcmNlbnRcIiwgb3IgXCJjdXJyZW5jeVwiIiwgImRlY2ltYWwiKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmIChzdHlsZVN0cmluZyA9PSAi
ZGVjaW1hbCIpCiAgICAgICAgIG1fc3R5bGUgPSBTdHlsZTo6RGVjaW1hbDsKQEAgLTQ0MSw3ICs0
NDIsNyBAQCBKU09iamVjdCogSW50bE51bWJlckZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1
Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc1N0cmluZyh2bSwgbV9sb2NhbGUpKTsKICAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm51bWJlcmluZ1N5c3RlbSwg
anNTdHJpbmcodm0sIG1fbnVtYmVyaW5nU3lzdGVtKSk7Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3R5bGUiKSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCBzdHlsZVN0cmluZyhtX3N0eWxlKSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc3R5bGVT
dHJpbmcobV9zdHlsZSkpKTsKICAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6Q3VycmVuY3kpIHsK
ICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAiY3VycmVuY3kiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX2N1cnJlbmN5KSk7CiAgICAg
ICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImN1
cnJlbmN5RGlzcGxheSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIGN1cnJlbmN5RGlzcGxheVN0
cmluZyhtX2N1cnJlbmN5RGlzcGxheSkpKTsKQEAgLTUwMyw2ICs1MDQsNTAgQEAgQVNDSUlMaXRl
cmFsIEludGxOdW1iZXJGb3JtYXQ6OnBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMg
ZmllbGQsIGRvdWJsZQogICAgIHJldHVybiAidW5rbm93biJfczsKIH0KIAordm9pZCBJbnRsTnVt
YmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgZG91YmxlIHZhbHVlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgVUZpZWxkUG9zaXRp
b25JdGVyYXRvciogaXRlcmF0b3IsIEpTQXJyYXkqIHBhcnRzLCBKU1N0cmluZyogdW5pdCkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBzdHJpbmdMZW5ndGggPSBmb3JtYXR0ZWQu
bGVuZ3RoKCk7CisKKyAgICBpbnQzMl90IGxpdGVyYWxGaWVsZFR5cGUgPSAtMTsKKyAgICBhdXRv
IGxpdGVyYWxGaWVsZCA9IEludGxOdW1iZXJGb3JtYXRGaWVsZChsaXRlcmFsRmllbGRUeXBlLCBz
dHJpbmdMZW5ndGgpOworICAgIFZlY3RvcjxJbnRsTnVtYmVyRm9ybWF0RmllbGQ+IGZpZWxkcyhz
dHJpbmdMZW5ndGgsIGxpdGVyYWxGaWVsZCk7CisgICAgaW50MzJfdCBiZWdpbkluZGV4ID0gMDsK
KyAgICBpbnQzMl90IGVuZEluZGV4ID0gMDsKKyAgICBhdXRvIGZpZWxkVHlwZSA9IHVmaWVsZHBv
c2l0ZXJfbmV4dChpdGVyYXRvciwgJmJlZ2luSW5kZXgsICZlbmRJbmRleCk7CisgICAgd2hpbGUg
KGZpZWxkVHlwZSA+PSAwKSB7CisgICAgICAgIGF1dG8gc2l6ZSA9IGVuZEluZGV4IC0gYmVnaW5J
bmRleDsKKyAgICAgICAgZm9yIChhdXRvIGkgPSBiZWdpbkluZGV4OyBpIDwgZW5kSW5kZXg7ICsr
aSkgeworICAgICAgICAgICAgLy8gT25seSBvdmVycmlkZSBwcmV2aW91cyB2YWx1ZSBpZiBuZXcg
dmFsdWUgaXMgbW9yZSBzcGVjaWZpYy4KKyAgICAgICAgICAgIGlmIChmaWVsZHNbaV0uc2l6ZSA+
PSBzaXplKQorICAgICAgICAgICAgICAgIGZpZWxkc1tpXSA9IEludGxOdW1iZXJGb3JtYXRGaWVs
ZChmaWVsZFR5cGUsIHNpemUpOworICAgICAgICB9CisgICAgICAgIGZpZWxkVHlwZSA9IHVmaWVs
ZHBvc2l0ZXJfbmV4dChpdGVyYXRvciwgJmJlZ2luSW5kZXgsICZlbmRJbmRleCk7CisgICAgfQor
CisgICAgYXV0byBsaXRlcmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJh
bCJfcyk7CisgICAgYXV0byB1bml0TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1
bml0Iik7CisKKyAgICBzaXplX3QgY3VycmVudEluZGV4ID0gMDsKKyAgICB3aGlsZSAoY3VycmVu
dEluZGV4IDwgc3RyaW5nTGVuZ3RoKSB7CisgICAgICAgIGF1dG8gc3RhcnRJbmRleCA9IGN1cnJl
bnRJbmRleDsKKyAgICAgICAgYXV0byBmaWVsZFR5cGUgPSBmaWVsZHNbY3VycmVudEluZGV4XS50
eXBlOworICAgICAgICB3aGlsZSAoY3VycmVudEluZGV4IDwgc3RyaW5nTGVuZ3RoICYmIGZpZWxk
c1tjdXJyZW50SW5kZXhdLnR5cGUgPT0gZmllbGRUeXBlKQorICAgICAgICAgICAgKytjdXJyZW50
SW5kZXg7CisgICAgICAgIGF1dG8gcGFydFR5cGUgPSBmaWVsZFR5cGUgPT0gbGl0ZXJhbEZpZWxk
VHlwZSA/IGxpdGVyYWxTdHJpbmcgOiBqc1N0cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJl
ckZvcm1hdEZpZWxkcyhmaWVsZFR5cGUpLCB2YWx1ZSkpOworICAgICAgICBhdXRvIHBhcnRWYWx1
ZSA9IGpzU3Vic3RyaW5nKHZtLCBmb3JtYXR0ZWQsIHN0YXJ0SW5kZXgsIGN1cnJlbnRJbmRleCAt
IHN0YXJ0SW5kZXgpOworICAgICAgICBKU09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+dHlwZSwgcGFydFR5cGUpOworICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnZhbHVlLCBwYXJ0VmFsdWUpOworICAgICAgICBpZiAodW5pdCkKKyAg
ICAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdW5pdE5hbWUsIHVuaXQpOworICAgICAgICBw
YXJ0cy0+cHVzaChnbG9iYWxPYmplY3QsIHBhcnQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOworICAgIH0KK30KKwogSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0
Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1
ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CkBAIC01MjAsNyArNTY1LDYg
QEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWwKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3MpOwogCi0gICAgc3RhdHVzID0gVV9a
RVJPX0VSUk9SOwogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdCgzMik7CiAgICAgYXV0byBy
ZXN1bHRMZW5ndGggPSB1bnVtX2Zvcm1hdERvdWJsZUZvckZpZWxkcyhtX251bWJlckZvcm1hdC5n
ZXQoKSwgdmFsdWUsIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCksIGZpZWxkSXRyLmdldCgp
LCAmc3RhdHVzKTsKICAgICBpZiAoc3RhdHVzID09IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKSB7
CkBAIC01MzEsNDUgKzU3NSwxNCBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRv
UGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbAogICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CiAKLSAgICBpbnQz
Ml90IGxpdGVyYWxGaWVsZFR5cGUgPSAtMTsKLSAgICBhdXRvIGxpdGVyYWxGaWVsZCA9IEludGxO
dW1iZXJGb3JtYXRGaWVsZChsaXRlcmFsRmllbGRUeXBlLCByZXN1bHRMZW5ndGgpOwotICAgIFZl
Y3RvcjxJbnRsTnVtYmVyRm9ybWF0RmllbGQ+IGZpZWxkcyhyZXN1bHRMZW5ndGgsIGxpdGVyYWxG
aWVsZCk7Ci0gICAgaW50MzJfdCBiZWdpbkluZGV4ID0gMDsKLSAgICBpbnQzMl90IGVuZEluZGV4
ID0gMDsKLSAgICBhdXRvIGZpZWxkVHlwZSA9IHVmaWVsZHBvc2l0ZXJfbmV4dChmaWVsZEl0ci5n
ZXQoKSwgJmJlZ2luSW5kZXgsICZlbmRJbmRleCk7Ci0gICAgd2hpbGUgKGZpZWxkVHlwZSA+PSAw
KSB7Ci0gICAgICAgIGF1dG8gc2l6ZSA9IGVuZEluZGV4IC0gYmVnaW5JbmRleDsKLSAgICAgICAg
Zm9yIChhdXRvIGkgPSBiZWdpbkluZGV4OyBpIDwgZW5kSW5kZXg7ICsraSkgewotICAgICAgICAg
ICAgLy8gT25seSBvdmVycmlkZSBwcmV2aW91cyB2YWx1ZSBpZiBuZXcgdmFsdWUgaXMgbW9yZSBz
cGVjaWZpYy4KLSAgICAgICAgICAgIGlmIChmaWVsZHNbaV0uc2l6ZSA+PSBzaXplKQotICAgICAg
ICAgICAgICAgIGZpZWxkc1tpXSA9IEludGxOdW1iZXJGb3JtYXRGaWVsZChmaWVsZFR5cGUsIHNp
emUpOwotICAgICAgICB9Ci0gICAgICAgIGZpZWxkVHlwZSA9IHVmaWVsZHBvc2l0ZXJfbmV4dChm
aWVsZEl0ci5nZXQoKSwgJmJlZ2luSW5kZXgsICZlbmRJbmRleCk7Ci0gICAgfQorICAgIGF1dG8g
cmVzdWx0U3RyaW5nID0gU3RyaW5nKHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCk7CiAKICAg
ICBKU0FycmF5KiBwYXJ0cyA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5h
cnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29u
dGlndW91cyksIDApOwogICAgIGlmICghcGFydHMpCiAgICAgICAgIHJldHVybiB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7Ci0gICAgdW5zaWduZWQgaW5kZXggPSAw
OwogCi0gICAgYXV0byByZXN1bHRTdHJpbmcgPSBTdHJpbmcocmVzdWx0LmRhdGEoKSwgcmVzdWx0
TGVuZ3RoKTsKLSAgICBhdXRvIHR5cGVQcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAidHlwZSIpOwotICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9IGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgImxpdGVyYWwiX3MpOwotCi0gICAgaW50MzJfdCBjdXJyZW50SW5kZXggPSAwOwot
ICAgIHdoaWxlIChjdXJyZW50SW5kZXggPCByZXN1bHRMZW5ndGgpIHsKLSAgICAgICAgYXV0byBz
dGFydEluZGV4ID0gY3VycmVudEluZGV4OwotICAgICAgICBhdXRvIGZpZWxkVHlwZSA9IGZpZWxk
c1tjdXJyZW50SW5kZXhdLnR5cGU7Ci0gICAgICAgIHdoaWxlIChjdXJyZW50SW5kZXggPCByZXN1
bHRMZW5ndGggJiYgZmllbGRzW2N1cnJlbnRJbmRleF0udHlwZSA9PSBmaWVsZFR5cGUpCi0gICAg
ICAgICAgICArK2N1cnJlbnRJbmRleDsKLSAgICAgICAgYXV0byBwYXJ0VHlwZSA9IGZpZWxkVHlw
ZSA9PSBsaXRlcmFsRmllbGRUeXBlID8gbGl0ZXJhbFN0cmluZyA6IGpzU3RyaW5nKHZtLCBwYXJ0
VHlwZVN0cmluZyhVTnVtYmVyRm9ybWF0RmllbGRzKGZpZWxkVHlwZSksIHZhbHVlKSk7Ci0gICAg
ICAgIGF1dG8gcGFydFZhbHVlID0ganNTdWJzdHJpbmcodm0sIHJlc3VsdFN0cmluZywgc3RhcnRJ
bmRleCwgY3VycmVudEluZGV4IC0gc3RhcnRJbmRleCk7Ci0gICAgICAgIEpTT2JqZWN0KiBwYXJ0
ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcGFydC0+cHV0
RGlyZWN0KHZtLCB0eXBlUHJvcGVydHlOYW1lLCBwYXJ0VHlwZSk7Ci0gICAgICAgIHBhcnQtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUsIHBhcnRWYWx1ZSk7Ci0gICAgICAg
IHBhcnRzLT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4KyssIHBhcnQpOwotICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIH0KKyAgICBmb3JtYXRU
b1BhcnRzSW50ZXJuYWwoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgcmVzdWx0U3RyaW5nLCBmaWVsZEl0
ci5nZXQoKSwgcGFydHMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAK
ICAgICByZXR1cm4gcGFydHM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0LmgKaW5kZXggMmIwNmYwN2ZjYWY0Y2RiN2VjOTk0OGRhYWY2ZDM2
MTkzNzg3YWQ5MS4uOWYxMGI1ZDQzNjcwYjhkZTJmNmY0MGU0ZDc3MzM4NWUzNTZmMTgwMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaApA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVy
IChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50
ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTU3LDEyICs1OCwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnNW
YWx1ZSk7CiAgICAgSlNWYWx1ZSBmb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUpOwogICAg
IEpTVmFsdWUgZm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgSlNCaWdJbnQqKTsKLSAgICBKU1ZhbHVl
IGZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUgdmFsdWUpOworICAgIEpTVmFs
dWUgZm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCosIGRvdWJsZSk7CiAgICAgSlNPYmplY3Qq
IHJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCopOwogCiAgICAgSlNCb3VuZEZ1bmN0aW9u
KiBib3VuZEZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRGb3JtYXQuZ2V0KCk7IH0KICAg
ICB2b2lkIHNldEJvdW5kRm9ybWF0KFZNJiwgSlNCb3VuZEZ1bmN0aW9uKik7CiAKKyAgICBzdGF0
aWMgdm9pZCBmb3JtYXRUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUsIGNv
bnN0IFN0cmluZyYgZm9ybWF0dGVkLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiwgSlNBcnJheSos
IEpTU3RyaW5nKiB1bml0ID0gbnVsbHB0cik7CisKIHByb3RlY3RlZDoKICAgICBJbnRsTnVtYmVy
Rm9ybWF0KFZNJiwgU3RydWN0dXJlKik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCBmYjJi
YjViNjkyY2NlYzAwZTFlNGFiNzY0MjQ1N2UxMTFhNjIzMzUxLi41N2I1OTZkMWVhMjRlMmZhODM5
ZjU0NTJkNWVlZjA3MmE2N2I3YjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0LmNwcApAQCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAxNSBB
bmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgU3Vrb2xzYWsgU2Frc2h1d29uZyAoc3Vrb2xzYWtAZ21haWwuY29tKQogICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDE1ICs0MCwxNSBAQAogI2luY2x1ZGUg
IkludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXND
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oIgorI2lu
Y2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIklu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJMb29rdXAuaCIKICNp
bmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVk
ZSA8dW5pY29kZS91Y29sLmg+Ci0jaW5jbHVkZSA8dW5pY29kZS91ZGF0Lmg+CiAjaW5jbHVkZSA8
dW5pY29kZS91bG9jLmg+Ci0jaW5jbHVkZSA8dW5pY29kZS91bnVtLmg+CiAjaW5jbHVkZSA8dW5p
Y29kZS91bnVtc3lzLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvTGFuZ3VhZ2UuaD4KQEAgLTExNCwxNyArMTE1LDI2IEBAIHN0cnVjdCBNYXRjaGVyUmVzdWx0
IHsKIGNvbnN0IENsYXNzSW5mbyBJbnRsT2JqZWN0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFz
ZTo6c19pbmZvLCAmaW50bE9iamVjdFRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEludGxPYmplY3QpIH07CiAKIEludGxPYmplY3Q6OkludGxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKLSAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAg
ICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKIHsKIH0KIAotSW50bE9iamVjdCogSW50bE9iamVjdDo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitJbnRsT2JqZWN0KiBJbnRsT2Jq
ZWN0OjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKICAgICBJbnRsT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxJbnRsT2JqZWN0Pih2bS5oZWFwKSkgSW50bE9iamVjdCh2bSwgc3RydWN0
dXJlKTsKLSAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBvYmplY3QtPmZpbmlz
aENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKK3Zv
aWQgSW50bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBpZiAoT3B0
aW9uczo6dXNlSW50bFJlbGF0aXZlVGltZUZvcm1hdCgpKSB7CisgICAgICAgIGF1dG8qIHJlbGF0
aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVj
dG9yOjpjcmVhdGUodm0sIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5
cGUoKSksIGpzQ2FzdDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKj4oZ2xvYmFsT2Jq
ZWN0LT5yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0
KCkpKTsKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPlJlbGF0aXZlVGltZUZvcm1hdCwgcmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3Is
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAg
ICB9Cit9CisKIFN0cnVjdHVyZSogSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7CiAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwpAQCAtMTY0LDI2ICsx
NzQsNyBAQCBzdGF0aWMgdm9pZCBhZGRNaXNzaW5nU2NyaXB0TG9jYWxlcyhIYXNoU2V0PFN0cmlu
Zz4mIGF2YWlsYWJsZUxvY2FsZXMpCiAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMuYWRkKHpoX1RX
X1N0cmluZy5nZXQoKSk7CiB9CiAKLWNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bENvbGxhdG9y
QXZhaWxhYmxlTG9jYWxlcygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8
U3RyaW5nPj4gY2FjaGVkQXZhaWxhYmxlTG9jYWxlczsKLSAgICBIYXNoU2V0PFN0cmluZz4mIGF2
YWlsYWJsZUxvY2FsZXMgPSBjYWNoZWRBdmFpbGFibGVMb2NhbGVzLmdldCgpOwotCi0gICAgc3Rh
dGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlOwotICAgIHN0ZDo6Y2FsbF9vbmNlKGlu
aXRpYWxpemVPbmNlLCBbJl0gewotICAgICAgICBBU1NFUlQoYXZhaWxhYmxlTG9jYWxlcy5pc0Vt
cHR5KCkpOwotICAgICAgICBpbnQzMl90IGNvdW50ID0gdWNvbF9jb3VudEF2YWlsYWJsZSgpOwot
ICAgICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAg
ICBTdHJpbmcgbG9jYWxlID0gY29udmVydElDVUxvY2FsZVRvQkNQNDdMYW5ndWFnZVRhZyh1Y29s
X2dldEF2YWlsYWJsZShpKSk7Ci0gICAgICAgICAgICBpZiAoIWxvY2FsZS5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICAgICAgYXZhaWxhYmxlTG9jYWxlcy5hZGQobG9jYWxlKTsKLSAgICAgICAgfQot
ICAgICAgICBhZGRNaXNzaW5nU2NyaXB0TG9jYWxlcyhhdmFpbGFibGVMb2NhbGVzKTsKLSAgICB9
KTsKLSAgICByZXR1cm4gYXZhaWxhYmxlTG9jYWxlczsKLX0KLQotY29uc3QgSGFzaFNldDxTdHJp
bmc+JiBpbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkKK2NvbnN0IEhhc2hTZXQ8
U3RyaW5nPiYgaW50bEF2YWlsYWJsZUxvY2FsZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PFN0cmluZz4+IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXM7CiAgICAgSGFzaFNl
dDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzID0gY2FjaGVkQXZhaWxhYmxlTG9jYWxlcy5nZXQo
KTsKQEAgLTE5MSw5ICsxODIsOSBAQCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxEYXRlVGlt
ZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKQogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0
aWFsaXplT25jZTsKICAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgWyZdIHsKICAg
ICAgICAgQVNTRVJUKGF2YWlsYWJsZUxvY2FsZXMuaXNFbXB0eSgpKTsKLSAgICAgICAgaW50MzJf
dCBjb3VudCA9IHVkYXRfY291bnRBdmFpbGFibGUoKTsKKyAgICAgICAgaW50MzJfdCBjb3VudCA9
IHVsb2NfY291bnRBdmFpbGFibGUoKTsKICAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkgewotICAgICAgICAgICAgU3RyaW5nIGxvY2FsZSA9IGNvbnZlcnRJQ1VMb2Nh
bGVUb0JDUDQ3TGFuZ3VhZ2VUYWcodWRhdF9nZXRBdmFpbGFibGUoaSkpOworICAgICAgICAgICAg
U3RyaW5nIGxvY2FsZSA9IGNvbnZlcnRJQ1VMb2NhbGVUb0JDUDQ3TGFuZ3VhZ2VUYWcodWxvY19n
ZXRBdmFpbGFibGUoaSkpOwogICAgICAgICAgICAgaWYgKCFsb2NhbGUuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMuYWRkKGxvY2FsZSk7CiAgICAgICAgIH0KQEAg
LTIwMiw3ICsxOTMsNyBAQCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxEYXRlVGltZUZvcm1h
dEF2YWlsYWJsZUxvY2FsZXMoKQogICAgIHJldHVybiBhdmFpbGFibGVMb2NhbGVzOwogfQogCi1j
b25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkK
K2NvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxlcygpCiB7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nPj4gY2FjaGVkQXZhaWxh
YmxlTG9jYWxlczsKICAgICBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMgPSBjYWNo
ZWRBdmFpbGFibGVMb2NhbGVzLmdldCgpOwpAQCAtMjEwLDkgKzIwMSw5IEBAIGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYgaW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKQogICAgIHN0YXRp
YyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKICAgICBzdGQ6OmNhbGxfb25jZShpbml0
aWFsaXplT25jZSwgWyZdIHsKICAgICAgICAgQVNTRVJUKGF2YWlsYWJsZUxvY2FsZXMuaXNFbXB0
eSgpKTsKLSAgICAgICAgaW50MzJfdCBjb3VudCA9IHVudW1fY291bnRBdmFpbGFibGUoKTsKKyAg
ICAgICAgaW50MzJfdCBjb3VudCA9IHVjb2xfY291bnRBdmFpbGFibGUoKTsKICAgICAgICAgZm9y
IChpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgU3RyaW5nIGxv
Y2FsZSA9IGNvbnZlcnRJQ1VMb2NhbGVUb0JDUDQ3TGFuZ3VhZ2VUYWcodW51bV9nZXRBdmFpbGFi
bGUoaSkpOworICAgICAgICAgICAgU3RyaW5nIGxvY2FsZSA9IGNvbnZlcnRJQ1VMb2NhbGVUb0JD
UDQ3TGFuZ3VhZ2VUYWcodWNvbF9nZXRBdmFpbGFibGUoaSkpOwogICAgICAgICAgICAgaWYgKCFs
b2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMuYWRkKGxv
Y2FsZSk7CiAgICAgICAgIH0KQEAgLTMyOCwxMyArMzE5LDE1IEBAIGJvb2wgaXNVbmljb2RlTG9j
YWxlSWRlbnRpZmllclR5cGUoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgQVNTRVJUKCFzdHJp
bmcuaXNOdWxsKCkpOwogCi0gICAgYXV0byBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0gICAg
aWYgKGxlbmd0aCA8IDMgfHwgbGVuZ3RoID4gOCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgZm9yIChhdXRvIGNoYXJhY3RlciA6IHN0cmluZy5jb2RlVW5pdHMoKSkgewotICAgICAgICBp
ZiAoIWlzQVNDSUlBbHBoYW51bWVyaWMoY2hhcmFjdGVyKSkKKyAgICBmb3IgKGF1dG8gcGFydCA6
IHN0cmluZy5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCctJykpIHsKKyAgICAgICAgYXV0byBs
ZW5ndGggPSBwYXJ0Lmxlbmd0aCgpOworICAgICAgICBpZiAobGVuZ3RoIDwgMyB8fCBsZW5ndGgg
PiA4KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGZvciAoYXV0byBjaGFy
YWN0ZXIgOiBwYXJ0LmNvZGVVbml0cygpKSB7CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlBbHBo
YW51bWVyaWMoY2hhcmFjdGVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk3OSw4ICs5NzIsNiBAQCBKU1Zh
bHVlIHN1cHBvcnRlZExvY2FsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
SGFzaFNldDxTdHJpbmc+JiBhdgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFs
dWUoKSk7CiAKICAgICBQcm9wZXJ0eURlc2NyaXB0b3IgZGVzYzsKLSAgICBkZXNjLnNldENvbmZp
Z3VyYWJsZShmYWxzZSk7Ci0gICAgZGVzYy5zZXRXcml0YWJsZShmYWxzZSk7CiAKICAgICBzaXpl
X3QgbGVuID0ga2V5cy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW47ICsr
aSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IDYw
YzAwMjUwMTljYzBmNzExNmM5Mzc3MzQ4YTQzNGUyMWRmNWQyZWYuLjZhZjZmNzM5ZmQzYzljMmJi
YjM3MWQ2YzBiYzM2MjM1OWFhYmIxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0LmgKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1
IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKICAqIENvcHlyaWdodCAo
QykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MywyMCArNDQsMjMgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CiAgICAgfQogCi0gICAgc3RhdGljIEludGxP
YmplY3QqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBJbnRsT2JqZWN0KiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAK
ICAgICBERUNMQVJFX0lORk87CiAKIHByaXZhdGU6CiAgICAgSW50bE9iamVjdChWTSYsIFN0cnVj
dHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwog
fTsKIAogU3RyaW5nIGRlZmF1bHRMb2NhbGUoSlNHbG9iYWxPYmplY3QqKTsKK2NvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYgaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsKIGNvbnN0IEhhc2hTZXQ8U3RyaW5n
PiYgaW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxlcygpOwotY29uc3QgSGFzaFNldDxTdHJpbmc+
JiBpbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7Ci1jb25zdCBIYXNoU2V0PFN0
cmluZz4mIGludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7Ci1pbmxpbmUgY29uc3Qg
SGFzaFNldDxTdHJpbmc+JiBpbnRsUGx1cmFsUnVsZXNBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1
cm4gaW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsgfQoraW5saW5lIGNvbnN0IEhh
c2hTZXQ8U3RyaW5nPiYgaW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0
dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7IH0KK2lubGluZSBjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIGludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWls
YWJsZUxvY2FsZXMoKTsgfQoraW5saW5lIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bFBsdXJh
bFJ1bGVzQXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7
IH0KK2lubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRB
dmFpbGFibGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQogCiBi
b29sIGludGxCb29sZWFuT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zLCBQ
cm9wZXJ0eU5hbWUsIGJvb2wmIHVzZXNGYWxsYmFjayk7CiBTdHJpbmcgaW50bFN0cmluZ09wdGlv
bihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgb3B0aW9ucywgUHJvcGVydHlOYW1lLCBzdGQ6Omlu
aXRpYWxpemVyX2xpc3Q8Y29uc3QgY2hhcio+IHZhbHVlcywgY29uc3QgY2hhciogbm90Rm91bmQs
IGNvbnN0IGNoYXIqIGZhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCmluZGV4IGMwYjZlNGVhZGUxYWQwMDQzYzM1ZGM5YjY1
OTA2ZTBmYzFjNWNhMjUuLjg3NzE2MDEyMjg0YzgxYWRjMzkyN2M2MzFkNGMzNTg3YTIwMWFiODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxl
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVz
LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgSW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXpl
UGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcgdHlwZVN0cmluZyA9IGludGxTdHJpbmdPcHRp
b24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHlw
ZSIpLCB7ICJjYXJkaW5hbCIsICJvcmRpbmFsIiB9LCAidHlwZSBtdXN0IGJlIFwiY2FyZGluYWxc
IiBvciBcIm9yZGluYWxcIiIsICJjYXJkaW5hbCIpOworICAgIFN0cmluZyB0eXBlU3RyaW5nID0g
aW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMt
PnR5cGUsIHsgImNhcmRpbmFsIiwgIm9yZGluYWwiIH0sICJ0eXBlIG11c3QgYmUgXCJjYXJkaW5h
bFwiIG9yIFwib3JkaW5hbFwiIiwgImNhcmRpbmFsIik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKICAgICBtX3R5cGUgPSB0eXBlU3RyaW5nID09ICJvcmRpbmFsIiA/
IFVQTFVSQUxfVFlQRV9PUkRJTkFMIDogVVBMVVJBTF9UWVBFX0NBUkRJTkFMOwogCkBAIC0yMDEs
NyArMjAxLDcgQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAgICBKU09iamVjdCogb3B0aW9ucyA9IGNv
bnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV9s
b2NhbGUpKTsKLSAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJ0eXBlIiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV90eXBlID09IFVQTFVSQUxf
VFlQRV9PUkRJTkFMID8gIm9yZGluYWwiX3MgOiAiY2FyZGluYWwiX3MpKTsKKyAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgbV90eXBlID09IFVQTFVSQUxfVFlQRV9PUkRJTkFMID8gIm9yZGluYWwiX3MgOiAiY2Fy
ZGluYWwiX3MpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJtaW5pbXVtSW50ZWdlckRpZ2l0cyIpLCBqc051bWJlcihtX21pbmltdW1JbnRl
Z2VyRGlnaXRzKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAibWluaW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bUZy
YWN0aW9uRGlnaXRzKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAibWF4aW11bUZyYWN0aW9uRGlnaXRzIiksIGpzTnVtYmVyKG1fbWF4aW11
bUZyYWN0aW9uRGlnaXRzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NTZmYWYwN2E3
N2U1YjQ4ZmNjY2I4ODM5YzQyN2Q0ZjQ0NzEyMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcApAQCAtMCww
ICsxLDM0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVu
dGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNs
dWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OnNf
aW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSW50bFJlbGF0aXZlVGltZUZvcm1hdCkgfTsKKworbmFtZXNwYWNlIElu
dGxSVEZJbnRlcm5hbCB7CitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgcmVsZXZhbnRFeHRlbnNp
b25LZXlzWzFdID0geyAibnUiIH07Cit9CisKK3ZvaWQgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6
VVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJEZWxldGVyOjpvcGVyYXRvcigpKFVSZWxhdGl2ZURh
dGVUaW1lRm9ybWF0dGVyKiByZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKSBjb25zdAoreworICAg
IGlmIChyZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKQorICAgICAgICB1cmVsZGF0ZWZtdF9jbG9z
ZShyZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKTsKK30KKwordm9pZCBJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0OjpVTnVtYmVyRm9ybWF0RGVsZXRlcjo6b3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KiBu
dW1iZXJGb3JtYXQpIGNvbnN0Cit7CisgICAgaWYgKG51bWJlckZvcm1hdCkKKyAgICAgICAgdW51
bV9jbG9zZShudW1iZXJGb3JtYXQpOworfQorCit2b2lkIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6
OlVGaWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyOjpvcGVyYXRvcigpKFVGaWVsZFBvc2l0aW9u
SXRlcmF0b3IqIGl0ZXJhdG9yKSBjb25zdAoreworICAgIGlmIChpdGVyYXRvcikKKyAgICAgICAg
dWZpZWxkcG9zaXRlcl9jbG9zZShpdGVyYXRvcik7Cit9CisKK0ludGxSZWxhdGl2ZVRpbWVGb3Jt
YXQqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQoreworICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqIGZvcm1hdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ+KHZtLmhlYXApKSBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0KHZtLCBzdHJ1Y3R1cmUpOworICAgIGZvcm1hdC0+ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIHJldHVybiBmb3JtYXQ7Cit9CisKK1N0cnVjdHVyZSogSW50bFJlbGF0
aXZlVGltZUZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bFJlbGF0aXZlVGltZUZvcm1h
dDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
KTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworfQorCit2b2lkIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQ6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KiB0aGlzT2JqZWN0ID0ganND
YXN0PEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOworfQorCituYW1lc3BhY2UgSW50bFJURkludGVybmFsIHsK
K3N0YXRpYyBWZWN0b3I8U3RyaW5nPiBsb2NhbGVEYXRhKGNvbnN0IFN0cmluZyYgbG9jYWxlLCBz
aXplX3Qga2V5SW5kZXgpCit7CisgICAgLy8gVGhlIGluZGV4IG9mIHRoZSBleHRlbnNpb24ga2V5
ICJudSIgaW4gcmVsZXZhbnRFeHRlbnNpb25LZXlzIGlzIDAuCisgICAgQVNTRVJUX1VOVVNFRChr
ZXlJbmRleCwgIWtleUluZGV4KTsKKyAgICByZXR1cm4gbnVtYmVyaW5nU3lzdGVtc0ZvckxvY2Fs
ZShsb2NhbGUpOworfQorfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUluaXRp
YWxpemVSZWxhdGl2ZVRpbWVGb3JtYXQKK3ZvaWQgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6aW5p
dGlhbGl6ZVJlbGF0aXZlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXpl
TG9jYWxlTGlzdChnbG9iYWxPYmplY3QsIGxvY2FsZXMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU09iamVjdCogb3B0aW9uczsKKyAgICBpZiAob3B0
aW9uc1ZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkp
OworICAgIGVsc2UgeworICAgICAgICBvcHRpb25zID0gb3B0aW9uc1ZhbHVlLnRvT2JqZWN0KGds
b2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7
CisgICAgfQorCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gb3B0OworICAgIFN0cmluZyBs
b2NhbGVNYXRjaGVyID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZt
LnByb3BlcnR5TmFtZXMtPmxvY2FsZU1hdGNoZXIsIHsgImxvb2t1cCIsICJiZXN0IGZpdCIgfSwg
ImxvY2FsZU1hdGNoZXIgbXVzdCBiZSBlaXRoZXIgXCJsb29rdXBcIiBvciBcImJlc3QgZml0XCIi
LCAiYmVzdCBmaXQiKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwor
ICAgIG9wdC5hZGQodm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlTWF0Y2hlci5zdHJpbmcoKSwgbG9j
YWxlTWF0Y2hlcik7CisKKyAgICBTdHJpbmcgbnVtYmVyaW5nU3lzdGVtID0gaW50bFN0cmluZ09w
dGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPm51bWJlcmluZ1N5
c3RlbSwgeyB9LCBudWxscHRyLCBudWxscHRyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworICAgIGlmICghbnVtYmVyaW5nU3lzdGVtLmlzTnVsbCgpKSB7CisgICAg
ICAgIGlmICghaXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUobnVtYmVyaW5nU3lzdGVtKSkg
eworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJudW1i
ZXJpbmdTeXN0ZW0gaXMgbm90IGEgd2VsbC1mb3JtZWQgbnVtYmVyaW5nIHN5c3RlbSB2YWx1ZSJf
cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgb3B0LmFkZCgibnUi
X3MsIG51bWJlcmluZ1N5c3RlbSk7CisgICAgfQorCisgICAgY29uc3QgSGFzaFNldDxTdHJpbmc+
JiBhdmFpbGFibGVMb2NhbGVzID0gaW50bFJlbGF0aXZlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2Fs
ZXMoKTsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiByZXNvbHZlZCA9IHJlc29sdmVMb2Nh
bGUoZ2xvYmFsT2JqZWN0LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQs
IEludGxSVEZJbnRlcm5hbDo6cmVsZXZhbnRFeHRlbnNpb25LZXlzLCBXVEZfQVJSQVlfTEVOR1RI
KEludGxSVEZJbnRlcm5hbDo6cmVsZXZhbnRFeHRlbnNpb25LZXlzKSwgSW50bFJURkludGVybmFs
Ojpsb2NhbGVEYXRhKTsKKyAgICBtX2xvY2FsZSA9IHJlc29sdmVkLmdldCh2bS5wcm9wZXJ0eU5h
bWVzLT5sb2NhbGUuc3RyaW5nKCkpOworICAgIGlmIChtX2xvY2FsZS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0
aWFsaXplIFJlbGF0aXZlVGltZUZvcm1hdCBkdWUgdG8gaW52YWxpZCBsb2NhbGUiX3MpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9udW1iZXJpbmdTeXN0ZW0gPSByZXNvbHZlZC5n
ZXQoIm51Il9zKTsKKyAgICBDU3RyaW5nIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucyA9IG1ha2VT
dHJpbmcocmVzb2x2ZWQuZ2V0KCJkYXRhTG9jYWxlIl9zKSwgIi11LW51LSIsIG1fbnVtYmVyaW5n
U3lzdGVtKS51dGY4KCk7CisKKyAgICBTdHJpbmcgc3R5bGUgPSBpbnRsU3RyaW5nT3B0aW9uKGds
b2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIHsgImxvbmciLCAi
c2hvcnQiLCAibmFycm93IiB9LCAic3R5bGUgbXVzdCBiZSBlaXRoZXIgXCJsb25nXCIsIFwic2hv
cnRcIiwgb3IgXCJuYXJyb3dcIiIsICJsb25nIik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKKyAgICBpZiAoc3R5bGUgPT0gImxvbmciKQorICAgICAgICBtX3N0eWxl
ID0gVURBVF9TVFlMRV9MT05HOworICAgIGVsc2UgaWYgKHN0eWxlID09ICJzaG9ydCIpCisgICAg
ICAgIG1fc3R5bGUgPSBVREFUX1NUWUxFX1NIT1JUOworICAgIGVsc2UgaWYgKHN0eWxlID09ICJu
YXJyb3ciKQorICAgICAgICBtX3N0eWxlID0gVURBVF9TVFlMRV9OQVJST1c7CisgICAgZWxzZQor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIFN0cmluZyBudW1lcmljID0gaW50
bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPm51
bWVyaWMsIHsgImFsd2F5cyIsICJhdXRvIiB9LCAibnVtZXJpYyBtdXN0IGJlIGVpdGhlciBcImFs
d2F5c1wiIG9yIFwiYXV0b1wiIiwgImFsd2F5cyIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CisgICAgbV9udW1lcmljID0gKG51bWVyaWMgPT0gImFsd2F5cyIpOwor
CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgbV9udW1iZXJGb3Jt
YXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+
KHVudW1fb3BlbihVTlVNX0RFQ0lNQUwsIG51bGxwdHIsIDAsIGRhdGFMb2NhbGVXaXRoRXh0ZW5z
aW9ucy5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKKyAgICBpZiAoVU5MSUtFTFkoVV9GQUlM
VVJFKHN0YXR1cykpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBSZWxhdGl2ZVRpbWVGb3JtYXQiX3MpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9yZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyID0gc3Rk
Ojp1bmlxdWVfcHRyPFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyLCBVUmVsYXRpdmVEYXRlVGlt
ZUZvcm1hdHRlckRlbGV0ZXI+KHVyZWxkYXRlZm10X29wZW4oZGF0YUxvY2FsZVdpdGhFeHRlbnNp
b25zLmRhdGEoKSwgbV9udW1iZXJGb3JtYXQuZ2V0KCksIG1fc3R5bGUsIFVESVNQQ1RYX0NBUElU
QUxJWkFUSU9OX0ZPUl9TVEFOREFMT05FLCAmc3RhdHVzKSk7CisgICAgaWYgKFVOTElLRUxZKFVf
RkFJTFVSRShzdGF0dXMpKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0Il9zKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KK30KKworc3RhdGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmlu
ZyhVRGF0ZVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJTdHlsZSBzdHlsZSkKK3sKKyAgICBzd2l0
Y2ggKHN0eWxlKSB7CisgICAgY2FzZSBVREFUX1NUWUxFX0xPTkc6CisgICAgICAgIHJldHVybiAi
bG9uZyJfczsKKyAgICBjYXNlIFVEQVRfU1RZTEVfU0hPUlQ6CisgICAgICAgIHJldHVybiAic2hv
cnQiX3M7CisgICAgY2FzZSBVREFUX1NUWUxFX05BUlJPVzoKKyAgICAgICAgcmV0dXJuICJuYXJy
b3ciX3M7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKK30KKworc3RhdGljIEFTQ0lJTGl0ZXJhbCBudW1lcmljU3RyaW5n
KGJvb2wgbnVtZXJpYykKK3sKKyAgICByZXR1cm4gbnVtZXJpYyA/ICJhbHdheXMiX3MgOiAiYXV0
byJfczsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pbnRsLnJlbGF0aXZl
dGltZWZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCitKU09iamVjdCogSW50bFJlbGF0
aXZlVGltZUZvcm1hdDo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEpTT2JqZWN0KiBv
cHRpb25zID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZSwganNOb250cml2aWFsU3Ry
aW5nKHZtLCBtX2xvY2FsZSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+c3R5bGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc3R5bGVTdHJpbmcobV9zdHls
ZSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm51bWVy
aWMsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbnVtZXJpY1N0cmluZyhtX251bWVyaWMpKSk7Cisg
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5udW1iZXJpbmdTeXN0
ZW0sIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV9udW1iZXJpbmdTeXN0ZW0pKTsKKyAgICByZXR1
cm4gb3B0aW9uczsKK30KKworc3RhdGljIFN0cmluZ1ZpZXcgc2luZ3VsYXJVbml0KFN0cmluZ1Zp
ZXcgdW5pdCkKK3sKKyAgICAvLyBQbHVyYWxzIGFyZSBhbGxvd2VkLCBidXQgdGhhbmtmdWxseSB0
aGV5J3JlIGFsbCBqdXN0IGEgc2ltcGxlIC1zLgorICAgIHJldHVybiB1bml0LmVuZHNXaXRoKCJz
IikgPyB1bml0LmxlZnQodW5pdC5sZW5ndGgoKSAtIDEpIDogdW5pdDsKK30KKworLy8gaHR0cHM6
Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1zaW5ndWxhcnJlbGF0aXZldGltZXVuaXQKK3N0YXRpYyBP
cHRpb25hbDxVUmVsYXRpdmVEYXRlVGltZVVuaXQ+IHJlbGF0aXZlVGltZVVuaXRUeXBlKFN0cmlu
Z1ZpZXcgdW5pdCkKK3sKKyAgICBTdHJpbmdWaWV3IHNpbmd1bGFyID0gc2luZ3VsYXJVbml0KHVu
aXQpOworCisgICAgaWYgKHNpbmd1bGFyID09ICJzZWNvbmQiKQorICAgICAgICByZXR1cm4gVURB
VF9SRUxfVU5JVF9TRUNPTkQ7CisgICAgaWYgKHNpbmd1bGFyID09ICJtaW51dGUiKQorICAgICAg
ICByZXR1cm4gVURBVF9SRUxfVU5JVF9NSU5VVEU7CisgICAgaWYgKHNpbmd1bGFyID09ICJob3Vy
IikKKyAgICAgICAgcmV0dXJuIFVEQVRfUkVMX1VOSVRfSE9VUjsKKyAgICBpZiAoc2luZ3VsYXIg
PT0gImRheSIpCisgICAgICAgIHJldHVybiBVREFUX1JFTF9VTklUX0RBWTsKKyAgICBpZiAoc2lu
Z3VsYXIgPT0gIndlZWsiKQorICAgICAgICByZXR1cm4gVURBVF9SRUxfVU5JVF9XRUVLOworICAg
IGlmIChzaW5ndWxhciA9PSAibW9udGgiKQorICAgICAgICByZXR1cm4gVURBVF9SRUxfVU5JVF9N
T05USDsKKyAgICBpZiAoc2luZ3VsYXIgPT0gInF1YXJ0ZXIiKQorICAgICAgICByZXR1cm4gVURB
VF9SRUxfVU5JVF9RVUFSVEVSOworICAgIGlmIChzaW5ndWxhciA9PSAieWVhciIpCisgICAgICAg
IHJldHVybiBVREFUX1JFTF9VTklUX1lFQVI7CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
fQorCitTdHJpbmcgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0SW50ZXJuYWwoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlLCBTdHJpbmdWaWV3IHVuaXQpCit7
CisgICAgQVNTRVJUKG1fcmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlcik7CisKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkgeworICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm51bWJlciBhcmd1bWVudCBtdXN0IGJl
IGZpbml0ZSJfcyk7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyAgICBhdXRv
IHVuaXRUeXBlID0gcmVsYXRpdmVUaW1lVW5pdFR5cGUodW5pdCk7CisgICAgaWYgKCF1bml0VHlw
ZSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVuaXQg
YXJndW1lbnQgaXMgbm90IGEgcmVjb2duaXplZCB1bml0IHR5cGUiX3MpOworICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgfQorCisgICAgYXV0byBmb3JtYXRSZWxhdGl2ZVRpbWUgPSBtX251
bWVyaWMgPyB1cmVsZGF0ZWZtdF9mb3JtYXROdW1lcmljIDogdXJlbGRhdGVmbXRfZm9ybWF0Owor
CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgVmVjdG9yPFVDaGFy
LCAzMj4gcmVzdWx0KDMyKTsKKyAgICBhdXRvIHJlc3VsdExlbmd0aCA9IGZvcm1hdFJlbGF0aXZl
VGltZShtX3JlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCB1bml0VHlwZS52
YWx1ZSgpLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCAmc3RhdHVzKTsKKyAgICBpZiAo
c3RhdHVzID09IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKSB7CisgICAgICAgIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKKyAgICAgICAgcmVzdWx0Lmdyb3cocmVzdWx0TGVuZ3RoKTsKKyAgICAgICAg
Zm9ybWF0UmVsYXRpdmVUaW1lKG1fcmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlci5nZXQoKSwgdmFs
dWUsIHVuaXRUeXBlLnZhbHVlKCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCwgJnN0YXR1
cyk7CisgICAgfQorICAgIGlmIChVTkxJS0VMWShVX0ZBSUxVUkUoc3RhdHVzKSkpIHsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQg
cmVsYXRpdmUgdGltZSJfcyk7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gU3RyaW5nKHJlc3VsdC5kYXRhKCksIHJlc3VsdExlbmd0aCk7Cit9CisKKy8vIGh0
dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtRm9ybWF0UmVsYXRpdmVUaW1lCitKU1ZhbHVlIElu
dGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3VibGUgdmFsdWUsIFN0cmluZ1ZpZXcgdW5pdCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgU3RyaW5nIHJlc3VsdCA9IGZvcm1hdEludGVybmFsKGdsb2JhbE9iamVjdCwgdmFsdWUs
IHVuaXQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1
cm4ganNTdHJpbmcodm0sIHJlc3VsdCk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAy
LyNzZWMtRm9ybWF0UmVsYXRpdmVUaW1lVG9QYXJ0cworSlNWYWx1ZSBJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJs
ZSB2YWx1ZSwgU3RyaW5nVmlldyB1bml0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBT
dHJpbmcgZm9ybWF0dGVkUmVsYXRpdmVUaW1lID0gZm9ybWF0SW50ZXJuYWwoZ2xvYmFsT2JqZWN0
LCB2YWx1ZSwgdW5pdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGF1dG8gaXRlcmF0b3Ig
PSBzdGQ6OnVuaXF1ZV9wdHI8VUZpZWxkUG9zaXRpb25JdGVyYXRvciwgVUZpZWxkUG9zaXRpb25J
dGVyYXRvckRlbGV0ZXI+KHVmaWVsZHBvc2l0ZXJfb3Blbigmc3RhdHVzKSk7CisgICAgQVNTRVJU
KFVfU1VDQ0VTUyhzdGF0dXMpKTsKKworICAgIGRvdWJsZSBhYnNWYWx1ZSA9IHN0ZDo6YWJzKHZh
bHVlKTsKKworICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcigzMik7CisgICAgYXV0byBudW1i
ZXJMZW5ndGggPSB1bnVtX2Zvcm1hdERvdWJsZUZvckZpZWxkcyhtX251bWJlckZvcm1hdC5nZXQo
KSwgYWJzVmFsdWUsIGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCksIGl0ZXJhdG9yLmdldCgp
LCAmc3RhdHVzKTsKKyAgICBpZiAoc3RhdHVzID09IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKSB7
CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgYnVmZmVyLmdyb3cobnVt
YmVyTGVuZ3RoKTsKKyAgICAgICAgdW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMobV9udW1iZXJG
b3JtYXQuZ2V0KCksIGFic1ZhbHVlLCBidWZmZXIuZGF0YSgpLCBudW1iZXJMZW5ndGgsIGl0ZXJh
dG9yLmdldCgpLCAmc3RhdHVzKTsKKyAgICB9CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBmb3JtYXQgcmVsYXRpdmUgdGltZSJfcyk7CisKKyAgICBhdXRvIGZvcm1hdHRlZE51bWJl
ciA9IFN0cmluZyhidWZmZXIuZGF0YSgpLCBudW1iZXJMZW5ndGgpOworCisgICAgSlNBcnJheSog
cGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpLCAw
KTsKKyAgICBpZiAoIXBhcnRzKQorICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUpOworCisgICAgSlNTdHJpbmcqIGxpdGVyYWxTdHJpbmcgPSBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJsaXRlcmFsIl9zKTsKKworICAgIC8vIFdlIG9ubHkgaGF2
ZSBvbmUgaW5wdXQgbnVtYmVyLCBzbyBvdXIgcmVsYXRpdmUgdGltZSB3aWxsIGhhdmUgYXQgbW9z
dCBvbmUgbnVtZXJpYyBzdWJzdHJpbmcsCisgICAgLy8gYnV0IHdlIG5lZWQgdG8gbGlzdCBhbGwg
b2YgdGhlIG51bWVyaWMgcGFydHMgc2VwYXJhdGVseS4KKyAgICBzaXplX3QgbnVtYmVyRW5kID0g
MDsKKyAgICBzaXplX3QgbnVtYmVyU3RhcnQgPSBmb3JtYXR0ZWRSZWxhdGl2ZVRpbWUuZmluZChm
b3JtYXR0ZWROdW1iZXIpOworICAgIGlmIChudW1iZXJTdGFydCAhPSBub3RGb3VuZCkgeworICAg
ICAgICBudW1iZXJFbmQgPSBudW1iZXJTdGFydCArIG51bWJlckxlbmd0aDsKKworICAgICAgICAv
LyBBZGQgaW5pdGlhbCBsaXRlcmFsIGlmIHRoZXJlIGlzIG9uZS4KKyAgICAgICAgaWYgKG51bWJl
clN0YXJ0KSB7CisgICAgICAgICAgICBKU09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnR5cGUsIGxpdGVyYWxTdHJpbmcpOworICAgICAgICAgICAgcGFydC0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwganNTdWJzdHJpbmcodm0sIGZvcm1h
dHRlZFJlbGF0aXZlVGltZSwgMCwgbnVtYmVyU3RhcnQpKTsKKyAgICAgICAgICAgIHBhcnRzLT5w
dXNoKGdsb2JhbE9iamVjdCwgcGFydCk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworICAgICAgICB9CisKKyAgICAgICAgSW50bE51bWJlckZvcm1hdDo6Zm9y
bWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgYWJzVmFsdWUsIGZvcm1hdHRlZE51bWJl
ciwgaXRlcmF0b3IuZ2V0KCksIHBhcnRzLCBqc1N0cmluZyh2bSwgc2luZ3VsYXJVbml0KHVuaXQp
LnRvU3RyaW5nKCkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KyAgICB9CisKKyAgICAvLyBBZGQgZmluYWwgbGl0ZXJhbCBpZiB0aGVyZSBpcyBvbmUuCisgICAg
YXV0byBzdHJpbmdMZW5ndGggPSBmb3JtYXR0ZWRSZWxhdGl2ZVRpbWUubGVuZ3RoKCk7CisgICAg
aWYgKG51bWJlckVuZCAhPSBzdHJpbmdMZW5ndGgpIHsKKyAgICAgICAgSlNPYmplY3QqIHBhcnQg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgICAgICBwYXJ0LT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIGxpdGVyYWxTdHJpbmcpOworICAgICAg
ICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBqc1N1YnN0cmlu
Zyh2bSwgZm9ybWF0dGVkUmVsYXRpdmVUaW1lLCBudW1iZXJFbmQsIHN0cmluZ0xlbmd0aCAtIG51
bWJlckVuZCkpOworICAgICAgICBwYXJ0cy0+cHVzaChnbG9iYWxPYmplY3QsIHBhcnQpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIH0KKworICAgIHJldHVy
biBwYXJ0czsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWViNTM5OWM4ZmEyOWZlNThmZTg2YTM0NzYyNmFlNWE2MmM2NGJmOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQu
aApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJh
Y3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlIDx1bmljb2RlL3VmaWVsZHBvc2l0ZXIuaD4KKyNp
bmNsdWRlIDx1bmljb2RlL3VyZWxkYXRlZm10Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
eworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOworCisgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAgICBzdGF0aWNfY2FzdDxJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0Kj4oY2VsbCktPkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6On5J
bnRsUmVsYXRpdmVUaW1lRm9ybWF0KCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0uaW50bFJlbGF0aXZl
VGltZUZvcm1hdFNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIEludGxSZWxhdGl2
ZVRpbWVGb3JtYXQqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAg
ICBERUNMQVJFX0lORk87CisKKyAgICB2b2lkIGluaXRpYWxpemVSZWxhdGl2ZVRpbWVGb3JtYXQo
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9ucyk7CisgICAg
SlNWYWx1ZSBmb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUsIFN0cmluZ1ZpZXcgdW5pdFN0
cmluZyk7CisgICAgSlNWYWx1ZSBmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiwgZG91Ymxl
LCBTdHJpbmdWaWV3IHVuaXRTdHJpbmcpOworICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMo
SlNHbG9iYWxPYmplY3QqKTsKKworcHJpdmF0ZToKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFN0
cmluZyBmb3JtYXRJbnRlcm5hbChKU0dsb2JhbE9iamVjdCosIGRvdWJsZSwgU3RyaW5nVmlldyB1
bml0KTsKKworICAgIHN0cnVjdCBVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXIgewor
ICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIqKSBjb25z
dDsKKyAgICB9OworICAgIHN0cnVjdCBVTnVtYmVyRm9ybWF0RGVsZXRlciB7CisgICAgICAgIHZv
aWQgb3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0KikgY29uc3Q7CisgICAgfTsKKyAgICBzdHJ1Y3Qg
VUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXIgeworICAgICAgICB2b2lkIG9wZXJhdG9yKCko
VUZpZWxkUG9zaXRpb25JdGVyYXRvciopIGNvbnN0OworICAgIH07CisKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8VVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIsIFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0
dGVyRGVsZXRlcj4gbV9yZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4gbV9udW1iZXJGb3JtYXQ7
CisKKyAgICBTdHJpbmcgbV9sb2NhbGU7CisgICAgU3RyaW5nIG1fbnVtYmVyaW5nU3lzdGVtOwor
ICAgIFVEYXRlUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlclN0eWxlIG1fc3R5bGUgeyBVREFUX1NU
WUxFX0xPTkcgfTsKKyAgICBib29sIG1fbnVtZXJpYyB7IHRydWUgfTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjY3ZmNiOTAwMTEzYzhiNTNkMzE4NzllMmZmYTAzOGRjMDgwZDJhMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvci5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisj
aW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxSZWxhdGl2
ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiTG9va3VwLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJ
QUxMWV9ERVNUUlVDVElCTEUoSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yKTsKKwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFJlbGF0aXZlVGltZUZvcm1h
dENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZihKU0dsb2JhbE9iamVjdCosIENhbGxG
cmFtZSopOworCit9CisKKyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0
b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bFJlbGF0
aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5h
bEZ1bmN0aW9uOjpzX2luZm8sICZyZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclRhYmxlLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1
Y3RvcikgfTsKKworLyogU291cmNlIGZvciBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0
b3IubHV0LmgKK0BiZWdpbiByZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvclRhYmxlCisgIHN1
cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKK0BlbmQKKyovCisKK0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogSW50bFJl
bGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSogcmVsYXRpdmVUaW1lRm9y
bWF0UHJvdG90eXBlKQoreworICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvciog
Y29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZt
LCByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsK
K30KKworU3RydWN0dXJlKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6SW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9y
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUs
IGNhbGxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LCBjb25zdHJ1Y3RJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0KQoreworfQorCit2b2lkIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKiByZWxh
dGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0s
ICJSZWxhdGl2ZVRpbWVGb3JtYXQiX3MsIE5hbWVBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1
cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUsIFByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICBy
ZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworfQorCisvLyBodHRwczovL3RjMzku
ZXMvZWNtYTQwMi8jc2VjLUludGwuUmVsYXRpdmVUaW1lRm9ybWF0CitzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFsRnVuY3Rp
b246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50bFJlbGF0aXZlVGltZUZv
cm1hdENvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKS0+cmVsYXRpdmVUaW1lRm9y
bWF0U3RydWN0dXJlKHZtKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdCogcmVsYXRpdmVUaW1lRm9y
bWF0ID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUpOworICAg
IEFTU0VSVChyZWxhdGl2ZVRpbWVGb3JtYXQpOworCisgICAgc2NvcGUucmVsZWFzZSgpOworICAg
IHJlbGF0aXZlVGltZUZvcm1hdC0+aW5pdGlhbGl6ZVJlbGF0aXZlVGltZUZvcm1hdChnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVsYXRpdmVUaW1lRm9ybWF0KTsKK30KKworLy8g
aHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLlJlbGF0aXZlVGltZUZvcm1hdAorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9y
Q2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJS
ZWxhdGl2ZVRpbWVGb3JtYXQiKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNz
ZWMtSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNT
dXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGNvbnN0IEhhc2hTZXQ8
U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcyA9IGludGxSZWxhdGl2ZVRpbWVGb3JtYXRBdmFpbGFi
bGVMb2NhbGVzKCk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fu
b25pY2FsaXplTG9jYWxlTGlzdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9j
YWxlcyhnbG9iYWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMSkpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjdiZDA5MDAzZmU4YmVjMjc5
MmM0NTg0ZWUyODQ1ODFlNzcyODg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKQEAgLTAs
MCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVu
dGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklu
dGVybmFsRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOworCitjbGFzcyBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxG
dW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFS
RV9JTkZPOworCisgICAgU3RydWN0dXJlKiByZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoVk0m
KSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3QoKS0+cmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0
dXJlKCk7IH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKik7CisKK3ByaXZhdGU6CisgICAgSW50bFJlbGF0
aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7Cit9OworU1RBVElDX0FT
U0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVj
dG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXRQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkYjVlNWE0ZDIyZDM5MzI4NWE0Njc0
ZWExMzBmNzNhMzFlMDEyNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMCwwICsx
LDEzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVy
dGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIK
KyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFJlbGF0aXZlVGltZUZvcm1h
dFByb3RvdHlwZUZ1bmNGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90
b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFBy
b3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
KworfQorCisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAmcmVsYXRp
dmVUaW1lRm9ybWF0UHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oCitAYmVnaW4gcmVsYXRpdmVUaW1lRm9y
bWF0UHJvdG90eXBlVGFibGUKKyAgZm9ybWF0ICAgICAgICAgICBJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0UHJvdG90eXBlRnVuY0Zvcm1hdCAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICBm
b3JtYXRUb1BhcnRzICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0
VG9QYXJ0cyAgICBEb250RW51bXxGdW5jdGlvbiAyCisgIHJlc29sdmVkT3B0aW9ucyAgSW50bFJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMgIERvbnRFbnVtfEZ1
bmN0aW9uIDAKK0BlbmQKKyovCisKK0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIElu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlKQoreworICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIG9iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90
b3R5cGU+KHZtLmhlYXApKSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKHZtLCBzdHJ1
Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJldHVybiBvYmpl
Y3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworfQorCitJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOjpJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
OiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bFJlbGF0aXZlVGltZUZvcm1h
dFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkludGwu
UmVsYXRpdmVUaW1lRm9ybWF0Il9zKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0
MDIvI3NlYy1JbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0CitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5j
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KiBy
ZWxhdGl2ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxSZWxhdGl2ZVRpbWVGb3JtYXQq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFyZWxhdGl2ZVRpbWVGb3Jt
YXQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgUmVs
YXRpdmVUaW1lRm9ybWF0Il9zKSk7CisKKyAgICBkb3VibGUgdmFsdWUgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBTdHJpbmcgdW5pdCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSkudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlbGF0aXZlVGltZUZvcm1hdC0+Zm9ybWF0KGds
b2JhbE9iamVjdCwgdmFsdWUsIHVuaXQpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21h
NDAyLyNzZWMtSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3Rv
dHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0KiByZWxhdGl2ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFy
ZWxhdGl2ZVRpbWVGb3JtYXQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnBy
b3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVj
dCBpbml0aWFsaXplZCBhcyBhIFJlbGF0aXZlVGltZUZvcm1hdCJfcykpOworCisgICAgZG91Ymxl
IHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAg
U3RyaW5nIHVuaXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKGdsb2JhbE9i
amVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZWxhdGl2
ZVRpbWVGb3JtYXQtPmZvcm1hdFRvUGFydHMoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgdW5pdCkpKTsK
K30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pbnRsLnJlbGF0aXZldGltZWZv
cm1hdC5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KiByZWxhdGl2ZVRp
bWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFyZWxhdGl2ZVRpbWVGb3JtYXQpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgUmVs
YXRpdmVUaW1lRm9ybWF0Il9zKSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShyZWxhdGl2ZVRpbWVGb3JtYXQtPnJlc29sdmVkT3B0aW9ucyhnbG9iYWxP
YmplY3QpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3Rv
dHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNjYmFlYThlNzVhNDgxMjg4MDgyYjU5MDgwYTBhZWRjZWU1MDcz
NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlIGZpbmFsIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05v
bkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNf
QVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90
eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0K
KworICAgIHN0YXRpYyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcm90
ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2YXRlOgorICAgIElu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IDc2NGUxMDA1MzU4ZDE5ZTllOTZlMzk5MGM5MjM1NjM3YzZk
MGUzYWYuLjE5YTQ4ZmI5MzBjNWJmMGYzNTUxZTNmMzQ2ZDY0Yzg3NTZlNDU2MzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTg2
LDYgKzg2LDggQEAKICNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSW50bFBsdXJh
bFJ1bGVzLmgiCiAjaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgiCisjaW5jbHVk
ZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVG
b3JtYXRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJdGVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1
ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKQEAg
LTk1OSw2ICs5NjEsMTIgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAj
IyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIElu
dGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogcGx1cmFsUnVsZXNQcm90b3R5cGUgPSBJbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIEludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogICAgICAgICAgICAgaW5pdC5zZXQoSW50
bFBsdXJhbFJ1bGVzOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBwbHVy
YWxSdWxlc1Byb3RvdHlwZSkpOwogICAgICAgICB9KTsKKyAgICBtX3JlbGF0aXZlVGltZUZvcm1h
dFN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1
Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKiByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUg
PSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgSW50bFJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgICAgICAgICAg
aW5pdC5zZXQoSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0s
IGdsb2JhbE9iamVjdCwgcmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKSk7CisgICAgICAgIH0p
OwogICAgIG1fZGVmYXVsdENvbGxhdG9yLmluaXRMYXRlcigKICAgICAgICAgW10gKGNvbnN0IElu
aXRpYWxpemVyPEludGxDb2xsYXRvcj4mIGluaXQpIHsKICAgICAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsK
QEAgLTk3MCw3ICs5NzgsNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1l
ICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICAgICAg
aW5pdC5zZXQoY29sbGF0b3IpOwogICAgICAgICB9KTsKIAotICAgIEludGxPYmplY3QqIGludGwg
PSBJbnRsT2JqZWN0OjpjcmVhdGUodm0sIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBJbnRsT2JqZWN0KiBpbnRsID0g
SW50bE9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnRsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkludGwsIGludGwsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAogICAgIG1fbW9kdWxl
TG9hZGVyLmluaXRMYXRlcigKQEAgLTE3NjksNiArMTc3Nyw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAg
ICB0aGlzT2JqZWN0LT5tX251bWJlckZvcm1hdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAg
ICB0aGlzT2JqZWN0LT5tX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwog
ICAgIHRoaXNPYmplY3QtPm1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7Cisg
ICAgdGhpc09iamVjdC0+bV9yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRv
cik7CiAKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX251bGxHZXR0ZXJGdW5jdGlv
bik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxsU2V0dGVyRnVuY3Rpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5k
ZXggNzZhOGJiMDgyMGFjODM5M2QyMzNhNTlmYmMwNGMxZmE4ODEwN2VmYy4uMTljYTEyZWFjOWYy
NWMxZmE0MTVhNjgxOTgzYWI4MzlkZGZlMmYxYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yOTQsNiArMjk0LDcgQEAgcHVibGljOgog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX251bWJlckZvcm1h
dFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4g
bV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZT4gbV9wbHVyYWxSdWxlc1N0cnVjdHVyZTsKKyAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmU7
CiAKICAgICBXcml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9uPiBtX251bGxHZXR0ZXJGdW5j
dGlvbjsKICAgICBXcml0ZUJhcnJpZXI8TnVsbFNldHRlckZ1bmN0aW9uPiBtX251bGxTZXR0ZXJG
dW5jdGlvbjsKQEAgLTc4OCw2ICs3ODksNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBudW1i
ZXJGb3JtYXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX251bWJlckZvcm1hdFN0cnVjdHVyZS5nZXQo
dGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkgeyByZXR1
cm4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUq
IHBsdXJhbFJ1bGVzU3RydWN0dXJlKCkgeyByZXR1cm4gbV9wbHVyYWxSdWxlc1N0cnVjdHVyZS5n
ZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIHJlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZSgp
IHsgcmV0dXJuIG1fcmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJlLmdldCh0aGlzKTsgfQogCiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKGJvb2wp
OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcmVtb3RlRGVidWdnaW5nRW5hYmxlZCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xp
c3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXgg
YmRmYmY0YzdlMWM5OTgxOTg4OWE4N2EwODRhZjUxNzFlNzFkODU0Mi4uYjNmMTU2NmIzZTA2ZGU3
MGZiZmI4OTA1N2Y3MWUxY2Q3MmFlM2ExOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oCkBAIC00ODQsNiArNDg0LDcgQEAgY29uc3RleHByIGJvb2wgZW5h
YmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KEJvb2wsIHVzZVdlYkFz
c2VtYmx5TXVsdGlWYWx1ZXMsIHRydWUsIE5vcm1hbCwgIkFsbG93IHR5cGVzIGZyb20gdGhlIHdh
c20gbXVsaXQtdmFsdWVzIHNwZWMuIikgXAogICAgIHYoQm9vbCwgdXNlV2Vha1JlZnMsIGZhbHNl
LCBOb3JtYWwsICJFeHBvc2UgdGhlIFdlYWtSZWYgY29uc3RydWN0b3IuIikgXAogICAgIHYoQm9v
bCwgdXNlQmlnSW50LCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCBlbmFibGUgQmln
SW50IHN1cHBvcnQuIikgXAorICAgIHYoQm9vbCwgdXNlSW50bFJlbGF0aXZlVGltZUZvcm1hdCwg
ZmFsc2UsIE5vcm1hbCwgIkV4cG9zZSB0aGUgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQgY29uc3Ry
dWN0b3IuIikgXAogICAgIHYoQm9vbCwgdXNlQXJyYXlBbGxvY2F0aW9uUHJvZmlsaW5nLCB0cnVl
LCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIHVzZSBvdXIgbm9ybWFsIGFycmF5IGFsbG9jYXRp
b24gcHJvZmlsaW5nLiBJZiBmYWxzZSwgdGhlIGFsbG9jYXRpb24gcHJvZmlsZSB3aWxsIGFsd2F5
cyBjbGFpbSB0byBiZSB1bmRlY2lkZWQuIikgXAogICAgIHYoQm9vbCwgZm9yY2VQb2x5UHJvdG8s
IGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCBjcmVhdGVfdGhpcyB3aWxsIGFsd2F5cyBjcmVhdGUg
YW4gb2JqZWN0IHdpdGggYSBwb2x5IHByb3RvIHN0cnVjdHVyZS4iKSBcCiAgICAgdihCb29sLCBm
b3JjZU1pbmlWTU1vZGUsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCBpdCB3aWxsIGZvcmNlIG1p
bmkgVk0gbW9kZSBvbi4iKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXgg
YWVjMmZlZmFjOWJjNDY1Y2YyOThmM2Y1NmVlYTkyNzlhOGFjNTY1Yy4uM2FiMWUxYmMzNmIxMTAz
YjgzM2YwYWI0YzA5NWMwODJkODBlNDUzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcApAQCAtNzcsNiArNzcsNyBAQAogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdC5oIgog
I2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMu
aCIKKyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCiAjaW5jbHVkZSAiSXNvSGVh
cENlbGxUeXBlLmgiCiAjaW5jbHVkZSAiSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIgogI2luY2x1
ZGUgIkpJVENvZGUuaCIKQEAgLTM0MCw2ICszNDEsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUo
SXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bERhdGVUaW1lRm9ybWF0PigpKQogICAgICwgaW50
bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsTnVt
YmVyRm9ybWF0PigpKQogICAgICwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlKElzb0hlYXBD
ZWxsVHlwZTo6Y3JlYXRlPEludGxQbHVyYWxSdWxlcz4oKSkKKyAgICAsIGludGxSZWxhdGl2ZVRp
bWVGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFJlbGF0aXZl
VGltZUZvcm1hdD4oKSkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLCB3ZWJBc3NlbWJs
eUNvZGVCbG9ja0hlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrPigpKQogICAgICwgd2ViQXNzZW1ibHlGdW5jdGlvbkhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxXZWJBc3NlbWJseUZ1bmN0aW9uPigpKQpAQCAtMTUxMSw2
ICsxNTEzLDcgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxD
b2xsYXRvclNwYWNlLCBpbnRsQ29sbGF0b3JIZWFwQ2VsbFQKIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSwgaW50bERhdGVUaW1l
Rm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsRGF0ZVRpbWVGb3JtYXQpCiBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bE51bWJlckZvcm1hdFNwYWNlLCBpbnRs
TnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsTnVtYmVyRm9ybWF0KQogRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxQbHVyYWxSdWxlc1NwYWNlLCBp
bnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxQbHVyYWxSdWxlcykKK0RZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVsYXRpdmVUaW1lRm9ybWF0
U3BhY2UsIGludGxSZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSwgY2VsbEhlYXBD
ZWxsVHlwZS5nZXQoKSwgSlNUb1dhc21JQ0NhbGxlZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlLCB3ZWJBc3NlbWJseUNv
ZGVCbG9ja0hlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWJBc3NlbWJseUNvZGVCbG9jaykgLy8gSGFz
aDoweDlhZDk5NWNkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBiNDFkY2U3ZGM5
ZTJkNGMxMDA3YmZmODAxNzdlMjgxOGNjYjZiNDk0Li43MmI2NmQzZTg1YmQ1NGMzNzAwOWZlNmJm
OTQ3ZjhlYzVlZjJkMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTEyOCw2
ICsxMjgsNyBAQCBjbGFzcyBJbnRsQ29sbGF0b3I7CiBjbGFzcyBJbnRsRGF0ZVRpbWVGb3JtYXQ7
CiBjbGFzcyBJbnRsTnVtYmVyRm9ybWF0OwogY2xhc3MgSW50bFBsdXJhbFJ1bGVzOworY2xhc3Mg
SW50bFJlbGF0aXZlVGltZUZvcm1hdDsKIGNsYXNzIEpTQVBJR2xvYmFsT2JqZWN0OwogY2xhc3Mg
SlNBUElXcmFwcGVyR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNBUElXcmFwcGVyT2JqZWN0OwpAQCAt
NDAxLDYgKzQwMiw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxU
eXBlPiBpbnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGU7
CisgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFJlbGF0aXZlVGltZUZv
cm1hdEhlYXBDZWxsVHlwZTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgc3RkOjp1bmlx
dWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGU7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gd2ViQXNzZW1ibHlGdW5jdGlv
bkhlYXBDZWxsVHlwZTsKQEAgLTU1Nyw2ICs1NTksNyBAQCBwdWJsaWM6CiAgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsRGF0ZVRpbWVGb3JtYXRTcGFjZSkKICAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxOdW1iZXJGb3JtYXRTcGFjZSkK
ICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxQbHVyYWxSdWxlc1Nw
YWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFJlbGF0aXZl
VGltZUZvcm1hdFNwYWNlKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSkKICAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2Up
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjky
YTVhZGM2NzI5ODAxMzkzY2FjZGQ5MjU2ZDI3NzE1NDhhY2M5Yi4uNWI4ODNlMWFhMzE4Njk1ZjZl
ZmJlNTJjM2I3MTAxNjc2MjQxY2JkZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA0LTE4ICBSb3NzIEtpcnNs
aW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBbRUNNQS00MDJdIEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0IG1pc3NpbmcgaW4gV2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVz
dHM6CisgICAgICAgIEFkZCBydW5JbnRsUmVsYXRpdmVUaW1lRm9ybWF0RW5hYmxlZC4KKwogMjAy
MC0wNC0xOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHNvbWUgbW9yZSB0ZXN0cyBmb3IgLWZvY3VzVGV4dElucHV0Q29udGV4dDpwbGFjZUNhcmV0QXQ6
Y29tcGxldGlvbkhhbmRsZXI6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3Ry
ZXNzLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwppbmRleCBjNGUw
OGYwZmY0ZjZkYmJhNzgxM2ZhYWM5ZTg3MTYzYWZiYzgwNDc3Li4yNzFmOWI1MjUxNDQzMWUwMDJm
NTE4ODg2NDQ1MGJmMjI2OGI0YmJjIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3J1bi1qc2Mt
c3RyZXNzLXRlc3RzCisrKyBiL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKQEAg
LTcwMiw2ICs3MDIsMTAgQEAgZGVmIHJ1bkJpZ0ludEVuYWJsZWQoKm9wdGlvbmFsVGVzdFNwZWNp
ZmljT3B0aW9ucykKICAgICBydW4oImJpZy1pbnQtZW5hYmxlZCIsICItLXVzZUJpZ0ludD10cnVl
IiAsICooRlRMX09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZpY09wdGlvbnMpKQogZW5kCiAK
K2RlZiBydW5JbnRsUmVsYXRpdmVUaW1lRm9ybWF0RW5hYmxlZCgqb3B0aW9uYWxUZXN0U3BlY2lm
aWNPcHRpb25zKQorICAgIHJ1bigiaW50bC1yZWxhdGl2ZXRpbWVmb3JtYXQtZW5hYmxlZCIsICIt
LXVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXQ9dHJ1ZSIgLCAqKEZUTF9PUFRJT05TICsgb3B0aW9u
YWxUZXN0U3BlY2lmaWNPcHRpb25zKSkKK2VuZAorCiBkZWYgcnVuRlRMTm9DSklUKCpvcHRpb25h
bFRlc3RTcGVjaWZpY09wdGlvbnMpCiAgICAgcnVuKCJtaXNjLWZ0bC1uby1jaml0IiwgKihGVExf
T1BUSU9OUyArIE5PX0NKSVRfT1BUSU9OUyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykp
CiBlbmQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMmU5ZjcyYzQxODNlMzQ1MTcxMzFiMmFlMDgzOTYwYjEzZjFlMzNhMS4uY2MxZjdhNjhj
ZjBkYzAyMmU4YjlmYWQ4NGFkN2E1NjU5OWI3NzhjNSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0wNC0x
OCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW0VD
TUEtNDAyXSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBtaXNzaW5nIGluIFdlYktpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NzcwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvaW50bC1y
ZWxhdGl2ZXRpbWVmb3JtYXQuanM6IEFkZGVkLgorCisgICAgICAgICogdGVzdDI2Mi9jb25maWcu
eWFtbDoKKyAgICAgICAgRW5hYmxlIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0IGZlYXR1cmUgd2l0
aCBmbGFnLgorCisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDoKKyAgICAgICAg
TWFyayBrbm93biBmYWlsdXJlcy4KKyAgICAgICAgVGVzdCBmb3IgbG9jYWxlIHZhbGlkYXRpb24g
aXMgbm90IHNwZWNpZmljIHRvIFJlbGF0aXZlVGltZUZvcm1hdCBhbmQgc2hvdWxkIGJlIGludmVz
dGlnYXRlZCBzZXBhcmF0ZWx5LgorICAgICAgICBUZXN0cyBmb3IgUG9saXNoIGFwcGVhciB0byBi
ZSB3cm9uZyBhbmQgc2hvdWxkIGJlIGNvcnJlY3RlZCBpbiB0ZXN0MjYyLgorCiAyMDIwLTA0LTE4
ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZGVz
aWduIGhvdyB3ZSBkbyBmb3Itb2YgaXRlcmF0aW9uIGZvciBKU0FycmF5cwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvaW50bC1yZWxhdGl2ZXRpbWVmb3JtYXQuanMgYi9KU1Rlc3RzL3N0cmVz
cy9pbnRsLXJlbGF0aXZldGltZWZvcm1hdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTY2NDdmYjBmYTBmNWZi
NjljNGZjNzZhNzg5YTY2MTUyZGI1ODJjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvaW50bC1yZWxhdGl2ZXRpbWVmb3JtYXQuanMKQEAgLTAsMCArMSwyNzAgQEAKKy8vQCBydW5J
bnRsUmVsYXRpdmVUaW1lRm9ybWF0RW5hYmxlZAorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcihgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30K
KworZnVuY3Rpb24gc2hvdWxkTm90VGhyb3coZnVuYykgeworICAgIGZ1bmMoKTsKK30KKworZnVu
Y3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlKSB7CisgICAgbGV0IGVycm9yOworICAg
IHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9y
ID0gZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7Cit9
CisKK3Nob3VsZEJlKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0IGluc3RhbmNlb2YgRnVuY3Rpb24s
IHRydWUpOworc2hvdWxkQmUoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQubGVuZ3RoLCAwKTsKK3No
b3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5SZWxhdGl2ZVRpbWVG
b3JtYXQsICdwcm90b3R5cGUnKS53cml0YWJsZSwgZmFsc2UpOworc2hvdWxkQmUoT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCwgJ3Byb3RvdHlw
ZScpLmVudW1lcmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQsICdwcm90b3R5cGUnKS5jb25maWd1cmFi
bGUsIGZhbHNlKTsKKworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQo
KSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0
LmNhbGwoe30pLCBUeXBlRXJyb3IpOworCitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5SZWxh
dGl2ZVRpbWVGb3JtYXQoJyQnKSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcg
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgbnVsbCksIFR5cGVFcnJvcik7CisKK3Nob3Vs
ZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgpIGluc3RhbmNlb2YgSW50bC5SZWxhdGl2
ZVRpbWVGb3JtYXQsIHRydWUpOworCit7CisgICAgY2xhc3MgRGVyaXZlZFJlbGF0aXZlVGltZUZv
cm1hdCBleHRlbmRzIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0IHt9CisKKyAgICBjb25zdCBkcnRm
ID0gbmV3IERlcml2ZWRSZWxhdGl2ZVRpbWVGb3JtYXQoKTsKKyAgICBzaG91bGRCZShkcnRmIGlu
c3RhbmNlb2YgRGVyaXZlZFJlbGF0aXZlVGltZUZvcm1hdCwgdHJ1ZSk7CisgICAgc2hvdWxkQmUo
ZHJ0ZiBpbnN0YW5jZW9mIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LCB0cnVlKTsKKyAgICBzaG91
bGRCZShkcnRmLmZvcm1hdCwgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1h
dCk7CisgICAgc2hvdWxkQmUoZHJ0Zi5mb3JtYXRUb1BhcnRzLCBJbnRsLlJlbGF0aXZlVGltZUZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyk7CisgICAgc2hvdWxkQmUoT2JqZWN0LmdldFBy
b3RvdHlwZU9mKGRydGYpLCBEZXJpdmVkUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZSk7Cisg
ICAgc2hvdWxkQmUoT2JqZWN0LmdldFByb3RvdHlwZU9mKERlcml2ZWRSZWxhdGl2ZVRpbWVGb3Jt
YXQucHJvdG90eXBlKSwgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlKTsKK30KKwor
c2hvdWxkQmUoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mLmxlbmd0
aCwgMSk7CitzaG91bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVz
T2YoKSBpbnN0YW5jZW9mIEFycmF5LCB0cnVlKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KElu
dGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZi5jYWxsKG51bGwsICdlbicp
KSwgJ1siZW4iXScpOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5SZWxhdGl2ZVRpbWVG
b3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mLmNhbGwoe30sICdlbicpKSwgJ1siZW4iXScpOworc2hv
dWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9j
YWxlc09mLmNhbGwoMSwgJ2VuJykpLCAnWyJlbiJdJyk7CitzaG91bGRCZShKU09OLnN0cmluZ2lm
eShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoOSkpLCAnW10nKTsK
K3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRl
ZExvY2FsZXNPZignZW4nKSksICdbImVuIl0nKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KElu
dGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZih7IGxlbmd0aDogNCwgMTog
J2VuJywgMDogJ2VzJywgMzogJ2RlJyB9KSksICdbImVzIiwiZW4iLCJkZSJdJyk7CitzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVz
T2YoWydlbicsICdwdCcsICdlbicsICdlcyddKSksICdbImVuIiwicHQiLCJlcyJdJyk7CitzaG91
bGRCZShKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2Nh
bGVzT2YoJ0VuLWxhVG4tdXMtdmFyaWFudDItdmFyaWFudDEtMWFiYy1VLWtvLXRSdWUtQS1hYS1h
YWEteC1SRVNFUlZFRCcpKSwgJ1siZW4tTGF0bi1VUy12YXJpYW50Mi12YXJpYW50MS0xYWJjLWEt
YWEtYWFhLXUta28teC1yZXNlcnZlZCJdJyk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRs
LlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoJ25vLWJvaycpKSwgJ1sibmIi
XScpOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3Vw
cG9ydGVkTG9jYWxlc09mKCd4LXNvbWUtdGhpbmcnKSksICdbXScpOworCitzaG91bGRUaHJvdygo
KSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoT2JqZWN0LmNy
ZWF0ZShudWxsLCB7IGxlbmd0aDogeyBnZXQoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH0gfSkp
LCBFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBw
b3J0ZWRMb2NhbGVzT2YoT2JqZWN0LmNyZWF0ZShudWxsLCB7IGxlbmd0aDogeyB2YWx1ZTogMSB9
LCAwOiB7IGdldCgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSB9KSksIEVycm9yKTsKK3Nob3Vs
ZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihb
eyB0b1N0cmluZygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfV0pLCBFcnJvcik7CitzaG91bGRU
aHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoWzVd
KSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0
LnN1cHBvcnRlZExvY2FsZXNPZignJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4g
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdhJyksIFJhbmdlRXJy
b3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVk
TG9jYWxlc09mKCdhYmNkZWZnaGlqJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4g
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCcjJCcpLCBSYW5nZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRl
ZExvY2FsZXNPZignZW4tQC1hYmMnKSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoJ2VuLXUnKSwgUmFuZ2VF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0
ZWRMb2NhbGVzT2YoJ2VuLXUta24tdHJ1ZS11LWtvLXRydWUnKSwgUmFuZ2VFcnJvcik7CitzaG91
bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2Yo
J2VuLXgnKSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoJ2VuLSonKSwgUmFuZ2VFcnJvcik7CitzaG91bGRU
aHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoJ2Vu
LScpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9y
bWF0LnN1cHBvcnRlZExvY2FsZXNPZignZW4tLVVTJyksIFJhbmdlRXJyb3IpOworCitjb25zdCB2
YWxpZExhbmd1YWdlVGFncyA9IFsKKyAgICAnZGUnLCAvLyBJU08gNjM5IGxhbmd1YWdlIGNvZGUK
KyAgICAnZGUtREUnLCAvLyArIElTTyAzMTY2LTEgY291bnRyeSBjb2RlCisgICAgJ0RFLWRlJywg
Ly8gdGFncyBhcmUgY2FzZS1pbnNlbnNpdGl2ZQorICAgICdjbW4nLCAvLyBJU08gNjM5IGxhbmd1
YWdlIGNvZGUKKyAgICAnY21uLUhhbnMnLCAvLyArIHNjcmlwdCBjb2RlCisgICAgJ0NNTi1oQU5T
JywgLy8gdGFncyBhcmUgY2FzZS1pbnNlbnNpdGl2ZQorICAgICdjbW4taGFucy1jbicsIC8vICsg
SVNPIDMxNjYtMSBjb3VudHJ5IGNvZGUKKyAgICAnZXMtNDE5JywgLy8gKyBVTiBNLjQ5IHJlZ2lv
biBjb2RlCisgICAgJ2VzLTQxOS11LW51LWxhdG4tY3UtYm9iJywgLy8gKyBVbmljb2RlIGxvY2Fs
ZSBleHRlbnNpb24gc2VxdWVuY2UKKyAgICAnaS1rbGluZ29uJywgLy8gZ3JhbmRmYXRoZXJlZCB0
YWcKKyAgICAnY21uLWhhbnMtY24tdC1jYS11LWNhLXgtdC11JywgLy8gc2luZ2xldG9uIHN1YnRh
Z3MgY2FuIGFsc28gYmUgdXNlZCBhcyBwcml2YXRlIHVzZSBzdWJ0YWdzCisgICAgJ2Vub2NoaWFu
LWVub2NoaWFuJywgLy8gbGFuZ3VhZ2UgYW5kIHZhcmlhbnQgc3VidGFncyBtYXkgYmUgdGhlIHNh
bWUKKyAgICAnZGUtZ3JlZ29yeS11LWNhLWdyZWdvcnknLCAvLyB2YXJpYW50IGFuZCBleHRlbnNp
b24gc3VidGFncyBtYXkgYmUgdGhlIHNhbWUKKyAgICAnYWEtYS1mb28teC1hLWZvby1iYXInLCAv
LyB2YXJpYW50IHN1YnRhZ3MgY2FuIGFsc28gYmUgdXNlZCBhcyBwcml2YXRlIHVzZSBzdWJ0YWdz
CisgICAgJ3gtZW4tVVMtMTIzNDUnLCAvLyBhbnl0aGluZyBnb2VzIGluIHByaXZhdGUgdXNlIHRh
Z3MKKyAgICAneC0xMjM0NS0xMjM0NS1lbi1VUycsCisgICAgJ3gtZW4tVVMtMTIzNDUtMTIzNDUn
LAorICAgICd4LWVuLXUtZm9vJywKKyAgICAneC1lbi11LWZvby11LWJhcicKK107Citmb3IgKGxl
dCB2YWxpZExhbmd1YWdlVGFnIG9mIHZhbGlkTGFuZ3VhZ2VUYWdzKQorICAgIHNob3VsZE5vdFRo
cm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZih2YWxp
ZExhbmd1YWdlVGFnKSk7CisKK3Nob3VsZEJlKE9iamVjdC5nZXRQcm90b3R5cGVPZihJbnRsLlJl
bGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUpLCBPYmplY3QucHJvdG90eXBlKTsKKworc2hvdWxk
QmUoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLmNvbnN0cnVjdG9yLCBJbnRsLlJl
bGF0aXZlVGltZUZvcm1hdCk7CisKK3Nob3VsZEJlKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnBy
b3RvdHlwZVtTeW1ib2wudG9TdHJpbmdUYWddLCAnSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQnKTsK
K3Nob3VsZEJlKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdC5wcm90b3R5cGUpLCAnW29iamVjdCBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdF0nKTsK
K3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQucHJvdG90eXBlLCBTeW1ib2wudG9TdHJpbmdUYWcpLndyaXRhYmxlLCBmYWxzZSk7
CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuUmVsYXRpdmVU
aW1lRm9ybWF0LnByb3RvdHlwZSwgU3ltYm9sLnRvU3RyaW5nVGFnKS5lbnVtZXJhYmxlLCBmYWxz
ZSk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuUmVsYXRp
dmVUaW1lRm9ybWF0LnByb3RvdHlwZSwgU3ltYm9sLnRvU3RyaW5nVGFnKS5jb25maWd1cmFibGUs
IHRydWUpOworCitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQo
J2VuJywgeyBsb2NhbGVNYXRjaGVyOiB7IHRvU3RyaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsg
fSB9IH0pLCBFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5SZWxhdGl2ZVRpbWVG
b3JtYXQoJ2VuJywgeyBsb2NhbGVNYXRjaGVyOidiYWQnIH0pLCBSYW5nZUVycm9yKTsKK3Nob3Vs
ZE5vdFRocm93KCgpID0+IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4nLCB7IGxvY2Fs
ZU1hdGNoZXI6J2xvb2t1cCcgfSkpOworc2hvdWxkTm90VGhyb3coKCkgPT4gbmV3IEludGwuUmVs
YXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgbG9jYWxlTWF0Y2hlcjonYmVzdCBmaXQnIH0pKTsKKwor
Y29uc3QgZGVmYXVsdFJURiA9IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4nKTsKKwor
c2hvdWxkQmUoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9u
cy5sZW5ndGgsIDApOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQu
cHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucy5jYWxsKDUpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhy
b3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9u
cy5jYWxsKHt9KSwgVHlwZUVycm9yKTsKK3Nob3VsZEJlKGRlZmF1bHRSVEYucmVzb2x2ZWRPcHRp
b25zKCkgaW5zdGFuY2VvZiBPYmplY3QsIHRydWUpOworc2hvdWxkQmUoZGVmYXVsdFJURi5yZXNv
bHZlZE9wdGlvbnMoKSAhPT0gZGVmYXVsdFJURi5yZXNvbHZlZE9wdGlvbnMoKSwgdHJ1ZSk7Citz
aG91bGRCZShkZWZhdWx0UlRGLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZSwgJ2VuJyk7CitzaG91
bGRCZShkZWZhdWx0UlRGLnJlc29sdmVkT3B0aW9ucygpLnN0eWxlLCAnbG9uZycpOworc2hvdWxk
QmUoZGVmYXVsdFJURi5yZXNvbHZlZE9wdGlvbnMoKS5udW1lcmljLCAnYWx3YXlzJyk7CitzaG91
bGRCZShkZWZhdWx0UlRGLnJlc29sdmVkT3B0aW9ucygpLm51bWJlcmluZ1N5c3RlbSwgJ2xhdG4n
KTsKKworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbi11LW51LWhhbmlk
ZWMnKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUsICdlbi11LW51LWhhbmlkZWMnKTsKK3Nob3Vs
ZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4tdS1udS1oYW5pZGVjJywgeyBudW1i
ZXJpbmdTeXN0ZW06ICdndWpyJyB9KS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUsICdlbicpOwor
c2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgbnVtYmVyaW5nU3lz
dGVtOiAnaGFuaWRlYycgfSkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLCAnZW4nKTsKK3Nob3Vs
ZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4tdS1jYS1jaGluZXNlJykucmVzb2x2
ZWRPcHRpb25zKCkubG9jYWxlLCAnZW4nKTsKKworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgc3R5bGU6IHsgdG9TdHJpbmcoKSB7IHRocm93IG5l
dyBFcnJvcigpOyB9IH0gfSksIEVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLlJl
bGF0aXZlVGltZUZvcm1hdCgnZW4nLCB7IHN0eWxlOiAnYmFkJyB9KSwgUmFuZ2VFcnJvcik7Citz
aG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBzdHlsZTogJ2xvbmcn
IH0pLnJlc29sdmVkT3B0aW9ucygpLnN0eWxlLCAnbG9uZycpOworc2hvdWxkQmUobmV3IEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgc3R5bGU6ICdzaG9ydCcgfSkucmVzb2x2ZWRPcHRp
b25zKCkuc3R5bGUsICdzaG9ydCcpOworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9y
bWF0KCdlbicsIHsgc3R5bGU6ICduYXJyb3cnIH0pLnJlc29sdmVkT3B0aW9ucygpLnN0eWxlLCAn
bmFycm93Jyk7CisKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1h
dCgnZW4nLCB7IG51bWVyaWM6IHsgdG9TdHJpbmcoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH0g
fSksIEVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1h
dCgnZW4nLCB7IG51bWVyaWM6ICdiYWQnIH0pLCBSYW5nZUVycm9yKTsKK3Nob3VsZEJlKG5ldyBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4nLCB7IG51bWVyaWM6ICdhbHdheXMnIH0pLnJlc29s
dmVkT3B0aW9ucygpLm51bWVyaWMsICdhbHdheXMnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0
aXZlVGltZUZvcm1hdCgnZW4nLCB7IG51bWVyaWM6ICdhdXRvJyB9KS5yZXNvbHZlZE9wdGlvbnMo
KS5udW1lcmljLCAnYXV0bycpOworCitjb25zdCBudW1iZXJpbmdTeXN0ZW1zID0gWworICAgICdh
cmFiJywgJ2FyYWJleHQnLCAnYmFsaScsICdiZW5nJywgJ2RldmEnLCAnZnVsbHdpZGUnLCAnZ3Vq
cicsICdndXJ1JywKKyAgICAnaGFuaWRlYycsICdraG1yJywgJ2tuZGEnLCAnbGFvbycsICdsYXRu
JywgJ2xpbWInLCAnbWx5bScsICdtb25nJywgJ215bXInLAorICAgICdvcnlhJywgJ3RhbWxkZWMn
LCAndGVsdScsICd0aGFpJywgJ3RpYnQnCitdCitmb3IgKGxldCBudW1iZXJpbmdTeXN0ZW0gb2Yg
bnVtYmVyaW5nU3lzdGVtcykgeworICAgIHNob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZv
cm1hdCgnZW4nLCB7IG51bWJlcmluZ1N5c3RlbSB9KS5yZXNvbHZlZE9wdGlvbnMoKS5udW1iZXJp
bmdTeXN0ZW0sIG51bWJlcmluZ1N5c3RlbSk7CisgICAgc2hvdWxkQmUobmV3IEludGwuUmVsYXRp
dmVUaW1lRm9ybWF0KGBlbi11LW51LSR7bnVtYmVyaW5nU3lzdGVtfWApLnJlc29sdmVkT3B0aW9u
cygpLm51bWJlcmluZ1N5c3RlbSwgbnVtYmVyaW5nU3lzdGVtKTsKK30KKworc2hvdWxkQmUoSW50
bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5sZW5ndGgsIDIpOworc2hvdWxk
VGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdC5jYWxs
KHt9LCAzLCAnZGF5cycpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gZGVmYXVsdFJU
Ri5mb3JtYXQoU3ltYm9sKCksICdkYXlzJyksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9
PiBkZWZhdWx0UlRGLmZvcm1hdCgzLCBTeW1ib2woKSksIFR5cGVFcnJvcik7CitzaG91bGRUaHJv
dygoKSA9PiBkZWZhdWx0UlRGLmZvcm1hdChJbmZpbml0eSwgJ2RheXMnKSwgUmFuZ2VFcnJvcik7
CitzaG91bGRUaHJvdygoKSA9PiBkZWZhdWx0UlRGLmZvcm1hdCgzLCAnY2VudHVyaWVzJyksIFJh
bmdlRXJyb3IpOworCitjb25zdCB1bml0cyA9IFsnc2Vjb25kJywgJ21pbnV0ZScsICdob3VyJywg
J2RheScsICd3ZWVrJywgJ21vbnRoJywgJ3F1YXJ0ZXInLCAneWVhciddOworCitmb3IgKGxldCB1
bml0IG9mIHVuaXRzKSB7CisgICAgc2hvdWxkQmUoZGVmYXVsdFJURi5mb3JtYXQoMTAsIHVuaXQp
LCBkZWZhdWx0UlRGLmZvcm1hdCgxMCwgYCR7dW5pdH1zYCkpOworCisgICAgc2hvdWxkQmUoZGVm
YXVsdFJURi5mb3JtYXQoMTAwMDAuNSwgdW5pdCksIGBpbiAxMCwwMDAuNSAke3VuaXR9c2ApOwor
ICAgIHNob3VsZEJlKGRlZmF1bHRSVEYuZm9ybWF0KDEuNSwgdW5pdCksIGBpbiAxLjUgJHt1bml0
fXNgKTsKKyAgICBzaG91bGRCZShkZWZhdWx0UlRGLmZvcm1hdCgxLCB1bml0KSwgYGluIDEgJHt1
bml0fWApOworICAgIHNob3VsZEJlKGRlZmF1bHRSVEYuZm9ybWF0KDAsIHVuaXQpLCBgaW4gMCAk
e3VuaXR9c2ApOworICAgIHNob3VsZEJlKGRlZmF1bHRSVEYuZm9ybWF0KC0wLCB1bml0KSwgYDAg
JHt1bml0fXMgYWdvYCk7CisgICAgc2hvdWxkQmUoZGVmYXVsdFJURi5mb3JtYXQoLTEsIHVuaXQp
LCBgMSAke3VuaXR9IGFnb2ApOworICAgIHNob3VsZEJlKGRlZmF1bHRSVEYuZm9ybWF0KC0xLjUs
IHVuaXQpLCBgMS41ICR7dW5pdH1zIGFnb2ApOworICAgIHNob3VsZEJlKGRlZmF1bHRSVEYuZm9y
bWF0KC0xMDAwMC41LCB1bml0KSwgYDEwLDAwMC41ICR7dW5pdH1zIGFnb2ApOworfQorCitzaG91
bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBzdHlsZTogJ2xvbmcnIH0p
LmZvcm1hdCgxMCwgJ3NlY29uZCcpLCAnaW4gMTAgc2Vjb25kcycpOworc2hvdWxkQmUobmV3IElu
dGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdydScsIHsgc3R5bGU6ICdsb25nJyB9KS5mb3JtYXQoMTAs
ICdzZWNvbmQnKSwgJ9GH0LXRgNC10LcgMTAg0YHQtdC60YPQvdC0Jyk7CitzaG91bGRCZShuZXcg
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBzdHlsZTogJ3Nob3J0JyB9KS5mb3JtYXQo
MTAsICdzZWNvbmQnKSwgJ2luIDEwIHNlYy4nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdCgncnUnLCB7IHN0eWxlOiAnc2hvcnQnIH0pLmZvcm1hdCgxMCwgJ3NlY29uZCcp
LCAn0YfQtdGA0LXQtyAxMMKg0YHQtdC6LicpOworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVU
aW1lRm9ybWF0KCdlbicsIHsgc3R5bGU6ICduYXJyb3cnIH0pLmZvcm1hdCgxMCwgJ3NlY29uZCcp
LCAnaW4gMTAgc2VjLicpOworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdy
dScsIHsgc3R5bGU6ICduYXJyb3cnIH0pLmZvcm1hdCgxMCwgJ3NlY29uZCcpLCAnKzEwINGBJyk7
CisKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4nLCB7IG51bWVyaWM6
ICdhdXRvJyB9KS5mb3JtYXQoMCwgJ3NlY29uZCcpLCAnbm93Jyk7CitzaG91bGRCZShuZXcgSW50
bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2phJywgeyBudW1lcmljOiAnYXV0bycgfSkuZm9ybWF0KDAs
ICdzZWNvbmQnKSwgJ+S7iicpOworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0
KCdlbicsIHsgbnVtZXJpYzogJ2F1dG8nIH0pLmZvcm1hdCgwLCAnZGF5JyksICd0b2RheScpOwor
c2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdqYScsIHsgbnVtZXJpYzogJ2F1
dG8nIH0pLmZvcm1hdCgwLCAnZGF5JyksICfku4rml6UnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJl
bGF0aXZlVGltZUZvcm1hdCgnZW4nLCB7IG51bWVyaWM6ICdhdXRvJyB9KS5mb3JtYXQoMCwgJ3ll
YXInKSwgJ3RoaXMgeWVhcicpOworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0
KCdqYScsIHsgbnVtZXJpYzogJ2F1dG8nIH0pLmZvcm1hdCgwLCAneWVhcicpLCAn5LuK5bm0Jyk7
CisKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4nLCB7IG51bWJlcmlu
Z1N5c3RlbTogJ3RoYWknIH0pLmZvcm1hdCgtMTAsICdob3VyJyksICfguZHguZAgaG91cnMgYWdv
Jyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuLXUtbnUtdGhhaScp
LmZvcm1hdCgtMTAsICdob3VyJyksICfguZHguZAgaG91cnMgYWdvJyk7CitzaG91bGRCZShuZXcg
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2tvJywgeyBudW1iZXJpbmdTeXN0ZW06ICdoYW5pZGVj
JyB9KS5mb3JtYXQoLTEwLCAnaG91cicpLCAn5LiA44CH7Iuc6rCEIOyghCcpOworc2hvdWxkQmUo
bmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdrby11LW51LWhhbmlkZWMnKS5mb3JtYXQoLTEw
LCAnaG91cicpLCAn5LiA44CH7Iuc6rCEIOyghCcpOworCitzaG91bGRCZShJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cy5sZW5ndGgsIDIpOworc2hvdWxkVGhy
b3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMu
Y2FsbCh7fSwgMywgJ2RheXMnKSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IGRlZmF1
bHRSVEYuZm9ybWF0VG9QYXJ0cyhTeW1ib2woKSwgJ2RheXMnKSwgVHlwZUVycm9yKTsKK3Nob3Vs
ZFRocm93KCgpID0+IGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygzLCBTeW1ib2woKSksIFR5cGVF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoSW5maW5p
dHksICdkYXlzJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gZGVmYXVsdFJURi5m
b3JtYXRUb1BhcnRzKDMsICdjZW50dXJpZXMnKSwgUmFuZ2VFcnJvcik7CisKK2ZvciAobGV0IHVu
aXQgb2YgdW5pdHMpIHsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeShkZWZhdWx0UlRGLmZv
cm1hdFRvUGFydHMoMTAsIHVuaXQpKSwgSlNPTi5zdHJpbmdpZnkoZGVmYXVsdFJURi5mb3JtYXRU
b1BhcnRzKDEwLCBgJHt1bml0fXNgKSkpOworCisgICAgY29uc3QgY29uY2F0ZW5hdGVWYWx1ZXMg
PSAocGFydHMpID0+IHBhcnRzLm1hcChwYXJ0ID0+IHBhcnQudmFsdWUpLmpvaW4oJycpOworICAg
IHNob3VsZEJlKGNvbmNhdGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygxMDAw
MC41LCB1bml0KSksIGBpbiAxMCwwMDAuNSAke3VuaXR9c2ApOworICAgIHNob3VsZEJlKGNvbmNh
dGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygxLjUsIHVuaXQpKSwgYGluIDEu
NSAke3VuaXR9c2ApOworICAgIHNob3VsZEJlKGNvbmNhdGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYu
Zm9ybWF0VG9QYXJ0cygxLCB1bml0KSksIGBpbiAxICR7dW5pdH1gKTsKKyAgICBzaG91bGRCZShj
b25jYXRlbmF0ZVZhbHVlcyhkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoMCwgdW5pdCkpLCBgaW4g
MCAke3VuaXR9c2ApOworICAgIHNob3VsZEJlKGNvbmNhdGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYu
Zm9ybWF0VG9QYXJ0cygtMCwgdW5pdCkpLCBgMCAke3VuaXR9cyBhZ29gKTsKKyAgICBzaG91bGRC
ZShjb25jYXRlbmF0ZVZhbHVlcyhkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoLTEsIHVuaXQpKSwg
YDEgJHt1bml0fSBhZ29gKTsKKyAgICBzaG91bGRCZShjb25jYXRlbmF0ZVZhbHVlcyhkZWZhdWx0
UlRGLmZvcm1hdFRvUGFydHMoLTEuNSwgdW5pdCkpLCBgMS41ICR7dW5pdH1zIGFnb2ApOworICAg
IHNob3VsZEJlKGNvbmNhdGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygtMTAw
MDAuNSwgdW5pdCkpLCBgMTAsMDAwLjUgJHt1bml0fXMgYWdvYCk7Cit9CisKK3Nob3VsZEJlKAor
ICAgIEpTT04uc3RyaW5naWZ5KGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygxMDAwMC41LCAnZGF5
JykpLAorICAgIEpTT04uc3RyaW5naWZ5KFsKKyAgICAgICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZh
bHVlOiAnaW4gJyB9LAorICAgICAgICB7IHR5cGU6ICdpbnRlZ2VyJywgdmFsdWU6ICcxMCcsIHVu
aXQ6ICdkYXknIH0sCisgICAgICAgIHsgdHlwZTogJ2dyb3VwJywgdmFsdWU6ICcsJywgdW5pdDog
J2RheScgfSwKKyAgICAgICAgeyB0eXBlOiAnaW50ZWdlcicsIHZhbHVlOiAnMDAwJywgdW5pdDog
J2RheScgfSwKKyAgICAgICAgeyB0eXBlOiAnZGVjaW1hbCcsIHZhbHVlOiAnLicsIHVuaXQ6ICdk
YXknIH0sCisgICAgICAgIHsgdHlwZTogJ2ZyYWN0aW9uJywgdmFsdWU6ICc1JywgdW5pdDogJ2Rh
eScgfSwKKyAgICAgICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZhbHVlOiAnIGRheXMnIH0KKyAgICBd
KQorKTsKKworc2hvdWxkQmUoCisgICAgSlNPTi5zdHJpbmdpZnkobmV3IEludGwuUmVsYXRpdmVU
aW1lRm9ybWF0KCdydScsIHsgc3R5bGU6ICduYXJyb3cnIH0pLmZvcm1hdFRvUGFydHMoMTAsICdz
ZWNvbmQnKSksCisgICAgSlNPTi5zdHJpbmdpZnkoWworICAgICAgICB7IHR5cGU6ICdsaXRlcmFs
JywgdmFsdWU6ICcrJyB9LAorICAgICAgICB7IHR5cGU6ICdpbnRlZ2VyJywgdmFsdWU6ICcxMCcs
IHVuaXQ6ICdzZWNvbmQnIH0sCisgICAgICAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJyDR
gScgfQorICAgIF0pCispOworCitzaG91bGRCZSgKKyAgICBKU09OLnN0cmluZ2lmeShuZXcgSW50
bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2phJywgeyBudW1lcmljOiAnYXV0bycgfSkuZm9ybWF0VG9Q
YXJ0cygwLCAnd2VlaycpKSwKKyAgICBKU09OLnN0cmluZ2lmeShbCisgICAgICAgIHsgdHlwZTog
J2xpdGVyYWwnLCB2YWx1ZTogJ+S7iumAsScgfQorICAgIF0pCispOworCitzaG91bGRCZSgKKyAg
ICBKU09OLnN0cmluZ2lmeShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2tvJywgeyBudW1i
ZXJpbmdTeXN0ZW06ICdoYW5pZGVjJyB9KS5mb3JtYXRUb1BhcnRzKC0xMCwgJ2hvdXInKSksCisg
ICAgSlNPTi5zdHJpbmdpZnkoWworICAgICAgICB7IHR5cGU6ICdpbnRlZ2VyJywgdmFsdWU6ICfk
uIDjgIcnLCB1bml0OiAnaG91cicgfSwKKyAgICAgICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZhbHVl
OiAn7Iuc6rCEIOyghCcgfQorICAgIF0pCispOworCitzaG91bGRCZSgKKyAgICBKU09OLnN0cmlu
Z2lmeShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ3N3JykuZm9ybWF0VG9QYXJ0cygxMCwg
J3llYXInKSksCisgICAgSlNPTi5zdHJpbmdpZnkoWworICAgICAgICB7IHR5cGU6ICdsaXRlcmFs
JywgdmFsdWU6ICdiYWFkYSB5YSBtaWFrYSAnIH0sCisgICAgICAgIHsgdHlwZTogJ2ludGVnZXIn
LCB2YWx1ZTogJzEwJywgdW5pdDogJ3llYXInIH0sCisgICAgXSkKKyk7CisKK3Nob3VsZEJlKAor
ICAgIEpTT04uc3RyaW5naWZ5KG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnYXInKS5mb3Jt
YXRUb1BhcnRzKC0xMCwgJ21vbnRoJykpLAorICAgIEpTT04uc3RyaW5naWZ5KFsKKyAgICAgICAg
eyB0eXBlOiAnbGl0ZXJhbCcsIHZhbHVlOiAn2YLYqNmEICcgfSwKKyAgICAgICAgeyB0eXBlOiAn
aW50ZWdlcicsIHZhbHVlOiAn2aHZoCcsIHVuaXQ6ICdtb250aCcgfSwKKyAgICAgICAgeyB0eXBl
OiAnbGl0ZXJhbCcsIHZhbHVlOiAnINij2LTZh9ixJyB9CisgICAgXSkKKyk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlh
bWwKaW5kZXggYTAzNjZjZWZiNzJjNTlhNzQzNmE5YzJkNTQ4Y2Y4ZmVjNTU0ZDk3ZC4uOGM1NTMy
NDY4NTVjZjRlNWE5OGI1NjRlZDlkMjExZjcyMWI0NjFhNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy90
ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAt
Miw2ICsyLDcgQEAKIC0tLQogZmxhZ3M6CiAgIEJpZ0ludDogdXNlQmlnSW50CisgIEludGwuUmVs
YXRpdmVUaW1lRm9ybWF0OiB1c2VJbnRsUmVsYXRpdmVUaW1lRm9ybWF0CiAgIFdlYWtSZWY6IHVz
ZVdlYWtSZWZzCiAgIGNsYXNzLWZpZWxkcy1wdWJsaWM6IHVzZVB1YmxpY0NsYXNzRmllbGRzCiAg
IGxvZ2ljYWwtYXNzaWdubWVudC1vcGVyYXRvcnM6IHVzZUxvZ2ljYWxBc3NpZ25tZW50T3BlcmF0
b3JzCkBAIC0zMCw3ICszMSw2IEBAIHNraXA6CiAgICAgLSBJbnRsLkxpc3RGb3JtYXQKICAgICAt
IEludGwuTG9jYWxlCiAgICAgLSBJbnRsLk51bWJlckZvcm1hdC11bmlmaWVkCi0gICAgLSBJbnRs
LlJlbGF0aXZlVGltZUZvcm1hdAogICAgIC0gSW50bC5TZWdtZW50ZXIKICAgcGF0aHM6CiAgICAg
LSB0ZXN0L2J1aWx0LWlucy9EYXRhVmlldy9wcm90b3R5cGUvZ2V0QmlnSW50NjQKQEAgLTE1Mywz
ICsxNTMsNyBAQCBza2lwOgogICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwOTc4MwogICAgIC0gdGVzdC9pbnRsNDAyL0RhdGVUaW1lRm9ybWF0L3Byb3RvdHlw
ZS9mb3JtYXQvcmVsYXRlZC15ZWFyLXpoLmpzCiAgICAgLSB0ZXN0L2ludGw0MDIvRGF0ZVRpbWVG
b3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvcmVsYXRlZC15ZWFyLXpoLmpzCisKKyAgICAj
IHJlcXVpcmVzIElDVSA2NSAoaHR0cHM6Ly91bmljb2RlLW9yZy5hdGxhc3NpYW4ubmV0L2Jyb3dz
ZS9JQ1UtMjA2NTQpCisgICAgLSB0ZXN0L2ludGw0MDIvUmVsYXRpdmVUaW1lRm9ybWF0L3Byb3Rv
dHlwZS9mb3JtYXQvZW4tdXMtbnVtZXJpYy1hdXRvLmpzCisgICAgLSB0ZXN0L2ludGw0MDIvUmVs
YXRpdmVUaW1lRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL2VuLXVzLW51bWVyaWMtYXV0
by5qcwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sIGIvSlNU
ZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCmluZGV4IDkyZmY3MmY4ZWYyY2JjZTEyOGYy
YTQ2Nzg3OWI0ZjMxNzNiMGQ0YTEuLmUwMzYwMzQxOGQ3ODUzOTEyZTFiNDQxZWM2MWEyNjE5MGJm
MjdiMzAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAorKysg
Yi9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKQEAgLTE5MzgsMTIgKzE5MzgsMzMg
QEAgdGVzdC9pbnRsNDAyL051bWJlckZvcm1hdC9wcm90by1mcm9tLWN0b3ItcmVhbG0uanM6CiB0
ZXN0L2ludGw0MDIvUGx1cmFsUnVsZXMvcHJvdG8tZnJvbS1jdG9yLXJlYWxtLmpzOgogICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiBuZXdUYXJnZXQucHJvdG90eXBlIGlzIHVuZGVmaW5lZCBFeHBl
Y3RlZCBTYW1lVmFsdWUowqtbb2JqZWN0IE9iamVjdF3Cuywgwqtbb2JqZWN0IE9iamVjdF3Cuykg
dG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IG5ld1RhcmdldC5wcm90
b3R5cGUgaXMgdW5kZWZpbmVkIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq1tvYmplY3QgT2JqZWN0XcK7
LCDCq1tvYmplY3QgT2JqZWN0XcK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL1JlbGF0aXZl
VGltZUZvcm1hdC9jb25zdHJ1Y3Rvci9jb25zdHJ1Y3Rvci9sb2NhbGVzLXZhbGlkLmpzOgorICBk
ZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBHcmFuZGZhdGhlcmVkIEV4cGVjdGVkIGEgUmFuZ2VFcnJv
ciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKKyAgc3Ry
aWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEdyYW5kZmF0aGVyZWQgRXhwZWN0ZWQgYSBSYW5nZUVy
cm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwordGVz
dC9pbnRsNDAyL1JlbGF0aXZlVGltZUZvcm1hdC9jb25zdHJ1Y3Rvci9jb25zdHJ1Y3Rvci9wcm90
by1mcm9tLWN0b3ItcmVhbG0uanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IG5ld1Rhcmdl
dC5wcm90b3R5cGUgaXMgdW5kZWZpbmVkIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq1tvYmplY3QgSW50
bC5SZWxhdGl2ZVRpbWVGb3JtYXRdwrssIMKrW29iamVjdCBJbnRsLlJlbGF0aXZlVGltZUZvcm1h
dF3CuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IG5ld1Rhcmdl
dC5wcm90b3R5cGUgaXMgdW5kZWZpbmVkIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq1tvYmplY3QgSW50
bC5SZWxhdGl2ZVRpbWVGb3JtYXRdwrssIMKrW29iamVjdCBJbnRsLlJlbGF0aXZlVGltZUZvcm1h
dF3CuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvcHJvdG90
eXBlL2Zvcm1hdC9wbC1wbC1zdHlsZS1sb25nLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9y
OiBFeHBlY3RlZCBTYW1lVmFsdWUowqt6YSAxMDAwIHNla3VuZMK7LCDCq3phIDHCoDAwMCBzZWt1
bmTCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVk
IFNhbWVWYWx1ZSjCq3phIDEwMDAgc2VrdW5kwrssIMKremEgMcKgMDAwIHNla3VuZMK7KSB0byBi
ZSB0cnVlJwordGVzdC9pbnRsNDAyL1JlbGF0aXZlVGltZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0
L3BsLXBsLXN0eWxlLW5hcnJvdy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0
ZWQgU2FtZVZhbHVlKMKremEgMTAwMCBzwrssIMKremEgMcKgMDAwIHPCuykgdG8gYmUgdHJ1ZScK
KyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3phIDEw
MDAgc8K7LCDCq3phIDHCoDAwMCBzwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvUmVsYXRp
dmVUaW1lRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvcGwtcGwtc3R5bGUtc2hvcnQuanM6CisgIGRl
ZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3phIDEwMDAgc2VrLsK7
LCDCq3phIDHCoDAwMCBzZWsuwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2
MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt6YSAxMDAwIHNlay7Cuywgwqt6YSAxwqAwMDAg
c2VrLsK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL1JlbGF0aXZlVGltZUZvcm1hdC9wcm90
b3R5cGUvZm9ybWF0VG9QYXJ0cy9wbC1wbC1zdHlsZS1sb25nLmpzOgorICBkZWZhdWx0OiAnVGVz
dDI2MkVycm9yOiBmb3JtYXRUb1BhcnRzKDEwMDAsIHNlY29uZCk6IGxlbmd0aCBFeHBlY3RlZCBT
YW1lVmFsdWUowqszwrssIMKrNcK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3Qy
NjJFcnJvcjogZm9ybWF0VG9QYXJ0cygxMDAwLCBzZWNvbmQpOiBsZW5ndGggRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrM8K7LCDCqzXCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9SZWxhdGl2ZVRp
bWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvcGwtcGwtc3R5bGUtbmFycm93LmpzOgor
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBmb3JtYXRUb1BhcnRzKDEwMDAsIHNlY29uZCk6IGxl
bmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqszwrssIMKrNcK7KSB0byBiZSB0cnVlJworICBzdHJp
Y3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogZm9ybWF0VG9QYXJ0cygxMDAwLCBzZWNvbmQpOiBsZW5n
dGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrM8K7LCDCqzXCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50
bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvcGwtcGwtc3R5
bGUtc2hvcnQuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IGZvcm1hdFRvUGFydHMoMTAw
MCwgc2Vjb25kKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzPCuywgwqs1wrspIHRvIGJl
IHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBmb3JtYXRUb1BhcnRzKDEwMDAs
IHNlY29uZCk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqszwrssIMKrNcK7KSB0byBiZSB0
cnVlJwogdGVzdC9pbnRsNDAyL2xhbmd1YWdlLXRhZ3MtaW52YWxpZC5qczoKICAgZGVmYXVsdDog
J1Rlc3QyNjJFcnJvcjogVGVzdCBkYXRhICJkZS1ncmVnb3J5LWdyZWdvcnkiIGlzIGEgY2Fub25p
Y2FsaXplZCBhbmQgc3RydWN0dXJhbGx5IHZhbGlkIGxhbmd1YWdlIHRhZy4nCiAgIHN0cmljdCBt
b2RlOiAnVGVzdDI2MkVycm9yOiBUZXN0IGRhdGEgImRlLWdyZWdvcnktZ3JlZ29yeSIgaXMgYSBj
YW5vbmljYWxpemVkIGFuZCBzdHJ1Y3R1cmFsbHkgdmFsaWQgbGFuZ3VhZ2UgdGFnLicKLXRlc3Qv
aW50bDQwMi9zdXBwb3J0ZWRMb2NhbGVzT2YtcmV0dXJuZWQtYXJyYXktZWxlbWVudHMtYXJlLW5v
dC1mcm96ZW4uanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IFByb3BlcnR5IDAgb2Ygb2Jq
ZWN0IHJldHVybmVkIGJ5IFN1cHBvcnRlZExvY2FsZXMgaXMgbm90IHdyaXRhYmxlLiBFeHBlY3Rl
ZCBTYW1lVmFsdWUowqtmYWxzZcK7LCDCq3RydWXCuykgdG8gYmUgdHJ1ZSAoVGVzdGluZyB3aXRo
IENvbGxhdG9yLiknCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBQcm9wZXJ0eSAwIG9m
IG9iamVjdCByZXR1cm5lZCBieSBTdXBwb3J0ZWRMb2NhbGVzIGlzIG5vdCB3cml0YWJsZS4gRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrZmFsc2XCuywgwqt0cnVlwrspIHRvIGJlIHRydWUgKFRlc3Rpbmcg
d2l0aCBDb2xsYXRvci4pJwogdGVzdC9sYW5ndWFnZS9hcmd1bWVudHMtb2JqZWN0L21hcHBlZC9u
b25jb25maWd1cmFibGUtbm9uZW51bWVyYWJsZS1ub253cml0YWJsZS1kZXNjcmlwdG9ycy1zZXQt
YnktYXJndW1lbnRzLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBvYmpb
MF0gdG8gaGF2ZSBlbnVtZXJhYmxlOmZhbHNlLicKIHRlc3QvbGFuZ3VhZ2UvYXJndW1lbnRzLW9i
amVjdC9tYXBwZWQvbm9uY29uZmlndXJhYmxlLW5vbmVudW1lcmFibGUtbm9ud3JpdGFibGUtZGVz
Y3JpcHRvcnMtc2V0LWJ5LXBhcmFtLmpzOgpAQCAtMjY5NSwxMSArMjcxNiwxMSBAQCB0ZXN0L2xh
bmd1YWdlL2V4cHJlc3Npb25zL2luc3RhbmNlb2YvcHJvdG90eXBlLWdldHRlci13aXRoLXByaW1p
dGl2ZS5qczoKICAgZGVmYXVsdDogIlRlc3QyNjJFcnJvcjogZ2V0dGVyIGZvciAncHJvdG90eXBl
JyBjYWxsZWQiCiAgIHN0cmljdCBtb2RlOiAiVGVzdDI2MkVycm9yOiBnZXR0ZXIgZm9yICdwcm90
b3R5cGUnIGNhbGxlZCIKIHRlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvbG9naWNhbC1hc3NpZ25t
ZW50L2xnY2wtYW5kLWFzc2lnbm1lbnQtb3BlcmF0b3Itbm9uLXNpbXBsZS1saHMuanM6Ci0gIGRl
ZmF1bHQ6ICJUZXN0MjYyOiBUaGlzIHN0YXRlbWVudCBzaG91bGQgbm90IGJlIGV2YWx1YXRlZC4i
CisgIGRlZmF1bHQ6ICdUZXN0MjYyOiBUaGlzIHN0YXRlbWVudCBzaG91bGQgbm90IGJlIGV2YWx1
YXRlZC4nCiB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2xvZ2ljYWwtYXNzaWdubWVudC9sZ2Ns
LW51bGxpc2gtYXNzaWdubWVudC1vcGVyYXRvci1ub24tc2ltcGxlLWxocy5qczoKLSAgZGVmYXVs
dDogIlRlc3QyNjI6IFRoaXMgc3RhdGVtZW50IHNob3VsZCBub3QgYmUgZXZhbHVhdGVkLiIKKyAg
ZGVmYXVsdDogJ1Rlc3QyNjI6IFRoaXMgc3RhdGVtZW50IHNob3VsZCBub3QgYmUgZXZhbHVhdGVk
LicKIHRlc3QvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvbG9naWNhbC1hc3NpZ25tZW50L2xnY2wtb3It
YXNzaWdubWVudC1vcGVyYXRvci1ub24tc2ltcGxlLWxocy5qczoKLSAgZGVmYXVsdDogIlRlc3Qy
NjI6IFRoaXMgc3RhdGVtZW50IHNob3VsZCBub3QgYmUgZXZhbHVhdGVkLiIKKyAgZGVmYXVsdDog
J1Rlc3QyNjI6IFRoaXMgc3RhdGVtZW50IHNob3VsZCBub3QgYmUgZXZhbHVhdGVkLicKIHRlc3Qv
bGFuZ3VhZ2UvZXhwcmVzc2lvbnMvbmV3L2N0b3JFeHByLWZuLXJlZi1iZWZvcmUtYXJncy1ldmFs
LWZuLXdyYXB1cC5qczoKICAgZGVmYXVsdDogIlR5cGVFcnJvcjogMSBpcyBub3QgYSBjb25zdHJ1
Y3RvciAoZXZhbHVhdGluZyAnbmV3IHgoeCA9IDEpJykiCiAgIHN0cmljdCBtb2RlOiAiVHlwZUVy
cm9yOiAxIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgeCh4ID0gMSknKSIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396892</attachid>
            <date>2020-04-18 22:14:01 -0700</date>
            <delta_ts>2020-04-19 00:28:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209770-20200418221400.patch</filename>
            <type>text/plain</type>
            <size>102446</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZDg1MDUxZGE1NmI2Zjc2MGM2NjI3MWEwN2E0ZmYyYTJlOTU2Mzc2Li5mZWU1NWY2OTIwYzdiYTQ3
YjViMThiZjBhMDVhNWQ2NDA0MzRjMGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OSBAQAorMjAyMC0wNC0xOCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBtaXNz
aW5nIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5NzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSByZWNlbnQgRUNNQS00MDIgZmVhdHVyZSBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdC4KKworICAgICAgICBSZWxhdGl2ZVRpbWVGb3JtYXQgaGFz
IGZvcm1hdCAvIGZvcm1hdFRvUGFydHMgZnVuY3Rpb25zIGxpa2UgTnVtYmVyRm9ybWF0IC8gRGF0
ZVRpbWVGb3JtYXQKKyAgICAgICAgYW5kIGlzIHVzZWQgdG8gdHVybiBhIG51bWJlciBhbmQgdW5p
dCBpbnRvIGEgZm9ybWF0dGVkIHJlbGF0aXZlIHRpbWUgc3RyaW5nLCBlLmcuOgorCisgICAgICAg
ICAgbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicpLmZvcm1hdCgxMCwgJ2RheScpCisg
ICAgICAgICAgPiAnaW4gMTAgZGF5cycKKworICAgICAgICAgIG5ldyBJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdCgnZW4nLCB7IG51bWVyaWM6ICdhdXRvJyB9KS5mb3JtYXQoMCwgJ2RheScpCisgICAg
ICAgICAgPiAndG9kYXknCisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgUmVsYXRpdmVUaW1l
Rm9ybWF0I2Zvcm1hdFRvUGFydHMgbWFrZXMgZGlyZWN0IHVzZSBvZiBOdW1iZXJGb3JtYXQjZm9y
bWF0VG9QYXJ0cywKKyAgICAgICAgYXMgdGhlIHJlbGF0aXZlIHRpbWUgc3RyaW5nIGNvbnNpc3Rz
IG9mIGF0IG1vc3Qgb25lIGZvcm1hdHRlZCBudW1iZXIgd2l0aCBvcHRpb25hbCBsaXRlcmFsIHRl
eHQgb24gZWl0aGVyIHNpZGUuCisKKyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIHJ1bnRpbWUtZ3Vh
cmRlZCBieSB0aGUgYHVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXRgIG9wdGlvbi4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0lu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50
aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnJlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGlt
ZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlND
OjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgQWRkIGZlYXR1cmUg
YW5kIHJ1bnRpbWUgb3B0aW9uLgorCisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpJ
bnRsUGx1cmFsUnVsZXM6OnJlc29sdmVkT3B0aW9ucyk6CisgICAgICAgIE1ha2UgInR5cGUiIGEg
cHJvcGVydHkgbmFtZS4KKworICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDoKKyAgICAgICAgRmFjdG9yIG91dCBmb3JtYXRUb1Bh
cnRzSW50ZXJuYWwgc28gdGhhdCBSZWxhdGl2ZVRpbWVGb3JtYXQgY2FuIHVzZSBpdCB3aXRoIGl0
cyBvd24gVU51bWJlckZvcm1hdC4KKyAgICAgICAgKFRoaXMgbG9naWMgaXMgdG9vIGNvbXBsaWNh
dGVkIHRvIGR1cGxpY2F0ZTsgaXQncyBiZWNhdXNlIElDVSB3b24ndCBzcGxpdCwgZS5nLiwgIjEw
LDAwMCIgaW50byBwYXJ0cyBmb3IgdXMuKQorCisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6SW50bE9iamVjdCk6CisgICAgICAgIChK
U0M6OkludGxPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6aW50bEF2YWlsYWJsZUxvY2FsZXMpOgorICAgICAg
ICAoSlNDOjppbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgKEpTQzo6aXNV
bmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUpOgorICAgICAgICAoSlNDOjpzdXBwb3J0ZWRMb2Nh
bGVzKToKKyAgICAgICAgKEpTQzo6aW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcyk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6aW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcyk6CisgICAgICAgIChKU0M6Omlu
dGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgKEpTQzo6aW50bFBsdXJh
bFJ1bGVzQXZhaWxhYmxlTG9jYWxlcyk6CisgICAgICAgIChKU0M6OmludGxSZWxhdGl2ZVRpbWVG
b3JtYXRBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgUGVyZm9ybSB0aHJlZSBjb3JyZWN0aW9u
cyBmb3IgSW50bCBjbGFzc2VzOgorICAgICAgICAgIDEuIENvbGxhdG9yIHNob3VsZCBiZSB0aGUg
b25seSBjbGFzcyB3aXRoIHVuaXF1ZSAiYXZhaWxhYmxlIGxvY2FsZXMiLgorICAgICAgICAgICAg
IFt1bnVtfHVkYXRdX2dldEF2YWlsYWJsZSBleGlzdCBidXQgdGhleSd2ZSBkZWZlcnJlZCB0byB1
bG9jX2dldEF2YWlsYWJsZSBmb3IgMjAgeWVhcnMuCisgICAgICAgICAgMi4gaXNVbmljb2RlTG9j
YWxlSWRlbnRpZmllclR5cGUgaXNuJ3QganVzdCBgYWxwaGFudW17Myw4fWAgYnV0IHJhdGhlciBg
YWxwaGFudW17Myw4fSAoc2VwIGFscGhhbnVtezMsOH0pKmAuCisgICAgICAgICAgICAgVGhpcyBp
cyBteSBvd24gbWlzdGFrZSBmcm9tIHIyMzk5NDEuCisgICAgICAgICAgMy4gc3VwcG9ydGVkTG9j
YWxlc09mIGVudHJpZXMgc2hvdWxkIG5vdCBiZSBmcm96ZW4uCisgICAgICAgICAgICAgQ2hhbmdl
ZCBpbiBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9lY21hNDAyL3B1bGwvMjc4LgorCiAyMDIwLTA0
LTE4ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgU3Vw
cG9ydCBhbiBpbmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50
cyAoIkJpZ0ludDMyIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkMWQ5
MjMyOTk0ZDFkZGRiZThhMDgzY2Q2ZDYzZTQ5N2FlMjg0M2NmLi5hZmIyNTQ3OWFkZTI4NDViODc4
OGFmN2M1NGY5YTBlYjk2OGFlZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC03NSw2ICs3NSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMK
ICAgICBydW50aW1lL0ludGxPYmplY3QuY3BwCiAgICAgcnVudGltZS9JbnRsUGx1cmFsUnVsZXND
b25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAK
KyAgICBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKyAgICBy
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9K
U0RhdGFWaWV3UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCiAg
ICAgcnVudGltZS9KU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRl
eCAyMzQwY2RmYWM0NjFiOWI2YjMxYjA1NzhiMjVhZmI1NTViYWRhZDhiLi4zNGFjZGY4N2U4YTRk
NjliZjQ1ZDUyZjMyNDVmYTAwNDVlMjNjN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTQyLDYgKzE0Miw4
IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAK
ICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKICQoUFJPSkVDVF9ESVIpL3J1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50
aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUv
SW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAorJChQUk9KRUNUX0RJUikvcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikv
cnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSlNJbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBhNzQ0NTBjYTc5MWM3ZmE4ZDYyYzhi
OTA5YWFmZTQxNGU5NDZlZjBkLi5kYWY5NDMyYTkxNmU1NzQ2ZmRkOWUxODgzYjk3YjZhZGFkMzFm
YzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0zMyw2ICszMyw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
Lmx1CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
SW50bE9iamVjdC5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlLmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bFJlbGF0
aXZlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0RhdGFWaWV3UHJvdG90eXBlLmx1
dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
SlNHbG9iYWxPYmplY3QubHV0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggZTlkODA0ZDllOGJlNWMzNDVlZjQ3MjE5ZTBlOTk2ZDMxOWJiZjkwNy4uZTdm
MjEzMTM5YWM4YzQ2NjQ2MzQ4N2JhNzY3NzE1YmY2MzVlMDM1MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE1Myw2ICsxNTMsOCBAQCBPQkpFQ1RfTFVU
X0hFQURFUlMgPSBcCiAgICAgSW50bE9iamVjdC5sdXQuaCBcCiAgICAgSW50bFBsdXJhbFJ1bGVz
Q29uc3RydWN0b3IubHV0LmggXAogICAgIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5sdXQuaCBc
CisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oIFwKICAgICBKU0RhdGFWaWV3UHJvdG90
eXBlLmx1dC5oIFwKICAgICBKU0dsb2JhbE9iamVjdC5sdXQuaCBcCiAgICAgSlNJbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDcwZmM5OWZiNGU3N2UwMzcyNDNlMWQzMTdlNGM0ZDlkOTBlYjAxZTIuLjE1Y2NkMGM3MjIzZDZh
NjJjMmY4Y2M0ZGVmMjEzNWNhYjIwZDNkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC00MzM0LDYgKzQzMzQsMTIgQEAKIAkJQTFFMDQ1MUIxQzI1QjRCMTAwQkI2NjNDIC8qIFN0
cmluZ1Byb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9
IFN0cmluZ1Byb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGRTFF
QjAxQzJDNTM3RTAwQTI4OUZGIC8qIERhdGVQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmphdmFzY3JpcHQ7IHBhdGggPSBEYXRlUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMjc5NThEN0ZBMTE0MkIwQUM5RTM2NEQgLyogV2FzbUNvbnRleHRJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21Db250ZXh0SW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0JGODg0QjI0NDgwQkRFMDAxQjlG
MzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNCRjg4NEMyNDQ4MEJERjAwMUI5RjM1
IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBM0JGODg0RDI0NDgwQkRGMDAxQjlGMzUgLyogSW50bFJl
bGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQkY4ODRFMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUEzQkY4ODRGMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
dGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
M0JGODg1MDI0NDgwQkUxMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRkY5QkM1MjIzNDc0NjYwMEIxQTlBQiAvKiBZ
YXJyRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckZsYWdzLmg7
IHBhdGggPSB5YXJyL1lhcnJGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
M0ZGOUJDNjIyMzQ3NDY2MDBCMUE5QUIgLyogWWFyckZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJGbGFncy5jcHA7IHBhdGggPSB5YXJyL1lhcnJGbGFn
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTEzMTg4RTBGQUYwMDEx
MEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNzI2NSw2ICs3MjcxLDEyIEBACiAJCQkJN0Q1RkIxOTAyMDc0NEJGMTAwNURE
RjY0IC8qIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmggKi8sCiAJCQkJN0Q1RkIxOTEyMDc0
NEJGMTAwNURERjY0IC8qIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAgKi8sCiAJCQkJN0Q1
RkIxOEQyMDc0NEFFODAwNURERjY0IC8qIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oICovLAor
CQkJCUEzQkY4ODRGMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNw
cCAqLywKKwkJCQlBM0JGODg1MDI0NDgwQkUxMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZv
cm1hdC5oICovLAorCQkJCUEzQkY4ODREMjQ0ODBCREYwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwICovLAorCQkJCUEzQkY4ODRFMjQ0ODBCRTAwMDFCOUYz
NSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKKwkJCQlBM0JGODg0
QjI0NDgwQkRFMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAg
Ki8sCisJCQkJQTNCRjg4NEMyNDQ4MEJERjAwMUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRQcm90b3R5cGUuaCAqLywKIAkJCQkwRjI3NUYyQzFFQ0UwNzk2MDA2MjBENDcgLyogSW50cmlu
c2ljLmNwcCAqLywKIAkJCQk4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmgg
Ki8sCiAJCQkJOEI5RjZENTUxRDU5MTJGQTAwMUM3MzlGIC8qIEl0ZXJhdGlvbktpbmQuaCAqLywK
QEAgLTg5NTcsNyArODk2OSw2IEBACiAJCQkJMEZFQzg1OTExQkRBQ0RDNzAwODBGRjc0IC8qIEFp
clZhbGlkYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDM0M1MzFGMzNBNDE2MDBGNTlCNkMg
LyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNzYyMEIx
REI5NTlGOTAwQjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MzMxMTFCOEIyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkRDRTExQzFGQUU2MjA5MDA2RjM5MDEgLyogQWxsb2NhdGlvbkZhaWx1cmVNb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjc1QTA2MzIwMEQyNjFGMDAzOEUyQ0YgLyogQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjMwQ0I1RTFGQ0U0RTM3MDA0QjUzMjMgLyogQWxsb2NhdG9y
Rm9yTW9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDE5MSw2ICsxMDIwMiw3IEBACiAJCQkJMEZF
MDUwMjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRD
RSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwNjgxODlBRkU5QzAwNjMz
MjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMjExODhF
RkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
RkQwMDZFMTg5QjAwQUEwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGIzNjkyZjUwZWYxZmRmNDEwZWZiNGNj
MGViZjk3NmZjNjFmOWI0YTcuLjBmNGM1MGRmMzY3YzY1NjA4YTBhZjYyODNhMGRjNTI2YTk0MTBh
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTgxOSw2ICs4MTksOSBAQCBydW50
aW1lL0ludGxPYmplY3QuY3BwCiBydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKIHJ1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1By
b3RvdHlwZS5jcHAKK3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKK3J1bnRpbWUv
SW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAorcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAogcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3Bw
CiBydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmNwcAogcnVudGltZS9KU0FycmF5LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5k
ZXggZTJkYzg4N2IzODQ0MzRlMDUxNjY2YTBiNDI2NTIwMDM4ZjRiNTlmNC4uZDE2NGJhNGJlZjhi
NGVlZmY5MzE3MzdiMzk1M2YzNGZlMTIzMmEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC00OSw2ICs0OSw3IEBACiAgICAg
bWFjcm8oUHJvbWlzZSkgXAogICAgIG1hY3JvKFJlZmxlY3QpIFwKICAgICBtYWNybyhSZWdFeHAp
IFwKKyAgICBtYWNybyhSZWxhdGl2ZVRpbWVGb3JtYXQpIFwKICAgICBtYWNybyhSZW1vdGVQbGF5
YmFjaykgXAogICAgIG1hY3JvKFNldCkgXAogICAgIG1hY3JvKFNoYXJlZEFycmF5QnVmZmVyKSBc
CkBAIC0xNzgsNiArMTc5LDcgQEAKICAgICBtYWNybyhzdGFjaykgXAogICAgIG1hY3JvKHN0YWNr
VHJhY2VMaW1pdCkgXAogICAgIG1hY3JvKHN0aWNreSkgXAorICAgIG1hY3JvKHN0eWxlKSBcCiAg
ICAgbWFjcm8oc3ViYXJyYXkpIFwKICAgICBtYWNybyhzdW1tYXJ5KSBcCiAgICAgbWFjcm8odGFy
Z2V0KSBcCkBAIC0xOTMsNiArMTk1LDcgQEAKICAgICBtYWNybyh0b0xvY2FsZVN0cmluZykgXAog
ICAgIG1hY3JvKHRvUHJlY2lzaW9uKSBcCiAgICAgbWFjcm8odG9TdHJpbmcpIFwKKyAgICBtYWNy
byh0eXBlKSBcCiAgICAgbWFjcm8odWlkKSBcCiAgICAgbWFjcm8odW5pY29kZSkgXAogICAgIG1h
Y3JvKHVzYWdlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0LmNwcAppbmRleCAwMDMwMmZlNGIxMzVkMWQ4M2E0Y2RjODFkYjdkMTM4
MjEwZmM2N2U4Li4yZDEzM2Q2M2FlYmM0ZGI4NzU5OWM4MGRjYmQwZjEwYmY3YTg5ZDE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5jcHAKQEAgLTEwMjksNyArMTAyOSw2IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpm
b3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2CiAgICAg
ICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAK
ICAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5n
dGgpOwotICAgIGF1dG8gdHlwZVByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJ0eXBlIik7CiAgICAgYXV0byBsaXRlcmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5n
KHZtLCAibGl0ZXJhbCJfcyk7CiAKICAgICBpbnQzMl90IHByZXZpb3VzRW5kSW5kZXggPSAwOwpA
QCAtMTA0Myw3ICsxMDQyLDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFRv
UGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHYKICAgICAgICAgaWYg
KHByZXZpb3VzRW5kSW5kZXggPCBiZWdpbkluZGV4KSB7CiAgICAgICAgICAgICBhdXRvIHZhbHVl
ID0ganNTdHJpbmcodm0sIHJlc3VsdFN0cmluZy5zdWJzdHJpbmcocHJldmlvdXNFbmRJbmRleCwg
YmVnaW5JbmRleCAtIHByZXZpb3VzRW5kSW5kZXgpKTsKICAgICAgICAgICAgIEpTT2JqZWN0KiBw
YXJ0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIHBh
cnQtPnB1dERpcmVjdCh2bSwgdHlwZVByb3BlcnR5TmFtZSwgbGl0ZXJhbFN0cmluZyk7CisgICAg
ICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIGxpdGVy
YWxTdHJpbmcpOwogICAgICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT52YWx1ZSwgdmFsdWUpOwogICAgICAgICAgICAgcGFydHMtPnB1c2goZ2xvYmFsT2JqZWN0
LCBwYXJ0KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBA
IC0xMDU0LDcgKzEwNTMsNyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0VG9Q
YXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdgogICAgICAgICAgICAg
YXV0byB0eXBlID0ganNTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5nKFVEYXRlRm9ybWF0RmllbGQo
ZmllbGRUeXBlKSkpOwogICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGpzU3RyaW5nKHZtLCByZXN1
bHRTdHJpbmcuc3Vic3RyaW5nKGJlZ2luSW5kZXgsIGVuZEluZGV4IC0gYmVnaW5JbmRleCkpOwog
ICAgICAgICAgICAgSlNPYmplY3QqIHBhcnQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxP
YmplY3QpOwotICAgICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB0eXBlUHJvcGVydHlOYW1l
LCB0eXBlKTsKKyAgICAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+dHlwZSwgdHlwZSk7CiAgICAgICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnZhbHVlLCB2YWx1ZSk7CiAgICAgICAgICAgICBwYXJ0cy0+cHVzaChnbG9iYWxP
YmplY3QsIHBhcnQpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHAKaW5kZXggY2E0Mjc5Njg2YTZmYWIwZDhkZDJkYzViZTFmYmExOTFkMTcyYzhjOC4uOTY4
ZWI1ZTI3N2MwOWZjOGRmMzRkYmE0ZGFhYjEyMTdmMDBhNjQ5NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTIsNiArMiw3
IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29u
ZXIuZmFtaWx5KQogICogQ29weXJpZ2h0IChDKSAyMDE2IFN1a29sc2FrIFNha3NodXdvbmcgKHN1
a29sc2FrQGdtYWlsLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xOTUsNyArMTk2LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKIAogICAgIG1fbnVtYmVy
aW5nU3lzdGVtID0gcmVzdWx0LmdldCgibnUiX3MpOwogCi0gICAgU3RyaW5nIHN0eWxlU3RyaW5n
ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJzdHlsZSIpLCB7ICJkZWNpbWFsIiwgInBlcmNlbnQiLCAiY3VycmVuY3ki
IH0sICJzdHlsZSBtdXN0IGJlIGVpdGhlciBcImRlY2ltYWxcIiwgXCJwZXJjZW50XCIsIG9yIFwi
Y3VycmVuY3lcIiIsICJkZWNpbWFsIik7CisgICAgU3RyaW5nIHN0eWxlU3RyaW5nID0gaW50bFN0
cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxl
LCB7ICJkZWNpbWFsIiwgInBlcmNlbnQiLCAiY3VycmVuY3kiIH0sICJzdHlsZSBtdXN0IGJlIGVp
dGhlciBcImRlY2ltYWxcIiwgXCJwZXJjZW50XCIsIG9yIFwiY3VycmVuY3lcIiIsICJkZWNpbWFs
Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoc3R5
bGVTdHJpbmcgPT0gImRlY2ltYWwiKQogICAgICAgICBtX3N0eWxlID0gU3R5bGU6OkRlY2ltYWw7
CkBAIC00NDEsNyArNDQyLDcgQEAgSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVk
T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTT2JqZWN0KiBvcHRp
b25zID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZSwganNTdHJpbmcodm0sIG1fbG9j
YWxlKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5udW1i
ZXJpbmdTeXN0ZW0sIGpzU3RyaW5nKHZtLCBtX251bWJlcmluZ1N5c3RlbSkpOwotICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0eWxlIiksIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgc3R5bGVTdHJpbmcobV9zdHlsZSkpKTsKKyAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIHN0eWxlU3RyaW5nKG1fc3R5bGUpKSk7CiAgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6
OkN1cnJlbmN5KSB7CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV9jdXJy
ZW5jeSkpOwogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjdXJyZW5jeURpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjdXJy
ZW5jeURpc3BsYXlTdHJpbmcobV9jdXJyZW5jeURpc3BsYXkpKSk7CkBAIC01MDMsNiArNTA0LDUw
IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpwYXJ0VHlwZVN0cmluZyhVTnVtYmVy
Rm9ybWF0RmllbGRzIGZpZWxkLCBkb3VibGUKICAgICByZXR1cm4gInVua25vd24iX3M7CiB9CiAK
K3ZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQs
IFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqIGl0ZXJhdG9yLCBKU0FycmF5KiBwYXJ0cywgSlNTdHJp
bmcqIHVuaXQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gc3RyaW5nTGVuZ3Ro
ID0gZm9ybWF0dGVkLmxlbmd0aCgpOworCisgICAgaW50MzJfdCBsaXRlcmFsRmllbGRUeXBlID0g
LTE7CisgICAgYXV0byBsaXRlcmFsRmllbGQgPSBJbnRsTnVtYmVyRm9ybWF0RmllbGQobGl0ZXJh
bEZpZWxkVHlwZSwgc3RyaW5nTGVuZ3RoKTsKKyAgICBWZWN0b3I8SW50bE51bWJlckZvcm1hdEZp
ZWxkPiBmaWVsZHMoc3RyaW5nTGVuZ3RoLCBsaXRlcmFsRmllbGQpOworICAgIGludDMyX3QgYmVn
aW5JbmRleCA9IDA7CisgICAgaW50MzJfdCBlbmRJbmRleCA9IDA7CisgICAgYXV0byBmaWVsZFR5
cGUgPSB1ZmllbGRwb3NpdGVyX25leHQoaXRlcmF0b3IsICZiZWdpbkluZGV4LCAmZW5kSW5kZXgp
OworICAgIHdoaWxlIChmaWVsZFR5cGUgPj0gMCkgeworICAgICAgICBhdXRvIHNpemUgPSBlbmRJ
bmRleCAtIGJlZ2luSW5kZXg7CisgICAgICAgIGZvciAoYXV0byBpID0gYmVnaW5JbmRleDsgaSA8
IGVuZEluZGV4OyArK2kpIHsKKyAgICAgICAgICAgIC8vIE9ubHkgb3ZlcnJpZGUgcHJldmlvdXMg
dmFsdWUgaWYgbmV3IHZhbHVlIGlzIG1vcmUgc3BlY2lmaWMuCisgICAgICAgICAgICBpZiAoZmll
bGRzW2ldLnNpemUgPj0gc2l6ZSkKKyAgICAgICAgICAgICAgICBmaWVsZHNbaV0gPSBJbnRsTnVt
YmVyRm9ybWF0RmllbGQoZmllbGRUeXBlLCBzaXplKTsKKyAgICAgICAgfQorICAgICAgICBmaWVs
ZFR5cGUgPSB1ZmllbGRwb3NpdGVyX25leHQoaXRlcmF0b3IsICZiZWdpbkluZGV4LCAmZW5kSW5k
ZXgpOworICAgIH0KKworICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgImxpdGVyYWwiX3MpOworICAgIGF1dG8gdW5pdE5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAidW5pdCIpOworCisgICAgc2l6ZV90IGN1cnJlbnRJbmRleCA9IDA7CisgICAg
d2hpbGUgKGN1cnJlbnRJbmRleCA8IHN0cmluZ0xlbmd0aCkgeworICAgICAgICBhdXRvIHN0YXJ0
SW5kZXggPSBjdXJyZW50SW5kZXg7CisgICAgICAgIGF1dG8gZmllbGRUeXBlID0gZmllbGRzW2N1
cnJlbnRJbmRleF0udHlwZTsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA8IHN0cmluZ0xl
bmd0aCAmJiBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlID09IGZpZWxkVHlwZSkKKyAgICAgICAg
ICAgICsrY3VycmVudEluZGV4OworICAgICAgICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09
IGxpdGVyYWxGaWVsZFR5cGUgPyBsaXRlcmFsU3RyaW5nIDoganNTdHJpbmcodm0sIHBhcnRUeXBl
U3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgdmFsdWUpKTsKKyAgICAgICAg
YXV0byBwYXJ0VmFsdWUgPSBqc1N1YnN0cmluZyh2bSwgZm9ybWF0dGVkLCBzdGFydEluZGV4LCBj
dXJyZW50SW5kZXggLSBzdGFydEluZGV4KTsKKyAgICAgICAgSlNPYmplY3QqIHBhcnQgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgICAgICBwYXJ0LT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIHBhcnRUeXBlKTsKKyAgICAgICAgcGFydC0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwgcGFydFZhbHVlKTsKKyAgICAgICAg
aWYgKHVuaXQpCisgICAgICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHVuaXROYW1lLCB1bml0
KTsKKyAgICAgICAgcGFydHMtPnB1c2goZ2xvYmFsT2JqZWN0LCBwYXJ0KTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICB9Cit9CisKIEpTVmFsdWUgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3VibGUgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAt
NTIwLDcgKzU2NSw2IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsCiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImZhaWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKIAotICAg
IHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQoMzIp
OwogICAgIGF1dG8gcmVzdWx0TGVuZ3RoID0gdW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMobV9u
dW1iZXJGb3JtYXQuZ2V0KCksIHZhbHVlLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCBm
aWVsZEl0ci5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVS
RkxPV19FUlJPUikgewpAQCAtNTMxLDQ1ICs1NzUsMTQgQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9y
bWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2
YWwKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3Mp
OwogCi0gICAgaW50MzJfdCBsaXRlcmFsRmllbGRUeXBlID0gLTE7Ci0gICAgYXV0byBsaXRlcmFs
RmllbGQgPSBJbnRsTnVtYmVyRm9ybWF0RmllbGQobGl0ZXJhbEZpZWxkVHlwZSwgcmVzdWx0TGVu
Z3RoKTsKLSAgICBWZWN0b3I8SW50bE51bWJlckZvcm1hdEZpZWxkPiBmaWVsZHMocmVzdWx0TGVu
Z3RoLCBsaXRlcmFsRmllbGQpOwotICAgIGludDMyX3QgYmVnaW5JbmRleCA9IDA7Ci0gICAgaW50
MzJfdCBlbmRJbmRleCA9IDA7Ci0gICAgYXV0byBmaWVsZFR5cGUgPSB1ZmllbGRwb3NpdGVyX25l
eHQoZmllbGRJdHIuZ2V0KCksICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOwotICAgIHdoaWxlIChm
aWVsZFR5cGUgPj0gMCkgewotICAgICAgICBhdXRvIHNpemUgPSBlbmRJbmRleCAtIGJlZ2luSW5k
ZXg7Ci0gICAgICAgIGZvciAoYXV0byBpID0gYmVnaW5JbmRleDsgaSA8IGVuZEluZGV4OyArK2kp
IHsKLSAgICAgICAgICAgIC8vIE9ubHkgb3ZlcnJpZGUgcHJldmlvdXMgdmFsdWUgaWYgbmV3IHZh
bHVlIGlzIG1vcmUgc3BlY2lmaWMuCi0gICAgICAgICAgICBpZiAoZmllbGRzW2ldLnNpemUgPj0g
c2l6ZSkKLSAgICAgICAgICAgICAgICBmaWVsZHNbaV0gPSBJbnRsTnVtYmVyRm9ybWF0RmllbGQo
ZmllbGRUeXBlLCBzaXplKTsKLSAgICAgICAgfQotICAgICAgICBmaWVsZFR5cGUgPSB1ZmllbGRw
b3NpdGVyX25leHQoZmllbGRJdHIuZ2V0KCksICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOwotICAg
IH0KKyAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHRM
ZW5ndGgpOwogCiAgICAgSlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGds
b2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9u
KEFycmF5V2l0aENvbnRpZ3VvdXMpLCAwKTsKICAgICBpZiAoIXBhcnRzKQogICAgICAgICByZXR1
cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAgIHVuc2ln
bmVkIGluZGV4ID0gMDsKIAotICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gU3RyaW5nKHJlc3VsdC5k
YXRhKCksIHJlc3VsdExlbmd0aCk7Ci0gICAgYXV0byB0eXBlUHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiKTsKLSAgICBhdXRvIGxpdGVyYWxTdHJpbmcgPSBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJsaXRlcmFsIl9zKTsKLQotICAgIGludDMyX3QgY3VycmVu
dEluZGV4ID0gMDsKLSAgICB3aGlsZSAoY3VycmVudEluZGV4IDwgcmVzdWx0TGVuZ3RoKSB7Ci0g
ICAgICAgIGF1dG8gc3RhcnRJbmRleCA9IGN1cnJlbnRJbmRleDsKLSAgICAgICAgYXV0byBmaWVs
ZFR5cGUgPSBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlOwotICAgICAgICB3aGlsZSAoY3VycmVu
dEluZGV4IDwgcmVzdWx0TGVuZ3RoICYmIGZpZWxkc1tjdXJyZW50SW5kZXhdLnR5cGUgPT0gZmll
bGRUeXBlKQotICAgICAgICAgICAgKytjdXJyZW50SW5kZXg7Ci0gICAgICAgIGF1dG8gcGFydFR5
cGUgPSBmaWVsZFR5cGUgPT0gbGl0ZXJhbEZpZWxkVHlwZSA/IGxpdGVyYWxTdHJpbmcgOiBqc1N0
cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyhmaWVsZFR5cGUpLCB2
YWx1ZSkpOwotICAgICAgICBhdXRvIHBhcnRWYWx1ZSA9IGpzU3Vic3RyaW5nKHZtLCByZXN1bHRT
dHJpbmcsIHN0YXJ0SW5kZXgsIGN1cnJlbnRJbmRleCAtIHN0YXJ0SW5kZXgpOwotICAgICAgICBK
U09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAg
ICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdHlwZVByb3BlcnR5TmFtZSwgcGFydFR5cGUpOwotICAg
ICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBwYXJ0VmFs
dWUpOwotICAgICAgICBwYXJ0cy0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsr
LCBwYXJ0KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICB9
CisgICAgZm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgdmFsdWUsIHJlc3VsdFN0
cmluZywgZmllbGRJdHIuZ2V0KCksIHBhcnRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogCiAgICAgcmV0dXJuIHBhcnRzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCmluZGV4IDJiMDZmMDdmY2FmNGNkYjdl
Yzk5NDhkYWFmNmQzNjE5Mzc4N2FkOTEuLjlmMTBiNWQ0MzY3MGI4ZGUyZjZmNDBlNGQ3NzMzODVl
MzU2ZjE4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFu
ZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01NywxMiArNTgsMTQgQEAgcHVibGljOgogICAgIHZvaWQgaW5p
dGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgbG9jYWxlcywgSlNW
YWx1ZSBvcHRpb25zVmFsdWUpOwogICAgIEpTVmFsdWUgZm9ybWF0KEpTR2xvYmFsT2JqZWN0Kiwg
ZG91YmxlKTsKICAgICBKU1ZhbHVlIGZvcm1hdChKU0dsb2JhbE9iamVjdCosIEpTQmlnSW50Kik7
Ci0gICAgSlNWYWx1ZSBmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlIHZhbHVl
KTsKKyAgICBKU1ZhbHVlIGZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUpOwog
ICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKTsKIAogICAgIEpT
Qm91bmRGdW5jdGlvbiogYm91bmRGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRm9ybWF0
LmdldCgpOyB9CiAgICAgdm9pZCBzZXRCb3VuZEZvcm1hdChWTSYsIEpTQm91bmRGdW5jdGlvbiop
OwogCisgICAgc3RhdGljIHZvaWQgZm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0
KiwgZG91YmxlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgVUZpZWxkUG9zaXRpb25JdGVyYXRv
ciosIEpTQXJyYXkqLCBKU1N0cmluZyogdW5pdCA9IG51bGxwdHIpOworCiBwcm90ZWN0ZWQ6CiAg
ICAgSW50bE51bWJlckZvcm1hdChWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5j
cHAKaW5kZXggZmIyYmI1YjY5MmNjZWMwMGUxZTRhYjc2NDI0NTdlMTExYTYyMzM1MS4uNTdiNTk2
ZDFlYTI0ZTJmYTgzOWY1NDUyZDVlZWYwNzJhNjdiN2I1YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQogICog
Q29weXJpZ2h0IChDKSAyMDE1IFN1a29sc2FrIFNha3NodXdvbmcgKHN1a29sc2FrQGdtYWlsLmNv
bSkKICAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1l
bnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSwxNSArNDAsMTUg
QEAKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50
bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXNQcm90
b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIK
KyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
TG9va3VwLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiT3B0aW9u
cy5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgotI2luY2x1ZGUgPHVuaWNvZGUvdWRhdC5o
PgogI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgotI2luY2x1ZGUgPHVuaWNvZGUvdW51bS5oPgog
I2luY2x1ZGUgPHVuaWNvZGUvdW51bXN5cy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CkBAIC0xMTQsMTcgKzExNSwyNiBAQCBzdHJ1Y3Qg
TWF0Y2hlclJlc3VsdCB7CiBjb25zdCBDbGFzc0luZm8gSW50bE9iamVjdDo6c19pbmZvID0geyAi
T2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgJmludGxPYmplY3RUYWJsZSwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShJbnRsT2JqZWN0KSB9OwogCiBJbnRsT2JqZWN0OjpJbnRsT2JqZWN0KFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiB7CiB9CiAKLUludGxPYmplY3Qq
IEludGxPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorSW50bE9i
amVjdCogSW50bE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgSW50bE9iamVjdCogb2JqZWN0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE9iamVjdD4odm0uaGVhcCkpIEludGxPYmpl
Y3Qodm0sIHN0cnVjdHVyZSk7Ci0gICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAg
b2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gb2Jq
ZWN0OwogfQogCit2b2lkIEludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CisgICAgaWYgKE9wdGlvbnM6OnVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXQoKSkgeworICAgICAg
ICBhdXRvKiByZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciA9IEludGxSZWxhdGl2ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1
bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8SW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlw
ZSo+KGdsb2JhbE9iamVjdC0+cmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJlKCktPnN0b3JlZFBy
b3RvdHlwZU9iamVjdCgpKSk7CisgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5SZWxhdGl2ZVRpbWVGb3JtYXQsIHJlbGF0aXZlVGltZUZvcm1h
dENvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CisgICAgfQorfQorCiBTdHJ1Y3R1cmUqIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQogewogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
QEAgLTE2NCwyNiArMTc0LDcgQEAgc3RhdGljIHZvaWQgYWRkTWlzc2luZ1NjcmlwdExvY2FsZXMo
SGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzKQogICAgICAgICBhdmFpbGFibGVMb2Nh
bGVzLmFkZCh6aF9UV19TdHJpbmcuZ2V0KCkpOwogfQogCi1jb25zdCBIYXNoU2V0PFN0cmluZz4m
IGludGxDb2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PFN0cmluZz4+IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXM7Ci0gICAgSGFzaFNl
dDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzID0gY2FjaGVkQXZhaWxhYmxlTG9jYWxlcy5nZXQo
KTsKLQotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKLSAgICBzdGQ6
OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgWyZdIHsKLSAgICAgICAgQVNTRVJUKGF2YWlsYWJs
ZUxvY2FsZXMuaXNFbXB0eSgpKTsKLSAgICAgICAgaW50MzJfdCBjb3VudCA9IHVjb2xfY291bnRB
dmFpbGFibGUoKTsKLSAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkg
ewotICAgICAgICAgICAgU3RyaW5nIGxvY2FsZSA9IGNvbnZlcnRJQ1VMb2NhbGVUb0JDUDQ3TGFu
Z3VhZ2VUYWcodWNvbF9nZXRBdmFpbGFibGUoaSkpOwotICAgICAgICAgICAgaWYgKCFsb2NhbGUu
aXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMuYWRkKGxvY2FsZSk7
Ci0gICAgICAgIH0KLSAgICAgICAgYWRkTWlzc2luZ1NjcmlwdExvY2FsZXMoYXZhaWxhYmxlTG9j
YWxlcyk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGF2YWlsYWJsZUxvY2FsZXM7Ci19Ci0KLWNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiYgaW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpCitj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxBdmFpbGFibGVMb2NhbGVzKCkKIHsKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBjYWNoZWRBdmFpbGFibGVMb2NhbGVz
OwogICAgIEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcyA9IGNhY2hlZEF2YWlsYWJs
ZUxvY2FsZXMuZ2V0KCk7CkBAIC0xOTEsOSArMTgyLDkgQEAgY29uc3QgSGFzaFNldDxTdHJpbmc+
JiBpbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkKICAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9u
Y2UsIFsmXSB7CiAgICAgICAgIEFTU0VSVChhdmFpbGFibGVMb2NhbGVzLmlzRW1wdHkoKSk7Ci0g
ICAgICAgIGludDMyX3QgY291bnQgPSB1ZGF0X2NvdW50QXZhaWxhYmxlKCk7CisgICAgICAgIGlu
dDMyX3QgY291bnQgPSB1bG9jX2NvdW50QXZhaWxhYmxlKCk7CiAgICAgICAgIGZvciAoaW50MzJf
dCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBj
b252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKHVkYXRfZ2V0QXZhaWxhYmxlKGkpKTsK
KyAgICAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBjb252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xhbmd1
YWdlVGFnKHVsb2NfZ2V0QXZhaWxhYmxlKGkpKTsKICAgICAgICAgICAgIGlmICghbG9jYWxlLmlz
RW1wdHkoKSkKICAgICAgICAgICAgICAgICBhdmFpbGFibGVMb2NhbGVzLmFkZChsb2NhbGUpOwog
ICAgICAgICB9CkBAIC0yMDIsNyArMTkzLDcgQEAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRs
RGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkKICAgICByZXR1cm4gYXZhaWxhYmxlTG9j
YWxlczsKIH0KIAotY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsTnVtYmVyRm9ybWF0QXZhaWxh
YmxlTG9jYWxlcygpCitjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxDb2xsYXRvckF2YWlsYWJs
ZUxvY2FsZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+
IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXM7CiAgICAgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVM
b2NhbGVzID0gY2FjaGVkQXZhaWxhYmxlTG9jYWxlcy5nZXQoKTsKQEAgLTIxMCw5ICsyMDEsOSBA
QCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVz
KCkKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7CiAgICAgc3RkOjpj
YWxsX29uY2UoaW5pdGlhbGl6ZU9uY2UsIFsmXSB7CiAgICAgICAgIEFTU0VSVChhdmFpbGFibGVM
b2NhbGVzLmlzRW1wdHkoKSk7Ci0gICAgICAgIGludDMyX3QgY291bnQgPSB1bnVtX2NvdW50QXZh
aWxhYmxlKCk7CisgICAgICAgIGludDMyX3QgY291bnQgPSB1Y29sX2NvdW50QXZhaWxhYmxlKCk7
CiAgICAgICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAg
ICAgIFN0cmluZyBsb2NhbGUgPSBjb252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKHVu
dW1fZ2V0QXZhaWxhYmxlKGkpKTsKKyAgICAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBjb252ZXJ0
SUNVTG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKHVjb2xfZ2V0QXZhaWxhYmxlKGkpKTsKICAgICAg
ICAgICAgIGlmICghbG9jYWxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBhdmFpbGFibGVM
b2NhbGVzLmFkZChsb2NhbGUpOwogICAgICAgICB9CkBAIC0zMjgsMTMgKzMxOSwxNSBAQCBib29s
IGlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJUeXBlKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAg
IEFTU0VSVCghc3RyaW5nLmlzTnVsbCgpKTsKIAotICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxl
bmd0aCgpOwotICAgIGlmIChsZW5ndGggPCAzIHx8IGxlbmd0aCA+IDgpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGZvciAoYXV0byBjaGFyYWN0ZXIgOiBzdHJpbmcuY29kZVVuaXRzKCkp
IHsKLSAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGFudW1lcmljKGNoYXJhY3RlcikpCisgICAgZm9y
IChhdXRvIHBhcnQgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnLScpKSB7Cisg
ICAgICAgIGF1dG8gbGVuZ3RoID0gcGFydC5sZW5ndGgoKTsKKyAgICAgICAgaWYgKGxlbmd0aCA8
IDMgfHwgbGVuZ3RoID4gOCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBm
b3IgKGF1dG8gY2hhcmFjdGVyIDogcGFydC5jb2RlVW5pdHMoKSkgeworICAgICAgICAgICAgaWYg
KCFpc0FTQ0lJQWxwaGFudW1lcmljKGNoYXJhY3RlcikpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC05NzksOCAr
OTcyLDYgQEAgSlNWYWx1ZSBzdXBwb3J0ZWRMb2NhbGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXYKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlKCkpOwogCiAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2M7Ci0gICAg
ZGVzYy5zZXRDb25maWd1cmFibGUoZmFsc2UpOwotICAgIGRlc2Muc2V0V3JpdGFibGUoZmFsc2Up
OwogCiAgICAgc2l6ZV90IGxlbiA9IGtleXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGVuOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3QuaAppbmRleCA2MGMwMDI1MDE5Y2MwZjcxMTZjOTM3NzM0OGE0MzRlMjFkZjVkMmVmLi42YWY2
ZjczOWZkM2M5YzJiYmIzNzFkNmMwYmMzNjIzNTlhYWJiMThhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IElu
Yy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsMjAgKzQ0LDIzIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwogICAgIH0KIAotICAg
IHN0YXRpYyBJbnRsT2JqZWN0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMg
SW50bE9iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCiBwcml2YXRlOgogICAgIEludGxPYmpl
Y3QoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9i
YWxPYmplY3QqKTsKIH07CiAKIFN0cmluZyBkZWZhdWx0TG9jYWxlKEpTR2xvYmFsT2JqZWN0Kik7
Citjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxBdmFpbGFibGVMb2NhbGVzKCk7CiBjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGludGxDb2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKTsKLWNvbnN0IEhh
c2hTZXQ8U3RyaW5nPiYgaW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwotY29u
c3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwot
aW5saW5lIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bFBsdXJhbFJ1bGVzQXZhaWxhYmxlTG9j
YWxlcygpIHsgcmV0dXJuIGludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7IH0KK2lu
bGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxv
Y2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CitpbmxpbmUgY29uc3Qg
SGFzaFNldDxTdHJpbmc+JiBpbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0
dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7IH0KK2lubGluZSBjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIGludGxQbHVyYWxSdWxlc0F2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxh
YmxlTG9jYWxlcygpOyB9CitpbmxpbmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsUmVsYXRp
dmVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2Nh
bGVzKCk7IH0KIAogYm9vbCBpbnRsQm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgb3B0aW9ucywgUHJvcGVydHlOYW1lLCBib29sJiB1c2VzRmFsbGJhY2spOwogU3RyaW5nIGlu
dGxTdHJpbmdPcHRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMsIFByb3BlcnR5
TmFtZSwgc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiB2YWx1ZXMsIGNvbnN0IGNo
YXIqIG5vdEZvdW5kLCBjb25zdCBjaGFyKiBmYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAppbmRleCBjMGI2ZTRlYWRlMWFk
MDA0M2MzNWRjOWI2NTkwNmUwZmMxYzVjYTI1Li44NzcxNjAxMjI4NGM4MWFkYzM5MjdjNjMxZDRj
MzU4N2EyMDFhYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUGx1cmFsUnVsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlcy5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIEludGxQbHVyYWxSdWxl
czo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU3RyaW5nIHR5cGVTdHJpbmcgPSBp
bnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInR5cGUiKSwgeyAiY2FyZGluYWwiLCAib3JkaW5hbCIgfSwgInR5cGUgbXVzdCBi
ZSBcImNhcmRpbmFsXCIgb3IgXCJvcmRpbmFsXCIiLCAiY2FyZGluYWwiKTsKKyAgICBTdHJpbmcg
dHlwZVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5w
cm9wZXJ0eU5hbWVzLT50eXBlLCB7ICJjYXJkaW5hbCIsICJvcmRpbmFsIiB9LCAidHlwZSBtdXN0
IGJlIFwiY2FyZGluYWxcIiBvciBcIm9yZGluYWxcIiIsICJjYXJkaW5hbCIpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgbV90eXBlID0gdHlwZVN0cmluZyA9
PSAib3JkaW5hbCIgPyBVUExVUkFMX1RZUEVfT1JESU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJESU5B
TDsKIApAQCAtMjAxLDcgKzIwMSw3IEBAIEpTT2JqZWN0KiBJbnRsUGx1cmFsUnVsZXM6OnJlc29s
dmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAgSlNPYmplY3Qq
IG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc05vbnRyaXZpYWxT
dHJpbmcodm0sIG1fbG9jYWxlKSk7Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidHlwZSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fdHlw
ZSA9PSBVUExVUkFMX1RZUEVfT1JESU5BTCA/ICJvcmRpbmFsIl9zIDogImNhcmRpbmFsIl9zKSk7
CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sIG1fdHlwZSA9PSBVUExVUkFMX1RZUEVfT1JESU5BTCA/ICJvcmRp
bmFsIl9zIDogImNhcmRpbmFsIl9zKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwganNOdW1iZXIo
bV9taW5pbXVtSW50ZWdlckRpZ2l0cykpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJl
cihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051
bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODU2ZmFmMDdhNzdlNWI0OGZjY2NiODgzOWM0MjdkNGY0NDcxMjJmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1h
dC5jcHAKQEAgLTAsMCArMSwzNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKKworI2luY2x1ZGUgIkVy
cm9yLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxPYmpl
Y3QuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0
b3IuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxSZWxhdGl2ZVRpbWVGb3JtYXQpIH07CisK
K25hbWVzcGFjZSBJbnRsUlRGSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHJl
bGV2YW50RXh0ZW5zaW9uS2V5c1sxXSA9IHsgIm51IiB9OworfQorCit2b2lkIEludGxSZWxhdGl2
ZVRpbWVGb3JtYXQ6OlVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3Io
KShVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciogcmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlcikg
Y29uc3QKK3sKKyAgICBpZiAocmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlcikKKyAgICAgICAgdXJl
bGRhdGVmbXRfY2xvc2UocmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlcik7Cit9CisKK3ZvaWQgSW50
bFJlbGF0aXZlVGltZUZvcm1hdDo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJhdG9yKCkoVU51
bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0KSBjb25zdAoreworICAgIGlmIChudW1iZXJGb3JtYXQp
CisgICAgICAgIHVudW1fY2xvc2UobnVtYmVyRm9ybWF0KTsKK30KKwordm9pZCBJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0OjpVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlcjo6b3BlcmF0b3IoKShV
RmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBpdGVyYXRvcikgY29uc3QKK3sKKyAgICBpZiAoaXRlcmF0
b3IpCisgICAgICAgIHVmaWVsZHBvc2l0ZXJfY2xvc2UoaXRlcmF0b3IpOworfQorCitJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0KiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KiBmb3Jt
YXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Pih2
bS5oZWFwKSkgSW50bFJlbGF0aXZlVGltZUZvcm1hdCh2bSwgc3RydWN0dXJlKTsKKyAgICBmb3Jt
YXQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZm9ybWF0OworfQorCitTdHJ1Y3R1
cmUqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bFJlbGF0aXZl
VGltZUZvcm1hdDo6SW50bFJlbGF0aXZlVGltZUZvcm1hdChWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKK30KKwor
dm9pZCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Kj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKK30KKworbmFtZXNwYWNlIEludGxS
VEZJbnRlcm5hbCB7CitzdGF0aWMgVmVjdG9yPFN0cmluZz4gbG9jYWxlRGF0YShjb25zdCBTdHJp
bmcmIGxvY2FsZSwgc2l6ZV90IGtleUluZGV4KQoreworICAgIC8vIFRoZSBpbmRleCBvZiB0aGUg
ZXh0ZW5zaW9uIGtleSAibnUiIGluIHJlbGV2YW50RXh0ZW5zaW9uS2V5cyBpcyAwLgorICAgIEFT
U0VSVF9VTlVTRUQoa2V5SW5kZXgsICFrZXlJbmRleCk7CisgICAgcmV0dXJuIG51bWJlcmluZ1N5
c3RlbXNGb3JMb2NhbGUobG9jYWxlKTsKK30KK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0
MDIvI3NlYy1Jbml0aWFsaXplUmVsYXRpdmVUaW1lRm9ybWF0Cit2b2lkIEludGxSZWxhdGl2ZVRp
bWVGb3JtYXQ6OmluaXRpYWxpemVSZWxhdGl2ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9
IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBsb2NhbGVzKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNPYmplY3QqIG9wdGlvbnM7
CisgICAgaWYgKG9wdGlvbnNWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBvcHRpb25zID0g
Y29uc3RydWN0RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVj
dFN0cnVjdHVyZSgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnNWYWx1
ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworICAgIH0KKworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG9wdDsK
KyAgICBTdHJpbmcgbG9jYWxlTWF0Y2hlciA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0
LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLCB7ICJsb29rdXAiLCAi
YmVzdCBmaXQiIH0sICJsb2NhbGVNYXRjaGVyIG11c3QgYmUgZWl0aGVyIFwibG9va3VwXCIgb3Ig
XCJiZXN0IGZpdFwiIiwgImJlc3QgZml0Iik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKKyAgICBvcHQuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZU1hdGNoZXIu
c3RyaW5nKCksIGxvY2FsZU1hdGNoZXIpOworCisgICAgU3RyaW5nIG51bWJlcmluZ1N5c3RlbSA9
IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVz
LT5udW1iZXJpbmdTeXN0ZW0sIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAoIW51bWJlcmluZ1N5c3RlbS5pc051
bGwoKSkgeworICAgICAgICBpZiAoIWlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJUeXBlKG51bWJl
cmluZ1N5c3RlbSkpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAibnVtYmVyaW5nU3lzdGVtIGlzIG5vdCBhIHdlbGwtZm9ybWVkIG51bWJlcmluZyBz
eXN0ZW0gdmFsdWUiX3MpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IG9wdC5hZGQoIm51Il9zLCBudW1iZXJpbmdTeXN0ZW0pOworICAgIH0KKworICAgIGNvbnN0IEhh
c2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcyA9IGludGxSZWxhdGl2ZVRpbWVGb3JtYXRB
dmFpbGFibGVMb2NhbGVzKCk7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2ZWQg
PSByZXNvbHZlTG9jYWxlKGdsb2JhbE9iamVjdCwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVk
TG9jYWxlcywgb3B0LCBJbnRsUlRGSW50ZXJuYWw6OnJlbGV2YW50RXh0ZW5zaW9uS2V5cywgV1RG
X0FSUkFZX0xFTkdUSChJbnRsUlRGSW50ZXJuYWw6OnJlbGV2YW50RXh0ZW5zaW9uS2V5cyksIElu
dGxSVEZJbnRlcm5hbDo6bG9jYWxlRGF0YSk7CisgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5nZXQo
dm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLnN0cmluZygpKTsKKyAgICBpZiAobV9sb2NhbGUuaXNF
bXB0eSgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gaW5pdGlhbGl6ZSBSZWxhdGl2ZVRpbWVGb3JtYXQgZHVlIHRvIGludmFsaWQgbG9j
YWxlIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fbnVtYmVyaW5nU3lzdGVt
ID0gcmVzb2x2ZWQuZ2V0KCJudSJfcyk7CisgICAgQ1N0cmluZyBkYXRhTG9jYWxlV2l0aEV4dGVu
c2lvbnMgPSBtYWtlU3RyaW5nKHJlc29sdmVkLmdldCgiZGF0YUxvY2FsZSJfcyksICItdS1udS0i
LCBtX251bWJlcmluZ1N5c3RlbSkudXRmOCgpOworCisgICAgU3RyaW5nIHN0eWxlID0gaW50bFN0
cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxl
LCB7ICJsb25nIiwgInNob3J0IiwgIm5hcnJvdyIgfSwgInN0eWxlIG11c3QgYmUgZWl0aGVyIFwi
bG9uZ1wiLCBcInNob3J0XCIsIG9yIFwibmFycm93XCIiLCAibG9uZyIpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKHN0eWxlID09ICJsb25nIikKKyAg
ICAgICAgbV9zdHlsZSA9IFVEQVRfU1RZTEVfTE9ORzsKKyAgICBlbHNlIGlmIChzdHlsZSA9PSAi
c2hvcnQiKQorICAgICAgICBtX3N0eWxlID0gVURBVF9TVFlMRV9TSE9SVDsKKyAgICBlbHNlIGlm
IChzdHlsZSA9PSAibmFycm93IikKKyAgICAgICAgbV9zdHlsZSA9IFVEQVRfU1RZTEVfTkFSUk9X
OworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBTdHJpbmcg
bnVtZXJpYyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5udW1lcmljLCB7ICJhbHdheXMiLCAiYXV0byIgfSwgIm51bWVyaWMgbXVzdCBi
ZSBlaXRoZXIgXCJhbHdheXNcIiBvciBcImF1dG9cIiIsICJhbHdheXMiKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIG1fbnVtZXJpYyA9IChudW1lcmljID09
ICJhbHdheXMiKTsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAg
IG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJG
b3JtYXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBkYXRhTG9j
YWxlV2l0aEV4dGVuc2lvbnMuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisgICAgaWYgKFVO
TElLRUxZKFVfRkFJTFVSRShzdGF0dXMpKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0
Il9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcmVsYXRpdmVEYXRlVGltZUZv
cm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciwgVVJl
bGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJEZWxldGVyPih1cmVsZGF0ZWZtdF9vcGVuKGRhdGFMb2Nh
bGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksIG1fbnVtYmVyRm9ybWF0LmdldCgpLCBtX3N0eWxlLCBV
RElTUENUWF9DQVBJVEFMSVpBVElPTl9GT1JfU1RBTkRBTE9ORSwgJnN0YXR1cykpOworICAgIGlm
IChVTkxJS0VMWShVX0ZBSUxVUkUoc3RhdHVzKSkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFJlbGF0aXZlVGltZUZv
cm1hdCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3N0YXRpYyBBU0NJSUxpdGVy
YWwgc3R5bGVTdHJpbmcoVURhdGVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyU3R5bGUgc3R5bGUp
Cit7CisgICAgc3dpdGNoIChzdHlsZSkgeworICAgIGNhc2UgVURBVF9TVFlMRV9MT05HOgorICAg
ICAgICByZXR1cm4gImxvbmciX3M7CisgICAgY2FzZSBVREFUX1NUWUxFX1NIT1JUOgorICAgICAg
ICByZXR1cm4gInNob3J0Il9zOworICAgIGNhc2UgVURBVF9TVFlMRV9OQVJST1c6CisgICAgICAg
IHJldHVybiAibmFycm93Il9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK3N0YXRpYyBBU0NJSUxpdGVyYWwg
bnVtZXJpY1N0cmluZyhib29sIG51bWVyaWMpCit7CisgICAgcmV0dXJuIG51bWVyaWMgPyAiYWx3
YXlzIl9zIDogImF1dG8iX3M7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMt
aW50bC5yZWxhdGl2ZXRpbWVmb3JtYXQucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucworSlNPYmpl
Y3QqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBKU09iamVjdCogb3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7
CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUsIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgbV9sb2NhbGUpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHN0eWxl
U3RyaW5nKG1fc3R5bGUpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5udW1lcmljLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG51bWVyaWNTdHJpbmcobV9u
dW1lcmljKSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bnVtYmVyaW5nU3lzdGVtLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fbnVtYmVyaW5nU3lzdGVt
KSk7CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9CisKK3N0YXRpYyBTdHJpbmdWaWV3IHNpbmd1bGFy
VW5pdChTdHJpbmdWaWV3IHVuaXQpCit7CisgICAgLy8gUGx1cmFscyBhcmUgYWxsb3dlZCwgYnV0
IHRoYW5rZnVsbHkgdGhleSdyZSBhbGwganVzdCBhIHNpbXBsZSAtcy4KKyAgICByZXR1cm4gdW5p
dC5lbmRzV2l0aCgicyIpID8gdW5pdC5sZWZ0KHVuaXQubGVuZ3RoKCkgLSAxKSA6IHVuaXQ7Cit9
CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtc2luZ3VsYXJyZWxhdGl2ZXRpbWV1
bml0CitzdGF0aWMgT3B0aW9uYWw8VVJlbGF0aXZlRGF0ZVRpbWVVbml0PiByZWxhdGl2ZVRpbWVV
bml0VHlwZShTdHJpbmdWaWV3IHVuaXQpCit7CisgICAgU3RyaW5nVmlldyBzaW5ndWxhciA9IHNp
bmd1bGFyVW5pdCh1bml0KTsKKworICAgIGlmIChzaW5ndWxhciA9PSAic2Vjb25kIikKKyAgICAg
ICAgcmV0dXJuIFVEQVRfUkVMX1VOSVRfU0VDT05EOworICAgIGlmIChzaW5ndWxhciA9PSAibWlu
dXRlIikKKyAgICAgICAgcmV0dXJuIFVEQVRfUkVMX1VOSVRfTUlOVVRFOworICAgIGlmIChzaW5n
dWxhciA9PSAiaG91ciIpCisgICAgICAgIHJldHVybiBVREFUX1JFTF9VTklUX0hPVVI7CisgICAg
aWYgKHNpbmd1bGFyID09ICJkYXkiKQorICAgICAgICByZXR1cm4gVURBVF9SRUxfVU5JVF9EQVk7
CisgICAgaWYgKHNpbmd1bGFyID09ICJ3ZWVrIikKKyAgICAgICAgcmV0dXJuIFVEQVRfUkVMX1VO
SVRfV0VFSzsKKyAgICBpZiAoc2luZ3VsYXIgPT0gIm1vbnRoIikKKyAgICAgICAgcmV0dXJuIFVE
QVRfUkVMX1VOSVRfTU9OVEg7CisgICAgaWYgKHNpbmd1bGFyID09ICJxdWFydGVyIikKKyAgICAg
ICAgcmV0dXJuIFVEQVRfUkVMX1VOSVRfUVVBUlRFUjsKKyAgICBpZiAoc2luZ3VsYXIgPT0gInll
YXIiKQorICAgICAgICByZXR1cm4gVURBVF9SRUxfVU5JVF9ZRUFSOworCisgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKK30KKworU3RyaW5nIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdElu
dGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSwgU3RyaW5n
VmlldyB1bml0KQoreworICAgIEFTU0VSVChtX3JlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIpOwor
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpIHsK
KyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJudW1iZXIgYXJn
dW1lbnQgbXVzdCBiZSBmaW5pdGUiX3MpOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
fQorCisgICAgYXV0byB1bml0VHlwZSA9IHJlbGF0aXZlVGltZVVuaXRUeXBlKHVuaXQpOworICAg
IGlmICghdW5pdFR5cGUpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJ1bml0IGFyZ3VtZW50IGlzIG5vdCBhIHJlY29nbml6ZWQgdW5pdCB0eXBlIl9zKTsK
KyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKworICAgIGF1dG8gZm9ybWF0UmVsYXRp
dmVUaW1lID0gbV9udW1lcmljID8gdXJlbGRhdGVmbXRfZm9ybWF0TnVtZXJpYyA6IHVyZWxkYXRl
Zm10X2Zvcm1hdDsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAg
IFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdCgzMik7CisgICAgYXV0byByZXN1bHRMZW5ndGggPSBm
b3JtYXRSZWxhdGl2ZVRpbWUobV9yZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyLmdldCgpLCB2YWx1
ZSwgdW5pdFR5cGUudmFsdWUoKSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSwgJnN0YXR1
cyk7CisgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgeworICAgICAg
ICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHJlc3VsdC5ncm93KHJlc3VsdExlbmd0
aCk7CisgICAgICAgIGZvcm1hdFJlbGF0aXZlVGltZShtX3JlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0
ZXIuZ2V0KCksIHZhbHVlLCB1bml0VHlwZS52YWx1ZSgpLCByZXN1bHQuZGF0YSgpLCByZXN1bHRM
ZW5ndGgsICZzdGF0dXMpOworICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoVV9GQUlMVVJFKHN0YXR1
cykpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gZm9ybWF0IHJlbGF0aXZlIHRpbWUiX3MpOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5ndGgp
OworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUZvcm1hdFJlbGF0aXZlVGlt
ZQorSlNWYWx1ZSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlLCBTdHJpbmdWaWV3IHVuaXQpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIFN0cmluZyByZXN1bHQgPSBmb3JtYXRJbnRlcm5hbChnbG9iYWxP
YmplY3QsIHZhbHVlLCB1bml0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCByZXN1bHQpOworfQorCisvLyBodHRwczovL3Rj
MzkuZXMvZWNtYTQwMi8jc2VjLUZvcm1hdFJlbGF0aXZlVGltZVRvUGFydHMKK0pTVmFsdWUgSW50
bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBkb3VibGUgdmFsdWUsIFN0cmluZ1ZpZXcgdW5pdCkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgU3RyaW5nIGZvcm1hdHRlZFJlbGF0aXZlVGltZSA9IGZvcm1hdEludGVybmFs
KGdsb2JhbE9iamVjdCwgdmFsdWUsIHVuaXQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBh
dXRvIGl0ZXJhdG9yID0gc3RkOjp1bmlxdWVfcHRyPFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IsIFVG
aWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyPih1ZmllbGRwb3NpdGVyX29wZW4oJnN0YXR1cykp
OworICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CisKKyAgICBkb3VibGUgYWJzVmFsdWUg
PSBzdGQ6OmFicyh2YWx1ZSk7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXIoMzIpOwor
ICAgIGF1dG8gbnVtYmVyTGVuZ3RoID0gdW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMobV9udW1i
ZXJGb3JtYXQuZ2V0KCksIGFic1ZhbHVlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBp
dGVyYXRvci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVS
RkxPV19FUlJPUikgeworICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIGJ1
ZmZlci5ncm93KG51bWJlckxlbmd0aCk7CisgICAgICAgIHVudW1fZm9ybWF0RG91YmxlRm9yRmll
bGRzKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBhYnNWYWx1ZSwgYnVmZmVyLmRhdGEoKSwgbnVtYmVy
TGVuZ3RoLCBpdGVyYXRvci5nZXQoKSwgJnN0YXR1cyk7CisgICAgfQorICAgIGlmIChVX0ZBSUxV
UkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IHJlbGF0aXZlIHRpbWUiX3MpOworCisgICAgYXV0byBm
b3JtYXR0ZWROdW1iZXIgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgbnVtYmVyTGVuZ3RoKTsKKwor
ICAgIEpTQXJyYXkqIHBhcnRzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhD
b250aWd1b3VzKSwgMCk7CisgICAgaWYgKCFwYXJ0cykKKyAgICAgICAgcmV0dXJuIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKKworICAgIEpTU3RyaW5nKiBsaXRl
cmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfcyk7CisKKyAgICAv
LyBXZSBvbmx5IGhhdmUgb25lIGlucHV0IG51bWJlciwgc28gb3VyIHJlbGF0aXZlIHRpbWUgd2ls
bCBoYXZlIGF0IG1vc3Qgb25lIG51bWVyaWMgc3Vic3RyaW5nLAorICAgIC8vIGJ1dCB3ZSBuZWVk
IHRvIGxpc3QgYWxsIG9mIHRoZSBudW1lcmljIHBhcnRzIHNlcGFyYXRlbHkuCisgICAgc2l6ZV90
IG51bWJlckVuZCA9IDA7CisgICAgc2l6ZV90IG51bWJlclN0YXJ0ID0gZm9ybWF0dGVkUmVsYXRp
dmVUaW1lLmZpbmQoZm9ybWF0dGVkTnVtYmVyKTsKKyAgICBpZiAobnVtYmVyU3RhcnQgIT0gbm90
Rm91bmQpIHsKKyAgICAgICAgbnVtYmVyRW5kID0gbnVtYmVyU3RhcnQgKyBudW1iZXJMZW5ndGg7
CisKKyAgICAgICAgLy8gQWRkIGluaXRpYWwgbGl0ZXJhbCBpZiB0aGVyZSBpcyBvbmUuCisgICAg
ICAgIGlmIChudW1iZXJTdGFydCkgeworICAgICAgICAgICAgSlNPYmplY3QqIHBhcnQgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgcGFydC0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBsaXRlcmFsU3RyaW5nKTsKKyAgICAgICAg
ICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUsIGpzU3Vic3Ry
aW5nKHZtLCBmb3JtYXR0ZWRSZWxhdGl2ZVRpbWUsIDAsIG51bWJlclN0YXJ0KSk7CisgICAgICAg
ICAgICBwYXJ0cy0+cHVzaChnbG9iYWxPYmplY3QsIHBhcnQpOworICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIEludGxOdW1i
ZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIGFic1ZhbHVlLCBm
b3JtYXR0ZWROdW1iZXIsIGl0ZXJhdG9yLmdldCgpLCBwYXJ0cywganNTdHJpbmcodm0sIHNpbmd1
bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisgICAgfQorCisgICAgLy8gQWRkIGZpbmFsIGxpdGVyYWwgaWYgdGhlcmUg
aXMgb25lLgorICAgIGF1dG8gc3RyaW5nTGVuZ3RoID0gZm9ybWF0dGVkUmVsYXRpdmVUaW1lLmxl
bmd0aCgpOworICAgIGlmIChudW1iZXJFbmQgIT0gc3RyaW5nTGVuZ3RoKSB7CisgICAgICAgIEpT
T2JqZWN0KiBwYXJ0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBsaXRlcmFsU3Ry
aW5nKTsKKyAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1
ZSwganNTdWJzdHJpbmcodm0sIGZvcm1hdHRlZFJlbGF0aXZlVGltZSwgbnVtYmVyRW5kLCBzdHJp
bmdMZW5ndGggLSBudW1iZXJFbmQpKTsKKyAgICAgICAgcGFydHMtPnB1c2goZ2xvYmFsT2JqZWN0
LCBwYXJ0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICB9
CisKKyAgICByZXR1cm4gcGFydHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFlYjUzOTljOGZhMjlmZTU4ZmU4NmEzNDc2MjZhZTVhNjJjNjRiZjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0LmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSA8dW5pY29kZS91ZmllbGRw
b3NpdGVyLmg+CisjaW5jbHVkZSA8dW5pY29kZS91cmVsZGF0ZWZtdC5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVj
dDsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsK
KworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKiBjZWxsKQorICAgIHsKKyAgICAgICAg
c3RhdGljX2Nhc3Q8SW50bFJlbGF0aXZlVGltZUZvcm1hdCo+KGNlbGwpLT5JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0Ojp+SW50bFJlbGF0aXZlVGltZUZvcm1hdCgpOworICAgIH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZt
LmludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIHN0YXRp
YyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgdm9pZCBpbml0aWFsaXplUmVsYXRp
dmVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9w
dGlvbnMpOworICAgIEpTVmFsdWUgZm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlLCBTdHJp
bmdWaWV3IHVuaXRTdHJpbmcpOworICAgIEpTVmFsdWUgZm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9i
amVjdCosIGRvdWJsZSwgU3RyaW5nVmlldyB1bml0U3RyaW5nKTsKKyAgICBKU09iamVjdCogcmVz
b2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0Kik7CisKK3ByaXZhdGU6CisgICAgSW50bFJlbGF0
aXZlVGltZUZvcm1hdChWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CisKKyAgICBTdHJpbmcgZm9ybWF0SW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUs
IFN0cmluZ1ZpZXcgdW5pdCk7CisKKyAgICBzdHJ1Y3QgVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0
ZXJEZWxldGVyIHsKKyAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVSZWxhdGl2ZURhdGVUaW1lRm9y
bWF0dGVyKikgY29uc3Q7CisgICAgfTsKKyAgICBzdHJ1Y3QgVU51bWJlckZvcm1hdERlbGV0ZXIg
eworICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51bWJlckZvcm1hdCopIGNvbnN0OworICAgIH07
CisgICAgc3RydWN0IFVGaWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyIHsKKyAgICAgICAgdm9p
ZCBvcGVyYXRvcigpKFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqKSBjb25zdDsKKyAgICB9OworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyLCBVUmVsYXRpdmVE
YXRlVGltZUZvcm1hdHRlckRlbGV0ZXI+IG1fcmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+IG1f
bnVtYmVyRm9ybWF0OworCisgICAgU3RyaW5nIG1fbG9jYWxlOworICAgIFN0cmluZyBtX251bWJl
cmluZ1N5c3RlbTsKKyAgICBVRGF0ZVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJTdHlsZSBtX3N0
eWxlIHsgVURBVF9TVFlMRV9MT05HIH07CisgICAgYm9vbCBtX251bWVyaWMgeyB0cnVlIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI2N2ZjYjkwMDExM2M4YjUzZDMxODc5ZTJmZmEwMzhkYzA4MGQyYTAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50
bE9iamVjdC5oIgorI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRl
ICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIkxvb2t1cC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FT
U0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcik7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZv
cm1hdENvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rp
b24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAmcmVsYXRpdmVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3JUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bFJlbGF0aXZlVGltZUZv
cm1hdENvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gcmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0
b3JUYWJsZQorICBzdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCitJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIHJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSkKK3sKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50
bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5p
c2hDcmVhdGlvbih2bSwgcmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKTsKKyAgICByZXR1cm4g
Y29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsSW50bFJlbGF0aXZlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0SW50bFJlbGF0aXZlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
CitJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OkludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlLCBjYWxsSW50bFJlbGF0aXZlVGltZUZvcm1hdCwgY29uc3RydWN0SW50bFJl
bGF0aXZlVGltZUZvcm1hdCkKK3sKK30KKwordm9pZCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFBy
b3RvdHlwZSogcmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtLCAiUmVsYXRpdmVUaW1lRm9ybWF0Il9zLCBOYW1lQWRkaXRpb25Nb2RlOjpX
aXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcmVsYXRpdmVUaW1lRm9ybWF0UHJv
dG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MCksIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CisgICAgcmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKK30KKworLy8g
aHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLlJlbGF0aXZlVGltZUZvcm1hdAorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bFJlbGF0aXZlVGlt
ZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+anNDYWxsZWUoKSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPnJl
bGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZSh2bSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqIHJl
bGF0aXZlVGltZUZvcm1hdCA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwgc3Ry
dWN0dXJlKTsKKyAgICBBU1NFUlQocmVsYXRpdmVUaW1lRm9ybWF0KTsKKworICAgIHNjb3BlLnJl
bGVhc2UoKTsKKyAgICByZWxhdGl2ZVRpbWVGb3JtYXQtPmluaXRpYWxpemVSZWxhdGl2ZVRpbWVG
b3JtYXQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlbGF0aXZlVGltZUZvcm1h
dCk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSop
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiUmVsYXRpdmVUaW1lRm9ybWF0IikpOworfQorCisvLyBodHRwczovL3RjMzku
ZXMvZWNtYTQwMi8jc2VjLUludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNP
ZgorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29u
c3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMgPSBpbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOworCisgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVk
TG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHN1cHBvcnRlZExvY2FsZXMoZ2xvYmFsT2JqZWN0LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0
ZWRMb2NhbGVzLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSkpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I3YmQw
OTAwM2ZlOGJlYzI3OTJjNDU4NGVlMjg0NTgxZTc3Mjg4OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlw
ZTsKKworY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yIGZpbmFsIDogcHVi
bGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5j
dGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBz
dGF0aWMgSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1
Y3R1cmUqLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
KworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIFN0cnVjdHVyZSogcmVsYXRpdmVUaW1lRm9ybWF0
U3RydWN0dXJlKFZNJikgY29uc3QgeyByZXR1cm4gZ2xvYmFsT2JqZWN0KCktPnJlbGF0aXZlVGlt
ZUZvcm1hdFN0cnVjdHVyZSgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSopOworCitwcml2YXRlOgor
ICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwor
fTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxSZWxhdGl2ZVRpbWVG
b3JtYXRDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZl
VGltZUZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZGI1ZTVhNGQy
MmQzOTMyODVhNDY3NGVhMTMwZjczYTMxZTAxMjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKworI2luY2x1
ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxhdGl2
ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CisKK30KKworI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90
b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bFJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNf
aW5mbywgJnJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUpIH07CisKKy8qIFNv
dXJjZSBmb3IgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaAorQGJlZ2luIHJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZVRhYmxlCisgIGZvcm1hdCAgICAgICAgICAgSW50bFJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXQgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDIKKyAgZm9ybWF0VG9QYXJ0cyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90
eXBlRnVuY0Zvcm1hdFRvUGFydHMgICAgRG9udEVudW18RnVuY3Rpb24gMgorICByZXNvbHZlZE9w
dGlvbnMgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25z
ICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
UHJvdG90eXBlKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJv
dG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0UHJvdG90eXBlPih2bS5oZWFwKSkgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlw
ZTo6SW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCJfcyksIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Cit9CisKKy8vIGh0dHBzOi8v
dGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZv
cm1hdAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
UHJvdG90eXBlRnVuY0Zvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSW50bFJlbGF0aXZl
VGltZUZvcm1hdCogcmVsYXRpdmVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcmVs
YXRpdmVUaW1lRm9ybWF0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIFJlbGF0aXZlVGltZUZvcm1hdCJfcykpOworCisgICAgZG91YmxlIHZhbHVlID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgU3RyaW5nIHVu
aXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZWxhdGl2ZVRpbWVGb3Jt
YXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIHZhbHVlLCB1bml0KSkpOworfQorCisvLyBodHRwczov
L3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5m
b3JtYXRUb1BhcnRzCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxhdGl2ZVRp
bWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdCogcmVsYXRpdmVUaW1lRm9ybWF0ID0ganNEeW5hbWlj
Q2FzdDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghcmVsYXRpdmVUaW1lRm9ybWF0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBSZWxhdGl2ZVRpbWVGb3JtYXQiX3MpKTsK
KworICAgIGRvdWJsZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoZ2xv
YmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKKworICAgIFN0cmluZyB1bml0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1dURlN0
cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUocmVsYXRpdmVUaW1lRm9ybWF0LT5mb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgdmFs
dWUsIHVuaXQpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtaW50bC5y
ZWxhdGl2ZXRpbWVmb3JtYXQucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29s
dmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1h
dCogcmVsYXRpdmVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcmVsYXRpdmVUaW1l
Rm9ybWF0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUucmVz
b2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIFJlbGF0aXZlVGltZUZvcm1hdCJfcykpOworCisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVsYXRpdmVUaW1lRm9ybWF0LT5yZXNvbHZlZE9w
dGlvbnMoZ2xvYmFsT2JqZWN0KSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQ
cm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXRQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jY2JhZWE4ZTc1YTQ4MTI4ODA4MmI1OTA4
MGEwYWVkY2VlNTA3MzU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5t
ZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVjdC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3Rv
dHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0
eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
PgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdFByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVf
SU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJp
dmF0ZToKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKFZNJiwgU3RydWN0dXJl
Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA3NjRlMTAwNTM1OGQxOWU5ZTk2ZTM5
OTBjOTIzNTYzN2M2ZDBlM2FmLi4xOWE0OGZiOTMwYzViZjBmMzU1MWUzZjM0NmQ2NGM4NzU2ZTQ1
NjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC04Niw2ICs4Niw4IEBACiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1
ZGUgIkludGxQbHVyYWxSdWxlcy5oIgogI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZS5oIgorI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSXRlcmF0b3JQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKICNpbmNsdWRlICJKU0FycmF5
QnVmZmVyLmgiCkBAIC05NTksNiArOTYxLDEyIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9y
KiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAg
ICAgICAgICAgICBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIHBsdXJhbFJ1bGVzUHJvdG90eXBl
ID0gSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0
LCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKICAgICAgICAgICAg
IGluaXQuc2V0KEludGxQbHVyYWxSdWxlczo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2Jh
bE9iamVjdCwgcGx1cmFsUnVsZXNQcm90b3R5cGUpKTsKICAgICAgICAgfSk7CisgICAgbV9yZWxh
dGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICBbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOworICAg
ICAgICAgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSogcmVsYXRpdmVUaW1lRm9y
bWF0UHJvdG90eXBlID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKGlu
aXQudm0sIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShp
bml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsK
KyAgICAgICAgICAgIGluaXQuc2V0KEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmNyZWF0ZVN0cnVj
dHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIHJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSkp
OworICAgICAgICB9KTsKICAgICBtX2RlZmF1bHRDb2xsYXRvci5pbml0TGF0ZXIoCiAgICAgICAg
IFtdIChjb25zdCBJbml0aWFsaXplcjxJbnRsQ29sbGF0b3I+JiBpbml0KSB7CiAgICAgICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lcik7CkBAIC05NzAsNyArOTc4LDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0
b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUK
ICAgICAgICAgICAgIGluaXQuc2V0KGNvbGxhdG9yKTsKICAgICAgICAgfSk7CiAKLSAgICBJbnRs
T2JqZWN0KiBpbnRsID0gSW50bE9iamVjdDo6Y3JlYXRlKHZtLCBJbnRsT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CisgICAgSW50bE9i
amVjdCogaW50bCA9IEludGxPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgSW50bE9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5JbnRsLCBpbnRs
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAK
ICAgICBtX21vZHVsZUxvYWRlci5pbml0TGF0ZXIoCkBAIC0xNzY5LDYgKzE3NzcsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUudmlzaXQo
dmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS52aXNp
dCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3BsdXJhbFJ1bGVzU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1fcmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxs
R2V0dGVyRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVsbFNl
dHRlckZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IGIzN2I4YWU2Y2M5ZTZmZWNkZDFlNjI5NDU2YWJjYzQ1ZDM3NDE1MmUu
LmEwYzNiNGFhZjAwMDQ2ZDJkOTQxNmI0OTBiYTYyNTI0NGQ5OGYzNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjk0LDYgKzI5NCw3
IEBAIHB1YmxpYzoKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4g
bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmU+IG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5
PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmU7CisgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcmVsYXRpdmVUaW1lRm9y
bWF0U3RydWN0dXJlOwogCiAgICAgV3JpdGVCYXJyaWVyPE51bGxHZXR0ZXJGdW5jdGlvbj4gbV9u
dWxsR2V0dGVyRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPE51bGxTZXR0ZXJGdW5jdGlvbj4g
bV9udWxsU2V0dGVyRnVuY3Rpb247CkBAIC03ODgsNiArNzg5LDcgQEAgcHVibGljOgogICAgIFN0
cnVjdHVyZSogbnVtYmVyRm9ybWF0U3RydWN0dXJlKCkgeyByZXR1cm4gbV9udW1iZXJGb3JtYXRT
dHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVj
dHVyZSgpIHsgcmV0dXJuIG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAg
ICAgU3RydWN0dXJlKiBwbHVyYWxSdWxlc1N0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGx1cmFsUnVs
ZXNTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiByZWxhdGl2ZVRpbWVGb3Jt
YXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3JlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZS5nZXQo
dGhpcyk7IH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UmVtb3RlRGVidWdnaW5n
RW5hYmxlZChib29sKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHJlbW90ZURlYnVnZ2lu
Z0VuYWJsZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
TGlzdC5oCmluZGV4IGJkZmJmNGM3ZTFjOTk4MTk4ODlhODdhMDg0YWY1MTcxZTcxZDg1NDIuLmIz
ZjE1NjZiM2UwNmRlNzBmYmZiODkwNTdmNzFlMWNkNzJhZTNhMTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNDg0LDYgKzQ4NCw3IEBAIGNvbnN0
ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihC
b29sLCB1c2VXZWJBc3NlbWJseU11bHRpVmFsdWVzLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0eXBl
cyBmcm9tIHRoZSB3YXNtIG11bGl0LXZhbHVlcyBzcGVjLiIpIFwKICAgICB2KEJvb2wsIHVzZVdl
YWtSZWZzLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBXZWFrUmVmIGNvbnN0cnVjdG9yLiIp
IFwKICAgICB2KEJvb2wsIHVzZUJpZ0ludCwgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdp
bGwgZW5hYmxlIEJpZ0ludCBzdXBwb3J0LiIpIFwKKyAgICB2KEJvb2wsIHVzZUludGxSZWxhdGl2
ZVRpbWVGb3JtYXQsIGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0IGNvbnN0cnVjdG9yLiIpIFwKICAgICB2KEJvb2wsIHVzZUFycmF5QWxsb2NhdGlvblBy
b2ZpbGluZywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCB1c2Ugb3VyIG5vcm1hbCBh
cnJheSBhbGxvY2F0aW9uIHByb2ZpbGluZy4gSWYgZmFsc2UsIHRoZSBhbGxvY2F0aW9uIHByb2Zp
bGUgd2lsbCBhbHdheXMgY2xhaW0gdG8gYmUgdW5kZWNpZGVkLiIpIFwKICAgICB2KEJvb2wsIGZv
cmNlUG9seVByb3RvLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgY3JlYXRlX3RoaXMgd2lsbCBh
bHdheXMgY3JlYXRlIGFuIG9iamVjdCB3aXRoIGEgcG9seSBwcm90byBzdHJ1Y3R1cmUuIikgXAog
ICAgIHYoQm9vbCwgZm9yY2VNaW5pVk1Nb2RlLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgaXQg
d2lsbCBmb3JjZSBtaW5pIFZNIG1vZGUgb24uIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IDVjMGVlMjYxMzc3NmU5NjBmNDg3ODZiYjlhZmY3OTA1YzkxNDdhZDMuLjE2
MmU5OWRlZDNlYjAxYjIyNzAyNWE4MjJlMDYzMmIyMWM4NjFkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTc3LDYgKzc3LDcgQEAKICNpbmNsdWRlICJJbnRsRGF0ZVRp
bWVGb3JtYXQuaCIKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCiAjaW5jbHVkZSAiSW50
bFBsdXJhbFJ1bGVzLmgiCisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgogI2lu
Y2x1ZGUgIklzb0hlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIklzb0lubGluZWRIZWFwQ2VsbFR5
cGUuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCkBAIC0zNDAsNiArMzQxLDcgQEAgVk06OlZNKFZN
VHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgaW50bERhdGVUaW1lRm9ybWF0
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxEYXRlVGltZUZvcm1hdD4o
KSkKICAgICAsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SW50bE51bWJlckZvcm1hdD4oKSkKICAgICAsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsUGx1cmFsUnVsZXM+KCkpCisgICAgLCBp
bnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ+KCkpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAg
ICwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVh
dGU8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKSkKICAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25I
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8V2ViQXNzZW1ibHlGdW5jdGlvbj4o
KSkKQEAgLTE1MTEsNiArMTUxMyw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhpbnRsQ29sbGF0b3JTcGFjZSwgaW50bENvbGxhdG9ySGVhcENlbGxUCiBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERhdGVUaW1lRm9ybWF0U3BhY2Us
IGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERhdGVUaW1lRm9ybWF0
KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxOdW1iZXJGb3Jt
YXRTcGFjZSwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bE51bWJlckZv
cm1hdCkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUGx1cmFs
UnVsZXNTcGFjZSwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlLmdldCgpLCBJbnRsUGx1cmFs
UnVsZXMpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFJlbGF0
aXZlVGltZUZvcm1hdFNwYWNlLCBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLmdl
dCgpLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVG9XYXNtSUNDYWxsZWUpCiBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwg
d2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2spIC8vIEhhc2g6MHg5YWQ5OTVjZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggMTI4NjJhNDBjZTBlMDE0YWZhYzU0M2NiZGIzOTc1NmI0ZjExZGQ3Mi4uNTI5MjkzM2MxM2Rh
ZmFjN2U2MWFiOGM1Nzg0YWVjNTAxNmIzMGIyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCkBAIC0xMjgsNiArMTI4LDcgQEAgY2xhc3MgSW50bENvbGxhdG9yOwogY2xhc3MgSW50bERh
dGVUaW1lRm9ybWF0OwogY2xhc3MgSW50bE51bWJlckZvcm1hdDsKIGNsYXNzIEludGxQbHVyYWxS
dWxlczsKK2NsYXNzIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ7CiBjbGFzcyBKU0FQSUdsb2JhbE9i
amVjdDsKIGNsYXNzIEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdDsKIGNsYXNzIEpTQVBJV3JhcHBl
ck9iamVjdDsKQEAgLTQwMSw2ICs0MDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5
cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFBsdXJhbFJ1bGVz
SGVhcENlbGxUeXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5Q29kZUJsb2Nr
SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFz
c2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU7CkBAIC01NTcsNiArNTU5LDcgQEAgcHVibGljOgog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bERhdGVUaW1lRm9ybWF0
U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsTnVtYmVy
Rm9ybWF0U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRs
UGx1cmFsUnVsZXNTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc1RvV2FzbUlDQ2FsbGVlU3Bh
Y2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUNv
ZGVCbG9ja1NwYWNlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDI4NmI5ZWQ2YjRjZGUxOTAyODViZDM3NmRiNTI3MjYxYWEzYTA2NjEuLjg3OTg4
NDZhMGQwYmZiM2EyZTg4MDNiMzI0MGY1MjdmNzk4ZGQ4ODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNC0x
OCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW0VD
TUEtNDAyXSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBtaXNzaW5nIGluIFdlYktpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NzcwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1q
c2Mtc3RyZXNzLXRlc3RzOgorICAgICAgICBBZGQgcnVuSW50bFJlbGF0aXZlVGltZUZvcm1hdEVu
YWJsZWQuCisKIDIwMjAtMDQtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIEZpeCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSB2cyBDb250ZW50V29y
bGQgbGlmZXRpbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVz
dHMgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IGIwNTc5OTNjOTdm
MTI4MDk2MGNkODQzNGZmMDZkMGE0MjkwMTQ0ODAuLjIyMWEwYmFlMTAzYmI3NTJjNzVmYWZlMzE0
MGFjY2Y1OTMzMzZhYzMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3Mt
dGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtNzEwLDYg
KzcxMCwxMCBAQCBkZWYgcnVuQmlnSW50RW5hYmxlZEJhc2VsaW5lKCpvcHRpb25hbFRlc3RTcGVj
aWZpY09wdGlvbnMpCiAgICAgcnVuKCJiaWctaW50LWVuYWJsZWQtYmFzZWxpbmUiLCAiLS11c2VC
aWdJbnQ9dHJ1ZSIsICItLXVzZURGR0pJVD0wIiwgKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9u
cykKIGVuZAogCitkZWYgcnVuSW50bFJlbGF0aXZlVGltZUZvcm1hdEVuYWJsZWQoKm9wdGlvbmFs
VGVzdFNwZWNpZmljT3B0aW9ucykKKyAgICBydW4oImludGwtcmVsYXRpdmV0aW1lZm9ybWF0LWVu
YWJsZWQiLCAiLS11c2VJbnRsUmVsYXRpdmVUaW1lRm9ybWF0PXRydWUiICwgKihGVExfT1BUSU9O
UyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCitlbmQKKwogZGVmIHJ1bkZUTE5vQ0pJ
VCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQogICAgIHJ1bigibWlzYy1mdGwtbm8tY2pp
dCIsICooRlRMX09QVElPTlMgKyBOT19DSklUX09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZp
Y09wdGlvbnMpKQogZW5kCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDYzY2ViOTMwYzM0NTQ1MmY3NjVjNGM0ZDZlMTMwMWMzMjhkOWVlNjEu
LjI1NjRmOTdkZTE5MjUwNGJjOWVlOTllMjcyYWQzZDgxNTNiYWU3YjAgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMjAtMDQtMTggIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisg
ICAgICAgIFtFQ01BLTQwMl0gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQgbWlzc2luZyBpbiBXZWJL
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3Ry
ZXNzL2ludGwtcmVsYXRpdmV0aW1lZm9ybWF0LmpzOiBBZGRlZC4KKworICAgICAgICAqIHRlc3Qy
NjIvY29uZmlnLnlhbWw6CisgICAgICAgIEVuYWJsZSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBm
ZWF0dXJlIHdpdGggZmxhZy4KKworICAgICAgICAqIHRlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWw6
CisgICAgICAgIE1hcmsga25vd24gZmFpbHVyZXMuCisgICAgICAgIFRlc3QgZm9yIGxvY2FsZSB2
YWxpZGF0aW9uIGlzIG5vdCBzcGVjaWZpYyB0byBSZWxhdGl2ZVRpbWVGb3JtYXQgYW5kIHNob3Vs
ZCBiZSBpbnZlc3RpZ2F0ZWQgc2VwYXJhdGVseS4KKyAgICAgICAgVGVzdHMgZm9yIFBvbGlzaCBh
cHBlYXIgdG8gYmUgd3JvbmcgYW5kIHNob3VsZCBiZSBjb3JyZWN0ZWQgaW4gdGVzdDI2Mi4KKwog
MjAyMC0wNC0xOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCBtYXJrIHRlc3QgcGFzc2luZy4KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2ludGwtcmVsYXRpdmV0aW1lZm9ybWF0LmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1y
ZWxhdGl2ZXRpbWVmb3JtYXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNiMzdjZmM4MzMzMzI4OGY0NDI4NDlk
OTUzMmZmMzJjNjQ4OWI3MwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwt
cmVsYXRpdmV0aW1lZm9ybWF0LmpzCkBAIC0wLDAgKzEsMjU1IEBACisvL0AgcnVuSW50bFJlbGF0
aXZlVGltZUZvcm1hdEVuYWJsZWQKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZE5vdFRocm93KGZ1bmMpIHsKKyAgICBmdW5jKCk7Cit9CisKK2Z1bmN0aW9uIHNo
b3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSkgeworICAgIGxldCBlcnJvcjsKKyAgICB0cnkgewor
ICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7Cisg
ICAgfQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9IWApOworfQorCitzaG91
bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBpbnN0YW5jZW9mIEZ1bmN0aW9uLCB0cnVlKTsK
K3Nob3VsZEJlKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0Lmxlbmd0aCwgMCk7CitzaG91bGRCZShP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LCAn
cHJvdG90eXBlJykud3JpdGFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQsICdwcm90b3R5cGUnKS5lbnVt
ZXJhYmxlLCBmYWxzZSk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlLCBmYWxz
ZSk7CisKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCksIFR5cGVF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5jYWxsKHt9
KSwgVHlwZUVycm9yKTsKKworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0KCckJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuUmVs
YXRpdmVUaW1lRm9ybWF0KCdlbicsIG51bGwpLCBUeXBlRXJyb3IpOworCitzaG91bGRCZShuZXcg
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoKSBpbnN0YW5jZW9mIEludGwuUmVsYXRpdmVUaW1lRm9y
bWF0LCB0cnVlKTsKKworeworICAgIGNsYXNzIERlcml2ZWRSZWxhdGl2ZVRpbWVGb3JtYXQgZXh0
ZW5kcyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCB7fQorCisgICAgY29uc3QgZHJ0ZiA9IG5ldyBE
ZXJpdmVkUmVsYXRpdmVUaW1lRm9ybWF0KCk7CisgICAgc2hvdWxkQmUoZHJ0ZiBpbnN0YW5jZW9m
IERlcml2ZWRSZWxhdGl2ZVRpbWVGb3JtYXQsIHRydWUpOworICAgIHNob3VsZEJlKGRydGYgaW5z
dGFuY2VvZiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoZHJ0
Zi5mb3JtYXQsIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQpOworICAg
IHNob3VsZEJlKGRydGYuZm9ybWF0VG9QYXJ0cywgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJv
dG90eXBlLmZvcm1hdFRvUGFydHMpOworICAgIHNob3VsZEJlKE9iamVjdC5nZXRQcm90b3R5cGVP
ZihkcnRmKSwgRGVyaXZlZFJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUpOworICAgIHNob3Vs
ZEJlKE9iamVjdC5nZXRQcm90b3R5cGVPZihEZXJpdmVkUmVsYXRpdmVUaW1lRm9ybWF0LnByb3Rv
dHlwZSksIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZSk7Cit9CisKK3Nob3VsZEJl
KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZi5sZW5ndGgsIDEpOwor
c2hvdWxkQmUoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCkgaW5z
dGFuY2VvZiBBcnJheSwgdHJ1ZSk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0
aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YuY2FsbChudWxsLCAnZW4nKSksICdbImVu
Il0nKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1
cHBvcnRlZExvY2FsZXNPZi5jYWxsKHt9LCAnZW4nKSksICdbImVuIl0nKTsKK3Nob3VsZEJlKEpT
T04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZi5j
YWxsKDEsICdlbicpKSwgJ1siZW4iXScpOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5S
ZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKDkpKSwgJ1tdJyk7CitzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVz
T2YoJ2VuJykpLCAnWyJlbiJdJyk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0
aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoeyBsZW5ndGg6IDQsIDE6ICdlbicsIDA6
ICdlcycsIDM6ICdkZScgfSkpLCAnWyJlcyIsImVuIiwiZGUiXScpOworc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKFsnZW4n
LCAncHQnLCAnZW4nLCAnZXMnXSkpLCAnWyJlbiIsInB0IiwiZXMiXScpOworc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdF
bi1sYVRuLXVzLXZhcmlhbnQyLXZhcmlhbnQxLTFhYmMtVS1rby10UnVlLUEtYWEtYWFhLXgtUkVT
RVJWRUQnKSksICdbImVuLUxhdG4tVVMtdmFyaWFudDItdmFyaWFudDEtMWFiYy1hLWFhLWFhYS11
LWtvLXgtcmVzZXJ2ZWQiXScpOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5SZWxhdGl2
ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCduby1ib2snKSksICdbIm5iIl0nKTsKK3No
b3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExv
Y2FsZXNPZigneC1zb21lLXRoaW5nJykpLCAnW10nKTsKKworc2hvdWxkVGhyb3coKCkgPT4gSW50
bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKE9iamVjdC5jcmVhdGUobnVs
bCwgeyBsZW5ndGg6IHsgZ2V0KCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9IH0pKSwgRXJyb3Ip
Oworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9j
YWxlc09mKE9iamVjdC5jcmVhdGUobnVsbCwgeyBsZW5ndGg6IHsgdmFsdWU6IDEgfSwgMDogeyBn
ZXQoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH0gfSkpLCBFcnJvcik7CitzaG91bGRUaHJvdygo
KSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoW3sgdG9TdHJp
bmcoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH1dKSwgRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKFs1XSksIFR5cGVF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0
ZWRMb2NhbGVzT2YoJycpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVs
YXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZignYScpLCBSYW5nZUVycm9yKTsKK3No
b3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNP
ZignYWJjZGVmZ2hpaicpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVs
YXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZignIyQnKSwgUmFuZ2VFcnJvcik7Citz
aG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVz
T2YoJ2VuLUAtYWJjJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxh
dGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdlbi11JyksIFJhbmdlRXJyb3IpOwor
c2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxl
c09mKCdlbi11LWtuLXRydWUtdS1rby10cnVlJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3co
KCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdlbi14Jyks
IFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQu
c3VwcG9ydGVkTG9jYWxlc09mKCdlbi0qJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdlbi0nKSwgUmFu
Z2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBw
b3J0ZWRMb2NhbGVzT2YoJ2VuLS1VUycpLCBSYW5nZUVycm9yKTsKKworY29uc3QgdmFsaWRMYW5n
dWFnZVRhZ3MgPSBbCisgICAgJ2RlJywgLy8gSVNPIDYzOSBsYW5ndWFnZSBjb2RlCisgICAgJ2Rl
LURFJywgLy8gKyBJU08gMzE2Ni0xIGNvdW50cnkgY29kZQorICAgICdERS1kZScsIC8vIHRhZ3Mg
YXJlIGNhc2UtaW5zZW5zaXRpdmUKKyAgICAnY21uJywgLy8gSVNPIDYzOSBsYW5ndWFnZSBjb2Rl
CisgICAgJ2Ntbi1IYW5zJywgLy8gKyBzY3JpcHQgY29kZQorICAgICdDTU4taEFOUycsIC8vIHRh
Z3MgYXJlIGNhc2UtaW5zZW5zaXRpdmUKKyAgICAnY21uLWhhbnMtY24nLCAvLyArIElTTyAzMTY2
LTEgY291bnRyeSBjb2RlCisgICAgJ2VzLTQxOScsIC8vICsgVU4gTS40OSByZWdpb24gY29kZQor
ICAgICdlcy00MTktdS1udS1sYXRuLWN1LWJvYicsIC8vICsgVW5pY29kZSBsb2NhbGUgZXh0ZW5z
aW9uIHNlcXVlbmNlCisgICAgJ2kta2xpbmdvbicsIC8vIGdyYW5kZmF0aGVyZWQgdGFnCisgICAg
J2Ntbi1oYW5zLWNuLXQtY2EtdS1jYS14LXQtdScsIC8vIHNpbmdsZXRvbiBzdWJ0YWdzIGNhbiBh
bHNvIGJlIHVzZWQgYXMgcHJpdmF0ZSB1c2Ugc3VidGFncworICAgICdlbm9jaGlhbi1lbm9jaGlh
bicsIC8vIGxhbmd1YWdlIGFuZCB2YXJpYW50IHN1YnRhZ3MgbWF5IGJlIHRoZSBzYW1lCisgICAg
J2RlLWdyZWdvcnktdS1jYS1ncmVnb3J5JywgLy8gdmFyaWFudCBhbmQgZXh0ZW5zaW9uIHN1YnRh
Z3MgbWF5IGJlIHRoZSBzYW1lCisgICAgJ2FhLWEtZm9vLXgtYS1mb28tYmFyJywgLy8gdmFyaWFu
dCBzdWJ0YWdzIGNhbiBhbHNvIGJlIHVzZWQgYXMgcHJpdmF0ZSB1c2Ugc3VidGFncworICAgICd4
LWVuLVVTLTEyMzQ1JywgLy8gYW55dGhpbmcgZ29lcyBpbiBwcml2YXRlIHVzZSB0YWdzCisgICAg
J3gtMTIzNDUtMTIzNDUtZW4tVVMnLAorICAgICd4LWVuLVVTLTEyMzQ1LTEyMzQ1JywKKyAgICAn
eC1lbi11LWZvbycsCisgICAgJ3gtZW4tdS1mb28tdS1iYXInCitdOworZm9yIChsZXQgdmFsaWRM
YW5ndWFnZVRhZyBvZiB2YWxpZExhbmd1YWdlVGFncykKKyAgICBzaG91bGROb3RUaHJvdygoKSA9
PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YodmFsaWRMYW5ndWFn
ZVRhZykpOworCitzaG91bGRCZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQucHJvdG90eXBlKSwgT2JqZWN0LnByb3RvdHlwZSk7CisKK3Nob3VsZEJlKEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQpOworCitzaG91bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGVb
U3ltYm9sLnRvU3RyaW5nVGFnXSwgJ0ludGwuUmVsYXRpdmVUaW1lRm9ybWF0Jyk7CitzaG91bGRC
ZShPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQu
cHJvdG90eXBlKSwgJ1tvYmplY3QgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXRdJyk7CitzaG91bGRC
ZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0
LnByb3RvdHlwZSwgU3ltYm9sLnRvU3RyaW5nVGFnKS53cml0YWJsZSwgZmFsc2UpOworc2hvdWxk
QmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLlJlbGF0aXZlVGltZUZvcm1h
dC5wcm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZykuZW51bWVyYWJsZSwgZmFsc2UpOworc2hv
dWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLlJlbGF0aXZlVGltZUZv
cm1hdC5wcm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZykuY29uZmlndXJhYmxlLCB0cnVlKTsK
Kworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsg
bG9jYWxlTWF0Y2hlcjogeyB0b1N0cmluZygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSB9KSwg
RXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdl
bicsIHsgbG9jYWxlTWF0Y2hlcjonYmFkJyB9KSwgUmFuZ2VFcnJvcik7CitzaG91bGROb3RUaHJv
dygoKSA9PiBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBsb2NhbGVNYXRjaGVy
Oidsb29rdXAnIH0pKTsKK3Nob3VsZE5vdFRocm93KCgpID0+IG5ldyBJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdCgnZW4nLCB7IGxvY2FsZU1hdGNoZXI6J2Jlc3QgZml0JyB9KSk7CisKK2NvbnN0IGRl
ZmF1bHRSVEYgPSBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJyk7CisKK3Nob3VsZEJl
KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMubGVuZ3Ro
LCAwKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlw
ZS5yZXNvbHZlZE9wdGlvbnMuY2FsbCg1KSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+
IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMuY2FsbCh7
fSksIFR5cGVFcnJvcik7CitzaG91bGRCZShkZWZhdWx0UlRGLnJlc29sdmVkT3B0aW9ucygpIGlu
c3RhbmNlb2YgT2JqZWN0LCB0cnVlKTsKK3Nob3VsZEJlKGRlZmF1bHRSVEYucmVzb2x2ZWRPcHRp
b25zKCkgIT09IGRlZmF1bHRSVEYucmVzb2x2ZWRPcHRpb25zKCksIHRydWUpOworc2hvdWxkQmUo
ZGVmYXVsdFJURi5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUsICdlbicpOworc2hvdWxkQmUoZGVm
YXVsdFJURi5yZXNvbHZlZE9wdGlvbnMoKS5zdHlsZSwgJ2xvbmcnKTsKK3Nob3VsZEJlKGRlZmF1
bHRSVEYucmVzb2x2ZWRPcHRpb25zKCkubnVtZXJpYywgJ2Fsd2F5cycpOworc2hvdWxkQmUoZGVm
YXVsdFJURi5yZXNvbHZlZE9wdGlvbnMoKS5udW1iZXJpbmdTeXN0ZW0sICdsYXRuJyk7CisKK3No
b3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4tdS1udS1oYW5pZGVjJykucmVz
b2x2ZWRPcHRpb25zKCkubG9jYWxlLCAnZW4tdS1udS1oYW5pZGVjJyk7CitzaG91bGRCZShuZXcg
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuLXUtbnUtaGFuaWRlYycsIHsgbnVtYmVyaW5nU3lz
dGVtOiAnZ3VqcicgfSkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLCAnZW4nKTsKK3Nob3VsZEJl
KG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4nLCB7IG51bWJlcmluZ1N5c3RlbTogJ2hh
bmlkZWMnIH0pLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZSwgJ2VuJyk7CitzaG91bGRCZShuZXcg
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuLXUtY2EtY2hpbmVzZScpLnJlc29sdmVkT3B0aW9u
cygpLmxvY2FsZSwgJ2VuJyk7CisKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdCgnZW4nLCB7IHN0eWxlOiB7IHRvU3RyaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3Io
KTsgfSB9IH0pLCBFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQoJ2VuJywgeyBzdHlsZTogJ2JhZCcgfSksIFJhbmdlRXJyb3IpOworc2hvdWxkQmUo
bmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgc3R5bGU6ICdsb25nJyB9KS5yZXNv
bHZlZE9wdGlvbnMoKS5zdHlsZSwgJ2xvbmcnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdCgnZW4nLCB7IHN0eWxlOiAnc2hvcnQnIH0pLnJlc29sdmVkT3B0aW9ucygpLnN0
eWxlLCAnc2hvcnQnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4n
LCB7IHN0eWxlOiAnbmFycm93JyB9KS5yZXNvbHZlZE9wdGlvbnMoKS5zdHlsZSwgJ25hcnJvdycp
OworCitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywg
eyBudW1lcmljOiB7IHRvU3RyaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9IH0pLCBFcnJv
cik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywg
eyBudW1lcmljOiAnYmFkJyB9KSwgUmFuZ2VFcnJvcik7CitzaG91bGRCZShuZXcgSW50bC5SZWxh
dGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBudW1lcmljOiAnYWx3YXlzJyB9KS5yZXNvbHZlZE9wdGlv
bnMoKS5udW1lcmljLCAnYWx3YXlzJyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVG
b3JtYXQoJ2VuJywgeyBudW1lcmljOiAnYXV0bycgfSkucmVzb2x2ZWRPcHRpb25zKCkubnVtZXJp
YywgJ2F1dG8nKTsKKworY29uc3QgbnVtYmVyaW5nU3lzdGVtcyA9IFsKKyAgICAnYXJhYicsICdh
cmFiZXh0JywgJ2JhbGknLCAnYmVuZycsICdkZXZhJywgJ2Z1bGx3aWRlJywgJ2d1anInLCAnZ3Vy
dScsCisgICAgJ2hhbmlkZWMnLCAna2htcicsICdrbmRhJywgJ2xhb28nLCAnbGF0bicsICdsaW1i
JywgJ21seW0nLCAnbW9uZycsICdteW1yJywKKyAgICAnb3J5YScsICd0YW1sZGVjJywgJ3RlbHUn
LCAndGhhaScsICd0aWJ0JworXQorZm9yIChsZXQgbnVtYmVyaW5nU3lzdGVtIG9mIG51bWJlcmlu
Z1N5c3RlbXMpIHsKKyAgICBzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2Vu
JywgeyBudW1iZXJpbmdTeXN0ZW0gfSkucmVzb2x2ZWRPcHRpb25zKCkubnVtYmVyaW5nU3lzdGVt
LCBudW1iZXJpbmdTeXN0ZW0pOworICAgIHNob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZv
cm1hdChgZW4tdS1udS0ke251bWJlcmluZ1N5c3RlbX1gKS5yZXNvbHZlZE9wdGlvbnMoKS5udW1i
ZXJpbmdTeXN0ZW0sIG51bWJlcmluZ1N5c3RlbSk7Cit9CisKK3Nob3VsZEJlKEludGwuUmVsYXRp
dmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQubGVuZ3RoLCAyKTsKK3Nob3VsZFRocm93KCgp
ID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQuY2FsbCh7fSwgMywg
J2RheXMnKSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IGRlZmF1bHRSVEYuZm9ybWF0
KFN5bWJvbCgpLCAnZGF5cycpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gZGVmYXVs
dFJURi5mb3JtYXQoMywgU3ltYm9sKCkpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4g
ZGVmYXVsdFJURi5mb3JtYXQoSW5maW5pdHksICdkYXlzJyksIFJhbmdlRXJyb3IpOworc2hvdWxk
VGhyb3coKCkgPT4gZGVmYXVsdFJURi5mb3JtYXQoMywgJ2NlbnR1cmllcycpLCBSYW5nZUVycm9y
KTsKKworY29uc3QgdW5pdHMgPSBbJ3NlY29uZCcsICdtaW51dGUnLCAnaG91cicsICdkYXknLCAn
d2VlaycsICdtb250aCcsICdxdWFydGVyJywgJ3llYXInXTsKKworZm9yIChsZXQgdW5pdCBvZiB1
bml0cykgeworICAgIHNob3VsZEJlKGRlZmF1bHRSVEYuZm9ybWF0KDEwLCB1bml0KSwgZGVmYXVs
dFJURi5mb3JtYXQoMTAsIGAke3VuaXR9c2ApKTsKKworICAgIHNob3VsZEJlKGRlZmF1bHRSVEYu
Zm9ybWF0KDEwMDAwLjUsIHVuaXQpLCBgaW4gMTAsMDAwLjUgJHt1bml0fXNgKTsKKyAgICBzaG91
bGRCZShkZWZhdWx0UlRGLmZvcm1hdCgxLjUsIHVuaXQpLCBgaW4gMS41ICR7dW5pdH1zYCk7Cisg
ICAgc2hvdWxkQmUoZGVmYXVsdFJURi5mb3JtYXQoMCwgdW5pdCksIGBpbiAwICR7dW5pdH1zYCk7
CisgICAgc2hvdWxkQmUoZGVmYXVsdFJURi5mb3JtYXQoLTAsIHVuaXQpLCBgMCAke3VuaXR9cyBh
Z29gKTsKKyAgICBzaG91bGRCZShkZWZhdWx0UlRGLmZvcm1hdCgtMS41LCB1bml0KSwgYDEuNSAk
e3VuaXR9cyBhZ29gKTsKKyAgICBzaG91bGRCZShkZWZhdWx0UlRGLmZvcm1hdCgtMTAwMDAuNSwg
dW5pdCksIGAxMCwwMDAuNSAke3VuaXR9cyBhZ29gKTsKK30KKworc2hvdWxkQmUobmV3IEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgc3R5bGU6ICdzaG9ydCcgfSkuZm9ybWF0KDEwLCAn
c2Vjb25kJyksICdpbiAxMCBzZWMuJyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVG
b3JtYXQoJ3J1JywgeyBzdHlsZTogJ3Nob3J0JyB9KS5mb3JtYXQoMTAsICdzZWNvbmQnKSwgJ9GH
0LXRgNC10LcgMTDCoNGB0LXQui4nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZv
cm1hdCgnZW4nLCB7IHN0eWxlOiAnbmFycm93JyB9KS5mb3JtYXQoMTAsICdzZWNvbmQnKSwgJ2lu
IDEwIHNlYy4nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgncnUnLCB7
IHN0eWxlOiAnbmFycm93JyB9KS5mb3JtYXQoMTAsICdzZWNvbmQnKSwgJysxMCDRgScpOworCitz
aG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBudW1lcmljOiAnYXV0
bycgfSkuZm9ybWF0KDAsICdzZWNvbmQnKSwgJ25vdycpOworc2hvdWxkQmUobmV3IEludGwuUmVs
YXRpdmVUaW1lRm9ybWF0KCdqYScsIHsgbnVtZXJpYzogJ2F1dG8nIH0pLmZvcm1hdCgwLCAnc2Vj
b25kJyksICfku4onKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4n
LCB7IG51bWVyaWM6ICdhdXRvJyB9KS5mb3JtYXQoMCwgJ2RheScpLCAndG9kYXknKTsKK3Nob3Vs
ZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnamEnLCB7IG51bWVyaWM6ICdhdXRvJyB9
KS5mb3JtYXQoMCwgJ2RheScpLCAn5LuK5pelJyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2
ZVRpbWVGb3JtYXQoJ2VuJywgeyBudW1lcmljOiAnYXV0bycgfSkuZm9ybWF0KDAsICd5ZWFyJyks
ICd0aGlzIHllYXInKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnamEn
LCB7IG51bWVyaWM6ICdhdXRvJyB9KS5mb3JtYXQoMCwgJ3llYXInKSwgJ+S7iuW5tCcpOworCitz
aG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBudW1iZXJpbmdTeXN0
ZW06ICd0aGFpJyB9KS5mb3JtYXQoLTEwLCAnaG91cicpLCAn4LmR4LmQIGhvdXJzIGFnbycpOwor
c2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbi11LW51LXRoYWknKS5mb3Jt
YXQoLTEwLCAnaG91cicpLCAn4LmR4LmQIGhvdXJzIGFnbycpOworc2hvdWxkQmUobmV3IEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0KCdrbycsIHsgbnVtYmVyaW5nU3lzdGVtOiAnaGFuaWRlYycgfSku
Zm9ybWF0KC0xMCwgJ2hvdXInKSwgJ+S4gOOAh+yLnOqwhCDsoIQnKTsKK3Nob3VsZEJlKG5ldyBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdCgna28tdS1udS1oYW5pZGVjJykuZm9ybWF0KC0xMCwgJ2hv
dXInKSwgJ+S4gOOAh+yLnOqwhCDsoIQnKTsKKworc2hvdWxkQmUoSW50bC5SZWxhdGl2ZVRpbWVG
b3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMubGVuZ3RoLCAyKTsKK3Nob3VsZFRocm93KCgp
ID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzLmNhbGwo
e30sIDMsICdkYXlzJyksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBkZWZhdWx0UlRG
LmZvcm1hdFRvUGFydHMoU3ltYm9sKCksICdkYXlzJyksIFR5cGVFcnJvcik7CitzaG91bGRUaHJv
dygoKSA9PiBkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoMywgU3ltYm9sKCkpLCBUeXBlRXJyb3Ip
Oworc2hvdWxkVGhyb3coKCkgPT4gZGVmYXVsdFJURi5mb3JtYXRUb1BhcnRzKEluZmluaXR5LCAn
ZGF5cycpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IGRlZmF1bHRSVEYuZm9ybWF0
VG9QYXJ0cygzLCAnY2VudHVyaWVzJyksIFJhbmdlRXJyb3IpOworCitmb3IgKGxldCB1bml0IG9m
IHVuaXRzKSB7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZGVmYXVsdFJURi5mb3JtYXRU
b1BhcnRzKDEwLCB1bml0KSksIEpTT04uc3RyaW5naWZ5KGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0
cygxMCwgYCR7dW5pdH1zYCkpKTsKKworICAgIGNvbnN0IGNvbmNhdGVuYXRlVmFsdWVzID0gKHBh
cnRzKSA9PiBwYXJ0cy5tYXAocGFydCA9PiBwYXJ0LnZhbHVlKS5qb2luKCcnKTsKKyAgICBzaG91
bGRCZShjb25jYXRlbmF0ZVZhbHVlcyhkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoMTAwMDAuNSwg
dW5pdCkpLCBgaW4gMTAsMDAwLjUgJHt1bml0fXNgKTsKKyAgICBzaG91bGRCZShjb25jYXRlbmF0
ZVZhbHVlcyhkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoMS41LCB1bml0KSksIGBpbiAxLjUgJHt1
bml0fXNgKTsKKyAgICBzaG91bGRCZShjb25jYXRlbmF0ZVZhbHVlcyhkZWZhdWx0UlRGLmZvcm1h
dFRvUGFydHMoMCwgdW5pdCkpLCBgaW4gMCAke3VuaXR9c2ApOworICAgIHNob3VsZEJlKGNvbmNh
dGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygtMCwgdW5pdCkpLCBgMCAke3Vu
aXR9cyBhZ29gKTsKKyAgICBzaG91bGRCZShjb25jYXRlbmF0ZVZhbHVlcyhkZWZhdWx0UlRGLmZv
cm1hdFRvUGFydHMoLTEuNSwgdW5pdCkpLCBgMS41ICR7dW5pdH1zIGFnb2ApOworICAgIHNob3Vs
ZEJlKGNvbmNhdGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygtMTAwMDAuNSwg
dW5pdCkpLCBgMTAsMDAwLjUgJHt1bml0fXMgYWdvYCk7Cit9CisKK3Nob3VsZEJlKAorICAgIEpT
T04uc3RyaW5naWZ5KGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygxMDAwMC41LCAnZGF5JykpLAor
ICAgIEpTT04uc3RyaW5naWZ5KFsKKyAgICAgICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZhbHVlOiAn
aW4gJyB9LAorICAgICAgICB7IHR5cGU6ICdpbnRlZ2VyJywgdmFsdWU6ICcxMCcsIHVuaXQ6ICdk
YXknIH0sCisgICAgICAgIHsgdHlwZTogJ2dyb3VwJywgdmFsdWU6ICcsJywgdW5pdDogJ2RheScg
fSwKKyAgICAgICAgeyB0eXBlOiAnaW50ZWdlcicsIHZhbHVlOiAnMDAwJywgdW5pdDogJ2RheScg
fSwKKyAgICAgICAgeyB0eXBlOiAnZGVjaW1hbCcsIHZhbHVlOiAnLicsIHVuaXQ6ICdkYXknIH0s
CisgICAgICAgIHsgdHlwZTogJ2ZyYWN0aW9uJywgdmFsdWU6ICc1JywgdW5pdDogJ2RheScgfSwK
KyAgICAgICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZhbHVlOiAnIGRheXMnIH0KKyAgICBdKQorKTsK
Kworc2hvdWxkQmUoCisgICAgSlNPTi5zdHJpbmdpZnkobmV3IEludGwuUmVsYXRpdmVUaW1lRm9y
bWF0KCdzdycpLmZvcm1hdFRvUGFydHMoMTAsICd5ZWFyJykpLAorICAgIEpTT04uc3RyaW5naWZ5
KFsKKyAgICAgICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZhbHVlOiAnYmFhZGEgeWEgbWlha2EgJyB9
LAorICAgICAgICB7IHR5cGU6ICdpbnRlZ2VyJywgdmFsdWU6ICcxMCcsIHVuaXQ6ICd5ZWFyJyB9
LAorICAgIF0pCispOworCitzaG91bGRCZSgKKyAgICBKU09OLnN0cmluZ2lmeShuZXcgSW50bC5S
ZWxhdGl2ZVRpbWVGb3JtYXQoJ3J1JywgeyBzdHlsZTogJ25hcnJvdycgfSkuZm9ybWF0VG9QYXJ0
cygxMCwgJ3NlY29uZCcpKSwKKyAgICBKU09OLnN0cmluZ2lmeShbCisgICAgICAgIHsgdHlwZTog
J2xpdGVyYWwnLCB2YWx1ZTogJysnIH0sCisgICAgICAgIHsgdHlwZTogJ2ludGVnZXInLCB2YWx1
ZTogJzEwJywgdW5pdDogJ3NlY29uZCcgfSwKKyAgICAgICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZh
bHVlOiAnINGBJyB9CisgICAgXSkKKyk7CisKK3Nob3VsZEJlKAorICAgIEpTT04uc3RyaW5naWZ5
KG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnamEnLCB7IG51bWVyaWM6ICdhdXRvJyB9KS5m
b3JtYXRUb1BhcnRzKDAsICd3ZWVrJykpLAorICAgIEpTT04uc3RyaW5naWZ5KFsKKyAgICAgICAg
eyB0eXBlOiAnbGl0ZXJhbCcsIHZhbHVlOiAn5LuK6YCxJyB9CisgICAgXSkKKyk7CisKK3Nob3Vs
ZEJlKAorICAgIEpTT04uc3RyaW5naWZ5KG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgna28n
LCB7IG51bWJlcmluZ1N5c3RlbTogJ2hhbmlkZWMnIH0pLmZvcm1hdFRvUGFydHMoLTEwLCAnaG91
cicpKSwKKyAgICBKU09OLnN0cmluZ2lmeShbCisgICAgICAgIHsgdHlwZTogJ2ludGVnZXInLCB2
YWx1ZTogJ+S4gOOAhycsIHVuaXQ6ICdob3VyJyB9LAorICAgICAgICB7IHR5cGU6ICdsaXRlcmFs
JywgdmFsdWU6ICfsi5zqsIQg7KCEJyB9CisgICAgXSkKKyk7CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXgg
YTAzNjZjZWZiNzJjNTlhNzQzNmE5YzJkNTQ4Y2Y4ZmVjNTU0ZDk3ZC4uOGM1NTMyNDY4NTVjZjRl
NWE5OGI1NjRlZDlkMjExZjcyMWI0NjFhNyAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2Nv
bmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtMiw2ICsyLDcg
QEAKIC0tLQogZmxhZ3M6CiAgIEJpZ0ludDogdXNlQmlnSW50CisgIEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0OiB1c2VJbnRsUmVsYXRpdmVUaW1lRm9ybWF0CiAgIFdlYWtSZWY6IHVzZVdlYWtSZWZz
CiAgIGNsYXNzLWZpZWxkcy1wdWJsaWM6IHVzZVB1YmxpY0NsYXNzRmllbGRzCiAgIGxvZ2ljYWwt
YXNzaWdubWVudC1vcGVyYXRvcnM6IHVzZUxvZ2ljYWxBc3NpZ25tZW50T3BlcmF0b3JzCkBAIC0z
MCw3ICszMSw2IEBAIHNraXA6CiAgICAgLSBJbnRsLkxpc3RGb3JtYXQKICAgICAtIEludGwuTG9j
YWxlCiAgICAgLSBJbnRsLk51bWJlckZvcm1hdC11bmlmaWVkCi0gICAgLSBJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdAogICAgIC0gSW50bC5TZWdtZW50ZXIKICAgcGF0aHM6CiAgICAgLSB0ZXN0L2J1
aWx0LWlucy9EYXRhVmlldy9wcm90b3R5cGUvZ2V0QmlnSW50NjQKQEAgLTE1MywzICsxNTMsNyBA
QCBza2lwOgogICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
OTc4MwogICAgIC0gdGVzdC9pbnRsNDAyL0RhdGVUaW1lRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQv
cmVsYXRlZC15ZWFyLXpoLmpzCiAgICAgLSB0ZXN0L2ludGw0MDIvRGF0ZVRpbWVGb3JtYXQvcHJv
dG90eXBlL2Zvcm1hdFRvUGFydHMvcmVsYXRlZC15ZWFyLXpoLmpzCisKKyAgICAjIHJlcXVpcmVz
IElDVSA2NSAoaHR0cHM6Ly91bmljb2RlLW9yZy5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9JQ1UtMjA2
NTQpCisgICAgLSB0ZXN0L2ludGw0MDIvUmVsYXRpdmVUaW1lRm9ybWF0L3Byb3RvdHlwZS9mb3Jt
YXQvZW4tdXMtbnVtZXJpYy1hdXRvLmpzCisgICAgLSB0ZXN0L2ludGw0MDIvUmVsYXRpdmVUaW1l
Rm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL2VuLXVzLW51bWVyaWMtYXV0by5qcwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sIGIvSlNUZXN0cy90ZXN0
MjYyL2V4cGVjdGF0aW9ucy55YW1sCmluZGV4IDI1YzY2ZjBlNTBlYmRlNDZiYTI5NzFkOTYwNWQ3
YmRiYTg2MmM0NWQuLjg5ODhlMzdmZDQwZDI5ODQxNmY5NTk1NTgzMWU2YmMxMWYxZTJmMGYgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAorKysgYi9KU1Rlc3Rz
L3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKQEAgLTE5MzUsMTIgKzE5MzUsMzMgQEAgdGVzdC9p
bnRsNDAyL051bWJlckZvcm1hdC9wcm90by1mcm9tLWN0b3ItcmVhbG0uanM6CiB0ZXN0L2ludGw0
MDIvUGx1cmFsUnVsZXMvcHJvdG8tZnJvbS1jdG9yLXJlYWxtLmpzOgogICBkZWZhdWx0OiAnVGVz
dDI2MkVycm9yOiBuZXdUYXJnZXQucHJvdG90eXBlIGlzIHVuZGVmaW5lZCBFeHBlY3RlZCBTYW1l
VmFsdWUowqtbb2JqZWN0IE9iamVjdF3Cuywgwqtbb2JqZWN0IE9iamVjdF3CuykgdG8gYmUgdHJ1
ZScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IG5ld1RhcmdldC5wcm90b3R5cGUgaXMg
dW5kZWZpbmVkIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq1tvYmplY3QgT2JqZWN0XcK7LCDCq1tvYmpl
Y3QgT2JqZWN0XcK7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL1JlbGF0aXZlVGltZUZvcm1h
dC9jb25zdHJ1Y3Rvci9jb25zdHJ1Y3Rvci9sb2NhbGVzLXZhbGlkLmpzOgorICBkZWZhdWx0OiAn
VGVzdDI2MkVycm9yOiBHcmFuZGZhdGhlcmVkIEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0
aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKKyAgc3RyaWN0IG1vZGU6
ICdUZXN0MjYyRXJyb3I6IEdyYW5kZmF0aGVyZWQgRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJl
IHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwordGVzdC9pbnRsNDAy
L1JlbGF0aXZlVGltZUZvcm1hdC9jb25zdHJ1Y3Rvci9jb25zdHJ1Y3Rvci9wcm90by1mcm9tLWN0
b3ItcmVhbG0uanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IG5ld1RhcmdldC5wcm90b3R5
cGUgaXMgdW5kZWZpbmVkIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq1tvYmplY3QgSW50bC5SZWxhdGl2
ZVRpbWVGb3JtYXRdwrssIMKrW29iamVjdCBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdF3CuykgdG8g
YmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IG5ld1RhcmdldC5wcm90b3R5
cGUgaXMgdW5kZWZpbmVkIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq1tvYmplY3QgSW50bC5SZWxhdGl2
ZVRpbWVGb3JtYXRdwrssIMKrW29iamVjdCBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdF3CuykgdG8g
YmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1h
dC9wbC1wbC1zdHlsZS1sb25nLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3Rl
ZCBTYW1lVmFsdWUowqt6YSAxMDAwIHNla3VuZMK7LCDCq3phIDHCoDAwMCBzZWt1bmTCuykgdG8g
YmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCq3phIDEwMDAgc2VrdW5kwrssIMKremEgMcKgMDAwIHNla3VuZMK7KSB0byBiZSB0cnVlJwor
dGVzdC9pbnRsNDAyL1JlbGF0aXZlVGltZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3BsLXBsLXN0
eWxlLW5hcnJvdy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZh
bHVlKMKremEgMTAwMCBzwrssIMKremEgMcKgMDAwIHPCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0
IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3phIDEwMDAgc8K7LCDC
q3phIDHCoDAwMCBzwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvUmVsYXRpdmVUaW1lRm9y
bWF0L3Byb3RvdHlwZS9mb3JtYXQvcGwtcGwtc3R5bGUtc2hvcnQuanM6CisgIGRlZmF1bHQ6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3phIDEwMDAgc2VrLsK7LCDCq3phIDHC
oDAwMCBzZWsuwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBF
eHBlY3RlZCBTYW1lVmFsdWUowqt6YSAxMDAwIHNlay7Cuywgwqt6YSAxwqAwMDAgc2VrLsK7KSB0
byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL1JlbGF0aXZlVGltZUZvcm1hdC9wcm90b3R5cGUvZm9y
bWF0VG9QYXJ0cy9wbC1wbC1zdHlsZS1sb25nLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9y
OiBmb3JtYXRUb1BhcnRzKDEwMDAsIHNlY29uZCk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUo
wqszwrssIMKrNcK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
Zm9ybWF0VG9QYXJ0cygxMDAwLCBzZWNvbmQpOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKr
M8K7LCDCqzXCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQv
cHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvcGwtcGwtc3R5bGUtbmFycm93LmpzOgorICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiBmb3JtYXRUb1BhcnRzKDEwMDAsIHNlY29uZCk6IGxlbmd0aCBFeHBl
Y3RlZCBTYW1lVmFsdWUowqszwrssIMKrNcK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTog
J1Rlc3QyNjJFcnJvcjogZm9ybWF0VG9QYXJ0cygxMDAwLCBzZWNvbmQpOiBsZW5ndGggRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrM8K7LCDCqzXCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9SZWxh
dGl2ZVRpbWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvcGwtcGwtc3R5bGUtc2hvcnQu
anM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IGZvcm1hdFRvUGFydHMoMTAwMCwgc2Vjb25k
KTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzPCuywgwqs1wrspIHRvIGJlIHRydWUnCisg
IHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBmb3JtYXRUb1BhcnRzKDEwMDAsIHNlY29uZCk6
IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqszwrssIMKrNcK7KSB0byBiZSB0cnVlJwogdGVz
dC9pbnRsNDAyL2xhbmd1YWdlLXRhZ3MtaW52YWxpZC5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJF
cnJvcjogVGVzdCBkYXRhICJkZS1ncmVnb3J5LWdyZWdvcnkiIGlzIGEgY2Fub25pY2FsaXplZCBh
bmQgc3RydWN0dXJhbGx5IHZhbGlkIGxhbmd1YWdlIHRhZy4nCiAgIHN0cmljdCBtb2RlOiAnVGVz
dDI2MkVycm9yOiBUZXN0IGRhdGEgImRlLWdyZWdvcnktZ3JlZ29yeSIgaXMgYSBjYW5vbmljYWxp
emVkIGFuZCBzdHJ1Y3R1cmFsbHkgdmFsaWQgbGFuZ3VhZ2UgdGFnLicKLXRlc3QvaW50bDQwMi9z
dXBwb3J0ZWRMb2NhbGVzT2YtcmV0dXJuZWQtYXJyYXktZWxlbWVudHMtYXJlLW5vdC1mcm96ZW4u
anM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IFByb3BlcnR5IDAgb2Ygb2JqZWN0IHJldHVy
bmVkIGJ5IFN1cHBvcnRlZExvY2FsZXMgaXMgbm90IHdyaXRhYmxlLiBFeHBlY3RlZCBTYW1lVmFs
dWUowqtmYWxzZcK7LCDCq3RydWXCuykgdG8gYmUgdHJ1ZSAoVGVzdGluZyB3aXRoIENvbGxhdG9y
LiknCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBQcm9wZXJ0eSAwIG9mIG9iamVjdCBy
ZXR1cm5lZCBieSBTdXBwb3J0ZWRMb2NhbGVzIGlzIG5vdCB3cml0YWJsZS4gRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrZmFsc2XCuywgwqt0cnVlwrspIHRvIGJlIHRydWUgKFRlc3Rpbmcgd2l0aCBDb2xs
YXRvci4pJwogdGVzdC9sYW5ndWFnZS9hcmd1bWVudHMtb2JqZWN0L21hcHBlZC9ub25jb25maWd1
cmFibGUtbm9uZW51bWVyYWJsZS1ub253cml0YWJsZS1kZXNjcmlwdG9ycy1zZXQtYnktYXJndW1l
bnRzLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBvYmpbMF0gdG8gaGF2
ZSBlbnVtZXJhYmxlOmZhbHNlLicKIHRlc3QvbGFuZ3VhZ2UvYXJndW1lbnRzLW9iamVjdC9tYXBw
ZWQvbm9uY29uZmlndXJhYmxlLW5vbmVudW1lcmFibGUtbm9ud3JpdGFibGUtZGVzY3JpcHRvcnMt
c2V0LWJ5LXBhcmFtLmpzOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396896</attachid>
            <date>2020-04-19 00:28:10 -0700</date>
            <delta_ts>2020-04-19 12:06:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209770-20200419002809.patch</filename>
            <type>text/plain</type>
            <size>102288</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZDg1MDUxZGE1NmI2Zjc2MGM2NjI3MWEwN2E0ZmYyYTJlOTU2Mzc2Li5mZWU1NWY2OTIwYzdiYTQ3
YjViMThiZjBhMDVhNWQ2NDA0MzRjMGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OSBAQAorMjAyMC0wNC0xOCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBtaXNz
aW5nIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5NzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSByZWNlbnQgRUNNQS00MDIgZmVhdHVyZSBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdC4KKworICAgICAgICBSZWxhdGl2ZVRpbWVGb3JtYXQgaGFz
IGZvcm1hdCAvIGZvcm1hdFRvUGFydHMgZnVuY3Rpb25zIGxpa2UgTnVtYmVyRm9ybWF0IC8gRGF0
ZVRpbWVGb3JtYXQKKyAgICAgICAgYW5kIGlzIHVzZWQgdG8gdHVybiBhIG51bWJlciBhbmQgdW5p
dCBpbnRvIGEgZm9ybWF0dGVkIHJlbGF0aXZlIHRpbWUgc3RyaW5nLCBlLmcuOgorCisgICAgICAg
ICAgbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicpLmZvcm1hdCgxMCwgJ2RheScpCisg
ICAgICAgICAgPiAnaW4gMTAgZGF5cycKKworICAgICAgICAgIG5ldyBJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdCgnZW4nLCB7IG51bWVyaWM6ICdhdXRvJyB9KS5mb3JtYXQoMCwgJ2RheScpCisgICAg
ICAgICAgPiAndG9kYXknCisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgUmVsYXRpdmVUaW1l
Rm9ybWF0I2Zvcm1hdFRvUGFydHMgbWFrZXMgZGlyZWN0IHVzZSBvZiBOdW1iZXJGb3JtYXQjZm9y
bWF0VG9QYXJ0cywKKyAgICAgICAgYXMgdGhlIHJlbGF0aXZlIHRpbWUgc3RyaW5nIGNvbnNpc3Rz
IG9mIGF0IG1vc3Qgb25lIGZvcm1hdHRlZCBudW1iZXIgd2l0aCBvcHRpb25hbCBsaXRlcmFsIHRl
eHQgb24gZWl0aGVyIHNpZGUuCisKKyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIHJ1bnRpbWUtZ3Vh
cmRlZCBieSB0aGUgYHVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXRgIG9wdGlvbi4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0lu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50
aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnJlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGlt
ZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlND
OjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgQWRkIGZlYXR1cmUg
YW5kIHJ1bnRpbWUgb3B0aW9uLgorCisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpJ
bnRsUGx1cmFsUnVsZXM6OnJlc29sdmVkT3B0aW9ucyk6CisgICAgICAgIE1ha2UgInR5cGUiIGEg
cHJvcGVydHkgbmFtZS4KKworICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDoKKyAgICAgICAgRmFjdG9yIG91dCBmb3JtYXRUb1Bh
cnRzSW50ZXJuYWwgc28gdGhhdCBSZWxhdGl2ZVRpbWVGb3JtYXQgY2FuIHVzZSBpdCB3aXRoIGl0
cyBvd24gVU51bWJlckZvcm1hdC4KKyAgICAgICAgKFRoaXMgbG9naWMgaXMgdG9vIGNvbXBsaWNh
dGVkIHRvIGR1cGxpY2F0ZTsgaXQncyBiZWNhdXNlIElDVSB3b24ndCBzcGxpdCwgZS5nLiwgIjEw
LDAwMCIgaW50byBwYXJ0cyBmb3IgdXMuKQorCisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6SW50bE9iamVjdCk6CisgICAgICAgIChK
U0M6OkludGxPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6aW50bEF2YWlsYWJsZUxvY2FsZXMpOgorICAgICAg
ICAoSlNDOjppbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgKEpTQzo6aXNV
bmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUpOgorICAgICAgICAoSlNDOjpzdXBwb3J0ZWRMb2Nh
bGVzKToKKyAgICAgICAgKEpTQzo6aW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcyk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6aW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcyk6CisgICAgICAgIChKU0M6Omlu
dGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgKEpTQzo6aW50bFBsdXJh
bFJ1bGVzQXZhaWxhYmxlTG9jYWxlcyk6CisgICAgICAgIChKU0M6OmludGxSZWxhdGl2ZVRpbWVG
b3JtYXRBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgUGVyZm9ybSB0aHJlZSBjb3JyZWN0aW9u
cyBmb3IgSW50bCBjbGFzc2VzOgorICAgICAgICAgIDEuIENvbGxhdG9yIHNob3VsZCBiZSB0aGUg
b25seSBjbGFzcyB3aXRoIHVuaXF1ZSAiYXZhaWxhYmxlIGxvY2FsZXMiLgorICAgICAgICAgICAg
IFt1bnVtfHVkYXRdX2dldEF2YWlsYWJsZSBleGlzdCBidXQgdGhleSd2ZSBkZWZlcnJlZCB0byB1
bG9jX2dldEF2YWlsYWJsZSBmb3IgMjAgeWVhcnMuCisgICAgICAgICAgMi4gaXNVbmljb2RlTG9j
YWxlSWRlbnRpZmllclR5cGUgaXNuJ3QganVzdCBgYWxwaGFudW17Myw4fWAgYnV0IHJhdGhlciBg
YWxwaGFudW17Myw4fSAoc2VwIGFscGhhbnVtezMsOH0pKmAuCisgICAgICAgICAgICAgVGhpcyBp
cyBteSBvd24gbWlzdGFrZSBmcm9tIHIyMzk5NDEuCisgICAgICAgICAgMy4gc3VwcG9ydGVkTG9j
YWxlc09mIGVudHJpZXMgc2hvdWxkIG5vdCBiZSBmcm96ZW4uCisgICAgICAgICAgICAgQ2hhbmdl
ZCBpbiBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9lY21hNDAyL3B1bGwvMjc4LgorCiAyMDIwLTA0
LTE4ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgU3Vw
cG9ydCBhbiBpbmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50
cyAoIkJpZ0ludDMyIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkMWQ5
MjMyOTk0ZDFkZGRiZThhMDgzY2Q2ZDYzZTQ5N2FlMjg0M2NmLi5hZmIyNTQ3OWFkZTI4NDViODc4
OGFmN2M1NGY5YTBlYjk2OGFlZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC03NSw2ICs3NSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMK
ICAgICBydW50aW1lL0ludGxPYmplY3QuY3BwCiAgICAgcnVudGltZS9JbnRsUGx1cmFsUnVsZXND
b25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAK
KyAgICBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKyAgICBy
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9K
U0RhdGFWaWV3UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCiAg
ICAgcnVudGltZS9KU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRl
eCAyMzQwY2RmYWM0NjFiOWI2YjMxYjA1NzhiMjVhZmI1NTViYWRhZDhiLi4zNGFjZGY4N2U4YTRk
NjliZjQ1ZDUyZjMyNDVmYTAwNDVlMjNjN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTQyLDYgKzE0Miw4
IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAK
ICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKICQoUFJPSkVDVF9ESVIpL3J1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50
aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUv
SW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAorJChQUk9KRUNUX0RJUikvcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikv
cnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSlNJbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBhNzQ0NTBjYTc5MWM3ZmE4ZDYyYzhi
OTA5YWFmZTQxNGU5NDZlZjBkLi5kYWY5NDMyYTkxNmU1NzQ2ZmRkOWUxODgzYjk3YjZhZGFkMzFm
YzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0zMyw2ICszMyw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
Lmx1CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
SW50bE9iamVjdC5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlLmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bFJlbGF0
aXZlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0RhdGFWaWV3UHJvdG90eXBlLmx1
dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
SlNHbG9iYWxPYmplY3QubHV0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggZTlkODA0ZDllOGJlNWMzNDVlZjQ3MjE5ZTBlOTk2ZDMxOWJiZjkwNy4uZTdm
MjEzMTM5YWM4YzQ2NjQ2MzQ4N2JhNzY3NzE1YmY2MzVlMDM1MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE1Myw2ICsxNTMsOCBAQCBPQkpFQ1RfTFVU
X0hFQURFUlMgPSBcCiAgICAgSW50bE9iamVjdC5sdXQuaCBcCiAgICAgSW50bFBsdXJhbFJ1bGVz
Q29uc3RydWN0b3IubHV0LmggXAogICAgIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5sdXQuaCBc
CisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oIFwKICAgICBKU0RhdGFWaWV3UHJvdG90
eXBlLmx1dC5oIFwKICAgICBKU0dsb2JhbE9iamVjdC5sdXQuaCBcCiAgICAgSlNJbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDcwZmM5OWZiNGU3N2UwMzcyNDNlMWQzMTdlNGM0ZDlkOTBlYjAxZTIuLjE1Y2NkMGM3MjIzZDZh
NjJjMmY4Y2M0ZGVmMjEzNWNhYjIwZDNkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC00MzM0LDYgKzQzMzQsMTIgQEAKIAkJQTFFMDQ1MUIxQzI1QjRCMTAwQkI2NjNDIC8qIFN0
cmluZ1Byb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9
IFN0cmluZ1Byb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGRTFF
QjAxQzJDNTM3RTAwQTI4OUZGIC8qIERhdGVQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmphdmFzY3JpcHQ7IHBhdGggPSBEYXRlUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMjc5NThEN0ZBMTE0MkIwQUM5RTM2NEQgLyogV2FzbUNvbnRleHRJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21Db250ZXh0SW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0JGODg0QjI0NDgwQkRFMDAxQjlG
MzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNCRjg4NEMyNDQ4MEJERjAwMUI5RjM1
IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBM0JGODg0RDI0NDgwQkRGMDAxQjlGMzUgLyogSW50bFJl
bGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQkY4ODRFMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUEzQkY4ODRGMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
dGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
M0JGODg1MDI0NDgwQkUxMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRkY5QkM1MjIzNDc0NjYwMEIxQTlBQiAvKiBZ
YXJyRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckZsYWdzLmg7
IHBhdGggPSB5YXJyL1lhcnJGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
M0ZGOUJDNjIyMzQ3NDY2MDBCMUE5QUIgLyogWWFyckZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJGbGFncy5jcHA7IHBhdGggPSB5YXJyL1lhcnJGbGFn
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTEzMTg4RTBGQUYwMDEx
MEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNzI2NSw2ICs3MjcxLDEyIEBACiAJCQkJN0Q1RkIxOTAyMDc0NEJGMTAwNURE
RjY0IC8qIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmggKi8sCiAJCQkJN0Q1RkIxOTEyMDc0
NEJGMTAwNURERjY0IC8qIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAgKi8sCiAJCQkJN0Q1
RkIxOEQyMDc0NEFFODAwNURERjY0IC8qIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oICovLAor
CQkJCUEzQkY4ODRGMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNw
cCAqLywKKwkJCQlBM0JGODg1MDI0NDgwQkUxMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZv
cm1hdC5oICovLAorCQkJCUEzQkY4ODREMjQ0ODBCREYwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwICovLAorCQkJCUEzQkY4ODRFMjQ0ODBCRTAwMDFCOUYz
NSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKKwkJCQlBM0JGODg0
QjI0NDgwQkRFMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAg
Ki8sCisJCQkJQTNCRjg4NEMyNDQ4MEJERjAwMUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRQcm90b3R5cGUuaCAqLywKIAkJCQkwRjI3NUYyQzFFQ0UwNzk2MDA2MjBENDcgLyogSW50cmlu
c2ljLmNwcCAqLywKIAkJCQk4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmgg
Ki8sCiAJCQkJOEI5RjZENTUxRDU5MTJGQTAwMUM3MzlGIC8qIEl0ZXJhdGlvbktpbmQuaCAqLywK
QEAgLTg5NTcsNyArODk2OSw2IEBACiAJCQkJMEZFQzg1OTExQkRBQ0RDNzAwODBGRjc0IC8qIEFp
clZhbGlkYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDM0M1MzFGMzNBNDE2MDBGNTlCNkMg
LyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNzYyMEIx
REI5NTlGOTAwQjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MzMxMTFCOEIyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkRDRTExQzFGQUU2MjA5MDA2RjM5MDEgLyogQWxsb2NhdGlvbkZhaWx1cmVNb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjc1QTA2MzIwMEQyNjFGMDAzOEUyQ0YgLyogQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjMwQ0I1RTFGQ0U0RTM3MDA0QjUzMjMgLyogQWxsb2NhdG9y
Rm9yTW9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDE5MSw2ICsxMDIwMiw3IEBACiAJCQkJMEZF
MDUwMjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRD
RSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwNjgxODlBRkU5QzAwNjMz
MjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMjExODhF
RkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
RkQwMDZFMTg5QjAwQUEwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGIzNjkyZjUwZWYxZmRmNDEwZWZiNGNj
MGViZjk3NmZjNjFmOWI0YTcuLjBmNGM1MGRmMzY3YzY1NjA4YTBhZjYyODNhMGRjNTI2YTk0MTBh
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTgxOSw2ICs4MTksOSBAQCBydW50
aW1lL0ludGxPYmplY3QuY3BwCiBydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKIHJ1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1By
b3RvdHlwZS5jcHAKK3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKK3J1bnRpbWUv
SW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAorcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAogcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3Bw
CiBydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmNwcAogcnVudGltZS9KU0FycmF5LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5k
ZXggZTJkYzg4N2IzODQ0MzRlMDUxNjY2YTBiNDI2NTIwMDM4ZjRiNTlmNC4uZDE2NGJhNGJlZjhi
NGVlZmY5MzE3MzdiMzk1M2YzNGZlMTIzMmEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC00OSw2ICs0OSw3IEBACiAgICAg
bWFjcm8oUHJvbWlzZSkgXAogICAgIG1hY3JvKFJlZmxlY3QpIFwKICAgICBtYWNybyhSZWdFeHAp
IFwKKyAgICBtYWNybyhSZWxhdGl2ZVRpbWVGb3JtYXQpIFwKICAgICBtYWNybyhSZW1vdGVQbGF5
YmFjaykgXAogICAgIG1hY3JvKFNldCkgXAogICAgIG1hY3JvKFNoYXJlZEFycmF5QnVmZmVyKSBc
CkBAIC0xNzgsNiArMTc5LDcgQEAKICAgICBtYWNybyhzdGFjaykgXAogICAgIG1hY3JvKHN0YWNr
VHJhY2VMaW1pdCkgXAogICAgIG1hY3JvKHN0aWNreSkgXAorICAgIG1hY3JvKHN0eWxlKSBcCiAg
ICAgbWFjcm8oc3ViYXJyYXkpIFwKICAgICBtYWNybyhzdW1tYXJ5KSBcCiAgICAgbWFjcm8odGFy
Z2V0KSBcCkBAIC0xOTMsNiArMTk1LDcgQEAKICAgICBtYWNybyh0b0xvY2FsZVN0cmluZykgXAog
ICAgIG1hY3JvKHRvUHJlY2lzaW9uKSBcCiAgICAgbWFjcm8odG9TdHJpbmcpIFwKKyAgICBtYWNy
byh0eXBlKSBcCiAgICAgbWFjcm8odWlkKSBcCiAgICAgbWFjcm8odW5pY29kZSkgXAogICAgIG1h
Y3JvKHVzYWdlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0LmNwcAppbmRleCAwMDMwMmZlNGIxMzVkMWQ4M2E0Y2RjODFkYjdkMTM4
MjEwZmM2N2U4Li4yZDEzM2Q2M2FlYmM0ZGI4NzU5OWM4MGRjYmQwZjEwYmY3YTg5ZDE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5jcHAKQEAgLTEwMjksNyArMTAyOSw2IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpm
b3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2CiAgICAg
ICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAK
ICAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5n
dGgpOwotICAgIGF1dG8gdHlwZVByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJ0eXBlIik7CiAgICAgYXV0byBsaXRlcmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5n
KHZtLCAibGl0ZXJhbCJfcyk7CiAKICAgICBpbnQzMl90IHByZXZpb3VzRW5kSW5kZXggPSAwOwpA
QCAtMTA0Myw3ICsxMDQyLDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFRv
UGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHYKICAgICAgICAgaWYg
KHByZXZpb3VzRW5kSW5kZXggPCBiZWdpbkluZGV4KSB7CiAgICAgICAgICAgICBhdXRvIHZhbHVl
ID0ganNTdHJpbmcodm0sIHJlc3VsdFN0cmluZy5zdWJzdHJpbmcocHJldmlvdXNFbmRJbmRleCwg
YmVnaW5JbmRleCAtIHByZXZpb3VzRW5kSW5kZXgpKTsKICAgICAgICAgICAgIEpTT2JqZWN0KiBw
YXJ0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIHBh
cnQtPnB1dERpcmVjdCh2bSwgdHlwZVByb3BlcnR5TmFtZSwgbGl0ZXJhbFN0cmluZyk7CisgICAg
ICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIGxpdGVy
YWxTdHJpbmcpOwogICAgICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT52YWx1ZSwgdmFsdWUpOwogICAgICAgICAgICAgcGFydHMtPnB1c2goZ2xvYmFsT2JqZWN0
LCBwYXJ0KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBA
IC0xMDU0LDcgKzEwNTMsNyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0VG9Q
YXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdgogICAgICAgICAgICAg
YXV0byB0eXBlID0ganNTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5nKFVEYXRlRm9ybWF0RmllbGQo
ZmllbGRUeXBlKSkpOwogICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGpzU3RyaW5nKHZtLCByZXN1
bHRTdHJpbmcuc3Vic3RyaW5nKGJlZ2luSW5kZXgsIGVuZEluZGV4IC0gYmVnaW5JbmRleCkpOwog
ICAgICAgICAgICAgSlNPYmplY3QqIHBhcnQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxP
YmplY3QpOwotICAgICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB0eXBlUHJvcGVydHlOYW1l
LCB0eXBlKTsKKyAgICAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+dHlwZSwgdHlwZSk7CiAgICAgICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnZhbHVlLCB2YWx1ZSk7CiAgICAgICAgICAgICBwYXJ0cy0+cHVzaChnbG9iYWxP
YmplY3QsIHBhcnQpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHAKaW5kZXggY2E0Mjc5Njg2YTZmYWIwZDhkZDJkYzViZTFmYmExOTFkMTcyYzhjOC4uOTY4
ZWI1ZTI3N2MwOWZjOGRmMzRkYmE0ZGFhYjEyMTdmMDBhNjQ5NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTIsNiArMiw3
IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29u
ZXIuZmFtaWx5KQogICogQ29weXJpZ2h0IChDKSAyMDE2IFN1a29sc2FrIFNha3NodXdvbmcgKHN1
a29sc2FrQGdtYWlsLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xOTUsNyArMTk2LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKIAogICAgIG1fbnVtYmVy
aW5nU3lzdGVtID0gcmVzdWx0LmdldCgibnUiX3MpOwogCi0gICAgU3RyaW5nIHN0eWxlU3RyaW5n
ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJzdHlsZSIpLCB7ICJkZWNpbWFsIiwgInBlcmNlbnQiLCAiY3VycmVuY3ki
IH0sICJzdHlsZSBtdXN0IGJlIGVpdGhlciBcImRlY2ltYWxcIiwgXCJwZXJjZW50XCIsIG9yIFwi
Y3VycmVuY3lcIiIsICJkZWNpbWFsIik7CisgICAgU3RyaW5nIHN0eWxlU3RyaW5nID0gaW50bFN0
cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxl
LCB7ICJkZWNpbWFsIiwgInBlcmNlbnQiLCAiY3VycmVuY3kiIH0sICJzdHlsZSBtdXN0IGJlIGVp
dGhlciBcImRlY2ltYWxcIiwgXCJwZXJjZW50XCIsIG9yIFwiY3VycmVuY3lcIiIsICJkZWNpbWFs
Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoc3R5
bGVTdHJpbmcgPT0gImRlY2ltYWwiKQogICAgICAgICBtX3N0eWxlID0gU3R5bGU6OkRlY2ltYWw7
CkBAIC00NDEsNyArNDQyLDcgQEAgSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVk
T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTT2JqZWN0KiBvcHRp
b25zID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZSwganNTdHJpbmcodm0sIG1fbG9j
YWxlKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5udW1i
ZXJpbmdTeXN0ZW0sIGpzU3RyaW5nKHZtLCBtX251bWJlcmluZ1N5c3RlbSkpOwotICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0eWxlIiksIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgc3R5bGVTdHJpbmcobV9zdHlsZSkpKTsKKyAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIHN0eWxlU3RyaW5nKG1fc3R5bGUpKSk7CiAgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6
OkN1cnJlbmN5KSB7CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV9jdXJy
ZW5jeSkpOwogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjdXJyZW5jeURpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjdXJy
ZW5jeURpc3BsYXlTdHJpbmcobV9jdXJyZW5jeURpc3BsYXkpKSk7CkBAIC01MDMsNiArNTA0LDUw
IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpwYXJ0VHlwZVN0cmluZyhVTnVtYmVy
Rm9ybWF0RmllbGRzIGZpZWxkLCBkb3VibGUKICAgICByZXR1cm4gInVua25vd24iX3M7CiB9CiAK
K3ZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQs
IFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqIGl0ZXJhdG9yLCBKU0FycmF5KiBwYXJ0cywgSlNTdHJp
bmcqIHVuaXQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gc3RyaW5nTGVuZ3Ro
ID0gZm9ybWF0dGVkLmxlbmd0aCgpOworCisgICAgaW50MzJfdCBsaXRlcmFsRmllbGRUeXBlID0g
LTE7CisgICAgYXV0byBsaXRlcmFsRmllbGQgPSBJbnRsTnVtYmVyRm9ybWF0RmllbGQobGl0ZXJh
bEZpZWxkVHlwZSwgc3RyaW5nTGVuZ3RoKTsKKyAgICBWZWN0b3I8SW50bE51bWJlckZvcm1hdEZp
ZWxkPiBmaWVsZHMoc3RyaW5nTGVuZ3RoLCBsaXRlcmFsRmllbGQpOworICAgIGludDMyX3QgYmVn
aW5JbmRleCA9IDA7CisgICAgaW50MzJfdCBlbmRJbmRleCA9IDA7CisgICAgYXV0byBmaWVsZFR5
cGUgPSB1ZmllbGRwb3NpdGVyX25leHQoaXRlcmF0b3IsICZiZWdpbkluZGV4LCAmZW5kSW5kZXgp
OworICAgIHdoaWxlIChmaWVsZFR5cGUgPj0gMCkgeworICAgICAgICBhdXRvIHNpemUgPSBlbmRJ
bmRleCAtIGJlZ2luSW5kZXg7CisgICAgICAgIGZvciAoYXV0byBpID0gYmVnaW5JbmRleDsgaSA8
IGVuZEluZGV4OyArK2kpIHsKKyAgICAgICAgICAgIC8vIE9ubHkgb3ZlcnJpZGUgcHJldmlvdXMg
dmFsdWUgaWYgbmV3IHZhbHVlIGlzIG1vcmUgc3BlY2lmaWMuCisgICAgICAgICAgICBpZiAoZmll
bGRzW2ldLnNpemUgPj0gc2l6ZSkKKyAgICAgICAgICAgICAgICBmaWVsZHNbaV0gPSBJbnRsTnVt
YmVyRm9ybWF0RmllbGQoZmllbGRUeXBlLCBzaXplKTsKKyAgICAgICAgfQorICAgICAgICBmaWVs
ZFR5cGUgPSB1ZmllbGRwb3NpdGVyX25leHQoaXRlcmF0b3IsICZiZWdpbkluZGV4LCAmZW5kSW5k
ZXgpOworICAgIH0KKworICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgImxpdGVyYWwiX3MpOworICAgIGF1dG8gdW5pdE5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAidW5pdCIpOworCisgICAgc2l6ZV90IGN1cnJlbnRJbmRleCA9IDA7CisgICAg
d2hpbGUgKGN1cnJlbnRJbmRleCA8IHN0cmluZ0xlbmd0aCkgeworICAgICAgICBhdXRvIHN0YXJ0
SW5kZXggPSBjdXJyZW50SW5kZXg7CisgICAgICAgIGF1dG8gZmllbGRUeXBlID0gZmllbGRzW2N1
cnJlbnRJbmRleF0udHlwZTsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA8IHN0cmluZ0xl
bmd0aCAmJiBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlID09IGZpZWxkVHlwZSkKKyAgICAgICAg
ICAgICsrY3VycmVudEluZGV4OworICAgICAgICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09
IGxpdGVyYWxGaWVsZFR5cGUgPyBsaXRlcmFsU3RyaW5nIDoganNTdHJpbmcodm0sIHBhcnRUeXBl
U3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgdmFsdWUpKTsKKyAgICAgICAg
YXV0byBwYXJ0VmFsdWUgPSBqc1N1YnN0cmluZyh2bSwgZm9ybWF0dGVkLCBzdGFydEluZGV4LCBj
dXJyZW50SW5kZXggLSBzdGFydEluZGV4KTsKKyAgICAgICAgSlNPYmplY3QqIHBhcnQgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgICAgICBwYXJ0LT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIHBhcnRUeXBlKTsKKyAgICAgICAgcGFydC0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwgcGFydFZhbHVlKTsKKyAgICAgICAg
aWYgKHVuaXQpCisgICAgICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHVuaXROYW1lLCB1bml0
KTsKKyAgICAgICAgcGFydHMtPnB1c2goZ2xvYmFsT2JqZWN0LCBwYXJ0KTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICB9Cit9CisKIEpTVmFsdWUgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3VibGUgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAt
NTIwLDcgKzU2NSw2IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsCiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImZhaWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKIAotICAg
IHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQoMzIp
OwogICAgIGF1dG8gcmVzdWx0TGVuZ3RoID0gdW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMobV9u
dW1iZXJGb3JtYXQuZ2V0KCksIHZhbHVlLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCBm
aWVsZEl0ci5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVS
RkxPV19FUlJPUikgewpAQCAtNTMxLDQ1ICs1NzUsMTQgQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9y
bWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2
YWwKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3Mp
OwogCi0gICAgaW50MzJfdCBsaXRlcmFsRmllbGRUeXBlID0gLTE7Ci0gICAgYXV0byBsaXRlcmFs
RmllbGQgPSBJbnRsTnVtYmVyRm9ybWF0RmllbGQobGl0ZXJhbEZpZWxkVHlwZSwgcmVzdWx0TGVu
Z3RoKTsKLSAgICBWZWN0b3I8SW50bE51bWJlckZvcm1hdEZpZWxkPiBmaWVsZHMocmVzdWx0TGVu
Z3RoLCBsaXRlcmFsRmllbGQpOwotICAgIGludDMyX3QgYmVnaW5JbmRleCA9IDA7Ci0gICAgaW50
MzJfdCBlbmRJbmRleCA9IDA7Ci0gICAgYXV0byBmaWVsZFR5cGUgPSB1ZmllbGRwb3NpdGVyX25l
eHQoZmllbGRJdHIuZ2V0KCksICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOwotICAgIHdoaWxlIChm
aWVsZFR5cGUgPj0gMCkgewotICAgICAgICBhdXRvIHNpemUgPSBlbmRJbmRleCAtIGJlZ2luSW5k
ZXg7Ci0gICAgICAgIGZvciAoYXV0byBpID0gYmVnaW5JbmRleDsgaSA8IGVuZEluZGV4OyArK2kp
IHsKLSAgICAgICAgICAgIC8vIE9ubHkgb3ZlcnJpZGUgcHJldmlvdXMgdmFsdWUgaWYgbmV3IHZh
bHVlIGlzIG1vcmUgc3BlY2lmaWMuCi0gICAgICAgICAgICBpZiAoZmllbGRzW2ldLnNpemUgPj0g
c2l6ZSkKLSAgICAgICAgICAgICAgICBmaWVsZHNbaV0gPSBJbnRsTnVtYmVyRm9ybWF0RmllbGQo
ZmllbGRUeXBlLCBzaXplKTsKLSAgICAgICAgfQotICAgICAgICBmaWVsZFR5cGUgPSB1ZmllbGRw
b3NpdGVyX25leHQoZmllbGRJdHIuZ2V0KCksICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOwotICAg
IH0KKyAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHRM
ZW5ndGgpOwogCiAgICAgSlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGds
b2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9u
KEFycmF5V2l0aENvbnRpZ3VvdXMpLCAwKTsKICAgICBpZiAoIXBhcnRzKQogICAgICAgICByZXR1
cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAgIHVuc2ln
bmVkIGluZGV4ID0gMDsKIAotICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gU3RyaW5nKHJlc3VsdC5k
YXRhKCksIHJlc3VsdExlbmd0aCk7Ci0gICAgYXV0byB0eXBlUHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiKTsKLSAgICBhdXRvIGxpdGVyYWxTdHJpbmcgPSBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJsaXRlcmFsIl9zKTsKLQotICAgIGludDMyX3QgY3VycmVu
dEluZGV4ID0gMDsKLSAgICB3aGlsZSAoY3VycmVudEluZGV4IDwgcmVzdWx0TGVuZ3RoKSB7Ci0g
ICAgICAgIGF1dG8gc3RhcnRJbmRleCA9IGN1cnJlbnRJbmRleDsKLSAgICAgICAgYXV0byBmaWVs
ZFR5cGUgPSBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlOwotICAgICAgICB3aGlsZSAoY3VycmVu
dEluZGV4IDwgcmVzdWx0TGVuZ3RoICYmIGZpZWxkc1tjdXJyZW50SW5kZXhdLnR5cGUgPT0gZmll
bGRUeXBlKQotICAgICAgICAgICAgKytjdXJyZW50SW5kZXg7Ci0gICAgICAgIGF1dG8gcGFydFR5
cGUgPSBmaWVsZFR5cGUgPT0gbGl0ZXJhbEZpZWxkVHlwZSA/IGxpdGVyYWxTdHJpbmcgOiBqc1N0
cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyhmaWVsZFR5cGUpLCB2
YWx1ZSkpOwotICAgICAgICBhdXRvIHBhcnRWYWx1ZSA9IGpzU3Vic3RyaW5nKHZtLCByZXN1bHRT
dHJpbmcsIHN0YXJ0SW5kZXgsIGN1cnJlbnRJbmRleCAtIHN0YXJ0SW5kZXgpOwotICAgICAgICBK
U09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAg
ICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdHlwZVByb3BlcnR5TmFtZSwgcGFydFR5cGUpOwotICAg
ICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBwYXJ0VmFs
dWUpOwotICAgICAgICBwYXJ0cy0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsr
LCBwYXJ0KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICB9
CisgICAgZm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgdmFsdWUsIHJlc3VsdFN0
cmluZywgZmllbGRJdHIuZ2V0KCksIHBhcnRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogCiAgICAgcmV0dXJuIHBhcnRzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCmluZGV4IDJiMDZmMDdmY2FmNGNkYjdl
Yzk5NDhkYWFmNmQzNjE5Mzc4N2FkOTEuLjlmMTBiNWQ0MzY3MGI4ZGUyZjZmNDBlNGQ3NzMzODVl
MzU2ZjE4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFu
ZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01NywxMiArNTgsMTQgQEAgcHVibGljOgogICAgIHZvaWQgaW5p
dGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgbG9jYWxlcywgSlNW
YWx1ZSBvcHRpb25zVmFsdWUpOwogICAgIEpTVmFsdWUgZm9ybWF0KEpTR2xvYmFsT2JqZWN0Kiwg
ZG91YmxlKTsKICAgICBKU1ZhbHVlIGZvcm1hdChKU0dsb2JhbE9iamVjdCosIEpTQmlnSW50Kik7
Ci0gICAgSlNWYWx1ZSBmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlIHZhbHVl
KTsKKyAgICBKU1ZhbHVlIGZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUpOwog
ICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKTsKIAogICAgIEpT
Qm91bmRGdW5jdGlvbiogYm91bmRGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRm9ybWF0
LmdldCgpOyB9CiAgICAgdm9pZCBzZXRCb3VuZEZvcm1hdChWTSYsIEpTQm91bmRGdW5jdGlvbiop
OwogCisgICAgc3RhdGljIHZvaWQgZm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0
KiwgZG91YmxlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgVUZpZWxkUG9zaXRpb25JdGVyYXRv
ciosIEpTQXJyYXkqLCBKU1N0cmluZyogdW5pdCA9IG51bGxwdHIpOworCiBwcm90ZWN0ZWQ6CiAg
ICAgSW50bE51bWJlckZvcm1hdChWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5j
cHAKaW5kZXggZmIyYmI1YjY5MmNjZWMwMGUxZTRhYjc2NDI0NTdlMTExYTYyMzM1MS4uNTdiNTk2
ZDFlYTI0ZTJmYTgzOWY1NDUyZDVlZWYwNzJhNjdiN2I1YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQogICog
Q29weXJpZ2h0IChDKSAyMDE1IFN1a29sc2FrIFNha3NodXdvbmcgKHN1a29sc2FrQGdtYWlsLmNv
bSkKICAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1l
bnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSwxNSArNDAsMTUg
QEAKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50
bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXNQcm90
b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIK
KyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
TG9va3VwLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiT3B0aW9u
cy5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgotI2luY2x1ZGUgPHVuaWNvZGUvdWRhdC5o
PgogI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgotI2luY2x1ZGUgPHVuaWNvZGUvdW51bS5oPgog
I2luY2x1ZGUgPHVuaWNvZGUvdW51bXN5cy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CkBAIC0xMTQsMTcgKzExNSwyNiBAQCBzdHJ1Y3Qg
TWF0Y2hlclJlc3VsdCB7CiBjb25zdCBDbGFzc0luZm8gSW50bE9iamVjdDo6c19pbmZvID0geyAi
T2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgJmludGxPYmplY3RUYWJsZSwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShJbnRsT2JqZWN0KSB9OwogCiBJbnRsT2JqZWN0OjpJbnRsT2JqZWN0KFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiB7CiB9CiAKLUludGxPYmplY3Qq
IEludGxPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorSW50bE9i
amVjdCogSW50bE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgSW50bE9iamVjdCogb2JqZWN0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE9iamVjdD4odm0uaGVhcCkpIEludGxPYmpl
Y3Qodm0sIHN0cnVjdHVyZSk7Ci0gICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAg
b2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gb2Jq
ZWN0OwogfQogCit2b2lkIEludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CisgICAgaWYgKE9wdGlvbnM6OnVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXQoKSkgeworICAgICAg
ICBhdXRvKiByZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciA9IEludGxSZWxhdGl2ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1
bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8SW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlw
ZSo+KGdsb2JhbE9iamVjdC0+cmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJlKCktPnN0b3JlZFBy
b3RvdHlwZU9iamVjdCgpKSk7CisgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5SZWxhdGl2ZVRpbWVGb3JtYXQsIHJlbGF0aXZlVGltZUZvcm1h
dENvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CisgICAgfQorfQorCiBTdHJ1Y3R1cmUqIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQogewogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
QEAgLTE2NCwyNiArMTc0LDcgQEAgc3RhdGljIHZvaWQgYWRkTWlzc2luZ1NjcmlwdExvY2FsZXMo
SGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzKQogICAgICAgICBhdmFpbGFibGVMb2Nh
bGVzLmFkZCh6aF9UV19TdHJpbmcuZ2V0KCkpOwogfQogCi1jb25zdCBIYXNoU2V0PFN0cmluZz4m
IGludGxDb2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PFN0cmluZz4+IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXM7Ci0gICAgSGFzaFNl
dDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzID0gY2FjaGVkQXZhaWxhYmxlTG9jYWxlcy5nZXQo
KTsKLQotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKLSAgICBzdGQ6
OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgWyZdIHsKLSAgICAgICAgQVNTRVJUKGF2YWlsYWJs
ZUxvY2FsZXMuaXNFbXB0eSgpKTsKLSAgICAgICAgaW50MzJfdCBjb3VudCA9IHVjb2xfY291bnRB
dmFpbGFibGUoKTsKLSAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkg
ewotICAgICAgICAgICAgU3RyaW5nIGxvY2FsZSA9IGNvbnZlcnRJQ1VMb2NhbGVUb0JDUDQ3TGFu
Z3VhZ2VUYWcodWNvbF9nZXRBdmFpbGFibGUoaSkpOwotICAgICAgICAgICAgaWYgKCFsb2NhbGUu
aXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMuYWRkKGxvY2FsZSk7
Ci0gICAgICAgIH0KLSAgICAgICAgYWRkTWlzc2luZ1NjcmlwdExvY2FsZXMoYXZhaWxhYmxlTG9j
YWxlcyk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGF2YWlsYWJsZUxvY2FsZXM7Ci19Ci0KLWNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiYgaW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpCitj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxBdmFpbGFibGVMb2NhbGVzKCkKIHsKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBjYWNoZWRBdmFpbGFibGVMb2NhbGVz
OwogICAgIEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcyA9IGNhY2hlZEF2YWlsYWJs
ZUxvY2FsZXMuZ2V0KCk7CkBAIC0xOTEsOSArMTgyLDkgQEAgY29uc3QgSGFzaFNldDxTdHJpbmc+
JiBpbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkKICAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9u
Y2UsIFsmXSB7CiAgICAgICAgIEFTU0VSVChhdmFpbGFibGVMb2NhbGVzLmlzRW1wdHkoKSk7Ci0g
ICAgICAgIGludDMyX3QgY291bnQgPSB1ZGF0X2NvdW50QXZhaWxhYmxlKCk7CisgICAgICAgIGlu
dDMyX3QgY291bnQgPSB1bG9jX2NvdW50QXZhaWxhYmxlKCk7CiAgICAgICAgIGZvciAoaW50MzJf
dCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBj
b252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKHVkYXRfZ2V0QXZhaWxhYmxlKGkpKTsK
KyAgICAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBjb252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xhbmd1
YWdlVGFnKHVsb2NfZ2V0QXZhaWxhYmxlKGkpKTsKICAgICAgICAgICAgIGlmICghbG9jYWxlLmlz
RW1wdHkoKSkKICAgICAgICAgICAgICAgICBhdmFpbGFibGVMb2NhbGVzLmFkZChsb2NhbGUpOwog
ICAgICAgICB9CkBAIC0yMDIsNyArMTkzLDcgQEAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRs
RGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkKICAgICByZXR1cm4gYXZhaWxhYmxlTG9j
YWxlczsKIH0KIAotY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsTnVtYmVyRm9ybWF0QXZhaWxh
YmxlTG9jYWxlcygpCitjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxDb2xsYXRvckF2YWlsYWJs
ZUxvY2FsZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+
IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXM7CiAgICAgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVM
b2NhbGVzID0gY2FjaGVkQXZhaWxhYmxlTG9jYWxlcy5nZXQoKTsKQEAgLTIxMCw5ICsyMDEsOSBA
QCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVz
KCkKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7CiAgICAgc3RkOjpj
YWxsX29uY2UoaW5pdGlhbGl6ZU9uY2UsIFsmXSB7CiAgICAgICAgIEFTU0VSVChhdmFpbGFibGVM
b2NhbGVzLmlzRW1wdHkoKSk7Ci0gICAgICAgIGludDMyX3QgY291bnQgPSB1bnVtX2NvdW50QXZh
aWxhYmxlKCk7CisgICAgICAgIGludDMyX3QgY291bnQgPSB1Y29sX2NvdW50QXZhaWxhYmxlKCk7
CiAgICAgICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAg
ICAgIFN0cmluZyBsb2NhbGUgPSBjb252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKHVu
dW1fZ2V0QXZhaWxhYmxlKGkpKTsKKyAgICAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBjb252ZXJ0
SUNVTG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKHVjb2xfZ2V0QXZhaWxhYmxlKGkpKTsKICAgICAg
ICAgICAgIGlmICghbG9jYWxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBhdmFpbGFibGVM
b2NhbGVzLmFkZChsb2NhbGUpOwogICAgICAgICB9CkBAIC0zMjgsMTMgKzMxOSwxNSBAQCBib29s
IGlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJUeXBlKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAg
IEFTU0VSVCghc3RyaW5nLmlzTnVsbCgpKTsKIAotICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxl
bmd0aCgpOwotICAgIGlmIChsZW5ndGggPCAzIHx8IGxlbmd0aCA+IDgpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGZvciAoYXV0byBjaGFyYWN0ZXIgOiBzdHJpbmcuY29kZVVuaXRzKCkp
IHsKLSAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGFudW1lcmljKGNoYXJhY3RlcikpCisgICAgZm9y
IChhdXRvIHBhcnQgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnLScpKSB7Cisg
ICAgICAgIGF1dG8gbGVuZ3RoID0gcGFydC5sZW5ndGgoKTsKKyAgICAgICAgaWYgKGxlbmd0aCA8
IDMgfHwgbGVuZ3RoID4gOCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBm
b3IgKGF1dG8gY2hhcmFjdGVyIDogcGFydC5jb2RlVW5pdHMoKSkgeworICAgICAgICAgICAgaWYg
KCFpc0FTQ0lJQWxwaGFudW1lcmljKGNoYXJhY3RlcikpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC05NzksOCAr
OTcyLDYgQEAgSlNWYWx1ZSBzdXBwb3J0ZWRMb2NhbGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXYKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlKCkpOwogCiAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2M7Ci0gICAg
ZGVzYy5zZXRDb25maWd1cmFibGUoZmFsc2UpOwotICAgIGRlc2Muc2V0V3JpdGFibGUoZmFsc2Up
OwogCiAgICAgc2l6ZV90IGxlbiA9IGtleXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGVuOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3QuaAppbmRleCA2MGMwMDI1MDE5Y2MwZjcxMTZjOTM3NzM0OGE0MzRlMjFkZjVkMmVmLi42YWY2
ZjczOWZkM2M5YzJiYmIzNzFkNmMwYmMzNjIzNTlhYWJiMThhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IElu
Yy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsMjAgKzQ0LDIzIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwogICAgIH0KIAotICAg
IHN0YXRpYyBJbnRsT2JqZWN0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMg
SW50bE9iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCiBwcml2YXRlOgogICAgIEludGxPYmpl
Y3QoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9i
YWxPYmplY3QqKTsKIH07CiAKIFN0cmluZyBkZWZhdWx0TG9jYWxlKEpTR2xvYmFsT2JqZWN0Kik7
Citjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxBdmFpbGFibGVMb2NhbGVzKCk7CiBjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGludGxDb2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKTsKLWNvbnN0IEhh
c2hTZXQ8U3RyaW5nPiYgaW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwotY29u
c3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwot
aW5saW5lIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bFBsdXJhbFJ1bGVzQXZhaWxhYmxlTG9j
YWxlcygpIHsgcmV0dXJuIGludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7IH0KK2lu
bGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxv
Y2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CitpbmxpbmUgY29uc3Qg
SGFzaFNldDxTdHJpbmc+JiBpbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0
dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7IH0KK2lubGluZSBjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIGludGxQbHVyYWxSdWxlc0F2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxh
YmxlTG9jYWxlcygpOyB9CitpbmxpbmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsUmVsYXRp
dmVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2Nh
bGVzKCk7IH0KIAogYm9vbCBpbnRsQm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgb3B0aW9ucywgUHJvcGVydHlOYW1lLCBib29sJiB1c2VzRmFsbGJhY2spOwogU3RyaW5nIGlu
dGxTdHJpbmdPcHRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMsIFByb3BlcnR5
TmFtZSwgc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiB2YWx1ZXMsIGNvbnN0IGNo
YXIqIG5vdEZvdW5kLCBjb25zdCBjaGFyKiBmYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAppbmRleCBjMGI2ZTRlYWRlMWFk
MDA0M2MzNWRjOWI2NTkwNmUwZmMxYzVjYTI1Li44NzcxNjAxMjI4NGM4MWFkYzM5MjdjNjMxZDRj
MzU4N2EyMDFhYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUGx1cmFsUnVsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlcy5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIEludGxQbHVyYWxSdWxl
czo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU3RyaW5nIHR5cGVTdHJpbmcgPSBp
bnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInR5cGUiKSwgeyAiY2FyZGluYWwiLCAib3JkaW5hbCIgfSwgInR5cGUgbXVzdCBi
ZSBcImNhcmRpbmFsXCIgb3IgXCJvcmRpbmFsXCIiLCAiY2FyZGluYWwiKTsKKyAgICBTdHJpbmcg
dHlwZVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5w
cm9wZXJ0eU5hbWVzLT50eXBlLCB7ICJjYXJkaW5hbCIsICJvcmRpbmFsIiB9LCAidHlwZSBtdXN0
IGJlIFwiY2FyZGluYWxcIiBvciBcIm9yZGluYWxcIiIsICJjYXJkaW5hbCIpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgbV90eXBlID0gdHlwZVN0cmluZyA9
PSAib3JkaW5hbCIgPyBVUExVUkFMX1RZUEVfT1JESU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJESU5B
TDsKIApAQCAtMjAxLDcgKzIwMSw3IEBAIEpTT2JqZWN0KiBJbnRsUGx1cmFsUnVsZXM6OnJlc29s
dmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAgSlNPYmplY3Qq
IG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc05vbnRyaXZpYWxT
dHJpbmcodm0sIG1fbG9jYWxlKSk7Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidHlwZSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fdHlw
ZSA9PSBVUExVUkFMX1RZUEVfT1JESU5BTCA/ICJvcmRpbmFsIl9zIDogImNhcmRpbmFsIl9zKSk7
CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sIG1fdHlwZSA9PSBVUExVUkFMX1RZUEVfT1JESU5BTCA/ICJvcmRp
bmFsIl9zIDogImNhcmRpbmFsIl9zKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwganNOdW1iZXIo
bV9taW5pbXVtSW50ZWdlckRpZ2l0cykpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJl
cihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051
bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODU2ZmFmMDdhNzdlNWI0OGZjY2NiODgzOWM0MjdkNGY0NDcxMjJmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1h
dC5jcHAKQEAgLTAsMCArMSwzNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKKworI2luY2x1ZGUgIkVy
cm9yLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxPYmpl
Y3QuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0
b3IuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxSZWxhdGl2ZVRpbWVGb3JtYXQpIH07CisK
K25hbWVzcGFjZSBJbnRsUlRGSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHJl
bGV2YW50RXh0ZW5zaW9uS2V5c1sxXSA9IHsgIm51IiB9OworfQorCit2b2lkIEludGxSZWxhdGl2
ZVRpbWVGb3JtYXQ6OlVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3Io
KShVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciogcmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlcikg
Y29uc3QKK3sKKyAgICBpZiAocmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlcikKKyAgICAgICAgdXJl
bGRhdGVmbXRfY2xvc2UocmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlcik7Cit9CisKK3ZvaWQgSW50
bFJlbGF0aXZlVGltZUZvcm1hdDo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJhdG9yKCkoVU51
bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0KSBjb25zdAoreworICAgIGlmIChudW1iZXJGb3JtYXQp
CisgICAgICAgIHVudW1fY2xvc2UobnVtYmVyRm9ybWF0KTsKK30KKwordm9pZCBJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0OjpVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlcjo6b3BlcmF0b3IoKShV
RmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBpdGVyYXRvcikgY29uc3QKK3sKKyAgICBpZiAoaXRlcmF0
b3IpCisgICAgICAgIHVmaWVsZHBvc2l0ZXJfY2xvc2UoaXRlcmF0b3IpOworfQorCitJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0KiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KiBmb3Jt
YXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Pih2
bS5oZWFwKSkgSW50bFJlbGF0aXZlVGltZUZvcm1hdCh2bSwgc3RydWN0dXJlKTsKKyAgICBmb3Jt
YXQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZm9ybWF0OworfQorCitTdHJ1Y3R1
cmUqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bFJlbGF0aXZl
VGltZUZvcm1hdDo6SW50bFJlbGF0aXZlVGltZUZvcm1hdChWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKK30KKwor
dm9pZCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Kj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKK30KKworbmFtZXNwYWNlIEludGxS
VEZJbnRlcm5hbCB7CitzdGF0aWMgVmVjdG9yPFN0cmluZz4gbG9jYWxlRGF0YShjb25zdCBTdHJp
bmcmIGxvY2FsZSwgc2l6ZV90IGtleUluZGV4KQoreworICAgIC8vIFRoZSBpbmRleCBvZiB0aGUg
ZXh0ZW5zaW9uIGtleSAibnUiIGluIHJlbGV2YW50RXh0ZW5zaW9uS2V5cyBpcyAwLgorICAgIEFT
U0VSVF9VTlVTRUQoa2V5SW5kZXgsICFrZXlJbmRleCk7CisgICAgcmV0dXJuIG51bWJlcmluZ1N5
c3RlbXNGb3JMb2NhbGUobG9jYWxlKTsKK30KK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0
MDIvI3NlYy1Jbml0aWFsaXplUmVsYXRpdmVUaW1lRm9ybWF0Cit2b2lkIEludGxSZWxhdGl2ZVRp
bWVGb3JtYXQ6OmluaXRpYWxpemVSZWxhdGl2ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9
IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBsb2NhbGVzKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNPYmplY3QqIG9wdGlvbnM7
CisgICAgaWYgKG9wdGlvbnNWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBvcHRpb25zID0g
Y29uc3RydWN0RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVj
dFN0cnVjdHVyZSgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnNWYWx1
ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworICAgIH0KKworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG9wdDsK
KyAgICBTdHJpbmcgbG9jYWxlTWF0Y2hlciA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0
LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLCB7ICJsb29rdXAiLCAi
YmVzdCBmaXQiIH0sICJsb2NhbGVNYXRjaGVyIG11c3QgYmUgZWl0aGVyIFwibG9va3VwXCIgb3Ig
XCJiZXN0IGZpdFwiIiwgImJlc3QgZml0Iik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKKyAgICBvcHQuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZU1hdGNoZXIu
c3RyaW5nKCksIGxvY2FsZU1hdGNoZXIpOworCisgICAgU3RyaW5nIG51bWJlcmluZ1N5c3RlbSA9
IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVz
LT5udW1iZXJpbmdTeXN0ZW0sIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAoIW51bWJlcmluZ1N5c3RlbS5pc051
bGwoKSkgeworICAgICAgICBpZiAoIWlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJUeXBlKG51bWJl
cmluZ1N5c3RlbSkpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAibnVtYmVyaW5nU3lzdGVtIGlzIG5vdCBhIHdlbGwtZm9ybWVkIG51bWJlcmluZyBz
eXN0ZW0gdmFsdWUiX3MpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IG9wdC5hZGQoIm51Il9zLCBudW1iZXJpbmdTeXN0ZW0pOworICAgIH0KKworICAgIGNvbnN0IEhh
c2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcyA9IGludGxSZWxhdGl2ZVRpbWVGb3JtYXRB
dmFpbGFibGVMb2NhbGVzKCk7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2ZWQg
PSByZXNvbHZlTG9jYWxlKGdsb2JhbE9iamVjdCwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVk
TG9jYWxlcywgb3B0LCBJbnRsUlRGSW50ZXJuYWw6OnJlbGV2YW50RXh0ZW5zaW9uS2V5cywgV1RG
X0FSUkFZX0xFTkdUSChJbnRsUlRGSW50ZXJuYWw6OnJlbGV2YW50RXh0ZW5zaW9uS2V5cyksIElu
dGxSVEZJbnRlcm5hbDo6bG9jYWxlRGF0YSk7CisgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5nZXQo
dm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLnN0cmluZygpKTsKKyAgICBpZiAobV9sb2NhbGUuaXNF
bXB0eSgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gaW5pdGlhbGl6ZSBSZWxhdGl2ZVRpbWVGb3JtYXQgZHVlIHRvIGludmFsaWQgbG9j
YWxlIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fbnVtYmVyaW5nU3lzdGVt
ID0gcmVzb2x2ZWQuZ2V0KCJudSJfcyk7CisgICAgQ1N0cmluZyBkYXRhTG9jYWxlV2l0aEV4dGVu
c2lvbnMgPSBtYWtlU3RyaW5nKHJlc29sdmVkLmdldCgiZGF0YUxvY2FsZSJfcyksICItdS1udS0i
LCBtX251bWJlcmluZ1N5c3RlbSkudXRmOCgpOworCisgICAgU3RyaW5nIHN0eWxlID0gaW50bFN0
cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxl
LCB7ICJsb25nIiwgInNob3J0IiwgIm5hcnJvdyIgfSwgInN0eWxlIG11c3QgYmUgZWl0aGVyIFwi
bG9uZ1wiLCBcInNob3J0XCIsIG9yIFwibmFycm93XCIiLCAibG9uZyIpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKHN0eWxlID09ICJsb25nIikKKyAg
ICAgICAgbV9zdHlsZSA9IFVEQVRfU1RZTEVfTE9ORzsKKyAgICBlbHNlIGlmIChzdHlsZSA9PSAi
c2hvcnQiKQorICAgICAgICBtX3N0eWxlID0gVURBVF9TVFlMRV9TSE9SVDsKKyAgICBlbHNlIGlm
IChzdHlsZSA9PSAibmFycm93IikKKyAgICAgICAgbV9zdHlsZSA9IFVEQVRfU1RZTEVfTkFSUk9X
OworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBTdHJpbmcg
bnVtZXJpYyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5udW1lcmljLCB7ICJhbHdheXMiLCAiYXV0byIgfSwgIm51bWVyaWMgbXVzdCBi
ZSBlaXRoZXIgXCJhbHdheXNcIiBvciBcImF1dG9cIiIsICJhbHdheXMiKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIG1fbnVtZXJpYyA9IChudW1lcmljID09
ICJhbHdheXMiKTsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAg
IG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJG
b3JtYXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBkYXRhTG9j
YWxlV2l0aEV4dGVuc2lvbnMuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisgICAgaWYgKFVO
TElLRUxZKFVfRkFJTFVSRShzdGF0dXMpKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0
Il9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcmVsYXRpdmVEYXRlVGltZUZv
cm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciwgVVJl
bGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJEZWxldGVyPih1cmVsZGF0ZWZtdF9vcGVuKGRhdGFMb2Nh
bGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksIG1fbnVtYmVyRm9ybWF0LmdldCgpLCBtX3N0eWxlLCBV
RElTUENUWF9DQVBJVEFMSVpBVElPTl9GT1JfU1RBTkRBTE9ORSwgJnN0YXR1cykpOworICAgIGlm
IChVTkxJS0VMWShVX0ZBSUxVUkUoc3RhdHVzKSkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFJlbGF0aXZlVGltZUZv
cm1hdCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3N0YXRpYyBBU0NJSUxpdGVy
YWwgc3R5bGVTdHJpbmcoVURhdGVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyU3R5bGUgc3R5bGUp
Cit7CisgICAgc3dpdGNoIChzdHlsZSkgeworICAgIGNhc2UgVURBVF9TVFlMRV9MT05HOgorICAg
ICAgICByZXR1cm4gImxvbmciX3M7CisgICAgY2FzZSBVREFUX1NUWUxFX1NIT1JUOgorICAgICAg
ICByZXR1cm4gInNob3J0Il9zOworICAgIGNhc2UgVURBVF9TVFlMRV9OQVJST1c6CisgICAgICAg
IHJldHVybiAibmFycm93Il9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK3N0YXRpYyBBU0NJSUxpdGVyYWwg
bnVtZXJpY1N0cmluZyhib29sIG51bWVyaWMpCit7CisgICAgcmV0dXJuIG51bWVyaWMgPyAiYWx3
YXlzIl9zIDogImF1dG8iX3M7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMt
aW50bC5yZWxhdGl2ZXRpbWVmb3JtYXQucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucworSlNPYmpl
Y3QqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBKU09iamVjdCogb3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7
CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUsIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgbV9sb2NhbGUpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHN0eWxl
U3RyaW5nKG1fc3R5bGUpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5udW1lcmljLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG51bWVyaWNTdHJpbmcobV9u
dW1lcmljKSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bnVtYmVyaW5nU3lzdGVtLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fbnVtYmVyaW5nU3lzdGVt
KSk7CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9CisKK3N0YXRpYyBTdHJpbmdWaWV3IHNpbmd1bGFy
VW5pdChTdHJpbmdWaWV3IHVuaXQpCit7CisgICAgLy8gUGx1cmFscyBhcmUgYWxsb3dlZCwgYnV0
IHRoYW5rZnVsbHkgdGhleSdyZSBhbGwganVzdCBhIHNpbXBsZSAtcy4KKyAgICByZXR1cm4gdW5p
dC5lbmRzV2l0aCgicyIpID8gdW5pdC5sZWZ0KHVuaXQubGVuZ3RoKCkgLSAxKSA6IHVuaXQ7Cit9
CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtc2luZ3VsYXJyZWxhdGl2ZXRpbWV1
bml0CitzdGF0aWMgT3B0aW9uYWw8VVJlbGF0aXZlRGF0ZVRpbWVVbml0PiByZWxhdGl2ZVRpbWVV
bml0VHlwZShTdHJpbmdWaWV3IHVuaXQpCit7CisgICAgU3RyaW5nVmlldyBzaW5ndWxhciA9IHNp
bmd1bGFyVW5pdCh1bml0KTsKKworICAgIGlmIChzaW5ndWxhciA9PSAic2Vjb25kIikKKyAgICAg
ICAgcmV0dXJuIFVEQVRfUkVMX1VOSVRfU0VDT05EOworICAgIGlmIChzaW5ndWxhciA9PSAibWlu
dXRlIikKKyAgICAgICAgcmV0dXJuIFVEQVRfUkVMX1VOSVRfTUlOVVRFOworICAgIGlmIChzaW5n
dWxhciA9PSAiaG91ciIpCisgICAgICAgIHJldHVybiBVREFUX1JFTF9VTklUX0hPVVI7CisgICAg
aWYgKHNpbmd1bGFyID09ICJkYXkiKQorICAgICAgICByZXR1cm4gVURBVF9SRUxfVU5JVF9EQVk7
CisgICAgaWYgKHNpbmd1bGFyID09ICJ3ZWVrIikKKyAgICAgICAgcmV0dXJuIFVEQVRfUkVMX1VO
SVRfV0VFSzsKKyAgICBpZiAoc2luZ3VsYXIgPT0gIm1vbnRoIikKKyAgICAgICAgcmV0dXJuIFVE
QVRfUkVMX1VOSVRfTU9OVEg7CisgICAgaWYgKHNpbmd1bGFyID09ICJxdWFydGVyIikKKyAgICAg
ICAgcmV0dXJuIFVEQVRfUkVMX1VOSVRfUVVBUlRFUjsKKyAgICBpZiAoc2luZ3VsYXIgPT0gInll
YXIiKQorICAgICAgICByZXR1cm4gVURBVF9SRUxfVU5JVF9ZRUFSOworCisgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKK30KKworU3RyaW5nIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdElu
dGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSwgU3RyaW5n
VmlldyB1bml0KQoreworICAgIEFTU0VSVChtX3JlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIpOwor
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpIHsK
KyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJudW1iZXIgYXJn
dW1lbnQgbXVzdCBiZSBmaW5pdGUiX3MpOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
fQorCisgICAgYXV0byB1bml0VHlwZSA9IHJlbGF0aXZlVGltZVVuaXRUeXBlKHVuaXQpOworICAg
IGlmICghdW5pdFR5cGUpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJ1bml0IGFyZ3VtZW50IGlzIG5vdCBhIHJlY29nbml6ZWQgdW5pdCB0eXBlIl9zKTsK
KyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKworICAgIGF1dG8gZm9ybWF0UmVsYXRp
dmVUaW1lID0gbV9udW1lcmljID8gdXJlbGRhdGVmbXRfZm9ybWF0TnVtZXJpYyA6IHVyZWxkYXRl
Zm10X2Zvcm1hdDsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAg
IFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdCgzMik7CisgICAgYXV0byByZXN1bHRMZW5ndGggPSBm
b3JtYXRSZWxhdGl2ZVRpbWUobV9yZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyLmdldCgpLCB2YWx1
ZSwgdW5pdFR5cGUudmFsdWUoKSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSwgJnN0YXR1
cyk7CisgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgeworICAgICAg
ICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHJlc3VsdC5ncm93KHJlc3VsdExlbmd0
aCk7CisgICAgICAgIGZvcm1hdFJlbGF0aXZlVGltZShtX3JlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0
ZXIuZ2V0KCksIHZhbHVlLCB1bml0VHlwZS52YWx1ZSgpLCByZXN1bHQuZGF0YSgpLCByZXN1bHRM
ZW5ndGgsICZzdGF0dXMpOworICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoVV9GQUlMVVJFKHN0YXR1
cykpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gZm9ybWF0IHJlbGF0aXZlIHRpbWUiX3MpOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5ndGgp
OworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUZvcm1hdFJlbGF0aXZlVGlt
ZQorSlNWYWx1ZSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlLCBTdHJpbmdWaWV3IHVuaXQpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIFN0cmluZyByZXN1bHQgPSBmb3JtYXRJbnRlcm5hbChnbG9iYWxP
YmplY3QsIHZhbHVlLCB1bml0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCByZXN1bHQpOworfQorCisvLyBodHRwczovL3Rj
MzkuZXMvZWNtYTQwMi8jc2VjLUZvcm1hdFJlbGF0aXZlVGltZVRvUGFydHMKK0pTVmFsdWUgSW50
bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBkb3VibGUgdmFsdWUsIFN0cmluZ1ZpZXcgdW5pdCkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgU3RyaW5nIGZvcm1hdHRlZFJlbGF0aXZlVGltZSA9IGZvcm1hdEludGVybmFs
KGdsb2JhbE9iamVjdCwgdmFsdWUsIHVuaXQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBh
dXRvIGl0ZXJhdG9yID0gc3RkOjp1bmlxdWVfcHRyPFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IsIFVG
aWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyPih1ZmllbGRwb3NpdGVyX29wZW4oJnN0YXR1cykp
OworICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CisKKyAgICBkb3VibGUgYWJzVmFsdWUg
PSBzdGQ6OmFicyh2YWx1ZSk7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXIoMzIpOwor
ICAgIGF1dG8gbnVtYmVyTGVuZ3RoID0gdW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMobV9udW1i
ZXJGb3JtYXQuZ2V0KCksIGFic1ZhbHVlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBp
dGVyYXRvci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVS
RkxPV19FUlJPUikgeworICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIGJ1
ZmZlci5ncm93KG51bWJlckxlbmd0aCk7CisgICAgICAgIHVudW1fZm9ybWF0RG91YmxlRm9yRmll
bGRzKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBhYnNWYWx1ZSwgYnVmZmVyLmRhdGEoKSwgbnVtYmVy
TGVuZ3RoLCBpdGVyYXRvci5nZXQoKSwgJnN0YXR1cyk7CisgICAgfQorICAgIGlmIChVX0ZBSUxV
UkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IHJlbGF0aXZlIHRpbWUiX3MpOworCisgICAgYXV0byBm
b3JtYXR0ZWROdW1iZXIgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgbnVtYmVyTGVuZ3RoKTsKKwor
ICAgIEpTQXJyYXkqIHBhcnRzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhD
b250aWd1b3VzKSwgMCk7CisgICAgaWYgKCFwYXJ0cykKKyAgICAgICAgcmV0dXJuIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKKworICAgIEpTU3RyaW5nKiBsaXRl
cmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfcyk7CisKKyAgICAv
LyBXZSBvbmx5IGhhdmUgb25lIGlucHV0IG51bWJlciwgc28gb3VyIHJlbGF0aXZlIHRpbWUgd2ls
bCBoYXZlIGF0IG1vc3Qgb25lIG51bWVyaWMgc3Vic3RyaW5nLAorICAgIC8vIGJ1dCB3ZSBuZWVk
IHRvIGxpc3QgYWxsIG9mIHRoZSBudW1lcmljIHBhcnRzIHNlcGFyYXRlbHkuCisgICAgc2l6ZV90
IG51bWJlckVuZCA9IDA7CisgICAgc2l6ZV90IG51bWJlclN0YXJ0ID0gZm9ybWF0dGVkUmVsYXRp
dmVUaW1lLmZpbmQoZm9ybWF0dGVkTnVtYmVyKTsKKyAgICBpZiAobnVtYmVyU3RhcnQgIT0gbm90
Rm91bmQpIHsKKyAgICAgICAgbnVtYmVyRW5kID0gbnVtYmVyU3RhcnQgKyBudW1iZXJMZW5ndGg7
CisKKyAgICAgICAgLy8gQWRkIGluaXRpYWwgbGl0ZXJhbCBpZiB0aGVyZSBpcyBvbmUuCisgICAg
ICAgIGlmIChudW1iZXJTdGFydCkgeworICAgICAgICAgICAgSlNPYmplY3QqIHBhcnQgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgcGFydC0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBsaXRlcmFsU3RyaW5nKTsKKyAgICAgICAg
ICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUsIGpzU3Vic3Ry
aW5nKHZtLCBmb3JtYXR0ZWRSZWxhdGl2ZVRpbWUsIDAsIG51bWJlclN0YXJ0KSk7CisgICAgICAg
ICAgICBwYXJ0cy0+cHVzaChnbG9iYWxPYmplY3QsIHBhcnQpOworICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIEludGxOdW1i
ZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIGFic1ZhbHVlLCBm
b3JtYXR0ZWROdW1iZXIsIGl0ZXJhdG9yLmdldCgpLCBwYXJ0cywganNTdHJpbmcodm0sIHNpbmd1
bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisgICAgfQorCisgICAgLy8gQWRkIGZpbmFsIGxpdGVyYWwgaWYgdGhlcmUg
aXMgb25lLgorICAgIGF1dG8gc3RyaW5nTGVuZ3RoID0gZm9ybWF0dGVkUmVsYXRpdmVUaW1lLmxl
bmd0aCgpOworICAgIGlmIChudW1iZXJFbmQgIT0gc3RyaW5nTGVuZ3RoKSB7CisgICAgICAgIEpT
T2JqZWN0KiBwYXJ0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBsaXRlcmFsU3Ry
aW5nKTsKKyAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1
ZSwganNTdWJzdHJpbmcodm0sIGZvcm1hdHRlZFJlbGF0aXZlVGltZSwgbnVtYmVyRW5kLCBzdHJp
bmdMZW5ndGggLSBudW1iZXJFbmQpKTsKKyAgICAgICAgcGFydHMtPnB1c2goZ2xvYmFsT2JqZWN0
LCBwYXJ0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICB9
CisKKyAgICByZXR1cm4gcGFydHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFlYjUzOTljOGZhMjlmZTU4ZmU4NmEzNDc2MjZhZTVhNjJjNjRiZjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0LmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSA8dW5pY29kZS91ZmllbGRw
b3NpdGVyLmg+CisjaW5jbHVkZSA8dW5pY29kZS91cmVsZGF0ZWZtdC5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVj
dDsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsK
KworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKiBjZWxsKQorICAgIHsKKyAgICAgICAg
c3RhdGljX2Nhc3Q8SW50bFJlbGF0aXZlVGltZUZvcm1hdCo+KGNlbGwpLT5JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0Ojp+SW50bFJlbGF0aXZlVGltZUZvcm1hdCgpOworICAgIH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZt
LmludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIHN0YXRp
YyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgdm9pZCBpbml0aWFsaXplUmVsYXRp
dmVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9w
dGlvbnMpOworICAgIEpTVmFsdWUgZm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlLCBTdHJp
bmdWaWV3IHVuaXRTdHJpbmcpOworICAgIEpTVmFsdWUgZm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9i
amVjdCosIGRvdWJsZSwgU3RyaW5nVmlldyB1bml0U3RyaW5nKTsKKyAgICBKU09iamVjdCogcmVz
b2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0Kik7CisKK3ByaXZhdGU6CisgICAgSW50bFJlbGF0
aXZlVGltZUZvcm1hdChWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CisKKyAgICBTdHJpbmcgZm9ybWF0SW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUs
IFN0cmluZ1ZpZXcgdW5pdCk7CisKKyAgICBzdHJ1Y3QgVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0
ZXJEZWxldGVyIHsKKyAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVSZWxhdGl2ZURhdGVUaW1lRm9y
bWF0dGVyKikgY29uc3Q7CisgICAgfTsKKyAgICBzdHJ1Y3QgVU51bWJlckZvcm1hdERlbGV0ZXIg
eworICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51bWJlckZvcm1hdCopIGNvbnN0OworICAgIH07
CisgICAgc3RydWN0IFVGaWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyIHsKKyAgICAgICAgdm9p
ZCBvcGVyYXRvcigpKFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqKSBjb25zdDsKKyAgICB9OworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyLCBVUmVsYXRpdmVE
YXRlVGltZUZvcm1hdHRlckRlbGV0ZXI+IG1fcmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+IG1f
bnVtYmVyRm9ybWF0OworCisgICAgU3RyaW5nIG1fbG9jYWxlOworICAgIFN0cmluZyBtX251bWJl
cmluZ1N5c3RlbTsKKyAgICBVRGF0ZVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJTdHlsZSBtX3N0
eWxlIHsgVURBVF9TVFlMRV9MT05HIH07CisgICAgYm9vbCBtX251bWVyaWMgeyB0cnVlIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI2N2ZjYjkwMDExM2M4YjUzZDMxODc5ZTJmZmEwMzhkYzA4MGQyYTAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50
bE9iamVjdC5oIgorI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRl
ICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIkxvb2t1cC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FT
U0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcik7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZv
cm1hdENvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rp
b24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAmcmVsYXRpdmVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3JUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bFJlbGF0aXZlVGltZUZv
cm1hdENvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gcmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0
b3JUYWJsZQorICBzdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCitJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIHJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSkKK3sKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50
bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5p
c2hDcmVhdGlvbih2bSwgcmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKTsKKyAgICByZXR1cm4g
Y29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsSW50bFJlbGF0aXZlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0SW50bFJlbGF0aXZlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
CitJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OkludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlLCBjYWxsSW50bFJlbGF0aXZlVGltZUZvcm1hdCwgY29uc3RydWN0SW50bFJl
bGF0aXZlVGltZUZvcm1hdCkKK3sKK30KKwordm9pZCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFBy
b3RvdHlwZSogcmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtLCAiUmVsYXRpdmVUaW1lRm9ybWF0Il9zLCBOYW1lQWRkaXRpb25Nb2RlOjpX
aXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcmVsYXRpdmVUaW1lRm9ybWF0UHJv
dG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MCksIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CisgICAgcmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKK30KKworLy8g
aHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLlJlbGF0aXZlVGltZUZvcm1hdAorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bFJlbGF0aXZlVGlt
ZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+anNDYWxsZWUoKSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPnJl
bGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZSh2bSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqIHJl
bGF0aXZlVGltZUZvcm1hdCA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwgc3Ry
dWN0dXJlKTsKKyAgICBBU1NFUlQocmVsYXRpdmVUaW1lRm9ybWF0KTsKKworICAgIHNjb3BlLnJl
bGVhc2UoKTsKKyAgICByZWxhdGl2ZVRpbWVGb3JtYXQtPmluaXRpYWxpemVSZWxhdGl2ZVRpbWVG
b3JtYXQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlbGF0aXZlVGltZUZvcm1h
dCk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSop
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiUmVsYXRpdmVUaW1lRm9ybWF0IikpOworfQorCisvLyBodHRwczovL3RjMzku
ZXMvZWNtYTQwMi8jc2VjLUludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNP
ZgorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29u
c3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMgPSBpbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOworCisgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVk
TG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHN1cHBvcnRlZExvY2FsZXMoZ2xvYmFsT2JqZWN0LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0
ZWRMb2NhbGVzLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSkpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I3YmQw
OTAwM2ZlOGJlYzI3OTJjNDU4NGVlMjg0NTgxZTc3Mjg4OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlw
ZTsKKworY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yIGZpbmFsIDogcHVi
bGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5j
dGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBz
dGF0aWMgSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1
Y3R1cmUqLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
KworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIFN0cnVjdHVyZSogcmVsYXRpdmVUaW1lRm9ybWF0
U3RydWN0dXJlKFZNJikgY29uc3QgeyByZXR1cm4gZ2xvYmFsT2JqZWN0KCktPnJlbGF0aXZlVGlt
ZUZvcm1hdFN0cnVjdHVyZSgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSopOworCitwcml2YXRlOgor
ICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwor
fTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxSZWxhdGl2ZVRpbWVG
b3JtYXRDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZl
VGltZUZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZGI1ZTVhNGQy
MmQzOTMyODVhNDY3NGVhMTMwZjczYTMxZTAxMjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKworI2luY2x1
ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxhdGl2
ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CisKK30KKworI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90
b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bFJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNf
aW5mbywgJnJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUpIH07CisKKy8qIFNv
dXJjZSBmb3IgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaAorQGJlZ2luIHJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZVRhYmxlCisgIGZvcm1hdCAgICAgICAgICAgSW50bFJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXQgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDIKKyAgZm9ybWF0VG9QYXJ0cyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90
eXBlRnVuY0Zvcm1hdFRvUGFydHMgICAgRG9udEVudW18RnVuY3Rpb24gMgorICByZXNvbHZlZE9w
dGlvbnMgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25z
ICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
UHJvdG90eXBlKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJv
dG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0UHJvdG90eXBlPih2bS5oZWFwKSkgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlw
ZTo6SW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCJfcyksIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Cit9CisKKy8vIGh0dHBzOi8v
dGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZv
cm1hdAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
UHJvdG90eXBlRnVuY0Zvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSW50bFJlbGF0aXZl
VGltZUZvcm1hdCogcmVsYXRpdmVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcmVs
YXRpdmVUaW1lRm9ybWF0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIFJlbGF0aXZlVGltZUZvcm1hdCJfcykpOworCisgICAgZG91YmxlIHZhbHVlID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgU3RyaW5nIHVu
aXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZWxhdGl2ZVRpbWVGb3Jt
YXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIHZhbHVlLCB1bml0KSkpOworfQorCisvLyBodHRwczov
L3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5m
b3JtYXRUb1BhcnRzCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxhdGl2ZVRp
bWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdCogcmVsYXRpdmVUaW1lRm9ybWF0ID0ganNEeW5hbWlj
Q2FzdDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghcmVsYXRpdmVUaW1lRm9ybWF0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBSZWxhdGl2ZVRpbWVGb3JtYXQiX3MpKTsK
KworICAgIGRvdWJsZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoZ2xv
YmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKKworICAgIFN0cmluZyB1bml0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1dURlN0
cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUocmVsYXRpdmVUaW1lRm9ybWF0LT5mb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgdmFs
dWUsIHVuaXQpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtaW50bC5y
ZWxhdGl2ZXRpbWVmb3JtYXQucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29s
dmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1h
dCogcmVsYXRpdmVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcmVsYXRpdmVUaW1l
Rm9ybWF0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUucmVz
b2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIFJlbGF0aXZlVGltZUZvcm1hdCJfcykpOworCisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVsYXRpdmVUaW1lRm9ybWF0LT5yZXNvbHZlZE9w
dGlvbnMoZ2xvYmFsT2JqZWN0KSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQ
cm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXRQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jY2JhZWE4ZTc1YTQ4MTI4ODA4MmI1OTA4
MGEwYWVkY2VlNTA3MzU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5t
ZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVjdC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3Rv
dHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0
eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
PgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdFByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVf
SU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJp
dmF0ZToKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKFZNJiwgU3RydWN0dXJl
Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA3NjRlMTAwNTM1OGQxOWU5ZTk2ZTM5
OTBjOTIzNTYzN2M2ZDBlM2FmLi4xOWE0OGZiOTMwYzViZjBmMzU1MWUzZjM0NmQ2NGM4NzU2ZTQ1
NjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC04Niw2ICs4Niw4IEBACiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1
ZGUgIkludGxQbHVyYWxSdWxlcy5oIgogI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZS5oIgorI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSXRlcmF0b3JQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKICNpbmNsdWRlICJKU0FycmF5
QnVmZmVyLmgiCkBAIC05NTksNiArOTYxLDEyIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9y
KiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAg
ICAgICAgICAgICBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIHBsdXJhbFJ1bGVzUHJvdG90eXBl
ID0gSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0
LCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKICAgICAgICAgICAg
IGluaXQuc2V0KEludGxQbHVyYWxSdWxlczo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2Jh
bE9iamVjdCwgcGx1cmFsUnVsZXNQcm90b3R5cGUpKTsKICAgICAgICAgfSk7CisgICAgbV9yZWxh
dGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICBbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOworICAg
ICAgICAgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSogcmVsYXRpdmVUaW1lRm9y
bWF0UHJvdG90eXBlID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKGlu
aXQudm0sIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShp
bml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsK
KyAgICAgICAgICAgIGluaXQuc2V0KEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmNyZWF0ZVN0cnVj
dHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIHJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSkp
OworICAgICAgICB9KTsKICAgICBtX2RlZmF1bHRDb2xsYXRvci5pbml0TGF0ZXIoCiAgICAgICAg
IFtdIChjb25zdCBJbml0aWFsaXplcjxJbnRsQ29sbGF0b3I+JiBpbml0KSB7CiAgICAgICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lcik7CkBAIC05NzAsNyArOTc4LDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0
b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUK
ICAgICAgICAgICAgIGluaXQuc2V0KGNvbGxhdG9yKTsKICAgICAgICAgfSk7CiAKLSAgICBJbnRs
T2JqZWN0KiBpbnRsID0gSW50bE9iamVjdDo6Y3JlYXRlKHZtLCBJbnRsT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CisgICAgSW50bE9i
amVjdCogaW50bCA9IEludGxPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgSW50bE9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5JbnRsLCBpbnRs
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAK
ICAgICBtX21vZHVsZUxvYWRlci5pbml0TGF0ZXIoCkBAIC0xNzY5LDYgKzE3NzcsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUudmlzaXQo
dmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS52aXNp
dCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3BsdXJhbFJ1bGVzU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1fcmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxs
R2V0dGVyRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVsbFNl
dHRlckZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IGIzN2I4YWU2Y2M5ZTZmZWNkZDFlNjI5NDU2YWJjYzQ1ZDM3NDE1MmUu
LmEwYzNiNGFhZjAwMDQ2ZDJkOTQxNmI0OTBiYTYyNTI0NGQ5OGYzNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjk0LDYgKzI5NCw3
IEBAIHB1YmxpYzoKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4g
bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmU+IG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5
PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmU7CisgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcmVsYXRpdmVUaW1lRm9y
bWF0U3RydWN0dXJlOwogCiAgICAgV3JpdGVCYXJyaWVyPE51bGxHZXR0ZXJGdW5jdGlvbj4gbV9u
dWxsR2V0dGVyRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPE51bGxTZXR0ZXJGdW5jdGlvbj4g
bV9udWxsU2V0dGVyRnVuY3Rpb247CkBAIC03ODgsNiArNzg5LDcgQEAgcHVibGljOgogICAgIFN0
cnVjdHVyZSogbnVtYmVyRm9ybWF0U3RydWN0dXJlKCkgeyByZXR1cm4gbV9udW1iZXJGb3JtYXRT
dHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVj
dHVyZSgpIHsgcmV0dXJuIG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAg
ICAgU3RydWN0dXJlKiBwbHVyYWxSdWxlc1N0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGx1cmFsUnVs
ZXNTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiByZWxhdGl2ZVRpbWVGb3Jt
YXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3JlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZS5nZXQo
dGhpcyk7IH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UmVtb3RlRGVidWdnaW5n
RW5hYmxlZChib29sKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHJlbW90ZURlYnVnZ2lu
Z0VuYWJsZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
TGlzdC5oCmluZGV4IGJkZmJmNGM3ZTFjOTk4MTk4ODlhODdhMDg0YWY1MTcxZTcxZDg1NDIuLmIz
ZjE1NjZiM2UwNmRlNzBmYmZiODkwNTdmNzFlMWNkNzJhZTNhMTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNDg0LDYgKzQ4NCw3IEBAIGNvbnN0
ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihC
b29sLCB1c2VXZWJBc3NlbWJseU11bHRpVmFsdWVzLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0eXBl
cyBmcm9tIHRoZSB3YXNtIG11bGl0LXZhbHVlcyBzcGVjLiIpIFwKICAgICB2KEJvb2wsIHVzZVdl
YWtSZWZzLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBXZWFrUmVmIGNvbnN0cnVjdG9yLiIp
IFwKICAgICB2KEJvb2wsIHVzZUJpZ0ludCwgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdp
bGwgZW5hYmxlIEJpZ0ludCBzdXBwb3J0LiIpIFwKKyAgICB2KEJvb2wsIHVzZUludGxSZWxhdGl2
ZVRpbWVGb3JtYXQsIGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0IGNvbnN0cnVjdG9yLiIpIFwKICAgICB2KEJvb2wsIHVzZUFycmF5QWxsb2NhdGlvblBy
b2ZpbGluZywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCB1c2Ugb3VyIG5vcm1hbCBh
cnJheSBhbGxvY2F0aW9uIHByb2ZpbGluZy4gSWYgZmFsc2UsIHRoZSBhbGxvY2F0aW9uIHByb2Zp
bGUgd2lsbCBhbHdheXMgY2xhaW0gdG8gYmUgdW5kZWNpZGVkLiIpIFwKICAgICB2KEJvb2wsIGZv
cmNlUG9seVByb3RvLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgY3JlYXRlX3RoaXMgd2lsbCBh
bHdheXMgY3JlYXRlIGFuIG9iamVjdCB3aXRoIGEgcG9seSBwcm90byBzdHJ1Y3R1cmUuIikgXAog
ICAgIHYoQm9vbCwgZm9yY2VNaW5pVk1Nb2RlLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgaXQg
d2lsbCBmb3JjZSBtaW5pIFZNIG1vZGUgb24uIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IDVjMGVlMjYxMzc3NmU5NjBmNDg3ODZiYjlhZmY3OTA1YzkxNDdhZDMuLjE2
MmU5OWRlZDNlYjAxYjIyNzAyNWE4MjJlMDYzMmIyMWM4NjFkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTc3LDYgKzc3LDcgQEAKICNpbmNsdWRlICJJbnRsRGF0ZVRp
bWVGb3JtYXQuaCIKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCiAjaW5jbHVkZSAiSW50
bFBsdXJhbFJ1bGVzLmgiCisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgogI2lu
Y2x1ZGUgIklzb0hlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIklzb0lubGluZWRIZWFwQ2VsbFR5
cGUuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCkBAIC0zNDAsNiArMzQxLDcgQEAgVk06OlZNKFZN
VHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgaW50bERhdGVUaW1lRm9ybWF0
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxEYXRlVGltZUZvcm1hdD4o
KSkKICAgICAsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SW50bE51bWJlckZvcm1hdD4oKSkKICAgICAsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsUGx1cmFsUnVsZXM+KCkpCisgICAgLCBp
bnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ+KCkpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAg
ICwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVh
dGU8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKSkKICAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25I
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8V2ViQXNzZW1ibHlGdW5jdGlvbj4o
KSkKQEAgLTE1MTEsNiArMTUxMyw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhpbnRsQ29sbGF0b3JTcGFjZSwgaW50bENvbGxhdG9ySGVhcENlbGxUCiBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERhdGVUaW1lRm9ybWF0U3BhY2Us
IGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERhdGVUaW1lRm9ybWF0
KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxOdW1iZXJGb3Jt
YXRTcGFjZSwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bE51bWJlckZv
cm1hdCkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUGx1cmFs
UnVsZXNTcGFjZSwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlLmdldCgpLCBJbnRsUGx1cmFs
UnVsZXMpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFJlbGF0
aXZlVGltZUZvcm1hdFNwYWNlLCBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLmdl
dCgpLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVG9XYXNtSUNDYWxsZWUpCiBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwg
d2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2spIC8vIEhhc2g6MHg5YWQ5OTVjZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggMTI4NjJhNDBjZTBlMDE0YWZhYzU0M2NiZGIzOTc1NmI0ZjExZGQ3Mi4uNTI5MjkzM2MxM2Rh
ZmFjN2U2MWFiOGM1Nzg0YWVjNTAxNmIzMGIyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCkBAIC0xMjgsNiArMTI4LDcgQEAgY2xhc3MgSW50bENvbGxhdG9yOwogY2xhc3MgSW50bERh
dGVUaW1lRm9ybWF0OwogY2xhc3MgSW50bE51bWJlckZvcm1hdDsKIGNsYXNzIEludGxQbHVyYWxS
dWxlczsKK2NsYXNzIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ7CiBjbGFzcyBKU0FQSUdsb2JhbE9i
amVjdDsKIGNsYXNzIEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdDsKIGNsYXNzIEpTQVBJV3JhcHBl
ck9iamVjdDsKQEAgLTQwMSw2ICs0MDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5
cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFBsdXJhbFJ1bGVz
SGVhcENlbGxUeXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5Q29kZUJsb2Nr
SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFz
c2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU7CkBAIC01NTcsNiArNTU5LDcgQEAgcHVibGljOgog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bERhdGVUaW1lRm9ybWF0
U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsTnVtYmVy
Rm9ybWF0U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRs
UGx1cmFsUnVsZXNTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc1RvV2FzbUlDQ2FsbGVlU3Bh
Y2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUNv
ZGVCbG9ja1NwYWNlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDI4NmI5ZWQ2YjRjZGUxOTAyODViZDM3NmRiNTI3MjYxYWEzYTA2NjEuLjg3OTg4
NDZhMGQwYmZiM2EyZTg4MDNiMzI0MGY1MjdmNzk4ZGQ4ODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNC0x
OCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW0VD
TUEtNDAyXSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBtaXNzaW5nIGluIFdlYktpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NzcwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1q
c2Mtc3RyZXNzLXRlc3RzOgorICAgICAgICBBZGQgcnVuSW50bFJlbGF0aXZlVGltZUZvcm1hdEVu
YWJsZWQuCisKIDIwMjAtMDQtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIEZpeCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSB2cyBDb250ZW50V29y
bGQgbGlmZXRpbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVz
dHMgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IGIwNTc5OTNjOTdm
MTI4MDk2MGNkODQzNGZmMDZkMGE0MjkwMTQ0ODAuLjIyMWEwYmFlMTAzYmI3NTJjNzVmYWZlMzE0
MGFjY2Y1OTMzMzZhYzMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3Mt
dGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtNzEwLDYg
KzcxMCwxMCBAQCBkZWYgcnVuQmlnSW50RW5hYmxlZEJhc2VsaW5lKCpvcHRpb25hbFRlc3RTcGVj
aWZpY09wdGlvbnMpCiAgICAgcnVuKCJiaWctaW50LWVuYWJsZWQtYmFzZWxpbmUiLCAiLS11c2VC
aWdJbnQ9dHJ1ZSIsICItLXVzZURGR0pJVD0wIiwgKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9u
cykKIGVuZAogCitkZWYgcnVuSW50bFJlbGF0aXZlVGltZUZvcm1hdEVuYWJsZWQoKm9wdGlvbmFs
VGVzdFNwZWNpZmljT3B0aW9ucykKKyAgICBydW4oImludGwtcmVsYXRpdmV0aW1lZm9ybWF0LWVu
YWJsZWQiLCAiLS11c2VJbnRsUmVsYXRpdmVUaW1lRm9ybWF0PXRydWUiICwgKihGVExfT1BUSU9O
UyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCitlbmQKKwogZGVmIHJ1bkZUTE5vQ0pJ
VCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQogICAgIHJ1bigibWlzYy1mdGwtbm8tY2pp
dCIsICooRlRMX09QVElPTlMgKyBOT19DSklUX09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZp
Y09wdGlvbnMpKQogZW5kCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDYzY2ViOTMwYzM0NTQ1MmY3NjVjNGM0ZDZlMTMwMWMzMjhkOWVlNjEu
LjI1NjRmOTdkZTE5MjUwNGJjOWVlOTllMjcyYWQzZDgxNTNiYWU3YjAgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMjAtMDQtMTggIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisg
ICAgICAgIFtFQ01BLTQwMl0gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQgbWlzc2luZyBpbiBXZWJL
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3Ry
ZXNzL2ludGwtcmVsYXRpdmV0aW1lZm9ybWF0LmpzOiBBZGRlZC4KKworICAgICAgICAqIHRlc3Qy
NjIvY29uZmlnLnlhbWw6CisgICAgICAgIEVuYWJsZSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBm
ZWF0dXJlIHdpdGggZmxhZy4KKworICAgICAgICAqIHRlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWw6
CisgICAgICAgIE1hcmsga25vd24gZmFpbHVyZXMuCisgICAgICAgIFRlc3QgZm9yIGxvY2FsZSB2
YWxpZGF0aW9uIGlzIG5vdCBzcGVjaWZpYyB0byBSZWxhdGl2ZVRpbWVGb3JtYXQgYW5kIHNob3Vs
ZCBiZSBpbnZlc3RpZ2F0ZWQgc2VwYXJhdGVseS4KKyAgICAgICAgVGVzdHMgZm9yIFBvbGlzaCBh
cHBlYXIgdG8gYmUgd3JvbmcgYW5kIHNob3VsZCBiZSBjb3JyZWN0ZWQgaW4gdGVzdDI2Mi4KKwog
MjAyMC0wNC0xOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCBtYXJrIHRlc3QgcGFzc2luZy4KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2ludGwtcmVsYXRpdmV0aW1lZm9ybWF0LmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1y
ZWxhdGl2ZXRpbWVmb3JtYXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzcxNWY0NDVkMGY2NWZkNzE2MjllOGYw
NjQwN2MzOTdhMzAxNDA2OAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwt
cmVsYXRpdmV0aW1lZm9ybWF0LmpzCkBAIC0wLDAgKzEsMjUzIEBACisvL0AgcnVuSW50bFJlbGF0
aXZlVGltZUZvcm1hdEVuYWJsZWQKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZE5vdFRocm93KGZ1bmMpIHsKKyAgICBmdW5jKCk7Cit9CisKK2Z1bmN0aW9uIHNo
b3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSkgeworICAgIGxldCBlcnJvcjsKKyAgICB0cnkgewor
ICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7Cisg
ICAgfQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9IWApOworfQorCitzaG91
bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBpbnN0YW5jZW9mIEZ1bmN0aW9uLCB0cnVlKTsK
K3Nob3VsZEJlKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0Lmxlbmd0aCwgMCk7CitzaG91bGRCZShP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LCAn
cHJvdG90eXBlJykud3JpdGFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQsICdwcm90b3R5cGUnKS5lbnVt
ZXJhYmxlLCBmYWxzZSk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlLCBmYWxz
ZSk7CisKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCksIFR5cGVF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5jYWxsKHt9
KSwgVHlwZUVycm9yKTsKKworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0KCckJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuUmVs
YXRpdmVUaW1lRm9ybWF0KCdlbicsIG51bGwpLCBUeXBlRXJyb3IpOworCitzaG91bGRCZShuZXcg
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoKSBpbnN0YW5jZW9mIEludGwuUmVsYXRpdmVUaW1lRm9y
bWF0LCB0cnVlKTsKKworeworICAgIGNsYXNzIERlcml2ZWRSZWxhdGl2ZVRpbWVGb3JtYXQgZXh0
ZW5kcyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCB7fQorCisgICAgY29uc3QgZHJ0ZiA9IG5ldyBE
ZXJpdmVkUmVsYXRpdmVUaW1lRm9ybWF0KCk7CisgICAgc2hvdWxkQmUoZHJ0ZiBpbnN0YW5jZW9m
IERlcml2ZWRSZWxhdGl2ZVRpbWVGb3JtYXQsIHRydWUpOworICAgIHNob3VsZEJlKGRydGYgaW5z
dGFuY2VvZiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoZHJ0
Zi5mb3JtYXQsIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQpOworICAg
IHNob3VsZEJlKGRydGYuZm9ybWF0VG9QYXJ0cywgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJv
dG90eXBlLmZvcm1hdFRvUGFydHMpOworICAgIHNob3VsZEJlKE9iamVjdC5nZXRQcm90b3R5cGVP
ZihkcnRmKSwgRGVyaXZlZFJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUpOworICAgIHNob3Vs
ZEJlKE9iamVjdC5nZXRQcm90b3R5cGVPZihEZXJpdmVkUmVsYXRpdmVUaW1lRm9ybWF0LnByb3Rv
dHlwZSksIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZSk7Cit9CisKK3Nob3VsZEJl
KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZi5sZW5ndGgsIDEpOwor
c2hvdWxkQmUoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCkgaW5z
dGFuY2VvZiBBcnJheSwgdHJ1ZSk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0
aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YuY2FsbChudWxsLCAnZW4nKSksICdbImVu
Il0nKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1
cHBvcnRlZExvY2FsZXNPZi5jYWxsKHt9LCAnZW4nKSksICdbImVuIl0nKTsKK3Nob3VsZEJlKEpT
T04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZi5j
YWxsKDEsICdlbicpKSwgJ1siZW4iXScpOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5S
ZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKDkpKSwgJ1tdJyk7CitzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVz
T2YoJ2VuJykpLCAnWyJlbiJdJyk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0
aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoeyBsZW5ndGg6IDQsIDE6ICdlbicsIDA6
ICdlcycsIDM6ICdkZScgfSkpLCAnWyJlcyIsImVuIiwiZGUiXScpOworc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKFsnZW4n
LCAncHQnLCAnZW4nLCAnZXMnXSkpLCAnWyJlbiIsInB0IiwiZXMiXScpOworc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdF
bi1sYVRuLXVzLXZhcmlhbnQyLXZhcmlhbnQxLTFhYmMtVS1rby10UnVlLUEtYWEtYWFhLXgtUkVT
RVJWRUQnKSksICdbImVuLUxhdG4tVVMtdmFyaWFudDItdmFyaWFudDEtMWFiYy1hLWFhLWFhYS11
LWtvLXgtcmVzZXJ2ZWQiXScpOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5SZWxhdGl2
ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCduby1ib2snKSksICdbIm5iIl0nKTsKK3No
b3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExv
Y2FsZXNPZigneC1zb21lLXRoaW5nJykpLCAnW10nKTsKKworc2hvdWxkVGhyb3coKCkgPT4gSW50
bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKE9iamVjdC5jcmVhdGUobnVs
bCwgeyBsZW5ndGg6IHsgZ2V0KCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9IH0pKSwgRXJyb3Ip
Oworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9j
YWxlc09mKE9iamVjdC5jcmVhdGUobnVsbCwgeyBsZW5ndGg6IHsgdmFsdWU6IDEgfSwgMDogeyBn
ZXQoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH0gfSkpLCBFcnJvcik7CitzaG91bGRUaHJvdygo
KSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoW3sgdG9TdHJp
bmcoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH1dKSwgRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKFs1XSksIFR5cGVF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0
ZWRMb2NhbGVzT2YoJycpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVs
YXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZignYScpLCBSYW5nZUVycm9yKTsKK3No
b3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNP
ZignYWJjZGVmZ2hpaicpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVs
YXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZignIyQnKSwgUmFuZ2VFcnJvcik7Citz
aG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVz
T2YoJ2VuLUAtYWJjJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxh
dGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdlbi11JyksIFJhbmdlRXJyb3IpOwor
c2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxl
c09mKCdlbi11LWtuLXRydWUtdS1rby10cnVlJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3co
KCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdlbi14Jyks
IFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQu
c3VwcG9ydGVkTG9jYWxlc09mKCdlbi0qJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdlbi0nKSwgUmFu
Z2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBw
b3J0ZWRMb2NhbGVzT2YoJ2VuLS1VUycpLCBSYW5nZUVycm9yKTsKKworY29uc3QgdmFsaWRMYW5n
dWFnZVRhZ3MgPSBbCisgICAgJ2RlJywgLy8gSVNPIDYzOSBsYW5ndWFnZSBjb2RlCisgICAgJ2Rl
LURFJywgLy8gKyBJU08gMzE2Ni0xIGNvdW50cnkgY29kZQorICAgICdERS1kZScsIC8vIHRhZ3Mg
YXJlIGNhc2UtaW5zZW5zaXRpdmUKKyAgICAnY21uJywgLy8gSVNPIDYzOSBsYW5ndWFnZSBjb2Rl
CisgICAgJ2Ntbi1IYW5zJywgLy8gKyBzY3JpcHQgY29kZQorICAgICdDTU4taEFOUycsIC8vIHRh
Z3MgYXJlIGNhc2UtaW5zZW5zaXRpdmUKKyAgICAnY21uLWhhbnMtY24nLCAvLyArIElTTyAzMTY2
LTEgY291bnRyeSBjb2RlCisgICAgJ2VzLTQxOScsIC8vICsgVU4gTS40OSByZWdpb24gY29kZQor
ICAgICdlcy00MTktdS1udS1sYXRuLWN1LWJvYicsIC8vICsgVW5pY29kZSBsb2NhbGUgZXh0ZW5z
aW9uIHNlcXVlbmNlCisgICAgJ2kta2xpbmdvbicsIC8vIGdyYW5kZmF0aGVyZWQgdGFnCisgICAg
J2Ntbi1oYW5zLWNuLXQtY2EtdS1jYS14LXQtdScsIC8vIHNpbmdsZXRvbiBzdWJ0YWdzIGNhbiBh
bHNvIGJlIHVzZWQgYXMgcHJpdmF0ZSB1c2Ugc3VidGFncworICAgICdlbm9jaGlhbi1lbm9jaGlh
bicsIC8vIGxhbmd1YWdlIGFuZCB2YXJpYW50IHN1YnRhZ3MgbWF5IGJlIHRoZSBzYW1lCisgICAg
J2RlLWdyZWdvcnktdS1jYS1ncmVnb3J5JywgLy8gdmFyaWFudCBhbmQgZXh0ZW5zaW9uIHN1YnRh
Z3MgbWF5IGJlIHRoZSBzYW1lCisgICAgJ2FhLWEtZm9vLXgtYS1mb28tYmFyJywgLy8gdmFyaWFu
dCBzdWJ0YWdzIGNhbiBhbHNvIGJlIHVzZWQgYXMgcHJpdmF0ZSB1c2Ugc3VidGFncworICAgICd4
LWVuLVVTLTEyMzQ1JywgLy8gYW55dGhpbmcgZ29lcyBpbiBwcml2YXRlIHVzZSB0YWdzCisgICAg
J3gtMTIzNDUtMTIzNDUtZW4tVVMnLAorICAgICd4LWVuLVVTLTEyMzQ1LTEyMzQ1JywKKyAgICAn
eC1lbi11LWZvbycsCisgICAgJ3gtZW4tdS1mb28tdS1iYXInCitdOworZm9yIChsZXQgdmFsaWRM
YW5ndWFnZVRhZyBvZiB2YWxpZExhbmd1YWdlVGFncykKKyAgICBzaG91bGROb3RUaHJvdygoKSA9
PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YodmFsaWRMYW5ndWFn
ZVRhZykpOworCitzaG91bGRCZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQucHJvdG90eXBlKSwgT2JqZWN0LnByb3RvdHlwZSk7CisKK3Nob3VsZEJlKEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQpOworCitzaG91bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGVb
U3ltYm9sLnRvU3RyaW5nVGFnXSwgJ0ludGwuUmVsYXRpdmVUaW1lRm9ybWF0Jyk7CitzaG91bGRC
ZShPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQu
cHJvdG90eXBlKSwgJ1tvYmplY3QgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXRdJyk7CitzaG91bGRC
ZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0
LnByb3RvdHlwZSwgU3ltYm9sLnRvU3RyaW5nVGFnKS53cml0YWJsZSwgZmFsc2UpOworc2hvdWxk
QmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLlJlbGF0aXZlVGltZUZvcm1h
dC5wcm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZykuZW51bWVyYWJsZSwgZmFsc2UpOworc2hv
dWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLlJlbGF0aXZlVGltZUZv
cm1hdC5wcm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZykuY29uZmlndXJhYmxlLCB0cnVlKTsK
Kworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsg
bG9jYWxlTWF0Y2hlcjogeyB0b1N0cmluZygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSB9KSwg
RXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdl
bicsIHsgbG9jYWxlTWF0Y2hlcjonYmFkJyB9KSwgUmFuZ2VFcnJvcik7CitzaG91bGROb3RUaHJv
dygoKSA9PiBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBsb2NhbGVNYXRjaGVy
Oidsb29rdXAnIH0pKTsKK3Nob3VsZE5vdFRocm93KCgpID0+IG5ldyBJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdCgnZW4nLCB7IGxvY2FsZU1hdGNoZXI6J2Jlc3QgZml0JyB9KSk7CisKK2NvbnN0IGRl
ZmF1bHRSVEYgPSBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJyk7CisKK3Nob3VsZEJl
KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMubGVuZ3Ro
LCAwKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlw
ZS5yZXNvbHZlZE9wdGlvbnMuY2FsbCg1KSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+
IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMuY2FsbCh7
fSksIFR5cGVFcnJvcik7CitzaG91bGRCZShkZWZhdWx0UlRGLnJlc29sdmVkT3B0aW9ucygpIGlu
c3RhbmNlb2YgT2JqZWN0LCB0cnVlKTsKK3Nob3VsZEJlKGRlZmF1bHRSVEYucmVzb2x2ZWRPcHRp
b25zKCkgIT09IGRlZmF1bHRSVEYucmVzb2x2ZWRPcHRpb25zKCksIHRydWUpOworc2hvdWxkQmUo
ZGVmYXVsdFJURi5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUsICdlbicpOworc2hvdWxkQmUoZGVm
YXVsdFJURi5yZXNvbHZlZE9wdGlvbnMoKS5zdHlsZSwgJ2xvbmcnKTsKK3Nob3VsZEJlKGRlZmF1
bHRSVEYucmVzb2x2ZWRPcHRpb25zKCkubnVtZXJpYywgJ2Fsd2F5cycpOworc2hvdWxkQmUoZGVm
YXVsdFJURi5yZXNvbHZlZE9wdGlvbnMoKS5udW1iZXJpbmdTeXN0ZW0sICdsYXRuJyk7CisKK3No
b3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4tdS1udS1oYW5pZGVjJykucmVz
b2x2ZWRPcHRpb25zKCkubG9jYWxlLCAnZW4tdS1udS1oYW5pZGVjJyk7CitzaG91bGRCZShuZXcg
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuLXUtbnUtaGFuaWRlYycsIHsgbnVtYmVyaW5nU3lz
dGVtOiAnZ3VqcicgfSkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLCAnZW4nKTsKK3Nob3VsZEJl
KG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4nLCB7IG51bWJlcmluZ1N5c3RlbTogJ2hh
bmlkZWMnIH0pLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZSwgJ2VuJyk7CitzaG91bGRCZShuZXcg
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuLXUtY2EtY2hpbmVzZScpLnJlc29sdmVkT3B0aW9u
cygpLmxvY2FsZSwgJ2VuJyk7CisKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdCgnZW4nLCB7IHN0eWxlOiB7IHRvU3RyaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3Io
KTsgfSB9IH0pLCBFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQoJ2VuJywgeyBzdHlsZTogJ2JhZCcgfSksIFJhbmdlRXJyb3IpOworc2hvdWxkQmUo
bmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgc3R5bGU6ICdsb25nJyB9KS5yZXNv
bHZlZE9wdGlvbnMoKS5zdHlsZSwgJ2xvbmcnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdCgnZW4nLCB7IHN0eWxlOiAnc2hvcnQnIH0pLnJlc29sdmVkT3B0aW9ucygpLnN0
eWxlLCAnc2hvcnQnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4n
LCB7IHN0eWxlOiAnbmFycm93JyB9KS5yZXNvbHZlZE9wdGlvbnMoKS5zdHlsZSwgJ25hcnJvdycp
OworCitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywg
eyBudW1lcmljOiB7IHRvU3RyaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9IH0pLCBFcnJv
cik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywg
eyBudW1lcmljOiAnYmFkJyB9KSwgUmFuZ2VFcnJvcik7CitzaG91bGRCZShuZXcgSW50bC5SZWxh
dGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBudW1lcmljOiAnYWx3YXlzJyB9KS5yZXNvbHZlZE9wdGlv
bnMoKS5udW1lcmljLCAnYWx3YXlzJyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVG
b3JtYXQoJ2VuJywgeyBudW1lcmljOiAnYXV0bycgfSkucmVzb2x2ZWRPcHRpb25zKCkubnVtZXJp
YywgJ2F1dG8nKTsKKworY29uc3QgbnVtYmVyaW5nU3lzdGVtcyA9IFsKKyAgICAnYXJhYicsICdh
cmFiZXh0JywgJ2JhbGknLCAnYmVuZycsICdkZXZhJywgJ2Z1bGx3aWRlJywgJ2d1anInLCAnZ3Vy
dScsCisgICAgJ2hhbmlkZWMnLCAna2htcicsICdrbmRhJywgJ2xhb28nLCAnbGF0bicsICdsaW1i
JywgJ21seW0nLCAnbW9uZycsICdteW1yJywKKyAgICAnb3J5YScsICd0YW1sZGVjJywgJ3RlbHUn
LCAndGhhaScsICd0aWJ0JworXQorZm9yIChsZXQgbnVtYmVyaW5nU3lzdGVtIG9mIG51bWJlcmlu
Z1N5c3RlbXMpIHsKKyAgICBzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2Vu
JywgeyBudW1iZXJpbmdTeXN0ZW0gfSkucmVzb2x2ZWRPcHRpb25zKCkubnVtYmVyaW5nU3lzdGVt
LCBudW1iZXJpbmdTeXN0ZW0pOworICAgIHNob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZv
cm1hdChgZW4tdS1udS0ke251bWJlcmluZ1N5c3RlbX1gKS5yZXNvbHZlZE9wdGlvbnMoKS5udW1i
ZXJpbmdTeXN0ZW0sIG51bWJlcmluZ1N5c3RlbSk7Cit9CisKK3Nob3VsZEJlKEludGwuUmVsYXRp
dmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQubGVuZ3RoLCAyKTsKK3Nob3VsZFRocm93KCgp
ID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQuY2FsbCh7fSwgMywg
J2RheXMnKSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IGRlZmF1bHRSVEYuZm9ybWF0
KFN5bWJvbCgpLCAnZGF5cycpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gZGVmYXVs
dFJURi5mb3JtYXQoMywgU3ltYm9sKCkpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4g
ZGVmYXVsdFJURi5mb3JtYXQoSW5maW5pdHksICdkYXlzJyksIFJhbmdlRXJyb3IpOworc2hvdWxk
VGhyb3coKCkgPT4gZGVmYXVsdFJURi5mb3JtYXQoMywgJ2NlbnR1cmllcycpLCBSYW5nZUVycm9y
KTsKKworY29uc3QgdW5pdHMgPSBbJ3NlY29uZCcsICdtaW51dGUnLCAnaG91cicsICdkYXknLCAn
d2VlaycsICdtb250aCcsICdxdWFydGVyJywgJ3llYXInXTsKKworZm9yIChsZXQgdW5pdCBvZiB1
bml0cykgeworICAgIHNob3VsZEJlKGRlZmF1bHRSVEYuZm9ybWF0KDEwLCB1bml0KSwgZGVmYXVs
dFJURi5mb3JtYXQoMTAsIGAke3VuaXR9c2ApKTsKKworICAgIHNob3VsZEJlKGRlZmF1bHRSVEYu
Zm9ybWF0KDEwMDAwLjUsIHVuaXQpLCBgaW4gMTAsMDAwLjUgJHt1bml0fXNgKTsKKyAgICBzaG91
bGRCZShkZWZhdWx0UlRGLmZvcm1hdCgxMCwgdW5pdCksIGBpbiAxMCAke3VuaXR9c2ApOworICAg
IHNob3VsZEJlKGRlZmF1bHRSVEYuZm9ybWF0KDAsIHVuaXQpLCBgaW4gMCAke3VuaXR9c2ApOwor
ICAgIHNob3VsZEJlKGRlZmF1bHRSVEYuZm9ybWF0KC0xMCwgdW5pdCksIGAxMCAke3VuaXR9cyBh
Z29gKTsKKyAgICBzaG91bGRCZShkZWZhdWx0UlRGLmZvcm1hdCgtMTAwMDAuNSwgdW5pdCksIGAx
MCwwMDAuNSAke3VuaXR9cyBhZ29gKTsKK30KKworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVU
aW1lRm9ybWF0KCdlbicsIHsgc3R5bGU6ICdzaG9ydCcgfSkuZm9ybWF0KDEwLCAnc2Vjb25kJyks
ICdpbiAxMCBzZWMuJyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ3J1
JywgeyBzdHlsZTogJ3Nob3J0JyB9KS5mb3JtYXQoMTAsICdzZWNvbmQnKSwgJ9GH0LXRgNC10Lcg
MTDCoNGB0LXQui4nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4n
LCB7IHN0eWxlOiAnbmFycm93JyB9KS5mb3JtYXQoMTAsICdzZWNvbmQnKSwgJ2luIDEwIHNlYy4n
KTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgncnUnLCB7IHN0eWxlOiAn
bmFycm93JyB9KS5mb3JtYXQoMTAsICdzZWNvbmQnKSwgJysxMCDRgScpOworCitzaG91bGRCZShu
ZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBudW1lcmljOiAnYXV0bycgfSkuZm9y
bWF0KDAsICdzZWNvbmQnKSwgJ25vdycpOworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0KCdqYScsIHsgbnVtZXJpYzogJ2F1dG8nIH0pLmZvcm1hdCgwLCAnc2Vjb25kJyksICfk
u4onKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4nLCB7IG51bWVy
aWM6ICdhdXRvJyB9KS5mb3JtYXQoMCwgJ2RheScpLCAndG9kYXknKTsKK3Nob3VsZEJlKG5ldyBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnamEnLCB7IG51bWVyaWM6ICdhdXRvJyB9KS5mb3JtYXQo
MCwgJ2RheScpLCAn5LuK5pelJyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3Jt
YXQoJ2VuJywgeyBudW1lcmljOiAnYXV0bycgfSkuZm9ybWF0KDAsICd5ZWFyJyksICd0aGlzIHll
YXInKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnamEnLCB7IG51bWVy
aWM6ICdhdXRvJyB9KS5mb3JtYXQoMCwgJ3llYXInKSwgJ+S7iuW5tCcpOworCitzaG91bGRCZShu
ZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBudW1iZXJpbmdTeXN0ZW06ICd0aGFp
JyB9KS5mb3JtYXQoLTEwLCAnaG91cicpLCAn4LmR4LmQIGhvdXJzIGFnbycpOworc2hvdWxkQmUo
bmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbi11LW51LXRoYWknKS5mb3JtYXQoLTEwLCAn
aG91cicpLCAn4LmR4LmQIGhvdXJzIGFnbycpOworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVU
aW1lRm9ybWF0KCdrbycsIHsgbnVtYmVyaW5nU3lzdGVtOiAnaGFuaWRlYycgfSkuZm9ybWF0KC0x
MCwgJ2hvdXInKSwgJ+S4gOOAh+yLnOqwhCDsoIQnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0
aXZlVGltZUZvcm1hdCgna28tdS1udS1oYW5pZGVjJykuZm9ybWF0KC0xMCwgJ2hvdXInKSwgJ+S4
gOOAh+yLnOqwhCDsoIQnKTsKKworc2hvdWxkQmUoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJv
dG90eXBlLmZvcm1hdFRvUGFydHMubGVuZ3RoLCAyKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzLmNhbGwoe30sIDMsICdk
YXlzJyksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBkZWZhdWx0UlRGLmZvcm1hdFRv
UGFydHMoU3ltYm9sKCksICdkYXlzJyksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBk
ZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoMywgU3ltYm9sKCkpLCBUeXBlRXJyb3IpOworc2hvdWxk
VGhyb3coKCkgPT4gZGVmYXVsdFJURi5mb3JtYXRUb1BhcnRzKEluZmluaXR5LCAnZGF5cycpLCBS
YW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygz
LCAnY2VudHVyaWVzJyksIFJhbmdlRXJyb3IpOworCitmb3IgKGxldCB1bml0IG9mIHVuaXRzKSB7
CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZGVmYXVsdFJURi5mb3JtYXRUb1BhcnRzKDEw
LCB1bml0KSksIEpTT04uc3RyaW5naWZ5KGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygxMCwgYCR7
dW5pdH1zYCkpKTsKKworICAgIGNvbnN0IGNvbmNhdGVuYXRlVmFsdWVzID0gKHBhcnRzKSA9PiBw
YXJ0cy5tYXAocGFydCA9PiBwYXJ0LnZhbHVlKS5qb2luKCcnKTsKKyAgICBzaG91bGRCZShjb25j
YXRlbmF0ZVZhbHVlcyhkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoMTAwMDAuNSwgdW5pdCkpLCBg
aW4gMTAsMDAwLjUgJHt1bml0fXNgKTsKKyAgICBzaG91bGRCZShjb25jYXRlbmF0ZVZhbHVlcyhk
ZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoMTAsIHVuaXQpKSwgYGluIDEwICR7dW5pdH1zYCk7Cisg
ICAgc2hvdWxkQmUoY29uY2F0ZW5hdGVWYWx1ZXMoZGVmYXVsdFJURi5mb3JtYXRUb1BhcnRzKDAs
IHVuaXQpKSwgYGluIDAgJHt1bml0fXNgKTsKKyAgICBzaG91bGRCZShjb25jYXRlbmF0ZVZhbHVl
cyhkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoLTEwLCB1bml0KSksIGAxMCAke3VuaXR9cyBhZ29g
KTsKKyAgICBzaG91bGRCZShjb25jYXRlbmF0ZVZhbHVlcyhkZWZhdWx0UlRGLmZvcm1hdFRvUGFy
dHMoLTEwMDAwLjUsIHVuaXQpKSwgYDEwLDAwMC41ICR7dW5pdH1zIGFnb2ApOworfQorCitzaG91
bGRCZSgKKyAgICBKU09OLnN0cmluZ2lmeShkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoMTAwMDAu
NSwgJ2RheScpKSwKKyAgICBKU09OLnN0cmluZ2lmeShbCisgICAgICAgIHsgdHlwZTogJ2xpdGVy
YWwnLCB2YWx1ZTogJ2luICcgfSwKKyAgICAgICAgeyB0eXBlOiAnaW50ZWdlcicsIHZhbHVlOiAn
MTAnLCB1bml0OiAnZGF5JyB9LAorICAgICAgICB7IHR5cGU6ICdncm91cCcsIHZhbHVlOiAnLCcs
IHVuaXQ6ICdkYXknIH0sCisgICAgICAgIHsgdHlwZTogJ2ludGVnZXInLCB2YWx1ZTogJzAwMCcs
IHVuaXQ6ICdkYXknIH0sCisgICAgICAgIHsgdHlwZTogJ2RlY2ltYWwnLCB2YWx1ZTogJy4nLCB1
bml0OiAnZGF5JyB9LAorICAgICAgICB7IHR5cGU6ICdmcmFjdGlvbicsIHZhbHVlOiAnNScsIHVu
aXQ6ICdkYXknIH0sCisgICAgICAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJyBkYXlzJyB9
CisgICAgXSkKKyk7CisKK3Nob3VsZEJlKAorICAgIEpTT04uc3RyaW5naWZ5KG5ldyBJbnRsLlJl
bGF0aXZlVGltZUZvcm1hdCgnc3cnKS5mb3JtYXRUb1BhcnRzKDEwLCAneWVhcicpKSwKKyAgICBK
U09OLnN0cmluZ2lmeShbCisgICAgICAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJ2JhYWRh
IHlhIG1pYWthICcgfSwKKyAgICAgICAgeyB0eXBlOiAnaW50ZWdlcicsIHZhbHVlOiAnMTAnLCB1
bml0OiAneWVhcicgfSwKKyAgICBdKQorKTsKKworc2hvdWxkQmUoCisgICAgSlNPTi5zdHJpbmdp
ZnkobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdydScsIHsgc3R5bGU6ICduYXJyb3cnIH0p
LmZvcm1hdFRvUGFydHMoMTAsICdzZWNvbmQnKSksCisgICAgSlNPTi5zdHJpbmdpZnkoWworICAg
ICAgICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICcrJyB9LAorICAgICAgICB7IHR5cGU6ICdp
bnRlZ2VyJywgdmFsdWU6ICcxMCcsIHVuaXQ6ICdzZWNvbmQnIH0sCisgICAgICAgIHsgdHlwZTog
J2xpdGVyYWwnLCB2YWx1ZTogJyDRgScgfQorICAgIF0pCispOworCitzaG91bGRCZSgKKyAgICBK
U09OLnN0cmluZ2lmeShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2phJywgeyBudW1lcmlj
OiAnYXV0bycgfSkuZm9ybWF0VG9QYXJ0cygwLCAnd2VlaycpKSwKKyAgICBKU09OLnN0cmluZ2lm
eShbCisgICAgICAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJ+S7iumAsScgfQorICAgIF0p
CispOworCitzaG91bGRCZSgKKyAgICBKU09OLnN0cmluZ2lmeShuZXcgSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQoJ2tvJywgeyBudW1iZXJpbmdTeXN0ZW06ICdoYW5pZGVjJyB9KS5mb3JtYXRUb1Bh
cnRzKC0xMCwgJ2hvdXInKSksCisgICAgSlNPTi5zdHJpbmdpZnkoWworICAgICAgICB7IHR5cGU6
ICdpbnRlZ2VyJywgdmFsdWU6ICfkuIDjgIcnLCB1bml0OiAnaG91cicgfSwKKyAgICAgICAgeyB0
eXBlOiAnbGl0ZXJhbCcsIHZhbHVlOiAn7Iuc6rCEIOyghCcgfQorICAgIF0pCispOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZp
Zy55YW1sCmluZGV4IGEwMzY2Y2VmYjcyYzU5YTc0MzZhOWMyZDU0OGNmOGZlYzU1NGQ5N2QuLjhj
NTUzMjQ2ODU1Y2Y0ZTVhOThiNTY0ZWQ5ZDIxMWY3MjFiNDYxYTcgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwK
QEAgLTIsNiArMiw3IEBACiAtLS0KIGZsYWdzOgogICBCaWdJbnQ6IHVzZUJpZ0ludAorICBJbnRs
LlJlbGF0aXZlVGltZUZvcm1hdDogdXNlSW50bFJlbGF0aXZlVGltZUZvcm1hdAogICBXZWFrUmVm
OiB1c2VXZWFrUmVmcwogICBjbGFzcy1maWVsZHMtcHVibGljOiB1c2VQdWJsaWNDbGFzc0ZpZWxk
cwogICBsb2dpY2FsLWFzc2lnbm1lbnQtb3BlcmF0b3JzOiB1c2VMb2dpY2FsQXNzaWdubWVudE9w
ZXJhdG9ycwpAQCAtMzAsNyArMzEsNiBAQCBza2lwOgogICAgIC0gSW50bC5MaXN0Rm9ybWF0CiAg
ICAgLSBJbnRsLkxvY2FsZQogICAgIC0gSW50bC5OdW1iZXJGb3JtYXQtdW5pZmllZAotICAgIC0g
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQKICAgICAtIEludGwuU2VnbWVudGVyCiAgIHBhdGhzOgog
ICAgIC0gdGVzdC9idWlsdC1pbnMvRGF0YVZpZXcvcHJvdG90eXBlL2dldEJpZ0ludDY0CkBAIC0x
NTMsMyArMTUzLDcgQEAgc2tpcDoKICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDk3ODMKICAgICAtIHRlc3QvaW50bDQwMi9EYXRlVGltZUZvcm1hdC9wcm90
b3R5cGUvZm9ybWF0L3JlbGF0ZWQteWVhci16aC5qcwogICAgIC0gdGVzdC9pbnRsNDAyL0RhdGVU
aW1lRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3JlbGF0ZWQteWVhci16aC5qcworCisg
ICAgIyByZXF1aXJlcyBJQ1UgNjUgKGh0dHBzOi8vdW5pY29kZS1vcmcuYXRsYXNzaWFuLm5ldC9i
cm93c2UvSUNVLTIwNjU0KQorICAgIC0gdGVzdC9pbnRsNDAyL1JlbGF0aXZlVGltZUZvcm1hdC9w
cm90b3R5cGUvZm9ybWF0L2VuLXVzLW51bWVyaWMtYXV0by5qcworICAgIC0gdGVzdC9pbnRsNDAy
L1JlbGF0aXZlVGltZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9lbi11cy1udW1lcmlj
LWF1dG8uanMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbCBi
L0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAppbmRleCAyNWM2NmYwZTUwZWJkZTQ2
YmEyOTcxZDk2MDVkN2JkYmE4NjJjNDVkLi44OTg4ZTM3ZmQ0MGQyOTg0MTZmOTU5NTU4MzFlNmJj
MTFmMWUyZjBmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwK
KysrIGIvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCkBAIC0xOTM1LDEyICsxOTM1
LDMzIEBAIHRlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG8tZnJvbS1jdG9yLXJlYWxtLmpz
OgogdGVzdC9pbnRsNDAyL1BsdXJhbFJ1bGVzL3Byb3RvLWZyb20tY3Rvci1yZWFsbS5qczoKICAg
ZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogbmV3VGFyZ2V0LnByb3RvdHlwZSBpcyB1bmRlZmluZWQg
RXhwZWN0ZWQgU2FtZVZhbHVlKMKrW29iamVjdCBPYmplY3RdwrssIMKrW29iamVjdCBPYmplY3Rd
wrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBuZXdUYXJnZXQu
cHJvdG90eXBlIGlzIHVuZGVmaW5lZCBFeHBlY3RlZCBTYW1lVmFsdWUowqtbb2JqZWN0IE9iamVj
dF3Cuywgwqtbb2JqZWN0IE9iamVjdF3CuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9SZWxh
dGl2ZVRpbWVGb3JtYXQvY29uc3RydWN0b3IvY29uc3RydWN0b3IvbG9jYWxlcy12YWxpZC5qczoK
KyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogR3JhbmRmYXRoZXJlZCBFeHBlY3RlZCBhIFJhbmdl
RXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCisg
IHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBHcmFuZGZhdGhlcmVkIEV4cGVjdGVkIGEgUmFu
Z2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcK
K3Rlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvY29uc3RydWN0b3IvY29uc3RydWN0b3Iv
cHJvdG8tZnJvbS1jdG9yLXJlYWxtLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBuZXdU
YXJnZXQucHJvdG90eXBlIGlzIHVuZGVmaW5lZCBFeHBlY3RlZCBTYW1lVmFsdWUowqtbb2JqZWN0
IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0XcK7LCDCq1tvYmplY3QgSW50bC5SZWxhdGl2ZVRpbWVG
b3JtYXRdwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBuZXdU
YXJnZXQucHJvdG90eXBlIGlzIHVuZGVmaW5lZCBFeHBlY3RlZCBTYW1lVmFsdWUowqtbb2JqZWN0
IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0XcK7LCDCq1tvYmplY3QgSW50bC5SZWxhdGl2ZVRpbWVG
b3JtYXRdwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvUmVsYXRpdmVUaW1lRm9ybWF0L3By
b3RvdHlwZS9mb3JtYXQvcGwtcGwtc3R5bGUtbG9uZy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJF
cnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKremEgMTAwMCBzZWt1bmTCuywgwqt6YSAxwqAwMDAg
c2VrdW5kwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBl
Y3RlZCBTYW1lVmFsdWUowqt6YSAxMDAwIHNla3VuZMK7LCDCq3phIDHCoDAwMCBzZWt1bmTCuykg
dG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvcHJvdG90eXBlL2Zv
cm1hdC9wbC1wbC1zdHlsZS1uYXJyb3cuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4
cGVjdGVkIFNhbWVWYWx1ZSjCq3phIDEwMDAgc8K7LCDCq3phIDHCoDAwMCBzwrspIHRvIGJlIHRy
dWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt6
YSAxMDAwIHPCuywgwqt6YSAxwqAwMDAgc8K7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL1Jl
bGF0aXZlVGltZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3BsLXBsLXN0eWxlLXNob3J0LmpzOgor
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt6YSAxMDAwIHNl
ay7Cuywgwqt6YSAxwqAwMDAgc2VrLsK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKremEgMTAwMCBzZWsuwrssIMKremEgMcKg
MDAwIHNlay7CuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQv
cHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvcGwtcGwtc3R5bGUtbG9uZy5qczoKKyAgZGVmYXVsdDog
J1Rlc3QyNjJFcnJvcjogZm9ybWF0VG9QYXJ0cygxMDAwLCBzZWNvbmQpOiBsZW5ndGggRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrM8K7LCDCqzXCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdU
ZXN0MjYyRXJyb3I6IGZvcm1hdFRvUGFydHMoMTAwMCwgc2Vjb25kKTogbGVuZ3RoIEV4cGVjdGVk
IFNhbWVWYWx1ZSjCqzPCuywgwqs1wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvUmVsYXRp
dmVUaW1lRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3BsLXBsLXN0eWxlLW5hcnJvdy5q
czoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogZm9ybWF0VG9QYXJ0cygxMDAwLCBzZWNvbmQp
OiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrM8K7LCDCqzXCuykgdG8gYmUgdHJ1ZScKKyAg
c3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IGZvcm1hdFRvUGFydHMoMTAwMCwgc2Vjb25kKTog
bGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzPCuywgwqs1wrspIHRvIGJlIHRydWUnCit0ZXN0
L2ludGw0MDIvUmVsYXRpdmVUaW1lRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3BsLXBs
LXN0eWxlLXNob3J0LmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBmb3JtYXRUb1BhcnRz
KDEwMDAsIHNlY29uZCk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqszwrssIMKrNcK7KSB0
byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogZm9ybWF0VG9QYXJ0cygx
MDAwLCBzZWNvbmQpOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrM8K7LCDCqzXCuykgdG8g
YmUgdHJ1ZScKIHRlc3QvaW50bDQwMi9sYW5ndWFnZS10YWdzLWludmFsaWQuanM6CiAgIGRlZmF1
bHQ6ICdUZXN0MjYyRXJyb3I6IFRlc3QgZGF0YSAiZGUtZ3JlZ29yeS1ncmVnb3J5IiBpcyBhIGNh
bm9uaWNhbGl6ZWQgYW5kIHN0cnVjdHVyYWxseSB2YWxpZCBsYW5ndWFnZSB0YWcuJwogICBzdHJp
Y3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogVGVzdCBkYXRhICJkZS1ncmVnb3J5LWdyZWdvcnkiIGlz
IGEgY2Fub25pY2FsaXplZCBhbmQgc3RydWN0dXJhbGx5IHZhbGlkIGxhbmd1YWdlIHRhZy4nCi10
ZXN0L2ludGw0MDIvc3VwcG9ydGVkTG9jYWxlc09mLXJldHVybmVkLWFycmF5LWVsZW1lbnRzLWFy
ZS1ub3QtZnJvemVuLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBQcm9wZXJ0eSAwIG9m
IG9iamVjdCByZXR1cm5lZCBieSBTdXBwb3J0ZWRMb2NhbGVzIGlzIG5vdCB3cml0YWJsZS4gRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrZmFsc2XCuywgwqt0cnVlwrspIHRvIGJlIHRydWUgKFRlc3Rpbmcg
d2l0aCBDb2xsYXRvci4pJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogUHJvcGVydHkg
MCBvZiBvYmplY3QgcmV0dXJuZWQgYnkgU3VwcG9ydGVkTG9jYWxlcyBpcyBub3Qgd3JpdGFibGUu
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2ZhbHNlwrssIMKrdHJ1ZcK7KSB0byBiZSB0cnVlIChUZXN0
aW5nIHdpdGggQ29sbGF0b3IuKScKIHRlc3QvbGFuZ3VhZ2UvYXJndW1lbnRzLW9iamVjdC9tYXBw
ZWQvbm9uY29uZmlndXJhYmxlLW5vbmVudW1lcmFibGUtbm9ud3JpdGFibGUtZGVzY3JpcHRvcnMt
c2V0LWJ5LWFyZ3VtZW50cy5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQg
b2JqWzBdIHRvIGhhdmUgZW51bWVyYWJsZTpmYWxzZS4nCiB0ZXN0L2xhbmd1YWdlL2FyZ3VtZW50
cy1vYmplY3QvbWFwcGVkL25vbmNvbmZpZ3VyYWJsZS1ub25lbnVtZXJhYmxlLW5vbndyaXRhYmxl
LWRlc2NyaXB0b3JzLXNldC1ieS1wYXJhbS5qczoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396922</attachid>
            <date>2020-04-19 12:06:31 -0700</date>
            <delta_ts>2020-04-19 14:53:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209770-20200419120630.patch</filename>
            <type>text/plain</type>
            <size>102411</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZDg1MDUxZGE1NmI2Zjc2MGM2NjI3MWEwN2E0ZmYyYTJlOTU2Mzc2Li5lZTJjZDc0NTlhZjZmYzVk
ZmNhMmY2NDc4YTBmYTc4NWVlZDYzOTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OSBAQAorMjAyMC0wNC0xOSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBtaXNz
aW5nIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5NzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSByZWNlbnQgRUNNQS00MDIgZmVhdHVyZSBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdC4KKworICAgICAgICBSZWxhdGl2ZVRpbWVGb3JtYXQgaGFz
IGZvcm1hdCAvIGZvcm1hdFRvUGFydHMgZnVuY3Rpb25zIGxpa2UgTnVtYmVyRm9ybWF0IC8gRGF0
ZVRpbWVGb3JtYXQKKyAgICAgICAgYW5kIGlzIHVzZWQgdG8gdHVybiBhIG51bWJlciBhbmQgdW5p
dCBpbnRvIGEgZm9ybWF0dGVkIHJlbGF0aXZlIHRpbWUgc3RyaW5nLCBlLmcuOgorCisgICAgICAg
ICAgbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicpLmZvcm1hdCgxMCwgJ2RheScpCisg
ICAgICAgICAgPiAnaW4gMTAgZGF5cycKKworICAgICAgICAgIG5ldyBJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdCgnZW4nLCB7IG51bWVyaWM6ICdhdXRvJyB9KS5mb3JtYXQoMCwgJ2RheScpCisgICAg
ICAgICAgPiAndG9kYXknCisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgUmVsYXRpdmVUaW1l
Rm9ybWF0I2Zvcm1hdFRvUGFydHMgbWFrZXMgZGlyZWN0IHVzZSBvZiBOdW1iZXJGb3JtYXQjZm9y
bWF0VG9QYXJ0cywKKyAgICAgICAgYXMgdGhlIHJlbGF0aXZlIHRpbWUgc3RyaW5nIGNvbnNpc3Rz
IG9mIGF0IG1vc3Qgb25lIGZvcm1hdHRlZCBudW1iZXIgd2l0aCBvcHRpb25hbCBsaXRlcmFsIHRl
eHQgb24gZWl0aGVyIHNpZGUuCisKKyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIHJ1bnRpbWUtZ3Vh
cmRlZCBieSB0aGUgYHVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXRgIG9wdGlvbi4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0lu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50
aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnJlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGlt
ZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlND
OjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgQWRkIGZlYXR1cmUg
YW5kIHJ1bnRpbWUgb3B0aW9uLgorCisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpJ
bnRsUGx1cmFsUnVsZXM6OnJlc29sdmVkT3B0aW9ucyk6CisgICAgICAgIE1ha2UgInR5cGUiIGEg
cHJvcGVydHkgbmFtZS4KKworICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDoKKyAgICAgICAgRmFjdG9yIG91dCBmb3JtYXRUb1Bh
cnRzSW50ZXJuYWwgc28gdGhhdCBSZWxhdGl2ZVRpbWVGb3JtYXQgY2FuIHVzZSBpdCB3aXRoIGl0
cyBvd24gVU51bWJlckZvcm1hdC4KKyAgICAgICAgKFRoaXMgbG9naWMgaXMgdG9vIGNvbXBsaWNh
dGVkIHRvIGR1cGxpY2F0ZTsgaXQncyBiZWNhdXNlIElDVSB3b24ndCBzcGxpdCwgZS5nLiwgIjEw
LDAwMCIgaW50byBwYXJ0cyBmb3IgdXMuKQorCisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6SW50bE9iamVjdCk6CisgICAgICAgIChK
U0M6OkludGxPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6aW50bEF2YWlsYWJsZUxvY2FsZXMpOgorICAgICAg
ICAoSlNDOjppbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgKEpTQzo6aXNV
bmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUpOgorICAgICAgICAoSlNDOjpzdXBwb3J0ZWRMb2Nh
bGVzKToKKyAgICAgICAgKEpTQzo6aW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcyk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6aW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcyk6CisgICAgICAgIChKU0M6Omlu
dGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgKEpTQzo6aW50bFBsdXJh
bFJ1bGVzQXZhaWxhYmxlTG9jYWxlcyk6CisgICAgICAgIChKU0M6OmludGxSZWxhdGl2ZVRpbWVG
b3JtYXRBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgUGVyZm9ybSB0aHJlZSBjb3JyZWN0aW9u
cyBmb3IgSW50bCBjbGFzc2VzOgorICAgICAgICAgIDEuIENvbGxhdG9yIHNob3VsZCBiZSB0aGUg
b25seSBjbGFzcyB3aXRoIHVuaXF1ZSAiYXZhaWxhYmxlIGxvY2FsZXMiLgorICAgICAgICAgICAg
IFt1bnVtfHVkYXRdX2dldEF2YWlsYWJsZSBleGlzdCBidXQgdGhleSd2ZSBkZWZlcnJlZCB0byB1
bG9jX2dldEF2YWlsYWJsZSBmb3IgMjAgeWVhcnMuCisgICAgICAgICAgMi4gaXNVbmljb2RlTG9j
YWxlSWRlbnRpZmllclR5cGUgaXNuJ3QganVzdCBgYWxwaGFudW17Myw4fWAgYnV0IHJhdGhlciBg
YWxwaGFudW17Myw4fSAoc2VwIGFscGhhbnVtezMsOH0pKmAuCisgICAgICAgICAgICAgVGhpcyBp
cyBteSBvd24gbWlzdGFrZSBmcm9tIHIyMzk5NDEuCisgICAgICAgICAgMy4gc3VwcG9ydGVkTG9j
YWxlc09mIGVudHJpZXMgc2hvdWxkIG5vdCBiZSBmcm96ZW4uCisgICAgICAgICAgICAgQ2hhbmdl
ZCBpbiBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9lY21hNDAyL3B1bGwvMjc4LgorCiAyMDIwLTA0
LTE4ICBSb2JpbiBNb3Jpc3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgU3Vw
cG9ydCBhbiBpbmxpbmVkIHJlcHJlc2VudGF0aW9uIGluIEpTVmFsdWUgb2Ygc21hbGwgQmlnSW50
cyAoIkJpZ0ludDMyIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkMWQ5
MjMyOTk0ZDFkZGRiZThhMDgzY2Q2ZDYzZTQ5N2FlMjg0M2NmLi5hZmIyNTQ3OWFkZTI4NDViODc4
OGFmN2M1NGY5YTBlYjk2OGFlZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC03NSw2ICs3NSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMK
ICAgICBydW50aW1lL0ludGxPYmplY3QuY3BwCiAgICAgcnVudGltZS9JbnRsUGx1cmFsUnVsZXND
b25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAK
KyAgICBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKyAgICBy
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9K
U0RhdGFWaWV3UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCiAg
ICAgcnVudGltZS9KU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRl
eCAyMzQwY2RmYWM0NjFiOWI2YjMxYjA1NzhiMjVhZmI1NTViYWRhZDhiLi4zNGFjZGY4N2U4YTRk
NjliZjQ1ZDUyZjMyNDVmYTAwNDVlMjNjN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTQyLDYgKzE0Miw4
IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5jcHAK
ICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKICQoUFJPSkVDVF9ESVIpL3J1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50
aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUv
SW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAorJChQUk9KRUNUX0RJUikvcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikv
cnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSlNJbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBhNzQ0NTBjYTc5MWM3ZmE4ZDYyYzhi
OTA5YWFmZTQxNGU5NDZlZjBkLi5kYWY5NDMyYTkxNmU1NzQ2ZmRkOWUxODgzYjk3YjZhZGFkMzFm
YzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0zMyw2ICszMyw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
Lmx1CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
SW50bE9iamVjdC5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlLmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oCiskKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bFJlbGF0
aXZlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0RhdGFWaWV3UHJvdG90eXBlLmx1
dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
SlNHbG9iYWxPYmplY3QubHV0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggZTlkODA0ZDllOGJlNWMzNDVlZjQ3MjE5ZTBlOTk2ZDMxOWJiZjkwNy4uZTdm
MjEzMTM5YWM4YzQ2NjQ2MzQ4N2JhNzY3NzE1YmY2MzVlMDM1MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE1Myw2ICsxNTMsOCBAQCBPQkpFQ1RfTFVU
X0hFQURFUlMgPSBcCiAgICAgSW50bE9iamVjdC5sdXQuaCBcCiAgICAgSW50bFBsdXJhbFJ1bGVz
Q29uc3RydWN0b3IubHV0LmggXAogICAgIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5sdXQuaCBc
CisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oIFwKICAgICBKU0RhdGFWaWV3UHJvdG90
eXBlLmx1dC5oIFwKICAgICBKU0dsb2JhbE9iamVjdC5sdXQuaCBcCiAgICAgSlNJbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDcwZmM5OWZiNGU3N2UwMzcyNDNlMWQzMTdlNGM0ZDlkOTBlYjAxZTIuLjE1Y2NkMGM3MjIzZDZh
NjJjMmY4Y2M0ZGVmMjEzNWNhYjIwZDNkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC00MzM0LDYgKzQzMzQsMTIgQEAKIAkJQTFFMDQ1MUIxQzI1QjRCMTAwQkI2NjNDIC8qIFN0
cmluZ1Byb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9
IFN0cmluZ1Byb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGRTFF
QjAxQzJDNTM3RTAwQTI4OUZGIC8qIERhdGVQcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmphdmFzY3JpcHQ7IHBhdGggPSBEYXRlUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMjc5NThEN0ZBMTE0MkIwQUM5RTM2NEQgLyogV2FzbUNvbnRleHRJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21Db250ZXh0SW5saW5l
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0JGODg0QjI0NDgwQkRFMDAxQjlG
MzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNCRjg4NEMyNDQ4MEJERjAwMUI5RjM1
IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBM0JGODg0RDI0NDgwQkRGMDAxQjlGMzUgLyogSW50bFJl
bGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQkY4ODRFMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUEzQkY4ODRGMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
dGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
M0JGODg1MDI0NDgwQkUxMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRkY5QkM1MjIzNDc0NjYwMEIxQTlBQiAvKiBZ
YXJyRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckZsYWdzLmg7
IHBhdGggPSB5YXJyL1lhcnJGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
M0ZGOUJDNjIyMzQ3NDY2MDBCMUE5QUIgLyogWWFyckZsYWdzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJGbGFncy5jcHA7IHBhdGggPSB5YXJyL1lhcnJGbGFn
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTEzMTg4RTBGQUYwMDEx
MEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNzI2NSw2ICs3MjcxLDEyIEBACiAJCQkJN0Q1RkIxOTAyMDc0NEJGMTAwNURE
RjY0IC8qIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmggKi8sCiAJCQkJN0Q1RkIxOTEyMDc0
NEJGMTAwNURERjY0IC8qIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAgKi8sCiAJCQkJN0Q1
RkIxOEQyMDc0NEFFODAwNURERjY0IC8qIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5oICovLAor
CQkJCUEzQkY4ODRGMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNw
cCAqLywKKwkJCQlBM0JGODg1MDI0NDgwQkUxMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZv
cm1hdC5oICovLAorCQkJCUEzQkY4ODREMjQ0ODBCREYwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwICovLAorCQkJCUEzQkY4ODRFMjQ0ODBCRTAwMDFCOUYz
NSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKKwkJCQlBM0JGODg0
QjI0NDgwQkRFMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAg
Ki8sCisJCQkJQTNCRjg4NEMyNDQ4MEJERjAwMUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRQcm90b3R5cGUuaCAqLywKIAkJCQkwRjI3NUYyQzFFQ0UwNzk2MDA2MjBENDcgLyogSW50cmlu
c2ljLmNwcCAqLywKIAkJCQk4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmluc2ljLmgg
Ki8sCiAJCQkJOEI5RjZENTUxRDU5MTJGQTAwMUM3MzlGIC8qIEl0ZXJhdGlvbktpbmQuaCAqLywK
QEAgLTg5NTcsNyArODk2OSw2IEBACiAJCQkJMEZFQzg1OTExQkRBQ0RDNzAwODBGRjc0IC8qIEFp
clZhbGlkYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDM0M1MzFGMzNBNDE2MDBGNTlCNkMg
LyogQWxpZ25lZE1lbW9yeUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNzYyMEIx
REI5NTlGOTAwQjdBMkZEIC8qIEFsbG9jYXRpbmdTY29wZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MzMxMTFCOEIyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkRDRTExQzFGQUU2MjA5MDA2RjM5MDEgLyogQWxsb2NhdGlvbkZhaWx1cmVNb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjc1QTA2MzIwMEQyNjFGMDAzOEUyQ0YgLyogQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjMwQ0I1RTFGQ0U0RTM3MDA0QjUzMjMgLyogQWxsb2NhdG9y
Rm9yTW9kZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDE5MSw2ICsxMDIwMiw3IEBACiAJCQkJMEZF
MDUwMjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0
ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRD
RSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwNjgxODlBRkU5QzAwNjMz
MjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMjExODhF
RkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
RkQwMDZFMTg5QjAwQUEwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGIzNjkyZjUwZWYxZmRmNDEwZWZiNGNj
MGViZjk3NmZjNjFmOWI0YTcuLjBmNGM1MGRmMzY3YzY1NjA4YTBhZjYyODNhMGRjNTI2YTk0MTBh
NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTgxOSw2ICs4MTksOSBAQCBydW50
aW1lL0ludGxPYmplY3QuY3BwCiBydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKIHJ1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1By
b3RvdHlwZS5jcHAKK3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKK3J1bnRpbWUv
SW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAorcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAogcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3Bw
CiBydW50aW1lL0l0ZXJhdG9yUHJvdG90eXBlLmNwcAogcnVudGltZS9KU0FycmF5LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5k
ZXggZTJkYzg4N2IzODQ0MzRlMDUxNjY2YTBiNDI2NTIwMDM4ZjRiNTlmNC4uZDE2NGJhNGJlZjhi
NGVlZmY5MzE3MzdiMzk1M2YzNGZlMTIzMmEyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC00OSw2ICs0OSw3IEBACiAgICAg
bWFjcm8oUHJvbWlzZSkgXAogICAgIG1hY3JvKFJlZmxlY3QpIFwKICAgICBtYWNybyhSZWdFeHAp
IFwKKyAgICBtYWNybyhSZWxhdGl2ZVRpbWVGb3JtYXQpIFwKICAgICBtYWNybyhSZW1vdGVQbGF5
YmFjaykgXAogICAgIG1hY3JvKFNldCkgXAogICAgIG1hY3JvKFNoYXJlZEFycmF5QnVmZmVyKSBc
CkBAIC0xNzgsNiArMTc5LDcgQEAKICAgICBtYWNybyhzdGFjaykgXAogICAgIG1hY3JvKHN0YWNr
VHJhY2VMaW1pdCkgXAogICAgIG1hY3JvKHN0aWNreSkgXAorICAgIG1hY3JvKHN0eWxlKSBcCiAg
ICAgbWFjcm8oc3ViYXJyYXkpIFwKICAgICBtYWNybyhzdW1tYXJ5KSBcCiAgICAgbWFjcm8odGFy
Z2V0KSBcCkBAIC0xOTMsNiArMTk1LDcgQEAKICAgICBtYWNybyh0b0xvY2FsZVN0cmluZykgXAog
ICAgIG1hY3JvKHRvUHJlY2lzaW9uKSBcCiAgICAgbWFjcm8odG9TdHJpbmcpIFwKKyAgICBtYWNy
byh0eXBlKSBcCiAgICAgbWFjcm8odWlkKSBcCiAgICAgbWFjcm8odW5pY29kZSkgXAogICAgIG1h
Y3JvKHVzYWdlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0LmNwcAppbmRleCAwMDMwMmZlNGIxMzVkMWQ4M2E0Y2RjODFkYjdkMTM4
MjEwZmM2N2U4Li4yZDEzM2Q2M2FlYmM0ZGI4NzU5OWM4MGRjYmQwZjEwYmY3YTg5ZDE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5jcHAKQEAgLTEwMjksNyArMTAyOSw2IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpm
b3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2CiAgICAg
ICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAK
ICAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5n
dGgpOwotICAgIGF1dG8gdHlwZVByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJ0eXBlIik7CiAgICAgYXV0byBsaXRlcmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5n
KHZtLCAibGl0ZXJhbCJfcyk7CiAKICAgICBpbnQzMl90IHByZXZpb3VzRW5kSW5kZXggPSAwOwpA
QCAtMTA0Myw3ICsxMDQyLDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFRv
UGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHYKICAgICAgICAgaWYg
KHByZXZpb3VzRW5kSW5kZXggPCBiZWdpbkluZGV4KSB7CiAgICAgICAgICAgICBhdXRvIHZhbHVl
ID0ganNTdHJpbmcodm0sIHJlc3VsdFN0cmluZy5zdWJzdHJpbmcocHJldmlvdXNFbmRJbmRleCwg
YmVnaW5JbmRleCAtIHByZXZpb3VzRW5kSW5kZXgpKTsKICAgICAgICAgICAgIEpTT2JqZWN0KiBw
YXJ0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgIHBh
cnQtPnB1dERpcmVjdCh2bSwgdHlwZVByb3BlcnR5TmFtZSwgbGl0ZXJhbFN0cmluZyk7CisgICAg
ICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIGxpdGVy
YWxTdHJpbmcpOwogICAgICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT52YWx1ZSwgdmFsdWUpOwogICAgICAgICAgICAgcGFydHMtPnB1c2goZ2xvYmFsT2JqZWN0
LCBwYXJ0KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBA
IC0xMDU0LDcgKzEwNTMsNyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0VG9Q
YXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdgogICAgICAgICAgICAg
YXV0byB0eXBlID0ganNTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5nKFVEYXRlRm9ybWF0RmllbGQo
ZmllbGRUeXBlKSkpOwogICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGpzU3RyaW5nKHZtLCByZXN1
bHRTdHJpbmcuc3Vic3RyaW5nKGJlZ2luSW5kZXgsIGVuZEluZGV4IC0gYmVnaW5JbmRleCkpOwog
ICAgICAgICAgICAgSlNPYmplY3QqIHBhcnQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxP
YmplY3QpOwotICAgICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB0eXBlUHJvcGVydHlOYW1l
LCB0eXBlKTsKKyAgICAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+dHlwZSwgdHlwZSk7CiAgICAgICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnZhbHVlLCB2YWx1ZSk7CiAgICAgICAgICAgICBwYXJ0cy0+cHVzaChnbG9iYWxP
YmplY3QsIHBhcnQpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dC5jcHAKaW5kZXggY2E0Mjc5Njg2YTZmYWIwZDhkZDJkYzViZTFmYmExOTFkMTcyYzhjOC4uOTY4
ZWI1ZTI3N2MwOWZjOGRmMzRkYmE0ZGFhYjEyMTdmMDBhNjQ5NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTIsNiArMiw3
IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29u
ZXIuZmFtaWx5KQogICogQ29weXJpZ2h0IChDKSAyMDE2IFN1a29sc2FrIFNha3NodXdvbmcgKHN1
a29sc2FrQGdtYWlsLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xOTUsNyArMTk2LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVy
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKIAogICAgIG1fbnVtYmVy
aW5nU3lzdGVtID0gcmVzdWx0LmdldCgibnUiX3MpOwogCi0gICAgU3RyaW5nIHN0eWxlU3RyaW5n
ID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJzdHlsZSIpLCB7ICJkZWNpbWFsIiwgInBlcmNlbnQiLCAiY3VycmVuY3ki
IH0sICJzdHlsZSBtdXN0IGJlIGVpdGhlciBcImRlY2ltYWxcIiwgXCJwZXJjZW50XCIsIG9yIFwi
Y3VycmVuY3lcIiIsICJkZWNpbWFsIik7CisgICAgU3RyaW5nIHN0eWxlU3RyaW5nID0gaW50bFN0
cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxl
LCB7ICJkZWNpbWFsIiwgInBlcmNlbnQiLCAiY3VycmVuY3kiIH0sICJzdHlsZSBtdXN0IGJlIGVp
dGhlciBcImRlY2ltYWxcIiwgXCJwZXJjZW50XCIsIG9yIFwiY3VycmVuY3lcIiIsICJkZWNpbWFs
Iik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoc3R5
bGVTdHJpbmcgPT0gImRlY2ltYWwiKQogICAgICAgICBtX3N0eWxlID0gU3R5bGU6OkRlY2ltYWw7
CkBAIC00NDEsNyArNDQyLDcgQEAgSlNPYmplY3QqIEludGxOdW1iZXJGb3JtYXQ6OnJlc29sdmVk
T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTT2JqZWN0KiBvcHRp
b25zID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBvcHRpb25zLT5w
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZSwganNTdHJpbmcodm0sIG1fbG9j
YWxlKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5udW1i
ZXJpbmdTeXN0ZW0sIGpzU3RyaW5nKHZtLCBtX251bWJlcmluZ1N5c3RlbSkpOwotICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0eWxlIiksIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgc3R5bGVTdHJpbmcobV9zdHlsZSkpKTsKKyAgICBvcHRpb25z
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIHN0eWxlU3RyaW5nKG1fc3R5bGUpKSk7CiAgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6
OkN1cnJlbmN5KSB7CiAgICAgICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgImN1cnJlbmN5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV9jdXJy
ZW5jeSkpOwogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJjdXJyZW5jeURpc3BsYXkiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBjdXJy
ZW5jeURpc3BsYXlTdHJpbmcobV9jdXJyZW5jeURpc3BsYXkpKSk7CkBAIC01MDMsNiArNTA0LDUw
IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpwYXJ0VHlwZVN0cmluZyhVTnVtYmVy
Rm9ybWF0RmllbGRzIGZpZWxkLCBkb3VibGUKICAgICByZXR1cm4gInVua25vd24iX3M7CiB9CiAK
K3ZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSwgY29uc3QgU3RyaW5nJiBmb3JtYXR0ZWQs
IFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqIGl0ZXJhdG9yLCBKU0FycmF5KiBwYXJ0cywgSlNTdHJp
bmcqIHVuaXQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gc3RyaW5nTGVuZ3Ro
ID0gZm9ybWF0dGVkLmxlbmd0aCgpOworCisgICAgaW50MzJfdCBsaXRlcmFsRmllbGRUeXBlID0g
LTE7CisgICAgYXV0byBsaXRlcmFsRmllbGQgPSBJbnRsTnVtYmVyRm9ybWF0RmllbGQobGl0ZXJh
bEZpZWxkVHlwZSwgc3RyaW5nTGVuZ3RoKTsKKyAgICBWZWN0b3I8SW50bE51bWJlckZvcm1hdEZp
ZWxkPiBmaWVsZHMoc3RyaW5nTGVuZ3RoLCBsaXRlcmFsRmllbGQpOworICAgIGludDMyX3QgYmVn
aW5JbmRleCA9IDA7CisgICAgaW50MzJfdCBlbmRJbmRleCA9IDA7CisgICAgYXV0byBmaWVsZFR5
cGUgPSB1ZmllbGRwb3NpdGVyX25leHQoaXRlcmF0b3IsICZiZWdpbkluZGV4LCAmZW5kSW5kZXgp
OworICAgIHdoaWxlIChmaWVsZFR5cGUgPj0gMCkgeworICAgICAgICBhdXRvIHNpemUgPSBlbmRJ
bmRleCAtIGJlZ2luSW5kZXg7CisgICAgICAgIGZvciAoYXV0byBpID0gYmVnaW5JbmRleDsgaSA8
IGVuZEluZGV4OyArK2kpIHsKKyAgICAgICAgICAgIC8vIE9ubHkgb3ZlcnJpZGUgcHJldmlvdXMg
dmFsdWUgaWYgbmV3IHZhbHVlIGlzIG1vcmUgc3BlY2lmaWMuCisgICAgICAgICAgICBpZiAoZmll
bGRzW2ldLnNpemUgPj0gc2l6ZSkKKyAgICAgICAgICAgICAgICBmaWVsZHNbaV0gPSBJbnRsTnVt
YmVyRm9ybWF0RmllbGQoZmllbGRUeXBlLCBzaXplKTsKKyAgICAgICAgfQorICAgICAgICBmaWVs
ZFR5cGUgPSB1ZmllbGRwb3NpdGVyX25leHQoaXRlcmF0b3IsICZiZWdpbkluZGV4LCAmZW5kSW5k
ZXgpOworICAgIH0KKworICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgImxpdGVyYWwiX3MpOworICAgIGF1dG8gdW5pdE5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAidW5pdCIpOworCisgICAgc2l6ZV90IGN1cnJlbnRJbmRleCA9IDA7CisgICAg
d2hpbGUgKGN1cnJlbnRJbmRleCA8IHN0cmluZ0xlbmd0aCkgeworICAgICAgICBhdXRvIHN0YXJ0
SW5kZXggPSBjdXJyZW50SW5kZXg7CisgICAgICAgIGF1dG8gZmllbGRUeXBlID0gZmllbGRzW2N1
cnJlbnRJbmRleF0udHlwZTsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA8IHN0cmluZ0xl
bmd0aCAmJiBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlID09IGZpZWxkVHlwZSkKKyAgICAgICAg
ICAgICsrY3VycmVudEluZGV4OworICAgICAgICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09
IGxpdGVyYWxGaWVsZFR5cGUgPyBsaXRlcmFsU3RyaW5nIDoganNTdHJpbmcodm0sIHBhcnRUeXBl
U3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgdmFsdWUpKTsKKyAgICAgICAg
YXV0byBwYXJ0VmFsdWUgPSBqc1N1YnN0cmluZyh2bSwgZm9ybWF0dGVkLCBzdGFydEluZGV4LCBj
dXJyZW50SW5kZXggLSBzdGFydEluZGV4KTsKKyAgICAgICAgSlNPYmplY3QqIHBhcnQgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgICAgICBwYXJ0LT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIHBhcnRUeXBlKTsKKyAgICAgICAgcGFydC0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwgcGFydFZhbHVlKTsKKyAgICAgICAg
aWYgKHVuaXQpCisgICAgICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHVuaXROYW1lLCB1bml0
KTsKKyAgICAgICAgcGFydHMtPnB1c2goZ2xvYmFsT2JqZWN0LCBwYXJ0KTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICB9Cit9CisKIEpTVmFsdWUgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3VibGUgdmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAt
NTIwLDcgKzU2NSw2IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsCiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImZhaWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKIAotICAg
IHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQoMzIp
OwogICAgIGF1dG8gcmVzdWx0TGVuZ3RoID0gdW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMobV9u
dW1iZXJGb3JtYXQuZ2V0KCksIHZhbHVlLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCBm
aWVsZEl0ci5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVS
RkxPV19FUlJPUikgewpAQCAtNTMxLDQ1ICs1NzUsMTQgQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9y
bWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2
YWwKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3Mp
OwogCi0gICAgaW50MzJfdCBsaXRlcmFsRmllbGRUeXBlID0gLTE7Ci0gICAgYXV0byBsaXRlcmFs
RmllbGQgPSBJbnRsTnVtYmVyRm9ybWF0RmllbGQobGl0ZXJhbEZpZWxkVHlwZSwgcmVzdWx0TGVu
Z3RoKTsKLSAgICBWZWN0b3I8SW50bE51bWJlckZvcm1hdEZpZWxkPiBmaWVsZHMocmVzdWx0TGVu
Z3RoLCBsaXRlcmFsRmllbGQpOwotICAgIGludDMyX3QgYmVnaW5JbmRleCA9IDA7Ci0gICAgaW50
MzJfdCBlbmRJbmRleCA9IDA7Ci0gICAgYXV0byBmaWVsZFR5cGUgPSB1ZmllbGRwb3NpdGVyX25l
eHQoZmllbGRJdHIuZ2V0KCksICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOwotICAgIHdoaWxlIChm
aWVsZFR5cGUgPj0gMCkgewotICAgICAgICBhdXRvIHNpemUgPSBlbmRJbmRleCAtIGJlZ2luSW5k
ZXg7Ci0gICAgICAgIGZvciAoYXV0byBpID0gYmVnaW5JbmRleDsgaSA8IGVuZEluZGV4OyArK2kp
IHsKLSAgICAgICAgICAgIC8vIE9ubHkgb3ZlcnJpZGUgcHJldmlvdXMgdmFsdWUgaWYgbmV3IHZh
bHVlIGlzIG1vcmUgc3BlY2lmaWMuCi0gICAgICAgICAgICBpZiAoZmllbGRzW2ldLnNpemUgPj0g
c2l6ZSkKLSAgICAgICAgICAgICAgICBmaWVsZHNbaV0gPSBJbnRsTnVtYmVyRm9ybWF0RmllbGQo
ZmllbGRUeXBlLCBzaXplKTsKLSAgICAgICAgfQotICAgICAgICBmaWVsZFR5cGUgPSB1ZmllbGRw
b3NpdGVyX25leHQoZmllbGRJdHIuZ2V0KCksICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOwotICAg
IH0KKyAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHRM
ZW5ndGgpOwogCiAgICAgSlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGds
b2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9u
KEFycmF5V2l0aENvbnRpZ3VvdXMpLCAwKTsKICAgICBpZiAoIXBhcnRzKQogICAgICAgICByZXR1
cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAgIHVuc2ln
bmVkIGluZGV4ID0gMDsKIAotICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gU3RyaW5nKHJlc3VsdC5k
YXRhKCksIHJlc3VsdExlbmd0aCk7Ci0gICAgYXV0byB0eXBlUHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgInR5cGUiKTsKLSAgICBhdXRvIGxpdGVyYWxTdHJpbmcgPSBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJsaXRlcmFsIl9zKTsKLQotICAgIGludDMyX3QgY3VycmVu
dEluZGV4ID0gMDsKLSAgICB3aGlsZSAoY3VycmVudEluZGV4IDwgcmVzdWx0TGVuZ3RoKSB7Ci0g
ICAgICAgIGF1dG8gc3RhcnRJbmRleCA9IGN1cnJlbnRJbmRleDsKLSAgICAgICAgYXV0byBmaWVs
ZFR5cGUgPSBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlOwotICAgICAgICB3aGlsZSAoY3VycmVu
dEluZGV4IDwgcmVzdWx0TGVuZ3RoICYmIGZpZWxkc1tjdXJyZW50SW5kZXhdLnR5cGUgPT0gZmll
bGRUeXBlKQotICAgICAgICAgICAgKytjdXJyZW50SW5kZXg7Ci0gICAgICAgIGF1dG8gcGFydFR5
cGUgPSBmaWVsZFR5cGUgPT0gbGl0ZXJhbEZpZWxkVHlwZSA/IGxpdGVyYWxTdHJpbmcgOiBqc1N0
cmluZyh2bSwgcGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyhmaWVsZFR5cGUpLCB2
YWx1ZSkpOwotICAgICAgICBhdXRvIHBhcnRWYWx1ZSA9IGpzU3Vic3RyaW5nKHZtLCByZXN1bHRT
dHJpbmcsIHN0YXJ0SW5kZXgsIGN1cnJlbnRJbmRleCAtIHN0YXJ0SW5kZXgpOwotICAgICAgICBK
U09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAg
ICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdHlwZVByb3BlcnR5TmFtZSwgcGFydFR5cGUpOwotICAg
ICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBwYXJ0VmFs
dWUpOwotICAgICAgICBwYXJ0cy0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsr
LCBwYXJ0KTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICB9
CisgICAgZm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgdmFsdWUsIHJlc3VsdFN0
cmluZywgZmllbGRJdHIuZ2V0KCksIHBhcnRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogCiAgICAgcmV0dXJuIHBhcnRzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCmluZGV4IDJiMDZmMDdmY2FmNGNkYjdl
Yzk5NDhkYWFmNmQzNjE5Mzc4N2FkOTEuLjlmMTBiNWQ0MzY3MGI4ZGUyZjZmNDBlNGQ3NzMzODVl
MzU2ZjE4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxO
dW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFu
ZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01NywxMiArNTgsMTQgQEAgcHVibGljOgogICAgIHZvaWQgaW5p
dGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgbG9jYWxlcywgSlNW
YWx1ZSBvcHRpb25zVmFsdWUpOwogICAgIEpTVmFsdWUgZm9ybWF0KEpTR2xvYmFsT2JqZWN0Kiwg
ZG91YmxlKTsKICAgICBKU1ZhbHVlIGZvcm1hdChKU0dsb2JhbE9iamVjdCosIEpTQmlnSW50Kik7
Ci0gICAgSlNWYWx1ZSBmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlIHZhbHVl
KTsKKyAgICBKU1ZhbHVlIGZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUpOwog
ICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKTsKIAogICAgIEpT
Qm91bmRGdW5jdGlvbiogYm91bmRGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRm9ybWF0
LmdldCgpOyB9CiAgICAgdm9pZCBzZXRCb3VuZEZvcm1hdChWTSYsIEpTQm91bmRGdW5jdGlvbiop
OwogCisgICAgc3RhdGljIHZvaWQgZm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0
KiwgZG91YmxlLCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgVUZpZWxkUG9zaXRpb25JdGVyYXRv
ciosIEpTQXJyYXkqLCBKU1N0cmluZyogdW5pdCA9IG51bGxwdHIpOworCiBwcm90ZWN0ZWQ6CiAg
ICAgSW50bE51bWJlckZvcm1hdChWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5j
cHAKaW5kZXggZmIyYmI1YjY5MmNjZWMwMGUxZTRhYjc2NDI0NTdlMTExYTYyMzM1MS4uNTdiNTk2
ZDFlYTI0ZTJmYTgzOWY1NDUyZDVlZWYwNzJhNjdiN2I1YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQogICog
Q29weXJpZ2h0IChDKSAyMDE1IFN1a29sc2FrIFNha3NodXdvbmcgKHN1a29sc2FrQGdtYWlsLmNv
bSkKICAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1l
bnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSwxNSArNDAsMTUg
QEAKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50
bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXNQcm90
b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIK
KyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
TG9va3VwLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiT3B0aW9u
cy5oIgogI2luY2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgotI2luY2x1ZGUgPHVuaWNvZGUvdWRhdC5o
PgogI2luY2x1ZGUgPHVuaWNvZGUvdWxvYy5oPgotI2luY2x1ZGUgPHVuaWNvZGUvdW51bS5oPgog
I2luY2x1ZGUgPHVuaWNvZGUvdW51bXN5cy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CiAjaW5jbHVkZSA8d3RmL0xhbmd1YWdlLmg+CkBAIC0xMTQsMTcgKzExNSwyNiBAQCBzdHJ1Y3Qg
TWF0Y2hlclJlc3VsdCB7CiBjb25zdCBDbGFzc0luZm8gSW50bE9iamVjdDo6c19pbmZvID0geyAi
T2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgJmludGxPYmplY3RUYWJsZSwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShJbnRsT2JqZWN0KSB9OwogCiBJbnRsT2JqZWN0OjpJbnRsT2JqZWN0KFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBz
dHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiB7CiB9CiAKLUludGxPYmplY3Qq
IEludGxPYmplY3Q6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorSW50bE9i
amVjdCogSW50bE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgSW50bE9iamVjdCogb2JqZWN0ID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bE9iamVjdD4odm0uaGVhcCkpIEludGxPYmpl
Y3Qodm0sIHN0cnVjdHVyZSk7Ci0gICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAg
b2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gb2Jq
ZWN0OwogfQogCit2b2lkIEludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CisgICAgaWYgKE9wdGlvbnM6OnVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXQoKSkgeworICAgICAg
ICBhdXRvKiByZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciA9IEludGxSZWxhdGl2ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1
bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8SW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlw
ZSo+KGdsb2JhbE9iamVjdC0+cmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJlKCktPnN0b3JlZFBy
b3RvdHlwZU9iamVjdCgpKSk7CisgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5SZWxhdGl2ZVRpbWVGb3JtYXQsIHJlbGF0aXZlVGltZUZvcm1h
dENvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CisgICAgfQorfQorCiBTdHJ1Y3R1cmUqIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQogewogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
QEAgLTE2NCwyNiArMTc0LDcgQEAgc3RhdGljIHZvaWQgYWRkTWlzc2luZ1NjcmlwdExvY2FsZXMo
SGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzKQogICAgICAgICBhdmFpbGFibGVMb2Nh
bGVzLmFkZCh6aF9UV19TdHJpbmcuZ2V0KCkpOwogfQogCi1jb25zdCBIYXNoU2V0PFN0cmluZz4m
IGludGxDb2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PFN0cmluZz4+IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXM7Ci0gICAgSGFzaFNl
dDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzID0gY2FjaGVkQXZhaWxhYmxlTG9jYWxlcy5nZXQo
KTsKLQotICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKLSAgICBzdGQ6
OmNhbGxfb25jZShpbml0aWFsaXplT25jZSwgWyZdIHsKLSAgICAgICAgQVNTRVJUKGF2YWlsYWJs
ZUxvY2FsZXMuaXNFbXB0eSgpKTsKLSAgICAgICAgaW50MzJfdCBjb3VudCA9IHVjb2xfY291bnRB
dmFpbGFibGUoKTsKLSAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkg
ewotICAgICAgICAgICAgU3RyaW5nIGxvY2FsZSA9IGNvbnZlcnRJQ1VMb2NhbGVUb0JDUDQ3TGFu
Z3VhZ2VUYWcodWNvbF9nZXRBdmFpbGFibGUoaSkpOwotICAgICAgICAgICAgaWYgKCFsb2NhbGUu
aXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMuYWRkKGxvY2FsZSk7
Ci0gICAgICAgIH0KLSAgICAgICAgYWRkTWlzc2luZ1NjcmlwdExvY2FsZXMoYXZhaWxhYmxlTG9j
YWxlcyk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGF2YWlsYWJsZUxvY2FsZXM7Ci19Ci0KLWNvbnN0
IEhhc2hTZXQ8U3RyaW5nPiYgaW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpCitj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxBdmFpbGFibGVMb2NhbGVzKCkKIHsKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBjYWNoZWRBdmFpbGFibGVMb2NhbGVz
OwogICAgIEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcyA9IGNhY2hlZEF2YWlsYWJs
ZUxvY2FsZXMuZ2V0KCk7CkBAIC0xOTEsOSArMTgyLDkgQEAgY29uc3QgSGFzaFNldDxTdHJpbmc+
JiBpbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkKICAgICBzdGF0aWMgc3RkOjpv
bmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9u
Y2UsIFsmXSB7CiAgICAgICAgIEFTU0VSVChhdmFpbGFibGVMb2NhbGVzLmlzRW1wdHkoKSk7Ci0g
ICAgICAgIGludDMyX3QgY291bnQgPSB1ZGF0X2NvdW50QXZhaWxhYmxlKCk7CisgICAgICAgIGlu
dDMyX3QgY291bnQgPSB1bG9jX2NvdW50QXZhaWxhYmxlKCk7CiAgICAgICAgIGZvciAoaW50MzJf
dCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBj
b252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKHVkYXRfZ2V0QXZhaWxhYmxlKGkpKTsK
KyAgICAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBjb252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xhbmd1
YWdlVGFnKHVsb2NfZ2V0QXZhaWxhYmxlKGkpKTsKICAgICAgICAgICAgIGlmICghbG9jYWxlLmlz
RW1wdHkoKSkKICAgICAgICAgICAgICAgICBhdmFpbGFibGVMb2NhbGVzLmFkZChsb2NhbGUpOwog
ICAgICAgICB9CkBAIC0yMDIsNyArMTkzLDcgQEAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRs
RGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkKICAgICByZXR1cm4gYXZhaWxhYmxlTG9j
YWxlczsKIH0KIAotY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsTnVtYmVyRm9ybWF0QXZhaWxh
YmxlTG9jYWxlcygpCitjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxDb2xsYXRvckF2YWlsYWJs
ZUxvY2FsZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+
IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXM7CiAgICAgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVM
b2NhbGVzID0gY2FjaGVkQXZhaWxhYmxlTG9jYWxlcy5nZXQoKTsKQEAgLTIxMCw5ICsyMDEsOSBA
QCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVz
KCkKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7CiAgICAgc3RkOjpj
YWxsX29uY2UoaW5pdGlhbGl6ZU9uY2UsIFsmXSB7CiAgICAgICAgIEFTU0VSVChhdmFpbGFibGVM
b2NhbGVzLmlzRW1wdHkoKSk7Ci0gICAgICAgIGludDMyX3QgY291bnQgPSB1bnVtX2NvdW50QXZh
aWxhYmxlKCk7CisgICAgICAgIGludDMyX3QgY291bnQgPSB1Y29sX2NvdW50QXZhaWxhYmxlKCk7
CiAgICAgICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAg
ICAgIFN0cmluZyBsb2NhbGUgPSBjb252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKHVu
dW1fZ2V0QXZhaWxhYmxlKGkpKTsKKyAgICAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBjb252ZXJ0
SUNVTG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKHVjb2xfZ2V0QXZhaWxhYmxlKGkpKTsKICAgICAg
ICAgICAgIGlmICghbG9jYWxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBhdmFpbGFibGVM
b2NhbGVzLmFkZChsb2NhbGUpOwogICAgICAgICB9CkBAIC0zMjgsMTMgKzMxOSwxNSBAQCBib29s
IGlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJUeXBlKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAg
IEFTU0VSVCghc3RyaW5nLmlzTnVsbCgpKTsKIAotICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxl
bmd0aCgpOwotICAgIGlmIChsZW5ndGggPCAzIHx8IGxlbmd0aCA+IDgpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIGZvciAoYXV0byBjaGFyYWN0ZXIgOiBzdHJpbmcuY29kZVVuaXRzKCkp
IHsKLSAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGFudW1lcmljKGNoYXJhY3RlcikpCisgICAgZm9y
IChhdXRvIHBhcnQgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnLScpKSB7Cisg
ICAgICAgIGF1dG8gbGVuZ3RoID0gcGFydC5sZW5ndGgoKTsKKyAgICAgICAgaWYgKGxlbmd0aCA8
IDMgfHwgbGVuZ3RoID4gOCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBm
b3IgKGF1dG8gY2hhcmFjdGVyIDogcGFydC5jb2RlVW5pdHMoKSkgeworICAgICAgICAgICAgaWYg
KCFpc0FTQ0lJQWxwaGFudW1lcmljKGNoYXJhY3RlcikpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC05NzksOCAr
OTcyLDYgQEAgSlNWYWx1ZSBzdXBwb3J0ZWRMb2NhbGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXYKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBKU1ZhbHVlKCkpOwogCiAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2M7Ci0gICAg
ZGVzYy5zZXRDb25maWd1cmFibGUoZmFsc2UpOwotICAgIGRlc2Muc2V0V3JpdGFibGUoZmFsc2Up
OwogCiAgICAgc2l6ZV90IGxlbiA9IGtleXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGVuOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3QuaAppbmRleCA2MGMwMDI1MDE5Y2MwZjcxMTZjOTM3NzM0OGE0MzRlMjFkZjVkMmVmLi42YWY2
ZjczOWZkM2M5YzJiYmIzNzFkNmMwYmMzNjIzNTlhYWJiMThhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IElu
Yy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsMjAgKzQ0LDIzIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwogICAgIH0KIAotICAg
IHN0YXRpYyBJbnRsT2JqZWN0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMg
SW50bE9iamVjdCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOwogCiAgICAgREVDTEFSRV9JTkZPOwogCiBwcml2YXRlOgogICAgIEludGxPYmpl
Y3QoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9i
YWxPYmplY3QqKTsKIH07CiAKIFN0cmluZyBkZWZhdWx0TG9jYWxlKEpTR2xvYmFsT2JqZWN0Kik7
Citjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxBdmFpbGFibGVMb2NhbGVzKCk7CiBjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGludGxDb2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKTsKLWNvbnN0IEhh
c2hTZXQ8U3RyaW5nPiYgaW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwotY29u
c3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwot
aW5saW5lIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bFBsdXJhbFJ1bGVzQXZhaWxhYmxlTG9j
YWxlcygpIHsgcmV0dXJuIGludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7IH0KK2lu
bGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxv
Y2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CitpbmxpbmUgY29uc3Qg
SGFzaFNldDxTdHJpbmc+JiBpbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0
dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7IH0KK2lubGluZSBjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIGludGxQbHVyYWxSdWxlc0F2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxh
YmxlTG9jYWxlcygpOyB9CitpbmxpbmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsUmVsYXRp
dmVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2Nh
bGVzKCk7IH0KIAogYm9vbCBpbnRsQm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgb3B0aW9ucywgUHJvcGVydHlOYW1lLCBib29sJiB1c2VzRmFsbGJhY2spOwogU3RyaW5nIGlu
dGxTdHJpbmdPcHRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMsIFByb3BlcnR5
TmFtZSwgc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiB2YWx1ZXMsIGNvbnN0IGNo
YXIqIG5vdEZvdW5kLCBjb25zdCBjaGFyKiBmYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAppbmRleCBjMGI2ZTRlYWRlMWFk
MDA0M2MzNWRjOWI2NTkwNmUwZmMxYzVjYTI1Li44NzcxNjAxMjI4NGM4MWFkYzM5MjdjNjMxZDRj
MzU4N2EyMDFhYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUGx1cmFsUnVsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlcy5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIEludGxQbHVyYWxSdWxl
czo6aW5pdGlhbGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU3RyaW5nIHR5cGVTdHJpbmcgPSBp
bnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInR5cGUiKSwgeyAiY2FyZGluYWwiLCAib3JkaW5hbCIgfSwgInR5cGUgbXVzdCBi
ZSBcImNhcmRpbmFsXCIgb3IgXCJvcmRpbmFsXCIiLCAiY2FyZGluYWwiKTsKKyAgICBTdHJpbmcg
dHlwZVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5w
cm9wZXJ0eU5hbWVzLT50eXBlLCB7ICJjYXJkaW5hbCIsICJvcmRpbmFsIiB9LCAidHlwZSBtdXN0
IGJlIFwiY2FyZGluYWxcIiBvciBcIm9yZGluYWxcIiIsICJjYXJkaW5hbCIpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgbV90eXBlID0gdHlwZVN0cmluZyA9
PSAib3JkaW5hbCIgPyBVUExVUkFMX1RZUEVfT1JESU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJESU5B
TDsKIApAQCAtMjAxLDcgKzIwMSw3IEBAIEpTT2JqZWN0KiBJbnRsUGx1cmFsUnVsZXM6OnJlc29s
dmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAgSlNPYmplY3Qq
IG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIG9wdGlv
bnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc05vbnRyaXZpYWxT
dHJpbmcodm0sIG1fbG9jYWxlKSk7Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKHZtLCAidHlwZSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fdHlw
ZSA9PSBVUExVUkFMX1RZUEVfT1JESU5BTCA/ICJvcmRpbmFsIl9zIDogImNhcmRpbmFsIl9zKSk7
CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBqc05v
bnRyaXZpYWxTdHJpbmcodm0sIG1fdHlwZSA9PSBVUExVUkFMX1RZUEVfT1JESU5BTCA/ICJvcmRp
bmFsIl9zIDogImNhcmRpbmFsIl9zKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwganNOdW1iZXIo
bV9taW5pbXVtSW50ZWdlckRpZ2l0cykpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJl
cihtX21pbmltdW1GcmFjdGlvbkRpZ2l0cykpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051
bWJlcihtX21heGltdW1GcmFjdGlvbkRpZ2l0cykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODU2ZmFmMDdhNzdlNWI0OGZjY2NiODgzOWM0MjdkNGY0NDcxMjJmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1h
dC5jcHAKQEAgLTAsMCArMSwzNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKKworI2luY2x1ZGUgIkVy
cm9yLmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxPYmpl
Y3QuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0
b3IuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEludGxSZWxhdGl2ZVRpbWVGb3JtYXQpIH07CisK
K25hbWVzcGFjZSBJbnRsUlRGSW50ZXJuYWwgeworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHJl
bGV2YW50RXh0ZW5zaW9uS2V5c1sxXSA9IHsgIm51IiB9OworfQorCit2b2lkIEludGxSZWxhdGl2
ZVRpbWVGb3JtYXQ6OlVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3Io
KShVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciogcmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlcikg
Y29uc3QKK3sKKyAgICBpZiAocmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlcikKKyAgICAgICAgdXJl
bGRhdGVmbXRfY2xvc2UocmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlcik7Cit9CisKK3ZvaWQgSW50
bFJlbGF0aXZlVGltZUZvcm1hdDo6VU51bWJlckZvcm1hdERlbGV0ZXI6Om9wZXJhdG9yKCkoVU51
bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0KSBjb25zdAoreworICAgIGlmIChudW1iZXJGb3JtYXQp
CisgICAgICAgIHVudW1fY2xvc2UobnVtYmVyRm9ybWF0KTsKK30KKwordm9pZCBJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0OjpVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlcjo6b3BlcmF0b3IoKShV
RmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBpdGVyYXRvcikgY29uc3QKK3sKKyAgICBpZiAoaXRlcmF0
b3IpCisgICAgICAgIHVmaWVsZHBvc2l0ZXJfY2xvc2UoaXRlcmF0b3IpOworfQorCitJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0KiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KiBmb3Jt
YXQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Pih2
bS5oZWFwKSkgSW50bFJlbGF0aXZlVGltZUZvcm1hdCh2bSwgc3RydWN0dXJlKTsKKyAgICBmb3Jt
YXQtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gZm9ybWF0OworfQorCitTdHJ1Y3R1
cmUqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVy
biBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bFJlbGF0aXZl
VGltZUZvcm1hdDo6SW50bFJlbGF0aXZlVGltZUZvcm1hdChWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKK30KKwor
dm9pZCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Kj4oY2VsbCk7CisgICAgQVNT
RVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworCisgICAgQmFzZTo6
dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKK30KKworbmFtZXNwYWNlIEludGxS
VEZJbnRlcm5hbCB7CitzdGF0aWMgVmVjdG9yPFN0cmluZz4gbG9jYWxlRGF0YShjb25zdCBTdHJp
bmcmIGxvY2FsZSwgc2l6ZV90IGtleUluZGV4KQoreworICAgIC8vIFRoZSBpbmRleCBvZiB0aGUg
ZXh0ZW5zaW9uIGtleSAibnUiIGluIHJlbGV2YW50RXh0ZW5zaW9uS2V5cyBpcyAwLgorICAgIEFT
U0VSVF9VTlVTRUQoa2V5SW5kZXgsICFrZXlJbmRleCk7CisgICAgcmV0dXJuIG51bWJlcmluZ1N5
c3RlbXNGb3JMb2NhbGUobG9jYWxlKTsKK30KK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0
MDIvI3NlYy1Jbml0aWFsaXplUmVsYXRpdmVUaW1lRm9ybWF0Cit2b2lkIEludGxSZWxhdGl2ZVRp
bWVGb3JtYXQ6OmluaXRpYWxpemVSZWxhdGl2ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVkTG9jYWxlcyA9
IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBsb2NhbGVzKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworCisgICAgSlNPYmplY3QqIG9wdGlvbnM7
CisgICAgaWYgKG9wdGlvbnNWYWx1ZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICBvcHRpb25zID0g
Y29uc3RydWN0RW1wdHlPYmplY3Qodm0sIGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVj
dFN0cnVjdHVyZSgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnNWYWx1
ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworICAgIH0KKworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG9wdDsK
KyAgICBTdHJpbmcgbG9jYWxlTWF0Y2hlciA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0
LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLCB7ICJsb29rdXAiLCAi
YmVzdCBmaXQiIH0sICJsb2NhbGVNYXRjaGVyIG11c3QgYmUgZWl0aGVyIFwibG9va3VwXCIgb3Ig
XCJiZXN0IGZpdFwiIiwgImJlc3QgZml0Iik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKKyAgICBvcHQuYWRkKHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZU1hdGNoZXIu
c3RyaW5nKCksIGxvY2FsZU1hdGNoZXIpOworCisgICAgU3RyaW5nIG51bWJlcmluZ1N5c3RlbSA9
IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVz
LT5udW1iZXJpbmdTeXN0ZW0sIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAoIW51bWJlcmluZ1N5c3RlbS5pc051
bGwoKSkgeworICAgICAgICBpZiAoIWlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJUeXBlKG51bWJl
cmluZ1N5c3RlbSkpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAibnVtYmVyaW5nU3lzdGVtIGlzIG5vdCBhIHdlbGwtZm9ybWVkIG51bWJlcmluZyBz
eXN0ZW0gdmFsdWUiX3MpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IG9wdC5hZGQoIm51Il9zLCBudW1iZXJpbmdTeXN0ZW0pOworICAgIH0KKworICAgIGNvbnN0IEhh
c2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcyA9IGludGxSZWxhdGl2ZVRpbWVGb3JtYXRB
dmFpbGFibGVMb2NhbGVzKCk7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2ZWQg
PSByZXNvbHZlTG9jYWxlKGdsb2JhbE9iamVjdCwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVk
TG9jYWxlcywgb3B0LCBJbnRsUlRGSW50ZXJuYWw6OnJlbGV2YW50RXh0ZW5zaW9uS2V5cywgV1RG
X0FSUkFZX0xFTkdUSChJbnRsUlRGSW50ZXJuYWw6OnJlbGV2YW50RXh0ZW5zaW9uS2V5cyksIElu
dGxSVEZJbnRlcm5hbDo6bG9jYWxlRGF0YSk7CisgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5nZXQo
dm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLnN0cmluZygpKTsKKyAgICBpZiAobV9sb2NhbGUuaXNF
bXB0eSgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gaW5pdGlhbGl6ZSBSZWxhdGl2ZVRpbWVGb3JtYXQgZHVlIHRvIGludmFsaWQgbG9j
YWxlIl9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fbnVtYmVyaW5nU3lzdGVt
ID0gcmVzb2x2ZWQuZ2V0KCJudSJfcyk7CisgICAgQ1N0cmluZyBkYXRhTG9jYWxlV2l0aEV4dGVu
c2lvbnMgPSBtYWtlU3RyaW5nKHJlc29sdmVkLmdldCgiZGF0YUxvY2FsZSJfcyksICItdS1udS0i
LCBtX251bWJlcmluZ1N5c3RlbSkudXRmOCgpOworCisgICAgU3RyaW5nIHN0eWxlID0gaW50bFN0
cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxl
LCB7ICJsb25nIiwgInNob3J0IiwgIm5hcnJvdyIgfSwgInN0eWxlIG11c3QgYmUgZWl0aGVyIFwi
bG9uZ1wiLCBcInNob3J0XCIsIG9yIFwibmFycm93XCIiLCAibG9uZyIpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgaWYgKHN0eWxlID09ICJsb25nIikKKyAg
ICAgICAgbV9zdHlsZSA9IFVEQVRfU1RZTEVfTE9ORzsKKyAgICBlbHNlIGlmIChzdHlsZSA9PSAi
c2hvcnQiKQorICAgICAgICBtX3N0eWxlID0gVURBVF9TVFlMRV9TSE9SVDsKKyAgICBlbHNlIGlm
IChzdHlsZSA9PSAibmFycm93IikKKyAgICAgICAgbV9zdHlsZSA9IFVEQVRfU1RZTEVfTkFSUk9X
OworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICBTdHJpbmcg
bnVtZXJpYyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5udW1lcmljLCB7ICJhbHdheXMiLCAiYXV0byIgfSwgIm51bWVyaWMgbXVzdCBi
ZSBlaXRoZXIgXCJhbHdheXNcIiBvciBcImF1dG9cIiIsICJhbHdheXMiKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIG1fbnVtZXJpYyA9IChudW1lcmljID09
ICJhbHdheXMiKTsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAg
IG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJG
b3JtYXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBkYXRhTG9j
YWxlV2l0aEV4dGVuc2lvbnMuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CisgICAgaWYgKFVO
TElLRUxZKFVfRkFJTFVSRShzdGF0dXMpKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0
Il9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcmVsYXRpdmVEYXRlVGltZUZv
cm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciwgVVJl
bGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJEZWxldGVyPih1cmVsZGF0ZWZtdF9vcGVuKGRhdGFMb2Nh
bGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksIG1fbnVtYmVyRm9ybWF0LmdldCgpLCBtX3N0eWxlLCBV
RElTUENUWF9DQVBJVEFMSVpBVElPTl9GT1JfU1RBTkRBTE9ORSwgJnN0YXR1cykpOworICAgIGlm
IChVTkxJS0VMWShVX0ZBSUxVUkUoc3RhdHVzKSkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFJlbGF0aXZlVGltZUZv
cm1hdCJfcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3N0YXRpYyBBU0NJSUxpdGVy
YWwgc3R5bGVTdHJpbmcoVURhdGVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyU3R5bGUgc3R5bGUp
Cit7CisgICAgc3dpdGNoIChzdHlsZSkgeworICAgIGNhc2UgVURBVF9TVFlMRV9MT05HOgorICAg
ICAgICByZXR1cm4gImxvbmciX3M7CisgICAgY2FzZSBVREFUX1NUWUxFX1NIT1JUOgorICAgICAg
ICByZXR1cm4gInNob3J0Il9zOworICAgIGNhc2UgVURBVF9TVFlMRV9OQVJST1c6CisgICAgICAg
IHJldHVybiAibmFycm93Il9zOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cit9CisKK3N0YXRpYyBBU0NJSUxpdGVyYWwg
bnVtZXJpY1N0cmluZyhib29sIG51bWVyaWMpCit7CisgICAgcmV0dXJuIG51bWVyaWMgPyAiYWx3
YXlzIl9zIDogImF1dG8iX3M7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMt
aW50bC5yZWxhdGl2ZXRpbWVmb3JtYXQucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucworSlNPYmpl
Y3QqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBKU09iamVjdCogb3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7
CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUsIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgbV9sb2NhbGUpKTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHN0eWxl
U3RyaW5nKG1fc3R5bGUpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5udW1lcmljLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG51bWVyaWNTdHJpbmcobV9u
dW1lcmljKSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bnVtYmVyaW5nU3lzdGVtLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fbnVtYmVyaW5nU3lzdGVt
KSk7CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9CisKK3N0YXRpYyBTdHJpbmdWaWV3IHNpbmd1bGFy
VW5pdChTdHJpbmdWaWV3IHVuaXQpCit7CisgICAgLy8gUGx1cmFscyBhcmUgYWxsb3dlZCwgYnV0
IHRoYW5rZnVsbHkgdGhleSdyZSBhbGwganVzdCBhIHNpbXBsZSAtcy4KKyAgICByZXR1cm4gdW5p
dC5lbmRzV2l0aCgicyIpID8gdW5pdC5sZWZ0KHVuaXQubGVuZ3RoKCkgLSAxKSA6IHVuaXQ7Cit9
CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtc2luZ3VsYXJyZWxhdGl2ZXRpbWV1
bml0CitzdGF0aWMgT3B0aW9uYWw8VVJlbGF0aXZlRGF0ZVRpbWVVbml0PiByZWxhdGl2ZVRpbWVV
bml0VHlwZShTdHJpbmdWaWV3IHVuaXQpCit7CisgICAgU3RyaW5nVmlldyBzaW5ndWxhciA9IHNp
bmd1bGFyVW5pdCh1bml0KTsKKworICAgIGlmIChzaW5ndWxhciA9PSAic2Vjb25kIikKKyAgICAg
ICAgcmV0dXJuIFVEQVRfUkVMX1VOSVRfU0VDT05EOworICAgIGlmIChzaW5ndWxhciA9PSAibWlu
dXRlIikKKyAgICAgICAgcmV0dXJuIFVEQVRfUkVMX1VOSVRfTUlOVVRFOworICAgIGlmIChzaW5n
dWxhciA9PSAiaG91ciIpCisgICAgICAgIHJldHVybiBVREFUX1JFTF9VTklUX0hPVVI7CisgICAg
aWYgKHNpbmd1bGFyID09ICJkYXkiKQorICAgICAgICByZXR1cm4gVURBVF9SRUxfVU5JVF9EQVk7
CisgICAgaWYgKHNpbmd1bGFyID09ICJ3ZWVrIikKKyAgICAgICAgcmV0dXJuIFVEQVRfUkVMX1VO
SVRfV0VFSzsKKyAgICBpZiAoc2luZ3VsYXIgPT0gIm1vbnRoIikKKyAgICAgICAgcmV0dXJuIFVE
QVRfUkVMX1VOSVRfTU9OVEg7CisgICAgaWYgKHNpbmd1bGFyID09ICJxdWFydGVyIikKKyAgICAg
ICAgcmV0dXJuIFVEQVRfUkVMX1VOSVRfUVVBUlRFUjsKKyAgICBpZiAoc2luZ3VsYXIgPT0gInll
YXIiKQorICAgICAgICByZXR1cm4gVURBVF9SRUxfVU5JVF9ZRUFSOworCisgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKK30KKworU3RyaW5nIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdElu
dGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSwgU3RyaW5n
VmlldyB1bml0KQoreworICAgIEFTU0VSVChtX3JlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIpOwor
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpIHsK
KyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJudW1iZXIgYXJn
dW1lbnQgbXVzdCBiZSBmaW5pdGUiX3MpOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
fQorCisgICAgYXV0byB1bml0VHlwZSA9IHJlbGF0aXZlVGltZVVuaXRUeXBlKHVuaXQpOworICAg
IGlmICghdW5pdFR5cGUpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJ1bml0IGFyZ3VtZW50IGlzIG5vdCBhIHJlY29nbml6ZWQgdW5pdCB0eXBlIl9zKTsK
KyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKworICAgIGF1dG8gZm9ybWF0UmVsYXRp
dmVUaW1lID0gbV9udW1lcmljID8gdXJlbGRhdGVmbXRfZm9ybWF0TnVtZXJpYyA6IHVyZWxkYXRl
Zm10X2Zvcm1hdDsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAg
IFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdCgzMik7CisgICAgYXV0byByZXN1bHRMZW5ndGggPSBm
b3JtYXRSZWxhdGl2ZVRpbWUobV9yZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyLmdldCgpLCB2YWx1
ZSwgdW5pdFR5cGUudmFsdWUoKSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSwgJnN0YXR1
cyk7CisgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikgeworICAgICAg
ICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIHJlc3VsdC5ncm93KHJlc3VsdExlbmd0
aCk7CisgICAgICAgIGZvcm1hdFJlbGF0aXZlVGltZShtX3JlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0
ZXIuZ2V0KCksIHZhbHVlLCB1bml0VHlwZS52YWx1ZSgpLCByZXN1bHQuZGF0YSgpLCByZXN1bHRM
ZW5ndGgsICZzdGF0dXMpOworICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoVV9GQUlMVVJFKHN0YXR1
cykpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gZm9ybWF0IHJlbGF0aXZlIHRpbWUiX3MpOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5ndGgp
OworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUZvcm1hdFJlbGF0aXZlVGlt
ZQorSlNWYWx1ZSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlLCBTdHJpbmdWaWV3IHVuaXQpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIFN0cmluZyByZXN1bHQgPSBmb3JtYXRJbnRlcm5hbChnbG9iYWxP
YmplY3QsIHZhbHVlLCB1bml0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCByZXN1bHQpOworfQorCisvLyBodHRwczovL3Rj
MzkuZXMvZWNtYTQwMi8jc2VjLUZvcm1hdFJlbGF0aXZlVGltZVRvUGFydHMKK0pTVmFsdWUgSW50
bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBkb3VibGUgdmFsdWUsIFN0cmluZ1ZpZXcgdW5pdCkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgU3RyaW5nIGZvcm1hdHRlZFJlbGF0aXZlVGltZSA9IGZvcm1hdEludGVybmFs
KGdsb2JhbE9iamVjdCwgdmFsdWUsIHVuaXQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBh
dXRvIGl0ZXJhdG9yID0gc3RkOjp1bmlxdWVfcHRyPFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IsIFVG
aWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyPih1ZmllbGRwb3NpdGVyX29wZW4oJnN0YXR1cykp
OworICAgIEFTU0VSVChVX1NVQ0NFU1Moc3RhdHVzKSk7CisKKyAgICBkb3VibGUgYWJzVmFsdWUg
PSBzdGQ6OmFicyh2YWx1ZSk7CisKKyAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXIoMzIpOwor
ICAgIGF1dG8gbnVtYmVyTGVuZ3RoID0gdW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMobV9udW1i
ZXJGb3JtYXQuZ2V0KCksIGFic1ZhbHVlLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpLCBp
dGVyYXRvci5nZXQoKSwgJnN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVS
RkxPV19FUlJPUikgeworICAgICAgICBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgICAgIGJ1
ZmZlci5ncm93KG51bWJlckxlbmd0aCk7CisgICAgICAgIHVudW1fZm9ybWF0RG91YmxlRm9yRmll
bGRzKG1fbnVtYmVyRm9ybWF0LmdldCgpLCBhYnNWYWx1ZSwgYnVmZmVyLmRhdGEoKSwgbnVtYmVy
TGVuZ3RoLCBpdGVyYXRvci5nZXQoKSwgJnN0YXR1cyk7CisgICAgfQorICAgIGlmIChVX0ZBSUxV
UkUoc3RhdHVzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IHJlbGF0aXZlIHRpbWUiX3MpOworCisgICAgYXV0byBm
b3JtYXR0ZWROdW1iZXIgPSBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgbnVtYmVyTGVuZ3RoKTsKKwor
ICAgIEpTQXJyYXkqIHBhcnRzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhD
b250aWd1b3VzKSwgMCk7CisgICAgaWYgKCFwYXJ0cykKKyAgICAgICAgcmV0dXJuIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKKworICAgIEpTU3RyaW5nKiBsaXRl
cmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfcyk7CisKKyAgICAv
LyBXZSBvbmx5IGhhdmUgb25lIGlucHV0IG51bWJlciwgc28gb3VyIHJlbGF0aXZlIHRpbWUgd2ls
bCBoYXZlIGF0IG1vc3Qgb25lIG51bWVyaWMgc3Vic3RyaW5nLAorICAgIC8vIGJ1dCB3ZSBuZWVk
IHRvIGxpc3QgYWxsIG9mIHRoZSBudW1lcmljIHBhcnRzIHNlcGFyYXRlbHkuCisgICAgc2l6ZV90
IG51bWJlckVuZCA9IDA7CisgICAgc2l6ZV90IG51bWJlclN0YXJ0ID0gZm9ybWF0dGVkUmVsYXRp
dmVUaW1lLmZpbmQoZm9ybWF0dGVkTnVtYmVyKTsKKyAgICBpZiAobnVtYmVyU3RhcnQgIT0gbm90
Rm91bmQpIHsKKyAgICAgICAgbnVtYmVyRW5kID0gbnVtYmVyU3RhcnQgKyBudW1iZXJMZW5ndGg7
CisKKyAgICAgICAgLy8gQWRkIGluaXRpYWwgbGl0ZXJhbCBpZiB0aGVyZSBpcyBvbmUuCisgICAg
ICAgIGlmIChudW1iZXJTdGFydCkgeworICAgICAgICAgICAgSlNPYmplY3QqIHBhcnQgPSBjb25z
dHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgcGFydC0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBsaXRlcmFsU3RyaW5nKTsKKyAgICAgICAg
ICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUsIGpzU3Vic3Ry
aW5nKHZtLCBmb3JtYXR0ZWRSZWxhdGl2ZVRpbWUsIDAsIG51bWJlclN0YXJ0KSk7CisgICAgICAg
ICAgICBwYXJ0cy0+cHVzaChnbG9iYWxPYmplY3QsIHBhcnQpOworICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIEludGxOdW1i
ZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIGFic1ZhbHVlLCBm
b3JtYXR0ZWROdW1iZXIsIGl0ZXJhdG9yLmdldCgpLCBwYXJ0cywganNTdHJpbmcodm0sIHNpbmd1
bGFyVW5pdCh1bml0KS50b1N0cmluZygpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisgICAgfQorCisgICAgLy8gQWRkIGZpbmFsIGxpdGVyYWwgaWYgdGhlcmUg
aXMgb25lLgorICAgIGF1dG8gc3RyaW5nTGVuZ3RoID0gZm9ybWF0dGVkUmVsYXRpdmVUaW1lLmxl
bmd0aCgpOworICAgIGlmIChudW1iZXJFbmQgIT0gc3RyaW5nTGVuZ3RoKSB7CisgICAgICAgIEpT
T2JqZWN0KiBwYXJ0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBsaXRlcmFsU3Ry
aW5nKTsKKyAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1
ZSwganNTdWJzdHJpbmcodm0sIGZvcm1hdHRlZFJlbGF0aXZlVGltZSwgbnVtYmVyRW5kLCBzdHJp
bmdMZW5ndGggLSBudW1iZXJFbmQpKTsKKyAgICAgICAgcGFydHMtPnB1c2goZ2xvYmFsT2JqZWN0
LCBwYXJ0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICB9
CisKKyAgICByZXR1cm4gcGFydHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmFlYjUzOTljOGZhMjlmZTU4ZmU4NmEzNDc2MjZhZTVhNjJjNjRiZjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0LmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSA8dW5pY29kZS91ZmllbGRw
b3NpdGVyLmg+CisjaW5jbHVkZSA8dW5pY29kZS91cmVsZGF0ZWZtdC5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdCBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVj
dDsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsK
KworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKiBjZWxsKQorICAgIHsKKyAgICAgICAg
c3RhdGljX2Nhc3Q8SW50bFJlbGF0aXZlVGltZUZvcm1hdCo+KGNlbGwpLT5JbnRsUmVsYXRpdmVU
aW1lRm9ybWF0Ojp+SW50bFJlbGF0aXZlVGltZUZvcm1hdCgpOworICAgIH0KKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJ
c29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZt
LmludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIHN0YXRp
YyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgdm9pZCBpbml0aWFsaXplUmVsYXRp
dmVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlIG9w
dGlvbnMpOworICAgIEpTVmFsdWUgZm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlLCBTdHJp
bmdWaWV3IHVuaXRTdHJpbmcpOworICAgIEpTVmFsdWUgZm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9i
amVjdCosIGRvdWJsZSwgU3RyaW5nVmlldyB1bml0U3RyaW5nKTsKKyAgICBKU09iamVjdCogcmVz
b2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0Kik7CisKK3ByaXZhdGU6CisgICAgSW50bFJlbGF0
aXZlVGltZUZvcm1hdChWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mKTsKKyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CisKKyAgICBTdHJpbmcgZm9ybWF0SW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUs
IFN0cmluZ1ZpZXcgdW5pdCk7CisKKyAgICBzdHJ1Y3QgVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0
ZXJEZWxldGVyIHsKKyAgICAgICAgdm9pZCBvcGVyYXRvcigpKFVSZWxhdGl2ZURhdGVUaW1lRm9y
bWF0dGVyKikgY29uc3Q7CisgICAgfTsKKyAgICBzdHJ1Y3QgVU51bWJlckZvcm1hdERlbGV0ZXIg
eworICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVU51bWJlckZvcm1hdCopIGNvbnN0OworICAgIH07
CisgICAgc3RydWN0IFVGaWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyIHsKKyAgICAgICAgdm9p
ZCBvcGVyYXRvcigpKFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqKSBjb25zdDsKKyAgICB9OworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyLCBVUmVsYXRpdmVE
YXRlVGltZUZvcm1hdHRlckRlbGV0ZXI+IG1fcmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+IG1f
bnVtYmVyRm9ybWF0OworCisgICAgU3RyaW5nIG1fbG9jYWxlOworICAgIFN0cmluZyBtX251bWJl
cmluZ1N5c3RlbTsKKyAgICBVRGF0ZVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJTdHlsZSBtX3N0
eWxlIHsgVURBVF9TVFlMRV9MT05HIH07CisgICAgYm9vbCBtX251bWVyaWMgeyB0cnVlIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI2N2ZjYjkwMDExM2M4YjUzZDMxODc5ZTJmZmEwMzhkYzA4MGQyYTAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50
bE9iamVjdC5oIgorI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRl
ICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCisjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgorI2luY2x1ZGUgIkxvb2t1cC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FT
U0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcik7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKTsKKworfQorCisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZv
cm1hdENvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJ
bmZvIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rp
b24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6c19pbmZvLCAmcmVsYXRpdmVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3JUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgSW50bFJlbGF0aXZlVGltZUZv
cm1hdENvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gcmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0
b3JUYWJsZQorICBzdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yRnVuY1N1cHBvcnRlZExvY2FsZXNPZiAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCitAZW5kCisqLworCitJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIHJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSkKK3sKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50
bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yPih2bS5oZWFwKSkgSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5p
c2hDcmVhdGlvbih2bSwgcmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKTsKKyAgICByZXR1cm4g
Y29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBjYWxsSW50bFJlbGF0aXZlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCos
IENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0SW50bFJlbGF0aXZlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
CitJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OkludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlLCBjYWxsSW50bFJlbGF0aXZlVGltZUZvcm1hdCwgY29uc3RydWN0SW50bFJl
bGF0aXZlVGltZUZvcm1hdCkKK3sKK30KKwordm9pZCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFBy
b3RvdHlwZSogcmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtLCAiUmVsYXRpdmVUaW1lRm9ybWF0Il9zLCBOYW1lQWRkaXRpb25Nb2RlOjpX
aXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcmVsYXRpdmVUaW1lRm9ybWF0UHJv
dG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MCksIFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CisgICAgcmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKK30KKworLy8g
aHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLlJlbGF0aXZlVGltZUZvcm1hdAorc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SW50bFJlbGF0aXZlVGlt
ZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBJ
bnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+anNDYWxsZWUoKSwgY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSwganNDYXN0PEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcio+KGNhbGxGcmFtZS0+anNDYWxsZWUoKSktPnJl
bGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZSh2bSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqIHJl
bGF0aXZlVGltZUZvcm1hdCA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwgc3Ry
dWN0dXJlKTsKKyAgICBBU1NFUlQocmVsYXRpdmVUaW1lRm9ybWF0KTsKKworICAgIHNjb3BlLnJl
bGVhc2UoKTsKKyAgICByZWxhdGl2ZVRpbWVGb3JtYXQtPmluaXRpYWxpemVSZWxhdGl2ZVRpbWVG
b3JtYXQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlbGF0aXZlVGltZUZvcm1h
dCk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSop
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiUmVsYXRpdmVUaW1lRm9ybWF0IikpOworfQorCisvLyBodHRwczovL3RjMzku
ZXMvZWNtYTQwMi8jc2VjLUludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNP
ZgorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29u
c3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMgPSBpbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOworCisgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdGVk
TG9jYWxlcyA9IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KHN1cHBvcnRlZExvY2FsZXMoZ2xvYmFsT2JqZWN0LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0
ZWRMb2NhbGVzLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSkpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I3YmQw
OTAwM2ZlOGJlYzI3OTJjNDU4NGVlMjg0NTgxZTc3Mjg4OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlw
ZTsKKworY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yIGZpbmFsIDogcHVi
bGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5j
dGlvbiBCYXNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBz
dGF0aWMgSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1
Y3R1cmUqLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
KworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIFN0cnVjdHVyZSogcmVsYXRpdmVUaW1lRm9ybWF0
U3RydWN0dXJlKFZNJikgY29uc3QgeyByZXR1cm4gZ2xvYmFsT2JqZWN0KCktPnJlbGF0aXZlVGlt
ZUZvcm1hdFN0cnVjdHVyZSgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSopOworCitwcml2YXRlOgor
ICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwor
fTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxSZWxhdGl2ZVRpbWVG
b3JtYXRDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZl
VGltZUZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZGI1ZTVhNGQy
MmQzOTMyODVhNDY3NGVhMTMwZjczYTMxZTAxMjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKworI2luY2x1
ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqLCBDYWxs
RnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxhdGl2
ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKik7CisKK30KKworI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90
b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bFJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZTo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNf
aW5mbywgJnJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUpIH07CisKKy8qIFNv
dXJjZSBmb3IgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaAorQGJlZ2luIHJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZVRhYmxlCisgIGZvcm1hdCAgICAgICAgICAgSW50bFJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXQgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDIKKyAgZm9ybWF0VG9QYXJ0cyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90
eXBlRnVuY0Zvcm1hdFRvUGFydHMgICAgRG9udEVudW18RnVuY3Rpb24gMgorICByZXNvbHZlZE9w
dGlvbnMgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25z
ICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCitJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
UHJvdG90eXBlKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJv
dG90eXBlKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0UHJvdG90eXBlPih2bS5oZWFwKSkgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3Rv
dHlwZSh2bSwgc3RydWN0dXJlKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlw
ZTo6SW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCJfcyksIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7Cit9CisKKy8vIGh0dHBzOi8v
dGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZv
cm1hdAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
UHJvdG90eXBlRnVuY0Zvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSW50bFJlbGF0aXZl
VGltZUZvcm1hdCogcmVsYXRpdmVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcmVs
YXRpdmVUaW1lRm9ybWF0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIFJlbGF0aXZlVGltZUZvcm1hdCJfcykpOworCisgICAgZG91YmxlIHZhbHVlID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgU3RyaW5nIHVu
aXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZWxhdGl2ZVRpbWVGb3Jt
YXQtPmZvcm1hdChnbG9iYWxPYmplY3QsIHZhbHVlLCB1bml0KSkpOworfQorCisvLyBodHRwczov
L3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5m
b3JtYXRUb1BhcnRzCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxhdGl2ZVRp
bWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdCogcmVsYXRpdmVUaW1lRm9ybWF0ID0ganNEeW5hbWlj
Q2FzdDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghcmVsYXRpdmVUaW1lRm9ybWF0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBSZWxhdGl2ZVRpbWVGb3JtYXQiX3MpKTsK
KworICAgIGRvdWJsZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoZ2xv
YmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKKworICAgIFN0cmluZyB1bml0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1dURlN0
cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUocmVsYXRpdmVUaW1lRm9ybWF0LT5mb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgdmFs
dWUsIHVuaXQpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtaW50bC5y
ZWxhdGl2ZXRpbWVmb3JtYXQucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucworRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29s
dmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1h
dCogcmVsYXRpdmVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcmVsYXRpdmVUaW1l
Rm9ybWF0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUucmVz
b2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFs
aXplZCBhcyBhIFJlbGF0aXZlVGltZUZvcm1hdCJfcykpOworCisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVsYXRpdmVUaW1lRm9ybWF0LT5yZXNvbHZlZE9w
dGlvbnMoZ2xvYmFsT2JqZWN0KSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQ
cm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXRQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jY2JhZWE4ZTc1YTQ4MTI4ODA4MmI1OTA4
MGEwYWVkY2VlNTA3MzU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5t
ZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVjdC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3Rv
dHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2lu
ZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0
eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNz
PgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAg
ICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdFByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RT
cGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVf
SU5GTzsKKworcHJvdGVjdGVkOgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworcHJp
dmF0ZToKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKFZNJiwgU3RydWN0dXJl
Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA3NjRlMTAwNTM1OGQxOWU5ZTk2ZTM5
OTBjOTIzNTYzN2M2ZDBlM2FmLi4xOWE0OGZiOTMwYzViZjBmMzU1MWUzZjM0NmQ2NGM4NzU2ZTQ1
NjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCkBAIC04Niw2ICs4Niw4IEBACiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1
ZGUgIkludGxQbHVyYWxSdWxlcy5oIgogI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZS5oIgorI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSXRlcmF0b3JQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKICNpbmNsdWRlICJKU0FycmF5
QnVmZmVyLmgiCkBAIC05NTksNiArOTYxLDEyIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9y
KiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAg
ICAgICAgICAgICBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIHBsdXJhbFJ1bGVzUHJvdG90eXBl
ID0gSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0
LCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKICAgICAgICAgICAg
IGluaXQuc2V0KEludGxQbHVyYWxSdWxlczo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2Jh
bE9iamVjdCwgcGx1cmFsUnVsZXNQcm90b3R5cGUpKTsKICAgICAgICAgfSk7CisgICAgbV9yZWxh
dGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICBbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOworICAg
ICAgICAgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSogcmVsYXRpdmVUaW1lRm9y
bWF0UHJvdG90eXBlID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKGlu
aXQudm0sIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShp
bml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsK
KyAgICAgICAgICAgIGluaXQuc2V0KEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmNyZWF0ZVN0cnVj
dHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIHJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSkp
OworICAgICAgICB9KTsKICAgICBtX2RlZmF1bHRDb2xsYXRvci5pbml0TGF0ZXIoCiAgICAgICAg
IFtdIChjb25zdCBJbml0aWFsaXplcjxJbnRsQ29sbGF0b3I+JiBpbml0KSB7CiAgICAgICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lcik7CkBAIC05NzAsNyArOTc4LDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0
b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUK
ICAgICAgICAgICAgIGluaXQuc2V0KGNvbGxhdG9yKTsKICAgICAgICAgfSk7CiAKLSAgICBJbnRs
T2JqZWN0KiBpbnRsID0gSW50bE9iamVjdDo6Y3JlYXRlKHZtLCBJbnRsT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CisgICAgSW50bE9i
amVjdCogaW50bCA9IEludGxPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywgSW50bE9iamVjdDo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5JbnRsLCBpbnRs
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAK
ICAgICBtX21vZHVsZUxvYWRlci5pbml0TGF0ZXIoCkBAIC0xNzY5LDYgKzE3NzcsNyBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUudmlzaXQo
dmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS52aXNp
dCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX3BsdXJhbFJ1bGVzU3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1fcmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJl
LnZpc2l0KHZpc2l0b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxs
R2V0dGVyRnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVsbFNl
dHRlckZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IGIzN2I4YWU2Y2M5ZTZmZWNkZDFlNjI5NDU2YWJjYzQ1ZDM3NDE1MmUu
LmEwYzNiNGFhZjAwMDQ2ZDJkOTQxNmI0OTBiYTYyNTI0NGQ5OGYzNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjk0LDYgKzI5NCw3
IEBAIHB1YmxpYzoKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4g
bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmU+IG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5
PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmU7CisgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcmVsYXRpdmVUaW1lRm9y
bWF0U3RydWN0dXJlOwogCiAgICAgV3JpdGVCYXJyaWVyPE51bGxHZXR0ZXJGdW5jdGlvbj4gbV9u
dWxsR2V0dGVyRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPE51bGxTZXR0ZXJGdW5jdGlvbj4g
bV9udWxsU2V0dGVyRnVuY3Rpb247CkBAIC03ODgsNiArNzg5LDcgQEAgcHVibGljOgogICAgIFN0
cnVjdHVyZSogbnVtYmVyRm9ybWF0U3RydWN0dXJlKCkgeyByZXR1cm4gbV9udW1iZXJGb3JtYXRT
dHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVj
dHVyZSgpIHsgcmV0dXJuIG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAg
ICAgU3RydWN0dXJlKiBwbHVyYWxSdWxlc1N0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGx1cmFsUnVs
ZXNTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiByZWxhdGl2ZVRpbWVGb3Jt
YXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3JlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZS5nZXQo
dGhpcyk7IH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UmVtb3RlRGVidWdnaW5n
RW5hYmxlZChib29sKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHJlbW90ZURlYnVnZ2lu
Z0VuYWJsZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
TGlzdC5oCmluZGV4IGJkZmJmNGM3ZTFjOTk4MTk4ODlhODdhMDg0YWY1MTcxZTcxZDg1NDIuLmIz
ZjE1NjZiM2UwNmRlNzBmYmZiODkwNTdmNzFlMWNkNzJhZTNhMTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNDg0LDYgKzQ4NCw3IEBAIGNvbnN0
ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihC
b29sLCB1c2VXZWJBc3NlbWJseU11bHRpVmFsdWVzLCB0cnVlLCBOb3JtYWwsICJBbGxvdyB0eXBl
cyBmcm9tIHRoZSB3YXNtIG11bGl0LXZhbHVlcyBzcGVjLiIpIFwKICAgICB2KEJvb2wsIHVzZVdl
YWtSZWZzLCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBXZWFrUmVmIGNvbnN0cnVjdG9yLiIp
IFwKICAgICB2KEJvb2wsIHVzZUJpZ0ludCwgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdp
bGwgZW5hYmxlIEJpZ0ludCBzdXBwb3J0LiIpIFwKKyAgICB2KEJvb2wsIHVzZUludGxSZWxhdGl2
ZVRpbWVGb3JtYXQsIGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0IGNvbnN0cnVjdG9yLiIpIFwKICAgICB2KEJvb2wsIHVzZUFycmF5QWxsb2NhdGlvblBy
b2ZpbGluZywgdHJ1ZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgd2Ugd2lsbCB1c2Ugb3VyIG5vcm1hbCBh
cnJheSBhbGxvY2F0aW9uIHByb2ZpbGluZy4gSWYgZmFsc2UsIHRoZSBhbGxvY2F0aW9uIHByb2Zp
bGUgd2lsbCBhbHdheXMgY2xhaW0gdG8gYmUgdW5kZWNpZGVkLiIpIFwKICAgICB2KEJvb2wsIGZv
cmNlUG9seVByb3RvLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgY3JlYXRlX3RoaXMgd2lsbCBh
bHdheXMgY3JlYXRlIGFuIG9iamVjdCB3aXRoIGEgcG9seSBwcm90byBzdHJ1Y3R1cmUuIikgXAog
ICAgIHYoQm9vbCwgZm9yY2VNaW5pVk1Nb2RlLCBmYWxzZSwgTm9ybWFsLCAiSWYgdHJ1ZSwgaXQg
d2lsbCBmb3JjZSBtaW5pIFZNIG1vZGUgb24uIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCmluZGV4IDVjMGVlMjYxMzc3NmU5NjBmNDg3ODZiYjlhZmY3OTA1YzkxNDdhZDMuLjE2
MmU5OWRlZDNlYjAxYjIyNzAyNWE4MjJlMDYzMmIyMWM4NjFkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKQEAgLTc3LDYgKzc3LDcgQEAKICNpbmNsdWRlICJJbnRsRGF0ZVRp
bWVGb3JtYXQuaCIKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCiAjaW5jbHVkZSAiSW50
bFBsdXJhbFJ1bGVzLmgiCisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgogI2lu
Y2x1ZGUgIklzb0hlYXBDZWxsVHlwZS5oIgogI2luY2x1ZGUgIklzb0lubGluZWRIZWFwQ2VsbFR5
cGUuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCkBAIC0zNDAsNiArMzQxLDcgQEAgVk06OlZNKFZN
VHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgaW50bERhdGVUaW1lRm9ybWF0
SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxEYXRlVGltZUZvcm1hdD4o
KSkKICAgICAsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpj
cmVhdGU8SW50bE51bWJlckZvcm1hdD4oKSkKICAgICAsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxs
VHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsUGx1cmFsUnVsZXM+KCkpCisgICAgLCBp
bnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ+KCkpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAg
ICwgd2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVh
dGU8SlNXZWJBc3NlbWJseUNvZGVCbG9jaz4oKSkKICAgICAsIHdlYkFzc2VtYmx5RnVuY3Rpb25I
ZWFwQ2VsbFR5cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8V2ViQXNzZW1ibHlGdW5jdGlvbj4o
KSkKQEAgLTE1MTEsNiArMTUxMyw3IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhpbnRsQ29sbGF0b3JTcGFjZSwgaW50bENvbGxhdG9ySGVhcENlbGxUCiBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bERhdGVUaW1lRm9ybWF0U3BhY2Us
IGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bERhdGVUaW1lRm9ybWF0
KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxOdW1iZXJGb3Jt
YXRTcGFjZSwgaW50bE51bWJlckZvcm1hdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bE51bWJlckZv
cm1hdCkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUGx1cmFs
UnVsZXNTcGFjZSwgaW50bFBsdXJhbFJ1bGVzSGVhcENlbGxUeXBlLmdldCgpLCBJbnRsUGx1cmFs
UnVsZXMpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFJlbGF0
aXZlVGltZUZvcm1hdFNwYWNlLCBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlLmdl
dCgpLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVG9XYXNtSUNDYWxsZWUpCiBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwg
d2ViQXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2ViQXNzZW1ibHlDb2Rl
QmxvY2spIC8vIEhhc2g6MHg5YWQ5OTVjZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggMTI4NjJhNDBjZTBlMDE0YWZhYzU0M2NiZGIzOTc1NmI0ZjExZGQ3Mi4uNTI5MjkzM2MxM2Rh
ZmFjN2U2MWFiOGM1Nzg0YWVjNTAxNmIzMGIyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCkBAIC0xMjgsNiArMTI4LDcgQEAgY2xhc3MgSW50bENvbGxhdG9yOwogY2xhc3MgSW50bERh
dGVUaW1lRm9ybWF0OwogY2xhc3MgSW50bE51bWJlckZvcm1hdDsKIGNsYXNzIEludGxQbHVyYWxS
dWxlczsKK2NsYXNzIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ7CiBjbGFzcyBKU0FQSUdsb2JhbE9i
amVjdDsKIGNsYXNzIEpTQVBJV3JhcHBlckdsb2JhbE9iamVjdDsKIGNsYXNzIEpTQVBJV3JhcHBl
ck9iamVjdDsKQEAgLTQwMSw2ICs0MDIsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjp1bmlxdWVfcHRy
PElzb0hlYXBDZWxsVHlwZT4gaW50bERhdGVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5
cGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElzb0hlYXBDZWxsVHlwZT4gaW50bFBsdXJhbFJ1bGVz
SGVhcENlbGxUeXBlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGU7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFzc2VtYmx5Q29kZUJsb2Nr
SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IHdlYkFz
c2VtYmx5RnVuY3Rpb25IZWFwQ2VsbFR5cGU7CkBAIC01NTcsNiArNTU5LDcgQEAgcHVibGljOgog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bERhdGVUaW1lRm9ybWF0
U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsTnVtYmVy
Rm9ybWF0U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRs
UGx1cmFsUnVsZXNTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc1RvV2FzbUlDQ2FsbGVlU3Bh
Y2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUNv
ZGVCbG9ja1NwYWNlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDI4NmI5ZWQ2YjRjZGUxOTAyODViZDM3NmRiNTI3MjYxYWEzYTA2NjEuLmJlM2Y0
NTcxNTJkNzU2YzMxMmEyODEyMzllMzRiOGJmOTFmYjc4MjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNC0x
OSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW0VD
TUEtNDAyXSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBtaXNzaW5nIGluIFdlYktpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NzcwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1q
c2Mtc3RyZXNzLXRlc3RzOgorICAgICAgICBBZGQgcnVuSW50bFJlbGF0aXZlVGltZUZvcm1hdEVu
YWJsZWQuCisKIDIwMjAtMDQtMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIEZpeCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSB2cyBDb250ZW50V29y
bGQgbGlmZXRpbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVz
dHMgYi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCmluZGV4IGIwNTc5OTNjOTdm
MTI4MDk2MGNkODQzNGZmMDZkMGE0MjkwMTQ0ODAuLjIyMWEwYmFlMTAzYmI3NTJjNzVmYWZlMzE0
MGFjY2Y1OTMzMzZhYzMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3Mt
dGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cwpAQCAtNzEwLDYg
KzcxMCwxMCBAQCBkZWYgcnVuQmlnSW50RW5hYmxlZEJhc2VsaW5lKCpvcHRpb25hbFRlc3RTcGVj
aWZpY09wdGlvbnMpCiAgICAgcnVuKCJiaWctaW50LWVuYWJsZWQtYmFzZWxpbmUiLCAiLS11c2VC
aWdJbnQ9dHJ1ZSIsICItLXVzZURGR0pJVD0wIiwgKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9u
cykKIGVuZAogCitkZWYgcnVuSW50bFJlbGF0aXZlVGltZUZvcm1hdEVuYWJsZWQoKm9wdGlvbmFs
VGVzdFNwZWNpZmljT3B0aW9ucykKKyAgICBydW4oImludGwtcmVsYXRpdmV0aW1lZm9ybWF0LWVu
YWJsZWQiLCAiLS11c2VJbnRsUmVsYXRpdmVUaW1lRm9ybWF0PXRydWUiICwgKihGVExfT1BUSU9O
UyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCitlbmQKKwogZGVmIHJ1bkZUTE5vQ0pJ
VCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQogICAgIHJ1bigibWlzYy1mdGwtbm8tY2pp
dCIsICooRlRMX09QVElPTlMgKyBOT19DSklUX09QVElPTlMgKyBvcHRpb25hbFRlc3RTcGVjaWZp
Y09wdGlvbnMpKQogZW5kCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDYzY2ViOTMwYzM0NTQ1MmY3NjVjNGM0ZDZlMTMwMWMzMjhkOWVlNjEu
LmZiOGQzZTQ5M2UyZDlhZDAxZGIxZTUzYTM4OWM0NjZmZGNmYzQxNmUgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMjAtMDQtMTkgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgorCisg
ICAgICAgIFtFQ01BLTQwMl0gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQgbWlzc2luZyBpbiBXZWJL
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3Ry
ZXNzL2ludGwtcmVsYXRpdmV0aW1lZm9ybWF0LmpzOiBBZGRlZC4KKworICAgICAgICAqIHRlc3Qy
NjIvY29uZmlnLnlhbWw6CisgICAgICAgIEVuYWJsZSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBm
ZWF0dXJlIHdpdGggZmxhZy4KKworICAgICAgICAqIHRlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWw6
CisgICAgICAgIE1hcmsga25vd24gZmFpbHVyZXMuCisgICAgICAgIFRlc3QgZm9yIGxvY2FsZSB2
YWxpZGF0aW9uIGlzIG5vdCBzcGVjaWZpYyB0byBSZWxhdGl2ZVRpbWVGb3JtYXQgYW5kIHNob3Vs
ZCBiZSBpbnZlc3RpZ2F0ZWQgc2VwYXJhdGVseS4KKyAgICAgICAgVGVzdHMgZm9yIFBvbGlzaCBh
cHBlYXIgdG8gYmUgd3JvbmcgYW5kIHNob3VsZCBiZSBjb3JyZWN0ZWQgaW4gdGVzdDI2Mi4KKwog
MjAyMC0wNC0xOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCBtYXJrIHRlc3QgcGFzc2luZy4KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2ludGwtcmVsYXRpdmV0aW1lZm9ybWF0LmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1y
ZWxhdGl2ZXRpbWVmb3JtYXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ0NGI1ZjUzYzZiNDI3NjU5MjI2MjRh
MzI0YmNmOGQwZDUyYjhjZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwt
cmVsYXRpdmV0aW1lZm9ybWF0LmpzCkBAIC0wLDAgKzEsMjU1IEBACisvL0AgcnVuSW50bFJlbGF0
aXZlVGltZUZvcm1hdEVuYWJsZWQKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZE5vdFRocm93KGZ1bmMpIHsKKyAgICBmdW5jKCk7Cit9CisKK2Z1bmN0aW9uIHNo
b3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSkgeworICAgIGxldCBlcnJvcjsKKyAgICB0cnkgewor
ICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7Cisg
ICAgfQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9IWApOworfQorCitzaG91
bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBpbnN0YW5jZW9mIEZ1bmN0aW9uLCB0cnVlKTsK
K3Nob3VsZEJlKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0Lmxlbmd0aCwgMCk7CitzaG91bGRCZShP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LCAn
cHJvdG90eXBlJykud3JpdGFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQsICdwcm90b3R5cGUnKS5lbnVt
ZXJhYmxlLCBmYWxzZSk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlLCBmYWxz
ZSk7CisKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCksIFR5cGVF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5jYWxsKHt9
KSwgVHlwZUVycm9yKTsKKworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0KCckJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuUmVs
YXRpdmVUaW1lRm9ybWF0KCdlbicsIG51bGwpLCBUeXBlRXJyb3IpOworCitzaG91bGRCZShuZXcg
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoKSBpbnN0YW5jZW9mIEludGwuUmVsYXRpdmVUaW1lRm9y
bWF0LCB0cnVlKTsKKworeworICAgIGNsYXNzIERlcml2ZWRSZWxhdGl2ZVRpbWVGb3JtYXQgZXh0
ZW5kcyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCB7fQorCisgICAgY29uc3QgZHJ0ZiA9IG5ldyBE
ZXJpdmVkUmVsYXRpdmVUaW1lRm9ybWF0KCk7CisgICAgc2hvdWxkQmUoZHJ0ZiBpbnN0YW5jZW9m
IERlcml2ZWRSZWxhdGl2ZVRpbWVGb3JtYXQsIHRydWUpOworICAgIHNob3VsZEJlKGRydGYgaW5z
dGFuY2VvZiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoZHJ0
Zi5mb3JtYXQsIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQpOworICAg
IHNob3VsZEJlKGRydGYuZm9ybWF0VG9QYXJ0cywgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJv
dG90eXBlLmZvcm1hdFRvUGFydHMpOworICAgIHNob3VsZEJlKE9iamVjdC5nZXRQcm90b3R5cGVP
ZihkcnRmKSwgRGVyaXZlZFJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUpOworICAgIHNob3Vs
ZEJlKE9iamVjdC5nZXRQcm90b3R5cGVPZihEZXJpdmVkUmVsYXRpdmVUaW1lRm9ybWF0LnByb3Rv
dHlwZSksIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZSk7Cit9CisKK3Nob3VsZEJl
KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZi5sZW5ndGgsIDEpOwor
c2hvdWxkQmUoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCkgaW5z
dGFuY2VvZiBBcnJheSwgdHJ1ZSk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0
aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YuY2FsbChudWxsLCAnZW4nKSksICdbImVu
Il0nKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1
cHBvcnRlZExvY2FsZXNPZi5jYWxsKHt9LCAnZW4nKSksICdbImVuIl0nKTsKK3Nob3VsZEJlKEpT
T04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZi5j
YWxsKDEsICdlbicpKSwgJ1siZW4iXScpOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5S
ZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKDkpKSwgJ1tdJyk7CitzaG91bGRC
ZShKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVz
T2YoJ2VuJykpLCAnWyJlbiJdJyk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0
aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoeyBsZW5ndGg6IDQsIDE6ICdlbicsIDA6
ICdlcycsIDM6ICdkZScgfSkpLCAnWyJlcyIsImVuIiwiZGUiXScpOworc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKFsnZW4n
LCAncHQnLCAnZW4nLCAnZXMnXSkpLCAnWyJlbiIsInB0IiwiZXMiXScpOworc2hvdWxkQmUoSlNP
Ti5zdHJpbmdpZnkoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdF
bi1sYVRuLXVzLXZhcmlhbnQyLXZhcmlhbnQxLTFhYmMtVS1rby10UnVlLUEtYWEtYWFhLXgtUkVT
RVJWRUQnKSksICdbImVuLUxhdG4tVVMtdmFyaWFudDItdmFyaWFudDEtMWFiYy1hLWFhLWFhYS11
LWtvLXgtcmVzZXJ2ZWQiXScpOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5SZWxhdGl2
ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCduby1ib2snKSksICdbIm5iIl0nKTsKK3No
b3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExv
Y2FsZXNPZigneC1zb21lLXRoaW5nJykpLCAnW10nKTsKKworc2hvdWxkVGhyb3coKCkgPT4gSW50
bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKE9iamVjdC5jcmVhdGUobnVs
bCwgeyBsZW5ndGg6IHsgZ2V0KCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9IH0pKSwgRXJyb3Ip
Oworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9j
YWxlc09mKE9iamVjdC5jcmVhdGUobnVsbCwgeyBsZW5ndGg6IHsgdmFsdWU6IDEgfSwgMDogeyBn
ZXQoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH0gfSkpLCBFcnJvcik7CitzaG91bGRUaHJvdygo
KSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoW3sgdG9TdHJp
bmcoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH1dKSwgRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKFs1XSksIFR5cGVF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0
ZWRMb2NhbGVzT2YoJycpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVs
YXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZignYScpLCBSYW5nZUVycm9yKTsKK3No
b3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNP
ZignYWJjZGVmZ2hpaicpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVs
YXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZignIyQnKSwgUmFuZ2VFcnJvcik7Citz
aG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVz
T2YoJ2VuLUAtYWJjJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxh
dGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdlbi11JyksIFJhbmdlRXJyb3IpOwor
c2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxl
c09mKCdlbi11LWtuLXRydWUtdS1rby10cnVlJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3co
KCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdlbi14Jyks
IFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQu
c3VwcG9ydGVkTG9jYWxlc09mKCdlbi0qJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdlbi0nKSwgUmFu
Z2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBw
b3J0ZWRMb2NhbGVzT2YoJ2VuLS1VUycpLCBSYW5nZUVycm9yKTsKKworY29uc3QgdmFsaWRMYW5n
dWFnZVRhZ3MgPSBbCisgICAgJ2RlJywgLy8gSVNPIDYzOSBsYW5ndWFnZSBjb2RlCisgICAgJ2Rl
LURFJywgLy8gKyBJU08gMzE2Ni0xIGNvdW50cnkgY29kZQorICAgICdERS1kZScsIC8vIHRhZ3Mg
YXJlIGNhc2UtaW5zZW5zaXRpdmUKKyAgICAnY21uJywgLy8gSVNPIDYzOSBsYW5ndWFnZSBjb2Rl
CisgICAgJ2Ntbi1IYW5zJywgLy8gKyBzY3JpcHQgY29kZQorICAgICdDTU4taEFOUycsIC8vIHRh
Z3MgYXJlIGNhc2UtaW5zZW5zaXRpdmUKKyAgICAnY21uLWhhbnMtY24nLCAvLyArIElTTyAzMTY2
LTEgY291bnRyeSBjb2RlCisgICAgJ2VzLTQxOScsIC8vICsgVU4gTS40OSByZWdpb24gY29kZQor
ICAgICdlcy00MTktdS1udS1sYXRuLWN1LWJvYicsIC8vICsgVW5pY29kZSBsb2NhbGUgZXh0ZW5z
aW9uIHNlcXVlbmNlCisgICAgJ2kta2xpbmdvbicsIC8vIGdyYW5kZmF0aGVyZWQgdGFnCisgICAg
J2Ntbi1oYW5zLWNuLXQtY2EtdS1jYS14LXQtdScsIC8vIHNpbmdsZXRvbiBzdWJ0YWdzIGNhbiBh
bHNvIGJlIHVzZWQgYXMgcHJpdmF0ZSB1c2Ugc3VidGFncworICAgICdlbm9jaGlhbi1lbm9jaGlh
bicsIC8vIGxhbmd1YWdlIGFuZCB2YXJpYW50IHN1YnRhZ3MgbWF5IGJlIHRoZSBzYW1lCisgICAg
J2RlLWdyZWdvcnktdS1jYS1ncmVnb3J5JywgLy8gdmFyaWFudCBhbmQgZXh0ZW5zaW9uIHN1YnRh
Z3MgbWF5IGJlIHRoZSBzYW1lCisgICAgJ2FhLWEtZm9vLXgtYS1mb28tYmFyJywgLy8gdmFyaWFu
dCBzdWJ0YWdzIGNhbiBhbHNvIGJlIHVzZWQgYXMgcHJpdmF0ZSB1c2Ugc3VidGFncworICAgICd4
LWVuLVVTLTEyMzQ1JywgLy8gYW55dGhpbmcgZ29lcyBpbiBwcml2YXRlIHVzZSB0YWdzCisgICAg
J3gtMTIzNDUtMTIzNDUtZW4tVVMnLAorICAgICd4LWVuLVVTLTEyMzQ1LTEyMzQ1JywKKyAgICAn
eC1lbi11LWZvbycsCisgICAgJ3gtZW4tdS1mb28tdS1iYXInCitdOworZm9yIChsZXQgdmFsaWRM
YW5ndWFnZVRhZyBvZiB2YWxpZExhbmd1YWdlVGFncykKKyAgICBzaG91bGROb3RUaHJvdygoKSA9
PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YodmFsaWRMYW5ndWFn
ZVRhZykpOworCitzaG91bGRCZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQucHJvdG90eXBlKSwgT2JqZWN0LnByb3RvdHlwZSk7CisKK3Nob3VsZEJlKEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQpOworCitzaG91bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGVb
U3ltYm9sLnRvU3RyaW5nVGFnXSwgJ0ludGwuUmVsYXRpdmVUaW1lRm9ybWF0Jyk7CitzaG91bGRC
ZShPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQu
cHJvdG90eXBlKSwgJ1tvYmplY3QgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXRdJyk7CitzaG91bGRC
ZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0
LnByb3RvdHlwZSwgU3ltYm9sLnRvU3RyaW5nVGFnKS53cml0YWJsZSwgZmFsc2UpOworc2hvdWxk
QmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLlJlbGF0aXZlVGltZUZvcm1h
dC5wcm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZykuZW51bWVyYWJsZSwgZmFsc2UpOworc2hv
dWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLlJlbGF0aXZlVGltZUZv
cm1hdC5wcm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZykuY29uZmlndXJhYmxlLCB0cnVlKTsK
Kworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsg
bG9jYWxlTWF0Y2hlcjogeyB0b1N0cmluZygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSB9KSwg
RXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdl
bicsIHsgbG9jYWxlTWF0Y2hlcjonYmFkJyB9KSwgUmFuZ2VFcnJvcik7CitzaG91bGROb3RUaHJv
dygoKSA9PiBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBsb2NhbGVNYXRjaGVy
Oidsb29rdXAnIH0pKTsKK3Nob3VsZE5vdFRocm93KCgpID0+IG5ldyBJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdCgnZW4nLCB7IGxvY2FsZU1hdGNoZXI6J2Jlc3QgZml0JyB9KSk7CisKK2NvbnN0IGRl
ZmF1bHRSVEYgPSBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJyk7CisKK3Nob3VsZEJl
KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMubGVuZ3Ro
LCAwKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlw
ZS5yZXNvbHZlZE9wdGlvbnMuY2FsbCg1KSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+
IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMuY2FsbCh7
fSksIFR5cGVFcnJvcik7CitzaG91bGRCZShkZWZhdWx0UlRGLnJlc29sdmVkT3B0aW9ucygpIGlu
c3RhbmNlb2YgT2JqZWN0LCB0cnVlKTsKK3Nob3VsZEJlKGRlZmF1bHRSVEYucmVzb2x2ZWRPcHRp
b25zKCkgIT09IGRlZmF1bHRSVEYucmVzb2x2ZWRPcHRpb25zKCksIHRydWUpOworc2hvdWxkQmUo
ZGVmYXVsdFJURi5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUsICdlbicpOworc2hvdWxkQmUoZGVm
YXVsdFJURi5yZXNvbHZlZE9wdGlvbnMoKS5zdHlsZSwgJ2xvbmcnKTsKK3Nob3VsZEJlKGRlZmF1
bHRSVEYucmVzb2x2ZWRPcHRpb25zKCkubnVtZXJpYywgJ2Fsd2F5cycpOworc2hvdWxkQmUoZGVm
YXVsdFJURi5yZXNvbHZlZE9wdGlvbnMoKS5udW1iZXJpbmdTeXN0ZW0sICdsYXRuJyk7CisKK3No
b3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4tdS1udS1oYW5pZGVjJykucmVz
b2x2ZWRPcHRpb25zKCkubG9jYWxlLCAnZW4tdS1udS1oYW5pZGVjJyk7CitzaG91bGRCZShuZXcg
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuLXUtbnUtaGFuaWRlYycsIHsgbnVtYmVyaW5nU3lz
dGVtOiAnZ3VqcicgfSkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLCAnZW4nKTsKK3Nob3VsZEJl
KG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4nLCB7IG51bWJlcmluZ1N5c3RlbTogJ2hh
bmlkZWMnIH0pLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZSwgJ2VuJyk7CitzaG91bGRCZShuZXcg
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuLXUtY2EtY2hpbmVzZScpLnJlc29sdmVkT3B0aW9u
cygpLmxvY2FsZSwgJ2VuJyk7CisKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdCgnZW4nLCB7IHN0eWxlOiB7IHRvU3RyaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3Io
KTsgfSB9IH0pLCBFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQoJ2VuJywgeyBzdHlsZTogJ2JhZCcgfSksIFJhbmdlRXJyb3IpOworc2hvdWxkQmUo
bmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgc3R5bGU6ICdsb25nJyB9KS5yZXNv
bHZlZE9wdGlvbnMoKS5zdHlsZSwgJ2xvbmcnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdCgnZW4nLCB7IHN0eWxlOiAnc2hvcnQnIH0pLnJlc29sdmVkT3B0aW9ucygpLnN0
eWxlLCAnc2hvcnQnKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4n
LCB7IHN0eWxlOiAnbmFycm93JyB9KS5yZXNvbHZlZE9wdGlvbnMoKS5zdHlsZSwgJ25hcnJvdycp
OworCitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywg
eyBudW1lcmljOiB7IHRvU3RyaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9IH0pLCBFcnJv
cik7CitzaG91bGRUaHJvdygoKSA9PiBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywg
eyBudW1lcmljOiAnYmFkJyB9KSwgUmFuZ2VFcnJvcik7CitzaG91bGRCZShuZXcgSW50bC5SZWxh
dGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBudW1lcmljOiAnYWx3YXlzJyB9KS5yZXNvbHZlZE9wdGlv
bnMoKS5udW1lcmljLCAnYWx3YXlzJyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVG
b3JtYXQoJ2VuJywgeyBudW1lcmljOiAnYXV0bycgfSkucmVzb2x2ZWRPcHRpb25zKCkubnVtZXJp
YywgJ2F1dG8nKTsKKworY29uc3QgbnVtYmVyaW5nU3lzdGVtcyA9IFsKKyAgICAnYXJhYicsICdh
cmFiZXh0JywgJ2JhbGknLCAnYmVuZycsICdkZXZhJywgJ2Z1bGx3aWRlJywgJ2d1anInLCAnZ3Vy
dScsCisgICAgJ2hhbmlkZWMnLCAna2htcicsICdrbmRhJywgJ2xhb28nLCAnbGF0bicsICdsaW1i
JywgJ21seW0nLCAnbW9uZycsICdteW1yJywKKyAgICAnb3J5YScsICd0YW1sZGVjJywgJ3RlbHUn
LCAndGhhaScsICd0aWJ0JworXQorZm9yIChsZXQgbnVtYmVyaW5nU3lzdGVtIG9mIG51bWJlcmlu
Z1N5c3RlbXMpIHsKKyAgICBzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2Vu
JywgeyBudW1iZXJpbmdTeXN0ZW0gfSkucmVzb2x2ZWRPcHRpb25zKCkubnVtYmVyaW5nU3lzdGVt
LCBudW1iZXJpbmdTeXN0ZW0pOworICAgIHNob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZv
cm1hdChgZW4tdS1udS0ke251bWJlcmluZ1N5c3RlbX1gKS5yZXNvbHZlZE9wdGlvbnMoKS5udW1i
ZXJpbmdTeXN0ZW0sIG51bWJlcmluZ1N5c3RlbSk7Cit9CisKK3Nob3VsZEJlKEludGwuUmVsYXRp
dmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQubGVuZ3RoLCAyKTsKK3Nob3VsZFRocm93KCgp
ID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQuY2FsbCh7fSwgMywg
J2RheXMnKSwgVHlwZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IGRlZmF1bHRSVEYuZm9ybWF0
KFN5bWJvbCgpLCAnZGF5cycpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gZGVmYXVs
dFJURi5mb3JtYXQoMywgU3ltYm9sKCkpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4g
ZGVmYXVsdFJURi5mb3JtYXQoSW5maW5pdHksICdkYXlzJyksIFJhbmdlRXJyb3IpOworc2hvdWxk
VGhyb3coKCkgPT4gZGVmYXVsdFJURi5mb3JtYXQoMywgJ2NlbnR1cmllcycpLCBSYW5nZUVycm9y
KTsKKworLy8gJ3F1YXJ0ZXInIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIElDVSA2MworY29uc3Qg
dW5pdHMgPSBbJ3NlY29uZCcsICdtaW51dGUnLCAnaG91cicsICdkYXknLCAnd2VlaycsICdtb250
aCcsICd5ZWFyJ107CisKK2ZvciAobGV0IHVuaXQgb2YgdW5pdHMpIHsKKyAgICBzaG91bGRCZShk
ZWZhdWx0UlRGLmZvcm1hdCgxMCwgdW5pdCksIGRlZmF1bHRSVEYuZm9ybWF0KDEwLCBgJHt1bml0
fXNgKSk7CisKKyAgICAvLyByZXN1bHRzIGZvciDCsTEgYXJlIHdyb25nIGJlZm9yZSBJQ1UgNjQ7
IHJlc3VsdHMgZm9yIC0wIGFyZSB3cm9uZyBiZWZvcmUgSUNVIDYzLgorICAgIHNob3VsZEJlKGRl
ZmF1bHRSVEYuZm9ybWF0KDEwMDAwLjUsIHVuaXQpLCBgaW4gMTAsMDAwLjUgJHt1bml0fXNgKTsK
KyAgICBzaG91bGRCZShkZWZhdWx0UlRGLmZvcm1hdCgxMCwgdW5pdCksIGBpbiAxMCAke3VuaXR9
c2ApOworICAgIHNob3VsZEJlKGRlZmF1bHRSVEYuZm9ybWF0KDAsIHVuaXQpLCBgaW4gMCAke3Vu
aXR9c2ApOworICAgIHNob3VsZEJlKGRlZmF1bHRSVEYuZm9ybWF0KC0xMCwgdW5pdCksIGAxMCAk
e3VuaXR9cyBhZ29gKTsKKyAgICBzaG91bGRCZShkZWZhdWx0UlRGLmZvcm1hdCgtMTAwMDAuNSwg
dW5pdCksIGAxMCwwMDAuNSAke3VuaXR9cyBhZ29gKTsKK30KKworc2hvdWxkQmUobmV3IEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgc3R5bGU6ICdzaG9ydCcgfSkuZm9ybWF0KDEwLCAn
c2Vjb25kJyksICdpbiAxMCBzZWMuJyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVG
b3JtYXQoJ3J1JywgeyBzdHlsZTogJ3Nob3J0JyB9KS5mb3JtYXQoMTAsICdzZWNvbmQnKSwgJ9GH
0LXRgNC10LcgMTDCoNGB0LXQui4nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZv
cm1hdCgnZW4nLCB7IHN0eWxlOiAnbmFycm93JyB9KS5mb3JtYXQoMTAsICdzZWNvbmQnKSwgJ2lu
IDEwIHNlYy4nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgncnUnLCB7
IHN0eWxlOiAnbmFycm93JyB9KS5mb3JtYXQoMTAsICdzZWNvbmQnKSwgJysxMCDRgScpOworCitz
aG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBudW1lcmljOiAnYXV0
bycgfSkuZm9ybWF0KDAsICdzZWNvbmQnKSwgJ25vdycpOworc2hvdWxkQmUobmV3IEludGwuUmVs
YXRpdmVUaW1lRm9ybWF0KCdqYScsIHsgbnVtZXJpYzogJ2F1dG8nIH0pLmZvcm1hdCgwLCAnc2Vj
b25kJyksICfku4onKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4n
LCB7IG51bWVyaWM6ICdhdXRvJyB9KS5mb3JtYXQoMCwgJ2RheScpLCAndG9kYXknKTsKK3Nob3Vs
ZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnamEnLCB7IG51bWVyaWM6ICdhdXRvJyB9
KS5mb3JtYXQoMCwgJ2RheScpLCAn5LuK5pelJyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2
ZVRpbWVGb3JtYXQoJ2VuJywgeyBudW1lcmljOiAnYXV0bycgfSkuZm9ybWF0KDAsICd5ZWFyJyks
ICd0aGlzIHllYXInKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnamEn
LCB7IG51bWVyaWM6ICdhdXRvJyB9KS5mb3JtYXQoMCwgJ3llYXInKSwgJ+S7iuW5tCcpOworCitz
aG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBudW1iZXJpbmdTeXN0
ZW06ICd0aGFpJyB9KS5mb3JtYXQoLTEwLCAnaG91cicpLCAn4LmR4LmQIGhvdXJzIGFnbycpOwor
c2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbi11LW51LXRoYWknKS5mb3Jt
YXQoLTEwLCAnaG91cicpLCAn4LmR4LmQIGhvdXJzIGFnbycpOworc2hvdWxkQmUobmV3IEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0KCdrbycsIHsgbnVtYmVyaW5nU3lzdGVtOiAnaGFuaWRlYycgfSku
Zm9ybWF0KC0xMCwgJ2hvdXInKSwgJ+S4gOOAh+yLnOqwhCDsoIQnKTsKK3Nob3VsZEJlKG5ldyBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdCgna28tdS1udS1oYW5pZGVjJykuZm9ybWF0KC0xMCwgJ2hv
dXInKSwgJ+S4gOOAh+yLnOqwhCDsoIQnKTsKKworc2hvdWxkQmUoSW50bC5SZWxhdGl2ZVRpbWVG
b3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMubGVuZ3RoLCAyKTsKK3Nob3VsZFRocm93KCgp
ID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzLmNhbGwo
e30sIDMsICdkYXlzJyksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBkZWZhdWx0UlRG
LmZvcm1hdFRvUGFydHMoU3ltYm9sKCksICdkYXlzJyksIFR5cGVFcnJvcik7CitzaG91bGRUaHJv
dygoKSA9PiBkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoMywgU3ltYm9sKCkpLCBUeXBlRXJyb3Ip
Oworc2hvdWxkVGhyb3coKCkgPT4gZGVmYXVsdFJURi5mb3JtYXRUb1BhcnRzKEluZmluaXR5LCAn
ZGF5cycpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IGRlZmF1bHRSVEYuZm9ybWF0
VG9QYXJ0cygzLCAnY2VudHVyaWVzJyksIFJhbmdlRXJyb3IpOworCitmb3IgKGxldCB1bml0IG9m
IHVuaXRzKSB7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZGVmYXVsdFJURi5mb3JtYXRU
b1BhcnRzKDEwLCB1bml0KSksIEpTT04uc3RyaW5naWZ5KGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0
cygxMCwgYCR7dW5pdH1zYCkpKTsKKworICAgIGNvbnN0IGNvbmNhdGVuYXRlVmFsdWVzID0gKHBh
cnRzKSA9PiBwYXJ0cy5tYXAocGFydCA9PiBwYXJ0LnZhbHVlKS5qb2luKCcnKTsKKyAgICBzaG91
bGRCZShjb25jYXRlbmF0ZVZhbHVlcyhkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoMTAwMDAuNSwg
dW5pdCkpLCBgaW4gMTAsMDAwLjUgJHt1bml0fXNgKTsKKyAgICBzaG91bGRCZShjb25jYXRlbmF0
ZVZhbHVlcyhkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoMTAsIHVuaXQpKSwgYGluIDEwICR7dW5p
dH1zYCk7CisgICAgc2hvdWxkQmUoY29uY2F0ZW5hdGVWYWx1ZXMoZGVmYXVsdFJURi5mb3JtYXRU
b1BhcnRzKDAsIHVuaXQpKSwgYGluIDAgJHt1bml0fXNgKTsKKyAgICBzaG91bGRCZShjb25jYXRl
bmF0ZVZhbHVlcyhkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoLTEwLCB1bml0KSksIGAxMCAke3Vu
aXR9cyBhZ29gKTsKKyAgICBzaG91bGRCZShjb25jYXRlbmF0ZVZhbHVlcyhkZWZhdWx0UlRGLmZv
cm1hdFRvUGFydHMoLTEwMDAwLjUsIHVuaXQpKSwgYDEwLDAwMC41ICR7dW5pdH1zIGFnb2ApOwor
fQorCitzaG91bGRCZSgKKyAgICBKU09OLnN0cmluZ2lmeShkZWZhdWx0UlRGLmZvcm1hdFRvUGFy
dHMoMTAwMDAuNSwgJ2RheScpKSwKKyAgICBKU09OLnN0cmluZ2lmeShbCisgICAgICAgIHsgdHlw
ZTogJ2xpdGVyYWwnLCB2YWx1ZTogJ2luICcgfSwKKyAgICAgICAgeyB0eXBlOiAnaW50ZWdlcics
IHZhbHVlOiAnMTAnLCB1bml0OiAnZGF5JyB9LAorICAgICAgICB7IHR5cGU6ICdncm91cCcsIHZh
bHVlOiAnLCcsIHVuaXQ6ICdkYXknIH0sCisgICAgICAgIHsgdHlwZTogJ2ludGVnZXInLCB2YWx1
ZTogJzAwMCcsIHVuaXQ6ICdkYXknIH0sCisgICAgICAgIHsgdHlwZTogJ2RlY2ltYWwnLCB2YWx1
ZTogJy4nLCB1bml0OiAnZGF5JyB9LAorICAgICAgICB7IHR5cGU6ICdmcmFjdGlvbicsIHZhbHVl
OiAnNScsIHVuaXQ6ICdkYXknIH0sCisgICAgICAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTog
JyBkYXlzJyB9CisgICAgXSkKKyk7CisKK3Nob3VsZEJlKAorICAgIEpTT04uc3RyaW5naWZ5KG5l
dyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnc3cnKS5mb3JtYXRUb1BhcnRzKDEwLCAneWVhcicp
KSwKKyAgICBKU09OLnN0cmluZ2lmeShbCisgICAgICAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1
ZTogJ2JhYWRhIHlhIG1pYWthICcgfSwKKyAgICAgICAgeyB0eXBlOiAnaW50ZWdlcicsIHZhbHVl
OiAnMTAnLCB1bml0OiAneWVhcicgfSwKKyAgICBdKQorKTsKKworc2hvdWxkQmUoCisgICAgSlNP
Ti5zdHJpbmdpZnkobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdydScsIHsgc3R5bGU6ICdu
YXJyb3cnIH0pLmZvcm1hdFRvUGFydHMoMTAsICdzZWNvbmQnKSksCisgICAgSlNPTi5zdHJpbmdp
ZnkoWworICAgICAgICB7IHR5cGU6ICdsaXRlcmFsJywgdmFsdWU6ICcrJyB9LAorICAgICAgICB7
IHR5cGU6ICdpbnRlZ2VyJywgdmFsdWU6ICcxMCcsIHVuaXQ6ICdzZWNvbmQnIH0sCisgICAgICAg
IHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJyDRgScgfQorICAgIF0pCispOworCitzaG91bGRC
ZSgKKyAgICBKU09OLnN0cmluZ2lmeShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2phJywg
eyBudW1lcmljOiAnYXV0bycgfSkuZm9ybWF0VG9QYXJ0cygwLCAnd2VlaycpKSwKKyAgICBKU09O
LnN0cmluZ2lmeShbCisgICAgICAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJ+S7iumAsScg
fQorICAgIF0pCispOworCitzaG91bGRCZSgKKyAgICBKU09OLnN0cmluZ2lmeShuZXcgSW50bC5S
ZWxhdGl2ZVRpbWVGb3JtYXQoJ2tvJywgeyBudW1iZXJpbmdTeXN0ZW06ICdoYW5pZGVjJyB9KS5m
b3JtYXRUb1BhcnRzKC0xMCwgJ2hvdXInKSksCisgICAgSlNPTi5zdHJpbmdpZnkoWworICAgICAg
ICB7IHR5cGU6ICdpbnRlZ2VyJywgdmFsdWU6ICfkuIDjgIcnLCB1bml0OiAnaG91cicgfSwKKyAg
ICAgICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZhbHVlOiAn7Iuc6rCEIOyghCcgfQorICAgIF0pCisp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sCmluZGV4IGEwMzY2Y2VmYjcyYzU5YTc0MzZhOWMyZDU0OGNmOGZlYzU1
NGQ5N2QuLjhjNTUzMjQ2ODU1Y2Y0ZTVhOThiNTY0ZWQ5ZDIxMWY3MjFiNDYxYTcgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29u
ZmlnLnlhbWwKQEAgLTIsNiArMiw3IEBACiAtLS0KIGZsYWdzOgogICBCaWdJbnQ6IHVzZUJpZ0lu
dAorICBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdDogdXNlSW50bFJlbGF0aXZlVGltZUZvcm1hdAog
ICBXZWFrUmVmOiB1c2VXZWFrUmVmcwogICBjbGFzcy1maWVsZHMtcHVibGljOiB1c2VQdWJsaWND
bGFzc0ZpZWxkcwogICBsb2dpY2FsLWFzc2lnbm1lbnQtb3BlcmF0b3JzOiB1c2VMb2dpY2FsQXNz
aWdubWVudE9wZXJhdG9ycwpAQCAtMzAsNyArMzEsNiBAQCBza2lwOgogICAgIC0gSW50bC5MaXN0
Rm9ybWF0CiAgICAgLSBJbnRsLkxvY2FsZQogICAgIC0gSW50bC5OdW1iZXJGb3JtYXQtdW5pZmll
ZAotICAgIC0gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQKICAgICAtIEludGwuU2VnbWVudGVyCiAg
IHBhdGhzOgogICAgIC0gdGVzdC9idWlsdC1pbnMvRGF0YVZpZXcvcHJvdG90eXBlL2dldEJpZ0lu
dDY0CkBAIC0xNTMsMyArMTUzLDcgQEAgc2tpcDoKICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3ODMKICAgICAtIHRlc3QvaW50bDQwMi9EYXRlVGltZUZv
cm1hdC9wcm90b3R5cGUvZm9ybWF0L3JlbGF0ZWQteWVhci16aC5qcwogICAgIC0gdGVzdC9pbnRs
NDAyL0RhdGVUaW1lRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3JlbGF0ZWQteWVhci16
aC5qcworCisgICAgIyByZXF1aXJlcyBJQ1UgNjUgKGh0dHBzOi8vdW5pY29kZS1vcmcuYXRsYXNz
aWFuLm5ldC9icm93c2UvSUNVLTIwNjU0KQorICAgIC0gdGVzdC9pbnRsNDAyL1JlbGF0aXZlVGlt
ZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L2VuLXVzLW51bWVyaWMtYXV0by5qcworICAgIC0gdGVz
dC9pbnRsNDAyL1JlbGF0aXZlVGltZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9lbi11
cy1udW1lcmljLWF1dG8uanMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlv
bnMueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAppbmRleCAyNWM2NmYw
ZTUwZWJkZTQ2YmEyOTcxZDk2MDVkN2JkYmE4NjJjNDVkLi44OTg4ZTM3ZmQ0MGQyOTg0MTZmOTU5
NTU4MzFlNmJjMTFmMWUyZjBmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRp
b25zLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCkBAIC0xOTM1
LDEyICsxOTM1LDMzIEBAIHRlc3QvaW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG8tZnJvbS1jdG9y
LXJlYWxtLmpzOgogdGVzdC9pbnRsNDAyL1BsdXJhbFJ1bGVzL3Byb3RvLWZyb20tY3Rvci1yZWFs
bS5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogbmV3VGFyZ2V0LnByb3RvdHlwZSBpcyB1
bmRlZmluZWQgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrW29iamVjdCBPYmplY3RdwrssIMKrW29iamVj
dCBPYmplY3RdwrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBu
ZXdUYXJnZXQucHJvdG90eXBlIGlzIHVuZGVmaW5lZCBFeHBlY3RlZCBTYW1lVmFsdWUowqtbb2Jq
ZWN0IE9iamVjdF3Cuywgwqtbb2JqZWN0IE9iamVjdF3CuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50
bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvY29uc3RydWN0b3IvY29uc3RydWN0b3IvbG9jYWxlcy12
YWxpZC5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogR3JhbmRmYXRoZXJlZCBFeHBlY3Rl
ZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBh
dCBhbGwnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBHcmFuZGZhdGhlcmVkIEV4cGVj
dGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3du
IGF0IGFsbCcKK3Rlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvY29uc3RydWN0b3IvY29u
c3RydWN0b3IvcHJvdG8tZnJvbS1jdG9yLXJlYWxtLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVy
cm9yOiBuZXdUYXJnZXQucHJvdG90eXBlIGlzIHVuZGVmaW5lZCBFeHBlY3RlZCBTYW1lVmFsdWUo
wqtbb2JqZWN0IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0XcK7LCDCq1tvYmplY3QgSW50bC5SZWxh
dGl2ZVRpbWVGb3JtYXRdwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiBuZXdUYXJnZXQucHJvdG90eXBlIGlzIHVuZGVmaW5lZCBFeHBlY3RlZCBTYW1lVmFsdWUo
wqtbb2JqZWN0IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0XcK7LCDCq1tvYmplY3QgSW50bC5SZWxh
dGl2ZVRpbWVGb3JtYXRdwrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvUmVsYXRpdmVUaW1l
Rm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvcGwtcGwtc3R5bGUtbG9uZy5qczoKKyAgZGVmYXVsdDog
J1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKremEgMTAwMCBzZWt1bmTCuywgwqt6
YSAxwqAwMDAgc2VrdW5kwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt6YSAxMDAwIHNla3VuZMK7LCDCq3phIDHCoDAwMCBz
ZWt1bmTCuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvcHJv
dG90eXBlL2Zvcm1hdC9wbC1wbC1zdHlsZS1uYXJyb3cuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYy
RXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3phIDEwMDAgc8K7LCDCq3phIDHCoDAwMCBzwrsp
IHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1l
VmFsdWUowqt6YSAxMDAwIHPCuywgwqt6YSAxwqAwMDAgc8K7KSB0byBiZSB0cnVlJwordGVzdC9p
bnRsNDAyL1JlbGF0aXZlVGltZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3BsLXBsLXN0eWxlLXNo
b3J0LmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt6
YSAxMDAwIHNlay7Cuywgwqt6YSAxwqAwMDAgc2VrLsK7KSB0byBiZSB0cnVlJworICBzdHJpY3Qg
bW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKremEgMTAwMCBzZWsuwrss
IMKremEgMcKgMDAwIHNlay7CuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9SZWxhdGl2ZVRp
bWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRvUGFydHMvcGwtcGwtc3R5bGUtbG9uZy5qczoKKyAg
ZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogZm9ybWF0VG9QYXJ0cygxMDAwLCBzZWNvbmQpOiBsZW5n
dGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrM8K7LCDCqzXCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0
IG1vZGU6ICdUZXN0MjYyRXJyb3I6IGZvcm1hdFRvUGFydHMoMTAwMCwgc2Vjb25kKTogbGVuZ3Ro
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzPCuywgwqs1wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0
MDIvUmVsYXRpdmVUaW1lRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3BsLXBsLXN0eWxl
LW5hcnJvdy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogZm9ybWF0VG9QYXJ0cygxMDAw
LCBzZWNvbmQpOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrM8K7LCDCqzXCuykgdG8gYmUg
dHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IGZvcm1hdFRvUGFydHMoMTAwMCwg
c2Vjb25kKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzPCuywgwqs1wrspIHRvIGJlIHRy
dWUnCit0ZXN0L2ludGw0MDIvUmVsYXRpdmVUaW1lRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1Bh
cnRzL3BsLXBsLXN0eWxlLXNob3J0LmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBmb3Jt
YXRUb1BhcnRzKDEwMDAsIHNlY29uZCk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqszwrss
IMKrNcK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogZm9ybWF0
VG9QYXJ0cygxMDAwLCBzZWNvbmQpOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrM8K7LCDC
qzXCuykgdG8gYmUgdHJ1ZScKIHRlc3QvaW50bDQwMi9sYW5ndWFnZS10YWdzLWludmFsaWQuanM6
CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IFRlc3QgZGF0YSAiZGUtZ3JlZ29yeS1ncmVnb3J5
IiBpcyBhIGNhbm9uaWNhbGl6ZWQgYW5kIHN0cnVjdHVyYWxseSB2YWxpZCBsYW5ndWFnZSB0YWcu
JwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogVGVzdCBkYXRhICJkZS1ncmVnb3J5LWdy
ZWdvcnkiIGlzIGEgY2Fub25pY2FsaXplZCBhbmQgc3RydWN0dXJhbGx5IHZhbGlkIGxhbmd1YWdl
IHRhZy4nCi10ZXN0L2ludGw0MDIvc3VwcG9ydGVkTG9jYWxlc09mLXJldHVybmVkLWFycmF5LWVs
ZW1lbnRzLWFyZS1ub3QtZnJvemVuLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBQcm9w
ZXJ0eSAwIG9mIG9iamVjdCByZXR1cm5lZCBieSBTdXBwb3J0ZWRMb2NhbGVzIGlzIG5vdCB3cml0
YWJsZS4gRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZmFsc2XCuywgwqt0cnVlwrspIHRvIGJlIHRydWUg
KFRlc3Rpbmcgd2l0aCBDb2xsYXRvci4pJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
UHJvcGVydHkgMCBvZiBvYmplY3QgcmV0dXJuZWQgYnkgU3VwcG9ydGVkTG9jYWxlcyBpcyBub3Qg
d3JpdGFibGUuIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2ZhbHNlwrssIMKrdHJ1ZcK7KSB0byBiZSB0
cnVlIChUZXN0aW5nIHdpdGggQ29sbGF0b3IuKScKIHRlc3QvbGFuZ3VhZ2UvYXJndW1lbnRzLW9i
amVjdC9tYXBwZWQvbm9uY29uZmlndXJhYmxlLW5vbmVudW1lcmFibGUtbm9ud3JpdGFibGUtZGVz
Y3JpcHRvcnMtc2V0LWJ5LWFyZ3VtZW50cy5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjog
RXhwZWN0ZWQgb2JqWzBdIHRvIGhhdmUgZW51bWVyYWJsZTpmYWxzZS4nCiB0ZXN0L2xhbmd1YWdl
L2FyZ3VtZW50cy1vYmplY3QvbWFwcGVkL25vbmNvbmZpZ3VyYWJsZS1ub25lbnVtZXJhYmxlLW5v
bndyaXRhYmxlLWRlc2NyaXB0b3JzLXNldC1ieS1wYXJhbS5qczoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396927</attachid>
            <date>2020-04-19 14:53:08 -0700</date>
            <delta_ts>2020-04-19 20:18:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209770-20200419145307.patch</filename>
            <type>text/plain</type>
            <size>104721</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
MzBiMWIxYTIyOTM1ZjY4MDUzOTg4MTYxNmIzYjFiNTZlNTNmODJlLi43YTJhNTliYzZkOTVjYzdi
OGQzNzdkNTMwZDM2MzQ4ZTVhNmYwNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NCBAQAorMjAyMC0wNC0xOSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBtaXNz
aW5nIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5NzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSByZWNlbnQgRUNNQS00MDIgZmVhdHVyZSBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdC4KKworICAgICAgICBSZWxhdGl2ZVRpbWVGb3JtYXQgaGFz
IGZvcm1hdCAvIGZvcm1hdFRvUGFydHMgZnVuY3Rpb25zIGxpa2UgTnVtYmVyRm9ybWF0IC8gRGF0
ZVRpbWVGb3JtYXQKKyAgICAgICAgYW5kIGlzIHVzZWQgdG8gdHVybiBhIG51bWJlciBhbmQgdW5p
dCBpbnRvIGEgZm9ybWF0dGVkIHJlbGF0aXZlIHRpbWUgc3RyaW5nLCBlLmcuOgorCisgICAgICAg
ICAgbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicpLmZvcm1hdCgxMCwgJ2RheScpCisg
ICAgICAgICAgPiAnaW4gMTAgZGF5cycKKworICAgICAgICAgIG5ldyBJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdCgnZW4nLCB7IG51bWVyaWM6ICdhdXRvJyB9KS5mb3JtYXQoMCwgJ2RheScpCisgICAg
ICAgICAgPiAndG9kYXknCisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgUmVsYXRpdmVUaW1l
Rm9ybWF0I2Zvcm1hdFRvUGFydHMgbWFrZXMgZGlyZWN0IHVzZSBvZiBOdW1iZXJGb3JtYXQjZm9y
bWF0VG9QYXJ0cywKKyAgICAgICAgYXMgdGhlIHJlbGF0aXZlIHRpbWUgc3RyaW5nIGNvbnNpc3Rz
IG9mIGF0IG1vc3Qgb25lIGZvcm1hdHRlZCBudW1iZXIgd2l0aCBvcHRpb25hbCBsaXRlcmFsIHRl
eHQgb24gZWl0aGVyIHNpZGUuCisKKyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIHJ1bnRpbWUtZ3Vh
cmRlZCBieSB0aGUgYHVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXRgIG9wdGlvbi4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmls
ZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0lu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50
aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OnJlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGlt
ZS9PcHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlND
OjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgQWRkIGZlYXR1cmUg
YW5kIHJ1bnRpbWUgb3B0aW9uLgorCisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3Jt
YXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpJ
bnRsUGx1cmFsUnVsZXM6OnJlc29sdmVkT3B0aW9ucyk6CisgICAgICAgIE1ha2UgInR5cGUiIGEg
cHJvcGVydHkgbmFtZS4KKworICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaDoKKyAgICAgICAgRmFjdG9yIG91dCBmb3JtYXRUb1Bh
cnRzSW50ZXJuYWwgc28gdGhhdCBSZWxhdGl2ZVRpbWVGb3JtYXQgY2FuIHVzZSBpdCB3aXRoIGl0
cyBvd24gVU51bWJlckZvcm1hdC4KKyAgICAgICAgKFRoaXMgbG9naWMgaXMgdG9vIGNvbXBsaWNh
dGVkIHRvIGR1cGxpY2F0ZTsgaXQncyBiZWNhdXNlIElDVSB3b24ndCBzcGxpdCwgZS5nLiwgIjEw
LDAwMCIgaW50byBwYXJ0cyBmb3IgdXMuKQorCisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6SW50bE9iamVjdCk6CisgICAgICAgIChK
U0M6OkludGxPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6aW50bEF2YWlsYWJsZUxvY2FsZXMpOgorICAgICAg
ICAoSlNDOjppbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgKEpTQzo6aXNV
bmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUpOgorICAgICAgICAoSlNDOjpzdXBwb3J0ZWRMb2Nh
bGVzKToKKyAgICAgICAgKEpTQzo6aW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcyk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6aW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcyk6CisgICAgICAgIChKU0M6Omlu
dGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgKEpTQzo6aW50bFBsdXJh
bFJ1bGVzQXZhaWxhYmxlTG9jYWxlcyk6CisgICAgICAgIChKU0M6OmludGxSZWxhdGl2ZVRpbWVG
b3JtYXRBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgUGVyZm9ybSB0aHJlZSBjb3JyZWN0aW9u
cyBmb3IgSW50bCBjbGFzc2VzOgorICAgICAgICAgIDEuIENvbGxhdG9yIHNob3VsZCBiZSB0aGUg
b25seSBjbGFzcyB3aXRoIHVuaXF1ZSAiYXZhaWxhYmxlIGxvY2FsZXMiLgorICAgICAgICAgICAg
IFt1bnVtfHVkYXRdX2dldEF2YWlsYWJsZSBleGlzdCBidXQgdGhleSd2ZSBkZWZlcnJlZCB0byB1
bG9jX2dldEF2YWlsYWJsZSBmb3IgMjAgeWVhcnMuCisgICAgICAgICAgMi4gaXNVbmljb2RlTG9j
YWxlSWRlbnRpZmllclR5cGUgaXNuJ3QganVzdCBgYWxwaGFudW17Myw4fWAgYnV0IHJhdGhlciBg
YWxwaGFudW17Myw4fSAoc2VwIGFscGhhbnVtezMsOH0pKmAuCisgICAgICAgICAgICAgVGhpcyBp
cyBteSBvd24gbWlzdGFrZSBmcm9tIHIyMzk5NDEuCisgICAgICAgICAgMy4gc3VwcG9ydGVkTG9j
YWxlc09mIGVudHJpZXMgc2hvdWxkIG5vdCBiZSBmcm96ZW4uCisgICAgICAgICAgICAgQ2hhbmdl
ZCBpbiBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9lY21hNDAyL3B1bGwvMjc4LgorCisgICAgICAg
ICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uSUNVVmVyc2lv
bik6CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
QWRkICR2bS5pY3VWZXJzaW9uIHNvIHRoYXQgd2UgY2FuIGFkZCBwZXItbGluZSBza2lwcyB0byBz
dHJlc3MgdGVzdHMuCisKIDIwMjAtMDQtMTggIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBh
cHBsZS5jb20+CiAKICAgICAgICAgRml4IENMb29wIGJ1aWxkIGZvciBpdGVyYXRvciBvcGNvZGVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZDFkOTIzMjk5NGQxZGRkYmU4
YTA4M2NkNmQ2M2U0OTdhZTI4NDNjZi4uYWZiMjU0NzlhZGUyODQ1Yjg3ODhhZjdjNTRmOWEwZWI5
NjhhZWRiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNzUsNiArNzUs
OCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAgcnVudGltZS9J
bnRsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3Bw
CiAgICAgcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCisgICAgcnVudGltZS9J
bnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3Rv
dHlwZS5jcHAKICAgICBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNJ
bnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggMjM0MGNkZmFjNDYx
YjliNmIzMWIwNTc4YjI1YWZiNTU1YmFkYWQ4Yi4uMzRhY2RmODdlOGE0ZDY5YmY0NWQ1MmYzMjQ1
ZmEwMDQ1ZTIzYzdhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTE0Miw2ICsxNDIsOCBAQCAkKFBST0pFQ1Rf
RElSKS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElS
KS9ydW50aW1lL0ludGxPYmplY3QuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxQbHVy
YWxSdWxlc0NvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXNQcm90b3R5cGUuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bFJlbGF0
aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKaW5kZXggYTc0NDUwY2E3OTFjN2ZhOGQ2MmM4YjkwOWFhZmU0MTRlOTQ2
ZWYwZC4uZGFmOTQzMmE5MTZlNTc0NmZkZDllMTg4M2I5N2I2YWRhZDMxZmM5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdApAQCAtMzMsNiArMzMsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5sdQogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxPYmplY3QubHV0
LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9J
bnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5sdXQu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0lu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQ
cm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9KU0NCdWlsdGlucy5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaAogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTR2xvYmFsT2JqZWN0
Lmx1dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IGU5
ZDgwNGQ5ZThiZTVjMzQ1ZWY0NzIxOWUwZTk5NmQzMTliYmY5MDcuLmU3ZjIxMzEzOWFjOGM0NjY0
NjM0ODdiYTc2NzcxNWJmNjM1ZTAzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC0xNTMsNiArMTUzLDggQEAgT0JKRUNUX0xVVF9IRUFERVJTID0gXAog
ICAgIEludGxPYmplY3QubHV0LmggXAogICAgIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmx1
dC5oIFwKICAgICBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUubHV0LmggXAorICAgIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgSW50bFJlbGF0aXZlVGltZUZv
cm1hdFByb3RvdHlwZS5sdXQuaCBcCiAgICAgSlNEYXRhVmlld1Byb3RvdHlwZS5sdXQuaCBcCiAg
ICAgSlNHbG9iYWxPYmplY3QubHV0LmggXAogICAgIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0
b3IubHV0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3MGZjOTlmYjRlNzdl
MDM3MjQzZTFkMzE3ZTRjNGQ5ZDkwZWIwMWUyLi4xNWNjZDBjNzIyM2Q2YTYyYzJmOGNjNGRlZjIx
MzVjYWIyMGQzZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDMzNCw2ICs0
MzM0LDEyIEBACiAJCUExRTA0NTFCMUMyNUI0QjEwMEJCNjYzQyAvKiBTdHJpbmdQcm90b3R5cGUu
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBTdHJpbmdQcm90b3R5
cGUuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRkUxRUIwMUMyQzUzN0UwMEEy
ODlGRiAvKiBEYXRlUHJvdG90eXBlLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBwYXRoID0gRGF0ZVByb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTI3OTU4RDdGQTExNDJCMEFDOUUzNjREIC8qIFdhc21Db250ZXh0SW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQ29udGV4dElubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNCRjg4NEIyNDQ4MEJERTAwMUI5RjM1IC8qIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUEzQkY4ODRDMjQ0ODBCREYwMDFCOUYzNSAvKiBJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTNCRjg4NEQyNDQ4MEJERjAwMUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBM0JGODg0RTI0NDgwQkUwMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZv
cm1hdENvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBM0JGODg0RjI0NDgwQkUwMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNCRjg4NTAyNDQ4MEJF
MTAwMUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBM0ZGOUJDNTIyMzQ3NDY2MDBCMUE5QUIgLyogWWFyckZsYWdzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFlhcnJGbGFncy5oOyBwYXRoID0geWFyci9Z
YXJyRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNGRjlCQzYyMjM0NzQ2
NjAwQjFBOUFCIC8qIFlhcnJGbGFncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBZYXJyRmxhZ3MuY3BwOyBwYXRoID0geWFyci9ZYXJyRmxhZ3MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAzRkExMzE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNj
cmlwdENhbGxGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
YXZhU2NyaXB0Q2FsbEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcy
NjUsNiArNzI3MSwxMiBAQAogCQkJCTdENUZCMTkwMjA3NDRCRjEwMDVEREY2NCAvKiBJbnRsUGx1
cmFsUnVsZXNDb25zdHJ1Y3Rvci5oICovLAogCQkJCTdENUZCMTkxMjA3NDRCRjEwMDVEREY2NCAv
KiBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwICovLAogCQkJCTdENUZCMThEMjA3NDRBRTgw
MDVEREY2NCAvKiBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaCAqLywKKwkJCQlBM0JGODg0RjI0
NDgwQkUwMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgKi8sCisJCQkJQTNC
Rjg4NTAyNDQ4MEJFMTAwMUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCAqLywKKwkJ
CQlBM0JGODg0RDI0NDgwQkRGMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmNwcCAqLywKKwkJCQlBM0JGODg0RTI0NDgwQkUwMDAxQjlGMzUgLyogSW50bFJlbGF0
aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggKi8sCisJCQkJQTNCRjg4NEIyNDQ4MEJERTAwMUI5
RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwICovLAorCQkJCUEzQkY4
ODRDMjQ0ODBCREYwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgg
Ki8sCiAJCQkJMEYyNzVGMkMxRUNFMDc5NjAwNjIwRDQ3IC8qIEludHJpbnNpYy5jcHAgKi8sCiAJ
CQkJODZCRjY0MkExNDhEQjJCNTAwNERFMzZBIC8qIEludHJpbnNpYy5oICovLAogCQkJCThCOUY2
RDU1MUQ1OTEyRkEwMDFDNzM5RiAvKiBJdGVyYXRpb25LaW5kLmggKi8sCkBAIC04OTU3LDcgKzg5
NjksNiBAQAogCQkJCTBGRUM4NTkxMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJWYWxpZGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFQzNDNTMxRjMzQTQxNjAwRjU5QjZDIC8qIEFsaWduZWRNZW1v
cnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTc2MjBCMURCOTU5RjkwMEI3QTJG
RCAvKiBBbGxvY2F0aW5nU2NvcGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTMzMTExQjhCMjM5NzI1
NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQ0UxMUMxRkFF
NjIwOTAwNkYzOTAxIC8qIEFsbG9jYXRpb25GYWlsdXJlTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY3NUEwNjMyMDBEMjYxRjAwMzhFMkNGIC8qIEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYzMENCNUUxRkNFNEUzNzAwNEI1MzIzIC8qIEFsbG9jYXRvckZvck1vZGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTAxOTEsNiArMTAyMDIsNyBAQAogCQkJCTBGRTA1MDI5MUFBOTA5NTYw
MEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
MDUwMkIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDY4MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRB
cmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAv
KiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA2RTE4OUIwMEFB
MDA2MzMyMzEgLyogU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dAppbmRleCBiMzY5MmY1MGVmMWZkZjQxMGVmYjRjYzBlYmY5NzZmYzYxZjli
NGE3Li4wZjRjNTBkZjM2N2M2NTYwOGEwYWY2MjgzYTBkYzUyNmE5NDEwYTVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL1NvdXJjZXMudHh0CkBAIC04MTksNiArODE5LDkgQEAgcnVudGltZS9JbnRsT2JqZWN0
LmNwcAogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCiBydW50aW1lL0ludGxQbHVyYWxSdWxl
c0NvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCity
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCitydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFBy
b3RvdHlwZS5jcHAKIHJ1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcAogcnVudGltZS9JdGVy
YXRvclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSlNBcnJheS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGUyZGM4ODdiMzg0
NDM0ZTA1MTY2NmEwYjQyNjUyMDAzOGY0YjU5ZjQuLmQxNjRiYTRiZWY4YjRlZWZmOTMxNzM3YjM5
NTNmMzRmZTEyMzJhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaApAQCAtNDksNiArNDksNyBAQAogICAgIG1hY3JvKFByb21pc2Up
IFwKICAgICBtYWNybyhSZWZsZWN0KSBcCiAgICAgbWFjcm8oUmVnRXhwKSBcCisgICAgbWFjcm8o
UmVsYXRpdmVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8oUmVtb3RlUGxheWJhY2spIFwKICAgICBt
YWNybyhTZXQpIFwKICAgICBtYWNybyhTaGFyZWRBcnJheUJ1ZmZlcikgXApAQCAtMTc4LDYgKzE3
OSw3IEBACiAgICAgbWFjcm8oc3RhY2spIFwKICAgICBtYWNybyhzdGFja1RyYWNlTGltaXQpIFwK
ICAgICBtYWNybyhzdGlja3kpIFwKKyAgICBtYWNybyhzdHlsZSkgXAogICAgIG1hY3JvKHN1YmFy
cmF5KSBcCiAgICAgbWFjcm8oc3VtbWFyeSkgXAogICAgIG1hY3JvKHRhcmdldCkgXApAQCAtMTkz
LDYgKzE5NSw3IEBACiAgICAgbWFjcm8odG9Mb2NhbGVTdHJpbmcpIFwKICAgICBtYWNybyh0b1By
ZWNpc2lvbikgXAogICAgIG1hY3JvKHRvU3RyaW5nKSBcCisgICAgbWFjcm8odHlwZSkgXAogICAg
IG1hY3JvKHVpZCkgXAogICAgIG1hY3JvKHVuaWNvZGUpIFwKICAgICBtYWNybyh1c2FnZSkgXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5jcHAKaW5kZXggMDAzMDJmZTRiMTM1ZDFkODNhNGNkYzgxZGI3ZDEzODIxMGZjNjdlOC4uMmQx
MzNkNjNhZWJjNGRiODc1OTljODBkY2JkMGYxMGJmN2E4OWQxOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC0xMDI5
LDcgKzEwMjksNiBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdgogICAgICAgICByZXR1cm4gdGhy
b3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCiAgICAgYXV0byByZXN1
bHRTdHJpbmcgPSBTdHJpbmcocmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVuZ3RoKTsKLSAgICBhdXRv
IHR5cGVQcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHlwZSIpOwog
ICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwi
X3MpOwogCiAgICAgaW50MzJfdCBwcmV2aW91c0VuZEluZGV4ID0gMDsKQEAgLTEwNDMsNyArMTA0
Miw3IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2CiAgICAgICAgIGlmIChwcmV2aW91c0VuZElu
ZGV4IDwgYmVnaW5JbmRleCkgewogICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGpzU3RyaW5nKHZt
LCByZXN1bHRTdHJpbmcuc3Vic3RyaW5nKHByZXZpb3VzRW5kSW5kZXgsIGJlZ2luSW5kZXggLSBw
cmV2aW91c0VuZEluZGV4KSk7CiAgICAgICAgICAgICBKU09iamVjdCogcGFydCA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAgICBwYXJ0LT5wdXREaXJlY3Qo
dm0sIHR5cGVQcm9wZXJ0eU5hbWUsIGxpdGVyYWxTdHJpbmcpOworICAgICAgICAgICAgcGFydC0+
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBsaXRlcmFsU3RyaW5nKTsKICAg
ICAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUsIHZh
bHVlKTsKICAgICAgICAgICAgIHBhcnRzLT5wdXNoKGdsb2JhbE9iamVjdCwgcGFydCk7CiAgICAg
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpAQCAtMTA1NCw3ICsxMDUz
LDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHYKICAgICAgICAgICAgIGF1dG8gdHlwZSA9IGpz
U3RyaW5nKHZtLCBwYXJ0VHlwZVN0cmluZyhVRGF0ZUZvcm1hdEZpZWxkKGZpZWxkVHlwZSkpKTsK
ICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBqc1N0cmluZyh2bSwgcmVzdWx0U3RyaW5nLnN1YnN0
cmluZyhiZWdpbkluZGV4LCBlbmRJbmRleCAtIGJlZ2luSW5kZXgpKTsKICAgICAgICAgICAgIEpT
T2JqZWN0KiBwYXJ0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICAg
ICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdHlwZVByb3BlcnR5TmFtZSwgdHlwZSk7CisgICAg
ICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIHR5cGUp
OwogICAgICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1
ZSwgdmFsdWUpOwogICAgICAgICAgICAgcGFydHMtPnB1c2goZ2xvYmFsT2JqZWN0LCBwYXJ0KTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IGNh
NDI3OTY4NmE2ZmFiMGQ4ZGQyZGM1YmUxZmJhMTkxZDE3MmM4YzguLjk2OGViNWUyNzdjMDlmYzhk
ZjM0ZGJhNGRhYWIxMjE3ZjAwYTY0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0yLDYgKzIsNyBAQAogICogQ29weXJp
Z2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKICAq
IENvcHlyaWdodCAoQykgMjAxNiBTdWtvbHNhayBTYWtzaHV3b25nIChzdWtvbHNha0BnbWFpbC5j
b20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5t
ZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTk1LDcgKzE5Niw3
IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAKICAgICBtX251bWJlcmluZ1N5c3RlbSA9IHJl
c3VsdC5nZXQoIm51Il9zKTsKIAotICAgIFN0cmluZyBzdHlsZVN0cmluZyA9IGludGxTdHJpbmdP
cHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
c3R5bGUiKSwgeyAiZGVjaW1hbCIsICJwZXJjZW50IiwgImN1cnJlbmN5IiB9LCAic3R5bGUgbXVz
dCBiZSBlaXRoZXIgXCJkZWNpbWFsXCIsIFwicGVyY2VudFwiLCBvciBcImN1cnJlbmN5XCIiLCAi
ZGVjaW1hbCIpOworICAgIFN0cmluZyBzdHlsZVN0cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xv
YmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHlsZSwgeyAiZGVjaW1hbCIs
ICJwZXJjZW50IiwgImN1cnJlbmN5IiB9LCAic3R5bGUgbXVzdCBiZSBlaXRoZXIgXCJkZWNpbWFs
XCIsIFwicGVyY2VudFwiLCBvciBcImN1cnJlbmN5XCIiLCAiZGVjaW1hbCIpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgaWYgKHN0eWxlU3RyaW5nID09ICJk
ZWNpbWFsIikKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpEZWNpbWFsOwpAQCAtNDQxLDcgKzQ0
Miw3IEBAIEpTT2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU09iamVjdCogb3B0aW9ucyA9IGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUsIGpzU3RyaW5nKHZtLCBtX2xvY2FsZSkpOwogICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bnVtYmVyaW5nU3lzdGVtLCBq
c1N0cmluZyh2bSwgbV9udW1iZXJpbmdTeXN0ZW0pKTsKLSAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHlsZSIpLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIHN0eWxlU3RyaW5nKG1fc3R5bGUpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHlsZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBzdHlsZVN0
cmluZyhtX3N0eWxlKSkpOwogICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgewog
ICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJjdXJyZW5jeSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fY3VycmVuY3kpKTsKICAgICAg
ICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY3Vy
cmVuY3lEaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgY3VycmVuY3lEaXNwbGF5U3Ry
aW5nKG1fY3VycmVuY3lEaXNwbGF5KSkpOwpAQCAtNTAzLDYgKzUwNCw1MCBAQCBBU0NJSUxpdGVy
YWwgSW50bE51bWJlckZvcm1hdDo6cGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBm
aWVsZCwgZG91YmxlCiAgICAgcmV0dXJuICJ1bmtub3duIl9zOwogfQogCit2b2lkIEludGxOdW1i
ZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBkb3VibGUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZm9ybWF0dGVkLCBVRmllbGRQb3NpdGlv
bkl0ZXJhdG9yKiBpdGVyYXRvciwgSlNBcnJheSogcGFydHMsIEpTU3RyaW5nKiB1bml0KQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIHN0cmluZ0xlbmd0aCA9IGZvcm1hdHRlZC5s
ZW5ndGgoKTsKKworICAgIGludDMyX3QgbGl0ZXJhbEZpZWxkVHlwZSA9IC0xOworICAgIGF1dG8g
bGl0ZXJhbEZpZWxkID0gSW50bE51bWJlckZvcm1hdEZpZWxkKGxpdGVyYWxGaWVsZFR5cGUsIHN0
cmluZ0xlbmd0aCk7CisgICAgVmVjdG9yPEludGxOdW1iZXJGb3JtYXRGaWVsZD4gZmllbGRzKHN0
cmluZ0xlbmd0aCwgbGl0ZXJhbEZpZWxkKTsKKyAgICBpbnQzMl90IGJlZ2luSW5kZXggPSAwOwor
ICAgIGludDMyX3QgZW5kSW5kZXggPSAwOworICAgIGF1dG8gZmllbGRUeXBlID0gdWZpZWxkcG9z
aXRlcl9uZXh0KGl0ZXJhdG9yLCAmYmVnaW5JbmRleCwgJmVuZEluZGV4KTsKKyAgICB3aGlsZSAo
ZmllbGRUeXBlID49IDApIHsKKyAgICAgICAgYXV0byBzaXplID0gZW5kSW5kZXggLSBiZWdpbklu
ZGV4OworICAgICAgICBmb3IgKGF1dG8gaSA9IGJlZ2luSW5kZXg7IGkgPCBlbmRJbmRleDsgKytp
KSB7CisgICAgICAgICAgICAvLyBPbmx5IG92ZXJyaWRlIHByZXZpb3VzIHZhbHVlIGlmIG5ldyB2
YWx1ZSBpcyBtb3JlIHNwZWNpZmljLgorICAgICAgICAgICAgaWYgKGZpZWxkc1tpXS5zaXplID49
IHNpemUpCisgICAgICAgICAgICAgICAgZmllbGRzW2ldID0gSW50bE51bWJlckZvcm1hdEZpZWxk
KGZpZWxkVHlwZSwgc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgZmllbGRUeXBlID0gdWZpZWxk
cG9zaXRlcl9uZXh0KGl0ZXJhdG9yLCAmYmVnaW5JbmRleCwgJmVuZEluZGV4KTsKKyAgICB9CisK
KyAgICBhdXRvIGxpdGVyYWxTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJsaXRlcmFs
Il9zKTsKKyAgICBhdXRvIHVuaXROYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVu
aXQiKTsKKworICAgIHNpemVfdCBjdXJyZW50SW5kZXggPSAwOworICAgIHdoaWxlIChjdXJyZW50
SW5kZXggPCBzdHJpbmdMZW5ndGgpIHsKKyAgICAgICAgYXV0byBzdGFydEluZGV4ID0gY3VycmVu
dEluZGV4OworICAgICAgICBhdXRvIGZpZWxkVHlwZSA9IGZpZWxkc1tjdXJyZW50SW5kZXhdLnR5
cGU7CisgICAgICAgIHdoaWxlIChjdXJyZW50SW5kZXggPCBzdHJpbmdMZW5ndGggJiYgZmllbGRz
W2N1cnJlbnRJbmRleF0udHlwZSA9PSBmaWVsZFR5cGUpCisgICAgICAgICAgICArK2N1cnJlbnRJ
bmRleDsKKyAgICAgICAgYXV0byBwYXJ0VHlwZSA9IGZpZWxkVHlwZSA9PSBsaXRlcmFsRmllbGRU
eXBlID8gbGl0ZXJhbFN0cmluZyA6IGpzU3RyaW5nKHZtLCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVy
Rm9ybWF0RmllbGRzKGZpZWxkVHlwZSksIHZhbHVlKSk7CisgICAgICAgIGF1dG8gcGFydFZhbHVl
ID0ganNTdWJzdHJpbmcodm0sIGZvcm1hdHRlZCwgc3RhcnRJbmRleCwgY3VycmVudEluZGV4IC0g
c3RhcnRJbmRleCk7CisgICAgICAgIEpTT2JqZWN0KiBwYXJ0ID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT50eXBlLCBwYXJ0VHlwZSk7CisgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+dmFsdWUsIHBhcnRWYWx1ZSk7CisgICAgICAgIGlmICh1bml0KQorICAg
ICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB1bml0TmFtZSwgdW5pdCk7CisgICAgICAgIHBh
cnRzLT5wdXNoKGdsb2JhbE9iamVjdCwgcGFydCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CisgICAgfQorfQorCiBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6
OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVl
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTUyMCw3ICs1NjUsNiBA
QCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbAogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQg
dG8gb3BlbiBmaWVsZCBwb3NpdGlvbiBpdGVyYXRvciJfcyk7CiAKLSAgICBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7CiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVzdWx0KDMyKTsKICAgICBhdXRvIHJl
c3VsdExlbmd0aCA9IHVudW1fZm9ybWF0RG91YmxlRm9yRmllbGRzKG1fbnVtYmVyRm9ybWF0Lmdl
dCgpLCB2YWx1ZSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSwgZmllbGRJdHIuZ2V0KCks
ICZzdGF0dXMpOwogICAgIGlmIChzdGF0dXMgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpIHsK
QEAgLTUzMSw0NSArNTc1LDE0IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9Q
YXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsCiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKIAotICAgIGludDMy
X3QgbGl0ZXJhbEZpZWxkVHlwZSA9IC0xOwotICAgIGF1dG8gbGl0ZXJhbEZpZWxkID0gSW50bE51
bWJlckZvcm1hdEZpZWxkKGxpdGVyYWxGaWVsZFR5cGUsIHJlc3VsdExlbmd0aCk7Ci0gICAgVmVj
dG9yPEludGxOdW1iZXJGb3JtYXRGaWVsZD4gZmllbGRzKHJlc3VsdExlbmd0aCwgbGl0ZXJhbEZp
ZWxkKTsKLSAgICBpbnQzMl90IGJlZ2luSW5kZXggPSAwOwotICAgIGludDMyX3QgZW5kSW5kZXgg
PSAwOwotICAgIGF1dG8gZmllbGRUeXBlID0gdWZpZWxkcG9zaXRlcl9uZXh0KGZpZWxkSXRyLmdl
dCgpLCAmYmVnaW5JbmRleCwgJmVuZEluZGV4KTsKLSAgICB3aGlsZSAoZmllbGRUeXBlID49IDAp
IHsKLSAgICAgICAgYXV0byBzaXplID0gZW5kSW5kZXggLSBiZWdpbkluZGV4OwotICAgICAgICBm
b3IgKGF1dG8gaSA9IGJlZ2luSW5kZXg7IGkgPCBlbmRJbmRleDsgKytpKSB7Ci0gICAgICAgICAg
ICAvLyBPbmx5IG92ZXJyaWRlIHByZXZpb3VzIHZhbHVlIGlmIG5ldyB2YWx1ZSBpcyBtb3JlIHNw
ZWNpZmljLgotICAgICAgICAgICAgaWYgKGZpZWxkc1tpXS5zaXplID49IHNpemUpCi0gICAgICAg
ICAgICAgICAgZmllbGRzW2ldID0gSW50bE51bWJlckZvcm1hdEZpZWxkKGZpZWxkVHlwZSwgc2l6
ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZmllbGRUeXBlID0gdWZpZWxkcG9zaXRlcl9uZXh0KGZp
ZWxkSXRyLmdldCgpLCAmYmVnaW5JbmRleCwgJmVuZEluZGV4KTsKLSAgICB9CisgICAgYXV0byBy
ZXN1bHRTdHJpbmcgPSBTdHJpbmcocmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVuZ3RoKTsKIAogICAg
IEpTQXJyYXkqIHBhcnRzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250
aWd1b3VzKSwgMCk7CiAgICAgaWYgKCFwYXJ0cykKICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IDA7
CiAKLSAgICBhdXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHRM
ZW5ndGgpOwotICAgIGF1dG8gdHlwZVByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJ0eXBlIik7Ci0gICAgYXV0byBsaXRlcmFsU3RyaW5nID0ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAibGl0ZXJhbCJfcyk7Ci0KLSAgICBpbnQzMl90IGN1cnJlbnRJbmRleCA9IDA7Ci0g
ICAgd2hpbGUgKGN1cnJlbnRJbmRleCA8IHJlc3VsdExlbmd0aCkgewotICAgICAgICBhdXRvIHN0
YXJ0SW5kZXggPSBjdXJyZW50SW5kZXg7Ci0gICAgICAgIGF1dG8gZmllbGRUeXBlID0gZmllbGRz
W2N1cnJlbnRJbmRleF0udHlwZTsKLSAgICAgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA8IHJlc3Vs
dExlbmd0aCAmJiBmaWVsZHNbY3VycmVudEluZGV4XS50eXBlID09IGZpZWxkVHlwZSkKLSAgICAg
ICAgICAgICsrY3VycmVudEluZGV4OwotICAgICAgICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBl
ID09IGxpdGVyYWxGaWVsZFR5cGUgPyBsaXRlcmFsU3RyaW5nIDoganNTdHJpbmcodm0sIHBhcnRU
eXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgdmFsdWUpKTsKLSAgICAg
ICAgYXV0byBwYXJ0VmFsdWUgPSBqc1N1YnN0cmluZyh2bSwgcmVzdWx0U3RyaW5nLCBzdGFydElu
ZGV4LCBjdXJyZW50SW5kZXggLSBzdGFydEluZGV4KTsKLSAgICAgICAgSlNPYmplY3QqIHBhcnQg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwotICAgICAgICBwYXJ0LT5wdXRE
aXJlY3Qodm0sIHR5cGVQcm9wZXJ0eU5hbWUsIHBhcnRUeXBlKTsKLSAgICAgICAgcGFydC0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwgcGFydFZhbHVlKTsKLSAgICAgICAg
cGFydHMtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgcGFydCk7Ci0gICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgfQorICAgIGZvcm1hdFRv
UGFydHNJbnRlcm5hbChnbG9iYWxPYmplY3QsIHZhbHVlLCByZXN1bHRTdHJpbmcsIGZpZWxkSXRy
LmdldCgpLCBwYXJ0cyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAog
ICAgIHJldHVybiBwYXJ0czsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXQuaAppbmRleCAyYjA2ZjA3ZmNhZjRjZGI3ZWM5OTQ4ZGFhZjZkMzYx
OTM3ODdhZDkxLi45ZjEwYjVkNDM2NzBiOGRlMmY2ZjQwZTRkNzczMzg1ZTM1NmYxODAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNSBBbmR5IFZhbldhZ29uZXIg
KGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTcsMTIgKzU4LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXRpYWxpemVOdW1iZXJG
b3JtYXQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9uc1Zh
bHVlKTsKICAgICBKU1ZhbHVlIGZvcm1hdChKU0dsb2JhbE9iamVjdCosIGRvdWJsZSk7CiAgICAg
SlNWYWx1ZSBmb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBKU0JpZ0ludCopOwotICAgIEpTVmFsdWUg
Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCosIGRvdWJsZSB2YWx1ZSk7CisgICAgSlNWYWx1
ZSBmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlKTsKICAgICBKU09iamVjdCog
cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICBKU0JvdW5kRnVuY3Rpb24q
IGJvdW5kRm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZEZvcm1hdC5nZXQoKTsgfQogICAg
IHZvaWQgc2V0Qm91bmRGb3JtYXQoVk0mLCBKU0JvdW5kRnVuY3Rpb24qKTsKIAorICAgIHN0YXRp
YyB2b2lkIGZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCosIGRvdWJsZSwgY29u
c3QgU3RyaW5nJiBmb3JtYXR0ZWQsIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IqLCBKU0FycmF5Kiwg
SlNTdHJpbmcqIHVuaXQgPSBudWxscHRyKTsKKwogcHJvdGVjdGVkOgogICAgIEludGxOdW1iZXJG
b3JtYXQoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IGZiMmJi
NWI2OTJjY2VjMDBlMWU0YWI3NjQyNDU3ZTExMWE2MjMzNTEuLjU3YjU5NmQxZWEyNGUyZmE4Mzlm
NTQ1MmQ1ZWVmMDcyYTY3YjdiNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxPYmplY3QuY3BwCkBAIC0yLDYgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDE1IEFu
ZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKICAqIENvcHlyaWdodCAoQykg
MjAxNSBTdWtvbHNhayBTYWtzaHV3b25nIChzdWtvbHNha0BnbWFpbC5jb20pCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksMTUgKzQwLDE1IEBACiAjaW5jbHVkZSAi
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlc0Nv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmgiCisjaW5j
bHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiSW50
bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2lu
Y2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRl
IDx1bmljb2RlL3Vjb2wuaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VkYXQuaD4KICNpbmNsdWRlIDx1
bmljb2RlL3Vsb2MuaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4KICNpbmNsdWRlIDx1bmlj
b2RlL3VudW1zeXMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9MYW5ndWFnZS5oPgpAQCAtMTE0LDE3ICsxMTUsMjYgQEAgc3RydWN0IE1hdGNoZXJSZXN1bHQg
ewogY29uc3QgQ2xhc3NJbmZvIEludGxPYmplY3Q6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNl
OjpzX2luZm8sICZpbnRsT2JqZWN0VGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SW50bE9iamVjdCkgfTsKIAogSW50bE9iamVjdDo6SW50bE9iamVjdChWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQotICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQorICAg
IDogQmFzZSh2bSwgc3RydWN0dXJlKQogewogfQogCi1JbnRsT2JqZWN0KiBJbnRsT2JqZWN0Ojpj
cmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK0ludGxPYmplY3QqIEludGxPYmpl
Y3Q6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewogICAgIEludGxPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEludGxPYmplY3Q+KHZtLmhlYXApKSBJbnRsT2JqZWN0KHZtLCBzdHJ1Y3R1
cmUpOwotICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIG9iamVjdC0+ZmluaXNo
Q3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIAordm9p
ZCBJbnRsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIGlmIChPcHRp
b25zOjp1c2VJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KCkpIHsKKyAgICAgICAgYXV0byogcmVsYXRp
dmVUaW1lRm9ybWF0Q29uc3RydWN0b3IgPSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0
b3I6OmNyZWF0ZSh2bSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlw
ZSgpKSwganNDYXN0PEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqPihnbG9iYWxPYmpl
Y3QtPnJlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3Qo
KSkpOworICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+UmVsYXRpdmVUaW1lRm9ybWF0LCByZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvciwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworICAg
IH0KK30KKwogU3RydWN0dXJlKiBJbnRsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CkBAIC0xNjQsMjYgKzE3
NCw3IEBAIHN0YXRpYyB2b2lkIGFkZE1pc3NpbmdTY3JpcHRMb2NhbGVzKEhhc2hTZXQ8U3RyaW5n
PiYgYXZhaWxhYmxlTG9jYWxlcykKICAgICAgICAgYXZhaWxhYmxlTG9jYWxlcy5hZGQoemhfVFdf
U3RyaW5nLmdldCgpKTsKIH0KIAotY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsQ29sbGF0b3JB
dmFpbGFibGVMb2NhbGVzKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxT
dHJpbmc+PiBjYWNoZWRBdmFpbGFibGVMb2NhbGVzOwotICAgIEhhc2hTZXQ8U3RyaW5nPiYgYXZh
aWxhYmxlTG9jYWxlcyA9IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXMuZ2V0KCk7Ci0KLSAgICBzdGF0
aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7Ci0gICAgc3RkOjpjYWxsX29uY2UoaW5p
dGlhbGl6ZU9uY2UsIFsmXSB7Ci0gICAgICAgIEFTU0VSVChhdmFpbGFibGVMb2NhbGVzLmlzRW1w
dHkoKSk7Ci0gICAgICAgIGludDMyX3QgY291bnQgPSB1Y29sX2NvdW50QXZhaWxhYmxlKCk7Ci0g
ICAgICAgIGZvciAoaW50MzJfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAg
IFN0cmluZyBsb2NhbGUgPSBjb252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKHVjb2xf
Z2V0QXZhaWxhYmxlKGkpKTsKLSAgICAgICAgICAgIGlmICghbG9jYWxlLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgICAgICBhdmFpbGFibGVMb2NhbGVzLmFkZChsb2NhbGUpOwotICAgICAgICB9Ci0g
ICAgICAgIGFkZE1pc3NpbmdTY3JpcHRMb2NhbGVzKGF2YWlsYWJsZUxvY2FsZXMpOwotICAgIH0p
OwotICAgIHJldHVybiBhdmFpbGFibGVMb2NhbGVzOwotfQotCi1jb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIGludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKQorY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hTZXQ8U3RyaW5nPj4gY2FjaGVkQXZhaWxhYmxlTG9jYWxlczsKICAgICBIYXNoU2V0
PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMgPSBjYWNoZWRBdmFpbGFibGVMb2NhbGVzLmdldCgp
OwpAQCAtMTkxLDkgKzE4Miw5IEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bERhdGVUaW1l
Rm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpCiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRp
YWxpemVPbmNlOwogICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNlLCBbJl0gewogICAg
ICAgICBBU1NFUlQoYXZhaWxhYmxlTG9jYWxlcy5pc0VtcHR5KCkpOwotICAgICAgICBpbnQzMl90
IGNvdW50ID0gdWRhdF9jb3VudEF2YWlsYWJsZSgpOworICAgICAgICBpbnQzMl90IGNvdW50ID0g
dWxvY19jb3VudEF2YWlsYWJsZSgpOwogICAgICAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgbG9jYWxlID0gY29udmVydElDVUxvY2Fs
ZVRvQkNQNDdMYW5ndWFnZVRhZyh1ZGF0X2dldEF2YWlsYWJsZShpKSk7CisgICAgICAgICAgICBT
dHJpbmcgbG9jYWxlID0gY29udmVydElDVUxvY2FsZVRvQkNQNDdMYW5ndWFnZVRhZyh1bG9jX2dl
dEF2YWlsYWJsZShpKSk7CiAgICAgICAgICAgICBpZiAoIWxvY2FsZS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICAgICAgYXZhaWxhYmxlTG9jYWxlcy5hZGQobG9jYWxlKTsKICAgICAgICAgfQpAQCAt
MjAyLDcgKzE5Myw3IEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bERhdGVUaW1lRm9ybWF0
QXZhaWxhYmxlTG9jYWxlcygpCiAgICAgcmV0dXJuIGF2YWlsYWJsZUxvY2FsZXM7CiB9CiAKLWNv
bnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKQor
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKCkKIHsK
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBjYWNoZWRBdmFpbGFi
bGVMb2NhbGVzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcyA9IGNhY2hl
ZEF2YWlsYWJsZUxvY2FsZXMuZ2V0KCk7CkBAIC0yMTAsOSArMjAxLDkgQEAgY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBpbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpCiAgICAgc3RhdGlj
IHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlOwogICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRp
YWxpemVPbmNlLCBbJl0gewogICAgICAgICBBU1NFUlQoYXZhaWxhYmxlTG9jYWxlcy5pc0VtcHR5
KCkpOwotICAgICAgICBpbnQzMl90IGNvdW50ID0gdW51bV9jb3VudEF2YWlsYWJsZSgpOworICAg
ICAgICBpbnQzMl90IGNvdW50ID0gdWNvbF9jb3VudEF2YWlsYWJsZSgpOwogICAgICAgICBmb3Ig
KGludDMyX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBTdHJpbmcgbG9j
YWxlID0gY29udmVydElDVUxvY2FsZVRvQkNQNDdMYW5ndWFnZVRhZyh1bnVtX2dldEF2YWlsYWJs
ZShpKSk7CisgICAgICAgICAgICBTdHJpbmcgbG9jYWxlID0gY29udmVydElDVUxvY2FsZVRvQkNQ
NDdMYW5ndWFnZVRhZyh1Y29sX2dldEF2YWlsYWJsZShpKSk7CiAgICAgICAgICAgICBpZiAoIWxv
Y2FsZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgYXZhaWxhYmxlTG9jYWxlcy5hZGQobG9j
YWxlKTsKICAgICAgICAgfQpAQCAtMzI4LDEzICszMTksMTUgQEAgYm9vbCBpc1VuaWNvZGVMb2Nh
bGVJZGVudGlmaWVyVHlwZShTdHJpbmdWaWV3IHN0cmluZykKIHsKICAgICBBU1NFUlQoIXN0cmlu
Zy5pc051bGwoKSk7CiAKLSAgICBhdXRvIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICBp
ZiAobGVuZ3RoIDwgMyB8fCBsZW5ndGggPiA4KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBmb3IgKGF1dG8gY2hhcmFjdGVyIDogc3RyaW5nLmNvZGVVbml0cygpKSB7Ci0gICAgICAgIGlm
ICghaXNBU0NJSUFscGhhbnVtZXJpYyhjaGFyYWN0ZXIpKQorICAgIGZvciAoYXV0byBwYXJ0IDog
c3RyaW5nLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMoJy0nKSkgeworICAgICAgICBhdXRvIGxl
bmd0aCA9IHBhcnQubGVuZ3RoKCk7CisgICAgICAgIGlmIChsZW5ndGggPCAzIHx8IGxlbmd0aCA+
IDgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZm9yIChhdXRvIGNoYXJh
Y3RlciA6IHBhcnQuY29kZVVuaXRzKCkpIHsKKyAgICAgICAgICAgIGlmICghaXNBU0NJSUFscGhh
bnVtZXJpYyhjaGFyYWN0ZXIpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtOTc5LDggKzk3Miw2IEBAIEpTVmFs
dWUgc3VwcG9ydGVkTG9jYWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGF2CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKIAogICAgIFByb3BlcnR5RGVzY3JpcHRvciBkZXNjOwotICAgIGRlc2Muc2V0Q29uZmln
dXJhYmxlKGZhbHNlKTsKLSAgICBkZXNjLnNldFdyaXRhYmxlKGZhbHNlKTsKIAogICAgIHNpemVf
dCBsZW4gPSBrZXlzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgKytp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKaW5kZXggNjBj
MDAyNTAxOWNjMGY3MTE2YzkzNzczNDhhNDM0ZTIxZGY1ZDJlZi4uNmFmNmY3MzlmZDNjOWMyYmJi
MzcxZDZjMGJjMzYyMzU5YWFiYjE4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxPYmplY3QuaApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQogICogQ29weXJpZ2h0IChD
KSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQzLDIwICs0NCwyMyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZTsKICAgICB9CiAKLSAgICBzdGF0aWMgSW50bE9i
amVjdCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIEludGxPYmplY3QqIGNy
ZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAog
ICAgIERFQ0xBUkVfSU5GTzsKIAogcHJpdmF0ZToKICAgICBJbnRsT2JqZWN0KFZNJiwgU3RydWN0
dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CiB9
OwogCiBTdHJpbmcgZGVmYXVsdExvY2FsZShKU0dsb2JhbE9iamVjdCopOworY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOwogY29uc3QgSGFzaFNldDxTdHJpbmc+
JiBpbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKCk7Ci1jb25zdCBIYXNoU2V0PFN0cmluZz4m
IGludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKLWNvbnN0IEhhc2hTZXQ8U3Ry
aW5nPiYgaW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKLWlubGluZSBjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGludGxQbHVyYWxSdWxlc0F2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVy
biBpbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOyB9CitpbmxpbmUgY29uc3QgSGFz
aFNldDxTdHJpbmc+JiBpbnRsRGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1
cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsgfQoraW5saW5lIGNvbnN0IEhhc2hTZXQ8U3RyaW5n
PiYgaW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxh
YmxlTG9jYWxlcygpOyB9CitpbmxpbmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsUGx1cmFs
UnVsZXNBdmFpbGFibGVMb2NhbGVzKCkgeyByZXR1cm4gaW50bEF2YWlsYWJsZUxvY2FsZXMoKTsg
fQoraW5saW5lIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bFJlbGF0aXZlVGltZUZvcm1hdEF2
YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CiAKIGJv
b2wgaW50bEJvb2xlYW5PcHRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMsIFBy
b3BlcnR5TmFtZSwgYm9vbCYgdXNlc0ZhbGxiYWNrKTsKIFN0cmluZyBpbnRsU3RyaW5nT3B0aW9u
KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zLCBQcm9wZXJ0eU5hbWUsIHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gdmFsdWVzLCBjb25zdCBjaGFyKiBub3RGb3VuZCwg
Y29uc3QgY2hhciogZmFsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKaW5kZXggYzBiNmU0ZWFkZTFhZDAwNDNjMzVkYzliNjU5
MDZlMGZjMWM1Y2EyNS4uODc3MTYwMTIyODRjODFhZGMzOTI3YzYzMWQ0YzM1ODdhMjAxYWI4OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMu
Y3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQ
bHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFN0cmluZyB0eXBlU3RyaW5nID0gaW50bFN0cmluZ09wdGlv
bihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0eXBl
IiksIHsgImNhcmRpbmFsIiwgIm9yZGluYWwiIH0sICJ0eXBlIG11c3QgYmUgXCJjYXJkaW5hbFwi
IG9yIFwib3JkaW5hbFwiIiwgImNhcmRpbmFsIik7CisgICAgU3RyaW5nIHR5cGVTdHJpbmcgPSBp
bnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+
dHlwZSwgeyAiY2FyZGluYWwiLCAib3JkaW5hbCIgfSwgInR5cGUgbXVzdCBiZSBcImNhcmRpbmFs
XCIgb3IgXCJvcmRpbmFsXCIiLCAiY2FyZGluYWwiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOwogICAgIG1fdHlwZSA9IHR5cGVTdHJpbmcgPT0gIm9yZGluYWwiID8g
VVBMVVJBTF9UWVBFX09SRElOQUwgOiBVUExVUkFMX1RZUEVfQ0FSRElOQUw7CiAKQEAgLTIwMSw3
ICsyMDEsNyBAQCBKU09iamVjdCogSW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIEpTT2JqZWN0KiBvcHRpb25zID0gY29u
c3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX2xv
Y2FsZSkpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInR5cGUiKSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX3R5cGUgPT0gVVBMVVJBTF9U
WVBFX09SRElOQUwgPyAib3JkaW5hbCJfcyA6ICJjYXJkaW5hbCJfcykpOworICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwganNOb250cml2aWFsU3RyaW5n
KHZtLCBtX3R5cGUgPT0gVVBMVVJBTF9UWVBFX09SRElOQUwgPyAib3JkaW5hbCJfcyA6ICJjYXJk
aW5hbCJfcykpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgIm1pbmltdW1JbnRlZ2VyRGlnaXRzIiksIGpzTnVtYmVyKG1fbWluaW11bUludGVn
ZXJEaWdpdHMpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVtRnJh
Y3Rpb25EaWdpdHMpKTsKICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiKSwganNOdW1iZXIobV9tYXhpbXVt
RnJhY3Rpb25EaWdpdHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTg1NmZhZjA3YTc3
ZTViNDhmY2NjYjg4MzljNDI3ZDRmNDQ3MTIyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCkBAIC0wLDAg
KzEsMzQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50
ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1
ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6c19p
bmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KSB9OworCituYW1lc3BhY2UgSW50
bFJURkludGVybmFsIHsKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCByZWxldmFudEV4dGVuc2lv
bktleXNbMV0gPSB7ICJudSIgfTsKK30KKwordm9pZCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpV
UmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXI6Om9wZXJhdG9yKCkoVVJlbGF0aXZlRGF0
ZVRpbWVGb3JtYXR0ZXIqIHJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIpIGNvbnN0Cit7CisgICAg
aWYgKHJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIpCisgICAgICAgIHVyZWxkYXRlZm10X2Nsb3Nl
KHJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIpOworfQorCit2b2lkIEludGxSZWxhdGl2ZVRpbWVG
b3JtYXQ6OlVOdW1iZXJGb3JtYXREZWxldGVyOjpvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXQqIG51
bWJlckZvcm1hdCkgY29uc3QKK3sKKyAgICBpZiAobnVtYmVyRm9ybWF0KQorICAgICAgICB1bnVt
X2Nsb3NlKG51bWJlckZvcm1hdCk7Cit9CisKK3ZvaWQgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6
VUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXI6Om9wZXJhdG9yKCkoVUZpZWxkUG9zaXRpb25J
dGVyYXRvciogaXRlcmF0b3IpIGNvbnN0Cit7CisgICAgaWYgKGl0ZXJhdG9yKQorICAgICAgICB1
ZmllbGRwb3NpdGVyX2Nsb3NlKGl0ZXJhdG9yKTsKK30KKworSW50bFJlbGF0aXZlVGltZUZvcm1h
dCogSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCit7CisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdCogZm9ybWF0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW50bFJlbGF0aXZlVGltZUZvcm1hdD4odm0uaGVhcCkpIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQodm0sIHN0cnVjdHVyZSk7CisgICAgZm9ybWF0LT5maW5pc2hDcmVh
dGlvbih2bSk7CisgICAgcmV0dXJuIGZvcm1hdDsKK30KKworU3RydWN0dXJlKiBJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6Oklu
dGxSZWxhdGl2ZVRpbWVGb3JtYXQoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Cit9CisKK3ZvaWQgSW50bFJlbGF0
aXZlVGltZUZvcm1hdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQoreworICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SW50bFJlbGF0aXZlVGltZUZvcm1hdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7Cit9CisKK25hbWVzcGFjZSBJbnRsUlRGSW50ZXJuYWwgewor
c3RhdGljIFZlY3RvcjxTdHJpbmc+IGxvY2FsZURhdGEoY29uc3QgU3RyaW5nJiBsb2NhbGUsIHNp
emVfdCBrZXlJbmRleCkKK3sKKyAgICAvLyBUaGUgaW5kZXggb2YgdGhlIGV4dGVuc2lvbiBrZXkg
Im51IiBpbiByZWxldmFudEV4dGVuc2lvbktleXMgaXMgMC4KKyAgICBBU1NFUlRfVU5VU0VEKGtl
eUluZGV4LCAha2V5SW5kZXgpOworICAgIHJldHVybiBudW1iZXJpbmdTeXN0ZW1zRm9yTG9jYWxl
KGxvY2FsZSk7Cit9Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW5pdGlh
bGl6ZVJlbGF0aXZlVGltZUZvcm1hdAordm9pZCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojppbml0
aWFsaXplUmVsYXRpdmVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgbG9jYWxlcywgSlNWYWx1ZSBvcHRpb25zVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHJlcXVlc3RlZExvY2FsZXMgPSBjYW5vbmljYWxpemVM
b2NhbGVMaXN0KGdsb2JhbE9iamVjdCwgbG9jYWxlcyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgdm9pZCgpKTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zOworICAgIGlmIChvcHRp
b25zVmFsdWUuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgb3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KHZtLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7
CisgICAgZWxzZSB7CisgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zVmFsdWUudG9PYmplY3QoZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
KyAgICB9CisKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBvcHQ7CisgICAgU3RyaW5nIGxv
Y2FsZU1hdGNoZXIgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0u
cHJvcGVydHlOYW1lcy0+bG9jYWxlTWF0Y2hlciwgeyAibG9va3VwIiwgImJlc3QgZml0IiB9LCAi
bG9jYWxlTWF0Y2hlciBtdXN0IGJlIGVpdGhlciBcImxvb2t1cFwiIG9yIFwiYmVzdCBmaXRcIiIs
ICJiZXN0IGZpdCIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Cisg
ICAgb3B0LmFkZCh2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGVNYXRjaGVyLnN0cmluZygpLCBsb2Nh
bGVNYXRjaGVyKTsKKworICAgIFN0cmluZyBudW1iZXJpbmdTeXN0ZW0gPSBpbnRsU3RyaW5nT3B0
aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+bnVtYmVyaW5nU3lz
dGVtLCB7IH0sIG51bGxwdHIsIG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7CisgICAgaWYgKCFudW1iZXJpbmdTeXN0ZW0uaXNOdWxsKCkpIHsKKyAgICAg
ICAgaWYgKCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShudW1iZXJpbmdTeXN0ZW0pKSB7
CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm51bWJl
cmluZ1N5c3RlbSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBudW1iZXJpbmcgc3lzdGVtIHZhbHVlIl9z
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBvcHQuYWRkKCJudSJf
cywgbnVtYmVyaW5nU3lzdGVtKTsKKyAgICB9CisKKyAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4m
IGF2YWlsYWJsZUxvY2FsZXMgPSBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxl
cygpOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHJlc29sdmVkID0gcmVzb2x2ZUxvY2Fs
ZShnbG9iYWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwg
SW50bFJURkludGVybmFsOjpyZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5HVEgo
SW50bFJURkludGVybmFsOjpyZWxldmFudEV4dGVuc2lvbktleXMpLCBJbnRsUlRGSW50ZXJuYWw6
OmxvY2FsZURhdGEpOworICAgIG1fbG9jYWxlID0gcmVzb2x2ZWQuZ2V0KHZtLnByb3BlcnR5TmFt
ZXMtPmxvY2FsZS5zdHJpbmcoKSk7CisgICAgaWYgKG1fbG9jYWxlLmlzRW1wdHkoKSkgeworICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRp
YWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0IGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX251bWJlcmluZ1N5c3RlbSA9IHJlc29sdmVkLmdl
dCgibnUiX3MpOworICAgIENTdHJpbmcgZGF0YUxvY2FsZVdpdGhFeHRlbnNpb25zID0gbWFrZVN0
cmluZyhyZXNvbHZlZC5nZXQoImRhdGFMb2NhbGUiX3MpLCAiLXUtbnUtIiwgbV9udW1iZXJpbmdT
eXN0ZW0pLnV0ZjgoKTsKKworICAgIFN0cmluZyBzdHlsZSA9IGludGxTdHJpbmdPcHRpb24oZ2xv
YmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHlsZSwgeyAibG9uZyIsICJz
aG9ydCIsICJuYXJyb3ciIH0sICJzdHlsZSBtdXN0IGJlIGVpdGhlciBcImxvbmdcIiwgXCJzaG9y
dFwiLCBvciBcIm5hcnJvd1wiIiwgImxvbmciKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOworICAgIGlmIChzdHlsZSA9PSAibG9uZyIpCisgICAgICAgIG1fc3R5bGUg
PSBVREFUX1NUWUxFX0xPTkc7CisgICAgZWxzZSBpZiAoc3R5bGUgPT0gInNob3J0IikKKyAgICAg
ICAgbV9zdHlsZSA9IFVEQVRfU1RZTEVfU0hPUlQ7CisgICAgZWxzZSBpZiAoc3R5bGUgPT0gIm5h
cnJvdyIpCisgICAgICAgIG1fc3R5bGUgPSBVREFUX1NUWUxFX05BUlJPVzsKKyAgICBlbHNlCisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgU3RyaW5nIG51bWVyaWMgPSBpbnRs
U3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+bnVt
ZXJpYywgeyAiYWx3YXlzIiwgImF1dG8iIH0sICJudW1lcmljIG11c3QgYmUgZWl0aGVyIFwiYWx3
YXlzXCIgb3IgXCJhdXRvXCIiLCAiYWx3YXlzIik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKKyAgICBtX251bWVyaWMgPSAobnVtZXJpYyA9PSAiYWx3YXlzIik7CisK
KyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBtX251bWJlckZvcm1h
dCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4o
dW51bV9vcGVuKFVOVU1fREVDSU1BTCwgbnVsbHB0ciwgMCwgZGF0YUxvY2FsZVdpdGhFeHRlbnNp
b25zLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOworICAgIGlmIChVTkxJS0VMWShVX0ZBSUxV
UkUoc3RhdHVzKSkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFJlbGF0aXZlVGltZUZvcm1hdCJfcyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX3JlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIgPSBzdGQ6
OnVuaXF1ZV9wdHI8VVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIsIFVSZWxhdGl2ZURhdGVUaW1l
Rm9ybWF0dGVyRGVsZXRlcj4odXJlbGRhdGVmbXRfb3BlbihkYXRhTG9jYWxlV2l0aEV4dGVuc2lv
bnMuZGF0YSgpLCBtX251bWJlckZvcm1hdC5nZXQoKSwgbV9zdHlsZSwgVURJU1BDVFhfQ0FQSVRB
TElaQVRJT05fRk9SX1NUQU5EQUxPTkUsICZzdGF0dXMpKTsKKyAgICBpZiAoVU5MSUtFTFkoVV9G
QUlMVVJFKHN0YXR1cykpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBSZWxhdGl2ZVRpbWVGb3JtYXQiX3MpOworICAg
ICAgICByZXR1cm47CisgICAgfQorfQorCitzdGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5n
KFVEYXRlUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlclN0eWxlIHN0eWxlKQoreworICAgIHN3aXRj
aCAoc3R5bGUpIHsKKyAgICBjYXNlIFVEQVRfU1RZTEVfTE9ORzoKKyAgICAgICAgcmV0dXJuICJs
b25nIl9zOworICAgIGNhc2UgVURBVF9TVFlMRV9TSE9SVDoKKyAgICAgICAgcmV0dXJuICJzaG9y
dCJfczsKKyAgICBjYXNlIFVEQVRfU1RZTEVfTkFSUk9XOgorICAgICAgICByZXR1cm4gIm5hcnJv
dyJfczsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbDo6bnVsbCgpOworfQorCitzdGF0aWMgQVNDSUlMaXRlcmFsIG51bWVyaWNTdHJpbmco
Ym9vbCBudW1lcmljKQoreworICAgIHJldHVybiBudW1lcmljID8gImFsd2F5cyJfcyA6ICJhdXRv
Il9zOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWludGwucmVsYXRpdmV0
aW1lZm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZG9wdGlvbnMKK0pTT2JqZWN0KiBJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSlNPYmplY3QqIG9w
dGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgIG9wdGlvbnMt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc05vbnRyaXZpYWxTdHJp
bmcodm0sIG1fbG9jYWxlKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5zdHlsZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBzdHlsZVN0cmluZyhtX3N0eWxl
KSkpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bnVtZXJp
YywganNOb250cml2aWFsU3RyaW5nKHZtLCBudW1lcmljU3RyaW5nKG1fbnVtZXJpYykpKTsKKyAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm51bWJlcmluZ1N5c3Rl
bSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX251bWJlcmluZ1N5c3RlbSkpOworICAgIHJldHVy
biBvcHRpb25zOworfQorCitzdGF0aWMgU3RyaW5nVmlldyBzaW5ndWxhclVuaXQoU3RyaW5nVmll
dyB1bml0KQoreworICAgIC8vIFBsdXJhbHMgYXJlIGFsbG93ZWQsIGJ1dCB0aGFua2Z1bGx5IHRo
ZXkncmUgYWxsIGp1c3QgYSBzaW1wbGUgLXMuCisgICAgcmV0dXJuIHVuaXQuZW5kc1dpdGgoInMi
KSA/IHVuaXQubGVmdCh1bml0Lmxlbmd0aCgpIC0gMSkgOiB1bml0OworfQorCisvLyBodHRwczov
L3RjMzkuZXMvZWNtYTQwMi8jc2VjLXNpbmd1bGFycmVsYXRpdmV0aW1ldW5pdAorc3RhdGljIE9w
dGlvbmFsPFVSZWxhdGl2ZURhdGVUaW1lVW5pdD4gcmVsYXRpdmVUaW1lVW5pdFR5cGUoU3RyaW5n
VmlldyB1bml0KQoreworICAgIFN0cmluZ1ZpZXcgc2luZ3VsYXIgPSBzaW5ndWxhclVuaXQodW5p
dCk7CisKKyAgICBpZiAoc2luZ3VsYXIgPT0gInNlY29uZCIpCisgICAgICAgIHJldHVybiBVREFU
X1JFTF9VTklUX1NFQ09ORDsKKyAgICBpZiAoc2luZ3VsYXIgPT0gIm1pbnV0ZSIpCisgICAgICAg
IHJldHVybiBVREFUX1JFTF9VTklUX01JTlVURTsKKyAgICBpZiAoc2luZ3VsYXIgPT0gImhvdXIi
KQorICAgICAgICByZXR1cm4gVURBVF9SRUxfVU5JVF9IT1VSOworICAgIGlmIChzaW5ndWxhciA9
PSAiZGF5IikKKyAgICAgICAgcmV0dXJuIFVEQVRfUkVMX1VOSVRfREFZOworICAgIGlmIChzaW5n
dWxhciA9PSAid2VlayIpCisgICAgICAgIHJldHVybiBVREFUX1JFTF9VTklUX1dFRUs7CisgICAg
aWYgKHNpbmd1bGFyID09ICJtb250aCIpCisgICAgICAgIHJldHVybiBVREFUX1JFTF9VTklUX01P
TlRIOworICAgIGlmIChzaW5ndWxhciA9PSAicXVhcnRlciIpCisgICAgICAgIHJldHVybiBVREFU
X1JFTF9VTklUX1FVQVJURVI7CisgICAgaWYgKHNpbmd1bGFyID09ICJ5ZWFyIikKKyAgICAgICAg
cmV0dXJuIFVEQVRfUkVMX1VOSVRfWUVBUjsKKworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9
CisKK1N0cmluZyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRJbnRlcm5hbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUsIFN0cmluZ1ZpZXcgdW5pdCkKK3sK
KyAgICBBU1NFUlQobV9yZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyKTsKKworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodmFsdWUpKSB7CisgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibnVtYmVyIGFyZ3VtZW50IG11c3QgYmUg
ZmluaXRlIl9zKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKworICAgIGF1dG8g
dW5pdFR5cGUgPSByZWxhdGl2ZVRpbWVVbml0VHlwZSh1bml0KTsKKyAgICBpZiAoIXVuaXRUeXBl
KSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidW5pdCBh
cmd1bWVudCBpcyBub3QgYSByZWNvZ25pemVkIHVuaXQgdHlwZSJfcyk7CisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKyAgICB9CisKKyAgICBhdXRvIGZvcm1hdFJlbGF0aXZlVGltZSA9IG1fbnVt
ZXJpYyA/IHVyZWxkYXRlZm10X2Zvcm1hdE51bWVyaWMgOiB1cmVsZGF0ZWZtdF9mb3JtYXQ7CisK
KyAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICBWZWN0b3I8VUNoYXIs
IDMyPiByZXN1bHQoMzIpOworICAgIGF1dG8gcmVzdWx0TGVuZ3RoID0gZm9ybWF0UmVsYXRpdmVU
aW1lKG1fcmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIHVuaXRUeXBlLnZh
bHVlKCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCksICZzdGF0dXMpOworICAgIGlmIChz
dGF0dXMgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpIHsKKyAgICAgICAgc3RhdHVzID0gVV9a
RVJPX0VSUk9SOworICAgICAgICByZXN1bHQuZ3JvdyhyZXN1bHRMZW5ndGgpOworICAgICAgICBm
b3JtYXRSZWxhdGl2ZVRpbWUobV9yZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyLmdldCgpLCB2YWx1
ZSwgdW5pdFR5cGUudmFsdWUoKSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVuZ3RoLCAmc3RhdHVz
KTsKKyAgICB9CisgICAgaWYgKFVOTElLRUxZKFVfRkFJTFVSRShzdGF0dXMpKSkgeworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBy
ZWxhdGl2ZSB0aW1lIl9zKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKworICAg
IHJldHVybiBTdHJpbmcocmVzdWx0LmRhdGEoKSwgcmVzdWx0TGVuZ3RoKTsKK30KKworLy8gaHR0
cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1Gb3JtYXRSZWxhdGl2ZVRpbWUKK0pTVmFsdWUgSW50
bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGRvdWJsZSB2YWx1ZSwgU3RyaW5nVmlldyB1bml0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBTdHJpbmcgcmVzdWx0ID0gZm9ybWF0SW50ZXJuYWwoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwg
dW5pdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVy
biBqc1N0cmluZyh2bSwgcmVzdWx0KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIv
I3NlYy1Gb3JtYXRSZWxhdGl2ZVRpbWVUb1BhcnRzCitKU1ZhbHVlIEludGxSZWxhdGl2ZVRpbWVG
b3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91Ymxl
IHZhbHVlLCBTdHJpbmdWaWV3IHVuaXQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFN0
cmluZyBmb3JtYXR0ZWRSZWxhdGl2ZVRpbWUgPSBmb3JtYXRJbnRlcm5hbChnbG9iYWxPYmplY3Qs
IHZhbHVlLCB1bml0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisg
ICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgYXV0byBpdGVyYXRvciA9
IHN0ZDo6dW5pcXVlX3B0cjxVRmllbGRQb3NpdGlvbkl0ZXJhdG9yLCBVRmllbGRQb3NpdGlvbkl0
ZXJhdG9yRGVsZXRlcj4odWZpZWxkcG9zaXRlcl9vcGVuKCZzdGF0dXMpKTsKKyAgICBBU1NFUlQo
VV9TVUNDRVNTKHN0YXR1cykpOworCisgICAgZG91YmxlIGFic1ZhbHVlID0gc3RkOjphYnModmFs
dWUpOworCisgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyKDMyKTsKKyAgICBhdXRvIG51bWJl
ckxlbmd0aCA9IHVudW1fZm9ybWF0RG91YmxlRm9yRmllbGRzKG1fbnVtYmVyRm9ybWF0LmdldCgp
LCBhYnNWYWx1ZSwgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSwgaXRlcmF0b3IuZ2V0KCks
ICZzdGF0dXMpOworICAgIGlmIChzdGF0dXMgPT0gVV9CVUZGRVJfT1ZFUkZMT1dfRVJST1IpIHsK
KyAgICAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgICAgICBidWZmZXIuZ3JvdyhudW1i
ZXJMZW5ndGgpOworICAgICAgICB1bnVtX2Zvcm1hdERvdWJsZUZvckZpZWxkcyhtX251bWJlckZv
cm1hdC5nZXQoKSwgYWJzVmFsdWUsIGJ1ZmZlci5kYXRhKCksIG51bWJlckxlbmd0aCwgaXRlcmF0
b3IuZ2V0KCksICZzdGF0dXMpOworICAgIH0KKyAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGZvcm1hdCByZWxhdGl2ZSB0aW1lIl9zKTsKKworICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVy
ID0gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIG51bWJlckxlbmd0aCk7CisKKyAgICBKU0FycmF5KiBw
YXJ0cyA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIDAp
OworICAgIGlmICghcGFydHMpCisgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSk7CisKKyAgICBKU1N0cmluZyogbGl0ZXJhbFN0cmluZyA9IGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3MpOworCisgICAgLy8gV2Ugb25seSBoYXZl
IG9uZSBpbnB1dCBudW1iZXIsIHNvIG91ciByZWxhdGl2ZSB0aW1lIHdpbGwgaGF2ZSBhdCBtb3N0
IG9uZSBudW1lcmljIHN1YnN0cmluZywKKyAgICAvLyBidXQgd2UgbmVlZCB0byBsaXN0IGFsbCBv
ZiB0aGUgbnVtZXJpYyBwYXJ0cyBzZXBhcmF0ZWx5LgorICAgIHNpemVfdCBudW1iZXJFbmQgPSAw
OworICAgIHNpemVfdCBudW1iZXJTdGFydCA9IGZvcm1hdHRlZFJlbGF0aXZlVGltZS5maW5kKGZv
cm1hdHRlZE51bWJlcik7CisgICAgaWYgKG51bWJlclN0YXJ0ICE9IG5vdEZvdW5kKSB7CisgICAg
ICAgIG51bWJlckVuZCA9IG51bWJlclN0YXJ0ICsgbnVtYmVyTGVuZ3RoOworCisgICAgICAgIC8v
IEFkZCBpbml0aWFsIGxpdGVyYWwgaWYgdGhlcmUgaXMgb25lLgorICAgICAgICBpZiAobnVtYmVy
U3RhcnQpIHsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBwYXJ0ID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+dHlwZSwgbGl0ZXJhbFN0cmluZyk7CisgICAgICAgICAgICBwYXJ0LT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBqc1N1YnN0cmluZyh2bSwgZm9ybWF0
dGVkUmVsYXRpdmVUaW1lLCAwLCBudW1iZXJTdGFydCkpOworICAgICAgICAgICAgcGFydHMtPnB1
c2goZ2xvYmFsT2JqZWN0LCBwYXJ0KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisgICAgICAgIH0KKworICAgICAgICBJbnRsTnVtYmVyRm9ybWF0Ojpmb3Jt
YXRUb1BhcnRzSW50ZXJuYWwoZ2xvYmFsT2JqZWN0LCBhYnNWYWx1ZSwgZm9ybWF0dGVkTnVtYmVy
LCBpdGVyYXRvci5nZXQoKSwgcGFydHMsIGpzU3RyaW5nKHZtLCBzaW5ndWxhclVuaXQodW5pdCku
dG9TdHJpbmcoKSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgIH0KKworICAgIC8vIEFkZCBmaW5hbCBsaXRlcmFsIGlmIHRoZXJlIGlzIG9uZS4KKyAgICBh
dXRvIHN0cmluZ0xlbmd0aCA9IGZvcm1hdHRlZFJlbGF0aXZlVGltZS5sZW5ndGgoKTsKKyAgICBp
ZiAobnVtYmVyRW5kICE9IHN0cmluZ0xlbmd0aCkgeworICAgICAgICBKU09iamVjdCogcGFydCA9
IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgICAgIHBhcnQtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwgbGl0ZXJhbFN0cmluZyk7CisgICAgICAg
IHBhcnQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWUsIGpzU3Vic3RyaW5n
KHZtLCBmb3JtYXR0ZWRSZWxhdGl2ZVRpbWUsIG51bWJlckVuZCwgc3RyaW5nTGVuZ3RoIC0gbnVt
YmVyRW5kKSk7CisgICAgICAgIHBhcnRzLT5wdXNoKGdsb2JhbE9iamVjdCwgcGFydCk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgfQorCisgICAgcmV0dXJu
IHBhcnRzOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
ZWI1Mzk5YzhmYTI5ZmU1OGZlODZhMzQ3NjI2YWU1YTYyYzY0YmY5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
CkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFj
dGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgPHVuaWNvZGUvdWZpZWxkcG9zaXRlci5oPgorI2lu
Y2x1ZGUgPHVuaWNvZGUvdXJlbGRhdGVmbXQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEludGxSZWxhdGl2ZVRpbWVGb3JtYXQgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisKKyAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisKKyAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQ2VsbCogY2VsbCkKKyAgICB7CisgICAgICAgIHN0YXRpY19jYXN0PElu
dGxSZWxhdGl2ZVRpbWVGb3JtYXQqPihjZWxsKS0+SW50bFJlbGF0aXZlVGltZUZvcm1hdDo6fklu
dGxSZWxhdGl2ZVRpbWVGb3JtYXQoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
ZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1
YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2bS5pbnRsUmVsYXRpdmVU
aW1lRm9ybWF0U3BhY2U8bW9kZT4oKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSW50bFJlbGF0aXZl
VGltZUZvcm1hdCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworICAgIHZvaWQgaW5pdGlhbGl6ZVJlbGF0aXZlVGltZUZvcm1hdChK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZSBvcHRpb25zKTsKKyAgICBK
U1ZhbHVlIGZvcm1hdChKU0dsb2JhbE9iamVjdCosIGRvdWJsZSwgU3RyaW5nVmlldyB1bml0U3Ry
aW5nKTsKKyAgICBKU1ZhbHVlIGZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUs
IFN0cmluZ1ZpZXcgdW5pdFN0cmluZyk7CisgICAgSlNPYmplY3QqIHJlc29sdmVkT3B0aW9ucyhK
U0dsb2JhbE9iamVjdCopOworCitwcml2YXRlOgorICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQo
Vk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworCisgICAgU3Ry
aW5nIGZvcm1hdEludGVybmFsKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlLCBTdHJpbmdWaWV3IHVu
aXQpOworCisgICAgc3RydWN0IFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyRGVsZXRlciB7Cisg
ICAgICAgIHZvaWQgb3BlcmF0b3IoKShVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciopIGNvbnN0
OworICAgIH07CisgICAgc3RydWN0IFVOdW1iZXJGb3JtYXREZWxldGVyIHsKKyAgICAgICAgdm9p
ZCBvcGVyYXRvcigpKFVOdW1iZXJGb3JtYXQqKSBjb25zdDsKKyAgICB9OworICAgIHN0cnVjdCBV
RmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlciB7CisgICAgICAgIHZvaWQgb3BlcmF0b3IoKShV
RmllbGRQb3NpdGlvbkl0ZXJhdG9yKikgY29uc3Q7CisgICAgfTsKKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciwgVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0
ZXJEZWxldGVyPiBtX3JlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXI7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1hdDsK
KworICAgIFN0cmluZyBtX2xvY2FsZTsKKyAgICBTdHJpbmcgbV9udW1iZXJpbmdTeXN0ZW07Cisg
ICAgVURhdGVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyU3R5bGUgbV9zdHlsZSB7IFVEQVRfU1RZ
TEVfTE9ORyB9OworICAgIGJvb2wgbV9udW1lcmljIHsgdHJ1ZSB9OworfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iNjdmY2I5MDAxMTNjOGI1M2QzMTg3OWUyZmZhMDM4ZGMwODBkMmEwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1h
dENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVj
dG9yLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNp
bmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bFJlbGF0aXZl
VGltZUZvcm1hdFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRl
ICJMb29rdXAuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklB
TExZX0RFU1RSVUNUSUJMRShJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IpOworCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
Q29uc3RydWN0b3JGdW5jU3VwcG9ydGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CisKK30KKworI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFs
RnVuY3Rpb246OnNfaW5mbywgJnJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yVGFibGUsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVj
dG9yKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ci5sdXQuaAorQGJlZ2luIHJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yVGFibGUKKyAgc3Vw
cG9ydGVkTG9jYWxlc09mICAgICAgICAgICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1
Y3RvckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MQorQGVuZAorKi8KKworSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKiByZWxhdGl2ZVRpbWVGb3Jt
YXRQcm90b3R5cGUpCit7CisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxSZWxhdGl2ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1
Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0s
IHJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwor
fQorCitTdHJ1Y3R1cmUqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKK30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbEludGxSZWxhdGl2ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxSZWxhdGl2
ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworSW50bFJlbGF0aXZl
VGltZUZvcm1hdENvbnN0cnVjdG9yOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3Io
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwg
Y2FsbEludGxSZWxhdGl2ZVRpbWVGb3JtYXQsIGNvbnN0cnVjdEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXQpCit7Cit9CisKK3ZvaWQgSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIHJlbGF0
aXZlVGltZUZvcm1hdFByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
IlJlbGF0aXZlVGltZUZvcm1hdCJfcywgTmFtZUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVy
ZVRyYW5zaXRpb24pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5l
cy9lY21hNDAyLyNzZWMtSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQKK3N0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEludGxSZWxhdGl2ZVRpbWVGb3JtYXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSW50ZXJuYWxGdW5jdGlv
bjo6Y3JlYXRlU3ViY2xhc3NTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmpzQ2Fs
bGVlKCksIGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCksIGpzQ2FzdDxJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0Q29uc3RydWN0b3IqPihjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpLT5yZWxhdGl2ZVRpbWVGb3Jt
YXRTdHJ1Y3R1cmUodm0pKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KiByZWxhdGl2ZVRpbWVGb3Jt
YXQgPSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGUodm0sIHN0cnVjdHVyZSk7CisgICAg
QVNTRVJUKHJlbGF0aXZlVGltZUZvcm1hdCk7CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CisgICAg
cmVsYXRpdmVUaW1lRm9ybWF0LT5pbml0aWFsaXplUmVsYXRpdmVUaW1lRm9ybWF0KGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZWxhdGl2ZVRpbWVGb3JtYXQpOworfQorCisvLyBo
dHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuUmVsYXRpdmVUaW1lRm9ybWF0CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSW50bFJlbGF0aXZlVGltZUZvcm1h
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JD
YW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJl
bGF0aXZlVGltZUZvcm1hdCIpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3Nl
Yy1JbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yRnVuY1N1
cHBvcnRlZExvY2FsZXNPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzID0gaW50bFJlbGF0aXZlVGltZUZvcm1hdEF2YWlsYWJs
ZUxvY2FsZXMoKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IHJlcXVlc3RlZExvY2FsZXMgPSBjYW5v
bmljYWxpemVMb2NhbGVMaXN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzdXBwb3J0ZWRMb2Nh
bGVzKGdsb2JhbE9iamVjdCwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgY2Fs
bEZyYW1lLT5hcmd1bWVudCgxKSkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0
Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiN2JkMDkwMDNmZThiZWMyNzky
YzQ1ODRlZTI4NDU4MWU3NzI4ODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaApAQCAtMCww
ICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50
ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50
ZXJuYWxGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU7CisKK2NsYXNzIElu
dGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1
bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0
dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSW50bFJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJF
X0lORk87CisKKyAgICBTdHJ1Y3R1cmUqIHJlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZShWTSYp
IGNvbnN0IHsgcmV0dXJuIGdsb2JhbE9iamVjdCgpLT5yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1
cmUoKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqKTsKKworcHJpdmF0ZToKKyAgICBJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0Q29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKK307CitTVEFUSUNfQVNT
RVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0
b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdFByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmRiNWU1YTRkMjJkMzkzMjg1YTQ2NzRl
YTEzMGY3M2EzMWUwMTI0OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEs
MTMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0
YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJFcnJvci5oIgor
I2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
UHJvdG90eXBlRnVuY0Zvcm1hdChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3Rv
dHlwZUZ1bmNGb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJv
dG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOwor
Cit9CisKKyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sICZyZWxhdGl2
ZVRpbWVGb3JtYXRQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUubHV0LmgKK0BiZWdpbiByZWxhdGl2ZVRpbWVGb3Jt
YXRQcm90b3R5cGVUYWJsZQorICBmb3JtYXQgICAgICAgICAgIEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRQcm90b3R5cGVGdW5jRm9ybWF0ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCisgIGZv
cm1hdFRvUGFydHMgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRU
b1BhcnRzICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKKyAgcmVzb2x2ZWRPcHRpb25zICBJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucyAgRG9udEVudW18RnVu
Y3Rpb24gMAorQGVuZAorKi8KKworSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSogSW50
bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCit7CisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSogb2JqZWN0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3Rv
dHlwZT4odm0uaGVhcCkpIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUodm0sIHN0cnVj
dHVyZSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVj
dDsKK30KKworU3RydWN0dXJlKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7Cit9CisKK0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OkludGxSZWxhdGl2
ZVRpbWVGb3JtYXRQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2aWFsU3RyaW5nKHZtLCAiSW50bC5S
ZWxhdGl2ZVRpbWVGb3JtYXQiX3MpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQw
Mi8jc2VjLUludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNG
b3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqIHJl
bGF0aXZlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bFJlbGF0aXZlVGltZUZvcm1hdCo+
KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXJlbGF0aXZlVGltZUZvcm1h
dCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBSZWxh
dGl2ZVRpbWVGb3JtYXQiX3MpKTsKKworICAgIGRvdWJsZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIFN0cmluZyB1bml0ID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVsYXRpdmVUaW1lRm9ybWF0LT5mb3JtYXQoZ2xv
YmFsT2JqZWN0LCB2YWx1ZSwgdW5pdCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0
MDIvI3NlYy1JbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cwor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90
eXBlRnVuY0Zvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEludGxSZWxhdGl2
ZVRpbWVGb3JtYXQqIHJlbGF0aXZlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bFJlbGF0
aXZlVGltZUZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXJl
bGF0aXZlVGltZUZvcm1hdCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJv
dG90eXBlLmZvcm1hdFRvUGFydHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgUmVsYXRpdmVUaW1lRm9ybWF0Il9zKSk7CisKKyAgICBkb3VibGUg
dmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBT
dHJpbmcgdW5pdCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9XVEZTdHJpbmcoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
KworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlbGF0aXZl
VGltZUZvcm1hdC0+Zm9ybWF0VG9QYXJ0cyhnbG9iYWxPYmplY3QsIHZhbHVlLCB1bml0KSkpOwor
fQorCisvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWludGwucmVsYXRpdmV0aW1lZm9y
bWF0LnByb3RvdHlwZS5yZXNvbHZlZG9wdGlvbnMKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqIHJlbGF0aXZlVGlt
ZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bFJlbGF0aXZlVGltZUZvcm1hdCo+KHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXJlbGF0aXZlVGltZUZvcm1hdCkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBSZWxh
dGl2ZVRpbWVGb3JtYXQiX3MpKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKHJlbGF0aXZlVGltZUZvcm1hdC0+cmVzb2x2ZWRPcHRpb25zKGdsb2JhbE9i
amVjdCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90
eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uY2NiYWVhOGU3NWE0ODEyODgwODJiNTkwODBhMGFlZGNlZTUwNzM1
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUgZmluYWwgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9u
RmluYWxPYmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19B
U1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5
cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQor
CisgICAgc3RhdGljIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGNyZWF0ZShWTSYs
IFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3Byb3Rl
Y3RlZDoKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKK3ByaXZhdGU6CisgICAgSW50
bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKaW5kZXggNzY0ZTEwMDUzNThkMTllOWU5NmUzOTkwYzkyMzU2MzdjNmQw
ZTNhZi4uMTlhNDhmYjkzMGM1YmYwZjM1NTFlM2YzNDZkNjRjODc1NmU0NTYzMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODYs
NiArODYsOCBAQAogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFs
UnVsZXMuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaCIKKyNpbmNsdWRl
ICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZv
cm1hdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkl0ZXJhdG9yUHJvdG90eXBlLmgiCiAjaW5jbHVk
ZSAiSlNBUElXcmFwcGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgpAQCAt
OTU5LDYgKzk2MSwxMiBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMj
IENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICAgICAgSW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlKiBwbHVyYWxSdWxlc1Byb3RvdHlwZSA9IEludGxQbHVyYWxS
dWxlc1Byb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgSW50bFBsdXJhbFJ1
bGVzUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9i
YWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CiAgICAgICAgICAgICBpbml0LnNldChJbnRs
UGx1cmFsUnVsZXM6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIHBsdXJh
bFJ1bGVzUHJvdG90eXBlKSk7CiAgICAgICAgIH0pOworICAgIG1fcmVsYXRpdmVUaW1lRm9ybWF0
U3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVj
dHVyZT4mIGluaXQpIHsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIHJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSA9
IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgICAgICAgICBp
bml0LnNldChJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwg
Z2xvYmFsT2JqZWN0LCByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUpKTsKKyAgICAgICAgfSk7
CiAgICAgbV9kZWZhdWx0Q29sbGF0b3IuaW5pdExhdGVyKAogICAgICAgICBbXSAoY29uc3QgSW5p
dGlhbGl6ZXI8SW50bENvbGxhdG9yPiYgaW5pdCkgewogICAgICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOwpA
QCAtOTcwLDcgKzk3OCw3IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUg
IyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICBp
bml0LnNldChjb2xsYXRvcik7CiAgICAgICAgIH0pOwogCi0gICAgSW50bE9iamVjdCogaW50bCA9
IEludGxPYmplY3Q6OmNyZWF0ZSh2bSwgSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOworICAgIEludGxPYmplY3QqIGludGwgPSBJ
bnRsT2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+SW50bCwgaW50bCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCiAgICAgbV9tb2R1bGVM
b2FkZXIuaW5pdExhdGVyKApAQCAtMTc2OSw2ICsxNzc3LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAg
IHRoaXNPYmplY3QtPm1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAg
IHRoaXNPYmplY3QtPm1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAg
ICAgdGhpc09iamVjdC0+bV9wbHVyYWxSdWxlc1N0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKyAg
ICB0aGlzT2JqZWN0LT5tX3JlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9y
KTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVsbEdldHRlckZ1bmN0aW9u
KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX251bGxTZXR0ZXJGdW5jdGlvbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRl
eCBiMzdiOGFlNmNjOWU2ZmVjZGQxZTYyOTQ1NmFiY2M0NWQzNzQxNTJlLi5hMGMzYjRhYWYwMDA0
NmQyZDk0MTZiNDkwYmE2MjUyNDRkOThmMzZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI5NCw2ICsyOTQsNyBAQCBwdWJsaWM6CiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbnVtYmVyRm9ybWF0
U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBt
X2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVj
dCwgU3RydWN0dXJlPiBtX3BsdXJhbFJ1bGVzU3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3JlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZTsK
IAogICAgIFdyaXRlQmFycmllcjxOdWxsR2V0dGVyRnVuY3Rpb24+IG1fbnVsbEdldHRlckZ1bmN0
aW9uOwogICAgIFdyaXRlQmFycmllcjxOdWxsU2V0dGVyRnVuY3Rpb24+IG1fbnVsbFNldHRlckZ1
bmN0aW9uOwpAQCAtNzg4LDYgKzc4OSw3IEBAIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmUqIG51bWJl
ckZvcm1hdFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlLmdldCh0
aGlzKTsgfQogICAgIFN0cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSB7IHJldHVy
biBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSog
cGx1cmFsUnVsZXNTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3BsdXJhbFJ1bGVzU3RydWN0dXJlLmdl
dCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogcmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJlKCkg
eyByZXR1cm4gbV9yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAKICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoYm9vbCk7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCByZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAppbmRleCBi
ZGZiZjRjN2UxYzk5ODE5ODg5YTg3YTA4NGFmNTE3MWU3MWQ4NTQyLi5iM2YxNTY2YjNlMDZkZTcw
ZmJmYjg5MDU3ZjcxZTFjZDcyYWUzYTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnNMaXN0LmgKQEAgLTQ4NCw2ICs0ODQsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFi
bGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoQm9vbCwgdXNlV2ViQXNz
ZW1ibHlNdWx0aVZhbHVlcywgdHJ1ZSwgTm9ybWFsLCAiQWxsb3cgdHlwZXMgZnJvbSB0aGUgd2Fz
bSBtdWxpdC12YWx1ZXMgc3BlYy4iKSBcCiAgICAgdihCb29sLCB1c2VXZWFrUmVmcywgZmFsc2Us
IE5vcm1hbCwgIkV4cG9zZSB0aGUgV2Vha1JlZiBjb25zdHJ1Y3Rvci4iKSBcCiAgICAgdihCb29s
LCB1c2VCaWdJbnQsIGZhbHNlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxsIGVuYWJsZSBCaWdJ
bnQgc3VwcG9ydC4iKSBcCisgICAgdihCb29sLCB1c2VJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LCBm
YWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBjb25zdHJ1
Y3Rvci4iKSBcCiAgICAgdihCb29sLCB1c2VBcnJheUFsbG9jYXRpb25Qcm9maWxpbmcsIHRydWUs
IE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdXNlIG91ciBub3JtYWwgYXJyYXkgYWxsb2NhdGlv
biBwcm9maWxpbmcuIElmIGZhbHNlLCB0aGUgYWxsb2NhdGlvbiBwcm9maWxlIHdpbGwgYWx3YXlz
IGNsYWltIHRvIGJlIHVuZGVjaWRlZC4iKSBcCiAgICAgdihCb29sLCBmb3JjZVBvbHlQcm90bywg
ZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGNyZWF0ZV90aGlzIHdpbGwgYWx3YXlzIGNyZWF0ZSBh
biBvYmplY3Qgd2l0aCBhIHBvbHkgcHJvdG8gc3RydWN0dXJlLiIpIFwKICAgICB2KEJvb2wsIGZv
cmNlTWluaVZNTW9kZSwgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGl0IHdpbGwgZm9yY2UgbWlu
aSBWTSBtb2RlIG9uLiIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA1
YzBlZTI2MTM3NzZlOTYwZjQ4Nzg2YmI5YWZmNzkwNWM5MTQ3YWQzLi4xNjJlOTlkZWQzZWIwMWIy
MjcwMjVhODIyZTA2MzJiMjFjODYxZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCkBAIC03Nyw2ICs3Nyw3IEBACiAjaW5jbHVkZSAiSW50bERhdGVUaW1lRm9ybWF0LmgiCiAj
aW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgogI2luY2x1ZGUgIkludGxQbHVyYWxSdWxlcy5o
IgorI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKICNpbmNsdWRlICJJc29IZWFw
Q2VsbFR5cGUuaCIKICNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBlLmgiCiAjaW5jbHVk
ZSAiSklUQ29kZS5oIgpAQCAtMzQwLDYgKzM0MSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJ
c29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGF0ZVRpbWVGb3JtYXQ+KCkpCiAgICAgLCBpbnRs
TnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEludGxOdW1i
ZXJGb3JtYXQ+KCkpCiAgICAgLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5cGUoSXNvSGVhcENl
bGxUeXBlOjpjcmVhdGU8SW50bFBsdXJhbFJ1bGVzPigpKQorICAgICwgaW50bFJlbGF0aXZlVGlt
ZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0PigpKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAsIHdlYkFzc2VtYmx5
Q29kZUJsb2NrSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPEpTV2ViQXNzZW1i
bHlDb2RlQmxvY2s+KCkpCiAgICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlKElz
b0hlYXBDZWxsVHlwZTo6Y3JlYXRlPFdlYkFzc2VtYmx5RnVuY3Rpb24+KCkpCkBAIC0xNTExLDYg
KzE1MTMsNyBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bENv
bGxhdG9yU3BhY2UsIGludGxDb2xsYXRvckhlYXBDZWxsVAogRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGludGxEYXRlVGltZUZvcm1hdFNwYWNlLCBpbnRsRGF0ZVRpbWVG
b3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxEYXRlVGltZUZvcm1hdCkKIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTnVtYmVyRm9ybWF0U3BhY2UsIGludGxO
dW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxOdW1iZXJGb3JtYXQpCiBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFBsdXJhbFJ1bGVzU3BhY2UsIGlu
dGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFBsdXJhbFJ1bGVzKQorRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRT
cGFjZSwgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFJlbGF0
aXZlVGltZUZvcm1hdCkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNUb1dhc21JQ0NhbGxlZVNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBKU1RvV2FzbUlDQ2FsbGVlKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UsIHdlYkFzc2VtYmx5Q29k
ZUJsb2NrSGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKSAvLyBIYXNo
OjB4OWFkOTk1Y2QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDEyODYyYTQwY2Uw
ZTAxNGFmYWM1NDNjYmRiMzk3NTZiNGYxMWRkNzIuLjUyOTI5MzNjMTNkYWZhYzdlNjFhYjhjNTc4
NGFlYzUwMTZiMzBiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTI4LDYg
KzEyOCw3IEBAIGNsYXNzIEludGxDb2xsYXRvcjsKIGNsYXNzIEludGxEYXRlVGltZUZvcm1hdDsK
IGNsYXNzIEludGxOdW1iZXJGb3JtYXQ7CiBjbGFzcyBJbnRsUGx1cmFsUnVsZXM7CitjbGFzcyBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0OwogY2xhc3MgSlNBUElHbG9iYWxPYmplY3Q7CiBjbGFzcyBK
U0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU0FQSVdyYXBwZXJPYmplY3Q7CkBAIC00
MDEsNiArNDAyLDcgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5
cGU+IGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SXNvSGVhcENlbGxUeXBlPiBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsUmVsYXRpdmVUaW1lRm9y
bWF0SGVhcENlbGxUeXBlOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUZ1bmN0aW9u
SGVhcENlbGxUeXBlOwpAQCAtNTU3LDYgKzU1OSw3IEBAIHB1YmxpYzoKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEYXRlVGltZUZvcm1hdFNwYWNlKQogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bE51bWJlckZvcm1hdFNwYWNlKQog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFBsdXJhbFJ1bGVzU3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsUmVsYXRpdmVU
aW1lRm9ybWF0U3BhY2UpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNUb1dhc21JQ0NhbGxlZVNwYWNlKQogICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCAyYzAwOWI2
Y2ZhMGEwMDYwMWQyZjUzZjEyMGNiYmZkZGY0ZjJhYjI2Li5kZDFkNDljYWJiMTBmOWQ1ZTk5N2Jm
OGJlY2IwNzUzODZkN2U2YWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9s
bGFyVk0uY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgi
CiAjaW5jbHVkZSAiVk1JbnNwZWN0b3IuaCIKICNpbmNsdWRlICJXYXNtQ2FwYWJpbGl0aWVzLmgi
CisjaW5jbHVkZSA8dW5pY29kZS91dmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+
CiAjaW5jbHVkZSA8d3RmL0NQVVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgpAQCAt
Mjk3Nyw2ICsyOTc4LDEzIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uU2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhKU0dsb2JhbE9iCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JQ1VWZXJzaW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKikKK3sKKyAgICBVVmVyc2lvbkluZm8gdmVyc2lvbkluZm87CisgICAgdV9nZXRWZXJzaW9u
KHZlcnNpb25JbmZvKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZlcnNp
b25JbmZvWzBdKSk7Cit9CisKIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CkBAIC0zMTE0LDYgKzMx
MjIsNyBAQCB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICBhZGRG
dW5jdGlvbih2bSwgInJlamVjdFByb21pc2VBc0hhbmRsZWQiLCBmdW5jdGlvblJlamVjdFByb21p
c2VBc0hhbmRsZWQsIDEpOwogCiAgICAgYWRkRnVuY3Rpb24odm0sICJzZXRVc2VyUHJlZmVycmVk
TGFuZ3VhZ2VzIiwgZnVuY3Rpb25TZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzLCAxKTsKKyAgICBh
ZGRGdW5jdGlvbih2bSwgImljdVZlcnNpb24iLCBmdW5jdGlvbklDVVZlcnNpb24sIDApOwogCiAg
ICAgbV9vYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNsb3RTdGF0dXNTdHJ1
Y3R1cmUuc2V0KHZtLCB0aGlzLCBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVj
dFNsb3RTdGF0dXM6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBqc051bGwoKSkp
OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDY4MDM2ODIwZTZhYmZmYTM3OWQ5NjNkNDk5ZTVmOGM1NTFlNDkwMjAuLjcxMzU5OTQ4MGQ3Y2Fk
YjRjZGM2Mjg5M2Y0YTdjN2UxM2JmZTYyZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNC0xOSAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdCBtaXNzaW5nIGluIFdlYktpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NzcwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNz
LXRlc3RzOgorICAgICAgICBBZGQgcnVuSW50bFJlbGF0aXZlVGltZUZvcm1hdEVuYWJsZWQuCisK
IDIwMjAtMDQtMTkgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAg
ICAgICBbQ01ha2VdIENvbnNvbGlkYXRlIFRlc3ROZXRzY2FwZVBsdWdpbiBidWlsZApkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMv
cnVuLWpzYy1zdHJlc3MtdGVzdHMKaW5kZXggYjA1Nzk5M2M5N2YxMjgwOTYwY2Q4NDM0ZmYwNmQw
YTQyOTAxNDQ4MC4uMjIxYTBiYWUxMDNiYjc1MmM3NWZhZmUzMTQwYWNjZjU5MzMzNmFjMyAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cworKysgYi9Ub29scy9T
Y3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCkBAIC03MTAsNiArNzEwLDEwIEBAIGRlZiBydW5C
aWdJbnRFbmFibGVkQmFzZWxpbmUoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykKICAgICBy
dW4oImJpZy1pbnQtZW5hYmxlZC1iYXNlbGluZSIsICItLXVzZUJpZ0ludD10cnVlIiwgIi0tdXNl
REZHSklUPTAiLCAqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQogZW5kCiAKK2RlZiBydW5J
bnRsUmVsYXRpdmVUaW1lRm9ybWF0RW5hYmxlZCgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25z
KQorICAgIHJ1bigiaW50bC1yZWxhdGl2ZXRpbWVmb3JtYXQtZW5hYmxlZCIsICItLXVzZUludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQ9dHJ1ZSIgLCAqKEZUTF9PUFRJT05TICsgb3B0aW9uYWxUZXN0U3Bl
Y2lmaWNPcHRpb25zKSkKK2VuZAorCiBkZWYgcnVuRlRMTm9DSklUKCpvcHRpb25hbFRlc3RTcGVj
aWZpY09wdGlvbnMpCiAgICAgcnVuKCJtaXNjLWZ0bC1uby1jaml0IiwgKihGVExfT1BUSU9OUyAr
IE5PX0NKSVRfT1BUSU9OUyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykpCiBlbmQKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjNj
ZWI5MzBjMzQ1NDUyZjc2NWM0YzRkNmUxMzAxYzMyOGQ5ZWU2MS4uZmI4ZDNlNDkzZTJkOWFkMDFk
YjFlNTNhMzg5YzQ2NmZkY2ZjNDE2ZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0wNC0xOSAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdCBtaXNzaW5nIGluIFdlYktpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NzcwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvaW50bC1yZWxhdGl2ZXRp
bWVmb3JtYXQuanM6IEFkZGVkLgorCisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoKKyAg
ICAgICAgRW5hYmxlIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0IGZlYXR1cmUgd2l0aCBmbGFnLgor
CisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDoKKyAgICAgICAgTWFyayBrbm93
biBmYWlsdXJlcy4KKyAgICAgICAgVGVzdCBmb3IgbG9jYWxlIHZhbGlkYXRpb24gaXMgbm90IHNw
ZWNpZmljIHRvIFJlbGF0aXZlVGltZUZvcm1hdCBhbmQgc2hvdWxkIGJlIGludmVzdGlnYXRlZCBz
ZXBhcmF0ZWx5LgorICAgICAgICBUZXN0cyBmb3IgUG9saXNoIGFwcGVhciB0byBiZSB3cm9uZyBh
bmQgc2hvdWxkIGJlIGNvcnJlY3RlZCBpbiB0ZXN0MjYyLgorCiAyMDIwLTA0LTE4ICBLZWl0aCBN
aWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIG1h
cmsgdGVzdCBwYXNzaW5nLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1yZWxhdGl2
ZXRpbWVmb3JtYXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLXJlbGF0aXZldGltZWZvcm1hdC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ZGVhZjQxMTgyYjUzODI4ODE3NGQ1ZDdjMjQ4M2ZkMzAxNDllM2Y3Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1yZWxhdGl2ZXRpbWVmb3JtYXQu
anMKQEAgLTAsMCArMSwyNzMgQEAKKy8vQCBydW5JbnRsUmVsYXRpdmVUaW1lRm9ybWF0RW5hYmxl
ZAorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgJHtleHBl
Y3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKworY29uc3QgaWN1VmVyc2lvbiA9ICR2bS5p
Y3VWZXJzaW9uKCk7CitmdW5jdGlvbiBzaG91bGRCZUZvcklDVVZlcnNpb24obWluaW11bVZlcnNp
b24sIGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoaWN1VmVyc2lvbiA8IG1pbmltdW1WZXJz
aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0
dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGROb3RUaHJvdyhmdW5jKSB7CisgICAgZnVuYygp
OworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUpIHsKKyAgICBsZXQg
ZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJy
b3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5u
YW1lfSFgKTsKK30KKworc2hvdWxkQmUoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQgaW5zdGFuY2Vv
ZiBGdW5jdGlvbiwgdHJ1ZSk7CitzaG91bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5sZW5n
dGgsIDApOworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLlJl
bGF0aXZlVGltZUZvcm1hdCwgJ3Byb3RvdHlwZScpLndyaXRhYmxlLCBmYWxzZSk7CitzaG91bGRC
ZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0
LCAncHJvdG90eXBlJykuZW51bWVyYWJsZSwgZmFsc2UpOworc2hvdWxkQmUoT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCwgJ3Byb3RvdHlwZScp
LmNvbmZpZ3VyYWJsZSwgZmFsc2UpOworCitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdCgpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2
ZVRpbWVGb3JtYXQuY2FsbCh7fSksIFR5cGVFcnJvcik7CisKK3Nob3VsZFRocm93KCgpID0+IG5l
dyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnJCcpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93
KCgpID0+IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4nLCBudWxsKSwgVHlwZUVycm9y
KTsKKworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCkgaW5zdGFuY2VvZiBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdCwgdHJ1ZSk7CisKK3sKKyAgICBjbGFzcyBEZXJpdmVkUmVs
YXRpdmVUaW1lRm9ybWF0IGV4dGVuZHMgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQge30KKworICAg
IGNvbnN0IGRydGYgPSBuZXcgRGVyaXZlZFJlbGF0aXZlVGltZUZvcm1hdCgpOworICAgIHNob3Vs
ZEJlKGRydGYgaW5zdGFuY2VvZiBEZXJpdmVkUmVsYXRpdmVUaW1lRm9ybWF0LCB0cnVlKTsKKyAg
ICBzaG91bGRCZShkcnRmIGluc3RhbmNlb2YgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQsIHRydWUp
OworICAgIHNob3VsZEJlKGRydGYuZm9ybWF0LCBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0KTsKKyAgICBzaG91bGRCZShkcnRmLmZvcm1hdFRvUGFydHMsIEludGwuUmVs
YXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzKTsKKyAgICBzaG91bGRCZShP
YmplY3QuZ2V0UHJvdG90eXBlT2YoZHJ0ZiksIERlcml2ZWRSZWxhdGl2ZVRpbWVGb3JtYXQucHJv
dG90eXBlKTsKKyAgICBzaG91bGRCZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoRGVyaXZlZFJlbGF0
aXZlVGltZUZvcm1hdC5wcm90b3R5cGUpLCBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5
cGUpOworfQorCitzaG91bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2Nh
bGVzT2YubGVuZ3RoLCAxKTsKK3Nob3VsZEJlKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBv
cnRlZExvY2FsZXNPZigpIGluc3RhbmNlb2YgQXJyYXksIHRydWUpOworc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mLmNhbGwo
bnVsbCwgJ2VuJykpLCAnWyJlbiJdJyk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRsLlJl
bGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YuY2FsbCh7fSwgJ2VuJykpLCAnWyJl
biJdJyk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5z
dXBwb3J0ZWRMb2NhbGVzT2YuY2FsbCgxLCAnZW4nKSksICdbImVuIl0nKTsKK3Nob3VsZEJlKEpT
T04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZig5
KSksICdbXScpOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5SZWxhdGl2ZVRpbWVGb3Jt
YXQuc3VwcG9ydGVkTG9jYWxlc09mKCdlbicpKSwgJ1siZW4iXScpOworc2hvdWxkQmUoSlNPTi5z
dHJpbmdpZnkoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKHsgbGVu
Z3RoOiA0LCAxOiAnZW4nLCAwOiAnZXMnLCAzOiAnZGUnIH0pKSwgJ1siZXMiLCJlbiIsImRlIl0n
KTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBv
cnRlZExvY2FsZXNPZihbJ2VuJywgJ3B0JywgJ2VuJywgJ2VzJ10pKSwgJ1siZW4iLCJwdCIsImVz
Il0nKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1
cHBvcnRlZExvY2FsZXNPZignRW4tbGFUbi11cy12YXJpYW50Mi12YXJpYW50MS0xYWJjLVUta28t
dFJ1ZS1BLWFhLWFhYS14LVJFU0VSVkVEJykpLCAnWyJlbi1MYXRuLVVTLXZhcmlhbnQyLXZhcmlh
bnQxLTFhYmMtYS1hYS1hYWEtdS1rby14LXJlc2VydmVkIl0nKTsKK3Nob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZignbm8tYm9r
JykpLCAnWyJuYiJdJyk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoJ3gtc29tZS10aGluZycpKSwgJ1tdJyk7CisKK3No
b3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNP
ZihPYmplY3QuY3JlYXRlKG51bGwsIHsgbGVuZ3RoOiB7IGdldCgpIHsgdGhyb3cgbmV3IEVycm9y
KCk7IH0gfSB9KSksIEVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihPYmplY3QuY3JlYXRlKG51bGwsIHsgbGVuZ3RoOiB7
IHZhbHVlOiAxIH0sIDA6IHsgZ2V0KCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9IH0pKSwgRXJy
b3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVk
TG9jYWxlc09mKFt7IHRvU3RyaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9XSksIEVycm9y
KTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExv
Y2FsZXNPZihbNV0pLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2
ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCcnKSwgUmFuZ2VFcnJvcik7CitzaG91bGRU
aHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoJ2En
KSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1h
dC5zdXBwb3J0ZWRMb2NhbGVzT2YoJ2FiY2RlZmdoaWonKSwgUmFuZ2VFcnJvcik7CitzaG91bGRU
aHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoJyMk
JyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3Jt
YXQuc3VwcG9ydGVkTG9jYWxlc09mKCdlbi1ALWFiYycpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRo
cm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZignZW4t
dScpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9y
bWF0LnN1cHBvcnRlZExvY2FsZXNPZignZW4tdS1rbi10cnVlLXUta28tdHJ1ZScpLCBSYW5nZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRl
ZExvY2FsZXNPZignZW4teCcpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZignZW4tKicpLCBSYW5nZUVycm9y
KTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExv
Y2FsZXNPZignZW4tJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxh
dGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdlbi0tVVMnKSwgUmFuZ2VFcnJvcik7
CisKK2NvbnN0IHZhbGlkTGFuZ3VhZ2VUYWdzID0gWworICAgICdkZScsIC8vIElTTyA2MzkgbGFu
Z3VhZ2UgY29kZQorICAgICdkZS1ERScsIC8vICsgSVNPIDMxNjYtMSBjb3VudHJ5IGNvZGUKKyAg
ICAnREUtZGUnLCAvLyB0YWdzIGFyZSBjYXNlLWluc2Vuc2l0aXZlCisgICAgJ2NtbicsIC8vIElT
TyA2MzkgbGFuZ3VhZ2UgY29kZQorICAgICdjbW4tSGFucycsIC8vICsgc2NyaXB0IGNvZGUKKyAg
ICAnQ01OLWhBTlMnLCAvLyB0YWdzIGFyZSBjYXNlLWluc2Vuc2l0aXZlCisgICAgJ2Ntbi1oYW5z
LWNuJywgLy8gKyBJU08gMzE2Ni0xIGNvdW50cnkgY29kZQorICAgICdlcy00MTknLCAvLyArIFVO
IE0uNDkgcmVnaW9uIGNvZGUKKyAgICAnZXMtNDE5LXUtbnUtbGF0bi1jdS1ib2InLCAvLyArIFVu
aWNvZGUgbG9jYWxlIGV4dGVuc2lvbiBzZXF1ZW5jZQorICAgICdpLWtsaW5nb24nLCAvLyBncmFu
ZGZhdGhlcmVkIHRhZworICAgICdjbW4taGFucy1jbi10LWNhLXUtY2EteC10LXUnLCAvLyBzaW5n
bGV0b24gc3VidGFncyBjYW4gYWxzbyBiZSB1c2VkIGFzIHByaXZhdGUgdXNlIHN1YnRhZ3MKKyAg
ICAnZW5vY2hpYW4tZW5vY2hpYW4nLCAvLyBsYW5ndWFnZSBhbmQgdmFyaWFudCBzdWJ0YWdzIG1h
eSBiZSB0aGUgc2FtZQorICAgICdkZS1ncmVnb3J5LXUtY2EtZ3JlZ29yeScsIC8vIHZhcmlhbnQg
YW5kIGV4dGVuc2lvbiBzdWJ0YWdzIG1heSBiZSB0aGUgc2FtZQorICAgICdhYS1hLWZvby14LWEt
Zm9vLWJhcicsIC8vIHZhcmlhbnQgc3VidGFncyBjYW4gYWxzbyBiZSB1c2VkIGFzIHByaXZhdGUg
dXNlIHN1YnRhZ3MKKyAgICAneC1lbi1VUy0xMjM0NScsIC8vIGFueXRoaW5nIGdvZXMgaW4gcHJp
dmF0ZSB1c2UgdGFncworICAgICd4LTEyMzQ1LTEyMzQ1LWVuLVVTJywKKyAgICAneC1lbi1VUy0x
MjM0NS0xMjM0NScsCisgICAgJ3gtZW4tdS1mb28nLAorICAgICd4LWVuLXUtZm9vLXUtYmFyJwor
XTsKK2ZvciAobGV0IHZhbGlkTGFuZ3VhZ2VUYWcgb2YgdmFsaWRMYW5ndWFnZVRhZ3MpCisgICAg
c2hvdWxkTm90VGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9j
YWxlc09mKHZhbGlkTGFuZ3VhZ2VUYWcpKTsKKworc2hvdWxkQmUoT2JqZWN0LmdldFByb3RvdHlw
ZU9mKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZSksIE9iamVjdC5wcm90b3R5cGUp
OworCitzaG91bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUuY29uc3RydWN0
b3IsIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KTsKKworc2hvdWxkQmUoSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQucHJvdG90eXBlW1N5bWJvbC50b1N0cmluZ1RhZ10sICdJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdCcpOworc2hvdWxkQmUoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZSksICdbb2JqZWN0IEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0XScpOworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRs
LlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZykud3JpdGFi
bGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSW50
bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLCBTeW1ib2wudG9TdHJpbmdUYWcpLmVudW1l
cmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLCBTeW1ib2wudG9TdHJpbmdUYWcpLmNv
bmZpZ3VyYWJsZSwgdHJ1ZSk7CisKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdCgnZW4nLCB7IGxvY2FsZU1hdGNoZXI6IHsgdG9TdHJpbmcoKSB7IHRocm93IG5l
dyBFcnJvcigpOyB9IH0gfSksIEVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLlJl
bGF0aXZlVGltZUZvcm1hdCgnZW4nLCB7IGxvY2FsZU1hdGNoZXI6J2JhZCcgfSksIFJhbmdlRXJy
b3IpOworc2hvdWxkTm90VGhyb3coKCkgPT4gbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdl
bicsIHsgbG9jYWxlTWF0Y2hlcjonbG9va3VwJyB9KSk7CitzaG91bGROb3RUaHJvdygoKSA9PiBu
ZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBsb2NhbGVNYXRjaGVyOidiZXN0IGZp
dCcgfSkpOworCitjb25zdCBkZWZhdWx0UlRGID0gbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0
KCdlbicpOworCitzaG91bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUucmVz
b2x2ZWRPcHRpb25zLmxlbmd0aCwgMCk7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zLmNhbGwoNSksIFR5cGVFcnJvcik7
CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUucmVz
b2x2ZWRPcHRpb25zLmNhbGwoe30pLCBUeXBlRXJyb3IpOworc2hvdWxkQmUoZGVmYXVsdFJURi5y
ZXNvbHZlZE9wdGlvbnMoKSBpbnN0YW5jZW9mIE9iamVjdCwgdHJ1ZSk7CitzaG91bGRCZShkZWZh
dWx0UlRGLnJlc29sdmVkT3B0aW9ucygpICE9PSBkZWZhdWx0UlRGLnJlc29sdmVkT3B0aW9ucygp
LCB0cnVlKTsKK3Nob3VsZEJlKGRlZmF1bHRSVEYucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLCAn
ZW4nKTsKK3Nob3VsZEJlKGRlZmF1bHRSVEYucmVzb2x2ZWRPcHRpb25zKCkuc3R5bGUsICdsb25n
Jyk7CitzaG91bGRCZShkZWZhdWx0UlRGLnJlc29sdmVkT3B0aW9ucygpLm51bWVyaWMsICdhbHdh
eXMnKTsKK3Nob3VsZEJlKGRlZmF1bHRSVEYucmVzb2x2ZWRPcHRpb25zKCkubnVtYmVyaW5nU3lz
dGVtLCAnbGF0bicpOworCitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2Vu
LXUtbnUtaGFuaWRlYycpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZSwgJ2VuLXUtbnUtaGFuaWRl
YycpOworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbi11LW51LWhhbmlk
ZWMnLCB7IG51bWJlcmluZ1N5c3RlbTogJ2d1anInIH0pLnJlc29sdmVkT3B0aW9ucygpLmxvY2Fs
ZSwgJ2VuJyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBu
dW1iZXJpbmdTeXN0ZW06ICdoYW5pZGVjJyB9KS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUsICdl
bicpOworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbi11LWNhLWNoaW5l
c2UnKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUsICdlbicpOworCitzaG91bGRUaHJvdygoKSA9
PiBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBzdHlsZTogeyB0b1N0cmluZygp
IHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSB9KSwgRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4g
bmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgc3R5bGU6ICdiYWQnIH0pLCBSYW5n
ZUVycm9yKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4nLCB7IHN0
eWxlOiAnbG9uZycgfSkucmVzb2x2ZWRPcHRpb25zKCkuc3R5bGUsICdsb25nJyk7CitzaG91bGRC
ZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBzdHlsZTogJ3Nob3J0JyB9KS5y
ZXNvbHZlZE9wdGlvbnMoKS5zdHlsZSwgJ3Nob3J0Jyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxh
dGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBzdHlsZTogJ25hcnJvdycgfSkucmVzb2x2ZWRPcHRpb25z
KCkuc3R5bGUsICduYXJyb3cnKTsKKworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuUmVsYXRp
dmVUaW1lRm9ybWF0KCdlbicsIHsgbnVtZXJpYzogeyB0b1N0cmluZygpIHsgdGhyb3cgbmV3IEVy
cm9yKCk7IH0gfSB9KSwgRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwuUmVsYXRp
dmVUaW1lRm9ybWF0KCdlbicsIHsgbnVtZXJpYzogJ2JhZCcgfSksIFJhbmdlRXJyb3IpOworc2hv
dWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgbnVtZXJpYzogJ2Fsd2F5
cycgfSkucmVzb2x2ZWRPcHRpb25zKCkubnVtZXJpYywgJ2Fsd2F5cycpOworc2hvdWxkQmUobmV3
IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgbnVtZXJpYzogJ2F1dG8nIH0pLnJlc29s
dmVkT3B0aW9ucygpLm51bWVyaWMsICdhdXRvJyk7CisKK2NvbnN0IG51bWJlcmluZ1N5c3RlbXMg
PSBbCisgICAgJ2FyYWInLCAnYXJhYmV4dCcsICdiYWxpJywgJ2JlbmcnLCAnZGV2YScsICdmdWxs
d2lkZScsICdndWpyJywgJ2d1cnUnLAorICAgICdoYW5pZGVjJywgJ2tobXInLCAna25kYScsICds
YW9vJywgJ2xhdG4nLCAnbGltYicsICdtbHltJywgJ21vbmcnLCAnbXltcicsCisgICAgJ29yeWEn
LCAndGFtbGRlYycsICd0ZWx1JywgJ3RoYWknLCAndGlidCcKK10KK2ZvciAobGV0IG51bWJlcmlu
Z1N5c3RlbSBvZiBudW1iZXJpbmdTeXN0ZW1zKSB7CisgICAgc2hvdWxkQmUobmV3IEludGwuUmVs
YXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgbnVtYmVyaW5nU3lzdGVtIH0pLnJlc29sdmVkT3B0aW9u
cygpLm51bWJlcmluZ1N5c3RlbSwgbnVtYmVyaW5nU3lzdGVtKTsKKyAgICBzaG91bGRCZShuZXcg
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoYGVuLXUtbnUtJHtudW1iZXJpbmdTeXN0ZW19YCkucmVz
b2x2ZWRPcHRpb25zKCkubnVtYmVyaW5nU3lzdGVtLCBudW1iZXJpbmdTeXN0ZW0pOworfQorCitz
aG91bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0Lmxlbmd0aCwg
Mik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUu
Zm9ybWF0LmNhbGwoe30sIDMsICdkYXlzJyksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9
PiBkZWZhdWx0UlRGLmZvcm1hdChTeW1ib2woKSwgJ2RheXMnKSwgVHlwZUVycm9yKTsKK3Nob3Vs
ZFRocm93KCgpID0+IGRlZmF1bHRSVEYuZm9ybWF0KDMsIFN5bWJvbCgpKSwgVHlwZUVycm9yKTsK
K3Nob3VsZFRocm93KCgpID0+IGRlZmF1bHRSVEYuZm9ybWF0KEluZmluaXR5LCAnZGF5cycpLCBS
YW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IGRlZmF1bHRSVEYuZm9ybWF0KDMsICdjZW50
dXJpZXMnKSwgUmFuZ2VFcnJvcik7CisKK2NvbnN0IHVuaXRzID0gWydzZWNvbmQnLCAnbWludXRl
JywgJ2hvdXInLCAnZGF5JywgJ3dlZWsnLCAnbW9udGgnLCAneWVhciddOworaWYgKGljdVZlcnNp
b24gPj0gNjMpCisgICAgdW5pdHMucHVzaCgncXVhcnRlcicpOworCitmb3IgKGxldCB1bml0IG9m
IHVuaXRzKSB7CisgICAgc2hvdWxkQmUoZGVmYXVsdFJURi5mb3JtYXQoMTAsIHVuaXQpLCBkZWZh
dWx0UlRGLmZvcm1hdCgxMCwgYCR7dW5pdH1zYCkpOworCisgICAgc2hvdWxkQmUoZGVmYXVsdFJU
Ri5mb3JtYXQoMTAwMDAuNSwgdW5pdCksIGBpbiAxMCwwMDAuNSAke3VuaXR9c2ApOworICAgIHNo
b3VsZEJlKGRlZmF1bHRSVEYuZm9ybWF0KDEwLCB1bml0KSwgYGluIDEwICR7dW5pdH1zYCk7Cisg
ICAgc2hvdWxkQmUoZGVmYXVsdFJURi5mb3JtYXQoMCwgdW5pdCksIGBpbiAwICR7dW5pdH1zYCk7
CisgICAgc2hvdWxkQmUoZGVmYXVsdFJURi5mb3JtYXQoLTEwLCB1bml0KSwgYDEwICR7dW5pdH1z
IGFnb2ApOworICAgIHNob3VsZEJlKGRlZmF1bHRSVEYuZm9ybWF0KC0xMDAwMC41LCB1bml0KSwg
YDEwLDAwMC41ICR7dW5pdH1zIGFnb2ApOworCisgICAgc2hvdWxkQmVGb3JJQ1VWZXJzaW9uKDY0
LCBkZWZhdWx0UlRGLmZvcm1hdCgxLCB1bml0KSwgYGluIDEgJHt1bml0fWApOworICAgIHNob3Vs
ZEJlRm9ySUNVVmVyc2lvbig2MywgZGVmYXVsdFJURi5mb3JtYXQoLTAsIHVuaXQpLCBgMCAke3Vu
aXR9cyBhZ29gKTsKKyAgICBzaG91bGRCZUZvcklDVVZlcnNpb24oNjQsIGRlZmF1bHRSVEYuZm9y
bWF0KC0xLCB1bml0KSwgYDEgJHt1bml0fSBhZ29gKTsKK30KKworc2hvdWxkQmUobmV3IEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgc3R5bGU6ICdzaG9ydCcgfSkuZm9ybWF0KDEwLCAn
c2Vjb25kJyksICdpbiAxMCBzZWMuJyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVG
b3JtYXQoJ3J1JywgeyBzdHlsZTogJ3Nob3J0JyB9KS5mb3JtYXQoMTAsICdzZWNvbmQnKSwgJ9GH
0LXRgNC10LcgMTDCoNGB0LXQui4nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZv
cm1hdCgnZW4nLCB7IHN0eWxlOiAnbmFycm93JyB9KS5mb3JtYXQoMTAsICdzZWNvbmQnKSwgJ2lu
IDEwIHNlYy4nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgncnUnLCB7
IHN0eWxlOiAnbmFycm93JyB9KS5mb3JtYXQoMTAsICdzZWNvbmQnKSwgJysxMCDRgScpOworCitz
aG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBudW1lcmljOiAnYXV0
bycgfSkuZm9ybWF0KDAsICdzZWNvbmQnKSwgJ25vdycpOworc2hvdWxkQmUobmV3IEludGwuUmVs
YXRpdmVUaW1lRm9ybWF0KCdqYScsIHsgbnVtZXJpYzogJ2F1dG8nIH0pLmZvcm1hdCgwLCAnc2Vj
b25kJyksICfku4onKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4n
LCB7IG51bWVyaWM6ICdhdXRvJyB9KS5mb3JtYXQoMCwgJ2RheScpLCAndG9kYXknKTsKK3Nob3Vs
ZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnamEnLCB7IG51bWVyaWM6ICdhdXRvJyB9
KS5mb3JtYXQoMCwgJ2RheScpLCAn5LuK5pelJyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2
ZVRpbWVGb3JtYXQoJ2VuJywgeyBudW1lcmljOiAnYXV0bycgfSkuZm9ybWF0KDAsICd5ZWFyJyks
ICd0aGlzIHllYXInKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnamEn
LCB7IG51bWVyaWM6ICdhdXRvJyB9KS5mb3JtYXQoMCwgJ3llYXInKSwgJ+S7iuW5tCcpOworCitz
aG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBudW1iZXJpbmdTeXN0
ZW06ICd0aGFpJyB9KS5mb3JtYXQoLTEwLCAnaG91cicpLCAn4LmR4LmQIGhvdXJzIGFnbycpOwor
c2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbi11LW51LXRoYWknKS5mb3Jt
YXQoLTEwLCAnaG91cicpLCAn4LmR4LmQIGhvdXJzIGFnbycpOworc2hvdWxkQmUobmV3IEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0KCdrbycsIHsgbnVtYmVyaW5nU3lzdGVtOiAnaGFuaWRlYycgfSku
Zm9ybWF0KC0xMCwgJ2hvdXInKSwgJ+S4gOOAh+yLnOqwhCDsoIQnKTsKK3Nob3VsZEJlKG5ldyBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdCgna28tdS1udS1oYW5pZGVjJykuZm9ybWF0KC0xMCwgJ2hv
dXInKSwgJ+S4gOOAh+yLnOqwhCDsoIQnKTsKKworc2hvdWxkQmUoSW50bC5SZWxhdGl2ZVRpbWVG
b3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMubGVuZ3RoLCAyKTsKK3Nob3VsZFRocm93KCgp
ID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzLmNhbGwo
e30sIDMsICdkYXlzJyksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBkZWZhdWx0UlRG
LmZvcm1hdFRvUGFydHMoU3ltYm9sKCksICdkYXlzJyksIFR5cGVFcnJvcik7CitzaG91bGRUaHJv
dygoKSA9PiBkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoMywgU3ltYm9sKCkpLCBUeXBlRXJyb3Ip
Oworc2hvdWxkVGhyb3coKCkgPT4gZGVmYXVsdFJURi5mb3JtYXRUb1BhcnRzKEluZmluaXR5LCAn
ZGF5cycpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IGRlZmF1bHRSVEYuZm9ybWF0
VG9QYXJ0cygzLCAnY2VudHVyaWVzJyksIFJhbmdlRXJyb3IpOworCitmb3IgKGxldCB1bml0IG9m
IHVuaXRzKSB7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZGVmYXVsdFJURi5mb3JtYXRU
b1BhcnRzKDEwLCB1bml0KSksIEpTT04uc3RyaW5naWZ5KGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0
cygxMCwgYCR7dW5pdH1zYCkpKTsKKworICAgIGNvbnN0IGNvbmNhdGVuYXRlVmFsdWVzID0gKHBh
cnRzKSA9PiBwYXJ0cy5tYXAocGFydCA9PiBwYXJ0LnZhbHVlKS5qb2luKCcnKTsKKworICAgIHNo
b3VsZEJlKGNvbmNhdGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygxMDAwMC41
LCB1bml0KSksIGBpbiAxMCwwMDAuNSAke3VuaXR9c2ApOworICAgIHNob3VsZEJlKGNvbmNhdGVu
YXRlVmFsdWVzKGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygxMCwgdW5pdCkpLCBgaW4gMTAgJHt1
bml0fXNgKTsKKyAgICBzaG91bGRCZShjb25jYXRlbmF0ZVZhbHVlcyhkZWZhdWx0UlRGLmZvcm1h
dFRvUGFydHMoMCwgdW5pdCkpLCBgaW4gMCAke3VuaXR9c2ApOworICAgIHNob3VsZEJlKGNvbmNh
dGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygtMTAsIHVuaXQpKSwgYDEwICR7
dW5pdH1zIGFnb2ApOworICAgIHNob3VsZEJlKGNvbmNhdGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYu
Zm9ybWF0VG9QYXJ0cygtMTAwMDAuNSwgdW5pdCkpLCBgMTAsMDAwLjUgJHt1bml0fXMgYWdvYCk7
CisKKyAgICBzaG91bGRCZUZvcklDVVZlcnNpb24oNjQsIGNvbmNhdGVuYXRlVmFsdWVzKGRlZmF1
bHRSVEYuZm9ybWF0VG9QYXJ0cygxLCB1bml0KSksIGBpbiAxICR7dW5pdH1gKTsKKyAgICBzaG91
bGRCZUZvcklDVVZlcnNpb24oNjMsIGNvbmNhdGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYuZm9ybWF0
VG9QYXJ0cygtMCwgdW5pdCkpLCBgMCAke3VuaXR9cyBhZ29gKTsKKyAgICBzaG91bGRCZUZvcklD
VVZlcnNpb24oNjQsIGNvbmNhdGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygt
MSwgdW5pdCkpLCBgMSAke3VuaXR9IGFnb2ApOworfQorCitzaG91bGRCZSgKKyAgICBKU09OLnN0
cmluZ2lmeShkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoMTAwMDAuNSwgJ2RheScpKSwKKyAgICBK
U09OLnN0cmluZ2lmeShbCisgICAgICAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJ2luICcg
fSwKKyAgICAgICAgeyB0eXBlOiAnaW50ZWdlcicsIHZhbHVlOiAnMTAnLCB1bml0OiAnZGF5JyB9
LAorICAgICAgICB7IHR5cGU6ICdncm91cCcsIHZhbHVlOiAnLCcsIHVuaXQ6ICdkYXknIH0sCisg
ICAgICAgIHsgdHlwZTogJ2ludGVnZXInLCB2YWx1ZTogJzAwMCcsIHVuaXQ6ICdkYXknIH0sCisg
ICAgICAgIHsgdHlwZTogJ2RlY2ltYWwnLCB2YWx1ZTogJy4nLCB1bml0OiAnZGF5JyB9LAorICAg
ICAgICB7IHR5cGU6ICdmcmFjdGlvbicsIHZhbHVlOiAnNScsIHVuaXQ6ICdkYXknIH0sCisgICAg
ICAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJyBkYXlzJyB9CisgICAgXSkKKyk7CisKK3No
b3VsZEJlKAorICAgIEpTT04uc3RyaW5naWZ5KG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgn
c3cnKS5mb3JtYXRUb1BhcnRzKDEwLCAneWVhcicpKSwKKyAgICBKU09OLnN0cmluZ2lmeShbCisg
ICAgICAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJ2JhYWRhIHlhIG1pYWthICcgfSwKKyAg
ICAgICAgeyB0eXBlOiAnaW50ZWdlcicsIHZhbHVlOiAnMTAnLCB1bml0OiAneWVhcicgfSwKKyAg
ICBdKQorKTsKKworc2hvdWxkQmUoCisgICAgSlNPTi5zdHJpbmdpZnkobmV3IEludGwuUmVsYXRp
dmVUaW1lRm9ybWF0KCdydScsIHsgc3R5bGU6ICduYXJyb3cnIH0pLmZvcm1hdFRvUGFydHMoMTAs
ICdzZWNvbmQnKSksCisgICAgSlNPTi5zdHJpbmdpZnkoWworICAgICAgICB7IHR5cGU6ICdsaXRl
cmFsJywgdmFsdWU6ICcrJyB9LAorICAgICAgICB7IHR5cGU6ICdpbnRlZ2VyJywgdmFsdWU6ICcx
MCcsIHVuaXQ6ICdzZWNvbmQnIH0sCisgICAgICAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTog
JyDRgScgfQorICAgIF0pCispOworCitzaG91bGRCZSgKKyAgICBKU09OLnN0cmluZ2lmeShuZXcg
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2phJywgeyBudW1lcmljOiAnYXV0bycgfSkuZm9ybWF0
VG9QYXJ0cygwLCAnd2VlaycpKSwKKyAgICBKU09OLnN0cmluZ2lmeShbCisgICAgICAgIHsgdHlw
ZTogJ2xpdGVyYWwnLCB2YWx1ZTogJ+S7iumAsScgfQorICAgIF0pCispOworCitzaG91bGRCZSgK
KyAgICBKU09OLnN0cmluZ2lmeShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2tvJywgeyBu
dW1iZXJpbmdTeXN0ZW06ICdoYW5pZGVjJyB9KS5mb3JtYXRUb1BhcnRzKC0xMCwgJ2hvdXInKSks
CisgICAgSlNPTi5zdHJpbmdpZnkoWworICAgICAgICB7IHR5cGU6ICdpbnRlZ2VyJywgdmFsdWU6
ICfkuIDjgIcnLCB1bml0OiAnaG91cicgfSwKKyAgICAgICAgeyB0eXBlOiAnbGl0ZXJhbCcsIHZh
bHVlOiAn7Iuc6rCEIOyghCcgfQorICAgIF0pCispOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IGEwMzY2
Y2VmYjcyYzU5YTc0MzZhOWMyZDU0OGNmOGZlYzU1NGQ5N2QuLjhjNTUzMjQ2ODU1Y2Y0ZTVhOThi
NTY0ZWQ5ZDIxMWY3MjFiNDYxYTcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcu
eWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTIsNiArMiw3IEBACiAt
LS0KIGZsYWdzOgogICBCaWdJbnQ6IHVzZUJpZ0ludAorICBJbnRsLlJlbGF0aXZlVGltZUZvcm1h
dDogdXNlSW50bFJlbGF0aXZlVGltZUZvcm1hdAogICBXZWFrUmVmOiB1c2VXZWFrUmVmcwogICBj
bGFzcy1maWVsZHMtcHVibGljOiB1c2VQdWJsaWNDbGFzc0ZpZWxkcwogICBsb2dpY2FsLWFzc2ln
bm1lbnQtb3BlcmF0b3JzOiB1c2VMb2dpY2FsQXNzaWdubWVudE9wZXJhdG9ycwpAQCAtMzAsNyAr
MzEsNiBAQCBza2lwOgogICAgIC0gSW50bC5MaXN0Rm9ybWF0CiAgICAgLSBJbnRsLkxvY2FsZQog
ICAgIC0gSW50bC5OdW1iZXJGb3JtYXQtdW5pZmllZAotICAgIC0gSW50bC5SZWxhdGl2ZVRpbWVG
b3JtYXQKICAgICAtIEludGwuU2VnbWVudGVyCiAgIHBhdGhzOgogICAgIC0gdGVzdC9idWlsdC1p
bnMvRGF0YVZpZXcvcHJvdG90eXBlL2dldEJpZ0ludDY0CkBAIC0xNTMsMyArMTUzLDcgQEAgc2tp
cDoKICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3ODMK
ICAgICAtIHRlc3QvaW50bDQwMi9EYXRlVGltZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3JlbGF0
ZWQteWVhci16aC5qcwogICAgIC0gdGVzdC9pbnRsNDAyL0RhdGVUaW1lRm9ybWF0L3Byb3RvdHlw
ZS9mb3JtYXRUb1BhcnRzL3JlbGF0ZWQteWVhci16aC5qcworCisgICAgIyByZXF1aXJlcyBJQ1Ug
NjUgKGh0dHBzOi8vdW5pY29kZS1vcmcuYXRsYXNzaWFuLm5ldC9icm93c2UvSUNVLTIwNjU0KQor
ICAgIC0gdGVzdC9pbnRsNDAyL1JlbGF0aXZlVGltZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L2Vu
LXVzLW51bWVyaWMtYXV0by5qcworICAgIC0gdGVzdC9pbnRsNDAyL1JlbGF0aXZlVGltZUZvcm1h
dC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9lbi11cy1udW1lcmljLWF1dG8uanMKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9l
eHBlY3RhdGlvbnMueWFtbAppbmRleCAyNWM2NmYwZTUwZWJkZTQ2YmEyOTcxZDk2MDVkN2JkYmE4
NjJjNDVkLi44OTg4ZTM3ZmQ0MGQyOTg0MTZmOTU5NTU4MzFlNmJjMTFmMWUyZjBmIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0
MjYyL2V4cGVjdGF0aW9ucy55YW1sCkBAIC0xOTM1LDEyICsxOTM1LDMzIEBAIHRlc3QvaW50bDQw
Mi9OdW1iZXJGb3JtYXQvcHJvdG8tZnJvbS1jdG9yLXJlYWxtLmpzOgogdGVzdC9pbnRsNDAyL1Bs
dXJhbFJ1bGVzL3Byb3RvLWZyb20tY3Rvci1yZWFsbS5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJF
cnJvcjogbmV3VGFyZ2V0LnByb3RvdHlwZSBpcyB1bmRlZmluZWQgRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrW29iamVjdCBPYmplY3RdwrssIMKrW29iamVjdCBPYmplY3RdwrspIHRvIGJlIHRydWUnCiAg
IHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBuZXdUYXJnZXQucHJvdG90eXBlIGlzIHVuZGVm
aW5lZCBFeHBlY3RlZCBTYW1lVmFsdWUowqtbb2JqZWN0IE9iamVjdF3Cuywgwqtbb2JqZWN0IE9i
amVjdF3CuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvY29u
c3RydWN0b3IvY29uc3RydWN0b3IvbG9jYWxlcy12YWxpZC5qczoKKyAgZGVmYXVsdDogJ1Rlc3Qy
NjJFcnJvcjogR3JhbmRmYXRoZXJlZCBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3du
IGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCisgIHN0cmljdCBtb2RlOiAnVGVz
dDI2MkVycm9yOiBHcmFuZGZhdGhlcmVkIEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJv
d24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKK3Rlc3QvaW50bDQwMi9SZWxh
dGl2ZVRpbWVGb3JtYXQvY29uc3RydWN0b3IvY29uc3RydWN0b3IvcHJvdG8tZnJvbS1jdG9yLXJl
YWxtLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBuZXdUYXJnZXQucHJvdG90eXBlIGlz
IHVuZGVmaW5lZCBFeHBlY3RlZCBTYW1lVmFsdWUowqtbb2JqZWN0IEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0XcK7LCDCq1tvYmplY3QgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXRdwrspIHRvIGJlIHRy
dWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBuZXdUYXJnZXQucHJvdG90eXBlIGlz
IHVuZGVmaW5lZCBFeHBlY3RlZCBTYW1lVmFsdWUowqtbb2JqZWN0IEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0XcK7LCDCq1tvYmplY3QgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXRdwrspIHRvIGJlIHRy
dWUnCit0ZXN0L2ludGw0MDIvUmVsYXRpdmVUaW1lRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXQvcGwt
cGwtc3R5bGUtbG9uZy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKremEgMTAwMCBzZWt1bmTCuywgwqt6YSAxwqAwMDAgc2VrdW5kwrspIHRvIGJlIHRy
dWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt6
YSAxMDAwIHNla3VuZMK7LCDCq3phIDHCoDAwMCBzZWt1bmTCuykgdG8gYmUgdHJ1ZScKK3Rlc3Qv
aW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9wbC1wbC1zdHlsZS1u
YXJyb3cuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjC
q3phIDEwMDAgc8K7LCDCq3phIDHCoDAwMCBzwrspIHRvIGJlIHRydWUnCisgIHN0cmljdCBtb2Rl
OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt6YSAxMDAwIHPCuywgwqt6YSAx
wqAwMDAgc8K7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL1JlbGF0aXZlVGltZUZvcm1hdC9w
cm90b3R5cGUvZm9ybWF0L3BsLXBsLXN0eWxlLXNob3J0LmpzOgorICBkZWZhdWx0OiAnVGVzdDI2
MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt6YSAxMDAwIHNlay7Cuywgwqt6YSAxwqAwMDAg
c2VrLsK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0
ZWQgU2FtZVZhbHVlKMKremEgMTAwMCBzZWsuwrssIMKremEgMcKgMDAwIHNlay7CuykgdG8gYmUg
dHJ1ZScKK3Rlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdFRv
UGFydHMvcGwtcGwtc3R5bGUtbG9uZy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogZm9y
bWF0VG9QYXJ0cygxMDAwLCBzZWNvbmQpOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrM8K7
LCDCqzXCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IGZvcm1h
dFRvUGFydHMoMTAwMCwgc2Vjb25kKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzPCuywg
wqs1wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvUmVsYXRpdmVUaW1lRm9ybWF0L3Byb3Rv
dHlwZS9mb3JtYXRUb1BhcnRzL3BsLXBsLXN0eWxlLW5hcnJvdy5qczoKKyAgZGVmYXVsdDogJ1Rl
c3QyNjJFcnJvcjogZm9ybWF0VG9QYXJ0cygxMDAwLCBzZWNvbmQpOiBsZW5ndGggRXhwZWN0ZWQg
U2FtZVZhbHVlKMKrM8K7LCDCqzXCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IGZvcm1hdFRvUGFydHMoMTAwMCwgc2Vjb25kKTogbGVuZ3RoIEV4cGVjdGVkIFNh
bWVWYWx1ZSjCqzPCuywgwqs1wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvUmVsYXRpdmVU
aW1lRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3BsLXBsLXN0eWxlLXNob3J0LmpzOgor
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBmb3JtYXRUb1BhcnRzKDEwMDAsIHNlY29uZCk6IGxl
bmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqszwrssIMKrNcK7KSB0byBiZSB0cnVlJworICBzdHJp
Y3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogZm9ybWF0VG9QYXJ0cygxMDAwLCBzZWNvbmQpOiBsZW5n
dGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrM8K7LCDCqzXCuykgdG8gYmUgdHJ1ZScKIHRlc3QvaW50
bDQwMi9sYW5ndWFnZS10YWdzLWludmFsaWQuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6
IFRlc3QgZGF0YSAiZGUtZ3JlZ29yeS1ncmVnb3J5IiBpcyBhIGNhbm9uaWNhbGl6ZWQgYW5kIHN0
cnVjdHVyYWxseSB2YWxpZCBsYW5ndWFnZSB0YWcuJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJF
cnJvcjogVGVzdCBkYXRhICJkZS1ncmVnb3J5LWdyZWdvcnkiIGlzIGEgY2Fub25pY2FsaXplZCBh
bmQgc3RydWN0dXJhbGx5IHZhbGlkIGxhbmd1YWdlIHRhZy4nCi10ZXN0L2ludGw0MDIvc3VwcG9y
dGVkTG9jYWxlc09mLXJldHVybmVkLWFycmF5LWVsZW1lbnRzLWFyZS1ub3QtZnJvemVuLmpzOgot
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBQcm9wZXJ0eSAwIG9mIG9iamVjdCByZXR1cm5lZCBi
eSBTdXBwb3J0ZWRMb2NhbGVzIGlzIG5vdCB3cml0YWJsZS4gRXhwZWN0ZWQgU2FtZVZhbHVlKMKr
ZmFsc2XCuywgwqt0cnVlwrspIHRvIGJlIHRydWUgKFRlc3Rpbmcgd2l0aCBDb2xsYXRvci4pJwot
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogUHJvcGVydHkgMCBvZiBvYmplY3QgcmV0dXJu
ZWQgYnkgU3VwcG9ydGVkTG9jYWxlcyBpcyBub3Qgd3JpdGFibGUuIEV4cGVjdGVkIFNhbWVWYWx1
ZSjCq2ZhbHNlwrssIMKrdHJ1ZcK7KSB0byBiZSB0cnVlIChUZXN0aW5nIHdpdGggQ29sbGF0b3Iu
KScKIHRlc3QvbGFuZ3VhZ2UvYXJndW1lbnRzLW9iamVjdC9tYXBwZWQvbm9uY29uZmlndXJhYmxl
LW5vbmVudW1lcmFibGUtbm9ud3JpdGFibGUtZGVzY3JpcHRvcnMtc2V0LWJ5LWFyZ3VtZW50cy5q
czoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgb2JqWzBdIHRvIGhhdmUgZW51
bWVyYWJsZTpmYWxzZS4nCiB0ZXN0L2xhbmd1YWdlL2FyZ3VtZW50cy1vYmplY3QvbWFwcGVkL25v
bmNvbmZpZ3VyYWJsZS1ub25lbnVtZXJhYmxlLW5vbndyaXRhYmxlLWRlc2NyaXB0b3JzLXNldC1i
eS1wYXJhbS5qczoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396937</attachid>
            <date>2020-04-19 20:18:44 -0700</date>
            <delta_ts>2020-04-19 22:15:40 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-209770-20200419201843.patch</filename>
            <type>text/plain</type>
            <size>103416</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
Mzg0MzBhYWU4NDY2MzAwZDIzNTk4N2MwOThjMDNkYzg2NDk1NWUyLi5kNzY4MmZjZDM2YjAyZDE5
N2Q0NWJkNTczNzNjY2JhZmQ5OTcyNDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NCBAQAorMjAyMC0wNC0xOSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgW0VDTUEtNDAyXSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBtaXNz
aW5nIGluIFdlYktpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA5NzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSByZWNlbnQgRUNNQS00MDIgZmVhdHVyZSBJbnRs
LlJlbGF0aXZlVGltZUZvcm1hdC4KKworICAgICAgICBSZWxhdGl2ZVRpbWVGb3JtYXQgaGFzIGZv
cm1hdCAvIGZvcm1hdFRvUGFydHMgZnVuY3Rpb25zIGxpa2UgTnVtYmVyRm9ybWF0IC8gRGF0ZVRp
bWVGb3JtYXQKKyAgICAgICAgYW5kIGlzIHVzZWQgdG8gdHVybiBhIG51bWJlciBhbmQgdW5pdCBp
bnRvIGEgZm9ybWF0dGVkIHJlbGF0aXZlIHRpbWUgc3RyaW5nLCBlLmcuOgorCisgICAgICAgICAg
bmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicpLmZvcm1hdCgxMCwgJ2RheScpCisgICAg
ICAgICAgPiAnaW4gMTAgZGF5cycKKworICAgICAgICAgIG5ldyBJbnRsLlJlbGF0aXZlVGltZUZv
cm1hdCgnZW4nLCB7IG51bWVyaWM6ICdhdXRvJyB9KS5mb3JtYXQoMCwgJ2RheScpCisgICAgICAg
ICAgPiAndG9kYXknCisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgUmVsYXRpdmVUaW1lRm9y
bWF0I2Zvcm1hdFRvUGFydHMgbWFrZXMgZGlyZWN0IHVzZSBvZiBOdW1iZXJGb3JtYXQjZm9ybWF0
VG9QYXJ0cywKKyAgICAgICAgYXMgdGhlIHJlbGF0aXZlIHRpbWUgc3RyaW5nIGNvbnNpc3RzIG9m
IGF0IG1vc3Qgb25lIGZvcm1hdHRlZCBudW1iZXIgd2l0aCBvcHRpb25hbCBsaXRlcmFsIHRleHQg
b24gZWl0aGVyIHNpZGUuCisKKyAgICAgICAgVGhpcyBmZWF0dXJlIGlzIHJ1bnRpbWUtZ3VhcmRl
ZCBieSB0aGUgYHVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXRgIG9wdGlvbi4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRp
bWVGb3JtYXQuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9y
bWF0Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaDogQWRkZWQuCisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpp
bml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnJlbGF0aXZlVGltZUZvcm1hdFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9P
cHRpb25zTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpW
TTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgQWRkIGZlYXR1cmUgYW5k
IHJ1bnRpbWUgb3B0aW9uLgorCisgICAgICAgICogcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMpOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SW50
bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMpOgorICAgICAgICAoSlNDOjpJbnRs
UGx1cmFsUnVsZXM6OnJlc29sdmVkT3B0aW9ucyk6CisgICAgICAgIE1ha2UgInR5cGUiIGEgcHJv
cGVydHkgbmFtZS4KKworICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6Cisg
ICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQpOgor
ICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMpOgorICAgICAg
ICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKToKKyAgICAgICAgKiBydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuaDoKKyAgICAgICAgRmFjdG9yIG91dCBmb3JtYXRUb1BhcnRz
SW50ZXJuYWwgc28gdGhhdCBSZWxhdGl2ZVRpbWVGb3JtYXQgY2FuIHVzZSBpdCB3aXRoIGl0cyBv
d24gVU51bWJlckZvcm1hdC4KKyAgICAgICAgKFRoaXMgbG9naWMgaXMgdG9vIGNvbXBsaWNhdGVk
IHRvIGR1cGxpY2F0ZTsgaXQncyBiZWNhdXNlIElDVSB3b24ndCBzcGxpdCwgZS5nLiwgIjEwLDAw
MCIgaW50byBwYXJ0cyBmb3IgdXMuKQorCisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0LmNw
cDoKKyAgICAgICAgKEpTQzo6SW50bE9iamVjdDo6SW50bE9iamVjdCk6CisgICAgICAgIChKU0M6
OkludGxPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6aW50bEF2YWlsYWJsZUxvY2FsZXMpOgorICAgICAgICAo
SlNDOjppbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgKEpTQzo6aXNVbmlj
b2RlTG9jYWxlSWRlbnRpZmllclR5cGUpOgorICAgICAgICAoSlNDOjpzdXBwb3J0ZWRMb2NhbGVz
KToKKyAgICAgICAgKEpTQzo6aW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcyk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OmludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6
aW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcyk6CisgICAgICAgIChKU0M6OmludGxO
dW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgKEpTQzo6aW50bFBsdXJhbFJ1
bGVzQXZhaWxhYmxlTG9jYWxlcyk6CisgICAgICAgIChKU0M6OmludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRBdmFpbGFibGVMb2NhbGVzKToKKyAgICAgICAgUGVyZm9ybSB0aHJlZSBjb3JyZWN0aW9ucyBm
b3IgSW50bCBjbGFzc2VzOgorICAgICAgICAgIDEuIENvbGxhdG9yIHNob3VsZCBiZSB0aGUgb25s
eSBjbGFzcyB3aXRoIHVuaXF1ZSAiYXZhaWxhYmxlIGxvY2FsZXMiLgorICAgICAgICAgICAgIFt1
bnVtfHVkYXRdX2dldEF2YWlsYWJsZSBleGlzdCBidXQgdGhleSd2ZSBkZWZlcnJlZCB0byB1bG9j
X2dldEF2YWlsYWJsZSBmb3IgMjAgeWVhcnMuCisgICAgICAgICAgMi4gaXNVbmljb2RlTG9jYWxl
SWRlbnRpZmllclR5cGUgaXNuJ3QganVzdCBgYWxwaGFudW17Myw4fWAgYnV0IHJhdGhlciBgYWxw
aGFudW17Myw4fSAoc2VwIGFscGhhbnVtezMsOH0pKmAuCisgICAgICAgICAgICAgVGhpcyBpcyBt
eSBvd24gbWlzdGFrZSBmcm9tIHIyMzk5NDEuCisgICAgICAgICAgMy4gc3VwcG9ydGVkTG9jYWxl
c09mIGVudHJpZXMgc2hvdWxkIG5vdCBiZSBmcm96ZW4uCisgICAgICAgICAgICAgQ2hhbmdlZCBp
biBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9lY21hNDAyL3B1bGwvMjc4LgorCisgICAgICAgICog
dG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uSUNVVmVyc2lvbik6
CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgQWRk
ICR2bS5pY3VWZXJzaW9uIHNvIHRoYXQgd2UgY2FuIGFkZCBwZXItbGluZSBza2lwcyB0byBzdHJl
c3MgdGVzdHMuCisKIDIwMjAtMDQtMTkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbSlNDXSBTbG93UGF0aENhbGwgaXMgbm90IHN1cHBvcnRlZCBieSBjYWxs
T3BlcmF0aW9uIGluIFdpbmRvd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCBkMWQ5MjMyOTk0ZDFkZGRiZThhMDgzY2Q2ZDYzZTQ5N2FlMjg0M2NmLi5hZmIyNTQ3OWFkZTI4
NDViODc4OGFmN2M1NGY5YTBlYjk2OGFlZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC03NSw2ICs3NSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NP
VVJDRVMKICAgICBydW50aW1lL0ludGxPYmplY3QuY3BwCiAgICAgcnVudGltZS9JbnRsUGx1cmFs
UnVsZXNDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlw
ZS5jcHAKKyAgICBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAK
KyAgICBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCiAgICAgcnVu
dGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCiAgICAgcnVudGltZS9KU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAppbmRleCAyMzQwY2RmYWM0NjFiOWI2YjMxYjA1NzhiMjVhZmI1NTViYWRhZDhiLi4zNGFjZGY4
N2U4YTRkNjliZjQ1ZDUyZjMyNDVmYTAwNDVlMjNjN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTQyLDYg
KzE0Miw4IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKICQoUFJPSkVDVF9E
SVIpL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElS
KS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1
bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAorJChQUk9KRUNUX0RJ
UikvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAogJChQUk9KRUNU
X0RJUikvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvSlNJbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCBhNzQ0NTBjYTc5MWM3ZmE4
ZDYyYzhiOTA5YWFmZTQxNGU5NDZlZjBkLi5kYWY5NDMyYTkxNmU1NzQ2ZmRkOWUxODgzYjk3YjZh
ZGFkMzFmYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC0zMyw2ICszMyw4IEBAICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9JbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlLmx1CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSW50bE9iamVjdC5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmx1dC5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50bFBsdXJh
bFJ1bGVzUHJvdG90eXBlLmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5o
CiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvSW50
bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL0pTQ0J1aWx0aW5zLmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9KU0RhdGFWaWV3UHJvdG90
eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvSlNHbG9iYWxPYmplY3QubHV0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKaW5kZXggZTlkODA0ZDllOGJlNWMzNDVlZjQ3MjE5ZTBlOTk2ZDMxOWJiZjkw
Ny4uZTdmMjEzMTM5YWM4YzQ2NjQ2MzQ4N2JhNzY3NzE1YmY2MzVlMDM1MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE1Myw2ICsxNTMsOCBAQCBPQkpF
Q1RfTFVUX0hFQURFUlMgPSBcCiAgICAgSW50bE9iamVjdC5sdXQuaCBcCiAgICAgSW50bFBsdXJh
bFJ1bGVzQ29uc3RydWN0b3IubHV0LmggXAogICAgIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5s
dXQuaCBcCisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmx1dC5oIFwKKyAg
ICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmx1dC5oIFwKICAgICBKU0RhdGFWaWV3
UHJvdG90eXBlLmx1dC5oIFwKICAgICBKU0dsb2JhbE9iamVjdC5sdXQuaCBcCiAgICAgSlNJbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDcwZmM5OWZiNGU3N2UwMzcyNDNlMWQzMTdlNGM0ZDlkOTBlYjAxZTIuLjIwNDZiMDhh
NGEzMWU1NmFhZjQxMGI0NDRkOWM4MjdiYWVkYjQ4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC00MzM0LDYgKzQzMzQsMTIgQEAKIAkJQTFFMDQ1MUIxQzI1QjRCMTAwQkI2NjND
IC8qIFN0cmluZ1Byb3RvdHlwZS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
cGF0aCA9IFN0cmluZ1Byb3RvdHlwZS5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTFGRTFFQjAxQzJDNTM3RTAwQTI4OUZGIC8qIERhdGVQcm90b3R5cGUuanMgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBEYXRlUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMjc5NThEN0ZBMTE0MkIwQUM5RTM2NEQgLyogV2FzbUNvbnRl
eHRJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21Db250ZXh0
SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0JGODg0QjI0NDgwQkRF
MDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNCRjg4NEMyNDQ4MEJERjAw
MUI5RjM1IC8qIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0JGODg0RDI0NDgwQkRGMDAxQjlGMzUgLyog
SW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQkY4ODRFMjQ0ODBCRTAwMDFCOUYzNSAv
KiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQkY4ODRGMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBM0JGODg1MDI0NDgwQkUxMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRkY5QkM1MjIzNDc0NjYwMEIxQTlB
QiAvKiBZYXJyRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWWFyckZs
YWdzLmg7IHBhdGggPSB5YXJyL1lhcnJGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBM0ZGOUJDNjIyMzQ3NDY2MDBCMUE5QUIgLyogWWFyckZsYWdzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFlhcnJGbGFncy5jcHA7IHBhdGggPSB5YXJyL1lh
cnJGbGFncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTEzMTg4RTBG
QUYwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzI2NSw2ICs3MjcxLDEyIEBACiAJCQkJN0Q1RkIxOTAyMDc0NEJG
MTAwNURERjY0IC8qIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmggKi8sCiAJCQkJN0Q1RkIx
OTEyMDc0NEJGMTAwNURERjY0IC8qIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAgKi8sCiAJ
CQkJN0Q1RkIxOEQyMDc0NEFFODAwNURERjY0IC8qIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5o
ICovLAorCQkJCUEzQkY4ODRGMjQ0ODBCRTAwMDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0LmNwcCAqLywKKwkJCQlBM0JGODg1MDI0NDgwQkUxMDAxQjlGMzUgLyogSW50bFJlbGF0aXZl
VGltZUZvcm1hdC5oICovLAorCQkJCUEzQkY4ODREMjQ0ODBCREYwMDFCOUYzNSAvKiBJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwICovLAorCQkJCUEzQkY4ODRFMjQ0ODBCRTAw
MDFCOUYzNSAvKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCAqLywKKwkJCQlB
M0JGODg0QjI0NDgwQkRFMDAxQjlGMzUgLyogSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlw
ZS5jcHAgKi8sCisJCQkJQTNCRjg4NEMyNDQ4MEJERjAwMUI5RjM1IC8qIEludGxSZWxhdGl2ZVRp
bWVGb3JtYXRQcm90b3R5cGUuaCAqLywKIAkJCQkwRjI3NUYyQzFFQ0UwNzk2MDA2MjBENDcgLyog
SW50cmluc2ljLmNwcCAqLywKIAkJCQk4NkJGNjQyQTE0OERCMkI1MDA0REUzNkEgLyogSW50cmlu
c2ljLmggKi8sCiAJCQkJOEI5RjZENTUxRDU5MTJGQTAwMUM3MzlGIC8qIEl0ZXJhdGlvbktpbmQu
aCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBiMzY5MmY1MGVmMWZkZjQxMGVm
YjRjYzBlYmY5NzZmYzYxZjliNGE3Li4wZjRjNTBkZjM2N2M2NTYwOGEwYWY2MjgzYTBkYzUyNmE5
NDEwYTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC04MTksNiArODE5LDkgQEAg
cnVudGltZS9JbnRsT2JqZWN0LmNwcAogcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCiBydW50
aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAogcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXNQcm90b3R5cGUuY3BwCitydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCitydW50
aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvSW50bFJl
bGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25z
LmNwcAogcnVudGltZS9JdGVyYXRvclByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvSlNBcnJheS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
CmluZGV4IGUyZGM4ODdiMzg0NDM0ZTA1MTY2NmEwYjQyNjUyMDAzOGY0YjU5ZjQuLmQxNjRiYTRi
ZWY4YjRlZWZmOTMxNzM3YjM5NTNmMzRmZTEyMzJhMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtNDksNiArNDksNyBAQAog
ICAgIG1hY3JvKFByb21pc2UpIFwKICAgICBtYWNybyhSZWZsZWN0KSBcCiAgICAgbWFjcm8oUmVn
RXhwKSBcCisgICAgbWFjcm8oUmVsYXRpdmVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8oUmVtb3Rl
UGxheWJhY2spIFwKICAgICBtYWNybyhTZXQpIFwKICAgICBtYWNybyhTaGFyZWRBcnJheUJ1ZmZl
cikgXApAQCAtMTc4LDYgKzE3OSw3IEBACiAgICAgbWFjcm8oc3RhY2spIFwKICAgICBtYWNybyhz
dGFja1RyYWNlTGltaXQpIFwKICAgICBtYWNybyhzdGlja3kpIFwKKyAgICBtYWNybyhzdHlsZSkg
XAogICAgIG1hY3JvKHN1YmFycmF5KSBcCiAgICAgbWFjcm8oc3VtbWFyeSkgXAogICAgIG1hY3Jv
KHRhcmdldCkgXApAQCAtMTkzLDYgKzE5NSw3IEBACiAgICAgbWFjcm8odG9Mb2NhbGVTdHJpbmcp
IFwKICAgICBtYWNybyh0b1ByZWNpc2lvbikgXAogICAgIG1hY3JvKHRvU3RyaW5nKSBcCisgICAg
bWFjcm8odHlwZSkgXAogICAgIG1hY3JvKHVpZCkgXAogICAgIG1hY3JvKHVuaWNvZGUpIFwKICAg
ICBtYWNybyh1c2FnZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxEYXRlVGltZUZvcm1hdC5jcHAKaW5kZXggMDAzMDJmZTRiMTM1ZDFkODNhNGNkYzgxZGI3
ZDEzODIxMGZjNjdlOC4uMmQxMzNkNjNhZWJjNGRiODc1OTljODBkY2JkMGYxMGJmN2E4OWQxOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXQuY3BwCkBAIC0xMDI5LDcgKzEwMjksNiBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1h
dDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdgog
ICAgICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUp
OwogCiAgICAgYXV0byByZXN1bHRTdHJpbmcgPSBTdHJpbmcocmVzdWx0LmRhdGEoKSwgcmVzdWx0
TGVuZ3RoKTsKLSAgICBhdXRvIHR5cGVQcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAidHlwZSIpOwogICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9IGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgImxpdGVyYWwiX3MpOwogCiAgICAgaW50MzJfdCBwcmV2aW91c0VuZEluZGV4ID0g
MDsKQEAgLTEwNDMsNyArMTA0Miw3IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3Jt
YXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2CiAgICAgICAg
IGlmIChwcmV2aW91c0VuZEluZGV4IDwgYmVnaW5JbmRleCkgewogICAgICAgICAgICAgYXV0byB2
YWx1ZSA9IGpzU3RyaW5nKHZtLCByZXN1bHRTdHJpbmcuc3Vic3RyaW5nKHByZXZpb3VzRW5kSW5k
ZXgsIGJlZ2luSW5kZXggLSBwcmV2aW91c0VuZEluZGV4KSk7CiAgICAgICAgICAgICBKU09iamVj
dCogcGFydCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgICAgICAg
ICBwYXJ0LT5wdXREaXJlY3Qodm0sIHR5cGVQcm9wZXJ0eU5hbWUsIGxpdGVyYWxTdHJpbmcpOwor
ICAgICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBs
aXRlcmFsU3RyaW5nKTsKICAgICAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+dmFsdWUsIHZhbHVlKTsKICAgICAgICAgICAgIHBhcnRzLT5wdXNoKGdsb2JhbE9i
amVjdCwgcGFydCk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwpAQCAtMTA1NCw3ICsxMDUzLDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1h
dFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHYKICAgICAgICAg
ICAgIGF1dG8gdHlwZSA9IGpzU3RyaW5nKHZtLCBwYXJ0VHlwZVN0cmluZyhVRGF0ZUZvcm1hdEZp
ZWxkKGZpZWxkVHlwZSkpKTsKICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBqc1N0cmluZyh2bSwg
cmVzdWx0U3RyaW5nLnN1YnN0cmluZyhiZWdpbkluZGV4LCBlbmRJbmRleCAtIGJlZ2luSW5kZXgp
KTsKICAgICAgICAgICAgIEpTT2JqZWN0KiBwYXJ0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xv
YmFsT2JqZWN0KTsKLSAgICAgICAgICAgIHBhcnQtPnB1dERpcmVjdCh2bSwgdHlwZVByb3BlcnR5
TmFtZSwgdHlwZSk7CisgICAgICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnR5cGUsIHR5cGUpOwogICAgICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT52YWx1ZSwgdmFsdWUpOwogICAgICAgICAgICAgcGFydHMtPnB1c2goZ2xv
YmFsT2JqZWN0LCBwYXJ0KTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXQuY3BwCmluZGV4IGNhNDI3OTY4NmE2ZmFiMGQ4ZGQyZGM1YmUxZmJhMTkxZDE3MmM4Yzgu
LjA2MjFmM2Q0YWFlYzZiYzgxZTQ5MTY0MTQ0ZjA3NTE2NzZlOWUyNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0yLDYg
KzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53
YWdvbmVyLmZhbWlseSkKICAqIENvcHlyaWdodCAoQykgMjAxNiBTdWtvbHNhayBTYWtzaHV3b25n
IChzdWtvbHNha0BnbWFpbC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTk1LDcgKzE5Niw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51
bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAKICAgICBtX251
bWJlcmluZ1N5c3RlbSA9IHJlc3VsdC5nZXQoIm51Il9zKTsKIAotICAgIFN0cmluZyBzdHlsZVN0
cmluZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAic3R5bGUiKSwgeyAiZGVjaW1hbCIsICJwZXJjZW50IiwgImN1cnJl
bmN5IiB9LCAic3R5bGUgbXVzdCBiZSBlaXRoZXIgXCJkZWNpbWFsXCIsIFwicGVyY2VudFwiLCBv
ciBcImN1cnJlbmN5XCIiLCAiZGVjaW1hbCIpOworICAgIFN0cmluZyBzdHlsZVN0cmluZyA9IGlu
dGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5z
dHlsZSwgeyAiZGVjaW1hbCIsICJwZXJjZW50IiwgImN1cnJlbmN5IiB9LCAic3R5bGUgbXVzdCBi
ZSBlaXRoZXIgXCJkZWNpbWFsXCIsIFwicGVyY2VudFwiLCBvciBcImN1cnJlbmN5XCIiLCAiZGVj
aW1hbCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgaWYg
KHN0eWxlU3RyaW5nID09ICJkZWNpbWFsIikKICAgICAgICAgbV9zdHlsZSA9IFN0eWxlOjpEZWNp
bWFsOwpAQCAtNDQxLDcgKzQ0Miw3IEBAIEpTT2JqZWN0KiBJbnRsTnVtYmVyRm9ybWF0OjpyZXNv
bHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBKU09iamVjdCog
b3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUsIGpzU3RyaW5nKHZtLCBt
X2xvY2FsZSkpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bnVtYmVyaW5nU3lzdGVtLCBqc1N0cmluZyh2bSwgbV9udW1iZXJpbmdTeXN0ZW0pKTsKLSAgICBv
cHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJzdHlsZSIp
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHN0eWxlU3RyaW5nKG1fc3R5bGUpKSk7CisgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHlsZSwganNOb250cml2aWFs
U3RyaW5nKHZtLCBzdHlsZVN0cmluZyhtX3N0eWxlKSkpOwogICAgIGlmIChtX3N0eWxlID09IFN0
eWxlOjpDdXJyZW5jeSkgewogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJjdXJyZW5jeSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1f
Y3VycmVuY3kpKTsKICAgICAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiY3VycmVuY3lEaXNwbGF5IiksIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
Y3VycmVuY3lEaXNwbGF5U3RyaW5nKG1fY3VycmVuY3lEaXNwbGF5KSkpOwpAQCAtNTAzLDYgKzUw
NCw1MiBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6cGFydFR5cGVTdHJpbmcoVU51
bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwgZG91YmxlCiAgICAgcmV0dXJuICJ1bmtub3duIl9zOwog
fQogCit2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZm9ybWF0
dGVkLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yKiBpdGVyYXRvciwgSlNBcnJheSogcGFydHMsIEpT
U3RyaW5nKiB1bml0KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIHN0cmluZ0xl
bmd0aCA9IGZvcm1hdHRlZC5sZW5ndGgoKTsKKworICAgIGludDMyX3QgbGl0ZXJhbEZpZWxkVHlw
ZSA9IC0xOworICAgIGF1dG8gbGl0ZXJhbEZpZWxkID0gSW50bE51bWJlckZvcm1hdEZpZWxkKGxp
dGVyYWxGaWVsZFR5cGUsIHN0cmluZ0xlbmd0aCk7CisgICAgVmVjdG9yPEludGxOdW1iZXJGb3Jt
YXRGaWVsZCwgMzI+IGZpZWxkcyhzdHJpbmdMZW5ndGgsIGxpdGVyYWxGaWVsZCk7CisgICAgaW50
MzJfdCBiZWdpbkluZGV4ID0gMDsKKyAgICBpbnQzMl90IGVuZEluZGV4ID0gMDsKKyAgICBhdXRv
IGZpZWxkVHlwZSA9IHVmaWVsZHBvc2l0ZXJfbmV4dChpdGVyYXRvciwgJmJlZ2luSW5kZXgsICZl
bmRJbmRleCk7CisgICAgd2hpbGUgKGZpZWxkVHlwZSA+PSAwKSB7CisgICAgICAgIGF1dG8gc2l6
ZSA9IGVuZEluZGV4IC0gYmVnaW5JbmRleDsKKyAgICAgICAgZm9yIChhdXRvIGkgPSBiZWdpbklu
ZGV4OyBpIDwgZW5kSW5kZXg7ICsraSkgeworICAgICAgICAgICAgLy8gT25seSBvdmVycmlkZSBw
cmV2aW91cyB2YWx1ZSBpZiBuZXcgdmFsdWUgaXMgbW9yZSBzcGVjaWZpYy4KKyAgICAgICAgICAg
IGlmIChmaWVsZHNbaV0uc2l6ZSA+PSBzaXplKQorICAgICAgICAgICAgICAgIGZpZWxkc1tpXSA9
IEludGxOdW1iZXJGb3JtYXRGaWVsZChmaWVsZFR5cGUsIHNpemUpOworICAgICAgICB9CisgICAg
ICAgIGZpZWxkVHlwZSA9IHVmaWVsZHBvc2l0ZXJfbmV4dChpdGVyYXRvciwgJmJlZ2luSW5kZXgs
ICZlbmRJbmRleCk7CisgICAgfQorCisgICAgYXV0byBsaXRlcmFsU3RyaW5nID0ganNOb250cml2
aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfcyk7CisgICAgSWRlbnRpZmllciB1bml0TmFtZTsKKyAg
ICBpZiAodW5pdCkKKyAgICAgICAgdW5pdE5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAidW5pdCIpOworCisgICAgc2l6ZV90IGN1cnJlbnRJbmRleCA9IDA7CisgICAgd2hpbGUgKGN1
cnJlbnRJbmRleCA8IHN0cmluZ0xlbmd0aCkgeworICAgICAgICBhdXRvIHN0YXJ0SW5kZXggPSBj
dXJyZW50SW5kZXg7CisgICAgICAgIGF1dG8gZmllbGRUeXBlID0gZmllbGRzW2N1cnJlbnRJbmRl
eF0udHlwZTsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA8IHN0cmluZ0xlbmd0aCAmJiBm
aWVsZHNbY3VycmVudEluZGV4XS50eXBlID09IGZpZWxkVHlwZSkKKyAgICAgICAgICAgICsrY3Vy
cmVudEluZGV4OworICAgICAgICBhdXRvIHBhcnRUeXBlID0gZmllbGRUeXBlID09IGxpdGVyYWxG
aWVsZFR5cGUgPyBsaXRlcmFsU3RyaW5nIDoganNTdHJpbmcodm0sIHBhcnRUeXBlU3RyaW5nKFVO
dW1iZXJGb3JtYXRGaWVsZHMoZmllbGRUeXBlKSwgdmFsdWUpKTsKKyAgICAgICAgYXV0byBwYXJ0
VmFsdWUgPSBqc1N1YnN0cmluZyh2bSwgZm9ybWF0dGVkLCBzdGFydEluZGV4LCBjdXJyZW50SW5k
ZXggLSBzdGFydEluZGV4KTsKKyAgICAgICAgSlNPYmplY3QqIHBhcnQgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnR5cGUsIHBhcnRUeXBlKTsKKyAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZSwgcGFydFZhbHVlKTsKKyAgICAgICAgaWYgKHVuaXQp
CisgICAgICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHVuaXROYW1lLCB1bml0KTsKKyAgICAg
ICAgcGFydHMtPnB1c2goZ2xvYmFsT2JqZWN0LCBwYXJ0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICB9Cit9CisKIEpTVmFsdWUgSW50bE51bWJlckZv
cm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUg
dmFsdWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtNTIwLDcgKzU2
Nyw2IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsCiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKIAotICAgIHN0YXR1cyA9
IFVfWkVST19FUlJPUjsKICAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQoMzIpOwogICAgIGF1
dG8gcmVzdWx0TGVuZ3RoID0gdW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMobV9udW1iZXJGb3Jt
YXQuZ2V0KCksIHZhbHVlLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCBmaWVsZEl0ci5n
ZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJP
UikgewpAQCAtNTMxLDQ1ICs1NzcsMTQgQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3Jt
YXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWwKICAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOwogCi0gICAg
aW50MzJfdCBsaXRlcmFsRmllbGRUeXBlID0gLTE7Ci0gICAgYXV0byBsaXRlcmFsRmllbGQgPSBJ
bnRsTnVtYmVyRm9ybWF0RmllbGQobGl0ZXJhbEZpZWxkVHlwZSwgcmVzdWx0TGVuZ3RoKTsKLSAg
ICBWZWN0b3I8SW50bE51bWJlckZvcm1hdEZpZWxkPiBmaWVsZHMocmVzdWx0TGVuZ3RoLCBsaXRl
cmFsRmllbGQpOwotICAgIGludDMyX3QgYmVnaW5JbmRleCA9IDA7Ci0gICAgaW50MzJfdCBlbmRJ
bmRleCA9IDA7Ci0gICAgYXV0byBmaWVsZFR5cGUgPSB1ZmllbGRwb3NpdGVyX25leHQoZmllbGRJ
dHIuZ2V0KCksICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOwotICAgIHdoaWxlIChmaWVsZFR5cGUg
Pj0gMCkgewotICAgICAgICBhdXRvIHNpemUgPSBlbmRJbmRleCAtIGJlZ2luSW5kZXg7Ci0gICAg
ICAgIGZvciAoYXV0byBpID0gYmVnaW5JbmRleDsgaSA8IGVuZEluZGV4OyArK2kpIHsKLSAgICAg
ICAgICAgIC8vIE9ubHkgb3ZlcnJpZGUgcHJldmlvdXMgdmFsdWUgaWYgbmV3IHZhbHVlIGlzIG1v
cmUgc3BlY2lmaWMuCi0gICAgICAgICAgICBpZiAoZmllbGRzW2ldLnNpemUgPj0gc2l6ZSkKLSAg
ICAgICAgICAgICAgICBmaWVsZHNbaV0gPSBJbnRsTnVtYmVyRm9ybWF0RmllbGQoZmllbGRUeXBl
LCBzaXplKTsKLSAgICAgICAgfQotICAgICAgICBmaWVsZFR5cGUgPSB1ZmllbGRwb3NpdGVyX25l
eHQoZmllbGRJdHIuZ2V0KCksICZiZWdpbkluZGV4LCAmZW5kSW5kZXgpOwotICAgIH0KKyAgICBh
dXRvIHJlc3VsdFN0cmluZyA9IFN0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHRMZW5ndGgpOwog
CiAgICAgSlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0
aENvbnRpZ3VvdXMpLCAwKTsKICAgICBpZiAoIXBhcnRzKQogICAgICAgICByZXR1cm4gdGhyb3dP
dXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAgIHVuc2lnbmVkIGluZGV4
ID0gMDsKIAotICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gU3RyaW5nKHJlc3VsdC5kYXRhKCksIHJl
c3VsdExlbmd0aCk7Ci0gICAgYXV0byB0eXBlUHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInR5cGUiKTsKLSAgICBhdXRvIGxpdGVyYWxTdHJpbmcgPSBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJsaXRlcmFsIl9zKTsKLQotICAgIGludDMyX3QgY3VycmVudEluZGV4ID0g
MDsKLSAgICB3aGlsZSAoY3VycmVudEluZGV4IDwgcmVzdWx0TGVuZ3RoKSB7Ci0gICAgICAgIGF1
dG8gc3RhcnRJbmRleCA9IGN1cnJlbnRJbmRleDsKLSAgICAgICAgYXV0byBmaWVsZFR5cGUgPSBm
aWVsZHNbY3VycmVudEluZGV4XS50eXBlOwotICAgICAgICB3aGlsZSAoY3VycmVudEluZGV4IDwg
cmVzdWx0TGVuZ3RoICYmIGZpZWxkc1tjdXJyZW50SW5kZXhdLnR5cGUgPT0gZmllbGRUeXBlKQot
ICAgICAgICAgICAgKytjdXJyZW50SW5kZXg7Ci0gICAgICAgIGF1dG8gcGFydFR5cGUgPSBmaWVs
ZFR5cGUgPT0gbGl0ZXJhbEZpZWxkVHlwZSA/IGxpdGVyYWxTdHJpbmcgOiBqc1N0cmluZyh2bSwg
cGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyhmaWVsZFR5cGUpLCB2YWx1ZSkpOwot
ICAgICAgICBhdXRvIHBhcnRWYWx1ZSA9IGpzU3Vic3RyaW5nKHZtLCByZXN1bHRTdHJpbmcsIHN0
YXJ0SW5kZXgsIGN1cnJlbnRJbmRleCAtIHN0YXJ0SW5kZXgpOwotICAgICAgICBKU09iamVjdCog
cGFydCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHBhcnQt
PnB1dERpcmVjdCh2bSwgdHlwZVByb3BlcnR5TmFtZSwgcGFydFR5cGUpOwotICAgICAgICBwYXJ0
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlLCBwYXJ0VmFsdWUpOwotICAg
ICAgICBwYXJ0cy0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBwYXJ0KTsK
LSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICB9CisgICAgZm9y
bWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9iamVjdCwgdmFsdWUsIHJlc3VsdFN0cmluZywgZmll
bGRJdHIuZ2V0KCksIHBhcnRzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogCiAgICAgcmV0dXJuIHBhcnRzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCmluZGV4IDJiMDZmMDdmY2FmNGNkYjdlYzk5NDhkYWFm
NmQzNjE5Mzc4N2FkOTEuLjlmMTBiNWQ0MzY3MGI4ZGUyZjZmNDBlNGQ3NzMzODVlMzU2ZjE4MDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE1IEFuZHkgVmFuV2Fn
b25lciAoYW5keUB2YW53YWdvbmVyLmZhbWlseSkKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255
IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01NywxMiArNTgsMTQgQEAgcHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZU51
bWJlckZvcm1hdChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgbG9jYWxlcywgSlNWYWx1ZSBvcHRp
b25zVmFsdWUpOwogICAgIEpTVmFsdWUgZm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlKTsK
ICAgICBKU1ZhbHVlIGZvcm1hdChKU0dsb2JhbE9iamVjdCosIEpTQmlnSW50Kik7Ci0gICAgSlNW
YWx1ZSBmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlIHZhbHVlKTsKKyAgICBK
U1ZhbHVlIGZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqLCBkb3VibGUpOwogICAgIEpTT2Jq
ZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKTsKIAogICAgIEpTQm91bmRGdW5j
dGlvbiogYm91bmRGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kRm9ybWF0LmdldCgpOyB9
CiAgICAgdm9pZCBzZXRCb3VuZEZvcm1hdChWTSYsIEpTQm91bmRGdW5jdGlvbiopOwogCisgICAg
c3RhdGljIHZvaWQgZm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiwgZG91Ymxl
LCBjb25zdCBTdHJpbmcmIGZvcm1hdHRlZCwgVUZpZWxkUG9zaXRpb25JdGVyYXRvciosIEpTQXJy
YXkqLCBKU1N0cmluZyogdW5pdCA9IG51bGxwdHIpOworCiBwcm90ZWN0ZWQ6CiAgICAgSW50bE51
bWJlckZvcm1hdChWTSYsIFN0cnVjdHVyZSopOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXgg
ZmIyYmI1YjY5MmNjZWMwMGUxZTRhYjc2NDI0NTdlMTExYTYyMzM1MS4uNTdiNTk2ZDFlYTI0ZTJm
YTgzOWY1NDUyZDVlZWYwNzJhNjdiN2I1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQW5keSBWYW5XYWdvbmVyIChhbmR5QHZhbndhZ29uZXIuZmFtaWx5KQogICogQ29weXJpZ2h0
IChDKSAyMDE1IFN1a29sc2FrIFNha3NodXdvbmcgKHN1a29sc2FrQGdtYWlsLmNvbSkKICAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSwxNSArNDAsMTUgQEAKICNpbmNs
dWRlICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bFBsdXJhbFJ1
bGVzQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaCIK
KyNpbmNsdWRlICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRl
ICJJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgi
CiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2lu
Y2x1ZGUgPHVuaWNvZGUvdWNvbC5oPgotI2luY2x1ZGUgPHVuaWNvZGUvdWRhdC5oPgogI2luY2x1
ZGUgPHVuaWNvZGUvdWxvYy5oPgotI2luY2x1ZGUgPHVuaWNvZGUvdW51bS5oPgogI2luY2x1ZGUg
PHVuaWNvZGUvdW51bXN5cy5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVk
ZSA8d3RmL0xhbmd1YWdlLmg+CkBAIC0xMTQsMTcgKzExNSwyNiBAQCBzdHJ1Y3QgTWF0Y2hlclJl
c3VsdCB7CiBjb25zdCBDbGFzc0luZm8gSW50bE9iamVjdDo6c19pbmZvID0geyAiT2JqZWN0Iiwg
JkJhc2U6OnNfaW5mbywgJmludGxPYmplY3RUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShJbnRsT2JqZWN0KSB9OwogCiBJbnRsT2JqZWN0OjpJbnRsT2JqZWN0KFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUp
CisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiB7CiB9CiAKLUludGxPYmplY3QqIEludGxPYmpl
Y3Q6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorSW50bE9iamVjdCogSW50
bE9iamVjdDo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgSW50bE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8SW50bE9iamVjdD4odm0uaGVhcCkpIEludGxPYmplY3Qodm0sIHN0
cnVjdHVyZSk7Ci0gICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgb2JqZWN0LT5m
aW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICByZXR1cm4gb2JqZWN0OwogfQog
Cit2b2lkIEludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgaWYg
KE9wdGlvbnM6OnVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXQoKSkgeworICAgICAgICBhdXRvKiBy
ZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvciA9IEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJv
dG90eXBlKCkpLCBqc0Nhc3Q8SW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSo+KGdsb2Jh
bE9iamVjdC0+cmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9i
amVjdCgpKSk7CisgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5SZWxhdGl2ZVRpbWVGb3JtYXQsIHJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVj
dG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CisgICAgfQorfQorCiBTdHJ1Y3R1cmUqIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogewog
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKQEAgLTE2NCwy
NiArMTc0LDcgQEAgc3RhdGljIHZvaWQgYWRkTWlzc2luZ1NjcmlwdExvY2FsZXMoSGFzaFNldDxT
dHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzKQogICAgICAgICBhdmFpbGFibGVMb2NhbGVzLmFkZCh6
aF9UV19TdHJpbmcuZ2V0KCkpOwogfQogCi1jb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxDb2xs
YXRvckF2YWlsYWJsZUxvY2FsZXMoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNo
U2V0PFN0cmluZz4+IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXM7Ci0gICAgSGFzaFNldDxTdHJpbmc+
JiBhdmFpbGFibGVMb2NhbGVzID0gY2FjaGVkQXZhaWxhYmxlTG9jYWxlcy5nZXQoKTsKLQotICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKLSAgICBzdGQ6OmNhbGxfb25j
ZShpbml0aWFsaXplT25jZSwgWyZdIHsKLSAgICAgICAgQVNTRVJUKGF2YWlsYWJsZUxvY2FsZXMu
aXNFbXB0eSgpKTsKLSAgICAgICAgaW50MzJfdCBjb3VudCA9IHVjb2xfY291bnRBdmFpbGFibGUo
KTsKLSAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAg
ICAgICAgU3RyaW5nIGxvY2FsZSA9IGNvbnZlcnRJQ1VMb2NhbGVUb0JDUDQ3TGFuZ3VhZ2VUYWco
dWNvbF9nZXRBdmFpbGFibGUoaSkpOwotICAgICAgICAgICAgaWYgKCFsb2NhbGUuaXNFbXB0eSgp
KQotICAgICAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXMuYWRkKGxvY2FsZSk7Ci0gICAgICAg
IH0KLSAgICAgICAgYWRkTWlzc2luZ1NjcmlwdExvY2FsZXMoYXZhaWxhYmxlTG9jYWxlcyk7Ci0g
ICAgfSk7Ci0gICAgcmV0dXJuIGF2YWlsYWJsZUxvY2FsZXM7Ci19Ci0KLWNvbnN0IEhhc2hTZXQ8
U3RyaW5nPiYgaW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpCitjb25zdCBIYXNo
U2V0PFN0cmluZz4mIGludGxBdmFpbGFibGVMb2NhbGVzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmc+PiBjYWNoZWRBdmFpbGFibGVMb2NhbGVzOwogICAgIEhh
c2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcyA9IGNhY2hlZEF2YWlsYWJsZUxvY2FsZXMu
Z2V0KCk7CkBAIC0xOTEsOSArMTgyLDkgQEAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsRGF0
ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcg
aW5pdGlhbGl6ZU9uY2U7CiAgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2UsIFsmXSB7
CiAgICAgICAgIEFTU0VSVChhdmFpbGFibGVMb2NhbGVzLmlzRW1wdHkoKSk7Ci0gICAgICAgIGlu
dDMyX3QgY291bnQgPSB1ZGF0X2NvdW50QXZhaWxhYmxlKCk7CisgICAgICAgIGludDMyX3QgY291
bnQgPSB1bG9jX2NvdW50QXZhaWxhYmxlKCk7CiAgICAgICAgIGZvciAoaW50MzJfdCBpID0gMDsg
aSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBjb252ZXJ0SUNV
TG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKHVkYXRfZ2V0QXZhaWxhYmxlKGkpKTsKKyAgICAgICAg
ICAgIFN0cmluZyBsb2NhbGUgPSBjb252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKHVs
b2NfZ2V0QXZhaWxhYmxlKGkpKTsKICAgICAgICAgICAgIGlmICghbG9jYWxlLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgICAgICBhdmFpbGFibGVMb2NhbGVzLmFkZChsb2NhbGUpOwogICAgICAgICB9
CkBAIC0yMDIsNyArMTkzLDcgQEAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsRGF0ZVRpbWVG
b3JtYXRBdmFpbGFibGVMb2NhbGVzKCkKICAgICByZXR1cm4gYXZhaWxhYmxlTG9jYWxlczsKIH0K
IAotY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxl
cygpCitjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxDb2xsYXRvckF2YWlsYWJsZUxvY2FsZXMo
KQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZz4+IGNhY2hlZEF2
YWlsYWJsZUxvY2FsZXM7CiAgICAgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzID0g
Y2FjaGVkQXZhaWxhYmxlTG9jYWxlcy5nZXQoKTsKQEAgLTIxMCw5ICsyMDEsOSBAQCBjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCkKICAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7CiAgICAgc3RkOjpjYWxsX29uY2Uo
aW5pdGlhbGl6ZU9uY2UsIFsmXSB7CiAgICAgICAgIEFTU0VSVChhdmFpbGFibGVMb2NhbGVzLmlz
RW1wdHkoKSk7Ci0gICAgICAgIGludDMyX3QgY291bnQgPSB1bnVtX2NvdW50QXZhaWxhYmxlKCk7
CisgICAgICAgIGludDMyX3QgY291bnQgPSB1Y29sX2NvdW50QXZhaWxhYmxlKCk7CiAgICAgICAg
IGZvciAoaW50MzJfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIFN0cmlu
ZyBsb2NhbGUgPSBjb252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKHVudW1fZ2V0QXZh
aWxhYmxlKGkpKTsKKyAgICAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBjb252ZXJ0SUNVTG9jYWxl
VG9CQ1A0N0xhbmd1YWdlVGFnKHVjb2xfZ2V0QXZhaWxhYmxlKGkpKTsKICAgICAgICAgICAgIGlm
ICghbG9jYWxlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBhdmFpbGFibGVMb2NhbGVzLmFk
ZChsb2NhbGUpOwogICAgICAgICB9CkBAIC0zMjgsMTMgKzMxOSwxNSBAQCBib29sIGlzVW5pY29k
ZUxvY2FsZUlkZW50aWZpZXJUeXBlKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIEFTU0VSVCgh
c3RyaW5nLmlzTnVsbCgpKTsKIAotICAgIGF1dG8gbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwot
ICAgIGlmIChsZW5ndGggPCAzIHx8IGxlbmd0aCA+IDgpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGZvciAoYXV0byBjaGFyYWN0ZXIgOiBzdHJpbmcuY29kZVVuaXRzKCkpIHsKLSAgICAg
ICAgaWYgKCFpc0FTQ0lJQWxwaGFudW1lcmljKGNoYXJhY3RlcikpCisgICAgZm9yIChhdXRvIHBh
cnQgOiBzdHJpbmcuc3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnLScpKSB7CisgICAgICAgIGF1
dG8gbGVuZ3RoID0gcGFydC5sZW5ndGgoKTsKKyAgICAgICAgaWYgKGxlbmd0aCA8IDMgfHwgbGVu
Z3RoID4gOCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBmb3IgKGF1dG8g
Y2hhcmFjdGVyIDogcGFydC5jb2RlVW5pdHMoKSkgeworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJ
QWxwaGFudW1lcmljKGNoYXJhY3RlcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC05NzksOCArOTcyLDYgQEAg
SlNWYWx1ZSBzdXBwb3J0ZWRMb2NhbGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXYKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBK
U1ZhbHVlKCkpOwogCiAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2M7Ci0gICAgZGVzYy5zZXRD
b25maWd1cmFibGUoZmFsc2UpOwotICAgIGRlc2Muc2V0V3JpdGFibGUoZmFsc2UpOwogCiAgICAg
c2l6ZV90IGxlbiA9IGtleXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVu
OyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRl
eCA2MGMwMDI1MDE5Y2MwZjcxMTZjOTM3NzM0OGE0MzRlMjFkZjVkMmVmLi42YWY2ZjczOWZkM2M5
YzJiYmIzNzFkNmMwYmMzNjIzNTlhYWJiMThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAxNSBBbmR5IFZhbldhZ29uZXIgKGFuZHlAdmFud2Fnb25lci5mYW1pbHkpCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMsMjAgKzQ0LDIzIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOwogICAgIH0KIAotICAgIHN0YXRpYyBJ
bnRsT2JqZWN0KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgSW50bE9iamVj
dCogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OwogCiAgICAgREVDTEFSRV9JTkZPOwogCiBwcml2YXRlOgogICAgIEludGxPYmplY3QoVk0mLCBT
dHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3Qq
KTsKIH07CiAKIFN0cmluZyBkZWZhdWx0TG9jYWxlKEpTR2xvYmFsT2JqZWN0Kik7Citjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGludGxBdmFpbGFibGVMb2NhbGVzKCk7CiBjb25zdCBIYXNoU2V0PFN0
cmluZz4mIGludGxDb2xsYXRvckF2YWlsYWJsZUxvY2FsZXMoKTsKLWNvbnN0IEhhc2hTZXQ8U3Ry
aW5nPiYgaW50bERhdGVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwotY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBpbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwotaW5saW5lIGNv
bnN0IEhhc2hTZXQ8U3RyaW5nPiYgaW50bFBsdXJhbFJ1bGVzQXZhaWxhYmxlTG9jYWxlcygpIHsg
cmV0dXJuIGludGxOdW1iZXJGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7IH0KK2lubGluZSBjb25z
dCBIYXNoU2V0PFN0cmluZz4mIGludGxEYXRlVGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKSB7
IHJldHVybiBpbnRsQXZhaWxhYmxlTG9jYWxlcygpOyB9CitpbmxpbmUgY29uc3QgSGFzaFNldDxT
dHJpbmc+JiBpbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxB
dmFpbGFibGVMb2NhbGVzKCk7IH0KK2lubGluZSBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxQ
bHVyYWxSdWxlc0F2YWlsYWJsZUxvY2FsZXMoKSB7IHJldHVybiBpbnRsQXZhaWxhYmxlTG9jYWxl
cygpOyB9CitpbmxpbmUgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsUmVsYXRpdmVUaW1lRm9y
bWF0QXZhaWxhYmxlTG9jYWxlcygpIHsgcmV0dXJuIGludGxBdmFpbGFibGVMb2NhbGVzKCk7IH0K
IAogYm9vbCBpbnRsQm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgb3B0aW9u
cywgUHJvcGVydHlOYW1lLCBib29sJiB1c2VzRmFsbGJhY2spOwogU3RyaW5nIGludGxTdHJpbmdP
cHRpb24oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMsIFByb3BlcnR5TmFtZSwgc3Rk
Ojppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiB2YWx1ZXMsIGNvbnN0IGNoYXIqIG5vdEZv
dW5kLCBjb25zdCBjaGFyKiBmYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAppbmRleCBjMGI2ZTRlYWRlMWFkMDA0M2MzNWRj
OWI2NTkwNmUwZmMxYzVjYTI1Li44NzcxNjAxMjI4NGM4MWFkYzM5MjdjNjMxZDRjMzU4N2EyMDFh
Yjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxS
dWxlcy5jcHAKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIEludGxQbHVyYWxSdWxlczo6aW5pdGlh
bGl6ZVBsdXJhbFJ1bGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU3RyaW5nIHR5cGVTdHJpbmcgPSBpbnRsU3RyaW5n
T3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InR5cGUiKSwgeyAiY2FyZGluYWwiLCAib3JkaW5hbCIgfSwgInR5cGUgbXVzdCBiZSBcImNhcmRp
bmFsXCIgb3IgXCJvcmRpbmFsXCIiLCAiY2FyZGluYWwiKTsKKyAgICBTdHJpbmcgdHlwZVN0cmlu
ZyA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5h
bWVzLT50eXBlLCB7ICJjYXJkaW5hbCIsICJvcmRpbmFsIiB9LCAidHlwZSBtdXN0IGJlIFwiY2Fy
ZGluYWxcIiBvciBcIm9yZGluYWxcIiIsICJjYXJkaW5hbCIpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgbV90eXBlID0gdHlwZVN0cmluZyA9PSAib3JkaW5h
bCIgPyBVUExVUkFMX1RZUEVfT1JESU5BTCA6IFVQTFVSQUxfVFlQRV9DQVJESU5BTDsKIApAQCAt
MjAxLDcgKzIwMSw3IEBAIEpTT2JqZWN0KiBJbnRsUGx1cmFsUnVsZXM6OnJlc29sdmVkT3B0aW9u
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAgSlNPYmplY3QqIG9wdGlvbnMg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIG9wdGlvbnMtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0s
IG1fbG9jYWxlKSk7Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAidHlwZSIpLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fdHlwZSA9PSBVUExV
UkFMX1RZUEVfT1JESU5BTCA/ICJvcmRpbmFsIl9zIDogImNhcmRpbmFsIl9zKSk7CisgICAgb3B0
aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBqc05vbnRyaXZpYWxT
dHJpbmcodm0sIG1fdHlwZSA9PSBVUExVUkFMX1RZUEVfT1JESU5BTCA/ICJvcmRpbmFsIl9zIDog
ImNhcmRpbmFsIl9zKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAibWluaW11bUludGVnZXJEaWdpdHMiKSwganNOdW1iZXIobV9taW5pbXVt
SW50ZWdlckRpZ2l0cykpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21pbmlt
dW1GcmFjdGlvbkRpZ2l0cykpOwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyh2bSwgIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIpLCBqc051bWJlcihtX21h
eGltdW1GcmFjdGlvbkRpZ2l0cykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODMxNjEy
Yzc1OWIyNzE4ZWRlM2EwM2Y3MTljY2Y5MDhhOTFlZDIxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKQEAg
LTAsMCArMSwzNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2
ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKKworI2luY2x1ZGUgIkVycm9yLmgiCisj
aW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEludGxSZWxhdGl2ZVRpbWVGb3JtYXQpIH07CisKK2NvbnN0ZXhw
ciBjb25zdCBjaGFyKiByZWxldmFudEV4dGVuc2lvbktleXNbMV0gPSB7ICJudSIgfTsKKworc3Ry
dWN0IFVGaWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyIHsKKyAgICB2b2lkIG9wZXJhdG9yKCko
VUZpZWxkUG9zaXRpb25JdGVyYXRvciogaXRlcmF0b3IpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAoaXRlcmF0b3IpCisgICAgICAgICAgICB1ZmllbGRwb3NpdGVyX2Nsb3NlKGl0ZXJhdG9yKTsK
KyAgICB9Cit9OworCit2b2lkIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OlVSZWxhdGl2ZURhdGVU
aW1lRm9ybWF0dGVyRGVsZXRlcjo6b3BlcmF0b3IoKShVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRl
ciogcmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlcikgY29uc3QKK3sKKyAgICBpZiAocmVsYXRpdmVE
YXRlVGltZUZvcm1hdHRlcikKKyAgICAgICAgdXJlbGRhdGVmbXRfY2xvc2UocmVsYXRpdmVEYXRl
VGltZUZvcm1hdHRlcik7Cit9CisKK3ZvaWQgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6VU51bWJl
ckZvcm1hdERlbGV0ZXI6Om9wZXJhdG9yKCkoVU51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0KSBj
b25zdAoreworICAgIGlmIChudW1iZXJGb3JtYXQpCisgICAgICAgIHVudW1fY2xvc2UobnVtYmVy
Rm9ybWF0KTsKK30KKworSW50bFJlbGF0aXZlVGltZUZvcm1hdCogSW50bFJlbGF0aXZlVGltZUZv
cm1hdDo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byog
Zm9ybWF0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SW50bFJlbGF0aXZlVGltZUZvcm1h
dD4odm0uaGVhcCkpIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQodm0sIHN0cnVjdHVyZSk7CisgICAg
Zm9ybWF0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIGZvcm1hdDsKK30KKworU3Ry
dWN0dXJlKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK0ludGxSZWxh
dGl2ZVRpbWVGb3JtYXQ6OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Cit9
CisKK3ZvaWQgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SW50bFJlbGF0aXZlVGltZUZvcm1hdCo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7Cit9CisKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiBsb2NhbGVE
YXRhKGNvbnN0IFN0cmluZyYgbG9jYWxlLCBzaXplX3Qga2V5SW5kZXgpCit7CisgICAgLy8gVGhl
IGluZGV4IG9mIHRoZSBleHRlbnNpb24ga2V5ICJudSIgaW4gcmVsZXZhbnRFeHRlbnNpb25LZXlz
IGlzIDAuCisgICAgQVNTRVJUX1VOVVNFRChrZXlJbmRleCwgIWtleUluZGV4KTsKKyAgICByZXR1
cm4gbnVtYmVyaW5nU3lzdGVtc0ZvckxvY2FsZShsb2NhbGUpOworfQorCisvLyBodHRwczovL3Rj
MzkuZXMvZWNtYTQwMi8jc2VjLUluaXRpYWxpemVSZWxhdGl2ZVRpbWVGb3JtYXQKK3ZvaWQgSW50
bFJlbGF0aXZlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZVJlbGF0aXZlVGltZUZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUgb3B0aW9uc1Zh
bHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0
ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdChnbG9iYWxPYmplY3QsIGxvY2FsZXMp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKKyAgICBKU09iamVj
dCogb3B0aW9uczsKKyAgICBpZiAob3B0aW9uc1ZhbHVlLmlzVW5kZWZpbmVkKCkpCisgICAgICAg
IG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJv
dG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOworICAgIGVsc2UgeworICAgICAgICBvcHRpb25zID0g
b3B0aW9uc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgfQorCisgICAgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4gb3B0OworICAgIFN0cmluZyBsb2NhbGVNYXRjaGVyID0gaW50bFN0cmluZ09wdGlvbihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZU1hdGNoZXIsIHsg
Imxvb2t1cCIsICJiZXN0IGZpdCIgfSwgImxvY2FsZU1hdGNoZXIgbXVzdCBiZSBlaXRoZXIgXCJs
b29rdXBcIiBvciBcImJlc3QgZml0XCIiLCAiYmVzdCBmaXQiKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIG9wdC5hZGQodm0ucHJvcGVydHlOYW1lcy0+bG9j
YWxlTWF0Y2hlci5zdHJpbmcoKSwgbG9jYWxlTWF0Y2hlcik7CisKKyAgICBTdHJpbmcgbnVtYmVy
aW5nU3lzdGVtID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnBy
b3BlcnR5TmFtZXMtPm51bWJlcmluZ1N5c3RlbSwgeyB9LCBudWxscHRyLCBudWxscHRyKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOworICAgIGlmICghbnVtYmVyaW5n
U3lzdGVtLmlzTnVsbCgpKSB7CisgICAgICAgIGlmICghaXNVbmljb2RlTG9jYWxlSWRlbnRpZmll
clR5cGUobnVtYmVyaW5nU3lzdGVtKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJudW1iZXJpbmdTeXN0ZW0gaXMgbm90IGEgd2VsbC1mb3JtZWQg
bnVtYmVyaW5nIHN5c3RlbSB2YWx1ZSJfcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgb3B0LmFkZCgibnUiX3MsIG51bWJlcmluZ1N5c3RlbSk7CisgICAgfQorCisg
ICAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzID0gaW50bFJlbGF0aXZl
VGltZUZvcm1hdEF2YWlsYWJsZUxvY2FsZXMoKTsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiByZXNvbHZlZCA9IHJlc29sdmVMb2NhbGUoZ2xvYmFsT2JqZWN0LCBhdmFpbGFibGVMb2NhbGVz
LCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQsIHJlbGV2YW50RXh0ZW5zaW9uS2V5cywgV1RGX0FSUkFZ
X0xFTkdUSChyZWxldmFudEV4dGVuc2lvbktleXMpLCBsb2NhbGVEYXRhKTsKKyAgICBtX2xvY2Fs
ZSA9IHJlc29sdmVkLmdldCh2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUuc3RyaW5nKCkpOworICAg
IGlmIChtX2xvY2FsZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFJlbGF0aXZlVGltZUZvcm1hdCBk
dWUgdG8gaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9udW1iZXJpbmdTeXN0ZW0gPSByZXNvbHZlZC5nZXQoIm51Il9zKTsKKyAgICBDU3RyaW5nIGRh
dGFMb2NhbGVXaXRoRXh0ZW5zaW9ucyA9IG1ha2VTdHJpbmcocmVzb2x2ZWQuZ2V0KCJkYXRhTG9j
YWxlIl9zKSwgIi11LW51LSIsIG1fbnVtYmVyaW5nU3lzdGVtKS51dGY4KCk7CisKKyAgICBTdHJp
bmcgc3R5bGUgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJv
cGVydHlOYW1lcy0+c3R5bGUsIHsgImxvbmciLCAic2hvcnQiLCAibmFycm93IiB9LCAic3R5bGUg
bXVzdCBiZSBlaXRoZXIgXCJsb25nXCIsIFwic2hvcnRcIiwgb3IgXCJuYXJyb3dcIiIsICJsb25n
Iik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAoc3R5
bGUgPT0gImxvbmciKQorICAgICAgICBtX3N0eWxlID0gVURBVF9TVFlMRV9MT05HOworICAgIGVs
c2UgaWYgKHN0eWxlID09ICJzaG9ydCIpCisgICAgICAgIG1fc3R5bGUgPSBVREFUX1NUWUxFX1NI
T1JUOworICAgIGVsc2UgaWYgKHN0eWxlID09ICJuYXJyb3ciKQorICAgICAgICBtX3N0eWxlID0g
VURBVF9TVFlMRV9OQVJST1c7CisgICAgZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKworICAgIFN0cmluZyBudW1lcmljID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3Qs
IG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPm51bWVyaWMsIHsgImFsd2F5cyIsICJhdXRvIiB9
LCAibnVtZXJpYyBtdXN0IGJlIGVpdGhlciBcImFsd2F5c1wiIG9yIFwiYXV0b1wiIiwgImFsd2F5
cyIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisgICAgbV9udW1l
cmljID0gKG51bWVyaWMgPT0gImFsd2F5cyIpOworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgbV9udW1iZXJGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJl
ckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVudW1fb3BlbihVTlVNX0RFQ0lNQUwsIG51
bGxwdHIsIDAsIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksIG51bGxwdHIsICZzdGF0
dXMpKTsKKyAgICBpZiAoVU5MSUtFTFkoVV9GQUlMVVJFKHN0YXR1cykpKSB7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBS
ZWxhdGl2ZVRpbWVGb3JtYXQiX3MpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9y
ZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyID0gc3RkOjp1bmlxdWVfcHRyPFVSZWxhdGl2ZURhdGVU
aW1lRm9ybWF0dGVyLCBVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXI+KHVyZWxkYXRl
Zm10X29wZW4oZGF0YUxvY2FsZVdpdGhFeHRlbnNpb25zLmRhdGEoKSwgbV9udW1iZXJGb3JtYXQu
Z2V0KCksIG1fc3R5bGUsIFVESVNQQ1RYX0NBUElUQUxJWkFUSU9OX0ZPUl9TVEFOREFMT05FLCAm
c3RhdHVzKSk7CisgICAgaWYgKFVOTElLRUxZKFVfRkFJTFVSRShzdGF0dXMpKSkgeworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxp
emUgUmVsYXRpdmVUaW1lRm9ybWF0Il9zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwor
c3RhdGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhVRGF0ZVJlbGF0aXZlRGF0ZVRpbWVGb3Jt
YXR0ZXJTdHlsZSBzdHlsZSkKK3sKKyAgICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgY2FzZSBVREFU
X1NUWUxFX0xPTkc6CisgICAgICAgIHJldHVybiAibG9uZyJfczsKKyAgICBjYXNlIFVEQVRfU1RZ
TEVfU0hPUlQ6CisgICAgICAgIHJldHVybiAic2hvcnQiX3M7CisgICAgY2FzZSBVREFUX1NUWUxF
X05BUlJPVzoKKyAgICAgICAgcmV0dXJuICJuYXJyb3ciX3M7CisgICAgfQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKK30KKworc3Rh
dGljIEFTQ0lJTGl0ZXJhbCBudW1lcmljU3RyaW5nKGJvb2wgbnVtZXJpYykKK3sKKyAgICByZXR1
cm4gbnVtZXJpYyA/ICJhbHdheXMiX3MgOiAiYXV0byJfczsKK30KKworLy8gaHR0cHM6Ly90YzM5
LmVzL2VjbWE0MDIvI3NlYy1pbnRsLnJlbGF0aXZldGltZWZvcm1hdC5wcm90b3R5cGUucmVzb2x2
ZWRvcHRpb25zCitKU09iamVjdCogSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6cmVzb2x2ZWRPcHRp
b25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxvY2FsZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX2xvY2FsZSkpOworICAgIG9w
dGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3R5bGUsIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgc3R5bGVTdHJpbmcobV9zdHlsZSkpKTsKKyAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm51bWVyaWMsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
bnVtZXJpY1N0cmluZyhtX251bWVyaWMpKSk7CisgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5udW1iZXJpbmdTeXN0ZW0sIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
bV9udW1iZXJpbmdTeXN0ZW0pKTsKKyAgICByZXR1cm4gb3B0aW9uczsKK30KKworc3RhdGljIFN0
cmluZ1ZpZXcgc2luZ3VsYXJVbml0KFN0cmluZ1ZpZXcgdW5pdCkKK3sKKyAgICAvLyBQbHVyYWxz
IGFyZSBhbGxvd2VkLCBidXQgdGhhbmtmdWxseSB0aGV5J3JlIGFsbCBqdXN0IGEgc2ltcGxlIC1z
LgorICAgIHJldHVybiB1bml0LmVuZHNXaXRoKCJzIikgPyB1bml0LmxlZnQodW5pdC5sZW5ndGgo
KSAtIDEpIDogdW5pdDsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1zaW5n
dWxhcnJlbGF0aXZldGltZXVuaXQKK3N0YXRpYyBPcHRpb25hbDxVUmVsYXRpdmVEYXRlVGltZVVu
aXQ+IHJlbGF0aXZlVGltZVVuaXRUeXBlKFN0cmluZ1ZpZXcgdW5pdCkKK3sKKyAgICBTdHJpbmdW
aWV3IHNpbmd1bGFyID0gc2luZ3VsYXJVbml0KHVuaXQpOworCisgICAgaWYgKHNpbmd1bGFyID09
ICJzZWNvbmQiKQorICAgICAgICByZXR1cm4gVURBVF9SRUxfVU5JVF9TRUNPTkQ7CisgICAgaWYg
KHNpbmd1bGFyID09ICJtaW51dGUiKQorICAgICAgICByZXR1cm4gVURBVF9SRUxfVU5JVF9NSU5V
VEU7CisgICAgaWYgKHNpbmd1bGFyID09ICJob3VyIikKKyAgICAgICAgcmV0dXJuIFVEQVRfUkVM
X1VOSVRfSE9VUjsKKyAgICBpZiAoc2luZ3VsYXIgPT0gImRheSIpCisgICAgICAgIHJldHVybiBV
REFUX1JFTF9VTklUX0RBWTsKKyAgICBpZiAoc2luZ3VsYXIgPT0gIndlZWsiKQorICAgICAgICBy
ZXR1cm4gVURBVF9SRUxfVU5JVF9XRUVLOworICAgIGlmIChzaW5ndWxhciA9PSAibW9udGgiKQor
ICAgICAgICByZXR1cm4gVURBVF9SRUxfVU5JVF9NT05USDsKKyAgICBpZiAoc2luZ3VsYXIgPT0g
InF1YXJ0ZXIiKQorICAgICAgICByZXR1cm4gVURBVF9SRUxfVU5JVF9RVUFSVEVSOworICAgIGlm
IChzaW5ndWxhciA9PSAieWVhciIpCisgICAgICAgIHJldHVybiBVREFUX1JFTF9VTklUX1lFQVI7
CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCitTdHJpbmcgSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdDo6Zm9ybWF0SW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91
YmxlIHZhbHVlLCBTdHJpbmdWaWV3IHVuaXQpCit7CisgICAgQVNTRVJUKG1fcmVsYXRpdmVEYXRl
VGltZUZvcm1hdHRlcik7CisKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKCFzdGQ6Omlz
ZmluaXRlKHZhbHVlKSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIm51bWJlciBhcmd1bWVudCBtdXN0IGJlIGZpbml0ZSJfcyk7CisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKyAgICB9CisKKyAgICBhdXRvIHVuaXRUeXBlID0gcmVsYXRpdmVUaW1lVW5p
dFR5cGUodW5pdCk7CisgICAgaWYgKCF1bml0VHlwZSkgeworICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVuaXQgYXJndW1lbnQgaXMgbm90IGEgcmVjb2duaXpl
ZCB1bml0IHR5cGUiX3MpOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgfQorCisgICAg
YXV0byBmb3JtYXRSZWxhdGl2ZVRpbWUgPSBtX251bWVyaWMgPyB1cmVsZGF0ZWZtdF9mb3JtYXRO
dW1lcmljIDogdXJlbGRhdGVmbXRfZm9ybWF0OworCisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBV
X1pFUk9fRVJST1I7CisgICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVzdWx0KDMyKTsKKyAgICBhdXRv
IHJlc3VsdExlbmd0aCA9IGZvcm1hdFJlbGF0aXZlVGltZShtX3JlbGF0aXZlRGF0ZVRpbWVGb3Jt
YXR0ZXIuZ2V0KCksIHZhbHVlLCB1bml0VHlwZS52YWx1ZSgpLCByZXN1bHQuZGF0YSgpLCByZXN1
bHQuc2l6ZSgpLCAmc3RhdHVzKTsKKyAgICBpZiAoc3RhdHVzID09IFVfQlVGRkVSX09WRVJGTE9X
X0VSUk9SKSB7CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKKyAgICAgICAgcmVzdWx0
Lmdyb3cocmVzdWx0TGVuZ3RoKTsKKyAgICAgICAgZm9ybWF0UmVsYXRpdmVUaW1lKG1fcmVsYXRp
dmVEYXRlVGltZUZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIHVuaXRUeXBlLnZhbHVlKCksIHJlc3Vs
dC5kYXRhKCksIHJlc3VsdExlbmd0aCwgJnN0YXR1cyk7CisgICAgfQorICAgIGlmIChVTkxJS0VM
WShVX0ZBSUxVUkUoc3RhdHVzKSkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgcmVsYXRpdmUgdGltZSJfcyk7CisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKHJlc3VsdC5kYXRh
KCksIHJlc3VsdExlbmd0aCk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMt
Rm9ybWF0UmVsYXRpdmVUaW1lCitKU1ZhbHVlIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1h
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUsIFN0cmluZ1ZpZXcg
dW5pdCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgU3RyaW5nIHJlc3VsdCA9IGZvcm1h
dEludGVybmFsKGdsb2JhbE9iamVjdCwgdmFsdWUsIHVuaXQpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4ganNTdHJpbmcodm0sIHJlc3VsdCk7Cit9
CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtRm9ybWF0UmVsYXRpdmVUaW1lVG9Q
YXJ0cworSlNWYWx1ZSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSwgU3RyaW5nVmlldyB1bml0KQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBTdHJpbmcgZm9ybWF0dGVkUmVsYXRpdmVUaW1l
ID0gZm9ybWF0SW50ZXJuYWwoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgdW5pdCk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9a
RVJPX0VSUk9SOworICAgIGF1dG8gaXRlcmF0b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZpZWxkUG9z
aXRpb25JdGVyYXRvciwgVUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXI+KHVmaWVsZHBvc2l0
ZXJfb3Blbigmc3RhdHVzKSk7CisgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKKworICAg
IGRvdWJsZSBhYnNWYWx1ZSA9IHN0ZDo6YWJzKHZhbHVlKTsKKworICAgIFZlY3RvcjxVQ2hhciwg
MzI+IGJ1ZmZlcigzMik7CisgICAgYXV0byBudW1iZXJMZW5ndGggPSB1bnVtX2Zvcm1hdERvdWJs
ZUZvckZpZWxkcyhtX251bWJlckZvcm1hdC5nZXQoKSwgYWJzVmFsdWUsIGJ1ZmZlci5kYXRhKCks
IGJ1ZmZlci5zaXplKCksIGl0ZXJhdG9yLmdldCgpLCAmc3RhdHVzKTsKKyAgICBpZiAoc3RhdHVz
ID09IFVfQlVGRkVSX09WRVJGTE9XX0VSUk9SKSB7CisgICAgICAgIHN0YXR1cyA9IFVfWkVST19F
UlJPUjsKKyAgICAgICAgYnVmZmVyLmdyb3cobnVtYmVyTGVuZ3RoKTsKKyAgICAgICAgdW51bV9m
b3JtYXREb3VibGVGb3JGaWVsZHMobV9udW1iZXJGb3JtYXQuZ2V0KCksIGFic1ZhbHVlLCBidWZm
ZXIuZGF0YSgpLCBudW1iZXJMZW5ndGgsIGl0ZXJhdG9yLmdldCgpLCAmc3RhdHVzKTsKKyAgICB9
CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgcmVsYXRpdmUgdGltZSJf
cyk7CisKKyAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IFN0cmluZyhidWZmZXIuZGF0YSgpLCBu
dW1iZXJMZW5ndGgpOworCisgICAgSlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUo
dm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxv
Y2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpLCAwKTsKKyAgICBpZiAoIXBhcnRzKQorICAgICAg
ICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOworCisg
ICAgSlNTdHJpbmcqIGxpdGVyYWxTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJsaXRl
cmFsIl9zKTsKKworICAgIC8vIFdlIG9ubHkgaGF2ZSBvbmUgaW5wdXQgbnVtYmVyLCBzbyBvdXIg
cmVsYXRpdmUgdGltZSB3aWxsIGhhdmUgYXQgbW9zdCBvbmUgbnVtZXJpYyBzdWJzdHJpbmcsCisg
ICAgLy8gYnV0IHdlIG5lZWQgdG8gbGlzdCBhbGwgb2YgdGhlIG51bWVyaWMgcGFydHMgc2VwYXJh
dGVseS4KKyAgICBzaXplX3QgbnVtYmVyRW5kID0gMDsKKyAgICBzaXplX3QgbnVtYmVyU3RhcnQg
PSBmb3JtYXR0ZWRSZWxhdGl2ZVRpbWUuZmluZChmb3JtYXR0ZWROdW1iZXIpOworICAgIGlmIChu
dW1iZXJTdGFydCAhPSBub3RGb3VuZCkgeworICAgICAgICBudW1iZXJFbmQgPSBudW1iZXJTdGFy
dCArIG51bWJlckxlbmd0aDsKKworICAgICAgICAvLyBBZGQgaW5pdGlhbCBsaXRlcmFsIGlmIHRo
ZXJlIGlzIG9uZS4KKyAgICAgICAgaWYgKG51bWJlclN0YXJ0KSB7CisgICAgICAgICAgICBKU09i
amVjdCogcGFydCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgICAg
ICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIGxpdGVyYWxT
dHJpbmcpOworICAgICAgICAgICAgcGFydC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT52YWx1ZSwganNTdWJzdHJpbmcodm0sIGZvcm1hdHRlZFJlbGF0aXZlVGltZSwgMCwgbnVtYmVy
U3RhcnQpKTsKKyAgICAgICAgICAgIHBhcnRzLT5wdXNoKGdsb2JhbE9iamVjdCwgcGFydCk7Cisg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKGdsb2JhbE9i
amVjdCwgYWJzVmFsdWUsIGZvcm1hdHRlZE51bWJlciwgaXRlcmF0b3IuZ2V0KCksIHBhcnRzLCBq
c1N0cmluZyh2bSwgc2luZ3VsYXJVbml0KHVuaXQpLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICB9CisKKyAgICAvLyBBZGQgZmluYWwg
bGl0ZXJhbCBpZiB0aGVyZSBpcyBvbmUuCisgICAgYXV0byBzdHJpbmdMZW5ndGggPSBmb3JtYXR0
ZWRSZWxhdGl2ZVRpbWUubGVuZ3RoKCk7CisgICAgaWYgKG51bWJlckVuZCAhPSBzdHJpbmdMZW5n
dGgpIHsKKyAgICAgICAgSlNPYmplY3QqIHBhcnQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9i
YWxPYmplY3QpOworICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PnR5cGUsIGxpdGVyYWxTdHJpbmcpOworICAgICAgICBwYXJ0LT5wdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnZhbHVlLCBqc1N1YnN0cmluZyh2bSwgZm9ybWF0dGVkUmVsYXRpdmVUaW1l
LCBudW1iZXJFbmQsIHN0cmluZ0xlbmd0aCAtIG51bWJlckVuZCkpOworICAgICAgICBwYXJ0cy0+
cHVzaChnbG9iYWxPYmplY3QsIHBhcnQpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworICAgIH0KKworICAgIHJldHVybiBwYXJ0czsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTcyMTkzMGFjOTE5NGZhZGY0YzgyM2YyNzEx
M2IwN2I0MDdmM2UyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaApAQCAtMCwwICsxLDg0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRl
IDx1bmljb2RlL3VmaWVsZHBvc2l0ZXIuaD4KKyNpbmNsdWRlIDx1bmljb2RlL3VyZWxkYXRlZm10
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0IGZp
bmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2Ug
PSBKU05vbkZpbmFsT2JqZWN0OworCisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVz
dHJ1Y3Rpb24gPSB0cnVlOworCisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwp
CisgICAgeworICAgICAgICBzdGF0aWNfY2FzdDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Kj4oY2Vs
bCktPkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6On5JbnRsUmVsYXRpdmVUaW1lRm9ybWF0KCk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1v
ZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgewor
ICAgICAgICByZXR1cm4gdm0uaW50bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlPG1vZGU+KCk7Cisg
ICAgfQorCisgICAgc3RhdGljIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICB2b2lk
IGluaXRpYWxpemVSZWxhdGl2ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIGxv
Y2FsZXMsIEpTVmFsdWUgb3B0aW9ucyk7CisgICAgSlNWYWx1ZSBmb3JtYXQoSlNHbG9iYWxPYmpl
Y3QqLCBkb3VibGUsIFN0cmluZ1ZpZXcgdW5pdFN0cmluZyk7CisgICAgSlNWYWx1ZSBmb3JtYXRU
b1BhcnRzKEpTR2xvYmFsT2JqZWN0KiwgZG91YmxlLCBTdHJpbmdWaWV3IHVuaXRTdHJpbmcpOwor
ICAgIEpTT2JqZWN0KiByZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqKTsKKworcHJpdmF0
ZToKKyAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKKworICAgIFN0cmluZyBmb3JtYXRJbnRlcm5hbChKU0dsb2Jh
bE9iamVjdCosIGRvdWJsZSwgU3RyaW5nVmlldyB1bml0KTsKKworICAgIHN0cnVjdCBVUmVsYXRp
dmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXIgeworICAgICAgICB2b2lkIG9wZXJhdG9yKCkoVVJl
bGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIqKSBjb25zdDsKKyAgICB9OworICAgIHN0cnVjdCBVTnVt
YmVyRm9ybWF0RGVsZXRlciB7CisgICAgICAgIHZvaWQgb3BlcmF0b3IoKShVTnVtYmVyRm9ybWF0
KikgY29uc3Q7CisgICAgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxVUmVsYXRpdmVEYXRlVGlt
ZUZvcm1hdHRlciwgVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJEZWxldGVyPiBtX3JlbGF0aXZl
RGF0ZVRpbWVGb3JtYXR0ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVO
dW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1hdDsKKworICAgIFN0cmluZyBtX2xvY2Fs
ZTsKKyAgICBTdHJpbmcgbV9udW1iZXJpbmdTeXN0ZW07CisgICAgVURhdGVSZWxhdGl2ZURhdGVU
aW1lRm9ybWF0dGVyU3R5bGUgbV9zdHlsZSB7IFVEQVRfU1RZTEVfTE9ORyB9OworICAgIGJvb2wg
bV9udW1lcmljIHsgdHJ1ZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZl
VGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZmE1ZDA1NzExOWVhMDg2YzQy
OWFlOWQwMGRkYzAwNDEyOGUyMzJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAt
MCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJF
cnJvci5oIgorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5o
IgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJMb29rdXAuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IpOworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3JGdW5jU3VwcG9y
dGVkTG9jYWxlc09mKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK30KKworI2luY2x1
ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkludGVybmFsRnVuY3Rpb246OnNfaW5mbywgJnJl
bGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2Ug
Zm9yIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIHJlbGF0
aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yVGFibGUKKyAgc3VwcG9ydGVkTG9jYWxlc09mICAgICAg
ICAgICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3RvckZ1bmNTdXBwb3J0ZWRMb2Nh
bGVzT2YgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorQGVuZAorKi8KKworSW50bFJl
bGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0UHJvdG90eXBlKiByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUpCit7CisgICAg
YXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0
aW9uKHZtLCByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1
Y3RvcjsKK30KKworU3RydWN0dXJlKiBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZy
YW1lKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRs
UmVsYXRpdmVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CisKK0ludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6SW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0
cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1
Y3R1cmUsIGNhbGxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0LCBjb25zdHJ1Y3RJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0KQoreworfQorCit2b2lkIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBl
KiByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0sICJSZWxhdGl2ZVRpbWVGb3JtYXQiX3MsIE5hbWVBZGRpdGlvbk1vZGU6OldpdGhvdXRT
dHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUs
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
KyAgICByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworfQorCisvLyBodHRwczov
L3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuUmVsYXRpdmVUaW1lRm9ybWF0CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEludGVybmFs
RnVuY3Rpb246OmNyZWF0ZVN1YmNsYXNzU3RydWN0dXJlKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT5qc0NhbGxlZSgpLCBjYWxsRnJhbWUtPm5ld1RhcmdldCgpLCBqc0Nhc3Q8SW50bFJlbGF0aXZl
VGltZUZvcm1hdENvbnN0cnVjdG9yKj4oY2FsbEZyYW1lLT5qc0NhbGxlZSgpKS0+cmVsYXRpdmVU
aW1lRm9ybWF0U3RydWN0dXJlKHZtKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdCogcmVsYXRpdmVU
aW1lRm9ybWF0ID0gSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUp
OworICAgIEFTU0VSVChyZWxhdGl2ZVRpbWVGb3JtYXQpOworCisgICAgc2NvcGUucmVsZWFzZSgp
OworICAgIHJlbGF0aXZlVGltZUZvcm1hdC0+aW5pdGlhbGl6ZVJlbGF0aXZlVGltZUZvcm1hdChn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQo
MSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVsYXRpdmVUaW1lRm9ybWF0KTsKK30K
KworLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLlJlbGF0aXZlVGltZUZvcm1h
dAorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEludGxSZWxhdGl2ZVRp
bWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0
cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJSZWxhdGl2ZVRpbWVGb3JtYXQiKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21h
NDAyLyNzZWMtSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ckZ1bmNTdXBwb3J0ZWRMb2NhbGVzT2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8mIGF2
YWlsYWJsZUxvY2FsZXMgPSBpbnRsUmVsYXRpdmVUaW1lRm9ybWF0QXZhaWxhYmxlTG9jYWxlcygp
OworCisgICAgYXV0byByZXF1ZXN0ZWRMb2NhbGVzID0gY2Fub25pY2FsaXplTG9jYWxlTGlzdChn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3VwcG9ydGVkTG9jYWxlcyhnbG9iYWxPYmplY3QsIGF2
YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkp
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jOGNjZmYyNDE0ZjMyNmYyMzkyYjZjM2YzYWZjYmNkYzMxMGVlMWU0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJl
bGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKyNp
bmNsdWRlICJJbnRsT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsUmVs
YXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOworCitjbGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0
Q29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQmFzZSA9IEludGVybmFsRnVuY3Rpb247CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGlj
UHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3Ry
dWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90
b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgU3RydWN0
dXJlKiByZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoVk0mKSBjb25zdCB7IHJldHVybiBnbG9i
YWxPYmplY3QoKS0+cmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJlKCk7IH0KKworcHJvdGVjdGVk
OgorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJv
dG90eXBlKik7CisKK3ByaXZhdGU6CisgICAgSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVj
dG9yKFZNJiwgU3RydWN0dXJlKik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hB
UkFCTEUoSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9u
KTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI0YTRkNjY0YjdlYjA4ZmUwZDEyMjUxODdlMzM2NGUyOTNkY2JhZGUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDEzMCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1h
dFByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2Jq
ZWN0SW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXQo
SlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0
cyhKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNSZXNvbHZlZE9w
dGlvbnMoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKTsKKworfQorCisjaW5jbHVkZSAiSW50
bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NvbnN0IENsYXNzSW5mbyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOjpzX2luZm8g
PSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAmcmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBl
VGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSW50bFJlbGF0aXZlVGltZUZvcm1h
dFByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJv
dG90eXBlLmx1dC5oCitAYmVnaW4gcmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlVGFibGUKKyAg
Zm9ybWF0ICAgICAgICAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1h
dCAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorICBmb3JtYXRUb1BhcnRzICAgIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cyAgICBEb250RW51bXxG
dW5jdGlvbiAyCisgIHJlc29sdmVkT3B0aW9ucyAgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3Rv
dHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMgIERvbnRFbnVtfEZ1bmN0aW9uIDAKK0BlbmQKKyovCisK
K0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQ
cm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1
dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEludGxSZWxhdGl2ZVRpbWVG
b3JtYXRQcm90b3R5cGU+KHZtLmhlYXApKSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBl
KHZtLCBzdHJ1Y3R1cmUpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgIHJl
dHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOjpJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgSW50bFJlbGF0aXZl
VGltZUZvcm1hdFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1ib2wsIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgIkludGwuUmVsYXRpdmVUaW1lRm9ybWF0Il9zKSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKK30KKworLy8gaHR0cHM6Ly90YzM5
LmVzL2VjbWE0MDIvI3NlYy1JbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90
b3R5cGVGdW5jRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiByZWxhdGl2ZVRp
bWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFyZWxhdGl2ZVRpbWVGb3JtYXQpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFzIGEgUmVsYXRpdmVUaW1l
Rm9ybWF0Il9zKSk7CisKKyAgICBkb3VibGUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBTdHJpbmcgdW5pdCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMSkudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlbGF0aXZlVGltZUZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVj
dCwgdmFsdWUsIHVuaXQpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMt
SW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNG
b3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiByZWxhdGl2ZVRpbWVG
b3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqPih2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFyZWxhdGl2ZVRpbWVGb3JtYXQpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIFJlbGF0aXZl
VGltZUZvcm1hdCJfcykpOworCisgICAgZG91YmxlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOworCisgICAgU3RyaW5nIHVuaXQgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZWxhdGl2ZVRpbWVGb3JtYXQtPmZvcm1hdFRvUGFydHMo
Z2xvYmFsT2JqZWN0LCB2YWx1ZSwgdW5pdCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL2Vj
bWE0MDIvI3NlYy1pbnRsLnJlbGF0aXZldGltZWZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRvcHRp
b25zCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQ
cm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRv
KiByZWxhdGl2ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFyZWxhdGl2ZVRpbWVG
b3JtYXQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNv
bHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxp
emVkIGFzIGEgUmVsYXRpdmVUaW1lRm9ybWF0Il9zKSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZWxhdGl2ZVRpbWVGb3JtYXQtPnJlc29sdmVkT3B0
aW9ucyhnbG9iYWxPYmplY3QpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFBy
b3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGlt
ZUZvcm1hdFByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjYmFlYThlNzVhNDgxMjg4MDgyYjU5MDgw
YTBhZWRjZWU1MDczNTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1l
bnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90
eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5n
IEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5
VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+
CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAg
ICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShJbnRsUmVsYXRpdmVUaW1l
Rm9ybWF0UHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgIH0KKworICAgIHN0YXRpYyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBl
KiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9J
TkZPOworCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCitwcml2
YXRlOgorICAgIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUq
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDc2NGUxMDA1MzU4ZDE5ZTllOTZlMzk5
MGM5MjM1NjM3YzZkMGUzYWYuLjE5YTQ4ZmI5MzBjNWJmMGYzNTUxZTNmMzQ2ZDY0Yzg3NTZlNDU2
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKQEAgLTg2LDYgKzg2LDggQEAKICNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSW50bFBsdXJhbFJ1bGVzLmgiCiAjaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
LmgiCisjaW5jbHVkZSAiSW50bFJlbGF0aXZlVGltZUZvcm1hdC5oIgorI2luY2x1ZGUgIkludGxS
ZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJJdGVyYXRvclByb3RvdHlw
ZS5oIgogI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgogI2luY2x1ZGUgIkpTQXJyYXlC
dWZmZXIuaCIKQEAgLTk1OSw2ICs5NjEsMTIgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3Iq
IGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAg
ICAgICAgICAgIEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSogcGx1cmFsUnVsZXNQcm90b3R5cGUg
PSBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3Qs
IEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwogICAgICAgICAgICAg
aW5pdC5zZXQoSW50bFBsdXJhbFJ1bGVzOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFs
T2JqZWN0LCBwbHVyYWxSdWxlc1Byb3RvdHlwZSkpOwogICAgICAgICB9KTsKKyAgICBtX3JlbGF0
aXZlVGltZUZvcm1hdFN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0
aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAg
ICAgICAgICBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKiByZWxhdGl2ZVRpbWVGb3Jt
YXRQcm90b3R5cGUgPSBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoaW5p
dC52bSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGlu
aXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwor
ICAgICAgICAgICAgaW5pdC5zZXQoSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Y3JlYXRlU3RydWN0
dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgcmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlKSk7
CisgICAgICAgIH0pOwogICAgIG1fZGVmYXVsdENvbGxhdG9yLmluaXRMYXRlcigKICAgICAgICAg
W10gKGNvbnN0IEluaXRpYWxpemVyPEludGxDb2xsYXRvcj4mIGluaXQpIHsKICAgICAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKTsKQEAgLTk3MCw3ICs5NzgsNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3Rv
ciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQog
ICAgICAgICAgICAgaW5pdC5zZXQoY29sbGF0b3IpOwogICAgICAgICB9KTsKIAotICAgIEludGxP
YmplY3QqIGludGwgPSBJbnRsT2JqZWN0OjpjcmVhdGUodm0sIEludGxPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBJbnRsT2Jq
ZWN0KiBpbnRsID0gSW50bE9iamVjdDo6Y3JlYXRlKHZtLCB0aGlzLCBJbnRsT2JqZWN0OjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkludGwsIGludGws
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAog
ICAgIG1fbW9kdWxlTG9hZGVyLmluaXRMYXRlcigKQEAgLTE3NjksNiArMTc3Nyw3IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX251bWJlckZvcm1hdFN0cnVjdHVyZS52aXNpdCh2
aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLnZpc2l0
KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUudmlzaXQo
dmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9yZWxhdGl2ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUu
dmlzaXQodmlzaXRvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX251bGxH
ZXR0ZXJGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxsU2V0
dGVyRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKaW5kZXggYjM3YjhhZTZjYzllNmZlY2RkMWU2Mjk0NTZhYmNjNDVkMzc0MTUyZS4u
YTBjM2I0YWFmMDAwNDZkMmQ5NDE2YjQ5MGJhNjI1MjQ0ZDk4ZjM2YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yOTQsNiArMjk0LDcg
QEAgcHVibGljOgogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBt
X251bWJlckZvcm1hdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZT4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wbHVyYWxSdWxlc1N0cnVjdHVyZTsKKyAgICBM
YXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9yZWxhdGl2ZVRpbWVGb3Jt
YXRTdHJ1Y3R1cmU7CiAKICAgICBXcml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9uPiBtX251
bGxHZXR0ZXJGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8TnVsbFNldHRlckZ1bmN0aW9uPiBt
X251bGxTZXR0ZXJGdW5jdGlvbjsKQEAgLTc4OCw2ICs3ODksNyBAQCBwdWJsaWM6CiAgICAgU3Ry
dWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX251bWJlckZvcm1hdFN0
cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0
dXJlKCkgeyByZXR1cm4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAg
ICBTdHJ1Y3R1cmUqIHBsdXJhbFJ1bGVzU3RydWN0dXJlKCkgeyByZXR1cm4gbV9wbHVyYWxSdWxl
c1N0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIHJlbGF0aXZlVGltZUZvcm1h
dFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcmVsYXRpdmVUaW1lRm9ybWF0U3RydWN0dXJlLmdldCh0
aGlzKTsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRSZW1vdGVEZWJ1Z2dpbmdF
bmFibGVkKGJvb2wpOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgcmVtb3RlRGVidWdnaW5n
RW5hYmxlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmgKaW5kZXggMWVmODUwYzAxZWJiODk0NjZjNDEyMTZmOTkwMTRhNjFmYmUyY2FmOS4uNTQy
MGQyYTc0OTY0MDUyODE4NGZmZDE4YTc0OTUxZDgyYjdmNjMyMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC00ODQsNiArNDg0LDcgQEAgY29uc3Rl
eHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KEJv
b2wsIHVzZVdlYkFzc2VtYmx5TXVsdGlWYWx1ZXMsIHRydWUsIE5vcm1hbCwgIkFsbG93IHR5cGVz
IGZyb20gdGhlIHdhc20gbXVsaXQtdmFsdWVzIHNwZWMuIikgXAogICAgIHYoQm9vbCwgdXNlV2Vh
a1JlZnMsIGZhbHNlLCBOb3JtYWwsICJFeHBvc2UgdGhlIFdlYWtSZWYgY29uc3RydWN0b3IuIikg
XAogICAgIHYoQm9vbCwgdXNlQmlnSW50LCB0cnVlLCBOb3JtYWwsICJJZiB0cnVlLCB3ZSB3aWxs
IGVuYWJsZSBCaWdJbnQgc3VwcG9ydC4iKSBcCisgICAgdihCb29sLCB1c2VJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0LCBmYWxzZSwgTm9ybWFsLCAiRXhwb3NlIHRoZSBJbnRsLlJlbGF0aXZlVGltZUZv
cm1hdCBjb25zdHJ1Y3Rvci4iKSBcCiAgICAgdihCb29sLCB1c2VBcnJheUFsbG9jYXRpb25Qcm9m
aWxpbmcsIHRydWUsIE5vcm1hbCwgIklmIHRydWUsIHdlIHdpbGwgdXNlIG91ciBub3JtYWwgYXJy
YXkgYWxsb2NhdGlvbiBwcm9maWxpbmcuIElmIGZhbHNlLCB0aGUgYWxsb2NhdGlvbiBwcm9maWxl
IHdpbGwgYWx3YXlzIGNsYWltIHRvIGJlIHVuZGVjaWRlZC4iKSBcCiAgICAgdihCb29sLCBmb3Jj
ZVBvbHlQcm90bywgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGNyZWF0ZV90aGlzIHdpbGwgYWx3
YXlzIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBhIHBvbHkgcHJvdG8gc3RydWN0dXJlLiIpIFwKICAg
ICB2KEJvb2wsIGZvcmNlTWluaVZNTW9kZSwgZmFsc2UsIE5vcm1hbCwgIklmIHRydWUsIGl0IHdp
bGwgZm9yY2UgbWluaSBWTSBtb2RlIG9uLiIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAppbmRleCA1YzBlZTI2MTM3NzZlOTYwZjQ4Nzg2YmI5YWZmNzkwNWM5MTQ3YWQzLi4xNjJl
OTlkZWQzZWIwMWIyMjcwMjVhODIyZTA2MzJiMjFjODYxZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCkBAIC03Nyw2ICs3Nyw3IEBACiAjaW5jbHVkZSAiSW50bERhdGVUaW1l
Rm9ybWF0LmgiCiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgogI2luY2x1ZGUgIkludGxQ
bHVyYWxSdWxlcy5oIgorI2luY2x1ZGUgIkludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaCIKICNpbmNs
dWRlICJJc29IZWFwQ2VsbFR5cGUuaCIKICNpbmNsdWRlICJJc29JbmxpbmVkSGVhcENlbGxUeXBl
LmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgpAQCAtMzQwLDYgKzM0MSw3IEBAIFZNOjpWTShWTVR5
cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICAsIGludGxEYXRlVGltZUZvcm1hdEhl
YXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJbnRsRGF0ZVRpbWVGb3JtYXQ+KCkp
CiAgICAgLCBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3Jl
YXRlPEludGxOdW1iZXJGb3JtYXQ+KCkpCiAgICAgLCBpbnRsUGx1cmFsUnVsZXNIZWFwQ2VsbFR5
cGUoSXNvSGVhcENlbGxUeXBlOjpjcmVhdGU8SW50bFBsdXJhbFJ1bGVzPigpKQorICAgICwgaW50
bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZShJc29IZWFwQ2VsbFR5cGU6OmNyZWF0ZTxJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0PigpKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAs
IHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRl
PEpTV2ViQXNzZW1ibHlDb2RlQmxvY2s+KCkpCiAgICAgLCB3ZWJBc3NlbWJseUZ1bmN0aW9uSGVh
cENlbGxUeXBlKElzb0hlYXBDZWxsVHlwZTo6Y3JlYXRlPFdlYkFzc2VtYmx5RnVuY3Rpb24+KCkp
CkBAIC0xNTExLDYgKzE1MTMsNyBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coaW50bENvbGxhdG9yU3BhY2UsIGludGxDb2xsYXRvckhlYXBDZWxsVAogRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxEYXRlVGltZUZvcm1hdFNwYWNlLCBp
bnRsRGF0ZVRpbWVGb3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxEYXRlVGltZUZvcm1hdCkK
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsTnVtYmVyRm9ybWF0
U3BhY2UsIGludGxOdW1iZXJGb3JtYXRIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxOdW1iZXJGb3Jt
YXQpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFBsdXJhbFJ1
bGVzU3BhY2UsIGludGxQbHVyYWxSdWxlc0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFBsdXJhbFJ1
bGVzKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxSZWxhdGl2
ZVRpbWVGb3JtYXRTcGFjZSwgaW50bFJlbGF0aXZlVGltZUZvcm1hdEhlYXBDZWxsVHlwZS5nZXQo
KSwgSW50bFJlbGF0aXZlVGltZUZvcm1hdCkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNUb1dhc21JQ0NhbGxlZVNwYWNl
LCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1RvV2FzbUlDQ2FsbGVlKQogRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UsIHdl
YkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYkFzc2VtYmx5Q29kZUJs
b2NrKSAvLyBIYXNoOjB4OWFkOTk1Y2QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4
IDEyODYyYTQwY2UwZTAxNGFmYWM1NDNjYmRiMzk3NTZiNGYxMWRkNzIuLjUyOTI5MzNjMTNkYWZh
YzdlNjFhYjhjNTc4NGFlYzUwMTZiMzBiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aApAQCAtMTI4LDYgKzEyOCw3IEBAIGNsYXNzIEludGxDb2xsYXRvcjsKIGNsYXNzIEludGxEYXRl
VGltZUZvcm1hdDsKIGNsYXNzIEludGxOdW1iZXJGb3JtYXQ7CiBjbGFzcyBJbnRsUGx1cmFsUnVs
ZXM7CitjbGFzcyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OwogY2xhc3MgSlNBUElHbG9iYWxPYmpl
Y3Q7CiBjbGFzcyBKU0FQSVdyYXBwZXJHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU0FQSVdyYXBwZXJP
YmplY3Q7CkBAIC00MDEsNiArNDAyLDcgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
c29IZWFwQ2VsbFR5cGU+IGludGxEYXRlVGltZUZvcm1hdEhlYXBDZWxsVHlwZTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsTnVtYmVyRm9ybWF0SGVhcENlbGxUeXBl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29IZWFwQ2VsbFR5cGU+IGludGxQbHVyYWxSdWxlc0hl
YXBDZWxsVHlwZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiBpbnRsUmVs
YXRpdmVUaW1lRm9ybWF0SGVhcENlbGxUeXBlOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3NlbWJseUNvZGVCbG9ja0hl
YXBDZWxsVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXNvSGVhcENlbGxUeXBlPiB3ZWJBc3Nl
bWJseUZ1bmN0aW9uSGVhcENlbGxUeXBlOwpAQCAtNTU3LDYgKzU1OSw3IEBAIHB1YmxpYzoKICAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxEYXRlVGltZUZvcm1hdFNw
YWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bE51bWJlckZv
cm1hdFNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFBs
dXJhbFJ1bGVzU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihp
bnRsUmVsYXRpdmVUaW1lRm9ybWF0U3BhY2UpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNUb1dhc21JQ0NhbGxlZVNwYWNl
KQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlDb2Rl
QmxvY2tTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApp
bmRleCAyYzAwOWI2Y2ZhMGEwMDYwMWQyZjUzZjEyMGNiYmZkZGY0ZjJhYjI2Li5kZDFkNDljYWJi
MTBmOWQ1ZTk5N2JmOGJlY2IwNzUzODZkN2U2YWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiVHlwZVBy
b2ZpbGVyTG9nLmgiCiAjaW5jbHVkZSAiVk1JbnNwZWN0b3IuaCIKICNpbmNsdWRlICJXYXNtQ2Fw
YWJpbGl0aWVzLmgiCisjaW5jbHVkZSA8dW5pY29kZS91dmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0
Zi9BdG9taWNzLmg+CiAjaW5jbHVkZSA8d3RmL0NQVVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvRGF0
YUxvZy5oPgpAQCAtMjk3Nyw2ICsyOTc4LDEzIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uU2V0VXNlclByZWZlcnJlZExhbmd1YWdlcyhKU0dsb2JhbE9iCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25JQ1VWZXJzaW9uKEpTR2xvYmFsT2Jq
ZWN0KiwgQ2FsbEZyYW1lKikKK3sKKyAgICBVVmVyc2lvbkluZm8gdmVyc2lvbkluZm87CisgICAg
dV9nZXRWZXJzaW9uKHZlcnNpb25JbmZvKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKHZlcnNpb25JbmZvWzBdKSk7Cit9CisKIHZvaWQgSlNEb2xsYXJWTTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CkBA
IC0zMTE0LDYgKzMxMjIsNyBAQCB2b2lkIEpTRG9sbGFyVk06OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKICAgICBhZGRGdW5jdGlvbih2bSwgInJlamVjdFByb21pc2VBc0hhbmRsZWQiLCBmdW5jdGlv
blJlamVjdFByb21pc2VBc0hhbmRsZWQsIDEpOwogCiAgICAgYWRkRnVuY3Rpb24odm0sICJzZXRV
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzIiwgZnVuY3Rpb25TZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
LCAxKTsKKyAgICBhZGRGdW5jdGlvbih2bSwgImljdVZlcnNpb24iLCBmdW5jdGlvbklDVVZlcnNp
b24sIDApOwogCiAgICAgbV9vYmplY3REb2luZ1NpZGVFZmZlY3RQdXRXaXRob3V0Q29ycmVjdFNs
b3RTdGF0dXNTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBPYmplY3REb2luZ1NpZGVFZmZlY3RQdXRX
aXRob3V0Q29ycmVjdFNsb3RTdGF0dXM6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0
LCBqc051bGwoKSkpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDY4MDM2ODIwZTZhYmZmYTM3OWQ5NjNkNDk5ZTVmOGM1NTFlNDkwMjAuLmM0
YzExZjI4MGZjOWVmYTNjZmRmNTkxNGYwMzQ5NjgzYTE0YTU5OGEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0w
NC0xOSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAg
W0VDTUEtNDAyXSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBtaXNzaW5nIGluIFdlYktpdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NzcwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1q
c2Mtc3RyZXNzLXRlc3RzOgorICAgICAgICBBZGQgcnVuSW50bFJlbGF0aXZlVGltZUZvcm1hdEVu
YWJsZWQuCisKIDIwMjAtMDQtMTkgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNv
bT4KIAogICAgICAgICBbQ01ha2VdIENvbnNvbGlkYXRlIFRlc3ROZXRzY2FwZVBsdWdpbiBidWls
ZApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cyBiL1Rvb2xz
L1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMKaW5kZXggYjA1Nzk5M2M5N2YxMjgwOTYwY2Q4
NDM0ZmYwNmQwYTQyOTAxNDQ4MC4uMjIxYTBiYWUxMDNiYjc1MmM3NWZhZmUzMTQwYWNjZjU5MzMz
NmFjMyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cworKysg
Yi9Ub29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCkBAIC03MTAsNiArNzEwLDEwIEBA
IGRlZiBydW5CaWdJbnRFbmFibGVkQmFzZWxpbmUoKm9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9u
cykKICAgICBydW4oImJpZy1pbnQtZW5hYmxlZC1iYXNlbGluZSIsICItLXVzZUJpZ0ludD10cnVl
IiwgIi0tdXNlREZHSklUPTAiLCAqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQogZW5kCiAK
K2RlZiBydW5JbnRsUmVsYXRpdmVUaW1lRm9ybWF0RW5hYmxlZCgqb3B0aW9uYWxUZXN0U3BlY2lm
aWNPcHRpb25zKQorICAgIHJ1bigiaW50bC1yZWxhdGl2ZXRpbWVmb3JtYXQtZW5hYmxlZCIsICIt
LXVzZUludGxSZWxhdGl2ZVRpbWVGb3JtYXQ9dHJ1ZSIgLCAqKEZUTF9PUFRJT05TICsgb3B0aW9u
YWxUZXN0U3BlY2lmaWNPcHRpb25zKSkKK2VuZAorCiBkZWYgcnVuRlRMTm9DSklUKCpvcHRpb25h
bFRlc3RTcGVjaWZpY09wdGlvbnMpCiAgICAgcnVuKCJtaXNjLWZ0bC1uby1jaml0IiwgKihGVExf
T1BUSU9OUyArIE5PX0NKSVRfT1BUSU9OUyArIG9wdGlvbmFsVGVzdFNwZWNpZmljT3B0aW9ucykp
CiBlbmQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNjNjZWI5MzBjMzQ1NDUyZjc2NWM0YzRkNmUxMzAxYzMyOGQ5ZWU2MS4uMTI2NDI4M2Zi
ZDNkZGUyMWJmZDQ2NmEwMzZhMTIxMGM4YjZiY2E4ZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMC0wNC0x
OSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgW0VD
TUEtNDAyXSBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCBtaXNzaW5nIGluIFdlYktpdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NzcwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBzdHJlc3MvaW50bC1yZWxh
dGl2ZXRpbWVmb3JtYXQuanM6IEFkZGVkLgorCisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFt
bDoKKyAgICAgICAgRW5hYmxlIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0IGZlYXR1cmUgd2l0aCBm
bGFnLgorCisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDoKKyAgICAgICAgTWFy
ayBrbm93biBmYWlsdXJlcy4KKyAgICAgICAgVGVzdCBmb3IgbG9jYWxlIHZhbGlkYXRpb24gaXMg
bm90IHNwZWNpZmljIHRvIFJlbGF0aXZlVGltZUZvcm1hdCBhbmQgc2hvdWxkIGJlIGludmVzdGln
YXRlZCBzZXBhcmF0ZWx5LgorICAgICAgICBUZXN0cyBmb3IgUG9saXNoIGFwcGVhciB0byBiZSB3
cm9uZyBhbmQgc2hvdWxkIGJlIGNvcnJlY3RlZCBpbiB0ZXN0MjYyLgorCiAyMDIwLTA0LTE4ICBL
ZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIG1hcmsgdGVzdCBwYXNzaW5nLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1y
ZWxhdGl2ZXRpbWVmb3JtYXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLXJlbGF0aXZldGltZWZv
cm1hdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZGVhZjQxMTgyYjUzODI4ODE3NGQ1ZDdjMjQ4M2ZkMzAxNDll
M2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1yZWxhdGl2ZXRpbWVm
b3JtYXQuanMKQEAgLTAsMCArMSwyNzMgQEAKKy8vQCBydW5JbnRsUmVsYXRpdmVUaW1lRm9ybWF0
RW5hYmxlZAorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQg
JHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKworY29uc3QgaWN1VmVyc2lvbiA9
ICR2bS5pY3VWZXJzaW9uKCk7CitmdW5jdGlvbiBzaG91bGRCZUZvcklDVVZlcnNpb24obWluaW11
bVZlcnNpb24sIGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoaWN1VmVyc2lvbiA8IG1pbmlt
dW1WZXJzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290
ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGROb3RUaHJvdyhmdW5jKSB7CisgICAg
ZnVuYygpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUpIHsKKyAg
ICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9yIGluc3RhbmNl
b2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9y
VHlwZS5uYW1lfSFgKTsKK30KKworc2hvdWxkQmUoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQgaW5z
dGFuY2VvZiBGdW5jdGlvbiwgdHJ1ZSk7CitzaG91bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1h
dC5sZW5ndGgsIDApOworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdCwgJ3Byb3RvdHlwZScpLndyaXRhYmxlLCBmYWxzZSk7Citz
aG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0LCAncHJvdG90eXBlJykuZW51bWVyYWJsZSwgZmFsc2UpOworc2hvdWxkQmUoT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCwgJ3Byb3Rv
dHlwZScpLmNvbmZpZ3VyYWJsZSwgZmFsc2UpOworCitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJl
bGF0aXZlVGltZUZvcm1hdCgpLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5S
ZWxhdGl2ZVRpbWVGb3JtYXQuY2FsbCh7fSksIFR5cGVFcnJvcik7CisKK3Nob3VsZFRocm93KCgp
ID0+IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnJCcpLCBSYW5nZUVycm9yKTsKK3Nob3Vs
ZFRocm93KCgpID0+IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4nLCBudWxsKSwgVHlw
ZUVycm9yKTsKKworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCkgaW5zdGFu
Y2VvZiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCwgdHJ1ZSk7CisKK3sKKyAgICBjbGFzcyBEZXJp
dmVkUmVsYXRpdmVUaW1lRm9ybWF0IGV4dGVuZHMgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQge30K
KworICAgIGNvbnN0IGRydGYgPSBuZXcgRGVyaXZlZFJlbGF0aXZlVGltZUZvcm1hdCgpOworICAg
IHNob3VsZEJlKGRydGYgaW5zdGFuY2VvZiBEZXJpdmVkUmVsYXRpdmVUaW1lRm9ybWF0LCB0cnVl
KTsKKyAgICBzaG91bGRCZShkcnRmIGluc3RhbmNlb2YgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQs
IHRydWUpOworICAgIHNob3VsZEJlKGRydGYuZm9ybWF0LCBJbnRsLlJlbGF0aXZlVGltZUZvcm1h
dC5wcm90b3R5cGUuZm9ybWF0KTsKKyAgICBzaG91bGRCZShkcnRmLmZvcm1hdFRvUGFydHMsIElu
dGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzKTsKKyAgICBzaG91
bGRCZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoZHJ0ZiksIERlcml2ZWRSZWxhdGl2ZVRpbWVGb3Jt
YXQucHJvdG90eXBlKTsKKyAgICBzaG91bGRCZShPYmplY3QuZ2V0UHJvdG90eXBlT2YoRGVyaXZl
ZFJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUpLCBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5w
cm90b3R5cGUpOworfQorCitzaG91bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0
ZWRMb2NhbGVzT2YubGVuZ3RoLCAxKTsKK3Nob3VsZEJlKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0
LnN1cHBvcnRlZExvY2FsZXNPZigpIGluc3RhbmNlb2YgQXJyYXksIHRydWUpOworc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09m
LmNhbGwobnVsbCwgJ2VuJykpLCAnWyJlbiJdJyk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YuY2FsbCh7fSwgJ2VuJykp
LCAnWyJlbiJdJyk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0aXZlVGltZUZv
cm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YuY2FsbCgxLCAnZW4nKSksICdbImVuIl0nKTsKK3Nob3Vs
ZEJlKEpTT04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2Fs
ZXNPZig5KSksICdbXScpOworc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdlbicpKSwgJ1siZW4iXScpOworc2hvdWxkQmUo
SlNPTi5zdHJpbmdpZnkoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09m
KHsgbGVuZ3RoOiA0LCAxOiAnZW4nLCAwOiAnZXMnLCAzOiAnZGUnIH0pKSwgJ1siZXMiLCJlbiIs
ImRlIl0nKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0
LnN1cHBvcnRlZExvY2FsZXNPZihbJ2VuJywgJ3B0JywgJ2VuJywgJ2VzJ10pKSwgJ1siZW4iLCJw
dCIsImVzIl0nKTsKK3Nob3VsZEJlKEpTT04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9y
bWF0LnN1cHBvcnRlZExvY2FsZXNPZignRW4tbGFUbi11cy12YXJpYW50Mi12YXJpYW50MS0xYWJj
LVUta28tdFJ1ZS1BLWFhLWFhYS14LVJFU0VSVkVEJykpLCAnWyJlbi1MYXRuLVVTLXZhcmlhbnQy
LXZhcmlhbnQxLTFhYmMtYS1hYS1hYWEtdS1rby14LXJlc2VydmVkIl0nKTsKK3Nob3VsZEJlKEpT
T04uc3RyaW5naWZ5KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZign
bm8tYm9rJykpLCAnWyJuYiJdJyk7CitzaG91bGRCZShKU09OLnN0cmluZ2lmeShJbnRsLlJlbGF0
aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoJ3gtc29tZS10aGluZycpKSwgJ1tdJyk7
CisKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExv
Y2FsZXNPZihPYmplY3QuY3JlYXRlKG51bGwsIHsgbGVuZ3RoOiB7IGdldCgpIHsgdGhyb3cgbmV3
IEVycm9yKCk7IH0gfSB9KSksIEVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRp
dmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihPYmplY3QuY3JlYXRlKG51bGwsIHsgbGVu
Z3RoOiB7IHZhbHVlOiAxIH0sIDA6IHsgZ2V0KCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9IH0p
KSwgRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3Vw
cG9ydGVkTG9jYWxlc09mKFt7IHRvU3RyaW5nKCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9XSks
IEVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBv
cnRlZExvY2FsZXNPZihbNV0pLCBUeXBlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5S
ZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCcnKSwgUmFuZ2VFcnJvcik7Citz
aG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVz
T2YoJ2EnKSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoJ2FiY2RlZmdoaWonKSwgUmFuZ2VFcnJvcik7Citz
aG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVz
T2YoJyMkJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRp
bWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdlbi1ALWFiYycpLCBSYW5nZUVycm9yKTsKK3No
b3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNP
ZignZW4tdScpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVU
aW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZignZW4tdS1rbi10cnVlLXUta28tdHJ1ZScpLCBS
YW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1
cHBvcnRlZExvY2FsZXNPZignZW4teCcpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+
IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZignZW4tKicpLCBSYW5n
ZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnN1cHBv
cnRlZExvY2FsZXNPZignZW4tJyksIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gSW50
bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdlbi0tVVMnKSwgUmFuZ2VF
cnJvcik7CisKK2NvbnN0IHZhbGlkTGFuZ3VhZ2VUYWdzID0gWworICAgICdkZScsIC8vIElTTyA2
MzkgbGFuZ3VhZ2UgY29kZQorICAgICdkZS1ERScsIC8vICsgSVNPIDMxNjYtMSBjb3VudHJ5IGNv
ZGUKKyAgICAnREUtZGUnLCAvLyB0YWdzIGFyZSBjYXNlLWluc2Vuc2l0aXZlCisgICAgJ2Ntbics
IC8vIElTTyA2MzkgbGFuZ3VhZ2UgY29kZQorICAgICdjbW4tSGFucycsIC8vICsgc2NyaXB0IGNv
ZGUKKyAgICAnQ01OLWhBTlMnLCAvLyB0YWdzIGFyZSBjYXNlLWluc2Vuc2l0aXZlCisgICAgJ2Nt
bi1oYW5zLWNuJywgLy8gKyBJU08gMzE2Ni0xIGNvdW50cnkgY29kZQorICAgICdlcy00MTknLCAv
LyArIFVOIE0uNDkgcmVnaW9uIGNvZGUKKyAgICAnZXMtNDE5LXUtbnUtbGF0bi1jdS1ib2InLCAv
LyArIFVuaWNvZGUgbG9jYWxlIGV4dGVuc2lvbiBzZXF1ZW5jZQorICAgICdpLWtsaW5nb24nLCAv
LyBncmFuZGZhdGhlcmVkIHRhZworICAgICdjbW4taGFucy1jbi10LWNhLXUtY2EteC10LXUnLCAv
LyBzaW5nbGV0b24gc3VidGFncyBjYW4gYWxzbyBiZSB1c2VkIGFzIHByaXZhdGUgdXNlIHN1YnRh
Z3MKKyAgICAnZW5vY2hpYW4tZW5vY2hpYW4nLCAvLyBsYW5ndWFnZSBhbmQgdmFyaWFudCBzdWJ0
YWdzIG1heSBiZSB0aGUgc2FtZQorICAgICdkZS1ncmVnb3J5LXUtY2EtZ3JlZ29yeScsIC8vIHZh
cmlhbnQgYW5kIGV4dGVuc2lvbiBzdWJ0YWdzIG1heSBiZSB0aGUgc2FtZQorICAgICdhYS1hLWZv
by14LWEtZm9vLWJhcicsIC8vIHZhcmlhbnQgc3VidGFncyBjYW4gYWxzbyBiZSB1c2VkIGFzIHBy
aXZhdGUgdXNlIHN1YnRhZ3MKKyAgICAneC1lbi1VUy0xMjM0NScsIC8vIGFueXRoaW5nIGdvZXMg
aW4gcHJpdmF0ZSB1c2UgdGFncworICAgICd4LTEyMzQ1LTEyMzQ1LWVuLVVTJywKKyAgICAneC1l
bi1VUy0xMjM0NS0xMjM0NScsCisgICAgJ3gtZW4tdS1mb28nLAorICAgICd4LWVuLXUtZm9vLXUt
YmFyJworXTsKK2ZvciAobGV0IHZhbGlkTGFuZ3VhZ2VUYWcgb2YgdmFsaWRMYW5ndWFnZVRhZ3Mp
CisgICAgc2hvdWxkTm90VGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9y
dGVkTG9jYWxlc09mKHZhbGlkTGFuZ3VhZ2VUYWcpKTsKKworc2hvdWxkQmUoT2JqZWN0LmdldFBy
b3RvdHlwZU9mKEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZSksIE9iamVjdC5wcm90
b3R5cGUpOworCitzaG91bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUuY29u
c3RydWN0b3IsIEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KTsKKworc2hvdWxkQmUoSW50bC5SZWxh
dGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlW1N5bWJvbC50b1N0cmluZ1RhZ10sICdJbnRsLlJlbGF0
aXZlVGltZUZvcm1hdCcpOworc2hvdWxkQmUoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxs
KEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZSksICdbb2JqZWN0IEludGwuUmVsYXRp
dmVUaW1lRm9ybWF0XScpOworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUsIFN5bWJvbC50b1N0cmluZ1RhZyku
d3JpdGFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLCBTeW1ib2wudG9TdHJpbmdUYWcp
LmVudW1lcmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLCBTeW1ib2wudG9TdHJpbmdU
YWcpLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJbnRsLlJl
bGF0aXZlVGltZUZvcm1hdCgnZW4nLCB7IGxvY2FsZU1hdGNoZXI6IHsgdG9TdHJpbmcoKSB7IHRo
cm93IG5ldyBFcnJvcigpOyB9IH0gfSksIEVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IG5ldyBJ
bnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4nLCB7IGxvY2FsZU1hdGNoZXI6J2JhZCcgfSksIFJh
bmdlRXJyb3IpOworc2hvdWxkTm90VGhyb3coKCkgPT4gbmV3IEludGwuUmVsYXRpdmVUaW1lRm9y
bWF0KCdlbicsIHsgbG9jYWxlTWF0Y2hlcjonbG9va3VwJyB9KSk7CitzaG91bGROb3RUaHJvdygo
KSA9PiBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBsb2NhbGVNYXRjaGVyOidi
ZXN0IGZpdCcgfSkpOworCitjb25zdCBkZWZhdWx0UlRGID0gbmV3IEludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0KCdlbicpOworCitzaG91bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5
cGUucmVzb2x2ZWRPcHRpb25zLmxlbmd0aCwgMCk7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJl
bGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zLmNhbGwoNSksIFR5cGVF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5
cGUucmVzb2x2ZWRPcHRpb25zLmNhbGwoe30pLCBUeXBlRXJyb3IpOworc2hvdWxkQmUoZGVmYXVs
dFJURi5yZXNvbHZlZE9wdGlvbnMoKSBpbnN0YW5jZW9mIE9iamVjdCwgdHJ1ZSk7CitzaG91bGRC
ZShkZWZhdWx0UlRGLnJlc29sdmVkT3B0aW9ucygpICE9PSBkZWZhdWx0UlRGLnJlc29sdmVkT3B0
aW9ucygpLCB0cnVlKTsKK3Nob3VsZEJlKGRlZmF1bHRSVEYucmVzb2x2ZWRPcHRpb25zKCkubG9j
YWxlLCAnZW4nKTsKK3Nob3VsZEJlKGRlZmF1bHRSVEYucmVzb2x2ZWRPcHRpb25zKCkuc3R5bGUs
ICdsb25nJyk7CitzaG91bGRCZShkZWZhdWx0UlRGLnJlc29sdmVkT3B0aW9ucygpLm51bWVyaWMs
ICdhbHdheXMnKTsKK3Nob3VsZEJlKGRlZmF1bHRSVEYucmVzb2x2ZWRPcHRpb25zKCkubnVtYmVy
aW5nU3lzdGVtLCAnbGF0bicpOworCitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3Jt
YXQoJ2VuLXUtbnUtaGFuaWRlYycpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZSwgJ2VuLXUtbnUt
aGFuaWRlYycpOworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbi11LW51
LWhhbmlkZWMnLCB7IG51bWJlcmluZ1N5c3RlbTogJ2d1anInIH0pLnJlc29sdmVkT3B0aW9ucygp
LmxvY2FsZSwgJ2VuJyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2Vu
JywgeyBudW1iZXJpbmdTeXN0ZW06ICdoYW5pZGVjJyB9KS5yZXNvbHZlZE9wdGlvbnMoKS5sb2Nh
bGUsICdlbicpOworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbi11LWNh
LWNoaW5lc2UnKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUsICdlbicpOworCitzaG91bGRUaHJv
dygoKSA9PiBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBzdHlsZTogeyB0b1N0
cmluZygpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSB9KSwgRXJyb3IpOworc2hvdWxkVGhyb3co
KCkgPT4gbmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgc3R5bGU6ICdiYWQnIH0p
LCBSYW5nZUVycm9yKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnZW4n
LCB7IHN0eWxlOiAnbG9uZycgfSkucmVzb2x2ZWRPcHRpb25zKCkuc3R5bGUsICdsb25nJyk7Citz
aG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBzdHlsZTogJ3Nob3J0
JyB9KS5yZXNvbHZlZE9wdGlvbnMoKS5zdHlsZSwgJ3Nob3J0Jyk7CitzaG91bGRCZShuZXcgSW50
bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBzdHlsZTogJ25hcnJvdycgfSkucmVzb2x2ZWRP
cHRpb25zKCkuc3R5bGUsICduYXJyb3cnKTsKKworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgbnVtZXJpYzogeyB0b1N0cmluZygpIHsgdGhyb3cg
bmV3IEVycm9yKCk7IH0gfSB9KSwgRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gbmV3IEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgbnVtZXJpYzogJ2JhZCcgfSksIFJhbmdlRXJyb3Ip
Oworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgbnVtZXJpYzog
J2Fsd2F5cycgfSkucmVzb2x2ZWRPcHRpb25zKCkubnVtZXJpYywgJ2Fsd2F5cycpOworc2hvdWxk
QmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgbnVtZXJpYzogJ2F1dG8nIH0p
LnJlc29sdmVkT3B0aW9ucygpLm51bWVyaWMsICdhdXRvJyk7CisKK2NvbnN0IG51bWJlcmluZ1N5
c3RlbXMgPSBbCisgICAgJ2FyYWInLCAnYXJhYmV4dCcsICdiYWxpJywgJ2JlbmcnLCAnZGV2YScs
ICdmdWxsd2lkZScsICdndWpyJywgJ2d1cnUnLAorICAgICdoYW5pZGVjJywgJ2tobXInLCAna25k
YScsICdsYW9vJywgJ2xhdG4nLCAnbGltYicsICdtbHltJywgJ21vbmcnLCAnbXltcicsCisgICAg
J29yeWEnLCAndGFtbGRlYycsICd0ZWx1JywgJ3RoYWknLCAndGlidCcKK10KK2ZvciAobGV0IG51
bWJlcmluZ1N5c3RlbSBvZiBudW1iZXJpbmdTeXN0ZW1zKSB7CisgICAgc2hvdWxkQmUobmV3IElu
dGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgbnVtYmVyaW5nU3lzdGVtIH0pLnJlc29sdmVk
T3B0aW9ucygpLm51bWJlcmluZ1N5c3RlbSwgbnVtYmVyaW5nU3lzdGVtKTsKKyAgICBzaG91bGRC
ZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoYGVuLXUtbnUtJHtudW1iZXJpbmdTeXN0ZW19
YCkucmVzb2x2ZWRPcHRpb25zKCkubnVtYmVyaW5nU3lzdGVtLCBudW1iZXJpbmdTeXN0ZW0pOwor
fQorCitzaG91bGRCZShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0Lmxl
bmd0aCwgMik7CitzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0LmNhbGwoe30sIDMsICdkYXlzJyksIFR5cGVFcnJvcik7CitzaG91bGRUaHJv
dygoKSA9PiBkZWZhdWx0UlRGLmZvcm1hdChTeW1ib2woKSwgJ2RheXMnKSwgVHlwZUVycm9yKTsK
K3Nob3VsZFRocm93KCgpID0+IGRlZmF1bHRSVEYuZm9ybWF0KDMsIFN5bWJvbCgpKSwgVHlwZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IGRlZmF1bHRSVEYuZm9ybWF0KEluZmluaXR5LCAnZGF5
cycpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IGRlZmF1bHRSVEYuZm9ybWF0KDMs
ICdjZW50dXJpZXMnKSwgUmFuZ2VFcnJvcik7CisKK2NvbnN0IHVuaXRzID0gWydzZWNvbmQnLCAn
bWludXRlJywgJ2hvdXInLCAnZGF5JywgJ3dlZWsnLCAnbW9udGgnLCAneWVhciddOworaWYgKGlj
dVZlcnNpb24gPj0gNjMpCisgICAgdW5pdHMucHVzaCgncXVhcnRlcicpOworCitmb3IgKGxldCB1
bml0IG9mIHVuaXRzKSB7CisgICAgc2hvdWxkQmUoZGVmYXVsdFJURi5mb3JtYXQoMTAsIHVuaXQp
LCBkZWZhdWx0UlRGLmZvcm1hdCgxMCwgYCR7dW5pdH1zYCkpOworCisgICAgc2hvdWxkQmUoZGVm
YXVsdFJURi5mb3JtYXQoMTAwMDAuNSwgdW5pdCksIGBpbiAxMCwwMDAuNSAke3VuaXR9c2ApOwor
ICAgIHNob3VsZEJlKGRlZmF1bHRSVEYuZm9ybWF0KDEwLCB1bml0KSwgYGluIDEwICR7dW5pdH1z
YCk7CisgICAgc2hvdWxkQmUoZGVmYXVsdFJURi5mb3JtYXQoMCwgdW5pdCksIGBpbiAwICR7dW5p
dH1zYCk7CisgICAgc2hvdWxkQmUoZGVmYXVsdFJURi5mb3JtYXQoLTEwLCB1bml0KSwgYDEwICR7
dW5pdH1zIGFnb2ApOworICAgIHNob3VsZEJlKGRlZmF1bHRSVEYuZm9ybWF0KC0xMDAwMC41LCB1
bml0KSwgYDEwLDAwMC41ICR7dW5pdH1zIGFnb2ApOworCisgICAgc2hvdWxkQmVGb3JJQ1VWZXJz
aW9uKDY0LCBkZWZhdWx0UlRGLmZvcm1hdCgxLCB1bml0KSwgYGluIDEgJHt1bml0fWApOworICAg
IHNob3VsZEJlRm9ySUNVVmVyc2lvbig2MywgZGVmYXVsdFJURi5mb3JtYXQoLTAsIHVuaXQpLCBg
MCAke3VuaXR9cyBhZ29gKTsKKyAgICBzaG91bGRCZUZvcklDVVZlcnNpb24oNjQsIGRlZmF1bHRS
VEYuZm9ybWF0KC0xLCB1bml0KSwgYDEgJHt1bml0fSBhZ29gKTsKK30KKworc2hvdWxkQmUobmV3
IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbicsIHsgc3R5bGU6ICdzaG9ydCcgfSkuZm9ybWF0
KDEwLCAnc2Vjb25kJyksICdpbiAxMCBzZWMuJyk7CitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2
ZVRpbWVGb3JtYXQoJ3J1JywgeyBzdHlsZTogJ3Nob3J0JyB9KS5mb3JtYXQoMTAsICdzZWNvbmQn
KSwgJ9GH0LXRgNC10LcgMTDCoNGB0LXQui4nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZl
VGltZUZvcm1hdCgnZW4nLCB7IHN0eWxlOiAnbmFycm93JyB9KS5mb3JtYXQoMTAsICdzZWNvbmQn
KSwgJ2luIDEwIHNlYy4nKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgn
cnUnLCB7IHN0eWxlOiAnbmFycm93JyB9KS5mb3JtYXQoMTAsICdzZWNvbmQnKSwgJysxMCDRgScp
OworCitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBudW1lcmlj
OiAnYXV0bycgfSkuZm9ybWF0KDAsICdzZWNvbmQnKSwgJ25vdycpOworc2hvdWxkQmUobmV3IElu
dGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdqYScsIHsgbnVtZXJpYzogJ2F1dG8nIH0pLmZvcm1hdCgw
LCAnc2Vjb25kJyksICfku4onKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1h
dCgnZW4nLCB7IG51bWVyaWM6ICdhdXRvJyB9KS5mb3JtYXQoMCwgJ2RheScpLCAndG9kYXknKTsK
K3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgnamEnLCB7IG51bWVyaWM6ICdh
dXRvJyB9KS5mb3JtYXQoMCwgJ2RheScpLCAn5LuK5pelJyk7CitzaG91bGRCZShuZXcgSW50bC5S
ZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBudW1lcmljOiAnYXV0bycgfSkuZm9ybWF0KDAsICd5
ZWFyJyksICd0aGlzIHllYXInKTsKK3Nob3VsZEJlKG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1h
dCgnamEnLCB7IG51bWVyaWM6ICdhdXRvJyB9KS5mb3JtYXQoMCwgJ3llYXInKSwgJ+S7iuW5tCcp
OworCitzaG91bGRCZShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2VuJywgeyBudW1iZXJp
bmdTeXN0ZW06ICd0aGFpJyB9KS5mb3JtYXQoLTEwLCAnaG91cicpLCAn4LmR4LmQIGhvdXJzIGFn
bycpOworc2hvdWxkQmUobmV3IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdlbi11LW51LXRoYWkn
KS5mb3JtYXQoLTEwLCAnaG91cicpLCAn4LmR4LmQIGhvdXJzIGFnbycpOworc2hvdWxkQmUobmV3
IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0KCdrbycsIHsgbnVtYmVyaW5nU3lzdGVtOiAnaGFuaWRl
YycgfSkuZm9ybWF0KC0xMCwgJ2hvdXInKSwgJ+S4gOOAh+yLnOqwhCDsoIQnKTsKK3Nob3VsZEJl
KG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdCgna28tdS1udS1oYW5pZGVjJykuZm9ybWF0KC0x
MCwgJ2hvdXInKSwgJ+S4gOOAh+yLnOqwhCDsoIQnKTsKKworc2hvdWxkQmUoSW50bC5SZWxhdGl2
ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMubGVuZ3RoLCAyKTsKK3Nob3VsZFRo
cm93KCgpID0+IEludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRz
LmNhbGwoe30sIDMsICdkYXlzJyksIFR5cGVFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiBkZWZh
dWx0UlRGLmZvcm1hdFRvUGFydHMoU3ltYm9sKCksICdkYXlzJyksIFR5cGVFcnJvcik7CitzaG91
bGRUaHJvdygoKSA9PiBkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoMywgU3ltYm9sKCkpLCBUeXBl
RXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4gZGVmYXVsdFJURi5mb3JtYXRUb1BhcnRzKEluZmlu
aXR5LCAnZGF5cycpLCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IGRlZmF1bHRSVEYu
Zm9ybWF0VG9QYXJ0cygzLCAnY2VudHVyaWVzJyksIFJhbmdlRXJyb3IpOworCitmb3IgKGxldCB1
bml0IG9mIHVuaXRzKSB7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkoZGVmYXVsdFJURi5m
b3JtYXRUb1BhcnRzKDEwLCB1bml0KSksIEpTT04uc3RyaW5naWZ5KGRlZmF1bHRSVEYuZm9ybWF0
VG9QYXJ0cygxMCwgYCR7dW5pdH1zYCkpKTsKKworICAgIGNvbnN0IGNvbmNhdGVuYXRlVmFsdWVz
ID0gKHBhcnRzKSA9PiBwYXJ0cy5tYXAocGFydCA9PiBwYXJ0LnZhbHVlKS5qb2luKCcnKTsKKwor
ICAgIHNob3VsZEJlKGNvbmNhdGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygx
MDAwMC41LCB1bml0KSksIGBpbiAxMCwwMDAuNSAke3VuaXR9c2ApOworICAgIHNob3VsZEJlKGNv
bmNhdGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygxMCwgdW5pdCkpLCBgaW4g
MTAgJHt1bml0fXNgKTsKKyAgICBzaG91bGRCZShjb25jYXRlbmF0ZVZhbHVlcyhkZWZhdWx0UlRG
LmZvcm1hdFRvUGFydHMoMCwgdW5pdCkpLCBgaW4gMCAke3VuaXR9c2ApOworICAgIHNob3VsZEJl
KGNvbmNhdGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygtMTAsIHVuaXQpKSwg
YDEwICR7dW5pdH1zIGFnb2ApOworICAgIHNob3VsZEJlKGNvbmNhdGVuYXRlVmFsdWVzKGRlZmF1
bHRSVEYuZm9ybWF0VG9QYXJ0cygtMTAwMDAuNSwgdW5pdCkpLCBgMTAsMDAwLjUgJHt1bml0fXMg
YWdvYCk7CisKKyAgICBzaG91bGRCZUZvcklDVVZlcnNpb24oNjQsIGNvbmNhdGVuYXRlVmFsdWVz
KGRlZmF1bHRSVEYuZm9ybWF0VG9QYXJ0cygxLCB1bml0KSksIGBpbiAxICR7dW5pdH1gKTsKKyAg
ICBzaG91bGRCZUZvcklDVVZlcnNpb24oNjMsIGNvbmNhdGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYu
Zm9ybWF0VG9QYXJ0cygtMCwgdW5pdCkpLCBgMCAke3VuaXR9cyBhZ29gKTsKKyAgICBzaG91bGRC
ZUZvcklDVVZlcnNpb24oNjQsIGNvbmNhdGVuYXRlVmFsdWVzKGRlZmF1bHRSVEYuZm9ybWF0VG9Q
YXJ0cygtMSwgdW5pdCkpLCBgMSAke3VuaXR9IGFnb2ApOworfQorCitzaG91bGRCZSgKKyAgICBK
U09OLnN0cmluZ2lmeShkZWZhdWx0UlRGLmZvcm1hdFRvUGFydHMoMTAwMDAuNSwgJ2RheScpKSwK
KyAgICBKU09OLnN0cmluZ2lmeShbCisgICAgICAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTog
J2luICcgfSwKKyAgICAgICAgeyB0eXBlOiAnaW50ZWdlcicsIHZhbHVlOiAnMTAnLCB1bml0OiAn
ZGF5JyB9LAorICAgICAgICB7IHR5cGU6ICdncm91cCcsIHZhbHVlOiAnLCcsIHVuaXQ6ICdkYXkn
IH0sCisgICAgICAgIHsgdHlwZTogJ2ludGVnZXInLCB2YWx1ZTogJzAwMCcsIHVuaXQ6ICdkYXkn
IH0sCisgICAgICAgIHsgdHlwZTogJ2RlY2ltYWwnLCB2YWx1ZTogJy4nLCB1bml0OiAnZGF5JyB9
LAorICAgICAgICB7IHR5cGU6ICdmcmFjdGlvbicsIHZhbHVlOiAnNScsIHVuaXQ6ICdkYXknIH0s
CisgICAgICAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJyBkYXlzJyB9CisgICAgXSkKKyk7
CisKK3Nob3VsZEJlKAorICAgIEpTT04uc3RyaW5naWZ5KG5ldyBJbnRsLlJlbGF0aXZlVGltZUZv
cm1hdCgnc3cnKS5mb3JtYXRUb1BhcnRzKDEwLCAneWVhcicpKSwKKyAgICBKU09OLnN0cmluZ2lm
eShbCisgICAgICAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJ2JhYWRhIHlhIG1pYWthICcg
fSwKKyAgICAgICAgeyB0eXBlOiAnaW50ZWdlcicsIHZhbHVlOiAnMTAnLCB1bml0OiAneWVhcicg
fSwKKyAgICBdKQorKTsKKworc2hvdWxkQmUoCisgICAgSlNPTi5zdHJpbmdpZnkobmV3IEludGwu
UmVsYXRpdmVUaW1lRm9ybWF0KCdydScsIHsgc3R5bGU6ICduYXJyb3cnIH0pLmZvcm1hdFRvUGFy
dHMoMTAsICdzZWNvbmQnKSksCisgICAgSlNPTi5zdHJpbmdpZnkoWworICAgICAgICB7IHR5cGU6
ICdsaXRlcmFsJywgdmFsdWU6ICcrJyB9LAorICAgICAgICB7IHR5cGU6ICdpbnRlZ2VyJywgdmFs
dWU6ICcxMCcsIHVuaXQ6ICdzZWNvbmQnIH0sCisgICAgICAgIHsgdHlwZTogJ2xpdGVyYWwnLCB2
YWx1ZTogJyDRgScgfQorICAgIF0pCispOworCitzaG91bGRCZSgKKyAgICBKU09OLnN0cmluZ2lm
eShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2phJywgeyBudW1lcmljOiAnYXV0bycgfSku
Zm9ybWF0VG9QYXJ0cygwLCAnd2VlaycpKSwKKyAgICBKU09OLnN0cmluZ2lmeShbCisgICAgICAg
IHsgdHlwZTogJ2xpdGVyYWwnLCB2YWx1ZTogJ+S7iumAsScgfQorICAgIF0pCispOworCitzaG91
bGRCZSgKKyAgICBKU09OLnN0cmluZ2lmeShuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQoJ2tv
JywgeyBudW1iZXJpbmdTeXN0ZW06ICdoYW5pZGVjJyB9KS5mb3JtYXRUb1BhcnRzKC0xMCwgJ2hv
dXInKSksCisgICAgSlNPTi5zdHJpbmdpZnkoWworICAgICAgICB7IHR5cGU6ICdpbnRlZ2VyJywg
dmFsdWU6ICfkuIDjgIcnLCB1bml0OiAnaG91cicgfSwKKyAgICAgICAgeyB0eXBlOiAnbGl0ZXJh
bCcsIHZhbHVlOiAn7Iuc6rCEIOyghCcgfQorICAgIF0pCispOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4
IGEwMzY2Y2VmYjcyYzU5YTc0MzZhOWMyZDU0OGNmOGZlYzU1NGQ5N2QuLjhjNTUzMjQ2ODU1Y2Y0
ZTVhOThiNTY0ZWQ5ZDIxMWY3MjFiNDYxYTcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9j
b25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTIsNiArMiw3
IEBACiAtLS0KIGZsYWdzOgogICBCaWdJbnQ6IHVzZUJpZ0ludAorICBJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdDogdXNlSW50bFJlbGF0aXZlVGltZUZvcm1hdAogICBXZWFrUmVmOiB1c2VXZWFrUmVm
cwogICBjbGFzcy1maWVsZHMtcHVibGljOiB1c2VQdWJsaWNDbGFzc0ZpZWxkcwogICBsb2dpY2Fs
LWFzc2lnbm1lbnQtb3BlcmF0b3JzOiB1c2VMb2dpY2FsQXNzaWdubWVudE9wZXJhdG9ycwpAQCAt
MzAsNyArMzEsNiBAQCBza2lwOgogICAgIC0gSW50bC5MaXN0Rm9ybWF0CiAgICAgLSBJbnRsLkxv
Y2FsZQogICAgIC0gSW50bC5OdW1iZXJGb3JtYXQtdW5pZmllZAotICAgIC0gSW50bC5SZWxhdGl2
ZVRpbWVGb3JtYXQKICAgICAtIEludGwuU2VnbWVudGVyCiAgIHBhdGhzOgogICAgIC0gdGVzdC9i
dWlsdC1pbnMvRGF0YVZpZXcvcHJvdG90eXBlL2dldEJpZ0ludDY0CkBAIC0xNTMsMyArMTUzLDcg
QEAgc2tpcDoKICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDk3ODMKICAgICAtIHRlc3QvaW50bDQwMi9EYXRlVGltZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0
L3JlbGF0ZWQteWVhci16aC5qcwogICAgIC0gdGVzdC9pbnRsNDAyL0RhdGVUaW1lRm9ybWF0L3By
b3RvdHlwZS9mb3JtYXRUb1BhcnRzL3JlbGF0ZWQteWVhci16aC5qcworCisgICAgIyByZXF1aXJl
cyBJQ1UgNjUgKGh0dHBzOi8vdW5pY29kZS1vcmcuYXRsYXNzaWFuLm5ldC9icm93c2UvSUNVLTIw
NjU0KQorICAgIC0gdGVzdC9pbnRsNDAyL1JlbGF0aXZlVGltZUZvcm1hdC9wcm90b3R5cGUvZm9y
bWF0L2VuLXVzLW51bWVyaWMtYXV0by5qcworICAgIC0gdGVzdC9pbnRsNDAyL1JlbGF0aXZlVGlt
ZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0VG9QYXJ0cy9lbi11cy1udW1lcmljLWF1dG8uanMKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbCBiL0pTVGVzdHMvdGVz
dDI2Mi9leHBlY3RhdGlvbnMueWFtbAppbmRleCAyNWM2NmYwZTUwZWJkZTQ2YmEyOTcxZDk2MDVk
N2JkYmE4NjJjNDVkLi44OTg4ZTM3ZmQ0MGQyOTg0MTZmOTU5NTU4MzFlNmJjMTFmMWUyZjBmIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKKysrIGIvSlNUZXN0
cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCkBAIC0xOTM1LDEyICsxOTM1LDMzIEBAIHRlc3Qv
aW50bDQwMi9OdW1iZXJGb3JtYXQvcHJvdG8tZnJvbS1jdG9yLXJlYWxtLmpzOgogdGVzdC9pbnRs
NDAyL1BsdXJhbFJ1bGVzL3Byb3RvLWZyb20tY3Rvci1yZWFsbS5qczoKICAgZGVmYXVsdDogJ1Rl
c3QyNjJFcnJvcjogbmV3VGFyZ2V0LnByb3RvdHlwZSBpcyB1bmRlZmluZWQgRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrW29iamVjdCBPYmplY3RdwrssIMKrW29iamVjdCBPYmplY3RdwrspIHRvIGJlIHRy
dWUnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBuZXdUYXJnZXQucHJvdG90eXBlIGlz
IHVuZGVmaW5lZCBFeHBlY3RlZCBTYW1lVmFsdWUowqtbb2JqZWN0IE9iamVjdF3Cuywgwqtbb2Jq
ZWN0IE9iamVjdF3CuykgdG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3Jt
YXQvY29uc3RydWN0b3IvY29uc3RydWN0b3IvbG9jYWxlcy12YWxpZC5qczoKKyAgZGVmYXVsdDog
J1Rlc3QyNjJFcnJvcjogR3JhbmRmYXRoZXJlZCBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUg
dGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCisgIHN0cmljdCBtb2Rl
OiAnVGVzdDI2MkVycm9yOiBHcmFuZGZhdGhlcmVkIEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBi
ZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKK3Rlc3QvaW50bDQw
Mi9SZWxhdGl2ZVRpbWVGb3JtYXQvY29uc3RydWN0b3IvY29uc3RydWN0b3IvcHJvdG8tZnJvbS1j
dG9yLXJlYWxtLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBuZXdUYXJnZXQucHJvdG90
eXBlIGlzIHVuZGVmaW5lZCBFeHBlY3RlZCBTYW1lVmFsdWUowqtbb2JqZWN0IEludGwuUmVsYXRp
dmVUaW1lRm9ybWF0XcK7LCDCq1tvYmplY3QgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXRdwrspIHRv
IGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBuZXdUYXJnZXQucHJvdG90
eXBlIGlzIHVuZGVmaW5lZCBFeHBlY3RlZCBTYW1lVmFsdWUowqtbb2JqZWN0IEludGwuUmVsYXRp
dmVUaW1lRm9ybWF0XcK7LCDCq1tvYmplY3QgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXRdwrspIHRv
IGJlIHRydWUnCit0ZXN0L2ludGw0MDIvUmVsYXRpdmVUaW1lRm9ybWF0L3Byb3RvdHlwZS9mb3Jt
YXQvcGwtcGwtc3R5bGUtbG9uZy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0
ZWQgU2FtZVZhbHVlKMKremEgMTAwMCBzZWt1bmTCuywgwqt6YSAxwqAwMDAgc2VrdW5kwrspIHRv
IGJlIHRydWUnCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFs
dWUowqt6YSAxMDAwIHNla3VuZMK7LCDCq3phIDHCoDAwMCBzZWt1bmTCuykgdG8gYmUgdHJ1ZScK
K3Rlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC9wbC1wbC1z
dHlsZS1uYXJyb3cuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVW
YWx1ZSjCq3phIDEwMDAgc8K7LCDCq3phIDHCoDAwMCBzwrspIHRvIGJlIHRydWUnCisgIHN0cmlj
dCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt6YSAxMDAwIHPCuywg
wqt6YSAxwqAwMDAgc8K7KSB0byBiZSB0cnVlJwordGVzdC9pbnRsNDAyL1JlbGF0aXZlVGltZUZv
cm1hdC9wcm90b3R5cGUvZm9ybWF0L3BsLXBsLXN0eWxlLXNob3J0LmpzOgorICBkZWZhdWx0OiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt6YSAxMDAwIHNlay7Cuywgwqt6YSAx
wqAwMDAgc2VrLsK7KSB0byBiZSB0cnVlJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
RXhwZWN0ZWQgU2FtZVZhbHVlKMKremEgMTAwMCBzZWsuwrssIMKremEgMcKgMDAwIHNlay7Cuykg
dG8gYmUgdHJ1ZScKK3Rlc3QvaW50bDQwMi9SZWxhdGl2ZVRpbWVGb3JtYXQvcHJvdG90eXBlL2Zv
cm1hdFRvUGFydHMvcGwtcGwtc3R5bGUtbG9uZy5qczoKKyAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJv
cjogZm9ybWF0VG9QYXJ0cygxMDAwLCBzZWNvbmQpOiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrM8K7LCDCqzXCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6
IGZvcm1hdFRvUGFydHMoMTAwMCwgc2Vjb25kKTogbGVuZ3RoIEV4cGVjdGVkIFNhbWVWYWx1ZSjC
qzPCuywgwqs1wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvUmVsYXRpdmVUaW1lRm9ybWF0
L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3BsLXBsLXN0eWxlLW5hcnJvdy5qczoKKyAgZGVmYXVs
dDogJ1Rlc3QyNjJFcnJvcjogZm9ybWF0VG9QYXJ0cygxMDAwLCBzZWNvbmQpOiBsZW5ndGggRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrM8K7LCDCqzXCuykgdG8gYmUgdHJ1ZScKKyAgc3RyaWN0IG1vZGU6
ICdUZXN0MjYyRXJyb3I6IGZvcm1hdFRvUGFydHMoMTAwMCwgc2Vjb25kKTogbGVuZ3RoIEV4cGVj
dGVkIFNhbWVWYWx1ZSjCqzPCuywgwqs1wrspIHRvIGJlIHRydWUnCit0ZXN0L2ludGw0MDIvUmVs
YXRpdmVUaW1lRm9ybWF0L3Byb3RvdHlwZS9mb3JtYXRUb1BhcnRzL3BsLXBsLXN0eWxlLXNob3J0
LmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBmb3JtYXRUb1BhcnRzKDEwMDAsIHNlY29u
ZCk6IGxlbmd0aCBFeHBlY3RlZCBTYW1lVmFsdWUowqszwrssIMKrNcK7KSB0byBiZSB0cnVlJwor
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogZm9ybWF0VG9QYXJ0cygxMDAwLCBzZWNvbmQp
OiBsZW5ndGggRXhwZWN0ZWQgU2FtZVZhbHVlKMKrM8K7LCDCqzXCuykgdG8gYmUgdHJ1ZScKIHRl
c3QvaW50bDQwMi9sYW5ndWFnZS10YWdzLWludmFsaWQuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYy
RXJyb3I6IFRlc3QgZGF0YSAiZGUtZ3JlZ29yeS1ncmVnb3J5IiBpcyBhIGNhbm9uaWNhbGl6ZWQg
YW5kIHN0cnVjdHVyYWxseSB2YWxpZCBsYW5ndWFnZSB0YWcuJwogICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogVGVzdCBkYXRhICJkZS1ncmVnb3J5LWdyZWdvcnkiIGlzIGEgY2Fub25pY2Fs
aXplZCBhbmQgc3RydWN0dXJhbGx5IHZhbGlkIGxhbmd1YWdlIHRhZy4nCi10ZXN0L2ludGw0MDIv
c3VwcG9ydGVkTG9jYWxlc09mLXJldHVybmVkLWFycmF5LWVsZW1lbnRzLWFyZS1ub3QtZnJvemVu
LmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBQcm9wZXJ0eSAwIG9mIG9iamVjdCByZXR1
cm5lZCBieSBTdXBwb3J0ZWRMb2NhbGVzIGlzIG5vdCB3cml0YWJsZS4gRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrZmFsc2XCuywgwqt0cnVlwrspIHRvIGJlIHRydWUgKFRlc3Rpbmcgd2l0aCBDb2xsYXRv
ci4pJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogUHJvcGVydHkgMCBvZiBvYmplY3Qg
cmV0dXJuZWQgYnkgU3VwcG9ydGVkTG9jYWxlcyBpcyBub3Qgd3JpdGFibGUuIEV4cGVjdGVkIFNh
bWVWYWx1ZSjCq2ZhbHNlwrssIMKrdHJ1ZcK7KSB0byBiZSB0cnVlIChUZXN0aW5nIHdpdGggQ29s
bGF0b3IuKScKIHRlc3QvbGFuZ3VhZ2UvYXJndW1lbnRzLW9iamVjdC9tYXBwZWQvbm9uY29uZmln
dXJhYmxlLW5vbmVudW1lcmFibGUtbm9ud3JpdGFibGUtZGVzY3JpcHRvcnMtc2V0LWJ5LWFyZ3Vt
ZW50cy5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgb2JqWzBdIHRvIGhh
dmUgZW51bWVyYWJsZTpmYWxzZS4nCiB0ZXN0L2xhbmd1YWdlL2FyZ3VtZW50cy1vYmplY3QvbWFw
cGVkL25vbmNvbmZpZ3VyYWJsZS1ub25lbnVtZXJhYmxlLW5vbndyaXRhYmxlLWRlc2NyaXB0b3Jz
LXNldC1ieS1wYXJhbS5qczoK
</data>

          </attachment>
      

    </bug>

</bugzilla>